@expo/ui 56.0.2 → 56.0.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +5 -0
- package/android/build.gradle +2 -2
- package/android/src/main/java/expo/modules/ui/ExpoUIModule.kt +6 -0
- package/android/src/main/java/expo/modules/ui/MaskView.kt +56 -0
- package/build/community/masked-view/MaskedView.android.d.ts +8 -0
- package/build/community/masked-view/MaskedView.android.d.ts.map +1 -0
- package/build/community/masked-view/MaskedView.d.ts +10 -0
- package/build/community/masked-view/MaskedView.d.ts.map +1 -0
- package/build/community/masked-view/MaskedView.ios.d.ts +8 -0
- package/build/community/masked-view/MaskedView.ios.d.ts.map +1 -0
- package/build/community/masked-view/index.d.ts +4 -0
- package/build/community/masked-view/index.d.ts.map +1 -0
- package/build/community/masked-view/types.d.ts +19 -0
- package/build/community/masked-view/types.d.ts.map +1 -0
- package/build/community/picker/Picker.android.d.ts +10 -2
- package/build/community/picker/Picker.android.d.ts.map +1 -1
- package/build/community/picker/Picker.d.ts +10 -2
- package/build/community/picker/Picker.d.ts.map +1 -1
- package/build/community/picker/Picker.ios.d.ts +10 -2
- package/build/community/picker/Picker.ios.d.ts.map +1 -1
- package/build/community/picker/types.d.ts +12 -10
- package/build/community/picker/types.d.ts.map +1 -1
- package/build/jetpack-compose/modifiers/index.d.ts +1 -1
- package/expo-module.config.json +1 -1
- package/local-maven-repo/expo/modules/ui/expo.modules.ui/{56.0.2/expo.modules.ui-56.0.2-sources.jar → 56.0.3/expo.modules.ui-56.0.3-sources.jar} +0 -0
- package/local-maven-repo/expo/modules/ui/expo.modules.ui/56.0.3/expo.modules.ui-56.0.3-sources.jar.md5 +1 -0
- package/local-maven-repo/expo/modules/ui/expo.modules.ui/56.0.3/expo.modules.ui-56.0.3-sources.jar.sha1 +1 -0
- package/local-maven-repo/expo/modules/ui/expo.modules.ui/56.0.3/expo.modules.ui-56.0.3-sources.jar.sha256 +1 -0
- package/local-maven-repo/expo/modules/ui/expo.modules.ui/56.0.3/expo.modules.ui-56.0.3-sources.jar.sha512 +1 -0
- package/local-maven-repo/expo/modules/ui/expo.modules.ui/56.0.3/expo.modules.ui-56.0.3.aar +0 -0
- package/local-maven-repo/expo/modules/ui/expo.modules.ui/56.0.3/expo.modules.ui-56.0.3.aar.md5 +1 -0
- package/local-maven-repo/expo/modules/ui/expo.modules.ui/56.0.3/expo.modules.ui-56.0.3.aar.sha1 +1 -0
- package/local-maven-repo/expo/modules/ui/expo.modules.ui/56.0.3/expo.modules.ui-56.0.3.aar.sha256 +1 -0
- package/local-maven-repo/expo/modules/ui/expo.modules.ui/56.0.3/expo.modules.ui-56.0.3.aar.sha512 +1 -0
- package/local-maven-repo/expo/modules/ui/expo.modules.ui/{56.0.2/expo.modules.ui-56.0.2.module → 56.0.3/expo.modules.ui-56.0.3.module} +23 -23
- package/local-maven-repo/expo/modules/ui/expo.modules.ui/56.0.3/expo.modules.ui-56.0.3.module.md5 +1 -0
- package/local-maven-repo/expo/modules/ui/expo.modules.ui/56.0.3/expo.modules.ui-56.0.3.module.sha1 +1 -0
- package/local-maven-repo/expo/modules/ui/expo.modules.ui/56.0.3/expo.modules.ui-56.0.3.module.sha256 +1 -0
- package/local-maven-repo/expo/modules/ui/expo.modules.ui/56.0.3/expo.modules.ui-56.0.3.module.sha512 +1 -0
- package/local-maven-repo/expo/modules/ui/expo.modules.ui/{56.0.2/expo.modules.ui-56.0.2.pom → 56.0.3/expo.modules.ui-56.0.3.pom} +2 -2
- package/local-maven-repo/expo/modules/ui/expo.modules.ui/56.0.3/expo.modules.ui-56.0.3.pom.md5 +1 -0
- package/local-maven-repo/expo/modules/ui/expo.modules.ui/56.0.3/expo.modules.ui-56.0.3.pom.sha1 +1 -0
- package/local-maven-repo/expo/modules/ui/expo.modules.ui/56.0.3/expo.modules.ui-56.0.3.pom.sha256 +1 -0
- package/local-maven-repo/expo/modules/ui/expo.modules.ui/56.0.3/expo.modules.ui-56.0.3.pom.sha512 +1 -0
- package/local-maven-repo/expo/modules/ui/expo.modules.ui/maven-metadata.xml +4 -4
- package/local-maven-repo/expo/modules/ui/expo.modules.ui/maven-metadata.xml.md5 +1 -1
- package/local-maven-repo/expo/modules/ui/expo.modules.ui/maven-metadata.xml.sha1 +1 -1
- package/local-maven-repo/expo/modules/ui/expo.modules.ui/maven-metadata.xml.sha256 +1 -1
- package/local-maven-repo/expo/modules/ui/expo.modules.ui/maven-metadata.xml.sha512 +1 -1
- package/package.json +8 -4
- package/src/community/masked-view/MaskedView.android.tsx +40 -0
- package/src/community/masked-view/MaskedView.ios.tsx +32 -0
- package/src/community/masked-view/MaskedView.tsx +34 -0
- package/src/community/masked-view/index.tsx +3 -0
- package/src/community/masked-view/types.ts +19 -0
- package/src/community/picker/Picker.android.tsx +12 -5
- package/src/community/picker/Picker.ios.tsx +9 -6
- package/src/community/picker/Picker.tsx +3 -4
- package/src/community/picker/types.tsx +24 -18
- package/src/jetpack-compose/modifiers/index.ts +1 -1
- package/local-maven-repo/expo/modules/ui/expo.modules.ui/56.0.2/expo.modules.ui-56.0.2-sources.jar.md5 +0 -1
- package/local-maven-repo/expo/modules/ui/expo.modules.ui/56.0.2/expo.modules.ui-56.0.2-sources.jar.sha1 +0 -1
- package/local-maven-repo/expo/modules/ui/expo.modules.ui/56.0.2/expo.modules.ui-56.0.2-sources.jar.sha256 +0 -1
- package/local-maven-repo/expo/modules/ui/expo.modules.ui/56.0.2/expo.modules.ui-56.0.2-sources.jar.sha512 +0 -1
- package/local-maven-repo/expo/modules/ui/expo.modules.ui/56.0.2/expo.modules.ui-56.0.2.aar +0 -0
- package/local-maven-repo/expo/modules/ui/expo.modules.ui/56.0.2/expo.modules.ui-56.0.2.aar.md5 +0 -1
- package/local-maven-repo/expo/modules/ui/expo.modules.ui/56.0.2/expo.modules.ui-56.0.2.aar.sha1 +0 -1
- package/local-maven-repo/expo/modules/ui/expo.modules.ui/56.0.2/expo.modules.ui-56.0.2.aar.sha256 +0 -1
- package/local-maven-repo/expo/modules/ui/expo.modules.ui/56.0.2/expo.modules.ui-56.0.2.aar.sha512 +0 -1
- package/local-maven-repo/expo/modules/ui/expo.modules.ui/56.0.2/expo.modules.ui-56.0.2.module.md5 +0 -1
- package/local-maven-repo/expo/modules/ui/expo.modules.ui/56.0.2/expo.modules.ui-56.0.2.module.sha1 +0 -1
- package/local-maven-repo/expo/modules/ui/expo.modules.ui/56.0.2/expo.modules.ui-56.0.2.module.sha256 +0 -1
- package/local-maven-repo/expo/modules/ui/expo.modules.ui/56.0.2/expo.modules.ui-56.0.2.module.sha512 +0 -1
- package/local-maven-repo/expo/modules/ui/expo.modules.ui/56.0.2/expo.modules.ui-56.0.2.pom.md5 +0 -1
- package/local-maven-repo/expo/modules/ui/expo.modules.ui/56.0.2/expo.modules.ui-56.0.2.pom.sha1 +0 -1
- package/local-maven-repo/expo/modules/ui/expo.modules.ui/56.0.2/expo.modules.ui-56.0.2.pom.sha256 +0 -1
- package/local-maven-repo/expo/modules/ui/expo.modules.ui/56.0.2/expo.modules.ui-56.0.2.pom.sha512 +0 -1
package/CHANGELOG.md
CHANGED
|
@@ -10,6 +10,10 @@
|
|
|
10
10
|
|
|
11
11
|
### 💡 Others
|
|
12
12
|
|
|
13
|
+
## 56.0.3 — 2026-05-07
|
|
14
|
+
|
|
15
|
+
_This version does not introduce any user-facing changes._
|
|
16
|
+
|
|
13
17
|
## 56.0.2 — 2026-05-06
|
|
14
18
|
|
|
15
19
|
### 🐛 Bug fixes
|
|
@@ -39,6 +43,7 @@ _This version does not introduce any user-facing changes._
|
|
|
39
43
|
- [android] Add `colors` prop to `HorizontalFloatingToolbar` to override the variant's default toolbar and FAB container/content colors. ([#45244](https://github.com/expo/expo/pull/45244) by [@Ubax](https://github.com/Ubax))
|
|
40
44
|
- [android] Added `HorizontalPager` component wrapping Compose's `HorizontalPager`. ([#45163](https://github.com/expo/expo/pull/45163) by [@vonovak](https://github.com/vonovak))
|
|
41
45
|
- [compose] Added worklet and `ObservableState` support to `TextField`. Added `value` prop accepting `ObservableState<string | TextFieldValue>` (create via `useNativeState`). `onValueChange` now supports worklets for synchronous UI-thread updates. Added `TextFieldValue` type with `text` + `selection` for worklet-driven caret control. Replaced `defaultValue`, callers pass state via `useNativeState` or omit for an empty field. ([#45024](https://github.com/expo/expo/pull/45024) by [@nishan](https://github.com/intergalacticspacehighway))
|
|
46
|
+
- Added `@expo/ui/community/masked-view` — a drop-in replacement for `@react-native-masked-view/masked-view`. ([#45488](https://github.com/expo/expo/pull/45488) by [@vonovak](https://github.com/vonovak))
|
|
42
47
|
- [android] Add `WorkletCallback` shared object for synchronous UI thread callbacks. ([#44681](https://github.com/expo/expo/pull/44681) by [@nishan](https://github.com/intergalacticspacehighway))
|
|
43
48
|
- [android] Add `ObservableState` shared object and `useNativeState` hook for controlling native Compose state from JS. ([#44655](https://github.com/expo/expo/pull/44655) by [@intergalacticspacehighway](https://github.com/intergalacticspacehighway))
|
|
44
49
|
- [iOS] Added `Mask` component wrapping SwiftUI's `.mask(alignment:_:)` modifier, with a `Mask.Content` slot for the mask element. ([#44934](https://github.com/expo/expo/pull/44934) by [@vonovak](https://github.com/vonovak))
|
package/android/build.gradle
CHANGED
|
@@ -12,13 +12,13 @@ apply plugin: 'expo-module-gradle-plugin'
|
|
|
12
12
|
apply plugin: 'org.jetbrains.kotlin.plugin.compose'
|
|
13
13
|
|
|
14
14
|
group = 'expo.modules.ui'
|
|
15
|
-
version = '56.0.
|
|
15
|
+
version = '56.0.3'
|
|
16
16
|
|
|
17
17
|
android {
|
|
18
18
|
namespace "expo.modules.ui"
|
|
19
19
|
defaultConfig {
|
|
20
20
|
versionCode 1
|
|
21
|
-
versionName "56.0.
|
|
21
|
+
versionName "56.0.3"
|
|
22
22
|
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
|
|
23
23
|
}
|
|
24
24
|
buildFeatures {
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
package expo.modules.ui
|
|
2
|
+
|
|
3
|
+
import androidx.compose.foundation.layout.Box
|
|
4
|
+
import androidx.compose.runtime.Composable
|
|
5
|
+
import androidx.compose.ui.Modifier
|
|
6
|
+
import androidx.compose.ui.draw.drawWithContent
|
|
7
|
+
import androidx.compose.ui.graphics.BlendMode
|
|
8
|
+
import androidx.compose.ui.graphics.CompositingStrategy
|
|
9
|
+
import androidx.compose.ui.graphics.graphicsLayer
|
|
10
|
+
import androidx.compose.ui.graphics.layer.drawLayer
|
|
11
|
+
import androidx.compose.ui.graphics.rememberGraphicsLayer
|
|
12
|
+
import expo.modules.kotlin.views.ComposeProps
|
|
13
|
+
import expo.modules.kotlin.views.FunctionalComposableScope
|
|
14
|
+
import expo.modules.kotlin.views.OptimizedComposeProps
|
|
15
|
+
import expo.modules.ui.convertibles.ContentAlignment
|
|
16
|
+
|
|
17
|
+
@OptimizedComposeProps
|
|
18
|
+
data class MaskViewProps(
|
|
19
|
+
val alignment: ContentAlignment = ContentAlignment.CENTER,
|
|
20
|
+
val modifiers: ModifierList = emptyList()
|
|
21
|
+
) : ComposeProps
|
|
22
|
+
|
|
23
|
+
@Composable
|
|
24
|
+
fun FunctionalComposableScope.MaskViewContent(props: MaskViewProps) {
|
|
25
|
+
val maskSlotView = findChildSlotView(view, "content")
|
|
26
|
+
val maskLayer = rememberGraphicsLayer().apply { blendMode = BlendMode.DstIn }
|
|
27
|
+
|
|
28
|
+
Box(
|
|
29
|
+
modifier = ModifierRegistry
|
|
30
|
+
.applyModifiers(props.modifiers, appContext, composableScope, globalEventDispatcher)
|
|
31
|
+
.graphicsLayer { compositingStrategy = CompositingStrategy.Offscreen }
|
|
32
|
+
.drawWithContent {
|
|
33
|
+
drawContent()
|
|
34
|
+
drawLayer(maskLayer)
|
|
35
|
+
}
|
|
36
|
+
) {
|
|
37
|
+
Children(UIComposableScope(), filter = { !isSlotView(it) })
|
|
38
|
+
|
|
39
|
+
if (maskSlotView != null) {
|
|
40
|
+
Box(
|
|
41
|
+
modifier = Modifier
|
|
42
|
+
.matchParentSize()
|
|
43
|
+
.drawWithContent {
|
|
44
|
+
maskLayer.record { this@drawWithContent.drawContent() }
|
|
45
|
+
},
|
|
46
|
+
contentAlignment = props.alignment.toComposeAlignment()
|
|
47
|
+
) {
|
|
48
|
+
with(UIComposableScope()) {
|
|
49
|
+
with(maskSlotView) {
|
|
50
|
+
Content()
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { MaskedViewProps } from './types';
|
|
2
|
+
/**
|
|
3
|
+
* Android implementation of `MaskedView`. Bridges arbitrary React Native children
|
|
4
|
+
* (and `maskElement`) into the Compose `MaskView` primitive via `RNHostView`.
|
|
5
|
+
*/
|
|
6
|
+
export declare function MaskedView(props: MaskedViewProps): import("react/jsx-runtime").JSX.Element;
|
|
7
|
+
export default MaskedView;
|
|
8
|
+
//# sourceMappingURL=MaskedView.android.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MaskedView.android.d.ts","sourceRoot":"","sources":["../../../src/community/masked-view/MaskedView.android.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAY/C;;;GAGG;AACH,wBAAgB,UAAU,CAAC,KAAK,EAAE,eAAe,2CAkBhD;AAED,eAAe,UAAU,CAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { MaskedViewProps } from './types';
|
|
2
|
+
/**
|
|
3
|
+
* Renders `children` with the alpha channel of `maskElement` applied as a mask:
|
|
4
|
+
* opaque pixels of `maskElement` reveal `children`, transparent pixels hide them.
|
|
5
|
+
*
|
|
6
|
+
* API-compatible with `@react-native-masked-view/masked-view`.
|
|
7
|
+
*/
|
|
8
|
+
export declare function MaskedView(props: MaskedViewProps): import("react/jsx-runtime").JSX.Element;
|
|
9
|
+
export default MaskedView;
|
|
10
|
+
//# sourceMappingURL=MaskedView.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MaskedView.d.ts","sourceRoot":"","sources":["../../../src/community/masked-view/MaskedView.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAI/C;;;;;GAKG;AAGH,wBAAgB,UAAU,CAAC,KAAK,EAAE,eAAe,2CAgBhD;AAED,eAAe,UAAU,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { MaskedViewProps } from './types';
|
|
2
|
+
/**
|
|
3
|
+
* iOS implementation of `MaskedView`. Bridges arbitrary React Native children
|
|
4
|
+
* (and `maskElement`) into the SwiftUI `Mask` primitive via `RNHostView`.
|
|
5
|
+
*/
|
|
6
|
+
export declare function MaskedView(props: MaskedViewProps): import("react/jsx-runtime").JSX.Element;
|
|
7
|
+
export default MaskedView;
|
|
8
|
+
//# sourceMappingURL=MaskedView.ios.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MaskedView.ios.d.ts","sourceRoot":"","sources":["../../../src/community/masked-view/MaskedView.ios.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAK/C;;;GAGG;AACH,wBAAgB,UAAU,CAAC,KAAK,EAAE,eAAe,2CAkBhD;AAED,eAAe,UAAU,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/community/masked-view/index.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,UAAU,IAAI,OAAO,EAAE,MAAM,cAAc,CAAC;AACrD,YAAY,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import type { ReactElement, ReactNode } from 'react';
|
|
2
|
+
import type { ViewProps } from 'react-native';
|
|
3
|
+
/**
|
|
4
|
+
* Drop-in props for `@react-native-masked-view/masked-view`'s `MaskedView`.
|
|
5
|
+
*
|
|
6
|
+
* @see https://github.com/callstack/masked-view
|
|
7
|
+
*/
|
|
8
|
+
export interface MaskedViewProps extends ViewProps {
|
|
9
|
+
/**
|
|
10
|
+
* The element used as the mask. Only opaque pixels of `maskElement` make the
|
|
11
|
+
* masked content visible — transparent pixels hide it.
|
|
12
|
+
*/
|
|
13
|
+
maskElement: ReactElement;
|
|
14
|
+
/**
|
|
15
|
+
* Content rendered behind the mask.
|
|
16
|
+
*/
|
|
17
|
+
children?: ReactNode;
|
|
18
|
+
}
|
|
19
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/community/masked-view/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AACrD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAE9C;;;;GAIG;AACH,MAAM,WAAW,eAAgB,SAAQ,SAAS;IAChD;;;OAGG;IACH,WAAW,EAAE,YAAY,CAAC;IAC1B;;OAEG;IACH,QAAQ,CAAC,EAAE,SAAS,CAAC;CACtB"}
|
|
@@ -1,3 +1,11 @@
|
|
|
1
|
-
import
|
|
2
|
-
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
import { type PickerItemProps, type PickerItemValue, type PickerProps } from './types';
|
|
3
|
+
/**
|
|
4
|
+
* A drop-in replacement for `@react-native-picker/picker` on Android.
|
|
5
|
+
* Renders a Material 3 `ExposedDropdownMenuBox` wrapped in a Host.
|
|
6
|
+
*/
|
|
7
|
+
export declare function Picker<T extends PickerItemValue>(props: PickerProps<T>): import("react/jsx-runtime").JSX.Element;
|
|
8
|
+
export declare namespace Picker {
|
|
9
|
+
var Item: React.ComponentType<PickerItemProps>;
|
|
10
|
+
}
|
|
3
11
|
//# sourceMappingURL=Picker.android.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Picker.android.d.ts","sourceRoot":"","sources":["../../../src/community/picker/Picker.android.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"Picker.android.d.ts","sourceRoot":"","sources":["../../../src/community/picker/Picker.android.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,OAAO,EAGL,KAAK,eAAe,EACpB,KAAK,eAAe,EACpB,KAAK,WAAW,EACjB,MAAM,SAAS,CAAC;AAYjB;;;GAGG;AACH,wBAAgB,MAAM,CAAC,CAAC,SAAS,eAAe,EAAE,KAAK,EAAE,WAAW,CAAC,CAAC,CAAC,2CA8CtE;yBA9Ce,MAAM"}
|
|
@@ -1,3 +1,11 @@
|
|
|
1
|
-
import
|
|
2
|
-
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
import { type PickerItemProps, type PickerItemValue, type PickerProps } from './types';
|
|
3
|
+
/**
|
|
4
|
+
* A drop-in replacement for `@react-native-picker/picker` on web.
|
|
5
|
+
* Renders a native `<select>` element.
|
|
6
|
+
*/
|
|
7
|
+
export declare function Picker<T extends PickerItemValue>(props: PickerProps<T>): import("react/jsx-runtime").JSX.Element;
|
|
8
|
+
export declare namespace Picker {
|
|
9
|
+
var Item: React.ComponentType<PickerItemProps>;
|
|
10
|
+
}
|
|
3
11
|
//# sourceMappingURL=Picker.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Picker.d.ts","sourceRoot":"","sources":["../../../src/community/picker/Picker.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"Picker.d.ts","sourceRoot":"","sources":["../../../src/community/picker/Picker.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,OAAO,EAGL,KAAK,eAAe,EACpB,KAAK,eAAe,EACpB,KAAK,WAAW,EACjB,MAAM,SAAS,CAAC;AAEjB;;;GAGG;AACH,wBAAgB,MAAM,CAAC,CAAC,SAAS,eAAe,EAAE,KAAK,EAAE,WAAW,CAAC,CAAC,CAAC,2CAiCtE;yBAjCe,MAAM"}
|
|
@@ -1,3 +1,11 @@
|
|
|
1
|
-
import
|
|
2
|
-
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
import { type PickerItemProps, type PickerItemValue, type PickerProps } from './types';
|
|
3
|
+
/**
|
|
4
|
+
* A drop-in replacement for `@react-native-picker/picker` on iOS.
|
|
5
|
+
* Renders a SwiftUI wheel picker wrapped in a Host.
|
|
6
|
+
*/
|
|
7
|
+
export declare function Picker<T extends PickerItemValue>(props: PickerProps<T>): import("react/jsx-runtime").JSX.Element;
|
|
8
|
+
export declare namespace Picker {
|
|
9
|
+
var Item: React.ComponentType<PickerItemProps>;
|
|
10
|
+
}
|
|
3
11
|
//# sourceMappingURL=Picker.ios.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Picker.ios.d.ts","sourceRoot":"","sources":["../../../src/community/picker/Picker.ios.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"Picker.ios.d.ts","sourceRoot":"","sources":["../../../src/community/picker/Picker.ios.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,OAAO,EAGL,KAAK,eAAe,EACpB,KAAK,eAAe,EACpB,KAAK,WAAW,EACjB,MAAM,SAAS,CAAC;AAejB;;;GAGG;AACH,wBAAgB,MAAM,CAAC,CAAC,SAAS,eAAe,EAAE,KAAK,EAAE,WAAW,CAAC,CAAC,CAAC,2CA8CtE;yBA9Ce,MAAM"}
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import { type Ref, type ReactNode, type ReactElement } from 'react';
|
|
2
|
-
import type
|
|
2
|
+
import { type StyleProp, type TextStyle, type ViewStyle } from 'react-native';
|
|
3
3
|
export type PickerItemValue = string | number | null;
|
|
4
4
|
/**
|
|
5
5
|
* Props for the `Picker.Item` component.
|
|
6
6
|
* Compatible with `@react-native-picker/picker`.
|
|
7
7
|
*/
|
|
8
|
-
export type PickerItemProps<T extends PickerItemValue> = {
|
|
8
|
+
export type PickerItemProps<T extends PickerItemValue = PickerItemValue> = {
|
|
9
9
|
/**
|
|
10
10
|
* Display text for the item.
|
|
11
11
|
*/
|
|
@@ -15,15 +15,19 @@ export type PickerItemProps<T extends PickerItemValue> = {
|
|
|
15
15
|
*/
|
|
16
16
|
value?: T;
|
|
17
17
|
/**
|
|
18
|
-
* Text color for the item.
|
|
19
|
-
* @platform ios
|
|
18
|
+
* Text color for the item. Equivalent to setting `color` in the `style` prop.
|
|
20
19
|
*/
|
|
21
20
|
color?: string;
|
|
22
21
|
/**
|
|
23
|
-
* Custom font family for the item.
|
|
24
|
-
* @platform ios
|
|
22
|
+
* Custom font family for the item. Equivalent to setting `fontFamily` in the `style` prop.
|
|
25
23
|
*/
|
|
26
24
|
fontFamily?: string;
|
|
25
|
+
/**
|
|
26
|
+
* Style applied to the item label. Only the following values take effect:
|
|
27
|
+
* `color`, `backgroundColor`, `fontFamily`, and `fontSize`. When also set
|
|
28
|
+
* via the top-level `color` or `fontFamily` props, values from `style` win.
|
|
29
|
+
*/
|
|
30
|
+
style?: StyleProp<TextStyle>;
|
|
27
31
|
/**
|
|
28
32
|
* Whether the item is enabled.
|
|
29
33
|
* @platform android
|
|
@@ -89,15 +93,13 @@ export type PickerRef = {
|
|
|
89
93
|
*/
|
|
90
94
|
blur: () => void;
|
|
91
95
|
};
|
|
92
|
-
export type PickerWithItems = {
|
|
93
|
-
<T extends PickerItemValue>(props: PickerProps<T>): ReactElement | null;
|
|
94
|
-
Item: typeof PickerItem;
|
|
95
|
-
};
|
|
96
96
|
export type ExtractedPickerItem<T extends PickerItemValue = PickerItemValue> = {
|
|
97
97
|
label: string;
|
|
98
98
|
value: T;
|
|
99
99
|
color?: string;
|
|
100
|
+
backgroundColor?: string;
|
|
100
101
|
fontFamily?: string;
|
|
102
|
+
fontSize?: number;
|
|
101
103
|
enabled?: boolean;
|
|
102
104
|
};
|
|
103
105
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/community/picker/types.tsx"],"names":[],"mappings":"AAAA,OAAO,EAA4B,KAAK,GAAG,EAAE,KAAK,SAAS,EAAE,KAAK,YAAY,EAAE,MAAM,OAAO,CAAC;AAC9F,OAAO,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/community/picker/types.tsx"],"names":[],"mappings":"AAAA,OAAO,EAA4B,KAAK,GAAG,EAAE,KAAK,SAAS,EAAE,KAAK,YAAY,EAAE,MAAM,OAAO,CAAC;AAC9F,OAAO,EAAc,KAAK,SAAS,EAAE,KAAK,SAAS,EAAE,KAAK,SAAS,EAAE,MAAM,cAAc,CAAC;AAE1F,MAAM,MAAM,eAAe,GAAG,MAAM,GAAG,MAAM,GAAG,IAAI,CAAC;AAErD;;;GAGG;AACH,MAAM,MAAM,eAAe,CAAC,CAAC,SAAS,eAAe,GAAG,eAAe,IAAI;IACzE;;OAEG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;OAEG;IACH,KAAK,CAAC,EAAE,CAAC,CAAC;IACV;;OAEG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;OAEG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB;;;;OAIG;IACH,KAAK,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;IAC7B;;;OAGG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB;;OAEG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF;;;GAGG;AACH,wBAAgB,UAAU,CAAC,CAAC,SAAS,eAAe,EAClD,MAAM,EAAE,eAAe,CAAC,CAAC,CAAC,GACzB,YAAY,GAAG,IAAI,CAErB;AAED;;;GAGG;AACH,MAAM,MAAM,WAAW,CAAC,CAAC,SAAS,eAAe,GAAG,eAAe,IAAI;IACrE;;OAEG;IACH,GAAG,CAAC,EAAE,GAAG,CAAC,SAAS,CAAC,CAAC;IACrB;;OAEG;IACH,aAAa,CAAC,EAAE,CAAC,CAAC;IAClB;;OAEG;IACH,aAAa,CAAC,EAAE,CAAC,SAAS,EAAE,CAAC,EAAE,SAAS,EAAE,MAAM,KAAK,IAAI,CAAC;IAC1D;;OAEG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB;;OAEG;IACH,KAAK,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;IAC7B;;OAEG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB;;OAEG;IACH,QAAQ,CAAC,EAAE,SAAS,CAAC;CACtB,CAAC;AAEF;;;GAGG;AACH,MAAM,MAAM,SAAS,GAAG;IACtB;;;OAGG;IACH,KAAK,EAAE,MAAM,IAAI,CAAC;IAClB;;;OAGG;IACH,IAAI,EAAE,MAAM,IAAI,CAAC;CAClB,CAAC;AAEF,MAAM,MAAM,mBAAmB,CAAC,CAAC,SAAS,eAAe,GAAG,eAAe,IAAI;IAC7E,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,CAAC,CAAC;IACT,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB,CAAC;AAEF;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,CAAC,SAAS,eAAe,EAC1D,QAAQ,EAAE,SAAS,GAClB,mBAAmB,CAAC,CAAC,CAAC,EAAE,CAkB1B"}
|
|
@@ -82,7 +82,7 @@ export declare const imePadding: () => import("./createModifier").ModifierConfig
|
|
|
82
82
|
export declare const offset: (x: number, y: number) => import("./createModifier").ModifierConfig;
|
|
83
83
|
/**
|
|
84
84
|
* Sets the background color.
|
|
85
|
-
* @param color -
|
|
85
|
+
* @param color - A color string (hex, e.g., `'#FF0000'`).
|
|
86
86
|
*/
|
|
87
87
|
export declare const background: (color: ColorValue) => import("./createModifier").ModifierConfig;
|
|
88
88
|
/**
|
package/expo-module.config.json
CHANGED
|
Binary file
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
813c4db4263146688584a4c5f309f653
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
15482bf66b78fc5bb944571c2ee52b665c21b307
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
e144b778f1df5f7e73be22ffe120819c376f3309599468cc22a5c5528ce3ad84
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
788dc7a233524ec8b7eed4a0f242bf546284f3a2ea501806e2e90047c3221702430584413d684677dc330195a378feed1bb1956e2d980c8f689ebce716cf54b6
|
|
Binary file
|
package/local-maven-repo/expo/modules/ui/expo.modules.ui/56.0.3/expo.modules.ui-56.0.3.aar.md5
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
ec6173e86a8ac7f1e588b08dc6ff96b1
|
package/local-maven-repo/expo/modules/ui/expo.modules.ui/56.0.3/expo.modules.ui-56.0.3.aar.sha1
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
f071c18852f0767d13d3b64a54aac75cb42108bd
|
package/local-maven-repo/expo/modules/ui/expo.modules.ui/56.0.3/expo.modules.ui-56.0.3.aar.sha256
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
c04258a22308940aa735f6f81a47fa83d842db257c39396b2e3d9007cb6802fb
|
package/local-maven-repo/expo/modules/ui/expo.modules.ui/56.0.3/expo.modules.ui-56.0.3.aar.sha512
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
24e656ae1e397c8abea2fb5a2d49bc826a58f84afd58b3104ff22cede3fcf720f86ac532223279fa5efda5c402d0c75f3ab700bdcbb5b0847c2618028243c04c
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
"component": {
|
|
4
4
|
"group": "expo.modules.ui",
|
|
5
5
|
"module": "expo.modules.ui",
|
|
6
|
-
"version": "56.0.
|
|
6
|
+
"version": "56.0.3",
|
|
7
7
|
"attributes": {
|
|
8
8
|
"org.gradle.status": "release"
|
|
9
9
|
}
|
|
@@ -24,13 +24,13 @@
|
|
|
24
24
|
},
|
|
25
25
|
"files": [
|
|
26
26
|
{
|
|
27
|
-
"name": "expo.modules.ui-56.0.
|
|
28
|
-
"url": "expo.modules.ui-56.0.
|
|
29
|
-
"size":
|
|
30
|
-
"sha512": "
|
|
31
|
-
"sha256": "
|
|
32
|
-
"sha1": "
|
|
33
|
-
"md5": "
|
|
27
|
+
"name": "expo.modules.ui-56.0.3.aar",
|
|
28
|
+
"url": "expo.modules.ui-56.0.3.aar",
|
|
29
|
+
"size": 1740154,
|
|
30
|
+
"sha512": "24e656ae1e397c8abea2fb5a2d49bc826a58f84afd58b3104ff22cede3fcf720f86ac532223279fa5efda5c402d0c75f3ab700bdcbb5b0847c2618028243c04c",
|
|
31
|
+
"sha256": "c04258a22308940aa735f6f81a47fa83d842db257c39396b2e3d9007cb6802fb",
|
|
32
|
+
"sha1": "f071c18852f0767d13d3b64a54aac75cb42108bd",
|
|
33
|
+
"md5": "ec6173e86a8ac7f1e588b08dc6ff96b1"
|
|
34
34
|
}
|
|
35
35
|
]
|
|
36
36
|
},
|
|
@@ -135,19 +135,19 @@
|
|
|
135
135
|
"group": "io.github.lukmccall.pika",
|
|
136
136
|
"module": "pika-api",
|
|
137
137
|
"version": {
|
|
138
|
-
"requires": "0.
|
|
138
|
+
"requires": "0.3.2"
|
|
139
139
|
}
|
|
140
140
|
}
|
|
141
141
|
],
|
|
142
142
|
"files": [
|
|
143
143
|
{
|
|
144
|
-
"name": "expo.modules.ui-56.0.
|
|
145
|
-
"url": "expo.modules.ui-56.0.
|
|
146
|
-
"size":
|
|
147
|
-
"sha512": "
|
|
148
|
-
"sha256": "
|
|
149
|
-
"sha1": "
|
|
150
|
-
"md5": "
|
|
144
|
+
"name": "expo.modules.ui-56.0.3.aar",
|
|
145
|
+
"url": "expo.modules.ui-56.0.3.aar",
|
|
146
|
+
"size": 1740154,
|
|
147
|
+
"sha512": "24e656ae1e397c8abea2fb5a2d49bc826a58f84afd58b3104ff22cede3fcf720f86ac532223279fa5efda5c402d0c75f3ab700bdcbb5b0847c2618028243c04c",
|
|
148
|
+
"sha256": "c04258a22308940aa735f6f81a47fa83d842db257c39396b2e3d9007cb6802fb",
|
|
149
|
+
"sha1": "f071c18852f0767d13d3b64a54aac75cb42108bd",
|
|
150
|
+
"md5": "ec6173e86a8ac7f1e588b08dc6ff96b1"
|
|
151
151
|
}
|
|
152
152
|
]
|
|
153
153
|
},
|
|
@@ -161,13 +161,13 @@
|
|
|
161
161
|
},
|
|
162
162
|
"files": [
|
|
163
163
|
{
|
|
164
|
-
"name": "expo.modules.ui-56.0.
|
|
165
|
-
"url": "expo.modules.ui-56.0.
|
|
166
|
-
"size":
|
|
167
|
-
"sha512": "
|
|
168
|
-
"sha256": "
|
|
169
|
-
"sha1": "
|
|
170
|
-
"md5": "
|
|
164
|
+
"name": "expo.modules.ui-56.0.3-sources.jar",
|
|
165
|
+
"url": "expo.modules.ui-56.0.3-sources.jar",
|
|
166
|
+
"size": 82167,
|
|
167
|
+
"sha512": "788dc7a233524ec8b7eed4a0f242bf546284f3a2ea501806e2e90047c3221702430584413d684677dc330195a378feed1bb1956e2d980c8f689ebce716cf54b6",
|
|
168
|
+
"sha256": "e144b778f1df5f7e73be22ffe120819c376f3309599468cc22a5c5528ce3ad84",
|
|
169
|
+
"sha1": "15482bf66b78fc5bb944571c2ee52b665c21b307",
|
|
170
|
+
"md5": "813c4db4263146688584a4c5f309f653"
|
|
171
171
|
}
|
|
172
172
|
]
|
|
173
173
|
}
|
package/local-maven-repo/expo/modules/ui/expo.modules.ui/56.0.3/expo.modules.ui-56.0.3.module.md5
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
9a80adc4e838c59474bb9026acd53433
|
package/local-maven-repo/expo/modules/ui/expo.modules.ui/56.0.3/expo.modules.ui-56.0.3.module.sha1
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
5a7ca98cf0b7d42beb78532a4de00ee4d1597e6e
|
package/local-maven-repo/expo/modules/ui/expo.modules.ui/56.0.3/expo.modules.ui-56.0.3.module.sha256
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
1b1e0569740ff5fbfa0a3412f1efbf8f7a5b3d577239f108ba4a5d51b39d41e6
|
package/local-maven-repo/expo/modules/ui/expo.modules.ui/56.0.3/expo.modules.ui-56.0.3.module.sha512
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
5d627db27038fcf6c659f4b5d030a112c19097b15258e490b60da47867204ddffed145a62b649b24be23e8ddb6668b98c31a14059489398be5c8f76782138a82
|
|
@@ -9,7 +9,7 @@
|
|
|
9
9
|
<modelVersion>4.0.0</modelVersion>
|
|
10
10
|
<groupId>expo.modules.ui</groupId>
|
|
11
11
|
<artifactId>expo.modules.ui</artifactId>
|
|
12
|
-
<version>56.0.
|
|
12
|
+
<version>56.0.3</version>
|
|
13
13
|
<packaging>aar</packaging>
|
|
14
14
|
<name>expo.modules.ui</name>
|
|
15
15
|
<url>https://github.com/expo/expo</url>
|
|
@@ -117,7 +117,7 @@
|
|
|
117
117
|
<dependency>
|
|
118
118
|
<groupId>io.github.lukmccall.pika</groupId>
|
|
119
119
|
<artifactId>pika-api</artifactId>
|
|
120
|
-
<version>0.
|
|
120
|
+
<version>0.3.2</version>
|
|
121
121
|
<scope>runtime</scope>
|
|
122
122
|
</dependency>
|
|
123
123
|
</dependencies>
|
package/local-maven-repo/expo/modules/ui/expo.modules.ui/56.0.3/expo.modules.ui-56.0.3.pom.md5
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
0d85db163ef7ad2031fd783734fbbfc2
|
package/local-maven-repo/expo/modules/ui/expo.modules.ui/56.0.3/expo.modules.ui-56.0.3.pom.sha1
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
b6801cacf665cc9e2aecf9d0bb04c98f0ed1aa29
|
package/local-maven-repo/expo/modules/ui/expo.modules.ui/56.0.3/expo.modules.ui-56.0.3.pom.sha256
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
8879720c37c6bebdc6150d3fed464da86ddcece3b0e75759ce3ab7f48943fe06
|
package/local-maven-repo/expo/modules/ui/expo.modules.ui/56.0.3/expo.modules.ui-56.0.3.pom.sha512
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
2ecda699c389b7f19611c8a6c00c5011f69fdfb9d25c02997f93ee1e8037fc441b499a230e68ad1683bd3a3f3b5e08c139e04268319788a2c9852eb148bbb356
|
|
@@ -3,11 +3,11 @@
|
|
|
3
3
|
<groupId>expo.modules.ui</groupId>
|
|
4
4
|
<artifactId>expo.modules.ui</artifactId>
|
|
5
5
|
<versioning>
|
|
6
|
-
<latest>56.0.
|
|
7
|
-
<release>56.0.
|
|
6
|
+
<latest>56.0.3</latest>
|
|
7
|
+
<release>56.0.3</release>
|
|
8
8
|
<versions>
|
|
9
|
-
<version>56.0.
|
|
9
|
+
<version>56.0.3</version>
|
|
10
10
|
</versions>
|
|
11
|
-
<lastUpdated>
|
|
11
|
+
<lastUpdated>20260507183248</lastUpdated>
|
|
12
12
|
</versioning>
|
|
13
13
|
</metadata>
|
|
@@ -1 +1 @@
|
|
|
1
|
-
|
|
1
|
+
2702a9cd8caa702a371daaa128e279b6
|
|
@@ -1 +1 @@
|
|
|
1
|
-
|
|
1
|
+
28b12bfa1f6047e1d7d83a26d0634e6ea132984d
|
|
@@ -1 +1 @@
|
|
|
1
|
-
|
|
1
|
+
bec6765e9b4021cab658bdd7166664ad2965e243fe454dceb03eee957a882710
|
|
@@ -1 +1 @@
|
|
|
1
|
-
|
|
1
|
+
7d81095908e1c9f3e0480cb0787557ebc93b0721ba5da187bbabf0b2efb1f05ca77ff00d9fac3de537706e203024f5439428a890074ef651b619864bd44e2d44
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@expo/ui",
|
|
3
|
-
"version": "56.0.
|
|
3
|
+
"version": "56.0.3",
|
|
4
4
|
"description": "A collection of UI components",
|
|
5
5
|
"sideEffects": [
|
|
6
6
|
"*.fx.js"
|
|
@@ -43,6 +43,10 @@
|
|
|
43
43
|
"types": "./build/community/picker/index.d.ts",
|
|
44
44
|
"default": "./src/community/picker/index.tsx"
|
|
45
45
|
},
|
|
46
|
+
"./community/masked-view": {
|
|
47
|
+
"types": "./build/community/masked-view/index.d.ts",
|
|
48
|
+
"default": "./src/community/masked-view/index.tsx"
|
|
49
|
+
},
|
|
46
50
|
"./babel-plugin": {
|
|
47
51
|
"types": "./plugin/babel-plugin.d.ts",
|
|
48
52
|
"default": "./plugin/babel-plugin.js"
|
|
@@ -79,8 +83,8 @@
|
|
|
79
83
|
"@types/react": "~19.2.0",
|
|
80
84
|
"react-native-reanimated": "4.3.0",
|
|
81
85
|
"react-native-worklets": "0.8.3",
|
|
82
|
-
"expo": "56.0.0-preview.
|
|
83
|
-
"expo-module-scripts": "56.0.
|
|
86
|
+
"expo": "56.0.0-preview.6",
|
|
87
|
+
"expo-module-scripts": "56.0.2"
|
|
84
88
|
},
|
|
85
89
|
"jest": {
|
|
86
90
|
"preset": "expo-module-scripts"
|
|
@@ -108,7 +112,7 @@
|
|
|
108
112
|
"optional": true
|
|
109
113
|
}
|
|
110
114
|
},
|
|
111
|
-
"gitHead": "
|
|
115
|
+
"gitHead": "d7b4e5edff4bf2e619d2c2f16d158798c6d592ef",
|
|
112
116
|
"scripts": {
|
|
113
117
|
"build": "expo-module build",
|
|
114
118
|
"clean": "expo-module clean",
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import { requireNativeView } from 'expo';
|
|
2
|
+
import { StyleSheet, View } from 'react-native';
|
|
3
|
+
|
|
4
|
+
import type { MaskedViewProps } from './types';
|
|
5
|
+
import { Host } from '../../jetpack-compose/Host';
|
|
6
|
+
import { RNHostView } from '../../jetpack-compose/RNHostView';
|
|
7
|
+
import { Slot } from '../../jetpack-compose/SlotView';
|
|
8
|
+
import { fillMaxSize } from '../../jetpack-compose/modifiers';
|
|
9
|
+
|
|
10
|
+
const MaskNativeView: React.ComponentType<{
|
|
11
|
+
alignment?: 'topStart';
|
|
12
|
+
modifiers?: ReturnType<typeof fillMaxSize>[];
|
|
13
|
+
children?: React.ReactNode;
|
|
14
|
+
}> = requireNativeView('ExpoUI', 'MaskView');
|
|
15
|
+
|
|
16
|
+
/**
|
|
17
|
+
* Android implementation of `MaskedView`. Bridges arbitrary React Native children
|
|
18
|
+
* (and `maskElement`) into the Compose `MaskView` primitive via `RNHostView`.
|
|
19
|
+
*/
|
|
20
|
+
export function MaskedView(props: MaskedViewProps) {
|
|
21
|
+
const { maskElement, children, style, ...viewProps } = props;
|
|
22
|
+
return (
|
|
23
|
+
<View {...viewProps} style={style}>
|
|
24
|
+
<Host style={StyleSheet.absoluteFill}>
|
|
25
|
+
<MaskNativeView alignment="topStart" modifiers={[fillMaxSize()]}>
|
|
26
|
+
<RNHostView modifiers={[fillMaxSize()]}>
|
|
27
|
+
<View style={[StyleSheet.absoluteFill, style]}>{children}</View>
|
|
28
|
+
</RNHostView>
|
|
29
|
+
<Slot slotName="content">
|
|
30
|
+
<RNHostView modifiers={[fillMaxSize()]}>
|
|
31
|
+
<View style={[StyleSheet.absoluteFill, style]}>{maskElement}</View>
|
|
32
|
+
</RNHostView>
|
|
33
|
+
</Slot>
|
|
34
|
+
</MaskNativeView>
|
|
35
|
+
</Host>
|
|
36
|
+
</View>
|
|
37
|
+
);
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
export default MaskedView;
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { StyleSheet, View } from 'react-native';
|
|
2
|
+
|
|
3
|
+
import type { MaskedViewProps } from './types';
|
|
4
|
+
import { Host } from '../../swift-ui/Host';
|
|
5
|
+
import { Mask } from '../../swift-ui/Mask';
|
|
6
|
+
import { RNHostView } from '../../swift-ui/RNHostView';
|
|
7
|
+
|
|
8
|
+
/**
|
|
9
|
+
* iOS implementation of `MaskedView`. Bridges arbitrary React Native children
|
|
10
|
+
* (and `maskElement`) into the SwiftUI `Mask` primitive via `RNHostView`.
|
|
11
|
+
*/
|
|
12
|
+
export function MaskedView(props: MaskedViewProps) {
|
|
13
|
+
const { maskElement, children, style, ...viewProps } = props;
|
|
14
|
+
return (
|
|
15
|
+
<View {...viewProps} style={style}>
|
|
16
|
+
<Host style={StyleSheet.absoluteFill}>
|
|
17
|
+
<Mask alignment="topLeading">
|
|
18
|
+
<RNHostView>
|
|
19
|
+
<View style={[StyleSheet.absoluteFill, style]}>{children}</View>
|
|
20
|
+
</RNHostView>
|
|
21
|
+
<Mask.Content>
|
|
22
|
+
<RNHostView>
|
|
23
|
+
<View style={[StyleSheet.absoluteFill, style]}>{maskElement}</View>
|
|
24
|
+
</RNHostView>
|
|
25
|
+
</Mask.Content>
|
|
26
|
+
</Mask>
|
|
27
|
+
</Host>
|
|
28
|
+
</View>
|
|
29
|
+
);
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
export default MaskedView;
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { useEffect } from 'react';
|
|
2
|
+
import { View } from 'react-native';
|
|
3
|
+
|
|
4
|
+
import type { MaskedViewProps } from './types';
|
|
5
|
+
|
|
6
|
+
let warned = false;
|
|
7
|
+
|
|
8
|
+
/**
|
|
9
|
+
* Renders `children` with the alpha channel of `maskElement` applied as a mask:
|
|
10
|
+
* opaque pixels of `maskElement` reveal `children`, transparent pixels hide them.
|
|
11
|
+
*
|
|
12
|
+
* API-compatible with `@react-native-masked-view/masked-view`.
|
|
13
|
+
*/
|
|
14
|
+
// This default file is used on platforms without a `.<platform>.tsx` override
|
|
15
|
+
// (notably web). It renders children unmasked and warns once.
|
|
16
|
+
export function MaskedView(props: MaskedViewProps) {
|
|
17
|
+
const { maskElement: _maskElement, children, style, ...rest } = props;
|
|
18
|
+
useEffect(() => {
|
|
19
|
+
if (!warned) {
|
|
20
|
+
warned = true;
|
|
21
|
+
console.warn(
|
|
22
|
+
'[@expo/ui/community/masked-view] MaskedView is not implemented on this platform. ' +
|
|
23
|
+
'Children will render without a mask.'
|
|
24
|
+
);
|
|
25
|
+
}
|
|
26
|
+
}, []);
|
|
27
|
+
return (
|
|
28
|
+
<View {...rest} style={style}>
|
|
29
|
+
{children}
|
|
30
|
+
</View>
|
|
31
|
+
);
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
export default MaskedView;
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import type { ReactElement, ReactNode } from 'react';
|
|
2
|
+
import type { ViewProps } from 'react-native';
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* Drop-in props for `@react-native-masked-view/masked-view`'s `MaskedView`.
|
|
6
|
+
*
|
|
7
|
+
* @see https://github.com/callstack/masked-view
|
|
8
|
+
*/
|
|
9
|
+
export interface MaskedViewProps extends ViewProps {
|
|
10
|
+
/**
|
|
11
|
+
* The element used as the mask. Only opaque pixels of `maskElement` make the
|
|
12
|
+
* masked content visible — transparent pixels hide it.
|
|
13
|
+
*/
|
|
14
|
+
maskElement: ReactElement;
|
|
15
|
+
/**
|
|
16
|
+
* Content rendered behind the mask.
|
|
17
|
+
*/
|
|
18
|
+
children?: ReactNode;
|
|
19
|
+
}
|
|
@@ -3,7 +3,7 @@ import * as React from 'react';
|
|
|
3
3
|
import {
|
|
4
4
|
extractPickerItems,
|
|
5
5
|
PickerItem,
|
|
6
|
-
type
|
|
6
|
+
type PickerItemProps,
|
|
7
7
|
type PickerItemValue,
|
|
8
8
|
type PickerProps,
|
|
9
9
|
} from './types';
|
|
@@ -22,7 +22,7 @@ import { menuAnchor } from '../../jetpack-compose/modifiers';
|
|
|
22
22
|
* A drop-in replacement for `@react-native-picker/picker` on Android.
|
|
23
23
|
* Renders a Material 3 `ExposedDropdownMenuBox` wrapped in a Host.
|
|
24
24
|
*/
|
|
25
|
-
function
|
|
25
|
+
export function Picker<T extends PickerItemValue>(props: PickerProps<T>) {
|
|
26
26
|
const { selectedValue, onValueChange, enabled, style, children, ref } = props;
|
|
27
27
|
const items = extractPickerItems<T>(children);
|
|
28
28
|
const [expanded, setExpanded] = React.useState(false);
|
|
@@ -52,7 +52,15 @@ function PickerImpl<T extends PickerItemValue>(props: PickerProps<T>) {
|
|
|
52
52
|
setExpanded(false);
|
|
53
53
|
}}>
|
|
54
54
|
<DropdownMenuItem.Text>
|
|
55
|
-
<Text
|
|
55
|
+
<Text
|
|
56
|
+
color={item.color}
|
|
57
|
+
style={{
|
|
58
|
+
fontFamily: item.fontFamily,
|
|
59
|
+
fontSize: item.fontSize,
|
|
60
|
+
background: item.backgroundColor,
|
|
61
|
+
}}>
|
|
62
|
+
{item.label}
|
|
63
|
+
</Text>
|
|
56
64
|
</DropdownMenuItem.Text>
|
|
57
65
|
</DropdownMenuItem>
|
|
58
66
|
))}
|
|
@@ -62,5 +70,4 @@ function PickerImpl<T extends PickerItemValue>(props: PickerProps<T>) {
|
|
|
62
70
|
);
|
|
63
71
|
}
|
|
64
72
|
|
|
65
|
-
|
|
66
|
-
export const Picker: PickerWithItems = Object.assign(PickerImpl, { Item: PickerItem });
|
|
73
|
+
Picker.Item = PickerItem as React.ComponentType<PickerItemProps>;
|
|
@@ -3,7 +3,7 @@ import * as React from 'react';
|
|
|
3
3
|
import {
|
|
4
4
|
extractPickerItems,
|
|
5
5
|
PickerItem,
|
|
6
|
-
type
|
|
6
|
+
type PickerItemProps,
|
|
7
7
|
type PickerItemValue,
|
|
8
8
|
type PickerProps,
|
|
9
9
|
} from './types';
|
|
@@ -11,6 +11,7 @@ import { Host } from '../../swift-ui/Host';
|
|
|
11
11
|
import { Picker as SwiftUIPicker } from '../../swift-ui/Picker';
|
|
12
12
|
import { Text } from '../../swift-ui/Text';
|
|
13
13
|
import {
|
|
14
|
+
backgroundOverlay,
|
|
14
15
|
disabled as disabledModifier,
|
|
15
16
|
fixedSize,
|
|
16
17
|
foregroundStyle,
|
|
@@ -24,7 +25,7 @@ import { type ModifierConfig } from '../../types';
|
|
|
24
25
|
* A drop-in replacement for `@react-native-picker/picker` on iOS.
|
|
25
26
|
* Renders a SwiftUI wheel picker wrapped in a Host.
|
|
26
27
|
*/
|
|
27
|
-
function
|
|
28
|
+
export function Picker<T extends PickerItemValue>(props: PickerProps<T>) {
|
|
28
29
|
const { selectedValue, onValueChange, enabled, style, children, ref } = props;
|
|
29
30
|
const items = extractPickerItems<T>(children);
|
|
30
31
|
const modifiers = [
|
|
@@ -55,8 +56,11 @@ function PickerImpl<T extends PickerItemValue>(props: PickerProps<T>) {
|
|
|
55
56
|
if (item.color) {
|
|
56
57
|
itemModifiers.push(foregroundStyle(item.color));
|
|
57
58
|
}
|
|
58
|
-
if (item.fontFamily) {
|
|
59
|
-
itemModifiers.push(font({ family: item.fontFamily }));
|
|
59
|
+
if (item.fontFamily || item.fontSize != null) {
|
|
60
|
+
itemModifiers.push(font({ family: item.fontFamily, size: item.fontSize }));
|
|
61
|
+
}
|
|
62
|
+
if (item.backgroundColor) {
|
|
63
|
+
itemModifiers.push(backgroundOverlay({ color: item.backgroundColor }));
|
|
60
64
|
}
|
|
61
65
|
return (
|
|
62
66
|
<Text key={String(item.value ?? index)} modifiers={itemModifiers}>
|
|
@@ -69,5 +73,4 @@ function PickerImpl<T extends PickerItemValue>(props: PickerProps<T>) {
|
|
|
69
73
|
);
|
|
70
74
|
}
|
|
71
75
|
|
|
72
|
-
|
|
73
|
-
export const Picker: PickerWithItems = Object.assign(PickerImpl, { Item: PickerItem });
|
|
76
|
+
Picker.Item = PickerItem as React.ComponentType<PickerItemProps>;
|
|
@@ -3,7 +3,7 @@ import * as React from 'react';
|
|
|
3
3
|
import {
|
|
4
4
|
extractPickerItems,
|
|
5
5
|
PickerItem,
|
|
6
|
-
type
|
|
6
|
+
type PickerItemProps,
|
|
7
7
|
type PickerItemValue,
|
|
8
8
|
type PickerProps,
|
|
9
9
|
} from './types';
|
|
@@ -12,7 +12,7 @@ import {
|
|
|
12
12
|
* A drop-in replacement for `@react-native-picker/picker` on web.
|
|
13
13
|
* Renders a native `<select>` element.
|
|
14
14
|
*/
|
|
15
|
-
function
|
|
15
|
+
export function Picker<T extends PickerItemValue>(props: PickerProps<T>) {
|
|
16
16
|
const { selectedValue, onValueChange, enabled, style, children, ref } = props;
|
|
17
17
|
const items = extractPickerItems<T>(children);
|
|
18
18
|
const selectRef = React.useRef<HTMLSelectElement>(null);
|
|
@@ -47,5 +47,4 @@ function PickerImpl<T extends PickerItemValue>(props: PickerProps<T>) {
|
|
|
47
47
|
);
|
|
48
48
|
}
|
|
49
49
|
|
|
50
|
-
|
|
51
|
-
export const Picker: PickerWithItems = Object.assign(PickerImpl, { Item: PickerItem });
|
|
50
|
+
Picker.Item = PickerItem as React.ComponentType<PickerItemProps>;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { Children, isValidElement, type Ref, type ReactNode, type ReactElement } from 'react';
|
|
2
|
-
import type
|
|
2
|
+
import { StyleSheet, type StyleProp, type TextStyle, type ViewStyle } from 'react-native';
|
|
3
3
|
|
|
4
4
|
export type PickerItemValue = string | number | null;
|
|
5
5
|
|
|
@@ -7,7 +7,7 @@ export type PickerItemValue = string | number | null;
|
|
|
7
7
|
* Props for the `Picker.Item` component.
|
|
8
8
|
* Compatible with `@react-native-picker/picker`.
|
|
9
9
|
*/
|
|
10
|
-
export type PickerItemProps<T extends PickerItemValue> = {
|
|
10
|
+
export type PickerItemProps<T extends PickerItemValue = PickerItemValue> = {
|
|
11
11
|
/**
|
|
12
12
|
* Display text for the item.
|
|
13
13
|
*/
|
|
@@ -17,15 +17,19 @@ export type PickerItemProps<T extends PickerItemValue> = {
|
|
|
17
17
|
*/
|
|
18
18
|
value?: T;
|
|
19
19
|
/**
|
|
20
|
-
* Text color for the item.
|
|
21
|
-
* @platform ios
|
|
20
|
+
* Text color for the item. Equivalent to setting `color` in the `style` prop.
|
|
22
21
|
*/
|
|
23
22
|
color?: string;
|
|
24
23
|
/**
|
|
25
|
-
* Custom font family for the item.
|
|
26
|
-
* @platform ios
|
|
24
|
+
* Custom font family for the item. Equivalent to setting `fontFamily` in the `style` prop.
|
|
27
25
|
*/
|
|
28
26
|
fontFamily?: string;
|
|
27
|
+
/**
|
|
28
|
+
* Style applied to the item label. Only the following values take effect:
|
|
29
|
+
* `color`, `backgroundColor`, `fontFamily`, and `fontSize`. When also set
|
|
30
|
+
* via the top-level `color` or `fontFamily` props, values from `style` win.
|
|
31
|
+
*/
|
|
32
|
+
style?: StyleProp<TextStyle>;
|
|
29
33
|
/**
|
|
30
34
|
* Whether the item is enabled.
|
|
31
35
|
* @platform android
|
|
@@ -99,16 +103,13 @@ export type PickerRef = {
|
|
|
99
103
|
blur: () => void;
|
|
100
104
|
};
|
|
101
105
|
|
|
102
|
-
export type PickerWithItems = {
|
|
103
|
-
<T extends PickerItemValue>(props: PickerProps<T>): ReactElement | null;
|
|
104
|
-
Item: typeof PickerItem;
|
|
105
|
-
};
|
|
106
|
-
|
|
107
106
|
export type ExtractedPickerItem<T extends PickerItemValue = PickerItemValue> = {
|
|
108
107
|
label: string;
|
|
109
108
|
value: T;
|
|
110
109
|
color?: string;
|
|
110
|
+
backgroundColor?: string;
|
|
111
111
|
fontFamily?: string;
|
|
112
|
+
fontSize?: number;
|
|
112
113
|
enabled?: boolean;
|
|
113
114
|
};
|
|
114
115
|
|
|
@@ -123,11 +124,16 @@ export function extractPickerItems<T extends PickerItemValue>(
|
|
|
123
124
|
(child): child is ReactElement<PickerItemProps<T>> =>
|
|
124
125
|
isValidElement(child) && child.type === PickerItem
|
|
125
126
|
)
|
|
126
|
-
.map(({ props: { label = '', value, color, fontFamily, enabled } }) =>
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
127
|
+
.map(({ props: { label = '', value, color, fontFamily, style, enabled } }) => {
|
|
128
|
+
const flat = StyleSheet.flatten(style);
|
|
129
|
+
return {
|
|
130
|
+
label,
|
|
131
|
+
value: value as T,
|
|
132
|
+
color: (flat?.color as string | undefined) ?? color,
|
|
133
|
+
backgroundColor: flat?.backgroundColor as string | undefined,
|
|
134
|
+
fontFamily: flat?.fontFamily ?? fontFamily,
|
|
135
|
+
fontSize: flat?.fontSize,
|
|
136
|
+
enabled,
|
|
137
|
+
};
|
|
138
|
+
});
|
|
133
139
|
}
|
|
@@ -142,7 +142,7 @@ export const offset = (x: number, y: number) => createModifier('offset', { x, y
|
|
|
142
142
|
|
|
143
143
|
/**
|
|
144
144
|
* Sets the background color.
|
|
145
|
-
* @param color -
|
|
145
|
+
* @param color - A color string (hex, e.g., `'#FF0000'`).
|
|
146
146
|
*/
|
|
147
147
|
export const background = (color: ColorValue) => createModifier('background', { color });
|
|
148
148
|
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
25616b6077449f887cfccb76c53298bf
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
fcc61a62df8eb780a822914cee4b167b6e70519d
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
30e043f7f04143f7b44a22ed5db105d71be86f4aa49f21d082d3c9acd84ea32a
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
69bc561d70dc77219abb25903821b7f0f170b1a06c4cd40714ece8709b85404ad09bcd4fc9cbe67faf9a04e413a625e4880be8a5c78fd6426ed8f78f4b7ce4f6
|
|
Binary file
|
package/local-maven-repo/expo/modules/ui/expo.modules.ui/56.0.2/expo.modules.ui-56.0.2.aar.md5
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
c9daa8165fdcd9ceb61785e0c560a949
|
package/local-maven-repo/expo/modules/ui/expo.modules.ui/56.0.2/expo.modules.ui-56.0.2.aar.sha1
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
a60331ab720130c5c2ab6c627a68c5c8f15aa917
|
package/local-maven-repo/expo/modules/ui/expo.modules.ui/56.0.2/expo.modules.ui-56.0.2.aar.sha256
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
7c0946b01b4c9e3cc7c3790f36779a0d5ff3bb832562de233badb2168d613e45
|
package/local-maven-repo/expo/modules/ui/expo.modules.ui/56.0.2/expo.modules.ui-56.0.2.aar.sha512
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
222495b3d9e3c00846f79962ed79cdd46c2a2a2df76077b8752576200bfd728c3cc885cc0e0762869c57b24391882b9ee65ffa3f02a2c2490faa44e983640dd4
|
package/local-maven-repo/expo/modules/ui/expo.modules.ui/56.0.2/expo.modules.ui-56.0.2.module.md5
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
fe21a3ebc77261ba42803b0badb6b4b0
|
package/local-maven-repo/expo/modules/ui/expo.modules.ui/56.0.2/expo.modules.ui-56.0.2.module.sha1
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
7462e9cebfaf3618633f57bc7ccb3b20a78b1535
|
package/local-maven-repo/expo/modules/ui/expo.modules.ui/56.0.2/expo.modules.ui-56.0.2.module.sha256
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
ee0321724e44b775e5f24bf1712946ac3d8e8d71fffb8f567cfd13a631a3fd49
|
package/local-maven-repo/expo/modules/ui/expo.modules.ui/56.0.2/expo.modules.ui-56.0.2.module.sha512
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
30a3a47f5c5c292e336d0eaf7363d8e4efabd422856c4012f90ae524197559a099c8bb06597ab67b976bd35f9dcd6db468520ab1c0460a6a057a1c117cb1ad8d
|
package/local-maven-repo/expo/modules/ui/expo.modules.ui/56.0.2/expo.modules.ui-56.0.2.pom.md5
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
c2c86437b146e2fb044d5ec4d1ecf5fe
|
package/local-maven-repo/expo/modules/ui/expo.modules.ui/56.0.2/expo.modules.ui-56.0.2.pom.sha1
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
ae97b3c0a7e08063fe763d3aa22eb4a39d49e893
|
package/local-maven-repo/expo/modules/ui/expo.modules.ui/56.0.2/expo.modules.ui-56.0.2.pom.sha256
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
94e0b9c22f4243dd3fae58fdff830551be50f8d9ee42e83c55c1dcb3dd50f6bb
|
package/local-maven-repo/expo/modules/ui/expo.modules.ui/56.0.2/expo.modules.ui-56.0.2.pom.sha512
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
e716bb9fb13a6f3a41154d67632da322143d58a8313021c86a7725304a9b6159fb13672249e717876b6750f16d205dde1fd8291903c19e23835a3c626532ecfa
|