|
|
@ -293,7 +293,8 @@ export function each(node, flags, get_collection, get_key, render_fn, fallback_f
|
|
|
|
i,
|
|
|
|
i,
|
|
|
|
render_fn,
|
|
|
|
render_fn,
|
|
|
|
flags,
|
|
|
|
flags,
|
|
|
|
get_collection
|
|
|
|
get_collection,
|
|
|
|
|
|
|
|
true
|
|
|
|
);
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
|
|
pending_items.set(key, item);
|
|
|
|
pending_items.set(key, item);
|
|
|
@ -406,28 +407,34 @@ function reconcile(
|
|
|
|
|
|
|
|
|
|
|
|
if (item === undefined) {
|
|
|
|
if (item === undefined) {
|
|
|
|
var pending = pending_items.get(key);
|
|
|
|
var pending = pending_items.get(key);
|
|
|
|
|
|
|
|
|
|
|
|
if (pending !== undefined) {
|
|
|
|
if (pending !== undefined) {
|
|
|
|
pending_items.delete(key);
|
|
|
|
pending_items.delete(key);
|
|
|
|
items.set(key, pending);
|
|
|
|
items.set(key, pending);
|
|
|
|
item = pending;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (item === undefined) {
|
|
|
|
var next = prev && prev.next;
|
|
|
|
var child_anchor = current ? /** @type {TemplateNode} */ (current.e.nodes_start) : anchor;
|
|
|
|
|
|
|
|
|
|
|
|
link(state, prev, pending);
|
|
|
|
prev = create_item(
|
|
|
|
link(state, pending, next);
|
|
|
|
child_anchor,
|
|
|
|
|
|
|
|
state,
|
|
|
|
move(pending, next, anchor);
|
|
|
|
prev,
|
|
|
|
prev = pending;
|
|
|
|
prev === null ? state.first : prev.next,
|
|
|
|
} else {
|
|
|
|
value,
|
|
|
|
var child_anchor = current ? /** @type {TemplateNode} */ (current.e.nodes_start) : anchor;
|
|
|
|
key,
|
|
|
|
|
|
|
|
i,
|
|
|
|
prev = create_item(
|
|
|
|
render_fn,
|
|
|
|
child_anchor,
|
|
|
|
flags,
|
|
|
|
state,
|
|
|
|
get_collection
|
|
|
|
prev,
|
|
|
|
);
|
|
|
|
prev === null ? state.first : prev.next,
|
|
|
|
|
|
|
|
value,
|
|
|
|
|
|
|
|
key,
|
|
|
|
|
|
|
|
i,
|
|
|
|
|
|
|
|
render_fn,
|
|
|
|
|
|
|
|
flags,
|
|
|
|
|
|
|
|
get_collection
|
|
|
|
|
|
|
|
);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
items.set(key, prev);
|
|
|
|
items.set(key, prev);
|
|
|
|
|
|
|
|
|
|
|
@ -604,6 +611,7 @@ function update_item(item, value, index, type) {
|
|
|
|
* @param {(anchor: Node, item: V | Source<V>, index: number | Value<number>, collection: () => V[]) => void} render_fn
|
|
|
|
* @param {(anchor: Node, item: V | Source<V>, index: number | Value<number>, collection: () => V[]) => void} render_fn
|
|
|
|
* @param {number} flags
|
|
|
|
* @param {number} flags
|
|
|
|
* @param {() => V[]} get_collection
|
|
|
|
* @param {() => V[]} get_collection
|
|
|
|
|
|
|
|
* @param {boolean} [deferred]
|
|
|
|
* @returns {EachItem}
|
|
|
|
* @returns {EachItem}
|
|
|
|
*/
|
|
|
|
*/
|
|
|
|
function create_item(
|
|
|
|
function create_item(
|
|
|
@ -616,7 +624,8 @@ function create_item(
|
|
|
|
index,
|
|
|
|
index,
|
|
|
|
render_fn,
|
|
|
|
render_fn,
|
|
|
|
flags,
|
|
|
|
flags,
|
|
|
|
get_collection
|
|
|
|
get_collection,
|
|
|
|
|
|
|
|
deferred
|
|
|
|
) {
|
|
|
|
) {
|
|
|
|
var previous_each_item = current_each_item;
|
|
|
|
var previous_each_item = current_each_item;
|
|
|
|
var reactive = (flags & EACH_ITEM_REACTIVE) !== 0;
|
|
|
|
var reactive = (flags & EACH_ITEM_REACTIVE) !== 0;
|
|
|
@ -661,7 +670,9 @@ function create_item(
|
|
|
|
item.e.next = next && next.e;
|
|
|
|
item.e.next = next && next.e;
|
|
|
|
|
|
|
|
|
|
|
|
if (prev === null) {
|
|
|
|
if (prev === null) {
|
|
|
|
state.first = item;
|
|
|
|
if (!deferred) {
|
|
|
|
|
|
|
|
state.first = item;
|
|
|
|
|
|
|
|
}
|
|
|
|
} else {
|
|
|
|
} else {
|
|
|
|
prev.next = item;
|
|
|
|
prev.next = item;
|
|
|
|
prev.e.next = item.e;
|
|
|
|
prev.e.next = item.e;
|
|
|
|