@symbiote-native/angular 0.7.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.
- package/README.md +3 -3
- package/babel-lower-host-primitives.cjs +636 -0
- package/babel-register-composed.cjs +21 -3
- package/build/angular/anchor-host-registry.js +3 -1
- package/build/angular/anchor-host-registry.js.map +1 -1
- package/build/angular/bootstrap.js +1 -1
- package/build/angular/bootstrap.js.map +1 -1
- package/build/angular/components/activity-indicator/index.android.js +7 -2
- package/build/angular/components/activity-indicator/index.android.js.map +1 -1
- package/build/angular/components/activity-indicator/index.ios.js +3 -1
- package/build/angular/components/activity-indicator/index.ios.js.map +1 -1
- package/build/angular/components/activity-indicator/shared.d.ts +1 -1
- package/build/angular/components/activity-indicator/shared.js +1 -1
- package/build/angular/components/activity-indicator/shared.js.map +1 -1
- package/build/angular/components/button.d.ts +3 -0
- package/build/angular/components/button.js +22 -5
- package/build/angular/components/button.js.map +1 -1
- package/build/angular/components/flat-list/index.d.ts +1 -1
- package/build/angular/components/flat-list/index.js +47 -14
- package/build/angular/components/flat-list/index.js.map +1 -1
- package/build/angular/components/image/index.android.js +4 -10
- package/build/angular/components/image/index.android.js.map +1 -1
- package/build/angular/components/image/index.ios.js +4 -10
- package/build/angular/components/image/index.ios.js.map +1 -1
- package/build/angular/components/image/shared.d.ts +4 -4
- package/build/angular/components/image/shared.js +51 -33
- package/build/angular/components/image/shared.js.map +1 -1
- package/build/angular/components/image-background.d.ts +3 -0
- package/build/angular/components/image-background.js +32 -9
- package/build/angular/components/image-background.js.map +1 -1
- package/build/angular/components/input-accessory-view/index.d.ts +2 -1
- package/build/angular/components/input-accessory-view/index.js +18 -16
- package/build/angular/components/input-accessory-view/index.js.map +1 -1
- package/build/angular/components/keyboard-avoiding-view/index.d.ts +3 -1
- package/build/angular/components/keyboard-avoiding-view/index.js +56 -19
- package/build/angular/components/keyboard-avoiding-view/index.js.map +1 -1
- package/build/angular/components/modal/index.d.ts +1 -0
- package/build/angular/components/modal/index.js +21 -10
- package/build/angular/components/modal/index.js.map +1 -1
- package/build/angular/components/pressable/index.d.ts +10 -5
- package/build/angular/components/pressable/index.js +61 -16
- package/build/angular/components/pressable/index.js.map +1 -1
- package/build/angular/components/refresh-control/index.d.ts +2 -1
- package/build/angular/components/refresh-control/index.js +13 -9
- package/build/angular/components/refresh-control/index.js.map +1 -1
- package/build/angular/components/safe-area-view/index.d.ts +3 -1
- package/build/angular/components/safe-area-view/index.js +22 -20
- package/build/angular/components/safe-area-view/index.js.map +1 -1
- package/build/angular/components/scroll-view/index.android.js +44 -14
- package/build/angular/components/scroll-view/index.android.js.map +1 -1
- package/build/angular/components/scroll-view/index.ios.js +13 -5
- package/build/angular/components/scroll-view/index.ios.js.map +1 -1
- package/build/angular/components/scroll-view/projection.d.ts +32 -0
- package/build/angular/components/scroll-view/projection.js +212 -47
- package/build/angular/components/scroll-view/projection.js.map +1 -1
- package/build/angular/components/scroll-view/shared.d.ts +2 -0
- package/build/angular/components/scroll-view/shared.js +48 -11
- package/build/angular/components/scroll-view/shared.js.map +1 -1
- package/build/angular/components/scroll-view/sticky-header.js +7 -3
- package/build/angular/components/scroll-view/sticky-header.js.map +1 -1
- package/build/angular/components/section-list/index.d.ts +9 -1
- package/build/angular/components/section-list/index.js +72 -18
- package/build/angular/components/section-list/index.js.map +1 -1
- package/build/angular/components/switch/index.android.js +23 -9
- package/build/angular/components/switch/index.android.js.map +1 -1
- package/build/angular/components/switch/index.ios.js +23 -9
- package/build/angular/components/switch/index.ios.js.map +1 -1
- package/build/angular/components/switch/shared.d.ts +1 -1
- package/build/angular/components/switch/shared.js +5 -2
- package/build/angular/components/switch/shared.js.map +1 -1
- package/build/angular/components/text-input.d.ts +8 -2
- package/build/angular/components/text-input.js +79 -34
- package/build/angular/components/text-input.js.map +1 -1
- package/build/angular/components/touchable/index.d.ts +36 -7
- package/build/angular/components/touchable/index.js +280 -72
- package/build/angular/components/touchable/index.js.map +1 -1
- package/build/angular/components/touchable-native-feedback/index.d.ts +2 -1
- package/build/angular/components/touchable-native-feedback/index.js +19 -17
- package/build/angular/components/touchable-native-feedback/index.js.map +1 -1
- package/build/angular/components/virtualized-list/directives.js +4 -0
- package/build/angular/components/virtualized-list/directives.js.map +1 -1
- package/build/angular/components/virtualized-list/index.d.ts +8 -2
- package/build/angular/components/virtualized-list/index.js +207 -61
- package/build/angular/components/virtualized-list/index.js.map +1 -1
- package/build/angular/components/virtualized-section-list/directives.js.map +1 -1
- package/build/angular/components/virtualized-section-list/index.d.ts +21 -1
- package/build/angular/components/virtualized-section-list/index.js +100 -22
- package/build/angular/components/virtualized-section-list/index.js.map +1 -1
- package/build/angular/components.d.ts +2 -2
- package/build/angular/components.js +1 -1
- package/build/angular/components.js.map +1 -1
- package/build/angular/create-portal/index.d.ts +11 -2
- package/build/angular/create-portal/index.js +42 -12
- package/build/angular/create-portal/index.js.map +1 -1
- package/build/angular/create-tunnel/index.js.map +1 -1
- package/build/angular/descriptor-to-angular/index.js +3 -1
- package/build/angular/descriptor-to-angular/index.js.map +1 -1
- package/build/angular/diagnostics.d.ts +33 -0
- package/build/angular/diagnostics.js +82 -0
- package/build/angular/diagnostics.js.map +1 -0
- package/build/angular/gate-demand.d.ts +37 -0
- package/build/angular/gate-demand.js +84 -0
- package/build/angular/gate-demand.js.map +1 -0
- package/build/angular/host-instance/index.js +1 -1
- package/build/angular/host-instance/index.js.map +1 -1
- package/build/angular/index.d.ts +6 -2
- package/build/angular/index.js +16 -1
- package/build/angular/index.js.map +1 -1
- package/build/angular/modules/animated/create-animated-component.d.ts +1 -0
- package/build/angular/modules/animated/create-animated-component.js +41 -18
- package/build/angular/modules/animated/create-animated-component.js.map +1 -1
- package/build/angular/modules/app-registry/index.js.map +1 -1
- package/build/angular/modules/status-bar/index.js +1 -1
- package/build/angular/modules/status-bar/index.js.map +1 -1
- package/build/angular/primitives/index.d.ts +31 -2
- package/build/angular/primitives/index.js +81 -3
- package/build/angular/primitives/index.js.map +1 -1
- package/build/angular/primitives/shared.d.ts +9 -1
- package/build/angular/primitives/shared.js +49 -3
- package/build/angular/primitives/shared.js.map +1 -1
- package/build/angular/register.d.ts +1 -0
- package/build/angular/register.js +35 -0
- package/build/angular/register.js.map +1 -0
- package/build/angular/render/index.js +51 -6
- package/build/angular/render/index.js.map +1 -1
- package/build/angular/renderer/index.d.ts +1 -0
- package/build/angular/renderer/index.js +157 -21
- package/build/angular/renderer/index.js.map +1 -1
- package/build/angular/services/color-scheme.service.js.map +1 -1
- package/build/angular/services/window-dimensions.service.js +1 -1
- package/build/angular/services/window-dimensions.service.js.map +1 -1
- package/build/angular/state-style.d.ts +9 -0
- package/build/angular/state-style.js +39 -0
- package/build/angular/state-style.js.map +1 -0
- package/metro-transformer.cjs +69 -0
- package/package.json +27 -8
- package/src/anchor-host-registry.ts +3 -1
- package/src/bootstrap.ts +4 -1
- package/src/components/activity-indicator/index.android.ts +7 -2
- package/src/components/activity-indicator/index.ios.ts +3 -1
- package/src/components/activity-indicator/shared.ts +32 -13
- package/src/components/button.ts +36 -6
- package/src/components/flat-list/index.ts +91 -29
- package/src/components/image/index.android.ts +9 -6
- package/src/components/image/index.ios.ts +9 -6
- package/src/components/image/shared.ts +110 -45
- package/src/components/image-background.ts +47 -10
- package/src/components/input-accessory-view/index.ts +41 -18
- package/src/components/keyboard-avoiding-view/index.ts +76 -22
- package/src/components/modal/index.ts +39 -12
- package/src/components/pressable/index.ts +121 -31
- package/src/components/refresh-control/index.ts +36 -13
- package/src/components/safe-area-view/index.ts +44 -19
- package/src/components/scroll-view/index.android.ts +31 -9
- package/src/components/scroll-view/index.ios.ts +17 -4
- package/src/components/scroll-view/projection.ts +290 -63
- package/src/components/scroll-view/shared.ts +124 -30
- package/src/components/scroll-view/sticky-header.ts +25 -8
- package/src/components/section-list/index.ts +79 -19
- package/src/components/switch/index.android.ts +18 -7
- package/src/components/switch/index.ios.ts +18 -7
- package/src/components/switch/shared.ts +15 -4
- package/src/components/text-input.ts +119 -31
- package/src/components/touchable/index.ts +339 -72
- package/src/components/touchable-native-feedback/index.ts +50 -18
- package/src/components/virtualized-list/directives.ts +19 -5
- package/src/components/virtualized-list/index.ts +292 -72
- package/src/components/virtualized-section-list/directives.ts +6 -3
- package/src/components/virtualized-section-list/index.ts +164 -34
- package/src/components.ts +6 -1
- package/src/create-portal/index.ts +47 -11
- package/src/create-tunnel/index.ts +3 -1
- package/src/descriptor-to-angular/index.ts +29 -8
- package/src/diagnostics.ts +138 -0
- package/src/gate-demand.ts +109 -0
- package/src/host-instance/index.ts +9 -3
- package/src/index.ts +33 -2
- package/src/modules/animated/create-animated-component.ts +67 -19
- package/src/modules/app-registry/index.ts +3 -1
- package/src/modules/status-bar/index.ts +13 -4
- package/src/primitives/index.ts +73 -2
- package/src/primitives/shared.ts +70 -9
- package/src/register.ts +43 -0
- package/src/render/index.ts +59 -7
- package/src/renderer/index.ts +209 -37
- package/src/services/color-scheme.service.ts +3 -1
- package/src/services/window-dimensions.service.ts +11 -4
- package/src/state-style.ts +39 -0
|
@@ -4,10 +4,12 @@
|
|
|
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
|
-
import {
|
|
11
|
+
import { countAngular, noteAngularCreate, noteAngularWrite, } from '../diagnostics';
|
|
12
|
+
import { flushScrollViewProjections, getScrollViewProjection, removeScrollViewProjectedChild, } from '../components/scroll-view/projection';
|
|
11
13
|
function isSurface(parent) {
|
|
12
14
|
return parent instanceof SymbioteSurface;
|
|
13
15
|
}
|
|
@@ -17,6 +19,61 @@ function isRawText(node) {
|
|
|
17
19
|
function isRecord(value) {
|
|
18
20
|
return typeof value === 'object' && value !== null;
|
|
19
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
|
+
}
|
|
20
77
|
// Diagnostic-only: tags each anchor with a sequential id so log lines can tell distinct
|
|
21
78
|
// anchors apart (they all otherwise print the same generic '#anchor' component name).
|
|
22
79
|
// Gated behind isDebug() so a production build pays zero cost (no WeakMap writes).
|
|
@@ -37,7 +94,9 @@ function describeHost(node) {
|
|
|
37
94
|
if (isSurface(node))
|
|
38
95
|
return 'surface';
|
|
39
96
|
const anchorId = anchorDebugIds.get(node);
|
|
40
|
-
return anchorId !== undefined
|
|
97
|
+
return anchorId !== undefined
|
|
98
|
+
? `${node.component}#${anchorId}`
|
|
99
|
+
: node.component;
|
|
41
100
|
}
|
|
42
101
|
const PRIMITIVE_SELECTOR_ALIAS = {
|
|
43
102
|
// Public ergonomic selectors map directly to the engine primitive descriptors.
|
|
@@ -50,6 +109,10 @@ const PRIMITIVE_SELECTOR_ALIAS = {
|
|
|
50
109
|
// Inserting a bare raw-text node anywhere but inside a <Text> is invalid in Fabric (a
|
|
51
110
|
// stray RCTRawText would paint). Angular's ɵɵtext only ever lands text inside a <Text>,
|
|
52
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.
|
|
53
116
|
function assertTextPlacement(child, parent) {
|
|
54
117
|
if (isRawText(child) && (isSurface(parent) || !parent.isText)) {
|
|
55
118
|
throw new Error(`Text string "${String(child.props.text)}" must be rendered inside a <Text>`);
|
|
@@ -74,28 +137,45 @@ export class SymbioteRenderer {
|
|
|
74
137
|
// name for a native leaf. Public aliases are normalized to their engine primitive name
|
|
75
138
|
// before descriptor lookup. descriptorFor resolves it; an unknown `symbiote-*` is a typo,
|
|
76
139
|
// any other string flows through as a raw Fabric name (events/processors derived from its
|
|
77
|
-
// ViewConfig).
|
|
78
|
-
//
|
|
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.
|
|
142
|
+
countAngular('nodesCreated');
|
|
143
|
+
noteAngularCreate(name);
|
|
79
144
|
const engineName = PRIMITIVE_SELECTOR_ALIAS[name] ?? name;
|
|
80
145
|
if (isAnchorHostComponent(engineName)) {
|
|
81
146
|
const anchor = tagAnchorForDebug(createAnchor());
|
|
82
|
-
|
|
147
|
+
if (isDebug()) {
|
|
148
|
+
dlog(`angular createElement ${name} -> anchor host ${describeHost(anchor)}`);
|
|
149
|
+
}
|
|
83
150
|
return anchor;
|
|
84
151
|
}
|
|
85
152
|
const descriptor = descriptorFor(engineName);
|
|
86
|
-
|
|
87
|
-
|
|
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
|
+
}
|
|
88
164
|
return toPublicInstance(node);
|
|
89
165
|
}
|
|
90
166
|
createComment() {
|
|
91
167
|
// Angular structural directives (*ngIf / @if / @for) need anchor nodes to track
|
|
92
168
|
// position. A real retained node the commit walk SKIPS — no native view. Twin of the
|
|
93
169
|
// Vue createComment path.
|
|
170
|
+
countAngular('nodesCreated');
|
|
94
171
|
const anchor = tagAnchorForDebug(createAnchor());
|
|
95
|
-
|
|
172
|
+
if (isDebug()) {
|
|
173
|
+
dlog(`Angular renderer createComment -> ${describeHost(anchor)}`);
|
|
174
|
+
}
|
|
96
175
|
return anchor;
|
|
97
176
|
}
|
|
98
177
|
createText(value) {
|
|
178
|
+
countAngular('nodesCreated');
|
|
99
179
|
return createRawText(value);
|
|
100
180
|
}
|
|
101
181
|
appendChild(parent, newChild) {
|
|
@@ -104,14 +184,19 @@ export class SymbioteRenderer {
|
|
|
104
184
|
// addLViewToLContainer: skip silently now, the later projection pass places it correctly.
|
|
105
185
|
if (parent === null)
|
|
106
186
|
return;
|
|
187
|
+
countAngular('nodesInserted');
|
|
107
188
|
assertTextPlacement(newChild, parent);
|
|
108
189
|
if (isSurface(parent)) {
|
|
109
|
-
|
|
190
|
+
if (isDebug()) {
|
|
191
|
+
dlog(`Angular renderer appendChild parent=surface child=${describeHost(newChild)}`);
|
|
192
|
+
}
|
|
110
193
|
parent.appendChild(newChild);
|
|
111
194
|
}
|
|
112
195
|
else {
|
|
113
196
|
const projection = getScrollViewProjection(parent);
|
|
114
|
-
|
|
197
|
+
if (isDebug()) {
|
|
198
|
+
dlog(`Angular renderer appendChild parent=${describeHost(parent)} child=${describeHost(newChild)} projection=${projection !== undefined}`);
|
|
199
|
+
}
|
|
115
200
|
if (projection !== undefined) {
|
|
116
201
|
projection.appendProjectedChild(parent, newChild, (target, child) => appendChild(target, child));
|
|
117
202
|
}
|
|
@@ -124,9 +209,12 @@ export class SymbioteRenderer {
|
|
|
124
209
|
insertBefore(parent, newChild, refChild) {
|
|
125
210
|
if (parent === null)
|
|
126
211
|
return; // see the appendChild guard above
|
|
212
|
+
countAngular('nodesInserted');
|
|
127
213
|
assertTextPlacement(newChild, parent);
|
|
128
214
|
if (isSurface(parent)) {
|
|
129
|
-
|
|
215
|
+
if (isDebug()) {
|
|
216
|
+
dlog(`Angular renderer insertBefore parent=surface child=${describeHost(newChild)} ref=${refChild ? describeHost(refChild) : 'null'}`);
|
|
217
|
+
}
|
|
130
218
|
if (refChild)
|
|
131
219
|
parent.insertBefore(newChild, refChild);
|
|
132
220
|
else
|
|
@@ -134,7 +222,9 @@ export class SymbioteRenderer {
|
|
|
134
222
|
}
|
|
135
223
|
else {
|
|
136
224
|
const projection = getScrollViewProjection(parent);
|
|
137
|
-
|
|
225
|
+
if (isDebug()) {
|
|
226
|
+
dlog(`Angular renderer insertBefore parent=${describeHost(parent)} child=${describeHost(newChild)} ref=${refChild ? describeHost(refChild) : 'null'} projection=${projection !== undefined}`);
|
|
227
|
+
}
|
|
138
228
|
if (projection !== undefined) {
|
|
139
229
|
projection.insertProjectedChild(parent, newChild, refChild, (target, child, before) => {
|
|
140
230
|
if (before === undefined)
|
|
@@ -156,10 +246,13 @@ export class SymbioteRenderer {
|
|
|
156
246
|
// Detach from the child's own retained parent (a top-level node lives in
|
|
157
247
|
// surface.children with no parent). Angular's `parent` arg is ignored in favor of the
|
|
158
248
|
// authoritative link, mirroring the Vue adapter's remove.
|
|
159
|
-
|
|
160
|
-
const
|
|
161
|
-
|
|
162
|
-
|
|
249
|
+
countAngular('nodesRemoved');
|
|
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
|
+
}
|
|
163
256
|
if (!wasProjected) {
|
|
164
257
|
const parent = oldChild.parent;
|
|
165
258
|
if (parent !== undefined)
|
|
@@ -200,13 +293,18 @@ export class SymbioteRenderer {
|
|
|
200
293
|
setAttribute(el, name, value) {
|
|
201
294
|
if (isSurface(el))
|
|
202
295
|
return;
|
|
203
|
-
|
|
296
|
+
countAngular('rendererWrites');
|
|
297
|
+
noteAngularWrite(name);
|
|
298
|
+
routeProp(el, aliasedPropName(name), value);
|
|
204
299
|
this.surface.requestCommit();
|
|
205
300
|
}
|
|
206
301
|
removeAttribute(el, name) {
|
|
207
302
|
if (isSurface(el))
|
|
208
303
|
return;
|
|
209
|
-
|
|
304
|
+
countAngular('rendererWrites');
|
|
305
|
+
noteAngularWrite(name);
|
|
306
|
+
const aliased = aliasedPropName(name);
|
|
307
|
+
routeProp(el, aliased, textDefaultFor(el, aliased));
|
|
210
308
|
this.surface.requestCommit();
|
|
211
309
|
}
|
|
212
310
|
// Ivy compiles every class= / [class.foo] / [ngClass] form down to per-token addClass/
|
|
@@ -220,6 +318,8 @@ export class SymbioteRenderer {
|
|
|
220
318
|
addClass(el, name) {
|
|
221
319
|
if (isSurface(el))
|
|
222
320
|
return;
|
|
321
|
+
countAngular('rendererWrites');
|
|
322
|
+
noteAngularWrite('class');
|
|
223
323
|
const tokens = this.classTokens.get(el) ?? new Set();
|
|
224
324
|
tokens.add(name);
|
|
225
325
|
this.classTokens.set(el, tokens);
|
|
@@ -232,6 +332,8 @@ export class SymbioteRenderer {
|
|
|
232
332
|
const tokens = this.classTokens.get(el);
|
|
233
333
|
if (tokens === undefined)
|
|
234
334
|
return;
|
|
335
|
+
countAngular('rendererWrites');
|
|
336
|
+
noteAngularWrite('class');
|
|
235
337
|
tokens.delete(name);
|
|
236
338
|
routeProp(el, 'class', tokens.size > 0 ? [...tokens].join(' ') : undefined);
|
|
237
339
|
this.surface.requestCommit();
|
|
@@ -244,6 +346,8 @@ export class SymbioteRenderer {
|
|
|
244
346
|
setStyle(el, style, value) {
|
|
245
347
|
if (isSurface(el))
|
|
246
348
|
return;
|
|
349
|
+
countAngular('rendererWrites');
|
|
350
|
+
noteAngularWrite(`style.${style}`);
|
|
247
351
|
const current = getExplicitStyle(el);
|
|
248
352
|
const base = isRecord(current) ? current : {};
|
|
249
353
|
routeProp(el, 'style', { ...base, [style]: value });
|
|
@@ -255,6 +359,8 @@ export class SymbioteRenderer {
|
|
|
255
359
|
const current = getExplicitStyle(el);
|
|
256
360
|
if (!isRecord(current))
|
|
257
361
|
return;
|
|
362
|
+
countAngular('rendererWrites');
|
|
363
|
+
noteAngularWrite(`style.${style}`);
|
|
258
364
|
const { [style]: _removed, ...rest } = current;
|
|
259
365
|
routeProp(el, 'style', rest);
|
|
260
366
|
this.surface.requestCommit();
|
|
@@ -264,13 +370,20 @@ export class SymbioteRenderer {
|
|
|
264
370
|
setProperty(el, name, value) {
|
|
265
371
|
if (isSurface(el))
|
|
266
372
|
return;
|
|
267
|
-
|
|
373
|
+
countAngular('rendererWrites');
|
|
374
|
+
noteAngularWrite(name);
|
|
375
|
+
const aliased = aliasedPropName(name);
|
|
376
|
+
routeProp(el, aliased, value === undefined ? textDefaultFor(el, aliased) : value);
|
|
268
377
|
this.surface.requestCommit();
|
|
269
378
|
}
|
|
270
379
|
setValue(node, value) {
|
|
380
|
+
countAngular('rendererWrites');
|
|
381
|
+
noteAngularWrite('#text');
|
|
271
382
|
// A useful permanent seam: text mutations are low-frequency and the one place a stale
|
|
272
383
|
// `{{binding}}` (a change-detection gap) shows up as "the setValue never fired".
|
|
273
|
-
|
|
384
|
+
if (isDebug()) {
|
|
385
|
+
dlog(`Angular renderer setValue "${value}" on ${describeHost(node)}`);
|
|
386
|
+
}
|
|
274
387
|
setText(node, value);
|
|
275
388
|
this.surface.requestCommit();
|
|
276
389
|
}
|
|
@@ -281,6 +394,20 @@ export class SymbioteRenderer {
|
|
|
281
394
|
listen(target, eventName, callback) {
|
|
282
395
|
if (!isSymbioteNode(target))
|
|
283
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
|
+
}
|
|
284
411
|
setEventListener(target, eventName, callback);
|
|
285
412
|
return () => setEventListener(target, eventName, undefined);
|
|
286
413
|
}
|
|
@@ -297,5 +424,14 @@ export class SymbioteRendererFactory {
|
|
|
297
424
|
createRenderer(_hostElement, _type) {
|
|
298
425
|
return (this.renderer ??= new SymbioteRenderer(this.surface));
|
|
299
426
|
}
|
|
427
|
+
// Not commit coalescing (requestCommit owns that) — this is the one moment where a ScrollView's
|
|
428
|
+
// two input channels are known to be consistent: Angular has finished writing every `@Input` AND
|
|
429
|
+
// the renderer has finished every projected insert/remove for this pass, while the surface's
|
|
430
|
+
// commit is still only queued. Sticky projection reconciles are batched to here for both reasons;
|
|
431
|
+
// see flushScrollViewProjections.
|
|
432
|
+
end() {
|
|
433
|
+
countAngular('cdPasses');
|
|
434
|
+
flushScrollViewProjections();
|
|
435
|
+
}
|
|
300
436
|
}
|
|
301
437
|
//# sourceMappingURL=index.js.map
|
|
@@ -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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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"color-scheme.service.js","sourceRoot":"","sources":["../../../src/services/color-scheme.service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AACvE,OAAO,EAAE,UAAU,EAAyB,MAAM,yBAAyB,CAAC;;AAE5E;;;;;;;GAOG;AAEH,MAAM,OAAO,kBAAkB;IACpB,WAAW,GAAG,MAAM,
|
|
1
|
+
{"version":3,"file":"color-scheme.service.js","sourceRoot":"","sources":["../../../src/services/color-scheme.service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AACvE,OAAO,EAAE,UAAU,EAAyB,MAAM,yBAAyB,CAAC;;AAE5E;;;;;;;GAOG;AAEH,MAAM,OAAO,kBAAkB;IACpB,WAAW,GAAG,MAAM,CAC3B,UAAU,CAAC,cAAc,EAAE;oFAC5B,CAAC;IAEF;QACE,MAAM,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC,CAAC;QAEtC,MAAM,YAAY,GAAG,UAAU,CAAC,iBAAiB,CAAC,WAAW,CAAC,EAAE;YAC9D,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC;QAChD,CAAC,CAAC,CAAC;QAEH,UAAU,CAAC,SAAS,CAAC,GAAG,EAAE;YACxB,YAAY,CAAC,MAAM,EAAE,CAAC;QACxB,CAAC,CAAC,CAAC;IACL,CAAC;uGAfU,kBAAkB;2GAAlB,kBAAkB,cADL,MAAM;;2FACnB,kBAAkB;kBAD9B,UAAU;mBAAC,EAAE,UAAU,EAAE,MAAM,EAAE"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { DestroyRef, inject, Injectable, signal } from '@angular/core';
|
|
2
|
-
import { Dimensions } from '@symbiote-native/engine';
|
|
2
|
+
import { Dimensions, } from '@symbiote-native/engine';
|
|
3
3
|
import * as i0 from "@angular/core";
|
|
4
4
|
/**
|
|
5
5
|
* Angular twin of React's `useWindowDimensions` and Vue's `useWindowDimensions` composable. The
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"window-dimensions.service.js","sourceRoot":"","sources":["../../../src/services/window-dimensions.service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AACvE,OAAO,
|
|
1
|
+
{"version":3,"file":"window-dimensions.service.js","sourceRoot":"","sources":["../../../src/services/window-dimensions.service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AACvE,OAAO,EACL,UAAU,GAGX,MAAM,yBAAyB,CAAC;;AAEjC;;;;;;;GAOG;AAEH,MAAM,OAAO,uBAAuB;IACzB,UAAU,GAAG,MAAM,CAAkB,UAAU,CAAC,GAAG,CAAC,QAAQ,CAAC;mFAAC,CAAC;IAExE;QACE,MAAM,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC,CAAC;QAEtC,MAAM,YAAY,GAAG,CAAC,MAAuB,EAAQ,EAAE;YACrD,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;YAClC,IACE,OAAO,CAAC,KAAK,KAAK,MAAM,CAAC,KAAK;gBAC9B,OAAO,CAAC,MAAM,KAAK,MAAM,CAAC,MAAM;gBAChC,OAAO,CAAC,KAAK,KAAK,MAAM,CAAC,KAAK;gBAC9B,OAAO,CAAC,SAAS,KAAK,MAAM,CAAC,SAAS,EACtC,CAAC;gBACD,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;YAC9B,CAAC;QACH,CAAC,CAAC;QAEF,MAAM,YAAY,GAAG,UAAU,CAAC,gBAAgB,CAC9C,QAAQ,EACR,CAAC,GAAmB,EAAE,EAAE;YACtB,YAAY,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QAC3B,CAAC,CACF,CAAC;QACF,0FAA0F;QAC1F,YAAY,CAAC,UAAU,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC;QAEvC,UAAU,CAAC,SAAS,CAAC,GAAG,EAAE;YACxB,YAAY,CAAC,MAAM,EAAE,CAAC;QACxB,CAAC,CAAC,CAAC;IACL,CAAC;uGA9BU,uBAAuB;2GAAvB,uBAAuB,cADV,MAAM;;2FACnB,uBAAuB;kBADnC,UAAU;mBAAC,EAAE,UAAU,EAAE,MAAM,EAAE"}
|
|
@@ -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.
|
|
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
|
-
"./
|
|
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.
|
|
60
|
-
"@symbiote-native/css-parser": "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
|
-
"
|
|
66
|
-
"
|
|
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.
|
|
77
|
-
"@symbiote-native/test-utils": "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
|
|
package/src/bootstrap.ts
CHANGED
|
@@ -5,7 +5,10 @@
|
|
|
5
5
|
|
|
6
6
|
import { AppRegistry as RNAppRegistry } from 'react-native';
|
|
7
7
|
import type { Type } from '@angular/core';
|
|
8
|
-
import {
|
|
8
|
+
import {
|
|
9
|
+
bootstrapHost,
|
|
10
|
+
type IBootstrapHostOptions,
|
|
11
|
+
} from '@symbiote-native/components/bootstrap';
|
|
9
12
|
import { AppRegistry, setHostRegistrar } from './modules/app-registry';
|
|
10
13
|
|
|
11
14
|
export type { IBootstrapHostOptions } from '@symbiote-native/components/bootstrap';
|