ngx-edu-sharing-ui 10.0.21 → 10.0.22

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,184 +0,0 @@
1
- /**
2
- * Created by Torsten on 13.01.2017.
3
- */
4
- import { coerceBooleanProperty } from '@angular/cdk/coercion';
5
- import { Directive, Input, Optional, } from '@angular/core';
6
- import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
7
- import { BehaviorSubject, combineLatest, firstValueFrom } from 'rxjs';
8
- import { filter } from 'rxjs/operators';
9
- import { notNull } from '../util/functions';
10
- import * as i0 from "@angular/core";
11
- import * as i1 from "@angular/common/http";
12
- import * as i2 from "@ngx-translate/core";
13
- import * as i3 from "ngx-edu-sharing-api";
14
- /**
15
- * Replaces the element's content with an icon.
16
- *
17
- * Example: `<i esIcon="save"></i>`
18
- *
19
- * Optionally, a translated `aria-label` can be attached by setting `aria` to a truthy value: `<i
20
- * esIcon="save" aria="true"></i>`. Otherwise, `aria-hidden` will be set.
21
- *
22
- * For backwards compatibility, the directive is also activated on elements that set
23
- * `class="material-icons"`. This is mainly to set the `aria-hidden` attribute. Occurrences should
24
- * be updated to the syntax above.
25
- */
26
- export class IconDirective {
27
- /**
28
- * An alt text to show to screen readers.
29
- *
30
- * If omitted, the icon will be invisible to screen readers.
31
- *
32
- * @see https://material.angular.io/components/icon/overview#indicator-icons
33
- */
34
- set altText(altText) {
35
- this.setAltText(altText);
36
- }
37
- /** If true, an alt text (see above) will be set based on the icon. */
38
- set aria(aria) {
39
- aria = coerceBooleanProperty(aria);
40
- if (aria !== this._aria) {
41
- this._aria = aria;
42
- if (this.isReady) {
43
- this.updateAria();
44
- }
45
- }
46
- }
47
- set esIcon(id) {
48
- this.originalId$.next(id);
49
- }
50
- constructor(element, http, translate, renderer, config) {
51
- this.element = element;
52
- this.http = http;
53
- this.translate = translate;
54
- this.renderer = renderer;
55
- this.config = config;
56
- this.originalId$ = new BehaviorSubject(null);
57
- this.isReady = false;
58
- combineLatest([this.originalId$.pipe(filter(notNull)), this.config.get('icons', null)])
59
- .pipe(takeUntilDestroyed())
60
- .subscribe(([originalId, iconsConfig]) => this.setIcon(originalId, iconsConfig));
61
- }
62
- async ngOnInit() {
63
- this.isReady = true;
64
- this.element.nativeElement.setAttribute('aria-hidden', 'true');
65
- // Material styles expect icons to have the class `mat-icon`, e.g.,
66
- // https://github.com/angular/components/blob/ae0b9e1c1bae5e937d039ea53652fe1656bc4623/src/material/form-field/form-field.scss#L156
67
- this.element.nativeElement.classList.add('mat-icon');
68
- this.updateAria();
69
- }
70
- ngOnDestroy() {
71
- if (this.altTextSpan) {
72
- this.altTextSpan.remove();
73
- }
74
- }
75
- async setIcon(id, iconsConfig) {
76
- if (this._id) {
77
- this.element.nativeElement.classList.remove('edu-icons', 'custom-icons', 'material-icons');
78
- if (this.svg) {
79
- this.renderer.removeChild(this.element.nativeElement, this.svg);
80
- }
81
- }
82
- if (id.startsWith('svg-')) {
83
- try {
84
- const iconName = id.slice(4);
85
- const fileName = iconName.endsWith('.svg') ? iconName : `${iconName}.svg`;
86
- const path = `assets/images/icons/${fileName}`;
87
- const svgText = await firstValueFrom(this.http.get(path, { responseType: 'text' }));
88
- if (!svgText)
89
- return;
90
- const parser = new DOMParser();
91
- const doc = parser.parseFromString(svgText, 'image/svg+xml');
92
- const svgElement = doc.querySelector('svg');
93
- if (!svgElement) {
94
- console.error('No SVG element found in the file');
95
- return;
96
- }
97
- svgElement.classList.add('svg-icons');
98
- this.svg = svgElement;
99
- this.renderer.appendChild(this.element.nativeElement, this.svg);
100
- if (this._aria) {
101
- this.updateAria();
102
- }
103
- return;
104
- }
105
- catch (error) {
106
- console.error('Error loading SVG:', error);
107
- return;
108
- }
109
- }
110
- let customClass = null;
111
- const mapping = iconsConfig?.filter((i) => i.original === id);
112
- if (mapping?.length === 1) {
113
- id = mapping[0].replace || '';
114
- customClass = mapping[0].cssClass;
115
- }
116
- this._id = id;
117
- if (this._aria) {
118
- this.updateAria();
119
- }
120
- let cssClass;
121
- if (id?.startsWith('edu-') && !customClass) {
122
- cssClass = 'edu-icons';
123
- id = id.substring(4);
124
- }
125
- else if (id?.startsWith('custom-') || customClass) {
126
- cssClass = 'custom-icons';
127
- id = id.substring(7);
128
- }
129
- else {
130
- cssClass = 'material-icons';
131
- }
132
- this.element.nativeElement.classList.add(cssClass);
133
- if (customClass) {
134
- this.element.nativeElement.classList.add(customClass);
135
- }
136
- this.element.nativeElement.innerText = id;
137
- }
138
- updateAria() {
139
- if (this._aria !== undefined) {
140
- if (this._aria && this._id) {
141
- this.translate.get('ICON_LABELS.' + this._id).subscribe((lang) => {
142
- this.setAltText(lang);
143
- });
144
- }
145
- else {
146
- this.setAltText(null);
147
- }
148
- }
149
- }
150
- setAltText(altText) {
151
- if (this.svg) {
152
- // for SVG elements, add aria-label instead
153
- this.svg.setAttribute('aria-label', altText);
154
- }
155
- if (altText && !this.altTextSpan) {
156
- this.insertAltTextSpan();
157
- }
158
- if (this.altTextSpan) {
159
- this.altTextSpan.innerText = altText;
160
- }
161
- }
162
- insertAltTextSpan() {
163
- this.altTextSpan = document.createElement('span');
164
- this.altTextSpan.classList.add('cdk-visually-hidden');
165
- this.element.nativeElement.insertAdjacentElement('afterend', this.altTextSpan);
166
- }
167
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: IconDirective, deps: [{ token: i0.ElementRef }, { token: i1.HttpClient }, { token: i2.TranslateService }, { token: i0.Renderer2 }, { token: i3.ConfigService, optional: true }], target: i0.ɵɵFactoryTarget.Directive }); }
168
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.12", type: IconDirective, selector: "i[esIcon], i.material-icons", inputs: { altText: "altText", aria: "aria", esIcon: "esIcon" }, ngImport: i0 }); }
169
- }
170
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: IconDirective, decorators: [{
171
- type: Directive,
172
- args: [{
173
- selector: 'i[esIcon], i.material-icons',
174
- }]
175
- }], ctorParameters: () => [{ type: i0.ElementRef }, { type: i1.HttpClient }, { type: i2.TranslateService }, { type: i0.Renderer2 }, { type: i3.ConfigService, decorators: [{
176
- type: Optional
177
- }] }], propDecorators: { altText: [{
178
- type: Input
179
- }], aria: [{
180
- type: Input
181
- }], esIcon: [{
182
- type: Input
183
- }] } });
184
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaWNvbi5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9lZHUtc2hhcmluZy11aS9zcmMvbGliL2RpcmVjdGl2ZXMvaWNvbi5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFFSCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUU5RCxPQUFPLEVBQ0gsU0FBUyxFQUVULEtBQUssRUFHTCxRQUFRLEdBRVgsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFHaEUsT0FBTyxFQUFFLGVBQWUsRUFBRSxhQUFhLEVBQUUsY0FBYyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3RFLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN4QyxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7Ozs7O0FBSTVDOzs7Ozs7Ozs7OztHQVdHO0FBSUgsTUFBTSxPQUFPLGFBQWE7SUFRdEI7Ozs7OztPQU1HO0lBQ0gsSUFBYSxPQUFPLENBQUMsT0FBZTtRQUNoQyxJQUFJLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQzdCLENBQUM7SUFFRCxzRUFBc0U7SUFDdEUsSUFBYSxJQUFJLENBQUMsSUFBYTtRQUMzQixJQUFJLEdBQUcscUJBQXFCLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDbkMsSUFBSSxJQUFJLEtBQUssSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQ3RCLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDO1lBQ2xCLElBQUksSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO2dCQUNmLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztZQUN0QixDQUFDO1FBQ0wsQ0FBQztJQUNMLENBQUM7SUFFRCxJQUFhLE1BQU0sQ0FBQyxFQUFV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Z0JBVU8sTUFBTTtzQkFBbEIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQ3JlYXRlZCBieSBUb3JzdGVuIG9uIDEzLjAxLjIwMTcuXG4gKi9cblxuaW1wb3J0IHsgY29lcmNlQm9vbGVhblByb3BlcnR5IH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2NvZXJjaW9uJztcbmltcG9ydCB7IEh0dHBDbGllbnQgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5pbXBvcnQge1xuICAgIERpcmVjdGl2ZSxcbiAgICBFbGVtZW50UmVmLFxuICAgIElucHV0LFxuICAgIE9uRGVzdHJveSxcbiAgICBPbkluaXQsXG4gICAgT3B0aW9uYWwsXG4gICAgUmVuZGVyZXIyLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IHRha2VVbnRpbERlc3Ryb3llZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUvcnhqcy1pbnRlcm9wJztcbmltcG9ydCB7IFRyYW5zbGF0ZVNlcnZpY2UgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcbmltcG9ydCB7IENvbmZpZ1NlcnZpY2UgfSBmcm9tICduZ3gtZWR1LXNoYXJpbmctYXBpJztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgY29tYmluZUxhdGVzdCwgZmlyc3RWYWx1ZUZyb20gfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGZpbHRlciB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IG5vdE51bGwgfSBmcm9tICcuLi91dGlsL2Z1bmN0aW9ucyc7XG5cbnR5cGUgSWNvbnNDb25maWcgPSBBcnJheTx7IG9yaWdpbmFsOiBzdHJpbmc7IHJlcGxhY2U/OiBzdHJpbmc7IGNzc0NsYXNzPzogc3RyaW5nIH0+O1xuXG4vKipcbiAqIFJlcGxhY2VzIHRoZSBlbGVtZW50J3MgY29udGVudCB3aXRoIGFuIGljb24uXG4gKlxuICogRXhhbXBsZTogYDxpIGVzSWNvbj1cInNhdmVcIj48L2k+YFxuICpcbiAqIE9wdGlvbmFsbHksIGEgdHJhbnNsYXRlZCBgYXJpYS1sYWJlbGAgY2FuIGJlIGF0dGFjaGVkIGJ5IHNldHRpbmcgYGFyaWFgIHRvIGEgdHJ1dGh5IHZhbHVlOiBgPGlcbiAqIGVzSWNvbj1cInNhdmVcIiBhcmlhPVwidHJ1ZVwiPjwvaT5gLiBPdGhlcndpc2UsIGBhcmlhLWhpZGRlbmAgd2lsbCBiZSBzZXQuXG4gKlxuICogRm9yIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5LCB0aGUgZGlyZWN0aXZlIGlzIGFsc28gYWN0aXZhdGVkIG9uIGVsZW1lbnRzIHRoYXQgc2V0XG4gKiBgY2xhc3M9XCJtYXRlcmlhbC1pY29uc1wiYC4gVGhpcyBpcyBtYWlubHkgdG8gc2V0IHRoZSBgYXJpYS1oaWRkZW5gIGF0dHJpYnV0ZS4gT2NjdXJyZW5jZXMgc2hvdWxkXG4gKiBiZSB1cGRhdGVkIHRvIHRoZSBzeW50YXggYWJvdmUuXG4gKi9cbkBEaXJlY3RpdmUoe1xuICAgIHNlbGVjdG9yOiAnaVtlc0ljb25dLCBpLm1hdGVyaWFsLWljb25zJyxcbn0pXG5leHBvcnQgY2xhc3MgSWNvbkRpcmVjdGl2ZSBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgICBwcml2YXRlIG9yaWdpbmFsSWQkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxzdHJpbmc+KG51bGwpO1xuICAgIHByaXZhdGUgX2lkOiBzdHJpbmc7XG4gICAgcHJpdmF0ZSBfYXJpYTogYm9vbGVhbjtcbiAgICBwcml2YXRlIGFsdFRleHRTcGFuOiBIVE1MRWxlbWVudDtcbiAgICBwcml2YXRlIGlzUmVhZHkgPSBmYWxzZTtcbiAgICBwcml2YXRlIHN2ZzogU1ZHU1ZHRWxlbWVudDtcblxuICAgIC8qKlxuICAgICAqIEFuIGFsdCB0ZXh0IHRvIHNob3cgdG8gc2NyZWVuIHJlYWRlcnMuXG4gICAgICpcbiAgICAgKiBJZiBvbWl0dGVkLCB0aGUgaWNvbiB3aWxsIGJlIGludmlzaWJsZSB0byBzY3JlZW4gcmVhZGVycy5cbiAgICAgKlxuICAgICAqIEBzZWUgaHR0cHM6Ly9tYXRlcmlhbC5hbmd1bGFyLmlvL2NvbXBvbmVudHMvaWNvbi9vdmVydmlldyNpbmRpY2F0b3ItaWNvbnNcbiAgICAgKi9cbiAgICBASW5wdXQoKSBzZXQgYWx0VGV4dChhbHRUZXh0OiBzdHJpbmcpIHtcbiAgICAgICAgdGhpcy5zZXRBbHRUZXh0KGFsdFRleHQpO1xuICAgIH1cblxuICAgIC8qKiBJZiB0cnVlLCBhbiBhbHQgdGV4dCAoc2VlIGFib3ZlKSB3aWxsIGJlIHNldCBiYXNlZCBvbiB0aGUgaWNvbi4gKi9cbiAgICBASW5wdXQoKSBzZXQgYXJpYShhcmlhOiBib29sZWFuKSB7XG4gICAgICAgIGFyaWEgPSBjb2VyY2VCb29sZWFuUHJvcGVydHkoYXJpYSk7XG4gICAgICAgIGlmIChhcmlhICE9PSB0aGlzLl9hcmlhKSB7XG4gICAgICAgICAgICB0aGlzLl9hcmlhID0gYXJpYTtcbiAgICAgICAgICAgIGlmICh0aGlzLmlzUmVhZHkpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZUFyaWEoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIEBJbnB1dCgpIHNldCBlc0ljb24oaWQ6IHN0cmluZykge1xuICAgICAgICB0aGlzLm9yaWdpbmFsSWQkLm5leHQoaWQpO1xuICAgIH1cblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwcml2YXRlIGVsZW1lbnQ6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+LFxuICAgICAgICBwcml2YXRlIGh0dHA6IEh0dHBDbGllbnQsXG4gICAgICAgIHByaXZhdGUgdHJhbnNsYXRlOiBUcmFuc2xhdGVTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIHJlbmRlcmVyOiBSZW5kZXJlcjIsXG4gICAgICAgIEBPcHRpb25hbCgpIHByaXZhdGUgY29uZmlnOiBDb25maWdTZXJ2aWNlLFxuICAgICkge1xuICAgICAgICBjb21iaW5lTGF0ZXN0KFt0aGlzLm9yaWdpbmFsSWQkLnBpcGUoZmlsdGVyKG5vdE51bGwpKSwgdGhpcy5jb25maWcuZ2V0KCdpY29ucycsIG51bGwpXSlcbiAgICAgICAgICAgIC5waXBlKHRha2VVbnRpbERlc3Ryb3llZCgpKVxuICAgICAgICAgICAgLnN1YnNjcmliZSgoW29yaWdpbmFsSWQsIGljb25zQ29uZmlnXSkgPT4gdGhpcy5zZXRJY29uKG9yaWdpbmFsSWQsIGljb25zQ29uZmlnKSk7XG4gICAgfVxuXG4gICAgYXN5bmMgbmdPbkluaXQoKSB7XG4gICAgICAgIHRoaXMuaXNSZWFkeSA9IHRydWU7XG4gICAgICAgIHRoaXMuZWxlbWVudC5uYXRpdmVFbGVtZW50LnNldEF0dHJpYnV0ZSgnYXJpYS1oaWRkZW4nLCAndHJ1ZScpO1xuICAgICAgICAvLyBNYXRlcmlhbCBzdHlsZXMgZXhwZWN0IGljb25zIHRvIGhhdmUgdGhlIGNsYXNzIGBtYXQtaWNvbmAsIGUuZy4sXG4gICAgICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9hbmd1bGFyL2NvbXBvbmVudHMvYmxvYi9hZTBiOWUxYzFiYWU1ZTkzN2QwMzllYTUzNjUyZmUxNjU2YmM0NjIzL3NyYy9tYXRlcmlhbC9mb3JtLWZpZWxkL2Zvcm0tZmllbGQuc2NzcyNMMTU2XG4gICAgICAgIHRoaXMuZWxlbWVudC5uYXRpdmVFbGVtZW50LmNsYXNzTGlzdC5hZGQoJ21hdC1pY29uJyk7XG4gICAgICAgIHRoaXMudXBkYXRlQXJpYSgpO1xuICAgIH1cblxuICAgIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5hbHRUZXh0U3Bhbikge1xuICAgICAgICAgICAgdGhpcy5hbHRUZXh0U3Bhbi5yZW1vdmUoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgYXN5bmMgc2V0SWNvbihpZDogc3RyaW5nLCBpY29uc0NvbmZpZzogSWNvbnNDb25maWcpIHtcbiAgICAgICAgaWYgKHRoaXMuX2lkKSB7XG4gICAgICAgICAgICB0aGlzLmVsZW1lbnQubmF0aXZlRWxlbWVudC5jbGFzc0xpc3QucmVtb3ZlKFxuICAgICAgICAgICAgICAgICdlZHUtaWNvbnMnLFxuICAgICAgICAgICAgICAgICdjdXN0b20taWNvbnMnLFxuICAgICAgICAgICAgICAgICdtYXRlcmlhbC1pY29ucycsXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgaWYgKHRoaXMuc3ZnKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5yZW5kZXJlci5yZW1vdmVDaGlsZCh0aGlzLmVsZW1lbnQubmF0aXZlRWxlbWVudCwgdGhpcy5zdmcpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmIChpZC5zdGFydHNXaXRoKCdzdmctJykpIHtcbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgY29uc3QgaWNvbk5hbWUgPSBpZC5zbGljZSg0KTtcbiAgICAgICAgICAgICAgICBjb25zdCBmaWxlTmFtZSA9IGljb25OYW1lLmVuZHNXaXRoKCcuc3ZnJykgPyBpY29uTmFtZSA6IGAke2ljb25OYW1lfS5zdmdgO1xuICAgICAgICAgICAgICAgIGNvbnN0IHBhdGggPSBgYXNzZXRzL2ltYWdlcy9pY29ucy8ke2ZpbGVOYW1lfWA7XG5cbiAgICAgICAgICAgICAgICBjb25zdCBzdmdUZXh0ID0gYXdhaXQgZmlyc3RWYWx1ZUZyb20odGhpcy5odHRwLmdldChwYXRoLCB7IHJlc3BvbnNlVHlwZTogJ3RleHQnIH0pKTtcblxuICAgICAgICAgICAgICAgIGlmICghc3ZnVGV4dCkgcmV0dXJuO1xuXG4gICAgICAgICAgICAgICAgY29uc3QgcGFyc2VyID0gbmV3IERPTVBhcnNlcigpO1xuICAgICAgICAgICAgICAgIGNvbnN0IGRvYyA9IHBhcnNlci5wYXJzZUZyb21TdHJpbmcoc3ZnVGV4dCwgJ2ltYWdlL3N2Zyt4bWwnKTtcbiAgICAgICAgICAgICAgICBjb25zdCBzdmdFbGVtZW50ID0gZG9jLnF1ZXJ5U2VsZWN0b3IoJ3N2ZycpO1xuXG4gICAgICAgICAgICAgICAgaWYgKCFzdmdFbGVtZW50KSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ05vIFNWRyBlbGVtZW50IGZvdW5kIGluIHRoZSBmaWxlJyk7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBzdmdFbGVtZW50LmNsYXNzTGlzdC5hZGQoJ3N2Zy1pY29ucycpO1xuICAgICAgICAgICAgICAgIHRoaXMuc3ZnID0gc3ZnRWxlbWVudDtcblxuICAgICAgICAgICAgICAgIHRoaXMucmVuZGVyZXIuYXBwZW5kQ2hpbGQodGhpcy5lbGVtZW50Lm5hdGl2ZUVsZW1lbnQsIHRoaXMuc3ZnKTtcblxuICAgICAgICAgICAgICAgIGlmICh0aGlzLl9hcmlhKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMudXBkYXRlQXJpYSgpO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcignRXJyb3IgbG9hZGluZyBTVkc6JywgZXJyb3IpO1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBsZXQgY3VzdG9tQ2xhc3M6IHN0cmluZyA9IG51bGw7XG4gICAgICAgIGNvbnN0IG1hcHBpbmcgPSBpY29uc0NvbmZpZz8uZmlsdGVyKChpKSA9PiBpLm9yaWdpbmFsID09PSBpZCk7XG4gICAgICAgIGlmIChtYXBwaW5nPy5sZW5ndGggPT09IDEpIHtcbiAgICAgICAgICAgIGlkID0gbWFwcGluZ1swXS5yZXBsYWNlIHx8ICcnO1xuICAgICAgICAgICAgY3VzdG9tQ2xhc3MgPSBtYXBwaW5nWzBdLmNzc0NsYXNzO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuX2lkID0gaWQ7XG4gICAgICAgIGlmICh0aGlzLl9hcmlhKSB7XG4gICAgICAgICAgICB0aGlzLnVwZGF0ZUFyaWEoKTtcbiAgICAgICAgfVxuICAgICAgICBsZXQgY3NzQ2xhc3M6IHN0cmluZztcbiAgICAgICAgaWYgKGlkPy5zdGFydHNXaXRoKCdlZHUtJykgJiYgIWN1c3RvbUNsYXNzKSB7XG4gICAgICAgICAgICBjc3NDbGFzcyA9ICdlZHUtaWNvbnMnO1xuICAgICAgICAgICAgaWQgPSBpZC5zdWJzdHJpbmcoNCk7XG4gICAgICAgIH0gZWxzZSBpZiAoaWQ/LnN0YXJ0c1dpdGgoJ2N1c3RvbS0nKSB8fCBjdXN0b21DbGFzcykge1xuICAgICAgICAgICAgY3NzQ2xhc3MgPSAnY3VzdG9tLWljb25zJztcbiAgICAgICAgICAgIGlkID0gaWQuc3Vic3RyaW5nKDcpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY3NzQ2xhc3MgPSAnbWF0ZXJpYWwtaWNvbnMnO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuZWxlbWVudC5uYXRpdmVFbGVtZW50LmNsYXNzTGlzdC5hZGQoY3NzQ2xhc3MpO1xuICAgICAgICBpZiAoY3VzdG9tQ2xhc3MpIHtcbiAgICAgICAgICAgIHRoaXMuZWxlbWVudC5uYXRpdmVFbGVtZW50LmNsYXNzTGlzdC5hZGQoY3VzdG9tQ2xhc3MpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuZWxlbWVudC5uYXRpdmVFbGVtZW50LmlubmVyVGV4dCA9IGlkO1xuICAgIH1cblxuICAgIHByaXZhdGUgdXBkYXRlQXJpYSgpIHtcbiAgICAgICAgaWYgKHRoaXMuX2FyaWEgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgaWYgKHRoaXMuX2FyaWEgJiYgdGhpcy5faWQpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnRyYW5zbGF0ZS5nZXQoJ0lDT05fTEFCRUxTLicgKyB0aGlzLl9pZCkuc3Vic2NyaWJlKChsYW5nKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0QWx0VGV4dChsYW5nKTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhpcy5zZXRBbHRUZXh0KG51bGwpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzZXRBbHRUZXh0KGFsdFRleHQ6IHN0cmluZyk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5zdmcpIHtcbiAgICAgICAgICAgIC8vIGZvciBTVkcgZWxlbWVudHMsIGFkZCBhcmlhLWxhYmVsIGluc3RlYWRcbiAgICAgICAgICAgIHRoaXMuc3ZnLnNldEF0dHJpYnV0ZSgnYXJpYS1sYWJlbCcsIGFsdFRleHQpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChhbHRUZXh0ICYmICF0aGlzLmFsdFRleHRTcGFuKSB7XG4gICAgICAgICAgICB0aGlzLmluc2VydEFsdFRleHRTcGFuKCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMuYWx0VGV4dFNwYW4pIHtcbiAgICAgICAgICAgIHRoaXMuYWx0VGV4dFNwYW4uaW5uZXJUZXh0ID0gYWx0VGV4dDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgaW5zZXJ0QWx0VGV4dFNwYW4oKTogdm9pZCB7XG4gICAgICAgIHRoaXMuYWx0VGV4dFNwYW4gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzcGFuJyk7XG4gICAgICAgIHRoaXMuYWx0VGV4dFNwYW4uY2xhc3NMaXN0LmFkZCgnY2RrLXZpc3VhbGx5LWhpZGRlbicpO1xuICAgICAgICB0aGlzLmVsZW1lbnQubmF0aXZlRWxlbWVudC5pbnNlcnRBZGphY2VudEVsZW1lbnQoJ2FmdGVyZW5kJywgdGhpcy5hbHRUZXh0U3Bhbik7XG4gICAgfVxufVxuIl19
@@ -1,85 +0,0 @@
1
- import { Directive, EventEmitter, Input, Output, } from '@angular/core';
2
- import { Subject } from 'rxjs';
3
- import * as i0 from "@angular/core";
4
- import * as i1 from "../services/app-container.service";
5
- export class InfiniteScrollDirective {
6
- constructor(appContainer, element, zone) {
7
- this.appContainer = appContainer;
8
- this.element = element;
9
- this.zone = zone;
10
- this.scrolled = new EventEmitter();
11
- this.infiniteScrollDistance = 1.5;
12
- this.infiniteScrollThrottle = 1000;
13
- this.scrollWindow = true;
14
- this.lastEvent = 0;
15
- this.lastScroll = 0;
16
- this.destroyed$ = new Subject();
17
- }
18
- ngOnInit() {
19
- this.zone.runOutsideAngular(() => {
20
- const handleScroll = () => this.handleOnScroll();
21
- const eventTarget = this.scrollWindow
22
- ? this.appContainer.getScrollContainer({ fallback: window })
23
- : this.element.nativeElement;
24
- eventTarget.addEventListener('scroll', handleScroll);
25
- this.destroyed$.subscribe(() => eventTarget.removeEventListener('scroll', handleScroll));
26
- });
27
- }
28
- ngOnDestroy() {
29
- this.destroyed$.next();
30
- this.destroyed$.complete();
31
- }
32
- handleOnScroll() {
33
- if (!this.element.nativeElement)
34
- return;
35
- if (this.scrollWindow) {
36
- const scrollContainer = this.appContainer.getScrollContainer();
37
- const height = scrollContainer.scrollHeight;
38
- const scroll = scrollContainer.scrollTop;
39
- if (scroll > this.lastScroll &&
40
- height - scroll < scrollContainer.clientHeight * this.infiniteScrollDistance) {
41
- const time = new Date().getTime();
42
- if (time - this.lastEvent < this.infiniteScrollThrottle)
43
- return;
44
- this.lastEvent = time;
45
- this.emitScrolled();
46
- }
47
- this.lastScroll = scroll;
48
- }
49
- else {
50
- const element = this.element.nativeElement;
51
- const height = element.scrollHeight;
52
- const scroll = element.scrollTop;
53
- if (scroll > this.lastScroll &&
54
- height - scroll <
55
- element.getBoundingClientRect().height * this.infiniteScrollDistance) {
56
- const time = new Date().getTime();
57
- if (time - this.lastEvent < this.infiniteScrollThrottle)
58
- return;
59
- this.lastEvent = time;
60
- this.emitScrolled();
61
- }
62
- this.lastScroll = scroll;
63
- }
64
- }
65
- emitScrolled() {
66
- this.zone.run(() => this.scrolled.emit());
67
- }
68
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: InfiniteScrollDirective, deps: [{ token: i1.AppContainerService }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Directive }); }
69
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.12", type: InfiniteScrollDirective, selector: "[esInfiniteScroll], [infinite-scroll], [data-infinite-scroll]", inputs: { infiniteScrollDistance: "infiniteScrollDistance", infiniteScrollThrottle: "infiniteScrollThrottle", scrollWindow: "scrollWindow" }, outputs: { scrolled: "scrolled" }, ngImport: i0 }); }
70
- }
71
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: InfiniteScrollDirective, decorators: [{
72
- type: Directive,
73
- args: [{
74
- selector: '[esInfiniteScroll], [infinite-scroll], [data-infinite-scroll]',
75
- }]
76
- }], ctorParameters: () => [{ type: i1.AppContainerService }, { type: i0.ElementRef }, { type: i0.NgZone }], propDecorators: { scrolled: [{
77
- type: Output
78
- }], infiniteScrollDistance: [{
79
- type: Input
80
- }], infiniteScrollThrottle: [{
81
- type: Input
82
- }], scrollWindow: [{
83
- type: Input
84
- }] } });
85
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5maW5pdGUtc2Nyb2xsLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2VkdS1zaGFyaW5nLXVpL3NyYy9saWIvZGlyZWN0aXZlcy9pbmZpbml0ZS1zY3JvbGwuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDSCxTQUFTLEVBRVQsWUFBWSxFQUNaLEtBQUssRUFJTCxNQUFNLEdBQ1QsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQzs7O0FBTS9CLE1BQU0sT0FBTyx1QkFBdUI7SUFVaEMsWUFDWSxZQUFpQyxFQUNqQyxPQUFtQixFQUNuQixJQUFZO1FBRlosaUJBQVksR0FBWixZQUFZLENBQXFCO1FBQ2pDLFlBQU8sR0FBUCxPQUFPLENBQVk7UUFDbkIsU0FBSSxHQUFKLElBQUksQ0FBUTtRQVpkLGFBQVEsR0FBRyxJQUFJLFlBQVksRUFBUSxDQUFDO1FBRXJDLDJCQUFzQixHQUFXLEdBQUcsQ0FBQztRQUNyQywyQkFBc0IsR0FBVyxJQUFJLENBQUM7UUFDdEMsaUJBQVksR0FBWSxJQUFJLENBQUM7UUFDOUIsY0FBUyxHQUFHLENBQUMsQ0FBQztRQUNkLGVBQVUsR0FBRyxDQUFDLENBQUM7UUFDZixlQUFVLEdBQUcsSUFBSSxPQUFPLEVBQVEsQ0FBQztJQU10QyxDQUFDO0lBRUosUUFBUTtRQUNKLElBQUksQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsR0FBRyxFQUFFO1lBQzdCLE1BQU0sWUFBWSxHQUFHLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztZQUNqRCxNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsWUFBWTtnQkFDakMsQ0FBQyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsa0JBQWtCLENBQUMsRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLENBQUM7Z0JBQzVE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Y3RpdmUsXG4gICAgRWxlbWVudFJlZixcbiAgICBFdmVudEVtaXR0ZXIsXG4gICAgSW5wdXQsXG4gICAgTmdab25lLFxuICAgIE9uRGVzdHJveSxcbiAgICBPbkluaXQsXG4gICAgT3V0cHV0LFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IEFwcENvbnRhaW5lclNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy9hcHAtY29udGFpbmVyLnNlcnZpY2UnO1xuXG5ARGlyZWN0aXZlKHtcbiAgICBzZWxlY3RvcjogJ1tlc0luZmluaXRlU2Nyb2xsXSwgW2luZmluaXRlLXNjcm9sbF0sIFtkYXRhLWluZmluaXRlLXNjcm9sbF0nLFxufSlcbmV4cG9ydCBjbGFzcyBJbmZpbml0ZVNjcm9sbERpcmVjdGl2ZSBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgICBAT3V0cHV0KCkgc2Nyb2xsZWQgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG5cbiAgICBASW5wdXQoKSBpbmZpbml0ZVNjcm9sbERpc3RhbmNlOiBudW1iZXIgPSAxLjU7XG4gICAgQElucHV0KCkgaW5maW5pdGVTY3JvbGxUaHJvdHRsZTogbnVtYmVyID0gMTAwMDtcbiAgICBASW5wdXQoKSBzY3JvbGxXaW5kb3c6IGJvb2xlYW4gPSB0cnVlO1xuICAgIHByaXZhdGUgbGFzdEV2ZW50ID0gMDtcbiAgICBwcml2YXRlIGxhc3RTY3JvbGwgPSAwO1xuICAgIHByaXZhdGUgZGVzdHJveWVkJCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHJpdmF0ZSBhcHBDb250YWluZXI6IEFwcENvbnRhaW5lclNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgZWxlbWVudDogRWxlbWVudFJlZixcbiAgICAgICAgcHJpdmF0ZSB6b25lOiBOZ1pvbmUsXG4gICAgKSB7fVxuXG4gICAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuem9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBoYW5kbGVTY3JvbGwgPSAoKSA9PiB0aGlzLmhhbmRsZU9uU2Nyb2xsKCk7XG4gICAgICAgICAgICBjb25zdCBldmVudFRhcmdldCA9IHRoaXMuc2Nyb2xsV2luZG93XG4gICAgICAgICAgICAgICAgPyB0aGlzLmFwcENvbnRhaW5lci5nZXRTY3JvbGxDb250YWluZXIoeyBmYWxsYmFjazogd2luZG93IH0pXG4gICAgICAgICAgICAgICAgOiB0aGlzLmVsZW1lbnQubmF0aXZlRWxlbWVudDtcbiAgICAgICAgICAgIGV2ZW50VGFyZ2V0LmFkZEV2ZW50TGlzdGVuZXIoJ3Njcm9sbCcsIGhhbmRsZVNjcm9sbCk7XG4gICAgICAgICAgICB0aGlzLmRlc3Ryb3llZCQuc3Vic2NyaWJlKCgpID0+XG4gICAgICAgICAgICAgICAgZXZlbnRUYXJnZXQucmVtb3ZlRXZlbnRMaXN0ZW5lcignc2Nyb2xsJywgaGFuZGxlU2Nyb2xsKSxcbiAgICAgICAgICAgICk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgICAgICB0aGlzLmRlc3Ryb3llZCQubmV4dCgpO1xuICAgICAgICB0aGlzLmRlc3Ryb3llZCQuY29tcGxldGUoKTtcbiAgICB9XG5cbiAgICBoYW5kbGVPblNjcm9sbCgpIHtcbiAgICAgICAgaWYgKCF0aGlzLmVsZW1lbnQubmF0aXZlRWxlbWVudCkgcmV0dXJuO1xuICAgICAgICBpZiAodGhpcy5zY3JvbGxXaW5kb3cpIHtcbiAgICAgICAgICAgIGNvbnN0IHNjcm9sbENvbnRhaW5lciA9IHRoaXMuYXBwQ29udGFpbmVyLmdldFNjcm9sbENvbnRhaW5lcigpO1xuICAgICAgICAgICAgY29uc3QgaGVpZ2h0ID0gc2Nyb2xsQ29udGFpbmVyLnNjcm9sbEhlaWdodDtcbiAgICAgICAgICAgIGNvbnN0IHNjcm9sbCA9IHNjcm9sbENvbnRhaW5lci5zY3JvbGxUb3A7XG4gICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgc2Nyb2xsID4gdGhpcy5sYXN0U2Nyb2xsICYmXG4gICAgICAgICAgICAgICAgaGVpZ2h0IC0gc2Nyb2xsIDwgc2Nyb2xsQ29udGFpbmVyLmNsaWVudEhlaWdodCAqIHRoaXMuaW5maW5pdGVTY3JvbGxEaXN0YW5jZVxuICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgdGltZSA9IG5ldyBEYXRlKCkuZ2V0VGltZSgpO1xuICAgICAgICAgICAgICAgIGlmICh0aW1lIC0gdGhpcy5sYXN0RXZlbnQgPCB0aGlzLmluZmluaXRlU2Nyb2xsVGhyb3R0bGUpIHJldHVybjtcbiAgICAgICAgICAgICAgICB0aGlzLmxhc3RFdmVudCA9IHRpbWU7XG4gICAgICAgICAgICAgICAgdGhpcy5lbWl0U2Nyb2xsZWQoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMubGFzdFNjcm9sbCA9IHNjcm9sbDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNvbnN0IGVsZW1lbnQgPSB0aGlzLmVsZW1lbnQubmF0aXZlRWxlbWVudDtcbiAgICAgICAgICAgIGNvbnN0IGhlaWdodCA9IGVsZW1lbnQuc2Nyb2xsSGVpZ2h0O1xuICAgICAgICAgICAgY29uc3Qgc2Nyb2xsID0gZWxlbWVudC5zY3JvbGxUb3A7XG4gICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgc2Nyb2xsID4gdGhpcy5sYXN0U2Nyb2xsICYmXG4gICAgICAgICAgICAgICAgaGVpZ2h0IC0gc2Nyb2xsIDxcbiAgICAgICAgICAgICAgICAgICAgZWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS5oZWlnaHQgKiB0aGlzLmluZmluaXRlU2Nyb2xsRGlzdGFuY2VcbiAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgIGNvbnN0IHRpbWUgPSBuZXcgRGF0ZSgpLmdldFRpbWUoKTtcbiAgICAgICAgICAgICAgICBpZiAodGltZSAtIHRoaXMubGFzdEV2ZW50IDwgdGhpcy5pbmZpbml0ZVNjcm9sbFRocm90dGxlKSByZXR1cm47XG4gICAgICAgICAgICAgICAgdGhpcy5sYXN0RXZlbnQgPSB0aW1lO1xuICAgICAgICAgICAgICAgIHRoaXMuZW1pdFNjcm9sbGVkKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLmxhc3RTY3JvbGwgPSBzY3JvbGw7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGVtaXRTY3JvbGxlZCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy56b25lLnJ1bigoKSA9PiB0aGlzLnNjcm9sbGVkLmVtaXQoKSk7XG4gICAgfVxufVxuIl19
@@ -1,83 +0,0 @@
1
- import { Component, Input, ViewChild } from '@angular/core';
2
- import { Helper } from '../util/helper';
3
- import { BehaviorSubject } from 'rxjs';
4
- import * as i0 from "@angular/core";
5
- import * as i1 from "../services/ui.service";
6
- import * as i2 from "@angular/common";
7
- import * as i3 from "@angular/material/menu";
8
- import * as i4 from "@angular/material/tooltip";
9
- import * as i5 from "../directives/icon.directive";
10
- import * as i6 from "@ngx-translate/core";
11
- import * as i7 from "../pipes/option-tooltip.pipe";
12
- import * as i8 from "../pipes/replace-chars.pipe";
13
- /**
14
- * The dropdown is one base component of the action bar (showing more actions),
15
- * but can also be used standalone.
16
- */
17
- export class DropdownComponent {
18
- constructor(ui) {
19
- this.ui = ui;
20
- this.position = 'left';
21
- this.options$ = new BehaviorSubject([]);
22
- /**
23
- * The objects that should be returned via the option's callback.
24
- *
25
- * Can be null
26
- */
27
- this.callbackObjects = undefined;
28
- /**
29
- * Should disabled ("greyed out") options be shown or hidden?
30
- */
31
- this.showDisabled = true;
32
- }
33
- ngOnChanges(changes) {
34
- if (changes == null || changes?.options || changes?.callbackObjects) {
35
- this.options$.next(this.ui.filterValidOptions(Helper.deepCopyArray(this.options)));
36
- if (this.callbackObjects !== undefined) {
37
- void this.ui.updateOptionEnabledState(this.options$, this.callbackObjects);
38
- }
39
- }
40
- }
41
- click(option) {
42
- if (!option.isEnabled) {
43
- return;
44
- }
45
- setTimeout(() => option.callback(null, this.callbackObjects));
46
- }
47
- isNewGroup(i) {
48
- if (i > 0) {
49
- return this.options$.value[i].group !== this.options$.value[i - 1].group;
50
- }
51
- return false;
52
- }
53
- /** Whether there are any enabled options so we can open the menu. */
54
- canShowDropdown() {
55
- // We can only open the dropdown menu, when there is at least one enabled option. Even when
56
- // there are options with `showDisabled: true`, showing a menu with no selectable option
57
- // causes a11y issues.
58
- return this.options$.value?.some((o) => o.isEnabled);
59
- }
60
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: DropdownComponent, deps: [{ token: i1.UIService }], target: i0.ɵɵFactoryTarget.Component }); }
61
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.12", type: DropdownComponent, selector: "es-dropdown", inputs: { position: "position", options: "options", callbackObjects: "callbackObjects", showDisabled: "showDisabled", menuClass: "menuClass" }, viewQueries: [{ propertyName: "menu", first: true, predicate: ["dropdown"], descendants: true, static: true }, { propertyName: "menuTrigger", first: true, predicate: ["menuTrigger"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<mat-menu\n #dropdown=\"matMenu\"\n class=\"mat-dropdown-menu\"\n [class]=\"menuClass\"\n backdropClass=\"mat-dropdown-menu\"\n [xPosition]=\"position === 'right' ? 'after' : 'before'\"\n>\n <!-- MatMenu has role=\"menu\", so the only meaningful role of descendants is \"menuitem\" -->\n <ul role=\"none\">\n <ng-container *ngFor=\"let option of options$ | async; let i = index\">\n <li *ngIf=\"option.isEnabled || showDisabled\" role=\"none\">\n <button\n mat-menu-item\n class=\"mat-menu-item collection-item-{{\n option.name | replaceChars : { search: '.', replace: '-' }\n }}\"\n matTooltip=\"{{ option | optionTooltip | async }}\"\n matTooltipPosition=\"right\"\n matTooltipTouchGestures=\"off\"\n [attr.aria-label]=\"option.ariaLabel || option.name | translate\"\n [class.mat-menu-item-separate]=\"option.isSeparate || isNewGroup(i)\"\n [class.mat-menu-item-selected]=\"option.isSelected\"\n [disabled]=\"!option.isEnabled\"\n (click)=\"click(option)\"\n attr.data-test=\"menu-item-{{ option.name }}\"\n >\n <i [esIcon]=\"option.icon\"></i> {{ option.name | translate }}\n </button>\n </li>\n </ng-container>\n </ul>\n</mat-menu>\n<div #menuTrigger=\"matMenuTrigger\" [matMenuTriggerFor]=\"menu\" class=\"display-none\"></div>\n", styles: ["::ng-deep .mat-dropdown-menu .mat-mdc-menu-content{min-width:200px}::ng-deep .mat-dropdown-menu .mat-mdc-menu-content>ul>li>button{display:flex;align-items:center}::ng-deep .mat-dropdown-menu .mat-mdc-menu-content>ul>li>button:not(:disabled)>span{color:var(--primary)}::ng-deep .mat-dropdown-menu .mat-mdc-menu-content>ul>li>button>i{width:35px}::ng-deep .mat-dropdown-menu .mat-mdc-menu-content:not(:empty){padding:0!important}::ng-deep .mat-dropdown-menu ul{margin:0;list-style:none;padding-left:0}::ng-deep .mat-dropdown-menu ul li .mat-mdc-menu-item .mat-mdc-menu-item-text{display:flex;align-items:center}::ng-deep .mat-dropdown-menu ul li .mat-mdc-menu-item .mat-mdc-menu-item-text i{margin-right:10px}::ng-deep .mat-dropdown-menu ul li .mat-mdc-menu-item:hover:not([disabled]),::ng-deep .mat-dropdown-menu ul li .mat-mdc-menu-item.cdk-focused{color:var(--itemSelectedTextColor);background-color:var(--listItemSelectedBackground)}::ng-deep .mat-dropdown-menu ul li .mat-mdc-menu-item.cdk-keyboard-focused{outline:none;border:2px solid var(--palette-primary-300)}::ng-deep .mat-dropdown-menu ul li .mat-menu-item-separate{border-top:1px solid #ccc}@media screen and (max-width: 600px){::ng-deep .mat-dropdown-menu.cdk-overlay-backdrop{background:#000c}::ng-deep .mat-dropdown-menu.mat-mdc-menu-panel{position:fixed;bottom:0;left:0;max-width:100%;width:100%;border-radius:0;max-height:calc(100vh - 150px);overflow-y:auto}}\n"], dependencies: [{ kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i3.MatMenu, selector: "mat-menu", inputs: ["backdropClass", "aria-label", "aria-labelledby", "aria-describedby", "xPosition", "yPosition", "overlapTrigger", "hasBackdrop", "class", "classList"], outputs: ["closed", "close"], exportAs: ["matMenu"] }, { kind: "component", type: i3.MatMenuItem, selector: "[mat-menu-item]", inputs: ["role", "disabled", "disableRipple"], exportAs: ["matMenuItem"] }, { kind: "directive", type: i3.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", inputs: ["mat-menu-trigger-for", "matMenuTriggerFor", "matMenuTriggerData", "matMenuTriggerRestoreFocus"], outputs: ["menuOpened", "onMenuOpen", "menuClosed", "onMenuClose"], exportAs: ["matMenuTrigger"] }, { kind: "directive", type: i4.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "directive", type: i5.IconDirective, selector: "i[esIcon], i.material-icons", inputs: ["altText", "aria", "esIcon"] }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }, { kind: "pipe", type: i6.TranslatePipe, name: "translate" }, { kind: "pipe", type: i7.OptionTooltipPipe, name: "optionTooltip" }, { kind: "pipe", type: i8.ReplaceCharsPipe, name: "replaceChars" }] }); }
62
- }
63
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: DropdownComponent, decorators: [{
64
- type: Component,
65
- args: [{ selector: 'es-dropdown', template: "<mat-menu\n #dropdown=\"matMenu\"\n class=\"mat-dropdown-menu\"\n [class]=\"menuClass\"\n backdropClass=\"mat-dropdown-menu\"\n [xPosition]=\"position === 'right' ? 'after' : 'before'\"\n>\n <!-- MatMenu has role=\"menu\", so the only meaningful role of descendants is \"menuitem\" -->\n <ul role=\"none\">\n <ng-container *ngFor=\"let option of options$ | async; let i = index\">\n <li *ngIf=\"option.isEnabled || showDisabled\" role=\"none\">\n <button\n mat-menu-item\n class=\"mat-menu-item collection-item-{{\n option.name | replaceChars : { search: '.', replace: '-' }\n }}\"\n matTooltip=\"{{ option | optionTooltip | async }}\"\n matTooltipPosition=\"right\"\n matTooltipTouchGestures=\"off\"\n [attr.aria-label]=\"option.ariaLabel || option.name | translate\"\n [class.mat-menu-item-separate]=\"option.isSeparate || isNewGroup(i)\"\n [class.mat-menu-item-selected]=\"option.isSelected\"\n [disabled]=\"!option.isEnabled\"\n (click)=\"click(option)\"\n attr.data-test=\"menu-item-{{ option.name }}\"\n >\n <i [esIcon]=\"option.icon\"></i> {{ option.name | translate }}\n </button>\n </li>\n </ng-container>\n </ul>\n</mat-menu>\n<div #menuTrigger=\"matMenuTrigger\" [matMenuTriggerFor]=\"menu\" class=\"display-none\"></div>\n", styles: ["::ng-deep .mat-dropdown-menu .mat-mdc-menu-content{min-width:200px}::ng-deep .mat-dropdown-menu .mat-mdc-menu-content>ul>li>button{display:flex;align-items:center}::ng-deep .mat-dropdown-menu .mat-mdc-menu-content>ul>li>button:not(:disabled)>span{color:var(--primary)}::ng-deep .mat-dropdown-menu .mat-mdc-menu-content>ul>li>button>i{width:35px}::ng-deep .mat-dropdown-menu .mat-mdc-menu-content:not(:empty){padding:0!important}::ng-deep .mat-dropdown-menu ul{margin:0;list-style:none;padding-left:0}::ng-deep .mat-dropdown-menu ul li .mat-mdc-menu-item .mat-mdc-menu-item-text{display:flex;align-items:center}::ng-deep .mat-dropdown-menu ul li .mat-mdc-menu-item .mat-mdc-menu-item-text i{margin-right:10px}::ng-deep .mat-dropdown-menu ul li .mat-mdc-menu-item:hover:not([disabled]),::ng-deep .mat-dropdown-menu ul li .mat-mdc-menu-item.cdk-focused{color:var(--itemSelectedTextColor);background-color:var(--listItemSelectedBackground)}::ng-deep .mat-dropdown-menu ul li .mat-mdc-menu-item.cdk-keyboard-focused{outline:none;border:2px solid var(--palette-primary-300)}::ng-deep .mat-dropdown-menu ul li .mat-menu-item-separate{border-top:1px solid #ccc}@media screen and (max-width: 600px){::ng-deep .mat-dropdown-menu.cdk-overlay-backdrop{background:#000c}::ng-deep .mat-dropdown-menu.mat-mdc-menu-panel{position:fixed;bottom:0;left:0;max-width:100%;width:100%;border-radius:0;max-height:calc(100vh - 150px);overflow-y:auto}}\n"] }]
66
- }], ctorParameters: () => [{ type: i1.UIService }], propDecorators: { menu: [{
67
- type: ViewChild,
68
- args: ['dropdown', { static: true }]
69
- }], menuTrigger: [{
70
- type: ViewChild,
71
- args: ['menuTrigger']
72
- }], position: [{
73
- type: Input
74
- }], options: [{
75
- type: Input
76
- }], callbackObjects: [{
77
- type: Input
78
- }], showDisabled: [{
79
- type: Input
80
- }], menuClass: [{
81
- type: Input
82
- }] } });
83
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJvcGRvd24uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZWR1LXNoYXJpbmctdWkvc3JjL2xpYi9kcm9wZG93bi9kcm9wZG93bi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9lZHUtc2hhcmluZy11aS9zcmMvbGliL2Ryb3Bkb3duL2Ryb3Bkb3duLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUE0QixTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFHdEYsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRXhDLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxNQUFNLENBQUM7Ozs7Ozs7Ozs7QUFHdkM7OztHQUdHO0FBTUgsTUFBTSxPQUFPLGlCQUFpQjtJQTRCMUIsWUFBb0IsRUFBYTtRQUFiLE9BQUUsR0FBRixFQUFFLENBQVc7UUF4QnhCLGFBQVEsR0FBcUIsTUFBTSxDQUFDO1FBRTdDLGFBQVEsR0FBRyxJQUFJLGVBQWUsQ0FBZSxFQUFFLENBQUMsQ0FBQztRQUVqRDs7OztXQUlHO1FBQ00sb0JBQWUsR0FBVyxTQUFTLENBQUM7UUFFN0M7O1dBRUc7UUFDTSxpQkFBWSxHQUFHLElBQUksQ0FBQztJQVVPLENBQUM7SUFFckMsV0FBVyxDQUFDLE9BQXVCO1FBQy9CLElBQUksT0FBTyxJQUFJLElBQUksSUFBSSxPQUFPLEVBQUUsT0FBTyxJQUFJLE9BQU8sRUFBRSxlQUFlLEVBQUUsQ0FBQztZQUNsRSxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLGtCQUFrQixDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUNuRixJQUFJLElBQUksQ0FBQyxlQUFlLEtBQUssU0FBUyxFQUFFLENBQUM7Z0JBQ3JDLEtBQUssSUFBSSxDQUFDLEVBQUUsQ0FBQyx3QkFBd0IsQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQztZQUMvRSxDQUFDO1FBQ0wsQ0FBQztJQUNMLENBQUM7SUFFRCxLQUFLLENBQUMsTUFBa0I7UUFDcEIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxTQUFTLEVBQUUsQ0FBQztZQUNwQixPQUFPO1FBQ1gsQ0FBQztRQUNELFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsZUFBZSxDQUFDLENBQUMsQ0FBQztJQUNsRSxDQUFDO0lBRUQsVUFBVSxDQUFDLENBQVM7UUFDaEIsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFDUixPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssS0FBSyxJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDO1FBQzdFLENBQUM7UUFDRCxPQUFPLEtBQUssQ0FBQztJQUNqQixDQUFDO0lBRUQscUVBQXFFO0lBQ3JFLGVBQWU7UUFDWCwyRkFBMkY7UUFDM0Ysd0ZBQXdGO1FBQ3hGLHNCQUFzQjtRQUN0QixPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQ3pELENBQUM7K0dBM0RRLGlCQUFpQjttR0FBakIsaUJBQWlCLHFhQ2pCOUIsaTRDQWlDQTs7NEZEaEJhLGlCQUFpQjtrQkFMN0IsU0FBUzsrQkFDSSxhQUFhOzhFQUtrQixJQUFJO3NCQUE1QyxTQUFTO3VCQUFDLFVBQVUsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUU7Z0JBQ2IsV0FBVztzQkFBcEMsU0FBUzt1QkFBQyxhQUFhO2dCQUVmLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csT0FBTztzQkFBZixLQUFLO2dCQVFHLGVBQWU7c0JBQXZCLEtBQUs7Z0JBS0csWUFBWTtzQkFBcEIsS0FBSztnQkFRRyxTQUFTO3NCQUFqQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCwgT25DaGFuZ2VzLCBTaW1wbGVDaGFuZ2VzLCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE1hdE1lbnUsIE1hdE1lbnVUcmlnZ2VyIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvbWVudSc7XG5pbXBvcnQgeyBPcHRpb25JdGVtIH0gZnJvbSAnLi4vdHlwZXMvb3B0aW9uLWl0ZW0nO1xuaW1wb3J0IHsgSGVscGVyIH0gZnJvbSAnLi4vdXRpbC9oZWxwZXInO1xuaW1wb3J0IHsgVUlTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvdWkuc2VydmljZSc7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IE5vZGUgfSBmcm9tICduZ3gtZWR1LXNoYXJpbmctYXBpJztcblxuLyoqXG4gKiBUaGUgZHJvcGRvd24gaXMgb25lIGJhc2UgY29tcG9uZW50IG9mIHRoZSBhY3Rpb24gYmFyIChzaG93aW5nIG1vcmUgYWN0aW9ucyksXG4gKiBidXQgY2FuIGFsc28gYmUgdXNlZCBzdGFuZGFsb25lLlxuICovXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2VzLWRyb3Bkb3duJyxcbiAgICB0ZW1wbGF0ZVVybDogJ2Ryb3Bkb3duLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnZHJvcGRvd24uY29tcG9uZW50LnNjc3MnXSxcbn0pXG5leHBvcnQgY2xhc3MgRHJvcGRvd25Db21wb25lbnQgaW1wbGVtZW50cyBPbkNoYW5nZXMge1xuICAgIEBWaWV3Q2hpbGQoJ2Ryb3Bkb3duJywgeyBzdGF0aWM6IHRydWUgfSkgbWVudTogTWF0TWVudTtcbiAgICBAVmlld0NoaWxkKCdtZW51VHJpZ2dlcicpIG1lbnVUcmlnZ2VyOiBNYXRNZW51VHJpZ2dlcjtcblxuICAgIEBJbnB1dCgpIHBvc2l0aW9uOiAnbGVmdCcgfCAncmlnaHQnID0gJ2xlZnQnO1xuICAgIEBJbnB1dCgpIG9wdGlvbnM6IE9wdGlvbkl0ZW1bXTtcbiAgICBvcHRpb25zJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8T3B0aW9uSXRlbVtdPihbXSk7XG5cbiAgICAvKipcbiAgICAgKiBUaGUgb2JqZWN0cyB0aGF0IHNob3VsZCBiZSByZXR1cm5lZCB2aWEgdGhlIG9wdGlvbidzIGNhbGxiYWNrLlxuICAgICAqXG4gICAgICogQ2FuIGJlIG51bGxcbiAgICAgKi9cbiAgICBASW5wdXQoKSBjYWxsYmFja09iamVjdHM6IE5vZGVbXSA9IHVuZGVmaW5lZDtcblxuICAgIC8qKlxuICAgICAqIFNob3VsZCBkaXNhYmxlZCAoXCJncmV5ZWQgb3V0XCIpIG9wdGlvbnMgYmUgc2hvd24gb3IgaGlkZGVuP1xuICAgICAqL1xuICAgIEBJbnB1dCgpIHNob3dEaXNhYmxlZCA9IHRydWU7XG5cbiAgICAvKipcbiAgICAgKiBBbiBhZGRpdGlvbmFsIGNsYXNzIHRvIGFkZCB0byB0aGUgYG1hdC1tZW51YCBpbnN0YW5jZS5cbiAgICAgKlxuICAgICAqIFRoaXMgaXMgbmVlZGVkIHRvIGN1c3RvbWl6ZSB0aGUgbWVudSBzdHlsaW5nIHNpbmNlIHRoZSBtZW51IGNvbnRlbnRzIGFyZVxuICAgICAqIHRha2VuIG91dCBvZiB0aGUgaG9zdCBjb250YWluZXIgYnkgYW5ndWxhci5cbiAgICAgKi9cbiAgICBASW5wdXQoKSBtZW51Q2xhc3M6IHN0cmluZztcblxuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgdWk6IFVJU2VydmljZSkge31cblxuICAgIG5nT25DaGFuZ2VzKGNoYW5nZXM/OiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgICAgIGlmIChjaGFuZ2VzID09IG51bGwgfHwgY2hhbmdlcz8ub3B0aW9ucyB8fCBjaGFuZ2VzPy5jYWxsYmFja09iamVjdHMpIHtcbiAgICAgICAgICAgIHRoaXMub3B0aW9ucyQubmV4dCh0aGlzLnVpLmZpbHRlclZhbGlkT3B0aW9ucyhIZWxwZXIuZGVlcENvcHlBcnJheSh0aGlzLm9wdGlvbnMpKSk7XG4gICAgICAgICAgICBpZiAodGhpcy5jYWxsYmFja09iamVjdHMgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgIHZvaWQgdGhpcy51aS51cGRhdGVPcHRpb25FbmFibGVkU3RhdGUodGhpcy5vcHRpb25zJCwgdGhpcy5jYWxsYmFja09iamVjdHMpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgY2xpY2sob3B0aW9uOiBPcHRpb25JdGVtKSB7XG4gICAgICAgIGlmICghb3B0aW9uLmlzRW5hYmxlZCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4gb3B0aW9uLmNhbGxiYWNrKG51bGwsIHRoaXMuY2FsbGJhY2tPYmplY3RzKSk7XG4gICAgfVxuXG4gICAgaXNOZXdHcm91cChpOiBudW1iZXIpIHtcbiAgICAgICAgaWYgKGkgPiAwKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5vcHRpb25zJC52YWx1ZVtpXS5ncm91cCAhPT0gdGhpcy5vcHRpb25zJC52YWx1ZVtpIC0gMV0uZ3JvdXA7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIC8qKiBXaGV0aGVyIHRoZXJlIGFyZSBhbnkgZW5hYmxlZCBvcHRpb25zIHNvIHdlIGNhbiBvcGVuIHRoZSBtZW51LiAqL1xuICAgIGNhblNob3dEcm9wZG93bigpOiBib29sZWFuIHtcbiAgICAgICAgLy8gV2UgY2FuIG9ubHkgb3BlbiB0aGUgZHJvcGRvd24gbWVudSwgd2hlbiB0aGVyZSBpcyBhdCBsZWFzdCBvbmUgZW5hYmxlZCBvcHRpb24uIEV2ZW4gd2hlblxuICAgICAgICAvLyB0aGVyZSBhcmUgb3B0aW9ucyB3aXRoIGBzaG93RGlzYWJsZWQ6IHRydWVgLCBzaG93aW5nIGEgbWVudSB3aXRoIG5vIHNlbGVjdGFibGUgb3B0aW9uXG4gICAgICAgIC8vIGNhdXNlcyBhMTF5IGlzc3Vlcy5cbiAgICAgICAgcmV0dXJuIHRoaXMub3B0aW9ucyQudmFsdWU/LnNvbWUoKG8pID0+IG8uaXNFbmFibGVkKTtcbiAgICB9XG59XG4iLCI8bWF0LW1lbnVcbiAgI2Ryb3Bkb3duPVwibWF0TWVudVwiXG4gIGNsYXNzPVwibWF0LWRyb3Bkb3duLW1lbnVcIlxuICBbY2xhc3NdPVwibWVudUNsYXNzXCJcbiAgYmFja2Ryb3BDbGFzcz1cIm1hdC1kcm9wZG93bi1tZW51XCJcbiAgW3hQb3NpdGlvbl09XCJwb3NpdGlvbiA9PT0gJ3JpZ2h0JyA/ICdhZnRlcicgOiAnYmVmb3JlJ1wiXG4+XG4gIDwhLS0gTWF0TWVudSBoYXMgcm9sZT1cIm1lbnVcIiwgc28gdGhlIG9ubHkgbWVhbmluZ2Z1bCByb2xlIG9mIGRlc2NlbmRhbnRzIGlzIFwibWVudWl0ZW1cIiAtLT5cbiAgPHVsIHJvbGU9XCJub25lXCI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgb3B0aW9uIG9mIG9wdGlvbnMkIHwgYXN5bmM7IGxldCBpID0gaW5kZXhcIj5cbiAgICAgIDxsaSAqbmdJZj1cIm9wdGlvbi5pc0VuYWJsZWQgfHwgc2hvd0Rpc2FibGVkXCIgcm9sZT1cIm5vbmVcIj5cbiAgICAgICAgPGJ1dHRvblxuICAgICAgICAgIG1hdC1tZW51LWl0ZW1cbiAgICAgICAgICBjbGFzcz1cIm1hdC1tZW51LWl0ZW0gY29sbGVjdGlvbi1pdGVtLXt7XG4gICAgICAgICAgICBvcHRpb24ubmFtZSB8IHJlcGxhY2VDaGFycyA6IHsgc2VhcmNoOiAnLicsIHJlcGxhY2U6ICctJyB9XG4gICAgICAgICAgfX1cIlxuICAgICAgICAgIG1hdFRvb2x0aXA9XCJ7eyBvcHRpb24gfCBvcHRpb25Ub29sdGlwIHwgYXN5bmMgfX1cIlxuICAgICAgICAgIG1hdFRvb2x0aXBQb3NpdGlvbj1cInJpZ2h0XCJcbiAgICAgICAgICBtYXRUb29sdGlwVG91Y2hHZXN0dXJlcz1cIm9mZlwiXG4gICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJvcHRpb24uYXJpYUxhYmVsIHx8IG9wdGlvbi5uYW1lIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgICBbY2xhc3MubWF0LW1lbnUtaXRlbS1zZXBhcmF0ZV09XCJvcHRpb24uaXNTZXBhcmF0ZSB8fCBpc05ld0dyb3VwKGkpXCJcbiAgICAgICAgICBbY2xhc3MubWF0LW1lbnUtaXRlbS1zZWxlY3RlZF09XCJvcHRpb24uaXNTZWxlY3RlZFwiXG4gICAgICAgICAgW2Rpc2FibGVkXT1cIiFvcHRpb24uaXNFbmFibGVkXCJcbiAgICAgICAgICAoY2xpY2spPVwiY2xpY2sob3B0aW9uKVwiXG4gICAgICAgICAgYXR0ci5kYXRhLXRlc3Q9XCJtZW51LWl0ZW0te3sgb3B0aW9uLm5hbWUgfX1cIlxuICAgICAgICA+XG4gICAgICAgICAgPGkgW2VzSWNvbl09XCJvcHRpb24uaWNvblwiPjwvaT4ge3sgb3B0aW9uLm5hbWUgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgPC9idXR0b24+XG4gICAgICA8L2xpPlxuICAgIDwvbmctY29udGFpbmVyPlxuICA8L3VsPlxuPC9tYXQtbWVudT5cbjxkaXYgI21lbnVUcmlnZ2VyPVwibWF0TWVudVRyaWdnZXJcIiBbbWF0TWVudVRyaWdnZXJGb3JdPVwibWVudVwiIGNsYXNzPVwiZGlzcGxheS1ub25lXCI+PC9kaXY+XG4iXX0=
@@ -1,48 +0,0 @@
1
- import { Injectable, InjectionToken } from '@angular/core';
2
- import * as i0 from "@angular/core";
3
- export const EDU_SHARING_UI_CONFIG = new InjectionToken('EDU_SHARING_API_CONFIG');
4
- export class EduSharingUiConfiguration {
5
- constructor() {
6
- /**
7
- * Whether this Angular application is being used embedded as a web component by a third-party
8
- * web page.
9
- */
10
- this.isEmbedded = false;
11
- }
12
- static create(params = {}) {
13
- return { ...new EduSharingUiConfiguration(), ...params };
14
- }
15
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: EduSharingUiConfiguration, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
16
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: EduSharingUiConfiguration, providedIn: 'root' }); }
17
- }
18
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: EduSharingUiConfiguration, decorators: [{
19
- type: Injectable,
20
- args: [{
21
- providedIn: 'root',
22
- }]
23
- }] });
24
- export function getConfigProvider(params) {
25
- return [
26
- // Provide the params given to `forRoot()`. These can be overridden by the application by
27
- // providing `EDU_SHARING_API_CONFIG` itself.
28
- {
29
- provide: EDU_SHARING_UI_CONFIG,
30
- useValue: params,
31
- },
32
- // Inject `configuration` as both, `ApiConfiguration` and `EduSharingApiConfiguration`, to pass
33
- // `rootUrl` on to `ApiModule` while also adding our custom configuration.
34
- {
35
- provide: EduSharingUiConfiguration,
36
- deps: [EDU_SHARING_UI_CONFIG],
37
- // deps: [[new Optional(), EDU_SHARING_API_CONFIG]],
38
- useFactory: (configParams) => EduSharingUiConfiguration.create(configParams),
39
- },
40
- {
41
- provide: EduSharingUiConfiguration,
42
- deps: [EDU_SHARING_UI_CONFIG],
43
- // deps: [[new Optional(), EDU_SHARING_API_CONFIG]],
44
- useFactory: (configParams) => EduSharingUiConfiguration.create(configParams),
45
- },
46
- ];
47
- }
48
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWR1LXNoYXJpbmctdWktY29uZmlndXJhdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2VkdS1zaGFyaW5nLXVpL3NyYy9saWIvZWR1LXNoYXJpbmctdWktY29uZmlndXJhdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLGNBQWMsRUFBWSxNQUFNLGVBQWUsQ0FBQzs7QUFFckUsTUFBTSxDQUFDLE1BQU0scUJBQXFCLEdBQUcsSUFBSSxjQUFjLENBQ25ELHdCQUF3QixDQUMzQixDQUFDO0FBS0YsTUFBTSxPQUFPLHlCQUF5QjtJQUh0QztRQUtJOzs7V0FHRztRQUNILGVBQVUsR0FBRyxLQUFLLENBQUM7S0FLdEI7SUFIRyxNQUFNLENBQUMsTUFBTSxDQUFDLFNBQTBDLEVBQUU7UUFDdEQsT0FBTyxFQUFFLEdBQUcsSUFBSSx5QkFBeUIsRUFBRSxFQUFFLEdBQUcsTUFBTSxFQUFFLENBQUM7SUFDN0QsQ0FBQzsrR0FWUSx5QkFBeUI7bUhBQXpCLHlCQUF5QixjQUZ0QixNQUFNOzs0RkFFVCx5QkFBeUI7a0JBSHJDLFVBQVU7bUJBQUM7b0JBQ1IsVUFBVSxFQUFFLE1BQU07aUJBQ3JCOztBQWdCRCxNQUFNLFVBQVUsaUJBQWlCLENBQUMsTUFBd0M7SUFDdEUsT0FBTztRQUNILHlGQUF5RjtRQUN6Riw2Q0FBNkM7UUFDN0M7WUFDSSxPQUFPLEVBQUUscUJBQXFCO1lBQzlCLFFBQVEsRUFBRSxNQUFNO1NBQ25CO1FBQ0QsK0ZBQStGO1FBQy9GLDBFQUEwRTtRQUMxRTtZQUNJLE9BQU8sRUFBRSx5QkFBeUI7WUFDbEMsSUFBSSxFQUFFLENBQUMscUJBQXFCLENBQUM7WUFDN0Isb0RBQW9EO1lBQ3BELFVBQVUsRUFBRSxDQUFDLFlBQTZDLEVBQUUsRUFBRSxDQUMxRCx5QkFBeUIsQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDO1NBQ3JEO1FBQ0Q7WUFDSSxPQUFPLEVBQUUseUJBQXlCO1lBQ2xDLElBQUksRUFBRSxDQUFDLHFCQUFxQixDQUFDO1lBQzdCLG9EQUFvRDtZQUNwRCxVQUFVLEVBQUUsQ0FBQyxZQUE2QyxFQUFFLEVBQUUsQ0FDMUQseUJBQXlCLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQztTQUNyRDtLQUNKLENBQUM7QUFDTixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSwgSW5qZWN0aW9uVG9rZW4sIFByb3ZpZGVyIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmV4cG9ydCBjb25zdCBFRFVfU0hBUklOR19VSV9DT05GSUcgPSBuZXcgSW5qZWN0aW9uVG9rZW48RWR1U2hhcmluZ1VpQ29uZmlndXJhdGlvblBhcmFtcz4oXG4gICAgJ0VEVV9TSEFSSU5HX0FQSV9DT05GSUcnLFxuKTtcblxuQEluamVjdGFibGUoe1xuICAgIHByb3ZpZGVkSW46ICdyb290Jyxcbn0pXG5leHBvcnQgY2xhc3MgRWR1U2hhcmluZ1VpQ29uZmlndXJhdGlvbiB7XG4gICAgcHJvZHVjdGlvbjogYm9vbGVhbjtcbiAgICAvKipcbiAgICAgKiBXaGV0aGVyIHRoaXMgQW5ndWxhciBhcHBsaWNhdGlvbiBpcyBiZWluZyB1c2VkIGVtYmVkZGVkIGFzIGEgd2ViIGNvbXBvbmVudCBieSBhIHRoaXJkLXBhcnR5XG4gICAgICogd2ViIHBhZ2UuXG4gICAgICovXG4gICAgaXNFbWJlZGRlZCA9IGZhbHNlO1xuXG4gICAgc3RhdGljIGNyZWF0ZShwYXJhbXM6IEVkdVNoYXJpbmdVaUNvbmZpZ3VyYXRpb25QYXJhbXMgPSB7fSk6IEVkdVNoYXJpbmdVaUNvbmZpZ3VyYXRpb24ge1xuICAgICAgICByZXR1cm4geyAuLi5uZXcgRWR1U2hhcmluZ1VpQ29uZmlndXJhdGlvbigpLCAuLi5wYXJhbXMgfTtcbiAgICB9XG59XG5cbmV4cG9ydCB0eXBlIEVkdVNoYXJpbmdVaUNvbmZpZ3VyYXRpb25QYXJhbXMgPSBQYXJ0aWFsPEVkdVNoYXJpbmdVaUNvbmZpZ3VyYXRpb24+O1xuXG5leHBvcnQgZnVuY3Rpb24gZ2V0Q29uZmlnUHJvdmlkZXIocGFyYW1zPzogRWR1U2hhcmluZ1VpQ29uZmlndXJhdGlvblBhcmFtcyk6IFByb3ZpZGVyW10ge1xuICAgIHJldHVybiBbXG4gICAgICAgIC8vIFByb3ZpZGUgdGhlIHBhcmFtcyBnaXZlbiB0byBgZm9yUm9vdCgpYC4gVGhlc2UgY2FuIGJlIG92ZXJyaWRkZW4gYnkgdGhlIGFwcGxpY2F0aW9uIGJ5XG4gICAgICAgIC8vIHByb3ZpZGluZyBgRURVX1NIQVJJTkdfQVBJX0NPTkZJR2AgaXRzZWxmLlxuICAgICAgICB7XG4gICAgICAgICAgICBwcm92aWRlOiBFRFVfU0hBUklOR19VSV9DT05GSUcsXG4gICAgICAgICAgICB1c2VWYWx1ZTogcGFyYW1zLFxuICAgICAgICB9LFxuICAgICAgICAvLyBJbmplY3QgYGNvbmZpZ3VyYXRpb25gIGFzIGJvdGgsIGBBcGlDb25maWd1cmF0aW9uYCBhbmQgYEVkdVNoYXJpbmdBcGlDb25maWd1cmF0aW9uYCwgdG8gcGFzc1xuICAgICAgICAvLyBgcm9vdFVybGAgb24gdG8gYEFwaU1vZHVsZWAgd2hpbGUgYWxzbyBhZGRpbmcgb3VyIGN1c3RvbSBjb25maWd1cmF0aW9uLlxuICAgICAgICB7XG4gICAgICAgICAgICBwcm92aWRlOiBFZHVTaGFyaW5nVWlDb25maWd1cmF0aW9uLFxuICAgICAgICAgICAgZGVwczogW0VEVV9TSEFSSU5HX1VJX0NPTkZJR10sXG4gICAgICAgICAgICAvLyBkZXBzOiBbW25ldyBPcHRpb25hbCgpLCBFRFVfU0hBUklOR19BUElfQ09ORklHXV0sXG4gICAgICAgICAgICB1c2VGYWN0b3J5OiAoY29uZmlnUGFyYW1zOiBFZHVTaGFyaW5nVWlDb25maWd1cmF0aW9uUGFyYW1zKSA9PlxuICAgICAgICAgICAgICAgIEVkdVNoYXJpbmdVaUNvbmZpZ3VyYXRpb24uY3JlYXRlKGNvbmZpZ1BhcmFtcyksXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIHByb3ZpZGU6IEVkdVNoYXJpbmdVaUNvbmZpZ3VyYXRpb24sXG4gICAgICAgICAgICBkZXBzOiBbRURVX1NIQVJJTkdfVUlfQ09ORklHXSxcbiAgICAgICAgICAgIC8vIGRlcHM6IFtbbmV3IE9wdGlvbmFsKCksIEVEVV9TSEFSSU5HX0FQSV9DT05GSUddXSxcbiAgICAgICAgICAgIHVzZUZhY3Rvcnk6IChjb25maWdQYXJhbXM6IEVkdVNoYXJpbmdVaUNvbmZpZ3VyYXRpb25QYXJhbXMpID0+XG4gICAgICAgICAgICAgICAgRWR1U2hhcmluZ1VpQ29uZmlndXJhdGlvbi5jcmVhdGUoY29uZmlnUGFyYW1zKSxcbiAgICAgICAgfSxcbiAgICBdO1xufVxuIl19
@@ -1,82 +0,0 @@
1
- import { NgModule } from '@angular/core';
2
- import { MatTooltipModule } from '@angular/material/tooltip';
3
- import { TranslateModule } from '@ngx-translate/core';
4
- import { CommonModule } from '@angular/common';
5
- import { getConfigProvider } from './edu-sharing-ui-configuration';
6
- import { ListItemsModule } from './list-items/list-items.module';
7
- import { NodeEntriesModule } from './node-entries/node-entries.module';
8
- import { EduSharingUiCommonModule } from './common/edu-sharing-ui-common.module';
9
- import { NodeImageSizePipe } from './pipes/node-image-size.pipe';
10
- import { FormatDatePipe } from './pipes/format-date.pipe';
11
- import { ListItemLabelPipe } from './node-entries/list-item-label.pipe';
12
- import { SortDropdownComponent } from './sort-dropdown/sort-dropdown.component';
13
- import { MdsModule } from './mds/mds.module';
14
- import * as i0 from "@angular/core";
15
- export class EduSharingUiModule {
16
- static forRoot(config) {
17
- return {
18
- ngModule: EduSharingUiModule,
19
- providers: [getConfigProvider(config)],
20
- };
21
- }
22
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: EduSharingUiModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
23
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.2.12", ngImport: i0, type: EduSharingUiModule, imports: [CommonModule,
24
- TranslateModule,
25
- EduSharingUiCommonModule,
26
- ListItemsModule,
27
- NodeEntriesModule], exports: [CommonModule,
28
- MdsModule,
29
- MatTooltipModule,
30
- TranslateModule,
31
- EduSharingUiCommonModule,
32
- ListItemsModule,
33
- NodeEntriesModule,
34
- NodeImageSizePipe,
35
- FormatDatePipe,
36
- ListItemsModule,
37
- ListItemLabelPipe,
38
- SortDropdownComponent] }); }
39
- static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: EduSharingUiModule, imports: [CommonModule,
40
- TranslateModule,
41
- EduSharingUiCommonModule,
42
- ListItemsModule,
43
- NodeEntriesModule, CommonModule,
44
- MdsModule,
45
- MatTooltipModule,
46
- TranslateModule,
47
- EduSharingUiCommonModule,
48
- ListItemsModule,
49
- NodeEntriesModule,
50
- ListItemsModule] }); }
51
- }
52
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: EduSharingUiModule, decorators: [{
53
- type: NgModule,
54
- args: [{
55
- declarations: [],
56
- imports: [
57
- CommonModule,
58
- TranslateModule,
59
- EduSharingUiCommonModule,
60
- ListItemsModule,
61
- NodeEntriesModule,
62
- // Loading the TranslationsModule here causes errors for lazy-loaded pages like the search
63
- // page. For usage outside the context of edu-sharing, we probably need to import the
64
- // TranslationsModule at the main module that packages or uses this library.
65
- ],
66
- exports: [
67
- CommonModule,
68
- MdsModule,
69
- MatTooltipModule,
70
- TranslateModule,
71
- EduSharingUiCommonModule,
72
- ListItemsModule,
73
- NodeEntriesModule,
74
- NodeImageSizePipe,
75
- FormatDatePipe,
76
- ListItemsModule,
77
- ListItemLabelPipe,
78
- SortDropdownComponent,
79
- ],
80
- }]
81
- }] });
82
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWR1LXNoYXJpbmctdWkubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvZWR1LXNoYXJpbmctdWkvc3JjL2xpYi9lZHUtc2hhcmluZy11aS5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUF1QixRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDOUQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDN0QsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3RELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQW1DLGlCQUFpQixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDcEcsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ2pFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBQ3ZFLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLHVDQUF1QyxDQUFDO0FBQ2pGLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ2pFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMxRCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUN4RSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSx5Q0FBeUMsQ0FBQztBQUNoRixPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sa0JBQWtCLENBQUM7O0FBNkI3QyxNQUFNLE9BQU8sa0JBQWtCO0lBQ3BCLE1BQU0sQ0FBQyxPQUFPLENBQ2pCLE1BQXVDO1FBRXZDLE9BQU87WUFDSCxRQUFRLEVBQUUsa0JBQWtCO1lBQzVCLFNBQVMsRUFBRSxDQUFDLGlCQUFpQixDQUFDLE1BQU0sQ0FBQyxDQUFDO1NBQ3pDLENBQUM7SUFDTixDQUFDOytHQVJRLGtCQUFrQjtnSEFBbEIsa0JBQWtCLFlBeEJ2QixZQUFZO1lBQ1osZUFBZTtZQUNmLHdCQUF3QjtZQUN4QixlQUFlO1lBQ2YsaUJBQWlCLGFBTWpCLFlBQVk7WUFDWixTQUFTO1lBQ1QsZ0JBQWdCO1lBQ2hCLGVBQWU7WUFDZix3QkFBd0I7WUFDeEIsZUFBZTtZQUNmLGlCQUFpQjtZQUNqQixpQkFBaUI7WUFDakIsY0FBYztZQUNkLGVBQWU7WUFDZixpQkFBaUI7WUFDakIscUJBQXFCO2dIQUdoQixrQkFBa0IsWUF4QnZCLFlBQVk7WUFDWixlQUFlO1lBQ2Ysd0JBQXdCO1lBQ3hCLGVBQWU7WUFDZixpQkFBaUIsRUFNakIsWUFBWTtZQUNaLFNBQVM7WUFDVCxnQkFBZ0I7WUFDaEIsZUFBZTtZQUNmLHdCQUF3QjtZQUN4QixlQUFlO1lBQ2YsaUJBQWlCO1lBR2pCLGVBQWU7OzRGQUtWLGtCQUFrQjtrQkEzQjlCLFFBQVE7bUJBQUM7b0JBQ04sWUFBWSxFQUFFLEVBQUU7b0JBQ2hCLE9BQU8sRUFBRTt3QkFDTCxZQUFZO3dCQUNaLGVBQWU7d0JBQ2Ysd0JBQXdCO3dCQUN4QixlQUFlO3dCQUNmLGlCQUFpQjt3QkFDakIsMEZBQTBGO3dCQUMxRixxRkFBcUY7d0JBQ3JGLDRFQUE0RTtxQkFDL0U7b0JBQ0QsT0FBTyxFQUFFO3dCQUNMLFlBQVk7d0JBQ1osU0FBUzt3QkFDVCxnQkFBZ0I7d0JBQ2hCLGVBQWU7d0JBQ2Ysd0JBQXdCO3dCQUN4QixlQUFlO3dCQUNmLGlCQUFpQjt3QkFDakIsaUJBQWlCO3dCQUNqQixjQUFjO3dCQUNkLGVBQWU7d0JBQ2YsaUJBQWlCO3dCQUNqQixxQkFBcUI7cUJBQ3hCO2lCQUNKIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTW9kdWxlV2l0aFByb3ZpZGVycywgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE1hdFRvb2x0aXBNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC90b29sdGlwJztcbmltcG9ydCB7IFRyYW5zbGF0ZU1vZHVsZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IEVkdVNoYXJpbmdVaUNvbmZpZ3VyYXRpb25QYXJhbXMsIGdldENvbmZpZ1Byb3ZpZGVyIH0gZnJvbSAnLi9lZHUtc2hhcmluZy11aS1jb25maWd1cmF0aW9uJztcbmltcG9ydCB7IExpc3RJdGVtc01vZHVsZSB9IGZyb20gJy4vbGlzdC1pdGVtcy9saXN0LWl0ZW1zLm1vZHVsZSc7XG5pbXBvcnQgeyBOb2RlRW50cmllc01vZHVsZSB9IGZyb20gJy4vbm9kZS1lbnRyaWVzL25vZGUtZW50cmllcy5tb2R1bGUnO1xuaW1wb3J0IHsgRWR1U2hhcmluZ1VpQ29tbW9uTW9kdWxlIH0gZnJvbSAnLi9jb21tb24vZWR1LXNoYXJpbmctdWktY29tbW9uLm1vZHVsZSc7XG5pbXBvcnQgeyBOb2RlSW1hZ2VTaXplUGlwZSB9IGZyb20gJy4vcGlwZXMvbm9kZS1pbWFnZS1zaXplLnBpcGUnO1xuaW1wb3J0IHsgRm9ybWF0RGF0ZVBpcGUgfSBmcm9tICcuL3BpcGVzL2Zvcm1hdC1kYXRlLnBpcGUnO1xuaW1wb3J0IHsgTGlzdEl0ZW1MYWJlbFBpcGUgfSBmcm9tICcuL25vZGUtZW50cmllcy9saXN0LWl0ZW0tbGFiZWwucGlwZSc7XG5pbXBvcnQgeyBTb3J0RHJvcGRvd25Db21wb25lbnQgfSBmcm9tICcuL3NvcnQtZHJvcGRvd24vc29ydC1kcm9wZG93bi5jb21wb25lbnQnO1xuaW1wb3J0IHsgTWRzTW9kdWxlIH0gZnJvbSAnLi9tZHMvbWRzLm1vZHVsZSc7XG5cbkBOZ01vZHVsZSh7XG4gICAgZGVjbGFyYXRpb25zOiBbXSxcbiAgICBpbXBvcnRzOiBbXG4gICAgICAgIENvbW1vbk1vZHVsZSxcbiAgICAgICAgVHJhbnNsYXRlTW9kdWxlLFxuICAgICAgICBFZHVTaGFyaW5nVWlDb21tb25Nb2R1bGUsXG4gICAgICAgIExpc3RJdGVtc01vZHVsZSxcbiAgICAgICAgTm9kZUVudHJpZXNNb2R1bGUsXG4gICAgICAgIC8vIExvYWRpbmcgdGhlIFRyYW5zbGF0aW9uc01vZHVsZSBoZXJlIGNhdXNlcyBlcnJvcnMgZm9yIGxhenktbG9hZGVkIHBhZ2VzIGxpa2UgdGhlIHNlYXJjaFxuICAgICAgICAvLyBwYWdlLiBGb3IgdXNhZ2Ugb3V0c2lkZSB0aGUgY29udGV4dCBvZiBlZHUtc2hhcmluZywgd2UgcHJvYmFibHkgbmVlZCB0byBpbXBvcnQgdGhlXG4gICAgICAgIC8vIFRyYW5zbGF0aW9uc01vZHVsZSBhdCB0aGUgbWFpbiBtb2R1bGUgdGhhdCBwYWNrYWdlcyBvciB1c2VzIHRoaXMgbGlicmFyeS5cbiAgICBdLFxuICAgIGV4cG9ydHM6IFtcbiAgICAgICAgQ29tbW9uTW9kdWxlLFxuICAgICAgICBNZHNNb2R1bGUsXG4gICAgICAgIE1hdFRvb2x0aXBNb2R1bGUsXG4gICAgICAgIFRyYW5zbGF0ZU1vZHVsZSxcbiAgICAgICAgRWR1U2hhcmluZ1VpQ29tbW9uTW9kdWxlLFxuICAgICAgICBMaXN0SXRlbXNNb2R1bGUsXG4gICAgICAgIE5vZGVFbnRyaWVzTW9kdWxlLFxuICAgICAgICBOb2RlSW1hZ2VTaXplUGlwZSxcbiAgICAgICAgRm9ybWF0RGF0ZVBpcGUsXG4gICAgICAgIExpc3RJdGVtc01vZHVsZSxcbiAgICAgICAgTGlzdEl0ZW1MYWJlbFBpcGUsXG4gICAgICAgIFNvcnREcm9wZG93bkNvbXBvbmVudCxcbiAgICBdLFxufSlcbmV4cG9ydCBjbGFzcyBFZHVTaGFyaW5nVWlNb2R1bGUge1xuICAgIHB1YmxpYyBzdGF0aWMgZm9yUm9vdChcbiAgICAgICAgY29uZmlnOiBFZHVTaGFyaW5nVWlDb25maWd1cmF0aW9uUGFyYW1zLFxuICAgICk6IE1vZHVsZVdpdGhQcm92aWRlcnM8RWR1U2hhcmluZ1VpTW9kdWxlPiB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBuZ01vZHVsZTogRWR1U2hhcmluZ1VpTW9kdWxlLFxuICAgICAgICAgICAgcHJvdmlkZXJzOiBbZ2V0Q29uZmlnUHJvdmlkZXIoY29uZmlnKV0sXG4gICAgICAgIH07XG4gICAgfVxufVxuIl19