@ngageoint/mage.web-core-lib 6.6.1 → 6.6.3

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 (98) hide show
  1. package/angular-cli/builders/fesm-amd.js +64 -36
  2. package/angular-cli/builders/fesm-amd.js.map +1 -1
  3. package/angular-cli/schematics/plugin-library/index.js.map +1 -1
  4. package/common/xhr-img.component.d.ts +1 -1
  5. package/{esm2020 → esm2022}/common/mage-common.module.mjs +5 -5
  6. package/esm2022/common/xhr-img.component.mjs +105 -0
  7. package/esm2022/feed/feed.service.mjs +105 -0
  8. package/{esm2020 → esm2022}/mage-core-lib.module.mjs +5 -5
  9. package/esm2022/paging/paging.cdk-data-source.adapter.mjs +52 -0
  10. package/esm2022/paging/paging.model.mjs +25 -0
  11. package/esm2022/static-icon/static-icon-form-field/static-icon-form-field.component.mjs +146 -0
  12. package/esm2022/static-icon/static-icon-img/static-icon-img.component.mjs +36 -0
  13. package/{esm2020 → esm2022}/static-icon/static-icon-select/static-icon-select.component.mjs +16 -15
  14. package/esm2022/static-icon/static-icon.model.mjs +10 -0
  15. package/esm2022/static-icon/static-icon.module.mjs +54 -0
  16. package/esm2022/static-icon/static-icon.service.mjs +82 -0
  17. package/esm2022/user/user-read.service.mjs +34 -0
  18. package/esm2022/user/user-select/user-select.component.mjs +159 -0
  19. package/esm2022/user/user.module.mjs +64 -0
  20. package/feed/feed.model.d.ts +3 -3
  21. package/feed/feed.model.d.ts.map +1 -1
  22. package/{fesm2020 → fesm2022}/ngageoint-mage.web-core-lib-common.mjs +21 -20
  23. package/{fesm2020 → fesm2022}/ngageoint-mage.web-core-lib-common.mjs.map +1 -1
  24. package/{fesm2020 → fesm2022}/ngageoint-mage.web-core-lib-feed.mjs +4 -4
  25. package/{fesm2015 → fesm2022}/ngageoint-mage.web-core-lib-feed.mjs.map +1 -1
  26. package/{fesm2020 → fesm2022}/ngageoint-mage.web-core-lib-paging.mjs.map +1 -1
  27. package/{fesm2020 → fesm2022}/ngageoint-mage.web-core-lib-static-icon.mjs +61 -58
  28. package/fesm2022/ngageoint-mage.web-core-lib-static-icon.mjs.map +1 -0
  29. package/{fesm2020 → fesm2022}/ngageoint-mage.web-core-lib-user.mjs +45 -45
  30. package/fesm2022/ngageoint-mage.web-core-lib-user.mjs.map +1 -0
  31. package/{fesm2020 → fesm2022}/ngageoint-mage.web-core-lib.mjs +4 -4
  32. package/{fesm2015 → fesm2022}/ngageoint-mage.web-core-lib.mjs.map +1 -1
  33. package/package.json +26 -46
  34. package/static-icon/static-icon-form-field/static-icon-form-field.component.d.ts +1 -1
  35. package/static-icon/static-icon-img/static-icon-img.component.d.ts +1 -1
  36. package/static-icon/static-icon-select/static-icon-select.component.d.ts +1 -1
  37. package/static-icon/static-icon.model.d.ts +1 -1
  38. package/static-icon/static-icon.model.d.ts.map +1 -1
  39. package/user/user-read.service.d.ts +1 -1
  40. package/user/user-read.service.d.ts.map +1 -1
  41. package/user/user-select/user-select.component.d.ts +1 -1
  42. package/angular-cli/README.md +0 -30
  43. package/esm2020/common/xhr-img.component.mjs +0 -104
  44. package/esm2020/feed/feed.service.mjs +0 -105
  45. package/esm2020/paging/paging.cdk-data-source.adapter.mjs +0 -52
  46. package/esm2020/paging/paging.model.mjs +0 -25
  47. package/esm2020/static-icon/static-icon-form-field/static-icon-form-field.component.mjs +0 -145
  48. package/esm2020/static-icon/static-icon-img/static-icon-img.component.mjs +0 -35
  49. package/esm2020/static-icon/static-icon.model.mjs +0 -10
  50. package/esm2020/static-icon/static-icon.module.mjs +0 -54
  51. package/esm2020/static-icon/static-icon.service.mjs +0 -82
  52. package/esm2020/user/user-read.service.mjs +0 -34
  53. package/esm2020/user/user-select/user-select.component.mjs +0 -159
  54. package/esm2020/user/user.module.mjs +0 -64
  55. package/fesm2015/ngageoint-mage.web-core-lib-common.mjs +0 -142
  56. package/fesm2015/ngageoint-mage.web-core-lib-common.mjs.map +0 -1
  57. package/fesm2015/ngageoint-mage.web-core-lib-feed.mjs +0 -114
  58. package/fesm2015/ngageoint-mage.web-core-lib-paging.mjs.map +0 -1
  59. package/fesm2015/ngageoint-mage.web-core-lib-static-icon.mjs +0 -392
  60. package/fesm2015/ngageoint-mage.web-core-lib-static-icon.mjs.map +0 -1
  61. package/fesm2015/ngageoint-mage.web-core-lib-user.mjs +0 -273
  62. package/fesm2015/ngageoint-mage.web-core-lib-user.mjs.map +0 -1
  63. package/fesm2015/ngageoint-mage.web-core-lib.mjs +0 -32
  64. package/fesm2020/ngageoint-mage.web-core-lib-event.mjs +0 -10
  65. package/fesm2020/ngageoint-mage.web-core-lib-event.mjs.map +0 -1
  66. package/fesm2020/ngageoint-mage.web-core-lib-feed.mjs.map +0 -1
  67. package/fesm2020/ngageoint-mage.web-core-lib-paging.mjs +0 -83
  68. package/fesm2020/ngageoint-mage.web-core-lib-plugin.mjs +0 -4
  69. package/fesm2020/ngageoint-mage.web-core-lib-plugin.mjs.map +0 -1
  70. package/fesm2020/ngageoint-mage.web-core-lib-static-icon.mjs.map +0 -1
  71. package/fesm2020/ngageoint-mage.web-core-lib-user.mjs.map +0 -1
  72. package/fesm2020/ngageoint-mage.web-core-lib.mjs.map +0 -1
  73. /package/{esm2020 → esm2022}/common/ngageoint-mage.web-core-lib-common.mjs +0 -0
  74. /package/{esm2020 → esm2022}/common/public-api.mjs +0 -0
  75. /package/{esm2020 → esm2022}/event/event-read.service.mjs +0 -0
  76. /package/{esm2020 → esm2022}/event/event.model.mjs +0 -0
  77. /package/{esm2020 → esm2022}/event/ngageoint-mage.web-core-lib-event.mjs +0 -0
  78. /package/{esm2020 → esm2022}/event/public-api.mjs +0 -0
  79. /package/{esm2020 → esm2022}/feed/feed.model.mjs +0 -0
  80. /package/{esm2020 → esm2022}/feed/ngageoint-mage.web-core-lib-feed.mjs +0 -0
  81. /package/{esm2020 → esm2022}/feed/public-api.mjs +0 -0
  82. /package/{esm2020 → esm2022}/ngageoint-mage.web-core-lib.mjs +0 -0
  83. /package/{esm2020 → esm2022}/paging/ngageoint-mage.web-core-lib-paging.mjs +0 -0
  84. /package/{esm2020 → esm2022}/paging/public-api.mjs +0 -0
  85. /package/{esm2020 → esm2022}/plugin/ngageoint-mage.web-core-lib-plugin.mjs +0 -0
  86. /package/{esm2020 → esm2022}/plugin/plugin.model.mjs +0 -0
  87. /package/{esm2020 → esm2022}/plugin/public-api.mjs +0 -0
  88. /package/{esm2020 → esm2022}/public-api.mjs +0 -0
  89. /package/{esm2020 → esm2022}/static-icon/ngageoint-mage.web-core-lib-static-icon.mjs +0 -0
  90. /package/{esm2020 → esm2022}/static-icon/public-api.mjs +0 -0
  91. /package/{esm2020 → esm2022}/user/ngageoint-mage.web-core-lib-user.mjs +0 -0
  92. /package/{esm2020 → esm2022}/user/public-api.mjs +0 -0
  93. /package/{esm2020 → esm2022}/user/user.model.mjs +0 -0
  94. /package/{fesm2015 → fesm2022}/ngageoint-mage.web-core-lib-event.mjs +0 -0
  95. /package/{fesm2015 → fesm2022}/ngageoint-mage.web-core-lib-event.mjs.map +0 -0
  96. /package/{fesm2015 → fesm2022}/ngageoint-mage.web-core-lib-paging.mjs +0 -0
  97. /package/{fesm2015 → fesm2022}/ngageoint-mage.web-core-lib-plugin.mjs +0 -0
  98. /package/{fesm2015 → fesm2022}/ngageoint-mage.web-core-lib-plugin.mjs.map +0 -0
