systelab-virtual-keyboard 0.0.5 → 17.0.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 +1 -0
- package/esm2022/lib/constants.mjs +1 -1
- package/esm2022/lib/systelab-virtual-keyboard-overlay.service.mjs +1 -1
- package/esm2022/lib/systelab-virtual-keyboard.component.mjs +16 -9
- package/esm2022/lib/systelab-virtual-keyboard.config.mjs +1 -1
- package/esm2022/lib/systelab-virtual-keyboard.directive.mjs +4 -4
- package/esm2022/lib/systelab-virtual-keyboard.module.mjs +1 -1
- package/fesm2022/systelab-virtual-keyboard.mjs +18 -11
- package/fesm2022/systelab-virtual-keyboard.mjs.map +1 -1
- package/lib/constants.d.ts.map +1 -1
- package/lib/systelab-virtual-keyboard-overlay.service.d.ts.map +1 -1
- package/lib/systelab-virtual-keyboard.component.d.ts +2 -1
- package/lib/systelab-virtual-keyboard.component.d.ts.map +1 -1
- package/lib/systelab-virtual-keyboard.config.d.ts +1 -1
- package/lib/systelab-virtual-keyboard.config.d.ts.map +1 -1
- package/lib/systelab-virtual-keyboard.directive.d.ts +1 -1
- package/lib/systelab-virtual-keyboard.directive.d.ts.map +1 -1
- package/lib/systelab-virtual-keyboard.module.d.ts.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -41,4 +41,5 @@ The configuration params are describe into the interface [SystelabVirtualKeyboar
|
|
|
41
41
|
|-----------|:----:|:-------:| ----------- |
|
|
42
42
|
| layout | SystelabVirtualKeyboardLayouts | | Usually the virtual keyboard select the layout between *default* or *numeric* depending on the input type. But with the config object you can override this behaviour and force the desired layout. The available layouts are described in the enum *SystelabVirtualKeyboardLayouts*
|
|
43
43
|
| inputMethod | SystelabVirtualKeyboardInputMethods | | The method detected for the keyboard to click or touch the keys
|
|
44
|
+
| showButton | boolean | false | Show or hide the button for showing the keyboard
|
|
44
45
|
|
|
@@ -34,4 +34,4 @@ export var SystelabVirtualKeyboardInputTypes;
|
|
|
34
34
|
SystelabVirtualKeyboardInputTypes["number"] = "number";
|
|
35
35
|
SystelabVirtualKeyboardInputTypes["password"] = "password";
|
|
36
36
|
})(SystelabVirtualKeyboardInputTypes || (SystelabVirtualKeyboardInputTypes = {}));
|
|
37
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
37
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uc3RhbnRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvc3lzdGVsYWItdmlydHVhbC1rZXlib2FyZC9zcmMvbGliL2NvbnN0YW50cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7OztHQU9HO0FBRUgsTUFBTSxDQUFOLElBQVksNkJBU1g7QUFURCxXQUFZLDZCQUE2QjtJQUNyQyxnREFBZSxDQUFBO0lBQ2Ysa0RBQWlCLENBQUE7SUFDakIsa0RBQWlCLENBQUE7SUFDakIsZ0RBQWUsQ0FBQTtJQUNmLHFEQUFvQixDQUFBO0lBQ3BCLHdEQUF1QixDQUFBO0lBQ3ZCLGtEQUFpQixDQUFBO0lBQ2pCLDhDQUFhLENBQUE7QUFDakIsQ0FBQyxFQVRXLDZCQUE2QixLQUE3Qiw2QkFBNkIsUUFTeEM7QUFFRCxNQUFNLENBQU4sSUFBWSw4QkFJWDtBQUpELFdBQVksOEJBQThCO0lBQ3RDLHFEQUFtQixDQUFBO0lBQ25CLGlEQUFlLENBQUE7SUFDZixxREFBbUIsQ0FBQTtBQUN2QixDQUFDLEVBSlcsOEJBQThCLEtBQTlCLDhCQUE4QixRQUl6QztBQUVELE1BQU0sQ0FBTixJQUFZLG1DQUdYO0FBSEQsV0FBWSxtQ0FBbUM7SUFDM0MsMEVBQW1DLENBQUE7SUFDbkMsMEVBQW1DLENBQUE7QUFDdkMsQ0FBQyxFQUhXLG1DQUFtQyxLQUFuQyxtQ0FBbUMsUUFHOUM7QUFFRCxNQUFNLENBQU4sSUFBWSxpQ0FJWDtBQUpELFdBQVksaUNBQWlDO0lBQ3pDLGtEQUFhLENBQUE7SUFDYixzREFBaUIsQ0FBQTtJQUNqQiwwREFBcUIsQ0FBQTtBQUN6QixDQUFDLEVBSlcsaUNBQWlDLEtBQWpDLGlDQUFpQyxRQUk1QyIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBDb3B5cmlnaHQgKGMpIDIwMjAgLSAyMDI0IC0gSW5zdHJ1bWVudGF0aW9uIExhYm9yYXRvcnkgQ29tcGFueSBhbmQgU3lzdGVsYWIgVGVjaG5vbG9naWVzLCBTQS4gQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqIE5PVElDRTogIEFsbCBpbmZvcm1hdGlvbiBjb250YWluZWQgaGVyZWluIGlzIGFuZCByZW1haW5zIHRoZSBwcm9wZXJ0eSBvZiBJbnN0cnVtZW50YXRpb24gTGFib3JhdG9yeSBDb21wYW55IGFuZCBpdHNcbiAqIGFmZmlsaWF0ZXMsIGlmIGFueS4gIFRoZSBpbnRlbGxlY3R1YWwgYW5kIHRlY2huaWNhbCBjb25jZXB0cyBjb250YWluZWQgaGVyZWluIGFyZSBwcm9wcmlldGFyeSB0byBJbnN0cnVtZW50YXRpb25cbiAqIExhYm9yYXRvcnkgQ29tcGFueSBhbmQgaXRzIGFmZmlsaWF0ZXMgYW5kIG1heSBiZSBjb3ZlcmVkIGJ5IFUuUy4gYW5kIGZvcmVpZ24gcGF0ZW50cyBhbmQgcGF0ZW50IGFwcGxpY2F0aW9ucywgYW5kL29yXG4gKiBhcmUgcHJvdGVjdGVkIGJ5IHRyYWRlIHNlY3JldCBvciBjb3B5cmlnaHQgbGF3LiBEaXNzZW1pbmF0aW9uIG9mIHRoaXMgaW5mb3JtYXRpb24gb3IgcmVwcm9kdWN0aW9uIG9mIHRoaXMgbWF0ZXJpYWwgaXNcbiAqIHN0cmljdGx5IGZvcmJpZGRlbiB1bmxlc3MgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uIGlzIEluc3RydW1lbnRhdGlvbiBMYWJvcmF0b3J5IENvbXBhbnkuXG4gKi9cblxuZXhwb3J0IGVudW0gU3lzdGVsYWJWaXJ0dWFsS2V5Ym9hcmRCdXR0b24ge1xuICAgIERvbmUgPSAne2RvbmV9JyxcbiAgICBFbnRlciA9ICd7ZW50ZXJ9JyxcbiAgICBTaGlmdCA9ICd7c2hpZnR9JyxcbiAgICBMb2NrID0gJ3tsb2NrfScsXG4gICAgQmFja3NwYWNlID0gJ3tia3NwfScsXG4gICAgTGFuZ3VhZ2UgPSAne2xhbmd1YWdlfScsXG4gICAgU3BhY2UgPSAne3NwYWNlfScsXG4gICAgVGFiID0gJ3t0YWJ9Jyxcbn1cblxuZXhwb3J0IGVudW0gU3lzdGVsYWJWaXJ0dWFsS2V5Ym9hcmRMYXlvdXRzIHtcbiAgICBkZWZhdWx0ID0gJ2RlZmF1bHQnLFxuICAgIHNoaWZ0ID0gJ3NoaWZ0JyxcbiAgICBudW1lcmljID0gJ251bWVyaWMnLFxufVxuXG5leHBvcnQgZW51bSBTeXN0ZWxhYlZpcnR1YWxLZXlib2FyZElucHV0TWV0aG9kcyB7XG4gICAgb25seU1vdXNlRXZlbnRzID0gJ29ubHlNb3VzZUV2ZW50cycsXG4gICAgb25seVRvdWNoRXZlbnRzID0gJ29ubHlUb3VjaEV2ZW50cycsXG59XG5cbmV4cG9ydCBlbnVtIFN5c3RlbGFiVmlydHVhbEtleWJvYXJkSW5wdXRUeXBlcyB7XG4gICAgdGV4dCA9ICd0ZXh0JyxcbiAgICBudW1iZXIgPSAnbnVtYmVyJyxcbiAgICBwYXNzd29yZCA9ICdwYXNzd29yZCcsXG59XG4iXX0=
|
|
@@ -157,4 +157,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.9", ngImpor
|
|
|
157
157
|
providedIn: 'root',
|
|
158
158
|
}]
|
|
159
159
|
}], ctorParameters: () => [{ type: i1.Overlay }] });
|
|
160
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3lzdGVsYWItdmlydHVhbC1rZXlib2FyZC1vdmVybGF5LnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9zeXN0ZWxhYi12aXJ0dWFsLWtleWJvYXJkL3NyYy9saWIvc3lzdGVsYWItdmlydHVhbC1rZXlib2FyZC1vdmVybGF5LnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBVUEsT0FBTyxFQUFnQixVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3RELE9BQU8sRUFBRSw4QkFBOEIsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUM3RCxPQUFPLEVBQUUsZ0NBQWdDLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQzs7O0FBWXpGLE1BQU0sT0FBTyxxQ0FBcUM7SUFTaEQsWUFBNkIsT0FBZ0I7UUFBaEIsWUFBTyxHQUFQLE9BQU8sQ0FBUztRQUZyQyxvQkFBZSxHQUFZLEtBQUssQ0FBQztRQUd2QyxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDdEIsQ0FBQztJQUVNLFNBQVM7UUFDZCxPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDO0lBQzNCLENBQUM7SUFFTSxNQUFNO1FBQ1gsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDO0lBQ25CLENBQUM7SUFFTSxNQUFNLENBQ1gsV0FBNkIsRUFDN0IseUJBQXNDLEVBQ3RDLFdBQW9CLEVBQ3BCLFNBQXlDLDhCQUE4QixDQUFDLE9BQU87UUFFL0UsSUFBSSxDQUFDLFdBQVcsR0FBRyxXQUFXLENBQUM7UUFDL0IsSUFBSSxDQUFDLFdBQVcsR0FBRyxXQUFXLENBQUM7UUFDL0IsSUFBSSxDQUFDLHlCQUF5QixHQUFHLHlCQUF5QixDQUFDO1FBQzNELElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDO1FBQ3JCLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFD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RSxDQUFDLENBQUMsQ0FBQztRQUM5RSxNQUFNLFVBQVUsR0FBRyxXQUFXLENBQUMscUJBQXFCLEVBQUUsQ0FBQyxLQUFLLENBQUM7UUFFN0QsTUFBTSxVQUFVLEdBQUcsWUFBWSxHQUFHLFVBQVUsQ0FBQztRQUU3QyxPQUFPLElBQUksQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ2xDLENBQUM7OEdBbkxVLHFDQUFxQztrSEFBckMscUNBQXFDLGNBRnBDLE1BQU07OzJGQUVQLHFDQUFxQztrQkFIakQsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogQ29weXJpZ2h0IChjKSAyMDIwIC0gMjAyNCAtIEluc3RydW1lbnRhdGlvbiBMYWJvcmF0b3J5IENvbXBhbnkgYW5kIFN5c3RlbGFiIFRlY2hub2xvZ2llcywgU0EuIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKiBOT1RJQ0U6ICBBbGwgaW5mb3JtYXRpb24gY29udGFpbmVkIGhlcmVpbiBpcyBhbmQgcmVtYWlucyB0aGUgcHJvcGVydHkgb2YgSW5zdHJ1bWVudGF0aW9uIExhYm9yYXRvcnkgQ29tcGFueSBhbmQgaXRzXG4gKiBhZmZpbGlhdGVzLCBpZiBhbnkuICBUaGUgaW50ZWxsZWN0dWFsIGFuZCB0ZWNobmljYWwgY29uY2VwdHMgY29udGFpbmVkIGhlcmVpbiBhcmUgcHJvcHJpZXRhcnkgdG8gSW5zdHJ1bWVudGF0aW9uXG4gKiBMYWJvcmF0b3J5IENvbXBhbnkgYW5kIGl0cyBhZmZpbGlhdGVzIGFuZCBtYXkgYmUgY292ZXJlZCBieSBVLlMuIGFuZCBmb3JlaWduIHBhdGVudHMgYW5kIHBhdGVudCBhcHBsaWNhdGlvbnMsIGFuZC9vclxuICogYXJlIHByb3RlY3RlZCBieSB0cmFkZSBzZWNyZXQgb3IgY29weXJpZ2h0IGxhdy4gRGlzc2VtaW5hdGlvbiBvZiB0aGlzIGluZm9ybWF0aW9uIG9yIHJlcHJvZHVjdGlvbiBvZiB0aGlzIG1hdGVyaWFsIGlzXG4gKiBzdHJpY3RseSBmb3JiaWRkZW4gdW5sZXNzIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbiBpcyBJbnN0cnVtZW50YXRpb24gTGFib3JhdG9yeSBDb21wYW55LlxuICovXG5cbmltcG9ydCB7IE92ZXJsYXksIE92ZXJsYXlSZWYsIE92ZXJsYXlTaXplQ29uZmlnLCBQb3NpdGlvblN0cmF0ZWd5IH0gZnJvbSAnQGFuZ3VsYXIvY2RrL292ZXJsYXknO1xuaW1wb3J0IHsgQ29tcG9uZW50UmVmLCBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb21wb25lbnRQb3J0YWwgfSBmcm9tICdAYW5ndWxhci9jZGsvcG9ydGFsJztcbmltcG9ydCB7IFN5c3RlbGFiVmlydHVhbEtleWJvYXJkTGF5b3V0cyB9IGZyb20gJy4vY29uc3RhbnRzJztcbmltcG9ydCB7IFN5c3RlbGFiVmlydHVhbEtleWJvYXJkQ29tcG9uZW50IH0gZnJvbSAnLi9zeXN0ZWxhYi12aXJ0dWFsLWtleWJvYXJkLmNvbXBvbmVudCc7XG5cbmludGVyZmFjZSBQb3NpdGlvblN0cmF0ZWd5T3JpZ2luIHtcbiAgeDogbnVtYmVyO1xuICB5OiBudW1iZXI7XG4gIHdpZHRoPzogbnVtYmVyO1xuICBoZWlnaHQ/OiBudW1iZXI7XG59XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxufSlcbmV4cG9ydCBjbGFzcyBTeXN0ZWxhYlZpcnR1YWxLZXlib2FyZE92ZXJsYXlTZXJ2aWNlIHtcbiAgcHJpdmF0ZSBvdmVybGF5UmVmITogT3ZlcmxheVJlZjtcbiAgcHJpdmF0ZSBpbnB1dE9yaWdpbjogSFRNTElucHV0RWxlbWVudDtcbiAgcHJpdmF0ZSBmaXhlZEJvdHRvbTogYm9vbGVhbjtcbiAgcHJpdmF0ZSBzaG93S2V5Ym9hcmRCdXR0b25FbGVtZW50OiBIVE1MRWxlbWVudDtcbiAgcHJpdmF0ZSBvcGVuOiBib29sZWFuO1xuICBwcml2YXRlIGxheW91dDogU3lzdGVsYWJWaXJ0dWFsS2V5Ym9hcmRMYXlvdXRzO1xuICBwcml2YXRlIGZvY3VzRGlzcGF0Y2hlZDogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVhZG9ubHkgb3ZlcmxheTogT3ZlcmxheSkge1xuICAgIHRoaXMuaW5pdExpc3RlbmVyKCk7XG4gIH1cblxuICBwdWJsaWMgaXNDcmVhdGVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAhIXRoaXMub3ZlcmxheVJlZjtcbiAgfVxuXG4gIHB1YmxpYyBpc09wZW4oKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMub3BlbjtcbiAgfVxuXG4gIHB1YmxpYyBjcmVhdGUoXG4gICAgaW5wdXRPcmlnaW46IEhUTUxJbnB1dEVsZW1lbnQsXG4gICAgc2hvd0tleWJvYXJkQnV0dG9uRWxlbWVudDogSFRNTEVsZW1lbnQsXG4gICAgZml4ZWRCb3R0b206IGJvb2xlYW4sXG4gICAgbGF5b3V0OiBTeXN0ZWxhYlZpcnR1YWxLZXlib2FyZExheW91dHMgPSBTeXN0ZWxhYlZpcnR1YWxLZXlib2FyZExheW91dHMuZGVmYXVsdCxcbiAgKTogQ29tcG9uZW50UmVmPFN5c3RlbGFiVmlydHVhbEtleWJvYXJkQ29tcG9uZW50PiB7XG4gICAgdGhpcy5pbnB1dE9yaWdpbiA9IGlucHV0T3JpZ2luO1xuICAgIHRoaXMuZml4ZWRCb3R0b20gPSBmaXhlZEJvdHRvbTtcbiAgICB0aGlzLnNob3dLZXlib2FyZEJ1dHRvbkVsZW1lbnQgPSBzaG93S2V5Ym9hcmRCdXR0b25FbGVtZW50O1xuICAgIHRoaXMubGF5b3V0ID0gbGF5b3V0O1xuICAgIHRoaXMub3ZlcmxheVJlZiA9IHRoaXMub3ZlcmxheS5jcmVhdGUoe1xuICAgICAgaGFzQmFja2Ryb3A6IGZhbHNlLFxuICAgICAgc2Nyb2xsU3RyYXRlZ3k6IHRoaXMub3ZlcmxheS5zY3JvbGxTdHJhdGVnaWVzLnJlcG9zaXRpb24oKSxcbiAgICAgIGRpc3Bvc2VPbk5hdmlnYXRpb246IHRydWUsXG4gICAgfSk7XG4gICAgdGhpcy5vdmVybGF5UmVmLmFkZFBhbmVsQ2xhc3MoJ3ZpcnR1YWwta2V5Ym9hcmQtb3ZlcmxheS1wYW5lJyk7XG4gICAgaWYgKGZpeGVkQm90dG9tKSB7XG4gICAgICB0aGlzLm92ZXJsYXlSZWYuYWRkUGFuZWxDbGFzcygndmlydHVhbC1rZXlib2FyZC1maXhlZC1ib3R0b20nKTtcbiAgICB9XG5cbiAgICB0aGlzLnVwZGF0ZVBvc2l0aW9uU3RyYXRlZ3koaW5wdXRPcmlnaW4sIGZpeGVkQm90dG9tKTtcbiAgICB0aGlzLnVwZGF0ZVNpemUoKTtcblxuICAgIHRoaXMub3BlbiA9IHRydWU7XG4gICAgcmV0dXJuIHRoaXMub3ZlcmxheVJlZi5hdHRhY2gobmV3IENvbXBvbmVudFBvcnRhbChTeXN0ZWxhYlZpcnR1YWxLZXlib2FyZENvbXBvbmVudCkpO1xuICB9XG5cbiAgcHVibGljIHVwZGF0ZVBvc2l0aW9uKCk6IHZvaWQge1xuICAgIHRoaXMudXBkYXRlUG9zaXRpb25TdHJhdGVneSh0aGlzLmlucHV0T3JpZ2luLCB0aGlzLmZpeGVkQm90dG9tKTtcbiAgfVxuXG4gIHB1YmxpYyBzZXRGb2N1c0Rpc3BhdGNoZWQoZGlzcGF0Y2hlZDogYm9vbGVhbik6IHZvaWQge1xuICAgIHRoaXMuZm9jdXNEaXNwYXRjaGVkID0gZGlzcGF0Y2hlZDtcbiAgfVxuXG4gIHB1YmxpYyBkZXN0cm95KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLm92ZXJsYXlSZWYpIHtcbiAgICAgIHRoaXMub3ZlcmxheVJlZi5kaXNwb3NlKCk7XG4gICAgfVxuICAgIHRoaXMub3ZlcmxheVJlZiA9IG51bGw7XG4gICAgdGhpcy5vcGVuID0gZmFsc2U7XG4gIH1cblxuICBwcml2YXRlIGluaXRMaXN0ZW5lcigpIHtcbiAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIHRoaXMuaGFuZGxlQ2xpY2suYmluZCh0aGlzKSk7XG4gIH1cblxuICBwcml2YXRlIGhhbmRsZUNsaWNrKGV2ZW50OiBNb3VzZUV2ZW50KSB7XG4gICAgaWYgKHRoaXMuZm9jdXNEaXNwYXRjaGVkKSB7XG4gICAgICB0aGlzLmZvY3VzRGlzcGF0Y2hlZCA9IGZhbHNlO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zb2xlLmxvZygnRG9jdW1lbnQgY2xpY2tlZDonLCBldmVudCk7XG4gICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgY29uc3Qgc2ltcGxlS2V5Ym9hcmRFbGVtZW50ID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignLnNpbXBsZS1rZXlib2FyZCcpO1xuICAgIGNvbnN0IHNob3dLZXlib2FyZEJ1dHRvbkNsaWNrZWQgPSAoZXZlbnQudGFyZ2V0IGFzIEhUTUxFbGVtZW50KT8uY2xhc3NMaXN0LmNvbnRhaW5zKCd2aXJ0dWFsLWtleWJvYXJkLXNob3ctYnV0dG9uJyk7XG5cbiAgICBjb25zdCBjb250YWluc0tleWJvYXJkID0gc2ltcGxlS2V5Ym9hcmRFbGVtZW50Py5jb250YWlucyhldmVudC50YXJnZXQgYXMgTm9kZSk7XG4gICAgY29uc3QgY29udGFpbnNFbGVtZW50UmVmID0gdGhpcy5pbnB1dE9yaWdpbj8uY29udGFpbnMoZXZlbnQudGFyZ2V0IGFzIE5vZGUpO1xuICAgIC8vIGNvbnN0IGNvbnRhaW5zRm9jdXNlZEVsZW1lbnQgPSB0aGlzLmZvY3VzZWRFbGVtZW50Py5jb250YWlucyhldmVudC50YXJnZXQgYXMgTm9kZSk7XG4gICAgY29uc3QgY29udGFpbnNTaG93QnV0dG9uID0gdGhpcy5zaG93S2V5Ym9hcmRCdXR0b25FbGVtZW50Py5jb250YWlucyhldmVudC50YXJnZXQgYXMgTm9kZSk7XG4gICAgaWYgKFxuICAgICAgIWNvbnRhaW5zS2V5Ym9hcmQgJiZcbiAgICAgICFjb250YWluc0VsZW1lbnRSZWYgJiZcbiAgICAgIC8vICFjb250YWluc0ZvY3VzZWRFbGVtZW50ICYmXG4gICAgICAhY29udGFpbnNTaG93QnV0dG9uICYmXG4gICAgICAhc2hvd0tleWJvYXJkQnV0dG9uQ2xpY2tlZFxuICAgICkge1xuICAgICAgaWYgKHRoaXMuaXNDcmVhdGVkKCkpIHtcbiAgICAgICAgdGhpcy5kZXN0cm95KCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGhhc0F0dGFjaGVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLm92ZXJsYXlSZWY/Lmhhc0F0dGFjaGVkKCk7XG4gIH1cblxuICBwcml2YXRlIHVwZGF0ZVBvc2l0aW9uU3RyYXRlZ3koaW5wdXRPcmlnaW46IEhUTUxJbnB1dEVsZW1lbnQsIGZpeGVkQm90dG9tOiBib29sZWFuKTogdm9pZCB7XG4gICAgdGhpcy5vdmVybGF5UmVmLnVwZGF0ZVBvc2l0aW9uU3RyYXRlZ3kodGhpcy5nZXRQb3NpdGlvblN0cmF0ZWd5KGlucHV0T3JpZ2luLCBmaXhlZEJvdHRvbSkpO1xuICB9XG5cbiAgcHJpdmF0ZSB1cGRhdGVTaXplKCk6IHZvaWQge1xuICAgIHRoaXMub3ZlcmxheVJlZi51cGRhdGVTaXplKHRoaXMuZ2V0T3ZlcmxheVNpemUoKSk7XG4gIH1cblxuICBwcml2YXRlIGdldFBvc2l0aW9uU3RyYXRlZ3koaW5wdXRPcmlnaW46IEhUTUxJbnB1dEVsZW1lbnQsIGZpeGVkQm90dG9tOiBib29sZWFuKTogUG9zaXRpb25TdHJhdGVneSB7XG4gICAgaWYgKGZpeGVkQm90dG9tKSB7XG4gICAgICByZXR1cm4gdGhpcy5vdmVybGF5LnBvc2l0aW9uKCkuZ2xvYmFsKCkuY2VudGVySG9yaXpvbnRhbGx5KCkuYm90dG9tKCcwJyk7XG4gICAgfVxuXG4gICAgY29uc3QgcG9pbnRXaXRoRGltZW5zaW9uczogUG9zaXRpb25TdHJhdGVneU9yaWdpbiA9IHRoaXMuY29tcHV0ZVBvc2l0aW9uU3RyYXRlZ3lPcmlnaW4oaW5wdXRPcmlnaW4pO1xuXG4gICAgcmV0dXJuIHRoaXMub3ZlcmxheVxuICAgICAgLnBvc2l0aW9uKClcbiAgICAgIC5mbGV4aWJsZUNvbm5lY3RlZFRvKHBvaW50V2l0aERpbWVuc2lvbnMpXG4gICAgICAud2l0aEZsZXhpYmxlRGltZW5zaW9ucyhmYWxzZSlcbiAgICAgIC53aXRoTG9ja2VkUG9zaXRpb24odHJ1ZSlcbiAgICAgIC53aXRoUHVzaChmYWxzZSlcbiAgICAgIC53aXRoUG9zaXRpb25zKFtcbiAgICAgICAge1xuICAgICAgICAgIG9yaWdpblg6ICdzdGFydCcsXG4gICAgICAgICAgb3JpZ2luWTogJ2JvdHRvbScsXG4gICAgICAgICAgb3ZlcmxheVg6ICdzdGFydCcsXG4gICAgICAgICAgb3ZlcmxheVk6ICd0b3AnLFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgb3JpZ2luWDogJ3N0YXJ0JyxcbiAgICAgICAgICBvcmlnaW5ZOiAndG9wJyxcbiAgICAgICAgICBvdmVybGF5WDogJ3N0YXJ0JyxcbiAgICAgICAgICBvdmVybGF5WTogJ2JvdHRvbScsXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICBvcmlnaW5YOiAnZW5kJyxcbiAgICAgICAgICBvcmlnaW5ZOiAnYm90dG9tJyxcbiAgICAgICAgICBvdmVybGF5WDogJ2VuZCcsXG4gICAgICAgICAgb3ZlcmxheVk6ICd0b3AnLFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgb3JpZ2luWDogJ2VuZCcsXG4gICAgICAgICAgb3JpZ2luWTogJ3RvcCcsXG4gICAgICAgICAgb3ZlcmxheVg6ICdlbmQnLFxuICAgICAgICAgIG92ZXJsYXlZOiAnYm90dG9tJyxcbiAgICAgICAgfSxcbiAgICAgIF0pO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRPdmVybGF5U2l6ZSgpOiBPdmVybGF5U2l6ZUNvbmZpZyB7XG4gICAgY29uc3Qgb3ZlcmxheVdpZHRoID0gdGhpcy5sYXlvdXQgPT09IFN5c3RlbGFiVmlydHVhbEtleWJvYXJkTGF5b3V0cy5udW1lcmljID8gJzQwMHB4JyA6ICcxMjAwcHgnO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIHdpZHRoOiBvdmVybGF5V2lkdGgsXG4gICAgICBtYXhXaWR0aDogb3ZlcmxheVdpZHRoLFxuICAgICAgbWluV2lkdGg6IG92ZXJsYXlXaWR0aCxcbiAgICB9O1xuICB9XG5cbiAgcHJpdmF0ZSBjb21wdXRlUG9zaXRpb25TdHJhdGVneU9yaWdpbihpbnB1dE9yaWdpbjogSFRNTElucHV0RWxlbWVudCk6IFBvc2l0aW9uU3RyYXRlZ3lPcmlnaW4ge1xuICAgIGNvbnN0IG92ZXJsYXlPZmZzZXRYID0gdGhpcy5jb21wdXRlT3ZlcmxheU9mZnNldFgoaW5wdXRPcmlnaW4pO1xuICAgIGNvbnN0IHsgd2lkdGg6IG92ZXJsYXlXaWR0aFN0cmluZyB9ID0gdGhpcy5nZXRPdmVybGF5U2l6ZSgpO1xuICAgIGNvbnN0IG92ZXJsYXlXaWR0aCA9IE51bWJlcigob3ZlcmxheVdpZHRoU3RyaW5nIGFzIHN0cmluZykucmVwbGFjZSgncHgnLCAnJykpO1xuICAgIGNvbnN0IHt4LCB5LCB3aWR0aCwgaGVpZ2h0fSA9IGlucHV0T3JpZ2luLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgIHJldHVybiB7XG4gICAgICB3aWR0aCxcbiAgICAgIGhlaWdodCxcbiAgICAgIHg6IHdpZHRoIDwgb3ZlcmxheVdpZHRoID8geCAtIG92ZXJsYXlPZmZzZXRYIDogeCArIG92ZXJsYXlPZmZzZXRYLFxuICAgICAgeSxcbiAgICB9O1xuICB9XG5cbiAgcHJpdmF0ZSBjb21wdXRlT3ZlcmxheU9mZnNldFgoaW5wdXRPcmlnaW46IEhUTUxJbnB1dEVsZW1lbnQpOiBudW1iZXIge1xuICAgIGNvbnN0IHsgd2lkdGg6IG92ZXJsYXlXaWR0aFN0cmluZyB9ID0gdGhpcy5nZXRPdmVybGF5U2l6ZSgpO1xuICAgIGNvbnN0IG92ZXJsYXlXaWR0aCA9IE51bWJlcigob3ZlcmxheVdpZHRoU3RyaW5nIGFzIHN0cmluZykucmVwbGFjZSgncHgnLCAnJykpO1xuICAgIGNvbnN0IGlucHV0V2lkdGggPSBpbnB1dE9yaWdpbi5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS53aWR0aDtcblxuICAgIGNvbnN0IGV4dHJhV2lkdGggPSBvdmVybGF5V2lkdGggLSBpbnB1dFdpZHRoO1xuXG4gICAgcmV0dXJuIE1hdGguYWJzKGV4dHJhV2lkdGgpIC8gMjtcbiAgfVxufVxuIl19
|
|
160
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3lzdGVsYWItdmlydHVhbC1rZXlib2FyZC1vdmVybGF5LnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9zeXN0ZWxhYi12aXJ0dWFsLWtleWJvYXJkL3NyYy9saWIvc3lzdGVsYWItdmlydHVhbC1rZXlib2FyZC1vdmVybGF5LnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBVUEsT0FBTyxFQUFnQixVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3RELE9BQU8sRUFBRSw4QkFBOEIsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUM3RCxPQUFPLEVBQUUsZ0NBQWdDLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQzs7O0FBWXpGLE1BQU0sT0FBTyxxQ0FBcUM7SUFTOUMsWUFBNkIsT0FBZ0I7UUFBaEIsWUFBTyxHQUFQLE9BQU8sQ0FBUztRQUZyQyxvQkFBZSxHQUFZLEtBQUssQ0FBQztRQUdyQyxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDeEIsQ0FBQztJQUVNLFNBQVM7UUFDWixPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDO0lBQzdCLENBQUM7SUFFTSxNQUFNO1FBQ1QsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDO0lBQ3JCLENBQUM7SUFFTSxNQUFNLENBQ1QsV0FBNkIsRUFDN0IseUJBQXNDLEVBQ3RDLFdBQW9CLEVBQ3BCLFNBQXlDLDhCQUE4QixDQUFDLE9BQU87UUFFL0UsSUFBSSxDQUFDLFdBQVcsR0FBRyxXQUFXLENBQUM7UUFDL0IsSUFBSSxDQUFDLFdBQVcsR0FBRyxXQUFXLENBQUM7UUFDL0IsSUFBSSxDQUFDLHlCQUF5QixHQUFHLHlCQUF5QixDQUFDO1FBQzNELElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDO1FBQ3JCLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFD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QUFDLENBQUMsQ0FBQztRQUM5RSxNQUFNLFVBQVUsR0FBRyxXQUFXLENBQUMscUJBQXFCLEVBQUUsQ0FBQyxLQUFLLENBQUM7UUFFN0QsTUFBTSxVQUFVLEdBQUcsWUFBWSxHQUFHLFVBQVUsQ0FBQztRQUU3QyxPQUFPLElBQUksQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ3BDLENBQUM7OEdBbkxRLHFDQUFxQztrSEFBckMscUNBQXFDLGNBRmxDLE1BQU07OzJGQUVULHFDQUFxQztrQkFIakQsVUFBVTttQkFBQztvQkFDUixVQUFVLEVBQUUsTUFBTTtpQkFDckIiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogQ29weXJpZ2h0IChjKSAyMDIwIC0gMjAyNCAtIEluc3RydW1lbnRhdGlvbiBMYWJvcmF0b3J5IENvbXBhbnkgYW5kIFN5c3RlbGFiIFRlY2hub2xvZ2llcywgU0EuIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKiBOT1RJQ0U6ICBBbGwgaW5mb3JtYXRpb24gY29udGFpbmVkIGhlcmVpbiBpcyBhbmQgcmVtYWlucyB0aGUgcHJvcGVydHkgb2YgSW5zdHJ1bWVudGF0aW9uIExhYm9yYXRvcnkgQ29tcGFueSBhbmQgaXRzXG4gKiBhZmZpbGlhdGVzLCBpZiBhbnkuICBUaGUgaW50ZWxsZWN0dWFsIGFuZCB0ZWNobmljYWwgY29uY2VwdHMgY29udGFpbmVkIGhlcmVpbiBhcmUgcHJvcHJpZXRhcnkgdG8gSW5zdHJ1bWVudGF0aW9uXG4gKiBMYWJvcmF0b3J5IENvbXBhbnkgYW5kIGl0cyBhZmZpbGlhdGVzIGFuZCBtYXkgYmUgY292ZXJlZCBieSBVLlMuIGFuZCBmb3JlaWduIHBhdGVudHMgYW5kIHBhdGVudCBhcHBsaWNhdGlvbnMsIGFuZC9vclxuICogYXJlIHByb3RlY3RlZCBieSB0cmFkZSBzZWNyZXQgb3IgY29weXJpZ2h0IGxhdy4gRGlzc2VtaW5hdGlvbiBvZiB0aGlzIGluZm9ybWF0aW9uIG9yIHJlcHJvZHVjdGlvbiBvZiB0aGlzIG1hdGVyaWFsIGlzXG4gKiBzdHJpY3RseSBmb3JiaWRkZW4gdW5sZXNzIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbiBpcyBJbnN0cnVtZW50YXRpb24gTGFib3JhdG9yeSBDb21wYW55LlxuICovXG5cbmltcG9ydCB7IE92ZXJsYXksIE92ZXJsYXlSZWYsIE92ZXJsYXlTaXplQ29uZmlnLCBQb3NpdGlvblN0cmF0ZWd5IH0gZnJvbSAnQGFuZ3VsYXIvY2RrL292ZXJsYXknO1xuaW1wb3J0IHsgQ29tcG9uZW50UmVmLCBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb21wb25lbnRQb3J0YWwgfSBmcm9tICdAYW5ndWxhci9jZGsvcG9ydGFsJztcbmltcG9ydCB7IFN5c3RlbGFiVmlydHVhbEtleWJvYXJkTGF5b3V0cyB9IGZyb20gJy4vY29uc3RhbnRzJztcbmltcG9ydCB7IFN5c3RlbGFiVmlydHVhbEtleWJvYXJkQ29tcG9uZW50IH0gZnJvbSAnLi9zeXN0ZWxhYi12aXJ0dWFsLWtleWJvYXJkLmNvbXBvbmVudCc7XG5cbmludGVyZmFjZSBQb3NpdGlvblN0cmF0ZWd5T3JpZ2luIHtcbiAgeDogbnVtYmVyO1xuICB5OiBudW1iZXI7XG4gIHdpZHRoPzogbnVtYmVyO1xuICBoZWlnaHQ/OiBudW1iZXI7XG59XG5cbkBJbmplY3RhYmxlKHtcbiAgICBwcm92aWRlZEluOiAncm9vdCcsXG59KVxuZXhwb3J0IGNsYXNzIFN5c3RlbGFiVmlydHVhbEtleWJvYXJkT3ZlcmxheVNlcnZpY2Uge1xuICAgIHByaXZhdGUgb3ZlcmxheVJlZiE6IE92ZXJsYXlSZWY7XG4gICAgcHJpdmF0ZSBpbnB1dE9yaWdpbjogSFRNTElucHV0RWxlbWVudDtcbiAgICBwcml2YXRlIGZpeGVkQm90dG9tOiBib29sZWFuO1xuICAgIHByaXZhdGUgc2hvd0tleWJvYXJkQnV0dG9uRWxlbWVudDogSFRNTEVsZW1lbnQ7XG4gICAgcHJpdmF0ZSBvcGVuOiBib29sZWFuO1xuICAgIHByaXZhdGUgbGF5b3V0OiBTeXN0ZWxhYlZpcnR1YWxLZXlib2FyZExheW91dHM7XG4gICAgcHJpdmF0ZSBmb2N1c0Rpc3BhdGNoZWQ6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVhZG9ubHkgb3ZlcmxheTogT3ZlcmxheSkge1xuICAgICAgICB0aGlzLmluaXRMaXN0ZW5lcigpO1xuICAgIH1cblxuICAgIHB1YmxpYyBpc0NyZWF0ZWQoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiAhIXRoaXMub3ZlcmxheVJlZjtcbiAgICB9XG5cbiAgICBwdWJsaWMgaXNPcGVuKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5vcGVuO1xuICAgIH1cblxuICAgIHB1YmxpYyBjcmVhdGUoXG4gICAgICAgIGlucHV0T3JpZ2luOiBIVE1MSW5wdXRFbGVtZW50LFxuICAgICAgICBzaG93S2V5Ym9hcmRCdXR0b25FbGVtZW50OiBIVE1MRWxlbWVudCxcbiAgICAgICAgZml4ZWRCb3R0b206IGJvb2xlYW4sXG4gICAgICAgIGxheW91dDogU3lzdGVsYWJWaXJ0dWFsS2V5Ym9hcmRMYXlvdXRzID0gU3lzdGVsYWJWaXJ0dWFsS2V5Ym9hcmRMYXlvdXRzLmRlZmF1bHQsXG4gICAgKTogQ29tcG9uZW50UmVmPFN5c3RlbGFiVmlydHVhbEtleWJvYXJkQ29tcG9uZW50PiB7XG4gICAgICAgIHRoaXMuaW5wdXRPcmlnaW4gPSBpbnB1dE9yaWdpbjtcbiAgICAgICAgdGhpcy5maXhlZEJvdHRvbSA9IGZpeGVkQm90dG9tO1xuICAgICAgICB0aGlzLnNob3dLZXlib2FyZEJ1dHRvbkVsZW1lbnQgPSBzaG93S2V5Ym9hcmRCdXR0b25FbGVtZW50O1xuICAgICAgICB0aGlzLmxheW91dCA9IGxheW91dDtcbiAgICAgICAgdGhpcy5vdmVybGF5UmVmID0gdGhpcy5vdmVybGF5LmNyZWF0ZSh7XG4gICAgICAgICAgICBoYXNCYWNrZHJvcDogZmFsc2UsXG4gICAgICAgICAgICBzY3JvbGxTdHJhdGVneTogdGhpcy5vdmVybGF5LnNjcm9sbFN0cmF0ZWdpZXMucmVwb3NpdGlvbigpLFxuICAgICAgICAgICAgZGlzcG9zZU9uTmF2aWdhdGlvbjogdHJ1ZSxcbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMub3ZlcmxheVJlZi5hZGRQYW5lbENsYXNzKCd2aXJ0dWFsLWtleWJvYXJkLW92ZXJsYXktcGFuZScpO1xuICAgICAgICBpZiAoZml4ZWRCb3R0b20pIHtcbiAgICAgICAgICAgIHRoaXMub3ZlcmxheVJlZi5hZGRQYW5lbENsYXNzKCd2aXJ0dWFsLWtleWJvYXJkLWZpeGVkLWJvdHRvbScpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy51cGRhdGVQb3NpdGlvblN0cmF0ZWd5KGlucHV0T3JpZ2luLCBmaXhlZEJvdHRvbSk7XG4gICAgICAgIHRoaXMudXBkYXRlU2l6ZSgpO1xuXG4gICAgICAgIHRoaXMub3BlbiA9IHRydWU7XG4gICAgICAgIHJldHVybiB0aGlzLm92ZXJsYXlSZWYuYXR0YWNoKG5ldyBDb21wb25lbnRQb3J0YWwoU3lzdGVsYWJWaXJ0dWFsS2V5Ym9hcmRDb21wb25lbnQpKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgdXBkYXRlUG9zaXRpb24oKTogdm9pZCB7XG4gICAgICAgIHRoaXMudXBkYXRlUG9zaXRpb25TdHJhdGVneSh0aGlzLmlucHV0T3JpZ2luLCB0aGlzLmZpeGVkQm90dG9tKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgc2V0Rm9jdXNEaXNwYXRjaGVkKGRpc3BhdGNoZWQ6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICAgICAgdGhpcy5mb2N1c0Rpc3BhdGNoZWQgPSBkaXNwYXRjaGVkO1xuICAgIH1cblxuICAgIHB1YmxpYyBkZXN0cm95KCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5vdmVybGF5UmVmKSB7XG4gICAgICAgICAgICB0aGlzLm92ZXJsYXlSZWYuZGlzcG9zZSgpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMub3ZlcmxheVJlZiA9IG51bGw7XG4gICAgICAgIHRoaXMub3BlbiA9IGZhbHNlO1xuICAgIH1cblxuICAgIHByaXZhdGUgaW5pdExpc3RlbmVyKCkge1xuICAgICAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIHRoaXMuaGFuZGxlQ2xpY2suYmluZCh0aGlzKSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBoYW5kbGVDbGljayhldmVudDogTW91c2VFdmVudCkge1xuICAgICAgICBpZiAodGhpcy5mb2N1c0Rpc3BhdGNoZWQpIHtcbiAgICAgICAgICAgIHRoaXMuZm9jdXNEaXNwYXRjaGVkID0gZmFsc2U7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgY29uc29sZS5sb2coJ0RvY3VtZW50IGNsaWNrZWQ6JywgZXZlbnQpO1xuICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgY29uc3Qgc2ltcGxlS2V5Ym9hcmRFbGVtZW50ID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignLnNpbXBsZS1rZXlib2FyZCcpO1xuICAgICAgICBjb25zdCBzaG93S2V5Ym9hcmRCdXR0b25DbGlja2VkID0gKGV2ZW50LnRhcmdldCBhcyBIVE1MRWxlbWVudCk/LmNsYXNzTGlzdC5jb250YWlucygndmlydHVhbC1rZXlib2FyZC1zaG93LWJ1dHRvbicpO1xuXG4gICAgICAgIGNvbnN0IGNvbnRhaW5zS2V5Ym9hcmQgPSBzaW1wbGVLZXlib2FyZEVsZW1lbnQ/LmNvbnRhaW5zKGV2ZW50LnRhcmdldCBhcyBOb2RlKTtcbiAgICAgICAgY29uc3QgY29udGFpbnNFbGVtZW50UmVmID0gdGhpcy5pbnB1dE9yaWdpbj8uY29udGFpbnMoZXZlbnQudGFyZ2V0IGFzIE5vZGUpO1xuICAgICAgICAvLyBjb25zdCBjb250YWluc0ZvY3VzZWRFbGVtZW50ID0gdGhpcy5mb2N1c2VkRWxlbWVudD8uY29udGFpbnMoZXZlbnQudGFyZ2V0IGFzIE5vZGUpO1xuICAgICAgICBjb25zdCBjb250YWluc1Nob3dCdXR0b24gPSB0aGlzLnNob3dLZXlib2FyZEJ1dHRvbkVsZW1lbnQ/LmNvbnRhaW5zKGV2ZW50LnRhcmdldCBhcyBOb2RlKTtcbiAgICAgICAgaWYgKFxuICAgICAgICAgICAgIWNvbnRhaW5zS2V5Ym9hcmQgJiZcbiAgICAgICFjb250YWluc0VsZW1lbnRSZWYgJiZcbiAgICAgIC8vICFjb250YWluc0ZvY3VzZWRFbGVtZW50ICYmXG4gICAgICAhY29udGFpbnNTaG93QnV0dG9uICYmXG4gICAgICAhc2hvd0tleWJvYXJkQnV0dG9uQ2xpY2tlZFxuICAgICAgICApIHtcbiAgICAgICAgICAgIGlmICh0aGlzLmlzQ3JlYXRlZCgpKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5kZXN0cm95KCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgaGFzQXR0YWNoZWQoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLm92ZXJsYXlSZWY/Lmhhc0F0dGFjaGVkKCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSB1cGRhdGVQb3NpdGlvblN0cmF0ZWd5KGlucHV0T3JpZ2luOiBIVE1MSW5wdXRFbGVtZW50LCBmaXhlZEJvdHRvbTogYm9vbGVhbik6IHZvaWQge1xuICAgICAgICB0aGlzLm92ZXJsYXlSZWYudXBkYXRlUG9zaXRpb25TdHJhdGVneSh0aGlzLmdldFBvc2l0aW9uU3RyYXRlZ3koaW5wdXRPcmlnaW4sIGZpeGVkQm90dG9tKSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSB1cGRhdGVTaXplKCk6IHZvaWQge1xuICAgICAgICB0aGlzLm92ZXJsYXlSZWYudXBkYXRlU2l6ZSh0aGlzLmdldE92ZXJsYXlTaXplKCkpO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0UG9zaXRpb25TdHJhdGVneShpbnB1dE9yaWdpbjogSFRNTElucHV0RWxlbWVudCwgZml4ZWRCb3R0b206IGJvb2xlYW4pOiBQb3NpdGlvblN0cmF0ZWd5IHtcbiAgICAgICAgaWYgKGZpeGVkQm90dG9tKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5vdmVybGF5LnBvc2l0aW9uKCkuZ2xvYmFsKCkuY2VudGVySG9yaXpvbnRhbGx5KCkuYm90dG9tKCcwJyk7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBwb2ludFdpdGhEaW1lbnNpb25zOiBQb3NpdGlvblN0cmF0ZWd5T3JpZ2luID0gdGhpcy5jb21wdXRlUG9zaXRpb25TdHJhdGVneU9yaWdpbihpbnB1dE9yaWdpbik7XG5cbiAgICAgICAgcmV0dXJuIHRoaXMub3ZlcmxheVxuICAgICAgICAgICAgLnBvc2l0aW9uKClcbiAgICAgICAgICAgIC5mbGV4aWJsZUNvbm5lY3RlZFRvKHBvaW50V2l0aERpbWVuc2lvbnMpXG4gICAgICAgICAgICAud2l0aEZsZXhpYmxlRGltZW5zaW9ucyhmYWxzZSlcbiAgICAgICAgICAgIC53aXRoTG9ja2VkUG9zaXRpb24odHJ1ZSlcbiAgICAgICAgICAgIC53aXRoUHVzaChmYWxzZSlcbiAgICAgICAgICAgIC53aXRoUG9zaXRpb25zKFtcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIG9yaWdpblg6ICdzdGFydCcsXG4gICAgICAgICAgICAgICAgICAgIG9yaWdpblk6ICdib3R0b20nLFxuICAgICAgICAgICAgICAgICAgICBvdmVybGF5WDogJ3N0YXJ0JyxcbiAgICAgICAgICAgICAgICAgICAgb3ZlcmxheVk6ICd0b3AnLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBvcmlnaW5YOiAnc3RhcnQnLFxuICAgICAgICAgICAgICAgICAgICBvcmlnaW5ZOiAndG9wJyxcbiAgICAgICAgICAgICAgICAgICAgb3ZlcmxheVg6ICdzdGFydCcsXG4gICAgICAgICAgICAgICAgICAgIG92ZXJsYXlZOiAnYm90dG9tJyxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgb3JpZ2luWDogJ2VuZCcsXG4gICAgICAgICAgICAgICAgICAgIG9yaWdpblk6ICdib3R0b20nLFxuICAgICAgICAgICAgICAgICAgICBvdmVybGF5WDogJ2VuZCcsXG4gICAgICAgICAgICAgICAgICAgIG92ZXJsYXlZOiAndG9wJyxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgb3JpZ2luWDogJ2VuZCcsXG4gICAgICAgICAgICAgICAgICAgIG9yaWdpblk6ICd0b3AnLFxuICAgICAgICAgICAgICAgICAgICBvdmVybGF5WDogJ2VuZCcsXG4gICAgICAgICAgICAgICAgICAgIG92ZXJsYXlZOiAnYm90dG9tJyxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgXSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXRPdmVybGF5U2l6ZSgpOiBPdmVybGF5U2l6ZUNvbmZpZyB7XG4gICAgICAgIGNvbnN0IG92ZXJsYXlXaWR0aCA9IHRoaXMubGF5b3V0ID09PSBTeXN0ZWxhYlZpcnR1YWxLZXlib2FyZExheW91dHMubnVtZXJpYyA/ICc0MDBweCcgOiAnMTIwMHB4JztcblxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgd2lkdGg6IG92ZXJsYXlXaWR0aCxcbiAgICAgICAgICAgIG1heFdpZHRoOiBvdmVybGF5V2lkdGgsXG4gICAgICAgICAgICBtaW5XaWR0aDogb3ZlcmxheVdpZHRoLFxuICAgICAgICB9O1xuICAgIH1cblxuICAgIHByaXZhdGUgY29tcHV0ZVBvc2l0aW9uU3RyYXRlZ3lPcmlnaW4oaW5wdXRPcmlnaW46IEhUTUxJbnB1dEVsZW1lbnQpOiBQb3NpdGlvblN0cmF0ZWd5T3JpZ2luIHtcbiAgICAgICAgY29uc3Qgb3ZlcmxheU9mZnNldFggPSB0aGlzLmNvbXB1dGVPdmVybGF5T2Zmc2V0WChpbnB1dE9yaWdpbik7XG4gICAgICAgIGNvbnN0IHsgd2lkdGg6IG92ZXJsYXlXaWR0aFN0cmluZyB9ID0gdGhpcy5nZXRPdmVybGF5U2l6ZSgpO1xuICAgICAgICBjb25zdCBvdmVybGF5V2lkdGggPSBOdW1iZXIoKG92ZXJsYXlXaWR0aFN0cmluZyBhcyBzdHJpbmcpLnJlcGxhY2UoJ3B4JywgJycpKTtcbiAgICAgICAgY29uc3Qge3gsIHksIHdpZHRoLCBoZWlnaHR9ID0gaW5wdXRPcmlnaW4uZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB3aWR0aCxcbiAgICAgICAgICAgIGhlaWdodCxcbiAgICAgICAgICAgIHg6IHdpZHRoIDwgb3ZlcmxheVdpZHRoID8geCAtIG92ZXJsYXlPZmZzZXRYIDogeCArIG92ZXJsYXlPZmZzZXRYLFxuICAgICAgICAgICAgeSxcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGNvbXB1dGVPdmVybGF5T2Zmc2V0WChpbnB1dE9yaWdpbjogSFRNTElucHV0RWxlbWVudCk6IG51bWJlciB7XG4gICAgICAgIGNvbnN0IHsgd2lkdGg6IG92ZXJsYXlXaWR0aFN0cmluZyB9ID0gdGhpcy5nZXRPdmVybGF5U2l6ZSgpO1xuICAgICAgICBjb25zdCBvdmVybGF5V2lkdGggPSBOdW1iZXIoKG92ZXJsYXlXaWR0aFN0cmluZyBhcyBzdHJpbmcpLnJlcGxhY2UoJ3B4JywgJycpKTtcbiAgICAgICAgY29uc3QgaW5wdXRXaWR0aCA9IGlucHV0T3JpZ2luLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLndpZHRoO1xuXG4gICAgICAgIGNvbnN0IGV4dHJhV2lkdGggPSBvdmVybGF5V2lkdGggLSBpbnB1dFdpZHRoO1xuXG4gICAgICAgIHJldHVybiBNYXRoLmFicyhleHRyYVdpZHRoKSAvIDI7XG4gICAgfVxufVxuIl19
|
|
@@ -31,6 +31,7 @@ export class SystelabVirtualKeyboardComponent {
|
|
|
31
31
|
this.selectedLayout = SystelabVirtualKeyboardLayouts.default;
|
|
32
32
|
this.caretPosition = null;
|
|
33
33
|
this.caretPositionEnd = null;
|
|
34
|
+
this.shiftPressed = false;
|
|
34
35
|
this.closePanel = new EventEmitter();
|
|
35
36
|
}
|
|
36
37
|
ngAfterViewInit() {
|
|
@@ -108,6 +109,7 @@ export class SystelabVirtualKeyboardComponent {
|
|
|
108
109
|
let keyboardOptions = {
|
|
109
110
|
onKeyPress: (button) => this.handleKeyPress(button),
|
|
110
111
|
mergeDisplay: true,
|
|
112
|
+
theme: 'hg-theme-default hg-layout-default myTheme',
|
|
111
113
|
display: {
|
|
112
114
|
[SystelabVirtualKeyboardButton.Backspace]: 'delete',
|
|
113
115
|
},
|
|
@@ -151,7 +153,8 @@ export class SystelabVirtualKeyboardComponent {
|
|
|
151
153
|
button = new DOMParser().parseFromString(button, 'text/html').body.textContent;
|
|
152
154
|
}
|
|
153
155
|
if (button === SystelabVirtualKeyboardButton.Shift || button === SystelabVirtualKeyboardButton.Lock) {
|
|
154
|
-
this.
|
|
156
|
+
this.shiftPressed = button === SystelabVirtualKeyboardButton.Shift;
|
|
157
|
+
this.toggleShiftLayout();
|
|
155
158
|
}
|
|
156
159
|
else if (button === SystelabVirtualKeyboardButton.Done) {
|
|
157
160
|
this.closePanel.emit();
|
|
@@ -168,6 +171,10 @@ export class SystelabVirtualKeyboardComponent {
|
|
|
168
171
|
}
|
|
169
172
|
}
|
|
170
173
|
this.dispatchEvents(button);
|
|
174
|
+
if (this.shiftPressed) {
|
|
175
|
+
this.toggleShiftLayout();
|
|
176
|
+
}
|
|
177
|
+
this.shiftPressed = button === SystelabVirtualKeyboardButton.Shift;
|
|
171
178
|
}
|
|
172
179
|
handleButtonOutput(button) {
|
|
173
180
|
const commonParams = this.getCommonParams();
|
|
@@ -245,9 +252,9 @@ export class SystelabVirtualKeyboardComponent {
|
|
|
245
252
|
}
|
|
246
253
|
return { key, code };
|
|
247
254
|
}
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
255
|
+
toggleShiftLayout() {
|
|
256
|
+
const currentLayout = this.keyboard.options.layoutName;
|
|
257
|
+
const selectedLayout = currentLayout === SystelabVirtualKeyboardLayouts.default ? SystelabVirtualKeyboardLayouts.shift : SystelabVirtualKeyboardLayouts.default;
|
|
251
258
|
this.setLayout(selectedLayout);
|
|
252
259
|
}
|
|
253
260
|
isStandardButton(button) {
|
|
@@ -300,8 +307,8 @@ export class SystelabVirtualKeyboardComponent {
|
|
|
300
307
|
return output;
|
|
301
308
|
}
|
|
302
309
|
/*
|
|
303
|
-
|
|
304
|
-
|
|
310
|
+
* CARET METHODS
|
|
311
|
+
* */
|
|
305
312
|
caretEventHandler(event) {
|
|
306
313
|
let targetTagName = '';
|
|
307
314
|
if (event.target.tagName) {
|
|
@@ -361,11 +368,11 @@ export class SystelabVirtualKeyboardComponent {
|
|
|
361
368
|
this.caretPositionEnd = endPosition;
|
|
362
369
|
}
|
|
363
370
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.9", ngImport: i0, type: SystelabVirtualKeyboardComponent, deps: [{ token: i0.ElementRef }, { token: VIRTUAL_KEYBOARD_CONFIG, optional: true }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
364
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.0.9", type: SystelabVirtualKeyboardComponent, isStandalone: true, selector: "systelab-virtual-keyboard.component", outputs: { closePanel: "closePanel" }, host: { listeners: { "window:keyup": "handleKeyUp($event)", "window:pointerup": "handleMouseUp($event)", "window:select": "handleSelect($event)", "window:selectionchange": "handleSelectionChange($event)" } }, ngImport: i0, template: "<!--\n ~ Copyright (c) 2020 - 2024 - Instrumentation Laboratory Company and Systelab Technologies, SA. All rights reserved.\n ~ NOTICE: All information contained herein is and remains the property of Instrumentation Laboratory Company and its\n ~ affiliates, if any. The intellectual and technical concepts contained herein are proprietary to Instrumentation\n ~ Laboratory Company and its affiliates and may be covered by U.S. and foreign patents and patent applications, and/or\n ~ are protected by trade secret or copyright law. Dissemination of this information or reproduction of this material is\n ~ strictly forbidden unless prior written permission is Instrumentation Laboratory Company.\n -->\n\n<div class=\"simple-keyboard\"></div>\n", styles: [":host{width:100%}\n"] }); }
|
|
371
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.0.9", type: SystelabVirtualKeyboardComponent, isStandalone: true, selector: "systelab-virtual-keyboard.component", outputs: { closePanel: "closePanel" }, host: { listeners: { "window:keyup": "handleKeyUp($event)", "window:pointerup": "handleMouseUp($event)", "window:select": "handleSelect($event)", "window:selectionchange": "handleSelectionChange($event)" } }, ngImport: i0, template: "<!--\n ~ Copyright (c) 2020 - 2024 - Instrumentation Laboratory Company and Systelab Technologies, SA. All rights reserved.\n ~ NOTICE: All information contained herein is and remains the property of Instrumentation Laboratory Company and its\n ~ affiliates, if any. The intellectual and technical concepts contained herein are proprietary to Instrumentation\n ~ Laboratory Company and its affiliates and may be covered by U.S. and foreign patents and patent applications, and/or\n ~ are protected by trade secret or copyright law. Dissemination of this information or reproduction of this material is\n ~ strictly forbidden unless prior written permission is Instrumentation Laboratory Company.\n -->\n\n<div class=\"simple-keyboard\"></div>\n", styles: [":host{width:100%}.simple-keyboard.hg-theme-default.myTheme{font-family:Lato,HelveticaNeue-Light,Helvetica Neue Light,Helvetica Neue,Helvetica,Arial,Lucida Grande,sans-serif}\n"] }); }
|
|
365
372
|
}
|
|
366
373
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.9", ngImport: i0, type: SystelabVirtualKeyboardComponent, decorators: [{
|
|
367
374
|
type: Component,
|
|
368
|
-
args: [{ selector: 'systelab-virtual-keyboard.component', standalone: true, imports: [], template: "<!--\n ~ Copyright (c) 2020 - 2024 - Instrumentation Laboratory Company and Systelab Technologies, SA. All rights reserved.\n ~ NOTICE: All information contained herein is and remains the property of Instrumentation Laboratory Company and its\n ~ affiliates, if any. The intellectual and technical concepts contained herein are proprietary to Instrumentation\n ~ Laboratory Company and its affiliates and may be covered by U.S. and foreign patents and patent applications, and/or\n ~ are protected by trade secret or copyright law. Dissemination of this information or reproduction of this material is\n ~ strictly forbidden unless prior written permission is Instrumentation Laboratory Company.\n -->\n\n<div class=\"simple-keyboard\"></div>\n", styles: [":host{width:100%}\n"] }]
|
|
375
|
+
args: [{ selector: 'systelab-virtual-keyboard.component', standalone: true, imports: [], template: "<!--\n ~ Copyright (c) 2020 - 2024 - Instrumentation Laboratory Company and Systelab Technologies, SA. All rights reserved.\n ~ NOTICE: All information contained herein is and remains the property of Instrumentation Laboratory Company and its\n ~ affiliates, if any. The intellectual and technical concepts contained herein are proprietary to Instrumentation\n ~ Laboratory Company and its affiliates and may be covered by U.S. and foreign patents and patent applications, and/or\n ~ are protected by trade secret or copyright law. Dissemination of this information or reproduction of this material is\n ~ strictly forbidden unless prior written permission is Instrumentation Laboratory Company.\n -->\n\n<div class=\"simple-keyboard\"></div>\n", styles: [":host{width:100%}.simple-keyboard.hg-theme-default.myTheme{font-family:Lato,HelveticaNeue-Light,Helvetica Neue Light,Helvetica Neue,Helvetica,Arial,Lucida Grande,sans-serif}\n"] }]
|
|
369
376
|
}], ctorParameters: () => [{ type: i0.ElementRef }, { type: undefined, decorators: [{
|
|
370
377
|
type: Optional
|
|
371
378
|
}, {
|
|
@@ -386,4 +393,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.9", ngImpor
|
|
|
386
393
|
}], closePanel: [{
|
|
387
394
|
type: Output
|
|
388
395
|
}] } });
|
|
389
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3lzdGVsYWItdmlydHVhbC1rZXlib2FyZC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9zeXN0ZWxhYi12aXJ0dWFsLWtleWJvYXJkL3NyYy9saWIvc3lzdGVsYWItdmlydHVhbC1rZXlib2FyZC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi9wcm9qZWN0cy9zeXN0ZWxhYi12aXJ0dWFsLWtleWJvYXJkL3NyYy9saWIvc3lzdGVsYWItdmlydHVhbC1rZXlib2FyZC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUwsU0FBUyxFQUVULFlBQVksRUFDWixZQUFZLEVBQ1osTUFBTSxFQUNOLFFBQVEsRUFDUixNQUFNLEVBQ1AsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ2pELE9BQU8sRUFDTCw2QkFBNkIsRUFDN0IsbUNBQW1DLEVBQ25DLGlDQUFpQyxFQUNqQyw4QkFBOEIsRUFDL0IsTUFBTSxhQUFhLENBQUM7QUFDckIsT0FBTyxFQUFpQyx1QkFBdUIsRUFBRSxNQUFNLG9DQUFvQyxDQUFDOztBQVU1RyxNQUFNLE9BQU8sZ0NBQWdDO0lBRTNDLFdBQVcsQ0FBQyxLQUFvQjtRQUM5QixJQUFJLEtBQUssQ0FBQyxTQUFTLEVBQUU7WUFDbkIsSUFBSSxDQUFDLGlCQUFpQixDQUFDLEtBQUssQ0FBQyxDQUFDO1NBQy9CO0lBQ0gsQ0FBQztJQUdELGFBQWEsQ0FBQyxLQUFtQjtRQUMvQixJQUFJLENBQUMsaUJBQWlCLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDaEMsQ0FBQztJQUdELFlBQVksQ0FBQyxLQUFZO1FBQ3ZCLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNoQyxDQUFDO0lBR0QscUJBQXFCLENBQUMsS0FBWTtRQUNoQyxJQUFJLENBQUMsaUJBQWlCLENB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V0FBVyxDQUFDO0lBQ3RDLENBQUM7OEdBdlpVLGdDQUFnQyw0Q0F3Q3VDLHVCQUF1QjtrR0F4QzlGLGdDQUFnQyx1VkMzQjdDLG12QkFVQTs7MkZEaUJhLGdDQUFnQztrQkFQNUMsU0FBUzsrQkFDRSxxQ0FBcUMsY0FDbkMsSUFBSSxXQUNQLEVBQUU7OzBCQTRDb0QsUUFBUTs7MEJBQUksTUFBTTsyQkFBQyx1QkFBdUI7eUNBdEN6RyxXQUFXO3NCQURWLFlBQVk7dUJBQUMsY0FBYyxFQUFFLENBQUMsUUFBUSxDQUFDO2dCQVF4QyxhQUFhO3NCQURaLFlBQVk7dUJBQUMsa0JBQWtCLEVBQUUsQ0FBQyxRQUFRLENBQUM7Z0JBTTVDLFlBQVk7c0JBRFgsWUFBWTt1QkFBQyxlQUFlLEVBQUUsQ0FBQyxRQUFRLENBQUM7Z0JBTXpDLHFCQUFxQjtzQkFEcEIsWUFBWTt1QkFBQyx3QkFBd0IsRUFBRSxDQUFDLFFBQVEsQ0FBQztnQkFvQnhDLFVBQVU7c0JBQW5CLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBBZnRlclZpZXdJbml0LFxuICBDb21wb25lbnQsXG4gIEVsZW1lbnRSZWYsXG4gIEV2ZW50RW1pdHRlcixcbiAgSG9zdExpc3RlbmVyLFxuICBJbmplY3QsXG4gIE9wdGlvbmFsLFxuICBPdXRwdXRcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBTaW1wbGVLZXlib2FyZCB9IGZyb20gJ3NpbXBsZS1rZXlib2FyZCc7XG5pbXBvcnQge1xuICBTeXN0ZWxhYlZpcnR1YWxLZXlib2FyZEJ1dHRvbixcbiAgU3lzdGVsYWJWaXJ0dWFsS2V5Ym9hcmRJbnB1dE1ldGhvZHMsXG4gIFN5c3RlbGFiVmlydHVhbEtleWJvYXJkSW5wdXRUeXBlcyxcbiAgU3lzdGVsYWJWaXJ0dWFsS2V5Ym9hcmRMYXlvdXRzXG59IGZyb20gJy4vY29uc3RhbnRzJztcbmltcG9ydCB7IFN5c3RlbGFiVmlydHVhbEtleWJvYXJkQ29uZmlnLCBWSVJUVUFMX0tFWUJPQVJEX0NPTkZJRyB9IGZyb20gJy4vc3lzdGVsYWItdmlydHVhbC1rZXlib2FyZC5jb25maWcnO1xuaW1wb3J0IHsgS2V5Ym9hcmRPcHRpb25zIH0gZnJvbSAnc2ltcGxlLWtleWJvYXJkL2J1aWxkL2ludGVyZmFjZXMnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdzeXN0ZWxhYi12aXJ0dWFsLWtleWJvYXJkLmNvbXBvbmVudCcsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtdLFxuICB0ZW1wbGF0ZVVybDogJy4vc3lzdGVsYWItdmlydHVhbC1rZXlib2FyZC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsOiAnc3lzdGVsYWItdmlydHVhbC1rZXlib2FyZC5jb21wb25lbnQuc2NzcycsXG59KVxuZXhwb3J0IGNsYXNzIFN5c3RlbGFiVmlydHVhbEtleWJvYXJkQ29tcG9uZW50IGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCB7XG4gIEBIb3N0TGlzdGVuZXIoJ3dpbmRvdzprZXl1cCcsIFsnJGV2ZW50J10pXG4gIGhhbmRsZUtleVVwKGV2ZW50OiBLZXlib2FyZEV2ZW50KTogdm9pZCB7XG4gICAgaWYgKGV2ZW50LmlzVHJ1c3RlZCkge1xuICAgICAgdGhpcy5jYXJldEV2ZW50SGFuZGxlcihldmVudCk7XG4gICAgfVxuICB9XG5cbiAgQEhvc3RMaXN0ZW5lcignd2luZG93OnBvaW50ZXJ1cCcsIFsnJGV2ZW50J10pXG4gIGhhbmRsZU1vdXNlVXAoZXZlbnQ6IFBvaW50ZXJFdmVudCk6IHZvaWQge1xuICAgIHRoaXMuY2FyZXRFdmVudEhhbmRsZXIoZXZlbnQpO1xuICB9XG5cbiAgQEhvc3RMaXN0ZW5lcignd2luZG93OnNlbGVjdCcsIFsnJGV2ZW50J10pXG4gIGhhbmRsZVNlbGVjdChldmVudDogRXZlbnQpOiB2b2lkIHtcbiAgICB0aGlzLmNhcmV0RXZlbnRIYW5kbGVyKGV2ZW50KTtcbiAgfVxuXG4gIEBIb3N0TGlzdGVuZXIoJ3dpbmRvdzpzZWxlY3Rpb25jaGFuZ2UnLCBbJyRldmVudCddKVxuICBoYW5kbGVTZWxlY3Rpb25DaGFuZ2UoZXZlbnQ6IEV2ZW50KTogdm9pZCB7XG4gICAgdGhpcy5jYXJldEV2ZW50SGFuZGxlcihldmVudCk7XG4gIH1cblxuICBnZXQgbWF4TGVuZ3RoKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuYWN0aXZlSW5wdXRFbGVtZW50Py5tYXhMZW5ndGggPz8gLTE7XG4gIH1cblxuICBnZXQgaXNUZXh0YXJlYSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5hY3RpdmVJbnB1dEVsZW1lbnQ/LnR5cGUgPT09ICd0ZXh0YXJlYSc7XG4gIH1cblxuICBwdWJsaWMgZGVidWcgPSBmYWxzZTtcbiAgcHJpdmF0ZSBzZWxlY3RlZExheW91dDogU3lzdGVsYWJWaXJ0dWFsS2V5Ym9hcmRMYXlvdXRzID0gU3lzdGVsYWJWaXJ0dWFsS2V5Ym9hcmRMYXlvdXRzLmRlZmF1bHQ7XG4gIHByaXZhdGUga2V5Ym9hcmQ6IFNpbXBsZUtleWJvYXJkO1xuICBwcml2YXRlIGNhcmV0UG9zaXRpb246IG51bWJlciB8IG51bGwgPSBudWxsO1xuICBwcml2YXRlIGNhcmV0UG9zaXRpb25FbmQ6IG51bWJlciB8IG51bGwgPSBudWxsO1xuICBwcml2YXRlIGFjdGl2ZUlucHV0RWxlbWVudCE6IEhUTUxJbnB1dEVsZW1lbnQgfCBIVE1MVGV4dEFyZWFFbGVtZW50IHwgbnVsbDtcblxuICBAT3V0cHV0KCkgY2xvc2VQYW5lbCA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGVsZW1lbnRSZWY6IEVsZW1lbnRSZWY8SFRNTElucHV0RWxlbWVudD4sIEBPcHRpb25hbCgpIEBJbmplY3QoVklSVFVBTF9LRVlCT0FSRF9DT05GSUcpIHByaXZhdGUgdmlydHVhbEtleWJvYXJkQ29uZmlnOiBTeXN0ZWxhYlZpcnR1YWxLZXlib2FyZENvbmZpZywpIHt9XG5cbiAgbmdBZnRlclZpZXdJbml0KCkge1xuICAgIGNvbnN0IGxheW91dCA9IHtcbiAgICAgIFtTeXN0ZWxhYlZpcnR1YWxLZXlib2FyZExheW91dHMuZGVmYXVsdF06IFtcbiAgICAgICAgJ2AgMSAyIDMgNCA1IDYgNyA4IDkgMCAtID0ge2Jrc3B9JyxcbiAgICAgICAgJ3t0YWJ9IHEgdyBlIHIgdCB5IHUgaSBvIHAgWyBdIFxcXFwnLFxuICAgICAgICBcIntsb2NrfSBhIHMgZCBmIGcgaCBqIGsgbCA7ICcge2VudGVyfVwiLFxuICAgICAgICAne3NoaWZ0fSB6IHggYyB2IGIgbiBtICwgLiAvIHtzaGlmdH0nLFxuICAgICAgICAne3NwYWNlfScsXG4gICAgICBdLFxuICAgICAgW1N5c3RlbGFiVmlydHVhbEtleWJvYXJkTGF5b3V0cy5zaGlmdF06IFtcbiAgICAgICAgJ34gISBAICMgJCAlIF4gJmFtcDsgKiAoICkgXyArIHtia3NwfScsXG4gICAgICAgICd7dGFifSBRIFcgRSBSIFQgWSBVIEkgTyBQIHsgfSB8JyxcbiAgICAgICAgJ3tsb2NrfSBBIFMgRCBGIEcgSCBKIEsgTCA6IFwiIHtlbnRlcn0nLFxuICAgICAgICAne3NoaWZ0fSBaIFggQyBWIEIgTiBNICZsdDsgJmd0OyA/IHtzaGlmdH0nLFxuICAgICAgICAne3NwYWNlfScsXG4gICAgICBdLFxuICAgICAgW1N5c3RlbGFiVmlydHVhbEtleWJvYXJkTGF5b3V0cy5udW1lcmljXTogWyc3IDggOScsICc0IDUgNicsICcxIDIgMycsICcwIHtia3NwfSddLFxuICAgIH07XG5cbiAgICBjb25zdCBrZXlib2FyZE9wdGlvbnM6IEtleWJvYXJkT3B0aW9ucyA9IHRoaXMucHJlcGFyZUtleWJvYXJkQ29uZmlnKCk7XG4gICAgdGhpcy5rZXlib2FyZCA9IG5ldyBTaW1wbGVLZXlib2FyZCgnLnNpbXBsZS1rZXlib2FyZCcsIGtleWJvYXJkT3B0aW9ucyk7XG4gICAgdGhpcy5zZXRMYXlvdXQodGhpcy5zZWxlY3RlZExheW91dCk7XG4gICAgaWYgKHRoaXMuZGVidWcpIHtcbiAgICAgIGNvbnNvbGUubG9nKCdMYXlvdXQ6ICcsIGxheW91dCk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIHNldEFjdGl2ZUlucHV0KGlucHV0OiBIVE1MSW5wdXRFbGVtZW50IHwgSFRNTFRleHRBcmVhRWxlbWVudCk6IHZvaWQge1xuICAgIHRoaXMuYWN0aXZlSW5wdXRFbGVtZW50ID0gaW5wdXQ7XG5cbiAgICBpZiAodGhpcy5kZWJ1Zykge1xuICAgICAgY29uc3QgaW5wdXRUeXBlID0gdGhpcy5hY3RpdmVJbnB1dEVsZW1lbnQ/LnR5cGU7XG4gICAgICBjb25zb2xlLmxvZygnTGF5b3V0OicsIGAke2lucHV0VHlwZX1fJHt0aGlzLnNlbGVjdGVkTGF5b3V0fWApO1xuICAgIH1cblxuICAgIGxldCBzZWxlY3Rpb25TdGFydDogbnVtYmVyO1xuICAgIGxldCBzZWxlY3Rpb25FbmQ6IG51bWJlcjtcbiAgICBpZiAodGhpcy5pc0lucHV0TnVtZXJpYyhpbnB1dCkpIHtcbiAgICAgIHNlbGVjdGlvblN0YXJ0ID0gdGhpcy5hY3RpdmVJbnB1dEVsZW1lbnQudmFsdWUudG9TdHJpbmcoKS5sZW5ndGg7XG4gICAgICBzZWxlY3Rpb25FbmQgPSB0aGlzLmFjdGl2ZUlucHV0RWxlbWVudC52YWx1ZS50b1N0cmluZygpLmxlbmd0aDtcbiAgICB9IGVsc2Uge1xuICAgICAgc2VsZWN0aW9uU3RhcnQgPSB0aGlzLmFjdGl2ZUlucHV0RWxlbWVudC5zZWxlY3Rpb25TdGFydDtcbiAgICAgIHNlbGVjdGlvbkVuZCA9IHRoaXMuYWN0aXZlSW5wdXRFbGVtZW50LnNlbGVjdGlvbkVuZDtcbiAgICB9XG5cbiAgICB0aGlzLnNldENhcmV0UG9zaXRpb24oc2VsZWN0aW9uU3RhcnQsIHNlbGVjdGlvbkVuZCk7XG5cbiAgICBpZiAodGhpcy5kZWJ1Zykge1xuICAgICAgY29uc29sZS5sb2coJ0NhcmV0IHN0YXJ0IGF0OicsIHRoaXMuY2FyZXRQb3NpdGlvbiwgdGhpcy5jYXJldFBvc2l0aW9uRW5kKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgc2V0TGF5b3V0KGxheW91dDogU3lzdGVsYWJWaXJ0dWFsS2V5Ym9hcmRMYXlvdXRzKTogdm9pZCB7XG4gICAgdGhpcy5zZWxlY3RlZExheW91dCA9IGxheW91dDtcbiAgICBpZiAodGhpcy5rZXlib2FyZCkge1xuICAgICAgdGhpcy5rZXlib2FyZC5zZXRPcHRpb25zKHtcbiAgICAgICAgbGF5b3V0TmFtZTogbGF5b3V0LFxuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBwcmVwYXJlS2V5Ym9hcmRDb25maWcoKTogS2V5Ym9hcmRPcHRpb25zIHtcbiAgICBjb25zdCBsYXlvdXQgPSB7XG4gICAgICBbU3lzdGVsYWJWaXJ0dWFsS2V5Ym9hcmRMYXlvdXRzLmRlZmF1bHRdOiBbXG4gICAgICAgICdgIDEgMiAzIDQgNSA2IDcgOCA5IDAgLSA9IHtia3NwfScsXG4gICAgICAgICd7dGFifSBxIHcgZSByIHQgeSB1IGkgbyBwIFsgXSBcXFxcJyxcbiAgICAgICAgXCJ7bG9ja30gYSBzIGQgZiBnIGggaiBrIGwgOyAnIHtlbnRlcn1cIixcbiAgICAgICAgJ3tzaGlmdH0geiB4IGMgdiBiIG4gbSAsIC4gLyB7c2hpZnR9JyxcbiAgICAgICAgJ3tzcGFjZX0nLFxuICAgICAgXSxcbiAgICAgIFtTeXN0ZWxhYlZpcnR1YWxLZXlib2FyZExheW91dHMuc2hpZnRdOiBbXG4gICAgICAgICd+ICEgQCAjICQgJSBeICZhbXA7ICogKCApIF8gKyB7YmtzcH0nLFxuICAgICAgICAne3RhYn0gUSBXIEUgUiBUIFkgVSBJIE8gUCB7IH0gfCcsXG4gICAgICAgICd7bG9ja30gQSBTIEQgRiBHIEggSiBLIEwgOiBcIiB7ZW50ZXJ9JyxcbiAgICAgICAgJ3tzaGlmdH0gWiBYIEMgViBCIE4gTSAmbHQ7ICZndDsgPyB7c2hpZnR9JyxcbiAgICAgICAgJ3tzcGFjZX0nLFxuICAgICAgXSxcbiAgICAgIFtTeXN0ZWxhYlZpcnR1YWxLZXlib2FyZExheW91dHMubnVtZXJpY106IFsnNyA4IDknLCAnNCA1IDYnLCAnMSAyIDMnLCAnMCB7YmtzcH0nXSxcbiAgICB9O1xuXG4gICAgbGV0IGtleWJvYXJkT3B0aW9uczogS2V5Ym9hcmRPcHRpb25zID0ge1xuICAgICAgb25LZXlQcmVzczogKGJ1dHRvbikgPT4gdGhpcy5oYW5kbGVLZXlQcmVzcyhidXR0b24pLFxuICAgICAgbWVyZ2VEaXNwbGF5OiB0cnVlLFxuICAgICAgZGlzcGxheToge1xuICAgICAgICBbU3lzdGVsYWJWaXJ0dWFsS2V5Ym9hcmRCdXR0b24uQmFja3NwYWNlXTogJ2RlbGV0ZScsXG4gICAgICB9LFxuICAgICAgYnV0dG9uVGhlbWU6IFtcbiAgICAgICAge1xuICAgICAgICAgIGNsYXNzOiAndmlydHVhbC1rZXlib2FyZC1kZWxldGUtYnV0dG9uJyxcbiAgICAgICAgICBidXR0b25zOiBgJHtTeXN0ZWxhYlZpcnR1YWxLZXlib2FyZEJ1dHRvbi5CYWNrc3BhY2V9YCxcbiAgICAgICAgfSxcbiAgICAgIF0sXG4gICAgICBsYXlvdXQsXG4gICAgfTtcblxuICAgIGlmICh0aGlzLnZpcnR1YWxLZXlib2FyZENvbmZpZz8uaGFzT3duUHJvcGVydHkoJ2lucHV0TWV0aG9kJykpIHtcbiAgICAgIGlmICh0aGlzLnZpcnR1YWxLZXlib2FyZENvbmZpZy5pbnB1dE1ldGhvZCA9PT0gU3lzdGVsYWJWaXJ0dWFsS2V5Ym9hcmRJbnB1dE1ldGhvZHMub25seU1vdXNlRXZlbnRzKSB7XG4gICAgICAgIGtleWJvYXJkT3B0aW9ucyA9IHtcbiAgICAgICAgICAuLi5rZXlib2FyZE9wdGlvbnMsXG4gICAgICAgICAgdXNlTW91c2VFdmVudHM6IHRydWUsXG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAodGhpcy52aXJ0dWFsS2V5Ym9hcmRDb25maWcuaW5wdXRNZXRob2QgPT09IFN5c3RlbGFiVmlydHVhbEtleWJvYXJkSW5wdXRNZXRob2RzLm9ubHlUb3VjaEV2ZW50cykge1xuICAgICAgICBrZXlib2FyZE9wdGlvbnMgPSB7XG4gICAgICAgICAgLi4ua2V5Ym9hcmRPcHRpb25zLFxuICAgICAgICAgIHVzZVRvdWNoRXZlbnRzOiB0cnVlLFxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGtleWJvYXJkT3B0aW9ucztcbiAgfVxuXG4gIHByaXZhdGUgaXNJbnB1dEFscGhhYmV0aWMoYWN0aXZlSW5wdXRFbGVtZW50OiBIVE1MSW5wdXRFbGVtZW50IHwgSFRNTFRleHRBcmVhRWxlbWVudCk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IGlucHV0VHlwZSA9IGFjdGl2ZUlucHV0RWxlbWVudD8udHlwZTtcbiAgICByZXR1cm4gaW5wdXRUeXBlICYmIFtTeXN0ZWxhYlZpcnR1YWxLZXlib2FyZElucHV0VHlwZXMudGV4dCwgU3lzdGVsYWJWaXJ0dWFsS2V5Ym9hcmRJbnB1dFR5cGVzLnBhc3N3b3JkXS5zb21lKChpKSA9PiBpID09PSBpbnB1dFR5cGUpO1xuICB9XG5cbiAgcHJpdmF0ZSBpc0lucHV0TnVtZXJpYyhhY3RpdmVJbnB1dEVsZW1lbnQ6IEhUTUxJbnB1dEVsZW1lbnQgfCBIVE1MVGV4dEFyZWFFbGVtZW50KTogYm9vbGVhbiB7XG4gICAgY29uc3QgaW5wdXRUeXBlID0gYWN0aXZlSW5wdXRFbGVtZW50Py50eXBlO1xuICAgIHJldHVybiBpbnB1dFR5cGUgJiYgW1N5c3RlbGFiVmlydHVhbEtleWJvYXJkSW5wdXRUeXBlcy5udW1iZXJdLnNvbWUoKGkpID0+IGkgPT09IGlucHV0VHlwZSk7XG4gIH1cblxuICBwcml2YXRlIGhhbmRsZUtleVByZXNzKGJ1dHRvbjogc3RyaW5nLCBlPzogRXZlbnQpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5kZWJ1Zykge1xuICAgICAgY29uc29sZS5sb2coJ0tleSBwcmVzczonLCBidXR0b24pO1xuICAgIH1cblxuICAgIGlmIChidXR0b25bMF0gPT09ICcmJyAmJiBidXR0b24ubGVuZ3RoID4gMSkge1xuICAgICAgYnV0dG9uID0gbmV3IERPTVBhcnNlcigpLnBhcnNlRnJvbVN0cmluZyhidXR0b24sICd0ZXh0L2h0bWwnKS5ib2R5LnRleHRDb250ZW50O1xuICAgIH1cblxuICAgIGlmIChidXR0b24gPT09IFN5c3RlbGFiVmlydHVhbEtleWJvYXJkQnV0dG9uLlNoaWZ0IHx8IGJ1dHRvbiA9PT0gU3lzdGVsYWJWaXJ0dWFsS2V5Ym9hcmRCdXR0b24uTG9jaykge1xuICAgICAgdGhpcy50b2dnbGVTaGlmdCgpO1xuICAgIH0gZWxzZSBpZiAoYnV0dG9uID09PSBTeXN0ZWxhYlZpcnR1YWxLZXlib2FyZEJ1dHRvbi5Eb25lKSB7XG4gICAgICB0aGlzLmNsb3NlUGFuZWwuZW1pdCgpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmICghdGhpcy5pc0FjY2VwdGVkTm9uU3RhbmRhcmRCdXR0b24oYnV0dG9uKSAmJiAhdGhpcy5pc1N0YW5kYXJkQnV0dG9uKGJ1dHRvbikpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBvdXRwdXQgPSB0aGlzLmhhbmRsZUJ1dHRvbk91dHB1dChidXR0b24pO1xuXG4gICAgaWYgKHRoaXMuYWN0aXZlSW5wdXRFbGVtZW50KSB7XG4gICAgICB0aGlzLmFjdGl2ZUlucHV0RWxlbWVudC52YWx1ZSA9IG91dHB1dDtcblxuICAgICAgaWYgKHRoaXMuZGVidWcpIHtcbiAgICAgICAgY29uc29sZS5sb2coJ0NhcmV0IGF0OicsIHRoaXMuY2FyZXRQb3NpdGlvbiwgdGhpcy5jYXJldFBvc2l0aW9uRW5kLCAnQnV0dG9uJywgZSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgdGhpcy5kaXNwYXRjaEV2ZW50cyhidXR0b24pO1xuICB9XG5cbiAgcHJpdmF0ZSBoYW5kbGVCdXR0b25PdXRwdXQoYnV0dG9uOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIGNvbnN0IGNvbW1vblBhcmFtczogW251bWJlciwgbnVtYmVyLCBib29sZWFuXSA9IHRoaXMuZ2V0Q29tbW9uUGFyYW1zKCk7XG4gICAgbGV0IG91dHB1dCA9IHRoaXMuYWN0aXZlSW5wdXRFbGVtZW50Py52YWx1ZSB8fCAnJztcbiAgICBpZiAoIXRoaXMuaXNTdGFuZGFyZEJ1dHRvbihidXR0b24pKSB7XG4gICAgICBpZiAoYnV0dG9uID09PSBTeXN0ZWxhYlZpcnR1YWxLZXlib2FyZEJ1dHRvbi5CYWNrc3BhY2UpIHtcbiAgICAgICAgb3V0cHV0ID0gdGhpcy5yZW1vdmVBdChvdXRwdXQsIC4uLmNvbW1vblBhcmFtcyk7XG4gICAgICB9IGVsc2UgaWYgKGJ1dHRvbiA9PT0gU3lzdGVsYWJWaXJ0dWFsS2V5Ym9hcmRCdXR0b24uU3BhY2UpIHtcbiAgICAgICAgb3V0cHV0ID0gdGhpcy5hZGRTdHJpbmdBdChvdXRwdXQsICcgJywgLi4uY29tbW9uUGFyYW1zKTtcbiAgICAgIH0gZWxzZSBpZiAoYnV0dG9uID09PSBTeXN0ZWxhYlZpcnR1YWxLZXlib2FyZEJ1dHRvbi5UYWIpIHtcbiAgICAgICAgb3V0cHV0ID0gdGhpcy5hZGRTdHJpbmdBdChvdXRwdXQsICdcXHQnLCAuLi5jb21tb25QYXJhbXMpO1xuICAgICAgfSBlbHNlIGlmIChidXR0b24gPT09IFN5c3RlbGFiVmlydHVhbEtleWJvYXJkQnV0dG9uLkVudGVyKSB7XG4gICAgICAgIGlmICh0aGlzLmlzVGV4dGFyZWEpIHtcbiAgICAgICAgICBvdXRwdXQgPSB0aGlzLmFkZFN0cmluZ0F0KG91dHB1dCwgJ1xcbicsIC4uLmNvbW1vblBhcmFtcyk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgb3V0cHV0ID0gdGhpcy5hZGRTdHJpbmdBdChvdXRwdXQsIGJ1dHRvbiwgLi4uY29tbW9uUGFyYW1zKTtcbiAgICB9XG5cbiAgICByZXR1cm4gb3V0cHV0O1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRDb21tb25QYXJhbXMoKTogW251bWJlciwgbnVtYmVyLCBib29sZWFuXSB7XG4gICAgcmV0dXJuIFt0aGlzLmNhcmV0UG9zaXRpb24gfHwgMCwgdGhpcy5jYXJldFBvc2l0aW9uRW5kIHx8IDAsIHRydWVdO1xuICB9XG5cbiAgcHJpdmF0ZSBpc0FjY2VwdGVkTm9uU3RhbmRhcmRCdXR0b24oYnV0dG9uOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICByZXR1cm4gW1xuICAgICAgU3lzdGVsYWJWaXJ0dWFsS2V5Ym9hcmRCdXR0b24uQmFja3NwYWNlLnRvU3RyaW5nKCksXG4gICAgICBTeXN0ZWxhYlZpcnR1YWxLZXlib2FyZEJ1dHRvbi5TcGFjZS50b1N0cmluZygpLFxuICAgICAgU3lzdGVsYWJWaXJ0dWFsS2V5Ym9hcmRCdXR0b24uVGFiLnRvU3RyaW5nKCksXG4gICAgICBTeXN0ZWxhYlZpcnR1YWxLZXlib2FyZEJ1dHRvbi5FbnRlci50b1N0cmluZygpLFxuICAgIF0uaW5jbHVkZXMoYnV0dG9uKTtcbiAgfVxuXG4gIHByaXZhdGUgZGlzcGF0Y2hFdmVudHMoYnV0dG9uOiBzdHJpbmcpIHtcbiAgICBjb25zdCB7IGtleSwgY29kZSB9ID0gdGhpcy5jb252ZXJ0RnJvbUJ1dHRvblRvQ29kZShidXR0b24pO1xuXG4gICAgY29uc3QgZXZlbnRJbml0OiBLZXlib2FyZEV2ZW50SW5pdCA9IHtcbiAgICAgIGJ1YmJsZXM6IHRydWUsXG4gICAgICBjYW5jZWxhYmxlOiB0cnVlLFxuICAgICAgc2hpZnRLZXk6IHRoaXMuc2VsZWN0ZWRMYXlvdXQgPT09IFN5c3RlbGFiVmlydHVhbEtleWJvYXJkTGF5b3V0cy5zaGlmdCxcbiAgICAgIGtleToga2V5LFxuICAgICAgY29kZTogY29kZSxcbiAgICAgIGxvY2F0aW9uOiAwLFxuICAgIH07XG5cbiAgICAvLyBTaW11bGF0ZSBhbGwgbmVlZGVkIGV2ZW50cyBvbiBiYXNlIGVsZW1lbnRcbiAgICB0aGlzLmFjdGl2ZUlucHV0RWxlbWVudD8uZGlzcGF0Y2hFdmVudChuZXcgS2V5Ym9hcmRFdmVudCgna2V5ZG93bicsIGV2ZW50SW5pdCkpO1xuICAgIHRoaXMuYWN0aXZlSW5wdXRFbGVtZW50Py5kaXNwYXRjaEV2ZW50KG5ldyBLZXlib2FyZEV2ZW50KCdrZXlwcmVzcycsIGV2ZW50SW5pdCkpO1xuICAgIHRoaXMuYWN0aXZlSW5wdXRFbGVtZW50Py5kaXNwYXRjaEV2ZW50KG5ldyBFdmVudCgnaW5wdXQnLCB7IGJ1YmJsZXM6IHRydWUgfSkpO1xuICAgIHRoaXMuYWN0aXZlSW5wdXRFbGVtZW50Py5kaXNwYXRjaEV2ZW50KG5ldyBLZXlib2FyZEV2ZW50KCdrZXl1cCcsIGV2ZW50SW5pdCkpO1xuICB9XG5cbiAgLypcbiAgICogQVVYSUxJQVJZIE1FVEhPRFNcbiAgICogKi9cbiAgcHJpdmF0ZSBjb252ZXJ0RnJvbUJ1dHRvblRvQ29kZShidXR0b246IHN0cmluZyk6IHsga2V5OiBzdHJpbmc7IGNvZGU6IHN0cmluZyB9IHtcbiAgICBsZXQga2V5OiBzdHJpbmc7XG4gICAgbGV0IGNvZGU6IHN0cmluZztcbiAgICBpZiAoYnV0dG9uLmluY2x1ZGVzKCd7JykgJiYgYnV0dG9uLmluY2x1ZGVzKCd9JykpIHtcbiAgICAgIC8vIENhcGl0YWxpemUgbmFtZVxuICAgICAga2V5ID0gYnV0dG9uLnNsaWNlKDEsIGJ1dHRvbi5sZW5ndGggLSAxKS50b0xvd2VyQ2FzZSgpO1xuICAgICAga2V5ID0ga2V5LmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgpICsga2V5LnNsaWNlKDEpO1xuICAgICAgY29kZSA9IGtleTtcblxuICAgICAgLy8gRml4IHRvIHN0YW5kYXJkIGtleSBjb2RlXG4gICAgICBpZiAoY29kZS50b0xvd2VyQ2FzZSgpID09PSBTeXN0ZWxhYlZpcnR1YWxLZXlib2FyZEJ1dHRvbi5CYWNrc3BhY2Uuc2xpY2UoMSwgU3lzdGVsYWJWaXJ0dWFsS2V5Ym9hcmRCdXR0b24uQmFja3NwYWNlLmxlbmd0aCAtIDEpLnRvTG93ZXJDYXNlKCkpIHtcbiAgICAgICAgY29kZSA9ICdCYWNrc3BhY2UnO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBrZXkgPSBidXR0b247XG4gICAgICBjb2RlID0gTnVtYmVyLmlzSW50ZWdlcihOdW1iZXIoYnV0dG9uKSkgPyBgRGlnaXQke2J1dHRvbn1gIDogYEtleSR7YnV0dG9uLnRvVXBwZXJDYXNlKCl9YDtcbiAgICB9XG5cbiAgICByZXR1cm4geyBrZXksIGNvZGUgfTtcbiAgfVxuXG4gIHByaXZhdGUgdG9nZ2xlU2hpZnQoKSB7XG4gICAgbGV0IGN1cnJlbnRMYXlvdXQgPSB0aGlzLmtleWJvYXJkLm9wdGlvbnMubGF5b3V0TmFtZTtcbiAgICBsZXQgc2VsZWN0ZWRMYXlvdXQ6IFN5c3RlbGFiVmlydHVhbEtleWJvYXJkTGF5b3V0cyA9XG4gICAgICBjdXJyZW50TGF5b3V0ID09PSBTeXN0ZWxhYlZpcnR1YWxLZXlib2FyZExheW91dHMuZGVmYXVsdCA/IFN5c3RlbGFiVmlydHVhbEtleWJvYXJkTGF5b3V0cy5zaGlmdCA6IFN5c3RlbGFiVmlydHVhbEtleWJvYXJkTGF5b3V0cy5kZWZhdWx0O1xuXG4gICAgdGhpcy5zZXRMYXlvdXQoc2VsZWN0ZWRMYXlvdXQpO1xuICB9XG5cbiAgcHJpdmF0ZSBpc1N0YW5kYXJkQnV0dG9uKGJ1dHRvbjogc3RyaW5nKSB7XG4gICAgcmV0dXJuIGJ1dHRvbiAmJiAhKGJ1dHRvblswXSA9PT0gJ3snICYmIGJ1dHRvbltidXR0b24ubGVuZ3RoIC0gMV0gPT09ICd9Jyk7XG4gIH1cblxuICAvKlxuICAgKiBPVVRQVVQgU1RSSU5HIE1FVEhPRFNcbiAgICogKi9cbiAgcHJpdmF0ZSByZW1vdmVBdChzb3VyY2U6IHN0cmluZywgcG9zaXRpb24gPSBzb3VyY2UubGVuZ3RoLCBwb3NpdGlvbkVuZCA9IHNvdXJjZS5sZW5ndGgsIG1vdmVDYXJldCA9IGZhbHNlKTogc3RyaW5nIHtcbiAgICBpZiAocG9zaXRpb24gPT09IDAgJiYgcG9zaXRpb25FbmQgPT09IDApIHtcbiAgICAgIHJldHVybiBzb3VyY2U7XG4gICAgfVxuXG4gICAgbGV0IG91dHB1dDogc3RyaW5nO1xuXG4gICAgaWYgKHBvc2l0aW9uID09PSBwb3NpdGlvbkVuZCkge1xuICAgICAgaWYgKHBvc2l0aW9uICYmIHBvc2l0aW9uID49IDApIHtcbiAgICAgICAgb3V0cHV0ID0gc291cmNlLnNsaWNlKDAsIHBvc2l0aW9uIC0gMSkgKyBzb3VyY2Uuc2xpY2UocG9zaXRpb24pO1xuICAgICAgICBpZiAobW92ZUNhcmV0KSB7XG4gICAgICAgICAgdGhpcy51cGRhdGVDYXJldFBvc2l0aW9uKDEsIHRydWUpO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBvdXRwdXQgPSBzb3VyY2Uuc2xpY2UoMCwgLTEpO1xuICAgICAgICBpZiAobW92ZUNhcmV0KSB7XG4gICAgICAgICAgdGhpcy51cGRhdGVDYXJldFBvc2l0aW9uKDEsIHRydWUpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIG91dHB1dCA9IHNvdXJjZS5zbGljZSgwLCBwb3NpdGlvbikgKyBzb3VyY2Uuc2xpY2UocG9zaXRpb25FbmQpO1xuICAgICAgaWYgKG1vdmVDYXJldCkge1xuICAgICAgICB0aGlzLnNldENhcmV0UG9zaXRpb24ocG9zaXRpb24pO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBvdXRwdXQ7XG4gIH1cblxuICBwcml2YXRlIGFkZFN0cmluZ0F0KHNvdXJjZTogc3RyaW5nLCBzdHI6IHN0cmluZywgcG9zaXRpb24gPSBzb3VyY2UubGVuZ3RoLCBwb3NpdGlvbkVuZCA9IHNvdXJjZS5sZW5ndGgsIG1vdmVDYXJldCA9IGZhbHNlKTogc3RyaW5nIHtcbiAgICBpZiAodGhpcy5tYXhMZW5ndGggIT09IC0xICYmIHNvdXJjZS5sZW5ndGggPj0gdGhpcy5tYXhMZW5ndGgpIHtcbiAgICAgIHJldHVybiBzb3VyY2U7XG4gICAgfVxuXG4gICAgbGV0IG91dHB1dDogc3RyaW5nO1xuXG4gICAgaWYgKCFwb3NpdGlvbiAmJiBwb3NpdGlvbiAhPT0gMCkge1xuICAgICAgb3V0cHV0ID0gc291cmNlICsgc3RyO1xuICAgIH0gZWxzZSB7XG4gICAgICBvdXRwdXQgPSBbc291cmNlLnNsaWNlKDAsIHBvc2l0aW9uKSwgc3RyLCBzb3VyY2Uuc2xpY2UocG9zaXRpb25FbmQpXS5qb2luKCcnKTtcbiAgICAgIGlmIChtb3ZlQ2FyZXQpIHtcbiAgICAgICAgdGhpcy51cGRhdGVDYXJldFBvc2l0aW9uKHN0ci5sZW5ndGgsIGZhbHNlKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gb3V0cHV0O1xuICB9XG5cbiAgLypcbiAgICogQ0FSRVQgTUVUSE9EU1xuICAgKiAqL1xuICBwcml2YXRlIGNhcmV0RXZlbnRIYW5kbGVyKGV2ZW50OiBhbnkpIHtcbiAgICBsZXQgdGFyZ2V0VGFnTmFtZSA9ICcnO1xuICAgIGlmIChldmVudC50YXJnZXQudGFnTmFtZSkge1xuICAgICAgdGFyZ2V0VGFnTmFtZSA9IGV2ZW50LnRhcmdldC50YWdOYW1lLnRvTG93ZXJDYXNlKCk7XG4gICAgfVxuXG4gICAgY29uc3QgaXNUZXh0SW5wdXQgPVxuICAgICAgdGFyZ2V0VGFnTmFtZSA9PT0gJ3RleHRhcmVhJyB8fFxuICAgICAgKHRhcmdldFRhZ05hbWUgPT09ICdpbnB1dCcgJiYgWyd0ZXh0JywgJ3NlYXJjaCcsICdlbWFpbCcsICdwYXNzd29yZCcsICd1cmwnLCAndGVsJ10uaW5jbHVkZXMoZXZlbnQudGFyZ2V0LnR5cGUpKTtcblxuICAgIGNvbnN0IGlzS2V5Ym9hcmQgPVxuICAgICAgZXZlbnQudGFyZ2V0ID09PSB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCB8fCAoZXZlbnQudGFyZ2V0ICYmIHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LmNvbnRhaW5zKGV2ZW50LnRhcmdldCkpO1xuXG4gICAgaWYgKGlzVGV4dElucHV0ICYmIHRoaXMuYWN0aXZlSW5wdXRFbGVtZW50ID09IGV2ZW50LnRhcmdldCkge1xuICAgICAgLyoqXG4gICAgICAgKiBUcmFja3MgY3VycmVudCBjdXJzb3IgcG9zaXRpb25cbiAgICAgICAqIEFzIGtleXMgYXJlIHByZXNzZWQsIHRleHQgd2lsbCBiZSBhZGRlZC9yZW1vdmVkIGF0IHRoYXQgcG9zaXRpb24gd2l0aGluIHRoZSBpbnB1dC5cbiAgICAgICAqL1xuICAgICAgdGhpcy5zZXRDYXJldFBvc2l0aW9uKGV2ZW50LnRhcmdldC5zZWxlY3Rpb25TdGFydCwgZXZlbnQudGFyZ2V0LnNlbGVjdGlvbkVuZCk7XG5cbiAgICAgIGlmICh0aGlzLmRlYnVnKSB7XG4gICAgICAgIGNvbnNvbGUubG9nKCdDYXJldCBhdDonLCB0aGlzLmNhcmV0UG9zaXRpb24sIHRoaXMuY2FyZXRQb3NpdGlvbkVuZCwgZXZlbnQgJiYgZXZlbnQudGFyZ2V0LnRhZ05hbWUudG9Mb3dlckNhc2UoKSwgZXZlbnQpO1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAoZXZlbnQudHlwZSA9PT0gJ3BvaW50ZXJ1cCcgJiYgdGhpcy5hY3RpdmVJbnB1dEVsZW1lbnQgPT09IGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9IGVsc2UgaWYgKCFpc0tleWJvYXJkICYmIGV2ZW50Py50eXBlICE9PSAnc2VsZWN0aW9uY2hhbmdlJykge1xuICAgICAgLyoqXG4gICAgICAgKiB3ZSBtdXN0IGVuc3VyZSBjYXJldFBvc2l0aW9uIGRvZXNuJ3QgcGVyc2lzdCBvbmNlIHJlYWN0aXZhdGVkLlxuICAgICAgICovXG4gICAgICB0aGlzLnNldENhcmV0UG9zaXRpb24obnVsbCk7XG5cbiAgICAgIGlmICh0aGlzLmRlYnVnKSB7XG4gICAgICAgIGNvbnNvbGUubG9nKGBDYXJldCBwb3NpdGlvbiByZXNldCBkdWUgdG8gXCIke2V2ZW50Py50eXBlfVwiIGV2ZW50YCwgZXZlbnQpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgdXBkYXRlQ2FyZXRQb3NpdGlvbihsZW5ndGg6IG51bWJlciwgbWludXMgPSBmYWxzZSkge1xuICAgIGNvbnN0IG5ld0NhcmV0UG9zID0gdGhpcy5jb21wdXRlTmV3Q2FyZXRQb3NpdGlvbihsZW5ndGgsIG1pbnVzKTtcbiAgICB0aGlzLnNldENhcmV0UG9zaXRpb24obmV3Q2FyZXRQb3MpO1xuICAgIC8vIFNjcm9sbCB0byBib3R0b21cbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIHRoaXMuYWN0aXZlSW5wdXRFbGVtZW50Py5zY3JvbGxUbyh7XG4gICAgICAgIHRvcDogdGhpcy5hY3RpdmVJbnB1dEVsZW1lbnQuc2Nyb2xsSGVpZ2h0LFxuICAgICAgfSBhcyBTY3JvbGxUb09wdGlvbnMpO1xuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBjb21wdXRlTmV3Q2FyZXRQb3NpdGlvbihsZW5ndGg6IG51bWJlciwgbWludXMgPSBmYWxzZSkge1xuICAgIGxldCBjYXJldFBvc2l0aW9uID0gdGhpcy5jYXJldFBvc2l0aW9uO1xuXG4gICAgaWYgKGNhcmV0UG9zaXRpb24gIT0gbnVsbCkge1xuICAgICAgaWYgKG1pbnVzKSB7XG4gICAgICAgIGlmIChjYXJldFBvc2l0aW9uID4gMCkgY2FyZXRQb3NpdGlvbiA9IGNhcmV0UG9zaXRpb24gLSBsZW5ndGg7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjYXJldFBvc2l0aW9uID0gY2FyZXRQb3NpdGlvbiArIGxlbmd0aDtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGNhcmV0UG9zaXRpb247XG4gIH1cblxuICBwcml2YXRlIHNldENhcmV0UG9zaXRpb24ocG9zaXRpb246IG51bWJlciB8IG51bGwsIGVuZFBvc2l0aW9uID0gcG9zaXRpb24pOiB2b2lkIHtcbiAgICB0aGlzLmNhcmV0UG9zaXRpb24gPSBwb3NpdGlvbjtcbiAgICB0aGlzLmNhcmV0UG9zaXRpb25FbmQgPSBlbmRQb3NpdGlvbjtcbiAgfVxufVxuIiwiPCEtLVxuICB+IENvcHlyaWdodCAoYykgMjAyMCAtIDIwMjQgLSBJbnN0cnVtZW50YXRpb24gTGFib3JhdG9yeSBDb21wYW55IGFuZCBTeXN0ZWxhYiBUZWNobm9sb2dpZXMsIFNBLiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICB+IE5PVElDRTogIEFsbCBpbmZvcm1hdGlvbiBjb250YWluZWQgaGVyZWluIGlzIGFuZCByZW1haW5zIHRoZSBwcm9wZXJ0eSBvZiBJbnN0cnVtZW50YXRpb24gTGFib3JhdG9yeSBDb21wYW55IGFuZCBpdHNcbiAgfiBhZmZpbGlhdGVzLCBpZiBhbnkuICBUaGUgaW50ZWxsZWN0dWFsIGFuZCB0ZWNobmljYWwgY29uY2VwdHMgY29udGFpbmVkIGhlcmVpbiBhcmUgcHJvcHJpZXRhcnkgdG8gSW5zdHJ1bWVudGF0aW9uXG4gIH4gTGFib3JhdG9yeSBDb21wYW55IGFuZCBpdHMgYWZmaWxpYXRlcyBhbmQgbWF5IGJlIGNvdmVyZWQgYnkgVS5TLiBhbmQgZm9yZWlnbiBwYXRlbnRzIGFuZCBwYXRlbnQgYXBwbGljYXRpb25zLCBhbmQvb3JcbiAgfiBhcmUgcHJvdGVjdGVkIGJ5IHRyYWRlIHNlY3JldCBvciBjb3B5cmlnaHQgbGF3LiBEaXNzZW1pbmF0aW9uIG9mIHRoaXMgaW5mb3JtYXRpb24gb3IgcmVwcm9kdWN0aW9uIG9mIHRoaXMgbWF0ZXJpYWwgaXNcbiAgfiBzdHJpY3RseSBmb3JiaWRkZW4gdW5sZXNzIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbiBpcyBJbnN0cnVtZW50YXRpb24gTGFib3JhdG9yeSBDb21wYW55LlxuICAtLT5cblxuPGRpdiBjbGFzcz1cInNpbXBsZS1rZXlib2FyZFwiPjwvZGl2PlxuIl19
|
|
396
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3lzdGVsYWItdmlydHVhbC1rZXlib2FyZC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9zeXN0ZWxhYi12aXJ0dWFsLWtleWJvYXJkL3NyYy9saWIvc3lzdGVsYWItdmlydHVhbC1rZXlib2FyZC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi9wcm9qZWN0cy9zeXN0ZWxhYi12aXJ0dWFsLWtleWJvYXJkL3NyYy9saWIvc3lzdGVsYWItdmlydHVhbC1rZXlib2FyZC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUgsU0FBUyxFQUVULFlBQVksRUFDWixZQUFZLEVBQ1osTUFBTSxFQUNOLFFBQVEsRUFDUixNQUFNLEVBQ1QsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ2pELE9BQU8sRUFDSCw2QkFBNkIsRUFDN0IsbUNBQW1DLEVBQ25DLGlDQUFpQyxFQUNqQyw4QkFBOEIsRUFDakMsTUFBTSxhQUFhLENBQUM7QUFDckIsT0FBTyxFQUFpQyx1QkFBdUIsRUFBRSxNQUFNLG9DQUFvQyxDQUFDOztBQVU1RyxNQUFNLE9BQU8sZ0NBQWdDO0lBRXpDLFdBQVcsQ0FBQyxLQUFvQjtRQUM1QixJQUFJLEtBQUssQ0FBQyxTQUFTLEVBQUU7WUFDakIsSUFBSSxDQUFDLGlCQUFpQixDQUFDLEtBQUssQ0FBQyxDQUFDO1NBQ2pDO0lBQ0wsQ0FBQztJQUdELGFBQWEsQ0FBQyxLQUFtQjtRQUM3QixJQUFJLENBQUMsaUJBQWlCLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDbEMsQ0FBQztJQUdELFlBQVksQ0FBQyxLQUFZO1FBQ3JCLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNsQyxDQUFDO0lBR0QscUJBQXFCLENBQUMsS0FBWTtRQUM5QixJQUFJLENBQUMsaUJBQWlCLENB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QUFDO29CQUFFLGFBQWEsR0FBRyxhQUFhLEdBQUcsTUFBTSxDQUFDO2FBQ2pFO2lCQUFNO2dCQUNILGFBQWEsR0FBRyxhQUFhLEdBQUcsTUFBTSxDQUFDO2FBQzFDO1NBQ0o7UUFDRCxPQUFPLGFBQWEsQ0FBQztJQUN6QixDQUFDO0lBRU8sZ0JBQWdCLENBQUMsUUFBdUIsRUFBRSxXQUFXLEdBQUcsUUFBUTtRQUNwRSxJQUFJLENBQUMsYUFBYSxHQUFHLFFBQVEsQ0FBQztRQUM5QixJQUFJLENBQUMsZ0JBQWdCLEdBQUcsV0FBVyxDQUFDO0lBQ3hDLENBQUM7OEdBaGFRLGdDQUFnQyw0Q0F5Q3lDLHVCQUF1QjtrR0F6Q2hHLGdDQUFnQyx1VkMzQjdDLG12QkFVQTs7MkZEaUJhLGdDQUFnQztrQkFQNUMsU0FBUzsrQkFDSSxxQ0FBcUMsY0FDbkMsSUFBSSxXQUNQLEVBQUU7OzBCQTZDb0QsUUFBUTs7MEJBQUksTUFBTTsyQkFBQyx1QkFBdUI7eUNBdkN6RyxXQUFXO3NCQURWLFlBQVk7dUJBQUMsY0FBYyxFQUFFLENBQUMsUUFBUSxDQUFDO2dCQVF4QyxhQUFhO3NCQURaLFlBQVk7dUJBQUMsa0JBQWtCLEVBQUUsQ0FBQyxRQUFRLENBQUM7Z0JBTTVDLFlBQVk7c0JBRFgsWUFBWTt1QkFBQyxlQUFlLEVBQUUsQ0FBQyxRQUFRLENBQUM7Z0JBTXpDLHFCQUFxQjtzQkFEcEIsWUFBWTt1QkFBQyx3QkFBd0IsRUFBRSxDQUFDLFFBQVEsQ0FBQztnQkFxQnhDLFVBQVU7c0JBQW5CLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgIEFmdGVyVmlld0luaXQsXG4gICAgQ29tcG9uZW50LFxuICAgIEVsZW1lbnRSZWYsXG4gICAgRXZlbnRFbWl0dGVyLFxuICAgIEhvc3RMaXN0ZW5lcixcbiAgICBJbmplY3QsXG4gICAgT3B0aW9uYWwsXG4gICAgT3V0cHV0XG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgU2ltcGxlS2V5Ym9hcmQgfSBmcm9tICdzaW1wbGUta2V5Ym9hcmQnO1xuaW1wb3J0IHtcbiAgICBTeXN0ZWxhYlZpcnR1YWxLZXlib2FyZEJ1dHRvbixcbiAgICBTeXN0ZWxhYlZpcnR1YWxLZXlib2FyZElucHV0TWV0aG9kcyxcbiAgICBTeXN0ZWxhYlZpcnR1YWxLZXlib2FyZElucHV0VHlwZXMsXG4gICAgU3lzdGVsYWJWaXJ0dWFsS2V5Ym9hcmRMYXlvdXRzXG59IGZyb20gJy4vY29uc3RhbnRzJztcbmltcG9ydCB7IFN5c3RlbGFiVmlydHVhbEtleWJvYXJkQ29uZmlnLCBWSVJUVUFMX0tFWUJPQVJEX0NPTkZJRyB9IGZyb20gJy4vc3lzdGVsYWItdmlydHVhbC1rZXlib2FyZC5jb25maWcnO1xuaW1wb3J0IHsgS2V5Ym9hcmRPcHRpb25zIH0gZnJvbSAnc2ltcGxlLWtleWJvYXJkL2J1aWxkL2ludGVyZmFjZXMnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ3N5c3RlbGFiLXZpcnR1YWwta2V5Ym9hcmQuY29tcG9uZW50JyxcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIGltcG9ydHM6IFtdLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9zeXN0ZWxhYi12aXJ0dWFsLWtleWJvYXJkLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybDogJ3N5c3RlbGFiLXZpcnR1YWwta2V5Ym9hcmQuY29tcG9uZW50LnNjc3MnLFxufSlcbmV4cG9ydCBjbGFzcyBTeXN0ZWxhYlZpcnR1YWxLZXlib2FyZENvbXBvbmVudCBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQge1xuICAgIEBIb3N0TGlzdGVuZXIoJ3dpbmRvdzprZXl1cCcsIFsnJGV2ZW50J10pXG4gICAgaGFuZGxlS2V5VXAoZXZlbnQ6IEtleWJvYXJkRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgaWYgKGV2ZW50LmlzVHJ1c3RlZCkge1xuICAgICAgICAgICAgdGhpcy5jYXJldEV2ZW50SGFuZGxlcihldmVudCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBASG9zdExpc3RlbmVyKCd3aW5kb3c6cG9pbnRlcnVwJywgWyckZXZlbnQnXSlcbiAgICBoYW5kbGVNb3VzZVVwKGV2ZW50OiBQb2ludGVyRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5jYXJldEV2ZW50SGFuZGxlcihldmVudCk7XG4gICAgfVxuXG4gICAgQEhvc3RMaXN0ZW5lcignd2luZG93OnNlbGVjdCcsIFsnJGV2ZW50J10pXG4gICAgaGFuZGxlU2VsZWN0KGV2ZW50OiBFdmVudCk6IHZvaWQge1xuICAgICAgICB0aGlzLmNhcmV0RXZlbnRIYW5kbGVyKGV2ZW50KTtcbiAgICB9XG5cbiAgICBASG9zdExpc3RlbmVyKCd3aW5kb3c6c2VsZWN0aW9uY2hhbmdlJywgWyckZXZlbnQnXSlcbiAgICBoYW5kbGVTZWxlY3Rpb25DaGFuZ2UoZXZlbnQ6IEV2ZW50KTogdm9pZCB7XG4gICAgICAgIHRoaXMuY2FyZXRFdmVudEhhbmRsZXIoZXZlbnQpO1xuICAgIH1cblxuICAgIGdldCBtYXhMZW5ndGgoKTogbnVtYmVyIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuYWN0aXZlSW5wdXRFbGVtZW50Py5tYXhMZW5ndGggPz8gLTE7XG4gICAgfVxuXG4gICAgZ2V0IGlzVGV4dGFyZWEoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLmFjdGl2ZUlucHV0RWxlbWVudD8udHlwZSA9PT0gJ3RleHRhcmVhJztcbiAgICB9XG5cbiAgICBwdWJsaWMgZGVidWcgPSBmYWxzZTtcbiAgICBwcml2YXRlIHNlbGVjdGVkTGF5b3V0OiBTeXN0ZWxhYlZpcnR1YWxLZXlib2FyZExheW91dHMgPSBTeXN0ZWxhYlZpcnR1YWxLZXlib2FyZExheW91dHMuZGVmYXVsdDtcbiAgICBwcml2YXRlIGtleWJvYXJkOiBTaW1wbGVLZXlib2FyZDtcbiAgICBwcml2YXRlIGNhcmV0UG9zaXRpb246IG51bWJlciB8IG51bGwgPSBudWxsO1xuICAgIHByaXZhdGUgY2FyZXRQb3NpdGlvbkVuZDogbnVtYmVyIHwgbnVsbCA9IG51bGw7XG4gICAgcHJpdmF0ZSBhY3RpdmVJbnB1dEVsZW1lbnQhOiBIVE1MSW5wdXRFbGVtZW50IHwgSFRNTFRleHRBcmVhRWxlbWVudCB8IG51bGw7XG4gICAgcHJpdmF0ZSBzaGlmdFByZXNzZWQ6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAgIEBPdXRwdXQoKSBjbG9zZVBhbmVsID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSBlbGVtZW50UmVmOiBFbGVtZW50UmVmPEhUTUxJbnB1dEVsZW1lbnQ+LCBAT3B0aW9uYWwoKSBASW5qZWN0KFZJUlRVQUxfS0VZQk9BUkRfQ09ORklHKSBwcml2YXRlIHZpcnR1YWxLZXlib2FyZENvbmZpZzogU3lzdGVsYWJWaXJ0dWFsS2V5Ym9hcmRDb25maWcsKSB7XG4gICAgfVxuXG4gICAgbmdBZnRlclZpZXdJbml0KCkge1xuICAgICAgICBjb25zdCBsYXlvdXQgPSB7XG4gICAgICAgICAgICBbU3lzdGVsYWJWaXJ0dWFsS2V5Ym9hcmRMYXlvdXRzLmRlZmF1bHRdOiBbXG4gICAgICAgICAgICAgICAgJ2AgMSAyIDMgNCA1IDYgNyA4IDkgMCAtID0ge2Jrc3B9JyxcbiAgICAgICAgICAgICAgICAne3RhYn0gcSB3IGUgciB0IHkgdSBpIG8gcCBbIF0gXFxcXCcsXG4gICAgICAgICAgICAgICAgXCJ7bG9ja30gYSBzIGQgZiBnIGggaiBrIGwgOyAnIHtlbnRlcn1cIixcbiAgICAgICAgICAgICAgICAne3NoaWZ0fSB6IHggYyB2IGIgbiBtICwgLiAvIHtzaGlmdH0nLFxuICAgICAgICAgICAgICAgICd7c3BhY2V9JyxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICBbU3lzdGVsYWJWaXJ0dWFsS2V5Ym9hcmRMYXlvdXRzLnNoaWZ0XTogW1xuICAgICAgICAgICAgICAgICd+ICEgQCAjICQgJSBeICZhbXA7ICogKCApIF8gKyB7YmtzcH0nLFxuICAgICAgICAgICAgICAgICd7dGFifSBRIFcgRSBSIFQgWSBVIEkgTyBQIHsgfSB8JyxcbiAgICAgICAgICAgICAgICAne2xvY2t9IEEgUyBEIEYgRyBIIEogSyBMIDogXCIge2VudGVyfScsXG4gICAgICAgICAgICAgICAgJ3tzaGlmdH0gWiBYIEMgViBCIE4gTSAmbHQ7ICZndDsgPyB7c2hpZnR9JyxcbiAgICAgICAgICAgICAgICAne3NwYWNlfScsXG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgW1N5c3RlbGFiVmlydHVhbEtleWJvYXJkTGF5b3V0cy5udW1lcmljXTogWyc3IDggOScsICc0IDUgNicsICcxIDIgMycsICcwIHtia3NwfSddLFxuICAgICAgICB9O1xuXG4gICAgICAgIGNvbnN0IGtleWJvYXJkT3B0aW9uczogS2V5Ym9hcmRPcHRpb25zID0gdGhpcy5wcmVwYXJlS2V5Ym9hcmRDb25maWcoKTtcbiAgICAgICAgdGhpcy5rZXlib2FyZCA9IG5ldyBTaW1wbGVLZXlib2FyZCgnLnNpbXBsZS1rZXlib2FyZCcsIGtleWJvYXJkT3B0aW9ucyk7XG4gICAgICAgIHRoaXMuc2V0TGF5b3V0KHRoaXMuc2VsZWN0ZWRMYXlvdXQpO1xuICAgICAgICBpZiAodGhpcy5kZWJ1Zykge1xuICAgICAgICAgICAgY29uc29sZS5sb2coJ0xheW91dDogJywgbGF5b3V0KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBzZXRBY3RpdmVJbnB1dChpbnB1dDogSFRNTElucHV0RWxlbWVudCB8IEhUTUxUZXh0QXJlYUVsZW1lbnQpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5hY3RpdmVJbnB1dEVsZW1lbnQgPSBpbnB1dDtcblxuICAgICAgICBpZiAodGhpcy5kZWJ1Zykge1xuICAgICAgICAgICAgY29uc3QgaW5wdXRUeXBlID0gdGhpcy5hY3RpdmVJbnB1dEVsZW1lbnQ/LnR5cGU7XG4gICAgICAgICAgICBjb25zb2xlLmxvZygnTGF5b3V0OicsIGAke2lucHV0VHlwZX1fJHt0aGlzLnNlbGVjdGVkTGF5b3V0fWApO1xuICAgICAgICB9XG5cbiAgICAgICAgbGV0IHNlbGVjdGlvblN0YXJ0OiBudW1iZXI7XG4gICAgICAgIGxldCBzZWxlY3Rpb25FbmQ6IG51bWJlcjtcbiAgICAgICAgaWYgKHRoaXMuaXNJbnB1dE51bWVyaWMoaW5wdXQpKSB7XG4gICAgICAgICAgICBzZWxlY3Rpb25TdGFydCA9IHRoaXMuYWN0aXZlSW5wdXRFbGVtZW50LnZhbHVlLnRvU3RyaW5nKCkubGVuZ3RoO1xuICAgICAgICAgICAgc2VsZWN0aW9uRW5kID0gdGhpcy5hY3RpdmVJbnB1dEVsZW1lbnQudmFsdWUudG9TdHJpbmcoKS5sZW5ndGg7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBzZWxlY3Rpb25TdGFydCA9IHRoaXMuYWN0aXZlSW5wdXRFbGVtZW50LnNlbGVjdGlvblN0YXJ0O1xuICAgICAgICAgICAgc2VsZWN0aW9uRW5kID0gdGhpcy5hY3RpdmVJbnB1dEVsZW1lbnQuc2VsZWN0aW9uRW5kO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5zZXRDYXJldFBvc2l0aW9uKHNlbGVjdGlvblN0YXJ0LCBzZWxlY3Rpb25FbmQpO1xuXG4gICAgICAgIGlmICh0aGlzLmRlYnVnKSB7XG4gICAgICAgICAgICBjb25zb2xlLmxvZygnQ2FyZXQgc3RhcnQgYXQ6JywgdGhpcy5jYXJldFBvc2l0aW9uLCB0aGlzLmNhcmV0UG9zaXRpb25FbmQpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIHNldExheW91dChsYXlvdXQ6IFN5c3RlbGFiVmlydHVhbEtleWJvYXJkTGF5b3V0cyk6IHZvaWQge1xuICAgICAgICB0aGlzLnNlbGVjdGVkTGF5b3V0ID0gbGF5b3V0O1xuICAgICAgICBpZiAodGhpcy5rZXlib2FyZCkge1xuICAgICAgICAgICAgdGhpcy5rZXlib2FyZC5zZXRPcHRpb25zKHtcbiAgICAgICAgICAgICAgICBsYXlvdXROYW1lOiBsYXlvdXQsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgcHJlcGFyZUtleWJvYXJkQ29uZmlnKCk6IEtleWJvYXJkT3B0aW9ucyB7XG4gICAgICAgIGNvbnN0IGxheW91dCA9IHtcbiAgICAgICAgICAgIFtTeXN0ZWxhYlZpcnR1YWxLZXlib2FyZExheW91dHMuZGVmYXVsdF06IFtcbiAgICAgICAgICAgICAgICAnYCAxIDIgMyA0IDUgNiA3IDggOSAwIC0gPSB7YmtzcH0nLFxuICAgICAgICAgICAgICAgICd7dGFifSBxIHcgZSByIHQgeSB1IGkgbyBwIFsgXSBcXFxcJyxcbiAgICAgICAgICAgICAgICBcIntsb2NrfSBhIHMgZCBmIGcgaCBqIGsgbCA7ICcge2VudGVyfVwiLFxuICAgICAgICAgICAgICAgICd7c2hpZnR9IHogeCBjIHYgYiBuIG0gLCAuIC8ge3NoaWZ0fScsXG4gICAgICAgICAgICAgICAgJ3tzcGFjZX0nLFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIFtTeXN0ZWxhYlZpcnR1YWxLZXlib2FyZExheW91dHMuc2hpZnRdOiBbXG4gICAgICAgICAgICAgICAgJ34gISBAICMgJCAlIF4gJmFtcDsgKiAoICkgXyArIHtia3NwfScsXG4gICAgICAgICAgICAgICAgJ3t0YWJ9IFEgVyBFIFIgVCBZIFUgSSBPIFAgeyB9IHwnLFxuICAgICAgICAgICAgICAgICd7bG9ja30gQSBTIEQgRiBHIEggSiBLIEwgOiBcIiB7ZW50ZXJ9JyxcbiAgICAgICAgICAgICAgICAne3NoaWZ0fSBaIFggQyBWIEIgTiBNICZsdDsgJmd0OyA/IHtzaGlmdH0nLFxuICAgICAgICAgICAgICAgICd7c3BhY2V9JyxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICBbU3lzdGVsYWJWaXJ0dWFsS2V5Ym9hcmRMYXlvdXRzLm51bWVyaWNdOiBbJzcgOCA5JywgJzQgNSA2JywgJzEgMiAzJywgJzAge2Jrc3B9J10sXG4gICAgICAgIH07XG5cbiAgICAgICAgbGV0IGtleWJvYXJkT3B0aW9uczogS2V5Ym9hcmRPcHRpb25zID0ge1xuICAgICAgICAgICAgb25LZXlQcmVzczogKGJ1dHRvbikgPT4gdGhpcy5oYW5kbGVLZXlQcmVzcyhidXR0b24pLFxuICAgICAgICAgICAgbWVyZ2VEaXNwbGF5OiB0cnVlLFxuICAgICAgICAgICAgdGhlbWU6ICdoZy10aGVtZS1kZWZhdWx0IGhnLWxheW91dC1kZWZhdWx0IG15VGhlbWUnLFxuICAgICAgICAgICAgZGlzcGxheToge1xuICAgICAgICAgICAgICAgIFtTeXN0ZWxhYlZpcnR1YWxLZXlib2FyZEJ1dHRvbi5CYWNrc3BhY2VdOiAnZGVsZXRlJyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBidXR0b25UaGVtZTogW1xuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M6ICd2aXJ0dWFsLWtleWJvYXJkLWRlbGV0ZS1idXR0b24nLFxuICAgICAgICAgICAgICAgICAgICBidXR0b25zOiBgJHtTeXN0ZWxhYlZpcnR1YWxLZXlib2FyZEJ1dHRvbi5CYWNrc3BhY2V9YCxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIGxheW91dCxcbiAgICAgICAgfTtcblxuICAgICAgICBpZiAodGhpcy52aXJ0dWFsS2V5Ym9hcmRDb25maWc/Lmhhc093blByb3BlcnR5KCdpbnB1dE1ldGhvZCcpKSB7XG4gICAgICAgICAgICBpZiAodGhpcy52aXJ0dWFsS2V5Ym9hcmRDb25maWcuaW5wdXRNZXRob2QgPT09IFN5c3RlbGFiVmlydHVhbEtleWJvYXJkSW5wdXRNZXRob2RzLm9ubHlNb3VzZUV2ZW50cykge1xuICAgICAgICAgICAgICAgIGtleWJvYXJkT3B0aW9ucyA9IHtcbiAgICAgICAgICAgICAgICAgICAgLi4ua2V5Ym9hcmRPcHRpb25zLFxuICAgICAgICAgICAgICAgICAgICB1c2VNb3VzZUV2ZW50czogdHJ1ZSxcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHRoaXMudmlydHVhbEtleWJvYXJkQ29uZmlnLmlucHV0TWV0aG9kID09PSBTeXN0ZWxhYlZpcnR1YWxLZXlib2FyZElucHV0TWV0aG9kcy5vbmx5VG91Y2hFdmVudHMpIHtcbiAgICAgICAgICAgICAgICBrZXlib2FyZE9wdGlvbnMgPSB7XG4gICAgICAgICAgICAgICAgICAgIC4uLmtleWJvYXJkT3B0aW9ucyxcbiAgICAgICAgICAgICAgICAgICAgdXNlVG91Y2hFdmVudHM6IHRydWUsXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGtleWJvYXJkT3B0aW9ucztcbiAgICB9XG5cbiAgICBwcml2YXRlIGlzSW5wdXRBbHBoYWJldGljKGFjdGl2ZUlucHV0RWxlbWVudDogSFRNTElucHV0RWxlbWVudCB8IEhUTUxUZXh0QXJlYUVsZW1lbnQpOiBib29sZWFuIHtcbiAgICAgICAgY29uc3QgaW5wdXRUeXBlID0gYWN0aXZlSW5wdXRFbGVtZW50Py50eXBlO1xuICAgICAgICByZXR1cm4gaW5wdXRUeXBlICYmIFtTeXN0ZWxhYlZpcnR1YWxLZXlib2FyZElucHV0VHlwZXMudGV4dCwgU3lzdGVsYWJWaXJ0dWFsS2V5Ym9hcmRJbnB1dFR5cGVzLnBhc3N3b3JkXS5zb21lKChpKSA9PiBpID09PSBpbnB1dFR5cGUpO1xuICAgIH1cblxuICAgIHByaXZhdGUgaXNJbnB1dE51bWVyaWMoYWN0aXZlSW5wdXRFbGVtZW50OiBIVE1MSW5wdXRFbGVtZW50IHwgSFRNTFRleHRBcmVhRWxlbWVudCk6IGJvb2xlYW4ge1xuICAgICAgICBjb25zdCBpbnB1dFR5cGUgPSBhY3RpdmVJbnB1dEVsZW1lbnQ/LnR5cGU7XG4gICAgICAgIHJldHVybiBpbnB1dFR5cGUgJiYgW1N5c3RlbGFiVmlydHVhbEtleWJvYXJkSW5wdXRUeXBlcy5udW1iZXJdLnNvbWUoKGkpID0+IGkgPT09IGlucHV0VHlwZSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBoYW5kbGVLZXlQcmVzcyhidXR0b246IHN0cmluZywgZT86IEV2ZW50KTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLmRlYnVnKSB7XG4gICAgICAgICAgICBjb25zb2xlLmxvZygnS2V5IHByZXNzOicsIGJ1dHRvbik7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoYnV0dG9uWzBdID09PSAnJicgJiYgYnV0dG9uLmxlbmd0aCA+IDEpIHtcbiAgICAgICAgICAgIGJ1dHRvbiA9IG5ldyBET01QYXJzZXIoKS5wYXJzZUZyb21TdHJpbmcoYnV0dG9uLCAndGV4dC9odG1sJykuYm9keS50ZXh0Q29udGVudDtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChidXR0b24gPT09IFN5c3RlbGFiVmlydHVhbEtleWJvYXJkQnV0dG9uLlNoaWZ0IHx8IGJ1dHRvbiA9PT0gU3lzdGVsYWJWaXJ0dWFsS2V5Ym9hcmRCdXR0b24uTG9jaykge1xuICAgICAgICAgICAgdGhpcy5zaGlmdFByZXNzZWQgPSBidXR0b24gPT09IFN5c3RlbGFiVmlydHVhbEtleWJvYXJkQnV0dG9uLlNoaWZ0O1xuICAgICAgICAgICAgdGhpcy50b2dnbGVTaGlmdExheW91dCgpO1xuICAgICAgICB9IGVsc2UgaWYgKGJ1dHRvbiA9PT0gU3lzdGVsYWJWaXJ0dWFsS2V5Ym9hcmRCdXR0b24uRG9uZSkge1xuICAgICAgICAgICAgdGhpcy5jbG9zZVBhbmVsLmVtaXQoKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghdGhpcy5pc0FjY2VwdGVkTm9uU3RhbmRhcmRCdXR0b24oYnV0dG9uKSAmJiAhdGhpcy5pc1N0YW5kYXJkQnV0dG9uKGJ1dHRvbikpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IG91dHB1dCA9IHRoaXMuaGFuZGxlQnV0dG9uT3V0cHV0KGJ1dHRvbik7XG5cbiAgICAgICAgaWYgKHRoaXMuYWN0aXZlSW5wdXRFbGVtZW50KSB7XG4gICAgICAgICAgICB0aGlzLmFjdGl2ZUlucHV0RWxlbWVudC52YWx1ZSA9IG91dHB1dDtcblxuICAgICAgICAgICAgaWYgKHRoaXMuZGVidWcpIHtcbiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZygnQ2FyZXQgYXQ6JywgdGhpcy5jYXJldFBvc2l0aW9uLCB0aGlzLmNhcmV0UG9zaXRpb25FbmQsICdCdXR0b24nLCBlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudHMoYnV0dG9uKTtcblxuICAgICAgICBpZiAodGhpcy5zaGlmdFByZXNzZWQpIHtcbiAgICAgICAgICAgIHRoaXMudG9nZ2xlU2hpZnRMYXlvdXQoKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnNoaWZ0UHJlc3NlZCA9IGJ1dHRvbiA9PT0gU3lzdGVsYWJWaXJ0dWFsS2V5Ym9hcmRCdXR0b24uU2hpZnQ7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBoYW5kbGVCdXR0b25PdXRwdXQoYnV0dG9uOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgICAgICBjb25zdCBjb21tb25QYXJhbXM6IFtudW1iZXIsIG51bWJlciwgYm9vbGVhbl0gPSB0aGlzLmdldENvbW1vblBhcmFtcygpO1xuICAgICAgICBsZXQgb3V0cHV0ID0gdGhpcy5hY3RpdmVJbnB1dEVsZW1lbnQ/LnZhbHVlIHx8ICcnO1xuICAgICAgICBpZiAoIXRoaXMuaXNTdGFuZGFyZEJ1dHRvbihidXR0b24pKSB7XG4gICAgICAgICAgICBpZiAoYnV0dG9uID09PSBTeXN0ZWxhYlZpcnR1YWxLZXlib2FyZEJ1dHRvbi5CYWNrc3BhY2UpIHtcbiAgICAgICAgICAgICAgICBvdXRwdXQgPSB0aGlzLnJlbW92ZUF0KG91dHB1dCwgLi4uY29tbW9uUGFyYW1zKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoYnV0dG9uID09PSBTeXN0ZWxhYlZpcnR1YWxLZXlib2FyZEJ1dHRvbi5TcGFjZSkge1xuICAgICAgICAgICAgICAgIG91dHB1dCA9IHRoaXMuYWRkU3RyaW5nQXQob3V0cHV0LCAnICcsIC4uLmNvbW1vblBhcmFtcyk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGJ1dHRvbiA9PT0gU3lzdGVsYWJWaXJ0dWFsS2V5Ym9hcmRCdXR0b24uVGFiKSB7XG4gICAgICAgICAgICAgICAgb3V0cHV0ID0gdGhpcy5hZGRTdHJpbmdBdChvdXRwdXQsICdcXHQnLCAuLi5jb21tb25QYXJhbXMpO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChidXR0b24gPT09IFN5c3RlbGFiVmlydHVhbEtleWJvYXJkQnV0dG9uLkVudGVyKSB7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuaXNUZXh0YXJlYSkge1xuICAgICAgICAgICAgICAgICAgICBvdXRwdXQgPSB0aGlzLmFkZFN0cmluZ0F0KG91dHB1dCwgJ1xcbicsIC4uLmNvbW1vblBhcmFtcyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBvdXRwdXQgPSB0aGlzLmFkZFN0cmluZ0F0KG91dHB1dCwgYnV0dG9uLCAuLi5jb21tb25QYXJhbXMpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIG91dHB1dDtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldENvbW1vblBhcmFtcygpOiBbbnVtYmVyLCBudW1iZXIsIGJvb2xlYW5dIHtcbiAgICAgICAgcmV0dXJuIFt0aGlzLmNhcmV0UG9zaXRpb24gfHwgMCwgdGhpcy5jYXJldFBvc2l0aW9uRW5kIHx8IDAsIHRydWVdO1xuICAgIH1cblxuICAgIHByaXZhdGUgaXNBY2NlcHRlZE5vblN0YW5kYXJkQnV0dG9uKGJ1dHRvbjogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiBbXG4gICAgICAgICAgICBTeXN0ZWxhYlZpcnR1YWxLZXlib2FyZEJ1dHRvbi5CYWNrc3BhY2UudG9TdHJpbmcoKSxcbiAgICAgICAgICAgIFN5c3RlbGFiVmlydHVhbEtleWJvYXJkQnV0dG9uLlNwYWNlLnRvU3RyaW5nKCksXG4gICAgICAgICAgICBTeXN0ZWxhYlZpcnR1YWxLZXlib2FyZEJ1dHRvbi5UYWIudG9TdHJpbmcoKSxcbiAgICAgICAgICAgIFN5c3RlbGFiVmlydHVhbEtleWJvYXJkQnV0dG9uLkVudGVyLnRvU3RyaW5nKCksXG4gICAgICAgIF0uaW5jbHVkZXMoYnV0dG9uKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGRpc3BhdGNoRXZlbnRzKGJ1dHRvbjogc3RyaW5nKSB7XG4gICAgICAgIGNvbnN0IHtrZXksIGNvZGV9ID0gdGhpcy5jb252ZXJ0RnJvbUJ1dHRvblRvQ29kZShidXR0b24pO1xuXG4gICAgICAgIGNvbnN0IGV2ZW50SW5pdDogS2V5Ym9hcmRFdmVudEluaXQgPSB7XG4gICAgICAgICAgICBidWJibGVzOiB0cnVlLFxuICAgICAgICAgICAgY2FuY2VsYWJsZTogdHJ1ZSxcbiAgICAgICAgICAgIHNoaWZ0S2V5OiB0aGlzLnNlbGVjdGVkTGF5b3V0ID09PSBTeXN0ZWxhYlZpcnR1YWxLZXlib2FyZExheW91dHMuc2hpZnQsXG4gICAgICAgICAgICBrZXk6IGtleSxcbiAgICAgICAgICAgIGNvZGU6IGNvZGUsXG4gICAgICAgICAgICBsb2NhdGlvbjogMCxcbiAgICAgICAgfTtcblxuICAgICAgICAvLyBTaW11bGF0ZSBhbGwgbmVlZGVkIGV2ZW50cyBvbiBiYXNlIGVsZW1lbnRcbiAgICAgICAgdGhpcy5hY3RpdmVJbnB1dEVsZW1lbnQ/LmRpc3BhdGNoRXZlbnQobmV3IEtleWJvYXJkRXZlbnQoJ2tleWRvd24nLCBldmVudEluaXQpKTtcbiAgICAgICAgdGhpcy5hY3RpdmVJbnB1dEVsZW1lbnQ/LmRpc3BhdGNoRXZlbnQobmV3IEtleWJvYXJkRXZlbnQoJ2tleXByZXNzJywgZXZlbnRJbml0KSk7XG4gICAgICAgIHRoaXMuYWN0aXZlSW5wdXRFbGVtZW50Py5kaXNwYXRjaEV2ZW50KG5ldyBFdmVudCgnaW5wdXQnLCB7YnViYmxlczogdHJ1ZX0pKTtcbiAgICAgICAgdGhpcy5hY3RpdmVJbnB1dEVsZW1lbnQ/LmRpc3BhdGNoRXZlbnQobmV3IEtleWJvYXJkRXZlbnQoJ2tleXVwJywgZXZlbnRJbml0KSk7XG4gICAgfVxuXG4gICAgLypcbiAgICAgKiBBVVhJTElBUlkgTUVUSE9EU1xuICAgICAqICovXG4gICAgcHJpdmF0ZSBjb252ZXJ0RnJvbUJ1dHRvblRvQ29kZShidXR0b246IHN0cmluZyk6IHsga2V5OiBzdHJpbmc7IGNvZGU6IHN0cmluZyB9IHtcbiAgICAgICAgbGV0IGtleTogc3RyaW5nO1xuICAgICAgICBsZXQgY29kZTogc3RyaW5nO1xuICAgICAgICBpZiAoYnV0dG9uLmluY2x1ZGVzKCd7JykgJiYgYnV0dG9uLmluY2x1ZGVzKCd9JykpIHtcbiAgICAgICAgICAgIC8vIENhcGl0YWxpemUgbmFtZVxuICAgICAgICAgICAga2V5ID0gYnV0dG9uLnNsaWNlKDEsIGJ1dHRvbi5sZW5ndGggLSAxKS50b0xvd2VyQ2FzZSgpO1xuICAgICAgICAgICAga2V5ID0ga2V5LmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgpICsga2V5LnNsaWNlKDEpO1xuICAgICAgICAgICAgY29kZSA9IGtleTtcblxuICAgICAgICAgICAgLy8gRml4IHRvIHN0YW5kYXJkIGtleSBjb2RlXG4gICAgICAgICAgICBpZiAoY29kZS50b0xvd2VyQ2FzZSgpID09PSBTeXN0ZWxhYlZpcnR1YWxLZXlib2FyZEJ1dHRvbi5CYWNrc3BhY2Uuc2xpY2UoMSwgU3lzdGVsYWJWaXJ0dWFsS2V5Ym9hcmRCdXR0b24uQmFja3NwYWNlLmxlbmd0aCAtIDEpLnRvTG93ZXJDYXNlKCkpIHtcbiAgICAgICAgICAgICAgICBjb2RlID0gJ0JhY2tzcGFjZSc7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBrZXkgPSBidXR0b247XG4gICAgICAgICAgICBjb2RlID0gTnVtYmVyLmlzSW50ZWdlcihOdW1iZXIoYnV0dG9uKSkgPyBgRGlnaXQke2J1dHRvbn1gIDogYEtleSR7YnV0dG9uLnRvVXBwZXJDYXNlKCl9YDtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB7a2V5LCBjb2RlfTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHRvZ2dsZVNoaWZ0TGF5b3V0KCk6IHZvaWQge1xuICAgICAgICBjb25zdCBjdXJyZW50TGF5b3V0ID0gdGhpcy5rZXlib2FyZC5vcHRpb25zLmxheW91dE5hbWU7XG4gICAgICAgIGNvbnN0IHNlbGVjdGVkTGF5b3V0OiBTeXN0ZWxhYlZpcnR1YWxLZXlib2FyZExheW91dHMgPVxuICAgICAgICAgICAgY3VycmVudExheW91dCA9PT0gU3lzdGVsYWJWaXJ0dWFsS2V5Ym9hcmRMYXlvdXRzLmRlZmF1bHQgPyBTeXN0ZWxhYlZpcnR1YWxLZXlib2FyZExheW91dHMuc2hpZnQgOiBTeXN0ZWxhYlZpcnR1YWxLZXlib2FyZExheW91dHMuZGVmYXVsdDtcblxuICAgICAgICB0aGlzLnNldExheW91dChzZWxlY3RlZExheW91dCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBpc1N0YW5kYXJkQnV0dG9uKGJ1dHRvbjogc3RyaW5nKSB7XG4gICAgICAgIHJldHVybiBidXR0b24gJiYgIShidXR0b25bMF0gPT09ICd7JyAmJiBidXR0b25bYnV0dG9uLmxlbmd0aCAtIDFdID09PSAnfScpO1xuICAgIH1cblxuICAgIC8qXG4gICAgICogT1VUUFVUIFNUUklORyBNRVRIT0RTXG4gICAgICogKi9cbiAgICBwcml2YXRlIHJlbW92ZUF0KHNvdXJjZTogc3RyaW5nLCBwb3NpdGlvbiA9IHNvdXJjZS5sZW5ndGgsIHBvc2l0aW9uRW5kID0gc291cmNlLmxlbmd0aCwgbW92ZUNhcmV0ID0gZmFsc2UpOiBzdHJpbmcge1xuICAgICAgICBpZiAocG9zaXRpb24gPT09IDAgJiYgcG9zaXRpb25FbmQgPT09IDApIHtcbiAgICAgICAgICAgIHJldHVybiBzb3VyY2U7XG4gICAgICAgIH1cblxuICAgICAgICBsZXQgb3V0cHV0OiBzdHJpbmc7XG5cbiAgICAgICAgaWYgKHBvc2l0aW9uID09PSBwb3NpdGlvbkVuZCkge1xuICAgICAgICAgICAgaWYgKHBvc2l0aW9uICYmIHBvc2l0aW9uID49IDApIHtcbiAgICAgICAgICAgICAgICBvdXRwdXQgPSBzb3VyY2Uuc2xpY2UoMCwgcG9zaXRpb24gLSAxKSArIHNvdXJjZS5zbGljZShwb3NpdGlvbik7XG4gICAgICAgICAgICAgICAgaWYgKG1vdmVDYXJldCkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZUNhcmV0UG9zaXRpb24oMSwgdHJ1ZSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBvdXRwdXQgPSBzb3VyY2Uuc2xpY2UoMCwgLTEpO1xuICAgICAgICAgICAgICAgIGlmIChtb3ZlQ2FyZXQpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy51cGRhdGVDYXJldFBvc2l0aW9uKDEsIHRydWUpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIG91dHB1dCA9IHNvdXJjZS5zbGljZSgwLCBwb3NpdGlvbikgKyBzb3VyY2Uuc2xpY2UocG9zaXRpb25FbmQpO1xuICAgICAgICAgICAgaWYgKG1vdmVDYXJldCkge1xuICAgICAgICAgICAgICAgIHRoaXMuc2V0Q2FyZXRQb3NpdGlvbihwb3NpdGlvbik7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gb3V0cHV0O1xuICAgIH1cblxuICAgIHByaXZhdGUgYWRkU3RyaW5nQXQoc291cmNlOiBzdHJpbmcsIHN0cjogc3RyaW5nLCBwb3NpdGlvbiA9IHNvdXJjZS5sZW5ndGgsIHBvc2l0aW9uRW5kID0gc291cmNlLmxlbmd0aCwgbW92ZUNhcmV0ID0gZmFsc2UpOiBzdHJpbmcge1xuICAgICAgICBpZiAodGhpcy5tYXhMZW5ndGggIT09IC0xICYmIHNvdXJjZS5sZW5ndGggPj0gdGhpcy5tYXhMZW5ndGgpIHtcbiAgICAgICAgICAgIHJldHVybiBzb3VyY2U7XG4gICAgICAgIH1cblxuICAgICAgICBsZXQgb3V0cHV0OiBzdHJpbmc7XG5cbiAgICAgICAgaWYgKCFwb3NpdGlvbiAmJiBwb3NpdGlvbiAhPT0gMCkge1xuICAgICAgICAgICAgb3V0cHV0ID0gc291cmNlICsgc3RyO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgb3V0cHV0ID0gW3NvdXJjZS5zbGljZSgwLCBwb3NpdGlvbiksIHN0ciwgc291cmNlLnNsaWNlKHBvc2l0aW9uRW5kKV0uam9pbignJyk7XG4gICAgICAgICAgICBpZiAobW92ZUNhcmV0KSB7XG4gICAgICAgICAgICAgICAgdGhpcy51cGRhdGVDYXJldFBvc2l0aW9uKHN0ci5sZW5ndGgsIGZhbHNlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBvdXRwdXQ7XG4gICAgfVxuXG4gICAgLypcbiAgICAgICAqIENBUkVUIE1FVEhPRFNcbiAgICAgICAqICovXG4gICAgcHJpdmF0ZSBjYXJldEV2ZW50SGFuZGxlcihldmVudDogYW55KSB7XG4gICAgICAgIGxldCB0YXJnZXRUYWdOYW1lID0gJyc7XG4gICAgICAgIGlmIChldmVudC50YXJnZXQudGFnTmFtZSkge1xuICAgICAgICAgICAgdGFyZ2V0VGFnTmFtZSA9IGV2ZW50LnRhcmdldC50YWdOYW1lLnRvTG93ZXJDYXNlKCk7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBpc1RleHRJbnB1dCA9XG4gICAgICAgICAgICB0YXJnZXRUYWdOYW1lID09PSAndGV4dGFyZWEnIHx8XG4gICAgICAgICAgICAodGFyZ2V0VGFnTmFtZSA9PT0gJ2lucHV0JyAmJiBbJ3RleHQnLCAnc2VhcmNoJywgJ2VtYWlsJywgJ3Bhc3N3b3JkJywgJ3VybCcsICd0ZWwnXS5pbmNsdWRlcyhldmVudC50YXJnZXQudHlwZSkpO1xuXG4gICAgICAgIGNvbnN0IGlzS2V5Ym9hcmQgPVxuICAgICAgICAgICAgZXZlbnQudGFyZ2V0ID09PSB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCB8fCAoZXZlbnQudGFyZ2V0ICYmIHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LmNvbnRhaW5zKGV2ZW50LnRhcmdldCkpO1xuXG4gICAgICAgIGlmIChpc1RleHRJbnB1dCAmJiB0aGlzLmFjdGl2ZUlucHV0RWxlbWVudCA9PSBldmVudC50YXJnZXQpIHtcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogVHJhY2tzIGN1cnJlbnQgY3Vyc29yIHBvc2l0aW9uXG4gICAgICAgICAgICAgKiBBcyBrZXlzIGFyZSBwcmVzc2VkLCB0ZXh0IHdpbGwgYmUgYWRkZWQvcmVtb3ZlZCBhdCB0aGF0IHBvc2l0aW9uIHdpdGhpbiB0aGUgaW5wdXQuXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIHRoaXMuc2V0Q2FyZXRQb3NpdGlvbihldmVudC50YXJnZXQuc2VsZWN0aW9uU3RhcnQsIGV2ZW50LnRhcmdldC5zZWxlY3Rpb25FbmQpO1xuXG4gICAgICAgICAgICBpZiAodGhpcy5kZWJ1Zykge1xuICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKCdDYXJldCBhdDonLCB0aGlzLmNhcmV0UG9zaXRpb24sIHRoaXMuY2FyZXRQb3NpdGlvbkVuZCwgZXZlbnQgJiYgZXZlbnQudGFyZ2V0LnRhZ05hbWUudG9Mb3dlckNhc2UoKSwgZXZlbnQpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2UgaWYgKGV2ZW50LnR5cGUgPT09ICdwb2ludGVydXAnICYmIHRoaXMuYWN0aXZlSW5wdXRFbGVtZW50ID09PSBkb2N1bWVudC5hY3RpdmVFbGVtZW50KSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH0gZWxzZSBpZiAoIWlzS2V5Ym9hcmQgJiYgZXZlbnQ/LnR5cGUgIT09ICdzZWxlY3Rpb25jaGFuZ2UnKSB7XG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIHdlIG11c3QgZW5zdXJlIGNhcmV0UG9zaXRpb24gZG9lc24ndCBwZXJzaXN0IG9uY2UgcmVhY3RpdmF0ZWQuXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIHRoaXMuc2V0Q2FyZXRQb3NpdGlvbihudWxsKTtcblxuICAgICAgICAgICAgaWYgKHRoaXMuZGVidWcpIHtcbiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhgQ2FyZXQgcG9zaXRpb24gcmVzZXQgZHVlIHRvIFwiJHtldmVudD8udHlwZX1cIiBldmVudGAsIGV2ZW50KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgdXBkYXRlQ2FyZXRQb3NpdGlvbihsZW5ndGg6IG51bWJlciwgbWludXMgPSBmYWxzZSkge1xuICAgICAgICBjb25zdCBuZXdDYXJldFBvcyA9IHRoaXMuY29tcHV0ZU5ld0NhcmV0UG9zaXRpb24obGVuZ3RoLCBtaW51cyk7XG4gICAgICAgIHRoaXMuc2V0Q2FyZXRQb3NpdGlvbihuZXdDYXJldFBvcyk7XG4gICAgICAgIC8vIFNjcm9sbCB0byBib3R0b21cbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmFjdGl2ZUlucHV0RWxlbWVudD8uc2Nyb2xsVG8oe1xuICAgICAgICAgICAgICAgIHRvcDogdGhpcy5hY3RpdmVJbnB1dEVsZW1lbnQuc2Nyb2xsSGVpZ2h0LFxuICAgICAgICAgICAgfSBhcyBTY3JvbGxUb09wdGlvbnMpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGNvbXB1dGVOZXdDYXJldFBvc2l0aW9uKGxlbmd0aDogbnVtYmVyLCBtaW51cyA9IGZhbHNlKSB7XG4gICAgICAgIGxldCBjYXJldFBvc2l0aW9uID0gdGhpcy5jYXJldFBvc2l0aW9uO1xuXG4gICAgICAgIGlmIChjYXJldFBvc2l0aW9uICE9IG51bGwpIHtcbiAgICAgICAgICAgIGlmIChtaW51cykge1xuICAgICAgICAgICAgICAgIGlmIChjYXJldFBvc2l0aW9uID4gMCkgY2FyZXRQb3NpdGlvbiA9IGNhcmV0UG9zaXRpb24gLSBsZW5ndGg7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGNhcmV0UG9zaXRpb24gPSBjYXJldFBvc2l0aW9uICsgbGVuZ3RoO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBjYXJldFBvc2l0aW9uO1xuICAgIH1cblxuICAgIHByaXZhdGUgc2V0Q2FyZXRQb3NpdGlvbihwb3NpdGlvbjogbnVtYmVyIHwgbnVsbCwgZW5kUG9zaXRpb24gPSBwb3NpdGlvbik6IHZvaWQge1xuICAgICAgICB0aGlzLmNhcmV0UG9zaXRpb24gPSBwb3NpdGlvbjtcbiAgICAgICAgdGhpcy5jYXJldFBvc2l0aW9uRW5kID0gZW5kUG9zaXRpb247XG4gICAgfVxufVxuIiwiPCEtLVxuICB+IENvcHlyaWdodCAoYykgMjAyMCAtIDIwMjQgLSBJbnN0cnVtZW50YXRpb24gTGFib3JhdG9yeSBDb21wYW55IGFuZCBTeXN0ZWxhYiBUZWNobm9sb2dpZXMsIFNBLiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICB+IE5PVElDRTogIEFsbCBpbmZvcm1hdGlvbiBjb250YWluZWQgaGVyZWluIGlzIGFuZCByZW1haW5zIHRoZSBwcm9wZXJ0eSBvZiBJbnN0cnVtZW50YXRpb24gTGFib3JhdG9yeSBDb21wYW55IGFuZCBpdHNcbiAgfiBhZmZpbGlhdGVzLCBpZiBhbnkuICBUaGUgaW50ZWxsZWN0dWFsIGFuZCB0ZWNobmljYWwgY29uY2VwdHMgY29udGFpbmVkIGhlcmVpbiBhcmUgcHJvcHJpZXRhcnkgdG8gSW5zdHJ1bWVudGF0aW9uXG4gIH4gTGFib3JhdG9yeSBDb21wYW55IGFuZCBpdHMgYWZmaWxpYXRlcyBhbmQgbWF5IGJlIGNvdmVyZWQgYnkgVS5TLiBhbmQgZm9yZWlnbiBwYXRlbnRzIGFuZCBwYXRlbnQgYXBwbGljYXRpb25zLCBhbmQvb3JcbiAgfiBhcmUgcHJvdGVjdGVkIGJ5IHRyYWRlIHNlY3JldCBvciBjb3B5cmlnaHQgbGF3LiBEaXNzZW1pbmF0aW9uIG9mIHRoaXMgaW5mb3JtYXRpb24gb3IgcmVwcm9kdWN0aW9uIG9mIHRoaXMgbWF0ZXJpYWwgaXNcbiAgfiBzdHJpY3RseSBmb3JiaWRkZW4gdW5sZXNzIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbiBpcyBJbnN0cnVtZW50YXRpb24gTGFib3JhdG9yeSBDb21wYW55LlxuICAtLT5cblxuPGRpdiBjbGFzcz1cInNpbXBsZS1rZXlib2FyZFwiPjwvZGl2PlxuIl19
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
import { InjectionToken } from '@angular/core';
|
|
2
2
|
export const VIRTUAL_KEYBOARD_CONFIG = new InjectionToken('VIRTUAL_KEYBOARD_CONFIG');
|
|
3
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3lzdGVsYWItdmlydHVhbC1rZXlib2FyZC5jb25maWcuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9zeXN0ZWxhYi12aXJ0dWFsLWtleWJvYXJkL3NyYy9saWIvc3lzdGVsYWItdmlydHVhbC1rZXlib2FyZC5jb25maWcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUcvQyxNQUFNLENBQUMsTUFBTSx1QkFBdUIsR0FBRyxJQUFJLGNBQWMsQ0FBZ0MseUJBQXlCLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGlvblRva2VuIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBTeXN0ZWxhYlZpcnR1YWxLZXlib2FyZElucHV0TWV0aG9kcywgU3lzdGVsYWJWaXJ0dWFsS2V5Ym9hcmRMYXlvdXRzIH0gZnJvbSAnLi9jb25zdGFudHMnO1xuXG5leHBvcnQgY29uc3QgVklSVFVBTF9LRVlCT0FSRF9DT05GSUcgPSBuZXcgSW5qZWN0aW9uVG9rZW48U3lzdGVsYWJWaXJ0dWFsS2V5Ym9hcmRDb25maWc+
|
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3lzdGVsYWItdmlydHVhbC1rZXlib2FyZC5jb25maWcuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9zeXN0ZWxhYi12aXJ0dWFsLWtleWJvYXJkL3NyYy9saWIvc3lzdGVsYWItdmlydHVhbC1rZXlib2FyZC5jb25maWcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUcvQyxNQUFNLENBQUMsTUFBTSx1QkFBdUIsR0FBRyxJQUFJLGNBQWMsQ0FBZ0MseUJBQXlCLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGlvblRva2VuIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBTeXN0ZWxhYlZpcnR1YWxLZXlib2FyZElucHV0TWV0aG9kcywgU3lzdGVsYWJWaXJ0dWFsS2V5Ym9hcmRMYXlvdXRzIH0gZnJvbSAnLi9jb25zdGFudHMnO1xuXG5leHBvcnQgY29uc3QgVklSVFVBTF9LRVlCT0FSRF9DT05GSUcgPSBuZXcgSW5qZWN0aW9uVG9rZW48U3lzdGVsYWJWaXJ0dWFsS2V5Ym9hcmRDb25maWc+KCdWSVJUVUFMX0tFWUJPQVJEX0NPTkZJRycpO1xuXG5leHBvcnQgaW50ZXJmYWNlIFN5c3RlbGFiVmlydHVhbEtleWJvYXJkQ29uZmlnIHtcbiAgICBsYXlvdXQ/OiBTeXN0ZWxhYlZpcnR1YWxLZXlib2FyZExheW91dHM7XG4gICAgaW5wdXRNZXRob2Q/OiBTeXN0ZWxhYlZpcnR1YWxLZXlib2FyZElucHV0TWV0aG9kcztcbiAgICBzaG93SWNvbj86IGJvb2xlYW47XG59XG4iXX0=
|
|
@@ -18,7 +18,7 @@ export class SystelabVirtualKeyboardDirective {
|
|
|
18
18
|
this.overlayService.updatePosition();
|
|
19
19
|
}
|
|
20
20
|
}
|
|
21
|
-
onFocus(
|
|
21
|
+
onFocus() {
|
|
22
22
|
console.log('Focused');
|
|
23
23
|
if (this.overlayService.isCreated()) {
|
|
24
24
|
this.closePanel();
|
|
@@ -75,12 +75,12 @@ export class SystelabVirtualKeyboardDirective {
|
|
|
75
75
|
this.config = this.virtualKeyboardConfig;
|
|
76
76
|
}
|
|
77
77
|
ngOnInit() {
|
|
78
|
-
if (this.config?.
|
|
78
|
+
if (this.config?.showIcon) {
|
|
79
79
|
this.attachKeyboardIcon();
|
|
80
80
|
}
|
|
81
81
|
}
|
|
82
82
|
ngAfterViewInit() {
|
|
83
|
-
if (this.vkEnabled && this.config?.
|
|
83
|
+
if (this.vkEnabled && this.config?.showIcon) {
|
|
84
84
|
const keyboardIcon = this.elementRef.nativeElement.parentElement.querySelector('i');
|
|
85
85
|
keyboardIcon.addEventListener('click', this.togglePanel.bind(this));
|
|
86
86
|
}
|
|
@@ -190,4 +190,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.9", ngImpor
|
|
|
190
190
|
}], vkConfig: [{
|
|
191
191
|
type: Input
|
|
192
192
|
}] } });
|
|
193
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3lzdGVsYWItdmlydHVhbC1rZXlib2FyZC5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9zeXN0ZWxhYi12aXJ0dWFsLWtleWJvYXJkL3NyYy9saWIvc3lzdGVsYWItdmlydHVhbC1rZXlib2FyZC5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7R0FPRztBQUVILE9BQU8sRUFHTCxTQUFTLEVBRVQsWUFBWSxFQUNaLE1BQU0sRUFDTixLQUFLLEVBR0wsUUFBUSxHQUVULE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUUzQyxPQUFPLEVBQUUsaUNBQWlDLEVBQUUsOEJBQThCLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFHaEcsT0FBTyxFQUFpQyx1QkFBdUIsRUFBRSxNQUFNLG9DQUFvQyxDQUFDOzs7QUFLNUcsTUFBTSxPQUFPLGdDQUFnQztJQUszQyxnQkFBZ0I7UUFDZCxJQUFJLElBQUksQ0FBQyxjQUFjLENBQUMsU0FBUyxFQUFFLEVBQUU7WUFDbkMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxjQUFjLEVBQUUsQ0FBQztTQUN0QztJQUNILENBQUM7SUFHRCxPQUFPLENBQUMsS0FBOEI7UUFDcEMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUN2QixJQUFJLElBQUksQ0FBQyxjQUFjLENBQUMsU0FBUyxFQUFFLEVBQUU7WUFDbkMsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1NBQ25CO1FBQ0QsSUFBSSxDQUFDLGNBQWMsQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUM3QyxJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxNQUFNLEVBQUUsRUFBRTtZQUNqQyxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7U0FDbEI7SUFDSCxDQUFDO0lBR0QsSUFDSSxTQUFTLENB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QUFDO1NBQ3hDO0lBQ0gsQ0FBQzs4R0FwS1UsZ0NBQWdDLDBIQTBFakMsUUFBUSxhQUNJLHVCQUF1QjtrR0EzRWxDLGdDQUFnQzs7MkZBQWhDLGdDQUFnQztrQkFINUMsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsdUNBQXVDO2lCQUNsRDs7MEJBMkVJLE1BQU07MkJBQUMsUUFBUTs7MEJBQ2YsUUFBUTs7MEJBQUksTUFBTTsyQkFBQyx1QkFBdUI7eUNBdEU3QyxnQkFBZ0I7c0JBSmYsWUFBWTt1QkFBQyxrQkFBa0IsRUFBRSxDQUFDLFFBQVEsQ0FBQzs7c0JBQzNDLFlBQVk7dUJBQUMsaUJBQWlCLEVBQUUsQ0FBQyxRQUFRLENBQUM7O3NCQUMxQyxZQUFZO3VCQUFDLGNBQWMsRUFBRSxDQUFDLFFBQVEsQ0FBQzs7c0JBQ3ZDLFlBQVk7dUJBQUMsaUJBQWlCLEVBQUUsQ0FBQyxRQUFRLENBQUM7Z0JBUTNDLE9BQU87c0JBRE4sWUFBWTt1QkFBQyxPQUFPLEVBQUUsQ0FBQyxRQUFRLENBQUM7Z0JBYzdCLFNBQVM7c0JBRFosS0FBSztnQkFjRixhQUFhO3NCQURoQixLQUFLO2dCQWNGLE9BQU87c0JBRFYsS0FBSztnQkFVRixRQUFRO3NCQURYLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogQ29weXJpZ2h0IChjKSAyMDIwIC0gMjAyNCAtIEluc3RydW1lbnRhdGlvbiBMYWJvcmF0b3J5IENvbXBhbnkgYW5kIFN5c3RlbGFiIFRlY2hub2xvZ2llcywgU0EuIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKiBOT1RJQ0U6ICBBbGwgaW5mb3JtYXRpb24gY29udGFpbmVkIGhlcmVpbiBpcyBhbmQgcmVtYWlucyB0aGUgcHJvcGVydHkgb2YgSW5zdHJ1bWVudGF0aW9uIExhYm9yYXRvcnkgQ29tcGFueSBhbmQgaXRzXG4gKiBhZmZpbGlhdGVzLCBpZiBhbnkuICBUaGUgaW50ZWxsZWN0dWFsIGFuZCB0ZWNobmljYWwgY29uY2VwdHMgY29udGFpbmVkIGhlcmVpbiBhcmUgcHJvcHJpZXRhcnkgdG8gSW5zdHJ1bWVudGF0aW9uXG4gKiBMYWJvcmF0b3J5IENvbXBhbnkgYW5kIGl0cyBhZmZpbGlhdGVzIGFuZCBtYXkgYmUgY292ZXJlZCBieSBVLlMuIGFuZCBmb3JlaWduIHBhdGVudHMgYW5kIHBhdGVudCBhcHBsaWNhdGlvbnMsIGFuZC9vclxuICogYXJlIHByb3RlY3RlZCBieSB0cmFkZSBzZWNyZXQgb3IgY29weXJpZ2h0IGxhdy4gRGlzc2VtaW5hdGlvbiBvZiB0aGlzIGluZm9ybWF0aW9uIG9yIHJlcHJvZHVjdGlvbiBvZiB0aGlzIG1hdGVyaWFsIGlzXG4gKiBzdHJpY3RseSBmb3JiaWRkZW4gdW5sZXNzIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbiBpcyBJbnN0cnVtZW50YXRpb24gTGFib3JhdG9yeSBDb21wYW55LlxuICovXG5cbmltcG9ydCB7XG4gIEFmdGVyVmlld0luaXQsXG4gIENvbXBvbmVudFJlZixcbiAgRGlyZWN0aXZlLFxuICBFbGVtZW50UmVmLFxuICBIb3N0TGlzdGVuZXIsXG4gIEluamVjdCxcbiAgSW5wdXQsXG4gIE9uRGVzdHJveSxcbiAgT25Jbml0LFxuICBPcHRpb25hbCxcbiAgUmVuZGVyZXIyLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgRE9DVU1FTlQgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuXG5pbXBvcnQgeyBTeXN0ZWxhYlZpcnR1YWxLZXlib2FyZElucHV0VHlwZXMsIFN5c3RlbGFiVmlydHVhbEtleWJvYXJkTGF5b3V0cyB9IGZyb20gJy4vY29uc3RhbnRzJztcbmltcG9ydCB7IFN5c3RlbGFiVmlydHVhbEtleWJvYXJkQ29tcG9uZW50IH0gZnJvbSAnLi9zeXN0ZWxhYi12aXJ0dWFsLWtleWJvYXJkLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBTeXN0ZWxhYlZpcnR1YWxLZXlib2FyZE92ZXJsYXlTZXJ2aWNlIH0gZnJvbSAnLi9zeXN0ZWxhYi12aXJ0dWFsLWtleWJvYXJkLW92ZXJsYXkuc2VydmljZSc7XG5pbXBvcnQgeyBTeXN0ZWxhYlZpcnR1YWxLZXlib2FyZENvbmZpZywgVklSVFVBTF9LRVlCT0FSRF9DT05GSUcgfSBmcm9tICcuL3N5c3RlbGFiLXZpcnR1YWwta2V5Ym9hcmQuY29uZmlnJztcblxuQERpcmVjdGl2ZSh7XG4gIHNlbGVjdG9yOiAnaW5wdXRbdmtFbmFibGVkXSwgdGV4dGFyZWFbdmtFbmFibGVkXScsXG59KVxuZXhwb3J0IGNsYXNzIFN5c3RlbGFiVmlydHVhbEtleWJvYXJkRGlyZWN0aXZlIGltcGxlbWVudHMgT25Jbml0LCBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3kge1xuICBASG9zdExpc3RlbmVyKCd3aW5kb3c6dG91Y2htb3ZlJywgWyckZXZlbnQnXSlcbiAgQEhvc3RMaXN0ZW5lcignd2luZG93OnRvdWNoZW5kJywgWyckZXZlbnQnXSlcbiAgQEhvc3RMaXN0ZW5lcignd2luZG93OndoZWVsJywgWyckZXZlbnQnXSlcbiAgQEhvc3RMaXN0ZW5lcignZG9jdW1lbnQ6c2Nyb2xsJywgWyckZXZlbnQnXSlcbiAgb25Eb2N1bWVudFNjcm9sbCgpIHtcbiAgICBpZiAodGhpcy5vdmVybGF5U2VydmljZS5pc0NyZWF0ZWQoKSkge1xuICAgICAgdGhpcy5vdmVybGF5U2VydmljZS51cGRhdGVQb3NpdGlvbigpO1xuICAgIH1cbiAgfVxuXG4gIEBIb3N0TGlzdGVuZXIoJ2ZvY3VzJywgWyckZXZlbnQnXSlcbiAgb25Gb2N1cyhldmVudDogTW91c2VFdmVudCB8IFRvdWNoRXZlbnQpOiB2b2lkIHtcbiAgICBjb25zb2xlLmxvZygnRm9jdXNlZCcpO1xuICAgIGlmICh0aGlzLm92ZXJsYXlTZXJ2aWNlLmlzQ3JlYXRlZCgpKSB7XG4gICAgICB0aGlzLmNsb3NlUGFuZWwoKTtcbiAgICB9XG4gICAgdGhpcy5vdmVybGF5U2VydmljZS5zZXRGb2N1c0Rpc3BhdGNoZWQodHJ1ZSk7XG4gICAgaWYgKCF0aGlzLm92ZXJsYXlTZXJ2aWNlLmlzT3BlbigpKSB7XG4gICAgICB0aGlzLm9wZW5QYW5lbCgpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgZW5hYmxlZCA9IGZhbHNlO1xuICBASW5wdXQoKVxuICBzZXQgdmtFbmFibGVkKGVuYWJsZWQ6IGJvb2xlYW4gfCBzdHJpbmcpIHtcbiAgICBpZiAodHlwZW9mIGVuYWJsZWQgPT09ICdzdHJpbmcnKSB7XG4gICAgICB0aGlzLmVuYWJsZWQgPSB0cnVlO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmVuYWJsZWQgPSBlbmFibGVkO1xuICAgIH1cbiAgfTtcbiAgZ2V0IHZrRW5hYmxlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5lbmFibGVkO1xuICB9XG5cbiAgcHJpdmF0ZSBmaXhlZEJvdHRvbSA9IGZhbHNlO1xuICBASW5wdXQoKVxuICBnZXQgdmtGaXhlZEJvdHRvbSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5maXhlZEJvdHRvbTtcbiAgfVxuICBzZXQgdmtGaXhlZEJvdHRvbShmaXhlZEJvdHRvbTogYm9vbGVhbiB8IHN0cmluZykge1xuICAgIGlmICh0eXBlb2YgZml4ZWRCb3R0b20gPT09ICdzdHJpbmcnKSB7XG4gICAgICB0aGlzLmZpeGVkQm90dG9tID0gdHJ1ZTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5maXhlZEJvdHRvbSA9IGZpeGVkQm90dG9tO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgZGVidWcgPSBmYWxzZTtcbiAgQElucHV0KClcbiAgZ2V0IHZrRGVidWcoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuZGVidWc7XG4gIH1cbiAgc2V0IHZrRGVidWcoZGVidWc6IGJvb2xlYW4pIHtcbiAgICB0aGlzLmRlYnVnID0gZGVidWc7XG4gIH1cblxuICBwcml2YXRlIGNvbmZpZzogU3lzdGVsYWJWaXJ0dWFsS2V5Ym9hcmRDb25maWc7XG4gIEBJbnB1dCgpXG4gIGdldCB2a0NvbmZpZygpOiBTeXN0ZWxhYlZpcnR1YWxLZXlib2FyZENvbmZpZyB7XG4gICAgcmV0dXJuIHRoaXMuY29uZmlnO1xuICB9XG4gIHNldCB2a0NvbmZpZyhjb25maWc6IFN5c3RlbGFiVmlydHVhbEtleWJvYXJkQ29uZmlnKSB7XG4gICAgdGhpcy5jb25maWcgPSBjb25maWc7XG4gIH1cblxuICBwcml2YXRlIHBhbmVsUmVmITogQ29tcG9uZW50UmVmPFN5c3RlbGFiVmlydHVhbEtleWJvYXJkQ29tcG9uZW50PjtcbiAgcHJpdmF0ZSBzaG93S2V5Ym9hcmRCdXR0b25FbGVtZW50OiBIVE1MRWxlbWVudDtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHJlYWRvbmx5IGVsZW1lbnRSZWY6IEVsZW1lbnRSZWY8SFRNTElucHV0RWxlbWVudD4sXG4gICAgcHJpdmF0ZSByZWFkb25seSBvdmVybGF5U2VydmljZTogU3lzdGVsYWJWaXJ0dWFsS2V5Ym9hcmRPdmVybGF5U2VydmljZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IHJlbmRlcmVyOiBSZW5kZXJlcjIsXG4gICAgQEluamVjdChET0NVTUVOVCkgcHJpdmF0ZSByZWFkb25seSBkb2N1bWVudDogYW55LFxuICAgIEBPcHRpb25hbCgpIEBJbmplY3QoVklSVFVBTF9LRVlCT0FSRF9DT05GSUcpIHByaXZhdGUgdmlydHVhbEtleWJvYXJkQ29uZmlnOiBTeXN0ZWxhYlZpcnR1YWxLZXlib2FyZENvbmZpZyxcbiAgKSB7XG4gICAgdGhpcy5jb25maWcgPSB0aGlzLnZpcnR1YWxLZXlib2FyZENvbmZpZztcbiAgfVxuXG4gIG5nT25Jbml0KCkge1xuICAgIGlmICh0aGlzLmNvbmZpZz8uc2hvd0J1dHRvbikge1xuICAgICAgdGhpcy5hdHRhY2hLZXlib2FyZEljb24oKTtcbiAgICB9XG4gIH1cblxuICBuZ0FmdGVyVmlld0luaXQoKSB7XG4gICAgaWYgKHRoaXMudmtFbmFibGVkICYmIHRoaXMuY29uZmlnPy5zaG93QnV0dG9uKSB7XG4gICAgICBjb25zdCBrZXlib2FyZEljb24gPSB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5wYXJlbnRFbGVtZW50LnF1ZXJ5U2VsZWN0b3IoJ2knKTtcbiAgICAgIGtleWJvYXJkSWNvbi5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIHRoaXMudG9nZ2xlUGFuZWwuYmluZCh0aGlzKSk7XG4gICAgfVxuICB9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgaWYgKHRoaXMub3ZlcmxheVNlcnZpY2UuaXNDcmVhdGVkKCkpIHtcbiAgICAgIHRoaXMub3ZlcmxheVNlcnZpY2UuZGVzdHJveSgpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgdG9nZ2xlUGFuZWwoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMub3ZlcmxheVNlcnZpY2UuaXNPcGVuKCkpIHtcbiAgICAgIHRoaXMuY2xvc2VQYW5lbCgpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLm9wZW5QYW5lbCgpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgb3BlblBhbmVsKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLm92ZXJsYXlTZXJ2aWNlLmlzQ3JlYXRlZCgpKSB7XG4gICAgICB0aGlzLm92ZXJsYXlTZXJ2aWNlLmRlc3Ryb3koKTtcbiAgICB9XG4gICAgaWYgKHRoaXMub3ZlcmxheVNlcnZpY2UuaGFzQXR0YWNoZWQoKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IGN1cnJlbnRMYXlvdXQgPSB0aGlzLmdldExheW91dCh0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCk7XG5cbiAgICB0aGlzLnBhbmVsUmVmID0gdGhpcy5vdmVybGF5U2VydmljZS5jcmVhdGUodGhpcy5pbnB1dE9yaWdpbigpLCB0aGlzLnNob3dLZXlib2FyZEJ1dHRvbkVsZW1lbnQsIHRoaXMudmtGaXhlZEJvdHRvbSwgY3VycmVudExheW91dCk7XG4gICAgdGhpcy5wYW5lbFJlZi5pbnN0YW5jZS5kZWJ1ZyA9IHRoaXMudmtEZWJ1ZztcbiAgICB0aGlzLnBhbmVsUmVmLmluc3RhbmNlLnNldEFjdGl2ZUlucHV0KHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50KTtcbiAgICB0aGlzLnBhbmVsUmVmLmluc3RhbmNlLnNldExheW91dChjdXJyZW50TGF5b3V0KTtcbiAgICB0aGlzLnBhbmVsUmVmLmluc3RhbmNlLmNsb3NlUGFuZWwuc3Vic2NyaWJlKCgpID0+IHRoaXMuY2xvc2VQYW5lbCgpKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0TGF5b3V0KGFjdGl2ZUlucHV0RWxlbWVudDogSFRNTElucHV0RWxlbWVudCB8IEhUTUxUZXh0QXJlYUVsZW1lbnQpOiBTeXN0ZWxhYlZpcnR1YWxLZXlib2FyZExheW91dHMge1xuICAgIGlmICh0aGlzLmNvbmZpZz8uaGFzT3duUHJvcGVydHkoJ2xheW91dCcpKSB7XG4gICAgICByZXR1cm4gdGhpcy5jb25maWcubGF5b3V0O1xuICAgIH1cbiAgICBpZiAodGhpcy5pc0lucHV0QWxwaGFiZXRpYyhhY3RpdmVJbnB1dEVsZW1lbnQpKSB7XG4gICAgICByZXR1cm4gU3lzdGVsYWJWaXJ0dWFsS2V5Ym9hcmRMYXlvdXRzLmRlZmF1bHQ7XG4gICAgfSBlbHNlIGlmICh0aGlzLmlzSW5wdXROdW1lcmljKGFjdGl2ZUlucHV0RWxlbWVudCkpIHtcbiAgICAgIHJldHVybiBTeXN0ZWxhYlZpcnR1YWxLZXlib2FyZExheW91dHMubnVtZXJpYztcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIFN5c3RlbGFiVmlydHVhbEtleWJvYXJkTGF5b3V0cy5kZWZhdWx0O1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgaXNJbnB1dEFscGhhYmV0aWMoYWN0aXZlSW5wdXRFbGVtZW50OiBIVE1MSW5wdXRFbGVtZW50IHwgSFRNTFRleHRBcmVhRWxlbWVudCk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IGlucHV0VHlwZSA9IGFjdGl2ZUlucHV0RWxlbWVudD8udHlwZTtcbiAgICByZXR1cm4gaW5wdXRUeXBlICYmIFtTeXN0ZWxhYlZpcnR1YWxLZXlib2FyZElucHV0VHlwZXMudGV4dCwgU3lzdGVsYWJWaXJ0dWFsS2V5Ym9hcmRJbnB1dFR5cGVzLnBhc3N3b3JkXS5zb21lKChpKSA9PiBpID09PSBpbnB1dFR5cGUpO1xuICB9XG5cbiAgcHJpdmF0ZSBpc0lucHV0TnVtZXJpYyhhY3RpdmVJbnB1dEVsZW1lbnQ6IEhUTUxJbnB1dEVsZW1lbnQgfCBIVE1MVGV4dEFyZWFFbGVtZW50KTogYm9vbGVhbiB7XG4gICAgY29uc3QgaW5wdXRUeXBlID0gYWN0aXZlSW5wdXRFbGVtZW50Py50eXBlO1xuICAgIHJldHVybiBpbnB1dFR5cGUgJiYgW1N5c3RlbGFiVmlydHVhbEtleWJvYXJkSW5wdXRUeXBlcy5udW1iZXJdLnNvbWUoKGkpID0+IGkgPT09IGlucHV0VHlwZSk7XG4gIH1cblxuICBwcml2YXRlIGNsb3NlUGFuZWwoKTogdm9pZCB7XG4gICAgdGhpcy5vdmVybGF5U2VydmljZS5kZXN0cm95KCk7XG4gIH1cblxuICBwcml2YXRlIGlucHV0T3JpZ2luKCk6IGFueSB7XG4gICAgcmV0dXJuIHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50O1xuICB9XG5cbiAgcHJpdmF0ZSBhdHRhY2hLZXlib2FyZEljb24oKSB7XG4gICAgaWYgKHRoaXMudmtFbmFibGVkKSB7XG4gICAgICBjb25zdCBjaGlsZCA9IHRoaXMuZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnaScpO1xuICAgICAgY2hpbGQuY2xhc3NMaXN0LmFkZCgnZmEnKTtcbiAgICAgIGNoaWxkLmNsYXNzTGlzdC5hZGQoJ2ZhLWtleWJvYXJkJyk7XG4gICAgICBjaGlsZC5jbGFzc0xpc3QuYWRkKCd2aXJ0dWFsLWtleWJvYXJkLXNob3ctYnV0dG9uJyk7XG4gICAgICB0aGlzLnJlbmRlcmVyLmFwcGVuZENoaWxkKHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LnBhcmVudEVsZW1lbnQsIGNoaWxkKTtcbiAgICAgIHRoaXMuc2hvd0tleWJvYXJkQnV0dG9uRWxlbWVudCA9IGNoaWxkO1xuICAgIH1cbiAgfVxufVxuIl19
|
|
193
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3lzdGVsYWItdmlydHVhbC1rZXlib2FyZC5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9zeXN0ZWxhYi12aXJ0dWFsLWtleWJvYXJkL3NyYy9saWIvc3lzdGVsYWItdmlydHVhbC1rZXlib2FyZC5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7R0FPRztBQUVILE9BQU8sRUFHSCxTQUFTLEVBRVQsWUFBWSxFQUNaLE1BQU0sRUFDTixLQUFLLEVBR0wsUUFBUSxHQUVYLE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUUzQyxPQUFPLEVBQUUsaUNBQWlDLEVBQUUsOEJBQThCLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFHaEcsT0FBTyxFQUFpQyx1QkFBdUIsRUFBRSxNQUFNLG9DQUFvQyxDQUFDOzs7QUFLNUcsTUFBTSxPQUFPLGdDQUFnQztJQUt6QyxnQkFBZ0I7UUFDWixJQUFJLElBQUksQ0FBQyxjQUFjLENBQUMsU0FBUyxFQUFFLEVBQUU7WUFDakMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxjQUFjLEVBQUUsQ0FBQztTQUN4QztJQUNMLENBQUM7SUFHRCxPQUFPO1FBQ0gsT0FBTyxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUN2QixJQUFJLElBQUksQ0FBQyxjQUFjLENBQUMsU0FBUyxFQUFFLEVBQUU7WUFDakMsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1NBQ3JCO1FBQ0QsSUFBSSxDQUFDLGNBQWMsQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUM3QyxJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxNQUFNLEVBQUUsRUFBRTtZQUMvQixJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7U0FDcEI7SUFDTCxDQUFDO0lBSUQsSUFDSSxTQUFTLENBQUMsT0FBeUI7UUFD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Q0FBQzs4R0E1S1EsZ0NBQWdDLDBIQWtGN0IsUUFBUSxhQUNJLHVCQUF1QjtrR0FuRnRDLGdDQUFnQzs7MkZBQWhDLGdDQUFnQztrQkFINUMsU0FBUzttQkFBQztvQkFDUCxRQUFRLEVBQUUsdUNBQXVDO2lCQUNwRDs7MEJBbUZRLE1BQU07MkJBQUMsUUFBUTs7MEJBQ2YsUUFBUTs7MEJBQUksTUFBTTsyQkFBQyx1QkFBdUI7eUNBOUUvQyxnQkFBZ0I7c0JBSmYsWUFBWTt1QkFBQyxrQkFBa0IsRUFBRSxDQUFDLFFBQVEsQ0FBQzs7c0JBQzNDLFlBQVk7dUJBQUMsaUJBQWlCLEVBQUUsQ0FBQyxRQUFRLENBQUM7O3NCQUMxQyxZQUFZO3VCQUFDLGNBQWMsRUFBRSxDQUFDLFFBQVEsQ0FBQzs7c0JBQ3ZDLFlBQVk7dUJBQUMsaUJBQWlCLEVBQUUsQ0FBQyxRQUFRLENBQUM7Z0JBUTNDLE9BQU87c0JBRE4sWUFBWTt1QkFBQyxPQUFPLEVBQUUsQ0FBQyxRQUFRLENBQUM7Z0JBZTdCLFNBQVM7c0JBRFosS0FBSztnQkFnQkYsYUFBYTtzQkFEaEIsS0FBSztnQkFnQkYsT0FBTztzQkFEVixLQUFLO2dCQVlGLFFBQVE7c0JBRFgsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBDb3B5cmlnaHQgKGMpIDIwMjAgLSAyMDI0IC0gSW5zdHJ1bWVudGF0aW9uIExhYm9yYXRvcnkgQ29tcGFueSBhbmQgU3lzdGVsYWIgVGVjaG5vbG9naWVzLCBTQS4gQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqIE5PVElDRTogIEFsbCBpbmZvcm1hdGlvbiBjb250YWluZWQgaGVyZWluIGlzIGFuZCByZW1haW5zIHRoZSBwcm9wZXJ0eSBvZiBJbnN0cnVtZW50YXRpb24gTGFib3JhdG9yeSBDb21wYW55IGFuZCBpdHNcbiAqIGFmZmlsaWF0ZXMsIGlmIGFueS4gIFRoZSBpbnRlbGxlY3R1YWwgYW5kIHRlY2huaWNhbCBjb25jZXB0cyBjb250YWluZWQgaGVyZWluIGFyZSBwcm9wcmlldGFyeSB0byBJbnN0cnVtZW50YXRpb25cbiAqIExhYm9yYXRvcnkgQ29tcGFueSBhbmQgaXRzIGFmZmlsaWF0ZXMgYW5kIG1heSBiZSBjb3ZlcmVkIGJ5IFUuUy4gYW5kIGZvcmVpZ24gcGF0ZW50cyBhbmQgcGF0ZW50IGFwcGxpY2F0aW9ucywgYW5kL29yXG4gKiBhcmUgcHJvdGVjdGVkIGJ5IHRyYWRlIHNlY3JldCBvciBjb3B5cmlnaHQgbGF3LiBEaXNzZW1pbmF0aW9uIG9mIHRoaXMgaW5mb3JtYXRpb24gb3IgcmVwcm9kdWN0aW9uIG9mIHRoaXMgbWF0ZXJpYWwgaXNcbiAqIHN0cmljdGx5IGZvcmJpZGRlbiB1bmxlc3MgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uIGlzIEluc3RydW1lbnRhdGlvbiBMYWJvcmF0b3J5IENvbXBhbnkuXG4gKi9cblxuaW1wb3J0IHtcbiAgICBBZnRlclZpZXdJbml0LFxuICAgIENvbXBvbmVudFJlZixcbiAgICBEaXJlY3RpdmUsXG4gICAgRWxlbWVudFJlZixcbiAgICBIb3N0TGlzdGVuZXIsXG4gICAgSW5qZWN0LFxuICAgIElucHV0LFxuICAgIE9uRGVzdHJveSxcbiAgICBPbkluaXQsXG4gICAgT3B0aW9uYWwsXG4gICAgUmVuZGVyZXIyLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgRE9DVU1FTlQgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuXG5pbXBvcnQgeyBTeXN0ZWxhYlZpcnR1YWxLZXlib2FyZElucHV0VHlwZXMsIFN5c3RlbGFiVmlydHVhbEtleWJvYXJkTGF5b3V0cyB9IGZyb20gJy4vY29uc3RhbnRzJztcbmltcG9ydCB7IFN5c3RlbGFiVmlydHVhbEtleWJvYXJkQ29tcG9uZW50IH0gZnJvbSAnLi9zeXN0ZWxhYi12aXJ0dWFsLWtleWJvYXJkLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBTeXN0ZWxhYlZpcnR1YWxLZXlib2FyZE92ZXJsYXlTZXJ2aWNlIH0gZnJvbSAnLi9zeXN0ZWxhYi12aXJ0dWFsLWtleWJvYXJkLW92ZXJsYXkuc2VydmljZSc7XG5pbXBvcnQgeyBTeXN0ZWxhYlZpcnR1YWxLZXlib2FyZENvbmZpZywgVklSVFVBTF9LRVlCT0FSRF9DT05GSUcgfSBmcm9tICcuL3N5c3RlbGFiLXZpcnR1YWwta2V5Ym9hcmQuY29uZmlnJztcblxuQERpcmVjdGl2ZSh7XG4gICAgc2VsZWN0b3I6ICdpbnB1dFt2a0VuYWJsZWRdLCB0ZXh0YXJlYVt2a0VuYWJsZWRdJyxcbn0pXG5leHBvcnQgY2xhc3MgU3lzdGVsYWJWaXJ0dWFsS2V5Ym9hcmREaXJlY3RpdmUgaW1wbGVtZW50cyBPbkluaXQsIEFmdGVyVmlld0luaXQsIE9uRGVzdHJveSB7XG4gICAgQEhvc3RMaXN0ZW5lcignd2luZG93OnRvdWNobW92ZScsIFsnJGV2ZW50J10pXG4gICAgQEhvc3RMaXN0ZW5lcignd2luZG93OnRvdWNoZW5kJywgWyckZXZlbnQnXSlcbiAgICBASG9zdExpc3RlbmVyKCd3aW5kb3c6d2hlZWwnLCBbJyRldmVudCddKVxuICAgIEBIb3N0TGlzdGVuZXIoJ2RvY3VtZW50OnNjcm9sbCcsIFsnJGV2ZW50J10pXG4gICAgb25Eb2N1bWVudFNjcm9sbCgpIHtcbiAgICAgICAgaWYgKHRoaXMub3ZlcmxheVNlcnZpY2UuaXNDcmVhdGVkKCkpIHtcbiAgICAgICAgICAgIHRoaXMub3ZlcmxheVNlcnZpY2UudXBkYXRlUG9zaXRpb24oKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIEBIb3N0TGlzdGVuZXIoJ2ZvY3VzJywgWyckZXZlbnQnXSlcbiAgICBvbkZvY3VzKCk6IHZvaWQge1xuICAgICAgICBjb25zb2xlLmxvZygnRm9jdXNlZCcpO1xuICAgICAgICBpZiAodGhpcy5vdmVybGF5U2VydmljZS5pc0NyZWF0ZWQoKSkge1xuICAgICAgICAgICAgdGhpcy5jbG9zZVBhbmVsKCk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5vdmVybGF5U2VydmljZS5zZXRGb2N1c0Rpc3BhdGNoZWQodHJ1ZSk7XG4gICAgICAgIGlmICghdGhpcy5vdmVybGF5U2VydmljZS5pc09wZW4oKSkge1xuICAgICAgICAgICAgdGhpcy5vcGVuUGFuZWwoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgZW5hYmxlZCA9IGZhbHNlO1xuXG4gICAgQElucHV0KClcbiAgICBzZXQgdmtFbmFibGVkKGVuYWJsZWQ6IGJvb2xlYW4gfCBzdHJpbmcpIHtcbiAgICAgICAgaWYgKHR5cGVvZiBlbmFibGVkID09PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgdGhpcy5lbmFibGVkID0gdHJ1ZTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuZW5hYmxlZCA9IGVuYWJsZWQ7XG4gICAgICAgIH1cbiAgICB9O1xuXG4gICAgZ2V0IHZrRW5hYmxlZCgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZW5hYmxlZDtcbiAgICB9XG5cbiAgICBwcml2YXRlIGZpeGVkQm90dG9tID0gZmFsc2U7XG5cbiAgICBASW5wdXQoKVxuICAgIGdldCB2a0ZpeGVkQm90dG9tKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5maXhlZEJvdHRvbTtcbiAgICB9XG5cbiAgICBzZXQgdmtGaXhlZEJvdHRvbShmaXhlZEJvdHRvbTogYm9vbGVhbiB8IHN0cmluZykge1xuICAgICAgICBpZiAodHlwZW9mIGZpeGVkQm90dG9tID09PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgdGhpcy5maXhlZEJvdHRvbSA9IHRydWU7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmZpeGVkQm90dG9tID0gZml4ZWRCb3R0b207XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGRlYnVnID0gZmFsc2U7XG5cbiAgICBASW5wdXQoKVxuICAgIGdldCB2a0RlYnVnKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5kZWJ1ZztcbiAgICB9XG5cbiAgICBzZXQgdmtEZWJ1ZyhkZWJ1ZzogYm9vbGVhbikge1xuICAgICAgICB0aGlzLmRlYnVnID0gZGVidWc7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBjb25maWc6IFN5c3RlbGFiVmlydHVhbEtleWJvYXJkQ29uZmlnO1xuXG4gICAgQElucHV0KClcbiAgICBnZXQgdmtDb25maWcoKTogU3lzdGVsYWJWaXJ0dWFsS2V5Ym9hcmRDb25maWcge1xuICAgICAgICByZXR1cm4gdGhpcy5jb25maWc7XG4gICAgfVxuXG4gICAgc2V0IHZrQ29uZmlnKGNvbmZpZzogU3lzdGVsYWJWaXJ0dWFsS2V5Ym9hcmRDb25maWcpIHtcbiAgICAgICAgdGhpcy5jb25maWcgPSBjb25maWc7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBwYW5lbFJlZiE6IENvbXBvbmVudFJlZjxTeXN0ZWxhYlZpcnR1YWxLZXlib2FyZENvbXBvbmVudD47XG4gICAgcHJpdmF0ZSBzaG93S2V5Ym9hcmRCdXR0b25FbGVtZW50OiBIVE1MRWxlbWVudDtcblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IGVsZW1lbnRSZWY6IEVsZW1lbnRSZWY8SFRNTElucHV0RWxlbWVudD4sXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgb3ZlcmxheVNlcnZpY2U6IFN5c3RlbGFiVmlydHVhbEtleWJvYXJkT3ZlcmxheVNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgcmVuZGVyZXI6IFJlbmRlcmVyMixcbiAgICAgICAgQEluamVjdChET0NVTUVOVCkgcHJpdmF0ZSByZWFkb25seSBkb2N1bWVudDogYW55LFxuICAgICAgICBAT3B0aW9uYWwoKSBASW5qZWN0KFZJUlRVQUxfS0VZQk9BUkRfQ09ORklHKSBwcml2YXRlIHZpcnR1YWxLZXlib2FyZENvbmZpZzogU3lzdGVsYWJWaXJ0dWFsS2V5Ym9hcmRDb25maWcsXG4gICAgKSB7XG4gICAgICAgIHRoaXMuY29uZmlnID0gdGhpcy52aXJ0dWFsS2V5Ym9hcmRDb25maWc7XG4gICAgfVxuXG4gICAgbmdPbkluaXQoKSB7XG4gICAgICAgIGlmICh0aGlzLmNvbmZpZz8uc2hvd0ljb24pIHtcbiAgICAgICAgICAgIHRoaXMuYXR0YWNoS2V5Ym9hcmRJY29uKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBuZ0FmdGVyVmlld0luaXQoKSB7XG4gICAgICAgIGlmICh0aGlzLnZrRW5hYmxlZCAmJiB0aGlzLmNvbmZpZz8uc2hvd0ljb24pIHtcbiAgICAgICAgICAgIGNvbnN0IGtleWJvYXJkSWNvbiA9IHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LnBhcmVudEVsZW1lbnQucXVlcnlTZWxlY3RvcignaScpO1xuICAgICAgICAgICAga2V5Ym9hcmRJY29uLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgdGhpcy50b2dnbGVQYW5lbC5iaW5kKHRoaXMpKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5vdmVybGF5U2VydmljZS5pc0NyZWF0ZWQoKSkge1xuICAgICAgICAgICAgdGhpcy5vdmVybGF5U2VydmljZS5kZXN0cm95KCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIHRvZ2dsZVBhbmVsKCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5vdmVybGF5U2VydmljZS5pc09wZW4oKSkge1xuICAgICAgICAgICAgdGhpcy5jbG9zZVBhbmVsKCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLm9wZW5QYW5lbCgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBvcGVuUGFuZWwoKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLm92ZXJsYXlTZXJ2aWNlLmlzQ3JlYXRlZCgpKSB7XG4gICAgICAgICAgICB0aGlzLm92ZXJsYXlTZXJ2aWNlLmRlc3Ryb3koKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5vdmVybGF5U2VydmljZS5oYXNBdHRhY2hlZCgpKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBjdXJyZW50TGF5b3V0ID0gdGhpcy5nZXRMYXlvdXQodGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQpO1xuXG4gICAgICAgIHRoaXMucGFuZWxSZWYgPSB0aGlzLm92ZXJsYXlTZXJ2aWNlLmNyZWF0ZSh0aGlzLmlucHV0T3JpZ2luKCksIHRoaXMuc2hvd0tleWJvYXJkQnV0dG9uRWxlbWVudCwgdGhpcy52a0ZpeGVkQm90dG9tLCBjdXJyZW50TGF5b3V0KTtcbiAgICAgICAgdGhpcy5wYW5lbFJlZi5pbnN0YW5jZS5kZWJ1ZyA9IHRoaXMudmtEZWJ1ZztcbiAgICAgICAgdGhpcy5wYW5lbFJlZi5pbnN0YW5jZS5zZXRBY3RpdmVJbnB1dCh0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCk7XG4gICAgICAgIHRoaXMucGFuZWxSZWYuaW5zdGFuY2Uuc2V0TGF5b3V0KGN1cnJlbnRMYXlvdXQpO1xuICAgICAgICB0aGlzLnBhbmVsUmVmLmluc3RhbmNlLmNsb3NlUGFuZWwuc3Vic2NyaWJlKCgpID0+IHRoaXMuY2xvc2VQYW5lbCgpKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldExheW91dChhY3RpdmVJbnB1dEVsZW1lbnQ6IEhUTUxJbnB1dEVsZW1lbnQgfCBIVE1MVGV4dEFyZWFFbGVtZW50KTogU3lzdGVsYWJWaXJ0dWFsS2V5Ym9hcmRMYXlvdXRzIHtcbiAgICAgICAgaWYgKHRoaXMuY29uZmlnPy5oYXNPd25Qcm9wZXJ0eSgnbGF5b3V0JykpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmNvbmZpZy5sYXlvdXQ7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMuaXNJbnB1dEFscGhhYmV0aWMoYWN0aXZlSW5wdXRFbGVtZW50KSkge1xuICAgICAgICAgICAgcmV0dXJuIFN5c3RlbGFiVmlydHVhbEtleWJvYXJkTGF5b3V0cy5kZWZhdWx0O1xuICAgICAgICB9IGVsc2UgaWYgKHRoaXMuaXNJbnB1dE51bWVyaWMoYWN0aXZlSW5wdXRFbGVtZW50KSkge1xuICAgICAgICAgICAgcmV0dXJuIFN5c3RlbGFiVmlydHVhbEtleWJvYXJkTGF5b3V0cy5udW1lcmljO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIFN5c3RlbGFiVmlydHVhbEtleWJvYXJkTGF5b3V0cy5kZWZhdWx0O1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBpc0lucHV0QWxwaGFiZXRpYyhhY3RpdmVJbnB1dEVsZW1lbnQ6IEhUTUxJbnB1dEVsZW1lbnQgfCBIVE1MVGV4dEFyZWFFbGVtZW50KTogYm9vbGVhbiB7XG4gICAgICAgIGNvbnN0IGlucHV0VHlwZSA9IGFjdGl2ZUlucHV0RWxlbWVudD8udHlwZTtcbiAgICAgICAgcmV0dXJuIGlucHV0VHlwZSAmJiBbU3lzdGVsYWJWaXJ0dWFsS2V5Ym9hcmRJbnB1dFR5cGVzLnRleHQsIFN5c3RlbGFiVmlydHVhbEtleWJvYXJkSW5wdXRUeXBlcy5wYXNzd29yZF0uc29tZSgoaSkgPT4gaSA9PT0gaW5wdXRUeXBlKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGlzSW5wdXROdW1lcmljKGFjdGl2ZUlucHV0RWxlbWVudDogSFRNTElucHV0RWxlbWVudCB8IEhUTUxUZXh0QXJlYUVsZW1lbnQpOiBib29sZWFuIHtcbiAgICAgICAgY29uc3QgaW5wdXRUeXBlID0gYWN0aXZlSW5wdXRFbGVtZW50Py50eXBlO1xuICAgICAgICByZXR1cm4gaW5wdXRUeXBlICYmIFtTeXN0ZWxhYlZpcnR1YWxLZXlib2FyZElucHV0VHlwZXMubnVtYmVyXS5zb21lKChpKSA9PiBpID09PSBpbnB1dFR5cGUpO1xuICAgIH1cblxuICAgIHByaXZhdGUgY2xvc2VQYW5lbCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5vdmVybGF5U2VydmljZS5kZXN0cm95KCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBpbnB1dE9yaWdpbigpOiBIVE1MSW5wdXRFbGVtZW50IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50O1xuICAgIH1cblxuICAgIHByaXZhdGUgYXR0YWNoS2V5Ym9hcmRJY29uKCkge1xuICAgICAgICBpZiAodGhpcy52a0VuYWJsZWQpIHtcbiAgICAgICAgICAgIGNvbnN0IGNoaWxkID0gdGhpcy5kb2N1bWVudC5jcmVhdGVFbGVtZW50KCdpJyk7XG4gICAgICAgICAgICBjaGlsZC5jbGFzc0xpc3QuYWRkKCdmYScpO1xuICAgICAgICAgICAgY2hpbGQuY2xhc3NMaXN0LmFkZCgnZmEta2V5Ym9hcmQnKTtcbiAgICAgICAgICAgIGNoaWxkLmNsYXNzTGlzdC5hZGQoJ3ZpcnR1YWwta2V5Ym9hcmQtc2hvdy1idXR0b24nKTtcbiAgICAgICAgICAgIHRoaXMucmVuZGVyZXIuYXBwZW5kQ2hpbGQodGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQucGFyZW50RWxlbWVudCwgY2hpbGQpO1xuICAgICAgICAgICAgdGhpcy5zaG93S2V5Ym9hcmRCdXR0b25FbGVtZW50ID0gY2hpbGQ7XG4gICAgICAgIH1cbiAgICB9XG59XG4iXX0=
|
|
@@ -42,4 +42,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.9", ngImpor
|
|
|
42
42
|
exports: [SystelabVirtualKeyboardDirective],
|
|
43
43
|
}]
|
|
44
44
|
}] });
|
|
45
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
45
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3lzdGVsYWItdmlydHVhbC1rZXlib2FyZC5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9zeXN0ZWxhYi12aXJ0dWFsLWtleWJvYXJkL3NyYy9saWIvc3lzdGVsYWItdmlydHVhbC1rZXlib2FyZC5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUF1QixRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDOUQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxnQ0FBZ0MsRUFBRSxNQUFNLHVDQUF1QyxDQUFDO0FBQ3pGLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNyRCxPQUFPLEVBQWlDLHVCQUF1QixFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDNUcsT0FBTyxFQUFFLHFDQUFxQyxFQUFFLE1BQU0sNkNBQTZDLENBQUM7O0FBRXBHLE1BQU0sQ0FBQyxNQUFNLE9BQU8sR0FBRyxHQUFHLEVBQUU7SUFDeEIsTUFBTSxvQ0FBb0MsR0FBSSxPQUFlLENBQUMscUNBQXFDLElBQUksS0FBSyxDQUFDO0lBQzdHLElBQUksb0NBQW9DLEVBQUU7UUFDdEMsTUFBTSxJQUFJLEtBQUssQ0FBQyxxRUFBcUUsQ0FBQyxDQUFDO0tBQzFGO0lBQ0EsT0FBZSxDQUFDLHFDQUFxQyxHQUFHLElBQUksQ0FBQztBQUNsRSxDQUFDLENBQUM7QUFPRixNQUFNLE9BQU8sNkJBQTZCO0lBQy9CLE1BQU0sQ0FBQyxPQUFPLENBQUMsSUFBb0M7UUFDdEQsT0FBTztZQUNILFFBQVEsRUFBRSw2QkFBNkI7WUFDdkMsU0FBUyxFQUFFO2dCQUNQLHFDQUFxQztnQkFDckM7b0JBQ0ksT0FBTyxFQUFFLHVCQUF1QixFQUFFLFFBQVEsRUFBRSxJQUFJO2lCQUNuRDthQUNKO1NBQ0osQ0FBQztJQUNOLENBQUM7SUFFTSxNQUFNLENBQUMsUUFBUTtRQUNsQixPQUFPO1lBQ0gsUUFBUSxFQUFFLDZCQUE2QjtZQUN2QyxTQUFTLEVBQUUsRUFBRTtTQUNoQixDQUFDO0lBQ04sQ0FBQzs4R0FsQlEsNkJBQTZCOytHQUE3Qiw2QkFBNkIsaUJBSHZCLGdDQUFnQyxhQURyQyxZQUFZLEVBQUUsYUFBYSxhQUUzQixnQ0FBZ0M7K0dBRWpDLDZCQUE2QixZQUo1QixZQUFZLEVBQUUsYUFBYTs7MkZBSTVCLDZCQUE2QjtrQkFMekMsUUFBUTttQkFBQztvQkFDTixPQUFPLEVBQUUsQ0FBQyxZQUFZLEVBQUUsYUFBYSxDQUFDO29CQUN0QyxZQUFZLEVBQUUsQ0FBQyxnQ0FBZ0MsQ0FBQztvQkFDaEQsT0FBTyxFQUFFLENBQUMsZ0NBQWdDLENBQUM7aUJBQzlDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTW9kdWxlV2l0aFByb3ZpZGVycywgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBTeXN0ZWxhYlZpcnR1YWxLZXlib2FyZERpcmVjdGl2ZSB9IGZyb20gJy4vc3lzdGVsYWItdmlydHVhbC1rZXlib2FyZC5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgT3ZlcmxheU1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9vdmVybGF5JztcbmltcG9ydCB7IFN5c3RlbGFiVmlydHVhbEtleWJvYXJkQ29uZmlnLCBWSVJUVUFMX0tFWUJPQVJEX0NPTkZJRyB9IGZyb20gJy4vc3lzdGVsYWItdmlydHVhbC1rZXlib2FyZC5jb25maWcnO1xuaW1wb3J0IHsgU3lzdGVsYWJWaXJ0dWFsS2V5Ym9hcmRPdmVybGF5U2VydmljZSB9IGZyb20gJy4vc3lzdGVsYWItdmlydHVhbC1rZXlib2FyZC1vdmVybGF5LnNlcnZpY2UnO1xuXG5leHBvcnQgY29uc3QgZmFjdG9yeSA9ICgpID0+IHtcbiAgICBjb25zdCBzeXN0ZWxhYlZpcnR1YWxLZXlib2FyZE1vZHVsZUNyZWF0ZWQgPSAoZmFjdG9yeSBhcyBhbnkpLl9zeXN0ZWxhYlZpcnR1YWxLZXlib2FyZE1vZHVsZUNyZWF0ZWQgfHwgZmFsc2U7XG4gICAgaWYgKHN5c3RlbGFiVmlydHVhbEtleWJvYXJkTW9kdWxlQ3JlYXRlZCkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1N5c3RlbGFiVmlydHVhbEtleWJvYXJkTW9kdWxlQ3JlYXRlZC5mb3JSb290IGltcG9ydGVkIHRvIG1hbnkgdGltZXMnKTtcbiAgICB9XG4gICAgKGZhY3RvcnkgYXMgYW55KS5fc3lzdGVsYWJWaXJ0dWFsS2V5Ym9hcmRNb2R1bGVDcmVhdGVkID0gdHJ1ZTtcbn07XG5cbkBOZ01vZHVsZSh7XG4gICAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgT3ZlcmxheU1vZHVsZV0sXG4gICAgZGVjbGFyYXRpb25zOiBbU3lzdGVsYWJWaXJ0dWFsS2V5Ym9hcmREaXJlY3RpdmVdLFxuICAgIGV4cG9ydHM6IFtTeXN0ZWxhYlZpcnR1YWxLZXlib2FyZERpcmVjdGl2ZV0sXG59KVxuZXhwb3J0IGNsYXNzIFN5c3RlbGFiVmlydHVhbEtleWJvYXJkTW9kdWxlIHtcbiAgICBwdWJsaWMgc3RhdGljIGZvclJvb3QoY29uZj86IFN5c3RlbGFiVmlydHVhbEtleWJvYXJkQ29uZmlnKTogTW9kdWxlV2l0aFByb3ZpZGVyczxTeXN0ZWxhYlZpcnR1YWxLZXlib2FyZE1vZHVsZT4ge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgbmdNb2R1bGU6IFN5c3RlbGFiVmlydHVhbEtleWJvYXJkTW9kdWxlLFxuICAgICAgICAgICAgcHJvdmlkZXJzOiBbXG4gICAgICAgICAgICAgICAgU3lzdGVsYWJWaXJ0dWFsS2V5Ym9hcmRPdmVybGF5U2VydmljZSxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIHByb3ZpZGU6IFZJUlRVQUxfS0VZQk9BUkRfQ09ORklHLCB1c2VWYWx1ZTogY29uZlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIF1cbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBwdWJsaWMgc3RhdGljIGZvckNoaWxkKCk6IE1vZHVsZVdpdGhQcm92aWRlcnM8U3lzdGVsYWJWaXJ0dWFsS2V5Ym9hcmRNb2R1bGU+IHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIG5nTW9kdWxlOiBTeXN0ZWxhYlZpcnR1YWxLZXlib2FyZE1vZHVsZSxcbiAgICAgICAgICAgIHByb3ZpZGVyczogW10sXG4gICAgICAgIH07XG4gICAgfVxufVxuIl19
|
|
@@ -73,6 +73,7 @@ class SystelabVirtualKeyboardComponent {
|
|
|
73
73
|
this.selectedLayout = SystelabVirtualKeyboardLayouts.default;
|
|
74
74
|
this.caretPosition = null;
|
|
75
75
|
this.caretPositionEnd = null;
|
|
76
|
+
this.shiftPressed = false;
|
|
76
77
|
this.closePanel = new EventEmitter();
|
|
77
78
|
}
|
|
78
79
|
ngAfterViewInit() {
|
|
@@ -150,6 +151,7 @@ class SystelabVirtualKeyboardComponent {
|
|
|
150
151
|
let keyboardOptions = {
|
|
151
152
|
onKeyPress: (button) => this.handleKeyPress(button),
|
|
152
153
|
mergeDisplay: true,
|
|
154
|
+
theme: 'hg-theme-default hg-layout-default myTheme',
|
|
153
155
|
display: {
|
|
154
156
|
[SystelabVirtualKeyboardButton.Backspace]: 'delete',
|
|
155
157
|
},
|
|
@@ -193,7 +195,8 @@ class SystelabVirtualKeyboardComponent {
|
|
|
193
195
|
button = new DOMParser().parseFromString(button, 'text/html').body.textContent;
|
|
194
196
|
}
|
|
195
197
|
if (button === SystelabVirtualKeyboardButton.Shift || button === SystelabVirtualKeyboardButton.Lock) {
|
|
196
|
-
this.
|
|
198
|
+
this.shiftPressed = button === SystelabVirtualKeyboardButton.Shift;
|
|
199
|
+
this.toggleShiftLayout();
|
|
197
200
|
}
|
|
198
201
|
else if (button === SystelabVirtualKeyboardButton.Done) {
|
|
199
202
|
this.closePanel.emit();
|
|
@@ -210,6 +213,10 @@ class SystelabVirtualKeyboardComponent {
|
|
|
210
213
|
}
|
|
211
214
|
}
|
|
212
215
|
this.dispatchEvents(button);
|
|
216
|
+
if (this.shiftPressed) {
|
|
217
|
+
this.toggleShiftLayout();
|
|
218
|
+
}
|
|
219
|
+
this.shiftPressed = button === SystelabVirtualKeyboardButton.Shift;
|
|
213
220
|
}
|
|
214
221
|
handleButtonOutput(button) {
|
|
215
222
|
const commonParams = this.getCommonParams();
|
|
@@ -287,9 +294,9 @@ class SystelabVirtualKeyboardComponent {
|
|
|
287
294
|
}
|
|
288
295
|
return { key, code };
|
|
289
296
|
}
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
297
|
+
toggleShiftLayout() {
|
|
298
|
+
const currentLayout = this.keyboard.options.layoutName;
|
|
299
|
+
const selectedLayout = currentLayout === SystelabVirtualKeyboardLayouts.default ? SystelabVirtualKeyboardLayouts.shift : SystelabVirtualKeyboardLayouts.default;
|
|
293
300
|
this.setLayout(selectedLayout);
|
|
294
301
|
}
|
|
295
302
|
isStandardButton(button) {
|
|
@@ -342,8 +349,8 @@ class SystelabVirtualKeyboardComponent {
|
|
|
342
349
|
return output;
|
|
343
350
|
}
|
|
344
351
|
/*
|
|
345
|
-
|
|
346
|
-
|
|
352
|
+
* CARET METHODS
|
|
353
|
+
* */
|
|
347
354
|
caretEventHandler(event) {
|
|
348
355
|
let targetTagName = '';
|
|
349
356
|
if (event.target.tagName) {
|
|
@@ -403,11 +410,11 @@ class SystelabVirtualKeyboardComponent {
|
|
|
403
410
|
this.caretPositionEnd = endPosition;
|
|
404
411
|
}
|
|
405
412
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.9", ngImport: i0, type: SystelabVirtualKeyboardComponent, deps: [{ token: i0.ElementRef }, { token: VIRTUAL_KEYBOARD_CONFIG, optional: true }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
406
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.0.9", type: SystelabVirtualKeyboardComponent, isStandalone: true, selector: "systelab-virtual-keyboard.component", outputs: { closePanel: "closePanel" }, host: { listeners: { "window:keyup": "handleKeyUp($event)", "window:pointerup": "handleMouseUp($event)", "window:select": "handleSelect($event)", "window:selectionchange": "handleSelectionChange($event)" } }, ngImport: i0, template: "<!--\n ~ Copyright (c) 2020 - 2024 - Instrumentation Laboratory Company and Systelab Technologies, SA. All rights reserved.\n ~ NOTICE: All information contained herein is and remains the property of Instrumentation Laboratory Company and its\n ~ affiliates, if any. The intellectual and technical concepts contained herein are proprietary to Instrumentation\n ~ Laboratory Company and its affiliates and may be covered by U.S. and foreign patents and patent applications, and/or\n ~ are protected by trade secret or copyright law. Dissemination of this information or reproduction of this material is\n ~ strictly forbidden unless prior written permission is Instrumentation Laboratory Company.\n -->\n\n<div class=\"simple-keyboard\"></div>\n", styles: [":host{width:100%}\n"] }); }
|
|
413
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.0.9", type: SystelabVirtualKeyboardComponent, isStandalone: true, selector: "systelab-virtual-keyboard.component", outputs: { closePanel: "closePanel" }, host: { listeners: { "window:keyup": "handleKeyUp($event)", "window:pointerup": "handleMouseUp($event)", "window:select": "handleSelect($event)", "window:selectionchange": "handleSelectionChange($event)" } }, ngImport: i0, template: "<!--\n ~ Copyright (c) 2020 - 2024 - Instrumentation Laboratory Company and Systelab Technologies, SA. All rights reserved.\n ~ NOTICE: All information contained herein is and remains the property of Instrumentation Laboratory Company and its\n ~ affiliates, if any. The intellectual and technical concepts contained herein are proprietary to Instrumentation\n ~ Laboratory Company and its affiliates and may be covered by U.S. and foreign patents and patent applications, and/or\n ~ are protected by trade secret or copyright law. Dissemination of this information or reproduction of this material is\n ~ strictly forbidden unless prior written permission is Instrumentation Laboratory Company.\n -->\n\n<div class=\"simple-keyboard\"></div>\n", styles: [":host{width:100%}.simple-keyboard.hg-theme-default.myTheme{font-family:Lato,HelveticaNeue-Light,Helvetica Neue Light,Helvetica Neue,Helvetica,Arial,Lucida Grande,sans-serif}\n"] }); }
|
|
407
414
|
}
|
|
408
415
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.9", ngImport: i0, type: SystelabVirtualKeyboardComponent, decorators: [{
|
|
409
416
|
type: Component,
|
|
410
|
-
args: [{ selector: 'systelab-virtual-keyboard.component', standalone: true, imports: [], template: "<!--\n ~ Copyright (c) 2020 - 2024 - Instrumentation Laboratory Company and Systelab Technologies, SA. All rights reserved.\n ~ NOTICE: All information contained herein is and remains the property of Instrumentation Laboratory Company and its\n ~ affiliates, if any. The intellectual and technical concepts contained herein are proprietary to Instrumentation\n ~ Laboratory Company and its affiliates and may be covered by U.S. and foreign patents and patent applications, and/or\n ~ are protected by trade secret or copyright law. Dissemination of this information or reproduction of this material is\n ~ strictly forbidden unless prior written permission is Instrumentation Laboratory Company.\n -->\n\n<div class=\"simple-keyboard\"></div>\n", styles: [":host{width:100%}\n"] }]
|
|
417
|
+
args: [{ selector: 'systelab-virtual-keyboard.component', standalone: true, imports: [], template: "<!--\n ~ Copyright (c) 2020 - 2024 - Instrumentation Laboratory Company and Systelab Technologies, SA. All rights reserved.\n ~ NOTICE: All information contained herein is and remains the property of Instrumentation Laboratory Company and its\n ~ affiliates, if any. The intellectual and technical concepts contained herein are proprietary to Instrumentation\n ~ Laboratory Company and its affiliates and may be covered by U.S. and foreign patents and patent applications, and/or\n ~ are protected by trade secret or copyright law. Dissemination of this information or reproduction of this material is\n ~ strictly forbidden unless prior written permission is Instrumentation Laboratory Company.\n -->\n\n<div class=\"simple-keyboard\"></div>\n", styles: [":host{width:100%}.simple-keyboard.hg-theme-default.myTheme{font-family:Lato,HelveticaNeue-Light,Helvetica Neue Light,Helvetica Neue,Helvetica,Arial,Lucida Grande,sans-serif}\n"] }]
|
|
411
418
|
}], ctorParameters: () => [{ type: i0.ElementRef }, { type: undefined, decorators: [{
|
|
412
419
|
type: Optional
|
|
413
420
|
}, {
|
|
@@ -597,7 +604,7 @@ class SystelabVirtualKeyboardDirective {
|
|
|
597
604
|
this.overlayService.updatePosition();
|
|
598
605
|
}
|
|
599
606
|
}
|
|
600
|
-
onFocus(
|
|
607
|
+
onFocus() {
|
|
601
608
|
console.log('Focused');
|
|
602
609
|
if (this.overlayService.isCreated()) {
|
|
603
610
|
this.closePanel();
|
|
@@ -654,12 +661,12 @@ class SystelabVirtualKeyboardDirective {
|
|
|
654
661
|
this.config = this.virtualKeyboardConfig;
|
|
655
662
|
}
|
|
656
663
|
ngOnInit() {
|
|
657
|
-
if (this.config?.
|
|
664
|
+
if (this.config?.showIcon) {
|
|
658
665
|
this.attachKeyboardIcon();
|
|
659
666
|
}
|
|
660
667
|
}
|
|
661
668
|
ngAfterViewInit() {
|
|
662
|
-
if (this.vkEnabled && this.config?.
|
|
669
|
+
if (this.vkEnabled && this.config?.showIcon) {
|
|
663
670
|
const keyboardIcon = this.elementRef.nativeElement.parentElement.querySelector('i');
|
|
664
671
|
keyboardIcon.addEventListener('click', this.togglePanel.bind(this));
|
|
665
672
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"systelab-virtual-keyboard.mjs","sources":["../../../projects/systelab-virtual-keyboard/src/lib/constants.ts","../../../projects/systelab-virtual-keyboard/src/lib/systelab-virtual-keyboard.config.ts","../../../projects/systelab-virtual-keyboard/src/lib/systelab-virtual-keyboard.component.ts","../../../projects/systelab-virtual-keyboard/src/lib/systelab-virtual-keyboard.component.html","../../../projects/systelab-virtual-keyboard/src/lib/systelab-virtual-keyboard-overlay.service.ts","../../../projects/systelab-virtual-keyboard/src/lib/systelab-virtual-keyboard.directive.ts","../../../projects/systelab-virtual-keyboard/src/lib/systelab-virtual-keyboard.module.ts","../../../projects/systelab-virtual-keyboard/src/public-api.ts","../../../projects/systelab-virtual-keyboard/src/systelab-virtual-keyboard.ts"],"sourcesContent":["/*\n * Copyright (c) 2020 - 2024 - Instrumentation Laboratory Company and Systelab Technologies, SA. All rights reserved.\n * NOTICE: All information contained herein is and remains the property of Instrumentation Laboratory Company and its\n * affiliates, if any. The intellectual and technical concepts contained herein are proprietary to Instrumentation\n * Laboratory Company and its affiliates and may be covered by U.S. and foreign patents and patent applications, and/or\n * are protected by trade secret or copyright law. Dissemination of this information or reproduction of this material is\n * strictly forbidden unless prior written permission is Instrumentation Laboratory Company.\n */\n\nexport enum SystelabVirtualKeyboardButton {\n Done = '{done}',\n Enter = '{enter}',\n Shift = '{shift}',\n Lock = '{lock}',\n Backspace = '{bksp}',\n Language = '{language}',\n Space = '{space}',\n Tab = '{tab}',\n}\n\nexport enum SystelabVirtualKeyboardLayouts {\n default = 'default',\n shift = 'shift',\n numeric = 'numeric',\n}\n\nexport enum SystelabVirtualKeyboardInputMethods {\n onlyMouseEvents = 'onlyMouseEvents',\n onlyTouchEvents = 'onlyTouchEvents',\n}\n\nexport enum SystelabVirtualKeyboardInputTypes {\n text = 'text',\n number = 'number',\n password = 'password',\n}\n","import { InjectionToken } from '@angular/core';\nimport { SystelabVirtualKeyboardInputMethods, SystelabVirtualKeyboardLayouts } from './constants';\n\nexport const VIRTUAL_KEYBOARD_CONFIG = new InjectionToken<SystelabVirtualKeyboardConfig>('VIRTUAL_KEYBOARD_CONFIG');\n\nexport interface SystelabVirtualKeyboardConfig {\n layout?: SystelabVirtualKeyboardLayouts;\n inputMethod?: SystelabVirtualKeyboardInputMethods;\n showButton?: boolean;\n}\n","import {\n AfterViewInit,\n Component,\n ElementRef,\n EventEmitter,\n HostListener,\n Inject,\n Optional,\n Output\n} from '@angular/core';\nimport { SimpleKeyboard } from 'simple-keyboard';\nimport {\n SystelabVirtualKeyboardButton,\n SystelabVirtualKeyboardInputMethods,\n SystelabVirtualKeyboardInputTypes,\n SystelabVirtualKeyboardLayouts\n} from './constants';\nimport { SystelabVirtualKeyboardConfig, VIRTUAL_KEYBOARD_CONFIG } from './systelab-virtual-keyboard.config';\nimport { KeyboardOptions } from 'simple-keyboard/build/interfaces';\n\n@Component({\n selector: 'systelab-virtual-keyboard.component',\n standalone: true,\n imports: [],\n templateUrl: './systelab-virtual-keyboard.component.html',\n styleUrl: 'systelab-virtual-keyboard.component.scss',\n})\nexport class SystelabVirtualKeyboardComponent implements AfterViewInit {\n @HostListener('window:keyup', ['$event'])\n handleKeyUp(event: KeyboardEvent): void {\n if (event.isTrusted) {\n this.caretEventHandler(event);\n }\n }\n\n @HostListener('window:pointerup', ['$event'])\n handleMouseUp(event: PointerEvent): void {\n this.caretEventHandler(event);\n }\n\n @HostListener('window:select', ['$event'])\n handleSelect(event: Event): void {\n this.caretEventHandler(event);\n }\n\n @HostListener('window:selectionchange', ['$event'])\n handleSelectionChange(event: Event): void {\n this.caretEventHandler(event);\n }\n\n get maxLength(): number {\n return this.activeInputElement?.maxLength ?? -1;\n }\n\n get isTextarea(): boolean {\n return this.activeInputElement?.type === 'textarea';\n }\n\n public debug = false;\n private selectedLayout: SystelabVirtualKeyboardLayouts = SystelabVirtualKeyboardLayouts.default;\n private keyboard: SimpleKeyboard;\n private caretPosition: number | null = null;\n private caretPositionEnd: number | null = null;\n private activeInputElement!: HTMLInputElement | HTMLTextAreaElement | null;\n\n @Output() closePanel = new EventEmitter<void>();\n\n constructor(private elementRef: ElementRef<HTMLInputElement>, @Optional() @Inject(VIRTUAL_KEYBOARD_CONFIG) private virtualKeyboardConfig: SystelabVirtualKeyboardConfig,) {}\n\n ngAfterViewInit() {\n const layout = {\n [SystelabVirtualKeyboardLayouts.default]: [\n '` 1 2 3 4 5 6 7 8 9 0 - = {bksp}',\n '{tab} q w e r t y u i o p [ ] \\\\',\n \"{lock} a s d f g h j k l ; ' {enter}\",\n '{shift} z x c v b n m , . / {shift}',\n '{space}',\n ],\n [SystelabVirtualKeyboardLayouts.shift]: [\n '~ ! @ # $ % ^ & * ( ) _ + {bksp}',\n '{tab} Q W E R T Y U I O P { } |',\n '{lock} A S D F G H J K L : \" {enter}',\n '{shift} Z X C V B N M < > ? {shift}',\n '{space}',\n ],\n [SystelabVirtualKeyboardLayouts.numeric]: ['7 8 9', '4 5 6', '1 2 3', '0 {bksp}'],\n };\n\n const keyboardOptions: KeyboardOptions = this.prepareKeyboardConfig();\n this.keyboard = new SimpleKeyboard('.simple-keyboard', keyboardOptions);\n this.setLayout(this.selectedLayout);\n if (this.debug) {\n console.log('Layout: ', layout);\n }\n }\n\n public setActiveInput(input: HTMLInputElement | HTMLTextAreaElement): void {\n this.activeInputElement = input;\n\n if (this.debug) {\n const inputType = this.activeInputElement?.type;\n console.log('Layout:', `${inputType}_${this.selectedLayout}`);\n }\n\n let selectionStart: number;\n let selectionEnd: number;\n if (this.isInputNumeric(input)) {\n selectionStart = this.activeInputElement.value.toString().length;\n selectionEnd = this.activeInputElement.value.toString().length;\n } else {\n selectionStart = this.activeInputElement.selectionStart;\n selectionEnd = this.activeInputElement.selectionEnd;\n }\n\n this.setCaretPosition(selectionStart, selectionEnd);\n\n if (this.debug) {\n console.log('Caret start at:', this.caretPosition, this.caretPositionEnd);\n }\n }\n\n public setLayout(layout: SystelabVirtualKeyboardLayouts): void {\n this.selectedLayout = layout;\n if (this.keyboard) {\n this.keyboard.setOptions({\n layoutName: layout,\n });\n }\n }\n\n private prepareKeyboardConfig(): KeyboardOptions {\n const layout = {\n [SystelabVirtualKeyboardLayouts.default]: [\n '` 1 2 3 4 5 6 7 8 9 0 - = {bksp}',\n '{tab} q w e r t y u i o p [ ] \\\\',\n \"{lock} a s d f g h j k l ; ' {enter}\",\n '{shift} z x c v b n m , . / {shift}',\n '{space}',\n ],\n [SystelabVirtualKeyboardLayouts.shift]: [\n '~ ! @ # $ % ^ & * ( ) _ + {bksp}',\n '{tab} Q W E R T Y U I O P { } |',\n '{lock} A S D F G H J K L : \" {enter}',\n '{shift} Z X C V B N M < > ? {shift}',\n '{space}',\n ],\n [SystelabVirtualKeyboardLayouts.numeric]: ['7 8 9', '4 5 6', '1 2 3', '0 {bksp}'],\n };\n\n let keyboardOptions: KeyboardOptions = {\n onKeyPress: (button) => this.handleKeyPress(button),\n mergeDisplay: true,\n display: {\n [SystelabVirtualKeyboardButton.Backspace]: 'delete',\n },\n buttonTheme: [\n {\n class: 'virtual-keyboard-delete-button',\n buttons: `${SystelabVirtualKeyboardButton.Backspace}`,\n },\n ],\n layout,\n };\n\n if (this.virtualKeyboardConfig?.hasOwnProperty('inputMethod')) {\n if (this.virtualKeyboardConfig.inputMethod === SystelabVirtualKeyboardInputMethods.onlyMouseEvents) {\n keyboardOptions = {\n ...keyboardOptions,\n useMouseEvents: true,\n }\n } else if (this.virtualKeyboardConfig.inputMethod === SystelabVirtualKeyboardInputMethods.onlyTouchEvents) {\n keyboardOptions = {\n ...keyboardOptions,\n useTouchEvents: true,\n }\n }\n }\n\n return keyboardOptions;\n }\n\n private isInputAlphabetic(activeInputElement: HTMLInputElement | HTMLTextAreaElement): boolean {\n const inputType = activeInputElement?.type;\n return inputType && [SystelabVirtualKeyboardInputTypes.text, SystelabVirtualKeyboardInputTypes.password].some((i) => i === inputType);\n }\n\n private isInputNumeric(activeInputElement: HTMLInputElement | HTMLTextAreaElement): boolean {\n const inputType = activeInputElement?.type;\n return inputType && [SystelabVirtualKeyboardInputTypes.number].some((i) => i === inputType);\n }\n\n private handleKeyPress(button: string, e?: Event): void {\n if (this.debug) {\n console.log('Key press:', button);\n }\n\n if (button[0] === '&' && button.length > 1) {\n button = new DOMParser().parseFromString(button, 'text/html').body.textContent;\n }\n\n if (button === SystelabVirtualKeyboardButton.Shift || button === SystelabVirtualKeyboardButton.Lock) {\n this.toggleShift();\n } else if (button === SystelabVirtualKeyboardButton.Done) {\n this.closePanel.emit();\n return;\n }\n\n if (!this.isAcceptedNonStandardButton(button) && !this.isStandardButton(button)) {\n return;\n }\n\n const output = this.handleButtonOutput(button);\n\n if (this.activeInputElement) {\n this.activeInputElement.value = output;\n\n if (this.debug) {\n console.log('Caret at:', this.caretPosition, this.caretPositionEnd, 'Button', e);\n }\n }\n\n this.dispatchEvents(button);\n }\n\n private handleButtonOutput(button: string): string {\n const commonParams: [number, number, boolean] = this.getCommonParams();\n let output = this.activeInputElement?.value || '';\n if (!this.isStandardButton(button)) {\n if (button === SystelabVirtualKeyboardButton.Backspace) {\n output = this.removeAt(output, ...commonParams);\n } else if (button === SystelabVirtualKeyboardButton.Space) {\n output = this.addStringAt(output, ' ', ...commonParams);\n } else if (button === SystelabVirtualKeyboardButton.Tab) {\n output = this.addStringAt(output, '\\t', ...commonParams);\n } else if (button === SystelabVirtualKeyboardButton.Enter) {\n if (this.isTextarea) {\n output = this.addStringAt(output, '\\n', ...commonParams);\n }\n } else {\n return;\n }\n } else {\n output = this.addStringAt(output, button, ...commonParams);\n }\n\n return output;\n }\n\n private getCommonParams(): [number, number, boolean] {\n return [this.caretPosition || 0, this.caretPositionEnd || 0, true];\n }\n\n private isAcceptedNonStandardButton(button: string): boolean {\n return [\n SystelabVirtualKeyboardButton.Backspace.toString(),\n SystelabVirtualKeyboardButton.Space.toString(),\n SystelabVirtualKeyboardButton.Tab.toString(),\n SystelabVirtualKeyboardButton.Enter.toString(),\n ].includes(button);\n }\n\n private dispatchEvents(button: string) {\n const { key, code } = this.convertFromButtonToCode(button);\n\n const eventInit: KeyboardEventInit = {\n bubbles: true,\n cancelable: true,\n shiftKey: this.selectedLayout === SystelabVirtualKeyboardLayouts.shift,\n key: key,\n code: code,\n location: 0,\n };\n\n // Simulate all needed events on base element\n this.activeInputElement?.dispatchEvent(new KeyboardEvent('keydown', eventInit));\n this.activeInputElement?.dispatchEvent(new KeyboardEvent('keypress', eventInit));\n this.activeInputElement?.dispatchEvent(new Event('input', { bubbles: true }));\n this.activeInputElement?.dispatchEvent(new KeyboardEvent('keyup', eventInit));\n }\n\n /*\n * AUXILIARY METHODS\n * */\n private convertFromButtonToCode(button: string): { key: string; code: string } {\n let key: string;\n let code: string;\n if (button.includes('{') && button.includes('}')) {\n // Capitalize name\n key = button.slice(1, button.length - 1).toLowerCase();\n key = key.charAt(0).toUpperCase() + key.slice(1);\n code = key;\n\n // Fix to standard key code\n if (code.toLowerCase() === SystelabVirtualKeyboardButton.Backspace.slice(1, SystelabVirtualKeyboardButton.Backspace.length - 1).toLowerCase()) {\n code = 'Backspace';\n }\n } else {\n key = button;\n code = Number.isInteger(Number(button)) ? `Digit${button}` : `Key${button.toUpperCase()}`;\n }\n\n return { key, code };\n }\n\n private toggleShift() {\n let currentLayout = this.keyboard.options.layoutName;\n let selectedLayout: SystelabVirtualKeyboardLayouts =\n currentLayout === SystelabVirtualKeyboardLayouts.default ? SystelabVirtualKeyboardLayouts.shift : SystelabVirtualKeyboardLayouts.default;\n\n this.setLayout(selectedLayout);\n }\n\n private isStandardButton(button: string) {\n return button && !(button[0] === '{' && button[button.length - 1] === '}');\n }\n\n /*\n * OUTPUT STRING METHODS\n * */\n private removeAt(source: string, position = source.length, positionEnd = source.length, moveCaret = false): string {\n if (position === 0 && positionEnd === 0) {\n return source;\n }\n\n let output: string;\n\n if (position === positionEnd) {\n if (position && position >= 0) {\n output = source.slice(0, position - 1) + source.slice(position);\n if (moveCaret) {\n this.updateCaretPosition(1, true);\n }\n } else {\n output = source.slice(0, -1);\n if (moveCaret) {\n this.updateCaretPosition(1, true);\n }\n }\n } else {\n output = source.slice(0, position) + source.slice(positionEnd);\n if (moveCaret) {\n this.setCaretPosition(position);\n }\n }\n\n return output;\n }\n\n private addStringAt(source: string, str: string, position = source.length, positionEnd = source.length, moveCaret = false): string {\n if (this.maxLength !== -1 && source.length >= this.maxLength) {\n return source;\n }\n\n let output: string;\n\n if (!position && position !== 0) {\n output = source + str;\n } else {\n output = [source.slice(0, position), str, source.slice(positionEnd)].join('');\n if (moveCaret) {\n this.updateCaretPosition(str.length, false);\n }\n }\n\n return output;\n }\n\n /*\n * CARET METHODS\n * */\n private caretEventHandler(event: any) {\n let targetTagName = '';\n if (event.target.tagName) {\n targetTagName = event.target.tagName.toLowerCase();\n }\n\n const isTextInput =\n targetTagName === 'textarea' ||\n (targetTagName === 'input' && ['text', 'search', 'email', 'password', 'url', 'tel'].includes(event.target.type));\n\n const isKeyboard =\n event.target === this.elementRef.nativeElement || (event.target && this.elementRef.nativeElement.contains(event.target));\n\n if (isTextInput && this.activeInputElement == event.target) {\n /**\n * Tracks current cursor position\n * As keys are pressed, text will be added/removed at that position within the input.\n */\n this.setCaretPosition(event.target.selectionStart, event.target.selectionEnd);\n\n if (this.debug) {\n console.log('Caret at:', this.caretPosition, this.caretPositionEnd, event && event.target.tagName.toLowerCase(), event);\n }\n } else if (event.type === 'pointerup' && this.activeInputElement === document.activeElement) {\n return;\n } else if (!isKeyboard && event?.type !== 'selectionchange') {\n /**\n * we must ensure caretPosition doesn't persist once reactivated.\n */\n this.setCaretPosition(null);\n\n if (this.debug) {\n console.log(`Caret position reset due to \"${event?.type}\" event`, event);\n }\n }\n }\n\n private updateCaretPosition(length: number, minus = false) {\n const newCaretPos = this.computeNewCaretPosition(length, minus);\n this.setCaretPosition(newCaretPos);\n // Scroll to bottom\n setTimeout(() => {\n this.activeInputElement?.scrollTo({\n top: this.activeInputElement.scrollHeight,\n } as ScrollToOptions);\n });\n }\n\n private computeNewCaretPosition(length: number, minus = false) {\n let caretPosition = this.caretPosition;\n\n if (caretPosition != null) {\n if (minus) {\n if (caretPosition > 0) caretPosition = caretPosition - length;\n } else {\n caretPosition = caretPosition + length;\n }\n }\n return caretPosition;\n }\n\n private setCaretPosition(position: number | null, endPosition = position): void {\n this.caretPosition = position;\n this.caretPositionEnd = endPosition;\n }\n}\n","<!--\n ~ Copyright (c) 2020 - 2024 - Instrumentation Laboratory Company and Systelab Technologies, SA. All rights reserved.\n ~ NOTICE: All information contained herein is and remains the property of Instrumentation Laboratory Company and its\n ~ affiliates, if any. The intellectual and technical concepts contained herein are proprietary to Instrumentation\n ~ Laboratory Company and its affiliates and may be covered by U.S. and foreign patents and patent applications, and/or\n ~ are protected by trade secret or copyright law. Dissemination of this information or reproduction of this material is\n ~ strictly forbidden unless prior written permission is Instrumentation Laboratory Company.\n -->\n\n<div class=\"simple-keyboard\"></div>\n","/*\n * Copyright (c) 2020 - 2024 - Instrumentation Laboratory Company and Systelab Technologies, SA. All rights reserved.\n * NOTICE: All information contained herein is and remains the property of Instrumentation Laboratory Company and its\n * affiliates, if any. The intellectual and technical concepts contained herein are proprietary to Instrumentation\n * Laboratory Company and its affiliates and may be covered by U.S. and foreign patents and patent applications, and/or\n * are protected by trade secret or copyright law. Dissemination of this information or reproduction of this material is\n * strictly forbidden unless prior written permission is Instrumentation Laboratory Company.\n */\n\nimport { Overlay, OverlayRef, OverlaySizeConfig, PositionStrategy } from '@angular/cdk/overlay';\nimport { ComponentRef, Injectable } from '@angular/core';\nimport { ComponentPortal } from '@angular/cdk/portal';\nimport { SystelabVirtualKeyboardLayouts } from './constants';\nimport { SystelabVirtualKeyboardComponent } from './systelab-virtual-keyboard.component';\n\ninterface PositionStrategyOrigin {\n x: number;\n y: number;\n width?: number;\n height?: number;\n}\n\n@Injectable({\n providedIn: 'root',\n})\nexport class SystelabVirtualKeyboardOverlayService {\n private overlayRef!: OverlayRef;\n private inputOrigin: HTMLInputElement;\n private fixedBottom: boolean;\n private showKeyboardButtonElement: HTMLElement;\n private open: boolean;\n private layout: SystelabVirtualKeyboardLayouts;\n private focusDispatched: boolean = false;\n\n constructor(private readonly overlay: Overlay) {\n this.initListener();\n }\n\n public isCreated(): boolean {\n return !!this.overlayRef;\n }\n\n public isOpen(): boolean {\n return this.open;\n }\n\n public create(\n inputOrigin: HTMLInputElement,\n showKeyboardButtonElement: HTMLElement,\n fixedBottom: boolean,\n layout: SystelabVirtualKeyboardLayouts = SystelabVirtualKeyboardLayouts.default,\n ): ComponentRef<SystelabVirtualKeyboardComponent> {\n this.inputOrigin = inputOrigin;\n this.fixedBottom = fixedBottom;\n this.showKeyboardButtonElement = showKeyboardButtonElement;\n this.layout = layout;\n this.overlayRef = this.overlay.create({\n hasBackdrop: false,\n scrollStrategy: this.overlay.scrollStrategies.reposition(),\n disposeOnNavigation: true,\n });\n this.overlayRef.addPanelClass('virtual-keyboard-overlay-pane');\n if (fixedBottom) {\n this.overlayRef.addPanelClass('virtual-keyboard-fixed-bottom');\n }\n\n this.updatePositionStrategy(inputOrigin, fixedBottom);\n this.updateSize();\n\n this.open = true;\n return this.overlayRef.attach(new ComponentPortal(SystelabVirtualKeyboardComponent));\n }\n\n public updatePosition(): void {\n this.updatePositionStrategy(this.inputOrigin, this.fixedBottom);\n }\n\n public setFocusDispatched(dispatched: boolean): void {\n this.focusDispatched = dispatched;\n }\n\n public destroy(): void {\n if (this.overlayRef) {\n this.overlayRef.dispose();\n }\n this.overlayRef = null;\n this.open = false;\n }\n\n private initListener() {\n document.addEventListener('click', this.handleClick.bind(this));\n }\n\n private handleClick(event: MouseEvent) {\n if (this.focusDispatched) {\n this.focusDispatched = false;\n return;\n }\n console.log('Document clicked:', event);\n event.stopPropagation();\n const simpleKeyboardElement = document.querySelector('.simple-keyboard');\n const showKeyboardButtonClicked = (event.target as HTMLElement)?.classList.contains('virtual-keyboard-show-button');\n\n const containsKeyboard = simpleKeyboardElement?.contains(event.target as Node);\n const containsElementRef = this.inputOrigin?.contains(event.target as Node);\n // const containsFocusedElement = this.focusedElement?.contains(event.target as Node);\n const containsShowButton = this.showKeyboardButtonElement?.contains(event.target as Node);\n if (\n !containsKeyboard &&\n !containsElementRef &&\n // !containsFocusedElement &&\n !containsShowButton &&\n !showKeyboardButtonClicked\n ) {\n if (this.isCreated()) {\n this.destroy();\n }\n }\n }\n\n public hasAttached(): boolean {\n return this.overlayRef?.hasAttached();\n }\n\n private updatePositionStrategy(inputOrigin: HTMLInputElement, fixedBottom: boolean): void {\n this.overlayRef.updatePositionStrategy(this.getPositionStrategy(inputOrigin, fixedBottom));\n }\n\n private updateSize(): void {\n this.overlayRef.updateSize(this.getOverlaySize());\n }\n\n private getPositionStrategy(inputOrigin: HTMLInputElement, fixedBottom: boolean): PositionStrategy {\n if (fixedBottom) {\n return this.overlay.position().global().centerHorizontally().bottom('0');\n }\n\n const pointWithDimensions: PositionStrategyOrigin = this.computePositionStrategyOrigin(inputOrigin);\n\n return this.overlay\n .position()\n .flexibleConnectedTo(pointWithDimensions)\n .withFlexibleDimensions(false)\n .withLockedPosition(true)\n .withPush(false)\n .withPositions([\n {\n originX: 'start',\n originY: 'bottom',\n overlayX: 'start',\n overlayY: 'top',\n },\n {\n originX: 'start',\n originY: 'top',\n overlayX: 'start',\n overlayY: 'bottom',\n },\n {\n originX: 'end',\n originY: 'bottom',\n overlayX: 'end',\n overlayY: 'top',\n },\n {\n originX: 'end',\n originY: 'top',\n overlayX: 'end',\n overlayY: 'bottom',\n },\n ]);\n }\n\n private getOverlaySize(): OverlaySizeConfig {\n const overlayWidth = this.layout === SystelabVirtualKeyboardLayouts.numeric ? '400px' : '1200px';\n\n return {\n width: overlayWidth,\n maxWidth: overlayWidth,\n minWidth: overlayWidth,\n };\n }\n\n private computePositionStrategyOrigin(inputOrigin: HTMLInputElement): PositionStrategyOrigin {\n const overlayOffsetX = this.computeOverlayOffsetX(inputOrigin);\n const { width: overlayWidthString } = this.getOverlaySize();\n const overlayWidth = Number((overlayWidthString as string).replace('px', ''));\n const {x, y, width, height} = inputOrigin.getBoundingClientRect();\n return {\n width,\n height,\n x: width < overlayWidth ? x - overlayOffsetX : x + overlayOffsetX,\n y,\n };\n }\n\n private computeOverlayOffsetX(inputOrigin: HTMLInputElement): number {\n const { width: overlayWidthString } = this.getOverlaySize();\n const overlayWidth = Number((overlayWidthString as string).replace('px', ''));\n const inputWidth = inputOrigin.getBoundingClientRect().width;\n\n const extraWidth = overlayWidth - inputWidth;\n\n return Math.abs(extraWidth) / 2;\n }\n}\n","/*\n * Copyright (c) 2020 - 2024 - Instrumentation Laboratory Company and Systelab Technologies, SA. All rights reserved.\n * NOTICE: All information contained herein is and remains the property of Instrumentation Laboratory Company and its\n * affiliates, if any. The intellectual and technical concepts contained herein are proprietary to Instrumentation\n * Laboratory Company and its affiliates and may be covered by U.S. and foreign patents and patent applications, and/or\n * are protected by trade secret or copyright law. Dissemination of this information or reproduction of this material is\n * strictly forbidden unless prior written permission is Instrumentation Laboratory Company.\n */\n\nimport {\n AfterViewInit,\n ComponentRef,\n Directive,\n ElementRef,\n HostListener,\n Inject,\n Input,\n OnDestroy,\n OnInit,\n Optional,\n Renderer2,\n} from '@angular/core';\n\nimport { DOCUMENT } from '@angular/common';\n\nimport { SystelabVirtualKeyboardInputTypes, SystelabVirtualKeyboardLayouts } from './constants';\nimport { SystelabVirtualKeyboardComponent } from './systelab-virtual-keyboard.component';\nimport { SystelabVirtualKeyboardOverlayService } from './systelab-virtual-keyboard-overlay.service';\nimport { SystelabVirtualKeyboardConfig, VIRTUAL_KEYBOARD_CONFIG } from './systelab-virtual-keyboard.config';\n\n@Directive({\n selector: 'input[vkEnabled], textarea[vkEnabled]',\n})\nexport class SystelabVirtualKeyboardDirective implements OnInit, AfterViewInit, OnDestroy {\n @HostListener('window:touchmove', ['$event'])\n @HostListener('window:touchend', ['$event'])\n @HostListener('window:wheel', ['$event'])\n @HostListener('document:scroll', ['$event'])\n onDocumentScroll() {\n if (this.overlayService.isCreated()) {\n this.overlayService.updatePosition();\n }\n }\n\n @HostListener('focus', ['$event'])\n onFocus(event: MouseEvent | TouchEvent): void {\n console.log('Focused');\n if (this.overlayService.isCreated()) {\n this.closePanel();\n }\n this.overlayService.setFocusDispatched(true);\n if (!this.overlayService.isOpen()) {\n this.openPanel();\n }\n }\n\n private enabled = false;\n @Input()\n set vkEnabled(enabled: boolean | string) {\n if (typeof enabled === 'string') {\n this.enabled = true;\n } else {\n this.enabled = enabled;\n }\n };\n get vkEnabled(): boolean {\n return this.enabled;\n }\n\n private fixedBottom = false;\n @Input()\n get vkFixedBottom(): boolean {\n return this.fixedBottom;\n }\n set vkFixedBottom(fixedBottom: boolean | string) {\n if (typeof fixedBottom === 'string') {\n this.fixedBottom = true;\n } else {\n this.fixedBottom = fixedBottom;\n }\n }\n\n private debug = false;\n @Input()\n get vkDebug(): boolean {\n return this.debug;\n }\n set vkDebug(debug: boolean) {\n this.debug = debug;\n }\n\n private config: SystelabVirtualKeyboardConfig;\n @Input()\n get vkConfig(): SystelabVirtualKeyboardConfig {\n return this.config;\n }\n set vkConfig(config: SystelabVirtualKeyboardConfig) {\n this.config = config;\n }\n\n private panelRef!: ComponentRef<SystelabVirtualKeyboardComponent>;\n private showKeyboardButtonElement: HTMLElement;\n\n constructor(\n private readonly elementRef: ElementRef<HTMLInputElement>,\n private readonly overlayService: SystelabVirtualKeyboardOverlayService,\n private readonly renderer: Renderer2,\n @Inject(DOCUMENT) private readonly document: any,\n @Optional() @Inject(VIRTUAL_KEYBOARD_CONFIG) private virtualKeyboardConfig: SystelabVirtualKeyboardConfig,\n ) {\n this.config = this.virtualKeyboardConfig;\n }\n\n ngOnInit() {\n if (this.config?.showButton) {\n this.attachKeyboardIcon();\n }\n }\n\n ngAfterViewInit() {\n if (this.vkEnabled && this.config?.showButton) {\n const keyboardIcon = this.elementRef.nativeElement.parentElement.querySelector('i');\n keyboardIcon.addEventListener('click', this.togglePanel.bind(this));\n }\n }\n\n ngOnDestroy(): void {\n if (this.overlayService.isCreated()) {\n this.overlayService.destroy();\n }\n }\n\n private togglePanel(): void {\n if (this.overlayService.isOpen()) {\n this.closePanel();\n } else {\n this.openPanel();\n }\n }\n\n private openPanel(): void {\n if (this.overlayService.isCreated()) {\n this.overlayService.destroy();\n }\n if (this.overlayService.hasAttached()) {\n return;\n }\n\n const currentLayout = this.getLayout(this.elementRef.nativeElement);\n\n this.panelRef = this.overlayService.create(this.inputOrigin(), this.showKeyboardButtonElement, this.vkFixedBottom, currentLayout);\n this.panelRef.instance.debug = this.vkDebug;\n this.panelRef.instance.setActiveInput(this.elementRef.nativeElement);\n this.panelRef.instance.setLayout(currentLayout);\n this.panelRef.instance.closePanel.subscribe(() => this.closePanel());\n }\n\n private getLayout(activeInputElement: HTMLInputElement | HTMLTextAreaElement): SystelabVirtualKeyboardLayouts {\n if (this.config?.hasOwnProperty('layout')) {\n return this.config.layout;\n }\n if (this.isInputAlphabetic(activeInputElement)) {\n return SystelabVirtualKeyboardLayouts.default;\n } else if (this.isInputNumeric(activeInputElement)) {\n return SystelabVirtualKeyboardLayouts.numeric;\n } else {\n return SystelabVirtualKeyboardLayouts.default;\n }\n }\n\n private isInputAlphabetic(activeInputElement: HTMLInputElement | HTMLTextAreaElement): boolean {\n const inputType = activeInputElement?.type;\n return inputType && [SystelabVirtualKeyboardInputTypes.text, SystelabVirtualKeyboardInputTypes.password].some((i) => i === inputType);\n }\n\n private isInputNumeric(activeInputElement: HTMLInputElement | HTMLTextAreaElement): boolean {\n const inputType = activeInputElement?.type;\n return inputType && [SystelabVirtualKeyboardInputTypes.number].some((i) => i === inputType);\n }\n\n private closePanel(): void {\n this.overlayService.destroy();\n }\n\n private inputOrigin(): any {\n return this.elementRef.nativeElement;\n }\n\n private attachKeyboardIcon() {\n if (this.vkEnabled) {\n const child = this.document.createElement('i');\n child.classList.add('fa');\n child.classList.add('fa-keyboard');\n child.classList.add('virtual-keyboard-show-button');\n this.renderer.appendChild(this.elementRef.nativeElement.parentElement, child);\n this.showKeyboardButtonElement = child;\n }\n }\n}\n","import { ModuleWithProviders, NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { SystelabVirtualKeyboardDirective } from './systelab-virtual-keyboard.directive';\nimport { OverlayModule } from '@angular/cdk/overlay';\nimport { SystelabVirtualKeyboardConfig, VIRTUAL_KEYBOARD_CONFIG } from './systelab-virtual-keyboard.config';\nimport { SystelabVirtualKeyboardOverlayService } from './systelab-virtual-keyboard-overlay.service';\n\nexport const factory = () => {\n const systelabVirtualKeyboardModuleCreated = (factory as any)._systelabVirtualKeyboardModuleCreated || false;\n if (systelabVirtualKeyboardModuleCreated) {\n throw new Error('SystelabVirtualKeyboardModuleCreated.forRoot imported to many times');\n }\n (factory as any)._systelabVirtualKeyboardModuleCreated = true;\n};\n\n@NgModule({\n imports: [CommonModule, OverlayModule],\n declarations: [SystelabVirtualKeyboardDirective],\n exports: [SystelabVirtualKeyboardDirective],\n})\nexport class SystelabVirtualKeyboardModule {\n public static forRoot(conf?: SystelabVirtualKeyboardConfig): ModuleWithProviders<SystelabVirtualKeyboardModule> {\n return {\n ngModule: SystelabVirtualKeyboardModule,\n providers: [\n SystelabVirtualKeyboardOverlayService,\n {\n provide: VIRTUAL_KEYBOARD_CONFIG, useValue: conf\n }\n ]\n };\n }\n\n public static forChild(): ModuleWithProviders<SystelabVirtualKeyboardModule> {\n return {\n ngModule: SystelabVirtualKeyboardModule,\n providers: [],\n };\n }\n}\n","/*\n * Public API Surface of systelab-virtual-keyboard\n */\n\nexport * from './lib/constants';\nexport { SystelabVirtualKeyboardConfig } from './lib/systelab-virtual-keyboard.config';\nexport * from './lib/systelab-virtual-keyboard.directive';\nexport * from './lib/systelab-virtual-keyboard.module';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.SystelabVirtualKeyboardOverlayService"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"systelab-virtual-keyboard.mjs","sources":["../../../projects/systelab-virtual-keyboard/src/lib/constants.ts","../../../projects/systelab-virtual-keyboard/src/lib/systelab-virtual-keyboard.config.ts","../../../projects/systelab-virtual-keyboard/src/lib/systelab-virtual-keyboard.component.ts","../../../projects/systelab-virtual-keyboard/src/lib/systelab-virtual-keyboard.component.html","../../../projects/systelab-virtual-keyboard/src/lib/systelab-virtual-keyboard-overlay.service.ts","../../../projects/systelab-virtual-keyboard/src/lib/systelab-virtual-keyboard.directive.ts","../../../projects/systelab-virtual-keyboard/src/lib/systelab-virtual-keyboard.module.ts","../../../projects/systelab-virtual-keyboard/src/public-api.ts","../../../projects/systelab-virtual-keyboard/src/systelab-virtual-keyboard.ts"],"sourcesContent":["/*\n * Copyright (c) 2020 - 2024 - Instrumentation Laboratory Company and Systelab Technologies, SA. All rights reserved.\n * NOTICE: All information contained herein is and remains the property of Instrumentation Laboratory Company and its\n * affiliates, if any. The intellectual and technical concepts contained herein are proprietary to Instrumentation\n * Laboratory Company and its affiliates and may be covered by U.S. and foreign patents and patent applications, and/or\n * are protected by trade secret or copyright law. Dissemination of this information or reproduction of this material is\n * strictly forbidden unless prior written permission is Instrumentation Laboratory Company.\n */\n\nexport enum SystelabVirtualKeyboardButton {\n Done = '{done}',\n Enter = '{enter}',\n Shift = '{shift}',\n Lock = '{lock}',\n Backspace = '{bksp}',\n Language = '{language}',\n Space = '{space}',\n Tab = '{tab}',\n}\n\nexport enum SystelabVirtualKeyboardLayouts {\n default = 'default',\n shift = 'shift',\n numeric = 'numeric',\n}\n\nexport enum SystelabVirtualKeyboardInputMethods {\n onlyMouseEvents = 'onlyMouseEvents',\n onlyTouchEvents = 'onlyTouchEvents',\n}\n\nexport enum SystelabVirtualKeyboardInputTypes {\n text = 'text',\n number = 'number',\n password = 'password',\n}\n","import { InjectionToken } from '@angular/core';\nimport { SystelabVirtualKeyboardInputMethods, SystelabVirtualKeyboardLayouts } from './constants';\n\nexport const VIRTUAL_KEYBOARD_CONFIG = new InjectionToken<SystelabVirtualKeyboardConfig>('VIRTUAL_KEYBOARD_CONFIG');\n\nexport interface SystelabVirtualKeyboardConfig {\n layout?: SystelabVirtualKeyboardLayouts;\n inputMethod?: SystelabVirtualKeyboardInputMethods;\n showIcon?: boolean;\n}\n","import {\n AfterViewInit,\n Component,\n ElementRef,\n EventEmitter,\n HostListener,\n Inject,\n Optional,\n Output\n} from '@angular/core';\nimport { SimpleKeyboard } from 'simple-keyboard';\nimport {\n SystelabVirtualKeyboardButton,\n SystelabVirtualKeyboardInputMethods,\n SystelabVirtualKeyboardInputTypes,\n SystelabVirtualKeyboardLayouts\n} from './constants';\nimport { SystelabVirtualKeyboardConfig, VIRTUAL_KEYBOARD_CONFIG } from './systelab-virtual-keyboard.config';\nimport { KeyboardOptions } from 'simple-keyboard/build/interfaces';\n\n@Component({\n selector: 'systelab-virtual-keyboard.component',\n standalone: true,\n imports: [],\n templateUrl: './systelab-virtual-keyboard.component.html',\n styleUrl: 'systelab-virtual-keyboard.component.scss',\n})\nexport class SystelabVirtualKeyboardComponent implements AfterViewInit {\n @HostListener('window:keyup', ['$event'])\n handleKeyUp(event: KeyboardEvent): void {\n if (event.isTrusted) {\n this.caretEventHandler(event);\n }\n }\n\n @HostListener('window:pointerup', ['$event'])\n handleMouseUp(event: PointerEvent): void {\n this.caretEventHandler(event);\n }\n\n @HostListener('window:select', ['$event'])\n handleSelect(event: Event): void {\n this.caretEventHandler(event);\n }\n\n @HostListener('window:selectionchange', ['$event'])\n handleSelectionChange(event: Event): void {\n this.caretEventHandler(event);\n }\n\n get maxLength(): number {\n return this.activeInputElement?.maxLength ?? -1;\n }\n\n get isTextarea(): boolean {\n return this.activeInputElement?.type === 'textarea';\n }\n\n public debug = false;\n private selectedLayout: SystelabVirtualKeyboardLayouts = SystelabVirtualKeyboardLayouts.default;\n private keyboard: SimpleKeyboard;\n private caretPosition: number | null = null;\n private caretPositionEnd: number | null = null;\n private activeInputElement!: HTMLInputElement | HTMLTextAreaElement | null;\n private shiftPressed: boolean = false;\n\n @Output() closePanel = new EventEmitter<void>();\n\n constructor(private elementRef: ElementRef<HTMLInputElement>, @Optional() @Inject(VIRTUAL_KEYBOARD_CONFIG) private virtualKeyboardConfig: SystelabVirtualKeyboardConfig,) {\n }\n\n ngAfterViewInit() {\n const layout = {\n [SystelabVirtualKeyboardLayouts.default]: [\n '` 1 2 3 4 5 6 7 8 9 0 - = {bksp}',\n '{tab} q w e r t y u i o p [ ] \\\\',\n \"{lock} a s d f g h j k l ; ' {enter}\",\n '{shift} z x c v b n m , . / {shift}',\n '{space}',\n ],\n [SystelabVirtualKeyboardLayouts.shift]: [\n '~ ! @ # $ % ^ & * ( ) _ + {bksp}',\n '{tab} Q W E R T Y U I O P { } |',\n '{lock} A S D F G H J K L : \" {enter}',\n '{shift} Z X C V B N M < > ? {shift}',\n '{space}',\n ],\n [SystelabVirtualKeyboardLayouts.numeric]: ['7 8 9', '4 5 6', '1 2 3', '0 {bksp}'],\n };\n\n const keyboardOptions: KeyboardOptions = this.prepareKeyboardConfig();\n this.keyboard = new SimpleKeyboard('.simple-keyboard', keyboardOptions);\n this.setLayout(this.selectedLayout);\n if (this.debug) {\n console.log('Layout: ', layout);\n }\n }\n\n public setActiveInput(input: HTMLInputElement | HTMLTextAreaElement): void {\n this.activeInputElement = input;\n\n if (this.debug) {\n const inputType = this.activeInputElement?.type;\n console.log('Layout:', `${inputType}_${this.selectedLayout}`);\n }\n\n let selectionStart: number;\n let selectionEnd: number;\n if (this.isInputNumeric(input)) {\n selectionStart = this.activeInputElement.value.toString().length;\n selectionEnd = this.activeInputElement.value.toString().length;\n } else {\n selectionStart = this.activeInputElement.selectionStart;\n selectionEnd = this.activeInputElement.selectionEnd;\n }\n\n this.setCaretPosition(selectionStart, selectionEnd);\n\n if (this.debug) {\n console.log('Caret start at:', this.caretPosition, this.caretPositionEnd);\n }\n }\n\n public setLayout(layout: SystelabVirtualKeyboardLayouts): void {\n this.selectedLayout = layout;\n if (this.keyboard) {\n this.keyboard.setOptions({\n layoutName: layout,\n });\n }\n }\n\n private prepareKeyboardConfig(): KeyboardOptions {\n const layout = {\n [SystelabVirtualKeyboardLayouts.default]: [\n '` 1 2 3 4 5 6 7 8 9 0 - = {bksp}',\n '{tab} q w e r t y u i o p [ ] \\\\',\n \"{lock} a s d f g h j k l ; ' {enter}\",\n '{shift} z x c v b n m , . / {shift}',\n '{space}',\n ],\n [SystelabVirtualKeyboardLayouts.shift]: [\n '~ ! @ # $ % ^ & * ( ) _ + {bksp}',\n '{tab} Q W E R T Y U I O P { } |',\n '{lock} A S D F G H J K L : \" {enter}',\n '{shift} Z X C V B N M < > ? {shift}',\n '{space}',\n ],\n [SystelabVirtualKeyboardLayouts.numeric]: ['7 8 9', '4 5 6', '1 2 3', '0 {bksp}'],\n };\n\n let keyboardOptions: KeyboardOptions = {\n onKeyPress: (button) => this.handleKeyPress(button),\n mergeDisplay: true,\n theme: 'hg-theme-default hg-layout-default myTheme',\n display: {\n [SystelabVirtualKeyboardButton.Backspace]: 'delete',\n },\n buttonTheme: [\n {\n class: 'virtual-keyboard-delete-button',\n buttons: `${SystelabVirtualKeyboardButton.Backspace}`,\n },\n ],\n layout,\n };\n\n if (this.virtualKeyboardConfig?.hasOwnProperty('inputMethod')) {\n if (this.virtualKeyboardConfig.inputMethod === SystelabVirtualKeyboardInputMethods.onlyMouseEvents) {\n keyboardOptions = {\n ...keyboardOptions,\n useMouseEvents: true,\n }\n } else if (this.virtualKeyboardConfig.inputMethod === SystelabVirtualKeyboardInputMethods.onlyTouchEvents) {\n keyboardOptions = {\n ...keyboardOptions,\n useTouchEvents: true,\n }\n }\n }\n\n return keyboardOptions;\n }\n\n private isInputAlphabetic(activeInputElement: HTMLInputElement | HTMLTextAreaElement): boolean {\n const inputType = activeInputElement?.type;\n return inputType && [SystelabVirtualKeyboardInputTypes.text, SystelabVirtualKeyboardInputTypes.password].some((i) => i === inputType);\n }\n\n private isInputNumeric(activeInputElement: HTMLInputElement | HTMLTextAreaElement): boolean {\n const inputType = activeInputElement?.type;\n return inputType && [SystelabVirtualKeyboardInputTypes.number].some((i) => i === inputType);\n }\n\n private handleKeyPress(button: string, e?: Event): void {\n if (this.debug) {\n console.log('Key press:', button);\n }\n\n if (button[0] === '&' && button.length > 1) {\n button = new DOMParser().parseFromString(button, 'text/html').body.textContent;\n }\n\n if (button === SystelabVirtualKeyboardButton.Shift || button === SystelabVirtualKeyboardButton.Lock) {\n this.shiftPressed = button === SystelabVirtualKeyboardButton.Shift;\n this.toggleShiftLayout();\n } else if (button === SystelabVirtualKeyboardButton.Done) {\n this.closePanel.emit();\n return;\n }\n\n if (!this.isAcceptedNonStandardButton(button) && !this.isStandardButton(button)) {\n return;\n }\n\n const output = this.handleButtonOutput(button);\n\n if (this.activeInputElement) {\n this.activeInputElement.value = output;\n\n if (this.debug) {\n console.log('Caret at:', this.caretPosition, this.caretPositionEnd, 'Button', e);\n }\n }\n\n this.dispatchEvents(button);\n\n if (this.shiftPressed) {\n this.toggleShiftLayout();\n }\n this.shiftPressed = button === SystelabVirtualKeyboardButton.Shift;\n }\n\n private handleButtonOutput(button: string): string {\n const commonParams: [number, number, boolean] = this.getCommonParams();\n let output = this.activeInputElement?.value || '';\n if (!this.isStandardButton(button)) {\n if (button === SystelabVirtualKeyboardButton.Backspace) {\n output = this.removeAt(output, ...commonParams);\n } else if (button === SystelabVirtualKeyboardButton.Space) {\n output = this.addStringAt(output, ' ', ...commonParams);\n } else if (button === SystelabVirtualKeyboardButton.Tab) {\n output = this.addStringAt(output, '\\t', ...commonParams);\n } else if (button === SystelabVirtualKeyboardButton.Enter) {\n if (this.isTextarea) {\n output = this.addStringAt(output, '\\n', ...commonParams);\n }\n } else {\n return;\n }\n } else {\n output = this.addStringAt(output, button, ...commonParams);\n }\n\n return output;\n }\n\n private getCommonParams(): [number, number, boolean] {\n return [this.caretPosition || 0, this.caretPositionEnd || 0, true];\n }\n\n private isAcceptedNonStandardButton(button: string): boolean {\n return [\n SystelabVirtualKeyboardButton.Backspace.toString(),\n SystelabVirtualKeyboardButton.Space.toString(),\n SystelabVirtualKeyboardButton.Tab.toString(),\n SystelabVirtualKeyboardButton.Enter.toString(),\n ].includes(button);\n }\n\n private dispatchEvents(button: string) {\n const {key, code} = this.convertFromButtonToCode(button);\n\n const eventInit: KeyboardEventInit = {\n bubbles: true,\n cancelable: true,\n shiftKey: this.selectedLayout === SystelabVirtualKeyboardLayouts.shift,\n key: key,\n code: code,\n location: 0,\n };\n\n // Simulate all needed events on base element\n this.activeInputElement?.dispatchEvent(new KeyboardEvent('keydown', eventInit));\n this.activeInputElement?.dispatchEvent(new KeyboardEvent('keypress', eventInit));\n this.activeInputElement?.dispatchEvent(new Event('input', {bubbles: true}));\n this.activeInputElement?.dispatchEvent(new KeyboardEvent('keyup', eventInit));\n }\n\n /*\n * AUXILIARY METHODS\n * */\n private convertFromButtonToCode(button: string): { key: string; code: string } {\n let key: string;\n let code: string;\n if (button.includes('{') && button.includes('}')) {\n // Capitalize name\n key = button.slice(1, button.length - 1).toLowerCase();\n key = key.charAt(0).toUpperCase() + key.slice(1);\n code = key;\n\n // Fix to standard key code\n if (code.toLowerCase() === SystelabVirtualKeyboardButton.Backspace.slice(1, SystelabVirtualKeyboardButton.Backspace.length - 1).toLowerCase()) {\n code = 'Backspace';\n }\n } else {\n key = button;\n code = Number.isInteger(Number(button)) ? `Digit${button}` : `Key${button.toUpperCase()}`;\n }\n\n return {key, code};\n }\n\n private toggleShiftLayout(): void {\n const currentLayout = this.keyboard.options.layoutName;\n const selectedLayout: SystelabVirtualKeyboardLayouts =\n currentLayout === SystelabVirtualKeyboardLayouts.default ? SystelabVirtualKeyboardLayouts.shift : SystelabVirtualKeyboardLayouts.default;\n\n this.setLayout(selectedLayout);\n }\n\n private isStandardButton(button: string) {\n return button && !(button[0] === '{' && button[button.length - 1] === '}');\n }\n\n /*\n * OUTPUT STRING METHODS\n * */\n private removeAt(source: string, position = source.length, positionEnd = source.length, moveCaret = false): string {\n if (position === 0 && positionEnd === 0) {\n return source;\n }\n\n let output: string;\n\n if (position === positionEnd) {\n if (position && position >= 0) {\n output = source.slice(0, position - 1) + source.slice(position);\n if (moveCaret) {\n this.updateCaretPosition(1, true);\n }\n } else {\n output = source.slice(0, -1);\n if (moveCaret) {\n this.updateCaretPosition(1, true);\n }\n }\n } else {\n output = source.slice(0, position) + source.slice(positionEnd);\n if (moveCaret) {\n this.setCaretPosition(position);\n }\n }\n\n return output;\n }\n\n private addStringAt(source: string, str: string, position = source.length, positionEnd = source.length, moveCaret = false): string {\n if (this.maxLength !== -1 && source.length >= this.maxLength) {\n return source;\n }\n\n let output: string;\n\n if (!position && position !== 0) {\n output = source + str;\n } else {\n output = [source.slice(0, position), str, source.slice(positionEnd)].join('');\n if (moveCaret) {\n this.updateCaretPosition(str.length, false);\n }\n }\n\n return output;\n }\n\n /*\n * CARET METHODS\n * */\n private caretEventHandler(event: any) {\n let targetTagName = '';\n if (event.target.tagName) {\n targetTagName = event.target.tagName.toLowerCase();\n }\n\n const isTextInput =\n targetTagName === 'textarea' ||\n (targetTagName === 'input' && ['text', 'search', 'email', 'password', 'url', 'tel'].includes(event.target.type));\n\n const isKeyboard =\n event.target === this.elementRef.nativeElement || (event.target && this.elementRef.nativeElement.contains(event.target));\n\n if (isTextInput && this.activeInputElement == event.target) {\n /**\n * Tracks current cursor position\n * As keys are pressed, text will be added/removed at that position within the input.\n */\n this.setCaretPosition(event.target.selectionStart, event.target.selectionEnd);\n\n if (this.debug) {\n console.log('Caret at:', this.caretPosition, this.caretPositionEnd, event && event.target.tagName.toLowerCase(), event);\n }\n } else if (event.type === 'pointerup' && this.activeInputElement === document.activeElement) {\n return;\n } else if (!isKeyboard && event?.type !== 'selectionchange') {\n /**\n * we must ensure caretPosition doesn't persist once reactivated.\n */\n this.setCaretPosition(null);\n\n if (this.debug) {\n console.log(`Caret position reset due to \"${event?.type}\" event`, event);\n }\n }\n }\n\n private updateCaretPosition(length: number, minus = false) {\n const newCaretPos = this.computeNewCaretPosition(length, minus);\n this.setCaretPosition(newCaretPos);\n // Scroll to bottom\n setTimeout(() => {\n this.activeInputElement?.scrollTo({\n top: this.activeInputElement.scrollHeight,\n } as ScrollToOptions);\n });\n }\n\n private computeNewCaretPosition(length: number, minus = false) {\n let caretPosition = this.caretPosition;\n\n if (caretPosition != null) {\n if (minus) {\n if (caretPosition > 0) caretPosition = caretPosition - length;\n } else {\n caretPosition = caretPosition + length;\n }\n }\n return caretPosition;\n }\n\n private setCaretPosition(position: number | null, endPosition = position): void {\n this.caretPosition = position;\n this.caretPositionEnd = endPosition;\n }\n}\n","<!--\n ~ Copyright (c) 2020 - 2024 - Instrumentation Laboratory Company and Systelab Technologies, SA. All rights reserved.\n ~ NOTICE: All information contained herein is and remains the property of Instrumentation Laboratory Company and its\n ~ affiliates, if any. The intellectual and technical concepts contained herein are proprietary to Instrumentation\n ~ Laboratory Company and its affiliates and may be covered by U.S. and foreign patents and patent applications, and/or\n ~ are protected by trade secret or copyright law. Dissemination of this information or reproduction of this material is\n ~ strictly forbidden unless prior written permission is Instrumentation Laboratory Company.\n -->\n\n<div class=\"simple-keyboard\"></div>\n","/*\n * Copyright (c) 2020 - 2024 - Instrumentation Laboratory Company and Systelab Technologies, SA. All rights reserved.\n * NOTICE: All information contained herein is and remains the property of Instrumentation Laboratory Company and its\n * affiliates, if any. The intellectual and technical concepts contained herein are proprietary to Instrumentation\n * Laboratory Company and its affiliates and may be covered by U.S. and foreign patents and patent applications, and/or\n * are protected by trade secret or copyright law. Dissemination of this information or reproduction of this material is\n * strictly forbidden unless prior written permission is Instrumentation Laboratory Company.\n */\n\nimport { Overlay, OverlayRef, OverlaySizeConfig, PositionStrategy } from '@angular/cdk/overlay';\nimport { ComponentRef, Injectable } from '@angular/core';\nimport { ComponentPortal } from '@angular/cdk/portal';\nimport { SystelabVirtualKeyboardLayouts } from './constants';\nimport { SystelabVirtualKeyboardComponent } from './systelab-virtual-keyboard.component';\n\ninterface PositionStrategyOrigin {\n x: number;\n y: number;\n width?: number;\n height?: number;\n}\n\n@Injectable({\n providedIn: 'root',\n})\nexport class SystelabVirtualKeyboardOverlayService {\n private overlayRef!: OverlayRef;\n private inputOrigin: HTMLInputElement;\n private fixedBottom: boolean;\n private showKeyboardButtonElement: HTMLElement;\n private open: boolean;\n private layout: SystelabVirtualKeyboardLayouts;\n private focusDispatched: boolean = false;\n\n constructor(private readonly overlay: Overlay) {\n this.initListener();\n }\n\n public isCreated(): boolean {\n return !!this.overlayRef;\n }\n\n public isOpen(): boolean {\n return this.open;\n }\n\n public create(\n inputOrigin: HTMLInputElement,\n showKeyboardButtonElement: HTMLElement,\n fixedBottom: boolean,\n layout: SystelabVirtualKeyboardLayouts = SystelabVirtualKeyboardLayouts.default,\n ): ComponentRef<SystelabVirtualKeyboardComponent> {\n this.inputOrigin = inputOrigin;\n this.fixedBottom = fixedBottom;\n this.showKeyboardButtonElement = showKeyboardButtonElement;\n this.layout = layout;\n this.overlayRef = this.overlay.create({\n hasBackdrop: false,\n scrollStrategy: this.overlay.scrollStrategies.reposition(),\n disposeOnNavigation: true,\n });\n this.overlayRef.addPanelClass('virtual-keyboard-overlay-pane');\n if (fixedBottom) {\n this.overlayRef.addPanelClass('virtual-keyboard-fixed-bottom');\n }\n\n this.updatePositionStrategy(inputOrigin, fixedBottom);\n this.updateSize();\n\n this.open = true;\n return this.overlayRef.attach(new ComponentPortal(SystelabVirtualKeyboardComponent));\n }\n\n public updatePosition(): void {\n this.updatePositionStrategy(this.inputOrigin, this.fixedBottom);\n }\n\n public setFocusDispatched(dispatched: boolean): void {\n this.focusDispatched = dispatched;\n }\n\n public destroy(): void {\n if (this.overlayRef) {\n this.overlayRef.dispose();\n }\n this.overlayRef = null;\n this.open = false;\n }\n\n private initListener() {\n document.addEventListener('click', this.handleClick.bind(this));\n }\n\n private handleClick(event: MouseEvent) {\n if (this.focusDispatched) {\n this.focusDispatched = false;\n return;\n }\n console.log('Document clicked:', event);\n event.stopPropagation();\n const simpleKeyboardElement = document.querySelector('.simple-keyboard');\n const showKeyboardButtonClicked = (event.target as HTMLElement)?.classList.contains('virtual-keyboard-show-button');\n\n const containsKeyboard = simpleKeyboardElement?.contains(event.target as Node);\n const containsElementRef = this.inputOrigin?.contains(event.target as Node);\n // const containsFocusedElement = this.focusedElement?.contains(event.target as Node);\n const containsShowButton = this.showKeyboardButtonElement?.contains(event.target as Node);\n if (\n !containsKeyboard &&\n !containsElementRef &&\n // !containsFocusedElement &&\n !containsShowButton &&\n !showKeyboardButtonClicked\n ) {\n if (this.isCreated()) {\n this.destroy();\n }\n }\n }\n\n public hasAttached(): boolean {\n return this.overlayRef?.hasAttached();\n }\n\n private updatePositionStrategy(inputOrigin: HTMLInputElement, fixedBottom: boolean): void {\n this.overlayRef.updatePositionStrategy(this.getPositionStrategy(inputOrigin, fixedBottom));\n }\n\n private updateSize(): void {\n this.overlayRef.updateSize(this.getOverlaySize());\n }\n\n private getPositionStrategy(inputOrigin: HTMLInputElement, fixedBottom: boolean): PositionStrategy {\n if (fixedBottom) {\n return this.overlay.position().global().centerHorizontally().bottom('0');\n }\n\n const pointWithDimensions: PositionStrategyOrigin = this.computePositionStrategyOrigin(inputOrigin);\n\n return this.overlay\n .position()\n .flexibleConnectedTo(pointWithDimensions)\n .withFlexibleDimensions(false)\n .withLockedPosition(true)\n .withPush(false)\n .withPositions([\n {\n originX: 'start',\n originY: 'bottom',\n overlayX: 'start',\n overlayY: 'top',\n },\n {\n originX: 'start',\n originY: 'top',\n overlayX: 'start',\n overlayY: 'bottom',\n },\n {\n originX: 'end',\n originY: 'bottom',\n overlayX: 'end',\n overlayY: 'top',\n },\n {\n originX: 'end',\n originY: 'top',\n overlayX: 'end',\n overlayY: 'bottom',\n },\n ]);\n }\n\n private getOverlaySize(): OverlaySizeConfig {\n const overlayWidth = this.layout === SystelabVirtualKeyboardLayouts.numeric ? '400px' : '1200px';\n\n return {\n width: overlayWidth,\n maxWidth: overlayWidth,\n minWidth: overlayWidth,\n };\n }\n\n private computePositionStrategyOrigin(inputOrigin: HTMLInputElement): PositionStrategyOrigin {\n const overlayOffsetX = this.computeOverlayOffsetX(inputOrigin);\n const { width: overlayWidthString } = this.getOverlaySize();\n const overlayWidth = Number((overlayWidthString as string).replace('px', ''));\n const {x, y, width, height} = inputOrigin.getBoundingClientRect();\n return {\n width,\n height,\n x: width < overlayWidth ? x - overlayOffsetX : x + overlayOffsetX,\n y,\n };\n }\n\n private computeOverlayOffsetX(inputOrigin: HTMLInputElement): number {\n const { width: overlayWidthString } = this.getOverlaySize();\n const overlayWidth = Number((overlayWidthString as string).replace('px', ''));\n const inputWidth = inputOrigin.getBoundingClientRect().width;\n\n const extraWidth = overlayWidth - inputWidth;\n\n return Math.abs(extraWidth) / 2;\n }\n}\n","/*\n * Copyright (c) 2020 - 2024 - Instrumentation Laboratory Company and Systelab Technologies, SA. All rights reserved.\n * NOTICE: All information contained herein is and remains the property of Instrumentation Laboratory Company and its\n * affiliates, if any. The intellectual and technical concepts contained herein are proprietary to Instrumentation\n * Laboratory Company and its affiliates and may be covered by U.S. and foreign patents and patent applications, and/or\n * are protected by trade secret or copyright law. Dissemination of this information or reproduction of this material is\n * strictly forbidden unless prior written permission is Instrumentation Laboratory Company.\n */\n\nimport {\n AfterViewInit,\n ComponentRef,\n Directive,\n ElementRef,\n HostListener,\n Inject,\n Input,\n OnDestroy,\n OnInit,\n Optional,\n Renderer2,\n} from '@angular/core';\n\nimport { DOCUMENT } from '@angular/common';\n\nimport { SystelabVirtualKeyboardInputTypes, SystelabVirtualKeyboardLayouts } from './constants';\nimport { SystelabVirtualKeyboardComponent } from './systelab-virtual-keyboard.component';\nimport { SystelabVirtualKeyboardOverlayService } from './systelab-virtual-keyboard-overlay.service';\nimport { SystelabVirtualKeyboardConfig, VIRTUAL_KEYBOARD_CONFIG } from './systelab-virtual-keyboard.config';\n\n@Directive({\n selector: 'input[vkEnabled], textarea[vkEnabled]',\n})\nexport class SystelabVirtualKeyboardDirective implements OnInit, AfterViewInit, OnDestroy {\n @HostListener('window:touchmove', ['$event'])\n @HostListener('window:touchend', ['$event'])\n @HostListener('window:wheel', ['$event'])\n @HostListener('document:scroll', ['$event'])\n onDocumentScroll() {\n if (this.overlayService.isCreated()) {\n this.overlayService.updatePosition();\n }\n }\n\n @HostListener('focus', ['$event'])\n onFocus(): void {\n console.log('Focused');\n if (this.overlayService.isCreated()) {\n this.closePanel();\n }\n this.overlayService.setFocusDispatched(true);\n if (!this.overlayService.isOpen()) {\n this.openPanel();\n }\n }\n\n private enabled = false;\n\n @Input()\n set vkEnabled(enabled: boolean | string) {\n if (typeof enabled === 'string') {\n this.enabled = true;\n } else {\n this.enabled = enabled;\n }\n };\n\n get vkEnabled(): boolean {\n return this.enabled;\n }\n\n private fixedBottom = false;\n\n @Input()\n get vkFixedBottom(): boolean {\n return this.fixedBottom;\n }\n\n set vkFixedBottom(fixedBottom: boolean | string) {\n if (typeof fixedBottom === 'string') {\n this.fixedBottom = true;\n } else {\n this.fixedBottom = fixedBottom;\n }\n }\n\n private debug = false;\n\n @Input()\n get vkDebug(): boolean {\n return this.debug;\n }\n\n set vkDebug(debug: boolean) {\n this.debug = debug;\n }\n\n private config: SystelabVirtualKeyboardConfig;\n\n @Input()\n get vkConfig(): SystelabVirtualKeyboardConfig {\n return this.config;\n }\n\n set vkConfig(config: SystelabVirtualKeyboardConfig) {\n this.config = config;\n }\n\n private panelRef!: ComponentRef<SystelabVirtualKeyboardComponent>;\n private showKeyboardButtonElement: HTMLElement;\n\n constructor(\n private readonly elementRef: ElementRef<HTMLInputElement>,\n private readonly overlayService: SystelabVirtualKeyboardOverlayService,\n private readonly renderer: Renderer2,\n @Inject(DOCUMENT) private readonly document: any,\n @Optional() @Inject(VIRTUAL_KEYBOARD_CONFIG) private virtualKeyboardConfig: SystelabVirtualKeyboardConfig,\n ) {\n this.config = this.virtualKeyboardConfig;\n }\n\n ngOnInit() {\n if (this.config?.showIcon) {\n this.attachKeyboardIcon();\n }\n }\n\n ngAfterViewInit() {\n if (this.vkEnabled && this.config?.showIcon) {\n const keyboardIcon = this.elementRef.nativeElement.parentElement.querySelector('i');\n keyboardIcon.addEventListener('click', this.togglePanel.bind(this));\n }\n }\n\n ngOnDestroy(): void {\n if (this.overlayService.isCreated()) {\n this.overlayService.destroy();\n }\n }\n\n private togglePanel(): void {\n if (this.overlayService.isOpen()) {\n this.closePanel();\n } else {\n this.openPanel();\n }\n }\n\n private openPanel(): void {\n if (this.overlayService.isCreated()) {\n this.overlayService.destroy();\n }\n if (this.overlayService.hasAttached()) {\n return;\n }\n\n const currentLayout = this.getLayout(this.elementRef.nativeElement);\n\n this.panelRef = this.overlayService.create(this.inputOrigin(), this.showKeyboardButtonElement, this.vkFixedBottom, currentLayout);\n this.panelRef.instance.debug = this.vkDebug;\n this.panelRef.instance.setActiveInput(this.elementRef.nativeElement);\n this.panelRef.instance.setLayout(currentLayout);\n this.panelRef.instance.closePanel.subscribe(() => this.closePanel());\n }\n\n private getLayout(activeInputElement: HTMLInputElement | HTMLTextAreaElement): SystelabVirtualKeyboardLayouts {\n if (this.config?.hasOwnProperty('layout')) {\n return this.config.layout;\n }\n if (this.isInputAlphabetic(activeInputElement)) {\n return SystelabVirtualKeyboardLayouts.default;\n } else if (this.isInputNumeric(activeInputElement)) {\n return SystelabVirtualKeyboardLayouts.numeric;\n } else {\n return SystelabVirtualKeyboardLayouts.default;\n }\n }\n\n private isInputAlphabetic(activeInputElement: HTMLInputElement | HTMLTextAreaElement): boolean {\n const inputType = activeInputElement?.type;\n return inputType && [SystelabVirtualKeyboardInputTypes.text, SystelabVirtualKeyboardInputTypes.password].some((i) => i === inputType);\n }\n\n private isInputNumeric(activeInputElement: HTMLInputElement | HTMLTextAreaElement): boolean {\n const inputType = activeInputElement?.type;\n return inputType && [SystelabVirtualKeyboardInputTypes.number].some((i) => i === inputType);\n }\n\n private closePanel(): void {\n this.overlayService.destroy();\n }\n\n private inputOrigin(): HTMLInputElement {\n return this.elementRef.nativeElement;\n }\n\n private attachKeyboardIcon() {\n if (this.vkEnabled) {\n const child = this.document.createElement('i');\n child.classList.add('fa');\n child.classList.add('fa-keyboard');\n child.classList.add('virtual-keyboard-show-button');\n this.renderer.appendChild(this.elementRef.nativeElement.parentElement, child);\n this.showKeyboardButtonElement = child;\n }\n }\n}\n","import { ModuleWithProviders, NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { SystelabVirtualKeyboardDirective } from './systelab-virtual-keyboard.directive';\nimport { OverlayModule } from '@angular/cdk/overlay';\nimport { SystelabVirtualKeyboardConfig, VIRTUAL_KEYBOARD_CONFIG } from './systelab-virtual-keyboard.config';\nimport { SystelabVirtualKeyboardOverlayService } from './systelab-virtual-keyboard-overlay.service';\n\nexport const factory = () => {\n const systelabVirtualKeyboardModuleCreated = (factory as any)._systelabVirtualKeyboardModuleCreated || false;\n if (systelabVirtualKeyboardModuleCreated) {\n throw new Error('SystelabVirtualKeyboardModuleCreated.forRoot imported to many times');\n }\n (factory as any)._systelabVirtualKeyboardModuleCreated = true;\n};\n\n@NgModule({\n imports: [CommonModule, OverlayModule],\n declarations: [SystelabVirtualKeyboardDirective],\n exports: [SystelabVirtualKeyboardDirective],\n})\nexport class SystelabVirtualKeyboardModule {\n public static forRoot(conf?: SystelabVirtualKeyboardConfig): ModuleWithProviders<SystelabVirtualKeyboardModule> {\n return {\n ngModule: SystelabVirtualKeyboardModule,\n providers: [\n SystelabVirtualKeyboardOverlayService,\n {\n provide: VIRTUAL_KEYBOARD_CONFIG, useValue: conf\n }\n ]\n };\n }\n\n public static forChild(): ModuleWithProviders<SystelabVirtualKeyboardModule> {\n return {\n ngModule: SystelabVirtualKeyboardModule,\n providers: [],\n };\n }\n}\n","/*\n * Public API Surface of systelab-virtual-keyboard\n */\n\nexport * from './lib/constants';\nexport { SystelabVirtualKeyboardConfig } from './lib/systelab-virtual-keyboard.config';\nexport * from './lib/systelab-virtual-keyboard.directive';\nexport * from './lib/systelab-virtual-keyboard.module';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.SystelabVirtualKeyboardOverlayService"],"mappings":"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"}
|
package/lib/constants.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../../projects/systelab-virtual-keyboard/src/lib/constants.ts"],"names":[],"mappings":"AASA,oBAAY,6BAA6B;
|
|
1
|
+
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../../projects/systelab-virtual-keyboard/src/lib/constants.ts"],"names":[],"mappings":"AASA,oBAAY,6BAA6B;IACrC,IAAI,WAAW;IACf,KAAK,YAAY;IACjB,KAAK,YAAY;IACjB,IAAI,WAAW;IACf,SAAS,WAAW;IACpB,QAAQ,eAAe;IACvB,KAAK,YAAY;IACjB,GAAG,UAAU;CAChB;AAED,oBAAY,8BAA8B;IACtC,OAAO,YAAY;IACnB,KAAK,UAAU;IACf,OAAO,YAAY;CACtB;AAED,oBAAY,mCAAmC;IAC3C,eAAe,oBAAoB;IACnC,eAAe,oBAAoB;CACtC;AAED,oBAAY,iCAAiC;IACzC,IAAI,SAAS;IACb,MAAM,WAAW;IACjB,QAAQ,aAAa;CACxB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"systelab-virtual-keyboard-overlay.service.d.ts","sourceRoot":"","sources":["../../../projects/systelab-virtual-keyboard/src/lib/systelab-virtual-keyboard-overlay.service.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,OAAO,EAAmD,MAAM,sBAAsB,CAAC;AAChG,OAAO,EAAE,YAAY,EAAc,MAAM,eAAe,CAAC;AAEzD,OAAO,EAAE,8BAA8B,EAAE,MAAM,aAAa,CAAC;AAC7D,OAAO,EAAE,gCAAgC,EAAE,MAAM,uCAAuC,CAAC;;AASzF,qBAGa,qCAAqC;
|
|
1
|
+
{"version":3,"file":"systelab-virtual-keyboard-overlay.service.d.ts","sourceRoot":"","sources":["../../../projects/systelab-virtual-keyboard/src/lib/systelab-virtual-keyboard-overlay.service.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,OAAO,EAAmD,MAAM,sBAAsB,CAAC;AAChG,OAAO,EAAE,YAAY,EAAc,MAAM,eAAe,CAAC;AAEzD,OAAO,EAAE,8BAA8B,EAAE,MAAM,aAAa,CAAC;AAC7D,OAAO,EAAE,gCAAgC,EAAE,MAAM,uCAAuC,CAAC;;AASzF,qBAGa,qCAAqC;IASlC,OAAO,CAAC,QAAQ,CAAC,OAAO;IARpC,OAAO,CAAC,UAAU,CAAc;IAChC,OAAO,CAAC,WAAW,CAAmB;IACtC,OAAO,CAAC,WAAW,CAAU;IAC7B,OAAO,CAAC,yBAAyB,CAAc;IAC/C,OAAO,CAAC,IAAI,CAAU;IACtB,OAAO,CAAC,MAAM,CAAiC;IAC/C,OAAO,CAAC,eAAe,CAAkB;gBAEZ,OAAO,EAAE,OAAO;IAItC,SAAS,IAAI,OAAO;IAIpB,MAAM,IAAI,OAAO;IAIjB,MAAM,CACT,WAAW,EAAE,gBAAgB,EAC7B,yBAAyB,EAAE,WAAW,EACtC,WAAW,EAAE,OAAO,EACpB,MAAM,GAAE,8BAAuE,GAChF,YAAY,CAAC,gCAAgC,CAAC;IAsB1C,cAAc,IAAI,IAAI;IAItB,kBAAkB,CAAC,UAAU,EAAE,OAAO,GAAG,IAAI;IAI7C,OAAO,IAAI,IAAI;IAQtB,OAAO,CAAC,YAAY;IAIpB,OAAO,CAAC,WAAW;IA2BZ,WAAW,IAAI,OAAO;IAI7B,OAAO,CAAC,sBAAsB;IAI9B,OAAO,CAAC,UAAU;IAIlB,OAAO,CAAC,mBAAmB;IAyC3B,OAAO,CAAC,cAAc;IAUtB,OAAO,CAAC,6BAA6B;IAarC,OAAO,CAAC,qBAAqB;yCA3KpB,qCAAqC;6CAArC,qCAAqC;CAoLjD"}
|
|
@@ -17,6 +17,7 @@ export declare class SystelabVirtualKeyboardComponent implements AfterViewInit {
|
|
|
17
17
|
private caretPosition;
|
|
18
18
|
private caretPositionEnd;
|
|
19
19
|
private activeInputElement;
|
|
20
|
+
private shiftPressed;
|
|
20
21
|
closePanel: EventEmitter<void>;
|
|
21
22
|
constructor(elementRef: ElementRef<HTMLInputElement>, virtualKeyboardConfig: SystelabVirtualKeyboardConfig);
|
|
22
23
|
ngAfterViewInit(): void;
|
|
@@ -31,7 +32,7 @@ export declare class SystelabVirtualKeyboardComponent implements AfterViewInit {
|
|
|
31
32
|
private isAcceptedNonStandardButton;
|
|
32
33
|
private dispatchEvents;
|
|
33
34
|
private convertFromButtonToCode;
|
|
34
|
-
private
|
|
35
|
+
private toggleShiftLayout;
|
|
35
36
|
private isStandardButton;
|
|
36
37
|
private removeAt;
|
|
37
38
|
private addStringAt;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"systelab-virtual-keyboard.component.d.ts","sourceRoot":"","sources":["../../../projects/systelab-virtual-keyboard/src/lib/systelab-virtual-keyboard.component.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"systelab-virtual-keyboard.component.d.ts","sourceRoot":"","sources":["../../../projects/systelab-virtual-keyboard/src/lib/systelab-virtual-keyboard.component.ts"],"names":[],"mappings":"AAAA,OAAO,EACH,aAAa,EAEb,UAAU,EACV,YAAY,EAKf,MAAM,eAAe,CAAC;AAEvB,OAAO,EAIH,8BAA8B,EACjC,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,6BAA6B,EAA2B,MAAM,oCAAoC,CAAC;;AAG5G,qBAOa,gCAAiC,YAAW,aAAa;IAyCtD,OAAO,CAAC,UAAU;IAA6E,OAAO,CAAC,qBAAqB;IAvCxI,WAAW,CAAC,KAAK,EAAE,aAAa,GAAG,IAAI;IAOvC,aAAa,CAAC,KAAK,EAAE,YAAY,GAAG,IAAI;IAKxC,YAAY,CAAC,KAAK,EAAE,KAAK,GAAG,IAAI;IAKhC,qBAAqB,CAAC,KAAK,EAAE,KAAK,GAAG,IAAI;IAIzC,IAAI,SAAS,IAAI,MAAM,CAEtB;IAED,IAAI,UAAU,IAAI,OAAO,CAExB;IAEM,KAAK,UAAS;IACrB,OAAO,CAAC,cAAc,CAA0E;IAChG,OAAO,CAAC,QAAQ,CAAiB;IACjC,OAAO,CAAC,aAAa,CAAuB;IAC5C,OAAO,CAAC,gBAAgB,CAAuB;IAC/C,OAAO,CAAC,kBAAkB,CAAiD;IAC3E,OAAO,CAAC,YAAY,CAAkB;IAE5B,UAAU,qBAA4B;gBAE5B,UAAU,EAAE,UAAU,CAAC,gBAAgB,CAAC,EAAuD,qBAAqB,EAAE,6BAA6B;IAGvK,eAAe;IA2BR,cAAc,CAAC,KAAK,EAAE,gBAAgB,GAAG,mBAAmB,GAAG,IAAI;IAyBnE,SAAS,CAAC,MAAM,EAAE,8BAA8B,GAAG,IAAI;IAS9D,OAAO,CAAC,qBAAqB;IAoD7B,OAAO,CAAC,iBAAiB;IAKzB,OAAO,CAAC,cAAc;IAKtB,OAAO,CAAC,cAAc;IAuCtB,OAAO,CAAC,kBAAkB;IAwB1B,OAAO,CAAC,eAAe;IAIvB,OAAO,CAAC,2BAA2B;IASnC,OAAO,CAAC,cAAc;IAsBtB,OAAO,CAAC,uBAAuB;IAqB/B,OAAO,CAAC,iBAAiB;IAQzB,OAAO,CAAC,gBAAgB;IAOxB,OAAO,CAAC,QAAQ;IA6BhB,OAAO,CAAC,WAAW;IAsBnB,OAAO,CAAC,iBAAiB;IAqCzB,OAAO,CAAC,mBAAmB;IAW3B,OAAO,CAAC,uBAAuB;IAa/B,OAAO,CAAC,gBAAgB;yCA7Zf,gCAAgC;2CAAhC,gCAAgC;CAia5C"}
|
|
@@ -4,6 +4,6 @@ export declare const VIRTUAL_KEYBOARD_CONFIG: InjectionToken<SystelabVirtualKeyb
|
|
|
4
4
|
export interface SystelabVirtualKeyboardConfig {
|
|
5
5
|
layout?: SystelabVirtualKeyboardLayouts;
|
|
6
6
|
inputMethod?: SystelabVirtualKeyboardInputMethods;
|
|
7
|
-
|
|
7
|
+
showIcon?: boolean;
|
|
8
8
|
}
|
|
9
9
|
//# sourceMappingURL=systelab-virtual-keyboard.config.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"systelab-virtual-keyboard.config.d.ts","sourceRoot":"","sources":["../../../projects/systelab-virtual-keyboard/src/lib/systelab-virtual-keyboard.config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAC/C,OAAO,EAAE,mCAAmC,EAAE,8BAA8B,EAAE,MAAM,aAAa,CAAC;AAElG,eAAO,MAAM,uBAAuB,+CAA+E,CAAC;AAEpH,MAAM,WAAW,6BAA6B;
|
|
1
|
+
{"version":3,"file":"systelab-virtual-keyboard.config.d.ts","sourceRoot":"","sources":["../../../projects/systelab-virtual-keyboard/src/lib/systelab-virtual-keyboard.config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAC/C,OAAO,EAAE,mCAAmC,EAAE,8BAA8B,EAAE,MAAM,aAAa,CAAC;AAElG,eAAO,MAAM,uBAAuB,+CAA+E,CAAC;AAEpH,MAAM,WAAW,6BAA6B;IAC1C,MAAM,CAAC,EAAE,8BAA8B,CAAC;IACxC,WAAW,CAAC,EAAE,mCAAmC,CAAC;IAClD,QAAQ,CAAC,EAAE,OAAO,CAAC;CACtB"}
|
|
@@ -9,7 +9,7 @@ export declare class SystelabVirtualKeyboardDirective implements OnInit, AfterVi
|
|
|
9
9
|
private readonly document;
|
|
10
10
|
private virtualKeyboardConfig;
|
|
11
11
|
onDocumentScroll(): void;
|
|
12
|
-
onFocus(
|
|
12
|
+
onFocus(): void;
|
|
13
13
|
private enabled;
|
|
14
14
|
set vkEnabled(enabled: boolean | string);
|
|
15
15
|
get vkEnabled(): boolean;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"systelab-virtual-keyboard.directive.d.ts","sourceRoot":"","sources":["../../../projects/systelab-virtual-keyboard/src/lib/systelab-virtual-keyboard.directive.ts"],"names":[],"mappings":"AASA,OAAO,
|
|
1
|
+
{"version":3,"file":"systelab-virtual-keyboard.directive.d.ts","sourceRoot":"","sources":["../../../projects/systelab-virtual-keyboard/src/lib/systelab-virtual-keyboard.directive.ts"],"names":[],"mappings":"AASA,OAAO,EACH,aAAa,EAGb,UAAU,EAIV,SAAS,EACT,MAAM,EAEN,SAAS,EACZ,MAAM,eAAe,CAAC;AAMvB,OAAO,EAAE,qCAAqC,EAAE,MAAM,6CAA6C,CAAC;AACpG,OAAO,EAAE,6BAA6B,EAA2B,MAAM,oCAAoC,CAAC;;AAE5G,qBAGa,gCAAiC,YAAW,MAAM,EAAE,aAAa,EAAE,SAAS;IA+EjF,OAAO,CAAC,QAAQ,CAAC,UAAU;IAC3B,OAAO,CAAC,QAAQ,CAAC,cAAc;IAC/B,OAAO,CAAC,QAAQ,CAAC,QAAQ;IACP,OAAO,CAAC,QAAQ,CAAC,QAAQ;IACE,OAAO,CAAC,qBAAqB;IA9E9E,gBAAgB;IAOhB,OAAO,IAAI,IAAI;IAWf,OAAO,CAAC,OAAO,CAAS;IAExB,IACI,SAAS,CAAC,OAAO,EAAE,OAAO,GAAG,MAAM,EAMtC;IAED,IAAI,SAAS,IAAI,OAAO,CAEvB;IAED,OAAO,CAAC,WAAW,CAAS;IAE5B,IACI,aAAa,IAAI,OAAO,CAE3B;IAED,IAAI,aAAa,CAAC,WAAW,EAAE,OAAO,GAAG,MAAM,EAM9C;IAED,OAAO,CAAC,KAAK,CAAS;IAEtB,IACI,OAAO,IAAI,OAAO,CAErB;IAED,IAAI,OAAO,CAAC,KAAK,EAAE,OAAO,EAEzB;IAED,OAAO,CAAC,MAAM,CAAgC;IAE9C,IACI,QAAQ,IAAI,6BAA6B,CAE5C;IAED,IAAI,QAAQ,CAAC,MAAM,EAAE,6BAA6B,EAEjD;IAED,OAAO,CAAC,QAAQ,CAAkD;IAClE,OAAO,CAAC,yBAAyB,CAAc;gBAG1B,UAAU,EAAE,UAAU,CAAC,gBAAgB,CAAC,EACxC,cAAc,EAAE,qCAAqC,EACrD,QAAQ,EAAE,SAAS,EACD,QAAQ,EAAE,GAAG,EACK,qBAAqB,EAAE,6BAA6B;IAK7G,QAAQ;IAMR,eAAe;IAOf,WAAW,IAAI,IAAI;IAMnB,OAAO,CAAC,WAAW;IAQnB,OAAO,CAAC,SAAS;IAiBjB,OAAO,CAAC,SAAS;IAajB,OAAO,CAAC,iBAAiB;IAKzB,OAAO,CAAC,cAAc;IAKtB,OAAO,CAAC,UAAU;IAIlB,OAAO,CAAC,WAAW;IAInB,OAAO,CAAC,kBAAkB;yCAnKjB,gCAAgC;2CAAhC,gCAAgC;CA6K5C"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"systelab-virtual-keyboard.module.d.ts","sourceRoot":"","sources":["../../../projects/systelab-virtual-keyboard/src/lib/systelab-virtual-keyboard.module.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAY,MAAM,eAAe,CAAC;AAI9D,OAAO,EAAE,6BAA6B,EAA2B,MAAM,oCAAoC,CAAC;;;;;AAG5G,eAAO,MAAM,OAAO,YAMnB,CAAC;AAEF,qBAKa,6BAA6B;
|
|
1
|
+
{"version":3,"file":"systelab-virtual-keyboard.module.d.ts","sourceRoot":"","sources":["../../../projects/systelab-virtual-keyboard/src/lib/systelab-virtual-keyboard.module.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAY,MAAM,eAAe,CAAC;AAI9D,OAAO,EAAE,6BAA6B,EAA2B,MAAM,oCAAoC,CAAC;;;;;AAG5G,eAAO,MAAM,OAAO,YAMnB,CAAC;AAEF,qBAKa,6BAA6B;WACxB,OAAO,CAAC,IAAI,CAAC,EAAE,6BAA6B,GAAG,mBAAmB,CAAC,6BAA6B,CAAC;WAYjG,QAAQ,IAAI,mBAAmB,CAAC,6BAA6B,CAAC;yCAbnE,6BAA6B;0CAA7B,6BAA6B;0CAA7B,6BAA6B;CAmBzC"}
|