This commit is contained in:
70
dist/sigpro.esm.js
vendored
70
dist/sigpro.esm.js
vendored
@@ -33,7 +33,7 @@ var dispose = (eff) => {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
var _onUnmount = (fn) => {
|
var onUnmount = (fn) => {
|
||||||
if (activeOwner)
|
if (activeOwner)
|
||||||
(activeOwner._cleanups ||= new Set).add(fn);
|
(activeOwner._cleanups ||= new Set).add(fn);
|
||||||
};
|
};
|
||||||
@@ -151,7 +151,7 @@ var $ = (val, key = null) => {
|
|||||||
computed._disposed = false;
|
computed._disposed = false;
|
||||||
computed.stop = () => {};
|
computed.stop = () => {};
|
||||||
if (activeOwner)
|
if (activeOwner)
|
||||||
_onUnmount(computed.stop);
|
onUnmount(computed.stop);
|
||||||
return computed;
|
return computed;
|
||||||
}
|
}
|
||||||
if (key)
|
if (key)
|
||||||
@@ -175,44 +175,44 @@ var $ = (val, key = null) => {
|
|||||||
var $$ = (target) => {
|
var $$ = (target) => {
|
||||||
if (!isObj(target))
|
if (!isObj(target))
|
||||||
return target;
|
return target;
|
||||||
let proxy = proxyCache.get(target);
|
const cached = proxyCache.get(target);
|
||||||
if (proxy)
|
if (cached)
|
||||||
return proxy;
|
return cached;
|
||||||
const subsMap = new Map;
|
const subs = new Map;
|
||||||
const getSubs = (k) => {
|
const getSubs = (key) => {
|
||||||
let s = subsMap.get(k);
|
let set = subs.get(key);
|
||||||
if (!s)
|
if (!set)
|
||||||
subsMap.set(k, s = new Set);
|
subs.set(key, set = new Set);
|
||||||
return s;
|
return set;
|
||||||
};
|
};
|
||||||
proxy = new Proxy(target, {
|
const proxy = new Proxy(target, {
|
||||||
get(t, k, receiver) {
|
get(target2, key, receiver) {
|
||||||
if (typeof k !== "symbol")
|
if (typeof key !== "symbol")
|
||||||
trackUpdate(getSubs(k));
|
trackUpdate(getSubs(key));
|
||||||
return $$(Reflect.get(t, k, receiver));
|
return $$(Reflect.get(target2, key, receiver));
|
||||||
},
|
},
|
||||||
set(t, k, v, receiver) {
|
set(target2, key, value, receiver) {
|
||||||
const isNew = !Reflect.has(t, k);
|
const hadKey = Reflect.has(target2, key);
|
||||||
const oldV = Reflect.get(t, k, receiver);
|
const oldValue = Reflect.get(target2, key, receiver);
|
||||||
const result = Reflect.set(t, k, v, receiver);
|
const result = Reflect.set(target2, key, value, receiver);
|
||||||
if (result && !Object.is(oldV, v)) {
|
if (result && !Object.is(oldValue, value)) {
|
||||||
trackUpdate(getSubs(k), true);
|
trackUpdate(getSubs(key), true);
|
||||||
if (isNew)
|
if (!hadKey)
|
||||||
trackUpdate(getSubs(ITER), true);
|
trackUpdate(getSubs(ITER), true);
|
||||||
}
|
}
|
||||||
return result;
|
return result;
|
||||||
},
|
},
|
||||||
deleteProperty(t, k) {
|
deleteProperty(target2, key) {
|
||||||
const result = Reflect.deleteProperty(t, k);
|
const result = Reflect.deleteProperty(target2, key);
|
||||||
if (result) {
|
if (result) {
|
||||||
trackUpdate(getSubs(k), true);
|
trackUpdate(getSubs(key), true);
|
||||||
trackUpdate(getSubs(ITER), true);
|
trackUpdate(getSubs(ITER), true);
|
||||||
}
|
}
|
||||||
return result;
|
return result;
|
||||||
},
|
},
|
||||||
ownKeys(t) {
|
ownKeys(target2) {
|
||||||
trackUpdate(getSubs(ITER));
|
trackUpdate(getSubs(ITER));
|
||||||
return Reflect.ownKeys(t);
|
return Reflect.ownKeys(target2);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
proxyCache.set(target, proxy);
|
proxyCache.set(target, proxy);
|
||||||
@@ -305,7 +305,7 @@ var h = (tag, props = {}, children = []) => {
|
|||||||
el.addEventListener(ev, v);
|
el.addEventListener(ev, v);
|
||||||
const off = () => el.removeEventListener(ev, v);
|
const off = () => el.removeEventListener(ev, v);
|
||||||
el._cleanups.add(off);
|
el._cleanups.add(off);
|
||||||
_onUnmount(off);
|
onUnmount(off);
|
||||||
} else if (isFunc(v)) {
|
} else if (isFunc(v)) {
|
||||||
const effect = createEffect(() => {
|
const effect = createEffect(() => {
|
||||||
const val = validateAttr(k, v());
|
const val = validateAttr(k, v());
|
||||||
@@ -320,7 +320,7 @@ var h = (tag, props = {}, children = []) => {
|
|||||||
});
|
});
|
||||||
effect();
|
effect();
|
||||||
el._cleanups.add(() => dispose(effect));
|
el._cleanups.add(() => dispose(effect));
|
||||||
_onUnmount(() => dispose(effect));
|
onUnmount(() => dispose(effect));
|
||||||
if (/^(INPUT|TEXTAREA|SELECT)$/.test(el.tagName) && (k === "value" || k === "checked")) {
|
if (/^(INPUT|TEXTAREA|SELECT)$/.test(el.tagName) && (k === "value" || k === "checked")) {
|
||||||
const evType = k === "checked" ? "change" : "input";
|
const evType = k === "checked" ? "change" : "input";
|
||||||
el.addEventListener(evType, (ev) => v(ev.target[k]));
|
el.addEventListener(evType, (ev) => v(ev.target[k]));
|
||||||
@@ -366,7 +366,7 @@ var h = (tag, props = {}, children = []) => {
|
|||||||
});
|
});
|
||||||
effect();
|
effect();
|
||||||
el._cleanups.add(() => dispose(effect));
|
el._cleanups.add(() => dispose(effect));
|
||||||
_onUnmount(() => dispose(effect));
|
onUnmount(() => dispose(effect));
|
||||||
} else {
|
} else {
|
||||||
const node = ensureNode(c);
|
const node = ensureNode(c);
|
||||||
el.appendChild(node);
|
el.appendChild(node);
|
||||||
@@ -379,13 +379,12 @@ var h = (tag, props = {}, children = []) => {
|
|||||||
};
|
};
|
||||||
var render = (renderFn) => {
|
var render = (renderFn) => {
|
||||||
const cleanups = new Set;
|
const cleanups = new Set;
|
||||||
const mounts = [];
|
|
||||||
const previousOwner = activeOwner;
|
const previousOwner = activeOwner;
|
||||||
const previousEffect = activeEffect;
|
const previousEffect = activeEffect;
|
||||||
const container = doc.createElement("div");
|
const container = doc.createElement("div");
|
||||||
container.style.display = "contents";
|
container.style.display = "contents";
|
||||||
container.setAttribute("role", "presentation");
|
container.setAttribute("role", "presentation");
|
||||||
activeOwner = { _cleanups: cleanups, _mounts: mounts };
|
activeOwner = { _cleanups: cleanups };
|
||||||
activeEffect = null;
|
activeEffect = null;
|
||||||
const processResult = (result) => {
|
const processResult = (result) => {
|
||||||
if (!result)
|
if (!result)
|
||||||
@@ -405,7 +404,6 @@ var render = (renderFn) => {
|
|||||||
activeOwner = previousOwner;
|
activeOwner = previousOwner;
|
||||||
activeEffect = previousEffect;
|
activeEffect = previousEffect;
|
||||||
}
|
}
|
||||||
mounts.forEach((fn) => fn());
|
|
||||||
return {
|
return {
|
||||||
_isRuntime: true,
|
_isRuntime: true,
|
||||||
container,
|
container,
|
||||||
@@ -449,7 +447,7 @@ var when = (cond, render2, { enter, leave } = {}) => {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
return _onUnmount(() => view?.destroy()), wrap;
|
return onUnmount(() => view?.destroy()), wrap;
|
||||||
};
|
};
|
||||||
var each = (src, itemFn, keyFn) => {
|
var each = (src, itemFn, keyFn) => {
|
||||||
const anchor = doc.createTextNode("");
|
const anchor = doc.createTextNode("");
|
||||||
@@ -488,7 +486,7 @@ var router = (routes) => {
|
|||||||
const path = $(getHash());
|
const path = $(getHash());
|
||||||
const handler = () => path(getHash());
|
const handler = () => path(getHash());
|
||||||
window.addEventListener("hashchange", handler);
|
window.addEventListener("hashchange", handler);
|
||||||
_onUnmount(() => window.removeEventListener("hashchange", handler));
|
onUnmount(() => window.removeEventListener("hashchange", handler));
|
||||||
const hook = h("div", { class: "router-hook" });
|
const hook = h("div", { class: "router-hook" });
|
||||||
let currentView = null;
|
let currentView = null;
|
||||||
watch([path], () => {
|
watch([path], () => {
|
||||||
|
|||||||
2
dist/sigpro.esm.min.js
vendored
2
dist/sigpro.esm.min.js
vendored
File diff suppressed because one or more lines are too long
70
dist/sigpro.js
vendored
70
dist/sigpro.js
vendored
@@ -86,7 +86,7 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
var _onUnmount = (fn) => {
|
var onUnmount = (fn) => {
|
||||||
if (activeOwner)
|
if (activeOwner)
|
||||||
(activeOwner._cleanups ||= new Set).add(fn);
|
(activeOwner._cleanups ||= new Set).add(fn);
|
||||||
};
|
};
|
||||||
@@ -204,7 +204,7 @@
|
|||||||
computed._disposed = false;
|
computed._disposed = false;
|
||||||
computed.stop = () => {};
|
computed.stop = () => {};
|
||||||
if (activeOwner)
|
if (activeOwner)
|
||||||
_onUnmount(computed.stop);
|
onUnmount(computed.stop);
|
||||||
return computed;
|
return computed;
|
||||||
}
|
}
|
||||||
if (key)
|
if (key)
|
||||||
@@ -228,44 +228,44 @@
|
|||||||
var $$ = (target) => {
|
var $$ = (target) => {
|
||||||
if (!isObj(target))
|
if (!isObj(target))
|
||||||
return target;
|
return target;
|
||||||
let proxy = proxyCache.get(target);
|
const cached = proxyCache.get(target);
|
||||||
if (proxy)
|
if (cached)
|
||||||
return proxy;
|
return cached;
|
||||||
const subsMap = new Map;
|
const subs = new Map;
|
||||||
const getSubs = (k) => {
|
const getSubs = (key) => {
|
||||||
let s = subsMap.get(k);
|
let set = subs.get(key);
|
||||||
if (!s)
|
if (!set)
|
||||||
subsMap.set(k, s = new Set);
|
subs.set(key, set = new Set);
|
||||||
return s;
|
return set;
|
||||||
};
|
};
|
||||||
proxy = new Proxy(target, {
|
const proxy = new Proxy(target, {
|
||||||
get(t, k, receiver) {
|
get(target2, key, receiver) {
|
||||||
if (typeof k !== "symbol")
|
if (typeof key !== "symbol")
|
||||||
trackUpdate(getSubs(k));
|
trackUpdate(getSubs(key));
|
||||||
return $$(Reflect.get(t, k, receiver));
|
return $$(Reflect.get(target2, key, receiver));
|
||||||
},
|
},
|
||||||
set(t, k, v, receiver) {
|
set(target2, key, value, receiver) {
|
||||||
const isNew = !Reflect.has(t, k);
|
const hadKey = Reflect.has(target2, key);
|
||||||
const oldV = Reflect.get(t, k, receiver);
|
const oldValue = Reflect.get(target2, key, receiver);
|
||||||
const result = Reflect.set(t, k, v, receiver);
|
const result = Reflect.set(target2, key, value, receiver);
|
||||||
if (result && !Object.is(oldV, v)) {
|
if (result && !Object.is(oldValue, value)) {
|
||||||
trackUpdate(getSubs(k), true);
|
trackUpdate(getSubs(key), true);
|
||||||
if (isNew)
|
if (!hadKey)
|
||||||
trackUpdate(getSubs(ITER), true);
|
trackUpdate(getSubs(ITER), true);
|
||||||
}
|
}
|
||||||
return result;
|
return result;
|
||||||
},
|
},
|
||||||
deleteProperty(t, k) {
|
deleteProperty(target2, key) {
|
||||||
const result = Reflect.deleteProperty(t, k);
|
const result = Reflect.deleteProperty(target2, key);
|
||||||
if (result) {
|
if (result) {
|
||||||
trackUpdate(getSubs(k), true);
|
trackUpdate(getSubs(key), true);
|
||||||
trackUpdate(getSubs(ITER), true);
|
trackUpdate(getSubs(ITER), true);
|
||||||
}
|
}
|
||||||
return result;
|
return result;
|
||||||
},
|
},
|
||||||
ownKeys(t) {
|
ownKeys(target2) {
|
||||||
trackUpdate(getSubs(ITER));
|
trackUpdate(getSubs(ITER));
|
||||||
return Reflect.ownKeys(t);
|
return Reflect.ownKeys(target2);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
proxyCache.set(target, proxy);
|
proxyCache.set(target, proxy);
|
||||||
@@ -358,7 +358,7 @@
|
|||||||
el.addEventListener(ev, v);
|
el.addEventListener(ev, v);
|
||||||
const off = () => el.removeEventListener(ev, v);
|
const off = () => el.removeEventListener(ev, v);
|
||||||
el._cleanups.add(off);
|
el._cleanups.add(off);
|
||||||
_onUnmount(off);
|
onUnmount(off);
|
||||||
} else if (isFunc(v)) {
|
} else if (isFunc(v)) {
|
||||||
const effect = createEffect(() => {
|
const effect = createEffect(() => {
|
||||||
const val = validateAttr(k, v());
|
const val = validateAttr(k, v());
|
||||||
@@ -373,7 +373,7 @@
|
|||||||
});
|
});
|
||||||
effect();
|
effect();
|
||||||
el._cleanups.add(() => dispose(effect));
|
el._cleanups.add(() => dispose(effect));
|
||||||
_onUnmount(() => dispose(effect));
|
onUnmount(() => dispose(effect));
|
||||||
if (/^(INPUT|TEXTAREA|SELECT)$/.test(el.tagName) && (k === "value" || k === "checked")) {
|
if (/^(INPUT|TEXTAREA|SELECT)$/.test(el.tagName) && (k === "value" || k === "checked")) {
|
||||||
const evType = k === "checked" ? "change" : "input";
|
const evType = k === "checked" ? "change" : "input";
|
||||||
el.addEventListener(evType, (ev) => v(ev.target[k]));
|
el.addEventListener(evType, (ev) => v(ev.target[k]));
|
||||||
@@ -419,7 +419,7 @@
|
|||||||
});
|
});
|
||||||
effect();
|
effect();
|
||||||
el._cleanups.add(() => dispose(effect));
|
el._cleanups.add(() => dispose(effect));
|
||||||
_onUnmount(() => dispose(effect));
|
onUnmount(() => dispose(effect));
|
||||||
} else {
|
} else {
|
||||||
const node = ensureNode(c);
|
const node = ensureNode(c);
|
||||||
el.appendChild(node);
|
el.appendChild(node);
|
||||||
@@ -432,13 +432,12 @@
|
|||||||
};
|
};
|
||||||
var render = (renderFn) => {
|
var render = (renderFn) => {
|
||||||
const cleanups = new Set;
|
const cleanups = new Set;
|
||||||
const mounts = [];
|
|
||||||
const previousOwner = activeOwner;
|
const previousOwner = activeOwner;
|
||||||
const previousEffect = activeEffect;
|
const previousEffect = activeEffect;
|
||||||
const container = doc.createElement("div");
|
const container = doc.createElement("div");
|
||||||
container.style.display = "contents";
|
container.style.display = "contents";
|
||||||
container.setAttribute("role", "presentation");
|
container.setAttribute("role", "presentation");
|
||||||
activeOwner = { _cleanups: cleanups, _mounts: mounts };
|
activeOwner = { _cleanups: cleanups };
|
||||||
activeEffect = null;
|
activeEffect = null;
|
||||||
const processResult = (result) => {
|
const processResult = (result) => {
|
||||||
if (!result)
|
if (!result)
|
||||||
@@ -458,7 +457,6 @@
|
|||||||
activeOwner = previousOwner;
|
activeOwner = previousOwner;
|
||||||
activeEffect = previousEffect;
|
activeEffect = previousEffect;
|
||||||
}
|
}
|
||||||
mounts.forEach((fn) => fn());
|
|
||||||
return {
|
return {
|
||||||
_isRuntime: true,
|
_isRuntime: true,
|
||||||
container,
|
container,
|
||||||
@@ -502,7 +500,7 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
return _onUnmount(() => view?.destroy()), wrap;
|
return onUnmount(() => view?.destroy()), wrap;
|
||||||
};
|
};
|
||||||
var each = (src, itemFn, keyFn) => {
|
var each = (src, itemFn, keyFn) => {
|
||||||
const anchor = doc.createTextNode("");
|
const anchor = doc.createTextNode("");
|
||||||
@@ -541,7 +539,7 @@
|
|||||||
const path = $(getHash());
|
const path = $(getHash());
|
||||||
const handler = () => path(getHash());
|
const handler = () => path(getHash());
|
||||||
window.addEventListener("hashchange", handler);
|
window.addEventListener("hashchange", handler);
|
||||||
_onUnmount(() => window.removeEventListener("hashchange", handler));
|
onUnmount(() => window.removeEventListener("hashchange", handler));
|
||||||
const hook = h("div", { class: "router-hook" });
|
const hook = h("div", { class: "router-hook" });
|
||||||
let currentView = null;
|
let currentView = null;
|
||||||
watch([path], () => {
|
watch([path], () => {
|
||||||
|
|||||||
2
dist/sigpro.min.js
vendored
2
dist/sigpro.min.js
vendored
File diff suppressed because one or more lines are too long
@@ -86,7 +86,7 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
var _onUnmount = (fn) => {
|
var onUnmount = (fn) => {
|
||||||
if (activeOwner)
|
if (activeOwner)
|
||||||
(activeOwner._cleanups ||= new Set).add(fn);
|
(activeOwner._cleanups ||= new Set).add(fn);
|
||||||
};
|
};
|
||||||
@@ -204,7 +204,7 @@
|
|||||||
computed._disposed = false;
|
computed._disposed = false;
|
||||||
computed.stop = () => {};
|
computed.stop = () => {};
|
||||||
if (activeOwner)
|
if (activeOwner)
|
||||||
_onUnmount(computed.stop);
|
onUnmount(computed.stop);
|
||||||
return computed;
|
return computed;
|
||||||
}
|
}
|
||||||
if (key)
|
if (key)
|
||||||
@@ -228,44 +228,44 @@
|
|||||||
var $$ = (target) => {
|
var $$ = (target) => {
|
||||||
if (!isObj(target))
|
if (!isObj(target))
|
||||||
return target;
|
return target;
|
||||||
let proxy = proxyCache.get(target);
|
const cached = proxyCache.get(target);
|
||||||
if (proxy)
|
if (cached)
|
||||||
return proxy;
|
return cached;
|
||||||
const subsMap = new Map;
|
const subs = new Map;
|
||||||
const getSubs = (k) => {
|
const getSubs = (key) => {
|
||||||
let s = subsMap.get(k);
|
let set = subs.get(key);
|
||||||
if (!s)
|
if (!set)
|
||||||
subsMap.set(k, s = new Set);
|
subs.set(key, set = new Set);
|
||||||
return s;
|
return set;
|
||||||
};
|
};
|
||||||
proxy = new Proxy(target, {
|
const proxy = new Proxy(target, {
|
||||||
get(t, k, receiver) {
|
get(target2, key, receiver) {
|
||||||
if (typeof k !== "symbol")
|
if (typeof key !== "symbol")
|
||||||
trackUpdate(getSubs(k));
|
trackUpdate(getSubs(key));
|
||||||
return $$(Reflect.get(t, k, receiver));
|
return $$(Reflect.get(target2, key, receiver));
|
||||||
},
|
},
|
||||||
set(t, k, v, receiver) {
|
set(target2, key, value, receiver) {
|
||||||
const isNew = !Reflect.has(t, k);
|
const hadKey = Reflect.has(target2, key);
|
||||||
const oldV = Reflect.get(t, k, receiver);
|
const oldValue = Reflect.get(target2, key, receiver);
|
||||||
const result = Reflect.set(t, k, v, receiver);
|
const result = Reflect.set(target2, key, value, receiver);
|
||||||
if (result && !Object.is(oldV, v)) {
|
if (result && !Object.is(oldValue, value)) {
|
||||||
trackUpdate(getSubs(k), true);
|
trackUpdate(getSubs(key), true);
|
||||||
if (isNew)
|
if (!hadKey)
|
||||||
trackUpdate(getSubs(ITER), true);
|
trackUpdate(getSubs(ITER), true);
|
||||||
}
|
}
|
||||||
return result;
|
return result;
|
||||||
},
|
},
|
||||||
deleteProperty(t, k) {
|
deleteProperty(target2, key) {
|
||||||
const result = Reflect.deleteProperty(t, k);
|
const result = Reflect.deleteProperty(target2, key);
|
||||||
if (result) {
|
if (result) {
|
||||||
trackUpdate(getSubs(k), true);
|
trackUpdate(getSubs(key), true);
|
||||||
trackUpdate(getSubs(ITER), true);
|
trackUpdate(getSubs(ITER), true);
|
||||||
}
|
}
|
||||||
return result;
|
return result;
|
||||||
},
|
},
|
||||||
ownKeys(t) {
|
ownKeys(target2) {
|
||||||
trackUpdate(getSubs(ITER));
|
trackUpdate(getSubs(ITER));
|
||||||
return Reflect.ownKeys(t);
|
return Reflect.ownKeys(target2);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
proxyCache.set(target, proxy);
|
proxyCache.set(target, proxy);
|
||||||
@@ -358,7 +358,7 @@
|
|||||||
el.addEventListener(ev, v);
|
el.addEventListener(ev, v);
|
||||||
const off = () => el.removeEventListener(ev, v);
|
const off = () => el.removeEventListener(ev, v);
|
||||||
el._cleanups.add(off);
|
el._cleanups.add(off);
|
||||||
_onUnmount(off);
|
onUnmount(off);
|
||||||
} else if (isFunc(v)) {
|
} else if (isFunc(v)) {
|
||||||
const effect = createEffect(() => {
|
const effect = createEffect(() => {
|
||||||
const val = validateAttr(k, v());
|
const val = validateAttr(k, v());
|
||||||
@@ -373,7 +373,7 @@
|
|||||||
});
|
});
|
||||||
effect();
|
effect();
|
||||||
el._cleanups.add(() => dispose(effect));
|
el._cleanups.add(() => dispose(effect));
|
||||||
_onUnmount(() => dispose(effect));
|
onUnmount(() => dispose(effect));
|
||||||
if (/^(INPUT|TEXTAREA|SELECT)$/.test(el.tagName) && (k === "value" || k === "checked")) {
|
if (/^(INPUT|TEXTAREA|SELECT)$/.test(el.tagName) && (k === "value" || k === "checked")) {
|
||||||
const evType = k === "checked" ? "change" : "input";
|
const evType = k === "checked" ? "change" : "input";
|
||||||
el.addEventListener(evType, (ev) => v(ev.target[k]));
|
el.addEventListener(evType, (ev) => v(ev.target[k]));
|
||||||
@@ -419,7 +419,7 @@
|
|||||||
});
|
});
|
||||||
effect();
|
effect();
|
||||||
el._cleanups.add(() => dispose(effect));
|
el._cleanups.add(() => dispose(effect));
|
||||||
_onUnmount(() => dispose(effect));
|
onUnmount(() => dispose(effect));
|
||||||
} else {
|
} else {
|
||||||
const node = ensureNode(c);
|
const node = ensureNode(c);
|
||||||
el.appendChild(node);
|
el.appendChild(node);
|
||||||
@@ -432,13 +432,12 @@
|
|||||||
};
|
};
|
||||||
var render = (renderFn) => {
|
var render = (renderFn) => {
|
||||||
const cleanups = new Set;
|
const cleanups = new Set;
|
||||||
const mounts = [];
|
|
||||||
const previousOwner = activeOwner;
|
const previousOwner = activeOwner;
|
||||||
const previousEffect = activeEffect;
|
const previousEffect = activeEffect;
|
||||||
const container = doc.createElement("div");
|
const container = doc.createElement("div");
|
||||||
container.style.display = "contents";
|
container.style.display = "contents";
|
||||||
container.setAttribute("role", "presentation");
|
container.setAttribute("role", "presentation");
|
||||||
activeOwner = { _cleanups: cleanups, _mounts: mounts };
|
activeOwner = { _cleanups: cleanups };
|
||||||
activeEffect = null;
|
activeEffect = null;
|
||||||
const processResult = (result) => {
|
const processResult = (result) => {
|
||||||
if (!result)
|
if (!result)
|
||||||
@@ -458,7 +457,6 @@
|
|||||||
activeOwner = previousOwner;
|
activeOwner = previousOwner;
|
||||||
activeEffect = previousEffect;
|
activeEffect = previousEffect;
|
||||||
}
|
}
|
||||||
mounts.forEach((fn) => fn());
|
|
||||||
return {
|
return {
|
||||||
_isRuntime: true,
|
_isRuntime: true,
|
||||||
container,
|
container,
|
||||||
@@ -502,7 +500,7 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
return _onUnmount(() => view?.destroy()), wrap;
|
return onUnmount(() => view?.destroy()), wrap;
|
||||||
};
|
};
|
||||||
var each = (src, itemFn, keyFn) => {
|
var each = (src, itemFn, keyFn) => {
|
||||||
const anchor = doc.createTextNode("");
|
const anchor = doc.createTextNode("");
|
||||||
@@ -541,7 +539,7 @@
|
|||||||
const path = $(getHash());
|
const path = $(getHash());
|
||||||
const handler = () => path(getHash());
|
const handler = () => path(getHash());
|
||||||
window.addEventListener("hashchange", handler);
|
window.addEventListener("hashchange", handler);
|
||||||
_onUnmount(() => window.removeEventListener("hashchange", handler));
|
onUnmount(() => window.removeEventListener("hashchange", handler));
|
||||||
const hook = h("div", { class: "router-hook" });
|
const hook = h("div", { class: "router-hook" });
|
||||||
let currentView = null;
|
let currentView = null;
|
||||||
watch([path], () => {
|
watch([path], () => {
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "sigpro",
|
"name": "sigpro",
|
||||||
"version": "1.2.14",
|
"version": "1.2.15",
|
||||||
"type": "module",
|
"type": "module",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"main": "./dist/sigpro.esm.min.js",
|
"main": "./dist/sigpro.esm.min.js",
|
||||||
|
|||||||
68
sigpro.js
68
sigpro.js
@@ -1,4 +1,4 @@
|
|||||||
// sigpro 1.2.14
|
// sigpro 1.2.15
|
||||||
const isFunc = f => typeof f === "function"
|
const isFunc = f => typeof f === "function"
|
||||||
const isObj = o => o && typeof o === "object"
|
const isObj = o => o && typeof o === "object"
|
||||||
const isArr = Array.isArray
|
const isArr = Array.isArray
|
||||||
@@ -35,7 +35,7 @@ const dispose = eff => {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
const _onUnmount = fn => {
|
const onUnmount = fn => {
|
||||||
if (activeOwner) (activeOwner._cleanups ||= new Set()).add(fn)
|
if (activeOwner) (activeOwner._cleanups ||= new Set()).add(fn)
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -144,7 +144,7 @@ const $ = (val, key = null) => {
|
|||||||
computed._deps = null
|
computed._deps = null
|
||||||
computed._disposed = false
|
computed._disposed = false
|
||||||
computed.stop = () => { }
|
computed.stop = () => { }
|
||||||
if (activeOwner) _onUnmount(computed.stop)
|
if (activeOwner) onUnmount(computed.stop)
|
||||||
return computed
|
return computed
|
||||||
}
|
}
|
||||||
if (key) try { val = JSON.parse(localStorage.getItem(key)) ?? val } catch (e) { }
|
if (key) try { val = JSON.parse(localStorage.getItem(key)) ?? val } catch (e) { }
|
||||||
@@ -165,43 +165,42 @@ const $ = (val, key = null) => {
|
|||||||
const $$ = (target) => {
|
const $$ = (target) => {
|
||||||
if (!isObj(target)) return target
|
if (!isObj(target)) return target
|
||||||
|
|
||||||
let proxy = proxyCache.get(target)
|
const cached = proxyCache.get(target)
|
||||||
if (proxy) return proxy
|
if (cached) return cached
|
||||||
|
|
||||||
const subsMap = new Map()
|
const subs = new Map()
|
||||||
const getSubs = (k) => {
|
const getSubs = (key) => {
|
||||||
let s = subsMap.get(k)
|
let set = subs.get(key)
|
||||||
if (!s) subsMap.set(k, (s = new Set()))
|
if (!set) subs.set(key, set = new Set())
|
||||||
return s
|
return set
|
||||||
}
|
}
|
||||||
|
|
||||||
proxy = new Proxy(target, {
|
const proxy = new Proxy(target, {
|
||||||
get(t, k, receiver) {
|
get(target, key, receiver) {
|
||||||
if (typeof k !== 'symbol') trackUpdate(getSubs(k))
|
if (typeof key !== 'symbol') trackUpdate(getSubs(key))
|
||||||
return $$(Reflect.get(t, k, receiver))
|
return $$(Reflect.get(target, key, receiver))
|
||||||
},
|
},
|
||||||
set(t, k, v, receiver) {
|
set(target, key, value, receiver) {
|
||||||
const isNew = !Reflect.has(t, k)
|
const hadKey = Reflect.has(target, key)
|
||||||
const oldV = Reflect.get(t, k, receiver)
|
const oldValue = Reflect.get(target, key, receiver)
|
||||||
const result = Reflect.set(t, k, v, receiver)
|
const result = Reflect.set(target, key, value, receiver)
|
||||||
|
if (result && !Object.is(oldValue, value)) {
|
||||||
if (result && !Object.is(oldV, v)) {
|
trackUpdate(getSubs(key), true)
|
||||||
trackUpdate(getSubs(k), true)
|
if (!hadKey) trackUpdate(getSubs(ITER), true)
|
||||||
if (isNew) trackUpdate(getSubs(ITER), true)
|
|
||||||
}
|
}
|
||||||
return result
|
return result
|
||||||
},
|
},
|
||||||
deleteProperty(t, k) {
|
deleteProperty(target, key) {
|
||||||
const result = Reflect.deleteProperty(t, k)
|
const result = Reflect.deleteProperty(target, key)
|
||||||
if (result) {
|
if (result) {
|
||||||
trackUpdate(getSubs(k), true)
|
trackUpdate(getSubs(key), true)
|
||||||
trackUpdate(getSubs(ITER), true)
|
trackUpdate(getSubs(ITER), true)
|
||||||
}
|
}
|
||||||
return result
|
return result
|
||||||
},
|
},
|
||||||
ownKeys(t) {
|
ownKeys(target) {
|
||||||
trackUpdate(getSubs(ITER))
|
trackUpdate(getSubs(ITER))
|
||||||
return Reflect.ownKeys(t)
|
return Reflect.ownKeys(target)
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
@@ -252,6 +251,7 @@ const h = (tag, props = {}, children = []) => {
|
|||||||
children = props
|
children = props
|
||||||
props = {}
|
props = {}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (isFunc(tag)) {
|
if (isFunc(tag)) {
|
||||||
const effect = createEffect(() => {
|
const effect = createEffect(() => {
|
||||||
const result = tag(props, {
|
const result = tag(props, {
|
||||||
@@ -302,7 +302,7 @@ const h = (tag, props = {}, children = []) => {
|
|||||||
el.addEventListener(ev, v)
|
el.addEventListener(ev, v)
|
||||||
const off = () => el.removeEventListener(ev, v)
|
const off = () => el.removeEventListener(ev, v)
|
||||||
el._cleanups.add(off)
|
el._cleanups.add(off)
|
||||||
_onUnmount(off)
|
onUnmount(off)
|
||||||
} else if (isFunc(v)) {
|
} else if (isFunc(v)) {
|
||||||
const effect = createEffect(() => {
|
const effect = createEffect(() => {
|
||||||
const val = validateAttr(k, v())
|
const val = validateAttr(k, v())
|
||||||
@@ -313,7 +313,7 @@ const h = (tag, props = {}, children = []) => {
|
|||||||
})
|
})
|
||||||
effect()
|
effect()
|
||||||
el._cleanups.add(() => dispose(effect))
|
el._cleanups.add(() => dispose(effect))
|
||||||
_onUnmount(() => dispose(effect))
|
onUnmount(() => dispose(effect))
|
||||||
if (/^(INPUT|TEXTAREA|SELECT)$/.test(el.tagName) && (k === "value" || k === "checked")) {
|
if (/^(INPUT|TEXTAREA|SELECT)$/.test(el.tagName) && (k === "value" || k === "checked")) {
|
||||||
const evType = k === "checked" ? "change" : "input"
|
const evType = k === "checked" ? "change" : "input"
|
||||||
el.addEventListener(evType, ev => v(ev.target[k]))
|
el.addEventListener(evType, ev => v(ev.target[k]))
|
||||||
@@ -352,7 +352,7 @@ const h = (tag, props = {}, children = []) => {
|
|||||||
})
|
})
|
||||||
effect()
|
effect()
|
||||||
el._cleanups.add(() => dispose(effect))
|
el._cleanups.add(() => dispose(effect))
|
||||||
_onUnmount(() => dispose(effect))
|
onUnmount(() => dispose(effect))
|
||||||
} else {
|
} else {
|
||||||
const node = ensureNode(c)
|
const node = ensureNode(c)
|
||||||
el.appendChild(node)
|
el.appendChild(node)
|
||||||
@@ -365,13 +365,12 @@ const h = (tag, props = {}, children = []) => {
|
|||||||
|
|
||||||
const render = renderFn => {
|
const render = renderFn => {
|
||||||
const cleanups = new Set()
|
const cleanups = new Set()
|
||||||
const mounts = []
|
|
||||||
const previousOwner = activeOwner
|
const previousOwner = activeOwner
|
||||||
const previousEffect = activeEffect
|
const previousEffect = activeEffect
|
||||||
const container = doc.createElement("div")
|
const container = doc.createElement("div")
|
||||||
container.style.display = "contents"
|
container.style.display = "contents"
|
||||||
container.setAttribute("role", "presentation")
|
container.setAttribute("role", "presentation")
|
||||||
activeOwner = { _cleanups: cleanups, _mounts: mounts }
|
activeOwner = { _cleanups: cleanups }
|
||||||
activeEffect = null
|
activeEffect = null
|
||||||
|
|
||||||
const processResult = result => {
|
const processResult = result => {
|
||||||
@@ -393,7 +392,6 @@ const render = renderFn => {
|
|||||||
activeEffect = previousEffect
|
activeEffect = previousEffect
|
||||||
}
|
}
|
||||||
|
|
||||||
mounts.forEach(fn => fn())
|
|
||||||
return {
|
return {
|
||||||
_isRuntime: true,
|
_isRuntime: true,
|
||||||
container,
|
container,
|
||||||
@@ -439,7 +437,7 @@ const when = (cond, render, { enter, leave } = {}) => {
|
|||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
return _onUnmount(() => view?.destroy()), wrap
|
return onUnmount(() => view?.destroy()), wrap
|
||||||
}
|
}
|
||||||
|
|
||||||
const each = (src, itemFn, keyFn) => {
|
const each = (src, itemFn, keyFn) => {
|
||||||
@@ -477,7 +475,7 @@ const router = routes => {
|
|||||||
const path = $(getHash())
|
const path = $(getHash())
|
||||||
const handler = () => path(getHash())
|
const handler = () => path(getHash())
|
||||||
window.addEventListener("hashchange", handler)
|
window.addEventListener("hashchange", handler)
|
||||||
_onUnmount(() => window.removeEventListener("hashchange", handler))
|
onUnmount(() => window.removeEventListener("hashchange", handler))
|
||||||
const hook = h("div", { class: "router-hook" })
|
const hook = h("div", { class: "router-hook" })
|
||||||
let currentView = null
|
let currentView = null
|
||||||
watch([path], () => {
|
watch([path], () => {
|
||||||
|
|||||||
Reference in New Issue
Block a user