Actualizar sigpro_work.js
This commit is contained in:
@@ -34,36 +34,15 @@ const untrack = (fn) => {
|
|||||||
finally { activeEffect = prev; }
|
finally { activeEffect = prev; }
|
||||||
};
|
};
|
||||||
|
|
||||||
const $ = (init, key = null) => {
|
const $ = (val, key = null) => {
|
||||||
const subs = new Set();
|
const subs = new Set();
|
||||||
let sig;
|
|
||||||
|
|
||||||
if (typeof init === "function") {
|
|
||||||
let cached, dirty = true;
|
|
||||||
Watch(() => {
|
|
||||||
if (!dirty) {
|
|
||||||
dirty = true;
|
|
||||||
subs.forEach(e => effectQueue.add(e));
|
|
||||||
if (!isFlushing) queueMicrotask(flushEffects);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
sig = () => {
|
|
||||||
if (dirty) { cached = init(); dirty = false; }
|
|
||||||
if (activeEffect && !activeEffect._deleted) {
|
|
||||||
subs.add(activeEffect);
|
|
||||||
activeEffect._deps.add(subs);
|
|
||||||
}
|
|
||||||
return cached;
|
|
||||||
};
|
|
||||||
} else {
|
|
||||||
let val = init;
|
|
||||||
if (key) {
|
if (key) {
|
||||||
try {
|
try {
|
||||||
const saved = localStorage.getItem(key);
|
const saved = localStorage.getItem(key);
|
||||||
if (saved != null) val = JSON.parse(saved);
|
if (saved != null) val = JSON.parse(saved);
|
||||||
} catch {}
|
} catch {}
|
||||||
}
|
}
|
||||||
sig = (...args) => {
|
const sig = (...args) => {
|
||||||
if (args.length) {
|
if (args.length) {
|
||||||
const next = typeof args[0] === "function" ? untrack(() => args[0](val)) : args[0];
|
const next = typeof args[0] === "function" ? untrack(() => args[0](val)) : args[0];
|
||||||
if (!Object.is(val, next)) {
|
if (!Object.is(val, next)) {
|
||||||
@@ -78,13 +57,39 @@ const $ = (init, key = null) => {
|
|||||||
}
|
}
|
||||||
return val;
|
return val;
|
||||||
};
|
};
|
||||||
|
sig._isSig = true;
|
||||||
|
return sig;
|
||||||
|
};
|
||||||
|
|
||||||
|
const $$ = (fn) => {
|
||||||
|
const subs = new Set();
|
||||||
|
let cached, dirty = true;
|
||||||
|
|
||||||
|
const runner = Watch(() => {
|
||||||
|
if (!dirty) {
|
||||||
|
dirty = true;
|
||||||
|
subs.forEach(e => effectQueue.add(e));
|
||||||
|
if (!isFlushing) queueMicrotask(flushEffects);
|
||||||
}
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
const sig = () => {
|
||||||
|
if (dirty) {
|
||||||
|
cached = fn();
|
||||||
|
dirty = false;
|
||||||
|
}
|
||||||
|
if (activeEffect && !activeEffect._deleted) {
|
||||||
|
subs.add(activeEffect);
|
||||||
|
activeEffect._deps.add(subs);
|
||||||
|
}
|
||||||
|
return cached;
|
||||||
|
};
|
||||||
|
|
||||||
sig._isSig = true;
|
sig._isSig = true;
|
||||||
return sig;
|
return sig;
|
||||||
};
|
};
|
||||||
|
|
||||||
const $$ = (obj) => {
|
const $_ = (obj) => {
|
||||||
if (obj === null || typeof obj !== "object" || obj._isSig) return obj;
|
if (obj === null || typeof obj !== "object" || obj._isSig) return obj;
|
||||||
if (reactiveCache.has(obj)) return reactiveCache.get(obj);
|
if (reactiveCache.has(obj)) return reactiveCache.get(obj);
|
||||||
|
|
||||||
@@ -100,7 +105,7 @@ const $$ = (obj) => {
|
|||||||
}
|
}
|
||||||
|
|
||||||
const value = Reflect.get(target, key);
|
const value = Reflect.get(target, key);
|
||||||
return (typeof value === "object" && value !== null) ? $$(value) : value;
|
return (typeof value === "object" && value !== null) ? $_(value) : value;
|
||||||
},
|
},
|
||||||
set(target, key, value) {
|
set(target, key, value) {
|
||||||
const prev = Reflect.get(target, key);
|
const prev = Reflect.get(target, key);
|
||||||
@@ -399,7 +404,7 @@ const Mount = (component, target) => {
|
|||||||
return instance;
|
return instance;
|
||||||
};
|
};
|
||||||
|
|
||||||
const SigPro = { $, $$, untrack, Render, Watch, Tag, If, For, Router, Mount, Share, Use };
|
const SigPro = { $, $$, $_, untrack, Render, Watch, Tag, If, For, Router, Mount, Share, Use };
|
||||||
|
|
||||||
if (typeof window !== "undefined") {
|
if (typeof window !== "undefined") {
|
||||||
Object.assign(window, SigPro);
|
Object.assign(window, SigPro);
|
||||||
@@ -413,5 +418,5 @@ if (typeof window !== "undefined") {
|
|||||||
window.SigPro = Object.freeze(SigPro);
|
window.SigPro = Object.freeze(SigPro);
|
||||||
}
|
}
|
||||||
|
|
||||||
export { $, $$, untrack, Render, Watch, Tag, If, For, Router, Mount, Share, Use };
|
export { $, $$, $_, untrack, Render, Watch, Tag, If, For, Router, Mount, Share, Use };
|
||||||
export default SigPro;
|
export default SigPro;
|
||||||
Reference in New Issue
Block a user