@ngageoint/mage.web-core-lib 6.3.0-beta.0

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 (142) hide show
  1. package/README.md +24 -0
  2. package/common/index.d.ts +6 -0
  3. package/common/mage-common.module.d.ts +9 -0
  4. package/common/mage-common.module.d.ts.map +1 -0
  5. package/common/ngageoint-mage.web-core-lib-common.d.ts.map +1 -0
  6. package/common/public-api.d.ts +3 -0
  7. package/common/public-api.d.ts.map +1 -0
  8. package/common/xhr-img.component.d.ts +59 -0
  9. package/common/xhr-img.component.d.ts.map +1 -0
  10. package/esm2020/common/mage-common.module.mjs +25 -0
  11. package/esm2020/common/ngageoint-mage.web-core-lib-common.mjs +5 -0
  12. package/esm2020/common/public-api.mjs +3 -0
  13. package/esm2020/common/xhr-img.component.mjs +104 -0
  14. package/esm2020/event/event-read.service.mjs +3 -0
  15. package/esm2020/event/event.model.mjs +2 -0
  16. package/esm2020/event/ngageoint-mage.web-core-lib-event.mjs +5 -0
  17. package/esm2020/event/public-api.mjs +3 -0
  18. package/esm2020/feed/feed.model.mjs +2 -0
  19. package/esm2020/feed/feed.service.mjs +105 -0
  20. package/esm2020/feed/ngageoint-mage.web-core-lib-feed.mjs +5 -0
  21. package/esm2020/feed/public-api.mjs +3 -0
  22. package/esm2020/mage-core-lib.module.mjs +19 -0
  23. package/esm2020/ngageoint-mage.web-core-lib.mjs +5 -0
  24. package/esm2020/paging/ngageoint-mage.web-core-lib-paging.mjs +5 -0
  25. package/esm2020/paging/paging.cdk-data-source.adapter.mjs +52 -0
  26. package/esm2020/paging/paging.model.mjs +25 -0
  27. package/esm2020/paging/public-api.mjs +3 -0
  28. package/esm2020/plugin/ngageoint-mage.web-core-lib-plugin.mjs +5 -0
  29. package/esm2020/plugin/plugin.model.mjs +2 -0
  30. package/esm2020/plugin/public-api.mjs +2 -0
  31. package/esm2020/public-api.mjs +5 -0
  32. package/esm2020/static-icon/ngageoint-mage.web-core-lib-static-icon.mjs +5 -0
  33. package/esm2020/static-icon/public-api.mjs +7 -0
  34. package/esm2020/static-icon/static-icon-form-field/static-icon-form-field.component.mjs +145 -0
  35. package/esm2020/static-icon/static-icon-img/static-icon-img.component.mjs +35 -0
  36. package/esm2020/static-icon/static-icon-select/static-icon-select.component.mjs +52 -0
  37. package/esm2020/static-icon/static-icon.model.mjs +10 -0
  38. package/esm2020/static-icon/static-icon.module.mjs +54 -0
  39. package/esm2020/static-icon/static-icon.service.mjs +82 -0
  40. package/esm2020/user/ngageoint-mage.web-core-lib-user.mjs +5 -0
  41. package/esm2020/user/public-api.mjs +5 -0
  42. package/esm2020/user/user-read.service.mjs +40 -0
  43. package/esm2020/user/user-select/user-select.component.mjs +159 -0
  44. package/esm2020/user/user.model.mjs +2 -0
  45. package/esm2020/user/user.module.mjs +64 -0
  46. package/event/event-read.service.d.ts +12 -0
  47. package/event/event-read.service.d.ts.map +1 -0
  48. package/event/event.model.d.ts +7 -0
  49. package/event/event.model.d.ts.map +1 -0
  50. package/event/index.d.ts +6 -0
  51. package/event/ngageoint-mage.web-core-lib-event.d.ts.map +1 -0
  52. package/event/public-api.d.ts +3 -0
  53. package/event/public-api.d.ts.map +1 -0
  54. package/feed/feed.model.d.ts +84 -0
  55. package/feed/feed.model.d.ts.map +1 -0
  56. package/feed/feed.service.d.ts +41 -0
  57. package/feed/feed.service.d.ts.map +1 -0
  58. package/feed/index.d.ts +6 -0
  59. package/feed/ngageoint-mage.web-core-lib-feed.d.ts.map +1 -0
  60. package/feed/public-api.d.ts +3 -0
  61. package/feed/public-api.d.ts.map +1 -0
  62. package/fesm2015/ngageoint-mage.web-core-lib-common.mjs +142 -0
  63. package/fesm2015/ngageoint-mage.web-core-lib-common.mjs.map +1 -0
  64. package/fesm2015/ngageoint-mage.web-core-lib-event.mjs +10 -0
  65. package/fesm2015/ngageoint-mage.web-core-lib-event.mjs.map +1 -0
  66. package/fesm2015/ngageoint-mage.web-core-lib-feed.mjs +114 -0
  67. package/fesm2015/ngageoint-mage.web-core-lib-feed.mjs.map +1 -0
  68. package/fesm2015/ngageoint-mage.web-core-lib-paging.mjs +83 -0
  69. package/fesm2015/ngageoint-mage.web-core-lib-paging.mjs.map +1 -0
  70. package/fesm2015/ngageoint-mage.web-core-lib-plugin.mjs +4 -0
  71. package/fesm2015/ngageoint-mage.web-core-lib-plugin.mjs.map +1 -0
  72. package/fesm2015/ngageoint-mage.web-core-lib-static-icon.mjs +392 -0
  73. package/fesm2015/ngageoint-mage.web-core-lib-static-icon.mjs.map +1 -0
  74. package/fesm2015/ngageoint-mage.web-core-lib-user.mjs +279 -0
  75. package/fesm2015/ngageoint-mage.web-core-lib-user.mjs.map +1 -0
  76. package/fesm2015/ngageoint-mage.web-core-lib.mjs +32 -0
  77. package/fesm2015/ngageoint-mage.web-core-lib.mjs.map +1 -0
  78. package/fesm2020/ngageoint-mage.web-core-lib-common.mjs +133 -0
  79. package/fesm2020/ngageoint-mage.web-core-lib-common.mjs.map +1 -0
  80. package/fesm2020/ngageoint-mage.web-core-lib-event.mjs +10 -0
  81. package/fesm2020/ngageoint-mage.web-core-lib-event.mjs.map +1 -0
  82. package/fesm2020/ngageoint-mage.web-core-lib-feed.mjs +112 -0
  83. package/fesm2020/ngageoint-mage.web-core-lib-feed.mjs.map +1 -0
  84. package/fesm2020/ngageoint-mage.web-core-lib-paging.mjs +83 -0
  85. package/fesm2020/ngageoint-mage.web-core-lib-paging.mjs.map +1 -0
  86. package/fesm2020/ngageoint-mage.web-core-lib-plugin.mjs +4 -0
  87. package/fesm2020/ngageoint-mage.web-core-lib-plugin.mjs.map +1 -0
  88. package/fesm2020/ngageoint-mage.web-core-lib-static-icon.mjs +368 -0
  89. package/fesm2020/ngageoint-mage.web-core-lib-static-icon.mjs.map +1 -0
  90. package/fesm2020/ngageoint-mage.web-core-lib-user.mjs +262 -0
  91. package/fesm2020/ngageoint-mage.web-core-lib-user.mjs.map +1 -0
  92. package/fesm2020/ngageoint-mage.web-core-lib.mjs +30 -0
  93. package/fesm2020/ngageoint-mage.web-core-lib.mjs.map +1 -0
  94. package/index.d.ts +6 -0
  95. package/mage-core-lib.module.d.ts +8 -0
  96. package/mage-core-lib.module.d.ts.map +1 -0
  97. package/ngageoint-mage.web-core-lib.d.ts.map +1 -0
  98. package/package.json +102 -0
  99. package/paging/index.d.ts +6 -0
  100. package/paging/ngageoint-mage.web-core-lib-paging.d.ts.map +1 -0
  101. package/paging/paging.cdk-data-source.adapter.d.ts +21 -0
  102. package/paging/paging.cdk-data-source.adapter.d.ts.map +1 -0
  103. package/paging/paging.model.d.ts +28 -0
  104. package/paging/paging.model.d.ts.map +1 -0
  105. package/paging/public-api.d.ts +3 -0
  106. package/paging/public-api.d.ts.map +1 -0
  107. package/plugin/index.d.ts +6 -0
  108. package/plugin/ngageoint-mage.web-core-lib-plugin.d.ts.map +1 -0
  109. package/plugin/plugin.model.d.ts +14 -0
  110. package/plugin/plugin.model.d.ts.map +1 -0
  111. package/plugin/public-api.d.ts +2 -0
  112. package/plugin/public-api.d.ts.map +1 -0
  113. package/public-api.d.ts +2 -0
  114. package/public-api.d.ts.map +1 -0
  115. package/static-icon/index.d.ts +6 -0
  116. package/static-icon/ngageoint-mage.web-core-lib-static-icon.d.ts.map +1 -0
  117. package/static-icon/public-api.d.ts +7 -0
  118. package/static-icon/public-api.d.ts.map +1 -0
  119. package/static-icon/static-icon-form-field/static-icon-form-field.component.d.ts +32 -0
  120. package/static-icon/static-icon-form-field/static-icon-form-field.component.d.ts.map +1 -0
  121. package/static-icon/static-icon-img/static-icon-img.component.d.ts +13 -0
  122. package/static-icon/static-icon-img/static-icon-img.component.d.ts.map +1 -0
  123. package/static-icon/static-icon-select/static-icon-select.component.d.ts +22 -0
  124. package/static-icon/static-icon-select/static-icon-select.component.d.ts.map +1 -0
  125. package/static-icon/static-icon.model.d.ts +20 -0
  126. package/static-icon/static-icon.model.d.ts.map +1 -0
  127. package/static-icon/static-icon.module.d.ts +15 -0
  128. package/static-icon/static-icon.module.d.ts.map +1 -0
  129. package/static-icon/static-icon.service.d.ts +21 -0
  130. package/static-icon/static-icon.service.d.ts.map +1 -0
  131. package/user/index.d.ts +6 -0
  132. package/user/ngageoint-mage.web-core-lib-user.d.ts.map +1 -0
  133. package/user/public-api.d.ts +5 -0
  134. package/user/public-api.d.ts.map +1 -0
  135. package/user/user-read.service.d.ts +25 -0
  136. package/user/user-read.service.d.ts.map +1 -0
  137. package/user/user-select/user-select.component.d.ts +39 -0
  138. package/user/user-select/user-select.component.d.ts.map +1 -0
  139. package/user/user.model.d.ts +86 -0
  140. package/user/user.model.d.ts.map +1 -0
  141. package/user/user.module.d.ts +18 -0
  142. package/user/user.module.d.ts.map +1 -0
