devextreme
Version:
HTML5 JavaScript Component Suite for Responsive Web Development
83 lines (82 loc) • 2.42 kB
JavaScript
/**
* DevExtreme (esm/ui/text_box/texteditor_button_collection/button.js)
* Version: 21.1.4
* Build date: Mon Jun 21 2021
*
* Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED
* Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/
*/
import $ from "../../../core/renderer";
export default class TextEditorButton {
constructor(name, editor, options) {
this.instance = null;
this.$container = null;
this.$placeMarker = null;
this.editor = editor;
this.name = name;
this.options = options || {}
}
_addPlaceMarker($container) {
this.$placeMarker = $("<div>").appendTo($container)
}
_addToContainer($element) {
var {
$placeMarker: $placeMarker,
$container: $container
} = this;
$placeMarker ? $placeMarker.replaceWith($element) : $element.appendTo($container)
}
_attachEvents() {
throw "Not implemented"
}
_create() {
throw "Not implemented"
}
_isRendered() {
return !!this.instance
}
_isVisible() {
var {
editor: editor,
options: options
} = this;
return options.visible || !editor.option("readOnly")
}
_isDisabled() {
throw "Not implemented"
}
_shouldRender() {
return this._isVisible() && !this._isRendered()
}
dispose() {
var {
instance: instance,
$placeMarker: $placeMarker
} = this;
if (instance) {
instance.dispose ? instance.dispose() : instance.remove();
this.instance = null
}
$placeMarker && $placeMarker.remove()
}
render() {
var $container = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : this.$container;
this.$container = $container;
if (this._isVisible()) {
var {
instance: instance,
$element: $element
} = this._create();
this.instance = instance;
this._attachEvents(instance, $element)
} else {
this._addPlaceMarker($container)
}
}
update() {
if (this._shouldRender()) {
this.render()
}
return !!this.instance
}
}