@symbiote-native/angular 3.4.0 → 3.5.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.
@@ -25,11 +25,12 @@ export type { IStatusBarProps, IStatusBarStyle } from './modules/status-bar';
25
25
  export { AppRegistry, HeadlessJsTaskError, setHostRegistrar, } from './modules/app-registry';
26
26
  export type { IComponentProvider, IAppConfig, IAppParameters, IRunnable, IHostRegistrar, IWrapperComponentProvider, IRegistry, IHeadlessTask, ITaskProvider, ITaskCanceller, ITaskCancelProvider, } from './modules/app-registry';
27
27
  export { ColorSchemeService, WindowDimensionsService, createResourceHook, createEventValueHook, injectEvent, injectEventListener, connectWatchedSignal, PermissionsServiceBase, } from './services';
28
+ export { ROOT_TAG, injectRootTag } from './root-tag';
28
29
  export { createAnimatedColor as injectAnimatedColor, createAnimatedValue as injectAnimatedValue, createAnimatedValueXY as injectAnimatedValueXY, } from '@symbiote-native/engine';
29
30
  export { AccessibilityInputsBase } from './accessibility-inputs';
30
31
  export { NativeViewBase } from './native-view-base';
31
32
  export { anchorStyleProp } from './primitives/shared';
32
- export { Alert, Share, ActionSheetIOS, Linking, Vibration, ToastAndroid, Settings, I18nManager, Dimensions, Appearance, AppState, Keyboard, KEYBOARD_EVENT, TextInputState, BackHandler, PermissionsAndroid, PERMISSIONS, RESULTS, AccessibilityInfo, LayoutAnimation, InteractionManager, PanResponder, PixelRatio, PlatformColor, DynamicColorIOS, } from '@symbiote-native/engine';
33
+ export { Alert, Share, ActionSheetIOS, Linking, Vibration, ToastAndroid, Settings, I18nManager, Dimensions, Appearance, matchMedia, MediaQueryList, MediaQueryListEvent, setVariable, getComputedVariable, registerProperty, AppState, Keyboard, KEYBOARD_EVENT, TextInputState, BackHandler, PermissionsAndroid, PERMISSIONS, RESULTS, AccessibilityInfo, LayoutAnimation, InteractionManager, PanResponder, PixelRatio, PlatformColor, DynamicColorIOS, } from '@symbiote-native/engine';
33
34
  export type { IAlertType, IAlertButtonStyle, IAlertButton, IAlertButtons, IAlertOptions, IShareContent, IShareOptions, IShareAction, IActionSheetIOSOptions, IShareActionSheetIOSOptions, IShareActionSheetError, IUrlEvent, II18nManagerConstants, IDisplayMetrics, IDisplayMetricsAndroid, IDimensionsPayload, IDimensionsSet, IDimensionsKey, IDimensionsChangeListener, IDimensionsStatic, IColorSchemeName, IColorSchemePreference, IAppStateStatus, IAppStateEvent, IKeyboardEventName, IKeyboardEvent, IKeyboardMetrics, IBackPressEventName, IBackPressHandler, IPermission, IPermissionStatus, IRationale, IAccessibilityChangeEvent, IAccessibilityChangeEventName, IAccessibilityChangeEventHandler, IAccessibilityAnnouncementFinishedEvent, IAnnounceForAccessibilityOptions, IAccessibilityEventType, ILayoutAnimationType, ILayoutAnimationProperty, ILayoutAnimationConfig, ILayoutAnimationAnim, IInteractionEvent, ISimpleTask, IPromiseTask, ITask, IHandle, IPanResponderGestureState, IPanResponderCallbacks, IGestureResponderHandlers, IPanResponderInstance, IPixelRatioStatic, IColorValue, IOpaqueColorValue, IDynamicColorIOSTuple, } from '@symbiote-native/engine';
34
35
  export { dlog, isDebug, Platform, processColor, setColorProcessor, setNativeViewConfigSource, StyleSheet, } from '@symbiote-native/engine';
35
36
  export type { IRootTag, ISymbioteEvent, ISymbioteNode, } from '@symbiote-native/engine';
