@capitalos/angular 0.1.0-rc.1 → 0.1.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/esm2020/lib/base-iframe.component.mjs +139 -0
- package/esm2020/lib/billpay-app.component.mjs +30 -0
- package/esm2020/lib/capitalos.module.mjs +7 -5
- package/esm2020/lib/cards-app.component.mjs +10 -73
- package/esm2020/lib/onboarding.component.mjs +60 -0
- package/esm2020/lib/version.mjs +5 -0
- package/esm2020/public-api.mjs +3 -1
- package/fesm2015/capitalos-angular.mjs +190 -34
- package/fesm2015/capitalos-angular.mjs.map +1 -1
- package/fesm2020/capitalos-angular.mjs +187 -26
- package/fesm2020/capitalos-angular.mjs.map +1 -1
- package/lib/base-iframe.component.d.ts +80 -0
- package/lib/billpay-app.component.d.ts +23 -0
- package/lib/capitalos.module.d.ts +3 -1
- package/lib/cards-app.component.d.ts +5 -17
- package/lib/onboarding.component.d.ts +32 -0
- package/lib/version.d.ts +1 -0
- package/package.json +13 -2
- package/public-api.d.ts +3 -1
|
@@ -0,0 +1,139 @@
|
|
|
1
|
+
import { inject, Input, Output, EventEmitter, ViewChild, Directive, } from '@angular/core';
|
|
2
|
+
import { IframeManager, CapitalOSError, } from '@capitalos/core';
|
|
3
|
+
import { CapitalOsAuthService } from './capitalos-auth.service';
|
|
4
|
+
import { CAPITALOS_CONFIG } from './provide-capitalos';
|
|
5
|
+
import { SDK_VERSION } from './version';
|
|
6
|
+
import * as i0 from "@angular/core";
|
|
7
|
+
/**
|
|
8
|
+
* Common template for all iframe components.
|
|
9
|
+
* Angular doesn't support inheriting templates, so subclasses must use this constant.
|
|
10
|
+
*/
|
|
11
|
+
export const IFRAME_COMPONENT_TEMPLATE = `<div #iframeContainer class="capitalos-iframe-container"></div>`;
|
|
12
|
+
/**
|
|
13
|
+
* Common styles for all iframe components.
|
|
14
|
+
* Angular doesn't support inheriting styles, so subclasses must use this constant.
|
|
15
|
+
*
|
|
16
|
+
* Why Angular needs these styles (unlike React/Vue):
|
|
17
|
+
* Angular component selectors (e.g., <capitalos-cards-app>) remain in the DOM as real elements.
|
|
18
|
+
* Without :host styling, the component element may collapse or not fill its container.
|
|
19
|
+
* In React/Vue, component tags are replaced by rendered content, so no wrapper styling is needed.
|
|
20
|
+
*/
|
|
21
|
+
export const IFRAME_COMPONENT_STYLES = [
|
|
22
|
+
`
|
|
23
|
+
:host {
|
|
24
|
+
display: block;
|
|
25
|
+
width: 100%;
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
.capitalos-iframe-container {
|
|
29
|
+
width: 100%;
|
|
30
|
+
}
|
|
31
|
+
`,
|
|
32
|
+
];
|
|
33
|
+
/**
|
|
34
|
+
* Abstract base class for CapitalOS iframe components.
|
|
35
|
+
*
|
|
36
|
+
* Handles common functionality:
|
|
37
|
+
* - Token subscription and iframe initialization
|
|
38
|
+
* - Common inputs (theme, heightOffsetPx, enableLogging)
|
|
39
|
+
* - Common outputs (loaded, error)
|
|
40
|
+
* - Lifecycle management (cleanup on destroy)
|
|
41
|
+
*
|
|
42
|
+
* Subclasses must implement:
|
|
43
|
+
* - `getRenderingContext()` - returns the component-specific rendering context
|
|
44
|
+
*
|
|
45
|
+
* Subclasses may override:
|
|
46
|
+
* - `getComponentCallbacks()` - returns component-specific Penpal callbacks
|
|
47
|
+
*
|
|
48
|
+
* Note: Rendering context inputs (e.g., entryPoint, exitPoint for Onboarding) are read once
|
|
49
|
+
* at iframe initialization. Changes to these inputs after the iframe loads will NOT trigger
|
|
50
|
+
* re-initialization. This matches the behavior of the React SDK.
|
|
51
|
+
*
|
|
52
|
+
* @example
|
|
53
|
+
* ```typescript
|
|
54
|
+
* @Component({ selector: 'my-component', ... })
|
|
55
|
+
* export class MyComponent extends BaseIframeComponent {
|
|
56
|
+
* protected getRenderingContext(): RenderingContext {
|
|
57
|
+
* return { entryPoint: 'myComponent' }
|
|
58
|
+
* }
|
|
59
|
+
* }
|
|
60
|
+
* ```
|
|
61
|
+
*/
|
|
62
|
+
export class BaseIframeComponent {
|
|
63
|
+
constructor() {
|
|
64
|
+
// Injected services
|
|
65
|
+
this.authService = inject(CapitalOsAuthService);
|
|
66
|
+
this.config = inject(CAPITALOS_CONFIG);
|
|
67
|
+
this.heightOffsetPx = 12;
|
|
68
|
+
// Common outputs
|
|
69
|
+
this.loaded = new EventEmitter();
|
|
70
|
+
this.error = new EventEmitter();
|
|
71
|
+
}
|
|
72
|
+
ngAfterViewInit() {
|
|
73
|
+
// Subscribe to tokenData$ and initialize iframe when ready
|
|
74
|
+
this.tokenDataSubscription = this.authService.tokenData$.subscribe((tokenData) => {
|
|
75
|
+
if (tokenData && this.iframeContainer) {
|
|
76
|
+
this.initializeIframe(tokenData, this.iframeContainer.nativeElement);
|
|
77
|
+
}
|
|
78
|
+
});
|
|
79
|
+
}
|
|
80
|
+
ngOnDestroy() {
|
|
81
|
+
this.tokenDataSubscription?.unsubscribe();
|
|
82
|
+
this.iframeManager?.destroy();
|
|
83
|
+
}
|
|
84
|
+
/**
|
|
85
|
+
* Returns component-specific Penpal callbacks.
|
|
86
|
+
* Override in subclasses that need callbacks (e.g., Onboarding, TokenExchange).
|
|
87
|
+
*/
|
|
88
|
+
getComponentCallbacks() {
|
|
89
|
+
return {};
|
|
90
|
+
}
|
|
91
|
+
initializeIframe(tokenData, container) {
|
|
92
|
+
// Destroy previous iframe if exists
|
|
93
|
+
this.iframeManager?.destroy();
|
|
94
|
+
const resolvedEnableLogging = this.enableLogging ?? this.config.enableLogging ?? false;
|
|
95
|
+
const resolvedTheme = this.theme ?? this.config.theme;
|
|
96
|
+
this.iframeManager = new IframeManager({
|
|
97
|
+
container,
|
|
98
|
+
tokenData,
|
|
99
|
+
renderingContext: this.getRenderingContext(),
|
|
100
|
+
theme: resolvedTheme,
|
|
101
|
+
enableLogging: resolvedEnableLogging,
|
|
102
|
+
logger: this.config.logger,
|
|
103
|
+
sdkVersion: SDK_VERSION,
|
|
104
|
+
heightOffsetPx: this.heightOffsetPx,
|
|
105
|
+
callbacks: {
|
|
106
|
+
onLoad: () => {
|
|
107
|
+
this.loaded.emit();
|
|
108
|
+
},
|
|
109
|
+
onError: (rawError) => {
|
|
110
|
+
const capitalOsError = new CapitalOSError(rawError);
|
|
111
|
+
this.error.emit(capitalOsError);
|
|
112
|
+
},
|
|
113
|
+
onTokenExpired: () => {
|
|
114
|
+
this.authService.invalidateToken();
|
|
115
|
+
},
|
|
116
|
+
...this.getComponentCallbacks(),
|
|
117
|
+
},
|
|
118
|
+
});
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
BaseIframeComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: BaseIframeComponent, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
122
|
+
BaseIframeComponent.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "14.3.0", type: BaseIframeComponent, inputs: { theme: "theme", heightOffsetPx: "heightOffsetPx", enableLogging: "enableLogging" }, outputs: { loaded: "loaded", error: "error" }, viewQueries: [{ propertyName: "iframeContainer", first: true, predicate: ["iframeContainer"], descendants: true }], ngImport: i0 });
|
|
123
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: BaseIframeComponent, decorators: [{
|
|
124
|
+
type: Directive
|
|
125
|
+
}], propDecorators: { theme: [{
|
|
126
|
+
type: Input
|
|
127
|
+
}], heightOffsetPx: [{
|
|
128
|
+
type: Input
|
|
129
|
+
}], enableLogging: [{
|
|
130
|
+
type: Input
|
|
131
|
+
}], loaded: [{
|
|
132
|
+
type: Output
|
|
133
|
+
}], error: [{
|
|
134
|
+
type: Output
|
|
135
|
+
}], iframeContainer: [{
|
|
136
|
+
type: ViewChild,
|
|
137
|
+
args: ['iframeContainer']
|
|
138
|
+
}] } });
|
|
139
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS1pZnJhbWUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvY2FwaXRhbG9zLWFuZ3VsYXIvc3JjL2xpYi9iYXNlLWlmcmFtZS5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLE1BQU0sRUFDTixLQUFLLEVBQ0wsTUFBTSxFQUNOLFlBQVksRUFDWixTQUFTLEVBSVQsU0FBUyxHQUNWLE1BQU0sZUFBZSxDQUFBO0FBRXRCLE9BQU8sRUFDTCxhQUFhLEVBQ2IsY0FBYyxHQU1mLE1BQU0saUJBQWlCLENBQUE7QUFDeEIsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sMEJBQTBCLENBQUE7QUFDL0QsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0scUJBQXFCLENBQUE7QUFDdEQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLFdBQVcsQ0FBQTs7QUFFdkM7OztHQUdHO0FBQ0gsTUFBTSxDQUFDLE1BQU0seUJBQXlCLEdBQUcsaUVBQWlFLENBQUE7QUFFMUc7Ozs7Ozs7O0dBUUc7QUFDSCxNQUFNLENBQUMsTUFBTSx1QkFBdUIsR0FBRztJQUNyQzs7Ozs7Ozs7O0dBU0M7Q0FDRixDQUFBO0FBUUQ7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0E0Qkc7QUFFSCxNQUFNLE9BQWdCLG1CQUFtQjtJQUR6QztRQUVFLG9CQUFvQjtRQUNELGdCQUFXLEdBQUcsTUFBTSxDQUFDLG9CQUFvQixDQUFDLENBQUE7UUFDMUMsV0FBTSxHQUFHLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFBO1FBSTNDLG1CQUFjLEdBQUcsRUFBRSxDQUFBO1FBRzVCLGlCQUFpQjtRQUNQLFdBQU0sR0FBRyxJQUFJLFlBQVksRUFBUSxDQUFBO1FBQ2pDLFVBQUssR0FBRyxJQUFJLFlBQVksRUFBa0IsQ0FBQTtLQW9FckQ7SUEzREMsZUFBZTtRQUNiLDJEQUEyRDtRQUMzRCxJQUFJLENBQUMscUJBQXFCLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxVQUFVLENBQUMsU0FBUyxDQUFDLENBQUMsU0FBUyxFQUFFLEVBQUU7WUFDL0UsSUFBSSxTQUFTLElBQUksSUFBSSxDQUFDLGVBQWUsRUFBRTtnQkFDckMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLFNBQVMsRUFBRSxJQUFJLENBQUMsZUFBZSxDQUFDLGFBQWEsQ0FBQyxDQUFBO2FBQ3JFO1FBQ0gsQ0FBQyxDQUFDLENBQUE7SUFDSixDQUFDO0lBRUQsV0FBVztRQUNULElBQUksQ0FBQyxxQkFBcUIsRUFBRSxXQUFXLEVBQUUsQ0FBQTtRQUN6QyxJQUFJLENBQUMsYUFBYSxFQUFFLE9BQU8sRUFBRSxDQUFBO0lBQy9CLENBQUM7SUFRRDs7O09BR0c7SUFDTyxxQkFBcUI7UUFDN0IsT0FBTyxFQUFFLENBQUE7SUFDWCxDQUFDO0lBRU8sZ0JBQWdCLENBQUMsU0FBb0IsRUFBRSxTQUFzQjtRQUNuRSxvQ0FBb0M7UUFDcEMsSUFBSSxDQUFDLGFBQWEsRUFBRSxPQUFPLEVBQUUsQ0FBQTtRQUU3QixNQUFNLHFCQUFxQixHQUFHLElBQUksQ0FBQyxhQUFhLElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxhQUFhLElBQUksS0FBSyxDQUFBO1FBQ3RGLE1BQU0sYUFBYSxHQUFHLElBQUksQ0FBQyxLQUFLLElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUE7UUFFckQsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLGFBQWEsQ0FBQztZQUNyQyxTQUFTO1lBQ1QsU0FBUztZQUNULGdCQUFnQixFQUFFLElBQUksQ0FBQyxtQkFBbUIsRUFBRTtZQUM1QyxLQUFLLEVBQUUsYUFBYTtZQUNwQixhQUFhLEVBQUUscUJBQXFCO1lBQ3BDLE1BQU0sRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU07WUFDMUIsVUFBVSxFQUFFLFdBQVc7WUFDdkIsY0FBYyxFQUFFLElBQUksQ0FBQyxjQUFjO1lBQ25DLFNBQVMsRUFBRTtnQkFDVCxNQUFNLEVBQUUsR0FBRyxFQUFFO29CQUNYLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLENBQUE7Z0JBQ3BCLENBQUM7Z0JBQ0QsT0FBTyxFQUFFLENBQUMsUUFBeUIsRUFBRSxFQUFFO29CQUNyQyxNQUFNLGNBQWMsR0FBRyxJQUFJLGNBQWMsQ0FBQyxRQUFRLENBQUMsQ0FBQTtvQkFDbkQsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUE7Z0JBQ2pDLENBQUM7Z0JBQ0QsY0FBYyxFQUFFLEdBQUcsRUFBRTtvQkFDbkIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxlQUFlLEVBQUUsQ0FBQTtnQkFDcEMsQ0FBQztnQkFDRCxHQUFHLElBQUksQ0FBQyxxQkFBcUIsRUFBRTthQUNoQztTQUNGLENBQUMsQ0FBQTtJQUNKLENBQUM7O2dIQS9FbUIsbUJBQW1CO29HQUFuQixtQkFBbUI7MkZBQW5CLG1CQUFtQjtrQkFEeEMsU0FBUzs4QkFPQyxLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csY0FBYztzQkFBdEIsS0FBSztnQkFDRyxhQUFhO3NCQUFyQixLQUFLO2dCQUdJLE1BQU07c0JBQWYsTUFBTTtnQkFDRyxLQUFLO3NCQUFkLE1BQU07Z0JBR3VCLGVBQWU7c0JBQTVDLFNBQVM7dUJBQUMsaUJBQWlCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgaW5qZWN0LFxuICBJbnB1dCxcbiAgT3V0cHV0LFxuICBFdmVudEVtaXR0ZXIsXG4gIFZpZXdDaGlsZCxcbiAgRWxlbWVudFJlZixcbiAgQWZ0ZXJWaWV3SW5pdCxcbiAgT25EZXN0cm95LFxuICBEaXJlY3RpdmUsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnXG5pbXBvcnQgeyBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJ1xuaW1wb3J0IHtcbiAgSWZyYW1lTWFuYWdlcixcbiAgQ2FwaXRhbE9TRXJyb3IsXG4gIFRva2VuRGF0YSxcbiAgUmF3RXJyb3JEZXRhaWxzLFxuICBUaGVtZUNvbG9yU2NoZW1lLFxuICBSZW5kZXJpbmdDb250ZXh0LFxuICBJZnJhbWVNYW5hZ2VyQ29uZmlnLFxufSBmcm9tICdAY2FwaXRhbG9zL2NvcmUnXG5pbXBvcnQgeyBDYXBpdGFsT3NBdXRoU2VydmljZSB9IGZyb20gJy4vY2FwaXRhbG9zLWF1dGguc2VydmljZSdcbmltcG9ydCB7IENBUElUQUxPU19DT05GSUcgfSBmcm9tICcuL3Byb3ZpZGUtY2FwaXRhbG9zJ1xuaW1wb3J0IHsgU0RLX1ZFUlNJT04gfSBmcm9tICcuL3ZlcnNpb24nXG5cbi8qKlxuICogQ29tbW9uIHRlbXBsYXRlIGZvciBhbGwgaWZyYW1lIGNvbXBvbmVudHMuXG4gKiBBbmd1bGFyIGRvZXNuJ3Qgc3VwcG9ydCBpbmhlcml0aW5nIHRlbXBsYXRlcywgc28gc3ViY2xhc3NlcyBtdXN0IHVzZSB0aGlzIGNvbnN0YW50LlxuICovXG5leHBvcnQgY29uc3QgSUZSQU1FX0NPTVBPTkVOVF9URU1QTEFURSA9IGA8ZGl2ICNpZnJhbWVDb250YWluZXIgY2xhc3M9XCJjYXBpdGFsb3MtaWZyYW1lLWNvbnRhaW5lclwiPjwvZGl2PmBcblxuLyoqXG4gKiBDb21tb24gc3R5bGVzIGZvciBhbGwgaWZyYW1lIGNvbXBvbmVudHMuXG4gKiBBbmd1bGFyIGRvZXNuJ3Qgc3VwcG9ydCBpbmhlcml0aW5nIHN0eWxlcywgc28gc3ViY2xhc3NlcyBtdXN0IHVzZSB0aGlzIGNvbnN0YW50LlxuICpcbiAqIFdoeSBBbmd1bGFyIG5lZWRzIHRoZXNlIHN0eWxlcyAodW5saWtlIFJlYWN0L1Z1ZSk6XG4gKiBBbmd1bGFyIGNvbXBvbmVudCBzZWxlY3RvcnMgKGUuZy4sIDxjYXBpdGFsb3MtY2FyZHMtYXBwPikgcmVtYWluIGluIHRoZSBET00gYXMgcmVhbCBlbGVtZW50cy5cbiAqIFdpdGhvdXQgOmhvc3Qgc3R5bGluZywgdGhlIGNvbXBvbmVudCBlbGVtZW50IG1heSBjb2xsYXBzZSBvciBub3QgZmlsbCBpdHMgY29udGFpbmVyLlxuICogSW4gUmVhY3QvVnVlLCBjb21wb25lbnQgdGFncyBhcmUgcmVwbGFjZWQgYnkgcmVuZGVyZWQgY29udGVudCwgc28gbm8gd3JhcHBlciBzdHlsaW5nIGlzIG5lZWRlZC5cbiAqL1xuZXhwb3J0IGNvbnN0IElGUkFNRV9DT01QT05FTlRfU1RZTEVTID0gW1xuICBgXG4gICAgOmhvc3Qge1xuICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICB3aWR0aDogMTAwJTtcbiAgICB9XG5cbiAgICAuY2FwaXRhbG9zLWlmcmFtZS1jb250YWluZXIge1xuICAgICAgd2lkdGg6IDEwMCU7XG4gICAgfVxuICBgLFxuXVxuXG4vKipcbiAqIENvbXBvbmVudC1zcGVjaWZpYyBjYWxsYmFja3MgdG8gcGFzcyB0byBJZnJhbWVNYW5hZ2VyLlxuICogRXhjbHVkZXMgY29tbW9uIGNhbGxiYWNrcyAob25Mb2FkLCBvbkVycm9yLCBvblRva2VuRXhwaXJlZCkgd2hpY2ggdGhlIGJhc2UgY2xhc3MgaGFuZGxlcy5cbiAqL1xuZXhwb3J0IHR5cGUgQ29tcG9uZW50Q2FsbGJhY2tzID0gT21pdDxJZnJhbWVNYW5hZ2VyQ29uZmlnWydjYWxsYmFja3MnXSwgJ29uTG9hZCcgfCAnb25FcnJvcicgfCAnb25Ub2tlbkV4cGlyZWQnPlxuXG4vKipcbiAqIEFic3RyYWN0IGJhc2UgY2xhc3MgZm9yIENhcGl0YWxPUyBpZnJhbWUgY29tcG9uZW50cy5cbiAqXG4gKiBIYW5kbGVzIGNvbW1vbiBmdW5jdGlvbmFsaXR5OlxuICogLSBUb2tlbiBzdWJzY3JpcHRpb24gYW5kIGlmcmFtZSBpbml0aWFsaXphdGlvblxuICogLSBDb21tb24gaW5wdXRzICh0aGVtZSwgaGVpZ2h0T2Zmc2V0UHgsIGVuYWJsZUxvZ2dpbmcpXG4gKiAtIENvbW1vbiBvdXRwdXRzIChsb2FkZWQsIGVycm9yKVxuICogLSBMaWZlY3ljbGUgbWFuYWdlbWVudCAoY2xlYW51cCBvbiBkZXN0cm95KVxuICpcbiAqIFN1YmNsYXNzZXMgbXVzdCBpbXBsZW1lbnQ6XG4gKiAtIGBnZXRSZW5kZXJpbmdDb250ZXh0KClgIC0gcmV0dXJucyB0aGUgY29tcG9uZW50LXNwZWNpZmljIHJlbmRlcmluZyBjb250ZXh0XG4gKlxuICogU3ViY2xhc3NlcyBtYXkgb3ZlcnJpZGU6XG4gKiAtIGBnZXRDb21wb25lbnRDYWxsYmFja3MoKWAgLSByZXR1cm5zIGNvbXBvbmVudC1zcGVjaWZpYyBQZW5wYWwgY2FsbGJhY2tzXG4gKlxuICogTm90ZTogUmVuZGVyaW5nIGNvbnRleHQgaW5wdXRzIChlLmcuLCBlbnRyeVBvaW50LCBleGl0UG9pbnQgZm9yIE9uYm9hcmRpbmcpIGFyZSByZWFkIG9uY2VcbiAqIGF0IGlmcmFtZSBpbml0aWFsaXphdGlvbi4gQ2hhbmdlcyB0byB0aGVzZSBpbnB1dHMgYWZ0ZXIgdGhlIGlmcmFtZSBsb2FkcyB3aWxsIE5PVCB0cmlnZ2VyXG4gKiByZS1pbml0aWFsaXphdGlvbi4gVGhpcyBtYXRjaGVzIHRoZSBiZWhhdmlvciBvZiB0aGUgUmVhY3QgU0RLLlxuICpcbiAqIEBleGFtcGxlXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBAQ29tcG9uZW50KHsgc2VsZWN0b3I6ICdteS1jb21wb25lbnQnLCAuLi4gfSlcbiAqIGV4cG9ydCBjbGFzcyBNeUNvbXBvbmVudCBleHRlbmRzIEJhc2VJZnJhbWVDb21wb25lbnQge1xuICogICBwcm90ZWN0ZWQgZ2V0UmVuZGVyaW5nQ29udGV4dCgpOiBSZW5kZXJpbmdDb250ZXh0IHtcbiAqICAgICByZXR1cm4geyBlbnRyeVBvaW50OiAnbXlDb21wb25lbnQnIH1cbiAqICAgfVxuICogfVxuICogYGBgXG4gKi9cbkBEaXJlY3RpdmUoKVxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEJhc2VJZnJhbWVDb21wb25lbnQgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3kge1xuICAvLyBJbmplY3RlZCBzZXJ2aWNlc1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgYXV0aFNlcnZpY2UgPSBpbmplY3QoQ2FwaXRhbE9zQXV0aFNlcnZpY2UpXG4gIHByb3RlY3RlZCByZWFkb25seSBjb25maWcgPSBpbmplY3QoQ0FQSVRBTE9TX0NPTkZJRylcblxuICAvLyBDb21tb24gaW5wdXRzXG4gIEBJbnB1dCgpIHRoZW1lPzogVGhlbWVDb2xvclNjaGVtZVxuICBASW5wdXQoKSBoZWlnaHRPZmZzZXRQeCA9IDEyXG4gIEBJbnB1dCgpIGVuYWJsZUxvZ2dpbmc/OiBib29sZWFuXG5cbiAgLy8gQ29tbW9uIG91dHB1dHNcbiAgQE91dHB1dCgpIGxvYWRlZCA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKVxuICBAT3V0cHV0KCkgZXJyb3IgPSBuZXcgRXZlbnRFbWl0dGVyPENhcGl0YWxPU0Vycm9yPigpXG5cbiAgLy8gVmlldyBjaGlsZHJlblxuICBAVmlld0NoaWxkKCdpZnJhbWVDb250YWluZXInKSBpZnJhbWVDb250YWluZXI/OiBFbGVtZW50UmVmPEhUTUxEaXZFbGVtZW50PlxuXG4gIC8vIEludGVybmFsIHN0YXRlXG4gIHByaXZhdGUgaWZyYW1lTWFuYWdlcj86IElmcmFtZU1hbmFnZXJcbiAgcHJpdmF0ZSB0b2tlbkRhdGFTdWJzY3JpcHRpb24/OiBTdWJzY3JpcHRpb25cblxuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgLy8gU3Vic2NyaWJlIHRvIHRva2VuRGF0YSQgYW5kIGluaXRpYWxpemUgaWZyYW1lIHdoZW4gcmVhZHlcbiAgICB0aGlzLnRva2VuRGF0YVN1YnNjcmlwdGlvbiA9IHRoaXMuYXV0aFNlcnZpY2UudG9rZW5EYXRhJC5zdWJzY3JpYmUoKHRva2VuRGF0YSkgPT4ge1xuICAgICAgaWYgKHRva2VuRGF0YSAmJiB0aGlzLmlmcmFtZUNvbnRhaW5lcikge1xuICAgICAgICB0aGlzLmluaXRpYWxpemVJZnJhbWUodG9rZW5EYXRhLCB0aGlzLmlmcmFtZUNvbnRhaW5lci5uYXRpdmVFbGVtZW50KVxuICAgICAgfVxuICAgIH0pXG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLnRva2VuRGF0YVN1YnNjcmlwdGlvbj8udW5zdWJzY3JpYmUoKVxuICAgIHRoaXMuaWZyYW1lTWFuYWdlcj8uZGVzdHJveSgpXG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyB0aGUgcmVuZGVyaW5nIGNvbnRleHQgZm9yIHRoaXMgY29tcG9uZW50LlxuICAgKiBNdXN0IGJlIGltcGxlbWVudGVkIGJ5IHN1YmNsYXNzZXMuXG4gICAqL1xuICBwcm90ZWN0ZWQgYWJzdHJhY3QgZ2V0UmVuZGVyaW5nQ29udGV4dCgpOiBSZW5kZXJpbmdDb250ZXh0XG5cbiAgLyoqXG4gICAqIFJldHVybnMgY29tcG9uZW50LXNwZWNpZmljIFBlbnBhbCBjYWxsYmFja3MuXG4gICAqIE92ZXJyaWRlIGluIHN1YmNsYXNzZXMgdGhhdCBuZWVkIGNhbGxiYWNrcyAoZS5nLiwgT25ib2FyZGluZywgVG9rZW5FeGNoYW5nZSkuXG4gICAqL1xuICBwcm90ZWN0ZWQgZ2V0Q29tcG9uZW50Q2FsbGJhY2tzKCk6IENvbXBvbmVudENhbGxiYWNrcyB7XG4gICAgcmV0dXJuIHt9XG4gIH1cblxuICBwcml2YXRlIGluaXRpYWxpemVJZnJhbWUodG9rZW5EYXRhOiBUb2tlbkRhdGEsIGNvbnRhaW5lcjogSFRNTEVsZW1lbnQpOiB2b2lkIHtcbiAgICAvLyBEZXN0cm95IHByZXZpb3VzIGlmcmFtZSBpZiBleGlzdHNcbiAgICB0aGlzLmlmcmFtZU1hbmFnZXI/LmRlc3Ryb3koKVxuXG4gICAgY29uc3QgcmVzb2x2ZWRFbmFibGVMb2dnaW5nID0gdGhpcy5lbmFibGVMb2dnaW5nID8/IHRoaXMuY29uZmlnLmVuYWJsZUxvZ2dpbmcgPz8gZmFsc2VcbiAgICBjb25zdCByZXNvbHZlZFRoZW1lID0gdGhpcy50aGVtZSA/PyB0aGlzLmNvbmZpZy50aGVtZVxuXG4gICAgdGhpcy5pZnJhbWVNYW5hZ2VyID0gbmV3IElmcmFtZU1hbmFnZXIoe1xuICAgICAgY29udGFpbmVyLFxuICAgICAgdG9rZW5EYXRhLFxuICAgICAgcmVuZGVyaW5nQ29udGV4dDogdGhpcy5nZXRSZW5kZXJpbmdDb250ZXh0KCksXG4gICAgICB0aGVtZTogcmVzb2x2ZWRUaGVtZSxcbiAgICAgIGVuYWJsZUxvZ2dpbmc6IHJlc29sdmVkRW5hYmxlTG9nZ2luZyxcbiAgICAgIGxvZ2dlcjogdGhpcy5jb25maWcubG9nZ2VyLFxuICAgICAgc2RrVmVyc2lvbjogU0RLX1ZFUlNJT04sXG4gICAgICBoZWlnaHRPZmZzZXRQeDogdGhpcy5oZWlnaHRPZmZzZXRQeCxcbiAgICAgIGNhbGxiYWNrczoge1xuICAgICAgICBvbkxvYWQ6ICgpID0+IHtcbiAgICAgICAgICB0aGlzLmxvYWRlZC5lbWl0KClcbiAgICAgICAgfSxcbiAgICAgICAgb25FcnJvcjogKHJhd0Vycm9yOiBSYXdFcnJvckRldGFpbHMpID0+IHtcbiAgICAgICAgICBjb25zdCBjYXBpdGFsT3NFcnJvciA9IG5ldyBDYXBpdGFsT1NFcnJvcihyYXdFcnJvcilcbiAgICAgICAgICB0aGlzLmVycm9yLmVtaXQoY2FwaXRhbE9zRXJyb3IpXG4gICAgICAgIH0sXG4gICAgICAgIG9uVG9rZW5FeHBpcmVkOiAoKSA9PiB7XG4gICAgICAgICAgdGhpcy5hdXRoU2VydmljZS5pbnZhbGlkYXRlVG9rZW4oKVxuICAgICAgICB9LFxuICAgICAgICAuLi50aGlzLmdldENvbXBvbmVudENhbGxiYWNrcygpLFxuICAgICAgfSxcbiAgICB9KVxuICB9XG59XG4iXX0=
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { Component } from '@angular/core';
|
|
2
|
+
import { BaseIframeComponent, IFRAME_COMPONENT_TEMPLATE, IFRAME_COMPONENT_STYLES } from './base-iframe.component';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
/**
|
|
5
|
+
* BillPayApp component that renders the CapitalOS bill payment interface in an iframe.
|
|
6
|
+
*
|
|
7
|
+
* The component emits events for loading state - consumers should handle their own loading UI:
|
|
8
|
+
*
|
|
9
|
+
* ```html
|
|
10
|
+
* <div *ngIf="!billPayLoaded">
|
|
11
|
+
* <my-loading-spinner></my-loading-spinner>
|
|
12
|
+
* </div>
|
|
13
|
+
* <capitalos-billpay-app
|
|
14
|
+
* (loaded)="billPayLoaded = true"
|
|
15
|
+
* (error)="onBillPayError($event)"
|
|
16
|
+
* ></capitalos-billpay-app>
|
|
17
|
+
* ```
|
|
18
|
+
*/
|
|
19
|
+
export class BillPayAppComponent extends BaseIframeComponent {
|
|
20
|
+
getRenderingContext() {
|
|
21
|
+
return { entryPoint: 'billPayApp' };
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
BillPayAppComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: BillPayAppComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
|
|
25
|
+
BillPayAppComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: BillPayAppComponent, isStandalone: true, selector: "capitalos-billpay-app", usesInheritance: true, ngImport: i0, template: "<div #iframeContainer class=\"capitalos-iframe-container\"></div>", isInline: true, styles: [":host{display:block;width:100%}.capitalos-iframe-container{width:100%}\n"] });
|
|
26
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: BillPayAppComponent, decorators: [{
|
|
27
|
+
type: Component,
|
|
28
|
+
args: [{ selector: 'capitalos-billpay-app', standalone: true, template: IFRAME_COMPONENT_TEMPLATE, styles: [":host{display:block;width:100%}.capitalos-iframe-container{width:100%}\n"] }]
|
|
29
|
+
}] });
|
|
30
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmlsbHBheS1hcHAuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvY2FwaXRhbG9zLWFuZ3VsYXIvc3JjL2xpYi9iaWxscGF5LWFwcC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQTtBQUV6QyxPQUFPLEVBQUUsbUJBQW1CLEVBQUUseUJBQXlCLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQTs7QUFFakg7Ozs7Ozs7Ozs7Ozs7O0dBY0c7QUFPSCxNQUFNLE9BQU8sbUJBQW9CLFNBQVEsbUJBQW1CO0lBQ2hELG1CQUFtQjtRQUMzQixPQUFPLEVBQUUsVUFBVSxFQUFFLFlBQVksRUFBRSxDQUFBO0lBQ3JDLENBQUM7O2dIQUhVLG1CQUFtQjtvR0FBbkIsbUJBQW1COzJGQUFuQixtQkFBbUI7a0JBTi9CLFNBQVM7K0JBQ0UsdUJBQXVCLGNBQ3JCLElBQUksWUFDTix5QkFBeUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQgfSBmcm9tICdAYW5ndWxhci9jb3JlJ1xuaW1wb3J0IHsgUmVuZGVyaW5nQ29udGV4dCB9IGZyb20gJ0BjYXBpdGFsb3MvY29yZSdcbmltcG9ydCB7IEJhc2VJZnJhbWVDb21wb25lbnQsIElGUkFNRV9DT01QT05FTlRfVEVNUExBVEUsIElGUkFNRV9DT01QT05FTlRfU1RZTEVTIH0gZnJvbSAnLi9iYXNlLWlmcmFtZS5jb21wb25lbnQnXG5cbi8qKlxuICogQmlsbFBheUFwcCBjb21wb25lbnQgdGhhdCByZW5kZXJzIHRoZSBDYXBpdGFsT1MgYmlsbCBwYXltZW50IGludGVyZmFjZSBpbiBhbiBpZnJhbWUuXG4gKlxuICogVGhlIGNvbXBvbmVudCBlbWl0cyBldmVudHMgZm9yIGxvYWRpbmcgc3RhdGUgLSBjb25zdW1lcnMgc2hvdWxkIGhhbmRsZSB0aGVpciBvd24gbG9hZGluZyBVSTpcbiAqXG4gKiBgYGBodG1sXG4gKiA8ZGl2ICpuZ0lmPVwiIWJpbGxQYXlMb2FkZWRcIj5cbiAqICAgPG15LWxvYWRpbmctc3Bpbm5lcj48L215LWxvYWRpbmctc3Bpbm5lcj5cbiAqIDwvZGl2PlxuICogPGNhcGl0YWxvcy1iaWxscGF5LWFwcFxuICogICAobG9hZGVkKT1cImJpbGxQYXlMb2FkZWQgPSB0cnVlXCJcbiAqICAgKGVycm9yKT1cIm9uQmlsbFBheUVycm9yKCRldmVudClcIlxuICogPjwvY2FwaXRhbG9zLWJpbGxwYXktYXBwPlxuICogYGBgXG4gKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2NhcGl0YWxvcy1iaWxscGF5LWFwcCcsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIHRlbXBsYXRlOiBJRlJBTUVfQ09NUE9ORU5UX1RFTVBMQVRFLFxuICBzdHlsZXM6IElGUkFNRV9DT01QT05FTlRfU1RZTEVTLFxufSlcbmV4cG9ydCBjbGFzcyBCaWxsUGF5QXBwQ29tcG9uZW50IGV4dGVuZHMgQmFzZUlmcmFtZUNvbXBvbmVudCB7XG4gIHByb3RlY3RlZCBnZXRSZW5kZXJpbmdDb250ZXh0KCk6IFJlbmRlcmluZ0NvbnRleHQge1xuICAgIHJldHVybiB7IGVudHJ5UG9pbnQ6ICdiaWxsUGF5QXBwJyB9XG4gIH1cbn1cbiJdfQ==
|
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
import { NgModule } from '@angular/core';
|
|
2
2
|
import { CardsAppComponent } from './cards-app.component';
|
|
3
|
+
import { BillPayAppComponent } from './billpay-app.component';
|
|
4
|
+
import { OnboardingComponent } from './onboarding.component';
|
|
3
5
|
import { CAPITALOS_CONFIG } from './provide-capitalos';
|
|
4
6
|
import { CapitalOsAuthService } from './capitalos-auth.service';
|
|
5
7
|
import { TokenExchangeService } from './token-exchange.service';
|
|
@@ -36,13 +38,13 @@ export class CapitalOsModule {
|
|
|
36
38
|
}
|
|
37
39
|
}
|
|
38
40
|
CapitalOsModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: CapitalOsModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
39
|
-
CapitalOsModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "14.3.0", ngImport: i0, type: CapitalOsModule, imports: [CardsAppComponent], exports: [CardsAppComponent] });
|
|
40
|
-
CapitalOsModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: CapitalOsModule, imports: [CardsAppComponent] });
|
|
41
|
+
CapitalOsModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "14.3.0", ngImport: i0, type: CapitalOsModule, imports: [CardsAppComponent, BillPayAppComponent, OnboardingComponent], exports: [CardsAppComponent, BillPayAppComponent, OnboardingComponent] });
|
|
42
|
+
CapitalOsModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: CapitalOsModule, imports: [CardsAppComponent, BillPayAppComponent, OnboardingComponent] });
|
|
41
43
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: CapitalOsModule, decorators: [{
|
|
42
44
|
type: NgModule,
|
|
43
45
|
args: [{
|
|
44
|
-
imports: [CardsAppComponent],
|
|
45
|
-
exports: [CardsAppComponent],
|
|
46
|
+
imports: [CardsAppComponent, BillPayAppComponent, OnboardingComponent],
|
|
47
|
+
exports: [CardsAppComponent, BillPayAppComponent, OnboardingComponent],
|
|
46
48
|
}]
|
|
47
49
|
}] });
|
|
48
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
50
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FwaXRhbG9zLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2NhcGl0YWxvcy1hbmd1bGFyL3NyYy9saWIvY2FwaXRhbG9zLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQXVCLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQTtBQUM3RCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQTtBQUN6RCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQTtBQUM3RCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQTtBQUM1RCxPQUFPLEVBQW1CLGdCQUFnQixFQUFFLE1BQU0scUJBQXFCLENBQUE7QUFDdkUsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sMEJBQTBCLENBQUE7QUFDL0QsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sMEJBQTBCLENBQUE7O0FBRS9EOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBc0JHO0FBS0gsTUFBTSxPQUFPLGVBQWU7SUFDMUIsTUFBTSxDQUFDLE9BQU8sQ0FBQyxNQUF1QjtRQUNwQyxPQUFPO1lBQ0wsUUFBUSxFQUFFLGVBQWU7WUFDekIsU0FBUyxFQUFFLENBQUMsRUFBRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxFQUFFLG9CQUFvQixFQUFFLG9CQUFvQixDQUFDO1NBQ3pHLENBQUE7SUFDSCxDQUFDOzs0R0FOVSxlQUFlOzZHQUFmLGVBQWUsWUFIaEIsaUJBQWlCLEVBQUUsbUJBQW1CLEVBQUUsbUJBQW1CLGFBQzNELGlCQUFpQixFQUFFLG1CQUFtQixFQUFFLG1CQUFtQjs2R0FFMUQsZUFBZSxZQUhoQixpQkFBaUIsRUFBRSxtQkFBbUIsRUFBRSxtQkFBbUI7MkZBRzFELGVBQWU7a0JBSjNCLFFBQVE7bUJBQUM7b0JBQ1IsT0FBTyxFQUFFLENBQUMsaUJBQWlCLEVBQUUsbUJBQW1CLEVBQUUsbUJBQW1CLENBQUM7b0JBQ3RFLE9BQU8sRUFBRSxDQUFDLGlCQUFpQixFQUFFLG1CQUFtQixFQUFFLG1CQUFtQixDQUFDO2lCQUN2RSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE1vZHVsZVdpdGhQcm92aWRlcnMsIE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSdcbmltcG9ydCB7IENhcmRzQXBwQ29tcG9uZW50IH0gZnJvbSAnLi9jYXJkcy1hcHAuY29tcG9uZW50J1xuaW1wb3J0IHsgQmlsbFBheUFwcENvbXBvbmVudCB9IGZyb20gJy4vYmlsbHBheS1hcHAuY29tcG9uZW50J1xuaW1wb3J0IHsgT25ib2FyZGluZ0NvbXBvbmVudCB9IGZyb20gJy4vb25ib2FyZGluZy5jb21wb25lbnQnXG5pbXBvcnQgeyBDYXBpdGFsT3NDb25maWcsIENBUElUQUxPU19DT05GSUcgfSBmcm9tICcuL3Byb3ZpZGUtY2FwaXRhbG9zJ1xuaW1wb3J0IHsgQ2FwaXRhbE9zQXV0aFNlcnZpY2UgfSBmcm9tICcuL2NhcGl0YWxvcy1hdXRoLnNlcnZpY2UnXG5pbXBvcnQgeyBUb2tlbkV4Y2hhbmdlU2VydmljZSB9IGZyb20gJy4vdG9rZW4tZXhjaGFuZ2Uuc2VydmljZSdcblxuLyoqXG4gKiBOZ01vZHVsZSBmb3IgQ2FwaXRhbE9TIFNESy5cbiAqXG4gKiBVc2UgdGhpcyBtb2R1bGUgZm9yIE5nTW9kdWxlLWJhc2VkIEFuZ3VsYXIgYXBwbGljYXRpb25zLlxuICogRm9yIHN0YW5kYWxvbmUgYXBwbGljYXRpb25zLCB1c2UgcHJvdmlkZUNhcGl0YWxPcygpIGluc3RlYWQuXG4gKlxuICogVXNhZ2U6XG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBATmdNb2R1bGUoe1xuICogICBpbXBvcnRzOiBbXG4gKiAgICAgQ2FwaXRhbE9zTW9kdWxlLmZvclJvb3Qoe1xuICogICAgICAgZ2V0VG9rZW46IGFzeW5jICgpID0+IHtcbiAqICAgICAgICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBmZXRjaCgnL2FwaS9jYXBpdGFsb3MvdG9rZW4nKTtcbiAqICAgICAgICAgY29uc3QgZGF0YSA9IGF3YWl0IHJlc3BvbnNlLmpzb24oKTtcbiAqICAgICAgICAgcmV0dXJuIGRhdGEudG9rZW47XG4gKiAgICAgICB9LFxuICogICAgICAgZW5hYmxlTG9nZ2luZzogdHJ1ZSxcbiAqICAgICB9KSxcbiAqICAgXSxcbiAqIH0pXG4gKiBleHBvcnQgY2xhc3MgQXBwTW9kdWxlIHt9XG4gKiBgYGBcbiAqL1xuQE5nTW9kdWxlKHtcbiAgaW1wb3J0czogW0NhcmRzQXBwQ29tcG9uZW50LCBCaWxsUGF5QXBwQ29tcG9uZW50LCBPbmJvYXJkaW5nQ29tcG9uZW50XSxcbiAgZXhwb3J0czogW0NhcmRzQXBwQ29tcG9uZW50LCBCaWxsUGF5QXBwQ29tcG9uZW50LCBPbmJvYXJkaW5nQ29tcG9uZW50XSxcbn0pXG5leHBvcnQgY2xhc3MgQ2FwaXRhbE9zTW9kdWxlIHtcbiAgc3RhdGljIGZvclJvb3QoY29uZmlnOiBDYXBpdGFsT3NDb25maWcpOiBNb2R1bGVXaXRoUHJvdmlkZXJzPENhcGl0YWxPc01vZHVsZT4ge1xuICAgIHJldHVybiB7XG4gICAgICBuZ01vZHVsZTogQ2FwaXRhbE9zTW9kdWxlLFxuICAgICAgcHJvdmlkZXJzOiBbeyBwcm92aWRlOiBDQVBJVEFMT1NfQ09ORklHLCB1c2VWYWx1ZTogY29uZmlnIH0sIFRva2VuRXhjaGFuZ2VTZXJ2aWNlLCBDYXBpdGFsT3NBdXRoU2VydmljZV0sXG4gICAgfVxuICB9XG59XG4iXX0=
|
|
@@ -1,10 +1,6 @@
|
|
|
1
|
-
import { Component
|
|
2
|
-
import {
|
|
3
|
-
import { CapitalOsAuthService } from './capitalos-auth.service';
|
|
4
|
-
import { CAPITALOS_CONFIG } from './provide-capitalos';
|
|
1
|
+
import { Component } from '@angular/core';
|
|
2
|
+
import { BaseIframeComponent, IFRAME_COMPONENT_TEMPLATE, IFRAME_COMPONENT_STYLES } from './base-iframe.component';
|
|
5
3
|
import * as i0 from "@angular/core";
|
|
6
|
-
// TODO: Automate version injection at build time
|
|
7
|
-
const SDK_VERSION = '0.1.0-rc.1';
|
|
8
4
|
/**
|
|
9
5
|
* CardsApp component that renders the CapitalOS cards interface in an iframe.
|
|
10
6
|
*
|
|
@@ -20,74 +16,15 @@ const SDK_VERSION = '0.1.0-rc.1';
|
|
|
20
16
|
* ></capitalos-cards-app>
|
|
21
17
|
* ```
|
|
22
18
|
*/
|
|
23
|
-
export class CardsAppComponent {
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
this.authService = inject(CapitalOsAuthService);
|
|
27
|
-
this.config = inject(CAPITALOS_CONFIG);
|
|
28
|
-
this.heightOffsetPx = 12;
|
|
29
|
-
// Outputs
|
|
30
|
-
this.loaded = new EventEmitter();
|
|
31
|
-
this.error = new EventEmitter();
|
|
32
|
-
}
|
|
33
|
-
ngAfterViewInit() {
|
|
34
|
-
// Subscribe to tokenData$ and initialize iframe when ready
|
|
35
|
-
this.tokenDataSubscription = this.authService.tokenData$.subscribe((tokenData) => {
|
|
36
|
-
if (tokenData && this.iframeContainer) {
|
|
37
|
-
this.initializeIframe(tokenData, this.iframeContainer.nativeElement);
|
|
38
|
-
}
|
|
39
|
-
});
|
|
40
|
-
}
|
|
41
|
-
ngOnDestroy() {
|
|
42
|
-
this.tokenDataSubscription?.unsubscribe();
|
|
43
|
-
this.iframeManager?.destroy();
|
|
44
|
-
}
|
|
45
|
-
initializeIframe(tokenData, container) {
|
|
46
|
-
// Destroy previous iframe if exists
|
|
47
|
-
this.iframeManager?.destroy();
|
|
48
|
-
const resolvedEnableLogging = this.enableLogging ?? this.config.enableLogging ?? false;
|
|
49
|
-
const resolvedTheme = this.theme ?? this.config.theme;
|
|
50
|
-
this.iframeManager = new IframeManager({
|
|
51
|
-
container,
|
|
52
|
-
tokenData,
|
|
53
|
-
renderingContext: { entryPoint: 'cardsApp' },
|
|
54
|
-
theme: resolvedTheme,
|
|
55
|
-
enableLogging: resolvedEnableLogging,
|
|
56
|
-
logger: this.config.logger,
|
|
57
|
-
sdkVersion: SDK_VERSION,
|
|
58
|
-
heightOffsetPx: this.heightOffsetPx,
|
|
59
|
-
callbacks: {
|
|
60
|
-
onLoad: () => {
|
|
61
|
-
this.loaded.emit();
|
|
62
|
-
},
|
|
63
|
-
onError: (rawError) => {
|
|
64
|
-
const capitalOsError = new CapitalOSError(rawError);
|
|
65
|
-
this.error.emit(capitalOsError);
|
|
66
|
-
},
|
|
67
|
-
onTokenExpired: () => {
|
|
68
|
-
this.authService.invalidateToken();
|
|
69
|
-
},
|
|
70
|
-
},
|
|
71
|
-
});
|
|
19
|
+
export class CardsAppComponent extends BaseIframeComponent {
|
|
20
|
+
getRenderingContext() {
|
|
21
|
+
return { entryPoint: 'cardsApp' };
|
|
72
22
|
}
|
|
73
23
|
}
|
|
74
|
-
CardsAppComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: CardsAppComponent, deps:
|
|
75
|
-
CardsAppComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: CardsAppComponent, isStandalone: true, selector: "capitalos-cards-app",
|
|
24
|
+
CardsAppComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: CardsAppComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
|
|
25
|
+
CardsAppComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: CardsAppComponent, isStandalone: true, selector: "capitalos-cards-app", usesInheritance: true, ngImport: i0, template: "<div #iframeContainer class=\"capitalos-iframe-container\"></div>", isInline: true, styles: [":host{display:block;width:100%}.capitalos-iframe-container{width:100%}\n"] });
|
|
76
26
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: CardsAppComponent, decorators: [{
|
|
77
27
|
type: Component,
|
|
78
|
-
args: [{ selector: 'capitalos-cards-app', standalone: true, template:
|
|
79
|
-
}]
|
|
80
|
-
|
|
81
|
-
}], heightOffsetPx: [{
|
|
82
|
-
type: Input
|
|
83
|
-
}], enableLogging: [{
|
|
84
|
-
type: Input
|
|
85
|
-
}], loaded: [{
|
|
86
|
-
type: Output
|
|
87
|
-
}], error: [{
|
|
88
|
-
type: Output
|
|
89
|
-
}], iframeContainer: [{
|
|
90
|
-
type: ViewChild,
|
|
91
|
-
args: ['iframeContainer']
|
|
92
|
-
}] } });
|
|
93
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FyZHMtYXBwLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2NhcGl0YWxvcy1hbmd1bGFyL3NyYy9saWIvY2FyZHMtYXBwLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUNULE1BQU0sRUFDTixLQUFLLEVBQ0wsTUFBTSxFQUNOLFlBQVksRUFDWixTQUFTLEdBSVYsTUFBTSxlQUFlLENBQUE7QUFFdEIsT0FBTyxFQUFFLGFBQWEsRUFBRSxjQUFjLEVBQWdELE1BQU0saUJBQWlCLENBQUE7QUFDN0csT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sMEJBQTBCLENBQUE7QUFDL0QsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0scUJBQXFCLENBQUE7O0FBRXRELGlEQUFpRDtBQUNqRCxNQUFNLFdBQVcsR0FBRyxZQUFZLENBQUE7QUFFaEM7Ozs7Ozs7Ozs7Ozs7O0dBY0c7QUFrQkgsTUFBTSxPQUFPLGlCQUFpQjtJQWpCOUI7UUFrQkUsb0JBQW9CO1FBQ0gsZ0JBQVcsR0FBRyxNQUFNLENBQUMsb0JBQW9CLENBQUMsQ0FBQTtRQUMxQyxXQUFNLEdBQUcsTUFBTSxDQUFDLGdCQUFnQixDQUFDLENBQUE7UUFJekMsbUJBQWMsR0FBRyxFQUFFLENBQUE7UUFHNUIsVUFBVTtRQUNBLFdBQU0sR0FBRyxJQUFJLFlBQVksRUFBUSxDQUFBO1FBQ2pDLFVBQUssR0FBRyxJQUFJLFlBQVksRUFBa0IsQ0FBQTtLQXFEckQ7SUE1Q0MsZUFBZTtRQUNiLDJEQUEyRDtRQUMzRCxJQUFJLENBQUMscUJBQXFCLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxVQUFVLENBQUMsU0FBUyxDQUFDLENBQUMsU0FBUyxFQUFFLEVBQUU7WUFDL0UsSUFBSSxTQUFTLElBQUksSUFBSSxDQUFDLGVBQWUsRUFBRTtnQkFDckMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLFNBQVMsRUFBRSxJQUFJLENBQUMsZUFBZSxDQUFDLGFBQWEsQ0FBQyxDQUFBO2FBQ3JFO1FBQ0gsQ0FBQyxDQUFDLENBQUE7SUFDSixDQUFDO0lBRUQsV0FBVztRQUNULElBQUksQ0FBQyxxQkFBcUIsRUFBRSxXQUFXLEVBQUUsQ0FBQTtRQUN6QyxJQUFJLENBQUMsYUFBYSxFQUFFLE9BQU8sRUFBRSxDQUFBO0lBQy9CLENBQUM7SUFFTyxnQkFBZ0IsQ0FBQyxTQUFvQixFQUFFLFNBQXNCO1FBQ25FLG9DQUFvQztRQUNwQyxJQUFJLENBQUMsYUFBYSxFQUFFLE9BQU8sRUFBRSxDQUFBO1FBRTdCLE1BQU0scUJBQXFCLEdBQUcsSUFBSSxDQUFDLGFBQWEsSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLGFBQWEsSUFBSSxLQUFLLENBQUE7UUFDdEYsTUFBTSxhQUFhLEdBQUcsSUFBSSxDQUFDLEtBQUssSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQTtRQUVyRCxJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksYUFBYSxDQUFDO1lBQ3JDLFNBQVM7WUFDVCxTQUFTO1lBQ1QsZ0JBQWdCLEVBQUUsRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUFFO1lBQzVDLEtBQUssRUFBRSxhQUFhO1lBQ3BCLGFBQWEsRUFBRSxxQkFBcUI7WUFDcEMsTUFBTSxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTTtZQUMxQixVQUFVLEVBQUUsV0FBVztZQUN2QixjQUFjLEVBQUUsSUFBSSxDQUFDLGNBQWM7WUFDbkMsU0FBUyxFQUFFO2dCQUNULE1BQU0sRUFBRSxHQUFHLEVBQUU7b0JBQ1gsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsQ0FBQTtnQkFDcEIsQ0FBQztnQkFDRCxPQUFPLEVBQUUsQ0FBQyxRQUF5QixFQUFFLEVBQUU7b0JBQ3JDLE1BQU0sY0FBYyxHQUFHLElBQUksY0FBYyxDQUFDLFFBQVEsQ0FBQyxDQUFBO29CQUNuRCxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQTtnQkFDakMsQ0FBQztnQkFDRCxjQUFjLEVBQUUsR0FBRyxFQUFFO29CQUNuQixJQUFJLENBQUMsV0FBVyxDQUFDLGVBQWUsRUFBRSxDQUFBO2dCQUNwQyxDQUFDO2FBQ0Y7U0FDRixDQUFDLENBQUE7SUFDSixDQUFDOzs4R0FoRVUsaUJBQWlCO2tHQUFqQixpQkFBaUIsZ1ZBZGxCLGlFQUFpRTsyRkFjaEUsaUJBQWlCO2tCQWpCN0IsU0FBUzsrQkFDRSxxQkFBcUIsY0FDbkIsSUFBSSxZQUNOLGlFQUFpRTs4QkFvQmxFLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxjQUFjO3NCQUF0QixLQUFLO2dCQUNHLGFBQWE7c0JBQXJCLEtBQUs7Z0JBR0ksTUFBTTtzQkFBZixNQUFNO2dCQUNHLEtBQUs7c0JBQWQsTUFBTTtnQkFHdUIsZUFBZTtzQkFBNUMsU0FBUzt1QkFBQyxpQkFBaUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDb21wb25lbnQsXG4gIGluamVjdCxcbiAgSW5wdXQsXG4gIE91dHB1dCxcbiAgRXZlbnRFbWl0dGVyLFxuICBWaWV3Q2hpbGQsXG4gIEVsZW1lbnRSZWYsXG4gIEFmdGVyVmlld0luaXQsXG4gIE9uRGVzdHJveSxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSdcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnXG5pbXBvcnQgeyBJZnJhbWVNYW5hZ2VyLCBDYXBpdGFsT1NFcnJvciwgVG9rZW5EYXRhLCBSYXdFcnJvckRldGFpbHMsIFRoZW1lQ29sb3JTY2hlbWUgfSBmcm9tICdAY2FwaXRhbG9zL2NvcmUnXG5pbXBvcnQgeyBDYXBpdGFsT3NBdXRoU2VydmljZSB9IGZyb20gJy4vY2FwaXRhbG9zLWF1dGguc2VydmljZSdcbmltcG9ydCB7IENBUElUQUxPU19DT05GSUcgfSBmcm9tICcuL3Byb3ZpZGUtY2FwaXRhbG9zJ1xuXG4vLyBUT0RPOiBBdXRvbWF0ZSB2ZXJzaW9uIGluamVjdGlvbiBhdCBidWlsZCB0aW1lXG5jb25zdCBTREtfVkVSU0lPTiA9ICcwLjEuMC1yYy4xJ1xuXG4vKipcbiAqIENhcmRzQXBwIGNvbXBvbmVudCB0aGF0IHJlbmRlcnMgdGhlIENhcGl0YWxPUyBjYXJkcyBpbnRlcmZhY2UgaW4gYW4gaWZyYW1lLlxuICpcbiAqIFRoZSBjb21wb25lbnQgZW1pdHMgZXZlbnRzIGZvciBsb2FkaW5nIHN0YXRlIC0gY29uc3VtZXJzIHNob3VsZCBoYW5kbGUgdGhlaXIgb3duIGxvYWRpbmcgVUk6XG4gKlxuICogYGBgaHRtbFxuICogPGRpdiAqbmdJZj1cIiFjYXJkc0xvYWRlZFwiPlxuICogICA8bXktbG9hZGluZy1zcGlubmVyPjwvbXktbG9hZGluZy1zcGlubmVyPlxuICogPC9kaXY+XG4gKiA8Y2FwaXRhbG9zLWNhcmRzLWFwcFxuICogICAobG9hZGVkKT1cImNhcmRzTG9hZGVkID0gdHJ1ZVwiXG4gKiAgIChlcnJvcik9XCJvbkNhcmRzRXJyb3IoJGV2ZW50KVwiXG4gKiA+PC9jYXBpdGFsb3MtY2FyZHMtYXBwPlxuICogYGBgXG4gKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2NhcGl0YWxvcy1jYXJkcy1hcHAnLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICB0ZW1wbGF0ZTogYDxkaXYgI2lmcmFtZUNvbnRhaW5lciBjbGFzcz1cImNhcGl0YWxvcy1pZnJhbWUtY29udGFpbmVyXCI+PC9kaXY+YCxcbiAgc3R5bGVzOiBbXG4gICAgYFxuICAgICAgOmhvc3Qge1xuICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICB9XG5cbiAgICAgIC5jYXBpdGFsb3MtaWZyYW1lLWNvbnRhaW5lciB7XG4gICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgfVxuICAgIGAsXG4gIF0sXG59KVxuZXhwb3J0IGNsYXNzIENhcmRzQXBwQ29tcG9uZW50IGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCwgT25EZXN0cm95IHtcbiAgLy8gSW5qZWN0ZWQgc2VydmljZXNcbiAgcHJpdmF0ZSByZWFkb25seSBhdXRoU2VydmljZSA9IGluamVjdChDYXBpdGFsT3NBdXRoU2VydmljZSlcbiAgcHJpdmF0ZSByZWFkb25seSBjb25maWcgPSBpbmplY3QoQ0FQSVRBTE9TX0NPTkZJRylcblxuICAvLyBJbnB1dHNcbiAgQElucHV0KCkgdGhlbWU/OiBUaGVtZUNvbG9yU2NoZW1lXG4gIEBJbnB1dCgpIGhlaWdodE9mZnNldFB4ID0gMTJcbiAgQElucHV0KCkgZW5hYmxlTG9nZ2luZz86IGJvb2xlYW5cblxuICAvLyBPdXRwdXRzXG4gIEBPdXRwdXQoKSBsb2FkZWQgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KClcbiAgQE91dHB1dCgpIGVycm9yID0gbmV3IEV2ZW50RW1pdHRlcjxDYXBpdGFsT1NFcnJvcj4oKVxuXG4gIC8vIFZpZXcgY2hpbGRyZW5cbiAgQFZpZXdDaGlsZCgnaWZyYW1lQ29udGFpbmVyJykgaWZyYW1lQ29udGFpbmVyPzogRWxlbWVudFJlZjxIVE1MRGl2RWxlbWVudD5cblxuICAvLyBJbnRlcm5hbCBzdGF0ZVxuICBwcml2YXRlIGlmcmFtZU1hbmFnZXI/OiBJZnJhbWVNYW5hZ2VyXG4gIHByaXZhdGUgdG9rZW5EYXRhU3Vic2NyaXB0aW9uPzogU3Vic2NyaXB0aW9uXG5cbiAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgIC8vIFN1YnNjcmliZSB0byB0b2tlbkRhdGEkIGFuZCBpbml0aWFsaXplIGlmcmFtZSB3aGVuIHJlYWR5XG4gICAgdGhpcy50b2tlbkRhdGFTdWJzY3JpcHRpb24gPSB0aGlzLmF1dGhTZXJ2aWNlLnRva2VuRGF0YSQuc3Vic2NyaWJlKCh0b2tlbkRhdGEpID0+IHtcbiAgICAgIGlmICh0b2tlbkRhdGEgJiYgdGhpcy5pZnJhbWVDb250YWluZXIpIHtcbiAgICAgICAgdGhpcy5pbml0aWFsaXplSWZyYW1lKHRva2VuRGF0YSwgdGhpcy5pZnJhbWVDb250YWluZXIubmF0aXZlRWxlbWVudClcbiAgICAgIH1cbiAgICB9KVxuICB9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy50b2tlbkRhdGFTdWJzY3JpcHRpb24/LnVuc3Vic2NyaWJlKClcbiAgICB0aGlzLmlmcmFtZU1hbmFnZXI/LmRlc3Ryb3koKVxuICB9XG5cbiAgcHJpdmF0ZSBpbml0aWFsaXplSWZyYW1lKHRva2VuRGF0YTogVG9rZW5EYXRhLCBjb250YWluZXI6IEhUTUxFbGVtZW50KTogdm9pZCB7XG4gICAgLy8gRGVzdHJveSBwcmV2aW91cyBpZnJhbWUgaWYgZXhpc3RzXG4gICAgdGhpcy5pZnJhbWVNYW5hZ2VyPy5kZXN0cm95KClcblxuICAgIGNvbnN0IHJlc29sdmVkRW5hYmxlTG9nZ2luZyA9IHRoaXMuZW5hYmxlTG9nZ2luZyA/PyB0aGlzLmNvbmZpZy5lbmFibGVMb2dnaW5nID8/IGZhbHNlXG4gICAgY29uc3QgcmVzb2x2ZWRUaGVtZSA9IHRoaXMudGhlbWUgPz8gdGhpcy5jb25maWcudGhlbWVcblxuICAgIHRoaXMuaWZyYW1lTWFuYWdlciA9IG5ldyBJZnJhbWVNYW5hZ2VyKHtcbiAgICAgIGNvbnRhaW5lcixcbiAgICAgIHRva2VuRGF0YSxcbiAgICAgIHJlbmRlcmluZ0NvbnRleHQ6IHsgZW50cnlQb2ludDogJ2NhcmRzQXBwJyB9LFxuICAgICAgdGhlbWU6IHJlc29sdmVkVGhlbWUsXG4gICAgICBlbmFibGVMb2dnaW5nOiByZXNvbHZlZEVuYWJsZUxvZ2dpbmcsXG4gICAgICBsb2dnZXI6IHRoaXMuY29uZmlnLmxvZ2dlcixcbiAgICAgIHNka1ZlcnNpb246IFNES19WRVJTSU9OLFxuICAgICAgaGVpZ2h0T2Zmc2V0UHg6IHRoaXMuaGVpZ2h0T2Zmc2V0UHgsXG4gICAgICBjYWxsYmFja3M6IHtcbiAgICAgICAgb25Mb2FkOiAoKSA9PiB7XG4gICAgICAgICAgdGhpcy5sb2FkZWQuZW1pdCgpXG4gICAgICAgIH0sXG4gICAgICAgIG9uRXJyb3I6IChyYXdFcnJvcjogUmF3RXJyb3JEZXRhaWxzKSA9PiB7XG4gICAgICAgICAgY29uc3QgY2FwaXRhbE9zRXJyb3IgPSBuZXcgQ2FwaXRhbE9TRXJyb3IocmF3RXJyb3IpXG4gICAgICAgICAgdGhpcy5lcnJvci5lbWl0KGNhcGl0YWxPc0Vycm9yKVxuICAgICAgICB9LFxuICAgICAgICBvblRva2VuRXhwaXJlZDogKCkgPT4ge1xuICAgICAgICAgIHRoaXMuYXV0aFNlcnZpY2UuaW52YWxpZGF0ZVRva2VuKClcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgfSlcbiAgfVxufVxuIl19
|
|
28
|
+
args: [{ selector: 'capitalos-cards-app', standalone: true, template: IFRAME_COMPONENT_TEMPLATE, styles: [":host{display:block;width:100%}.capitalos-iframe-container{width:100%}\n"] }]
|
|
29
|
+
}] });
|
|
30
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FyZHMtYXBwLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2NhcGl0YWxvcy1hbmd1bGFyL3NyYy9saWIvY2FyZHMtYXBwLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFBO0FBRXpDLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSx5QkFBeUIsRUFBRSx1QkFBdUIsRUFBRSxNQUFNLHlCQUF5QixDQUFBOztBQUVqSDs7Ozs7Ozs7Ozs7Ozs7R0FjRztBQU9ILE1BQU0sT0FBTyxpQkFBa0IsU0FBUSxtQkFBbUI7SUFDOUMsbUJBQW1CO1FBQzNCLE9BQU8sRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUFFLENBQUE7SUFDbkMsQ0FBQzs7OEdBSFUsaUJBQWlCO2tHQUFqQixpQkFBaUI7MkZBQWpCLGlCQUFpQjtrQkFON0IsU0FBUzsrQkFDRSxxQkFBcUIsY0FDbkIsSUFBSSxZQUNOLHlCQUF5QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnXG5pbXBvcnQgeyBSZW5kZXJpbmdDb250ZXh0IH0gZnJvbSAnQGNhcGl0YWxvcy9jb3JlJ1xuaW1wb3J0IHsgQmFzZUlmcmFtZUNvbXBvbmVudCwgSUZSQU1FX0NPTVBPTkVOVF9URU1QTEFURSwgSUZSQU1FX0NPTVBPTkVOVF9TVFlMRVMgfSBmcm9tICcuL2Jhc2UtaWZyYW1lLmNvbXBvbmVudCdcblxuLyoqXG4gKiBDYXJkc0FwcCBjb21wb25lbnQgdGhhdCByZW5kZXJzIHRoZSBDYXBpdGFsT1MgY2FyZHMgaW50ZXJmYWNlIGluIGFuIGlmcmFtZS5cbiAqXG4gKiBUaGUgY29tcG9uZW50IGVtaXRzIGV2ZW50cyBmb3IgbG9hZGluZyBzdGF0ZSAtIGNvbnN1bWVycyBzaG91bGQgaGFuZGxlIHRoZWlyIG93biBsb2FkaW5nIFVJOlxuICpcbiAqIGBgYGh0bWxcbiAqIDxkaXYgKm5nSWY9XCIhY2FyZHNMb2FkZWRcIj5cbiAqICAgPG15LWxvYWRpbmctc3Bpbm5lcj48L215LWxvYWRpbmctc3Bpbm5lcj5cbiAqIDwvZGl2PlxuICogPGNhcGl0YWxvcy1jYXJkcy1hcHBcbiAqICAgKGxvYWRlZCk9XCJjYXJkc0xvYWRlZCA9IHRydWVcIlxuICogICAoZXJyb3IpPVwib25DYXJkc0Vycm9yKCRldmVudClcIlxuICogPjwvY2FwaXRhbG9zLWNhcmRzLWFwcD5cbiAqIGBgYFxuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdjYXBpdGFsb3MtY2FyZHMtYXBwJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgdGVtcGxhdGU6IElGUkFNRV9DT01QT05FTlRfVEVNUExBVEUsXG4gIHN0eWxlczogSUZSQU1FX0NPTVBPTkVOVF9TVFlMRVMsXG59KVxuZXhwb3J0IGNsYXNzIENhcmRzQXBwQ29tcG9uZW50IGV4dGVuZHMgQmFzZUlmcmFtZUNvbXBvbmVudCB7XG4gIHByb3RlY3RlZCBnZXRSZW5kZXJpbmdDb250ZXh0KCk6IFJlbmRlcmluZ0NvbnRleHQge1xuICAgIHJldHVybiB7IGVudHJ5UG9pbnQ6ICdjYXJkc0FwcCcgfVxuICB9XG59XG4iXX0=
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
import { Component, Input, Output, EventEmitter } from '@angular/core';
|
|
2
|
+
import { BaseIframeComponent, IFRAME_COMPONENT_TEMPLATE, IFRAME_COMPONENT_STYLES, } from './base-iframe.component';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
/**
|
|
5
|
+
* Onboarding component that renders the CapitalOS onboarding flow in an iframe.
|
|
6
|
+
*
|
|
7
|
+
* The component emits events for loading state and completion - consumers should handle their own loading UI:
|
|
8
|
+
*
|
|
9
|
+
* ```html
|
|
10
|
+
* <div *ngIf="!onboardingLoaded">
|
|
11
|
+
* <my-loading-spinner></my-loading-spinner>
|
|
12
|
+
* </div>
|
|
13
|
+
* <capitalos-onboarding
|
|
14
|
+
* [entryPoint]="'welcome'"
|
|
15
|
+
* [exitPoint]="'activation'"
|
|
16
|
+
* (loaded)="onboardingLoaded = true"
|
|
17
|
+
* (error)="onOnboardingError($event)"
|
|
18
|
+
* (done)="onOnboardingComplete($event)"
|
|
19
|
+
* ></capitalos-onboarding>
|
|
20
|
+
* ```
|
|
21
|
+
*/
|
|
22
|
+
export class OnboardingComponent extends BaseIframeComponent {
|
|
23
|
+
constructor() {
|
|
24
|
+
super(...arguments);
|
|
25
|
+
// Onboarding-specific outputs
|
|
26
|
+
this.done = new EventEmitter();
|
|
27
|
+
}
|
|
28
|
+
getRenderingContext() {
|
|
29
|
+
return {
|
|
30
|
+
entryPoint: 'onboarding',
|
|
31
|
+
onboardingEntryPoint: this.entryPoint,
|
|
32
|
+
onboardingExitPoint: this.exitPoint,
|
|
33
|
+
allowExitOnNonApproved: this.allowExitOnNonApproved,
|
|
34
|
+
};
|
|
35
|
+
}
|
|
36
|
+
getComponentCallbacks() {
|
|
37
|
+
return {
|
|
38
|
+
onboarding: {
|
|
39
|
+
onDone: (account) => {
|
|
40
|
+
this.done.emit(account);
|
|
41
|
+
},
|
|
42
|
+
},
|
|
43
|
+
};
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
OnboardingComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: OnboardingComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
|
|
47
|
+
OnboardingComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: OnboardingComponent, isStandalone: true, selector: "capitalos-onboarding", inputs: { entryPoint: "entryPoint", exitPoint: "exitPoint", allowExitOnNonApproved: "allowExitOnNonApproved" }, outputs: { done: "done" }, usesInheritance: true, ngImport: i0, template: "<div #iframeContainer class=\"capitalos-iframe-container\"></div>", isInline: true, styles: [":host{display:block;width:100%}.capitalos-iframe-container{width:100%}\n"] });
|
|
48
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: OnboardingComponent, decorators: [{
|
|
49
|
+
type: Component,
|
|
50
|
+
args: [{ selector: 'capitalos-onboarding', standalone: true, template: IFRAME_COMPONENT_TEMPLATE, styles: [":host{display:block;width:100%}.capitalos-iframe-container{width:100%}\n"] }]
|
|
51
|
+
}], propDecorators: { entryPoint: [{
|
|
52
|
+
type: Input
|
|
53
|
+
}], exitPoint: [{
|
|
54
|
+
type: Input
|
|
55
|
+
}], allowExitOnNonApproved: [{
|
|
56
|
+
type: Input
|
|
57
|
+
}], done: [{
|
|
58
|
+
type: Output
|
|
59
|
+
}] } });
|
|
60
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib25ib2FyZGluZy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9jYXBpdGFsb3MtYW5ndWxhci9zcmMvbGliL29uYm9hcmRpbmcuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQUUsTUFBTSxlQUFlLENBQUE7QUFFdEUsT0FBTyxFQUNMLG1CQUFtQixFQUVuQix5QkFBeUIsRUFDekIsdUJBQXVCLEdBQ3hCLE1BQU0seUJBQXlCLENBQUE7O0FBRWhDOzs7Ozs7Ozs7Ozs7Ozs7OztHQWlCRztBQU9ILE1BQU0sT0FBTyxtQkFBb0IsU0FBUSxtQkFBbUI7SUFONUQ7O1FBWUUsOEJBQThCO1FBQ3BCLFNBQUksR0FBRyxJQUFJLFlBQVksRUFBVyxDQUFBO0tBb0I3QztJQWxCVyxtQkFBbUI7UUFDM0IsT0FBTztZQUNMLFVBQVUsRUFBRSxZQUFZO1lBQ3hCLG9CQUFvQixFQUFFLElBQUksQ0FBQyxVQUFVO1lBQ3JDLG1CQUFtQixFQUFFLElBQUksQ0FBQyxTQUFTO1lBQ25DLHNCQUFzQixFQUFFLElBQUksQ0FBQyxzQkFBc0I7U0FDcEQsQ0FBQTtJQUNILENBQUM7SUFFa0IscUJBQXFCO1FBQ3RDLE9BQU87WUFDTCxVQUFVLEVBQUU7Z0JBQ1YsTUFBTSxFQUFFLENBQUMsT0FBZ0IsRUFBRSxFQUFFO29CQUMzQixJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQTtnQkFDekIsQ0FBQzthQUNGO1NBQ0YsQ0FBQTtJQUNILENBQUM7O2dIQTFCVSxtQkFBbUI7b0dBQW5CLG1CQUFtQjsyRkFBbkIsbUJBQW1CO2tCQU4vQixTQUFTOytCQUNFLHNCQUFzQixjQUNwQixJQUFJLFlBQ04seUJBQXlCOzhCQUsxQixVQUFVO3NCQUFsQixLQUFLO2dCQUNHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBQ0csc0JBQXNCO3NCQUE5QixLQUFLO2dCQUdJLElBQUk7c0JBQWIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQsIE91dHB1dCwgRXZlbnRFbWl0dGVyIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSdcbmltcG9ydCB7IFJlbmRlcmluZ0NvbnRleHQsIEFjY291bnQsIE9uYm9hcmRpbmdFbnRyeVBvaW50LCBPbmJvYXJkaW5nRXhpdFBvaW50IH0gZnJvbSAnQGNhcGl0YWxvcy9jb3JlJ1xuaW1wb3J0IHtcbiAgQmFzZUlmcmFtZUNvbXBvbmVudCxcbiAgQ29tcG9uZW50Q2FsbGJhY2tzLFxuICBJRlJBTUVfQ09NUE9ORU5UX1RFTVBMQVRFLFxuICBJRlJBTUVfQ09NUE9ORU5UX1NUWUxFUyxcbn0gZnJvbSAnLi9iYXNlLWlmcmFtZS5jb21wb25lbnQnXG5cbi8qKlxuICogT25ib2FyZGluZyBjb21wb25lbnQgdGhhdCByZW5kZXJzIHRoZSBDYXBpdGFsT1Mgb25ib2FyZGluZyBmbG93IGluIGFuIGlmcmFtZS5cbiAqXG4gKiBUaGUgY29tcG9uZW50IGVtaXRzIGV2ZW50cyBmb3IgbG9hZGluZyBzdGF0ZSBhbmQgY29tcGxldGlvbiAtIGNvbnN1bWVycyBzaG91bGQgaGFuZGxlIHRoZWlyIG93biBsb2FkaW5nIFVJOlxuICpcbiAqIGBgYGh0bWxcbiAqIDxkaXYgKm5nSWY9XCIhb25ib2FyZGluZ0xvYWRlZFwiPlxuICogICA8bXktbG9hZGluZy1zcGlubmVyPjwvbXktbG9hZGluZy1zcGlubmVyPlxuICogPC9kaXY+XG4gKiA8Y2FwaXRhbG9zLW9uYm9hcmRpbmdcbiAqICAgW2VudHJ5UG9pbnRdPVwiJ3dlbGNvbWUnXCJcbiAqICAgW2V4aXRQb2ludF09XCInYWN0aXZhdGlvbidcIlxuICogICAobG9hZGVkKT1cIm9uYm9hcmRpbmdMb2FkZWQgPSB0cnVlXCJcbiAqICAgKGVycm9yKT1cIm9uT25ib2FyZGluZ0Vycm9yKCRldmVudClcIlxuICogICAoZG9uZSk9XCJvbk9uYm9hcmRpbmdDb21wbGV0ZSgkZXZlbnQpXCJcbiAqID48L2NhcGl0YWxvcy1vbmJvYXJkaW5nPlxuICogYGBgXG4gKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2NhcGl0YWxvcy1vbmJvYXJkaW5nJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgdGVtcGxhdGU6IElGUkFNRV9DT01QT05FTlRfVEVNUExBVEUsXG4gIHN0eWxlczogSUZSQU1FX0NPTVBPTkVOVF9TVFlMRVMsXG59KVxuZXhwb3J0IGNsYXNzIE9uYm9hcmRpbmdDb21wb25lbnQgZXh0ZW5kcyBCYXNlSWZyYW1lQ29tcG9uZW50IHtcbiAgLy8gT25ib2FyZGluZy1zcGVjaWZpYyBpbnB1dHNcbiAgQElucHV0KCkgZW50cnlQb2ludD86IE9uYm9hcmRpbmdFbnRyeVBvaW50XG4gIEBJbnB1dCgpIGV4aXRQb2ludD86IE9uYm9hcmRpbmdFeGl0UG9pbnRcbiAgQElucHV0KCkgYWxsb3dFeGl0T25Ob25BcHByb3ZlZD86IGJvb2xlYW5cblxuICAvLyBPbmJvYXJkaW5nLXNwZWNpZmljIG91dHB1dHNcbiAgQE91dHB1dCgpIGRvbmUgPSBuZXcgRXZlbnRFbWl0dGVyPEFjY291bnQ+KClcblxuICBwcm90ZWN0ZWQgZ2V0UmVuZGVyaW5nQ29udGV4dCgpOiBSZW5kZXJpbmdDb250ZXh0IHtcbiAgICByZXR1cm4ge1xuICAgICAgZW50cnlQb2ludDogJ29uYm9hcmRpbmcnLFxuICAgICAgb25ib2FyZGluZ0VudHJ5UG9pbnQ6IHRoaXMuZW50cnlQb2ludCxcbiAgICAgIG9uYm9hcmRpbmdFeGl0UG9pbnQ6IHRoaXMuZXhpdFBvaW50LFxuICAgICAgYWxsb3dFeGl0T25Ob25BcHByb3ZlZDogdGhpcy5hbGxvd0V4aXRPbk5vbkFwcHJvdmVkLFxuICAgIH1cbiAgfVxuXG4gIHByb3RlY3RlZCBvdmVycmlkZSBnZXRDb21wb25lbnRDYWxsYmFja3MoKTogQ29tcG9uZW50Q2FsbGJhY2tzIHtcbiAgICByZXR1cm4ge1xuICAgICAgb25ib2FyZGluZzoge1xuICAgICAgICBvbkRvbmU6IChhY2NvdW50OiBBY2NvdW50KSA9PiB7XG4gICAgICAgICAgdGhpcy5kb25lLmVtaXQoYWNjb3VudClcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgfVxuICB9XG59XG4iXX0=
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
// AUTO-GENERATED FILE - DO NOT EDIT
|
|
2
|
+
// Generated by: scripts/generate-version.js
|
|
3
|
+
// Source: projects/capitalos-angular/package.json
|
|
4
|
+
export const SDK_VERSION = '0.1.0';
|
|
5
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmVyc2lvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2NhcGl0YWxvcy1hbmd1bGFyL3NyYy9saWIvdmVyc2lvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxvQ0FBb0M7QUFDcEMsNENBQTRDO0FBQzVDLGtEQUFrRDtBQUVsRCxNQUFNLENBQUMsTUFBTSxXQUFXLEdBQUcsT0FBTyxDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQVVUTy1HRU5FUkFURUQgRklMRSAtIERPIE5PVCBFRElUXG4vLyBHZW5lcmF0ZWQgYnk6IHNjcmlwdHMvZ2VuZXJhdGUtdmVyc2lvbi5qc1xuLy8gU291cmNlOiBwcm9qZWN0cy9jYXBpdGFsb3MtYW5ndWxhci9wYWNrYWdlLmpzb25cblxuZXhwb3J0IGNvbnN0IFNES19WRVJTSU9OID0gJzAuMS4wJ1xuIl19
|
package/esm2020/public-api.mjs
CHANGED
|
@@ -3,6 +3,8 @@
|
|
|
3
3
|
*/
|
|
4
4
|
// Components
|
|
5
5
|
export { CardsAppComponent } from './lib/cards-app.component';
|
|
6
|
+
export { BillPayAppComponent } from './lib/billpay-app.component';
|
|
7
|
+
export { OnboardingComponent } from './lib/onboarding.component';
|
|
6
8
|
// Services
|
|
7
9
|
export { CapitalOsAuthService } from './lib/capitalos-auth.service';
|
|
8
10
|
// Provider (standalone)
|
|
@@ -10,4 +12,4 @@ export { provideCapitalOs, CAPITALOS_CONFIG } from './lib/provide-capitalos';
|
|
|
10
12
|
// Module (NgModule-based apps)
|
|
11
13
|
export { CapitalOsModule } from './lib/capitalos.module';
|
|
12
14
|
export { CapitalOSError, ErrorCode } from '@capitalos/core';
|
|
13
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
15
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3Byb2plY3RzL2NhcGl0YWxvcy1hbmd1bGFyL3NyYy9wdWJsaWMtYXBpLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsYUFBYTtBQUNiLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDJCQUEyQixDQUFBO0FBQzdELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLDZCQUE2QixDQUFBO0FBQ2pFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLDRCQUE0QixDQUFBO0FBRWhFLFdBQVc7QUFDWCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQTtBQUduRSx3QkFBd0I7QUFDeEIsT0FBTyxFQUFFLGdCQUFnQixFQUFFLGdCQUFnQixFQUFFLE1BQU0seUJBQXlCLENBQUE7QUFHNUUsK0JBQStCO0FBQy9CLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQTtBQUt4RCxPQUFPLEVBQUUsY0FBYyxFQUFFLFNBQVMsRUFBRSxNQUFNLGlCQUFpQixDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIFB1YmxpYyBBUEkgU3VyZmFjZSBvZiBAY2FwaXRhbG9zL2FuZ3VsYXJcbiAqL1xuXG4vLyBDb21wb25lbnRzXG5leHBvcnQgeyBDYXJkc0FwcENvbXBvbmVudCB9IGZyb20gJy4vbGliL2NhcmRzLWFwcC5jb21wb25lbnQnXG5leHBvcnQgeyBCaWxsUGF5QXBwQ29tcG9uZW50IH0gZnJvbSAnLi9saWIvYmlsbHBheS1hcHAuY29tcG9uZW50J1xuZXhwb3J0IHsgT25ib2FyZGluZ0NvbXBvbmVudCB9IGZyb20gJy4vbGliL29uYm9hcmRpbmcuY29tcG9uZW50J1xuXG4vLyBTZXJ2aWNlc1xuZXhwb3J0IHsgQ2FwaXRhbE9zQXV0aFNlcnZpY2UgfSBmcm9tICcuL2xpYi9jYXBpdGFsb3MtYXV0aC5zZXJ2aWNlJ1xuZXhwb3J0IHR5cGUgeyBBdXRoU3RhdGUgfSBmcm9tICcuL2xpYi9jYXBpdGFsb3MtYXV0aC5zZXJ2aWNlJ1xuXG4vLyBQcm92aWRlciAoc3RhbmRhbG9uZSlcbmV4cG9ydCB7IHByb3ZpZGVDYXBpdGFsT3MsIENBUElUQUxPU19DT05GSUcgfSBmcm9tICcuL2xpYi9wcm92aWRlLWNhcGl0YWxvcydcbmV4cG9ydCB0eXBlIHsgQ2FwaXRhbE9zQ29uZmlnIH0gZnJvbSAnLi9saWIvcHJvdmlkZS1jYXBpdGFsb3MnXG5cbi8vIE1vZHVsZSAoTmdNb2R1bGUtYmFzZWQgYXBwcylcbmV4cG9ydCB7IENhcGl0YWxPc01vZHVsZSB9IGZyb20gJy4vbGliL2NhcGl0YWxvcy5tb2R1bGUnXG5cbi8vIFJlLWV4cG9ydCBjb21tb25seSB1c2VkIHR5cGVzIGZyb20gY29yZVxuZXhwb3J0IHR5cGUgeyBUaGVtZUNvbG9yU2NoZW1lLCBMb2dnZXIsIFRva2VuRGF0YSwgUmF3RXJyb3JEZXRhaWxzLCBBY2NvdW50LCBBY2NvdW50U3RhdHVzIH0gZnJvbSAnQGNhcGl0YWxvcy9jb3JlJ1xuXG5leHBvcnQgeyBDYXBpdGFsT1NFcnJvciwgRXJyb3JDb2RlIH0gZnJvbSAnQGNhcGl0YWxvcy9jb3JlJ1xuIl19
|