MCPcopy
hub / github.com/sveltejs/svelte / Component

Function Component

packages/svelte/src/compiler/phases/scope.js:981–1017  ·  view source on GitHub ↗
(node, context)

Source from the content-addressed store, hash-verified

979 * @type {Visitor<AST.Component | AST.SvelteComponent | AST.SvelteSelf, State, AST.SvelteNode>}
980 */
981 const Component = (node, context) => {
982 node.metadata.scopes = {
983 default: context.state.scope.child()
984 };
985
986 if (node.type === 'SvelteComponent') {
987 context.visit(node.expression);
988 }
989
990 const default_state = determine_slot(node)
991 ? context.state
992 : { scope: node.metadata.scopes.default };
993
994 for (const attribute of node.attributes) {
995 if (attribute.type === 'LetDirective') {
996 context.visit(attribute, default_state);
997 } else {
998 context.visit(attribute);
999 }
1000 }
1001
1002 for (const child of node.fragment.nodes) {
1003 let state = default_state;
1004
1005 const slot_name = determine_slot(child);
1006
1007 if (slot_name !== null) {
1008 node.metadata.scopes[slot_name] = context.state.scope.child();
1009
1010 state = {
1011 scope: node.metadata.scopes[slot_name]
1012 };
1013 }
1014
1015 context.visit(child, state);
1016 }
1017 };
1018
1019 /**
1020 * @type {Visitor<AST.AnimateDirective | AST.TransitionDirective | AST.UseDirective, State, AST.SvelteNode>}

Callers 1

create_scopesFunction · 0.70

Calls 2

determine_slotFunction · 0.90
childMethod · 0.45

Tested by

no test coverage detected