Reforced For (in list)
This commit is contained in:
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "sigpro",
|
"name": "sigpro",
|
||||||
"version": "1.1.21",
|
"version": "1.1.22",
|
||||||
"type": "module",
|
"type": "module",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"main": "./dist/sigpro.esm.min.js",
|
"main": "./dist/sigpro.esm.min.js",
|
||||||
|
|||||||
17
sigpro.js
17
sigpro.js
@@ -179,7 +179,7 @@ const $$ = (object, cache = new WeakMap()) => {
|
|||||||
const Watch = (target, callbackFn) => {
|
const Watch = (target, callbackFn) => {
|
||||||
const isExplicit = isArr(target);
|
const isExplicit = isArr(target);
|
||||||
const callback = isExplicit ? callbackFn : target;
|
const callback = isExplicit ? callbackFn : target;
|
||||||
if (!isFunc(callback)) return () => {};
|
if (!isFunc(callback)) return () => { };
|
||||||
|
|
||||||
const owner = currentOwner;
|
const owner = currentOwner;
|
||||||
const runner = () => {
|
const runner = () => {
|
||||||
@@ -337,13 +337,21 @@ const For = (source, renderFn, keyFn, tag = "div", props = { style: "display:con
|
|||||||
for (let i = 0; i < items.length; i++) {
|
for (let i = 0; i < items.length; i++) {
|
||||||
const item = items[i];
|
const item = items[i];
|
||||||
const key = keyFn ? keyFn(item, i) : i;
|
const key = keyFn ? keyFn(item, i) : i;
|
||||||
let view = viewCache.get(key) || Render(() => renderFn(item, i));
|
let view = viewCache.get(key);
|
||||||
|
|
||||||
|
if (!view) {
|
||||||
|
const result = renderFn(item, i);
|
||||||
|
view = result instanceof Node
|
||||||
|
? { container: result, destroy: () => { cleanupNode(result); result.remove(); } }
|
||||||
|
: Render(() => result);
|
||||||
|
}
|
||||||
|
|
||||||
viewCache.delete(key);
|
viewCache.delete(key);
|
||||||
nextCache.set(key, view);
|
nextCache.set(key, view);
|
||||||
order.push(key);
|
order.push(key);
|
||||||
}
|
}
|
||||||
|
|
||||||
viewCache.forEach((view) => { view.destroy(); view.container.remove(); });
|
viewCache.forEach(v => v.destroy());
|
||||||
|
|
||||||
let anchor = marker;
|
let anchor = marker;
|
||||||
for (let i = order.length - 1; i >= 0; i--) {
|
for (let i = order.length - 1; i >= 0; i--) {
|
||||||
@@ -415,9 +423,8 @@ const Mount = (component, target) => {
|
|||||||
return instance;
|
return instance;
|
||||||
};
|
};
|
||||||
|
|
||||||
export const Fragment = ({ children }) => children;
|
|
||||||
|
|
||||||
const SigPro = { $, $$, Render, Watch, Tag, If, For, Router, Mount, Fragment };
|
const SigPro = { $, $$, Render, Watch, Tag, If, For, Router, Mount };
|
||||||
|
|
||||||
if (typeof window !== "undefined") {
|
if (typeof window !== "undefined") {
|
||||||
assign(window, SigPro);
|
assign(window, SigPro);
|
||||||
|
|||||||
Reference in New Issue
Block a user