@nativescript/angular 21.0.1-alpha.9 → 21.2.0-rc.0

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.
@@ -1,14 +1,14 @@
1
1
  import * as _nativescript_core from '@nativescript/core';
2
2
  import { View, ContentView, LayoutBase, IDevice, Page, Device, GridLayout, Color, Frame, ActionItem, NavigationButton, ListView, ObservableArray, Template, CoreTypes, ItemEventData, TabView, NavigatedData, ViewBase, RootLayout, ShowModalOptions, NavigationTransition, Folder, File, Switch, DatePicker, TimePicker, Slider, KeyframeAnimation } from '@nativescript/core';
3
3
  import * as i0 from '@angular/core';
4
- import { InjectionToken, EmbeddedViewRef, ComponentRef, NgModuleRef, ApplicationRef, Provider, EnvironmentProviders, PlatformRef, ɵNgModuleFactory as _NgModuleFactory, Type, CompilerOptions, NgZone, Injector, NgModuleFactory, StaticProvider, Sanitizer, ApplicationConfig as ApplicationConfig$1, ViewContainerRef, ComponentFactoryResolver, TemplateRef, ElementRef, OnInit, OnDestroy, Renderer2, EventEmitter, ChangeDetectorRef, ComponentFactory, AfterViewInit, OnChanges, SimpleChanges, DoCheck, AfterContentInit, IterableDiffer, IterableDiffers, ErrorHandler, RendererStyleFlags2, RendererType2, RendererFactory2, QueryList, EnvironmentInjector, ModuleWithProviders, NgZoneOptions } from '@angular/core';
4
+ import { InjectionToken, EmbeddedViewRef, ComponentRef, NgModuleRef, ApplicationRef, Provider, EnvironmentProviders, PlatformRef, ɵNgModuleFactory as _NgModuleFactory, Type, CompilerOptions, NgZone, Injector, NgModuleFactory, StaticProvider, Sanitizer, ApplicationConfig as ApplicationConfig$1, ViewContainerRef, ComponentFactoryResolver, TemplateRef, ElementRef, OnInit, OnDestroy, Renderer2, EventEmitter, ChangeDetectorRef, ComponentFactory, AfterViewInit, OnChanges, SimpleChanges, DoCheck, AfterContentInit, IterableDiffer, IterableDiffers, ErrorHandler, RendererStyleFlags2, RendererType2, RendererFactory2, EnvironmentInjector, QueryList, ModuleWithProviders, NgZoneOptions } from '@angular/core';
5
5
  import * as _nativescript_angular from '@nativescript/angular';
6
6
  import * as rxjs from 'rxjs';
7
- import { Observable, ReplaySubject, Subject, BehaviorSubject } from 'rxjs';
7
+ import { Observable, Subject, BehaviorSubject } from 'rxjs';
8
8
  import * as i1 from '@angular/common';
9
9
  import { LocationStrategy, XhrFactory } from '@angular/common';
10
10
  import * as i1$2 from '@angular/router';
11
- import { Params, UrlSegmentGroup, ActivatedRouteSnapshot, RouteReuseStrategy, DetachedRouteHandle, Router, NavigationExtras, UrlTree, NavigationBehaviorOptions, ActivatedRoute, RouterOutletContract, Data, Routes, ExtraOptions, RouterFeatures } from '@angular/router';
11
+ import { Params, UrlSegmentGroup, ActivatedRouteSnapshot, RouteReuseStrategy, DetachedRouteHandle, RouterOutletContract, ActivatedRoute, Data, QueryParamsHandling, UrlTree, IsActiveMatchOptions, Router, NavigationExtras, NavigationBehaviorOptions, Routes, ExtraOptions, RouterFeatures } from '@angular/router';
12
12
  import * as i1$1 from '@angular/forms';
13
13
  import { ControlValueAccessor } from '@angular/forms';
14
14
  import { AnimationDriver, ɵAnimationEngine as _AnimationEngine, ɵAnimationStyleNormalizer as _AnimationStyleNormalizer, ɵWebAnimationsStyleNormalizer as _WebAnimationsStyleNormalizer } from '@angular/animations/browser';
@@ -172,17 +172,7 @@ type NgModuleEvent = {
172
172
  reason: NgModuleReason | string;
173
173
  };
174
174
  declare const preAngularDisposal$: Subject<NgModuleEvent>;
175
- /**
176
- * Stream that emits when an Angular module finishes bootstrapping. Modeled
177
- * as a `ReplaySubject(1)` so consumers (e.g. `NativeDialog`) instantiated
178
- * lazily — *after* the bootstrap event has already fired — still receive
179
- * the latest event and can react. Without buffering, a service that the
180
- * user app injects on first need (after bootstrap) would silently miss the
181
- * `hotreload` notification and skip HMR-only work like restoring captured
182
- * modal state. The buffer size of 1 means each new HMR cycle replaces the
183
- * cached event so cycle N's late subscribers don't see cycle N-1's event.
184
- */
185
- declare const postAngularBootstrap$: ReplaySubject<NgModuleEvent>;
175
+ declare const postAngularBootstrap$: Subject<NgModuleEvent>;
186
176
  /**
187
177
  * @deprecated
188
178
  */
@@ -307,7 +297,11 @@ declare class NativeScriptDocument {
307
297
  }
308
298
  declare const COMMON_PROVIDERS: StaticProvider[];
309
299
  declare const platformNativeScript: (extraProviders?: StaticProvider[]) => PlatformRef;
300
+ interface BootstrapContext {
301
+ platformRef?: PlatformRef;
302
+ }
310
303
  declare function bootstrapApplication(rootComponent: Type<any>, options?: ApplicationConfig$1): Promise<i0.ApplicationRef>;
304
+ declare function createApplication(options?: ApplicationConfig$1, context?: BootstrapContext): Promise<i0.ApplicationRef>;
311
305
  interface HmrOptions {
312
306
  /**
313
307
  * A factory function that returns either Module type or NgModuleFactory type.
@@ -1077,6 +1071,11 @@ declare class NativeDialogConfig<D = any> {
1077
1071
  * content will be rendered.
1078
1072
  */
1079
1073
  viewContainerRef?: ViewContainerRef;
1074
+ /**
1075
+ * Injector used for the instantiation of the component to be attached. If provided,
1076
+ * takes precedence over the injector indirectly provided by `ViewContainerRef`.
1077
+ */
1078
+ injector?: Injector;
1080
1079
  /** Where to render the actual dialog in. By default it renders using the native view of the ViewContainerRef */
1081
1080
  renderIn?: 'root' | 'viewContainerRef' | View;
1082
1081
  /** ID for the dialog. If omitted, a unique one will be generated. */
@@ -1093,25 +1092,11 @@ declare class NativeDialogConfig<D = any> {
1093
1092
  * the `HashLocationStrategy`).
1094
1093
  */
1095
1094
  closeOnNavigation?: boolean;
1096
- /** Alternate `ComponentFactoryResolver` to use when resolving the associated component. */
1095
+ /** Alternate `ComponentFactoryResolver` to use when resolving the associated component.
1096
+ * @deprecated
1097
+ */
1097
1098
  componentFactoryResolver?: ComponentFactoryResolver;
1098
1099
  nativeOptions?: NativeShowModalOptions;
1099
- /**
1100
- * When true, this dialog will be re-opened automatically on Angular HMR
1101
- * reboots so the user does not lose context every time a related file
1102
- * changes. The new dialog reuses the same component class and `data` payload
1103
- * (provided via `data`); other config such as `nativeOptions` is preserved
1104
- * verbatim.
1105
- *
1106
- * The original `dialogRef.afterClosed()` subject is wired to the restored
1107
- * dialog so consumers `await openModal(...)` resolve normally when the user
1108
- * eventually closes the restored modal.
1109
- *
1110
- * Only opens via component class are restorable — `TemplateRef` openings
1111
- * carry references that don't survive an HMR reboot and are silently
1112
- * skipped. Has no effect outside of HMR.
1113
- */
1114
- preserveOnHmr?: boolean;
1115
1100
  }
1116
1101
 
