@symbiote-native/angular 3.2.0 → 3.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (57) hide show
  1. package/babel-register-composed.cjs +1 -0
  2. package/build/angular/components/checkbox-props.d.ts +2 -0
  3. package/build/angular/components/checkbox-props.js +2 -0
  4. package/build/angular/components/checkbox-props.js.map +1 -0
  5. package/build/angular/components.d.ts +1 -0
  6. package/build/angular/components.js.map +1 -1
  7. package/build/angular/descriptor-to-angular/descriptor-host.d.ts +8 -0
  8. package/build/angular/descriptor-to-angular/descriptor-host.js +38 -0
  9. package/build/angular/descriptor-to-angular/descriptor-host.js.map +1 -0
  10. package/build/angular/descriptor-to-angular/index.d.ts +1 -0
  11. package/build/angular/descriptor-to-angular/index.js +4 -0
  12. package/build/angular/descriptor-to-angular/index.js.map +1 -1
  13. package/build/angular/element-base.d.ts +153 -0
  14. package/build/angular/element-base.js +272 -0
  15. package/build/angular/element-base.js.map +1 -0
  16. package/build/angular/elements-controls.d.ts +165 -0
  17. package/build/angular/elements-controls.js +382 -0
  18. package/build/angular/elements-controls.js.map +1 -0
  19. package/build/angular/elements-layout.d.ts +122 -0
  20. package/build/angular/elements-layout.js +242 -0
  21. package/build/angular/elements-layout.js.map +1 -0
  22. package/build/angular/elements-press.d.ts +96 -0
  23. package/build/angular/elements-press.js +227 -0
  24. package/build/angular/elements-press.js.map +1 -0
  25. package/build/angular/elements.d.ts +6 -516
  26. package/build/angular/elements.js +8 -1091
  27. package/build/angular/elements.js.map +1 -1
  28. package/build/angular/host-instance/index.d.ts +2 -0
  29. package/build/angular/host-instance/index.js +4 -4
  30. package/build/angular/host-instance/index.js.map +1 -1
  31. package/build/angular/index.d.ts +5 -4
  32. package/build/angular/index.js +4 -3
  33. package/build/angular/index.js.map +1 -1
  34. package/build/angular/native-view-base.d.ts +10 -2
  35. package/build/angular/native-view-base.js +23 -2
  36. package/build/angular/native-view-base.js.map +1 -1
  37. package/build/angular/services/index.d.ts +1 -0
  38. package/build/angular/services/index.js +1 -0
  39. package/build/angular/services/index.js.map +1 -1
  40. package/build/angular/services/inject-event.d.ts +6 -0
  41. package/build/angular/services/inject-event.js +24 -0
  42. package/build/angular/services/inject-event.js.map +1 -0
  43. package/package.json +6 -6
  44. package/src/components/checkbox-props.ts +12 -0
  45. package/src/components.ts +1 -0
  46. package/src/descriptor-to-angular/descriptor-host.ts +27 -0
  47. package/src/descriptor-to-angular/index.ts +5 -0
  48. package/src/element-base.ts +272 -0
  49. package/src/elements-controls.ts +282 -0
  50. package/src/elements-layout.ts +141 -0
  51. package/src/elements-press.ts +145 -0
  52. package/src/elements.ts +73 -788
  53. package/src/host-instance/index.ts +4 -4
  54. package/src/index.ts +6 -1
  55. package/src/native-view-base.ts +37 -2
  56. package/src/services/index.ts +1 -0
  57. package/src/services/inject-event.ts +52 -0
