@symbiote-native/angular 0.6.2 → 0.7.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/bin/symbiote-angular-dev.cjs +20 -19
- package/build/angular/anchor-host-registry.js +2 -2
- package/build/angular/anchor-host-registry.js.map +1 -1
- package/build/angular/components/activity-indicator/index.android.d.ts +2 -1
- package/build/angular/components/activity-indicator/index.android.js +6 -3
- package/build/angular/components/activity-indicator/index.android.js.map +1 -1
- package/build/angular/components/activity-indicator/index.ios.d.ts +2 -1
- package/build/angular/components/activity-indicator/index.ios.js +6 -3
- package/build/angular/components/activity-indicator/index.ios.js.map +1 -1
- package/build/angular/components/activity-indicator/shared.js +3 -3
- package/build/angular/components/button.d.ts +4 -2
- package/build/angular/components/button.js +28 -17
- package/build/angular/components/button.js.map +1 -1
- package/build/angular/components/flat-list/index.d.ts +5 -3
- package/build/angular/components/flat-list/index.js +35 -38
- package/build/angular/components/flat-list/index.js.map +1 -1
- package/build/angular/components/image/index.android.d.ts +8 -3
- package/build/angular/components/image/index.android.js +39 -9
- package/build/angular/components/image/index.android.js.map +1 -1
- package/build/angular/components/image/index.ios.d.ts +8 -3
- package/build/angular/components/image/index.ios.js +39 -9
- package/build/angular/components/image/index.ios.js.map +1 -1
- package/build/angular/components/image/shared.d.ts +4 -1
- package/build/angular/components/image/shared.js +33 -2
- package/build/angular/components/image/shared.js.map +1 -1
- package/build/angular/components/image-background.d.ts +2 -1
- package/build/angular/components/image-background.js +6 -4
- package/build/angular/components/image-background.js.map +1 -1
- package/build/angular/components/input-accessory-view/index.d.ts +9 -4
- package/build/angular/components/input-accessory-view/index.js +43 -9
- package/build/angular/components/input-accessory-view/index.js.map +1 -1
- package/build/angular/components/keyboard-avoiding-view/index.d.ts +2 -1
- package/build/angular/components/keyboard-avoiding-view/index.js +6 -4
- package/build/angular/components/keyboard-avoiding-view/index.js.map +1 -1
- package/build/angular/components/modal/index.d.ts +11 -8
- package/build/angular/components/modal/index.js +45 -28
- package/build/angular/components/modal/index.js.map +1 -1
- package/build/angular/components/pressable/index.d.ts +11 -5
- package/build/angular/components/pressable/index.js +61 -12
- package/build/angular/components/pressable/index.js.map +1 -1
- package/build/angular/components/refresh-control/index.d.ts +8 -4
- package/build/angular/components/refresh-control/index.js +52 -16
- package/build/angular/components/refresh-control/index.js.map +1 -1
- package/build/angular/components/safe-area-view/index.d.ts +9 -4
- package/build/angular/components/safe-area-view/index.js +46 -9
- package/build/angular/components/safe-area-view/index.js.map +1 -1
- package/build/angular/components/scroll-view/index.android.d.ts +2 -3
- package/build/angular/components/scroll-view/index.android.js +49 -52
- package/build/angular/components/scroll-view/index.android.js.map +1 -1
- package/build/angular/components/scroll-view/index.ios.d.ts +2 -3
- package/build/angular/components/scroll-view/index.ios.js +15 -17
- package/build/angular/components/scroll-view/index.ios.js.map +1 -1
- package/build/angular/components/scroll-view/projection.d.ts +3 -0
- package/build/angular/components/scroll-view/projection.js +68 -7
- package/build/angular/components/scroll-view/projection.js.map +1 -1
- package/build/angular/components/scroll-view/shared.d.ts +14 -5
- package/build/angular/components/scroll-view/shared.js +198 -69
- package/build/angular/components/scroll-view/shared.js.map +1 -1
- package/build/angular/components/scroll-view/sticky-header.js +14 -19
- package/build/angular/components/scroll-view/sticky-header.js.map +1 -1
- package/build/angular/components/section-list/index.d.ts +2 -1
- package/build/angular/components/section-list/index.js +31 -39
- package/build/angular/components/section-list/index.js.map +1 -1
- package/build/angular/components/switch/index.android.d.ts +7 -3
- package/build/angular/components/switch/index.android.js +38 -10
- package/build/angular/components/switch/index.android.js.map +1 -1
- package/build/angular/components/switch/index.ios.d.ts +7 -3
- package/build/angular/components/switch/index.ios.js +38 -10
- package/build/angular/components/switch/index.ios.js.map +1 -1
- package/build/angular/components/switch/shared.d.ts +12 -3
- package/build/angular/components/switch/shared.js +66 -5
- package/build/angular/components/switch/shared.js.map +1 -1
- package/build/angular/components/text-input.d.ts +10 -2
- package/build/angular/components/text-input.js +46 -6
- package/build/angular/components/text-input.js.map +1 -1
- package/build/angular/components/touchable/index.d.ts +17 -8
- package/build/angular/components/touchable/index.js +78 -19
- package/build/angular/components/touchable/index.js.map +1 -1
- package/build/angular/components/touchable-native-feedback/index.d.ts +6 -3
- package/build/angular/components/touchable-native-feedback/index.js +61 -25
- package/build/angular/components/touchable-native-feedback/index.js.map +1 -1
- package/build/angular/components/virtualized-list/directives.js +18 -18
- package/build/angular/components/virtualized-list/index.d.ts +12 -4
- package/build/angular/components/virtualized-list/index.js +163 -68
- package/build/angular/components/virtualized-list/index.js.map +1 -1
- package/build/angular/components/virtualized-section-list/directives.js +12 -12
- package/build/angular/components/virtualized-section-list/index.d.ts +2 -1
- package/build/angular/components/virtualized-section-list/index.js +6 -4
- 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 +5 -0
- package/build/angular/components.js.map +1 -1
- package/build/angular/create-portal/index.js +29 -35
- package/build/angular/create-portal/index.js.map +1 -1
- package/build/angular/create-tunnel/index.js +19 -22
- package/build/angular/create-tunnel/index.js.map +1 -1
- package/build/angular/descriptor-to-angular/index.js +3 -3
- package/build/angular/index.d.ts +4 -2
- package/build/angular/index.js +2 -2
- package/build/angular/index.js.map +1 -1
- package/build/angular/modules/animated/animated-leaf-binder.d.ts +1 -7
- package/build/angular/modules/animated/animated-leaf-binder.js +22 -72
- package/build/angular/modules/animated/animated-leaf-binder.js.map +1 -1
- package/build/angular/modules/animated/create-animated-component.d.ts +11 -6
- package/build/angular/modules/animated/create-animated-component.js +83 -50
- 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 +3 -3
- package/build/angular/primitives/index.d.ts +1 -1
- package/build/angular/primitives/index.js +46 -46
- package/build/angular/primitives/index.js.map +1 -1
- package/build/angular/primitives/shared.d.ts +39 -1
- package/build/angular/primitives/shared.js +110 -9
- package/build/angular/primitives/shared.js.map +1 -1
- package/build/angular/render/index.js +23 -35
- package/build/angular/render/index.js.map +1 -1
- package/build/angular/services/color-scheme.service.js +3 -3
- package/build/angular/services/window-dimensions.service.js +3 -3
- package/package.json +9 -7
- package/src/anchor-host-registry.ts +2 -2
- package/src/components/activity-indicator/index.android.ts +2 -0
- package/src/components/activity-indicator/index.ios.ts +2 -0
- package/src/components/button.ts +28 -14
- package/src/components/flat-list/index.ts +34 -36
- package/src/components/image/index.android.ts +50 -6
- package/src/components/image/index.ios.ts +50 -6
- package/src/components/image/shared.ts +34 -2
- package/src/components/image-background.ts +2 -1
- package/src/components/input-accessory-view/index.ts +42 -4
- package/src/components/keyboard-avoiding-view/index.ts +7 -1
- package/src/components/modal/index.ts +51 -26
- package/src/components/pressable/index.ts +67 -8
- package/src/components/refresh-control/index.ts +54 -12
- package/src/components/safe-area-view/index.ts +50 -5
- package/src/components/scroll-view/index.android.ts +34 -41
- package/src/components/scroll-view/index.ios.ts +10 -21
- package/src/components/scroll-view/projection.ts +79 -7
- package/src/components/scroll-view/shared.ts +223 -68
- package/src/components/scroll-view/sticky-header.ts +11 -16
- package/src/components/section-list/index.ts +27 -36
- package/src/components/switch/index.android.ts +48 -7
- package/src/components/switch/index.ios.ts +48 -7
- package/src/components/switch/shared.ts +79 -3
- package/src/components/text-input.ts +52 -2
- package/src/components/touchable/index.ts +76 -16
- package/src/components/touchable-native-feedback/index.ts +62 -21
- package/src/components/virtualized-list/index.ts +137 -44
- package/src/components/virtualized-section-list/index.ts +2 -1
- package/src/components.ts +5 -0
- package/src/create-portal/index.ts +23 -29
- package/src/create-tunnel/index.ts +13 -16
- package/src/index.ts +30 -1
- package/src/modules/animated/animated-leaf-binder.ts +28 -77
- package/src/modules/animated/create-animated-component.ts +75 -36
- package/src/modules/app-registry/index.ts +6 -8
- package/src/primitives/index.ts +1 -0
- package/src/primitives/shared.ts +102 -3
- package/src/render/index.ts +23 -35
- package/build/angular/modules/animated/animated-leaf-binder/index.d.ts +0 -14
- package/build/angular/modules/animated/animated-leaf-binder/index.js +0 -91
- package/build/angular/modules/animated/animated-leaf-binder/index.js.map +0 -1
- package/src/modules/animated/animated-leaf-binder/index.ts +0 -101
|
@@ -5,12 +5,12 @@
|
|
|
5
5
|
import { Component } from '@angular/core';
|
|
6
6
|
import { SymbiotePrimitiveHost } from './shared';
|
|
7
7
|
import * as i0 from "@angular/core";
|
|
8
|
-
export { anchorHostStyle, anchorStyleProp, stableAnchorStyle, SymbioteHostPropsDirective, } from './shared';
|
|
8
|
+
export { anchorHostStyle, anchorStyleProp, stableAnchorStyle, SymbioteHostPropsDirective, SymbioteStyleInputDirective, } from './shared';
|
|
9
9
|
export class ViewHost extends SymbiotePrimitiveHost {
|
|
10
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.
|
|
11
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "22.0.
|
|
10
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: ViewHost, deps: null, target: i0.ɵɵFactoryTarget.Component });
|
|
11
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "22.0.8", type: ViewHost, isStandalone: true, selector: "symbiote-view, View", usesInheritance: true, ngImport: i0, template: '<ng-content></ng-content>', isInline: true });
|
|
12
12
|
}
|
|
13
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.
|
|
13
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: ViewHost, decorators: [{
|
|
14
14
|
type: Component,
|
|
15
15
|
args: [{
|
|
16
16
|
selector: 'symbiote-view, View',
|
|
@@ -19,10 +19,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.5", ngImpor
|
|
|
19
19
|
}]
|
|
20
20
|
}] });
|
|
21
21
|
export class TextHost extends SymbiotePrimitiveHost {
|
|
22
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.
|
|
23
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "22.0.
|
|
22
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: TextHost, deps: null, target: i0.ɵɵFactoryTarget.Component });
|
|
23
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "22.0.8", type: TextHost, isStandalone: true, selector: "symbiote-text, Text", usesInheritance: true, ngImport: i0, template: '<ng-content></ng-content>', isInline: true });
|
|
24
24
|
}
|
|
25
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.
|
|
25
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: TextHost, decorators: [{
|
|
26
26
|
type: Component,
|
|
27
27
|
args: [{
|
|
28
28
|
selector: 'symbiote-text, Text',
|
|
@@ -31,10 +31,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.5", ngImpor
|
|
|
31
31
|
}]
|
|
32
32
|
}] });
|
|
33
33
|
export class ImageHost extends SymbiotePrimitiveHost {
|
|
34
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.
|
|
35
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "22.0.
|
|
34
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: ImageHost, deps: null, target: i0.ɵɵFactoryTarget.Component });
|
|
35
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "22.0.8", type: ImageHost, isStandalone: true, selector: "symbiote-image", usesInheritance: true, ngImport: i0, template: '<ng-content></ng-content>', isInline: true });
|
|
36
36
|
}
|
|
37
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.
|
|
37
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: ImageHost, decorators: [{
|
|
38
38
|
type: Component,
|
|
39
39
|
args: [{
|
|
40
40
|
selector: 'symbiote-image',
|
|
@@ -43,10 +43,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.5", ngImpor
|
|
|
43
43
|
}]
|
|
44
44
|
}] });
|
|
45
45
|
export class ScrollViewHost extends SymbiotePrimitiveHost {
|
|
46
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.
|
|
47
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "22.0.
|
|
46
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: ScrollViewHost, deps: null, target: i0.ɵɵFactoryTarget.Component });
|
|
47
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "22.0.8", type: ScrollViewHost, isStandalone: true, selector: "symbiote-scroll-view", usesInheritance: true, ngImport: i0, template: '<ng-content></ng-content>', isInline: true });
|
|
48
48
|
}
|
|
49
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.
|
|
49
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: ScrollViewHost, decorators: [{
|
|
50
50
|
type: Component,
|
|
51
51
|
args: [{
|
|
52
52
|
selector: 'symbiote-scroll-view',
|
|
@@ -55,10 +55,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.5", ngImpor
|
|
|
55
55
|
}]
|
|
56
56
|
}] });
|
|
57
57
|
export class ScrollContentView extends SymbiotePrimitiveHost {
|
|
58
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.
|
|
59
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "22.0.
|
|
58
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: ScrollContentView, deps: null, target: i0.ɵɵFactoryTarget.Component });
|
|
59
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "22.0.8", type: ScrollContentView, isStandalone: true, selector: "symbiote-scroll-content", usesInheritance: true, ngImport: i0, template: '<ng-content></ng-content>', isInline: true });
|
|
60
60
|
}
|
|
61
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.
|
|
61
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: ScrollContentView, decorators: [{
|
|
62
62
|
type: Component,
|
|
63
63
|
args: [{
|
|
64
64
|
selector: 'symbiote-scroll-content',
|
|
@@ -67,10 +67,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.5", ngImpor
|
|
|
67
67
|
}]
|
|
68
68
|
}] });
|
|
69
69
|
export class HorizontalScrollView extends SymbiotePrimitiveHost {
|
|
70
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.
|
|
71
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "22.0.
|
|
70
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: HorizontalScrollView, deps: null, target: i0.ɵɵFactoryTarget.Component });
|
|
71
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "22.0.8", type: HorizontalScrollView, isStandalone: true, selector: "symbiote-horizontal-scroll-view", usesInheritance: true, ngImport: i0, template: '<ng-content></ng-content>', isInline: true });
|
|
72
72
|
}
|
|
73
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.
|
|
73
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: HorizontalScrollView, decorators: [{
|
|
74
74
|
type: Component,
|
|
75
75
|
args: [{
|
|
76
76
|
selector: 'symbiote-horizontal-scroll-view',
|
|
@@ -79,10 +79,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.5", ngImpor
|
|
|
79
79
|
}]
|
|
80
80
|
}] });
|
|
81
81
|
export class HorizontalScrollContentView extends SymbiotePrimitiveHost {
|
|
82
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.
|
|
83
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "22.0.
|
|
82
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: HorizontalScrollContentView, deps: null, target: i0.ɵɵFactoryTarget.Component });
|
|
83
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "22.0.8", type: HorizontalScrollContentView, isStandalone: true, selector: "symbiote-horizontal-scroll-content", usesInheritance: true, ngImport: i0, template: '<ng-content></ng-content>', isInline: true });
|
|
84
84
|
}
|
|
85
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.
|
|
85
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: HorizontalScrollContentView, decorators: [{
|
|
86
86
|
type: Component,
|
|
87
87
|
args: [{
|
|
88
88
|
selector: 'symbiote-horizontal-scroll-content',
|
|
@@ -91,10 +91,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.5", ngImpor
|
|
|
91
91
|
}]
|
|
92
92
|
}] });
|
|
93
93
|
export class TextInputHost extends SymbiotePrimitiveHost {
|
|
94
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.
|
|
95
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "22.0.
|
|
94
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: TextInputHost, deps: null, target: i0.ɵɵFactoryTarget.Component });
|
|
95
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "22.0.8", type: TextInputHost, isStandalone: true, selector: "symbiote-text-input", usesInheritance: true, ngImport: i0, template: '<ng-content></ng-content>', isInline: true });
|
|
96
96
|
}
|
|
97
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.
|
|
97
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: TextInputHost, decorators: [{
|
|
98
98
|
type: Component,
|
|
99
99
|
args: [{
|
|
100
100
|
selector: 'symbiote-text-input',
|
|
@@ -103,10 +103,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.5", ngImpor
|
|
|
103
103
|
}]
|
|
104
104
|
}] });
|
|
105
105
|
export class MultilineTextInputHost extends SymbiotePrimitiveHost {
|
|
106
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.
|
|
107
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "22.0.
|
|
106
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: MultilineTextInputHost, deps: null, target: i0.ɵɵFactoryTarget.Component });
|
|
107
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "22.0.8", type: MultilineTextInputHost, isStandalone: true, selector: "symbiote-text-input-multiline", usesInheritance: true, ngImport: i0, template: '<ng-content></ng-content>', isInline: true });
|
|
108
108
|
}
|
|
109
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.
|
|
109
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: MultilineTextInputHost, decorators: [{
|
|
110
110
|
type: Component,
|
|
111
111
|
args: [{
|
|
112
112
|
selector: 'symbiote-text-input-multiline',
|
|
@@ -115,10 +115,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.5", ngImpor
|
|
|
115
115
|
}]
|
|
116
116
|
}] });
|
|
117
117
|
export class SwitchHost extends SymbiotePrimitiveHost {
|
|
118
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.
|
|
119
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "22.0.
|
|
118
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: SwitchHost, deps: null, target: i0.ɵɵFactoryTarget.Component });
|
|
119
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "22.0.8", type: SwitchHost, isStandalone: true, selector: "symbiote-switch", usesInheritance: true, ngImport: i0, template: '<ng-content></ng-content>', isInline: true });
|
|
120
120
|
}
|
|
121
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.
|
|
121
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: SwitchHost, decorators: [{
|
|
122
122
|
type: Component,
|
|
123
123
|
args: [{
|
|
124
124
|
selector: 'symbiote-switch',
|
|
@@ -127,10 +127,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.5", ngImpor
|
|
|
127
127
|
}]
|
|
128
128
|
}] });
|
|
129
129
|
export class ActivityIndicatorHost extends SymbiotePrimitiveHost {
|
|
130
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.
|
|
131
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "22.0.
|
|
130
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: ActivityIndicatorHost, deps: null, target: i0.ɵɵFactoryTarget.Component });
|
|
131
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "22.0.8", type: ActivityIndicatorHost, isStandalone: true, selector: "symbiote-activity-indicator", usesInheritance: true, ngImport: i0, template: '<ng-content></ng-content>', isInline: true });
|
|
132
132
|
}
|
|
133
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.
|
|
133
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: ActivityIndicatorHost, decorators: [{
|
|
134
134
|
type: Component,
|
|
135
135
|
args: [{
|
|
136
136
|
selector: 'symbiote-activity-indicator',
|
|
@@ -139,10 +139,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.5", ngImpor
|
|
|
139
139
|
}]
|
|
140
140
|
}] });
|
|
141
141
|
export class SafeAreaViewHost extends SymbiotePrimitiveHost {
|
|
142
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.
|
|
143
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "22.0.
|
|
142
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: SafeAreaViewHost, deps: null, target: i0.ɵɵFactoryTarget.Component });
|
|
143
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "22.0.8", type: SafeAreaViewHost, isStandalone: true, selector: "symbiote-safe-area-view", usesInheritance: true, ngImport: i0, template: '<ng-content></ng-content>', isInline: true });
|
|
144
144
|
}
|
|
145
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.
|
|
145
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: SafeAreaViewHost, decorators: [{
|
|
146
146
|
type: Component,
|
|
147
147
|
args: [{
|
|
148
148
|
selector: 'symbiote-safe-area-view',
|
|
@@ -151,10 +151,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.5", ngImpor
|
|
|
151
151
|
}]
|
|
152
152
|
}] });
|
|
153
153
|
export class ModalHost extends SymbiotePrimitiveHost {
|
|
154
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.
|
|
155
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "22.0.
|
|
154
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: ModalHost, deps: null, target: i0.ɵɵFactoryTarget.Component });
|
|
155
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "22.0.8", type: ModalHost, isStandalone: true, selector: "symbiote-modal", usesInheritance: true, ngImport: i0, template: '<ng-content></ng-content>', isInline: true });
|
|
156
156
|
}
|
|
157
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.
|
|
157
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: ModalHost, decorators: [{
|
|
158
158
|
type: Component,
|
|
159
159
|
args: [{
|
|
160
160
|
selector: 'symbiote-modal',
|
|
@@ -163,10 +163,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.5", ngImpor
|
|
|
163
163
|
}]
|
|
164
164
|
}] });
|
|
165
165
|
export class RefreshControlHost extends SymbiotePrimitiveHost {
|
|
166
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.
|
|
167
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "22.0.
|
|
166
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: RefreshControlHost, deps: null, target: i0.ɵɵFactoryTarget.Component });
|
|
167
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "22.0.8", type: RefreshControlHost, isStandalone: true, selector: "symbiote-refresh-control", usesInheritance: true, ngImport: i0, template: '<ng-content></ng-content>', isInline: true });
|
|
168
168
|
}
|
|
169
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.
|
|
169
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: RefreshControlHost, decorators: [{
|
|
170
170
|
type: Component,
|
|
171
171
|
args: [{
|
|
172
172
|
selector: 'symbiote-refresh-control',
|
|
@@ -175,10 +175,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.5", ngImpor
|
|
|
175
175
|
}]
|
|
176
176
|
}] });
|
|
177
177
|
export class InputAccessoryViewHost extends SymbiotePrimitiveHost {
|
|
178
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.
|
|
179
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "22.0.
|
|
178
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: InputAccessoryViewHost, deps: null, target: i0.ɵɵFactoryTarget.Component });
|
|
179
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "22.0.8", type: InputAccessoryViewHost, isStandalone: true, selector: "symbiote-input-accessory-view", usesInheritance: true, ngImport: i0, template: '<ng-content></ng-content>', isInline: true });
|
|
180
180
|
}
|
|
181
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.
|
|
181
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: InputAccessoryViewHost, decorators: [{
|
|
182
182
|
type: Component,
|
|
183
183
|
args: [{
|
|
184
184
|
selector: 'symbiote-input-accessory-view',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/primitives/index.ts"],"names":[],"mappings":"AAAA,wFAAwF;AACxF,kFAAkF;AAClF,uFAAuF;AACvF,4FAA4F;AAE5F,OAAO,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAC1C,OAAO,EAAE,qBAAqB,EAAE,MAAM,UAAU,CAAC;;AAEjD,OAAO,EACL,eAAe,EACf,eAAe,EACf,iBAAiB,EACjB,0BAA0B,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/primitives/index.ts"],"names":[],"mappings":"AAAA,wFAAwF;AACxF,kFAAkF;AAClF,uFAAuF;AACvF,4FAA4F;AAE5F,OAAO,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAC1C,OAAO,EAAE,qBAAqB,EAAE,MAAM,UAAU,CAAC;;AAEjD,OAAO,EACL,eAAe,EACf,eAAe,EACf,iBAAiB,EACjB,0BAA0B,EAC1B,2BAA2B,GAC5B,MAAM,UAAU,CAAC;AAOlB,MAAM,OAAO,QAAS,SAAQ,qBAAqB;uGAAtC,QAAQ;2FAAR,QAAQ,sGAFT,2BAA2B;;2FAE1B,QAAQ;kBALpB,SAAS;mBAAC;oBACT,QAAQ,EAAE,qBAAqB;oBAC/B,UAAU,EAAE,IAAI;oBAChB,QAAQ,EAAE,2BAA2B;iBACtC;;AAQD,MAAM,OAAO,QAAS,SAAQ,qBAAqB;uGAAtC,QAAQ;2FAAR,QAAQ,sGAFT,2BAA2B;;2FAE1B,QAAQ;kBALpB,SAAS;mBAAC;oBACT,QAAQ,EAAE,qBAAqB;oBAC/B,UAAU,EAAE,IAAI;oBAChB,QAAQ,EAAE,2BAA2B;iBACtC;;AAQD,MAAM,OAAO,SAAU,SAAQ,qBAAqB;uGAAvC,SAAS;2FAAT,SAAS,iGAFV,2BAA2B;;2FAE1B,SAAS;kBALrB,SAAS;mBAAC;oBACT,QAAQ,EAAE,gBAAgB;oBAC1B,UAAU,EAAE,IAAI;oBAChB,QAAQ,EAAE,2BAA2B;iBACtC;;AAQD,MAAM,OAAO,cAAe,SAAQ,qBAAqB;uGAA5C,cAAc;2FAAd,cAAc,uGAFf,2BAA2B;;2FAE1B,cAAc;kBAL1B,SAAS;mBAAC;oBACT,QAAQ,EAAE,sBAAsB;oBAChC,UAAU,EAAE,IAAI;oBAChB,QAAQ,EAAE,2BAA2B;iBACtC;;AAQD,MAAM,OAAO,iBAAkB,SAAQ,qBAAqB;uGAA/C,iBAAiB;2FAAjB,iBAAiB,0GAFlB,2BAA2B;;2FAE1B,iBAAiB;kBAL7B,SAAS;mBAAC;oBACT,QAAQ,EAAE,yBAAyB;oBACnC,UAAU,EAAE,IAAI;oBAChB,QAAQ,EAAE,2BAA2B;iBACtC;;AAQD,MAAM,OAAO,oBAAqB,SAAQ,qBAAqB;uGAAlD,oBAAoB;2FAApB,oBAAoB,kHAFrB,2BAA2B;;2FAE1B,oBAAoB;kBALhC,SAAS;mBAAC;oBACT,QAAQ,EAAE,iCAAiC;oBAC3C,UAAU,EAAE,IAAI;oBAChB,QAAQ,EAAE,2BAA2B;iBACtC;;AAQD,MAAM,OAAO,2BAA4B,SAAQ,qBAAqB;uGAAzD,2BAA2B;2FAA3B,2BAA2B,qHAF5B,2BAA2B;;2FAE1B,2BAA2B;kBALvC,SAAS;mBAAC;oBACT,QAAQ,EAAE,oCAAoC;oBAC9C,UAAU,EAAE,IAAI;oBAChB,QAAQ,EAAE,2BAA2B;iBACtC;;AAQD,MAAM,OAAO,aAAc,SAAQ,qBAAqB;uGAA3C,aAAa;2FAAb,aAAa,sGAFd,2BAA2B;;2FAE1B,aAAa;kBALzB,SAAS;mBAAC;oBACT,QAAQ,EAAE,qBAAqB;oBAC/B,UAAU,EAAE,IAAI;oBAChB,QAAQ,EAAE,2BAA2B;iBACtC;;AAQD,MAAM,OAAO,sBAAuB,SAAQ,qBAAqB;uGAApD,sBAAsB;2FAAtB,sBAAsB,gHAFvB,2BAA2B;;2FAE1B,sBAAsB;kBALlC,SAAS;mBAAC;oBACT,QAAQ,EAAE,+BAA+B;oBACzC,UAAU,EAAE,IAAI;oBAChB,QAAQ,EAAE,2BAA2B;iBACtC;;AAQD,MAAM,OAAO,UAAW,SAAQ,qBAAqB;uGAAxC,UAAU;2FAAV,UAAU,kGAFX,2BAA2B;;2FAE1B,UAAU;kBALtB,SAAS;mBAAC;oBACT,QAAQ,EAAE,iBAAiB;oBAC3B,UAAU,EAAE,IAAI;oBAChB,QAAQ,EAAE,2BAA2B;iBACtC;;AAQD,MAAM,OAAO,qBAAsB,SAAQ,qBAAqB;uGAAnD,qBAAqB;2FAArB,qBAAqB,8GAFtB,2BAA2B;;2FAE1B,qBAAqB;kBALjC,SAAS;mBAAC;oBACT,QAAQ,EAAE,6BAA6B;oBACvC,UAAU,EAAE,IAAI;oBAChB,QAAQ,EAAE,2BAA2B;iBACtC;;AAQD,MAAM,OAAO,gBAAiB,SAAQ,qBAAqB;uGAA9C,gBAAgB;2FAAhB,gBAAgB,0GAFjB,2BAA2B;;2FAE1B,gBAAgB;kBAL5B,SAAS;mBAAC;oBACT,QAAQ,EAAE,yBAAyB;oBACnC,UAAU,EAAE,IAAI;oBAChB,QAAQ,EAAE,2BAA2B;iBACtC;;AAQD,MAAM,OAAO,SAAU,SAAQ,qBAAqB;uGAAvC,SAAS;2FAAT,SAAS,iGAFV,2BAA2B;;2FAE1B,SAAS;kBALrB,SAAS;mBAAC;oBACT,QAAQ,EAAE,gBAAgB;oBAC1B,UAAU,EAAE,IAAI;oBAChB,QAAQ,EAAE,2BAA2B;iBACtC;;AAQD,MAAM,OAAO,kBAAmB,SAAQ,qBAAqB;uGAAhD,kBAAkB;2FAAlB,kBAAkB,2GAFnB,2BAA2B;;2FAE1B,kBAAkB;kBAL9B,SAAS;mBAAC;oBACT,QAAQ,EAAE,0BAA0B;oBACpC,UAAU,EAAE,IAAI;oBAChB,QAAQ,EAAE,2BAA2B;iBACtC;;AAQD,MAAM,OAAO,sBAAuB,SAAQ,qBAAqB;uGAApD,sBAAsB;2FAAtB,sBAAsB,gHAFvB,2BAA2B;;2FAE1B,sBAAsB;kBALlC,SAAS;mBAAC;oBACT,QAAQ,EAAE,+BAA+B;oBACzC,UAAU,EAAE,IAAI;oBAChB,QAAQ,EAAE,2BAA2B;iBACtC"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { ElementRef, type OnChanges, type SimpleChanges } from '@angular/core';
|
|
1
|
+
import { type DoCheck, ElementRef, type OnChanges, type SimpleChanges } from '@angular/core';
|
|
2
2
|
import { type IHostInstance, type IStyleProp } from '@symbiote-native/engine';
|
|
3
3
|
import * as i0 from "@angular/core";
|
|
4
4
|
/**
|
|
@@ -42,6 +42,43 @@ export declare function anchorStyleProp<T>(elementRef: ElementRef<unknown>): ISt
|
|
|
42
42
|
* `@Input() style` binding sees NO change and skips its own update on an unrelated tick.
|
|
43
43
|
*/
|
|
44
44
|
export declare function stableAnchorStyle(elementRef: ElementRef<unknown>, explicitStyle: unknown, previous: unknown): Record<string, unknown>;
|
|
45
|
+
/**
|
|
46
|
+
* Restores the OnPush dirty-marking Angular skips for a `[style]` binding that a directive
|
|
47
|
+
* declares as an input. Attach it to any component declaring a `style` input:
|
|
48
|
+
* `hostDirectives: [{ directive: SymbioteStyleInputDirective, inputs: ['style'] }]`.
|
|
49
|
+
*
|
|
50
|
+
* An ordinary `[foo]` binding compiles to `ɵɵproperty` -> `setPropertyAndInputs`, whose last act
|
|
51
|
+
* for a component host is `markDirtyIfOnPush` (`render3/instructions/shared.ts`) — the flag
|
|
52
|
+
* `detectChangesInView` needs before it will re-execute a non-CheckAlways view. `[style]` and
|
|
53
|
+
* `[class]` do NOT take that path: they compile to the styling instructions, which on finding a
|
|
54
|
+
* directive input of the same name hand off to `setDirectiveInputsWhichShadowsStyling`
|
|
55
|
+
* (`render3/instructions/property.ts`) — two lines that write the input and stop. No dirty flag.
|
|
56
|
+
* The input lands and `ngOnChanges` fires, but the receiving component's own template, and every
|
|
57
|
+
* getter it reads, is frozen at its creation value. Verified against @angular/core 22.0.8.
|
|
58
|
+
*
|
|
59
|
+
* Symbiote sits squarely on that gap: every composed component declares `style` as a real
|
|
60
|
+
* `@Input()` on purpose, because a raw `[style]` binding would otherwise be decomposed key by key
|
|
61
|
+
* by Angular's CSS style engine, which cannot represent an RN StyleProp array or an Animated value
|
|
62
|
+
* (see `SymbiotePrimitiveHost` above). So the one binding name Angular forgets to mark is the one
|
|
63
|
+
* carrying the whole styling surface.
|
|
64
|
+
*
|
|
65
|
+
* `markForCheck()` here is exactly the skipped `markDirtyIfOnPush`, not a bigger hammer: the write
|
|
66
|
+
* happens inside the parent's refresh, and `markViewDirty` uses the `Dirty` bit alone while views
|
|
67
|
+
* are refreshing (`render3/instructions/mark_view_dirty.ts`), which the ancestors then clear at the
|
|
68
|
+
* end of their own `refreshView`. A component that already bridges its inputs into a signal (the
|
|
69
|
+
* `inputsRevision` + `computed` pattern — Pressable, ScrollView) is immune on its own, since a
|
|
70
|
+
* signal write dirties the template consumer, which `detectChangesInView` honors in any mode.
|
|
71
|
+
*/
|
|
72
|
+
export declare class SymbioteStyleInputDirective implements DoCheck, OnChanges {
|
|
73
|
+
private readonly cdr;
|
|
74
|
+
private readonly elementRef;
|
|
75
|
+
private lastAnchorStyle;
|
|
76
|
+
style?: unknown;
|
|
77
|
+
ngOnChanges(): void;
|
|
78
|
+
ngDoCheck(): void;
|
|
79
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<SymbioteStyleInputDirective, never>;
|
|
80
|
+
static ɵdir: i0.ɵɵDirectiveDeclaration<SymbioteStyleInputDirective, "[symbioteStyleInput]", never, { "style": { "alias": "style"; "required": false; }; }, {}, never, never, true, never>;
|
|
81
|
+
}
|
|
45
82
|
/**
|
|
46
83
|
* Base for all Angular primitive host components (`symbiote-view`, `symbiote-text`, ...).
|
|
47
84
|
* RN's `StyleProp` can be an object, an array, nested arrays, falsy entries, and Animated
|
|
@@ -80,6 +117,7 @@ export declare class SymbioteHostPropsDirective {
|
|
|
80
117
|
private readonly renderer;
|
|
81
118
|
private readonly elementRef;
|
|
82
119
|
private readonly cdr;
|
|
120
|
+
private readonly wrappers;
|
|
83
121
|
get node(): unknown;
|
|
84
122
|
set symbioteHostProps(props: Record<string, unknown>);
|
|
85
123
|
private wrapCallback;
|
|
@@ -75,6 +75,86 @@ export function stableAnchorStyle(elementRef, explicitStyle, previous) {
|
|
|
75
75
|
return isRecord(previous) && shallowStyleEqual(previous, next) ? previous : next;
|
|
76
76
|
}
|
|
77
77
|
const ON_PREFIX = /^on[A-Z]/;
|
|
78
|
+
// The one `onX` that fires per FRAME rather than per gesture, and with sticky headers RN pins
|
|
79
|
+
// `scrollEventThrottle` to 1 (ScrollView.js), so 60 times a second. Since markForCheck walks
|
|
80
|
+
// RefreshView|Dirty to the ROOT, wrapping it cost one full ancestor-screen template execution per
|
|
81
|
+
// frame - the canary's ~37fps scroll (components/virtualized-list/scroll-cost.test.ts).
|
|
82
|
+
//
|
|
83
|
+
// Nothing lost its refresh: VirtualizedList marks itself when the window moves, sticky rides the
|
|
84
|
+
// native driver, and a caller's own handler is typically an Animated.event touching no Angular
|
|
85
|
+
// state. Drag/momentum begin/end stay wrapped - once per gesture is not a hot path.
|
|
86
|
+
const PER_FRAME_CALLBACK = 'onScroll';
|
|
87
|
+
/**
|
|
88
|
+
* Restores the OnPush dirty-marking Angular skips for a `[style]` binding that a directive
|
|
89
|
+
* declares as an input. Attach it to any component declaring a `style` input:
|
|
90
|
+
* `hostDirectives: [{ directive: SymbioteStyleInputDirective, inputs: ['style'] }]`.
|
|
91
|
+
*
|
|
92
|
+
* An ordinary `[foo]` binding compiles to `ɵɵproperty` -> `setPropertyAndInputs`, whose last act
|
|
93
|
+
* for a component host is `markDirtyIfOnPush` (`render3/instructions/shared.ts`) — the flag
|
|
94
|
+
* `detectChangesInView` needs before it will re-execute a non-CheckAlways view. `[style]` and
|
|
95
|
+
* `[class]` do NOT take that path: they compile to the styling instructions, which on finding a
|
|
96
|
+
* directive input of the same name hand off to `setDirectiveInputsWhichShadowsStyling`
|
|
97
|
+
* (`render3/instructions/property.ts`) — two lines that write the input and stop. No dirty flag.
|
|
98
|
+
* The input lands and `ngOnChanges` fires, but the receiving component's own template, and every
|
|
99
|
+
* getter it reads, is frozen at its creation value. Verified against @angular/core 22.0.8.
|
|
100
|
+
*
|
|
101
|
+
* Symbiote sits squarely on that gap: every composed component declares `style` as a real
|
|
102
|
+
* `@Input()` on purpose, because a raw `[style]` binding would otherwise be decomposed key by key
|
|
103
|
+
* by Angular's CSS style engine, which cannot represent an RN StyleProp array or an Animated value
|
|
104
|
+
* (see `SymbiotePrimitiveHost` above). So the one binding name Angular forgets to mark is the one
|
|
105
|
+
* carrying the whole styling surface.
|
|
106
|
+
*
|
|
107
|
+
* `markForCheck()` here is exactly the skipped `markDirtyIfOnPush`, not a bigger hammer: the write
|
|
108
|
+
* happens inside the parent's refresh, and `markViewDirty` uses the `Dirty` bit alone while views
|
|
109
|
+
* are refreshing (`render3/instructions/mark_view_dirty.ts`), which the ancestors then clear at the
|
|
110
|
+
* end of their own `refreshView`. A component that already bridges its inputs into a signal (the
|
|
111
|
+
* `inputsRevision` + `computed` pattern — Pressable, ScrollView) is immune on its own, since a
|
|
112
|
+
* signal write dirties the template consumer, which `detectChangesInView` honors in any mode.
|
|
113
|
+
*/
|
|
114
|
+
export class SymbioteStyleInputDirective {
|
|
115
|
+
cdr = inject(ChangeDetectorRef);
|
|
116
|
+
// A host directive's ElementRef is the HOST COMPONENT's element - i.e. exactly the anchor a
|
|
117
|
+
// `class=` at the use site resolves onto.
|
|
118
|
+
elementRef = inject(ElementRef);
|
|
119
|
+
lastAnchorStyle;
|
|
120
|
+
style;
|
|
121
|
+
ngOnChanges() {
|
|
122
|
+
this.cdr.markForCheck();
|
|
123
|
+
}
|
|
124
|
+
// The `class` half of the same gap, and it needs a POLL, not a hook: a class at the use site
|
|
125
|
+
// never becomes an input, so there is no SimpleChanges entry to fire on. Making the view refresh
|
|
126
|
+
// is enough - every composed component re-reads the anchor in a getter on its own.
|
|
127
|
+
//
|
|
128
|
+
// ngDoCheck runs during the PARENT's refresh even when this view would be skipped, so the mark
|
|
129
|
+
// lands in the same pass rather than one behind. The dedup gate is load-bearing: marking on every
|
|
130
|
+
// check re-dirties the view every tick and free-runs CD, the hazard `stableAnchorStyle` above
|
|
131
|
+
// prevents one level up.
|
|
132
|
+
ngDoCheck() {
|
|
133
|
+
const current = anchorHostStyle(this.elementRef);
|
|
134
|
+
if (isAnchorStyleUnchanged(this.lastAnchorStyle, current))
|
|
135
|
+
return;
|
|
136
|
+
this.lastAnchorStyle = current;
|
|
137
|
+
this.cdr.markForCheck();
|
|
138
|
+
}
|
|
139
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: SymbioteStyleInputDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
140
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "22.0.8", type: SymbioteStyleInputDirective, isStandalone: true, selector: "[symbioteStyleInput]", inputs: { style: "style" }, usesOnChanges: true, ngImport: i0 });
|
|
141
|
+
}
|
|
142
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: SymbioteStyleInputDirective, decorators: [{
|
|
143
|
+
type: Directive,
|
|
144
|
+
args: [{
|
|
145
|
+
selector: '[symbioteStyleInput]',
|
|
146
|
+
standalone: true,
|
|
147
|
+
inputs: ['style'],
|
|
148
|
+
}]
|
|
149
|
+
}] });
|
|
150
|
+
// Reference equality is the normal path (the engine replaces props.style only on a real class
|
|
151
|
+
// change); the shallow compare guards against an equal-but-fresh object, which would turn the poll
|
|
152
|
+
// above into a CD loop.
|
|
153
|
+
function isAnchorStyleUnchanged(previous, next) {
|
|
154
|
+
if (Object.is(previous, next))
|
|
155
|
+
return true;
|
|
156
|
+
return isRecord(previous) && isRecord(next) && shallowStyleEqual(previous, next);
|
|
157
|
+
}
|
|
78
158
|
/**
|
|
79
159
|
* Base for all Angular primitive host components (`symbiote-view`, `symbiote-text`, ...).
|
|
80
160
|
* RN's `StyleProp` can be an object, an array, nested arrays, falsy entries, and Animated
|
|
@@ -104,10 +184,10 @@ export class SymbiotePrimitiveHost {
|
|
|
104
184
|
const value = this.style === undefined ? undefined : flattenStyle(this.style);
|
|
105
185
|
this.renderer.setProperty(this.elementRef.nativeElement, 'style', value);
|
|
106
186
|
}
|
|
107
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.
|
|
108
|
-
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "22.0.
|
|
187
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: SymbiotePrimitiveHost, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
188
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "22.0.8", type: SymbiotePrimitiveHost, isStandalone: true, inputs: { style: "style" }, usesOnChanges: true, ngImport: i0 });
|
|
109
189
|
}
|
|
110
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.
|
|
190
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: SymbiotePrimitiveHost, decorators: [{
|
|
111
191
|
type: Directive
|
|
112
192
|
}], propDecorators: { style: [{
|
|
113
193
|
type: Input
|
|
@@ -127,6 +207,17 @@ export class SymbioteHostPropsDirective {
|
|
|
127
207
|
// The directive lives in its HOST component's template, so its injected ChangeDetectorRef IS
|
|
128
208
|
// that component's own view detector — the one thing that can refresh it (see wrapCallback).
|
|
129
209
|
cdr = inject(ChangeDetectorRef);
|
|
210
|
+
// One wrapper per ORIGINAL handler, for the lifetime of this directive. Without it every push
|
|
211
|
+
// of the props bag allocated a brand-new closure for every `onX` key, and the engine stored it
|
|
212
|
+
// as a new listener (`setEventListener` allocates its own closure on top) - per key, per push,
|
|
213
|
+
// on a path a scroll frame reaches 60 times a second. The wrapper body closes over nothing but
|
|
214
|
+
// `value` and this instance's `cdr`, so the handler alone is a complete cache key; `key` is
|
|
215
|
+
// read only by the ON_PREFIX guard above and never enters the wrapper.
|
|
216
|
+
//
|
|
217
|
+
// Reference stability is the point, not just the allocation: a fresh function on every push
|
|
218
|
+
// defeats every downstream identity check on the bag, so nothing upstream could ever conclude
|
|
219
|
+
// "this bag is unchanged" while a callback prop was in it.
|
|
220
|
+
wrappers = new WeakMap();
|
|
130
221
|
get node() {
|
|
131
222
|
return this.elementRef.nativeElement;
|
|
132
223
|
}
|
|
@@ -149,17 +240,27 @@ export class SymbioteHostPropsDirective {
|
|
|
149
240
|
wrapCallback(key, value) {
|
|
150
241
|
if (!ON_PREFIX.test(key) || typeof value !== 'function')
|
|
151
242
|
return value;
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
243
|
+
if (key === PER_FRAME_CALLBACK)
|
|
244
|
+
return value;
|
|
245
|
+
const cached = this.wrappers.get(value);
|
|
246
|
+
if (cached !== undefined)
|
|
247
|
+
return cached;
|
|
248
|
+
// Reflect.apply rather than calling a cast-to-signature local: `typeof value === 'function'`
|
|
249
|
+
// narrows to `Function`, which has no call signature TypeScript will accept, and this repo
|
|
250
|
+
// does not use `as` to paper over that. `undefined` as the receiver preserves the previous
|
|
251
|
+
// unbound call.
|
|
252
|
+
const wrapper = (...args) => {
|
|
253
|
+
const result = Reflect.apply(value, undefined, args);
|
|
155
254
|
this.cdr.markForCheck();
|
|
156
255
|
return result;
|
|
157
256
|
};
|
|
257
|
+
this.wrappers.set(value, wrapper);
|
|
258
|
+
return wrapper;
|
|
158
259
|
}
|
|
159
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.
|
|
160
|
-
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "22.0.
|
|
260
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: SymbioteHostPropsDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
261
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "22.0.8", type: SymbioteHostPropsDirective, isStandalone: true, selector: "[symbioteHostProps]", inputs: { symbioteHostProps: "symbioteHostProps" }, exportAs: ["symbioteHost"], ngImport: i0 });
|
|
161
262
|
}
|
|
162
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.
|
|
263
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: SymbioteHostPropsDirective, decorators: [{
|
|
163
264
|
type: Directive,
|
|
164
265
|
args: [{
|
|
165
266
|
selector: '[symbioteHostProps]',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shared.js","sourceRoot":"","sources":["../../../src/primitives/shared.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,iBAAiB,EACjB,SAAS,
|
|
1
|
+
{"version":3,"file":"shared.js","sourceRoot":"","sources":["../../../src/primitives/shared.ts"],"names":[],"mappings":"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"}
|
|
@@ -71,43 +71,31 @@ export function mount(rootTag, rootComponent, options) {
|
|
|
71
71
|
useValue: new SymbioteRendererFactory(surface),
|
|
72
72
|
},
|
|
73
73
|
{ provide: DOCUMENT, useValue: { head: surface, body: surface } },
|
|
74
|
-
// createEnvironmentInjector with a null parent
|
|
75
|
-
//
|
|
76
|
-
//
|
|
77
|
-
//
|
|
78
|
-
//
|
|
79
|
-
//
|
|
80
|
-
//
|
|
81
|
-
// R3Injector's constructor reads that provider and self-tags this.scopes with
|
|
82
|
-
// 'root'. We do the same here — no PlatformRef, no DOM, just this one provider.
|
|
74
|
+
// createEnvironmentInjector with a null parent scopes this injector to {'environment'}
|
|
75
|
+
// only (see EnvironmentNgModuleRefAdapter), so providedIn:'root' tokens — ApplicationRef
|
|
76
|
+
// included — never resolve (R3Injector.get walks up for a `scopes` containing 'root', and
|
|
77
|
+
// a null parent always dead-ends in NullInjector). platform-browser solves this the same
|
|
78
|
+
// way for real DOM apps via BROWSER_MODULE_PROVIDERS: hand { provide: INJECTOR_SCOPE,
|
|
79
|
+
// useValue: 'root' } to the app-level providers, which R3Injector's constructor reads to
|
|
80
|
+
// self-tag this.scopes with 'root'. Same trick here, no PlatformRef, no DOM.
|
|
83
81
|
{ provide: INJECTOR_SCOPE, useValue: 'root' },
|
|
84
|
-
// Supplies the real ChangeDetectionSchedulerImpl (microtask-batched
|
|
85
|
-
//
|
|
86
|
-
//
|
|
87
|
-
//
|
|
88
|
-
//
|
|
89
|
-
//
|
|
90
|
-
//
|
|
91
|
-
//
|
|
92
|
-
//
|
|
93
|
-
//
|
|
94
|
-
// go through, see SymbioteHostPropsDirective) unconditionally sets RefreshView on
|
|
95
|
-
// EVERY ancestor up to the root; that is fundamental, unavoidable Angular zoneless
|
|
96
|
-
// behavior, true in every Angular app, not something this swap changes. What DOES
|
|
97
|
-
// still protect a sibling branch from an unrelated press is a genuine child
|
|
98
|
-
// `@Component` boundary — SignalView-compiled children are skip-eligible regardless of
|
|
99
|
-
// this scheduler.
|
|
82
|
+
// Supplies the real ChangeDetectionSchedulerImpl (microtask-batched via
|
|
83
|
+
// ApplicationRef.afterTick) + NoopNgZone + ZONELESS_ENABLED: true — the exact bundle
|
|
84
|
+
// internalCreateApplication() uses. Replaces the old unconditional
|
|
85
|
+
// `rootView.detectChanges(); cmpView.detectChanges()` (force-ran both root views on every
|
|
86
|
+
// tick) with Angular's own tick(), which only enters a view something actually marked
|
|
87
|
+
// dirty. This does NOT stop the root's own template from re-running on a plain press or
|
|
88
|
+
// `markForCheck()` anywhere in the tree — `markViewDirty` unconditionally sets RefreshView
|
|
89
|
+
// on every ancestor up to the root; that's fundamental Angular zoneless behavior, not
|
|
90
|
+
// something this swap changes. A genuine child `@Component` boundary still protects a
|
|
91
|
+
// sibling branch from an unrelated press.
|
|
100
92
|
...provideZonelessChangeDetectionInternal(),
|
|
101
|
-
// Angular's
|
|
102
|
-
//
|
|
103
|
-
//
|
|
104
|
-
//
|
|
105
|
-
//
|
|
106
|
-
//
|
|
107
|
-
// propagated out of a bare Timeout callback uncaught (nothing above it in the stack to
|
|
108
|
-
// catch it), i.e. any async tick() exception, anywhere in the app, crashed hard instead
|
|
109
|
-
// of being reported. Providing the default `ErrorHandler` (same one bootstrapApplication
|
|
110
|
-
// ships) restores the intended behavior: `console.error('ERROR', e)` and keep running.
|
|
93
|
+
// Angular's INTERNAL_APPLICATION_ERROR_HANDLER reports a tick() exception via
|
|
94
|
+
// `injector.get(ErrorHandler)`; a normal `bootstrapApplication` registers that token by
|
|
95
|
+
// default, but our from-scratch environment injector never did, so the lookup itself threw
|
|
96
|
+
// NG0201 and replaced the real error with "No provider found for ErrorHandler" — any async
|
|
97
|
+
// tick() exception crashed hard, uncaught, instead of being reported. Providing the
|
|
98
|
+
// default `ErrorHandler` restores `console.error('ERROR', e)` and keep running.
|
|
111
99
|
{ provide: ErrorHandler, useClass: ErrorHandler },
|
|
112
100
|
ColorSchemeService,
|
|
113
101
|
WindowDimensionsService,
|
|
@@ -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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"}
|
|
@@ -21,10 +21,10 @@ export class ColorSchemeService {
|
|
|
21
21
|
subscription.remove();
|
|
22
22
|
});
|
|
23
23
|
}
|
|
24
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.
|
|
25
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "22.0.
|
|
24
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: ColorSchemeService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
25
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: ColorSchemeService, providedIn: 'root' });
|
|
26
26
|
}
|
|
27
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.
|
|
27
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: ColorSchemeService, decorators: [{
|
|
28
28
|
type: Injectable,
|
|
29
29
|
args: [{ providedIn: 'root' }]
|
|
30
30
|
}], ctorParameters: () => [] });
|
|
@@ -32,10 +32,10 @@ export class WindowDimensionsService {
|
|
|
32
32
|
subscription.remove();
|
|
33
33
|
});
|
|
34
34
|
}
|
|
35
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.
|
|
36
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "22.0.
|
|
35
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: WindowDimensionsService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
36
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: WindowDimensionsService, providedIn: 'root' });
|
|
37
37
|
}
|
|
38
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.
|
|
38
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: WindowDimensionsService, decorators: [{
|
|
39
39
|
type: Injectable,
|
|
40
40
|
args: [{ providedIn: 'root' }]
|
|
41
41
|
}], ctorParameters: () => [] });
|