UNPKG

jodit

Version:

Jodit is awesome and usefully wysiwyg editor with filebrowser

144 lines (116 loc) 3.37 kB
/*! * Jodit Editor (https://xdsoft.net/jodit/) * Licensed under GNU General Public License version 2 or later or a commercial license or MIT; * For GPL see LICENSE-GPL.txt in the project root for license information. * For MIT see LICENSE-MIT.txt in the project root for license information. * For commercial licenses see https://xdsoft.net/jodit/commercial/ * Copyright (c) 2013-2019 Valeriy Chupurnov. All rights reserved. https://xdsoft.net */ import { IDictionary, IEventsNative } from '../../types'; import { IViewBased, IViewOptions } from '../../types/view'; import { Component } from '../Component'; import { EventsNative } from '../events/eventsNative'; import { Panel } from './panel'; declare let appVersion: string; export class View extends Panel implements IViewBased { /** * @property{string} ID attribute for source element, id add {id}_editor it's editor's id */ public id: string; public version: string = appVersion; // from webpack.config.js private __modulesInstances: IDictionary<Component> = {}; /** * Return default timeout period in milliseconds for some debounce or throttle functions. * By default return {observer.timeout} options * * @return {number} */ get defaultTimeout(): number { return 100; } /** * Some extra data inside editor * * @type {{}} * @see copyformat plugin */ public buffer: IDictionary; /** * progress_bar Progress bar */ public progress_bar: HTMLDivElement = this.create.div( 'jodit_progress_bar', this.create.div() ); public options: IViewOptions = { removeButtons: [], zIndex: 100002, fullsize: false, showTooltip: true, useNativeTooltip: false, buttons: [], globalFullsize: true }; public events: IEventsNative; public components: any = []; i18n(text: string, ...params: Array<string | number>): string { return this.jodit && this.jodit !== this ? this.jodit.i18n(text, ...params) : Jodit.prototype.i18n(text, ...params); } /** * @override * @param isFullSize */ toggleFullSize(isFullSize?: boolean) { super.toggleFullSize(isFullSize); if (this.events) { this.events.fire('toggleFullSize', isFullSize); } } public getInstance<T = Component>(moduleName: string, options?: object): T { if (typeof Jodit.modules[moduleName] !== 'function') { throw new Error('Need real module name'); } if (this.__modulesInstances[moduleName] === undefined) { this.__modulesInstances[moduleName] = new Jodit.modules[moduleName]( this.jodit || this, options ); } return this.__modulesInstances[moduleName] as any; } /** * Return current version * * @method getVersion * @return {string} */ public getVersion = (): string => { return this.version; }; constructor(jodit?: IViewBased, options?: IViewOptions) { super(jodit); this.id = jodit && jodit.id ? jodit.id : new Date().getTime().toString(); this.jodit = jodit || this; this.events = jodit && jodit.events ? jodit.events : new EventsNative(this.ownerDocument); this.buffer = jodit && jodit.buffer ? jodit.buffer : {}; this.options = { ...this.options, ...options }; } destruct() { if (this.isDestructed) { return; } if (this.events) { this.events.destruct(); delete this.events; } delete this.options; super.destruct(); } } import { Jodit } from '../../Jodit';