Home / File/ universal.js — svelte Source File

universal.js — svelte Source File

Architecture documentation for universal.js, a javascript file in the svelte codebase. 5 imports, 0 dependents.

File javascript ClientRuntime Hydration 5 imports 3 functions

Entity Profile

Dependency Diagram

graph LR
  c3b70c5c_4392_04e8_77c1_3cef97110727["universal.js"]
  1ae6fa4e_16ee_acdf_5e28_17eb0819fddb["effects.js"]
  c3b70c5c_4392_04e8_77c1_3cef97110727 --> 1ae6fa4e_16ee_acdf_5e28_17eb0819fddb
  7494b934_a3b8_689e_91b6_8435e26461c5["render_effect"]
  c3b70c5c_4392_04e8_77c1_3cef97110727 --> 7494b934_a3b8_689e_91b6_8435e26461c5
  20340432_01a2_6741_abf4_60ccab51cdb3["teardown"]
  c3b70c5c_4392_04e8_77c1_3cef97110727 --> 20340432_01a2_6741_abf4_60ccab51cdb3
  af7441d2_339a_2db1_88df_90dba2875c10["shared.js"]
  c3b70c5c_4392_04e8_77c1_3cef97110727 --> af7441d2_339a_2db1_88df_90dba2875c10
  da178604_a1e6_1104_9d60_daf043f014c9["listen"]
  c3b70c5c_4392_04e8_77c1_3cef97110727 --> da178604_a1e6_1104_9d60_daf043f014c9
  style c3b70c5c_4392_04e8_77c1_3cef97110727 fill:#6366f1,stroke:#818cf8,color:#fff

Relationship Graph

Source Code

import { render_effect, teardown } from '../../../reactivity/effects.js';
import { listen } from './shared.js';

/**
 * @param {'innerHTML' | 'textContent' | 'innerText'} property
 * @param {HTMLElement} element
 * @param {() => unknown} get
 * @param {(value: unknown) => void} set
 * @returns {void}
 */
export function bind_content_editable(property, element, get, set = get) {
	element.addEventListener('input', () => {
		// @ts-ignore
		set(element[property]);
	});

	render_effect(() => {
		var value = get();

		if (element[property] !== value) {
			if (value == null) {
				// @ts-ignore
				var non_null_value = element[property];
				set(non_null_value);
			} else {
				// @ts-ignore
				element[property] = value + '';
			}
		}
	});
}

/**
 * @param {string} property
 * @param {string} event_name
 * @param {Element} element
 * @param {(value: unknown) => void} set
 * @param {() => unknown} [get]
 * @returns {void}
 */
export function bind_property(property, event_name, element, set, get) {
	var handler = () => {
		// @ts-ignore
		set(element[property]);
	};

	element.addEventListener(event_name, handler);

	if (get) {
		render_effect(() => {
			// @ts-ignore
			element[property] = get();
		});
	} else {
		handler();
	}

	// @ts-ignore
	if (element === document.body || element === window || element === document) {
		teardown(() => {
			element.removeEventListener(event_name, handler);
		});
	}
}

/**
 * @param {HTMLElement} element
 * @param {(value: unknown) => void} set
 * @returns {void}
 */
export function bind_focused(element, set) {
	listen(element, ['focus', 'blur'], () => {
		set(element === document.activeElement);
	});
}

Domain

Subdomains

Frequently Asked Questions

What does universal.js do?
universal.js is a source file in the svelte codebase, written in javascript. It belongs to the ClientRuntime domain, Hydration subdomain.
What functions are defined in universal.js?
universal.js defines 3 function(s): bind_content_editable, bind_focused, bind_property.
What does universal.js depend on?
universal.js imports 5 module(s): effects.js, listen, render_effect, shared.js, teardown.
Where is universal.js in the architecture?
universal.js is located at packages/svelte/src/internal/client/dom/elements/bindings/universal.js (domain: ClientRuntime, subdomain: Hydration, directory: packages/svelte/src/internal/client/dom/elements/bindings).

Analyze Your Own Codebase

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

Try Supermodel Free