@expo/ui 58.0.6 → 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.
Files changed (93) hide show
  1. package/CHANGELOG.md +12 -0
  2. package/android/build.gradle +2 -2
  3. package/android/src/main/java/expo/modules/ui/ExpoUIModule.kt +9 -0
  4. package/android/src/main/java/expo/modules/ui/LazyColumnView.kt +6 -1
  5. package/android/src/main/java/expo/modules/ui/LazyItemsView.kt +313 -0
  6. package/android/src/main/java/expo/modules/ui/LazyRowView.kt +6 -1
  7. package/android/src/main/java/expo/modules/ui/RNHostView.kt +18 -4
  8. package/build/jetpack-compose/LazyColumn/index.d.ts +6 -0
  9. package/build/jetpack-compose/LazyColumn/index.js +2 -0
  10. package/build/jetpack-compose/LazyColumn/index.js.map +1 -1
  11. package/build/jetpack-compose/LazyItems/index.d.ts +54 -0
  12. package/build/jetpack-compose/LazyItems/index.js +63 -0
  13. package/build/jetpack-compose/LazyItems/index.js.map +1 -0
  14. package/build/jetpack-compose/LazyRow/index.d.ts +6 -0
  15. package/build/jetpack-compose/LazyRow/index.js +2 -0
  16. package/build/jetpack-compose/LazyRow/index.js.map +1 -1
  17. package/build/jetpack-compose/index.d.ts +1 -0
  18. package/build/jetpack-compose/index.js.map +1 -1
  19. package/build/recycling/useRecycledRows.d.ts +52 -0
  20. package/build/recycling/useRecycledRows.js +121 -0
  21. package/build/recycling/useRecycledRows.js.map +1 -0
  22. package/build/recycling/window.js.map +1 -0
  23. package/build/swift-ui/List/DataListForEach.d.ts +2 -9
  24. package/build/swift-ui/List/DataListForEach.js +15 -106
  25. package/build/swift-ui/List/DataListForEach.js.map +1 -1
  26. package/build/swift-ui/List/ListForEach.js +3 -2
  27. package/build/swift-ui/List/ListForEach.js.map +1 -1
  28. package/build/swift-ui/modifiers/presentationModifiers.d.ts +8 -0
  29. package/build/swift-ui/modifiers/presentationModifiers.js +9 -0
  30. package/build/swift-ui/modifiers/presentationModifiers.js.map +1 -1
  31. package/build/universal/transformStyle.ios.js +4 -3
  32. package/build/universal/transformStyle.ios.js.map +1 -1
  33. package/expo-module.config.json +1 -1
  34. package/ios/Modifiers/PresentationModifiers.swift +10 -0
  35. package/ios/Modifiers/ViewModifierRegistry.swift +4 -0
  36. package/local-maven-repo/expo/modules/ui/expo.modules.ui/{58.0.6/expo.modules.ui-58.0.6-sources.jar → 58.0.7/expo.modules.ui-58.0.7-sources.jar} +0 -0
  37. package/local-maven-repo/expo/modules/ui/expo.modules.ui/58.0.7/expo.modules.ui-58.0.7-sources.jar.md5 +1 -0
  38. package/local-maven-repo/expo/modules/ui/expo.modules.ui/58.0.7/expo.modules.ui-58.0.7-sources.jar.sha1 +1 -0
  39. package/local-maven-repo/expo/modules/ui/expo.modules.ui/58.0.7/expo.modules.ui-58.0.7-sources.jar.sha256 +1 -0
  40. package/local-maven-repo/expo/modules/ui/expo.modules.ui/58.0.7/expo.modules.ui-58.0.7-sources.jar.sha512 +1 -0
  41. package/local-maven-repo/expo/modules/ui/expo.modules.ui/58.0.7/expo.modules.ui-58.0.7.aar +0 -0
  42. package/local-maven-repo/expo/modules/ui/expo.modules.ui/58.0.7/expo.modules.ui-58.0.7.aar.md5 +1 -0
  43. package/local-maven-repo/expo/modules/ui/expo.modules.ui/58.0.7/expo.modules.ui-58.0.7.aar.sha1 +1 -0
  44. package/local-maven-repo/expo/modules/ui/expo.modules.ui/58.0.7/expo.modules.ui-58.0.7.aar.sha256 +1 -0
  45. package/local-maven-repo/expo/modules/ui/expo.modules.ui/58.0.7/expo.modules.ui-58.0.7.aar.sha512 +1 -0
  46. package/local-maven-repo/expo/modules/ui/expo.modules.ui/{58.0.6/expo.modules.ui-58.0.6.module → 58.0.7/expo.modules.ui-58.0.7.module} +23 -23
  47. package/local-maven-repo/expo/modules/ui/expo.modules.ui/58.0.7/expo.modules.ui-58.0.7.module.md5 +1 -0
  48. package/local-maven-repo/expo/modules/ui/expo.modules.ui/58.0.7/expo.modules.ui-58.0.7.module.sha1 +1 -0
  49. package/local-maven-repo/expo/modules/ui/expo.modules.ui/58.0.7/expo.modules.ui-58.0.7.module.sha256 +1 -0
  50. package/local-maven-repo/expo/modules/ui/expo.modules.ui/58.0.7/expo.modules.ui-58.0.7.module.sha512 +1 -0
  51. package/local-maven-repo/expo/modules/ui/expo.modules.ui/{58.0.6/expo.modules.ui-58.0.6.pom → 58.0.7/expo.modules.ui-58.0.7.pom} +2 -2
  52. package/local-maven-repo/expo/modules/ui/expo.modules.ui/58.0.7/expo.modules.ui-58.0.7.pom.md5 +1 -0
  53. package/local-maven-repo/expo/modules/ui/expo.modules.ui/58.0.7/expo.modules.ui-58.0.7.pom.sha1 +1 -0
  54. package/local-maven-repo/expo/modules/ui/expo.modules.ui/58.0.7/expo.modules.ui-58.0.7.pom.sha256 +1 -0
  55. package/local-maven-repo/expo/modules/ui/expo.modules.ui/58.0.7/expo.modules.ui-58.0.7.pom.sha512 +1 -0
  56. package/local-maven-repo/expo/modules/ui/expo.modules.ui/maven-metadata.xml +4 -4
  57. package/local-maven-repo/expo/modules/ui/expo.modules.ui/maven-metadata.xml.md5 +1 -1
  58. package/local-maven-repo/expo/modules/ui/expo.modules.ui/maven-metadata.xml.sha1 +1 -1
  59. package/local-maven-repo/expo/modules/ui/expo.modules.ui/maven-metadata.xml.sha256 +1 -1
  60. package/local-maven-repo/expo/modules/ui/expo.modules.ui/maven-metadata.xml.sha512 +1 -1
  61. package/package.json +4 -4
  62. package/prebuilds/output/debug/xcframeworks/ExpoUI.tar.gz +0 -0
  63. package/prebuilds/output/release/xcframeworks/ExpoUI.tar.gz +0 -0
  64. package/src/jetpack-compose/LazyColumn/index.tsx +3 -0
  65. package/src/jetpack-compose/LazyItems/index.tsx +121 -0
  66. package/src/jetpack-compose/LazyRow/index.tsx +3 -0
  67. package/src/jetpack-compose/index.ts +1 -0
  68. package/src/recycling/useRecycledRows.tsx +200 -0
  69. package/src/swift-ui/List/DataListForEach.tsx +21 -142
  70. package/src/swift-ui/List/ListForEach.tsx +3 -2
  71. package/src/swift-ui/modifiers/presentationModifiers.ts +10 -0
  72. package/src/universal/transformStyle.ios.ts +5 -2
  73. package/build/swift-ui/List/window.js.map +0 -1
  74. package/local-maven-repo/expo/modules/ui/expo.modules.ui/58.0.6/expo.modules.ui-58.0.6-sources.jar.md5 +0 -1
  75. package/local-maven-repo/expo/modules/ui/expo.modules.ui/58.0.6/expo.modules.ui-58.0.6-sources.jar.sha1 +0 -1
  76. package/local-maven-repo/expo/modules/ui/expo.modules.ui/58.0.6/expo.modules.ui-58.0.6-sources.jar.sha256 +0 -1
  77. package/local-maven-repo/expo/modules/ui/expo.modules.ui/58.0.6/expo.modules.ui-58.0.6-sources.jar.sha512 +0 -1
  78. package/local-maven-repo/expo/modules/ui/expo.modules.ui/58.0.6/expo.modules.ui-58.0.6.aar +0 -0
  79. package/local-maven-repo/expo/modules/ui/expo.modules.ui/58.0.6/expo.modules.ui-58.0.6.aar.md5 +0 -1
  80. package/local-maven-repo/expo/modules/ui/expo.modules.ui/58.0.6/expo.modules.ui-58.0.6.aar.sha1 +0 -1
  81. package/local-maven-repo/expo/modules/ui/expo.modules.ui/58.0.6/expo.modules.ui-58.0.6.aar.sha256 +0 -1
  82. package/local-maven-repo/expo/modules/ui/expo.modules.ui/58.0.6/expo.modules.ui-58.0.6.aar.sha512 +0 -1
  83. package/local-maven-repo/expo/modules/ui/expo.modules.ui/58.0.6/expo.modules.ui-58.0.6.module.md5 +0 -1
  84. package/local-maven-repo/expo/modules/ui/expo.modules.ui/58.0.6/expo.modules.ui-58.0.6.module.sha1 +0 -1
  85. package/local-maven-repo/expo/modules/ui/expo.modules.ui/58.0.6/expo.modules.ui-58.0.6.module.sha256 +0 -1
  86. package/local-maven-repo/expo/modules/ui/expo.modules.ui/58.0.6/expo.modules.ui-58.0.6.module.sha512 +0 -1
  87. package/local-maven-repo/expo/modules/ui/expo.modules.ui/58.0.6/expo.modules.ui-58.0.6.pom.md5 +0 -1
  88. package/local-maven-repo/expo/modules/ui/expo.modules.ui/58.0.6/expo.modules.ui-58.0.6.pom.sha1 +0 -1
  89. package/local-maven-repo/expo/modules/ui/expo.modules.ui/58.0.6/expo.modules.ui-58.0.6.pom.sha256 +0 -1
  90. package/local-maven-repo/expo/modules/ui/expo.modules.ui/58.0.6/expo.modules.ui-58.0.6.pom.sha512 +0 -1
  91. /package/build/{swift-ui/List → recycling}/window.d.ts +0 -0
  92. /package/build/{swift-ui/List → recycling}/window.js +0 -0
  93. /package/src/{swift-ui/List → recycling}/window.ts +0 -0
