@symbiote-native/angular 0.4.0 → 0.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.
Files changed (106) hide show
  1. package/bin/symbiote-angular-dev.cjs +43 -1
  2. package/build/angular/components/{input-accessory-view.js → input-accessory-view/index.js} +2 -2
  3. package/build/angular/components/input-accessory-view/index.js.map +1 -0
  4. package/build/angular/components/{keyboard-avoiding-view.js → keyboard-avoiding-view/index.js} +2 -2
  5. package/build/angular/components/keyboard-avoiding-view/index.js.map +1 -0
  6. package/build/angular/components/{modal.js → modal/index.js} +2 -2
  7. package/build/angular/components/modal/index.js.map +1 -0
  8. package/build/angular/components/{refresh-control.js → refresh-control/index.js} +2 -2
  9. package/build/angular/components/refresh-control/index.js.map +1 -0
  10. package/build/angular/components/{safe-area-view.js → safe-area-view/index.js} +2 -2
  11. package/build/angular/components/safe-area-view/index.js.map +1 -0
  12. package/build/angular/components/{touchable.d.ts → touchable/index.d.ts} +1 -1
  13. package/build/angular/components/{touchable.js → touchable/index.js} +4 -4
  14. package/build/angular/components/touchable/index.js.map +1 -0
  15. package/build/angular/components/{touchable-native-feedback.d.ts → touchable-native-feedback/index.d.ts} +1 -1
  16. package/build/angular/components/{touchable-native-feedback.js → touchable-native-feedback/index.js} +3 -3
  17. package/build/angular/components/touchable-native-feedback/index.js.map +1 -0
  18. package/build/angular/{create-portal.js → create-portal/index.js} +1 -1
  19. package/build/angular/create-portal/index.js.map +1 -0
  20. package/build/angular/{create-tunnel.js → create-tunnel/index.js} +1 -1
  21. package/build/angular/create-tunnel/index.js.map +1 -0
  22. package/build/angular/modules/animated/animated-leaf-binder/index.d.ts +14 -0
  23. package/build/angular/modules/animated/animated-leaf-binder/index.js +91 -0
  24. package/build/angular/modules/animated/animated-leaf-binder/index.js.map +1 -0
  25. package/build/angular/modules/{status-bar.js → status-bar/index.js} +1 -1
  26. package/build/angular/modules/status-bar/index.js.map +1 -0
  27. package/build/{render.js → angular/render/index.js} +15 -3
  28. package/build/angular/render/index.js.map +1 -0
  29. package/build/{renderer.js → angular/renderer/index.js} +11 -4
  30. package/build/angular/renderer/index.js.map +1 -0
  31. package/build/components/{input-accessory-view.js → input-accessory-view/index.js} +1 -1
  32. package/build/components/{keyboard-avoiding-view.js → keyboard-avoiding-view/index.js} +1 -1
  33. package/build/components/{modal.js → modal/index.js} +1 -1
  34. package/build/components/{refresh-control.js → refresh-control/index.js} +1 -1
  35. package/build/components/{safe-area-view.js → safe-area-view/index.js} +1 -1
  36. package/build/components/{touchable.d.ts → touchable/index.d.ts} +1 -1
  37. package/build/components/{touchable.js → touchable/index.js} +3 -3
  38. package/build/components/{touchable-native-feedback.d.ts → touchable-native-feedback/index.d.ts} +1 -1
  39. package/build/components/{touchable-native-feedback.js → touchable-native-feedback/index.js} +2 -2
  40. package/build/modules/animated/animated-leaf-binder/index.d.ts +14 -0
  41. package/build/modules/animated/animated-leaf-binder/index.js +90 -0
  42. package/build/{angular/render.js → render/index.js} +14 -4
  43. package/build/{angular/renderer.js → renderer/index.js} +10 -5
  44. package/package.json +6 -5
  45. package/src/angular-gaps.test.ts +1 -1
  46. package/src/components/{input-accessory-view.ts → input-accessory-view/index.ts} +5 -1
  47. package/src/components/{input-accessory-view.test.ts → input-accessory-view/input-accessory-view.test.ts} +2 -2
  48. package/src/components/{keyboard-avoiding-view.ts → keyboard-avoiding-view/index.ts} +1 -1
  49. package/src/components/{keyboard-avoiding-view.test.ts → keyboard-avoiding-view/keyboard-avoiding-view.test.ts} +2 -2
  50. package/src/components/{modal.ts → modal/index.ts} +1 -1
  51. package/src/components/{modal.test.ts → modal/modal.test.ts} +2 -2
  52. package/src/components/{refresh-control.ts → refresh-control/index.ts} +1 -1
  53. package/src/components/{refresh-control.test.ts → refresh-control/refresh-control.test.ts} +2 -2
  54. package/src/components/{safe-area-view.ts → safe-area-view/index.ts} +1 -1
  55. package/src/components/{safe-area-view.test.ts → safe-area-view/safe-area-view.test.ts} +2 -2
  56. package/src/components/{touchable.ts → touchable/index.ts} +3 -3
  57. package/src/components/{touchable.test.ts → touchable/touchable.test.ts} +2 -2
  58. package/src/components/{touchable-native-feedback.ts → touchable-native-feedback/index.ts} +2 -2
  59. package/src/components/{touchable-native-feedback.test.ts → touchable-native-feedback/touchable-native-feedback.test.ts} +2 -2
  60. package/src/{create-portal.test.ts → create-portal/create-portal.test.ts} +3 -3
  61. package/src/{create-tunnel.test.ts → create-tunnel/create-tunnel.test.ts} +3 -3
  62. package/src/modules/animated/animated-leaf-binder/animated-leaf-binder.test.ts +116 -0
  63. package/src/modules/animated/animated-leaf-binder/index.ts +101 -0
  64. package/src/modules/{status-bar.test.ts → status-bar/status-bar.test.ts} +2 -2
  65. package/src/{render.ts → render/index.ts} +14 -2
  66. package/src/{render.test.ts → render/render.test.ts} +1 -1
  67. package/src/{renderer.ts → renderer/index.ts} +58 -50
  68. package/src/{renderer.test.ts → renderer/renderer.test.ts} +1 -1
  69. package/build/angular/components/input-accessory-view.js.map +0 -1
  70. package/build/angular/components/keyboard-avoiding-view.js.map +0 -1
  71. package/build/angular/components/modal.js.map +0 -1
  72. package/build/angular/components/refresh-control.js.map +0 -1
  73. package/build/angular/components/safe-area-view.js.map +0 -1
  74. package/build/angular/components/touchable-native-feedback.js.map +0 -1
  75. package/build/angular/components/touchable.js.map +0 -1
  76. package/build/angular/create-portal.js.map +0 -1
  77. package/build/angular/create-tunnel.js.map +0 -1
  78. package/build/angular/modules/status-bar.js.map +0 -1
  79. package/build/angular/render.js.map +0 -1
  80. package/build/angular/renderer.js.map +0 -1
  81. /package/build/angular/components/{input-accessory-view.d.ts → input-accessory-view/index.d.ts} +0 -0
  82. /package/build/angular/components/{keyboard-avoiding-view.d.ts → keyboard-avoiding-view/index.d.ts} +0 -0
  83. /package/build/angular/components/{modal.d.ts → modal/index.d.ts} +0 -0
  84. /package/build/angular/components/{refresh-control.d.ts → refresh-control/index.d.ts} +0 -0
  85. /package/build/angular/components/{safe-area-view.d.ts → safe-area-view/index.d.ts} +0 -0
  86. /package/build/angular/{create-portal.d.ts → create-portal/index.d.ts} +0 -0
  87. /package/build/angular/{create-tunnel.d.ts → create-tunnel/index.d.ts} +0 -0
  88. /package/build/angular/modules/{status-bar.d.ts → status-bar/index.d.ts} +0 -0
  89. /package/build/angular/{render.d.ts → render/index.d.ts} +0 -0
  90. /package/build/angular/{renderer.d.ts → renderer/index.d.ts} +0 -0
  91. /package/build/components/{input-accessory-view.d.ts → input-accessory-view/index.d.ts} +0 -0
  92. /package/build/components/{keyboard-avoiding-view.d.ts → keyboard-avoiding-view/index.d.ts} +0 -0
  93. /package/build/components/{modal.d.ts → modal/index.d.ts} +0 -0
  94. /package/build/components/{refresh-control.d.ts → refresh-control/index.d.ts} +0 -0
  95. /package/build/components/{safe-area-view.d.ts → safe-area-view/index.d.ts} +0 -0
  96. /package/build/{create-portal.d.ts → create-portal/index.d.ts} +0 -0
  97. /package/build/{create-portal.js → create-portal/index.js} +0 -0
  98. /package/build/{create-tunnel.d.ts → create-tunnel/index.d.ts} +0 -0
  99. /package/build/{create-tunnel.js → create-tunnel/index.js} +0 -0
  100. /package/build/modules/{status-bar.d.ts → status-bar/index.d.ts} +0 -0
  101. /package/build/modules/{status-bar.js → status-bar/index.js} +0 -0
  102. /package/build/{render.d.ts → render/index.d.ts} +0 -0
  103. /package/build/{renderer.d.ts → renderer/index.d.ts} +0 -0
  104. /package/src/{create-portal.ts → create-portal/index.ts} +0 -0
  105. /package/src/{create-tunnel.ts → create-tunnel/index.ts} +0 -0
  106. /package/src/modules/{status-bar.ts → status-bar/index.ts} +0 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/renderer/index.ts"],"names":[],"mappings":"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"}
