devextreme
Version:
HTML5 JavaScript Component Suite for Responsive Web Development
103 lines (101 loc) • 2.89 kB
JavaScript
/**
* DevExtreme (cjs/__internal/ui/text_box/texteditor_button_collection/m_button.js)
* Version: 24.2.6
* Build date: Mon Mar 17 2025
*
* Copyright (c) 2012 - 2025 Developer Express Inc. ALL RIGHTS RESERVED
* Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/
*/
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
var _renderer = _interopRequireDefault(require("../../../../core/renderer"));
function _interopRequireDefault(e) {
return e && e.__esModule ? e : {
default: e
}
}
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 = (0, _renderer.default)("<div>").appendTo($container)
}
_addToContainer($element) {
const {
$placeMarker: $placeMarker,
$container: $container
} = this;
if ($placeMarker) {
$placeMarker.replaceWith($element)
} else {
$element.appendTo($container)
}
}
_attachEvents(instance, $element) {
throw "Not implemented"
}
_create() {
throw "Not implemented"
}
_isRendered() {
return !!this.instance
}
_isVisible() {
const {
editor: editor,
options: options
} = this;
return options.visible || !editor.option("readOnly")
}
_isDisabled() {
throw "Not implemented"
}
_shouldRender() {
return this._isVisible() && !this._isRendered()
}
dispose() {
const {
instance: instance,
$placeMarker: $placeMarker
} = this;
if (instance) {
if (instance.dispose) {
instance.dispose()
} else {
instance.remove()
}
this.instance = null
}
$placeMarker && $placeMarker.remove()
}
render() {
let $container = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : this.$container;
this.$container = $container;
if (this._isVisible()) {
const {
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
}
}
exports.default = TextEditorButton;