ngx-edu-sharing-ui 10.0.20 → 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 +8 -9
  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,48 +0,0 @@
1
- import { Injectable } from '@angular/core';
2
- import * as i0 from "@angular/core";
3
- /**
4
- * Service to store any data temporary (lost after reloading page).
5
- *
6
- * Note that all components share the same data source. So uses prefixes for your name if
7
- * applicable!
8
- */
9
- export class TemporaryStorageService {
10
- static { this.APPLY_TO_LMS_PARAMETER_NODE = 'apply_to_lms_node'; }
11
- // @Deprecated Use NODE_RENDER_PARAMETER_DATA_SOURCE instead
12
- static { this.NODE_RENDER_PARAMETER_LIST = 'node_render_list'; }
13
- static { this.NODE_RENDER_PARAMETER_DATA_SOURCE = 'node_render_data_source'; }
14
- static { this.COLLECTION_ADD_NODES = 'collection_add_nodes'; }
15
- static { this.WORKSPACE_LAST_LOCATION = 'WORKSPACE_LAST_LOCATION'; }
16
- static { this.CUSTOM_NODE_LIST_COMPONENT = 'custom_node_list_component'; }
17
- static { this.CUSTOM_NODE_ENTRIES_COMPONENT = 'custom_node_entries_component'; }
18
- constructor() {
19
- this.data = {};
20
- }
21
- get(name, defaultValue = null) {
22
- if (this.data[name] != null) {
23
- return this.data[name];
24
- }
25
- return defaultValue;
26
- }
27
- set(name, value) {
28
- this.data[name] = value;
29
- }
30
- /**
31
- * Same as get, but will remove the value after fetching it.
32
- */
33
- pop(name, defaultValue = null) {
34
- const value = this.get(name, defaultValue);
35
- this.remove(name);
36
- return value;
37
- }
38
- remove(name) {
39
- this.data[name] = null;
40
- }
41
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: TemporaryStorageService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
42
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: TemporaryStorageService, providedIn: 'root' }); }
43
- }
44
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: TemporaryStorageService, decorators: [{
45
- type: Injectable,
46
- args: [{ providedIn: 'root' }]
47
- }], ctorParameters: () => [] });
48
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVtcG9yYXJ5LXN0b3JhZ2Uuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2VkdS1zaGFyaW5nLXVpL3NyYy9saWIvc2VydmljZXMvdGVtcG9yYXJ5LXN0b3JhZ2Uuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDOztBQUczQzs7Ozs7R0FLRztBQUVILE1BQU0sT0FBTyx1QkFBdUI7YUFDekIsZ0NBQTJCLEdBQUcsbUJBQW1CLEFBQXRCLENBQXVCO0lBQ3pELDREQUE0RDthQUNyRCwrQkFBMEIsR0FBRyxrQkFBa0IsQUFBckIsQ0FBc0I7YUFDaEQsc0NBQWlDLEdBQUcseUJBQXlCLEFBQTVCLENBQTZCO2FBQzlELHlCQUFvQixHQUFHLHNCQUFzQixBQUF6QixDQUEwQjthQUM5Qyw0QkFBdUIsR0FBRyx5QkFBeUIsQUFBNUIsQ0FBNkI7YUFLcEQsK0JBQTBCLEdBQUcsNEJBQTRCLEFBQS9CLENBQWdDO2FBQzFELGtDQUE2QixHQUFHLCtCQUErQixBQUFsQyxDQUFtQztJQUl2RTtRQUZRLFNBQUksR0FBUSxFQUFFLENBQUM7SUFFUixDQUFDO0lBRWhCLEdBQUcsQ0FBQyxJQUFZLEVBQUUsZUFBb0IsSUFBSTtRQUN0QyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksSUFBSSxFQUFFLENBQUM7WUFDMUIsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzNCLENBQUM7UUFDRCxPQUFPLFlBQVksQ0FBQztJQUN4QixDQUFDO0lBRUQsR0FBRyxDQUFDLElBQVksRUFBRSxLQUFVO1FBQ3hCLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsS0FBSyxDQUFDO0lBQzVCLENBQUM7SUFFRDs7T0FFRztJQUNILEdBQUcsQ0FBQyxJQUFZLEVBQUUsZUFBb0IsSUFBSTtRQUN0QyxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksRUFBRSxZQUFZLENBQUMsQ0FBQztRQUMzQyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ2xCLE9BQU8sS0FBSyxDQUFDO0lBQ2pCLENBQUM7SUFFRCxNQUFNLENBQUMsSUFBWTtRQUNmLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDO0lBQzNCLENBQUM7K0dBeENRLHVCQUF1QjttSEFBdkIsdUJBQXVCLGNBRFYsTUFBTTs7NEZBQ25CLHVCQUF1QjtrQkFEbkMsVUFBVTttQkFBQyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBOb2RlIH0gZnJvbSAnbmd4LWVkdS1zaGFyaW5nLWFwaSc7XG5cbi8qKlxuICogU2VydmljZSB0byBzdG9yZSBhbnkgZGF0YSB0ZW1wb3JhcnkgKGxvc3QgYWZ0ZXIgcmVsb2FkaW5nIHBhZ2UpLlxuICpcbiAqIE5vdGUgdGhhdCBhbGwgY29tcG9uZW50cyBzaGFyZSB0aGUgc2FtZSBkYXRhIHNvdXJjZS4gU28gdXNlcyBwcmVmaXhlcyBmb3IgeW91ciBuYW1lIGlmXG4gKiBhcHBsaWNhYmxlIVxuICovXG5ASW5qZWN0YWJsZSh7IHByb3ZpZGVkSW46ICdyb290JyB9KVxuZXhwb3J0IGNsYXNzIFRlbXBvcmFyeVN0b3JhZ2VTZXJ2aWNlIHtcbiAgICBzdGF0aWMgQVBQTFlfVE9fTE1TX1BBUkFNRVRFUl9OT0RFID0gJ2FwcGx5X3RvX2xtc19ub2RlJztcbiAgICAvLyBARGVwcmVjYXRlZCBVc2UgTk9ERV9SRU5ERVJfUEFSQU1FVEVSX0RBVEFfU09VUkNFIGluc3RlYWRcbiAgICBzdGF0aWMgTk9ERV9SRU5ERVJfUEFSQU1FVEVSX0xJU1QgPSAnbm9kZV9yZW5kZXJfbGlzdCc7XG4gICAgc3RhdGljIE5PREVfUkVOREVSX1BBUkFNRVRFUl9EQVRBX1NPVVJDRSA9ICdub2RlX3JlbmRlcl9kYXRhX3NvdXJjZSc7XG4gICAgc3RhdGljIENPTExFQ1RJT05fQUREX05PREVTID0gJ2NvbGxlY3Rpb25fYWRkX25vZGVzJztcbiAgICBzdGF0aWMgV09SS1NQQUNFX0xBU1RfTE9DQVRJT04gPSAnV09SS1NQQUNFX0xBU1RfTE9DQVRJT04nO1xuICAgIC8vIGRlZmF1bHQ6IGZhbHNlXG4gICAgc3RhdGljIE9QVElPTl9ISURFX01BSU5OQVY6ICdvcHRpb25faGlkZV9tYWlubmF2JztcbiAgICAvLyBkZWZhdWx0OiBmYWxzZVxuICAgIHN0YXRpYyBPUFRJT05fRElTQUJMRV9TQ1JPTExfTEFZT1VUOiAnb3B0aW9uX2Rpc2FibGVfc2Nyb2xsX2xheW91dCc7XG4gICAgc3RhdGljIENVU1RPTV9OT0RFX0xJU1RfQ09NUE9ORU5UID0gJ2N1c3RvbV9ub2RlX2xpc3RfY29tcG9uZW50JztcbiAgICBzdGF0aWMgQ1VTVE9NX05PREVfRU5UUklFU19DT01QT05FTlQgPSAnY3VzdG9tX25vZGVfZW50cmllc19jb21wb25lbnQnO1xuXG4gICAgcHJpdmF0ZSBkYXRhOiBhbnkgPSB7fTtcblxuICAgIGNvbnN0cnVjdG9yKCkge31cblxuICAgIGdldChuYW1lOiBzdHJpbmcsIGRlZmF1bHRWYWx1ZTogYW55ID0gbnVsbCkge1xuICAgICAgICBpZiAodGhpcy5kYXRhW25hbWVdICE9IG51bGwpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmRhdGFbbmFtZV07XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGRlZmF1bHRWYWx1ZTtcbiAgICB9XG5cbiAgICBzZXQobmFtZTogc3RyaW5nLCB2YWx1ZTogYW55KSB7XG4gICAgICAgIHRoaXMuZGF0YVtuYW1lXSA9IHZhbHVlO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFNhbWUgYXMgZ2V0LCBidXQgd2lsbCByZW1vdmUgdGhlIHZhbHVlIGFmdGVyIGZldGNoaW5nIGl0LlxuICAgICAqL1xuICAgIHBvcChuYW1lOiBzdHJpbmcsIGRlZmF1bHRWYWx1ZTogYW55ID0gbnVsbCk6IGFueSB7XG4gICAgICAgIGNvbnN0IHZhbHVlID0gdGhpcy5nZXQobmFtZSwgZGVmYXVsdFZhbHVlKTtcbiAgICAgICAgdGhpcy5yZW1vdmUobmFtZSk7XG4gICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICB9XG5cbiAgICByZW1vdmUobmFtZTogc3RyaW5nKSB7XG4gICAgICAgIHRoaXMuZGF0YVtuYW1lXSA9IG51bGw7XG4gICAgfVxufVxuXG5leHBvcnQgaW50ZXJmYWNlIENsaXBib2FyZE9iamVjdCB7XG4gICAgbm9kZXM6IE5vZGVbXTtcbiAgICBzb3VyY2VOb2RlOiBOb2RlO1xuICAgIGNvcHk6IGJvb2xlYW47XG59XG4iXX0=
@@ -1,327 +0,0 @@
1
- import { Injectable, } from '@angular/core';
2
- import * as rxjs from 'rxjs';
3
- import { BehaviorSubject } from 'rxjs';
4
- import { UIConstants } from '../util/ui-constants';
5
- import { distinctUntilChanged, map } from 'rxjs/operators';
6
- import * as i0 from "@angular/core";
7
- export class UIService {
8
- get shiftKeyPressed() {
9
- return this.shiftKeyPressedSubject.value;
10
- }
11
- constructor(componentFactoryResolver, injector, ngZone) {
12
- this.componentFactoryResolver = componentFactoryResolver;
13
- this.injector = injector;
14
- this.ngZone = ngZone;
15
- this.isTouchSubject = new BehaviorSubject(false);
16
- this.metaKeyPressedSubject = new BehaviorSubject(false);
17
- this.shiftKeyPressedSubject = new BehaviorSubject(false);
18
- this.ctrlKeyPressedSubject = new BehaviorSubject(false);
19
- // HostListener not working, so use window
20
- this.ngZone.runOutsideAngular(() => {
21
- window.addEventListener('keydown', (event) => {
22
- this.onKeyDownOrKeyUp(event);
23
- });
24
- window.addEventListener('keyup', (event) => {
25
- this.onKeyDownOrKeyUp(event);
26
- });
27
- window.addEventListener('pointerdown', (event) => {
28
- // Usually, properties for modifier keys will be set correctly on keydown and keyup
29
- // events, but there are situations where the operating system intercepts key
30
- // presses, e.g. the Windows key on Linux systems, so we update again on mouse
31
- // clicks to be sure.
32
- this.updateModifierKeys(event);
33
- });
34
- window.addEventListener('pointerdown', (event) => {
35
- // Usually, properties for modifier keys will be set correctly on keydown and keyup
36
- // events, but there are situations where the operating system intercepts key
37
- // presses, e.g. the Windows key on Linux systems, so we update again on mouse
38
- // clicks to be sure.
39
- const isTouch = event.pointerType === 'touch';
40
- if (this.isTouchSubject.value !== isTouch) {
41
- this.ngZone.run(() => this.isTouchSubject.next(isTouch));
42
- }
43
- });
44
- });
45
- }
46
- onKeyDownOrKeyUp(event) {
47
- // `event.metaKey` is not consistent across browsers on the actual keypress of the modifier
48
- // key. So we handle these events separately.
49
- if (event.key === 'Control') {
50
- this.ctrlKeyPressedSubject.next(event.type === 'keydown');
51
- }
52
- else if (event.key === 'Shift') {
53
- this.shiftKeyPressedSubject.next(event.type === 'keydown');
54
- }
55
- else if (event.key === 'Meta') {
56
- this.metaKeyPressedSubject.next(event.type === 'keydown');
57
- }
58
- else {
59
- // In case we miss modifier events because the browser didn't have focus during the
60
- // event, we update modifier keys on unrelated key events as well.
61
- this.updateModifierKeys(event);
62
- }
63
- }
64
- updateModifierKeys(event) {
65
- this.metaKeyPressedSubject.next(event.metaKey);
66
- this.shiftKeyPressedSubject.next(event.shiftKey);
67
- this.ctrlKeyPressedSubject.next(event.ctrlKey);
68
- }
69
- observeCtrlOrCmdKeyPressedOutsideZone() {
70
- return rxjs.combineLatest([this.metaKeyPressedSubject, this.ctrlKeyPressedSubject]).pipe(map(([metaKeyPressed, ctrlKeyPressed]) => metaKeyPressed || ctrlKeyPressed), distinctUntilChanged());
71
- }
72
- /**
73
- * @Deprecated
74
- * Prefer to subscribe to the isTouchSubject directly if viable
75
- *
76
- * Returns true if the current sessions seems to be running on a mobile device
77
- */
78
- isMobile() {
79
- return this.isTouchSubject.value;
80
- }
81
- static evaluateMediaQuery(type, value) {
82
- if (type == UIConstants.MEDIA_QUERY_MAX_WIDTH)
83
- return value > window.innerWidth;
84
- if (type == UIConstants.MEDIA_QUERY_MIN_WIDTH)
85
- return value < window.innerWidth;
86
- if (type == UIConstants.MEDIA_QUERY_MAX_HEIGHT)
87
- return value > window.innerHeight;
88
- if (type == UIConstants.MEDIA_QUERY_MIN_HEIGHT)
89
- return value < window.innerHeight;
90
- console.warn('Unsupported media query ' + type);
91
- return true;
92
- }
93
- filterValidOptions(options) {
94
- if (options == null)
95
- return null;
96
- options = options.filter((value) => value != null);
97
- let optionsFiltered = [];
98
- for (let option of options) {
99
- if ((!option.onlyMobile || (option.onlyMobile && this.isMobile())) &&
100
- (!option.onlyDesktop || (option.onlyDesktop && !this.isMobile())) &&
101
- (!option.mediaQueryType ||
102
- (option.mediaQueryType &&
103
- UIService.evaluateMediaQuery(option.mediaQueryType, option.mediaQueryValue))))
104
- optionsFiltered.push(option);
105
- }
106
- return optionsFiltered;
107
- }
108
- /**
109
- * helper that updates the "isEnabled" flag on all options for the given, selected node
110
- * can be used by dropdown or action menus to update the state for the current element
111
- * @param options
112
- */
113
- async updateOptionEnabledState(options, objects = null) {
114
- options.value?.forEach((o) => {
115
- o.isEnabled = !o.customEnabledCallback;
116
- void o.enabledCallback(objects).then((result) => {
117
- o.isEnabled = result;
118
- options.next(options.value);
119
- });
120
- });
121
- options.next(options.value);
122
- }
123
- filterToggleOptions(options, toggle, togglePosition = 'after') {
124
- let result = [];
125
- for (let option of options) {
126
- if (option.isToggle === toggle && (!toggle || togglePosition === option.togglePosition))
127
- result.push(option);
128
- }
129
- return result;
130
- }
131
- /**
132
- * dynamically inject an angular component into a regular html dom element
133
- * @param componentFactoryResolver The resolver service
134
- * @param viewContainerRef The viewContainerRef service
135
- * @param componentName The name of the angular component (e.g. SpinnerComponent)
136
- * @param targetElement The target element of the dom. If the element is null (not found), nothing is done
137
- * @param bindings Optional bindings (inputs & outputs) to the given component
138
- * @param delay Optional inflating delay in ms(some components may need some time to "init" the layout)
139
- * @param replace Whether to replace to previous `innerHTML` of `targetElement`
140
- * @param injector (to fetch templates for the component)
141
- */
142
- injectAngularComponent(viewContainerRef, componentName, targetElement, bindings = null, { delay = 0, replace = true } = {}, injector) {
143
- if (targetElement == null) {
144
- return null;
145
- }
146
- const factory = this.componentFactoryResolver.resolveComponentFactory(componentName);
147
- const component = viewContainerRef.createComponent(factory, undefined, injector || this.injector);
148
- if (bindings) {
149
- const instance = component.instance;
150
- for (const key in bindings) {
151
- const binding = bindings[key];
152
- if (binding instanceof Function) {
153
- // subscribe so callback can properly invoked
154
- instance[key].subscribe((value) => binding(value));
155
- }
156
- else {
157
- instance[key] = binding;
158
- // `ngOnChanges` won't be called on the component like this. Consider doing
159
- // something like this:
160
- // https://scm.edu-sharing.com/edu-sharing/projects/oeh-redaktion/ng-meta-widgets/-/blob/1603fb2dedadd3952401385bcbd91a4bd8407643/src/app/app.module.ts#L66-79
161
- }
162
- }
163
- }
164
- // 3. Get DOM element from component
165
- const domElem = component.hostView.rootNodes[0];
166
- domElem.style.display = 'none';
167
- if (replace) {
168
- targetElement.innerHTML = null;
169
- }
170
- targetElement.appendChild(domElem);
171
- setTimeout(() => {
172
- domElem.style.display = null;
173
- }, delay);
174
- return component;
175
- }
176
- /**
177
- * dynamically inject an angular component into a regular html dom element
178
- * @param componentFactoryResolver The resolver service
179
- * @param viewContainerRef The viewContainerRef service
180
- * @param componentName The name of the angular component (e.g. SpinnerComponent)
181
- * @param targetElement The target element of the dom. If the element is null (not found), nothing is done
182
- * @param bindings Optional bindings (inputs & outputs) to the given component
183
- * @param delay Optional inflating delay in ms(some components may need some time to "init" the layout)
184
- * @param replace Whether to replace to previous `innerHTML` of `targetElement`
185
- * @param injector (to fetch templates for the component)
186
- */
187
- static injectAngularComponent(componentFactoryResolver, viewContainerRef, componentName, targetElement, bindings = null, { delay = 0, replace = true } = {}, injector) {
188
- if (targetElement == null) {
189
- return null;
190
- }
191
- const factory = componentFactoryResolver.resolveComponentFactory(componentName);
192
- const component = viewContainerRef.createComponent(factory, undefined, injector);
193
- if (bindings) {
194
- const instance = component.instance;
195
- for (const key in bindings) {
196
- const binding = bindings[key];
197
- if (binding instanceof Function) {
198
- // subscribe so callback can properly invoked
199
- instance[key].subscribe((value) => binding(value));
200
- }
201
- else {
202
- instance[key] = binding;
203
- // `ngOnChanges` won't be called on the component like this. Consider doing
204
- // something like this:
205
- // https://scm.edu-sharing.com/edu-sharing/projects/oeh-redaktion/ng-meta-widgets/-/blob/1603fb2dedadd3952401385bcbd91a4bd8407643/src/app/app.module.ts#L66-79
206
- }
207
- }
208
- }
209
- // 3. Get DOM element from component
210
- const domElem = component.hostView.rootNodes[0];
211
- domElem.style.display = 'none';
212
- if (replace) {
213
- targetElement.innerHTML = null;
214
- }
215
- targetElement.appendChild(domElem);
216
- setTimeout(() => {
217
- domElem.style.display = null;
218
- }, delay);
219
- return component;
220
- }
221
- /**
222
- * smoothly scroll to the given child inside an element (The child will be placed around the first 1/3 of the parent's top)
223
- * @param child
224
- * @param element
225
- * @param smoothness
226
- */
227
- scrollSmoothElementToChild(child, element = 'auto', smoothness = 1) {
228
- let target;
229
- if (element === 'auto') {
230
- let parent = child.parentElement;
231
- while (parent) {
232
- if (['scroll', 'auto'].includes(window.getComputedStyle(parent).overflowY)) {
233
- target = parent;
234
- break;
235
- }
236
- parent = parent.parentElement;
237
- }
238
- }
239
- else {
240
- target = element;
241
- }
242
- // y equals to the top of the child + any scrolling of the parent - the top of the parent
243
- let y = child.getBoundingClientRect().top +
244
- target.scrollTop -
245
- target.getBoundingClientRect().top;
246
- // move the focused element to 1/3 at the top of the container
247
- y += child.getBoundingClientRect().height / 2 - target.getBoundingClientRect().height / 3;
248
- return this.scrollSmoothElement(y, target, smoothness);
249
- }
250
- /**
251
- * Smoothly scrolls to the given y offset inside an element (use offsetTop on the child to
252
- * determine this position).
253
- *
254
- * @param smoothness lower numbers indicate less smoothness, higher more smoothness
255
- */
256
- scrollSmoothElement(pos = 0, element, smoothness = 1, axis = 'y') {
257
- return new Promise((resolve) => {
258
- this.ngZone.runOutsideAngular(() => {
259
- const currentPos = axis == 'x' ? element.scrollLeft : element.scrollTop;
260
- if (element.getAttribute('data-is-scrolling') == 'true') {
261
- return;
262
- }
263
- const mode = currentPos > pos;
264
- let lastPos = pos;
265
- const maxPos = axis == 'x'
266
- ? element.scrollWidth - element.clientWidth
267
- : element.scrollHeight - element.clientHeight;
268
- let limitReached = false;
269
- if (mode && pos <= 0) {
270
- pos = 0;
271
- limitReached = true;
272
- }
273
- if (!mode && pos >= maxPos) {
274
- pos = maxPos;
275
- limitReached = true;
276
- }
277
- let speed = 16;
278
- let last = new Date().getTime();
279
- const callback = () => {
280
- let currentPos = axis == 'x' ? element.scrollLeft : element.scrollTop;
281
- const posDiff = currentPos - lastPos;
282
- const speedFactor = speed / 16;
283
- const divider = (3 / speedFactor) * smoothness;
284
- const minSpeed = (5 * speedFactor) / smoothness;
285
- const maxSpeed = (50 * speedFactor) / smoothness;
286
- lastPos = currentPos;
287
- let finished = true;
288
- if (currentPos > pos) {
289
- currentPos -= Math.min(maxSpeed, Math.max((currentPos - pos) / divider, minSpeed));
290
- finished = currentPos <= pos;
291
- }
292
- else if (currentPos < pos && !mode) {
293
- currentPos += Math.min(maxSpeed, Math.max((pos - currentPos) / divider, minSpeed));
294
- finished = currentPos >= pos;
295
- }
296
- if (finished) {
297
- currentPos = pos;
298
- }
299
- if (axis == 'x') {
300
- element.scrollLeft = currentPos;
301
- }
302
- else {
303
- element.scrollTop = currentPos;
304
- }
305
- if (finished) {
306
- element.removeAttribute('data-is-scrolling');
307
- resolve();
308
- }
309
- else {
310
- speed = new Date().getTime() - last;
311
- last = new Date().getTime();
312
- window.requestAnimationFrame(callback);
313
- }
314
- };
315
- window.requestAnimationFrame(callback);
316
- element.setAttribute('data-is-scrolling', 'true');
317
- });
318
- });
319
- }
320
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: UIService, deps: [{ token: i0.ComponentFactoryResolver }, { token: i0.Injector }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Injectable }); }
321
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: UIService, providedIn: 'root' }); }
322
- }
323
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: UIService, decorators: [{
324
- type: Injectable,
325
- args: [{ providedIn: 'root' }]
326
- }], ctorParameters: () => [{ type: i0.ComponentFactoryResolver }, { type: i0.Injector }, { type: i0.NgZone }] });
327
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidWkuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2VkdS1zaGFyaW5nLXVpL3NyYy9saWIvc2VydmljZXMvdWkuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBSUgsVUFBVSxHQUtiLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sS0FBSyxJQUFJLE1BQU0sTUFBTSxDQUFDO0FBQzdCLE9BQU8sRUFBRSxlQUFlLEVBQWMsTUFBTSxNQUFNLENBQUM7QUFDbkQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBRW5ELE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7QUFJM0QsTUFBTSxPQUFPLFNBQVM7SUFNbEIsSUFBSSxlQUFlO1FBQ2YsT0FBTyxJQUFJLENBQUMsc0JBQXNCLENBQUMsS0FBSyxDQUFDO0lBQzdDLENBQUM7SUFFRCxZQUNjLHdCQUFrRCxFQUNsRCxRQUFrQixFQUNsQixNQUFjO1FBRmQsNkJBQXdCLEdBQXhCLHdCQUF3QixDQUEwQjtRQUNsRCxhQUFRLEdBQVIsUUFBUSxDQUFVO1FBQ2xCLFdBQU0sR0FBTixNQUFNLENBQVE7UUFaNUIsbUJBQWMsR0FBRyxJQUFJLGVBQWUsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNwQywwQkFBcUIsR0FBRyxJQUFJLGVBQWUsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNuRCwyQkFBc0IsR0FBRyxJQUFJLGVBQWUsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNwRCwwQkFBcUIsR0FBRyxJQUFJLGVBQWUsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQVd2RCwwQ0FBMEM7UUFDMUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxHQUFHLEVBQUU7WUFDL0IsTUFBTSxDQUFDLGdCQUFnQixDQUFDLFNBQVMsRUFBRSxDQUFDLEtBQUssRUFBRSxFQUFFO2dC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QUssR0FBRyxJQUFJLElBQUksRUFBRSxDQUFDLE9BQU8sRUFBRSxHQUFHLElBQUksQ0FBQzt3QkFDcEMsSUFBSSxHQUFHLElBQUksSUFBSSxFQUFFLENBQUMsT0FBTyxFQUFFLENBQUM7d0JBQzVCLE1BQU0sQ0FBQyxxQkFBcUIsQ0FBQyxRQUFRLENBQUMsQ0FBQztvQkFDM0MsQ0FBQztnQkFDTCxDQUFDLENBQUM7Z0JBQ0YsTUFBTSxDQUFDLHFCQUFxQixDQUFDLFFBQVEsQ0FBQyxDQUFDO2dCQUV2QyxPQUFPLENBQUMsWUFBWSxDQUFDLG1CQUFtQixFQUFFLE1BQU0sQ0FBQyxDQUFDO1lBQ3RELENBQUMsQ0FBQyxDQUFDO1FBQ1AsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDOytHQW5XUSxTQUFTO21IQUFULFNBQVMsY0FESSxNQUFNOzs0RkFDbkIsU0FBUztrQkFEckIsVUFBVTttQkFBQyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgIENvbXBvbmVudEZhY3RvcnlSZXNvbHZlcixcbiAgICBDb21wb25lbnRSZWYsXG4gICAgRW1iZWRkZWRWaWV3UmVmLFxuICAgIEluamVjdGFibGUsXG4gICAgSW5qZWN0b3IsXG4gICAgTmdab25lLFxuICAgIFR5cGUsXG4gICAgVmlld0NvbnRhaW5lclJlZixcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgKiBhcyByeGpzIGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBVSUNvbnN0YW50cyB9IGZyb20gJy4uL3V0aWwvdWktY29uc3RhbnRzJztcbmltcG9ydCB7IE9wdGlvbkl0ZW0gfSBmcm9tICcuLi90eXBlcy9vcHRpb24taXRlbSc7XG5pbXBvcnQgeyBkaXN0aW5jdFVudGlsQ2hhbmdlZCwgbWFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgTm9kZSB9IGZyb20gJ25neC1lZHUtc2hhcmluZy1hcGknO1xuXG5ASW5qZWN0YWJsZSh7IHByb3ZpZGVkSW46ICdyb290JyB9KVxuZXhwb3J0IGNsYXNzIFVJU2VydmljZSB7XG4gICAgaXNUb3VjaFN1YmplY3QgPSBuZXcgQmVoYXZpb3JTdWJqZWN0KGZhbHNlKTtcbiAgICBwcml2YXRlIG1ldGFLZXlQcmVzc2VkU3ViamVjdCA9IG5ldyBCZWhhdmlvclN1YmplY3QoZmFsc2UpO1xuICAgIHByaXZhdGUgc2hpZnRLZXlQcmVzc2VkU3ViamVjdCA9IG5ldyBCZWhhdmlvclN1YmplY3QoZmFsc2UpO1xuICAgIHByaXZhdGUgY3RybEtleVByZXNzZWRTdWJqZWN0ID0gbmV3IEJlaGF2aW9yU3ViamVjdChmYWxzZSk7XG5cbiAgICBnZXQgc2hpZnRLZXlQcmVzc2VkKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5zaGlmdEtleVByZXNzZWRTdWJqZWN0LnZhbHVlO1xuICAgIH1cblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwcm90ZWN0ZWQgY29tcG9uZW50RmFjdG9yeVJlc29sdmVyOiBDb21wb25lbnRGYWN0b3J5UmVzb2x2ZXIsXG4gICAgICAgIHByb3RlY3RlZCBpbmplY3RvcjogSW5qZWN0b3IsXG4gICAgICAgIHByb3RlY3RlZCBuZ1pvbmU6IE5nWm9uZSxcbiAgICApIHtcbiAgICAgICAgLy8gSG9zdExpc3RlbmVyIG5vdCB3b3JraW5nLCBzbyB1c2Ugd2luZG93XG4gICAgICAgIHRoaXMubmdab25lLnJ1bk91dHNpZGVBbmd1bGFyKCgpID0+IHtcbiAgICAgICAgICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdrZXlkb3duJywgKGV2ZW50KSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5vbktleURvd25PcktleVVwKGV2ZW50KTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ2tleXVwJywgKGV2ZW50KSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5vbktleURvd25PcktleVVwKGV2ZW50KTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ3BvaW50ZXJkb3duJywgKGV2ZW50KSA9PiB7XG4gICAgICAgICAgICAgICAgLy8gVXN1YWxseSwgcHJvcGVydGllcyBmb3IgbW9kaWZpZXIga2V5cyB3aWxsIGJlIHNldCBjb3JyZWN0bHkgb24ga2V5ZG93biBhbmQga2V5dXBcbiAgICAgICAgICAgICAgICAvLyBldmVudHMsIGJ1dCB0aGVyZSBhcmUgc2l0dWF0aW9ucyB3aGVyZSB0aGUgb3BlcmF0aW5nIHN5c3RlbSBpbnRlcmNlcHRzIGtleVxuICAgICAgICAgICAgICAgIC8vIHByZXNzZXMsIGUuZy4gdGhlIFdpbmRvd3Mga2V5IG9uIExpbnV4IHN5c3RlbXMsIHNvIHdlIHVwZGF0ZSBhZ2FpbiBvbiBtb3VzZVxuICAgICAgICAgICAgICAgIC8vIGNsaWNrcyB0byBiZSBzdXJlLlxuICAgICAgICAgICAgICAgIHRoaXMudXBkYXRlTW9kaWZpZXJLZXlzKGV2ZW50KTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ3BvaW50ZXJkb3duJywgKGV2ZW50KSA9PiB7XG4gICAgICAgICAgICAgICAgLy8gVXN1YWxseSwgcHJvcGVydGllcyBmb3IgbW9kaWZpZXIga2V5cyB3aWxsIGJlIHNldCBjb3JyZWN0bHkgb24ga2V5ZG93biBhbmQga2V5dXBcbiAgICAgICAgICAgICAgICAvLyBldmVudHMsIGJ1dCB0aGVyZSBhcmUgc2l0dWF0aW9ucyB3aGVyZSB0aGUgb3BlcmF0aW5nIHN5c3RlbSBpbnRlcmNlcHRzIGtleVxuICAgICAgICAgICAgICAgIC8vIHByZXNzZXMsIGUuZy4gdGhlIFdpbmRvd3Mga2V5IG9uIExpbnV4IHN5c3RlbXMsIHNvIHdlIHVwZGF0ZSBhZ2FpbiBvbiBtb3VzZVxuICAgICAgICAgICAgICAgIC8vIGNsaWNrcyB0byBiZSBzdXJlLlxuICAgICAgICAgICAgICAgIGNvbnN0IGlzVG91Y2ggPSAoZXZlbnQgYXMgUG9pbnRlckV2ZW50KS5wb2ludGVyVHlwZSA9PT0gJ3RvdWNoJztcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5pc1RvdWNoU3ViamVjdC52YWx1ZSAhPT0gaXNUb3VjaCkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLm5nWm9uZS5ydW4oKCkgPT4gdGhpcy5pc1RvdWNoU3ViamVjdC5uZXh0KGlzVG91Y2gpKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIHByaXZhdGUgb25LZXlEb3duT3JLZXlVcChldmVudDogS2V5Ym9hcmRFdmVudCkge1xuICAgICAgICAvLyBgZXZlbnQubWV0YUtleWAgaXMgbm90IGNvbnNpc3RlbnQgYWNyb3NzIGJyb3dzZXJzIG9uIHRoZSBhY3R1YWwga2V5cHJlc3Mgb2YgdGhlIG1vZGlmaWVyXG4gICAgICAgIC8vIGtleS4gU28gd2UgaGFuZGxlIHRoZXNlIGV2ZW50cyBzZXBhcmF0ZWx5LlxuICAgICAgICBpZiAoZXZlbnQua2V5ID09PSAnQ29udHJvbCcpIHtcbiAgICAgICAgICAgIHRoaXMuY3RybEtleVByZXNzZWRTdWJqZWN0Lm5leHQoZXZlbnQudHlwZSA9PT0gJ2tleWRvd24nKTtcbiAgICAgICAgfSBlbHNlIGlmIChldmVudC5rZXkgPT09ICdTaGlmdCcpIHtcbiAgICAgICAgICAgIHRoaXMuc2hpZnRLZXlQcmVzc2VkU3ViamVjdC5uZXh0KGV2ZW50LnR5cGUgPT09ICdrZXlkb3duJyk7XG4gICAgICAgIH0gZWxzZSBpZiAoZXZlbnQua2V5ID09PSAnTWV0YScpIHtcbiAgICAgICAgICAgIHRoaXMubWV0YUtleVByZXNzZWRTdWJqZWN0Lm5leHQoZXZlbnQudHlwZSA9PT0gJ2tleWRvd24nKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIC8vIEluIGNhc2Ugd2UgbWlzcyBtb2RpZmllciBldmVudHMgYmVjYXVzZSB0aGUgYnJvd3NlciBkaWRuJ3QgaGF2ZSBmb2N1cyBkdXJpbmcgdGhlXG4gICAgICAgICAgICAvLyBldmVudCwgd2UgdXBkYXRlIG1vZGlmaWVyIGtleXMgb24gdW5yZWxhdGVkIGtleSBldmVudHMgYXMgd2VsbC5cbiAgICAgICAgICAgIHRoaXMudXBkYXRlTW9kaWZpZXJLZXlzKGV2ZW50KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgdXBkYXRlTW9kaWZpZXJLZXlzKGV2ZW50OiBQb2ludGVyRXZlbnQgfCBLZXlib2FyZEV2ZW50KSB7XG4gICAgICAgIHRoaXMubWV0YUtleVByZXNzZWRTdWJqZWN0Lm5leHQoZXZlbnQubWV0YUtleSk7XG4gICAgICAgIHRoaXMuc2hpZnRLZXlQcmVzc2VkU3ViamVjdC5uZXh0KGV2ZW50LnNoaWZ0S2V5KTtcbiAgICAgICAgdGhpcy5jdHJsS2V5UHJlc3NlZFN1YmplY3QubmV4dChldmVudC5jdHJsS2V5KTtcbiAgICB9XG5cbiAgICBvYnNlcnZlQ3RybE9yQ21kS2V5UHJlc3NlZE91dHNpZGVab25lKCk6IE9ic2VydmFibGU8Ym9vbGVhbj4ge1xuICAgICAgICByZXR1cm4gcnhqcy5jb21iaW5lTGF0ZXN0KFt0aGlzLm1ldGFLZXlQcmVzc2VkU3ViamVjdCwgdGhpcy5jdHJsS2V5UHJlc3NlZFN1YmplY3RdKS5waXBlKFxuICAgICAgICAgICAgbWFwKChbbWV0YUtleVByZXNzZWQsIGN0cmxLZXlQcmVzc2VkXSkgPT4gbWV0YUtleVByZXNzZWQgfHwgY3RybEtleVByZXNzZWQpLFxuICAgICAgICAgICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKSxcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBARGVwcmVjYXRlZFxuICAgICAqIFByZWZlciB0byBzdWJzY3JpYmUgdG8gdGhlIGlzVG91Y2hTdWJqZWN0IGRpcmVjdGx5IGlmIHZpYWJsZVxuICAgICAqXG4gICAgICogUmV0dXJucyB0cnVlIGlmIHRoZSBjdXJyZW50IHNlc3Npb25zIHNlZW1zIHRvIGJlIHJ1bm5pbmcgb24gYSBtb2JpbGUgZGV2aWNlXG4gICAgICovXG4gICAgcHVibGljIGlzTW9iaWxlKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5pc1RvdWNoU3ViamVjdC52YWx1ZTtcbiAgICB9XG4gICAgcHVibGljIHN0YXRpYyBldmFsdWF0ZU1lZGlhUXVlcnkodHlwZTogc3RyaW5nLCB2YWx1ZTogbnVtYmVyKSB7XG4gICAgICAgIGlmICh0eXBlID09IFVJQ29uc3RhbnRzLk1FRElBX1FVRVJZX01BWF9XSURUSCkgcmV0dXJuIHZhbHVlID4gd2luZG93LmlubmVyV2lkdGg7XG4gICAgICAgIGlmICh0eXBlID09IFVJQ29uc3RhbnRzLk1FRElBX1FVRVJZX01JTl9XSURUSCkgcmV0dXJuIHZhbHVlIDwgd2luZG93LmlubmVyV2lkdGg7XG4gICAgICAgIGlmICh0eXBlID09IFVJQ29uc3RhbnRzLk1FRElBX1FVRVJZX01BWF9IRUlHSFQpIHJldHVybiB2YWx1ZSA+IHdpbmRvdy5pbm5lckhlaWdodDtcbiAgICAgICAgaWYgKHR5cGUgPT0gVUlDb25zdGFudHMuTUVESUFfUVVFUllfTUlOX0hFSUdIVCkgcmV0dXJuIHZhbHVlIDwgd2luZG93LmlubmVySGVpZ2h0O1xuICAgICAgICBjb25zb2xlLndhcm4oJ1Vuc3VwcG9ydGVkIG1lZGlhIHF1ZXJ5ICcgKyB0eXBlKTtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIGZpbHRlclZhbGlkT3B0aW9ucyhvcHRpb25zOiBPcHRpb25JdGVtW10pIHtcbiAgICAgICAgaWYgKG9wdGlvbnMgPT0gbnVsbCkgcmV0dXJuIG51bGw7XG4gICAgICAgIG9wdGlvbnMgPSBvcHRpb25zLmZpbHRlcigodmFsdWUpID0+IHZhbHVlICE9IG51bGwpO1xuICAgICAgICBsZXQgb3B0aW9uc0ZpbHRlcmVkOiBPcHRpb25JdGVtW10gPSBbXTtcbiAgICAgICAgZm9yIChsZXQgb3B0aW9uIG9mIG9wdGlvbnMpIHtcbiAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICAoIW9wdGlvbi5vbmx5TW9iaWxlIHx8IChvcHRpb24ub25seU1vYmlsZSAmJiB0aGlzLmlzTW9iaWxlKCkpKSAmJlxuICAgICAgICAgICAgICAgICghb3B0aW9uLm9ubHlEZXNrdG9wIHx8IChvcHRpb24ub25seURlc2t0b3AgJiYgIXRoaXMuaXNNb2JpbGUoKSkpICYmXG4gICAgICAgICAgICAgICAgKCFvcHRpb24ubWVkaWFRdWVyeVR5cGUgfHxcbiAgICAgICAgICAgICAgICAgICAgKG9wdGlvbi5tZWRpYVF1ZXJ5VHlwZSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgVUlTZXJ2aWNlLmV2YWx1YXRlTWVkaWFRdWVyeShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcHRpb24ubWVkaWFRdWVyeVR5cGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9uLm1lZGlhUXVlcnlWYWx1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICkpKVxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIG9wdGlvbnNGaWx0ZXJlZC5wdXNoKG9wdGlvbik7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG9wdGlvbnNGaWx0ZXJlZDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBoZWxwZXIgdGhhdCB1cGRhdGVzIHRoZSBcImlzRW5hYmxlZFwiIGZsYWcgb24gYWxsIG9wdGlvbnMgZm9yIHRoZSBnaXZlbiwgc2VsZWN0ZWQgbm9kZVxuICAgICAqIGNhbiBiZSB1c2VkIGJ5IGRyb3Bkb3duIG9yIGFjdGlvbiBtZW51cyB0byB1cGRhdGUgdGhlIHN0YXRlIGZvciB0aGUgY3VycmVudCBlbGVtZW50XG4gICAgICogQHBhcmFtIG9wdGlvbnNcbiAgICAgKi9cbiAgICBhc3luYyB1cGRhdGVPcHRpb25FbmFibGVkU3RhdGUob3B0aW9uczogQmVoYXZpb3JTdWJqZWN0PE9wdGlvbkl0ZW1bXT4sIG9iamVjdHM6IE5vZGVbXSA9IG51bGwpIHtcbiAgICAgICAgb3B0aW9ucy52YWx1ZT8uZm9yRWFjaCgobykgPT4ge1xuICAgICAgICAgICAgby5pc0VuYWJsZWQgPSAhby5jdXN0b21FbmFibGVkQ2FsbGJhY2s7XG4gICAgICAgICAgICB2b2lkIG8uZW5hYmxlZENhbGxiYWNrKG9iamVjdHMpLnRoZW4oKHJlc3VsdCkgPT4ge1xuICAgICAgICAgICAgICAgIG8uaXNFbmFibGVkID0gcmVzdWx0O1xuICAgICAgICAgICAgICAgIG9wdGlvbnMubmV4dChvcHRpb25zLnZhbHVlKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICAgICAgb3B0aW9ucy5uZXh0KG9wdGlvbnMudmFsdWUpO1xuICAgIH1cblxuICAgIHB1YmxpYyBmaWx0ZXJUb2dnbGVPcHRpb25zKFxuICAgICAgICBvcHRpb25zOiBPcHRpb25JdGVtW10sXG4gICAgICAgIHRvZ2dsZTogYm9vbGVhbixcbiAgICAgICAgdG9nZ2xlUG9zaXRpb246ICdiZWZvcmUnIHwgJ2FmdGVyJyA9ICdhZnRlcicsXG4gICAgKSB7XG4gICAgICAgIGxldCByZXN1bHQ6IE9wdGlvbkl0ZW1bXSA9IFtdO1xuICAgICAgICBmb3IgKGxldCBvcHRpb24gb2Ygb3B0aW9ucykge1xuICAgICAgICAgICAgaWYgKG9wdGlvbi5pc1RvZ2dsZSA9PT0gdG9nZ2xlICYmICghdG9nZ2xlIHx8IHRvZ2dsZVBvc2l0aW9uID09PSBvcHRpb24udG9nZ2xlUG9zaXRpb24pKVxuICAgICAgICAgICAgICAgIHJlc3VsdC5wdXNoKG9wdGlvbik7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG4gICAgLyoqXG4gICAgICogZHluYW1pY2FsbHkgaW5qZWN0IGFuIGFuZ3VsYXIgY29tcG9uZW50IGludG8gYSByZWd1bGFyIGh0bWwgZG9tIGVsZW1lbnRcbiAgICAgKiBAcGFyYW0gY29tcG9uZW50RmFjdG9yeVJlc29sdmVyIFRoZSByZXNvbHZlciBzZXJ2aWNlXG4gICAgICogQHBhcmFtIHZpZXdDb250YWluZXJSZWYgVGhlIHZpZXdDb250YWluZXJSZWYgc2VydmljZVxuICAgICAqIEBwYXJhbSBjb21wb25lbnROYW1lIFRoZSBuYW1lIG9mIHRoZSBhbmd1bGFyIGNvbXBvbmVudCAoZS5nLiBTcGlubmVyQ29tcG9uZW50KVxuICAgICAqIEBwYXJhbSB0YXJnZXRFbGVtZW50IFRoZSB0YXJnZXQgZWxlbWVudCBvZiB0aGUgZG9tLiBJZiB0aGUgZWxlbWVudCBpcyBudWxsIChub3QgZm91bmQpLCBub3RoaW5nIGlzIGRvbmVcbiAgICAgKiBAcGFyYW0gYmluZGluZ3MgT3B0aW9uYWwgYmluZGluZ3MgKGlucHV0cyAmIG91dHB1dHMpIHRvIHRoZSBnaXZlbiBjb21wb25lbnRcbiAgICAgKiBAcGFyYW0gZGVsYXkgT3B0aW9uYWwgaW5mbGF0aW5nIGRlbGF5IGluIG1zKHNvbWUgY29tcG9uZW50cyBtYXkgbmVlZCBzb21lIHRpbWUgdG8gXCJpbml0XCIgdGhlIGxheW91dClcbiAgICAgKiBAcGFyYW0gcmVwbGFjZSBXaGV0aGVyIHRvIHJlcGxhY2UgdG8gcHJldmlvdXMgYGlubmVySFRNTGAgb2YgYHRhcmdldEVsZW1lbnRgXG4gICAgICogQHBhcmFtIGluamVjdG9yICh0byBmZXRjaCB0ZW1wbGF0ZXMgZm9yIHRoZSBjb21wb25lbnQpXG4gICAgICovXG4gICAgcHVibGljIGluamVjdEFuZ3VsYXJDb21wb25lbnQ8VD4oXG4gICAgICAgIHZpZXdDb250YWluZXJSZWY6IFZpZXdDb250YWluZXJSZWYsXG4gICAgICAgIGNvbXBvbmVudE5hbWU6IFR5cGU8VD4sXG4gICAgICAgIHRhcmdldEVsZW1lbnQ6IEVsZW1lbnQsXG4gICAgICAgIGJpbmRpbmdzOiB7IFtrZXk6IHN0cmluZ106IGFueSB9ID0gbnVsbCxcbiAgICAgICAgeyBkZWxheSA9IDAsIHJlcGxhY2UgPSB0cnVlIH0gPSB7fSxcbiAgICAgICAgaW5qZWN0b3I/OiBJbmplY3RvcixcbiAgICApOiBDb21wb25lbnRSZWY8VD4ge1xuICAgICAgICBpZiAodGFyZ2V0RWxlbWVudCA9PSBudWxsKSB7XG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBmYWN0b3J5ID0gdGhpcy5jb21wb25lbnRGYWN0b3J5UmVzb2x2ZXIucmVzb2x2ZUNvbXBvbmVudEZhY3RvcnkoY29tcG9uZW50TmFtZSk7XG4gICAgICAgIGNvbnN0IGNvbXBvbmVudDogQ29tcG9uZW50UmVmPFQ+ID0gdmlld0NvbnRhaW5lclJlZi5jcmVhdGVDb21wb25lbnQoXG4gICAgICAgICAgICBmYWN0b3J5LFxuICAgICAgICAgICAgdW5kZWZpbmVkLFxuICAgICAgICAgICAgaW5qZWN0b3IgfHwgdGhpcy5pbmplY3RvcixcbiAgICAgICAgKTtcbiAgICAgICAgaWYgKGJpbmRpbmdzKSB7XG4gICAgICAgICAgICBjb25zdCBpbnN0YW5jZTogeyBba2V5OiBzdHJpbmddOiBhbnkgfSA9IGNvbXBvbmVudC5pbnN0YW5jZTtcbiAgICAgICAgICAgIGZvciAoY29uc3Qga2V5IGluIGJpbmRpbmdzKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgYmluZGluZyA9IGJpbmRpbmdzW2tleV07XG4gICAgICAgICAgICAgICAgaWYgKGJpbmRpbmcgaW5zdGFuY2VvZiBGdW5jdGlvbikge1xuICAgICAgICAgICAgICAgICAgICAvLyBzdWJzY3JpYmUgc28gY2FsbGJhY2sgY2FuIHByb3Blcmx5IGludm9rZWRcbiAgICAgICAgICAgICAgICAgICAgaW5zdGFuY2Vba2V5XS5zdWJzY3JpYmUoKHZhbHVlOiBhbnkpID0+IGJpbmRpbmcodmFsdWUpKTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBpbnN0YW5jZVtrZXldID0gYmluZGluZztcbiAgICAgICAgICAgICAgICAgICAgLy8gYG5nT25DaGFuZ2VzYCB3b24ndCBiZSBjYWxsZWQgb24gdGhlIGNvbXBvbmVudCBsaWtlIHRoaXMuIENvbnNpZGVyIGRvaW5nXG4gICAgICAgICAgICAgICAgICAgIC8vIHNvbWV0aGluZyBsaWtlIHRoaXM6XG4gICAgICAgICAgICAgICAgICAgIC8vIGh0dHBzOi8vc2NtLmVkdS1zaGFyaW5nLmNvbS9lZHUtc2hhcmluZy9wcm9qZWN0cy9vZWgtcmVkYWt0aW9uL25nLW1ldGEtd2lkZ2V0cy8tL2Jsb2IvMTYwM2ZiMmRlZGFkZDM5NTI0MDEzODViY2JkOTFhNGJkODQwNzY0My9zcmMvYXBwL2FwcC5tb2R1bGUudHMjTDY2LTc5XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgLy8gMy4gR2V0IERPTSBlbGVtZW50IGZyb20gY29tcG9uZW50XG4gICAgICAgIGNvbnN0IGRvbUVsZW0gPSAoY29tcG9uZW50Lmhvc3RWaWV3IGFzIEVtYmVkZGVkVmlld1JlZjxhbnk+KS5yb290Tm9kZXNbMF0gYXMgSFRNTEVsZW1lbnQ7XG4gICAgICAgIGRvbUVsZW0uc3R5bGUuZGlzcGxheSA9ICdub25lJztcbiAgICAgICAgaWYgKHJlcGxhY2UpIHtcbiAgICAgICAgICAgIHRhcmdldEVsZW1lbnQuaW5uZXJIVE1MID0gbnVsbDtcbiAgICAgICAgfVxuICAgICAgICB0YXJnZXRFbGVtZW50LmFwcGVuZENoaWxkKGRvbUVsZW0pO1xuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgIGRvbUVsZW0uc3R5bGUuZGlzcGxheSA9IG51bGw7XG4gICAgICAgIH0sIGRlbGF5KTtcbiAgICAgICAgcmV0dXJuIGNvbXBvbmVudDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBkeW5hbWljYWxseSBpbmplY3QgYW4gYW5ndWxhciBjb21wb25lbnQgaW50byBhIHJlZ3VsYXIgaHRtbCBkb20gZWxlbWVudFxuICAgICAqIEBwYXJhbSBjb21wb25lbnRGYWN0b3J5UmVzb2x2ZXIgVGhlIHJlc29sdmVyIHNlcnZpY2VcbiAgICAgKiBAcGFyYW0gdmlld0NvbnRhaW5lclJlZiBUaGUgdmlld0NvbnRhaW5lclJlZiBzZXJ2aWNlXG4gICAgICogQHBhcmFtIGNvbXBvbmVudE5hbWUgVGhlIG5hbWUgb2YgdGhlIGFuZ3VsYXIgY29tcG9uZW50IChlLmcuIFNwaW5uZXJDb21wb25lbnQpXG4gICAgICogQHBhcmFtIHRhcmdldEVsZW1lbnQgVGhlIHRhcmdldCBlbGVtZW50IG9mIHRoZSBkb20uIElmIHRoZSBlbGVtZW50IGlzIG51bGwgKG5vdCBmb3VuZCksIG5vdGhpbmcgaXMgZG9uZVxuICAgICAqIEBwYXJhbSBiaW5kaW5ncyBPcHRpb25hbCBiaW5kaW5ncyAoaW5wdXRzICYgb3V0cHV0cykgdG8gdGhlIGdpdmVuIGNvbXBvbmVudFxuICAgICAqIEBwYXJhbSBkZWxheSBPcHRpb25hbCBpbmZsYXRpbmcgZGVsYXkgaW4gbXMoc29tZSBjb21wb25lbnRzIG1heSBuZWVkIHNvbWUgdGltZSB0byBcImluaXRcIiB0aGUgbGF5b3V0KVxuICAgICAqIEBwYXJhbSByZXBsYWNlIFdoZXRoZXIgdG8gcmVwbGFjZSB0byBwcmV2aW91cyBgaW5uZXJIVE1MYCBvZiBgdGFyZ2V0RWxlbWVudGBcbiAgICAgKiBAcGFyYW0gaW5qZWN0b3IgKHRvIGZldGNoIHRlbXBsYXRlcyBmb3IgdGhlIGNvbXBvbmVudClcbiAgICAgKi9cbiAgICBwdWJsaWMgc3RhdGljIGluamVjdEFuZ3VsYXJDb21wb25lbnQ8VD4oXG4gICAgICAgIGNvbXBvbmVudEZhY3RvcnlSZXNvbHZlcjogQ29tcG9uZW50RmFjdG9yeVJlc29sdmVyLFxuICAgICAgICB2aWV3Q29udGFpbmVyUmVmOiBWaWV3Q29udGFpbmVyUmVmLFxuICAgICAgICBjb21wb25lbnROYW1lOiBUeXBlPFQ+LFxuICAgICAgICB0YXJnZXRFbGVtZW50OiBFbGVtZW50LFxuICAgICAgICBiaW5kaW5nczogeyBba2V5OiBzdHJpbmddOiBhbnkgfSA9IG51bGwsXG4gICAgICAgIHsgZGVsYXkgPSAwLCByZXBsYWNlID0gdHJ1ZSB9ID0ge30sXG4gICAgICAgIGluamVjdG9yPzogSW5qZWN0b3IsXG4gICAgKTogQ29tcG9uZW50UmVmPFQ+IHtcbiAgICAgICAgaWYgKHRhcmdldEVsZW1lbnQgPT0gbnVsbCkge1xuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgZmFjdG9yeSA9IGNvbXBvbmVudEZhY3RvcnlSZXNvbHZlci5yZXNvbHZlQ29tcG9uZW50RmFjdG9yeShjb21wb25lbnROYW1lKTtcbiAgICAgICAgY29uc3QgY29tcG9uZW50OiBDb21wb25lbnRSZWY8VD4gPSB2aWV3Q29udGFpbmVyUmVmLmNyZWF0ZUNvbXBvbmVudChcbiAgICAgICAgICAgIGZhY3RvcnksXG4gICAgICAgICAgICB1bmRlZmluZWQsXG4gICAgICAgICAgICBpbmplY3RvcixcbiAgICAgICAgKTtcbiAgICAgICAgaWYgKGJpbmRpbmdzKSB7XG4gICAgICAgICAgICBjb25zdCBpbnN0YW5jZTogeyBba2V5OiBzdHJpbmddOiBhbnkgfSA9IGNvbXBvbmVudC5pbnN0YW5jZTtcbiAgICAgICAgICAgIGZvciAoY29uc3Qga2V5IGluIGJpbmRpbmdzKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgYmluZGluZyA9IGJpbmRpbmdzW2tleV07XG4gICAgICAgICAgICAgICAgaWYgKGJpbmRpbmcgaW5zdGFuY2VvZiBGdW5jdGlvbikge1xuICAgICAgICAgICAgICAgICAgICAvLyBzdWJzY3JpYmUgc28gY2FsbGJhY2sgY2FuIHByb3Blcmx5IGludm9rZWRcbiAgICAgICAgICAgICAgICAgICAgaW5zdGFuY2Vba2V5XS5zdWJzY3JpYmUoKHZhbHVlOiBhbnkpID0+IGJpbmRpbmcodmFsdWUpKTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBpbnN0YW5jZVtrZXldID0gYmluZGluZztcbiAgICAgICAgICAgICAgICAgICAgLy8gYG5nT25DaGFuZ2VzYCB3b24ndCBiZSBjYWxsZWQgb24gdGhlIGNvbXBvbmVudCBsaWtlIHRoaXMuIENvbnNpZGVyIGRvaW5nXG4gICAgICAgICAgICAgICAgICAgIC8vIHNvbWV0aGluZyBsaWtlIHRoaXM6XG4gICAgICAgICAgICAgICAgICAgIC8vIGh0dHBzOi8vc2NtLmVkdS1zaGFyaW5nLmNvbS9lZHUtc2hhcmluZy9wcm9qZWN0cy9vZWgtcmVkYWt0aW9uL25nLW1ldGEtd2lkZ2V0cy8tL2Jsb2IvMTYwM2ZiMmRlZGFkZDM5NTI0MDEzODViY2JkOTFhNGJkODQwNzY0My9zcmMvYXBwL2FwcC5tb2R1bGUudHMjTDY2LTc5XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgLy8gMy4gR2V0IERPTSBlbGVtZW50IGZyb20gY29tcG9uZW50XG4gICAgICAgIGNvbnN0IGRvbUVsZW0gPSAoY29tcG9uZW50Lmhvc3RWaWV3IGFzIEVtYmVkZGVkVmlld1JlZjxhbnk+KS5yb290Tm9kZXNbMF0gYXMgSFRNTEVsZW1lbnQ7XG4gICAgICAgIGRvbUVsZW0uc3R5bGUuZGlzcGxheSA9ICdub25lJztcbiAgICAgICAgaWYgKHJlcGxhY2UpIHtcbiAgICAgICAgICAgIHRhcmdldEVsZW1lbnQuaW5uZXJIVE1MID0gbnVsbDtcbiAgICAgICAgfVxuICAgICAgICB0YXJnZXRFbGVtZW50LmFwcGVuZENoaWxkKGRvbUVsZW0pO1xuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgIGRvbUVsZW0uc3R5bGUuZGlzcGxheSA9IG51bGw7XG4gICAgICAgIH0sIGRlbGF5KTtcbiAgICAgICAgcmV0dXJuIGNvbXBvbmVudDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBzbW9vdGhseSBzY3JvbGwgdG8gdGhlIGdpdmVuIGNoaWxkIGluc2lkZSBhbiBlbGVtZW50IChUaGUgY2hpbGQgd2lsbCBiZSBwbGFjZWQgYXJvdW5kIHRoZSBmaXJzdCAxLzMgb2YgdGhlIHBhcmVudCdzIHRvcClcbiAgICAgKiBAcGFyYW0gY2hpbGRcbiAgICAgKiBAcGFyYW0gZWxlbWVudFxuICAgICAqIEBwYXJhbSBzbW9vdGhuZXNzXG4gICAgICovXG4gICAgc2Nyb2xsU21vb3RoRWxlbWVudFRvQ2hpbGQoY2hpbGQ6IEVsZW1lbnQsIGVsZW1lbnQ6IEVsZW1lbnQgfCAnYXV0bycgPSAnYXV0bycsIHNtb290aG5lc3MgPSAxKSB7XG4gICAgICAgIGxldCB0YXJnZXQ6IEVsZW1lbnQ7XG4gICAgICAgIGlmIChlbGVtZW50ID09PSAnYXV0bycpIHtcbiAgICAgICAgICAgIGxldCBwYXJlbnQgPSBjaGlsZC5wYXJlbnRFbGVtZW50O1xuICAgICAgICAgICAgd2hpbGUgKHBhcmVudCkge1xuICAgICAgICAgICAgICAgIGlmIChbJ3Njcm9sbCcsICdhdXRvJ10uaW5jbHVkZXMod2luZG93LmdldENvbXB1dGVkU3R5bGUocGFyZW50KS5vdmVyZmxvd1kpKSB7XG4gICAgICAgICAgICAgICAgICAgIHRhcmdldCA9IHBhcmVudDtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHBhcmVudCA9IHBhcmVudC5wYXJlbnRFbGVtZW50O1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGFyZ2V0ID0gZWxlbWVudDtcbiAgICAgICAgfVxuICAgICAgICAvLyB5IGVxdWFscyB0byB0aGUgdG9wIG9mIHRoZSBjaGlsZCArIGFueSBzY3JvbGxpbmcgb2YgdGhlIHBhcmVudCAtIHRoZSB0b3Agb2YgdGhlIHBhcmVudFxuICAgICAgICBsZXQgeSA9XG4gICAgICAgICAgICBjaGlsZC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS50b3AgK1xuICAgICAgICAgICAgdGFyZ2V0LnNjcm9sbFRvcCAtXG4gICAgICAgICAgICB0YXJnZXQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkudG9wO1xuICAgICAgICAvLyBtb3ZlIHRoZSBmb2N1c2VkIGVsZW1lbnQgdG8gMS8zIGF0IHRoZSB0b3Agb2YgdGhlIGNvbnRhaW5lclxuICAgICAgICB5ICs9IGNoaWxkLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLmhlaWdodCAvIDIgLSB0YXJnZXQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkuaGVpZ2h0IC8gMztcbiAgICAgICAgcmV0dXJuIHRoaXMuc2Nyb2xsU21vb3RoRWxlbWVudCh5LCB0YXJnZXQsIHNtb290aG5lc3MpO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBTbW9vdGhseSBzY3JvbGxzIHRvIHRoZSBnaXZlbiB5IG9mZnNldCBpbnNpZGUgYW4gZWxlbWVudCAodXNlIG9mZnNldFRvcCBvbiB0aGUgY2hpbGQgdG9cbiAgICAgKiBkZXRlcm1pbmUgdGhpcyBwb3NpdGlvbikuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gc21vb3RobmVzcyBsb3dlciBudW1iZXJzIGluZGljYXRlIGxlc3Mgc21vb3RobmVzcywgaGlnaGVyIG1vcmUgc21vb3RobmVzc1xuICAgICAqL1xuICAgIHNjcm9sbFNtb290aEVsZW1lbnQocG9zOiBudW1iZXIgPSAwLCBlbGVtZW50OiBFbGVtZW50LCBzbW9vdGhuZXNzID0gMSwgYXhpcyA9ICd5Jykge1xuICAgICAgICByZXR1cm4gbmV3IFByb21pc2U8dm9pZD4oKHJlc29sdmUpID0+IHtcbiAgICAgICAgICAgIHRoaXMubmdab25lLnJ1bk91dHNpZGVBbmd1bGFyKCgpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBjdXJyZW50UG9zID0gYXhpcyA9PSAneCcgPyBlbGVtZW50LnNjcm9sbExlZnQgOiBlbGVtZW50LnNjcm9sbFRvcDtcbiAgICAgICAgICAgICAgICBpZiAoZWxlbWVudC5nZXRBdHRyaWJ1dGUoJ2RhdGEtaXMtc2Nyb2xsaW5nJykgPT0gJ3RydWUnKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY29uc3QgbW9kZSA9IGN1cnJlbnRQb3MgPiBwb3M7XG4gICAgICAgICAgICAgICAgbGV0IGxhc3RQb3MgPSBwb3M7XG4gICAgICAgICAgICAgICAgY29uc3QgbWF4UG9zID1cbiAgICAgICAgICAgICAgICAgICAgYXhpcyA9PSAneCdcbiAgICAgICAgICAgICAgICAgICAgICAgID8gZWxlbWVudC5zY3JvbGxXaWR0aCAtIGVsZW1lbnQuY2xpZW50V2lkdGhcbiAgICAgICAgICAgICAgICAgICAgICAgIDogZWxlbWVudC5zY3JvbGxIZWlnaHQgLSBlbGVtZW50LmNsaWVudEhlaWdodDtcbiAgICAgICAgICAgICAgICBsZXQgbGltaXRSZWFjaGVkID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgaWYgKG1vZGUgJiYgcG9zIDw9IDApIHtcbiAgICAgICAgICAgICAgICAgICAgcG9zID0gMDtcbiAgICAgICAgICAgICAgICAgICAgbGltaXRSZWFjaGVkID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKCFtb2RlICYmIHBvcyA+PSBtYXhQb3MpIHtcbiAgICAgICAgICAgICAgICAgICAgcG9zID0gbWF4UG9zO1xuICAgICAgICAgICAgICAgICAgICBsaW1pdFJlYWNoZWQgPSB0cnVlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBsZXQgc3BlZWQgPSAxNjtcbiAgICAgICAgICAgICAgICBsZXQgbGFzdCA9IG5ldyBEYXRlKCkuZ2V0VGltZSgpO1xuICAgICAgICAgICAgICAgIGNvbnN0IGNhbGxiYWNrID0gKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBsZXQgY3VycmVudFBvcyA9IGF4aXMgPT0gJ3gnID8gZWxlbWVudC5zY3JvbGxMZWZ0IDogZWxlbWVudC5zY3JvbGxUb3A7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHBvc0RpZmYgPSBjdXJyZW50UG9zIC0gbGFzdFBvcztcbiAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3BlZWRGYWN0b3IgPSBzcGVlZCAvIDE2O1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBkaXZpZGVyID0gKDMgLyBzcGVlZEZhY3RvcikgKiBzbW9vdGhuZXNzO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBtaW5TcGVlZCA9ICg1ICogc3BlZWRGYWN0b3IpIC8gc21vb3RobmVzcztcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgbWF4U3BlZWQgPSAoNTAgKiBzcGVlZEZhY3RvcikgLyBzbW9vdGhuZXNzO1xuICAgICAgICAgICAgICAgICAgICBsYXN0UG9zID0gY3VycmVudFBvcztcbiAgICAgICAgICAgICAgICAgICAgbGV0IGZpbmlzaGVkID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGN1cnJlbnRQb3MgPiBwb3MpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGN1cnJlbnRQb3MgLT0gTWF0aC5taW4oXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF4U3BlZWQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgTWF0aC5tYXgoKGN1cnJlbnRQb3MgLSBwb3MpIC8gZGl2aWRlciwgbWluU3BlZWQpLFxuICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpbmlzaGVkID0gY3VycmVudFBvcyA8PSBwb3M7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoY3VycmVudFBvcyA8IHBvcyAmJiAhbW9kZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgY3VycmVudFBvcyArPSBNYXRoLm1pbihcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXhTcGVlZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBNYXRoLm1heCgocG9zIC0gY3VycmVudFBvcykgLyBkaXZpZGVyLCBtaW5TcGVlZCksXG4gICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgZmluaXNoZWQgPSBjdXJyZW50UG9zID49IHBvcztcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBpZiAoZmluaXNoZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGN1cnJlbnRQb3MgPSBwb3M7XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICBpZiAoYXhpcyA9PSAneCcpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGVsZW1lbnQuc2Nyb2xsTGVmdCA9IGN1cnJlbnRQb3M7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBlbGVtZW50LnNjcm9sbFRvcCA9IGN1cnJlbnRQb3M7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgaWYgKGZpbmlzaGVkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBlbGVtZW50LnJlbW92ZUF0dHJpYnV0ZSgnZGF0YS1pcy1zY3JvbGxpbmcnKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc29sdmUoKTtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHNwZWVkID0gbmV3IERhdGUoKS5nZXRUaW1lKCkgLSBsYXN0O1xuICAgICAgICAgICAgICAgICAgICAgICAgbGFzdCA9IG5ldyBEYXRlKCkuZ2V0VGltZSgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgd2luZG93LnJlcXVlc3RBbmltYXRpb25GcmFtZShjYWxsYmFjayk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIHdpbmRvdy5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUoY2FsbGJhY2spO1xuXG4gICAgICAgICAgICAgICAgZWxlbWVudC5zZXRBdHRyaWJ1dGUoJ2RhdGEtaXMtc2Nyb2xsaW5nJywgJ3RydWUnKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICB9XG59XG4iXX0=
@@ -1,50 +0,0 @@
1
- import { trigger } from '@angular/animations';
2
- import { Component, EventEmitter, Input, Output, ViewChild } from '@angular/core';
3
- import { UIAnimation } from '../util/ui-animation';
4
- import * as i0 from "@angular/core";
5
- import * as i1 from "@angular/common";
6
- import * as i2 from "@angular/material/menu";
7
- import * as i3 from "../directives/icon.directive";
8
- import * as i4 from "@ngx-translate/core";
9
- export class SortDropdownComponent {
10
- constructor() {
11
- this.sort = new EventEmitter();
12
- }
13
- setSort(item) {
14
- let ascending = this.sortAscending;
15
- const itemAscending = item.mode === 'ascending';
16
- if (item.name === this.sortBy) {
17
- if (item.mode != null) {
18
- // element is limited to one mode, ignore the request
19
- if (itemAscending === this.sortAscending) {
20
- return;
21
- }
22
- }
23
- ascending = !ascending;
24
- }
25
- else if (item.mode != null) {
26
- // force mode when switching to item
27
- ascending = itemAscending;
28
- }
29
- item.ascending = ascending;
30
- this.sort.emit(item);
31
- }
32
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: SortDropdownComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
33
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.12", type: SortDropdownComponent, selector: "es-sort-dropdown", inputs: { columns: "columns", sortBy: "sortBy", sortAscending: "sortAscending" }, outputs: { sort: "sort" }, viewQueries: [{ propertyName: "menu", first: true, predicate: ["menu"], descendants: true, static: true }], ngImport: i0, template: "<mat-menu #menu=\"matMenu\" class=\"sort-dropdown-menu\">\n <div class=\"collection-item-title\">{{ 'SORT_BY' | translate }}</div>\n <button\n *ngFor=\"let item of columns\"\n mat-menu-item\n (click)=\"setSort(item)\"\n class=\"collection-item\"\n [class.active]=\"sortBy === item.name\"\n >\n <span class=\"title\" *ngIf=\"item.label\">{{ item.label }}</span>\n <span class=\"title\" *ngIf=\"!item.label\">{{ item.type + '.' + item.name | translate }}</span>\n <ng-container *ngIf=\"sortBy === item.name && item.name !== 'ccm:collection_ordered_position'\">\n <i class=\"material-icons\" *ngIf=\"sortAscending\" [altText]=\"'ASCENDING' | translate\">\n arrow_upward\n </i>\n <i class=\"material-icons\" *ngIf=\"!sortAscending\" [altText]=\"'DESCENDING' | translate\">\n arrow_downward\n </i>\n <span class=\"cdk-visually-hidden\">{{ 'SELECTED' | translate }}</span>\n </ng-container>\n </button>\n</mat-menu>\n", styles: ["::ng-deep .sort-dropdown-menu{width:240px}.collection-item-title{color:var(--textLight);font-size:80%;font-weight:700;padding:5px 16px}.collection-item{display:flex;color:var(--primary);text-align:left;border:none;width:100%}.collection-item ::ng-deep .mat-mdc-menu-item-text{flex-grow:1;display:flex;align-items:center}.collection-item.cdk-keyboard-focused{outline:none;border:2px solid var(--palette-primary-300)}.collection-item.active{--mat-menu-item-label-text-weight: bold}.collection-item.active:after{content:\"\";position:absolute;left:0;width:100%;height:100%;background:linear-gradient(to right,var(--primary) 0,var(--primary) 5px,transparent 5px,transparent 5%)}.collection-item .title{flex-grow:1}\n"], dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.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: i2.MatMenuItem, selector: "[mat-menu-item]", inputs: ["role", "disabled", "disableRipple"], exportAs: ["matMenuItem"] }, { kind: "directive", type: i3.IconDirective, selector: "i[esIcon], i.material-icons", inputs: ["altText", "aria", "esIcon"] }, { kind: "pipe", type: i4.TranslatePipe, name: "translate" }], animations: [trigger('openOverlay', UIAnimation.openOverlay(UIAnimation.ANIMATION_TIME_FAST))] }); }
34
- }
35
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: SortDropdownComponent, decorators: [{
36
- type: Component,
37
- args: [{ selector: 'es-sort-dropdown', animations: [trigger('openOverlay', UIAnimation.openOverlay(UIAnimation.ANIMATION_TIME_FAST))], template: "<mat-menu #menu=\"matMenu\" class=\"sort-dropdown-menu\">\n <div class=\"collection-item-title\">{{ 'SORT_BY' | translate }}</div>\n <button\n *ngFor=\"let item of columns\"\n mat-menu-item\n (click)=\"setSort(item)\"\n class=\"collection-item\"\n [class.active]=\"sortBy === item.name\"\n >\n <span class=\"title\" *ngIf=\"item.label\">{{ item.label }}</span>\n <span class=\"title\" *ngIf=\"!item.label\">{{ item.type + '.' + item.name | translate }}</span>\n <ng-container *ngIf=\"sortBy === item.name && item.name !== 'ccm:collection_ordered_position'\">\n <i class=\"material-icons\" *ngIf=\"sortAscending\" [altText]=\"'ASCENDING' | translate\">\n arrow_upward\n </i>\n <i class=\"material-icons\" *ngIf=\"!sortAscending\" [altText]=\"'DESCENDING' | translate\">\n arrow_downward\n </i>\n <span class=\"cdk-visually-hidden\">{{ 'SELECTED' | translate }}</span>\n </ng-container>\n </button>\n</mat-menu>\n", styles: ["::ng-deep .sort-dropdown-menu{width:240px}.collection-item-title{color:var(--textLight);font-size:80%;font-weight:700;padding:5px 16px}.collection-item{display:flex;color:var(--primary);text-align:left;border:none;width:100%}.collection-item ::ng-deep .mat-mdc-menu-item-text{flex-grow:1;display:flex;align-items:center}.collection-item.cdk-keyboard-focused{outline:none;border:2px solid var(--palette-primary-300)}.collection-item.active{--mat-menu-item-label-text-weight: bold}.collection-item.active:after{content:\"\";position:absolute;left:0;width:100%;height:100%;background:linear-gradient(to right,var(--primary) 0,var(--primary) 5px,transparent 5px,transparent 5%)}.collection-item .title{flex-grow:1}\n"] }]
38
- }], ctorParameters: () => [], propDecorators: { menu: [{
39
- type: ViewChild,
40
- args: ['menu', { static: true }]
41
- }], columns: [{
42
- type: Input
43
- }], sortBy: [{
44
- type: Input
45
- }], sortAscending: [{
46
- type: Input
47
- }], sort: [{
48
- type: Output
49
- }] } });
50
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic29ydC1kcm9wZG93bi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9lZHUtc2hhcmluZy11aS9zcmMvbGliL3NvcnQtZHJvcGRvd24vc29ydC1kcm9wZG93bi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9lZHUtc2hhcmluZy11aS9zcmMvbGliL3NvcnQtZHJvcGRvd24vc29ydC1kcm9wZG93bi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDOUMsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFbEYsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHNCQUFzQixDQUFDOzs7Ozs7QUFTbkQsTUFBTSxPQUFPLHFCQUFxQjtJQVM5QjtRQUZVLFNBQUksR0FBRyxJQUFJLFlBQVksRUFBYSxDQUFDO0lBRWhDLENBQUM7SUFFaEIsT0FBTyxDQUFDLElBQW9CO1FBQ3hCLElBQUksU0FBUyxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUM7UUFDbkMsTUFBTSxhQUFhLEdBQUcsSUFBSSxDQUFDLElBQUksS0FBSyxXQUFXLENBQUM7UUFDaEQsSUFBSSxJQUFJLENBQUMsSUFBSSxLQUFLLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUM1QixJQUFJLElBQUksQ0FBQyxJQUFJLElBQUksSUFBSSxFQUFFLENBQUM7Z0JBQ3BCLHFEQUFxRDtnQkFDckQsSUFBSSxhQUFhLEtBQUssSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO29CQUN2QyxPQUFPO2dCQUNYLENBQUM7WUFDTCxDQUFDO1lBQ0QsU0FBUyxHQUFHLENBQUMsU0FBUyxDQUFDO1FBQzNCLENBQUM7YUFBTSxJQUFJLElBQUksQ0FBQyxJQUFJLElBQUksSUFBSSxFQUFFLENBQUM7WUFDM0Isb0NBQW9DO1lBQ3BDLFNBQVMsR0FBRyxhQUFhLENBQUM7UUFDOUIsQ0FBQztRQUNBLElBQWtCLENBQUMsU0FBUyxHQUFHLFNBQVMsQ0FBQztRQUMxQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUN6QixDQUFDOytHQTVCUSxxQkFBcUI7bUdBQXJCLHFCQUFxQixpUkNabEMsdTlCQXNCQSwwakREWmdCLENBQUMsT0FBTyxDQUFDLGFBQWEsRUFBRSxXQUFXLENBQUMsV0FBVyxDQUFDLFdBQVcsQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDLENBQUM7OzRGQUVyRixxQkFBcUI7a0JBTmpDLFNBQVM7K0JBQ0ksa0JBQWtCLGNBR2hCLENBQUMsT0FBTyxDQUFDLGFBQWEsRUFBRSxXQUFXLENBQUMsV0FBVyxDQUFDLFdBQVcsQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDLENBQUM7d0RBR3pELElBQUk7c0JBQXhDLFNBQVM7dUJBQUMsTUFBTSxFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRTtnQkFFMUIsT0FBTztzQkFBZixLQUFLO2dCQUNHLE1BQU07c0JBQWQsS0FBSztnQkFDRyxhQUFhO3NCQUFyQixLQUFLO2dCQUVJLElBQUk7c0JBQWIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHRyaWdnZXIgfSBmcm9tICdAYW5ndWxhci9hbmltYXRpb25zJztcbmltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT3V0cHV0LCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE1hdE1lbnUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9tZW51JztcbmltcG9ydCB7IFVJQW5pbWF0aW9uIH0gZnJvbSAnLi4vdXRpbC91aS1hbmltYXRpb24nO1xuaW1wb3J0IHsgTGlzdEl0ZW0sIFNvcnRFdmVudCB9IGZyb20gJy4uL3R5cGVzL2xpc3QtaXRlbSc7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnZXMtc29ydC1kcm9wZG93bicsXG4gICAgdGVtcGxhdGVVcmw6ICdzb3J0LWRyb3Bkb3duLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnc29ydC1kcm9wZG93bi5jb21wb25lbnQuc2NzcyddLFxuICAgIGFuaW1hdGlvbnM6IFt0cmlnZ2VyKCdvcGVuT3ZlcmxheScsIFVJQW5pbWF0aW9uLm9wZW5PdmVybGF5KFVJQW5pbWF0aW9uLkFOSU1BVElPTl9USU1FX0ZBU1QpKV0sXG59KVxuZXhwb3J0IGNsYXNzIFNvcnREcm9wZG93bkNvbXBvbmVudCB7XG4gICAgQFZpZXdDaGlsZCgnbWVudScsIHsgc3RhdGljOiB0cnVlIH0pIG1lbnU6IE1hdE1lbnU7XG5cbiAgICBASW5wdXQoKSBjb2x1bW5zOiBMaXN0SXRlbVtdO1xuICAgIEBJbnB1dCgpIHNvcnRCeTogc3RyaW5nO1xuICAgIEBJbnB1dCgpIHNvcnRBc2NlbmRpbmc6IGJvb2xlYW47XG5cbiAgICBAT3V0cHV0KCkgc29ydCA9IG5ldyBFdmVudEVtaXR0ZXI8U29ydEV2ZW50PigpO1xuXG4gICAgY29uc3RydWN0b3IoKSB7fVxuXG4gICAgc2V0U29ydChpdGVtOiBMaXN0SXRlbSB8IGFueSk6IHZvaWQge1xuICAgICAgICBsZXQgYXNjZW5kaW5nID0gdGhpcy5zb3J0QXNjZW5kaW5nO1xuICAgICAgICBjb25zdCBpdGVtQXNjZW5kaW5nID0gaXRlbS5tb2RlID09PSAnYXNjZW5kaW5nJztcbiAgICAgICAgaWYgKGl0ZW0ubmFtZSA9PT0gdGhpcy5zb3J0QnkpIHtcbiAgICAgICAgICAgIGlmIChpdGVtLm1vZGUgIT0gbnVsbCkge1xuICAgICAgICAgICAgICAgIC8vIGVsZW1lbnQgaXMgbGltaXRlZCB0byBvbmUgbW9kZSwgaWdub3JlIHRoZSByZXF1ZXN0XG4gICAgICAgICAgICAgICAgaWYgKGl0ZW1Bc2NlbmRpbmcgPT09IHRoaXMuc29ydEFzY2VuZGluZykge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgYXNjZW5kaW5nID0gIWFzY2VuZGluZztcbiAgICAgICAgfSBlbHNlIGlmIChpdGVtLm1vZGUgIT0gbnVsbCkge1xuICAgICAgICAgICAgLy8gZm9yY2UgbW9kZSB3aGVuIHN3aXRjaGluZyB0byBpdGVtXG4gICAgICAgICAgICBhc2NlbmRpbmcgPSBpdGVtQXNjZW5kaW5nO1xuICAgICAgICB9XG4gICAgICAgIChpdGVtIGFzIFNvcnRFdmVudCkuYXNjZW5kaW5nID0gYXNjZW5kaW5nO1xuICAgICAgICB0aGlzLnNvcnQuZW1pdChpdGVtKTtcbiAgICB9XG59XG4iLCI8bWF0LW1lbnUgI21lbnU9XCJtYXRNZW51XCIgY2xhc3M9XCJzb3J0LWRyb3Bkb3duLW1lbnVcIj5cbiAgPGRpdiBjbGFzcz1cImNvbGxlY3Rpb24taXRlbS10aXRsZVwiPnt7ICdTT1JUX0JZJyB8IHRyYW5zbGF0ZSB9fTwvZGl2PlxuICA8YnV0dG9uXG4gICAgKm5nRm9yPVwibGV0IGl0ZW0gb2YgY29sdW1uc1wiXG4gICAgbWF0LW1lbnUtaXRlbVxuICAgIChjbGljayk9XCJzZXRTb3J0KGl0ZW0pXCJcbiAgICBjbGFzcz1cImNvbGxlY3Rpb24taXRlbVwiXG4gICAgW2NsYXNzLmFjdGl2ZV09XCJzb3J0QnkgPT09IGl0ZW0ubmFtZVwiXG4gID5cbiAgICA8c3BhbiBjbGFzcz1cInRpdGxlXCIgKm5nSWY9XCJpdGVtLmxhYmVsXCI+e3sgaXRlbS5sYWJlbCB9fTwvc3Bhbj5cbiAgICA8c3BhbiBjbGFzcz1cInRpdGxlXCIgKm5nSWY9XCIhaXRlbS5sYWJlbFwiPnt7IGl0ZW0udHlwZSArICcuJyArIGl0ZW0ubmFtZSB8IHRyYW5zbGF0ZSB9fTwvc3Bhbj5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwic29ydEJ5ID09PSBpdGVtLm5hbWUgJiYgaXRlbS5uYW1lICE9PSAnY2NtOmNvbGxlY3Rpb25fb3JkZXJlZF9wb3NpdGlvbidcIj5cbiAgICAgIDxpIGNsYXNzPVwibWF0ZXJpYWwtaWNvbnNcIiAqbmdJZj1cInNvcnRBc2NlbmRpbmdcIiBbYWx0VGV4dF09XCInQVNDRU5ESU5HJyB8IHRyYW5zbGF0ZVwiPlxuICAgICAgICBhcnJvd191cHdhcmRcbiAgICAgIDwvaT5cbiAgICAgIDxpIGNsYXNzPVwibWF0ZXJpYWwtaWNvbnNcIiAqbmdJZj1cIiFzb3J0QXNjZW5kaW5nXCIgW2FsdFRleHRdPVwiJ0RFU0NFTkRJTkcnIHwgdHJhbnNsYXRlXCI+XG4gICAgICAgIGFycm93X2Rvd253YXJkXG4gICAgICA8L2k+XG4gICAgICA8c3BhbiBjbGFzcz1cImNkay12aXN1YWxseS1oaWRkZW5cIj57eyAnU0VMRUNURUQnIHwgdHJhbnNsYXRlIH19PC9zcGFuPlxuICAgIDwvbmctY29udGFpbmVyPlxuICA8L2J1dHRvbj5cbjwvbWF0LW1lbnU+XG4iXX0=
@@ -1,19 +0,0 @@
1
- import { Component, HostBinding } from '@angular/core';
2
- import { TranslateModule } from '@ngx-translate/core';
3
- import * as i0 from "@angular/core";
4
- import * as i1 from "@ngx-translate/core";
5
- export class SpinnerComponent {
6
- constructor() {
7
- this.dataTest = 'loading-spinner';
8
- }
9
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: SpinnerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
10
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.12", type: SpinnerComponent, isStandalone: true, selector: "es-spinner", host: { properties: { "attr.data-test": "this.dataTest" } }, ngImport: i0, template: "<div class=\"spinner\">\n <span aria-live=\"polite\" class=\"cdk-visually-hidden\">{{ 'LOADING' | translate }}</span>\n <div class=\"spinnercontainer\">\n <div class=\"inner\">\n <div class=\"spinner1\"></div>\n </div>\n <div class=\"inner\">\n <div class=\"spinner2\"></div>\n </div>\n <div class=\"inner\">\n <div class=\"spinner3\"></div>\n </div>\n </div>\n</div>\n", styles: [".spinner{margin:0 auto}.spinnercontainer{margin:20px auto auto;height:54px;color:#0000;text-align:center;float:left;width:100%}.inner{width:30px;height:50px;display:inline-block}.spinner1{background:url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KPCEtLSBHZW5lcmF0b3I6IEFkb2JlIElsbHVzdHJhdG9yIDEyLjAuMCwgU1ZHIEV4cG9ydCBQbHVnLUluIC4gU1ZHIFZlcnNpb246IDYuMDAgQnVpbGQgNTE0NDgpICAtLT4KPCFET0NUWVBFIHN2ZyBQVUJMSUMgIi0vL1czQy8vRFREIFNWRyAxLjEvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvR3JhcGhpY3MvU1ZHLzEuMS9EVEQvc3ZnMTEuZHRkIiBbCgk8IUVOVElUWSBuc19zdmcgImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KCTwhRU5USVRZIG5zX3hsaW5rICJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KXT4KPHN2ZyAgdmVyc2lvbj0iMS4xIiBpZD0iTGF5ZXJfMSIgeG1sbnM9IiZuc19zdmc7IiB4bWxuczp4bGluaz0iJm5zX3hsaW5rOyIgd2lkdGg9IjE1LjY1NyIgaGVpZ2h0PSIxMy41NTkiCgkgdmlld0JveD0iMCAwIDE1LjY1NyAxMy41NTkiIG92ZXJmbG93PSJ2aXNpYmxlIiBlbmFibGUtYmFja2dyb3VuZD0ibmV3IDAgMCAxNS42NTcgMTMuNTU5IiB4bWw6c3BhY2U9InByZXNlcnZlIj4KPHBvbHlnb24gb3BhY2l0eT0iMC42IiBmaWxsPSIjYzFjNmUzIiBwb2ludHM9IjMuOTE0LDEzLjU1OSAwLDYuNzggMy45MTQsMCAxMS43NDMsMCAxNS42NTcsNi43OCAxMS43NDMsMTMuNTU5ICIvPgo8L3N2Zz4K);background-repeat:no-repeat;background-position:center;background-size:50px;width:50px;height:50px;-webkit-animation:spin 2s infinite ease-in;-moz-animation:spin 2s infinite ease-in;-ms-animation:spin 2s infinite ease-in;-o-animation:spin 2s infinite ease-in;animation:spin 2s infinite ease-in;-webkit-animation-delay:.1s;-moz-animation-delay:.1s;animation-delay:.1s}.spinner2{background:url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KPCEtLSBHZW5lcmF0b3I6IEFkb2JlIElsbHVzdHJhdG9yIDEyLjAuMCwgU1ZHIEV4cG9ydCBQbHVnLUluIC4gU1ZHIFZlcnNpb246IDYuMDAgQnVpbGQgNTE0NDgpICAtLT4KPCFET0NUWVBFIHN2ZyBQVUJMSUMgIi0vL1czQy8vRFREIFNWRyAxLjEvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvR3JhcGhpY3MvU1ZHLzEuMS9EVEQvc3ZnMTEuZHRkIiBbCgk8IUVOVElUWSBuc19zdmcgImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KCTwhRU5USVRZIG5zX3hsaW5rICJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KXT4KPHN2ZyAgdmVyc2lvbj0iMS4xIiBpZD0iTGF5ZXJfMSIgeG1sbnM9IiZuc19zdmc7IiB4bWxuczp4bGluaz0iJm5zX3hsaW5rOyIgd2lkdGg9IjE1LjY1NyIgaGVpZ2h0PSIxMy41NTkiCgkgdmlld0JveD0iMCAwIDE1LjY1NyAxMy41NTkiIG92ZXJmbG93PSJ2aXNpYmxlIiBlbmFibGUtYmFja2dyb3VuZD0ibmV3IDAgMCAxNS42NTcgMTMuNTU5IiB4bWw6c3BhY2U9InByZXNlcnZlIj4KPHBvbHlnb24gb3BhY2l0eT0iMC42IiBmaWxsPSIjN2Y5MWMzIiBwb2ludHM9IjMuOTE0LDEzLjU1OSAwLDYuNzggMy45MTQsMCAxMS43NDMsMCAxNS42NTcsNi43OCAxMS43NDMsMTMuNTU5ICIvPgo8L3N2Zz4K);background-repeat:no-repeat;background-position:center;background-size:50px;width:50px;height:50px;-webkit-animation:spin 2s infinite ease-in;-moz-animation:spin 2s infinite ease-in;-ms-animation:spin 2s infinite ease-in;-o-animation:spin 2s infinite ease-in;animation:spin 2s infinite ease-in;-webkit-animation-delay:.25s;-moz-animation-delay:.25s;animation-delay:.25s}.spinner3{background:url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KPCEtLSBHZW5lcmF0b3I6IEFkb2JlIElsbHVzdHJhdG9yIDEyLjAuMCwgU1ZHIEV4cG9ydCBQbHVnLUluIC4gU1ZHIFZlcnNpb246IDYuMDAgQnVpbGQgNTE0NDgpICAtLT4KPCFET0NUWVBFIHN2ZyBQVUJMSUMgIi0vL1czQy8vRFREIFNWRyAxLjEvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvR3JhcGhpY3MvU1ZHLzEuMS9EVEQvc3ZnMTEuZHRkIiBbCgk8IUVOVElUWSBuc19zdmcgImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KCTwhRU5USVRZIG5zX3hsaW5rICJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KXT4KPHN2ZyAgdmVyc2lvbj0iMS4xIiBpZD0iTGF5ZXJfMSIgeG1sbnM9IiZuc19zdmc7IiB4bWxuczp4bGluaz0iJm5zX3hsaW5rOyIgd2lkdGg9IjE1LjY1NyIgaGVpZ2h0PSIxMy41NTkiCgkgdmlld0JveD0iMCAwIDE1LjY1NyAxMy41NTkiIG92ZXJmbG93PSJ2aXNpYmxlIiBlbmFibGUtYmFja2dyb3VuZD0ibmV3IDAgMCAxNS42NTcgMTMuNTU5IiB4bWw6c3BhY2U9InByZXNlcnZlIj4KPHBvbHlnb24gb3BhY2l0eT0iMC42IiBmaWxsPSIjMzE2MmE3IiBwb2ludHM9IjMuOTE0LDEzLjU1OSAwLDYuNzggMy45MTQsMCAxMS43NDMsMCAxNS42NTcsNi43OCAxMS43NDMsMTMuNTU5ICIvPgo8L3N2Zz4K);background-repeat:no-repeat;background-position:center;background-size:50px;width:50px;height:50px;-webkit-animation:spin 2s infinite ease-in;-moz-animation:spin 2s infinite ease-in;-ms-animation:spin 2s infinite ease-in;-o-animation:spin 2s infinite ease-in;animation:spin 2s infinite ease-in;-webkit-animation-delay:.5s;-moz-animation-delay:.5s;animation-delay:.5s}@-webkit-keyframes spin{0%{transform:scale(1)}50%{transform:scale(.5)}to{transform:scale(1)}}@-moz-keyframes spin{0%{transform:scale(1)}50%{transform:scale(.5)}to{transform:scale(1)}}@-ms-keyframes spin{0%{transform:scale(1)}50%{transform:scale(.5)}to{transform:scale(1)}}@-o-keyframes spin{0%{transform:scale(1)}50%{transform:scale(.5)}to{transform:scale(1)}}@keyframes spin{0%{transform:scale(1)}50%{transform:scale(.5) rotate(90deg)}to{transform:scale(1)}}\n"], dependencies: [{ kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i1.TranslatePipe, name: "translate" }] }); }
11
- }
12
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: SpinnerComponent, decorators: [{
13
- type: Component,
14
- args: [{ selector: 'es-spinner', standalone: true, imports: [TranslateModule], template: "<div class=\"spinner\">\n <span aria-live=\"polite\" class=\"cdk-visually-hidden\">{{ 'LOADING' | translate }}</span>\n <div class=\"spinnercontainer\">\n <div class=\"inner\">\n <div class=\"spinner1\"></div>\n </div>\n <div class=\"inner\">\n <div class=\"spinner2\"></div>\n </div>\n <div class=\"inner\">\n <div class=\"spinner3\"></div>\n </div>\n </div>\n</div>\n", styles: [".spinner{margin:0 auto}.spinnercontainer{margin:20px auto auto;height:54px;color:#0000;text-align:center;float:left;width:100%}.inner{width:30px;height:50px;display:inline-block}.spinner1{background:url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KPCEtLSBHZW5lcmF0b3I6IEFkb2JlIElsbHVzdHJhdG9yIDEyLjAuMCwgU1ZHIEV4cG9ydCBQbHVnLUluIC4gU1ZHIFZlcnNpb246IDYuMDAgQnVpbGQgNTE0NDgpICAtLT4KPCFET0NUWVBFIHN2ZyBQVUJMSUMgIi0vL1czQy8vRFREIFNWRyAxLjEvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvR3JhcGhpY3MvU1ZHLzEuMS9EVEQvc3ZnMTEuZHRkIiBbCgk8IUVOVElUWSBuc19zdmcgImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KCTwhRU5USVRZIG5zX3hsaW5rICJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KXT4KPHN2ZyAgdmVyc2lvbj0iMS4xIiBpZD0iTGF5ZXJfMSIgeG1sbnM9IiZuc19zdmc7IiB4bWxuczp4bGluaz0iJm5zX3hsaW5rOyIgd2lkdGg9IjE1LjY1NyIgaGVpZ2h0PSIxMy41NTkiCgkgdmlld0JveD0iMCAwIDE1LjY1NyAxMy41NTkiIG92ZXJmbG93PSJ2aXNpYmxlIiBlbmFibGUtYmFja2dyb3VuZD0ibmV3IDAgMCAxNS42NTcgMTMuNTU5IiB4bWw6c3BhY2U9InByZXNlcnZlIj4KPHBvbHlnb24gb3BhY2l0eT0iMC42IiBmaWxsPSIjYzFjNmUzIiBwb2ludHM9IjMuOTE0LDEzLjU1OSAwLDYuNzggMy45MTQsMCAxMS43NDMsMCAxNS42NTcsNi43OCAxMS43NDMsMTMuNTU5ICIvPgo8L3N2Zz4K);background-repeat:no-repeat;background-position:center;background-size:50px;width:50px;height:50px;-webkit-animation:spin 2s infinite ease-in;-moz-animation:spin 2s infinite ease-in;-ms-animation:spin 2s infinite ease-in;-o-animation:spin 2s infinite ease-in;animation:spin 2s infinite ease-in;-webkit-animation-delay:.1s;-moz-animation-delay:.1s;animation-delay:.1s}.spinner2{background:url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KPCEtLSBHZW5lcmF0b3I6IEFkb2JlIElsbHVzdHJhdG9yIDEyLjAuMCwgU1ZHIEV4cG9ydCBQbHVnLUluIC4gU1ZHIFZlcnNpb246IDYuMDAgQnVpbGQgNTE0NDgpICAtLT4KPCFET0NUWVBFIHN2ZyBQVUJMSUMgIi0vL1czQy8vRFREIFNWRyAxLjEvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvR3JhcGhpY3MvU1ZHLzEuMS9EVEQvc3ZnMTEuZHRkIiBbCgk8IUVOVElUWSBuc19zdmcgImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KCTwhRU5USVRZIG5zX3hsaW5rICJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KXT4KPHN2ZyAgdmVyc2lvbj0iMS4xIiBpZD0iTGF5ZXJfMSIgeG1sbnM9IiZuc19zdmc7IiB4bWxuczp4bGluaz0iJm5zX3hsaW5rOyIgd2lkdGg9IjE1LjY1NyIgaGVpZ2h0PSIxMy41NTkiCgkgdmlld0JveD0iMCAwIDE1LjY1NyAxMy41NTkiIG92ZXJmbG93PSJ2aXNpYmxlIiBlbmFibGUtYmFja2dyb3VuZD0ibmV3IDAgMCAxNS42NTcgMTMuNTU5IiB4bWw6c3BhY2U9InByZXNlcnZlIj4KPHBvbHlnb24gb3BhY2l0eT0iMC42IiBmaWxsPSIjN2Y5MWMzIiBwb2ludHM9IjMuOTE0LDEzLjU1OSAwLDYuNzggMy45MTQsMCAxMS43NDMsMCAxNS42NTcsNi43OCAxMS43NDMsMTMuNTU5ICIvPgo8L3N2Zz4K);background-repeat:no-repeat;background-position:center;background-size:50px;width:50px;height:50px;-webkit-animation:spin 2s infinite ease-in;-moz-animation:spin 2s infinite ease-in;-ms-animation:spin 2s infinite ease-in;-o-animation:spin 2s infinite ease-in;animation:spin 2s infinite ease-in;-webkit-animation-delay:.25s;-moz-animation-delay:.25s;animation-delay:.25s}.spinner3{background:url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KPCEtLSBHZW5lcmF0b3I6IEFkb2JlIElsbHVzdHJhdG9yIDEyLjAuMCwgU1ZHIEV4cG9ydCBQbHVnLUluIC4gU1ZHIFZlcnNpb246IDYuMDAgQnVpbGQgNTE0NDgpICAtLT4KPCFET0NUWVBFIHN2ZyBQVUJMSUMgIi0vL1czQy8vRFREIFNWRyAxLjEvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvR3JhcGhpY3MvU1ZHLzEuMS9EVEQvc3ZnMTEuZHRkIiBbCgk8IUVOVElUWSBuc19zdmcgImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KCTwhRU5USVRZIG5zX3hsaW5rICJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KXT4KPHN2ZyAgdmVyc2lvbj0iMS4xIiBpZD0iTGF5ZXJfMSIgeG1sbnM9IiZuc19zdmc7IiB4bWxuczp4bGluaz0iJm5zX3hsaW5rOyIgd2lkdGg9IjE1LjY1NyIgaGVpZ2h0PSIxMy41NTkiCgkgdmlld0JveD0iMCAwIDE1LjY1NyAxMy41NTkiIG92ZXJmbG93PSJ2aXNpYmxlIiBlbmFibGUtYmFja2dyb3VuZD0ibmV3IDAgMCAxNS42NTcgMTMuNTU5IiB4bWw6c3BhY2U9InByZXNlcnZlIj4KPHBvbHlnb24gb3BhY2l0eT0iMC42IiBmaWxsPSIjMzE2MmE3IiBwb2ludHM9IjMuOTE0LDEzLjU1OSAwLDYuNzggMy45MTQsMCAxMS43NDMsMCAxNS42NTcsNi43OCAxMS43NDMsMTMuNTU5ICIvPgo8L3N2Zz4K);background-repeat:no-repeat;background-position:center;background-size:50px;width:50px;height:50px;-webkit-animation:spin 2s infinite ease-in;-moz-animation:spin 2s infinite ease-in;-ms-animation:spin 2s infinite ease-in;-o-animation:spin 2s infinite ease-in;animation:spin 2s infinite ease-in;-webkit-animation-delay:.5s;-moz-animation-delay:.5s;animation-delay:.5s}@-webkit-keyframes spin{0%{transform:scale(1)}50%{transform:scale(.5)}to{transform:scale(1)}}@-moz-keyframes spin{0%{transform:scale(1)}50%{transform:scale(.5)}to{transform:scale(1)}}@-ms-keyframes spin{0%{transform:scale(1)}50%{transform:scale(.5)}to{transform:scale(1)}}@-o-keyframes spin{0%{transform:scale(1)}50%{transform:scale(.5)}to{transform:scale(1)}}@keyframes spin{0%{transform:scale(1)}50%{transform:scale(.5) rotate(90deg)}to{transform:scale(1)}}\n"] }]
15
- }], ctorParameters: () => [], propDecorators: { dataTest: [{
16
- type: HostBinding,
17
- args: ['attr.data-test']
18
- }] } });
19
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3Bpbm5lci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9lZHUtc2hhcmluZy11aS9zcmMvbGliL3NwaW5uZXIvc3Bpbm5lci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9lZHUtc2hhcmluZy11aS9zcmMvbGliL3NwaW5uZXIvc3Bpbm5lci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFdBQVcsRUFBVSxNQUFNLGVBQWUsQ0FBQztBQUMvRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0scUJBQXFCLENBQUM7OztBQVN0RCxNQUFNLE9BQU8sZ0JBQWdCO0lBR3pCO1FBRndDLGFBQVEsR0FBRyxpQkFBaUIsQ0FBQztJQUV0RCxDQUFDOytHQUhQLGdCQUFnQjttR0FBaEIsZ0JBQWdCLG1JQ1Y3Qix1WkFjQSwrakpETmMsZUFBZTs7NEZBRWhCLGdCQUFnQjtrQkFQNUIsU0FBUzsrQkFDSSxZQUFZLGNBR1YsSUFBSSxXQUNQLENBQUMsZUFBZSxDQUFDO3dEQUdjLFFBQVE7c0JBQS9DLFdBQVc7dUJBQUMsZ0JBQWdCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBIb3N0QmluZGluZywgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBUcmFuc2xhdGVNb2R1bGUgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdlcy1zcGlubmVyJyxcbiAgICB0ZW1wbGF0ZVVybDogJ3NwaW5uZXIuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsczogWydzcGlubmVyLmNvbXBvbmVudC5zY3NzJ10sXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBpbXBvcnRzOiBbVHJhbnNsYXRlTW9kdWxlXSxcbn0pXG5leHBvcnQgY2xhc3MgU3Bpbm5lckNvbXBvbmVudCB7XG4gICAgQEhvc3RCaW5kaW5nKCdhdHRyLmRhdGEtdGVzdCcpIHJlYWRvbmx5IGRhdGFUZXN0ID0gJ2xvYWRpbmctc3Bpbm5lcic7XG5cbiAgICBjb25zdHJ1Y3RvcigpIHt9XG59XG4iLCI8ZGl2IGNsYXNzPVwic3Bpbm5lclwiPlxuICA8c3BhbiBhcmlhLWxpdmU9XCJwb2xpdGVcIiBjbGFzcz1cImNkay12aXN1YWxseS1oaWRkZW5cIj57eyAnTE9BRElORycgfCB0cmFuc2xhdGUgfX08L3NwYW4+XG4gIDxkaXYgY2xhc3M9XCJzcGlubmVyY29udGFpbmVyXCI+XG4gICAgPGRpdiBjbGFzcz1cImlubmVyXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwic3Bpbm5lcjFcIj48L2Rpdj5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwiaW5uZXJcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJzcGlubmVyMlwiPjwvZGl2PlxuICAgIDwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJpbm5lclwiPlxuICAgICAgPGRpdiBjbGFzcz1cInNwaW5uZXIzXCI+PC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9kaXY+XG4iXX0=
@@ -1,18 +0,0 @@
1
- import { Component, Input } from '@angular/core';
2
- import { MatProgressSpinnerModule } from '@angular/material/progress-spinner';
3
- import * as i0 from "@angular/core";
4
- import * as i1 from "@angular/material/progress-spinner";
5
- export class SpinnerSmallComponent {
6
- constructor() {
7
- this.diameter = 20;
8
- }
9
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: SpinnerSmallComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
10
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.12", type: SpinnerSmallComponent, isStandalone: true, selector: "es-spinner-small", inputs: { diameter: "diameter" }, ngImport: i0, template: "<mat-progress-spinner\n color=\"primary\"\n mode=\"indeterminate\"\n [diameter]=\"diameter\"\n></mat-progress-spinner>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: MatProgressSpinnerModule }, { kind: "component", type: i1.MatProgressSpinner, selector: "mat-progress-spinner, mat-spinner", inputs: ["color", "mode", "value", "diameter", "strokeWidth"], exportAs: ["matProgressSpinner"] }] }); }
11
- }
12
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: SpinnerSmallComponent, decorators: [{
13
- type: Component,
14
- args: [{ selector: 'es-spinner-small', standalone: true, imports: [MatProgressSpinnerModule], template: "<mat-progress-spinner\n color=\"primary\"\n mode=\"indeterminate\"\n [diameter]=\"diameter\"\n></mat-progress-spinner>\n" }]
15
- }], ctorParameters: () => [], propDecorators: { diameter: [{
16
- type: Input
17
- }] } });
18
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3Bpbm5lci1zbWFsbC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9lZHUtc2hhcmluZy11aS9zcmMvbGliL3NwaW5uZXItc21hbGwvc3Bpbm5lci1zbWFsbC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9lZHUtc2hhcmluZy11aS9zcmMvbGliL3NwaW5uZXItc21hbGwvc3Bpbm5lci1zbWFsbC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNqRCxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQzs7O0FBUzlFLE1BQU0sT0FBTyxxQkFBcUI7SUFFOUI7UUFEUyxhQUFRLEdBQUcsRUFBRSxDQUFDO0lBQ1IsQ0FBQzsrR0FGUCxxQkFBcUI7bUdBQXJCLHFCQUFxQiw4R0NWbEMsNkhBS0EseURER2Msd0JBQXdCOzs0RkFFekIscUJBQXFCO2tCQVBqQyxTQUFTOytCQUNJLGtCQUFrQixjQUdoQixJQUFJLFdBQ1AsQ0FBQyx3QkFBd0IsQ0FBQzt3REFHMUIsUUFBUTtzQkFBaEIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE1hdFByb2dyZXNzU3Bpbm5lck1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3Byb2dyZXNzLXNwaW5uZXInO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2VzLXNwaW5uZXItc21hbGwnLFxuICAgIHRlbXBsYXRlVXJsOiAnc3Bpbm5lci1zbWFsbC5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJ3NwaW5uZXItc21hbGwuY29tcG9uZW50LnNjc3MnXSxcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIGltcG9ydHM6IFtNYXRQcm9ncmVzc1NwaW5uZXJNb2R1bGVdLFxufSlcbmV4cG9ydCBjbGFzcyBTcGlubmVyU21hbGxDb21wb25lbnQge1xuICAgIEBJbnB1dCgpIGRpYW1ldGVyID0gMjA7XG4gICAgY29uc3RydWN0b3IoKSB7fVxufVxuIiwiPG1hdC1wcm9ncmVzcy1zcGlubmVyXG4gIGNvbG9yPVwicHJpbWFyeVwiXG4gIG1vZGU9XCJpbmRldGVybWluYXRlXCJcbiAgW2RpYW1ldGVyXT1cImRpYW1ldGVyXCJcbj48L21hdC1wcm9ncmVzcy1zcGlubmVyPlxuIl19
@@ -1,6 +0,0 @@
1
- export class FallbackTranslationHandler {
2
- handle(params) {
3
- return params.interpolateParams?.fallback ?? params.key;
4
- }
5
- }
6
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmFsbGJhY2stdHJhbnNsYXRpb24taGFuZGxlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2VkdS1zaGFyaW5nLXVpL3NyYy9saWIvdHJhbnNsYXRpb25zL2ZhbGxiYWNrLXRyYW5zbGF0aW9uLWhhbmRsZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsTUFBTSxPQUFPLDBCQUEwQjtJQUNuQyxNQUFNLENBQUMsTUFBdUM7UUFDMUMsT0FBUSxNQUFNLENBQUMsaUJBQXlCLEVBQUUsUUFBUSxJQUFJLE1BQU0sQ0FBQyxHQUFHLENBQUM7SUFDckUsQ0FBQztDQUNKIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTWlzc2luZ1RyYW5zbGF0aW9uSGFuZGxlciwgTWlzc2luZ1RyYW5zbGF0aW9uSGFuZGxlclBhcmFtcyB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuXG5leHBvcnQgY2xhc3MgRmFsbGJhY2tUcmFuc2xhdGlvbkhhbmRsZXIgaW1wbGVtZW50cyBNaXNzaW5nVHJhbnNsYXRpb25IYW5kbGVyIHtcbiAgICBoYW5kbGUocGFyYW1zOiBNaXNzaW5nVHJhbnNsYXRpb25IYW5kbGVyUGFyYW1zKSB7XG4gICAgICAgIHJldHVybiAocGFyYW1zLmludGVycG9sYXRlUGFyYW1zIGFzIGFueSk/LmZhbGxiYWNrID8/IHBhcmFtcy5rZXk7XG4gICAgfVxufVxuIl19