closures 0.7.8 → 0.7.9
Sign up to get free protection for your applications and to get access to all the features.
- package/dist/closures.cjs +41 -33
- package/dist/closures.js +41 -33
- package/dist/closures.min.js +1 -1
- package/package.json +1 -1
package/dist/closures.cjs
CHANGED
@@ -37,6 +37,8 @@ let NIL = void 0,
|
|
37
37
|
REF_ARRAY = 4, // ref with array of nodes
|
38
38
|
REF_PARENT = 8, // ref with a child ref
|
39
39
|
RETAIN_KEY = '=',
|
40
|
+
hasKey = vnode => vnode && vnode.key !== NIL && vnode.key !== null,
|
41
|
+
haveMatchingKeys = (x, y) => (x === null || x === NIL ? NIL : x.key) === (y === null || y === NIL ? NIL : y.key),
|
40
42
|
generateClosureId = _ => NUM++,
|
41
43
|
isFn = x => typeof x === 'function',
|
42
44
|
isStr = x => typeof x === 'string',
|
@@ -160,7 +162,7 @@ let mount = (vnode, env, closureId, closure, onRemove = noop) => {
|
|
160
162
|
let baseRef = { closureId, closure, onRemove };
|
161
163
|
|
162
164
|
if (isEmpty(vnode))
|
163
|
-
return { ...baseRef, type: REF_SINGLE, node: document.
|
165
|
+
return { ...baseRef, type: REF_SINGLE, node: document.createTextNode('') };
|
164
166
|
|
165
167
|
if (isLeaf(vnode))
|
166
168
|
return { ...baseRef, type: REF_SINGLE, node: document.createTextNode(vnode) };
|
@@ -276,8 +278,12 @@ let patchInPlace = (parentDomNode, newVnode, oldVnode, ref, env) => {
|
|
276
278
|
};
|
277
279
|
|
278
280
|
let patchChildren = (parentDomNode, newChildren, oldChildren, ref, env) => {
|
279
|
-
// we need to retrieve the next sibling before the old children get removed from the DOM
|
280
|
-
let
|
281
|
+
// we need to retrieve the next sibling before the old children get eventually removed from the current DOM document
|
282
|
+
let oldVnode,
|
283
|
+
newVnode,
|
284
|
+
oldRef,
|
285
|
+
newRef,
|
286
|
+
refMap,
|
281
287
|
nextNode = getNextSibling(ref),
|
282
288
|
children = Array(newChildren.length),
|
283
289
|
refChildren = ref.children,
|
@@ -285,22 +291,22 @@ let patchChildren = (parentDomNode, newChildren, oldChildren, ref, env) => {
|
|
285
291
|
oldStart = 0,
|
286
292
|
newEnd = newChildren.length - 1,
|
287
293
|
oldEnd = oldChildren.length - 1;
|
288
|
-
|
294
|
+
|
289
295
|
while (newStart <= newEnd && oldStart <= oldEnd) {
|
290
296
|
if (refChildren[oldStart] === NIL) {
|
291
297
|
oldStart++;
|
292
298
|
continue;
|
293
299
|
}
|
294
|
-
|
300
|
+
|
295
301
|
if (refChildren[oldEnd] === NIL) {
|
296
302
|
oldEnd--;
|
297
303
|
continue;
|
298
304
|
}
|
299
|
-
|
305
|
+
|
300
306
|
oldVnode = oldChildren[oldStart];
|
301
307
|
newVnode = newChildren[newStart];
|
302
|
-
|
303
|
-
if (
|
308
|
+
|
309
|
+
if (haveMatchingKeys(newVnode, oldVnode)) {
|
304
310
|
oldRef = refChildren[oldStart];
|
305
311
|
newRef = children[newStart] = patchInPlace(
|
306
312
|
parentDomNode,
|
@@ -309,16 +315,15 @@ let patchChildren = (parentDomNode, newChildren, oldChildren, ref, env) => {
|
|
309
315
|
oldRef,
|
310
316
|
env
|
311
317
|
);
|
312
|
-
|
313
318
|
newStart++;
|
314
319
|
oldStart++;
|
315
320
|
continue;
|
316
321
|
}
|
317
|
-
|
322
|
+
|
318
323
|
oldVnode = oldChildren[oldEnd];
|
319
324
|
newVnode = newChildren[newEnd];
|
320
|
-
|
321
|
-
if (
|
325
|
+
|
326
|
+
if (haveMatchingKeys(newVnode, oldVnode)) {
|
322
327
|
oldRef = refChildren[oldEnd];
|
323
328
|
newRef = children[newEnd] = patchInPlace(
|
324
329
|
parentDomNode,
|
@@ -327,22 +332,24 @@ let patchChildren = (parentDomNode, newChildren, oldChildren, ref, env) => {
|
|
327
332
|
oldRef,
|
328
333
|
env
|
329
334
|
);
|
330
|
-
|
331
335
|
newEnd--;
|
332
336
|
oldEnd--;
|
333
337
|
continue;
|
334
338
|
}
|
335
|
-
|
336
|
-
if (refMap
|
337
|
-
|
339
|
+
|
340
|
+
if (!refMap) {
|
341
|
+
refMap = {};
|
342
|
+
for (let i = oldStart; i <= oldEnd; i++) {
|
338
343
|
oldVnode = oldChildren[i];
|
339
|
-
if (oldVnode
|
344
|
+
if (hasKey(oldVnode)) {
|
340
345
|
refMap[oldVnode.key] = i;
|
346
|
+
}
|
341
347
|
}
|
342
|
-
|
348
|
+
}
|
349
|
+
|
343
350
|
newVnode = newChildren[newStart];
|
344
|
-
idx = newVnode && newVnode.key !== NIL ? refMap[newVnode.key] : NIL;
|
345
351
|
|
352
|
+
let idx = hasKey(newVnode) ? refMap[newVnode.key] : NIL;
|
346
353
|
if (idx !== NIL) {
|
347
354
|
oldVnode = oldChildren[idx];
|
348
355
|
oldRef = refChildren[idx];
|
@@ -353,45 +360,46 @@ let patchChildren = (parentDomNode, newChildren, oldChildren, ref, env) => {
|
|
353
360
|
oldRef,
|
354
361
|
env
|
355
362
|
);
|
356
|
-
|
363
|
+
|
357
364
|
insertDom(parentDomNode, newRef, getDomNode(refChildren[oldStart]));
|
358
|
-
|
365
|
+
|
359
366
|
if (newRef !== oldRef) {
|
360
367
|
removeDom(parentDomNode, oldRef);
|
361
368
|
unmount(oldVnode, oldRef, env);
|
362
369
|
}
|
363
|
-
|
370
|
+
|
364
371
|
refChildren[idx] = NIL;
|
365
372
|
} else {
|
366
373
|
newRef = children[newStart] = mount(newVnode, env);
|
367
374
|
insertDom(parentDomNode, newRef, getDomNode(refChildren[oldStart]));
|
368
375
|
}
|
369
|
-
|
376
|
+
|
370
377
|
newStart++;
|
371
378
|
}
|
372
|
-
|
373
|
-
beforeNode =
|
374
|
-
|
375
|
-
|
376
|
-
|
379
|
+
|
380
|
+
let beforeNode =
|
381
|
+
newEnd < newChildren.length - 1
|
382
|
+
? getDomNode(children[newEnd + 1])
|
383
|
+
: nextNode;
|
384
|
+
|
377
385
|
while (newStart <= newEnd) {
|
378
|
-
newRef = mount(newChildren[newStart], env);
|
386
|
+
let newRef = mount(newChildren[newStart], env);
|
379
387
|
children[newStart] = newRef;
|
380
388
|
insertDom(parentDomNode, newRef, beforeNode);
|
381
389
|
newStart++;
|
382
390
|
}
|
383
|
-
|
391
|
+
|
384
392
|
while (oldStart <= oldEnd) {
|
385
393
|
oldRef = refChildren[oldStart];
|
386
|
-
|
394
|
+
|
387
395
|
if (oldRef !== NIL) {
|
388
396
|
removeDom(parentDomNode, oldRef);
|
389
397
|
unmount(oldChildren[oldStart], oldRef, env);
|
390
398
|
}
|
391
|
-
|
399
|
+
|
392
400
|
oldStart++;
|
393
401
|
}
|
394
|
-
|
402
|
+
|
395
403
|
ref.children = children;
|
396
404
|
};
|
397
405
|
|
package/dist/closures.js
CHANGED
@@ -37,6 +37,8 @@ let NIL = void 0,
|
|
37
37
|
REF_ARRAY = 4, // ref with array of nodes
|
38
38
|
REF_PARENT = 8, // ref with a child ref
|
39
39
|
RETAIN_KEY = '=',
|
40
|
+
hasKey = vnode => vnode && vnode.key !== NIL && vnode.key !== null,
|
41
|
+
haveMatchingKeys = (x, y) => (x === null || x === NIL ? NIL : x.key) === (y === null || y === NIL ? NIL : y.key),
|
40
42
|
generateClosureId = _ => NUM++,
|
41
43
|
isFn = x => typeof x === 'function',
|
42
44
|
isStr = x => typeof x === 'string',
|
@@ -160,7 +162,7 @@ let mount = (vnode, env, closureId, closure, onRemove = noop) => {
|
|
160
162
|
let baseRef = { closureId, closure, onRemove };
|
161
163
|
|
162
164
|
if (isEmpty(vnode))
|
163
|
-
return { ...baseRef, type: REF_SINGLE, node: document.
|
165
|
+
return { ...baseRef, type: REF_SINGLE, node: document.createTextNode('') };
|
164
166
|
|
165
167
|
if (isLeaf(vnode))
|
166
168
|
return { ...baseRef, type: REF_SINGLE, node: document.createTextNode(vnode) };
|
@@ -276,8 +278,12 @@ let patchInPlace = (parentDomNode, newVnode, oldVnode, ref, env) => {
|
|
276
278
|
};
|
277
279
|
|
278
280
|
let patchChildren = (parentDomNode, newChildren, oldChildren, ref, env) => {
|
279
|
-
// we need to retrieve the next sibling before the old children get removed from the DOM
|
280
|
-
let
|
281
|
+
// we need to retrieve the next sibling before the old children get eventually removed from the current DOM document
|
282
|
+
let oldVnode,
|
283
|
+
newVnode,
|
284
|
+
oldRef,
|
285
|
+
newRef,
|
286
|
+
refMap,
|
281
287
|
nextNode = getNextSibling(ref),
|
282
288
|
children = Array(newChildren.length),
|
283
289
|
refChildren = ref.children,
|
@@ -285,22 +291,22 @@ let patchChildren = (parentDomNode, newChildren, oldChildren, ref, env) => {
|
|
285
291
|
oldStart = 0,
|
286
292
|
newEnd = newChildren.length - 1,
|
287
293
|
oldEnd = oldChildren.length - 1;
|
288
|
-
|
294
|
+
|
289
295
|
while (newStart <= newEnd && oldStart <= oldEnd) {
|
290
296
|
if (refChildren[oldStart] === NIL) {
|
291
297
|
oldStart++;
|
292
298
|
continue;
|
293
299
|
}
|
294
|
-
|
300
|
+
|
295
301
|
if (refChildren[oldEnd] === NIL) {
|
296
302
|
oldEnd--;
|
297
303
|
continue;
|
298
304
|
}
|
299
|
-
|
305
|
+
|
300
306
|
oldVnode = oldChildren[oldStart];
|
301
307
|
newVnode = newChildren[newStart];
|
302
|
-
|
303
|
-
if (
|
308
|
+
|
309
|
+
if (haveMatchingKeys(newVnode, oldVnode)) {
|
304
310
|
oldRef = refChildren[oldStart];
|
305
311
|
newRef = children[newStart] = patchInPlace(
|
306
312
|
parentDomNode,
|
@@ -309,16 +315,15 @@ let patchChildren = (parentDomNode, newChildren, oldChildren, ref, env) => {
|
|
309
315
|
oldRef,
|
310
316
|
env
|
311
317
|
);
|
312
|
-
|
313
318
|
newStart++;
|
314
319
|
oldStart++;
|
315
320
|
continue;
|
316
321
|
}
|
317
|
-
|
322
|
+
|
318
323
|
oldVnode = oldChildren[oldEnd];
|
319
324
|
newVnode = newChildren[newEnd];
|
320
|
-
|
321
|
-
if (
|
325
|
+
|
326
|
+
if (haveMatchingKeys(newVnode, oldVnode)) {
|
322
327
|
oldRef = refChildren[oldEnd];
|
323
328
|
newRef = children[newEnd] = patchInPlace(
|
324
329
|
parentDomNode,
|
@@ -327,22 +332,24 @@ let patchChildren = (parentDomNode, newChildren, oldChildren, ref, env) => {
|
|
327
332
|
oldRef,
|
328
333
|
env
|
329
334
|
);
|
330
|
-
|
331
335
|
newEnd--;
|
332
336
|
oldEnd--;
|
333
337
|
continue;
|
334
338
|
}
|
335
|
-
|
336
|
-
if (refMap
|
337
|
-
|
339
|
+
|
340
|
+
if (!refMap) {
|
341
|
+
refMap = {};
|
342
|
+
for (let i = oldStart; i <= oldEnd; i++) {
|
338
343
|
oldVnode = oldChildren[i];
|
339
|
-
if (oldVnode
|
344
|
+
if (hasKey(oldVnode)) {
|
340
345
|
refMap[oldVnode.key] = i;
|
346
|
+
}
|
341
347
|
}
|
342
|
-
|
348
|
+
}
|
349
|
+
|
343
350
|
newVnode = newChildren[newStart];
|
344
|
-
idx = newVnode && newVnode.key !== NIL ? refMap[newVnode.key] : NIL;
|
345
351
|
|
352
|
+
let idx = hasKey(newVnode) ? refMap[newVnode.key] : NIL;
|
346
353
|
if (idx !== NIL) {
|
347
354
|
oldVnode = oldChildren[idx];
|
348
355
|
oldRef = refChildren[idx];
|
@@ -353,45 +360,46 @@ let patchChildren = (parentDomNode, newChildren, oldChildren, ref, env) => {
|
|
353
360
|
oldRef,
|
354
361
|
env
|
355
362
|
);
|
356
|
-
|
363
|
+
|
357
364
|
insertDom(parentDomNode, newRef, getDomNode(refChildren[oldStart]));
|
358
|
-
|
365
|
+
|
359
366
|
if (newRef !== oldRef) {
|
360
367
|
removeDom(parentDomNode, oldRef);
|
361
368
|
unmount(oldVnode, oldRef, env);
|
362
369
|
}
|
363
|
-
|
370
|
+
|
364
371
|
refChildren[idx] = NIL;
|
365
372
|
} else {
|
366
373
|
newRef = children[newStart] = mount(newVnode, env);
|
367
374
|
insertDom(parentDomNode, newRef, getDomNode(refChildren[oldStart]));
|
368
375
|
}
|
369
|
-
|
376
|
+
|
370
377
|
newStart++;
|
371
378
|
}
|
372
|
-
|
373
|
-
beforeNode =
|
374
|
-
|
375
|
-
|
376
|
-
|
379
|
+
|
380
|
+
let beforeNode =
|
381
|
+
newEnd < newChildren.length - 1
|
382
|
+
? getDomNode(children[newEnd + 1])
|
383
|
+
: nextNode;
|
384
|
+
|
377
385
|
while (newStart <= newEnd) {
|
378
|
-
newRef = mount(newChildren[newStart], env);
|
386
|
+
let newRef = mount(newChildren[newStart], env);
|
379
387
|
children[newStart] = newRef;
|
380
388
|
insertDom(parentDomNode, newRef, beforeNode);
|
381
389
|
newStart++;
|
382
390
|
}
|
383
|
-
|
391
|
+
|
384
392
|
while (oldStart <= oldEnd) {
|
385
393
|
oldRef = refChildren[oldStart];
|
386
|
-
|
394
|
+
|
387
395
|
if (oldRef !== NIL) {
|
388
396
|
removeDom(parentDomNode, oldRef);
|
389
397
|
unmount(oldChildren[oldStart], oldRef, env);
|
390
398
|
}
|
391
|
-
|
399
|
+
|
392
400
|
oldStart++;
|
393
401
|
}
|
394
|
-
|
402
|
+
|
395
403
|
ref.children = children;
|
396
404
|
};
|
397
405
|
|
package/dist/closures.min.js
CHANGED
@@ -1 +1 @@
|
|
1
|
-
!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports):"function"==typeof define&&define.amd?define(["exports"],t):t(e.closures={})}(this,(function(e){let t=void 0,r=e=>{},n=e=>({mount(t,r=""){t[e]=r},patch(t,r="",n){r!==n&&(t[e]=r)},unmount(r){r[e]=t}}),i={isSVG:!1,redraw:r,directives:{selected:n("selected"),checked:n("checked"),value:n("value"),innerHTML:n("innerHTML")}},o=[],l=[],d=new WeakMap,c=1,s={},f="http://www.w3.org/1999/xlink",h={show:f,actuate:f,href:f},p=e=>"function"==typeof e,
|
1
|
+
!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports):"function"==typeof define&&define.amd?define(["exports"],t):t(e.closures={})}(this,(function(e){let t=void 0,r=e=>{},n=e=>({mount(t,r=""){t[e]=r},patch(t,r="",n){r!==n&&(t[e]=r)},unmount(r){r[e]=t}}),i={isSVG:!1,redraw:r,directives:{selected:n("selected"),checked:n("checked"),value:n("value"),innerHTML:n("innerHTML")}},o=[],l=[],d=new WeakMap,c=1,s={},f="http://www.w3.org/1999/xlink",h={show:f,actuate:f,href:f},u=e=>e&&e.key!==t&&null!==e.key,p=(e,r)=>(null===e||e===t?t:e.key)===(null===r||r===t?t:r.key),a=e=>"function"==typeof e,y=e=>"string"==typeof e,v=e=>null!==e&&"object"==typeof e,w=e=>Array.isArray(e),m=e=>JSON.stringify(e),g=e=>null===e||!1===e||e===t||w(e)&&0===e.length||e&&"="===e._t,k=e=>w(e)&&e.length>0,R=e=>y(e)||"number"==typeof e,_=e=>e&&1===e.vtype,S=e=>e&&2===e.vtype,E=e=>{let t=e.type;if(1===t)return e.node;if(8===t)return E(e.childRef);if(4===t)return E(e.children[0]);throw Error("Unknown ref type "+m(e))},N=e=>{let t=e.type;if(1===t)return e.node.nextSibling;if(8===t)return N(e.childRef);if(4===t)return N(e.children[e.children.length-1]);throw Error("Unknown ref type "+m(e))},x=(e,t,r)=>{let n=t.type;if(1===n)e.insertBefore(t.node,r);else if(8===n)x(e,t.childRef,r);else{if(4!==n)throw Error("Unknown ref type "+m(t));for(let n=0;n<t.children.length;n++)x(e,t.children[n],r)}},V=(e,t)=>{let r=t.type;if(1===r)e.removeChild(t.node);else if(8===r)V(e,t.childRef);else{if(4!==r)throw Error("Unknown ref type "+m(t));for(let r=0;r<t.children.length;r++)V(e,t.children[r])}},b=(e,r,n,i)=>{"className"===r&&(r="class"),n===t&&(n=""),!0===n?e.setAttribute(r,""):!1===n?e.removeAttribute(r):i&&h[r]?e.setAttributeNS(h[r],r,n):e.setAttribute(r,n)},A=(e,n,i,o,s=r)=>{let f={closureId:i,closure:o,onRemove:s};if(g(e))return{...f,type:1,node:document.createTextNode("")};if(R(e))return{...f,type:1,node:document.createTextNode(e)};if(_(e)){let r,{_t:i,props:o}=e;"svg"!==i||n.isSVG||(n={...n,isSVG:!0}),r=n.isSVG?document.createElementNS("http://www.w3.org/2000/svg",i):document.createElement(i),a(o.oncreate)&&o.oncreate(r),((e,t,r)=>{for(let n in t)"key"===n||"children"===n||"oncreate"===n||n in r.directives||(n.startsWith("on")?e[n.toLowerCase()]=e=>{t[n](e),!r.manualRedraw&&r.rerender()}:b(e,n,t[n],r.isSVG))})(r,o,n);let l=o.children===t?o.children:A(o.children,n);return l!==t&&x(r,l),((e,t,r)=>{for(let n in t)n in r.directives&&r.directives[n].mount(e,t[n])})(r,o,n),{...f,type:1,node:r,children:l}}if(k(e)){let t=0,r=[];for(;t<e.length;t++)r.push(A(e[t],n));return{...f,type:4,children:r}}if(S(e)){let t=e._t(e.props);if(a(t)){let i=c++,o=d.get(e._t)||new Map,s=l.pop()||r;o.set(i,t),d.set(e._t,o);let f=e._t;return e._t=t,A(e,n,i,f,s)}return{...f,type:8,childRef:A(t,n),childState:t}}if(e instanceof Node)return{...f,type:1,node:e};if(e===t)throw Error("mount: vnode is undefined");throw Error("mount: Invalid vnode")},G=(e,r,n)=>{if(_(e))((e,t,r)=>{for(let n in t)n in r.directives&&r.directives[n].unmount(e,t[n])})(r.node,e.props,n),e.props.children!==t&&G(e.props.children,r.children,n);else if(k(e))for(let t=0;t<e.length;t++)G(e[t],r.children[t],n);else if(S(e)){let e=r.closure,t=r.closureId,i=r.onRemove,o=d.get(e);o&&t&&o.get(t)&&(o.delete(t),!o.size&&d.delete(e),i()),G(r.childState,r.childRef,n)}},C=(e,t,r,n,i)=>{let o=I(e,t,r,n,i);return o!==n&&(((e,t,r)=>{x(e,t,E(r)),V(e,r)})(e,o,n),G(r,n,i)),o},I=(e,r,n,o,l={...i})=>{if(r&&"="===r._t)return o;let c,s;if(v(o)&&(c=o.closure,s=o.closureId),S(r)&&S(n)&&(r._t===n._t||c&&s)){let t,n=r._t,i=d.get(c);i&&s&&(t=i.get(s))&&(n=t);let f=n(r.props),h=I(e,f,o.childState,o.childRef,l);return h!==o.childRef?{type:8,childRef:h,childState:f}:(o.childState=f,o)}if(n===r||g(r)&&g(n))return o;if(R(r)&&R(n))return o.node.nodeValue=r,o;if(_(r)&&_(n)&&r._t===n._t){"svg"!==r._t||l.isSVG||(l={...l,isSVG:!0}),((e,r,n,i)=>{let o;for(o in r){if("key"===o||"children"===o||"oncreate"===o||o in i.directives)continue;let t=n[o],l=r[o];t!==l&&(o.startsWith("on")?e[o.toLowerCase()]=e=>{l(e),!i.manualRedraw&&i.rerender()}:b(e,o,l,i.isSVG))}for(o in n)"key"===o||"children"===o||o in r||o in i.directives||(o.startsWith("on")?e[o.toLowerCase()]=t:e.removeAttribute(o))})(o.node,r.props,n.props,l);let e=n.props.children,i=r.props.children;return e===t?i!==t&&(o.children=A(i,l),x(o.node,o.children)):i===t?(o.node.textContent="",G(e,o.children,l),o.children=t):o.children=C(o.node,i,e,o.children,l),((e,t,r,n)=>{let i;for(i in t)i in n.directives&&n.directives[i].patch(e,t[i],r[i]);for(i in r)i in n.directives&&!(i in t)&&n.directives[i].unmount(e,r[i])})(o.node,r.props,n.props,l),o}return k(r)&&k(n)?(((e,r,n,i,o)=>{let l,d,c,s,f,h=N(i),a=Array(r.length),y=i.children,v=0,w=0,m=r.length-1,g=n.length-1;for(;v<=m&&w<=g;){if(y[w]===t){w++;continue}if(y[g]===t){g--;continue}if(l=n[w],d=r[v],p(d,l)){c=y[w],s=a[v]=C(e,d,l,c,o),v++,w++;continue}if(l=n[g],d=r[m],p(d,l)){c=y[g],s=a[m]=C(e,d,l,c,o),m--,g--;continue}if(!f){f={};for(let e=w;e<=g;e++)l=n[e],u(l)&&(f[l.key]=e)}d=r[v];let i=u(d)?f[d.key]:t;i!==t?(l=n[i],c=y[i],s=a[v]=I(e,d,l,c,o),x(e,s,E(y[w])),s!==c&&(V(e,c),G(l,c,o)),y[i]=t):(s=a[v]=A(d,o),x(e,s,E(y[w]))),v++}let k=m<r.length-1?E(a[m+1]):h;for(;v<=m;){let t=A(r[v],o);a[v]=t,x(e,t,k),v++}for(;w<=g;)c=y[w],c!==t&&(V(e,c),G(n[w],c,o)),w++;i.children=a})(e,r,n,o,l),o):r instanceof Node&&n instanceof Node?(o.node=r,o):A(r,l)};function L(e,...r){let n,i=r[0];if(!i||!v(i)||w(i)||i._t||i.props?i=s:r.shift(),i=r.length>1?{...i,children:r}:1===r.length?{...i,children:r[0]}:i,y(e)&&~(n=e.indexOf("."))){let t=i.class||i.className,r=e.slice(n+1).replace(/\./g," ")+(t?" "+t:"");r&&(i.class=r),e=e.slice(0,n)}if(i.key!=i.key)throw new Error("Invalid NaN key");let o=y(e)?1:a(e)?2:t;if(o===t)throw new Error("Invalid VNode type");return{vtype:o,_t:e,key:i.key,props:i}}L.retain=e=>L("=");const M=L;e.Fragment=e=>e.children,e.app=function(e,r,n={}){let l,d={...i,manualRedraw:n.manualRedraw},c=r.$_REF;if(d.directives={...d.directives,...n.directives||{}},c!==t)throw Error("App already mounted on this node");return l=A(e,d),c=r.$_REF={ref:l,vnode:e},r.textContent="",x(r,l,t),o.push(d.rerender=(t=e)=>{c.ref=C(r,t,c.vnode,c.ref,d),c.vnode=t})&&d.rerender},e.h=L,e.m=M,e.onRemove=e=>l.push(e),e.redraw=e=>{for(let e=0;e<o.length;e++)o[e]()}}));
|