@sam-senior/virtual-keyboard 1.0.3 → 2.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.
@@ -1,368 +0,0 @@
1
- /**
2
- * @fileoverview added by tsickle
3
- * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
4
- */
5
- import { Directive, ElementRef, Optional, Input, Output, EventEmitter } from '@angular/core';
6
- import { NgControl } from '@angular/forms';
7
- /**
8
- * ************************************************************
9
- * Método que retonar instancia do elemento jQuery, pois
10
- * o projeto que implementa esta diretiva fica fora da lib.
11
- * Devido ficar fora, o webpack não ficará aqui, portando não
12
- * tem jQuery na lib;
13
- * **************************************************************
14
- * @type {?}
15
- */
16
- const jQueryInstance = (/**
17
- * @param {?} element
18
- * @return {?}
19
- */
20
- (element) => {
21
- /** @type {?} */
22
- const windowInstance = (/** @type {?} */ (window));
23
- return windowInstance.jQuery ? windowInstance.jQuery(element) : null;
24
- });
25
- const ɵ0 = jQueryInstance;
26
- export class VirtualKeyboardDirective {
27
- /**
28
- * @param {?} elementRef
29
- * @param {?} fieldControl
30
- */
31
- constructor(elementRef, fieldControl) {
32
- this.elementRef = elementRef;
33
- this.fieldControl = fieldControl;
34
- this.keyboardPosition = 'bottom';
35
- this.keyboardType = 'email';
36
- this.showOnFocus = true;
37
- this.keyboardValueAccepted = new EventEmitter();
38
- this.showKeyboardChange = new EventEmitter();
39
- this._showKeyboard = false;
40
- this.value = '';
41
- }
42
- /**
43
- * @param {?} activateKeyboard
44
- * @return {?}
45
- */
46
- set activateKeyboard(activateKeyboard) {
47
- if (activateKeyboard) {
48
- this.keyboardElement = (/** @type {?} */ (this.elementRef.nativeElement));
49
- this.keyboardjQueryElement = jQueryInstance(this.keyboardElement);
50
- if (this.keyboardjQueryElement) {
51
- this.keyboardjQueryElement.keyboard(this.createKeyboardOptions());
52
- }
53
- }
54
- }
55
- /**
56
- * @return {?}
57
- */
58
- get showKeyboard() {
59
- return this._showKeyboard;
60
- }
61
- /**
62
- * @param {?} revealKeyboard
63
- * @return {?}
64
- */
65
- set showKeyboard(revealKeyboard) {
66
- this._showKeyboard = revealKeyboard;
67
- this.showKeyboardChange.emit(this._showKeyboard);
68
- }
69
- /**
70
- * @return {?}
71
- */
72
- ngOnChanges() {
73
- if (this.showKeyboard && this.isKeyboardCreated()) {
74
- this.keyboardjQueryElement.getkeyboard().reveal();
75
- }
76
- }
77
- /**
78
- * @return {?}
79
- */
80
- ngOnDestroy() {
81
- if (this.isKeyboardCreated()) {
82
- this.keyboardjQueryElement
83
- .keyboard()
84
- .getkeyboard()
85
- .destroy();
86
- }
87
- }
88
- /**
89
- * @private
90
- * @return {?}
91
- */
92
- isKeyboardCreated() {
93
- return (this.keyboardjQueryElement &&
94
- this.keyboardjQueryElement.keyboard() &&
95
- this.keyboardjQueryElement.keyboard().getkeyboard());
96
- }
97
- /**
98
- * @private
99
- * @return {?}
100
- */
101
- getDefaultKeyboardOptions() {
102
- /** @type {?} */
103
- const keyboardOptions = (/** @type {?} */ ({}));
104
- if (!this.showOnFocus) {
105
- keyboardOptions.openOn = '';
106
- }
107
- keyboardOptions.usePreview = false;
108
- keyboardOptions.accepted = this.onValueAccepted.bind(this);
109
- keyboardOptions.visible = this.onKeyboardVisible.bind(this);
110
- keyboardOptions.beforeClose = this.onBeforeClose.bind(this);
111
- keyboardOptions.change = this.onChange.bind(this);
112
- return keyboardOptions;
113
- }
114
- /**
115
- * @private
116
- * @return {?}
117
- */
118
- getKeyboardDisplayOptions() {
119
- return {
120
- bksp: '\u2190',
121
- normal: 'ABC',
122
- meta1: '%?@',
123
- meta2: '#+=',
124
- accept: 'OK'
125
- };
126
- }
127
- /**
128
- * @private
129
- * @return {?}
130
- */
131
- getKeyboardLayout() {
132
- /** @type {?} */
133
- let customLayout = {};
134
- if (this.keyboardType === 'alphanumeric') {
135
- customLayout = {
136
- normal: [
137
- '1 2 3 4 5 6 7 8 9 0',
138
- 'Q W E R T Y U I O P {bksp}',
139
- 'A S D F G H J K L Ç',
140
- 'Z X C V B N M {accept}'
141
- ]
142
- };
143
- }
144
- else if (this.keyboardType === 'email') {
145
- customLayout = this.getCustomKeyboardForEmail();
146
- }
147
- return customLayout;
148
- }
149
- /**
150
- * @private
151
- * @return {?}
152
- */
153
- getCustomKeyboardForEmail() {
154
- return {
155
- normal: [
156
- '1 2 3 4 5 6 7 8 9 0',
157
- 'q w e r t y u i o p {bksp}',
158
- 'a s d f g h j k l ç',
159
- '{s} z x c v b n m .',
160
- '{meta1} {space} _ - {accept}'
161
- ],
162
- shift: [
163
- '1 2 3 4 5 6 7 8 9 0',
164
- 'Q W E R T Y U I O P {bksp}',
165
- 'A S D F G H J K L Ç',
166
- '{s} Z X C V B N M .',
167
- '{meta1} {space} _ - {accept}'
168
- ],
169
- meta1: [
170
- "` | { } % ^ * / ' {bksp}",
171
- '{meta2} $ & ~ # = + @',
172
- '{normal} {space} ! ? {accept}'
173
- ],
174
- meta2: [
175
- '[ ] { } \u2039 \u203a ^ * " , {bksp}',
176
- '\\ | / < > $ \u00a3 \u00a5 \u2022',
177
- '{meta1} \u20ac & ~ # = + .',
178
- '{normal} {space} ! ? {accept}'
179
- ]
180
- };
181
- }
182
- /**
183
- * @private
184
- * @return {?}
185
- */
186
- createKeyboardOptions() {
187
- /** @type {?} */
188
- const keyboardOptions = this.getDefaultKeyboardOptions();
189
- if (this.keyboardPosition !== 'relative') {
190
- keyboardOptions.position = false;
191
- }
192
- if (this.keyboardPosition === 'bottom') {
193
- this.addBottomKeyboardClass();
194
- }
195
- keyboardOptions.css = {
196
- buttonDefault: 'keyboard-button-override'
197
- };
198
- keyboardOptions.display = this.getKeyboardDisplayOptions();
199
- keyboardOptions.layout = 'custom';
200
- keyboardOptions.customLayout = this.getKeyboardLayout();
201
- return keyboardOptions;
202
- }
203
- /**
204
- * @private
205
- * @return {?}
206
- */
207
- onKeyboardVisible() {
208
- this.addCustomKeyboardFocusClass();
209
- }
210
- /**
211
- * @private
212
- * @return {?}
213
- */
214
- onBeforeClose() {
215
- // O elemente do jQuery limpa tudo o que não passou pelo accept
216
- // Necessário setar o valor quando somente fechado a modal.
217
- /** @type {?} */
218
- const formControl = this.fieldControl.control;
219
- formControl.setValue(this.value);
220
- this.showKeyboard = false;
221
- }
222
- /**
223
- * @private
224
- * @return {?}
225
- */
226
- onValueAccepted() {
227
- /** @type {?} */
228
- const casted = (/** @type {?} */ (this.keyboardElement));
229
- this.keyboardValueAccepted.emit(casted.value);
230
- }
231
- /**
232
- * @private
233
- * @param {?} event
234
- * @return {?}
235
- */
236
- onChange(event) {
237
- /** @type {?} */
238
- const virtualkeyboardevent = new CustomEvent('virtualkeyboardevent', event);
239
- document.dispatchEvent(virtualkeyboardevent);
240
- if (this.keyboardElement instanceof HTMLInputElement) {
241
- /** @type {?} */
242
- const keyboardElement = (/** @type {?} */ (this.keyboardElement));
243
- // Arquivo possui referecia do jQuery que é alterado ao fechar o teclado.
244
- // Necessário clonar a string.
245
- /** @type {?} */
246
- const inputVal = JSON.stringify(keyboardElement.value).replace('"', '').replace('"', '');
247
- if (this.fieldControl) {
248
- /** @type {?} */
249
- const formControl = this.fieldControl.control;
250
- this.value = inputVal;
251
- formControl.setValue(inputVal);
252
- formControl.markAsDirty();
253
- formControl.updateValueAndValidity();
254
- }
255
- // Este setTimeout é necessário para fazer com que o
256
- // cursor do input sempre esteja no final da string digitada
257
- // e o final da string sempre esteja visivel.
258
- setTimeout((/**
259
- * @return {?}
260
- */
261
- () => {
262
- keyboardElement.value = inputVal;
263
- keyboardElement.scrollLeft = keyboardElement.scrollWidth;
264
- }));
265
- }
266
- }
267
- /**
268
- * @private
269
- * @return {?}
270
- */
271
- addBottomKeyboardClass() {
272
- this.injectCssRule(`.ui-keyboard {
273
- border-radius: 0;
274
- left: 0;
275
- top: auto;
276
- bottom: 0;
277
- position: fixed;
278
- width: 100%;
279
- }`);
280
- }
281
- /**
282
- * @private
283
- * @return {?}
284
- */
285
- addCustomKeyboardFocusClass() {
286
- this.injectCssRule(`.ui-keyboard-has-focus {
287
- z-index: 900;
288
- }`);
289
- }
290
- /**
291
- * @private
292
- * @param {?} rule
293
- * @return {?}
294
- */
295
- injectCssRule(rule) {
296
- /** @type {?} */
297
- const style = (/** @type {?} */ (document.createElement('style')));
298
- style.appendChild(document.createTextNode(''));
299
- document.head.appendChild(style);
300
- style.sheet.insertRule(rule);
301
- }
302
- }
303
- VirtualKeyboardDirective.decorators = [
304
- { type: Directive, args: [{
305
- selector: '[samVirtualKeyboard]'
306
- },] }
307
- ];
308
- /** @nocollapse */
309
- VirtualKeyboardDirective.ctorParameters = () => [
310
- { type: ElementRef },
311
- { type: NgControl, decorators: [{ type: Optional }] }
312
- ];
313
- VirtualKeyboardDirective.propDecorators = {
314
- keyboardPosition: [{ type: Input }],
315
- keyboardType: [{ type: Input }],
316
- activateKeyboard: [{ type: Input }],
317
- showOnFocus: [{ type: Input }],
318
- showKeyboard: [{ type: Input }],
319
- keyboardValueAccepted: [{ type: Output }],
320
- showKeyboardChange: [{ type: Output }]
321
- };
322
- if (false) {
323
- /**
324
- * @type {?}
325
- * @private
326
- */
327
- VirtualKeyboardDirective.prototype.keyboardPosition;
328
- /**
329
- * @type {?}
330
- * @private
331
- */
332
- VirtualKeyboardDirective.prototype.keyboardType;
333
- /**
334
- * @type {?}
335
- * @private
336
- */
337
- VirtualKeyboardDirective.prototype.showOnFocus;
338
- /**
339
- * @type {?}
340
- * @private
341
- */
342
- VirtualKeyboardDirective.prototype.keyboardValueAccepted;
343
- /** @type {?} */
344
- VirtualKeyboardDirective.prototype.showKeyboardChange;
345
- /** @type {?} */
346
- VirtualKeyboardDirective.prototype._showKeyboard;
347
- /**
348
- * @type {?}
349
- * @private
350
- */
351
- VirtualKeyboardDirective.prototype.keyboardElement;
352
- /**
353
- * @type {?}
354
- * @private
355
- */
356
- VirtualKeyboardDirective.prototype.value;
357
- /**
358
- * @type {?}
359
- * @private
360
- */
361
- VirtualKeyboardDirective.prototype.keyboardjQueryElement;
362
- /** @type {?} */
363
- VirtualKeyboardDirective.prototype.elementRef;
364
- /** @type {?} */
365
- VirtualKeyboardDirective.prototype.fieldControl;
366
- }
367
- export { ɵ0 };
368
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmlydHVhbC1rZXlib2FyZC5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9Ac2FtLXNlbmlvci92aXJ0dWFsLWtleWJvYXJkLyIsInNvdXJjZXMiOlsibGliL3ZpcnR1YWwta2V5Ym9hcmQuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFBQSxPQUFPLEVBQUUsU0FBUyxFQUF3QixVQUFVLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsWUFBWSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25ILE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7Ozs7Ozs7OztNQVVyQyxjQUFjOzs7O0FBQUcsQ0FBQyxPQUFPLEVBQUUsRUFBRTs7VUFDM0IsY0FBYyxHQUFHLG1CQUFBLE1BQU0sRUFBTztJQUNwQyxPQUFPLGNBQWMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLGNBQWMsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztBQUN2RSxDQUFDLENBQUE7O0FBS0QsTUFBTSxPQUFPLHdCQUF3Qjs7Ozs7SUFrQ25DLFlBQ1MsVUFBc0IsRUFDVixZQUF1QjtRQURuQyxlQUFVLEdBQVYsVUFBVSxDQUFZO1FBQ1YsaUJBQVksR0FBWixZQUFZLENBQVc7UUFqQzNCLHFCQUFnQixHQUEwQixRQUFRLENBQUM7UUFDbkQsaUJBQVksR0FBNkIsT0FBTyxDQUFDO1FBVWpELGdCQUFXLEdBQUcsSUFBSSxDQUFDO1FBVWxCLDBCQUFxQixHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7UUFDNUMsdUJBQWtCLEdBQUcsSUFBSSxZQUFZLEVBQVcsQ0FBQztRQUUzRCxrQkFBYSxHQUFHLEtBQUssQ0FBQztRQUVyQixVQUFLLEdBQUcsRUFBRSxDQUFDO0lBUWYsQ0FBQzs7Ozs7SUFoQ0wsSUFBb0IsZ0JBQWdCLENBQUMsZ0JBQXlCO1FBQzVELElBQUksZ0JBQWdCLEVBQUU7WUFDcEIs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ZXNDb250ZW50IjpbImltcG9ydCB7IERpcmVjdGl2ZSwgT25EZXN0cm95LCBPbkNoYW5nZXMsIEVsZW1lbnRSZWYsIE9wdGlvbmFsLCBJbnB1dCwgT3V0cHV0LCBFdmVudEVtaXR0ZXIgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgTmdDb250cm9sIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5cclxuaW1wb3J0IHsgS2V5Ym9hcmRPcHRpb25zIH0gZnJvbSAnLi4vLi4vbm9kZV9tb2R1bGVzL3ZpcnR1YWwta2V5Ym9hcmQnO1xyXG5cclxuLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxyXG4qIE3DqXRvZG8gcXVlIHJldG9uYXIgaW5zdGFuY2lhIGRvIGVsZW1lbnRvIGpRdWVyeSwgcG9pc1xyXG4qIG8gcHJvamV0byBxdWUgaW1wbGVtZW50YSBlc3RhIGRpcmV0aXZhIGZpY2EgZm9yYSBkYSBsaWIuXHJcbiogRGV2aWRvIGZpY2FyIGZvcmEsIG8gd2VicGFjayBuw6NvIGZpY2Fyw6EgYXF1aSwgcG9ydGFuZG8gbsOjb1xyXG4qIHRlbSBqUXVlcnkgbmEgbGliO1xyXG4qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xyXG5jb25zdCBqUXVlcnlJbnN0YW5jZSA9IChlbGVtZW50KSA9PiB7XHJcbiAgY29uc3Qgd2luZG93SW5zdGFuY2UgPSB3aW5kb3cgYXMgYW55O1xyXG4gIHJldHVybiB3aW5kb3dJbnN0YW5jZS5qUXVlcnkgPyB3aW5kb3dJbnN0YW5jZS5qUXVlcnkoZWxlbWVudCkgOiBudWxsO1xyXG59O1xyXG5cclxuQERpcmVjdGl2ZSh7XHJcbiAgc2VsZWN0b3I6ICdbc2FtVmlydHVhbEtleWJvYXJkXSdcclxufSlcclxuZXhwb3J0IGNsYXNzIFZpcnR1YWxLZXlib2FyZERpcmVjdGl2ZVxyXG4gIGltcGxlbWVudHMgT25EZXN0cm95LCBPbkNoYW5nZXMge1xyXG5cclxuICBASW5wdXQoKSBwcml2YXRlIGtleWJvYXJkUG9zaXRpb246ICdyZWxhdGl2ZScgfCAnYm90dG9tJyA9ICdib3R0b20nO1xyXG4gIEBJbnB1dCgpIHByaXZhdGUga2V5Ym9hcmRUeXBlOiAnZW1haWwnIHwgJ2FscGhhbnVtZXJpYycgPSAnZW1haWwnO1xyXG4gIEBJbnB1dCgpIHB1YmxpYyBzZXQgYWN0aXZhdGVLZXlib2FyZChhY3RpdmF0ZUtleWJvYXJkOiBib29sZWFuKSB7XHJcbiAgICBpZiAoYWN0aXZhdGVLZXlib2FyZCkge1xyXG4gICAgICB0aGlzLmtleWJvYXJkRWxlbWVudCA9IHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50IGFzIEhUTUxFbGVtZW50O1xyXG4gICAgICB0aGlzLmtleWJvYXJkalF1ZXJ5RWxlbWVudCA9IGpRdWVyeUluc3RhbmNlKHRoaXMua2V5Ym9hcmRFbGVtZW50KTtcclxuICAgICAgaWYgKHRoaXMua2V5Ym9hcmRqUXVlcnlFbGVtZW50KSB7XHJcbiAgICAgICAgdGhpcy5rZXlib2FyZGpRdWVyeUVsZW1lbnQua2V5Ym9hcmQodGhpcy5jcmVhdGVLZXlib2FyZE9wdGlvbnMoKSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcbiAgQElucHV0KCkgcHJpdmF0ZSBzaG93T25Gb2N1cyA9IHRydWU7XHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgZ2V0IHNob3dLZXlib2FyZCgpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLl9zaG93S2V5Ym9hcmQ7XHJcbiAgfVxyXG4gIHB1YmxpYyBzZXQgc2hvd0tleWJvYXJkKHJldmVhbEtleWJvYXJkOiBib29sZWFuKSB7XHJcbiAgICB0aGlzLl9zaG93S2V5Ym9hcmQgPSByZXZlYWxLZXlib2FyZDtcclxuICAgIHRoaXMuc2hvd0tleWJvYXJkQ2hhbmdlLmVtaXQodGhpcy5fc2hvd0tleWJvYXJkKTtcclxuICB9XHJcblxyXG4gIEBPdXRwdXQoKSBwcml2YXRlIGtleWJvYXJkVmFsdWVBY2NlcHRlZCA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAT3V0cHV0KCkgcHVibGljIHNob3dLZXlib2FyZENoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKTtcclxuXHJcbiAgcHVibGljIF9zaG93S2V5Ym9hcmQgPSBmYWxzZTtcclxuICBwcml2YXRlIGtleWJvYXJkRWxlbWVudDogSFRNTEVsZW1lbnQ7XHJcbiAgcHJpdmF0ZSB2YWx1ZSA9ICcnO1xyXG5cclxuICAvLyBBbnkgZGV2aWRvIGEgc2VyIHJlZmVyw6puY2lhIGRvIGpRdWVyeTtcclxuICBwcml2YXRlIGtleWJvYXJkalF1ZXJ5RWxlbWVudDogYW55O1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHB1YmxpYyBlbGVtZW50UmVmOiBFbGVtZW50UmVmLFxyXG4gICAgQE9wdGlvbmFsKCkgcHVibGljIGZpZWxkQ29udHJvbDogTmdDb250cm9sXHJcbiAgKSB7IH1cclxuXHJcbiAgbmdPbkNoYW5nZXMoKSB7XHJcbiAgICBpZiAodGhpcy5zaG93S2V5Ym9hcmQgJiYgdGhpcy5pc0tleWJvYXJkQ3JlYXRlZCgpKSB7XHJcbiAgICAgIHRoaXMua2V5Ym9hcmRqUXVlcnlFbGVtZW50LmdldGtleWJvYXJkKCkucmV2ZWFsKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBuZ09uRGVzdHJveSgpIHtcclxuICAgIGlmICh0aGlzLmlzS2V5Ym9hcmRDcmVhdGVkKCkpIHtcclxuICAgICAgdGhpcy5rZXlib2FyZGpRdWVyeUVsZW1lbnRcclxuICAgICAgICAua2V5Ym9hcmQoKVxyXG4gICAgICAgIC5nZXRrZXlib2FyZCgpXHJcbiAgICAgICAgLmRlc3Ryb3koKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgaXNLZXlib2FyZENyZWF0ZWQoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gKFxyXG4gICAgICB0aGlzLmtleWJvYXJkalF1ZXJ5RWxlbWVudCAmJlxyXG4gICAgICB0aGlzLmtleWJvYXJkalF1ZXJ5RWxlbWVudC5rZXlib2FyZCgpICYmXHJcbiAgICAgIHRoaXMua2V5Ym9hcmRqUXVlcnlFbGVtZW50LmtleWJvYXJkKCkuZ2V0a2V5Ym9hcmQoKVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZ2V0RGVmYXVsdEtleWJvYXJkT3B0aW9ucygpIHtcclxuICAgIGNvbnN0IGtleWJvYXJkT3B0aW9ucyA9IHt9IGFzIEtleWJvYXJkT3B0aW9ucztcclxuICAgIGlmICghdGhpcy5zaG93T25Gb2N1cykge1xyXG4gICAgICBrZXlib2FyZE9wdGlvbnMub3Blbk9uID0gJyc7XHJcbiAgICB9XHJcbiAgICBrZXlib2FyZE9wdGlvbnMudXNlUHJldmlldyA9IGZhbHNlO1xyXG4gICAga2V5Ym9hcmRPcHRpb25zLmFjY2VwdGVkID0gdGhpcy5vblZhbHVlQWNjZXB0ZWQuYmluZCh0aGlzKTtcclxuICAgIGtleWJvYXJkT3B0aW9ucy52aXNpYmxlID0gdGhpcy5vbktleWJvYXJkVmlzaWJsZS5iaW5kKHRoaXMpO1xyXG4gICAga2V5Ym9hcmRPcHRpb25zLmJlZm9yZUNsb3NlID0gdGhpcy5vbkJlZm9yZUNsb3NlLmJpbmQodGhpcyk7XHJcbiAgICBrZXlib2FyZE9wdGlvbnMuY2hhbmdlID0gdGhpcy5vbkNoYW5nZS5iaW5kKHRoaXMpO1xyXG4gICAgcmV0dXJuIGtleWJvYXJkT3B0aW9ucztcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZ2V0S2V5Ym9hcmREaXNwbGF5T3B0aW9ucygpIHtcclxuICAgIHJldHVybiB7XHJcbiAgICAgIGJrc3A6ICdcXHUyMTkwJyxcclxuICAgICAgbm9ybWFsOiAnQUJDJyxcclxuICAgICAgbWV0YTE6ICclP0AnLFxyXG4gICAgICBtZXRhMjogJyMrPScsXHJcbiAgICAgIGFjY2VwdDogJ09LJ1xyXG4gICAgfTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZ2V0S2V5Ym9hcmRMYXlvdXQoKSB7XHJcbiAgICBsZXQgY3VzdG9tTGF5b3V0ID0ge307XHJcbiAgICBpZiAodGhpcy5rZXlib2FyZFR5cGUgPT09ICdhbHBoYW51bWVyaWMnKSB7XHJcbiAgICAgIGN1c3RvbUxheW91dCA9IHtcclxuICAgICAgICBub3JtYWw6IFtcclxuICAgICAgICAgICcxIDIgMyA0IDUgNiA3IDggOSAwJyxcclxuICAgICAgICAgICdRIFcgRSBSIFQgWSBVIEkgTyBQIHtia3NwfScsXHJcbiAgICAgICAgICAnQSBTIEQgRiBHIEggSiBLIEwgw4cnLFxyXG4gICAgICAgICAgJ1ogWCBDIFYgQiBOIE0ge2FjY2VwdH0nXHJcbiAgICAgICAgXVxyXG4gICAgICB9O1xyXG4gICAgfSBlbHNlIGlmICh0aGlzLmtleWJvYXJkVHlwZSA9PT0gJ2VtYWlsJykge1xyXG4gICAgICBjdXN0b21MYXlvdXQgPSB0aGlzLmdldEN1c3RvbUtleWJvYXJkRm9yRW1haWwoKTtcclxuICAgIH1cclxuICAgIHJldHVybiBjdXN0b21MYXlvdXQ7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGdldEN1c3RvbUtleWJvYXJkRm9yRW1haWwoKSB7XHJcbiAgICByZXR1cm4ge1xyXG4gICAgICBub3JtYWw6IFtcclxuICAgICAgICAnMSAyIDMgNCA1IDYgNyA4IDkgMCcsXHJcbiAgICAgICAgJ3EgdyBlIHIgdCB5IHUgaSBvIHAge2Jrc3B9JyxcclxuICAgICAgICAnYSBzIGQgZiBnIGggaiBrIGwgw6cnLFxyXG4gICAgICAgICd7c30geiB4IGMgdiBiIG4gbSAuJyxcclxuICAgICAgICAne21ldGExfSB7c3BhY2V9IF8gLSB7YWNjZXB0fSdcclxuICAgICAgXSxcclxuICAgICAgc2hpZnQ6IFtcclxuICAgICAgICAnMSAyIDMgNCA1IDYgNyA4IDkgMCcsXHJcbiAgICAgICAgJ1EgVyBFIFIgVCBZIFUgSSBPIFAge2Jrc3B9JyxcclxuICAgICAgICAnQSBTIEQgRiBHIEggSiBLIEwgw4cnLFxyXG4gICAgICAgICd7c30gWiBYIEMgViBCIE4gTSAuJyxcclxuICAgICAgICAne21ldGExfSB7c3BhY2V9IF8gLSB7YWNjZXB0fSdcclxuICAgICAgXSxcclxuICAgICAgbWV0YTE6IFtcclxuICAgICAgICBcImAgfCB7IH0gJSBeICogLyAnIHtia3NwfVwiLFxyXG4gICAgICAgICd7bWV0YTJ9ICQgJiB+ICMgPSArIEAnLFxyXG4gICAgICAgICd7bm9ybWFsfSB7c3BhY2V9ICEgPyB7YWNjZXB0fSdcclxuICAgICAgXSxcclxuICAgICAgbWV0YTI6IFtcclxuICAgICAgICAnWyBdIHsgfSBcXHUyMDM5IFxcdTIwM2EgXiAqIFwiICwge2Jrc3B9JyxcclxuICAgICAgICAnXFxcXCB8IC8gPCA+ICQgXFx1MDBhMyBcXHUwMGE1IFxcdTIwMjInLFxyXG4gICAgICAgICd7bWV0YTF9IFxcdTIwYWMgJiB+ICMgPSArIC4nLFxyXG4gICAgICAgICd7bm9ybWFsfSB7c3BhY2V9ICEgPyB7YWNjZXB0fSdcclxuICAgICAgXVxyXG4gICAgfTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgY3JlYXRlS2V5Ym9hcmRPcHRpb25zKCk6IEtleWJvYXJkT3B0aW9ucyB7XHJcbiAgICBjb25zdCBrZXlib2FyZE9wdGlvbnMgPSB0aGlzLmdldERlZmF1bHRLZXlib2FyZE9wdGlvbnMoKTtcclxuICAgIGlmICh0aGlzLmtleWJvYXJkUG9zaXRpb24gIT09ICdyZWxhdGl2ZScpIHtcclxuICAgICAga2V5Ym9hcmRPcHRpb25zLnBvc2l0aW9uID0gZmFsc2U7XHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy5rZXlib2FyZFBvc2l0aW9uID09PSAnYm90dG9tJykge1xyXG4gICAgICB0aGlzLmFkZEJvdHRvbUtleWJvYXJkQ2xhc3MoKTtcclxuICAgIH1cclxuICAgIGtleWJvYXJkT3B0aW9ucy5jc3MgPSB7XHJcbiAgICAgIGJ1dHRvbkRlZmF1bHQ6ICdrZXlib2FyZC1idXR0b24tb3ZlcnJpZGUnXHJcbiAgICB9O1xyXG5cclxuICAgIGtleWJvYXJkT3B0aW9ucy5kaXNwbGF5ID0gdGhpcy5nZXRLZXlib2FyZERpc3BsYXlPcHRpb25zKCk7XHJcbiAgICBrZXlib2FyZE9wdGlvbnMubGF5b3V0ID0gJ2N1c3RvbSc7XHJcbiAgICBrZXlib2FyZE9wdGlvbnMuY3VzdG9tTGF5b3V0ID0gdGhpcy5nZXRLZXlib2FyZExheW91dCgpO1xyXG5cclxuICAgIHJldHVybiBrZXlib2FyZE9wdGlvbnM7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIG9uS2V5Ym9hcmRWaXNpYmxlKCkge1xyXG4gICAgdGhpcy5hZGRDdXN0b21LZXlib2FyZEZvY3VzQ2xhc3MoKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgb25CZWZvcmVDbG9zZSgpIHtcclxuICAgIC8vIE8gZWxlbWVudGUgZG8galF1ZXJ5IGxpbXBhIHR1ZG8gbyBxdWUgbsOjbyBwYXNzb3UgcGVsbyBhY2NlcHRcclxuICAgIC8vIE5lY2Vzc8OhcmlvIHNldGFyIG8gdmFsb3IgcXVhbmRvIHNvbWVudGUgZmVjaGFkbyBhIG1vZGFsLlxyXG4gICAgY29uc3QgZm9ybUNvbnRyb2wgPSB0aGlzLmZpZWxkQ29udHJvbC5jb250cm9sO1xyXG4gICAgZm9ybUNvbnRyb2wuc2V0VmFsdWUodGhpcy52YWx1ZSk7XHJcbiAgICB0aGlzLnNob3dLZXlib2FyZCA9IGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBvblZhbHVlQWNjZXB0ZWQoKSB7XHJcbiAgICBjb25zdCBjYXN0ZWQgPSB0aGlzLmtleWJvYXJkRWxlbWVudCBhcyBhbnk7XHJcbiAgICB0aGlzLmtleWJvYXJkVmFsdWVBY2NlcHRlZC5lbWl0KGNhc3RlZC52YWx1ZSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIG9uQ2hhbmdlKGV2ZW50KSB7XHJcbiAgICBjb25zdCB2aXJ0dWFsa2V5Ym9hcmRldmVudCA9IG5ldyBDdXN0b21FdmVudCgndmlydHVhbGtleWJvYXJkZXZlbnQnLCBldmVudCk7XHJcbiAgICBkb2N1bWVudC5kaXNwYXRjaEV2ZW50KHZpcnR1YWxrZXlib2FyZGV2ZW50KTtcclxuICAgIGlmICh0aGlzLmtleWJvYXJkRWxlbWVudCBpbnN0YW5jZW9mIEhUTUxJbnB1dEVsZW1lbnQpIHtcclxuICAgICAgY29uc3Qga2V5Ym9hcmRFbGVtZW50ID0gdGhpcy5rZXlib2FyZEVsZW1lbnQgYXMgSFRNTElucHV0RWxlbWVudDtcclxuICAgICAgLy8gQXJxdWl2byBwb3NzdWkgcmVmZXJlY2lhIGRvIGpRdWVyeSBxdWUgw6kgYWx0ZXJhZG8gYW8gZmVjaGFyIG8gdGVjbGFkby5cclxuICAgICAgLy8gTmVjZXNzw6FyaW8gY2xvbmFyIGEgc3RyaW5nLlxyXG4gICAgICBjb25zdCBpbnB1dFZhbCA9IEpTT04uc3RyaW5naWZ5KGtleWJvYXJkRWxlbWVudC52YWx1ZSkucmVwbGFjZSgnXCInLCAnJykucmVwbGFjZSgnXCInLCAnJyk7XHJcbiAgICAgIGlmICh0aGlzLmZpZWxkQ29udHJvbCkge1xyXG4gICAgICAgIGNvbnN0IGZvcm1Db250cm9sID0gdGhpcy5maWVsZENvbnRyb2wuY29udHJvbDtcclxuICAgICAgICB0aGlzLnZhbHVlID0gaW5wdXRWYWw7XHJcbiAgICAgICAgZm9ybUNvbnRyb2wuc2V0VmFsdWUoaW5wdXRWYWwpO1xyXG4gICAgICAgIGZvcm1Db250cm9sLm1hcmtBc0RpcnR5KCk7XHJcbiAgICAgICAgZm9ybUNvbnRyb2wudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpO1xyXG4gICAgICB9XHJcbiAgICAgIC8vIEVzdGUgc2V0VGltZW91dCDDqSBuZWNlc3PDoXJpbyBwYXJhIGZhemVyIGNvbSBxdWUgb1xyXG4gICAgICAvLyBjdXJzb3IgZG8gaW5wdXQgc2VtcHJlIGVzdGVqYSBubyBmaW5hbCBkYSBzdHJpbmcgZGlnaXRhZGFcclxuICAgICAgLy8gZSBvIGZpbmFsIGRhIHN0cmluZyBzZW1wcmUgZXN0ZWphIHZpc2l2ZWwuXHJcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgIGtleWJvYXJkRWxlbWVudC52YWx1ZSA9IGlucHV0VmFsO1xyXG4gICAgICAgIGtleWJvYXJkRWxlbWVudC5zY3JvbGxMZWZ0ID0ga2V5Ym9hcmRFbGVtZW50LnNjcm9sbFdpZHRoO1xyXG4gICAgICB9KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgYWRkQm90dG9tS2V5Ym9hcmRDbGFzcygpIHtcclxuICAgIHRoaXMuaW5qZWN0Q3NzUnVsZShcclxuICAgICAgYC51aS1rZXlib2FyZCB7XHJcbiAgICAgICAgYm9yZGVyLXJhZGl1czogMDtcclxuICAgICAgICBsZWZ0OiAwO1xyXG4gICAgICAgIHRvcDogYXV0bztcclxuICAgICAgICBib3R0b206IDA7XHJcbiAgICAgICAgcG9zaXRpb246IGZpeGVkO1xyXG4gICAgICAgIHdpZHRoOiAxMDAlO1xyXG4gICAgICB9YFxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgYWRkQ3VzdG9tS2V5Ym9hcmRGb2N1c0NsYXNzKCkge1xyXG4gICAgdGhpcy5pbmplY3RDc3NSdWxlKFxyXG4gICAgICBgLnVpLWtleWJvYXJkLWhhcy1mb2N1cyB7XHJcbiAgICAgICAgei1pbmRleDogOTAwO1xyXG4gICAgICB9YFxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgaW5qZWN0Q3NzUnVsZShydWxlKSB7XHJcbiAgICBjb25zdCBzdHlsZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3N0eWxlJykgYXMgYW55O1xyXG4gICAgc3R5bGUuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoJycpKTtcclxuICAgIGRvY3VtZW50LmhlYWQuYXBwZW5kQ2hpbGQoc3R5bGUpO1xyXG4gICAgc3R5bGUuc2hlZXQuaW5zZXJ0UnVsZShydWxlKTtcclxuICB9XHJcbn1cclxuXHJcbiJdfQ==
@@ -1,15 +0,0 @@
1
- /**
2
- * @fileoverview added by tsickle
3
- * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
4
- */
5
- import { NgModule } from '@angular/core';
6
- import { VirtualKeyboardDirective } from './virtual-keyboard.directive';
7
- export class VirtualKeyboardModule {
8
- }
9
- VirtualKeyboardModule.decorators = [
10
- { type: NgModule, args: [{
11
- declarations: [VirtualKeyboardDirective],
12
- exports: [VirtualKeyboardDirective]
13
- },] }
14
- ];
15
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmlydHVhbC1rZXlib2FyZC5tb2R1bGUuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9Ac2FtLXNlbmlvci92aXJ0dWFsLWtleWJvYXJkLyIsInNvdXJjZXMiOlsibGliL3ZpcnR1YWwta2V5Ym9hcmQubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBTXhFLE1BQU0sT0FBTyxxQkFBcUI7OztZQUpqQyxRQUFRLFNBQUM7Z0JBQ1IsWUFBWSxFQUFFLENBQUMsd0JBQXdCLENBQUM7Z0JBQ3hDLE9BQU8sRUFBRSxDQUFDLHdCQUF3QixDQUFDO2FBQ3BDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgVmlydHVhbEtleWJvYXJkRGlyZWN0aXZlIH0gZnJvbSAnLi92aXJ0dWFsLWtleWJvYXJkLmRpcmVjdGl2ZSc7XHJcblxyXG5ATmdNb2R1bGUoe1xyXG4gIGRlY2xhcmF0aW9uczogW1ZpcnR1YWxLZXlib2FyZERpcmVjdGl2ZV0sXHJcbiAgZXhwb3J0czogW1ZpcnR1YWxLZXlib2FyZERpcmVjdGl2ZV1cclxufSlcclxuZXhwb3J0IGNsYXNzIFZpcnR1YWxLZXlib2FyZE1vZHVsZSB7IH1cclxuIl19
@@ -1,9 +0,0 @@
1
- /**
2
- * @fileoverview added by tsickle
3
- * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
4
- */
5
- /*
6
- * Public API Surface of virtual-keyboard
7
- */
8
- export { VirtualKeyboardModule } from './lib/virtual-keyboard.module';
9
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljX2FwaS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BzYW0tc2VuaW9yL3ZpcnR1YWwta2V5Ym9hcmQvIiwic291cmNlcyI6WyJwdWJsaWNfYXBpLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFHQSxzQ0FBYywrQkFBK0IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qXHJcbiAqIFB1YmxpYyBBUEkgU3VyZmFjZSBvZiB2aXJ0dWFsLWtleWJvYXJkXHJcbiAqL1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi92aXJ0dWFsLWtleWJvYXJkLm1vZHVsZSc7XHJcbiJdfQ==
@@ -1,10 +0,0 @@
1
- /**
2
- * @fileoverview added by tsickle
3
- * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
4
- */
5
- /**
6
- * Generated bundle index. Do not edit.
7
- */
8
- export { VirtualKeyboardModule } from './public_api';
9
- export { VirtualKeyboardDirective as ɵa } from './lib/virtual-keyboard.directive';
10
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2FtLXNlbmlvci12aXJ0dWFsLWtleWJvYXJkLmpzIiwic291cmNlUm9vdCI6Im5nOi8vQHNhbS1zZW5pb3IvdmlydHVhbC1rZXlib2FyZC8iLCJzb3VyY2VzIjpbInNhbS1zZW5pb3ItdmlydHVhbC1rZXlib2FyZC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBSUEsc0NBQWMsY0FBYyxDQUFDO0FBRTdCLE9BQU8sRUFBQyx3QkFBd0IsSUFBSSxFQUFFLEVBQUMsTUFBTSxrQ0FBa0MsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogR2VuZXJhdGVkIGJ1bmRsZSBpbmRleC4gRG8gbm90IGVkaXQuXG4gKi9cblxuZXhwb3J0ICogZnJvbSAnLi9wdWJsaWNfYXBpJztcblxuZXhwb3J0IHtWaXJ0dWFsS2V5Ym9hcmREaXJlY3RpdmUgYXMgybVhfSBmcm9tICcuL2xpYi92aXJ0dWFsLWtleWJvYXJkLmRpcmVjdGl2ZSc7Il19