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.

121 lines 9.34 kB
"use strict"; /** * DOM Integration Module * Provides DOM utilities and bindings for Signal-Σ */ Object.defineProperty(exports, "__esModule", { value: true }); exports.observeResize = exports.observeIntersection = exports.animateElement = exports.delegate = exports.bindFormToSignal = exports.syncCRDTToDOM = exports.reactiveDOMBlock = exports.domBlock = exports.bindProperty = exports.bindAttribute = exports.bindEvent = exports.bindElement = exports.domSignal = void 0; const signal_1 = require("../core/signal"); // DOM Signal utilities const domSignal = (initialValue) => { return (0, signal_1.signal)(initialValue); }; exports.domSignal = domSignal; // Bind element to signal const bindElement = (element, sig) => { const unsubscribe = sig.subscribe((value) => { if (element.textContent !== String(value)) { element.textContent = String(value); } }); return unsubscribe; }; exports.bindElement = bindElement; // Bind event to signal 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); }; }; exports.bindEvent = bindEvent; // Bind attribute to signal const bindAttribute = (element, attribute, sig) => { const unsubscribe = sig.subscribe((value) => { element.setAttribute(attribute, String(value)); }); return unsubscribe; }; exports.bindAttribute = bindAttribute; // Additional DOM utilities for compatibility const bindProperty = (element, property, sig) => { const unsubscribe = sig.subscribe((value) => { element[property] = value; }); return unsubscribe; }; exports.bindProperty = bindProperty; const domBlock = (element) => { return { element, render: () => element }; }; exports.domBlock = domBlock; const reactiveDOMBlock = (element, sig) => { (0, exports.bindElement)(element, sig); return { element, signal: sig, render: () => element }; }; exports.reactiveDOMBlock = reactiveDOMBlock; const syncCRDTToDOM = (_element, _crdt) => { // Simplified CRDT to DOM sync return () => { }; }; exports.syncCRDTToDOM = syncCRDTToDOM; 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); }; }; exports.bindFormToSignal = bindFormToSignal; 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); }; }; exports.delegate = delegate; const animateElement = (_element, _animation) => { // Simplified animation return Promise.resolve(); }; exports.animateElement = animateElement; const observeIntersection = (element, callback) => { // Simplified intersection observer const observer = new IntersectionObserver((entries) => { entries.forEach(callback); }); observer.observe(element); return () => observer.disconnect(); }; exports.observeIntersection = observeIntersection; const observeResize = (element, callback) => { // Simplified resize observer const observer = new ResizeObserver((entries) => { entries.forEach(callback); }); observer.observe(element); return () => observer.disconnect(); }; exports.observeResize = observeResize; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvZG9tL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTs7O0dBR0c7OztBQUVILDJDQUFnRDtBQUVoRCx1QkFBdUI7QUFDaEIsTUFBTSxTQUFTLEdBQUcsQ0FDdkIsWUFBZSxFQUMyQixFQUFFO0lBQzVDLE9BQU8sSUFBQSxlQUFNLEVBQUMsWUFBWSxDQUFDLENBQUM7QUFDOUIsQ0FBQyxDQUFDO0FBSlcsUUFBQSxTQUFTLGFBSXBCO0FBRUYseUJBQXlCO0FBQ2xCLE1BQU0sV0FBVyxHQUFHLENBQUMsT0FBb0IsRUFBRSxHQUFnQixFQUFFLEVBQUU7SUFDcEUsTUFBTSxXQUFXLEdBQUcsR0FBRyxDQUFDLFNBQVMsQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFO1FBQzFDLElBQUksT0FBTyxDQUFDLFdBQVcsS0FBSyxNQUFNLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQztZQUMxQyxPQUFPLENBQUMsV0FBVyxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUN0QyxDQUFDO0lBQ0gsQ0FBQyxDQUFDLENBQUM7SUFDSCxPQUFPLFdBQVcsQ0FBQztBQUNyQixDQUFDLENBQUM7QUFQVyxRQUFBLFdBQVcsZUFPdEI7QUFFRix1QkFBdUI7QUFDaEIsTUFBTSxTQUFTLEdBQUcsQ0FDdkIsT0FBb0IsRUFDcEIsS0FBYSxFQUNiLEdBQWlELEVBQ2pELEVBQUU7SUFDRixNQUFNLE9BQU8sR0FBRyxDQUFDLENBQVEsRUFBRSxFQUFFO1FBQzNCLElBQUksT0FBTyxZQUFZLGdCQUFnQixFQUFFLENBQUM7WUFDeEMsR0FBRyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDMUIsQ0FBQzthQUFNLENBQUM7WUFDTixHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ2QsQ0FBQztJQUNILENBQUMsQ0FBQztJQUVGLE9BQU8s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