diff --git a/packages/svelte/src/compiler/phases/2-analyze/index.js b/packages/svelte/src/compiler/phases/2-analyze/index.js index 046d89a3c0..f4719251bd 100644 --- a/packages/svelte/src/compiler/phases/2-analyze/index.js +++ b/packages/svelte/src/compiler/phases/2-analyze/index.js @@ -482,7 +482,8 @@ export function analyze_component(root, source, options) { component_name: name, dev: options.dev, rootDir: options.rootDir, - runes + runes, + custom_renderer: custom_renderer }); // TODO remove all the ?? stuff, we don't need it now that we're validating the config @@ -535,7 +536,6 @@ export function analyze_component(root, source, options) { event_directive_node: null, uses_event_attributes: false, custom_element, - custom_renderer, inject_styles: css === 'injected' || is_custom_element, accessors: is_custom_element || diff --git a/packages/svelte/src/compiler/phases/2-analyze/visitors/AnimateDirective.js b/packages/svelte/src/compiler/phases/2-analyze/visitors/AnimateDirective.js index e1e431cc8b..8c5b1a6953 100644 --- a/packages/svelte/src/compiler/phases/2-analyze/visitors/AnimateDirective.js +++ b/packages/svelte/src/compiler/phases/2-analyze/visitors/AnimateDirective.js @@ -1,13 +1,14 @@ /** @import { Context } from '../types' */ /** @import { AST } from '#compiler'; */ import * as e from '../../../errors.js'; +import { custom_renderer } from '../../../state.js'; /** * @param {AST.AnimateDirective} node * @param {Context} context */ export function AnimateDirective(node, context) { - if (context.state.analysis.custom_renderer) { + if (custom_renderer) { e.incompatible_with_custom_renderer(node, '`animate:`'); } diff --git a/packages/svelte/src/compiler/phases/2-analyze/visitors/Attribute.js b/packages/svelte/src/compiler/phases/2-analyze/visitors/Attribute.js index f9e3e18724..2563eb6dcd 100644 --- a/packages/svelte/src/compiler/phases/2-analyze/visitors/Attribute.js +++ b/packages/svelte/src/compiler/phases/2-analyze/visitors/Attribute.js @@ -2,6 +2,7 @@ /** @import { Context } from '../types' */ import { cannot_be_set_statically, can_delegate_event } from '../../../../utils.js'; import { get_attribute_chunks, is_event_attribute } from '../../../utils/ast.js'; +import { custom_renderer } from '../../../state.js'; import { mark_subtree_dynamic } from './shared/fragment.js'; /** @@ -60,7 +61,7 @@ export function Attribute(node, context) { } // we can't delegate event handlers in a non dom environment - if (!context.state.analysis.custom_renderer) { + if (!custom_renderer) { node.metadata.delegated = parent?.type === 'RegularElement' && can_delegate_event(node.name.slice(2)); } diff --git a/packages/svelte/src/compiler/phases/2-analyze/visitors/BindDirective.js b/packages/svelte/src/compiler/phases/2-analyze/visitors/BindDirective.js index 5701ed438d..2fe202b302 100644 --- a/packages/svelte/src/compiler/phases/2-analyze/visitors/BindDirective.js +++ b/packages/svelte/src/compiler/phases/2-analyze/visitors/BindDirective.js @@ -12,6 +12,7 @@ import { binding_properties } from '../../bindings.js'; import fuzzymatch from '../../1-parse/utils/fuzzymatch.js'; import { is_content_editable_binding, is_svg } from '../../../../utils.js'; import { mark_subtree_dynamic } from './shared/fragment.js'; +import { custom_renderer } from '../../../state.js'; /** * @param {AST.BindDirective} node @@ -27,7 +28,7 @@ export function BindDirective(node, context) { parent?.type === 'SvelteDocument' || parent?.type === 'SvelteBody' ) { - if (context.state.analysis.custom_renderer) { + if (custom_renderer) { e.incompatible_with_custom_renderer(node, '`bind:`'); } if (node.name in binding_properties) { diff --git a/packages/svelte/src/compiler/phases/2-analyze/visitors/ExpressionTag.js b/packages/svelte/src/compiler/phases/2-analyze/visitors/ExpressionTag.js index 519dee6a97..adc0d2d91d 100644 --- a/packages/svelte/src/compiler/phases/2-analyze/visitors/ExpressionTag.js +++ b/packages/svelte/src/compiler/phases/2-analyze/visitors/ExpressionTag.js @@ -2,6 +2,7 @@ /** @import { Context } from '../types' */ import { is_tag_valid_with_parent } from '../../../../html-tree-validation.js'; import * as e from '../../../errors.js'; +import { custom_renderer } from '../../../state.js'; import { mark_subtree_dynamic } from './shared/fragment.js'; /** @@ -11,7 +12,7 @@ import { mark_subtree_dynamic } from './shared/fragment.js'; export function ExpressionTag(node, context) { const in_template = context.path.at(-1)?.type === 'Fragment'; - if (in_template && context.state.parent_element && !context.state.analysis.custom_renderer) { + if (in_template && context.state.parent_element && !custom_renderer) { const message = is_tag_valid_with_parent('#text', context.state.parent_element); if (message) { e.node_invalid_placement(node, message); diff --git a/packages/svelte/src/compiler/phases/2-analyze/visitors/HtmlTag.js b/packages/svelte/src/compiler/phases/2-analyze/visitors/HtmlTag.js index f5ba9cd3d3..55b0384105 100644 --- a/packages/svelte/src/compiler/phases/2-analyze/visitors/HtmlTag.js +++ b/packages/svelte/src/compiler/phases/2-analyze/visitors/HtmlTag.js @@ -3,13 +3,14 @@ import { mark_subtree_dynamic } from './shared/fragment.js'; import { validate_opening_tag } from './shared/utils.js'; import * as e from '../../../errors.js'; +import { custom_renderer } from '../../../state.js'; /** * @param {AST.HtmlTag} node * @param {Context} context */ export function HtmlTag(node, context) { - if (context.state.analysis.custom_renderer) { + if (custom_renderer) { e.incompatible_with_custom_renderer(node, '`@html`'); } if (context.state.analysis.runes) { diff --git a/packages/svelte/src/compiler/phases/2-analyze/visitors/OnDirective.js b/packages/svelte/src/compiler/phases/2-analyze/visitors/OnDirective.js index e9a3202505..f3f9c105b4 100644 --- a/packages/svelte/src/compiler/phases/2-analyze/visitors/OnDirective.js +++ b/packages/svelte/src/compiler/phases/2-analyze/visitors/OnDirective.js @@ -2,6 +2,7 @@ /** @import { Context } from '../types' */ import * as e from '../../../errors.js'; import * as w from '../../../warnings.js'; +import { custom_renderer } from '../../../state.js'; import { mark_subtree_dynamic } from './shared/fragment.js'; /** @@ -9,7 +10,7 @@ import { mark_subtree_dynamic } from './shared/fragment.js'; * @param {Context} context */ export function OnDirective(node, context) { - if (context.state.analysis.custom_renderer) { + if (custom_renderer) { e.incompatible_with_custom_renderer(node, '`on:`'); } diff --git a/packages/svelte/src/compiler/phases/2-analyze/visitors/RegularElement.js b/packages/svelte/src/compiler/phases/2-analyze/visitors/RegularElement.js index 383cebcaf6..6c7f80e37f 100644 --- a/packages/svelte/src/compiler/phases/2-analyze/visitors/RegularElement.js +++ b/packages/svelte/src/compiler/phases/2-analyze/visitors/RegularElement.js @@ -17,7 +17,7 @@ import { check_element } from './shared/a11y/index.js'; import { validate_element } from './shared/element.js'; import { mark_subtree_dynamic } from './shared/fragment.js'; import { object } from '../../../utils/ast.js'; -import { runes } from '../../../state.js'; +import { runes, custom_renderer } from '../../../state.js'; /** * @param {AST.RegularElement} node @@ -26,7 +26,7 @@ import { runes } from '../../../state.js'; export function RegularElement(node, context) { validate_element(node, context); - if (!context.state.analysis.custom_renderer) { + if (!custom_renderer) { check_element(node, context); } @@ -37,7 +37,7 @@ export function RegularElement(node, context) { if (node.name === 'textarea' && node.fragment.nodes.length > 0) { for (const attribute of node.attributes) { if (attribute.type === 'Attribute' && attribute.name === 'value') { - if (!context.state.analysis.custom_renderer) { + if (!custom_renderer) { e.textarea_invalid_content(node); } } @@ -117,7 +117,7 @@ export function RegularElement(node, context) { // We mark the subtree as dynamic so parent elements properly include the child init code if ( (is_customizable_select_element(node) || node.name === 'selectedcontent') && - !context.state.analysis.custom_renderer + !custom_renderer ) { // Mark the element's own fragment as dynamic so it's not treated as static node.fragment.metadata.dynamic = true; @@ -165,7 +165,7 @@ export function RegularElement(node, context) { mark_subtree_dynamic(context.path); } - if (context.state.parent_element && !context.state.analysis.custom_renderer) { + if (context.state.parent_element && !custom_renderer) { let past_parent = false; let only_warn = false; const ancestors = [context.state.parent_element]; @@ -227,7 +227,7 @@ export function RegularElement(node, context) { !is_void(node_name) && !is_svg(node_name) && !is_mathml(node_name) && - !context.state.analysis.custom_renderer + !custom_renderer ) { w.element_invalid_self_closing_tag(node, node.name); } diff --git a/packages/svelte/src/compiler/phases/2-analyze/visitors/SvelteBody.js b/packages/svelte/src/compiler/phases/2-analyze/visitors/SvelteBody.js index 1bd353b689..2061664f6b 100644 --- a/packages/svelte/src/compiler/phases/2-analyze/visitors/SvelteBody.js +++ b/packages/svelte/src/compiler/phases/2-analyze/visitors/SvelteBody.js @@ -1,6 +1,7 @@ /** @import { AST } from '#compiler' */ /** @import { Context } from '../types' */ import * as e from '../../../errors.js'; +import { custom_renderer } from '../../../state.js'; import { is_event_attribute } from '../../../utils/ast.js'; import { disallow_children } from './shared/special-element.js'; @@ -9,7 +10,7 @@ import { disallow_children } from './shared/special-element.js'; * @param {Context} context */ export function SvelteBody(node, context) { - if (context.state.analysis.custom_renderer) { + if (custom_renderer) { e.incompatible_with_custom_renderer(node, '``'); } diff --git a/packages/svelte/src/compiler/phases/2-analyze/visitors/SvelteDocument.js b/packages/svelte/src/compiler/phases/2-analyze/visitors/SvelteDocument.js index 067a228692..716ef01b8a 100644 --- a/packages/svelte/src/compiler/phases/2-analyze/visitors/SvelteDocument.js +++ b/packages/svelte/src/compiler/phases/2-analyze/visitors/SvelteDocument.js @@ -2,6 +2,7 @@ /** @import { Context } from '../types' */ import { disallow_children } from './shared/special-element.js'; import * as e from '../../../errors.js'; +import { custom_renderer } from '../../../state.js'; import { is_event_attribute } from '../../../utils/ast.js'; /** @@ -9,7 +10,7 @@ import { is_event_attribute } from '../../../utils/ast.js'; * @param {Context} context */ export function SvelteDocument(node, context) { - if (context.state.analysis.custom_renderer) { + if (custom_renderer) { e.incompatible_with_custom_renderer(node, '``'); } diff --git a/packages/svelte/src/compiler/phases/2-analyze/visitors/SvelteElement.js b/packages/svelte/src/compiler/phases/2-analyze/visitors/SvelteElement.js index 919ce897e0..c3f01cf6ab 100644 --- a/packages/svelte/src/compiler/phases/2-analyze/visitors/SvelteElement.js +++ b/packages/svelte/src/compiler/phases/2-analyze/visitors/SvelteElement.js @@ -5,6 +5,7 @@ import { is_text_attribute } from '../../../utils/ast.js'; import { check_element } from './shared/a11y/index.js'; import { validate_element } from './shared/element.js'; import { mark_subtree_dynamic } from './shared/fragment.js'; +import { custom_renderer } from '../../../state.js'; /** * @param {AST.SvelteElement} node @@ -13,7 +14,7 @@ import { mark_subtree_dynamic } from './shared/fragment.js'; export function SvelteElement(node, context) { validate_element(node, context); - if (!context.state.analysis.custom_renderer) { + if (!custom_renderer) { check_element(node, context); } diff --git a/packages/svelte/src/compiler/phases/2-analyze/visitors/SvelteHead.js b/packages/svelte/src/compiler/phases/2-analyze/visitors/SvelteHead.js index 253074e6a7..4a70ea078d 100644 --- a/packages/svelte/src/compiler/phases/2-analyze/visitors/SvelteHead.js +++ b/packages/svelte/src/compiler/phases/2-analyze/visitors/SvelteHead.js @@ -1,6 +1,7 @@ /** @import { AST } from '#compiler' */ /** @import { Context } from '../types' */ import * as e from '../../../errors.js'; +import { custom_renderer } from '../../../state.js'; import { mark_subtree_dynamic } from './shared/fragment.js'; /** @@ -8,7 +9,7 @@ import { mark_subtree_dynamic } from './shared/fragment.js'; * @param {Context} context */ export function SvelteHead(node, context) { - if (context.state.analysis.custom_renderer) { + if (custom_renderer) { e.incompatible_with_custom_renderer(node, '``'); } diff --git a/packages/svelte/src/compiler/phases/2-analyze/visitors/SvelteWindow.js b/packages/svelte/src/compiler/phases/2-analyze/visitors/SvelteWindow.js index ffaaa45258..2626a1bcea 100644 --- a/packages/svelte/src/compiler/phases/2-analyze/visitors/SvelteWindow.js +++ b/packages/svelte/src/compiler/phases/2-analyze/visitors/SvelteWindow.js @@ -2,6 +2,7 @@ /** @import { Context } from '../types' */ import { disallow_children } from './shared/special-element.js'; import * as e from '../../../errors.js'; +import { custom_renderer } from '../../../state.js'; import { is_event_attribute } from '../../../utils/ast.js'; /** @@ -9,7 +10,7 @@ import { is_event_attribute } from '../../../utils/ast.js'; * @param {Context} context */ export function SvelteWindow(node, context) { - if (context.state.analysis.custom_renderer) { + if (custom_renderer) { e.incompatible_with_custom_renderer(node, '``'); } diff --git a/packages/svelte/src/compiler/phases/2-analyze/visitors/Text.js b/packages/svelte/src/compiler/phases/2-analyze/visitors/Text.js index 410614531a..575fee7816 100644 --- a/packages/svelte/src/compiler/phases/2-analyze/visitors/Text.js +++ b/packages/svelte/src/compiler/phases/2-analyze/visitors/Text.js @@ -4,6 +4,7 @@ import { is_tag_valid_with_parent } from '../../../../html-tree-validation.js'; import { regex_bidirectional_control_characters, regex_not_whitespace } from '../../patterns.js'; import * as e from '../../../errors.js'; import * as w from '../../../warnings.js'; +import { custom_renderer } from '../../../state.js'; import { extract_svelte_ignore } from '../../../utils/extract_svelte_ignore.js'; /** @@ -17,7 +18,7 @@ export function Text(node, context) { parent.type === 'Fragment' && context.state.parent_element && regex_not_whitespace.test(node.data) && - !context.state.analysis.custom_renderer + !custom_renderer ) { const message = is_tag_valid_with_parent('#text', context.state.parent_element); if (message) { diff --git a/packages/svelte/src/compiler/phases/2-analyze/visitors/TransitionDirective.js b/packages/svelte/src/compiler/phases/2-analyze/visitors/TransitionDirective.js index 01a6229088..3b78997d2f 100644 --- a/packages/svelte/src/compiler/phases/2-analyze/visitors/TransitionDirective.js +++ b/packages/svelte/src/compiler/phases/2-analyze/visitors/TransitionDirective.js @@ -1,6 +1,7 @@ /** @import { AST } from '#compiler' */ /** @import { Context } from '../types' */ import * as e from '../../../errors.js'; +import { custom_renderer } from '../../../state.js'; import { mark_subtree_dynamic } from './shared/fragment.js'; @@ -9,7 +10,7 @@ import { mark_subtree_dynamic } from './shared/fragment.js'; * @param {Context} context */ export function TransitionDirective(node, context) { - if (context.state.analysis.custom_renderer) { + if (custom_renderer) { const directive = node.intro && node.outro ? '`transition:`' : node.intro ? '`in:`' : '`out:`'; e.incompatible_with_custom_renderer(node, directive); } diff --git a/packages/svelte/src/compiler/phases/2-analyze/visitors/shared/element.js b/packages/svelte/src/compiler/phases/2-analyze/visitors/shared/element.js index 925ea69dfb..959fa97fe9 100644 --- a/packages/svelte/src/compiler/phases/2-analyze/visitors/shared/element.js +++ b/packages/svelte/src/compiler/phases/2-analyze/visitors/shared/element.js @@ -4,6 +4,7 @@ import { get_attribute_expression, is_expression_attribute } from '../../../../u import { regex_illegal_attribute_character } from '../../../patterns.js'; import * as e from '../../../../errors.js'; import * as w from '../../../../warnings.js'; +import { custom_renderer } from '../../../../state.js'; import { validate_attribute, validate_attribute_name, @@ -79,12 +80,12 @@ export function validate_element(node, context) { validate_slot_attribute(context, attribute); } - if (attribute.name === 'is' && !context.state.analysis.custom_renderer) { + if (attribute.name === 'is' && !custom_renderer) { w.attribute_avoid_is(attribute); } const correct_name = react_attributes.get(attribute.name); - if (correct_name && !context.state.analysis.custom_renderer) { + if (correct_name && !custom_renderer) { w.attribute_invalid_property_name(attribute, attribute.name, correct_name); } diff --git a/packages/svelte/src/compiler/phases/3-transform/client/transform-client.js b/packages/svelte/src/compiler/phases/3-transform/client/transform-client.js index a4f9b9dfce..8ec7002c7d 100644 --- a/packages/svelte/src/compiler/phases/3-transform/client/transform-client.js +++ b/packages/svelte/src/compiler/phases/3-transform/client/transform-client.js @@ -6,7 +6,7 @@ import { walk } from 'zimmerframe'; import * as b from '#compiler/builders'; import { build_getter, is_state_source } from './utils.js'; import { render_stylesheet } from '../css/index.js'; -import { dev, filename } from '../../../state.js'; +import { dev, filename, custom_renderer } from '../../../state.js'; import { AnimateDirective } from './visitors/AnimateDirective.js'; import { ArrowFunctionExpression } from './visitors/ArrowFunctionExpression.js'; import { AssignmentExpression } from './visitors/AssignmentExpression.js'; @@ -138,13 +138,10 @@ const visitors = { VariableDeclaration }; -/** - * @param {string | undefined} custom_renderer_module - */ -function get_imports(custom_renderer_module) { +function get_imports() { const imports = [b.import_all('$', 'svelte/internal/client')]; - if (custom_renderer_module) { - imports.push(b.imports([['$renderer', '$renderer', true]], custom_renderer_module)); + if (custom_renderer) { + imports.push(b.imports([['$renderer', '$renderer', true]], custom_renderer)); } return imports; } @@ -162,7 +159,7 @@ export function client_component(analysis, options) { scope: analysis.module.scope, scopes: analysis.module.scopes, is_instance: false, - hoisted: [...get_imports(analysis.custom_renderer), ...analysis.instance_body.hoisted], + hoisted: [...get_imports(), ...analysis.instance_body.hoisted], node: /** @type {any} */ (null), // populated by the root node legacy_reactive_imports: [], legacy_reactive_statements: new Map(), @@ -575,11 +572,11 @@ export function client_component(analysis, options) { // disclose version attach the svelte version to `window` which is not guaranteed // to be a thing in custom renderers environments - if (options.discloseVersion && !analysis.custom_renderer) { + if (options.discloseVersion && !custom_renderer) { body.unshift(b.imports([], 'svelte/internal/disclose-version')); } - if (!analysis.custom_renderer) { + if (!custom_renderer) { body.unshift(b.imports([], 'svelte/internal/init-operations')); } @@ -606,7 +603,7 @@ export function client_component(analysis, options) { component_block.body.unshift(b.const(analysis.props_id, b.call('$.props_id'))); } - if (analysis.custom_renderer) { + if (custom_renderer) { component_block.body.unshift( b.var('$$pop_renderer', b.call('$.push_renderer', b.id('$renderer'))) ); diff --git a/packages/svelte/src/compiler/phases/3-transform/client/transform-template/index.js b/packages/svelte/src/compiler/phases/3-transform/client/transform-template/index.js index b81746a0e5..246824a447 100644 --- a/packages/svelte/src/compiler/phases/3-transform/client/transform-template/index.js +++ b/packages/svelte/src/compiler/phases/3-transform/client/transform-template/index.js @@ -2,7 +2,7 @@ /** @import { ComponentClientTransformState } from '../types.js' */ /** @import { Node } from './types.js' */ import { TEMPLATE_USE_MATHML, TEMPLATE_USE_SVG } from '../../../../../constants.js'; -import { dev, locator } from '../../../../state.js'; +import { dev, locator, custom_renderer } from '../../../../state.js'; import * as b from '../../../../utils/builders.js'; /** @@ -36,7 +36,7 @@ function build_locations(nodes) { */ export function transform_template(state, namespace, flags = 0) { // custom renderers needs a tree to work because there's no template element we can use - const tree = state.options.fragments === 'tree' || !!state.analysis.custom_renderer; + const tree = state.options.fragments === 'tree' || custom_renderer; const expression = tree ? state.template.as_tree() : state.template.as_html(); @@ -51,7 +51,7 @@ export function transform_template(state, namespace, flags = 0) { flags ? b.literal(flags) : undefined ); - if (state.template.contains_script_tag && !state.analysis.custom_renderer) { + if (state.template.contains_script_tag && !custom_renderer) { call = b.call(`$.with_script`, call); } diff --git a/packages/svelte/src/compiler/phases/3-transform/client/visitors/RegularElement.js b/packages/svelte/src/compiler/phases/3-transform/client/visitors/RegularElement.js index 4dc6e26ffe..c2a306dc3e 100644 --- a/packages/svelte/src/compiler/phases/3-transform/client/visitors/RegularElement.js +++ b/packages/svelte/src/compiler/phases/3-transform/client/visitors/RegularElement.js @@ -8,7 +8,7 @@ import { is_dom_property, is_load_error_element } from '../../../../../utils.js'; -import { is_ignored } from '../../../../state.js'; +import { is_ignored, custom_renderer } from '../../../../state.js'; import { is_event_attribute, is_text_attribute } from '../../../../utils/ast.js'; import * as b from '#compiler/builders'; import { @@ -39,9 +39,7 @@ import { TEMPLATE_FRAGMENT } from '../../../../../constants.js'; */ export function RegularElement(node, context) { const is_html = - context.state.metadata.namespace === 'html' && - node.name !== 'svg' && - !context.state.analysis.custom_renderer; + context.state.metadata.namespace === 'html' && node.name !== 'svg' && !custom_renderer; const name = is_html ? node.name.toLowerCase() : node.name; context.state.template.push_element(name, node.start, is_html); @@ -51,7 +49,7 @@ export function RegularElement(node, context) { } // we never treat elements as custom element in custom renderers, since we don't want to apply special handling to them (e.g. class merging) - const is_custom_element = is_custom_element_node(node) && !context.state.analysis.custom_renderer; + const is_custom_element = is_custom_element_node(node) && !custom_renderer; // cloneNode is faster, but it does not instantiate the underlying class of the // custom element until the template is connected to the dom, which would @@ -212,7 +210,7 @@ export function RegularElement(node, context) { /** If true, needs `__value` for inputs */ const needs_special_value_handling = - !context.state.analysis.custom_renderer && + !custom_renderer && (name === 'option' || name === 'select' || bindings.has('group') || bindings.has('checked')); if (has_spread) { @@ -236,7 +234,7 @@ export function RegularElement(node, context) { continue; } - const name = get_attribute_name(node, attribute, !!context.state.analysis.custom_renderer); + const name = get_attribute_name(node, attribute); if ( !is_custom_element && @@ -258,7 +256,7 @@ export function RegularElement(node, context) { if (name !== 'class' || value) { context.state.template.set_prop(attribute.name, value === true ? '' : value); } - } else if (name === 'autofocus' && !context.state.analysis.custom_renderer) { + } else if (name === 'autofocus' && !custom_renderer) { let { value } = build_attribute_value(attribute.value, context); context.state.init.push(b.stmt(b.call('$.autofocus', node_id, value))); } else if (name === 'class') { @@ -274,14 +272,7 @@ export function RegularElement(node, context) { (value, metadata) => context.state.memoizer.add(value, metadata) ); - const update = build_element_attribute_update( - node, - node_id, - name, - value, - attributes, - !!context.state.analysis.custom_renderer - ); + const update = build_element_attribute_update(node, node_id, name, value, attributes); (has_state ? context.state.update : context.state.init).push(b.stmt(update)); } @@ -357,7 +348,7 @@ export function RegularElement(node, context) { const empty_string = value.type === 'Literal' && value.value === ''; if (!empty_string) { - if (context.state.analysis.custom_renderer) { + if (custom_renderer) { // custom renderers need to use the method to invoke the renderer context.state.template.push_text([ { @@ -377,7 +368,7 @@ export function RegularElement(node, context) { ); } } - } else if (is_customizable_select_element(node) && !context.state.analysis.custom_renderer) { + } else if (is_customizable_select_element(node) && !custom_renderer) { // For , or