@ngageoint/mage.web-core-lib 6.2.2

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 (181) hide show
  1. package/README.md +24 -0
  2. package/bundles/ngageoint-mage.web-core-lib-common.umd.js +146 -0
  3. package/bundles/ngageoint-mage.web-core-lib-common.umd.js.map +1 -0
  4. package/bundles/ngageoint-mage.web-core-lib-common.umd.min.js +2 -0
  5. package/bundles/ngageoint-mage.web-core-lib-common.umd.min.js.map +1 -0
  6. package/bundles/ngageoint-mage.web-core-lib-event.umd.js +14 -0
  7. package/bundles/ngageoint-mage.web-core-lib-event.umd.js.map +1 -0
  8. package/bundles/ngageoint-mage.web-core-lib-event.umd.min.js +2 -0
  9. package/bundles/ngageoint-mage.web-core-lib-event.umd.min.js.map +1 -0
  10. package/bundles/ngageoint-mage.web-core-lib-feed.umd.js +114 -0
  11. package/bundles/ngageoint-mage.web-core-lib-feed.umd.js.map +1 -0
  12. package/bundles/ngageoint-mage.web-core-lib-feed.umd.min.js +2 -0
  13. package/bundles/ngageoint-mage.web-core-lib-feed.umd.min.js.map +1 -0
  14. package/bundles/ngageoint-mage.web-core-lib-paging.umd.js +313 -0
  15. package/bundles/ngageoint-mage.web-core-lib-paging.umd.js.map +1 -0
  16. package/bundles/ngageoint-mage.web-core-lib-paging.umd.min.js +16 -0
  17. package/bundles/ngageoint-mage.web-core-lib-paging.umd.min.js.map +1 -0
  18. package/bundles/ngageoint-mage.web-core-lib-plugin.umd.js +11 -0
  19. package/bundles/ngageoint-mage.web-core-lib-plugin.umd.js.map +1 -0
  20. package/bundles/ngageoint-mage.web-core-lib-plugin.umd.min.js +2 -0
  21. package/bundles/ngageoint-mage.web-core-lib-plugin.umd.min.js.map +1 -0
  22. package/bundles/ngageoint-mage.web-core-lib-static-icon.umd.js +391 -0
  23. package/bundles/ngageoint-mage.web-core-lib-static-icon.umd.js.map +1 -0
  24. package/bundles/ngageoint-mage.web-core-lib-static-icon.umd.min.js +2 -0
  25. package/bundles/ngageoint-mage.web-core-lib-static-icon.umd.min.js.map +1 -0
  26. package/bundles/ngageoint-mage.web-core-lib-user.umd.js +492 -0
  27. package/bundles/ngageoint-mage.web-core-lib-user.umd.js.map +1 -0
  28. package/bundles/ngageoint-mage.web-core-lib-user.umd.min.js +16 -0
  29. package/bundles/ngageoint-mage.web-core-lib-user.umd.min.js.map +1 -0
  30. package/bundles/ngageoint-mage.web-core-lib.umd.js +32 -0
  31. package/bundles/ngageoint-mage.web-core-lib.umd.js.map +1 -0
  32. package/bundles/ngageoint-mage.web-core-lib.umd.min.js +2 -0
  33. package/bundles/ngageoint-mage.web-core-lib.umd.min.js.map +1 -0
  34. package/common/mage-common.module.d.ts +7 -0
  35. package/common/ngageoint-mage.web-core-lib-common.d.ts +5 -0
  36. package/common/package.json +12 -0
  37. package/common/public-api.d.ts +2 -0
  38. package/common/xhr-img.component.d.ts +58 -0
  39. package/esm2015/common/mage-common.module.js +26 -0
  40. package/esm2015/common/ngageoint-mage.web-core-lib-common.js +5 -0
  41. package/esm2015/common/public-api.js +3 -0
  42. package/esm2015/common/xhr-img.component.js +109 -0
  43. package/esm2015/event/event-read.service.js +3 -0
  44. package/esm2015/event/event.model.js +1 -0
  45. package/esm2015/event/ngageoint-mage.web-core-lib-event.js +5 -0
  46. package/esm2015/event/public-api.js +2 -0
  47. package/esm2015/feed/feed.model.js +1 -0
  48. package/esm2015/feed/feed.service.js +105 -0
  49. package/esm2015/feed/ngageoint-mage.web-core-lib-feed.js +5 -0
  50. package/esm2015/feed/public-api.js +2 -0
  51. package/esm2015/mage-core-lib.module.js +20 -0
  52. package/esm2015/ngageoint-mage.web-core-lib.js +5 -0
  53. package/esm2015/paging/ngageoint-mage.web-core-lib-paging.js +5 -0
  54. package/esm2015/paging/paging.cdk-data-source.adapter.js +52 -0
  55. package/esm2015/paging/paging.model.js +25 -0
  56. package/esm2015/paging/public-api.js +3 -0
  57. package/esm2015/plugin/ngageoint-mage.web-core-lib-plugin.js +4 -0
  58. package/esm2015/plugin/plugin.model.js +1 -0
  59. package/esm2015/plugin/public-api.js +1 -0
  60. package/esm2015/public-api.js +5 -0
  61. package/esm2015/static-icon/ngageoint-mage.web-core-lib-static-icon.js +5 -0
  62. package/esm2015/static-icon/public-api.js +7 -0
  63. package/esm2015/static-icon/static-icon-form-field/static-icon-form-field.component.js +152 -0
  64. package/esm2015/static-icon/static-icon-img/static-icon-img.component.js +35 -0
  65. package/esm2015/static-icon/static-icon-select/static-icon-select.component.js +61 -0
  66. package/esm2015/static-icon/static-icon.model.js +10 -0
  67. package/esm2015/static-icon/static-icon.module.js +55 -0
  68. package/esm2015/static-icon/static-icon.service.js +82 -0
  69. package/esm2015/user/ngageoint-mage.web-core-lib-user.js +5 -0
  70. package/esm2015/user/public-api.js +4 -0
  71. package/esm2015/user/user-read.service.js +40 -0
  72. package/esm2015/user/user-select/user-select.component.js +165 -0
  73. package/esm2015/user/user.model.js +1 -0
  74. package/esm2015/user/user.module.js +65 -0
  75. package/esm5/common/mage-common.module.js +30 -0
  76. package/esm5/common/ngageoint-mage.web-core-lib-common.js +5 -0
  77. package/esm5/common/public-api.js +3 -0
  78. package/esm5/common/xhr-img.component.js +112 -0
  79. package/esm5/event/event-read.service.js +3 -0
  80. package/esm5/event/event.model.js +1 -0
  81. package/esm5/event/ngageoint-mage.web-core-lib-event.js +5 -0
  82. package/esm5/event/public-api.js +2 -0
  83. package/esm5/feed/feed.model.js +1 -0
  84. package/esm5/feed/feed.service.js +108 -0
  85. package/esm5/feed/ngageoint-mage.web-core-lib-feed.js +5 -0
  86. package/esm5/feed/public-api.js +2 -0
  87. package/esm5/mage-core-lib.module.js +24 -0
  88. package/esm5/ngageoint-mage.web-core-lib.js +5 -0
  89. package/esm5/paging/ngageoint-mage.web-core-lib-paging.js +5 -0
  90. package/esm5/paging/paging.cdk-data-source.adapter.js +60 -0
  91. package/esm5/paging/paging.model.js +25 -0
  92. package/esm5/paging/public-api.js +3 -0
  93. package/esm5/plugin/ngageoint-mage.web-core-lib-plugin.js +4 -0
  94. package/esm5/plugin/plugin.model.js +1 -0
  95. package/esm5/plugin/public-api.js +1 -0
  96. package/esm5/public-api.js +5 -0
  97. package/esm5/static-icon/ngageoint-mage.web-core-lib-static-icon.js +5 -0
  98. package/esm5/static-icon/public-api.js +7 -0
  99. package/esm5/static-icon/static-icon-form-field/static-icon-form-field.component.js +157 -0
  100. package/esm5/static-icon/static-icon-img/static-icon-img.component.js +38 -0
  101. package/esm5/static-icon/static-icon-select/static-icon-select.component.js +65 -0
  102. package/esm5/static-icon/static-icon.model.js +10 -0
  103. package/esm5/static-icon/static-icon.module.js +59 -0
  104. package/esm5/static-icon/static-icon.service.js +84 -0
  105. package/esm5/user/ngageoint-mage.web-core-lib-user.js +5 -0
  106. package/esm5/user/public-api.js +4 -0
  107. package/esm5/user/user-read.service.js +42 -0
  108. package/esm5/user/user-select/user-select.component.js +175 -0
  109. package/esm5/user/user.model.js +1 -0
  110. package/esm5/user/user.module.js +69 -0
  111. package/event/event-read.service.d.ts +11 -0
  112. package/event/event.model.d.ts +6 -0
  113. package/event/ngageoint-mage.web-core-lib-event.d.ts +5 -0
  114. package/event/package.json +12 -0
  115. package/event/public-api.d.ts +2 -0
  116. package/feed/feed.model.d.ts +83 -0
  117. package/feed/feed.service.d.ts +40 -0
  118. package/feed/ngageoint-mage.web-core-lib-feed.d.ts +5 -0
  119. package/feed/package.json +12 -0
  120. package/feed/public-api.d.ts +2 -0
  121. package/fesm2015/ngageoint-mage.web-core-lib-common.js +137 -0
  122. package/fesm2015/ngageoint-mage.web-core-lib-common.js.map +1 -0
  123. package/fesm2015/ngageoint-mage.web-core-lib-event.js +10 -0
  124. package/fesm2015/ngageoint-mage.web-core-lib-event.js.map +1 -0
  125. package/fesm2015/ngageoint-mage.web-core-lib-feed.js +111 -0
  126. package/fesm2015/ngageoint-mage.web-core-lib-feed.js.map +1 -0
  127. package/fesm2015/ngageoint-mage.web-core-lib-paging.js +83 -0
  128. package/fesm2015/ngageoint-mage.web-core-lib-paging.js.map +1 -0
  129. package/fesm2015/ngageoint-mage.web-core-lib-plugin.js +4 -0
  130. package/fesm2015/ngageoint-mage.web-core-lib-plugin.js.map +1 -0
  131. package/fesm2015/ngageoint-mage.web-core-lib-static-icon.js +379 -0
  132. package/fesm2015/ngageoint-mage.web-core-lib-static-icon.js.map +1 -0
  133. package/fesm2015/ngageoint-mage.web-core-lib-user.js +267 -0
  134. package/fesm2015/ngageoint-mage.web-core-lib-user.js.map +1 -0
  135. package/fesm2015/ngageoint-mage.web-core-lib.js +30 -0
  136. package/fesm2015/ngageoint-mage.web-core-lib.js.map +1 -0
  137. package/fesm5/ngageoint-mage.web-core-lib-common.js +142 -0
  138. package/fesm5/ngageoint-mage.web-core-lib-common.js.map +1 -0
  139. package/fesm5/ngageoint-mage.web-core-lib-event.js +10 -0
  140. package/fesm5/ngageoint-mage.web-core-lib-event.js.map +1 -0
  141. package/fesm5/ngageoint-mage.web-core-lib-feed.js +113 -0
  142. package/fesm5/ngageoint-mage.web-core-lib-feed.js.map +1 -0
  143. package/fesm5/ngageoint-mage.web-core-lib-paging.js +90 -0
  144. package/fesm5/ngageoint-mage.web-core-lib-paging.js.map +1 -0
  145. package/fesm5/ngageoint-mage.web-core-lib-plugin.js +4 -0
  146. package/fesm5/ngageoint-mage.web-core-lib-plugin.js.map +1 -0
  147. package/fesm5/ngageoint-mage.web-core-lib-static-icon.js +392 -0
  148. package/fesm5/ngageoint-mage.web-core-lib-static-icon.js.map +1 -0
  149. package/fesm5/ngageoint-mage.web-core-lib-user.js +280 -0
  150. package/fesm5/ngageoint-mage.web-core-lib-user.js.map +1 -0
  151. package/fesm5/ngageoint-mage.web-core-lib.js +33 -0
  152. package/fesm5/ngageoint-mage.web-core-lib.js.map +1 -0
  153. package/mage-core-lib.module.d.ts +6 -0
  154. package/ngageoint-mage.web-core-lib.d.ts +5 -0
  155. package/package.json +35 -0
  156. package/paging/ngageoint-mage.web-core-lib-paging.d.ts +5 -0
  157. package/paging/package.json +12 -0
  158. package/paging/paging.cdk-data-source.adapter.d.ts +20 -0
  159. package/paging/paging.model.d.ts +27 -0
  160. package/paging/public-api.d.ts +2 -0
  161. package/plugin/ngageoint-mage.web-core-lib-plugin.d.ts +5 -0
  162. package/plugin/package.json +12 -0
  163. package/plugin/plugin.model.d.ts +13 -0
  164. package/plugin/public-api.d.ts +1 -0
  165. package/public-api.d.ts +1 -0
  166. package/static-icon/ngageoint-mage.web-core-lib-static-icon.d.ts +5 -0
  167. package/static-icon/package.json +12 -0
  168. package/static-icon/public-api.d.ts +6 -0
  169. package/static-icon/static-icon-form-field/static-icon-form-field.component.d.ts +31 -0
  170. package/static-icon/static-icon-img/static-icon-img.component.d.ts +12 -0
  171. package/static-icon/static-icon-select/static-icon-select.component.d.ts +21 -0
  172. package/static-icon/static-icon.model.d.ts +19 -0
  173. package/static-icon/static-icon.module.d.ts +13 -0
  174. package/static-icon/static-icon.service.d.ts +20 -0
  175. package/user/ngageoint-mage.web-core-lib-user.d.ts +5 -0
  176. package/user/package.json +12 -0
  177. package/user/public-api.d.ts +4 -0
  178. package/user/user-read.service.d.ts +24 -0
  179. package/user/user-select/user-select.component.d.ts +38 -0
  180. package/user/user.model.d.ts +85 -0
  181. package/user/user.module.d.ts +16 -0
