@angular/core 16.2.0-rc.0 → 16.2.1
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/application_tokens.mjs +2 -1
- package/esm2022/src/core_private_export.mjs +2 -1
- package/esm2022/src/di/injector_compatibility.mjs +2 -2
- package/esm2022/src/errors.mjs +1 -1
- package/esm2022/src/hydration/annotate.mjs +60 -15
- package/esm2022/src/hydration/api.mjs +42 -8
- package/esm2022/src/hydration/cleanup.mjs +15 -6
- package/esm2022/src/hydration/utils.mjs +58 -20
- package/esm2022/src/linker/template_ref.mjs +4 -19
- package/esm2022/src/linker/view_container_ref.mjs +4 -12
- package/esm2022/src/metadata/directives.mjs +1 -1
- package/esm2022/src/render3/component_ref.mjs +7 -3
- package/esm2022/src/render3/instructions/shared.mjs +1 -1
- package/esm2022/src/render3/node_manipulation.mjs +5 -5
- package/esm2022/src/render3/view_manipulation.mjs +65 -0
- package/esm2022/src/render3/view_ref.mjs +3 -3
- package/esm2022/src/version.mjs +1 -1
- package/esm2022/testing/src/logger.mjs +3 -3
- package/fesm2022/core.mjs +232 -72
- package/fesm2022/core.mjs.map +1 -1
- package/fesm2022/rxjs-interop.mjs +1 -1
- package/fesm2022/rxjs-interop.mjs.map +1 -1
- package/fesm2022/testing.mjs +136 -54
- package/fesm2022/testing.mjs.map +1 -1
- package/index.d.ts +30 -7
- package/package.json +1 -1
- package/rxjs-interop/index.d.ts +1 -1
- package/schematics/ng-generate/standalone-migration/bundle.js +66 -30
- package/schematics/ng-generate/standalone-migration/bundle.js.map +2 -2
- package/testing/index.d.ts +1 -1
package/fesm2022/core.mjs
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* @license Angular v16.2.
|
|
2
|
+
* @license Angular v16.2.1
|
|
3
3
|
* (c) 2010-2022 Google LLC. https://angular.io/
|
|
4
4
|
* License: MIT
|
|
5
5
|
*/
|
|
@@ -761,7 +761,7 @@ Please check that 1) the type for the parameter at index ${index} is correct and
|
|
|
761
761
|
}
|
|
762
762
|
/**
|
|
763
763
|
* Injects a token from the currently active injector.
|
|
764
|
-
* `inject` is only supported in
|
|
764
|
+
* `inject` is only supported in an [injection context](/guide/dependency-injection-context). It can
|
|
765
765
|
* be used during:
|
|
766
766
|
* - Construction (via the `constructor`) of a class being instantiated by the DI system, such
|
|
767
767
|
* as an `@Injectable` or `@Component`.
|
|
@@ -6937,7 +6937,7 @@ function createElementNode(renderer, name, namespace) {
|
|
|
6937
6937
|
* @param tView The `TView' of the `LView` from which elements should be added or removed
|
|
6938
6938
|
* @param lView The view from which elements should be added or removed
|
|
6939
6939
|
*/
|
|
6940
|
-
function
|
|
6940
|
+
function removeViewFromDOM(tView, lView) {
|
|
6941
6941
|
const renderer = lView[RENDERER];
|
|
6942
6942
|
applyView(tView, lView, renderer, 2 /* WalkTNodeTreeAction.Detach */, null, null);
|
|
6943
6943
|
lView[HOST] = null;
|
|
@@ -6957,7 +6957,7 @@ function removeViewFromContainer(tView, lView) {
|
|
|
6957
6957
|
* @param parentNativeNode The parent `RElement` where it should be inserted into.
|
|
6958
6958
|
* @param beforeNode The node before which elements should be added, if insert mode
|
|
6959
6959
|
*/
|
|
6960
|
-
function
|
|
6960
|
+
function addViewToDOM(tView, parentTNode, renderer, lView, parentNativeNode, beforeNode) {
|
|
6961
6961
|
lView[HOST] = parentNativeNode;
|
|
6962
6962
|
lView[T_HOST] = parentTNode;
|
|
6963
6963
|
applyView(tView, lView, renderer, 1 /* WalkTNodeTreeAction.Insert */, parentNativeNode, beforeNode);
|
|
@@ -6968,7 +6968,7 @@ function addViewToContainer(tView, parentTNode, renderer, lView, parentNativeNod
|
|
|
6968
6968
|
* @param tView The `TView' of the `LView` to be detached
|
|
6969
6969
|
* @param lView the `LView` to be detached.
|
|
6970
6970
|
*/
|
|
6971
|
-
function
|
|
6971
|
+
function detachViewFromDOM(tView, lView) {
|
|
6972
6972
|
applyView(tView, lView, lView[RENDERER], 2 /* WalkTNodeTreeAction.Detach */, null, null);
|
|
6973
6973
|
}
|
|
6974
6974
|
/**
|
|
@@ -7130,7 +7130,7 @@ function detachView(lContainer, removeIndex) {
|
|
|
7130
7130
|
lContainer[indexInContainer - 1][NEXT] = viewToDetach[NEXT];
|
|
7131
7131
|
}
|
|
7132
7132
|
const removedLView = removeFromArray(lContainer, CONTAINER_HEADER_OFFSET + removeIndex);
|
|
7133
|
-
|
|
7133
|
+
removeViewFromDOM(viewToDetach[TVIEW], viewToDetach);
|
|
7134
7134
|
// notify query that a view has been removed
|
|
7135
7135
|
const lQueries = removedLView[QUERIES];
|
|
7136
7136
|
if (lQueries !== null) {
|
|
@@ -9649,6 +9649,7 @@ const PLATFORM_ID = new InjectionToken('Platform ID', {
|
|
|
9649
9649
|
* A [DI token](guide/glossary#di-token "DI token definition") that indicates the root directory of
|
|
9650
9650
|
* the application
|
|
9651
9651
|
* @publicApi
|
|
9652
|
+
* @deprecated
|
|
9652
9653
|
*/
|
|
9653
9654
|
const PACKAGE_ROOT_URL = new InjectionToken('Application Packages Root URL');
|
|
9654
9655
|
// We keep this token here, rather than the animations package, so that modules that only care
|
|
@@ -9869,6 +9870,10 @@ const NGH_DATA_KEY = makeStateKey(TRANSFER_STATE_TOKEN_ID);
|
|
|
9869
9870
|
* state that contains the necessary hydration info for this component.
|
|
9870
9871
|
*/
|
|
9871
9872
|
const NGH_ATTR_NAME = 'ngh';
|
|
9873
|
+
/**
|
|
9874
|
+
* Marker used in a comment node to ensure hydration content integrity
|
|
9875
|
+
*/
|
|
9876
|
+
const SSR_CONTENT_INTEGRITY_MARKER = 'nghm';
|
|
9872
9877
|
/**
|
|
9873
9878
|
* Reference to a function that reads `ngh` attribute value from a given RNode
|
|
9874
9879
|
* and retrieves hydration information from the TransferState using that value
|
|
@@ -9876,12 +9881,30 @@ const NGH_ATTR_NAME = 'ngh';
|
|
|
9876
9881
|
*
|
|
9877
9882
|
* @param rNode Component's host element.
|
|
9878
9883
|
* @param injector Injector that this component has access to.
|
|
9884
|
+
* @param isRootView Specifies whether we trying to read hydration info for the root view.
|
|
9879
9885
|
*/
|
|
9880
|
-
let _retrieveHydrationInfoImpl = (rNode, injector) => null;
|
|
9881
|
-
function retrieveHydrationInfoImpl(rNode, injector) {
|
|
9882
|
-
|
|
9886
|
+
let _retrieveHydrationInfoImpl = (rNode, injector, isRootView) => null;
|
|
9887
|
+
function retrieveHydrationInfoImpl(rNode, injector, isRootView = false) {
|
|
9888
|
+
let nghAttrValue = rNode.getAttribute(NGH_ATTR_NAME);
|
|
9883
9889
|
if (nghAttrValue == null)
|
|
9884
9890
|
return null;
|
|
9891
|
+
// For cases when a root component also acts as an anchor node for a ViewContainerRef
|
|
9892
|
+
// (for example, when ViewContainerRef is injected in a root component), there is a need
|
|
9893
|
+
// to serialize information about the component itself, as well as an LContainer that
|
|
9894
|
+
// represents this ViewContainerRef. Effectively, we need to serialize 2 pieces of info:
|
|
9895
|
+
// (1) hydration info for the root component itself and (2) hydration info for the
|
|
9896
|
+
// ViewContainerRef instance (an LContainer). Each piece of information is included into
|
|
9897
|
+
// the hydration data (in the TransferState object) separately, thus we end up with 2 ids.
|
|
9898
|
+
// Since we only have 1 root element, we encode both bits of info into a single string:
|
|
9899
|
+
// ids are separated by the `|` char (e.g. `10|25`, where `10` is the ngh for a component view
|
|
9900
|
+
// and 25 is the `ngh` for a root view which holds LContainer).
|
|
9901
|
+
const [componentViewNgh, rootViewNgh] = nghAttrValue.split('|');
|
|
9902
|
+
nghAttrValue = isRootView ? rootViewNgh : componentViewNgh;
|
|
9903
|
+
if (!nghAttrValue)
|
|
9904
|
+
return null;
|
|
9905
|
+
// We've read one of the ngh ids, keep the remaining one, so that
|
|
9906
|
+
// we can set it back on the DOM element.
|
|
9907
|
+
const remainingNgh = isRootView ? componentViewNgh : (rootViewNgh ? `|${rootViewNgh}` : '');
|
|
9885
9908
|
let data = {};
|
|
9886
9909
|
// An element might have an empty `ngh` attribute value (e.g. `<comp ngh="" />`),
|
|
9887
9910
|
// which means that no special annotations are required. Do not attempt to read
|
|
@@ -9903,9 +9926,29 @@ function retrieveHydrationInfoImpl(rNode, injector) {
|
|
|
9903
9926
|
data,
|
|
9904
9927
|
firstChild: rNode.firstChild ?? null,
|
|
9905
9928
|
};
|
|
9906
|
-
|
|
9907
|
-
|
|
9908
|
-
|
|
9929
|
+
if (isRootView) {
|
|
9930
|
+
// If there is hydration info present for the root view, it means that there was
|
|
9931
|
+
// a ViewContainerRef injected in the root component. The root component host element
|
|
9932
|
+
// acted as an anchor node in this scenario. As a result, the DOM nodes that represent
|
|
9933
|
+
// embedded views in this ViewContainerRef are located as siblings to the host node,
|
|
9934
|
+
// i.e. `<app-root /><#VIEW1><#VIEW2>...<!--container-->`. In this case, the current
|
|
9935
|
+
// node becomes the first child of this root view and the next sibling is the first
|
|
9936
|
+
// element in the DOM segment.
|
|
9937
|
+
dehydratedView.firstChild = rNode;
|
|
9938
|
+
// We use `0` here, since this is the slot (right after the HEADER_OFFSET)
|
|
9939
|
+
// where a component LView or an LContainer is located in a root LView.
|
|
9940
|
+
setSegmentHead(dehydratedView, 0, rNode.nextSibling);
|
|
9941
|
+
}
|
|
9942
|
+
if (remainingNgh) {
|
|
9943
|
+
// If we have only used one of the ngh ids, store the remaining one
|
|
9944
|
+
// back on this RNode.
|
|
9945
|
+
rNode.setAttribute(NGH_ATTR_NAME, remainingNgh);
|
|
9946
|
+
}
|
|
9947
|
+
else {
|
|
9948
|
+
// The `ngh` attribute is cleared from the DOM node now
|
|
9949
|
+
// that the data has been retrieved for all indices.
|
|
9950
|
+
rNode.removeAttribute(NGH_ATTR_NAME);
|
|
9951
|
+
}
|
|
9909
9952
|
// Note: don't check whether this node was claimed for hydration,
|
|
9910
9953
|
// because this node might've been previously claimed while processing
|
|
9911
9954
|
// template instructions.
|
|
@@ -9923,14 +9966,16 @@ function enableRetrieveHydrationInfoImpl() {
|
|
|
9923
9966
|
* Retrieves hydration info by reading the value from the `ngh` attribute
|
|
9924
9967
|
* and accessing a corresponding slot in TransferState storage.
|
|
9925
9968
|
*/
|
|
9926
|
-
function retrieveHydrationInfo(rNode, injector) {
|
|
9927
|
-
return _retrieveHydrationInfoImpl(rNode, injector);
|
|
9969
|
+
function retrieveHydrationInfo(rNode, injector, isRootView = false) {
|
|
9970
|
+
return _retrieveHydrationInfoImpl(rNode, injector, isRootView);
|
|
9928
9971
|
}
|
|
9929
9972
|
/**
|
|
9930
|
-
* Retrieves
|
|
9931
|
-
*
|
|
9973
|
+
* Retrieves the necessary object from a given ViewRef to serialize:
|
|
9974
|
+
* - an LView for component views
|
|
9975
|
+
* - an LContainer for cases when component acts as a ViewContainerRef anchor
|
|
9976
|
+
* - `null` in case of an embedded view
|
|
9932
9977
|
*/
|
|
9933
|
-
function
|
|
9978
|
+
function getLNodeForHydration(viewRef) {
|
|
9934
9979
|
// Reading an internal field from `ViewRef` instance.
|
|
9935
9980
|
let lView = viewRef._lView;
|
|
9936
9981
|
const tView = lView[TVIEW];
|
|
@@ -9944,12 +9989,6 @@ function getComponentLViewForHydration(viewRef) {
|
|
|
9944
9989
|
if (isRootView(lView)) {
|
|
9945
9990
|
lView = lView[HEADER_OFFSET];
|
|
9946
9991
|
}
|
|
9947
|
-
// If a `ViewContainerRef` was injected in a component class, this resulted
|
|
9948
|
-
// in an LContainer creation at that location. In this case, the component
|
|
9949
|
-
// LView is in the LContainer's `HOST` slot.
|
|
9950
|
-
if (isLContainer(lView)) {
|
|
9951
|
-
lView = lView[HOST];
|
|
9952
|
-
}
|
|
9953
9992
|
return lView;
|
|
9954
9993
|
}
|
|
9955
9994
|
function getTextNodeContent(node) {
|
|
@@ -10252,7 +10291,7 @@ class Version {
|
|
|
10252
10291
|
/**
|
|
10253
10292
|
* @publicApi
|
|
10254
10293
|
*/
|
|
10255
|
-
const VERSION = new Version('16.2.
|
|
10294
|
+
const VERSION = new Version('16.2.1');
|
|
10256
10295
|
|
|
10257
10296
|
// This default value is when checking the hierarchy for a token.
|
|
10258
10297
|
//
|
|
@@ -13293,7 +13332,7 @@ class ViewRef$1 {
|
|
|
13293
13332
|
}
|
|
13294
13333
|
detachFromAppRef() {
|
|
13295
13334
|
this._appRef = null;
|
|
13296
|
-
|
|
13335
|
+
detachViewFromDOM(this._lView[TVIEW], this._lView);
|
|
13297
13336
|
}
|
|
13298
13337
|
attachToAppRef(appRef) {
|
|
13299
13338
|
if (this._attachedToViewContainer) {
|
|
@@ -13452,9 +13491,13 @@ class ComponentFactory extends ComponentFactory$1 {
|
|
|
13452
13491
|
const nonSignalFlags = this.componentDef.onPush ? 64 /* LViewFlags.Dirty */ | 512 /* LViewFlags.IsRoot */ :
|
|
13453
13492
|
16 /* LViewFlags.CheckAlways */ | 512 /* LViewFlags.IsRoot */;
|
|
13454
13493
|
const rootFlags = this.componentDef.signals ? signalFlags : nonSignalFlags;
|
|
13494
|
+
let hydrationInfo = null;
|
|
13495
|
+
if (hostRNode !== null) {
|
|
13496
|
+
hydrationInfo = retrieveHydrationInfo(hostRNode, rootViewInjector, true /* isRootView */);
|
|
13497
|
+
}
|
|
13455
13498
|
// Create the root view. Uses empty TView and ContentTemplate.
|
|
13456
13499
|
const rootTView = createTView(0 /* TViewType.Root */, null, null, 1, 0, null, null, null, null, null, null);
|
|
13457
|
-
const rootLView = createLView(null, rootTView, null, rootFlags, null, null, environment, hostRenderer, rootViewInjector, null,
|
|
13500
|
+
const rootLView = createLView(null, rootTView, null, rootFlags, null, null, environment, hostRenderer, rootViewInjector, null, hydrationInfo);
|
|
13458
13501
|
// rootView is the parent when bootstrapping
|
|
13459
13502
|
// TODO(misko): it looks like we are entering view here but we don't really need to as
|
|
13460
13503
|
// `renderView` does that. However as the code is written it is needed because
|
|
@@ -13581,7 +13624,7 @@ function createRootComponentTNode(lView, rNode) {
|
|
|
13581
13624
|
function createRootComponentView(tNode, hostRNode, rootComponentDef, rootDirectives, rootView, environment, hostRenderer) {
|
|
13582
13625
|
const tView = rootView[TVIEW];
|
|
13583
13626
|
applyRootComponentStyling(rootDirectives, tNode, hostRNode, hostRenderer);
|
|
13584
|
-
// Hydration info is on the host element and needs to be
|
|
13627
|
+
// Hydration info is on the host element and needs to be retrieved
|
|
13585
13628
|
// and passed to the component LView.
|
|
13586
13629
|
let hydrationInfo = null;
|
|
13587
13630
|
if (hostRNode !== null) {
|
|
@@ -23364,6 +23407,57 @@ class QueryList {
|
|
|
23364
23407
|
}
|
|
23365
23408
|
}
|
|
23366
23409
|
|
|
23410
|
+
function createAndRenderEmbeddedLView(declarationLView, templateTNode, context, options) {
|
|
23411
|
+
const embeddedTView = templateTNode.tView;
|
|
23412
|
+
ngDevMode && assertDefined(embeddedTView, 'TView must be defined for a template node.');
|
|
23413
|
+
ngDevMode && assertTNodeForLView(templateTNode, declarationLView);
|
|
23414
|
+
// Embedded views follow the change detection strategy of the view they're declared in.
|
|
23415
|
+
const isSignalView = declarationLView[FLAGS] & 4096 /* LViewFlags.SignalView */;
|
|
23416
|
+
const viewFlags = isSignalView ? 4096 /* LViewFlags.SignalView */ : 16 /* LViewFlags.CheckAlways */;
|
|
23417
|
+
const embeddedLView = createLView(declarationLView, embeddedTView, context, viewFlags, null, templateTNode, null, null, null, options?.injector ?? null, options?.hydrationInfo ?? null);
|
|
23418
|
+
const declarationLContainer = declarationLView[templateTNode.index];
|
|
23419
|
+
ngDevMode && assertLContainer(declarationLContainer);
|
|
23420
|
+
embeddedLView[DECLARATION_LCONTAINER] = declarationLContainer;
|
|
23421
|
+
const declarationViewLQueries = declarationLView[QUERIES];
|
|
23422
|
+
if (declarationViewLQueries !== null) {
|
|
23423
|
+
embeddedLView[QUERIES] = declarationViewLQueries.createEmbeddedView(embeddedTView);
|
|
23424
|
+
}
|
|
23425
|
+
// execute creation mode of a view
|
|
23426
|
+
renderView(embeddedTView, embeddedLView, context);
|
|
23427
|
+
return embeddedLView;
|
|
23428
|
+
}
|
|
23429
|
+
function getLViewFromLContainer(lContainer, index) {
|
|
23430
|
+
const adjustedIndex = CONTAINER_HEADER_OFFSET + index;
|
|
23431
|
+
// avoid reading past the array boundaries
|
|
23432
|
+
if (adjustedIndex < lContainer.length) {
|
|
23433
|
+
const lView = lContainer[adjustedIndex];
|
|
23434
|
+
ngDevMode && assertLView(lView);
|
|
23435
|
+
return lView;
|
|
23436
|
+
}
|
|
23437
|
+
return undefined;
|
|
23438
|
+
}
|
|
23439
|
+
function addLViewToLContainer(lContainer, lView, index, addToDOM = true) {
|
|
23440
|
+
const tView = lView[TVIEW];
|
|
23441
|
+
// insert to the view tree so the new view can be change-detected
|
|
23442
|
+
insertView(tView, lView, lContainer, index);
|
|
23443
|
+
// insert to the view to the DOM tree
|
|
23444
|
+
if (addToDOM) {
|
|
23445
|
+
const beforeNode = getBeforeNodeForView(index, lContainer);
|
|
23446
|
+
const renderer = lView[RENDERER];
|
|
23447
|
+
const parentRNode = nativeParentNode(renderer, lContainer[NATIVE]);
|
|
23448
|
+
if (parentRNode !== null) {
|
|
23449
|
+
addViewToDOM(tView, lContainer[T_HOST], renderer, lView, parentRNode, beforeNode);
|
|
23450
|
+
}
|
|
23451
|
+
}
|
|
23452
|
+
}
|
|
23453
|
+
function removeLViewFromLContainer(lContainer, index) {
|
|
23454
|
+
const lView = detachView(lContainer, index);
|
|
23455
|
+
if (lView !== undefined) {
|
|
23456
|
+
destroyLView(lView[TVIEW], lView);
|
|
23457
|
+
}
|
|
23458
|
+
return lView;
|
|
23459
|
+
}
|
|
23460
|
+
|
|
23367
23461
|
/**
|
|
23368
23462
|
* Represents an embedded template that can be used to instantiate embedded views.
|
|
23369
23463
|
* To instantiate embedded views based on a template, use the `ViewContainerRef`
|
|
@@ -23409,25 +23503,13 @@ const R3TemplateRef = class TemplateRef extends ViewEngineTemplateRef {
|
|
|
23409
23503
|
return this._declarationTContainer.tView?.ssrId || null;
|
|
23410
23504
|
}
|
|
23411
23505
|
createEmbeddedView(context, injector) {
|
|
23412
|
-
return this.createEmbeddedViewImpl(context, injector
|
|
23506
|
+
return this.createEmbeddedViewImpl(context, injector);
|
|
23413
23507
|
}
|
|
23414
23508
|
/**
|
|
23415
23509
|
* @internal
|
|
23416
23510
|
*/
|
|
23417
23511
|
createEmbeddedViewImpl(context, injector, hydrationInfo) {
|
|
23418
|
-
|
|
23419
|
-
const isSignalView = this._declarationLView[FLAGS] & 4096 /* LViewFlags.SignalView */;
|
|
23420
|
-
const viewFlags = isSignalView ? 4096 /* LViewFlags.SignalView */ : 16 /* LViewFlags.CheckAlways */;
|
|
23421
|
-
const embeddedTView = this._declarationTContainer.tView;
|
|
23422
|
-
const embeddedLView = createLView(this._declarationLView, embeddedTView, context, viewFlags, null, embeddedTView.declTNode, null, null, null, injector || null, hydrationInfo || null);
|
|
23423
|
-
const declarationLContainer = this._declarationLView[this._declarationTContainer.index];
|
|
23424
|
-
ngDevMode && assertLContainer(declarationLContainer);
|
|
23425
|
-
embeddedLView[DECLARATION_LCONTAINER] = declarationLContainer;
|
|
23426
|
-
const declarationViewLQueries = this._declarationLView[QUERIES];
|
|
23427
|
-
if (declarationViewLQueries !== null) {
|
|
23428
|
-
embeddedLView[QUERIES] = declarationViewLQueries.createEmbeddedView(embeddedTView);
|
|
23429
|
-
}
|
|
23430
|
-
renderView(embeddedTView, embeddedLView, context);
|
|
23512
|
+
const embeddedLView = createAndRenderEmbeddedLView(this._declarationLView, this._declarationTContainer, context, { injector, hydrationInfo });
|
|
23431
23513
|
return new ViewRef$1(embeddedLView);
|
|
23432
23514
|
}
|
|
23433
23515
|
};
|
|
@@ -23524,11 +23606,20 @@ function cleanupLView(lView) {
|
|
|
23524
23606
|
function cleanupDehydratedViews(appRef) {
|
|
23525
23607
|
const viewRefs = appRef._views;
|
|
23526
23608
|
for (const viewRef of viewRefs) {
|
|
23527
|
-
const
|
|
23609
|
+
const lNode = getLNodeForHydration(viewRef);
|
|
23528
23610
|
// An `lView` might be `null` if a `ViewRef` represents
|
|
23529
23611
|
// an embedded view (not a component view).
|
|
23530
|
-
if (
|
|
23531
|
-
|
|
23612
|
+
if (lNode !== null && lNode[HOST] !== null) {
|
|
23613
|
+
if (isLView(lNode)) {
|
|
23614
|
+
cleanupLView(lNode);
|
|
23615
|
+
}
|
|
23616
|
+
else {
|
|
23617
|
+
// Cleanup in the root component view
|
|
23618
|
+
const componentLView = lNode[HOST];
|
|
23619
|
+
cleanupLView(componentLView);
|
|
23620
|
+
// Cleanup in all views within this view container
|
|
23621
|
+
cleanupLContainer(lNode);
|
|
23622
|
+
}
|
|
23532
23623
|
ngDevMode && ngDevMode.dehydratedViewsCleanupRuns++;
|
|
23533
23624
|
}
|
|
23534
23625
|
}
|
|
@@ -23810,16 +23901,7 @@ const R3ViewContainerRef = class ViewContainerRef extends VE_ViewContainerRef {
|
|
|
23810
23901
|
// Logical operation of adding `LView` to `LContainer`
|
|
23811
23902
|
const adjustedIdx = this._adjustIndex(index);
|
|
23812
23903
|
const lContainer = this._lContainer;
|
|
23813
|
-
|
|
23814
|
-
// Physical operation of adding the DOM nodes.
|
|
23815
|
-
if (!skipDomInsertion) {
|
|
23816
|
-
const beforeNode = getBeforeNodeForView(adjustedIdx, lContainer);
|
|
23817
|
-
const renderer = lView[RENDERER];
|
|
23818
|
-
const parentRNode = nativeParentNode(renderer, lContainer[NATIVE]);
|
|
23819
|
-
if (parentRNode !== null) {
|
|
23820
|
-
addViewToContainer(tView, lContainer[T_HOST], renderer, lView, parentRNode, beforeNode);
|
|
23821
|
-
}
|
|
23822
|
-
}
|
|
23904
|
+
addLViewToLContainer(lContainer, lView, adjustedIdx, !skipDomInsertion);
|
|
23823
23905
|
viewRef.attachToViewContainerRef();
|
|
23824
23906
|
addToArray(getOrCreateViewRefs(lContainer), adjustedIdx, viewRef);
|
|
23825
23907
|
return viewRef;
|
|
@@ -30639,6 +30721,47 @@ function calcNumRootNodes(tView, lView, tNode) {
|
|
|
30639
30721
|
collectNativeNodes(tView, lView, tNode, rootNodes);
|
|
30640
30722
|
return rootNodes.length;
|
|
30641
30723
|
}
|
|
30724
|
+
/**
|
|
30725
|
+
* Annotates root level component's LView for hydration,
|
|
30726
|
+
* see `annotateHostElementForHydration` for additional information.
|
|
30727
|
+
*/
|
|
30728
|
+
function annotateComponentLViewForHydration(lView, context) {
|
|
30729
|
+
const hostElement = lView[HOST];
|
|
30730
|
+
// Root elements might also be annotated with the `ngSkipHydration` attribute,
|
|
30731
|
+
// check if it's present before starting the serialization process.
|
|
30732
|
+
if (hostElement && !hostElement.hasAttribute(SKIP_HYDRATION_ATTR_NAME)) {
|
|
30733
|
+
return annotateHostElementForHydration(hostElement, lView, context);
|
|
30734
|
+
}
|
|
30735
|
+
return null;
|
|
30736
|
+
}
|
|
30737
|
+
/**
|
|
30738
|
+
* Annotates root level LContainer for hydration. This happens when a root component
|
|
30739
|
+
* injects ViewContainerRef, thus making the component an anchor for a view container.
|
|
30740
|
+
* This function serializes the component itself as well as all views from the view
|
|
30741
|
+
* container.
|
|
30742
|
+
*/
|
|
30743
|
+
function annotateLContainerForHydration(lContainer, context) {
|
|
30744
|
+
const componentLView = lContainer[HOST];
|
|
30745
|
+
// Serialize the root component itself.
|
|
30746
|
+
const componentLViewNghIndex = annotateComponentLViewForHydration(componentLView, context);
|
|
30747
|
+
const hostElement = unwrapRNode(componentLView[HOST]);
|
|
30748
|
+
// Serialize all views within this view container.
|
|
30749
|
+
const rootLView = lContainer[PARENT];
|
|
30750
|
+
const rootLViewNghIndex = annotateHostElementForHydration(hostElement, rootLView, context);
|
|
30751
|
+
const renderer = componentLView[RENDERER];
|
|
30752
|
+
// For cases when a root component also acts as an anchor node for a ViewContainerRef
|
|
30753
|
+
// (for example, when ViewContainerRef is injected in a root component), there is a need
|
|
30754
|
+
// to serialize information about the component itself, as well as an LContainer that
|
|
30755
|
+
// represents this ViewContainerRef. Effectively, we need to serialize 2 pieces of info:
|
|
30756
|
+
// (1) hydration info for the root component itself and (2) hydration info for the
|
|
30757
|
+
// ViewContainerRef instance (an LContainer). Each piece of information is included into
|
|
30758
|
+
// the hydration data (in the TransferState object) separately, thus we end up with 2 ids.
|
|
30759
|
+
// Since we only have 1 root element, we encode both bits of info into a single string:
|
|
30760
|
+
// ids are separated by the `|` char (e.g. `10|25`, where `10` is the ngh for a component view
|
|
30761
|
+
// and 25 is the `ngh` for a root view which holds LContainer).
|
|
30762
|
+
const finalIndex = `${componentLViewNghIndex}|${rootLViewNghIndex}`;
|
|
30763
|
+
renderer.setAttribute(hostElement, NGH_ATTR_NAME, finalIndex);
|
|
30764
|
+
}
|
|
30642
30765
|
/**
|
|
30643
30766
|
* Annotates all components bootstrapped in a given ApplicationRef
|
|
30644
30767
|
* with info needed for hydration.
|
|
@@ -30651,21 +30774,21 @@ function annotateForHydration(appRef, doc) {
|
|
|
30651
30774
|
const corruptedTextNodes = new Map();
|
|
30652
30775
|
const viewRefs = appRef._views;
|
|
30653
30776
|
for (const viewRef of viewRefs) {
|
|
30654
|
-
const
|
|
30777
|
+
const lNode = getLNodeForHydration(viewRef);
|
|
30655
30778
|
// An `lView` might be `null` if a `ViewRef` represents
|
|
30656
30779
|
// an embedded view (not a component view).
|
|
30657
|
-
if (
|
|
30658
|
-
const
|
|
30659
|
-
|
|
30660
|
-
|
|
30661
|
-
|
|
30662
|
-
|
|
30663
|
-
|
|
30664
|
-
corruptedTextNodes,
|
|
30665
|
-
};
|
|
30666
|
-
annotateHostElementForHydration(hostElement, lView, context);
|
|
30667
|
-
insertCorruptedTextNodeMarkers(corruptedTextNodes, doc);
|
|
30780
|
+
if (lNode !== null) {
|
|
30781
|
+
const context = {
|
|
30782
|
+
serializedViewCollection,
|
|
30783
|
+
corruptedTextNodes,
|
|
30784
|
+
};
|
|
30785
|
+
if (isLContainer(lNode)) {
|
|
30786
|
+
annotateLContainerForHydration(lNode, context);
|
|
30668
30787
|
}
|
|
30788
|
+
else {
|
|
30789
|
+
annotateComponentLViewForHydration(lNode, context);
|
|
30790
|
+
}
|
|
30791
|
+
insertCorruptedTextNodeMarkers(corruptedTextNodes, doc);
|
|
30669
30792
|
}
|
|
30670
30793
|
}
|
|
30671
30794
|
// Note: we *always* include hydration info key and a corresponding value
|
|
@@ -30946,6 +31069,8 @@ function componentUsesShadowDomEncapsulation(lView) {
|
|
|
30946
31069
|
* @param element The Host element to be annotated
|
|
30947
31070
|
* @param lView The associated LView
|
|
30948
31071
|
* @param context The hydration context
|
|
31072
|
+
* @returns An index of serialized view from the transfer state object
|
|
31073
|
+
* or `null` when a given component can not be serialized.
|
|
30949
31074
|
*/
|
|
30950
31075
|
function annotateHostElementForHydration(element, lView, context) {
|
|
30951
31076
|
const renderer = lView[RENDERER];
|
|
@@ -30956,11 +31081,13 @@ function annotateHostElementForHydration(element, lView, context) {
|
|
|
30956
31081
|
// shadow DOM, so we can not guarantee that client and server representations
|
|
30957
31082
|
// would exactly match
|
|
30958
31083
|
renderer.setAttribute(element, SKIP_HYDRATION_ATTR_NAME, '');
|
|
31084
|
+
return null;
|
|
30959
31085
|
}
|
|
30960
31086
|
else {
|
|
30961
31087
|
const ngh = serializeLView(lView, context);
|
|
30962
31088
|
const index = context.serializedViewCollection.add(ngh);
|
|
30963
31089
|
renderer.setAttribute(element, NGH_ATTR_NAME, index.toString());
|
|
31090
|
+
return index;
|
|
30964
31091
|
}
|
|
30965
31092
|
}
|
|
30966
31093
|
/**
|
|
@@ -31114,10 +31241,11 @@ function withDomHydration() {
|
|
|
31114
31241
|
useValue: () => {
|
|
31115
31242
|
// Since this function is used across both server and client,
|
|
31116
31243
|
// make sure that the runtime code is only added when invoked
|
|
31117
|
-
// on the client. Moving forward, the `
|
|
31244
|
+
// on the client. Moving forward, the `isPlatformBrowser` check should
|
|
31118
31245
|
// be replaced with a tree-shakable alternative (e.g. `isServer`
|
|
31119
31246
|
// flag).
|
|
31120
31247
|
if (isPlatformBrowser() && inject(IS_HYDRATION_DOM_REUSE_ENABLED)) {
|
|
31248
|
+
verifySsrContentsIntegrity();
|
|
31121
31249
|
enableHydrationRuntimeSupport();
|
|
31122
31250
|
}
|
|
31123
31251
|
},
|
|
@@ -31140,11 +31268,15 @@ function withDomHydration() {
|
|
|
31140
31268
|
const appRef = inject(ApplicationRef);
|
|
31141
31269
|
const injector = inject(Injector);
|
|
31142
31270
|
return () => {
|
|
31271
|
+
// Wait until an app becomes stable and cleanup all views that
|
|
31272
|
+
// were not claimed during the application bootstrap process.
|
|
31273
|
+
// The timing is similar to when we start the serialization process
|
|
31274
|
+
// on the server.
|
|
31275
|
+
//
|
|
31276
|
+
// Note: the cleanup task *MUST* be scheduled within the Angular zone
|
|
31277
|
+
// to ensure that change detection is properly run afterward.
|
|
31143
31278
|
whenStable(appRef, injector).then(() => {
|
|
31144
|
-
|
|
31145
|
-
// were not claimed during the application bootstrap process.
|
|
31146
|
-
// The timing is similar to when we start the serialization process
|
|
31147
|
-
// on the server.
|
|
31279
|
+
NgZone.assertInAngularZone();
|
|
31148
31280
|
cleanupDehydratedViews(appRef);
|
|
31149
31281
|
if (typeof ngDevMode !== 'undefined' && ngDevMode) {
|
|
31150
31282
|
printHydrationStats(injector);
|
|
@@ -31168,6 +31300,34 @@ function logWarningOnStableTimedout(time, console) {
|
|
|
31168
31300
|
`as a signal to complete hydration process.`;
|
|
31169
31301
|
console.warn(formatRuntimeError(-506 /* RuntimeErrorCode.HYDRATION_STABLE_TIMEDOUT */, message));
|
|
31170
31302
|
}
|
|
31303
|
+
/**
|
|
31304
|
+
* Verifies whether the DOM contains a special marker added during SSR time to make sure
|
|
31305
|
+
* there is no SSR'ed contents transformations happen after SSR is completed. Typically that
|
|
31306
|
+
* happens either by CDN or during the build process as an optimization to remove comment nodes.
|
|
31307
|
+
* Hydration process requires comment nodes produced by Angular to locate correct DOM segments.
|
|
31308
|
+
* When this special marker is *not* present - throw an error and do not proceed with hydration,
|
|
31309
|
+
* since it will not be able to function correctly.
|
|
31310
|
+
*
|
|
31311
|
+
* Note: this function is invoked only on the client, so it's safe to use DOM APIs.
|
|
31312
|
+
*/
|
|
31313
|
+
function verifySsrContentsIntegrity() {
|
|
31314
|
+
const doc = getDocument();
|
|
31315
|
+
let hydrationMarker;
|
|
31316
|
+
for (const node of doc.body.childNodes) {
|
|
31317
|
+
if (node.nodeType === Node.COMMENT_NODE &&
|
|
31318
|
+
node.textContent?.trim() === SSR_CONTENT_INTEGRITY_MARKER) {
|
|
31319
|
+
hydrationMarker = node;
|
|
31320
|
+
break;
|
|
31321
|
+
}
|
|
31322
|
+
}
|
|
31323
|
+
if (!hydrationMarker) {
|
|
31324
|
+
throw new RuntimeError(-507 /* RuntimeErrorCode.MISSING_SSR_CONTENT_INTEGRITY_MARKER */, typeof ngDevMode !== 'undefined' && ngDevMode &&
|
|
31325
|
+
'Angular hydration logic detected that HTML content of this page was modified after it ' +
|
|
31326
|
+
'was produced during server side rendering. Make sure that there are no optimizations ' +
|
|
31327
|
+
'that remove comment nodes from HTML enabled on your CDN. Angular hydration ' +
|
|
31328
|
+
'relies on HTML produced by the server, including whitespaces and comment nodes.');
|
|
31329
|
+
}
|
|
31330
|
+
}
|
|
31171
31331
|
|
|
31172
31332
|
/**
|
|
31173
31333
|
* Transforms a value (typically a string) to a boolean.
|
|
@@ -31487,5 +31647,5 @@ if (typeof ngDevMode !== 'undefined' && ngDevMode) {
|
|
|
31487
31647
|
* Generated bundle index. Do not edit.
|
|
31488
31648
|
*/
|
|
31489
31649
|
|
|
31490
|
-
export { ANIMATION_MODULE_TYPE, APP_BOOTSTRAP_LISTENER, APP_ID, APP_INITIALIZER, ApplicationInitStatus, ApplicationModule, ApplicationRef, Attribute, COMPILER_OPTIONS, CSP_NONCE, CUSTOM_ELEMENTS_SCHEMA, ChangeDetectionStrategy, ChangeDetectorRef, Compiler, CompilerFactory, Component, ComponentFactory$1 as ComponentFactory, ComponentFactoryResolver$1 as ComponentFactoryResolver, ComponentRef$1 as ComponentRef, ContentChild, ContentChildren, DEFAULT_CURRENCY_CODE, DebugElement, DebugEventListener, DebugNode, DefaultIterableDiffer, DestroyRef, Directive, ENVIRONMENT_INITIALIZER, ElementRef, EmbeddedViewRef, EnvironmentInjector, ErrorHandler, EventEmitter, Host, HostBinding, HostListener, INJECTOR, Inject, InjectFlags, Injectable, InjectionToken, Injector, Input, IterableDiffers, KeyValueDiffers, LOCALE_ID, MissingTranslationStrategy, ModuleWithComponentFactories, NO_ERRORS_SCHEMA, NgModule, NgModuleFactory$1 as NgModuleFactory, NgModuleRef$1 as NgModuleRef, NgProbeToken, NgZone, Optional, Output, PACKAGE_ROOT_URL, PLATFORM_ID, PLATFORM_INITIALIZER, Pipe, PlatformRef, Query, QueryList, Renderer2, RendererFactory2, RendererStyleFlags2, Sanitizer, SecurityContext, Self, SimpleChange, SkipSelf, TRANSLATIONS, TRANSLATIONS_FORMAT, TemplateRef, Testability, TestabilityRegistry, TransferState, Type, VERSION, Version, ViewChild, ViewChildren, ViewContainerRef, ViewEncapsulation$1 as ViewEncapsulation, ViewRef, afterNextRender, afterRender, asNativeElements, assertInInjectionContext, assertPlatform, booleanAttribute, computed, createComponent, createEnvironmentInjector, createNgModule, createNgModuleRef, createPlatform, createPlatformFactory, defineInjectable, destroyPlatform, effect, enableProdMode, forwardRef, getDebugNode, getModuleFactory, getNgModuleById, getPlatform, importProvidersFrom, inject, isDevMode, isSignal, isStandalone, makeEnvironmentProviders, makeStateKey, mergeApplicationConfig, numberAttribute, platformCore, provideZoneChangeDetection, reflectComponentType, resolveForwardRef, runInInjectionContext, setTestabilityGetter, signal, untracked, ALLOW_MULTIPLE_PLATFORMS as ɵALLOW_MULTIPLE_PLATFORMS, AfterRenderEventManager as ɵAfterRenderEventManager, ComponentFactory$1 as ɵComponentFactory, Console as ɵConsole, DEFAULT_LOCALE_ID as ɵDEFAULT_LOCALE_ID, ENABLED_SSR_FEATURES as ɵENABLED_SSR_FEATURES, INJECTOR_SCOPE as ɵINJECTOR_SCOPE, IS_HYDRATION_DOM_REUSE_ENABLED as ɵIS_HYDRATION_DOM_REUSE_ENABLED, InitialRenderPendingTasks as ɵInitialRenderPendingTasks, LContext as ɵLContext, LifecycleHooksFeature as ɵLifecycleHooksFeature, LocaleDataIndex as ɵLocaleDataIndex, NG_COMP_DEF as ɵNG_COMP_DEF, NG_DIR_DEF as ɵNG_DIR_DEF, NG_ELEMENT_ID as ɵNG_ELEMENT_ID, NG_INJ_DEF as ɵNG_INJ_DEF, NG_MOD_DEF as ɵNG_MOD_DEF, NG_PIPE_DEF as ɵNG_PIPE_DEF, NG_PROV_DEF as ɵNG_PROV_DEF, NOT_FOUND_CHECK_ONLY_ELEMENT_INJECTOR as ɵNOT_FOUND_CHECK_ONLY_ELEMENT_INJECTOR, NO_CHANGE as ɵNO_CHANGE, NgModuleFactory as ɵNgModuleFactory, NoopNgZone as ɵNoopNgZone, ReflectionCapabilities as ɵReflectionCapabilities, ComponentFactory as ɵRender3ComponentFactory, ComponentRef as ɵRender3ComponentRef, NgModuleRef as ɵRender3NgModuleRef, RuntimeError as ɵRuntimeError, TESTABILITY as ɵTESTABILITY, TESTABILITY_GETTER as ɵTESTABILITY_GETTER, ViewRef$1 as ɵViewRef, XSS_SECURITY_URL as ɵXSS_SECURITY_URL, _sanitizeHtml as ɵ_sanitizeHtml, _sanitizeUrl as ɵ_sanitizeUrl, allowSanitizationBypassAndThrow as ɵallowSanitizationBypassAndThrow, annotateForHydration as ɵannotateForHydration, bypassSanitizationTrustHtml as ɵbypassSanitizationTrustHtml, bypassSanitizationTrustResourceUrl as ɵbypassSanitizationTrustResourceUrl, bypassSanitizationTrustScript as ɵbypassSanitizationTrustScript, bypassSanitizationTrustStyle as ɵbypassSanitizationTrustStyle, bypassSanitizationTrustUrl as ɵbypassSanitizationTrustUrl, clearResolutionOfComponentResourcesQueue as ɵclearResolutionOfComponentResourcesQueue, compileComponent as ɵcompileComponent, compileDirective as ɵcompileDirective, compileNgModule as ɵcompileNgModule, compileNgModuleDefs as ɵcompileNgModuleDefs, compileNgModuleFactory as ɵcompileNgModuleFactory, compilePipe as ɵcompilePipe, convertToBitFlags as ɵconvertToBitFlags, createInjector as ɵcreateInjector, defaultIterableDiffers as ɵdefaultIterableDiffers, defaultKeyValueDiffers as ɵdefaultKeyValueDiffers, detectChanges as ɵdetectChanges, devModeEqual as ɵdevModeEqual, findLocaleData as ɵfindLocaleData, flushModuleScopingQueueAsMuchAsPossible as ɵflushModuleScopingQueueAsMuchAsPossible, formatRuntimeError as ɵformatRuntimeError, getDebugNode as ɵgetDebugNode, getDirectives as ɵgetDirectives, getHostElement as ɵgetHostElement, getInjectableDef as ɵgetInjectableDef, getLContext as ɵgetLContext, getLocaleCurrencyCode as ɵgetLocaleCurrencyCode, getLocalePluralCase as ɵgetLocalePluralCase, getSanitizationBypassType as ɵgetSanitizationBypassType, ɵgetUnknownElementStrictMode, ɵgetUnknownPropertyStrictMode, _global as ɵglobal, injectChangeDetectorRef as ɵinjectChangeDetectorRef, internalCreateApplication as ɵinternalCreateApplication, isBoundToModule as ɵisBoundToModule, isEnvironmentProviders as ɵisEnvironmentProviders, isInjectable as ɵisInjectable, isNgModule as ɵisNgModule, isPromise as ɵisPromise, isSubscribable as ɵisSubscribable, noSideEffects as ɵnoSideEffects, patchComponentDefWithScope as ɵpatchComponentDefWithScope, publishDefaultGlobalUtils$1 as ɵpublishDefaultGlobalUtils, publishGlobalUtil as ɵpublishGlobalUtil, registerLocaleData as ɵregisterLocaleData, resetCompiledComponents as ɵresetCompiledComponents, resetJitOptions as ɵresetJitOptions, resolveComponentResources as ɵresolveComponentResources, setAllowDuplicateNgModuleIdsForTest as ɵsetAllowDuplicateNgModuleIdsForTest, setAlternateWeakRefImpl as ɵsetAlternateWeakRefImpl, setClassMetadata as ɵsetClassMetadata, setCurrentInjector as ɵsetCurrentInjector, setDocument as ɵsetDocument, setInjectorProfilerContext as ɵsetInjectorProfilerContext, setLocaleId as ɵsetLocaleId, ɵsetUnknownElementStrictMode, ɵsetUnknownPropertyStrictMode, store as ɵstore, stringify as ɵstringify, transitiveScopesFor as ɵtransitiveScopesFor, unregisterAllLocaleData as ɵunregisterLocaleData, unwrapSafeValue as ɵunwrapSafeValue, withDomHydration as ɵwithDomHydration, ɵɵCopyDefinitionFeature, FactoryTarget as ɵɵFactoryTarget, ɵɵHostDirectivesFeature, ɵɵInheritDefinitionFeature, ɵɵInputTransformsFeature, ɵɵNgOnChangesFeature, ɵɵProvidersFeature, ɵɵStandaloneFeature, ɵɵadvance, ɵɵattribute, ɵɵattributeInterpolate1, ɵɵattributeInterpolate2, ɵɵattributeInterpolate3, ɵɵattributeInterpolate4, ɵɵattributeInterpolate5, ɵɵattributeInterpolate6, ɵɵattributeInterpolate7, ɵɵattributeInterpolate8, ɵɵattributeInterpolateV, ɵɵclassMap, ɵɵclassMapInterpolate1, ɵɵclassMapInterpolate2, ɵɵclassMapInterpolate3, ɵɵclassMapInterpolate4, ɵɵclassMapInterpolate5, ɵɵclassMapInterpolate6, ɵɵclassMapInterpolate7, ɵɵclassMapInterpolate8, ɵɵclassMapInterpolateV, ɵɵclassProp, ɵɵcontentQuery, ɵɵdefer, ɵɵdefineComponent, ɵɵdefineDirective, ɵɵdefineInjectable, ɵɵdefineInjector, ɵɵdefineNgModule, ɵɵdefinePipe, ɵɵdirectiveInject, ɵɵdisableBindings, ɵɵelement, ɵɵelementContainer, ɵɵelementContainerEnd, ɵɵelementContainerStart, ɵɵelementEnd, ɵɵelementStart, ɵɵenableBindings, ɵɵgetCurrentView, ɵɵgetInheritedFactory, ɵɵhostProperty, ɵɵi18n, ɵɵi18nApply, ɵɵi18nAttributes, ɵɵi18nEnd, ɵɵi18nExp, ɵɵi18nPostprocess, ɵɵi18nStart, ɵɵinject, ɵɵinjectAttribute, ɵɵinvalidFactory, ɵɵinvalidFactoryDep, ɵɵlistener, ɵɵloadQuery, ɵɵnamespaceHTML, ɵɵnamespaceMathML, ɵɵnamespaceSVG, ɵɵnextContext, ɵɵngDeclareClassMetadata, ɵɵngDeclareComponent, ɵɵngDeclareDirective, ɵɵngDeclareFactory, ɵɵngDeclareInjectable, ɵɵngDeclareInjector, ɵɵngDeclareNgModule, ɵɵngDeclarePipe, ɵɵpipe, ɵɵpipeBind1, ɵɵpipeBind2, ɵɵpipeBind3, ɵɵpipeBind4, ɵɵpipeBindV, ɵɵprojection, ɵɵprojectionDef, ɵɵproperty, ɵɵpropertyInterpolate, ɵɵpropertyInterpolate1, ɵɵpropertyInterpolate2, ɵɵpropertyInterpolate3, ɵɵpropertyInterpolate4, ɵɵpropertyInterpolate5, ɵɵpropertyInterpolate6, ɵɵpropertyInterpolate7, ɵɵpropertyInterpolate8, ɵɵpropertyInterpolateV, ɵɵpureFunction0, ɵɵpureFunction1, ɵɵpureFunction2, ɵɵpureFunction3, ɵɵpureFunction4, ɵɵpureFunction5, ɵɵpureFunction6, ɵɵpureFunction7, ɵɵpureFunction8, ɵɵpureFunctionV, ɵɵqueryRefresh, ɵɵreference, registerNgModuleType as ɵɵregisterNgModuleType, ɵɵresetView, ɵɵresolveBody, ɵɵresolveDocument, ɵɵresolveWindow, ɵɵrestoreView, ɵɵsanitizeHtml, ɵɵsanitizeResourceUrl, ɵɵsanitizeScript, ɵɵsanitizeStyle, ɵɵsanitizeUrl, ɵɵsanitizeUrlOrResourceUrl, ɵɵsetComponentScope, ɵɵsetNgModuleScope, ɵɵstyleMap, ɵɵstyleMapInterpolate1, ɵɵstyleMapInterpolate2, ɵɵstyleMapInterpolate3, ɵɵstyleMapInterpolate4, ɵɵstyleMapInterpolate5, ɵɵstyleMapInterpolate6, ɵɵstyleMapInterpolate7, ɵɵstyleMapInterpolate8, ɵɵstyleMapInterpolateV, ɵɵstyleProp, ɵɵstylePropInterpolate1, ɵɵstylePropInterpolate2, ɵɵstylePropInterpolate3, ɵɵstylePropInterpolate4, ɵɵstylePropInterpolate5, ɵɵstylePropInterpolate6, ɵɵstylePropInterpolate7, ɵɵstylePropInterpolate8, ɵɵstylePropInterpolateV, ɵɵsyntheticHostListener, ɵɵsyntheticHostProperty, ɵɵtemplate, ɵɵtemplateRefExtractor, ɵɵtext, ɵɵtextInterpolate, ɵɵtextInterpolate1, ɵɵtextInterpolate2, ɵɵtextInterpolate3, ɵɵtextInterpolate4, ɵɵtextInterpolate5, ɵɵtextInterpolate6, ɵɵtextInterpolate7, ɵɵtextInterpolate8, ɵɵtextInterpolateV, ɵɵtrustConstantHtml, ɵɵtrustConstantResourceUrl, ɵɵvalidateIframeAttribute, ɵɵviewQuery };
|
|
31650
|
+
export { ANIMATION_MODULE_TYPE, APP_BOOTSTRAP_LISTENER, APP_ID, APP_INITIALIZER, ApplicationInitStatus, ApplicationModule, ApplicationRef, Attribute, COMPILER_OPTIONS, CSP_NONCE, CUSTOM_ELEMENTS_SCHEMA, ChangeDetectionStrategy, ChangeDetectorRef, Compiler, CompilerFactory, Component, ComponentFactory$1 as ComponentFactory, ComponentFactoryResolver$1 as ComponentFactoryResolver, ComponentRef$1 as ComponentRef, ContentChild, ContentChildren, DEFAULT_CURRENCY_CODE, DebugElement, DebugEventListener, DebugNode, DefaultIterableDiffer, DestroyRef, Directive, ENVIRONMENT_INITIALIZER, ElementRef, EmbeddedViewRef, EnvironmentInjector, ErrorHandler, EventEmitter, Host, HostBinding, HostListener, INJECTOR, Inject, InjectFlags, Injectable, InjectionToken, Injector, Input, IterableDiffers, KeyValueDiffers, LOCALE_ID, MissingTranslationStrategy, ModuleWithComponentFactories, NO_ERRORS_SCHEMA, NgModule, NgModuleFactory$1 as NgModuleFactory, NgModuleRef$1 as NgModuleRef, NgProbeToken, NgZone, Optional, Output, PACKAGE_ROOT_URL, PLATFORM_ID, PLATFORM_INITIALIZER, Pipe, PlatformRef, Query, QueryList, Renderer2, RendererFactory2, RendererStyleFlags2, Sanitizer, SecurityContext, Self, SimpleChange, SkipSelf, TRANSLATIONS, TRANSLATIONS_FORMAT, TemplateRef, Testability, TestabilityRegistry, TransferState, Type, VERSION, Version, ViewChild, ViewChildren, ViewContainerRef, ViewEncapsulation$1 as ViewEncapsulation, ViewRef, afterNextRender, afterRender, asNativeElements, assertInInjectionContext, assertPlatform, booleanAttribute, computed, createComponent, createEnvironmentInjector, createNgModule, createNgModuleRef, createPlatform, createPlatformFactory, defineInjectable, destroyPlatform, effect, enableProdMode, forwardRef, getDebugNode, getModuleFactory, getNgModuleById, getPlatform, importProvidersFrom, inject, isDevMode, isSignal, isStandalone, makeEnvironmentProviders, makeStateKey, mergeApplicationConfig, numberAttribute, platformCore, provideZoneChangeDetection, reflectComponentType, resolveForwardRef, runInInjectionContext, setTestabilityGetter, signal, untracked, ALLOW_MULTIPLE_PLATFORMS as ɵALLOW_MULTIPLE_PLATFORMS, AfterRenderEventManager as ɵAfterRenderEventManager, ComponentFactory$1 as ɵComponentFactory, Console as ɵConsole, DEFAULT_LOCALE_ID as ɵDEFAULT_LOCALE_ID, ENABLED_SSR_FEATURES as ɵENABLED_SSR_FEATURES, INJECTOR_SCOPE as ɵINJECTOR_SCOPE, IS_HYDRATION_DOM_REUSE_ENABLED as ɵIS_HYDRATION_DOM_REUSE_ENABLED, InitialRenderPendingTasks as ɵInitialRenderPendingTasks, LContext as ɵLContext, LifecycleHooksFeature as ɵLifecycleHooksFeature, LocaleDataIndex as ɵLocaleDataIndex, NG_COMP_DEF as ɵNG_COMP_DEF, NG_DIR_DEF as ɵNG_DIR_DEF, NG_ELEMENT_ID as ɵNG_ELEMENT_ID, NG_INJ_DEF as ɵNG_INJ_DEF, NG_MOD_DEF as ɵNG_MOD_DEF, NG_PIPE_DEF as ɵNG_PIPE_DEF, NG_PROV_DEF as ɵNG_PROV_DEF, NOT_FOUND_CHECK_ONLY_ELEMENT_INJECTOR as ɵNOT_FOUND_CHECK_ONLY_ELEMENT_INJECTOR, NO_CHANGE as ɵNO_CHANGE, NgModuleFactory as ɵNgModuleFactory, NoopNgZone as ɵNoopNgZone, ReflectionCapabilities as ɵReflectionCapabilities, ComponentFactory as ɵRender3ComponentFactory, ComponentRef as ɵRender3ComponentRef, NgModuleRef as ɵRender3NgModuleRef, RuntimeError as ɵRuntimeError, SSR_CONTENT_INTEGRITY_MARKER as ɵSSR_CONTENT_INTEGRITY_MARKER, TESTABILITY as ɵTESTABILITY, TESTABILITY_GETTER as ɵTESTABILITY_GETTER, ViewRef$1 as ɵViewRef, XSS_SECURITY_URL as ɵXSS_SECURITY_URL, _sanitizeHtml as ɵ_sanitizeHtml, _sanitizeUrl as ɵ_sanitizeUrl, allowSanitizationBypassAndThrow as ɵallowSanitizationBypassAndThrow, annotateForHydration as ɵannotateForHydration, bypassSanitizationTrustHtml as ɵbypassSanitizationTrustHtml, bypassSanitizationTrustResourceUrl as ɵbypassSanitizationTrustResourceUrl, bypassSanitizationTrustScript as ɵbypassSanitizationTrustScript, bypassSanitizationTrustStyle as ɵbypassSanitizationTrustStyle, bypassSanitizationTrustUrl as ɵbypassSanitizationTrustUrl, clearResolutionOfComponentResourcesQueue as ɵclearResolutionOfComponentResourcesQueue, compileComponent as ɵcompileComponent, compileDirective as ɵcompileDirective, compileNgModule as ɵcompileNgModule, compileNgModuleDefs as ɵcompileNgModuleDefs, compileNgModuleFactory as ɵcompileNgModuleFactory, compilePipe as ɵcompilePipe, convertToBitFlags as ɵconvertToBitFlags, createInjector as ɵcreateInjector, defaultIterableDiffers as ɵdefaultIterableDiffers, defaultKeyValueDiffers as ɵdefaultKeyValueDiffers, detectChanges as ɵdetectChanges, devModeEqual as ɵdevModeEqual, findLocaleData as ɵfindLocaleData, flushModuleScopingQueueAsMuchAsPossible as ɵflushModuleScopingQueueAsMuchAsPossible, formatRuntimeError as ɵformatRuntimeError, getDebugNode as ɵgetDebugNode, getDirectives as ɵgetDirectives, getHostElement as ɵgetHostElement, getInjectableDef as ɵgetInjectableDef, getLContext as ɵgetLContext, getLocaleCurrencyCode as ɵgetLocaleCurrencyCode, getLocalePluralCase as ɵgetLocalePluralCase, getSanitizationBypassType as ɵgetSanitizationBypassType, ɵgetUnknownElementStrictMode, ɵgetUnknownPropertyStrictMode, _global as ɵglobal, injectChangeDetectorRef as ɵinjectChangeDetectorRef, internalCreateApplication as ɵinternalCreateApplication, isBoundToModule as ɵisBoundToModule, isEnvironmentProviders as ɵisEnvironmentProviders, isInjectable as ɵisInjectable, isNgModule as ɵisNgModule, isPromise as ɵisPromise, isSubscribable as ɵisSubscribable, noSideEffects as ɵnoSideEffects, patchComponentDefWithScope as ɵpatchComponentDefWithScope, publishDefaultGlobalUtils$1 as ɵpublishDefaultGlobalUtils, publishGlobalUtil as ɵpublishGlobalUtil, registerLocaleData as ɵregisterLocaleData, resetCompiledComponents as ɵresetCompiledComponents, resetJitOptions as ɵresetJitOptions, resolveComponentResources as ɵresolveComponentResources, setAllowDuplicateNgModuleIdsForTest as ɵsetAllowDuplicateNgModuleIdsForTest, setAlternateWeakRefImpl as ɵsetAlternateWeakRefImpl, setClassMetadata as ɵsetClassMetadata, setCurrentInjector as ɵsetCurrentInjector, setDocument as ɵsetDocument, setInjectorProfilerContext as ɵsetInjectorProfilerContext, setLocaleId as ɵsetLocaleId, ɵsetUnknownElementStrictMode, ɵsetUnknownPropertyStrictMode, store as ɵstore, stringify as ɵstringify, transitiveScopesFor as ɵtransitiveScopesFor, unregisterAllLocaleData as ɵunregisterLocaleData, unwrapSafeValue as ɵunwrapSafeValue, withDomHydration as ɵwithDomHydration, ɵɵCopyDefinitionFeature, FactoryTarget as ɵɵFactoryTarget, ɵɵHostDirectivesFeature, ɵɵInheritDefinitionFeature, ɵɵInputTransformsFeature, ɵɵNgOnChangesFeature, ɵɵProvidersFeature, ɵɵStandaloneFeature, ɵɵadvance, ɵɵattribute, ɵɵattributeInterpolate1, ɵɵattributeInterpolate2, ɵɵattributeInterpolate3, ɵɵattributeInterpolate4, ɵɵattributeInterpolate5, ɵɵattributeInterpolate6, ɵɵattributeInterpolate7, ɵɵattributeInterpolate8, ɵɵattributeInterpolateV, ɵɵclassMap, ɵɵclassMapInterpolate1, ɵɵclassMapInterpolate2, ɵɵclassMapInterpolate3, ɵɵclassMapInterpolate4, ɵɵclassMapInterpolate5, ɵɵclassMapInterpolate6, ɵɵclassMapInterpolate7, ɵɵclassMapInterpolate8, ɵɵclassMapInterpolateV, ɵɵclassProp, ɵɵcontentQuery, ɵɵdefer, ɵɵdefineComponent, ɵɵdefineDirective, ɵɵdefineInjectable, ɵɵdefineInjector, ɵɵdefineNgModule, ɵɵdefinePipe, ɵɵdirectiveInject, ɵɵdisableBindings, ɵɵelement, ɵɵelementContainer, ɵɵelementContainerEnd, ɵɵelementContainerStart, ɵɵelementEnd, ɵɵelementStart, ɵɵenableBindings, ɵɵgetCurrentView, ɵɵgetInheritedFactory, ɵɵhostProperty, ɵɵi18n, ɵɵi18nApply, ɵɵi18nAttributes, ɵɵi18nEnd, ɵɵi18nExp, ɵɵi18nPostprocess, ɵɵi18nStart, ɵɵinject, ɵɵinjectAttribute, ɵɵinvalidFactory, ɵɵinvalidFactoryDep, ɵɵlistener, ɵɵloadQuery, ɵɵnamespaceHTML, ɵɵnamespaceMathML, ɵɵnamespaceSVG, ɵɵnextContext, ɵɵngDeclareClassMetadata, ɵɵngDeclareComponent, ɵɵngDeclareDirective, ɵɵngDeclareFactory, ɵɵngDeclareInjectable, ɵɵngDeclareInjector, ɵɵngDeclareNgModule, ɵɵngDeclarePipe, ɵɵpipe, ɵɵpipeBind1, ɵɵpipeBind2, ɵɵpipeBind3, ɵɵpipeBind4, ɵɵpipeBindV, ɵɵprojection, ɵɵprojectionDef, ɵɵproperty, ɵɵpropertyInterpolate, ɵɵpropertyInterpolate1, ɵɵpropertyInterpolate2, ɵɵpropertyInterpolate3, ɵɵpropertyInterpolate4, ɵɵpropertyInterpolate5, ɵɵpropertyInterpolate6, ɵɵpropertyInterpolate7, ɵɵpropertyInterpolate8, ɵɵpropertyInterpolateV, ɵɵpureFunction0, ɵɵpureFunction1, ɵɵpureFunction2, ɵɵpureFunction3, ɵɵpureFunction4, ɵɵpureFunction5, ɵɵpureFunction6, ɵɵpureFunction7, ɵɵpureFunction8, ɵɵpureFunctionV, ɵɵqueryRefresh, ɵɵreference, registerNgModuleType as ɵɵregisterNgModuleType, ɵɵresetView, ɵɵresolveBody, ɵɵresolveDocument, ɵɵresolveWindow, ɵɵrestoreView, ɵɵsanitizeHtml, ɵɵsanitizeResourceUrl, ɵɵsanitizeScript, ɵɵsanitizeStyle, ɵɵsanitizeUrl, ɵɵsanitizeUrlOrResourceUrl, ɵɵsetComponentScope, ɵɵsetNgModuleScope, ɵɵstyleMap, ɵɵstyleMapInterpolate1, ɵɵstyleMapInterpolate2, ɵɵstyleMapInterpolate3, ɵɵstyleMapInterpolate4, ɵɵstyleMapInterpolate5, ɵɵstyleMapInterpolate6, ɵɵstyleMapInterpolate7, ɵɵstyleMapInterpolate8, ɵɵstyleMapInterpolateV, ɵɵstyleProp, ɵɵstylePropInterpolate1, ɵɵstylePropInterpolate2, ɵɵstylePropInterpolate3, ɵɵstylePropInterpolate4, ɵɵstylePropInterpolate5, ɵɵstylePropInterpolate6, ɵɵstylePropInterpolate7, ɵɵstylePropInterpolate8, ɵɵstylePropInterpolateV, ɵɵsyntheticHostListener, ɵɵsyntheticHostProperty, ɵɵtemplate, ɵɵtemplateRefExtractor, ɵɵtext, ɵɵtextInterpolate, ɵɵtextInterpolate1, ɵɵtextInterpolate2, ɵɵtextInterpolate3, ɵɵtextInterpolate4, ɵɵtextInterpolate5, ɵɵtextInterpolate6, ɵɵtextInterpolate7, ɵɵtextInterpolate8, ɵɵtextInterpolateV, ɵɵtrustConstantHtml, ɵɵtrustConstantResourceUrl, ɵɵvalidateIframeAttribute, ɵɵviewQuery };
|
|
31491
31651
|
//# sourceMappingURL=core.mjs.map
|