@ng-native/expo 0.0.1 → 0.1.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 (156) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +413 -1
  3. package/dist/app-info.d.ts +58 -0
  4. package/dist/app-info.js +71 -0
  5. package/dist/app-info.js.map +1 -0
  6. package/dist/apple-sign-in-button.d.ts +16 -0
  7. package/dist/apple-sign-in-button.js +55 -0
  8. package/dist/apple-sign-in-button.js.map +1 -0
  9. package/dist/apple-sign-in.d.ts +68 -0
  10. package/dist/apple-sign-in.js +120 -0
  11. package/dist/apple-sign-in.js.map +1 -0
  12. package/dist/assets.d.ts +24 -0
  13. package/dist/assets.js +47 -0
  14. package/dist/assets.js.map +1 -0
  15. package/dist/background-task.d.ts +66 -0
  16. package/dist/background-task.js +82 -0
  17. package/dist/background-task.js.map +1 -0
  18. package/dist/battery.d.ts +46 -0
  19. package/dist/battery.js +76 -0
  20. package/dist/battery.js.map +1 -0
  21. package/dist/biometrics.d.ts +45 -0
  22. package/dist/biometrics.js +53 -0
  23. package/dist/biometrics.js.map +1 -0
  24. package/dist/brightness.d.ts +38 -0
  25. package/dist/brightness.js +81 -0
  26. package/dist/brightness.js.map +1 -0
  27. package/dist/browser.d.ts +42 -0
  28. package/dist/browser.js +42 -0
  29. package/dist/browser.js.map +1 -0
  30. package/dist/camera.d.ts +48 -0
  31. package/dist/camera.js +59 -0
  32. package/dist/camera.js.map +1 -0
  33. package/dist/clipboard.d.ts +43 -0
  34. package/dist/clipboard.js +60 -0
  35. package/dist/clipboard.js.map +1 -0
  36. package/dist/community-views.d.ts +14 -0
  37. package/dist/community-views.js +76 -0
  38. package/dist/community-views.js.map +1 -0
  39. package/dist/crypto.d.ts +56 -0
  40. package/dist/crypto.js +84 -0
  41. package/dist/crypto.js.map +1 -0
  42. package/dist/database.d.ts +47 -0
  43. package/dist/database.js +108 -0
  44. package/dist/database.js.map +1 -0
  45. package/dist/document-picker.d.ts +34 -0
  46. package/dist/document-picker.js +40 -0
  47. package/dist/document-picker.js.map +1 -0
  48. package/dist/dom-component.d.ts +87 -0
  49. package/dist/dom-component.js +139 -0
  50. package/dist/dom-component.js.map +1 -0
  51. package/dist/expo-image.d.ts +33 -0
  52. package/dist/expo-image.js +57 -0
  53. package/dist/expo-image.js.map +1 -0
  54. package/dist/expo-ui-components.d.ts +327 -0
  55. package/dist/expo-ui-components.js +707 -0
  56. package/dist/expo-ui-components.js.map +1 -0
  57. package/dist/expo-ui.d.ts +46 -0
  58. package/dist/expo-ui.js +128 -0
  59. package/dist/expo-ui.js.map +1 -0
  60. package/dist/file-system.d.ts +63 -0
  61. package/dist/file-system.js +67 -0
  62. package/dist/file-system.js.map +1 -0
  63. package/dist/fonts.d.ts +90 -0
  64. package/dist/fonts.js +118 -0
  65. package/dist/fonts.js.map +1 -0
  66. package/dist/glass.d.ts +33 -0
  67. package/dist/glass.js +72 -0
  68. package/dist/glass.js.map +1 -0
  69. package/dist/haptics.d.ts +49 -0
  70. package/dist/haptics.js +64 -0
  71. package/dist/haptics.js.map +1 -0
  72. package/dist/image-editor.d.ts +62 -0
  73. package/dist/image-editor.js +101 -0
  74. package/dist/image-editor.js.map +1 -0
  75. package/dist/image-picker.d.ts +49 -0
  76. package/dist/image-picker.js +58 -0
  77. package/dist/image-picker.js.map +1 -0
  78. package/dist/index.d.ts +20 -0
  79. package/dist/index.js +21 -0
  80. package/dist/index.js.map +1 -0
  81. package/dist/keep-awake.d.ts +39 -0
  82. package/dist/keep-awake.js +80 -0
  83. package/dist/keep-awake.js.map +1 -0
  84. package/dist/language-model.d.ts +129 -0
  85. package/dist/language-model.js +225 -0
  86. package/dist/language-model.js.map +1 -0
  87. package/dist/locale.d.ts +51 -0
  88. package/dist/locale.js +78 -0
  89. package/dist/locale.js.map +1 -0
  90. package/dist/location.d.ts +68 -0
  91. package/dist/location.js +83 -0
  92. package/dist/location.js.map +1 -0
  93. package/dist/map-view.d.ts +203 -0
  94. package/dist/map-view.js +184 -0
  95. package/dist/map-view.js.map +1 -0
  96. package/dist/media-library.d.ts +103 -0
  97. package/dist/media-library.js +160 -0
  98. package/dist/media-library.js.map +1 -0
  99. package/dist/native-state.d.ts +22 -0
  100. package/dist/native-state.js +43 -0
  101. package/dist/native-state.js.map +1 -0
  102. package/dist/native.d.ts +42 -0
  103. package/dist/native.js +73 -0
  104. package/dist/native.js.map +1 -0
  105. package/dist/network.d.ts +35 -0
  106. package/dist/network.js +60 -0
  107. package/dist/network.js.map +1 -0
  108. package/dist/notifications.d.ts +175 -0
  109. package/dist/notifications.js +296 -0
  110. package/dist/notifications.js.map +1 -0
  111. package/dist/observed.d.ts +37 -0
  112. package/dist/observed.js +55 -0
  113. package/dist/observed.js.map +1 -0
  114. package/dist/orientation.d.ts +35 -0
  115. package/dist/orientation.js +78 -0
  116. package/dist/orientation.js.map +1 -0
  117. package/dist/permissions.d.ts +54 -0
  118. package/dist/permissions.js +72 -0
  119. package/dist/permissions.js.map +1 -0
  120. package/dist/player.d.ts +92 -0
  121. package/dist/player.js +141 -0
  122. package/dist/player.js.map +1 -0
  123. package/dist/register-expo-view.d.ts +55 -0
  124. package/dist/register-expo-view.js +110 -0
  125. package/dist/register-expo-view.js.map +1 -0
  126. package/dist/screen-capture.d.ts +58 -0
  127. package/dist/screen-capture.js +78 -0
  128. package/dist/screen-capture.js.map +1 -0
  129. package/dist/segmented-control.d.ts +32 -0
  130. package/dist/segmented-control.js +55 -0
  131. package/dist/segmented-control.js.map +1 -0
  132. package/dist/sensors.d.ts +85 -0
  133. package/dist/sensors.js +115 -0
  134. package/dist/sensors.js.map +1 -0
  135. package/dist/splash-screen.d.ts +73 -0
  136. package/dist/splash-screen.js +115 -0
  137. package/dist/splash-screen.js.map +1 -0
  138. package/dist/store-review.d.ts +43 -0
  139. package/dist/store-review.js +52 -0
  140. package/dist/store-review.js.map +1 -0
  141. package/dist/store.d.ts +108 -0
  142. package/dist/store.js +247 -0
  143. package/dist/store.js.map +1 -0
  144. package/dist/symbol.d.ts +36 -0
  145. package/dist/symbol.js +69 -0
  146. package/dist/symbol.js.map +1 -0
  147. package/dist/tracking.d.ts +45 -0
  148. package/dist/tracking.js +54 -0
  149. package/dist/tracking.js.map +1 -0
  150. package/dist/transforms.d.ts +2 -0
  151. package/dist/transforms.js +13 -0
  152. package/dist/transforms.js.map +1 -0
  153. package/dist/updates.d.ts +61 -0
  154. package/dist/updates.js +97 -0
  155. package/dist/updates.js.map +1 -0
  156. package/package.json +397 -3
