ripple 0.2.139 → 0.2.141
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +2 -2
- package/src/compiler/phases/1-parse/index.js +8 -3
- package/src/compiler/phases/2-analyze/index.js +11 -9
- package/src/compiler/phases/3-transform/client/index.js +193 -56
- package/src/compiler/phases/3-transform/segments.js +31 -74
- package/src/compiler/utils.js +22 -11
- package/src/runtime/date.js +1 -1
- package/src/runtime/internal/client/bindings.js +9 -9
- package/src/runtime/internal/client/for.js +2 -2
- package/src/runtime/internal/client/index.js +3 -1
- package/src/runtime/internal/client/render.js +23 -23
- package/src/runtime/internal/client/runtime.js +70 -59
- package/src/runtime/map.js +182 -182
- package/src/runtime/media-query.js +1 -1
- package/src/runtime/proxy.js +279 -279
- package/src/runtime/set.js +168 -168
- package/src/runtime/url-search-params.js +5 -5
- package/src/runtime/url.js +18 -18
- package/src/utils/builders.js +1 -0
- package/tests/client/basic/basic.get-set.test.ripple +37 -49
- package/tests/client/compiler/__snapshots__/compiler.assignments.test.ripple.snap +4 -4
- package/tests/client/composite/composite.props.test.ripple +44 -2
- package/types/index.d.ts +1 -1
package/src/compiler/utils.js
CHANGED
|
@@ -201,7 +201,9 @@ export function get_delegated_event(event_name, handler, state) {
|
|
|
201
201
|
if (binding != null) {
|
|
202
202
|
for (const { path } of binding.references) {
|
|
203
203
|
const parent = path.at(-1);
|
|
204
|
-
if (parent === undefined)
|
|
204
|
+
if (parent === undefined) {
|
|
205
|
+
return unhoisted;
|
|
206
|
+
}
|
|
205
207
|
|
|
206
208
|
const grandparent = path.at(-2);
|
|
207
209
|
|
|
@@ -227,7 +229,11 @@ export function get_delegated_event(event_name, handler, state) {
|
|
|
227
229
|
) {
|
|
228
230
|
return unhoisted;
|
|
229
231
|
}
|
|
230
|
-
} else if (
|
|
232
|
+
} else if (
|
|
233
|
+
parent.type !== 'FunctionDeclaration' &&
|
|
234
|
+
parent.type !== 'VariableDeclarator' &&
|
|
235
|
+
parent.type !== 'Attribute'
|
|
236
|
+
) {
|
|
231
237
|
return unhoisted;
|
|
232
238
|
}
|
|
233
239
|
}
|
|
@@ -262,24 +268,29 @@ export function get_delegated_event(event_name, handler, state) {
|
|
|
262
268
|
|
|
263
269
|
const visited_references = new Set();
|
|
264
270
|
const scope = target_function.metadata.scope;
|
|
265
|
-
for (const [reference] of scope.references) {
|
|
271
|
+
for (const [reference, ref_nodes] of scope.references) {
|
|
266
272
|
// Bail out if the arguments keyword is used or $host is referenced
|
|
267
273
|
if (reference === 'arguments') return unhoisted;
|
|
268
274
|
|
|
269
275
|
const binding = scope.get(reference);
|
|
270
276
|
const local_binding = state.scope.get(reference);
|
|
271
277
|
|
|
278
|
+
if (local_binding === null || binding == null) {
|
|
279
|
+
return unhoisted;
|
|
280
|
+
}
|
|
281
|
+
|
|
272
282
|
// If we are referencing a binding that is shadowed in another scope then bail out.
|
|
273
|
-
if (local_binding
|
|
283
|
+
if (local_binding.node !== binding.node) {
|
|
274
284
|
return unhoisted;
|
|
275
285
|
}
|
|
286
|
+
const is_tracked = ref_nodes.some(({ node }) => node.tracked);
|
|
276
287
|
|
|
277
288
|
if (
|
|
278
289
|
binding !== null &&
|
|
279
290
|
// Bail out if the the binding is a rest param
|
|
280
291
|
(binding.declaration_kind === 'rest_param' || // or any normal not reactive bindings that are mutated.
|
|
281
292
|
// Bail out if we reference anything from the EachBlock (for now) that mutates in non-runes mode,
|
|
282
|
-
(binding.kind === 'normal' && binding.updated))
|
|
293
|
+
(binding.kind === 'normal' && !is_tracked && binding.updated))
|
|
283
294
|
) {
|
|
284
295
|
return unhoisted;
|
|
285
296
|
}
|
|
@@ -352,7 +363,7 @@ export function build_hoisted_params(node, context) {
|
|
|
352
363
|
}
|
|
353
364
|
} else {
|
|
354
365
|
for (const param of node.params) {
|
|
355
|
-
params.push(/** @type {Pattern} */(context.visit(param)));
|
|
366
|
+
params.push(/** @type {Pattern} */ (context.visit(param)));
|
|
356
367
|
}
|
|
357
368
|
}
|
|
358
369
|
|
|
@@ -554,7 +565,7 @@ export function is_ripple_import(callee, context) {
|
|
|
554
565
|
* @returns {boolean}
|
|
555
566
|
*/
|
|
556
567
|
export function is_declared_function_within_component(node, context) {
|
|
557
|
-
const component = context.path?.find(/** @param {RippleNode} n */(n) => n.type === 'Component');
|
|
568
|
+
const component = context.path?.find(/** @param {RippleNode} n */ (n) => n.type === 'Component');
|
|
558
569
|
|
|
559
570
|
if (node.type === 'Identifier' && component) {
|
|
560
571
|
const binding = context.state.scope.get(node.name);
|
|
@@ -611,8 +622,8 @@ export function visit_assignment_expression(node, context, build_assignment) {
|
|
|
611
622
|
assignment ??
|
|
612
623
|
b.assignment(
|
|
613
624
|
'=',
|
|
614
|
-
/** @type {Pattern} */(context.visit(path.node)),
|
|
615
|
-
/** @type {Expression} */(context.visit(value)),
|
|
625
|
+
/** @type {Pattern} */ (context.visit(path.node)),
|
|
626
|
+
/** @type {Expression} */ (context.visit(value)),
|
|
616
627
|
)
|
|
617
628
|
);
|
|
618
629
|
});
|
|
@@ -702,8 +713,8 @@ export function build_assignment(operator, left, right, context) {
|
|
|
702
713
|
object,
|
|
703
714
|
b.assignment(
|
|
704
715
|
operator,
|
|
705
|
-
/** @type {Pattern} */(context.visit(left)),
|
|
706
|
-
/** @type {Expression} */(context.visit(right)),
|
|
716
|
+
/** @type {Pattern} */ (context.visit(left)),
|
|
717
|
+
/** @type {Expression} */ (context.visit(right)),
|
|
707
718
|
),
|
|
708
719
|
);
|
|
709
720
|
}
|
package/src/runtime/date.js
CHANGED
|
@@ -64,7 +64,7 @@ export class TrackedDate extends Date {
|
|
|
64
64
|
proto[method] = function (...args) {
|
|
65
65
|
// @ts-ignore
|
|
66
66
|
var result = date_proto[method].apply(this, args);
|
|
67
|
-
set(this.#time, date_proto.getTime.call(this)
|
|
67
|
+
set(this.#time, date_proto.getTime.call(this));
|
|
68
68
|
return result;
|
|
69
69
|
};
|
|
70
70
|
}
|
|
@@ -175,7 +175,7 @@ export function bindValue(maybe_tracked) {
|
|
|
175
175
|
value = selected_option && get_option_value(selected_option);
|
|
176
176
|
}
|
|
177
177
|
|
|
178
|
-
set(tracked, value
|
|
178
|
+
set(tracked, value);
|
|
179
179
|
});
|
|
180
180
|
|
|
181
181
|
effect(() => {
|
|
@@ -189,7 +189,7 @@ export function bindValue(maybe_tracked) {
|
|
|
189
189
|
var selected_option = select.querySelector(':checked');
|
|
190
190
|
if (selected_option !== null) {
|
|
191
191
|
value = get_option_value(selected_option);
|
|
192
|
-
set(tracked, value
|
|
192
|
+
set(tracked, value);
|
|
193
193
|
}
|
|
194
194
|
}
|
|
195
195
|
|
|
@@ -202,7 +202,7 @@ export function bindValue(maybe_tracked) {
|
|
|
202
202
|
/** @type {any} */
|
|
203
203
|
var value = input.value;
|
|
204
204
|
value = is_numberlike_input(input) ? to_number(value) : value;
|
|
205
|
-
set(tracked, value
|
|
205
|
+
set(tracked, value);
|
|
206
206
|
|
|
207
207
|
await tick();
|
|
208
208
|
|
|
@@ -254,7 +254,7 @@ export function bindChecked(maybe_tracked) {
|
|
|
254
254
|
|
|
255
255
|
return (input) => {
|
|
256
256
|
const clear_event = on(input, 'change', () => {
|
|
257
|
-
set(tracked, input.checked
|
|
257
|
+
set(tracked, input.checked);
|
|
258
258
|
});
|
|
259
259
|
|
|
260
260
|
return clear_event;
|
|
@@ -277,11 +277,11 @@ function bind_element_size(maybe_tracked, type) {
|
|
|
277
277
|
|
|
278
278
|
return (/** @type {HTMLElement} */ element) => {
|
|
279
279
|
var unsubscribe = resize_observer_border_box.observe(element, () =>
|
|
280
|
-
set(tracked, element[type]
|
|
280
|
+
set(tracked, element[type]),
|
|
281
281
|
);
|
|
282
282
|
|
|
283
283
|
effect(() => {
|
|
284
|
-
untrack(() => set(tracked, element[type]
|
|
284
|
+
untrack(() => set(tracked, element[type]));
|
|
285
285
|
return unsubscribe;
|
|
286
286
|
});
|
|
287
287
|
};
|
|
@@ -342,7 +342,7 @@ function bind_element_rect(maybe_tracked, type) {
|
|
|
342
342
|
return (/** @type {HTMLElement} */ element) => {
|
|
343
343
|
var unsubscribe = observer.observe(
|
|
344
344
|
element,
|
|
345
|
-
/** @param {any} entry */ (entry) => set(tracked, entry[type]
|
|
345
|
+
/** @param {any} entry */ (entry) => set(tracked, entry[type]),
|
|
346
346
|
);
|
|
347
347
|
|
|
348
348
|
effect(() => unsubscribe);
|
|
@@ -398,7 +398,7 @@ export function bind_content_editable(maybe_tracked, property) {
|
|
|
398
398
|
|
|
399
399
|
return (element) => {
|
|
400
400
|
const clear_event = on(element, 'input', () => {
|
|
401
|
-
set(tracked, element[property]
|
|
401
|
+
set(tracked, element[property]);
|
|
402
402
|
});
|
|
403
403
|
|
|
404
404
|
render(() => {
|
|
@@ -408,7 +408,7 @@ export function bind_content_editable(maybe_tracked, property) {
|
|
|
408
408
|
if (value == null) {
|
|
409
409
|
// @ts-ignore
|
|
410
410
|
var non_null_value = element[property];
|
|
411
|
-
set(tracked, non_null_value
|
|
411
|
+
set(tracked, non_null_value);
|
|
412
412
|
} else {
|
|
413
413
|
// @ts-ignore
|
|
414
414
|
element[property] = value + '';
|
|
@@ -186,7 +186,7 @@ function reconcile_fast_clear(anchor, block, array) {
|
|
|
186
186
|
* @returns {void}
|
|
187
187
|
*/
|
|
188
188
|
function update_index(block, index) {
|
|
189
|
-
set(block.s.i, index
|
|
189
|
+
set(block.s.i, index);
|
|
190
190
|
}
|
|
191
191
|
|
|
192
192
|
/**
|
|
@@ -195,7 +195,7 @@ function update_index(block, index) {
|
|
|
195
195
|
* @returns {void}
|
|
196
196
|
*/
|
|
197
197
|
function update_value(block, value) {
|
|
198
|
-
set(block.s.v, value
|
|
198
|
+
set(block.s.v, value);
|
|
199
199
|
}
|
|
200
200
|
|
|
201
201
|
/**
|
|
@@ -14,7 +14,7 @@ export {
|
|
|
14
14
|
set_selected,
|
|
15
15
|
} from './render.js';
|
|
16
16
|
|
|
17
|
-
export { render, render_spread, async, ref } from './blocks.js';
|
|
17
|
+
export { render, render_spread, async, ref, branch } from './blocks.js';
|
|
18
18
|
|
|
19
19
|
export { event, delegate } from './events.js';
|
|
20
20
|
|
|
@@ -47,6 +47,8 @@ export {
|
|
|
47
47
|
derived,
|
|
48
48
|
maybe_tracked,
|
|
49
49
|
tick,
|
|
50
|
+
proxy_tracked,
|
|
51
|
+
with_block,
|
|
50
52
|
} from './runtime.js';
|
|
51
53
|
|
|
52
54
|
export { composite } from './composite.js';
|
|
@@ -163,29 +163,29 @@ export function set_attributes(element, attributes) {
|
|
|
163
163
|
* @param {Element} element
|
|
164
164
|
* @param {string} key
|
|
165
165
|
* @param {any} value
|
|
166
|
-
*/
|
|
166
|
+
*/
|
|
167
167
|
function set_attribute_helper(element, key, value) {
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
168
|
+
if (key === 'class') {
|
|
169
|
+
const is_html = element.namespaceURI === 'http://www.w3.org/1999/xhtml';
|
|
170
|
+
set_class(/** @type {HTMLElement} */ (element), value, undefined, is_html);
|
|
171
|
+
} else if (key === '#class') {
|
|
172
|
+
// Special case for static class when spreading props
|
|
173
|
+
element.classList.add(value);
|
|
174
|
+
} else if (typeof key === 'string' && is_event_attribute(key)) {
|
|
175
|
+
// Handle event handlers in spread props
|
|
176
|
+
const event_name = get_attribute_event_name(key);
|
|
177
|
+
|
|
178
|
+
if (is_delegated(event_name)) {
|
|
179
|
+
// Use delegation for delegated events
|
|
180
|
+
/** @type {any} */ (element)['__' + event_name] = value;
|
|
181
|
+
delegate([event_name]);
|
|
182
|
+
} else {
|
|
183
|
+
// Use addEventListener for non-delegated events
|
|
184
|
+
event(event_name, element, value);
|
|
185
|
+
}
|
|
186
|
+
} else {
|
|
187
|
+
set_attribute(element, key, value);
|
|
188
|
+
}
|
|
189
189
|
}
|
|
190
190
|
|
|
191
191
|
/**
|
|
@@ -312,7 +312,7 @@ export function apply_element_spread(element, fn) {
|
|
|
312
312
|
for (const symbol of get_own_property_symbols(next)) {
|
|
313
313
|
// Ensure we are not trying to write to a proxied object
|
|
314
314
|
if (TRACKED_OBJECT in next) {
|
|
315
|
-
next = {...next};
|
|
315
|
+
next = { ...next };
|
|
316
316
|
}
|
|
317
317
|
var ref_fn = next[symbol];
|
|
318
318
|
|
|
@@ -30,7 +30,7 @@ import {
|
|
|
30
30
|
import { capture, suspend } from './try.js';
|
|
31
31
|
import {
|
|
32
32
|
define_property,
|
|
33
|
-
|
|
33
|
+
get_descriptor,
|
|
34
34
|
get_own_property_symbols,
|
|
35
35
|
is_array,
|
|
36
36
|
is_tracked_object,
|
|
@@ -135,6 +135,20 @@ export function run_teardown(block) {
|
|
|
135
135
|
}
|
|
136
136
|
}
|
|
137
137
|
|
|
138
|
+
/**
|
|
139
|
+
* @param {Block} block
|
|
140
|
+
* @param {() => void} fn
|
|
141
|
+
*/
|
|
142
|
+
export function with_block(block, fn) {
|
|
143
|
+
var prev_block = active_block;
|
|
144
|
+
active_block = block;
|
|
145
|
+
try {
|
|
146
|
+
return fn();
|
|
147
|
+
} finally {
|
|
148
|
+
active_block = prev_block;
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
|
|
138
152
|
/**
|
|
139
153
|
* @param {Derived} computed
|
|
140
154
|
*/
|
|
@@ -345,6 +359,9 @@ export function track(v, get, set, b) {
|
|
|
345
359
|
if (is_tracked_object(v)) {
|
|
346
360
|
return v;
|
|
347
361
|
}
|
|
362
|
+
if (b === null) {
|
|
363
|
+
throw new TypeError('track() requires a valid component context');
|
|
364
|
+
}
|
|
348
365
|
|
|
349
366
|
if (typeof v === 'function') {
|
|
350
367
|
return derived(v, b, get, set);
|
|
@@ -369,35 +386,34 @@ export function track_split(v, l, b) {
|
|
|
369
386
|
var out = [];
|
|
370
387
|
/** @type {Record<string|symbol, any>} */
|
|
371
388
|
var rest = {};
|
|
372
|
-
/** @type {Record<PropertyKey,
|
|
373
|
-
var
|
|
389
|
+
/** @type {Record<PropertyKey, 1>} */
|
|
390
|
+
var done = {};
|
|
391
|
+
var props = Reflect.ownKeys(v);
|
|
374
392
|
|
|
375
|
-
for (let i = 0, key, t
|
|
393
|
+
for (let i = 0, key, t; i < l.length; i++) {
|
|
376
394
|
key = l[i];
|
|
377
395
|
|
|
378
|
-
if (
|
|
379
|
-
|
|
396
|
+
if (props.includes(key)) {
|
|
397
|
+
if (is_tracked_object(v[key])) {
|
|
398
|
+
t = v[key];
|
|
399
|
+
} else {
|
|
400
|
+
t = tracked(undefined, b);
|
|
401
|
+
t = define_property(t, '__v', /** @type {PropertyDescriptor} */ (get_descriptor(v, key)));
|
|
402
|
+
}
|
|
380
403
|
} else {
|
|
381
404
|
t = tracked(undefined, b);
|
|
382
|
-
exists = !!descriptors[key];
|
|
383
|
-
if (exists) {
|
|
384
|
-
t = define_property(t, '__v', descriptors[key]);
|
|
385
|
-
}
|
|
386
405
|
}
|
|
387
406
|
|
|
388
407
|
out[i] = t;
|
|
389
|
-
|
|
390
|
-
descriptors[key] = null;
|
|
391
|
-
}
|
|
408
|
+
done[key] = 1;
|
|
392
409
|
}
|
|
393
410
|
|
|
394
|
-
var props = Reflect.ownKeys(descriptors);
|
|
395
411
|
for (let i = 0, key; i < props.length; i++) {
|
|
396
412
|
key = props[i];
|
|
397
|
-
if (
|
|
413
|
+
if (done[key]) {
|
|
398
414
|
continue;
|
|
399
415
|
}
|
|
400
|
-
define_property(rest, key,
|
|
416
|
+
define_property(rest, key, /** @type {PropertyDescriptor} */ (get_descriptor(v, key)));
|
|
401
417
|
}
|
|
402
418
|
|
|
403
419
|
out.push(tracked(rest, b));
|
|
@@ -440,7 +456,7 @@ function is_tracking_dirty(tracking) {
|
|
|
440
456
|
var tracked = tracking.t;
|
|
441
457
|
|
|
442
458
|
if ((tracked.f & DERIVED) !== 0) {
|
|
443
|
-
update_derived(/** @type {Derived} **/(tracked));
|
|
459
|
+
update_derived(/** @type {Derived} **/ (tracked));
|
|
444
460
|
}
|
|
445
461
|
|
|
446
462
|
if (tracked.c > tracking.c) {
|
|
@@ -500,7 +516,7 @@ export function async_computed(fn, block) {
|
|
|
500
516
|
}
|
|
501
517
|
|
|
502
518
|
promise.then((v) => {
|
|
503
|
-
if (parent && is_destroyed(/** @type {Block} */(parent))) {
|
|
519
|
+
if (parent && is_destroyed(/** @type {Block} */ (parent))) {
|
|
504
520
|
return;
|
|
505
521
|
}
|
|
506
522
|
if (promise === current && t.__v !== v) {
|
|
@@ -509,7 +525,7 @@ export function async_computed(fn, block) {
|
|
|
509
525
|
if (t.__v === UNINITIALIZED) {
|
|
510
526
|
t.__v = v;
|
|
511
527
|
} else {
|
|
512
|
-
set(t, v
|
|
528
|
+
set(t, v);
|
|
513
529
|
}
|
|
514
530
|
}
|
|
515
531
|
|
|
@@ -774,7 +790,7 @@ export function get(tracked) {
|
|
|
774
790
|
}
|
|
775
791
|
|
|
776
792
|
return (tracked.f & DERIVED) !== 0
|
|
777
|
-
? get_derived(/** @type {Derived} */(tracked))
|
|
793
|
+
? get_derived(/** @type {Derived} */ (tracked))
|
|
778
794
|
: get_tracked(tracked);
|
|
779
795
|
}
|
|
780
796
|
|
|
@@ -803,15 +819,14 @@ export function get_tracked(tracked) {
|
|
|
803
819
|
* @param {any} value
|
|
804
820
|
*/
|
|
805
821
|
export function public_set(tracked, value) {
|
|
806
|
-
set(tracked, value
|
|
822
|
+
set(tracked, value);
|
|
807
823
|
}
|
|
808
824
|
|
|
809
825
|
/**
|
|
810
826
|
* @param {Derived | Tracked} tracked
|
|
811
827
|
* @param {any} value
|
|
812
|
-
* @param {Block} block
|
|
813
828
|
*/
|
|
814
|
-
export function set(tracked, value
|
|
829
|
+
export function set(tracked, value) {
|
|
815
830
|
if (!is_mutating_allowed) {
|
|
816
831
|
throw new Error(
|
|
817
832
|
'Assignments or updates to tracked values are not allowed during computed "track(() => ...)" evaluation',
|
|
@@ -823,7 +838,7 @@ export function set(tracked, value, block) {
|
|
|
823
838
|
if (value !== old_value) {
|
|
824
839
|
var tracked_block = tracked.b;
|
|
825
840
|
|
|
826
|
-
if ((
|
|
841
|
+
if ((tracked_block.f & CONTAINS_TEARDOWN) !== 0) {
|
|
827
842
|
if (teardown) {
|
|
828
843
|
old_values.set(tracked, value);
|
|
829
844
|
} else {
|
|
@@ -901,34 +916,37 @@ export function flush_sync(fn) {
|
|
|
901
916
|
*/
|
|
902
917
|
export function spread_props(fn, block) {
|
|
903
918
|
var computed = derived(fn, block);
|
|
919
|
+
return proxy_tracked(computed);
|
|
920
|
+
}
|
|
904
921
|
|
|
922
|
+
/**
|
|
923
|
+
* @param {Tracked | Derived} tracked
|
|
924
|
+
* @returns {Object}
|
|
925
|
+
*/
|
|
926
|
+
export function proxy_tracked(tracked) {
|
|
905
927
|
return new Proxy(
|
|
906
928
|
{},
|
|
907
929
|
{
|
|
908
|
-
get(
|
|
909
|
-
const obj =
|
|
930
|
+
get(_, property) {
|
|
931
|
+
const obj = get(tracked);
|
|
910
932
|
return obj[property];
|
|
911
933
|
},
|
|
912
|
-
has(
|
|
934
|
+
has(_, property) {
|
|
913
935
|
if (property === TRACKED_OBJECT) {
|
|
914
936
|
return true;
|
|
915
937
|
}
|
|
916
|
-
const obj =
|
|
938
|
+
const obj = get(tracked);
|
|
917
939
|
return property in obj;
|
|
918
940
|
},
|
|
919
|
-
getOwnPropertyDescriptor(
|
|
920
|
-
const obj =
|
|
941
|
+
getOwnPropertyDescriptor(_, key) {
|
|
942
|
+
const obj = get(tracked);
|
|
921
943
|
|
|
922
944
|
if (key in obj) {
|
|
923
|
-
return
|
|
924
|
-
enumerable: true,
|
|
925
|
-
configurable: true,
|
|
926
|
-
value: obj[key],
|
|
927
|
-
};
|
|
945
|
+
return get_descriptor(obj, key);
|
|
928
946
|
}
|
|
929
947
|
},
|
|
930
948
|
ownKeys() {
|
|
931
|
-
const obj =
|
|
949
|
+
const obj = get(tracked);
|
|
932
950
|
return Reflect.ownKeys(obj);
|
|
933
951
|
},
|
|
934
952
|
},
|
|
@@ -991,85 +1009,78 @@ export function get_property(obj, property, chain = false) {
|
|
|
991
1009
|
* @param {any} obj
|
|
992
1010
|
* @param {string | number | symbol} property
|
|
993
1011
|
* @param {any} value
|
|
994
|
-
* @param {Block} block
|
|
995
1012
|
* @returns {void}
|
|
996
1013
|
*/
|
|
997
|
-
export function set_property(obj, property, value
|
|
1014
|
+
export function set_property(obj, property, value) {
|
|
998
1015
|
var tracked = obj[property];
|
|
999
|
-
set(tracked, value
|
|
1016
|
+
set(tracked, value);
|
|
1000
1017
|
}
|
|
1001
1018
|
|
|
1002
1019
|
/**
|
|
1003
1020
|
* @param {Tracked} tracked
|
|
1004
|
-
* @param {Block} block
|
|
1005
1021
|
* @param {number} [d]
|
|
1006
1022
|
* @returns {number}
|
|
1007
1023
|
*/
|
|
1008
|
-
export function update(tracked,
|
|
1024
|
+
export function update(tracked, d = 1) {
|
|
1009
1025
|
var value = get(tracked);
|
|
1010
1026
|
var result = d === 1 ? value++ : value--;
|
|
1011
|
-
set(tracked, value
|
|
1027
|
+
set(tracked, value);
|
|
1012
1028
|
return result;
|
|
1013
1029
|
}
|
|
1014
1030
|
|
|
1015
1031
|
/**
|
|
1016
1032
|
* @param {Tracked} tracked
|
|
1017
|
-
* @param {Block} block
|
|
1018
1033
|
* @returns {void}
|
|
1019
1034
|
*/
|
|
1020
|
-
export function increment(tracked
|
|
1021
|
-
set(tracked, tracked.__v + 1
|
|
1035
|
+
export function increment(tracked) {
|
|
1036
|
+
set(tracked, tracked.__v + 1);
|
|
1022
1037
|
}
|
|
1023
1038
|
|
|
1024
1039
|
/**
|
|
1025
1040
|
* @param {Tracked} tracked
|
|
1026
|
-
* @param {Block} block
|
|
1027
1041
|
* @returns {void}
|
|
1028
1042
|
*/
|
|
1029
|
-
export function decrement(tracked
|
|
1030
|
-
set(tracked, tracked.__v - 1
|
|
1043
|
+
export function decrement(tracked) {
|
|
1044
|
+
set(tracked, tracked.__v - 1);
|
|
1031
1045
|
}
|
|
1032
1046
|
|
|
1033
1047
|
/**
|
|
1034
1048
|
* @param {Tracked} tracked
|
|
1035
|
-
* @param {Block} block
|
|
1036
1049
|
* @param {number} [d]
|
|
1037
1050
|
* @returns {number}
|
|
1038
1051
|
*/
|
|
1039
|
-
export function update_pre(tracked,
|
|
1052
|
+
export function update_pre(tracked, d = 1) {
|
|
1040
1053
|
var value = get(tracked);
|
|
1041
1054
|
var new_value = d === 1 ? ++value : --value;
|
|
1042
|
-
set(tracked, new_value
|
|
1055
|
+
set(tracked, new_value);
|
|
1043
1056
|
return new_value;
|
|
1044
1057
|
}
|
|
1045
1058
|
|
|
1046
1059
|
/**
|
|
1047
1060
|
* @param {any} obj
|
|
1048
1061
|
* @param {string | number | symbol} property
|
|
1049
|
-
* @param {Block} block
|
|
1050
1062
|
* @param {number} [d=1]
|
|
1051
1063
|
* @returns {number}
|
|
1052
1064
|
*/
|
|
1053
|
-
export function update_property(obj, property,
|
|
1065
|
+
export function update_property(obj, property, d = 1) {
|
|
1054
1066
|
var tracked = obj[property];
|
|
1055
1067
|
var value = get(tracked);
|
|
1056
1068
|
var new_value = d === 1 ? value++ : value--;
|
|
1057
|
-
set(tracked, value
|
|
1069
|
+
set(tracked, value);
|
|
1058
1070
|
return new_value;
|
|
1059
1071
|
}
|
|
1060
1072
|
|
|
1061
1073
|
/**
|
|
1062
1074
|
* @param {any} obj
|
|
1063
1075
|
* @param {string | number | symbol} property
|
|
1064
|
-
* @param {Block} block
|
|
1065
1076
|
* @param {number} [d=1]
|
|
1066
1077
|
* @returns {number}
|
|
1067
1078
|
*/
|
|
1068
|
-
export function update_pre_property(obj, property,
|
|
1079
|
+
export function update_pre_property(obj, property, d = 1) {
|
|
1069
1080
|
var tracked = obj[property];
|
|
1070
1081
|
var value = get(tracked);
|
|
1071
1082
|
var new_value = d === 1 ? ++value : --value;
|
|
1072
|
-
set(tracked, new_value
|
|
1083
|
+
set(tracked, new_value);
|
|
1073
1084
|
return new_value;
|
|
1074
1085
|
}
|
|
1075
1086
|
|
|
@@ -1093,7 +1104,7 @@ export function with_scope(block, fn) {
|
|
|
1093
1104
|
* @returns {Block | null}
|
|
1094
1105
|
*/
|
|
1095
1106
|
export function scope() {
|
|
1096
|
-
return active_scope;
|
|
1107
|
+
return active_scope || active_block;
|
|
1097
1108
|
}
|
|
1098
1109
|
|
|
1099
1110
|
/**
|
|
@@ -1206,7 +1217,7 @@ export async function maybe_tracked(v) {
|
|
|
1206
1217
|
} else {
|
|
1207
1218
|
value = await async_computed(async () => {
|
|
1208
1219
|
return await get_tracked(v);
|
|
1209
|
-
}, /** @type {Block} */(active_block));
|
|
1220
|
+
}, /** @type {Block} */ (active_block));
|
|
1210
1221
|
}
|
|
1211
1222
|
} else {
|
|
1212
1223
|
value = await v;
|