@mdefy/ngx-markdown-editor
Version:
An Angular Markdown Editor in WYSIWYG style with extensive functionality, high customizability and an integrated material theme.
59 lines • 7.41 kB
JavaScript
import { Injectable } from '@angular/core';
import { Observable } from 'rxjs';
import { map, startWith } from 'rxjs/operators';
import { fromCmEvent } from '../util/from-cm-event';
export class StatusbarService {
constructor() {
/**
* The default statusbar setup.
*/
this.DEFAULT_STATUSBAR = ['wordCount', 'characterCount', '|', 'cursorPosition'];
}
/**
* The default configurations of all items.
*/
get DEFAULT_ITEMS() {
return this._defaultItems;
}
/**
* Returns the default configuration of the item with the specified name.
* Returns `undefined`, if no item with the specified name can be found.
*/
getDefaultItem(itemName) {
return this.DEFAULT_ITEMS.find((i) => i.name === itemName);
}
/**
* Defines the default statusbar items.
* Cannot be done statically as the values depend on the `MarkdownEditor` instance.
*/
defineDefaultItems(mde) {
const defaultItems = [
{
name: 'wordCount',
value: fromCmEvent(mde.cm, 'changes').pipe(startWith(true), map(() => 'Words: ' + mde.getWordCount().toString())),
},
{
name: 'characterCount',
value: fromCmEvent(mde.cm, 'changes').pipe(startWith(true), map(() => 'Characters: ' + mde.getCharacterCount().toString())),
},
{
name: 'cursorPosition',
value: fromCmEvent(mde.cm, 'cursorActivity').pipe(startWith(true), map(() => {
const pos = mde.getCursorPos();
return `${pos.line}:${pos.ch}`;
})),
},
// Normalize separator item to reduce type complexity in template.
// Effectively, only the `name` property is needed.
{
name: '|',
value: new Observable(),
},
];
this._defaultItems = defaultItems;
}
}
StatusbarService.decorators = [
{ type: Injectable }
];
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RhdHVzYmFyLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtbWFya2Rvd24tZWRpdG9yL3NyYy9saWIvc2VydmljZXMvc3RhdHVzYmFyLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUUzQyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ2xDLE9BQU8sRUFBRSxHQUFHLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFaEQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBR3BELE1BQU0sT0FBTyxnQkFBZ0I7SUFEN0I7UUFXRTs7V0FFRztRQUNJLHNCQUFpQixHQUF3QixDQUFDLFdBQVcsRUFBRSxnQkFBZ0IsRUFBRSxHQUFHLEVBQUUsZ0JBQWdCLENBQUMsQ0FBQztJQWtEekcsQ0FBQztJQTVEQzs7T0FFRztJQUNILElBQVcsYUFBYTtRQUN0QixPQUFPLElBQUksQ0FBQyxhQUFhLENBQUM7SUFDNUIsQ0FBQztJQU9EOzs7T0FHRztJQUNJLGNBQWMsQ0FBQyxRQUFnQjtRQUNwQyxPQUFPLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxLQUFLLFFBQVEsQ0FBQyxDQUFDO0lBQzdELENBQUM7SUFFRDs7O09BR0c7SUFDSSxrQkFBa0IsQ0FBQyxHQUFtQjtRQUMzQyxNQUFNLFlBQVksR0FBOEI7WUFDOUM7Z0JBQ0UsSUFBSSxFQUFFLFdBQVc7Z0JBQ2pCLEtBQUssRUFBRSxXQUFXLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxTQUFTLENBQUMsQ0FBQyxJQUFJLENBQ3hDLFNBQVMsQ0FBQyxJQUFJLENBQUMsRUFDZixHQUFHLENBQUMsR0FBRyxFQUFFLENBQUMsU0FBUyxHQUFHLEdBQUcsQ0FBQyxZQUFZLEVBQUUsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUNyRDthQUNGO1lBQ0Q7Z0JBQ0UsSUFBSSxFQUFFLGdCQUFnQjtnQkFDdEIsS0FBSyxFQUFFLFdBQVcsQ0FBQyxHQUFHLENBQUMsRUFBRSxFQUFFLFNBQVMsQ0FBQyxDQUFDLElBQUksQ0FDeEMsU0FBUyxDQUFDLElBQUksQ0FBQyxFQUNmLEdBQUcsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxjQUFjLEdBQUcsR0FBRyxDQUFDLGlCQUFpQixFQUFFLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FDL0Q7YUFDRjtZQUNEO2dCQUNFLElBQUksRUFBRSxnQkFBZ0I7Z0JBQ3RCLEtBQUssRUFBRSxXQUFXLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxnQkFBZ0IsQ0FBQyxDQUFDLElBQUksQ0FDL0MsU0FBUyxDQUFDLElBQUksQ0FBQyxFQUNmLEdBQUcsQ0FBQyxHQUFHLEVBQUU7b0JBQ1AsTUFBTSxHQUFHLEdBQUcsR0FBRyxDQUFDLFlBQVksRUFBRSxDQUFDO29CQUMvQixPQUFPLEdBQUcsR0FBRyxDQUFDLElBQUksSUFBSSxHQUFHLENBQUMsRUFBRSxFQUFFLENBQUM7Z0JBQ2pDLENBQUMsQ0FBQyxDQUNIO2FBQ0Y7WUFDRCxrRUFBa0U7WUFDbEUsbURBQW1EO1lBQ25EO2dCQUNFLElBQUksRUFBRSxHQUFHO2dCQUNULEtBQUssRUFBRSxJQUFJLFVBQVUsRUFBRTthQUN4QjtTQUNGLENBQUM7UUFFRixJQUFJLENBQUMsYUFBYSxHQUFHLFlBQVksQ0FBQztJQUNwQyxDQUFDOzs7WUEvREYsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE1hcmtkb3duRWRpdG9yIH0gZnJvbSAnQG1kZWZ5L21hcmtkb3duLWVkaXRvci1jb3JlJztcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IG1hcCwgc3RhcnRXaXRoIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgU3RhdHVzYmFySXRlbU5hbWUsIFN0YXR1c2Jhckl0ZW1Ob3JtYWxpemVkIH0gZnJvbSAnLi4vdHlwZXMvc3RhdHVzYmFyJztcbmltcG9ydCB7IGZyb21DbUV2ZW50IH0gZnJvbSAnLi4vdXRpbC9mcm9tLWNtLWV2ZW50JztcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIFN0YXR1c2JhclNlcnZpY2Uge1xuICBwcml2YXRlIF9kZWZhdWx0SXRlbXM6IFN0YXR1c2Jhckl0ZW1Ob3JtYWxpemVkW107XG5cbiAgLyoqXG4gICAqIFRoZSBkZWZhdWx0IGNvbmZpZ3VyYXRpb25zIG9mIGFsbCBpdGVtcy5cbiAgICovXG4gIHB1YmxpYyBnZXQgREVGQVVMVF9JVEVNUygpOiBTdGF0dXNiYXJJdGVtTm9ybWFsaXplZFtdIHtcbiAgICByZXR1cm4gdGhpcy5fZGVmYXVsdEl0ZW1zO1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSBkZWZhdWx0IHN0YXR1c2JhciBzZXR1cC5cbiAgICovXG4gIHB1YmxpYyBERUZBVUxUX1NUQVRVU0JBUjogU3RhdHVzYmFySXRlbU5hbWVbXSA9IFsnd29yZENvdW50JywgJ2NoYXJhY3RlckNvdW50JywgJ3wnLCAnY3Vyc29yUG9zaXRpb24nXTtcblxuICAvKipcbiAgICogUmV0dXJucyB0aGUgZGVmYXVsdCBjb25maWd1cmF0aW9uIG9mIHRoZSBpdGVtIHdpdGggdGhlIHNwZWNpZmllZCBuYW1lLlxuICAgKiBSZXR1cm5zIGB1bmRlZmluZWRgLCBpZiBubyBpdGVtIHdpdGggdGhlIHNwZWNpZmllZCBuYW1lIGNhbiBiZSBmb3VuZC5cbiAgICovXG4gIHB1YmxpYyBnZXREZWZhdWx0SXRlbShpdGVtTmFtZTogc3RyaW5nKTogU3RhdHVzYmFySXRlbU5vcm1hbGl6ZWQgfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLkRFRkFVTFRfSVRFTVMuZmluZCgoaSkgPT4gaS5uYW1lID09PSBpdGVtTmFtZSk7XG4gIH1cblxuICAvKipcbiAgICogRGVmaW5lcyB0aGUgZGVmYXVsdCBzdGF0dXNiYXIgaXRlbXMuXG4gICAqIENhbm5vdCBiZSBkb25lIHN0YXRpY2FsbHkgYXMgdGhlIHZhbHVlcyBkZXBlbmQgb24gdGhlIGBNYXJrZG93bkVkaXRvcmAgaW5zdGFuY2UuXG4gICAqL1xuICBwdWJsaWMgZGVmaW5lRGVmYXVsdEl0ZW1zKG1kZTogTWFya2Rvd25FZGl0b3IpIHtcbiAgICBjb25zdCBkZWZhdWx0SXRlbXM6IFN0YXR1c2Jhckl0ZW1Ob3JtYWxpemVkW10gPSBbXG4gICAgICB7XG4gICAgICAgIG5hbWU6ICd3b3JkQ291bnQnLFxuICAgICAgICB2YWx1ZTogZnJvbUNtRXZlbnQobWRlLmNtLCAnY2hhbmdlcycpLnBpcGUoXG4gICAgICAgICAgc3RhcnRXaXRoKHRydWUpLFxuICAgICAgICAgIG1hcCgoKSA9PiAnV29yZHM6ICcgKyBtZGUuZ2V0V29yZENvdW50KCkudG9TdHJpbmcoKSlcbiAgICAgICAgKSxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIG5hbWU6ICdjaGFyYWN0ZXJDb3VudCcsXG4gICAgICAgIHZhbHVlOiBmcm9tQ21FdmVudChtZGUuY20sICdjaGFuZ2VzJykucGlwZShcbiAgICAgICAgICBzdGFydFdpdGgodHJ1ZSksXG4gICAgICAgICAgbWFwKCgpID0+ICdDaGFyYWN0ZXJzOiAnICsgbWRlLmdldENoYXJhY3RlckNvdW50KCkudG9TdHJpbmcoKSlcbiAgICAgICAgKSxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIG5hbWU6ICdjdXJzb3JQb3NpdGlvbicsXG4gICAgICAgIHZhbHVlOiBmcm9tQ21FdmVudChtZGUuY20sICdjdXJzb3JBY3Rpdml0eScpLnBpcGUoXG4gICAgICAgICAgc3RhcnRXaXRoKHRydWUpLFxuICAgICAgICAgIG1hcCgoKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBwb3MgPSBtZGUuZ2V0Q3Vyc29yUG9zKCk7XG4gICAgICAgICAgICByZXR1cm4gYCR7cG9zLmxpbmV9OiR7cG9zLmNofWA7XG4gICAgICAgICAgfSlcbiAgICAgICAgKSxcbiAgICAgIH0sXG4gICAgICAvLyBOb3JtYWxpemUgc2VwYXJhdG9yIGl0ZW0gdG8gcmVkdWNlIHR5cGUgY29tcGxleGl0eSBpbiB0ZW1wbGF0ZS5cbiAgICAgIC8vIEVmZmVjdGl2ZWx5LCBvbmx5IHRoZSBgbmFtZWAgcHJvcGVydHkgaXMgbmVlZGVkLlxuICAgICAge1xuICAgICAgICBuYW1lOiAnfCcsXG4gICAgICAgIHZhbHVlOiBuZXcgT2JzZXJ2YWJsZSgpLFxuICAgICAgfSxcbiAgICBdO1xuXG4gICAgdGhpcy5fZGVmYXVsdEl0ZW1zID0gZGVmYXVsdEl0ZW1zO1xuICB9XG59XG4iXX0=