Convert src/compiler/compile/render_dom/wrappers/Body.ts to JavaScript

pull/8569/head
Simon Holthausen 3 years ago
parent 788902480c
commit da1c1971cf

@ -9,6 +9,8 @@ import Expression from '../../nodes/shared/Expression.js';
/** @extends Wrapper */
class AwaitBlockBranch extends Wrapper {
/** @typedef {'pending' | 'then' | 'catch'} Status */
/** @type {AwaitBlockWrapper} */
parent;
@ -97,7 +99,7 @@ class AwaitBlockBranch extends Wrapper {
/**
* @param {import('../../nodes/PendingBlock.js').default | import('../../nodes/ThenBlock.js').default | import('../../nodes/CatchBlock.js').default} node
* @returns {boolean}
* @returns {node is import('../../nodes/ThenBlock.js').default | import('../../nodes/CatchBlock.js').default}
*/
has_consts(node) {
return node instanceof ThenBlock || node instanceof CatchBlock;
@ -182,7 +184,7 @@ export default class AwaitBlockWrapper extends Wrapper {
let is_dynamic = false;
let has_intros = false;
let has_outros = false;
['pending', 'then', 'catch'].forEach((status) => {
/** @type {const} */ (['pending', 'then', 'catch']).forEach((status) => {
const child = this.node[status];
const branch = new AwaitBlockBranch(
status,
@ -312,5 +314,3 @@ export default class AwaitBlockWrapper extends Wrapper {
});
}
}
/** @typedef {'pending' | 'then' | 'catch'} Status */

@ -1,25 +1,40 @@
import Block from '../Block';
import Wrapper from './shared/Wrapper';
import Wrapper from './shared/Wrapper.js';
import { x } from 'code-red';
import Body from '../../nodes/Body';
import { Identifier } from 'estree';
import EventHandler from './Element/EventHandler';
import add_event_handlers from './shared/add_event_handlers';
import { TemplateNode } from '../../../interfaces';
import Renderer from '../Renderer';
import add_actions from './shared/add_actions';
import EventHandler from './Element/EventHandler.js';
import add_event_handlers from './shared/add_event_handlers.js';
import add_actions from './shared/add_actions.js';
/** @extends Wrapper */
export default class BodyWrapper extends Wrapper {
node: Body;
handlers: EventHandler[];
constructor(renderer: Renderer, block: Block, parent: Wrapper, node: TemplateNode) {
super(renderer, block, parent, node);
this.handlers = this.node.handlers.map((handler) => new EventHandler(handler, this));
}
render(block: Block, _parent_node: Identifier, _parent_nodes: Identifier) {
add_event_handlers(block, x`@_document.body`, this.handlers);
add_actions(block, x`@_document.body`, this.node.actions);
}
/** @type {import('../../nodes/Body.js').default} */
node;
/** @type {import('./Element/EventHandler.js').default[]} */
handlers;
/**
* @param {import('../Renderer.js').default} renderer
* @param {import('../Block.js').default} block
* @param {import('./shared/Wrapper.js').default} parent
* @param {import('../../../interfaces.js').TemplateNode} node
*/
constructor(renderer, block, parent, node) {
super(renderer, block, parent, node);
this.handlers = this.node.handlers.map((handler) => new EventHandler(handler, this));
}
/**
* @param {import('../Block.js').default} block
* @param {import('estree').Identifier} _parent_node
* @param {import('estree').Identifier} _parent_nodes
*/
render(block, _parent_node, _parent_nodes) {
add_event_handlers(block, x `@_document.body`, this.handlers);
add_actions(block, x `@_document.body`, this.node.actions);
}
}

Loading…
Cancel
Save