@symbiote-native/angular 2.0.0 → 3.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 +5 -4
- package/babel-register-composed.cjs +0 -8
- package/build/angular/callback-host.d.ts +25 -0
- package/build/angular/callback-host.js +211 -0
- package/build/angular/callback-host.js.map +1 -0
- package/build/angular/change-detection-flush.d.ts +14 -2
- package/build/angular/change-detection-flush.js +54 -6
- package/build/angular/change-detection-flush.js.map +1 -1
- package/build/angular/components/flat-list/index.js +39 -86
- package/build/angular/components/flat-list/index.js.map +1 -1
- package/build/angular/components/image-shared.js +49 -110
- package/build/angular/components/image-shared.js.map +1 -1
- package/build/angular/components/keyboard-avoiding-view/index.js +33 -72
- package/build/angular/components/keyboard-avoiding-view/index.js.map +1 -1
- package/build/angular/components/modal/index.js +58 -103
- package/build/angular/components/modal/index.js.map +1 -1
- package/build/angular/components/pressable-props.d.ts +2 -0
- package/build/angular/components/section-list/index.js +20 -103
- package/build/angular/components/section-list/index.js.map +1 -1
- package/build/angular/components/touchable-props.d.ts +1 -0
- package/build/angular/components/virtualized-list/directives.js +32 -22
- package/build/angular/components/virtualized-list/directives.js.map +1 -1
- package/build/angular/components/virtualized-list/index.d.ts +7 -1
- package/build/angular/components/virtualized-list/index.js +350 -359
- package/build/angular/components/virtualized-list/index.js.map +1 -1
- package/build/angular/components/virtualized-section-list/directives.js +20 -12
- package/build/angular/components/virtualized-section-list/directives.js.map +1 -1
- package/build/angular/components/virtualized-section-list/index.js +36 -142
- package/build/angular/components/virtualized-section-list/index.js.map +1 -1
- package/build/angular/components.d.ts +1 -1
- package/build/angular/components.js +1 -1
- package/build/angular/components.js.map +1 -1
- package/build/angular/create-portal/index.js +9 -8
- package/build/angular/create-portal/index.js.map +1 -1
- package/build/angular/create-tunnel/index.js +13 -12
- package/build/angular/create-tunnel/index.js.map +1 -1
- package/build/angular/descriptor-to-angular/index.js +6 -6
- package/build/angular/descriptor-to-angular/index.js.map +1 -1
- package/build/angular/diagnostics.d.ts +13 -0
- package/build/angular/diagnostics.js +18 -0
- package/build/angular/diagnostics.js.map +1 -1
- package/build/angular/element-props.d.ts +1 -3
- package/build/angular/elements.d.ts +46 -32
- package/build/angular/elements.js +217 -434
- package/build/angular/elements.js.map +1 -1
- package/build/angular/index.d.ts +3 -1
- package/build/angular/index.js +44 -13
- package/build/angular/index.js.map +1 -1
- package/build/angular/modules/animated/animated-leaf-binder.js +0 -2
- package/build/angular/modules/animated/animated-leaf-binder.js.map +1 -1
- package/build/angular/modules/animated/create-animated-component.js +69 -74
- package/build/angular/modules/animated/create-animated-component.js.map +1 -1
- package/build/angular/modules/animated/index.d.ts +30 -19
- package/build/angular/modules/status-bar/index.js +2 -8
- package/build/angular/modules/status-bar/index.js.map +1 -1
- package/build/angular/primitives/index.d.ts +14 -28
- package/build/angular/primitives/index.js +44 -107
- package/build/angular/primitives/index.js.map +1 -1
- package/build/angular/primitives/shared.d.ts +1 -0
- package/build/angular/primitives/shared.js +47 -32
- package/build/angular/primitives/shared.js.map +1 -1
- package/build/angular/render/index.js +34 -1
- package/build/angular/render/index.js.map +1 -1
- package/build/angular/renderer/index.d.ts +56 -0
- package/build/angular/renderer/index.js +295 -114
- package/build/angular/renderer/index.js.map +1 -1
- package/build/angular/runtime-matching.d.ts +9 -0
- package/build/angular/runtime-matching.js +82 -0
- package/build/angular/runtime-matching.js.map +1 -0
- package/build/angular/services/color-scheme.service.js +4 -4
- package/build/angular/services/color-scheme.service.js.map +1 -1
- package/build/angular/services/window-dimensions.service.js +4 -4
- package/build/angular/services/window-dimensions.service.js.map +1 -1
- package/build/angular/style-host.d.ts +11 -0
- package/build/angular/style-host.js +86 -0
- package/build/angular/style-host.js.map +1 -0
- package/metro-config.cjs +32 -16
- package/package.json +5 -5
- package/src/callback-host.ts +229 -0
- package/src/change-detection-flush.ts +62 -9
- package/src/components/flat-list/index.ts +2 -1
- package/src/components/keyboard-avoiding-view/index.ts +8 -0
- package/src/components/pressable-props.ts +8 -0
- package/src/components/touchable-props.ts +4 -0
- package/src/components/virtualized-list/index.ts +98 -45
- package/src/components.ts +0 -2
- package/src/diagnostics.ts +18 -0
- package/src/element-props.ts +1 -5
- package/src/elements.ts +159 -38
- package/src/index.ts +47 -14
- package/src/primitives/index.ts +14 -70
- package/src/primitives/shared.ts +21 -6
- package/src/render/index.ts +44 -0
- package/src/renderer/index.ts +347 -104
- package/src/runtime-matching.ts +80 -0
- package/src/style-host.ts +94 -0
- package/tsconfig.angular.base.json +11 -0
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
// adapters/vue/src/render.ts.
|
|
7
7
|
import { createElement as createEngineElement, createSurface, disposeRoot, dlog, reportUncaughtError, toPublicInstance, } from '@symbiote-native/engine';
|
|
8
8
|
import { descriptorFor } from '@symbiote-native/components';
|
|
9
|
-
import { ApplicationRef, createComponent, createEnvironmentInjector, DOCUMENT, ErrorHandler, RendererFactory2, ɵINJECTOR_SCOPE as INJECTOR_SCOPE, ɵprovideZonelessChangeDetectionInternal as provideZonelessChangeDetectionInternal, } from '@angular/core';
|
|
9
|
+
import { ApplicationRef, createComponent, createEnvironmentInjector, DOCUMENT, enableProdMode, ErrorHandler, RendererFactory2, ɵINJECTOR_SCOPE as INJECTOR_SCOPE, ɵprovideZonelessChangeDetectionInternal as provideZonelessChangeDetectionInternal, } from '@angular/core';
|
|
10
10
|
import { SymbioteRendererFactory } from '../renderer';
|
|
11
11
|
import { ColorSchemeService, WindowDimensionsService } from '../services';
|
|
12
12
|
// The two FFI-edge casts of this adapter, both confined here to bootstrap. Angular's core
|
|
@@ -88,7 +88,40 @@ function teardown(rootTag) {
|
|
|
88
88
|
apps.delete(rootTag);
|
|
89
89
|
disposeRoot(rootTag);
|
|
90
90
|
}
|
|
91
|
+
/**
|
|
92
|
+
* Turn Angular's assertions off when — and only when — the bundler has said this is a release.
|
|
93
|
+
*
|
|
94
|
+
* `ngDevMode` is a THIRD dev switch, and neither of the two this project already handles reaches
|
|
95
|
+
* it: `initNgDevMode()` turns itself ON whenever the global is undefined (`ng_dev_mode.ts:85`), and
|
|
96
|
+
* `@react-native/babel-preset` inlines `__DEV__` while knowing nothing about Angular. So every
|
|
97
|
+
* release build made with this adapter shipped dev-mode Angular — `inject()` of a special token
|
|
98
|
+
* builds a `new NodeInjector` and emits two profiler events PER ELEMENT
|
|
99
|
+
* (`di.ts:525`, `runInInjectorProfilerContext`). Measured on `angular-elements-suite.itest.ts`,
|
|
100
|
+
* `build-release`, with the census byte-identical on both sides: a 1 000-row create went from
|
|
101
|
+
* ~300 ms to ~223 ms, all of it in pass 1.
|
|
102
|
+
*
|
|
103
|
+
* AN EXPLICIT `false` IS THE ONLY RELEASE SIGNAL. A host that never defines `__DEV__` reads
|
|
104
|
+
* `undefined`, and a `!__DEV__` test would silence every NG-code diagnostic there in exchange for a
|
|
105
|
+
* speed-up nobody asked for. Metro writes a literal `true` or `false`, so the signal exists exactly
|
|
106
|
+
* where it can be trusted.
|
|
107
|
+
*
|
|
108
|
+
* Per mount rather than once per process: `enableProdMode()` only ever writes `false`, so repeating
|
|
109
|
+
* it costs a property write and a guard that has already been taken on every surface but the first.
|
|
110
|
+
*
|
|
111
|
+
* READ AS AN IDENTIFIER, NEVER AS `globalThis.__DEV__`, and that distinction is the whole
|
|
112
|
+
* mechanism. Both Metro and esbuild deliver `__DEV__` by SUBSTITUTING the identifier for a literal,
|
|
113
|
+
* so a property lookup finds nothing whatever the build says. The first spelling of this function
|
|
114
|
+
* used `Reflect.get(globalThis, '__DEV__')`, never fired once in the bench bundle, and measured a
|
|
115
|
+
* clean zero — which reads exactly like "this optimization does not work" and is not that. The
|
|
116
|
+
* `typeof` guard is what makes the bare identifier safe where nothing declares it at all.
|
|
117
|
+
*/
|
|
118
|
+
function settleAngularDevMode() {
|
|
119
|
+
if (typeof __DEV__ === 'undefined' || __DEV__ !== false)
|
|
120
|
+
return;
|
|
121
|
+
enableProdMode();
|
|
122
|
+
}
|
|
91
123
|
export function mount(rootTag, rootComponent, options) {
|
|
124
|
+
settleAngularDevMode();
|
|
92
125
|
// A re-mount on a live rootTag starts clean; otherwise the stale app double-drives the surface.
|
|
93
126
|
teardown(rootTag);
|
|
94
127
|
const surface = createSurface(rootTag);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/render/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/render/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -6,8 +6,60 @@ export declare class SymbioteRenderer implements Renderer2 {
|
|
|
6
6
|
private readonly surface;
|
|
7
7
|
readonly data: Record<string, unknown>;
|
|
8
8
|
destroyNode: ((node: ISymbioteNode) => void) | null;
|
|
9
|
+
private pendingStyleNode;
|
|
10
|
+
private pendingStyle;
|
|
11
|
+
private pendingClassNode;
|
|
12
|
+
private readonly releaseBeforeFlush;
|
|
9
13
|
constructor(surface: SymbioteSurface);
|
|
10
14
|
destroy(): void;
|
|
15
|
+
/**
|
|
16
|
+
* Publish whatever the styling run is holding. Idempotent, and free when it holds nothing.
|
|
17
|
+
*
|
|
18
|
+
* IT DOES NOT REQUEST A COMMIT, and that is not an omission — the request is made when the style
|
|
19
|
+
* is ACCUMULATED, exactly where it was made before the run existed. This runs from inside
|
|
20
|
+
* `flushOps`, which the commit itself calls first, so asking there schedules a SECOND commit whose
|
|
21
|
+
* tree is already current: a full `completeRoot` plus a Yoga pass for nothing.
|
|
22
|
+
*
|
|
23
|
+
* Measured, because it did not look like a cost. The bench arm's `select` fell 17.1 -> 3.8 ms and
|
|
24
|
+
* its `remove` rose 7.1 -> 18.2 in the same runs — the extra commit lands in whichever step's
|
|
25
|
+
* microtask happens to run it, so the work had MOVED between steps rather than gone. Two rows
|
|
26
|
+
* moving by the same amount in opposite directions is what that always looks like.
|
|
27
|
+
*/
|
|
28
|
+
private flushStyling;
|
|
29
|
+
/**
|
|
30
|
+
* The union of a node's two class sources, or `undefined` when it has none.
|
|
31
|
+
*
|
|
32
|
+
* A node can be told its classes BOTH ways in one pass: Ivy compiles `[class.foo]`, `[ngClass]`
|
|
33
|
+
* and a static `class=` down to per-token `addClass`/`removeClass`, while a whole-string `class`
|
|
34
|
+
* arrives at `setProperty` — which is the shape Angular uses when a directive declares `class` as
|
|
35
|
+
* an input and the styling binding is shadowed into it (`setShadowStylingInputFlags`,
|
|
36
|
+
* `view/directives.ts`). Publishing either one alone erases the other, and the DOM renderer this
|
|
37
|
+
* mirrors has no such problem because `classList` accumulates for it.
|
|
38
|
+
*/
|
|
39
|
+
private classStringFor;
|
|
40
|
+
/**
|
|
41
|
+
* Style objects this renderer has already published, so a list of identical rows sends ONE.
|
|
42
|
+
*
|
|
43
|
+
* The intern table keys by IDENTITY, so a fresh object per node is a fresh entry per node and the
|
|
44
|
+
* host converts every entry across JSI. Measured on the bench arm: `values` 7 001 against Vue's
|
|
45
|
+
* 3 004 for the identical tree, with `convert` 19.5 ms against 0.6 — and the gap is the KIND
|
|
46
|
+
* rather than the count, ~4 000 of Angular's being objects that convert recursively where Vue's
|
|
47
|
+
* are scalars plus four hoisted styles every row shares.
|
|
48
|
+
*
|
|
49
|
+
* Angular cannot share them on its own: `ɵɵstyleMap` hands over KEYS, so the object is this
|
|
50
|
+
* renderer's own construction. Recognising one it has already built is what puts an Angular app
|
|
51
|
+
* back on the footing of a framework whose author hoisted the constant.
|
|
52
|
+
*
|
|
53
|
+
* SMALL AND MRU. A screen has a handful of distinct styles and re-publishes them thousands of
|
|
54
|
+
* times, so a hit is almost always at the front; a miss costs at most `STYLE_CACHE` shallow
|
|
55
|
+
* compares, which is nothing beside the conversion it saves. An app with more distinct styles than
|
|
56
|
+
* this simply stops sharing — it never stops being correct.
|
|
57
|
+
*/
|
|
58
|
+
private readonly publishedStyles;
|
|
59
|
+
/** A published object equal to this one, or this one — which then becomes the published copy. */
|
|
60
|
+
private canonicalStyle;
|
|
61
|
+
/** The accumulator for this node's style run, opening one (and closing any other) if needed. */
|
|
62
|
+
private openStyleRun;
|
|
11
63
|
createElement(name: string): IHostNode;
|
|
12
64
|
createComment(): IHostNode;
|
|
13
65
|
createText(value: string): IHostNode;
|
|
@@ -20,11 +72,15 @@ export declare class SymbioteRenderer implements Renderer2 {
|
|
|
20
72
|
setAttribute(el: IHostElement, name: string, value: string): void;
|
|
21
73
|
removeAttribute(el: IHostElement, name: string): void;
|
|
22
74
|
private readonly classTokens;
|
|
75
|
+
private readonly classStrings;
|
|
76
|
+
private readonly callbackWrappers;
|
|
23
77
|
addClass(el: IHostElement, name: string): void;
|
|
24
78
|
removeClass(el: IHostElement, name: string): void;
|
|
79
|
+
private openClassRun;
|
|
25
80
|
setStyle(el: IHostElement, style: string, value: unknown): void;
|
|
26
81
|
removeStyle(el: IHostElement, style: string): void;
|
|
27
82
|
setProperty(el: IHostElement, name: string, value: unknown): void;
|
|
83
|
+
private wrapCallback;
|
|
28
84
|
setValue(node: IHostNode, value: string): void;
|
|
29
85
|
listen(target: unknown, eventName: string, callback: (event: unknown) => boolean | void): () => void;
|
|
30
86
|
}
|