@@ -0,0 +1,52 @@
1
+ import { type ComponentType, type ReactElement } from 'react';
2
+ /** Payload of the native event asking for the rows around the visible range. */
3
+ export type WindowChangeEvent = {
4
+ first: number;
5
+ last: number;
6
+ revision: number;
7
+ };
8
+ /** Props of the native view that holds one recycled row. */
9
+ export type RecycledSlotProps = {
10
+ itemKey: string;
11
+ index: number;
12
+ revision: number;
13
+ children: ReactElement;
14
+ };
15
+ /** Renders one row of the data set. */
16
+ export type RenderItem<ItemT> = (info: {
17
+ item: ItemT;
18
+ index: number;
19
+ }) => ReactElement;
20
+ export type RecycledRows = {
21
+ /** Keys of every item, so the native list can size and identify the full data set. */
22
+ itemKeys: string[];
23
+ /** Increases whenever the data changes, so late native events can be dropped. */
24
+ revision: number;
25
+ /** The pooled rows to mount, one per slot. */
26
+ rows: ReactElement[];
27
+ /** Applies a native window request. */
28
+ onWindowChange: (event: WindowChangeEvent) => void;
29
+ /** Whether a native event was sent for the data currently committed to native. */
30
+ isCurrentRevision: (revision: number) => boolean;
31
+ };
32
+ /**
33
+ * Returns one key per item. Keys follow `data` only: an inline `keyExtractor` changes identity on
34
+ * every parent render, and recomputing keys for it would bump the revision and re-render every row.
35
+ */
36
+ export declare function useItemKeys<ItemT>(componentName: string, data: readonly ItemT[], keyExtractor: (item: ItemT, index: number) => string): string[];
37
+ /**
38
+ * Keeps a fixed pool of rows centered on the range the native list asks for.
39
+ * Item `index` always renders in slot `index % capacity`, so moving the window
40
+ * only re-renders the slots whose item changed.
41
+ */
42
+ export declare function useRecycledRows<ItemT>({ componentName, Slot, data, keyExtractor, renderItem, overscanCount, estimatedItemSize, }: {
43
+ /** Name used in error messages, for example `List.ForEach`. */
44
+ componentName: string;
45
+ /** Native view that holds one recycled row. */
46
+ Slot: ComponentType<RecycledSlotProps>;
47
+ data: readonly ItemT[];
48
+ keyExtractor: (item: ItemT, index: number) => string;
49
+ renderItem: RenderItem<ItemT>;
50
+ overscanCount?: number;
51
+ estimatedItemSize?: number;
52
+ }): RecycledRows;
@@ -0,0 +1,121 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { memo, useLayoutEffect, useMemo, useRef, useState } from 'react';
3
+ import { getSlotIndices, getWindow } from './window';
4
+ // Skip unchanged rows when the window moves.
5
+ const RecycledRow = /*#__PURE__*/ memo(function RecycledRow({ Slot, item, index, itemKey, revision, renderItem }) {
6
+ return /*#__PURE__*/ _jsx(Slot, {
7
+ itemKey: itemKey,
8
+ index: index,
9
+ revision: revision,
10
+ children: renderItem({
11
+ item,
12
+ index
13
+ })
14
+ });
15
+ });
16
+ /**
17
+ * Returns one key per item. Keys follow `data` only: an inline `keyExtractor` changes identity on
18
+ * every parent render, and recomputing keys for it would bump the revision and re-render every row.
19
+ */ export function useItemKeys(componentName, data, keyExtractor) {
20
+ const keyExtractorRef = useRef(keyExtractor);
21
+ keyExtractorRef.current = keyExtractor;
22
+ return useMemo(()=>{
23
+ const keys = data.map((item, index)=>keyExtractorRef.current(item, index));
24
+ if (keys.some((key)=>typeof key !== 'string') || new Set(keys).size !== keys.length) {
25
+ throw new Error(`${componentName} keyExtractor must return a unique string for every item.`);
26
+ }
27
+ return keys;
28
+ }, [
29
+ data
30
+ ]);
31
+ }
32
+ /**
33
+ * Keeps a fixed pool of rows centered on the range the native list asks for.
34
+ * Item `index` always renders in slot `index % capacity`, so moving the window
35
+ * only re-renders the slots whose item changed.
36
+ */ export function useRecycledRows({ componentName, Slot, data, keyExtractor, renderItem, overscanCount = 10, estimatedItemSize = 64 }) {
37
+ if (!Number.isSafeInteger(overscanCount) || overscanCount < 0) {
38
+ throw new Error(`${componentName} overscanCount must be a non-negative integer.`);
39
+ }
40
+ if (!Number.isFinite(estimatedItemSize) || estimatedItemSize <= 0) {
41
+ throw new Error(`${componentName} estimatedItemSize must be a positive finite number.`);
42
+ }
43
+ const itemKeys = useItemKeys(componentName, data, keyExtractor);
44
+ const [state, setState] = useState({
45
+ keys: itemKeys,
46
+ first: 0,
47
+ last: 0,
48
+ revision: 0,
49
+ capacity: 0,
50
+ overscanCount
51
+ });
52
+ let current = state;
53
+ if (state.keys !== itemKeys) {
54
+ const previousKey = state.keys[state.first];
55
+ const anchor = previousKey === undefined ? 0 : Math.max(0, itemKeys.indexOf(previousKey));
56
+ current = {
57
+ ...state,
58
+ keys: itemKeys,
59
+ first: Math.min(anchor, Math.max(0, data.length - 1)),
60
+ last: Math.min(anchor + state.last - state.first, Math.max(0, data.length - 1)),
61
+ revision: state.revision + 1
62
+ };
63
+ }
64
+ if (current.overscanCount !== overscanCount) {
65
+ current = {
66
+ ...current,
67
+ overscanCount,
68
+ capacity: 0
69
+ };
70
+ }
71
+ if (current !== state) setState(current);
72
+ const { start, capacity } = getWindow(data.length, current.first, current.last, overscanCount, current.capacity);
73
+ const committedRevision = useRef(current.revision);
74
+ useLayoutEffect(()=>{
75
+ committedRevision.current = current.revision;
76
+ }, [
77
+ current.revision
78
+ ]);
79
+ const rows = getSlotIndices(start, capacity).map((index, slot)=>{
80
+ const item = data[index];
81
+ const itemKey = itemKeys[index];
82
+ if (item === undefined || itemKey === undefined) {
83
+ throw new Error(`${componentName} could not resolve the item at index ${index}.`);
84
+ }
85
+ return /*#__PURE__*/ _jsx(RecycledRow, {
86
+ Slot: Slot,
87
+ item: item,
88
+ index: index,
89
+ itemKey: itemKey,
90
+ revision: current.revision,
91
+ renderItem: renderItem
92
+ }, slot);
93
+ });
94
+ return {
95
+ itemKeys,
96
+ revision: current.revision,
97
+ rows,
98
+ isCurrentRevision: (revision)=>revision === committedRevision.current,
99
+ onWindowChange: (event)=>{
100
+ if (!Number.isSafeInteger(event.first) || !Number.isSafeInteger(event.last) || event.last < event.first) {
101
+ return;
102
+ }
103
+ setState((previous)=>{
104
+ // Ignore requests from before a data change.
105
+ if (event.revision !== previous.revision) return previous;
106
+ const maximum = Math.max(0, previous.keys.length - 1);
107
+ const first = Math.max(0, Math.min(event.first, maximum));
108
+ const last = Math.max(first, Math.min(event.last, maximum));
109
+ const { capacity } = getWindow(previous.keys.length, first, last, previous.overscanCount, previous.capacity);
110
+ return first === previous.first && last === previous.last && capacity === previous.capacity ? previous : {
111
+ ...previous,
112
+ first,
113
+ last,
114
+ capacity
115
+ };
116
+ });
117
+ }
118
+ };
119
+ }
120
+
121
+ //# sourceMappingURL=useRecycledRows.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["recycling/useRecycledRows.tsx"],"sourcesContent":[null],"names":["memo","useLayoutEffect","useMemo","useRef","useState","getSlotIndices","getWindow","RecycledRow","Slot","item","index","itemKey","revision","renderItem","useItemKeys","componentName","data","keyExtractor","keyExtractorRef","current","keys","map","some","key","Set","size","length","Error","useRecycledRows","overscanCount","estimatedItemSize","Number","isSafeInteger","isFinite","itemKeys","state","setState","first","last","capacity","previousKey","anchor","undefined","Math","max","indexOf","min","start","committedRevision","rows","slot","isCurrentRevision","onWindowChange","event","previous","maximum"],"mappings":"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"}
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["recycling/window.ts"],"sourcesContent":[null],"names":["getWindow","count","first","last","overscanCount","minCapacity","start","capacity","Math","max","min","end","needed","getSlotIndices","Array","from","length","_","slot"],"mappings":"AAAA,OAAO,SAASA,UACdC,KAAa,EACbC,KAAa,EACbC,IAAY,EACZC,aAAqB,EACrBC,cAAc,CAAC;IAEf,IAAIJ,UAAU,GAAG,OAAO;QAAEK,OAAO;QAAGC,UAAU;IAAE;IAChDL,QAAQM,KAAKC,GAAG,CAAC,GAAGD,KAAKE,GAAG,CAACR,OAAOD,QAAQ;IAC5CE,OAAOK,KAAKC,GAAG,CAACP,OAAOM,KAAKE,GAAG,CAACP,MAAMF,QAAQ;IAC9C,MAAMK,QAAQE,KAAKC,GAAG,CAAC,GAAGP,QAAQE;IAClC,MAAMO,MAAMH,KAAKE,GAAG,CAACT,OAAOE,OAAO,IAAIC;IACvC,6FAA6F;IAC7F,yEAAyE;IACzE,MAAMQ,SAASD,MAAML;IACrB,IAAIC,WAAWF;IACf,IAAIO,SAASL,UAAUA,WAAWA,aAAa,IAAIK,SAASA,SAASR;IACrEG,WAAWC,KAAKE,GAAG,CAACT,OAAOM;IAC3B,OAAO;QAAED,OAAOE,KAAKE,GAAG,CAACJ,OAAOL,QAAQM;QAAWA;IAAS;AAC9D;AAEA,OAAO,SAASM,eAAeP,KAAa,EAAEC,QAAgB;IAC5D,IAAIA,aAAa,GAAG,OAAO,EAAE;IAC7B,OAAOO,MAAMC,IAAI,CACf;QAAEC,QAAQT;IAAS,GACnB,CAACU,GAAGC,OAASZ,QAAS,AAACY,CAAAA,OAAQZ,QAAQC,WAAYA,QAAO,IAAKA;AAEnE"}
@@ -1,4 +1,5 @@
1
1
  import { type ReactElement } from 'react';
