UNPKG

devextreme

Version:

HTML5 JavaScript Component Suite for Responsive Web Development

103 lines (101 loc) 2.89 kB
/** * 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;