http-request-manager 18.1.1 → 18.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/lib/http-request-manager.module.mjs +4 -1
- package/esm2022/lib/http-request-services-demo/http-request-services-demo.component.mjs +10 -9
- package/esm2022/lib/http-request-services-demo/local-storage-signals-demo/local-storage-signals-demo.component.mjs +3 -3
- package/esm2022/lib/http-request-services-demo/request-signals-manager-demo/models/sample-ai-prompt.mjs +9 -0
- package/esm2022/lib/http-request-services-demo/request-signals-manager-demo/models/sample-client-info.mjs +12 -0
- package/esm2022/lib/http-request-services-demo/request-signals-manager-demo/models/sample-mapper-client-info.mjs +14 -0
- package/esm2022/lib/http-request-services-demo/request-signals-manager-demo/request-signals-manager-demo.component.mjs +336 -0
- package/esm2022/lib/services/request-manager-services/http-manager-signals.service.mjs +199 -0
- package/esm2022/lib/services/request-manager-services/index.mjs +2 -1
- package/esm2022/lib/services/request-manager-services/request-signals.service.mjs +170 -0
- package/fesm2022/http-request-manager.mjs +1745 -1044
- package/fesm2022/http-request-manager.mjs.map +1 -1
- package/http-request-manager-18.2.0.tgz +0 -0
- package/lib/http-request-manager.module.d.ts +24 -23
- package/lib/http-request-services-demo/http-request-services-demo.component.d.ts +8 -0
- package/lib/http-request-services-demo/request-signals-manager-demo/models/sample-ai-prompt.d.ts +8 -0
- package/lib/http-request-services-demo/request-signals-manager-demo/models/sample-client-info.d.ts +14 -0
- package/lib/http-request-services-demo/request-signals-manager-demo/models/sample-mapper-client-info.d.ts +14 -0
- package/lib/http-request-services-demo/request-signals-manager-demo/request-signals-manager-demo.component.d.ts +106 -0
- package/lib/services/request-manager-services/http-manager-signals.service.d.ts +38 -0
- package/lib/services/request-manager-services/index.d.ts +1 -0
- package/lib/services/request-manager-services/request-signals.service.d.ts +26 -0
- package/package.json +1 -1
- package/http-request-manager-18.1.1.tgz +0 -0
|
@@ -25,6 +25,7 @@ import { MatTableModule } from '@angular/material/table';
|
|
|
25
25
|
import { MatButtonToggleModule } from '@angular/material/button-toggle';
|
|
26
26
|
import { ProxyDebuggerInterceptor } from './interceptors/proxy-debugger.interceptor';
|
|
27
27
|
import { HttpRequestServicesDemoComponent } from './http-request-services-demo/http-request-services-demo.component';
|
|
28
|
+
import { RequestSignalsManagerDemoComponent } from './http-request-services-demo/request-signals-manager-demo/request-signals-manager-demo.component';
|
|
28
29
|
import { ConfigOptions } from './models';
|
|
29
30
|
import { CONFIG_SETTINGS_TOKEN } from './models/config-token.model';
|
|
30
31
|
import { HTTPManagerService, LocalStorageManagerService } from './services';
|
|
@@ -47,6 +48,7 @@ export class HttpRequestManagerModule {
|
|
|
47
48
|
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.2.13", ngImport: i0, type: HttpRequestManagerModule, declarations: [HttpRequestServicesDemoComponent,
|
|
48
49
|
RequestManagerStateDemoComponent,
|
|
49
50
|
RequestManagerDemoComponent,
|
|
51
|
+
RequestSignalsManagerDemoComponent,
|
|
50
52
|
LocalStorageDemoComponent,
|
|
51
53
|
LocalStorageSignalsDemoComponent], imports: [CommonModule,
|
|
52
54
|
ToastMessageDisplayModule,
|
|
@@ -152,6 +154,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
152
154
|
HttpRequestServicesDemoComponent,
|
|
153
155
|
RequestManagerStateDemoComponent,
|
|
154
156
|
RequestManagerDemoComponent,
|
|
157
|
+
RequestSignalsManagerDemoComponent,
|
|
155
158
|
LocalStorageDemoComponent,
|
|
156
159
|
LocalStorageSignalsDemoComponent,
|
|
157
160
|
// DatabaseDataDemoComponent,
|
|
@@ -180,4 +183,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
180
183
|
],
|
|
181
184
|
}]
|
|
182
185
|
}] });
|
|
183
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaHR0cC1yZXF1ZXN0LW1hbmFnZXIubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvaHR0cC1yZXF1ZXN0LW1hbmFnZXIvc3JjL2xpYi9odHRwLXJlcXVlc3QtbWFuYWdlci5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDekQsT0FBTyxFQUF1QixRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFHOUQsT0FBTyxFQUFFLDBCQUEwQixFQUFFLHlCQUF5QixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDdkYsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBRXRELE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLGtGQUFrRixDQUFDO0FBQy9ILE9BQU8sRUFBRSxnQ0FBZ0MsRUFBRSxNQUFNLDhGQUE4RixDQUFDO0FBQ2hKLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLDhFQUE4RSxDQUFDO0FBQ3pILGtIQUFrSDtBQUVsSCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFL0MsT0FBTyxFQUFFLFdBQVcsRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ3ZFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDekQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDN0QsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDbEUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxj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d0JBQ2hDLDZCQUE2QjtxQkFDOUI7b0JBQ0QsT0FBTyxFQUFFO3dCQUNQLGdDQUFnQzt3QkFDaEMsNkVBQTZFO3dCQUM3RSw2RUFBNkU7d0JBQzdFLFlBQVk7d0JBQ1oscUJBQXFCO3dCQUNyQixrQkFBa0I7d0JBQ2xCLGVBQWU7d0JBQ2YsY0FBYzt3QkFDZCxhQUFhO3dCQUNiLGNBQWM7d0JBQ2Qsb0JBQW9CO3dCQUNwQixvQkFBb0I7d0JBQ3BCLGdCQUFnQjtxQkFDakI7b0JBQ0QsU0FBUyxFQUFFO3dCQUNULEVBQUUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLFFBQVEsRUFBRSwwQkFBMEIsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFO3dCQUNqRixFQUFFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxRQUFRLEVBQUUseUJBQXlCLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRTt3QkFDaEYsRUFBRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsUUFBUSxFQUFFLHdCQUF3QixFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUU7d0JBQy9FLEVBQUUsT0FBTyxFQUFFLHFCQUFxQixFQUFFLFFBQVEsRUFBRSxhQUFhLENBQUMsS0FBSyxFQUFFLEVBQUU7d0JBQ25FLGtCQUFrQixFQUFFLDBCQUEwQjtxQkFDL0M7aUJBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBIVFRQX0lOVEVSQ0VQVE9SUyB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7IE1vZHVsZVdpdGhQcm92aWRlcnMsIE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cblxuaW1wb3J0IHsgV2l0aENyZWRlbnRpYWxzSW50ZXJjZXB0b3IsIFJlcXVlc3RIZWFkZXJzSW50ZXJjZXB0b3IgfSBmcm9tICcuL2ludGVyY2VwdG9ycyc7XG5pbXBvcnQgeyBUcmFuc2xhdGVNb2R1bGUgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcblxuaW1wb3J0IHsgUmVxdWVzdE1hbmFnZXJEZW1vQ29tcG9uZW50IH0gZnJvbSAnLi9odHRwLXJlcXVlc3Qtc2VydmljZXMtZGVtby9yZXF1ZXN0LW1hbmFnZXItZGVtby9yZXF1ZXN0LW1hbmFnZXItZGVtby5jb21wb25lbnQnO1xuaW1wb3J0IHsgUmVxdWVzdE1hbmFnZXJTdGF0ZURlbW9Db21wb25lbnQgfSBmcm9tICcuL2h0dHAtcmVxdWVzdC1zZXJ2aWNlcy1kZW1vL3JlcXVlc3QtbWFuYWdlci1zdGF0ZS1kZW1vL3JlcXVlc3QtbWFuYWdlci1zdGF0ZS1kZW1vLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBMb2NhbFN0b3JhZ2VEZW1vQ29tcG9uZW50IH0gZnJvbSAnLi9odHRwLXJlcXVlc3Qtc2VydmljZXMtZGVtby9sb2NhbC1zdG9yYWdlLWRlbW8vbG9jYWwtc3RvcmFnZS1kZW1vLmNvbXBvbmVudCc7XG4vLyBpbXBvcnQgeyBEYXRhYmFzZURhdGFEZW1vQ29tcG9uZW50IH0gZnJvbSAnLi9nbG9iYWwtZGF0YS1kZW1vL2RhdGFiYXNlLWRhdGEtZGVtby9kYXRhYmFzZS1kYXRhLWRlbW8uY29tcG9uZW50JztcblxuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcblxuaW1wb3J0IHsgRm9ybXNNb2R1bGUsIFJlYWN0aXZlRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBNYXRBdXRvY29tcGxldGVNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9hdXRvY29tcGxldGUnO1xuaW1wb3J0IHsgTWF0QnV0dG9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvYnV0dG9uJztcbmltcG9ydCB7IE1hdENoaXBzTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvY2hpcHMnO1xuaW1wb3J0IHsgTWF0RGl2aWRlck1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RpdmlkZXInO1xuaW1wb3J0IHsgTWF0Rm9ybUZpZWxkTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZm9ybS1maWVsZCc7XG5pbXBvcnQgeyBNYXRJY29uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvaWNvbic7XG5pbXBvcnQgeyBNYXRJbnB1dE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2lucHV0JztcbmltcG9ydCB7IE1hdFByb2dyZXNzQmFyTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvcHJvZ3Jlc3MtYmFyJztcbmltcG9ydCB7IE1hdFNlbGVjdE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3NlbGVjdCc7XG5pbXBvcnQgeyBNYXRTaWRlbmF2TW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvc2lkZW5hdic7XG5pbXBvcnQgeyBNYXRTbGlkZVRvZ2dsZU1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3NsaWRlLXRvZ2dsZSc7XG5pbXBvcnQgeyBNYXRNZW51TW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvbWVudSc7XG5pbXBvcnQgeyBNYXRUb29sYmFyTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvdG9vbGJhcic7XG5pbXBvcnQgeyBNYXRUYWJsZU1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3RhYmxlJztcbmltcG9ydCB7IE1hdEJ1dHRvblRvZ2dsZU1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2J1dHRvbi10b2dnbGUnO1xuaW1wb3J0IHsgUHJveHlEZWJ1Z2dlckludGVyY2VwdG9yIH0gZnJvbSAnLi9pbnRlcmNlcHRvcnMvcHJveHktZGVidWdnZXIuaW50ZXJjZXB0b3InO1xuXG5pbXBvcnQgeyBIdHRwUmVxdWVzdFNlcnZpY2VzRGVtb0NvbXBvbmVudCB9IGZyb20gJy4vaHR0cC1yZXF1ZXN0LXNlcnZpY2VzLWRlbW8vaHR0cC1yZXF1ZXN0LXNlcnZpY2VzLWRlbW8uY29tcG9uZW50JztcblxuaW1wb3J0IHsgQ29uZmlnT3B0aW9ucyB9IGZyb20gJy4vbW9kZWxzJztcbmltcG9ydCB7IENPTkZJR19TRVRUSU5HU19UT0tFTiB9IGZyb20gJy4vbW9kZWxzL2NvbmZpZy10b2tlbi5tb2RlbCc7XG5pbXBvcnQgeyBIVFRQTWFuYWdlclNlcnZpY2UsIExvY2FsU3RvcmFnZU1hbmFnZXJTZXJ2aWNlIH0gZnJvbSAnLi9zZXJ2aWNlcyc7XG5cbmltcG9ydCB7IEZpbGVEb3dubG9hZGVyTW9kdWxlIH0gZnJvbSAnLi9odHRwLXJlcXVlc3Qtc2VydmljZXMtZGVtby9yZXF1ZXN0LW1hbmFnZXItZGVtby9maWxlLWRvd25sb2FkZXIvZmlsZS1kb3dubG9hZC5tb2R1bGUnO1xuaW1wb3J0IHsgTG9jYWxTdG9yYWdlU2lnbmFsc0RlbW9Db21wb25lbnQgfSBmcm9tICcuL2h0dHAtcmVxdWVzdC1zZXJ2aWNlcy1kZW1vL2xvY2FsLXN0b3JhZ2Utc2lnbmFscy1kZW1vL2xvY2FsLXN0b3JhZ2Utc2lnbmFscy1kZW1vLmNvbXBvbmVudCc7XG5cbmltcG9ydCB7IFRvYXN0TWVzc2FnZURpc3BsYXlNb2R1bGUgfSBmcm9tICd0b2FzdC1tZXNzYWdlLWRpc3BsYXknO1xuXG5cbkBOZ01vZHVsZSh7XG4gIGltcG9ydHM6IFtcbiAgICBDb21tb25Nb2R1bGUsXG4gICAgVG9hc3RNZXNzYWdlRGlzcGxheU1vZHVsZSxcbiAgICBGb3Jtc01vZHVsZSxcbiAgICBSZWFjdGl2ZUZvcm1zTW9kdWxlLFxuICAgIE1hdEJ1dHRvbk1vZHVsZSxcbiAgICBNYXRTZWxlY3RNb2R1bGUsXG4gICAgTWF0Q2hpcHNNb2R1bGUsXG4gICAgTWF0TWVudU1vZHVsZSxcbiAgICBNYXRJY29uTW9kdWxlLFxuICAgIE1hdFRhYmxlTW9kdWxlLFxuICAgIE1hdEJ1dHRvblRvZ2dsZU1vZHVsZSxcbiAgICBNYXRBdXRvY29tcGxldGVNb2R1bGUsXG4gICAgTWF0UHJvZ3Jlc3NCYXJNb2R1bGUsXG4gICAgTWF0U2xpZGVUb2dnbGVNb2R1bGUsXG4gICAgTWF0RGl2aWRlck1vZHVsZSxcbiAgICBNYXRGb3JtRmllbGRNb2R1bGUsXG4gICAgTWF0SW5wdXRNb2R1bGUsXG4gICAgTWF0VG9vbGJhck1vZHVsZSxcbiAgICBNYXRTbGlkZVRvZ2dsZU1vZHVsZSxcbiAgICBUcmFuc2xhdGVNb2R1bGUuZm9yUm9vdCgpLFxuICAgIE1hdFNpZGVuYXZNb2R1bGUsXG4gICAgRmlsZURvd25sb2FkZXJNb2R1bGUsXG4gIF0sXG4gIGRlY2xhcmF0aW9uczogW1xuICAgIEh0dHBSZXF1ZXN0U2VydmljZXNEZW1vQ29tcG9uZW50LFxuICAgIFJlcXVlc3RNYW5hZ2VyU3RhdGVEZW1vQ29tcG9uZW50LFxuICAgIFJlcXVlc3RNYW5hZ2VyRGVtb0NvbXBvbmVudCxcbiAgICBMb2NhbFN0b3JhZ2VEZW1vQ29tcG9uZW50LFxuICAgIExvY2FsU3RvcmFnZVNpZ25hbHNEZW1vQ29tcG9uZW50LFxuICAgIC8vIERhdGFiYXNlRGF0YURlbW9Db21wb25lbnQsXG4gIF0sXG4gIGV4cG9ydHM6IFtcbiAgICBIdHRwUmVxdWVzdFNlcnZpY2VzRGVtb0NvbXBvbmVudCxcbiAgICAvLyBSZS1leHBvcnQgY29tbW9ubHkgdXNlZCBtb2R1bGVzIHNvIGRlbW8gY29tcG9uZW50IHRlbXBsYXRlcyBoYXZlIGFjY2VzcyB0b1xuICAgIC8vIEFuZ3VsYXIgY29tbW9uIHBpcGVzIGFuZCBNYXRlcmlhbCBjb21wb25lbnRzIHdoZW4gdGhlIGxpYnJhcnkgaXMgaW1wb3J0ZWQuXG4gICAgQ29tbW9uTW9kdWxlLFxuICAgIE1hdEJ1dHRvblRvZ2dsZU1vZHVsZSxcbiAgICBNYXRGb3JtRmllbGRNb2R1bGUsXG4gICAgTWF0U2VsZWN0TW9kdWxlLFxuICAgIE1hdElucHV0TW9kdWxlLFxuICAgIE1hdEljb25Nb2R1bGUsXG4gICAgTWF0VGFibGVNb2R1bGUsXG4gICAgTWF0U2xpZGVUb2dnbGVNb2R1bGUsXG4gICAgTWF0UHJvZ3Jlc3NCYXJNb2R1bGUsXG4gICAgTWF0RGl2aWRlck1vZHVsZSxcbiAgXSxcbiAgcHJvdmlkZXJzOiBbXG4gICAgeyBwcm92aWRlOiBIVFRQX0lOVEVSQ0VQVE9SUywgdXNlQ2xhc3M6IFdpdGhDcmVkZW50aWFsc0ludGVyY2VwdG9yLCBtdWx0aTogdHJ1ZSB9LFxuICAgIHsgcHJvdmlkZTogSFRUUF9JTlRFUkNFUFRPUlMsIHVzZUNsYXNzOiBSZXF1ZXN0SGVhZGVyc0ludGVyY2VwdG9yLCBtdWx0aTogdHJ1ZSB9LFxuICAgIHsgcHJvdmlkZTogSFRUUF9JTlRFUkNFUFRPUlMsIHVzZUNsYXNzOiBQcm94eURlYnVnZ2VySW50ZXJjZXB0b3IsIG11bHRpOiB0cnVlIH0sXG4gICAgeyBwcm92aWRlOiBDT05GSUdfU0VUVElOR1NfVE9LRU4sIHVzZVZhbHVlOiBDb25maWdPcHRpb25zLmFkYXB0KCkgfSxcbiAgICBIVFRQTWFuYWdlclNlcnZpY2UsIExvY2FsU3RvcmFnZU1hbmFnZXJTZXJ2aWNlXG4gIF0sXG59KVxuZXhwb3J0IGNsYXNzIEh0dHBSZXF1ZXN0TWFuYWdlck1vZHVsZSB7XG5cbiAgc3RhdGljIGZvclJvb3QoY29uZmlnOiBDb25maWdPcHRpb25zID0gQ29uZmlnT3B0aW9ucy5hZGFwdCgpKTogTW9kdWxlV2l0aFByb3ZpZGVyczxIdHRwUmVxdWVzdE1hbmFnZXJNb2R1bGU+IHtcbiAgICByZXR1cm4ge1xuICAgICAgbmdNb2R1bGU6IEh0dHBSZXF1ZXN0TWFuYWdlck1vZHVsZSxcbiAgICAgIHByb3ZpZGVyczogW1xuICAgICAgICB7IHByb3ZpZGU6IENPTkZJR19TRVRUSU5HU19UT0tFTiwgdXNlVmFsdWU6IENvbmZpZ09wdGlvbnMuYWRhcHQoY29uZmlnKSB9LFxuICAgICAgICBIVFRQTWFuYWdlclNlcnZpY2UsIExvY2FsU3RvcmFnZU1hbmFnZXJTZXJ2aWNlIC8vYWxsIHNlcnZpY2VzIHRoYXQgbmVlZCBhY2Nlc3MgdG8gY29uZmlnXG4gICAgICBdLFxuICAgIH07XG4gICAgfVxuXG59XG5cblxuIl19
|
|
186
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaHR0cC1yZXF1ZXN0LW1hbmFnZXIubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvaHR0cC1yZXF1ZXN0LW1hbmFnZXIvc3JjL2xpYi9odHRwLXJlcXVlc3QtbWFuYWdlci5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDekQsT0FBTyxFQUF1QixRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFHOUQsT0FBTyxFQUFFLDBCQUEwQixFQUFFLHlCQUF5QixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDdkYsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBRXRELE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLGtGQUFrRixDQUFDO0FBQy9ILE9BQU8sRUFBRSxnQ0FBZ0MsRUFBRSxNQUFNLDhGQUE4RixDQUFDO0FBQ2hKLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLDhFQUE4RSxDQUFDO0FBQ3pILGtIQUFrSDtBQUVsSCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFL0MsT0FBTyxFQUFFLFdBQVcsRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ3ZFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDekQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDN0QsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDbEUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxj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Qzt3QkFDaEMsZ0NBQWdDO3dCQUNoQywyQkFBMkI7d0JBQzNCLGtDQUFrQzt3QkFDbEMseUJBQXlCO3dCQUN6QixnQ0FBZ0M7d0JBQ2hDLDZCQUE2QjtxQkFDOUI7b0JBQ0QsT0FBTyxFQUFFO3dCQUNQLGdDQUFnQzt3QkFDaEMsNkVBQTZFO3dCQUM3RSw2RUFBNkU7d0JBQzdFLFlBQVk7d0JBQ1oscUJBQXFCO3dCQUNyQixrQkFBa0I7d0JBQ2xCLGVBQWU7d0JBQ2YsY0FBYzt3QkFDZCxhQUFhO3dCQUNiLGNBQWM7d0JBQ2Qsb0JBQW9CO3dCQUNwQixvQkFBb0I7d0JBQ3BCLGdCQUFnQjtxQkFDakI7b0JBQ0QsU0FBUyxFQUFFO3dCQUNULEVBQUUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLFFBQVEsRUFBRSwwQkFBMEIsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFO3dCQUNqRixFQUFFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxRQUFRLEVBQUUseUJBQXlCLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRTt3QkFDaEYsRUFBRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsUUFBUSxFQUFFLHdCQUF3QixFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUU7d0JBQy9FLEVBQUUsT0FBTyxFQUFFLHFCQUFxQixFQUFFLFFBQVEsRUFBRSxhQUFhLENBQUMsS0FBSyxFQUFFLEVBQUU7d0JBQ25FLGtCQUFrQixFQUFFLDBCQUEwQjtxQkFDL0M7aUJBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBIVFRQX0lOVEVSQ0VQVE9SUyB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7IE1vZHVsZVdpdGhQcm92aWRlcnMsIE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cblxuaW1wb3J0IHsgV2l0aENyZWRlbnRpYWxzSW50ZXJjZXB0b3IsIFJlcXVlc3RIZWFkZXJzSW50ZXJjZXB0b3IgfSBmcm9tICcuL2ludGVyY2VwdG9ycyc7XG5pbXBvcnQgeyBUcmFuc2xhdGVNb2R1bGUgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcblxuaW1wb3J0IHsgUmVxdWVzdE1hbmFnZXJEZW1vQ29tcG9uZW50IH0gZnJvbSAnLi9odHRwLXJlcXVlc3Qtc2VydmljZXMtZGVtby9yZXF1ZXN0LW1hbmFnZXItZGVtby9yZXF1ZXN0LW1hbmFnZXItZGVtby5jb21wb25lbnQnO1xuaW1wb3J0IHsgUmVxdWVzdE1hbmFnZXJTdGF0ZURlbW9Db21wb25lbnQgfSBmcm9tICcuL2h0dHAtcmVxdWVzdC1zZXJ2aWNlcy1kZW1vL3JlcXVlc3QtbWFuYWdlci1zdGF0ZS1kZW1vL3JlcXVlc3QtbWFuYWdlci1zdGF0ZS1kZW1vLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBMb2NhbFN0b3JhZ2VEZW1vQ29tcG9uZW50IH0gZnJvbSAnLi9odHRwLXJlcXVlc3Qtc2VydmljZXMtZGVtby9sb2NhbC1zdG9yYWdlLWRlbW8vbG9jYWwtc3RvcmFnZS1kZW1vLmNvbXBvbmVudCc7XG4vLyBpbXBvcnQgeyBEYXRhYmFzZURhdGFEZW1vQ29tcG9uZW50IH0gZnJvbSAnLi9nbG9iYWwtZGF0YS1kZW1vL2RhdGFiYXNlLWRhdGEtZGVtby9kYXRhYmFzZS1kYXRhLWRlbW8uY29tcG9uZW50JztcblxuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcblxuaW1wb3J0IHsgRm9ybXNNb2R1bGUsIFJlYWN0aXZlRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBNYXRBdXRvY29tcGxldGVNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9hdXRvY29tcGxldGUnO1xuaW1wb3J0IHsgTWF0QnV0dG9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvYnV0dG9uJztcbmltcG9ydCB7IE1hdENoaXBzTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvY2hpcHMnO1xuaW1wb3J0IHsgTWF0RGl2aWRlck1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RpdmlkZXInO1xuaW1wb3J0IHsgTWF0Rm9ybUZpZWxkTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZm9ybS1maWVsZCc7XG5pbXBvcnQgeyBNYXRJY29uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvaWNvbic7XG5pbXBvcnQgeyBNYXRJbnB1dE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2lucHV0JztcbmltcG9ydCB7IE1hdFByb2dyZXNzQmFyTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvcHJvZ3Jlc3MtYmFyJztcbmltcG9ydCB7IE1hdFNlbGVjdE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3NlbGVjdCc7XG5pbXBvcnQgeyBNYXRTaWRlbmF2TW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvc2lkZW5hdic7XG5pbXBvcnQgeyBNYXRTbGlkZVRvZ2dsZU1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3NsaWRlLXRvZ2dsZSc7XG5pbXBvcnQgeyBNYXRNZW51TW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvbWVudSc7XG5pbXBvcnQgeyBNYXRUb29sYmFyTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvdG9vbGJhcic7XG5pbXBvcnQgeyBNYXRUYWJsZU1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3RhYmxlJztcbmltcG9ydCB7IE1hdEJ1dHRvblRvZ2dsZU1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2J1dHRvbi10b2dnbGUnO1xuaW1wb3J0IHsgUHJveHlEZWJ1Z2dlckludGVyY2VwdG9yIH0gZnJvbSAnLi9pbnRlcmNlcHRvcnMvcHJveHktZGVidWdnZXIuaW50ZXJjZXB0b3InO1xuXG5pbXBvcnQgeyBIdHRwUmVxdWVzdFNlcnZpY2VzRGVtb0NvbXBvbmVudCB9IGZyb20gJy4vaHR0cC1yZXF1ZXN0LXNlcnZpY2VzLWRlbW8vaHR0cC1yZXF1ZXN0LXNlcnZpY2VzLWRlbW8uY29tcG9uZW50JztcbmltcG9ydCB7IFJlcXVlc3RTaWduYWxzTWFuYWdlckRlbW9Db21wb25lbnQgfSBmcm9tICcuL2h0dHAtcmVxdWVzdC1zZXJ2aWNlcy1kZW1vL3JlcXVlc3Qtc2lnbmFscy1tYW5hZ2VyLWRlbW8vcmVxdWVzdC1zaWduYWxzLW1hbmFnZXItZGVtby5jb21wb25lbnQnO1xuXG5pbXBvcnQgeyBDb25maWdPcHRpb25zIH0gZnJvbSAnLi9tb2RlbHMnO1xuaW1wb3J0IHsgQ09ORklHX1NFVFRJTkdTX1RPS0VOIH0gZnJvbSAnLi9tb2RlbHMvY29uZmlnLXRva2VuLm1vZGVsJztcbmltcG9ydCB7IEhUVFBNYW5hZ2VyU2VydmljZSwgTG9jYWxTdG9yYWdlTWFuYWdlclNlcnZpY2UgfSBmcm9tICcuL3NlcnZpY2VzJztcblxuaW1wb3J0IHsgRmlsZURvd25sb2FkZXJNb2R1bGUgfSBmcm9tICcuL2h0dHAtcmVxdWVzdC1zZXJ2aWNlcy1kZW1vL3JlcXVlc3QtbWFuYWdlci1kZW1vL2ZpbGUtZG93bmxvYWRlci9maWxlLWRvd25sb2FkLm1vZHVsZSc7XG5pbXBvcnQgeyBMb2NhbFN0b3JhZ2VTaWduYWxzRGVtb0NvbXBvbmVudCB9IGZyb20gJy4vaHR0cC1yZXF1ZXN0LXNlcnZpY2VzLWRlbW8vbG9jYWwtc3RvcmFnZS1zaWduYWxzLWRlbW8vbG9jYWwtc3RvcmFnZS1zaWduYWxzLWRlbW8uY29tcG9uZW50JztcblxuaW1wb3J0IHsgVG9hc3RNZXNzYWdlRGlzcGxheU1vZHVsZSB9IGZyb20gJ3RvYXN0LW1lc3NhZ2UtZGlzcGxheSc7XG5cblxuQE5nTW9kdWxlKHtcbiAgaW1wb3J0czogW1xuICAgIENvbW1vbk1vZHVsZSxcbiAgICBUb2FzdE1lc3NhZ2VEaXNwbGF5TW9kdWxlLFxuICAgIEZvcm1zTW9kdWxlLFxuICAgIFJlYWN0aXZlRm9ybXNNb2R1bGUsXG4gICAgTWF0QnV0dG9uTW9kdWxlLFxuICAgIE1hdFNlbGVjdE1vZHVsZSxcbiAgICBNYXRDaGlwc01vZHVsZSxcbiAgICBNYXRNZW51TW9kdWxlLFxuICAgIE1hdEljb25Nb2R1bGUsXG4gICAgTWF0VGFibGVNb2R1bGUsXG4gICAgTWF0QnV0dG9uVG9nZ2xlTW9kdWxlLFxuICAgIE1hdEF1dG9jb21wbGV0ZU1vZHVsZSxcbiAgICBNYXRQcm9ncmVzc0Jhck1vZHVsZSxcbiAgICBNYXRTbGlkZVRvZ2dsZU1vZHVsZSxcbiAgICBNYXREaXZpZGVyTW9kdWxlLFxuICAgIE1hdEZvcm1GaWVsZE1vZHVsZSxcbiAgICBNYXRJbnB1dE1vZHVsZSxcbiAgICBNYXRUb29sYmFyTW9kdWxlLFxuICAgIE1hdFNsaWRlVG9nZ2xlTW9kdWxlLFxuICAgIFRyYW5zbGF0ZU1vZHVsZS5mb3JSb290KCksXG4gICAgTWF0U2lkZW5hdk1vZHVsZSxcbiAgICBGaWxlRG93bmxvYWRlck1vZHVsZSxcbiAgXSxcbiAgZGVjbGFyYXRpb25zOiBbXG4gICAgSHR0cFJlcXVlc3RTZXJ2aWNlc0RlbW9Db21wb25lbnQsXG4gICAgUmVxdWVzdE1hbmFnZXJTdGF0ZURlbW9Db21wb25lbnQsXG4gICAgUmVxdWVzdE1hbmFnZXJEZW1vQ29tcG9uZW50LFxuICAgIFJlcXVlc3RTaWduYWxzTWFuYWdlckRlbW9Db21wb25lbnQsXG4gICAgTG9jYWxTdG9yYWdlRGVtb0NvbXBvbmVudCxcbiAgICBMb2NhbFN0b3JhZ2VTaWduYWxzRGVtb0NvbXBvbmVudCxcbiAgICAvLyBEYXRhYmFzZURhdGFEZW1vQ29tcG9uZW50LFxuICBdLFxuICBleHBvcnRzOiBbXG4gICAgSHR0cFJlcXVlc3RTZXJ2aWNlc0RlbW9Db21wb25lbnQsXG4gICAgLy8gUmUtZXhwb3J0IGNvbW1vbmx5IHVzZWQgbW9kdWxlcyBzbyBkZW1vIGNvbXBvbmVudCB0ZW1wbGF0ZXMgaGF2ZSBhY2Nlc3MgdG9cbiAgICAvLyBBbmd1bGFyIGNvbW1vbiBwaXBlcyBhbmQgTWF0ZXJpYWwgY29tcG9uZW50cyB3aGVuIHRoZSBsaWJyYXJ5IGlzIGltcG9ydGVkLlxuICAgIENvbW1vbk1vZHVsZSxcbiAgICBNYXRCdXR0b25Ub2dnbGVNb2R1bGUsXG4gICAgTWF0Rm9ybUZpZWxkTW9kdWxlLFxuICAgIE1hdFNlbGVjdE1vZHVsZSxcbiAgICBNYXRJbnB1dE1vZHVsZSxcbiAgICBNYXRJY29uTW9kdWxlLFxuICAgIE1hdFRhYmxlTW9kdWxlLFxuICAgIE1hdFNsaWRlVG9nZ2xlTW9kdWxlLFxuICAgIE1hdFByb2dyZXNzQmFyTW9kdWxlLFxuICAgIE1hdERpdmlkZXJNb2R1bGUsXG4gIF0sXG4gIHByb3ZpZGVyczogW1xuICAgIHsgcHJvdmlkZTogSFRUUF9JTlRFUkNFUFRPUlMsIHVzZUNsYXNzOiBXaXRoQ3JlZGVudGlhbHNJbnRlcmNlcHRvciwgbXVsdGk6IHRydWUgfSxcbiAgICB7IHByb3ZpZGU6IEhUVFBfSU5URVJDRVBUT1JTLCB1c2VDbGFzczogUmVxdWVzdEhlYWRlcnNJbnRlcmNlcHRvciwgbXVsdGk6IHRydWUgfSxcbiAgICB7IHByb3ZpZGU6IEhUVFBfSU5URVJDRVBUT1JTLCB1c2VDbGFzczogUHJveHlEZWJ1Z2dlckludGVyY2VwdG9yLCBtdWx0aTogdHJ1ZSB9LFxuICAgIHsgcHJvdmlkZTogQ09ORklHX1NFVFRJTkdTX1RPS0VOLCB1c2VWYWx1ZTogQ29uZmlnT3B0aW9ucy5hZGFwdCgpIH0sXG4gICAgSFRUUE1hbmFnZXJTZXJ2aWNlLCBMb2NhbFN0b3JhZ2VNYW5hZ2VyU2VydmljZVxuICBdLFxufSlcbmV4cG9ydCBjbGFzcyBIdHRwUmVxdWVzdE1hbmFnZXJNb2R1bGUge1xuXG4gIHN0YXRpYyBmb3JSb290KGNvbmZpZzogQ29uZmlnT3B0aW9ucyA9IENvbmZpZ09wdGlvbnMuYWRhcHQoKSk6IE1vZHVsZVdpdGhQcm92aWRlcnM8SHR0cFJlcXVlc3RNYW5hZ2VyTW9kdWxlPiB7XG4gICAgcmV0dXJuIHtcbiAgICAgIG5nTW9kdWxlOiBIdHRwUmVxdWVzdE1hbmFnZXJNb2R1bGUsXG4gICAgICBwcm92aWRlcnM6IFtcbiAgICAgICAgeyBwcm92aWRlOiBDT05GSUdfU0VUVElOR1NfVE9LRU4sIHVzZVZhbHVlOiBDb25maWdPcHRpb25zLmFkYXB0KGNvbmZpZykgfSxcbiAgICAgICAgSFRUUE1hbmFnZXJTZXJ2aWNlLCBMb2NhbFN0b3JhZ2VNYW5hZ2VyU2VydmljZSAvL2FsbCBzZXJ2aWNlcyB0aGF0IG5lZWQgYWNjZXNzIHRvIGNvbmZpZ1xuICAgICAgXSxcbiAgICB9O1xuICAgIH1cblxufVxuXG5cbiJdfQ==
|
|
@@ -8,19 +8,20 @@ import * as i4 from "@angular/material/divider";
|
|
|
8
8
|
import * as i5 from "@angular/material/toolbar";
|
|
9
9
|
import * as i6 from "./request-manager-state-demo/request-manager-state-demo.component";
|
|
10
10
|
import * as i7 from "./request-manager-demo/request-manager-demo.component";
|
|
11
|
-
import * as i8 from "./
|
|
12
|
-
import * as i9 from "./local-storage-
|
|
13
|
-
import * as i10 from "
|
|
11
|
+
import * as i8 from "./request-signals-manager-demo/request-signals-manager-demo.component";
|
|
12
|
+
import * as i9 from "./local-storage-demo/local-storage-demo.component";
|
|
13
|
+
import * as i10 from "./local-storage-signals-demo/local-storage-signals-demo.component";
|
|
14
|
+
import * as i11 from "../models/config-options.model";
|
|
14
15
|
export class HttpRequestServicesDemoComponent {
|
|
15
16
|
constructor(configOptions) {
|
|
16
17
|
this.configOptions = configOptions;
|
|
17
18
|
this.requestTypes = [
|
|
18
19
|
{ name: "Http Service", value: 'http_service' },
|
|
19
|
-
{ name: "Http Signals Service", value: '
|
|
20
|
+
{ name: "Http Signals Service", value: 'http_signals_service', new: true },
|
|
20
21
|
{ name: "Http State Service", value: 'http_state_service' },
|
|
21
22
|
{ name: "Database Service", value: 'database_service', divider: true, disabled: true },
|
|
22
23
|
{ name: "Local Storage Service", value: 'local_storage_service' },
|
|
23
|
-
{ name: "Local Signals Storage Service", value: 'local_storage_signals_service' },
|
|
24
|
+
{ name: "Local Signals Storage Service", value: 'local_storage_signals_service', new: true },
|
|
24
25
|
];
|
|
25
26
|
this.selectedService = this.requestTypes[0].value;
|
|
26
27
|
}
|
|
@@ -32,13 +33,13 @@ export class HttpRequestServicesDemoComponent {
|
|
|
32
33
|
this.selectedService = this.requestTypes[type].value;
|
|
33
34
|
}
|
|
34
35
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: HttpRequestServicesDemoComponent, deps: [{ token: CONFIG_SETTINGS_TOKEN }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
35
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: HttpRequestServicesDemoComponent, selector: "app-http-request-services-demo", ngImport: i0, template: "<mat-toolbar style=\"display:flex\">\n <div>Http Request Manager Services</div>\n <div style=\"flex:1\"></div>\n <button mat-stroked-button [matMenuTriggerFor]=\"menu\">Services</button>\n <mat-menu #menu=\"matMenu\">\n <ng-container *ngFor=\"let type of requestTypes; index as i\">\n <div\n *ngIf=\"type?.divider\"\n style=\"margin-top: .5rem; margin-bottom: .5rem;\"\n >\n <mat-divider></mat-divider>\n </div>\n <button\n mat-menu-item\n (click)=\"onSelected(i)\"\n [disabled]=\"type.disabled\"\n >\n {{ type.name }}\n </button>\n </ng-container>\n\n </mat-menu>\n</mat-toolbar>\n\n<span [ngSwitch]=\"selectedService\">\n <p *ngSwitchCase=\"'http_service'\">\n <ng-container *ngTemplateOutlet=\"HTTP_OPTIONS\"></ng-container>\n <app-request-manager-demo></app-request-manager-demo>\n </p>\n <p *ngSwitchCase=\"'http_signals_service'\">\n <ng-container *ngTemplateOutlet=\"HTTP_OPTIONS\"></ng-container>\n
|
|
36
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: HttpRequestServicesDemoComponent, selector: "app-http-request-services-demo", ngImport: i0, template: "<mat-toolbar style=\"display:flex\">\n <div>Http Request Manager Services</div>\n <div style=\"flex:1\"></div>\n <button mat-stroked-button [matMenuTriggerFor]=\"menu\">Services</button>\n <mat-menu #menu=\"matMenu\">\n <ng-container *ngFor=\"let type of requestTypes; index as i\">\n <div\n *ngIf=\"type?.divider\"\n style=\"margin-top: .5rem; margin-bottom: .5rem;\"\n >\n <mat-divider></mat-divider>\n </div>\n <button\n mat-menu-item\n (click)=\"onSelected(i)\"\n [disabled]=\"type.disabled\"\n >\n {{ type.name }}\n </button>\n </ng-container>\n\n </mat-menu>\n</mat-toolbar>\n\n<span [ngSwitch]=\"selectedService\">\n <p *ngSwitchCase=\"'http_service'\">\n <ng-container *ngTemplateOutlet=\"HTTP_OPTIONS\"></ng-container>\n <app-request-manager-demo></app-request-manager-demo>\n </p>\n <p *ngSwitchCase=\"'http_signals_service'\">\n <ng-container *ngTemplateOutlet=\"HTTP_OPTIONS\"></ng-container>\n <app-request-signals-manager-demo></app-request-signals-manager-demo>\n </p>\n <p *ngSwitchCase=\"'http_state_service'\">\n <ng-container *ngTemplateOutlet=\"HTTP_OPTIONS\"></ng-container>\n <app-request-manager-state-demo></app-request-manager-state-demo>\n </p>\n <p *ngSwitchCase=\"'database_service'\">\n <!-- <app-database-data-demo></app-database-data-demo> -->\n </p>\n <p *ngSwitchCase=\"'local_storage_service'\">\n <ng-container *ngTemplateOutlet=\"LOCAL_OPTIONS\"></ng-container>\n <app-local-storage-demo></app-local-storage-demo>\n </p>\n <p *ngSwitchCase=\"'local_storage_signals_service'\">\n <ng-container *ngTemplateOutlet=\"LOCAL_OPTIONS\"></ng-container>\n <app-local-storage-signals-demo></app-local-storage-signals-demo>\n </p>\n <p *ngSwitchDefault>\n Other\n </p>\n</span>\n\n<ng-template #HTTP_OPTIONS>\n <ng-container *ngIf=\"injectionOptions?.httpRequestOptions\">\n <div class=\"box\">\n <h3 style=\"font-weight: bold;\">Injection Token Detected - HTTP Options</h3>\n {{ injectionOptions?.httpRequestOptions| json }}\n </div>\n </ng-container>\n</ng-template>\n\n<ng-template #LOCAL_OPTIONS>\n <ng-container class=\"box\" *ngIf=\"injectionOptions?.LocalStorageOptions\">\n <div class=\"box\">\n <h3 style=\"font-weight: bold;\">Injection Token Detected - LocalStorage Options</h3>\n {{ injectionOptions?.LocalStorageOptions| json }}\n </div>\n </ng-container>\n</ng-template>\n\n\n", styles: [".box{padding:1rem;background-color:#f5f5f5;border:thin gray solid;margin-top:1rem}\n"], dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i1.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i1.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "directive", type: i1.NgSwitchDefault, selector: "[ngSwitchDefault]" }, { kind: "component", type: i2.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "component", type: i3.MatMenu, selector: "mat-menu", inputs: ["backdropClass", "aria-label", "aria-labelledby", "aria-describedby", "xPosition", "yPosition", "overlapTrigger", "hasBackdrop", "class", "classList"], outputs: ["closed", "close"], exportAs: ["matMenu"] }, { kind: "component", type: i3.MatMenuItem, selector: "[mat-menu-item]", inputs: ["role", "disabled", "disableRipple"], exportAs: ["matMenuItem"] }, { kind: "directive", type: i3.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", inputs: ["mat-menu-trigger-for", "matMenuTriggerFor", "matMenuTriggerData", "matMenuTriggerRestoreFocus"], outputs: ["menuOpened", "onMenuOpen", "menuClosed", "onMenuClose"], exportAs: ["matMenuTrigger"] }, { kind: "component", type: i4.MatDivider, selector: "mat-divider", inputs: ["vertical", "inset"] }, { kind: "component", type: i5.MatToolbar, selector: "mat-toolbar", inputs: ["color"], exportAs: ["matToolbar"] }, { kind: "component", type: i6.RequestManagerStateDemoComponent, selector: "app-request-manager-state-demo" }, { kind: "component", type: i7.RequestManagerDemoComponent, selector: "app-request-manager-demo" }, { kind: "component", type: i8.RequestSignalsManagerDemoComponent, selector: "app-request-signals-manager-demo" }, { kind: "component", type: i9.LocalStorageDemoComponent, selector: "app-local-storage-demo" }, { kind: "component", type: i10.LocalStorageSignalsDemoComponent, selector: "app-local-storage-signals-demo" }, { kind: "pipe", type: i1.JsonPipe, name: "json" }] }); }
|
|
36
37
|
}
|
|
37
38
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: HttpRequestServicesDemoComponent, decorators: [{
|
|
38
39
|
type: Component,
|
|
39
|
-
args: [{ selector: 'app-http-request-services-demo', template: "<mat-toolbar style=\"display:flex\">\n <div>Http Request Manager Services</div>\n <div style=\"flex:1\"></div>\n <button mat-stroked-button [matMenuTriggerFor]=\"menu\">Services</button>\n <mat-menu #menu=\"matMenu\">\n <ng-container *ngFor=\"let type of requestTypes; index as i\">\n <div\n *ngIf=\"type?.divider\"\n style=\"margin-top: .5rem; margin-bottom: .5rem;\"\n >\n <mat-divider></mat-divider>\n </div>\n <button\n mat-menu-item\n (click)=\"onSelected(i)\"\n [disabled]=\"type.disabled\"\n >\n {{ type.name }}\n </button>\n </ng-container>\n\n </mat-menu>\n</mat-toolbar>\n\n<span [ngSwitch]=\"selectedService\">\n <p *ngSwitchCase=\"'http_service'\">\n <ng-container *ngTemplateOutlet=\"HTTP_OPTIONS\"></ng-container>\n <app-request-manager-demo></app-request-manager-demo>\n </p>\n <p *ngSwitchCase=\"'http_signals_service'\">\n <ng-container *ngTemplateOutlet=\"HTTP_OPTIONS\"></ng-container>\n
|
|
40
|
-
}], ctorParameters: () => [{ type:
|
|
40
|
+
args: [{ selector: 'app-http-request-services-demo', template: "<mat-toolbar style=\"display:flex\">\n <div>Http Request Manager Services</div>\n <div style=\"flex:1\"></div>\n <button mat-stroked-button [matMenuTriggerFor]=\"menu\">Services</button>\n <mat-menu #menu=\"matMenu\">\n <ng-container *ngFor=\"let type of requestTypes; index as i\">\n <div\n *ngIf=\"type?.divider\"\n style=\"margin-top: .5rem; margin-bottom: .5rem;\"\n >\n <mat-divider></mat-divider>\n </div>\n <button\n mat-menu-item\n (click)=\"onSelected(i)\"\n [disabled]=\"type.disabled\"\n >\n {{ type.name }}\n </button>\n </ng-container>\n\n </mat-menu>\n</mat-toolbar>\n\n<span [ngSwitch]=\"selectedService\">\n <p *ngSwitchCase=\"'http_service'\">\n <ng-container *ngTemplateOutlet=\"HTTP_OPTIONS\"></ng-container>\n <app-request-manager-demo></app-request-manager-demo>\n </p>\n <p *ngSwitchCase=\"'http_signals_service'\">\n <ng-container *ngTemplateOutlet=\"HTTP_OPTIONS\"></ng-container>\n <app-request-signals-manager-demo></app-request-signals-manager-demo>\n </p>\n <p *ngSwitchCase=\"'http_state_service'\">\n <ng-container *ngTemplateOutlet=\"HTTP_OPTIONS\"></ng-container>\n <app-request-manager-state-demo></app-request-manager-state-demo>\n </p>\n <p *ngSwitchCase=\"'database_service'\">\n <!-- <app-database-data-demo></app-database-data-demo> -->\n </p>\n <p *ngSwitchCase=\"'local_storage_service'\">\n <ng-container *ngTemplateOutlet=\"LOCAL_OPTIONS\"></ng-container>\n <app-local-storage-demo></app-local-storage-demo>\n </p>\n <p *ngSwitchCase=\"'local_storage_signals_service'\">\n <ng-container *ngTemplateOutlet=\"LOCAL_OPTIONS\"></ng-container>\n <app-local-storage-signals-demo></app-local-storage-signals-demo>\n </p>\n <p *ngSwitchDefault>\n Other\n </p>\n</span>\n\n<ng-template #HTTP_OPTIONS>\n <ng-container *ngIf=\"injectionOptions?.httpRequestOptions\">\n <div class=\"box\">\n <h3 style=\"font-weight: bold;\">Injection Token Detected - HTTP Options</h3>\n {{ injectionOptions?.httpRequestOptions| json }}\n </div>\n </ng-container>\n</ng-template>\n\n<ng-template #LOCAL_OPTIONS>\n <ng-container class=\"box\" *ngIf=\"injectionOptions?.LocalStorageOptions\">\n <div class=\"box\">\n <h3 style=\"font-weight: bold;\">Injection Token Detected - LocalStorage Options</h3>\n {{ injectionOptions?.LocalStorageOptions| json }}\n </div>\n </ng-container>\n</ng-template>\n\n\n", styles: [".box{padding:1rem;background-color:#f5f5f5;border:thin gray solid;margin-top:1rem}\n"] }]
|
|
41
|
+
}], ctorParameters: () => [{ type: i11.ConfigOptions, decorators: [{
|
|
41
42
|
type: Inject,
|
|
42
43
|
args: [CONFIG_SETTINGS_TOKEN]
|
|
43
44
|
}] }] });
|
|
44
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
45
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaHR0cC1yZXF1ZXN0LXNlcnZpY2VzLWRlbW8uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvaHR0cC1yZXF1ZXN0LW1hbmFnZXIvc3JjL2xpYi9odHRwLXJlcXVlc3Qtc2VydmljZXMtZGVtby9odHRwLXJlcXVlc3Qtc2VydmljZXMtZGVtby5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9odHRwLXJlcXVlc3QtbWFuYWdlci9zcmMvbGliL2h0dHAtcmVxdWVzdC1zZXJ2aWNlcy1kZW1vL2h0dHAtcmVxdWVzdC1zZXJ2aWNlcy1kZW1vLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFVLE1BQU0sZUFBZSxDQUFDO0FBRTFELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLDhCQUE4QixDQUFDOzs7Ozs7Ozs7Ozs7O0FBUXJFLE1BQU0sT0FBTyxnQ0FBZ0M7SUFlM0MsWUFBbUQsYUFBNkI7UUFBN0Isa0JBQWEsR0FBYixhQUFhLENBQWdCO1FBYmhGLGlCQUFZLEdBQUc7WUFDYixFQUFFLElBQUksRUFBRSxjQUFjLEVBQUUsS0FBSyxFQUFFLGNBQWMsRUFBRTtZQUMvQyxFQUFFLElBQUksRUFBRSxzQkFBc0IsRUFBRSxLQUFLLEVBQUUsc0JBQXNCLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRTtZQUMxRSxFQUFFLElBQUksRUFBRSxvQkFBb0IsRUFBRSxLQUFLLEVBQUUsb0JBQW9CLEVBQUU7WUFDM0QsRUFBRSxJQUFJLEVBQUUsa0JBQWtCLEVBQUUsS0FBSyxFQUFFLGtCQUFrQixFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRTtZQUN0RixFQUFFLElBQUksRUFBRSx1QkFBdUIsRUFBRSxLQUFLLEVBQUUsdUJBQXVCLEVBQUU7WUFDakUsRUFBRSxJQUFJLEVBQUUsK0JBQStCLEVBQUUsS0FBSyxFQUFFLCtCQUErQixFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUU7U0FDN0YsQ0FBQTtRQUVELG9CQUFlLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUE7SUFJd0MsQ0FBQztJQUVyRixRQUFRO1FBQ04sSUFBRyxJQUFJLENBQUMsYUFBYTtZQUFFLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFBO0lBQ25FLENBQUM7SUFFRCxVQUFVLENBQUMsSUFBWTtRQUNyQixJQUFJLENBQUMsZUFBZSxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLENBQUMsS0FBSyxDQUFBO0lBQ3RELENBQUM7K0dBdkJVLGdDQUFnQyxrQkFldkIscUJBQXFCO21HQWY5QixnQ0FBZ0Msc0VDVjdDLGc4RUF3RUE7OzRGRDlEYSxnQ0FBZ0M7a0JBTDVDLFNBQVM7K0JBQ0UsZ0NBQWdDOzswQkFtQjdCLE1BQU07MkJBQUMscUJBQXFCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbmplY3QsIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBDT05GSUdfU0VUVElOR1NfVE9LRU4gfSBmcm9tICcuLi9tb2RlbHMvY29uZmlnLXRva2VuLm1vZGVsJztcbmltcG9ydCB7IENvbmZpZ09wdGlvbnMgfSBmcm9tICcuLi9tb2RlbHMvY29uZmlnLW9wdGlvbnMubW9kZWwnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdhcHAtaHR0cC1yZXF1ZXN0LXNlcnZpY2VzLWRlbW8nLFxuICB0ZW1wbGF0ZVVybDogJy4vaHR0cC1yZXF1ZXN0LXNlcnZpY2VzLWRlbW8uY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9odHRwLXJlcXVlc3Qtc2VydmljZXMtZGVtby5jb21wb25lbnQuc2NzcyddXG59KVxuZXhwb3J0IGNsYXNzIEh0dHBSZXF1ZXN0U2VydmljZXNEZW1vQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcblxuICByZXF1ZXN0VHlwZXMgPSBbXG4gICAgeyBuYW1lOiBcIkh0dHAgU2VydmljZVwiLCB2YWx1ZTogJ2h0dHBfc2VydmljZScgfSxcbiAgICB7IG5hbWU6IFwiSHR0cCBTaWduYWxzIFNlcnZpY2VcIiwgdmFsdWU6ICdodHRwX3NpZ25hbHNfc2VydmljZScsIG5ldzogdHJ1ZSB9LFxuICAgIHsgbmFtZTogXCJIdHRwIFN0YXRlIFNlcnZpY2VcIiwgdmFsdWU6ICdodHRwX3N0YXRlX3NlcnZpY2UnIH0sXG4gICAgeyBuYW1lOiBcIkRhdGFiYXNlIFNlcnZpY2VcIiwgdmFsdWU6ICdkYXRhYmFzZV9zZXJ2aWNlJywgZGl2aWRlcjogdHJ1ZSwgZGlzYWJsZWQ6IHRydWUgfSxcbiAgICB7IG5hbWU6IFwiTG9jYWwgU3RvcmFnZSBTZXJ2aWNlXCIsIHZhbHVlOiAnbG9jYWxfc3RvcmFnZV9zZXJ2aWNlJyB9LFxuICAgIHsgbmFtZTogXCJMb2NhbCBTaWduYWxzIFN0b3JhZ2UgU2VydmljZVwiLCB2YWx1ZTogJ2xvY2FsX3N0b3JhZ2Vfc2lnbmFsc19zZXJ2aWNlJywgbmV3OiB0cnVlIH0sXG4gIF1cblxuICBzZWxlY3RlZFNlcnZpY2UgPSB0aGlzLnJlcXVlc3RUeXBlc1swXS52YWx1ZVxuXG4gIGluamVjdGlvbk9wdGlvbnM/OiBDb25maWdPcHRpb25zXG5cbiAgY29uc3RydWN0b3IoQEluamVjdChDT05GSUdfU0VUVElOR1NfVE9LRU4pIHByaXZhdGUgY29uZmlnT3B0aW9ucz86IENvbmZpZ09wdGlvbnMpIHsgfVxuXG4gIG5nT25Jbml0KCkge1xuICAgIGlmKHRoaXMuY29uZmlnT3B0aW9ucykgdGhpcy5pbmplY3Rpb25PcHRpb25zID0gdGhpcy5jb25maWdPcHRpb25zXG4gIH1cblxuICBvblNlbGVjdGVkKHR5cGU6IG51bWJlcikge1xuICAgIHRoaXMuc2VsZWN0ZWRTZXJ2aWNlID0gdGhpcy5yZXF1ZXN0VHlwZXNbdHlwZV0udmFsdWVcbiAgfVxuXG59XG4iLCI8bWF0LXRvb2xiYXIgIHN0eWxlPVwiZGlzcGxheTpmbGV4XCI+XG4gIDxkaXY+SHR0cCBSZXF1ZXN0IE1hbmFnZXIgU2VydmljZXM8L2Rpdj5cbiAgPGRpdiBzdHlsZT1cImZsZXg6MVwiPjwvZGl2PlxuICA8YnV0dG9uIG1hdC1zdHJva2VkLWJ1dHRvbiBbbWF0TWVudVRyaWdnZXJGb3JdPVwibWVudVwiPlNlcnZpY2VzPC9idXR0b24+XG4gIDxtYXQtbWVudSAjbWVudT1cIm1hdE1lbnVcIj5cbiAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCB0eXBlIG9mIHJlcXVlc3RUeXBlczsgaW5kZXggYXMgaVwiPlxuICAgICAgPGRpdlxuICAgICAgICAqbmdJZj1cInR5cGU/LmRpdmlkZXJcIlxuICAgICAgICBzdHlsZT1cIm1hcmdpbi10b3A6IC41cmVtOyBtYXJnaW4tYm90dG9tOiAuNXJlbTtcIlxuICAgICAgPlxuICAgICAgICA8bWF0LWRpdmlkZXI+PC9tYXQtZGl2aWRlcj5cbiAgICAgIDwvZGl2PlxuICAgICAgPGJ1dHRvblxuICAgICAgICBtYXQtbWVudS1pdGVtXG4gICAgICAgIChjbGljayk9XCJvblNlbGVjdGVkKGkpXCJcbiAgICAgICAgW2Rpc2FibGVkXT1cInR5cGUuZGlzYWJsZWRcIlxuICAgICAgICA+XG4gICAgICAgIHt7IHR5cGUubmFtZSB9fVxuICAgICAgPC9idXR0b24+XG4gICAgPC9uZy1jb250YWluZXI+XG5cbiAgPC9tYXQtbWVudT5cbjwvbWF0LXRvb2xiYXI+XG5cbjxzcGFuIFtuZ1N3aXRjaF09XCJzZWxlY3RlZFNlcnZpY2VcIj5cbiAgPHAgKm5nU3dpdGNoQ2FzZT1cIidodHRwX3NlcnZpY2UnXCI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cIkhUVFBfT1BUSU9OU1wiPjwvbmctY29udGFpbmVyPlxuICAgIDxhcHAtcmVxdWVzdC1tYW5hZ2VyLWRlbW8+PC9hcHAtcmVxdWVzdC1tYW5hZ2VyLWRlbW8+XG4gIDwvcD5cbiAgPHAgKm5nU3dpdGNoQ2FzZT1cIidodHRwX3NpZ25hbHNfc2VydmljZSdcIj5cbiAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiSFRUUF9PUFRJT05TXCI+PC9uZy1jb250YWluZXI+XG4gICAgPGFwcC1yZXF1ZXN0LXNpZ25hbHMtbWFuYWdlci1kZW1vPjwvYXBwLXJlcXVlc3Qtc2lnbmFscy1tYW5hZ2VyLWRlbW8+XG4gIDwvcD5cbiAgPHAgKm5nU3dpdGNoQ2FzZT1cIidodHRwX3N0YXRlX3NlcnZpY2UnXCI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cIkhUVFBfT1BUSU9OU1wiPjwvbmctY29udGFpbmVyPlxuICAgIDxhcHAtcmVxdWVzdC1tYW5hZ2VyLXN0YXRlLWRlbW8+PC9hcHAtcmVxdWVzdC1tYW5hZ2VyLXN0YXRlLWRlbW8+XG4gIDwvcD5cbiAgPHAgKm5nU3dpdGNoQ2FzZT1cIidkYXRhYmFzZV9zZXJ2aWNlJ1wiPlxuICAgIDwhLS0gPGFwcC1kYXRhYmFzZS1kYXRhLWRlbW8+PC9hcHAtZGF0YWJhc2UtZGF0YS1kZW1vPiAtLT5cbiAgPC9wPlxuICA8cCAqbmdTd2l0Y2hDYXNlPVwiJ2xvY2FsX3N0b3JhZ2Vfc2VydmljZSdcIj5cbiAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiTE9DQUxfT1BUSU9OU1wiPjwvbmctY29udGFpbmVyPlxuICAgIDxhcHAtbG9jYWwtc3RvcmFnZS1kZW1vPjwvYXBwLWxvY2FsLXN0b3JhZ2UtZGVtbz5cbiAgPC9wPlxuICA8cCAqbmdTd2l0Y2hDYXNlPVwiJ2xvY2FsX3N0b3JhZ2Vfc2lnbmFsc19zZXJ2aWNlJ1wiPlxuICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJMT0NBTF9PUFRJT05TXCI+PC9uZy1jb250YWluZXI+XG4gICAgPGFwcC1sb2NhbC1zdG9yYWdlLXNpZ25hbHMtZGVtbz48L2FwcC1sb2NhbC1zdG9yYWdlLXNpZ25hbHMtZGVtbz5cbiAgPC9wPlxuICA8cCAqbmdTd2l0Y2hEZWZhdWx0PlxuICAgIE90aGVyXG4gIDwvcD5cbjwvc3Bhbj5cblxuPG5nLXRlbXBsYXRlICNIVFRQX09QVElPTlM+XG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCJpbmplY3Rpb25PcHRpb25zPy5odHRwUmVxdWVzdE9wdGlvbnNcIj5cbiAgICA8ZGl2IGNsYXNzPVwiYm94XCI+XG4gICAgICA8aDMgc3R5bGU9XCJmb250LXdlaWdodDogYm9sZDtcIj5JbmplY3Rpb24gVG9rZW4gRGV0ZWN0ZWQgLSBIVFRQIE9wdGlvbnM8L2gzPlxuICAgICAge3sgaW5qZWN0aW9uT3B0aW9ucz8uaHR0cFJlcXVlc3RPcHRpb25zfCBqc29uIH19XG4gICAgPC9kaXY+XG4gIDwvbmctY29udGFpbmVyPlxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICNMT0NBTF9PUFRJT05TPlxuICA8bmctY29udGFpbmVyIGNsYXNzPVwiYm94XCIgKm5nSWY9XCJpbmplY3Rpb25PcHRpb25zPy5Mb2NhbFN0b3JhZ2VPcHRpb25zXCI+XG4gICAgPGRpdiBjbGFzcz1cImJveFwiPlxuICAgICAgPGgzIHN0eWxlPVwiZm9udC13ZWlnaHQ6IGJvbGQ7XCI+SW5qZWN0aW9uIFRva2VuIERldGVjdGVkIC0gTG9jYWxTdG9yYWdlIE9wdGlvbnM8L2gzPlxuICAgICAge3sgaW5qZWN0aW9uT3B0aW9ucz8uTG9jYWxTdG9yYWdlT3B0aW9uc3wganNvbiB9fVxuICAgIDwvZGl2PlxuICA8L25nLWNvbnRhaW5lcj5cbjwvbmctdGVtcGxhdGU+XG5cblxuIl19
|
|
@@ -172,13 +172,13 @@ export class LocalStorageSignalsDemoComponent {
|
|
|
172
172
|
this.localStorageManagerService.resetStore();
|
|
173
173
|
}
|
|
174
174
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: LocalStorageSignalsDemoComponent, deps: [{ token: CONFIG_SETTINGS_TOKEN }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
175
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: LocalStorageSignalsDemoComponent, selector: "app-local-storage-signals-demo", ngImport: i0, template: "<div style=\"margin: 2rem;\">\n\n <div style=\"display: flex; gap: 1rem\">\n <h2 style=\"padding-top: .5rem; display: flex;\">\n <div style=\"padding-top: .5rem;\">Local Storage Manager</div>\n <div>\n <button mat-icon-button [matMenuTriggerFor]=\"menu\">\n <mat-icon>info</mat-icon>\n </button>\n </div>\n </h2>\n <span style=\"flex:1\"></span>\n <div style=\"padding-top: .25rem;\">\n <mat-button-toggle-group name=\"storage\" [formControl]=\"typeControl\" (change)=\"onCancel()\">\n <mat-button-toggle value=\"0\">Local Storage</mat-button-toggle>\n <mat-button-toggle value=\"1\">Session Storage</mat-button-toggle>\n </mat-button-toggle-group>\n </div>\n <div style=\"margin-top: .25rem;\">\n <button mat-icon-button (click)=\"onCreate()\">\n <mat-icon>add</mat-icon>\n </button>\n </div>\n </div>\n\n <ng-container *ngIf=\"storeProps?.storageName || storeProps?.storageSettingsName\">\n <div style=\"display: flex; gap: .5rem; flex-direction: column; border: gray solid thin; background-color: whitesmoke; padding: 1rem;\"\n >\n <div style=\"display: flex;\">\n <div *ngIf=\"storeProps?.storageSettingsName\" style=\"flex:1\">\n Database: <b>{{ storeProps?.storageSettingsName }}</b>\n </div>\n <div *ngIf=\"storeProps?.storageName\" style=\"flex:1\">\n Data: <b>{{ storeProps?.storageName }}</b>\n </div>\n </div>\n </div>\n </ng-container>\n\n <div style=\"margin-top: 2rem;\" [formGroup]=\"newStoreForm\" *ngIf=\"create; else LIST\">\n\n <h2>Create Store</h2>\n\n <div style=\"display: flex; gap: 1rem;\">\n <div style=\"flex:1\">\n <mat-form-field appearance=\"outline\">\n <mat-label>Store Name</mat-label>\n <input matInput placeholder=\"sample\" formControlName=\"name\">\n </mat-form-field>\n </div>\n <div>\n <mat-form-field appearance=\"outline\">\n <mat-label>Expires In...</mat-label>\n <mat-select formControlName=\"expiresIn\">\n <mat-option value=\"0\">None</mat-option>\n <mat-option value=\"30s\">30 Seconds</mat-option>\n <mat-option value=\"1mn\">1 Minute</mat-option>\n <mat-option value=\"1hr\">1 Hour</mat-option>\n <mat-option value=\"1d\">1 Day</mat-option>\n </mat-select>\n </mat-form-field>\n </div>\n <div style=\"margin-top: 1rem;\">\n <mat-slide-toggle formControlName=\"encrypted\">Encrypted</mat-slide-toggle>\n </div>\n </div>\n\n <div style=\"display: flex;\">\n <mat-form-field appearance=\"outline\" style=\"flex: 1;\">\n <mat-label>Data (Must be an Object or Array of any)</mat-label>\n <textarea matInput placeholder=\"[]\" formControlName=\"data\" #json></textarea>\n </mat-form-field>\n </div>\n <mat-error *ngIf=\"!isValidJSON(json.value)\">Not Valid Data</mat-error>\n\n <div style=\"display: flex;\">\n <span style=\"flex:1\"></span>\n <button mat-stroked-button (click)=\"onCreateStore()\" [disabled]=\"!(isValid && isValidJSON(json.value))\">\n Save Store\n </button>\n </div>\n\n </div>\n\n <ng-template #LIST>\n\n <div style=\"margin-top: 1rem;\">\n <mat-divider></mat-divider>\n </div>\n{{ settings() | json }}\n <div *ngIf=\"filterData(settings()) as data\">\n <ng-container *ngIf=\"data.length > 0; else NO_DATA\">\n <table mat-table [dataSource]=\"data\">\n <ng-container matColumnDef=\"name\">\n <th mat-header-cell *matHeaderCellDef> Store </th>\n <td mat-cell *matCellDef=\"let element\" style=\"font-weight: bold; text-transform: uppercase;\"> {{element.name}} </td>\n </ng-container>\n\n <ng-container matColumnDef=\"id\">\n <th mat-header-cell *matHeaderCellDef> ID </th>\n <td mat-cell *matCellDef=\"let element\"> {{element.id}} </td>\n </ng-container>\n\n <ng-container matColumnDef=\"encrypted\">\n <th mat-header-cell *matHeaderCellDef style=\"text-align: center;\"> Encrypted </th>\n <td mat-cell *matCellDef=\"let element\" style=\"text-align: center;\">\n <ng-container *ngIf=\"element.options.encrypted; else NO\">YES</ng-container>\n <ng-template #NO><span style=\"color:gray\">NO</span></ng-template>\n </td>\n </ng-container>\n\n <ng-container matColumnDef=\"expires\">\n <th mat-header-cell *matHeaderCellDef style=\"text-align: center;\"> Expires </th>\n <td mat-cell *matCellDef=\"let element\" style=\"text-align: center;\">\n <ng-container *ngIf=\"element.options.expires !== 0; else NO_DATA\">\n {{expiresIn(element.options.expires)}}\n </ng-container>\n <ng-template #NO_DATA>\n \u221E\n </ng-template>\n </td>\n </ng-container>\n\n <ng-container matColumnDef=\"option\">\n <th mat-header-cell *matHeaderCellDef></th>\n <td mat-cell *matCellDef=\"let element\" style=\"padding-right: 0;\">\n <div style=\"display: flex;justify-content: flex-end;\">\n <button mat-icon-button color=\"warn\" (click)=\"onDelete(element); $event.stopPropagation()\">\n <mat-icon>close</mat-icon>\n </button>\n </div>\n </td>\n </ng-container>\n\n <tr mat-header-row *matHeaderRowDef=\"displayedColumns\"></tr>\n <tr mat-row *matRowDef=\"let row; columns: displayedColumns;\" (click)=\"onSelectedRow(row)\"></tr>\n </table>\n </ng-container>\n\n <ng-template #NO_DATA>\n <h3 style=\"margin-top: 1rem;\">No Data</h3>\n </ng-template>\n\n <div *ngIf=\"storeSelected() as selectedStore\" style=\"margin-top: 2rem;\">\n <div style=\"margin-bottom: 1rem;\">\n <mat-divider></mat-divider>\n </div>\n\n <h3>STORE: <span style=\"font-weight: bold;\">{{ selectedStore.name | uppercase }}</span></h3>\n <h3>SETTINGS: {{ localStorageManagerService.setting(selectedStore.name) ? (localStorageManagerService.setting(selectedStore.name)() | json) : '{}' }}</h3>\n <div style=\"display: flex;\">\n <mat-form-field appearance=\"outline\" style=\"flex: 1;\">\n <mat-label>Data (Must be an Object or Array of any)</mat-label>\n <textarea matInput placeholder=\"[]\" #json [value]=\"selectedStoreData()\"></textarea>\n </mat-form-field>\n </div>\n <mat-error *ngIf=\"!isValidJSON(json.value)\">Not Valid Data</mat-error>\n\n <div style=\"display: flex; gap: .5rem;\">\n <span style=\"flex:1\"></span>\n <button mat-stroked-button (click)=\"onCancel()\">Cancel</button>\n <button mat-stroked-button (click)=\"onUpdate(selectedStore, json.value)\" [disabled]=\"!(isValidJSON(json.value))\">Update</button>\n </div>\n </div>\n </div>\n\n </ng-template>\n\n <div style=\"margin-top: 1rem;\">\n <mat-divider></mat-divider>\n </div>\n\n <div style=\"margin-top: 1rem;\">\n <button mat-stroked-button (click)=\"onReset()\">Delete All Stores</button>\n </div>\n\n</div>\n\n\n<mat-menu #menu=\"matMenu\">\n <div style=\"padding: 1rem;\">\n <p>Please note that the LocalStorage (encryption) and management of data is dependant on initializing the APP_ID</p>\n <p>Must provide a value for <b>APP_ID</b> in AppModule->Providers</p>\n <mat-divider></mat-divider>\n <div style=\"font-size: smaller; margin-top: .5rem;\">\n <p>Example: UUID (self.crypto.randomUUID() to generate)</p>\n <div style=\"background-color: whitesmoke; padding: 1rem;\">\n {<br>\n provide: APP_ID,<br>\n useValue: \"056991ac-3537-43ab-b5b9-83edf6554eff\",<br>\n }\n </div>\n </div>\n </div>\n</mat-menu>\n", styles: [".mat-mdc-row .mat-mdc-cell{border-bottom:1px solid transparent;border-top:1px solid transparent;cursor:pointer}.mat-mdc-row:hover .mat-mdc-cell{border-color:currentColor}.demo-row-is-clicked{font-weight:700}.mat-mdc-menu-panel.mat-mdc-menu-panel{max-width:280px!important}\n"], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i2.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "directive", type: i2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i2.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "component", type: i3.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "component", type: i3.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "component", type: i4.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i4.MatLabel, selector: "mat-label" }, { kind: "directive", type: i4.MatError, selector: "mat-error, [matError]", inputs: ["id"] }, { kind: "component", type: i5.MatSelect, selector: "mat-select", inputs: ["aria-describedby", "panelClass", "disabled", "disableRipple", "tabIndex", "hideSingleSelectionIndicator", "placeholder", "required", "multiple", "disableOptionCentering", "compareWith", "value", "aria-label", "aria-labelledby", "errorStateMatcher", "typeaheadDebounceInterval", "sortComparator", "id", "panelWidth"], outputs: ["openedChange", "opened", "closed", "selectionChange", "valueChange"], exportAs: ["matSelect"] }, { kind: "component", type: i6.MatOption, selector: "mat-option", inputs: ["value", "id", "disabled"], outputs: ["onSelectionChange"], exportAs: ["matOption"] }, { kind: "component", type: i7.MatMenu, selector: "mat-menu", inputs: ["backdropClass", "aria-label", "aria-labelledby", "aria-describedby", "xPosition", "yPosition", "overlapTrigger", "hasBackdrop", "class", "classList"], outputs: ["closed", "close"], exportAs: ["matMenu"] }, { kind: "directive", type: i7.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", inputs: ["mat-menu-trigger-for", "matMenuTriggerFor", "matMenuTriggerData", "matMenuTriggerRestoreFocus"], outputs: ["menuOpened", "onMenuOpen", "menuClosed", "onMenuClose"], exportAs: ["matMenuTrigger"] }, { kind: "component", type: i8.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i9.MatTable, selector: "mat-table, table[mat-table]", exportAs: ["matTable"] }, { kind: "directive", type: i9.MatHeaderCellDef, selector: "[matHeaderCellDef]" }, { kind: "directive", type: i9.MatHeaderRowDef, selector: "[matHeaderRowDef]", inputs: ["matHeaderRowDef", "matHeaderRowDefSticky"] }, { kind: "directive", type: i9.MatColumnDef, selector: "[matColumnDef]", inputs: ["matColumnDef"] }, { kind: "directive", type: i9.MatCellDef, selector: "[matCellDef]" }, { kind: "directive", type: i9.MatRowDef, selector: "[matRowDef]", inputs: ["matRowDefColumns", "matRowDefWhen"] }, { kind: "directive", type: i9.MatHeaderCell, selector: "mat-header-cell, th[mat-header-cell]" }, { kind: "directive", type: i9.MatCell, selector: "mat-cell, td[mat-cell]" }, { kind: "component", type: i9.MatHeaderRow, selector: "mat-header-row, tr[mat-header-row]", exportAs: ["matHeaderRow"] }, { kind: "component", type: i9.MatRow, selector: "mat-row, tr[mat-row]", exportAs: ["matRow"] }, { kind: "directive", type: i10.MatButtonToggleGroup, selector: "mat-button-toggle-group", inputs: ["appearance", "name", "vertical", "value", "multiple", "disabled", "disabledInteractive", "hideSingleSelectionIndicator", "hideMultipleSelectionIndicator"], outputs: ["valueChange", "change"], exportAs: ["matButtonToggleGroup"] }, { kind: "component", type: i10.MatButtonToggle, selector: "mat-button-toggle", inputs: ["aria-label", "aria-labelledby", "id", "name", "value", "tabIndex", "disableRipple", "appearance", "checked", "disabled", "disabledInteractive"], outputs: ["change"], exportAs: ["matButtonToggle"] }, { kind: "component", type: i11.MatSlideToggle, selector: "mat-slide-toggle", inputs: ["name", "id", "labelPosition", "aria-label", "aria-labelledby", "aria-describedby", "required", "color", "disabled", "disableRipple", "tabIndex", "checked", "hideIcon", "disabledInteractive"], outputs: ["change", "toggleChange"], exportAs: ["matSlideToggle"] }, { kind: "component", type: i12.MatDivider, selector: "mat-divider", inputs: ["vertical", "inset"] }, { kind: "directive", type: i13.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "pipe", type: i1.UpperCasePipe, name: "uppercase" }, { kind: "pipe", type: i1.JsonPipe, name: "json" }], encapsulation: i0.ViewEncapsulation.None }); }
|
|
175
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: LocalStorageSignalsDemoComponent, selector: "app-local-storage-signals-demo", ngImport: i0, template: "<div style=\"margin: 2rem;\">\n\n <div style=\"display: flex; gap: 1rem\">\n <h2 style=\"padding-top: .5rem; display: flex;\">\n <div style=\"padding-top: .5rem;\">\n <span>Local Storage Manager</span>\n <span style=\"margin-left: .5rem;\">\n <mat-icon color=\"accent\">fiber_new</mat-icon>\n </span>\n </div>\n <div>\n <button mat-icon-button [matMenuTriggerFor]=\"menu\">\n <mat-icon>info</mat-icon>\n </button>\n </div>\n </h2>\n <span style=\"flex:1\"></span>\n <div style=\"padding-top: .25rem;\">\n <mat-button-toggle-group name=\"storage\" [formControl]=\"typeControl\" (change)=\"onCancel()\">\n <mat-button-toggle value=\"0\">Local Storage</mat-button-toggle>\n <mat-button-toggle value=\"1\">Session Storage</mat-button-toggle>\n </mat-button-toggle-group>\n </div>\n <div style=\"margin-top: .25rem;\">\n <button mat-icon-button (click)=\"onCreate()\">\n <mat-icon>add</mat-icon>\n </button>\n </div>\n </div>\n\n <ng-container *ngIf=\"storeProps?.storageName || storeProps?.storageSettingsName\">\n <div style=\"display: flex; gap: .5rem; flex-direction: column; border: gray solid thin; background-color: whitesmoke; padding: 1rem;\"\n >\n <div style=\"display: flex;\">\n <div *ngIf=\"storeProps?.storageSettingsName\" style=\"flex:1\">\n Database: <b>{{ storeProps?.storageSettingsName }}</b>\n </div>\n <div *ngIf=\"storeProps?.storageName\" style=\"flex:1\">\n Data: <b>{{ storeProps?.storageName }}</b>\n </div>\n </div>\n </div>\n </ng-container>\n\n <div style=\"margin-top: 2rem;\" [formGroup]=\"newStoreForm\" *ngIf=\"create; else LIST\">\n\n <h2>Create Store</h2>\n\n <div style=\"display: flex; gap: 1rem;\">\n <div style=\"flex:1\">\n <mat-form-field appearance=\"outline\">\n <mat-label>Store Name</mat-label>\n <input matInput placeholder=\"sample\" formControlName=\"name\">\n </mat-form-field>\n </div>\n <div>\n <mat-form-field appearance=\"outline\">\n <mat-label>Expires In...</mat-label>\n <mat-select formControlName=\"expiresIn\">\n <mat-option value=\"0\">None</mat-option>\n <mat-option value=\"30s\">30 Seconds</mat-option>\n <mat-option value=\"1mn\">1 Minute</mat-option>\n <mat-option value=\"1hr\">1 Hour</mat-option>\n <mat-option value=\"1d\">1 Day</mat-option>\n </mat-select>\n </mat-form-field>\n </div>\n <div style=\"margin-top: 1rem;\">\n <mat-slide-toggle formControlName=\"encrypted\">Encrypted</mat-slide-toggle>\n </div>\n </div>\n\n <div style=\"display: flex;\">\n <mat-form-field appearance=\"outline\" style=\"flex: 1;\">\n <mat-label>Data (Must be an Object or Array of any)</mat-label>\n <textarea matInput placeholder=\"[]\" formControlName=\"data\" #json></textarea>\n </mat-form-field>\n </div>\n <mat-error *ngIf=\"!isValidJSON(json.value)\">Not Valid Data</mat-error>\n\n <div style=\"display: flex;\">\n <span style=\"flex:1\"></span>\n <button mat-stroked-button (click)=\"onCreateStore()\" [disabled]=\"!(isValid && isValidJSON(json.value))\">\n Save Store\n </button>\n </div>\n\n </div>\n\n <ng-template #LIST>\n\n <div style=\"margin-top: 1rem;\">\n <mat-divider></mat-divider>\n </div>\n{{ settings() | json }}\n <div *ngIf=\"filterData(settings()) as data\">\n <ng-container *ngIf=\"data.length > 0; else NO_DATA\">\n <table mat-table [dataSource]=\"data\">\n <ng-container matColumnDef=\"name\">\n <th mat-header-cell *matHeaderCellDef> Store </th>\n <td mat-cell *matCellDef=\"let element\" style=\"font-weight: bold; text-transform: uppercase;\"> {{element.name}} </td>\n </ng-container>\n\n <ng-container matColumnDef=\"id\">\n <th mat-header-cell *matHeaderCellDef> ID </th>\n <td mat-cell *matCellDef=\"let element\"> {{element.id}} </td>\n </ng-container>\n\n <ng-container matColumnDef=\"encrypted\">\n <th mat-header-cell *matHeaderCellDef style=\"text-align: center;\"> Encrypted </th>\n <td mat-cell *matCellDef=\"let element\" style=\"text-align: center;\">\n <ng-container *ngIf=\"element.options.encrypted; else NO\">YES</ng-container>\n <ng-template #NO><span style=\"color:gray\">NO</span></ng-template>\n </td>\n </ng-container>\n\n <ng-container matColumnDef=\"expires\">\n <th mat-header-cell *matHeaderCellDef style=\"text-align: center;\"> Expires </th>\n <td mat-cell *matCellDef=\"let element\" style=\"text-align: center;\">\n <ng-container *ngIf=\"element.options.expires !== 0; else NO_DATA\">\n {{expiresIn(element.options.expires)}}\n </ng-container>\n <ng-template #NO_DATA>\n \u221E\n </ng-template>\n </td>\n </ng-container>\n\n <ng-container matColumnDef=\"option\">\n <th mat-header-cell *matHeaderCellDef></th>\n <td mat-cell *matCellDef=\"let element\" style=\"padding-right: 0;\">\n <div style=\"display: flex;justify-content: flex-end;\">\n <button mat-icon-button color=\"warn\" (click)=\"onDelete(element); $event.stopPropagation()\">\n <mat-icon>close</mat-icon>\n </button>\n </div>\n </td>\n </ng-container>\n\n <tr mat-header-row *matHeaderRowDef=\"displayedColumns\"></tr>\n <tr mat-row *matRowDef=\"let row; columns: displayedColumns;\" (click)=\"onSelectedRow(row)\"></tr>\n </table>\n </ng-container>\n\n <ng-template #NO_DATA>\n <h3 style=\"margin-top: 1rem;\">No Data</h3>\n </ng-template>\n\n <div *ngIf=\"storeSelected() as selectedStore\" style=\"margin-top: 2rem;\">\n <div style=\"margin-bottom: 1rem;\">\n <mat-divider></mat-divider>\n </div>\n\n <h3>STORE: <span style=\"font-weight: bold;\">{{ selectedStore.name | uppercase }}</span></h3>\n <h3>SETTINGS: {{ localStorageManagerService.setting(selectedStore.name) ? (localStorageManagerService.setting(selectedStore.name)() | json) : '{}' }}</h3>\n <div style=\"display: flex;\">\n <mat-form-field appearance=\"outline\" style=\"flex: 1;\">\n <mat-label>Data (Must be an Object or Array of any)</mat-label>\n <textarea matInput placeholder=\"[]\" #json [value]=\"selectedStoreData()\"></textarea>\n </mat-form-field>\n </div>\n <mat-error *ngIf=\"!isValidJSON(json.value)\">Not Valid Data</mat-error>\n\n <div style=\"display: flex; gap: .5rem;\">\n <span style=\"flex:1\"></span>\n <button mat-stroked-button (click)=\"onCancel()\">Cancel</button>\n <button mat-stroked-button (click)=\"onUpdate(selectedStore, json.value)\" [disabled]=\"!(isValidJSON(json.value))\">Update</button>\n </div>\n </div>\n </div>\n\n </ng-template>\n\n <div style=\"margin-top: 1rem;\">\n <mat-divider></mat-divider>\n </div>\n\n <div style=\"margin-top: 1rem;\">\n <button mat-stroked-button (click)=\"onReset()\">Delete All Stores</button>\n </div>\n\n</div>\n\n\n<mat-menu #menu=\"matMenu\">\n <div style=\"padding: 1rem;\">\n <p>Please note that the LocalStorage (encryption) and management of data is dependant on initializing the APP_ID</p>\n <p>Must provide a value for <b>APP_ID</b> in AppModule->Providers</p>\n <mat-divider></mat-divider>\n <div style=\"font-size: smaller; margin-top: .5rem;\">\n <p>Example: UUID (self.crypto.randomUUID() to generate)</p>\n <div style=\"background-color: whitesmoke; padding: 1rem;\">\n {<br>\n provide: APP_ID,<br>\n useValue: \"056991ac-3537-43ab-b5b9-83edf6554eff\",<br>\n }\n </div>\n </div>\n </div>\n</mat-menu>\n", styles: [".mat-mdc-row .mat-mdc-cell{border-bottom:1px solid transparent;border-top:1px solid transparent;cursor:pointer}.mat-mdc-row:hover .mat-mdc-cell{border-color:currentColor}.demo-row-is-clicked{font-weight:700}.mat-mdc-menu-panel.mat-mdc-menu-panel{max-width:280px!important}\n"], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i2.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "directive", type: i2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i2.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "component", type: i3.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "component", type: i3.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "component", type: i4.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i4.MatLabel, selector: "mat-label" }, { kind: "directive", type: i4.MatError, selector: "mat-error, [matError]", inputs: ["id"] }, { kind: "component", type: i5.MatSelect, selector: "mat-select", inputs: ["aria-describedby", "panelClass", "disabled", "disableRipple", "tabIndex", "hideSingleSelectionIndicator", "placeholder", "required", "multiple", "disableOptionCentering", "compareWith", "value", "aria-label", "aria-labelledby", "errorStateMatcher", "typeaheadDebounceInterval", "sortComparator", "id", "panelWidth"], outputs: ["openedChange", "opened", "closed", "selectionChange", "valueChange"], exportAs: ["matSelect"] }, { kind: "component", type: i6.MatOption, selector: "mat-option", inputs: ["value", "id", "disabled"], outputs: ["onSelectionChange"], exportAs: ["matOption"] }, { kind: "component", type: i7.MatMenu, selector: "mat-menu", inputs: ["backdropClass", "aria-label", "aria-labelledby", "aria-describedby", "xPosition", "yPosition", "overlapTrigger", "hasBackdrop", "class", "classList"], outputs: ["closed", "close"], exportAs: ["matMenu"] }, { kind: "directive", type: i7.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", inputs: ["mat-menu-trigger-for", "matMenuTriggerFor", "matMenuTriggerData", "matMenuTriggerRestoreFocus"], outputs: ["menuOpened", "onMenuOpen", "menuClosed", "onMenuClose"], exportAs: ["matMenuTrigger"] }, { kind: "component", type: i8.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i9.MatTable, selector: "mat-table, table[mat-table]", exportAs: ["matTable"] }, { kind: "directive", type: i9.MatHeaderCellDef, selector: "[matHeaderCellDef]" }, { kind: "directive", type: i9.MatHeaderRowDef, selector: "[matHeaderRowDef]", inputs: ["matHeaderRowDef", "matHeaderRowDefSticky"] }, { kind: "directive", type: i9.MatColumnDef, selector: "[matColumnDef]", inputs: ["matColumnDef"] }, { kind: "directive", type: i9.MatCellDef, selector: "[matCellDef]" }, { kind: "directive", type: i9.MatRowDef, selector: "[matRowDef]", inputs: ["matRowDefColumns", "matRowDefWhen"] }, { kind: "directive", type: i9.MatHeaderCell, selector: "mat-header-cell, th[mat-header-cell]" }, { kind: "directive", type: i9.MatCell, selector: "mat-cell, td[mat-cell]" }, { kind: "component", type: i9.MatHeaderRow, selector: "mat-header-row, tr[mat-header-row]", exportAs: ["matHeaderRow"] }, { kind: "component", type: i9.MatRow, selector: "mat-row, tr[mat-row]", exportAs: ["matRow"] }, { kind: "directive", type: i10.MatButtonToggleGroup, selector: "mat-button-toggle-group", inputs: ["appearance", "name", "vertical", "value", "multiple", "disabled", "disabledInteractive", "hideSingleSelectionIndicator", "hideMultipleSelectionIndicator"], outputs: ["valueChange", "change"], exportAs: ["matButtonToggleGroup"] }, { kind: "component", type: i10.MatButtonToggle, selector: "mat-button-toggle", inputs: ["aria-label", "aria-labelledby", "id", "name", "value", "tabIndex", "disableRipple", "appearance", "checked", "disabled", "disabledInteractive"], outputs: ["change"], exportAs: ["matButtonToggle"] }, { kind: "component", type: i11.MatSlideToggle, selector: "mat-slide-toggle", inputs: ["name", "id", "labelPosition", "aria-label", "aria-labelledby", "aria-describedby", "required", "color", "disabled", "disableRipple", "tabIndex", "checked", "hideIcon", "disabledInteractive"], outputs: ["change", "toggleChange"], exportAs: ["matSlideToggle"] }, { kind: "component", type: i12.MatDivider, selector: "mat-divider", inputs: ["vertical", "inset"] }, { kind: "directive", type: i13.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "pipe", type: i1.UpperCasePipe, name: "uppercase" }, { kind: "pipe", type: i1.JsonPipe, name: "json" }], encapsulation: i0.ViewEncapsulation.None }); }
|
|
176
176
|
}
|
|
177
177
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: LocalStorageSignalsDemoComponent, decorators: [{
|
|
178
178
|
type: Component,
|
|
179
|
-
args: [{ selector: 'app-local-storage-signals-demo', encapsulation: ViewEncapsulation.None, template: "<div style=\"margin: 2rem;\">\n\n <div style=\"display: flex; gap: 1rem\">\n <h2 style=\"padding-top: .5rem; display: flex;\">\n <div style=\"padding-top: .5rem;\">Local Storage Manager</div>\n <div>\n <button mat-icon-button [matMenuTriggerFor]=\"menu\">\n <mat-icon>info</mat-icon>\n </button>\n </div>\n </h2>\n <span style=\"flex:1\"></span>\n <div style=\"padding-top: .25rem;\">\n <mat-button-toggle-group name=\"storage\" [formControl]=\"typeControl\" (change)=\"onCancel()\">\n <mat-button-toggle value=\"0\">Local Storage</mat-button-toggle>\n <mat-button-toggle value=\"1\">Session Storage</mat-button-toggle>\n </mat-button-toggle-group>\n </div>\n <div style=\"margin-top: .25rem;\">\n <button mat-icon-button (click)=\"onCreate()\">\n <mat-icon>add</mat-icon>\n </button>\n </div>\n </div>\n\n <ng-container *ngIf=\"storeProps?.storageName || storeProps?.storageSettingsName\">\n <div style=\"display: flex; gap: .5rem; flex-direction: column; border: gray solid thin; background-color: whitesmoke; padding: 1rem;\"\n >\n <div style=\"display: flex;\">\n <div *ngIf=\"storeProps?.storageSettingsName\" style=\"flex:1\">\n Database: <b>{{ storeProps?.storageSettingsName }}</b>\n </div>\n <div *ngIf=\"storeProps?.storageName\" style=\"flex:1\">\n Data: <b>{{ storeProps?.storageName }}</b>\n </div>\n </div>\n </div>\n </ng-container>\n\n <div style=\"margin-top: 2rem;\" [formGroup]=\"newStoreForm\" *ngIf=\"create; else LIST\">\n\n <h2>Create Store</h2>\n\n <div style=\"display: flex; gap: 1rem;\">\n <div style=\"flex:1\">\n <mat-form-field appearance=\"outline\">\n <mat-label>Store Name</mat-label>\n <input matInput placeholder=\"sample\" formControlName=\"name\">\n </mat-form-field>\n </div>\n <div>\n <mat-form-field appearance=\"outline\">\n <mat-label>Expires In...</mat-label>\n <mat-select formControlName=\"expiresIn\">\n <mat-option value=\"0\">None</mat-option>\n <mat-option value=\"30s\">30 Seconds</mat-option>\n <mat-option value=\"1mn\">1 Minute</mat-option>\n <mat-option value=\"1hr\">1 Hour</mat-option>\n <mat-option value=\"1d\">1 Day</mat-option>\n </mat-select>\n </mat-form-field>\n </div>\n <div style=\"margin-top: 1rem;\">\n <mat-slide-toggle formControlName=\"encrypted\">Encrypted</mat-slide-toggle>\n </div>\n </div>\n\n <div style=\"display: flex;\">\n <mat-form-field appearance=\"outline\" style=\"flex: 1;\">\n <mat-label>Data (Must be an Object or Array of any)</mat-label>\n <textarea matInput placeholder=\"[]\" formControlName=\"data\" #json></textarea>\n </mat-form-field>\n </div>\n <mat-error *ngIf=\"!isValidJSON(json.value)\">Not Valid Data</mat-error>\n\n <div style=\"display: flex;\">\n <span style=\"flex:1\"></span>\n <button mat-stroked-button (click)=\"onCreateStore()\" [disabled]=\"!(isValid && isValidJSON(json.value))\">\n Save Store\n </button>\n </div>\n\n </div>\n\n <ng-template #LIST>\n\n <div style=\"margin-top: 1rem;\">\n <mat-divider></mat-divider>\n </div>\n{{ settings() | json }}\n <div *ngIf=\"filterData(settings()) as data\">\n <ng-container *ngIf=\"data.length > 0; else NO_DATA\">\n <table mat-table [dataSource]=\"data\">\n <ng-container matColumnDef=\"name\">\n <th mat-header-cell *matHeaderCellDef> Store </th>\n <td mat-cell *matCellDef=\"let element\" style=\"font-weight: bold; text-transform: uppercase;\"> {{element.name}} </td>\n </ng-container>\n\n <ng-container matColumnDef=\"id\">\n <th mat-header-cell *matHeaderCellDef> ID </th>\n <td mat-cell *matCellDef=\"let element\"> {{element.id}} </td>\n </ng-container>\n\n <ng-container matColumnDef=\"encrypted\">\n <th mat-header-cell *matHeaderCellDef style=\"text-align: center;\"> Encrypted </th>\n <td mat-cell *matCellDef=\"let element\" style=\"text-align: center;\">\n <ng-container *ngIf=\"element.options.encrypted; else NO\">YES</ng-container>\n <ng-template #NO><span style=\"color:gray\">NO</span></ng-template>\n </td>\n </ng-container>\n\n <ng-container matColumnDef=\"expires\">\n <th mat-header-cell *matHeaderCellDef style=\"text-align: center;\"> Expires </th>\n <td mat-cell *matCellDef=\"let element\" style=\"text-align: center;\">\n <ng-container *ngIf=\"element.options.expires !== 0; else NO_DATA\">\n {{expiresIn(element.options.expires)}}\n </ng-container>\n <ng-template #NO_DATA>\n \u221E\n </ng-template>\n </td>\n </ng-container>\n\n <ng-container matColumnDef=\"option\">\n <th mat-header-cell *matHeaderCellDef></th>\n <td mat-cell *matCellDef=\"let element\" style=\"padding-right: 0;\">\n <div style=\"display: flex;justify-content: flex-end;\">\n <button mat-icon-button color=\"warn\" (click)=\"onDelete(element); $event.stopPropagation()\">\n <mat-icon>close</mat-icon>\n </button>\n </div>\n </td>\n </ng-container>\n\n <tr mat-header-row *matHeaderRowDef=\"displayedColumns\"></tr>\n <tr mat-row *matRowDef=\"let row; columns: displayedColumns;\" (click)=\"onSelectedRow(row)\"></tr>\n </table>\n </ng-container>\n\n <ng-template #NO_DATA>\n <h3 style=\"margin-top: 1rem;\">No Data</h3>\n </ng-template>\n\n <div *ngIf=\"storeSelected() as selectedStore\" style=\"margin-top: 2rem;\">\n <div style=\"margin-bottom: 1rem;\">\n <mat-divider></mat-divider>\n </div>\n\n <h3>STORE: <span style=\"font-weight: bold;\">{{ selectedStore.name | uppercase }}</span></h3>\n <h3>SETTINGS: {{ localStorageManagerService.setting(selectedStore.name) ? (localStorageManagerService.setting(selectedStore.name)() | json) : '{}' }}</h3>\n <div style=\"display: flex;\">\n <mat-form-field appearance=\"outline\" style=\"flex: 1;\">\n <mat-label>Data (Must be an Object or Array of any)</mat-label>\n <textarea matInput placeholder=\"[]\" #json [value]=\"selectedStoreData()\"></textarea>\n </mat-form-field>\n </div>\n <mat-error *ngIf=\"!isValidJSON(json.value)\">Not Valid Data</mat-error>\n\n <div style=\"display: flex; gap: .5rem;\">\n <span style=\"flex:1\"></span>\n <button mat-stroked-button (click)=\"onCancel()\">Cancel</button>\n <button mat-stroked-button (click)=\"onUpdate(selectedStore, json.value)\" [disabled]=\"!(isValidJSON(json.value))\">Update</button>\n </div>\n </div>\n </div>\n\n </ng-template>\n\n <div style=\"margin-top: 1rem;\">\n <mat-divider></mat-divider>\n </div>\n\n <div style=\"margin-top: 1rem;\">\n <button mat-stroked-button (click)=\"onReset()\">Delete All Stores</button>\n </div>\n\n</div>\n\n\n<mat-menu #menu=\"matMenu\">\n <div style=\"padding: 1rem;\">\n <p>Please note that the LocalStorage (encryption) and management of data is dependant on initializing the APP_ID</p>\n <p>Must provide a value for <b>APP_ID</b> in AppModule->Providers</p>\n <mat-divider></mat-divider>\n <div style=\"font-size: smaller; margin-top: .5rem;\">\n <p>Example: UUID (self.crypto.randomUUID() to generate)</p>\n <div style=\"background-color: whitesmoke; padding: 1rem;\">\n {<br>\n provide: APP_ID,<br>\n useValue: \"056991ac-3537-43ab-b5b9-83edf6554eff\",<br>\n }\n </div>\n </div>\n </div>\n</mat-menu>\n", styles: [".mat-mdc-row .mat-mdc-cell{border-bottom:1px solid transparent;border-top:1px solid transparent;cursor:pointer}.mat-mdc-row:hover .mat-mdc-cell{border-color:currentColor}.demo-row-is-clicked{font-weight:700}.mat-mdc-menu-panel.mat-mdc-menu-panel{max-width:280px!important}\n"] }]
|
|
179
|
+
args: [{ selector: 'app-local-storage-signals-demo', encapsulation: ViewEncapsulation.None, template: "<div style=\"margin: 2rem;\">\n\n <div style=\"display: flex; gap: 1rem\">\n <h2 style=\"padding-top: .5rem; display: flex;\">\n <div style=\"padding-top: .5rem;\">\n <span>Local Storage Manager</span>\n <span style=\"margin-left: .5rem;\">\n <mat-icon color=\"accent\">fiber_new</mat-icon>\n </span>\n </div>\n <div>\n <button mat-icon-button [matMenuTriggerFor]=\"menu\">\n <mat-icon>info</mat-icon>\n </button>\n </div>\n </h2>\n <span style=\"flex:1\"></span>\n <div style=\"padding-top: .25rem;\">\n <mat-button-toggle-group name=\"storage\" [formControl]=\"typeControl\" (change)=\"onCancel()\">\n <mat-button-toggle value=\"0\">Local Storage</mat-button-toggle>\n <mat-button-toggle value=\"1\">Session Storage</mat-button-toggle>\n </mat-button-toggle-group>\n </div>\n <div style=\"margin-top: .25rem;\">\n <button mat-icon-button (click)=\"onCreate()\">\n <mat-icon>add</mat-icon>\n </button>\n </div>\n </div>\n\n <ng-container *ngIf=\"storeProps?.storageName || storeProps?.storageSettingsName\">\n <div style=\"display: flex; gap: .5rem; flex-direction: column; border: gray solid thin; background-color: whitesmoke; padding: 1rem;\"\n >\n <div style=\"display: flex;\">\n <div *ngIf=\"storeProps?.storageSettingsName\" style=\"flex:1\">\n Database: <b>{{ storeProps?.storageSettingsName }}</b>\n </div>\n <div *ngIf=\"storeProps?.storageName\" style=\"flex:1\">\n Data: <b>{{ storeProps?.storageName }}</b>\n </div>\n </div>\n </div>\n </ng-container>\n\n <div style=\"margin-top: 2rem;\" [formGroup]=\"newStoreForm\" *ngIf=\"create; else LIST\">\n\n <h2>Create Store</h2>\n\n <div style=\"display: flex; gap: 1rem;\">\n <div style=\"flex:1\">\n <mat-form-field appearance=\"outline\">\n <mat-label>Store Name</mat-label>\n <input matInput placeholder=\"sample\" formControlName=\"name\">\n </mat-form-field>\n </div>\n <div>\n <mat-form-field appearance=\"outline\">\n <mat-label>Expires In...</mat-label>\n <mat-select formControlName=\"expiresIn\">\n <mat-option value=\"0\">None</mat-option>\n <mat-option value=\"30s\">30 Seconds</mat-option>\n <mat-option value=\"1mn\">1 Minute</mat-option>\n <mat-option value=\"1hr\">1 Hour</mat-option>\n <mat-option value=\"1d\">1 Day</mat-option>\n </mat-select>\n </mat-form-field>\n </div>\n <div style=\"margin-top: 1rem;\">\n <mat-slide-toggle formControlName=\"encrypted\">Encrypted</mat-slide-toggle>\n </div>\n </div>\n\n <div style=\"display: flex;\">\n <mat-form-field appearance=\"outline\" style=\"flex: 1;\">\n <mat-label>Data (Must be an Object or Array of any)</mat-label>\n <textarea matInput placeholder=\"[]\" formControlName=\"data\" #json></textarea>\n </mat-form-field>\n </div>\n <mat-error *ngIf=\"!isValidJSON(json.value)\">Not Valid Data</mat-error>\n\n <div style=\"display: flex;\">\n <span style=\"flex:1\"></span>\n <button mat-stroked-button (click)=\"onCreateStore()\" [disabled]=\"!(isValid && isValidJSON(json.value))\">\n Save Store\n </button>\n </div>\n\n </div>\n\n <ng-template #LIST>\n\n <div style=\"margin-top: 1rem;\">\n <mat-divider></mat-divider>\n </div>\n{{ settings() | json }}\n <div *ngIf=\"filterData(settings()) as data\">\n <ng-container *ngIf=\"data.length > 0; else NO_DATA\">\n <table mat-table [dataSource]=\"data\">\n <ng-container matColumnDef=\"name\">\n <th mat-header-cell *matHeaderCellDef> Store </th>\n <td mat-cell *matCellDef=\"let element\" style=\"font-weight: bold; text-transform: uppercase;\"> {{element.name}} </td>\n </ng-container>\n\n <ng-container matColumnDef=\"id\">\n <th mat-header-cell *matHeaderCellDef> ID </th>\n <td mat-cell *matCellDef=\"let element\"> {{element.id}} </td>\n </ng-container>\n\n <ng-container matColumnDef=\"encrypted\">\n <th mat-header-cell *matHeaderCellDef style=\"text-align: center;\"> Encrypted </th>\n <td mat-cell *matCellDef=\"let element\" style=\"text-align: center;\">\n <ng-container *ngIf=\"element.options.encrypted; else NO\">YES</ng-container>\n <ng-template #NO><span style=\"color:gray\">NO</span></ng-template>\n </td>\n </ng-container>\n\n <ng-container matColumnDef=\"expires\">\n <th mat-header-cell *matHeaderCellDef style=\"text-align: center;\"> Expires </th>\n <td mat-cell *matCellDef=\"let element\" style=\"text-align: center;\">\n <ng-container *ngIf=\"element.options.expires !== 0; else NO_DATA\">\n {{expiresIn(element.options.expires)}}\n </ng-container>\n <ng-template #NO_DATA>\n \u221E\n </ng-template>\n </td>\n </ng-container>\n\n <ng-container matColumnDef=\"option\">\n <th mat-header-cell *matHeaderCellDef></th>\n <td mat-cell *matCellDef=\"let element\" style=\"padding-right: 0;\">\n <div style=\"display: flex;justify-content: flex-end;\">\n <button mat-icon-button color=\"warn\" (click)=\"onDelete(element); $event.stopPropagation()\">\n <mat-icon>close</mat-icon>\n </button>\n </div>\n </td>\n </ng-container>\n\n <tr mat-header-row *matHeaderRowDef=\"displayedColumns\"></tr>\n <tr mat-row *matRowDef=\"let row; columns: displayedColumns;\" (click)=\"onSelectedRow(row)\"></tr>\n </table>\n </ng-container>\n\n <ng-template #NO_DATA>\n <h3 style=\"margin-top: 1rem;\">No Data</h3>\n </ng-template>\n\n <div *ngIf=\"storeSelected() as selectedStore\" style=\"margin-top: 2rem;\">\n <div style=\"margin-bottom: 1rem;\">\n <mat-divider></mat-divider>\n </div>\n\n <h3>STORE: <span style=\"font-weight: bold;\">{{ selectedStore.name | uppercase }}</span></h3>\n <h3>SETTINGS: {{ localStorageManagerService.setting(selectedStore.name) ? (localStorageManagerService.setting(selectedStore.name)() | json) : '{}' }}</h3>\n <div style=\"display: flex;\">\n <mat-form-field appearance=\"outline\" style=\"flex: 1;\">\n <mat-label>Data (Must be an Object or Array of any)</mat-label>\n <textarea matInput placeholder=\"[]\" #json [value]=\"selectedStoreData()\"></textarea>\n </mat-form-field>\n </div>\n <mat-error *ngIf=\"!isValidJSON(json.value)\">Not Valid Data</mat-error>\n\n <div style=\"display: flex; gap: .5rem;\">\n <span style=\"flex:1\"></span>\n <button mat-stroked-button (click)=\"onCancel()\">Cancel</button>\n <button mat-stroked-button (click)=\"onUpdate(selectedStore, json.value)\" [disabled]=\"!(isValidJSON(json.value))\">Update</button>\n </div>\n </div>\n </div>\n\n </ng-template>\n\n <div style=\"margin-top: 1rem;\">\n <mat-divider></mat-divider>\n </div>\n\n <div style=\"margin-top: 1rem;\">\n <button mat-stroked-button (click)=\"onReset()\">Delete All Stores</button>\n </div>\n\n</div>\n\n\n<mat-menu #menu=\"matMenu\">\n <div style=\"padding: 1rem;\">\n <p>Please note that the LocalStorage (encryption) and management of data is dependant on initializing the APP_ID</p>\n <p>Must provide a value for <b>APP_ID</b> in AppModule->Providers</p>\n <mat-divider></mat-divider>\n <div style=\"font-size: smaller; margin-top: .5rem;\">\n <p>Example: UUID (self.crypto.randomUUID() to generate)</p>\n <div style=\"background-color: whitesmoke; padding: 1rem;\">\n {<br>\n provide: APP_ID,<br>\n useValue: \"056991ac-3537-43ab-b5b9-83edf6554eff\",<br>\n }\n </div>\n </div>\n </div>\n</mat-menu>\n", styles: [".mat-mdc-row .mat-mdc-cell{border-bottom:1px solid transparent;border-top:1px solid transparent;cursor:pointer}.mat-mdc-row:hover .mat-mdc-cell{border-color:currentColor}.demo-row-is-clicked{font-weight:700}.mat-mdc-menu-panel.mat-mdc-menu-panel{max-width:280px!important}\n"] }]
|
|
180
180
|
}], ctorParameters: () => [{ type: i14.ConfigOptions, decorators: [{
|
|
181
181
|
type: Inject,
|
|
182
182
|
args: [CONFIG_SETTINGS_TOKEN]
|
|
183
183
|
}] }] });
|
|
184
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9jYWwtc3RvcmFnZS1zaWduYWxzLWRlbW8uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvaHR0cC1yZXF1ZXN0LW1hbmFnZXIvc3JjL2xpYi9odHRwLXJlcXVlc3Qtc2VydmljZXMtZGVtby9sb2NhbC1zdG9yYWdlLXNpZ25hbHMtZGVtby9sb2NhbC1zdG9yYWdlLXNpZ25hbHMtZGVtby5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9odHRwLXJlcXVlc3QtbWFuYWdlci9zcmMvbGliL2h0dHAtcmVxdWVzdC1zZXJ2aWNlcy1kZW1vL2xvY2FsLXN0b3JhZ2Utc2lnbmFscy1kZW1vL2xvY2FsLXN0b3JhZ2Utc2lnbmFscy1kZW1vLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBVSxpQkFBaUIsRUFBVSxNQUFNLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQy9HLE9BQU8sRUFBRSxpQ0FBaUMsRUFBRSxjQUFjLEVBQWlCLFdBQVcsRUFBRSxNQUFNLDhDQUE4QyxDQUFDO0FBQzdJLE9BQU8sRUFBRSxXQUFXLEVBQUUsVUFBVSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDekQsT0FBTyxFQUFzQyxZQUFZLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNsRixPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7OztBQVF4RSxNQUFNLE9BQU8sZ0NBQWdDO0lBSzNDLDJDQUEyQztJQUMzQyxJQUFJLElBQUk7UUFDTixPQUFPLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFD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Q0FBZ0MsaUJBRzNCLGlCQUFpQixDQUFDLElBQUk7OzBCQTJGeEIsTUFBTTsyQkFBQyxxQkFBcUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEluamVjdCwgaW5qZWN0LCBPbkluaXQsIFZpZXdFbmNhcHN1bGF0aW9uLCBlZmZlY3QsIHNpZ25hbCwgY29tcHV0ZWQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IExvY2FsU3RvcmFnZVNpZ25hbHNNYW5hZ2VyU2VydmljZSwgU2V0dGluZ09wdGlvbnMsIFN0b3JhZ2VPcHRpb24sIFN0b3JhZ2VUeXBlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvbG9jYWwtc3RvcmFnZS1tYW5hZ2VyLXNlcnZpY2UnO1xuaW1wb3J0IHsgRm9ybUJ1aWxkZXIsIFZhbGlkYXRvcnMgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBDb25maWdPcHRpb25zLCBMb2NhbFN0b3JhZ2VPcHRpb25zLCBVdGlsc1NlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcyc7XG5pbXBvcnQgeyBDT05GSUdfU0VUVElOR1NfVE9LRU4gfSBmcm9tICcuLi8uLi9tb2RlbHMvY29uZmlnLXRva2VuLm1vZGVsJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYXBwLWxvY2FsLXN0b3JhZ2Utc2lnbmFscy1kZW1vJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2xvY2FsLXN0b3JhZ2Utc2lnbmFscy1kZW1vLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vbG9jYWwtc3RvcmFnZS1zaWduYWxzLWRlbW8uY29tcG9uZW50LnNjc3MnXSxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZVxufSlcbmV4cG9ydCBjbGFzcyBMb2NhbFN0b3JhZ2VTaWduYWxzRGVtb0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG5cbiAgZmIgPSBpbmplY3QoRm9ybUJ1aWxkZXIpXG4gIHV0aWxzID0gaW5qZWN0KFV0aWxzU2VydmljZSlcblxuICAvLyBzdG9yZSB0eXBlIGlzIGRyaXZlbiBieSB0aGUgZm9ybSBjb250cm9sXG4gIGdldCB0eXBlKCkge1xuICAgIHJldHVybiAodGhpcy50eXBlQ29udHJvbC52YWx1ZSkgPyArdGhpcy50eXBlQ29udHJvbC52YWx1ZSA6IDA7XG4gIH1cblxuICB0eXBlQ29udHJvbCA9IHRoaXMuZmIuY29udHJvbChTdG9yYWdlVHlwZS5HTE9CQUwudG9TdHJpbmcoKSlcblxuICBsb2NhbFN0b3JhZ2VNYW5hZ2VyU2VydmljZSA9IGluamVjdChMb2NhbFN0b3JhZ2VTaWduYWxzTWFuYWdlclNlcnZpY2UpXG5cbiAgLy8gVXNlIHNpZ25hbHMgZGlyZWN0bHkgYW5kIGNvbXB1dGVkIHZhbHVlcyBmb3IgdGVtcGxhdGUgYmluZGluZ1xuICByZWFkb25seSBzZXR0aW5ncyA9IGNvbXB1dGVkKCgpID0+IHRoaXMubG9jYWxTdG9yYWdlTWFuYWdlclNlcnZpY2Uuc2V0dGluZ3MoKSk7XG5cbiAgLy8gc2VsZWN0ZWQgc3RvcmUgKHNpZ25hbCkgYW5kIGl0cyBKU09OIGRhdGEgZm9yIHRlbXBsYXRlXG4gIHN0b3JlU2VsZWN0ZWQgPSBzaWduYWw8U3RvcmFnZU9wdGlvbiB8IG51bGw+KG51bGwpO1xuICBzZWxlY3RlZFN0b3JlRGF0YSA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICBjb25zdCBzID0gdGhpcy5zdG9yZVNlbGVjdGVkKCk7XG4gICAgaWYgKCFzKSByZXR1cm4gJyc7XG4gICAgY29uc3QgY29tcHV0ZWQgPSB0aGlzLmxvY2FsU3RvcmFnZU1hbmFnZXJTZXJ2aWNlLnN0b3JlKHMubmFtZSk7XG4gICAgcmV0dXJuIGNvbXB1dGVkID8gSlNPTi5zdHJpbmdpZnkoY29tcHV0ZWQoKSkgOiAnJztcbiAgfSk7XG5cbiAgLy8gZmlsdGVyZWQgc2V0dGluZ3MgYnkgc2VsZWN0ZWQgdHlwZVxuICBzZWxlY3RlZFR5cGUgPSBzaWduYWw8bnVtYmVyPihTdG9yYWdlVHlwZS5HTE9CQUwpO1xuICBmaWx0ZXJlZFNldHRpbmdzID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIGNvbnN0IHZhbHVlcyA9IHRoaXMuc2V0dGluZ3MoKSB8fCBbXTtcbiAgICByZXR1cm4gdmFsdWVzLmZpbHRlcigoaXRlbTogYW55KSA9PiBpdGVtLm9wdGlvbnMuc3RvcmFnZSA9PT0gK3RoaXMuc2VsZWN0ZWRUeXBlKCkpO1xuICB9KTtcblxuICBzdG9yYWdlRm9ybSA9IHRoaXMuZmIuZ3JvdXAoe1xuICAgIHN0b3JlOiB0aGlzLmZiLmNvbnRyb2w8c3RyaW5nfG51bGw+KG51bGwpLFxuICAgIHR5cGU6ICdsb2NhbCcsXG4gICAgc2V0dGluZ1R5cGU6ICdsb2NhbCcsXG4gICAgZW5jcnlwdGVkOiBmYWxzZSxcbiAgICBkYXRhOiB0aGlzLmZiLmNvbnRyb2w8c3RyaW5nPignJywgVmFsaWRhdG9ycy5yZXF1aXJlZCksXG4gIH0pXG5cbiAgbmV3U3RvcmVGb3JtID0gdGhpcy5mYi5ncm91cCh7XG4gICAgbmFtZTogdGhpcy5mYi5jb250cm9sPHN0cmluZ3xudWxsPihudWxsLCBWYWxpZGF0b3JzLnJlcXVpcmVkKSxcbiAgICBzdG9yYWdlOiAnbG9jYWwnLFxuICAgIGVuY3J5cHRlZDogZmFsc2UsXG4gICAgZGF0YTogdGhpcy5mYi5jb250cm9sPHN0cmluZz4oJycsIFZhbGlkYXRvcnMucmVxdWlyZWQpLFxuICAgIGV4cGlyZXNJbjogdGhpcy5mYi5jb250cm9sKCcwJylcbiAgfSlcblxuICAvLyBubyBSeEpTIE9ic2VydmFibGVzIGhlcmU7IHRlbXBsYXRlIHVzZXMgc2lnbmFscy9jb21wdXRlZCBkaXJlY3RseVxuXG4gIGV4cGlyZXNJbiA9IChlcG9jaDogbnVtYmVyKSA9PiB0aGlzLnV0aWxzLmV4cGlyZXNJbihlcG9jaClcblxuICBnZXQgaXNWYWxpZCgpIHtcbiAgICByZXR1cm4gdGhpcy5uZXdTdG9yZUZvcm0udmFsaWRcbiAgfVxuXG4gIGdldCBpc1ZhbGlkRGF0YSgpIHtcbiAgICByZXR1cm4gdGhpcy5zdG9yYWdlRm9ybS52YWxpZFxuICB9XG5cbiAgaXNWYWxpZEpTT04gPSAoc3RyOiBzdHJpbmcpID0+IHtcbiAgICB0cnkge1xuICAgICAgSlNPTi5wYXJzZShzdHIpXG4gICAgICByZXR1cm4gdHJ1ZVxuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIHJldHVybiBmYWxzZVxuICAgIH1cbiAgfVxuXG4gIGRpc3BsYXllZENvbHVtbnM6IHN0cmluZ1tdID0gWyduYW1lJywgJ2lkJywgJ2VuY3J5cHRlZCcsICdleHBpcmVzJywgXCJvcHRpb25cIl07XG5cbiAgZmlsdGVyRGF0YSA9ICh2YWx1ZXM6IFN0b3JhZ2VPcHRpb25bXSB8IG51bGwgfCB1bmRlZmluZWQpID0+IHtcbiAgICBpZighdmFsdWVzKSByZXR1cm4gW11cbiAgICByZXR1cm4gdmFsdWVzLmZpbHRlcigoaXRlbTogYW55KSA9PiBpdGVtLm9wdGlvbnMgJiYgaXRlbS5vcHRpb25zLnN0b3JhZ2UgPT09ICt0aGlzLnR5cGUpXG4gIH1cblxuICBzZXR0aW5nRm9yKG5hbWU6IHN0cmluZykge1xuICAgIGNvbnN0IGMgPSB0aGlzLmxvY2FsU3RvcmFnZU1hbmFnZXJTZXJ2aWNlLnNldHRpbmcobmFtZSk7XG4gICAgcmV0dXJuIGMgPyBjKCkgOiBudWxsO1xuICB9XG5cbiAgLy8gZGF0YSBhbmQgc2VsZWN0ZWQgc3RvcmVcbiAgc3RvcmU6IGFueVxuICBjcmVhdGUgPSBmYWxzZVxuXG4gIHN0b3JlUHJvcHM/OiBMb2NhbFN0b3JhZ2VPcHRpb25zXG4gIG9wdGlvbnM/OiBTZXR0aW5nT3B0aW9uc1xuXG4gIGNvbnN0cnVjdG9yKEBJbmplY3QoQ09ORklHX1NFVFRJTkdTX1RPS0VOKSBwcml2YXRlIGNvbmZpZ09wdGlvbnM/OiBDb25maWdPcHRpb25zKSB7IH1cblxuICBuZ09uSW5pdCgpIHtcblxuICAgIHRoaXMuc3RvcmVQcm9wcyA9IHRoaXMuY29uZmlnT3B0aW9ucz8uTG9jYWxTdG9yYWdlT3B0aW9uc1xuICAgIHRoaXMub3B0aW9ucyA9IHRoaXMuc3RvcmVQcm9wcz8ub3B0aW9uc1xuXG4gICAgaWYodGhpcy5vcHRpb25zPy5zdG9yYWdlKSB7XG4gICAgICB0aGlzLnR5cGVDb250cm9sLnBhdGNoVmFsdWUodGhpcy5vcHRpb25zLnN0b3JhZ2UudG9TdHJpbmcoKSlcbiAgICAgIHRoaXMudHlwZUNvbnRyb2wuZGlzYWJsZSgpXG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMudHlwZUNvbnRyb2wuZW5hYmxlKClcbiAgICB9XG5cbiAgICBpZih0aGlzLm9wdGlvbnM/LmV4cGlyZXNJbikge1xuICAgICAgdGhpcy5uZXdTdG9yZUZvcm0uZ2V0KCdleHBpcmVzSW4nKT8ucGF0Y2hWYWx1ZSh0aGlzLm9wdGlvbnMuZXhwaXJlc0luKVxuICAgICAgdGhpcy5uZXdTdG9yZUZvcm0uZ2V0KCdleHBpcmVzSW4nKT8uZGlzYWJsZSgpXG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMubmV3U3RvcmVGb3JtLmdldCgnZXhwaXJlc0luJyk/LmVuYWJsZSgpXG4gICAgfVxuXG4gICAgaWYodGhpcy5vcHRpb25zPy5lbmNyeXB0ZWQpIHtcbiAgICAgIHRoaXMubmV3U3RvcmVGb3JtLmdldCgnZW5jcnlwdGVkJyk/LnBhdGNoVmFsdWUodGhpcy5vcHRpb25zLmVuY3J5cHRlZClcbiAgICAgIHRoaXMubmV3U3RvcmVGb3JtLmdldCgnZW5jcnlwdGVkJyk/LmRpc2FibGUoKVxuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLm5ld1N0b3JlRm9ybS5nZXQoJ2VuY3J5cHRlZCcpPy5lbmFibGUoKVxuICAgIH1cblxuICAgIC8vIG5vdGhpbmcgdG8gc3luY2hyb25pemUgLSB0ZW1wbGF0ZXMgcmVhZCBjb21wdXRlZCBzaWduYWxzIGRpcmVjdGx5XG5cbiAgfVxuXG4gIG9uQ3JlYXRlU3RvcmUoKSB7XG5cbiAgICBpZighdGhpcy5pc1ZhbGlkKSByZXR1cm5cblxuICAgIGNvbnN0IHN0b3JlID0gdGhpcy5uZXdTdG9yZUZvcm0udmFsdWVcbiAgICBpZighc3RvcmUubmFtZSB8fCBzdG9yZS5uYW1lID09PSAnJykgcmV0dXJuXG5cbiAgICBjb25zdCBvcHRpb25zID0geyBzdG9yYWdlOiB0aGlzLnR5cGUsIGVuY3J5cHRlZDogc3RvcmUuZW5jcnlwdGVkLCBleHBpcmVzSW46IHN0b3JlLmV4cGlyZXNJbiB9XG5cbiAgICB0aGlzLmxvY2FsU3RvcmFnZU1hbmFnZXJTZXJ2aWNlLmNyZWF0ZVN0b3JlKHtcbiAgICAgIG5hbWU6IHN0b3JlLm5hbWUsXG4gICAgICBkYXRhOiBzdG9yZS5kYXRhLFxuICAgICAgb3B0aW9uczogU2V0dGluZ09wdGlvbnMuYWRhcHQob3B0aW9ucylcbiAgICB9KVxuXG4gICAgdGhpcy5uZXdTdG9yZUZvcm0ucmVzZXQoKVxuICAgIHRoaXMuY3JlYXRlID0gZmFsc2VcbiAgfVxuXG4gIG9uVXBkYXRlU3RvcmUoc3RvcmU6IGFueSkge1xuXG4gICAgaWYoIXRoaXMuc3RvcmFnZUZvcm0udmFsaWQpIHJldHVyblxuXG4gICAgY29uc3Qgc3RvcmVEYXRhID0gdGhpcy5zdG9yYWdlRm9ybS52YWx1ZVxuXG4gICAgY29uc3QgZGF0YSA9IEpTT04ucGFyc2Uoc3RvcmVEYXRhLmRhdGEgfHwgJycpXG5cbiAgICBjb25zdCB0eXBlID0gKHN0b3JlRGF0YS50eXBlID09PSAnbG9jYWwnKSA/IFN0b3JhZ2VUeXBlLkdMT0JBTCA6IFN0b3JhZ2VUeXBlLlNFU1NJT05cblxuICAgIHRoaXMubG9jYWxTdG9yYWdlTWFuYWdlclNlcnZpY2UudXBkYXRlU3RvcmUoe1xuICAgICAgbmFtZTogc3RvcmUubmFtZSxcbiAgICAgIGRhdGFcbiAgICB9KVxuXG4gIH1cblxuICBvblNlbGVjdGVkUm93KHN0b3JlOiBhbnkpIHtcbiAgICB0aGlzLnN0b3JlID0gc3RvcmVcbiAgICB0aGlzLnN0b3JlU2VsZWN0ZWQuc2V0KHN0b3JlKVxuICAgIHRoaXMuY3JlYXRlID0gZmFsc2VcbiAgfVxuXG4gIG9uQ3JlYXRlKCkge1xuICAgIHRoaXMub25DYW5jZWwoKVxuICAgIHRoaXMuY3JlYXRlID0gdHJ1ZVxuICB9XG5cbiAgb25EZWxldGUoc3RvcmU6IFN0b3JhZ2VPcHRpb24pIHtcblxuICAgIHRoaXMubG9jYWxTdG9yYWdlTWFuYWdlclNlcnZpY2UuZGVsZXRlU3RvcmUoe1xuICAgICAgbmFtZTogc3RvcmUubmFtZSxcbiAgICB9KVxuXG4gICAgdGhpcy5vbkNhbmNlbCgpXG4gIH1cblxuICBvbkNhbmNlbCgpIHtcbiAgICB0aGlzLnN0b3JlU2VsZWN0ZWQuc2V0KG51bGwpXG4gICAgdGhpcy5zdG9yZSA9IG51bGxcbiAgICB0aGlzLmNyZWF0ZSA9IGZhbHNlXG4gIH1cblxuICBvblVwZGF0ZShzdG9yZTogU3RvcmFnZU9wdGlvbiwgZGF0YTogYW55KSB7XG5cbiAgICB0aGlzLmxvY2FsU3RvcmFnZU1hbmFnZXJTZXJ2aWNlLnVwZGF0ZVN0b3JlKHtcbiAgICAgIG5hbWU6IHN0b3JlLm5hbWUsXG4gICAgICBkYXRhOiBKU09OLnBhcnNlKGRhdGEpXG4gICAgfSlcblxuICAgIHRoaXMub25DYW5jZWwoKVxuXG4gIH1cblxuICBvblJlc2V0KCkge1xuICAgIHRoaXMubG9jYWxTdG9yYWdlTWFuYWdlclNlcnZpY2UucmVzZXRTdG9yZSgpXG4gIH1cblxufVxuIiwiPGRpdiBzdHlsZT1cIm1hcmdpbjogMnJlbTtcIj5cblxuICA8ZGl2IHN0eWxlPVwiZGlzcGxheTogZmxleDsgZ2FwOiAxcmVtXCI+XG4gICAgPGgyIHN0eWxlPVwicGFkZGluZy10b3A6IC41cmVtOyBkaXNwbGF5OiBmbGV4O1wiPlxuICAgICAgPGRpdiBzdHlsZT1cInBhZGRpbmctdG9wOiAuNXJlbTtcIj5Mb2NhbCBTdG9yYWdlIE1hbmFnZXI8L2Rpdj5cbiAgICAgIDxkaXY+XG4gICAgICAgIDxidXR0b24gbWF0LWljb24tYnV0dG9uIFttYXRNZW51VHJpZ2dlckZvcl09XCJtZW51XCI+XG4gICAgICAgICAgPG1hdC1pY29uPmluZm88L21hdC1pY29uPlxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgIDwvZGl2PlxuICAgIDwvaDI+XG4gICAgPHNwYW4gc3R5bGU9XCJmbGV4OjFcIj48L3NwYW4+XG4gICAgPGRpdiBzdHlsZT1cInBhZGRpbmctdG9wOiAuMjVyZW07XCI+XG4gICAgICA8bWF0LWJ1dHRvbi10b2dnbGUtZ3JvdXAgbmFtZT1cInN0b3JhZ2VcIiBbZm9ybUNvbnRyb2xdPVwidHlwZUNvbnRyb2xcIiAoY2hhbmdlKT1cIm9uQ2FuY2VsKClcIj5cbiAgICAgICAgPG1hdC1idXR0b24tdG9nZ2xlIHZhbHVlPVwiMFwiPkxvY2FsIFN0b3JhZ2U8L21hdC1idXR0b24tdG9nZ2xlPlxuICAgICAgICA8bWF0LWJ1dHRvbi10b2dnbGUgdmFsdWU9XCIxXCI+U2Vzc2lvbiBTdG9yYWdlPC9tYXQtYnV0dG9uLXRvZ2dsZT5cbiAgICAgIDwvbWF0LWJ1dHRvbi10b2dnbGUtZ3JvdXA+XG4gICAgPC9kaXY+XG4gICAgPGRpdiBzdHlsZT1cIm1hcmdpbi10b3A6IC4yNXJlbTtcIj5cbiAgICAgIDxidXR0b24gbWF0LWljb24tYnV0dG9uIChjbGljayk9XCJvbkNyZWF0ZSgpXCI+XG4gICAgICAgIDxtYXQtaWNvbj5hZGQ8L21hdC1pY29uPlxuICAgICAgPC9idXR0b24+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuXG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCJzdG9yZVByb3BzPy5zdG9yYWdlTmFtZSB8fCBzdG9yZVByb3BzPy5zdG9yYWdlU2V0dGluZ3NOYW1lXCI+XG4gICAgPGRpdiBzdHlsZT1cImRpc3BsYXk6IGZsZXg7IGdhcDogLjVyZW07IGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47IGJvcmRlcjogZ3JheSBzb2xpZCB0aGluOyBiYWNrZ3JvdW5kLWNvbG9yOiB3aGl0ZXNtb2tlOyBwYWRkaW5nOiAxcmVtO1wiXG4gICAgPlxuICAgICAgPGRpdiBzdHlsZT1cImRpc3BsYXk6IGZsZXg7XCI+XG4gICAgICAgIDxkaXYgKm5nSWY9XCJzdG9yZVByb3BzPy5zdG9yYWdlU2V0dGluZ3NOYW1lXCIgc3R5bGU9XCJmbGV4OjFcIj5cbiAgICAgICAgICBEYXRhYmFzZTogPGI+e3sgc3RvcmVQcm9wcz8uc3RvcmFnZVNldHRpbmdzTmFtZSB9fTwvYj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgKm5nSWY9XCJzdG9yZVByb3BzPy5zdG9yYWdlTmFtZVwiIHN0eWxlPVwiZmxleDoxXCI+XG4gICAgICAgICAgRGF0YTogPGI+e3sgc3RvcmVQcm9wcz8uc3RvcmFnZU5hbWUgfX08L2I+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvbmctY29udGFpbmVyPlxuXG4gIDxkaXYgc3R5bGU9XCJtYXJnaW4tdG9wOiAycmVtO1wiIFtmb3JtR3JvdXBdPVwibmV3U3RvcmVGb3JtXCIgKm5nSWY9XCJjcmVhdGU7IGVsc2UgTElTVFwiPlxuXG4gICAgPGgyPkNyZWF0ZSBTdG9yZTwvaDI+XG5cbiAgICA8ZGl2IHN0eWxlPVwiZGlzcGxheTogZmxleDsgZ2FwOiAxcmVtO1wiPlxuICAgICAgPGRpdiBzdHlsZT1cImZsZXg6MVwiPlxuICAgICAgICA8bWF0LWZvcm0tZmllbGQgYXBwZWFyYW5jZT1cIm91dGxpbmVcIj5cbiAgICAgICAgICA8bWF0LWxhYmVsPlN0b3JlIE5hbWU8L21hdC1sYWJlbD5cbiAgICAgICAgICA8aW5wdXQgbWF0SW5wdXQgcGxhY2Vob2xkZXI9XCJzYW1wbGVcIiBmb3JtQ29udHJvbE5hbWU9XCJuYW1lXCI+XG4gICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXY+XG4gICAgICAgIDxtYXQtZm9ybS1maWVsZCBhcHBlYXJhbmNlPVwib3V0bGluZVwiPlxuICAgICAgICAgIDxtYXQtbGFiZWw+RXhwaXJlcyBJbi4uLjwvbWF0LWxhYmVsPlxuICAgICAgICAgIDxtYXQtc2VsZWN0IGZvcm1Db250cm9sTmFtZT1cImV4cGlyZXNJblwiPlxuICAgICAgICAgICAgPG1hdC1vcHRpb24gdmFsdWU9XCIwXCI+Tm9uZTwvbWF0LW9wdGlvbj5cbiAgICAgICAgICAgIDxtYXQtb3B0aW9uIHZhbHVlPVwiMzBzXCI+MzAgU2Vjb25kczwvbWF0LW9wdGlvbj5cbiAgICAgICAgICAgIDxtYXQtb3B0aW9uIHZhbHVlPVwiMW1uXCI+MSBNaW51dGU8L21hdC1vcHRpb24+XG4gICAgICAgICAgICA8bWF0LW9wdGlvbiB2YWx1ZT1cIjFoclwiPjEgSG91cjwvbWF0LW9wdGlvbj5cbiAgICAgICAgICAgIDxtYXQtb3B0aW9uIHZhbHVlPVwiMWRcIj4xIERheTwvbWF0LW9wdGlvbj5cbiAgICAgICAgICA8L21hdC1zZWxlY3Q+XG4gICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgc3R5bGU9XCJtYXJnaW4tdG9wOiAxcmVtO1wiPlxuICAgICAgICA8bWF0LXNsaWRlLXRvZ2dsZSBmb3JtQ29udHJvbE5hbWU9XCJlbmNyeXB0ZWRcIj5FbmNyeXB0ZWQ8L21hdC1zbGlkZS10b2dnbGU+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cblxuICAgIDxkaXYgc3R5bGU9XCJkaXNwbGF5OiBmbGV4O1wiPlxuICAgICAgPG1hdC1mb3JtLWZpZWxkIGFwcGVhcmFuY2U9XCJvdXRsaW5lXCIgc3R5bGU9XCJmbGV4OiAxO1wiPlxuICAgICAgICA8bWF0LWxhYmVsPkRhdGEgKE11c3QgYmUgYW4gT2JqZWN0IG9yIEFycmF5IG9mIGFueSk8L21hdC1sYWJlbD5cbiAgICAgICAgPHRleHRhcmVhIG1hdElucHV0IHBsYWNlaG9sZGVyPVwiW11cIiBmb3JtQ29udHJvbE5hbWU9XCJkYXRhXCIgI2pzb24+PC90ZXh0YXJlYT5cbiAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XG4gICAgPC9kaXY+XG4gICAgPG1hdC1lcnJvciAqbmdJZj1cIiFpc1ZhbGlkSlNPTihqc29uLnZhbHVlKVwiPk5vdCBWYWxpZCBEYXRhPC9tYXQtZXJyb3I+XG5cbiAgICA8ZGl2IHN0eWxlPVwiZGlzcGxheTogZmxleDtcIj5cbiAgICAgIDxzcGFuIHN0eWxlPVwiZmxleDoxXCI+PC9zcGFuPlxuICAgICAgPGJ1dHRvbiBtYXQtc3Ryb2tlZC1idXR0b24gKGNsaWNrKT1cIm9uQ3JlYXRlU3RvcmUoKVwiIFtkaXNhYmxlZF09XCIhKGlzVmFsaWQgJiYgaXNWYWxpZEpTT04oanNvbi52YWx1ZSkpXCI+XG4gICAgICAgIFNhdmUgU3RvcmVcbiAgICAgIDwvYnV0dG9uPlxuICAgIDwvZGl2PlxuXG4gIDwvZGl2PlxuXG4gIDxuZy10ZW1wbGF0ZSAjTElTVD5cblxuICAgIDxkaXYgc3R5bGU9XCJtYXJnaW4tdG9wOiAxcmVtO1wiPlxuICAgICAgPG1hdC1kaXZpZGVyPjwvbWF0LWRpdmlkZXI+XG4gICAgPC9kaXY+XG57eyBzZXR0aW5ncygpIHwganNvbiB9fVxuICA8ZGl2ICpuZ0lmPVwiZmlsdGVyRGF0YShzZXR0aW5ncygpKSBhcyBkYXRhXCI+XG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiZGF0YS5sZW5ndGggPiAwOyBlbHNlIE5PX0RBVEFcIj5cbiAgICAgICAgPHRhYmxlIG1hdC10YWJsZSBbZGF0YVNvdXJjZV09XCJkYXRhXCI+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lciBtYXRDb2x1bW5EZWY9XCJuYW1lXCI+XG4gICAgICAgICAgICA8dGggbWF0LWhlYWRlci1jZWxsICptYXRIZWFkZXJDZWxsRGVmPiBTdG9yZSA8L3RoPlxuICAgICAgICAgICAgPHRkIG1hdC1jZWxsICptYXRDZWxsRGVmPVwibGV0IGVsZW1lbnRcIiBzdHlsZT1cImZvbnQtd2VpZ2h0OiBib2xkOyB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1wiPiB7e2VsZW1lbnQubmFtZX19IDwvdGQ+XG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgICA8bmctY29udGFpbmVyIG1hdENvbHVtbkRlZj1cImlkXCI+XG4gICAgICAgICAgICA8dGggbWF0LWhlYWRlci1jZWxsICptYXRIZWFkZXJDZWxsRGVmPiBJRCA8L3RoPlxuICAgICAgICAgICAgPHRkIG1hdC1jZWxsICptYXRDZWxsRGVmPVwibGV0IGVsZW1lbnRcIj4ge3tlbGVtZW50LmlkfX0gPC90ZD5cbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgICAgIDxuZy1jb250YWluZXIgbWF0Q29sdW1uRGVmPVwiZW5jcnlwdGVkXCI+XG4gICAgICAgICAgICA8dGggbWF0LWhlYWRlci1jZWxsICptYXRIZWFkZXJDZWxsRGVmIHN0eWxlPVwidGV4dC1hbGlnbjogY2VudGVyO1wiPiBFbmNyeXB0ZWQgPC90aD5cbiAgICAgICAgICAgIDx0ZCBtYXQtY2VsbCAqbWF0Q2VsbERlZj1cImxldCBlbGVtZW50XCIgc3R5bGU9XCJ0ZXh0LWFsaWduOiBjZW50ZXI7XCI+XG4gICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJlbGVtZW50Lm9wdGlvbnMuZW5jcnlwdGVkOyBlbHNlIE5PXCI+WUVTPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjTk8+PHNwYW4gc3R5bGU9XCJjb2xvcjpncmF5XCI+Tk88L3NwYW4+PC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgICA8bmctY29udGFpbmVyIG1hdENvbHVtbkRlZj1cImV4cGlyZXNcIj5cbiAgICAgICAgICAgIDx0aCBtYXQtaGVhZGVyLWNlbGwgKm1hdEhlYWRlckNlbGxEZWYgc3R5bGU9XCJ0ZXh0LWFsaWduOiBjZW50ZXI7XCI+IEV4cGlyZXMgPC90aD5cbiAgICAgICAgICAgIDx0ZCBtYXQtY2VsbCAqbWF0Q2VsbERlZj1cImxldCBlbGVtZW50XCIgc3R5bGU9XCJ0ZXh0LWFsaWduOiBjZW50ZXI7XCI+XG4gICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJlbGVtZW50Lm9wdGlvbnMuZXhwaXJlcyAhPT0gMDsgZWxzZSBOT19EQVRBXCI+XG4gICAgICAgICAgICAgICAge3tleHBpcmVzSW4oZWxlbWVudC5vcHRpb25zLmV4cGlyZXMpfX1cbiAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjTk9fREFUQT5cbiAgICAgICAgICAgICAgICDiiJ5cbiAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgICA8bmctY29udGFpbmVyIG1hdENvbHVtbkRlZj1cIm9wdGlvblwiPlxuICAgICAgICAgICAgPHRoIG1hdC1oZWFkZXItY2VsbCAqbWF0SGVhZGVyQ2VsbERlZj48L3RoPlxuICAgICAgICAgICAgPHRkIG1hdC1jZWxsICptYXRDZWxsRGVmPVwibGV0IGVsZW1lbnRcIiBzdHlsZT1cInBhZGRpbmctcmlnaHQ6IDA7XCI+XG4gICAgICAgICAgICAgIDxkaXYgc3R5bGU9XCJkaXNwbGF5OiBmbGV4O2p1c3RpZnktY29udGVudDogZmxleC1lbmQ7XCI+XG4gICAgICAgICAgICAgICAgPGJ1dHRvbiBtYXQtaWNvbi1idXR0b24gY29sb3I9XCJ3YXJuXCIgKGNsaWNrKT1cIm9uRGVsZXRlKGVsZW1lbnQpOyAkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcIj5cbiAgICAgICAgICAgICAgICAgIDxtYXQtaWNvbj5jbG9zZTwvbWF0LWljb24+XG4gICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgICAgIDx0ciBtYXQtaGVhZGVyLXJvdyAqbWF0SGVhZGVyUm93RGVmPVwiZGlzcGxheWVkQ29sdW1uc1wiPjwvdHI+XG4gICAgICAgICAgPHRyIG1hdC1yb3cgKm1hdFJvd0RlZj1cImxldCByb3c7IGNvbHVtbnM6IGRpc3BsYXllZENvbHVtbnM7XCIgKGNsaWNrKT1cIm9uU2VsZWN0ZWRSb3cocm93KVwiPjwvdHI+XG4gICAgICAgIDwvdGFibGU+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgPG5nLXRlbXBsYXRlICNOT19EQVRBPlxuICAgICAgICA8aDMgc3R5bGU9XCJtYXJnaW4tdG9wOiAxcmVtO1wiPk5vIERhdGE8L2gzPlxuICAgICAgPC9uZy10ZW1wbGF0ZT5cblxuICA8ZGl2ICpuZ0lmPVwic3RvcmVTZWxlY3RlZCgpIGFzIHNlbGVjdGVkU3RvcmVcIiBzdHlsZT1cIm1hcmdpbi10b3A6IDJyZW07XCI+XG4gICAgICAgIDxkaXYgc3R5bGU9XCJtYXJnaW4tYm90dG9tOiAxcmVtO1wiPlxuICAgICAgICAgIDxtYXQtZGl2aWRlcj48L21hdC1kaXZpZGVyPlxuICAgICAgICA8L2Rpdj5cblxuICA8aDM+U1RPUkU6IDxzcGFuIHN0eWxlPVwiZm9udC13ZWlnaHQ6IGJvbGQ7XCI+e3sgc2VsZWN0ZWRTdG9yZS5uYW1lIHwgdXBwZXJjYXNlIH19PC9zcGFuPjwvaDM+XG4gIDxoMz5TRVRUSU5HUzoge3sgbG9jYWxTdG9yYWdlTWFuYWdlclNlcnZpY2Uuc2V0dGluZyhzZWxlY3RlZFN0b3JlLm5hbWUpID8gKGxvY2FsU3RvcmFnZU1hbmFnZXJTZXJ2aWNlLnNldHRpbmcoc2VsZWN0ZWRTdG9yZS5uYW1lKSgpIHwganNvbikgOiAne30nIH19PC9oMz5cbiAgICAgICAgPGRpdiBzdHlsZT1cImRpc3BsYXk6IGZsZXg7XCI+XG4gICAgICAgICAgPG1hdC1mb3JtLWZpZWxkIGFwcGVhcmFuY2U9XCJvdXRsaW5lXCIgc3R5bGU9XCJmbGV4OiAxO1wiPlxuICAgICAgICAgICAgPG1hdC1sYWJlbD5EYXRhIChNdXN0IGJlIGFuIE9iamVjdCBvciBBcnJheSBvZiBhbnkpPC9tYXQtbGFiZWw+XG4gICAgICAgICAgICA8dGV4dGFyZWEgbWF0SW5wdXQgcGxhY2Vob2xkZXI9XCJbXVwiICNqc29uIFt2YWx1ZV09XCJzZWxlY3RlZFN0b3JlRGF0YSgpXCI+PC90ZXh0YXJlYT5cbiAgICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPG1hdC1lcnJvciAqbmdJZj1cIiFpc1ZhbGlkSlNPTihqc29uLnZhbHVlKVwiPk5vdCBWYWxpZCBEYXRhPC9tYXQtZXJyb3I+XG5cbiAgICAgICAgPGRpdiBzdHlsZT1cImRpc3BsYXk6IGZsZXg7IGdhcDogLjVyZW07XCI+XG4gICAgICAgICAgPHNwYW4gc3R5bGU9XCJmbGV4OjFcIj48L3NwYW4+XG4gICAgICAgICAgPGJ1dHRvbiBtYXQtc3Ryb2tlZC1idXR0b24gKGNsaWNrKT1cIm9uQ2FuY2VsKClcIj5DYW5jZWw8L2J1dHRvbj5cbiAgICAgICAgICA8YnV0dG9uIG1hdC1zdHJva2VkLWJ1dHRvbiAoY2xpY2spPVwib25VcGRhdGUoc2VsZWN0ZWRTdG9yZSwganNvbi52YWx1ZSlcIiBbZGlzYWJsZWRdPVwiIShpc1ZhbGlkSlNPTihqc29uLnZhbHVlKSlcIj5VcGRhdGU8L2J1dHRvbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cblxuICA8L25nLXRlbXBsYXRlPlxuXG4gIDxkaXYgc3R5bGU9XCJtYXJnaW4tdG9wOiAxcmVtO1wiPlxuICAgIDxtYXQtZGl2aWRlcj48L21hdC1kaXZpZGVyPlxuICA8L2Rpdj5cblxuICA8ZGl2IHN0eWxlPVwibWFyZ2luLXRvcDogMXJlbTtcIj5cbiAgICA8YnV0dG9uIG1hdC1zdHJva2VkLWJ1dHRvbiAoY2xpY2spPVwib25SZXNldCgpXCI+RGVsZXRlIEFsbCBTdG9yZXM8L2J1dHRvbj5cbiAgPC9kaXY+XG5cbjwvZGl2PlxuXG5cbjxtYXQtbWVudSAjbWVudT1cIm1hdE1lbnVcIj5cbiAgPGRpdiBzdHlsZT1cInBhZGRpbmc6IDFyZW07XCI+XG4gICAgPHA+UGxlYXNlIG5vdGUgdGhhdCB0aGUgTG9jYWxTdG9yYWdlIChlbmNyeXB0aW9uKSBhbmQgbWFuYWdlbWVudCBvZiBkYXRhIGlzIGRlcGVuZGFudCBvbiBpbml0aWFsaXppbmcgdGhlIEFQUF9JRDwvcD5cbiAgICA8cD5NdXN0IHByb3ZpZGUgYSB2YWx1ZSBmb3IgPGI+QVBQX0lEPC9iPiBpbiBBcHBNb2R1bGUtPlByb3ZpZGVyczwvcD5cbiAgICA8bWF0LWRpdmlkZXI+PC9tYXQtZGl2aWRlcj5cbiAgPGRpdiBzdHlsZT1cImZvbnQtc2l6ZTogc21hbGxlcjsgbWFyZ2luLXRvcDogLjVyZW07XCI+XG4gICAgPHA+RXhhbXBsZTogVVVJRCAoc2VsZi5jcnlwdG8ucmFuZG9tVVVJRCgpIHRvIGdlbmVyYXRlKTwvcD5cbiAgICA8ZGl2IHN0eWxlPVwiYmFja2dyb3VuZC1jb2xvcjogd2hpdGVzbW9rZTsgcGFkZGluZzogMXJlbTtcIj5cbiAgICAgICYjMTIzOzxicj5cbiAgICAgICAgcHJvdmlkZTogQVBQX0lELDxicj5cbiAgICAgICAgdXNlVmFsdWU6IFwiMDU2OTkxYWMtMzUzNy00M2FiLWI1YjktODNlZGY2NTU0ZWZmXCIsPGJyPlxuICAgICAgJiMxMjU7XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuICA8L2Rpdj5cbjwvbWF0LW1lbnU+XG4iXX0=
|
|
184
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9jYWwtc3RvcmFnZS1zaWduYWxzLWRlbW8uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvaHR0cC1yZXF1ZXN0LW1hbmFnZXIvc3JjL2xpYi9odHRwLXJlcXVlc3Qtc2VydmljZXMtZGVtby9sb2NhbC1zdG9yYWdlLXNpZ25hbHMtZGVtby9sb2NhbC1zdG9yYWdlLXNpZ25hbHMtZGVtby5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9odHRwLXJlcXVlc3QtbWFuYWdlci9zcmMvbGliL2h0dHAtcmVxdWVzdC1zZXJ2aWNlcy1kZW1vL2xvY2FsLXN0b3JhZ2Utc2lnbmFscy1kZW1vL2xvY2FsLXN0b3JhZ2Utc2lnbmFscy1kZW1vLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBVSxpQkFBaUIsRUFBVSxNQUFNLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQy9HLE9BQU8sRUFBRSxpQ0FBaUMsRUFBRSxjQUFjLEVBQWlCLFdBQVcsRUFBRSxNQUFNLDhDQUE4QyxDQUFDO0FBQzdJLE9BQU8sRUFBRSxXQUFXLEVBQUUsVUFBVSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDekQsT0FBTyxFQUFzQyxZQUFZLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNsRixPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7OztBQVF4RSxNQUFNLE9BQU8sZ0NBQWdDO0lBSzNDLDJDQUEyQztJQUMzQyxJQUFJLElBQUk7UUFDTixPQUFPLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFD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Q0FBZ0MsaUJBRzNCLGlCQUFpQixDQUFDLElBQUk7OzBCQTJGeEIsTUFBTTsyQkFBQyxxQkFBcUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEluamVjdCwgaW5qZWN0LCBPbkluaXQsIFZpZXdFbmNhcHN1bGF0aW9uLCBlZmZlY3QsIHNpZ25hbCwgY29tcHV0ZWQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IExvY2FsU3RvcmFnZVNpZ25hbHNNYW5hZ2VyU2VydmljZSwgU2V0dGluZ09wdGlvbnMsIFN0b3JhZ2VPcHRpb24sIFN0b3JhZ2VUeXBlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvbG9jYWwtc3RvcmFnZS1tYW5hZ2VyLXNlcnZpY2UnO1xuaW1wb3J0IHsgRm9ybUJ1aWxkZXIsIFZhbGlkYXRvcnMgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBDb25maWdPcHRpb25zLCBMb2NhbFN0b3JhZ2VPcHRpb25zLCBVdGlsc1NlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcyc7XG5pbXBvcnQgeyBDT05GSUdfU0VUVElOR1NfVE9LRU4gfSBmcm9tICcuLi8uLi9tb2RlbHMvY29uZmlnLXRva2VuLm1vZGVsJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYXBwLWxvY2FsLXN0b3JhZ2Utc2lnbmFscy1kZW1vJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2xvY2FsLXN0b3JhZ2Utc2lnbmFscy1kZW1vLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vbG9jYWwtc3RvcmFnZS1zaWduYWxzLWRlbW8uY29tcG9uZW50LnNjc3MnXSxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZVxufSlcbmV4cG9ydCBjbGFzcyBMb2NhbFN0b3JhZ2VTaWduYWxzRGVtb0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG5cbiAgZmIgPSBpbmplY3QoRm9ybUJ1aWxkZXIpXG4gIHV0aWxzID0gaW5qZWN0KFV0aWxzU2VydmljZSlcblxuICAvLyBzdG9yZSB0eXBlIGlzIGRyaXZlbiBieSB0aGUgZm9ybSBjb250cm9sXG4gIGdldCB0eXBlKCkge1xuICAgIHJldHVybiAodGhpcy50eXBlQ29udHJvbC52YWx1ZSkgPyArdGhpcy50eXBlQ29udHJvbC52YWx1ZSA6IDA7XG4gIH1cblxuICB0eXBlQ29udHJvbCA9IHRoaXMuZmIuY29udHJvbChTdG9yYWdlVHlwZS5HTE9CQUwudG9TdHJpbmcoKSlcblxuICBsb2NhbFN0b3JhZ2VNYW5hZ2VyU2VydmljZSA9IGluamVjdChMb2NhbFN0b3JhZ2VTaWduYWxzTWFuYWdlclNlcnZpY2UpXG5cbiAgLy8gVXNlIHNpZ25hbHMgZGlyZWN0bHkgYW5kIGNvbXB1dGVkIHZhbHVlcyBmb3IgdGVtcGxhdGUgYmluZGluZ1xuICByZWFkb25seSBzZXR0aW5ncyA9IGNvbXB1dGVkKCgpID0+IHRoaXMubG9jYWxTdG9yYWdlTWFuYWdlclNlcnZpY2Uuc2V0dGluZ3MoKSk7XG5cbiAgLy8gc2VsZWN0ZWQgc3RvcmUgKHNpZ25hbCkgYW5kIGl0cyBKU09OIGRhdGEgZm9yIHRlbXBsYXRlXG4gIHN0b3JlU2VsZWN0ZWQgPSBzaWduYWw8U3RvcmFnZU9wdGlvbiB8IG51bGw+KG51bGwpO1xuICBzZWxlY3RlZFN0b3JlRGF0YSA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICBjb25zdCBzID0gdGhpcy5zdG9yZVNlbGVjdGVkKCk7XG4gICAgaWYgKCFzKSByZXR1cm4gJyc7XG4gICAgY29uc3QgY29tcHV0ZWQgPSB0aGlzLmxvY2FsU3RvcmFnZU1hbmFnZXJTZXJ2aWNlLnN0b3JlKHMubmFtZSk7XG4gICAgcmV0dXJuIGNvbXB1dGVkID8gSlNPTi5zdHJpbmdpZnkoY29tcHV0ZWQoKSkgOiAnJztcbiAgfSk7XG5cbiAgLy8gZmlsdGVyZWQgc2V0dGluZ3MgYnkgc2VsZWN0ZWQgdHlwZVxuICBzZWxlY3RlZFR5cGUgPSBzaWduYWw8bnVtYmVyPihTdG9yYWdlVHlwZS5HTE9CQUwpO1xuICBmaWx0ZXJlZFNldHRpbmdzID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIGNvbnN0IHZhbHVlcyA9IHRoaXMuc2V0dGluZ3MoKSB8fCBbXTtcbiAgICByZXR1cm4gdmFsdWVzLmZpbHRlcigoaXRlbTogYW55KSA9PiBpdGVtLm9wdGlvbnMuc3RvcmFnZSA9PT0gK3RoaXMuc2VsZWN0ZWRUeXBlKCkpO1xuICB9KTtcblxuICBzdG9yYWdlRm9ybSA9IHRoaXMuZmIuZ3JvdXAoe1xuICAgIHN0b3JlOiB0aGlzLmZiLmNvbnRyb2w8c3RyaW5nfG51bGw+KG51bGwpLFxuICAgIHR5cGU6ICdsb2NhbCcsXG4gICAgc2V0dGluZ1R5cGU6ICdsb2NhbCcsXG4gICAgZW5jcnlwdGVkOiBmYWxzZSxcbiAgICBkYXRhOiB0aGlzLmZiLmNvbnRyb2w8c3RyaW5nPignJywgVmFsaWRhdG9ycy5yZXF1aXJlZCksXG4gIH0pXG5cbiAgbmV3U3RvcmVGb3JtID0gdGhpcy5mYi5ncm91cCh7XG4gICAgbmFtZTogdGhpcy5mYi5jb250cm9sPHN0cmluZ3xudWxsPihudWxsLCBWYWxpZGF0b3JzLnJlcXVpcmVkKSxcbiAgICBzdG9yYWdlOiAnbG9jYWwnLFxuICAgIGVuY3J5cHRlZDogZmFsc2UsXG4gICAgZGF0YTogdGhpcy5mYi5jb250cm9sPHN0cmluZz4oJycsIFZhbGlkYXRvcnMucmVxdWlyZWQpLFxuICAgIGV4cGlyZXNJbjogdGhpcy5mYi5jb250cm9sKCcwJylcbiAgfSlcblxuICAvLyBubyBSeEpTIE9ic2VydmFibGVzIGhlcmU7IHRlbXBsYXRlIHVzZXMgc2lnbmFscy9jb21wdXRlZCBkaXJlY3RseVxuXG4gIGV4cGlyZXNJbiA9IChlcG9jaDogbnVtYmVyKSA9PiB0aGlzLnV0aWxzLmV4cGlyZXNJbihlcG9jaClcblxuICBnZXQgaXNWYWxpZCgpIHtcbiAgICByZXR1cm4gdGhpcy5uZXdTdG9yZUZvcm0udmFsaWRcbiAgfVxuXG4gIGdldCBpc1ZhbGlkRGF0YSgpIHtcbiAgICByZXR1cm4gdGhpcy5zdG9yYWdlRm9ybS52YWxpZFxuICB9XG5cbiAgaXNWYWxpZEpTT04gPSAoc3RyOiBzdHJpbmcpID0+IHtcbiAgICB0cnkge1xuICAgICAgSlNPTi5wYXJzZShzdHIpXG4gICAgICByZXR1cm4gdHJ1ZVxuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIHJldHVybiBmYWxzZVxuICAgIH1cbiAgfVxuXG4gIGRpc3BsYXllZENvbHVtbnM6IHN0cmluZ1tdID0gWyduYW1lJywgJ2lkJywgJ2VuY3J5cHRlZCcsICdleHBpcmVzJywgXCJvcHRpb25cIl07XG5cbiAgZmlsdGVyRGF0YSA9ICh2YWx1ZXM6IFN0b3JhZ2VPcHRpb25bXSB8IG51bGwgfCB1bmRlZmluZWQpID0+IHtcbiAgICBpZighdmFsdWVzKSByZXR1cm4gW11cbiAgICByZXR1cm4gdmFsdWVzLmZpbHRlcigoaXRlbTogYW55KSA9PiBpdGVtLm9wdGlvbnMgJiYgaXRlbS5vcHRpb25zLnN0b3JhZ2UgPT09ICt0aGlzLnR5cGUpXG4gIH1cblxuICBzZXR0aW5nRm9yKG5hbWU6IHN0cmluZykge1xuICAgIGNvbnN0IGMgPSB0aGlzLmxvY2FsU3RvcmFnZU1hbmFnZXJTZXJ2aWNlLnNldHRpbmcobmFtZSk7XG4gICAgcmV0dXJuIGMgPyBjKCkgOiBudWxsO1xuICB9XG5cbiAgLy8gZGF0YSBhbmQgc2VsZWN0ZWQgc3RvcmVcbiAgc3RvcmU6IGFueVxuICBjcmVhdGUgPSBmYWxzZVxuXG4gIHN0b3JlUHJvcHM/OiBMb2NhbFN0b3JhZ2VPcHRpb25zXG4gIG9wdGlvbnM/OiBTZXR0aW5nT3B0aW9uc1xuXG4gIGNvbnN0cnVjdG9yKEBJbmplY3QoQ09ORklHX1NFVFRJTkdTX1RPS0VOKSBwcml2YXRlIGNvbmZpZ09wdGlvbnM/OiBDb25maWdPcHRpb25zKSB7IH1cblxuICBuZ09uSW5pdCgpIHtcblxuICAgIHRoaXMuc3RvcmVQcm9wcyA9IHRoaXMuY29uZmlnT3B0aW9ucz8uTG9jYWxTdG9yYWdlT3B0aW9uc1xuICAgIHRoaXMub3B0aW9ucyA9IHRoaXMuc3RvcmVQcm9wcz8ub3B0aW9uc1xuXG4gICAgaWYodGhpcy5vcHRpb25zPy5zdG9yYWdlKSB7XG4gICAgICB0aGlzLnR5cGVDb250cm9sLnBhdGNoVmFsdWUodGhpcy5vcHRpb25zLnN0b3JhZ2UudG9TdHJpbmcoKSlcbiAgICAgIHRoaXMudHlwZUNvbnRyb2wuZGlzYWJsZSgpXG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMudHlwZUNvbnRyb2wuZW5hYmxlKClcbiAgICB9XG5cbiAgICBpZih0aGlzLm9wdGlvbnM/LmV4cGlyZXNJbikge1xuICAgICAgdGhpcy5uZXdTdG9yZUZvcm0uZ2V0KCdleHBpcmVzSW4nKT8ucGF0Y2hWYWx1ZSh0aGlzLm9wdGlvbnMuZXhwaXJlc0luKVxuICAgICAgdGhpcy5uZXdTdG9yZUZvcm0uZ2V0KCdleHBpcmVzSW4nKT8uZGlzYWJsZSgpXG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMubmV3U3RvcmVGb3JtLmdldCgnZXhwaXJlc0luJyk/LmVuYWJsZSgpXG4gICAgfVxuXG4gICAgaWYodGhpcy5vcHRpb25zPy5lbmNyeXB0ZWQpIHtcbiAgICAgIHRoaXMubmV3U3RvcmVGb3JtLmdldCgnZW5jcnlwdGVkJyk/LnBhdGNoVmFsdWUodGhpcy5vcHRpb25zLmVuY3J5cHRlZClcbiAgICAgIHRoaXMubmV3U3RvcmVGb3JtLmdldCgnZW5jcnlwdGVkJyk/LmRpc2FibGUoKVxuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLm5ld1N0b3JlRm9ybS5nZXQoJ2VuY3J5cHRlZCcpPy5lbmFibGUoKVxuICAgIH1cblxuICAgIC8vIG5vdGhpbmcgdG8gc3luY2hyb25pemUgLSB0ZW1wbGF0ZXMgcmVhZCBjb21wdXRlZCBzaWduYWxzIGRpcmVjdGx5XG5cbiAgfVxuXG4gIG9uQ3JlYXRlU3RvcmUoKSB7XG5cbiAgICBpZighdGhpcy5pc1ZhbGlkKSByZXR1cm5cblxuICAgIGNvbnN0IHN0b3JlID0gdGhpcy5uZXdTdG9yZUZvcm0udmFsdWVcbiAgICBpZighc3RvcmUubmFtZSB8fCBzdG9yZS5uYW1lID09PSAnJykgcmV0dXJuXG5cbiAgICBjb25zdCBvcHRpb25zID0geyBzdG9yYWdlOiB0aGlzLnR5cGUsIGVuY3J5cHRlZDogc3RvcmUuZW5jcnlwdGVkLCBleHBpcmVzSW46IHN0b3JlLmV4cGlyZXNJbiB9XG5cbiAgICB0aGlzLmxvY2FsU3RvcmFnZU1hbmFnZXJTZXJ2aWNlLmNyZWF0ZVN0b3JlKHtcbiAgICAgIG5hbWU6IHN0b3JlLm5hbWUsXG4gICAgICBkYXRhOiBzdG9yZS5kYXRhLFxuICAgICAgb3B0aW9uczogU2V0dGluZ09wdGlvbnMuYWRhcHQob3B0aW9ucylcbiAgICB9KVxuXG4gICAgdGhpcy5uZXdTdG9yZUZvcm0ucmVzZXQoKVxuICAgIHRoaXMuY3JlYXRlID0gZmFsc2VcbiAgfVxuXG4gIG9uVXBkYXRlU3RvcmUoc3RvcmU6IGFueSkge1xuXG4gICAgaWYoIXRoaXMuc3RvcmFnZUZvcm0udmFsaWQpIHJldHVyblxuXG4gICAgY29uc3Qgc3RvcmVEYXRhID0gdGhpcy5zdG9yYWdlRm9ybS52YWx1ZVxuXG4gICAgY29uc3QgZGF0YSA9IEpTT04ucGFyc2Uoc3RvcmVEYXRhLmRhdGEgfHwgJycpXG5cbiAgICBjb25zdCB0eXBlID0gKHN0b3JlRGF0YS50eXBlID09PSAnbG9jYWwnKSA/IFN0b3JhZ2VUeXBlLkdMT0JBTCA6IFN0b3JhZ2VUeXBlLlNFU1NJT05cblxuICAgIHRoaXMubG9jYWxTdG9yYWdlTWFuYWdlclNlcnZpY2UudXBkYXRlU3RvcmUoe1xuICAgICAgbmFtZTogc3RvcmUubmFtZSxcbiAgICAgIGRhdGFcbiAgICB9KVxuXG4gIH1cblxuICBvblNlbGVjdGVkUm93KHN0b3JlOiBhbnkpIHtcbiAgICB0aGlzLnN0b3JlID0gc3RvcmVcbiAgICB0aGlzLnN0b3JlU2VsZWN0ZWQuc2V0KHN0b3JlKVxuICAgIHRoaXMuY3JlYXRlID0gZmFsc2VcbiAgfVxuXG4gIG9uQ3JlYXRlKCkge1xuICAgIHRoaXMub25DYW5jZWwoKVxuICAgIHRoaXMuY3JlYXRlID0gdHJ1ZVxuICB9XG5cbiAgb25EZWxldGUoc3RvcmU6IFN0b3JhZ2VPcHRpb24pIHtcblxuICAgIHRoaXMubG9jYWxTdG9yYWdlTWFuYWdlclNlcnZpY2UuZGVsZXRlU3RvcmUoe1xuICAgICAgbmFtZTogc3RvcmUubmFtZSxcbiAgICB9KVxuXG4gICAgdGhpcy5vbkNhbmNlbCgpXG4gIH1cblxuICBvbkNhbmNlbCgpIHtcbiAgICB0aGlzLnN0b3JlU2VsZWN0ZWQuc2V0KG51bGwpXG4gICAgdGhpcy5zdG9yZSA9IG51bGxcbiAgICB0aGlzLmNyZWF0ZSA9IGZhbHNlXG4gIH1cblxuICBvblVwZGF0ZShzdG9yZTogU3RvcmFnZU9wdGlvbiwgZGF0YTogYW55KSB7XG5cbiAgICB0aGlzLmxvY2FsU3RvcmFnZU1hbmFnZXJTZXJ2aWNlLnVwZGF0ZVN0b3JlKHtcbiAgICAgIG5hbWU6IHN0b3JlLm5hbWUsXG4gICAgICBkYXRhOiBKU09OLnBhcnNlKGRhdGEpXG4gICAgfSlcblxuICAgIHRoaXMub25DYW5jZWwoKVxuXG4gIH1cblxuICBvblJlc2V0KCkge1xuICAgIHRoaXMubG9jYWxTdG9yYWdlTWFuYWdlclNlcnZpY2UucmVzZXRTdG9yZSgpXG4gIH1cblxufVxuIiwiPGRpdiBzdHlsZT1cIm1hcmdpbjogMnJlbTtcIj5cblxuICA8ZGl2IHN0eWxlPVwiZGlzcGxheTogZmxleDsgZ2FwOiAxcmVtXCI+XG4gICAgPGgyIHN0eWxlPVwicGFkZGluZy10b3A6IC41cmVtOyBkaXNwbGF5OiBmbGV4O1wiPlxuICAgICAgPGRpdiBzdHlsZT1cInBhZGRpbmctdG9wOiAuNXJlbTtcIj5cbiAgICAgICAgPHNwYW4+TG9jYWwgU3RvcmFnZSBNYW5hZ2VyPC9zcGFuPlxuICAgICAgICA8c3BhbiBzdHlsZT1cIm1hcmdpbi1sZWZ0OiAuNXJlbTtcIj5cbiAgICAgICAgICA8bWF0LWljb24gY29sb3I9XCJhY2NlbnRcIj5maWJlcl9uZXc8L21hdC1pY29uPlxuICAgICAgICA8L3NwYW4+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXY+XG4gICAgICAgIDxidXR0b24gbWF0LWljb24tYnV0dG9uIFttYXRNZW51VHJpZ2dlckZvcl09XCJtZW51XCI+XG4gICAgICAgICAgPG1hdC1pY29uPmluZm88L21hdC1pY29uPlxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgIDwvZGl2PlxuICAgIDwvaDI+XG4gICAgPHNwYW4gc3R5bGU9XCJmbGV4OjFcIj48L3NwYW4+XG4gICAgPGRpdiBzdHlsZT1cInBhZGRpbmctdG9wOiAuMjVyZW07XCI+XG4gICAgICA8bWF0LWJ1dHRvbi10b2dnbGUtZ3JvdXAgbmFtZT1cInN0b3JhZ2VcIiBbZm9ybUNvbnRyb2xdPVwidHlwZUNvbnRyb2xcIiAoY2hhbmdlKT1cIm9uQ2FuY2VsKClcIj5cbiAgICAgICAgPG1hdC1idXR0b24tdG9nZ2xlIHZhbHVlPVwiMFwiPkxvY2FsIFN0b3JhZ2U8L21hdC1idXR0b24tdG9nZ2xlPlxuICAgICAgICA8bWF0LWJ1dHRvbi10b2dnbGUgdmFsdWU9XCIxXCI+U2Vzc2lvbiBTdG9yYWdlPC9tYXQtYnV0dG9uLXRvZ2dsZT5cbiAgICAgIDwvbWF0LWJ1dHRvbi10b2dnbGUtZ3JvdXA+XG4gICAgPC9kaXY+XG4gICAgPGRpdiBzdHlsZT1cIm1hcmdpbi10b3A6IC4yNXJlbTtcIj5cbiAgICAgIDxidXR0b24gbWF0LWljb24tYnV0dG9uIChjbGljayk9XCJvbkNyZWF0ZSgpXCI+XG4gICAgICAgIDxtYXQtaWNvbj5hZGQ8L21hdC1pY29uPlxuICAgICAgPC9idXR0b24+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuXG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCJzdG9yZVByb3BzPy5zdG9yYWdlTmFtZSB8fCBzdG9yZVByb3BzPy5zdG9yYWdlU2V0dGluZ3NOYW1lXCI+XG4gICAgPGRpdiBzdHlsZT1cImRpc3BsYXk6IGZsZXg7IGdhcDogLjVyZW07IGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47IGJvcmRlcjogZ3JheSBzb2xpZCB0aGluOyBiYWNrZ3JvdW5kLWNvbG9yOiB3aGl0ZXNtb2tlOyBwYWRkaW5nOiAxcmVtO1wiXG4gICAgPlxuICAgICAgPGRpdiBzdHlsZT1cImRpc3BsYXk6IGZsZXg7XCI+XG4gICAgICAgIDxkaXYgKm5nSWY9XCJzdG9yZVByb3BzPy5zdG9yYWdlU2V0dGluZ3NOYW1lXCIgc3R5bGU9XCJmbGV4OjFcIj5cbiAgICAgICAgICBEYXRhYmFzZTogPGI+e3sgc3RvcmVQcm9wcz8uc3RvcmFnZVNldHRpbmdzTmFtZSB9fTwvYj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgKm5nSWY9XCJzdG9yZVByb3BzPy5zdG9yYWdlTmFtZVwiIHN0eWxlPVwiZmxleDoxXCI+XG4gICAgICAgICAgRGF0YTogPGI+e3sgc3RvcmVQcm9wcz8uc3RvcmFnZU5hbWUgfX08L2I+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvbmctY29udGFpbmVyPlxuXG4gIDxkaXYgc3R5bGU9XCJtYXJnaW4tdG9wOiAycmVtO1wiIFtmb3JtR3JvdXBdPVwibmV3U3RvcmVGb3JtXCIgKm5nSWY9XCJjcmVhdGU7IGVsc2UgTElTVFwiPlxuXG4gICAgPGgyPkNyZWF0ZSBTdG9yZTwvaDI+XG5cbiAgICA8ZGl2IHN0eWxlPVwiZGlzcGxheTogZmxleDsgZ2FwOiAxcmVtO1wiPlxuICAgICAgPGRpdiBzdHlsZT1cImZsZXg6MVwiPlxuICAgICAgICA8bWF0LWZvcm0tZmllbGQgYXBwZWFyYW5jZT1cIm91dGxpbmVcIj5cbiAgICAgICAgICA8bWF0LWxhYmVsPlN0b3JlIE5hbWU8L21hdC1sYWJlbD5cbiAgICAgICAgICA8aW5wdXQgbWF0SW5wdXQgcGxhY2Vob2xkZXI9XCJzYW1wbGVcIiBmb3JtQ29udHJvbE5hbWU9XCJuYW1lXCI+XG4gICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXY+XG4gICAgICAgIDxtYXQtZm9ybS1maWVsZCBhcHBlYXJhbmNlPVwib3V0bGluZVwiPlxuICAgICAgICAgIDxtYXQtbGFiZWw+RXhwaXJlcyBJbi4uLjwvbWF0LWxhYmVsPlxuICAgICAgICAgIDxtYXQtc2VsZWN0IGZvcm1Db250cm9sTmFtZT1cImV4cGlyZXNJblwiPlxuICAgICAgICAgICAgPG1hdC1vcHRpb24gdmFsdWU9XCIwXCI+Tm9uZTwvbWF0LW9wdGlvbj5cbiAgICAgICAgICAgIDxtYXQtb3B0aW9uIHZhbHVlPVwiMzBzXCI+MzAgU2Vjb25kczwvbWF0LW9wdGlvbj5cbiAgICAgICAgICAgIDxtYXQtb3B0aW9uIHZhbHVlPVwiMW1uXCI+MSBNaW51dGU8L21hdC1vcHRpb24+XG4gICAgICAgICAgICA8bWF0LW9wdGlvbiB2YWx1ZT1cIjFoclwiPjEgSG91cjwvbWF0LW9wdGlvbj5cbiAgICAgICAgICAgIDxtYXQtb3B0aW9uIHZhbHVlPVwiMWRcIj4xIERheTwvbWF0LW9wdGlvbj5cbiAgICAgICAgICA8L21hdC1zZWxlY3Q+XG4gICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgc3R5bGU9XCJtYXJnaW4tdG9wOiAxcmVtO1wiPlxuICAgICAgICA8bWF0LXNsaWRlLXRvZ2dsZSBmb3JtQ29udHJvbE5hbWU9XCJlbmNyeXB0ZWRcIj5FbmNyeXB0ZWQ8L21hdC1zbGlkZS10b2dnbGU+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cblxuICAgIDxkaXYgc3R5bGU9XCJkaXNwbGF5OiBmbGV4O1wiPlxuICAgICAgPG1hdC1mb3JtLWZpZWxkIGFwcGVhcmFuY2U9XCJvdXRsaW5lXCIgc3R5bGU9XCJmbGV4OiAxO1wiPlxuICAgICAgICA8bWF0LWxhYmVsPkRhdGEgKE11c3QgYmUgYW4gT2JqZWN0IG9yIEFycmF5IG9mIGFueSk8L21hdC1sYWJlbD5cbiAgICAgICAgPHRleHRhcmVhIG1hdElucHV0IHBsYWNlaG9sZGVyPVwiW11cIiBmb3JtQ29udHJvbE5hbWU9XCJkYXRhXCIgI2pzb24+PC90ZXh0YXJlYT5cbiAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XG4gICAgPC9kaXY+XG4gICAgPG1hdC1lcnJvciAqbmdJZj1cIiFpc1ZhbGlkSlNPTihqc29uLnZhbHVlKVwiPk5vdCBWYWxpZCBEYXRhPC9tYXQtZXJyb3I+XG5cbiAgICA8ZGl2IHN0eWxlPVwiZGlzcGxheTogZmxleDtcIj5cbiAgICAgIDxzcGFuIHN0eWxlPVwiZmxleDoxXCI+PC9zcGFuPlxuICAgICAgPGJ1dHRvbiBtYXQtc3Ryb2tlZC1idXR0b24gKGNsaWNrKT1cIm9uQ3JlYXRlU3RvcmUoKVwiIFtkaXNhYmxlZF09XCIhKGlzVmFsaWQgJiYgaXNWYWxpZEpTT04oanNvbi52YWx1ZSkpXCI+XG4gICAgICAgIFNhdmUgU3RvcmVcbiAgICAgIDwvYnV0dG9uPlxuICAgIDwvZGl2PlxuXG4gIDwvZGl2PlxuXG4gIDxuZy10ZW1wbGF0ZSAjTElTVD5cblxuICAgIDxkaXYgc3R5bGU9XCJtYXJnaW4tdG9wOiAxcmVtO1wiPlxuICAgICAgPG1hdC1kaXZpZGVyPjwvbWF0LWRpdmlkZXI+XG4gICAgPC9kaXY+XG57eyBzZXR0aW5ncygpIHwganNvbiB9fVxuICA8ZGl2ICpuZ0lmPVwiZmlsdGVyRGF0YShzZXR0aW5ncygpKSBhcyBkYXRhXCI+XG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiZGF0YS5sZW5ndGggPiAwOyBlbHNlIE5PX0RBVEFcIj5cbiAgICAgICAgPHRhYmxlIG1hdC10YWJsZSBbZGF0YVNvdXJjZV09XCJkYXRhXCI+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lciBtYXRDb2x1bW5EZWY9XCJuYW1lXCI+XG4gICAgICAgICAgICA8dGggbWF0LWhlYWRlci1jZWxsICptYXRIZWFkZXJDZWxsRGVmPiBTdG9yZSA8L3RoPlxuICAgICAgICAgICAgPHRkIG1hdC1jZWxsICptYXRDZWxsRGVmPVwibGV0IGVsZW1lbnRcIiBzdHlsZT1cImZvbnQtd2VpZ2h0OiBib2xkOyB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1wiPiB7e2VsZW1lbnQubmFtZX19IDwvdGQ+XG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgICA8bmctY29udGFpbmVyIG1hdENvbHVtbkRlZj1cImlkXCI+XG4gICAgICAgICAgICA8dGggbWF0LWhlYWRlci1jZWxsICptYXRIZWFkZXJDZWxsRGVmPiBJRCA8L3RoPlxuICAgICAgICAgICAgPHRkIG1hdC1jZWxsICptYXRDZWxsRGVmPVwibGV0IGVsZW1lbnRcIj4ge3tlbGVtZW50LmlkfX0gPC90ZD5cbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgICAgIDxuZy1jb250YWluZXIgbWF0Q29sdW1uRGVmPVwiZW5jcnlwdGVkXCI+XG4gICAgICAgICAgICA8dGggbWF0LWhlYWRlci1jZWxsICptYXRIZWFkZXJDZWxsRGVmIHN0eWxlPVwidGV4dC1hbGlnbjogY2VudGVyO1wiPiBFbmNyeXB0ZWQgPC90aD5cbiAgICAgICAgICAgIDx0ZCBtYXQtY2VsbCAqbWF0Q2VsbERlZj1cImxldCBlbGVtZW50XCIgc3R5bGU9XCJ0ZXh0LWFsaWduOiBjZW50ZXI7XCI+XG4gICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJlbGVtZW50Lm9wdGlvbnMuZW5jcnlwdGVkOyBlbHNlIE5PXCI+WUVTPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjTk8+PHNwYW4gc3R5bGU9XCJjb2xvcjpncmF5XCI+Tk88L3NwYW4+PC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgICA8bmctY29udGFpbmVyIG1hdENvbHVtbkRlZj1cImV4cGlyZXNcIj5cbiAgICAgICAgICAgIDx0aCBtYXQtaGVhZGVyLWNlbGwgKm1hdEhlYWRlckNlbGxEZWYgc3R5bGU9XCJ0ZXh0LWFsaWduOiBjZW50ZXI7XCI+IEV4cGlyZXMgPC90aD5cbiAgICAgICAgICAgIDx0ZCBtYXQtY2VsbCAqbWF0Q2VsbERlZj1cImxldCBlbGVtZW50XCIgc3R5bGU9XCJ0ZXh0LWFsaWduOiBjZW50ZXI7XCI+XG4gICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJlbGVtZW50Lm9wdGlvbnMuZXhwaXJlcyAhPT0gMDsgZWxzZSBOT19EQVRBXCI+XG4gICAgICAgICAgICAgICAge3tleHBpcmVzSW4oZWxlbWVudC5vcHRpb25zLmV4cGlyZXMpfX1cbiAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjTk9fREFUQT5cbiAgICAgICAgICAgICAgICDiiJ5cbiAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgICA8bmctY29udGFpbmVyIG1hdENvbHVtbkRlZj1cIm9wdGlvblwiPlxuICAgICAgICAgICAgPHRoIG1hdC1oZWFkZXItY2VsbCAqbWF0SGVhZGVyQ2VsbERlZj48L3RoPlxuICAgICAgICAgICAgPHRkIG1hdC1jZWxsICptYXRDZWxsRGVmPVwibGV0IGVsZW1lbnRcIiBzdHlsZT1cInBhZGRpbmctcmlnaHQ6IDA7XCI+XG4gICAgICAgICAgICAgIDxkaXYgc3R5bGU9XCJkaXNwbGF5OiBmbGV4O2p1c3RpZnktY29udGVudDogZmxleC1lbmQ7XCI+XG4gICAgICAgICAgICAgICAgPGJ1dHRvbiBtYXQtaWNvbi1idXR0b24gY29sb3I9XCJ3YXJuXCIgKGNsaWNrKT1cIm9uRGVsZXRlKGVsZW1lbnQpOyAkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcIj5cbiAgICAgICAgICAgICAgICAgIDxtYXQtaWNvbj5jbG9zZTwvbWF0LWljb24+XG4gICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgICAgIDx0ciBtYXQtaGVhZGVyLXJvdyAqbWF0SGVhZGVyUm93RGVmPVwiZGlzcGxheWVkQ29sdW1uc1wiPjwvdHI+XG4gICAgICAgICAgPHRyIG1hdC1yb3cgKm1hdFJvd0RlZj1cImxldCByb3c7IGNvbHVtbnM6IGRpc3BsYXllZENvbHVtbnM7XCIgKGNsaWNrKT1cIm9uU2VsZWN0ZWRSb3cocm93KVwiPjwvdHI+XG4gICAgICAgIDwvdGFibGU+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgPG5nLXRlbXBsYXRlICNOT19EQVRBPlxuICAgICAgICA8aDMgc3R5bGU9XCJtYXJnaW4tdG9wOiAxcmVtO1wiPk5vIERhdGE8L2gzPlxuICAgICAgPC9uZy10ZW1wbGF0ZT5cblxuICA8ZGl2ICpuZ0lmPVwic3RvcmVTZWxlY3RlZCgpIGFzIHNlbGVjdGVkU3RvcmVcIiBzdHlsZT1cIm1hcmdpbi10b3A6IDJyZW07XCI+XG4gICAgICAgIDxkaXYgc3R5bGU9XCJtYXJnaW4tYm90dG9tOiAxcmVtO1wiPlxuICAgICAgICAgIDxtYXQtZGl2aWRlcj48L21hdC1kaXZpZGVyPlxuICAgICAgICA8L2Rpdj5cblxuICA8aDM+U1RPUkU6IDxzcGFuIHN0eWxlPVwiZm9udC13ZWlnaHQ6IGJvbGQ7XCI+e3sgc2VsZWN0ZWRTdG9yZS5uYW1lIHwgdXBwZXJjYXNlIH19PC9zcGFuPjwvaDM+XG4gIDxoMz5TRVRUSU5HUzoge3sgbG9jYWxTdG9yYWdlTWFuYWdlclNlcnZpY2Uuc2V0dGluZyhzZWxlY3RlZFN0b3JlLm5hbWUpID8gKGxvY2FsU3RvcmFnZU1hbmFnZXJTZXJ2aWNlLnNldHRpbmcoc2VsZWN0ZWRTdG9yZS5uYW1lKSgpIHwganNvbikgOiAne30nIH19PC9oMz5cbiAgICAgICAgPGRpdiBzdHlsZT1cImRpc3BsYXk6IGZsZXg7XCI+XG4gICAgICAgICAgPG1hdC1mb3JtLWZpZWxkIGFwcGVhcmFuY2U9XCJvdXRsaW5lXCIgc3R5bGU9XCJmbGV4OiAxO1wiPlxuICAgICAgICAgICAgPG1hdC1sYWJlbD5EYXRhIChNdXN0IGJlIGFuIE9iamVjdCBvciBBcnJheSBvZiBhbnkpPC9tYXQtbGFiZWw+XG4gICAgICAgICAgICA8dGV4dGFyZWEgbWF0SW5wdXQgcGxhY2Vob2xkZXI9XCJbXVwiICNqc29uIFt2YWx1ZV09XCJzZWxlY3RlZFN0b3JlRGF0YSgpXCI+PC90ZXh0YXJlYT5cbiAgICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPG1hdC1lcnJvciAqbmdJZj1cIiFpc1ZhbGlkSlNPTihqc29uLnZhbHVlKVwiPk5vdCBWYWxpZCBEYXRhPC9tYXQtZXJyb3I+XG5cbiAgICAgICAgPGRpdiBzdHlsZT1cImRpc3BsYXk6IGZsZXg7IGdhcDogLjVyZW07XCI+XG4gICAgICAgICAgPHNwYW4gc3R5bGU9XCJmbGV4OjFcIj48L3NwYW4+XG4gICAgICAgICAgPGJ1dHRvbiBtYXQtc3Ryb2tlZC1idXR0b24gKGNsaWNrKT1cIm9uQ2FuY2VsKClcIj5DYW5jZWw8L2J1dHRvbj5cbiAgICAgICAgICA8YnV0dG9uIG1hdC1zdHJva2VkLWJ1dHRvbiAoY2xpY2spPVwib25VcGRhdGUoc2VsZWN0ZWRTdG9yZSwganNvbi52YWx1ZSlcIiBbZGlzYWJsZWRdPVwiIShpc1ZhbGlkSlNPTihqc29uLnZhbHVlKSlcIj5VcGRhdGU8L2J1dHRvbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cblxuICA8L25nLXRlbXBsYXRlPlxuXG4gIDxkaXYgc3R5bGU9XCJtYXJnaW4tdG9wOiAxcmVtO1wiPlxuICAgIDxtYXQtZGl2aWRlcj48L21hdC1kaXZpZGVyPlxuICA8L2Rpdj5cblxuICA8ZGl2IHN0eWxlPVwibWFyZ2luLXRvcDogMXJlbTtcIj5cbiAgICA8YnV0dG9uIG1hdC1zdHJva2VkLWJ1dHRvbiAoY2xpY2spPVwib25SZXNldCgpXCI+RGVsZXRlIEFsbCBTdG9yZXM8L2J1dHRvbj5cbiAgPC9kaXY+XG5cbjwvZGl2PlxuXG5cbjxtYXQtbWVudSAjbWVudT1cIm1hdE1lbnVcIj5cbiAgPGRpdiBzdHlsZT1cInBhZGRpbmc6IDFyZW07XCI+XG4gICAgPHA+UGxlYXNlIG5vdGUgdGhhdCB0aGUgTG9jYWxTdG9yYWdlIChlbmNyeXB0aW9uKSBhbmQgbWFuYWdlbWVudCBvZiBkYXRhIGlzIGRlcGVuZGFudCBvbiBpbml0aWFsaXppbmcgdGhlIEFQUF9JRDwvcD5cbiAgICA8cD5NdXN0IHByb3ZpZGUgYSB2YWx1ZSBmb3IgPGI+QVBQX0lEPC9iPiBpbiBBcHBNb2R1bGUtPlByb3ZpZGVyczwvcD5cbiAgICA8bWF0LWRpdmlkZXI+PC9tYXQtZGl2aWRlcj5cbiAgPGRpdiBzdHlsZT1cImZvbnQtc2l6ZTogc21hbGxlcjsgbWFyZ2luLXRvcDogLjVyZW07XCI+XG4gICAgPHA+RXhhbXBsZTogVVVJRCAoc2VsZi5jcnlwdG8ucmFuZG9tVVVJRCgpIHRvIGdlbmVyYXRlKTwvcD5cbiAgICA8ZGl2IHN0eWxlPVwiYmFja2dyb3VuZC1jb2xvcjogd2hpdGVzbW9rZTsgcGFkZGluZzogMXJlbTtcIj5cbiAgICAgICYjMTIzOzxicj5cbiAgICAgICAgcHJvdmlkZTogQVBQX0lELDxicj5cbiAgICAgICAgdXNlVmFsdWU6IFwiMDU2OTkxYWMtMzUzNy00M2FiLWI1YjktODNlZGY2NTU0ZWZmXCIsPGJyPlxuICAgICAgJiMxMjU7XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuICA8L2Rpdj5cbjwvbWF0LW1lbnU+XG4iXX0=
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
export class AIPrompt {
|
|
2
|
+
constructor(response = '') {
|
|
3
|
+
this.response = response;
|
|
4
|
+
}
|
|
5
|
+
static adapt(item) {
|
|
6
|
+
return new AIPrompt(item?.response);
|
|
7
|
+
}
|
|
8
|
+
}
|
|
9
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2FtcGxlLWFpLXByb21wdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2h0dHAtcmVxdWVzdC1tYW5hZ2VyL3NyYy9saWIvaHR0cC1yZXF1ZXN0LXNlcnZpY2VzLWRlbW8vcmVxdWVzdC1zaWduYWxzLW1hbmFnZXItZGVtby9tb2RlbHMvc2FtcGxlLWFpLXByb21wdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFJQSxNQUFNLE9BQU8sUUFBUTtJQUVuQixZQUNTLFdBQVcsRUFBRTtRQUFiLGFBQVEsR0FBUixRQUFRLENBQUs7SUFDbkIsQ0FBQztJQUVKLE1BQU0sQ0FBQyxLQUFLLENBQUMsSUFBVTtRQUVyQixPQUFPLElBQUksUUFBUSxDQUNqQixJQUFJLEVBQUUsUUFBUSxDQUNmLENBQUE7SUFFSCxDQUFDO0NBRUYiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgaW50ZXJmYWNlIEFJUHJvbXB0SW50ZXJmYWNlIHtcbiAgcmVzcG9uc2U6IHN0cmluZ1xufVxuXG5leHBvcnQgY2xhc3MgQUlQcm9tcHQgaW1wbGVtZW50cyBBSVByb21wdEludGVyZmFjZSB7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHVibGljIHJlc3BvbnNlID0gJycsXG4gICkge31cblxuICBzdGF0aWMgYWRhcHQoaXRlbT86IGFueSk6IEFJUHJvbXB0IHtcblxuICAgIHJldHVybiBuZXcgQUlQcm9tcHQoXG4gICAgICBpdGVtPy5yZXNwb25zZSxcbiAgICApXG5cbiAgfVxuXG59XG4iXX0=
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
export class ClientInfo {
|
|
2
|
+
constructor(domain = '', service = '', id = 0, name = '') {
|
|
3
|
+
this.domain = domain;
|
|
4
|
+
this.service = service;
|
|
5
|
+
this.id = id;
|
|
6
|
+
this.name = name;
|
|
7
|
+
}
|
|
8
|
+
static adapt(item) {
|
|
9
|
+
return new ClientInfo(item?.domain, item?.service, item?.id, (item?.first_name || item?.last_name) ? `${item?.first_name} ${item?.last_name}` : '');
|
|
10
|
+
}
|
|
11
|
+
}
|
|
12
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2FtcGxlLWNsaWVudC1pbmZvLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvaHR0cC1yZXF1ZXN0LW1hbmFnZXIvc3JjL2xpYi9odHRwLXJlcXVlc3Qtc2VydmljZXMtZGVtby9yZXF1ZXN0LXNpZ25hbHMtbWFuYWdlci1kZW1vL21vZGVscy9zYW1wbGUtY2xpZW50LWluZm8udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBT0EsTUFBTSxPQUFPLFVBQVU7SUFFckIsWUFDUyxTQUFTLEVBQUUsRUFDWCxVQUFVLEVBQUUsRUFDWixLQUFLLENBQUMsRUFDTixPQUFPLEVBQUU7UUFIVCxXQUFNLEdBQU4sTUFBTSxDQUFLO1FBQ1gsWUFBTyxHQUFQLE9BQU8sQ0FBSztRQUNaLE9BQUUsR0FBRixFQUFFLENBQUk7UUFDTixTQUFJLEdBQUosSUFBSSxDQUFLO0lBQ2YsQ0FBQztJQUVKLE1BQU0sQ0FBQyxLQUFLLENBQUMsSUFBVTtRQUVyQixPQUFPLElBQUksVUFBVSxDQUNuQixJQUFJLEVBQUUsTUFBTSxFQUNaLElBQUksRUFBRSxPQUFPLEVBQ2IsSUFBSSxFQUFFLEVBQUUsRUFDUixDQUFDLElBQUksRUFBRSxVQUFVLElBQUksSUFBSSxFQUFFLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLElBQUksRUFBRSxVQUFVLElBQUksSUFBSSxFQUFFLFNBQVMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQ3RGLENBQUE7SUFFSCxDQUFDO0NBRUYiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgaW50ZXJmYWNlIENsaWVudEluZm9JbnRlcmZhY2Uge1xuICBkb21haW46IHN0cmluZ1xuICBzZXJ2aWNlOiBzdHJpbmdcbiAgaWQ6IG51bWJlclxuICBuYW1lOiBzdHJpbmdcbn1cblxuZXhwb3J0IGNsYXNzIENsaWVudEluZm8gaW1wbGVtZW50cyBDbGllbnRJbmZvSW50ZXJmYWNlIHtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwdWJsaWMgZG9tYWluID0gJycsXG4gICAgcHVibGljIHNlcnZpY2UgPSAnJyxcbiAgICBwdWJsaWMgaWQgPSAwLFxuICAgIHB1YmxpYyBuYW1lID0gJycsXG4gICkge31cblxuICBzdGF0aWMgYWRhcHQoaXRlbT86IGFueSk6IENsaWVudEluZm8ge1xuXG4gICAgcmV0dXJuIG5ldyBDbGllbnRJbmZvKFxuICAgICAgaXRlbT8uZG9tYWluLFxuICAgICAgaXRlbT8uc2VydmljZSxcbiAgICAgIGl0ZW0/LmlkLFxuICAgICAgKGl0ZW0/LmZpcnN0X25hbWUgfHwgaXRlbT8ubGFzdF9uYW1lKSA/IGAke2l0ZW0/LmZpcnN0X25hbWV9ICR7aXRlbT8ubGFzdF9uYW1lfWAgOiAnJyxcbiAgICApXG5cbiAgfVxuXG59XG5cblxuIl19
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
export class ClientInfoMapper {
|
|
2
|
+
constructor(id = 0, first_name = '', last_name = '', email = '') {
|
|
3
|
+
this.id = id;
|
|
4
|
+
this.first_name = first_name;
|
|
5
|
+
this.last_name = last_name;
|
|
6
|
+
this.email = email;
|
|
7
|
+
}
|
|
8
|
+
static adapt(item) {
|
|
9
|
+
const first_name = (item?.name) ? item.name.split(' ')[0] : '';
|
|
10
|
+
const last_name = (item?.name) ? item.name.split(' ')[1] : '';
|
|
11
|
+
return new ClientInfoMapper(item?.id, first_name, last_name, item?.email);
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2FtcGxlLW1hcHBlci1jbGllbnQtaW5mby5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2h0dHAtcmVxdWVzdC1tYW5hZ2VyL3NyYy9saWIvaHR0cC1yZXF1ZXN0LXNlcnZpY2VzLWRlbW8vcmVxdWVzdC1zaWduYWxzLW1hbmFnZXItZGVtby9tb2RlbHMvc2FtcGxlLW1hcHBlci1jbGllbnQtaW5mby50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFPQSxNQUFNLE9BQU8sZ0JBQWdCO0lBRTNCLFlBQ1MsS0FBSyxDQUFDLEVBQ04sYUFBYSxFQUFFLEVBQ2YsWUFBWSxFQUFFLEVBQ2QsUUFBUSxFQUFFO1FBSFYsT0FBRSxHQUFGLEVBQUUsQ0FBSTtRQUNOLGVBQVUsR0FBVixVQUFVLENBQUs7UUFDZixjQUFTLEdBQVQsU0FBUyxDQUFLO1FBQ2QsVUFBSyxHQUFMLEtBQUssQ0FBSztJQUNoQixDQUFDO0lBRUosTUFBTSxDQUFDLEtBQUssQ0FBQyxJQUFVO1FBRXJCLE1BQU0sVUFBVSxHQUFHLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFBO1FBQzlELE1BQU0sU0FBUyxHQUFHLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFBO1FBRTdELE9BQU8sSUFBSSxnQkFBZ0IsQ0FDekIsSUFBSSxFQUFFLEVBQUUsRUFDUixVQUFVLEVBQ1YsU0FBUyxFQUNULElBQUksRUFBRSxLQUFLLENBQ1osQ0FBQTtJQUVILENBQUM7Q0FFRiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBpbnRlcmZhY2UgQ2xpZW50SW5mb01hcHBlckludGVyZmFjZSB7XG4gIGlkOiBudW1iZXJcbiAgZmlyc3RfbmFtZTogc3RyaW5nXG4gIGxhc3RfbmFtZTogc3RyaW5nXG4gIGVtYWlsOiBzdHJpbmdcbn1cblxuZXhwb3J0IGNsYXNzIENsaWVudEluZm9NYXBwZXIgaW1wbGVtZW50cyBDbGllbnRJbmZvTWFwcGVySW50ZXJmYWNlIHtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwdWJsaWMgaWQgPSAwLFxuICAgIHB1YmxpYyBmaXJzdF9uYW1lID0gJycsXG4gICAgcHVibGljIGxhc3RfbmFtZSA9ICcnLFxuICAgIHB1YmxpYyBlbWFpbCA9ICcnLFxuICApIHt9XG5cbiAgc3RhdGljIGFkYXB0KGl0ZW0/OiBhbnkpOiBDbGllbnRJbmZvTWFwcGVyIHtcblxuICAgIGNvbnN0IGZpcnN0X25hbWUgPSAoaXRlbT8ubmFtZSkgPyBpdGVtLm5hbWUuc3BsaXQoJyAnKVswXSA6ICcnXG4gICAgY29uc3QgbGFzdF9uYW1lID0gKGl0ZW0/Lm5hbWUpID8gaXRlbS5uYW1lLnNwbGl0KCcgJylbMV0gOiAnJ1xuXG4gICAgcmV0dXJuIG5ldyBDbGllbnRJbmZvTWFwcGVyKFxuICAgICAgaXRlbT8uaWQsXG4gICAgICBmaXJzdF9uYW1lLFxuICAgICAgbGFzdF9uYW1lLFxuICAgICAgaXRlbT8uZW1haWwsXG4gICAgKVxuXG4gIH1cblxufVxuXG5cbiJdfQ==
|