@expo/ui 58.0.5 → 58.0.7
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 +22 -0
- package/android/build.gradle +2 -2
- package/android/src/main/java/expo/modules/ui/ExpoUIModule.kt +9 -0
- package/android/src/main/java/expo/modules/ui/LazyColumnView.kt +6 -1
- package/android/src/main/java/expo/modules/ui/LazyItemsView.kt +313 -0
- package/android/src/main/java/expo/modules/ui/LazyRowView.kt +6 -1
- package/android/src/main/java/expo/modules/ui/RNHostView.kt +18 -4
- package/build/jetpack-compose/LazyColumn/index.d.ts +6 -0
- package/build/jetpack-compose/LazyColumn/index.js +2 -0
- package/build/jetpack-compose/LazyColumn/index.js.map +1 -1
- package/build/jetpack-compose/LazyItems/index.d.ts +54 -0
- package/build/jetpack-compose/LazyItems/index.js +63 -0
- package/build/jetpack-compose/LazyItems/index.js.map +1 -0
- package/build/jetpack-compose/LazyRow/index.d.ts +6 -0
- package/build/jetpack-compose/LazyRow/index.js +2 -0
- package/build/jetpack-compose/LazyRow/index.js.map +1 -1
- package/build/jetpack-compose/index.d.ts +1 -0
- package/build/jetpack-compose/index.js.map +1 -1
- package/build/recycling/useRecycledRows.d.ts +52 -0
- package/build/recycling/useRecycledRows.js +121 -0
- package/build/recycling/useRecycledRows.js.map +1 -0
- package/build/recycling/window.d.ts +5 -0
- package/build/recycling/window.js +28 -0
- package/build/recycling/window.js.map +1 -0
- package/build/swift-ui/List/DataListForEach.d.ts +52 -0
- package/build/swift-ui/List/DataListForEach.js +46 -0
- package/build/swift-ui/List/DataListForEach.js.map +1 -0
- package/build/swift-ui/List/ListForEach.d.ts +15 -4
- package/build/swift-ui/List/ListForEach.js +41 -3
- package/build/swift-ui/List/ListForEach.js.map +1 -1
- package/build/swift-ui/List/index.d.ts +1 -1
- package/build/swift-ui/List/index.js.map +1 -1
- package/build/swift-ui/modifiers/index.d.ts +16 -7
- package/build/swift-ui/modifiers/index.js +10 -5
- package/build/swift-ui/modifiers/index.js.map +1 -1
- package/build/swift-ui/modifiers/presentationModifiers.d.ts +8 -0
- package/build/swift-ui/modifiers/presentationModifiers.js +9 -0
- package/build/swift-ui/modifiers/presentationModifiers.js.map +1 -1
- package/build/universal/transformStyle.ios.js +4 -3
- package/build/universal/transformStyle.ios.js.map +1 -1
- package/expo-module.config.json +1 -1
- package/ios/DataListForEachView.swift +255 -0
- package/ios/ExpoUIModule.swift +3 -0
- package/ios/ListForEachView.swift +12 -3
- package/ios/Modifiers/PresentationModifiers.swift +10 -0
- package/ios/Modifiers/ViewModifierRegistry.swift +4 -0
- package/local-maven-repo/expo/modules/ui/expo.modules.ui/{58.0.5/expo.modules.ui-58.0.5-sources.jar → 58.0.7/expo.modules.ui-58.0.7-sources.jar} +0 -0
- package/local-maven-repo/expo/modules/ui/expo.modules.ui/58.0.7/expo.modules.ui-58.0.7-sources.jar.md5 +1 -0
- package/local-maven-repo/expo/modules/ui/expo.modules.ui/58.0.7/expo.modules.ui-58.0.7-sources.jar.sha1 +1 -0
- package/local-maven-repo/expo/modules/ui/expo.modules.ui/58.0.7/expo.modules.ui-58.0.7-sources.jar.sha256 +1 -0
- package/local-maven-repo/expo/modules/ui/expo.modules.ui/58.0.7/expo.modules.ui-58.0.7-sources.jar.sha512 +1 -0
- package/local-maven-repo/expo/modules/ui/expo.modules.ui/58.0.7/expo.modules.ui-58.0.7.aar +0 -0
- package/local-maven-repo/expo/modules/ui/expo.modules.ui/58.0.7/expo.modules.ui-58.0.7.aar.md5 +1 -0
- package/local-maven-repo/expo/modules/ui/expo.modules.ui/58.0.7/expo.modules.ui-58.0.7.aar.sha1 +1 -0
- package/local-maven-repo/expo/modules/ui/expo.modules.ui/58.0.7/expo.modules.ui-58.0.7.aar.sha256 +1 -0
- package/local-maven-repo/expo/modules/ui/expo.modules.ui/58.0.7/expo.modules.ui-58.0.7.aar.sha512 +1 -0
- package/local-maven-repo/expo/modules/ui/expo.modules.ui/{58.0.5/expo.modules.ui-58.0.5.module → 58.0.7/expo.modules.ui-58.0.7.module} +23 -23
- package/local-maven-repo/expo/modules/ui/expo.modules.ui/58.0.7/expo.modules.ui-58.0.7.module.md5 +1 -0
- package/local-maven-repo/expo/modules/ui/expo.modules.ui/58.0.7/expo.modules.ui-58.0.7.module.sha1 +1 -0
- package/local-maven-repo/expo/modules/ui/expo.modules.ui/58.0.7/expo.modules.ui-58.0.7.module.sha256 +1 -0
- package/local-maven-repo/expo/modules/ui/expo.modules.ui/58.0.7/expo.modules.ui-58.0.7.module.sha512 +1 -0
- package/local-maven-repo/expo/modules/ui/expo.modules.ui/{58.0.5/expo.modules.ui-58.0.5.pom → 58.0.7/expo.modules.ui-58.0.7.pom} +2 -2
- package/local-maven-repo/expo/modules/ui/expo.modules.ui/58.0.7/expo.modules.ui-58.0.7.pom.md5 +1 -0
- package/local-maven-repo/expo/modules/ui/expo.modules.ui/58.0.7/expo.modules.ui-58.0.7.pom.sha1 +1 -0
- package/local-maven-repo/expo/modules/ui/expo.modules.ui/58.0.7/expo.modules.ui-58.0.7.pom.sha256 +1 -0
- package/local-maven-repo/expo/modules/ui/expo.modules.ui/58.0.7/expo.modules.ui-58.0.7.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 +4 -4
- package/prebuilds/output/debug/xcframeworks/ExpoUI.tar.gz +0 -0
- package/prebuilds/output/release/xcframeworks/ExpoUI.tar.gz +0 -0
- package/src/jetpack-compose/LazyColumn/index.tsx +3 -0
- package/src/jetpack-compose/LazyItems/index.tsx +121 -0
- package/src/jetpack-compose/LazyRow/index.tsx +3 -0
- package/src/jetpack-compose/index.ts +1 -0
- package/src/recycling/useRecycledRows.tsx +200 -0
- package/src/recycling/window.ts +28 -0
- package/src/swift-ui/List/DataListForEach.tsx +128 -0
- package/src/swift-ui/List/ListForEach.tsx +57 -6
- package/src/swift-ui/List/index.tsx +1 -1
- package/src/swift-ui/modifiers/index.ts +50 -14
- package/src/swift-ui/modifiers/presentationModifiers.ts +10 -0
- package/src/universal/transformStyle.ios.ts +5 -2
- package/local-maven-repo/expo/modules/ui/expo.modules.ui/58.0.5/expo.modules.ui-58.0.5-sources.jar.md5 +0 -1
- package/local-maven-repo/expo/modules/ui/expo.modules.ui/58.0.5/expo.modules.ui-58.0.5-sources.jar.sha1 +0 -1
- package/local-maven-repo/expo/modules/ui/expo.modules.ui/58.0.5/expo.modules.ui-58.0.5-sources.jar.sha256 +0 -1
- package/local-maven-repo/expo/modules/ui/expo.modules.ui/58.0.5/expo.modules.ui-58.0.5-sources.jar.sha512 +0 -1
- package/local-maven-repo/expo/modules/ui/expo.modules.ui/58.0.5/expo.modules.ui-58.0.5.aar +0 -0
- package/local-maven-repo/expo/modules/ui/expo.modules.ui/58.0.5/expo.modules.ui-58.0.5.aar.md5 +0 -1
- package/local-maven-repo/expo/modules/ui/expo.modules.ui/58.0.5/expo.modules.ui-58.0.5.aar.sha1 +0 -1
- package/local-maven-repo/expo/modules/ui/expo.modules.ui/58.0.5/expo.modules.ui-58.0.5.aar.sha256 +0 -1
- package/local-maven-repo/expo/modules/ui/expo.modules.ui/58.0.5/expo.modules.ui-58.0.5.aar.sha512 +0 -1
- package/local-maven-repo/expo/modules/ui/expo.modules.ui/58.0.5/expo.modules.ui-58.0.5.module.md5 +0 -1
- package/local-maven-repo/expo/modules/ui/expo.modules.ui/58.0.5/expo.modules.ui-58.0.5.module.sha1 +0 -1
- package/local-maven-repo/expo/modules/ui/expo.modules.ui/58.0.5/expo.modules.ui-58.0.5.module.sha256 +0 -1
- package/local-maven-repo/expo/modules/ui/expo.modules.ui/58.0.5/expo.modules.ui-58.0.5.module.sha512 +0 -1
- package/local-maven-repo/expo/modules/ui/expo.modules.ui/58.0.5/expo.modules.ui-58.0.5.pom.md5 +0 -1
- package/local-maven-repo/expo/modules/ui/expo.modules.ui/58.0.5/expo.modules.ui-58.0.5.pom.sha1 +0 -1
- package/local-maven-repo/expo/modules/ui/expo.modules.ui/58.0.5/expo.modules.ui-58.0.5.pom.sha256 +0 -1
- package/local-maven-repo/expo/modules/ui/expo.modules.ui/58.0.5/expo.modules.ui-58.0.5.pom.sha512 +0 -1
|
@@ -31,6 +31,15 @@ import { resolveShapeStyle } from './shapeStyle';
|
|
|
31
31
|
*/ export const presentationDragIndicator = (visibility)=>createModifier('presentationDragIndicator', {
|
|
32
32
|
visibility
|
|
33
33
|
});
|
|
34
|
+
/**
|
|
35
|
+
* Sets the corner radius of a sheet presentation.
|
|
36
|
+
* @param cornerRadius - The corner radius in points, or `null` to use the system default.
|
|
37
|
+
* @platform ios 16.4+
|
|
38
|
+
* @platform tvos 16.4+
|
|
39
|
+
* @see Official [SwiftUI documentation](https://developer.apple.com/documentation/swiftui/view/presentationcornerradius(_:)).
|
|
40
|
+
*/ export const presentationCornerRadius = (cornerRadius)=>createModifier('presentationCornerRadius', {
|
|
41
|
+
cornerRadius
|
|
42
|
+
});
|
|
34
43
|
/**
|
|
35
44
|
* Controls interaction with the content behind a sheet.
|
|
36
45
|
* @param interaction - The background interaction behavior.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["swift-ui/modifiers/presentationModifiers.ts"],"sourcesContent":[null],"names":["createModifier","createModifierWithEventListener","resolveShapeStyle","presentationDetents","detents","options","params","selection","onSelectionChange","args","detent","presentationDragIndicator","visibility","presentationBackgroundInteraction","interaction","interactionType","presentationBackground","style","interactiveDismissDisabled","isDisabled","presentationSizing","sizing"],"mappings":"AAAA,SACEA,cAAc,EACdC,+BAA+B,QAE1B,mBAAmB;AAC1B,SAASC,iBAAiB,QAAyB,eAAe;AAWlE;;;;;;;;;CASC,GACD,OAAO,MAAMC,sBAAsB,CACjCC,SACAC;IAKA,MAAMC,SAAS;QAAEF;QAASG,WAAWF,SAASE;IAAU;IAExD,MAAM,EAAEC,iBAAiB,EAAE,GAAGH,WAAW,CAAC;IAC1C,IAAIG,mBAAmB;QACrB,OAAOP,gCACL,uBACA,CAACQ;YACCD,kBAAkBC,KAAKC,MAAM;QAC/B,GACAJ;IAEJ;IAEA,OAAON,eAAe,uBAAuBM;AAC/C,EAAE;AAEF;;;;;;CAMC,GACD,OAAO,MAAMK,4BAA4B,CAACC,aACxCZ,eAAe,6BAA6B;QAAEY;IAAW,GAAG;
|
|
1
|
+
{"version":3,"sources":["swift-ui/modifiers/presentationModifiers.ts"],"sourcesContent":[null],"names":["createModifier","createModifierWithEventListener","resolveShapeStyle","presentationDetents","detents","options","params","selection","onSelectionChange","args","detent","presentationDragIndicator","visibility","presentationCornerRadius","cornerRadius","presentationBackgroundInteraction","interaction","interactionType","presentationBackground","style","interactiveDismissDisabled","isDisabled","presentationSizing","sizing"],"mappings":"AAAA,SACEA,cAAc,EACdC,+BAA+B,QAE1B,mBAAmB;AAC1B,SAASC,iBAAiB,QAAyB,eAAe;AAWlE;;;;;;;;;CASC,GACD,OAAO,MAAMC,sBAAsB,CACjCC,SACAC;IAKA,MAAMC,SAAS;QAAEF;QAASG,WAAWF,SAASE;IAAU;IAExD,MAAM,EAAEC,iBAAiB,EAAE,GAAGH,WAAW,CAAC;IAC1C,IAAIG,mBAAmB;QACrB,OAAOP,gCACL,uBACA,CAACQ;YACCD,kBAAkBC,KAAKC,MAAM;QAC/B,GACAJ;IAEJ;IAEA,OAAON,eAAe,uBAAuBM;AAC/C,EAAE;AAEF;;;;;;CAMC,GACD,OAAO,MAAMK,4BAA4B,CAACC,aACxCZ,eAAe,6BAA6B;QAAEY;IAAW,GAAG;AAE9D;;;;;;CAMC,GACD,OAAO,MAAMC,2BAA2B,CAACC,eACvCd,eAAe,4BAA4B;QAAEc;IAAa,GAAG;AAW/D;;;;;;CAMC,GACD,OAAO,MAAMC,oCAAoC,CAC/CC;IAEA,IAAI,OAAOA,gBAAgB,UAAU;QACnC,OAAOhB,eAAe,qCAAqC;YAAEiB,iBAAiBD;QAAY;IAC5F;IACA,OAAOhB,eAAe,qCAAqC;QACzDiB,iBAAiB;QACjBP,QAAQM,YAAYN,MAAM;IAC5B;AACF,EAAE;AAEF;;;;;;;;;;;CAWC,GACD,OAAO,MAAMQ,yBAAyB,CAACC,QACrCnB,eAAe,0BAA0B;QAAEmB,OAAOjB,kBAAkBiB;IAAO,GAAG;AAEhF;;;;CAIC,GACD,OAAO,MAAMC,6BAA6B,CAACC,aAAsB,IAAI,GACnErB,eAAe,8BAA8B;QAAEqB;IAAW,GAAG;AAc/D;;;;;;CAMC,GACD,OAAO,MAAMC,qBAAqB,CAACC,SACjCvB,eAAe,sBAAsB;QAAEuB;IAAO,GAAG"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { background, border, clipShape, disabled as disabledMod, font, foregroundStyle, frame, hidden as hiddenMod, kerning, lineSpacing, multilineTextAlignment, onAppear, onDisappear, onTapGesture, opacity, padding } from '@expo/ui/swift-ui/modifiers';
|
|
1
|
+
import { background, border, clipShape, contentShape, disabled as disabledMod, font, foregroundStyle, frame, hidden as hiddenMod, kerning, lineSpacing, multilineTextAlignment, onAppear, onDisappear, onTapGesture, opacity, padding, shapes } from '@expo/ui/swift-ui/modifiers';
|
|
2
2
|
import { omitUserOverridden } from './modifierUtils';
|
|
3
3
|
const FONT_WEIGHT_MAP = {
|
|
4
4
|
'100': 'ultraLight',
|
|
@@ -93,8 +93,9 @@ const FONT_WEIGHT_MAP = {
|
|
|
93
93
|
// A user-supplied modifier replaces any style-derived modifier of the same
|
|
94
94
|
// type. The event, lifecycle, and behavior modifiers below are never dropped.
|
|
95
95
|
mods = omitUserOverridden(mods, extraModifiers);
|
|
96
|
-
// Events
|
|
97
|
-
|
|
96
|
+
// Events. SwiftUI only hit-tests drawn content, so the `contentShape` lets
|
|
97
|
+
// taps on empty space (for example a `Spacer` in a `Row`) reach `onPress`.
|
|
98
|
+
if (props.onPress) mods.push(contentShape(shapes.rectangle()), onTapGesture(props.onPress));
|
|
98
99
|
// Lifecycle
|
|
99
100
|
if (props.onAppear) mods.push(onAppear(props.onAppear));
|
|
100
101
|
if (props.onDisappear) mods.push(onDisappear(props.onDisappear));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["universal/transformStyle.ios.ts"],"sourcesContent":[null],"names":["background","border","clipShape","disabled","disabledMod","font","foregroundStyle","frame","hidden","hiddenMod","kerning","lineSpacing","multilineTextAlignment","onAppear","onDisappear","onTapGesture","opacity","padding","omitUserOverridden","FONT_WEIGHT_MAP","normal","bold","transformToModifiers","style","props","extraModifiers","options","mods","textStyle","fontFamily","fontSize","fontWeight","push","family","size","weight","undefined","color","letterSpacing","lineHeight","baseFontSize","Math","max","textAlign","hasPadding","paddingHorizontal","paddingVertical","paddingTop","paddingBottom","paddingLeft","paddingRight","all","horizontal","vertical","top","bottom","leading","trailing","width","height","alignment","frameAlignment","backgroundColor","borderWidth","borderColor","content","borderRadius","onPress"],"mappings":"AAAA,SACEA,UAAU,EACVC,MAAM,EACNC,SAAS,EACTC,YAAYC,WAAW,EACvBC,IAAI,EACJC,eAAe,EACfC,KAAK,EACLC,UAAUC,SAAS,EACnBC,OAAO,EACPC,WAAW,EACXC,sBAAsB,EACtBC,QAAQ,EACRC,WAAW,EACXC,YAAY,EACZC,OAAO,EACPC,OAAO,
|
|
1
|
+
{"version":3,"sources":["universal/transformStyle.ios.ts"],"sourcesContent":[null],"names":["background","border","clipShape","contentShape","disabled","disabledMod","font","foregroundStyle","frame","hidden","hiddenMod","kerning","lineSpacing","multilineTextAlignment","onAppear","onDisappear","onTapGesture","opacity","padding","shapes","omitUserOverridden","FONT_WEIGHT_MAP","normal","bold","transformToModifiers","style","props","extraModifiers","options","mods","textStyle","fontFamily","fontSize","fontWeight","push","family","size","weight","undefined","color","letterSpacing","lineHeight","baseFontSize","Math","max","textAlign","hasPadding","paddingHorizontal","paddingVertical","paddingTop","paddingBottom","paddingLeft","paddingRight","all","horizontal","vertical","top","bottom","leading","trailing","width","height","alignment","frameAlignment","backgroundColor","borderWidth","borderColor","content","borderRadius","onPress","rectangle"],"mappings":"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"}
|
package/expo-module.config.json
CHANGED
|
@@ -0,0 +1,255 @@
|
|
|
1
|
+
// Copyright 2026-present 650 Industries. All rights reserved.
|
|
2
|
+
|
|
3
|
+
import ExpoModulesCore
|
|
4
|
+
import SwiftUI
|
|
5
|
+
|
|
6
|
+
final class DataListForEachProps: UIBaseViewProps {
|
|
7
|
+
@Field var itemKeys: [String] = []
|
|
8
|
+
@Field var revision: Int = 0
|
|
9
|
+
@Field var estimatedItemSize: Double = 64
|
|
10
|
+
@Field var deleteEnabled: Bool = false
|
|
11
|
+
@Field var moveEnabled: Bool = false
|
|
12
|
+
var onDelete = EventDispatcher()
|
|
13
|
+
var onMove = EventDispatcher()
|
|
14
|
+
var onWindowChange = EventDispatcher()
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
final class DataListForEachItemProps: ExpoSwiftUI.ViewProps {
|
|
18
|
+
@Field var itemKey: String = ""
|
|
19
|
+
@Field var index: Int = 0
|
|
20
|
+
@Field var revision: Int = 0
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
struct DataListForEachItemView: ExpoSwiftUI.View {
|
|
24
|
+
@ObservedObject var props: DataListForEachItemProps
|
|
25
|
+
|
|
26
|
+
init(props: DataListForEachItemProps) {
|
|
27
|
+
self.props = props
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
var body: some View {
|
|
31
|
+
Children()
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
final class DataListForEachPoolProps: ExpoSwiftUI.ViewProps {}
|
|
36
|
+
|
|
37
|
+
// Holds the recycled slots, so mounting a slot never republishes the list's own props.
|
|
38
|
+
struct DataListForEachPoolView: ExpoSwiftUI.View {
|
|
39
|
+
@ObservedObject var props: DataListForEachPoolProps
|
|
40
|
+
|
|
41
|
+
init(props: DataListForEachPoolProps) {
|
|
42
|
+
self.props = props
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
var body: some View {
|
|
46
|
+
EmptyView()
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
struct DataListForEachView: ExpoSwiftUI.View {
|
|
51
|
+
@ObservedObject var props: DataListForEachProps
|
|
52
|
+
@StateObject private var window = DataListForEachWindow()
|
|
53
|
+
|
|
54
|
+
init(props: DataListForEachProps) {
|
|
55
|
+
self.props = props
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
var body: some View {
|
|
59
|
+
let revision = props.revision
|
|
60
|
+
let pool = (props.children ?? []).lazy.compactMap { ($0.childView as? DataListForEachPoolView)?.props }.first
|
|
61
|
+
if let pool {
|
|
62
|
+
ForEach(Array(props.itemKeys.enumerated()), id: \.element) { index, key in
|
|
63
|
+
DataListForEachRow(itemKey: key, index: index, listProps: props, poolProps: pool, window: window)
|
|
64
|
+
.tag(AnyHashable(key))
|
|
65
|
+
}
|
|
66
|
+
.onDelete(perform: props.deleteEnabled ? { offsets in
|
|
67
|
+
props.onDelete(["indices": Array(offsets), "revision": revision])
|
|
68
|
+
} : nil)
|
|
69
|
+
.onMove(perform: props.moveEnabled ? { sources, destination in
|
|
70
|
+
props.onMove(["sourceIndices": Array(sources), "destination": destination, "revision": revision])
|
|
71
|
+
} : nil)
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
private struct DataListForEachRow: View {
|
|
77
|
+
let itemKey: String
|
|
78
|
+
let index: Int
|
|
79
|
+
@ObservedObject var listProps: DataListForEachProps
|
|
80
|
+
@ObservedObject var poolProps: DataListForEachPoolProps
|
|
81
|
+
let window: DataListForEachWindow
|
|
82
|
+
@State private var appeared = false
|
|
83
|
+
@State private var visibilityID = UUID()
|
|
84
|
+
|
|
85
|
+
// Slots are the pool's children; JS assigns item `index` to slot `index % count`.
|
|
86
|
+
// Reading them here, not in the parent, keeps the row current when the slot count changes.
|
|
87
|
+
private var slot: DataListForEachItemView? {
|
|
88
|
+
guard let slots = poolProps.children, !slots.isEmpty else {
|
|
89
|
+
return nil
|
|
90
|
+
}
|
|
91
|
+
return slots[index % slots.count].childView as? DataListForEachItemView
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
var body: some View {
|
|
95
|
+
VStack(alignment: .leading, spacing: 0) {
|
|
96
|
+
if let slot {
|
|
97
|
+
DataListForEachSlotContent(
|
|
98
|
+
props: slot.props,
|
|
99
|
+
itemKey: itemKey,
|
|
100
|
+
index: index,
|
|
101
|
+
revision: listProps.revision,
|
|
102
|
+
estimatedHeight: CGFloat(listProps.estimatedItemSize),
|
|
103
|
+
window: window
|
|
104
|
+
)
|
|
105
|
+
} else {
|
|
106
|
+
Color.clear
|
|
107
|
+
.frame(height: window.height(for: itemKey, fallback: listProps.estimatedItemSize))
|
|
108
|
+
.accessibilityHidden(true)
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
.frame(maxWidth: .infinity, alignment: .leading)
|
|
112
|
+
.onAppear {
|
|
113
|
+
appeared = true
|
|
114
|
+
window.appear(itemKey, index: index, token: visibilityID, props: listProps)
|
|
115
|
+
}
|
|
116
|
+
.onChange(of: listProps.revision) { _ in
|
|
117
|
+
window.reset(listProps)
|
|
118
|
+
if appeared { window.appear(itemKey, index: index, token: visibilityID, props: listProps) }
|
|
119
|
+
}
|
|
120
|
+
.onGeometryChange(for: CGFloat.self, of: { $0.size.width }, action: { width in
|
|
121
|
+
window.updateWidth(width)
|
|
122
|
+
})
|
|
123
|
+
.onDisappear {
|
|
124
|
+
appeared = false
|
|
125
|
+
window.disappear(itemKey, token: visibilityID)
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
|
|
130
|
+
private struct DataListForEachSlotContent: View {
|
|
131
|
+
@ObservedObject var props: DataListForEachItemProps
|
|
132
|
+
let itemKey: String
|
|
133
|
+
let index: Int
|
|
134
|
+
let revision: Int
|
|
135
|
+
let estimatedHeight: CGFloat
|
|
136
|
+
let window: DataListForEachWindow
|
|
137
|
+
// we use this state so swiftui re-layouts when the slot is reused for a different item
|
|
138
|
+
@State private var showsContent = false
|
|
139
|
+
|
|
140
|
+
private var matches: Bool {
|
|
141
|
+
props.itemKey == itemKey && props.index == index && props.revision == revision
|
|
142
|
+
}
|
|
143
|
+
|
|
144
|
+
var body: some View {
|
|
145
|
+
Group {
|
|
146
|
+
if showsContent {
|
|
147
|
+
DataListForEachItemView(props: props)
|
|
148
|
+
.id(itemKey)
|
|
149
|
+
.onGeometryChange(for: CGFloat.self, of: { $0.size.height }, action: { height in
|
|
150
|
+
window.measure(height, for: itemKey, revision: revision)
|
|
151
|
+
})
|
|
152
|
+
} else {
|
|
153
|
+
// Hide the previous item while JS updates this slot.
|
|
154
|
+
Color.clear
|
|
155
|
+
.frame(height: window.height(for: itemKey, fallback: Double(estimatedHeight)))
|
|
156
|
+
.accessibilityHidden(true)
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
.onAppear { showsContent = matches }
|
|
160
|
+
.onChange(of: matches) { showsContent = $0 }
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
|
|
164
|
+
// Tracks rows without triggering view updates and batches window requests to JS.
|
|
165
|
+
private final class DataListForEachWindow: ObservableObject {
|
|
166
|
+
private weak var props: DataListForEachProps?
|
|
167
|
+
private var appeared: [String: Int] = [:]
|
|
168
|
+
private var visibilityTokens: [String: UUID] = [:]
|
|
169
|
+
private var heights: [String: CGFloat] = [:]
|
|
170
|
+
private var width: CGFloat = 0
|
|
171
|
+
private var revision = -1
|
|
172
|
+
private var pending: DispatchWorkItem?
|
|
173
|
+
private var lastSent: [Int] = []
|
|
174
|
+
|
|
175
|
+
deinit {
|
|
176
|
+
pending?.cancel()
|
|
177
|
+
}
|
|
178
|
+
|
|
179
|
+
func reset(_ props: DataListForEachProps) {
|
|
180
|
+
self.props = props
|
|
181
|
+
guard revision != props.revision else {
|
|
182
|
+
return
|
|
183
|
+
}
|
|
184
|
+
revision = props.revision
|
|
185
|
+
heights.removeAll()
|
|
186
|
+
let positions = Dictionary(uniqueKeysWithValues: props.itemKeys.enumerated().map { ($0.element, $0.offset) })
|
|
187
|
+
appeared = positions.filter { appeared[$0.key] != nil }
|
|
188
|
+
visibilityTokens = visibilityTokens.filter { positions[$0.key] != nil }
|
|
189
|
+
lastSent = []
|
|
190
|
+
schedule()
|
|
191
|
+
}
|
|
192
|
+
|
|
193
|
+
func updateWidth(_ newWidth: CGFloat) {
|
|
194
|
+
if width != newWidth {
|
|
195
|
+
if width > 0 {
|
|
196
|
+
heights.removeAll()
|
|
197
|
+
}
|
|
198
|
+
width = newWidth
|
|
199
|
+
}
|
|
200
|
+
}
|
|
201
|
+
|
|
202
|
+
func appear(_ key: String, index: Int, token: UUID, props: DataListForEachProps) {
|
|
203
|
+
reset(props)
|
|
204
|
+
guard props.itemKeys.indices.contains(index), props.itemKeys[index] == key else {
|
|
205
|
+
return
|
|
206
|
+
}
|
|
207
|
+
appeared[key] = index
|
|
208
|
+
visibilityTokens[key] = token
|
|
209
|
+
schedule()
|
|
210
|
+
}
|
|
211
|
+
|
|
212
|
+
func disappear(_ key: String, token: UUID) {
|
|
213
|
+
// Ignore callbacks from a row that has been replaced.
|
|
214
|
+
guard visibilityTokens[key] == token else {
|
|
215
|
+
return
|
|
216
|
+
}
|
|
217
|
+
appeared.removeValue(forKey: key)
|
|
218
|
+
visibilityTokens.removeValue(forKey: key)
|
|
219
|
+
if appeared.isEmpty { lastSent = [] }
|
|
220
|
+
schedule()
|
|
221
|
+
}
|
|
222
|
+
|
|
223
|
+
func height(for key: String, fallback: Double) -> CGFloat {
|
|
224
|
+
heights[key] ?? CGFloat(fallback)
|
|
225
|
+
}
|
|
226
|
+
|
|
227
|
+
func measure(_ height: CGFloat, for key: String, revision: Int) {
|
|
228
|
+
guard revision == self.revision, height.isFinite, height > 0 else {
|
|
229
|
+
return
|
|
230
|
+
}
|
|
231
|
+
heights[key] = height
|
|
232
|
+
}
|
|
233
|
+
|
|
234
|
+
private func schedule() {
|
|
235
|
+
guard pending == nil else {
|
|
236
|
+
return
|
|
237
|
+
}
|
|
238
|
+
let work = DispatchWorkItem { [weak self] in
|
|
239
|
+
guard let self else { return }
|
|
240
|
+
self.pending = nil
|
|
241
|
+
guard let props = self.props,
|
|
242
|
+
let first = self.appeared.values.min(), let last = self.appeared.values.max() else {
|
|
243
|
+
return
|
|
244
|
+
}
|
|
245
|
+
let event = [first, last, self.revision]
|
|
246
|
+
guard event != self.lastSent else {
|
|
247
|
+
return
|
|
248
|
+
}
|
|
249
|
+
self.lastSent = event
|
|
250
|
+
props.onWindowChange(["first": first, "last": last, "revision": self.revision])
|
|
251
|
+
}
|
|
252
|
+
pending = work
|
|
253
|
+
DispatchQueue.main.async(execute: work)
|
|
254
|
+
}
|
|
255
|
+
}
|
package/ios/ExpoUIModule.swift
CHANGED
|
@@ -170,6 +170,9 @@ public final class ExpoUIModule: Module {
|
|
|
170
170
|
ExpoUIView(ImageView.self)
|
|
171
171
|
ExpoUIView(LabelView.self)
|
|
172
172
|
ExpoUIView(ListView.self)
|
|
173
|
+
ExpoUIView(DataListForEachView.self)
|
|
174
|
+
View(DataListForEachItemView.self)
|
|
175
|
+
View(DataListForEachPoolView.self)
|
|
173
176
|
ExpoUIView(ListForEachView.self)
|
|
174
177
|
|
|
175
178
|
ExpoUIView(PickerView.self)
|
|
@@ -4,6 +4,8 @@ import ExpoModulesCore
|
|
|
4
4
|
import SwiftUI
|
|
5
5
|
|
|
6
6
|
final class ListForEachProps: UIBaseViewProps {
|
|
7
|
+
@Field var deleteEnabled: Bool = false
|
|
8
|
+
@Field var moveEnabled: Bool = false
|
|
7
9
|
var onDelete = EventDispatcher()
|
|
8
10
|
var onMove = EventDispatcher()
|
|
9
11
|
}
|
|
@@ -16,9 +18,16 @@ struct ListForEachView: ExpoSwiftUI.View {
|
|
|
16
18
|
}
|
|
17
19
|
|
|
18
20
|
var body: some View {
|
|
19
|
-
|
|
20
|
-
.
|
|
21
|
-
|
|
21
|
+
ForEach(props.children ?? [], id: \.childIdentity) { child in
|
|
22
|
+
if let item = child.childView as? DataListForEachItemView {
|
|
23
|
+
item.tag(AnyHashable(item.props.itemKey))
|
|
24
|
+
} else {
|
|
25
|
+
let view: any View = child.childView
|
|
26
|
+
AnyView(view)
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
.onDelete(perform: props.deleteEnabled ? handleDelete : nil)
|
|
30
|
+
.onMove(perform: props.moveEnabled ? handleMove : nil)
|
|
22
31
|
}
|
|
23
32
|
|
|
24
33
|
func handleDelete(at offsets: IndexSet) {
|
|
@@ -160,6 +160,16 @@ internal struct PresentationDragIndicatorModifier: ViewModifier, Record {
|
|
|
160
160
|
}
|
|
161
161
|
}
|
|
162
162
|
|
|
163
|
+
// MARK: - Presentation Corner Radius
|
|
164
|
+
|
|
165
|
+
internal struct PresentationCornerRadiusModifier: ViewModifier, Record {
|
|
166
|
+
@Field var cornerRadius: Double?
|
|
167
|
+
|
|
168
|
+
func body(content: Content) -> some View {
|
|
169
|
+
content.presentationCornerRadius(cornerRadius.map { CGFloat($0) })
|
|
170
|
+
}
|
|
171
|
+
}
|
|
172
|
+
|
|
163
173
|
// MARK: - Presentation Background Interaction
|
|
164
174
|
|
|
165
175
|
internal enum PresentationBackgroundInteractionTypeModifier: String, Enumerable {
|
|
@@ -2353,6 +2353,10 @@ extension ViewModifierRegistry {
|
|
|
2353
2353
|
return try PresentationDragIndicatorModifier(from: params, appContext: appContext)
|
|
2354
2354
|
}
|
|
2355
2355
|
|
|
2356
|
+
register("presentationCornerRadius") { params, appContext, _ in
|
|
2357
|
+
return try PresentationCornerRadiusModifier(from: params, appContext: appContext)
|
|
2358
|
+
}
|
|
2359
|
+
|
|
2356
2360
|
register("presentationBackgroundInteraction") { params, appContext, _ in
|
|
2357
2361
|
return try PresentationBackgroundInteractionModifier(from: params, appContext: appContext)
|
|
2358
2362
|
}
|
|
Binary file
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
bbdad22fa84c26c5a5b649ed116f1fcb
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
21cb93383a49b039772df3cbd1a14c3cd821886c
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
5645728c21cb9bd3183045c4208434114a1372ed0a367dadc545a2555294748b
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
c1f94d22a03f47ec553960cf5a44936e26992755aebc5f3583484c41ee224f9637620571022ae95f0687e5701632d93a1752f817dca5923b07aa10a2697c4776
|
|
Binary file
|
package/local-maven-repo/expo/modules/ui/expo.modules.ui/58.0.7/expo.modules.ui-58.0.7.aar.md5
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
b4a6d6acd9603febf32c95c833b1405f
|
package/local-maven-repo/expo/modules/ui/expo.modules.ui/58.0.7/expo.modules.ui-58.0.7.aar.sha1
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
955cc1dcde621dc0ad9d70588bff46adfedc1129
|
package/local-maven-repo/expo/modules/ui/expo.modules.ui/58.0.7/expo.modules.ui-58.0.7.aar.sha256
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
db4b84c7879a230cb83fb791d8f9a8f86a282f5c93751bc267dd8a648ed141af
|
package/local-maven-repo/expo/modules/ui/expo.modules.ui/58.0.7/expo.modules.ui-58.0.7.aar.sha512
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
58f2fa2376432db80f54bf406250ceb0c07fd16f2dd693dcb9aa784c078a18e5044bd224896e2112237b52f6169eeda86f3cfa4edae36be61fec24ffaa6ea1ac
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
"component": {
|
|
4
4
|
"group": "expo.modules.ui",
|
|
5
5
|
"module": "expo.modules.ui",
|
|
6
|
-
"version": "58.0.
|
|
6
|
+
"version": "58.0.7",
|
|
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-58.0.
|
|
28
|
-
"url": "expo.modules.ui-58.0.
|
|
29
|
-
"size":
|
|
30
|
-
"sha512": "
|
|
31
|
-
"sha256": "
|
|
32
|
-
"sha1": "
|
|
33
|
-
"md5": "
|
|
27
|
+
"name": "expo.modules.ui-58.0.7.aar",
|
|
28
|
+
"url": "expo.modules.ui-58.0.7.aar",
|
|
29
|
+
"size": 1835156,
|
|
30
|
+
"sha512": "58f2fa2376432db80f54bf406250ceb0c07fd16f2dd693dcb9aa784c078a18e5044bd224896e2112237b52f6169eeda86f3cfa4edae36be61fec24ffaa6ea1ac",
|
|
31
|
+
"sha256": "db4b84c7879a230cb83fb791d8f9a8f86a282f5c93751bc267dd8a648ed141af",
|
|
32
|
+
"sha1": "955cc1dcde621dc0ad9d70588bff46adfedc1129",
|
|
33
|
+
"md5": "b4a6d6acd9603febf32c95c833b1405f"
|
|
34
34
|
}
|
|
35
35
|
]
|
|
36
36
|
},
|
|
@@ -135,19 +135,19 @@
|
|
|
135
135
|
"group": "io.github.expo.pika",
|
|
136
136
|
"module": "pika-api",
|
|
137
137
|
"version": {
|
|
138
|
-
"requires": "1.
|
|
138
|
+
"requires": "1.1.0"
|
|
139
139
|
}
|
|
140
140
|
}
|
|
141
141
|
],
|
|
142
142
|
"files": [
|
|
143
143
|
{
|
|
144
|
-
"name": "expo.modules.ui-58.0.
|
|
145
|
-
"url": "expo.modules.ui-58.0.
|
|
146
|
-
"size":
|
|
147
|
-
"sha512": "
|
|
148
|
-
"sha256": "
|
|
149
|
-
"sha1": "
|
|
150
|
-
"md5": "
|
|
144
|
+
"name": "expo.modules.ui-58.0.7.aar",
|
|
145
|
+
"url": "expo.modules.ui-58.0.7.aar",
|
|
146
|
+
"size": 1835156,
|
|
147
|
+
"sha512": "58f2fa2376432db80f54bf406250ceb0c07fd16f2dd693dcb9aa784c078a18e5044bd224896e2112237b52f6169eeda86f3cfa4edae36be61fec24ffaa6ea1ac",
|
|
148
|
+
"sha256": "db4b84c7879a230cb83fb791d8f9a8f86a282f5c93751bc267dd8a648ed141af",
|
|
149
|
+
"sha1": "955cc1dcde621dc0ad9d70588bff46adfedc1129",
|
|
150
|
+
"md5": "b4a6d6acd9603febf32c95c833b1405f"
|
|
151
151
|
}
|
|
152
152
|
]
|
|
153
153
|
},
|
|
@@ -161,13 +161,13 @@
|
|
|
161
161
|
},
|
|
162
162
|
"files": [
|
|
163
163
|
{
|
|
164
|
-
"name": "expo.modules.ui-58.0.
|
|
165
|
-
"url": "expo.modules.ui-58.0.
|
|
166
|
-
"size":
|
|
167
|
-
"sha512": "
|
|
168
|
-
"sha256": "
|
|
169
|
-
"sha1": "
|
|
170
|
-
"md5": "
|
|
164
|
+
"name": "expo.modules.ui-58.0.7-sources.jar",
|
|
165
|
+
"url": "expo.modules.ui-58.0.7-sources.jar",
|
|
166
|
+
"size": 109722,
|
|
167
|
+
"sha512": "c1f94d22a03f47ec553960cf5a44936e26992755aebc5f3583484c41ee224f9637620571022ae95f0687e5701632d93a1752f817dca5923b07aa10a2697c4776",
|
|
168
|
+
"sha256": "5645728c21cb9bd3183045c4208434114a1372ed0a367dadc545a2555294748b",
|
|
169
|
+
"sha1": "21cb93383a49b039772df3cbd1a14c3cd821886c",
|
|
170
|
+
"md5": "bbdad22fa84c26c5a5b649ed116f1fcb"
|
|
171
171
|
}
|
|
172
172
|
]
|
|
173
173
|
}
|
package/local-maven-repo/expo/modules/ui/expo.modules.ui/58.0.7/expo.modules.ui-58.0.7.module.md5
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
ef9649b49362d0da4b0e79afd086b9a8
|
package/local-maven-repo/expo/modules/ui/expo.modules.ui/58.0.7/expo.modules.ui-58.0.7.module.sha1
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
9dd32ee8f56b957697d2292dce6935a9a6c113f7
|
package/local-maven-repo/expo/modules/ui/expo.modules.ui/58.0.7/expo.modules.ui-58.0.7.module.sha256
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
4461d437dc9b9973416bb69437c013180a65b2a0d3cb5cb9a87566d1d388bad9
|
package/local-maven-repo/expo/modules/ui/expo.modules.ui/58.0.7/expo.modules.ui-58.0.7.module.sha512
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
62141bdabeb89bd61f79ba40fe8a39c31d7ff0f04eb060a7872dd83eb1e72899ee8d1befaeebdfb4251174b0dc53e4d9ac9e6cac357364d905ddd1df91754ed6
|
|
@@ -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>58.0.
|
|
12
|
+
<version>58.0.7</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.expo.pika</groupId>
|
|
119
119
|
<artifactId>pika-api</artifactId>
|
|
120
|
-
<version>1.
|
|
120
|
+
<version>1.1.0</version>
|
|
121
121
|
<scope>runtime</scope>
|
|
122
122
|
</dependency>
|
|
123
123
|
</dependencies>
|
package/local-maven-repo/expo/modules/ui/expo.modules.ui/58.0.7/expo.modules.ui-58.0.7.pom.md5
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
ea27c56a290e1fc992da3e12320a93e8
|
package/local-maven-repo/expo/modules/ui/expo.modules.ui/58.0.7/expo.modules.ui-58.0.7.pom.sha1
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
582b5b30bd24edc8b923d34cce63fcd644fa12d6
|
package/local-maven-repo/expo/modules/ui/expo.modules.ui/58.0.7/expo.modules.ui-58.0.7.pom.sha256
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
5365fa5ce4427865eebebb3fa8fb502842f890b4bd2d79c2b6be0225fb07a2fc
|
package/local-maven-repo/expo/modules/ui/expo.modules.ui/58.0.7/expo.modules.ui-58.0.7.pom.sha512
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
5fcaae8cc43b51d719769cbebd906e1333dd120c6d14212a2006aa0ee966143bb32a04edc35ed68a7f8cdb1cee1ae442c3cf98f6f0a39b0cbc2a05ae0287c4fd
|
|
@@ -3,11 +3,11 @@
|
|
|
3
3
|
<groupId>expo.modules.ui</groupId>
|
|
4
4
|
<artifactId>expo.modules.ui</artifactId>
|
|
5
5
|
<versioning>
|
|
6
|
-
<latest>58.0.
|
|
7
|
-
<release>58.0.
|
|
6
|
+
<latest>58.0.7</latest>
|
|
7
|
+
<release>58.0.7</release>
|
|
8
8
|
<versions>
|
|
9
|
-
<version>58.0.
|
|
9
|
+
<version>58.0.7</version>
|
|
10
10
|
</versions>
|
|
11
|
-
<lastUpdated>
|
|
11
|
+
<lastUpdated>20260925081306</lastUpdated>
|
|
12
12
|
</versioning>
|
|
13
13
|
</metadata>
|
|
@@ -1 +1 @@
|
|
|
1
|
-
|
|
1
|
+
3b013569e130377748855287121192d4
|
|
@@ -1 +1 @@
|
|
|
1
|
-
|
|
1
|
+
c66fce1b7df0c1281b2cabcf550be469af735aee
|
|
@@ -1 +1 @@
|
|
|
1
|
-
|
|
1
|
+
4531b51612843804ca4cd240ad0c2e8ca8c576a8459e0a5311a68a9859ab7251
|
|
@@ -1 +1 @@
|
|
|
1
|
-
|
|
1
|
+
a2250c863289705ac41b43de2372d4232e10cda70f7fb7e2cc2f1fc32ea8005ad51acbcf9f24f7be1295e4cfe50fed4ee6ed6950bc87557253faa1a1d22f54f3
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@expo/ui",
|
|
3
|
-
"version": "58.0.
|
|
3
|
+
"version": "58.0.7",
|
|
4
4
|
"description": "A collection of UI components",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"Jetpack Compose",
|
|
@@ -149,8 +149,8 @@
|
|
|
149
149
|
"@types/node": "^22.14.0",
|
|
150
150
|
"@types/react": "~19.3.0",
|
|
151
151
|
"expo-module-scripts": "56.0.3",
|
|
152
|
-
"react-native-reanimated": "4.
|
|
153
|
-
"react-native-worklets": "0.
|
|
152
|
+
"react-native-reanimated": "4.7.0",
|
|
153
|
+
"react-native-worklets": "0.13.0"
|
|
154
154
|
},
|
|
155
155
|
"peerDependencies": {
|
|
156
156
|
"@babel/core": "*",
|
|
@@ -171,7 +171,7 @@
|
|
|
171
171
|
"optional": true
|
|
172
172
|
}
|
|
173
173
|
},
|
|
174
|
-
"gitHead": "
|
|
174
|
+
"gitHead": "ad41d067bd3df6dd12f1788acc6b54a68e7a650d",
|
|
175
175
|
"scripts": {
|
|
176
176
|
"precompile-ios": "et prebuild-package-for-publish",
|
|
177
177
|
"build": "pnpm run build:lib && pnpm run build:plugin",
|
|
Binary file
|
|
Binary file
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { requireNativeView } from 'expo';
|
|
2
2
|
|
|
3
3
|
import type { ExpoModifier } from '../../types';
|
|
4
|
+
import { LazyItems } from '../LazyItems';
|
|
4
5
|
import { createViewModifierEventListener } from '../modifiers/utils';
|
|
5
6
|
|
|
6
7
|
/**
|
|
@@ -77,3 +78,5 @@ function transformProps(props: LazyColumnProps): NativeLazyColumnProps {
|
|
|
77
78
|
export function LazyColumn(props: LazyColumnProps) {
|
|
78
79
|
return <LazyColumnNativeView {...transformProps(props)} />;
|
|
79
80
|
}
|
|
81
|
+
|
|
82
|
+
LazyColumn.Items = LazyItems;
|