Home / File/ OnDirective.js — svelte Source File

OnDirective.js — svelte Source File

Architecture documentation for OnDirective.js, a javascript file in the svelte codebase. 4 imports, 1 dependents.

File javascript Compiler Transformer 4 imports 1 dependents 1 functions

Entity Profile

Dependency Diagram

graph LR
  c19211c5_1457_5635_6aff_780db82c7240["OnDirective.js"]
  c5a9d025_4aac_a689_1a38_c0fce5e694c0["events.js"]
  c19211c5_1457_5635_6aff_780db82c7240 --> c5a9d025_4aac_a689_1a38_c0fce5e694c0
  2ed29e53_0d07_f94c_69fa_4365c369a1dd["build_event"]
  c19211c5_1457_5635_6aff_780db82c7240 --> 2ed29e53_0d07_f94c_69fa_4365c369a1dd
  cd53dd1a_8bd9_06e2_6bfe_ed90344d0b28["build_event_handler"]
  c19211c5_1457_5635_6aff_780db82c7240 --> cd53dd1a_8bd9_06e2_6bfe_ed90344d0b28
  95c28355_f14c_c3cd_5a03_d5a53ca255bc["builders"]
  c19211c5_1457_5635_6aff_780db82c7240 --> 95c28355_f14c_c3cd_5a03_d5a53ca255bc
  7665e008_f37d_b860_a594_f2539a66af4e["transform-client.js"]
  7665e008_f37d_b860_a594_f2539a66af4e --> c19211c5_1457_5635_6aff_780db82c7240
  style c19211c5_1457_5635_6aff_780db82c7240 fill:#6366f1,stroke:#818cf8,color:#fff

Relationship Graph

Source Code

/** @import { AST } from '#compiler' */
/** @import { ComponentContext } from '../types' */
import * as b from '#compiler/builders';
import { build_event, build_event_handler } from './shared/events.js';

const modifiers = /** @type {const} */ ([
	'stopPropagation',
	'stopImmediatePropagation',
	'preventDefault',
	'self',
	'trusted',
	'once'
]);

/**
 * @param {AST.OnDirective} node
 * @param {ComponentContext} context
 */
export function OnDirective(node, context) {
	if (!node.expression) {
		context.state.analysis.needs_props = true;
	}

	let handler = build_event_handler(node.expression, node.metadata.expression, context);

	for (const modifier of modifiers) {
		if (node.modifiers.includes(modifier)) {
			handler = b.call('$.' + modifier, handler);
		}
	}

	const capture = node.modifiers.includes('capture');
	const passive =
		node.modifiers.includes('passive') ||
		(node.modifiers.includes('nonpassive') ? false : undefined);

	return build_event(node.name, context.state.node, handler, capture, passive);
}

Domain

Subdomains

Functions

Frequently Asked Questions

What does OnDirective.js do?
OnDirective.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 OnDirective.js?
OnDirective.js defines 1 function(s): OnDirective.
What does OnDirective.js depend on?
OnDirective.js imports 4 module(s): build_event, build_event_handler, builders, events.js.
What files import OnDirective.js?
OnDirective.js is imported by 1 file(s): transform-client.js.
Where is OnDirective.js in the architecture?
OnDirective.js is located at packages/svelte/src/compiler/phases/3-transform/client/visitors/OnDirective.js (domain: Compiler, subdomain: Transformer, directory: packages/svelte/src/compiler/phases/3-transform/client/visitors).

Analyze Your Own Codebase

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

Try Supermodel Free