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.

200 lines 15.5 kB
/** * Signal-Σ Extensions * Advanced primitives for extensibility following mathematical patterns */ // Drag-n-Drop System (Operad patterns) export { DragContainer, createDragContainer, composeDragBehaviors, } from './drag-drop'; // Real-time Sync System (Commutative monoid operations) export { RealtimeSync, createRealtimeSync, createSyncedCounter, createSyncedSet, createSyncedRegister, } from './realtime-sync'; // Theme System (Functor map patterns) export { ThemeManager, createThemeManager, createLightTheme, createDarkTheme, composeThemes, mapThemeColors, } from './theme-system'; // Undo/Redo System (Coalgebraic time-travel) export { UndoRedoManager, createUndoRedoManager, createCommand, createTextCommand, createArrayCommand, } from './undo-redo'; // Extension utilities and patterns export const ExtensionPatterns = { // Operad composition for UI components Operad: { compose: (f, g) => (a) => g(f(a)), plug: (outer, inner) => (t) => outer(inner(t)), identity: (x) => x, }, // Commutative monoid for data synchronization CommutativeMonoid: { empty: () => [], combine: (a, b) => [...a, ...b], isCommutative: true, isAssociative: true, hasIdentity: true, }, // Functor for theme transformations Functor: { map: (f) => (fa) => fa.map(f), identity: (fa) => fa, composition: (f, g) => (a) => g(f(a)), }, // Coalgebra for time-travel and state evolution Coalgebra: { unfold: (seed, next) => { const result = []; let current = seed; while (true) { const [value, nextState] = next(current); result.push(value); current = nextState; // Prevent infinite loops in example if (result.length > 1000) break; } return result; }, observe: (state, observer) => observer(state), transition: (state, transition) => transition(state), }, }; // Extension factory for creating custom extensions export const createExtension = (name, pattern, implementation) => { return { name, pattern, create: implementation.create, compose: implementation.compose, map: implementation.map, unfold: implementation.unfold, // Mathematical properties verification verify: () => { switch (pattern) { case 'operad': return { hasIdentity: true, hasComposition: !!implementation.compose, isAssociative: true, // Assumed for operads }; case 'monoid': return { hasIdentity: true, hasComposition: !!implementation.compose, isAssociative: true, isCommutative: true, // For commutative monoids }; case 'functor': return { hasMap: !!implementation.map, preservesIdentity: true, preservesComposition: true, }; case 'coalgebra': return { hasUnfold: !!implementation.unfold, isObservable: true, hasTransitions: true, }; default: return {}; } }, }; }; // Example extensions using the factory export const ExampleExtensions = { // Drag-drop as operad DragDropOperad: createExtension('drag-drop', 'operad', { create: (config) => ({ container: config.container, items: config.items, options: config.options, }), compose: (a, b) => ({ behaviors: [a, b] }), }), // Sync as commutative monoid SyncMonoid: createExtension('realtime-sync', 'monoid', { create: (config) => ({ config }), compose: (a, _b) => { // Merge sync managers (theoretical - would need careful implementation) return a; // Simplified }, }), // Theme as functor ThemeFunctor: createExtension('theme-system', 'functor', { create: (config) => ({ config }), map: (transform, theme) => ({ theme, transform }), }), // Undo/Redo as coalgebra UndoRedoCoalgebra: createExtension('undo-redo', 'coalgebra', { create: (config) => ({ initialState: config.initialState, options: config.options, }), unfold: (manager, _next) => { // Unfold history states const history = manager.getHistory().value(); return history.map((memento) => memento.state); }, }), }; // Extension composition utilities export const composeExtensions = (...extensions) => { // Compose multiple extensions following their mathematical patterns return extensions.reduce((acc, ext) => { // Implementation would depend on the specific extension types return { ...acc, ...ext }; }); }; // Extension validation export const validateExtension = (extension) => { try { const verification = extension.verify?.(); // Check mathematical properties based on pattern switch (extension.pattern) { case 'operad': return verification?.hasIdentity && verification?.hasComposition; case 'monoid': return (verification?.hasIdentity && verification?.hasComposition && verification?.isAssociative); case 'functor': return verification?.hasMap && verification?.preservesIdentity; case 'coalgebra': return verification?.hasUnfold && verification?.isObservable; default: return true; } } catch (error) { console.error('Extension validation failed:', error); return false; } }; // Extension registry for dynamic loading export class ExtensionRegistry { constructor() { this.extensions = new Map(); } register(name, extension) { if (validateExtension(extension)) { this.extensions.set(name, extension); } else { throw new Error(`Extension ${name} failed validation`); } } get(name) { return this.extensions.get(name); } list() { return Array.from(this.extensions.keys()); } compose(names) { const extensions = names .map((name) => this.extensions.get(name)) .filter(Boolean); return composeExtensions(...extensions); } } // Global extension registry export const globalExtensionRegistry = new ExtensionRegistry(); // Auto-register built-in extensions globalExtensionRegistry.register('drag-drop', ExampleExtensions.DragDropOperad); globalExtensionRegistry.register('realtime-sync', ExampleExtensions.SyncMonoid); globalExtensionRegistry.register('theme-system', ExampleExtensions.ThemeFunctor); globalExtensionRegistry.register('undo-redo', ExampleExtensions.UndoRedoCoalgebra); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvZXh0ZW5zaW9ucy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7O0dBR0c7QUFFSCx1Q0FBdUM7QUFDdkMsT0FBTyxFQUNMLGFBQWEsRUFDYixtQkFBbUIsRUFDbkIsb0JBQW9CLEdBSXJCLE1BQU0sYUFBYSxDQUFDO0FBRXJCLHdEQUF3RDtBQUN4RCxPQUFPLEVBQ0wsWUFBWSxFQUNaLGtCQUFrQixFQUNsQixtQkFBbUIsRUFDbkIsZUFBZSxFQUNmLG9CQUFvQixHQUtyQixNQUFNLGlCQUFpQixDQUFDO0FBRXpCLHNDQUFzQztBQUN0QyxPQUFPLEVBQ0wsWUFBWSxFQUNaLGtCQUFrQixFQUNsQixnQkFBZ0IsRUFDaEIsZUFBZSxFQUNmLGFBQWEsRUFDYixjQUFjLEdBTWYsTUFBTSxnQkFBZ0IsQ0FBQztBQUV4Qiw2Q0FBNkM7QUFDN0MsT0FBTyxFQUNMLGVBQWUsRUFDZixxQkFBcUIsRUFDckIsYUFBYSxFQUNiLGlCQUFpQixFQUNqQixrQkFBa0IsR0FLbkIsTUFBTSxhQUFhLENBQUM7QUFFckIsbUNBQW1DO0FBQ25DLE1BQU0sQ0FBQyxNQUFNLGlCQUFpQixHQUFHO0lBQy9CLHVDQUF1QztJQUN2QyxNQUFNLEVBQUU7UUFDTixPQUFPLEVBQ0wsQ0FBVSxDQUFjLEVBQUUsQ0FBYyxFQUFFLEVBQUUsQ0FDNUMsQ0FBQyxDQUFJLEVBQUUsRUFBRSxDQUNQLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDWCxJQUFJLEVBQ0YsQ0FBVSxLQUFrQixFQUFFLEtBQWtCLEVBQUUsRUFBRSxDQUNwRCxDQUFDLENBQUksRUFBRSxFQUFFLENBQ1AsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNuQixRQUFRLEVBQUUsQ0FBSSxDQUFJLEVBQUUsRUFBRSxDQUFDLENBQUM7S0FDekI7SUFFRCw4Q0FBOEM7SUFDOUMsaUJB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