@@ -41,7 +41,7 @@ var __runInitializers = (this && this.__runInitializers) || function (thisArg, i
41
41
  import { CUSTOM_ELEMENTS_SCHEMA, ChangeDetectionStrategy, Component, ElementRef, EventEmitter, inject, Input, Output, } from '@angular/core';
42
42
  import { resolveAccessibilityProps, } from '@symbiote-native/components';
43
43
  import { isSymbioteEvent, } from '@symbiote-native/engine';
44
- import { anchorHostStyle, InputAccessoryViewHost, SymbioteHostPropsDirective } from '../primitives';
44
+ import { anchorHostStyle, InputAccessoryViewHost, SymbioteHostPropsDirective, } from '../../primitives';
45
45
  let InputAccessoryView = (() => {
46
46
  let _classDecorators = [Component({
47
47
  selector: 'InputAccessoryView',
@@ -47,7 +47,7 @@ var __runInitializers = (this && this.__runInitializers) || function (thisArg, i
47
47
  import { CUSTOM_ELEMENTS_SCHEMA, ChangeDetectionStrategy, ChangeDetectorRef, Component, ElementRef, EventEmitter, inject, Input, Output, } from '@angular/core';
48
48
  import { computeInset, readKeyboardFrame, readLayoutFrame, resolveAccessibilityProps, resolveKeyboardAvoidingLayout, DEFAULT_VERTICAL_OFFSET, } from '@symbiote-native/components';
49
49
  import { Keyboard, KEYBOARD_EVENT, dlog, isSymbioteEvent, } from '@symbiote-native/engine';
50
- import { anchorHostStyle, SymbioteHostPropsDirective, ViewHost } from '../primitives';
50
+ import { anchorHostStyle, SymbioteHostPropsDirective, ViewHost } from '../../primitives';
51
51
  let KeyboardAvoidingView = (() => {
52
52
  let _classDecorators = [Component({
53
53
  selector: 'KeyboardAvoidingView',
@@ -44,7 +44,7 @@ var __runInitializers = (this && this.__runInitializers) || function (thisArg, i
44
44
  import { CUSTOM_ELEMENTS_SCHEMA, ChangeDetectionStrategy, ChangeDetectorRef, Component, ElementRef, EventEmitter, inject, Input, Output, } from '@angular/core';
45
45
  import { createInitialModalState, modalReducer, renderModal, resolveAccessibilityProps, shouldRenderModal, } from '@symbiote-native/components';
46
46
  import { dlog, isSymbioteEvent, } from '@symbiote-native/engine';
47
- import { anchorHostStyle, ModalHost, SymbioteHostPropsDirective, ViewHost } from '../primitives';
47
+ import { anchorHostStyle, ModalHost, SymbioteHostPropsDirective, ViewHost } from '../../primitives';
48
48
  const ORIENTATIONS = ['portrait', 'landscape'];
49
49
  function readOrientation(event) {
50
50
  const native = event.nativeEvent;
@@ -48,7 +48,7 @@ var __runInitializers = (this && this.__runInitializers) || function (thisArg, i
48
48
  import { CUSTOM_ELEMENTS_SCHEMA, ChangeDetectionStrategy, Component, ElementRef, EventEmitter, inject, Input, Output, ViewChild, } from '@angular/core';
49
49
  import { resolveAccessibilityProps, } from '@symbiote-native/components';
50
50
  import { dispatchViewCommand, dlog, isSymbioteEvent, isSymbioteNode, } from '@symbiote-native/engine';
51
- import { anchorHostStyle, RefreshControlHost, SymbioteHostPropsDirective } from '../primitives';
51
+ import { anchorHostStyle, RefreshControlHost, SymbioteHostPropsDirective } from '../../primitives';
52
52
  let RefreshControl = (() => {
53
53
  let _classDecorators = [Component({
54
54
  selector: 'RefreshControl',
@@ -42,7 +42,7 @@ var __runInitializers = (this && this.__runInitializers) || function (thisArg, i
42
42
  import { CUSTOM_ELEMENTS_SCHEMA, ChangeDetectionStrategy, Component, ElementRef, EventEmitter, inject, Input, Output, } from '@angular/core';
43
43
  import { resolveAccessibilityProps, } from '@symbiote-native/components';
44
44
  import { isSymbioteEvent, } from '@symbiote-native/engine';
45
- import { anchorHostStyle, SafeAreaViewHost, SymbioteHostPropsDirective } from '../primitives';
45
+ import { anchorHostStyle, SafeAreaViewHost, SymbioteHostPropsDirective } from '../../primitives';
46
46
  let SafeAreaView = (() => {
47
47
  let _classDecorators = [Component({
48
48
  selector: 'SafeAreaView',
@@ -1,7 +1,7 @@
1
1
  import { EventEmitter } from '@angular/core';
2
2
  import { type IAccessibilityProps, type IAccessibilityStateValue, type IAriaProps, type IPressableAndroidRippleConfig, type IPressState, type IPressTimingProps, type IRectOffset } from '@symbiote-native/components';
3
3
  import { type ISymbioteEvent, type IStyleProp, type IViewStyle } from '@symbiote-native/engine';
4
- import { type IAngularPressableInputs } from './pressable';
4
+ import { type IAngularPressableInputs } from '../pressable';
5
5
  type IAngularTouchableBaseProps = Omit<IAngularPressableInputs, 'style'> & IPressTimingProps & {
6
6
  style?: IStyleProp<IViewStyle>;
7
7
  };
@@ -58,9 +58,9 @@ var __runInitializers = (this && this.__runInitializers) || function (thisArg, i
58
58
  import { CUSTOM_ELEMENTS_SCHEMA, ChangeDetectionStrategy, Component, ElementRef, EventEmitter, inject, Input, Output, } from '@angular/core';
59
59
  import { computePressOutWait, DEFAULT_ACTIVE_OPACITY, DEFAULT_HIGHLIGHT_CHILD_OPACITY, DEFAULT_MIN_PRESS_DURATION_MS, DEFAULT_UNDERLAY_COLOR, OPACITY_ACTIVE_DURATION_MS, OPACITY_INACTIVE_DURATION_MS, RESTING_OPACITY, } from '@symbiote-native/components';
60
60
  import { dlog, } from '@symbiote-native/engine';
61
- import { anchorHostStyle, anchorStyleProp } from '../primitives';
62
- import { Pressable } from './pressable';
63
- import { Animated, AnimatedView } from '../modules/animated';
61
+ import { anchorHostStyle, anchorStyleProp } from '../../primitives';
62
+ import { Pressable } from '../pressable';
63
+ import { Animated, AnimatedView } from '../../modules/animated';
64
64
  let TouchableOpacity = (() => {
65
65
  let _classDecorators = [Component({
66
66
  selector: 'TouchableOpacity',
@@ -1,7 +1,7 @@
1
1
  import { EventEmitter, type OnChanges } from '@angular/core';
2
2
  import { canUseNativeForeground, rippleBackground, selectableBackground, selectableBackgroundBorderless, type IAccessibilityProps, type IAccessibilityStateValue, type IAriaProps, type INativeFeedbackBackground, type IPressableAndroidRippleConfig, type IRectOffset } from '@symbiote-native/components';
3
3
  import { type ISymbioteEvent } from '@symbiote-native/engine';
4
- import { type IAngularPressableInputs } from './pressable';
4
+ import { type IAngularPressableInputs } from '../pressable';
5
5
  export type { INativeFeedbackBackground, IThemeAttrBackground, IRippleBackground, } from '@symbiote-native/components';
6
6
  export type IAngularTouchableNativeFeedbackProps = Omit<IAngularPressableInputs, 'style'> & {
7
7
  background?: INativeFeedbackBackground;
@@ -54,8 +54,8 @@ var __runInitializers = (this && this.__runInitializers) || function (thisArg, i
54
54
  import { CUSTOM_ELEMENTS_SCHEMA, ChangeDetectionStrategy, Component, ElementRef, EventEmitter, inject, Input, Output, } from '@angular/core';
55
55
  import { backgroundProps, canUseNativeForeground, resolveAccessibilityProps, resolveDisabledAccessibilityState, rippleBackground, selectableBackground, selectableBackgroundBorderless, } from '@symbiote-native/components';
56
56
  import { dlog, isSymbioteEvent } from '@symbiote-native/engine';
57
- import { anchorHostStyle, SymbioteHostPropsDirective, ViewHost } from '../primitives';
58
- import { Pressable } from './pressable';
57
+ import { anchorHostStyle, SymbioteHostPropsDirective, ViewHost } from '../../primitives';
58
+ import { Pressable } from '../pressable';
59
59
  let TouchableNativeFeedback = (() => {
60
60
  let _classDecorators = [Component({
61
61
  selector: 'TouchableNativeFeedback',
@@ -0,0 +1,14 @@
1
+ import { type ISymbioteNode } from '@symbiote-native/engine';
2
+ export declare class AnimatedLeafBinder {
3
+ private readonly resolveNode;
4
+ private readonly label;
5
+ private attached;
6
+ private cancelBind;
7
+ private eventDetachers;
8
+ constructor(resolveNode: () => ISymbioteNode | null, label: string);
9
+ reconcile(props: Record<string, unknown>, wantsNative: boolean): void;
10
+ private bindNode;
11
+ private attachEvents;
12
+ private detachEvents;
13
+ destroy(): void;
14
+ }
@@ -0,0 +1,90 @@
1
+ // Pure Fabrication (GRASP): the leaf-lifecycle orchestration shared by every Animated*
2
+ // wrapper, extracted out of AnimatedComponentBase so AnimatedImage — which cannot extend
3
+ // AnimatedComponentBase, since it must extend ImageBase for TS's-native image handling —
4
+ // gets the SAME logic via composition instead of copy-pasting it. Framework-thin on
5
+ // purpose: it knows nothing about Angular (@ViewChild, DI, change detection), only the
6
+ // engine's Animated leaf + commit primitives, so it stays testable without any Angular
7
+ // bootstrap. NOTE: react/vue drive this same dance through their own runtime HOC
8
+ // (createAnimatedComponent) rather than a class, so there is no cross-adapter dedup
9
+ // opportunity here yet — this Pure Fabrication is local to the angular adapter.
10
+ import { AnimatedProps, attachNativeEventHandler, dlog, whenCommitted, } from '@symbiote-native/engine';
11
+ export class AnimatedLeafBinder {
12
+ resolveNode;
13
+ label;
14
+ // The leaf currently wired into the value graph. Null until the first reconcile.
15
+ attached = null;
16
+ // The whenCommitted waiter for the current leaf's node binding, cancelled before the next.
17
+ cancelBind;
18
+ // Detachers for any Animated.event prop bound natively to the committed node (JS path: none).
19
+ eventDetachers = [];
20
+ // `resolveNode` stays a caller-supplied resolver (not a constructor-captured node) so this
21
+ // class never needs to know HOW the host node is found — AnimatedComponentBase and
22
+ // AnimatedImage both resolve it the same way (resolveHostNode + isSymbioteNode over their
23
+ // own @ViewChild), but that's Angular DI state this binder has no business touching.
24
+ // `label` is purely diagnostic (dlog), mirroring the constructor.name the pre-extraction
25
+ // dlog call used.
26
+ constructor(resolveNode, label) {
27
+ this.resolveNode = resolveNode;
28
+ this.label = label;
29
+ }
30
+ // Build a fresh AnimatedProps leaf from the current props (the React/Vue per-render
31
+ // useMemo(rest)), wire it into the graph, and swap the previous one out. Attach the NEW leaf
32
+ // BEFORE detaching the OLD one: a shared Value self-detaches (dropping its native node) the
33
+ // instant its child count hits zero, so detaching first would kill a running native animation
34
+ // on any unrelated re-render (mirrors RN's AnimatedComponent._attachProps). Then bind the
35
+ // committed node, go native if wanted, and rebind native events.
36
+ reconcile(props, wantsNative) {
37
+ dlog(`${this.label} reconcile`);
38
+ const newLeaf = new AnimatedProps(props);
39
+ newLeaf.__attach();
40
+ if (this.attached !== null && this.attached !== newLeaf)
41
+ this.attached.__detach();
42
+ this.attached = newLeaf;
43
+ this.bindNode(newLeaf, props, wantsNative);
44
+ }
45
+ // Bind the leaf to the host's Fabric node THROUGH whenCommitted: under Angular's zoneless
46
+ // batched change detection the inner host's tag does not exist yet at ngAfterViewInit time
47
+ // (the same async-commit gotcha Vue documents), so binding eagerly would no-op. whenCommitted
48
+ // runs the action now if already committed, else after the commit that assigns the tag.
49
+ bindNode(leaf, props, wantsNative) {
50
+ this.cancelBind?.();
51
+ this.cancelBind = undefined;
52
+ const node = this.resolveNode();
53
+ if (node === null)
54
+ return;
55
+ this.cancelBind = whenCommitted(node, () => {
56
+ leaf.setNativeView(node);
57
+ if (wantsNative)
58
+ leaf.__makeNative();
59
+ this.attachEvents(node, props);
60
+ });
61
+ }
62
+ // Native-attach any Animated.event prop (e.g. onScroll={Animated.event(…,{useNativeDriver:true})})
63
+ // to the committed node. attachNativeEventHandler no-ops (returns undefined) unless the prop is a
64
+ // native event handler with a committed tag, so the JS path stays the fallback. Rebound each
65
+ // reconcile so a new inline event re-attaches; detached first to avoid leaking the prior binding.
66
+ attachEvents(node, props) {
67
+ this.detachEvents();
68
+ for (const key of Object.keys(props)) {
69
+ const attachment = attachNativeEventHandler(node, key, props[key]);
70
+ if (attachment !== undefined)
71
+ this.eventDetachers.push(attachment.detach);
72
+ }
73
+ }
74
+ detachEvents() {
75
+ for (const detach of this.eventDetachers)
76
+ detach();
77
+ this.eventDetachers = [];
78
+ }
79
+ // Tear down everything: cancel a still-pending bind, drop native event listeners, detach the
80
+ // current leaf from the value graph. Safe to call even if reconcile() was never called.
81
+ destroy() {
82
+ this.cancelBind?.();
83
+ this.cancelBind = undefined;
84
+ this.detachEvents();
85
+ if (this.attached !== null) {
86
+ this.attached.__detach();
87
+ this.attached = null;
88
+ }
89
+ }
90
+ }
@@ -6,9 +6,9 @@
6
6
  // adapters/vue/src/render.ts.
7
7
  import { createElement as createEngineElement, createSurface, disposeRoot, dlog, toPublicInstance, } from '@symbiote-native/engine';
8
8
  import { descriptorFor } from '@symbiote-native/components';
9
- import { ApplicationRef, createComponent, createEnvironmentInjector, DOCUMENT, RendererFactory2, ɵINJECTOR_SCOPE as INJECTOR_SCOPE, ɵprovideZonelessChangeDetectionInternal as provideZonelessChangeDetectionInternal, } from '@angular/core';
10
- import { SymbioteRendererFactory } from './renderer';
11
- import { ColorSchemeService, WindowDimensionsService } from './services';
9
+ import { ApplicationRef, createComponent, createEnvironmentInjector, DOCUMENT, ErrorHandler, RendererFactory2, ɵINJECTOR_SCOPE as INJECTOR_SCOPE, ɵprovideZonelessChangeDetectionInternal as provideZonelessChangeDetectionInternal, } from '@angular/core';
10
+ import { SymbioteRendererFactory } from '../renderer';
11
+ import { ColorSchemeService, WindowDimensionsService } from '../services';
12
12
  // The two FFI-edge casts of this adapter, both confined here to bootstrap. Angular's core
13
13
  // types model a browser: the injector parent is a non-null EnvironmentInjector, the host is
14
14
  // a DOM Element. Our root has neither shape — a null parent IS a root injector, and the host
@@ -98,6 +98,17 @@ export function mount(rootTag, rootComponent, options) {
98
98
  // `@Component` boundary — SignalView-compiled children are skip-eligible regardless of
99
99
  // this scheduler.
100
100
  ...provideZonelessChangeDetectionInternal(),
101
+ // Angular's own INTERNAL_APPLICATION_ERROR_HANDLER (core.mjs) reports a tick()
102
+ // exception by calling `injector.get(ErrorHandler)` — a normal `bootstrapApplication`
103
+ // registers this token by default (platform-browser's BROWSER_MODULE_PROVIDERS), but
104
+ // our from-scratch environment injector never did, so that lookup itself threw
105
+ // NG0201 and REPLACED whatever the real error was with an unrelated "No provider
106
+ // found for ErrorHandler" — the real exception never got logged, and the NG0201 itself
107
+ // propagated out of a bare Timeout callback uncaught (nothing above it in the stack to
108
+ // catch it), i.e. any async tick() exception, anywhere in the app, crashed hard instead
109
+ // of being reported. Providing the default `ErrorHandler` (same one bootstrapApplication
110
+ // ships) restores the intended behavior: `console.error('ERROR', e)` and keep running.
111
+ { provide: ErrorHandler, useClass: ErrorHandler },
101
112
  ColorSchemeService,
102
113
  WindowDimensionsService,
103
114
  ], rootInjectorParent());
@@ -157,4 +168,3 @@ function installStopSurfaceGlobal() {
157
168
  dlog('installed global.RN$stopSurface');
158
169
  }
159
170
  installStopSurfaceGlobal();
160
- //# sourceMappingURL=render.js.map
@@ -6,7 +6,7 @@
6
6
  // that the same engine mutation API drives both frameworks.
7
7
  import { appendChild, createAnchor, createElement, createRawText, dlog, getExplicitStyle, insertBefore, isDebug, isSymbioteNode, removeChild, routeProp, setEventListener, setText, toPublicInstance, RAW_TEXT_COMPONENT, SymbioteSurface, } from '@symbiote-native/engine';
8
8
  import { descriptorFor } from '@symbiote-native/components';
9
- import { getScrollViewProjection, removeScrollViewProjectedChild, } from './components/scroll-view/projection';
9
+ import { getScrollViewProjection, removeScrollViewProjectedChild, } from '../components/scroll-view/projection';
10
10
  function isSurface(parent) {
11
11
  return parent instanceof SymbioteSurface;
12
12
  }
@@ -47,8 +47,14 @@ const PRIMITIVE_SELECTOR_ALIAS = {
47
47
  // anchor host (see the set comment below). Tests register their own child-component selectors
48
48
  // through this at module load; app-authored composed components can too.
49
49
  export function registerComposedComponent(selector) {
50
- ANCHOR_HOST_COMPONENTS.add(selector);
50
+ ANCHOR_HOST_COMPONENTS.add(selector.toLowerCase());
51
51
  }
52
+ // Lowercased at construction — createElement's lookup and registerComposedComponent's insert
53
+ // both normalize to lowercase (Angular lowercases a dynamically-mounted component's selector at
54
+ // runtime, see §11a), so the literal entries below must match that or every capitalized one
55
+ // (all but the handful already written lowercase) silently never matches .has() and falls
56
+ // through to a real Fabric createNode — the exact "Unimplemented component" / extra-wrapper-node
57
+ // bug this Set exists to prevent.
52
58
  const ANCHOR_HOST_COMPONENTS = new Set([
53
59
  // Composed Angular components render their real Fabric descriptor tree from the template;
54
60
  // their Angular host element is only a framework bookkeeping node and must not paint. This
@@ -95,7 +101,7 @@ const ANCHOR_HOST_COMPONENTS = new Set([
95
101
  'VirtualizedList',
96
102
  'VirtualizedSectionList',
97
103
  'symbiote-pressable',
98
- ]);
104
+ ].map(selector => selector.toLowerCase()));
99
105
  // Inserting a bare raw-text node anywhere but inside a <Text> is invalid in Fabric (a
100
106
  // stray RCTRawText would paint). Angular's ɵɵtext only ever lands text inside a <Text>,
101
107
  // but guard anyway for parity with the Vue adapter and to fail loudly on a bad template.
@@ -126,7 +132,7 @@ export class SymbioteRenderer {
126
132
  // ViewConfig). toPublicInstance grafts the imperative API (measure / setNativeProps /
127
133
  // focus) onto the raw node in place, returning the SAME identity the commit mirror keys on.
128
134
  const engineName = PRIMITIVE_SELECTOR_ALIAS[name] ?? name;
129
- if (ANCHOR_HOST_COMPONENTS.has(engineName)) {
135
+ if (ANCHOR_HOST_COMPONENTS.has(engineName.toLowerCase())) {
130
136
  const anchor = tagAnchorForDebug(createAnchor());
131
137
  dlog(`angular createElement ${name} -> anchor host ${describeHost(anchor)}`);
132
138
  return anchor;
@@ -347,4 +353,3 @@ export class SymbioteRendererFactory {
347
353
  return (this.renderer ??= new SymbioteRenderer(this.surface));
348
354
  }
349
355
  }
350
- //# sourceMappingURL=renderer.js.map
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@symbiote-native/angular",
3
- "version": "0.4.0",
3
+ "version": "0.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
  "repository": {
6
6
  "type": "git",
@@ -52,12 +52,12 @@
52
52
  "dependencies": {
53
53
  "@angular/compiler-cli": "^22",
54
54
  "@react-native/typescript-config": "0.86.0",
55
- "@symbiote-native/components": "0.2.4",
56
- "@symbiote-native/css-parser": "0.2.1",
57
- "@symbiote-native/engine": "0.1.5"
55
+ "@symbiote-native/components": "0.2.5",
56
+ "@symbiote-native/css-parser": "0.2.2"
58
57
  },
59
58
  "peerDependencies": {
60
59
  "@angular/core": ">=20",
60
+ "@symbiote-native/engine": ">=0.1.6",
61
61
  "react-native": ">=0.86"
62
62
  },
63
63
  "devDependencies": {
@@ -67,7 +67,8 @@
67
67
  "@types/babel__core": "^7.20.5",
68
68
  "@types/node": "^26.0.0",
69
69
  "typescript": "~6.0.0",
70
- "@symbiote-native/test-utils": "0.1.5"
70
+ "@symbiote-native/test-utils": "0.1.5",
71
+ "@symbiote-native/engine": "0.1.6"
71
72
  },
72
73
  "scripts": {
73
74
  "ng:build": "ngc -p tsconfig.angular.json",
@@ -62,7 +62,7 @@ describe('Angular adapter gap regressions', () => {
62
62
 
63
63
  it('Button forwards its full accessibility and TV-focus surface through TouchableOpacity', () => {
64
64
  const buttonSource = readSource('adapters/angular/src/components/button.ts');
65
- const touchableSource = readSource('adapters/angular/src/components/touchable.ts');
65
+ const touchableSource = readSource('adapters/angular/src/components/touchable/index.ts');
66
66
  const pressableSource = readSource('adapters/angular/src/components/pressable/index.ts');
67
67
 
68
68
  for (const binding of [
@@ -27,7 +27,11 @@ import {
27
27
  type ISymbioteEvent,
28
28
  type IViewStyle,
29
29
  } from '@symbiote-native/engine';
30
- import { anchorHostStyle, InputAccessoryViewHost, SymbioteHostPropsDirective } from '../primitives';
30
+ import {
31
+ anchorHostStyle,
32
+ InputAccessoryViewHost,
33
+ SymbioteHostPropsDirective,
34
+ } from '../../primitives';
31
35
 
32
36
  // Mirrors React's IInputAccessoryViewProps minus children (Angular takes children via
33
37
  // <ng-content>), declared per-adapter over the shared a11y base.
@@ -4,8 +4,8 @@ import { afterEach, beforeEach, describe, expect, it } from 'vitest';
4
4
  import { clearGlobalStyles, registerStyles } from '@symbiote-native/engine';
5
5
  import { installFabric } from '@symbiote-native/test-utils';
6
6
 
7
- import { mount, unmount } from '../render';
8
- import { InputAccessoryView } from './input-accessory-view';
7
+ import { mount, unmount } from '../../render';
8
+ import { InputAccessoryView } from './index';
9
9
 
10
10
  const ROOT_TAG = 913;
11
11
  const fabric = installFabric();
@@ -48,7 +48,7 @@ import {
48
48
  type ISymbioteEvent,
49
49
  type IViewStyle,
50
50
  } from '@symbiote-native/engine';
51
- import { anchorHostStyle, SymbioteHostPropsDirective, ViewHost } from '../primitives';
51
+ import { anchorHostStyle, SymbioteHostPropsDirective, ViewHost } from '../../primitives';
52
52
 
53
53
  export type { IKeyboardAvoidingBehavior } from '@symbiote-native/components';
54
54
 
@@ -4,8 +4,8 @@ import { afterEach, beforeEach, describe, expect, it } from 'vitest';
4
4
  import { clearGlobalStyles, registerStyles } from '@symbiote-native/engine';
5
5
  import { installFabric } from '@symbiote-native/test-utils';
6
6
 
7
- import { mount, unmount } from '../render';
8
- import { KeyboardAvoidingView } from './keyboard-avoiding-view';
7
+ import { mount, unmount } from '../../render';
8
+ import { KeyboardAvoidingView } from './index';
9
9
 
10
10
  const ROOT_TAG = 911;
11
11
  const fabric = installFabric();
@@ -44,7 +44,7 @@ import {
44
44
  type ISymbioteEvent,
45
45
  type IViewStyle,
46
46
  } from '@symbiote-native/engine';
47
- import { anchorHostStyle, ModalHost, SymbioteHostPropsDirective, ViewHost } from '../primitives';
47
+ import { anchorHostStyle, ModalHost, SymbioteHostPropsDirective, ViewHost } from '../../primitives';
48
48
 
49
49
  export type {
50
50
  IModalAnimationType,
@@ -4,8 +4,8 @@ import { afterEach, beforeEach, describe, expect, it } from 'vitest';
4
4
  import { clearGlobalStyles, registerStyles } from '@symbiote-native/engine';
5
5
  import { installFabric } from '@symbiote-native/test-utils';
6
6
 
7
- import { mount, unmount } from '../render';
8
- import { Modal } from './modal';
7
+ import { mount, unmount } from '../../render';
8
+ import { Modal } from './index';
9
9
 
10
10
  const ROOT_TAG = 912;
11
11
  const fabric = installFabric();
@@ -42,7 +42,7 @@ import {
42
42
  type ISymbioteEvent,
43
43
  type IViewStyle,
44
44
  } from '@symbiote-native/engine';
45
- import { anchorHostStyle, RefreshControlHost, SymbioteHostPropsDirective } from '../primitives';
45
+ import { anchorHostStyle, RefreshControlHost, SymbioteHostPropsDirective } from '../../primitives';
46
46
 
47
47
  // Record<string, unknown> already tolerates `style` holding the [anchorHostStyle, this.style]
48
48
  // array anchorHostStyle's merge produces (see hostProps below) — no widening needed.
@@ -4,8 +4,8 @@ import { afterEach, beforeEach, describe, expect, it } from 'vitest';
4
4
  import { clearGlobalStyles, registerStyles } from '@symbiote-native/engine';
5
5
  import { installFabric } from '@symbiote-native/test-utils';
6
6
 
7
- import { mount, unmount } from '../render';
8
- import { RefreshControl } from './refresh-control';
7
+ import { mount, unmount } from '../../render';
8
+ import { RefreshControl } from './index';
9
9
 
10
10
  const ROOT_TAG = 914;
11
11
  const fabric = installFabric();
@@ -28,7 +28,7 @@ import {
28
28
  type ISymbioteEvent,
29
29
  type IViewStyle,
30
30
  } from '@symbiote-native/engine';
31
- import { anchorHostStyle, SafeAreaViewHost, SymbioteHostPropsDirective } from '../primitives';
31
+ import { anchorHostStyle, SafeAreaViewHost, SymbioteHostPropsDirective } from '../../primitives';
32
32
 
33
33
  // Mirrors React's ISafeAreaViewProps minus children (Angular takes children via <ng-content>),
34
34
  // declared per-adapter over the shared accessibility base since the framework-specific children
@@ -4,8 +4,8 @@ import { afterEach, beforeEach, describe, expect, it } from 'vitest';
4
4
  import { clearGlobalStyles, registerStyles } from '@symbiote-native/engine';
5
5
  import { installFabric } from '@symbiote-native/test-utils';
6
6
 
7
- import { mount, unmount } from '../render';
8
- import { SafeAreaView } from './safe-area-view';
7
+ import { mount, unmount } from '../../render';
8
+ import { SafeAreaView } from './index';
9
9
 
10
10
  const ROOT_TAG = 910;
11
11
  const fabric = installFabric();
@@ -55,9 +55,9 @@ import {
55
55
  type IStyleProp,
56
56
  type IViewStyle,
57
57
  } from '@symbiote-native/engine';
58
- import { anchorHostStyle, anchorStyleProp } from '../primitives';
59
- import { Pressable, type IAngularPressableInputs } from './pressable';
60
- import { Animated, AnimatedView } from '../modules/animated';
58
+ import { anchorHostStyle, anchorStyleProp } from '../../primitives';
59
+ import { Pressable, type IAngularPressableInputs } from '../pressable';
60
+ import { Animated, AnimatedView } from '../../modules/animated';
61
61
 
62
62
  // The shared field base for all three: the Pressable INPUT surface (minus style, which each
63
63
  // Touchable routes differently, and minus the press/hover events, which each Touchable declares as
@@ -9,8 +9,8 @@ import { afterEach, beforeEach, describe, expect, it } from 'vitest';
9
9
  import { clearGlobalStyles, registerStyles } from '@symbiote-native/engine';
10
10
  import { installFabric } from '@symbiote-native/test-utils';
11
11
 
12
- import { mount, unmount } from '../render';
13
- import { TouchableHighlight, TouchableOpacity, TouchableWithoutFeedback } from './touchable';
12
+ import { mount, unmount } from '../../render';
13
+ import { TouchableHighlight, TouchableOpacity, TouchableWithoutFeedback } from './index';
14
14
 
15
15
  const ROOT_TAG = 940;
16
16
  const fabric = installFabric();
@@ -45,8 +45,8 @@ import {
45
45
  type IRectOffset,
46
46
  } from '@symbiote-native/components';
47
47
  import { dlog, isSymbioteEvent, type ISymbioteEvent } from '@symbiote-native/engine';
48
- import { anchorHostStyle, SymbioteHostPropsDirective, ViewHost } from '../primitives';
49
- import { Pressable, type IAngularPressableInputs } from './pressable';
48
+ import { anchorHostStyle, SymbioteHostPropsDirective, ViewHost } from '../../primitives';
49
+ import { Pressable, type IAngularPressableInputs } from '../pressable';
50
50
 
51
51
  export type {
52
52
  INativeFeedbackBackground,
@@ -10,8 +10,8 @@ import { afterEach, beforeEach, describe, expect, it } from 'vitest';
10
10
  import { clearGlobalStyles, registerStyles } from '@symbiote-native/engine';
11
11
  import { installFabric } from '@symbiote-native/test-utils';
12
12
 
13
- import { mount, unmount } from '../render';
14
- import { TouchableNativeFeedback } from './touchable-native-feedback';
13
+ import { mount, unmount } from '../../render';
14
+ import { TouchableNativeFeedback } from './index';
15
15
 
16
16
  const ROOT_TAG = 941;
17
17
  const fabric = installFabric();
@@ -8,9 +8,9 @@ import { Component, signal } from '@angular/core';
8
8
  import { afterEach, beforeEach, describe, expect, it } from 'vitest';
9
9
  import { installFabric, type IFakeNode } from '@symbiote-native/test-utils';
10
10
 
11
- import { mount, unmount } from './render';
12
- import { ViewHost, TextHost } from './primitives';
13
- import { PortalDirective, PortalOutletDirective } from './create-portal';
11
+ import { mount, unmount } from '../render';
12
+ import { ViewHost, TextHost } from '../primitives';
13
+ import { PortalDirective, PortalOutletDirective } from './index';
14
14
 
15
15
  const ROOT_TAG = 930;
16
16
 
@@ -8,9 +8,9 @@ import { Component } from '@angular/core';
8
8
  import { afterEach, beforeEach, describe, expect, it } from 'vitest';
9
9
  import { installFabric, type IFakeNode } from '@symbiote-native/test-utils';
10
10
 
11
- import { mount, unmount } from './render';
12
- import { ViewHost, TextHost } from './primitives';
13
- import { createTunnel, TunnelInDirective, TunnelOut } from './create-tunnel';
11
+ import { mount, unmount } from '../render';
12
+ import { ViewHost, TextHost } from '../primitives';
13
+ import { createTunnel, TunnelInDirective, TunnelOut } from './index';
14
14
 
15
15
  const SOURCE_TAG = 920;
16
16
  const TARGET_TAG = 921;