Home / Function/ prepare_element_spread() — svelte Function Reference

prepare_element_spread() — svelte Function Reference

Architecture documentation for the prepare_element_spread() function in element.js from the svelte codebase.

Function javascript Compiler Transformer calls 4 called by 2

Entity Profile

Dependency Diagram

graph TD
  b6b60d37_35c9_2ea4_dd94_b777d0860ea8["prepare_element_spread()"]
  b25fbb61_695c_e699_cbac_73059624d603["element.js"]
  b6b60d37_35c9_2ea4_dd94_b777d0860ea8 -->|defined in| b25fbb61_695c_e699_cbac_73059624d603
  55eb3f8e_68bc_d21e_cf79_8580012854f2["build_element_spread_attributes()"]
  55eb3f8e_68bc_d21e_cf79_8580012854f2 -->|calls| b6b60d37_35c9_2ea4_dd94_b777d0860ea8
  6bb21aff_7c01_9593_26a7_a77307bf55bb["prepare_element_spread_object()"]
  6bb21aff_7c01_9593_26a7_a77307bf55bb -->|calls| b6b60d37_35c9_2ea4_dd94_b777d0860ea8
  804afe56_25d1_9f41_dafe_adc75e952134["object()"]
  b6b60d37_35c9_2ea4_dd94_b777d0860ea8 -->|calls| 804afe56_25d1_9f41_dafe_adc75e952134
  9f24c33c_da34_a132_f273_3ffd2f6e5cf8["build_attribute_value()"]
  b6b60d37_35c9_2ea4_dd94_b777d0860ea8 -->|calls| 9f24c33c_da34_a132_f273_3ffd2f6e5cf8
  76437ce7_73fa_a7f2_397a_1ddd381e8282["is_custom_element_node()"]
  b6b60d37_35c9_2ea4_dd94_b777d0860ea8 -->|calls| 76437ce7_73fa_a7f2_397a_1ddd381e8282
  959bef75_9552_0e6a_5eb8_b82a31b18562["build_spread_object()"]
  b6b60d37_35c9_2ea4_dd94_b777d0860ea8 -->|calls| 959bef75_9552_0e6a_5eb8_b82a31b18562
  style b6b60d37_35c9_2ea4_dd94_b777d0860ea8 fill:#6366f1,stroke:#818cf8,color:#fff

Relationship Graph

Source Code

packages/svelte/src/compiler/phases/3-transform/server/visitors/shared/element.js lines 416–473

export function prepare_element_spread(
	element,
	attributes,
	style_directives,
	class_directives,
	context,
	transform
) {
	/** @type {ObjectExpression | undefined} */
	let classes;
	/** @type {ObjectExpression | undefined} */
	let styles;
	let flags = 0;

	if (class_directives.length) {
		const properties = class_directives.map((directive) =>
			b.init(
				directive.name,
				directive.expression.type === 'Identifier' && directive.expression.name === directive.name
					? b.id(directive.name)
					: transform(
							/** @type {Expression} */ (context.visit(directive.expression)),
							directive.metadata.expression
						)
			)
		);

		classes = b.object(properties);
	}

	if (style_directives.length > 0) {
		const properties = style_directives.map((directive) =>
			b.init(
				directive.name,
				directive.value === true
					? b.id(directive.name)
					: build_attribute_value(directive.value, context, transform, true)
			)
		);
		styles = b.object(properties);
	}

	if (element.metadata.svg || element.metadata.mathml) {
		flags |= ELEMENT_IS_NAMESPACED | ELEMENT_PRESERVE_ATTRIBUTE_CASE;
	} else if (is_custom_element_node(element)) {
		flags |= ELEMENT_PRESERVE_ATTRIBUTE_CASE;
	} else if (element.type === 'RegularElement' && element.name === 'input') {
		flags |= ELEMENT_IS_INPUT;
	}

	const object = build_spread_object(element, attributes, context, transform);
	const css_hash =
		element.metadata.scoped && context.state.analysis.css.hash
			? b.literal(context.state.analysis.css.hash)
			: undefined;

	return [object, css_hash, classes, styles, flags ? b.literal(flags) : undefined];
}

Domain

Subdomains

Frequently Asked Questions

What does prepare_element_spread() do?
prepare_element_spread() is a function in the svelte codebase, defined in packages/svelte/src/compiler/phases/3-transform/server/visitors/shared/element.js.
Where is prepare_element_spread() defined?
prepare_element_spread() is defined in packages/svelte/src/compiler/phases/3-transform/server/visitors/shared/element.js at line 416.
What does prepare_element_spread() call?
prepare_element_spread() calls 4 function(s): build_attribute_value, build_spread_object, is_custom_element_node, object.
What calls prepare_element_spread()?
prepare_element_spread() is called by 2 function(s): build_element_spread_attributes, prepare_element_spread_object.

Analyze Your Own Codebase

Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.

Try Supermodel Free