@@ -0,0 +1,707 @@
1
+ /**
2
+ * Typed components for the `@expo/ui` SwiftUI views an app reaches for most.
3
+ *
4
+ * `EXPO_UI_VIEWS` makes every view reachable by name, and a name is all the renderer needs. What a
5
+ * name cannot give is a type: under strict templates an unknown element is an error, and so is
6
+ * each prop on it. These are the same elements, claimed by a component whose inputs carry the
7
+ * props' types and whose host bindings pass each one straight to the node, so nothing changes at
8
+ * runtime. An unset input stays `undefined` and never reaches native.
9
+ *
10
+ * Events are declared as outputs so that `$event` is typed, and are never emitted. Angular binds a
11
+ * template's `(dateChange)` to the output *and* to the element, and it is the element's own event
12
+ * that arrives, once. Emitting from a host listener as well would deliver it twice; a host listener
13
+ * of the same name as the output listens to the output itself and recurses. So subscribe in a
14
+ * template, not to the output in code.
15
+ *
16
+ * Only the views and props an app has needed are here; the rest stay names, as before. Add a view
17
+ * when a template wants it typed, from `@expo/ui`'s own props for it.
18
+ *
19
+ * Still register the names with `registerExpoUiViews`: the component types the element, the
20
+ * registration is what makes it commit as the SwiftUI view.
21
+ */
22
+ import { Component, DestroyRef, ElementRef, booleanAttribute, computed, inject, input, model, output, } from '@angular/core';
23
+ import { HostEngine, nativePlatform, } from '@ng-native/fabric';
24
+ import { optionalBoolean, optionalNumber } from "./transforms.js";
25
+ import * as i0 from "@angular/core";
26
+ /**
27
+ * The bridge from Yoga's layout to SwiftUI's; every other `ui-*` view goes inside one.
28
+ * `matchContents` sizes the host to the SwiftUI content rather than the other way round, on both
29
+ * axes or on the ones named. Native reads a flag per axis, which is what this splits it into, as
30
+ * `@expo/ui`'s own `Host` does: without them the host has no size of its own, and the control
31
+ * drawn in it spills outside it, where it can be seen but not touched or read by VoiceOver.
32
+ */
33
+ export class UiHost {
34
+ matchContents = input(/* @ts-ignore */
35
+ ...(ngDevMode ? [undefined, { debugName: "matchContents" }] : /* istanbul ignore next */ []));
36
+ matchVertical = computed(() => {
37
+ const match = this.matchContents();
38
+ return typeof match === 'object' ? match.vertical : match;
39
+ }, /* @ts-ignore */
40
+ ...(ngDevMode ? [{ debugName: "matchVertical" }] : /* istanbul ignore next */ []));
41
+ matchHorizontal = computed(() => {
42
+ const match = this.matchContents();
43
+ return typeof match === 'object' ? match.horizontal : match;
44
+ }, /* @ts-ignore */
45
+ ...(ngDevMode ? [{ debugName: "matchHorizontal" }] : /* istanbul ignore next */ []));
46
+ ignoreSafeArea = input(/* @ts-ignore */
47
+ ...(ngDevMode ? [undefined, { debugName: "ignoreSafeArea" }] : /* istanbul ignore next */ []));
48
+ useViewportSizeMeasurement = input(undefined, { ...(ngDevMode ? { debugName: "useViewportSizeMeasurement" } : /* istanbul ignore next */ {}), transform: optionalBoolean });
49
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.2.0", ngImport: i0, type: UiHost, deps: [], target: i0.ɵɵFactoryTarget.Component });
50
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "22.2.0", type: UiHost, isStandalone: true, selector: "ui-host", inputs: { matchContents: { classPropertyName: "matchContents", publicName: "matchContents", isSignal: true, isRequired: false, transformFunction: null }, ignoreSafeArea: { classPropertyName: "ignoreSafeArea", publicName: "ignoreSafeArea", isSignal: true, isRequired: false, transformFunction: null }, useViewportSizeMeasurement: { classPropertyName: "useViewportSizeMeasurement", publicName: "useViewportSizeMeasurement", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "matchContentsVertical": "matchVertical()", "matchContentsHorizontal": "matchHorizontal()", "ignoreSafeArea": "ignoreSafeArea()", "useViewportSizeMeasurement": "useViewportSizeMeasurement()" } }, ngImport: i0, template: '<ng-content />', isInline: true });
51
+ }
52
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.2.0", ngImport: i0, type: UiHost, decorators: [{
53
+ type: Component,
54
+ args: [{
55
+ selector: 'ui-host',
56
+ template: '<ng-content />',
57
+ host: {
58
+ '[matchContentsVertical]': 'matchVertical()',
59
+ '[matchContentsHorizontal]': 'matchHorizontal()',
60
+ '[ignoreSafeArea]': 'ignoreSafeArea()',
61
+ '[useViewportSizeMeasurement]': 'useViewportSizeMeasurement()',
62
+ },
63
+ }]
64
+ }], propDecorators: { matchContents: [{ type: i0.Input, args: [{ isSignal: true, alias: "matchContents", required: false }] }], ignoreSafeArea: [{ type: i0.Input, args: [{ isSignal: true, alias: "ignoreSafeArea", required: false }] }], useViewportSizeMeasurement: [{ type: i0.Input, args: [{ isSignal: true, alias: "useViewportSizeMeasurement", required: false }] }] } });
65
+ /** A SwiftUI `Menu`. Its trigger is the `label` or a `<ui-slot name="label">`; its items are children. */
66
+ export class UiMenu {
67
+ label = input(/* @ts-ignore */
68
+ ...(ngDevMode ? [undefined, { debugName: "label" }] : /* istanbul ignore next */ []));
69
+ /** An SF Symbol name. */
70
+ systemImage = input(/* @ts-ignore */
71
+ ...(ngDevMode ? [undefined, { debugName: "systemImage" }] : /* istanbul ignore next */ []));
72
+ accessibilityLabel = input(/* @ts-ignore */
73
+ ...(ngDevMode ? [undefined, { debugName: "accessibilityLabel" }] : /* istanbul ignore next */ []));
74
+ modifiers = input(/* @ts-ignore */
75
+ ...(ngDevMode ? [undefined, { debugName: "modifiers" }] : /* istanbul ignore next */ []));
76
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.2.0", ngImport: i0, type: UiMenu, deps: [], target: i0.ɵɵFactoryTarget.Component });
77
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "22.2.0", type: UiMenu, isStandalone: true, selector: "ui-menu", inputs: { label: { classPropertyName: "label", publicName: "label", isSignal: true, isRequired: false, transformFunction: null }, systemImage: { classPropertyName: "systemImage", publicName: "systemImage", isSignal: true, isRequired: false, transformFunction: null }, accessibilityLabel: { classPropertyName: "accessibilityLabel", publicName: "accessibilityLabel", isSignal: true, isRequired: false, transformFunction: null }, modifiers: { classPropertyName: "modifiers", publicName: "modifiers", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "label": "label()", "systemImage": "systemImage()", "accessibilityLabel": "accessibilityLabel()", "modifiers": "modifiers()" } }, ngImport: i0, template: '<ng-content />', isInline: true });
78
+ }
79
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.2.0", ngImport: i0, type: UiMenu, decorators: [{
80
+ type: Component,
81
+ args: [{
82
+ selector: 'ui-menu',
83
+ template: '<ng-content />',
84
+ host: {
85
+ '[label]': 'label()',
86
+ '[systemImage]': 'systemImage()',
87
+ '[accessibilityLabel]': 'accessibilityLabel()',
88
+ '[modifiers]': 'modifiers()',
89
+ },
90
+ }]
91
+ }], propDecorators: { label: [{ type: i0.Input, args: [{ isSignal: true, alias: "label", required: false }] }], systemImage: [{ type: i0.Input, args: [{ isSignal: true, alias: "systemImage", required: false }] }], accessibilityLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "accessibilityLabel", required: false }] }], modifiers: [{ type: i0.Input, args: [{ isSignal: true, alias: "modifiers", required: false }] }] } });
92
+ /** A SwiftUI `Button`, as a menu item or on its own. */
93
+ export class UiButton {
94
+ label = input(/* @ts-ignore */
95
+ ...(ngDevMode ? [undefined, { debugName: "label" }] : /* istanbul ignore next */ []));
96
+ /** An SF Symbol name. */
97
+ systemImage = input(/* @ts-ignore */
98
+ ...(ngDevMode ? [undefined, { debugName: "systemImage" }] : /* istanbul ignore next */ []));
99
+ role = input(/* @ts-ignore */
100
+ ...(ngDevMode ? [undefined, { debugName: "role" }] : /* istanbul ignore next */ []));
101
+ modifiers = input(/* @ts-ignore */
102
+ ...(ngDevMode ? [undefined, { debugName: "modifiers" }] : /* istanbul ignore next */ []));
103
+ buttonPress = output();
104
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.2.0", ngImport: i0, type: UiButton, deps: [], target: i0.ɵɵFactoryTarget.Component });
105
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "22.2.0", type: UiButton, isStandalone: true, selector: "ui-button", inputs: { label: { classPropertyName: "label", publicName: "label", isSignal: true, isRequired: false, transformFunction: null }, systemImage: { classPropertyName: "systemImage", publicName: "systemImage", isSignal: true, isRequired: false, transformFunction: null }, role: { classPropertyName: "role", publicName: "role", isSignal: true, isRequired: false, transformFunction: null }, modifiers: { classPropertyName: "modifiers", publicName: "modifiers", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { buttonPress: "buttonPress" }, host: { properties: { "label": "label()", "systemImage": "systemImage()", "role": "role()", "modifiers": "modifiers()" } }, ngImport: i0, template: '<ng-content />', isInline: true });
106
+ }
107
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.2.0", ngImport: i0, type: UiButton, decorators: [{
108
+ type: Component,
109
+ args: [{
110
+ selector: 'ui-button',
111
+ template: '<ng-content />',
112
+ host: {
113
+ '[label]': 'label()',
114
+ '[systemImage]': 'systemImage()',
115
+ '[role]': 'role()',
116
+ '[modifiers]': 'modifiers()',
117
+ },
118
+ }]
119
+ }], propDecorators: { label: [{ type: i0.Input, args: [{ isSignal: true, alias: "label", required: false }] }], systemImage: [{ type: i0.Input, args: [{ isSignal: true, alias: "systemImage", required: false }] }], role: [{ type: i0.Input, args: [{ isSignal: true, alias: "role", required: false }] }], modifiers: [{ type: i0.Input, args: [{ isSignal: true, alias: "modifiers", required: false }] }], buttonPress: [{ type: i0.Output, args: ["buttonPress"] }] } });
120
+ /** A SwiftUI `Divider`: a separator between groups of menu items. */
121
+ export class UiDivider {
122
+ modifiers = input(/* @ts-ignore */
123
+ ...(ngDevMode ? [undefined, { debugName: "modifiers" }] : /* istanbul ignore next */ []));
124
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.2.0", ngImport: i0, type: UiDivider, deps: [], target: i0.ɵɵFactoryTarget.Component });
125
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "22.2.0", type: UiDivider, isStandalone: true, selector: "ui-divider", inputs: { modifiers: { classPropertyName: "modifiers", publicName: "modifiers", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "modifiers": "modifiers()" } }, ngImport: i0, template: '', isInline: true });
126
+ }
127
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.2.0", ngImport: i0, type: UiDivider, decorators: [{
128
+ type: Component,
129
+ args: [{
130
+ selector: 'ui-divider',
131
+ template: '',
132
+ host: { '[modifiers]': 'modifiers()' },
133
+ }]
134
+ }], propDecorators: { modifiers: [{ type: i0.Input, args: [{ isSignal: true, alias: "modifiers", required: false }] }] } });
135
+ /**
136
+ * Content for a named slot of its parent view, such as a menu's `label`. `extraProps` is what
137
+ * the slot tells its parent about itself: a `ui-swipe-actions` group's `edge` and
138
+ * `allowsFullSwipe`.
139
+ */
140
+ export class UiSlot {
141
+ name = input.required(/* @ts-ignore */
142
+ ...(ngDevMode ? [{ debugName: "name" }] : /* istanbul ignore next */ []));
143
+ extraProps = input(/* @ts-ignore */
144
+ ...(ngDevMode ? [undefined, { debugName: "extraProps" }] : /* istanbul ignore next */ []));
145
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.2.0", ngImport: i0, type: UiSlot, deps: [], target: i0.ɵɵFactoryTarget.Component });
146
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "22.2.0", type: UiSlot, isStandalone: true, selector: "ui-slot", inputs: { name: { classPropertyName: "name", publicName: "name", isSignal: true, isRequired: true, transformFunction: null }, extraProps: { classPropertyName: "extraProps", publicName: "extraProps", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "name": "name()", "extraProps": "extraProps()" } }, ngImport: i0, template: '<ng-content />', isInline: true });
147
+ }
148
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.2.0", ngImport: i0, type: UiSlot, decorators: [{
149
+ type: Component,
150
+ args: [{
151
+ selector: 'ui-slot',
152
+ template: '<ng-content />',
153
+ host: { '[name]': 'name()', '[extraProps]': 'extraProps()' },
154
+ }]
155
+ }], propDecorators: { name: [{ type: i0.Input, args: [{ isSignal: true, alias: "name", required: true }] }], extraProps: [{ type: i0.Input, args: [{ isSignal: true, alias: "extraProps", required: false }] }] } });
156
+ /**
157
+ * A SwiftUI `List`: rows as SwiftUI lays them out, which is what lets a row take the system's own
158
+ * swipe actions through `ui-swipe-actions`.
159
+ */
160
+ export class UiList {
161
+ modifiers = input(/* @ts-ignore */
162
+ ...(ngDevMode ? [undefined, { debugName: "modifiers" }] : /* istanbul ignore next */ []));
163
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.2.0", ngImport: i0, type: UiList, deps: [], target: i0.ɵɵFactoryTarget.Component });
164
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "22.2.0", type: UiList, isStandalone: true, selector: "ui-list", inputs: { modifiers: { classPropertyName: "modifiers", publicName: "modifiers", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "modifiers": "modifiers()" } }, ngImport: i0, template: '<ng-content />', isInline: true });
165
+ }
166
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.2.0", ngImport: i0, type: UiList, decorators: [{
167
+ type: Component,
168
+ args: [{
169
+ selector: 'ui-list',
170
+ template: '<ng-content />',
171
+ host: { '[modifiers]': 'modifiers()' },
172
+ }]
173
+ }], propDecorators: { modifiers: [{ type: i0.Input, args: [{ isSignal: true, alias: "modifiers", required: false }] }] } });
174
+ /**
175
+ * The system's swipe actions on a list row, iOS only. The first child is the row; the actions go
176
+ * in `<ui-slot name="actions" [extraProps]="{ edge: 'trailing', allowsFullSwipe: true }">`, one
177
+ * slot per edge, as `ui-button`s.
178
+ */
179
+ export class UiSwipeActions {
180
+ modifiers = input(/* @ts-ignore */
181
+ ...(ngDevMode ? [undefined, { debugName: "modifiers" }] : /* istanbul ignore next */ []));
182
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.2.0", ngImport: i0, type: UiSwipeActions, deps: [], target: i0.ɵɵFactoryTarget.Component });
183
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "22.2.0", type: UiSwipeActions, isStandalone: true, selector: "ui-swipe-actions", inputs: { modifiers: { classPropertyName: "modifiers", publicName: "modifiers", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "modifiers": "modifiers()" } }, ngImport: i0, template: '<ng-content />', isInline: true });
184
+ }
185
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.2.0", ngImport: i0, type: UiSwipeActions, decorators: [{
186
+ type: Component,
187
+ args: [{
188
+ selector: 'ui-swipe-actions',
189
+ template: '<ng-content />',
190
+ host: { '[modifiers]': 'modifiers()' },
191
+ }]
192
+ }], propDecorators: { modifiers: [{ type: i0.Input, args: [{ isSignal: true, alias: "modifiers", required: false }] }] } });
193
+ /**
194
+ * A SwiftUI `Slider`, iOS only. `valueChanged` reports each new value as the thumb moves; note the
195
+ * d, which the native event has and `@expo/ui`'s React prop does not.
196
+ */
197
+ export class UiSlider {
198
+ value = input(undefined, { ...(ngDevMode ? { debugName: "value" } : /* istanbul ignore next */ {}), transform: optionalNumber });
199
+ min = input(undefined, { ...(ngDevMode ? { debugName: "min" } : /* istanbul ignore next */ {}), transform: optionalNumber });
200
+ max = input(undefined, { ...(ngDevMode ? { debugName: "max" } : /* istanbul ignore next */ {}), transform: optionalNumber });
201
+ /** How many steps the range is divided into; none moves the thumb continuously. */
202
+ steps = input(undefined, { ...(ngDevMode ? { debugName: "steps" } : /* istanbul ignore next */ {}), transform: optionalNumber });
203
+ modifiers = input(/* @ts-ignore */
204
+ ...(ngDevMode ? [undefined, { debugName: "modifiers" }] : /* istanbul ignore next */ []));
205
+ valueChanged = output();
206
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.2.0", ngImport: i0, type: UiSlider, deps: [], target: i0.ɵɵFactoryTarget.Component });
207
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "22.2.0", type: UiSlider, isStandalone: true, selector: "ui-slider", inputs: { value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: false, transformFunction: null }, min: { classPropertyName: "min", publicName: "min", isSignal: true, isRequired: false, transformFunction: null }, max: { classPropertyName: "max", publicName: "max", isSignal: true, isRequired: false, transformFunction: null }, steps: { classPropertyName: "steps", publicName: "steps", isSignal: true, isRequired: false, transformFunction: null }, modifiers: { classPropertyName: "modifiers", publicName: "modifiers", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { valueChanged: "valueChanged" }, host: { properties: { "value": "value()", "min": "min()", "max": "max()", "steps": "steps()", "modifiers": "modifiers()" } }, ngImport: i0, template: '', isInline: true });
208
+ }
209
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.2.0", ngImport: i0, type: UiSlider, decorators: [{
210
+ type: Component,
211
+ args: [{
212
+ selector: 'ui-slider',
213
+ template: '',
214
+ host: {
215
+ '[value]': 'value()',
216
+ '[min]': 'min()',
217
+ '[max]': 'max()',
218
+ '[steps]': 'steps()',
219
+ '[modifiers]': 'modifiers()',
220
+ },
221
+ }]
222
+ }], propDecorators: { value: [{ type: i0.Input, args: [{ isSignal: true, alias: "value", required: false }] }], min: [{ type: i0.Input, args: [{ isSignal: true, alias: "min", required: false }] }], max: [{ type: i0.Input, args: [{ isSignal: true, alias: "max", required: false }] }], steps: [{ type: i0.Input, args: [{ isSignal: true, alias: "steps", required: false }] }], modifiers: [{ type: i0.Input, args: [{ isSignal: true, alias: "modifiers", required: false }] }], valueChanged: [{ type: i0.Output, args: ["valueChanged"] }] } });
223
+ /** A SwiftUI `VStack`. */
224
+ export class UiVStack {
225
+ alignment = input(/* @ts-ignore */
226
+ ...(ngDevMode ? [undefined, { debugName: "alignment" }] : /* istanbul ignore next */ []));
227
+ spacing = input(undefined, { ...(ngDevMode ? { debugName: "spacing" } : /* istanbul ignore next */ {}), transform: optionalNumber });
228
+ modifiers = input(/* @ts-ignore */
229
+ ...(ngDevMode ? [undefined, { debugName: "modifiers" }] : /* istanbul ignore next */ []));
230
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.2.0", ngImport: i0, type: UiVStack, deps: [], target: i0.ɵɵFactoryTarget.Component });
231
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "22.2.0", type: UiVStack, isStandalone: true, selector: "ui-vstack", inputs: { alignment: { classPropertyName: "alignment", publicName: "alignment", isSignal: true, isRequired: false, transformFunction: null }, spacing: { classPropertyName: "spacing", publicName: "spacing", isSignal: true, isRequired: false, transformFunction: null }, modifiers: { classPropertyName: "modifiers", publicName: "modifiers", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "alignment": "alignment()", "spacing": "spacing()", "modifiers": "modifiers()" } }, ngImport: i0, template: '<ng-content />', isInline: true });
232
+ }
233
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.2.0", ngImport: i0, type: UiVStack, decorators: [{
234
+ type: Component,
235
+ args: [{
236
+ selector: 'ui-vstack',
237
+ template: '<ng-content />',
238
+ host: {
239
+ '[alignment]': 'alignment()',
240
+ '[spacing]': 'spacing()',
241
+ '[modifiers]': 'modifiers()',
242
+ },
243
+ }]
244
+ }], propDecorators: { alignment: [{ type: i0.Input, args: [{ isSignal: true, alias: "alignment", required: false }] }], spacing: [{ type: i0.Input, args: [{ isSignal: true, alias: "spacing", required: false }] }], modifiers: [{ type: i0.Input, args: [{ isSignal: true, alias: "modifiers", required: false }] }] } });
245
+ /** A SwiftUI `Image`: an SF Symbol by `systemName`, or a picture by `uiImage` URL. */
246
+ export class UiImage {
247
+ systemName = input(/* @ts-ignore */
248
+ ...(ngDevMode ? [undefined, { debugName: "systemName" }] : /* istanbul ignore next */ []));
249
+ uiImage = input(/* @ts-ignore */
250
+ ...(ngDevMode ? [undefined, { debugName: "uiImage" }] : /* istanbul ignore next */ []));
251
+ size = input(undefined, { ...(ngDevMode ? { debugName: "size" } : /* istanbul ignore next */ {}), transform: optionalNumber });
252
+ color = input(/* @ts-ignore */
253
+ ...(ngDevMode ? [undefined, { debugName: "color" }] : /* istanbul ignore next */ []));
254
+ modifiers = input(/* @ts-ignore */
255
+ ...(ngDevMode ? [undefined, { debugName: "modifiers" }] : /* istanbul ignore next */ []));
256
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.2.0", ngImport: i0, type: UiImage, deps: [], target: i0.ɵɵFactoryTarget.Component });
257
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "22.2.0", type: UiImage, isStandalone: true, selector: "ui-image", inputs: { systemName: { classPropertyName: "systemName", publicName: "systemName", isSignal: true, isRequired: false, transformFunction: null }, uiImage: { classPropertyName: "uiImage", publicName: "uiImage", isSignal: true, isRequired: false, transformFunction: null }, size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null }, color: { classPropertyName: "color", publicName: "color", isSignal: true, isRequired: false, transformFunction: null }, modifiers: { classPropertyName: "modifiers", publicName: "modifiers", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "systemName": "systemName()", "uiImage": "uiImage()", "size": "size()", "color": "color()", "modifiers": "modifiers()" } }, ngImport: i0, template: '', isInline: true });
258
+ }
259
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.2.0", ngImport: i0, type: UiImage, decorators: [{
260
+ type: Component,
261
+ args: [{
262
+ selector: 'ui-image',
263
+ template: '',
264
+ host: {
265
+ '[systemName]': 'systemName()',
266
+ '[uiImage]': 'uiImage()',
267
+ '[size]': 'size()',
268
+ '[color]': 'color()',
269
+ '[modifiers]': 'modifiers()',
270
+ },
271
+ }]
272
+ }], propDecorators: { systemName: [{ type: i0.Input, args: [{ isSignal: true, alias: "systemName", required: false }] }], uiImage: [{ type: i0.Input, args: [{ isSignal: true, alias: "uiImage", required: false }] }], size: [{ type: i0.Input, args: [{ isSignal: true, alias: "size", required: false }] }], color: [{ type: i0.Input, args: [{ isSignal: true, alias: "color", required: false }] }], modifiers: [{ type: i0.Input, args: [{ isSignal: true, alias: "modifiers", required: false }] }] } });
273
+ /** A SwiftUI `Text`. */
274
+ export class UiText {
275
+ text = input(/* @ts-ignore */
276
+ ...(ngDevMode ? [undefined, { debugName: "text" }] : /* istanbul ignore next */ []));
277
+ modifiers = input(/* @ts-ignore */
278
+ ...(ngDevMode ? [undefined, { debugName: "modifiers" }] : /* istanbul ignore next */ []));
279
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.2.0", ngImport: i0, type: UiText, deps: [], target: i0.ɵɵFactoryTarget.Component });
280
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "22.2.0", type: UiText, isStandalone: true, selector: "ui-text", inputs: { text: { classPropertyName: "text", publicName: "text", isSignal: true, isRequired: false, transformFunction: null }, modifiers: { classPropertyName: "modifiers", publicName: "modifiers", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "text": "text()", "modifiers": "modifiers()" } }, ngImport: i0, template: '', isInline: true });
281
+ }
282
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.2.0", ngImport: i0, type: UiText, decorators: [{
283
+ type: Component,
284
+ args: [{
285
+ selector: 'ui-text',
286
+ template: '',
287
+ host: { '[text]': 'text()', '[modifiers]': 'modifiers()' },
288
+ }]
289
+ }], propDecorators: { text: [{ type: i0.Input, args: [{ isSignal: true, alias: "text", required: false }] }], modifiers: [{ type: i0.Input, args: [{ isSignal: true, alias: "modifiers", required: false }] }] } });
290
+ /**
291
+ * Listen for one of a `ui-*` view's own events from inside its component. Not a host listener:
292
+ * one named as an output listens to the output itself, and see the note at the top of this file
293
+ * for why the outputs are never emitted.
294
+ */
295
+ function listen(event, handle) {
296
+ const node = inject(ElementRef).nativeElement;
297
+ const engine = node.host ?? inject(HostEngine);
298
+ const stop = engine.setEventListener(node, event, (raw) => handle(raw?.nativeEvent ?? {}));
299
+ inject(DestroyRef).onDestroy(stop);
300
+ }
301
+ /** The caller's modifiers, with SwiftUI's `disabled` added while the field is. */
302
+ function withDisabled(modifiers, disabled) {
303
+ return disabled ? [...(modifiers ?? []), { $type: 'disabled', disabled: true }] : modifiers;
304
+ }
305
+ /**
306
+ * A date picker: SwiftUI's `DatePicker` on iOS, Compose's on Android.
307
+ *
308
+ * A Signal Forms field as it stands - `<ui-date-picker [formField]="f.arrival" />` - through its
309
+ * `value` model, a `Date` (or null). The two platforms take and report a date differently, and
310
+ * this is where that difference ends: SwiftUI is handed `selection` as ISO text and reports
311
+ * `dateChange`; Compose is handed `initialDate` in milliseconds and reports `dateSelected`. Either
312
+ * way the model gets a `Date`. A `disabled` field adds SwiftUI's `disabled` modifier. SwiftUI's
313
+ * picker always shows a date, today when the field is empty, and the date it reports as it appears
314
+ * is not taken as the user's; an optional date is best asked for behind a button that shows the
315
+ * picker once the user wants to give one.
316
+ *
317
+ * `selection` is still accepted as ISO text, for a picker bound without a form.
318
+ */
319
+ export class UiDatePicker {
320
+ title = input(/* @ts-ignore */
321
+ ...(ngDevMode ? [undefined, { debugName: "title" }] : /* istanbul ignore next */ []));
322
+ selection = input(/* @ts-ignore */
323
+ ...(ngDevMode ? [undefined, { debugName: "selection" }] : /* istanbul ignore next */ []));
324
+ displayedComponents = input(/* @ts-ignore */
325
+ ...(ngDevMode ? [undefined, { debugName: "displayedComponents" }] : /* istanbul ignore next */ []));
326
+ range = input(/* @ts-ignore */
327
+ ...(ngDevMode ? [undefined, { debugName: "range" }] : /* istanbul ignore next */ []));
328
+ accessibilityLabel = input(/* @ts-ignore */
329
+ ...(ngDevMode ? [undefined, { debugName: "accessibilityLabel" }] : /* istanbul ignore next */ []));
330
+ modifiers = input(/* @ts-ignore */
331
+ ...(ngDevMode ? [undefined, { debugName: "modifiers" }] : /* istanbul ignore next */ []));
332
+ /** The picked date: what `[formField]` binds. */
333
+ value = model(null, /* @ts-ignore */
334
+ ...(ngDevMode ? [{ debugName: "value" }] : /* istanbul ignore next */ []));
335
+ disabled = input(false, { ...(ngDevMode ? { debugName: "disabled" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
336
+ /** The user picked, which is when a form shows a field's errors: a picker has no blur. */
337
+ touch = output();
338
+ dateChange = output();
339
+ android = nativePlatform() === 'android';
340
+ resolvedSelection = computed(() => this.android ? undefined : (this.selection() ?? this.value()?.toISOString()), /* @ts-ignore */
341
+ ...(ngDevMode ? [{ debugName: "resolvedSelection" }] : /* istanbul ignore next */ []));
342
+ initialDate = computed(() => this.android ? (this.value()?.getTime() ?? null) : undefined, /* @ts-ignore */
343
+ ...(ngDevMode ? [{ debugName: "initialDate" }] : /* istanbul ignore next */ []));
344
+ resolvedModifiers = computed(() => this.android ? this.modifiers() : withDisabled(this.modifiers(), this.disabled()), /* @ts-ignore */
345
+ ...(ngDevMode ? [{ debugName: "resolvedModifiers" }] : /* istanbul ignore next */ []));
346
+ /**
347
+ * SwiftUI's picker cannot be empty: it shows today, and reports that as a change the moment it
348
+ * appears. Taken as the user's choice, an empty date field would fill itself in, pass
349
+ * `required` and mark the form dirty before anyone touched it. So the first report, while the
350
+ * field is empty and the picker has only just appeared, is the picker describing itself.
351
+ */
352
+ appeared = Date.now();
353
+ settled = false;
354
+ constructor() {
355
+ listen(this.android ? 'topDateSelected' : 'topDateChange', ({ date }) => {
356
+ if (typeof date !== 'string' && typeof date !== 'number')
357
+ return;
358
+ const describingItself = !this.settled && this.value() === null && Date.now() - this.appeared < APPEARING_MS;
359
+ this.settled = true;
360
+ if (describingItself)
361
+ return;
362
+ this.value.set(new Date(date));
363
+ this.touch.emit();
364
+ });
365
+ }
366
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.2.0", ngImport: i0, type: UiDatePicker, deps: [], target: i0.ɵɵFactoryTarget.Component });
367
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "22.2.0", type: UiDatePicker, isStandalone: true, selector: "ui-date-picker", inputs: { title: { classPropertyName: "title", publicName: "title", isSignal: true, isRequired: false, transformFunction: null }, selection: { classPropertyName: "selection", publicName: "selection", isSignal: true, isRequired: false, transformFunction: null }, displayedComponents: { classPropertyName: "displayedComponents", publicName: "displayedComponents", isSignal: true, isRequired: false, transformFunction: null }, range: { classPropertyName: "range", publicName: "range", isSignal: true, isRequired: false, transformFunction: null }, accessibilityLabel: { classPropertyName: "accessibilityLabel", publicName: "accessibilityLabel", isSignal: true, isRequired: false, transformFunction: null }, modifiers: { classPropertyName: "modifiers", publicName: "modifiers", isSignal: true, isRequired: false, transformFunction: null }, value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { value: "valueChange", touch: "touch", dateChange: "dateChange" }, host: { properties: { "title": "title()", "selection": "resolvedSelection()", "initialDate": "initialDate()", "displayedComponents": "displayedComponents()", "range": "range()", "accessibilityLabel": "accessibilityLabel()", "modifiers": "resolvedModifiers()" } }, ngImport: i0, template: '', isInline: true });
368
+ }
369
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.2.0", ngImport: i0, type: UiDatePicker, decorators: [{
370
+ type: Component,
371
+ args: [{
372
+ selector: 'ui-date-picker',
373
+ template: '',
374
+ host: {
375
+ '[title]': 'title()',
376
+ '[selection]': 'resolvedSelection()',
377
+ '[initialDate]': 'initialDate()',
378
+ '[displayedComponents]': 'displayedComponents()',
379
+ '[range]': 'range()',
380
+ '[accessibilityLabel]': 'accessibilityLabel()',
381
+ '[modifiers]': 'resolvedModifiers()',
382
+ },
383
+ }]
384
+ }], ctorParameters: () => [], propDecorators: { title: [{ type: i0.Input, args: [{ isSignal: true, alias: "title", required: false }] }], selection: [{ type: i0.Input, args: [{ isSignal: true, alias: "selection", required: false }] }], displayedComponents: [{ type: i0.Input, args: [{ isSignal: true, alias: "displayedComponents", required: false }] }], range: [{ type: i0.Input, args: [{ isSignal: true, alias: "range", required: false }] }], accessibilityLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "accessibilityLabel", required: false }] }], modifiers: [{ type: i0.Input, args: [{ isSignal: true, alias: "modifiers", required: false }] }], value: [{ type: i0.Input, args: [{ isSignal: true, alias: "value", required: false }] }, { type: i0.Output, args: ["valueChange"] }], disabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabled", required: false }] }], touch: [{ type: i0.Output, args: ["touch"] }], dateChange: [{ type: i0.Output, args: ["dateChange"] }] } });
385
+ /** How long after a date picker appears its first report is taken to be about itself. */
386
+ const APPEARING_MS = 1000;
387
+ /**
388
+ * A SwiftUI `Picker`, iOS only, as a Signal Forms field: `<ui-picker [options]="rooms"
389
+ * [formField]="f.room" />`. `options` draws the choices, each tagged with its value, which is the
390
+ * content slot and `tag` modifiers `@expo/ui` otherwise wants written out by hand; children still
391
+ * work for anything richer. `pickerStyle` is SwiftUI's (`menu`, `segmented`, `wheel`, `inline`).
392
+ */
393
+ export class UiPicker {
394
+ label = input(/* @ts-ignore */
395
+ ...(ngDevMode ? [undefined, { debugName: "label" }] : /* istanbul ignore next */ []));
396
+ /** An SF Symbol name. */
397
+ systemImage = input(/* @ts-ignore */
398
+ ...(ngDevMode ? [undefined, { debugName: "systemImage" }] : /* istanbul ignore next */ []));
399
+ options = input(/* @ts-ignore */
400
+ ...(ngDevMode ? [undefined, { debugName: "options" }] : /* istanbul ignore next */ []));
401
+ pickerStyle = input(/* @ts-ignore */
402
+ ...(ngDevMode ? [undefined, { debugName: "pickerStyle" }] : /* istanbul ignore next */ []));
403
+ modifiers = input(/* @ts-ignore */
404
+ ...(ngDevMode ? [undefined, { debugName: "modifiers" }] : /* istanbul ignore next */ []));
405
+ /** The chosen option's value: what `[formField]` binds. */
406
+ value = model(null, /* @ts-ignore */
407
+ ...(ngDevMode ? [{ debugName: "value" }] : /* istanbul ignore next */ []));
408
+ disabled = input(false, { ...(ngDevMode ? { debugName: "disabled" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
409
+ /** The user picked, which is when a form shows a field's errors: a picker has no blur. */
410
+ touch = output();
411
+ selectionChange = output();
412
+ /** Each option's `tag`, one array per value, so a pass hands native the same objects. */
413
+ tags = computed(() => new Map((this.options() ?? []).map((option) => [
414
+ option.value,
415
+ [{ $type: 'tag', tag: option.value }],
416
+ ])), /* @ts-ignore */
417
+ ...(ngDevMode ? [{ debugName: "tags" }] : /* istanbul ignore next */ []));
418
+ resolvedModifiers = computed(() => {
419
+ const style = this.pickerStyle();
420
+ const own = style
421
+ ? [{ $type: 'pickerStyle', style }, ...(this.modifiers() ?? [])]
422
+ : this.modifiers();
423
+ return withDisabled(own, this.disabled());
424
+ }, /* @ts-ignore */
425
+ ...(ngDevMode ? [{ debugName: "resolvedModifiers" }] : /* istanbul ignore next */ []));
426
+ constructor() {
427
+ listen('topSelectionChange', ({ selection }) => {
428
+ if (typeof selection !== 'string' && typeof selection !== 'number')
429
+ return;
430
+ this.value.set(selection);
431
+ this.touch.emit();
432
+ });
433
+ }
434
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.2.0", ngImport: i0, type: UiPicker, deps: [], target: i0.ɵɵFactoryTarget.Component });
435
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.2.0", type: UiPicker, isStandalone: true, selector: "ui-picker", inputs: { label: { classPropertyName: "label", publicName: "label", isSignal: true, isRequired: false, transformFunction: null }, systemImage: { classPropertyName: "systemImage", publicName: "systemImage", isSignal: true, isRequired: false, transformFunction: null }, options: { classPropertyName: "options", publicName: "options", isSignal: true, isRequired: false, transformFunction: null }, pickerStyle: { classPropertyName: "pickerStyle", publicName: "pickerStyle", isSignal: true, isRequired: false, transformFunction: null }, modifiers: { classPropertyName: "modifiers", publicName: "modifiers", isSignal: true, isRequired: false, transformFunction: null }, value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { value: "valueChange", touch: "touch", selectionChange: "selectionChange" }, host: { properties: { "label": "label()", "systemImage": "systemImage()", "selection": "value()", "modifiers": "resolvedModifiers()" } }, ngImport: i0, template: `
436
+ @if (options(); as options) {
437
+ <ui-slot name="content">
438
+ @for (option of options; track option.value) {
439
+ <ui-text [text]="option.label" [modifiers]="tags().get(option.value)" />
440
+ }
441
+ </ui-slot>
442
+ }
443
+ <ng-content />
444
+ `, isInline: true, dependencies: [{ kind: "component", type: UiSlot, selector: "ui-slot", inputs: ["name", "extraProps"] }, { kind: "component", type: UiText, selector: "ui-text", inputs: ["text", "modifiers"] }] });
445
+ }
446
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.2.0", ngImport: i0, type: UiPicker, decorators: [{
447
+ type: Component,
448
+ args: [{
449
+ selector: 'ui-picker',
450
+ imports: [UiSlot, UiText],
451
+ template: `
452
+ @if (options(); as options) {
453
+ <ui-slot name="content">
454
+ @for (option of options; track option.value) {
455
+ <ui-text [text]="option.label" [modifiers]="tags().get(option.value)" />
456
+ }
457
+ </ui-slot>
458
+ }
459
+ <ng-content />
460
+ `,
461
+ host: {
462
+ '[label]': 'label()',
463
+ '[systemImage]': 'systemImage()',
464
+ '[selection]': 'value()',
465
+ '[modifiers]': 'resolvedModifiers()',
466
+ },
467
+ }]
468
+ }], ctorParameters: () => [], propDecorators: { label: [{ type: i0.Input, args: [{ isSignal: true, alias: "label", required: false }] }], systemImage: [{ type: i0.Input, args: [{ isSignal: true, alias: "systemImage", required: false }] }], options: [{ type: i0.Input, args: [{ isSignal: true, alias: "options", required: false }] }], pickerStyle: [{ type: i0.Input, args: [{ isSignal: true, alias: "pickerStyle", required: false }] }], modifiers: [{ type: i0.Input, args: [{ isSignal: true, alias: "modifiers", required: false }] }], value: [{ type: i0.Input, args: [{ isSignal: true, alias: "value", required: false }] }, { type: i0.Output, args: ["valueChange"] }], disabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabled", required: false }] }], touch: [{ type: i0.Output, args: ["touch"] }], selectionChange: [{ type: i0.Output, args: ["selectionChange"] }] } });
469
+ /** A SwiftUI `Toggle`. `isOnChange` reports each flip. */
470
+ export class UiToggle {
471
+ isOn = input(undefined, { ...(ngDevMode ? { debugName: "isOn" } : /* istanbul ignore next */ {}), transform: optionalBoolean });
472
+ label = input(/* @ts-ignore */
473
+ ...(ngDevMode ? [undefined, { debugName: "label" }] : /* istanbul ignore next */ []));
474
+ modifiers = input(/* @ts-ignore */
475
+ ...(ngDevMode ? [undefined, { debugName: "modifiers" }] : /* istanbul ignore next */ []));
476
+ isOnChange = output();
477
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.2.0", ngImport: i0, type: UiToggle, deps: [], target: i0.ɵɵFactoryTarget.Component });
478
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "22.2.0", type: UiToggle, isStandalone: true, selector: "ui-toggle", inputs: { isOn: { classPropertyName: "isOn", publicName: "isOn", isSignal: true, isRequired: false, transformFunction: null }, label: { classPropertyName: "label", publicName: "label", isSignal: true, isRequired: false, transformFunction: null }, modifiers: { classPropertyName: "modifiers", publicName: "modifiers", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { isOnChange: "isOnChange" }, host: { properties: { "isOn": "isOn()", "label": "label()", "modifiers": "modifiers()" } }, ngImport: i0, template: '<ng-content />', isInline: true });
479
+ }
480
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.2.0", ngImport: i0, type: UiToggle, decorators: [{
481
+ type: Component,
482
+ args: [{
483
+ selector: 'ui-toggle',
484
+ template: '<ng-content />',
485
+ host: { '[isOn]': 'isOn()', '[label]': 'label()', '[modifiers]': 'modifiers()' },
486
+ }]
487
+ }], propDecorators: { isOn: [{ type: i0.Input, args: [{ isSignal: true, alias: "isOn", required: false }] }], label: [{ type: i0.Input, args: [{ isSignal: true, alias: "label", required: false }] }], modifiers: [{ type: i0.Input, args: [{ isSignal: true, alias: "modifiers", required: false }] }], isOnChange: [{ type: i0.Output, args: ["isOnChange"] }] } });
488
+ /** A SwiftUI `Stepper`, between `min` and `max` by `step`. */
489
+ export class UiStepper {
490
+ value = input(undefined, { ...(ngDevMode ? { debugName: "value" } : /* istanbul ignore next */ {}), transform: optionalNumber });
491
+ min = input(undefined, { ...(ngDevMode ? { debugName: "min" } : /* istanbul ignore next */ {}), transform: optionalNumber });
492
+ max = input(undefined, { ...(ngDevMode ? { debugName: "max" } : /* istanbul ignore next */ {}), transform: optionalNumber });
493
+ step = input(undefined, { ...(ngDevMode ? { debugName: "step" } : /* istanbul ignore next */ {}), transform: optionalNumber });
494
+ label = input(/* @ts-ignore */
495
+ ...(ngDevMode ? [undefined, { debugName: "label" }] : /* istanbul ignore next */ []));
496
+ modifiers = input(/* @ts-ignore */
497
+ ...(ngDevMode ? [undefined, { debugName: "modifiers" }] : /* istanbul ignore next */ []));
498
+ valueChange = output();
499
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.2.0", ngImport: i0, type: UiStepper, deps: [], target: i0.ɵɵFactoryTarget.Component });
500
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "22.2.0", type: UiStepper, isStandalone: true, selector: "ui-stepper", inputs: { value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: false, transformFunction: null }, min: { classPropertyName: "min", publicName: "min", isSignal: true, isRequired: false, transformFunction: null }, max: { classPropertyName: "max", publicName: "max", isSignal: true, isRequired: false, transformFunction: null }, step: { classPropertyName: "step", publicName: "step", isSignal: true, isRequired: false, transformFunction: null }, label: { classPropertyName: "label", publicName: "label", isSignal: true, isRequired: false, transformFunction: null }, modifiers: { classPropertyName: "modifiers", publicName: "modifiers", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { valueChange: "valueChange" }, host: { properties: { "value": "value()", "min": "min()", "max": "max()", "step": "step()", "label": "label()", "modifiers": "modifiers()" } }, ngImport: i0, template: '<ng-content />', isInline: true });
501
+ }
502
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.2.0", ngImport: i0, type: UiStepper, decorators: [{
503
+ type: Component,
504
+ args: [{
505
+ selector: 'ui-stepper',
506
+ template: '<ng-content />',
507
+ host: {
508
+ '[value]': 'value()',
509
+ '[min]': 'min()',
510
+ '[max]': 'max()',
511
+ '[step]': 'step()',
512
+ '[label]': 'label()',
513
+ '[modifiers]': 'modifiers()',
514
+ },
515
+ }]
516
+ }], propDecorators: { value: [{ type: i0.Input, args: [{ isSignal: true, alias: "value", required: false }] }], min: [{ type: i0.Input, args: [{ isSignal: true, alias: "min", required: false }] }], max: [{ type: i0.Input, args: [{ isSignal: true, alias: "max", required: false }] }], step: [{ type: i0.Input, args: [{ isSignal: true, alias: "step", required: false }] }], label: [{ type: i0.Input, args: [{ isSignal: true, alias: "label", required: false }] }], modifiers: [{ type: i0.Input, args: [{ isSignal: true, alias: "modifiers", required: false }] }], valueChange: [{ type: i0.Output, args: ["valueChange"] }] } });
517
+ /**
518
+ * A SwiftUI `TextField`. `text` is where it keeps what is typed, a `nativeState('')`: the field
519
+ * writes to it on the UI thread, and `textChange` reports each change.
520
+ */
521
+ export class UiTextField {
522
+ text = input(/* @ts-ignore */
523
+ ...(ngDevMode ? [undefined, { debugName: "text" }] : /* istanbul ignore next */ []));
524
+ placeholder = input(/* @ts-ignore */
525
+ ...(ngDevMode ? [undefined, { debugName: "placeholder" }] : /* istanbul ignore next */ []));
526
+ modifiers = input(/* @ts-ignore */
527
+ ...(ngDevMode ? [undefined, { debugName: "modifiers" }] : /* istanbul ignore next */ []));
528
+ textChange = output();
529
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.2.0", ngImport: i0, type: UiTextField, deps: [], target: i0.ɵɵFactoryTarget.Component });
530
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "22.2.0", type: UiTextField, isStandalone: true, selector: "ui-text-field", inputs: { text: { classPropertyName: "text", publicName: "text", isSignal: true, isRequired: false, transformFunction: null }, placeholder: { classPropertyName: "placeholder", publicName: "placeholder", isSignal: true, isRequired: false, transformFunction: null }, modifiers: { classPropertyName: "modifiers", publicName: "modifiers", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { textChange: "textChange" }, host: { properties: { "text": "text()?.id", "placeholder": "placeholder()", "modifiers": "modifiers()" } }, ngImport: i0, template: '', isInline: true });
531
+ }
532
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.2.0", ngImport: i0, type: UiTextField, decorators: [{
533
+ type: Component,
534
+ args: [{
535
+ selector: 'ui-text-field',
536
+ template: '',
537
+ host: {
538
+ '[text]': 'text()?.id',
539
+ '[placeholder]': 'placeholder()',
540
+ '[modifiers]': 'modifiers()',
541
+ },
542
+ }]
543
+ }], propDecorators: { text: [{ type: i0.Input, args: [{ isSignal: true, alias: "text", required: false }] }], placeholder: [{ type: i0.Input, args: [{ isSignal: true, alias: "placeholder", required: false }] }], modifiers: [{ type: i0.Input, args: [{ isSignal: true, alias: "modifiers", required: false }] }], textChange: [{ type: i0.Output, args: ["textChange"] }] } });
544
+ /** A SwiftUI `ColorPicker`. `selection` is a colour as hex. */
545
+ export class UiColorPicker {
546
+ selection = input(/* @ts-ignore */
547
+ ...(ngDevMode ? [undefined, { debugName: "selection" }] : /* istanbul ignore next */ []));
548
+ label = input(/* @ts-ignore */
549
+ ...(ngDevMode ? [undefined, { debugName: "label" }] : /* istanbul ignore next */ []));
550
+ supportsOpacity = input(undefined, { ...(ngDevMode ? { debugName: "supportsOpacity" } : /* istanbul ignore next */ {}), transform: optionalBoolean });
551
+ modifiers = input(/* @ts-ignore */
552
+ ...(ngDevMode ? [undefined, { debugName: "modifiers" }] : /* istanbul ignore next */ []));
553
+ selectionChange = output();
554
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.2.0", ngImport: i0, type: UiColorPicker, deps: [], target: i0.ɵɵFactoryTarget.Component });
555
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "22.2.0", type: UiColorPicker, isStandalone: true, selector: "ui-color-picker", inputs: { selection: { classPropertyName: "selection", publicName: "selection", isSignal: true, isRequired: false, transformFunction: null }, label: { classPropertyName: "label", publicName: "label", isSignal: true, isRequired: false, transformFunction: null }, supportsOpacity: { classPropertyName: "supportsOpacity", publicName: "supportsOpacity", isSignal: true, isRequired: false, transformFunction: null }, modifiers: { classPropertyName: "modifiers", publicName: "modifiers", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { selectionChange: "selectionChange" }, host: { properties: { "selection": "selection()", "label": "label()", "supportsOpacity": "supportsOpacity()", "modifiers": "modifiers()" } }, ngImport: i0, template: '', isInline: true });
556
+ }
557
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.2.0", ngImport: i0, type: UiColorPicker, decorators: [{
558
+ type: Component,
559
+ args: [{
560
+ selector: 'ui-color-picker',
561
+ template: '',
562
+ host: {
563
+ '[selection]': 'selection()',
564
+ '[label]': 'label()',
565
+ '[supportsOpacity]': 'supportsOpacity()',
566
+ '[modifiers]': 'modifiers()',
567
+ },
568
+ }]
569
+ }], propDecorators: { selection: [{ type: i0.Input, args: [{ isSignal: true, alias: "selection", required: false }] }], label: [{ type: i0.Input, args: [{ isSignal: true, alias: "label", required: false }] }], supportsOpacity: [{ type: i0.Input, args: [{ isSignal: true, alias: "supportsOpacity", required: false }] }], modifiers: [{ type: i0.Input, args: [{ isSignal: true, alias: "modifiers", required: false }] }], selectionChange: [{ type: i0.Output, args: ["selectionChange"] }] } });
570
+ /** A SwiftUI `Gauge`: `value` between `min` and `max`, drawn as `type` says. */
571
+ export class UiGauge {
572
+ value = input(undefined, { ...(ngDevMode ? { debugName: "value" } : /* istanbul ignore next */ {}), transform: optionalNumber });
573
+ min = input(undefined, { ...(ngDevMode ? { debugName: "min" } : /* istanbul ignore next */ {}), transform: optionalNumber });
574
+ max = input(undefined, { ...(ngDevMode ? { debugName: "max" } : /* istanbul ignore next */ {}), transform: optionalNumber });
575
+ type = input(/* @ts-ignore */
576
+ ...(ngDevMode ? [undefined, { debugName: "type" }] : /* istanbul ignore next */ []));
577
+ currentValueLabel = input(/* @ts-ignore */
578
+ ...(ngDevMode ? [undefined, { debugName: "currentValueLabel" }] : /* istanbul ignore next */ []));
579
+ minimumValueLabel = input(/* @ts-ignore */
580
+ ...(ngDevMode ? [undefined, { debugName: "minimumValueLabel" }] : /* istanbul ignore next */ []));
581
+ maximumValueLabel = input(/* @ts-ignore */
582
+ ...(ngDevMode ? [undefined, { debugName: "maximumValueLabel" }] : /* istanbul ignore next */ []));
583
+ modifiers = input(/* @ts-ignore */
584
+ ...(ngDevMode ? [undefined, { debugName: "modifiers" }] : /* istanbul ignore next */ []));
585
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.2.0", ngImport: i0, type: UiGauge, deps: [], target: i0.ɵɵFactoryTarget.Component });
586
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "22.2.0", type: UiGauge, isStandalone: true, selector: "ui-gauge", inputs: { value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: false, transformFunction: null }, min: { classPropertyName: "min", publicName: "min", isSignal: true, isRequired: false, transformFunction: null }, max: { classPropertyName: "max", publicName: "max", isSignal: true, isRequired: false, transformFunction: null }, type: { classPropertyName: "type", publicName: "type", isSignal: true, isRequired: false, transformFunction: null }, currentValueLabel: { classPropertyName: "currentValueLabel", publicName: "currentValueLabel", isSignal: true, isRequired: false, transformFunction: null }, minimumValueLabel: { classPropertyName: "minimumValueLabel", publicName: "minimumValueLabel", isSignal: true, isRequired: false, transformFunction: null }, maximumValueLabel: { classPropertyName: "maximumValueLabel", publicName: "maximumValueLabel", isSignal: true, isRequired: false, transformFunction: null }, modifiers: { classPropertyName: "modifiers", publicName: "modifiers", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "value": "value()", "min": "min()", "max": "max()", "type": "type()", "currentValueLabel": "currentValueLabel()", "minimumValueLabel": "minimumValueLabel()", "maximumValueLabel": "maximumValueLabel()", "modifiers": "modifiers()" } }, ngImport: i0, template: '<ng-content />', isInline: true });
587
+ }
588
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.2.0", ngImport: i0, type: UiGauge, decorators: [{
589
+ type: Component,
590
+ args: [{
591
+ selector: 'ui-gauge',
592
+ template: '<ng-content />',
593
+ host: {
594
+ '[value]': 'value()',
595
+ '[min]': 'min()',
596
+ '[max]': 'max()',
597
+ '[type]': 'type()',
598
+ '[currentValueLabel]': 'currentValueLabel()',
599
+ '[minimumValueLabel]': 'minimumValueLabel()',
600
+ '[maximumValueLabel]': 'maximumValueLabel()',
601
+ '[modifiers]': 'modifiers()',
602
+ },
603
+ }]
604
+ }], propDecorators: { value: [{ type: i0.Input, args: [{ isSignal: true, alias: "value", required: false }] }], min: [{ type: i0.Input, args: [{ isSignal: true, alias: "min", required: false }] }], max: [{ type: i0.Input, args: [{ isSignal: true, alias: "max", required: false }] }], type: [{ type: i0.Input, args: [{ isSignal: true, alias: "type", required: false }] }], currentValueLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "currentValueLabel", required: false }] }], minimumValueLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "minimumValueLabel", required: false }] }], maximumValueLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "maximumValueLabel", required: false }] }], modifiers: [{ type: i0.Input, args: [{ isSignal: true, alias: "modifiers", required: false }] }] } });
605
+ /** A SwiftUI `ProgressView`: a bar filled to `value`, from 0 to 1, or a spinner without one. */
606
+ export class UiProgress {
607
+ value = input(undefined, { ...(ngDevMode ? { debugName: "value" } : /* istanbul ignore next */ {}), transform: optionalNumber });
608
+ modifiers = input(/* @ts-ignore */
609
+ ...(ngDevMode ? [undefined, { debugName: "modifiers" }] : /* istanbul ignore next */ []));
610
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.2.0", ngImport: i0, type: UiProgress, deps: [], target: i0.ɵɵFactoryTarget.Component });
611
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "22.2.0", type: UiProgress, isStandalone: true, selector: "ui-progress", inputs: { value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: false, transformFunction: null }, modifiers: { classPropertyName: "modifiers", publicName: "modifiers", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "value": "value()", "modifiers": "modifiers()" } }, ngImport: i0, template: '', isInline: true });
612
+ }
613
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.2.0", ngImport: i0, type: UiProgress, decorators: [{
614
+ type: Component,
615
+ args: [{
616
+ selector: 'ui-progress',
617
+ template: '',
618
+ host: { '[value]': 'value()', '[modifiers]': 'modifiers()' },
619
+ }]
620
+ }], propDecorators: { value: [{ type: i0.Input, args: [{ isSignal: true, alias: "value", required: false }] }], modifiers: [{ type: i0.Input, args: [{ isSignal: true, alias: "modifiers", required: false }] }] } });
621
+ /** A SwiftUI `HStack`. */
622
+ export class UiHStack {
623
+ alignment = input(/* @ts-ignore */
624
+ ...(ngDevMode ? [undefined, { debugName: "alignment" }] : /* istanbul ignore next */ []));
625
+ spacing = input(undefined, { ...(ngDevMode ? { debugName: "spacing" } : /* istanbul ignore next */ {}), transform: optionalNumber });
626
+ modifiers = input(/* @ts-ignore */
627
+ ...(ngDevMode ? [undefined, { debugName: "modifiers" }] : /* istanbul ignore next */ []));
628
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.2.0", ngImport: i0, type: UiHStack, deps: [], target: i0.ɵɵFactoryTarget.Component });
629
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "22.2.0", type: UiHStack, isStandalone: true, selector: "ui-hstack", inputs: { alignment: { classPropertyName: "alignment", publicName: "alignment", isSignal: true, isRequired: false, transformFunction: null }, spacing: { classPropertyName: "spacing", publicName: "spacing", isSignal: true, isRequired: false, transformFunction: null }, modifiers: { classPropertyName: "modifiers", publicName: "modifiers", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "alignment": "alignment()", "spacing": "spacing()", "modifiers": "modifiers()" } }, ngImport: i0, template: '<ng-content />', isInline: true });
630
+ }
631
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.2.0", ngImport: i0, type: UiHStack, decorators: [{
632
+ type: Component,
633
+ args: [{
634
+ selector: 'ui-hstack',
635
+ template: '<ng-content />',
636
+ host: {
637
+ '[alignment]': 'alignment()',
638
+ '[spacing]': 'spacing()',
639
+ '[modifiers]': 'modifiers()',
640
+ },
641
+ }]
642
+ }], propDecorators: { alignment: [{ type: i0.Input, args: [{ isSignal: true, alias: "alignment", required: false }] }], spacing: [{ type: i0.Input, args: [{ isSignal: true, alias: "spacing", required: false }] }], modifiers: [{ type: i0.Input, args: [{ isSignal: true, alias: "modifiers", required: false }] }] } });
643
+ /** A SwiftUI `Spacer`: the room left over in its stack. */
644
+ export class UiSpacer {
645
+ modifiers = input(/* @ts-ignore */
646
+ ...(ngDevMode ? [undefined, { debugName: "modifiers" }] : /* istanbul ignore next */ []));
647
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.2.0", ngImport: i0, type: UiSpacer, deps: [], target: i0.ɵɵFactoryTarget.Component });
648
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "22.2.0", type: UiSpacer, isStandalone: true, selector: "ui-spacer", inputs: { modifiers: { classPropertyName: "modifiers", publicName: "modifiers", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "modifiers": "modifiers()" } }, ngImport: i0, template: '', isInline: true });
649
+ }
650
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.2.0", ngImport: i0, type: UiSpacer, decorators: [{
651
+ type: Component,
652
+ args: [{
653
+ selector: 'ui-spacer',
654
+ template: '',
655
+ host: { '[modifiers]': 'modifiers()' },
656
+ }]
657
+ }], propDecorators: { modifiers: [{ type: i0.Input, args: [{ isSignal: true, alias: "modifiers", required: false }] }] } });
658
+ /** A SwiftUI `LabeledContent`: a label, and its content beside it. */
659
+ export class UiLabeledContent {
660
+ label = input(/* @ts-ignore */
661
+ ...(ngDevMode ? [undefined, { debugName: "label" }] : /* istanbul ignore next */ []));
662
+ modifiers = input(/* @ts-ignore */
663
+ ...(ngDevMode ? [undefined, { debugName: "modifiers" }] : /* istanbul ignore next */ []));
664
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.2.0", ngImport: i0, type: UiLabeledContent, deps: [], target: i0.ɵɵFactoryTarget.Component });
665
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "22.2.0", type: UiLabeledContent, isStandalone: true, selector: "ui-labeled-content", inputs: { label: { classPropertyName: "label", publicName: "label", isSignal: true, isRequired: false, transformFunction: null }, modifiers: { classPropertyName: "modifiers", publicName: "modifiers", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "label": "label()", "modifiers": "modifiers()" } }, ngImport: i0, template: '<ng-content />', isInline: true });
666
+ }
667
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.2.0", ngImport: i0, type: UiLabeledContent, decorators: [{
668
+ type: Component,
669
+ args: [{
670
+ selector: 'ui-labeled-content',
671
+ template: '<ng-content />',
672
+ host: { '[label]': 'label()', '[modifiers]': 'modifiers()' },
673
+ }]
674
+ }], propDecorators: { label: [{ type: i0.Input, args: [{ isSignal: true, alias: "label", required: false }] }], modifiers: [{ type: i0.Input, args: [{ isSignal: true, alias: "modifiers", required: false }] }] } });
675
+ /** A SwiftUI `Form`: settings-style grouped rows. */
676
+ export class UiForm {
677
+ modifiers = input(/* @ts-ignore */
678
+ ...(ngDevMode ? [undefined, { debugName: "modifiers" }] : /* istanbul ignore next */ []));
679
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.2.0", ngImport: i0, type: UiForm, deps: [], target: i0.ɵɵFactoryTarget.Component });
680
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "22.2.0", type: UiForm, isStandalone: true, selector: "ui-form", inputs: { modifiers: { classPropertyName: "modifiers", publicName: "modifiers", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "modifiers": "modifiers()" } }, ngImport: i0, template: '<ng-content />', isInline: true });
681
+ }
682
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.2.0", ngImport: i0, type: UiForm, decorators: [{
683
+ type: Component,
684
+ args: [{
685
+ selector: 'ui-form',
686
+ template: '<ng-content />',
687
+ host: { '[modifiers]': 'modifiers()' },
688
+ }]
689
+ }], propDecorators: { modifiers: [{ type: i0.Input, args: [{ isSignal: true, alias: "modifiers", required: false }] }] } });
690
+ /** A SwiftUI `Section` of a form or a list, under `title`. */
691
+ export class UiSection {
692
+ title = input(/* @ts-ignore */
693
+ ...(ngDevMode ? [undefined, { debugName: "title" }] : /* istanbul ignore next */ []));
694
+ modifiers = input(/* @ts-ignore */
695
+ ...(ngDevMode ? [undefined, { debugName: "modifiers" }] : /* istanbul ignore next */ []));
696
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.2.0", ngImport: i0, type: UiSection, deps: [], target: i0.ɵɵFactoryTarget.Component });
697
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "22.2.0", type: UiSection, isStandalone: true, selector: "ui-section", inputs: { title: { classPropertyName: "title", publicName: "title", isSignal: true, isRequired: false, transformFunction: null }, modifiers: { classPropertyName: "modifiers", publicName: "modifiers", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "title": "title()", "modifiers": "modifiers()" } }, ngImport: i0, template: '<ng-content />', isInline: true });
698
+ }
699
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.2.0", ngImport: i0, type: UiSection, decorators: [{
700
+ type: Component,
701
+ args: [{
702
+ selector: 'ui-section',
703
+ template: '<ng-content />',
704
+ host: { '[title]': 'title()', '[modifiers]': 'modifiers()' },
705
+ }]
706
+ }], propDecorators: { title: [{ type: i0.Input, args: [{ isSignal: true, alias: "title", required: false }] }], modifiers: [{ type: i0.Input, args: [{ isSignal: true, alias: "modifiers", required: false }] }] } });
707
+ //# sourceMappingURL=expo-ui-components.js.map