@@ -0,0 +1,159 @@
1
+ import { Component, ViewChild, forwardRef } from '@angular/core';
2
+ import { NG_VALUE_ACCESSOR } from '@angular/forms';
3
+ import { NgSelectComponent } from '@ng-select/ng-select';
4
+ import { pageForItemIndex } from '@ngageoint/mage.web-core-lib/paging';
5
+ import { Subject } from 'rxjs';
6
+ import { debounceTime, distinctUntilChanged } from 'rxjs/operators';
7
+ import * as i0 from "@angular/core";
8
+ import * as i1 from "../user-read.service";
9
+ import * as i2 from "@ng-select/ng-select";
10
+ function UserSelectComponent_ng_template_1_Template(rf, ctx) { if (rf & 1) {
11
+ i0.ɵɵelementStart(0, "small", 3);
12
+ i0.ɵɵtext(1);
13
+ i0.ɵɵelementEnd();
14
+ } if (rf & 2) {
15
+ const ctx_r0 = i0.ɵɵnextContext();
16
+ i0.ɵɵadvance(1);
17
+ i0.ɵɵtextInterpolate1("", ctx_r0.totalCount, " matching users");
18
+ } }
19
+ function UserSelectComponent_ng_template_2_Template(rf, ctx) { if (rf & 1) {
20
+ i0.ɵɵelementStart(0, "div", 4)(1, "p", 5);
21
+ i0.ɵɵtext(2);
22
+ i0.ɵɵelementEnd();
23
+ i0.ɵɵelementStart(3, "p", 6);
24
+ i0.ɵɵtext(4);
25
+ i0.ɵɵelementEnd();
26
+ i0.ɵɵelementStart(5, "p", 6);
27
+ i0.ɵɵtext(6);
28
+ i0.ɵɵelementEnd()();
29
+ } if (rf & 2) {
30
+ const user_r2 = ctx.item;
31
+ i0.ɵɵadvance(2);
32
+ i0.ɵɵtextInterpolate2("", user_r2.displayName, " (", user_r2.username, ")");
33
+ i0.ɵɵadvance(2);
34
+ i0.ɵɵtextInterpolate(user_r2.email || "[no email]");
35
+ i0.ɵɵadvance(2);
36
+ i0.ɵɵtextInterpolate(user_r2.allPhones || "[no phone]");
37
+ } }
38
+ export class UserSelectComponent {
39
+ constructor(userService) {
40
+ this.userService = userService;
41
+ this.baseFindParams = Object.freeze({
42
+ pageSize: 100,
43
+ pageIndex: 0,
44
+ term: null
45
+ });
46
+ this.nextPageScrollThreshold = 15;
47
+ this.searchTermDebounceTime = 500;
48
+ this.trackByUserId = x => x.id;
49
+ this.users = [];
50
+ this.totalCount = 0;
51
+ this.searchTerm$ = new Subject();
52
+ this.currentSearchTerm = null;
53
+ this.currentFetch = null;
54
+ }
55
+ get loading() {
56
+ return !!this.currentFetch && !this.currentFetch.closed;
57
+ }
58
+ ngOnInit() {
59
+ this.searchTerm$.pipe(distinctUntilChanged(), debounceTime(this.searchTermDebounceTime))
60
+ .subscribe(x => {
61
+ this.currentSearchTerm = x;
62
+ this.users = [];
63
+ this.totalCount = 0;
64
+ if (this.currentFetch) {
65
+ this.currentFetch.unsubscribe();
66
+ this.currentFetch = null;
67
+ }
68
+ this.fetchNextPage();
69
+ });
70
+ }
71
+ ngOnChanges(changes) {
72
+ }
73
+ ngAfterViewInit() {
74
+ }
75
+ writeValue(x) {
76
+ this.userSelect.writeValue(x);
77
+ }
78
+ registerOnChange(fn) {
79
+ this.userSelect.registerOnChange(fn);
80
+ }
81
+ registerOnTouched(fn) {
82
+ this.userSelect.registerOnTouched(fn);
83
+ }
84
+ setDisabledState(isDisabled) {
85
+ this.userSelect.setDisabledState(isDisabled);
86
+ }
87
+ onOpen() {
88
+ if (this.users.length === 0) {
89
+ this.fetchNextPage();
90
+ }
91
+ }
92
+ onScroll({ end }) {
93
+ if (end < this.users.length - this.nextPageScrollThreshold || this.users.length === this.totalCount) {
94
+ return;
95
+ }
96
+ this.fetchNextPage();
97
+ }
98
+ onScrollToEnd() {
99
+ }
100
+ fetchNextPage() {
101
+ if (this.currentFetch) {
102
+ if (this.currentFetch.closed) {
103
+ this.currentFetch = null;
104
+ }
105
+ else {
106
+ return;
107
+ }
108
+ }
109
+ const nextPage = pageForItemIndex(this.users.length, this.baseFindParams.pageSize);
110
+ const findParams = {
111
+ ...this.baseFindParams,
112
+ pageIndex: nextPage
113
+ };
114
+ if (this.currentSearchTerm) {
115
+ findParams.term = this.currentSearchTerm;
116
+ }
117
+ this.currentFetch = this.userService.search(findParams).subscribe(page => {
118
+ this.users = this.users.concat(page.items);
119
+ if (typeof page.totalCount === 'number') {
120
+ this.totalCount = page.totalCount;
121
+ }
122
+ });
123
+ }
124
+ }
125
+ UserSelectComponent.ɵfac = function UserSelectComponent_Factory(t) { return new (t || UserSelectComponent)(i0.ɵɵdirectiveInject(i1.UserReadService)); };
126
+ UserSelectComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: UserSelectComponent, selectors: [["mage-user-select"]], viewQuery: function UserSelectComponent_Query(rf, ctx) { if (rf & 1) {
127
+ i0.ɵɵviewQuery(NgSelectComponent, 7);
128
+ } if (rf & 2) {
129
+ let _t;
130
+ i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.userSelect = _t.first);
131
+ } }, features: [i0.ɵɵProvidersFeature([
132
+ {
133
+ provide: NG_VALUE_ACCESSOR,
134
+ multi: true,
135
+ useExisting: forwardRef(() => UserSelectComponent)
136
+ }
137
+ ]), i0.ɵɵNgOnChangesFeature], decls: 3, vars: 5, consts: [["appendTo", "body", "placeholder", "Choose a user", "bindLabel", "displayName", 3, "items", "typeahead", "virtualScroll", "loading", "trackByFn", "open", "scroll", "scrollToEnd"], ["ng-header-tmp", ""], ["class", "user-option", "ng-option-tmp", ""], [1, "form-text", "text-muted"], [1, "user-option"], [1, "user-option__line", "primary"], [1, "user-option__line", "detail"]], template: function UserSelectComponent_Template(rf, ctx) { if (rf & 1) {
138
+ i0.ɵɵelementStart(0, "ng-select", 0);
139
+ i0.ɵɵlistener("open", function UserSelectComponent_Template_ng_select_open_0_listener() { return ctx.onOpen(); })("scroll", function UserSelectComponent_Template_ng_select_scroll_0_listener($event) { return ctx.onScroll($event); })("scrollToEnd", function UserSelectComponent_Template_ng_select_scrollToEnd_0_listener() { return ctx.onScrollToEnd(); });
140
+ i0.ɵɵtemplate(1, UserSelectComponent_ng_template_1_Template, 2, 1, "ng-template", 1);
141
+ i0.ɵɵtemplate(2, UserSelectComponent_ng_template_2_Template, 7, 4, "ng-template", 2);
142
+ i0.ɵɵelementEnd();
143
+ } if (rf & 2) {
144
+ i0.ɵɵproperty("items", ctx.users)("typeahead", ctx.searchTerm$)("virtualScroll", true)("loading", ctx.loading)("trackByFn", ctx.trackByUserId);
145
+ } }, dependencies: [i2.NgSelectComponent, i2.NgOptionTemplateDirective, i2.NgHeaderTemplateDirective], styles: [".user-option[_ngcontent-%COMP%]{margin:.85em 0}.user-option[_ngcontent-%COMP%] > .user-option__line[_ngcontent-%COMP%]{margin:0 0 .6em;padding:0;line-height:1em;overflow:hidden;text-overflow:ellipsis}.user-option[_ngcontent-%COMP%] > .user-option__line.primary[_ngcontent-%COMP%]{font-size:1em}.user-option[_ngcontent-%COMP%] > .user-option__line.detail[_ngcontent-%COMP%]{font-size:.85em;opacity:.75}"] });
146
+ (function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(UserSelectComponent, [{
147
+ type: Component,
148
+ args: [{ selector: 'mage-user-select', providers: [
149
+ {
150
+ provide: NG_VALUE_ACCESSOR,
151
+ multi: true,
152
+ useExisting: forwardRef(() => UserSelectComponent)
153
+ }
154
+ ], template: "<ng-select [items]=\"users\"\n [typeahead]=\"searchTerm$\"\n [virtualScroll]=\"true\"\n [loading]=\"loading\"\n [trackByFn]=\"trackByUserId\"\n appendTo=\"body\"\n placeholder=\"Choose a user\"\n bindLabel=\"displayName\"\n (open)=\"onOpen()\"\n (scroll)=\"onScroll($event)\"\n (scrollToEnd)=\"onScrollToEnd()\"\n >\n <ng-template ng-header-tmp>\n <small class=\"form-text text-muted\">{{totalCount}} matching users</small>\n </ng-template>\n <ng-template class=\"user-option\" ng-option-tmp let-user=\"item\" let-index=\"index\">\n <div class=\"user-option\">\n <p class=\"user-option__line primary\">{{user.displayName}} ({{user.username}})</p>\n <p class=\"user-option__line detail\">{{user.email || '[no email]'}}</p>\n <p class=\"user-option__line detail\">{{user.allPhones || '[no phone]'}}</p>\n </div>\n </ng-template>\n</ng-select>\n", styles: [".user-option{margin:.85em 0}.user-option>.user-option__line{margin:0 0 .6em;padding:0;line-height:1em;overflow:hidden;text-overflow:ellipsis}.user-option>.user-option__line.primary{font-size:1em}.user-option>.user-option__line.detail{font-size:.85em;opacity:.75}\n"] }]
155
+ }], function () { return [{ type: i1.UserReadService }]; }, { userSelect: [{
156
+ type: ViewChild,
157
+ args: [NgSelectComponent, { static: true }]
158
+ }] }); })();
159
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlci1zZWxlY3QuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29yZS1saWIvdXNlci91c2VyLXNlbGVjdC91c2VyLXNlbGVjdC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb3JlLWxpYi91c2VyL3VzZXItc2VsZWN0L3VzZXItc2VsZWN0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBaUIsU0FBUyxFQUFtQyxTQUFTLEVBQUUsVUFBVSxFQUFVLE1BQU0sZUFBZSxDQUFBO0FBQ3hILE9BQU8sRUFBcUMsaUJBQWlCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQTtBQUNyRixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQTtBQUd4RCxPQUFPLEVBQUUsZ0JBQWdCLEVBQW1CLE1BQU0scUNBQXFDLENBQUE7QUFDdkYsT0FBTyxFQUFFLE9BQU8sRUFBcUQsTUFBTSxNQUFNLENBQUE7QUFDakYsT0FBTyxFQUFFLFlBQVksRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGdCQUFnQixDQUFBOzs7OztJQ00vRCxnQ0FBb0M7SUFBQSxZQUE2QjtJQUFBLGlCQUFROzs7SUFBckMsZUFBNkI7SUFBN0IsK0RBQTZCOzs7SUFHakUsOEJBQXlCLFdBQUE7SUFDYyxZQUF3QztJQUFBLGlCQUFJO0lBQ2pGLDRCQUFvQztJQUFBLFlBQThCO0lBQUEsaUJBQUk7SUFDdEUsNEJBQW9DO0lBQUEsWUFBa0M7SUFBQSxpQkFBSSxFQUFBOzs7SUFGckMsZUFBd0M7SUFBeEMsMkVBQXdDO0lBQ3pDLGVBQThCO0lBQTlCLG1EQUE4QjtJQUM5QixlQUFrQztJQUFsQyx1REFBa0M7O0FESzVFLE1BQU0sT0FBTyxtQkFBbUI7SUF1QjlCLFlBQW9CLFdBQTRCO1FBQTVCLGdCQUFXLEdBQVgsV0FBVyxDQUFpQjtRQXJCdkMsbUJBQWMsR0FBK0Is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Q0UsT0FBTyxFQUFFLGlCQUFpQjt3QkFDMUIsS0FBSyxFQUFFLElBQUk7d0JBQ1gsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsb0JBQW9CLENBQUM7cUJBQ25EO2lCQUNGO2tFQXFCRCxVQUFVO2tCQURULFNBQVM7bUJBQUMsaUJBQWlCLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQWZ0ZXJWaWV3SW5pdCwgQ29tcG9uZW50LCBJbnB1dCwgT25DaGFuZ2VzLCBTaW1wbGVDaGFuZ2VzLCBWaWV3Q2hpbGQsIGZvcndhcmRSZWYsIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnXG5pbXBvcnQgeyBDb250cm9sVmFsdWVBY2Nlc3NvciwgRm9ybUNvbnRyb2wsIE5HX1ZBTFVFX0FDQ0VTU09SIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnXG5pbXBvcnQgeyBOZ1NlbGVjdENvbXBvbmVudCB9IGZyb20gJ0BuZy1zZWxlY3Qvbmctc2VsZWN0J1xuaW1wb3J0IHsgVXNlciB9IGZyb20gJy4uL3VzZXIubW9kZWwnXG5pbXBvcnQgeyBVc2VyUmVhZFNlcnZpY2UsIFVzZXJTZWFyY2hQYXJhbXMsIFVzZXJTZWFyY2hSZXN1bHQgfSBmcm9tICcuLi91c2VyLXJlYWQuc2VydmljZSdcbmltcG9ydCB7IHBhZ2VGb3JJdGVtSW5kZXgsIGl0ZW1SYW5nZU9mUGFnZSB9IGZyb20gJ0BuZ2FnZW9pbnQvbWFnZS53ZWItY29yZS1saWIvcGFnaW5nJ1xuaW1wb3J0IHsgU3ViamVjdCwgQmVoYXZpb3JTdWJqZWN0LCBTdWJzY3JpcHRpb25MaWtlLCBVbnN1YnNjcmliYWJsZSB9IGZyb20gJ3J4anMnXG5pbXBvcnQgeyBkZWJvdW5jZVRpbWUsIGRpc3RpbmN0VW50aWxDaGFuZ2VkIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnXG5pbXBvcnQgeyBYIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2tleWNvZGVzJ1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdtYWdlLXVzZXItc2VsZWN0JyxcbiAgdGVtcGxhdGVVcmw6ICcuL3VzZXItc2VsZWN0LmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbXG4gICAgJy4vdXNlci1zZWxlY3QuY29tcG9uZW50LnNjc3MnXG4gIF0sXG4gIHByb3ZpZGVyczogW1xuICAgIHtcbiAgICAgIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxuICAgICAgbXVsdGk6IHRydWUsXG4gICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBVc2VyU2VsZWN0Q29tcG9uZW50KVxuICAgIH1cbiAgXVxufSlcbmV4cG9ydCBjbGFzcyBVc2VyU2VsZWN0Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkNoYW5nZXMsIEFmdGVyVmlld0luaXQsIENvbnRyb2xWYWx1ZUFjY2Vzc29yIHtcblxuICByZWFkb25seSBiYXNlRmluZFBhcmFtczogUmVhZG9ubHk8VXNlclNlYXJjaFBhcmFtcz4gPSBPYmplY3QuZnJlZXplKHtcbiAgICBwYWdlU2l6ZTogMTAwLFxuICAgIHBhZ2VJbmRleDogMCxcbiAgICB0ZXJtOiBudWxsXG4gIH0pXG4gIHJlYWRvbmx5IG5leHRQYWdlU2Nyb2xsVGhyZXNob2xkID0gMTVcbiAgcmVhZG9ubHkgc2VhcmNoVGVybURlYm91bmNlVGltZSA9IDUwMFxuICByZWFkb25seSB0cmFja0J5VXNlcklkOiAoeDogVXNlcikgPT4gVXNlclsnaWQnXSA9IHggPT4geC5pZFxuICBnZXQgbG9hZGluZygpOiBib29sZWFuIHtcbiAgICByZXR1cm4gISF0aGlzLmN1cnJlbnRGZXRjaCAmJiAhdGhpcy5jdXJyZW50RmV0Y2guY2xvc2VkXG4gIH1cblxuICB1c2VyczogVXNlclNlYXJjaFJlc3VsdFtdID0gW11cbiAgdG90YWxDb3VudCA9IDBcbiAgc2VhcmNoVGVybSQgPSBuZXcgU3ViamVjdDxzdHJpbmcgfCBudWxsPigpXG4gIGN1cnJlbnRTZWFyY2hUZXJtOiBzdHJpbmcgfCBudWxsID0gbnVsbFxuICBAVmlld0NoaWxkKE5nU2VsZWN0Q29tcG9uZW50LCB7IHN0YXRpYzogdHJ1ZSB9KVxuICB1c2VyU2VsZWN0OiBOZ1NlbGVjdENvbXBvbmVudFxuXG4gIHByaXZhdGUgY3VycmVudEZldGNoOiBTdWJzY3JpcHRpb25MaWtlIHwgbnVsbCA9IG51bGxcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHVzZXJTZXJ2aWNlOiBVc2VyUmVhZFNlcnZpY2UpIHsgfVxuXG4gIG5nT25Jbml0KCkge1xuICAgIHRoaXMuc2VhcmNoVGVybSQucGlwZShcbiAgICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCksXG4gICAgICBkZWJvdW5jZVRpbWUodGhpcy5zZWFyY2hUZXJtRGVib3VuY2VUaW1lKSxcbiAgICApXG4gICAgLnN1YnNjcmliZSh4ID0+IHtcbiAgICAgIHRoaXMuY3VycmVudFNlYXJjaFRlcm0gPSB4XG4gICAgICB0aGlzLnVzZXJzID0gW11cbiAgICAgIHRoaXMudG90YWxDb3VudCA9IDBcbiAgICAgIGlmICh0aGlzLmN1cnJlbnRGZXRjaCkge1xuICAgICAgICB0aGlzLmN1cnJlbnRGZXRjaC51bnN1YnNjcmliZSgpXG4gICAgICAgIHRoaXMuY3VycmVudEZldGNoID0gbnVsbFxuICAgICAgfVxuICAgICAgdGhpcy5mZXRjaE5leHRQYWdlKClcbiAgICB9KVxuICB9XG5cbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcykge1xuICB9XG5cbiAgbmdBZnRlclZpZXdJbml0KCkge1xuICB9XG5cbiAgd3JpdGVWYWx1ZSh4OiBVc2VyIHwgbnVsbCk6IHZvaWQge1xuICAgIHRoaXMudXNlclNlbGVjdC53cml0ZVZhbHVlKHgpXG4gIH1cblxuICByZWdpc3Rlck9uQ2hhbmdlKGZuOiAoLi4uYXJnczogYW55W10pID0+IGFueSk6IHZvaWQge1xuICAgIHRoaXMudXNlclNlbGVjdC5yZWdpc3Rlck9uQ2hhbmdlKGZuKVxuICB9XG5cbiAgcmVnaXN0ZXJPblRvdWNoZWQoZm46ICguLi5hcmdzOiBhbnlbXSkgPT4gYW55KTogdm9pZCB7XG4gICAgdGhpcy51c2VyU2VsZWN0LnJlZ2lzdGVyT25Ub3VjaGVkKGZuKVxuICB9XG5cbiAgc2V0RGlzYWJsZWRTdGF0ZShpc0Rpc2FibGVkOiBib29sZWFuKTogdm9pZCB7XG4gICAgdGhpcy51c2VyU2VsZWN0LnNldERpc2FibGVkU3RhdGUoaXNEaXNhYmxlZClcbiAgfVxuXG4gIG9uT3BlbigpIHtcbiAgICBpZiAodGhpcy51c2Vycy5sZW5ndGggPT09IDApIHtcbiAgICAgIHRoaXMuZmV0Y2hOZXh0UGFnZSgpXG4gICAgfVxuICB9XG5cbiAgb25TY3JvbGwoeyBlbmQgfTogeyBzdGFydDogbnVtYmVyLCBlbmQ6IG51bWJlciB9KSB7XG4gICAgaWYgKGVuZCA8IHRoaXMudXNlcnMubGVuZ3RoIC0gdGhpcy5uZXh0UGFnZVNjcm9sbFRocmVzaG9sZCB8fCB0aGlzLnVzZXJzLmxlbmd0aCA9PT0gdGhpcy50b3RhbENvdW50KSB7XG4gICAgICByZXR1cm5cbiAgICB9XG4gICAgdGhpcy5mZXRjaE5leHRQYWdlKClcbiAgfVxuXG4gIG9uU2Nyb2xsVG9FbmQoKSB7XG5cbiAgfVxuXG4gIGZldGNoTmV4dFBhZ2UoKSB7XG4gICAgaWYgKHRoaXMuY3VycmVudEZldGNoKSB7XG4gICAgICBpZiAodGhpcy5jdXJyZW50RmV0Y2guY2xvc2VkKSB7XG4gICAgICAgIHRoaXMuY3VycmVudEZldGNoID0gbnVsbFxuICAgICAgfVxuICAgICAgZWxzZSB7XG4gICAgICAgIHJldHVyblxuICAgICAgfVxuICAgIH1cbiAgICBjb25zdCBuZXh0UGFnZSA9IHBhZ2VGb3JJdGVtSW5kZXgodGhpcy51c2Vycy5sZW5ndGgsIHRoaXMuYmFzZUZpbmRQYXJhbXMucGFnZVNpemUpXG4gICAgY29uc3QgZmluZFBhcmFtczogVXNlclNlYXJjaFBhcmFtcyA9IHtcbiAgICAgIC4uLnRoaXMuYmFzZUZpbmRQYXJhbXMsXG4gICAgICBwYWdlSW5kZXg6IG5leHRQYWdlXG4gICAgfVxuICAgIGlmICh0aGlzLmN1cnJlbnRTZWFyY2hUZXJtKSB7XG4gICAgICBmaW5kUGFyYW1zLnRlcm0gPSB0aGlzLmN1cnJlbnRTZWFyY2hUZXJtXG4gICAgfVxuICAgIHRoaXMuY3VycmVudEZldGNoID0gdGhpcy51c2VyU2VydmljZS5zZWFyY2goZmluZFBhcmFtcykuc3Vic2NyaWJlKHBhZ2UgPT4ge1xuICAgICAgdGhpcy51c2VycyA9IHRoaXMudXNlcnMuY29uY2F0KHBhZ2UuaXRlbXMpXG4gICAgICBpZiAodHlwZW9mIHBhZ2UudG90YWxDb3VudCA9PT0gJ251bWJlcicpIHtcbiAgICAgICAgdGhpcy50b3RhbENvdW50ID0gcGFnZS50b3RhbENvdW50XG4gICAgICB9XG4gICAgfSlcbiAgfVxufSIsIjxuZy1zZWxlY3QgW2l0ZW1zXT1cInVzZXJzXCJcbiAgW3R5cGVhaGVhZF09XCJzZWFyY2hUZXJtJFwiXG4gIFt2aXJ0dWFsU2Nyb2xsXT1cInRydWVcIlxuICBbbG9hZGluZ109XCJsb2FkaW5nXCJcbiAgW3RyYWNrQnlGbl09XCJ0cmFja0J5VXNlcklkXCJcbiAgYXBwZW5kVG89XCJib2R5XCJcbiAgcGxhY2Vob2xkZXI9XCJDaG9vc2UgYSB1c2VyXCJcbiAgYmluZExhYmVsPVwiZGlzcGxheU5hbWVcIlxuICAob3Blbik9XCJvbk9wZW4oKVwiXG4gIChzY3JvbGwpPVwib25TY3JvbGwoJGV2ZW50KVwiXG4gIChzY3JvbGxUb0VuZCk9XCJvblNjcm9sbFRvRW5kKClcIlxuICA+XG4gIDxuZy10ZW1wbGF0ZSBuZy1oZWFkZXItdG1wPlxuICAgIDxzbWFsbCBjbGFzcz1cImZvcm0tdGV4dCB0ZXh0LW11dGVkXCI+e3t0b3RhbENvdW50fX0gbWF0Y2hpbmcgdXNlcnM8L3NtYWxsPlxuICA8L25nLXRlbXBsYXRlPlxuICA8bmctdGVtcGxhdGUgY2xhc3M9XCJ1c2VyLW9wdGlvblwiIG5nLW9wdGlvbi10bXAgbGV0LXVzZXI9XCJpdGVtXCIgbGV0LWluZGV4PVwiaW5kZXhcIj5cbiAgICA8ZGl2IGNsYXNzPVwidXNlci1vcHRpb25cIj5cbiAgICAgIDxwIGNsYXNzPVwidXNlci1vcHRpb25fX2xpbmUgcHJpbWFyeVwiPnt7dXNlci5kaXNwbGF5TmFtZX19ICh7e3VzZXIudXNlcm5hbWV9fSk8L3A+XG4gICAgICA8cCBjbGFzcz1cInVzZXItb3B0aW9uX19saW5lIGRldGFpbFwiPnt7dXNlci5lbWFpbCB8fCAnW25vIGVtYWlsXSd9fTwvcD5cbiAgICAgIDxwIGNsYXNzPVwidXNlci1vcHRpb25fX2xpbmUgZGV0YWlsXCI+e3t1c2VyLmFsbFBob25lcyB8fCAnW25vIHBob25lXSd9fTwvcD5cbiAgICA8L2Rpdj5cbiAgPC9uZy10ZW1wbGF0ZT5cbjwvbmctc2VsZWN0PlxuIl19
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlci5tb2RlbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2NvcmUtbGliL3VzZXIvdXNlci5tb2RlbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiXG4vKipcbiAqIFRoaXMgdHlwZSByZXByZXNlbnRzIGEgTUFHRSB1c2VyIGFjY291bnQuICBUaGlzIGlzIGEgYmFzZSB0eXBlIHRoYXQgZGVmaW5lc1xuICogdGhlIHByb3BlcnRpZXMgb2YgYSBwZXJzaXN0ZWQgdXNlciB0aGF0IHRoZSBzZXJ2ZXIgcmV0dXJucyBmcm9tIGEgcmVhZFxuICogb3BlcmF0aW9uLCBsaWtlIGEgdXNlciBxdWVyeS4gIFRoaXMgdHlwZSBkb2VzIG5vdCBuZWNlc3NhcmlseSByZWZsZWN0IHRoZVxuICogcHJvcGVydGllcyB0aGUgY2xpZW50IHdvdWxkIHNlbmQgdG8gdGhlIHNlcnZlciBBUEkgZm9yIG11dGF0aW9uIG9wZXJhdGlvbnMuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgVXNlciB7XG5cbiAgLyoqXG4gICAqIFVuaXF1ZSBJRCBvZiB0aGUgdXNlciBhY2NvdW50XG4gICAqL1xuICBpZDogc3RyaW5nXG4gIC8qKlxuICAgKiBVbmlxdWUgbmFtZSBmb3IgdGhpcyB1c2VyIGFjY291bnRcbiAgICovXG4gIHVzZXJuYW1lOiBzdHJpbmdcbiAgZGlzcGxheU5hbWU6IHN0cmluZ1xuICAvKipcbiAgICogV2hldGhlciBhbiBhZG1pbiBoYXMgYWN0aXZhdGVkIHRoaXMgdXNlciBhY2NvdW50IGFmdGVyIGluaXRpYWwgc2lnbi11cFxuICAgKi9cbiAgYWN0aXZlOiBib29sZWFuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRoaXMgYWNjb3VudCBpcyBlbmFibGVkIG9yIGRpYWJsZWQsIHR5cGljYWxseSBieSB0aGUgbWFudWFsIGFjdGlvblxuICAgKiBvZiBhbiBhZG1pbmlzdHJhdG9yXG4gICAqL1xuICBlbmFibGVkOiBib29sZWFuXG4gIC8qKlxuICAgKiBUaGUgYXV0aGVudGljYXRpb24gbWV0aG9kIGZvciB0aGlzIHVzZXIgYWNjb3VudFxuICAgKi9cbiAgYXV0aGVudGljYXRpb246IGFueVxuICAvKipcbiAgICogSVNPLTg2MDEgZGF0ZSBzdHJpbmdcbiAgICovXG4gIGNyZWF0ZWRBdDogc3RyaW5nXG4gIC8qKlxuICAgKiBJU08tODYwMSBkYXRlIHN0cmluZ1xuICAgKi9cbiAgbGFzdFVwZGF0ZWQ6IHN0cmluZ1xuICAvKipcbiAgICogVGhlIGF1dGhvcml6YXRpb24gcm9sZSBvZiB0aGlzIHVzZXIgYWNjb3VudCB0aGF0IGRlZmluZXMgdGhlIGFjdGlvbnMgdGhpc1xuICAgKiB1c2VyIGFjY291bnQgaGFzIHBlcm1pc3Npb24gdG8gcGVyZm9ybVxuICAgKi9cbiAgcm9sZUlkOiBzdHJpbmdcbiAgZW1haWw/OiBzdHJpbmdcbiAgLyoqXG4gICAqIFVSTCBvZiB0aGUgaW1hZ2UgdGhhdCBpZGVudGlmaWVzIHRoaXMgdXNlciBhY2NvdW50IGluIHRoZSB1c2VyIGZlZWQsIGV0Yy47XG4gICAqIGEgcHJvZmlsZSBwaWN0dXJlXG4gICAqL1xuICBhdmF0YXJVcmw/OiBzdHJpbmdcbiAgLyoqXG4gICAqIE1hcCBtYXJrZXIgaWNvbiBpbmZvXG4gICAqL1xuICBpY29uPzogVXNlckljb25cbiAgLyoqXG4gICAqIFVSTCBvZiB0aGUgbWFwIG1hcmtlciBpY29uIGltYWdlXG4gICAqL1xuICBpY29uVXJsPzogc3RyaW5nXG4gIHBob25lczogVXNlclBob25lW11cbiAgLyoqXG4gICAqIExpc3Qgb2YgZXZlbnRzIGluIHdoaWNoIHRoaXMgdXNlciBhY2NvdW50IGhhcyBwYXJ0aWNpcGF0ZWRcbiAgICovXG4gIHJlY2VudEV2ZW50SWRzOiBudW1iZXJbXVxufVxuXG5leHBvcnQgaW50ZXJmYWNlIFVzZXJQaG9uZSB7XG4gIHR5cGU6IHN0cmluZ1xuICBudW1iZXI6IHN0cmluZ1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFVzZXJJY29uIHtcbiAgLyoqXG4gICAqIEhleCBjb2xvciBzdHJpbmcgYmVnaW5uaW5nIHdpdGggYCNgXG4gICAqL1xuICBjb2xvcjogc3RyaW5nXG4gIC8qKlxuICAgKiBBIHN0YW5kYXJkIG1lZGlhIHR5cGUsIGUuZy4sIGBpbWFnZS9wbmdgXG4gICAqL1xuICBjb250ZW50VHlwZTogc3RyaW5nXG4gIC8qKlxuICAgKiBTaXplIGluIGJ5dGVzIG9mIHRoZSBpY29uIGltYWdlXG4gICAqL1xuICBzaXplOiBudW1iZXJcbiAgdGV4dDogc3RyaW5nXG4gIC8qKlxuICAgKiBUaGUgc291cmNlIHR5cGUgb2YgdGhlIGljb25cbiAgICovXG4gIHR5cGU6ICdjcmVhdGUnIHwgJ3VwbG9hZCcgfCAnbm9uZSdcbn1cbiJdfQ==
@@ -0,0 +1,64 @@
1
+ import { ScrollingModule } from '@angular/cdk/scrolling';
2
+ import { CommonModule } from '@angular/common';
3
+ import { NgModule } from '@angular/core';
4
+ import { FormsModule, ReactiveFormsModule } from '@angular/forms';
5
+ import { MatAutocompleteModule } from '@angular/material/autocomplete';
6
+ import { MatDialogModule } from '@angular/material/dialog';
7
+ import { MatFormFieldModule } from '@angular/material/form-field';
8
+ import { MatInputModule } from '@angular/material/input';
9
+ import { MatListModule } from '@angular/material/list';
10
+ import { MatSelectModule } from '@angular/material/select';
11
+ import { UserSelectComponent } from './user-select/user-select.component';
12
+ import { NgSelectModule } from '@ng-select/ng-select';
13
+ import * as i0 from "@angular/core";
14
+ export class MageUserModule {
15
+ }
16
+ MageUserModule.ɵfac = function MageUserModule_Factory(t) { return new (t || MageUserModule)(); };
17
+ MageUserModule.ɵmod = /*@__PURE__*/ i0.ɵɵdefineNgModule({ type: MageUserModule });
18
+ MageUserModule.ɵinj = /*@__PURE__*/ i0.ɵɵdefineInjector({ imports: [CommonModule,
19
+ FormsModule,
20
+ ReactiveFormsModule,
21
+ ScrollingModule,
22
+ MatAutocompleteModule,
23
+ MatDialogModule,
24
+ MatFormFieldModule,
25
+ MatInputModule,
26
+ MatListModule,
27
+ MatSelectModule,
28
+ NgSelectModule] });
29
+ (function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MageUserModule, [{
30
+ type: NgModule,
31
+ args: [{
32
+ imports: [
33
+ CommonModule,
34
+ FormsModule,
35
+ ReactiveFormsModule,
36
+ ScrollingModule,
37
+ MatAutocompleteModule,
38
+ MatDialogModule,
39
+ MatFormFieldModule,
40
+ MatInputModule,
41
+ MatListModule,
42
+ MatSelectModule,
43
+ NgSelectModule,
44
+ ],
45
+ declarations: [
46
+ UserSelectComponent
47
+ ],
48
+ exports: [
49
+ UserSelectComponent
50
+ ]
51
+ }]
52
+ }], null, null); })();
53
+ (function () { (typeof ngJitMode === "undefined" || ngJitMode) && i0.ɵɵsetNgModuleScope(MageUserModule, { declarations: [UserSelectComponent], imports: [CommonModule,
54
+ FormsModule,
55
+ ReactiveFormsModule,
56
+ ScrollingModule,
57
+ MatAutocompleteModule,
58
+ MatDialogModule,
59
+ MatFormFieldModule,
60
+ MatInputModule,
61
+ MatListModule,
62
+ MatSelectModule,
63
+ NgSelectModule], exports: [UserSelectComponent] }); })();
64
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlci5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9jb3JlLWxpYi91c2VyL3VzZXIubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQTtBQUN4RCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUE7QUFDOUMsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQTtBQUN4QyxPQUFPLEVBQUUsV0FBVyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sZ0JBQWdCLENBQUE7QUFDakUsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sZ0NBQWdDLENBQUE7QUFDdEUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDBCQUEwQixDQUFBO0FBQzFELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDhCQUE4QixDQUFBO0FBQ2pFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQTtBQUN4RCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sd0JBQXdCLENBQUE7QUFDdEQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDBCQUEwQixDQUFBO0FBQzFELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHFDQUFxQyxDQUFBO0FBQ3pFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQTs7QUF1QnJELE1BQU0sT0FBTyxjQUFjOzs0RUFBZCxjQUFjO2dFQUFkLGNBQWM7b0VBbkJ2QixZQUFZO1FBQ1osV0FBVztRQUNYLG1CQUFtQjtRQUNuQixlQUFlO1FBQ2YscUJBQXFCO1FBQ3JCLGVBQWU7UUFDZixrQkFBa0I7UUFDbEIsY0FBYztRQUNkLGFBQWE7UUFDYixlQUFlO1FBQ2YsY0FBYzt1RkFTTCxjQUFjO2NBckIxQixRQUFRO2VBQUM7Z0JBQ1IsT0FBTyxFQUFFO29CQUNQLFlBQVk7b0JBQ1osV0FBVztvQkFDWCxtQkFBbUI7b0JBQ25CLGVBQWU7b0JBQ2YscUJBQXFCO29CQUNyQixlQUFlO29CQUNmLGtCQUFrQjtvQkFDbEIsY0FBYztvQkFDZCxhQUFhO29CQUNiLGVBQWU7b0JBQ2YsY0FBYztpQkFDZjtnQkFDRCxZQUFZLEVBQUU7b0JBQ1osbUJBQW1CO2lCQUNwQjtnQkFDRCxPQUFPLEVBQUU7b0JBQ1AsbUJBQW1CO2lCQUNwQjthQUNGOzt3RkFDWSxjQUFjLG1CQU52QixtQkFBbUIsYUFibkIsWUFBWTtRQUNaLFdBQVc7UUFDWCxtQkFBbUI7UUFDbkIsZUFBZTtRQUNmLHFCQUFxQjtRQUNyQixlQUFlO1FBQ2Ysa0JBQWtCO1FBQ2xCLGNBQWM7UUFDZCxhQUFhO1FBQ2IsZUFBZTtRQUNmLGNBQWMsYUFNZCxtQkFBbUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBTY3JvbGxpbmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jZGsvc2Nyb2xsaW5nJ1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJ1xuaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJ1xuaW1wb3J0IHsgRm9ybXNNb2R1bGUsIFJlYWN0aXZlRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3JtcydcbmltcG9ydCB7IE1hdEF1dG9jb21wbGV0ZU1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2F1dG9jb21wbGV0ZSdcbmltcG9ydCB7IE1hdERpYWxvZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RpYWxvZydcbmltcG9ydCB7IE1hdEZvcm1GaWVsZE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2Zvcm0tZmllbGQnXG5pbXBvcnQgeyBNYXRJbnB1dE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2lucHV0J1xuaW1wb3J0IHsgTWF0TGlzdE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2xpc3QnXG5pbXBvcnQgeyBNYXRTZWxlY3RNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9zZWxlY3QnXG5pbXBvcnQgeyBVc2VyU2VsZWN0Q29tcG9uZW50IH0gZnJvbSAnLi91c2VyLXNlbGVjdC91c2VyLXNlbGVjdC5jb21wb25lbnQnXG5pbXBvcnQgeyBOZ1NlbGVjdE1vZHVsZSB9IGZyb20gJ0BuZy1zZWxlY3Qvbmctc2VsZWN0J1xuXG5ATmdNb2R1bGUoe1xuICBpbXBvcnRzOiBbXG4gICAgQ29tbW9uTW9kdWxlLFxuICAgIEZvcm1zTW9kdWxlLFxuICAgIFJlYWN0aXZlRm9ybXNNb2R1bGUsXG4gICAgU2Nyb2xsaW5nTW9kdWxlLFxuICAgIE1hdEF1dG9jb21wbGV0ZU1vZHVsZSxcbiAgICBNYXREaWFsb2dNb2R1bGUsXG4gICAgTWF0Rm9ybUZpZWxkTW9kdWxlLFxuICAgIE1hdElucHV0TW9kdWxlLFxuICAgIE1hdExpc3RNb2R1bGUsXG4gICAgTWF0U2VsZWN0TW9kdWxlLFxuICAgIE5nU2VsZWN0TW9kdWxlLFxuICBdLFxuICBkZWNsYXJhdGlvbnM6IFtcbiAgICBVc2VyU2VsZWN0Q29tcG9uZW50XG4gIF0sXG4gIGV4cG9ydHM6IFtcbiAgICBVc2VyU2VsZWN0Q29tcG9uZW50XG4gIF1cbn0pXG5leHBvcnQgY2xhc3MgTWFnZVVzZXJNb2R1bGUge1xuXG59Il19
@@ -0,0 +1,12 @@
1
+ import { InjectionToken } from '@angular/core';
2
+ import { PagingParameters } from '@ngageoint/mage.web-core-lib/paging';
3
+ import { Observable } from 'rxjs';
4
+ import { MageEvent } from './event.model';
5
+ export interface EventReadService {
6
+ find(which: EventReadParams): Observable<MageEvent[]>;
7
+ }
8
+ export interface EventReadParams {
9
+ page: PagingParameters;
10
+ }
11
+ export declare const EVENT_READ_SERVICE: InjectionToken<EventReadService>;
12
+ //# sourceMappingURL=event-read.service.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"event-read.service.d.ts","sourceRoot":"","sources":["../../../projects/core-lib/event/event-read.service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAA;AAC9C,OAAO,EAAE,gBAAgB,EAAE,MAAM,qCAAqC,CAAA;AACtE,OAAO,EAAE,UAAU,EAAE,MAAM,MAAM,CAAA;AACjC,OAAO,EAAE,SAAS,EAAE,MAAM,eAAe,CAAA;AAEzC,MAAM,WAAW,gBAAgB;IAC/B,IAAI,CAAC,KAAK,EAAE,eAAe,GAAG,UAAU,CAAC,SAAS,EAAE,CAAC,CAAA;CACtD;AAED,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,gBAAgB,CAAA;CACvB;AAED,eAAO,MAAM,kBAAkB,kCAA2D,CAAA"}
@@ -0,0 +1,7 @@
1
+ export interface MageEvent {
2
+ id: number;
3
+ name: string;
4
+ description: string;
5
+ feedIds: string[];
6
+ }
7
+ //# sourceMappingURL=event.model.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"event.model.d.ts","sourceRoot":"","sources":["../../../projects/core-lib/event/event.model.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,SAAS;IACxB,EAAE,EAAE,MAAM,CAAA;IACV,IAAI,EAAE,MAAM,CAAA;IACZ,WAAW,EAAE,MAAM,CAAA;IACnB,OAAO,EAAE,MAAM,EAAE,CAAA;CAClB"}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Generated bundle index. Do not edit.
3
+ */
4
+ /// <amd-module name="@ngageoint/mage.web-core-lib/event" />
5
+ export * from './public-api';
6
+ //# sourceMappingURL=ngageoint-mage.web-core-lib-event.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ngageoint-mage.web-core-lib-event.d.ts","sourceRoot":"","sources":["../../../projects/core-lib/event/ngageoint-mage.web-core-lib-event.ts"],"names":[],"mappings":"AAAA;;GAEG;;AAEH,cAAc,cAAc,CAAC"}
@@ -0,0 +1,3 @@
1
+ export * from './event.model';
2
+ export * from './event-read.service';
3
+ //# sourceMappingURL=public-api.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"public-api.d.ts","sourceRoot":"","sources":["../../../projects/core-lib/event/public-api.ts"],"names":[],"mappings":"AAAA,cAAc,eAAe,CAAA;AAC7B,cAAc,sBAAsB,CAAA"}
@@ -0,0 +1,84 @@
1
+ import { Feature, FeatureCollection } from 'geojson';
2
+ import { RegisteredStaticIconReference, SourceUrlStaticIconReference, StaticIconReference } from '@ngageoint/mage.web-core-lib/static-icon';
3
+ export interface Feed {
4
+ id: string;
5
+ service: string;
6
+ topic: string;
7
+ title: string;
8
+ summary?: string;
9
+ icon?: RegisteredStaticIconReference;
10
+ mapStyle?: RegisteredMapStyle;
11
+ itemTemporalProperty?: string;
12
+ itemPrimaryProperty?: string;
13
+ itemSecondaryProperty?: string;
14
+ itemsHaveSpatialDimension?: boolean;
15
+ itemsHaveIdentity?: boolean;
16
+ constantParams?: any;
17
+ variableParamsSchema?: any;
18
+ updateFrequencySeconds?: number;
19
+ itemPropertiesSchema?: any;
20
+ }
21
+ export interface MapStyle {
22
+ icon?: SourceUrlStaticIconReference;
23
+ }
24
+ export interface RegisteredMapStyle {
25
+ icon?: RegisteredStaticIconReference;
26
+ }
27
+ export declare type StyledFeature = Feature & {
28
+ style: MapStyle;
29
+ };
30
+ export interface FeedContent {
31
+ items: FeatureCollection;
32
+ }
33
+ export interface ServiceType {
34
+ /**
35
+ * Well-known identifier that the feed plugin creator assigns
36
+ */
37
+ pluginServiceTypeId: string;
38
+ /**
39
+ * The unique identifier MAGE server generates to reference the service type
40
+ */
41
+ id: string;
42
+ title: string;
43
+ summary: string;
44
+ configSchema: any;
45
+ }
46
+ export interface Service {
47
+ id: string;
48
+ title: string;
49
+ serviceType: ServiceType | string;
50
+ summary: string | null;
51
+ config: any;
52
+ }
53
+ export interface FeedTopic {
54
+ id: string;
55
+ title: string;
56
+ summary?: string;
57
+ icon?: SourceUrlStaticIconReference;
58
+ paramsSchema?: any;
59
+ updateFrequencySeconds?: number;
60
+ itemsHaveIdentity?: boolean;
61
+ itemsHaveSpatialDimension?: boolean;
62
+ itemTemporalProperty?: string;
63
+ itemPrimaryProperty?: string;
64
+ itemSecondaryProperty?: string;
65
+ itemPropertiesSchema?: any;
66
+ mapStyle?: MapStyle;
67
+ }
68
+ export declare type FeedExpanded = Omit<Feed, 'service' | 'topic'> & {
69
+ service: Service;
70
+ topic: FeedTopic;
71
+ };
72
+ export interface FeedContent {
73
+ feed: string;
74
+ variableParams?: any;
75
+ items: FeatureCollection;
76
+ }
77
+ export interface FeedPreview {
78
+ feed: Feed;
79
+ content?: FeedContent;
80
+ }
81
+ export declare type FeedPost = Partial<Omit<Feed, 'service' | 'topic' | 'icon'>> & Pick<Feed, 'service' | 'topic'> & {
82
+ icon?: StaticIconReference;
83
+ };
84
+ //# sourceMappingURL=feed.model.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"feed.model.d.ts","sourceRoot":"","sources":["../../../projects/core-lib/feed/feed.model.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAC;AACrD,OAAO,EAAE,6BAA6B,EAAE,4BAA4B,EAAE,mBAAmB,EAAE,MAAM,0CAA0C,CAAA;AAE3I,MAAM,WAAW,IAAI;IACnB,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,6BAA6B,CAAC;IACrC,QAAQ,CAAC,EAAE,kBAAkB,CAAC;IAC9B,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,yBAAyB,CAAC,EAAE,OAAO,CAAC;IACpC,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,cAAc,CAAC,EAAE,GAAG,CAAC;IACrB,oBAAoB,CAAC,EAAE,GAAG,CAAC;IAC3B,sBAAsB,CAAC,EAAE,MAAM,CAAC;IAChC,oBAAoB,CAAC,EAAE,GAAG,CAAC;CAC5B;AAED,MAAM,WAAW,QAAQ;IACvB,IAAI,CAAC,EAAE,4BAA4B,CAAA;CACpC;AAED,MAAM,WAAW,kBAAkB;IACjC,IAAI,CAAC,EAAE,6BAA6B,CAAC;CACtC;AAED,oBAAY,aAAa,GAAG,OAAO,GAAG;IAAE,KAAK,EAAE,QAAQ,CAAA;CAAE,CAAA;AACzD,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,iBAAiB,CAAA;CACzB;AAED,MAAM,WAAW,WAAW;IAC1B;;OAEG;IACH,mBAAmB,EAAE,MAAM,CAAA;IAC3B;;OAEG;IACH,EAAE,EAAE,MAAM,CAAA;IACV,KAAK,EAAE,MAAM,CAAA;IACb,OAAO,EAAE,MAAM,CAAA;IACf,YAAY,EAAE,GAAG,CAAA;CAClB;AAED,MAAM,WAAW,OAAO;IACtB,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,WAAW,GAAG,MAAM,CAAA;IACjC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAA;IACtB,MAAM,EAAE,GAAG,CAAA;CACZ;AAED,MAAM,WAAW,SAAS;IACxB,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,4BAA4B,CAAC;IACpC,YAAY,CAAC,EAAE,GAAG,CAAC;IACnB,sBAAsB,CAAC,EAAE,MAAM,CAAC;IAChC,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,yBAAyB,CAAC,EAAE,OAAO,CAAC;IACpC,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,oBAAoB,CAAC,EAAE,GAAG,CAAC;IAC3B,QAAQ,CAAC,EAAE,QAAQ,CAAA;CACpB;AAED,oBAAY,YAAY,GAAG,IAAI,CAAC,IAAI,EAAE,SAAS,GAAG,OAAO,CAAC,GAAG;IAC3D,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,EAAE,SAAS,CAAA;CACjB,CAAA;AAED,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAA;IACZ,cAAc,CAAC,EAAE,GAAG,CAAA;IACpB,KAAK,EAAE,iBAAiB,CAAA;CACzB;AAED,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,IAAI,CAAA;IACV,OAAO,CAAC,EAAE,WAAW,CAAA;CACtB;AAED,oBAAY,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,SAAS,GAAG,OAAO,GAAG,MAAM,CAAC,CAAC,GAAG,IAAI,CAAC,IAAI,EAAE,SAAS,GAAG,OAAO,CAAC,GAAG;IAC3G,IAAI,CAAC,EAAE,mBAAmB,CAAA;CAC3B,CAAA"}
@@ -0,0 +1,41 @@
1
+ import { HttpClient } from '@angular/common/http';
2
+ import { Feature } from 'geojson';
3
+ import { Observable } from 'rxjs';
4
+ import { Feed, FeedContent, FeedExpanded, FeedPost, FeedPreview, FeedTopic, Service, ServiceType } from './feed.model';
5
+ import * as i0 from "@angular/core";
6
+ export interface FeedPreviewOptions {
7
+ skipContentFetch?: boolean;
8
+ }
9
+ export declare class FeedService {
10
+ private http;
11
+ constructor(http: HttpClient);
12
+ private _feeds;
13
+ readonly feeds: Observable<Feed[]>;
14
+ private _feedItems;
15
+ feedItems(feedId: string): Observable<Array<Feature>>;
16
+ fetchAllFeeds(): Observable<Array<Feed>>;
17
+ fetchFeed(feedId: string): Observable<FeedExpanded>;
18
+ fetchService(serviceId: string): Observable<Service>;
19
+ createService(service: {
20
+ title: string;
21
+ summary?: string;
22
+ serviceType: string;
23
+ config: any;
24
+ }): Observable<Service>;
25
+ fetchServices(): Observable<Array<Service>>;
26
+ fetchServiceFeeds(serviceId: string): Observable<Array<Feed>>;
27
+ fetchServiceType(serviceTypeId: string): Observable<ServiceType>;
28
+ fetchTopics(serviceId: string): Observable<Array<FeedTopic>>;
29
+ previewFeed(serviceId: string, topicId: string, feedSpec: Partial<Omit<FeedPost, 'service' | 'topic'>>, opts?: FeedPreviewOptions): Observable<FeedPreview>;
30
+ fetchTopic(serviceId: string, topicId: string): Observable<FeedTopic>;
31
+ fetchServiceTypes(): Observable<Array<ServiceType>>;
32
+ createFeed(serviceId: string, topicId: string, feedConfiguration: any): Observable<FeedExpanded>;
33
+ updateFeed(feed: Partial<Omit<FeedPost, 'id'>> & Pick<Feed, 'id'>): Observable<FeedExpanded>;
34
+ deleteFeed(feed: Feed | FeedExpanded): Observable<{}>;
35
+ deleteService(service: Service): Observable<{}>;
36
+ fetchFeeds(eventId: number): Observable<Array<Feed>>;
37
+ fetchFeedItems(event: any, feed: Feed): Observable<FeedContent>;
38
+ static ɵfac: i0.ɵɵFactoryDeclaration<FeedService, never>;
39
+ static ɵprov: i0.ɵɵInjectableDeclaration<FeedService>;
40
+ }
41
+ //# sourceMappingURL=feed.service.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"feed.service.d.ts","sourceRoot":"","sources":["../../../projects/core-lib/feed/feed.service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAElD,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAA;AACjC,OAAO,EAAmB,UAAU,EAAW,MAAM,MAAM,CAAA;AAE3D,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,YAAY,EAAE,QAAQ,EAAE,WAAW,EAAE,SAAS,EAAE,OAAO,EAAE,WAAW,EAAiB,MAAM,cAAc,CAAA;;AAGrI,MAAM,WAAW,kBAAkB;IACjC,gBAAgB,CAAC,EAAE,OAAO,CAAA;CAC3B;AAED,qBAGa,WAAW;IAEV,OAAO,CAAC,IAAI;gBAAJ,IAAI,EAAE,UAAU;IAGpC,OAAO,CAAC,MAAM,CAAwC;IACtD,QAAQ,CAAC,KAAK,qBAA8B;IAE5C,OAAO,CAAC,UAAU,CAAsD;IACxE,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,UAAU,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IAIrD,aAAa,IAAI,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAIxC,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,UAAU,CAAC,YAAY,CAAC;IAInD,YAAY,CAAC,SAAS,EAAE,MAAM,GAAG,UAAU,CAAC,OAAO,CAAC;IAIpD,aAAa,CAAC,OAAO,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,GAAG,CAAA;KAAC,GAAG,UAAU,CAAC,OAAO,CAAC;IAIjH,aAAa,IAAI,UAAU,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IAI3C,iBAAiB,CAAC,SAAS,EAAE,MAAM,GAAG,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAI7D,gBAAgB,CAAC,aAAa,EAAE,MAAM,GAAG,UAAU,CAAC,WAAW,CAAC;IAIhE,WAAW,CAAC,SAAS,EAAE,MAAM,GAAG,UAAU,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;IAI5D,WAAW,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,CAAC,IAAI,CAAC,QAAQ,EAAE,SAAS,GAAG,OAAO,CAAC,CAAC,EAAE,IAAI,CAAC,EAAE,kBAAkB,GAAG,UAAU,CAAC,WAAW,CAAC;IAQ3J,UAAU,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,UAAU,CAAC,SAAS,CAAC;IAIrE,iBAAiB,IAAI,UAAU,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;IAInD,UAAU,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,iBAAiB,EAAE,GAAG,GAAG,UAAU,CAAC,YAAY,CAAC;IAIhG,UAAU,CAAC,IAAI,EAAE,OAAO,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,GAAG,UAAU,CAAC,YAAY,CAAC;IAI5F,UAAU,CAAC,IAAI,EAAE,IAAI,GAAG,YAAY,GAAG,UAAU,CAAC,EAAE,CAAC;IAIrD,aAAa,CAAC,OAAO,EAAE,OAAO,GAAG,UAAU,CAAC,EAAE,CAAC;IAK/C,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAuBpD,cAAc,CAAC,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,GAAG,UAAU,CAAC,WAAW,CAAC;yCArGpD,WAAW;6CAAX,WAAW;CAmHvB"}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Generated bundle index. Do not edit.
3
+ */
4
+ /// <amd-module name="@ngageoint/mage.web-core-lib/feed" />
5
+ export * from './public-api';
6
+ //# sourceMappingURL=ngageoint-mage.web-core-lib-feed.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ngageoint-mage.web-core-lib-feed.d.ts","sourceRoot":"","sources":["../../../projects/core-lib/feed/ngageoint-mage.web-core-lib-feed.ts"],"names":[],"mappings":"AAAA;;GAEG;;AAEH,cAAc,cAAc,CAAC"}
@@ -0,0 +1,3 @@
1
+ export * from './feed.model';
2
+ export * from './feed.service';
3
+ //# sourceMappingURL=public-api.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"public-api.d.ts","sourceRoot":"","sources":["../../../projects/core-lib/feed/public-api.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAA;AAC5B,cAAc,gBAAgB,CAAA"}
@@ -0,0 +1,142 @@
1
+ import * as i0 from '@angular/core';
2
+ import { InjectionToken, Component, Inject, Input, NgModule } from '@angular/core';
3
+ import * as i1 from '@angular/common/http';
4
+ import * as i2 from '@angular/platform-browser';
5
+ import { BrowserModule } from '@angular/platform-browser';
6
+
7
+ const selector = 'mage-xhr-img';
8
+ const OBJECT_URL_SERVICE = new InjectionToken(`${selector}.objectUrlService`);
9
+ /**
10
+ * This component allows fetching images by `XMLHttpRequest` rather than the
11
+ * browser's native mechanism. These image requests are subject to HTTP
12
+ * interceptors that can add authorization headers to the request instead of
13
+ * using cache-defeating URL query parameters to set an auth token. Applying
14
+ * headers to the browser's native `img` requests is impossible, so a query
15
+ * parameter is necessary for authorization, but adding the parameter to the
16
+ * URL effectively bypasses the browser's caching mechanism when the auth token
17
+ * changes for images that
18
+ * should otherwise be subject to caching.
19
+ *
20
+ * The catch to fetching images by XHR is the response must be fetched as a
21
+ * `Blob`. The user then gets a browser-specific URL for the blob by
22
+ * `URL.createObjectURL(blob)`, which can then be assigned to the `src`
23
+ * attribute of an `img` tag. These blob URLs must then be "revoked" by
24
+ * `URL.revokeObjectURL(url)` in order to reclaim object URL's associated
25
+ * resources. See [Mozilla's docs](https://developer.mozilla.org/en-US/docs/Web/API/File/Using_files_from_web_applications#example_using_object_urls_to_display_images)
26
+ * on the subject.
27
+ *
28
+ * To use the component, simply add the tag to a template and bind the `src`
29
+ * attribute to the source URL of the desired image.
30
+ * ```
31
+ * <mage-xhr-img [src]="someComponent.imageUrlRequiresAuth"></mage-xhr-img>
32
+ * ```
33
+ * The component encapsulates the logic of creating and releasing the object
34
+ * URLs for the image data, preventing memory leaks.
35
+ */
36
+ class XhrImgComponent {
37
+ constructor(objectUrlService, http, sanitizer) {
38
+ this.objectUrlService = objectUrlService;
39
+ this.http = http;
40
+ this.sanitizer = sanitizer;
41
+ this.sourceUrl = null;
42
+ this.safeBlobUrl = null;
43
+ }
44
+ ngOnChanges(changes) {
45
+ if (!changes.sourceUrl) {
46
+ return;
47
+ }
48
+ if (changes.sourceUrl.isFirstChange() && !this.sourceUrl) {
49
+ return;
50
+ }
51
+ this.disposeCurrent();
52
+ if (!this.sourceUrl) {
53
+ return;
54
+ }
55
+ this.subscription = this.http.get(this.sourceUrl, { responseType: 'blob' })
56
+ .subscribe(x => {
57
+ this.objectUrlService.revokeObjectURL(this.blobUrl);
58
+ this.blobUrl = this.objectUrlService.createObjectURL(x);
59
+ this.safeBlobUrl = this.sanitizer.bypassSecurityTrustUrl(this.blobUrl);
60
+ });
61
+ }
62
+ ngOnDestroy() {
63
+ this.disposeCurrent();
64
+ }
65
+ onImgLoad() {
66
+ this.disposeCurrent();
67
+ }
68
+ disposeCurrent() {
69
+ if (this.blobUrl) {
70
+ this.objectUrlService.revokeObjectURL(this.blobUrl);
71
+ }
72
+ if (this.subscription) {
73
+ this.subscription.unsubscribe();
74
+ }
75
+ this.blobUrl = null;
76
+ }
77
+ }
78
+ XhrImgComponent.ɵfac = function XhrImgComponent_Factory(t) { return new (t || XhrImgComponent)(i0.ɵɵdirectiveInject(OBJECT_URL_SERVICE), i0.ɵɵdirectiveInject(i1.HttpClient), i0.ɵɵdirectiveInject(i2.DomSanitizer)); };
79
+ XhrImgComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: XhrImgComponent, selectors: [["mage-xhr-img"]], inputs: { sourceUrl: ["src", "sourceUrl"] }, features: [i0.ɵɵProvidersFeature([
80
+ {
81
+ provide: OBJECT_URL_SERVICE,
82
+ useValue: URL
83
+ }
84
+ ]), i0.ɵɵNgOnChangesFeature], decls: 1, vars: 1, consts: [[3, "load"]], template: function XhrImgComponent_Template(rf, ctx) {
85
+ if (rf & 1) {
86
+ i0.ɵɵelementStart(0, "img", 0);
87
+ i0.ɵɵlistener("load", function XhrImgComponent_Template_img_load_0_listener() { return ctx.onImgLoad(); });
88
+ i0.ɵɵelementEnd();
89
+ }
90
+ if (rf & 2) {
91
+ i0.ɵɵattribute("src", ctx.safeBlobUrl, i0.ɵɵsanitizeUrl);
92
+ }
93
+ }, styles: ["img[_ngcontent-%COMP%]{height:100%;width:100%}"] });
94
+ (function () {
95
+ (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(XhrImgComponent, [{
96
+ type: Component,
97
+ args: [{ selector: `${selector}`, template: `<img [attr.src]="safeBlobUrl" (load)="onImgLoad()"/>`, providers: [
98
+ {
99
+ provide: OBJECT_URL_SERVICE,
100
+ useValue: URL
101
+ }
102
+ ], styles: ["img{height:100%;width:100%}\n"] }]
103
+ }], function () {
104
+ return [{ type: undefined, decorators: [{
105
+ type: Inject,
106
+ args: [OBJECT_URL_SERVICE]
107
+ }] }, { type: i1.HttpClient }, { type: i2.DomSanitizer }];
108
+ }, { sourceUrl: [{
109
+ type: Input,
110
+ args: ['src']
111
+ }] });
112
+ })();
113
+
114
+ class MageCommonModule {
115
+ }
116
+ MageCommonModule.ɵfac = function MageCommonModule_Factory(t) { return new (t || MageCommonModule)(); };
117
+ MageCommonModule.ɵmod = /*@__PURE__*/ i0.ɵɵdefineNgModule({ type: MageCommonModule });
118
+ MageCommonModule.ɵinj = /*@__PURE__*/ i0.ɵɵdefineInjector({ imports: [BrowserModule] });
119
+ (function () {
120
+ (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MageCommonModule, [{
121
+ type: NgModule,
122
+ args: [{
123
+ imports: [
124
+ BrowserModule
125
+ ],
126
+ declarations: [
127
+ XhrImgComponent
128
+ ],
129
+ exports: [
130
+ XhrImgComponent
131
+ ]
132
+ }]
133
+ }], null, null);
134
+ })();
135
+ (function () { (typeof ngJitMode === "undefined" || ngJitMode) && i0.ɵɵsetNgModuleScope(MageCommonModule, { declarations: [XhrImgComponent], imports: [BrowserModule], exports: [XhrImgComponent] }); })();
136
+
137
+ /**
138
+ * Generated bundle index. Do not edit.
139
+ */
140
+
141
+ export { MageCommonModule, OBJECT_URL_SERVICE, XhrImgComponent };
142
+ //# sourceMappingURL=ngageoint-mage.web-core-lib-common.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ngageoint-mage.web-core-lib-common.mjs","sources":["../../../projects/core-lib/common/xhr-img.component.ts","../../../projects/core-lib/common/mage-common.module.ts","../../../projects/core-lib/common/ngageoint-mage.web-core-lib-common.ts"],"sourcesContent":["import { Component, ElementRef, Inject, InjectionToken, Input, OnChanges, OnDestroy, SimpleChanges } from '@angular/core'\nimport { HttpClient } from '@angular/common/http'\nimport { DomSanitizer, SafeUrl } from '@angular/platform-browser'\nimport { Subscription } from 'rxjs'\n\nconst selector = 'mage-xhr-img'\n\n/**\n * This is a simple interface that includes the [methods](https://www.w3.org/TR/FileAPI/#creating-revoking)\n * from the [URL API](https://developer.mozilla.org/en-US/docs/Web/API/URL) for\n * managing blob URLs. This allows a service to be injected into\n * `XhrImgComponent` and overridden for testing.\n */\nexport interface ObjectUrlService {\n createObjectURL: (typeof URL)['createObjectURL']\n revokeObjectURL: (typeof URL)['revokeObjectURL']\n}\nexport const OBJECT_URL_SERVICE = new InjectionToken<ObjectUrlService>(`${selector}.objectUrlService`)\n\n/**\n * This component allows fetching images by `XMLHttpRequest` rather than the\n * browser's native mechanism. These image requests are subject to HTTP\n * interceptors that can add authorization headers to the request instead of\n * using cache-defeating URL query parameters to set an auth token. Applying\n * headers to the browser's native `img` requests is impossible, so a query\n * parameter is necessary for authorization, but adding the parameter to the\n * URL effectively bypasses the browser's caching mechanism when the auth token\n * changes for images that\n * should otherwise be subject to caching.\n *\n * The catch to fetching images by XHR is the response must be fetched as a\n * `Blob`. The user then gets a browser-specific URL for the blob by\n * `URL.createObjectURL(blob)`, which can then be assigned to the `src`\n * attribute of an `img` tag. These blob URLs must then be \"revoked\" by\n * `URL.revokeObjectURL(url)` in order to reclaim object URL's associated\n * resources. See [Mozilla's docs](https://developer.mozilla.org/en-US/docs/Web/API/File/Using_files_from_web_applications#example_using_object_urls_to_display_images)\n * on the subject.\n *\n * To use the component, simply add the tag to a template and bind the `src`\n * attribute to the source URL of the desired image.\n * ```\n * <mage-xhr-img [src]=\"someComponent.imageUrlRequiresAuth\"></mage-xhr-img>\n * ```\n * The component encapsulates the logic of creating and releasing the object\n * URLs for the image data, preventing memory leaks.\n */\n@Component({\n selector: `${selector}`,\n template: `<img [attr.src]=\"safeBlobUrl\" (load)=\"onImgLoad()\"/>`,\n styles: [ `img { height: 100%; width: 100% }` ],\n providers: [\n {\n provide: OBJECT_URL_SERVICE,\n useValue: URL\n }\n ]\n})\nexport class XhrImgComponent implements OnChanges, OnDestroy {\n\n @Input('src')\n sourceUrl: string | null = null\n safeBlobUrl: SafeUrl | null = null\n\n private blobUrl: string\n private subscription: Subscription\n\n constructor(@Inject(OBJECT_URL_SERVICE) private objectUrlService: ObjectUrlService, private http: HttpClient, private sanitizer: DomSanitizer) {}\n\n ngOnChanges(changes: SimpleChanges) {\n if (!changes.sourceUrl) {\n return\n }\n if (changes.sourceUrl.isFirstChange() && !this.sourceUrl) {\n return\n }\n this.disposeCurrent()\n if (!this.sourceUrl) {\n return\n }\n this.subscription = this.http.get(this.sourceUrl, { responseType: 'blob' })\n .subscribe(x => {\n this.objectUrlService.revokeObjectURL(this.blobUrl)\n this.blobUrl = this.objectUrlService.createObjectURL(x)\n this.safeBlobUrl = this.sanitizer.bypassSecurityTrustUrl(this.blobUrl)\n })\n }\n\n ngOnDestroy() {\n this.disposeCurrent()\n }\n\n onImgLoad() {\n this.disposeCurrent()\n }\n\n private disposeCurrent() {\n if (this.blobUrl) {\n this.objectUrlService.revokeObjectURL(this.blobUrl)\n }\n if (this.subscription) {\n this.subscription.unsubscribe()\n }\n this.blobUrl = null\n }\n}","import { NgModule } from '@angular/core'\nimport { BrowserModule } from '@angular/platform-browser'\nimport { XhrImgComponent } from './xhr-img.component'\n\n@NgModule({\n imports: [\n BrowserModule\n ],\n declarations: [\n XhrImgComponent\n ],\n exports: [\n XhrImgComponent\n ]\n})\nexport class MageCommonModule {}","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}