systelab-virtual-keyboard 0.0.1 → 0.0.3
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 +14 -7
- package/esm2022/lib/constants.mjs +6 -1
- package/esm2022/lib/systelab-virtual-keyboard-overlay.service.mjs +27 -2
- package/esm2022/lib/systelab-virtual-keyboard.component.mjs +64 -21
- package/esm2022/lib/systelab-virtual-keyboard.config.mjs +1 -1
- package/esm2022/lib/systelab-virtual-keyboard.directive.mjs +12 -19
- package/fesm2022/systelab-virtual-keyboard.mjs +104 -39
- package/fesm2022/systelab-virtual-keyboard.mjs.map +1 -1
- package/lib/constants.d.ts +4 -0
- package/lib/constants.d.ts.map +1 -1
- package/lib/systelab-virtual-keyboard-overlay.service.d.ts +5 -1
- package/lib/systelab-virtual-keyboard-overlay.service.d.ts.map +1 -1
- package/lib/systelab-virtual-keyboard.component.d.ts +5 -2
- package/lib/systelab-virtual-keyboard.component.d.ts.map +1 -1
- package/lib/systelab-virtual-keyboard.config.d.ts +2 -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/package.json +5 -5
|
@@ -13,23 +13,16 @@ import { VIRTUAL_KEYBOARD_CONFIG } from './systelab-virtual-keyboard.config';
|
|
|
13
13
|
import * as i0 from "@angular/core";
|
|
14
14
|
import * as i1 from "./systelab-virtual-keyboard-overlay.service";
|
|
15
15
|
export class SystelabVirtualKeyboardDirective {
|
|
16
|
-
onDocumentClick(event) {
|
|
17
|
-
const simpleKeyboardElement = document.querySelector('.simple-keyboard');
|
|
18
|
-
const showKeyboardButtonClicked = event.target?.classList.contains('virtual-keyboard-show-button');
|
|
19
|
-
if (!simpleKeyboardElement?.contains(event.target) &&
|
|
20
|
-
!this.elementRef?.nativeElement?.contains(event.target) &&
|
|
21
|
-
!this.showKeyboardButtonElement?.contains(event.target) &&
|
|
22
|
-
!showKeyboardButtonClicked) {
|
|
23
|
-
if (this.overlayService.isCreated()) {
|
|
24
|
-
this.overlayService.destroy();
|
|
25
|
-
}
|
|
26
|
-
}
|
|
27
|
-
}
|
|
28
16
|
onDocumentScroll() {
|
|
29
17
|
if (this.overlayService.isCreated()) {
|
|
30
18
|
// update position and size on scroll
|
|
31
19
|
}
|
|
32
20
|
}
|
|
21
|
+
onFocus(event) {
|
|
22
|
+
if (!this.overlayService.isOpen()) {
|
|
23
|
+
this.openPanel();
|
|
24
|
+
}
|
|
25
|
+
}
|
|
33
26
|
set vkEnabled(enabled) {
|
|
34
27
|
if (typeof enabled === 'string') {
|
|
35
28
|
this.enabled = true;
|
|
@@ -106,7 +99,7 @@ export class SystelabVirtualKeyboardDirective {
|
|
|
106
99
|
return;
|
|
107
100
|
}
|
|
108
101
|
const currentLayout = this.getLayout(this.elementRef.nativeElement);
|
|
109
|
-
this.panelRef = this.overlayService.create(this.inputOrigin(), this.vkFixedBottom, currentLayout);
|
|
102
|
+
this.panelRef = this.overlayService.create(this.inputOrigin(), this.showKeyboardButtonElement, this.vkFixedBottom, currentLayout);
|
|
110
103
|
this.panelRef.instance.debug = this.vkDebug;
|
|
111
104
|
this.panelRef.instance.setActiveInput(this.elementRef.nativeElement);
|
|
112
105
|
this.panelRef.instance.setLayout(currentLayout);
|
|
@@ -151,7 +144,7 @@ export class SystelabVirtualKeyboardDirective {
|
|
|
151
144
|
}
|
|
152
145
|
}
|
|
153
146
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.9", ngImport: i0, type: SystelabVirtualKeyboardDirective, deps: [{ token: i0.ElementRef }, { token: i1.SystelabVirtualKeyboardOverlayService }, { token: i0.Renderer2 }, { token: DOCUMENT }, { token: VIRTUAL_KEYBOARD_CONFIG, optional: true }], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
154
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.0.9", type: SystelabVirtualKeyboardDirective, selector: "input[vkEnabled], textarea[vkEnabled]", inputs: { vkEnabled: "vkEnabled", vkFixedBottom: "vkFixedBottom", vkDebug: "vkDebug", vkConfig: "vkConfig" }, host: { listeners: { "
|
|
147
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.0.9", type: SystelabVirtualKeyboardDirective, selector: "input[vkEnabled], textarea[vkEnabled]", inputs: { vkEnabled: "vkEnabled", vkFixedBottom: "vkFixedBottom", vkDebug: "vkDebug", vkConfig: "vkConfig" }, host: { listeners: { "window:touchmove": "onDocumentScroll($event)", "window:touchend": "onDocumentScroll($event)", "window:wheel": "onDocumentScroll($event)", "focus": "onFocus($event)" } }, ngImport: i0 }); }
|
|
155
148
|
}
|
|
156
149
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.9", ngImport: i0, type: SystelabVirtualKeyboardDirective, decorators: [{
|
|
157
150
|
type: Directive,
|
|
@@ -166,10 +159,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.9", ngImpor
|
|
|
166
159
|
}, {
|
|
167
160
|
type: Inject,
|
|
168
161
|
args: [VIRTUAL_KEYBOARD_CONFIG]
|
|
169
|
-
}] }], propDecorators: {
|
|
170
|
-
type: HostListener,
|
|
171
|
-
args: ['document:click', ['$event']]
|
|
172
|
-
}], onDocumentScroll: [{
|
|
162
|
+
}] }], propDecorators: { onDocumentScroll: [{
|
|
173
163
|
type: HostListener,
|
|
174
164
|
args: ['window:touchmove', ['$event']]
|
|
175
165
|
}, {
|
|
@@ -178,6 +168,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.9", ngImpor
|
|
|
178
168
|
}, {
|
|
179
169
|
type: HostListener,
|
|
180
170
|
args: ['window:wheel', ['$event']]
|
|
171
|
+
}], onFocus: [{
|
|
172
|
+
type: HostListener,
|
|
173
|
+
args: ['focus', ['$event']]
|
|
181
174
|
}], vkEnabled: [{
|
|
182
175
|
type: Input
|
|
183
176
|
}], vkFixedBottom: [{
|
|
@@ -187,4 +180,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.9", ngImpor
|
|
|
187
180
|
}], vkConfig: [{
|
|
188
181
|
type: Input
|
|
189
182
|
}] } });
|
|
190
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3lzdGVsYWItdmlydHVhbC1rZXlib2FyZC5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9zeXN0ZWxhYi12aXJ0dWFsLWtleWJvYXJkL3NyYy9saWIvc3lzdGVsYWItdmlydHVhbC1rZXlib2FyZC5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7R0FPRztBQUVILE9BQU8sRUFHTCxTQUFTLEVBRVQsWUFBWSxFQUNaLE1BQU0sRUFDTixLQUFLLEVBR0wsUUFBUSxHQUVULE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUUzQyxPQUFPLEVBQUUsaUNBQWlDLEVBQUUsOEJBQThCLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFHaEcsT0FBTyxFQUFpQyx1QkFBdUIsRUFBRSxNQUFNLG9DQUFvQyxDQUFDOzs7QUFLNUcsTUFBTSxPQUFPLGdDQUFnQztJQUUzQyxlQUFlLENBQUMsS0FBOEI7UUFDNUMsTUFBTSxxQkFBcUIsR0FBRyxRQUFRLENBQUMsYUFBYSxDQUFDLGtCQUFrQixDQUFDLENBQUM7UUFDekUsTUFBTSx5QkFBeUIsR0FBSSxLQUFLLENBQUMsTUFBc0IsRUFBRSxTQUFTLENBQUMsUUFBUSxDQUFDLDhCQUE4QixDQUFDLENBQUM7UUFDcEgsSUFDRSxDQUFDLHFCQUFxQixFQUFFLFFBQVEsQ0FBQyxLQUFLLENBQUMsTUFBYyxDQUFDO1lBQ3RELENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRSxhQUFhLEVBQUUsUUFBUSxDQUFDLEtBQUssQ0FBQyxNQUFjLENBQUM7WUFDL0QsQ0FBQyxJQUFJLENBQUMseUJBQXlCLEVBQUUsUUFBUSxDQUFDLEtBQUssQ0FBQyxNQUFjLENBQUM7WUFDL0QsQ0FBQyx5QkFBeUIsRUFDMUI7WUFDQSxJQUFJLElBQUksQ0FBQyxjQUFjLENBQUMsU0FBUyxFQUFFLEVBQUU7Z0JB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LENBQUMsYUFBYSxFQUFFLEtBQUssQ0FBQyxDQUFDO1lBQzlFLElBQUksQ0FBQyx5QkFBeUIsR0FBRyxLQUFLLENBQUM7U0FDeEM7SUFDSCxDQUFDOzhHQXJLVSxnQ0FBZ0MsMEhBNkVqQyxRQUFRLGFBQ0ksdUJBQXVCO2tHQTlFbEMsZ0NBQWdDOzsyRkFBaEMsZ0NBQWdDO2tCQUg1QyxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSx1Q0FBdUM7aUJBQ2xEOzswQkE4RUksTUFBTTsyQkFBQyxRQUFROzswQkFDZixRQUFROzswQkFBSSxNQUFNOzJCQUFDLHVCQUF1Qjt5Q0E1RTdDLGVBQWU7c0JBRGQsWUFBWTt1QkFBQyxnQkFBZ0IsRUFBRSxDQUFDLFFBQVEsQ0FBQztnQkFtQjFDLGdCQUFnQjtzQkFIZixZQUFZO3VCQUFDLGtCQUFrQixFQUFFLENBQUMsUUFBUSxDQUFDOztzQkFDM0MsWUFBWTt1QkFBQyxpQkFBaUIsRUFBRSxDQUFDLFFBQVEsQ0FBQzs7c0JBQzFDLFlBQVk7dUJBQUMsY0FBYyxFQUFFLENBQUMsUUFBUSxDQUFDO2dCQVNwQyxTQUFTO3NCQURaLEtBQUs7Z0JBY0YsYUFBYTtzQkFEaEIsS0FBSztnQkFjRixPQUFPO3NCQURWLEtBQUs7Z0JBVUYsUUFBUTtzQkFEWCxLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIENvcHlyaWdodCAoYykgMjAyMCAtIDIwMjQgLSBJbnN0cnVtZW50YXRpb24gTGFib3JhdG9yeSBDb21wYW55IGFuZCBTeXN0ZWxhYiBUZWNobm9sb2dpZXMsIFNBLiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICogTk9USUNFOiAgQWxsIGluZm9ybWF0aW9uIGNvbnRhaW5lZCBoZXJlaW4gaXMgYW5kIHJlbWFpbnMgdGhlIHByb3BlcnR5IG9mIEluc3RydW1lbnRhdGlvbiBMYWJvcmF0b3J5IENvbXBhbnkgYW5kIGl0c1xuICogYWZmaWxpYXRlcywgaWYgYW55LiAgVGhlIGludGVsbGVjdHVhbCBhbmQgdGVjaG5pY2FsIGNvbmNlcHRzIGNvbnRhaW5lZCBoZXJlaW4gYXJlIHByb3ByaWV0YXJ5IHRvIEluc3RydW1lbnRhdGlvblxuICogTGFib3JhdG9yeSBDb21wYW55IGFuZCBpdHMgYWZmaWxpYXRlcyBhbmQgbWF5IGJlIGNvdmVyZWQgYnkgVS5TLiBhbmQgZm9yZWlnbiBwYXRlbnRzIGFuZCBwYXRlbnQgYXBwbGljYXRpb25zLCBhbmQvb3JcbiAqIGFyZSBwcm90ZWN0ZWQgYnkgdHJhZGUgc2VjcmV0IG9yIGNvcHlyaWdodCBsYXcuIERpc3NlbWluYXRpb24gb2YgdGhpcyBpbmZvcm1hdGlvbiBvciByZXByb2R1Y3Rpb24gb2YgdGhpcyBtYXRlcmlhbCBpc1xuICogc3RyaWN0bHkgZm9yYmlkZGVuIHVubGVzcyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24gaXMgSW5zdHJ1bWVudGF0aW9uIExhYm9yYXRvcnkgQ29tcGFueS5cbiAqL1xuXG5pbXBvcnQge1xuICBBZnRlclZpZXdJbml0LFxuICBDb21wb25lbnRSZWYsXG4gIERpcmVjdGl2ZSxcbiAgRWxlbWVudFJlZixcbiAgSG9zdExpc3RlbmVyLFxuICBJbmplY3QsXG4gIElucHV0LFxuICBPbkRlc3Ryb3ksXG4gIE9uSW5pdCxcbiAgT3B0aW9uYWwsXG4gIFJlbmRlcmVyMixcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IERPQ1VNRU5UIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcblxuaW1wb3J0IHsgU3lzdGVsYWJWaXJ0dWFsS2V5Ym9hcmRJbnB1dFR5cGVzLCBTeXN0ZWxhYlZpcnR1YWxLZXlib2FyZExheW91dHMgfSBmcm9tICcuL2NvbnN0YW50cyc7XG5pbXBvcnQgeyBTeXN0ZWxhYlZpcnR1YWxLZXlib2FyZENvbXBvbmVudCB9IGZyb20gJy4vc3lzdGVsYWItdmlydHVhbC1rZXlib2FyZC5jb21wb25lbnQnO1xuaW1wb3J0IHsgU3lzdGVsYWJWaXJ0dWFsS2V5Ym9hcmRPdmVybGF5U2VydmljZSB9IGZyb20gJy4vc3lzdGVsYWItdmlydHVhbC1rZXlib2FyZC1vdmVybGF5LnNlcnZpY2UnO1xuaW1wb3J0IHsgU3lzdGVsYWJWaXJ0dWFsS2V5Ym9hcmRDb25maWcsIFZJUlRVQUxfS0VZQk9BUkRfQ09ORklHIH0gZnJvbSAnLi9zeXN0ZWxhYi12aXJ0dWFsLWtleWJvYXJkLmNvbmZpZyc7XG5cbkBEaXJlY3RpdmUoe1xuICBzZWxlY3RvcjogJ2lucHV0W3ZrRW5hYmxlZF0sIHRleHRhcmVhW3ZrRW5hYmxlZF0nLFxufSlcbmV4cG9ydCBjbGFzcyBTeXN0ZWxhYlZpcnR1YWxLZXlib2FyZERpcmVjdGl2ZSBpbXBsZW1lbnRzIE9uSW5pdCwgQWZ0ZXJWaWV3SW5pdCwgT25EZXN0cm95IHtcbiAgQEhvc3RMaXN0ZW5lcignZG9jdW1lbnQ6Y2xpY2snLCBbJyRldmVudCddKVxuICBvbkRvY3VtZW50Q2xpY2soZXZlbnQ6IE1vdXNlRXZlbnQgfCBUb3VjaEV2ZW50KSB7XG4gICAgY29uc3Qgc2ltcGxlS2V5Ym9hcmRFbGVtZW50ID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignLnNpbXBsZS1rZXlib2FyZCcpO1xuICAgIGNvbnN0IHNob3dLZXlib2FyZEJ1dHRvbkNsaWNrZWQgPSAoZXZlbnQudGFyZ2V0IGFzIEhUTUxFbGVtZW50KT8uY2xhc3NMaXN0LmNvbnRhaW5zKCd2aXJ0dWFsLWtleWJvYXJkLXNob3ctYnV0dG9uJyk7XG4gICAgaWYgKFxuICAgICAgIXNpbXBsZUtleWJvYXJkRWxlbWVudD8uY29udGFpbnMoZXZlbnQudGFyZ2V0IGFzIE5vZGUpICYmXG4gICAgICAhdGhpcy5lbGVtZW50UmVmPy5uYXRpdmVFbGVtZW50Py5jb250YWlucyhldmVudC50YXJnZXQgYXMgTm9kZSkgJiZcbiAgICAgICF0aGlzLnNob3dLZXlib2FyZEJ1dHRvbkVsZW1lbnQ/LmNvbnRhaW5zKGV2ZW50LnRhcmdldCBhcyBOb2RlKSAmJlxuICAgICAgIXNob3dLZXlib2FyZEJ1dHRvbkNsaWNrZWRcbiAgICApIHtcbiAgICAgIGlmICh0aGlzLm92ZXJsYXlTZXJ2aWNlLmlzQ3JlYXRlZCgpKSB7XG4gICAgICAgIHRoaXMub3ZlcmxheVNlcnZpY2UuZGVzdHJveSgpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIEBIb3N0TGlzdGVuZXIoJ3dpbmRvdzp0b3VjaG1vdmUnLCBbJyRldmVudCddKVxuICBASG9zdExpc3RlbmVyKCd3aW5kb3c6dG91Y2hlbmQnLCBbJyRldmVudCddKVxuICBASG9zdExpc3RlbmVyKCd3aW5kb3c6d2hlZWwnLCBbJyRldmVudCddKVxuICBvbkRvY3VtZW50U2Nyb2xsKCkge1xuICAgIGlmICh0aGlzLm92ZXJsYXlTZXJ2aWNlLmlzQ3JlYXRlZCgpKSB7XG4gICAgICAvLyB1cGRhdGUgcG9zaXRpb24gYW5kIHNpemUgb24gc2Nyb2xsXG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBlbmFibGVkID0gZmFsc2U7XG4gIEBJbnB1dCgpXG4gIHNldCB2a0VuYWJsZWQoZW5hYmxlZDogYm9vbGVhbiB8IHN0cmluZykge1xuICAgIGlmICh0eXBlb2YgZW5hYmxlZCA9PT0gJ3N0cmluZycpIHtcbiAgICAgIHRoaXMuZW5hYmxlZCA9IHRydWU7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuZW5hYmxlZCA9IGVuYWJsZWQ7XG4gICAgfVxuICB9O1xuICBnZXQgdmtFbmFibGVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmVuYWJsZWQ7XG4gIH1cblxuICBwcml2YXRlIGZpeGVkQm90dG9tID0gZmFsc2U7XG4gIEBJbnB1dCgpXG4gIGdldCB2a0ZpeGVkQm90dG9tKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmZpeGVkQm90dG9tO1xuICB9XG4gIHNldCB2a0ZpeGVkQm90dG9tKGZpeGVkQm90dG9tOiBib29sZWFuIHwgc3RyaW5nKSB7XG4gICAgaWYgKHR5cGVvZiBmaXhlZEJvdHRvbSA9PT0gJ3N0cmluZycpIHtcbiAgICAgIHRoaXMuZml4ZWRCb3R0b20gPSB0cnVlO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmZpeGVkQm90dG9tID0gZml4ZWRCb3R0b207XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBkZWJ1ZyA9IGZhbHNlO1xuICBASW5wdXQoKVxuICBnZXQgdmtEZWJ1ZygpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5kZWJ1ZztcbiAgfVxuICBzZXQgdmtEZWJ1ZyhkZWJ1ZzogYm9vbGVhbikge1xuICAgIHRoaXMuZGVidWcgPSBkZWJ1ZztcbiAgfVxuXG4gIHByaXZhdGUgY29uZmlnOiBTeXN0ZWxhYlZpcnR1YWxLZXlib2FyZENvbmZpZztcbiAgQElucHV0KClcbiAgZ2V0IHZrQ29uZmlnKCk6IFN5c3RlbGFiVmlydHVhbEtleWJvYXJkQ29uZmlnIHtcbiAgICByZXR1cm4gdGhpcy5jb25maWc7XG4gIH1cbiAgc2V0IHZrQ29uZmlnKGNvbmZpZzogU3lzdGVsYWJWaXJ0dWFsS2V5Ym9hcmRDb25maWcpIHtcbiAgICB0aGlzLmNvbmZpZyA9IGNvbmZpZztcbiAgfVxuXG4gIHByaXZhdGUgcGFuZWxSZWYhOiBDb21wb25lbnRSZWY8U3lzdGVsYWJWaXJ0dWFsS2V5Ym9hcmRDb21wb25lbnQ+O1xuICBwcml2YXRlIHNob3dLZXlib2FyZEJ1dHRvbkVsZW1lbnQ6IEhUTUxFbGVtZW50O1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgcmVhZG9ubHkgZWxlbWVudFJlZjogRWxlbWVudFJlZjxIVE1MSW5wdXRFbGVtZW50PixcbiAgICBwcml2YXRlIHJlYWRvbmx5IG92ZXJsYXlTZXJ2aWNlOiBTeXN0ZWxhYlZpcnR1YWxLZXlib2FyZE92ZXJsYXlTZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgcmVuZGVyZXI6IFJlbmRlcmVyMixcbiAgICBASW5qZWN0KERPQ1VNRU5UKSBwcml2YXRlIHJlYWRvbmx5IGRvY3VtZW50OiBhbnksXG4gICAgQE9wdGlvbmFsKCkgQEluamVjdChWSVJUVUFMX0tFWUJPQVJEX0NPTkZJRykgcHJpdmF0ZSB2aXJ0dWFsS2V5Ym9hcmRDb25maWc6IFN5c3RlbGFiVmlydHVhbEtleWJvYXJkQ29uZmlnLFxuICApIHtcbiAgICB0aGlzLmNvbmZpZyA9IHRoaXMudmlydHVhbEtleWJvYXJkQ29uZmlnO1xuICB9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgdGhpcy5hdHRhY2hLZXlib2FyZEljb24oKTtcbiAgfVxuXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcbiAgICBpZiAodGhpcy52a0VuYWJsZWQpIHtcbiAgICAgIGNvbnN0IGtleWJvYXJkSWNvbiA9IHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LnBhcmVudEVsZW1lbnQucXVlcnlTZWxlY3RvcignaScpO1xuICAgICAga2V5Ym9hcmRJY29uLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgdGhpcy50b2dnbGVQYW5lbC5iaW5kKHRoaXMpKTtcbiAgICB9XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5vdmVybGF5U2VydmljZS5pc0NyZWF0ZWQoKSkge1xuICAgICAgdGhpcy5vdmVybGF5U2VydmljZS5kZXN0cm95KCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSB0b2dnbGVQYW5lbCgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5vdmVybGF5U2VydmljZS5pc09wZW4oKSkge1xuICAgICAgdGhpcy5jbG9zZVBhbmVsKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMub3BlblBhbmVsKCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBvcGVuUGFuZWwoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMub3ZlcmxheVNlcnZpY2UuaXNDcmVhdGVkKCkpIHtcbiAgICAgIHRoaXMub3ZlcmxheVNlcnZpY2UuZGVzdHJveSgpO1xuICAgIH1cbiAgICBpZiAodGhpcy5vdmVybGF5U2VydmljZS5oYXNBdHRhY2hlZCgpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgY3VycmVudExheW91dCA9IHRoaXMuZ2V0TGF5b3V0KHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50KTtcblxuICAgIHRoaXMucGFuZWxSZWYgPSB0aGlzLm92ZXJsYXlTZXJ2aWNlLmNyZWF0ZSh0aGlzLmlucHV0T3JpZ2luKCksIHRoaXMudmtGaXhlZEJvdHRvbSwgY3VycmVudExheW91dCk7XG4gICAgdGhpcy5wYW5lbFJlZi5pbnN0YW5jZS5kZWJ1ZyA9IHRoaXMudmtEZWJ1ZztcbiAgICB0aGlzLnBhbmVsUmVmLmluc3RhbmNlLnNldEFjdGl2ZUlucHV0KHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50KTtcbiAgICB0aGlzLnBhbmVsUmVmLmluc3RhbmNlLnNldExheW91dChjdXJyZW50TGF5b3V0KTtcbiAgICB0aGlzLnBhbmVsUmVmLmluc3RhbmNlLmNsb3NlUGFuZWwuc3Vic2NyaWJlKCgpID0+IHRoaXMuY2xvc2VQYW5lbCgpKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0TGF5b3V0KGFjdGl2ZUlucHV0RWxlbWVudDogSFRNTElucHV0RWxlbWVudCB8IEhUTUxUZXh0QXJlYUVsZW1lbnQpOiBTeXN0ZWxhYlZpcnR1YWxLZXlib2FyZExheW91dHMge1xuICAgIGlmICh0aGlzLmNvbmZpZz8uaGFzT3duUHJvcGVydHkoJ2xheW91dCcpKSB7XG4gICAgICByZXR1cm4gdGhpcy5jb25maWcubGF5b3V0O1xuICAgIH1cbiAgICBpZiAodGhpcy5pc0lucHV0QWxwaGFiZXRpYyhhY3RpdmVJbnB1dEVsZW1lbnQpKSB7XG4gICAgICByZXR1cm4gU3lzdGVsYWJWaXJ0dWFsS2V5Ym9hcmRMYXlvdXRzLmRlZmF1bHQ7XG4gICAgfSBlbHNlIGlmICh0aGlzLmlzSW5wdXROdW1lcmljKGFjdGl2ZUlucHV0RWxlbWVudCkpIHtcbiAgICAgIHJldHVybiBTeXN0ZWxhYlZpcnR1YWxLZXlib2FyZExheW91dHMubnVtZXJpYztcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIFN5c3RlbGFiVmlydHVhbEtleWJvYXJkTGF5b3V0cy5kZWZhdWx0O1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgaXNJbnB1dEFscGhhYmV0aWMoYWN0aXZlSW5wdXRFbGVtZW50OiBIVE1MSW5wdXRFbGVtZW50IHwgSFRNTFRleHRBcmVhRWxlbWVudCk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IGlucHV0VHlwZSA9IGFjdGl2ZUlucHV0RWxlbWVudD8udHlwZTtcbiAgICByZXR1cm4gaW5wdXRUeXBlICYmIFtTeXN0ZWxhYlZpcnR1YWxLZXlib2FyZElucHV0VHlwZXMudGV4dCwgU3lzdGVsYWJWaXJ0dWFsS2V5Ym9hcmRJbnB1dFR5cGVzLnBhc3N3b3JkXS5zb21lKChpKSA9PiBpID09PSBpbnB1dFR5cGUpO1xuICB9XG5cbiAgcHJpdmF0ZSBpc0lucHV0TnVtZXJpYyhhY3RpdmVJbnB1dEVsZW1lbnQ6IEhUTUxJbnB1dEVsZW1lbnQgfCBIVE1MVGV4dEFyZWFFbGVtZW50KTogYm9vbGVhbiB7XG4gICAgY29uc3QgaW5wdXRUeXBlID0gYWN0aXZlSW5wdXRFbGVtZW50Py50eXBlO1xuICAgIHJldHVybiBpbnB1dFR5cGUgJiYgW1N5c3RlbGFiVmlydHVhbEtleWJvYXJkSW5wdXRUeXBlcy5udW1iZXJdLnNvbWUoKGkpID0+IGkgPT09IGlucHV0VHlwZSk7XG4gIH1cblxuICBwcml2YXRlIGNsb3NlUGFuZWwoKTogdm9pZCB7XG4gICAgdGhpcy5vdmVybGF5U2VydmljZS5kZXN0cm95KCk7XG4gIH1cblxuICBwcml2YXRlIGlucHV0T3JpZ2luKCk6IGFueSB7XG4gICAgcmV0dXJuIHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50O1xuICB9XG5cbiAgcHJpdmF0ZSBhdHRhY2hLZXlib2FyZEljb24oKSB7XG4gICAgaWYgKHRoaXMudmtFbmFibGVkKSB7XG4gICAgICBjb25zdCBjaGlsZCA9IHRoaXMuZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnaScpO1xuICAgICAgY2hpbGQuY2xhc3NMaXN0LmFkZCgnZmEnKTtcbiAgICAgIGNoaWxkLmNsYXNzTGlzdC5hZGQoJ2ZhLWtleWJvYXJkJyk7XG4gICAgICBjaGlsZC5jbGFzc0xpc3QuYWRkKCd2aXJ0dWFsLWtleWJvYXJkLXNob3ctYnV0dG9uJyk7XG4gICAgICB0aGlzLnJlbmRlcmVyLmFwcGVuZENoaWxkKHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LnBhcmVudEVsZW1lbnQsIGNoaWxkKTtcbiAgICAgIHRoaXMuc2hvd0tleWJvYXJkQnV0dG9uRWxlbWVudCA9IGNoaWxkO1xuICAgIH1cbiAgfVxufVxuIl19
|
|
183
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3lzdGVsYWItdmlydHVhbC1rZXlib2FyZC5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9zeXN0ZWxhYi12aXJ0dWFsLWtleWJvYXJkL3NyYy9saWIvc3lzdGVsYWItdmlydHVhbC1rZXlib2FyZC5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7R0FPRztBQUVILE9BQU8sRUFHTCxTQUFTLEVBRVQsWUFBWSxFQUNaLE1BQU0sRUFDTixLQUFLLEVBR0wsUUFBUSxHQUVULE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUUzQyxPQUFPLEVBQUUsaUNBQWlDLEVBQUUsOEJBQThCLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFHaEcsT0FBTyxFQUFpQyx1QkFBdUIsRUFBRSxNQUFNLG9DQUFvQyxDQUFDOzs7QUFLNUcsTUFBTSxPQUFPLGdDQUFnQztJQUkzQyxnQkFBZ0I7UUFDZCxJQUFJLElBQUksQ0FBQyxjQUFjLENBQUMsU0FBUyxFQUFFLEVBQUU7WUFDbkMscUNBQXFDO1NBQ3RDO0lBQ0gsQ0FBQztJQUdELE9BQU8sQ0FBQyxLQUE4QjtRQUNwQyxJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxNQUFNLEVBQUUsRUFBRTtZQUNqQyxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7U0FDbEI7SUFDSCxDQUFDO0lBR0QsSUFDSSxTQUFTLENBQUMsT0FBeUI7UUFDckMsSUFBSSxPQUFPLE9BQU8sS0FBSyxRQUFRLEVBQUU7WUFDL0IsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUM7U0FDckI7YUFBTTtZQUNMLElBQUksQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFDO1NBQ3hCO0lBQ0gsQ0FBQztJQUFBLENBQUM7SUFDRixJQUFJLFNBQVM7UUFDWCxPQUFPLElBQUksQ0FBQyxPQUFPLENBQUM7SUFDdEIs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aUIsRUFBRSxDQUFDLFFBQVEsQ0FBQzs7c0JBQzFDLFlBQVk7dUJBQUMsY0FBYyxFQUFFLENBQUMsUUFBUSxDQUFDO2dCQVF4QyxPQUFPO3NCQUROLFlBQVk7dUJBQUMsT0FBTyxFQUFFLENBQUMsUUFBUSxDQUFDO2dCQVM3QixTQUFTO3NCQURaLEtBQUs7Z0JBY0YsYUFBYTtzQkFEaEIsS0FBSztnQkFjRixPQUFPO3NCQURWLEtBQUs7Z0JBVUYsUUFBUTtzQkFEWCxLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIENvcHlyaWdodCAoYykgMjAyMCAtIDIwMjQgLSBJbnN0cnVtZW50YXRpb24gTGFib3JhdG9yeSBDb21wYW55IGFuZCBTeXN0ZWxhYiBUZWNobm9sb2dpZXMsIFNBLiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICogTk9USUNFOiAgQWxsIGluZm9ybWF0aW9uIGNvbnRhaW5lZCBoZXJlaW4gaXMgYW5kIHJlbWFpbnMgdGhlIHByb3BlcnR5IG9mIEluc3RydW1lbnRhdGlvbiBMYWJvcmF0b3J5IENvbXBhbnkgYW5kIGl0c1xuICogYWZmaWxpYXRlcywgaWYgYW55LiAgVGhlIGludGVsbGVjdHVhbCBhbmQgdGVjaG5pY2FsIGNvbmNlcHRzIGNvbnRhaW5lZCBoZXJlaW4gYXJlIHByb3ByaWV0YXJ5IHRvIEluc3RydW1lbnRhdGlvblxuICogTGFib3JhdG9yeSBDb21wYW55IGFuZCBpdHMgYWZmaWxpYXRlcyBhbmQgbWF5IGJlIGNvdmVyZWQgYnkgVS5TLiBhbmQgZm9yZWlnbiBwYXRlbnRzIGFuZCBwYXRlbnQgYXBwbGljYXRpb25zLCBhbmQvb3JcbiAqIGFyZSBwcm90ZWN0ZWQgYnkgdHJhZGUgc2VjcmV0IG9yIGNvcHlyaWdodCBsYXcuIERpc3NlbWluYXRpb24gb2YgdGhpcyBpbmZvcm1hdGlvbiBvciByZXByb2R1Y3Rpb24gb2YgdGhpcyBtYXRlcmlhbCBpc1xuICogc3RyaWN0bHkgZm9yYmlkZGVuIHVubGVzcyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24gaXMgSW5zdHJ1bWVudGF0aW9uIExhYm9yYXRvcnkgQ29tcGFueS5cbiAqL1xuXG5pbXBvcnQge1xuICBBZnRlclZpZXdJbml0LFxuICBDb21wb25lbnRSZWYsXG4gIERpcmVjdGl2ZSxcbiAgRWxlbWVudFJlZixcbiAgSG9zdExpc3RlbmVyLFxuICBJbmplY3QsXG4gIElucHV0LFxuICBPbkRlc3Ryb3ksXG4gIE9uSW5pdCxcbiAgT3B0aW9uYWwsXG4gIFJlbmRlcmVyMixcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IERPQ1VNRU5UIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcblxuaW1wb3J0IHsgU3lzdGVsYWJWaXJ0dWFsS2V5Ym9hcmRJbnB1dFR5cGVzLCBTeXN0ZWxhYlZpcnR1YWxLZXlib2FyZExheW91dHMgfSBmcm9tICcuL2NvbnN0YW50cyc7XG5pbXBvcnQgeyBTeXN0ZWxhYlZpcnR1YWxLZXlib2FyZENvbXBvbmVudCB9IGZyb20gJy4vc3lzdGVsYWItdmlydHVhbC1rZXlib2FyZC5jb21wb25lbnQnO1xuaW1wb3J0IHsgU3lzdGVsYWJWaXJ0dWFsS2V5Ym9hcmRPdmVybGF5U2VydmljZSB9IGZyb20gJy4vc3lzdGVsYWItdmlydHVhbC1rZXlib2FyZC1vdmVybGF5LnNlcnZpY2UnO1xuaW1wb3J0IHsgU3lzdGVsYWJWaXJ0dWFsS2V5Ym9hcmRDb25maWcsIFZJUlRVQUxfS0VZQk9BUkRfQ09ORklHIH0gZnJvbSAnLi9zeXN0ZWxhYi12aXJ0dWFsLWtleWJvYXJkLmNvbmZpZyc7XG5cbkBEaXJlY3RpdmUoe1xuICBzZWxlY3RvcjogJ2lucHV0W3ZrRW5hYmxlZF0sIHRleHRhcmVhW3ZrRW5hYmxlZF0nLFxufSlcbmV4cG9ydCBjbGFzcyBTeXN0ZWxhYlZpcnR1YWxLZXlib2FyZERpcmVjdGl2ZSBpbXBsZW1lbnRzIE9uSW5pdCwgQWZ0ZXJWaWV3SW5pdCwgT25EZXN0cm95IHtcbiAgQEhvc3RMaXN0ZW5lcignd2luZG93OnRvdWNobW92ZScsIFsnJGV2ZW50J10pXG4gIEBIb3N0TGlzdGVuZXIoJ3dpbmRvdzp0b3VjaGVuZCcsIFsnJGV2ZW50J10pXG4gIEBIb3N0TGlzdGVuZXIoJ3dpbmRvdzp3aGVlbCcsIFsnJGV2ZW50J10pXG4gIG9uRG9jdW1lbnRTY3JvbGwoKSB7XG4gICAgaWYgKHRoaXMub3ZlcmxheVNlcnZpY2UuaXNDcmVhdGVkKCkpIHtcbiAgICAgIC8vIHVwZGF0ZSBwb3NpdGlvbiBhbmQgc2l6ZSBvbiBzY3JvbGxcbiAgICB9XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCdmb2N1cycsIFsnJGV2ZW50J10pXG4gIG9uRm9jdXMoZXZlbnQ6IE1vdXNlRXZlbnQgfCBUb3VjaEV2ZW50KTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLm92ZXJsYXlTZXJ2aWNlLmlzT3BlbigpKSB7XG4gICAgICB0aGlzLm9wZW5QYW5lbCgpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgZW5hYmxlZCA9IGZhbHNlO1xuICBASW5wdXQoKVxuICBzZXQgdmtFbmFibGVkKGVuYWJsZWQ6IGJvb2xlYW4gfCBzdHJpbmcpIHtcbiAgICBpZiAodHlwZW9mIGVuYWJsZWQgPT09ICdzdHJpbmcnKSB7XG4gICAgICB0aGlzLmVuYWJsZWQgPSB0cnVlO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmVuYWJsZWQgPSBlbmFibGVkO1xuICAgIH1cbiAgfTtcbiAgZ2V0IHZrRW5hYmxlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5lbmFibGVkO1xuICB9XG5cbiAgcHJpdmF0ZSBmaXhlZEJvdHRvbSA9IGZhbHNlO1xuICBASW5wdXQoKVxuICBnZXQgdmtGaXhlZEJvdHRvbSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5maXhlZEJvdHRvbTtcbiAgfVxuICBzZXQgdmtGaXhlZEJvdHRvbShmaXhlZEJvdHRvbTogYm9vbGVhbiB8IHN0cmluZykge1xuICAgIGlmICh0eXBlb2YgZml4ZWRCb3R0b20gPT09ICdzdHJpbmcnKSB7XG4gICAgICB0aGlzLmZpeGVkQm90dG9tID0gdHJ1ZTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5maXhlZEJvdHRvbSA9IGZpeGVkQm90dG9tO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgZGVidWcgPSBmYWxzZTtcbiAgQElucHV0KClcbiAgZ2V0IHZrRGVidWcoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuZGVidWc7XG4gIH1cbiAgc2V0IHZrRGVidWcoZGVidWc6IGJvb2xlYW4pIHtcbiAgICB0aGlzLmRlYnVnID0gZGVidWc7XG4gIH1cblxuICBwcml2YXRlIGNvbmZpZzogU3lzdGVsYWJWaXJ0dWFsS2V5Ym9hcmRDb25maWc7XG4gIEBJbnB1dCgpXG4gIGdldCB2a0NvbmZpZygpOiBTeXN0ZWxhYlZpcnR1YWxLZXlib2FyZENvbmZpZyB7XG4gICAgcmV0dXJuIHRoaXMuY29uZmlnO1xuICB9XG4gIHNldCB2a0NvbmZpZyhjb25maWc6IFN5c3RlbGFiVmlydHVhbEtleWJvYXJkQ29uZmlnKSB7XG4gICAgdGhpcy5jb25maWcgPSBjb25maWc7XG4gIH1cblxuICBwcml2YXRlIHBhbmVsUmVmITogQ29tcG9uZW50UmVmPFN5c3RlbGFiVmlydHVhbEtleWJvYXJkQ29tcG9uZW50PjtcbiAgcHJpdmF0ZSBzaG93S2V5Ym9hcmRCdXR0b25FbGVtZW50OiBIVE1MRWxlbWVudDtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHJlYWRvbmx5IGVsZW1lbnRSZWY6IEVsZW1lbnRSZWY8SFRNTElucHV0RWxlbWVudD4sXG4gICAgcHJpdmF0ZSByZWFkb25seSBvdmVybGF5U2VydmljZTogU3lzdGVsYWJWaXJ0dWFsS2V5Ym9hcmRPdmVybGF5U2VydmljZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IHJlbmRlcmVyOiBSZW5kZXJlcjIsXG4gICAgQEluamVjdChET0NVTUVOVCkgcHJpdmF0ZSByZWFkb25seSBkb2N1bWVudDogYW55LFxuICAgIEBPcHRpb25hbCgpIEBJbmplY3QoVklSVFVBTF9LRVlCT0FSRF9DT05GSUcpIHByaXZhdGUgdmlydHVhbEtleWJvYXJkQ29uZmlnOiBTeXN0ZWxhYlZpcnR1YWxLZXlib2FyZENvbmZpZyxcbiAgKSB7XG4gICAgdGhpcy5jb25maWcgPSB0aGlzLnZpcnR1YWxLZXlib2FyZENvbmZpZztcbiAgfVxuXG4gIG5nT25Jbml0KCkge1xuICAgIHRoaXMuYXR0YWNoS2V5Ym9hcmRJY29uKCk7XG4gIH1cblxuICBuZ0FmdGVyVmlld0luaXQoKSB7XG4gICAgaWYgKHRoaXMudmtFbmFibGVkKSB7XG4gICAgICBjb25zdCBrZXlib2FyZEljb24gPSB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5wYXJlbnRFbGVtZW50LnF1ZXJ5U2VsZWN0b3IoJ2knKTtcbiAgICAgIGtleWJvYXJkSWNvbi5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIHRoaXMudG9nZ2xlUGFuZWwuYmluZCh0aGlzKSk7XG4gICAgfVxuICB9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgaWYgKHRoaXMub3ZlcmxheVNlcnZpY2UuaXNDcmVhdGVkKCkpIHtcbiAgICAgIHRoaXMub3ZlcmxheVNlcnZpY2UuZGVzdHJveSgpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgdG9nZ2xlUGFuZWwoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMub3ZlcmxheVNlcnZpY2UuaXNPcGVuKCkpIHtcbiAgICAgIHRoaXMuY2xvc2VQYW5lbCgpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLm9wZW5QYW5lbCgpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgb3BlblBhbmVsKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLm92ZXJsYXlTZXJ2aWNlLmlzQ3JlYXRlZCgpKSB7XG4gICAgICB0aGlzLm92ZXJsYXlTZXJ2aWNlLmRlc3Ryb3koKTtcbiAgICB9XG4gICAgaWYgKHRoaXMub3ZlcmxheVNlcnZpY2UuaGFzQXR0YWNoZWQoKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IGN1cnJlbnRMYXlvdXQgPSB0aGlzLmdldExheW91dCh0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCk7XG5cbiAgICB0aGlzLnBhbmVsUmVmID0gdGhpcy5vdmVybGF5U2VydmljZS5jcmVhdGUodGhpcy5pbnB1dE9yaWdpbigpLCB0aGlzLnNob3dLZXlib2FyZEJ1dHRvbkVsZW1lbnQsIHRoaXMudmtGaXhlZEJvdHRvbSwgY3VycmVudExheW91dCk7XG4gICAgdGhpcy5wYW5lbFJlZi5pbnN0YW5jZS5kZWJ1ZyA9IHRoaXMudmtEZWJ1ZztcbiAgICB0aGlzLnBhbmVsUmVmLmluc3RhbmNlLnNldEFjdGl2ZUlucHV0KHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50KTtcbiAgICB0aGlzLnBhbmVsUmVmLmluc3RhbmNlLnNldExheW91dChjdXJyZW50TGF5b3V0KTtcbiAgICB0aGlzLnBhbmVsUmVmLmluc3RhbmNlLmNsb3NlUGFuZWwuc3Vic2NyaWJlKCgpID0+IHRoaXMuY2xvc2VQYW5lbCgpKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0TGF5b3V0KGFjdGl2ZUlucHV0RWxlbWVudDogSFRNTElucHV0RWxlbWVudCB8IEhUTUxUZXh0QXJlYUVsZW1lbnQpOiBTeXN0ZWxhYlZpcnR1YWxLZXlib2FyZExheW91dHMge1xuICAgIGlmICh0aGlzLmNvbmZpZz8uaGFzT3duUHJvcGVydHkoJ2xheW91dCcpKSB7XG4gICAgICByZXR1cm4gdGhpcy5jb25maWcubGF5b3V0O1xuICAgIH1cbiAgICBpZiAodGhpcy5pc0lucHV0QWxwaGFiZXRpYyhhY3RpdmVJbnB1dEVsZW1lbnQpKSB7XG4gICAgICByZXR1cm4gU3lzdGVsYWJWaXJ0dWFsS2V5Ym9hcmRMYXlvdXRzLmRlZmF1bHQ7XG4gICAgfSBlbHNlIGlmICh0aGlzLmlzSW5wdXROdW1lcmljKGFjdGl2ZUlucHV0RWxlbWVudCkpIHtcbiAgICAgIHJldHVybiBTeXN0ZWxhYlZpcnR1YWxLZXlib2FyZExheW91dHMubnVtZXJpYztcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIFN5c3RlbGFiVmlydHVhbEtleWJvYXJkTGF5b3V0cy5kZWZhdWx0O1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgaXNJbnB1dEFscGhhYmV0aWMoYWN0aXZlSW5wdXRFbGVtZW50OiBIVE1MSW5wdXRFbGVtZW50IHwgSFRNTFRleHRBcmVhRWxlbWVudCk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IGlucHV0VHlwZSA9IGFjdGl2ZUlucHV0RWxlbWVudD8udHlwZTtcbiAgICByZXR1cm4gaW5wdXRUeXBlICYmIFtTeXN0ZWxhYlZpcnR1YWxLZXlib2FyZElucHV0VHlwZXMudGV4dCwgU3lzdGVsYWJWaXJ0dWFsS2V5Ym9hcmRJbnB1dFR5cGVzLnBhc3N3b3JkXS5zb21lKChpKSA9PiBpID09PSBpbnB1dFR5cGUpO1xuICB9XG5cbiAgcHJpdmF0ZSBpc0lucHV0TnVtZXJpYyhhY3RpdmVJbnB1dEVsZW1lbnQ6IEhUTUxJbnB1dEVsZW1lbnQgfCBIVE1MVGV4dEFyZWFFbGVtZW50KTogYm9vbGVhbiB7XG4gICAgY29uc3QgaW5wdXRUeXBlID0gYWN0aXZlSW5wdXRFbGVtZW50Py50eXBlO1xuICAgIHJldHVybiBpbnB1dFR5cGUgJiYgW1N5c3RlbGFiVmlydHVhbEtleWJvYXJkSW5wdXRUeXBlcy5udW1iZXJdLnNvbWUoKGkpID0+IGkgPT09IGlucHV0VHlwZSk7XG4gIH1cblxuICBwcml2YXRlIGNsb3NlUGFuZWwoKTogdm9pZCB7XG4gICAgdGhpcy5vdmVybGF5U2VydmljZS5kZXN0cm95KCk7XG4gIH1cblxuICBwcml2YXRlIGlucHV0T3JpZ2luKCk6IGFueSB7XG4gICAgcmV0dXJuIHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50O1xuICB9XG5cbiAgcHJpdmF0ZSBhdHRhY2hLZXlib2FyZEljb24oKSB7XG4gICAgaWYgKHRoaXMudmtFbmFibGVkKSB7XG4gICAgICBjb25zdCBjaGlsZCA9IHRoaXMuZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnaScpO1xuICAgICAgY2hpbGQuY2xhc3NMaXN0LmFkZCgnZmEnKTtcbiAgICAgIGNoaWxkLmNsYXNzTGlzdC5hZGQoJ2ZhLWtleWJvYXJkJyk7XG4gICAgICBjaGlsZC5jbGFzc0xpc3QuYWRkKCd2aXJ0dWFsLWtleWJvYXJkLXNob3ctYnV0dG9uJyk7XG4gICAgICB0aGlzLnJlbmRlcmVyLmFwcGVuZENoaWxkKHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LnBhcmVudEVsZW1lbnQsIGNoaWxkKTtcbiAgICAgIHRoaXMuc2hvd0tleWJvYXJkQnV0dG9uRWxlbWVudCA9IGNoaWxkO1xuICAgIH1cbiAgfVxufVxuIl19
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import * as i0 from '@angular/core';
|
|
2
|
-
import { InjectionToken, EventEmitter, Component, HostListener, Output, Injectable, Directive,
|
|
2
|
+
import { InjectionToken, EventEmitter, Component, Optional, Inject, HostListener, Output, Injectable, Directive, Input, NgModule } from '@angular/core';
|
|
3
3
|
import { DOCUMENT, CommonModule } from '@angular/common';
|
|
4
4
|
import { ComponentPortal } from '@angular/cdk/portal';
|
|
5
|
-
import SimpleKeyboard from 'simple-keyboard';
|
|
5
|
+
import { SimpleKeyboard } from 'simple-keyboard';
|
|
6
6
|
import * as i1 from '@angular/cdk/overlay';
|
|
7
7
|
import { OverlayModule } from '@angular/cdk/overlay';
|
|
8
8
|
|
|
@@ -31,6 +31,11 @@ var SystelabVirtualKeyboardLayouts;
|
|
|
31
31
|
SystelabVirtualKeyboardLayouts["shift"] = "shift";
|
|
32
32
|
SystelabVirtualKeyboardLayouts["numeric"] = "numeric";
|
|
33
33
|
})(SystelabVirtualKeyboardLayouts || (SystelabVirtualKeyboardLayouts = {}));
|
|
34
|
+
var SystelabVirtualKeyboardInputMethods;
|
|
35
|
+
(function (SystelabVirtualKeyboardInputMethods) {
|
|
36
|
+
SystelabVirtualKeyboardInputMethods["onlyMouseEvents"] = "onlyMouseEvents";
|
|
37
|
+
SystelabVirtualKeyboardInputMethods["onlyTouchEvents"] = "onlyTouchEvents";
|
|
38
|
+
})(SystelabVirtualKeyboardInputMethods || (SystelabVirtualKeyboardInputMethods = {}));
|
|
34
39
|
var SystelabVirtualKeyboardInputTypes;
|
|
35
40
|
(function (SystelabVirtualKeyboardInputTypes) {
|
|
36
41
|
SystelabVirtualKeyboardInputTypes["text"] = "text";
|
|
@@ -61,8 +66,9 @@ class SystelabVirtualKeyboardComponent {
|
|
|
61
66
|
get isTextarea() {
|
|
62
67
|
return this.activeInputElement?.type === 'textarea';
|
|
63
68
|
}
|
|
64
|
-
constructor(elementRef) {
|
|
69
|
+
constructor(elementRef, virtualKeyboardConfig) {
|
|
65
70
|
this.elementRef = elementRef;
|
|
71
|
+
this.virtualKeyboardConfig = virtualKeyboardConfig;
|
|
66
72
|
this.debug = false;
|
|
67
73
|
this.selectedLayout = SystelabVirtualKeyboardLayouts.default;
|
|
68
74
|
this.caretPosition = null;
|
|
@@ -87,20 +93,8 @@ class SystelabVirtualKeyboardComponent {
|
|
|
87
93
|
],
|
|
88
94
|
[SystelabVirtualKeyboardLayouts.numeric]: ['7 8 9', '4 5 6', '1 2 3', '0 {bksp}'],
|
|
89
95
|
};
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
mergeDisplay: true,
|
|
93
|
-
display: {
|
|
94
|
-
[SystelabVirtualKeyboardButton.Backspace]: 'delete',
|
|
95
|
-
},
|
|
96
|
-
buttonTheme: [
|
|
97
|
-
{
|
|
98
|
-
class: 'virtual-keyboard-delete-button',
|
|
99
|
-
buttons: `${SystelabVirtualKeyboardButton.Backspace}`,
|
|
100
|
-
},
|
|
101
|
-
],
|
|
102
|
-
layout,
|
|
103
|
-
});
|
|
96
|
+
const keyboardOptions = this.prepareKeyboardConfig();
|
|
97
|
+
this.keyboard = new SimpleKeyboard('.simple-keyboard', keyboardOptions);
|
|
104
98
|
this.setLayout(this.selectedLayout);
|
|
105
99
|
if (this.debug) {
|
|
106
100
|
console.log('Layout: ', layout);
|
|
@@ -136,6 +130,54 @@ class SystelabVirtualKeyboardComponent {
|
|
|
136
130
|
});
|
|
137
131
|
}
|
|
138
132
|
}
|
|
133
|
+
prepareKeyboardConfig() {
|
|
134
|
+
const layout = {
|
|
135
|
+
[SystelabVirtualKeyboardLayouts.default]: [
|
|
136
|
+
'` 1 2 3 4 5 6 7 8 9 0 - = {bksp}',
|
|
137
|
+
'{tab} q w e r t y u i o p [ ] \\',
|
|
138
|
+
"{lock} a s d f g h j k l ; ' {enter}",
|
|
139
|
+
'{shift} z x c v b n m , . / {shift}',
|
|
140
|
+
'{space}',
|
|
141
|
+
],
|
|
142
|
+
[SystelabVirtualKeyboardLayouts.shift]: [
|
|
143
|
+
'~ ! @ # $ % ^ & * ( ) _ + {bksp}',
|
|
144
|
+
'{tab} Q W E R T Y U I O P { } |',
|
|
145
|
+
'{lock} A S D F G H J K L : " {enter}',
|
|
146
|
+
'{shift} Z X C V B N M < > ? {shift}',
|
|
147
|
+
'{space}',
|
|
148
|
+
],
|
|
149
|
+
[SystelabVirtualKeyboardLayouts.numeric]: ['7 8 9', '4 5 6', '1 2 3', '0 {bksp}'],
|
|
150
|
+
};
|
|
151
|
+
let keyboardOptions = {
|
|
152
|
+
onKeyPress: (button) => this.handleKeyPress(button),
|
|
153
|
+
mergeDisplay: true,
|
|
154
|
+
display: {
|
|
155
|
+
[SystelabVirtualKeyboardButton.Backspace]: 'delete',
|
|
156
|
+
},
|
|
157
|
+
buttonTheme: [
|
|
158
|
+
{
|
|
159
|
+
class: 'virtual-keyboard-delete-button',
|
|
160
|
+
buttons: `${SystelabVirtualKeyboardButton.Backspace}`,
|
|
161
|
+
},
|
|
162
|
+
],
|
|
163
|
+
layout,
|
|
164
|
+
};
|
|
165
|
+
if (this.virtualKeyboardConfig?.hasOwnProperty('inputMethod')) {
|
|
166
|
+
if (this.virtualKeyboardConfig.inputMethod === SystelabVirtualKeyboardInputMethods.onlyMouseEvents) {
|
|
167
|
+
keyboardOptions = {
|
|
168
|
+
...keyboardOptions,
|
|
169
|
+
useMouseEvents: true,
|
|
170
|
+
};
|
|
171
|
+
}
|
|
172
|
+
else if (this.virtualKeyboardConfig.inputMethod === SystelabVirtualKeyboardInputMethods.onlyTouchEvents) {
|
|
173
|
+
keyboardOptions = {
|
|
174
|
+
...keyboardOptions,
|
|
175
|
+
useTouchEvents: true,
|
|
176
|
+
};
|
|
177
|
+
}
|
|
178
|
+
}
|
|
179
|
+
return keyboardOptions;
|
|
180
|
+
}
|
|
139
181
|
isInputAlphabetic(activeInputElement) {
|
|
140
182
|
const inputType = activeInputElement?.type;
|
|
141
183
|
return inputType && [SystelabVirtualKeyboardInputTypes.text, SystelabVirtualKeyboardInputTypes.password].some((i) => i === inputType);
|
|
@@ -366,13 +408,18 @@ class SystelabVirtualKeyboardComponent {
|
|
|
366
408
|
this.caretPosition = position;
|
|
367
409
|
this.caretPositionEnd = endPosition;
|
|
368
410
|
}
|
|
369
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.9", ngImport: i0, type: SystelabVirtualKeyboardComponent, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
411
|
+
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 }); }
|
|
370
412
|
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
413
|
}
|
|
372
414
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.9", ngImport: i0, type: SystelabVirtualKeyboardComponent, decorators: [{
|
|
373
415
|
type: Component,
|
|
374
416
|
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
|
-
}], ctorParameters: () => [{ type: i0.ElementRef }
|
|
417
|
+
}], ctorParameters: () => [{ type: i0.ElementRef }, { type: undefined, decorators: [{
|
|
418
|
+
type: Optional
|
|
419
|
+
}, {
|
|
420
|
+
type: Inject,
|
|
421
|
+
args: [VIRTUAL_KEYBOARD_CONFIG]
|
|
422
|
+
}] }], propDecorators: { handleKeyUp: [{
|
|
376
423
|
type: HostListener,
|
|
377
424
|
args: ['window:keyup', ['$event']]
|
|
378
425
|
}], handleMouseUp: [{
|
|
@@ -391,6 +438,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.9", ngImpor
|
|
|
391
438
|
class SystelabVirtualKeyboardOverlayService {
|
|
392
439
|
constructor(overlay) {
|
|
393
440
|
this.overlay = overlay;
|
|
441
|
+
this.initListener();
|
|
394
442
|
}
|
|
395
443
|
isCreated() {
|
|
396
444
|
return !!this.overlayRef;
|
|
@@ -398,7 +446,9 @@ class SystelabVirtualKeyboardOverlayService {
|
|
|
398
446
|
isOpen() {
|
|
399
447
|
return this.open;
|
|
400
448
|
}
|
|
401
|
-
create(inputOrigin, fixedBottom, layout = SystelabVirtualKeyboardLayouts.default) {
|
|
449
|
+
create(inputOrigin, showKeyboardButtonElement, fixedBottom, layout = SystelabVirtualKeyboardLayouts.default) {
|
|
450
|
+
this.inputOrigin = inputOrigin;
|
|
451
|
+
this.showKeyboardButtonElement = showKeyboardButtonElement;
|
|
402
452
|
this.layout = layout;
|
|
403
453
|
this.overlayRef = this.overlay.create({
|
|
404
454
|
hasBackdrop: false,
|
|
@@ -421,6 +471,28 @@ class SystelabVirtualKeyboardOverlayService {
|
|
|
421
471
|
this.overlayRef = null;
|
|
422
472
|
this.open = false;
|
|
423
473
|
}
|
|
474
|
+
initListener() {
|
|
475
|
+
document.addEventListener('click', this.handleClick.bind(this));
|
|
476
|
+
}
|
|
477
|
+
handleClick(event) {
|
|
478
|
+
console.log('Document clicked:', event);
|
|
479
|
+
event.stopPropagation();
|
|
480
|
+
const simpleKeyboardElement = document.querySelector('.simple-keyboard');
|
|
481
|
+
const showKeyboardButtonClicked = event.target?.classList.contains('virtual-keyboard-show-button');
|
|
482
|
+
const containsKeyboard = simpleKeyboardElement?.contains(event.target);
|
|
483
|
+
const containsElementRef = this.inputOrigin?.contains(event.target);
|
|
484
|
+
// const containsFocusedElement = this.focusedElement?.contains(event.target as Node);
|
|
485
|
+
const containsShowButton = this.showKeyboardButtonElement?.contains(event.target);
|
|
486
|
+
if (!containsKeyboard &&
|
|
487
|
+
!containsElementRef &&
|
|
488
|
+
// !containsFocusedElement &&
|
|
489
|
+
!containsShowButton &&
|
|
490
|
+
!showKeyboardButtonClicked) {
|
|
491
|
+
if (this.isCreated()) {
|
|
492
|
+
this.destroy();
|
|
493
|
+
}
|
|
494
|
+
}
|
|
495
|
+
}
|
|
424
496
|
hasAttached() {
|
|
425
497
|
return this.overlayRef?.hasAttached();
|
|
426
498
|
}
|
|
@@ -514,23 +586,16 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.9", ngImpor
|
|
|
514
586
|
* strictly forbidden unless prior written permission is Instrumentation Laboratory Company.
|
|
515
587
|
*/
|
|
516
588
|
class SystelabVirtualKeyboardDirective {
|
|
517
|
-
onDocumentClick(event) {
|
|
518
|
-
const simpleKeyboardElement = document.querySelector('.simple-keyboard');
|
|
519
|
-
const showKeyboardButtonClicked = event.target?.classList.contains('virtual-keyboard-show-button');
|
|
520
|
-
if (!simpleKeyboardElement?.contains(event.target) &&
|
|
521
|
-
!this.elementRef?.nativeElement?.contains(event.target) &&
|
|
522
|
-
!this.showKeyboardButtonElement?.contains(event.target) &&
|
|
523
|
-
!showKeyboardButtonClicked) {
|
|
524
|
-
if (this.overlayService.isCreated()) {
|
|
525
|
-
this.overlayService.destroy();
|
|
526
|
-
}
|
|
527
|
-
}
|
|
528
|
-
}
|
|
529
589
|
onDocumentScroll() {
|
|
530
590
|
if (this.overlayService.isCreated()) {
|
|
531
591
|
// update position and size on scroll
|
|
532
592
|
}
|
|
533
593
|
}
|
|
594
|
+
onFocus(event) {
|
|
595
|
+
if (!this.overlayService.isOpen()) {
|
|
596
|
+
this.openPanel();
|
|
597
|
+
}
|
|
598
|
+
}
|
|
534
599
|
set vkEnabled(enabled) {
|
|
535
600
|
if (typeof enabled === 'string') {
|
|
536
601
|
this.enabled = true;
|
|
@@ -607,7 +672,7 @@ class SystelabVirtualKeyboardDirective {
|
|
|
607
672
|
return;
|
|
608
673
|
}
|
|
609
674
|
const currentLayout = this.getLayout(this.elementRef.nativeElement);
|
|
610
|
-
this.panelRef = this.overlayService.create(this.inputOrigin(), this.vkFixedBottom, currentLayout);
|
|
675
|
+
this.panelRef = this.overlayService.create(this.inputOrigin(), this.showKeyboardButtonElement, this.vkFixedBottom, currentLayout);
|
|
611
676
|
this.panelRef.instance.debug = this.vkDebug;
|
|
612
677
|
this.panelRef.instance.setActiveInput(this.elementRef.nativeElement);
|
|
613
678
|
this.panelRef.instance.setLayout(currentLayout);
|
|
@@ -652,7 +717,7 @@ class SystelabVirtualKeyboardDirective {
|
|
|
652
717
|
}
|
|
653
718
|
}
|
|
654
719
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.9", ngImport: i0, type: SystelabVirtualKeyboardDirective, deps: [{ token: i0.ElementRef }, { token: SystelabVirtualKeyboardOverlayService }, { token: i0.Renderer2 }, { token: DOCUMENT }, { token: VIRTUAL_KEYBOARD_CONFIG, optional: true }], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
655
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.0.9", type: SystelabVirtualKeyboardDirective, selector: "input[vkEnabled], textarea[vkEnabled]", inputs: { vkEnabled: "vkEnabled", vkFixedBottom: "vkFixedBottom", vkDebug: "vkDebug", vkConfig: "vkConfig" }, host: { listeners: { "
|
|
720
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.0.9", type: SystelabVirtualKeyboardDirective, selector: "input[vkEnabled], textarea[vkEnabled]", inputs: { vkEnabled: "vkEnabled", vkFixedBottom: "vkFixedBottom", vkDebug: "vkDebug", vkConfig: "vkConfig" }, host: { listeners: { "window:touchmove": "onDocumentScroll($event)", "window:touchend": "onDocumentScroll($event)", "window:wheel": "onDocumentScroll($event)", "focus": "onFocus($event)" } }, ngImport: i0 }); }
|
|
656
721
|
}
|
|
657
722
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.9", ngImport: i0, type: SystelabVirtualKeyboardDirective, decorators: [{
|
|
658
723
|
type: Directive,
|
|
@@ -667,10 +732,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.9", ngImpor
|
|
|
667
732
|
}, {
|
|
668
733
|
type: Inject,
|
|
669
734
|
args: [VIRTUAL_KEYBOARD_CONFIG]
|
|
670
|
-
}] }], propDecorators: {
|
|
671
|
-
type: HostListener,
|
|
672
|
-
args: ['document:click', ['$event']]
|
|
673
|
-
}], onDocumentScroll: [{
|
|
735
|
+
}] }], propDecorators: { onDocumentScroll: [{
|
|
674
736
|
type: HostListener,
|
|
675
737
|
args: ['window:touchmove', ['$event']]
|
|
676
738
|
}, {
|
|
@@ -679,6 +741,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.9", ngImpor
|
|
|
679
741
|
}, {
|
|
680
742
|
type: HostListener,
|
|
681
743
|
args: ['window:wheel', ['$event']]
|
|
744
|
+
}], onFocus: [{
|
|
745
|
+
type: HostListener,
|
|
746
|
+
args: ['focus', ['$event']]
|
|
682
747
|
}], vkEnabled: [{
|
|
683
748
|
type: Input
|
|
684
749
|
}], vkFixedBottom: [{
|
|
@@ -735,5 +800,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.9", ngImpor
|
|
|
735
800
|
* Generated bundle index. Do not edit.
|
|
736
801
|
*/
|
|
737
802
|
|
|
738
|
-
export { SystelabVirtualKeyboardButton, SystelabVirtualKeyboardDirective, SystelabVirtualKeyboardInputTypes, SystelabVirtualKeyboardLayouts, SystelabVirtualKeyboardModule, factory };
|
|
803
|
+
export { SystelabVirtualKeyboardButton, SystelabVirtualKeyboardDirective, SystelabVirtualKeyboardInputMethods, SystelabVirtualKeyboardInputTypes, SystelabVirtualKeyboardLayouts, SystelabVirtualKeyboardModule, factory };
|
|
739
804
|
//# sourceMappingURL=systelab-virtual-keyboard.mjs.map
|