ngx-edu-sharing-ui 10.0.21 → 10.0.23

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 (131) hide show
  1. package/assets/scss/material-theme.scss +3 -3
  2. package/assets/scss/mixins.scss +1 -1
  3. package/assets/scss/variables-root.scss +2 -0
  4. package/assets/scss/variables-scss.scss +3 -4
  5. package/assets/scss/variables.scss +1 -1
  6. package/fesm2022/ngx-edu-sharing-ui.mjs +376 -319
  7. package/fesm2022/ngx-edu-sharing-ui.mjs.map +1 -1
  8. package/lib/index.d.ts +1 -0
  9. package/lib/list-items/list-widget.d.ts +1 -1
  10. package/lib/mds-viewer/mds-editor-instance-service.abstract.d.ts +14 -0
  11. package/lib/mds-viewer/widget/mds-widget.component.d.ts +6 -4
  12. package/package.json +6 -8
  13. package/esm2022/lib/actionbar/actionbar.component.mjs +0 -206
  14. package/esm2022/lib/common/edu-sharing-ui-common.module.mjs +0 -170
  15. package/esm2022/lib/directives/border-box-observer.directive.mjs +0 -71
  16. package/esm2022/lib/directives/check-text-overflow.directive.mjs +0 -71
  17. package/esm2022/lib/directives/drag-nodes/drag-nodes.mjs +0 -14
  18. package/esm2022/lib/directives/drag-nodes/nodes-drag-source.directive.mjs +0 -79
  19. package/esm2022/lib/directives/drag-nodes/nodes-drag.directive.mjs +0 -49
  20. package/esm2022/lib/directives/drag-nodes/nodes-drop-target.directive.mjs +0 -105
  21. package/esm2022/lib/directives/focus-state.directive.mjs +0 -44
  22. package/esm2022/lib/directives/icon.directive.mjs +0 -184
  23. package/esm2022/lib/directives/infinite-scroll.directive.mjs +0 -85
  24. package/esm2022/lib/dropdown/dropdown.component.mjs +0 -83
  25. package/esm2022/lib/edu-sharing-ui-configuration.mjs +0 -48
  26. package/esm2022/lib/edu-sharing-ui.module.mjs +0 -82
  27. package/esm2022/lib/index.mjs +0 -96
  28. package/esm2022/lib/list-items/available-widgets.mjs +0 -27
  29. package/esm2022/lib/list-items/format-duration.pipe.mjs +0 -20
  30. package/esm2022/lib/list-items/list-base/list-base.component.mjs +0 -46
  31. package/esm2022/lib/list-items/list-collection-info/list-collection-info.component.mjs +0 -29
  32. package/esm2022/lib/list-items/list-counts/list-counts.component.mjs +0 -56
  33. package/esm2022/lib/list-items/list-items.module.mjs +0 -50
  34. package/esm2022/lib/list-items/list-node-license/list-node-license.component.mjs +0 -41
  35. package/esm2022/lib/list-items/list-node-replication-source/list-node-replication-source.component.mjs +0 -47
  36. package/esm2022/lib/list-items/list-node-workflow/list-node-workflow.component.mjs +0 -24
  37. package/esm2022/lib/list-items/list-text/list-text.component.mjs +0 -106
  38. package/esm2022/lib/list-items/list-widget.mjs +0 -49
  39. package/esm2022/lib/list-items/node-row/node-row.component.mjs +0 -24
  40. package/esm2022/lib/list-items/node-source.pipe.mjs +0 -49
  41. package/esm2022/lib/mds/mds-helper.service.mjs +0 -167
  42. package/esm2022/lib/mds/mds.module.mjs +0 -16
  43. package/esm2022/lib/mds-viewer/mds-viewer.component.mjs +0 -170
  44. package/esm2022/lib/mds-viewer/mds-viewer.service.mjs +0 -18
  45. package/esm2022/lib/mds-viewer/replace-element-with-div.mjs +0 -47
  46. package/esm2022/lib/mds-viewer/view-instance.service.mjs +0 -27
  47. package/esm2022/lib/mds-viewer/widget/mds-widget.component.mjs +0 -379
  48. package/esm2022/lib/node-entries/combined-data-source.mjs +0 -41
  49. package/esm2022/lib/node-entries/custom-templates-data-source.mjs +0 -7
  50. package/esm2022/lib/node-entries/drag-preview/drag-preview.component.mjs +0 -21
  51. package/esm2022/lib/node-entries/entries-model.mjs +0 -24
  52. package/esm2022/lib/node-entries/items-cap.mjs +0 -47
  53. package/esm2022/lib/node-entries/list-item-label.pipe.mjs +0 -37
  54. package/esm2022/lib/node-entries/node-cache.mjs +0 -73
  55. package/esm2022/lib/node-entries/node-data-source-remote.mjs +0 -4
  56. package/esm2022/lib/node-entries/node-data-source.mjs +0 -117
  57. package/esm2022/lib/node-entries/node-entries-card/node-entries-card.component.mjs +0 -117
  58. package/esm2022/lib/node-entries/node-entries-card-grid/node-entries-card-grid.component.mjs +0 -329
  59. package/esm2022/lib/node-entries/node-entries-card-small/node-entries-card-small.component.mjs +0 -44
  60. package/esm2022/lib/node-entries/node-entries-global-options/node-entries-global-options.component.mjs +0 -27
  61. package/esm2022/lib/node-entries/node-entries-global.service.mjs +0 -71
  62. package/esm2022/lib/node-entries/node-entries-table/column-chooser/column-chooser.component.mjs +0 -42
  63. package/esm2022/lib/node-entries/node-entries-table/node-entries-table.component.mjs +0 -294
  64. package/esm2022/lib/node-entries/node-entries-templates.service.mjs +0 -11
  65. package/esm2022/lib/node-entries/node-entries-wrapper.component.mjs +0 -369
  66. package/esm2022/lib/node-entries/node-entries.component.mjs +0 -132
  67. package/esm2022/lib/node-entries/node-entries.module.mjs +0 -161
  68. package/esm2022/lib/node-entries/node-rating/node-rating.component.mjs +0 -125
  69. package/esm2022/lib/node-entries/node-stats-badges/node-stats-badges.component.mjs +0 -48
  70. package/esm2022/lib/node-entries/node-type-badge/node-type-badge.component.mjs +0 -36
  71. package/esm2022/lib/node-entries/option-button/option-button.component.mjs +0 -75
  72. package/esm2022/lib/node-entries/preview-image/preview-image.component.mjs +0 -53
  73. package/esm2022/lib/node-entries/sort-select-panel/sort-select-panel.component.mjs +0 -41
  74. package/esm2022/lib/node-url/node-url.component.mjs +0 -132
  75. package/esm2022/lib/pipes/file-size.pipe.mjs +0 -32
  76. package/esm2022/lib/pipes/format-date.pipe.mjs +0 -38
  77. package/esm2022/lib/pipes/mds-duration.pipe.mjs +0 -25
  78. package/esm2022/lib/pipes/node-icon.pipe.mjs +0 -18
  79. package/esm2022/lib/pipes/node-image-size.pipe.mjs +0 -24
  80. package/esm2022/lib/pipes/node-image.pipe.mjs +0 -55
  81. package/esm2022/lib/pipes/node-license.pipe.mjs +0 -24
  82. package/esm2022/lib/pipes/node-person-name.pipe.mjs +0 -50
  83. package/esm2022/lib/pipes/node-title.pipe.mjs +0 -35
  84. package/esm2022/lib/pipes/option-tooltip.pipe.mjs +0 -33
  85. package/esm2022/lib/pipes/property-slug.pipe.mjs +0 -16
  86. package/esm2022/lib/pipes/replace-chars.pipe.mjs +0 -29
  87. package/esm2022/lib/pipes/vcard-name.pipe.mjs +0 -25
  88. package/esm2022/lib/services/abstract/app.service.mjs +0 -3
  89. package/esm2022/lib/services/abstract/keyboard-shortcuts.service.mjs +0 -10
  90. package/esm2022/lib/services/abstract/options-helper.service.mjs +0 -3
  91. package/esm2022/lib/services/abstract/toast.service.mjs +0 -3
  92. package/esm2022/lib/services/accessibility.service.mjs +0 -73
  93. package/esm2022/lib/services/app-container.service.mjs +0 -69
  94. package/esm2022/lib/services/local-events.service.mjs +0 -43
  95. package/esm2022/lib/services/node-entries.service.mjs +0 -201
  96. package/esm2022/lib/services/node-helper.service.mjs +0 -330
  97. package/esm2022/lib/services/nodes-drag-drop.service.mjs +0 -155
  98. package/esm2022/lib/services/options-helper-data.service.mjs +0 -142
  99. package/esm2022/lib/services/render-helper.service.mjs +0 -114
  100. package/esm2022/lib/services/repo-url.service.mjs +0 -50
  101. package/esm2022/lib/services/search-helper.service.mjs +0 -52
  102. package/esm2022/lib/services/temporary-storage.service.mjs +0 -48
  103. package/esm2022/lib/services/ui.service.mjs +0 -327
  104. package/esm2022/lib/sort-dropdown/sort-dropdown.component.mjs +0 -50
  105. package/esm2022/lib/spinner/spinner.component.mjs +0 -19
  106. package/esm2022/lib/spinner-small/spinner-small.component.mjs +0 -18
  107. package/esm2022/lib/translations/fallback-translation-handler.mjs +0 -6
  108. package/esm2022/lib/translations/translation-loader.mjs +0 -219
  109. package/esm2022/lib/translations/translation-source.mjs +0 -11
  110. package/esm2022/lib/translations/translations.module.mjs +0 -82
  111. package/esm2022/lib/translations/translations.service.mjs +0 -238
  112. package/esm2022/lib/types/accessibillity.mjs +0 -19
  113. package/esm2022/lib/types/api-models.mjs +0 -2
  114. package/esm2022/lib/types/drag-drop.mjs +0 -2
  115. package/esm2022/lib/types/injection-tokens.mjs +0 -31
  116. package/esm2022/lib/types/keyboard-shortcuts.mjs +0 -11
  117. package/esm2022/lib/types/list-item.mjs +0 -41
  118. package/esm2022/lib/types/option-item.mjs +0 -192
  119. package/esm2022/lib/types/workflow.mjs +0 -25
  120. package/esm2022/lib/util/DateHelper.mjs +0 -200
  121. package/esm2022/lib/util/VCard.mjs +0 -278
  122. package/esm2022/lib/util/color-helper.mjs +0 -124
  123. package/esm2022/lib/util/duration-helper.mjs +0 -102
  124. package/esm2022/lib/util/functions.mjs +0 -13
  125. package/esm2022/lib/util/helper.mjs +0 -64
  126. package/esm2022/lib/util/isNumeric.mjs +0 -11
  127. package/esm2022/lib/util/rest-helper.mjs +0 -42
  128. package/esm2022/lib/util/ui-animation.mjs +0 -146
  129. package/esm2022/lib/util/ui-constants.mjs +0 -21
  130. package/esm2022/ngx-edu-sharing-ui.mjs +0 -5
  131. package/esm2022/public-api.mjs +0 -2
