@angular/core 17.0.0-next.2 → 17.0.0-next.4
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/esm2022/src/core_reactivity_export_internal.mjs +3 -3
- package/esm2022/src/core_render3_private_export.mjs +2 -2
- package/esm2022/src/di/initializer_token.mjs +1 -1
- package/esm2022/src/di/internal_tokens.mjs +1 -1
- package/esm2022/src/di/r3_injector.mjs +3 -4
- package/esm2022/src/hydration/annotate.mjs +9 -6
- package/esm2022/src/hydration/cleanup.mjs +2 -2
- package/esm2022/src/linker/template_ref.mjs +3 -3
- package/esm2022/src/linker/view_container_ref.mjs +80 -25
- package/esm2022/src/metadata/directives.mjs +1 -1
- package/esm2022/src/metadata/resource_loading.mjs +27 -14
- package/esm2022/src/render3/after_render_hooks.mjs +83 -49
- package/esm2022/src/render3/component.mjs +4 -3
- package/esm2022/src/render3/component_ref.mjs +3 -4
- package/esm2022/src/render3/di.mjs +1 -1
- package/esm2022/src/render3/index.mjs +2 -2
- package/esm2022/src/render3/instructions/all.mjs +2 -1
- package/esm2022/src/render3/instructions/change_detection.mjs +7 -8
- package/esm2022/src/render3/instructions/component_instance.mjs +23 -0
- package/esm2022/src/render3/instructions/control_flow.mjs +20 -4
- package/esm2022/src/render3/instructions/defer.mjs +100 -39
- package/esm2022/src/render3/instructions/shared.mjs +20 -14
- package/esm2022/src/render3/interfaces/defer.mjs +1 -1
- package/esm2022/src/render3/interfaces/definition.mjs +1 -1
- package/esm2022/src/render3/interfaces/injector.mjs +1 -1
- package/esm2022/src/render3/interfaces/node.mjs +16 -1
- package/esm2022/src/render3/interfaces/styling.mjs +4 -7
- package/esm2022/src/render3/interfaces/view.mjs +1 -1
- package/esm2022/src/render3/jit/directive.mjs +6 -2
- package/esm2022/src/render3/jit/environment.mjs +2 -1
- package/esm2022/src/render3/node_manipulation.mjs +4 -3
- package/esm2022/src/render3/pipe.mjs +2 -1
- package/esm2022/src/render3/reactive_lview_consumer.mjs +25 -45
- package/esm2022/src/render3/reactivity/effect.mjs +147 -44
- package/esm2022/src/render3/util/injector_utils.mjs +1 -1
- package/esm2022/src/render3/view_manipulation.mjs +13 -2
- package/esm2022/src/signals/index.mjs +4 -4
- package/esm2022/src/signals/src/api.mjs +2 -11
- package/esm2022/src/signals/src/computed.mjs +43 -93
- package/esm2022/src/signals/src/graph.mjs +241 -162
- package/esm2022/src/signals/src/signal.mjs +59 -79
- package/esm2022/src/signals/src/watch.mjs +38 -52
- package/esm2022/src/signals/src/weak_ref.mjs +2 -29
- package/esm2022/src/util/security/trusted_type_defs.mjs +1 -1
- package/esm2022/src/util/security/trusted_types.mjs +1 -1
- package/esm2022/src/version.mjs +1 -1
- package/esm2022/src/zone/ng_zone.mjs +16 -1
- package/esm2022/testing/src/component_fixture.mjs +4 -2
- package/esm2022/testing/src/logger.mjs +3 -3
- package/esm2022/testing/src/test_bed.mjs +14 -3
- package/esm2022/testing/src/test_bed_compiler.mjs +3 -3
- package/fesm2022/core.mjs +6654 -6366
- package/fesm2022/core.mjs.map +1 -1
- package/fesm2022/rxjs-interop.mjs +1 -1
- package/fesm2022/testing.mjs +19 -6
- package/fesm2022/testing.mjs.map +1 -1
- package/index.d.ts +201 -142
- package/package.json +1 -1
- package/rxjs-interop/index.d.ts +1 -1
- package/schematics/ng-generate/standalone-migration/bundle.js +264 -201
- package/schematics/ng-generate/standalone-migration/bundle.js.map +4 -4
- package/testing/index.d.ts +10 -2
|
@@ -5,51 +5,14 @@
|
|
|
5
5
|
* Use of this source code is governed by an MIT-style license that can be
|
|
6
6
|
* found in the LICENSE file at https://angular.io/license
|
|
7
7
|
*/
|
|
8
|
-
import {
|
|
8
|
+
import { REACTIVE_NODE } from '../signals';
|
|
9
9
|
import { assertDefined, assertEqual } from '../util/assert';
|
|
10
10
|
import { markViewDirty } from './instructions/mark_view_dirty';
|
|
11
|
-
export class ReactiveLViewConsumer extends ReactiveNode {
|
|
12
|
-
constructor() {
|
|
13
|
-
super(...arguments);
|
|
14
|
-
this.consumerAllowSignalWrites = false;
|
|
15
|
-
this._lView = null;
|
|
16
|
-
}
|
|
17
|
-
set lView(lView) {
|
|
18
|
-
(typeof ngDevMode === 'undefined' || ngDevMode) &&
|
|
19
|
-
assertEqual(this._lView, null, 'Consumer already associated with a view.');
|
|
20
|
-
this._lView = lView;
|
|
21
|
-
}
|
|
22
|
-
onConsumerDependencyMayHaveChanged() {
|
|
23
|
-
(typeof ngDevMode === 'undefined' || ngDevMode) &&
|
|
24
|
-
assertDefined(this._lView, 'Updating a signal during template or host binding execution is not allowed.');
|
|
25
|
-
markViewDirty(this._lView);
|
|
26
|
-
}
|
|
27
|
-
onProducerUpdateValueVersion() {
|
|
28
|
-
// This type doesn't implement the producer side of a `ReactiveNode`.
|
|
29
|
-
}
|
|
30
|
-
get hasReadASignal() {
|
|
31
|
-
return this.hasProducers;
|
|
32
|
-
}
|
|
33
|
-
runInContext(fn, rf, ctx) {
|
|
34
|
-
const prevConsumer = setActiveConsumer(this);
|
|
35
|
-
this.trackingVersion++;
|
|
36
|
-
try {
|
|
37
|
-
fn(rf, ctx);
|
|
38
|
-
}
|
|
39
|
-
finally {
|
|
40
|
-
setActiveConsumer(prevConsumer);
|
|
41
|
-
}
|
|
42
|
-
}
|
|
43
|
-
destroy() {
|
|
44
|
-
// Incrementing the version means that every producer which tries to update this consumer will
|
|
45
|
-
// consider its record stale, and not notify.
|
|
46
|
-
this.trackingVersion++;
|
|
47
|
-
}
|
|
48
|
-
}
|
|
49
11
|
let currentConsumer = null;
|
|
50
|
-
function
|
|
51
|
-
|
|
52
|
-
|
|
12
|
+
export function setLViewForConsumer(node, lView) {
|
|
13
|
+
(typeof ngDevMode === 'undefined' || ngDevMode) &&
|
|
14
|
+
assertEqual(node.lView, null, 'Consumer already associated with a view.');
|
|
15
|
+
node.lView = lView;
|
|
53
16
|
}
|
|
54
17
|
/**
|
|
55
18
|
* Create a new template consumer pointing at the specified LView.
|
|
@@ -71,11 +34,28 @@ export function getReactiveLViewConsumer(lView, slot) {
|
|
|
71
34
|
*/
|
|
72
35
|
export function commitLViewConsumerIfHasProducers(lView, slot) {
|
|
73
36
|
const consumer = getOrCreateCurrentLViewConsumer();
|
|
74
|
-
if (!consumer.
|
|
37
|
+
if (!consumer.producerNode?.length) {
|
|
75
38
|
return;
|
|
76
39
|
}
|
|
77
40
|
lView[slot] = currentConsumer;
|
|
78
41
|
consumer.lView = lView;
|
|
79
|
-
currentConsumer =
|
|
42
|
+
currentConsumer = createLViewConsumer();
|
|
43
|
+
}
|
|
44
|
+
const REACTIVE_LVIEW_CONSUMER_NODE = {
|
|
45
|
+
...REACTIVE_NODE,
|
|
46
|
+
consumerIsAlwaysLive: true,
|
|
47
|
+
consumerMarkedDirty: (node) => {
|
|
48
|
+
(typeof ngDevMode === 'undefined' || ngDevMode) &&
|
|
49
|
+
assertDefined(node.lView, 'Updating a signal during template or host binding execution is not allowed.');
|
|
50
|
+
markViewDirty(node.lView);
|
|
51
|
+
},
|
|
52
|
+
lView: null,
|
|
53
|
+
};
|
|
54
|
+
function createLViewConsumer() {
|
|
55
|
+
return Object.create(REACTIVE_LVIEW_CONSUMER_NODE);
|
|
56
|
+
}
|
|
57
|
+
function getOrCreateCurrentLViewConsumer() {
|
|
58
|
+
currentConsumer ??= createLViewConsumer();
|
|
59
|
+
return currentConsumer;
|
|
80
60
|
}
|
|
81
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
61
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVhY3RpdmVfbHZpZXdfY29uc3VtZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb3JlL3NyYy9yZW5kZXIzL3JlYWN0aXZlX2x2aWV3X2NvbnN1bWVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7R0FNRztBQUVILE9BQU8sRUFBQyxhQUFhLEVBQWUsTUFBTSxZQUFZLENBQUM7QUFDdkQsT0FBTyxFQUFDLGFBQWEsRUFBRSxXQUFXLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUUxRCxPQUFPLEVBQUMsYUFBYSxFQUFDLE1BQU0sZ0NBQWdDLENBQUM7QUFHN0QsSUFBSSxlQUFlLEdBQStCLElBQUksQ0FBQztBQUt2RCxNQUFNLFVBQVUsbUJBQW1CLENBQUMsSUFBMkIsRUFBRSxLQUFZO0lBQzNFLENBQUMsT0FBTyxTQUFTLEtBQUssV0FBVyxJQUFJLFNBQVMsQ0FBQztRQUMzQyxXQUFXLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxJQUFJLEVBQUUsMENBQTBDLENBQUMsQ0FBQztJQUM5RSxJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztBQUNyQixDQUFDO0FBRUQ7Ozs7R0FJRztBQUNILE1BQU0sVUFBVSx3QkFBd0IsQ0FDcEMsS0FBWSxFQUFFLElBQTZFO0lBRTdGLE9BQU8sS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLCtCQUErQixFQUFFLENBQUM7QUFDMUQsQ0FBQztBQUVEOzs7Ozs7Ozs7R0FTRztBQUNILE1BQU0sVUFBVSxpQ0FBaUMsQ0FDN0MsS0FBWSxFQUNaLElBQTZFO0lBQy9FLE1BQU0sUUFBUSxHQUFHLCtCQUErQixFQUFFLENBQUM7SUFDbkQsSUFBSSxDQUFDLFFBQVEsQ0FBQyxZQUFZLEVBQUUsTUFBTSxFQUFFO1FBQ2xDLE9BQU87S0FDUjtJQUVELEtBQUssQ0FBQyxJQUFJLENBQUMsR0FBRyxlQUFlLENBQUM7SUFDOUIsUUFBUSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7SUFDdkIsZUFBZSxHQUFHLG1CQUFtQixFQUFFLENBQUM7QUFDMUMsQ0FBQztBQUVELE1BQU0sNEJBQTRCLEdBQUc7SUFDbkMsR0FBRyxhQUFhO0lBQ2hCLG9CQUFvQixFQUFFLElBQUk7SUFDMUIsbUJBQW1CLEVBQUUsQ0FBQyxJQUEyQixFQUFFLEVBQUU7UUFDbkQsQ0FBQyxPQUFPLFNBQVMsS0FBSyxXQUFXLElBQUksU0FBUyxDQUFDO1lBQzNDLGFBQWEsQ0FDVCxJQUFJLENBQUMsS0FBSyxFQUNWLDZFQUE2RSxDQUFDLENBQUM7UUFDdkYsYUFBYSxDQUFDLElBQUksQ0FBQyxLQUFNLENBQUMsQ0FBQztJQUM3QixDQUFDO0lBQ0QsS0FBSyxFQUFFLElBQUk7Q0FDWixDQUFDO0FBRUYsU0FBUyxtQkFBbUI7SUFDMUIsT0FBTyxNQUFNLENBQUMsTUFBTSxDQUFDLDRCQUE0QixDQUFDLENBQUM7QUFDckQsQ0FBQztBQUVELFNBQVMsK0JBQStCO0lBQ3RDLGVBQWUsS0FBSyxtQkFBbUIsRUFBRSxDQUFDO0lBQzFDLE9BQU8sZUFBZSxDQUFDO0FBQ3pCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlXG4gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlXG4gKi9cblxuaW1wb3J0IHtSRUFDVElWRV9OT0RFLCBSZWFjdGl2ZU5vZGV9IGZyb20gJy4uL3NpZ25hbHMnO1xuaW1wb3J0IHthc3NlcnREZWZpbmVkLCBhc3NlcnRFcXVhbH0gZnJvbSAnLi4vdXRpbC9hc3NlcnQnO1xuXG5pbXBvcnQge21hcmtWaWV3RGlydHl9IGZyb20gJy4vaW5zdHJ1Y3Rpb25zL21hcmtfdmlld19kaXJ0eSc7XG5pbXBvcnQge0xWaWV3LCBSRUFDVElWRV9IT1NUX0JJTkRJTkdfQ09OU1VNRVIsIFJFQUNUSVZFX1RFTVBMQVRFX0NPTlNVTUVSfSBmcm9tICcuL2ludGVyZmFjZXMvdmlldyc7XG5cbmxldCBjdXJyZW50Q29uc3VtZXI6IFJlYWN0aXZlTFZpZXdDb25zdW1lcnxudWxsID0gbnVsbDtcbmV4cG9ydCBpbnRlcmZhY2UgUmVhY3RpdmVMVmlld0NvbnN1bWVyIGV4dGVuZHMgUmVhY3RpdmVOb2RlIHtcbiAgbFZpZXc6IExWaWV3fG51bGw7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzZXRMVmlld0ZvckNvbnN1bWVyKG5vZGU6IFJlYWN0aXZlTFZpZXdDb25zdW1lciwgbFZpZXc6IExWaWV3KTogdm9pZCB7XG4gICh0eXBlb2YgbmdEZXZNb2RlID09PSAndW5kZWZpbmVkJyB8fCBuZ0Rldk1vZGUpICYmXG4gICAgICBhc3NlcnRFcXVhbChub2RlLmxWaWV3LCBudWxsLCAnQ29uc3VtZXIgYWxyZWFkeSBhc3NvY2lhdGVkIHdpdGggYSB2aWV3LicpO1xuICBub2RlLmxWaWV3ID0gbFZpZXc7XG59XG5cbi8qKlxuICogQ3JlYXRlIGEgbmV3IHRlbXBsYXRlIGNvbnN1bWVyIHBvaW50aW5nIGF0IHRoZSBzcGVjaWZpZWQgTFZpZXcuXG4gKiBTb21ldGltZXMsIGEgcHJldmlvdXNseSBjcmVhdGVkIGNvbnN1bWVyIG1heSBiZSByZXVzZWQsIGluIG9yZGVyIHRvIHNhdmUgb24gYWxsb2NhdGlvbnMuIEluIHRoYXRcbiAqIGNhc2UsIHRoZSBMVmlldyB3aWxsIGJlIHVwZGF0ZWQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRSZWFjdGl2ZUxWaWV3Q29uc3VtZXIoXG4gICAgbFZpZXc6IExWaWV3LCBzbG90OiB0eXBlb2YgUkVBQ1RJVkVfVEVNUExBVEVfQ09OU1VNRVJ8dHlwZW9mIFJFQUNUSVZFX0hPU1RfQklORElOR19DT05TVU1FUik6XG4gICAgUmVhY3RpdmVMVmlld0NvbnN1bWVyIHtcbiAgcmV0dXJuIGxWaWV3W3Nsb3RdID8/IGdldE9yQ3JlYXRlQ3VycmVudExWaWV3Q29uc3VtZXIoKTtcbn1cblxuLyoqXG4gKiBBc3NpZ25zIHRoZSBgY3VycmVudFRlbXBsYXRlQ29udGV4dGAgdG8gaXRzIExWaWV3J3MgYFJFQUNUSVZFX0NPTlNVTUVSYCBzbG90IGlmIHRoZXJlIGFyZSB0cmFja2VkXG4gKiBwcm9kdWNlcnMuXG4gKlxuICogVGhlIHByZXNlbmNlIG9mIHByb2R1Y2VycyBtZWFucyB0aGF0IGEgc2lnbmFsIHdhcyByZWFkIHdoaWxlIHRoZSBjb25zdW1lciB3YXMgdGhlIGFjdGl2ZVxuICogY29uc3VtZXIuXG4gKlxuICogSWYgbm8gcHJvZHVjZXJzIGFyZSBwcmVzZW50LCB3ZSBkbyBub3QgYXNzaWduIHRoZSBjdXJyZW50IHRlbXBsYXRlIGNvbnRleHQuIFRoaXMgYWxzbyBtZWFucyB3ZVxuICogY2FuIGp1c3QgcmV1c2UgdGhlIHRlbXBsYXRlIGNvbnRleHQgZm9yIHRoZSBuZXh0IExWaWV3LlxuICovXG5leHBvcnQgZnVuY3Rpb24gY29tbWl0TFZpZXdDb25zdW1lcklmSGFzUHJvZHVjZXJzKFxuICAgIGxWaWV3OiBMVmlldyxcbiAgICBzbG90OiB0eXBlb2YgUkVBQ1RJVkVfVEVNUExBVEVfQ09OU1VNRVJ8dHlwZW9mIFJFQUNUSVZFX0hPU1RfQklORElOR19DT05TVU1FUik6IHZvaWQge1xuICBjb25zdCBjb25zdW1lciA9IGdldE9yQ3JlYXRlQ3VycmVudExWaWV3Q29uc3VtZXIoKTtcbiAgaWYgKCFjb25zdW1lci5wcm9kdWNlck5vZGU/Lmxlbmd0aCkge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGxWaWV3W3Nsb3RdID0gY3VycmVudENvbnN1bWVyO1xuICBjb25zdW1lci5sVmlldyA9IGxWaWV3O1xuICBjdXJyZW50Q29uc3VtZXIgPSBjcmVhdGVMVmlld0NvbnN1bWVyKCk7XG59XG5cbmNvbnN0IFJFQUNUSVZFX0xWSUVXX0NPTlNVTUVSX05PREUgPSB7XG4gIC4uLlJFQUNUSVZFX05PREUsXG4gIGNvbnN1bWVySXNBbHdheXNMaXZlOiB0cnVlLFxuICBjb25zdW1lck1hcmtlZERpcnR5OiAobm9kZTogUmVhY3RpdmVMVmlld0NvbnN1bWVyKSA9PiB7XG4gICAgKHR5cGVvZiBuZ0Rldk1vZGUgPT09ICd1bmRlZmluZWQnIHx8IG5nRGV2TW9kZSkgJiZcbiAgICAgICAgYXNzZXJ0RGVmaW5lZChcbiAgICAgICAgICAgIG5vZGUubFZpZXcsXG4gICAgICAgICAgICAnVXBkYXRpbmcgYSBzaWduYWwgZHVyaW5nIHRlbXBsYXRlIG9yIGhvc3QgYmluZGluZyBleGVjdXRpb24gaXMgbm90IGFsbG93ZWQuJyk7XG4gICAgbWFya1ZpZXdEaXJ0eShub2RlLmxWaWV3ISk7XG4gIH0sXG4gIGxWaWV3OiBudWxsLFxufTtcblxuZnVuY3Rpb24gY3JlYXRlTFZpZXdDb25zdW1lcigpOiBSZWFjdGl2ZUxWaWV3Q29uc3VtZXIge1xuICByZXR1cm4gT2JqZWN0LmNyZWF0ZShSRUFDVElWRV9MVklFV19DT05TVU1FUl9OT0RFKTtcbn1cblxuZnVuY3Rpb24gZ2V0T3JDcmVhdGVDdXJyZW50TFZpZXdDb25zdW1lcigpIHtcbiAgY3VycmVudENvbnN1bWVyID8/PSBjcmVhdGVMVmlld0NvbnN1bWVyKCk7XG4gIHJldHVybiBjdXJyZW50Q29uc3VtZXI7XG59XG4iXX0=
|
|
@@ -6,66 +6,166 @@
|
|
|
6
6
|
* found in the LICENSE file at https://angular.io/license
|
|
7
7
|
*/
|
|
8
8
|
import { assertInInjectionContext } from '../../di/contextual';
|
|
9
|
+
import { InjectionToken } from '../../di/injection_token';
|
|
9
10
|
import { Injector } from '../../di/injector';
|
|
10
11
|
import { inject } from '../../di/injector_compatibility';
|
|
11
12
|
import { ɵɵdefineInjectable } from '../../di/interface/defs';
|
|
13
|
+
import { ErrorHandler } from '../../error_handler';
|
|
12
14
|
import { DestroyRef } from '../../linker/destroy_ref';
|
|
13
|
-
import {
|
|
15
|
+
import { isInNotificationPhase, watch } from '../../signals';
|
|
14
16
|
/**
|
|
15
|
-
*
|
|
17
|
+
* Not public API, which guarantees `EffectScheduler` only ever comes from the application root
|
|
18
|
+
* injector.
|
|
16
19
|
*/
|
|
17
|
-
export
|
|
20
|
+
export const APP_EFFECT_SCHEDULER = new InjectionToken('', {
|
|
21
|
+
providedIn: 'root',
|
|
22
|
+
factory: () => inject(EffectScheduler),
|
|
23
|
+
});
|
|
24
|
+
/**
|
|
25
|
+
* A scheduler which manages the execution of effects.
|
|
26
|
+
*/
|
|
27
|
+
export class EffectScheduler {
|
|
28
|
+
/** @nocollapse */
|
|
29
|
+
static { this.ɵprov = ɵɵdefineInjectable({
|
|
30
|
+
token: EffectScheduler,
|
|
31
|
+
providedIn: 'root',
|
|
32
|
+
factory: () => new ZoneAwareMicrotaskScheduler(),
|
|
33
|
+
}); }
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* An `EffectScheduler` which is capable of queueing scheduled effects per-zone, and flushing them
|
|
37
|
+
* as an explicit operation.
|
|
38
|
+
*/
|
|
39
|
+
export class ZoneAwareQueueingScheduler {
|
|
18
40
|
constructor() {
|
|
19
|
-
this.
|
|
20
|
-
this.
|
|
21
|
-
}
|
|
22
|
-
create(effectFn, destroyRef, allowSignalWrites) {
|
|
23
|
-
const zone = (typeof Zone === 'undefined') ? null : Zone.current;
|
|
24
|
-
const watch = new Watch(effectFn, (watch) => {
|
|
25
|
-
if (!this.all.has(watch)) {
|
|
26
|
-
return;
|
|
27
|
-
}
|
|
28
|
-
this.queue.set(watch, zone);
|
|
29
|
-
}, allowSignalWrites);
|
|
30
|
-
this.all.add(watch);
|
|
31
|
-
// Effects start dirty.
|
|
32
|
-
watch.notify();
|
|
33
|
-
let unregisterOnDestroy;
|
|
34
|
-
const destroy = () => {
|
|
35
|
-
watch.cleanup();
|
|
36
|
-
unregisterOnDestroy?.();
|
|
37
|
-
this.all.delete(watch);
|
|
38
|
-
this.queue.delete(watch);
|
|
39
|
-
};
|
|
40
|
-
unregisterOnDestroy = destroyRef?.onDestroy(destroy);
|
|
41
|
-
return {
|
|
42
|
-
destroy,
|
|
43
|
-
};
|
|
41
|
+
this.queuedEffectCount = 0;
|
|
42
|
+
this.queues = new Map();
|
|
44
43
|
}
|
|
45
|
-
|
|
46
|
-
|
|
44
|
+
scheduleEffect(handle) {
|
|
45
|
+
const zone = handle.creationZone;
|
|
46
|
+
if (!this.queues.has(zone)) {
|
|
47
|
+
this.queues.set(zone, new Set());
|
|
48
|
+
}
|
|
49
|
+
const queue = this.queues.get(zone);
|
|
50
|
+
if (queue.has(handle)) {
|
|
47
51
|
return;
|
|
48
52
|
}
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
53
|
+
this.queuedEffectCount++;
|
|
54
|
+
queue.add(handle);
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* Run all scheduled effects.
|
|
58
|
+
*
|
|
59
|
+
* Execution order of effects within the same zone is guaranteed to be FIFO, but there is no
|
|
60
|
+
* ordering guarantee between effects scheduled in different zones.
|
|
61
|
+
*/
|
|
62
|
+
flush() {
|
|
63
|
+
while (this.queuedEffectCount > 0) {
|
|
64
|
+
for (const [zone, queue] of this.queues) {
|
|
65
|
+
// `zone` here must be defined.
|
|
66
|
+
if (zone === null) {
|
|
67
|
+
this.flushQueue(queue);
|
|
68
|
+
}
|
|
69
|
+
else {
|
|
70
|
+
zone.run(() => this.flushQueue(queue));
|
|
71
|
+
}
|
|
56
72
|
}
|
|
57
73
|
}
|
|
58
74
|
}
|
|
59
|
-
|
|
60
|
-
|
|
75
|
+
flushQueue(queue) {
|
|
76
|
+
for (const handle of queue) {
|
|
77
|
+
queue.delete(handle);
|
|
78
|
+
this.queuedEffectCount--;
|
|
79
|
+
// TODO: what happens if this throws an error?
|
|
80
|
+
handle.run();
|
|
81
|
+
}
|
|
61
82
|
}
|
|
62
83
|
/** @nocollapse */
|
|
63
84
|
static { this.ɵprov = ɵɵdefineInjectable({
|
|
64
|
-
token:
|
|
85
|
+
token: ZoneAwareQueueingScheduler,
|
|
65
86
|
providedIn: 'root',
|
|
66
|
-
factory: () => new
|
|
87
|
+
factory: () => new ZoneAwareQueueingScheduler(),
|
|
67
88
|
}); }
|
|
68
89
|
}
|
|
90
|
+
/**
|
|
91
|
+
* A wrapper around `ZoneAwareQueueingScheduler` that schedules flushing via the microtask queue
|
|
92
|
+
* when.
|
|
93
|
+
*/
|
|
94
|
+
export class ZoneAwareMicrotaskScheduler {
|
|
95
|
+
constructor() {
|
|
96
|
+
this.hasQueuedFlush = false;
|
|
97
|
+
this.delegate = new ZoneAwareQueueingScheduler();
|
|
98
|
+
this.flushTask = () => {
|
|
99
|
+
// Leave `hasQueuedFlush` as `true` so we don't queue another microtask if more effects are
|
|
100
|
+
// scheduled during flushing. The flush of the `ZoneAwareQueueingScheduler` delegate is
|
|
101
|
+
// guaranteed to empty the queue.
|
|
102
|
+
this.delegate.flush();
|
|
103
|
+
this.hasQueuedFlush = false;
|
|
104
|
+
// This is a variable initialization, not a method.
|
|
105
|
+
// tslint:disable-next-line:semicolon
|
|
106
|
+
};
|
|
107
|
+
}
|
|
108
|
+
scheduleEffect(handle) {
|
|
109
|
+
this.delegate.scheduleEffect(handle);
|
|
110
|
+
if (!this.hasQueuedFlush) {
|
|
111
|
+
queueMicrotask(this.flushTask);
|
|
112
|
+
this.hasQueuedFlush = true;
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
/**
|
|
117
|
+
* Core reactive node for an Angular effect.
|
|
118
|
+
*
|
|
119
|
+
* `EffectHandle` combines the reactive graph's `Watch` base node for effects with the framework's
|
|
120
|
+
* scheduling abstraction (`EffectScheduler`) as well as automatic cleanup via `DestroyRef` if
|
|
121
|
+
* available/requested.
|
|
122
|
+
*/
|
|
123
|
+
class EffectHandle {
|
|
124
|
+
constructor(scheduler, effectFn, creationZone, destroyRef, errorHandler, allowSignalWrites) {
|
|
125
|
+
this.scheduler = scheduler;
|
|
126
|
+
this.effectFn = effectFn;
|
|
127
|
+
this.creationZone = creationZone;
|
|
128
|
+
this.errorHandler = errorHandler;
|
|
129
|
+
this.alive = true;
|
|
130
|
+
this.watcher =
|
|
131
|
+
watch((onCleanup) => this.runEffect(onCleanup), () => this.schedule(), allowSignalWrites);
|
|
132
|
+
this.unregisterOnDestroy = destroyRef?.onDestroy(() => this.destroy());
|
|
133
|
+
}
|
|
134
|
+
runEffect(onCleanup) {
|
|
135
|
+
if (!this.alive) {
|
|
136
|
+
// Running a destroyed effect is a no-op.
|
|
137
|
+
return;
|
|
138
|
+
}
|
|
139
|
+
if (ngDevMode && isInNotificationPhase()) {
|
|
140
|
+
throw new Error(`Schedulers cannot synchronously execute effects while scheduling.`);
|
|
141
|
+
}
|
|
142
|
+
try {
|
|
143
|
+
this.effectFn(onCleanup);
|
|
144
|
+
}
|
|
145
|
+
catch (err) {
|
|
146
|
+
this.errorHandler?.handleError(err);
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
run() {
|
|
150
|
+
this.watcher.run();
|
|
151
|
+
}
|
|
152
|
+
schedule() {
|
|
153
|
+
if (!this.alive) {
|
|
154
|
+
return;
|
|
155
|
+
}
|
|
156
|
+
this.scheduler.scheduleEffect(this);
|
|
157
|
+
}
|
|
158
|
+
notify() {
|
|
159
|
+
this.watcher.notify();
|
|
160
|
+
}
|
|
161
|
+
destroy() {
|
|
162
|
+
this.alive = false;
|
|
163
|
+
this.watcher.cleanup();
|
|
164
|
+
this.unregisterOnDestroy?.();
|
|
165
|
+
// Note: if the effect is currently scheduled, it's not un-scheduled, and so the scheduler will
|
|
166
|
+
// retain a reference to it. Attempting to execute it will be a no-op.
|
|
167
|
+
}
|
|
168
|
+
}
|
|
69
169
|
/**
|
|
70
170
|
* Create a global `Effect` for the given reactive function.
|
|
71
171
|
*
|
|
@@ -74,8 +174,11 @@ export class EffectManager {
|
|
|
74
174
|
export function effect(effectFn, options) {
|
|
75
175
|
!options?.injector && assertInInjectionContext(effect);
|
|
76
176
|
const injector = options?.injector ?? inject(Injector);
|
|
77
|
-
const
|
|
177
|
+
const errorHandler = injector.get(ErrorHandler, null, { optional: true });
|
|
78
178
|
const destroyRef = options?.manualCleanup !== true ? injector.get(DestroyRef) : null;
|
|
79
|
-
|
|
179
|
+
const handle = new EffectHandle(injector.get(APP_EFFECT_SCHEDULER), effectFn, (typeof Zone === 'undefined') ? null : Zone.current, destroyRef, errorHandler, options?.allowSignalWrites ?? false);
|
|
180
|
+
// Effects start dirty.
|
|
181
|
+
handle.notify();
|
|
182
|
+
return handle;
|
|
80
183
|
}
|
|
81
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWZmZWN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29yZS9zcmMvcmVuZGVyMy9yZWFjdGl2aXR5L2VmZmVjdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7O0dBTUc7QUFFSCxPQUFPLEVBQUMsd0JBQXdCLEVBQUMsTUFBTSxxQkFBcUIsQ0FBQztBQUM3RCxPQUFPLEVBQUMsUUFBUSxFQUFDLE1BQU0sbUJBQW1CLENBQUM7QUFDM0MsT0FBTyxFQUFDLE1BQU0sRUFBQyxNQUFNLGlDQUFpQyxDQUFDO0FBQ3ZELE9BQU8sRUFBQyxrQkFBa0IsRUFBQyxNQUFNLHlCQUF5QixDQUFDO0FBQzNELE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSwwQkFBMEIsQ0FBQztBQUNwRCxPQUFPLEVBQUMsS0FBSyxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBZ0JwQzs7R0FFRztBQUNILE1BQU0sT0FBTyxhQUFhO0lBQTFCO1FBQ1UsUUFBRyxHQUFHLElBQUksR0FBRyxFQUFTLENBQUM7UUFDdkIsVUFBSyxHQUFHLElBQUksR0FBRyxFQUFvQixDQUFDO0lBNEQ5QyxDQUFDO0lBMURDLE1BQU0sQ0FDRixRQUFtRSxFQUNuRSxVQUEyQixFQUFFLGlCQUEwQjtRQUN6RCxNQUFNLElBQUksR0FBRyxDQUFDLE9BQU8sSUFBSSxLQUFLLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUM7UUFDakUsTUFBTSxLQUFLLEdBQUcsSUFBSSxLQUFLLENBQUMsUUFBUSxFQUFFLENBQUMsS0FBSyxFQUFFLEVBQUU7WUFDMUMsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxFQUFFO2dCQUN4QixPQUFPO2FBQ1I7WUFFRCxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDOUIsQ0FBQyxFQUFFLGlCQUFpQixDQUFDLENBQUM7UUFFdEIsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7UUFFcEIsdUJBQXVCO1FBQ3ZCLEtBQUssQ0FBQyxNQUFNLEVBQUUsQ0FBQztRQUVmLElBQUksbUJBQTJDLENBQUM7UUFFaEQsTUFBTSxPQUFPLEdBQUcsR0FBRyxFQUFFO1lBQ25CLEtBQUssQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUNoQixtQkFBbUIsRUFBRSxFQUFFLENBQUM7WUFDeEIsSUFBSSxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDdkIsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDM0IsQ0FBQyxDQUFDO1FBRUYsbUJBQW1CLEdBQUcsVUFBVSxFQUFFLFNBQVMsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUVyRCxPQUFPO1lBQ0wsT0FBTztTQUNSLENBQUM7SUFDSixDQUFDO0lBRUQsS0FBSztRQUNILElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLEtBQUssQ0FBQyxFQUFFO1lBQ3pCLE9BQU87U0FDUjtRQUVELEtBQUssTUFBTSxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsSUFBSSxJQUFJLENBQUMsS0FBSyxFQUFFO1lBQ3RDLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ3pCLElBQUksSUFBSSxFQUFFO2dCQUNSLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUM7YUFDN0I7aUJBQU07Z0JBQ0wsS0FBSyxDQUFDLEdBQUcsRUFBRSxDQUFDO2FBQ2I7U0FDRjtJQUNILENBQUM7SUFFRCxJQUFJLFlBQVk7UUFDZCxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxLQUFLLENBQUMsQ0FBQztJQUMvQixDQUFDO0lBRUQsa0JBQWtCO2FBQ1gsVUFBSyxHQUE2QixrQkFBa0IsQ0FBQztRQUMxRCxLQUFLLEVBQUUsYUFBYTtRQUNwQixVQUFVLEVBQUUsTUFBTTtRQUNsQixPQUFPLEVBQUUsR0FBRyxFQUFFLENBQUMsSUFBSSxhQUFhLEVBQUU7S0FDbkMsQ0FBQyxBQUpVLENBSVQ7O0FBOENMOzs7O0dBSUc7QUFDSCxNQUFNLFVBQVUsTUFBTSxDQUNsQixRQUFzRCxFQUN0RCxPQUE2QjtJQUMvQixDQUFDLE9BQU8sRUFBRSxRQUFRLElBQUksd0JBQXdCLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDdkQsTUFBTSxRQUFRLEdBQUcsT0FBTyxFQUFFLFFBQVEsSUFBSSxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDdkQsTUFBTSxhQUFhLEdBQUcsUUFBUSxDQUFDLEdBQUcsQ0FBQyxhQUFhLENBQUMsQ0FBQztJQUNsRCxNQUFNLFVBQVUsR0FBRyxPQUFPLEVBQUUsYUFBYSxLQUFLLElBQUksQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO0lBQ3JGLE9BQU8sYUFBYSxDQUFDLE1BQU0sQ0FBQyxRQUFRLEVBQUUsVUFBVSxFQUFFLENBQUMsQ0FBQyxPQUFPLEVBQUUsaUJBQWlCLENBQUMsQ0FBQztBQUNsRixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZVxuICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZVxuICovXG5cbmltcG9ydCB7YXNzZXJ0SW5JbmplY3Rpb25Db250ZXh0fSBmcm9tICcuLi8uLi9kaS9jb250ZXh0dWFsJztcbmltcG9ydCB7SW5qZWN0b3J9IGZyb20gJy4uLy4uL2RpL2luamVjdG9yJztcbmltcG9ydCB7aW5qZWN0fSBmcm9tICcuLi8uLi9kaS9pbmplY3Rvcl9jb21wYXRpYmlsaXR5JztcbmltcG9ydCB7ybXJtWRlZmluZUluamVjdGFibGV9IGZyb20gJy4uLy4uL2RpL2ludGVyZmFjZS9kZWZzJztcbmltcG9ydCB7RGVzdHJveVJlZn0gZnJvbSAnLi4vLi4vbGlua2VyL2Rlc3Ryb3lfcmVmJztcbmltcG9ydCB7V2F0Y2h9IGZyb20gJy4uLy4uL3NpZ25hbHMnO1xuXG4vKipcbiAqIEFuIGVmZmVjdCBjYW4sIG9wdGlvbmFsbHksIHJlZ2lzdGVyIGEgY2xlYW51cCBmdW5jdGlvbi4gSWYgcmVnaXN0ZXJlZCwgdGhlIGNsZWFudXAgaXMgZXhlY3V0ZWRcbiAqIGJlZm9yZSB0aGUgbmV4dCBlZmZlY3QgcnVuLiBUaGUgY2xlYW51cCBmdW5jdGlvbiBtYWtlcyBpdCBwb3NzaWJsZSB0byBcImNhbmNlbFwiIGFueSB3b3JrIHRoYXQgdGhlXG4gKiBwcmV2aW91cyBlZmZlY3QgcnVuIG1pZ2h0IGhhdmUgc3RhcnRlZC5cbiAqXG4gKiBAZGV2ZWxvcGVyUHJldmlld1xuICovXG5leHBvcnQgdHlwZSBFZmZlY3RDbGVhbnVwRm4gPSAoKSA9PiB2b2lkO1xuXG4vKipcbiAqIEEgY2FsbGJhY2sgcGFzc2VkIHRvIHRoZSBlZmZlY3QgZnVuY3Rpb24gdGhhdCBtYWtlcyBpdCBwb3NzaWJsZSB0byByZWdpc3RlciBjbGVhbnVwIGxvZ2ljLlxuICovXG5leHBvcnQgdHlwZSBFZmZlY3RDbGVhbnVwUmVnaXN0ZXJGbiA9IChjbGVhbnVwRm46IEVmZmVjdENsZWFudXBGbikgPT4gdm9pZDtcblxuLyoqXG4gKiBUcmFja3MgYWxsIGVmZmVjdHMgcmVnaXN0ZXJlZCB3aXRoaW4gYSBnaXZlbiBhcHBsaWNhdGlvbiBhbmQgcnVucyB0aGVtIHZpYSBgZmx1c2hgLlxuICovXG5leHBvcnQgY2xhc3MgRWZmZWN0TWFuYWdlciB7XG4gIHByaXZhdGUgYWxsID0gbmV3IFNldDxXYXRjaD4oKTtcbiAgcHJpdmF0ZSBxdWV1ZSA9IG5ldyBNYXA8V2F0Y2gsIFpvbmV8bnVsbD4oKTtcblxuICBjcmVhdGUoXG4gICAgICBlZmZlY3RGbjogKG9uQ2xlYW51cDogKGNsZWFudXBGbjogRWZmZWN0Q2xlYW51cEZuKSA9PiB2b2lkKSA9PiB2b2lkLFxuICAgICAgZGVzdHJveVJlZjogRGVzdHJveVJlZnxudWxsLCBhbGxvd1NpZ25hbFdyaXRlczogYm9vbGVhbik6IEVmZmVjdFJlZiB7XG4gICAgY29uc3Qgem9uZSA9ICh0eXBlb2YgWm9uZSA9PT0gJ3VuZGVmaW5lZCcpID8gbnVsbCA6IFpvbmUuY3VycmVudDtcbiAgICBjb25zdCB3YXRjaCA9IG5ldyBXYXRjaChlZmZlY3RGbiwgKHdhdGNoKSA9PiB7XG4gICAgICBpZiAoIXRoaXMuYWxsLmhhcyh3YXRjaCkpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICB0aGlzLnF1ZXVlLnNldCh3YXRjaCwgem9uZSk7XG4gICAgfSwgYWxsb3dTaWduYWxXcml0ZXMpO1xuXG4gICAgdGhpcy5hbGwuYWRkKHdhdGNoKTtcblxuICAgIC8vIEVmZmVjdHMgc3RhcnQgZGlydHkuXG4gICAgd2F0Y2gubm90aWZ5KCk7XG5cbiAgICBsZXQgdW5yZWdpc3Rlck9uRGVzdHJveTogKCgpID0+IHZvaWQpfHVuZGVmaW5lZDtcblxuICAgIGNvbnN0IGRlc3Ryb3kgPSAoKSA9PiB7XG4gICAgICB3YXRjaC5jbGVhbnVwKCk7XG4gICAgICB1bnJlZ2lzdGVyT25EZXN0cm95Py4oKTtcbiAgICAgIHRoaXMuYWxsLmRlbGV0ZSh3YXRjaCk7XG4gICAgICB0aGlzLnF1ZXVlLmRlbGV0ZSh3YXRjaCk7XG4gICAgfTtcblxuICAgIHVucmVnaXN0ZXJPbkRlc3Ryb3kgPSBkZXN0cm95UmVmPy5vbkRlc3Ryb3koZGVzdHJveSk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgZGVzdHJveSxcbiAgICB9O1xuICB9XG5cbiAgZmx1c2goKTogdm9pZCB7XG4gICAgaWYgKHRoaXMucXVldWUuc2l6ZSA9PT0gMCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGZvciAoY29uc3QgW3dhdGNoLCB6b25lXSBvZiB0aGlzLnF1ZXVlKSB7XG4gICAgICB0aGlzLnF1ZXVlLmRlbGV0ZSh3YXRjaCk7XG4gICAgICBpZiAoem9uZSkge1xuICAgICAgICB6b25lLnJ1bigoKSA9PiB3YXRjaC5ydW4oKSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB3YXRjaC5ydW4oKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBnZXQgaXNRdWV1ZUVtcHR5KCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLnF1ZXVlLnNpemUgPT09IDA7XG4gIH1cblxuICAvKiogQG5vY29sbGFwc2UgKi9cbiAgc3RhdGljIMm1cHJvdiA9IC8qKiBAcHVyZU9yQnJlYWtNeUNvZGUgKi8gybXJtWRlZmluZUluamVjdGFibGUoe1xuICAgIHRva2VuOiBFZmZlY3RNYW5hZ2VyLFxuICAgIHByb3ZpZGVkSW46ICdyb290JyxcbiAgICBmYWN0b3J5OiAoKSA9PiBuZXcgRWZmZWN0TWFuYWdlcigpLFxuICB9KTtcbn1cblxuLyoqXG4gKiBBIGdsb2JhbCByZWFjdGl2ZSBlZmZlY3QsIHdoaWNoIGNhbiBiZSBtYW51YWxseSBkZXN0cm95ZWQuXG4gKlxuICogQGRldmVsb3BlclByZXZpZXdcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBFZmZlY3RSZWYge1xuICAvKipcbiAgICogU2h1dCBkb3duIHRoZSBlZmZlY3QsIHJlbW92aW5nIGl0IGZyb20gYW55IHVwY29taW5nIHNjaGVkdWxlZCBleGVjdXRpb25zLlxuICAgKi9cbiAgZGVzdHJveSgpOiB2b2lkO1xufVxuXG4vKipcbiAqIE9wdGlvbnMgcGFzc2VkIHRvIHRoZSBgZWZmZWN0YCBmdW5jdGlvbi5cbiAqXG4gKiBAZGV2ZWxvcGVyUHJldmlld1xuICovXG5leHBvcnQgaW50ZXJmYWNlIENyZWF0ZUVmZmVjdE9wdGlvbnMge1xuICAvKipcbiAgICogVGhlIGBJbmplY3RvcmAgaW4gd2hpY2ggdG8gY3JlYXRlIHRoZSBlZmZlY3QuXG4gICAqXG4gICAqIElmIHRoaXMgaXMgbm90IHByb3ZpZGVkLCB0aGUgY3VycmVudCBbaW5qZWN0aW9uIGNvbnRleHRdKGd1aWRlL2RlcGVuZGVuY3ktaW5qZWN0aW9uLWNvbnRleHQpXG4gICAqIHdpbGwgYmUgdXNlZCBpbnN0ZWFkICh2aWEgYGluamVjdGApLlxuICAgKi9cbiAgaW5qZWN0b3I/OiBJbmplY3RvcjtcblxuICAvKipcbiAgICogV2hldGhlciB0aGUgYGVmZmVjdGAgc2hvdWxkIHJlcXVpcmUgbWFudWFsIGNsZWFudXAuXG4gICAqXG4gICAqIElmIHRoaXMgaXMgYGZhbHNlYCAodGhlIGRlZmF1bHQpIHRoZSBlZmZlY3Qgd2lsbCBhdXRvbWF0aWNhbGx5IHJlZ2lzdGVyIGl0c2VsZiB0byBiZSBjbGVhbmVkIHVwXG4gICAqIHdpdGggdGhlIGN1cnJlbnQgYERlc3Ryb3lSZWZgLlxuICAgKi9cbiAgbWFudWFsQ2xlYW51cD86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdGhlIGBlZmZlY3RgIHNob3VsZCBhbGxvdyB3cml0aW5nIHRvIHNpZ25hbHMuXG4gICAqXG4gICAqIFVzaW5nIGVmZmVjdHMgdG8gc3luY2hyb25pemUgZGF0YSBieSB3cml0aW5nIHRvIHNpZ25hbHMgY2FuIGxlYWQgdG8gY29uZnVzaW5nIGFuZCBwb3RlbnRpYWxseVxuICAgKiBpbmNvcnJlY3QgYmVoYXZpb3IsIGFuZCBzaG91bGQgYmUgZW5hYmxlZCBvbmx5IHdoZW4gbmVjZXNzYXJ5LlxuICAgKi9cbiAgYWxsb3dTaWduYWxXcml0ZXM/OiBib29sZWFuO1xufVxuXG4vKipcbiAqIENyZWF0ZSBhIGdsb2JhbCBgRWZmZWN0YCBmb3IgdGhlIGdpdmVuIHJlYWN0aXZlIGZ1bmN0aW9uLlxuICpcbiAqIEBkZXZlbG9wZXJQcmV2aWV3XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBlZmZlY3QoXG4gICAgZWZmZWN0Rm46IChvbkNsZWFudXA6IEVmZmVjdENsZWFudXBSZWdpc3RlckZuKSA9PiB2b2lkLFxuICAgIG9wdGlvbnM/OiBDcmVhdGVFZmZlY3RPcHRpb25zKTogRWZmZWN0UmVmIHtcbiAgIW9wdGlvbnM/LmluamVjdG9yICYmIGFzc2VydEluSW5qZWN0aW9uQ29udGV4dChlZmZlY3QpO1xuICBjb25zdCBpbmplY3RvciA9IG9wdGlvbnM/LmluamVjdG9yID8/IGluamVjdChJbmplY3Rvcik7XG4gIGNvbnN0IGVmZmVjdE1hbmFnZXIgPSBpbmplY3Rvci5nZXQoRWZmZWN0TWFuYWdlcik7XG4gIGNvbnN0IGRlc3Ryb3lSZWYgPSBvcHRpb25zPy5tYW51YWxDbGVhbnVwICE9PSB0cnVlID8gaW5qZWN0b3IuZ2V0KERlc3Ryb3lSZWYpIDogbnVsbDtcbiAgcmV0dXJuIGVmZmVjdE1hbmFnZXIuY3JlYXRlKGVmZmVjdEZuLCBkZXN0cm95UmVmLCAhIW9wdGlvbnM/LmFsbG93U2lnbmFsV3JpdGVzKTtcbn1cbiJdfQ==
|
|
184
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWZmZWN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29yZS9zcmMvcmVuZGVyMy9yZWFjdGl2aXR5L2VmZmVjdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7O0dBTUc7QUFFSCxPQUFPLEVBQUMsd0JBQXdCLEVBQUMsTUFBTSxxQkFBcUIsQ0FBQztBQUM3RCxPQUFPLEVBQUMsY0FBYyxFQUFDLE1BQU0sMEJBQTBCLENBQUM7QUFDeEQsT0FBTyxFQUFDLFFBQVEsRUFBQyxNQUFNLG1CQUFtQixDQUFDO0FBQzNDLE9BQU8sRUFBQyxNQUFNLEVBQUMsTUFBTSxpQ0FBaUMsQ0FBQztBQUN2RCxPQUFPLEVBQUMsa0JBQWtCLEVBQUMsTUFBTSx5QkFBeUIsQ0FBQztBQUMzRCxPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0scUJBQXFCLENBQUM7QUFDakQsT0FBTyxFQUFDLFVBQVUsRUFBQyxNQUFNLDBCQUEwQixDQUFDO0FBQ3BELE9BQU8sRUFBQyxxQkFBcUIsRUFBRSxLQUFLLEVBQWdELE1BQU0sZUFBZSxDQUFDO0FBc0IxRzs7O0dBR0c7QUFDSCxNQUFNLENBQUMsTUFBTSxvQkFBb0IsR0FBRyxJQUFJLGNBQWMsQ0FBQyxFQUFFLEVBQUU7SUFDekQsVUFBVSxFQUFFLE1BQU07SUFDbEIsT0FBTyxFQUFFLEdBQUcsRUFBRSxDQUFDLE1BQU0sQ0FBQyxlQUFlLENBQUM7Q0FDdkMsQ0FBQyxDQUFDO0FBRUg7O0dBRUc7QUFDSCxNQUFNLE9BQWdCLGVBQWU7SUFRbkMsa0JBQWtCO2FBQ1gsVUFBSyxHQUE2QixrQkFBa0IsQ0FBQztRQUMxRCxLQUFLLEVBQUUsZUFBZTtRQUN0QixVQUFVLEVBQUUsTUFBTTtRQUNsQixPQUFPLEVBQUUsR0FBRyxFQUFFLENBQUMsSUFBSSwyQkFBMkIsRUFBRTtLQUNqRCxDQUFDLENBQUM7O0FBYUw7OztHQUdHO0FBQ0gsTUFBTSxPQUFPLDBCQUEw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QUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZVxuICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZVxuICovXG5cbmltcG9ydCB7YXNzZXJ0SW5JbmplY3Rpb25Db250ZXh0fSBmcm9tICcuLi8uLi9kaS9jb250ZXh0dWFsJztcbmltcG9ydCB7SW5qZWN0aW9uVG9rZW59IGZyb20gJy4uLy4uL2RpL2luamVjdGlvbl90b2tlbic7XG5pbXBvcnQge0luamVjdG9yfSBmcm9tICcuLi8uLi9kaS9pbmplY3Rvcic7XG5pbXBvcnQge2luamVjdH0gZnJvbSAnLi4vLi4vZGkvaW5qZWN0b3JfY29tcGF0aWJpbGl0eSc7XG5pbXBvcnQge8m1ybVkZWZpbmVJbmplY3RhYmxlfSBmcm9tICcuLi8uLi9kaS9pbnRlcmZhY2UvZGVmcyc7XG5pbXBvcnQge0Vycm9ySGFuZGxlcn0gZnJvbSAnLi4vLi4vZXJyb3JfaGFuZGxlcic7XG5pbXBvcnQge0Rlc3Ryb3lSZWZ9IGZyb20gJy4uLy4uL2xpbmtlci9kZXN0cm95X3JlZic7XG5pbXBvcnQge2lzSW5Ob3RpZmljYXRpb25QaGFzZSwgd2F0Y2gsIFdhdGNoLCBXYXRjaENsZWFudXBGbiwgV2F0Y2hDbGVhbnVwUmVnaXN0ZXJGbn0gZnJvbSAnLi4vLi4vc2lnbmFscyc7XG5cblxuLyoqXG4gKiBBbiBlZmZlY3QgY2FuLCBvcHRpb25hbGx5LCByZWdpc3RlciBhIGNsZWFudXAgZnVuY3Rpb24uIElmIHJlZ2lzdGVyZWQsIHRoZSBjbGVhbnVwIGlzIGV4ZWN1dGVkXG4gKiBiZWZvcmUgdGhlIG5leHQgZWZmZWN0IHJ1bi4gVGhlIGNsZWFudXAgZnVuY3Rpb24gbWFrZXMgaXQgcG9zc2libGUgdG8gXCJjYW5jZWxcIiBhbnkgd29yayB0aGF0IHRoZVxuICogcHJldmlvdXMgZWZmZWN0IHJ1biBtaWdodCBoYXZlIHN0YXJ0ZWQuXG4gKlxuICogQGRldmVsb3BlclByZXZpZXdcbiAqL1xuZXhwb3J0IHR5cGUgRWZmZWN0Q2xlYW51cEZuID0gKCkgPT4gdm9pZDtcblxuLyoqXG4gKiBBIGNhbGxiYWNrIHBhc3NlZCB0byB0aGUgZWZmZWN0IGZ1bmN0aW9uIHRoYXQgbWFrZXMgaXQgcG9zc2libGUgdG8gcmVnaXN0ZXIgY2xlYW51cCBsb2dpYy5cbiAqL1xuZXhwb3J0IHR5cGUgRWZmZWN0Q2xlYW51cFJlZ2lzdGVyRm4gPSAoY2xlYW51cEZuOiBFZmZlY3RDbGVhbnVwRm4pID0+IHZvaWQ7XG5cbmV4cG9ydCBpbnRlcmZhY2UgU2NoZWR1bGFibGVFZmZlY3Qge1xuICBydW4oKTogdm9pZDtcbiAgY3JlYXRpb25ab25lOiB1bmtub3duO1xufVxuXG4vKipcbiAqIE5vdCBwdWJsaWMgQVBJLCB3aGljaCBndWFyYW50ZWVzIGBFZmZlY3RTY2hlZHVsZXJgIG9ubHkgZXZlciBjb21lcyBmcm9tIHRoZSBhcHBsaWNhdGlvbiByb290XG4gKiBpbmplY3Rvci5cbiAqL1xuZXhwb3J0IGNvbnN0IEFQUF9FRkZFQ1RfU0NIRURVTEVSID0gbmV3IEluamVjdGlvblRva2VuKCcnLCB7XG4gIHByb3ZpZGVkSW46ICdyb290JyxcbiAgZmFjdG9yeTogKCkgPT4gaW5qZWN0KEVmZmVjdFNjaGVkdWxlciksXG59KTtcblxuLyoqXG4gKiBBIHNjaGVkdWxlciB3aGljaCBtYW5hZ2VzIHRoZSBleGVjdXRpb24gb2YgZWZmZWN0cy5cbiAqL1xuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEVmZmVjdFNjaGVkdWxlciB7XG4gIC8qKlxuICAgKiBTY2hlZHVsZSB0aGUgZ2l2ZW4gZWZmZWN0IHRvIGJlIGV4ZWN1dGVkIGF0IGEgbGF0ZXIgdGltZS5cbiAgICpcbiAgICogSXQgaXMgYW4gZXJyb3IgdG8gYXR0ZW1wdCB0byBleGVjdXRlIGFueSBlZmZlY3RzIHN5bmNocm9ub3VzbHkgZHVyaW5nIGEgc2NoZWR1bGluZyBvcGVyYXRpb24uXG4gICAqL1xuICBhYnN0cmFjdCBzY2hlZHVsZUVmZmVjdChlOiBTY2hlZHVsYWJsZUVmZmVjdCk6IHZvaWQ7XG5cbiAgLyoqIEBub2NvbGxhcHNlICovXG4gIHN0YXRpYyDJtXByb3YgPSAvKiogQHB1cmVPckJyZWFrTXlDb2RlICovIMm1ybVkZWZpbmVJbmplY3RhYmxlKHtcbiAgICB0b2tlbjogRWZmZWN0U2NoZWR1bGVyLFxuICAgIHByb3ZpZGVkSW46ICdyb290JyxcbiAgICBmYWN0b3J5OiAoKSA9PiBuZXcgWm9uZUF3YXJlTWljcm90YXNrU2NoZWR1bGVyKCksXG4gIH0pO1xufVxuXG4vKipcbiAqIEludGVyZmFjZSB0byBhbiBgRWZmZWN0U2NoZWR1bGVyYCBjYXBhYmxlIG9mIHJ1bm5pbmcgc2NoZWR1bGVkIGVmZmVjdHMgc3luY2hyb25vdXNseS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBGbHVzaGFibGVFZmZlY3RSdW5uZXIge1xuICAvKipcbiAgICogUnVuIGFueSBzY2hlZHVsZWQgZWZmZWN0cy5cbiAgICovXG4gIGZsdXNoKCk6IHZvaWQ7XG59XG5cbi8qKlxuICogQW4gYEVmZmVjdFNjaGVkdWxlcmAgd2hpY2ggaXMgY2FwYWJsZSBvZiBxdWV1ZWluZyBzY2hlZHVsZWQgZWZmZWN0cyBwZXItem9uZSwgYW5kIGZsdXNoaW5nIHRoZW1cbiAqIGFzIGFuIGV4cGxpY2l0IG9wZXJhdGlvbi5cbiAqL1xuZXhwb3J0IGNsYXNzIFpvbmVBd2FyZVF1ZXVlaW5nU2NoZWR1bGVyIGltcGxlbWVudHMgRWZmZWN0U2NoZWR1bGVyLCBGbHVzaGFibGVFZmZlY3RSdW5uZXIge1xuICBwcml2YXRlIHF1ZXVlZEVmZmVjdENvdW50ID0gMDtcbiAgcHJpdmF0ZSBxdWV1ZXMgPSBuZXcgTWFwPFpvbmV8bnVsbCwgU2V0PFNjaGVkdWxhYmxlRWZmZWN0Pj4oKTtcblxuICBzY2hlZHVsZUVmZmVjdChoYW5kbGU6IFNjaGVkdWxhYmxlRWZmZWN0KTogdm9pZCB7XG4gICAgY29uc3Qgem9uZSA9IGhhbmRsZS5jcmVhdGlvblpvbmUgYXMgWm9uZSB8IG51bGw7XG4gICAgaWYgKCF0aGlzLnF1ZXVlcy5oYXMoem9uZSkpIHtcbiAgICAgIHRoaXMucXVldWVzLnNldCh6b25lLCBuZXcgU2V0KCkpO1xuICAgIH1cblxuICAgIGNvbnN0IHF1ZXVlID0gdGhpcy5xdWV1ZXMuZ2V0KHpvbmUpITtcbiAgICBpZiAocXVldWUuaGFzKGhhbmRsZSkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5xdWV1ZWRFZmZlY3RDb3VudCsrO1xuICAgIHF1ZXVlLmFkZChoYW5kbGUpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJ1biBhbGwgc2NoZWR1bGVkIGVmZmVjdHMuXG4gICAqXG4gICAqIEV4ZWN1dGlvbiBvcmRlciBvZiBlZmZlY3RzIHdpdGhpbiB0aGUgc2FtZSB6b25lIGlzIGd1YXJhbnRlZWQgdG8gYmUgRklGTywgYnV0IHRoZXJlIGlzIG5vXG4gICAqIG9yZGVyaW5nIGd1YXJhbnRlZSBiZXR3ZWVuIGVmZmVjdHMgc2NoZWR1bGVkIGluIGRpZmZlcmVudCB6b25lcy5cbiAgICovXG4gIGZsdXNoKCk6IHZvaWQge1xuICAgIHdoaWxlICh0aGlzLnF1ZXVlZEVmZmVjdENvdW50ID4gMCkge1xuICAgICAgZm9yIChjb25zdCBbem9uZSwgcXVldWVdIG9mIHRoaXMucXVldWVzKSB7XG4gICAgICAgIC8vIGB6b25lYCBoZXJlIG11c3QgYmUgZGVmaW5lZC5cbiAgICAgICAgaWYgKHpvbmUgPT09IG51bGwpIHtcbiAgICAgICAgICB0aGlzLmZsdXNoUXVldWUocXVldWUpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHpvbmUucnVuKCgpID0+IHRoaXMuZmx1c2hRdWV1ZShxdWV1ZSkpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBmbHVzaFF1ZXVlKHF1ZXVlOiBTZXQ8U2NoZWR1bGFibGVFZmZlY3Q+KTogdm9pZCB7XG4gICAgZm9yIChjb25zdCBoYW5kbGUgb2YgcXVldWUpIHtcbiAgICAgIHF1ZXVlLmRlbGV0ZShoYW5kbGUpO1xuICAgICAgdGhpcy5xdWV1ZWRFZmZlY3RDb3VudC0tO1xuXG4gICAgICAvLyBUT0RPOiB3aGF0IGhhcHBlbnMgaWYgdGhpcyB0aHJvd3MgYW4gZXJyb3I/XG4gICAgICBoYW5kbGUucnVuKCk7XG4gICAgfVxuICB9XG5cbiAgLyoqIEBub2NvbGxhcHNlICovXG4gIHN0YXRpYyDJtXByb3YgPSAvKiogQHB1cmVPckJyZWFrTXlDb2RlICovIMm1ybVkZWZpbmVJbmplY3RhYmxlKHtcbiAgICB0b2tlbjogWm9uZUF3YXJlUXVldWVpbmdTY2hlZHVsZXIsXG4gICAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxuICAgIGZhY3Rvcnk6ICgpID0+IG5ldyBab25lQXdhcmVRdWV1ZWluZ1NjaGVkdWxlcigpLFxuICB9KTtcbn1cblxuLyoqXG4gKiBBIHdyYXBwZXIgYXJvdW5kIGBab25lQXdhcmVRdWV1ZWluZ1NjaGVkdWxlcmAgdGhhdCBzY2hlZHVsZXMgZmx1c2hpbmcgdmlhIHRoZSBtaWNyb3Rhc2sgcXVldWVcbiAqIHdoZW4uXG4gKi9cbmV4cG9ydCBjbGFzcyBab25lQXdhcmVNaWNyb3Rhc2tTY2hlZHVsZXIgaW1wbGVtZW50cyBFZmZlY3RTY2hlZHVsZXIge1xuICBwcml2YXRlIGhhc1F1ZXVlZEZsdXNoID0gZmFsc2U7XG4gIHByaXZhdGUgZGVsZWdhdGUgPSBuZXcgWm9uZUF3YXJlUXVldWVpbmdTY2hlZHVsZXIoKTtcbiAgcHJpdmF0ZSBmbHVzaFRhc2sgPSAoKSA9PiB7XG4gICAgLy8gTGVhdmUgYGhhc1F1ZXVlZEZsdXNoYCBhcyBgdHJ1ZWAgc28gd2UgZG9uJ3QgcXVldWUgYW5vdGhlciBtaWNyb3Rhc2sgaWYgbW9yZSBlZmZlY3RzIGFyZVxuICAgIC8vIHNjaGVkdWxlZCBkdXJpbmcgZmx1c2hpbmcuIFRoZSBmbHVzaCBvZiB0aGUgYFpvbmVBd2FyZVF1ZXVlaW5nU2NoZWR1bGVyYCBkZWxlZ2F0ZSBpc1xuICAgIC8vIGd1YXJhbnRlZWQgdG8gZW1wdHkgdGhlIHF1ZXVlLlxuICAgIHRoaXMuZGVsZWdhdGUuZmx1c2goKTtcbiAgICB0aGlzLmhhc1F1ZXVlZEZsdXNoID0gZmFsc2U7XG5cbiAgICAvLyBUaGlzIGlzIGEgdmFyaWFibGUgaW5pdGlhbGl6YXRpb24sIG5vdCBhIG1ldGhvZC5cbiAgICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6c2VtaWNvbG9uXG4gIH07XG5cbiAgc2NoZWR1bGVFZmZlY3QoaGFuZGxlOiBTY2hlZHVsYWJsZUVmZmVjdCk6IHZvaWQge1xuICAgIHRoaXMuZGVsZWdhdGUuc2NoZWR1bGVFZmZlY3QoaGFuZGxlKTtcblxuICAgIGlmICghdGhpcy5oYXNRdWV1ZWRGbHVzaCkge1xuICAgICAgcXVldWVNaWNyb3Rhc2sodGhpcy5mbHVzaFRhc2spO1xuICAgICAgdGhpcy5oYXNRdWV1ZWRGbHVzaCA9IHRydWU7XG4gICAgfVxuICB9XG59XG5cbi8qKlxuICogQ29yZSByZWFjdGl2ZSBub2RlIGZvciBhbiBBbmd1bGFyIGVmZmVjdC5cbiAqXG4gKiBgRWZmZWN0SGFuZGxlYCBjb21iaW5lcyB0aGUgcmVhY3RpdmUgZ3JhcGgncyBgV2F0Y2hgIGJhc2Ugbm9kZSBmb3IgZWZmZWN0cyB3aXRoIHRoZSBmcmFtZXdvcmsnc1xuICogc2NoZWR1bGluZyBhYnN0cmFjdGlvbiAoYEVmZmVjdFNjaGVkdWxlcmApIGFzIHdlbGwgYXMgYXV0b21hdGljIGNsZWFudXAgdmlhIGBEZXN0cm95UmVmYCBpZlxuICogYXZhaWxhYmxlL3JlcXVlc3RlZC5cbiAqL1xuY2xhc3MgRWZmZWN0SGFuZGxlIGltcGxlbWVudHMgRWZmZWN0UmVmLCBTY2hlZHVsYWJsZUVmZmVjdCB7XG4gIHByaXZhdGUgYWxpdmUgPSB0cnVlO1xuICB1bnJlZ2lzdGVyT25EZXN0cm95OiAoKCkgPT4gdm9pZCl8dW5kZWZpbmVkO1xuICBwcm90ZWN0ZWQgd2F0Y2hlcjogV2F0Y2g7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgICBwcml2YXRlIHNjaGVkdWxlcjogRWZmZWN0U2NoZWR1bGVyLFxuICAgICAgcHJpdmF0ZSBlZmZlY3RGbjogKG9uQ2xlYW51cDogRWZmZWN0Q2xlYW51cFJlZ2lzdGVyRm4pID0+IHZvaWQsXG4gICAgICBwdWJsaWMgY3JlYXRpb25ab25lOiBab25lfG51bGwsIGRlc3Ryb3lSZWY6IERlc3Ryb3lSZWZ8bnVsbCxcbiAgICAgIHByaXZhdGUgZXJyb3JIYW5kbGVyOiBFcnJvckhhbmRsZXJ8bnVsbCwgYWxsb3dTaWduYWxXcml0ZXM6IGJvb2xlYW4pIHtcbiAgICB0aGlzLndhdGNoZXIgPVxuICAgICAgICB3YXRjaCgob25DbGVhbnVwKSA9PiB0aGlzLnJ1bkVmZmVjdChvbkNsZWFudXApLCAoKSA9PiB0aGlzLnNjaGVkdWxlKCksIGFsbG93U2lnbmFsV3JpdGVzKTtcbiAgICB0aGlzLnVucmVnaXN0ZXJPbkRlc3Ryb3kgPSBkZXN0cm95UmVmPy5vbkRlc3Ryb3koKCkgPT4gdGhpcy5kZXN0cm95KCkpO1xuICB9XG5cbiAgcHJpdmF0ZSBydW5FZmZlY3Qob25DbGVhbnVwOiBXYXRjaENsZWFudXBSZWdpc3RlckZuKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLmFsaXZlKSB7XG4gICAgICAvLyBSdW5uaW5nIGEgZGVzdHJveWVkIGVmZmVjdCBpcyBhIG5vLW9wLlxuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAobmdEZXZNb2RlICYmIGlzSW5Ob3RpZmljYXRpb25QaGFzZSgpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYFNjaGVkdWxlcnMgY2Fubm90IHN5bmNocm9ub3VzbHkgZXhlY3V0ZSBlZmZlY3RzIHdoaWxlIHNjaGVkdWxpbmcuYCk7XG4gICAgfVxuXG4gICAgdHJ5IHtcbiAgICAgIHRoaXMuZWZmZWN0Rm4ob25DbGVhbnVwKTtcbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIHRoaXMuZXJyb3JIYW5kbGVyPy5oYW5kbGVFcnJvcihlcnIpO1xuICAgIH1cbiAgfVxuXG4gIHJ1bigpOiB2b2lkIHtcbiAgICB0aGlzLndhdGNoZXIucnVuKCk7XG4gIH1cblxuICBwcml2YXRlIHNjaGVkdWxlKCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5hbGl2ZSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuc2NoZWR1bGVyLnNjaGVkdWxlRWZmZWN0KHRoaXMpO1xuICB9XG5cbiAgbm90aWZ5KCk6IHZvaWQge1xuICAgIHRoaXMud2F0Y2hlci5ub3RpZnkoKTtcbiAgfVxuXG4gIGRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5hbGl2ZSA9IGZhbHNlO1xuXG4gICAgdGhpcy53YXRjaGVyLmNsZWFudXAoKTtcbiAgICB0aGlzLnVucmVnaXN0ZXJPbkRlc3Ryb3k/LigpO1xuXG4gICAgLy8gTm90ZTogaWYgdGhlIGVmZmVjdCBpcyBjdXJyZW50bHkgc2NoZWR1bGVkLCBpdCdzIG5vdCB1bi1zY2hlZHVsZWQsIGFuZCBzbyB0aGUgc2NoZWR1bGVyIHdpbGxcbiAgICAvLyByZXRhaW4gYSByZWZlcmVuY2UgdG8gaXQuIEF0dGVtcHRpbmcgdG8gZXhlY3V0ZSBpdCB3aWxsIGJlIGEgbm8tb3AuXG4gIH1cbn1cblxuLyoqXG4gKiBBIGdsb2JhbCByZWFjdGl2ZSBlZmZlY3QsIHdoaWNoIGNhbiBiZSBtYW51YWxseSBkZXN0cm95ZWQuXG4gKlxuICogQGRldmVsb3BlclByZXZpZXdcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBFZmZlY3RSZWYge1xuICAvKipcbiAgICogU2h1dCBkb3duIHRoZSBlZmZlY3QsIHJlbW92aW5nIGl0IGZyb20gYW55IHVwY29taW5nIHNjaGVkdWxlZCBleGVjdXRpb25zLlxuICAgKi9cbiAgZGVzdHJveSgpOiB2b2lkO1xufVxuXG4vKipcbiAqIE9wdGlvbnMgcGFzc2VkIHRvIHRoZSBgZWZmZWN0YCBmdW5jdGlvbi5cbiAqXG4gKiBAZGV2ZWxvcGVyUHJldmlld1xuICovXG5leHBvcnQgaW50ZXJmYWNlIENyZWF0ZUVmZmVjdE9wdGlvbnMge1xuICAvKipcbiAgICogVGhlIGBJbmplY3RvcmAgaW4gd2hpY2ggdG8gY3JlYXRlIHRoZSBlZmZlY3QuXG4gICAqXG4gICAqIElmIHRoaXMgaXMgbm90IHByb3ZpZGVkLCB0aGUgY3VycmVudCBbaW5qZWN0aW9uIGNvbnRleHRdKGd1aWRlL2RlcGVuZGVuY3ktaW5qZWN0aW9uLWNvbnRleHQpXG4gICAqIHdpbGwgYmUgdXNlZCBpbnN0ZWFkICh2aWEgYGluamVjdGApLlxuICAgKi9cbiAgaW5qZWN0b3I/OiBJbmplY3RvcjtcblxuICAvKipcbiAgICogV2hldGhlciB0aGUgYGVmZmVjdGAgc2hvdWxkIHJlcXVpcmUgbWFudWFsIGNsZWFudXAuXG4gICAqXG4gICAqIElmIHRoaXMgaXMgYGZhbHNlYCAodGhlIGRlZmF1bHQpIHRoZSBlZmZlY3Qgd2lsbCBhdXRvbWF0aWNhbGx5IHJlZ2lzdGVyIGl0c2VsZiB0byBiZSBjbGVhbmVkIHVwXG4gICAqIHdpdGggdGhlIGN1cnJlbnQgYERlc3Ryb3lSZWZgLlxuICAgKi9cbiAgbWFudWFsQ2xlYW51cD86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdGhlIGBlZmZlY3RgIHNob3VsZCBhbGxvdyB3cml0aW5nIHRvIHNpZ25hbHMuXG4gICAqXG4gICAqIFVzaW5nIGVmZmVjdHMgdG8gc3luY2hyb25pemUgZGF0YSBieSB3cml0aW5nIHRvIHNpZ25hbHMgY2FuIGxlYWQgdG8gY29uZnVzaW5nIGFuZCBwb3RlbnRpYWxseVxuICAgKiBpbmNvcnJlY3QgYmVoYXZpb3IsIGFuZCBzaG91bGQgYmUgZW5hYmxlZCBvbmx5IHdoZW4gbmVjZXNzYXJ5LlxuICAgKi9cbiAgYWxsb3dTaWduYWxXcml0ZXM/OiBib29sZWFuO1xufVxuXG4vKipcbiAqIENyZWF0ZSBhIGdsb2JhbCBgRWZmZWN0YCBmb3IgdGhlIGdpdmVuIHJlYWN0aXZlIGZ1bmN0aW9uLlxuICpcbiAqIEBkZXZlbG9wZXJQcmV2aWV3XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBlZmZlY3QoXG4gICAgZWZmZWN0Rm46IChvbkNsZWFudXA6IEVmZmVjdENsZWFudXBSZWdpc3RlckZuKSA9PiB2b2lkLFxuICAgIG9wdGlvbnM/OiBDcmVhdGVFZmZlY3RPcHRpb25zKTogRWZmZWN0UmVmIHtcbiAgIW9wdGlvbnM/LmluamVjdG9yICYmIGFzc2VydEluSW5qZWN0aW9uQ29udGV4dChlZmZlY3QpO1xuICBjb25zdCBpbmplY3RvciA9IG9wdGlvbnM/LmluamVjdG9yID8/IGluamVjdChJbmplY3Rvcik7XG4gIGNvbnN0IGVycm9ySGFuZGxlciA9IGluamVjdG9yLmdldChFcnJvckhhbmRsZXIsIG51bGwsIHtvcHRpb25hbDogdHJ1ZX0pO1xuICBjb25zdCBkZXN0cm95UmVmID0gb3B0aW9ucz8ubWFudWFsQ2xlYW51cCAhPT0gdHJ1ZSA/IGluamVjdG9yLmdldChEZXN0cm95UmVmKSA6IG51bGw7XG5cbiAgY29uc3QgaGFuZGxlID0gbmV3IEVmZmVjdEhhbmRsZShcbiAgICAgIGluamVjdG9yLmdldChBUFBfRUZGRUNUX1NDSEVEVUxFUiksIGVmZmVjdEZuLFxuICAgICAgKHR5cGVvZiBab25lID09PSAndW5kZWZpbmVkJykgPyBudWxsIDogWm9uZS5jdXJyZW50LCBkZXN0cm95UmVmLCBlcnJvckhhbmRsZXIsXG4gICAgICBvcHRpb25zPy5hbGxvd1NpZ25hbFdyaXRlcyA/PyBmYWxzZSk7XG5cbiAgLy8gRWZmZWN0cyBzdGFydCBkaXJ0eS5cbiAgaGFuZGxlLm5vdGlmeSgpO1xuXG4gIHJldHVybiBoYW5kbGU7XG59XG4iXX0=
|
|
@@ -45,4 +45,4 @@ export function getParentInjectorView(location, startView) {
|
|
|
45
45
|
}
|
|
46
46
|
return parentView;
|
|
47
47
|
}
|
|
48
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
48
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5qZWN0b3JfdXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb3JlL3NyYy9yZW5kZXIzL3V0aWwvaW5qZWN0b3JfdXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7OztHQU1HO0FBRUgsT0FBTyxFQUFDLGlCQUFpQixFQUFFLGNBQWMsRUFBRSxZQUFZLEVBQUMsTUFBTSxtQkFBbUIsQ0FBQztBQUNsRixPQUFPLEVBQUMsa0JBQWtCLEVBQTBELE1BQU0sd0JBQXdCLENBQUM7QUFDbkgsT0FBTyxFQUFDLGdCQUFnQixFQUFFLGFBQWEsRUFBUSxNQUFNLG9CQUFvQixDQUFDO0FBRzFFLHlGQUF5RjtBQUN6RixNQUFNLFVBQVUsaUJBQWlCLENBQUMsY0FBd0M7SUFDeEUsT0FBTyxjQUFjLEtBQUssa0JBQWtCLENBQUM7QUFDL0MsQ0FBQztBQUVELE1BQU0sVUFBVSxzQkFBc0IsQ0FBQyxjQUF3QztJQUM3RSxTQUFTLElBQUksWUFBWSxDQUFDLGNBQWMsRUFBRSxpQkFBaUIsQ0FBQyxDQUFDO0lBQzdELFNBQVMsSUFBSSxjQUFjLENBQUMsY0FBcUIsRUFBRSxDQUFDLENBQUMsRUFBRSxvQkFBb0IsQ0FBQyxDQUFDO0lBQzdFLE1BQU0sbUJBQW1CLEdBQUcsY0FBYyw4REFBa0QsQ0FBQztJQUM3RixTQUFTO1FBQ0wsaUJBQWlCLENBQ2IsbUJBQW1CLEVBQUUsYUFBYSxFQUNsQyxzREFBc0QsQ0FBQyxDQUFDO0lBQ2hFLE9BQU8sY0FBYyw4REFBa0QsQ0FBQztBQUMxRSxDQUFDO0FBRUQsTUFBTSxVQUFVLDJCQUEyQixDQUFDLGNBQXdDO0lBQ2xGLE9BQU8sY0FBYywwREFBaUQsQ0FBQztBQUN6RSxDQUFDO0FBRUQ7Ozs7Ozs7O0dBUUc7QUFDSCxNQUFNLFVBQVUscUJBQXFCLENBQUMsUUFBa0MsRUFBRSxTQUFnQjtJQUN4RixJQUFJLFVBQVUsR0FBRywyQkFBMkIsQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUN2RCxJQUFJLFVBQVUsR0FBRyxTQUFTLENBQUM7SUFDM0Isd0ZBQXdGO0lBQ3hGLDJGQUEyRjtJQUMzRixzRkFBc0Y7SUFDdEYsNEJBQTRCO0lBQzVCLE9BQU8sVUFBVSxHQUFHLENBQUMsRUFBRTtRQUNyQixVQUFVLEdBQUcsVUFBVSxDQUFDLGdCQUFnQixDQUFFLENBQUM7UUFDM0MsVUFBVSxFQUFFLENBQUM7S0FDZDtJQUNELE9BQU8sVUFBVSxDQUFDO0FBQ3BCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlXG4gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlXG4gKi9cblxuaW1wb3J0IHthc3NlcnRHcmVhdGVyVGhhbiwgYXNzZXJ0Tm90RXF1YWwsIGFzc2VydE51bWJlcn0gZnJvbSAnLi4vLi4vdXRpbC9hc3NlcnQnO1xuaW1wb3J0IHtOT19QQVJFTlRfSU5KRUNUT1IsIFJlbGF0aXZlSW5qZWN0b3JMb2NhdGlvbiwgUmVsYXRpdmVJbmplY3RvckxvY2F0aW9uRmxhZ3N9IGZyb20gJy4uL2ludGVyZmFjZXMvaW5qZWN0b3InO1xuaW1wb3J0IHtERUNMQVJBVElPTl9WSUVXLCBIRUFERVJfT0ZGU0VULCBMVmlld30gZnJvbSAnLi4vaW50ZXJmYWNlcy92aWV3JztcblxuXG4vLy8gUGFyZW50IEluamVjdG9yIFV0aWxzIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuZXhwb3J0IGZ1bmN0aW9uIGhhc1BhcmVudEluamVjdG9yKHBhcmVudExvY2F0aW9uOiBSZWxhdGl2ZUluamVjdG9yTG9jYXRpb24pOiBib29sZWFuIHtcbiAgcmV0dXJuIHBhcmVudExvY2F0aW9uICE9PSBOT19QQVJFTlRfSU5KRUNUT1I7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRQYXJlbnRJbmplY3RvckluZGV4KHBhcmVudExvY2F0aW9uOiBSZWxhdGl2ZUluamVjdG9yTG9jYXRpb24pOiBudW1iZXIge1xuICBuZ0Rldk1vZGUgJiYgYXNzZXJ0TnVtYmVyKHBhcmVudExvY2F0aW9uLCAnTnVtYmVyIGV4cGVjdGVkJyk7XG4gIG5nRGV2TW9kZSAmJiBhc3NlcnROb3RFcXVhbChwYXJlbnRMb2NhdGlvbiBhcyBhbnksIC0xLCAnTm90IGEgdmFsaWQgc3RhdGUuJyk7XG4gIGNvbnN0IHBhcmVudEluamVjdG9ySW5kZXggPSBwYXJlbnRMb2NhdGlvbiAmIFJlbGF0aXZlSW5qZWN0b3JMb2NhdGlvbkZsYWdzLkluamVjdG9ySW5kZXhNYXNrO1xuICBuZ0Rldk1vZGUgJiZcbiAgICAgIGFzc2VydEdyZWF0ZXJUaGFuKFxuICAgICAgICAgIHBhcmVudEluamVjdG9ySW5kZXgsIEhFQURFUl9PRkZTRVQsXG4gICAgICAgICAgJ1BhcmVudCBpbmplY3RvciBtdXN0IGJlIHBvaW50aW5nIHBhc3QgSEVBREVSX09GRlNFVC4nKTtcbiAgcmV0dXJuIHBhcmVudExvY2F0aW9uICYgUmVsYXRpdmVJbmplY3RvckxvY2F0aW9uRmxhZ3MuSW5qZWN0b3JJbmRleE1hc2s7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRQYXJlbnRJbmplY3RvclZpZXdPZmZzZXQocGFyZW50TG9jYXRpb246IFJlbGF0aXZlSW5qZWN0b3JMb2NhdGlvbik6IG51bWJlciB7XG4gIHJldHVybiBwYXJlbnRMb2NhdGlvbiA+PiBSZWxhdGl2ZUluamVjdG9yTG9jYXRpb25GbGFncy5WaWV3T2Zmc2V0U2hpZnQ7XG59XG5cbi8qKlxuICogVW53cmFwcyBhIHBhcmVudCBpbmplY3RvciBsb2NhdGlvbiBudW1iZXIgdG8gZmluZCB0aGUgdmlldyBvZmZzZXQgZnJvbSB0aGUgY3VycmVudCBpbmplY3RvcixcbiAqIHRoZW4gd2Fsa3MgdXAgdGhlIGRlY2xhcmF0aW9uIHZpZXcgdHJlZSB1bnRpbCB0aGUgdmlldyBpcyBmb3VuZCB0aGF0IGNvbnRhaW5zIHRoZSBwYXJlbnRcbiAqIGluamVjdG9yLlxuICpcbiAqIEBwYXJhbSBsb2NhdGlvbiBUaGUgbG9jYXRpb24gb2YgdGhlIHBhcmVudCBpbmplY3Rvciwgd2hpY2ggY29udGFpbnMgdGhlIHZpZXcgb2Zmc2V0XG4gKiBAcGFyYW0gc3RhcnRWaWV3IFRoZSBMVmlldyBpbnN0YW5jZSBmcm9tIHdoaWNoIHRvIHN0YXJ0IHdhbGtpbmcgdXAgdGhlIHZpZXcgdHJlZVxuICogQHJldHVybnMgVGhlIExWaWV3IGluc3RhbmNlIHRoYXQgY29udGFpbnMgdGhlIHBhcmVudCBpbmplY3RvclxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0UGFyZW50SW5qZWN0b3JWaWV3KGxvY2F0aW9uOiBSZWxhdGl2ZUluamVjdG9yTG9jYXRpb24sIHN0YXJ0VmlldzogTFZpZXcpOiBMVmlldyB7XG4gIGxldCB2aWV3T2Zmc2V0ID0gZ2V0UGFyZW50SW5qZWN0b3JWaWV3T2Zmc2V0KGxvY2F0aW9uKTtcbiAgbGV0IHBhcmVudFZpZXcgPSBzdGFydFZpZXc7XG4gIC8vIEZvciBtb3N0IGNhc2VzLCB0aGUgcGFyZW50IGluamVjdG9yIGNhbiBiZSBmb3VuZCBvbiB0aGUgaG9zdCBub2RlIChlLmcuIGZvciBjb21wb25lbnRcbiAgLy8gb3IgY29udGFpbmVyKSwgYnV0IHdlIG11c3Qga2VlcCB0aGUgbG9vcCBoZXJlIHRvIHN1cHBvcnQgdGhlIHJhcmVyIGNhc2Ugb2YgZGVlcGx5IG5lc3RlZFxuICAvLyA8bmctdGVtcGxhdGU+IHRhZ3Mgb3IgaW5saW5lIHZpZXdzLCB3aGVyZSB0aGUgcGFyZW50IGluamVjdG9yIG1pZ2h0IGxpdmUgbWFueSB2aWV3c1xuICAvLyBhYm92ZSB0aGUgY2hpbGQgaW5qZWN0b3IuXG4gIHdoaWxlICh2aWV3T2Zmc2V0ID4gMCkge1xuICAgIHBhcmVudFZpZXcgPSBwYXJlbnRWaWV3W0RFQ0xBUkFUSU9OX1ZJRVddITtcbiAgICB2aWV3T2Zmc2V0LS07XG4gIH1cbiAgcmV0dXJuIHBhcmVudFZpZXc7XG59XG4iXX0=
|
|
@@ -5,6 +5,7 @@
|
|
|
5
5
|
* Use of this source code is governed by an MIT-style license that can be
|
|
6
6
|
* found in the LICENSE file at https://angular.io/license
|
|
7
7
|
*/
|
|
8
|
+
import { hasInSkipHydrationBlockFlag } from '../hydration/skip_hydration';
|
|
8
9
|
import { assertDefined } from '../util/assert';
|
|
9
10
|
import { assertLContainer, assertLView, assertTNodeForLView } from './assert';
|
|
10
11
|
import { renderView } from './instructions/render';
|
|
@@ -19,7 +20,7 @@ export function createAndRenderEmbeddedLView(declarationLView, templateTNode, co
|
|
|
19
20
|
// Embedded views follow the change detection strategy of the view they're declared in.
|
|
20
21
|
const isSignalView = declarationLView[FLAGS] & 4096 /* LViewFlags.SignalView */;
|
|
21
22
|
const viewFlags = isSignalView ? 4096 /* LViewFlags.SignalView */ : 16 /* LViewFlags.CheckAlways */;
|
|
22
|
-
const embeddedLView = createLView(declarationLView, embeddedTView, context, viewFlags, null, templateTNode, null, null, null, options?.injector ?? null, options?.
|
|
23
|
+
const embeddedLView = createLView(declarationLView, embeddedTView, context, viewFlags, null, templateTNode, null, null, null, options?.injector ?? null, options?.dehydratedView ?? null);
|
|
23
24
|
const declarationLContainer = declarationLView[templateTNode.index];
|
|
24
25
|
ngDevMode && assertLContainer(declarationLContainer);
|
|
25
26
|
embeddedLView[DECLARATION_LCONTAINER] = declarationLContainer;
|
|
@@ -41,6 +42,16 @@ export function getLViewFromLContainer(lContainer, index) {
|
|
|
41
42
|
}
|
|
42
43
|
return undefined;
|
|
43
44
|
}
|
|
45
|
+
/**
|
|
46
|
+
* Returns whether an elements that belong to a view should be
|
|
47
|
+
* inserted into the DOM. For client-only cases, DOM elements are
|
|
48
|
+
* always inserted. For hydration cases, we check whether serialized
|
|
49
|
+
* info is available for a view and the view is not in a "skip hydration"
|
|
50
|
+
* block (in which case view contents was re-created, thus needing insertion).
|
|
51
|
+
*/
|
|
52
|
+
export function shouldAddViewToDom(tNode, dehydratedView) {
|
|
53
|
+
return !dehydratedView || hasInSkipHydrationBlockFlag(tNode);
|
|
54
|
+
}
|
|
44
55
|
export function addLViewToLContainer(lContainer, lView, index, addToDOM = true) {
|
|
45
56
|
const tView = lView[TVIEW];
|
|
46
57
|
// insert to the view tree so the new view can be change-detected
|
|
@@ -62,4 +73,4 @@ export function removeLViewFromLContainer(lContainer, index) {
|
|
|
62
73
|
}
|
|
63
74
|
return lView;
|
|
64
75
|
}
|
|
65
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
76
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmlld19tYW5pcHVsYXRpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb3JlL3NyYy9yZW5kZXIzL3ZpZXdfbWFuaXB1bGF0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7R0FNRztBQUlILE9BQU8sRUFBQywyQkFBMkIsRUFBQyxNQUFNLDZCQUE2QixDQUFDO0FBQ3hFLE9BQU8sRUFBQyxhQUFhLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUU3QyxPQUFPLEVBQUMsZ0JBQWdCLEVBQUUsV0FBVyxFQUFFLG1CQUFtQixFQUFDLE1BQU0sVUFBVSxDQUFDO0FBQzVFLE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSx1QkFBdUIsQ0FBQztBQUNqRCxPQUFPLEVBQUMsV0FBVyxFQUFDLE1BQU0sdUJBQXVCLENBQUM7QUFDbEQsT0FBTyxFQUFDLHVCQUF1QixFQUFjLE1BQU0sRUFBQyxNQUFNLHdCQUF3QixDQUFDO0FBR25GLE9BQU8sRUFBQyxzQkFBc0IsRUFBRSxLQUFLLEVBQXFCLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBQyxNQUFNLG1CQUFtQixDQUFDO0FBQ3JILE9BQU8sRUFBQyxZQUFZLEVBQUUsWUFBWSxFQUFFLFVBQVUsRUFBRSxvQkFBb0IsRUFBRSxVQUFVLEVBQUUsZ0JBQWdCLEVBQUMsTUFBTSxxQkFBcUIsQ0FBQztBQUUvSCxNQUFNLFVBQVUsNEJBQTRCLENBQ3hDLGdCQUFnQyxFQUFFLGFBQW9CLEVBQUUsT0FBVSxFQUNsRSxPQUE4RTtJQUNoRixNQUFNLGFBQWEsR0FBRyxhQUFhLENBQUMsS0FBTSxDQUFDO0lBQzNDLFNBQVMsSUFBSSxhQUFhLENBQUMsYUFBYSxFQUFFLDRDQUE0QyxDQUFDLENBQUM7SUFDeEYsU0FBUyxJQUFJLG1CQUFtQixDQUFDLGFBQWEsRUFBRSxnQkFBZ0IsQ0FBQyxDQUFDO0lBRWxFLHVGQUF1RjtJQUN2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Q3ZCLFlBQVksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUM7S0FDbkM7SUFDRCxPQUFPLEtBQUssQ0FBQztBQUNmLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlXG4gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlXG4gKi9cblxuaW1wb3J0IHtJbmplY3Rvcn0gZnJvbSAnLi4vZGkvaW5qZWN0b3InO1xuaW1wb3J0IHtEZWh5ZHJhdGVkQ29udGFpbmVyVmlld30gZnJvbSAnLi4vaHlkcmF0aW9uL2ludGVyZmFjZXMnO1xuaW1wb3J0IHtoYXNJblNraXBIeWRyYXRpb25CbG9ja0ZsYWd9IGZyb20gJy4uL2h5ZHJhdGlvbi9za2lwX2h5ZHJhdGlvbic7XG5pbXBvcnQge2Fzc2VydERlZmluZWR9IGZyb20gJy4uL3V0aWwvYXNzZXJ0JztcblxuaW1wb3J0IHthc3NlcnRMQ29udGFpbmVyLCBhc3NlcnRMVmlldywgYXNzZXJ0VE5vZGVGb3JMVmlld30gZnJvbSAnLi9hc3NlcnQnO1xuaW1wb3J0IHtyZW5kZXJWaWV3fSBmcm9tICcuL2luc3RydWN0aW9ucy9yZW5kZXInO1xuaW1wb3J0IHtjcmVhdGVMVmlld30gZnJvbSAnLi9pbnN0cnVjdGlvbnMvc2hhcmVkJztcbmltcG9ydCB7Q09OVEFJTkVSX0hFQURFUl9PRkZTRVQsIExDb250YWluZXIsIE5BVElWRX0gZnJvbSAnLi9pbnRlcmZhY2VzL2NvbnRhaW5lcic7XG5pbXBvcnQge1ROb2RlfSBmcm9tICcuL2ludGVyZmFjZXMvbm9kZSc7XG5pbXBvcnQge1JDb21tZW50LCBSRWxlbWVudH0gZnJvbSAnLi9pbnRlcmZhY2VzL3JlbmRlcmVyX2RvbSc7XG5pbXBvcnQge0RFQ0xBUkFUSU9OX0xDT05UQUlORVIsIEZMQUdTLCBMVmlldywgTFZpZXdGbGFncywgUVVFUklFUywgUkVOREVSRVIsIFRfSE9TVCwgVFZJRVd9IGZyb20gJy4vaW50ZXJmYWNlcy92aWV3JztcbmltcG9ydCB7YWRkVmlld1RvRE9NLCBkZXN0cm95TFZpZXcsIGRldGFjaFZpZXcsIGdldEJlZm9yZU5vZGVGb3JWaWV3LCBpbnNlcnRWaWV3LCBuYXRpdmVQYXJlbnROb2RlfSBmcm9tICcuL25vZGVfbWFuaXB1bGF0aW9uJztcblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUFuZFJlbmRlckVtYmVkZGVkTFZpZXc8VD4oXG4gICAgZGVjbGFyYXRpb25MVmlldzogTFZpZXc8dW5rbm93bj4sIHRlbXBsYXRlVE5vZGU6IFROb2RlLCBjb250ZXh0OiBULFxuICAgIG9wdGlvbnM/OiB7aW5qZWN0b3I/OiBJbmplY3RvciwgZGVoeWRyYXRlZFZpZXc/OiBEZWh5ZHJhdGVkQ29udGFpbmVyVmlld3xudWxsfSk6IExWaWV3PFQ+IHtcbiAgY29uc3QgZW1iZWRkZWRUVmlldyA9IHRlbXBsYXRlVE5vZGUudFZpZXchO1xuICBuZ0Rldk1vZGUgJiYgYXNzZXJ0RGVmaW5lZChlbWJlZGRlZFRWaWV3LCAnVFZpZXcgbXVzdCBiZSBkZWZpbmVkIGZvciBhIHRlbXBsYXRlIG5vZGUuJyk7XG4gIG5nRGV2TW9kZSAmJiBhc3NlcnRUTm9kZUZvckxWaWV3KHRlbXBsYXRlVE5vZGUsIGRlY2xhcmF0aW9uTFZpZXcpO1xuXG4gIC8vIEVtYmVkZGVkIHZpZXdzIGZvbGxvdyB0aGUgY2hhbmdlIGRldGVjdGlvbiBzdHJhdGVneSBvZiB0aGUgdmlldyB0aGV5J3JlIGRlY2xhcmVkIGluLlxuICBjb25zdCBpc1NpZ25hbFZpZXcgPSBkZWNsYXJhdGlvbkxWaWV3W0ZMQUdTXSAmIExWaWV3RmxhZ3MuU2lnbmFsVmlldztcbiAgY29uc3Qgdmlld0ZsYWdzID0gaXNTaWduYWxWaWV3ID8gTFZpZXdGbGFncy5TaWduYWxWaWV3IDogTFZpZXdGbGFncy5DaGVja0Fsd2F5cztcbiAgY29uc3QgZW1iZWRkZWRMVmlldyA9IGNyZWF0ZUxWaWV3PFQ+KFxuICAgICAgZGVjbGFyYXRpb25MVmlldywgZW1iZWRkZWRUVmlldywgY29udGV4dCwgdmlld0ZsYWdzLCBudWxsLCB0ZW1wbGF0ZVROb2RlLCBudWxsLCBudWxsLCBudWxsLFxuICAgICAgb3B0aW9ucz8uaW5qZWN0b3IgPz8gbnVsbCwgb3B0aW9ucz8uZGVoeWRyYXRlZFZpZXcgPz8gbnVsbCk7XG5cbiAgY29uc3QgZGVjbGFyYXRpb25MQ29udGFpbmVyID0gZGVjbGFyYXRpb25MVmlld1t0ZW1wbGF0ZVROb2RlLmluZGV4XTtcbiAgbmdEZXZNb2RlICYmIGFzc2VydExDb250YWluZXIoZGVjbGFyYXRpb25MQ29udGFpbmVyKTtcbiAgZW1iZWRkZWRMVmlld1tERUNMQVJBVElPTl9MQ09OVEFJTkVSXSA9IGRlY2xhcmF0aW9uTENvbnRhaW5lcjtcblxuICBjb25zdCBkZWNsYXJhdGlvblZpZXdMUXVlcmllcyA9IGRlY2xhcmF0aW9uTFZpZXdbUVVFUklFU107XG4gIGlmIChkZWNsYXJhdGlvblZpZXdMUXVlcmllcyAhPT0gbnVsbCkge1xuICAgIGVtYmVkZGVkTFZpZXdbUVVFUklFU10gPSBkZWNsYXJhdGlvblZpZXdMUXVlcmllcy5jcmVhdGVFbWJlZGRlZFZpZXcoZW1iZWRkZWRUVmlldyk7XG4gIH1cblxuICAvLyBleGVjdXRlIGNyZWF0aW9uIG1vZGUgb2YgYSB2aWV3XG4gIHJlbmRlclZpZXcoZW1iZWRkZWRUVmlldywgZW1iZWRkZWRMVmlldywgY29udGV4dCk7XG5cbiAgcmV0dXJuIGVtYmVkZGVkTFZpZXc7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRMVmlld0Zyb21MQ29udGFpbmVyPFQ+KGxDb250YWluZXI6IExDb250YWluZXIsIGluZGV4OiBudW1iZXIpOiBMVmlldzxUPnxcbiAgICB1bmRlZmluZWQge1xuICBjb25zdCBhZGp1c3RlZEluZGV4ID0gQ09OVEFJTkVSX0hFQURFUl9PRkZTRVQgKyBpbmRleDtcbiAgLy8gYXZvaWQgcmVhZGluZyBwYXN0IHRoZSBhcnJheSBib3VuZGFyaWVzXG4gIGlmIChhZGp1c3RlZEluZGV4IDwgbENvbnRhaW5lci5sZW5ndGgpIHtcbiAgICBjb25zdCBsVmlldyA9IGxDb250YWluZXJbYWRqdXN0ZWRJbmRleF07XG4gICAgbmdEZXZNb2RlICYmIGFzc2VydExWaWV3KGxWaWV3KTtcbiAgICByZXR1cm4gbFZpZXcgYXMgTFZpZXc8VD47XG4gIH1cbiAgcmV0dXJuIHVuZGVmaW5lZDtcbn1cblxuLyoqXG4gKiBSZXR1cm5zIHdoZXRoZXIgYW4gZWxlbWVudHMgdGhhdCBiZWxvbmcgdG8gYSB2aWV3IHNob3VsZCBiZVxuICogaW5zZXJ0ZWQgaW50byB0aGUgRE9NLiBGb3IgY2xpZW50LW9ubHkgY2FzZXMsIERPTSBlbGVtZW50cyBhcmVcbiAqIGFsd2F5cyBpbnNlcnRlZC4gRm9yIGh5ZHJhdGlvbiBjYXNlcywgd2UgY2hlY2sgd2hldGhlciBzZXJpYWxpemVkXG4gKiBpbmZvIGlzIGF2YWlsYWJsZSBmb3IgYSB2aWV3IGFuZCB0aGUgdmlldyBpcyBub3QgaW4gYSBcInNraXAgaHlkcmF0aW9uXCJcbiAqIGJsb2NrIChpbiB3aGljaCBjYXNlIHZpZXcgY29udGVudHMgd2FzIHJlLWNyZWF0ZWQsIHRodXMgbmVlZGluZyBpbnNlcnRpb24pLlxuICovXG5leHBvcnQgZnVuY3Rpb24gc2hvdWxkQWRkVmlld1RvRG9tKFxuICAgIHROb2RlOiBUTm9kZSwgZGVoeWRyYXRlZFZpZXc/OiBEZWh5ZHJhdGVkQ29udGFpbmVyVmlld3xudWxsKTogYm9vbGVhbiB7XG4gIHJldHVybiAhZGVoeWRyYXRlZFZpZXcgfHwgaGFzSW5Ta2lwSHlkcmF0aW9uQmxvY2tGbGFnKHROb2RlKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGFkZExWaWV3VG9MQ29udGFpbmVyKFxuICAgIGxDb250YWluZXI6IExDb250YWluZXIsIGxWaWV3OiBMVmlldzx1bmtub3duPiwgaW5kZXg6IG51bWJlciwgYWRkVG9ET00gPSB0cnVlKTogdm9pZCB7XG4gIGNvbnN0IHRWaWV3ID0gbFZpZXdbVFZJRVddO1xuXG4gIC8vIGluc2VydCB0byB0aGUgdmlldyB0cmVlIHNvIHRoZSBuZXcgdmlldyBjYW4gYmUgY2hhbmdlLWRldGVjdGVkXG4gIGluc2VydFZpZXcodFZpZXcsIGxWaWV3LCBsQ29udGFpbmVyLCBpbmRleCk7XG5cbiAgLy8gaW5zZXJ0IHRvIHRoZSB2aWV3IHRvIHRoZSBET00gdHJlZVxuICBpZiAoYWRkVG9ET00pIHtcbiAgICBjb25zdCBiZWZvcmVOb2RlID0gZ2V0QmVmb3JlTm9kZUZvclZpZXcoaW5kZXgsIGxDb250YWluZXIpO1xuICAgIGNvbnN0IHJlbmRlcmVyID0gbFZpZXdbUkVOREVSRVJdO1xuICAgIGNvbnN0IHBhcmVudFJOb2RlID0gbmF0aXZlUGFyZW50Tm9kZShyZW5kZXJlciwgbENvbnRhaW5lcltOQVRJVkVdIGFzIFJFbGVtZW50IHwgUkNvbW1lbnQpO1xuICAgIGlmIChwYXJlbnRSTm9kZSAhPT0gbnVsbCkge1xuICAgICAgYWRkVmlld1RvRE9NKHRWaWV3LCBsQ29udGFpbmVyW1RfSE9TVF0sIHJlbmRlcmVyLCBsVmlldywgcGFyZW50Uk5vZGUsIGJlZm9yZU5vZGUpO1xuICAgIH1cbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gcmVtb3ZlTFZpZXdGcm9tTENvbnRhaW5lcihsQ29udGFpbmVyOiBMQ29udGFpbmVyLCBpbmRleDogbnVtYmVyKTogTFZpZXc8dW5rbm93bj58XG4gICAgdW5kZWZpbmVkIHtcbiAgY29uc3QgbFZpZXcgPSBkZXRhY2hWaWV3KGxDb250YWluZXIsIGluZGV4KTtcbiAgaWYgKGxWaWV3ICE9PSB1bmRlZmluZWQpIHtcbiAgICBkZXN0cm95TFZpZXcobFZpZXdbVFZJRVddLCBsVmlldyk7XG4gIH1cbiAgcmV0dXJuIGxWaWV3O1xufVxuIl19
|
|
@@ -5,12 +5,12 @@
|
|
|
5
5
|
* Use of this source code is governed by an MIT-style license that can be
|
|
6
6
|
* found in the LICENSE file at https://angular.io/license
|
|
7
7
|
*/
|
|
8
|
-
export {
|
|
8
|
+
export { defaultEquals, isSignal, SIGNAL } from './src/api';
|
|
9
9
|
export { computed } from './src/computed';
|
|
10
10
|
export { setThrowInvalidWriteToSignalError } from './src/errors';
|
|
11
|
-
export {
|
|
11
|
+
export { consumerAfterComputation, consumerBeforeComputation, consumerDestroy, isInNotificationPhase, producerAccessed, producerNotifyConsumers, producerUpdatesAllowed, producerUpdateValueVersion, REACTIVE_NODE, setActiveConsumer } from './src/graph';
|
|
12
12
|
export { setPostSignalSetFn, signal } from './src/signal';
|
|
13
13
|
export { untracked } from './src/untracked';
|
|
14
|
-
export {
|
|
14
|
+
export { watch } from './src/watch';
|
|
15
15
|
export { setAlternateWeakRefImpl } from './src/weak_ref';
|
|
16
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
16
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb3JlL3NyYy9zaWduYWxzL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7R0FNRztBQUVILE9BQU8sRUFBQyxhQUFhLEVBQUUsUUFBUSxFQUFVLE1BQU0sRUFBa0IsTUFBTSxXQUFXLENBQUM7QUFDbkYsT0FBTyxFQUFDLFFBQVEsRUFBd0IsTUFBTSxnQkFBZ0IsQ0FBQztBQUMvRCxPQUFPLEVBQUMsaUNBQWlDLEVBQUMsTUFBTSxjQUFjLENBQUM7QUFDL0QsT0FBTyxFQUFDLHdCQUF3QixFQUFFLHlCQUF5QixFQUFFLGVBQWUsRUFBRSxxQkFBcUIsRUFBRSxnQkFBZ0IsRUFBRSx1QkFBdUIsRUFBRSxzQkFBc0IsRUFBRSwwQkFBMEIsRUFBRSxhQUFhLEVBQWdCLGlCQUFpQixFQUFDLE1BQU0sYUFBYSxDQUFDO0FBQ3ZRLE9BQU8sRUFBc0Isa0JBQWtCLEVBQUUsTUFBTSxFQUFpQixNQUFNLGNBQWMsQ0FBQztBQUM3RixPQUFPLEVBQUMsU0FBUyxFQUFDLE1BQU0saUJBQWlCLENBQUM7QUFDMUMsT0FBTyxFQUFRLEtBQUssRUFBeUMsTUFBTSxhQUFhLENBQUM7QUFDakYsT0FBTyxFQUFDLHVCQUF1QixFQUFDLE1BQU0sZ0JBQWdCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlXG4gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlXG4gKi9cblxuZXhwb3J0IHtkZWZhdWx0RXF1YWxzLCBpc1NpZ25hbCwgU2lnbmFsLCBTSUdOQUwsIFZhbHVlRXF1YWxpdHlGbn0gZnJvbSAnLi9zcmMvYXBpJztcbmV4cG9ydCB7Y29tcHV0ZWQsIENyZWF0ZUNvbXB1dGVkT3B0aW9uc30gZnJvbSAnLi9zcmMvY29tcHV0ZWQnO1xuZXhwb3J0IHtzZXRUaHJvd0ludmFsaWRXcml0ZVRvU2lnbmFsRXJyb3J9IGZyb20gJy4vc3JjL2Vycm9ycyc7XG5leHBvcnQge2NvbnN1bWVyQWZ0ZXJDb21wdXRhdGlvbiwgY29uc3VtZXJCZWZvcmVDb21wdXRhdGlvbiwgY29uc3VtZXJEZXN0cm95LCBpc0luTm90aWZpY2F0aW9uUGhhc2UsIHByb2R1Y2VyQWNjZXNzZWQsIHByb2R1Y2VyTm90aWZ5Q29uc3VtZXJzLCBwcm9kdWNlclVwZGF0ZXNBbGxvd2VkLCBwcm9kdWNlclVwZGF0ZVZhbHVlVmVyc2lvbiwgUkVBQ1RJVkVfTk9ERSwgUmVhY3RpdmVOb2RlLCBzZXRBY3RpdmVDb25zdW1lcn0gZnJvbSAnLi9zcmMvZ3JhcGgnO1xuZXhwb3J0IHtDcmVhdGVTaWduYWxPcHRpb25zLCBzZXRQb3N0U2lnbmFsU2V0Rm4sIHNpZ25hbCwgV3JpdGFibGVTaWduYWx9IGZyb20gJy4vc3JjL3NpZ25hbCc7XG5leHBvcnQge3VudHJhY2tlZH0gZnJvbSAnLi9zcmMvdW50cmFja2VkJztcbmV4cG9ydCB7V2F0Y2gsIHdhdGNoLCBXYXRjaENsZWFudXBGbiwgV2F0Y2hDbGVhbnVwUmVnaXN0ZXJGbn0gZnJvbSAnLi9zcmMvd2F0Y2gnO1xuZXhwb3J0IHtzZXRBbHRlcm5hdGVXZWFrUmVmSW1wbH0gZnJvbSAnLi9zcmMvd2Vha19yZWYnO1xuIl19
|
|
@@ -10,7 +10,7 @@
|
|
|
10
10
|
*
|
|
11
11
|
* This can be used to auto-unwrap signals in various cases, or to auto-wrap non-signal values.
|
|
12
12
|
*/
|
|
13
|
-
const SIGNAL = Symbol('SIGNAL');
|
|
13
|
+
export const SIGNAL = Symbol('SIGNAL');
|
|
14
14
|
/**
|
|
15
15
|
* Checks if the given `value` is a reactive `Signal`.
|
|
16
16
|
*
|
|
@@ -19,15 +19,6 @@ const SIGNAL = Symbol('SIGNAL');
|
|
|
19
19
|
export function isSignal(value) {
|
|
20
20
|
return typeof value === 'function' && value[SIGNAL] !== undefined;
|
|
21
21
|
}
|
|
22
|
-
/**
|
|
23
|
-
* Converts `fn` into a marked signal function (where `isSignal(fn)` will be `true`), and
|
|
24
|
-
* potentially add some set of extra properties (passed as an object record `extraApi`).
|
|
25
|
-
*/
|
|
26
|
-
export function createSignalFromFunction(node, fn, extraApi = {}) {
|
|
27
|
-
fn[SIGNAL] = node;
|
|
28
|
-
// Copy properties from `extraApi` to `fn` to complete the desired API of the `Signal`.
|
|
29
|
-
return Object.assign(fn, extraApi);
|
|
30
|
-
}
|
|
31
22
|
/**
|
|
32
23
|
* The default equality function used for `signal` and `computed`, which treats objects and arrays
|
|
33
24
|
* as never equal, and all other primitive values using identity semantics.
|
|
@@ -45,4 +36,4 @@ export function defaultEquals(a, b) {
|
|
|
45
36
|
// as objects (`typeof null === 'object'`).
|
|
46
37
|
return (a === null || typeof a !== 'object') && Object.is(a, b);
|
|
47
38
|
}
|
|
48
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
39
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBpLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29yZS9zcmMvc2lnbmFscy9zcmMvYXBpLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7R0FNRztBQUlIOzs7O0dBSUc7QUFDSCxNQUFNLENBQUMsTUFBTSxNQUFNLEdBQUcsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0FBZ0J2Qzs7OztHQUlHO0FBQ0gsTUFBTSxVQUFVLFFBQVEsQ0FBQyxLQUFjO0lBQ3JDLE9BQU8sT0FBTyxLQUFLLEtBQUssVUFBVSxJQUFLLEtBQXlCLENBQUMsTUFBTSxDQUFDLEtBQUssU0FBUyxDQUFDO0FBQ3pGLENBQUM7QUFTRDs7Ozs7Ozs7R0FRRztBQUNILE1BQU0sVUFBVSxhQUFhLENBQUksQ0FBSSxFQUFFLENBQUk7SUFDekMseUZBQXlGO0lBQ3pGLCtGQUErRjtJQUMvRiwyRkFBMkY7SUFDM0YsZ0dBQWdHO0lBQ2hHLDJDQUEyQztJQUMzQyxPQUFPLENBQUMsQ0FBQyxLQUFLLElBQUksSUFBSSxPQUFPLENBQUMsS0FBSyxRQUFRLENBQUMsSUFBSSxNQUFNLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztBQUNsRSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZVxuICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZVxuICovXG5cbmltcG9ydCB7UmVhY3RpdmVOb2RlfSBmcm9tICcuL2dyYXBoJztcblxuLyoqXG4gKiBTeW1ib2wgdXNlZCB0byB0ZWxsIGBTaWduYWxgcyBhcGFydCBmcm9tIG90aGVyIGZ1bmN0aW9ucy5cbiAqXG4gKiBUaGlzIGNhbiBiZSB1c2VkIHRvIGF1dG8tdW53cmFwIHNpZ25hbHMgaW4gdmFyaW91cyBjYXNlcywgb3IgdG8gYXV0by13cmFwIG5vbi1zaWduYWwgdmFsdWVzLlxuICovXG5leHBvcnQgY29uc3QgU0lHTkFMID0gU3ltYm9sKCdTSUdOQUwnKTtcblxuLyoqXG4gKiBBIHJlYWN0aXZlIHZhbHVlIHdoaWNoIG5vdGlmaWVzIGNvbnN1bWVycyBvZiBhbnkgY2hhbmdlcy5cbiAqXG4gKiBTaWduYWxzIGFyZSBmdW5jdGlvbnMgd2hpY2ggcmV0dXJucyB0aGVpciBjdXJyZW50IHZhbHVlLiBUbyBhY2Nlc3MgdGhlIGN1cnJlbnQgdmFsdWUgb2YgYSBzaWduYWwsXG4gKiBjYWxsIGl0LlxuICpcbiAqIE9yZGluYXJ5IHZhbHVlcyBjYW4gYmUgdHVybmVkIGludG8gYFNpZ25hbGBzIHdpdGggdGhlIGBzaWduYWxgIGZ1bmN0aW9uLlxuICpcbiAqIEBkZXZlbG9wZXJQcmV2aWV3XG4gKi9cbmV4cG9ydCB0eXBlIFNpZ25hbDxUPiA9ICgoKSA9PiBUKSZ7XG4gIFtTSUdOQUxdOiB1bmtub3duO1xufTtcblxuLyoqXG4gKiBDaGVja3MgaWYgdGhlIGdpdmVuIGB2YWx1ZWAgaXMgYSByZWFjdGl2ZSBgU2lnbmFsYC5cbiAqXG4gKiBAZGV2ZWxvcGVyUHJldmlld1xuICovXG5leHBvcnQgZnVuY3Rpb24gaXNTaWduYWwodmFsdWU6IHVua25vd24pOiB2YWx1ZSBpcyBTaWduYWw8dW5rbm93bj4ge1xuICByZXR1cm4gdHlwZW9mIHZhbHVlID09PSAnZnVuY3Rpb24nICYmICh2YWx1ZSBhcyBTaWduYWw8dW5rbm93bj4pW1NJR05BTF0gIT09IHVuZGVmaW5lZDtcbn1cblxuLyoqXG4gKiBBIGNvbXBhcmlzb24gZnVuY3Rpb24gd2hpY2ggY2FuIGRldGVybWluZSBpZiB0d28gdmFsdWVzIGFyZSBlcXVhbC5cbiAqXG4gKiBAZGV2ZWxvcGVyUHJldmlld1xuICovXG5leHBvcnQgdHlwZSBWYWx1ZUVxdWFsaXR5Rm48VD4gPSAoYTogVCwgYjogVCkgPT4gYm9vbGVhbjtcblxuLyoqXG4gKiBUaGUgZGVmYXVsdCBlcXVhbGl0eSBmdW5jdGlvbiB1c2VkIGZvciBgc2lnbmFsYCBhbmQgYGNvbXB1dGVkYCwgd2hpY2ggdHJlYXRzIG9iamVjdHMgYW5kIGFycmF5c1xuICogYXMgbmV2ZXIgZXF1YWwsIGFuZCBhbGwgb3RoZXIgcHJpbWl0aXZlIHZhbHVlcyB1c2luZyBpZGVudGl0eSBzZW1hbnRpY3MuXG4gKlxuICogVGhpcyBhbGxvd3Mgc2lnbmFscyB0byBob2xkIG5vbi1wcmltaXRpdmUgdmFsdWVzIChhcnJheXMsIG9iamVjdHMsIG90aGVyIGNvbGxlY3Rpb25zKSBhbmQgc3RpbGxcbiAqIHByb3BhZ2F0ZSBjaGFuZ2Ugbm90aWZpY2F0aW9uIHVwb24gZXhwbGljaXQgbXV0YXRpb24gd2l0aG91dCBpZGVudGl0eSBjaGFuZ2UuXG4gKlxuICogQGRldmVsb3BlclByZXZpZXdcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGRlZmF1bHRFcXVhbHM8VD4oYTogVCwgYjogVCkge1xuICAvLyBgT2JqZWN0LmlzYCBjb21wYXJlcyB0d28gdmFsdWVzIHVzaW5nIGlkZW50aXR5IHNlbWFudGljcyB3aGljaCBpcyBkZXNpcmVkIGJlaGF2aW9yIGZvclxuICAvLyBwcmltaXRpdmUgdmFsdWVzLiBJZiBgT2JqZWN0LmlzYCBkZXRlcm1pbmVzIHR3byB2YWx1ZXMgdG8gYmUgZXF1YWwgd2UgbmVlZCB0byBtYWtlIHN1cmUgdGhhdFxuICAvLyB0aG9zZSBkb24ndCByZXByZXNlbnQgb2JqZWN0cyAod2Ugd2FudCB0byBtYWtlIHN1cmUgdGhhdCAyIG9iamVjdHMgYXJlIGFsd2F5cyBjb25zaWRlcmVkXG4gIC8vIFwidW5lcXVhbFwiKS4gVGhlIG51bGwgY2hlY2sgaXMgbmVlZGVkIGZvciB0aGUgc3BlY2lhbCBjYXNlIG9mIEphdmFTY3JpcHQgcmVwb3J0aW5nIG51bGwgdmFsdWVzXG4gIC8vIGFzIG9iamVjdHMgKGB0eXBlb2YgbnVsbCA9PT0gJ29iamVjdCdgKS5cbiAgcmV0dXJuIChhID09PSBudWxsIHx8IHR5cGVvZiBhICE9PSAnb2JqZWN0JykgJiYgT2JqZWN0LmlzKGEsIGIpO1xufVxuIl19
|