1117
1102
  declare class FrameService {
@@ -1166,12 +1151,6 @@ declare class NSLocationStrategy extends LocationStrategy implements OnDestroy {
1166
1151
  _modalNavigationDepth: number;
1167
1152
  constructor(frameService: FrameService, startPath?: string);
1168
1153
  getState(): unknown;
1169
- resetForHmr(): {
1170
- outlets: number;
1171
- states: number;
1172
- callbacks: number;
1173
- hadUrlTree: boolean;
1174
- };
1175
1154
  path(): string;
1176
1155
  prepareExternalUrl(internal: string): string;
1177
1156
  pushState(state: any, title: string, url: string, queryParams: string): void;
@@ -1223,16 +1202,6 @@ declare class NativeModalRef {
1223
1202
  portalOutlet: NativeScriptDomPortalOutlet;
1224
1203
  detachedLoaderRef: ComponentRef<DetachedLoader>;
1225
1204
  modalViewRef: NgViewRef<any>;
1226
- /**
1227
- * The actual NativeScript view passed to `parentView.showModal(...)`.
1228
- *
1229
- * For component portals this is the stable `targetView` ContentView
1230
- * wrapper that owns the Angular host PVC. For template portals it
1231
- * remains `modalViewRef.firstNativeLikeView` (the historical
1232
- * behavior). Keeping a direct reference avoids walking parent
1233
- * chains when programmatically closing the modal.
1234
- */
1235
- modalView?: View;
1236
1205
  private _closeCallback;
1237
1206
  private _isDismissed;
1238
1207
  constructor(_config: NativeDialogConfig, _injector: Injector, location?: NSLocationStrategy);
@@ -1321,24 +1290,9 @@ declare const NATIVE_DIALOG_DEFAULT_OPTIONS: InjectionToken<NativeDialogConfig<a
1321
1290
  * for arbitrary dialog refs and dialog container components.
1322
1291
  */
1323
1292
  declare class NativeDialog implements OnDestroy {
1324
- /**
1325
- * Diagnostic instance id. We tag each constructor with a number so
1326
- * the logs make it obvious when a stale `NativeDialog` keeps
1327
- * receiving events after a reboot (e.g. due to a leaked subscription
1328
- * or a service from a previous realm being kept alive).
1329
- */
1330
- private readonly _diagInstanceId;
1331
1293
  private _openDialogsAtThisLevel;
1332
1294
  private readonly _afterAllClosedAtThisLevel;
1333
1295
  private readonly _afterOpenedAtThisLevel;
1334
- /**
1335
- * Maps each open dialog ref back to the `(componentClass, config)` pair it
1336
- * was opened with so the HMR snapshot can replay the call later. Dialogs
1337
- * opened with a `TemplateRef` are tracked with `componentClass: undefined`
1338
- * — the HMR layer skips them automatically.
1339
- */
1340
- private readonly _openDialogMetadata;
1341
- private _hmrSubscriptions;
1342
1296
  /**
1343
1297
  * Stream that emits when all open dialog have finished closing.
1344
1298
  * Will emit on subscribe if there are no open dialogs to begin with.
@@ -1356,8 +1310,6 @@ declare class NativeDialog implements OnDestroy {
1356
1310
  private _nativeModalType;
1357
1311
  private _dialogDataToken;
1358
1312
  private locationStrategy;
1359
- private _diagInstanceIdAssign;
1360
- private _hmrInitMarker;
1361
1313
  /**
1362
1314
  * Opens a modal dialog containing the given component.
1363
1315
  * @param component Type of the component to load into the dialog.
@@ -1383,128 +1335,6 @@ declare class NativeDialog implements OnDestroy {
1383
1335
  */
1384
1336
  getDialogById(id: string): NativeDialogRef<any> | undefined;
1385
1337
  ngOnDestroy(): void;
1386
- /**
1387
- * Tracks whether a restore has already been scheduled for this
1388
- * `NativeDialog` instance's lifetime. We only need to restore once
1389
- * per HMR cycle — the rxjs `ReplaySubject(1)` for
1390
- * `postAngularBootstrap$` delivers both the *previous* cycle's
1391
- * cached event (replay on subscribe) **and** the *current* cycle's
1392
- * fresh event, and the constructor stash peek can independently
1393
- * notice pending work. Without this guard each of those triggers
1394
- * would queue its own `setTimeout` and the logs would show two or
1395
- * three "scheduling restore" lines per save.
1396
- *
1397
- * The guard is per-instance and the stash itself is the source of
1398
- * truth: `_restorePendingDialogs` calls `consumePendingHmrDialogs()`
1399
- * which atomically clears the stash, so even if the guard somehow
1400
- * fired twice, only the first call would do real work.
1401
- */
1402
- private _restoreScheduledForThisInstance;
1403
- /**
1404
- * Wires up HMR capture/restore. Only the root-level dialog manages the
1405
- * stash so a stack of `NativeDialog` instances inside a child injector
1406
- * doesn't fight for it.
1407
- *
1408
- * Production short-circuit: `isAngularHmrEnabled()` returns `false` in
1409
- * release builds and when no NS Vite / webpack HMR runtime is present,
1410
- * so the long-lived subscriptions below never attach in shipping apps.
1411
- *
1412
- * `postAngularBootstrap$` is a `ReplaySubject(1)` (see `application.ts`)
1413
- * which means a `NativeDialog` instantiated *after* the bootstrap event
1414
- * has already fired (typical when the user app injects `NativeDialog`
1415
- * lazily via a service like `view.service.ts`) still receives the
1416
- * buffered event and runs the restore path.
1417
- */
1418
- private _initHmrLifecycle;
1419
- /**
1420
- * Schedule a restore exactly once per `NativeDialog` instance.
1421
- *
1422
- * The work is deferred to the next macrotask for two reasons:
1423
- *
1424
- * 1. `postAngularBootstrap$.next(...)` is fired from inside
1425
- * `emitModuleBootstrapEvent`, which itself runs inside the
1426
- * `bootstrapApplication` callback — so the call stack still
1427
- * contains Angular's ApplicationRef bootstrap pipeline. Doing
1428
- * `this.open(...)` synchronously re-entered Angular DI while a
1429
- * `providedIn: 'root'` factory could still be on the resolution
1430
- * stack, which surfaced as `NG0200: Circular dependency detected
1431
- * for NativeDialog`. Yielding to a macrotask lets the bootstrap
1432
- * stack fully unwind first.
1433
- * 2. The eventual `parent.showModal(...)` cannot present onto a
1434
- * view controller whose view is not yet in the iOS window
1435
- * hierarchy (see `_scheduleRestoreOpenWhenReady` for the second
1436
- * wait stage); a synchronous attempt would silently no-op
1437
- * because iOS rejects the present without throwing.
1438
- */
1439
- private _maybeScheduleRestore;
1440
- private _captureOpenDialogsForHmr;
1441
- /**
1442
- * Per-cycle guard to keep `_restorePendingDialogs` idempotent if more
1443
- * than one subscriber fires for the same bootstrap event. The
1444
- * regression we have seen (`postAngularBootstrap$ → restore` logged
1445
- * twice in the same hot reload) was caused by the `NativeDialogModule`
1446
- * also listing `NativeDialog` in its `providers` array. That has been
1447
- * removed, but we keep this flag as a defensive net so a future stray
1448
- * subscription does not consume the stash twice. The flag is reset
1449
- * after the consume so subsequent HMR cycles can run their own
1450
- * restore.
1451
- */
1452
- private _restoreInFlight;
1453
- private _restorePendingDialogs;
1454
- /**
1455
- * Resolve the freshest known class object for the captured component
1456
- * name and re-open the dialog through the normal `open` path, but
1457
- * only once the new root view is actually attached to the iOS window
1458
- * hierarchy.
1459
- *
1460
- * Why a class lookup at all: an HMR reboot calls
1461
- * `ɵresetCompiledComponents()` which clears each component's `ɵcmp`
1462
- * field but **leaves the class identity unchanged**. The patched
1463
- * `ɵɵdefineComponent` then re-registers the same class object under
1464
- * the same source name when Angular re-renders the component. A
1465
- * fresh-class lookup therefore returns either the same object the
1466
- * stash captured (most common) or, on the rare occasion that the
1467
- * source file's `@Component` decorator was re-evaluated into a brand
1468
- * new class object (e.g. the user added `@Component(...)` to a new
1469
- * exported symbol), the live one. Either way, a single check is
1470
- * enough — the previous retry schedule was a no-op in 100 % of
1471
- * observed cycles because the captured class IS the live class.
1472
- */
1473
- private _restoreSingleDialog;
1474
- /**
1475
- * Maximum time we'll wait for the new root view to attach to the
1476
- * iOS window before giving up and trying the open anyway. NS Vite's
1477
- * worst observed reboot-to-rootview-loaded gap is ~250 ms; one
1478
- * second leaves headroom for slower devices without leaving the
1479
- * captured dialog stuck in the stash if something genuinely goes
1480
- * wrong.
1481
- */
1482
- private static readonly _ROOT_VIEW_LOADED_TIMEOUT_MS;
1483
- /**
1484
- * Defer the actual `this.open(...)` call until the new root view's
1485
- * underlying iOS `UIViewController.view` is in the window hierarchy.
1486
- *
1487
- * iOS silently rejects `presentViewControllerAnimatedCompletion` if
1488
- * the parent controller's view is not yet attached to a `UIWindow`
1489
- * (see `view/index.ios.ts::_showNativeModalView`, which logs to
1490
- * `Trace` and returns without throwing). In dev that would surface
1491
- * as a vanished modal with no actionable error.
1492
- *
1493
- * NS marks a view as `isLoaded === true` from
1494
- * `UILayoutViewController.viewWillAppear`, which fires once iOS has
1495
- * decided to add the view to its window. Listening for the
1496
- * `loadedEvent` (one-shot) plus an extra macrotask gives UIKit a
1497
- * chance to finish window attachment before we present.
1498
- */
1499
- private _scheduleRestoreOpenWhenReady;
1500
- private _pollForRootView;
1501
- private _performRestoreOpen;
1502
- /**
1503
- * Test/debug helper: discard any captured modals without restoring them.
1504
- * Mostly useful when projects want to opt out of restoration without
1505
- * recompiling. Public callers should prefer `preserveOnHmr: false` instead.
1506
- */
1507
- static _clearPendingHmrDialogs(): void;
1508
1338
  /**
1509
1339
  * Attaches the user-provided component to the already-created dialog container.
1510
1340
  * @param componentOrTemplateRef The type of component being loaded into the dialog,
@@ -1560,32 +1390,6 @@ declare class NativeDialogCloseDirective implements OnInit, OnChanges {
1560
1390
  static ɵdir: i0.ɵɵDirectiveDeclaration<NativeDialogCloseDirective, "[native-dialog-close], [nativeDialogClose]", ["nativeDialogClose"], { "dialogResult": { "alias": "native-dialog-close"; "required": false; }; "_matDialogClose": { "alias": "nativeDialogClose"; "required": false; }; }, {}, never, never, true, never>;
1561
1391
  }
1562
1392
 
1563
- /**
1564
- * Convenience module that re-exports the `NativeDialogCloseDirective` for
1565
- * template-driven `[nativeDialogClose]` usage.
1566
- *
1567
- * **Important**: `NativeDialog` itself is **not** listed in this module's
1568
- * `providers` array. The service is `@Injectable({ providedIn: 'root' })`,
1569
- * which already registers a single root-level instance and is fully
1570
- * tree-shakeable. Listing it here as well caused Angular to treat the
1571
- * module-level provider and the `providedIn: 'root'` factory as
1572
- * *separate* registrations once the module was pulled into a standalone
1573
- * app via `importProvidersFrom(NativeDialogModule, ...)`. The duplicate
1574
- * registration triggered:
1575
- *
1576
- * - Two `NativeDialog` instances in the same root environment injector,
1577
- * each subscribing to `postAngularBootstrap$`, which produced
1578
- * duplicate restore attempts during HMR.
1579
- * - `NG0200: Circular dependency detected for NativeDialog` while a
1580
- * captured modal was being re-opened during HMR restore, because the
1581
- * second resolution started while the first was still in progress.
1582
- *
1583
- * Removing the redundant entry collapses both providers back into a
1584
- * single root-level instance, which is what `providedIn: 'root'`
1585
- * documents. App authors who explicitly wire `NativeDialog` themselves
1586
- * (e.g. in a feature module's `providers`) keep working unchanged
1587
- * because they're targeting the same class symbol.
1588
- */
1589
1393
  declare class NativeDialogModule {
1590
1394
  static ɵfac: i0.ɵɵFactoryDeclaration<NativeDialogModule, never>;
1591
1395
  static ɵmod: i0.ɵɵNgModuleDeclaration<NativeDialogModule, never, [typeof NativeDialogCloseDirective], [typeof NativeDialogCloseDirective]>;
@@ -1651,344 +1455,6 @@ declare function generateNativeScriptView<T>(typeOrTemplate: Type<T> | TemplateR
1651
1455
  detachedLoaderRef?: ComponentRef<DetachedLoader>;
1652
1456
  }): NgViewRef<T>;
1653
1457
 
1654
- /**
1655
- * Framework-agnostic Hot-Module-Replacement state cache.
1656
- *
1657
- * The {@link HmrCacheStore} class is intentionally free of any Angular
1658
- * imports so a future `@nativescript/solid` (or any other framework
1659
- * binding) can lift this file as-is and wrap it with its own DI
1660
- * primitive. The Angular DI wrapper lives in
1661
- * `./hmr-cache.service.ts`.
1662
- *
1663
- * # What it does
1664
- *
1665
- * The NativeScript iOS runtime exposes a Vite-spec compliant
1666
- * `import.meta.hot` on every imported module (see
1667
- * `@nativescript/ios` →
1668
- * `runtime/HMRSupport.{h,mm}::InitializeImportMetaHot`). The runtime
1669
- * keeps a per-module persistent `data` object alive in C++ across V8
1670
- * evaluation cycles and canonicalizes the module path so the same
1671
- * bucket survives the URL variations Vite cycles through during a
1672
- * save (HMR boot/live tags, versioned bridge paths, common script
1673
- * extensions). When `@nativescript/vite`'s Angular HMR client calls
1674
- * `globalThis.__nsRunHmrDispose()` before `__reboot_ng_modules__`,
1675
- * every registered `dispose(cb)` fires and is handed the same `data`
1676
- * object the next module evaluation will read from.
1677
- *
1678
- * `HmrCacheStore` rides on top of that primitive:
1679
- *
1680
- * 1. On construction, it copies any previously-stashed entries out
1681
- * of `import.meta.hot.data['ns-hmr-cache']` (or whatever
1682
- * `storageKey` the caller picked) into an in-memory `Map`.
1683
- * 2. It registers a single `import.meta.hot.dispose` callback that
1684
- * writes the in-memory `Map` back as a plain object before the
1685
- * next reboot.
1686
- * 3. Every `set` re-orders the key to the end of the `Map` (LRU);
1687
- * when `size > maxEntries`, the oldest entry is evicted. This
1688
- * stops a long dev session from accumulating unbounded state for
1689
- * features the developer no longer touches.
1690
- * 4. It subscribes to a custom HMR event (default
1691
- * `'ns:cache-invalidate'`) so a Vite plugin or dev server can
1692
- * push targeted cache evictions — e.g. "the OData schema for
1693
- * `/safety/forms` changed, drop anything that depends on it".
1694
- *
1695
- * In production / `--no-hmr` builds `import.meta.hot` is `undefined`,
1696
- * the store collapses to a pure in-memory cache that lives for the
1697
- * lifetime of the process, and the public API is identical so callers
1698
- * never need to special-case build modes.
1699
- *
1700
- * # Why a class and not a plain object
1701
- *
1702
- * Encapsulating the LRU bookkeeping behind named methods (`get`,
1703
- * `set`, `invalidate`, `scope`) lets us evolve the eviction policy
1704
- * (e.g. add TTLs, weighted entries, structured-clone enforcement)
1705
- * without touching every call site. The framework wrappers expose
1706
- * the same surface so app authors learn one API regardless of which
1707
- * framework they use.
1708
- */
1709
- interface HmrCacheStoreOptions {
1710
- /**
1711
- * Maximum number of entries to keep before LRU-evicting the
1712
- * oldest. Set to `0` (or any non-positive number) for unlimited.
1713
- * Default: `256`.
1714
- *
1715
- * Sized for the empirical "depth of features a developer touches in
1716
- * one dev session" — large enough that a working set of ~30 pages,
1717
- * each with a handful of cached fields, never trips eviction during
1718
- * normal hacking; small enough that a runaway producer (e.g. a
1719
- * scroll-driven loop that mints new keys) gets capped instead of
1720
- * leaking memory until the simulator OOMs.
1721
- */
1722
- maxEntries?: number;
1723
- /**
1724
- * Key under which the cache is stashed on `import.meta.hot.data`.
1725
- * Apps that run multiple isolated cache stores (e.g. a feature-
1726
- * isolation plugin) can pick distinct keys to keep their state
1727
- * separate. Default: `'ns-hmr-cache'`.
1728
- */
1729
- storageKey?: string;
1730
- /**
1731
- * Custom HMR event name the store listens for. Payload schema:
1732
- *
1733
- * ```ts
1734
- * { key?: string }
1735
- * ```
1736
- *
1737
- * If `key` is provided, only that entry is dropped. If omitted, the
1738
- * entire cache is cleared. A Vite plugin sends events via the dev
1739
- * server's WebSocket (Vite spec
1740
- * [`server.ws.send`](https://vite.dev/guide/api-plugin.html#server-ws-send-and-server-ws-on));
1741
- * the runtime's `__NS_DISPATCH_HOT_EVENT__` then forwards them to
1742
- * every `import.meta.hot.on` listener. Default:
1743
- * `'ns:cache-invalidate'`.
1744
- */
1745
- invalidateEventName?: string;
1746
- /**
1747
- * Optional logger for diagnostic output. The store calls this with
1748
- * a single string per significant event (rehydrate, dispose, LRU
1749
- * evict, server-side invalidate). Default: no-op.
1750
- */
1751
- log?: (message: string) => void;
1752
- }
1753
- /**
1754
- * A namespaced view of an {@link HmrCacheStore}. Keys are
1755
- * automatically prefixed with `<scope>:`, so callers don't have to
1756
- * negotiate global key names. Returned by {@link HmrCacheStore.scope}.
1757
- */
1758
- interface HmrCacheScope {
1759
- readonly prefix: string;
1760
- get<T>(key: string): T | undefined;
1761
- set<T>(key: string, value: T): void;
1762
- has(key: string): boolean;
1763
- delete(key: string): void;
1764
- /** Drop every entry whose key starts with this scope's prefix. */
1765
- clear(): void;
1766
- /** Number of entries owned by this scope. */
1767
- size(): number;
1768
- }
1769
- declare class HmrCacheStore {
1770
- private readonly _map;
1771
- private readonly _maxEntries;
1772
- private readonly _log;
1773
- /**
1774
- * @param initialEntries Entries to seed the store with (typically
1775
- * the previous session's snapshot read from
1776
- * `import.meta.hot.data`).
1777
- * @param options See {@link HmrCacheStoreOptions}.
1778
- */
1779
- constructor(initialEntries?: Iterable<[string, unknown]>, options?: HmrCacheStoreOptions);
1780
- get<T>(key: string): T | undefined;
1781
- set<T>(key: string, value: T): void;
1782
- has(key: string): boolean;
1783
- delete(key: string): void;
1784
- /**
1785
- * Drop a specific entry, or every entry when `key` is omitted.
1786
- * Equivalent to {@link delete} (with key) or {@link clear} (without)
1787
- * — exposed as a single method so callers and event handlers can
1788
- * forward an optional key without branching.
1789
- */
1790
- invalidate(key?: string): void;
1791
- /** Drop every cached entry. */
1792
- clear(): void;
1793
- /** Total number of cached entries across all scopes. */
1794
- size(): number;
1795
- /** Snapshot of every key currently in the cache. */
1796
- keys(): string[];
1797
- /**
1798
- * Returns a namespaced view of this store. All keys passed to the
1799
- * returned object are auto-prefixed with `<prefix>:`. Useful so
1800
- * each feature module can avoid stomping on neighbours' keys
1801
- * without repeating the prefix at every call site.
1802
- *
1803
- * @example
1804
- * ```ts
1805
- * const cache = createDefaultHmrCacheStore();
1806
- * const submissions = cache.scope('page-my-submissions');
1807
- * submissions.set('items', [...]); // stored under 'page-my-submissions:items'
1808
- * ```
1809
- */
1810
- scope(prefix: string): HmrCacheScope;
1811
- /**
1812
- * Serialize every entry into a plain object suitable for stashing
1813
- * on `import.meta.hot.data`. Used by the dispose callback in
1814
- * {@link createDefaultHmrCacheStore} and re-exported for callers
1815
- * that want to integrate with another persistence layer (e.g. a
1816
- * test harness that snapshots between cases).
1817
- */
1818
- toObject(): Record<string, unknown>;
1819
- private _enforceMaxEntries;
1820
- }
1821
- /**
1822
- * Build an {@link HmrCacheStore} bound to the current module's
1823
- * `import.meta.hot` context — i.e. the store's data survives HMR
1824
- * reboots and listens for the `'ns:cache-invalidate'` custom event.
1825
- *
1826
- * Caller responsibility: invoke this from the module that "owns" the
1827
- * cache. `import.meta` is per-module, so the dispose callback will be
1828
- * registered against whichever module physically calls this function.
1829
- * In `@nativescript/angular` the canonical owner is
1830
- * `hmr-cache.service.ts`; in `@nativescript/solid` it would be the
1831
- * equivalent solid-side module.
1832
- *
1833
- * Returns a freshly-constructed store. Callers should treat it as a
1834
- * singleton — calling this twice from the same module yields two
1835
- * independent stores, which is almost never what you want.
1836
- */
1837
- declare function createDefaultHmrCacheStore(options?: HmrCacheStoreOptions): HmrCacheStore;
1838
-
1839
- /**
1840
- * Skip the API call your component already paid for last save.
1841
- *
1842
- * Inject {@link HmrCacheService} from any Angular component or service
1843
- * to read and write a per-app key/value cache that **survives the
1844
- * `__reboot_ng_modules__` cycle** triggered by every HMR file save.
1845
- * Backed by `@nativescript/ios`'s native `import.meta.hot.data`
1846
- * (`runtime/HMRSupport.{h,mm}`) and drained via
1847
- * `@nativescript/vite`'s `globalThis.__nsRunHmrDispose()` hook before
1848
- * Angular tears down its realm, so the same value the previous
1849
- * component instance produced is handed straight to the freshly-
1850
- * instantiated one — no network round-trip, no spinner flash.
1851
- *
1852
- * In production / `--no-hmr` builds `import.meta.hot` is `undefined`
1853
- * and the cache collapses to a plain in-memory object that lives for
1854
- * the lifetime of the process. The public API is identical, so callers
1855
- * never need to special-case build modes.
1856
- *
1857
- * @example Skip the initial fetch on save
1858
- * ```ts
1859
- * import { HmrCacheService } from '@nativescript/angular';
1860
- *
1861
- * @Component({...})
1862
- * export class MyComponent implements OnInit {
1863
- * private hmrCache = inject(HmrCacheService);
1864
- *
1865
- * ngOnInit() {
1866
- * const cached = this.hmrCache.get<MyResult>('my-feature:items');
1867
- * if (cached) {
1868
- * this.applyResult(cached);
1869
- * return;
1870
- * }
1871
- * this.api.load().subscribe((result) => {
1872
- * this.hmrCache.set('my-feature:items', result);
1873
- * this.applyResult(result);
1874
- * });
1875
- * }
1876
- * }
1877
- * ```
1878
- *
1879
- * @example Namespaced via {@link scope}
1880
- * ```ts
1881
- * private cache = inject(HmrCacheService).scope('page-my-submissions');
1882
- * // …
1883
- * this.cache.set('items', items); // → 'page-my-submissions:items'
1884
- * this.cache.get('items'); // ← 'page-my-submissions:items'
1885
- * ```
1886
- *
1887
- * @example Server-side invalidation from a Vite plugin
1888
- * ```ts
1889
- * // vite.config.ts
1890
- * export default defineConfig({
1891
- * plugins: [
1892
- * {
1893
- * name: 'my-schema-watcher',
1894
- * configureServer(server) {
1895
- * server.watcher.on('change', (path) => {
1896
- * if (path.endsWith('schema.json')) {
1897
- * server.ws.send({
1898
- * type: 'custom',
1899
- * event: 'ns:cache-invalidate',
1900
- * data: { key: 'my-feature:items' },
1901
- * });
1902
- * }
1903
- * });
1904
- * },
1905
- * },
1906
- * ],
1907
- * });
1908
- * ```
1909
- *
1910
- * Memory ceiling: the cache LRU-evicts at 256 entries by default. Pass
1911
- * a custom ceiling via {@link configureHmrCache} if your app churns
1912
- * through more keys than that in a typical dev session, or set `0` for
1913
- * unlimited (unbounded growth — only safe for short-lived dev work).
1914
- *
1915
- * @see HmrCacheStore — the framework-agnostic engine. Stable enough to
1916
- * lift into `@nativescript/solid` / other framework bindings without
1917
- * modification.
1918
- */
1919
- declare class HmrCacheService {
1920
- private readonly _store;
1921
- /**
1922
- * `true` when `import.meta.hot` is wired (i.e. NativeScript Vite HMR
1923
- * is active and `@nativescript/ios` is recent enough to expose
1924
- * `import.meta.hot.data`). `false` in production / `--no-hmr` /
1925
- * legacy webpack builds.
1926
- *
1927
- * Most callers should NOT branch on this — the public API works
1928
- * identically in both cases. Use it only when you want to opt OUT
1929
- * of caching in production (e.g. always fetch fresh data when not
1930
- * developing).
1931
- */
1932
- readonly isHmr: boolean;
1933
- get<T>(key: string): T | undefined;
1934
- set<T>(key: string, value: T): void;
1935
- has(key: string): boolean;
1936
- delete(key: string): void;
1937
- /**
1938
- * Drop a single entry, or every entry when `key` is omitted. Same
1939
- * shape as the `'ns:cache-invalidate'` HMR-event payload the store
1940
- * listens for, so application code can call this directly to mirror
1941
- * a server-side eviction.
1942
- */
1943
- invalidate(key?: string): void;
1944
- /** Drop every cached entry. Equivalent to `invalidate()` with no key. */
1945
- clear(): void;
1946
- /** Total number of entries across every scope. */
1947
- size(): number;
1948
- /** Snapshot of every key currently cached. Useful for debug overlays. */
1949
- keys(): string[];
1950
- /**
1951
- * Returns a namespaced view of the cache. All `get` / `set` /
1952
- * `has` / `delete` calls on the returned object are auto-prefixed
1953
- * with `<scopeName>:`. Recommended over global keys so feature
1954
- * modules don't accidentally collide.
1955
- *
1956
- * @example
1957
- * ```ts
1958
- * private cache = inject(HmrCacheService).scope('page-my-submissions');
1959
- * // …
1960
- * this.cache.set('items', items); // → 'page-my-submissions:items'
1961
- * ```
1962
- */
1963
- scope(scopeName: string): HmrCacheScope;
1964
- static ɵfac: i0.ɵɵFactoryDeclaration<HmrCacheService, never>;
1965
- static ɵprov: i0.ɵɵInjectableDeclaration<HmrCacheService>;
1966
- }
1967
- /**
1968
- * Override the default cache configuration. Must be called BEFORE the
1969
- * first injection of {@link HmrCacheService} (i.e. before Angular
1970
- * bootstrap, or as the very first statement in `main.ts`); otherwise
1971
- * the call is a no-op because the singleton store has already been
1972
- * built with the previous (or default) options.
1973
- *
1974
- * Typical use case: bumping `maxEntries` for a large multi-feature
1975
- * monorepo dev session, or pointing a custom `invalidateEventName` at
1976
- * a Vite plugin that prefixes its events with the project name.
1977
- *
1978
- * Returns `true` if the configuration was applied, `false` if the
1979
- * store had already been instantiated by an earlier injection.
1980
- */
1981
- declare function configureHmrCache(options: HmrCacheStoreOptions): boolean;
1982
- /**
1983
- * Read-only access to the underlying {@link HmrCacheStore}. Exposed
1984
- * for advanced integrations that want to reuse the LRU + dispose +
1985
- * server-side-invalidate plumbing without going through Angular's
1986
- * dependency injection (e.g. a non-component utility that's loaded
1987
- * before the Angular platform has bootstrapped). Application code
1988
- * should prefer {@link HmrCacheService}.
1989
- */
1990
- declare function getHmrCacheStore(): HmrCacheStore;
1991
-
1992
1458
  declare function registerNativeScriptViewComponents(): void;
1993
1459
 
1994
1460
  type ViewResolver = () => any;
@@ -2365,7 +1831,7 @@ declare class ModalDialogService {
2365
1831
  * and reattaches them on back.
2366
1832
  * Reuses routes as long as their route config is the same.
2367
1833
  */
2368
- declare class NSRouteReuseStrategy implements RouteReuseStrategy, OnDestroy {
1834
+ declare class NSRouteReuseStrategy implements RouteReuseStrategy {
2369
1835
  private location;
2370
1836
  private cacheByOutlet;
2371
1837
  constructor(location: NSLocationStrategy);
@@ -2384,102 +1850,299 @@ declare class NSRouteReuseStrategy implements RouteReuseStrategy, OnDestroy {
2384
1850
  markCacheForPop(outletKey: string): void;
2385
1851
  clearMarkedCache(outletKey: string): void;
2386
1852
  clearModalCache(outletKey: string): void;
2387
- clearAllCaches(): number;
2388
- ngOnDestroy(): void;
2389
1853
  static ɵfac: i0.ɵɵFactoryDeclaration<NSRouteReuseStrategy, never>;
2390
1854
  static ɵprov: i0.ɵɵInjectableDeclaration<NSRouteReuseStrategy>;
2391
1855
  }
2392
1856
 
2393
- type ExtendedNavigationExtras = NavigationExtras & NavigationOptions;
2394
- type ExtendedNavigationBehaviorOptions = NavigationBehaviorOptions & NavigationOptions;
2395
- interface BackNavigationOptions {
2396
- outlets?: Array<string>;
2397
- relativeTo?: ActivatedRoute | null;
1857
+ declare class PageRoute {
1858
+ activatedRoute: BehaviorSubject<ActivatedRoute>;
1859
+ constructor(startRoute: ActivatedRoute);
2398
1860
  }
2399
- declare class RouterExtensions {
2400
- router: Router;
2401
- locationStrategy: NSLocationStrategy;
2402
- frameService: FrameService;
2403
- constructor(router: Router, locationStrategy: NSLocationStrategy, frameService: FrameService);
2404
- navigate(commands: any[], extras?: ExtendedNavigationExtras): Promise<boolean>;
2405
- navigateByUrl(url: string | UrlTree, options?: ExtendedNavigationBehaviorOptions): Promise<boolean>;
2406
- back(backNavigationOptions?: BackNavigationOptions): void;
2407
- canGoBack(backNavigationOptions?: BackNavigationOptions): boolean;
2408
- backToPreviousPage(): void;
2409
- canGoBackToPreviousPage(): boolean;
2410
- private backOutlets;
2411
- private findOutletsToBack;
2412
- private findOutletsRecursive;
2413
- private findOutletByRoute;
2414
- static ɵfac: i0.ɵɵFactoryDeclaration<RouterExtensions, never>;
2415
- static ɵprov: i0.ɵɵInjectableDeclaration<RouterExtensions>;
1861
+ declare class PageRouterOutlet implements OnDestroy, RouterOutletContract {
1862
+ private parentContexts;
1863
+ private location;
1864
+ private locationStrategy;
1865
+ private resolver;
1866
+ private changeDetector;
1867
+ private pageFactory;
1868
+ private routeReuseStrategy;
1869
+ private ngZone;
1870
+ private router;
1871
+ private environmentInjector;
1872
+ private inputBinder;
1873
+ private activated;
1874
+ private _activatedRoute;
1875
+ private detachedLoaderFactory;
1876
+ private outlet;
1877
+ private name;
1878
+ private isEmptyOutlet;
1879
+ private viewUtil;
1880
+ private frame;
1881
+ private postNavFunction;
1882
+ attachEvents: EventEmitter<unknown>;
1883
+ detachEvents: EventEmitter<unknown>;
1884
+ activateEvents: EventEmitter<any>;
1885
+ deactivateEvents: EventEmitter<any>;
1886
+ get isActivated(): boolean;
1887
+ get activatedComponentRef(): ComponentRef<any> | null;
1888
+ get component(): unknown;
1889
+ get activatedRoute(): ActivatedRoute;
1890
+ get activatedRouteData(): Data;
1891
+ constructor();
1892
+ setActionBarVisibility(actionBarVisibility: string): void;
1893
+ ngOnDestroy(): void;
1894
+ deactivate(): void;
1895
+ /**
1896
+ * Called when the `RouteReuseStrategy` instructs to detach the subtree
1897
+ */
1898
+ detach(): ComponentRef<any>;
1899
+ /**
1900
+ * Called when the `RouteReuseStrategy` instructs to re-attach a previously detached subtree
1901
+ */
1902
+ attach(ref: ComponentRef<any>, activatedRoute: ActivatedRoute): void;
1903
+ private isFinalPageRouterOutlet;
1904
+ /**
1905
+ * Called by the Router to instantiate a new component during the commit phase of a navigation.
1906
+ * This method in turn is responsible for calling the `routerOnActivate` hook of its child.
1907
+ */
1908
+ activateWith(activatedRoute: ActivatedRoute, resolver: ComponentFactoryResolver | EnvironmentInjector | null): void;
1909
+ private activateOnGoForward;
1910
+ private loadComponentInPage;
1911
+ private markActivatedRoute;
1912
+ private getComponentType;
1913
+ private getOutlet;
1914
+ static ɵfac: i0.ɵɵFactoryDeclaration<PageRouterOutlet, never>;
1915
+ static ɵdir: i0.ɵɵDirectiveDeclaration<PageRouterOutlet, "page-router-outlet", never, {}, { "activateEvents": "activate"; "deactivateEvents": "deactivate"; }, never, never, true, never>;
1916
+ }
1917
+
1918
+ interface ComponentInputBindingOptions {
1919
+ queryParams?: boolean;
1920
+ unmatchedInputBehavior?: 'alwaysUndefined' | 'undefinedIfStale';
2416
1921
  }
2417
1922
 
2418
- type QueryParamsHandling = 'merge' | 'preserve' | '';
2419
1923
  /**
2420
1924
  * The nsRouterLink directive lets you link to specific parts of your app.
2421
1925
  *
2422
1926
  * Consider the following route configuration:
2423
1927
  * ```
2424
- * [{ path: "/user", component: UserCmp }]
1928
+ * [{ path: 'user/:name', component: UserCmp }]
2425
1929
  * ```
2426
1930
  *
2427
1931
  * When linking to this `User` route, you can write:
2428
1932
  *
2429
1933
  * ```
2430
- * <a [nsRouterLink]="["/user"]">link to user component</a>
1934
+ * <Label [nsRouterLink]="['/user/bob']" text="link to user component"></Label>
2431
1935
  * ```
2432
1936
  *
2433
- * NSRouterLink expects the value to be an array of path segments, followed by the params
2434
- * for that level of routing. For instance `["/team", {teamId: 1}, "user", {userId: 2}]`
2435
- * means that we want to generate a link to `/team;teamId=1/user;userId=2`.
1937
+ * You can use dynamic values to generate the link.
1938
+ * For a dynamic link, pass an array of path segments,
1939
+ * followed by the params for each segment.
1940
+ * For example, `['/team', teamId, 'user', userName, {details: true}]`
1941
+ * generates a link to `/team/11/user/bob;details=true`.
1942
+ *
1943
+ * Multiple static segments can be merged into one term and combined with
1944
+ * dynamic segments. For example, `['/team/11/user', userName, {details: true}]`
1945
+ *
1946
+ * The input that you provide to the link is treated as a delta to the current
1947
+ * URL. For instance, suppose the current URL is `/user/(box//aux:team)`. The
1948
+ * link `<Label [nsRouterLink]="['/user/jim']">Jim</Label>` creates the URL
1949
+ * `/user/(jim//aux:team)`.
1950
+ * See {@link Router#createUrlTree} for more information.
1951
+ *
1952
+ * @usageNotes
1953
+ *
1954
+ * You can use absolute or relative paths in a link, set query parameters,
1955
+ * control how parameters are handled, and keep a history of navigation states.
1956
+ *
1957
+ * ### Relative link paths
2436
1958
  *
2437
1959
  * The first segment name can be prepended with `/`, `./`, or `../`.
2438
- * If the segment begins with `/`, the router will look up the route from the root of the app.
2439
- * If the segment begins with `./`, or doesn"t begin with a slash, the router will
2440
- * instead look in the current component"s children for the route.
2441
- * And if the segment begins with `../`, the router will go up one level.
1960
+ * * If the first segment begins with `/`, the router looks up the route from
1961
+ * the root of the app.
1962
+ * * If the first segment begins with `./`, or doesn't begin with a slash, the
1963
+ * router looks in the children of the current activated route.
1964
+ * * If the first segment begins with `../`, the router goes up one level in the
1965
+ * route tree.
1966
+ *
1967
+ * ### Setting and handling query params and fragments
1968
+ *
1969
+ * The following link adds a query parameter and a fragment to the generated URL:
1970
+ *
1971
+ * ```html
1972
+ * <Label [nsRouterLink]="['/user/bob']" [queryParams]="{debug: true}"
1973
+ * fragment="education" text="link to user component"></Label>
1974
+ * ```
1975
+ *
1976
+ * By default, the directive constructs the new URL using the given query
1977
+ * parameters. The example generates the link: `/user/bob?debug=true#education`.
1978
+ *
1979
+ * You can instruct the directive to handle query parameters differently
1980
+ * by specifying the `queryParamsHandling` option in the link.
1981
+ * Allowed values are:
1982
+ *
1983
+ * - `'merge'`: Merge the given `queryParams` into the current query params.
1984
+ * - `'preserve'`: Preserve the current query params.
1985
+ *
1986
+ * For example:
1987
+ *
1988
+ * ```html
1989
+ * <Label [nsRouterLink]="['/user/bob']" [queryParams]="{debug: true}"
1990
+ * queryParamsHandling="merge" text="link to user component"></Label>
1991
+ * ```
1992
+ *
1993
+ * `queryParams`, `fragment`, `queryParamsHandling`, `preserveFragment`, and
1994
+ * `relativeTo` cannot be used when the `nsRouterLink` input is a `UrlTree`.
1995
+ *
1996
+ * ### NativeScript-specific options
1997
+ *
1998
+ * NativeScript adds support for page transitions and history clearing:
1999
+ *
2000
+ * ```html
2001
+ * <Label [nsRouterLink]="['/user/bob']" [clearHistory]="true"
2002
+ * pageTransition="slide" [pageTransitionDuration]="200"
2003
+ * text="link to user component"></Label>
2004
+ * ```
2442
2005
  */
2443
- declare class NSRouterLink implements AfterViewInit {
2444
- private ngZone;
2445
- private router;
2446
- private navigator;
2447
- private route;
2448
- private el;
2449
- target: string;
2450
- queryParams: {
2006
+ declare class NSRouterLink implements OnChanges, OnDestroy {
2007
+ private readonly ngZone;
2008
+ private readonly router;
2009
+ private readonly navigator;
2010
+ private readonly route;
2011
+ private readonly el;
2012
+ /**
2013
+ * Passed to {@link Router#createUrlTree} as part of the
2014
+ * `UrlCreationOptions`.
2015
+ * @see {@link UrlCreationOptions#queryParams}
2016
+ * @see {@link Router#createUrlTree}
2017
+ */
2018
+ set queryParams(value: {
2451
2019
  [k: string]: any;
2452
- };
2453
- fragment: string;
2454
- queryParamsHandling: QueryParamsHandling;
2455
- preserveQueryParams: boolean;
2456
- preserveFragment: boolean;
2457
- skipLocationChange: boolean;
2458
- replaceUrl: boolean;
2020
+ } | null | undefined);
2021
+ get queryParams(): {
2022
+ [k: string]: any;
2023
+ } | null | undefined;
2024
+ private _queryParams;
2025
+ /**
2026
+ * Passed to {@link Router#createUrlTree} as part of the
2027
+ * `UrlCreationOptions`.
2028
+ * @see {@link UrlCreationOptions#fragment}
2029
+ * @see {@link Router#createUrlTree}
2030
+ */
2031
+ set fragment(value: string | undefined);
2032
+ get fragment(): string | undefined;
2033
+ private _fragment;
2034
+ /**
2035
+ * Passed to {@link Router#createUrlTree} as part of the
2036
+ * `UrlCreationOptions`.
2037
+ * @see {@link UrlCreationOptions#queryParamsHandling}
2038
+ * @see {@link Router#createUrlTree}
2039
+ */
2040
+ set queryParamsHandling(value: QueryParamsHandling | null | undefined);
2041
+ get queryParamsHandling(): QueryParamsHandling | null | undefined;
2042
+ private _queryParamsHandling;
2043
+ /**
2044
+ * Passed to {@link Router#navigateByUrl} as part of the
2045
+ * `NavigationBehaviorOptions`.
2046
+ * @see {@link NavigationBehaviorOptions#state}
2047
+ * @see {@link Router#navigateByUrl}
2048
+ */
2049
+ set state(value: {
2050
+ [k: string]: any;
2051
+ } | undefined);
2052
+ get state(): {
2053
+ [k: string]: any;
2054
+ } | undefined;
2055
+ private _state;
2056
+ /**
2057
+ * Passed to {@link Router#navigateByUrl} as part of the
2058
+ * `NavigationBehaviorOptions`.
2059
+ * @see {@link NavigationBehaviorOptions#info}
2060
+ * @see {@link Router#navigateByUrl}
2061
+ */
2062
+ set info(value: unknown);
2063
+ get info(): unknown;
2064
+ private _info;
2065
+ /**
2066
+ * Passed to {@link Router#createUrlTree} as part of the
2067
+ * `UrlCreationOptions`.
2068
+ * Specify a value here when you do not want to use the default value
2069
+ * for `nsRouterLink`, which is the current activated route.
2070
+ * Note that a value of `undefined` here will use the `nsRouterLink` default.
2071
+ * @see {@link UrlCreationOptions#relativeTo}
2072
+ * @see {@link Router#createUrlTree}
2073
+ */
2074
+ set relativeTo(value: ActivatedRoute | null | undefined);
2075
+ get relativeTo(): ActivatedRoute | null | undefined;
2076
+ private _relativeTo;
2077
+ /**
2078
+ * Passed to {@link Router#createUrlTree} as part of the
2079
+ * `UrlCreationOptions`.
2080
+ * @see {@link UrlCreationOptions#preserveFragment}
2081
+ * @see {@link Router#createUrlTree}
2082
+ */
2083
+ set preserveFragment(value: boolean);
2084
+ get preserveFragment(): boolean;
2085
+ private _preserveFragment;
2086
+ /**
2087
+ * Passed to {@link Router#navigateByUrl} as part of the
2088
+ * `NavigationBehaviorOptions`.
2089
+ * @see {@link NavigationBehaviorOptions#skipLocationChange}
2090
+ * @see {@link Router#navigateByUrl}
2091
+ */
2092
+ set skipLocationChange(value: boolean);
2093
+ get skipLocationChange(): boolean;
2094
+ private _skipLocationChange;
2095
+ /**
2096
+ * Passed to {@link Router#navigateByUrl} as part of the
2097
+ * `NavigationBehaviorOptions`.
2098
+ * @see {@link NavigationBehaviorOptions#replaceUrl}
2099
+ * @see {@link Router#navigateByUrl}
2100
+ */
2101
+ set replaceUrl(value: boolean);
2102
+ get replaceUrl(): boolean;
2103
+ private _replaceUrl;
2459
2104
  clearHistory: boolean;
2460
2105
  pageTransition: boolean | string | NavigationTransition;
2461
2106
  pageTransitionDuration: any;
2462
- private commands;
2463
- constructor(ngZone: NgZone, router: Router, navigator: RouterExtensions, route: ActivatedRoute, el: ElementRef);
2464
- ngAfterViewInit(): void;
2465
- set params(data: any[] | string);
2466
- onTap(): void;
2107
+ /** @internal */
2108
+ onChanges: Subject<NSRouterLink>;
2109
+ private routerLinkInput;
2110
+ private tapHandler;
2111
+ constructor();
2112
+ /**
2113
+ * Commands to pass to {@link Router#createUrlTree} or a `UrlTree`.
2114
+ * - **array**: commands to pass to {@link Router#createUrlTree}.
2115
+ * - **string**: shorthand for array of commands with just the string, i.e. `['/route']`
2116
+ * - **UrlTree**: a `UrlTree` for this link rather than creating one from
2117
+ * the commands and other inputs that correspond to properties of `UrlCreationOptions`.
2118
+ * - **null|undefined**: effectively disables the `nsRouterLink`
2119
+ * @see {@link Router#createUrlTree}
2120
+ */
2121
+ set nsRouterLink(commandsOrUrlTree: readonly any[] | string | UrlTree | null | undefined);
2122
+ ngOnChanges(_changes?: SimpleChanges): void;
2123
+ ngOnDestroy(): void;
2124
+ /** @internal */
2125
+ _urlTree: i0.Signal<UrlTree>;
2126
+ get urlTree(): UrlTree | null;
2127
+ private onTap;
2467
2128
  private getExtras;
2468
- get urlTree(): UrlTree;
2469
2129
  private convertClearHistory;
2470
2130
  private getTransition;
2471
2131
  static ɵfac: i0.ɵɵFactoryDeclaration<NSRouterLink, never>;
2472
- static ɵdir: i0.ɵɵDirectiveDeclaration<NSRouterLink, "[nsRouterLink]", never, { "target": { "alias": "target"; "required": false; }; "queryParams": { "alias": "queryParams"; "required": false; }; "fragment": { "alias": "fragment"; "required": false; }; "queryParamsHandling": { "alias": "queryParamsHandling"; "required": false; }; "preserveQueryParams": { "alias": "preserveQueryParams"; "required": false; }; "preserveFragment": { "alias": "preserveFragment"; "required": false; }; "skipLocationChange": { "alias": "skipLocationChange"; "required": false; }; "replaceUrl": { "alias": "replaceUrl"; "required": false; }; "clearHistory": { "alias": "clearHistory"; "required": false; }; "pageTransition": { "alias": "pageTransition"; "required": false; }; "pageTransitionDuration": { "alias": "pageTransitionDuration"; "required": false; }; "params": { "alias": "nsRouterLink"; "required": false; }; }, {}, never, never, true, never>;
2132
+ static ɵdir: i0.ɵɵDirectiveDeclaration<NSRouterLink, "[nsRouterLink]", never, { "queryParams": { "alias": "queryParams"; "required": false; }; "fragment": { "alias": "fragment"; "required": false; }; "queryParamsHandling": { "alias": "queryParamsHandling"; "required": false; }; "state": { "alias": "state"; "required": false; }; "info": { "alias": "info"; "required": false; }; "relativeTo": { "alias": "relativeTo"; "required": false; }; "preserveFragment": { "alias": "preserveFragment"; "required": false; }; "skipLocationChange": { "alias": "skipLocationChange"; "required": false; }; "replaceUrl": { "alias": "replaceUrl"; "required": false; }; "clearHistory": { "alias": "clearHistory"; "required": false; }; "pageTransition": { "alias": "pageTransition"; "required": false; }; "pageTransitionDuration": { "alias": "pageTransitionDuration"; "required": false; }; "nsRouterLink": { "alias": "nsRouterLink"; "required": false; }; }, {}, never, never, true, never>;
2133
+ static ngAcceptInputType_preserveFragment: unknown;
2134
+ static ngAcceptInputType_skipLocationChange: unknown;
2135
+ static ngAcceptInputType_replaceUrl: unknown;
2473
2136
  }
2474
2137
 
2475
2138
  /**
2476
- * The NSRouterLinkActive directive lets you add a CSS class to an element when the link"s route
2139
+ * The NSRouterLinkActive directive lets you add a CSS class to an element when the link's route
2477
2140
  * becomes active.
2478
2141
  *
2479
2142
  * Consider the following example:
2480
2143
  *
2481
2144
  * ```
2482
- * <a [nsRouterLink]="/user/bob" [nsRouterLinkActive]="active-link">Bob</a>
2145
+ * <Label [nsRouterLink]="/user/bob" [nsRouterLinkActive]="'active-link'" text="Bob"></Label>
2483
2146
  * ```
2484
2147
  *
2485
2148
  * When the url is either "/user" or "/user/bob", the active-link class will
@@ -2488,114 +2151,107 @@ declare class NSRouterLink implements AfterViewInit {
2488
2151
  * You can set more than one class, as follows:
2489
2152
  *
2490
2153
  * ```
2491
- * <a [nsRouterLink]="/user/bob" [nsRouterLinkActive]="class1 class2">Bob</a>
2492
- * <a [nsRouterLink]="/user/bob" [nsRouterLinkActive]="["class1", "class2"]">Bob</a>
2154
+ * <Label [nsRouterLink]="/user/bob" [nsRouterLinkActive]="'class1 class2'" text="Bob"></Label>
2155
+ * <Label [nsRouterLink]="/user/bob" [nsRouterLinkActive]="['class1', 'class2']" text="Bob"></Label>
2493
2156
  * ```
2494
2157
  *
2495
2158
  * You can configure NSRouterLinkActive by passing `exact: true`. This will add the
2496
2159
  * classes only when the url matches the link exactly.
2497
2160
  *
2498
2161
  * ```
2499
- * <a [nsRouterLink]="/user/bob" [nsRouterLinkActive]="active-link"
2500
- * [nsRouterLinkActiveOptions]="{exact: true}">Bob</a>
2162
+ * <Label [nsRouterLink]="/user/bob" [nsRouterLinkActive]="'active-link'"
2163
+ * [nsRouterLinkActiveOptions]="{exact: true}" text="Bob"></Label>
2501
2164
  * ```
2502
2165
  *
2503
- * Finally, you can apply the NSRouterLinkActive directive to an ancestor of a RouterLink.
2166
+ * To directly check the `isActive` status of the link, assign the `NSRouterLinkActive`
2167
+ * instance to a template variable.
2168
+ * For example, the following checks the status without assigning any CSS classes:
2504
2169
  *
2505
2170
  * ```
2506
- * <div [nsRouterLinkActive]="active-link" [nsRouterLinkActiveOptions]="{exact: true}">
2507
- * <a [nsRouterLink]="/user/jim">Jim</a>
2508
- * <a [nsRouterLink]="/user/bob">Bob</a>
2509
- * </div>
2171
+ * <Label [nsRouterLink]="/user/bob" nsRouterLinkActive #rla="routerLinkActive"
2172
+ * [text]="'Bob ' + (rla.isActive ? '(already open)' : '')"></Label>
2510
2173
  * ```
2511
2174
  *
2512
- * This will set the active-link class on the div tag if the url is either "/user/jim" or
2175
+ * You can apply the NSRouterLinkActive directive to an ancestor of a RouterLink.
2176
+ *
2177
+ * ```
2178
+ * <StackLayout [nsRouterLinkActive]="'active-link'" [nsRouterLinkActiveOptions]="{exact: true}">
2179
+ * <Label [nsRouterLink]="/user/jim" text="Jim"></Label>
2180
+ * <Label [nsRouterLink]="/user/bob" text="Bob"></Label>
2181
+ * </StackLayout>
2182
+ * ```
2183
+ *
2184
+ * This will set the active-link class on the StackLayout if the url is either "/user/jim" or
2513
2185
  * "/user/bob".
2514
2186
  *
2515
- * @stable
2187
+ * The `NSRouterLinkActive` directive can also be used to set the aria-current attribute
2188
+ * to provide an alternative distinction for active elements to visually impaired users.
2189
+ *
2190
+ * For example, the following code adds the 'active' class to the Home Page link when it is
2191
+ * indeed active and in such case also sets its aria-current attribute to 'page':
2192
+ *
2193
+ * ```
2194
+ * <Label nsRouterLink="/" [nsRouterLinkActive]="'active'" ariaCurrentWhenActive="page" text="Home Page"></Label>
2195
+ * ```
2516
2196
  */
2517
2197
  declare class NSRouterLinkActive implements OnChanges, OnDestroy, AfterContentInit {
2518
- private router;
2519
- private element;
2520
- private renderer;
2521
2198
  links: QueryList<NSRouterLink>;
2522
2199
  private classes;
2523
- private subscription;
2524
- private active;
2200
+ private routerEventsSubscription;
2201
+ private linkInputChangesSubscription?;
2202
+ private _isActive;
2203
+ get isActive(): boolean;
2204
+ /**
2205
+ * Options to configure how to determine if the router link is active.
2206
+ *
2207
+ * These options are passed to the `isActive()` function.
2208
+ *
2209
+ * @see {@link isActive}
2210
+ */
2525
2211
  nsRouterLinkActiveOptions: {
2526
2212
  exact: boolean;
2527
- };
2528
- constructor(router: Router, element: ElementRef, renderer: Renderer2);
2529
- get isActive(): boolean;
2213
+ } | Partial<IsActiveMatchOptions>;
2214
+ /**
2215
+ * Aria-current attribute to apply when the router link is active.
2216
+ *
2217
+ * Possible values: `'page'` | `'step'` | `'location'` | `'date'` | `'time'` | `true` | `false`.
2218
+ *
2219
+ * @see {@link https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/Attributes/aria-current}
2220
+ */
2221
+ ariaCurrentWhenActive?: 'page' | 'step' | 'location' | 'date' | 'time' | true | false;
2222
+ /**
2223
+ *
2224
+ * You can use the output `isActiveChange` to get notified each time the link becomes
2225
+ * active or inactive.
2226
+ *
2227
+ * Emits:
2228
+ * true -> Route is active
2229
+ * false -> Route is inactive
2230
+ *
2231
+ * ```html
2232
+ * <Label
2233
+ * [nsRouterLink]="/user/bob"
2234
+ * [nsRouterLinkActive]="'active-link'"
2235
+ * (isActiveChange)="this.onRouterLinkActive($event)" text="Bob"></Label>
2236
+ * ```
2237
+ */
2238
+ readonly isActiveChange: EventEmitter<boolean>;
2239
+ private readonly link;
2240
+ private readonly router;
2241
+ private readonly element;
2242
+ private readonly renderer;
2243
+ private readonly cdr;
2244
+ constructor();
2530
2245
  ngAfterContentInit(): void;
2246
+ private subscribeToEachLinkOnChanges;
2531
2247
  set nsRouterLinkActive(data: string[] | string);
2532
- ngOnChanges(): void;
2248
+ ngOnChanges(_changes: SimpleChanges): void;
2533
2249
  ngOnDestroy(): void;
2534
2250
  private update;
2535
- private reduceList;
2536
2251
  private isLinkActive;
2537
2252
  private hasActiveLinks;
2538
2253
  static ɵfac: i0.ɵɵFactoryDeclaration<NSRouterLinkActive, never>;
2539
- static ɵdir: i0.ɵɵDirectiveDeclaration<NSRouterLinkActive, "[nsRouterLinkActive]", ["routerLinkActive"], { "nsRouterLinkActiveOptions": { "alias": "nsRouterLinkActiveOptions"; "required": false; }; "nsRouterLinkActive": { "alias": "nsRouterLinkActive"; "required": false; }; }, {}, ["links"], never, true, never>;
2540
- }
2541
-
2542
- declare class PageRoute {
2543
- activatedRoute: BehaviorSubject<ActivatedRoute>;
2544
- constructor(startRoute: ActivatedRoute);
2545
- }
2546
- declare class PageRouterOutlet implements OnDestroy, RouterOutletContract {
2547
- private parentContexts;
2548
- private location;
2549
- private locationStrategy;
2550
- private resolver;
2551
- private changeDetector;
2552
- private pageFactory;
2553
- private routeReuseStrategy;
2554
- private ngZone;
2555
- private router;
2556
- private environmentInjector;
2557
- private activated;
2558
- private _activatedRoute;
2559
- private detachedLoaderFactory;
2560
- private outlet;
2561
- private name;
2562
- private isEmptyOutlet;
2563
- private viewUtil;
2564
- private frame;
2565
- private postNavFunction;
2566
- attachEvents: EventEmitter<unknown>;
2567
- detachEvents: EventEmitter<unknown>;
2568
- activateEvents: EventEmitter<any>;
2569
- deactivateEvents: EventEmitter<any>;
2570
- get isActivated(): boolean;
2571
- get component(): unknown;
2572
- get activatedRoute(): ActivatedRoute;
2573
- get activatedRouteData(): Data;
2574
- constructor();
2575
- setActionBarVisibility(actionBarVisibility: string): void;
2576
- ngOnDestroy(): void;
2577
- deactivate(): void;
2578
- /**
2579
- * Called when the `RouteReuseStrategy` instructs to detach the subtree
2580
- */
2581
- detach(): ComponentRef<any>;
2582
- /**
2583
- * Called when the `RouteReuseStrategy` instructs to re-attach a previously detached subtree
2584
- */
2585
- attach(ref: ComponentRef<any>, activatedRoute: ActivatedRoute): void;
2586
- private isFinalPageRouterOutlet;
2587
- /**
2588
- * Called by the Router to instantiate a new component during the commit phase of a navigation.
2589
- * This method in turn is responsible for calling the `routerOnActivate` hook of its child.
2590
- */
2591
- activateWith(activatedRoute: ActivatedRoute, resolver: ComponentFactoryResolver | EnvironmentInjector | null): void;
2592
- private activateOnGoForward;
2593
- private loadComponentInPage;
2594
- private markActivatedRoute;
2595
- private getComponentType;
2596
- private getOutlet;
2597
- static ɵfac: i0.ɵɵFactoryDeclaration<PageRouterOutlet, never>;
2598
- static ɵdir: i0.ɵɵDirectiveDeclaration<PageRouterOutlet, "page-router-outlet", never, {}, { "activateEvents": "activate"; "deactivateEvents": "deactivate"; }, never, never, true, never>;
2254
+ static ɵdir: i0.ɵɵDirectiveDeclaration<NSRouterLinkActive, "[nsRouterLinkActive]", ["routerLinkActive"], { "nsRouterLinkActiveOptions": { "alias": "nsRouterLinkActiveOptions"; "required": false; }; "ariaCurrentWhenActive": { "alias": "ariaCurrentWhenActive"; "required": false; }; "nsRouterLinkActive": { "alias": "nsRouterLinkActive"; "required": false; }; }, { "isActiveChange": "isActiveChange"; }, ["links"], never, true, never>;
2599
2255
  }
2600
2256
 
2601
2257
  declare class NSEmptyOutletComponent {
@@ -2606,6 +2262,32 @@ declare class NSEmptyOutletComponent {
2606
2262
  static ɵcmp: i0.ɵɵComponentDeclaration<NSEmptyOutletComponent, "ns-empty-outlet", never, {}, {}, never, never, true, never>;
2607
2263
  }
2608
2264
 
2265
+ type ExtendedNavigationExtras = NavigationExtras & NavigationOptions;
2266
+ type ExtendedNavigationBehaviorOptions = NavigationBehaviorOptions & NavigationOptions;
2267
+ interface BackNavigationOptions {
2268
+ outlets?: Array<string>;
2269
+ relativeTo?: ActivatedRoute | null;
2270
+ }
2271
+ declare class RouterExtensions {
2272
+ router: Router;
2273
+ locationStrategy: NSLocationStrategy;
2274
+ frameService: FrameService;
2275
+ constructor(router: Router, locationStrategy: NSLocationStrategy, frameService: FrameService);
2276
+ navigate(commands: any[], extras?: ExtendedNavigationExtras): Promise<boolean>;
2277
+ navigateByUrl(url: string | UrlTree, options?: ExtendedNavigationBehaviorOptions): Promise<boolean>;
2278
+ back(backNavigationOptions?: BackNavigationOptions): void;
2279
+ canGoBack(backNavigationOptions?: BackNavigationOptions): boolean;
2280
+ backToPreviousPage(): void;
2281
+ canGoBackToPreviousPage(): boolean;
2282
+ private backOutlets;
2283
+ private findOutletsToBack;
2284
+ private findOutletsRecursive;
2285
+ private findOutletByRoute;
2286
+ static ɵfac: i0.ɵɵFactoryDeclaration<RouterExtensions, never>;
2287
+ static ɵprov: i0.ɵɵInjectableDeclaration<RouterExtensions>;
2288
+ }
2289
+
2290
+ declare function provideComponentInputBinding(options?: ComponentInputBindingOptions): Provider[];
2609
2291
  declare function provideLocationStrategy(locationStrategy: NSLocationStrategy, frameService: FrameService, startPath: string): NSLocationStrategy;
2610
2292
  declare class NativeScriptRouterModule {
2611
2293
  static forRoot(routes: Routes, config?: ExtraOptions): ModuleWithProviders<NativeScriptRouterModule>;
@@ -2617,35 +2299,6 @@ declare class NativeScriptRouterModule {
2617
2299
  declare function rootRoute(router: Router): ActivatedRoute;
2618
2300
  declare function provideNativeScriptRouter(routes: Routes, ...features: RouterFeatures[]): i0.EnvironmentProviders;
2619
2301
 
2620
- /**
2621
- * True while the Angular HMR layer is restoring a captured route stack
2622
- * onto the freshly-bootstrapped router. The window opens just before
2623
- * `START_PATH` resolves to a deep URL and closes once the router has
2624
- * walked the entire forward navigation list (or aborted it).
2625
- *
2626
- * User-app code that runs default navigations on component init (e.g. a
2627
- * bottom-nav defaulting to its first tab) can consult this flag to skip
2628
- * its default navigation so the framework's restored route survives:
2629
- *
2630
- * ```ts
2631
- * if (isAngularHmrRestoringRoute()) {
2632
- * return; // framework is restoring a deeper route — leave it alone.
2633
- * }
2634
- * defaultTabNavigation();
2635
- * ```
2636
- *
2637
- * Returns `false` outside of HMR or after the replay window has closed.
2638
- * Production builds always see `false` because the framework never
2639
- * opens the window there.
2640
- */
2641
- declare function isAngularHmrRestoringRoute(): boolean;
2642
- /**
2643
- * The target route the framework is currently restoring, or `null` when
2644
- * no replay is in progress. Useful when the consumer wants to compare
2645
- * against the current router URL.
2646
- */
2647
- declare function getAngularHmrRestoringRoute(): string | null;
2648
-
2649
2302
  declare class NativeScriptDebug {
2650
2303
  static readonly animationsTraceCategory = "ns-animations";
2651
2304
  static readonly rendererTraceCategory = "ns-renderer";
@@ -2654,7 +2307,6 @@ declare class NativeScriptDebug {
2654
2307
  static readonly routeReuseStrategyTraceCategory = "ns-route-reuse-strategy";
2655
2308
  static readonly listViewTraceCategory = "ns-list-view";
2656
2309
  static readonly bootstrapCategory = "bootstrap";
2657
- static readonly hmrTraceCategory = "ns-ng-hmr";
2658
2310
  static readonly enabled: boolean;
2659
2311
  static isLogEnabled(): boolean;
2660
2312
  static animationsLog(message: string): void;
@@ -2669,8 +2321,6 @@ declare class NativeScriptDebug {
2669
2321
  static listViewError(message: string): void;
2670
2322
  static bootstrapLog(message: string): void;
2671
2323
  static bootstrapLogError(message: string): void;
2672
- static hmrLog(message: string): void;
2673
- static hmrLogError(message: string): void;
2674
2324
  }
2675
2325
 
2676
2326
  /**
@@ -2830,5 +2480,5 @@ declare class NativeScriptNgZone implements NgZone {
2830
2480
  }
2831
2481
  declare function provideNativeScriptNgZone(options?: NgZoneOptions): i0.StaticProvider[];
2832
2482
 
2833
- export { APP_ROOT_VIEW, ActionBarComponent, ActionBarScope, ActionItemDirective, AndroidFilterComponent, AppHostAsyncView, AppHostView, AppleFilterComponent, BasePortalOutlet, BaseValueAccessor, COMMON_PROVIDERS, CdkPortal, CdkPortalOutlet, CheckedValueAccessor, CommentNode, ComponentPortal, DEVICE, DISABLE_ROOT_VIEW_HANDLING, DateValueAccessor, DetachedLoader, DomPortal, ENABLE_REUSABE_VIEWS, EmulatedRenderer, FrameDirective, FramePageComponent, FramePageModule, FrameService, HmrCacheService, HmrCacheStore, IOSFilterComponent, InjectableAnimationEngine, InvisibleNode, ItemContext, ListViewComponent, ModalDialogParams, ModalDialogService, NAMESPACE_FILTERS, NATIVESCRIPT_MODULE_PROVIDERS, NATIVESCRIPT_MODULE_STATIC_PROVIDERS, NATIVESCRIPT_ROOT_MODULE_ID, NATIVE_DIALOG_DATA, NATIVE_DIALOG_DEFAULT_OPTIONS, NSEmptyOutletComponent, NSFileSystem, NSLocationStrategy, NSRouteReuseStrategy, NSRouterLink, NSRouterLinkActive, NativeDialog, NativeDialogCloseDirective, NativeDialogConfig, NativeDialogModule, NativeDialogRef, NativeDialog as NativeDialogService, NativeDialogState, NativeModalRef, NativeScriptAnimationDriver, NativeScriptAnimationPlayer, NativeScriptAnimationsModule, NativeScriptCommonModule, NativeScriptDocument, NativeScriptDomPortalOutlet, NativeScriptFormsModule, NativeScriptHttpClientModule, NativeScriptLoadingService, NativeScriptModule, NativeScriptNgSafeEvent, NativeScriptNgZone, NativeScriptRendererFactory, NativeScriptRendererHelperService, NativeScriptRouterModule, NativeScriptSanitizer, NativescriptXhrFactory, NavigationButtonDirective, NgViewRef, NsHttpBackEnd, NsTemplatedItem, NumberValueAccessor, Outlet, PAGE_FACTORY, PREVENT_CHANGE_EVENTS_DURING_CD, PREVENT_SPECIFIC_EVENTS_DURING_CD, PageDirective, PageRoute, PageRouterOutlet, PageService, PlatformNamespaceFilter, Portal, PortalModule, RootCompositeModule, RootViewProxy, RouterExtensions, START_PATH, SelectedIndexValueAccessor, TEMPLATED_ITEMS_COMPONENT, TabViewDirective, TabViewItemDirective, TemplateKeyDirective, TemplatePortal, TextNode, TextValueAccessor, TimeValueAccessor, VisionOSFilterComponent, bootstrapApplication, configureHmrCache, createDefaultHmrCacheStore, createKeyframeAnimation, customFrameComponentFactory, customFrameDirectiveFactory, customPageFactory, customPageFactoryFromFrame, dashCaseToCamelCase, defaultNavOptions, defaultPageFactory, defaultPageFactoryProvider, detachViewFromParent, disableRootViewHanding, errorHandler, extractSingleViewRecursive, frameMeta, generateDetachedLoader, generateFallbackRootView, generateNativeScriptView, generateRandomId, generateRootLayoutAndProxy, getAngularHmrRestoringRoute, getFirstNativeLikeView, getHmrCacheStore, getItemViewRoot, getSingleViewRecursive, getViewClass, getViewMeta, instantiateDefaultStyleNormalizer, instantiateSupportedAnimationDriver, isAngularHmrRestoringRoute, isBlank, isContentView, isDetachedElement, isInvisibleNode, isJsObject, isKnownView, isLayout, isListLikeIterable, isPresent, isView, onAfterLivesync, onBeforeLivesync, once, platformNativeScript, platformNativeScriptDynamic, postAngularBootstrap$, preAngularDisposal$, provideLocationStrategy, provideNativeScriptHttpClient, provideNativeScriptNgZone, provideNativeScriptRouter, registerElement, registerNativeScriptViewComponents, rootRoute, runNativeScriptAngularApp, throwIfAlreadyLoaded, throwNoPortalAttachedError, throwNullPortalError, throwNullPortalOutletError, throwPortalAlreadyAttachedError, throwPortalOutletAlreadyDisposedError, throwUnknownPortalTypeError, COMPONENT_VARIABLE as ɵCOMPONENT_VARIABLE, CONTENT_ATTR as ɵCONTENT_ATTR, HOST_ATTR as ɵHOST_ATTR, NativeScriptDebug as ɵNativeScriptAngularDebug, viewUtil_d as ɵViewUtil, actionBarMeta as ɵactionBarMeta, elementMap as ɵelementMap, isActionItem as ɵisActionItem, isNavigationButton as ɵisNavigationButton };
2834
- export type { AppLaunchView, AppOptions, AppRunOptions, ApplicationConfig, BaseShowModalOptions, CdkPortalOutletAttachedRef, ComponentType, HmrCacheScope, HmrCacheStoreOptions, HmrOptions, Keyframe, LocationState, ModalDialogOptions, NamespaceFilter, NativeShowModalOptions, NavigationOptions, NgModuleEvent, NgModuleReason, NgView, NgViewTemplate, PageFactory, PageFactoryOptions, PortalOutlet, RootLocator, SelectableView, SetupItemViewArgs, ShowDialogOptions, TabViewItemDef, TemplatedItemsHost, TextView, ViewClass, ViewClassMeta, ViewExtensions, ViewResolver };
2483
+ export { APP_ROOT_VIEW, ActionBarComponent, ActionBarScope, ActionItemDirective, AndroidFilterComponent, AppHostAsyncView, AppHostView, AppleFilterComponent, BasePortalOutlet, BaseValueAccessor, COMMON_PROVIDERS, CdkPortal, CdkPortalOutlet, CheckedValueAccessor, CommentNode, ComponentPortal, DEVICE, DISABLE_ROOT_VIEW_HANDLING, DateValueAccessor, DetachedLoader, DomPortal, ENABLE_REUSABE_VIEWS, EmulatedRenderer, FrameDirective, FramePageComponent, FramePageModule, FrameService, IOSFilterComponent, InjectableAnimationEngine, InvisibleNode, ItemContext, ListViewComponent, ModalDialogParams, ModalDialogService, NAMESPACE_FILTERS, NATIVESCRIPT_MODULE_PROVIDERS, NATIVESCRIPT_MODULE_STATIC_PROVIDERS, NATIVESCRIPT_ROOT_MODULE_ID, NATIVE_DIALOG_DATA, NATIVE_DIALOG_DEFAULT_OPTIONS, NSEmptyOutletComponent, NSFileSystem, NSLocationStrategy, NSRouteReuseStrategy, NSRouterLink, NSRouterLinkActive, NativeDialog, NativeDialogCloseDirective, NativeDialogConfig, NativeDialogModule, NativeDialogRef, NativeDialog as NativeDialogService, NativeDialogState, NativeModalRef, NativeScriptAnimationDriver, NativeScriptAnimationPlayer, NativeScriptAnimationsModule, NativeScriptCommonModule, NativeScriptDocument, NativeScriptDomPortalOutlet, NativeScriptFormsModule, NativeScriptHttpClientModule, NativeScriptLoadingService, NativeScriptModule, NativeScriptNgSafeEvent, NativeScriptNgZone, NativeScriptRendererFactory, NativeScriptRendererHelperService, NativeScriptRouterModule, NativeScriptSanitizer, NativescriptXhrFactory, NavigationButtonDirective, NgViewRef, NsHttpBackEnd, NsTemplatedItem, NumberValueAccessor, Outlet, PAGE_FACTORY, PREVENT_CHANGE_EVENTS_DURING_CD, PREVENT_SPECIFIC_EVENTS_DURING_CD, PageDirective, PageRoute, PageRouterOutlet, PageService, PlatformNamespaceFilter, Portal, PortalModule, RootCompositeModule, RootViewProxy, RouterExtensions, START_PATH, SelectedIndexValueAccessor, TEMPLATED_ITEMS_COMPONENT, TabViewDirective, TabViewItemDirective, TemplateKeyDirective, TemplatePortal, TextNode, TextValueAccessor, TimeValueAccessor, VisionOSFilterComponent, bootstrapApplication, createApplication, createKeyframeAnimation, customFrameComponentFactory, customFrameDirectiveFactory, customPageFactory, customPageFactoryFromFrame, dashCaseToCamelCase, defaultNavOptions, defaultPageFactory, defaultPageFactoryProvider, detachViewFromParent, disableRootViewHanding, errorHandler, extractSingleViewRecursive, frameMeta, generateDetachedLoader, generateFallbackRootView, generateNativeScriptView, generateRandomId, generateRootLayoutAndProxy, getFirstNativeLikeView, getItemViewRoot, getSingleViewRecursive, getViewClass, getViewMeta, instantiateDefaultStyleNormalizer, instantiateSupportedAnimationDriver, isBlank, isContentView, isDetachedElement, isInvisibleNode, isJsObject, isKnownView, isLayout, isListLikeIterable, isPresent, isView, onAfterLivesync, onBeforeLivesync, once, platformNativeScript, platformNativeScriptDynamic, postAngularBootstrap$, preAngularDisposal$, provideComponentInputBinding, provideLocationStrategy, provideNativeScriptHttpClient, provideNativeScriptNgZone, provideNativeScriptRouter, registerElement, registerNativeScriptViewComponents, rootRoute, runNativeScriptAngularApp, throwIfAlreadyLoaded, throwNoPortalAttachedError, throwNullPortalError, throwNullPortalOutletError, throwPortalAlreadyAttachedError, throwPortalOutletAlreadyDisposedError, throwUnknownPortalTypeError, COMPONENT_VARIABLE as ɵCOMPONENT_VARIABLE, CONTENT_ATTR as ɵCONTENT_ATTR, HOST_ATTR as ɵHOST_ATTR, NativeScriptDebug as ɵNativeScriptAngularDebug, viewUtil_d as ɵViewUtil, actionBarMeta as ɵactionBarMeta, elementMap as ɵelementMap, isActionItem as ɵisActionItem, isNavigationButton as ɵisNavigationButton };
2484
+ export type { AppLaunchView, AppOptions, AppRunOptions, ApplicationConfig, BaseShowModalOptions, BootstrapContext, CdkPortalOutletAttachedRef, ComponentInputBindingOptions, ComponentType, HmrOptions, Keyframe, LocationState, ModalDialogOptions, NamespaceFilter, NativeShowModalOptions, NavigationOptions, NgModuleEvent, NgModuleReason, NgView, NgViewTemplate, PageFactory, PageFactoryOptions, PortalOutlet, RootLocator, SelectableView, SetupItemViewArgs, ShowDialogOptions, TabViewItemDef, TemplatedItemsHost, TextView, ViewClass, ViewClassMeta, ViewExtensions, ViewResolver };