1 | import { Directive, Input } from '@angular/core';
|
2 | import { autorun } from 'mobx';
|
3 | import * as i0 from "@angular/core";
|
4 | // import { mobxAngularDebug } from '../utils/mobx-angular-debug';
|
5 | export class MobxAutorunDirective {
|
6 | constructor(templateRef, viewContainer) {
|
7 | Object.defineProperty(this, "templateRef", {
|
8 | enumerable: true,
|
9 | configurable: true,
|
10 | writable: true,
|
11 | value: templateRef
|
12 | });
|
13 | Object.defineProperty(this, "viewContainer", {
|
14 | enumerable: true,
|
15 | configurable: true,
|
16 | writable: true,
|
17 | value: viewContainer
|
18 | });
|
19 | Object.defineProperty(this, "templateBindings", {
|
20 | enumerable: true,
|
21 | configurable: true,
|
22 | writable: true,
|
23 | value: {}
|
24 | });
|
25 | Object.defineProperty(this, "dispose", {
|
26 | enumerable: true,
|
27 | configurable: true,
|
28 | writable: true,
|
29 | value: void 0
|
30 | });
|
31 | Object.defineProperty(this, "view", {
|
32 | enumerable: true,
|
33 | configurable: true,
|
34 | writable: true,
|
35 | value: void 0
|
36 | });
|
37 | Object.defineProperty(this, "allAutorunOptions", {
|
38 | enumerable: true,
|
39 | configurable: true,
|
40 | writable: true,
|
41 | value: [
|
42 | 'delay',
|
43 | 'scheduler',
|
44 | 'requiresObservable',
|
45 | 'name',
|
46 | 'onError'
|
47 | ]
|
48 | });
|
49 | Object.defineProperty(this, "mobxAutorun", {
|
50 | enumerable: true,
|
51 | configurable: true,
|
52 | writable: true,
|
53 | value: void 0
|
54 | });
|
55 | }
|
56 | ngOnInit() {
|
57 | this.view = this.viewContainer.createEmbeddedView(this.templateRef);
|
58 | if (this.dispose) {
|
59 | this.dispose();
|
60 | }
|
61 | if (this.shouldDetach()) {
|
62 | this.view.detach();
|
63 | }
|
64 | this.autoDetect(this.view);
|
65 | // mobxAngularDebug(this.view, this.dispose);
|
66 | }
|
67 | shouldDetach() {
|
68 | return this.mobxAutorun && this.mobxAutorun.detach;
|
69 | }
|
70 | autoDetect(view) {
|
71 | const opts = this.getAutorunOptions();
|
72 | this.dispose = autorun(() => view.detectChanges(), opts);
|
73 | }
|
74 | getAutorunOptions() {
|
75 | return Object.keys(this.mobxAutorun || {}).reduce((opts, current) => {
|
76 | if (this.allAutorunOptions.includes(current)) {
|
77 | opts[current] = this.mobxAutorun[current];
|
78 | }
|
79 | return opts;
|
80 | }, {});
|
81 | }
|
82 | ngOnDestroy() {
|
83 | if (this.dispose) {
|
84 | this.dispose();
|
85 | }
|
86 | }
|
87 | }
|
88 | Object.defineProperty(MobxAutorunDirective, "\u0275fac", {
|
89 | enumerable: true,
|
90 | configurable: true,
|
91 | writable: true,
|
92 | value: i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: MobxAutorunDirective, deps: [{ token: i0.TemplateRef }, { token: i0.ViewContainerRef }], target: i0.ɵɵFactoryTarget.Directive })
|
93 | });
|
94 | Object.defineProperty(MobxAutorunDirective, "\u0275dir", {
|
95 | enumerable: true,
|
96 | configurable: true,
|
97 | writable: true,
|
98 | value: i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.0.0", type: MobxAutorunDirective, selector: "[mobxAutorun]", inputs: { mobxAutorun: "mobxAutorun" }, ngImport: i0 })
|
99 | });
|
100 | i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: MobxAutorunDirective, decorators: [{
|
101 | type: Directive,
|
102 | args: [{ selector: '[mobxAutorun]' }]
|
103 | }], ctorParameters: function () { return [{ type: i0.TemplateRef }, { type: i0.ViewContainerRef }]; }, propDecorators: { mobxAutorun: [{
|
104 | type: Input
|
105 | }] } });
|
106 | //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9ieC1hdXRvcnVuLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL21vYngtYW5ndWxhci9zcmMvbGliL21vYngtYXV0b3J1bi5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFNBQVMsRUFLVCxLQUFLLEVBRU4sTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLE9BQU8sRUFBbUIsTUFBTSxNQUFNLENBQUM7O0FBQ2hELGtFQUFrRTtBQUdsRSxNQUFNLE9BQU8sb0JBQW9CO0lBYS9CLFlBQ1ksV0FBNkIsRUFDN0IsYUFBK0I7Ozs7O21CQUQvQjs7Ozs7O21CQUNBOztRQWRaOzs7O21CQUE2QixFQUFFO1dBQUM7UUFDaEM7Ozs7O1dBQXVCO1FBQ3ZCOzs7OztXQUFxQztRQUNyQzs7OzttQkFBbUU7Z0JBQ2pFLE9BQU87Z0JBQ1AsV0FBVztnQkFDWCxvQkFBb0I7Z0JBQ3BCLE1BQU07Z0JBQ04sU0FBUzthQUNWO1dBQUM7UUFDRjs7Ozs7V0FBcUI7SUFLbEIsQ0FBQztJQUVKLFFBQVE7UUFDTixJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBRXBFLElBQUksSUFBSSxDQUFDLE9BQU8sRUFBRTtZQUNoQixJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7U0FDaEI7UUFFRCxJQUFJLElBQUksQ0FBQyxZQUFZLEVBQUUsRUFBRTtZQUN2QixJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO1NBQ3BCO1FBQ0QsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDM0IsNkNBQTZDO0lBQy9DLENBQUM7SUFFRCxZQUFZO1FBQ1YsT0FBTyxJQUFJLENBQUMsV0FBVyxJQUFJLElBQUksQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDO0lBQ3JELENBQUM7SUFFRCxVQUFVLENBQUMsSUFBMEI7UUFDbkMsTUFBTSxJQUFJLEdBQW9CLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO1FBRXZELElBQUksQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxhQUFhLEVBQUUsRUFBRSxJQUFJLENBQUMsQ0FBQztJQUMzRCxDQUFDO0lBRUQsaUJBQWlCO1FBQ2YsT0FBTyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLElBQUksRUFBRSxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsSUFBSSxFQUFFLE9BQU8sRUFBRSxFQUFFO1lBQ2xFLElBQUksSUFBSSxDQUFDLGlCQUFpQixDQUFDLFFBQVEsQ0FBQyxPQUFnQyxDQUFDLEVBQUU7Z0JBQ3JFLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxDQUFDO2FBQzNDO1lBQ0QsT0FBTyxJQUFJLENBQUM7UUFDZCxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDVCxDQUFDO0lBRUQsV0FBVztRQUNULElBQUksSUFBSSxDQUFDLE9BQU8sRUFBRTtZQUNoQixJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7U0FDaEI7SUFDSCxDQUFDOzs7Ozs7Z0dBdkRVLG9CQUFvQjs7Ozs7O29GQUFwQixvQkFBb0I7OzJGQUFwQixvQkFBb0I7a0JBRGhDLFNBQVM7bUJBQUMsRUFBRSxRQUFRLEVBQUUsZUFBZSxFQUFFO2lJQVk3QixXQUFXO3NCQUFuQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuICBEaXJlY3RpdmUsXHJcbiAgVmlld0NvbnRhaW5lclJlZixcclxuICBUZW1wbGF0ZVJlZixcclxuICBPbkluaXQsXHJcbiAgT25EZXN0cm95LFxyXG4gIElucHV0LFxyXG4gIEVtYmVkZGVkVmlld1JlZlxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBhdXRvcnVuLCBJQXV0b3J1bk9wdGlvbnMgfSBmcm9tICdtb2J4JztcclxuLy8gaW1wb3J0IHsgbW9ieEFuZ3VsYXJEZWJ1ZyB9IGZyb20gJy4uL3V0aWxzL21vYngtYW5ndWxhci1kZWJ1Zyc7XHJcblxyXG5ARGlyZWN0aXZlKHsgc2VsZWN0b3I6ICdbbW9ieEF1dG9ydW5dJyB9KVxyXG5leHBvcnQgY2xhc3MgTW9ieEF1dG9ydW5EaXJlY3RpdmUgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XHJcbiAgcHJvdGVjdGVkIHRlbXBsYXRlQmluZGluZ3MgPSB7fTtcclxuICBwcm90ZWN0ZWQgZGlzcG9zZTogYW55O1xyXG4gIHByb3RlY3RlZCB2aWV3OiBFbWJlZGRlZFZpZXdSZWY8YW55PjtcclxuICBwcml2YXRlIHJlYWRvbmx5IGFsbEF1dG9ydW5PcHRpb25zOiBBcnJheTxrZXlvZiBJQXV0b3J1bk9wdGlvbnM+ID0gW1xyXG4gICAgJ2RlbGF5JyxcclxuICAgICdzY2hlZHVsZXInLFxyXG4gICAgJ3JlcXVpcmVzT2JzZXJ2YWJsZScsXHJcbiAgICAnbmFtZScsXHJcbiAgICAnb25FcnJvcidcclxuICBdO1xyXG4gIEBJbnB1dCgpIG1vYnhBdXRvcnVuO1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByb3RlY3RlZCB0ZW1wbGF0ZVJlZjogVGVtcGxhdGVSZWY8YW55PixcclxuICAgIHByb3RlY3RlZCB2aWV3Q29udGFpbmVyOiBWaWV3Q29udGFpbmVyUmVmXHJcbiAgKSB7fVxyXG5cclxuICBuZ09uSW5pdCgpIHtcclxuICAgIHRoaXMudmlldyA9IHRoaXMudmlld0NvbnRhaW5lci5jcmVhdGVFbWJlZGRlZFZpZXcodGhpcy50ZW1wbGF0ZVJlZik7XHJcblxyXG4gICAgaWYgKHRoaXMuZGlzcG9zZSkge1xyXG4gICAgICB0aGlzLmRpc3Bvc2UoKTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAodGhpcy5zaG91bGREZXRhY2goKSkge1xyXG4gICAgICB0aGlzLnZpZXcuZGV0YWNoKCk7XHJcbiAgICB9XHJcbiAgICB0aGlzLmF1dG9EZXRlY3QodGhpcy52aWV3KTtcclxuICAgIC8vIG1vYnhBbmd1bGFyRGVidWcodGhpcy52aWV3LCB0aGlzLmRpc3Bvc2UpO1xyXG4gIH1cclxuXHJcbiAgc2hvdWxkRGV0YWNoKCkge1xyXG4gICAgcmV0dXJuIHRoaXMubW9ieEF1dG9ydW4gJiYgdGhpcy5tb2J4QXV0b3J1bi5kZXRhY2g7XHJcbiAgfVxyXG5cclxuICBhdXRvRGV0ZWN0KHZpZXc6IEVtYmVkZGVkVmlld1JlZjxhbnk+KSB7XHJcbiAgICBjb25zdCBvcHRzOiBJQXV0b3J1bk9wdGlvbnMgPSB0aGlzLmdldEF1dG9ydW5PcHRpb25zKCk7XHJcblxyXG4gICAgdGhpcy5kaXNwb3NlID0gYXV0b3J1bigoKSA9PiB2aWV3LmRldGVjdENoYW5nZXMoKSwgb3B0cyk7XHJcbiAgfVxyXG5cclxuICBnZXRBdXRvcnVuT3B0aW9ucygpOiBJQXV0b3J1bk9wdGlvbnMge1xyXG4gICAgcmV0dXJuIE9iamVjdC5rZXlzKHRoaXMubW9ieEF1dG9ydW4gfHwge30pLnJlZHVjZSgob3B0cywgY3VycmVudCkgPT4ge1xyXG4gICAgICBpZiAodGhpcy5hbGxBdXRvcnVuT3B0aW9ucy5pbmNsdWRlcyhjdXJyZW50IGFzIGtleW9mIElBdXRvcnVuT3B0aW9ucykpIHtcclxuICAgICAgICBvcHRzW2N1cnJlbnRdID0gdGhpcy5tb2J4QXV0b3J1bltjdXJyZW50XTtcclxuICAgICAgfVxyXG4gICAgICByZXR1cm4gb3B0cztcclxuICAgIH0sIHt9KTtcclxuICB9XHJcblxyXG4gIG5nT25EZXN0cm95KCkge1xyXG4gICAgaWYgKHRoaXMuZGlzcG9zZSkge1xyXG4gICAgICB0aGlzLmRpc3Bvc2UoKTtcclxuICAgIH1cclxuICB9XHJcbn1cclxuIl19 |
\ | No newline at end of file |