|
|
@ -1,20 +1,19 @@
|
|
|
|
import Component from './Component.js';
|
|
|
|
import visitComponent from './Component.js';
|
|
|
|
import isVoidElementName from '../../../utils/isVoidElementName.js';
|
|
|
|
import isVoidElementName from '../../../utils/isVoidElementName.js';
|
|
|
|
import visit from '../visit.js';
|
|
|
|
import visit from '../visit.js';
|
|
|
|
import Window from './meta/Window.js';
|
|
|
|
import visitWindow from './meta/Window.js';
|
|
|
|
|
|
|
|
|
|
|
|
const meta = {
|
|
|
|
const meta = {
|
|
|
|
':Window': Window
|
|
|
|
':Window': visitWindow
|
|
|
|
};
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
export default {
|
|
|
|
export default function visitElement ( generator, node ) {
|
|
|
|
enter ( generator, node ) {
|
|
|
|
|
|
|
|
if ( node.name in meta ) {
|
|
|
|
if ( node.name in meta ) {
|
|
|
|
return meta[ node.name ].enter( generator, node );
|
|
|
|
return meta[ node.name ]( generator, node );
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
if ( generator.components.has( node.name ) || node.name === ':Self' ) {
|
|
|
|
if ( generator.components.has( node.name ) || node.name === ':Self' ) {
|
|
|
|
Component.enter( generator, node );
|
|
|
|
visitComponent( generator, node );
|
|
|
|
return;
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
@ -47,26 +46,15 @@ export default {
|
|
|
|
|
|
|
|
|
|
|
|
generator.append( openingTag );
|
|
|
|
generator.append( openingTag );
|
|
|
|
|
|
|
|
|
|
|
|
this.elementDepth += 1;
|
|
|
|
generator.elementDepth += 1;
|
|
|
|
|
|
|
|
|
|
|
|
node.children.forEach( child => {
|
|
|
|
node.children.forEach( child => {
|
|
|
|
visit( child, generator );
|
|
|
|
visit( child, generator );
|
|
|
|
});
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
|
|
this.elementDepth -= 1;
|
|
|
|
generator.elementDepth -= 1;
|
|
|
|
|
|
|
|
|
|
|
|
if ( node.name in meta ) {
|
|
|
|
|
|
|
|
if ( meta[ node.name ].leave ) meta[ node.name ].leave( generator, node );
|
|
|
|
|
|
|
|
return;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if ( generator.components.has( node.name ) || node.name === ':Self' ) {
|
|
|
|
|
|
|
|
Component.leave( generator, node );
|
|
|
|
|
|
|
|
return;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if ( !isVoidElementName( node.name ) ) {
|
|
|
|
if ( !isVoidElementName( node.name ) ) {
|
|
|
|
generator.append( `</${node.name}>` );
|
|
|
|
generator.append( `</${node.name}>` );
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
};
|
|
|
|
|
|
|
|