2
+ import { type RecycledSlotProps } from '../../recycling/useRecycledRows';
2
3
  import { type CommonViewModifierProps } from '../types';
3
4
  export interface ListForEachProps<ItemT> extends CommonViewModifierProps {
4
5
  /** Called with deleted indices from this group's `data` array. */
@@ -42,18 +43,10 @@ export interface ListForEachProps<ItemT> extends CommonViewModifierProps {
42
43
  */
43
44
  estimatedItemSize?: number;
44
45
  }
45
- type SlotProps = {
46
- itemKey: string;
47
- index: number;
48
- revision: number;
49
- children: ReactElement;
50
- };
51
- export declare const NativeSlot: import("react").ComponentType<SlotProps>;
52
- export declare function useItemKeys<ItemT>(data: readonly ItemT[], keyExtractor: ListForEachProps<ItemT>['keyExtractor']): string[];
46
+ export declare const NativeSlot: import("react").ComponentType<RecycledSlotProps>;
53
47
  /**
54
48
  * Renders a window of recycled rows inside List or Section.
55
49
  * Rows show placeholders while JS prepares content. Native keys still cover the full data set.
56
50
  * @platform ios
57
51
  */
58
52
  export declare function DataListForEach<ItemT>({ data, keyExtractor, children: renderItem, overscanCount, estimatedItemSize, modifiers, onDelete, onMove, ...props }: ListForEachProps<ItemT>): import("react").JSX.Element;
59
- export {};
@@ -1,84 +1,24 @@
1
1
  import { jsx as _jsx } from "react/jsx-runtime";
2
2
  import { requireNativeView } from 'expo';
3
- import { memo, useLayoutEffect, useMemo, useRef, useState } from 'react';
3
+ import { useRecycledRows } from '../../recycling/useRecycledRows';
4
4
  import { createViewModifierEventListener } from '../modifiers/utils';
5
- import { getSlotIndices, getWindow } from './window';
6
5
  const NativeList = requireNativeView('ExpoUI', 'DataListForEachView');
7
6
  export const NativeSlot = requireNativeView('ExpoUI', 'DataListForEachItemView');
8
7
  const NativePool = requireNativeView('ExpoUI', 'DataListForEachPoolView');
9
- // Skip unchanged rows when the window moves.
10
- const RecycledRow = /*#__PURE__*/ memo(function RecycledRow({ item, index, itemKey, revision, renderItem }) {
11
- return /*#__PURE__*/ _jsx(NativeSlot, {
12
- itemKey: itemKey,
13
- index: index,
14
- revision: revision,
15
- children: renderItem({
16
- item,
17
- index
18
- })
19
- });
20
- });
21
- export function useItemKeys(data, keyExtractor) {
22
- const keyExtractorRef = useRef(keyExtractor);
23
- keyExtractorRef.current = keyExtractor;
24
- return useMemo(()=>{
25
- const keys = data.map((item, index)=>keyExtractorRef.current(item, index));
26
- if (keys.some((key)=>typeof key !== 'string') || new Set(keys).size !== keys.length) {
27
- throw new Error('List.ForEach keyExtractor must return a unique string for every item.');
28
- }
29
- return keys;
30
- }, [
31
- data
32
- ]);
33
- }
34
8
  /**
35
9
  * Renders a window of recycled rows inside List or Section.
36
10
  * Rows show placeholders while JS prepares content. Native keys still cover the full data set.
37
11
  * @platform ios
38
- */ export function DataListForEach({ data, keyExtractor, children: renderItem, overscanCount = 10, estimatedItemSize = 64, modifiers, onDelete, onMove, ...props }) {
39
- if (!Number.isSafeInteger(overscanCount) || overscanCount < 0) {
40
- throw new Error('List.ForEach overscanCount must be a non-negative integer.');
41
- }
42
- if (!Number.isFinite(estimatedItemSize) || estimatedItemSize <= 0) {
43
- throw new Error('List.ForEach estimatedItemSize must be a positive finite number.');
44
- }
45
- const itemKeys = useItemKeys(data, keyExtractor);
46
- const [state, setState] = useState({
47
- keys: itemKeys,
48
- first: 0,
49
- last: 0,
50
- revision: 0,
51
- capacity: 0,
52
- overscanCount
12
+ */ export function DataListForEach({ data, keyExtractor, children: renderItem, overscanCount, estimatedItemSize = 64, modifiers, onDelete, onMove, ...props }) {
13
+ const { itemKeys, revision, rows, onWindowChange, isCurrentRevision } = useRecycledRows({
14
+ componentName: 'List.ForEach',
15
+ Slot: NativeSlot,
16
+ data,
17
+ keyExtractor,
18
+ renderItem,
19
+ overscanCount,
20
+ estimatedItemSize
53
21
  });
54
- let current = state;
55
- if (state.keys !== itemKeys) {
56
- const previousKey = state.keys[state.first];
57
- const anchor = previousKey === undefined ? 0 : Math.max(0, itemKeys.indexOf(previousKey));
58
- current = {
59
- ...state,
60
- keys: itemKeys,
61
- first: Math.min(anchor, Math.max(0, data.length - 1)),
62
- last: Math.min(anchor + state.last - state.first, Math.max(0, data.length - 1)),
63
- revision: state.revision + 1
64
- };
65
- }
66
- if (current.overscanCount !== overscanCount) {
67
- current = {
68
- ...current,
69
- overscanCount,
70
- capacity: 0
71
- };
72
- }
73
- if (current !== state) setState(current);
74
- const { start, capacity } = getWindow(data.length, current.first, current.last, overscanCount, current.capacity);
75
- const committedRevision = useRef(current.revision);
76
- useLayoutEffect(()=>{
77
- committedRevision.current = current.revision;
78
- }, [
79
- current.revision
80
- ]);
81
- const indices = getSlotIndices(start, capacity);
82
22
  return /*#__PURE__*/ _jsx(NativeList, {
83
23
  ...props,
84
24
  modifiers: modifiers,
@@ -86,50 +26,19 @@ export function useItemKeys(data, keyExtractor) {
86
26
  deleteEnabled: !!onDelete,
87
27
  moveEnabled: !!onMove,
88
28
  onDelete: onDelete ? ({ nativeEvent })=>{
89
- if (nativeEvent.revision === committedRevision.current) onDelete(nativeEvent.indices);
29
+ if (isCurrentRevision(nativeEvent.revision)) onDelete(nativeEvent.indices);
90
30
  } : undefined,
91
31
  onMove: onMove ? ({ nativeEvent })=>{
92
- if (nativeEvent.revision === committedRevision.current) {
32
+ if (isCurrentRevision(nativeEvent.revision)) {
93
33
  onMove(nativeEvent.sourceIndices, nativeEvent.destination);
94
34
  }
95
35
  } : undefined,
96
36
  itemKeys: itemKeys,
97
- revision: current.revision,
37
+ revision: revision,
98
38
  estimatedItemSize: estimatedItemSize,
99
- onWindowChange: ({ nativeEvent: event })=>{
100
- if (!Number.isSafeInteger(event.first) || !Number.isSafeInteger(event.last) || event.last < event.first) {
101
- return;
102
- }
103
- setState((previous)=>{
104
- // Ignore requests from before a data change.
105
- if (event.revision !== previous.revision) return previous;
106
- const maximum = Math.max(0, previous.keys.length - 1);
107
- const first = Math.max(0, Math.min(event.first, maximum));
108
- const last = Math.max(first, Math.min(event.last, maximum));
109
- const { capacity } = getWindow(previous.keys.length, first, last, previous.overscanCount, previous.capacity);
110
- return first === previous.first && last === previous.last && capacity === previous.capacity ? previous : {
111
- ...previous,
112
- first,
113
- last,
114
- capacity
115
- };
116
- });
117
- },
39
+ onWindowChange: ({ nativeEvent })=>onWindowChange(nativeEvent),
118
40
  children: /*#__PURE__*/ _jsx(NativePool, {
119
- children: indices.map((index, slot)=>{
120
- const item = data[index];
121
- const itemKey = itemKeys[index];
122
- if (item === undefined || itemKey === undefined) {
123
- throw new Error(`List.ForEach could not resolve the item at index ${index}.`);
124
- }
125
- return /*#__PURE__*/ _jsx(RecycledRow, {
126
- item: item,
127
- index: index,
128
- itemKey: itemKey,
129
- revision: current.revision,
130
- renderItem: renderItem
131
- }, slot);
132
- })
41
+ children: rows
133
42
  })
134
43
  });
135
44
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["swift-ui/List/DataListForEach.tsx"],"sourcesContent":[null],"names":["requireNativeView","memo","useLayoutEffect","useMemo","useRef","useState","createViewModifierEventListener","getSlotIndices","getWindow","NativeList","NativeSlot","NativePool","RecycledRow","item","index","itemKey","revision","renderItem","useItemKeys","data","keyExtractor","keyExtractorRef","current","keys","map","some","key","Set","size","length","Error","DataListForEach","children","overscanCount","estimatedItemSize","modifiers","onDelete","onMove","props","Number","isSafeInteger","isFinite","itemKeys","state","setState","first","last","capacity","previousKey","anchor","undefined","Math","max","indexOf","min","start","committedRevision","indices","deleteEnabled","moveEnabled","nativeEvent","sourceIndices","destination","onWindowChange","event","previous","maximum","slot"],"mappings":"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"}
1
+ {"version":3,"sources":["swift-ui/List/DataListForEach.tsx"],"sourcesContent":[null],"names":["requireNativeView","useRecycledRows","createViewModifierEventListener","NativeList","NativeSlot","NativePool","DataListForEach","data","keyExtractor","children","renderItem","overscanCount","estimatedItemSize","modifiers","onDelete","onMove","props","itemKeys","revision","rows","onWindowChange","isCurrentRevision","componentName","Slot","undefined","deleteEnabled","moveEnabled","nativeEvent","indices","sourceIndices","destination"],"mappings":";AAAA,SAASA,iBAAiB,QAAQ,OAAO;AAGzC,SACEC,eAAe,QAGV,kCAAkC;AAEzC,SAASC,+BAA+B,QAAQ,qBAAqB;AAuDrE,MAAMC,aAAaH,kBAA+B,UAAU;AAC5D,OAAO,MAAMI,aAAaJ,kBAAqC,UAAU,2BAA2B;AACpG,MAAMK,aAAaL,kBACjB,UACA;AAGF;;;;CAIC,GACD,OAAO,SAASM,gBAAuB,EACrCC,IAAI,EACJC,YAAY,EACZC,UAAUC,UAAU,EACpBC,aAAa,EACbC,oBAAoB,EAAE,EACtBC,SAAS,EACTC,QAAQ,EACRC,MAAM,EACN,GAAGC,OACqB;IACxB,MAAM,EAAEC,QAAQ,EAAEC,QAAQ,EAAEC,IAAI,EAAEC,cAAc,EAAEC,iBAAiB,EAAE,GAAGpB,gBAAgB;QACtFqB,eAAe;QACfC,MAAMnB;QACNG;QACAC;QACAE;QACAC;QACAC;IACF;IAEA,qBACE,KAACT;QACE,GAAGa,KAAK;QACTH,WAAWA;QACV,GAAIA,YAAYX,gCAAgCW,aAAaW,SAAS;QACvEC,eAAe,CAAC,CAACX;QACjBY,aAAa,CAAC,CAACX;QACfD,UACEA,WACI,CAAC,EAAEa,WAAW,EAAE;YACd,IAAIN,kBAAkBM,YAAYT,QAAQ,GAAGJ,SAASa,YAAYC,OAAO;QAC3E,IACAJ;QAENT,QACEA,SACI,CAAC,EAAEY,WAAW,EAAE;YACd,IAAIN,kBAAkBM,YAAYT,QAAQ,GAAG;gBAC3CH,OAAOY,YAAYE,aAAa,EAAEF,YAAYG,WAAW;YAC3D;QACF,IACAN;QAENP,UAAUA;QACVC,UAAUA;QACVN,mBAAmBA;QACnBQ,gBAAgB,CAAC,EAAEO,WAAW,EAAE,GAAKP,eAAeO;kBACpD,cAAA,KAACtB;sBAAYc;;;AAGnB"}
@@ -1,6 +1,7 @@
1
1
  import { jsx as _jsx } from "react/jsx-runtime";
2
2
  import { requireNativeView } from 'expo';
3
- import { DataListForEach, NativeSlot, useItemKeys } from './DataListForEach';
3
+ import { useItemKeys } from '../../recycling/useRecycledRows';
4
+ import { DataListForEach, NativeSlot } from './DataListForEach';
4
5
  const ListForEachNativeView = requireNativeView('ExpoUI', 'ListForEachView');
5
6
  let warnedElements = false;
6
7
  /**
@@ -35,7 +36,7 @@ function ChildrenListForEach({ children, onDelete, onMove, ...props }) {
35
36
  });
36
37
  }
37
38
  function StaticListForEach({ data, keyExtractor, children: renderItem, overscanCount: _overscanCount, estimatedItemSize: _estimatedItemSize, ...props }) {
38
- const itemKeys = useItemKeys(data, keyExtractor);
39
+ const itemKeys = useItemKeys('List.ForEach', data, keyExtractor);
39
40
  return /*#__PURE__*/ _jsx(ChildrenListForEach, {
40
41
  ...props,
41
42
  children: data.map((item, index)=>/*#__PURE__*/ _jsx(NativeSlot, {
@@ -1 +1 @@
1
- {"version":3,"sources":["swift-ui/List/ListForEach.tsx"],"sourcesContent":[null],"names":["requireNativeView","DataListForEach","NativeSlot","useItemKeys","ListForEachNativeView","warnedElements","ListForEach","props","data","undefined","__DEV__","console","warn","ChildrenListForEach","recycling","rest","StaticListForEach","children","onDelete","onMove","deleteEnabled","moveEnabled","nativeEvent","indices","sourceIndices","destination","keyExtractor","renderItem","overscanCount","_overscanCount","estimatedItemSize","_estimatedItemSize","itemKeys","map","item","index","itemKey","revision"],"mappings":";AAAA,SAASA,iBAAiB,QAAQ,OAAO;AAIzC,SAASC,eAAe,EAAEC,UAAU,EAAEC,WAAW,QAA+B,oBAAoB;AAIpG,MAAMC,wBACJJ,kBAA0C,UAAU;AAyCtD,IAAIK,iBAAiB;AAErB;;;;CAIC,GACD,OAAO,SAASC,YAAmBC,KAAyD;IAC1F,IAAIA,MAAMC,IAAI,KAAKC,WAAW;QAC5B,IAAIC,WAAW,CAACL,gBAAgB;YAC9BA,iBAAiB;YACjBM,QAAQC,IAAI,CACV;QAEJ;QACA,qBAAO,KAACC;YAAqB,GAAGN,KAAK;;IACvC;IACA,MAAM,EAAEO,YAAY,IAAI,EAAE,GAAGC,MAAM,GAAGR;IACtC,OAAOO,0BAAY,KAACb;QAAiB,GAAGc,IAAI;uBAAO,KAACC;QAAmB,GAAGD,IAAI;;AAChF;AAEA,SAASF,oBAAoB,EAAEI,QAAQ,EAAEC,QAAQ,EAAEC,MAAM,EAAE,GAAGZ,OAAiC;IAC7F,qBACE,KAACH;QACE,GAAGG,KAAK;QACTa,eAAe,CAAC,CAACF;QACjBG,aAAa,CAAC,CAACF;QACfD,UAAUA,WAAW,CAAC,EAAEI,WAAW,EAAE,GAAKJ,SAASI,YAAYC,OAAO,IAAId;QAC1EU,QACEA,SACI,CAAC,EAAEG,WAAW,EAAE,GAAKH,OAAOG,YAAYE,aAAa,EAAEF,YAAYG,WAAW,IAC9EhB;kBAELQ;;AAGP;AAEA,SAASD,kBAAyB,EAChCR,IAAI,EACJkB,YAAY,EACZT,UAAUU,UAAU,EACpBC,eAAeC,cAAc,EAC7BC,mBAAmBC,kBAAkB,EACrC,GAAGxB,OACwC;IAC3C,MAAMyB,WAAW7B,YAAYK,MAAMkB;IACnC,qBACE,KAACb;QAAqB,GAAGN,KAAK;kBAC3BC,KAAKyB,GAAG,CAAC,CAACC,MAAMC,sBACf,KAACjC;gBAAiCkC,SAASJ,QAAQ,CAACG,MAAM;gBAAGA,OAAOA;gBAAOE,UAAU;0BAClFV,WAAW;oBAAEO;oBAAMC;gBAAM;eADXH,QAAQ,CAACG,MAAM;;AAMxC"}
1
+ {"version":3,"sources":["swift-ui/List/ListForEach.tsx"],"sourcesContent":[null],"names":["requireNativeView","useItemKeys","DataListForEach","NativeSlot","ListForEachNativeView","warnedElements","ListForEach","props","data","undefined","__DEV__","console","warn","ChildrenListForEach","recycling","rest","StaticListForEach","children","onDelete","onMove","deleteEnabled","moveEnabled","nativeEvent","indices","sourceIndices","destination","keyExtractor","renderItem","overscanCount","_overscanCount","estimatedItemSize","_estimatedItemSize","itemKeys","map","item","index","itemKey","revision"],"mappings":";AAAA,SAASA,iBAAiB,QAAQ,OAAO;AAEzC,SAASC,WAAW,QAAQ,kCAAkC;AAG9D,SAASC,eAAe,EAAEC,UAAU,QAA+B,oBAAoB;AAIvF,MAAMC,wBACJJ,kBAA0C,UAAU;AAyCtD,IAAIK,iBAAiB;AAErB;;;;CAIC,GACD,OAAO,SAASC,YAAmBC,KAAyD;IAC1F,IAAIA,MAAMC,IAAI,KAAKC,WAAW;QAC5B,IAAIC,WAAW,CAACL,gBAAgB;YAC9BA,iBAAiB;YACjBM,QAAQC,IAAI,CACV;QAEJ;QACA,qBAAO,KAACC;YAAqB,GAAGN,KAAK;;IACvC;IACA,MAAM,EAAEO,YAAY,IAAI,EAAE,GAAGC,MAAM,GAAGR;IACtC,OAAOO,0BAAY,KAACZ;QAAiB,GAAGa,IAAI;uBAAO,KAACC;QAAmB,GAAGD,IAAI;;AAChF;AAEA,SAASF,oBAAoB,EAAEI,QAAQ,EAAEC,QAAQ,EAAEC,MAAM,EAAE,GAAGZ,OAAiC;IAC7F,qBACE,KAACH;QACE,GAAGG,KAAK;QACTa,eAAe,CAAC,CAACF;QACjBG,aAAa,CAAC,CAACF;QACfD,UAAUA,WAAW,CAAC,EAAEI,WAAW,EAAE,GAAKJ,SAASI,YAAYC,OAAO,IAAId;QAC1EU,QACEA,SACI,CAAC,EAAEG,WAAW,EAAE,GAAKH,OAAOG,YAAYE,aAAa,EAAEF,YAAYG,WAAW,IAC9EhB;kBAELQ;;AAGP;AAEA,SAASD,kBAAyB,EAChCR,IAAI,EACJkB,YAAY,EACZT,UAAUU,UAAU,EACpBC,eAAeC,cAAc,EAC7BC,mBAAmBC,kBAAkB,EACrC,GAAGxB,OACwC;IAC3C,MAAMyB,WAAW/B,YAAY,gBAAgBO,MAAMkB;IACnD,qBACE,KAACb;QAAqB,GAAGN,KAAK;kBAC3BC,KAAKyB,GAAG,CAAC,CAACC,MAAMC,sBACf,KAAChC;gBAAiCiC,SAASJ,QAAQ,CAACG,MAAM;gBAAGA,OAAOA;gBAAOE,UAAU;0BAClFV,WAAW;oBAAEO;oBAAMC;gBAAM;eADXH,QAAQ,CAACG,MAAM;;AAMxC"}
@@ -34,6 +34,14 @@ export declare const presentationDetents: (detents: PresentationDetent[], option
34
34
  * @see Official [SwiftUI documentation](https://developer.apple.com/documentation/swiftui/view/presentationdragindicator(_:)).
35
35
  */
36
36
  export declare const presentationDragIndicator: (visibility: "automatic" | "visible" | "hidden") => ModifierConfig;
37
+ /**
38
+ * Sets the corner radius of a sheet presentation.
39
+ * @param cornerRadius - The corner radius in points, or `null` to use the system default.
40
+ * @platform ios 16.4+
41
+ * @platform tvos 16.4+
42
+ * @see Official [SwiftUI documentation](https://developer.apple.com/documentation/swiftui/view/presentationcornerradius(_:)).
43
+ */
44
+ export declare const presentationCornerRadius: (cornerRadius: number | null) => ModifierConfig;
37
45
  /**
38
46
  * Presentation background interaction type.
39
47
  */
@@ -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;AAW9D;;;;;;CAMC,GACD,OAAO,MAAMC,oCAAoC,CAC/CC;IAEA,IAAI,OAAOA,gBAAgB,UAAU;QACnC,OAAOd,eAAe,qCAAqC;YAAEe,iBAAiBD;QAAY;IAC5F;IACA,OAAOd,eAAe,qCAAqC;QACzDe,iBAAiB;QACjBL,QAAQI,YAAYJ,MAAM;IAC5B;AACF,EAAE;AAEF;;;;;;;;;;;CAWC,GACD,OAAO,MAAMM,yBAAyB,CAACC,QACrCjB,eAAe,0BAA0B;QAAEiB,OAAOf,kBAAkBe;IAAO,GAAG;AAEhF;;;;CAIC,GACD,OAAO,MAAMC,6BAA6B,CAACC,aAAsB,IAAI,GACnEnB,eAAe,8BAA8B;QAAEmB;IAAW,GAAG;AAc/D;;;;;;CAMC,GACD,OAAO,MAAMC,qBAAqB,CAACC,SACjCrB,eAAe,sBAAsB;QAAEqB;IAAO,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
- if (props.onPress) mods.push(onTapGesture(props.onPress));
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":"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"}
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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"}
@@ -10,7 +10,7 @@
10
10
  "publication": {
11
11
  "groupId": "expo.modules.ui",
12
12
  "artifactId": "expo.modules.ui",
13
- "version": "58.0.6",
13
+ "version": "58.0.7",
14
14
  "repository": "local-maven-repo"
15
15
  }
16
16
  }
@@ -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
  }
@@ -0,0 +1 @@
1
+ 21cb93383a49b039772df3cbd1a14c3cd821886c
@@ -0,0 +1 @@
1
+ 5645728c21cb9bd3183045c4208434114a1372ed0a367dadc545a2555294748b
@@ -0,0 +1 @@
1
+ c1f94d22a03f47ec553960cf5a44936e26992755aebc5f3583484c41ee224f9637620571022ae95f0687e5701632d93a1752f817dca5923b07aa10a2697c4776
@@ -0,0 +1 @@
1
+ 955cc1dcde621dc0ad9d70588bff46adfedc1129
@@ -0,0 +1 @@
1
+ db4b84c7879a230cb83fb791d8f9a8f86a282f5c93751bc267dd8a648ed141af
@@ -0,0 +1 @@
1
+ 58f2fa2376432db80f54bf406250ceb0c07fd16f2dd693dcb9aa784c078a18e5044bd224896e2112237b52f6169eeda86f3cfa4edae36be61fec24ffaa6ea1ac