|
|
|
|
@ -4,32 +4,26 @@ const regex_non_whitespace_characters = /[^ \r\n\f\v\t]/;
|
|
|
|
|
|
|
|
|
|
/** @extends Node */
|
|
|
|
|
export default class AbstractBlock extends Node {
|
|
|
|
|
|
|
|
|
|
/** @type {import('../../render_dom/Block.js').default} */
|
|
|
|
|
block;
|
|
|
|
|
|
|
|
|
|
/** @type {import('../interfaces.js').INode[]} */
|
|
|
|
|
children;
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* @param {import('../../Component.js').default} component
|
|
|
|
|
* @param {any} parent
|
|
|
|
|
* @param {any} scope
|
|
|
|
|
* @param {any} info
|
|
|
|
|
*/
|
|
|
|
|
constructor(component, parent, scope, info) {
|
|
|
|
|
super(component, parent, scope, info);
|
|
|
|
|
}
|
|
|
|
|
warn_if_empty_block() {
|
|
|
|
|
if (!this.children || this.children.length > 1)
|
|
|
|
|
return;
|
|
|
|
|
const child = this.children[0];
|
|
|
|
|
if (!child || (child.type === 'Text' && !regex_non_whitespace_characters.test(child.data))) {
|
|
|
|
|
this.component.warn(this, compiler_warnings.empty_block);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
/** @type {import('../../render_dom/Block.js').default} */
|
|
|
|
|
block;
|
|
|
|
|
|
|
|
|
|
/** @type {import('../interfaces.js').INode[]} */
|
|
|
|
|
children;
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* @param {import('../../Component.js').default} component
|
|
|
|
|
* @param {any} parent
|
|
|
|
|
* @param {any} scope
|
|
|
|
|
* @param {any} info
|
|
|
|
|
*/
|
|
|
|
|
constructor(component, parent, scope, info) {
|
|
|
|
|
super(component, parent, scope, info);
|
|
|
|
|
}
|
|
|
|
|
warn_if_empty_block() {
|
|
|
|
|
if (!this.children || this.children.length > 1) return;
|
|
|
|
|
const child = this.children[0];
|
|
|
|
|
if (!child || (child.type === 'Text' && !regex_non_whitespace_characters.test(child.data))) {
|
|
|
|
|
this.component.warn(this, compiler_warnings.empty_block);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|