sprae 12.4.0 → 12.4.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/core.js +55 -1
- package/directive/each.js +12 -12
- package/directive/else.js +1 -0
- package/directive/if.js +12 -9
- package/dist/sprae.js +3 -3
- package/dist/sprae.js.map +3 -3
- package/dist/sprae.umd.js +3 -3
- package/dist/sprae.umd.js.map +3 -3
- package/package.json +3 -3
- package/readme.md +23 -20
- package/sprae.js +11 -52
- package/store.js +7 -2
- package/types/core.d.ts +7 -0
- package/types/core.d.ts.map +1 -1
- package/types/directive/else.d.ts.map +1 -1
- package/types/directive/if.d.ts.map +1 -1
- package/types/sprae.d.ts +3 -3
- package/types/sprae.d.ts.map +1 -1
- package/types/store.d.ts.map +1 -1
package/sprae.js
CHANGED
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
import store from "./store.js";
|
|
7
7
|
import { batch, computed, effect, signal, untracked } from './core.js';
|
|
8
8
|
import * as signals from './signal.js';
|
|
9
|
-
import sprae, { use, decorate, directive, modifier, parse, throttle, debounce, _off, _state, _on, _dispose, _add } from './core.js';
|
|
9
|
+
import sprae, { use, decorate, directive, modifier, parse, throttle, debounce, _off, _state, _on, _dispose, _add, start } from './core.js';
|
|
10
10
|
|
|
11
11
|
import _if from "./directive/if.js";
|
|
12
12
|
import _else from "./directive/else.js";
|
|
@@ -71,11 +71,10 @@ const dir = (target, name, expr, state) => {
|
|
|
71
71
|
|
|
72
72
|
state = target[_state] ?? state
|
|
73
73
|
|
|
74
|
-
return effect(() =>
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
))
|
|
74
|
+
return effect(() => {
|
|
75
|
+
const result = change.value == count ? (trigger()) : (count = change.value, _out = evaluate(state, update))
|
|
76
|
+
return out
|
|
77
|
+
})
|
|
79
78
|
}
|
|
80
79
|
}
|
|
81
80
|
|
|
@@ -106,11 +105,10 @@ Object.assign(modifier, {
|
|
|
106
105
|
throttle: (fn, a) => throttle(fn, scheduler(a)),
|
|
107
106
|
/** Runs callback after delay. Supports: tick (default), raf, idle, N, Nms, Ns, Nm. */
|
|
108
107
|
delay: (fn, a) => ((sched = scheduler(a)) => (e) => sched(() => fn(e)))(),
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
raf: (fn) => (console.warn('Deprecated'), (e) => requestAnimationFrame(() => fn(e))),
|
|
108
|
+
/** Shortcut for delay-tick (next microtask). */
|
|
109
|
+
tick: (fn) => (e) => queueMicrotask(() => fn(e)),
|
|
110
|
+
/** Shortcut for delay-raf (next animation frame). */
|
|
111
|
+
raf: (fn) => (e) => requestAnimationFrame(() => fn(e)),
|
|
114
112
|
|
|
115
113
|
/** Calls handler only once. */
|
|
116
114
|
once: (fn, _done, _fn) => (_fn = (e) => !_done && (_done = 1, fn(e)), _fn.once = true, _fn),
|
|
@@ -134,8 +132,6 @@ Object.assign(modifier, {
|
|
|
134
132
|
prevent: (fn) => (e) => (e?.preventDefault(), fn(e)),
|
|
135
133
|
/** Calls stopPropagation() or stopImmediatePropagation() (with -immediate). */
|
|
136
134
|
stop: (fn, _how) => (e) => (_how?.[0] === 'i' ? e?.stopImmediatePropagation() : e?.stopPropagation(), fn(e)),
|
|
137
|
-
/** @deprecated Use .stop-immediate instead */
|
|
138
|
-
immediate: (fn) => (console.warn('Deprecated'), (e) => (e?.stopImmediatePropagation(), fn(e))),
|
|
139
135
|
/** Sets passive option for event listener. */
|
|
140
136
|
passive: fn => (fn.passive = true, fn),
|
|
141
137
|
/** Sets capture option for event listener. */
|
|
@@ -218,47 +214,10 @@ sprae.modifier = modifier
|
|
|
218
214
|
* Disposes a spraed element, cleaning up all effects and state.
|
|
219
215
|
* @param {Element} el - Element to dispose
|
|
220
216
|
*/
|
|
221
|
-
sprae.dispose = (el) => el[_dispose]?.()
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
/**
|
|
225
|
-
* Auto-initializes sprae on dynamically added elements.
|
|
226
|
-
* Uses MutationObserver to detect new DOM nodes and apply directives.
|
|
227
|
-
*
|
|
228
|
-
* @param {Element} [root=document.body] - Root element to observe
|
|
229
|
-
* @param {Object} [values] - Initial state values
|
|
230
|
-
* @returns {Object} The reactive state object
|
|
231
|
-
*
|
|
232
|
-
* @example
|
|
233
|
-
* ```js
|
|
234
|
-
* // Auto-init on page load
|
|
235
|
-
* sprae.start(document.body, { count: 0 })
|
|
236
|
-
* ```
|
|
237
|
-
*/
|
|
238
|
-
const start = sprae.start = (root = document.body, values) => {
|
|
239
|
-
const state = store(values)
|
|
240
|
-
sprae(root, state);
|
|
241
|
-
const mo = new MutationObserver(mutations => {
|
|
242
|
-
for (const m of mutations) {
|
|
243
|
-
for (const el of m.addedNodes) {
|
|
244
|
-
// el can be spraed or removed by subsprae (like within :each/:if)
|
|
245
|
-
if (el.nodeType === 1 && el[_state] === undefined && root.contains(el)) {
|
|
246
|
-
// even if element has no spraeable attrs, some of its children can have
|
|
247
|
-
root[_add](el)
|
|
248
|
-
}
|
|
249
|
-
}
|
|
250
|
-
for (const el of m.removedNodes) el.nodeType === 1 && el[_dispose]?.()
|
|
251
|
-
}
|
|
252
|
-
});
|
|
253
|
-
mo.observe(root, { childList: true, subtree: true });
|
|
254
|
-
return state
|
|
255
|
-
}
|
|
256
|
-
|
|
217
|
+
const dispose = sprae.dispose = (el) => el[_dispose]?.()
|
|
257
218
|
|
|
258
|
-
/** Package version (injected by bundler) */
|
|
259
|
-
sprae.version = "[VI]{{inject}}[/VI]"
|
|
260
219
|
|
|
261
|
-
|
|
220
|
+
sprae.start = start
|
|
262
221
|
|
|
263
222
|
export default sprae
|
|
264
223
|
export { sprae, store, signal, effect, computed, batch, untracked, start, use, throttle, debounce, dispose }
|
package/store.js
CHANGED
|
@@ -61,8 +61,13 @@ export const store = (values, parent) => {
|
|
|
61
61
|
[_signals]: signals
|
|
62
62
|
}), {
|
|
63
63
|
get: (_, k) => {
|
|
64
|
-
if (k in signals)
|
|
65
|
-
|
|
64
|
+
if (k in signals) {
|
|
65
|
+
return (signals[k] ? signals[k].valueOf() : signals[k])
|
|
66
|
+
}
|
|
67
|
+
if (parent) {
|
|
68
|
+
return parent[k]
|
|
69
|
+
}
|
|
70
|
+
return (typeof globalThis[k] === 'function' && !globalThis[k].prototype ? globalThis[k].bind(globalThis) : globalThis[k])
|
|
66
71
|
},
|
|
67
72
|
|
|
68
73
|
set: (_, k, v) => {
|
package/types/core.d.ts
CHANGED
|
@@ -77,6 +77,10 @@ export function use(config: SpraeConfig): void;
|
|
|
77
77
|
export function decorate(fn: Function & {
|
|
78
78
|
target?: Element;
|
|
79
79
|
}, mods: string[]): Function;
|
|
80
|
+
/** MutationObserver reference, set by sprae.start() */
|
|
81
|
+
export let mo: any;
|
|
82
|
+
export function mutate(fn: any): void;
|
|
83
|
+
export function start(root?: Element, values?: any): any;
|
|
80
84
|
export function frag(tpl: HTMLTemplateElement | FragmentLike): FragmentLike;
|
|
81
85
|
export function dashcase(str: string): string;
|
|
82
86
|
export function attr(el: Element, name: string, v: string | boolean | null | undefined): void;
|
|
@@ -219,4 +223,7 @@ export type FragmentLike = {
|
|
|
219
223
|
* @returns {SpraeState & Object} The reactive state object associated with the element.
|
|
220
224
|
*/
|
|
221
225
|
declare function sprae(el?: Element, state?: any): SpraeState & any;
|
|
226
|
+
declare namespace sprae {
|
|
227
|
+
let version: any;
|
|
228
|
+
}
|
|
222
229
|
//# sourceMappingURL=core.d.ts.map
|
package/types/core.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"core.d.ts","sourceRoot":"","sources":["../core.js"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"core.d.ts","sourceRoot":"","sources":["../core.js"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"else.d.ts","sourceRoot":"","sources":["../../directive/else.js"],"names":[],"mappings":"AAQe,8BAHJ,OAAO,GAAG,mBAAmB,GAC3B,MAAM,IAAI,
|
|
1
|
+
{"version":3,"file":"else.d.ts","sourceRoot":"","sources":["../../directive/else.js"],"names":[],"mappings":"AAQe,8BAHJ,OAAO,GAAG,mBAAmB,GAC3B,MAAM,IAAI,CAiBtB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"if.d.ts","sourceRoot":"","sources":["../../directive/if.js"],"names":[],"mappings":"AASe,8BAJJ,OAAO,GAAG,mBAAmB,eAE3B,CAAC,KAAK,EAAE,GAAG,KAAK,IAAI,
|
|
1
|
+
{"version":3,"file":"if.d.ts","sourceRoot":"","sources":["../../directive/if.js"],"names":[],"mappings":"AASe,8BAJJ,OAAO,GAAG,mBAAmB,eAE3B,CAAC,KAAK,EAAE,GAAG,KAAK,IAAI,CA4ChC"}
|
package/types/sprae.d.ts
CHANGED
|
@@ -6,10 +6,10 @@ import { effect } from './core.js';
|
|
|
6
6
|
import { computed } from './core.js';
|
|
7
7
|
import { batch } from './core.js';
|
|
8
8
|
import { untracked } from './core.js';
|
|
9
|
-
|
|
9
|
+
import { start } from './core.js';
|
|
10
10
|
import { use } from './core.js';
|
|
11
11
|
import { throttle } from './core.js';
|
|
12
12
|
import { debounce } from './core.js';
|
|
13
|
-
export
|
|
14
|
-
export { sprae, store, signal, effect, computed, batch, untracked, use, throttle, debounce };
|
|
13
|
+
export function dispose(el: Element): any;
|
|
14
|
+
export { sprae, store, signal, effect, computed, batch, untracked, start, use, throttle, debounce };
|
|
15
15
|
//# sourceMappingURL=sprae.d.ts.map
|
package/types/sprae.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sprae.d.ts","sourceRoot":"","sources":["../sprae.js"],"names":[],"mappings":";
|
|
1
|
+
{"version":3,"file":"sprae.d.ts","sourceRoot":"","sources":["../sprae.js"],"names":[],"mappings":";kBAQ+H,WAAW;kBAHxH,YAAY;uBAC6B,WAAW;uBAAX,WAAW;yBAAX,WAAW;sBAAX,WAAW;0BAAX,WAAW;sBAEyD,WAAW;oBAAX,WAAW;yBAAX,WAAW;yBAAX,WAAW;AAgN1H,4BAFL,OAAO,OAEsC"}
|
package/types/store.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../store.js"],"names":[],"mappings":"AAOA,oDAAoD;AACpD,qCAAyC;AAEzC,2EAA2E;AAC3E,oCAAuC;AAEvC,mDAAmD;AACnD,iCAAiC;AA0B1B,sBAVe,CAAC,0BACZ,CAAC,iBAEC,aAAa,CAAC,CAAC,CAAC,
|
|
1
|
+
{"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../store.js"],"names":[],"mappings":"AAOA,oDAAoD;AACpD,qCAAyC;AAEzC,2EAA2E;AAC3E,oCAAuC;AAEvC,mDAAmD;AACnD,iCAAiC;AA0B1B,sBAVe,CAAC,0BACZ,CAAC,iBAEC,aAAa,CAAC,CAAC,CAAC,CA+F5B;;;;;0BA3GY,CAAC,IACD,CAAC,GAAG;IAAE,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,GAAG,MAAM,EAAE,OAAO,WAAW,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,CAAA;CAAE"}
|