@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
|
@@ -30,7 +30,9 @@ export class DescriptorOutlet {
|
|
|
30
30
|
return this.patchElement(this.hostNode, rendered, next);
|
|
31
31
|
}
|
|
32
32
|
createChild(child) {
|
|
33
|
-
return typeof child === 'string'
|
|
33
|
+
return typeof child === 'string'
|
|
34
|
+
? this.createText(child)
|
|
35
|
+
: this.createElement(child);
|
|
34
36
|
}
|
|
35
37
|
createText(value) {
|
|
36
38
|
return { kind: 'text', node: this.renderer.createText(value), value };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/descriptor-to-angular/index.ts"],"names":[],"mappings":"AAAA,0FAA0F;AAC1F,4FAA4F;AAC5F,6FAA6F;AAC7F,+FAA+F;AAC/F,oCAAoC;AAEpC,OAAO,EACL,uBAAuB,EACvB,SAAS,EACT,UAAU,EACV,MAAM,EACN,KAAK,EACL,SAAS,GAIV,MAAM,eAAe,CAAC;;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/descriptor-to-angular/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
export interface IAngularProfile {
|
|
2
|
+
cdPasses: number;
|
|
3
|
+
viewsChecked: number;
|
|
4
|
+
rendererWrites: number;
|
|
5
|
+
nodesCreated: number;
|
|
6
|
+
nodesInserted: number;
|
|
7
|
+
nodesRemoved: number;
|
|
8
|
+
styleChecks: number;
|
|
9
|
+
styleMarks: number;
|
|
10
|
+
listChecks: number;
|
|
11
|
+
listRecomputes: number;
|
|
12
|
+
listMarks: number;
|
|
13
|
+
scrollTicks: number;
|
|
14
|
+
outletCreates: number;
|
|
15
|
+
outletUpdates: number;
|
|
16
|
+
outletDestroys: number;
|
|
17
|
+
projectionSchedules: number;
|
|
18
|
+
projectionFlushes: number;
|
|
19
|
+
stickyWrapperCreates: number;
|
|
20
|
+
stickyWrapperReuses: number;
|
|
21
|
+
}
|
|
22
|
+
type IAngularCounter = keyof IAngularProfile;
|
|
23
|
+
export declare function countAngular(counter: IAngularCounter): void;
|
|
24
|
+
export declare function readAngularProfile(): IAngularProfile;
|
|
25
|
+
export declare function setAngularProfileDetail(enabled: boolean): void;
|
|
26
|
+
export declare function noteAngularWrite(propName: string): void;
|
|
27
|
+
export declare function noteAngularCreate(tagName: string): void;
|
|
28
|
+
export interface IAngularProfileDetail {
|
|
29
|
+
writesByProp: readonly (readonly [string, number])[];
|
|
30
|
+
createsByTag: readonly (readonly [string, number])[];
|
|
31
|
+
}
|
|
32
|
+
export declare function readAngularProfileDetail(): IAngularProfileDetail;
|
|
33
|
+
export {};
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
// Per-window counters for the Angular adapter, the twin of the engine's readCommitProfile().
|
|
2
|
+
// The engine's number answers "what did the commit walk cost"; these answer the question one layer
|
|
3
|
+
// up, which is the one Angular keeps losing: HOW MANY TIMES did anything run at all.
|
|
4
|
+
//
|
|
5
|
+
// Angular is the only adapter whose update model can free-run. A change-detection pass that writes
|
|
6
|
+
// a fresh reference into a downstream @Input marks a view dirty, the zoneless scheduler books
|
|
7
|
+
// another pass, and it never settles - the hazard `stableAnchorStyle` and VirtualizedList's
|
|
8
|
+
// `lastRecompute` gate each guard one instance of. A guard that stops holding is INVISIBLE from the
|
|
9
|
+
// outside: the screen paints correctly, only the frame rate collapses. `cdPasses` at rest is what
|
|
10
|
+
// makes it visible, and every other counter here narrows the same window to a suspect.
|
|
11
|
+
//
|
|
12
|
+
// Deliberately NOT gated behind isDebug(): an integer increment is noise next to the work it
|
|
13
|
+
// counts, and the numbers are only meaningful from a RELEASE build (dev-mode Angular runs its own
|
|
14
|
+
// checks and drowns the signal). The per-name detail map IS gated, since it allocates.
|
|
15
|
+
function createCounters() {
|
|
16
|
+
return {
|
|
17
|
+
cdPasses: 0,
|
|
18
|
+
viewsChecked: 0,
|
|
19
|
+
rendererWrites: 0,
|
|
20
|
+
nodesCreated: 0,
|
|
21
|
+
nodesInserted: 0,
|
|
22
|
+
nodesRemoved: 0,
|
|
23
|
+
styleChecks: 0,
|
|
24
|
+
styleMarks: 0,
|
|
25
|
+
listChecks: 0,
|
|
26
|
+
listRecomputes: 0,
|
|
27
|
+
listMarks: 0,
|
|
28
|
+
scrollTicks: 0,
|
|
29
|
+
outletCreates: 0,
|
|
30
|
+
outletUpdates: 0,
|
|
31
|
+
outletDestroys: 0,
|
|
32
|
+
projectionSchedules: 0,
|
|
33
|
+
projectionFlushes: 0,
|
|
34
|
+
stickyWrapperCreates: 0,
|
|
35
|
+
stickyWrapperReuses: 0,
|
|
36
|
+
};
|
|
37
|
+
}
|
|
38
|
+
let counters = createCounters();
|
|
39
|
+
export function countAngular(counter) {
|
|
40
|
+
counters[counter] += 1;
|
|
41
|
+
}
|
|
42
|
+
// Reading zeroes the counters, so a sampler on an interval gets disjoint windows rather than a
|
|
43
|
+
// growing total - same contract as readCommitProfile().
|
|
44
|
+
export function readAngularProfile() {
|
|
45
|
+
const snapshot = counters;
|
|
46
|
+
counters = createCounters();
|
|
47
|
+
return snapshot;
|
|
48
|
+
}
|
|
49
|
+
// Which prop names the renderer actually rewrites, and which host tags get created. Off by default
|
|
50
|
+
// because it allocates per write; the probe screen turns it on for one sample. A write nothing
|
|
51
|
+
// asked for is the whole diagnosis, and the prop NAME is what points at the binding responsible.
|
|
52
|
+
let isDetailEnabled = false;
|
|
53
|
+
const writesByProp = new Map();
|
|
54
|
+
const createsByTag = new Map();
|
|
55
|
+
export function setAngularProfileDetail(enabled) {
|
|
56
|
+
isDetailEnabled = enabled;
|
|
57
|
+
if (!enabled) {
|
|
58
|
+
writesByProp.clear();
|
|
59
|
+
createsByTag.clear();
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
export function noteAngularWrite(propName) {
|
|
63
|
+
if (!isDetailEnabled)
|
|
64
|
+
return;
|
|
65
|
+
writesByProp.set(propName, (writesByProp.get(propName) ?? 0) + 1);
|
|
66
|
+
}
|
|
67
|
+
export function noteAngularCreate(tagName) {
|
|
68
|
+
if (!isDetailEnabled)
|
|
69
|
+
return;
|
|
70
|
+
createsByTag.set(tagName, (createsByTag.get(tagName) ?? 0) + 1);
|
|
71
|
+
}
|
|
72
|
+
// Sorted hottest-first and read-and-cleared, so a sample names its own top offenders.
|
|
73
|
+
export function readAngularProfileDetail() {
|
|
74
|
+
const detail = {
|
|
75
|
+
writesByProp: [...writesByProp.entries()].sort((a, b) => b[1] - a[1]),
|
|
76
|
+
createsByTag: [...createsByTag.entries()].sort((a, b) => b[1] - a[1]),
|
|
77
|
+
};
|
|
78
|
+
writesByProp.clear();
|
|
79
|
+
createsByTag.clear();
|
|
80
|
+
return detail;
|
|
81
|
+
}
|
|
82
|
+
//# sourceMappingURL=diagnostics.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"diagnostics.js","sourceRoot":"","sources":["../../src/diagnostics.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import { EventEmitter, InjectionToken } from '@angular/core';
|
|
2
|
+
import type { Provider, Type } from '@angular/core';
|
|
3
|
+
import type { ISymbioteEvent } from '@symbiote-native/engine';
|
|
4
|
+
export declare const GATED_ACCESSIBILITY_EVENTS: readonly ["accessibilityAction", "accessibilityTap", "magicTap", "accessibilityEscape"];
|
|
5
|
+
export type IGatedAccessibilityEvent = (typeof GATED_ACCESSIBILITY_EVENTS)[number];
|
|
6
|
+
export interface IGateDemand {
|
|
7
|
+
wantsGate(name: IGatedAccessibilityEvent): boolean;
|
|
8
|
+
}
|
|
9
|
+
export declare const GATE_DEMAND: InjectionToken<IGateDemand>;
|
|
10
|
+
/**
|
|
11
|
+
* Declare a wrapper as the demand for everything in its own template.
|
|
12
|
+
*
|
|
13
|
+
* Takes a THUNK rather than the class: the entry sits in the decorator of the very class it names,
|
|
14
|
+
* so the reference has to be late.
|
|
15
|
+
*/
|
|
16
|
+
export declare function provideGateDemand(get: () => Type<IGateDemand>): Provider;
|
|
17
|
+
/**
|
|
18
|
+
* For a component that OWNS a gate — the innermost one, which writes the flag.
|
|
19
|
+
*/
|
|
20
|
+
export declare function injectGateDemand(): IGateDemand | null;
|
|
21
|
+
/**
|
|
22
|
+
* For a component that PROVIDES demand and is itself wrapped.
|
|
23
|
+
*
|
|
24
|
+
* `skipSelf` is not optional here: a component resolves its own `viewProviders`, so without it the
|
|
25
|
+
* lookup reaches this class's own `useExisting` entry and Angular throws NG0200 at construction.
|
|
26
|
+
* Loud rather than silent, but the shape is easy to get wrong, which is why the two lookups are
|
|
27
|
+
* separate functions instead of one with a flag.
|
|
28
|
+
*/
|
|
29
|
+
export declare function injectGateDemandAbove(): IGateDemand | null;
|
|
30
|
+
/**
|
|
31
|
+
* The one expression both roles evaluate.
|
|
32
|
+
*
|
|
33
|
+
* A demand from above OVERRIDES the local emitter, and that override is the whole mechanism: a
|
|
34
|
+
* middle link's own emitter is `.observed` precisely because the level above bound it, so answering
|
|
35
|
+
* from it would report "wanted" for a chain nobody subscribed to.
|
|
36
|
+
*/
|
|
37
|
+
export declare function gateWanted(above: IGateDemand | null, name: IGatedAccessibilityEvent, own: EventEmitter<ISymbioteEvent>): boolean;
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
// Whether anything downstream actually wants a gated accessibility event, passed from a wrapper
|
|
2
|
+
// component to the inner component that owns the gate.
|
|
3
|
+
//
|
|
4
|
+
// THE PROBLEM. Six Fabric events fire only if a BOOLEAN prop reaches the payload
|
|
5
|
+
// (`.claude/rules/fabric-boolean-event-gates.md`), and the flag follows the VALUE: a handler
|
|
6
|
+
// present means `true`, absent means the key is deleted. Every component that owns such a gate
|
|
7
|
+
// therefore writes it only while its own `@Output()` is `.observed`.
|
|
8
|
+
//
|
|
9
|
+
// Angular has no conditional template binding, so a wrapper rendering an inner component must write
|
|
10
|
+
// `(accessibilityAction)="accessibilityAction.emit($event)"` unconditionally — which subscribes,
|
|
11
|
+
// which makes the inner's `.observed` permanently true, which lights the flag on EVERY instance
|
|
12
|
+
// whether or not any app listens. Fixing the inner component does nothing: the wrapper is the
|
|
13
|
+
// subscriber. The chain is up to four deep here (SectionList -> VirtualizedSectionList ->
|
|
14
|
+
// VirtualizedList -> ScrollView), and every middle link has the same problem for the same reason.
|
|
15
|
+
//
|
|
16
|
+
// WHY THIS IS DI AND NOT AN `@Input`. An input is public API. An app could write
|
|
17
|
+
// `[gatedEvents]="…"` on a `Pressable` and silently switch its accessibility events OFF — a change
|
|
18
|
+
// nothing in this repo could detect and nothing on screen would show. A `viewProviders` entry is
|
|
19
|
+
// not part of the component's binding surface, so an app cannot reach it by accident.
|
|
20
|
+
//
|
|
21
|
+
// WHY `viewProviders` AND NOT `providers` — measured, both arms, 2026-09-02:
|
|
22
|
+
//
|
|
23
|
+
// viewProviders the wrapper's OWN template sees it, projected content does NOT
|
|
24
|
+
// providers both see it
|
|
25
|
+
//
|
|
26
|
+
// The second half is what matters: an app writing `<TouchableOpacity><Pressable/></TouchableOpacity>`
|
|
27
|
+
// projects its own Pressable INTO the wrapper, and that Pressable must behave exactly as it would
|
|
28
|
+
// standing alone. Under `providers` it would inherit the wrapper's demand and the debt would just
|
|
29
|
+
// move one level down.
|
|
30
|
+
//
|
|
31
|
+
// Verified on both rungs — JIT through `mount()`, and again by executing the artifact from a real
|
|
32
|
+
// `ngc --compilationMode partial` + `babel-linker.cjs` chain, because `viewProviders` compiles into
|
|
33
|
+
// the component definition (`ɵɵProvidersFeature`) and this repo has a recorded case of JIT and AOT
|
|
34
|
+
// disagreeing on a compiled binding (`.claude/rules/test-harness-false-greens.md` §21/§21a). Both
|
|
35
|
+
// arms reported the same four cells.
|
|
36
|
+
import { EventEmitter, InjectionToken, forwardRef, inject, } from '@angular/core';
|
|
37
|
+
// The four `on*`-gated accessibility events every wrapper forwards. Not the full gate list from the
|
|
38
|
+
// engine: `layout` and `textLayout` are never forwarded wrapper-to-wrapper, and
|
|
39
|
+
// KeyboardAvoidingView READS its own `onLayout` internally, so gating that one on a subscriber
|
|
40
|
+
// would break inset-following (`.claude/rules/keyboard-avoiding-view-rn-contract.md`).
|
|
41
|
+
export const GATED_ACCESSIBILITY_EVENTS = [
|
|
42
|
+
'accessibilityAction',
|
|
43
|
+
'accessibilityTap',
|
|
44
|
+
'magicTap',
|
|
45
|
+
'accessibilityEscape',
|
|
46
|
+
];
|
|
47
|
+
export const GATE_DEMAND = new InjectionToken('symbiote.gate-demand');
|
|
48
|
+
/**
|
|
49
|
+
* Declare a wrapper as the demand for everything in its own template.
|
|
50
|
+
*
|
|
51
|
+
* Takes a THUNK rather than the class: the entry sits in the decorator of the very class it names,
|
|
52
|
+
* so the reference has to be late.
|
|
53
|
+
*/
|
|
54
|
+
export function provideGateDemand(get) {
|
|
55
|
+
return { provide: GATE_DEMAND, useExisting: forwardRef(get) };
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* For a component that OWNS a gate — the innermost one, which writes the flag.
|
|
59
|
+
*/
|
|
60
|
+
export function injectGateDemand() {
|
|
61
|
+
return inject(GATE_DEMAND, { optional: true });
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* For a component that PROVIDES demand and is itself wrapped.
|
|
65
|
+
*
|
|
66
|
+
* `skipSelf` is not optional here: a component resolves its own `viewProviders`, so without it the
|
|
67
|
+
* lookup reaches this class's own `useExisting` entry and Angular throws NG0200 at construction.
|
|
68
|
+
* Loud rather than silent, but the shape is easy to get wrong, which is why the two lookups are
|
|
69
|
+
* separate functions instead of one with a flag.
|
|
70
|
+
*/
|
|
71
|
+
export function injectGateDemandAbove() {
|
|
72
|
+
return inject(GATE_DEMAND, { optional: true, skipSelf: true });
|
|
73
|
+
}
|
|
74
|
+
/**
|
|
75
|
+
* The one expression both roles evaluate.
|
|
76
|
+
*
|
|
77
|
+
* A demand from above OVERRIDES the local emitter, and that override is the whole mechanism: a
|
|
78
|
+
* middle link's own emitter is `.observed` precisely because the level above bound it, so answering
|
|
79
|
+
* from it would report "wanted" for a chain nobody subscribed to.
|
|
80
|
+
*/
|
|
81
|
+
export function gateWanted(above, name, own) {
|
|
82
|
+
return above !== null ? above.wantsGate(name) : own.observed;
|
|
83
|
+
}
|
|
84
|
+
//# sourceMappingURL=gate-demand.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"gate-demand.js","sourceRoot":"","sources":["../../src/gate-demand.ts"],"names":[],"mappings":"AAAA,gGAAgG;AAChG,uDAAuD;AACvD,EAAE;AACF,iFAAiF;AACjF,6FAA6F;AAC7F,+FAA+F;AAC/F,qEAAqE;AACrE,EAAE;AACF,oGAAoG;AACpG,iGAAiG;AACjG,gGAAgG;AAChG,8FAA8F;AAC9F,0FAA0F;AAC1F,kGAAkG;AAClG,EAAE;AACF,iFAAiF;AACjF,mGAAmG;AACnG,iGAAiG;AACjG,sFAAsF;AACtF,EAAE;AACF,6EAA6E;AAC7E,EAAE;AACF,mFAAmF;AACnF,gCAAgC;AAChC,EAAE;AACF,sGAAsG;AACtG,kGAAkG;AAClG,kGAAkG;AAClG,uBAAuB;AACvB,EAAE;AACF,kGAAkG;AAClG,oGAAoG;AACpG,mGAAmG;AACnG,kGAAkG;AAClG,qCAAqC;AACrC,OAAO,EACL,YAAY,EACZ,cAAc,EACd,UAAU,EACV,MAAM,GACP,MAAM,eAAe,CAAC;AAIvB,oGAAoG;AACpG,gFAAgF;AAChF,+FAA+F;AAC/F,uFAAuF;AACvF,MAAM,CAAC,MAAM,0BAA0B,GAAG;IACxC,qBAAqB;IACrB,kBAAkB;IAClB,UAAU;IACV,qBAAqB;CACb,CAAC;AASX,MAAM,CAAC,MAAM,WAAW,GAAG,IAAI,cAAc,CAC3C,sBAAsB,CACvB,CAAC;AAEF;;;;;GAKG;AACH,MAAM,UAAU,iBAAiB,CAAC,GAA4B;IAC5D,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;AAChE,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,gBAAgB;IAC9B,OAAO,MAAM,CAAC,WAAW,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;AACjD,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,qBAAqB;IACnC,OAAO,MAAM,CAAC,WAAW,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;AACjE,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,UAAU,CACxB,KAAyB,EACzB,IAA8B,EAC9B,GAAiC;IAEjC,OAAO,KAAK,KAAK,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC;AAC/D,CAAC"}
|
|
@@ -12,7 +12,7 @@
|
|
|
12
12
|
// - null/undefined -> null
|
|
13
13
|
// An uncommitted or unknown input surfaces as null.
|
|
14
14
|
import { ElementRef } from '@angular/core';
|
|
15
|
-
import { getNativeTag, isSymbioteNode } from '@symbiote-native/engine';
|
|
15
|
+
import { getNativeTag, isSymbioteNode, } from '@symbiote-native/engine';
|
|
16
16
|
function resolveHostNode(candidate) {
|
|
17
17
|
if (candidate === null || candidate === undefined)
|
|
18
18
|
return null;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/host-instance/index.ts"],"names":[],"mappings":"AAAA,8EAA8E;AAC9E,0FAA0F;AAC1F,uDAAuD;AACvD,EAAE;AACF,+FAA+F;AAC/F,0FAA0F;AAC1F,0EAA0E;AAC1E,iCAAiC;AACjC,4CAA4C;AAC5C,mDAAmD;AACnD,yFAAyF;AACzF,6BAA6B;AAC7B,oDAAoD;AAEpD,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAC3C,OAAO,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/host-instance/index.ts"],"names":[],"mappings":"AAAA,8EAA8E;AAC9E,0FAA0F;AAC1F,uDAAuD;AACvD,EAAE;AACF,+FAA+F;AAC/F,0FAA0F;AAC1F,0EAA0E;AAC1E,iCAAiC;AACjC,4CAA4C;AAC5C,mDAAmD;AACnD,yFAAyF;AACzF,6BAA6B;AAC7B,oDAAoD;AAEpD,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAC3C,OAAO,EACL,YAAY,EACZ,cAAc,GAEf,MAAM,yBAAyB,CAAC;AAIjC,SAAS,eAAe,CAAC,SAAkB;IACzC,IAAI,SAAS,KAAK,IAAI,IAAI,SAAS,KAAK,SAAS;QAAE,OAAO,IAAI,CAAC;IAC/D,IAAI,cAAc,CAAC,SAAS,CAAC;QAAE,OAAO,SAAS,CAAC;IAChD,IAAI,SAAS,YAAY,UAAU;QACjC,OAAO,eAAe,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC;IAClD,MAAM,SAAS,GAAG,SAAwC,CAAC;IAC3D,IAAI,OAAO,SAAS,CAAC,aAAa,KAAK,WAAW,EAAE,CAAC;QACnD,OAAO,eAAe,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC;IAClD,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,iBAA0B;IACvD,IAAI,iBAAiB,KAAK,IAAI,IAAI,iBAAiB,KAAK,SAAS;QAC/D,OAAO,IAAI,CAAC;IACd,IAAI,OAAO,iBAAiB,KAAK,QAAQ;QAAE,OAAO,iBAAiB,CAAC;IACpE,MAAM,IAAI,GAAG,eAAe,CAAC,iBAAiB,CAAC,CAAC;IAChD,OAAO,IAAI,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;AACpD,CAAC"}
|
package/build/angular/index.d.ts
CHANGED
|
@@ -1,12 +1,14 @@
|
|
|
1
|
+
import './register';
|
|
1
2
|
export { ActivityIndicator, anchorHostStyle, Button, FlatList, HorizontalScrollContentView, HorizontalScrollView, Image, ImageBackground, InputAccessoryView, KeyboardAvoidingView, Modal, Pressable, RefreshControl, SafeAreaView, ScrollContentView, ScrollView, ScrollViewStickyHeader, SectionList, stableAnchorStyle, Switch, SymbioteHostPropsDirective, SymbioteStyleInputDirective, Text, TextInput, TouchableHighlight, TouchableNativeFeedback, TouchableOpacity, TouchableWithoutFeedback, View, VirtualizedList, VirtualizedSectionList, VListEmptyDirective, VListFooterDirective, VListHeaderDirective, VListItemDirective, VListSeparatorDirective, VSectionFooterDirective, VSectionHeaderDirective, VSectionItemDirective, VSectionSeparatorDirective, } from './components';
|
|
2
3
|
export { Animated } from './modules/animated';
|
|
3
4
|
export { AnimatedFlatList, AnimatedImage, AnimatedScrollView, AnimatedSectionList, AnimatedText, AnimatedView, } from './modules/animated';
|
|
5
|
+
export { createAnimatedComponent } from './modules/animated';
|
|
4
6
|
export type { IActivityIndicatorProps, IAngularImageBackgroundProps, IAngularInputAccessoryViewProps, IAngularKeyboardAvoidingViewProps, IAngularModalProps, IAngularPressableProps, IAngularRefreshControlProps, IAngularSafeAreaViewProps, IAngularScrollViewProps, IAngularTextInputProps, IAngularTouchableHighlightProps, IAngularTouchableNativeFeedbackProps, IAngularTouchableOpacityProps, IAngularTouchableWithoutFeedbackProps, IButtonProps, ICellLayout, IFlatListHandle, IFlatListProps, IEnterKeyHint, IImageCacheStatus, IImageProps, IImageSize, IImageSource, IImageSourceProp, IInputMode, IKeyboardAvoidingBehavior, IModalAnimationType, IModalOrientation, IModalOrientationChangeEvent, IModalPresentationStyle, INativeFeedbackBackground, IResizeMode, IRippleBackground, IScrollViewHandle, ISectionListHandle, ISectionListProps, ISeparatorProps, ISeparators, IStickyHeaderComponentType, ISubmitBehavior, IThemeAttrBackground, IViewabilityConfig, IViewabilityConfigCallbackPair, IViewableItemsChangedInfo, IViewToken, IVirtualizedListHandle, IVirtualizedListProps, IVirtualizedSectionListHandle, IVirtualizedSectionListProps, IVListItemContext, IVListSeparatorContext, IVSectionContext, IVSectionItemContext, ISection, ISwitchProps, ISwitchTrackColor, ITextInputHandle, ITextInputSelection, } from './components';
|
|
5
7
|
export { setImageSourceResolver } from './components';
|
|
6
8
|
export { mount, unmount } from './render';
|
|
7
9
|
export { DescriptorOutlet } from './descriptor-to-angular';
|
|
8
10
|
export { PortalDirective, PortalOutletDirective } from './create-portal';
|
|
9
|
-
export { createTunnel, TunnelInDirective, TunnelOut, type ITunnelStore } from './create-tunnel';
|
|
11
|
+
export { createTunnel, TunnelInDirective, TunnelOut, type ITunnelStore, } from './create-tunnel';
|
|
10
12
|
export { SymbioteRenderer, SymbioteRendererFactory } from './renderer';
|
|
11
13
|
export { registerComposedComponent } from './anchor-host-registry';
|
|
12
14
|
export { findNodeHandle } from './host-instance';
|
|
@@ -19,6 +21,8 @@ export { ColorSchemeService, WindowDimensionsService } from './services';
|
|
|
19
21
|
export { Alert, Share, ActionSheetIOS, Linking, Vibration, ToastAndroid, Settings, I18nManager, Dimensions, Appearance, AppState, Keyboard, KEYBOARD_EVENT, BackHandler, PermissionsAndroid, PERMISSIONS, RESULTS, AccessibilityInfo, LayoutAnimation, InteractionManager, PanResponder, PixelRatio, PlatformColor, DynamicColorIOS, } from '@symbiote-native/engine';
|
|
20
22
|
export type { IAlertType, IAlertButtonStyle, IAlertButton, IAlertButtons, IAlertOptions, IShareContent, IShareOptions, IShareAction, IActionSheetIOSOptions, IShareActionSheetIOSOptions, IShareActionSheetError, IUrlEvent, II18nManagerConstants, IDisplayMetrics, IDisplayMetricsAndroid, IDimensionsPayload, IDimensionsSet, IDimensionsKey, IDimensionsChangeListener, IDimensionsStatic, IColorSchemeName, IColorSchemePreference, IAppStateStatus, IAppStateEvent, IKeyboardEventName, IKeyboardEvent, IKeyboardMetrics, IBackPressEventName, IBackPressHandler, IPermission, IPermissionStatus, IRationale, IAccessibilityChangeEvent, IAccessibilityChangeEventName, IAccessibilityChangeEventHandler, IAccessibilityAnnouncementFinishedEvent, IAnnounceForAccessibilityOptions, IAccessibilityEventType, ILayoutAnimationType, ILayoutAnimationProperty, ILayoutAnimationConfig, ILayoutAnimationAnim, IInteractionEvent, ISimpleTask, IPromiseTask, ITask, IHandle, IPanResponderGestureState, IPanResponderCallbacks, IGestureResponderHandlers, IPanResponderInstance, IPixelRatioStatic, IColorValue, IOpaqueColorValue, IDynamicColorIOSTuple, } from '@symbiote-native/engine';
|
|
21
23
|
export { dlog, isDebug, Platform, processColor, setColorProcessor, setDeviceEventSource, setNativeViewConfigSource, StyleSheet, } from '@symbiote-native/engine';
|
|
22
|
-
export type { IRootTag, ISymbioteEvent, ISymbioteNode } from '@symbiote-native/engine';
|
|
24
|
+
export type { IRootTag, ISymbioteEvent, ISymbioteNode, } from '@symbiote-native/engine';
|
|
23
25
|
export type { IViewStyle, ITextStyle, IFlexAlign, IFlexJustify, IPlatformStatic, IPlatformOSType, IPlatformConstantsIOS, IPlatformConstantsAndroid, IPlatformSelectSpec, INativeViewConfig, INativeViewConfigSource, } from '@symbiote-native/engine';
|
|
24
26
|
export type { IAccessibilityProps, IAriaProps, IAccessibilityRole, IRole, IAccessibilityStateValue, IAccessibilityValue, IAccessibilityActionInfo, IResponderProps, IPressState, IPressableAndroidRippleConfig, IImageStatics, } from '@symbiote-native/components';
|
|
27
|
+
export { readAngularProfile, readAngularProfileDetail, setAngularProfileDetail, } from './diagnostics';
|
|
28
|
+
export type { IAngularProfile, IAngularProfileDetail } from './diagnostics';
|
package/build/angular/index.js
CHANGED
|
@@ -4,6 +4,7 @@
|
|
|
4
4
|
//
|
|
5
5
|
// SEAM SCAFFOLD: mount/unmount + the renderer seam + host intrinsic selectors. Full RN-like
|
|
6
6
|
// composed components still flow through the shared @symbiote-native/components bridge.
|
|
7
|
+
import './register';
|
|
7
8
|
export { ActivityIndicator, anchorHostStyle, Button, FlatList, HorizontalScrollContentView, HorizontalScrollView, Image, ImageBackground, InputAccessoryView, KeyboardAvoidingView, Modal, Pressable, RefreshControl, SafeAreaView, ScrollContentView, ScrollView, ScrollViewStickyHeader, SectionList, stableAnchorStyle, Switch, SymbioteHostPropsDirective, SymbioteStyleInputDirective, Text, TextInput, TouchableHighlight, TouchableNativeFeedback, TouchableOpacity, TouchableWithoutFeedback, View, VirtualizedList, VirtualizedSectionList, VListEmptyDirective, VListFooterDirective, VListHeaderDirective, VListItemDirective, VListSeparatorDirective, VSectionFooterDirective, VSectionHeaderDirective, VSectionItemDirective, VSectionSeparatorDirective, } from './components';
|
|
8
9
|
export { Animated } from './modules/animated';
|
|
9
10
|
// Also exposed as named top-level symbols (not just Animated.View/.Text/...): ngtsc's partial-mode
|
|
@@ -12,6 +13,16 @@ export { Animated } from './modules/animated';
|
|
|
12
13
|
// so `<AnimatedView>` in a template requires `import { AnimatedView } from '@symbiote-native/angular'`,
|
|
13
14
|
// not `const AnimatedView = Animated.View`. Plain tsc/vitest don't catch this; only a real ngc run does.
|
|
14
15
|
export { AnimatedFlatList, AnimatedImage, AnimatedScrollView, AnimatedSectionList, AnimatedText, AnimatedView, } from './modules/animated';
|
|
16
|
+
// Exported even though Angular's version maps only the four primitives (View/Text/Image/
|
|
17
|
+
// ScrollView) onto the pre-authored wrappers above and THROWS on anything else — there is no JIT
|
|
18
|
+
// under AOT/Metro, so it cannot synthesize a wrapper at runtime the way the other four adapters
|
|
19
|
+
// do. It ships anyway because portable code (`createAnimatedComponent(View)`) then compiles and
|
|
20
|
+
// runs identically on all five adapters, and the one case Angular cannot serve fails with a
|
|
21
|
+
// message naming the fix (author a standalone @Component over AnimatedComponentBase) instead of
|
|
22
|
+
// failing as a missing export, which names nothing. Found by the barrel audit in
|
|
23
|
+
// `.claude/rules/adapter-parity-audit.md`: it was implemented and tested here all along and simply
|
|
24
|
+
// never reached this file, so `@symbiote-native/angular` consumers could not reach it at all.
|
|
25
|
+
export { createAnimatedComponent } from './modules/animated';
|
|
15
26
|
export { setImageSourceResolver } from './components';
|
|
16
27
|
export { mount, unmount } from './render';
|
|
17
28
|
// The generic Descriptor→Angular bridge, the twin of descriptorToReact/descriptorToVue.
|
|
@@ -26,7 +37,7 @@ export { DescriptorOutlet } from './descriptor-to-angular';
|
|
|
26
37
|
// idiom) parameterized by an `@Input()`, rather than a factory returning fresh components per
|
|
27
38
|
// call.
|
|
28
39
|
export { PortalDirective, PortalOutletDirective } from './create-portal';
|
|
29
|
-
export { createTunnel, TunnelInDirective, TunnelOut } from './create-tunnel';
|
|
40
|
+
export { createTunnel, TunnelInDirective, TunnelOut, } from './create-tunnel';
|
|
30
41
|
export { SymbioteRenderer, SymbioteRendererFactory } from './renderer';
|
|
31
42
|
// registerComposedComponent lives in the dependency-free leaf ./anchor-host-registry, NOT in the
|
|
32
43
|
// require-cyclic ./renderer — see the leaf header. The babel-register-composed plugin injects the
|
|
@@ -43,4 +54,8 @@ export { ColorSchemeService, WindowDimensionsService } from './services';
|
|
|
43
54
|
// app code names only @symbiote-native/angular.
|
|
44
55
|
export { Alert, Share, ActionSheetIOS, Linking, Vibration, ToastAndroid, Settings, I18nManager, Dimensions, Appearance, AppState, Keyboard, KEYBOARD_EVENT, BackHandler, PermissionsAndroid, PERMISSIONS, RESULTS, AccessibilityInfo, LayoutAnimation, InteractionManager, PanResponder, PixelRatio, PlatformColor, DynamicColorIOS, } from '@symbiote-native/engine';
|
|
45
56
|
export { dlog, isDebug, Platform, processColor, setColorProcessor, setDeviceEventSource, setNativeViewConfigSource, StyleSheet, } from '@symbiote-native/engine';
|
|
57
|
+
// Diagnostics: per-window Angular-side counters (change-detection passes, renderer writes, list
|
|
58
|
+
// recomputes, cell views). The engine's readCommitProfile() prices the commit; these say how many
|
|
59
|
+
// times anything ran at all - the number that exposes a change-detection free-run.
|
|
60
|
+
export { readAngularProfile, readAngularProfileDetail, setAngularProfileDetail, } from './diagnostics';
|
|
46
61
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,yGAAyG;AACzG,8FAA8F;AAC9F,sGAAsG;AACtG,EAAE;AACF,4FAA4F;AAC5F,wFAAwF;AAExF,OAAO,EACL,iBAAiB,EACjB,eAAe,EACf,MAAM,EACN,QAAQ,EACR,2BAA2B,EAC3B,oBAAoB,EACpB,KAAK,EACL,eAAe,EACf,kBAAkB,EAClB,oBAAoB,EACpB,KAAK,EACL,SAAS,EACT,cAAc,EACd,YAAY,EACZ,iBAAiB,EACjB,UAAU,EACV,sBAAsB,EACtB,WAAW,EACX,iBAAiB,EACjB,MAAM,EACN,0BAA0B,EAC1B,2BAA2B,EAC3B,IAAI,EACJ,SAAS,EACT,kBAAkB,EAClB,uBAAuB,EACvB,gBAAgB,EAChB,wBAAwB,EACxB,IAAI,EACJ,eAAe,EACf,sBAAsB,EACtB,mBAAmB,EACnB,oBAAoB,EACpB,oBAAoB,EACpB,kBAAkB,EAClB,uBAAuB,EACvB,uBAAuB,EACvB,uBAAuB,EACvB,qBAAqB,EACrB,0BAA0B,GAC3B,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAC9C,mGAAmG;AACnG,wFAAwF;AACxF,iEAAiE;AACjE,wGAAwG;AACxG,yGAAyG;AACzG,OAAO,EACL,gBAAgB,EAChB,aAAa,EACb,kBAAkB,EAClB,mBAAmB,EACnB,YAAY,EACZ,YAAY,GACb,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -41,6 +41,7 @@ export declare class AnimatedImage extends ImageBase implements AfterViewInit, O
|
|
|
41
41
|
private hostDirective?;
|
|
42
42
|
private readonly leafBinder;
|
|
43
43
|
private viewReady;
|
|
44
|
+
private gateInto;
|
|
44
45
|
get animatedImageProps(): Record<string, unknown>;
|
|
45
46
|
private readonly anchorStyle;
|
|
46
47
|
ngDoCheck(): void;
|
|
@@ -19,7 +19,7 @@ import { selectScrollIntrinsics } from '@symbiote-native/components';
|
|
|
19
19
|
import { Image, ScrollView, Text, View } from '../../components';
|
|
20
20
|
import { anchorHostStyle, ImageHost, ScrollViewHost, SymbioteHostPropsDirective, SymbioteStyleInputDirective, TextHost, ViewHost, } from '../../primitives';
|
|
21
21
|
import { FlatList } from '../../components/flat-list';
|
|
22
|
-
import { IMAGE_INPUTS, IMAGE_OUTPUTS, ImageBase, resolveImageProps, } from '../../components/image/shared';
|
|
22
|
+
import { IMAGE_INPUTS, IMAGE_OUTPUTS, ImageBase, isImageEventCallback, resolveImageProps, } from '../../components/image/shared';
|
|
23
23
|
import { SectionList } from '../../components/section-list';
|
|
24
24
|
import { AnimatedLeafBinder } from './animated-leaf-binder';
|
|
25
25
|
import * as i0 from "@angular/core";
|
|
@@ -34,7 +34,11 @@ const PASSTHROUGH_PROP = 'passthroughAnimatedPropExplicitValues';
|
|
|
34
34
|
// plus static host props to forward (the React/Vue `rest`). Each concrete @Component re-lists
|
|
35
35
|
// these (Angular's inputs-on-base convention, mirroring Switch/Image).
|
|
36
36
|
export const ANIMATED_INPUTS = ['style', 'animatedProps', PASSTHROUGH_PROP];
|
|
37
|
-
export const ANIMATED_IMAGE_INPUTS = [
|
|
37
|
+
export const ANIMATED_IMAGE_INPUTS = [
|
|
38
|
+
...IMAGE_INPUTS,
|
|
39
|
+
'animatedProps',
|
|
40
|
+
PASSTHROUGH_PROP,
|
|
41
|
+
];
|
|
38
42
|
// The shared lifecycle for every animated wrapper. Concrete subclasses add ONLY a @Component
|
|
39
43
|
// decorator (selector + the host-primitive template) — no behavior. Plain fields (no @Input
|
|
40
44
|
// here): the inputs are declared on each concrete via ANIMATED_INPUTS, the adapter convention.
|
|
@@ -67,7 +71,9 @@ export class AnimatedComponentBase {
|
|
|
67
71
|
const passthroughStyle = readPassthroughStyle(this.passthroughAnimatedPropExplicitValues);
|
|
68
72
|
if (passthroughStyle !== undefined) {
|
|
69
73
|
reduced['style'] =
|
|
70
|
-
reduced['style'] === undefined
|
|
74
|
+
reduced['style'] === undefined
|
|
75
|
+
? passthroughStyle
|
|
76
|
+
: [reduced['style'], passthroughStyle];
|
|
71
77
|
}
|
|
72
78
|
reduced['style'] = [this.anchorStyle(), reduced['style']];
|
|
73
79
|
return reduced;
|
|
@@ -119,7 +125,9 @@ export class AnimatedComponentBase {
|
|
|
119
125
|
// never disagree.
|
|
120
126
|
mergedProps() {
|
|
121
127
|
const base = this.animatedProps ?? {};
|
|
122
|
-
return this.style === undefined
|
|
128
|
+
return this.style === undefined
|
|
129
|
+
? { ...base }
|
|
130
|
+
: { ...base, style: this.style };
|
|
123
131
|
}
|
|
124
132
|
// The committed host node held by IDENTITY. resolveHostNode unwraps an imperative scroll
|
|
125
133
|
// handle to the underlying SymbioteNode (View / Text already hand back the node directly);
|
|
@@ -150,7 +158,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImpor
|
|
|
150
158
|
args: [{
|
|
151
159
|
selector: 'AnimatedView, symbiote-animated-view',
|
|
152
160
|
standalone: true,
|
|
153
|
-
hostDirectives: [
|
|
161
|
+
hostDirectives: [
|
|
162
|
+
{ directive: SymbioteStyleInputDirective, inputs: ['style'] },
|
|
163
|
+
],
|
|
154
164
|
schemas: [CUSTOM_ELEMENTS_SCHEMA],
|
|
155
165
|
imports: [SymbioteHostPropsDirective, ViewHost],
|
|
156
166
|
inputs: ANIMATED_INPUTS,
|
|
@@ -168,14 +178,16 @@ export class AnimatedText extends AnimatedComponentBase {
|
|
|
168
178
|
<symbiote-text [symbioteHostProps]="reducedProps">
|
|
169
179
|
<ng-content></ng-content>
|
|
170
180
|
</symbiote-text>
|
|
171
|
-
`, isInline: true, dependencies: [{ kind: "directive", type: SymbioteHostPropsDirective, selector: "[symbioteHostProps]", inputs: ["symbioteHostProps"], exportAs: ["symbioteHost"] }, { kind: "component", type: TextHost, selector: "symbiote-text, Text" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
181
|
+
`, isInline: true, dependencies: [{ kind: "directive", type: SymbioteHostPropsDirective, selector: "[symbioteHostProps]", inputs: ["symbioteHostProps"], exportAs: ["symbioteHost"] }, { kind: "component", type: TextHost, selector: "symbiote-text, Text", inputs: ["ellipsizeMode", "allowFontScaling"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
172
182
|
}
|
|
173
183
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AnimatedText, decorators: [{
|
|
174
184
|
type: Component,
|
|
175
185
|
args: [{
|
|
176
186
|
selector: 'AnimatedText, symbiote-animated-text',
|
|
177
187
|
standalone: true,
|
|
178
|
-
hostDirectives: [
|
|
188
|
+
hostDirectives: [
|
|
189
|
+
{ directive: SymbioteStyleInputDirective, inputs: ['style'] },
|
|
190
|
+
],
|
|
179
191
|
schemas: [CUSTOM_ELEMENTS_SCHEMA],
|
|
180
192
|
imports: [SymbioteHostPropsDirective, TextHost],
|
|
181
193
|
inputs: ANIMATED_INPUTS,
|
|
@@ -199,15 +211,30 @@ export class AnimatedImage extends ImageBase {
|
|
|
199
211
|
// gets the leaf-lifecycle via composition instead of duplicating it.
|
|
200
212
|
leafBinder = new AnimatedLeafBinder(() => this.hostNode(), this.constructor.name);
|
|
201
213
|
viewReady = false;
|
|
214
|
+
gateInto(props, name, key) {
|
|
215
|
+
const carried = props[key];
|
|
216
|
+
props[key] = this.gatedAccessibilityHandler(name, isImageEventCallback(carried) ? carried : undefined);
|
|
217
|
+
}
|
|
202
218
|
get animatedImageProps() {
|
|
203
219
|
const reduced = reduceProps(this.mergedProps());
|
|
204
220
|
const passthroughStyle = readPassthroughStyle(this.passthroughAnimatedPropExplicitValues);
|
|
205
221
|
if (passthroughStyle !== undefined) {
|
|
206
222
|
reduced['style'] =
|
|
207
|
-
reduced['style'] === undefined
|
|
223
|
+
reduced['style'] === undefined
|
|
224
|
+
? passthroughStyle
|
|
225
|
+
: [reduced['style'], passthroughStyle];
|
|
208
226
|
}
|
|
209
227
|
const resolved = resolveImageProps(reduced);
|
|
210
228
|
resolved['style'] = [anchorHostStyle(this.elementRef), resolved['style']];
|
|
229
|
+
// The four gated accessibility events, which used to be template bindings on the host tag and
|
|
230
|
+
// therefore lit their Fabric flags on every AnimatedImage in the app
|
|
231
|
+
// (`.claude/rules/fabric-boolean-event-gates.md`). Routed through the base's gate instead, so
|
|
232
|
+
// both channels still reach the app — the `onX` callback carried in the animated prop bag, and
|
|
233
|
+
// the `@Output()` an app may bind on <AnimatedImage> (IMAGE_OUTPUTS declares all four).
|
|
234
|
+
this.gateInto(resolved, 'accessibilityAction', 'onAccessibilityAction');
|
|
235
|
+
this.gateInto(resolved, 'accessibilityTap', 'onAccessibilityTap');
|
|
236
|
+
this.gateInto(resolved, 'magicTap', 'onMagicTap');
|
|
237
|
+
this.gateInto(resolved, 'accessibilityEscape', 'onAccessibilityEscape');
|
|
211
238
|
return resolved;
|
|
212
239
|
}
|
|
213
240
|
// The anchor's class-derived style, polled rather than read live inside `reducedProps`.
|
|
@@ -263,10 +290,6 @@ export class AnimatedImage extends ImageBase {
|
|
|
263
290
|
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "22.0.8", type: AnimatedImage, isStandalone: true, selector: "AnimatedImage, symbiote-animated-image", inputs: { source: "source", defaultSource: "defaultSource", loadingIndicatorSource: "loadingIndicatorSource", style: "style", resizeMode: "resizeMode", resizeMethod: "resizeMethod", tintColor: "tintColor", blurRadius: "blurRadius", capInsets: "capInsets", fadeDuration: "fadeDuration", progressiveRenderingEnabled: "progressiveRenderingEnabled", src: "src", srcSet: "srcSet", alt: "alt", width: "width", height: "height", crossOrigin: "crossOrigin", referrerPolicy: "referrerPolicy", testID: "testID", nativeID: "nativeID", accessible: "accessible", accessibilityLabel: "accessibilityLabel", accessibilityHint: "accessibilityHint", accessibilityRole: "accessibilityRole", accessibilityState: "accessibilityState", accessibilityValue: "accessibilityValue", accessibilityActions: "accessibilityActions", accessibilityLabelledBy: "accessibilityLabelledBy", importantForAccessibility: "importantForAccessibility", accessibilityLiveRegion: "accessibilityLiveRegion", screenReaderFocusable: "screenReaderFocusable", accessibilityViewIsModal: "accessibilityViewIsModal", accessibilityElementsHidden: "accessibilityElementsHidden", accessibilityIgnoresInvertColors: "accessibilityIgnoresInvertColors", accessibilityLanguage: "accessibilityLanguage", accessibilityRespondsToUserInteraction: "accessibilityRespondsToUserInteraction", accessibilityShowsLargeContentViewer: "accessibilityShowsLargeContentViewer", accessibilityLargeContentTitle: "accessibilityLargeContentTitle", role: "role", ariaLabel: ["aria-label", "ariaLabel"], ariaLabelledBy: ["aria-labelledby", "ariaLabelledBy"], ariaLive: ["aria-live", "ariaLive"], ariaHidden: ["aria-hidden", "ariaHidden"], ariaBusy: ["aria-busy", "ariaBusy"], ariaChecked: ["aria-checked", "ariaChecked"], ariaDisabled: ["aria-disabled", "ariaDisabled"], ariaExpanded: ["aria-expanded", "ariaExpanded"], ariaSelected: ["aria-selected", "ariaSelected"], ariaModal: ["aria-modal", "ariaModal"], ariaValueMax: ["aria-valuemax", "ariaValueMax"], ariaValueMin: ["aria-valuemin", "ariaValueMin"], ariaValueNow: ["aria-valuenow", "ariaValueNow"], ariaValueText: ["aria-valuetext", "ariaValueText"], onAccessibilityAction: "onAccessibilityAction", onAccessibilityTap: "onAccessibilityTap", onMagicTap: "onMagicTap", onAccessibilityEscape: "onAccessibilityEscape", onLoadStart: "onLoadStart", onLoad: "onLoad", onLoadEnd: "onLoadEnd", onError: "onError", onProgress: "onProgress", onPartialLoad: "onPartialLoad", animatedProps: "animatedProps", passthroughAnimatedPropExplicitValues: "passthroughAnimatedPropExplicitValues" }, outputs: { accessibilityAction: "accessibilityAction", accessibilityTap: "accessibilityTap", magicTap: "magicTap", accessibilityEscape: "accessibilityEscape", loadStart: "loadStart", load: "load", loadEnd: "loadEnd", error: "error", progress: "progress", partialLoad: "partialLoad" }, viewQueries: [{ propertyName: "hostDirective", first: true, predicate: SymbioteHostPropsDirective, descendants: true }], usesInheritance: true, usesOnChanges: true, hostDirectives: [{ directive: i1.SymbioteStyleInputDirective, inputs: ["style", "style"] }], ngImport: i0, template: `
|
|
264
291
|
<symbiote-image
|
|
265
292
|
[symbioteHostProps]="animatedImageProps"
|
|
266
|
-
(accessibilityAction)="handleAccessibilityAction($event)"
|
|
267
|
-
(accessibilityTap)="handleAccessibilityTap($event)"
|
|
268
|
-
(magicTap)="handleMagicTap($event)"
|
|
269
|
-
(accessibilityEscape)="handleAccessibilityEscape($event)"
|
|
270
293
|
(loadStart)="handleLoadStart($event)"
|
|
271
294
|
(load)="handleLoad($event)"
|
|
272
295
|
(loadEnd)="handleLoadEnd($event)"
|
|
@@ -283,7 +306,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImpor
|
|
|
283
306
|
args: [{
|
|
284
307
|
selector: 'AnimatedImage, symbiote-animated-image',
|
|
285
308
|
standalone: true,
|
|
286
|
-
hostDirectives: [
|
|
309
|
+
hostDirectives: [
|
|
310
|
+
{ directive: SymbioteStyleInputDirective, inputs: ['style'] },
|
|
311
|
+
],
|
|
287
312
|
schemas: [CUSTOM_ELEMENTS_SCHEMA],
|
|
288
313
|
imports: [SymbioteHostPropsDirective, ImageHost],
|
|
289
314
|
inputs: ANIMATED_IMAGE_INPUTS,
|
|
@@ -291,10 +316,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImpor
|
|
|
291
316
|
template: `
|
|
292
317
|
<symbiote-image
|
|
293
318
|
[symbioteHostProps]="animatedImageProps"
|
|
294
|
-
(accessibilityAction)="handleAccessibilityAction($event)"
|
|
295
|
-
(accessibilityTap)="handleAccessibilityTap($event)"
|
|
296
|
-
(magicTap)="handleMagicTap($event)"
|
|
297
|
-
(accessibilityEscape)="handleAccessibilityEscape($event)"
|
|
298
319
|
(loadStart)="handleLoadStart($event)"
|
|
299
320
|
(load)="handleLoad($event)"
|
|
300
321
|
(loadEnd)="handleLoadEnd($event)"
|
|
@@ -356,7 +377,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImpor
|
|
|
356
377
|
args: [{
|
|
357
378
|
selector: 'AnimatedScrollView, symbiote-animated-scroll-view',
|
|
358
379
|
standalone: true,
|
|
359
|
-
hostDirectives: [
|
|
380
|
+
hostDirectives: [
|
|
381
|
+
{ directive: SymbioteStyleInputDirective, inputs: ['style'] },
|
|
382
|
+
],
|
|
360
383
|
schemas: [CUSTOM_ELEMENTS_SCHEMA],
|
|
361
384
|
imports: [SymbioteHostPropsDirective, ScrollViewHost],
|
|
362
385
|
inputs: ANIMATED_INPUTS,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"create-animated-component.js","sourceRoot":"","sources":["../../../../src/modules/animated/create-animated-component.ts"],"names":[],"mappings":"AAAA,qFAAqF;AACrF,8FAA8F;AAC9F,6FAA6F;AAC7F,uFAAuF;AACvF,yFAAyF;AACzF,gGAAgG;AAChG,0FAA0F;AAC1F,4FAA4F;AAC5F,6FAA6F;AAC7F,EAAE;AACF,sFAAsF;AACtF,mFAAmF;AACnF,4FAA4F;AAC5F,+FAA+F;AAC/F,uDAAuD;AAEvD,OAAO,EACL,uBAAuB,EACvB,SAAS,EACT,sBAAsB,EACtB,SAAS,EACT,UAAU,EACV,MAAM,EACN,MAAM,EACN,SAAS,GAMV,MAAM,eAAe,CAAC;AACvB,OAAO,EACL,yBAAyB,EACzB,cAAc,EACd,WAAW,EACX,oBAAoB,EACpB,eAAe,GAEhB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAC;AACrE,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AACjE,OAAO,EACL,eAAe,EACf,SAAS,EACT,cAAc,EACd,0BAA0B,EAC1B,2BAA2B,EAC3B,QAAQ,EACR,QAAQ,GACT,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,QAAQ,EAAE,MAAM,4BAA4B,CAAC;AACtD,OAAO,EACL,YAAY,EACZ,aAAa,EACb,SAAS,EACT,iBAAiB,GAClB,MAAM,+BAA+B,CAAC;
|
|
1
|
+
{"version":3,"file":"create-animated-component.js","sourceRoot":"","sources":["../../../../src/modules/animated/create-animated-component.ts"],"names":[],"mappings":"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"}
|