@@ -0,0 +1,379 @@
1
+ import { CdkVirtualScrollViewport, CdkFixedSizeVirtualScroll, CdkVirtualForOf, ScrollingModule } from '@angular/cdk/scrolling';
2
+ import { CommonModule } from '@angular/common';
3
+ import { ɵɵinject, ɵɵdefineInjectable, ɵsetClassMetadata, Injectable, ɵɵdirectiveInject, ɵɵdefineComponent, ɵɵProvidersFeature, ɵɵNgOnChangesFeature, ɵɵelementStart, ɵɵelement, ɵɵelementEnd, ɵɵproperty, ɵɵadvance, Component, Input, ɵɵtext, ɵɵtextInterpolate, ɵɵsanitizeUrl, ɵɵtemplate, ɵɵdefineNgModule, ɵɵdefineInjector, ɵɵsetNgModuleScope, NgModule } from '@angular/core';
4
+ import { FormGroup, FormControl, Validators, NG_VALUE_ACCESSOR, NG_VALIDATORS, NgControlStatusGroup, FormGroupDirective, DefaultValueAccessor, NgControlStatus, FormControlName, FormsModule, ReactiveFormsModule } from '@angular/forms';
5
+ import { MatCard, MatCardHeader, MatCardTitle, MatCardModule } from '@angular/material/card';
6
+ import { XhrImgComponent, MageCommonModule } from '@ngageoint/mage.web-core-lib/common';
7
+ import { HttpParams, HttpClient } from '@angular/common/http';
8
+ import { Observable, throwError } from 'rxjs';
9
+ import { catchError } from 'rxjs/operators';
10
+ import { DomSanitizer } from '@angular/platform-browser';
11
+ import { PagingDataSource } from '@ngageoint/mage.web-core-lib/paging';
12
+
13
+ const contentPathOfIcon = (icon) => {
14
+ if (!icon) {
15
+ return;
16
+ }
17
+ if (typeof icon !== 'string') {
18
+ icon = icon.id;
19
+ }
20
+ return `/api/icons/${icon}/content`;
21
+ };
22
+
23
+ class StaticIconService {
24
+ constructor(http) {
25
+ this.http = http;
26
+ }
27
+ fetchIcons(fetch) {
28
+ const now = Date.now();
29
+ const results = new Observable(observer => {
30
+ const icons = [];
31
+ let remaining = 100;
32
+ while (remaining--) {
33
+ const id = now - remaining;
34
+ icons.unshift({
35
+ id: String(id),
36
+ title: `Icon ${id}`,
37
+ fileName: `icon-${id}.png`,
38
+ sourceUrl: `https://test.mage/${id}.png`,
39
+ contentPath: `/icons/${id}/content`
40
+ });
41
+ }
42
+ setTimeout(() => {
43
+ observer.next({
44
+ pageSize: 100,
45
+ pageIndex: 0,
46
+ totalCount: 100,
47
+ items: icons
48
+ });
49
+ observer.complete();
50
+ }, 0);
51
+ return {
52
+ unsubscribe() { }
53
+ };
54
+ });
55
+ return results;
56
+ }
57
+ fetchIconById(id) {
58
+ return this.http.get(`/api/icons/${id}`).pipe(catchError((err, caught) => {
59
+ // TODO: this is probably better practice to insulate app layer from
60
+ // http errors
61
+ // if (err instanceof HttpErrorResponse) {
62
+ // if (err.status === 404) {
63
+ // return null
64
+ // }
65
+ // }
66
+ return throwError(err);
67
+ }));
68
+ }
69
+ fetchIconBySourceUrl(url) {
70
+ return this.http.get(`/api/icons`, {
71
+ params: new HttpParams().set('source_url', url)
72
+ });
73
+ }
74
+ fetchIconByReference(ref) {
75
+ if (ref.id) {
76
+ return this.fetchIconById(ref.id);
77
+ }
78
+ else if (ref.sourceUrl) {
79
+ return this.fetchIconBySourceUrl(ref.sourceUrl);
80
+ }
81
+ throw new Error('no icon id or source url');
82
+ }
83
+ registerIconUrl(url) {
84
+ throw new Error('unimplemented');
85
+ }
86
+ uploadIcon() {
87
+ throw new Error('unimplemented');
88
+ }
89
+ }
90
+ StaticIconService.ɵfac = function StaticIconService_Factory(t) { return new (t || StaticIconService)(ɵɵinject(HttpClient)); };
91
+ StaticIconService.ɵprov = ɵɵdefineInjectable({ token: StaticIconService, factory: StaticIconService.ɵfac, providedIn: 'root' });
92
+ /*@__PURE__*/ (function () { ɵsetClassMetadata(StaticIconService, [{
93
+ type: Injectable,
94
+ args: [{
95
+ providedIn: 'root'
96
+ }]
97
+ }], function () { return [{ type: HttpClient }]; }, null); })();
98
+
99
+ class StaticIconFormFieldComponent {
100
+ constructor(iconService, httpClient, sanitizer) {
101
+ this.iconService = iconService;
102
+ this.httpClient = httpClient;
103
+ this.sanitizer = sanitizer;
104
+ this.iconRef = null;
105
+ this.form = new FormGroup({
106
+ iconRefToken: new FormControl(null),
107
+ iconRefType: new FormControl(null, Validators.required)
108
+ });
109
+ this.onChange = (iconRef) => { };
110
+ this.onValidatorChange = () => { };
111
+ this.onTouched = () => { };
112
+ this.form.valueChanges.subscribe((x) => {
113
+ this.iconRef = iconRefForFormValue(x);
114
+ this.onChange(this.iconRef);
115
+ });
116
+ }
117
+ registerOnValidatorChange(fn) {
118
+ this.onValidatorChange = fn;
119
+ }
120
+ ngOnChanges(changes) { }
121
+ ngOnDestroy() { }
122
+ onSelectIcon() { }
123
+ writeValue(iconRef) {
124
+ this.iconRef = iconRef;
125
+ const formValue = formValueForIconRef(iconRef);
126
+ this.form.setValue(formValue, { emitEvent: false });
127
+ this.resolveIconRef();
128
+ }
129
+ registerOnChange(fn) {
130
+ this.onChange = fn;
131
+ }
132
+ registerOnTouched(fn) {
133
+ this.onTouched = fn;
134
+ }
135
+ setDisabledState(isDisabled) {
136
+ if (isDisabled) {
137
+ this.form.disable();
138
+ }
139
+ else {
140
+ this.form.enable();
141
+ }
142
+ }
143
+ validate(control) {
144
+ return this.form.errors;
145
+ }
146
+ resolveIconRef() {
147
+ if (!this.iconRef) {
148
+ this.icon = null;
149
+ return;
150
+ }
151
+ this.iconService.fetchIconByReference(this.iconRef).subscribe(x => {
152
+ this.icon = x;
153
+ if (!this.icon) {
154
+ return;
155
+ }
156
+ });
157
+ }
158
+ }
159
+ StaticIconFormFieldComponent.ɵfac = function StaticIconFormFieldComponent_Factory(t) { return new (t || StaticIconFormFieldComponent)(ɵɵdirectiveInject(StaticIconService), ɵɵdirectiveInject(HttpClient), ɵɵdirectiveInject(DomSanitizer)); };
160
+ StaticIconFormFieldComponent.ɵcmp = ɵɵdefineComponent({ type: StaticIconFormFieldComponent, selectors: [["mage-static-icon-form-field"]], features: [ɵɵProvidersFeature([
161
+ {
162
+ provide: NG_VALUE_ACCESSOR,
163
+ multi: true,
164
+ useExisting: StaticIconFormFieldComponent
165
+ },
166
+ {
167
+ provide: NG_VALIDATORS,
168
+ multi: true,
169
+ useExisting: StaticIconFormFieldComponent
170
+ },
171
+ ]), ɵɵNgOnChangesFeature], decls: 4, vars: 2, consts: [[3, "formGroup"], [1, "icon-image", 3, "src"], ["type", "hidden", "formControlName", "iconRefType"], ["type", "hidden", "formControlName", "iconRefToken"]], template: function StaticIconFormFieldComponent_Template(rf, ctx) { if (rf & 1) {
172
+ ɵɵelementStart(0, "div", 0);
173
+ ɵɵelement(1, "mage-xhr-img", 1);
174
+ ɵɵelement(2, "input", 2);
175
+ ɵɵelement(3, "input", 3);
176
+ ɵɵelementEnd();
177
+ } if (rf & 2) {
178
+ ɵɵproperty("formGroup", ctx.form);
179
+ ɵɵadvance(1);
180
+ ɵɵproperty("src", ctx.icon == null ? null : ctx.icon.contentPath);
181
+ } }, directives: [NgControlStatusGroup, FormGroupDirective, XhrImgComponent, DefaultValueAccessor, NgControlStatus, FormControlName], styles: [".icon-image[_ngcontent-%COMP%]{display:block;height:3em;width:3em}"] });
182
+ /*@__PURE__*/ (function () { ɵsetClassMetadata(StaticIconFormFieldComponent, [{
183
+ type: Component,
184
+ args: [{
185
+ selector: 'mage-static-icon-form-field',
186
+ templateUrl: './static-icon-form-field.component.html',
187
+ styleUrls: ['./static-icon-form-field.component.scss'],
188
+ providers: [
189
+ {
190
+ provide: NG_VALUE_ACCESSOR,
191
+ multi: true,
192
+ useExisting: StaticIconFormFieldComponent
193
+ },
194
+ {
195
+ provide: NG_VALIDATORS,
196
+ multi: true,
197
+ useExisting: StaticIconFormFieldComponent
198
+ },
199
+ ]
200
+ }]
201
+ }], function () { return [{ type: StaticIconService }, { type: HttpClient }, { type: DomSanitizer }]; }, null); })();
202
+ var IconRefType;
203
+ (function (IconRefType) {
204
+ IconRefType["Registered"] = "id";
205
+ IconRefType["SourceUrl"] = "sourceUrl";
206
+ })(IconRefType || (IconRefType = {}));
207
+ function iconRefForFormValue(x) {
208
+ if (!x.iconRefType) {
209
+ return null;
210
+ }
211
+ switch (x.iconRefType) {
212
+ case IconRefType.Registered:
213
+ return { [IconRefType.Registered]: x.iconRefToken };
214
+ case IconRefType.SourceUrl:
215
+ return { [IconRefType.SourceUrl]: x.iconRefToken };
216
+ default:
217
+ throw new Error('invalid icon ref type: ' + x.iconRefToken);
218
+ }
219
+ }
220
+ function formValueForIconRef(x) {
221
+ if (!x) {
222
+ return {
223
+ iconRefType: null,
224
+ iconRefToken: null
225
+ };
226
+ }
227
+ let iconRefType = null;
228
+ let iconRefToken = null;
229
+ if (x.hasOwnProperty(IconRefType.Registered)) {
230
+ iconRefType = IconRefType.Registered || null;
231
+ iconRefToken = x[IconRefType.Registered] || null;
232
+ }
233
+ else if (x.hasOwnProperty(IconRefType.SourceUrl)) {
234
+ iconRefType = IconRefType.SourceUrl || null;
235
+ iconRefToken = x[IconRefType.SourceUrl] || null;
236
+ }
237
+ return {
238
+ iconRefType,
239
+ iconRefToken
240
+ };
241
+ }
242
+
243
+ class StaticIconImgComponent {
244
+ constructor() { }
245
+ ngOnInit() {
246
+ }
247
+ ngOnChanges(changes) {
248
+ if (changes.iconRef) {
249
+ if (this.iconRef) {
250
+ this.iconPath = contentPathOfIcon(this.iconRef);
251
+ }
252
+ else {
253
+ this.iconPath = null;
254
+ }
255
+ }
256
+ }
257
+ }
258
+ StaticIconImgComponent.ɵfac = function StaticIconImgComponent_Factory(t) { return new (t || StaticIconImgComponent)(); };
259
+ StaticIconImgComponent.ɵcmp = ɵɵdefineComponent({ type: StaticIconImgComponent, selectors: [["mage-static-icon-img"]], inputs: { iconRef: "iconRef" }, features: [ɵɵNgOnChangesFeature], decls: 1, vars: 1, consts: [[3, "src"]], template: function StaticIconImgComponent_Template(rf, ctx) { if (rf & 1) {
260
+ ɵɵelement(0, "mage-xhr-img", 0);
261
+ } if (rf & 2) {
262
+ ɵɵproperty("src", ctx.iconPath);
263
+ } }, directives: [XhrImgComponent], encapsulation: 2 });
264
+ /*@__PURE__*/ (function () { ɵsetClassMetadata(StaticIconImgComponent, [{
265
+ type: Component,
266
+ args: [{
267
+ selector: 'mage-static-icon-img',
268
+ template: `<mage-xhr-img [src]="iconPath"></mage-xhr-img>`,
269
+ }]
270
+ }], function () { return []; }, { iconRef: [{
271
+ type: Input
272
+ }] }); })();
273
+
274
+ function StaticIconSelectComponent_mat_card_2_Template(rf, ctx) { if (rf & 1) {
275
+ ɵɵelementStart(0, "mat-card", 3);
276
+ ɵɵelementStart(1, "mat-card-header");
277
+ ɵɵelementStart(2, "mat-card-title");
278
+ ɵɵtext(3);
279
+ ɵɵelementEnd();
280
+ ɵɵelementEnd();
281
+ ɵɵelement(4, "img", 4);
282
+ ɵɵelementEnd();
283
+ } if (rf & 2) {
284
+ const icon_r1 = ctx.$implicit;
285
+ ɵɵadvance(3);
286
+ ɵɵtextInterpolate(icon_r1.title);
287
+ ɵɵadvance(1);
288
+ ɵɵproperty("src", icon_r1.path, ɵɵsanitizeUrl);
289
+ } }
290
+ class StaticIconSelectComponent {
291
+ constructor(iconService) {
292
+ this.iconService = iconService;
293
+ this.icons = null;
294
+ this.dataSource = new PagingDataSource(250, (paging) => {
295
+ return this.iconService.fetchIcons(paging);
296
+ });
297
+ }
298
+ ngOnInit() {
299
+ this.iconService.fetchIcons().subscribe(x => {
300
+ this.icons = x.items;
301
+ });
302
+ }
303
+ onBrowseForUploadIcon() {
304
+ throw new Error('unimplemented');
305
+ }
306
+ }
307
+ StaticIconSelectComponent.ɵfac = function StaticIconSelectComponent_Factory(t) { return new (t || StaticIconSelectComponent)(ɵɵdirectiveInject(StaticIconService)); };
308
+ StaticIconSelectComponent.ɵcmp = ɵɵdefineComponent({ type: StaticIconSelectComponent, selectors: [["static-icon-select"]], decls: 3, vars: 2, consts: [[1, "icon-select"], [3, "itemSize"], ["class", "icon-select-item", 4, "cdkVirtualFor", "cdkVirtualForOf"], [1, "icon-select-item"], ["mat-card-img", "", 3, "src"]], template: function StaticIconSelectComponent_Template(rf, ctx) { if (rf & 1) {
309
+ ɵɵelementStart(0, "div", 0);
310
+ ɵɵelementStart(1, "cdk-virtual-scroll-viewport", 1);
311
+ ɵɵtemplate(2, StaticIconSelectComponent_mat_card_2_Template, 5, 2, "mat-card", 2);
312
+ ɵɵelementEnd();
313
+ ɵɵelementEnd();
314
+ } if (rf & 2) {
315
+ ɵɵadvance(1);
316
+ ɵɵproperty("itemSize", 40);
317
+ ɵɵadvance(1);
318
+ ɵɵproperty("cdkVirtualForOf", ctx.icons);
319
+ } }, directives: [CdkVirtualScrollViewport, CdkFixedSizeVirtualScroll, CdkVirtualForOf, MatCard, MatCardHeader, MatCardTitle], styles: ["virtual-scroll[_ngcontent-%COMP%]{display:grid;grid-template-columns:repeat(3,33%);grid-auto-rows:min-content;grid-gap:0;justify-content:center;gap:0}"] });
320
+ /*@__PURE__*/ (function () { ɵsetClassMetadata(StaticIconSelectComponent, [{
321
+ type: Component,
322
+ args: [{
323
+ selector: 'static-icon-select',
324
+ templateUrl: './static-icon-select.component.html',
325
+ styleUrls: ['./static-icon-select.component.scss']
326
+ }]
327
+ }], function () { return [{ type: StaticIconService }]; }, null); })();
328
+
329
+ class StaticIconModule {
330
+ }
331
+ StaticIconModule.ɵmod = ɵɵdefineNgModule({ type: StaticIconModule });
332
+ StaticIconModule.ɵinj = ɵɵdefineInjector({ factory: function StaticIconModule_Factory(t) { return new (t || StaticIconModule)(); }, imports: [[
333
+ CommonModule,
334
+ FormsModule,
335
+ ReactiveFormsModule,
336
+ MatCardModule,
337
+ MageCommonModule,
338
+ ScrollingModule
339
+ ]] });
340
+ (function () { (typeof ngJitMode === "undefined" || ngJitMode) && ɵɵsetNgModuleScope(StaticIconModule, { declarations: [StaticIconFormFieldComponent,
341
+ StaticIconImgComponent,
342
+ StaticIconSelectComponent], imports: [CommonModule,
343
+ FormsModule,
344
+ ReactiveFormsModule,
345
+ MatCardModule,
346
+ MageCommonModule,
347
+ ScrollingModule], exports: [StaticIconFormFieldComponent,
348
+ StaticIconImgComponent,
349
+ StaticIconSelectComponent] }); })();
350
+ /*@__PURE__*/ (function () { ɵsetClassMetadata(StaticIconModule, [{
351
+ type: NgModule,
352
+ args: [{
353
+ imports: [
354
+ CommonModule,
355
+ FormsModule,
356
+ ReactiveFormsModule,
357
+ MatCardModule,
358
+ MageCommonModule,
359
+ ScrollingModule
360
+ ],
361
+ declarations: [
362
+ StaticIconFormFieldComponent,
363
+ StaticIconImgComponent,
364
+ StaticIconSelectComponent,
365
+ ],
366
+ exports: [
367
+ StaticIconFormFieldComponent,
368
+ StaticIconImgComponent,
369
+ StaticIconSelectComponent,
370
+ ]
371
+ }]
372
+ }], null, null); })();
373
+
374
+ /**
375
+ * Generated bundle index. Do not edit.
376
+ */
377
+
378
+ export { StaticIconFormFieldComponent, StaticIconImgComponent, StaticIconModule, StaticIconSelectComponent, StaticIconService, contentPathOfIcon };
379
+ //# sourceMappingURL=ngageoint-mage.web-core-lib-static-icon.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ngageoint-mage.web-core-lib-static-icon.js","sources":["ng://@ngageoint/mage.web-core-lib/static-icon/static-icon.model.ts","ng://@ngageoint/mage.web-core-lib/static-icon/static-icon.service.ts","ng://@ngageoint/mage.web-core-lib/static-icon/static-icon-form-field/static-icon-form-field.component.ts","ng://@ngageoint/mage.web-core-lib/static-icon/static-icon-form-field/static-icon-form-field.component.html","ng://@ngageoint/mage.web-core-lib/static-icon/static-icon-img/static-icon-img.component.ts","ng://@ngageoint/mage.web-core-lib/static-icon/static-icon-select/static-icon-select.component.html","ng://@ngageoint/mage.web-core-lib/static-icon/static-icon-select/static-icon-select.component.ts","ng://@ngageoint/mage.web-core-lib/static-icon/static-icon.module.ts","ng://@ngageoint/mage.web-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 http: 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.http.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.http.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, FormControl, FormGroup, 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: FormGroup = new FormGroup({\n iconRefToken: new FormControl(null),\n iconRefType: new FormControl(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":["i0.ɵɵelementStart","i0.ɵɵelement","i0.ɵɵelementEnd","i0.ɵɵproperty","i0.ɵɵadvance","i0.ɵɵtext","i0.ɵɵtextInterpolate","i0.ɵɵtemplate"],"mappings":"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"}