@magic-xpa/angular 4.1000.0 → 4.1000.410-0.428

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.
@@ -1,19 +1,86 @@
1
- import { Directive, HostListener } from '@angular/core';
1
+ import { Directive, ElementRef, HostListener, Input } from '@angular/core';
2
2
  import { MagicDirective } from '../magic.directive';
3
+ import { TaskMagicService } from "../../../services/task.magics.service";
4
+ import { getGuiEventObj } from "@magic-xpa/engine";
5
+ import { filter } from "rxjs/operators";
6
+ import { CommandType, HtmlProperties } from "@magic-xpa/gui";
3
7
  import * as i0 from "@angular/core";
4
8
  import * as i1 from "../magic.directive";
9
+ import * as i2 from "../../../services/task.magics.service";
5
10
  export class CheckboxMagicDirective {
6
- constructor(magicDirective) {
11
+ constructor(magicDirective, el, task) {
7
12
  this.magicDirective = magicDirective;
13
+ this.el = el;
14
+ this.task = task;
15
+ this.threeState = false;
16
+ this.subscribeRefreshDom = null;
17
+ this.isIndeterminate = false;
8
18
  }
9
19
  onChange($event) {
10
- this.magicDirective.task.onCheckChanged($event, this.magicDirective.id, +this.magicDirective.rowId);
20
+ if (this.threeState) {
21
+ this.handleThreeState();
22
+ }
23
+ else {
24
+ this.magicDirective.task.onCheckChanged($event, this.magicDirective.id, +this.magicDirective.rowId);
25
+ }
26
+ }
27
+ ngOnInit() {
28
+ if (this.threeState) {
29
+ let guiEvent = getGuiEventObj("setAsThreeState", this.magicDirective.id, +this.magicDirective.rowId);
30
+ this.task.insertEvent(guiEvent);
31
+ this.el.nativeElement.indeterminate = this.isIndeterminate = this.task.getProperty(this.magicDirective.id, HtmlProperties.CheckBoxIndeterminate, this.magicDirective.rowId);
32
+ this.regUpdatesUI();
33
+ }
34
+ }
35
+ regUpdatesUI() {
36
+ this.subscribeRefreshDom = this.task
37
+ .refreshDom.pipe(filter(c => this.magicDirective.IsSameElement(c)))
38
+ .subscribe(a => {
39
+ let command = a;
40
+ try {
41
+ this.handleCommand(command);
42
+ }
43
+ catch (ex) {
44
+ console.dir(ex);
45
+ }
46
+ });
47
+ }
48
+ handleCommand(command) {
49
+ if (command.CommandType == CommandType.SET_PROPERTY &&
50
+ command.Operation == HtmlProperties.CheckBoxIndeterminate) {
51
+ this.isIndeterminate = this.el.nativeElement.indeterminate = command.obj1;
52
+ }
53
+ }
54
+ handleThreeState() {
55
+ let value = '';
56
+ let prevCheckedValue = this.task.getValue(this.magicDirective.id, this.magicDirective.rowId);
57
+ const checkbox = this.el.nativeElement;
58
+ if (this.isIndeterminate) {
59
+ checkbox.checked = false;
60
+ checkbox.indeterminate = false;
61
+ value = 'unchecked';
62
+ }
63
+ else if (prevCheckedValue) {
64
+ checkbox.checked = false;
65
+ checkbox.indeterminate = true;
66
+ value = 'indeterminate';
67
+ }
68
+ else if (!prevCheckedValue) {
69
+ checkbox.checked = true;
70
+ checkbox.indeterminate = false;
71
+ value = 'checked';
72
+ }
73
+ this.magicDirective.task.onCheckChanged(value, this.magicDirective.id, +this.magicDirective.rowId);
74
+ }
75
+ ngOnDestroy() {
76
+ if (this.subscribeRefreshDom !== null)
77
+ this.subscribeRefreshDom.unsubscribe();
11
78
  }
12
79
  }
13
- CheckboxMagicDirective.ɵfac = function CheckboxMagicDirective_Factory(t) { return new (t || CheckboxMagicDirective)(i0.ɵɵdirectiveInject(i1.MagicDirective)); };
80
+ CheckboxMagicDirective.ɵfac = function CheckboxMagicDirective_Factory(t) { return new (t || CheckboxMagicDirective)(i0.ɵɵdirectiveInject(i1.MagicDirective), i0.ɵɵdirectiveInject(i0.ElementRef), i0.ɵɵdirectiveInject(i2.TaskMagicService)); };
14
81
  CheckboxMagicDirective.ɵdir = i0.ɵɵdefineDirective({ type: CheckboxMagicDirective, selectors: [["input", "type", "checkbox", "magic", "", 3, "noFormControl", ""]], hostBindings: function CheckboxMagicDirective_HostBindings(rf, ctx) { if (rf & 1) {
15
82
  i0.ɵɵlistener("change", function CheckboxMagicDirective_change_HostBindingHandler($event) { return ctx.onChange($event); });
16
- } } });
83
+ } }, inputs: { threeState: "threeState" } });
17
84
  (function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(CheckboxMagicDirective, [{
18
85
  type: Directive,
19
86
  args: [{
@@ -21,8 +88,10 @@ CheckboxMagicDirective.ɵdir = i0.ɵɵdefineDirective({ type: CheckboxMagicDirec
21
88
  input[type=checkbox][magic]:not([noFormControl])
22
89
  `,
23
90
  }]
24
- }], function () { return [{ type: i1.MagicDirective }]; }, { onChange: [{
91
+ }], function () { return [{ type: i1.MagicDirective }, { type: i0.ElementRef }, { type: i2.TaskMagicService }]; }, { threeState: [{
92
+ type: Input
93
+ }], onChange: [{
25
94
  type: HostListener,
26
95
  args: ['change', ['$event']]
27
96
  }] }); })();
28
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hlY2tib3gubWFnaWMuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYW5ndWxhci9zcmMvdWkvZGlyZWN0aXZlcy9tYWdpYy9jaGVja2JveC5tYWdpYy5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDeEQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLG9CQUFvQixDQUFDOzs7QUFZcEQsTUFBTSxPQUFPLHNCQUFzQjtJQUtqQyxZQUEwQixjQUE4QjtRQUE5QixtQkFBYyxHQUFkLGNBQWMsQ0FBZ0I7SUFFeEQsQ0FBQztJQU1ELFFBQVEsQ0FBQyxNQUFNO1FBQ2IsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsY0FBYyxDQUFDLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDdEcsQ0FBQzs7NEZBZlUsc0JBQXNCOzJEQUF0QixzQkFBc0I7MkdBQXRCLG9CQUFnQjs7dUZBQWhCLHNCQUFzQjtjQU5sQyxTQUFTO2VBQUM7Z0JBQ1QsUUFBUSxFQUNOOztDQUVIO2FBQ0M7aUVBY0EsUUFBUTtrQkFEUCxZQUFZO21CQUFDLFFBQVEsRUFBRSxDQUFDLFFBQVEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERpcmVjdGl2ZSwgSG9zdExpc3RlbmVyIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IE1hZ2ljRGlyZWN0aXZlIH0gZnJvbSAnLi4vbWFnaWMuZGlyZWN0aXZlJztcclxuXHJcblxyXG4vKipcclxuICogRGlyZWN0aXZlIGZvciBjaGVja2JveGVzLCB0byBoYW5kbGUgdGhlICdjaGFuZ2UnIGV2ZW50XHJcbiAqL1xyXG5ARGlyZWN0aXZlKHtcclxuICBzZWxlY3RvcjpcclxuICAgIGBcclxuICAgIGlucHV0W3R5cGU9Y2hlY2tib3hdW21hZ2ljXTpub3QoW25vRm9ybUNvbnRyb2xdKVxyXG5gLFxyXG4gfSlcclxuZXhwb3J0IGNsYXNzIENoZWNrYm94TWFnaWNEaXJlY3RpdmUge1xyXG5cclxuICAvKipcclxuICAgKiBAaWdub3JlXHJcbiAgICovXHJcbiAgY29uc3RydWN0b3IoICAgIHByb3RlY3RlZCBtYWdpY0RpcmVjdGl2ZTogTWFnaWNEaXJlY3RpdmUpIHtcclxuXHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBIYW5kbGVzIHRoZSBDaGVja2JveCAnY2hhbmdlJyBldmVudCAtIHBhc3MgaXQgdG8gdGhlIE1hZ2ljIGVuZ2luZVxyXG4gICAqL1xyXG4gIEBIb3N0TGlzdGVuZXIoJ2NoYW5nZScsIFsnJGV2ZW50J10pXHJcbiAgb25DaGFuZ2UoJGV2ZW50KSB7XHJcbiAgICB0aGlzLm1hZ2ljRGlyZWN0aXZlLnRhc2sub25DaGVja0NoYW5nZWQoJGV2ZW50LCB0aGlzLm1hZ2ljRGlyZWN0aXZlLmlkLCArdGhpcy5tYWdpY0RpcmVjdGl2ZS5yb3dJZCk7XHJcbiAgfVxyXG59XHJcblxyXG5cclxuIl19
97
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hlY2tib3gubWFnaWMuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYW5ndWxhci9zcmMvdWkvZGlyZWN0aXZlcy9tYWdpYy9jaGVja2JveC5tYWdpYy5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFNBQVMsRUFBRSxVQUFVLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUN6RSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDcEQsT0FBTyxFQUFDLGdCQUFnQixFQUFDLE1BQU0sdUNBQXVDLENBQUM7QUFDdkUsT0FBTyxFQUFDLGNBQWMsRUFBWSxNQUFNLG1CQUFtQixDQUFDO0FBQzVELE9BQU8sRUFBQyxNQUFNLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUN0QyxPQUFPLEVBQUMsV0FBVyxFQUFjLGNBQWMsRUFBQyxNQUFNLGdCQUFnQixDQUFDOzs7O0FBWXZFLE1BQU0sT0FBTyxzQkFBc0I7SUFRakMsWUFBMEIsY0FBOEIsRUFDaEMsRUFBYyxFQUNaLElBQXNCO1FBRnRCLG1CQUFjLEdBQWQsY0FBYyxDQUFnQjtRQUNoQyxPQUFFLEdBQUYsRUFBRSxDQUFZO1FBQ1osU0FBSSxHQUFKLElBQUksQ0FBa0I7UUFSdkMsZUFBVSxHQUFZLEtBQUssQ0FBQztRQUM3Qix3QkFBbUIsR0FBUSxJQUFJLENBQUM7UUFDaEMsb0JBQWUsR0FBWSxLQUFLLENBQUM7SUFRekMsQ0FBQztJQU1ELFFBQVEsQ0FBQyxNQUFNO1FBQ2IsSUFBRyxJQUFJLENBQUMsVUFBVSxFQUFFO1lBQ2xCLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO1NBQ3pCO2FBQ0k7WUFDSCxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxjQUFjLENBQUMsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxLQUFLLENBQUMsQ0FBQztTQUNyRztJQUNILENBQUM7SUFFRCxRQUFRO1FBRU4sSUFBRyxJQUFJLENBQUMsVUFBVSxFQUFDO1lBQ2pCLElBQUksUUFBUSxHQUFjLGNBQWMsQ0FBQyxpQkFBaUIsRUFBRSxJQUFJLENBQUMsY0FBYyxDQUFDLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDaEgsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsUUFBUSxDQUFDLENBQUM7WUFDaEMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxhQUFhLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQyxlQUFlLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxFQUFFLEVBQUUsY0FBYyxDQUFDLHFCQUFxQixFQUFFLElBQUksQ0FBQyxjQUFjLENBQUMsS0FBSyxDQUFDLENBQUM7WUFFNUssSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO1NBQ3JCO0lBQ0gsQ0FBQztJQUVPLFlBQVk7UUFDbEIsSUFBSSxDQUFDLG1CQUFtQixHQUFHLElBQUksQ0FBQyxJQUFJO2FBQ2pDLFVBQVUsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQzthQUNsRSxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUU7WUFDWCxJQUFJLE9BQU8sR0FBZSxDQUFDLENBQUM7WUFDNUIsSUFBSTtnQkFDRixJQUFJLENBQUMsYUFBYSxDQUFDLE9BQU8sQ0FBQyxDQUFDO2FBQzdCO1lBQUMsT0FBTyxFQUFFLEVBQUU7Z0JBQ1gsT0FBTyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQzthQUNqQjtRQUNILENBQUMsQ0FDRixDQUFDO0lBQ04sQ0FBQztJQUVELGFBQWEsQ0FBQyxPQUFtQjtRQUMvQixJQUFJLE9BQU8sQ0FBQyxXQUFXLElBQUksV0FBVyxDQUFDLFlBQVk7WUFDakQsT0FBTyxDQUFDLFNBQVMsSUFBSSxjQUFjLENBQUMscUJBQXFCLEVBQUU7WUFDM0QsSUFBSSxDQUFDLGVBQWUsR0FBRyxJQUFJLENBQUMsRUFBRSxDQUFDLGFBQWEsQ0FBQyxhQUFhLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQztTQUMzRTtJQUNILENBQUM7SUFFTyxnQkFBZ0I7UUFFdEIsSUFBSSxLQUFLLEdBQVksRUFBRSxDQUFDO1FBQ3hCLElBQUksZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxFQUFFLEVBQUUsSUFBSSxDQUFDLGNBQWMsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUU3RixNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsRUFBRSxDQUFDLGFBQWEsQ0FBQztRQUV2QyxJQUFJLElBQUksQ0FBQyxlQUFlLEVBQUU7WUFDeEIsUUFBUSxDQUFDLE9BQU8sR0FBRyxLQUFLLENBQUM7WUFDekIsUUFBUSxDQUFDLGFBQWEsR0FBRyxLQUFLLENBQUM7WUFDL0IsS0FBSyxHQUFHLFdBQVcsQ0FBQztTQUNyQjthQUFNLElBQUksZ0JBQWdCLEVBQUU7WUFDM0IsUUFBUSxDQUFDLE9BQU8sR0FBRyxLQUFLLENBQUM7WUFDekIsUUFBUSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUM7WUFDOUIsS0FBSyxHQUFHLGVBQWUsQ0FBQztTQUN6QjthQUFNLElBQUksQ0FBQyxnQkFBZ0IsRUFBRTtZQUM1QixRQUFRLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQztZQUN4QixRQUFRLENBQUMsYUFBYSxHQUFHLEtBQUssQ0FBQztZQUMvQixLQUFLLEdBQUcsU0FBUyxDQUFDO1NBQ25CO1FBR0QsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsY0FBYyxDQUFDLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsS0FBSyxDQUFDLENBQUM7SUFFckcsQ0FBQztJQUtELFdBQVc7UUFDVCxJQUFHLElBQUksQ0FBQyxtQkFBbUIsS0FBSyxJQUFJO1lBQ2xDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUMzQyxDQUFDOzs0RkEzRlUsc0JBQXNCOzJEQUF0QixzQkFBc0I7MkdBQXRCLG9CQUFnQjs7dUZBQWhCLHNCQUFzQjtjQU5sQyxTQUFTO2VBQUM7Z0JBQ1QsUUFBUSxFQUNOOztDQUVIO2FBQ0E7eUhBR1UsVUFBVTtrQkFBbEIsS0FBSztZQWdCTixRQUFRO2tCQURQLFlBQVk7bUJBQUMsUUFBUSxFQUFFLENBQUMsUUFBUSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtEaXJlY3RpdmUsIEVsZW1lbnRSZWYsIEhvc3RMaXN0ZW5lciwgSW5wdXR9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBNYWdpY0RpcmVjdGl2ZSB9IGZyb20gJy4uL21hZ2ljLmRpcmVjdGl2ZSc7XHJcbmltcG9ydCB7VGFza01hZ2ljU2VydmljZX0gZnJvbSBcIi4uLy4uLy4uL3NlcnZpY2VzL3Rhc2subWFnaWNzLnNlcnZpY2VcIjtcclxuaW1wb3J0IHtnZXRHdWlFdmVudE9iaiwgSUd1aUV2ZW50fSBmcm9tIFwiQG1hZ2ljLXhwYS9lbmdpbmVcIjtcclxuaW1wb3J0IHtmaWx0ZXJ9IGZyb20gXCJyeGpzL29wZXJhdG9yc1wiO1xyXG5pbXBvcnQge0NvbW1hbmRUeXBlLCBHdWlDb21tYW5kLCBIdG1sUHJvcGVydGllc30gZnJvbSBcIkBtYWdpYy14cGEvZ3VpXCI7XHJcblxyXG5cclxuLyoqXHJcbiAqIERpcmVjdGl2ZSBmb3IgY2hlY2tib3hlcywgdG8gaGFuZGxlIHRoZSAnY2hhbmdlJyBldmVudFxyXG4gKi9cclxuQERpcmVjdGl2ZSh7XHJcbiAgc2VsZWN0b3I6XHJcbiAgICBgXHJcbiAgICBpbnB1dFt0eXBlPWNoZWNrYm94XVttYWdpY106bm90KFtub0Zvcm1Db250cm9sXSlcclxuYCxcclxufSlcclxuZXhwb3J0IGNsYXNzIENoZWNrYm94TWFnaWNEaXJlY3RpdmUge1xyXG5cclxuICBASW5wdXQoKSB0aHJlZVN0YXRlOiBib29sZWFuID0gZmFsc2U7XHJcbiAgcHJpdmF0ZSBzdWJzY3JpYmVSZWZyZXNoRG9tOiBhbnkgPSBudWxsO1xyXG4gIHByaXZhdGUgaXNJbmRldGVybWluYXRlOiBib29sZWFuID0gZmFsc2U7XHJcbiAgLyoqXHJcbiAgICogQGlnbm9yZVxyXG4gICAqL1xyXG4gIGNvbnN0cnVjdG9yKCAgICBwcm90ZWN0ZWQgbWFnaWNEaXJlY3RpdmU6IE1hZ2ljRGlyZWN0aXZlLFxyXG4gICAgICAgICAgICAgICAgICBwcml2YXRlIGVsOiBFbGVtZW50UmVmLFxyXG4gICAgICAgICAgICAgICAgICBwcm90ZWN0ZWQgdGFzazogVGFza01hZ2ljU2VydmljZSwpIHtcclxuXHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBIYW5kbGVzIHRoZSBDaGVja2JveCAnY2hhbmdlJyBldmVudCAtIHBhc3MgaXQgdG8gdGhlIE1hZ2ljIGVuZ2luZVxyXG4gICAqL1xyXG4gIEBIb3N0TGlzdGVuZXIoJ2NoYW5nZScsIFsnJGV2ZW50J10pXHJcbiAgb25DaGFuZ2UoJGV2ZW50KSB7XHJcbiAgICBpZih0aGlzLnRocmVlU3RhdGUpIHtcclxuICAgICAgdGhpcy5oYW5kbGVUaHJlZVN0YXRlKCk7XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgdGhpcy5tYWdpY0RpcmVjdGl2ZS50YXNrLm9uQ2hlY2tDaGFuZ2VkKCRldmVudCwgdGhpcy5tYWdpY0RpcmVjdGl2ZS5pZCwgK3RoaXMubWFnaWNEaXJlY3RpdmUucm93SWQpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgbmdPbkluaXQoKSB7XHJcblxyXG4gICAgaWYodGhpcy50aHJlZVN0YXRlKXtcclxuICAgICAgbGV0IGd1aUV2ZW50OiBJR3VpRXZlbnQgPSBnZXRHdWlFdmVudE9iaihcInNldEFzVGhyZWVTdGF0ZVwiLCB0aGlzLm1hZ2ljRGlyZWN0aXZlLmlkLCArdGhpcy5tYWdpY0RpcmVjdGl2ZS5yb3dJZCk7XHJcbiAgICAgIHRoaXMudGFzay5pbnNlcnRFdmVudChndWlFdmVudCk7XHJcbiAgICAgIHRoaXMuZWwubmF0aXZlRWxlbWVudC5pbmRldGVybWluYXRlID0gdGhpcy5pc0luZGV0ZXJtaW5hdGUgPSB0aGlzLnRhc2suZ2V0UHJvcGVydHkodGhpcy5tYWdpY0RpcmVjdGl2ZS5pZCwgSHRtbFByb3BlcnRpZXMuQ2hlY2tCb3hJbmRldGVybWluYXRlLCB0aGlzLm1hZ2ljRGlyZWN0aXZlLnJvd0lkKTtcclxuXHJcbiAgICAgIHRoaXMucmVnVXBkYXRlc1VJKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHJlZ1VwZGF0ZXNVSSgpIHtcclxuICAgIHRoaXMuc3Vic2NyaWJlUmVmcmVzaERvbSA9IHRoaXMudGFza1xyXG4gICAgICAucmVmcmVzaERvbS5waXBlKGZpbHRlcihjID0+IHRoaXMubWFnaWNEaXJlY3RpdmUuSXNTYW1lRWxlbWVudChjKSkpXHJcbiAgICAgIC5zdWJzY3JpYmUoYSA9PiB7XHJcbiAgICAgICAgICBsZXQgY29tbWFuZDogR3VpQ29tbWFuZCA9IGE7XHJcbiAgICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICB0aGlzLmhhbmRsZUNvbW1hbmQoY29tbWFuZCk7XHJcbiAgICAgICAgICB9IGNhdGNoIChleCkge1xyXG4gICAgICAgICAgICBjb25zb2xlLmRpcihleCk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICApO1xyXG4gIH1cclxuXHJcbiAgaGFuZGxlQ29tbWFuZChjb21tYW5kOiBHdWlDb21tYW5kKXtcclxuICAgIGlmIChjb21tYW5kLkNvbW1hbmRUeXBlID09IENvbW1hbmRUeXBlLlNFVF9QUk9QRVJUWSAmJlxyXG4gICAgICBjb21tYW5kLk9wZXJhdGlvbiA9PSBIdG1sUHJvcGVydGllcy5DaGVja0JveEluZGV0ZXJtaW5hdGUpIHtcclxuICAgICAgdGhpcy5pc0luZGV0ZXJtaW5hdGUgPSB0aGlzLmVsLm5hdGl2ZUVsZW1lbnQuaW5kZXRlcm1pbmF0ZSA9IGNvbW1hbmQub2JqMTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgaGFuZGxlVGhyZWVTdGF0ZSgpIHtcclxuXHJcbiAgICBsZXQgdmFsdWUgOiBzdHJpbmcgPSAnJztcclxuICAgIGxldCBwcmV2Q2hlY2tlZFZhbHVlID0gdGhpcy50YXNrLmdldFZhbHVlKHRoaXMubWFnaWNEaXJlY3RpdmUuaWQsIHRoaXMubWFnaWNEaXJlY3RpdmUucm93SWQpO1xyXG5cclxuICAgIGNvbnN0IGNoZWNrYm94ID0gdGhpcy5lbC5uYXRpdmVFbGVtZW50O1xyXG5cclxuICAgIGlmICh0aGlzLmlzSW5kZXRlcm1pbmF0ZSkge1xyXG4gICAgICBjaGVja2JveC5jaGVja2VkID0gZmFsc2U7XHJcbiAgICAgIGNoZWNrYm94LmluZGV0ZXJtaW5hdGUgPSBmYWxzZTtcclxuICAgICAgdmFsdWUgPSAndW5jaGVja2VkJztcclxuICAgIH0gZWxzZSBpZiAocHJldkNoZWNrZWRWYWx1ZSkge1xyXG4gICAgICBjaGVja2JveC5jaGVja2VkID0gZmFsc2U7XHJcbiAgICAgIGNoZWNrYm94LmluZGV0ZXJtaW5hdGUgPSB0cnVlO1xyXG4gICAgICB2YWx1ZSA9ICdpbmRldGVybWluYXRlJztcclxuICAgIH0gZWxzZSBpZiAoIXByZXZDaGVja2VkVmFsdWUpIHtcclxuICAgICAgY2hlY2tib3guY2hlY2tlZCA9IHRydWU7XHJcbiAgICAgIGNoZWNrYm94LmluZGV0ZXJtaW5hdGUgPSBmYWxzZTtcclxuICAgICAgdmFsdWUgPSAnY2hlY2tlZCc7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gQHRzLWlnbm9yZVxyXG4gICAgdGhpcy5tYWdpY0RpcmVjdGl2ZS50YXNrLm9uQ2hlY2tDaGFuZ2VkKHZhbHVlLCB0aGlzLm1hZ2ljRGlyZWN0aXZlLmlkLCArdGhpcy5tYWdpY0RpcmVjdGl2ZS5yb3dJZCk7XHJcblxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQ2xlYW51cFxyXG4gICAqL1xyXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgaWYodGhpcy5zdWJzY3JpYmVSZWZyZXNoRG9tICE9PSBudWxsKVxyXG4gICAgICB0aGlzLnN1YnNjcmliZVJlZnJlc2hEb20udW5zdWJzY3JpYmUoKTtcclxuICB9XHJcblxyXG59XHJcblxyXG5cclxuIl19
@@ -1,18 +1,44 @@
1
1
  import { Directive, ElementRef, forwardRef, HostListener, Renderer2 } from "@angular/core";
2
2
  import { NG_VALUE_ACCESSOR } from "@angular/forms";
3
+ import { MagicDirective } from "../../../magic.directive";
4
+ import { TaskMagicService } from "../../../../../services/task.magics.service";
5
+ import { Environment, LastFocusedManager } from "@magic-xpa/engine";
3
6
  import * as i0 from "@angular/core";
7
+ import * as i1 from "../../../magic.directive";
8
+ import * as i2 from "../../../../../services/task.magics.service";
4
9
  export const DATE_VALUE_ACCESSOR = {
5
10
  provide: NG_VALUE_ACCESSOR,
6
11
  useExisting: forwardRef(() => DateValueAccessor),
7
12
  multi: true
8
13
  };
9
14
  export class DateValueAccessor {
10
- constructor(renderer, elementRef) {
15
+ onBlurEvent(event) {
16
+ const century = Environment.Instance.GetCentury(LastFocusedManager.Instance.getCurrTask().getCompIdx());
17
+ let control = this._task.getFormControl(this.magicDir.rowId, this.magicDir.id);
18
+ this.formatDateWithCentury(event.target.value, century, control);
19
+ }
20
+ constructor(renderer, elementRef, magicDir, _task) {
11
21
  this.renderer = renderer;
12
22
  this.elementRef = elementRef;
23
+ this.magicDir = magicDir;
24
+ this._task = _task;
13
25
  this.onChange = (_) => { };
14
26
  this.onTouched = () => { };
15
27
  }
28
+ formatDateWithCentury(userInput, century, control) {
29
+ const separator = userInput.includes('/') ? '/' : "-";
30
+ let centuryVal = parseInt(century.toString().slice(0, 2));
31
+ if (userInput.length == 0)
32
+ return;
33
+ const dateArray = userInput.split(separator);
34
+ const day = Number(dateArray[2]);
35
+ const month = Number(dateArray[1]);
36
+ const year = Number(dateArray[0]);
37
+ let updatedYear = year.toString().length === 2 ? (year < century % 100 ? centuryVal + 1 : centuryVal) + '' + year :
38
+ year.toString().length === 1 ? (year < century % 100 ? centuryVal + 1 : centuryVal) + '0' + year :
39
+ year;
40
+ control.setValue(new Date(`${updatedYear}${separator}${month}${separator}${day}`));
41
+ }
16
42
  writeValue(value) {
17
43
  if (!value) {
18
44
  this.renderer.setProperty(this.elementRef.nativeElement, "value", null);
@@ -32,9 +58,9 @@ export class DateValueAccessor {
32
58
  this.renderer.setProperty(this.elementRef.nativeElement, "disabled", isDisabled);
33
59
  }
34
60
  }
35
- DateValueAccessor.ɵfac = function DateValueAccessor_Factory(t) { return new (t || DateValueAccessor)(i0.ɵɵdirectiveInject(i0.Renderer2), i0.ɵɵdirectiveInject(i0.ElementRef)); };
61
+ DateValueAccessor.ɵfac = function DateValueAccessor_Factory(t) { return new (t || DateValueAccessor)(i0.ɵɵdirectiveInject(i0.Renderer2), i0.ɵɵdirectiveInject(i0.ElementRef), i0.ɵɵdirectiveInject(i1.MagicDirective), i0.ɵɵdirectiveInject(i2.TaskMagicService)); };
36
62
  DateValueAccessor.ɵdir = i0.ɵɵdefineDirective({ type: DateValueAccessor, selectors: [["", "dateInput", ""]], hostBindings: function DateValueAccessor_HostBindings(rf, ctx) { if (rf & 1) {
37
- i0.ɵɵlistener("input", function DateValueAccessor_input_HostBindingHandler($event) { return ctx.onChange($event.target.valueAsDate); })("blur", function DateValueAccessor_blur_HostBindingHandler() { return ctx.onTouched(); });
63
+ i0.ɵɵlistener("input", function DateValueAccessor_input_HostBindingHandler($event) { return ctx.onChange($event.target.valueAsDate); })("blur", function DateValueAccessor_blur_HostBindingHandler($event) { return ctx.onBlurEvent($event); });
38
64
  } }, features: [i0.ɵɵProvidersFeature([DATE_VALUE_ACCESSOR])] });
39
65
  (function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(DateValueAccessor, [{
40
66
  type: Directive,
@@ -42,11 +68,14 @@ DateValueAccessor.ɵdir = i0.ɵɵdefineDirective({ type: DateValueAccessor, sele
42
68
  selector: "[dateInput]",
43
69
  providers: [DATE_VALUE_ACCESSOR]
44
70
  }]
45
- }], function () { return [{ type: i0.Renderer2 }, { type: i0.ElementRef }]; }, { onChange: [{
71
+ }], function () { return [{ type: i0.Renderer2 }, { type: i0.ElementRef }, { type: i1.MagicDirective }, { type: i2.TaskMagicService }]; }, { onChange: [{
46
72
  type: HostListener,
47
73
  args: ["input", ["$event.target.valueAsDate"]]
48
74
  }], onTouched: [{
49
75
  type: HostListener,
50
76
  args: ["blur", []]
77
+ }], onBlurEvent: [{
78
+ type: HostListener,
79
+ args: ['blur', ['$event']]
51
80
  }] }); })();
52
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZS5jdmEuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYW5ndWxhci9zcmMvdWkvZGlyZWN0aXZlcy9tYWdpYy9mb3JtLWNvbnRyb2xzL2NvbnRyb2wtdmFsdWUtYWNjZXNzb3JzL2RhdGUuY3ZhLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUNULFVBQVUsRUFDVixVQUFVLEVBQ1YsWUFBWSxFQUNaLFNBQVMsRUFDVixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQXdCLGlCQUFpQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7O0FBRXpFLE1BQU0sQ0FBQyxNQUFNLG1CQUFtQixHQUFRO0lBQ3RDLE9BQU8sRUFBRSxpQkFBaUI7SUFDMUIsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxpQkFBaUIsQ0FBQztJQUNoRCxLQUFLLEVBQUUsSUFBSTtDQUNaLENBQUM7QUFjRixNQUFNLE9BQU8saUJBQWlCO0lBTTVCLFlBQW9CLFFBQW1CLEVBQVUsVUFBc0I7UUFBbkQsYUFBUSxHQUFSLFFBQVEsQ0FBVztRQUFVLGVBQVUsR0FBVixVQUFVLENBQVk7UUFKdkUsYUFBUSxHQUFHLENBQUMsQ0FBTSxFQUFFLEVBQUUsR0FBRSxDQUFDLENBQUM7UUFFMUIsY0FBUyxHQUFHLEdBQUcsRUFBRSxHQUFFLENBQUMsQ0FBQztJQUVxRCxDQUFDO0lBRzNFLFVBQVUsQ0FBQyxLQUFXO1FBQ3BCLElBQUksQ0FBQyxLQUFLLEVBQUU7WUFDVixJQUFJLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLGFBQWEsRUFBRSxPQUFPLEVBQUUsSUFBSSxDQUFDLENBQUM7WUFDeEUsT0FBTztTQUNSO1FBRUQsSUFBSSxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQ3ZCLElBQUksQ0FBQyxVQUFVLENBQUMsYUFBYSxFQUM3QixhQUFhLEVBQ2IsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsV0FBVyxFQUFFLEVBQUUsS0FBSyxDQUFDLFFBQVEsRUFBRSxFQUFFLEtBQUssQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDLENBQzNFLENBQUM7SUFDSixDQUFDO0lBR0QsZ0JBQWdCLENBQUMsRUFBb0I7UUFDbkMsSUFBSSxDQUFDLFFBQVEsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUNsQixFQUFFLENBQ0EsQ0FBQyxZQUFZLElBQUk7WUFDZixDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLGNBQWMsRUFBRSxFQUFFLENBQUMsQ0FBQyxXQUFXLEVBQUUsRUFBRSxDQUFDLENBQUMsVUFBVSxFQUFFLENBQUM7WUFDL0QsQ0FBQyxDQUFDLENBQUMsQ0FDTixDQUFDO0lBQ04sQ0FBQztJQUdELGlCQUFpQixDQUFDLEVBQWM7UUFDOUIsSUFBSSxDQUFDLFNBQVMsR0FBRyxFQUFFLENBQUM7SUFDdEIsQ0FBQztJQUdELGdCQUFnQixDQUFDLFVBQW1CO1FBQ2xDLElBQUksQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUN2QixJQUFJLENBQUMsVUFBVSxDQUFDLGFBQWEsRUFDN0IsVUFBVSxFQUNWLFVBQVUsQ0FDWCxDQUFDO0lBQ0osQ0FBQzs7a0ZBNUNVLGlCQUFpQjtzREFBakIsaUJBQWlCO29HQUFqQix1Q0FBbUMsMkVBQW5DLGVBQVc7MENBRlgsQ0FBQyxtQkFBbUIsQ0FBQzt1RkFFckIsaUJBQWlCO2NBSjdCLFNBQVM7ZUFBQztnQkFDVCxRQUFRLEVBQUUsYUFBYTtnQkFDdkIsU0FBUyxFQUFFLENBQUMsbUJBQW1CLENBQUM7YUFDakM7cUZBR0MsUUFBUTtrQkFEUCxZQUFZO21CQUFDLE9BQU8sRUFBRSxDQUFDLDJCQUEyQixDQUFDO1lBR3BELFNBQVM7a0JBRFIsWUFBWTttQkFBQyxNQUFNLEVBQUUsRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgRGlyZWN0aXZlLFxyXG4gIEVsZW1lbnRSZWYsXHJcbiAgZm9yd2FyZFJlZixcclxuICBIb3N0TGlzdGVuZXIsXHJcbiAgUmVuZGVyZXIyXHJcbn0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHsgQ29udHJvbFZhbHVlQWNjZXNzb3IsIE5HX1ZBTFVFX0FDQ0VTU09SIH0gZnJvbSBcIkBhbmd1bGFyL2Zvcm1zXCI7XHJcblxyXG5leHBvcnQgY29uc3QgREFURV9WQUxVRV9BQ0NFU1NPUjogYW55ID0ge1xyXG4gIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxyXG4gIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IERhdGVWYWx1ZUFjY2Vzc29yKSxcclxuICBtdWx0aTogdHJ1ZVxyXG59O1xyXG5cclxuLyoqXHJcbiAqIFRoZSBhY2Nlc3NvciBmb3Igd3JpdGluZyBhIHZhbHVlIGFuZCBsaXN0ZW5pbmcgdG8gY2hhbmdlcyBvbiBhIGRhdGUgaW5wdXQgZWxlbWVudFxyXG4gKlxyXG4gKiAgIyMjIEV4YW1wbGVcclxuICogIGA8aW5wdXQgdHlwZT1cImRhdGVcIiBuYW1lPVwiYmlydGhkYXlcIiBuZ01vZGVsIGRhdGVJbnB1dD5gXHJcbiAqICBPUlxyXG4gKiAgYDxpbnB1dCB0eXBlPVwiZGF0ZVwiIGZvcm1Db250cm9sTmFtZT1cImJpcnRoZGF5XCIgZGF0ZUlucHV0PmBcclxuICovXHJcbkBEaXJlY3RpdmUoe1xyXG4gIHNlbGVjdG9yOiBcIltkYXRlSW5wdXRdXCIsXHJcbiAgcHJvdmlkZXJzOiBbREFURV9WQUxVRV9BQ0NFU1NPUl1cclxufSlcclxuZXhwb3J0IGNsYXNzIERhdGVWYWx1ZUFjY2Vzc29yIGltcGxlbWVudHMgQ29udHJvbFZhbHVlQWNjZXNzb3Ige1xyXG4gIEBIb3N0TGlzdGVuZXIoXCJpbnB1dFwiLCBbXCIkZXZlbnQudGFyZ2V0LnZhbHVlQXNEYXRlXCJdKVxyXG4gIG9uQ2hhbmdlID0gKF86IGFueSkgPT4ge307XHJcbiAgQEhvc3RMaXN0ZW5lcihcImJsdXJcIiwgW10pXHJcbiAgb25Ub3VjaGVkID0gKCkgPT4ge307XHJcblxyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVuZGVyZXI6IFJlbmRlcmVyMiwgcHJpdmF0ZSBlbGVtZW50UmVmOiBFbGVtZW50UmVmKSB7fVxyXG5cclxuICAvKiogV3JpdGVzIGEgbmV3IHZhbHVlIHRvIHRoZSBlbGVtZW50IChtb2RlbCAtPiB2aWV3KSAqL1xyXG4gIHdyaXRlVmFsdWUodmFsdWU6IERhdGUpOiB2b2lkIHtcclxuICAgIGlmICghdmFsdWUpIHtcclxuICAgICAgdGhpcy5yZW5kZXJlci5zZXRQcm9wZXJ0eSh0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCwgXCJ2YWx1ZVwiLCBudWxsKTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMucmVuZGVyZXIuc2V0UHJvcGVydHkoXHJcbiAgICAgIHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LFxyXG4gICAgICBcInZhbHVlQXNEYXRlXCIsXHJcbiAgICAgIG5ldyBEYXRlKERhdGUuVVRDKHZhbHVlLmdldEZ1bGxZZWFyKCksIHZhbHVlLmdldE1vbnRoKCksIHZhbHVlLmdldERhdGUoKSkpXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgLyoqIFJlZ2lzdGVycyBhIGNhbGxiYWNrIGZ1bmN0aW9uLCBjYWxsZWQgd2hlbiB2YWx1ZSBjaGFuZ2VzICh2aWV3IC0+IG1vZGVsKSAqL1xyXG4gIHJlZ2lzdGVyT25DaGFuZ2UoZm46IChfOiBhbnkpID0+IHZvaWQpOiB2b2lkIHtcclxuICAgIHRoaXMub25DaGFuZ2UgPSB2ID0+XHJcbiAgICAgIGZuKFxyXG4gICAgICAgIHYgaW5zdGFuY2VvZiBEYXRlXHJcbiAgICAgICAgICA/IG5ldyBEYXRlKHYuZ2V0VVRDRnVsbFllYXIoKSwgdi5nZXRVVENNb250aCgpLCB2LmdldFVUQ0RhdGUoKSlcclxuICAgICAgICAgIDogdlxyXG4gICAgICApO1xyXG4gIH1cclxuXHJcbiAgLyoqIFJlZ2lzdGVycyBhIGNhbGxiYWNrIGZ1bmN0aW9uLCBjYWxsZWQgd2hlbiB0aGUgY29udHJvbCBpcyBibHVycmVkICovXHJcbiAgcmVnaXN0ZXJPblRvdWNoZWQoZm46ICgpID0+IHZvaWQpOiB2b2lkIHtcclxuICAgIHRoaXMub25Ub3VjaGVkID0gZm47XHJcbiAgfVxyXG5cclxuICAvKiogRW5hYmxlcyBvciBkaXNhYmxlcyB0aGUgZWxlbWVudCB3aGVuIHRoZSBjb250cm9sIHN0YXR1cyBjaGFuZ2VzICovXHJcbiAgc2V0RGlzYWJsZWRTdGF0ZShpc0Rpc2FibGVkOiBib29sZWFuKTogdm9pZCB7XHJcbiAgICB0aGlzLnJlbmRlcmVyLnNldFByb3BlcnR5KFxyXG4gICAgICB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCxcclxuICAgICAgXCJkaXNhYmxlZFwiLFxyXG4gICAgICBpc0Rpc2FibGVkXHJcbiAgICApO1xyXG4gIH1cclxufVxyXG4iXX0=
81
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZS5jdmEuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYW5ndWxhci9zcmMvdWkvZGlyZWN0aXZlcy9tYWdpYy9mb3JtLWNvbnRyb2xzL2NvbnRyb2wtdmFsdWUtYWNjZXNzb3JzL2RhdGUuY3ZhLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUNULFVBQVUsRUFDVixVQUFVLEVBQ1YsWUFBWSxFQUNaLFNBQVMsRUFDVixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQXdDLGlCQUFpQixFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFDeEYsT0FBTyxFQUFDLGNBQWMsRUFBQyxNQUFNLDBCQUEwQixDQUFDO0FBQ3hELE9BQU8sRUFBQyxnQkFBZ0IsRUFBQyxNQUFNLDZDQUE2QyxDQUFDO0FBQzdFLE9BQU8sRUFBQyxXQUFXLEVBQUUsa0JBQWtCLEVBQUMsTUFBTSxtQkFBbUIsQ0FBQzs7OztBQUVsRSxNQUFNLENBQUMsTUFBTSxtQkFBbUIsR0FBUTtJQUN0QyxPQUFPLEVBQUUsaUJBQWlCO0lBQzFCLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsaUJBQWlCLENBQUM7SUFDaEQsS0FBSyxFQUFFLElBQUk7Q0FDWixDQUFDO0FBY0YsTUFBTSxPQUFPLGlCQUFpQjtJQU9yQixXQUFXLENBQUMsS0FBSztRQUN0QixNQUFNLE9BQU8sR0FBRyxXQUFXLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQyxrQkFBa0IsQ0FBQyxRQUFRLENBQUMsV0FBVyxFQUFFLENBQUMsVUFBVSxFQUFFLENBQUMsQ0FBQztRQUN4RyxJQUFJLE9BQU8sR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FB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RyxDQUFDLENBQUMsRUFBRSxDQUNsQixFQUFFLENBQ0EsQ0FBQyxZQUFZLElBQUk7WUFDZixDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLGNBQWMsRUFBRSxFQUFFLENBQUMsQ0FBQyxXQUFXLEVBQUUsRUFBRSxDQUFDLENBQUMsVUFBVSxFQUFFLENBQUM7WUFDL0QsQ0FBQyxDQUFDLENBQUMsQ0FDTixDQUFDO0lBQ04sQ0FBQztJQUdELGlCQUFpQixDQUFDLEVBQWM7UUFDOUIsSUFBSSxDQUFDLFNBQVMsR0FBRyxFQUFFLENBQUM7SUFDdEIsQ0FBQztJQUdELGdCQUFnQixDQUFDLFVBQW1CO1FBQ2xDLElBQUksQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUN2QixJQUFJLENBQUMsVUFBVSxDQUFDLGFBQWEsRUFDN0IsVUFBVSxFQUNWLFVBQVUsQ0FDWCxDQUFDO0lBQ0osQ0FBQzs7a0ZBMUVVLGlCQUFpQjtzREFBakIsaUJBQWlCO29HQUFqQix1Q0FBbUMsaUZBQW5DLHVCQUFtQjswQ0FGbkIsQ0FBQyxtQkFBbUIsQ0FBQzt1RkFFckIsaUJBQWlCO2NBSjdCLFNBQVM7ZUFBQztnQkFDVCxRQUFRLEVBQUUsYUFBYTtnQkFDdkIsU0FBUyxFQUFFLENBQUMsbUJBQW1CLENBQUM7YUFDakM7aUpBR0MsUUFBUTtrQkFEUCxZQUFZO21CQUFDLE9BQU8sRUFBRSxDQUFDLDJCQUEyQixDQUFDO1lBR3BELFNBQVM7a0JBRFIsWUFBWTttQkFBQyxNQUFNLEVBQUUsRUFBRTtZQUlqQixXQUFXO2tCQURqQixZQUFZO21CQUFDLE1BQU0sRUFBRSxDQUFDLFFBQVEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgRGlyZWN0aXZlLFxyXG4gIEVsZW1lbnRSZWYsXHJcbiAgZm9yd2FyZFJlZixcclxuICBIb3N0TGlzdGVuZXIsXHJcbiAgUmVuZGVyZXIyXHJcbn0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHtBYnN0cmFjdENvbnRyb2wsIENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBOR19WQUxVRV9BQ0NFU1NPUn0gZnJvbSBcIkBhbmd1bGFyL2Zvcm1zXCI7XHJcbmltcG9ydCB7TWFnaWNEaXJlY3RpdmV9IGZyb20gXCIuLi8uLi8uLi9tYWdpYy5kaXJlY3RpdmVcIjtcclxuaW1wb3J0IHtUYXNrTWFnaWNTZXJ2aWNlfSBmcm9tIFwiLi4vLi4vLi4vLi4vLi4vc2VydmljZXMvdGFzay5tYWdpY3Muc2VydmljZVwiO1xyXG5pbXBvcnQge0Vudmlyb25tZW50LCBMYXN0Rm9jdXNlZE1hbmFnZXJ9IGZyb20gXCJAbWFnaWMteHBhL2VuZ2luZVwiO1xyXG5cclxuZXhwb3J0IGNvbnN0IERBVEVfVkFMVUVfQUNDRVNTT1I6IGFueSA9IHtcclxuICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcclxuICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBEYXRlVmFsdWVBY2Nlc3NvciksXHJcbiAgbXVsdGk6IHRydWVcclxufTtcclxuXHJcbi8qKlxyXG4gKiBUaGUgYWNjZXNzb3IgZm9yIHdyaXRpbmcgYSB2YWx1ZSBhbmQgbGlzdGVuaW5nIHRvIGNoYW5nZXMgb24gYSBkYXRlIGlucHV0IGVsZW1lbnRcclxuICpcclxuICogICMjIyBFeGFtcGxlXHJcbiAqICBgPGlucHV0IHR5cGU9XCJkYXRlXCIgbmFtZT1cImJpcnRoZGF5XCIgbmdNb2RlbCBkYXRlSW5wdXQ+YFxyXG4gKiAgT1JcclxuICogIGA8aW5wdXQgdHlwZT1cImRhdGVcIiBmb3JtQ29udHJvbE5hbWU9XCJiaXJ0aGRheVwiIGRhdGVJbnB1dD5gXHJcbiAqL1xyXG5ARGlyZWN0aXZlKHtcclxuICBzZWxlY3RvcjogXCJbZGF0ZUlucHV0XVwiLFxyXG4gIHByb3ZpZGVyczogW0RBVEVfVkFMVUVfQUNDRVNTT1JdXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBEYXRlVmFsdWVBY2Nlc3NvciBpbXBsZW1lbnRzIENvbnRyb2xWYWx1ZUFjY2Vzc29yIHtcclxuICBASG9zdExpc3RlbmVyKFwiaW5wdXRcIiwgW1wiJGV2ZW50LnRhcmdldC52YWx1ZUFzRGF0ZVwiXSlcclxuICBvbkNoYW5nZSA9IChfOiBhbnkpID0+IHt9O1xyXG4gIEBIb3N0TGlzdGVuZXIoXCJibHVyXCIsIFtdKVxyXG4gIG9uVG91Y2hlZCA9ICgpID0+IHt9O1xyXG5cclxuICBASG9zdExpc3RlbmVyKCdibHVyJywgWyckZXZlbnQnXSlcclxuICBwdWJsaWMgb25CbHVyRXZlbnQoZXZlbnQpIHtcclxuICAgIGNvbnN0IGNlbnR1cnkgPSBFbnZpcm9ubWVudC5JbnN0YW5jZS5HZXRDZW50dXJ5KExhc3RGb2N1c2VkTWFuYWdlci5JbnN0YW5jZS5nZXRDdXJyVGFzaygpLmdldENvbXBJZHgoKSk7XHJcbiAgICBsZXQgY29udHJvbCA9IHRoaXMuX3Rhc2suZ2V0Rm9ybUNvbnRyb2wodGhpcy5tYWdpY0Rpci5yb3dJZCwgdGhpcy5tYWdpY0Rpci5pZCk7XHJcblxyXG4gICAgdGhpcy5mb3JtYXREYXRlV2l0aENlbnR1cnkoZXZlbnQudGFyZ2V0LnZhbHVlLCBjZW50dXJ5LCBjb250cm9sKTtcclxuICB9XHJcblxyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVuZGVyZXI6IFJlbmRlcmVyMiwgcHJpdmF0ZSBlbGVtZW50UmVmOiBFbGVtZW50UmVmLFxyXG4gICAgICAgICAgICAgIHByb3RlY3RlZCBtYWdpY0RpcjogTWFnaWNEaXJlY3RpdmUgLFxyXG4gICAgICAgICAgICAgIHByb3RlY3RlZCBfdGFzazogVGFza01hZ2ljU2VydmljZSkge31cclxuXHJcblxyXG4gIC8qKiBGb3JtYXQgeWVhciwgaWYgdXNlciBlbnRlcnMgMiBkaWdpdHMgaW5zdGVhZCBvZiA0IGRpZ2l0cyBhcyBwZXIgdGhlIGNlbnR1cnkgZ2l2ZW4gaW4gTWFnaWMuaW5pIGZpbGUgKi9cclxuICBmb3JtYXREYXRlV2l0aENlbnR1cnkodXNlcklucHV0OnN0cmluZywgY2VudHVyeTpudW1iZXIsIGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCl7XHJcbiAgICBjb25zdCBzZXBhcmF0b3IgPSB1c2VySW5wdXQuaW5jbHVkZXMoJy8nKT8nLyc6XCItXCI7XHJcbiAgICBsZXQgY2VudHVyeVZhbCA9IHBhcnNlSW50KGNlbnR1cnkudG9TdHJpbmcoKS5zbGljZSgwLCAyKSk7XHJcbiAgICBpZih1c2VySW5wdXQubGVuZ3RoID09IDApXHJcbiAgICAgIHJldHVybiA7XHJcblxyXG4gICAgY29uc3QgZGF0ZUFycmF5OiBzdHJpbmdbXSA9IHVzZXJJbnB1dC5zcGxpdChzZXBhcmF0b3IpO1xyXG4gICAgY29uc3QgZGF5ID0gTnVtYmVyKGRhdGVBcnJheVsyXSk7XHJcbiAgICBjb25zdCBtb250aCA9IE51bWJlcihkYXRlQXJyYXlbMV0pO1xyXG4gICAgY29uc3QgeWVhciA9IE51bWJlcihkYXRlQXJyYXlbMF0pO1xyXG5cclxuICAgIGxldCB1cGRhdGVkWWVhciA9IHllYXIudG9TdHJpbmcoKS5sZW5ndGggPT09IDIgPyAoeWVhciA8IGNlbnR1cnkgJSAxMDAgPyBjZW50dXJ5VmFsICsgMSA6IGNlbnR1cnlWYWwpICsgJycgKyB5ZWFyIDpcclxuICAgICAgeWVhci50b1N0cmluZygpLmxlbmd0aCA9PT0gMSA/ICh5ZWFyIDwgY2VudHVyeSAlIDEwMCA/IGNlbnR1cnlWYWwgKyAxIDogY2VudHVyeVZhbCkgKyAnMCcgKyB5ZWFyIDpcclxuICAgICAgICB5ZWFyO1xyXG5cclxuICAgIGNvbnRyb2wuc2V0VmFsdWUobmV3IERhdGUoYCR7dXBkYXRlZFllYXJ9JHtzZXBhcmF0b3J9JHttb250aH0ke3NlcGFyYXRvcn0ke2RheX1gKSlcclxuICB9XHJcblxyXG4gIC8qKiBXcml0ZXMgYSBuZXcgdmFsdWUgdG8gdGhlIGVsZW1lbnQgKG1vZGVsIC0+IHZpZXcpICovXHJcbiAgd3JpdGVWYWx1ZSh2YWx1ZTogRGF0ZSk6IHZvaWQge1xyXG4gICAgaWYgKCF2YWx1ZSkge1xyXG4gICAgICB0aGlzLnJlbmRlcmVyLnNldFByb3BlcnR5KHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LCBcInZhbHVlXCIsIG51bGwpO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5yZW5kZXJlci5zZXRQcm9wZXJ0eShcclxuICAgICAgdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsXHJcbiAgICAgIFwidmFsdWVBc0RhdGVcIixcclxuICAgICAgbmV3IERhdGUoRGF0ZS5VVEModmFsdWUuZ2V0RnVsbFllYXIoKSwgdmFsdWUuZ2V0TW9udGgoKSwgdmFsdWUuZ2V0RGF0ZSgpKSlcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICAvKiogUmVnaXN0ZXJzIGEgY2FsbGJhY2sgZnVuY3Rpb24sIGNhbGxlZCB3aGVuIHZhbHVlIGNoYW5nZXMgKHZpZXcgLT4gbW9kZWwpICovXHJcbiAgcmVnaXN0ZXJPbkNoYW5nZShmbjogKF86IGFueSkgPT4gdm9pZCk6IHZvaWQge1xyXG4gICAgdGhpcy5vbkNoYW5nZSA9IHYgPT5cclxuICAgICAgZm4oXHJcbiAgICAgICAgdiBpbnN0YW5jZW9mIERhdGVcclxuICAgICAgICAgID8gbmV3IERhdGUodi5nZXRVVENGdWxsWWVhcigpLCB2LmdldFVUQ01vbnRoKCksIHYuZ2V0VVRDRGF0ZSgpKVxyXG4gICAgICAgICAgOiB2XHJcbiAgICAgICk7XHJcbiAgfVxyXG5cclxuICAvKiogUmVnaXN0ZXJzIGEgY2FsbGJhY2sgZnVuY3Rpb24sIGNhbGxlZCB3aGVuIHRoZSBjb250cm9sIGlzIGJsdXJyZWQgKi9cclxuICByZWdpc3Rlck9uVG91Y2hlZChmbjogKCkgPT4gdm9pZCk6IHZvaWQge1xyXG4gICAgdGhpcy5vblRvdWNoZWQgPSBmbjtcclxuICB9XHJcblxyXG4gIC8qKiBFbmFibGVzIG9yIGRpc2FibGVzIHRoZSBlbGVtZW50IHdoZW4gdGhlIGNvbnRyb2wgc3RhdHVzIGNoYW5nZXMgKi9cclxuICBzZXREaXNhYmxlZFN0YXRlKGlzRGlzYWJsZWQ6IGJvb2xlYW4pOiB2b2lkIHtcclxuICAgIHRoaXMucmVuZGVyZXIuc2V0UHJvcGVydHkoXHJcbiAgICAgIHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LFxyXG4gICAgICBcImRpc2FibGVkXCIsXHJcbiAgICAgIGlzRGlzYWJsZWRcclxuICAgICk7XHJcbiAgfVxyXG59XHJcbiJdfQ==