| Server IP : 54.94.228.101 / Your IP : 172.28.1.13 Web Server : Apache System : Linux ip-172-28-29-189 6.5.0-1014-aws #14~22.04.1-Ubuntu SMP Thu Feb 15 15:27:06 UTC 2024 x86_64 User : www-data ( 33) PHP Version : 7.2.34-43+ubuntu22.04.1+deb.sury.org+1 Disable Function : pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_get_handler,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,pcntl_async_signals, MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : OFF | Sudo : ON | Pkexec : ON Directory : /var/www/html/vinumday2_0/public/plugins/@ckeditor/ckeditor5-ui/src/editorui/ |
Upload File : |
/**
* @license Copyright (c) 2003-2020, CKSource - Frederico Knabben. All rights reserved.
* For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license
*/
/**
* @module ui/editorui/bodycollection
*/
/* globals document */
import Template from '../template';
import ViewCollection from '../viewcollection';
import createElement from '@ckeditor/ckeditor5-utils/src/dom/createelement';
/**
* This is a special {@link module:ui/viewcollection~ViewCollection} dedicated to elements that are detached
* from the DOM structure of the editor, like panels, icons, etc.
*
* The body collection is available in the {@link module:ui/editorui/editoruiview~EditorUIView#body `editor.ui.view.body`} property.
* Any plugin can add a {@link module:ui/view~View view} to this collection.
* These views will render in a container placed directly in the `<body>` element.
* The editor will detach and destroy this collection when the editor will be {@link module:core/editor/editor~Editor#destroy destroyed}.
*
* If you need to control the life cycle of the body collection on your own, you can create your own instance of this class.
*
* A body collection will render itself automatically in the DOM body element as soon as you call {@link ~BodyCollection#attachToDom}.
* If you create multiple body collections, this class will create a special wrapper element in the DOM to limit the number of
* elements created directly in the body and remove it when the last body collection will be
* {@link ~BodyCollection#detachFromDom detached}.
*
* @extends module:ui/viewcollection~ViewCollection
*/
export default class BodyCollection extends ViewCollection {
/**
* Creates a new instance of the {@link module:ui/editorui/bodycollection~BodyCollection}.
*
* @param {module:utils/locale~Locale} locale The {@link module:core/editor/editor~Editor editor's locale} instance.
* @param {Iterable.<module:ui/view~View>} [initialItems] The initial items of the collection.
*/
constructor( locale, initialItems = [] ) {
super( initialItems );
/**
* The {@link module:core/editor/editor~Editor#locale editor's locale} instance.
* See the view {@link module:ui/view~View#locale locale} property.
*
* @member {module:utils/locale~Locale}
*/
this.locale = locale;
}
/**
* Attaches the body collection to the DOM body element. You need to execute this method to render the content of
* the body collection.
*/
attachToDom() {
/**
* The element holding elements of the body region.
*
* @protected
* @member {HTMLElement} #_bodyCollectionContainer
*/
this._bodyCollectionContainer = new Template( {
tag: 'div',
attributes: {
class: [
'ck',
'ck-reset_all',
'ck-body',
'ck-rounded-corners'
],
dir: this.locale.uiLanguageDirection
},
children: this
} ).render();
let wrapper = document.querySelector( '.ck-body-wrapper' );
if ( !wrapper ) {
wrapper = createElement( document, 'div', { class: 'ck-body-wrapper' } );
document.body.appendChild( wrapper );
}
wrapper.appendChild( this._bodyCollectionContainer );
}
/**
* Detaches the collection from the DOM structure. Use this method when you do not need to use the body collection
* anymore to clean-up the DOM structure.
*/
detachFromDom() {
super.destroy();
if ( this._bodyCollectionContainer ) {
this._bodyCollectionContainer.remove();
}
const wrapper = document.querySelector( '.ck-body-wrapper' );
if ( wrapper && wrapper.childElementCount == 0 ) {
wrapper.remove();
}
}
}