UNPKG

@mdefy/ngx-markdown-editor

Version:

An Angular Markdown Editor in WYSIWYG style with extensive functionality, high customizability and an integrated material theme.

42 lines 4.4 kB
import { Injectable } from '@angular/core'; import { EventManager } from '@angular/platform-browser'; import { Observable } from 'rxjs'; import * as i0 from "@angular/core"; import * as i1 from "@angular/platform-browser"; /** * An injectable hotkeys service to add keybindings. */ export class Keybindings { constructor(eventManager) { this.eventManager = eventManager; } /** * Adds an _keydown_ event listener to the Angular `EventManager` with the specified * `keys`. The listener is applied to specified `element`. Returns an RxJS observable * of the keyboard event. * * @param element The HTML element to which the keybinding shall be applied to. * @param keys The key combination which shall trigger the event. */ addKeybinding(element, keys) { const event = `keydown.${keys}`; return new Observable((observer) => { const handler = (e) => { e.preventDefault(); observer.next(e); }; const dispose = this.eventManager.addEventListener(element, event, handler); return () => { dispose(); }; }); } } Keybindings.ɵprov = i0.ɵɵdefineInjectable({ factory: function Keybindings_Factory() { return new Keybindings(i0.ɵɵinject(i1.EventManager)); }, token: Keybindings, providedIn: "root" }); Keybindings.decorators = [ { type: Injectable, args: [{ providedIn: 'root' },] } ]; Keybindings.ctorParameters = () => [ { type: EventManager } ]; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoia2V5YmluZGluZ3Muc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1tYXJrZG93bi1lZGl0b3Ivc3JjL2xpYi9zZXJ2aWNlcy9rZXliaW5kaW5ncy5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ3pELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxNQUFNLENBQUM7OztBQUVsQzs7R0FFRztBQUVILE1BQU0sT0FBTyxXQUFXO0lBQ3RCLFlBQW9CLFlBQTBCO1FBQTFCLGlCQUFZLEdBQVosWUFBWSxDQUFjO0lBQUcsQ0FBQztJQUVsRDs7Ozs7OztPQU9HO0lBQ0gsYUFBYSxDQUFDLE9BQW9CLEVBQUUsSUFBWTtRQUM5QyxNQUFNLEtBQUssR0FBRyxXQUFXLElBQUksRUFBRSxDQUFDO1FBRWhDLE9BQU8sSUFBSSxVQUFVLENBQWdCLENBQUMsUUFBUSxFQUFFLEVBQUU7WUFDaEQsTUFBTSxPQUFPLEdBQUcsQ0FBQyxDQUFnQixFQUFFLEVBQUU7Z0JBQ25DLENBQUMsQ0FBQyxjQUFjLEVBQUUsQ0FBQztnQkFDbkIsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUNuQixDQUFDLENBQUM7WUFFRixNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLGdCQUFnQixDQUFDLE9BQU8sRUFBRSxLQUFLLEVBQUUsT0FBTyxDQUFDLENBQUM7WUFFNUUsT0FBTyxHQUFHLEVBQUU7Z0JBQ1YsT0FBTyxFQUFFLENBQUM7WUFDWixDQUFDLENBQUM7UUFDSixDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7Ozs7WUEzQkYsVUFBVSxTQUFDLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRTs7O1lBTnpCLFlBQVkiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBFdmVudE1hbmFnZXIgfSBmcm9tICdAYW5ndWxhci9wbGF0Zm9ybS1icm93c2VyJztcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcblxuLyoqXG4gKiBBbiBpbmplY3RhYmxlIGhvdGtleXMgc2VydmljZSB0byBhZGQga2V5YmluZGluZ3MuXG4gKi9cbkBJbmplY3RhYmxlKHsgcHJvdmlkZWRJbjogJ3Jvb3QnIH0pXG5leHBvcnQgY2xhc3MgS2V5YmluZGluZ3Mge1xuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGV2ZW50TWFuYWdlcjogRXZlbnRNYW5hZ2VyKSB7fVxuXG4gIC8qKlxuICAgKiBBZGRzIGFuIF9rZXlkb3duXyBldmVudCBsaXN0ZW5lciB0byB0aGUgQW5ndWxhciBgRXZlbnRNYW5hZ2VyYCB3aXRoIHRoZSBzcGVjaWZpZWRcbiAgICogYGtleXNgLiBUaGUgbGlzdGVuZXIgaXMgYXBwbGllZCB0byBzcGVjaWZpZWQgYGVsZW1lbnRgLiBSZXR1cm5zIGFuIFJ4SlMgb2JzZXJ2YWJsZVxuICAgKiBvZiB0aGUga2V5Ym9hcmQgZXZlbnQuXG4gICAqXG4gICAqIEBwYXJhbSBlbGVtZW50IFRoZSBIVE1MIGVsZW1lbnQgdG8gd2hpY2ggdGhlIGtleWJpbmRpbmcgc2hhbGwgYmUgYXBwbGllZCB0by5cbiAgICogQHBhcmFtIGtleXMgVGhlIGtleSBjb21iaW5hdGlvbiB3aGljaCBzaGFsbCB0cmlnZ2VyIHRoZSBldmVudC5cbiAgICovXG4gIGFkZEtleWJpbmRpbmcoZWxlbWVudDogSFRNTEVsZW1lbnQsIGtleXM6IHN0cmluZyk6IE9ic2VydmFibGU8S2V5Ym9hcmRFdmVudD4ge1xuICAgIGNvbnN0IGV2ZW50ID0gYGtleWRvd24uJHtrZXlzfWA7XG5cbiAgICByZXR1cm4gbmV3IE9ic2VydmFibGU8S2V5Ym9hcmRFdmVudD4oKG9ic2VydmVyKSA9PiB7XG4gICAgICBjb25zdCBoYW5kbGVyID0gKGU6IEtleWJvYXJkRXZlbnQpID0+IHtcbiAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICBvYnNlcnZlci5uZXh0KGUpO1xuICAgICAgfTtcblxuICAgICAgY29uc3QgZGlzcG9zZSA9IHRoaXMuZXZlbnRNYW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIoZWxlbWVudCwgZXZlbnQsIGhhbmRsZXIpO1xuXG4gICAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgICBkaXNwb3NlKCk7XG4gICAgICB9O1xuICAgIH0pO1xuICB9XG59XG4iXX0=