Convert src/compiler/compile/render_dom/wrappers/shared/add_const_tags.ts to JavaScript

pull/8569/head
Simon Holthausen 3 years ago
parent e5d02f9dd6
commit 7922b63a3d

@ -9,6 +9,7 @@ import is_contextual from '../../../nodes/shared/is_contextual.js';
export default function add_actions(block, target, actions) { export default function add_actions(block, target, actions) {
actions.forEach((action) => add_action(block, target, action)); actions.forEach((action) => add_action(block, target, action));
} }
const regex_invalid_variable_identifier_characters = /[^a-zA-Z0-9_$]/g; const regex_invalid_variable_identifier_characters = /[^a-zA-Z0-9_$]/g;
/** /**

@ -1,47 +1,48 @@
import ConstTag from '../../../nodes/ConstTag'; import { b, x } from 'code-red';
import Block from '../../Block'; import Expression from '../../../nodes/shared/Expression.js';
import { b, Node, x } from 'code-red';
import Renderer from '../../Renderer';
import Expression from '../../../nodes/shared/Expression';
export function add_const_tags(block: Block, const_tags: ConstTag[], ctx: string) { /**
const const_tags_props = []; * @param {import('../../Block.js').default} block
const_tags.forEach((const_tag, i) => { * @param {import('../../../nodes/ConstTag.js').default[]} const_tags
const name = `#constants_${i}`; * @param {string} ctx
const_tags_props.push(b`const ${name} = ${const_tag.expression.manipulate(block, ctx)}`); */
const to_ctx = (name: string) => export function add_const_tags(block, const_tags, ctx) {
block.renderer.context_lookup.has(name) const const_tags_props = [];
? x`${ctx}[${block.renderer.context_lookup.get(name).index}]` const_tags.forEach((const_tag, i) => {
: ({ type: 'Identifier', name } as Node); const name = `#constants_${i}`;
const_tags_props.push(b `const ${name} = ${const_tag.expression.manipulate(block, ctx)}`);
const_tag.contexts.forEach((context) => { /** @param {string} name */
if (context.type === 'DestructuredVariable') { const to_ctx = (name) => block.renderer.context_lookup.has(name)
const_tags_props.push( ? x `${ctx}[${block.renderer.context_lookup.get(name).index}]`
b`${ctx}[${ : ( /** @type {import('code-red').Node} */({ type: 'Identifier', name }));
block.renderer.context_lookup.get(context.key.name).index const_tag.contexts.forEach((context) => {
}] = ${context.default_modifier(context.modifier({ type: 'Identifier', name }), to_ctx)}` if (context.type === 'DestructuredVariable') {
); const_tags_props.push(b `${ctx}[${block.renderer.context_lookup.get(context.key.name).index}] = ${context.default_modifier(context.modifier({ type: 'Identifier', name }), to_ctx)}`);
} else { }
const expression = new Expression( else {
block.renderer.component, const expression = new Expression(block.renderer.component, const_tag, const_tag.scope, context.key);
const_tag, const_tags_props.push(b `const ${context.property_name} = ${expression.manipulate(block, ctx)}`);
const_tag.scope, }
context.key });
); });
const_tags_props.push( return const_tags_props;
b`const ${context.property_name} = ${expression.manipulate(block, ctx)}`
);
}
});
});
return const_tags_props;
} }
export function add_const_tags_context(renderer: Renderer, const_tags: ConstTag[]) { /**
const_tags.forEach((const_tag) => { * @param {import('../../Renderer.js').default} renderer
const_tag.contexts.forEach((context) => { * @param {import('../../../nodes/ConstTag.js').default[]} const_tags
if (context.type !== 'DestructuredVariable') return; */
renderer.add_to_context(context.key.name, true); export function add_const_tags_context(renderer, const_tags) {
}); const_tags.forEach((const_tag) => {
}); const_tag.contexts.forEach((context) => {
if (context.type !== 'DestructuredVariable')
return;
renderer.add_to_context(context.key.name, true);
});
});
} }

Loading…
Cancel
Save