@@ -63,13 +63,14 @@ export { StatusBar } from './modules/status-bar';
63
63
  // registrar so the native Fabric host finds our runnable by app key.
64
64
  export { AppRegistry, HeadlessJsTaskError, setHostRegistrar, } from './modules/app-registry';
65
65
  export { ColorSchemeService, WindowDimensionsService, createResourceHook, createEventValueHook, injectEvent, injectEventListener, connectWatchedSignal, PermissionsServiceBase, } from './services';
66
+ export { ROOT_TAG, injectRootTag } from './root-tag';
66
67
  export { createAnimatedColor as injectAnimatedColor, createAnimatedValue as injectAnimatedValue, createAnimatedValueXY as injectAnimatedValueXY, } from '@symbiote-native/engine';
67
68
  export { AccessibilityInputsBase } from './accessibility-inputs';
68
69
  export { NativeViewBase } from './native-view-base';
69
70
  export { anchorStyleProp } from './primitives/shared';
70
71
  // Framework-agnostic runtime modules from @symbiote-native/engine. Every adapter re-exports them so
71
72
  // app code names only @symbiote-native/angular.
72
- export { Alert, Share, ActionSheetIOS, Linking, Vibration, ToastAndroid, Settings, I18nManager, Dimensions, Appearance, AppState, Keyboard, KEYBOARD_EVENT, TextInputState, BackHandler, PermissionsAndroid, PERMISSIONS, RESULTS, AccessibilityInfo, LayoutAnimation, InteractionManager, PanResponder, PixelRatio, PlatformColor, DynamicColorIOS, } from '@symbiote-native/engine';
73
+ export { Alert, Share, ActionSheetIOS, Linking, Vibration, ToastAndroid, Settings, I18nManager, Dimensions, Appearance, matchMedia, MediaQueryList, MediaQueryListEvent, setVariable, getComputedVariable, registerProperty, AppState, Keyboard, KEYBOARD_EVENT, TextInputState, BackHandler, PermissionsAndroid, PERMISSIONS, RESULTS, AccessibilityInfo, LayoutAnimation, InteractionManager, PanResponder, PixelRatio, PlatformColor, DynamicColorIOS, } from '@symbiote-native/engine';
73
74
  export { dlog, isDebug, Platform, processColor, setColorProcessor, setNativeViewConfigSource, StyleSheet, } from '@symbiote-native/engine';
74
75
  // Diagnostics: per-window Angular-side counters (change-detection passes, renderer writes, list