@@ -1,273 +0,0 @@
1
- import * as i0 from '@angular/core';
2
- import { Injectable, InjectionToken, forwardRef, Component, ViewChild, NgModule } from '@angular/core';
3
- import * as i1 from '@angular/common/http';
4
- import { ScrollingModule } from '@angular/cdk/scrolling';
5
- import { CommonModule } from '@angular/common';
6
- import { NG_VALUE_ACCESSOR, FormsModule, ReactiveFormsModule } from '@angular/forms';
7
- import { MatAutocompleteModule } from '@angular/material/autocomplete';
8
- import { MatDialogModule } from '@angular/material/dialog';
9
- import { MatFormFieldModule } from '@angular/material/form-field';
10
- import { MatInputModule } from '@angular/material/input';
11
- import { MatListModule } from '@angular/material/list';
12
- import { MatSelectModule } from '@angular/material/select';
13
- import * as i2 from '@ng-select/ng-select';
14
- import { NgSelectComponent, NgSelectModule } from '@ng-select/ng-select';
15
- import { pageForItemIndex } from '@ngageoint/mage.web-core-lib/paging';
16
- import { Subject } from 'rxjs';
17
- import { distinctUntilChanged, debounceTime } from 'rxjs/operators';
18
-
19
- const USER_READ_BASE_URL = '/api/next-users';
20
- class UserReadService {
21
- constructor(webClient) {
22
- this.webClient = webClient;
23
- }
24
- search(which) {
25
- const queryParams = {
26
- page_size: String(which.pageSize),
27
- page: String(which.pageIndex),
28
- };
29
- if (typeof which.term === 'string') {
30
- queryParams.term = which.term;
31
- }
32
- if (typeof which.includeTotalCount === 'boolean') {
33
- queryParams.total = which.includeTotalCount ? 'true' : 'false';
34
- }
35
- return this.webClient.get(`${USER_READ_BASE_URL}/search`, {
36
- params: queryParams
37
- });
38
- }
39
- }
40
- UserReadService.ɵfac = function UserReadService_Factory(t) { return new (t || UserReadService)(i0.ɵɵinject(i1.HttpClient)); };
41
- UserReadService.ɵprov = /*@__PURE__*/ i0.ɵɵdefineInjectable({ token: UserReadService, factory: UserReadService.ɵfac, providedIn: 'root' });
42
- (function () {
43
- (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(UserReadService, [{
44
- type: Injectable,
45
- args: [{
46
- providedIn: 'root'
47
- }]
48
- }], function () { return [{ type: i1.HttpClient }]; }, null);
49
- })();
50
- const USER_READ_SERVICE = new InjectionToken('UserReadService');
51
-
52
- function UserSelectComponent_ng_template_1_Template(rf, ctx) {
53
- if (rf & 1) {
54
- i0.ɵɵelementStart(0, "small", 3);
55
- i0.ɵɵtext(1);
56
- i0.ɵɵelementEnd();
57
- }
58
- if (rf & 2) {
59
- const ctx_r0 = i0.ɵɵnextContext();
60
- i0.ɵɵadvance(1);
61
- i0.ɵɵtextInterpolate1("", ctx_r0.totalCount, " matching users");
62
- }
63
- }
64
- function UserSelectComponent_ng_template_2_Template(rf, ctx) {
65
- if (rf & 1) {
66
- i0.ɵɵelementStart(0, "div", 4)(1, "p", 5);
67
- i0.ɵɵtext(2);
68
- i0.ɵɵelementEnd();
69
- i0.ɵɵelementStart(3, "p", 6);
70
- i0.ɵɵtext(4);
71
- i0.ɵɵelementEnd();
72
- i0.ɵɵelementStart(5, "p", 6);
73
- i0.ɵɵtext(6);
74
- i0.ɵɵelementEnd()();
75
- }
76
- if (rf & 2) {
77
- const user_r2 = ctx.item;
78
- i0.ɵɵadvance(2);
79
- i0.ɵɵtextInterpolate2("", user_r2.displayName, " (", user_r2.username, ")");
80
- i0.ɵɵadvance(2);
81
- i0.ɵɵtextInterpolate(user_r2.email || "[no email]");
82
- i0.ɵɵadvance(2);
83
- i0.ɵɵtextInterpolate(user_r2.allPhones || "[no phone]");
84
- }
85
- }
86
- class UserSelectComponent {
87
- constructor(userService) {
88
- this.userService = userService;
89
- this.baseFindParams = Object.freeze({
90
- pageSize: 100,
91
- pageIndex: 0,
92
- term: null
93
- });
94
- this.nextPageScrollThreshold = 15;
95
- this.searchTermDebounceTime = 500;
96
- this.trackByUserId = x => x.id;
97
- this.users = [];
98
- this.totalCount = 0;
99
- this.searchTerm$ = new Subject();
100
- this.currentSearchTerm = null;
101
- this.currentFetch = null;
102
- }
103
- get loading() {
104
- return !!this.currentFetch && !this.currentFetch.closed;
105
- }
106
- ngOnInit() {
107
- this.searchTerm$.pipe(distinctUntilChanged(), debounceTime(this.searchTermDebounceTime))
108
- .subscribe(x => {
109
- this.currentSearchTerm = x;
110
- this.users = [];
111
- this.totalCount = 0;
112
- if (this.currentFetch) {
113
- this.currentFetch.unsubscribe();
114
- this.currentFetch = null;
115
- }
116
- this.fetchNextPage();
117
- });
118
- }
119
- ngOnChanges(changes) {
120
- }
121
- ngAfterViewInit() {
122
- }
123
- writeValue(x) {
124
- this.userSelect.writeValue(x);
125
- }
126
- registerOnChange(fn) {
127
- this.userSelect.registerOnChange(fn);
128
- }
129
- registerOnTouched(fn) {
130
- this.userSelect.registerOnTouched(fn);
131
- }
132
- setDisabledState(isDisabled) {
133
- this.userSelect.setDisabledState(isDisabled);
134
- }
135
- onOpen() {
136
- if (this.users.length === 0) {
137
- this.fetchNextPage();
138
- }
139
- }
140
- onScroll({ end }) {
141
- if (end < this.users.length - this.nextPageScrollThreshold || this.users.length === this.totalCount) {
142
- return;
143
- }
144
- this.fetchNextPage();
145
- }
146
- onScrollToEnd() {
147
- }
148
- fetchNextPage() {
149
- if (this.currentFetch) {
150
- if (this.currentFetch.closed) {
151
- this.currentFetch = null;
152
- }
153
- else {
154
- return;
155
- }
156
- }
157
- const nextPage = pageForItemIndex(this.users.length, this.baseFindParams.pageSize);
158
- const findParams = Object.assign(Object.assign({}, this.baseFindParams), { pageIndex: nextPage });
159
- if (this.currentSearchTerm) {
160
- findParams.term = this.currentSearchTerm;
161
- }
162
- this.currentFetch = this.userService.search(findParams).subscribe(page => {
163
- this.users = this.users.concat(page.items);
164
- if (typeof page.totalCount === 'number') {
165
- this.totalCount = page.totalCount;
166
- }
167
- });
168
- }
169
- }
170
- UserSelectComponent.ɵfac = function UserSelectComponent_Factory(t) { return new (t || UserSelectComponent)(i0.ɵɵdirectiveInject(UserReadService)); };
171
- UserSelectComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: UserSelectComponent, selectors: [["mage-user-select"]], viewQuery: function UserSelectComponent_Query(rf, ctx) {
172
- if (rf & 1) {
173
- i0.ɵɵviewQuery(NgSelectComponent, 7);
174
- }
175
- if (rf & 2) {
176
- let _t;
177
- i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.userSelect = _t.first);
178
- }
179
- }, features: [i0.ɵɵProvidersFeature([
180
- {
181
- provide: NG_VALUE_ACCESSOR,
182
- multi: true,
183
- useExisting: forwardRef(() => UserSelectComponent)
184
- }
185
- ]), 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) {
186
- if (rf & 1) {
187
- i0.ɵɵelementStart(0, "ng-select", 0);
188
- 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(); });
189
- i0.ɵɵtemplate(1, UserSelectComponent_ng_template_1_Template, 2, 1, "ng-template", 1);
190
- i0.ɵɵtemplate(2, UserSelectComponent_ng_template_2_Template, 7, 4, "ng-template", 2);
191
- i0.ɵɵelementEnd();
192
- }
193
- if (rf & 2) {
194
- i0.ɵɵproperty("items", ctx.users)("typeahead", ctx.searchTerm$)("virtualScroll", true)("loading", ctx.loading)("trackByFn", ctx.trackByUserId);
195
- }
196
- }, 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}"] });
197
- (function () {
198
- (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(UserSelectComponent, [{
199
- type: Component,
200
- args: [{ selector: 'mage-user-select', providers: [
201
- {
202
- provide: NG_VALUE_ACCESSOR,
203
- multi: true,
204
- useExisting: forwardRef(() => UserSelectComponent)
205
- }
206
- ], 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"] }]
207
- }], function () { return [{ type: UserReadService }]; }, { userSelect: [{
208
- type: ViewChild,
209
- args: [NgSelectComponent, { static: true }]
210
- }] });
211
- })();
212
-
213
- class MageUserModule {
214
- }
215
- MageUserModule.ɵfac = function MageUserModule_Factory(t) { return new (t || MageUserModule)(); };
216
- MageUserModule.ɵmod = /*@__PURE__*/ i0.ɵɵdefineNgModule({ type: MageUserModule });
217
- MageUserModule.ɵinj = /*@__PURE__*/ i0.ɵɵdefineInjector({ imports: [CommonModule,
218
- FormsModule,
219
- ReactiveFormsModule,
220
- ScrollingModule,
221
- MatAutocompleteModule,
222
- MatDialogModule,
223
- MatFormFieldModule,
224
- MatInputModule,
225
- MatListModule,
226
- MatSelectModule,
227
- NgSelectModule] });
228
- (function () {
229
- (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MageUserModule, [{
230
- type: NgModule,
231
- args: [{
232
- imports: [
233
- CommonModule,
234
- FormsModule,
235
- ReactiveFormsModule,
236
- ScrollingModule,
237
- MatAutocompleteModule,
238
- MatDialogModule,
239
- MatFormFieldModule,
240
- MatInputModule,
241
- MatListModule,
242
- MatSelectModule,
243
- NgSelectModule,
244
- ],
245
- declarations: [
246
- UserSelectComponent
247
- ],
248
- exports: [
249
- UserSelectComponent
250
- ]
251
- }]
252
- }], null, null);
253
- })();
254
- (function () {
255
- (typeof ngJitMode === "undefined" || ngJitMode) && i0.ɵɵsetNgModuleScope(MageUserModule, { declarations: [UserSelectComponent], imports: [CommonModule,
256
- FormsModule,
257
- ReactiveFormsModule,
258
- ScrollingModule,
259
- MatAutocompleteModule,
260
- MatDialogModule,
261
- MatFormFieldModule,
262
- MatInputModule,
263
- MatListModule,
264
- MatSelectModule,
265
- NgSelectModule], exports: [UserSelectComponent] });
266
- })();
267
-
268
- /**
269
- * Generated bundle index. Do not edit.
270
- */
271
-
272
- export { MageUserModule, USER_READ_BASE_URL, USER_READ_SERVICE, UserReadService, UserSelectComponent };
273
- //# sourceMappingURL=ngageoint-mage.web-core-lib-user.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ngageoint-mage.web-core-lib-user.mjs","sources":["../../../projects/core-lib/user/user-read.service.ts","../../../projects/core-lib/user/user-select/user-select.component.html","../../../projects/core-lib/user/user-select/user-select.component.ts","../../../projects/core-lib/user/user.module.ts","../../../projects/core-lib/user/ngageoint-mage.web-core-lib-user.ts"],"sourcesContent":["import { HttpClient } from '@angular/common/http'\nimport { InjectionToken, Injectable } from '@angular/core'\nimport { PageOf, PagingParameters } from '@ngageoint/mage.web-core-lib/paging'\nimport { Observable } from 'rxjs'\nimport { User } from './user.model'\n\nexport const USER_READ_BASE_URL = '/api/next-users'\n\ntype SearchQueryParams = {\n page_size: string,\n page: string,\n term?: string,\n total?: 'true' | 'false'\n}\n\n\n@Injectable({\n providedIn: 'root'\n})\nexport class UserReadService {\n\n constructor(private webClient: HttpClient) { }\n\n search(which: UserSearchParams): Observable<PageOf<UserSearchResult>> {\n const queryParams: SearchQueryParams = {\n page_size: String(which.pageSize),\n page: String(which.pageIndex),\n }\n if (typeof which.term === 'string') {\n queryParams.term = which.term\n }\n if (typeof which.includeTotalCount === 'boolean') {\n queryParams.total = which.includeTotalCount ? 'true' : 'false'\n }\n return this.webClient.get<PageOf<UserSearchResult>>(`${USER_READ_BASE_URL}/search`, {\n params: queryParams\n })\n }\n}\n\nexport interface UserSearchParams extends PagingParameters {\n term?: string | null | undefined\n}\n\nexport type UserSearchResult = Pick<User, 'id' | 'username' | 'displayName' | 'email' | 'active' | 'enabled'> & {\n /**\n * A reduction of all the phone numbers to a single string\n */\n allPhones?: string | null | undefined\n}\n\nexport const USER_READ_SERVICE = new InjectionToken<UserReadService>('UserReadService')","<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","import { AfterViewInit, Component, Input, OnChanges, SimpleChanges, ViewChild, forwardRef, OnInit } from '@angular/core'\nimport { ControlValueAccessor, FormControl, NG_VALUE_ACCESSOR } from '@angular/forms'\nimport { NgSelectComponent } from '@ng-select/ng-select'\nimport { User } from '../user.model'\nimport { UserReadService, UserSearchParams, UserSearchResult } from '../user-read.service'\nimport { pageForItemIndex, itemRangeOfPage } from '@ngageoint/mage.web-core-lib/paging'\nimport { Subject, BehaviorSubject, SubscriptionLike, Unsubscribable } from 'rxjs'\nimport { debounceTime, distinctUntilChanged } from 'rxjs/operators'\nimport { X } from '@angular/cdk/keycodes'\n\n@Component({\n selector: 'mage-user-select',\n templateUrl: './user-select.component.html',\n styleUrls: [\n './user-select.component.scss'\n ],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n multi: true,\n useExisting: forwardRef(() => UserSelectComponent)\n }\n ]\n})\nexport class UserSelectComponent implements OnInit, OnChanges, AfterViewInit, ControlValueAccessor {\n\n readonly baseFindParams: Readonly<UserSearchParams> = Object.freeze({\n pageSize: 100,\n pageIndex: 0,\n term: null\n })\n readonly nextPageScrollThreshold = 15\n readonly searchTermDebounceTime = 500\n readonly trackByUserId: (x: User) => User['id'] = x => x.id\n get loading(): boolean {\n return !!this.currentFetch && !this.currentFetch.closed\n }\n\n users: UserSearchResult[] = []\n totalCount = 0\n searchTerm$ = new Subject<string | null>()\n currentSearchTerm: string | null = null\n @ViewChild(NgSelectComponent, { static: true })\n userSelect: NgSelectComponent\n\n private currentFetch: SubscriptionLike | null = null\n\n constructor(private userService: UserReadService) { }\n\n ngOnInit() {\n this.searchTerm$.pipe(\n distinctUntilChanged(),\n debounceTime(this.searchTermDebounceTime),\n )\n .subscribe(x => {\n this.currentSearchTerm = x\n this.users = []\n this.totalCount = 0\n if (this.currentFetch) {\n this.currentFetch.unsubscribe()\n this.currentFetch = null\n }\n this.fetchNextPage()\n })\n }\n\n ngOnChanges(changes: SimpleChanges) {\n }\n\n ngAfterViewInit() {\n }\n\n writeValue(x: User | null): void {\n this.userSelect.writeValue(x)\n }\n\n registerOnChange(fn: (...args: any[]) => any): void {\n this.userSelect.registerOnChange(fn)\n }\n\n registerOnTouched(fn: (...args: any[]) => any): void {\n this.userSelect.registerOnTouched(fn)\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.userSelect.setDisabledState(isDisabled)\n }\n\n onOpen() {\n if (this.users.length === 0) {\n this.fetchNextPage()\n }\n }\n\n onScroll({ end }: { start: number, end: number }) {\n if (end < this.users.length - this.nextPageScrollThreshold || this.users.length === this.totalCount) {\n return\n }\n this.fetchNextPage()\n }\n\n onScrollToEnd() {\n\n }\n\n fetchNextPage() {\n if (this.currentFetch) {\n if (this.currentFetch.closed) {\n this.currentFetch = null\n }\n else {\n return\n }\n }\n const nextPage = pageForItemIndex(this.users.length, this.baseFindParams.pageSize)\n const findParams: UserSearchParams = {\n ...this.baseFindParams,\n pageIndex: nextPage\n }\n if (this.currentSearchTerm) {\n findParams.term = this.currentSearchTerm\n }\n this.currentFetch = this.userService.search(findParams).subscribe(page => {\n this.users = this.users.concat(page.items)\n if (typeof page.totalCount === 'number') {\n this.totalCount = page.totalCount\n }\n })\n }\n}","import { ScrollingModule } from '@angular/cdk/scrolling'\nimport { CommonModule } from '@angular/common'\nimport { NgModule } from '@angular/core'\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms'\nimport { MatAutocompleteModule } from '@angular/material/autocomplete'\nimport { MatDialogModule } from '@angular/material/dialog'\nimport { MatFormFieldModule } from '@angular/material/form-field'\nimport { MatInputModule } from '@angular/material/input'\nimport { MatListModule } from '@angular/material/list'\nimport { MatSelectModule } from '@angular/material/select'\nimport { UserSelectComponent } from './user-select/user-select.component'\nimport { NgSelectModule } from '@ng-select/ng-select'\n\n@NgModule({\n imports: [\n CommonModule,\n FormsModule,\n ReactiveFormsModule,\n ScrollingModule,\n MatAutocompleteModule,\n MatDialogModule,\n MatFormFieldModule,\n MatInputModule,\n MatListModule,\n MatSelectModule,\n NgSelectModule,\n ],\n declarations: [\n UserSelectComponent\n ],\n exports: [\n UserSelectComponent\n ]\n})\nexport class MageUserModule {\n\n}","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.UserReadService"],"mappings":"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"}
@@ -1,32 +0,0 @@
1
- import * as i0 from '@angular/core';
2
- import { NgModule } from '@angular/core';
3
- import { CommonModule } from '@angular/common';
4
-
5
- class MageCoreLibModule {
6
- }
7
- MageCoreLibModule.ɵfac = function MageCoreLibModule_Factory(t) { return new (t || MageCoreLibModule)(); };
8
- MageCoreLibModule.ɵmod = /*@__PURE__*/ i0.ɵɵdefineNgModule({ type: MageCoreLibModule });
9
- MageCoreLibModule.ɵinj = /*@__PURE__*/ i0.ɵɵdefineInjector({ imports: [CommonModule] });
10
- (function () {
11
- (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MageCoreLibModule, [{
12
- type: NgModule,
13
- args: [{
14
- declarations: [],
15
- imports: [
16
- CommonModule
17
- ]
18
- }]
19
- }], null, null);
20
- })();
21
- (function () { (typeof ngJitMode === "undefined" || ngJitMode) && i0.ɵɵsetNgModuleScope(MageCoreLibModule, { imports: [CommonModule] }); })();
22
-
23
- /*
24
- * Public API Surface of core-lib
25
- */
26
-
27
- /**
28
- * Generated bundle index. Do not edit.
29
- */
30
-
31
- export { MageCoreLibModule };
32
- //# sourceMappingURL=ngageoint-mage.web-core-lib.mjs.map
@@ -1,10 +0,0 @@
1
- import { InjectionToken } from '@angular/core';
2
-
3
- const EVENT_READ_SERVICE = new InjectionToken('EventReadService');
4
-
5
- /**
6
- * Generated bundle index. Do not edit.
7
- */
8
-
9
- export { EVENT_READ_SERVICE };
10
- //# sourceMappingURL=ngageoint-mage.web-core-lib-event.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ngageoint-mage.web-core-lib-event.mjs","sources":["../../../projects/core-lib/event/event-read.service.ts","../../../projects/core-lib/event/ngageoint-mage.web-core-lib-event.ts"],"sourcesContent":["import { InjectionToken } from '@angular/core'\nimport { PagingParameters } from '@ngageoint/mage.web-core-lib/paging'\nimport { Observable } from 'rxjs'\nimport { MageEvent } from './event.model'\n\nexport interface EventReadService {\n find(which: EventReadParams): Observable<MageEvent[]>\n}\n\nexport interface EventReadParams {\n page: PagingParameters\n}\n\nexport const EVENT_READ_SERVICE = new InjectionToken<EventReadService>('EventReadService')","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;MAaa,kBAAkB,GAAG,IAAI,cAAc,CAAmB,kBAAkB;;ACbzF;;AAEG;;;;"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"ngageoint-mage.web-core-lib-feed.mjs","sources":["../../../projects/core-lib/feed/feed.service.ts","../../../projects/core-lib/feed/ngageoint-mage.web-core-lib-feed.ts"],"sourcesContent":["import { HttpClient } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { Feature } from 'geojson'\nimport { BehaviorSubject, Observable, Subject } from 'rxjs'\nimport { map } from 'rxjs/operators'\nimport { Feed, FeedContent, FeedExpanded, FeedPost, FeedPreview, FeedTopic, Service, ServiceType, StyledFeature } from './feed.model'\n\n\nexport interface FeedPreviewOptions {\n skipContentFetch?: boolean\n}\n\n@Injectable({\n providedIn: 'root'\n})\nexport class FeedService {\n\n constructor(private webClient: HttpClient) { }\n\n // TODO: there is probably a better solution than maintaining this map here\n private _feeds = new BehaviorSubject<Array<Feed>>([]);\n readonly feeds$ = this._feeds.asObservable();\n\n private _feedItems = new Map<string, BehaviorSubject<Array<Feature>>>();\n feedItems(feedId: string): Observable<Array<Feature>> {\n return this._feedItems.get(feedId).asObservable();\n }\n\n fetchAllFeeds(): Observable<Array<Feed>> {\n return this.webClient.get<Array<Feed>>('/api/feeds/');\n }\n\n fetchFeed(feedId: string): Observable<FeedExpanded> {\n return this.webClient.get<FeedExpanded>(`/api/feeds/${feedId}`);\n }\n\n fetchService(serviceId: string): Observable<Service> {\n return this.webClient.get<Service>(`/api/feeds/services/${serviceId}`);\n }\n\n createService(service: { title: string, summary?: string, serviceType: string, config: any}): Observable<Service> {\n return this.webClient.post<Service>(`/api/feeds/services`, service);\n }\n\n fetchServices(): Observable<Array<Service>> {\n return this.webClient.get<Array<Service>>(`/api/feeds/services`);\n }\n\n fetchServiceFeeds(serviceId: string): Observable<Array<Feed>> {\n return this.webClient.get<Array<Feed>>(`/api/feeds/services/${serviceId}/feeds`);\n }\n\n fetchServiceType(serviceTypeId: string): Observable<ServiceType> {\n return this.webClient.get<ServiceType>(`/api/feeds/service_types/${serviceTypeId}`);\n }\n\n fetchTopics(serviceId: string): Observable<Array<FeedTopic>> {\n return this.webClient.get<Array<FeedTopic>>(`/api/feeds/services/${serviceId}/topics`);\n }\n\n previewFeed(serviceId: string, topicId: string, feedSpec: Partial<Omit<FeedPost, 'service' | 'topic'>>, opts?: FeedPreviewOptions): Observable<FeedPreview> {\n opts = opts || {}\n const skipContentFetch: boolean = opts.skipContentFetch === true\n return this.webClient.post<FeedPreview>(\n `/api/feeds/services/${serviceId}/topics/${topicId}/feed_preview?skip_content_fetch=${skipContentFetch}`,\n { feed: feedSpec });\n }\n\n fetchTopic(serviceId: string, topicId: string): Observable<FeedTopic> {\n return this.webClient.get<FeedTopic>(`/api/feeds/services/${serviceId}/topics/${topicId}`);\n }\n\n fetchServiceTypes(): Observable<Array<ServiceType>> {\n return this.webClient.get<Array<ServiceType>>(`/api/feeds/service_types`);\n }\n\n createFeed(serviceId: string, topicId: string, feedConfiguration: any): Observable<FeedExpanded> {\n return this.webClient.post<FeedExpanded>(`/api/feeds/services/${serviceId}/topics/${topicId}/feeds`, feedConfiguration);\n }\n\n updateFeed(feed: Partial<Omit<FeedPost, 'id'>> & Pick<Feed, 'id'>): Observable<FeedExpanded> {\n return this.webClient.put<FeedExpanded>(`/api/feeds/${feed.id}`, feed);\n }\n\n deleteFeed(feed: Feed | FeedExpanded): Observable<{}> {\n return this.webClient.delete(`/api/feeds/${feed.id}`, {responseType: 'text'});\n }\n\n deleteService(service: Service): Observable<{}> {\n console.log('delete')\n return this.webClient.delete(`/api/feeds/services/${service.id}`, { responseType: 'text' });\n }\n\n fetchFeeds(eventId: number): Observable<Array<Feed>> {\n const subject = new Subject<Array<Feed>>();\n this.webClient.get<Array<Feed>>(`/api/events/${eventId}/feeds`).subscribe(feeds => {\n feeds.map(feed => {\n feed.id = feed.id.toString();\n return feed;\n });\n\n feeds.forEach(feed => {\n let feedItems = this._feedItems.get(feed.id);\n if (!feedItems) {\n feedItems = new BehaviorSubject<Array<Feature>>([]);\n this._feedItems.set(feed.id, feedItems);\n }\n })\n\n subject.next(feeds);\n this._feeds.next(feeds);\n });\n\n return subject;\n }\n\n fetchFeedItems(event: any, feed: Feed): Observable<FeedContent> {\n const feedItems = this._feedItems.get(feed.id)\n return this.webClient.post<FeedContent>(`/api/events/${event.id}/feeds/${feed.id}/content`, {}).pipe(\n map(content => {\n const features = content.items.features\n features.forEach((feature: StyledFeature) => {\n feature.id = String(feature.id)\n feature.properties = feature.properties || {}\n })\n feedItems.next(features)\n return content\n })\n )\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
@@ -1,83 +0,0 @@
1
- import { DataSource } from '@angular/cdk/collections';
2
- import { BehaviorSubject, Subscription } from 'rxjs';
3
-
4
- const pageForItemIndex = (itemIndex, pageSize) => {
5
- if (typeof pageSize === 'object') {
6
- pageSize = pageSize.pageSize;
7
- }
8
- return Math.floor(itemIndex / pageSize);
9
- };
10
- /**
11
- * Return the range of item indexes for the given page and page size. The last
12
- * end portion of the range is exclusive, so when indexing an array the last
13
- * item of the page would have position `end - 1`. This allows one to pass the
14
- * values to `Array.slice()`.
15
- * @param pageIndex
16
- * @param pageSize
17
- * @returns
18
- */
19
- const itemRangeOfPage = (pageIndex, pageSize) => {
20
- if (typeof pageIndex === 'object') {
21
- pageSize = pageIndex.pageSize;
22
- pageIndex = pageIndex.pageIndex;
23
- }
24
- const start = pageSize * pageIndex;
25
- const end = start + pageSize;
26
- return [start, end];
27
- };
28
-
29
- /**
30
- * This class is an adaptation from the [Angular Material Guide](https://v8.material.angular.io/cdk/scrolling/overview), _"Specifying data" example_, also
31
- * available on [StackBlitz](https://stackblitz.com/angular/mrbkjagnnra?file=src%2Fapp%2Fcdk-virtual-scroll-data-source-example.ts).
32
- */
33
- class PagingDataSource extends DataSource {
34
- constructor(pageSize, fetchPage) {
35
- super();
36
- this.pageSize = pageSize;
37
- this.fetchPage = fetchPage;
38
- this.data = null;
39
- this.data$ = new BehaviorSubject([]);
40
- this.fetchedPages = new Set();
41
- this.subscription = new Subscription();
42
- }
43
- connect(collectionViewer) {
44
- this.subscription.add(collectionViewer.viewChange.subscribe(range => {
45
- const startPage = this.pageForItemIndex(range.start);
46
- const endPage = this.pageForItemIndex(range.end - 1);
47
- for (let page = startPage; page <= endPage; page++) {
48
- this.fetch(page);
49
- }
50
- }));
51
- return this.data$;
52
- }
53
- disconnect() {
54
- this.subscription.unsubscribe();
55
- }
56
- pageForItemIndex(index) {
57
- return pageForItemIndex(index, this.pageSize);
58
- }
59
- fetch(pageIndex) {
60
- if (this.fetchedPages.has(pageIndex)) {
61
- return;
62
- }
63
- this.fetchedPages.add(pageIndex);
64
- const includeTotalCount = !this.data;
65
- this.fetchPage({ pageSize: this.pageSize, pageIndex: pageIndex, includeTotalCount }).subscribe(page => {
66
- if (!this.data) {
67
- if (typeof (page.totalCount) !== 'number') {
68
- throw new Error('data is null and no total count is available to inform allocation');
69
- }
70
- this.data = Array.from({ length: page.totalCount });
71
- }
72
- this.data.splice(pageIndex * this.pageSize, this.pageSize, ...page.items);
73
- this.data$.next(this.data);
74
- });
75
- }
76
- }
77
-
78
- /**
79
- * Generated bundle index. Do not edit.
80
- */
81
-
82
- export { PagingDataSource, itemRangeOfPage, pageForItemIndex };
83
- //# sourceMappingURL=ngageoint-mage.web-core-lib-paging.mjs.map
@@ -1,4 +0,0 @@
1
- /**
2
- * Generated bundle index. Do not edit.
3
- */
4
- //# sourceMappingURL=ngageoint-mage.web-core-lib-plugin.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ngageoint-mage.web-core-lib-plugin.mjs","sources":["../../../projects/core-lib/plugin/ngageoint-mage.web-core-lib-plugin.ts"],"sourcesContent":["/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"AAAA;;AAEG"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"ngageoint-mage.web-core-lib-static-icon.mjs","sources":["../../../projects/core-lib/static-icon/static-icon.model.ts","../../../projects/core-lib/static-icon/static-icon.service.ts","../../../projects/core-lib/static-icon/static-icon-form-field/static-icon-form-field.component.ts","../../../projects/core-lib/static-icon/static-icon-form-field/static-icon-form-field.component.html","../../../projects/core-lib/static-icon/static-icon-img/static-icon-img.component.ts","../../../projects/core-lib/static-icon/static-icon-select/static-icon-select.component.html","../../../projects/core-lib/static-icon/static-icon-select/static-icon-select.component.ts","../../../projects/core-lib/static-icon/static-icon.module.ts","../../../projects/core-lib/static-icon/ngageoint-mage.web-core-lib-static-icon.ts"],"sourcesContent":["\nexport interface StaticIcon {\n id: string\n sourceUrl: string\n contentPath: string\n title?: string\n summary?: string\n fileName?: string\n tags?: string[]\n}\n\nexport interface RegisteredStaticIconReference {\n id: string\n sourceUrl?: never\n}\n\nexport interface SourceUrlStaticIconReference {\n sourceUrl: string\n id?: never\n}\n\nexport const contentPathOfIcon = (icon?: StaticIcon | RegisteredStaticIconReference | string | null | undefined): string | undefined => {\n if (!icon) {\n return\n }\n if (typeof icon !== 'string') {\n icon = icon.id\n }\n return `/api/icons/${icon}/content`\n}\n\nexport type StaticIconReference = RegisteredStaticIconReference | SourceUrlStaticIconReference\n","import { HttpClient, HttpParams } from '@angular/common/http'\nimport { Injectable } from '@angular/core';\nimport { Observable, throwError } from 'rxjs'\nimport { catchError } from 'rxjs/operators'\nimport { PageOf, PagingParameters } from '@ngageoint/mage.web-core-lib/paging'\nimport { StaticIcon, StaticIconReference } from './static-icon.model'\n\n\nexport interface IconFetch extends PagingParameters {\n searchText?: string\n}\n\n@Injectable({\n providedIn: 'root'\n})\nexport class StaticIconService {\n\n constructor(private webClient: HttpClient) { }\n\n fetchIcons(fetch?: IconFetch): Observable<PageOf<StaticIcon>> {\n const now = Date.now()\n const results = new Observable<PageOf<StaticIcon>>(observer => {\n const icons: StaticIcon[] = []\n let remaining = 100\n while (remaining--) {\n const id = now - remaining\n icons.unshift({\n id: String(id),\n title: `Icon ${id}`,\n fileName: `icon-${id}.png`,\n sourceUrl: `https://test.mage/${id}.png`,\n contentPath: `/icons/${id}/content`\n })\n }\n setTimeout(() => {\n observer.next({\n pageSize: 100,\n pageIndex: 0,\n totalCount: 100,\n items: icons\n })\n observer.complete()\n }, 0)\n return {\n unsubscribe() { }\n }\n })\n return results\n }\n\n fetchIconById(id: string): Observable<StaticIcon | null> {\n return this.webClient.get<StaticIcon>(`/api/icons/${id}`).pipe(\n catchError((err, caught) => {\n // TODO: this is probably better practice to insulate app layer from\n // http errors\n // if (err instanceof HttpErrorResponse) {\n // if (err.status === 404) {\n // return null\n // }\n // }\n return throwError(err)\n })\n )\n }\n\n fetchIconBySourceUrl(url: string): Observable<StaticIcon> {\n return this.webClient.get<StaticIcon | null>(`/api/icons`, {\n params: new HttpParams().set('source_url', url)\n })\n }\n\n fetchIconByReference(ref: StaticIconReference): Observable<StaticIcon | null> {\n if (ref.id) {\n return this.fetchIconById(ref.id)\n }\n else if (ref.sourceUrl) {\n return this.fetchIconBySourceUrl(ref.sourceUrl)\n }\n throw new Error('no icon id or source url')\n }\n\n registerIconUrl(url: string): Observable<StaticIcon> {\n throw new Error('unimplemented')\n }\n\n uploadIcon(): void {\n throw new Error('unimplemented')\n }\n}\n","import { HttpClient } from '@angular/common/http'\nimport { Component, OnChanges, OnDestroy, SimpleChanges } from '@angular/core'\nimport { AbstractControl, ControlValueAccessor, UntypedFormControl, UntypedFormGroup, NG_VALIDATORS, NG_VALUE_ACCESSOR, ValidationErrors, Validator, Validators } from '@angular/forms'\nimport { DomSanitizer } from '@angular/platform-browser'\nimport { StaticIcon, StaticIconReference } from '../static-icon.model'\nimport { StaticIconService } from '../static-icon.service'\n\n\n@Component({\n selector: 'mage-static-icon-form-field',\n templateUrl: './static-icon-form-field.component.html',\n styleUrls: ['./static-icon-form-field.component.scss'],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n multi: true,\n useExisting: StaticIconFormFieldComponent\n },\n {\n provide: NG_VALIDATORS,\n multi: true,\n useExisting: StaticIconFormFieldComponent\n },\n ]\n})\nexport class StaticIconFormFieldComponent implements OnChanges, OnDestroy, ControlValueAccessor, Validator {\n\n iconRef: StaticIconReference = null\n\n form: UntypedFormGroup = new UntypedFormGroup({\n iconRefToken: new UntypedFormControl(null),\n iconRefType: new UntypedFormControl(null, Validators.required)\n })\n icon: StaticIcon | null\n\n private onChange: (iconRef: StaticIconReference) => void = (iconRef: StaticIconReference) => {}\n private onValidatorChange: () => void = () => {}\n private onTouched: () => void = () => {}\n\n constructor(private iconService: StaticIconService, private httpClient: HttpClient, private sanitizer: DomSanitizer) {\n this.form.valueChanges.subscribe((x: IconRefFormValue) => {\n this.iconRef = iconRefForFormValue(x)\n this.onChange(this.iconRef)\n })\n }\n\n registerOnValidatorChange?(fn: () => void): void {\n this.onValidatorChange = fn\n }\n\n ngOnChanges(changes: SimpleChanges) { }\n\n ngOnDestroy() { }\n\n onSelectIcon() { }\n\n writeValue(iconRef: StaticIconReference): void {\n this.iconRef = iconRef\n const formValue = formValueForIconRef(iconRef)\n this.form.setValue(formValue, { emitEvent: false })\n this.resolveIconRef()\n }\n\n registerOnChange(fn: (x: StaticIconReference | null) => void): void {\n this.onChange = fn\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn\n }\n\n setDisabledState?(isDisabled: boolean): void {\n if (isDisabled) {\n this.form.disable()\n }\n else {\n this.form.enable()\n }\n }\n\n validate(control: AbstractControl): ValidationErrors {\n return this.form.errors\n }\n\n private resolveIconRef() {\n if (!this.iconRef) {\n this.icon = null\n return\n }\n this.iconService.fetchIconByReference(this.iconRef).subscribe(x => {\n this.icon = x\n if (!this.icon) {\n return\n }\n })\n }\n}\n\nenum IconRefType {\n Registered = 'id',\n SourceUrl = 'sourceUrl'\n}\n\ntype IconRefFormValue = {\n iconRefToken: string | null\n iconRefType: IconRefType | null\n}\n\nfunction iconRefForFormValue(x: IconRefFormValue): StaticIconReference | null {\n if (!x.iconRefType) {\n return null\n }\n switch (x.iconRefType) {\n case IconRefType.Registered:\n return { [IconRefType.Registered]: x.iconRefToken }\n case IconRefType.SourceUrl:\n return { [IconRefType.SourceUrl]: x.iconRefToken }\n default:\n throw new Error('invalid icon ref type: ' + x.iconRefToken)\n }\n}\n\nfunction formValueForIconRef(x: StaticIconReference | null): IconRefFormValue {\n if (!x) {\n return {\n iconRefType: null,\n iconRefToken: null\n }\n }\n let iconRefType: IconRefType | null = null\n let iconRefToken: string | null = null\n if (x.hasOwnProperty(IconRefType.Registered)) {\n iconRefType = IconRefType.Registered || null\n iconRefToken = x[IconRefType.Registered] || null\n }\n else if (x.hasOwnProperty(IconRefType.SourceUrl)) {\n iconRefType = IconRefType.SourceUrl || null\n iconRefToken = x[IconRefType.SourceUrl] || null\n }\n return {\n iconRefType,\n iconRefToken\n }\n}\n","<div [formGroup]=\"form\">\n <mage-xhr-img class=\"icon-image\" [src]=\"icon?.contentPath\"></mage-xhr-img>\n <input type=\"hidden\" formControlName=\"iconRefType\"/>\n <input type=\"hidden\" formControlName=\"iconRefToken\"/>\n</div>","import { Component, Input, OnChanges, OnInit, SimpleChanges } from '@angular/core';\nimport { RegisteredStaticIconReference, contentPathOfIcon } from '../static-icon.model'\n\n@Component({\n selector: 'mage-static-icon-img',\n template: `<mage-xhr-img [src]=\"iconPath\"></mage-xhr-img>`,\n})\nexport class StaticIconImgComponent implements OnInit, OnChanges {\n\n @Input()\n iconRef: RegisteredStaticIconReference | string | null\n iconPath: string | null\n\n constructor() { }\n\n ngOnInit(): void {\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes.iconRef) {\n if (this.iconRef) {\n this.iconPath = contentPathOfIcon(this.iconRef)\n }\n else {\n this.iconPath = null\n }\n }\n }\n}\n","<div class=\"icon-select\">\n <cdk-virtual-scroll-viewport [itemSize]=\"40\">\n <mat-card *cdkVirtualFor=\"let icon of icons\" class=icon-select-item>\n <mat-card-header>\n <mat-card-title>{{icon.title}}</mat-card-title>\n </mat-card-header>\n <img mat-card-img [src]=\"icon.path\" />\n </mat-card>\n </cdk-virtual-scroll-viewport>\n</div>\n<!--\n <button mat-button class=\"add__button\" type=\"button\" color=\"primary\" (click)=\"file.click()\">\n Upload Icon\n </button>\n <input [hidden]=\"true\" type=\"file\" #file multiple (change)=\"onAttachmentFile($event)\">\n-->","import { Component, OnInit } from '@angular/core'\nimport { PagingParameters, PagingDataSource } from '@ngageoint/mage.web-core-lib/paging'\nimport { StaticIcon } from '../static-icon.model'\nimport { StaticIconService } from '../static-icon.service'\n\nexport interface StaticIconSelectItem {\n id: string\n path: string\n title: string\n fileName: string\n}\n\n@Component({\n selector: 'static-icon-select',\n templateUrl: './static-icon-select.component.html',\n styleUrls: ['./static-icon-select.component.scss']\n})\nexport class StaticIconSelectComponent implements OnInit {\n\n icons: StaticIcon[] | null = null\n dataSource: PagingDataSource<StaticIcon>\n\n constructor(\n private iconService: StaticIconService\n ) {\n this.dataSource = new PagingDataSource<StaticIcon>(250, (paging: PagingParameters) => {\n return this.iconService.fetchIcons(paging)\n })\n }\n\n ngOnInit() {\n this.iconService.fetchIcons().subscribe(x => {\n this.icons = x.items\n })\n }\n\n onBrowseForUploadIcon() {\n throw new Error('unimplemented')\n }\n}\n\n","import { ScrollingModule } from '@angular/cdk/scrolling'\nimport { CommonModule } from '@angular/common'\nimport { NgModule } from '@angular/core'\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms'\nimport { MatCardModule } from '@angular/material/card'\nimport { MageCommonModule } from '@ngageoint/mage.web-core-lib/common'\nimport { StaticIconFormFieldComponent } from './static-icon-form-field/static-icon-form-field.component'\nimport { StaticIconImgComponent } from './static-icon-img/static-icon-img.component'\nimport { StaticIconSelectComponent } from './static-icon-select/static-icon-select.component'\n\n\n@NgModule({\n imports: [\n CommonModule,\n FormsModule,\n ReactiveFormsModule,\n MatCardModule,\n MageCommonModule,\n ScrollingModule\n ],\n declarations: [\n StaticIconFormFieldComponent,\n StaticIconImgComponent,\n StaticIconSelectComponent,\n ],\n exports: [\n StaticIconFormFieldComponent,\n StaticIconImgComponent,\n StaticIconSelectComponent,\n ]\n})\nexport class StaticIconModule {}","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.StaticIconService","i2"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"ngageoint-mage.web-core-lib-user.mjs","sources":["../../../projects/core-lib/user/user-read.service.ts","../../../projects/core-lib/user/user-select/user-select.component.html","../../../projects/core-lib/user/user-select/user-select.component.ts","../../../projects/core-lib/user/user.module.ts","../../../projects/core-lib/user/ngageoint-mage.web-core-lib-user.ts"],"sourcesContent":["import { HttpClient } from '@angular/common/http'\nimport { InjectionToken, Injectable } from '@angular/core'\nimport { PageOf, PagingParameters } from '@ngageoint/mage.web-core-lib/paging'\nimport { Observable } from 'rxjs'\nimport { User } from './user.model'\n\nexport const USER_READ_BASE_URL = '/api/next-users'\n\ntype SearchQueryParams = {\n page_size: string,\n page: string,\n term?: string,\n total?: 'true' | 'false'\n}\n\n\n@Injectable({\n providedIn: 'root'\n})\nexport class UserReadService {\n\n constructor(private webClient: HttpClient) { }\n\n search(which: UserSearchParams): Observable<PageOf<UserSearchResult>> {\n const queryParams: SearchQueryParams = {\n page_size: String(which.pageSize),\n page: String(which.pageIndex),\n }\n if (typeof which.term === 'string') {\n queryParams.term = which.term\n }\n if (typeof which.includeTotalCount === 'boolean') {\n queryParams.total = which.includeTotalCount ? 'true' : 'false'\n }\n return this.webClient.get<PageOf<UserSearchResult>>(`${USER_READ_BASE_URL}/search`, {\n params: queryParams\n })\n }\n}\n\nexport interface UserSearchParams extends PagingParameters {\n term?: string | null | undefined\n}\n\nexport type UserSearchResult = Pick<User, 'id' | 'username' | 'displayName' | 'email' | 'active' | 'enabled'> & {\n /**\n * A reduction of all the phone numbers to a single string\n */\n allPhones?: string | null | undefined\n}\n\nexport const USER_READ_SERVICE = new InjectionToken<UserReadService>('UserReadService')","<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","import { AfterViewInit, Component, Input, OnChanges, SimpleChanges, ViewChild, forwardRef, OnInit } from '@angular/core'\nimport { ControlValueAccessor, FormControl, NG_VALUE_ACCESSOR } from '@angular/forms'\nimport { NgSelectComponent } from '@ng-select/ng-select'\nimport { User } from '../user.model'\nimport { UserReadService, UserSearchParams, UserSearchResult } from '../user-read.service'\nimport { pageForItemIndex, itemRangeOfPage } from '@ngageoint/mage.web-core-lib/paging'\nimport { Subject, BehaviorSubject, SubscriptionLike, Unsubscribable } from 'rxjs'\nimport { debounceTime, distinctUntilChanged } from 'rxjs/operators'\nimport { X } from '@angular/cdk/keycodes'\n\n@Component({\n selector: 'mage-user-select',\n templateUrl: './user-select.component.html',\n styleUrls: [\n './user-select.component.scss'\n ],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n multi: true,\n useExisting: forwardRef(() => UserSelectComponent)\n }\n ]\n})\nexport class UserSelectComponent implements OnInit, OnChanges, AfterViewInit, ControlValueAccessor {\n\n readonly baseFindParams: Readonly<UserSearchParams> = Object.freeze({\n pageSize: 100,\n pageIndex: 0,\n term: null\n })\n readonly nextPageScrollThreshold = 15\n readonly searchTermDebounceTime = 500\n readonly trackByUserId: (x: User) => User['id'] = x => x.id\n get loading(): boolean {\n return !!this.currentFetch && !this.currentFetch.closed\n }\n\n users: UserSearchResult[] = []\n totalCount = 0\n searchTerm$ = new Subject<string | null>()\n currentSearchTerm: string | null = null\n @ViewChild(NgSelectComponent, { static: true })\n userSelect: NgSelectComponent\n\n private currentFetch: SubscriptionLike | null = null\n\n constructor(private userService: UserReadService) { }\n\n ngOnInit() {\n this.searchTerm$.pipe(\n distinctUntilChanged(),\n debounceTime(this.searchTermDebounceTime),\n )\n .subscribe(x => {\n this.currentSearchTerm = x\n this.users = []\n this.totalCount = 0\n if (this.currentFetch) {\n this.currentFetch.unsubscribe()\n this.currentFetch = null\n }\n this.fetchNextPage()\n })\n }\n\n ngOnChanges(changes: SimpleChanges) {\n }\n\n ngAfterViewInit() {\n }\n\n writeValue(x: User | null): void {\n this.userSelect.writeValue(x)\n }\n\n registerOnChange(fn: (...args: any[]) => any): void {\n this.userSelect.registerOnChange(fn)\n }\n\n registerOnTouched(fn: (...args: any[]) => any): void {\n this.userSelect.registerOnTouched(fn)\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.userSelect.setDisabledState(isDisabled)\n }\n\n onOpen() {\n if (this.users.length === 0) {\n this.fetchNextPage()\n }\n }\n\n onScroll({ end }: { start: number, end: number }) {\n if (end < this.users.length - this.nextPageScrollThreshold || this.users.length === this.totalCount) {\n return\n }\n this.fetchNextPage()\n }\n\n onScrollToEnd() {\n\n }\n\n fetchNextPage() {\n if (this.currentFetch) {\n if (this.currentFetch.closed) {\n this.currentFetch = null\n }\n else {\n return\n }\n }\n const nextPage = pageForItemIndex(this.users.length, this.baseFindParams.pageSize)\n const findParams: UserSearchParams = {\n ...this.baseFindParams,\n pageIndex: nextPage\n }\n if (this.currentSearchTerm) {\n findParams.term = this.currentSearchTerm\n }\n this.currentFetch = this.userService.search(findParams).subscribe(page => {\n this.users = this.users.concat(page.items)\n if (typeof page.totalCount === 'number') {\n this.totalCount = page.totalCount\n }\n })\n }\n}","import { ScrollingModule } from '@angular/cdk/scrolling'\nimport { CommonModule } from '@angular/common'\nimport { NgModule } from '@angular/core'\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms'\nimport { MatAutocompleteModule } from '@angular/material/autocomplete'\nimport { MatDialogModule } from '@angular/material/dialog'\nimport { MatFormFieldModule } from '@angular/material/form-field'\nimport { MatInputModule } from '@angular/material/input'\nimport { MatListModule } from '@angular/material/list'\nimport { MatSelectModule } from '@angular/material/select'\nimport { UserSelectComponent } from './user-select/user-select.component'\nimport { NgSelectModule } from '@ng-select/ng-select'\n\n@NgModule({\n imports: [\n CommonModule,\n FormsModule,\n ReactiveFormsModule,\n ScrollingModule,\n MatAutocompleteModule,\n MatDialogModule,\n MatFormFieldModule,\n MatInputModule,\n MatListModule,\n MatSelectModule,\n NgSelectModule,\n ],\n declarations: [\n UserSelectComponent\n ],\n exports: [\n UserSelectComponent\n ]\n})\nexport class MageUserModule {\n\n}","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.UserReadService"],"mappings":";;;;;;;;;;;;;;;;;;AAMO,MAAM,kBAAkB,GAAG,kBAAiB;MAatC,eAAe,CAAA;AAE1B,IAAA,WAAA,CAAoB,SAAqB,EAAA;QAArB,IAAS,CAAA,SAAA,GAAT,SAAS,CAAY;KAAK;AAE9C,IAAA,MAAM,CAAC,KAAuB,EAAA;AAC5B,QAAA,MAAM,WAAW,GAAsB;AACrC,YAAA,SAAS,EAAE,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC;AACjC,YAAA,IAAI,EAAE,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC;SAC9B,CAAA;AACD,QAAA,IAAI,OAAO,KAAK,CAAC,IAAI,KAAK,QAAQ,EAAE;AAClC,YAAA,WAAW,CAAC,IAAI,GAAG,KAAK,CAAC,IAAI,CAAA;AAC9B,SAAA;AACD,QAAA,IAAI,OAAO,KAAK,CAAC,iBAAiB,KAAK,SAAS,EAAE;AAChD,YAAA,WAAW,CAAC,KAAK,GAAG,KAAK,CAAC,iBAAiB,GAAG,MAAM,GAAG,OAAO,CAAA;AAC/D,SAAA;QACD,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,CAA2B,CAAA,EAAG,kBAAkB,CAAA,OAAA,CAAS,EAAE;AAClF,YAAA,MAAM,EAAE,WAAW;AACpB,SAAA,CAAC,CAAA;KACH;;8EAlBU,eAAe,EAAA,EAAA,CAAA,QAAA,CAAA,EAAA,CAAA,UAAA,CAAA,CAAA,CAAA,EAAA,CAAA;qEAAf,eAAe,EAAA,OAAA,EAAf,eAAe,CAAA,IAAA,EAAA,UAAA,EAFd,MAAM,EAAA,CAAA,CAAA;uFAEP,eAAe,EAAA,CAAA;cAH3B,UAAU;AAAC,QAAA,IAAA,EAAA,CAAA;AACV,gBAAA,UAAU,EAAE,MAAM;AACnB,aAAA,CAAA;;MAiCY,iBAAiB,GAAG,IAAI,cAAc,CAAkB,iBAAiB;;;ICtClF,EAAoC,CAAA,cAAA,CAAA,CAAA,EAAA,OAAA,EAAA,CAAA,CAAA,CAAA;IAAA,EAA6B,CAAA,MAAA,CAAA,CAAA,CAAA,CAAA;IAAA,EAAQ,CAAA,YAAA,EAAA,CAAA;;;IAArC,EAA6B,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAA7B,EAA6B,CAAA,kBAAA,CAAA,EAAA,EAAA,MAAA,CAAA,UAAA,EAAA,iBAAA,CAAA,CAAA;;;AAGjE,IAAA,EAAA,CAAA,cAAA,CAAA,CAAA,EAAA,KAAA,EAAA,CAAA,CAAyB,CAAA,CAAA,EAAA,GAAA,EAAA,CAAA,CAAA,CAAA;IACc,EAAwC,CAAA,MAAA,CAAA,CAAA,CAAA,CAAA;IAAA,EAAI,CAAA,YAAA,EAAA,CAAA;IACjF,EAAoC,CAAA,cAAA,CAAA,CAAA,EAAA,GAAA,EAAA,CAAA,CAAA,CAAA;IAAA,EAA8B,CAAA,MAAA,CAAA,CAAA,CAAA,CAAA;IAAA,EAAI,CAAA,YAAA,EAAA,CAAA;IACtE,EAAoC,CAAA,cAAA,CAAA,CAAA,EAAA,GAAA,EAAA,CAAA,CAAA,CAAA;IAAA,EAAkC,CAAA,MAAA,CAAA,CAAA,CAAA,CAAA;AAAA,IAAA,EAAA,CAAA,YAAA,EAAI,EAAA,CAAA;;;IAFrC,EAAwC,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAAxC,EAAwC,CAAA,kBAAA,CAAA,EAAA,EAAA,OAAA,CAAA,WAAA,EAAA,IAAA,EAAA,OAAA,CAAA,QAAA,EAAA,GAAA,CAAA,CAAA;IACzC,EAA8B,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAA9B,EAA8B,CAAA,iBAAA,CAAA,OAAA,CAAA,KAAA,IAAA,YAAA,CAAA,CAAA;IAC9B,EAAkC,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAAlC,EAAkC,CAAA,iBAAA,CAAA,OAAA,CAAA,SAAA,IAAA,YAAA,CAAA,CAAA;;MCK/D,mBAAmB,CAAA;AAuB9B,IAAA,WAAA,CAAoB,WAA4B,EAAA;QAA5B,IAAW,CAAA,WAAA,GAAX,WAAW,CAAiB;AArBvC,QAAA,IAAA,CAAA,cAAc,GAA+B,MAAM,CAAC,MAAM,CAAC;AAClE,YAAA,QAAQ,EAAE,GAAG;AACb,YAAA,SAAS,EAAE,CAAC;AACZ,YAAA,IAAI,EAAE,IAAI;AACX,SAAA,CAAC,CAAA;QACO,IAAuB,CAAA,uBAAA,GAAG,EAAE,CAAA;QAC5B,IAAsB,CAAA,sBAAA,GAAG,GAAG,CAAA;QAC5B,IAAa,CAAA,aAAA,GAA4B,CAAC,IAAI,CAAC,CAAC,EAAE,CAAA;QAK3D,IAAK,CAAA,KAAA,GAAuB,EAAE,CAAA;QAC9B,IAAU,CAAA,UAAA,GAAG,CAAC,CAAA;AACd,QAAA,IAAA,CAAA,WAAW,GAAG,IAAI,OAAO,EAAiB,CAAA;QAC1C,IAAiB,CAAA,iBAAA,GAAkB,IAAI,CAAA;QAI/B,IAAY,CAAA,YAAA,GAA4B,IAAI,CAAA;KAEC;AAbrD,IAAA,IAAI,OAAO,GAAA;AACT,QAAA,OAAO,CAAC,CAAC,IAAI,CAAC,YAAY,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,MAAM,CAAA;KACxD;IAaD,QAAQ,GAAA;AACN,QAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CACnB,oBAAoB,EAAE,EACtB,YAAY,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAC1C;aACA,SAAS,CAAC,CAAC,IAAG;AACb,YAAA,IAAI,CAAC,iBAAiB,GAAG,CAAC,CAAA;AAC1B,YAAA,IAAI,CAAC,KAAK,GAAG,EAAE,CAAA;AACf,YAAA,IAAI,CAAC,UAAU,GAAG,CAAC,CAAA;YACnB,IAAI,IAAI,CAAC,YAAY,EAAE;AACrB,gBAAA,IAAI,CAAC,YAAY,CAAC,WAAW,EAAE,CAAA;AAC/B,gBAAA,IAAI,CAAC,YAAY,GAAG,IAAI,CAAA;AACzB,aAAA;YACD,IAAI,CAAC,aAAa,EAAE,CAAA;AACtB,SAAC,CAAC,CAAA;KACH;AAED,IAAA,WAAW,CAAC,OAAsB,EAAA;KACjC;IAED,eAAe,GAAA;KACd;AAED,IAAA,UAAU,CAAC,CAAc,EAAA;AACvB,QAAA,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC,CAAC,CAAA;KAC9B;AAED,IAAA,gBAAgB,CAAC,EAA2B,EAAA;AAC1C,QAAA,IAAI,CAAC,UAAU,CAAC,gBAAgB,CAAC,EAAE,CAAC,CAAA;KACrC;AAED,IAAA,iBAAiB,CAAC,EAA2B,EAAA;AAC3C,QAAA,IAAI,CAAC,UAAU,CAAC,iBAAiB,CAAC,EAAE,CAAC,CAAA;KACtC;AAED,IAAA,gBAAgB,CAAC,UAAmB,EAAA;AAClC,QAAA,IAAI,CAAC,UAAU,CAAC,gBAAgB,CAAC,UAAU,CAAC,CAAA;KAC7C;IAED,MAAM,GAAA;AACJ,QAAA,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE;YAC3B,IAAI,CAAC,aAAa,EAAE,CAAA;AACrB,SAAA;KACF;IAED,QAAQ,CAAC,EAAE,GAAG,EAAkC,EAAA;QAC9C,IAAI,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC,uBAAuB,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,KAAK,IAAI,CAAC,UAAU,EAAE;YACnG,OAAM;AACP,SAAA;QACD,IAAI,CAAC,aAAa,EAAE,CAAA;KACrB;IAED,aAAa,GAAA;KAEZ;IAED,aAAa,GAAA;QACX,IAAI,IAAI,CAAC,YAAY,EAAE;AACrB,YAAA,IAAI,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE;AAC5B,gBAAA,IAAI,CAAC,YAAY,GAAG,IAAI,CAAA;AACzB,aAAA;AACI,iBAAA;gBACH,OAAM;AACP,aAAA;AACF,SAAA;AACD,QAAA,MAAM,QAAQ,GAAG,gBAAgB,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAA;AAClF,QAAA,MAAM,UAAU,GAAqB;YACnC,GAAG,IAAI,CAAC,cAAc;AACtB,YAAA,SAAS,EAAE,QAAQ;SACpB,CAAA;QACD,IAAI,IAAI,CAAC,iBAAiB,EAAE;AAC1B,YAAA,UAAU,CAAC,IAAI,GAAG,IAAI,CAAC,iBAAiB,CAAA;AACzC,SAAA;AACD,QAAA,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,SAAS,CAAC,IAAI,IAAG;AACvE,YAAA,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;AAC1C,YAAA,IAAI,OAAO,IAAI,CAAC,UAAU,KAAK,QAAQ,EAAE;AACvC,gBAAA,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,CAAA;AAClC,aAAA;AACH,SAAC,CAAC,CAAA;KACH;;sFAxGU,mBAAmB,EAAA,EAAA,CAAA,iBAAA,CAAAA,eAAA,CAAA,CAAA,CAAA,EAAA,CAAA;sEAAnB,mBAAmB,EAAA,SAAA,EAAA,CAAA,CAAA,kBAAA,CAAA,CAAA,EAAA,SAAA,EAAA,SAAA,yBAAA,CAAA,EAAA,EAAA,GAAA,EAAA,EAAA,IAAA,EAAA,GAAA,CAAA,EAAA;uBAkBnB,iBAAiB,EAAA,CAAA,CAAA,CAAA;;;;AA1BjB,KAAA,EAAA,EAAA,QAAA,EAAA,CAAA,EAAA,CAAA,kBAAA,CAAA;AACT,YAAA;AACE,gBAAA,OAAO,EAAE,iBAAiB;AAC1B,gBAAA,KAAK,EAAE,IAAI;AACX,gBAAA,WAAW,EAAE,UAAU,CAAC,MAAM,mBAAmB,CAAC;AACnD,aAAA;AACF,SAAA,CAAA,EAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,KAAA,EAAA,CAAA,EAAA,IAAA,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,CAAA,UAAA,EAAA,MAAA,EAAA,aAAA,EAAA,eAAA,EAAA,WAAA,EAAA,aAAA,EAAA,CAAA,EAAA,OAAA,EAAA,WAAA,EAAA,eAAA,EAAA,SAAA,EAAA,WAAA,EAAA,MAAA,EAAA,QAAA,EAAA,aAAA,CAAA,EAAA,CAAA,eAAA,EAAA,EAAA,CAAA,EAAA,CAAA,OAAA,EAAA,aAAA,EAAA,eAAA,EAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA,WAAA,EAAA,YAAA,CAAA,EAAA,CAAA,CAAA,EAAA,aAAA,CAAA,EAAA,CAAA,CAAA,EAAA,mBAAA,EAAA,SAAA,CAAA,EAAA,CAAA,CAAA,EAAA,mBAAA,EAAA,QAAA,CAAA,CAAA,EAAA,QAAA,EAAA,SAAA,4BAAA,CAAA,EAAA,EAAA,GAAA,EAAA,EAAA,IAAA,EAAA,GAAA,CAAA,EAAA;QDtBH,EAWG,CAAA,cAAA,CAAA,CAAA,EAAA,WAAA,EAAA,CAAA,CAAA,CAAA;AAHD,QAAA,EAAA,CAAA,UAAA,CAAA,MAAA,EAAA,SAAA,sDAAA,GAAA,EAAA,OAAQ,YAAQ,CAAC,EAAA,CAAA,CAAA,QAAA,EAAA,SAAA,wDAAA,CAAA,MAAA,EAAA,EAAA,OACP,oBAAgB,CADT,EAAA,CAAA,CAAA,aAAA,EAAA,SAAA,6DAAA,GAAA,EAAA,OAEF,mBAAe,CAFb,EAAA,CAAA,CAAA;QAIjB,EAEc,CAAA,UAAA,CAAA,CAAA,EAAA,0CAAA,EAAA,CAAA,EAAA,CAAA,EAAA,aAAA,EAAA,CAAA,CAAA,CAAA;QACd,EAMc,CAAA,UAAA,CAAA,CAAA,EAAA,0CAAA,EAAA,CAAA,EAAA,CAAA,EAAA,aAAA,EAAA,CAAA,CAAA,CAAA;QAChB,EAAY,CAAA,YAAA,EAAA,CAAA;;QAtBD,EAAe,CAAA,UAAA,CAAA,OAAA,EAAA,GAAA,CAAA,KAAA,CAAA,CAAA,WAAA,EAAA,GAAA,CAAA,WAAA,CAAA,CAAA,eAAA,EAAA,IAAA,CAAA,CAAA,SAAA,EAAA,GAAA,CAAA,OAAA,CAAA,CAAA,WAAA,EAAA,GAAA,CAAA,aAAA,CAAA,CAAA;;uFCwBb,mBAAmB,EAAA,CAAA;cAd/B,SAAS;AACE,QAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,kBAAkB,EAKjB,SAAA,EAAA;AACT,oBAAA;AACE,wBAAA,OAAO,EAAE,iBAAiB;AAC1B,wBAAA,KAAK,EAAE,IAAI;AACX,wBAAA,WAAW,EAAE,UAAU,CAAC,yBAAyB,CAAC;AACnD,qBAAA;AACF,iBAAA,EAAA,QAAA,EAAA,m3BAAA,EAAA,MAAA,EAAA,CAAA,0QAAA,CAAA,EAAA,CAAA;+DAqBD,UAAU,EAAA,CAAA;kBADT,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA,iBAAiB,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAA;;;MCRnC,cAAc,CAAA;;4EAAd,cAAc,GAAA,CAAA,EAAA,CAAA;gEAAd,cAAc,EAAA,CAAA,CAAA;oEAnBvB,YAAY;QACZ,WAAW;QACX,mBAAmB;QACnB,eAAe;QACf,qBAAqB;QACrB,eAAe;QACf,kBAAkB;QAClB,cAAc;QACd,aAAa;QACb,eAAe;QACf,cAAc,CAAA,EAAA,CAAA,CAAA;uFASL,cAAc,EAAA,CAAA;cArB1B,QAAQ;AAAC,QAAA,IAAA,EAAA,CAAA;AACR,gBAAA,OAAO,EAAE;oBACP,YAAY;oBACZ,WAAW;oBACX,mBAAmB;oBACnB,eAAe;oBACf,qBAAqB;oBACrB,eAAe;oBACf,kBAAkB;oBAClB,cAAc;oBACd,aAAa;oBACb,eAAe;oBACf,cAAc;AACf,iBAAA;AACD,gBAAA,YAAY,EAAE;oBACZ,mBAAmB;AACpB,iBAAA;AACD,gBAAA,OAAO,EAAE;oBACP,mBAAmB;AACpB,iBAAA;AACF,aAAA,CAAA;;wFACY,cAAc,EAAA,EAAA,YAAA,EAAA,CANvB,mBAAmB,CAAA,EAAA,OAAA,EAAA,CAbnB,YAAY;QACZ,WAAW;QACX,mBAAmB;QACnB,eAAe;QACf,qBAAqB;QACrB,eAAe;QACf,kBAAkB;QAClB,cAAc;QACd,aAAa;QACb,eAAe;AACf,QAAA,cAAc,aAMd,mBAAmB,CAAA,EAAA,CAAA,CAAA,EAAA,GAAA;;AC/BvB;;AAEG;;;;"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"ngageoint-mage.web-core-lib.mjs","sources":["../../../projects/core-lib/src/mage-core-lib.module.ts","../../../projects/core-lib/src/public-api.ts","../../../projects/core-lib/src/ngageoint-mage.web-core-lib.ts"],"sourcesContent":["import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\n\n\n@NgModule({\n declarations: [],\n imports: [\n CommonModule\n ]\n})\nexport class MageCoreLibModule { }\n","/*\n * Public API Surface of core-lib\n */\n\nexport * from './mage-core-lib.module'\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;;;MAWa,iBAAiB,CAAA;;kFAAjB,iBAAiB,GAAA,CAAA,EAAA,CAAA;mEAAjB,iBAAiB,EAAA,CAAA,CAAA;uEAH1B,YAAY,CAAA,EAAA,CAAA,CAAA;uFAGH,iBAAiB,EAAA,CAAA;cAN7B,QAAQ;AAAC,QAAA,IAAA,EAAA,CAAA;AACR,gBAAA,YAAY,EAAE,EAAE;AAChB,gBAAA,OAAO,EAAE;oBACP,YAAY;AACb,iBAAA;AACF,aAAA,CAAA;;AACY,CAAA,YAAA,EAAA,CAAA,OAAA,SAAA,KAAA,WAAA,IAAA,SAAA,KAAA,EAAA,CAAA,kBAAA,CAAA,iBAAiB,cAH1B,YAAY,CAAA,EAAA,CAAA,CAAA,EAAA,GAAA;;ACRhB;;AAEG;;ACFH;;AAEG;;;;"}
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes