@blackbaud/skyux-lib-addin-client 9.1.0 → 9.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/README.md CHANGED
@@ -252,24 +252,34 @@ this.addinClientService.showWait();
252
252
  this.addinClientService.hideWait();
253
253
  ```
254
254
 
255
- The optional plugin can be installed by running `npm install @blackbaud/skyux-builder-plugin-addin-client`, and then adding it to the `plugins` array in your `skyuxconfig.json` file:
255
+ ## Additional configuration
256
+
257
+ The SKY UX Add-in Client allows for additional configuration to be specified by extending `AddinClientConfigService`.
258
+
259
+ You can allow additional origins where your add-in client may run within a Blackbaud host page. Additional origins are supplied as regular expression patterns. The `AddinClientService` already allows several Blackbaud host origins by default. If you find a need to extend the defaults, you may do so by overriding the `AddinClientConfigService`'s `getAddinClientConfig()` method.
256
260
 
257
261
  ```js
258
- {
259
- "mode": "easy",
260
- "compileMode": "aot",
261
- "a11y": true,
262
- "plugins": [
263
- '@blackbaud/skyux-builder-plugin-addin-client'
264
- ],
265
- "params": {
266
- "envid": {
267
- "required": true
268
- }
262
+ class AddinConfigService extends AddinClientConfigService {
263
+ public override getAddinClientConfig(): AddinClientConfig {
264
+ return {
265
+ allowedOrigins: [
266
+ /^https\:\/\/[\w\-\.]+\.additionalblackbauddomain\.com$/
267
+ ]
268
+ };
269
269
  }
270
270
  }
271
- ```
272
271
 
273
- The plugin automatically injects the Environment ID into your component, making it available via the [SkyAppConfig](https://developer.blackbaud.com/skyux/learn/reference/configuration/apply-appsettings) service.
272
+ @NgModule({
273
+ // specify providers
274
+ providers: [
275
+ AddinClientService,
276
+ {
277
+ provide: AddinClientConfigService,
278
+ useClass: AddinConfigService
279
+ }
280
+ ]
281
+ })
282
+ export class MyModule { }
283
+ ```
274
284
 
275
285
  For more information on creating SKY Add-ins, view the documentation on the [SKY Developer Portal](https://developer.blackbaud.com/skyapi/docs/addins)
@@ -1,4 +1,5 @@
1
1
  export * from './src/addin-client.service';
2
+ export * from './src/addin-client-config.service';
2
3
  export * from './src/events/addin-event';
3
4
  export * from './src/events/addin-event-handler-instance';
4
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3Byb2plY3RzL2FkZGluLWNsaWVudC9zcmMvcHVibGljLWFwaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLDRCQUE0QixDQUFDO0FBQzNDLGNBQWMsMEJBQTBCLENBQUM7QUFDekMsY0FBYywyQ0FBMkMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vc3JjL2FkZGluLWNsaWVudC5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vc3JjL2V2ZW50cy9hZGRpbi1ldmVudCc7XG5leHBvcnQgKiBmcm9tICcuL3NyYy9ldmVudHMvYWRkaW4tZXZlbnQtaGFuZGxlci1pbnN0YW5jZSc7XG4iXX0=
5
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3Byb2plY3RzL2FkZGluLWNsaWVudC9zcmMvcHVibGljLWFwaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLDRCQUE0QixDQUFDO0FBQzNDLGNBQWMsbUNBQW1DLENBQUM7QUFDbEQsY0FBYywwQkFBMEIsQ0FBQztBQUN6QyxjQUFjLDJDQUEyQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9zcmMvYWRkaW4tY2xpZW50LnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9zcmMvYWRkaW4tY2xpZW50LWNvbmZpZy5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vc3JjL2V2ZW50cy9hZGRpbi1ldmVudCc7XG5leHBvcnQgKiBmcm9tICcuL3NyYy9ldmVudHMvYWRkaW4tZXZlbnQtaGFuZGxlci1pbnN0YW5jZSc7XG4iXX0=
@@ -0,0 +1,13 @@
1
+ /**
2
+ * Implement this class with your own data to initialize the add-in client service.
3
+ */
4
+ export class AddinClientConfigService {
5
+ /**
6
+ * Gets the AddinClientConfig object that will be injected the
7
+ * AddinClient instance when instantiated.
8
+ */
9
+ getAddinClientConfig() {
10
+ return {};
11
+ }
12
+ }
13
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWRkaW4tY2xpZW50LWNvbmZpZy5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvYWRkaW4tY2xpZW50L3NyYy9zcmMvYWRkaW4tY2xpZW50LWNvbmZpZy5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBOztHQUVHO0FBQ0gsTUFBTSxPQUFnQix3QkFBd0I7SUFDNUM7OztPQUdHO0lBQ0ksb0JBQW9CO1FBQ3pCLE9BQU8sRUFBRSxDQUFDO0lBQ1osQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQWRkaW5DbGllbnRDb25maWcgfSBmcm9tIFwiQGJsYWNrYmF1ZC9za3ktYWRkaW4tY2xpZW50XCI7XG5cbi8qKlxuICogSW1wbGVtZW50IHRoaXMgY2xhc3Mgd2l0aCB5b3VyIG93biBkYXRhIHRvIGluaXRpYWxpemUgdGhlIGFkZC1pbiBjbGllbnQgc2VydmljZS4gXG4gKi8gXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgQWRkaW5DbGllbnRDb25maWdTZXJ2aWNlIHtcbiAgLyoqXG4gICAqIEdldHMgdGhlIEFkZGluQ2xpZW50Q29uZmlnIG9iamVjdCB0aGF0IHdpbGwgYmUgaW5qZWN0ZWQgdGhlXG4gICAqIEFkZGluQ2xpZW50IGluc3RhbmNlIHdoZW4gaW5zdGFudGlhdGVkLlxuICAgKi9cbiAgcHVibGljIGdldEFkZGluQ2xpZW50Q29uZmlnKCk6IEFkZGluQ2xpZW50Q29uZmlnIHtcbiAgICByZXR1cm4ge307XG4gIH1cbn1cbiJdfQ==
@@ -3,12 +3,14 @@ import { AddinClient } from '@blackbaud/sky-addin-client';
3
3
  import { SkyAppConfig } from '@skyux/config';
4
4
  import { SkyTheme, SkyThemeMode, SkyThemeService, SkyThemeSettings } from '@skyux/theme';
5
5
  import { AsyncSubject, from } from 'rxjs';
6
+ import { AddinClientConfigService } from './addin-client-config.service';
6
7
  import { AddinEventHandlerInstance } from './events';
7
8
  import * as i0 from "@angular/core";
8
9
  export class AddinClientService {
9
10
  #config;
10
11
  #rendererFactory;
11
12
  #themeService;
13
+ #addinClientConfigService;
12
14
  constructor() {
13
15
  // Init args
14
16
  this._args = new AsyncSubject();
@@ -41,6 +43,7 @@ export class AddinClientService {
41
43
  this.#config = inject(SkyAppConfig, { optional: true });
42
44
  this.#rendererFactory = inject(RendererFactory2);
43
45
  this.#themeService = inject(SkyThemeService);
46
+ this.#addinClientConfigService = inject(AddinClientConfigService, { optional: true });
44
47
  this.addinClient = new AddinClient({
45
48
  callbacks: {
46
49
  init: (args) => {
@@ -69,7 +72,8 @@ export class AddinClientService {
69
72
  themeChange: (settings) => {
70
73
  this.setTheme(settings);
71
74
  }
72
- }
75
+ },
76
+ config: this.#addinClientConfigService?.getAddinClientConfig()
73
77
  });
74
78
  }
75
79
  /**
@@ -246,13 +250,13 @@ export class AddinClientService {
246
250
  return SkyThemeMode.presets.light;
247
251
  }
248
252
  }
249
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.2", ngImport: i0, type: AddinClientService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
250
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.2", ngImport: i0, type: AddinClientService, providedIn: 'root' }); }
253
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.6", ngImport: i0, type: AddinClientService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
254
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.6", ngImport: i0, type: AddinClientService, providedIn: 'root' }); }
251
255
  }
252
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.2", ngImport: i0, type: AddinClientService, decorators: [{
256
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.6", ngImport: i0, type: AddinClientService, decorators: [{
253
257
  type: Injectable,
254
258
  args: [{
255
259
  providedIn: 'root'
256
260
  }]
257
261
  }], ctorParameters: () => [] });
258
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWRkaW4tY2xpZW50LnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9hZGRpbi1jbGllbnQvc3JjL3NyYy9hZGRpbi1jbGllbnQuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsWUFBWSxFQUNaLFVBQVUsRUFDVixnQkFBZ0IsRUFDaEIsTUFBTSxFQUNQLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFDTCxXQUFXLEVBZVosTUFBTSw2QkFBNkIsQ0FBQztBQUNyQyxPQUFPLEVBQ0wsWUFBWSxFQUNiLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFDTCxRQUFRLEVBQ1IsWUFBWSxFQUNaLGVBQWUsRUFDZixnQkFBZ0IsRUFDakIsTUFBTSxjQUFjLENBQUM7QUFDdEIsT0FBTyxFQUNMLFlBQVksRUFFWixJQUFJLEVBQ0wsTUFBTSxNQUFNLENBQUM7QUFDZCxPQUFPLEVBRUwseUJBQXlCLEVBQzFCLE1BQU0sVUFBVSxDQUFDOztBQUtsQixNQUFNLE9BQU8sa0JBQWtCO0lBc0M3QixPQUFPLENBQTRDO0lBQ25ELGdCQUFnQixDQUE0QjtJQUM1QyxhQUFhLENBQTJCO0lBRXhDO1FBdkNBLFlBQVk7UUFDSixVQUFLLEdBQXNDLElBQUksWUFBWSxFQUF1QixDQUFDO1FBQ3BGLFNBQUksR0FBb0MsSUFBSSxDQUFDLEtBQUssQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUV6RSxzQkFBc0I7UUFDdEI7O1dBRUc7UUFDSSxnQkFBVyxHQUFzQixJQUFJLFlBQVksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUUvRDs7V0FFRztRQUNJLGtCQUFhLEdBQXNCLElBQUksWUFBWSxFQUFFLENBQUM7UUFFN0Q7O1dBRUc7UUFDSSxvQkFBZSxHQUFzQixJQUFJLFlBQVksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUVuRTs7V0FFRztRQUNJLHdCQUFtQixHQUFzQixJQUFJLFlBQVksQ0FBQyxJ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QUZqQixNQUFNOzsyRkFFUCxrQkFBa0I7a0JBSDlCLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgRXZlbnRFbWl0dGVyLFxuICBJbmplY3RhYmxlLFxuICBSZW5kZXJlckZhY3RvcnkyLFxuICBpbmplY3Rcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICBBZGRpbkNsaWVudCxcbiAgQWRkaW5DbGllbnRDbG9zZU1vZGFsQXJncyxcbiAgQWRkaW5DbGllbnRFdmVudEFyZ3MsXG4gIEFkZGluQ2xpZW50SW5pdEFyZ3MsXG4gIEFkZGluQ2xpZW50TmF2aWdhdGVBcmdzLFxuICBBZGRpbkNsaWVudE9wZW5IZWxwQXJncyxcbiAgQWRkaW5DbGllbnRTaG93Q29uZmlybUFyZ3MsXG4gIEFkZGluQ2xpZW50U2hvd0Vycm9yQXJncyxcbiAgQWRkaW5DbGllbnRTaG93Rmx5b3V0QXJncyxcbiAgQWRkaW5DbGllbnRTaG93Rmx5b3V0UmVzdWx0LFxuICBBZGRpbkNsaWVudFNob3dNb2RhbEFyZ3MsXG4gIEFkZGluQ2xpZW50U2hvd01vZGFsUmVzdWx0LFxuICBBZGRpbkNsaWVudFNob3dUb2FzdEFyZ3MsXG4gIEFkZGluQ2xpZW50VGhlbWVTZXR0aW5ncyxcbiAgQWRkaW5FdmVudENhbGxiYWNrXG59IGZyb20gJ0BibGFja2JhdWQvc2t5LWFkZGluLWNsaWVudCc7XG5pbXBvcnQge1xuICBTa3lBcHBDb25maWcsIFNreXV4Q29uZmlnQXBwU3VwcG9ydGVkVGhlbWVcbn0gZnJvbSAnQHNreXV4L2NvbmZpZyc7XG5pbXBvcnQge1xuICBTa3lUaGVtZSxcbiAgU2t5VGhlbWVNb2RlLFxuICBTa3lUaGVtZVNlcnZpY2UsXG4gIFNreVRoZW1lU2V0dGluZ3Ncbn0gZnJvbSAnQHNreXV4L3RoZW1lJztcbmltcG9ydCB7XG4gIEFzeW5jU3ViamVjdCxcbiAgT2JzZXJ2YWJsZSxcbiAgZnJvbVxufSBmcm9tICdyeGpzJztcbmltcG9ydCB7XG4gIEFkZGluRXZlbnQsXG4gIEFkZGluRXZlbnRIYW5kbGVySW5zdGFuY2Vcbn0gZnJvbSAnLi9ldmVudHMnO1xuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBBZGRpbkNsaWVudFNlcnZpY2Uge1xuICBwdWJsaWMgcmVhZG9ubHkgYWRkaW5DbGllbnQ6IEFkZGluQ2xpZW50O1xuXG4gIC8vIEluaXQgYXJnc1xuICBwcml2YXRlIF9hcmdzOiBBc3luY1N1YmplY3Q8QWRkaW5DbGllbnRJbml0QXJncz4gPSBuZXcgQXN5bmNTdWJqZWN0PEFkZGluQ2xpZW50SW5pdEFyZ3M+KCk7XG4gIHB1YmxpYyBhcmdzOiBPYnNlcnZhYmxlPEFkZGluQ2xpZW50SW5pdEFyZ3M+ID0gdGhpcy5fYXJncy5hc09ic2VydmFibGUoKTtcblxuICAvLyBBZGRpbiBDbGllbnQgRXZlbnRzXG4gIC8qKlxuICAgKiBFdmVudCBlbWl0dGVkIGZvciBidXR0b24gYWRkLWlucyBpbmRpY2F0aW5nIHRoYXQgdGhlIGJ1dHRvbiB3YXMgY2xpY2tlZC5cbiAgICovXG4gIHB1YmxpYyBidXR0b25DbGljazogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKHRydWUpO1xuXG4gIC8qKlxuICAgKiBFdmVudCBlbWl0dGVkIGZvciBhZGQtaW5zIHdoZW4gY29udGV4dCBpbmZvcm1hdGlvbiBoYXMgYmVlbiB1cGRhdGVkXG4gICAqL1xuICBwdWJsaWMgdXBkYXRlQ29udGV4dDogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgLyoqXG4gICAqIEV2ZW50IGVtaXR0ZWQgZm9yIGZseW91dCBhZGQtaW5zIGluZGljYXRpbmcgdGhhdCB0aGUgbmV4dCBidXR0b24gd2FzIGNsaWNrZWQuXG4gICAqL1xuICBwdWJsaWMgZmx5b3V0TmV4dENsaWNrOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIodHJ1ZSk7XG5cbiAgLyoqXG4gICAqIEV2ZW50IGVtaXR0ZWQgZm9yIGZseW91dCBhZGQtaW5zIGluZGljYXRpbmcgdGhhdCB0aGUgcHJldmlvdXMgYnV0dG9uIHdhcyBjbGlja2VkLlxuICAgKi9cbiAgcHVibGljIGZseW91dFByZXZpb3VzQ2xpY2s6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcih0cnVlKTtcblxuICAvKipcbiAgICogRXZlbnQgZW1pdHRlZCBmb3IgdGlsZSBhZGQtaW5zIGluZGljYXRpbmcgdGhhdCB0aGUgaGVscCBidXR0b24gd2FzIGNsaWNrZWQuXG4gICAqL1xuICBwdWJsaWMgaGVscENsaWNrOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIodHJ1ZSk7XG5cbiAgLyoqXG4gICAqIEV2ZW50IGVtaXR0ZWQgZm9yIHRpbGUgYWRkLWlucyBpbmRpY2F0aW5nIHRoYXQgdGhlIHNldHRpbmdzIGJ1dHRvbiB3YXMgY2xpY2tlZC5cbiAgICovXG4gIHB1YmxpYyBzZXR0aW5nc0NsaWNrOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIodHJ1ZSk7XG5cbiAgI2NvbmZpZyA9IGluamVjdChTa3lBcHBDb25maWcsIHsgb3B0aW9uYWw6IHRydWUgfSk7XG4gICNyZW5kZXJlckZhY3RvcnkgPSBpbmplY3QoUmVuZGVyZXJGYWN0b3J5Mik7XG4gICN0aGVtZVNlcnZpY2UgPSBpbmplY3QoU2t5VGhlbWVTZXJ2aWNlKTtcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICB0aGlzLmFkZGluQ2xpZW50ID0gbmV3IEFkZGluQ2xpZW50KHtcbiAgICAgIGNhbGxiYWNrczoge1xuICAgICAgICBpbml0OiAoYXJnczogQWRkaW5DbGllbnRJbml0QXJncykgPT4ge1xuICAgICAgICAgIHRoaXMuaW5pdGlhbGl6ZVRoZW1lKGFyZ3M/LnRoZW1lU2V0dGluZ3MpO1xuXG4gICAgICAgICAgdGhpcy5fYXJncy5uZXh0KGFyZ3MpO1xuICAgICAgICAgIHRoaXMuX2FyZ3MuY29tcGxldGUoKTtcbiAgICAgICAgfSxcbiAgICAgICAgYnV0dG9uQ2xpY2s6ICgpID0+IHtcbiAgICAgICAgICB0aGlzLmJ1dHRvbkNsaWNrLmVtaXQoKTtcbiAgICAgICAgfSxcbiAgICAgICAgZmx5b3V0TmV4dENsaWNrOiAoKSA9PiB7XG4gICAgICAgICAgdGhpcy5mbHlvdXROZXh0Q2xpY2suZW1pdCgpO1xuICAgICAgICB9LFxuICAgICAgICBmbHlvdXRQcmV2aW91c0NsaWNrOiAoKSA9PiB7XG4gICAgICAgICAgdGhpcy5mbHlvdXRQcmV2aW91c0NsaWNrLmVtaXQoKTtcbiAgICAgICAgfSxcbiAgICAgICAgaGVscENsaWNrOiAoKSA9PiB7XG4gICAgICAgICAgdGhpcy5oZWxwQ2xpY2suZW1pdCgpO1xuICAgICAgICB9LFxuICAgICAgICBzZXR0aW5nc0NsaWNrOiAoKSA9PiB7XG4gICAgICAgICAgdGhpcy5zZXR0aW5nc0NsaWNrLmVtaXQoKTtcbiAgICAgICAgfSxcbiAgICAgICAgdXBkYXRlQ29udGV4dDogKGNvbnRleHQ6IGFueSkgPT4ge1xuICAgICAgICAgIHRoaXMudXBkYXRlQ29udGV4dC5lbWl0KGNvbnRleHQpO1xuICAgICAgICB9LFxuICAgICAgICB0aGVtZUNoYW5nZTogKHNldHRpbmdzOiBBZGRpbkNsaWVudFRoZW1lU2V0dGluZ3MpID0+IHtcbiAgICAgICAgICB0aGlzLnNldFRoZW1lKHNldHRpbmdzKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIEluZm9ybXMgdGhlIGhvc3QgdG8gY2xvc2UgdGhpcyBtb2RhbCBhZGQtaW4uXG4gICAqIFNob3VsZCBvbmx5IGJlIHVzZWQgZnJvbSB3aXRoaW4gdGhlIG1vZGFsIGFkZC1pbiBhbmQgbm90IHRoZSBwYXJlbnQgYWRkLWluLlxuICAgKiBAcGFyYW0gYXJncyBBcmd1bWVudHMgdG8gcHJvdmlkZSBhIGNvbnRleHQgb2JqZWN0IGJhY2sgdG8gdGhlIHBhcmVudCBhZGQtaW4uXG4gICAqL1xuICBwdWJsaWMgY2xvc2VNb2RhbChhcmdzOiBBZGRpbkNsaWVudENsb3NlTW9kYWxBcmdzKTogdm9pZCB7XG4gICAgdGhpcy5hZGRpbkNsaWVudC5jbG9zZU1vZGFsKGFyZ3MpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlcXVlc3RzIHRoZSBob3N0IHBhZ2UgdG8gbGF1bmNoIGEgbW9kYWwgYWRkLWluLlxuICAgKiBAcGFyYW0gYXJncyBBcmd1bWVudHMgZm9yIGxhdW5jaGluZyB0aGUgbW9kYWwuXG4gICAqIEByZXR1cm5zIFJldHVybnMgYW4gb2JzZXJ2YWJsZSB0aGF0IHdpbGwgcHVibGlzaCBhIHZhbHVlIHdoZW4gdGhlIG1vZGFsIGFkZC1pbiBpcyBjbG9zZWQuXG4gICAqIE9ic2VydmFibGVzIHdpbGwgcHVibGlzaCB2YWx1ZXMgd2l0aCBjb250ZXh0IGRhdGEgcGFzc2VkIGZyb20gdGhlIG1vZGFsIGFkZC1pbidzIGNsb3NlTW9kYWwgY2FsbC5cbiAgICovXG4gIHB1YmxpYyBzaG93TW9kYWwoYXJnczogQWRkaW5DbGllbnRTaG93TW9kYWxBcmdzKTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICBsZXQgbW9kYWxSZXR1cm46IEFkZGluQ2xpZW50U2hvd01vZGFsUmVzdWx0ID0gdGhpcy5hZGRpbkNsaWVudC5zaG93TW9kYWwoYXJncyk7XG4gICAgcmV0dXJuIGZyb20obW9kYWxSZXR1cm4ubW9kYWxDbG9zZWQpO1xuICB9XG5cbiAgLyoqXG4gICAqIENsZWFucyB1cCB0aGUgQWRkaW5DbGllbnQsIHJlbGVhc2luZyBhbGwgcmVzb3VyY2VzLlxuICAgKi9cbiAgcHVibGljIGRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5hZGRpbkNsaWVudC5kZXN0cm95KCk7XG4gIH1cblxuICAvKipcbiAgICogUmVxdWVzdHMgdGhlIGhvc3QgcGFnZSB0byBuYXZpZ2F0ZS5cbiAgICogQHBhcmFtIGFyZ3MgQXJndW1lbnRzIGRlc2NyaWJpbmcgdGhlIG5hdmlnYXRpb24gcmVxdWVzdC5cbiAgICovXG4gIHB1YmxpYyBuYXZpZ2F0ZShhcmdzOiBBZGRpbkNsaWVudE5hdmlnYXRlQXJncyk6IHZvaWQge1xuICAgIHRoaXMuYWRkaW5DbGllbnQubmF2aWdhdGUoYXJncyk7XG4gIH1cblxuICAvKipcbiAgICogSW5mb3JtcyB0aGUgaG9zdCB0byBvcGVuIHRoZSBoZWxwIHRhYiB3aXRoIHRoZSBzcGVjaWZpZWQgaGVscCBrZXkuXG4gICAqIEBwYXJhbSBhcmdzIEFyZ3VtZW50cyBmb3IgbGF1bmNoaW5nIHRoZSBoZWxwIHRhYi5cbiAgICovXG4gIHB1YmxpYyBvcGVuSGVscChhcmdzOiBBZGRpbkNsaWVudE9wZW5IZWxwQXJncyk6IHZvaWQge1xuICAgIHRoaXMuYWRkaW5DbGllbnQub3BlbkhlbHAoYXJncyk7XG4gIH1cblxuICAvKipcbiAgICogUmVxdWVzdHMgYSB1c2VyIGlkZW50aXR5IHRva2VuIGZvciB0aGUgY3VycmVudCB1c2VyLlxuICAgKiBAcmV0dXJucyBSZXR1cm5zIGFuIG9ic2VydmFibGUgd2hpY2ggd2lsbCBwdWJsaXNoIHRoZSB0b2tlbiB2YWx1ZS5cbiAgICovXG4gIHB1YmxpYyBnZXRVc2VySWRlbnRpdHlUb2tlbigpOiBPYnNlcnZhYmxlPHN0cmluZz4ge1xuICAgIHJldHVybiBmcm9tKHRoaXMuYWRkaW5DbGllbnQuZ2V0VXNlcklkZW50aXR5VG9rZW4oKSk7XG4gIH1cblxuICAvKipcbiAgICogQGRlcHJlY2F0ZWQgVXNlIGdldFVzZXJJZGVudGl0eVRva2VuXG4gICAqL1xuICBwdWJsaWMgZ2V0QXV0aFRva2VuKCk6IE9ic2VydmFibGU8c3RyaW5nPiB7XG4gICAgcmV0dXJuIGZyb20odGhpcy5hZGRpbkNsaWVudC5nZXRVc2VySWRlbnRpdHlUb2tlbigpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBJbmZvcm1zIHRoZSBob3N0IHRvIHNob3cgYSB0b2FzdCBtZXNzYWdlLlxuICAgKiBAcGFyYW0gYXJncyBBcmd1bWVudHMgZm9yIHNob3dpbmcgYSB0b2FzdC5cbiAgICovXG4gIHB1YmxpYyBzaG93VG9hc3QoYXJnczogQWRkaW5DbGllbnRTaG93VG9hc3RBcmdzKTogdm9pZCB7XG4gICAgdGhpcy5hZGRpbkNsaWVudC5zaG93VG9hc3QoYXJncyk7XG4gIH1cblxuICAvKipcbiAgICogUmVxdWVzdHMgdGhlIGhvc3QgcGFnZSB0byBsYXVuY2ggYSBmbHlvdXQgYWRkLWluLlxuICAgKiBAcGFyYW0gYXJncyBBcmd1bWVudHMgZm9yIGxhdW5jaGluZyB0aGUgZmx5b3V0LlxuICAgKiBAcmV0dXJucyBSZXR1cm5zIGFuIG9ic2VydmFibGUgdGhhdCB3aWxsIG5vdGlmeSB3aGVuIHRoZSBmbHlvdXQgYWRkLWluIGlzIGNsb3NlZC5cbiAgICovXG4gIHB1YmxpYyBzaG93Rmx5b3V0KGFyZ3M6IEFkZGluQ2xpZW50U2hvd0ZseW91dEFyZ3MpOiBPYnNlcnZhYmxlPHZvaWQ+IHtcbiAgICBjb25zdCBmbHlvdXRSZXR1cm46IEFkZGluQ2xpZW50U2hvd0ZseW91dFJlc3VsdCA9IHRoaXMuYWRkaW5DbGllbnQuc2hvd0ZseW91dChhcmdzKTtcbiAgICByZXR1cm4gZnJvbShmbHlvdXRSZXR1cm4uZmx5b3V0Q2xvc2VkKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXF1ZXN0cyB0aGUgaG9zdCBwYWdlIHRvIGNsb3NlIHRoZSBmbHlvdXQgYWRkLWluLlxuICAgKi9cbiAgcHVibGljIGNsb3NlRmx5b3V0KCk6IHZvaWQge1xuICAgIHRoaXMuYWRkaW5DbGllbnQuY2xvc2VGbHlvdXQoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXF1ZXN0cyB0aGUgaG9zdCBwYWdlIHRvIHNob3cgYSBjb25maXJtIGRpYWxvZy5cbiAgICogQHBhcmFtIGFyZ3MgQXJndW1lbnRzIGZvciBzaG93aW5nIGEgY29uZmlybSBkaWFsb2cuXG4gICAqIEByZXR1cm5zIFJldHVybnMgYW4gb2JzZXJ2YWJsZSB3aGljaCB3aWxsIHB1Ymxpc2ggdGhlIGNvbmZpcm0gYWN0aW9uIHZhbHVlLlxuICAgKi9cbiAgcHVibGljIHNob3dDb25maXJtKGFyZ3M6IEFkZGluQ2xpZW50U2hvd0NvbmZpcm1BcmdzKTogT2JzZXJ2YWJsZTxzdHJpbmc+IHtcbiAgICByZXR1cm4gZnJvbSh0aGlzLmFkZGluQ2xpZW50LnNob3dDb25maXJtKGFyZ3MpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBJbmZvcm1zIHRoZSBob3N0IHRvIHNob3cgYW4gZXJyb3IgZGlhbG9nLlxuICAgKiBAcGFyYW0gYXJncyBBcmd1bWVudHMgZm9yIHNob3dpbmcgYW4gZXJyb3IgZGlhbG9nLlxuICAgKi9cbiAgcHVibGljIHNob3dFcnJvcihhcmdzOiBBZGRpbkNsaWVudFNob3dFcnJvckFyZ3MpOiB2b2lkIHtcbiAgICB0aGlzLmFkZGluQ2xpZW50LnNob3dFcnJvcihhcmdzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXF1ZXN0cyB0aGUgaG9zdCBwYWdlIHRvIHNob3cgYSBwYWdlIGJsb2NraW5nIHdhaXQgaW5kaWNhdG9yLlxuICAgKi9cbiAgcHVibGljIHNob3dXYWl0KCk6IHZvaWQge1xuICAgIHRoaXMuYWRkaW5DbGllbnQuc2hvd1dhaXQoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXF1ZXN0cyB0aGUgaG9zdCBwYWdlIHRvIGhpZGUgYSBwYWdlIGJsb2NraW5nIHdhaXQgaW5kaWNhdG9yLlxuICAgKi9cbiAgcHVibGljIGhpZGVXYWl0KCk6IHZvaWQge1xuICAgIHRoaXMuYWRkaW5DbGllbnQuaGlkZVdhaXQoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZWdpc3RlcnMgYW4gZXZlbnQgaGFuZGxlciBmb3IgdGhlIHByb3ZpZGVkIGV2ZW50IHR5cGUuXG4gICAqIEBwYXJhbSBldmVudFR5cGUgVGhlIGV2ZW50IHR5cGUgdG8gcmVnaXN0ZXIuXG4gICAqIEByZXR1cm5zIEFkZGluRXZlbnRIYW5kbGVySW5zdGFuY2VcbiAgICovXG4gIHB1YmxpYyBhZGRFdmVudEhhbmRsZXIoZXZlbnRUeXBlOiBzdHJpbmcpOiBBZGRpbkV2ZW50SGFuZGxlckluc3RhbmNlIHtcbiAgICBsZXQgZXZlbnRIYW5kbGVySW5zdGFuY2UgPSBuZXcgQWRkaW5FdmVudEhhbmRsZXJJbnN0YW5jZSgpO1xuICAgIGV2ZW50SGFuZGxlckluc3RhbmNlLmFkZGluRXZlbnQgPSBuZXcgRXZlbnRFbWl0dGVyPEFkZGluRXZlbnQ+KCk7XG5cbiAgICBjb25zdCBldmVudENhbGxiYWNrOiBBZGRpbkV2ZW50Q2FsbGJhY2sgPSAoY29udGV4dCwgZG9uZSkgPT4ge1xuICAgICAgZXZlbnRIYW5kbGVySW5zdGFuY2UuYWRkaW5FdmVudC5lbWl0KHtcbiAgICAgICAgY29udGV4dCxcbiAgICAgICAgZG9uZVxuICAgICAgfSk7XG4gICAgfTtcbiAgICB0aGlzLmFkZGluQ2xpZW50LmFkZEV2ZW50SGFuZGxlcihldmVudFR5cGUsIGV2ZW50Q2FsbGJhY2spO1xuXG4gICAgcmV0dXJuIGV2ZW50SGFuZGxlckluc3RhbmNlO1xuICB9XG5cbiAgLyoqXG4gICAqIFNlbmRzIGFuIGV2ZW50IHRvIGJlIGhhbmRsZWQgYnkgdGhlIGhvc3QgcGFnZS5cbiAgICogQHBhcmFtIGFyZ3MgVGhlIGV2ZW50IGFyZ3VtZW50cyB0byBiZSBzZW50IHRvIHRoZSBob3N0IHBhZ2UuXG4gICAqIEByZXR1cm5zIFJldHVybnMgYW4gb2JzZXJ2YWJsZSB3aGljaCB3aWxsIGNvbXBsZXRlIHdoZW4gdGhlIGFkZC1pbiBob3N0IHBhZ2UgcmVjZWl2ZXMgdGhlXG4gICAqIG1lc3NhZ2UuIFRoZSByZXF1ZXN0IHdpbGwgZmFpbCBpZiBhIHN1YnNlcXVlbnQgZXZlbnQgb2NjdXJzLCBmb3IgdGhlIHNhbWUgZXZlbnQgdHlwZSwgd2l0aGluXG4gICAqIDIwMCBtaWxsaXNlY29uZHMuIEEgZmFpbHVyZSBjYW4gYWxzbyBvY2N1ciBpZiBhbiBldmVudCB0eXBlIGlzIG5vdCBvbmUgb2YgdGhlIHN1cHBvcnRlZCB0eXBlc1xuICAgKiBmcm9tIHRoZSBob3N0IHBhZ2UuXG4gICAqIEBzZWUgQWRkaW5DbGllbnRJbml0QXJncyNzdXBwb3J0ZWRFdmVudFR5cGVzXG4gICAqL1xuICBwdWJsaWMgc2VuZEV2ZW50KGFyZ3M6IEFkZGluQ2xpZW50RXZlbnRBcmdzKTogT2JzZXJ2YWJsZTx2b2lkPiB7XG4gICAgcmV0dXJuIGZyb20odGhpcy5hZGRpbkNsaWVudC5zZW5kRXZlbnQoYXJncykpO1xuICB9XG5cbiAgcHJpdmF0ZSBpbml0aWFsaXplVGhlbWUodGhlbWVTZXR0aW5nczogQWRkaW5DbGllbnRUaGVtZVNldHRpbmdzKTogdm9pZCB7XG4gICAgaWYgKCF0aGVtZVNldHRpbmdzKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgaG9zdFRoZW1lID0gQWRkaW5DbGllbnRTZXJ2aWNlLnRvU2t5VGhlbWUodGhlbWVTZXR0aW5ncy50aGVtZSk7XG4gICAgY29uc3QgaG9zdFRoZW1lTW9kZSA9IEFkZGluQ2xpZW50U2VydmljZS50b1NreVRoZW1lTW9kZSh0aGVtZVNldHRpbmdzLm1vZGUpO1xuXG4gICAgaWYgKCF0aGlzLiNjb25maWcpIHtcbiAgICAgIC8vIG5vIGFwcCBjb25maWcsIGluaXRpYWxpemUgaG9zdCB0aGVtZVxuICAgICAgdGhpcy5pbml0aWFsaXplVGhlbWVfKGhvc3RUaGVtZSwgaG9zdFRoZW1lTW9kZSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgdGhlbWluZ0NvbmZpZyA9IHRoaXMuI2NvbmZpZy5za3l1eC5hcHA/LnRoZW1pbmc7XG5cbiAgICBpZiAoXG4gICAgICB0aGVtaW5nQ29uZmlnPy5zdXBwb3J0ZWRUaGVtZXMgJiZcbiAgICAgIHRoZW1pbmdDb25maWcuc3VwcG9ydGVkVGhlbWVzLmluZGV4T2YodGhlbWVTZXR0aW5ncy50aGVtZSBhcyBTa3l1eENvbmZpZ0FwcFN1cHBvcnRlZFRoZW1lKSAhPT0gLTFcbiAgICApIHtcbiAgICAgIC8vIGFwcCBzdXBwb3J0cyBob3N0IHRoZW1lLCBpbml0aWFsaXplIGhvc3QgdGhlbWVcbiAgICAgIHRoaXMuaW5pdGlhbGl6ZVRoZW1lXyhob3N0VGhlbWUsIGhvc3RUaGVtZU1vZGUpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIC8vIGFwcCBkb2VzIG5vdCBzdXBwb3J0IGhvc3QgdGhlbWUsIGRvIG5vdGhpbmcgdG8gaW5pdGlhbGl6ZSB0aGUgYXBwJ3MgZGVmYXVsdCB0aGVtZVxuICB9XG5cbiAgcHJpdmF0ZSBpbml0aWFsaXplVGhlbWVfKHRoZW1lOiBTa3lUaGVtZSwgdGhlbWVNb2RlOiBTa3lUaGVtZU1vZGUpOiB2b2lkIHtcbiAgICB0aGlzLiN0aGVtZVNlcnZpY2UuaW5pdChcbiAgICAgIGRvY3VtZW50LmJvZHksXG4gICAgICB0aGlzLiNyZW5kZXJlckZhY3RvcnkuY3JlYXRlUmVuZGVyZXIodW5kZWZpbmVkLCB1bmRlZmluZWQpLFxuICAgICAgbmV3IFNreVRoZW1lU2V0dGluZ3ModGhlbWUsIHRoZW1lTW9kZSlcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBzZXRUaGVtZShzZXR0aW5nczogQWRkaW5DbGllbnRUaGVtZVNldHRpbmdzKTogdm9pZCB7XG4gICAgaWYgKCFzZXR0aW5ncykge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuI3RoZW1lU2VydmljZS5zZXRUaGVtZShuZXcgU2t5VGhlbWVTZXR0aW5ncyhcbiAgICAgIEFkZGluQ2xpZW50U2VydmljZS50b1NreVRoZW1lKHNldHRpbmdzLnRoZW1lKSxcbiAgICAgIEFkZGluQ2xpZW50U2VydmljZS50b1NreVRoZW1lTW9kZShzZXR0aW5ncy5tb2RlKVxuICAgICkpO1xuICB9XG5cbiAgcHJpdmF0ZSBzdGF0aWMgdG9Ta3lUaGVtZSh0aGVtZTogc3RyaW5nKTogU2t5VGhlbWUge1xuICAgIHN3aXRjaCAodGhlbWUpIHtcbiAgICAgIGNhc2UgJ21vZGVybic6XG4gICAgICAgIHJldHVybiBTa3lUaGVtZS5wcmVzZXRzLm1vZGVybjtcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJldHVybiBTa3lUaGVtZS5wcmVzZXRzLmRlZmF1bHQ7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBzdGF0aWMgdG9Ta3lUaGVtZU1vZGUobW9kZTogc3RyaW5nKTogU2t5VGhlbWVNb2RlIHtcbiAgICBzd2l0Y2ggKG1vZGUpIHtcbiAgICAgIGNhc2UgJ2RhcmsnOlxuICAgICAgICByZXR1cm4gU2t5VGhlbWVNb2RlLnByZXNldHMuZGFyaztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJldHVybiBTa3lUaGVtZU1vZGUucHJlc2V0cy5saWdodDtcbiAgICB9XG4gIH1cbn1cbiJdfQ==
262
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWRkaW4tY2xpZW50LnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9hZGRpbi1jbGllbnQvc3JjL3NyYy9hZGRpbi1jbGllbnQuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsWUFBWSxFQUNaLFVBQVUsRUFDVixnQkFBZ0IsRUFDaEIsTUFBTSxFQUNQLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFDTCxXQUFXLEVBZVosTUFBTSw2QkFBNkIsQ0FBQztBQUNyQyxPQUFPLEVBQ0wsWUFBWSxFQUNiLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFDTCxRQUFRLEVBQ1IsWUFBWSxFQUNaLGVBQWUsRUFDZixnQkFBZ0IsRUFDakIsTUFBTSxjQUFjLENBQUM7QUFDdEIsT0FBTyxFQUNMLFlBQVksRUFFWixJQUFJLEVBQ0wsTUFBTSxNQUFNLENBQUM7QUFDZCxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUN6RSxPQUFPLEVBRUwseUJBQXlCLEVBQzFCLE1BQU0sVUFBVSxDQUFDOztBQUtsQixNQUFNLE9BQU8sa0JBQWtCO0lBc0M3QixPQUFPLENBQTRDO0lBQ25ELGdCQUFnQixDQUE0QjtJQUM1QyxhQUFhLENBQTJCO0lBQ3hDLHlCQUF5QixDQUF3RDtJQUVqRjtRQXhDQSxZQUFZO1FBQ0osVUFBSyxHQUFzQyxJQUFJLFlBQVksRUFBdUIsQ0FBQztRQUNwRixTQUFJLEdBQW9DLElBQUksQ0FBQyxLQUFLLENBQUMsWUFBWSxFQUFFLENBQUM7UUFFekUsc0JBQXNCO1FBQ3RCOztXQUVHO1FBQ0ksZ0JBQVcsR0FBc0IsSUFBSSxZQUFZLENBQUMsSUFBSSxDQUFDLENBQUM7UUFFL0Q7O1dBRUc7UUFDSSxrQkFBYSxHQUFzQixJQUFJLFlBQVksRUFBRSxDQUFDO1FBRTdEOztXQUVHO1FBQ0ksb0JBQWUsR0FBc0IsSUFBSSxZQUFZLENB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Q0FBQyxJQUFZO1FBQ3hDLFFBQVEsSUFBSSxFQUFFLENBQUM7WUFDYixLQUFLLE1BQU07Z0JBQ1QsT0FBTyxZQUFZLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQztZQUNuQztnQkFDRSxPQUFPLFlBQVksQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDO1FBQ3RDLENBQUM7SUFDSCxDQUFDOzhHQWhTVSxrQkFBa0I7a0hBQWxCLGtCQUFrQixjQUZqQixNQUFNOzsyRkFFUCxrQkFBa0I7a0JBSDlCLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgRXZlbnRFbWl0dGVyLFxuICBJbmplY3RhYmxlLFxuICBSZW5kZXJlckZhY3RvcnkyLFxuICBpbmplY3Rcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICBBZGRpbkNsaWVudCxcbiAgQWRkaW5DbGllbnRDbG9zZU1vZGFsQXJncyxcbiAgQWRkaW5DbGllbnRFdmVudEFyZ3MsXG4gIEFkZGluQ2xpZW50SW5pdEFyZ3MsXG4gIEFkZGluQ2xpZW50TmF2aWdhdGVBcmdzLFxuICBBZGRpbkNsaWVudE9wZW5IZWxwQXJncyxcbiAgQWRkaW5DbGllbnRTaG93Q29uZmlybUFyZ3MsXG4gIEFkZGluQ2xpZW50U2hvd0Vycm9yQXJncyxcbiAgQWRkaW5DbGllbnRTaG93Rmx5b3V0QXJncyxcbiAgQWRkaW5DbGllbnRTaG93Rmx5b3V0UmVzdWx0LFxuICBBZGRpbkNsaWVudFNob3dNb2RhbEFyZ3MsXG4gIEFkZGluQ2xpZW50U2hvd01vZGFsUmVzdWx0LFxuICBBZGRpbkNsaWVudFNob3dUb2FzdEFyZ3MsXG4gIEFkZGluQ2xpZW50VGhlbWVTZXR0aW5ncyxcbiAgQWRkaW5FdmVudENhbGxiYWNrXG59IGZyb20gJ0BibGFja2JhdWQvc2t5LWFkZGluLWNsaWVudCc7XG5pbXBvcnQge1xuICBTa3lBcHBDb25maWcsIFNreXV4Q29uZmlnQXBwU3VwcG9ydGVkVGhlbWVcbn0gZnJvbSAnQHNreXV4L2NvbmZpZyc7XG5pbXBvcnQge1xuICBTa3lUaGVtZSxcbiAgU2t5VGhlbWVNb2RlLFxuICBTa3lUaGVtZVNlcnZpY2UsXG4gIFNreVRoZW1lU2V0dGluZ3Ncbn0gZnJvbSAnQHNreXV4L3RoZW1lJztcbmltcG9ydCB7XG4gIEFzeW5jU3ViamVjdCxcbiAgT2JzZXJ2YWJsZSxcbiAgZnJvbVxufSBmcm9tICdyeGpzJztcbmltcG9ydCB7IEFkZGluQ2xpZW50Q29uZmlnU2VydmljZSB9IGZyb20gJy4vYWRkaW4tY2xpZW50LWNvbmZpZy5zZXJ2aWNlJztcbmltcG9ydCB7XG4gIEFkZGluRXZlbnQsXG4gIEFkZGluRXZlbnRIYW5kbGVySW5zdGFuY2Vcbn0gZnJvbSAnLi9ldmVudHMnO1xuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBBZGRpbkNsaWVudFNlcnZpY2Uge1xuICBwdWJsaWMgcmVhZG9ubHkgYWRkaW5DbGllbnQ6IEFkZGluQ2xpZW50O1xuXG4gIC8vIEluaXQgYXJnc1xuICBwcml2YXRlIF9hcmdzOiBBc3luY1N1YmplY3Q8QWRkaW5DbGllbnRJbml0QXJncz4gPSBuZXcgQXN5bmNTdWJqZWN0PEFkZGluQ2xpZW50SW5pdEFyZ3M+KCk7XG4gIHB1YmxpYyBhcmdzOiBPYnNlcnZhYmxlPEFkZGluQ2xpZW50SW5pdEFyZ3M+ID0gdGhpcy5fYXJncy5hc09ic2VydmFibGUoKTtcblxuICAvLyBBZGRpbiBDbGllbnQgRXZlbnRzXG4gIC8qKlxuICAgKiBFdmVudCBlbWl0dGVkIGZvciBidXR0b24gYWRkLWlucyBpbmRpY2F0aW5nIHRoYXQgdGhlIGJ1dHRvbiB3YXMgY2xpY2tlZC5cbiAgICovXG4gIHB1YmxpYyBidXR0b25DbGljazogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKHRydWUpO1xuXG4gIC8qKlxuICAgKiBFdmVudCBlbWl0dGVkIGZvciBhZGQtaW5zIHdoZW4gY29udGV4dCBpbmZvcm1hdGlvbiBoYXMgYmVlbiB1cGRhdGVkXG4gICAqL1xuICBwdWJsaWMgdXBkYXRlQ29udGV4dDogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgLyoqXG4gICAqIEV2ZW50IGVtaXR0ZWQgZm9yIGZseW91dCBhZGQtaW5zIGluZGljYXRpbmcgdGhhdCB0aGUgbmV4dCBidXR0b24gd2FzIGNsaWNrZWQuXG4gICAqL1xuICBwdWJsaWMgZmx5b3V0TmV4dENsaWNrOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIodHJ1ZSk7XG5cbiAgLyoqXG4gICAqIEV2ZW50IGVtaXR0ZWQgZm9yIGZseW91dCBhZGQtaW5zIGluZGljYXRpbmcgdGhhdCB0aGUgcHJldmlvdXMgYnV0dG9uIHdhcyBjbGlja2VkLlxuICAgKi9cbiAgcHVibGljIGZseW91dFByZXZpb3VzQ2xpY2s6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcih0cnVlKTtcblxuICAvKipcbiAgICogRXZlbnQgZW1pdHRlZCBmb3IgdGlsZSBhZGQtaW5zIGluZGljYXRpbmcgdGhhdCB0aGUgaGVscCBidXR0b24gd2FzIGNsaWNrZWQuXG4gICAqL1xuICBwdWJsaWMgaGVscENsaWNrOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIodHJ1ZSk7XG5cbiAgLyoqXG4gICAqIEV2ZW50IGVtaXR0ZWQgZm9yIHRpbGUgYWRkLWlucyBpbmRpY2F0aW5nIHRoYXQgdGhlIHNldHRpbmdzIGJ1dHRvbiB3YXMgY2xpY2tlZC5cbiAgICovXG4gIHB1YmxpYyBzZXR0aW5nc0NsaWNrOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIodHJ1ZSk7XG5cbiAgI2NvbmZpZyA9IGluamVjdChTa3lBcHBDb25maWcsIHsgb3B0aW9uYWw6IHRydWUgfSk7XG4gICNyZW5kZXJlckZhY3RvcnkgPSBpbmplY3QoUmVuZGVyZXJGYWN0b3J5Mik7XG4gICN0aGVtZVNlcnZpY2UgPSBpbmplY3QoU2t5VGhlbWVTZXJ2aWNlKTtcbiAgI2FkZGluQ2xpZW50Q29uZmlnU2VydmljZSA9IGluamVjdChBZGRpbkNsaWVudENvbmZpZ1NlcnZpY2UsIHsgb3B0aW9uYWw6IHRydWUgfSk7XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgdGhpcy5hZGRpbkNsaWVudCA9IG5ldyBBZGRpbkNsaWVudCh7XG4gICAgICBjYWxsYmFja3M6IHtcbiAgICAgICAgaW5pdDogKGFyZ3M6IEFkZGluQ2xpZW50SW5pdEFyZ3MpID0+IHtcbiAgICAgICAgICB0aGlzLmluaXRpYWxpemVUaGVtZShhcmdzPy50aGVtZVNldHRpbmdzKTtcblxuICAgICAgICAgIHRoaXMuX2FyZ3MubmV4dChhcmdzKTtcbiAgICAgICAgICB0aGlzLl9hcmdzLmNvbXBsZXRlKCk7XG4gICAgICAgIH0sXG4gICAgICAgIGJ1dHRvbkNsaWNrOiAoKSA9PiB7XG4gICAgICAgICAgdGhpcy5idXR0b25DbGljay5lbWl0KCk7XG4gICAgICAgIH0sXG4gICAgICAgIGZseW91dE5leHRDbGljazogKCkgPT4ge1xuICAgICAgICAgIHRoaXMuZmx5b3V0TmV4dENsaWNrLmVtaXQoKTtcbiAgICAgICAgfSxcbiAgICAgICAgZmx5b3V0UHJldmlvdXNDbGljazogKCkgPT4ge1xuICAgICAgICAgIHRoaXMuZmx5b3V0UHJldmlvdXNDbGljay5lbWl0KCk7XG4gICAgICAgIH0sXG4gICAgICAgIGhlbHBDbGljazogKCkgPT4ge1xuICAgICAgICAgIHRoaXMuaGVscENsaWNrLmVtaXQoKTtcbiAgICAgICAgfSxcbiAgICAgICAgc2V0dGluZ3NDbGljazogKCkgPT4ge1xuICAgICAgICAgIHRoaXMuc2V0dGluZ3NDbGljay5lbWl0KCk7XG4gICAgICAgIH0sXG4gICAgICAgIHVwZGF0ZUNvbnRleHQ6IChjb250ZXh0OiBhbnkpID0+IHtcbiAgICAgICAgICB0aGlzLnVwZGF0ZUNvbnRleHQuZW1pdChjb250ZXh0KTtcbiAgICAgICAgfSxcbiAgICAgICAgdGhlbWVDaGFuZ2U6IChzZXR0aW5nczogQWRkaW5DbGllbnRUaGVtZVNldHRpbmdzKSA9PiB7XG4gICAgICAgICAgdGhpcy5zZXRUaGVtZShzZXR0aW5ncyk7XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICBjb25maWc6IHRoaXMuI2FkZGluQ2xpZW50Q29uZmlnU2VydmljZT8uZ2V0QWRkaW5DbGllbnRDb25maWcoKVxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIEluZm9ybXMgdGhlIGhvc3QgdG8gY2xvc2UgdGhpcyBtb2RhbCBhZGQtaW4uXG4gICAqIFNob3VsZCBvbmx5IGJlIHVzZWQgZnJvbSB3aXRoaW4gdGhlIG1vZGFsIGFkZC1pbiBhbmQgbm90IHRoZSBwYXJlbnQgYWRkLWluLlxuICAgKiBAcGFyYW0gYXJncyBBcmd1bWVudHMgdG8gcHJvdmlkZSBhIGNvbnRleHQgb2JqZWN0IGJhY2sgdG8gdGhlIHBhcmVudCBhZGQtaW4uXG4gICAqL1xuICBwdWJsaWMgY2xvc2VNb2RhbChhcmdzOiBBZGRpbkNsaWVudENsb3NlTW9kYWxBcmdzKTogdm9pZCB7XG4gICAgdGhpcy5hZGRpbkNsaWVudC5jbG9zZU1vZGFsKGFyZ3MpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlcXVlc3RzIHRoZSBob3N0IHBhZ2UgdG8gbGF1bmNoIGEgbW9kYWwgYWRkLWluLlxuICAgKiBAcGFyYW0gYXJncyBBcmd1bWVudHMgZm9yIGxhdW5jaGluZyB0aGUgbW9kYWwuXG4gICAqIEByZXR1cm5zIFJldHVybnMgYW4gb2JzZXJ2YWJsZSB0aGF0IHdpbGwgcHVibGlzaCBhIHZhbHVlIHdoZW4gdGhlIG1vZGFsIGFkZC1pbiBpcyBjbG9zZWQuXG4gICAqIE9ic2VydmFibGVzIHdpbGwgcHVibGlzaCB2YWx1ZXMgd2l0aCBjb250ZXh0IGRhdGEgcGFzc2VkIGZyb20gdGhlIG1vZGFsIGFkZC1pbidzIGNsb3NlTW9kYWwgY2FsbC5cbiAgICovXG4gIHB1YmxpYyBzaG93TW9kYWwoYXJnczogQWRkaW5DbGllbnRTaG93TW9kYWxBcmdzKTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICBsZXQgbW9kYWxSZXR1cm46IEFkZGluQ2xpZW50U2hvd01vZGFsUmVzdWx0ID0gdGhpcy5hZGRpbkNsaWVudC5zaG93TW9kYWwoYXJncyk7XG4gICAgcmV0dXJuIGZyb20obW9kYWxSZXR1cm4ubW9kYWxDbG9zZWQpO1xuICB9XG5cbiAgLyoqXG4gICAqIENsZWFucyB1cCB0aGUgQWRkaW5DbGllbnQsIHJlbGVhc2luZyBhbGwgcmVzb3VyY2VzLlxuICAgKi9cbiAgcHVibGljIGRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5hZGRpbkNsaWVudC5kZXN0cm95KCk7XG4gIH1cblxuICAvKipcbiAgICogUmVxdWVzdHMgdGhlIGhvc3QgcGFnZSB0byBuYXZpZ2F0ZS5cbiAgICogQHBhcmFtIGFyZ3MgQXJndW1lbnRzIGRlc2NyaWJpbmcgdGhlIG5hdmlnYXRpb24gcmVxdWVzdC5cbiAgICovXG4gIHB1YmxpYyBuYXZpZ2F0ZShhcmdzOiBBZGRpbkNsaWVudE5hdmlnYXRlQXJncyk6IHZvaWQge1xuICAgIHRoaXMuYWRkaW5DbGllbnQubmF2aWdhdGUoYXJncyk7XG4gIH1cblxuICAvKipcbiAgICogSW5mb3JtcyB0aGUgaG9zdCB0byBvcGVuIHRoZSBoZWxwIHRhYiB3aXRoIHRoZSBzcGVjaWZpZWQgaGVscCBrZXkuXG4gICAqIEBwYXJhbSBhcmdzIEFyZ3VtZW50cyBmb3IgbGF1bmNoaW5nIHRoZSBoZWxwIHRhYi5cbiAgICovXG4gIHB1YmxpYyBvcGVuSGVscChhcmdzOiBBZGRpbkNsaWVudE9wZW5IZWxwQXJncyk6IHZvaWQge1xuICAgIHRoaXMuYWRkaW5DbGllbnQub3BlbkhlbHAoYXJncyk7XG4gIH1cblxuICAvKipcbiAgICogUmVxdWVzdHMgYSB1c2VyIGlkZW50aXR5IHRva2VuIGZvciB0aGUgY3VycmVudCB1c2VyLlxuICAgKiBAcmV0dXJucyBSZXR1cm5zIGFuIG9ic2VydmFibGUgd2hpY2ggd2lsbCBwdWJsaXNoIHRoZSB0b2tlbiB2YWx1ZS5cbiAgICovXG4gIHB1YmxpYyBnZXRVc2VySWRlbnRpdHlUb2tlbigpOiBPYnNlcnZhYmxlPHN0cmluZz4ge1xuICAgIHJldHVybiBmcm9tKHRoaXMuYWRkaW5DbGllbnQuZ2V0VXNlcklkZW50aXR5VG9rZW4oKSk7XG4gIH1cblxuICAvKipcbiAgICogQGRlcHJlY2F0ZWQgVXNlIGdldFVzZXJJZGVudGl0eVRva2VuXG4gICAqL1xuICBwdWJsaWMgZ2V0QXV0aFRva2VuKCk6IE9ic2VydmFibGU8c3RyaW5nPiB7XG4gICAgcmV0dXJuIGZyb20odGhpcy5hZGRpbkNsaWVudC5nZXRVc2VySWRlbnRpdHlUb2tlbigpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBJbmZvcm1zIHRoZSBob3N0IHRvIHNob3cgYSB0b2FzdCBtZXNzYWdlLlxuICAgKiBAcGFyYW0gYXJncyBBcmd1bWVudHMgZm9yIHNob3dpbmcgYSB0b2FzdC5cbiAgICovXG4gIHB1YmxpYyBzaG93VG9hc3QoYXJnczogQWRkaW5DbGllbnRTaG93VG9hc3RBcmdzKTogdm9pZCB7XG4gICAgdGhpcy5hZGRpbkNsaWVudC5zaG93VG9hc3QoYXJncyk7XG4gIH1cblxuICAvKipcbiAgICogUmVxdWVzdHMgdGhlIGhvc3QgcGFnZSB0byBsYXVuY2ggYSBmbHlvdXQgYWRkLWluLlxuICAgKiBAcGFyYW0gYXJncyBBcmd1bWVudHMgZm9yIGxhdW5jaGluZyB0aGUgZmx5b3V0LlxuICAgKiBAcmV0dXJucyBSZXR1cm5zIGFuIG9ic2VydmFibGUgdGhhdCB3aWxsIG5vdGlmeSB3aGVuIHRoZSBmbHlvdXQgYWRkLWluIGlzIGNsb3NlZC5cbiAgICovXG4gIHB1YmxpYyBzaG93Rmx5b3V0KGFyZ3M6IEFkZGluQ2xpZW50U2hvd0ZseW91dEFyZ3MpOiBPYnNlcnZhYmxlPHZvaWQ+IHtcbiAgICBjb25zdCBmbHlvdXRSZXR1cm46IEFkZGluQ2xpZW50U2hvd0ZseW91dFJlc3VsdCA9IHRoaXMuYWRkaW5DbGllbnQuc2hvd0ZseW91dChhcmdzKTtcbiAgICByZXR1cm4gZnJvbShmbHlvdXRSZXR1cm4uZmx5b3V0Q2xvc2VkKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXF1ZXN0cyB0aGUgaG9zdCBwYWdlIHRvIGNsb3NlIHRoZSBmbHlvdXQgYWRkLWluLlxuICAgKi9cbiAgcHVibGljIGNsb3NlRmx5b3V0KCk6IHZvaWQge1xuICAgIHRoaXMuYWRkaW5DbGllbnQuY2xvc2VGbHlvdXQoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXF1ZXN0cyB0aGUgaG9zdCBwYWdlIHRvIHNob3cgYSBjb25maXJtIGRpYWxvZy5cbiAgICogQHBhcmFtIGFyZ3MgQXJndW1lbnRzIGZvciBzaG93aW5nIGEgY29uZmlybSBkaWFsb2cuXG4gICAqIEByZXR1cm5zIFJldHVybnMgYW4gb2JzZXJ2YWJsZSB3aGljaCB3aWxsIHB1Ymxpc2ggdGhlIGNvbmZpcm0gYWN0aW9uIHZhbHVlLlxuICAgKi9cbiAgcHVibGljIHNob3dDb25maXJtKGFyZ3M6IEFkZGluQ2xpZW50U2hvd0NvbmZpcm1BcmdzKTogT2JzZXJ2YWJsZTxzdHJpbmc+IHtcbiAgICByZXR1cm4gZnJvbSh0aGlzLmFkZGluQ2xpZW50LnNob3dDb25maXJtKGFyZ3MpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBJbmZvcm1zIHRoZSBob3N0IHRvIHNob3cgYW4gZXJyb3IgZGlhbG9nLlxuICAgKiBAcGFyYW0gYXJncyBBcmd1bWVudHMgZm9yIHNob3dpbmcgYW4gZXJyb3IgZGlhbG9nLlxuICAgKi9cbiAgcHVibGljIHNob3dFcnJvcihhcmdzOiBBZGRpbkNsaWVudFNob3dFcnJvckFyZ3MpOiB2b2lkIHtcbiAgICB0aGlzLmFkZGluQ2xpZW50LnNob3dFcnJvcihhcmdzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXF1ZXN0cyB0aGUgaG9zdCBwYWdlIHRvIHNob3cgYSBwYWdlIGJsb2NraW5nIHdhaXQgaW5kaWNhdG9yLlxuICAgKi9cbiAgcHVibGljIHNob3dXYWl0KCk6IHZvaWQge1xuICAgIHRoaXMuYWRkaW5DbGllbnQuc2hvd1dhaXQoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXF1ZXN0cyB0aGUgaG9zdCBwYWdlIHRvIGhpZGUgYSBwYWdlIGJsb2NraW5nIHdhaXQgaW5kaWNhdG9yLlxuICAgKi9cbiAgcHVibGljIGhpZGVXYWl0KCk6IHZvaWQge1xuICAgIHRoaXMuYWRkaW5DbGllbnQuaGlkZVdhaXQoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZWdpc3RlcnMgYW4gZXZlbnQgaGFuZGxlciBmb3IgdGhlIHByb3ZpZGVkIGV2ZW50IHR5cGUuXG4gICAqIEBwYXJhbSBldmVudFR5cGUgVGhlIGV2ZW50IHR5cGUgdG8gcmVnaXN0ZXIuXG4gICAqIEByZXR1cm5zIEFkZGluRXZlbnRIYW5kbGVySW5zdGFuY2VcbiAgICovXG4gIHB1YmxpYyBhZGRFdmVudEhhbmRsZXIoZXZlbnRUeXBlOiBzdHJpbmcpOiBBZGRpbkV2ZW50SGFuZGxlckluc3RhbmNlIHtcbiAgICBsZXQgZXZlbnRIYW5kbGVySW5zdGFuY2UgPSBuZXcgQWRkaW5FdmVudEhhbmRsZXJJbnN0YW5jZSgpO1xuICAgIGV2ZW50SGFuZGxlckluc3RhbmNlLmFkZGluRXZlbnQgPSBuZXcgRXZlbnRFbWl0dGVyPEFkZGluRXZlbnQ+KCk7XG5cbiAgICBjb25zdCBldmVudENhbGxiYWNrOiBBZGRpbkV2ZW50Q2FsbGJhY2sgPSAoY29udGV4dCwgZG9uZSkgPT4ge1xuICAgICAgZXZlbnRIYW5kbGVySW5zdGFuY2UuYWRkaW5FdmVudC5lbWl0KHtcbiAgICAgICAgY29udGV4dCxcbiAgICAgICAgZG9uZVxuICAgICAgfSk7XG4gICAgfTtcbiAgICB0aGlzLmFkZGluQ2xpZW50LmFkZEV2ZW50SGFuZGxlcihldmVudFR5cGUsIGV2ZW50Q2FsbGJhY2spO1xuXG4gICAgcmV0dXJuIGV2ZW50SGFuZGxlckluc3RhbmNlO1xuICB9XG5cbiAgLyoqXG4gICAqIFNlbmRzIGFuIGV2ZW50IHRvIGJlIGhhbmRsZWQgYnkgdGhlIGhvc3QgcGFnZS5cbiAgICogQHBhcmFtIGFyZ3MgVGhlIGV2ZW50IGFyZ3VtZW50cyB0byBiZSBzZW50IHRvIHRoZSBob3N0IHBhZ2UuXG4gICAqIEByZXR1cm5zIFJldHVybnMgYW4gb2JzZXJ2YWJsZSB3aGljaCB3aWxsIGNvbXBsZXRlIHdoZW4gdGhlIGFkZC1pbiBob3N0IHBhZ2UgcmVjZWl2ZXMgdGhlXG4gICAqIG1lc3NhZ2UuIFRoZSByZXF1ZXN0IHdpbGwgZmFpbCBpZiBhIHN1YnNlcXVlbnQgZXZlbnQgb2NjdXJzLCBmb3IgdGhlIHNhbWUgZXZlbnQgdHlwZSwgd2l0aGluXG4gICAqIDIwMCBtaWxsaXNlY29uZHMuIEEgZmFpbHVyZSBjYW4gYWxzbyBvY2N1ciBpZiBhbiBldmVudCB0eXBlIGlzIG5vdCBvbmUgb2YgdGhlIHN1cHBvcnRlZCB0eXBlc1xuICAgKiBmcm9tIHRoZSBob3N0IHBhZ2UuXG4gICAqIEBzZWUgQWRkaW5DbGllbnRJbml0QXJncyNzdXBwb3J0ZWRFdmVudFR5cGVzXG4gICAqL1xuICBwdWJsaWMgc2VuZEV2ZW50KGFyZ3M6IEFkZGluQ2xpZW50RXZlbnRBcmdzKTogT2JzZXJ2YWJsZTx2b2lkPiB7XG4gICAgcmV0dXJuIGZyb20odGhpcy5hZGRpbkNsaWVudC5zZW5kRXZlbnQoYXJncykpO1xuICB9XG5cbiAgcHJpdmF0ZSBpbml0aWFsaXplVGhlbWUodGhlbWVTZXR0aW5nczogQWRkaW5DbGllbnRUaGVtZVNldHRpbmdzKTogdm9pZCB7XG4gICAgaWYgKCF0aGVtZVNldHRpbmdzKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgaG9zdFRoZW1lID0gQWRkaW5DbGllbnRTZXJ2aWNlLnRvU2t5VGhlbWUodGhlbWVTZXR0aW5ncy50aGVtZSk7XG4gICAgY29uc3QgaG9zdFRoZW1lTW9kZSA9IEFkZGluQ2xpZW50U2VydmljZS50b1NreVRoZW1lTW9kZSh0aGVtZVNldHRpbmdzLm1vZGUpO1xuXG4gICAgaWYgKCF0aGlzLiNjb25maWcpIHtcbiAgICAgIC8vIG5vIGFwcCBjb25maWcsIGluaXRpYWxpemUgaG9zdCB0aGVtZVxuICAgICAgdGhpcy5pbml0aWFsaXplVGhlbWVfKGhvc3RUaGVtZSwgaG9zdFRoZW1lTW9kZSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgdGhlbWluZ0NvbmZpZyA9IHRoaXMuI2NvbmZpZy5za3l1eC5hcHA/LnRoZW1pbmc7XG5cbiAgICBpZiAoXG4gICAgICB0aGVtaW5nQ29uZmlnPy5zdXBwb3J0ZWRUaGVtZXMgJiZcbiAgICAgIHRoZW1pbmdDb25maWcuc3VwcG9ydGVkVGhlbWVzLmluZGV4T2YodGhlbWVTZXR0aW5ncy50aGVtZSBhcyBTa3l1eENvbmZpZ0FwcFN1cHBvcnRlZFRoZW1lKSAhPT0gLTFcbiAgICApIHtcbiAgICAgIC8vIGFwcCBzdXBwb3J0cyBob3N0IHRoZW1lLCBpbml0aWFsaXplIGhvc3QgdGhlbWVcbiAgICAgIHRoaXMuaW5pdGlhbGl6ZVRoZW1lXyhob3N0VGhlbWUsIGhvc3RUaGVtZU1vZGUpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIC8vIGFwcCBkb2VzIG5vdCBzdXBwb3J0IGhvc3QgdGhlbWUsIGRvIG5vdGhpbmcgdG8gaW5pdGlhbGl6ZSB0aGUgYXBwJ3MgZGVmYXVsdCB0aGVtZVxuICB9XG5cbiAgcHJpdmF0ZSBpbml0aWFsaXplVGhlbWVfKHRoZW1lOiBTa3lUaGVtZSwgdGhlbWVNb2RlOiBTa3lUaGVtZU1vZGUpOiB2b2lkIHtcbiAgICB0aGlzLiN0aGVtZVNlcnZpY2UuaW5pdChcbiAgICAgIGRvY3VtZW50LmJvZHksXG4gICAgICB0aGlzLiNyZW5kZXJlckZhY3RvcnkuY3JlYXRlUmVuZGVyZXIodW5kZWZpbmVkLCB1bmRlZmluZWQpLFxuICAgICAgbmV3IFNreVRoZW1lU2V0dGluZ3ModGhlbWUsIHRoZW1lTW9kZSlcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBzZXRUaGVtZShzZXR0aW5nczogQWRkaW5DbGllbnRUaGVtZVNldHRpbmdzKTogdm9pZCB7XG4gICAgaWYgKCFzZXR0aW5ncykge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuI3RoZW1lU2VydmljZS5zZXRUaGVtZShuZXcgU2t5VGhlbWVTZXR0aW5ncyhcbiAgICAgIEFkZGluQ2xpZW50U2VydmljZS50b1NreVRoZW1lKHNldHRpbmdzLnRoZW1lKSxcbiAgICAgIEFkZGluQ2xpZW50U2VydmljZS50b1NreVRoZW1lTW9kZShzZXR0aW5ncy5tb2RlKVxuICAgICkpO1xuICB9XG5cbiAgcHJpdmF0ZSBzdGF0aWMgdG9Ta3lUaGVtZSh0aGVtZTogc3RyaW5nKTogU2t5VGhlbWUge1xuICAgIHN3aXRjaCAodGhlbWUpIHtcbiAgICAgIGNhc2UgJ21vZGVybic6XG4gICAgICAgIHJldHVybiBTa3lUaGVtZS5wcmVzZXRzLm1vZGVybjtcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJldHVybiBTa3lUaGVtZS5wcmVzZXRzLmRlZmF1bHQ7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBzdGF0aWMgdG9Ta3lUaGVtZU1vZGUobW9kZTogc3RyaW5nKTogU2t5VGhlbWVNb2RlIHtcbiAgICBzd2l0Y2ggKG1vZGUpIHtcbiAgICAgIGNhc2UgJ2RhcmsnOlxuICAgICAgICByZXR1cm4gU2t5VGhlbWVNb2RlLnByZXNldHMuZGFyaztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJldHVybiBTa3lUaGVtZU1vZGUucHJlc2V0cy5saWdodDtcbiAgICB9XG4gIH1cbn1cbiJdfQ==
@@ -5,6 +5,19 @@ import { SkyAppConfig } from '@skyux/config';
5
5
  import { SkyThemeService, SkyThemeSettings, SkyTheme, SkyThemeMode } from '@skyux/theme';
6
6
  import { AsyncSubject, from } from 'rxjs';
7
7
 
8
+ /**
9
+ * Implement this class with your own data to initialize the add-in client service.
10
+ */
11
+ class AddinClientConfigService {
12
+ /**
13
+ * Gets the AddinClientConfig object that will be injected the
14
+ * AddinClient instance when instantiated.
15
+ */
16
+ getAddinClientConfig() {
17
+ return {};
18
+ }
19
+ }
20
+
8
21
  /**
9
22
  * Contains data for an add-in event and allows you to indicate that an event
10
23
  * has been processed
@@ -22,6 +35,7 @@ class AddinClientService {
22
35
  #config;
23
36
  #rendererFactory;
24
37
  #themeService;
38
+ #addinClientConfigService;
25
39
  constructor() {
26
40
  // Init args
27
41
  this._args = new AsyncSubject();
@@ -54,6 +68,7 @@ class AddinClientService {
54
68
  this.#config = inject(SkyAppConfig, { optional: true });
55
69
  this.#rendererFactory = inject(RendererFactory2);
56
70
  this.#themeService = inject(SkyThemeService);
71
+ this.#addinClientConfigService = inject(AddinClientConfigService, { optional: true });
57
72
  this.addinClient = new AddinClient({
58
73
  callbacks: {
59
74
  init: (args) => {
@@ -82,7 +97,8 @@ class AddinClientService {
82
97
  themeChange: (settings) => {
83
98
  this.setTheme(settings);
84
99
  }
85
- }
100
+ },
101
+ config: this.#addinClientConfigService?.getAddinClientConfig()
86
102
  });
87
103
  }
88
104
  /**
@@ -259,10 +275,10 @@ class AddinClientService {
259
275
  return SkyThemeMode.presets.light;
260
276
  }
261
277
  }
262
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.2", ngImport: i0, type: AddinClientService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
263
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.2", ngImport: i0, type: AddinClientService, providedIn: 'root' }); }
278
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.6", ngImport: i0, type: AddinClientService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
279
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.6", ngImport: i0, type: AddinClientService, providedIn: 'root' }); }
264
280
  }
265
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.2", ngImport: i0, type: AddinClientService, decorators: [{
281
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.6", ngImport: i0, type: AddinClientService, decorators: [{
266
282
  type: Injectable,
267
283
  args: [{
268
284
  providedIn: 'root'
@@ -273,5 +289,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.2", ngImpor
273
289
  * Generated bundle index. Do not edit.
274
290
  */
275
291
 
276
- export { AddinClientService, AddinEvent, AddinEventHandlerInstance };
292
+ export { AddinClientConfigService, AddinClientService, AddinEvent, AddinEventHandlerInstance };
277
293
  //# sourceMappingURL=blackbaud-skyux-lib-addin-client.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"blackbaud-skyux-lib-addin-client.mjs","sources":["../../../projects/addin-client/src/src/events/addin-event.ts","../../../projects/addin-client/src/src/events/addin-event-handler-instance.ts","../../../projects/addin-client/src/src/addin-client.service.ts","../../../projects/addin-client/src/blackbaud-skyux-lib-addin-client.ts"],"sourcesContent":["/**\n * Contains data for an add-in event and allows you to indicate that an event\n * has been processed\n */\nexport class AddinEvent {\n\n /**\n * The data that an add-in event has returned.\n */\n public context: any;\n\n /**\n * A function to call indicating that the add-in event is processed.\n */\n public done?: () => void;\n}\n","import {\n EventEmitter\n} from '@angular/core';\n\nimport {\n AddinEvent\n} from './addin-event';\n\n/**\n * Allows you to process events from an event handler.\n */\nexport class AddinEventHandlerInstance {\n\n /**\n * An event that emits when a new add-in event has occurred.\n */\n public addinEvent: EventEmitter<AddinEvent>;\n}\n","import {\n EventEmitter,\n Injectable,\n RendererFactory2,\n inject\n} from '@angular/core';\nimport {\n AddinClient,\n AddinClientCloseModalArgs,\n AddinClientEventArgs,\n AddinClientInitArgs,\n AddinClientNavigateArgs,\n AddinClientOpenHelpArgs,\n AddinClientShowConfirmArgs,\n AddinClientShowErrorArgs,\n AddinClientShowFlyoutArgs,\n AddinClientShowFlyoutResult,\n AddinClientShowModalArgs,\n AddinClientShowModalResult,\n AddinClientShowToastArgs,\n AddinClientThemeSettings,\n AddinEventCallback\n} from '@blackbaud/sky-addin-client';\nimport {\n SkyAppConfig, SkyuxConfigAppSupportedTheme\n} from '@skyux/config';\nimport {\n SkyTheme,\n SkyThemeMode,\n SkyThemeService,\n SkyThemeSettings\n} from '@skyux/theme';\nimport {\n AsyncSubject,\n Observable,\n from\n} from 'rxjs';\nimport {\n AddinEvent,\n AddinEventHandlerInstance\n} from './events';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class AddinClientService {\n public readonly addinClient: AddinClient;\n\n // Init args\n private _args: AsyncSubject<AddinClientInitArgs> = new AsyncSubject<AddinClientInitArgs>();\n public args: Observable<AddinClientInitArgs> = this._args.asObservable();\n\n // Addin Client Events\n /**\n * Event emitted for button add-ins indicating that the button was clicked.\n */\n public buttonClick: EventEmitter<any> = new EventEmitter(true);\n\n /**\n * Event emitted for add-ins when context information has been updated\n */\n public updateContext: EventEmitter<any> = new EventEmitter();\n\n /**\n * Event emitted for flyout add-ins indicating that the next button was clicked.\n */\n public flyoutNextClick: EventEmitter<any> = new EventEmitter(true);\n\n /**\n * Event emitted for flyout add-ins indicating that the previous button was clicked.\n */\n public flyoutPreviousClick: EventEmitter<any> = new EventEmitter(true);\n\n /**\n * Event emitted for tile add-ins indicating that the help button was clicked.\n */\n public helpClick: EventEmitter<any> = new EventEmitter(true);\n\n /**\n * Event emitted for tile add-ins indicating that the settings button was clicked.\n */\n public settingsClick: EventEmitter<any> = new EventEmitter(true);\n\n #config = inject(SkyAppConfig, { optional: true });\n #rendererFactory = inject(RendererFactory2);\n #themeService = inject(SkyThemeService);\n\n constructor() {\n this.addinClient = new AddinClient({\n callbacks: {\n init: (args: AddinClientInitArgs) => {\n this.initializeTheme(args?.themeSettings);\n\n this._args.next(args);\n this._args.complete();\n },\n buttonClick: () => {\n this.buttonClick.emit();\n },\n flyoutNextClick: () => {\n this.flyoutNextClick.emit();\n },\n flyoutPreviousClick: () => {\n this.flyoutPreviousClick.emit();\n },\n helpClick: () => {\n this.helpClick.emit();\n },\n settingsClick: () => {\n this.settingsClick.emit();\n },\n updateContext: (context: any) => {\n this.updateContext.emit(context);\n },\n themeChange: (settings: AddinClientThemeSettings) => {\n this.setTheme(settings);\n }\n }\n });\n }\n\n /**\n * Informs the host to close this modal add-in.\n * Should only be used from within the modal add-in and not the parent add-in.\n * @param args Arguments to provide a context object back to the parent add-in.\n */\n public closeModal(args: AddinClientCloseModalArgs): void {\n this.addinClient.closeModal(args);\n }\n\n /**\n * Requests the host page to launch a modal add-in.\n * @param args Arguments for launching the modal.\n * @returns Returns an observable that will publish a value when the modal add-in is closed.\n * Observables will publish values with context data passed from the modal add-in's closeModal call.\n */\n public showModal(args: AddinClientShowModalArgs): Observable<any> {\n let modalReturn: AddinClientShowModalResult = this.addinClient.showModal(args);\n return from(modalReturn.modalClosed);\n }\n\n /**\n * Cleans up the AddinClient, releasing all resources.\n */\n public destroy(): void {\n this.addinClient.destroy();\n }\n\n /**\n * Requests the host page to navigate.\n * @param args Arguments describing the navigation request.\n */\n public navigate(args: AddinClientNavigateArgs): void {\n this.addinClient.navigate(args);\n }\n\n /**\n * Informs the host to open the help tab with the specified help key.\n * @param args Arguments for launching the help tab.\n */\n public openHelp(args: AddinClientOpenHelpArgs): void {\n this.addinClient.openHelp(args);\n }\n\n /**\n * Requests a user identity token for the current user.\n * @returns Returns an observable which will publish the token value.\n */\n public getUserIdentityToken(): Observable<string> {\n return from(this.addinClient.getUserIdentityToken());\n }\n\n /**\n * @deprecated Use getUserIdentityToken\n */\n public getAuthToken(): Observable<string> {\n return from(this.addinClient.getUserIdentityToken());\n }\n\n /**\n * Informs the host to show a toast message.\n * @param args Arguments for showing a toast.\n */\n public showToast(args: AddinClientShowToastArgs): void {\n this.addinClient.showToast(args);\n }\n\n /**\n * Requests the host page to launch a flyout add-in.\n * @param args Arguments for launching the flyout.\n * @returns Returns an observable that will notify when the flyout add-in is closed.\n */\n public showFlyout(args: AddinClientShowFlyoutArgs): Observable<void> {\n const flyoutReturn: AddinClientShowFlyoutResult = this.addinClient.showFlyout(args);\n return from(flyoutReturn.flyoutClosed);\n }\n\n /**\n * Requests the host page to close the flyout add-in.\n */\n public closeFlyout(): void {\n this.addinClient.closeFlyout();\n }\n\n /**\n * Requests the host page to show a confirm dialog.\n * @param args Arguments for showing a confirm dialog.\n * @returns Returns an observable which will publish the confirm action value.\n */\n public showConfirm(args: AddinClientShowConfirmArgs): Observable<string> {\n return from(this.addinClient.showConfirm(args));\n }\n\n /**\n * Informs the host to show an error dialog.\n * @param args Arguments for showing an error dialog.\n */\n public showError(args: AddinClientShowErrorArgs): void {\n this.addinClient.showError(args);\n }\n\n /**\n * Requests the host page to show a page blocking wait indicator.\n */\n public showWait(): void {\n this.addinClient.showWait();\n }\n\n /**\n * Requests the host page to hide a page blocking wait indicator.\n */\n public hideWait(): void {\n this.addinClient.hideWait();\n }\n\n /**\n * Registers an event handler for the provided event type.\n * @param eventType The event type to register.\n * @returns AddinEventHandlerInstance\n */\n public addEventHandler(eventType: string): AddinEventHandlerInstance {\n let eventHandlerInstance = new AddinEventHandlerInstance();\n eventHandlerInstance.addinEvent = new EventEmitter<AddinEvent>();\n\n const eventCallback: AddinEventCallback = (context, done) => {\n eventHandlerInstance.addinEvent.emit({\n context,\n done\n });\n };\n this.addinClient.addEventHandler(eventType, eventCallback);\n\n return eventHandlerInstance;\n }\n\n /**\n * Sends an event to be handled by the host page.\n * @param args The event arguments to be sent to the host page.\n * @returns Returns an observable which will complete when the add-in host page receives the\n * message. The request will fail if a subsequent event occurs, for the same event type, within\n * 200 milliseconds. A failure can also occur if an event type is not one of the supported types\n * from the host page.\n * @see AddinClientInitArgs#supportedEventTypes\n */\n public sendEvent(args: AddinClientEventArgs): Observable<void> {\n return from(this.addinClient.sendEvent(args));\n }\n\n private initializeTheme(themeSettings: AddinClientThemeSettings): void {\n if (!themeSettings) {\n return;\n }\n\n const hostTheme = AddinClientService.toSkyTheme(themeSettings.theme);\n const hostThemeMode = AddinClientService.toSkyThemeMode(themeSettings.mode);\n\n if (!this.#config) {\n // no app config, initialize host theme\n this.initializeTheme_(hostTheme, hostThemeMode);\n return;\n }\n\n const themingConfig = this.#config.skyux.app?.theming;\n\n if (\n themingConfig?.supportedThemes &&\n themingConfig.supportedThemes.indexOf(themeSettings.theme as SkyuxConfigAppSupportedTheme) !== -1\n ) {\n // app supports host theme, initialize host theme\n this.initializeTheme_(hostTheme, hostThemeMode);\n return;\n }\n\n // app does not support host theme, do nothing to initialize the app's default theme\n }\n\n private initializeTheme_(theme: SkyTheme, themeMode: SkyThemeMode): void {\n this.#themeService.init(\n document.body,\n this.#rendererFactory.createRenderer(undefined, undefined),\n new SkyThemeSettings(theme, themeMode)\n );\n }\n\n private setTheme(settings: AddinClientThemeSettings): void {\n if (!settings) {\n return;\n }\n\n this.#themeService.setTheme(new SkyThemeSettings(\n AddinClientService.toSkyTheme(settings.theme),\n AddinClientService.toSkyThemeMode(settings.mode)\n ));\n }\n\n private static toSkyTheme(theme: string): SkyTheme {\n switch (theme) {\n case 'modern':\n return SkyTheme.presets.modern;\n default:\n return SkyTheme.presets.default;\n }\n }\n\n private static toSkyThemeMode(mode: string): SkyThemeMode {\n switch (mode) {\n case 'dark':\n return SkyThemeMode.presets.dark;\n default:\n return SkyThemeMode.presets.light;\n }\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"blackbaud-skyux-lib-addin-client.mjs","sources":["../../../projects/addin-client/src/src/addin-client-config.service.ts","../../../projects/addin-client/src/src/events/addin-event.ts","../../../projects/addin-client/src/src/events/addin-event-handler-instance.ts","../../../projects/addin-client/src/src/addin-client.service.ts","../../../projects/addin-client/src/blackbaud-skyux-lib-addin-client.ts"],"sourcesContent":["import { AddinClientConfig } from \"@blackbaud/sky-addin-client\";\n\n/**\n * Implement this class with your own data to initialize the add-in client service. \n */ \nexport abstract class AddinClientConfigService {\n /**\n * Gets the AddinClientConfig object that will be injected the\n * AddinClient instance when instantiated.\n */\n public getAddinClientConfig(): AddinClientConfig {\n return {};\n }\n}\n","/**\n * Contains data for an add-in event and allows you to indicate that an event\n * has been processed\n */\nexport class AddinEvent {\n\n /**\n * The data that an add-in event has returned.\n */\n public context: any;\n\n /**\n * A function to call indicating that the add-in event is processed.\n */\n public done?: () => void;\n}\n","import {\n EventEmitter\n} from '@angular/core';\n\nimport {\n AddinEvent\n} from './addin-event';\n\n/**\n * Allows you to process events from an event handler.\n */\nexport class AddinEventHandlerInstance {\n\n /**\n * An event that emits when a new add-in event has occurred.\n */\n public addinEvent: EventEmitter<AddinEvent>;\n}\n","import {\n EventEmitter,\n Injectable,\n RendererFactory2,\n inject\n} from '@angular/core';\nimport {\n AddinClient,\n AddinClientCloseModalArgs,\n AddinClientEventArgs,\n AddinClientInitArgs,\n AddinClientNavigateArgs,\n AddinClientOpenHelpArgs,\n AddinClientShowConfirmArgs,\n AddinClientShowErrorArgs,\n AddinClientShowFlyoutArgs,\n AddinClientShowFlyoutResult,\n AddinClientShowModalArgs,\n AddinClientShowModalResult,\n AddinClientShowToastArgs,\n AddinClientThemeSettings,\n AddinEventCallback\n} from '@blackbaud/sky-addin-client';\nimport {\n SkyAppConfig, SkyuxConfigAppSupportedTheme\n} from '@skyux/config';\nimport {\n SkyTheme,\n SkyThemeMode,\n SkyThemeService,\n SkyThemeSettings\n} from '@skyux/theme';\nimport {\n AsyncSubject,\n Observable,\n from\n} from 'rxjs';\nimport { AddinClientConfigService } from './addin-client-config.service';\nimport {\n AddinEvent,\n AddinEventHandlerInstance\n} from './events';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class AddinClientService {\n public readonly addinClient: AddinClient;\n\n // Init args\n private _args: AsyncSubject<AddinClientInitArgs> = new AsyncSubject<AddinClientInitArgs>();\n public args: Observable<AddinClientInitArgs> = this._args.asObservable();\n\n // Addin Client Events\n /**\n * Event emitted for button add-ins indicating that the button was clicked.\n */\n public buttonClick: EventEmitter<any> = new EventEmitter(true);\n\n /**\n * Event emitted for add-ins when context information has been updated\n */\n public updateContext: EventEmitter<any> = new EventEmitter();\n\n /**\n * Event emitted for flyout add-ins indicating that the next button was clicked.\n */\n public flyoutNextClick: EventEmitter<any> = new EventEmitter(true);\n\n /**\n * Event emitted for flyout add-ins indicating that the previous button was clicked.\n */\n public flyoutPreviousClick: EventEmitter<any> = new EventEmitter(true);\n\n /**\n * Event emitted for tile add-ins indicating that the help button was clicked.\n */\n public helpClick: EventEmitter<any> = new EventEmitter(true);\n\n /**\n * Event emitted for tile add-ins indicating that the settings button was clicked.\n */\n public settingsClick: EventEmitter<any> = new EventEmitter(true);\n\n #config = inject(SkyAppConfig, { optional: true });\n #rendererFactory = inject(RendererFactory2);\n #themeService = inject(SkyThemeService);\n #addinClientConfigService = inject(AddinClientConfigService, { optional: true });\n\n constructor() {\n this.addinClient = new AddinClient({\n callbacks: {\n init: (args: AddinClientInitArgs) => {\n this.initializeTheme(args?.themeSettings);\n\n this._args.next(args);\n this._args.complete();\n },\n buttonClick: () => {\n this.buttonClick.emit();\n },\n flyoutNextClick: () => {\n this.flyoutNextClick.emit();\n },\n flyoutPreviousClick: () => {\n this.flyoutPreviousClick.emit();\n },\n helpClick: () => {\n this.helpClick.emit();\n },\n settingsClick: () => {\n this.settingsClick.emit();\n },\n updateContext: (context: any) => {\n this.updateContext.emit(context);\n },\n themeChange: (settings: AddinClientThemeSettings) => {\n this.setTheme(settings);\n }\n },\n config: this.#addinClientConfigService?.getAddinClientConfig()\n });\n }\n\n /**\n * Informs the host to close this modal add-in.\n * Should only be used from within the modal add-in and not the parent add-in.\n * @param args Arguments to provide a context object back to the parent add-in.\n */\n public closeModal(args: AddinClientCloseModalArgs): void {\n this.addinClient.closeModal(args);\n }\n\n /**\n * Requests the host page to launch a modal add-in.\n * @param args Arguments for launching the modal.\n * @returns Returns an observable that will publish a value when the modal add-in is closed.\n * Observables will publish values with context data passed from the modal add-in's closeModal call.\n */\n public showModal(args: AddinClientShowModalArgs): Observable<any> {\n let modalReturn: AddinClientShowModalResult = this.addinClient.showModal(args);\n return from(modalReturn.modalClosed);\n }\n\n /**\n * Cleans up the AddinClient, releasing all resources.\n */\n public destroy(): void {\n this.addinClient.destroy();\n }\n\n /**\n * Requests the host page to navigate.\n * @param args Arguments describing the navigation request.\n */\n public navigate(args: AddinClientNavigateArgs): void {\n this.addinClient.navigate(args);\n }\n\n /**\n * Informs the host to open the help tab with the specified help key.\n * @param args Arguments for launching the help tab.\n */\n public openHelp(args: AddinClientOpenHelpArgs): void {\n this.addinClient.openHelp(args);\n }\n\n /**\n * Requests a user identity token for the current user.\n * @returns Returns an observable which will publish the token value.\n */\n public getUserIdentityToken(): Observable<string> {\n return from(this.addinClient.getUserIdentityToken());\n }\n\n /**\n * @deprecated Use getUserIdentityToken\n */\n public getAuthToken(): Observable<string> {\n return from(this.addinClient.getUserIdentityToken());\n }\n\n /**\n * Informs the host to show a toast message.\n * @param args Arguments for showing a toast.\n */\n public showToast(args: AddinClientShowToastArgs): void {\n this.addinClient.showToast(args);\n }\n\n /**\n * Requests the host page to launch a flyout add-in.\n * @param args Arguments for launching the flyout.\n * @returns Returns an observable that will notify when the flyout add-in is closed.\n */\n public showFlyout(args: AddinClientShowFlyoutArgs): Observable<void> {\n const flyoutReturn: AddinClientShowFlyoutResult = this.addinClient.showFlyout(args);\n return from(flyoutReturn.flyoutClosed);\n }\n\n /**\n * Requests the host page to close the flyout add-in.\n */\n public closeFlyout(): void {\n this.addinClient.closeFlyout();\n }\n\n /**\n * Requests the host page to show a confirm dialog.\n * @param args Arguments for showing a confirm dialog.\n * @returns Returns an observable which will publish the confirm action value.\n */\n public showConfirm(args: AddinClientShowConfirmArgs): Observable<string> {\n return from(this.addinClient.showConfirm(args));\n }\n\n /**\n * Informs the host to show an error dialog.\n * @param args Arguments for showing an error dialog.\n */\n public showError(args: AddinClientShowErrorArgs): void {\n this.addinClient.showError(args);\n }\n\n /**\n * Requests the host page to show a page blocking wait indicator.\n */\n public showWait(): void {\n this.addinClient.showWait();\n }\n\n /**\n * Requests the host page to hide a page blocking wait indicator.\n */\n public hideWait(): void {\n this.addinClient.hideWait();\n }\n\n /**\n * Registers an event handler for the provided event type.\n * @param eventType The event type to register.\n * @returns AddinEventHandlerInstance\n */\n public addEventHandler(eventType: string): AddinEventHandlerInstance {\n let eventHandlerInstance = new AddinEventHandlerInstance();\n eventHandlerInstance.addinEvent = new EventEmitter<AddinEvent>();\n\n const eventCallback: AddinEventCallback = (context, done) => {\n eventHandlerInstance.addinEvent.emit({\n context,\n done\n });\n };\n this.addinClient.addEventHandler(eventType, eventCallback);\n\n return eventHandlerInstance;\n }\n\n /**\n * Sends an event to be handled by the host page.\n * @param args The event arguments to be sent to the host page.\n * @returns Returns an observable which will complete when the add-in host page receives the\n * message. The request will fail if a subsequent event occurs, for the same event type, within\n * 200 milliseconds. A failure can also occur if an event type is not one of the supported types\n * from the host page.\n * @see AddinClientInitArgs#supportedEventTypes\n */\n public sendEvent(args: AddinClientEventArgs): Observable<void> {\n return from(this.addinClient.sendEvent(args));\n }\n\n private initializeTheme(themeSettings: AddinClientThemeSettings): void {\n if (!themeSettings) {\n return;\n }\n\n const hostTheme = AddinClientService.toSkyTheme(themeSettings.theme);\n const hostThemeMode = AddinClientService.toSkyThemeMode(themeSettings.mode);\n\n if (!this.#config) {\n // no app config, initialize host theme\n this.initializeTheme_(hostTheme, hostThemeMode);\n return;\n }\n\n const themingConfig = this.#config.skyux.app?.theming;\n\n if (\n themingConfig?.supportedThemes &&\n themingConfig.supportedThemes.indexOf(themeSettings.theme as SkyuxConfigAppSupportedTheme) !== -1\n ) {\n // app supports host theme, initialize host theme\n this.initializeTheme_(hostTheme, hostThemeMode);\n return;\n }\n\n // app does not support host theme, do nothing to initialize the app's default theme\n }\n\n private initializeTheme_(theme: SkyTheme, themeMode: SkyThemeMode): void {\n this.#themeService.init(\n document.body,\n this.#rendererFactory.createRenderer(undefined, undefined),\n new SkyThemeSettings(theme, themeMode)\n );\n }\n\n private setTheme(settings: AddinClientThemeSettings): void {\n if (!settings) {\n return;\n }\n\n this.#themeService.setTheme(new SkyThemeSettings(\n AddinClientService.toSkyTheme(settings.theme),\n AddinClientService.toSkyThemeMode(settings.mode)\n ));\n }\n\n private static toSkyTheme(theme: string): SkyTheme {\n switch (theme) {\n case 'modern':\n return SkyTheme.presets.modern;\n default:\n return SkyTheme.presets.default;\n }\n }\n\n private static toSkyThemeMode(mode: string): SkyThemeMode {\n switch (mode) {\n case 'dark':\n return SkyThemeMode.presets.dark;\n default:\n return SkyThemeMode.presets.light;\n }\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,14 +1,14 @@
1
1
  {
2
2
  "name": "@blackbaud/skyux-lib-addin-client",
3
- "version": "9.1.0",
3
+ "version": "9.2.0",
4
4
  "peerDependencies": {
5
- "@angular/common": "^17.3.2",
6
- "@angular/core": "^17.3.2",
7
- "@skyux/config": "^10.0.0",
8
- "@skyux/theme": "^10.0.0"
5
+ "@angular/common": "^17.3.6",
6
+ "@angular/core": "^17.3.6",
7
+ "@skyux/config": "^10.7.0",
8
+ "@skyux/theme": "^10.7.0"
9
9
  },
10
10
  "dependencies": {
11
- "@blackbaud/sky-addin-client": "1.2.0",
11
+ "@blackbaud/sky-addin-client": "^1.3.0",
12
12
  "tslib": "^2.6.2"
13
13
  },
14
14
  "module": "fesm2022/blackbaud-skyux-lib-addin-client.mjs",
package/public-api.d.ts CHANGED
@@ -1,3 +1,4 @@
1
1
  export * from './src/addin-client.service';
2
+ export * from './src/addin-client-config.service';
2
3
  export * from './src/events/addin-event';
3
4
  export * from './src/events/addin-event-handler-instance';
@@ -0,0 +1,11 @@
1
+ import { AddinClientConfig } from "@blackbaud/sky-addin-client";
2
+ /**
3
+ * Implement this class with your own data to initialize the add-in client service.
4
+ */
5
+ export declare abstract class AddinClientConfigService {
6
+ /**
7
+ * Gets the AddinClientConfig object that will be injected the
8
+ * AddinClient instance when instantiated.
9
+ */
10
+ getAddinClientConfig(): AddinClientConfig;
11
+ }