75
76
  // recomputes, cell views). The engine's readCommitProfile() prices the commit; these say how many
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,yGAAyG;AACzG,8FAA8F;AAC9F,sGAAsG;AACtG,EAAE;AACF,4FAA4F;AAC5F,wFAAwF;AACxF,EAAE;AACF,kFAAkF;AAClF,kGAAkG;AAClG,mGAAmG;AACnG,EAAE;AACF,mGAAmG;AACnG,sGAAsG;AACtG,oFAAoF;AACpF,EAAE;AACF,kGAAkG;AAClG,mGAAmG;AACnG,mFAAmF;AAEnF,OAAO,yBAAyB,CAAC;AACjC,OAAO,YAAY,CAAC;AAEpB,OAAO,EACL,eAAe,EACf,QAAQ,EACR,2BAA2B,EAC3B,oBAAoB,EACpB,KAAK,EACL,oBAAoB,EACpB,KAAK,EACL,iBAAiB,EACjB,WAAW,EACX,iBAAiB,EACjB,0BAA0B,EAC1B,2BAA2B,EAC3B,IAAI,EACJ,uBAAuB,EACvB,IAAI,EACJ,0BAA0B,EAC1B,eAAe,EACf,sBAAsB,EACtB,kBAAkB,EAClB,mBAAmB,EACnB,oBAAoB,EACpB,oBAAoB,EACpB,kBAAkB,EAClB,oBAAoB,EACpB,uBAAuB,EACvB,uBAAuB,EACvB,uBAAuB,EACvB,qBAAqB,EACrB,0BAA0B,GAC3B,MAAM,cAAc,CAAC;AACtB,wFAAwF;AACxF,OAAO,EAAE,kBAAkB,EAAE,MAAM,2CAA2C,CAAC;AAC/E,OAAO,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAClD,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAC9C,kGAAkG;AAClG,6FAA6F;AAC7F,OAAO,EACL,gBAAgB,EAChB,aAAa,EACb,kBAAkB,EAClB,mBAAmB,EACnB,YAAY,EACZ,YAAY,GACb,MAAM,oBAAoB,CAAC;AAC5B,oGAAoG;AACpG,gGAAgG;AAChG,kEAAkE;AAClE,OAAO,EAAE,uBAAuB,EAAE,MAAM,oBAAoB,CAAC;AAqE7D,OAAO,EAAE,sBAAsB,EAAE,MAAM,cAAc,CAAC;AACtD,2FAA2F;AAC3F,gGAAgG;AAChG,2FAA2F;AAC3F,OAAO,EACL,iBAAiB,EACjB,eAAe,EACf,wBAAwB,EACxB,+BAA+B,EAC/B,aAAa,EACb,eAAe,EACf,8BAA8B,EAC9B,2BAA2B,EAC3B,sBAAsB,EACtB,YAAY,EACZ,yBAAyB,EACzB,YAAY,EACZ,yBAAyB,EACzB,gBAAgB,EAChB,qBAAqB,EACrB,mBAAmB,EACnB,wBAAwB,EACxB,oBAAoB,EACpB,iBAAiB,EACjB,mBAAmB,EACnB,aAAa,EACb,mBAAmB,EACnB,WAAW,EACX,gBAAgB,EAChB,sBAAsB,EACtB,yBAAyB,EACzB,8BAA8B,EAC9B,uBAAuB,EACvB,+BAA+B,EAC/B,WAAW,GACZ,MAAM,YAAY,CAAC;AACpB,qGAAqG;AACrG,oGAAoG;AACpG,mGAAmG;AACnG,mGAAmG;AACnG,OAAO,EACL,2BAA2B,EAC3B,oBAAoB,GACrB,MAAM,iBAAiB,CAAC;AAMzB,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,UAAU,CAAC;AAC1C,wFAAwF;AACxF,6DAA6D;AAC7D,mHAAmH;AACnH,iDAAiD;AACjD,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,EAAE,cAAc,EAAE,MAAM,yCAAyC,CAAC;AACzE,sFAAsF;AACtF,oGAAoG;AACpG,OAAO,EAAE,eAAe,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAC;AACzE,OAAO,EACL,YAAY,EACZ,iBAAiB,EACjB,SAAS,GAEV,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,gBAAgB,EAAE,uBAAuB,EAAE,MAAM,YAAY,CAAC;AACvE,iGAAiG;AACjG,kGAAkG;AAClG,gGAAgG;AAChG,UAAU;AACV,OAAO,EAAE,yBAAyB,EAAE,MAAM,wBAAwB,CAAC;AACnE,OAAO,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAE7D,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAEjD,kFAAkF;AAClF,qEAAqE;AACrE,OAAO,EACL,WAAW,EACX,mBAAmB,EACnB,gBAAgB,GACjB,MAAM,wBAAwB,CAAC;AAchC,OAAO,EACL,kBAAkB,EAClB,uBAAuB,EACvB,kBAAkB,EAClB,oBAAoB,EACpB,WAAW,EACX,mBAAmB,EACnB,oBAAoB,EACpB,sBAAsB,GACvB,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AACrD,OAAO,EACL,mBAAmB,IAAI,mBAAmB,EAC1C,mBAAmB,IAAI,mBAAmB,EAC1C,qBAAqB,IAAI,qBAAqB,GAC/C,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAE,uBAAuB,EAAE,MAAM,wBAAwB,CAAC;AACjE,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACpD,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAEtD,oGAAoG;AACpG,gDAAgD;AAChD,OAAO,EACL,KAAK,EACL,KAAK,EACL,cAAc,EACd,OAAO,EACP,SAAS,EACT,YAAY,EACZ,QAAQ,EACR,WAAW,EACX,UAAU,EACV,UAAU,EACV,UAAU,EACV,cAAc,EACd,mBAAmB,EACnB,WAAW,EACX,mBAAmB,EACnB,gBAAgB,EAChB,QAAQ,EACR,QAAQ,EACR,cAAc,EACd,cAAc,EACd,WAAW,EACX,kBAAkB,EAClB,WAAW,EACX,OAAO,EACP,iBAAiB,EACjB,eAAe,EACf,kBAAkB,EAClB,YAAY,EACZ,UAAU,EACV,aAAa,EACb,eAAe,GAChB,MAAM,yBAAyB,CAAC;AA0DjC,OAAO,EACL,IAAI,EACJ,OAAO,EACP,QAAQ,EACR,YAAY,EACZ,iBAAiB,EACjB,yBAAyB,EACzB,UAAU,GACX,MAAM,yBAAyB,CAAC;AAoCjC,gGAAgG;AAChG,kGAAkG;AAClG,mFAAmF;AACnF,OAAO,EACL,kBAAkB,EAClB,wBAAwB,EACxB,uBAAuB,GACxB,MAAM,eAAe,CAAC;AAGvB,8EAA8E;AAC9E,OAAO,EACL,kBAAkB,EAClB,MAAM,EACN,YAAY,EACZ,qBAAqB,EACrB,kBAAkB,GACnB,MAAM,yBAAyB,CAAC;AAWjC,kGAAkG;AAClG,oDAAoD;AACpD,OAAO,EACL,qBAAqB,EACrB,sBAAsB,EACtB,OAAO,EACP,WAAW,EACX,MAAM,EACN,uBAAuB,EACvB,aAAa,EACb,UAAU,EACV,mBAAmB,EACnB,kBAAkB,EAClB,sBAAsB,EACtB,sBAAsB,EACtB,QAAQ,EACR,SAAS,EACT,mBAAmB,EACnB,SAAS,EACT,WAAW,GACZ,MAAM,yBAAyB,CAAC"}
@@ -1,9 +1,9 @@
1
1
  import { type IRootTag, type SymbioteSurface } from '@symbiote-native/engine';
