| Server IP : 54.233.248.239 / Your IP : 172.28.20.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-utils/src/dom/ |
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 utils/dom/createelement
*/
import isIterable from '../isiterable';
import { isString } from 'lodash-es';
/**
* Creates element with attributes and children.
*
* createElement( document, 'p' ); // <p>
* createElement( document, 'p', { class: 'foo' } ); // <p class="foo">
* createElement( document, 'p', null, 'foo' ); // <p>foo</p>
* createElement( document, 'p', null, [ 'foo', createElement( document, 'img' ) ] ); // <p>foo<img></p>
*
* @param {Document} doc Document used to create element.
* @param {String} name Name of the element.
* @param {Object} [attributes] Object keys will become attributes keys and object values will became attributes values.
* @param {Node|String|Array.<Node|String>} [children] Child or array of children. Strings will be automatically turned
* into Text nodes.
* @returns {Element} Created element.
*/
export default function createElement( doc, name, attributes = {}, children = [] ) {
const namespace = attributes && attributes.xmlns;
const element = namespace ? doc.createElementNS( namespace, name ) : doc.createElement( name );
for ( const key in attributes ) {
element.setAttribute( key, attributes[ key ] );
}
if ( isString( children ) || !isIterable( children ) ) {
children = [ children ];
}
for ( let child of children ) {
if ( isString( child ) ) {
child = doc.createTextNode( child );
}
element.appendChild( child );
}
return element;
}