@ali-hm/angular-tree-component 16.0.1 → 17.0.1

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 (53) hide show
  1. package/esm2022/ali-hm-angular-tree-component.mjs +4 -4
  2. package/esm2022/lib/angular-tree-component.module.mjs +99 -99
  3. package/esm2022/lib/components/loading.component.mjs +20 -20
  4. package/esm2022/lib/components/tree-node-checkbox.component.mjs +14 -14
  5. package/esm2022/lib/components/tree-node-collection.component.mjs +119 -119
  6. package/esm2022/lib/components/tree-node-content.component.mjs +22 -22
  7. package/esm2022/lib/components/tree-node-drop-slot.component.mjs +25 -25
  8. package/esm2022/lib/components/tree-node-expander.component.mjs +15 -15
  9. package/esm2022/lib/components/tree-node-wrapper.component.mjs +23 -23
  10. package/esm2022/lib/components/tree-viewport.component.mjs +55 -55
  11. package/esm2022/lib/components/tree.component.mjs +137 -137
  12. package/esm2022/lib/constants/events.mjs +19 -19
  13. package/esm2022/lib/constants/keys.mjs +9 -9
  14. package/esm2022/lib/defs/api.mjs +1 -1
  15. package/esm2022/lib/directives/tree-animate-open.directive.mjs +101 -101
  16. package/esm2022/lib/directives/tree-drag.directive.mjs +65 -65
  17. package/esm2022/lib/directives/tree-drop.directive.mjs +127 -127
  18. package/esm2022/lib/mobx-angular/mobx-proxy.mjs +16 -16
  19. package/esm2022/lib/mobx-angular/tree-mobx-autorun.directive.mjs +40 -40
  20. package/esm2022/lib/models/tree-dragged-element.model.mjs +24 -24
  21. package/esm2022/lib/models/tree-node.model.mjs +389 -389
  22. package/esm2022/lib/models/tree-options.model.mjs +150 -150
  23. package/esm2022/lib/models/tree-virtual-scroll.model.mjs +197 -197
  24. package/esm2022/lib/models/tree.model.mjs +546 -546
  25. package/esm2022/public-api.mjs +4 -4
  26. package/fesm2022/ali-hm-angular-tree-component.mjs +2080 -2080
  27. package/fesm2022/ali-hm-angular-tree-component.mjs.map +1 -1
  28. package/index.d.ts +5 -5
  29. package/lib/angular-tree-component.module.d.ts +43 -43
  30. package/lib/components/loading.component.d.ts +9 -9
  31. package/lib/components/tree-node-checkbox.component.d.ts +7 -7
  32. package/lib/components/tree-node-collection.component.d.ts +34 -34
  33. package/lib/components/tree-node-content.component.d.ts +10 -10
  34. package/lib/components/tree-node-drop-slot.component.d.ts +10 -10
  35. package/lib/components/tree-node-expander.component.d.ts +7 -7
  36. package/lib/components/tree-node-wrapper.component.d.ts +9 -9
  37. package/lib/components/tree-viewport.component.d.ts +17 -17
  38. package/lib/components/tree.component.d.ts +47 -47
  39. package/lib/constants/events.d.ts +19 -19
  40. package/lib/constants/keys.d.ts +9 -9
  41. package/lib/defs/api.d.ts +611 -611
  42. package/lib/directives/tree-animate-open.directive.d.ts +20 -20
  43. package/lib/directives/tree-drag.directive.d.ts +21 -21
  44. package/lib/directives/tree-drop.directive.d.ts +33 -33
  45. package/lib/mobx-angular/mobx-proxy.d.ts +7 -7
  46. package/lib/mobx-angular/tree-mobx-autorun.directive.d.ts +17 -17
  47. package/lib/models/tree-dragged-element.model.d.ts +9 -9
  48. package/lib/models/tree-node.model.d.ts +83 -83
  49. package/lib/models/tree-options.model.d.ts +77 -77
  50. package/lib/models/tree-virtual-scroll.model.d.ts +27 -27
  51. package/lib/models/tree.model.d.ts +91 -91
  52. package/package.json +3 -3
  53. package/public-api.d.ts +1 -1