2
2
  import { type EnvironmentProviders, type Provider, type Type } from '@angular/core';
3
- export interface IMountOptions {
3
+ export type IMountOptions = {
4
4
  initialProps?: object;
5
5
  wrapperComponent?: Type<unknown>;
6
- }
6
+ };
7
7
  export declare function setRootProviders(providers: (Provider | EnvironmentProviders)[]): void;
8
8
  export declare function mount(rootTag: IRootTag, rootComponent: Type<unknown>, options?: IMountOptions): SymbioteSurface;
9
9
  export declare function unmount(rootTag: IRootTag): void;
@@ -8,6 +8,7 @@ import { createElement as createEngineElement, createSurface, disposeRoot, dlog,
8
8
  import { descriptorFor } from '@symbiote-native/components';
9
9
  import { ApplicationRef, createComponent, createEnvironmentInjector, DOCUMENT, enableProdMode, ErrorHandler, RendererFactory2, ɵINJECTOR_SCOPE as INJECTOR_SCOPE, ɵprovideZonelessChangeDetectionInternal as provideZonelessChangeDetectionInternal, } from '@angular/core';
10
10
  import { SymbioteRendererFactory } from '../renderer';
11
+ import { ROOT_TAG } from '../root-tag';
11
12
  import { ColorSchemeService, WindowDimensionsService } from '../services';
12
13
  // The two FFI-edge casts of this adapter, both confined here to bootstrap. Angular's core
13
14
  // types model a browser: the injector parent is a non-null EnvironmentInjector, the host is
@@ -29,39 +30,18 @@ function asAngularHost(hostNode) {
29
30
  });
30
31
  return hostNode;
31
32
  }
