@symbiote-native/angular 0.8.0 → 1.0.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 (121) hide show
  1. package/babel-lower-host-primitives.cjs +636 -0
  2. package/babel-register-composed.cjs +21 -3
  3. package/build/angular/anchor-host-registry.js +3 -1
  4. package/build/angular/anchor-host-registry.js.map +1 -1
  5. package/build/angular/components/button.d.ts +3 -0
  6. package/build/angular/components/button.js +10 -1
  7. package/build/angular/components/button.js.map +1 -1
  8. package/build/angular/components/image/index.android.js +0 -8
  9. package/build/angular/components/image/index.android.js.map +1 -1
  10. package/build/angular/components/image/index.ios.js +0 -8
  11. package/build/angular/components/image/index.ios.js.map +1 -1
  12. package/build/angular/components/image/shared.d.ts +4 -4
  13. package/build/angular/components/image/shared.js +33 -27
  14. package/build/angular/components/image/shared.js.map +1 -1
  15. package/build/angular/components/image-background.d.ts +3 -0
  16. package/build/angular/components/image-background.js +10 -1
  17. package/build/angular/components/image-background.js.map +1 -1
  18. package/build/angular/components/input-accessory-view/index.d.ts +2 -1
  19. package/build/angular/components/input-accessory-view/index.js +11 -14
  20. package/build/angular/components/input-accessory-view/index.js.map +1 -1
  21. package/build/angular/components/keyboard-avoiding-view/index.d.ts +2 -1
  22. package/build/angular/components/keyboard-avoiding-view/index.js +17 -10
  23. package/build/angular/components/keyboard-avoiding-view/index.js.map +1 -1
  24. package/build/angular/components/modal/index.d.ts +1 -0
  25. package/build/angular/components/modal/index.js +14 -8
  26. package/build/angular/components/modal/index.js.map +1 -1
  27. package/build/angular/components/pressable/index.d.ts +9 -4
  28. package/build/angular/components/pressable/index.js +55 -14
  29. package/build/angular/components/pressable/index.js.map +1 -1
  30. package/build/angular/components/refresh-control/index.d.ts +2 -1
  31. package/build/angular/components/refresh-control/index.js +10 -8
  32. package/build/angular/components/refresh-control/index.js.map +1 -1
  33. package/build/angular/components/safe-area-view/index.d.ts +3 -1
  34. package/build/angular/components/safe-area-view/index.js +19 -19
  35. package/build/angular/components/safe-area-view/index.js.map +1 -1
  36. package/build/angular/components/scroll-view/shared.d.ts +2 -0
  37. package/build/angular/components/scroll-view/shared.js +20 -4
  38. package/build/angular/components/scroll-view/shared.js.map +1 -1
  39. package/build/angular/components/section-list/index.d.ts +3 -0
  40. package/build/angular/components/section-list/index.js +10 -1
  41. package/build/angular/components/section-list/index.js.map +1 -1
  42. package/build/angular/components/switch/index.android.js +6 -6
  43. package/build/angular/components/switch/index.android.js.map +1 -1
  44. package/build/angular/components/switch/index.ios.js +6 -6
  45. package/build/angular/components/switch/index.ios.js.map +1 -1
  46. package/build/angular/components/text-input.d.ts +7 -1
  47. package/build/angular/components/text-input.js +54 -29
  48. package/build/angular/components/text-input.js.map +1 -1
  49. package/build/angular/components/touchable/index.d.ts +7 -0
  50. package/build/angular/components/touchable/index.js +34 -3
  51. package/build/angular/components/touchable/index.js.map +1 -1
  52. package/build/angular/components/touchable-native-feedback/index.d.ts +2 -1
  53. package/build/angular/components/touchable-native-feedback/index.js +17 -15
  54. package/build/angular/components/touchable-native-feedback/index.js.map +1 -1
  55. package/build/angular/components/virtualized-list/index.d.ts +3 -0
  56. package/build/angular/components/virtualized-list/index.js +10 -1
  57. package/build/angular/components/virtualized-list/index.js.map +1 -1
  58. package/build/angular/components/virtualized-section-list/index.d.ts +3 -0
  59. package/build/angular/components/virtualized-section-list/index.js +10 -1
  60. package/build/angular/components/virtualized-section-list/index.js.map +1 -1
  61. package/build/angular/components.d.ts +1 -1
  62. package/build/angular/components.js +1 -1
  63. package/build/angular/components.js.map +1 -1
  64. package/build/angular/create-portal/index.d.ts +11 -2
  65. package/build/angular/create-portal/index.js +37 -11
  66. package/build/angular/create-portal/index.js.map +1 -1
  67. package/build/angular/gate-demand.d.ts +37 -0
  68. package/build/angular/gate-demand.js +84 -0
  69. package/build/angular/gate-demand.js.map +1 -0
  70. package/build/angular/index.d.ts +1 -0
  71. package/build/angular/index.js +1 -0
  72. package/build/angular/index.js.map +1 -1
  73. package/build/angular/modules/animated/create-animated-component.d.ts +1 -0
  74. package/build/angular/modules/animated/create-animated-component.js +14 -9
  75. package/build/angular/modules/animated/create-animated-component.js.map +1 -1
  76. package/build/angular/primitives/index.d.ts +13 -1
  77. package/build/angular/primitives/index.js +43 -1
  78. package/build/angular/primitives/index.js.map +1 -1
  79. package/build/angular/register.d.ts +1 -0
  80. package/build/angular/register.js +35 -0
  81. package/build/angular/register.js.map +1 -0
  82. package/build/angular/render/index.js +3 -1
  83. package/build/angular/render/index.js.map +1 -1
  84. package/build/angular/renderer/index.js +120 -19
  85. package/build/angular/renderer/index.js.map +1 -1
  86. package/build/angular/state-style.d.ts +9 -0
  87. package/build/angular/state-style.js +39 -0
  88. package/build/angular/state-style.js.map +1 -0
  89. package/metro-transformer.cjs +69 -0
  90. package/package.json +27 -8
  91. package/src/anchor-host-registry.ts +3 -1
  92. package/src/components/button.ts +17 -0
  93. package/src/components/image/index.android.ts +0 -4
  94. package/src/components/image/index.ios.ts +0 -4
  95. package/src/components/image/shared.ts +52 -26
  96. package/src/components/image-background.ts +18 -0
  97. package/src/components/input-accessory-view/index.ts +14 -8
  98. package/src/components/keyboard-avoiding-view/index.ts +21 -7
  99. package/src/components/modal/index.ts +17 -4
  100. package/src/components/pressable/index.ts +70 -10
  101. package/src/components/refresh-control/index.ts +14 -5
  102. package/src/components/safe-area-view/index.ts +28 -12
  103. package/src/components/scroll-view/shared.ts +31 -4
  104. package/src/components/section-list/index.ts +18 -0
  105. package/src/components/switch/index.android.ts +4 -4
  106. package/src/components/switch/index.ios.ts +4 -4
  107. package/src/components/text-input.ts +73 -17
  108. package/src/components/touchable/index.ts +43 -0
  109. package/src/components/touchable-native-feedback/index.ts +18 -8
  110. package/src/components/virtualized-list/index.ts +18 -0
  111. package/src/components/virtualized-section-list/index.ts +18 -0
  112. package/src/components.ts +2 -0
  113. package/src/create-portal/index.ts +39 -9
  114. package/src/gate-demand.ts +109 -0
  115. package/src/index.ts +2 -0
  116. package/src/modules/animated/create-animated-component.ts +23 -4
  117. package/src/primitives/index.ts +28 -1
  118. package/src/register.ts +43 -0
  119. package/src/render/index.ts +3 -1
  120. package/src/renderer/index.ts +144 -34
  121. package/src/state-style.ts +39 -0
