{"version":3,"file":"bespunky-angular-cdk-reactive-input-keyboard.mjs","sources":["../../../../libs/angular-cdk/reactive-input/keyboard/src/services/reactive-keyboard.service.ts","../../../../libs/angular-cdk/reactive-input/keyboard/src/bespunky-angular-cdk-reactive-input-keyboard.ts"],"sourcesContent":["import { Observable             } from 'rxjs';\nimport { filter                 } from 'rxjs/operators';\nimport { ElementRef, Injectable } from '@angular/core';\nimport { DocumentRef            } from '@bespunky/angular-zen';\n\nimport { createReactiveInputWithModifiersObservable } from '@bespunky/angular-cdk/reactive-input/shared';\nimport { KeyboardFeedConfig                         } from '../feeds/keyboard-feed-config';\nimport { KeyboardEventName                          } from '../types/keyboard-events';\n\n@Injectable({ providedIn: 'root' })\nexport class ReactiveKeyboardService\n{\n    public keydown(element: ElementRef | DocumentRef, config?: KeyboardFeedConfig): Observable<KeyboardEvent>\n    {\n        return this.key(element, 'keydown', config);\n    }\n\n    public keyup(element: ElementRef | DocumentRef, config?: KeyboardFeedConfig): Observable<KeyboardEvent>\n    {\n        return this.key(element, 'keyup', config);\n    }\n\n    public keypress(element: ElementRef | DocumentRef, config?: KeyboardFeedConfig): Observable<KeyboardEvent>\n    {\n        return this.key(element, 'keypress', config);\n    }\n\n    private key(element: ElementRef | DocumentRef, eventName: KeyboardEventName, config?: KeyboardFeedConfig): Observable<KeyboardEvent>\n    {\n        const { key } = config || {};\n        \n        // TODO: Research making keyboard events work even without element focus, then replace document with element.\n        let keydown = createReactiveInputWithModifiersObservable<KeyboardEvent>(new ElementRef(document), eventName, config);\n        \n        if (key) keydown = keydown.pipe(filter(e => e.key === key));\n\n        return keydown;\n    }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;MAUa,uBAAuB,CAAA;IAEzB,OAAO,CAAC,OAAiC,EAAE,MAA2B,EAAA;QAEzE,OAAO,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC;KAC/C;IAEM,KAAK,CAAC,OAAiC,EAAE,MAA2B,EAAA;QAEvE,OAAO,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;KAC7C;IAEM,QAAQ,CAAC,OAAiC,EAAE,MAA2B,EAAA;QAE1E,OAAO,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,UAAU,EAAE,MAAM,CAAC,CAAC;KAChD;AAEO,IAAA,GAAG,CAAC,OAAiC,EAAE,SAA4B,EAAE,MAA2B,EAAA;AAEpG,QAAA,MAAM,EAAE,GAAG,EAAE,GAAG,MAAM,IAAI,EAAE,CAAC;;AAG7B,QAAA,IAAI,OAAO,GAAG,0CAA0C,CAAgB,IAAI,UAAU,CAAC,QAAQ,CAAC,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC;AAErH,QAAA,IAAI,GAAG;AAAE,YAAA,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC,CAAC,CAAC;AAE5D,QAAA,OAAO,OAAO,CAAC;KAClB;;oHA3BQ,uBAAuB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAvB,uBAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,uBAAuB,cADV,MAAM,EAAA,CAAA,CAAA;2FACnB,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBADnC,UAAU;mBAAC,EAAE,UAAU,EAAE,MAAM,EAAE,CAAA;;;ACTlC;;AAEG;;;;"}