@@ -0,0 +1,165 @@
1
+ import { EventEmitter } from '@angular/core';
2
+ import type { OnDestroy } from '@angular/core';
3
+ import { type ControlValueAccessor } from '@angular/forms';
4
+ import type { IActivityIndicatorProps, IInputAccessoryViewViewProps, IModalViewProps, ISwitchProps, ITextInputProps } from '@symbiote-native/components';
5
+ import type { IStickyHeaderElementProps } from './element-props';
6
+ import type { IAngularRefreshControlProps } from './components/refresh-control-props';
7
+ import { ReadBackElement, SymbioteElement, ValueChangeElement } from './element-base';
8
+ import * as i0 from "@angular/core";
9
+ export declare class TextInputElement extends ValueChangeElement {
10
+ value?: ITextInputProps['value'];
11
+ defaultValue?: ITextInputProps['defaultValue'];
12
+ placeholder?: ITextInputProps['placeholder'];
13
+ placeholderTextColor?: ITextInputProps['placeholderTextColor'];
14
+ multiline?: ITextInputProps['multiline'];
15
+ numberOfLines?: ITextInputProps['numberOfLines'];
16
+ maxLength?: ITextInputProps['maxLength'];
17
+ editable?: ITextInputProps['editable'];
18
+ readOnly?: ITextInputProps['readOnly'];
19
+ autoFocus?: ITextInputProps['autoFocus'];
20
+ autoCapitalize?: ITextInputProps['autoCapitalize'];
21
+ autoComplete?: ITextInputProps['autoComplete'];
22
+ autoCorrect?: ITextInputProps['autoCorrect'];
23
+ blurOnSubmit?: ITextInputProps['blurOnSubmit'];
24
+ submitBehavior?: ITextInputProps['submitBehavior'];
25
+ cursorColor?: ITextInputProps['cursorColor'];
26
+ enterKeyHint?: ITextInputProps['enterKeyHint'];
27
+ returnKeyType?: ITextInputProps['returnKeyType'];
28
+ inputMode?: ITextInputProps['inputMode'];
29
+ keyboardType?: ITextInputProps['keyboardType'];
30
+ inputAccessoryViewID?: ITextInputProps['inputAccessoryViewID'];
31
+ scrollEnabled?: ITextInputProps['scrollEnabled'];
32
+ secureTextEntry?: ITextInputProps['secureTextEntry'];
33
+ selectTextOnFocus?: ITextInputProps['selectTextOnFocus'];
34
+ selection?: ITextInputProps['selection'];
35
+ selectionColor?: ITextInputProps['selectionColor'];
36
+ selectionHandleColor?: ITextInputProps['selectionHandleColor'];
37
+ showSoftInputOnFocus?: ITextInputProps['showSoftInputOnFocus'];
38
+ textAlign?: ITextInputProps['textAlign'];
39
+ textContentType?: ITextInputProps['textContentType'];
40
+ underlineColorAndroid?: ITextInputProps['underlineColorAndroid'];
41
+ onValueChange?: ITextInputProps['onValueChange'];
42
+ onChangeText?: ITextInputProps['onChangeText'];
43
+ onContentSizeChange?: ITextInputProps['onContentSizeChange'];
44
+ onEndEditing?: ITextInputProps['onEndEditing'];
45
+ onKeyPress?: ITextInputProps['onKeyPress'];
46
+ onSelectionChange?: ITextInputProps['onSelectionChange'];
47
+ onSubmitEditing?: ITextInputProps['onSubmitEditing'];
48
+ readonly valueChange: EventEmitter<string>;
49
+ protected hasValueSubscriber(): boolean;
50
+ protected emitValue(value: unknown): void;
51
+ static ɵfac: i0.ɵɵFactoryDeclaration<TextInputElement, never>;
52
+ static ɵdir: i0.ɵɵDirectiveDeclaration<TextInputElement, "text-input", never, { "value": { "alias": "value"; "required": false; }; "defaultValue": { "alias": "defaultValue"; "required": false; }; "placeholder": { "alias": "placeholder"; "required": false; }; "placeholderTextColor": { "alias": "placeholderTextColor"; "required": false; }; "multiline": { "alias": "multiline"; "required": false; }; "numberOfLines": { "alias": "numberOfLines"; "required": false; }; "maxLength": { "alias": "maxLength"; "required": false; }; "editable": { "alias": "editable"; "required": false; }; "readOnly": { "alias": "readOnly"; "required": false; }; "autoFocus": { "alias": "autoFocus"; "required": false; }; "autoCapitalize": { "alias": "autoCapitalize"; "required": false; }; "autoComplete": { "alias": "autoComplete"; "required": false; }; "autoCorrect": { "alias": "autoCorrect"; "required": false; }; "blurOnSubmit": { "alias": "blurOnSubmit"; "required": false; }; "submitBehavior": { "alias": "submitBehavior"; "required": false; }; "cursorColor": { "alias": "cursorColor"; "required": false; }; "enterKeyHint": { "alias": "enterKeyHint"; "required": false; }; "returnKeyType": { "alias": "returnKeyType"; "required": false; }; "inputMode": { "alias": "inputMode"; "required": false; }; "keyboardType": { "alias": "keyboardType"; "required": false; }; "inputAccessoryViewID": { "alias": "inputAccessoryViewID"; "required": false; }; "scrollEnabled": { "alias": "scrollEnabled"; "required": false; }; "secureTextEntry": { "alias": "secureTextEntry"; "required": false; }; "selectTextOnFocus": { "alias": "selectTextOnFocus"; "required": false; }; "selection": { "alias": "selection"; "required": false; }; "selectionColor": { "alias": "selectionColor"; "required": false; }; "selectionHandleColor": { "alias": "selectionHandleColor"; "required": false; }; "showSoftInputOnFocus": { "alias": "showSoftInputOnFocus"; "required": false; }; "textAlign": { "alias": "textAlign"; "required": false; }; "textContentType": { "alias": "textContentType"; "required": false; }; "underlineColorAndroid": { "alias": "underlineColorAndroid"; "required": false; }; "onValueChange": { "alias": "onValueChange"; "required": false; }; "onChangeText": { "alias": "onChangeText"; "required": false; }; "onContentSizeChange": { "alias": "onContentSizeChange"; "required": false; }; "onEndEditing": { "alias": "onEndEditing"; "required": false; }; "onKeyPress": { "alias": "onKeyPress"; "required": false; }; "onSelectionChange": { "alias": "onSelectionChange"; "required": false; }; "onSubmitEditing": { "alias": "onSubmitEditing"; "required": false; }; }, { "valueChange": "valueChange"; }, never, never, true, never>;
53
+ }
54
+ export declare class MultilineTextInputElement extends TextInputElement {
55
+ static ɵfac: i0.ɵɵFactoryDeclaration<MultilineTextInputElement, never>;
56
+ static ɵdir: i0.ɵɵDirectiveDeclaration<MultilineTextInputElement, "text-input-multiline", never, {}, {}, never, never, true, never>;
57
+ }
58
+ export declare class SwitchElement extends ValueChangeElement {
59
+ value?: ISwitchProps['value'];
60
+ disabled?: ISwitchProps['disabled'];
61
+ trackColor?: ISwitchProps['trackColor'];
62
+ thumbColor?: ISwitchProps['thumbColor'];
63
+ ios_backgroundColor?: ISwitchProps['ios_backgroundColor'];
64
+ onValueChange?: ISwitchProps['onValueChange'];
65
+ readonly valueChange: EventEmitter<NonNullable<boolean | undefined>>;
66
+ protected hasValueSubscriber(): boolean;
67
+ protected emitValue(value: unknown): void;
68
+ static ɵfac: i0.ɵɵFactoryDeclaration<SwitchElement, never>;
69
+ static ɵdir: i0.ɵɵDirectiveDeclaration<SwitchElement, "switch, symbiote-switch", never, { "value": { "alias": "value"; "required": false; }; "disabled": { "alias": "disabled"; "required": false; }; "trackColor": { "alias": "trackColor"; "required": false; }; "thumbColor": { "alias": "thumbColor"; "required": false; }; "ios_backgroundColor": { "alias": "ios_backgroundColor"; "required": false; }; "onValueChange": { "alias": "onValueChange"; "required": false; }; }, { "valueChange": "valueChange"; }, never, never, true, never>;
70
+ }
71
+ /**
72
+ * `[(ngModel)]` / `formControlName` on a `<text-input>` or a `<switch>`.
73
+ *
74
+ * The wrappers provided `NG_VALUE_ACCESSOR` themselves; a tag has no class for @angular/forms to
75
+ * call into, so the accessor moves onto a directive of its own rather than being dropped — the
76
+ * shape Angular's own `DefaultValueAccessor` takes for `<input>`. Providing it unconditionally is
77
+ * safe: @angular/forms looks the accessor up only when an `ngModel` / `formControl*` directive sits
78
+ * on the SAME element, so a plain `<switch [(value)]>` never reaches it.
79
+ *
80
+ * Everything below goes through `Renderer2`, which is the adapter's own — `setProperty` lands in
81
+ * `routeProp` and `listen('valueChange')` is already unwrapped to a bare value there, so this
82
+ * directive holds no fold of its own.
83
+ */
84
+ declare abstract class SymbioteValueAccessor implements ControlValueAccessor, OnDestroy {
85
+ private readonly renderer;
86
+ private readonly host;
87
+ private unlisten?;
88
+ protected abstract writeDisabled(isDisabled: boolean): void;
89
+ protected setProp(name: string, value: unknown): void;
90
+ writeValue(value: unknown): void;
91
+ registerOnChange(fn: (value: unknown) => void): void;
92
+ registerOnTouched(fn: () => void): void;
93
+ setDisabledState(isDisabled: boolean): void;
94
+ ngOnDestroy(): void;
95
+ static ɵfac: i0.ɵɵFactoryDeclaration<SymbioteValueAccessor, never>;
96
+ static ɵdir: i0.ɵɵDirectiveDeclaration<SymbioteValueAccessor, never, never, {}, {}, never, never, true, never>;
97
+ }
98
+ export declare class TextInputValueAccessor extends SymbioteValueAccessor {
99
+ protected writeDisabled(isDisabled: boolean): void;
100
+ static ɵfac: i0.ɵɵFactoryDeclaration<TextInputValueAccessor, never>;
101
+ static ɵdir: i0.ɵɵDirectiveDeclaration<TextInputValueAccessor, "text-input[ngModel], text-input[formControl], text-input[formControlName], text-input-multiline[ngModel], text-input-multiline[formControl], text-input-multiline[formControlName]", never, {}, {}, never, never, true, never>;
102
+ }
103
+ export declare class SwitchValueAccessor extends SymbioteValueAccessor {
104
+ protected writeDisabled(isDisabled: boolean): void;
105
+ static ɵfac: i0.ɵɵFactoryDeclaration<SwitchValueAccessor, never>;
106
+ static ɵdir: i0.ɵɵDirectiveDeclaration<SwitchValueAccessor, "switch[ngModel], switch[formControl], switch[formControlName]", never, {}, {}, never, never, true, never>;
107
+ }
108
+ export declare class ActivityIndicatorElement extends SymbioteElement {
109
+ animating?: IActivityIndicatorProps['animating'];
110
+ color?: IActivityIndicatorProps['color'];
111
+ size?: IActivityIndicatorProps['size'];
112
+ hidesWhenStopped?: IActivityIndicatorProps['hidesWhenStopped'];
113
+ static ɵfac: i0.ɵɵFactoryDeclaration<ActivityIndicatorElement, never>;
114
+ static ɵdir: i0.ɵɵDirectiveDeclaration<ActivityIndicatorElement, "activity-indicator", never, { "animating": { "alias": "animating"; "required": false; }; "color": { "alias": "color"; "required": false; }; "size": { "alias": "size"; "required": false; }; "hidesWhenStopped": { "alias": "hidesWhenStopped"; "required": false; }; }, {}, never, never, true, never>;
115
+ }
116
+ export declare class ActivityIndicatorSpinnerElement extends ActivityIndicatorElement {
117
+ static ɵfac: i0.ɵɵFactoryDeclaration<ActivityIndicatorSpinnerElement, never>;
118
+ static ɵdir: i0.ɵɵDirectiveDeclaration<ActivityIndicatorSpinnerElement, "activity-indicator-spinner", never, {}, {}, never, never, true, never>;
119
+ }
120
+ export declare class SafeAreaViewElement extends SymbioteElement {
121
+ static ɵfac: i0.ɵɵFactoryDeclaration<SafeAreaViewElement, never>;
122
+ static ɵdir: i0.ɵɵDirectiveDeclaration<SafeAreaViewElement, "safe-area-view", never, {}, {}, never, never, true, never>;
123
+ }
124
+ export declare class ModalElement extends SymbioteElement {
125
+ visible?: IModalViewProps['visible'];
126
+ transparent?: IModalViewProps['transparent'];
127
+ animationType?: IModalViewProps['animationType'];
128
+ presentationStyle?: IModalViewProps['presentationStyle'];
129
+ supportedOrientations?: IModalViewProps['supportedOrientations'];
130
+ hardwareAccelerated?: IModalViewProps['hardwareAccelerated'];
131
+ statusBarTranslucent?: IModalViewProps['statusBarTranslucent'];
132
+ navigationBarTranslucent?: IModalViewProps['navigationBarTranslucent'];
133
+ allowSwipeDismissal?: IModalViewProps['allowSwipeDismissal'];
134
+ backdropColor?: IModalViewProps['backdropColor'];
135
+ static ɵfac: i0.ɵɵFactoryDeclaration<ModalElement, never>;
136
+ static ɵdir: i0.ɵɵDirectiveDeclaration<ModalElement, "modal, symbiote-modal", never, { "visible": { "alias": "visible"; "required": false; }; "transparent": { "alias": "transparent"; "required": false; }; "animationType": { "alias": "animationType"; "required": false; }; "presentationStyle": { "alias": "presentationStyle"; "required": false; }; "supportedOrientations": { "alias": "supportedOrientations"; "required": false; }; "hardwareAccelerated": { "alias": "hardwareAccelerated"; "required": false; }; "statusBarTranslucent": { "alias": "statusBarTranslucent"; "required": false; }; "navigationBarTranslucent": { "alias": "navigationBarTranslucent"; "required": false; }; "allowSwipeDismissal": { "alias": "allowSwipeDismissal"; "required": false; }; "backdropColor": { "alias": "backdropColor"; "required": false; }; }, {}, never, never, true, never>;
137
+ }
138
+ export declare class RefreshControlElement extends ReadBackElement {
139
+ refreshing?: IAngularRefreshControlProps['refreshing'];
140
+ enabled?: IAngularRefreshControlProps['enabled'];
141
+ colors?: IAngularRefreshControlProps['colors'];
142
+ tintColor?: IAngularRefreshControlProps['tintColor'];
143
+ title?: IAngularRefreshControlProps['title'];
144
+ titleColor?: IAngularRefreshControlProps['titleColor'];
145
+ size?: IAngularRefreshControlProps['size'];
146
+ progressBackgroundColor?: IAngularRefreshControlProps['progressBackgroundColor'];
147
+ progressViewOffset?: IAngularRefreshControlProps['progressViewOffset'];
148
+ onRefresh?: IAngularRefreshControlProps['onRefresh'];
149
+ static ɵfac: i0.ɵɵFactoryDeclaration<RefreshControlElement, never>;
150
+ static ɵdir: i0.ɵɵDirectiveDeclaration<RefreshControlElement, "refresh-control", never, { "refreshing": { "alias": "refreshing"; "required": false; }; "enabled": { "alias": "enabled"; "required": false; }; "colors": { "alias": "colors"; "required": false; }; "tintColor": { "alias": "tintColor"; "required": false; }; "title": { "alias": "title"; "required": false; }; "titleColor": { "alias": "titleColor"; "required": false; }; "size": { "alias": "size"; "required": false; }; "progressBackgroundColor": { "alias": "progressBackgroundColor"; "required": false; }; "progressViewOffset": { "alias": "progressViewOffset"; "required": false; }; "onRefresh": { "alias": "onRefresh"; "required": false; }; }, {}, never, never, true, never>;
151
+ }
152
+ export declare class StickyHeaderElement extends SymbioteElement {
153
+ inverted?: IStickyHeaderElementProps['inverted'];
154
+ nextHeaderLayoutY?: IStickyHeaderElementProps['nextHeaderLayoutY'];
155
+ scrollAnimatedValue?: IStickyHeaderElementProps['scrollAnimatedValue'];
156
+ scrollViewHeight?: IStickyHeaderElementProps['scrollViewHeight'];
157
+ static ɵfac: i0.ɵɵFactoryDeclaration<StickyHeaderElement, never>;
158
+ static ɵdir: i0.ɵɵDirectiveDeclaration<StickyHeaderElement, "sticky-header", never, { "inverted": { "alias": "inverted"; "required": false; }; "nextHeaderLayoutY": { "alias": "nextHeaderLayoutY"; "required": false; }; "scrollAnimatedValue": { "alias": "scrollAnimatedValue"; "required": false; }; "scrollViewHeight": { "alias": "scrollViewHeight"; "required": false; }; }, {}, never, never, true, never>;
159
+ }
160
+ export declare class InputAccessoryViewElement extends SymbioteElement {
161
+ backgroundColor?: IInputAccessoryViewViewProps['backgroundColor'];
162
+ static ɵfac: i0.ɵɵFactoryDeclaration<InputAccessoryViewElement, never>;
163
+ static ɵdir: i0.ɵɵDirectiveDeclaration<InputAccessoryViewElement, "input-accessory-view", never, { "backgroundColor": { "alias": "backgroundColor"; "required": false; }; }, {}, never, never, true, never>;
164
+ }
165
+ export {};
@@ -0,0 +1,382 @@
1
+ import { Directive, ElementRef, EventEmitter, Input, Output, Renderer2, forwardRef, inject, } from '@angular/core';
2
+ import { NG_VALUE_ACCESSOR } from '@angular/forms';
3
+ import { VALUE_CHANGE_EVENT } from './renderer/value-change';
4
+ import { ReadBackElement, SymbioteElement, ValueChangeElement, } from './element-base';
5
+ import * as i0 from "@angular/core";
6
+ export class TextInputElement extends ValueChangeElement {
7
+ constructor() {
8
+ super(...arguments);
9
+ // NonNullable, not the prop type: `[(value)]="name"` binds a `string`, and an emitter that can
10
+ // also emit `undefined` fails the two-way assignability check ngtsc runs on the event half.
11
+ this.valueChange = new EventEmitter();
12
+ }
13
+ hasValueSubscriber() {
14
+ return this.valueChange.observed;
15
+ }
16
+ emitValue(value) {
17
+ if (typeof value === 'string')
18
+ this.valueChange.emit(value);
19
+ }
20
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: TextInputElement, deps: null, target: i0.ɵɵFactoryTarget.Directive }); }
21
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "22.0.8", type: TextInputElement, isStandalone: true, selector: "text-input", inputs: { value: "value", defaultValue: "defaultValue", placeholder: "placeholder", placeholderTextColor: "placeholderTextColor", multiline: "multiline", numberOfLines: "numberOfLines", maxLength: "maxLength", editable: "editable", readOnly: "readOnly", autoFocus: "autoFocus", autoCapitalize: "autoCapitalize", autoComplete: "autoComplete", autoCorrect: "autoCorrect", blurOnSubmit: "blurOnSubmit", submitBehavior: "submitBehavior", cursorColor: "cursorColor", enterKeyHint: "enterKeyHint", returnKeyType: "returnKeyType", inputMode: "inputMode", keyboardType: "keyboardType", inputAccessoryViewID: "inputAccessoryViewID", scrollEnabled: "scrollEnabled", secureTextEntry: "secureTextEntry", selectTextOnFocus: "selectTextOnFocus", selection: "selection", selectionColor: "selectionColor", selectionHandleColor: "selectionHandleColor", showSoftInputOnFocus: "showSoftInputOnFocus", textAlign: "textAlign", textContentType: "textContentType", underlineColorAndroid: "underlineColorAndroid", onValueChange: "onValueChange", onChangeText: "onChangeText", onContentSizeChange: "onContentSizeChange", onEndEditing: "onEndEditing", onKeyPress: "onKeyPress", onSelectionChange: "onSelectionChange", onSubmitEditing: "onSubmitEditing" }, outputs: { valueChange: "valueChange" }, usesInheritance: true, ngImport: i0 }); }
22
+ }
23
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: TextInputElement, decorators: [{
24
+ type: Directive,
25
+ args: [{ selector: 'text-input', standalone: true }]
26
+ }], propDecorators: { value: [{
27
+ type: Input
28
+ }], defaultValue: [{
29
+ type: Input
30
+ }], placeholder: [{
31
+ type: Input
32
+ }], placeholderTextColor: [{
33
+ type: Input
34
+ }], multiline: [{
35
+ type: Input
36
+ }], numberOfLines: [{
37
+ type: Input
38
+ }], maxLength: [{
39
+ type: Input
40
+ }], editable: [{
41
+ type: Input
42
+ }], readOnly: [{
43
+ type: Input
44
+ }], autoFocus: [{
45
+ type: Input
46
+ }], autoCapitalize: [{
47
+ type: Input
48
+ }], autoComplete: [{
49
+ type: Input
50
+ }], autoCorrect: [{
51
+ type: Input
52
+ }], blurOnSubmit: [{
53
+ type: Input
54
+ }], submitBehavior: [{
55
+ type: Input
56
+ }], cursorColor: [{
57
+ type: Input
58
+ }], enterKeyHint: [{
59
+ type: Input
60
+ }], returnKeyType: [{
61
+ type: Input
62
+ }], inputMode: [{
63
+ type: Input
64
+ }], keyboardType: [{
65
+ type: Input
66
+ }], inputAccessoryViewID: [{
67
+ type: Input
68
+ }], scrollEnabled: [{
69
+ type: Input
70
+ }], secureTextEntry: [{
71
+ type: Input
72
+ }], selectTextOnFocus: [{
73
+ type: Input
74
+ }], selection: [{
75
+ type: Input
76
+ }], selectionColor: [{
77
+ type: Input
78
+ }], selectionHandleColor: [{
79
+ type: Input
80
+ }], showSoftInputOnFocus: [{
81
+ type: Input
82
+ }], textAlign: [{
83
+ type: Input
84
+ }], textContentType: [{
85
+ type: Input
86
+ }], underlineColorAndroid: [{
87
+ type: Input
88
+ }], onValueChange: [{
89
+ type: Input
90
+ }], onChangeText: [{
91
+ type: Input
92
+ }], onContentSizeChange: [{
93
+ type: Input
94
+ }], onEndEditing: [{
95
+ type: Input
96
+ }], onKeyPress: [{
97
+ type: Input
98
+ }], onSelectionChange: [{
99
+ type: Input
100
+ }], onSubmitEditing: [{
101
+ type: Input
102
+ }], valueChange: [{
103
+ type: Output
104
+ }] } });
105
+ export class MultilineTextInputElement extends TextInputElement {
106
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: MultilineTextInputElement, deps: null, target: i0.ɵɵFactoryTarget.Directive }); }
107
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "22.0.8", type: MultilineTextInputElement, isStandalone: true, selector: "text-input-multiline", usesInheritance: true, ngImport: i0 }); }
108
+ }
109
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: MultilineTextInputElement, decorators: [{
110
+ type: Directive,
111
+ args: [{ selector: 'text-input-multiline', standalone: true }]
112
+ }] });
113
+ export class SwitchElement extends ValueChangeElement {
114
+ constructor() {
115
+ super(...arguments);
116
+ this.valueChange = new EventEmitter();
117
+ }
118
+ hasValueSubscriber() {
119
+ return this.valueChange.observed;
120
+ }
121
+ emitValue(value) {
122
+ if (typeof value === 'boolean')
123
+ this.valueChange.emit(value);
124
+ }
125
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: SwitchElement, deps: null, target: i0.ɵɵFactoryTarget.Directive }); }
126
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "22.0.8", type: SwitchElement, isStandalone: true, selector: "switch, symbiote-switch", inputs: { value: "value", disabled: "disabled", trackColor: "trackColor", thumbColor: "thumbColor", ios_backgroundColor: "ios_backgroundColor", onValueChange: "onValueChange" }, outputs: { valueChange: "valueChange" }, usesInheritance: true, ngImport: i0 }); }
127
+ }
128
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: SwitchElement, decorators: [{
129
+ type: Directive,
130
+ args: [{ selector: 'switch, symbiote-switch', standalone: true }]
131
+ }], propDecorators: { value: [{
132
+ type: Input
133
+ }], disabled: [{
134
+ type: Input
135
+ }], trackColor: [{
136
+ type: Input
137
+ }], thumbColor: [{
138
+ type: Input
139
+ }], ios_backgroundColor: [{
140
+ type: Input
141
+ }], onValueChange: [{
142
+ type: Input
143
+ }], valueChange: [{
144
+ type: Output
145
+ }] } });
146
+ /**
147
+ * `[(ngModel)]` / `formControlName` on a `<text-input>` or a `<switch>`.
148
+ *
149
+ * The wrappers provided `NG_VALUE_ACCESSOR` themselves; a tag has no class for @angular/forms to
150
+ * call into, so the accessor moves onto a directive of its own rather than being dropped — the
151
+ * shape Angular's own `DefaultValueAccessor` takes for `<input>`. Providing it unconditionally is
152
+ * safe: @angular/forms looks the accessor up only when an `ngModel` / `formControl*` directive sits
153
+ * on the SAME element, so a plain `<switch [(value)]>` never reaches it.
154
+ *
155
+ * Everything below goes through `Renderer2`, which is the adapter's own — `setProperty` lands in
156
+ * `routeProp` and `listen('valueChange')` is already unwrapped to a bare value there, so this
157
+ * directive holds no fold of its own.
158
+ */
159
+ class SymbioteValueAccessor {
160
+ constructor() {
161
+ this.renderer = inject(Renderer2);
162
+ this.host = inject(ElementRef);
163
+ }
164
+ setProp(name, value) {
165
+ this.renderer.setProperty(this.host.nativeElement, name, value);
166
+ }
167
+ writeValue(value) {
168
+ this.setProp('value', value ?? undefined);
169
+ }
170
+ registerOnChange(fn) {
171
+ this.unlisten?.();
172
+ this.unlisten = this.renderer.listen(this.host.nativeElement, VALUE_CHANGE_EVENT, (value) => {
173
+ // THE HALF THE DOM DOES FOR FREE, and without it a controlled input undoes every
174
+ // keystroke. `<text-input>`'s behavior re-commands the native text whenever `props.value`
175
+ // disagrees with what native last reported — that is what makes it controlled — and the
176
+ // read-back flush exists so the app's new value is on the node by the time the commit runs.
177
+ // @angular/forms does not reach the node in that window: `NgModel.ngOnChanges` defers
178
+ // `_updateValue` through `resolvedPromise.then`, so `writeValue` lands a MICROTASK after
179
+ // the flush, and the commit in between still reads the value from before the keystroke.
180
+ //
181
+ // In a browser there is nothing to do here: `input.value` already holds what the user
182
+ // typed. `node.props.value` is the same slot, and nothing else writes it — so the accessor
183
+ // mirrors it, which is the shape rather than a workaround. A later `writeValue` still wins,
184
+ // so an app that transforms or refuses the value keeps doing so, one microtask on.
185
+ //
186
+ // Without this, every character snaps the field back to its mounted text.
187
+ this.setProp('value', value);
188
+ fn(value);
189
+ });
190
+ }
191
+ // Native has no blur-driven "touched" signal distinct from `blur`, and RN's own onBlur is what an
192
+ // app binds — so touched is driven off the same event rather than a second channel.
193
+ registerOnTouched(fn) {
194
+ this.setProp('onBlur', () => fn());
195
+ }
196
+ setDisabledState(isDisabled) {
197
+ this.writeDisabled(isDisabled);
198
+ }
199
+ ngOnDestroy() {
200
+ this.unlisten?.();
201
+ }
202
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: SymbioteValueAccessor, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
203
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "22.0.8", type: SymbioteValueAccessor, isStandalone: true, ngImport: i0 }); }
204
+ }
205
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: SymbioteValueAccessor, decorators: [{
206
+ type: Directive
207
+ }] });
208
+ export class TextInputValueAccessor extends SymbioteValueAccessor {
209
+ writeDisabled(isDisabled) {
210
+ this.setProp('editable', !isDisabled);
211
+ }
212
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: TextInputValueAccessor, deps: null, target: i0.ɵɵFactoryTarget.Directive }); }
213
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "22.0.8", type: TextInputValueAccessor, isStandalone: true, selector: "text-input[ngModel], text-input[formControl], text-input[formControlName], text-input-multiline[ngModel], text-input-multiline[formControl], text-input-multiline[formControlName]", providers: [
214
+ {
215
+ provide: NG_VALUE_ACCESSOR,
216
+ useExisting: forwardRef(() => TextInputValueAccessor),
217
+ multi: true,
218
+ },
219
+ ], usesInheritance: true, ngImport: i0 }); }
220
+ }
221
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: TextInputValueAccessor, decorators: [{
222
+ type: Directive,
223
+ args: [{
224
+ selector: 'text-input[ngModel], text-input[formControl], text-input[formControlName], text-input-multiline[ngModel], text-input-multiline[formControl], text-input-multiline[formControlName]',
225
+ standalone: true,
226
+ providers: [
227
+ {
228
+ provide: NG_VALUE_ACCESSOR,
229
+ useExisting: forwardRef(() => TextInputValueAccessor),
230
+ multi: true,
231
+ },
232
+ ],
233
+ }]
234
+ }] });
235
+ export class SwitchValueAccessor extends SymbioteValueAccessor {
236
+ writeDisabled(isDisabled) {
237
+ this.setProp('disabled', isDisabled);
238
+ }
239
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: SwitchValueAccessor, deps: null, target: i0.ɵɵFactoryTarget.Directive }); }
240
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "22.0.8", type: SwitchValueAccessor, isStandalone: true, selector: "switch[ngModel], switch[formControl], switch[formControlName]", providers: [
241
+ {
242
+ provide: NG_VALUE_ACCESSOR,
243
+ useExisting: forwardRef(() => SwitchValueAccessor),
244
+ multi: true,
245
+ },
246
+ ], usesInheritance: true, ngImport: i0 }); }
247
+ }
248
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: SwitchValueAccessor, decorators: [{
249
+ type: Directive,
250
+ args: [{
251
+ selector: 'switch[ngModel], switch[formControl], switch[formControlName]',
252
+ standalone: true,
253
+ providers: [
254
+ {
255
+ provide: NG_VALUE_ACCESSOR,
256
+ useExisting: forwardRef(() => SwitchValueAccessor),
257
+ multi: true,
258
+ },
259
+ ],
260
+ }]
261
+ }] });
262
+ // The HOST — RN's centering RCTView (ActivityIndicator.js:112), which is the tag an app writes.
263
+ // The four spinner props are declared here because that is where the app writes them; the engine's
264
+ // behavior redirects them onto the spinner it builds underneath (`slotProps`).
265
+ export class ActivityIndicatorElement extends SymbioteElement {
266
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: ActivityIndicatorElement, deps: null, target: i0.ɵɵFactoryTarget.Directive }); }
267
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "22.0.8", type: ActivityIndicatorElement, isStandalone: true, selector: "activity-indicator", inputs: { animating: "animating", color: "color", size: "size", hidesWhenStopped: "hidesWhenStopped" }, usesInheritance: true, ngImport: i0 }); }
268
+ }
269
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: ActivityIndicatorElement, decorators: [{
270
+ type: Directive,
271
+ args: [{ selector: 'activity-indicator', standalone: true }]
272
+ }], propDecorators: { animating: [{
273
+ type: Input
274
+ }], color: [{
275
+ type: Input
276
+ }], size: [{
277
+ type: Input
278
+ }], hidesWhenStopped: [{
279
+ type: Input
280
+ }] } });
281
+ // The native spinner. Built by the behavior's `buildStructure` and by the wrapper's render fn, never
282
+ // written in an app template — declared only so the tag alphabet stays covered, the same as
283
+ // `scroll-content`.
284
+ export class ActivityIndicatorSpinnerElement extends ActivityIndicatorElement {
285
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: ActivityIndicatorSpinnerElement, deps: null, target: i0.ɵɵFactoryTarget.Directive }); }
286
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "22.0.8", type: ActivityIndicatorSpinnerElement, isStandalone: true, selector: "activity-indicator-spinner", usesInheritance: true, ngImport: i0 }); }
287
+ }
288
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: ActivityIndicatorSpinnerElement, decorators: [{
289
+ type: Directive,
290
+ args: [{ selector: 'activity-indicator-spinner', standalone: true }]
291
+ }] });
292
+ export class SafeAreaViewElement extends SymbioteElement {
293
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: SafeAreaViewElement, deps: null, target: i0.ɵɵFactoryTarget.Directive }); }
294
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "22.0.8", type: SafeAreaViewElement, isStandalone: true, selector: "safe-area-view", usesInheritance: true, ngImport: i0 }); }
295
+ }
296
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: SafeAreaViewElement, decorators: [{
297
+ type: Directive,
298
+ args: [{ selector: 'safe-area-view', standalone: true }]
299
+ }] });
300
+ export class ModalElement extends SymbioteElement {
301
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: ModalElement, deps: null, target: i0.ɵɵFactoryTarget.Directive }); }
302
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "22.0.8", type: ModalElement, isStandalone: true, selector: "modal, symbiote-modal", inputs: { visible: "visible", transparent: "transparent", animationType: "animationType", presentationStyle: "presentationStyle", supportedOrientations: "supportedOrientations", hardwareAccelerated: "hardwareAccelerated", statusBarTranslucent: "statusBarTranslucent", navigationBarTranslucent: "navigationBarTranslucent", allowSwipeDismissal: "allowSwipeDismissal", backdropColor: "backdropColor" }, usesInheritance: true, ngImport: i0 }); }
303
+ }
304
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: ModalElement, decorators: [{
305
+ type: Directive,
306
+ args: [{ selector: 'modal, symbiote-modal', standalone: true }]
307
+ }], propDecorators: { visible: [{
308
+ type: Input
309
+ }], transparent: [{
310
+ type: Input
311
+ }], animationType: [{
312
+ type: Input
313
+ }], presentationStyle: [{
314
+ type: Input
315
+ }], supportedOrientations: [{
316
+ type: Input
317
+ }], hardwareAccelerated: [{
318
+ type: Input
319
+ }], statusBarTranslucent: [{
320
+ type: Input
321
+ }], navigationBarTranslucent: [{
322
+ type: Input
323
+ }], allowSwipeDismissal: [{
324
+ type: Input
325
+ }], backdropColor: [{
326
+ type: Input
327
+ }] } });
328
+ export class RefreshControlElement extends ReadBackElement {
329
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: RefreshControlElement, deps: null, target: i0.ɵɵFactoryTarget.Directive }); }
330
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "22.0.8", type: RefreshControlElement, isStandalone: true, selector: "refresh-control", inputs: { refreshing: "refreshing", enabled: "enabled", colors: "colors", tintColor: "tintColor", title: "title", titleColor: "titleColor", size: "size", progressBackgroundColor: "progressBackgroundColor", progressViewOffset: "progressViewOffset", onRefresh: "onRefresh" }, usesInheritance: true, ngImport: i0 }); }
331
+ }
332
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: RefreshControlElement, decorators: [{
333
+ type: Directive,
334
+ args: [{ selector: 'refresh-control', standalone: true }]
335
+ }], propDecorators: { refreshing: [{
336
+ type: Input
337
+ }], enabled: [{
338
+ type: Input
339
+ }], colors: [{
340
+ type: Input
341
+ }], tintColor: [{
342
+ type: Input
343
+ }], title: [{
344
+ type: Input
345
+ }], titleColor: [{
346
+ type: Input
347
+ }], size: [{
348
+ type: Input
349
+ }], progressBackgroundColor: [{
350
+ type: Input
351
+ }], progressViewOffset: [{
352
+ type: Input
353
+ }], onRefresh: [{
354
+ type: Input
355
+ }] } });
356
+ export class StickyHeaderElement extends SymbioteElement {
357
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: StickyHeaderElement, deps: null, target: i0.ɵɵFactoryTarget.Directive }); }
358
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "22.0.8", type: StickyHeaderElement, isStandalone: true, selector: "sticky-header", inputs: { inverted: "inverted", nextHeaderLayoutY: "nextHeaderLayoutY", scrollAnimatedValue: "scrollAnimatedValue", scrollViewHeight: "scrollViewHeight" }, usesInheritance: true, ngImport: i0 }); }
359
+ }
360
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: StickyHeaderElement, decorators: [{
361
+ type: Directive,
362
+ args: [{ selector: 'sticky-header', standalone: true }]
363
+ }], propDecorators: { inverted: [{
364
+ type: Input
365
+ }], nextHeaderLayoutY: [{
366
+ type: Input
367
+ }], scrollAnimatedValue: [{
368
+ type: Input
369
+ }], scrollViewHeight: [{
370
+ type: Input
371
+ }] } });
372
+ export class InputAccessoryViewElement extends SymbioteElement {
373
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: InputAccessoryViewElement, deps: null, target: i0.ɵɵFactoryTarget.Directive }); }
374
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "22.0.8", type: InputAccessoryViewElement, isStandalone: true, selector: "input-accessory-view", inputs: { backgroundColor: "backgroundColor" }, usesInheritance: true, ngImport: i0 }); }
375
+ }
376
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: InputAccessoryViewElement, decorators: [{
377
+ type: Directive,
378
+ args: [{ selector: 'input-accessory-view', standalone: true }]
379
+ }], propDecorators: { backgroundColor: [{
380
+ type: Input
381
+ }] } });
382
+ //# sourceMappingURL=elements-controls.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"elements-controls.js","sourceRoot":"","sources":["../../src/elements-controls.ts"],"names":[],"mappings":"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"}