@@ -4,8 +4,9 @@
4
4
  // engine's tiny mutation API; the engine owns all Fabric clone-on-write, shared with
5
5
  // every other adapter. This is the Angular twin of adapters/vue/src/renderer.ts — proof
6
6
  // that the same engine mutation API drives both frameworks.
7
- import { appendChild, createAnchor, createElement, createRawText, dlog, getExplicitStyle, insertBefore, isDebug, isSymbioteNode, removeChild, routeProp, setEventListener, setText, toPublicInstance, RAW_TEXT_COMPONENT, SymbioteSurface, } from '@symbiote-native/engine';
7
+ import { appendChild, createAnchor, createElement, createRawText, dlog, getExplicitStyle, insertBefore, isDebug, isSymbioteNode, removeChild, routeProp, setEventListener, setProp, setText, toPublicInstance, RAW_TEXT_COMPONENT, SymbioteSurface, } from '@symbiote-native/engine';
8
8
  import { descriptorFor } from '@symbiote-native/components';
9
+ import { foldHostBag } from '@symbiote-native/components/fold-host-bag';
9
10
  import { isAnchorHostComponent } from '../anchor-host-registry';
10
11
  import { countAngular, noteAngularCreate, noteAngularWrite, } from '../diagnostics';
11
12
  import { flushScrollViewProjections, getScrollViewProjection, removeScrollViewProjectedChild, } from '../components/scroll-view/projection';
