UNPKG

resig.js

Version:

Universal reactive signal library with complete platform features: signals, animations, CRDTs, scheduling, DOM integration. Works identically across React, SolidJS, Svelte, Vue, and Qwik.

105 lines 8.32 kB
/** * DOM Integration Module * Provides DOM utilities and bindings for Signal-Σ */ import { signal } from '../core/signal'; // DOM Signal utilities export const domSignal = (initialValue) => { return signal(initialValue); }; // Bind element to signal export const bindElement = (element, sig) => { const unsubscribe = sig.subscribe((value) => { if (element.textContent !== String(value)) { element.textContent = String(value); } }); return unsubscribe; }; // Bind event to signal export const bindEvent = (element, event, sig) => { const handler = (e) => { if (element instanceof HTMLInputElement) { sig._set(element.value); } else { sig._set(e); } }; element.addEventListener(event, handler); return () => { element.removeEventListener(event, handler); }; }; // Bind attribute to signal export const bindAttribute = (element, attribute, sig) => { const unsubscribe = sig.subscribe((value) => { element.setAttribute(attribute, String(value)); }); return unsubscribe; }; // Additional DOM utilities for compatibility export const bindProperty = (element, property, sig) => { const unsubscribe = sig.subscribe((value) => { element[property] = value; }); return unsubscribe; }; export const domBlock = (element) => { return { element, render: () => element }; }; export const reactiveDOMBlock = (element, sig) => { bindElement(element, sig); return { element, signal: sig, render: () => element }; }; export const syncCRDTToDOM = (_element, _crdt) => { // Simplified CRDT to DOM sync return () => { }; }; export const bindFormToSignal = (form, sig) => { const handler = () => { const formData = new FormData(form); const entries = Array.from(formData.entries()); const data = Object.fromEntries(entries); sig._set(data); }; form.addEventListener('input', handler); form.addEventListener('change', handler); return () => { form.removeEventListener('input', handler); form.removeEventListener('change', handler); }; }; export const delegate = (element, selector, event, handler) => { const delegateHandler = (e) => { const target = e.target; if (target.matches(selector)) { handler(e); } }; element.addEventListener(event, delegateHandler); return () => { element.removeEventListener(event, delegateHandler); }; }; export const animateElement = (_element, _animation) => { // Simplified animation return Promise.resolve(); }; export const observeIntersection = (element, callback) => { // Simplified intersection observer const observer = new IntersectionObserver((entries) => { entries.forEach(callback); }); observer.observe(element); return () => observer.disconnect(); }; export const observeResize = (element, callback) => { // Simplified resize observer const observer = new ResizeObserver((entries) => { entries.forEach(callback); }); observer.observe(element); return () => observer.disconnect(); }; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvZG9tL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7R0FHRztBQUVILE9BQU8sRUFBRSxNQUFNLEVBQVUsTUFBTSxnQkFBZ0IsQ0FBQztBQUVoRCx1QkFBdUI7QUFDdkIsTUFBTSxDQUFDLE1BQU0sU0FBUyxHQUFHLENBQ3ZCLFlBQWUsRUFDMkIsRUFBRTtJQUM1QyxPQUFPLE1BQU0sQ0FBQyxZQUFZLENBQUMsQ0FBQztBQUM5QixDQUFDLENBQUM7QUFFRix5QkFBeUI7QUFDekIsTUFBTSxDQUFDLE1BQU0sV0FBVyxHQUFHLENBQUMsT0FBb0IsRUFBRSxHQUFnQixFQUFFLEVBQUU7SUFDcEUsTUFBTSxXQUFXLEdBQUcsR0FBRyxDQUFDLFNBQVMsQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFO1FBQzFDLElBQUksT0FBTyxDQUFDLFdBQVcsS0FBSyxNQUFNLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQztZQUMxQyxPQUFPLENBQUMsV0FBVyxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUN0QyxDQUFDO0lBQ0gsQ0FBQyxDQUFDLENBQUM7SUFDSCxPQUFPLFdBQVcsQ0FBQztBQUNyQixDQUFDLENBQUM7QUFFRix1QkFBdUI7QUFDdkIsTUFBTSxDQUFDLE1BQU0sU0FBUyxHQUFHLENBQ3ZCLE9BQW9CLEVBQ3BCLEtBQWEsRUFDYixHQUFpRCxFQUNqRCxFQUFFO0lBQ0YsTUFBTSxPQUFPLEdBQUcsQ0FBQyxDQUFRLEVBQUUsRUFBRTtRQUMzQixJQUFJLE9BQU8sWUFBWSxnQkFBZ0IsRUFBRSxDQUFDO1lBQ3hDLEdBQUcsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzFCLENBQUM7YUFBTSxDQUFDO1lBQ04sR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNkLENBQUM7SUFDSCxDQUFDLENBQUM7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