events.js — svelte Source File
Architecture documentation for events.js, a javascript file in the svelte codebase. 7 imports, 4 dependents.
Entity Profile
Dependency Diagram
graph LR c5a9d025_4aac_a689_1a38_c0fce5e694c0["events.js"] 2aa63f4e_82c9_33e3_ac6c_5f3d46250522["utils.js"] c5a9d025_4aac_a689_1a38_c0fce5e694c0 --> 2aa63f4e_82c9_33e3_ac6c_5f3d46250522 414b9ea2_b052_6759_fdfb_f4cabf75669c["is_capture_event"] c5a9d025_4aac_a689_1a38_c0fce5e694c0 --> 414b9ea2_b052_6759_fdfb_f4cabf75669c 034eb538_8c9d_e943_ab91_3ef5cfad2ef9["is_passive_event"] c5a9d025_4aac_a689_1a38_c0fce5e694c0 --> 034eb538_8c9d_e943_ab91_3ef5cfad2ef9 62f818c8_e890_17ed_5ec1_92f953d4a7a6["state.js"] c5a9d025_4aac_a689_1a38_c0fce5e694c0 --> 62f818c8_e890_17ed_5ec1_92f953d4a7a6 bbca3d2a_42c8_b215_d3b5_5077ccaf0797["nodes.js"] c5a9d025_4aac_a689_1a38_c0fce5e694c0 --> bbca3d2a_42c8_b215_d3b5_5077ccaf0797 6e00a8f3_2371_ecf1_5a93_296f787aca83["ExpressionMetadata"] c5a9d025_4aac_a689_1a38_c0fce5e694c0 --> 6e00a8f3_2371_ecf1_5a93_296f787aca83 95c28355_f14c_c3cd_5a03_d5a53ca255bc["builders"] c5a9d025_4aac_a689_1a38_c0fce5e694c0 --> 95c28355_f14c_c3cd_5a03_d5a53ca255bc 126f4294_219b_2a73_5499_a210c4245cce["Attribute.js"] 126f4294_219b_2a73_5499_a210c4245cce --> c5a9d025_4aac_a689_1a38_c0fce5e694c0 c19211c5_1457_5635_6aff_780db82c7240["OnDirective.js"] c19211c5_1457_5635_6aff_780db82c7240 --> c5a9d025_4aac_a689_1a38_c0fce5e694c0 4610488f_3cf2_5f73_043e_da0aa9d026fe["RegularElement.js"] 4610488f_3cf2_5f73_043e_da0aa9d026fe --> c5a9d025_4aac_a689_1a38_c0fce5e694c0 be3a40b1_7e88_8a0c_e231_56c97bd7899f["component.js"] be3a40b1_7e88_8a0c_e231_56c97bd7899f --> c5a9d025_4aac_a689_1a38_c0fce5e694c0 style c5a9d025_4aac_a689_1a38_c0fce5e694c0 fill:#6366f1,stroke:#818cf8,color:#fff
Relationship Graph
Source Code
/** @import { Expression } from 'estree' */
/** @import { AST } from '#compiler' */
/** @import { ComponentContext } from '../../types' */
import { is_capture_event, is_passive_event } from '../../../../../../utils.js';
import { dev, locator } from '../../../../../state.js';
import * as b from '#compiler/builders';
import { ExpressionMetadata } from '../../../../nodes.js';
/**
* @param {AST.Attribute} node
* @param {ComponentContext} context
*/
export function visit_event_attribute(node, context) {
let capture = false;
let event_name = node.name.slice(2);
if (is_capture_event(event_name)) {
event_name = event_name.slice(0, -7);
capture = true;
}
// we still need to support the weird `onclick="{() => {...}}" form
const tag = Array.isArray(node.value)
? /** @type {AST.ExpressionTag} */ (node.value[0])
: /** @type {AST.ExpressionTag} */ (node.value);
let handler = build_event_handler(tag.expression, tag.metadata.expression, context);
if (node.metadata.delegated) {
if (!context.state.events.has(event_name)) {
context.state.events.add(event_name);
}
context.state.init.push(
b.stmt(
b.assignment(
'=',
b.member(context.state.node, b.id('__' + event_name, node.name_loc)),
handler
)
)
);
} else {
const statement = b.stmt(
build_event(
event_name,
context.state.node,
handler,
capture,
is_passive_event(event_name) ? true : undefined
)
);
const type = /** @type {AST.SvelteNode} */ (context.path.at(-1)).type;
if (type === 'SvelteDocument' || type === 'SvelteWindow' || type === 'SvelteBody') {
// These nodes are above the component tree, and its events should run parent first
context.state.init.push(statement);
} else {
context.state.after_update.push(statement);
// ... (117 more lines)
Domain
Subdomains
Dependencies
Imported By
- packages/svelte/src/compiler/phases/3-transform/client/visitors/Attribute.js
- packages/svelte/src/compiler/phases/3-transform/client/visitors/OnDirective.js
- packages/svelte/src/compiler/phases/3-transform/client/visitors/RegularElement.js
- packages/svelte/src/compiler/phases/3-transform/client/visitors/shared/component.js
Source
Frequently Asked Questions
What does events.js do?
events.js is a source file in the svelte codebase, written in javascript. It belongs to the Compiler domain, Transformer subdomain.
What functions are defined in events.js?
events.js defines 4 function(s): build_event, build_event_handler, has_side_effects, visit_event_attribute.
What does events.js depend on?
events.js imports 7 module(s): ExpressionMetadata, builders, is_capture_event, is_passive_event, nodes.js, state.js, utils.js.
What files import events.js?
events.js is imported by 4 file(s): Attribute.js, OnDirective.js, RegularElement.js, component.js.
Where is events.js in the architecture?
events.js is located at packages/svelte/src/compiler/phases/3-transform/client/visitors/shared/events.js (domain: Compiler, subdomain: Transformer, directory: packages/svelte/src/compiler/phases/3-transform/client/visitors/shared).
Analyze Your Own Codebase
Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.
Try Supermodel Free