@@ -18,6 +19,61 @@ function isRawText(node) {
18
19
  function isRecord(value) {
19
20
  return typeof value === 'object' && value !== null;
20
21
  }
22
+ // RN's Text.js applies two defaults on the way to native (core/components/host-primitives.cjs's
23
+ // `Text.defaults`; the authority on what they MEAN is core/components/src/text-props.ts's
24
+ // resolveTextProps, which the composed `Text` @Component already calls). That component's own
25
+ // host paints directly (Text is not anchor-hosted — see the top-level "View/Text's own component
26
+ // doesn't have this split" reasoning elsewhere in this file), so createElement runs for its INNER
27
+ // symbiote-text node too; seeding here therefore covers both the composed Text and any bare
28
+ // `symbiote-text` a future lowering emits, uniformly. Found missing 2026-08-31 (a cross-adapter
29
+ // key-count diff against Vue's real BenchmarkRow.vue) — without this a lowered Text's
30
+ // `numberOfLines` clips with no ellipsis, silently, on device only. Vue's renderer already does
31
+ // this (`adapters/vue/src/renderer/index.ts`'s `seedTextDefaults`); Angular's simply never did.
32
+ //
33
+ // Sourced from `foldHostBag` (`@symbiote-native/components/fold-host-bag`, driven by
34
+ // `HOST_PRIMITIVES.Text.defaults`) rather than a second hardcoded copy — React and Svelte call the
35
+ // same function directly; this used to be a THIRD, independent restatement of the same two
36
+ // defaults, with nothing to catch it drifting from the spec if a default's value ever changed.
37
+ // `foldHostBag('symbiote-text', {})` on an EMPTY bag folds every default with no authored value to
38
+ // override it (the alias loop has nothing to fold — `id` is only rewritten when present), which is
39
+ // exactly the seed this function needs.
40
+ function seedTextDefaults(node) {
41
+ const seeded = foldHostBag('symbiote-text', {});
42
+ for (const [key, value] of Object.entries(seeded))
43
+ setProp(node, key, value);
44
+ }
45
+ // An explicit `undefined` must NOT clear one of those defaults — RN treats a missing prop and an
46
+ // explicit undefined alike, and only a literal `false` opts allowFontScaling out. Reached only
47
+ // when a later write clears a key back to undefined, so it costs nothing on the common path.
48
+ // `foldHostBag` folds every Text default when called this way (not just `key`), because its
49
+ // contract is "fold a whole bag" — the extra key computed alongside `key` is simply unread here.
50
+ function textDefaultFor(el, key) {
51
+ if (isSurface(el) || !el.isText)
52
+ return undefined;
53
+ return foldHostBag('symbiote-text', { [key]: undefined })[key];
54
+ }
55
+ // RN's `id` is the modern W3C-named alias for `nativeID` (core/components/host-primitives.cjs's
56
+ // `ID_ALIAS`) — View.js/Text.js copy it over unconditionally, so the two name ONE native prop.
57
+ // React/Solid/Svelte fold it in a wrapper or transform; Angular had it nowhere, so `<View
58
+ // id="x">`/`[id]="x"` reached Fabric with an unknown `id` key and no `nativeID` — silently, on
59
+ // device only. Lives in the renderer (mirroring Vue's `PROP_ALIASES`) so it covers every path
60
+ // that can set a prop — `setAttribute`, `setProperty`, and (should a future lowering emit one) a
61
+ // hand-built call — not just the composed component's own `id` @Input.
62
+ // `symbioteStyle` is what the lowering transform emits in place of `[style]`: Angular routes a
63
+ // `style` binding to its own CSS styling engine, which cannot represent an RN StyleProp (an array
64
+ // throws inside change detection). Under any other name it is an ordinary property binding and
65
+ // arrives here.
66
+ // Angular's two-way sugar `[(value)]` compiles to a `(valueChange)` binding; the engine knows the
67
+ // same fold as the function prop `onValueChange`. See `listen()`.
68
+ const VALUE_CHANGE_EVENT = 'valueChange';
69
+ const VALUE_CHANGE_PROP = 'onValueChange';
70
+ const PROP_ALIASES = new Map([
71
+ ['id', 'nativeID'],
72
+ ['symbioteStyle', 'style'],
73
+ ]);
74
+ function aliasedPropName(name) {
75
+ return PROP_ALIASES.get(name) ?? name;
76
+ }
21
77
  // Diagnostic-only: tags each anchor with a sequential id so log lines can tell distinct
22
78
  // anchors apart (they all otherwise print the same generic '#anchor' component name).
23
79
  // Gated behind isDebug() so a production build pays zero cost (no WeakMap writes).
@@ -53,6 +109,10 @@ const PRIMITIVE_SELECTOR_ALIAS = {
53
109
  // Inserting a bare raw-text node anywhere but inside a <Text> is invalid in Fabric (a
54
110
  // stray RCTRawText would paint). Angular's ɵɵtext only ever lands text inside a <Text>,
55
111
  // but guard anyway for parity with the Vue adapter and to fail loudly on a bad template.
112
+ // `removeScrollViewProjectedChild` takes a remove callback and uses it only when the child turns
113
+ // out to be projected, which almost none are — so the engine's own `removeChild` is passed by
114
+ // reference rather than wrapped in an arrow. The wrapper was allocated on EVERY removed node:
115
+ // 10 000 closures on a Clear whose engine window is 0.1 ms.
56
116
  function assertTextPlacement(child, parent) {
57
117
  if (isRawText(child) && (isSurface(parent) || !parent.isText)) {
58
118
  throw new Error(`Text string "${String(child.props.text)}" must be rendered inside a <Text>`);
@@ -77,19 +137,30 @@ export class SymbioteRenderer {
77
137
  // name for a native leaf. Public aliases are normalized to their engine primitive name
78
138
  // before descriptor lookup. descriptorFor resolves it; an unknown `symbiote-*` is a typo,
79
139
  // any other string flows through as a raw Fabric name (events/processors derived from its
80
- // ViewConfig). toPublicInstance grafts the imperative API (measure / setNativeProps /
81
- // focus) onto the raw node in place, returning the SAME identity the commit mirror keys on.
140
+ // ViewConfig). The imperative API (measure / setNativeProps / focus) is on the node's
141
+ // prototype, so toPublicInstance hands back the SAME identity the commit mirror keys on.
82
142
  countAngular('nodesCreated');
83
143
  noteAngularCreate(name);
84
144
  const engineName = PRIMITIVE_SELECTOR_ALIAS[name] ?? name;
85
145
  if (isAnchorHostComponent(engineName)) {
86
146
  const anchor = tagAnchorForDebug(createAnchor());
87
- dlog(`angular createElement ${name} -> anchor host ${describeHost(anchor)}`);
147
+ if (isDebug()) {
148
+ dlog(`angular createElement ${name} -> anchor host ${describeHost(anchor)}`);
149
+ }
88
150
  return anchor;
89
151
  }
90
152
  const descriptor = descriptorFor(engineName);
91
- const node = createElement(descriptor.component, descriptor.isText);
92
- dlog(`angular createElement ${name} -> ${descriptor.component}`);
153
+ // The tag, not just the resolved Fabric name: the host-behavior registry is keyed by the
154
+ // INTRINSIC tag (host-behavior.ts's own comment), and a node only ever carries the resolved
155
+ // name afterward. Omitting this argument means attachHostBehavior looks up the WRONG key
156
+ // (e.g. 'RCTView') and any registered behavior silently never attaches — Vue's renderer
157
+ // already passes this correctly (`createElement(descriptor.component, descriptor.isText, type)`).
158
+ const node = createElement(descriptor.component, descriptor.isText, engineName);
159
+ if (descriptor.isText)
160
+ seedTextDefaults(node);
161
+ if (isDebug()) {
162
+ dlog(`angular createElement ${name} -> ${descriptor.component}`);
163
+ }
93
164
  return toPublicInstance(node);
94
165
  }
95
166
  createComment() {
@@ -98,7 +169,9 @@ export class SymbioteRenderer {
98
169
  // Vue createComment path.
99
170
  countAngular('nodesCreated');
100
171
  const anchor = tagAnchorForDebug(createAnchor());
101
- dlog(`Angular renderer createComment -> ${describeHost(anchor)}`);
172
+ if (isDebug()) {
173
+ dlog(`Angular renderer createComment -> ${describeHost(anchor)}`);
174
+ }
102
175
  return anchor;
103
176
  }
104
177
  createText(value) {
@@ -114,12 +187,16 @@ export class SymbioteRenderer {
114
187
  countAngular('nodesInserted');
115
188
  assertTextPlacement(newChild, parent);
116
189
  if (isSurface(parent)) {
117
- dlog(`Angular renderer appendChild parent=surface child=${describeHost(newChild)}`);
190
+ if (isDebug()) {
191
+ dlog(`Angular renderer appendChild parent=surface child=${describeHost(newChild)}`);
192
+ }
118
193
  parent.appendChild(newChild);
119
194
  }
120
195
  else {
121
196
  const projection = getScrollViewProjection(parent);
122
- dlog(`Angular renderer appendChild parent=${describeHost(parent)} child=${describeHost(newChild)} projection=${projection !== undefined}`);
197
+ if (isDebug()) {
198
+ dlog(`Angular renderer appendChild parent=${describeHost(parent)} child=${describeHost(newChild)} projection=${projection !== undefined}`);
199
+ }
123
200
  if (projection !== undefined) {
124
201
  projection.appendProjectedChild(parent, newChild, (target, child) => appendChild(target, child));
125
202
  }
@@ -135,7 +212,9 @@ export class SymbioteRenderer {
135
212
  countAngular('nodesInserted');
136
213
  assertTextPlacement(newChild, parent);
137
214
  if (isSurface(parent)) {
138
- dlog(`Angular renderer insertBefore parent=surface child=${describeHost(newChild)} ref=${refChild ? describeHost(refChild) : 'null'}`);
215
+ if (isDebug()) {
216
+ dlog(`Angular renderer insertBefore parent=surface child=${describeHost(newChild)} ref=${refChild ? describeHost(refChild) : 'null'}`);
217
+ }
139
218
  if (refChild)
140
219
  parent.insertBefore(newChild, refChild);
141
220
  else
@@ -143,7 +222,9 @@ export class SymbioteRenderer {
143
222
  }
144
223
  else {
145
224
  const projection = getScrollViewProjection(parent);
146
- dlog(`Angular renderer insertBefore parent=${describeHost(parent)} child=${describeHost(newChild)} ref=${refChild ? describeHost(refChild) : 'null'} projection=${projection !== undefined}`);
225
+ if (isDebug()) {
226
+ dlog(`Angular renderer insertBefore parent=${describeHost(parent)} child=${describeHost(newChild)} ref=${refChild ? describeHost(refChild) : 'null'} projection=${projection !== undefined}`);
227
+ }
147
228
  if (projection !== undefined) {
148
229
  projection.insertProjectedChild(parent, newChild, refChild, (target, child, before) => {
149
230
  if (before === undefined)
@@ -166,10 +247,12 @@ export class SymbioteRenderer {
166
247
  // surface.children with no parent). Angular's `parent` arg is ignored in favor of the
167
248
  // authoritative link, mirroring the Vue adapter's remove.
168
249
  countAngular('nodesRemoved');
169
- const angularParent = _parent !== null ? describeHost(_parent) : 'null';
170
- const retainedParent = oldChild.parent !== undefined ? describeHost(oldChild.parent) : 'none';
171
- const wasProjected = removeScrollViewProjectedChild(oldChild, (parent, child) => removeChild(parent, child));
172
- dlog(`Angular renderer removeChild angularParent=${angularParent} retainedParent=${retainedParent} child=${describeHost(oldChild)} viaProjection=${wasProjected}`);
250
+ const wasProjected = removeScrollViewProjectedChild(oldChild, removeChild);
251
+ if (isDebug()) {
252
+ const angularParent = _parent !== null ? describeHost(_parent) : 'null';
253
+ const retainedParent = oldChild.parent !== undefined ? describeHost(oldChild.parent) : 'none';
254
+ dlog(`Angular renderer removeChild angularParent=${angularParent} retainedParent=${retainedParent} child=${describeHost(oldChild)} viaProjection=${wasProjected}`);
255
+ }
173
256
  if (!wasProjected) {
174
257
  const parent = oldChild.parent;
175
258
  if (parent !== undefined)
@@ -212,7 +295,7 @@ export class SymbioteRenderer {
212
295
  return;
213
296
  countAngular('rendererWrites');
214
297
  noteAngularWrite(name);
215
- routeProp(el, name, value);
298
+ routeProp(el, aliasedPropName(name), value);
216
299
  this.surface.requestCommit();
217
300
  }
218
301
  removeAttribute(el, name) {
@@ -220,7 +303,8 @@ export class SymbioteRenderer {
220
303
  return;
221
304
  countAngular('rendererWrites');
222
305
  noteAngularWrite(name);
223
- routeProp(el, name, undefined);
306
+ const aliased = aliasedPropName(name);
307
+ routeProp(el, aliased, textDefaultFor(el, aliased));
224
308
  this.surface.requestCommit();
225
309
  }
226
310
  // Ivy compiles every class= / [class.foo] / [ngClass] form down to per-token addClass/
@@ -288,7 +372,8 @@ export class SymbioteRenderer {
288
372
  return;
289
373
  countAngular('rendererWrites');
290
374
  noteAngularWrite(name);
291
- routeProp(el, name, value);
375
+ const aliased = aliasedPropName(name);
376
+ routeProp(el, aliased, value === undefined ? textDefaultFor(el, aliased) : value);
292
377
  this.surface.requestCommit();
293
378
  }
294
379
  setValue(node, value) {
@@ -296,7 +381,9 @@ export class SymbioteRenderer {
296
381
  noteAngularWrite('#text');
297
382
  // A useful permanent seam: text mutations are low-frequency and the one place a stale
298
383
  // `{{binding}}` (a change-detection gap) shows up as "the setValue never fired".
299
- dlog(`Angular renderer setValue "${value}" on ${describeHost(node)}`);
384
+ if (isDebug()) {
385
+ dlog(`Angular renderer setValue "${value}" on ${describeHost(node)}`);
386
+ }
300
387
  setText(node, value);
301
388
  this.surface.requestCommit();
302
389
  }
@@ -307,6 +394,20 @@ export class SymbioteRenderer {
307
394
  listen(target, eventName, callback) {
308
395
  if (!isSymbioteNode(target))
309
396
  return () => { };
397
+ // `[(value)]` desugars to `(valueChange)`, which is the spelling every Angular template writes
398
+ // for a Switch or a TextInput. On the COMPONENT path it is an `@Output()` the wrapper derives
399
+ // from the raw `change` payload; on a LOWERED element there is no component, and registering
400
+ // `valueChange` as an engine event would wait forever for a Fabric event of that name.
401
+ //
402
+ // The lowered path already carries the same fold under RN's own spelling: both behaviors call
403
+ // `node.props.onValueChange(value, event)` — a plain function PROP, not an event
404
+ // (`behaviors/switch.ts`, `behaviors/text-input.ts`). So this is a rename, not a mechanism:
405
+ // route the binding to that prop and `[(value)]` behaves identically on both paths. Without it
406
+ // the transform had to refuse to lower the two primitives whose idiomatic spelling this is.
407
+ if (eventName === VALUE_CHANGE_EVENT) {
408
+ routeProp(target, VALUE_CHANGE_PROP, callback);
409
+ return () => routeProp(target, VALUE_CHANGE_PROP, undefined);
410
+ }
310
411
  setEventListener(target, eventName, callback);
311
412
  return () => setEventListener(target, eventName, undefined);
312
413
  }
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/renderer/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/renderer/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ import { type PipeTransform } from '@angular/core';
2
+ import type { IResolvedStateStyle } from '@symbiote-native/components/state-style';
3
+ import * as i0 from "@angular/core";
4
+ export { resolveStateStyle, type IPressStateArgument, type IResolvedStateStyle, } from '@symbiote-native/components/state-style';
5
+ export declare class SymbioteStateStylePipe implements PipeTransform {
6
+ transform(value: unknown): IResolvedStateStyle;
7
+ static ɵfac: i0.ɵɵFactoryDeclaration<SymbioteStateStylePipe, never>;
8
+ static ɵpipe: i0.ɵɵPipeDeclaration<SymbioteStateStylePipe, "resolveStateStyle", true>;
9
+ }
@@ -0,0 +1,39 @@
1
+ // Angular-only addition to this otherwise byte-identical file: a template expression can call a
2
+ // PIPE, never an arbitrary imported function — `resolveStateStyle(x)` in a template resolves as
3
+ // `ctx.resolveStateStyle(x)`, a component-instance method lookup, which the lowering transform has
4
+ // no component to add one to (verified against the installed compiler-cli, 2026-09-01: the linker
5
+ // compiles it straight to a `ctx.` property read with no error, so this fails at RUNTIME —
6
+ // `ctx.resolveStateStyle is not a function` — not at compile time). A pipe is the one thing that
7
+ // resolves through `dependencies` the way a component/directive does.
8
+ //
9
+ // `emitStyleExpressionOnce` still applies: the transform's `@let pair = (expr | resolveStateStyle);`
10
+ // evaluates `expr` exactly once (verified via the compiled `ɵɵpipeBind1` call) and `pair.style` /
11
+ // `pair.activeStyle` are two cheap reads of the local, never a second evaluation of `expr`.
12
+ import { Pipe } from '@angular/core';
13
+ import { resolveStateStyle as resolveStateStyleImpl } from '@symbiote-native/components/state-style';
14
+ import * as i0 from "@angular/core";
15
+ // Re-export only. The implementation is shared (`@symbiote-native/components`) because two adapters
16
+ // had written byte-identical copies; this file exists so the code a transform EMITS keeps importing
17
+ // from the adapter package the app already depends on, rather than reaching past it.
18
+ //
19
+ // Imported from the SUBPATH, not the barrel: every adapter barrel re-exports
20
+ // `@symbiote-native/components` wholesale, so a name on that barrel silently becomes public API on
21
+ // all five — which is how a transform internal nearly shipped as a supported export.
22
+ //
23
+ // Present on every adapter, including those with no lowering transform yet: a per-framework subpath
24
+ // that four of five declare is exactly the silent gap `tests/package-subpath-parity.test.ts` exists
25
+ // to catch, and the file costs a re-export. Deliberately NOT on the public barrel — the emitted
26
+ // code names it, app code does not.
27
+ export { resolveStateStyle, } from '@symbiote-native/components/state-style';
28
+ export class SymbioteStateStylePipe {
29
+ transform(value) {
30
+ return resolveStateStyleImpl(value);
31
+ }
32
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: SymbioteStateStylePipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
33
+ static ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "22.0.8", ngImport: i0, type: SymbioteStateStylePipe, isStandalone: true, name: "resolveStateStyle" });
34
+ }
35
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: SymbioteStateStylePipe, decorators: [{
36
+ type: Pipe,
37
+ args: [{ name: 'resolveStateStyle', standalone: true }]
38
+ }] });
39
+ //# sourceMappingURL=state-style.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"state-style.js","sourceRoot":"","sources":["../../src/state-style.ts"],"names":[],"mappings":"AAkBA,gGAAgG;AAChG,gGAAgG;AAChG,mGAAmG;AACnG,kGAAkG;AAClG,2FAA2F;AAC3F,iGAAiG;AACjG,sEAAsE;AACtE,EAAE;AACF,qGAAqG;AACrG,kGAAkG;AAClG,4FAA4F;AAC5F,OAAO,EAAE,IAAI,EAAsB,MAAM,eAAe,CAAC;AACzD,OAAO,EAAE,iBAAiB,IAAI,qBAAqB,EAAE,MAAM,yCAAyC,CAAC;;AA9BrG,oGAAoG;AACpG,oGAAoG;AACpG,qFAAqF;AACrF,EAAE;AACF,6EAA6E;AAC7E,mGAAmG;AACnG,qFAAqF;AACrF,EAAE;AACF,oGAAoG;AACpG,oGAAoG;AACpG,gGAAgG;AAChG,oCAAoC;AACpC,OAAO,EACL,iBAAiB,GAGlB,MAAM,yCAAyC,CAAC;AAkBjD,MAAM,OAAO,sBAAsB;IACjC,SAAS,CAAC,KAAc;QACtB,OAAO,qBAAqB,CAAC,KAAK,CAAC,CAAC;IACtC,CAAC;uGAHU,sBAAsB;qGAAtB,sBAAsB;;2FAAtB,sBAAsB;kBADlC,IAAI;mBAAC,EAAE,IAAI,EAAE,mBAAmB,EAAE,UAAU,EAAE,IAAI,EAAE"}
@@ -0,0 +1,69 @@
1
+ // The Angular app-side Metro transformer: host-primitive lowering + the CSS pipeline.
2
+ //
3
+ // Point `metro.config.js`'s `babelTransformerPath` here INSTEAD of `./metro-css-parser`, and do
4
+ // NOT also list `./babel-lower-host-primitives` in `babel.config.js` — as a babel plugin it does
5
+ // half the job, silently.
6
+ //
7
+ // WHY a source pre-pass and not a plugin. Angular's linker reads an INLINE template by SLICING THE
8
+ // FILE'S SOURCE TEXT at the AST node's own byte range (`templateFromPartialCode` in
9
+ // `@angular/compiler-cli`'s bundled linker: `code: this.code`, `range: {startPos, endPos}`), never
10
+ // from the string the AST carries. So a plugin that rewrites `template` in the AST is invisible to
11
+ // a linker running in the SAME babel pass, while its edit to `dependencies` — read as an ordinary
12
+ // AST array — lands. The result is the worst of both: the primitives are gone from `dependencies`
13
+ // and the tags are still `<View>`/`<Pressable>`, so they match no directive at all, no component
14
+ // template runs, and the screen loses its styles and its press handlers with nothing red anywhere.
15
+ //
16
+ // Printing the lowered AST back to TEXT before Metro parses it is what makes the two agree: the
17
+ // linker then slices the rewritten template out of the source it was handed.
18
+ //
19
+ // .cjs for the same reason as this package's other loose scripts: Metro `require()`s a
20
+ // babelTransformerPath directly, and the package is "type": "module".
21
+ const { transformSync } = require('@babel/core');
22
+ const { readFileSync } = require('node:fs');
23
+ const { createHash } = require('node:crypto');
24
+ const {
25
+ createCssMetroTransformer,
26
+ resolveUpstreamTransformer,
27
+ } = require('@symbiote-native/css-parser');
28
+
29
+ const LOWER_PLUGIN_PATH = require.resolve('./babel-lower-host-primitives.cjs');
30
+ const lowerHostPrimitives = require(LOWER_PLUGIN_PATH);
31
+
32
+ // ngc's partial output is the only thing this can act on, and every such file names the declaration
33
+ // helper. Cheaper than parsing every file in the bundle to find out it has no component in it.
34
+ const PARTIAL_DECLARATION_MARKER = 'ɵɵngDeclareComponent';
35
+
36
+ function createLoweringTransformer(upstreamTransformer) {
37
+ return {
38
+ transform(params) {
39
+ if (!params.src.includes(PARTIAL_DECLARATION_MARKER)) {
40
+ return upstreamTransformer.transform(params);
41
+ }
42
+ const lowered = transformSync(params.src, {
43
+ filename: params.filename,
44
+ babelrc: false,
45
+ configFile: false,
46
+ plugins: [lowerHostPrimitives],
47
+ });
48
+ return upstreamTransformer.transform({
49
+ ...params,
50
+ src: lowered?.code ?? params.src,
51
+ });
52
+ },
53
+ // Metro's own key covers the upstream transformer and babel.config.js, NOT a plugin this file
54
+ // require()s itself — so editing the lowering rules would otherwise be served from cache and
55
+ // read on device as "the change did nothing".
56
+ getCacheKey(...args) {
57
+ const upstream = upstreamTransformer.getCacheKey?.(...args) ?? '';
58
+ const plugin = createHash('sha1')
59
+ .update(readFileSync(LOWER_PLUGIN_PATH))
60
+ .digest('hex');
61
+ return `${upstream}-symbiote-lower-${plugin}`;
62
+ },
63
+ };
64
+ }
65
+
66
+ module.exports = createCssMetroTransformer(
67
+ createLoweringTransformer(resolveUpstreamTransformer()),
68
+ );
69
+ module.exports.createLoweringTransformer = createLoweringTransformer;
package/package.json CHANGED
@@ -1,7 +1,17 @@
1
1
  {
2
2
  "name": "@symbiote-native/angular",
3
- "version": "0.8.0",
3
+ "version": "1.0.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
+ "keywords": [
6
+ "react-native",
7
+ "symbiote-native",
8
+ "angular",
9
+ "renderer2",
10
+ "fabric",
11
+ "cross-platform",
12
+ "ios",
13
+ "android"
14
+ ],
5
15
  "license": "MIT",
6
16
  "repository": {
7
17
  "type": "git",
@@ -29,19 +39,28 @@
29
39
  "default": "./src/bootstrap.ts"
30
40
  },
31
41
  "./metro-css-parser": "./metro-css-parser.cjs",
42
+ "./metro-transformer": "./metro-transformer.cjs",
32
43
  "./metro-config": "./metro-config.cjs",
33
44
  "./babel-linker": "./babel-linker.cjs",
34
45
  "./babel-register-composed": "./babel-register-composed.cjs",
35
- "./tsconfig.angular.base.json": "./tsconfig.angular.base.json"
46
+ "./babel-lower-host-primitives": "./babel-lower-host-primitives.cjs",
47
+ "./tsconfig.angular.base.json": "./tsconfig.angular.base.json",
48
+ "./state-style": {
49
+ "types": "./build/angular/state-style.d.ts",
50
+ "react-native": "./build/angular/state-style.js",
51
+ "default": "./src/state-style.ts"
52
+ }
36
53
  },
37
54
  "files": [
38
55
  "src",
39
56
  "build",
40
57
  "bin",
41
58
  "metro-css-parser.cjs",
59
+ "metro-transformer.cjs",
42
60
  "metro-config.cjs",
43
61
  "babel-linker.cjs",
44
62
  "babel-register-composed.cjs",
63
+ "babel-lower-host-primitives.cjs",
45
64
  "tsconfig.angular.base.json",
46
65
  "!src/**/*.test.*",
47
66
  "!src/**/*.spec.*",
@@ -56,14 +75,14 @@
56
75
  "dependencies": {
57
76
  "@angular/compiler-cli": "~22.0.8",
58
77
  "@react-native/typescript-config": "0.86.0",
59
- "@symbiote-native/components": "0.5.0",
60
- "@symbiote-native/css-parser": "0.4.0"
78
+ "@symbiote-native/components": "1.0.0",
79
+ "@symbiote-native/css-parser": "0.5.0"
61
80
  },
62
81
  "peerDependencies": {
63
82
  "@angular/core": ">=20",
64
83
  "@angular/forms": ">=20",
65
- "@symbiote-native/engine": ">=0.1.7",
66
- "react-native": ">=0.86"
84
+ "react-native": ">=0.86",
85
+ "@symbiote-native/engine": "^0.4.0"
67
86
  },
68
87
  "devDependencies": {
69
88
  "@angular/compiler": "~22.0.8",
@@ -73,8 +92,8 @@
73
92
  "@types/babel__core": "^7.20.5",
74
93
  "@types/node": "^26.0.0",
75
94
  "typescript": "~6.0.0",
76
- "@symbiote-native/engine": "0.3.0",
77
- "@symbiote-native/test-utils": "0.2.0"
95
+ "@symbiote-native/engine": "0.4.0",
96
+ "@symbiote-native/test-utils": "0.3.0"
78
97
  },
79
98
  "scripts": {
80
99
  "clean": "rm -rf build",
@@ -69,7 +69,9 @@ const ANCHOR_HOST_COMPONENTS: Set<string> = new Set(
69
69
  'TouchableWithoutFeedback',
70
70
  'VirtualizedList',
71
71
  'VirtualizedSectionList',
72
- 'symbiote-pressable',
72
+ // 'symbiote-pressable' deliberately NOT here — see Pressable's own @Component comment
73
+ // (components/pressable/index.ts). It is the host-behavior registry's tag, never a spelling
74
+ // of the composed component now, so it must resolve to a real, painting node.
73
75
  ].map(selector => selector.toLowerCase()),
74
76
  );
75
77
 
@@ -41,6 +41,13 @@ import type {
41
41
  } from '@symbiote-native/engine';
42
42
  import { anchorStyleProp, TextHost } from '../primitives';
43
43
  import { TouchableOpacity } from './touchable';
44
+ import {
45
+ gateWanted,
46
+ injectGateDemandAbove,
47
+ provideGateDemand,
48
+ type IGateDemand,
49
+ type IGatedAccessibilityEvent,
50
+ } from '../gate-demand';
44
51
 
45
52
  export type IButtonProps = Omit<
46
53
  ICoreButtonProps,
@@ -54,6 +61,7 @@ export type IButtonProps = Omit<
54
61
  @Component({
55
62
  selector: 'Button',
56
63
  standalone: true,
64
+ viewProviders: [provideGateDemand(() => Button)],
57
65
  schemas: [CUSTOM_ELEMENTS_SCHEMA],
58
66
  imports: [TouchableOpacity, TextHost],
59
67
  changeDetection: ChangeDetectionStrategy.OnPush,
@@ -130,6 +138,15 @@ export class Button implements IButtonProps, DoCheck {
130
138
  @Output() readonly magicTap = new EventEmitter<ISymbioteEvent>();
131
139
  @Output() readonly accessibilityEscape = new EventEmitter<ISymbioteEvent>();
132
140
 
141
+ // This wrapper binds the four gated accessibility events on the component it renders, which
142
+ // Angular forces to be unconditional and which would light that component's gates on every
143
+ // instance. It answers for them instead — see `gate-demand.ts`.
144
+ private readonly gateDemandAbove = injectGateDemandAbove();
145
+
146
+ wantsGate(name: IGatedAccessibilityEvent): boolean {
147
+ return gateWanted(this.gateDemandAbove, name, this[name]);
148
+ }
149
+
133
150
  // Button-owned props: title is the Text child, color/disabled fold into the label style, and
134
151
  // touchSoundDisabled re-maps onto TouchableOpacity.
135
152
  @Input() title = '';
@@ -42,10 +42,6 @@ export type {
42
42
  template: `
43
43
  <symbiote-image
44
44
  [symbioteHostProps]="imageProps()"
45
- (accessibilityAction)="handleAccessibilityAction($event)"
46
- (accessibilityTap)="handleAccessibilityTap($event)"
47
- (magicTap)="handleMagicTap($event)"
48
- (accessibilityEscape)="handleAccessibilityEscape($event)"
49
45
  (loadStart)="handleLoadStart($event)"
50
46
  (load)="handleLoad($event)"
51
47
  (loadEnd)="handleLoadEnd($event)"
@@ -42,10 +42,6 @@ export type {
42
42
  template: `
43
43
  <symbiote-image
44
44
  [symbioteHostProps]="imageProps()"
45
- (accessibilityAction)="handleAccessibilityAction($event)"
46
- (accessibilityTap)="handleAccessibilityTap($event)"
47
- (magicTap)="handleMagicTap($event)"
48
- (accessibilityEscape)="handleAccessibilityEscape($event)"
49
45
  (loadStart)="handleLoadStart($event)"
50
46
  (load)="handleLoad($event)"
51
47
  (loadEnd)="handleLoadEnd($event)"