32
- // A bare `view` node, created directly through the engine (bypassing Angular's own
33
- // createElement, which only resolves KNOWN symbiote primitives, never an arbitrary component's
34
- // selector — see SymbioteRenderer.createElement). Used as the AppRegistry root's host when a
35
- // wrapperComponentProvider is set: Angular has no hostElement-less bootstrap for our renderer
36
- // (it would try `renderer.createElement(rootComponent.selector)`, which throws for anything
37
- // that isn't one of our primitives), so the root needs an explicit host too, one we then hand
38
- // to the wrapper as projectable content.
33
+ // A bare `view` node made through the engine, since Angular's `createElement` resolves only
34
+ // known primitives, never a component selector
35
+ // Host of the root when `wrapperComponentProvider` is set, projected into the wrapper
39
36
  function createDetachedViewHost() {
40
37
  // 'view', not 'View': the public name is not a Fabric view name, and until
41
38
  // makeDescriptorFor learned to reject one it fell through to a view literally named `View`.
42
39
  const descriptor = descriptorFor('view');
43
40
  return toPublicInstance(createEngineElement(descriptor.component, descriptor.isText));
44
41
  }
45
- // Angular's whole unhandled-error funnel: INTERNAL_APPLICATION_ERROR_HANDLER resolves this token
46
- // and hands it everything the framework caught on the app's behalf — a scheduled (async) tick that
47
- // threw, a template listener that threw, a rejected pending task. Routed to the engine so an
48
- // Angular app reaches the same native redbox as a React one instead of a console line nobody sees
49
- // off a dev machine.
50
- //
51
- // There is deliberately no caught-vs-uncaught split here, unlike the React adapter's
52
- // onUncaughtError/onCaughtError pair. Angular has no error boundary, and every path where the app
53
- // DID handle something keeps clear of this seam on its own: a `@defer` block with an `@error`
54
- // branch renders that branch (defer/rendering.ts calls handleUncaughtError only when there is
55
- // none), `resource()` parks the failure in its own error signal, and an app-level try/catch or
56
- // `catchError` never reaches Angular at all. So anything arriving here is by construction
57
- // unclaimed, and the redbox is the right answer for all of it.
58
- //
59
- // Two things this must not do. It must not also call `super.handleError` — reportUncaughtError
60
- // picks exactly one channel (host reporter or console) precisely because RN routes console.error
61
- // into LogBox too, so the pair would double-report every error. And it must not throw: the
62
- // scheduler invokes this from inside its own `catch` (zoneless_scheduling_impl.ts's tick), where a
63
- // second throw escapes to the host and kills the "report and keep running" behaviour the provider
64
- // exists for.
42
+ // Angular's whole unhandled-error funnel, routed to the engine for the native redbox
43
+ // No caught-vs-uncaught split, Angular has no error boundary and handled errors never arrive
44
+ // Never `super.handleError` (double report) and never throws (the scheduler calls it in a `catch`)
65
45
  class SymbioteErrorHandler extends ErrorHandler {
66
46
  handleError(error) {
67
47
  reportUncaughtError(error, { origin: 'angular render' });
@@ -129,10 +109,11 @@ function settleAngularDevMode() {
129
109
  enableProdMode();
130
110
  }
131
111
  // Kept apart from `mount` so the provider list reads as one block
132
- function createRootInjector(surface, rendererFactory) {
112
+ function createRootInjector(rootTag, surface, rendererFactory) {
133
113
  return createEnvironmentInjector([
134
114
  ...rootProviders,
135
115
  { provide: RendererFactory2, useValue: rendererFactory },
116
+ { provide: ROOT_TAG, useValue: rootTag },
136
117
  // `resource()` resolves TransferState, which calls `doc.getElementById`
137
118
  // a stub without it throws mid-construction and the whole screen renders nothing
138
119
  {
@@ -184,7 +165,7 @@ export function mount(rootTag, rootComponent, options) {
184
165
  teardown(rootTag);
185
166
  const surface = createSurface(rootTag);
186
167
  const rendererFactory = new SymbioteRendererFactory(surface);
187
- const injector = createRootInjector(surface, rendererFactory);
168
+ const injector = createRootInjector(rootTag, surface, rendererFactory);
188
169
  const { cmpRef, rootRef } = createRoots(injector, surface, rootComponent, options);
189
170
  // `tick()` then drives both root views through the real scheduler
190
171
  const appRef = injector.get(ApplicationRef);
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/render/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/render/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ import { InjectionToken } from '@angular/core';
2
+ import type { IRootTag } from '@symbiote-native/engine';
3
+ export declare const ROOT_TAG: InjectionToken<number>;
4
+ export declare function injectRootTag(): IRootTag;
@@ -0,0 +1,10 @@
1
+ // RN's `RootTagContext` for Angular: `mount` provides the surface tag, 0 outside any surface
2
+ import { InjectionToken, inject } from '@angular/core';
3
+ const NO_SURFACE = 0;
4
+ export const ROOT_TAG = new InjectionToken('symbiote.rootTag', {
5
+ factory: () => NO_SURFACE,
6
+ });
7
+ export function injectRootTag() {
8
+ return inject(ROOT_TAG);
9
+ }
10
+ //# sourceMappingURL=root-tag.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"root-tag.js","sourceRoot":"","sources":["../../src/root-tag.ts"],"names":[],"mappings":"AAAA,6FAA6F;AAE7F,OAAO,EAAE,cAAc,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AAGvD,MAAM,UAAU,GAAG,CAAC,CAAC;AAErB,MAAM,CAAC,MAAM,QAAQ,GAAG,IAAI,cAAc,CAAW,kBAAkB,EAAE;IACvE,OAAO,EAAE,GAAG,EAAE,CAAC,UAAU;CAC1B,CAAC,CAAC;AAEH,MAAM,UAAU,aAAa;IAC3B,OAAO,MAAM,CAAC,QAAQ,CAAC,CAAC;AAC1B,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@symbiote-native/angular",
3
- "version": "3.4.0",
3
+ "version": "3.5.0",
4
4
  "description": "SymbioteNative's Angular adapter — a Renderer2/RendererFactory2 with DOM-less bootstrap driving real native iOS/Android views through the same engine as the other adapters.",
5
5
  "keywords": [
6
6
  "react-native",
@@ -73,7 +73,7 @@
73
73
  "@angular/core": ">=20",
74
74
  "@angular/forms": ">=20",
75
75
  "react-native": ">=0.86",
76
- "@symbiote-native/engine": "^1.7.0"
76
+ "@symbiote-native/engine": "^1.8.0"
77
77
  },
78
78
  "devDependencies": {
79
79
  "@angular/compiler": "~22.0.8",
@@ -83,8 +83,8 @@
83
83
  "@types/babel__core": "^7.20.5",
84
84
  "@types/node": "^26.0.0",
85
85
  "typescript": "~6.0.0",
86
- "@symbiote-native/engine": "1.7.0",
87
- "@symbiote-native/test-utils": "0.5.0"
86
+ "@symbiote-native/engine": "1.8.0",
87
+ "@symbiote-native/test-utils": "0.5.1"
88
88
  },
89
89
  "scripts": {
90
90
  "clean": "rm -rf build",
package/src/index.ts CHANGED
@@ -242,6 +242,7 @@ export {
242
242
  connectWatchedSignal,
243
243
  PermissionsServiceBase,
244
244
  } from './services';
245
+ export { ROOT_TAG, injectRootTag } from './root-tag';
245
246
  export {
246
247
  createAnimatedColor as injectAnimatedColor,
247
248
  createAnimatedValue as injectAnimatedValue,
@@ -264,6 +265,12 @@ export {
264
265
  I18nManager,
265
266
  Dimensions,
266
267
  Appearance,
268
+ matchMedia,
269
+ MediaQueryList,
270
+ MediaQueryListEvent,
271
+ setVariable,
272
+ getComputedVariable,
273
+ registerProperty,
267
274
  AppState,
268
275
  Keyboard,
269
276
  KEYBOARD_EVENT,
@@ -34,6 +34,7 @@ import {
34
34
  type Type,
35
35
  } from '@angular/core';
36
36
  import { SymbioteRendererFactory } from '../renderer';
37
+ import { ROOT_TAG } from '../root-tag';
37
38
  import { ColorSchemeService, WindowDimensionsService } from '../services';
38
39
 
39
40
  // The two FFI-edge casts of this adapter, both confined here to bootstrap. Angular's core
@@ -57,13 +58,9 @@ function asAngularHost(hostNode: SymbioteSurface | ISymbioteNode): Element {
57
58
  return hostNode as unknown as Element;
58
59
  }
59
60
 
60
- // A bare `view` node, created directly through the engine (bypassing Angular's own
61
- // createElement, which only resolves KNOWN symbiote primitives, never an arbitrary component's
62
- // selector — see SymbioteRenderer.createElement). Used as the AppRegistry root's host when a
63
- // wrapperComponentProvider is set: Angular has no hostElement-less bootstrap for our renderer
64
- // (it would try `renderer.createElement(rootComponent.selector)`, which throws for anything
65
- // that isn't one of our primitives), so the root needs an explicit host too, one we then hand
66
- // to the wrapper as projectable content.
61
+ // A bare `view` node made through the engine, since Angular's `createElement` resolves only
62
+ // known primitives, never a component selector
63
+ // Host of the root when `wrapperComponentProvider` is set, projected into the wrapper
67
64
  function createDetachedViewHost(): ISymbioteNode {
68
65
  // 'view', not 'View': the public name is not a Fabric view name, and until
69
66
  // makeDescriptorFor learned to reject one it fell through to a view literally named `View`.
@@ -73,53 +70,32 @@ function createDetachedViewHost(): ISymbioteNode {
73
70
  );
74
71
  }
75
72
 
76
- // Angular's whole unhandled-error funnel: INTERNAL_APPLICATION_ERROR_HANDLER resolves this token
77
- // and hands it everything the framework caught on the app's behalf — a scheduled (async) tick that
78
- // threw, a template listener that threw, a rejected pending task. Routed to the engine so an
79
- // Angular app reaches the same native redbox as a React one instead of a console line nobody sees
80
- // off a dev machine.
81
- //
82
- // There is deliberately no caught-vs-uncaught split here, unlike the React adapter's
83
- // onUncaughtError/onCaughtError pair. Angular has no error boundary, and every path where the app
84
- // DID handle something keeps clear of this seam on its own: a `@defer` block with an `@error`
85
- // branch renders that branch (defer/rendering.ts calls handleUncaughtError only when there is
86
- // none), `resource()` parks the failure in its own error signal, and an app-level try/catch or
87
- // `catchError` never reaches Angular at all. So anything arriving here is by construction
88
- // unclaimed, and the redbox is the right answer for all of it.
89
- //
90
- // Two things this must not do. It must not also call `super.handleError` — reportUncaughtError
91
- // picks exactly one channel (host reporter or console) precisely because RN routes console.error
92
- // into LogBox too, so the pair would double-report every error. And it must not throw: the
93
- // scheduler invokes this from inside its own `catch` (zoneless_scheduling_impl.ts's tick), where a
94
- // second throw escapes to the host and kills the "report and keep running" behaviour the provider
95
- // exists for.
73
+ // Angular's whole unhandled-error funnel, routed to the engine for the native redbox
74
+ // No caught-vs-uncaught split, Angular has no error boundary and handled errors never arrive
75
+ // Never `super.handleError` (double report) and never throws (the scheduler calls it in a `catch`)
96
76
  class SymbioteErrorHandler extends ErrorHandler {
97
77
  override handleError(error: unknown): void {
98
78
  reportUncaughtError(error, { origin: 'angular render' });
99
79
  }
100
80
  }
101
81
 
102
- interface IMountedApp {
82
+ type IMountedApp = {
103
83
  cmpRef: ComponentRef<unknown>;
104
84
  rootRef: ComponentRef<unknown> | undefined;
105
85
  injector: EnvironmentInjector;
106
86
  /**
107
- * Kept so teardown can release it. Angular never will: it is provided as a `useValue`, so the
108
- * injector has nothing to destroy, and the renderer it owns listens to the engine's flush door
109
- * for as long as the surface lives. See `SymbioteRendererFactory.dispose`.
87
+ * Kept so teardown can release it, a `useValue` provider gives the injector nothing to destroy
88
+ * See `SymbioteRendererFactory.dispose`
110
89
  */
111
90
  rendererFactory: SymbioteRendererFactory;
112
- }
91
+ };
113
92
 
114
- // AppRegistry's `wrapperComponentProvider` support: the root renders detached (Angular gives
115
- // it its own host node via our renderer, not yet attached anywhere), and the wrapper — the
116
- // component actually attached to the surface — receives that host node as a projected child.
117
- // `<ng-content>` in the wrapper's template is the Angular idiom for "render my children", the
118
- // direct twin of React's `createElement(Wrapper, null, rootElement)`.
119
- export interface IMountOptions {
93
+ // `wrapperComponentProvider` support: the root renders detached and the wrapper, attached to the
94
+ // surface, receives its host as projected content through `<ng-content>`
95
+ export type IMountOptions = {
120
96
  initialProps?: object;
121
97
  wrapperComponent?: Type<unknown>;
122
- }
98
+ };
123
99
 
124
100
  // App-level providers (`provideHttpClient()` and the like), set once at bootstrap
125
101
  let rootProviders: (Provider | EnvironmentProviders)[] = [];
@@ -158,14 +134,9 @@ function teardown(rootTag: IRootTag): void {
158
134
  disposeRoot(rootTag);
159
135
  }
160
136
 
161
- // Metro's build switch, and esbuild's in this repo's headless runner. Declared HERE rather than in
162
- // an ambient `globals.d.ts`, because the AOT tests (`elements.test.ts`, `style-input-aot.test.ts`)
163
- // build their own ngtsc programs from an explicit file list that an ambient declaration never
164
- // reaches — seven of them went red with `Cannot find name '__DEV__'`, reported as an empty
165
- // diagnostic set, which reads as "the template checker found nothing" and is not that.
166
- //
167
- // `declare const` emits no JavaScript, so it shadows nothing at runtime and both bundlers still
168
- // substitute the identifier.
137
+ // Metro's build switch, and esbuild's in this repo's headless runner
138
+ // Declared here, not in an ambient `globals.d.ts`: the AOT tests build their own ngtsc programs
139
+ // from an explicit file list that never reaches an ambient declaration
169
140
  declare const __DEV__: boolean;
170
141
 
171
142
  /**
@@ -202,6 +173,7 @@ function settleAngularDevMode(): void {
202
173
 
203
174
  // Kept apart from `mount` so the provider list reads as one block
204
175
  function createRootInjector(
176
+ rootTag: IRootTag,
205
177
  surface: SymbioteSurface,
206
178
  rendererFactory: SymbioteRendererFactory,
207
179
  ): EnvironmentInjector {
@@ -209,6 +181,7 @@ function createRootInjector(
209
181
  [
210
182
  ...rootProviders,
211
183
  { provide: RendererFactory2, useValue: rendererFactory },
184
+ { provide: ROOT_TAG, useValue: rootTag },
212
185
  // `resource()` resolves TransferState, which calls `doc.getElementById`
213
186
  // a stub without it throws mid-construction and the whole screen renders nothing
214
187
  {
@@ -232,10 +205,10 @@ function createRootInjector(
232
205
  );
233
206
  }
234
207
 
235
- interface IRoots {
208
+ type IRoots = {
236
209
  cmpRef: ComponentRef<unknown>;
237
210
  rootRef: ComponentRef<unknown> | undefined;
238
- }
211
+ };
239
212
 
240
213
  function createRoots(
241
214
  injector: EnvironmentInjector,
@@ -279,7 +252,7 @@ export function mount(
279
252
 
280
253
  const surface = createSurface(rootTag);
281
254
  const rendererFactory = new SymbioteRendererFactory(surface);
282
- const injector = createRootInjector(surface, rendererFactory);
255
+ const injector = createRootInjector(rootTag, surface, rendererFactory);
283
256
  const { cmpRef, rootRef } = createRoots(
284
257
  injector,
285
258
  surface,
@@ -0,0 +1,14 @@
1
+ // RN's `RootTagContext` for Angular: `mount` provides the surface tag, 0 outside any surface
2
+
3
+ import { InjectionToken, inject } from '@angular/core';
4
+ import type { IRootTag } from '@symbiote-native/engine';
5
+
6
+ const NO_SURFACE = 0;
7
+
8
+ export const ROOT_TAG = new InjectionToken<IRootTag>('symbiote.rootTag', {
9
+ factory: () => NO_SURFACE,
10
+ });
11
+
12
+ export function injectRootTag(): IRootTag {
13
+ return inject(ROOT_TAG);
14
+ }