@@ -1,101 +1,101 @@
1
- import { Directive, Input } from '@angular/core';
2
- import * as i0 from "@angular/core";
3
- const EASE_ACCELERATION = 1.005;
4
- export class TreeAnimateOpenDirective {
5
- set isOpen(value) {
6
- if (value) {
7
- this._show();
8
- if (this.isEnabled && this._isOpen === false) {
9
- this._animateOpen();
10
- }
11
- }
12
- else {
13
- this.isEnabled ? this._animateClose() : this._hide();
14
- }
15
- this._isOpen = !!value;
16
- }
17
- ;
18
- constructor(renderer, templateRef, viewContainerRef) {
19
- this.renderer = renderer;
20
- this.templateRef = templateRef;
21
- this.viewContainerRef = viewContainerRef;
22
- }
23
- _show() {
24
- if (this.innerElement)
25
- return;
26
- // create child view
27
- this.innerElement = this.viewContainerRef.createEmbeddedView(this.templateRef).rootNodes[0];
28
- }
29
- _hide() {
30
- this.viewContainerRef.clear();
31
- this.innerElement = null;
32
- }
33
- _animateOpen() {
34
- let delta = this.animateSpeed;
35
- let ease = this.animateAcceleration;
36
- let maxHeight = 0;
37
- // set height to 0
38
- this.renderer.setStyle(this.innerElement, 'max-height', `0`);
39
- // increase maxHeight until height doesn't change
40
- setTimeout(() => {
41
- const i = setInterval(() => {
42
- if (!this._isOpen || !this.innerElement)
43
- return clearInterval(i);
44
- maxHeight += delta;
45
- const roundedMaxHeight = Math.round(maxHeight);
46
- this.renderer.setStyle(this.innerElement, 'max-height', `${roundedMaxHeight}px`);
47
- const height = this.innerElement.getBoundingClientRect ? this.innerElement.getBoundingClientRect().height : 0; // TBD use renderer
48
- delta *= ease;
49
- ease *= EASE_ACCELERATION;
50
- if (height < roundedMaxHeight) {
51
- // Make maxHeight auto because animation finished and container might change height later on
52
- this.renderer.setStyle(this.innerElement, 'max-height', null);
53
- clearInterval(i);
54
- }
55
- }, 17);
56
- });
57
- }
58
- _animateClose() {
59
- if (!this.innerElement)
60
- return;
61
- let delta = this.animateSpeed;
62
- let ease = this.animateAcceleration;
63
- let height = this.innerElement.getBoundingClientRect().height; // TBD use renderer
64
- // slowly decrease maxHeight to 0, starting from current height
65
- const i = setInterval(() => {
66
- if (this._isOpen || !this.innerElement)
67
- return clearInterval(i);
68
- height -= delta;
69
- this.renderer.setStyle(this.innerElement, 'max-height', `${height}px`);
70
- delta *= ease;
71
- ease *= EASE_ACCELERATION;
72
- if (height <= 0) {
73
- // after animation complete - remove child element
74
- this.viewContainerRef.clear();
75
- this.innerElement = null;
76
- clearInterval(i);
77
- }
78
- }, 17);
79
- }
80
- /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TreeAnimateOpenDirective, deps: [{ token: i0.Renderer2 }, { token: i0.TemplateRef }, { token: i0.ViewContainerRef }], target: i0.ɵɵFactoryTarget.Directive }); }
81
- /** @nocollapse */ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.12", type: TreeAnimateOpenDirective, selector: "[treeAnimateOpen]", inputs: { animateSpeed: ["treeAnimateOpenSpeed", "animateSpeed"], animateAcceleration: ["treeAnimateOpenAcceleration", "animateAcceleration"], isEnabled: ["treeAnimateOpenEnabled", "isEnabled"], isOpen: ["treeAnimateOpen", "isOpen"] }, ngImport: i0 }); }
82
- }
83
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TreeAnimateOpenDirective, decorators: [{
84
- type: Directive,
85
- args: [{
86
- selector: '[treeAnimateOpen]'
87
- }]
88
- }], ctorParameters: function () { return [{ type: i0.Renderer2 }, { type: i0.TemplateRef }, { type: i0.ViewContainerRef }]; }, propDecorators: { animateSpeed: [{
89
- type: Input,
90
- args: ['treeAnimateOpenSpeed']
91
- }], animateAcceleration: [{
92
- type: Input,
93
- args: ['treeAnimateOpenAcceleration']
94
- }], isEnabled: [{
95
- type: Input,
96
- args: ['treeAnimateOpenEnabled']
97
- }], isOpen: [{
98
- type: Input,
99
- args: ['treeAnimateOpen']
100
- }] } });
101
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJlZS1hbmltYXRlLW9wZW4uZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYW5ndWxhci10cmVlLWNvbXBvbmVudC9zcmMvbGliL2RpcmVjdGl2ZXMvdHJlZS1hbmltYXRlLW9wZW4uZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUE0QyxNQUFNLGVBQWUsQ0FBQzs7QUFFM0YsTUFBTSxpQkFBaUIsR0FBRyxLQUFLLENBQUM7QUFLaEMsTUFBTSxPQUFPLHdCQUF3QjtJQU9uQyxJQUNJLE1BQU0sQ0FBQyxLQUFjO1FBQ3ZCLElBQUksS0FBSyxFQUFFO1lBQ1QsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQ2IsSUFBSSxJQUFJLENBQUMsU0FBUyxJQUFJLElBQUksQ0FBQyxPQUFPLEtBQUssS0FBSyxFQUFFO2dCQUM1QyxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7YUFDckI7U0FDRjthQUFNO1lBQ0wsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7U0FDdEQ7UUFDRCxJQUFJLENBQUMsT0FBTyxHQUFHLENBQUMsQ0FBQyxLQUFLLENBQUM7SUFDekIsQ0FBQztJQUFBLENBQUM7SUFJRixZQUNVLFFBQW1CLEVBQ25CLFdBQTZCLEVBQzdCLGdCQUFrQztRQUZsQyxhQUFRLEdBQVIsUUFBUSxDQUFXO1FBQ25CLGdCQUFXLEdBQVgsV0FBVyxDQUFrQjtRQUM3QixxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWtCO0lBQzVDLENBQUM7SUFFTyxLQUFLO1FBQ1gsSUFBSSxJQUFJLENBQUMsWUFBWTtZQUFFLE9BQU87UUFFOUIsb0JBQW9CO1FBQ3BCLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLGdCQUFn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QUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDO2dCQUN6QixhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUM7YUFDbEI7UUFDSCxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDVCxDQUFDO2tJQTdGVSx3QkFBd0I7c0hBQXhCLHdCQUF3Qjs7NEZBQXhCLHdCQUF3QjtrQkFIcEMsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsbUJBQW1CO2lCQUM5Qjt5SkFJZ0MsWUFBWTtzQkFBMUMsS0FBSzt1QkFBQyxzQkFBc0I7Z0JBQ1MsbUJBQW1CO3NCQUF4RCxLQUFLO3VCQUFDLDZCQUE2QjtnQkFDSCxTQUFTO3NCQUF6QyxLQUFLO3VCQUFDLHdCQUF3QjtnQkFHM0IsTUFBTTtzQkFEVCxLQUFLO3VCQUFDLGlCQUFpQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERpcmVjdGl2ZSwgSW5wdXQsIFJlbmRlcmVyMiwgVGVtcGxhdGVSZWYsIFZpZXdDb250YWluZXJSZWYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuXHJcbmNvbnN0IEVBU0VfQUNDRUxFUkFUSU9OID0gMS4wMDU7XHJcblxyXG5ARGlyZWN0aXZlKHtcclxuICBzZWxlY3RvcjogJ1t0cmVlQW5pbWF0ZU9wZW5dJ1xyXG59KVxyXG5leHBvcnQgY2xhc3MgVHJlZUFuaW1hdGVPcGVuRGlyZWN0aXZlIHtcclxuICBwcml2YXRlIF9pc09wZW46IGJvb2xlYW47XHJcblxyXG4gIEBJbnB1dCgndHJlZUFuaW1hdGVPcGVuU3BlZWQnKSBhbmltYXRlU3BlZWQ6IG51bWJlcjtcclxuICBASW5wdXQoJ3RyZWVBbmltYXRlT3BlbkFjY2VsZXJhdGlvbicpIGFuaW1hdGVBY2NlbGVyYXRpb246IG51bWJlcjtcclxuICBASW5wdXQoJ3RyZWVBbmltYXRlT3BlbkVuYWJsZWQnKSBpc0VuYWJsZWQ6IGJvb2xlYW47XHJcblxyXG4gIEBJbnB1dCgndHJlZUFuaW1hdGVPcGVuJylcclxuICBzZXQgaXNPcGVuKHZhbHVlOiBib29sZWFuKSB7XHJcbiAgICBpZiAodmFsdWUpIHtcclxuICAgICAgdGhpcy5fc2hvdygpO1xyXG4gICAgICBpZiAodGhpcy5pc0VuYWJsZWQgJiYgdGhpcy5faXNPcGVuID09PSBmYWxzZSkge1xyXG4gICAgICAgIHRoaXMuX2FuaW1hdGVPcGVuKCk7XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuaXNFbmFibGVkID8gdGhpcy5fYW5pbWF0ZUNsb3NlKCkgOiB0aGlzLl9oaWRlKCk7XHJcbiAgICB9XHJcbiAgICB0aGlzLl9pc09wZW4gPSAhIXZhbHVlO1xyXG4gIH07XHJcblxyXG4gIHByaXZhdGUgaW5uZXJFbGVtZW50OiBhbnk7XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSByZW5kZXJlcjogUmVuZGVyZXIyLFxyXG4gICAgcHJpdmF0ZSB0ZW1wbGF0ZVJlZjogVGVtcGxhdGVSZWY8YW55PixcclxuICAgIHByaXZhdGUgdmlld0NvbnRhaW5lclJlZjogVmlld0NvbnRhaW5lclJlZikge1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfc2hvdygpIHtcclxuICAgIGlmICh0aGlzLmlubmVyRWxlbWVudCkgcmV0dXJuO1xyXG5cclxuICAgIC8vIGNyZWF0ZSBjaGlsZCB2aWV3XHJcbiAgICB0aGlzLmlubmVyRWxlbWVudCA9IHRoaXMudmlld0NvbnRhaW5lclJlZi5jcmVhdGVFbWJlZGRlZFZpZXcodGhpcy50ZW1wbGF0ZVJlZikucm9vdE5vZGVzWzBdO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfaGlkZSgpIHtcclxuICAgIHRoaXMudmlld0NvbnRhaW5lclJlZi5jbGVhcigpO1xyXG4gICAgdGhpcy5pbm5lckVsZW1lbnQgPSBudWxsO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfYW5pbWF0ZU9wZW4oKSB7XHJcbiAgICBsZXQgZGVsdGEgPSB0aGlzLmFuaW1hdGVTcGVlZDtcclxuICAgIGxldCBlYXNlID0gdGhpcy5hbmltYXRlQWNjZWxlcmF0aW9uO1xyXG4gICAgbGV0IG1heEhlaWdodCA9IDA7XHJcblxyXG4gICAgLy8gc2V0IGhlaWdodCB0byAwXHJcbiAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKHRoaXMuaW5uZXJFbGVtZW50LCAnbWF4LWhlaWdodCcsIGAwYCk7XHJcblxyXG4gICAgLy8gaW5jcmVhc2UgbWF4SGVpZ2h0IHVudGlsIGhlaWdodCBkb2Vzbid0IGNoYW5nZVxyXG4gICAgc2V0VGltZW91dCgoKSA9PiB7IC8vIEFsbG93IGlubmVyIGVsZW1lbnQgdG8gY3JlYXRlIGl0cyBjb250ZW50XHJcbiAgICAgIGNvbnN0IGkgPSBzZXRJbnRlcnZhbCgoKSA9PiB7XHJcbiAgICAgICAgaWYgKCF0aGlzLl9pc09wZW4gfHwgIXRoaXMuaW5uZXJFbGVtZW50KSByZXR1cm4gY2xlYXJJbnRlcnZhbChpKTtcclxuXHJcbiAgICAgICAgbWF4SGVpZ2h0ICs9IGRlbHRhO1xyXG4gICAgICAgIGNvbnN0IHJvdW5kZWRNYXhIZWlnaHQgPSBNYXRoLnJvdW5kKG1heEhlaWdodCk7XHJcblxyXG4gICAgICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUodGhpcy5pbm5lckVsZW1lbnQsICdtYXgtaGVpZ2h0JywgYCR7cm91bmRlZE1heEhlaWdodH1weGApO1xyXG4gICAgICAgIGNvbnN0IGhlaWdodCA9IHRoaXMuaW5uZXJFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCA/IHRoaXMuaW5uZXJFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLmhlaWdodCA6IDA7IC8vIFRCRCB1c2UgcmVuZGVyZXJcclxuXHJcbiAgICAgICAgZGVsdGEgKj0gZWFzZTtcclxuICAgICAgICBlYXNlICo9IEVBU0VfQUNDRUxFUkFUSU9OO1xyXG4gICAgICAgIGlmIChoZWlnaHQgPCByb3VuZGVkTWF4SGVpZ2h0KSB7XHJcbiAgICAgICAgICAvLyBNYWtlIG1heEhlaWdodCBhdXRvIGJlY2F1c2UgYW5pbWF0aW9uIGZpbmlzaGVkIGFuZCBjb250YWluZXIgbWlnaHQgY2hhbmdlIGhlaWdodCBsYXRlciBvblxyXG4gICAgICAgICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZSh0aGlzLmlubmVyRWxlbWVudCwgJ21heC1oZWlnaHQnLCBudWxsKTtcclxuICAgICAgICAgIGNsZWFySW50ZXJ2YWwoaSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9LCAxNyk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgX2FuaW1hdGVDbG9zZSgpIHtcclxuICAgIGlmICghdGhpcy5pbm5lckVsZW1lbnQpIHJldHVybjtcclxuXHJcbiAgICBsZXQgZGVsdGEgPSB0aGlzLmFuaW1hdGVTcGVlZDtcclxuICAgIGxldCBlYXNlID0gdGhpcy5hbmltYXRlQWNjZWxlcmF0aW9uO1xyXG4gICAgbGV0IGhlaWdodCA9IHRoaXMuaW5uZXJFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLmhlaWdodDsgLy8gVEJEIHVzZSByZW5kZXJlclxyXG5cclxuICAgIC8vIHNsb3dseSBkZWNyZWFzZSBtYXhIZWlnaHQgdG8gMCwgc3RhcnRpbmcgZnJvbSBjdXJyZW50IGhlaWdodFxyXG4gICAgY29uc3QgaSA9IHNldEludGVydmFsKCgpID0+IHtcclxuICAgICAgaWYgKHRoaXMuX2lzT3BlbiB8fCAhdGhpcy5pbm5lckVsZW1lbnQpIHJldHVybiBjbGVhckludGVydmFsKGkpO1xyXG5cclxuICAgICAgaGVpZ2h0IC09IGRlbHRhO1xyXG4gICAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKHRoaXMuaW5uZXJFbGVtZW50LCAnbWF4LWhlaWdodCcsIGAke2hlaWdodH1weGApO1xyXG4gICAgICBkZWx0YSAqPSBlYXNlO1xyXG4gICAgICBlYXNlICo9IEVBU0VfQUNDRUxFUkFUSU9OO1xyXG5cclxuICAgICAgaWYgKGhlaWdodCA8PSAwKSB7XHJcbiAgICAgICAgLy8gYWZ0ZXIgYW5pbWF0aW9uIGNvbXBsZXRlIC0gcmVtb3ZlIGNoaWxkIGVsZW1lbnRcclxuICAgICAgICB0aGlzLnZpZXdDb250YWluZXJSZWYuY2xlYXIoKTtcclxuICAgICAgICB0aGlzLmlubmVyRWxlbWVudCA9IG51bGw7XHJcbiAgICAgICAgY2xlYXJJbnRlcnZhbChpKTtcclxuICAgICAgfVxyXG4gICAgfSwgMTcpO1xyXG4gIH1cclxufVxyXG4iXX0=
1
+ import { Directive, Input } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ const EASE_ACCELERATION = 1.005;
4
+ export class TreeAnimateOpenDirective {
5
+ set isOpen(value) {
6
+ if (value) {
7
+ this._show();
8
+ if (this.isEnabled && this._isOpen === false) {
9
+ this._animateOpen();
10
+ }
11
+ }
12
+ else {
13
+ this.isEnabled ? this._animateClose() : this._hide();
14
+ }
15
+ this._isOpen = !!value;
16
+ }
17
+ ;
18
+ constructor(renderer, templateRef, viewContainerRef) {
19
+ this.renderer = renderer;
20
+ this.templateRef = templateRef;
21
+ this.viewContainerRef = viewContainerRef;
22
+ }
23
+ _show() {
24
+ if (this.innerElement)
25
+ return;
26
+ // create child view
27
+ this.innerElement = this.viewContainerRef.createEmbeddedView(this.templateRef).rootNodes[0];
28
+ }
29
+ _hide() {
30
+ this.viewContainerRef.clear();
31
+ this.innerElement = null;
32
+ }
33
+ _animateOpen() {
34
+ let delta = this.animateSpeed;
35
+ let ease = this.animateAcceleration;
36
+ let maxHeight = 0;
37
+ // set height to 0
38
+ this.renderer.setStyle(this.innerElement, 'max-height', `0`);
39
+ // increase maxHeight until height doesn't change
40
+ setTimeout(() => {
41
+ const i = setInterval(() => {
42
+ if (!this._isOpen || !this.innerElement)
43
+ return clearInterval(i);
44
+ maxHeight += delta;
45
+ const roundedMaxHeight = Math.round(maxHeight);
46
+ this.renderer.setStyle(this.innerElement, 'max-height', `${roundedMaxHeight}px`);
47
+ const height = this.innerElement.getBoundingClientRect ? this.innerElement.getBoundingClientRect().height : 0; // TBD use renderer
48
+ delta *= ease;
49
+ ease *= EASE_ACCELERATION;
50
+ if (height < roundedMaxHeight) {
51
+ // Make maxHeight auto because animation finished and container might change height later on
52
+ this.renderer.setStyle(this.innerElement, 'max-height', null);
53
+ clearInterval(i);
54
+ }
55
+ }, 17);
56
+ });
57
+ }
58
+ _animateClose() {
59
+ if (!this.innerElement)
60
+ return;
61
+ let delta = this.animateSpeed;
62
+ let ease = this.animateAcceleration;
63
+ let height = this.innerElement.getBoundingClientRect().height; // TBD use renderer
64
+ // slowly decrease maxHeight to 0, starting from current height
65
+ const i = setInterval(() => {
66
+ if (this._isOpen || !this.innerElement)
67
+ return clearInterval(i);
68
+ height -= delta;
69
+ this.renderer.setStyle(this.innerElement, 'max-height', `${height}px`);
70
+ delta *= ease;
71
+ ease *= EASE_ACCELERATION;
72
+ if (height <= 0) {
73
+ // after animation complete - remove child element
74
+ this.viewContainerRef.clear();
75
+ this.innerElement = null;
76
+ clearInterval(i);
77
+ }
78
+ }, 17);
79
+ }
80
+ /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: TreeAnimateOpenDirective, deps: [{ token: i0.Renderer2 }, { token: i0.TemplateRef }, { token: i0.ViewContainerRef }], target: i0.ɵɵFactoryTarget.Directive }); }
81
+ /** @nocollapse */ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.3.12", type: TreeAnimateOpenDirective, selector: "[treeAnimateOpen]", inputs: { animateSpeed: ["treeAnimateOpenSpeed", "animateSpeed"], animateAcceleration: ["treeAnimateOpenAcceleration", "animateAcceleration"], isEnabled: ["treeAnimateOpenEnabled", "isEnabled"], isOpen: ["treeAnimateOpen", "isOpen"] }, ngImport: i0 }); }
82
+ }
83
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: TreeAnimateOpenDirective, decorators: [{
84
+ type: Directive,
85
+ args: [{
86
+ selector: '[treeAnimateOpen]'
87
+ }]
88
+ }], ctorParameters: () => [{ type: i0.Renderer2 }, { type: i0.TemplateRef }, { type: i0.ViewContainerRef }], propDecorators: { animateSpeed: [{
89
+ type: Input,
90
+ args: ['treeAnimateOpenSpeed']
91
+ }], animateAcceleration: [{
92
+ type: Input,
93
+ args: ['treeAnimateOpenAcceleration']
94
+ }], isEnabled: [{
95
+ type: Input,
96
+ args: ['treeAnimateOpenEnabled']
97
+ }], isOpen: [{
98
+ type: Input,
99
+ args: ['treeAnimateOpen']
100
+ }] } });
101
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJlZS1hbmltYXRlLW9wZW4uZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYW5ndWxhci10cmVlLWNvbXBvbmVudC9zcmMvbGliL2RpcmVjdGl2ZXMvdHJlZS1hbmltYXRlLW9wZW4uZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUE0QyxNQUFNLGVBQWUsQ0FBQzs7QUFFM0YsTUFBTSxpQkFBaUIsR0FBRyxLQUFLLENBQUM7QUFLaEMsTUFBTSxPQUFPLHdCQUF3QjtJQU9uQyxJQUNJLE1BQU0sQ0FBQyxLQUFjO1FBQ3ZCLElBQUksS0FBSyxFQUFFLENBQUM7WUFDVixJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDYixJQUFJLElBQUksQ0FBQyxTQUFTLElBQUksSUFBSSxDQUFDLE9BQU8sS0FBSyxLQUFLLEVBQUUsQ0FBQztnQkFDN0MsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO1lBQ3RCLENBQUM7UUFDSCxDQUFDO2FBQU0sQ0FBQztZQUNOLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQ3ZELENBQUM7UUFDRCxJQUFJLENBQUMsT0FBTyxHQUFHLENBQUMsQ0FBQyxLQUFLLENBQUM7SUFDekIsQ0FBQztJQUFBLENBQUM7SUFJRixZQUNVLFFBQW1CLEVBQ25CLFdBQTZCLEVBQzdCLGdCQUFrQztRQUZsQyxhQUFRLEdBQVIsUUFBUSxDQUFXO1FBQ25CLGdCQUFXLEdBQVgsV0FBVyxDQUFrQjtRQUM3QixxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWtCO0lBQzVDLENBQUM7SUFFTyxLQUFLO1FBQ1gsSUFBSSxJQUFJLENBQUMsWUFBWTtZQUFFLE9BQU87UUFFOUIsb0JBQW9CO1FBQ3BCLElBQUks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SUFBSSxDQUFDLGdCQUFnQixDQUFDLEtBQUssRUFBRSxDQUFDO2dCQUM5QixJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQztnQkFDekIsYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ25CLENBQUM7UUFDSCxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDVCxDQUFDO2tJQTdGVSx3QkFBd0I7c0hBQXhCLHdCQUF3Qjs7NEZBQXhCLHdCQUF3QjtrQkFIcEMsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsbUJBQW1CO2lCQUM5Qjt1SUFJZ0MsWUFBWTtzQkFBMUMsS0FBSzt1QkFBQyxzQkFBc0I7Z0JBQ1MsbUJBQW1CO3NCQUF4RCxLQUFLO3VCQUFDLDZCQUE2QjtnQkFDSCxTQUFTO3NCQUF6QyxLQUFLO3VCQUFDLHdCQUF3QjtnQkFHM0IsTUFBTTtzQkFEVCxLQUFLO3VCQUFDLGlCQUFpQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERpcmVjdGl2ZSwgSW5wdXQsIFJlbmRlcmVyMiwgVGVtcGxhdGVSZWYsIFZpZXdDb250YWluZXJSZWYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuXHJcbmNvbnN0IEVBU0VfQUNDRUxFUkFUSU9OID0gMS4wMDU7XHJcblxyXG5ARGlyZWN0aXZlKHtcclxuICBzZWxlY3RvcjogJ1t0cmVlQW5pbWF0ZU9wZW5dJ1xyXG59KVxyXG5leHBvcnQgY2xhc3MgVHJlZUFuaW1hdGVPcGVuRGlyZWN0aXZlIHtcclxuICBwcml2YXRlIF9pc09wZW46IGJvb2xlYW47XHJcblxyXG4gIEBJbnB1dCgndHJlZUFuaW1hdGVPcGVuU3BlZWQnKSBhbmltYXRlU3BlZWQ6IG51bWJlcjtcclxuICBASW5wdXQoJ3RyZWVBbmltYXRlT3BlbkFjY2VsZXJhdGlvbicpIGFuaW1hdGVBY2NlbGVyYXRpb246IG51bWJlcjtcclxuICBASW5wdXQoJ3RyZWVBbmltYXRlT3BlbkVuYWJsZWQnKSBpc0VuYWJsZWQ6IGJvb2xlYW47XHJcblxyXG4gIEBJbnB1dCgndHJlZUFuaW1hdGVPcGVuJylcclxuICBzZXQgaXNPcGVuKHZhbHVlOiBib29sZWFuKSB7XHJcbiAgICBpZiAodmFsdWUpIHtcclxuICAgICAgdGhpcy5fc2hvdygpO1xyXG4gICAgICBpZiAodGhpcy5pc0VuYWJsZWQgJiYgdGhpcy5faXNPcGVuID09PSBmYWxzZSkge1xyXG4gICAgICAgIHRoaXMuX2FuaW1hdGVPcGVuKCk7XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuaXNFbmFibGVkID8gdGhpcy5fYW5pbWF0ZUNsb3NlKCkgOiB0aGlzLl9oaWRlKCk7XHJcbiAgICB9XHJcbiAgICB0aGlzLl9pc09wZW4gPSAhIXZhbHVlO1xyXG4gIH07XHJcblxyXG4gIHByaXZhdGUgaW5uZXJFbGVtZW50OiBhbnk7XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSByZW5kZXJlcjogUmVuZGVyZXIyLFxyXG4gICAgcHJpdmF0ZSB0ZW1wbGF0ZVJlZjogVGVtcGxhdGVSZWY8YW55PixcclxuICAgIHByaXZhdGUgdmlld0NvbnRhaW5lclJlZjogVmlld0NvbnRhaW5lclJlZikge1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfc2hvdygpIHtcclxuICAgIGlmICh0aGlzLmlubmVyRWxlbWVudCkgcmV0dXJuO1xyXG5cclxuICAgIC8vIGNyZWF0ZSBjaGlsZCB2aWV3XHJcbiAgICB0aGlzLmlubmVyRWxlbWVudCA9IHRoaXMudmlld0NvbnRhaW5lclJlZi5jcmVhdGVFbWJlZGRlZFZpZXcodGhpcy50ZW1wbGF0ZVJlZikucm9vdE5vZGVzWzBdO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfaGlkZSgpIHtcclxuICAgIHRoaXMudmlld0NvbnRhaW5lclJlZi5jbGVhcigpO1xyXG4gICAgdGhpcy5pbm5lckVsZW1lbnQgPSBudWxsO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfYW5pbWF0ZU9wZW4oKSB7XHJcbiAgICBsZXQgZGVsdGEgPSB0aGlzLmFuaW1hdGVTcGVlZDtcclxuICAgIGxldCBlYXNlID0gdGhpcy5hbmltYXRlQWNjZWxlcmF0aW9uO1xyXG4gICAgbGV0IG1heEhlaWdodCA9IDA7XHJcblxyXG4gICAgLy8gc2V0IGhlaWdodCB0byAwXHJcbiAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKHRoaXMuaW5uZXJFbGVtZW50LCAnbWF4LWhlaWdodCcsIGAwYCk7XHJcblxyXG4gICAgLy8gaW5jcmVhc2UgbWF4SGVpZ2h0IHVudGlsIGhlaWdodCBkb2Vzbid0IGNoYW5nZVxyXG4gICAgc2V0VGltZW91dCgoKSA9PiB7IC8vIEFsbG93IGlubmVyIGVsZW1lbnQgdG8gY3JlYXRlIGl0cyBjb250ZW50XHJcbiAgICAgIGNvbnN0IGkgPSBzZXRJbnRlcnZhbCgoKSA9PiB7XHJcbiAgICAgICAgaWYgKCF0aGlzLl9pc09wZW4gfHwgIXRoaXMuaW5uZXJFbGVtZW50KSByZXR1cm4gY2xlYXJJbnRlcnZhbChpKTtcclxuXHJcbiAgICAgICAgbWF4SGVpZ2h0ICs9IGRlbHRhO1xyXG4gICAgICAgIGNvbnN0IHJvdW5kZWRNYXhIZWlnaHQgPSBNYXRoLnJvdW5kKG1heEhlaWdodCk7XHJcblxyXG4gICAgICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUodGhpcy5pbm5lckVsZW1lbnQsICdtYXgtaGVpZ2h0JywgYCR7cm91bmRlZE1heEhlaWdodH1weGApO1xyXG4gICAgICAgIGNvbnN0IGhlaWdodCA9IHRoaXMuaW5uZXJFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCA/IHRoaXMuaW5uZXJFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLmhlaWdodCA6IDA7IC8vIFRCRCB1c2UgcmVuZGVyZXJcclxuXHJcbiAgICAgICAgZGVsdGEgKj0gZWFzZTtcclxuICAgICAgICBlYXNlICo9IEVBU0VfQUNDRUxFUkFUSU9OO1xyXG4gICAgICAgIGlmIChoZWlnaHQgPCByb3VuZGVkTWF4SGVpZ2h0KSB7XHJcbiAgICAgICAgICAvLyBNYWtlIG1heEhlaWdodCBhdXRvIGJlY2F1c2UgYW5pbWF0aW9uIGZpbmlzaGVkIGFuZCBjb250YWluZXIgbWlnaHQgY2hhbmdlIGhlaWdodCBsYXRlciBvblxyXG4gICAgICAgICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZSh0aGlzLmlubmVyRWxlbWVudCwgJ21heC1oZWlnaHQnLCBudWxsKTtcclxuICAgICAgICAgIGNsZWFySW50ZXJ2YWwoaSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9LCAxNyk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgX2FuaW1hdGVDbG9zZSgpIHtcclxuICAgIGlmICghdGhpcy5pbm5lckVsZW1lbnQpIHJldHVybjtcclxuXHJcbiAgICBsZXQgZGVsdGEgPSB0aGlzLmFuaW1hdGVTcGVlZDtcclxuICAgIGxldCBlYXNlID0gdGhpcy5hbmltYXRlQWNjZWxlcmF0aW9uO1xyXG4gICAgbGV0IGhlaWdodCA9IHRoaXMuaW5uZXJFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLmhlaWdodDsgLy8gVEJEIHVzZSByZW5kZXJlclxyXG5cclxuICAgIC8vIHNsb3dseSBkZWNyZWFzZSBtYXhIZWlnaHQgdG8gMCwgc3RhcnRpbmcgZnJvbSBjdXJyZW50IGhlaWdodFxyXG4gICAgY29uc3QgaSA9IHNldEludGVydmFsKCgpID0+IHtcclxuICAgICAgaWYgKHRoaXMuX2lzT3BlbiB8fCAhdGhpcy5pbm5lckVsZW1lbnQpIHJldHVybiBjbGVhckludGVydmFsKGkpO1xyXG5cclxuICAgICAgaGVpZ2h0IC09IGRlbHRhO1xyXG4gICAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKHRoaXMuaW5uZXJFbGVtZW50LCAnbWF4LWhlaWdodCcsIGAke2hlaWdodH1weGApO1xyXG4gICAgICBkZWx0YSAqPSBlYXNlO1xyXG4gICAgICBlYXNlICo9IEVBU0VfQUNDRUxFUkFUSU9OO1xyXG5cclxuICAgICAgaWYgKGhlaWdodCA8PSAwKSB7XHJcbiAgICAgICAgLy8gYWZ0ZXIgYW5pbWF0aW9uIGNvbXBsZXRlIC0gcmVtb3ZlIGNoaWxkIGVsZW1lbnRcclxuICAgICAgICB0aGlzLnZpZXdDb250YWluZXJSZWYuY2xlYXIoKTtcclxuICAgICAgICB0aGlzLmlubmVyRWxlbWVudCA9IG51bGw7XHJcbiAgICAgICAgY2xlYXJJbnRlcnZhbChpKTtcclxuICAgICAgfVxyXG4gICAgfSwgMTcpO1xyXG4gIH1cclxufVxyXG4iXX0=
@@ -1,65 +1,65 @@
1
- import { Directive, HostListener, Input } from '@angular/core';
2
- import * as i0 from "@angular/core";
3
- import * as i1 from "../models/tree-dragged-element.model";
4
- const DRAG_OVER_CLASS = 'is-dragging-over';
5
- export class TreeDragDirective {
6
- constructor(el, renderer, treeDraggedElement, ngZone) {
7
- this.el = el;
8
- this.renderer = renderer;
9
- this.treeDraggedElement = treeDraggedElement;
10
- this.ngZone = ngZone;
11
- this.dragEventHandler = this.onDrag.bind(this);
12
- }
13
- ngAfterViewInit() {
14
- let el = this.el.nativeElement;
15
- this.ngZone.runOutsideAngular(() => {
16
- el.addEventListener('drag', this.dragEventHandler);
17
- });
18
- }
19
- ngDoCheck() {
20
- this.renderer.setAttribute(this.el.nativeElement, 'draggable', this.treeDragEnabled ? 'true' : 'false');
21
- }
22
- ngOnDestroy() {
23
- let el = this.el.nativeElement;
24
- el.removeEventListener('drag', this.dragEventHandler);
25
- }
26
- onDragStart(ev) {
27
- // setting the data is required by firefox
28
- ev.dataTransfer.setData('text', ev.target.id);
29
- this.treeDraggedElement.set(this.draggedElement);
30
- if (this.draggedElement.mouseAction) {
31
- this.draggedElement.mouseAction('dragStart', ev);
32
- }
33
- }
34
- onDrag(ev) {
35
- if (this.draggedElement.mouseAction) {
36
- this.draggedElement.mouseAction('drag', ev);
37
- }
38
- }
39
- onDragEnd() {
40
- if (this.draggedElement.mouseAction) {
41
- this.draggedElement.mouseAction('dragEnd');
42
- }
43
- this.treeDraggedElement.set(null);
44
- }
45
- /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TreeDragDirective, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }, { token: i1.TreeDraggedElement }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Directive }); }
46
- /** @nocollapse */ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.12", type: TreeDragDirective, selector: "[treeDrag]", inputs: { draggedElement: ["treeDrag", "draggedElement"], treeDragEnabled: "treeDragEnabled" }, host: { listeners: { "dragstart": "onDragStart($event)", "dragend": "onDragEnd()" } }, ngImport: i0 }); }
47
- }
48
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TreeDragDirective, decorators: [{
49
- type: Directive,
50
- args: [{
51
- selector: '[treeDrag]'
52
- }]
53
- }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.Renderer2 }, { type: i1.TreeDraggedElement }, { type: i0.NgZone }]; }, propDecorators: { draggedElement: [{
54
- type: Input,
55
- args: ['treeDrag']
56
- }], treeDragEnabled: [{
57
- type: Input
58
- }], onDragStart: [{
59
- type: HostListener,
60
- args: ['dragstart', ['$event']]
61
- }], onDragEnd: [{
62
- type: HostListener,
63
- args: ['dragend']
64
- }] } });
65
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJlZS1kcmFnLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FuZ3VsYXItdHJlZS1jb21wb25lbnQvc3JjL2xpYi9kaXJlY3RpdmVzL3RyZWUtZHJhZy5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFpQixTQUFTLEVBQXVCLFlBQVksRUFBRSxLQUFLLEVBQWdDLE1BQU0sZUFBZSxDQUFDOzs7QUFHakksTUFBTSxlQUFlLEdBQUcsa0JBQWtCLENBQUM7QUFLM0MsTUFBTSxPQUFPLGlCQUFpQjtJQUs1QixZQUFvQixFQUFjLEVBQVUsUUFBbUIsRUFBVSxrQkFBc0MsRUFBVSxNQUFjO1FBQW5ILE9BQUUsR0FBRixFQUFFLENBQVk7UUFBVSxhQUFRLEdBQVIsUUFBUSxDQUFXO1FBQVUsdUJBQWtCLEdBQWxCLGtCQUFrQixDQUFvQjtRQUFVLFdBQU0sR0FBTixNQUFNLENBQVE7UUFDckksSUFBSSxDQUFDLGdCQUFnQixHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ2pELENBQUM7SUFFRCxlQUFlO1FBQ2IsSUFBSSxFQUFFLEdBQWdCLElBQUksQ0FBQyxFQUFFLENBQUMsYUFBYSxDQUFDO1FBQzVDLElBQUksQ0FBQyxNQUFNLENBQUMsaUJBQWlCLENBQUMsR0FBRyxFQUFFO1lBQ2pDLEVBQUUsQ0FBQyxnQkFBZ0IsQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLGdCQUFnQixDQUFDLENBQUM7UUFDckQsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsU0FBUztRQUNQLElBQUksQ0FBQyxRQUFRLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsYUFBYSxFQUFFLFdBQVcsRUFBRSxJQUFJLENBQUMsZUFBZSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQzFHLENBQUM7SUFFRCxXQUFXO1FBQ1QsSUFBSSxFQUFFLEdBQWdCLElBQUksQ0FBQyxFQUFFLENBQUMsYUFBYSxDQUFDO1FBQzVDLEVBQUUsQ0FBQyxtQkFBbUIsQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLGdCQUFnQixDQUFDLENBQUM7SUFDeEQsQ0FBQztJQUVzQyxXQUFXLENBQUMsRUFBRTtRQUNuRCwwQ0FBMEM7UUFDMUMsRUFBRSxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDOUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUM7UUFDakQsSUFBSSxJQUFJLENBQUMsY0FBYyxDQUFDLFdBQVcsRUFBRTtZQUNuQyxJQUFJLENBQUMsY0FBYyxDQUFDLFdBQVcsQ0FBQyxXQUFXLEVBQUUsRUFBRSxDQUFDLENBQUM7U0FDbEQ7SUFDSCxDQUFDO0lBRUQsTUFBTSxDQUFDLEVBQUU7UUFDUCxJQUFJLElBQUksQ0FBQyxjQUFjLENBQUMsV0FBVyxFQUFFO1lBQ25DLElBQUksQ0FBQyxjQUFjLENBQUMsV0FBVyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsQ0FBQztTQUM3QztJQUNILENBQUM7SUFFd0IsU0FBUztRQUNoQyxJQUFJLElBQUksQ0FBQyxjQUFjLENBQUMsV0FBVyxFQUFFO1lBQ25DLElBQUksQ0FBQyxjQUFjLENBQUMsV0FBVyxDQUFDLFNBQVMsQ0FBQyxDQUFDO1NBQzVDO1FBQ0QsSUFBSSxDQUFDLGtCQUFrQixDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNwQyxDQUFDO2tJQTdDVSxpQkFBaUI7c0hBQWpCLGlCQUFpQjs7NEZBQWpCLGlCQUFpQjtrQkFIN0IsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsWUFBWTtpQkFDdkI7K0tBRW9CLGNBQWM7c0JBQWhDLEtBQUs7dUJBQUMsVUFBVTtnQkFDUixlQUFlO3NCQUF2QixLQUFLO2dCQXVCaUMsV0FBVztzQkFBakQsWUFBWTt1QkFBQyxXQUFXLEVBQUUsQ0FBQyxRQUFRLENBQUM7Z0JBZVosU0FBUztzQkFBakMsWUFBWTt1QkFBQyxTQUFTIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQWZ0ZXJWaWV3SW5pdCwgRGlyZWN0aXZlLCBEb0NoZWNrLCBFbGVtZW50UmVmLCBIb3N0TGlzdGVuZXIsIElucHV0LCBOZ1pvbmUsIE9uRGVzdHJveSwgUmVuZGVyZXIyIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IFRyZWVEcmFnZ2VkRWxlbWVudCB9IGZyb20gJy4uL21vZGVscy90cmVlLWRyYWdnZWQtZWxlbWVudC5tb2RlbCc7XHJcblxyXG5jb25zdCBEUkFHX09WRVJfQ0xBU1MgPSAnaXMtZHJhZ2dpbmctb3Zlcic7XHJcblxyXG5ARGlyZWN0aXZlKHtcclxuICBzZWxlY3RvcjogJ1t0cmVlRHJhZ10nXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBUcmVlRHJhZ0RpcmVjdGl2ZSBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQsIERvQ2hlY2ssIE9uRGVzdHJveSB7XHJcbiAgQElucHV0KCd0cmVlRHJhZycpIGRyYWdnZWRFbGVtZW50O1xyXG4gIEBJbnB1dCgpIHRyZWVEcmFnRW5hYmxlZDtcclxuICBwcml2YXRlIHJlYWRvbmx5IGRyYWdFdmVudEhhbmRsZXI6IChldjogRHJhZ0V2ZW50KSA9PiB2b2lkO1xyXG5cclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGVsOiBFbGVtZW50UmVmLCBwcml2YXRlIHJlbmRlcmVyOiBSZW5kZXJlcjIsIHByaXZhdGUgdHJlZURyYWdnZWRFbGVtZW50OiBUcmVlRHJhZ2dlZEVsZW1lbnQsIHByaXZhdGUgbmdab25lOiBOZ1pvbmUpIHtcclxuICAgIHRoaXMuZHJhZ0V2ZW50SGFuZGxlciA9IHRoaXMub25EcmFnLmJpbmQodGhpcyk7XHJcbiAgfVxyXG5cclxuICBuZ0FmdGVyVmlld0luaXQoKSB7XHJcbiAgICBsZXQgZWw6IEhUTUxFbGVtZW50ID0gdGhpcy5lbC5uYXRpdmVFbGVtZW50O1xyXG4gICAgdGhpcy5uZ1pvbmUucnVuT3V0c2lkZUFuZ3VsYXIoKCkgPT4ge1xyXG4gICAgICBlbC5hZGRFdmVudExpc3RlbmVyKCdkcmFnJywgdGhpcy5kcmFnRXZlbnRIYW5kbGVyKTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgbmdEb0NoZWNrKCkge1xyXG4gICAgdGhpcy5yZW5kZXJlci5zZXRBdHRyaWJ1dGUodGhpcy5lbC5uYXRpdmVFbGVtZW50LCAnZHJhZ2dhYmxlJywgdGhpcy50cmVlRHJhZ0VuYWJsZWQgPyAndHJ1ZScgOiAnZmFsc2UnKTtcclxuICB9XHJcblxyXG4gIG5nT25EZXN0cm95KCkge1xyXG4gICAgbGV0IGVsOiBIVE1MRWxlbWVudCA9IHRoaXMuZWwubmF0aXZlRWxlbWVudDtcclxuICAgIGVsLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2RyYWcnLCB0aGlzLmRyYWdFdmVudEhhbmRsZXIpO1xyXG4gIH1cclxuXHJcbiAgQEhvc3RMaXN0ZW5lcignZHJhZ3N0YXJ0JywgWyckZXZlbnQnXSkgb25EcmFnU3RhcnQoZXYpIHtcclxuICAgIC8vIHNldHRpbmcgdGhlIGRhdGEgaXMgcmVxdWlyZWQgYnkgZmlyZWZveFxyXG4gICAgZXYuZGF0YVRyYW5zZmVyLnNldERhdGEoJ3RleHQnLCBldi50YXJnZXQuaWQpO1xyXG4gICAgdGhpcy50cmVlRHJhZ2dlZEVsZW1lbnQuc2V0KHRoaXMuZHJhZ2dlZEVsZW1lbnQpO1xyXG4gICAgaWYgKHRoaXMuZHJhZ2dlZEVsZW1lbnQubW91c2VBY3Rpb24pIHtcclxuICAgICAgdGhpcy5kcmFnZ2VkRWxlbWVudC5tb3VzZUFjdGlvbignZHJhZ1N0YXJ0JywgZXYpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgb25EcmFnKGV2KSB7XHJcbiAgICBpZiAodGhpcy5kcmFnZ2VkRWxlbWVudC5tb3VzZUFjdGlvbikge1xyXG4gICAgICB0aGlzLmRyYWdnZWRFbGVtZW50Lm1vdXNlQWN0aW9uKCdkcmFnJywgZXYpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgQEhvc3RMaXN0ZW5lcignZHJhZ2VuZCcpIG9uRHJhZ0VuZCgpIHtcclxuICAgIGlmICh0aGlzLmRyYWdnZWRFbGVtZW50Lm1vdXNlQWN0aW9uKSB7XHJcbiAgICAgIHRoaXMuZHJhZ2dlZEVsZW1lbnQubW91c2VBY3Rpb24oJ2RyYWdFbmQnKTtcclxuICAgIH1cclxuICAgIHRoaXMudHJlZURyYWdnZWRFbGVtZW50LnNldChudWxsKTtcclxuICB9XHJcbn1cclxuIl19
1
+ import { Directive, HostListener, Input } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ import * as i1 from "../models/tree-dragged-element.model";
4
+ const DRAG_OVER_CLASS = 'is-dragging-over';
5
+ export class TreeDragDirective {
6
+ constructor(el, renderer, treeDraggedElement, ngZone) {
7
+ this.el = el;
8
+ this.renderer = renderer;
9
+ this.treeDraggedElement = treeDraggedElement;
10
+ this.ngZone = ngZone;
11
+ this.dragEventHandler = this.onDrag.bind(this);
12
+ }
13
+ ngAfterViewInit() {
14
+ let el = this.el.nativeElement;
15
+ this.ngZone.runOutsideAngular(() => {
16
+ el.addEventListener('drag', this.dragEventHandler);
17
+ });
18
+ }
19
+ ngDoCheck() {
20
+ this.renderer.setAttribute(this.el.nativeElement, 'draggable', this.treeDragEnabled ? 'true' : 'false');
21
+ }
22
+ ngOnDestroy() {
23
+ let el = this.el.nativeElement;
24
+ el.removeEventListener('drag', this.dragEventHandler);
25
+ }
26
+ onDragStart(ev) {
27
+ // setting the data is required by firefox
28
+ ev.dataTransfer.setData('text', ev.target.id);
29
+ this.treeDraggedElement.set(this.draggedElement);
30
+ if (this.draggedElement.mouseAction) {
31
+ this.draggedElement.mouseAction('dragStart', ev);
32
+ }
33
+ }
34
+ onDrag(ev) {
35
+ if (this.draggedElement.mouseAction) {
36
+ this.draggedElement.mouseAction('drag', ev);
37
+ }
38
+ }
39
+ onDragEnd() {
40
+ if (this.draggedElement.mouseAction) {
41
+ this.draggedElement.mouseAction('dragEnd');
42
+ }
43
+ this.treeDraggedElement.set(null);
44
+ }
45
+ /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: TreeDragDirective, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }, { token: i1.TreeDraggedElement }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Directive }); }
46
+ /** @nocollapse */ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.3.12", type: TreeDragDirective, selector: "[treeDrag]", inputs: { draggedElement: ["treeDrag", "draggedElement"], treeDragEnabled: "treeDragEnabled" }, host: { listeners: { "dragstart": "onDragStart($event)", "dragend": "onDragEnd()" } }, ngImport: i0 }); }
47
+ }
48
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: TreeDragDirective, decorators: [{
49
+ type: Directive,
50
+ args: [{
51
+ selector: '[treeDrag]'
52
+ }]
53
+ }], ctorParameters: () => [{ type: i0.ElementRef }, { type: i0.Renderer2 }, { type: i1.TreeDraggedElement }, { type: i0.NgZone }], propDecorators: { draggedElement: [{
54
+ type: Input,
55
+ args: ['treeDrag']
56
+ }], treeDragEnabled: [{
57
+ type: Input
58
+ }], onDragStart: [{
59
+ type: HostListener,
60
+ args: ['dragstart', ['$event']]
61
+ }], onDragEnd: [{
62
+ type: HostListener,
63
+ args: ['dragend']
64
+ }] } });
65
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJlZS1kcmFnLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FuZ3VsYXItdHJlZS1jb21wb25lbnQvc3JjL2xpYi9kaXJlY3RpdmVzL3RyZWUtZHJhZy5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFpQixTQUFTLEVBQXVCLFlBQVksRUFBRSxLQUFLLEVBQWdDLE1BQU0sZUFBZSxDQUFDOzs7QUFHakksTUFBTSxlQUFlLEdBQUcsa0JBQWtCLENBQUM7QUFLM0MsTUFBTSxPQUFPLGlCQUFpQjtJQUs1QixZQUFvQixFQUFjLEVBQVUsUUFBbUIsRUFBVSxrQkFBc0MsRUFBVSxNQUFjO1FBQW5ILE9BQUUsR0FBRixFQUFFLENBQVk7UUFBVSxhQUFRLEdBQVIsUUFBUSxDQUFXO1FBQVUsdUJBQWtCLEdBQWxCLGtCQUFrQixDQUFvQjtRQUFVLFdBQU0sR0FBTixNQUFNLENBQVE7UUFDckksSUFBSSxDQUFDLGdCQUFnQixHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ2pELENBQUM7SUFFRCxlQUFlO1FBQ2IsSUFBSSxFQUFFLEdBQWdCLElBQUksQ0FBQyxFQUFFLENBQUMsYUFBYSxDQUFDO1FBQzVDLElBQUksQ0FBQyxNQUFNLENBQUMsaUJBQWlCLENBQUMsR0FBRyxFQUFFO1lBQ2pDLEVBQUUsQ0FBQyxnQkFBZ0IsQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLGdCQUFnQixDQUFDLENBQUM7UUFDckQsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsU0FBUztRQUNQLElBQUksQ0FBQyxRQUFRLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsYUFBYSxFQUFFLFdBQVcsRUFBRSxJQUFJLENBQUMsZUFBZSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQzFHLENBQUM7SUFFRCxXQUFXO1FBQ1QsSUFBSSxFQUFFLEdBQWdCLElBQUksQ0FBQyxFQUFFLENBQUMsYUFBYSxDQUFDO1FBQzVDLEVBQUUsQ0FBQyxtQkFBbUIsQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLGdCQUFnQixDQUFDLENBQUM7SUFDeEQsQ0FBQztJQUVzQyxXQUFXLENBQUMsRUFBRTtRQUNuRCwwQ0FBMEM7UUFDMUMsRUFBRSxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDOUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUM7UUFDakQsSUFBSSxJQUFJLENBQUMsY0FBYyxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBQ3BDLElBQUksQ0FBQyxjQUFjLENBQUMsV0FBVyxDQUFDLFdBQVcsRUFBRSxFQUFFLENBQUMsQ0FBQztRQUNuRCxDQUFDO0lBQ0gsQ0FBQztJQUVELE1BQU0sQ0FBQyxFQUFFO1FBQ1AsSUFBSSxJQUFJLENBQUMsY0FBYyxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBQ3BDLElBQUksQ0FBQyxjQUFjLENBQUMsV0FBVyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsQ0FBQztRQUM5QyxDQUFDO0lBQ0gsQ0FBQztJQUV3QixTQUFTO1FBQ2hDLElBQUksSUFBSSxDQUFDLGNBQWMsQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUNwQyxJQUFJLENBQUMsY0FBYyxDQUFDLFdBQVcsQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUM3QyxDQUFDO1FBQ0QsSUFBSSxDQUFDLGtCQUFrQixDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNwQyxDQUFDO2tJQTdDVSxpQkFBaUI7c0hBQWpCLGlCQUFpQjs7NEZBQWpCLGlCQUFpQjtrQkFIN0IsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsWUFBWTtpQkFDdkI7NkpBRW9CLGNBQWM7c0JBQWhDLEtBQUs7dUJBQUMsVUFBVTtnQkFDUixlQUFlO3NCQUF2QixLQUFLO2dCQXVCaUMsV0FBVztzQkFBakQsWUFBWTt1QkFBQyxXQUFXLEVBQUUsQ0FBQyxRQUFRLENBQUM7Z0JBZVosU0FBUztzQkFBakMsWUFBWTt1QkFBQyxTQUFTIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQWZ0ZXJWaWV3SW5pdCwgRGlyZWN0aXZlLCBEb0NoZWNrLCBFbGVtZW50UmVmLCBIb3N0TGlzdGVuZXIsIElucHV0LCBOZ1pvbmUsIE9uRGVzdHJveSwgUmVuZGVyZXIyIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IFRyZWVEcmFnZ2VkRWxlbWVudCB9IGZyb20gJy4uL21vZGVscy90cmVlLWRyYWdnZWQtZWxlbWVudC5tb2RlbCc7XHJcblxyXG5jb25zdCBEUkFHX09WRVJfQ0xBU1MgPSAnaXMtZHJhZ2dpbmctb3Zlcic7XHJcblxyXG5ARGlyZWN0aXZlKHtcclxuICBzZWxlY3RvcjogJ1t0cmVlRHJhZ10nXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBUcmVlRHJhZ0RpcmVjdGl2ZSBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQsIERvQ2hlY2ssIE9uRGVzdHJveSB7XHJcbiAgQElucHV0KCd0cmVlRHJhZycpIGRyYWdnZWRFbGVtZW50O1xyXG4gIEBJbnB1dCgpIHRyZWVEcmFnRW5hYmxlZDtcclxuICBwcml2YXRlIHJlYWRvbmx5IGRyYWdFdmVudEhhbmRsZXI6IChldjogRHJhZ0V2ZW50KSA9PiB2b2lkO1xyXG5cclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGVsOiBFbGVtZW50UmVmLCBwcml2YXRlIHJlbmRlcmVyOiBSZW5kZXJlcjIsIHByaXZhdGUgdHJlZURyYWdnZWRFbGVtZW50OiBUcmVlRHJhZ2dlZEVsZW1lbnQsIHByaXZhdGUgbmdab25lOiBOZ1pvbmUpIHtcclxuICAgIHRoaXMuZHJhZ0V2ZW50SGFuZGxlciA9IHRoaXMub25EcmFnLmJpbmQodGhpcyk7XHJcbiAgfVxyXG5cclxuICBuZ0FmdGVyVmlld0luaXQoKSB7XHJcbiAgICBsZXQgZWw6IEhUTUxFbGVtZW50ID0gdGhpcy5lbC5uYXRpdmVFbGVtZW50O1xyXG4gICAgdGhpcy5uZ1pvbmUucnVuT3V0c2lkZUFuZ3VsYXIoKCkgPT4ge1xyXG4gICAgICBlbC5hZGRFdmVudExpc3RlbmVyKCdkcmFnJywgdGhpcy5kcmFnRXZlbnRIYW5kbGVyKTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgbmdEb0NoZWNrKCkge1xyXG4gICAgdGhpcy5yZW5kZXJlci5zZXRBdHRyaWJ1dGUodGhpcy5lbC5uYXRpdmVFbGVtZW50LCAnZHJhZ2dhYmxlJywgdGhpcy50cmVlRHJhZ0VuYWJsZWQgPyAndHJ1ZScgOiAnZmFsc2UnKTtcclxuICB9XHJcblxyXG4gIG5nT25EZXN0cm95KCkge1xyXG4gICAgbGV0IGVsOiBIVE1MRWxlbWVudCA9IHRoaXMuZWwubmF0aXZlRWxlbWVudDtcclxuICAgIGVsLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2RyYWcnLCB0aGlzLmRyYWdFdmVudEhhbmRsZXIpO1xyXG4gIH1cclxuXHJcbiAgQEhvc3RMaXN0ZW5lcignZHJhZ3N0YXJ0JywgWyckZXZlbnQnXSkgb25EcmFnU3RhcnQoZXYpIHtcclxuICAgIC8vIHNldHRpbmcgdGhlIGRhdGEgaXMgcmVxdWlyZWQgYnkgZmlyZWZveFxyXG4gICAgZXYuZGF0YVRyYW5zZmVyLnNldERhdGEoJ3RleHQnLCBldi50YXJnZXQuaWQpO1xyXG4gICAgdGhpcy50cmVlRHJhZ2dlZEVsZW1lbnQuc2V0KHRoaXMuZHJhZ2dlZEVsZW1lbnQpO1xyXG4gICAgaWYgKHRoaXMuZHJhZ2dlZEVsZW1lbnQubW91c2VBY3Rpb24pIHtcclxuICAgICAgdGhpcy5kcmFnZ2VkRWxlbWVudC5tb3VzZUFjdGlvbignZHJhZ1N0YXJ0JywgZXYpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgb25EcmFnKGV2KSB7XHJcbiAgICBpZiAodGhpcy5kcmFnZ2VkRWxlbWVudC5tb3VzZUFjdGlvbikge1xyXG4gICAgICB0aGlzLmRyYWdnZWRFbGVtZW50Lm1vdXNlQWN0aW9uKCdkcmFnJywgZXYpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgQEhvc3RMaXN0ZW5lcignZHJhZ2VuZCcpIG9uRHJhZ0VuZCgpIHtcclxuICAgIGlmICh0aGlzLmRyYWdnZWRFbGVtZW50Lm1vdXNlQWN0aW9uKSB7XHJcbiAgICAgIHRoaXMuZHJhZ2dlZEVsZW1lbnQubW91c2VBY3Rpb24oJ2RyYWdFbmQnKTtcclxuICAgIH1cclxuICAgIHRoaXMudHJlZURyYWdnZWRFbGVtZW50LnNldChudWxsKTtcclxuICB9XHJcbn1cclxuIl19