@@ -1,71 +0,0 @@
1
- import { Directive, EventEmitter, Output } from '@angular/core';
2
- import { Observable, ReplaySubject } from 'rxjs';
3
- import { map } from 'rxjs/operators';
4
- import * as i0 from "@angular/core";
5
- /**
6
- * Gets the border-box dimensions of an element in an asynchronous manner.
7
- *
8
- * This allows subscribing to changes and using values as input to other Angular components without
9
- * causing changed-after-checked errors.
10
- */
11
- export class BorderBoxObserverDirective {
12
- static observeElement(elementRef) {
13
- return new Observable((subscriber) => {
14
- const borderBoxObserver = new BorderBoxObserverDirective(elementRef);
15
- borderBoxObserver.ngOnInit();
16
- borderBoxObserver.borderBoxSubject.subscribe(subscriber);
17
- return () => borderBoxObserver.ngOnDestroy();
18
- });
19
- }
20
- constructor(elementRef) {
21
- this.elementRef = elementRef;
22
- this.borderBoxEmitter = new EventEmitter();
23
- this.borderBoxSubject = new ReplaySubject(1);
24
- this.width$ = this.borderBoxSubject.pipe(map(({ width }) => width));
25
- this.height$ = this.borderBoxSubject.pipe(map(({ height }) => height));
26
- }
27
- ngOnInit() {
28
- this.registerEventEmitter();
29
- this.registerObserver();
30
- // Can cause changed-after-checked errors if done synchronously.
31
- void Promise.resolve().then(() => this.setInitialValue());
32
- }
33
- ngOnDestroy() {
34
- this.observer.disconnect();
35
- }
36
- registerEventEmitter() {
37
- this.borderBoxSubject.subscribe((borderBox) => this.borderBoxEmitter.emit(borderBox));
38
- }
39
- registerObserver() {
40
- this.observer = new ResizeObserver((entries) => {
41
- entries.forEach((entry) => {
42
- const borderBoxSize = entry.borderBoxSize[0];
43
- this.borderBoxSubject.next({
44
- width: borderBoxSize.inlineSize,
45
- height: borderBoxSize.blockSize,
46
- });
47
- });
48
- });
49
- this.observer.observe(this.elementRef.nativeElement);
50
- }
51
- setInitialValue() {
52
- const boundingClientRect = this.elementRef.nativeElement.getBoundingClientRect();
53
- this.borderBoxSubject.next({
54
- width: boundingClientRect.width,
55
- height: boundingClientRect.height,
56
- });
57
- }
58
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: BorderBoxObserverDirective, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive }); }
59
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.12", type: BorderBoxObserverDirective, selector: "[esBorderBoxObserver]", outputs: { borderBoxEmitter: "esBorderBoxObserver" }, exportAs: ["borderBoxObserver"], ngImport: i0 }); }
60
- }
61
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: BorderBoxObserverDirective, decorators: [{
62
- type: Directive,
63
- args: [{
64
- selector: '[esBorderBoxObserver]',
65
- exportAs: 'borderBoxObserver',
66
- }]
67
- }], ctorParameters: () => [{ type: i0.ElementRef }], propDecorators: { borderBoxEmitter: [{
68
- type: Output,
69
- args: ['esBorderBoxObserver']
70
- }] } });
71
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYm9yZGVyLWJveC1vYnNlcnZlci5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9lZHUtc2hhcmluZy11aS9zcmMvbGliL2RpcmVjdGl2ZXMvYm9yZGVyLWJveC1vYnNlcnZlci5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBYyxZQUFZLEVBQXFCLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMvRixPQUFPLEVBQUUsVUFBVSxFQUFFLGFBQWEsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNqRCxPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7O0FBT3JDOzs7OztHQUtHO0FBS0gsTUFBTSxPQUFPLDBCQUEwQjtJQUNuQyxNQUFNLENBQUMsY0FBYyxDQUFDLFVBQW1DO1FBQ3JELE9BQU8sSUFBSSxVQUFVLENBQUMsQ0FBQyxVQUFVLEVBQUUsRUFBRTtZQUNqQyxNQUFNLGlCQUFpQixHQUFHLElBQUksMEJBQTBCLENBQUMsVUFBVSxDQUFDLENBQUM7WUFDckUsaUJBQWlCLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDN0IsaUJBQWlCLENBQUMsZ0JBQWdCLENBQUMsU0FBUyxDQUFDLFVBQVUsQ0FBQyxDQUFDO1lBQ3pELE9BQU8sR0FBRyxFQUFFLENBQUMsaUJBQWlCLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDakQsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBVUQsWUFBb0IsVUFBbUM7UUFBbkMsZUFBVSxHQUFWLFVBQVUsQ0FBeUI7UUFSeEIscUJBQWdCLEdBQUcsSUFBSSxZQUFZLEVBQWEsQ0FBQztRQUcvRCxxQkFBZ0IsR0FBRyxJQUFJLGFBQWEsQ0FBWSxDQUFDLENBQUMsQ0FBQztRQUVwRSxXQUFNLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLEtBQUssRUFBRSxFQUFFLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO1FBQy9ELFlBQU8sR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsTUFBTSxFQUFFLEVBQUUsRUFBRSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7SUFFUixDQUFDO0lBRTNELFFBQVE7UUFDSixJQUFJLENBQUMsb0JBQW9CLEVBQUUsQ0FBQztRQUM1QixJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztRQUN4QixnRUFBZ0U7UUFDaEUsS0FBSyxPQUFPLENBQUMsT0FBTyxFQUFFLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQyxDQUFDO0lBQzlELENBQUM7SUFFRCxXQUFXO1FBQ1AsSUFBSSxDQUFDLFFBQVEsQ0FBQyxVQUFVLEVBQUUsQ0FBQztJQUMvQixDQUFDO0lBRU8sb0JBQW9CO1FBQ3hCLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxTQUFTLENBQUMsQ0FBQyxTQUFTLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQztJQUMxRixDQUFDO0lBRU8sZ0JBQWdCO1FBQ3BCLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxjQUFjLENBQUMsQ0FBQyxPQUFPLEVBQUUsRUFBRTtZQUMzQyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUU7Z0JBQ3RCLE1BQU0sYUFBYSxHQUF1QixLQUFLLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUNqRSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDO29CQUN2QixLQUFLLEVBQUUsYUFBYSxDQUFDLFVBQVU7b0JBQy9CLE1BQU0sRUFBRSxhQUFhLENBQUMsU0FBUztpQkFDbEMsQ0FBQyxDQUFDO1lBQ1AsQ0FBQyxDQUFDLENBQUM7UUFDUCxDQUFDLENBQUMsQ0FBQztRQUNILElBQUksQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsYUFBYSxDQUFDLENBQUM7SUFDekQsQ0FBQztJQUVPLGVBQWU7UUFDbkIsTUFBTSxrQkFBa0IsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLGFBQWEsQ0FBQyxxQkFBcUIsRUFBRSxDQUFDO1FBQ2pGLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUM7WUFDdkIsS0FBSyxFQUFFLGtCQUFrQixDQUFDLEtBQUs7WUFDL0IsTUFBTSxFQUFFLGtCQUFrQixDQUFDLE1BQU07U0FDcEMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQzsrR0F0RFEsMEJBQTBCO21HQUExQiwwQkFBMEI7OzRGQUExQiwwQkFBMEI7a0JBSnRDLFNBQVM7bUJBQUM7b0JBQ1AsUUFBUSxFQUFFLHVCQUF1QjtvQkFDakMsUUFBUSxFQUFFLG1CQUFtQjtpQkFDaEM7K0VBV2tDLGdCQUFnQjtzQkFBOUMsTUFBTTt1QkFBQyxxQkFBcUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEaXJlY3RpdmUsIEVsZW1lbnRSZWYsIEV2ZW50RW1pdHRlciwgT25EZXN0cm95LCBPbkluaXQsIE91dHB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgUmVwbGF5U3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgbWFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5pbnRlcmZhY2UgQm9yZGVyQm94IHtcbiAgICB3aWR0aDogbnVtYmVyO1xuICAgIGhlaWdodDogbnVtYmVyO1xufVxuXG4vKipcbiAqIEdldHMgdGhlIGJvcmRlci1ib3ggZGltZW5zaW9ucyBvZiBhbiBlbGVtZW50IGluIGFuIGFzeW5jaHJvbm91cyBtYW5uZXIuXG4gKlxuICogVGhpcyBhbGxvd3Mgc3Vic2NyaWJpbmcgdG8gY2hhbmdlcyBhbmQgdXNpbmcgdmFsdWVzIGFzIGlucHV0IHRvIG90aGVyIEFuZ3VsYXIgY29tcG9uZW50cyB3aXRob3V0XG4gKiBjYXVzaW5nIGNoYW5nZWQtYWZ0ZXItY2hlY2tlZCBlcnJvcnMuXG4gKi9cbkBEaXJlY3RpdmUoe1xuICAgIHNlbGVjdG9yOiAnW2VzQm9yZGVyQm94T2JzZXJ2ZXJdJyxcbiAgICBleHBvcnRBczogJ2JvcmRlckJveE9ic2VydmVyJyxcbn0pXG5leHBvcnQgY2xhc3MgQm9yZGVyQm94T2JzZXJ2ZXJEaXJlY3RpdmUgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG4gICAgc3RhdGljIG9ic2VydmVFbGVtZW50KGVsZW1lbnRSZWY6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+KTogT2JzZXJ2YWJsZTxCb3JkZXJCb3g+IHtcbiAgICAgICAgcmV0dXJuIG5ldyBPYnNlcnZhYmxlKChzdWJzY3JpYmVyKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBib3JkZXJCb3hPYnNlcnZlciA9IG5ldyBCb3JkZXJCb3hPYnNlcnZlckRpcmVjdGl2ZShlbGVtZW50UmVmKTtcbiAgICAgICAgICAgIGJvcmRlckJveE9ic2VydmVyLm5nT25Jbml0KCk7XG4gICAgICAgICAgICBib3JkZXJCb3hPYnNlcnZlci5ib3JkZXJCb3hTdWJqZWN0LnN1YnNjcmliZShzdWJzY3JpYmVyKTtcbiAgICAgICAgICAgIHJldHVybiAoKSA9PiBib3JkZXJCb3hPYnNlcnZlci5uZ09uRGVzdHJveSgpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBAT3V0cHV0KCdlc0JvcmRlckJveE9ic2VydmVyJykgYm9yZGVyQm94RW1pdHRlciA9IG5ldyBFdmVudEVtaXR0ZXI8Qm9yZGVyQm94PigpO1xuXG4gICAgcHJpdmF0ZSBvYnNlcnZlcjogUmVzaXplT2JzZXJ2ZXI7XG4gICAgcHJpdmF0ZSByZWFkb25seSBib3JkZXJCb3hTdWJqZWN0ID0gbmV3IFJlcGxheVN1YmplY3Q8Qm9yZGVyQm94PigxKTtcblxuICAgIHdpZHRoJCA9IHRoaXMuYm9yZGVyQm94U3ViamVjdC5waXBlKG1hcCgoeyB3aWR0aCB9KSA9PiB3aWR0aCkpO1xuICAgIGhlaWdodCQgPSB0aGlzLmJvcmRlckJveFN1YmplY3QucGlwZShtYXAoKHsgaGVpZ2h0IH0pID0+IGhlaWdodCkpO1xuXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSBlbGVtZW50UmVmOiBFbGVtZW50UmVmPEhUTUxFbGVtZW50Pikge31cblxuICAgIG5nT25Jbml0KCk6IHZvaWQge1xuICAgICAgICB0aGlzLnJlZ2lzdGVyRXZlbnRFbWl0dGVyKCk7XG4gICAgICAgIHRoaXMucmVnaXN0ZXJPYnNlcnZlcigpO1xuICAgICAgICAvLyBDYW4gY2F1c2UgY2hhbmdlZC1hZnRlci1jaGVja2VkIGVycm9ycyBpZiBkb25lIHN5bmNocm9ub3VzbHkuXG4gICAgICAgIHZvaWQgUHJvbWlzZS5yZXNvbHZlKCkudGhlbigoKSA9PiB0aGlzLnNldEluaXRpYWxWYWx1ZSgpKTtcbiAgICB9XG5cbiAgICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5vYnNlcnZlci5kaXNjb25uZWN0KCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSByZWdpc3RlckV2ZW50RW1pdHRlcigpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5ib3JkZXJCb3hTdWJqZWN0LnN1YnNjcmliZSgoYm9yZGVyQm94KSA9PiB0aGlzLmJvcmRlckJveEVtaXR0ZXIuZW1pdChib3JkZXJCb3gpKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHJlZ2lzdGVyT2JzZXJ2ZXIoKTogdm9pZCB7XG4gICAgICAgIHRoaXMub2JzZXJ2ZXIgPSBuZXcgUmVzaXplT2JzZXJ2ZXIoKGVudHJpZXMpID0+IHtcbiAgICAgICAgICAgIGVudHJpZXMuZm9yRWFjaCgoZW50cnkpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBib3JkZXJCb3hTaXplOiBSZXNpemVPYnNlcnZlclNpemUgPSBlbnRyeS5ib3JkZXJCb3hTaXplWzBdO1xuICAgICAgICAgICAgICAgIHRoaXMuYm9yZGVyQm94U3ViamVjdC5uZXh0KHtcbiAgICAgICAgICAgICAgICAgICAgd2lkdGg6IGJvcmRlckJveFNpemUuaW5saW5lU2l6ZSxcbiAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiBib3JkZXJCb3hTaXplLmJsb2NrU2l6ZSxcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5vYnNlcnZlci5vYnNlcnZlKHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHNldEluaXRpYWxWYWx1ZSgpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgYm91bmRpbmdDbGllbnRSZWN0ID0gdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgICAgIHRoaXMuYm9yZGVyQm94U3ViamVjdC5uZXh0KHtcbiAgICAgICAgICAgIHdpZHRoOiBib3VuZGluZ0NsaWVudFJlY3Qud2lkdGgsXG4gICAgICAgICAgICBoZWlnaHQ6IGJvdW5kaW5nQ2xpZW50UmVjdC5oZWlnaHQsXG4gICAgICAgIH0pO1xuICAgIH1cbn1cbiJdfQ==
@@ -1,71 +0,0 @@
1
- import { Directive, Input } from '@angular/core';
2
- import * as i0 from "@angular/core";
3
- /**
4
- * Checks whether text of the annotated element or a descendent (give a selector) was cut of, e.g.,
5
- * with an ellipsis.
6
- *
7
- * Call `hasTextOverflow()` for the result.
8
- */
9
- export class CheckTextOverflowDirective {
10
- constructor(elementRef) {
11
- this.elementRef = elementRef;
12
- this.hasTextOverflow = delay(this.hasTextOverflow_);
13
- }
14
- ngOnInit() {
15
- this.textElement = this.getTextElement();
16
- }
17
- hasTextOverflow_() {
18
- if (!this.textElement && this.selector) {
19
- // refetch element in case it has changed
20
- this.textElement = this.getTextElement();
21
- }
22
- const element = this.textElement;
23
- if (element) {
24
- return (element.offsetWidth < element.scrollWidth ||
25
- // use buffer to prevent overflow caused by small margins
26
- element.offsetHeight + 5 < element.scrollHeight);
27
- }
28
- else {
29
- return false;
30
- }
31
- }
32
- getTextElement() {
33
- if (this.selector) {
34
- return this.elementRef.nativeElement.querySelector(this.selector);
35
- }
36
- else {
37
- return this.elementRef.nativeElement;
38
- }
39
- }
40
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: CheckTextOverflowDirective, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive }); }
41
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.12", type: CheckTextOverflowDirective, selector: "[esCheckTextOverflow]", inputs: { selector: ["esCheckTextOverflow", "selector"] }, exportAs: ["esCheckTextOverflow"], ngImport: i0 }); }
42
- }
43
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: CheckTextOverflowDirective, decorators: [{
44
- type: Directive,
45
- args: [{
46
- selector: '[esCheckTextOverflow]',
47
- exportAs: 'esCheckTextOverflow',
48
- }]
49
- }], ctorParameters: () => [{ type: i0.ElementRef }], propDecorators: { selector: [{
50
- type: Input,
51
- args: ['esCheckTextOverflow']
52
- }] } });
53
- /** Delay the result of a function one tick to avoid changed-after-checked errors. */
54
- function delay(f) {
55
- let previousValue = null;
56
- let updating = false;
57
- return function () {
58
- if (!updating) {
59
- const newValue = f.apply(this);
60
- if (newValue !== previousValue) {
61
- updating = true;
62
- void Promise.resolve().then(() => {
63
- previousValue = newValue;
64
- updating = false;
65
- });
66
- }
67
- }
68
- return previousValue;
69
- };
70
- }
71
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hlY2stdGV4dC1vdmVyZmxvdy5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9lZHUtc2hhcmluZy11aS9zcmMvbGliL2RpcmVjdGl2ZXMvY2hlY2stdGV4dC1vdmVyZmxvdy5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBYyxLQUFLLEVBQVUsTUFBTSxlQUFlLENBQUM7O0FBRXJFOzs7OztHQUtHO0FBS0gsTUFBTSxPQUFPLDBCQUEwQjtJQU9uQyxZQUE2QixVQUFtQztRQUFuQyxlQUFVLEdBQVYsVUFBVSxDQUF5QjtRQUZoRSxvQkFBZSxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztJQUVvQixDQUFDO0lBRXBFLFFBQVE7UUFDSixJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztJQUM3QyxDQUFDO0lBRU8sZ0JBQWdCO1FBQ3BCLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxJQUFJLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUNyQyx5Q0FBeUM7WUFDekMsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7UUFDN0MsQ0FBQztRQUNELE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUM7UUFDakMsSUFBSSxPQUFPLEVBQUUsQ0FBQztZQUNWLE9BQU8sQ0FDSCxPQUFPLENBQUMsV0FBVyxHQUFHLE9BQU8sQ0FBQyxXQUFXO2dCQUN6Qyx5REFBeUQ7Z0JBQ3pELE9BQU8sQ0FBQyxZQUFZLEdBQUcsQ0FBQyxHQUFHLE9BQU8sQ0FBQyxZQUFZLENBQ2xELENBQUM7UUFDTixDQUFDO2FBQU0sQ0FBQztZQUNKLE9BQU8sS0FBSyxDQUFDO1FBQ2pCLENBQUM7SUFDTCxDQUFDO0lBRU8sY0FBYztRQUNsQixJQUFJLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUNoQixPQUFPLElBQUksQ0FBQyxVQUFVLENBQUMsYUFBYSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDdEUsQ0FBQzthQUFNLENBQUM7WUFDSixPQUFPLElBQUksQ0FBQyxVQUFVLENBQUMsYUFBYSxDQUFDO1FBQ3pDLENBQUM7SUFDTCxDQUFDOytHQXBDUSwwQkFBMEI7bUdBQTFCLDBCQUEwQjs7NEZBQTFCLDBCQUEwQjtrQkFKdEMsU0FBUzttQkFBQztvQkFDUCxRQUFRLEVBQUUsdUJBQXVCO29CQUNqQyxRQUFRLEVBQUUscUJBQXFCO2lCQUNsQzsrRUFFaUMsUUFBUTtzQkFBckMsS0FBSzt1QkFBQyxxQkFBcUI7O0FBc0NoQyxxRkFBcUY7QUFDckYsU0FBUyxLQUFLLENBQUksQ0FBVTtJQUN4QixJQUFJLGFBQWEsR0FBUSxJQUFJLENBQUM7SUFDOUIsSUFBSSxRQUFRLEdBQUcsS0FBSyxDQUFDO0lBQ3JCLE9BQU87UUFDSCxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDWixNQUFNLFFBQVEsR0FBRyxDQUFDLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQy9CLElBQUksUUFBUSxLQUFLLGFBQWEsRUFBRSxDQUFDO2dCQUM3QixRQUFRLEdBQUcsSUFBSSxDQUFDO2dCQUNoQixLQUFLLE9BQU8sQ0FBQyxPQUFPLEVBQUUsQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFO29CQUM3QixhQUFhLEdBQUcsUUFBUSxDQUFDO29CQUN6QixRQUFRLEdBQUcsS0FBSyxDQUFDO2dCQUNyQixDQUFDLENBQUMsQ0FBQztZQUNQLENBQUM7UUFDTCxDQUFDO1FBQ0QsT0FBTyxhQUFhLENBQUM7SUFDekIsQ0FBQyxDQUFDO0FBQ04sQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERpcmVjdGl2ZSwgRWxlbWVudFJlZiwgSW5wdXQsIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG4vKipcbiAqIENoZWNrcyB3aGV0aGVyIHRleHQgb2YgdGhlIGFubm90YXRlZCBlbGVtZW50IG9yIGEgZGVzY2VuZGVudCAoZ2l2ZSBhIHNlbGVjdG9yKSB3YXMgY3V0IG9mLCBlLmcuLFxuICogd2l0aCBhbiBlbGxpcHNpcy5cbiAqXG4gKiBDYWxsIGBoYXNUZXh0T3ZlcmZsb3coKWAgZm9yIHRoZSByZXN1bHQuXG4gKi9cbkBEaXJlY3RpdmUoe1xuICAgIHNlbGVjdG9yOiAnW2VzQ2hlY2tUZXh0T3ZlcmZsb3ddJyxcbiAgICBleHBvcnRBczogJ2VzQ2hlY2tUZXh0T3ZlcmZsb3cnLFxufSlcbmV4cG9ydCBjbGFzcyBDaGVja1RleHRPdmVyZmxvd0RpcmVjdGl2ZSBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gICAgQElucHV0KCdlc0NoZWNrVGV4dE92ZXJmbG93Jykgc2VsZWN0b3I/OiBzdHJpbmc7XG5cbiAgICBwcml2YXRlIHRleHRFbGVtZW50OiBIVE1MRWxlbWVudDtcblxuICAgIGhhc1RleHRPdmVyZmxvdyA9IGRlbGF5KHRoaXMuaGFzVGV4dE92ZXJmbG93Xyk7XG5cbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlYWRvbmx5IGVsZW1lbnRSZWY6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+KSB7fVxuXG4gICAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMudGV4dEVsZW1lbnQgPSB0aGlzLmdldFRleHRFbGVtZW50KCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBoYXNUZXh0T3ZlcmZsb3dfKCk6IGJvb2xlYW4ge1xuICAgICAgICBpZiAoIXRoaXMudGV4dEVsZW1lbnQgJiYgdGhpcy5zZWxlY3Rvcikge1xuICAgICAgICAgICAgLy8gcmVmZXRjaCBlbGVtZW50IGluIGNhc2UgaXQgaGFzIGNoYW5nZWRcbiAgICAgICAgICAgIHRoaXMudGV4dEVsZW1lbnQgPSB0aGlzLmdldFRleHRFbGVtZW50KCk7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgZWxlbWVudCA9IHRoaXMudGV4dEVsZW1lbnQ7XG4gICAgICAgIGlmIChlbGVtZW50KSB7XG4gICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgIGVsZW1lbnQub2Zmc2V0V2lkdGggPCBlbGVtZW50LnNjcm9sbFdpZHRoIHx8XG4gICAgICAgICAgICAgICAgLy8gdXNlIGJ1ZmZlciB0byBwcmV2ZW50IG92ZXJmbG93IGNhdXNlZCBieSBzbWFsbCBtYXJnaW5zXG4gICAgICAgICAgICAgICAgZWxlbWVudC5vZmZzZXRIZWlnaHQgKyA1IDwgZWxlbWVudC5zY3JvbGxIZWlnaHRcbiAgICAgICAgICAgICk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGdldFRleHRFbGVtZW50KCk6IEhUTUxFbGVtZW50IHtcbiAgICAgICAgaWYgKHRoaXMuc2VsZWN0b3IpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yKHRoaXMuc2VsZWN0b3IpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50O1xuICAgICAgICB9XG4gICAgfVxufVxuXG4vKiogRGVsYXkgdGhlIHJlc3VsdCBvZiBhIGZ1bmN0aW9uIG9uZSB0aWNrIHRvIGF2b2lkIGNoYW5nZWQtYWZ0ZXItY2hlY2tlZCBlcnJvcnMuICovXG5mdW5jdGlvbiBkZWxheTxUPihmOiAoKSA9PiBUKTogKCkgPT4gVCB7XG4gICAgbGV0IHByZXZpb3VzVmFsdWU6IGFueSA9IG51bGw7XG4gICAgbGV0IHVwZGF0aW5nID0gZmFsc2U7XG4gICAgcmV0dXJuIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgaWYgKCF1cGRhdGluZykge1xuICAgICAgICAgICAgY29uc3QgbmV3VmFsdWUgPSBmLmFwcGx5KHRoaXMpO1xuICAgICAgICAgICAgaWYgKG5ld1ZhbHVlICE9PSBwcmV2aW91c1ZhbHVlKSB7XG4gICAgICAgICAgICAgICAgdXBkYXRpbmcgPSB0cnVlO1xuICAgICAgICAgICAgICAgIHZvaWQgUHJvbWlzZS5yZXNvbHZlKCkudGhlbigoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHByZXZpb3VzVmFsdWUgPSBuZXdWYWx1ZTtcbiAgICAgICAgICAgICAgICAgICAgdXBkYXRpbmcgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcHJldmlvdXNWYWx1ZTtcbiAgICB9O1xufVxuIl19
@@ -1,14 +0,0 @@
1
- export const dragNodesTransferType = 'application/nodes';
2
- const storageKey = 'app-drag-nodes';
3
- export function readDraggedNodes() {
4
- const json = window.localStorage.getItem(storageKey);
5
- return JSON.parse(json);
6
- }
7
- export function saveDraggedNodes(nodes) {
8
- const json = JSON.stringify(nodes);
9
- window.localStorage.setItem(storageKey, json);
10
- }
11
- export function clearDraggedNodes() {
12
- window.localStorage.removeItem(storageKey);
13
- }
14
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJhZy1ub2Rlcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2VkdS1zaGFyaW5nLXVpL3NyYy9saWIvZGlyZWN0aXZlcy9kcmFnLW5vZGVzL2RyYWctbm9kZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBZ0JBLE1BQU0sQ0FBQyxNQUFNLHFCQUFxQixHQUFHLG1CQUFtQixDQUFDO0FBRXpELE1BQU0sVUFBVSxHQUFHLGdCQUFnQixDQUFDO0FBRXBDLE1BQU0sVUFBVSxnQkFBZ0I7SUFDNUIsTUFBTSxJQUFJLEdBQUcsTUFBTSxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDckQsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQzVCLENBQUM7QUFFRCxNQUFNLFVBQVUsZ0JBQWdCLENBQUMsS0FBYTtJQUMxQyxNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ25DLE1BQU0sQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLFVBQVUsRUFBRSxJQUFJLENBQUMsQ0FBQztBQUNsRCxDQUFDO0FBRUQsTUFBTSxVQUFVLGlCQUFpQjtJQUM3QixNQUFNLENBQUMsWUFBWSxDQUFDLFVBQVUsQ0FBQyxVQUFVLENBQUMsQ0FBQztBQUMvQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTm9kZSB9IGZyb20gJ25neC1lZHUtc2hhcmluZy1hcGknO1xuaW1wb3J0IHsgRHJvcEFjdGlvbiB9IGZyb20gJy4uLy4uL3R5cGVzL2RyYWctZHJvcCc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgRHJhZ0RhdGFMZWdhY3kge1xuICAgIGV2ZW50PzogRHJhZ0V2ZW50O1xuICAgIG5vZGVzPzogTm9kZVtdO1xuICAgIGRyb3BBY3Rpb24/OiBEcm9wQWN0aW9uO1xufVxuZXhwb3J0IHR5cGUgRHJvcEFjdGlvbkxlZ2FjeSA9ICdjb3B5JyB8ICdtb3ZlJyB8ICdsaW5rJztcblxuZXhwb3J0IGludGVyZmFjZSBEcm9wRGF0YUxlZ2FjeSBleHRlbmRzIERyYWdEYXRhTGVnYWN5IHtcbiAgICB0YXJnZXQ6IERyYWdOb2RlVGFyZ2V0O1xufVxuXG5leHBvcnQgdHlwZSBEcmFnTm9kZVRhcmdldCA9IE5vZGUgfCAnSE9NRSc7XG5cbmV4cG9ydCBjb25zdCBkcmFnTm9kZXNUcmFuc2ZlclR5cGUgPSAnYXBwbGljYXRpb24vbm9kZXMnO1xuXG5jb25zdCBzdG9yYWdlS2V5ID0gJ2FwcC1kcmFnLW5vZGVzJztcblxuZXhwb3J0IGZ1bmN0aW9uIHJlYWREcmFnZ2VkTm9kZXMoKTogTm9kZVtdIHtcbiAgICBjb25zdCBqc29uID0gd2luZG93LmxvY2FsU3RvcmFnZS5nZXRJdGVtKHN0b3JhZ2VLZXkpO1xuICAgIHJldHVybiBKU09OLnBhcnNlKGpzb24pO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gc2F2ZURyYWdnZWROb2Rlcyhub2RlczogTm9kZVtdKTogdm9pZCB7XG4gICAgY29uc3QganNvbiA9IEpTT04uc3RyaW5naWZ5KG5vZGVzKTtcbiAgICB3aW5kb3cubG9jYWxTdG9yYWdlLnNldEl0ZW0oc3RvcmFnZUtleSwganNvbik7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjbGVhckRyYWdnZWROb2RlcygpOiB2b2lkIHtcbiAgICB3aW5kb3cubG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0oc3RvcmFnZUtleSk7XG59XG4iXX0=
@@ -1,79 +0,0 @@
1
- import { Directive, EventEmitter, HostListener, Input, Output, } from '@angular/core';
2
- import { clearDraggedNodes, dragNodesTransferType, saveDraggedNodes } from './drag-nodes';
3
- import * as i0 from "@angular/core";
4
- /**
5
- * Handle dragging and dropping of node elements.
6
- *
7
- * Use in combination with `NodesDropTargetDirective`.
8
- *
9
- * When nodes that set this directive are dragged, we save information about
10
- * these nodes that can be used by `NodesDropTargetDirective`.
11
- */
12
- export class NodesDragSourceDirective {
13
- constructor(elementRef) {
14
- this.elementRef = elementRef;
15
- /**
16
- * Triggered when processing the dragstart event.
17
- *
18
- * Changes to `nodes` performed by event handlers of `nodesDragStart` will
19
- * be taken into account for the drag operation.
20
- */
21
- this.nodesDragStart = new EventEmitter(false);
22
- /**
23
- * Triggered when processing the dragend event.
24
- */
25
- this.nodesDragEnd = new EventEmitter();
26
- }
27
- ngOnChanges(changes) {
28
- // Set the `draggable` attribute when this directive is active.
29
- if (changes.nodes) {
30
- if (!!changes.nodes.currentValue !== !!changes.nodes.previousValue) {
31
- this.elementRef.nativeElement.setAttribute('draggable', (!!this.nodes).toString());
32
- }
33
- }
34
- }
35
- onDragStart(event) {
36
- if (!this.nodes) {
37
- return;
38
- }
39
- this.nodesDragStart.emit(event);
40
- // Use the transfer-data type to identify a node-drag operation.
41
- event.dataTransfer.setData(dragNodesTransferType, '');
42
- // Chrome doesn't provide drag transfer data to dragover event listeners
43
- // for security reasons, so we provide the data via localStorage.
44
- //
45
- // Wait for updates by event handlers of `nodesDragStart` to propagate.
46
- setTimeout(() => {
47
- saveDraggedNodes(this.nodes);
48
- });
49
- }
50
- onDragEnd(event) {
51
- if (!this.nodes) {
52
- return;
53
- }
54
- this.nodesDragEnd.emit(event);
55
- clearDraggedNodes();
56
- }
57
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: NodesDragSourceDirective, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive }); }
58
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.12", type: NodesDragSourceDirective, selector: "[esNodesDragSource]", inputs: { nodes: ["esNodesDragSource", "nodes"] }, outputs: { nodesDragStart: "nodesDragStart", nodesDragEnd: "nodesDragEnd" }, host: { listeners: { "dragstart": "onDragStart($event)", "dragend": "onDragEnd($event)" } }, usesOnChanges: true, ngImport: i0 }); }
59
- }
60
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: NodesDragSourceDirective, decorators: [{
61
- type: Directive,
62
- args: [{
63
- selector: '[esNodesDragSource]',
64
- }]
65
- }], ctorParameters: () => [{ type: i0.ElementRef }], propDecorators: { nodes: [{
66
- type: Input,
67
- args: ['esNodesDragSource']
68
- }], nodesDragStart: [{
69
- type: Output
70
- }], nodesDragEnd: [{
71
- type: Output
72
- }], onDragStart: [{
73
- type: HostListener,
74
- args: ['dragstart', ['$event']]
75
- }], onDragEnd: [{
76
- type: HostListener,
77
- args: ['dragend', ['$event']]
78
- }] } });
79
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm9kZXMtZHJhZy1zb3VyY2UuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZWR1LXNoYXJpbmctdWkvc3JjL2xpYi9kaXJlY3RpdmVzL2RyYWctbm9kZXMvbm9kZXMtZHJhZy1zb3VyY2UuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDSCxTQUFTLEVBQ1QsWUFBWSxFQUNaLFlBQVksRUFDWixLQUFLLEVBQ0wsTUFBTSxHQUlULE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxxQkFBcUIsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGNBQWMsQ0FBQzs7QUFFMUY7Ozs7Ozs7R0FPRztBQUlILE1BQU0sT0FBTyx3QkFBd0I7SUFvQmpDLFlBQW9CLFVBQStCO1FBQS9CLGVBQVUsR0FBVixVQUFVLENBQXFCO1FBWm5EOzs7OztXQUtHO1FBQ08sbUJBQWMsR0FBRyxJQUFJLFlBQVksQ0FBWSxLQUFLLENBQUMsQ0FBQztRQUM5RDs7V0FFRztRQUNPLGlCQUFZLEdBQUcsSUFBSSxZQUFZLEVBQWEsQ0FBQztJQUVELENBQUM7SUFFdkQsV0FBVyxDQUFDLE9BQXNCO1FBQzlCLCtEQUErRDtRQUMvRCxJQUFJLE9BQU8sQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUNoQixJQUFJLENBQUMsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLFlBQVksS0FBSyxDQUFDLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxhQUFhLEVBQUUsQ0FBQztnQkFDakUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxhQUFhLENBQUMsWUFBWSxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQztZQUN2RixDQUFDO1FBQ0wsQ0FBQztJQUNMLENBQUM7SUFFc0MsV0FBVyxDQUFDLEtBQWdCO1FBQy9ELElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDZCxPQUFPO1FBQ1gsQ0FBQztRQUNELElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ2hDLGdFQUFnRTtRQUNoRSxLQUFLLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxxQkFBcUIsRUFBRSxFQUFFLENBQUMsQ0FBQztRQUN0RCx3RUFBd0U7UUFDeEUsaUVBQWlFO1FBQ2pFLEVBQUU7UUFDRix1RUFBdUU7UUFDdkUsVUFBVSxDQUFDLEdBQUcsRUFBRTtZQUNaLGdCQUFnQixDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNqQyxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFb0MsU0FBUyxDQUFDLEtBQWdCO1FBQzNELElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDZCxPQUFPO1FBQ1gsQ0FBQztRQUNELElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzlCLGlCQUFpQixFQUFFLENBQUM7SUFDeEIsQ0FBQzsrR0FyRFEsd0JBQXdCO21HQUF4Qix3QkFBd0I7OzRGQUF4Qix3QkFBd0I7a0JBSHBDLFNBQVM7bUJBQUM7b0JBQ1AsUUFBUSxFQUFFLHFCQUFxQjtpQkFDbEM7K0VBTytCLEtBQUs7c0JBQWhDLEtBQUs7dUJBQUMsbUJBQW1CO2dCQVFoQixjQUFjO3NCQUF2QixNQUFNO2dCQUlHLFlBQVk7c0JBQXJCLE1BQU07Z0JBYWdDLFdBQVc7c0JBQWpELFlBQVk7dUJBQUMsV0FBVyxFQUFFLENBQUMsUUFBUSxDQUFDO2dCQWdCQSxTQUFTO3NCQUE3QyxZQUFZO3VCQUFDLFNBQVMsRUFBRSxDQUFDLFFBQVEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gICAgRGlyZWN0aXZlLFxuICAgIEV2ZW50RW1pdHRlcixcbiAgICBIb3N0TGlzdGVuZXIsXG4gICAgSW5wdXQsXG4gICAgT3V0cHV0LFxuICAgIEVsZW1lbnRSZWYsXG4gICAgT25DaGFuZ2VzLFxuICAgIFNpbXBsZUNoYW5nZXMsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTm9kZSB9IGZyb20gJ25neC1lZHUtc2hhcmluZy1hcGknO1xuaW1wb3J0IHsgY2xlYXJEcmFnZ2VkTm9kZXMsIGRyYWdOb2Rlc1RyYW5zZmVyVHlwZSwgc2F2ZURyYWdnZWROb2RlcyB9IGZyb20gJy4vZHJhZy1ub2Rlcyc7XG5cbi8qKlxuICogSGFuZGxlIGRyYWdnaW5nIGFuZCBkcm9wcGluZyBvZiBub2RlIGVsZW1lbnRzLlxuICpcbiAqIFVzZSBpbiBjb21iaW5hdGlvbiB3aXRoIGBOb2Rlc0Ryb3BUYXJnZXREaXJlY3RpdmVgLlxuICpcbiAqIFdoZW4gbm9kZXMgdGhhdCBzZXQgdGhpcyBkaXJlY3RpdmUgYXJlIGRyYWdnZWQsIHdlIHNhdmUgaW5mb3JtYXRpb24gYWJvdXRcbiAqIHRoZXNlIG5vZGVzIHRoYXQgY2FuIGJlIHVzZWQgYnkgYE5vZGVzRHJvcFRhcmdldERpcmVjdGl2ZWAuXG4gKi9cbkBEaXJlY3RpdmUoe1xuICAgIHNlbGVjdG9yOiAnW2VzTm9kZXNEcmFnU291cmNlXScsXG59KVxuZXhwb3J0IGNsYXNzIE5vZGVzRHJhZ1NvdXJjZURpcmVjdGl2ZSBpbXBsZW1lbnRzIE9uQ2hhbmdlcyB7XG4gICAgLyoqXG4gICAgICogVGhlIG5vZGVzIHRvIGJlIGRyYWdnZWQuXG4gICAgICpcbiAgICAgKiBXaGVuIG5vdCBzZXQsIHRoaXMgZGlyZWN0aXZlIGlzIGVmZmVjdGl2ZWx5IGRpc2FibGVkLlxuICAgICAqL1xuICAgIEBJbnB1dCgnZXNOb2Rlc0RyYWdTb3VyY2UnKSBub2Rlcz86IE5vZGVbXTtcblxuICAgIC8qKlxuICAgICAqIFRyaWdnZXJlZCB3aGVuIHByb2Nlc3NpbmcgdGhlIGRyYWdzdGFydCBldmVudC5cbiAgICAgKlxuICAgICAqIENoYW5nZXMgdG8gYG5vZGVzYCBwZXJmb3JtZWQgYnkgZXZlbnQgaGFuZGxlcnMgb2YgYG5vZGVzRHJhZ1N0YXJ0YCB3aWxsXG4gICAgICogYmUgdGFrZW4gaW50byBhY2NvdW50IGZvciB0aGUgZHJhZyBvcGVyYXRpb24uXG4gICAgICovXG4gICAgQE91dHB1dCgpIG5vZGVzRHJhZ1N0YXJ0ID0gbmV3IEV2ZW50RW1pdHRlcjxEcmFnRXZlbnQ+KGZhbHNlKTtcbiAgICAvKipcbiAgICAgKiBUcmlnZ2VyZWQgd2hlbiBwcm9jZXNzaW5nIHRoZSBkcmFnZW5kIGV2ZW50LlxuICAgICAqL1xuICAgIEBPdXRwdXQoKSBub2Rlc0RyYWdFbmQgPSBuZXcgRXZlbnRFbWl0dGVyPERyYWdFdmVudD4oKTtcblxuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgZWxlbWVudFJlZjogRWxlbWVudFJlZjxFbGVtZW50Pikge31cblxuICAgIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpIHtcbiAgICAgICAgLy8gU2V0IHRoZSBgZHJhZ2dhYmxlYCBhdHRyaWJ1dGUgd2hlbiB0aGlzIGRpcmVjdGl2ZSBpcyBhY3RpdmUuXG4gICAgICAgIGlmIChjaGFuZ2VzLm5vZGVzKSB7XG4gICAgICAgICAgICBpZiAoISFjaGFuZ2VzLm5vZGVzLmN1cnJlbnRWYWx1ZSAhPT0gISFjaGFuZ2VzLm5vZGVzLnByZXZpb3VzVmFsdWUpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5zZXRBdHRyaWJ1dGUoJ2RyYWdnYWJsZScsICghIXRoaXMubm9kZXMpLnRvU3RyaW5nKCkpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgQEhvc3RMaXN0ZW5lcignZHJhZ3N0YXJ0JywgWyckZXZlbnQnXSkgb25EcmFnU3RhcnQoZXZlbnQ6IERyYWdFdmVudCkge1xuICAgICAgICBpZiAoIXRoaXMubm9kZXMpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLm5vZGVzRHJhZ1N0YXJ0LmVtaXQoZXZlbnQpO1xuICAgICAgICAvLyBVc2UgdGhlIHRyYW5zZmVyLWRhdGEgdHlwZSB0byBpZGVudGlmeSBhIG5vZGUtZHJhZyBvcGVyYXRpb24uXG4gICAgICAgIGV2ZW50LmRhdGFUcmFuc2Zlci5zZXREYXRhKGRyYWdOb2Rlc1RyYW5zZmVyVHlwZSwgJycpO1xuICAgICAgICAvLyBDaHJvbWUgZG9lc24ndCBwcm92aWRlIGRyYWcgdHJhbnNmZXIgZGF0YSB0byBkcmFnb3ZlciBldmVudCBsaXN0ZW5lcnNcbiAgICAgICAgLy8gZm9yIHNlY3VyaXR5IHJlYXNvbnMsIHNvIHdlIHByb3ZpZGUgdGhlIGRhdGEgdmlhIGxvY2FsU3RvcmFnZS5cbiAgICAgICAgLy9cbiAgICAgICAgLy8gV2FpdCBmb3IgdXBkYXRlcyBieSBldmVudCBoYW5kbGVycyBvZiBgbm9kZXNEcmFnU3RhcnRgIHRvIHByb3BhZ2F0ZS5cbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICBzYXZlRHJhZ2dlZE5vZGVzKHRoaXMubm9kZXMpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBASG9zdExpc3RlbmVyKCdkcmFnZW5kJywgWyckZXZlbnQnXSkgb25EcmFnRW5kKGV2ZW50OiBEcmFnRXZlbnQpIHtcbiAgICAgICAgaWYgKCF0aGlzLm5vZGVzKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5ub2Rlc0RyYWdFbmQuZW1pdChldmVudCk7XG4gICAgICAgIGNsZWFyRHJhZ2dlZE5vZGVzKCk7XG4gICAgfVxufVxuIl19
@@ -1,49 +0,0 @@
1
- import { Directive } from '@angular/core';
2
- import * as i0 from "@angular/core";
3
- import * as i1 from "@angular/cdk/drag-drop";
4
- import * as i2 from "../../services/nodes-drag-drop.service";
5
- /**
6
- * A draggable node.
7
- *
8
- * Use in combination with `cdkDrag`, setting `cdkDragData` to the array of nodes to be dragged.
9
- */
10
- export class NodesDragDirective {
11
- constructor(cdkDrag, nodesDragDrop) {
12
- this.cdkDrag = cdkDrag;
13
- this.nodesDragDrop = nodesDragDrop;
14
- this.cdkDrag.started.subscribe((event) => {
15
- this.nodesDragDrop.draggedNodes = event.source.data;
16
- // Position the preview element (the one being dragged around) next to the cursor to
17
- // avoid covering possible drop targets with the preview.
18
- event.source._dragRef['_pickupPositionInElement'] = { x: 0, y: 0 };
19
- });
20
- this.cdkDrag.released.subscribe(() => {
21
- if (this.nodesDragDrop.canDrop?.accept) {
22
- this.inhibitPreviewAnimation();
23
- }
24
- });
25
- this.cdkDrag.dropped.subscribe(() => {
26
- this.nodesDragDrop.onDropped(this.cdkDrag.data);
27
- this.nodesDragDrop.draggedNodes = null;
28
- });
29
- }
30
- inhibitPreviewAnimation() {
31
- const style = document.createElement('style');
32
- document.body.appendChild(style);
33
- style.innerHTML = `.cdk-drag-preview { transition: none !important; }`;
34
- // Don't need to go outside ng zone because `cdkDrag.released` already runs outside the
35
- // zone.
36
- setTimeout(() => {
37
- document.body.removeChild(style);
38
- });
39
- }
40
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: NodesDragDirective, deps: [{ token: i1.CdkDrag }, { token: i2.NodesDragDropService }], target: i0.ɵɵFactoryTarget.Directive }); }
41
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.12", type: NodesDragDirective, selector: "[esNodesDrag]", ngImport: i0 }); }
42
- }
43
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: NodesDragDirective, decorators: [{
44
- type: Directive,
45
- args: [{
46
- selector: '[esNodesDrag]',
47
- }]
48
- }], ctorParameters: () => [{ type: i1.CdkDrag }, { type: i2.NodesDragDropService }] });
49
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm9kZXMtZHJhZy5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9lZHUtc2hhcmluZy11aS9zcmMvbGliL2RpcmVjdGl2ZXMvZHJhZy1ub2Rlcy9ub2Rlcy1kcmFnLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDOzs7O0FBSTFDOzs7O0dBSUc7QUFJSCxNQUFNLE9BQU8sa0JBQWtCO0lBQzNCLFlBQW9CLE9BQXdCLEVBQVUsYUFBbUM7UUFBckUsWUFBTyxHQUFQLE9BQU8sQ0FBaUI7UUFBVSxrQkFBYSxHQUFiLGFBQWEsQ0FBc0I7UUFDckYsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUU7WUFDckMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxZQUFZLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUM7WUFDcEQsb0ZBQW9GO1lBQ3BGLHlEQUF5RDtZQUN6RCxLQUFLLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQywwQkFBMEIsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUM7UUFDdkUsQ0FBQyxDQUFDLENBQUM7UUFDSCxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFO1lBQ2pDLElBQUksSUFBSSxDQUFDLGFBQWEsQ0FBQyxPQUFPLEVBQUUsTUFBTSxFQUFFLENBQUM7Z0JBQ3JDLElBQUksQ0FBQyx1QkFBdUIsRUFBRSxDQUFDO1lBQ25DLENBQUM7UUFDTCxDQUFDLENBQUMsQ0FBQztRQUNILElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUU7WUFDaEMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUNoRCxJQUFJLENBQUMsYUFBYSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUM7UUFDM0MsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBRU8sdUJBQXVCO1FBQzNCLE1BQU0sS0FBSyxHQUFHLFFBQVEsQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDOUMsUUFBUSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDakMsS0FBSyxDQUFDLFNBQVMsR0FBRyxvREFBb0QsQ0FBQztRQUN2RSx1RkFBdUY7UUFDdkYsUUFBUTtRQUNSLFVBQVUsQ0FBQyxHQUFHLEVBQUU7WUFDWixRQUFRLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNyQyxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7K0dBNUJRLGtCQUFrQjttR0FBbEIsa0JBQWtCOzs0RkFBbEIsa0JBQWtCO2tCQUg5QixTQUFTO21CQUFDO29CQUNQLFFBQVEsRUFBRSxlQUFlO2lCQUM1QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENka0RyYWcgfSBmcm9tICdAYW5ndWxhci9jZGsvZHJhZy1kcm9wJztcbmltcG9ydCB7IERpcmVjdGl2ZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTm9kZSB9IGZyb20gJ25neC1lZHUtc2hhcmluZy1hcGknO1xuaW1wb3J0IHsgTm9kZXNEcmFnRHJvcFNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9ub2Rlcy1kcmFnLWRyb3Auc2VydmljZSc7XG5cbi8qKlxuICogQSBkcmFnZ2FibGUgbm9kZS5cbiAqXG4gKiBVc2UgaW4gY29tYmluYXRpb24gd2l0aCBgY2RrRHJhZ2AsIHNldHRpbmcgYGNka0RyYWdEYXRhYCB0byB0aGUgYXJyYXkgb2Ygbm9kZXMgdG8gYmUgZHJhZ2dlZC5cbiAqL1xuQERpcmVjdGl2ZSh7XG4gICAgc2VsZWN0b3I6ICdbZXNOb2Rlc0RyYWddJyxcbn0pXG5leHBvcnQgY2xhc3MgTm9kZXNEcmFnRGlyZWN0aXZlIHtcbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIGNka0RyYWc6IENka0RyYWc8Tm9kZVtdPiwgcHJpdmF0ZSBub2Rlc0RyYWdEcm9wOiBOb2Rlc0RyYWdEcm9wU2VydmljZSkge1xuICAgICAgICB0aGlzLmNka0RyYWcuc3RhcnRlZC5zdWJzY3JpYmUoKGV2ZW50KSA9PiB7XG4gICAgICAgICAgICB0aGlzLm5vZGVzRHJhZ0Ryb3AuZHJhZ2dlZE5vZGVzID0gZXZlbnQuc291cmNlLmRhdGE7XG4gICAgICAgICAgICAvLyBQb3NpdGlvbiB0aGUgcHJldmlldyBlbGVtZW50ICh0aGUgb25lIGJlaW5nIGRyYWdnZWQgYXJvdW5kKSBuZXh0IHRvIHRoZSBjdXJzb3IgdG9cbiAgICAgICAgICAgIC8vIGF2b2lkIGNvdmVyaW5nIHBvc3NpYmxlIGRyb3AgdGFyZ2V0cyB3aXRoIHRoZSBwcmV2aWV3LlxuICAgICAgICAgICAgZXZlbnQuc291cmNlLl9kcmFnUmVmWydfcGlja3VwUG9zaXRpb25JbkVsZW1lbnQnXSA9IHsgeDogMCwgeTogMCB9O1xuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5jZGtEcmFnLnJlbGVhc2VkLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICBpZiAodGhpcy5ub2Rlc0RyYWdEcm9wLmNhbkRyb3A/LmFjY2VwdCkge1xuICAgICAgICAgICAgICAgIHRoaXMuaW5oaWJpdFByZXZpZXdBbmltYXRpb24oKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMuY2RrRHJhZy5kcm9wcGVkLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLm5vZGVzRHJhZ0Ryb3Aub25Ecm9wcGVkKHRoaXMuY2RrRHJhZy5kYXRhKTtcbiAgICAgICAgICAgIHRoaXMubm9kZXNEcmFnRHJvcC5kcmFnZ2VkTm9kZXMgPSBudWxsO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGluaGliaXRQcmV2aWV3QW5pbWF0aW9uKCkge1xuICAgICAgICBjb25zdCBzdHlsZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3N0eWxlJyk7XG4gICAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoc3R5bGUpO1xuICAgICAgICBzdHlsZS5pbm5lckhUTUwgPSBgLmNkay1kcmFnLXByZXZpZXcgeyB0cmFuc2l0aW9uOiBub25lICFpbXBvcnRhbnQ7IH1gO1xuICAgICAgICAvLyBEb24ndCBuZWVkIHRvIGdvIG91dHNpZGUgbmcgem9uZSBiZWNhdXNlIGBjZGtEcmFnLnJlbGVhc2VkYCBhbHJlYWR5IHJ1bnMgb3V0c2lkZSB0aGVcbiAgICAgICAgLy8gem9uZS5cbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICBkb2N1bWVudC5ib2R5LnJlbW92ZUNoaWxkKHN0eWxlKTtcbiAgICAgICAgfSk7XG4gICAgfVxufVxuIl19
@@ -1,105 +0,0 @@
1
- import { Directive, EventEmitter, Input, Output, } from '@angular/core';
2
- import { BehaviorSubject, Observable, Subject } from 'rxjs';
3
- import { takeUntil } from 'rxjs/operators';
4
- import * as i0 from "@angular/core";
5
- import * as i1 from "../../services/nodes-drag-drop.service";
6
- const ACTIVE_DROP_TARGET_ACCEPT_CLASS = 'es-nodes-active-drop-target-accept';
7
- const ACTIVE_DROP_TARGET_DENY_CLASS = 'es-nodes-active-drop-target-deny';
8
- export class NodesDropTargetDirective {
9
- get active() {
10
- return this.activeDropTargetSubject.value;
11
- }
12
- constructor(ngZone, elementRef, nodesDragDrop) {
13
- this.ngZone = ngZone;
14
- this.elementRef = elementRef;
15
- this.nodesDragDrop = nodesDragDrop;
16
- this.nodeDropped = new EventEmitter();
17
- this.activeDropTargetSubject = new BehaviorSubject(null);
18
- this.destroyed = new Subject();
19
- this.registerMouseEnterLeave();
20
- this.registerActiveDropTarget();
21
- }
22
- ngOnDestroy() {
23
- this.destroyed.next();
24
- this.destroyed.complete();
25
- }
26
- _setActiveDropTarget(value) {
27
- this.activeDropTargetSubject.next(value);
28
- }
29
- registerMouseEnterLeave() {
30
- this.ngZone.runOutsideAngular(() => {
31
- this.elementRef.nativeElement.addEventListener('mouseenter', () => this.nodesDragDrop.onMouseEnter(this));
32
- this.elementRef.nativeElement.addEventListener('mouseleave', () => this.nodesDragDrop.onMouseLeave(this));
33
- // Firefox does not fire a mouseleave event when the element is removed from the DOM
34
- // while being hovered. When an element is dragged, it will be replaced with a
35
- // placeholder. If the element was also a drop target, we would think that we are still
36
- // hovering the element.
37
- observeRemovedFromParent(this.elementRef.nativeElement)
38
- .pipe(takeUntil(this.destroyed))
39
- .subscribe(() => this.nodesDragDrop.onMouseLeave(this));
40
- });
41
- }
42
- registerActiveDropTarget() {
43
- this.activeDropTargetSubject
44
- .pipe(takeUntil(this.destroyed))
45
- .subscribe((dropTargetState) => {
46
- const canDrop = dropTargetState?.canDrop;
47
- const classList = this.elementRef.nativeElement.classList;
48
- classList.remove(ACTIVE_DROP_TARGET_ACCEPT_CLASS, ACTIVE_DROP_TARGET_DENY_CLASS);
49
- if (canDrop?.accept) {
50
- classList.add(ACTIVE_DROP_TARGET_ACCEPT_CLASS);
51
- }
52
- else if (canDrop?.denyExplicit) {
53
- classList.add(ACTIVE_DROP_TARGET_DENY_CLASS);
54
- }
55
- });
56
- }
57
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: NodesDropTargetDirective, deps: [{ token: i0.NgZone }, { token: i0.ElementRef }, { token: i1.NodesDragDropService }], target: i0.ɵɵFactoryTarget.Directive }); }
58
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.12", type: NodesDropTargetDirective, selector: "[esNodesDropTarget]", inputs: { target: ["esNodesDropTarget", "target"], canDropNodes: "canDropNodes" }, outputs: { nodeDropped: "nodeDropped" }, exportAs: ["esNodesDropTarget"], ngImport: i0 }); }
59
- }
60
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: NodesDropTargetDirective, decorators: [{
61
- type: Directive,
62
- args: [{
63
- selector: '[esNodesDropTarget]',
64
- exportAs: 'esNodesDropTarget',
65
- }]
66
- }], ctorParameters: () => [{ type: i0.NgZone }, { type: i0.ElementRef }, { type: i1.NodesDragDropService }], propDecorators: { target: [{
67
- type: Input,
68
- args: ['esNodesDropTarget']
69
- }], canDropNodes: [{
70
- type: Input
71
- }], nodeDropped: [{
72
- type: Output
73
- }] } });
74
- function observeRemovedFromParent(element) {
75
- return new Observable((subscriber) => {
76
- const observer = new MutationObserver((event) => {
77
- for (const mutation of event) {
78
- // @ts-ignore
79
- if ([...mutation.removedNodes].includes(element)) {
80
- subscriber.next();
81
- }
82
- }
83
- });
84
- // Wait for `element` to be attached to the DOM.
85
- let timeout = setTimeout(() => {
86
- timeout = null;
87
- observer.observe(element.parentNode, { childList: true, subtree: false });
88
- });
89
- return () => {
90
- // In case the element was destroyed before we attached the mutation observer, we cancel
91
- // the observable returned by this function and don't attach the mutation observer.
92
- if (timeout !== null) {
93
- // TODO: Investigate elements that trigger the following warning.
94
- //
95
- // console.warn(
96
- // 'Possible performance leak: the element got destroyed before it could be added to the DOM.',
97
- // element,
98
- // );
99
- clearTimeout(timeout);
100
- }
101
- observer.disconnect();
102
- };
103
- });
104
- }
105
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm9kZXMtZHJvcC10YXJnZXQuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZWR1LXNoYXJpbmctdWkvc3JjL2xpYi9kaXJlY3RpdmVzL2RyYWctbm9kZXMvbm9kZXMtZHJvcC10YXJnZXQuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDSCxTQUFTLEVBRVQsWUFBWSxFQUNaLEtBQUssRUFHTCxNQUFNLEdBQ1QsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGVBQWUsRUFBRSxVQUFVLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzVELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7O0FBSTNDLE1BQU0sK0JBQStCLEdBQUcsb0NBQW9DLENBQUM7QUFDN0UsTUFBTSw2QkFBNkIsR0FBRyxrQ0FBa0MsQ0FBQztBQU16RSxNQUFNLE9BQU8sd0JBQXdCO0lBS2pDLElBQUksTUFBTTtRQUNOLE9BQU8sSUFBSSxDQUFDLHVCQUF1QixDQUFDLEtBQUssQ0FBQztJQUM5QyxDQUFDO0lBS0QsWUFDWSxNQUFjLEVBQ2QsVUFBbUMsRUFDbkMsYUFBbUM7UUFGbkMsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQUNkLGVBQVUsR0FBVixVQUFVLENBQXlCO1FBQ25DLGtCQUFhLEdBQWIsYUFBYSxDQUFzQjtRQVpyQyxnQkFBVyxHQUFHLElBQUksWUFBWSxFQUFlLENBQUM7UUFNaEQsNEJBQXVCLEdBQUcsSUFBSSxlQUFlLENBQXlCLElBQUksQ0FBQyxDQUFDO1FBQzVFLGNBQVMsR0FBRyxJQUFJLE9BQU8sRUFBUSxDQUFDO1FBT3BDLElBQUksQ0FBQyx1QkFBdUIsRUFBRSxDQUFDO1FBQy9CLElBQUksQ0FBQyx3QkFBd0IsRUFBRSxDQUFDO0lBQ3BDLENBQUM7SUFFRCxXQUFXO1FBQ1AsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUN0QixJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQzlCLENBQUM7SUFFRCxvQkFBb0IsQ0FBQyxLQUE2QjtRQUM5QyxJQUFJLENBQUMsdUJBQXVCLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzdDLENBQUM7SUFFTyx1QkFBdUI7UUFDM0IsSUFBSSxDQUFDLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxHQUFHLEVBQUU7WUFDL0IsSUFBSSxDQUFDLFVBQVUsQ0FBQyxhQUFhLENBQUMsZ0JBQWdCLENBQUMsWUFBWSxFQUFFLEdBQUcsRUFBRSxDQUM5RCxJQUFJLENBQUMsYUFBYSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsQ0FDeEMsQ0FBQztZQUNGLElBQUksQ0FBQyxVQUFVLENBQUMsYUFBYSxDQUFDLGdCQUFnQixDQUFDLFlBQVksRUFBRSxHQUFHLEVBQUUsQ0FDOUQsSUFBSSxDQUFDLGFBQWEsQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLENBQ3hDLENBQUM7WUFDRixvRkFBb0Y7WUFDcEYsOEVBQThFO1lBQzlFLHVGQUF1RjtZQUN2Rix3QkFBd0I7WUFDeEIsd0JBQXdCLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxhQUFhLENBQUM7aUJBQ2xELElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO2lCQUMvQixTQUFTLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztRQUNoRSxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFTyx3QkFBd0I7UUFDNUIsSUFBSSxDQUFDLHVCQUF1QjthQUN2QixJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQzthQUMvQixTQUFTLENBQUMsQ0FBQyxlQUFlLEVBQUUsRUFBRTtZQUMzQixNQUFNLE9BQU8sR0FBRyxlQUFlLEVBQUUsT0FBTyxDQUFDO1lBQ3pDLE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsYUFBYSxDQUFDLFNBQVMsQ0FBQztZQUMxRCxTQUFTLENBQUMsTUFBTSxDQUFDLCtCQUErQixFQUFFLDZCQUE2QixDQUFDLENBQUM7WUFDakYsSUFBSSxPQUFPLEVBQUUsTUFBTSxFQUFFLENBQUM7Z0JBQ2xCLFNBQVMsQ0FBQyxHQUFHLENBQUMsK0JBQStCLENBQUMsQ0FBQztZQUNuRCxDQUFDO2lCQUFNLElBQUksT0FBTyxFQUFFLFlBQVksRUFBRSxDQUFDO2dCQUMvQixTQUFTLENBQUMsR0FBRyxDQUFDLDZCQUE2QixDQUFDLENBQUM7WUFDakQsQ0FBQztRQUNMLENBQUMsQ0FBQyxDQUFDO0lBQ1gsQ0FBQzsrR0E3RFEsd0JBQXdCO21HQUF4Qix3QkFBd0I7OzRGQUF4Qix3QkFBd0I7a0JBSnBDLFNBQVM7bUJBQUM7b0JBQ1AsUUFBUSxFQUFFLHFCQUFxQjtvQkFDL0IsUUFBUSxFQUFFLG1CQUFtQjtpQkFDaEM7dUlBRStCLE1BQU07c0JBQWpDLEtBQUs7dUJBQUMsbUJBQW1CO2dCQUNqQixZQUFZO3NCQUFwQixLQUFLO2dCQUNJLFdBQVc7c0JBQXBCLE1BQU07O0FBNkRYLFNBQVMsd0JBQXdCLENBQUMsT0FBb0I7SUFDbEQsT0FBTyxJQUFJLFVBQVUsQ0FBQyxDQUFDLFVBQVUsRUFBRSxFQUFFO1FBQ2pDLE1BQU0sUUFBUSxHQUFHLElBQUksZ0JBQWdCLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRTtZQUM1QyxLQUFLLE1BQU0sUUFBUSxJQUFJLEtBQUssRUFBRSxDQUFDO2dCQUMzQixhQUFhO2dCQUNiLElBQUksQ0FBQyxHQUFHLFFBQVEsQ0FBQyxZQUFZLENBQUMsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztvQkFDL0MsVUFBVSxDQUFDLElBQUksRUFBRSxDQUFDO2dCQUN0QixDQUFDO1lBQ0wsQ0FBQztRQUNMLENBQUMsQ0FBQyxDQUFDO1FBQ0gsZ0RBQWdEO1FBQ2hELElBQUksT0FBTyxHQUFHLFVBQVUsQ0FBQyxHQUFHLEVBQUU7WUFDMUIsT0FBTyxHQUFHLElBQUksQ0FBQztZQUNmLFFBQVEsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLFVBQVUsRUFBRSxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUM7UUFDOUUsQ0FBQyxDQUFDLENBQUM7UUFDSCxPQUFPLEdBQUcsRUFBRTtZQUNSLHdGQUF3RjtZQUN4RixtRkFBbUY7WUFDbkYsSUFBSSxPQUFPLEtBQUssSUFBSSxFQUFFLENBQUM7Z0JBQ25CLGlFQUFpRTtnQkFDakUsRUFBRTtnQkFDRixnQkFBZ0I7Z0JBQ2hCLG1HQUFtRztnQkFDbkcsZUFBZTtnQkFDZixLQUFLO2dCQUNMLFlBQVksQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUMxQixDQUFDO1lBQ0QsUUFBUSxDQUFDLFVBQVUsRUFBRSxDQUFDO1FBQzFCLENBQUMsQ0FBQztJQUNOLENBQUMsQ0FBQyxDQUFDO0FBQ1AsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gICAgRGlyZWN0aXZlLFxuICAgIEVsZW1lbnRSZWYsXG4gICAgRXZlbnRFbWl0dGVyLFxuICAgIElucHV0LFxuICAgIE5nWm9uZSxcbiAgICBPbkRlc3Ryb3ksXG4gICAgT3V0cHV0LFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgT2JzZXJ2YWJsZSwgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgdGFrZVVudGlsIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgQ2FuRHJvcCwgRHJhZ0RhdGEsIERyb3BUYXJnZXRTdGF0ZSB9IGZyb20gJy4uLy4uL3R5cGVzL2RyYWctZHJvcCc7XG5pbXBvcnQgeyBOb2Rlc0RyYWdEcm9wU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL25vZGVzLWRyYWctZHJvcC5zZXJ2aWNlJztcblxuY29uc3QgQUNUSVZFX0RST1BfVEFSR0VUX0FDQ0VQVF9DTEFTUyA9ICdlcy1ub2Rlcy1hY3RpdmUtZHJvcC10YXJnZXQtYWNjZXB0JztcbmNvbnN0IEFDVElWRV9EUk9QX1RBUkdFVF9ERU5ZX0NMQVNTID0gJ2VzLW5vZGVzLWFjdGl2ZS1kcm9wLXRhcmdldC1kZW55JztcblxuQERpcmVjdGl2ZSh7XG4gICAgc2VsZWN0b3I6ICdbZXNOb2Rlc0Ryb3BUYXJnZXRdJyxcbiAgICBleHBvcnRBczogJ2VzTm9kZXNEcm9wVGFyZ2V0Jyxcbn0pXG5leHBvcnQgY2xhc3MgTm9kZXNEcm9wVGFyZ2V0RGlyZWN0aXZlPFQgPSB1bmtub3duPiBpbXBsZW1lbnRzIE9uRGVzdHJveSB7XG4gICAgQElucHV0KCdlc05vZGVzRHJvcFRhcmdldCcpIHRhcmdldDogVDtcbiAgICBASW5wdXQoKSBjYW5Ecm9wTm9kZXM6IChkcmFnRGF0YTogRHJhZ0RhdGE8VD4pID0+IENhbkRyb3A7XG4gICAgQE91dHB1dCgpIG5vZGVEcm9wcGVkID0gbmV3IEV2ZW50RW1pdHRlcjxEcmFnRGF0YTxUPj4oKTtcblxuICAgIGdldCBhY3RpdmUoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmFjdGl2ZURyb3BUYXJnZXRTdWJqZWN0LnZhbHVlO1xuICAgIH1cblxuICAgIHByaXZhdGUgYWN0aXZlRHJvcFRhcmdldFN1YmplY3QgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PERyb3BUYXJnZXRTdGF0ZSB8IG51bGw+KG51bGwpO1xuICAgIHByaXZhdGUgZGVzdHJveWVkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwcml2YXRlIG5nWm9uZTogTmdab25lLFxuICAgICAgICBwcml2YXRlIGVsZW1lbnRSZWY6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+LFxuICAgICAgICBwcml2YXRlIG5vZGVzRHJhZ0Ryb3A6IE5vZGVzRHJhZ0Ryb3BTZXJ2aWNlLFxuICAgICkge1xuICAgICAgICB0aGlzLnJlZ2lzdGVyTW91c2VFbnRlckxlYXZlKCk7XG4gICAgICAgIHRoaXMucmVnaXN0ZXJBY3RpdmVEcm9wVGFyZ2V0KCk7XG4gICAgfVxuXG4gICAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZGVzdHJveWVkLm5leHQoKTtcbiAgICAgICAgdGhpcy5kZXN0cm95ZWQuY29tcGxldGUoKTtcbiAgICB9XG5cbiAgICBfc2V0QWN0aXZlRHJvcFRhcmdldCh2YWx1ZTogRHJvcFRhcmdldFN0YXRlIHwgbnVsbCkge1xuICAgICAgICB0aGlzLmFjdGl2ZURyb3BUYXJnZXRTdWJqZWN0Lm5leHQodmFsdWUpO1xuICAgIH1cblxuICAgIHByaXZhdGUgcmVnaXN0ZXJNb3VzZUVudGVyTGVhdmUoKSB7XG4gICAgICAgIHRoaXMubmdab25lLnJ1bk91dHNpZGVBbmd1bGFyKCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNlZW50ZXInLCAoKSA9PlxuICAgICAgICAgICAgICAgIHRoaXMubm9kZXNEcmFnRHJvcC5vbk1vdXNlRW50ZXIodGhpcyksXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignbW91c2VsZWF2ZScsICgpID0+XG4gICAgICAgICAgICAgICAgdGhpcy5ub2Rlc0RyYWdEcm9wLm9uTW91c2VMZWF2ZSh0aGlzKSxcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICAvLyBGaXJlZm94IGRvZXMgbm90IGZpcmUgYSBtb3VzZWxlYXZlIGV2ZW50IHdoZW4gdGhlIGVsZW1lbnQgaXMgcmVtb3ZlZCBmcm9tIHRoZSBET01cbiAgICAgICAgICAgIC8vIHdoaWxlIGJlaW5nIGhvdmVyZWQuIFdoZW4gYW4gZWxlbWVudCBpcyBkcmFnZ2VkLCBpdCB3aWxsIGJlIHJlcGxhY2VkIHdpdGggYVxuICAgICAgICAgICAgLy8gcGxhY2Vob2xkZXIuIElmIHRoZSBlbGVtZW50IHdhcyBhbHNvIGEgZHJvcCB0YXJnZXQsIHdlIHdvdWxkIHRoaW5rIHRoYXQgd2UgYXJlIHN0aWxsXG4gICAgICAgICAgICAvLyBob3ZlcmluZyB0aGUgZWxlbWVudC5cbiAgICAgICAgICAgIG9ic2VydmVSZW1vdmVkRnJvbVBhcmVudCh0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudClcbiAgICAgICAgICAgICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95ZWQpKVxuICAgICAgICAgICAgICAgIC5zdWJzY3JpYmUoKCkgPT4gdGhpcy5ub2Rlc0RyYWdEcm9wLm9uTW91c2VMZWF2ZSh0aGlzKSk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgcmVnaXN0ZXJBY3RpdmVEcm9wVGFyZ2V0KCkge1xuICAgICAgICB0aGlzLmFjdGl2ZURyb3BUYXJnZXRTdWJqZWN0XG4gICAgICAgICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95ZWQpKVxuICAgICAgICAgICAgLnN1YnNjcmliZSgoZHJvcFRhcmdldFN0YXRlKSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgY2FuRHJvcCA9IGRyb3BUYXJnZXRTdGF0ZT8uY2FuRHJvcDtcbiAgICAgICAgICAgICAgICBjb25zdCBjbGFzc0xpc3QgPSB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5jbGFzc0xpc3Q7XG4gICAgICAgICAgICAgICAgY2xhc3NMaXN0LnJlbW92ZShBQ1RJVkVfRFJPUF9UQVJHRVRfQUNDRVBUX0NMQVNTLCBBQ1RJVkVfRFJPUF9UQVJHRVRfREVOWV9DTEFTUyk7XG4gICAgICAgICAgICAgICAgaWYgKGNhbkRyb3A/LmFjY2VwdCkge1xuICAgICAgICAgICAgICAgICAgICBjbGFzc0xpc3QuYWRkKEFDVElWRV9EUk9QX1RBUkdFVF9BQ0NFUFRfQ0xBU1MpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoY2FuRHJvcD8uZGVueUV4cGxpY2l0KSB7XG4gICAgICAgICAgICAgICAgICAgIGNsYXNzTGlzdC5hZGQoQUNUSVZFX0RST1BfVEFSR0VUX0RFTllfQ0xBU1MpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgIH1cbn1cblxuZnVuY3Rpb24gb2JzZXJ2ZVJlbW92ZWRGcm9tUGFyZW50KGVsZW1lbnQ6IEhUTUxFbGVtZW50KTogT2JzZXJ2YWJsZTx2b2lkPiB7XG4gICAgcmV0dXJuIG5ldyBPYnNlcnZhYmxlKChzdWJzY3JpYmVyKSA9PiB7XG4gICAgICAgIGNvbnN0IG9ic2VydmVyID0gbmV3IE11dGF0aW9uT2JzZXJ2ZXIoKGV2ZW50KSA9PiB7XG4gICAgICAgICAgICBmb3IgKGNvbnN0IG11dGF0aW9uIG9mIGV2ZW50KSB7XG4gICAgICAgICAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICAgICAgICAgIGlmIChbLi4ubXV0YXRpb24ucmVtb3ZlZE5vZGVzXS5pbmNsdWRlcyhlbGVtZW50KSkge1xuICAgICAgICAgICAgICAgICAgICBzdWJzY3JpYmVyLm5leHQoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICAvLyBXYWl0IGZvciBgZWxlbWVudGAgdG8gYmUgYXR0YWNoZWQgdG8gdGhlIERPTS5cbiAgICAgICAgbGV0IHRpbWVvdXQgPSBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgIHRpbWVvdXQgPSBudWxsO1xuICAgICAgICAgICAgb2JzZXJ2ZXIub2JzZXJ2ZShlbGVtZW50LnBhcmVudE5vZGUsIHsgY2hpbGRMaXN0OiB0cnVlLCBzdWJ0cmVlOiBmYWxzZSB9KTtcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiAoKSA9PiB7XG4gICAgICAgICAgICAvLyBJbiBjYXNlIHRoZSBlbGVtZW50IHdhcyBkZXN0cm95ZWQgYmVmb3JlIHdlIGF0dGFjaGVkIHRoZSBtdXRhdGlvbiBvYnNlcnZlciwgd2UgY2FuY2VsXG4gICAgICAgICAgICAvLyB0aGUgb2JzZXJ2YWJsZSByZXR1cm5lZCBieSB0aGlzIGZ1bmN0aW9uIGFuZCBkb24ndCBhdHRhY2ggdGhlIG11dGF0aW9uIG9ic2VydmVyLlxuICAgICAgICAgICAgaWYgKHRpbWVvdXQgIT09IG51bGwpIHtcbiAgICAgICAgICAgICAgICAvLyBUT0RPOiBJbnZlc3RpZ2F0ZSBlbGVtZW50cyB0aGF0IHRyaWdnZXIgdGhlIGZvbGxvd2luZyB3YXJuaW5nLlxuICAgICAgICAgICAgICAgIC8vXG4gICAgICAgICAgICAgICAgLy8gY29uc29sZS53YXJuKFxuICAgICAgICAgICAgICAgIC8vICAgICAnUG9zc2libGUgcGVyZm9ybWFuY2UgbGVhazogdGhlIGVsZW1lbnQgZ290IGRlc3Ryb3llZCBiZWZvcmUgaXQgY291bGQgYmUgYWRkZWQgdG8gdGhlIERPTS4nLFxuICAgICAgICAgICAgICAgIC8vICAgICBlbGVtZW50LFxuICAgICAgICAgICAgICAgIC8vICk7XG4gICAgICAgICAgICAgICAgY2xlYXJUaW1lb3V0KHRpbWVvdXQpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgb2JzZXJ2ZXIuZGlzY29ubmVjdCgpO1xuICAgICAgICB9O1xuICAgIH0pO1xufVxuIl19
@@ -1,44 +0,0 @@
1
- import { Directive, HostListener } from '@angular/core';
2
- import * as i0 from "@angular/core";
3
- export class FocusStateDirective {
4
- constructor() {
5
- /** Either the element or one of its descendants has focus. */
6
- this.hasFocus = false;
7
- /** The element is being hovered with the cursor. */
8
- this.hovering = false;
9
- }
10
- onFocusIn() {
11
- this.hasFocus = true;
12
- }
13
- onFocusOut() {
14
- this.hasFocus = false;
15
- }
16
- onMouseOver() {
17
- this.hovering = true;
18
- }
19
- onMouseOut() {
20
- this.hovering = false;
21
- }
22
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: FocusStateDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
23
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.12", type: FocusStateDirective, selector: "[esFocusState]", host: { listeners: { "focusin": "onFocusIn()", "focusout": "onFocusOut()", "mouseenter": "onMouseOver()", "mouseleave": "onMouseOut()" } }, exportAs: ["esFocusState"], ngImport: i0 }); }
24
- }
25
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: FocusStateDirective, decorators: [{
26
- type: Directive,
27
- args: [{
28
- selector: '[esFocusState]',
29
- exportAs: 'esFocusState',
30
- }]
31
- }], ctorParameters: () => [], propDecorators: { onFocusIn: [{
32
- type: HostListener,
33
- args: ['focusin']
34
- }], onFocusOut: [{
35
- type: HostListener,
36
- args: ['focusout']
37
- }], onMouseOver: [{
38
- type: HostListener,
39
- args: ['mouseenter']
40
- }], onMouseOut: [{
41
- type: HostListener,
42
- args: ['mouseleave']
43
- }] } });
44
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9jdXMtc3RhdGUuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZWR1LXNoYXJpbmctdWkvc3JjL2xpYi9kaXJlY3RpdmVzL2ZvY3VzLXN0YXRlLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxNQUFNLGVBQWUsQ0FBQzs7QUFNeEQsTUFBTSxPQUFPLG1CQUFtQjtJQU01QjtRQUxBLDhEQUE4RDtRQUM5RCxhQUFRLEdBQUcsS0FBSyxDQUFDO1FBQ2pCLG9EQUFvRDtRQUNwRCxhQUFRLEdBQUcsS0FBSyxDQUFDO0lBRUYsQ0FBQztJQUdoQixTQUFTO1FBQ0wsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUM7SUFDekIsQ0FBQztJQUdELFVBQVU7UUFDTixJQUFJLENBQUMsUUFBUSxHQUFHLEtBQUssQ0FBQztJQUMxQixDQUFDO0lBR0QsV0FBVztRQUNQLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDO0lBQ3pCLENBQUM7SUFHRCxVQUFVO1FBQ04sSUFBSSxDQUFDLFFBQVEsR0FBRyxLQUFLLENBQUM7SUFDMUIsQ0FBQzsrR0ExQlEsbUJBQW1CO21HQUFuQixtQkFBbUI7OzRGQUFuQixtQkFBbUI7a0JBSi9CLFNBQVM7bUJBQUM7b0JBQ1AsUUFBUSxFQUFFLGdCQUFnQjtvQkFDMUIsUUFBUSxFQUFFLGNBQWM7aUJBQzNCO3dEQVVHLFNBQVM7c0JBRFIsWUFBWTt1QkFBQyxTQUFTO2dCQU12QixVQUFVO3NCQURULFlBQVk7dUJBQUMsVUFBVTtnQkFNeEIsV0FBVztzQkFEVixZQUFZO3VCQUFDLFlBQVk7Z0JBTTFCLFVBQVU7c0JBRFQsWUFBWTt1QkFBQyxZQUFZIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGlyZWN0aXZlLCBIb3N0TGlzdGVuZXIgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuQERpcmVjdGl2ZSh7XG4gICAgc2VsZWN0b3I6ICdbZXNGb2N1c1N0YXRlXScsXG4gICAgZXhwb3J0QXM6ICdlc0ZvY3VzU3RhdGUnLFxufSlcbmV4cG9ydCBjbGFzcyBGb2N1c1N0YXRlRGlyZWN0aXZlIHtcbiAgICAvKiogRWl0aGVyIHRoZSBlbGVtZW50IG9yIG9uZSBvZiBpdHMgZGVzY2VuZGFudHMgaGFzIGZvY3VzLiAqL1xuICAgIGhhc0ZvY3VzID0gZmFsc2U7XG4gICAgLyoqIFRoZSBlbGVtZW50IGlzIGJlaW5nIGhvdmVyZWQgd2l0aCB0aGUgY3Vyc29yLiAqL1xuICAgIGhvdmVyaW5nID0gZmFsc2U7XG5cbiAgICBjb25zdHJ1Y3RvcigpIHt9XG5cbiAgICBASG9zdExpc3RlbmVyKCdmb2N1c2luJylcbiAgICBvbkZvY3VzSW4oKSB7XG4gICAgICAgIHRoaXMuaGFzRm9jdXMgPSB0cnVlO1xuICAgIH1cblxuICAgIEBIb3N0TGlzdGVuZXIoJ2ZvY3Vzb3V0JylcbiAgICBvbkZvY3VzT3V0KCkge1xuICAgICAgICB0aGlzLmhhc0ZvY3VzID0gZmFsc2U7XG4gICAgfVxuXG4gICAgQEhvc3RMaXN0ZW5lcignbW91c2VlbnRlcicpXG4gICAgb25Nb3VzZU92ZXIoKSB7XG4gICAgICAgIHRoaXMuaG92ZXJpbmcgPSB0cnVlO1xuICAgIH1cblxuICAgIEBIb3N0TGlzdGVuZXIoJ21vdXNlbGVhdmUnKVxuICAgIG9uTW91c2VPdXQoKSB7XG4gICAgICAgIHRoaXMuaG92ZXJpbmcgPSBmYWxzZTtcbiAgICB9XG59XG4iXX0=