Convert src/compiler/compile/render_dom/wrappers/InlineComponent/index.ts to JavaScript

pull/8569/head
Simon Holthausen 3 years ago
parent 461dda587e
commit 94efa51b4d

@ -37,6 +37,7 @@ import {
import create_debugging_comment from '../shared/create_debugging_comment.js'; import create_debugging_comment from '../shared/create_debugging_comment.js';
import { push_array } from '../../../../utils/push_array.js'; import { push_array } from '../../../../utils/push_array.js';
import CommentWrapper from '../Comment.js'; import CommentWrapper from '../Comment.js';
const regex_contains_radio_or_checkbox_or_file = /radio|checkbox|file/; const regex_contains_radio_or_checkbox_or_file = /radio|checkbox|file/;
const regex_contains_radio_or_checkbox_or_range_or_file = /radio|checkbox|range|file/; const regex_contains_radio_or_checkbox_or_range_or_file = /radio|checkbox|range|file/;
const events = [ const events = [
@ -504,6 +505,7 @@ export default class ElementWrapper extends Wrapper {
// skip textcontent for <template>. append nodes to TemplateElement.content instead // skip textcontent for <template>. append nodes to TemplateElement.content instead
if (can_optimise_to_html_string) { if (can_optimise_to_html_string) {
if (this.fragment.nodes.length === 1 && this.fragment.nodes[0].node.type === 'Text') { if (this.fragment.nodes.length === 1 && this.fragment.nodes[0].node.type === 'Text') {
/** @type {import('estree').Node} */
let text = string_literal( let text = string_literal(
/** @type {import('../Text.js').default} */ (this.fragment.nodes[0]).data /** @type {import('../Text.js').default} */ (this.fragment.nodes[0]).data
); );
@ -525,6 +527,7 @@ export default class ElementWrapper extends Wrapper {
value: { raw: '' } value: { raw: '' }
} }
}; };
/** @type {import('estree').Node} */
let literal = { let literal = {
type: 'TemplateLiteral', type: 'TemplateLiteral',
expressions: [], expressions: [],
@ -633,15 +636,15 @@ export default class ElementWrapper extends Wrapper {
}: true` }: true`
); );
/** @type {Class<x>>} */ /** @type {string | ReturnType<typeof x>} */
let reference; let reference;
if (this.node.tag_expr.node.type === 'Literal') { if (this.node.tag_expr.node.type === 'Literal') {
if (this.node.namespace) { if (this.node.namespace) {
reference = `"${this.node.tag_expr.node.value}"`; reference = `"${this.node.tag_expr.node.value}"`;
} else { } else {
reference = `"${( reference = `"${
/** @type {String} */ (this.node.tag_expr.node.value) || '' /** @type {String} */ (this.node.tag_expr.node.value || '').toUpperCase()
).toUpperCase()}"`; }"`;
} }
} else if (this.node.namespace) { } else if (this.node.namespace) {
reference = x`${this.node.tag_expr.manipulate(block)}`; reference = x`${this.node.tag_expr.manipulate(block)}`;
@ -660,6 +663,8 @@ export default class ElementWrapper extends Wrapper {
/** @param {import('../../Block.js').default} block */ /** @param {import('../../Block.js').default} block */
add_directives_in_order(block) { add_directives_in_order(block) {
/** @typedef {EventHandler | BindingGroup | Binding | Action} OrderedAttribute */
const binding_groups = events const binding_groups = events
.map((event) => ({ .map((event) => ({
events: event.event_names, events: event.event_names,
@ -1121,7 +1126,7 @@ export default class ElementWrapper extends Wrapper {
${outro && b`@add_transform(${this.var}, ${rect});`} ${outro && b`@add_transform(${this.var}, ${rect});`}
`); `);
/** @type {Class<x>>} */ /** @type {import('estree').Node | ReturnType<typeof x>} */
let params; let params;
if (this.node.animation.expression) { if (this.node.animation.expression) {
params = this.node.animation.expression.manipulate(block); params = this.node.animation.expression.manipulate(block);

Loading…
Cancel
Save