expo-dev-launcher 5.1.4 → 5.1.6

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 CHANGED
@@ -10,6 +10,19 @@
10
10
 
11
11
  ### 💡 Others
12
12
 
13
+ ## 5.1.6 — 2025-04-25
14
+
15
+ ### 💡 Others
16
+
17
+ - [iOS] Remove usage of deprecated `SFAuthenticationSession` for user login. ([#36395](https://github.com/expo/expo/pull/36395) by [@alanjhughes](https://github.com/alanjhughes))
18
+ - [Android] Enable edge-to-edge. ([#36363](https://github.com/expo/expo/pull/36363) by [@behenate](https://github.com/behenate))
19
+
20
+ ## 5.1.5 — 2025-04-23
21
+
22
+ ### 🐛 Bug fixes
23
+
24
+ - Fix duplicated modals ([#36326](https://github.com/expo/expo/pull/36326) by [@jakex7](https://github.com/jakex7))
25
+
13
26
  ## 5.1.4 — 2025-04-21
14
27
 
15
28
  _This version does not introduce any user-facing changes._
@@ -8,13 +8,13 @@ expoModule {
8
8
  }
9
9
 
10
10
  group = "host.exp.exponent"
11
- version = "5.1.4"
11
+ version = "5.1.6"
12
12
 
13
13
  android {
14
14
  namespace "expo.modules.devlauncher"
15
15
  defaultConfig {
16
16
  versionCode 9
17
- versionName "5.1.4"
17
+ versionName "5.1.6"
18
18
  }
19
19
 
20
20
  buildTypes {
@@ -1358,7 +1358,7 @@ __d((function(g,r,i,a,m,e,d){'use strict';m.exports={isString:function(n){return
1358
1358
  __d((function(g,r,i,a,m,e,d){'use strict';e.decode=e.parse=r(d[0]),e.encode=e.stringify=r(d[1])}),1192,[1193,1194]);
1359
1359
  __d((function(g,r,_i,a,m,e,d){'use strict';function t(t,n){return Object.prototype.hasOwnProperty.call(t,n)}m.exports=function(n,o,s,p){o=o||'&',s=s||'=';var u={};if('string'!=typeof n||0===n.length)return u;var c=/\+/g;n=n.split(o);var i=1e3;p&&'number'==typeof p.maxKeys&&(i=p.maxKeys);var f=n.length;i>0&&f>i&&(f=i);for(var y=0;y<f;++y){var l,v,b,h,x=n[y].replace(c,'%20'),O=x.indexOf(s);O>=0?(l=x.substr(0,O),v=x.substr(O+1)):(l=x,v=''),b=decodeURIComponent(l),h=decodeURIComponent(v),t(u,b)?Array.isArray(u[b])?u[b].push(h):u[b]=[u[b],h]:u[b]=h}return u}}),1193,[]);
1360
1360
  __d((function(g,r,i,a,m,e,d){'use strict';var n=function(n){switch(typeof n){case'string':return n;case'boolean':return n?'true':'false';case'number':return isFinite(n)?n:'';default:return''}};m.exports=function(o,t,c,u){return t=t||'&',c=c||'=',null===o&&(o=void 0),'object'==typeof o?Object.keys(o).map((function(u){var s=encodeURIComponent(n(u))+c;return Array.isArray(o[u])?o[u].map((function(o){return s+encodeURIComponent(n(o))})).join(t):s+encodeURIComponent(n(o[u]))})).filter(Boolean).join(t):u?encodeURIComponent(n(u))+c+encodeURIComponent(n(o)):''}}),1194,[]);
1361
- __d((function(g,_r,_i,_a,_m,_e,d){Object.defineProperty(_e,"__esModule",{value:!0}),_e.ModalStackProvider=function(e){var u=e.children,l=e.modalStack,c=void 0===l?i:l,p=(0,r.useStackItems)(c),f=t.useRef(new n.Animated.Value(0)),v=p.some((function(e){return'settled'===e.status||'pushing'===e.status}));return t.useEffect((function(){v?n.Animated.timing(f.current,{toValue:1,useNativeDriver:!0,duration:200}).start():n.Animated.timing(f.current,{toValue:0,useNativeDriver:!0,duration:200}).start()}),[v]),(0,o.jsxs)(a.Provider,{value:{push:function(e){return c.push({element:e})},pop:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:1;return c.pop(e)}},children:[u,(0,o.jsx)(n.Animated.View,{style:[n.StyleSheet.absoluteFillObject,{backgroundColor:'rgba(0,0,0,0.75)',opacity:f.current}],pointerEvents:v?'box-none':'none',children:(0,o.jsx)(n.Pressable,{onPress:function(){c.pop()},style:[n.StyleSheet.absoluteFillObject],children:p.map((function(e){return(0,o.jsx)(s,Object.assign({},e,{onClose:e.pop,onPopEnd:e.onPopEnd,onPushEnd:e.onPushEnd}),e.key)}))})})]})},_e.useModalStack=void 0;var e=_r(d[0]),t=(function(e,t){if(!t&&e&&e.__esModule)return e;if(null===e||"object"!=typeof e&&"function"!=typeof e)return{default:e};var n=u(t);if(n&&n.has(e))return n.get(e);var r={__proto__:null},o=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var a in e)if("default"!==a&&{}.hasOwnProperty.call(e,a)){var i=o?Object.getOwnPropertyDescriptor(e,a):null;i&&(i.get||i.set)?Object.defineProperty(r,a,i):r[a]=e[a]}return r.default=e,n&&n.set(e,r),r})(_r(d[1])),n=_r(d[2]),r=_r(d[3]),o=_r(d[4]);function u(e){if("function"!=typeof WeakMap)return null;var t=new WeakMap,n=new WeakMap;return(u=function(e){return e?n:t})(e)}var a=t.createContext(null),i=(_e.useModalStack=function(){return t.useContext(a)},(0,r.createAsyncStack)());function s(t){var r=t.status,u=t.data.element;return(0,o.jsx)(n.Animated.View,{pointerEvents:'popping'===r?'none':'box-none',style:[n.StyleSheet.absoluteFillObject,{justifyContent:'center'}],children:(0,o.jsx)(e.Button.Container,{children:u})})}}),1195,[775,112,1,1178,260]);
1361
+ __d((function(g,_r,_i,_a,_m,_e,d){Object.defineProperty(_e,"__esModule",{value:!0}),_e.ModalStackProvider=function(e){var i=e.children,c=e.modalStack,p=void 0===c?s:c,f=(0,o.useStackItems)(p),v=n.useRef(new r.Animated.Value(0)),y=f.some((function(e){return'settled'===e.status||'pushing'===e.status}));return n.useEffect((function(){y?r.Animated.timing(v.current,{toValue:1,useNativeDriver:!0,duration:200}).start():r.Animated.timing(v.current,{toValue:0,useNativeDriver:!0,duration:200}).start()}),[y]),(0,u.jsxs)(a.Provider,{value:{push:function(e){return p.push({element:e})},pop:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:1;return p.pop(e)}},children:[i,(0,u.jsx)(r.Animated.View,{style:[r.StyleSheet.absoluteFillObject,{backgroundColor:'rgba(0,0,0,0.75)',opacity:v.current}],pointerEvents:y?'box-none':'none',children:(0,u.jsx)(r.Pressable,{onPress:function(){p.pop()},style:[r.StyleSheet.absoluteFillObject],children:f.map((function(e){return(0,t.createElement)(l,Object.assign({},e,{key:e.key,onClose:e.pop,onPopEnd:e.onPopEnd,onPushEnd:e.onPushEnd}))}))})})]})},_e.useModalStack=void 0;var e=_r(d[0]),t=(function(e,t){if(!t&&e&&e.__esModule)return e;if(null===e||"object"!=typeof e&&"function"!=typeof e)return{default:e};var n=i(t);if(n&&n.has(e))return n.get(e);var r={__proto__:null},o=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var u in e)if("default"!==u&&{}.hasOwnProperty.call(e,u)){var a=o?Object.getOwnPropertyDescriptor(e,u):null;a&&(a.get||a.set)?Object.defineProperty(r,u,a):r[u]=e[u]}return r.default=e,n&&n.set(e,r),r})(_r(d[1])),n=t,r=_r(d[2]),o=_r(d[3]),u=_r(d[4]);function i(e){if("function"!=typeof WeakMap)return null;var t=new WeakMap,n=new WeakMap;return(i=function(e){return e?n:t})(e)}var a=n.createContext(null),s=(_e.useModalStack=function(){return n.useContext(a)},(0,o.createAsyncStack)());function l(t){var o=t.status,i=t.data,a=t.onPushEnd,s=t.onPopEnd,l=i.element;return n.useEffect((function(){'pushing'===o?a():'popping'===o&&s()}),[o]),(0,u.jsx)(r.Animated.View,{pointerEvents:'popping'===o?'none':'box-none',style:[r.StyleSheet.absoluteFillObject,{justifyContent:'center'}],children:(0,u.jsx)(e.Button.Container,{children:l})})}}),1195,[775,112,1,1178,260]);
1362
1362
  __d((function(g,_r,_i,_a,m,_e,d){var e=_r(d[0]);Object.defineProperty(_e,"__esModule",{value:!0}),_e.PendingDeepLinkProvider=function(e){var f=e.children,p=e.initialPendingDeepLink,c=void 0===p?'':p,l=(0,u.useModalStack)(),s=t.useState(c),v=(0,n.default)(s,2),k=v[0],D=v[1];return t.useEffect((function(){(0,i.getPendingDeepLink)().then((function(e){e&&(D(e),l.push((function(){return(0,o.jsx)(r.DeepLinkModal,{pendingDeepLink:e})})))}))}),[]),t.useEffect((function(){var e=(0,i.addDeepLinkListener)((function(e){var n=e.url;n&&(D(n),l.push((function(){return(0,o.jsx)(r.DeepLinkModal,{pendingDeepLink:n})})))}));return function(){e.remove()}}),[]),(0,o.jsx)(a.Provider,{value:{pendingDeepLink:k,setPendingDeepLink:D},children:f})},_e.usePendingDeepLink=void 0;var n=e(_r(d[1])),t=(function(e,n){if(!n&&e&&e.__esModule)return e;if(null===e||"object"!=typeof e&&"function"!=typeof e)return{default:e};var t=f(n);if(t&&t.has(e))return t.get(e);var r={__proto__:null},i=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var u in e)if("default"!==u&&{}.hasOwnProperty.call(e,u)){var o=i?Object.getOwnPropertyDescriptor(e,u):null;o&&(o.get||o.set)?Object.defineProperty(r,u,o):r[u]=e[u]}return r.default=e,t&&t.set(e,r),r})(_r(d[2])),r=_r(d[3]),i=_r(d[4]),u=_r(d[5]),o=_r(d[6]);function f(e){if("function"!=typeof WeakMap)return null;var n=new WeakMap,t=new WeakMap;return(f=function(e){return e?t:n})(e)}var a=t.createContext(null);_e.usePendingDeepLink=function(){return t.useContext(a)}}),1196,[7,50,112,1197,1097,1195,260]);
1363
1363
  __d((function(g,_r,_i,_a,m,_e,d){Object.defineProperty(_e,"__esModule",{value:!0}),_e.DeepLinkModal=function(r){var i=r.pendingDeepLink,t=(0,l.useModalStack)();return(0,o.jsxs)(n.BaseModal,{title:"Deep link received:",children:[(0,o.jsx)(e.Spacer.Vertical,{size:"small"}),(0,o.jsx)(e.View,{py:"small",bg:"secondary",rounded:"medium",px:"medium",children:(0,o.jsx)(e.Text,{type:"mono",numberOfLines:3,children:i})}),(0,o.jsx)(e.Spacer.Vertical,{size:"large"}),(0,o.jsx)(u,{}),(0,o.jsx)(e.Spacer.Vertical,{size:"large"}),(0,o.jsxs)(e.View,{children:[(0,o.jsxs)(e.Text,{children:[(0,o.jsx)(e.Text,{weight:"bold",children:"Note: "}),"The next app you open will receive this link"]}),(0,o.jsx)(e.Spacer.Vertical,{size:"medium"}),(0,o.jsx)(e.Button.FadeOnPressContainer,{bg:"ghost",rounded:"medium",border:"ghost",onPress:function(){t.pop()},children:(0,o.jsx)(e.View,{py:"small",px:"medium",children:(0,o.jsx)(e.Button.Text,{size:"large",align:"center",weight:"semibold",color:"ghost",children:"Go back"})})})]})]})};var e=_r(d[0]),r=((function(e,r){if(!r&&e&&e.__esModule)return e;if(null===e||"object"!=typeof e&&"function"!=typeof e)return{default:e};var n=c(r);if(n&&n.has(e))return n.get(e);var i={__proto__:null},t=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var s in e)if("default"!==s&&{}.hasOwnProperty.call(e,s)){var l=t?Object.getOwnPropertyDescriptor(e,s):null;l&&(l.get||l.set)?Object.defineProperty(i,s,l):i[s]=e[s]}i.default=e,n&&n.set(e,i)})(_r(d[1])),_r(d[2])),n=_r(d[3]),i=_r(d[4]),t=_r(d[5]),s=_r(d[6]),l=_r(d[7]),a=_r(d[8]),o=_r(d[9]);function c(e){if("function"!=typeof WeakMap)return null;var r=new WeakMap,n=new WeakMap;return(c=function(e){return e?n:r})(e)}function u(){var n=(0,l.useModalStack)(),c=(0,s.useDevSessions)(),u=c.data,x=void 0===u?[]:u,j=c.isFetching,h=(0,a.useRecentlyOpenedApps)(),f=h.data,v=void 0===f?[]:f,w=h.isFetching,y=function(e){var r=e.url;(0,t.loadApp)(r).catch((function(e){n.push((function(){return(0,o.jsx)(i.LoadAppErrorModal,{message:e.message})}))}))};return j||w?(0,o.jsx)(r.ActivityIndicator,{}):x.length>0||v.length>0?(0,o.jsxs)(e.View,{children:[(0,o.jsx)(e.Text,{size:"large",children:"Select an app to open it:"}),(0,o.jsxs)(r.ScrollView,{style:{maxHeight:300},children:[(0,o.jsx)(e.Spacer.Vertical,{size:"medium"}),x.length>0&&(0,o.jsx)(o.Fragment,{children:x.map((function(r,n,i){var t=n===i.length-1;return(0,o.jsxs)(e.View,{children:[(0,o.jsx)(p,{label:r.description,onPress:function(){return y(r)}}),!t&&(0,o.jsx)(e.Divider,{})]},r.url)}))}),v.length>0&&(0,o.jsxs)(o.Fragment,{children:[(0,o.jsx)(e.Divider,{}),v.map((function(r,n,i){var t=n===i.length-1;return(0,o.jsxs)(e.View,{children:[(0,o.jsx)(p,{label:r.name,onPress:function(){return y(r)}}),!t&&(0,o.jsx)(e.Divider,{})]},r.url)}))]})]})]}):(0,o.jsxs)(e.View,{children:[(0,o.jsx)(e.Text,{size:"large",weight:"medium",children:"Unable to find any packagers"}),(0,o.jsx)(e.Spacer.Vertical,{size:"small"}),(0,o.jsx)(e.Text,{children:"Start a local development server with:"}),(0,o.jsx)(e.Spacer.Vertical,{size:"small"}),(0,o.jsx)(e.View,{bg:"secondary",border:"default",rounded:"medium",padding:"medium",children:(0,o.jsx)(e.Text,{type:"mono",children:"expo start"})})]})}function p(r){var n=r.onPress,i=r.label;return(0,o.jsx)(e.View,{rounded:"medium",children:(0,o.jsx)(e.Button.FadeOnPressContainer,{bg:"default",onPress:n,children:(0,o.jsxs)(e.Row,{align:"center",py:"medium",px:"small",children:[(0,o.jsx)(e.StatusIndicator,{size:"small",status:"success"}),(0,o.jsx)(e.Spacer.Horizontal,{size:"small"}),(0,o.jsx)(e.Text,{children:i}),(0,o.jsx)(e.Spacer.Horizontal,{}),(0,o.jsx)(e.ChevronRightIcon,{})]})})})}}),1197,[775,112,1,1198,1199,1097,1184,1195,1200,260]);
1364
1364
  __d((function(g,_r,_i,_a,m,_e,d){Object.defineProperty(_e,"__esModule",{value:!0}),_e.BaseModal=function(t){var i=t.children,a=t.title,l=(0,n.useModalStack)();return(0,r.jsxs)(e.View,{bg:"default",rounded:"large",shadow:"medium",mx:"small",children:[(0,r.jsx)(e.View,{padding:"medium",children:(0,r.jsxs)(e.Row,{align:"center",bg:"default",children:[(0,r.jsx)(e.View,{children:(0,r.jsx)(e.Heading,{children:a})}),(0,r.jsx)(e.Spacer.Horizontal,{}),(0,r.jsx)(e.View,{style:{transform:[{translateX:6},{translateY:-3}]},children:(0,r.jsx)(e.Button.FadeOnPressContainer,{bg:"default",rounded:"full",onPress:function(){l.pop()},children:(0,r.jsx)(e.View,{padding:"tiny",rounded:"full",bg:"default",children:(0,r.jsx)(e.XIcon,{})})})})]})}),(0,r.jsx)(e.Divider,{}),(0,r.jsx)(e.View,{padding:"medium",children:i})]})};var e=_r(d[0]),n=((function(e,n){if(!n&&e&&e.__esModule)return e;if(null===e||"object"!=typeof e&&"function"!=typeof e)return{default:e};var r=t(n);if(r&&r.has(e))return r.get(e);var i={__proto__:null},a=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var l in e)if("default"!==l&&{}.hasOwnProperty.call(e,l)){var o=a?Object.getOwnPropertyDescriptor(e,l):null;o&&(o.get||o.set)?Object.defineProperty(i,l,o):i[l]=e[l]}i.default=e,r&&r.set(e,i)})(_r(d[1])),_r(d[2])),r=_r(d[3]);function t(e){if("function"!=typeof WeakMap)return null;var n=new WeakMap,r=new WeakMap;return(t=function(e){return e?r:n})(e)}}),1198,[775,112,1195,260]);
@@ -6,6 +6,7 @@ import android.view.KeyEvent
6
6
  import android.view.MotionEvent
7
7
  import android.view.View
8
8
  import android.view.ViewGroup
9
+ import androidx.core.view.WindowCompat
9
10
  import com.facebook.react.ReactActivity
10
11
  import com.facebook.react.ReactActivityDelegate
11
12
  import com.facebook.react.ReactInstanceEventListener
@@ -51,6 +52,8 @@ class DevLauncherActivity : ReactActivity(), ReactInstanceEventListener, DevLaun
51
52
  }
52
53
 
53
54
  override fun onCreate(savedInstanceState: Bundle?) {
55
+ // Enables edge-to-edge
56
+ WindowCompat.setDecorFitsSystemWindows(window, false)
54
57
  super.onCreate(savedInstanceState)
55
58
 
56
59
  contentView = findViewById(android.R.id.content) ?: return
@@ -4,6 +4,11 @@ import android.app.Activity
4
4
  import android.content.Context
5
5
  import android.content.Intent
6
6
  import android.os.Bundle
7
+ import android.widget.LinearLayout
8
+ import androidx.core.view.ViewCompat
9
+ import androidx.core.view.WindowCompat
10
+ import androidx.core.view.WindowInsetsCompat
11
+ import androidx.core.view.updatePadding
7
12
  import androidx.fragment.app.FragmentActivity
8
13
  import com.facebook.react.ReactActivity
9
14
  import expo.modules.devlauncher.databinding.ErrorFragmentBinding
@@ -21,12 +26,28 @@ class DevLauncherErrorActivity :
21
26
  private val adapter = DevLauncherStackAdapter(this, null)
22
27
 
23
28
  override fun onCreate(savedInstanceState: Bundle?) {
29
+ // Enables edge-to-edge
30
+ WindowCompat.setDecorFitsSystemWindows(window, false)
24
31
  super.onCreate(savedInstanceState)
25
32
 
26
33
  binding = ErrorFragmentBinding.inflate(layoutInflater)
27
34
  binding.homeButton.setOnClickListener { this.launchHome() }
28
35
  binding.reloadButton.setOnClickListener { this.reload() }
29
36
 
37
+ // Set footer padding to avoid the navigation bar
38
+ ViewCompat.setOnApplyWindowInsetsListener(binding.errorFooterContent) { view, windowInsets ->
39
+ val insets = windowInsets.getInsets(WindowInsetsCompat.Type.systemBars())
40
+ view.updatePadding(bottom = insets.bottom)
41
+ WindowInsetsCompat.CONSUMED
42
+ }
43
+
44
+ // Set title padding to account for status bar
45
+ ViewCompat.setOnApplyWindowInsetsListener(binding.errorTitle) { view, windowInsets ->
46
+ val insets = windowInsets.getInsets(WindowInsetsCompat.Type.systemBars())
47
+ view.updatePadding(top = insets.top)
48
+ WindowInsetsCompat.CONSUMED
49
+ }
50
+
30
51
  synchronized(DevLauncherErrorActivity) {
31
52
  val error = currentError
32
53
  if (error != null) {
@@ -20,6 +20,7 @@
20
20
  android:weightSum="1">
21
21
 
22
22
  <TextView
23
+ android:id="@+id/error_title"
23
24
  android:layout_width="wrap_content"
24
25
  android:layout_height="wrap_content"
25
26
  android:tag="DevLauncherErrorScreen"
@@ -62,6 +63,7 @@
62
63
  android:layout_alignParentBottom="true">
63
64
 
64
65
  <LinearLayout
66
+ android:id="@+id/error_footer_content"
65
67
  android:layout_width="match_parent"
66
68
  android:layout_height="wrap_content"
67
69
  android:background="@color/dev_launcher_white"
@@ -1,6 +1,12 @@
1
1
  <?xml version="1.0" encoding="utf-8"?>
2
- <resources>
2
+ <resources xmlns:tools="http://schemas.android.com/tools">
3
3
  <style name="Theme.DevLauncher.LauncherActivity" parent="Theme.AppCompat.Light.NoActionBar">
4
+ <item name="android:navigationBarColor">@android:color/transparent</item>
5
+ <item name="android:statusBarColor">@android:color/transparent</item>
6
+ <item name="android:windowLightStatusBar">true</item>
7
+ <item name="android:enforceNavigationBarContrast" tools:targetApi="q">false</item>
8
+ <item name="android:windowLightNavigationBar" tools:targetApi="o_mr1">true</item>
9
+
4
10
  <item name="android:windowContentOverlay">@null</item>
5
11
  <item name="android:windowNoTitle">true</item>
6
12
  <item name="android:windowIsFloating">false</item>
@@ -9,7 +15,12 @@
9
15
  </style>
10
16
 
11
17
  <style name="Theme.DevLauncher.ErrorActivity" parent="Theme.AppCompat.Light.NoActionBar">
18
+ <item name="android:navigationBarColor">@android:color/transparent</item>
12
19
  <item name="android:statusBarColor">@android:color/transparent</item>
20
+ <item name="android:windowLightStatusBar">true</item>
21
+ <item name="android:enforceNavigationBarContrast" tools:targetApi="q">false</item>
22
+ <item name="android:windowLightNavigationBar" tools:targetApi="o_mr1">true</item>
23
+
13
24
  <item name="colorPrimary">@color/dev_launcher_primary</item>
14
25
  <item name="colorPrimaryDark">@color/dev_launcher_colorPrimaryDark</item>
15
26
  <item name="colorAccent">@color/dev_launcher_colorAccentDark</item>
@@ -35,7 +35,7 @@ export type StackState<T = any> = {
35
35
 
36
36
  export type Stack<T> = {
37
37
  push: (data?: T | undefined) => StackItem<T>;
38
- pop: (amount?: number, startIndex?: number) => StackItem[];
38
+ pop: (amount?: number) => StackItem[];
39
39
  subscribe: (listener: (state: StackEvent<T>) => void) => () => void;
40
40
  getState: () => StackState;
41
41
  };
@@ -65,8 +65,8 @@ export function ModalStackProvider({ children, modalStack = defaultModalStack })
65
65
  style={[StyleSheet.absoluteFillObject]}>
66
66
  {modals.map((item) => (
67
67
  <ModalScreen
68
- key={item.key}
69
68
  {...item}
69
+ key={item.key}
70
70
  onClose={item.pop}
71
71
  onPopEnd={item.onPopEnd}
72
72
  onPushEnd={item.onPushEnd}
@@ -82,9 +82,17 @@ type ModalScreenProps = StackItem & {
82
82
  onClose: () => void;
83
83
  };
84
84
 
85
- function ModalScreen({ status, data }: ModalScreenProps) {
85
+ function ModalScreen({ status, data, onPushEnd, onPopEnd }: ModalScreenProps) {
86
86
  const { element } = data;
87
87
 
88
+ React.useEffect(() => {
89
+ if (status === 'pushing') {
90
+ onPushEnd();
91
+ } else if (status === 'popping') {
92
+ onPopEnd();
93
+ }
94
+ }, [status]);
95
+
88
96
  return (
89
97
  <Animated.View
90
98
  pointerEvents={status === 'popping' ? 'none' : 'box-none'}
@@ -1,19 +1,19 @@
1
1
  // Copyright 2015-present 650 Industries. All rights reserved.
2
2
 
3
3
  import ExpoModulesCore
4
- import SafariServices
5
- import React
4
+ import AuthenticationServices
6
5
 
7
6
  private let DEV_LAUNCHER_DEFAULT_SCHEME = "expo-dev-launcher"
8
7
 
9
8
  public class DevLauncherAuth: Module {
10
9
  private var redirectPromise: Promise?
11
- private var authSession: SFAuthenticationSession?
10
+ private var authSession: ASWebAuthenticationSession?
11
+ private let presentationContext = DevLauncherAuthPresentationContext()
12
12
 
13
13
  public func definition() -> ModuleDefinition {
14
14
  Name("ExpoDevLauncherAuth")
15
15
 
16
- AsyncFunction("openAuthSessionAsync") { (authURL: URL, redirectURL: String, promise: Promise) in
16
+ AsyncFunction("openAuthSessionAsync") { (authURL: URL, _: String, promise: Promise) in
17
17
  if self.redirectPromise != nil {
18
18
  throw WebBrowserAlreadyPresentedException()
19
19
  }
@@ -34,20 +34,18 @@ public class DevLauncherAuth: Module {
34
34
  self?.flowDidFinish()
35
35
  }
36
36
 
37
- self.authSession = SFAuthenticationSession(url: authURL, callbackURLScheme: redirectURL, completionHandler: completionHandler)
37
+ // With ASWebAuthenticationSession, all that is required for the callbackURLScheme is the scheme defined in CFBundleURLSchemes.
38
+ // ://auth is not necessary.
39
+ let scheme = getAuthScheme()
40
+
41
+ self.authSession = ASWebAuthenticationSession(url: authURL, callbackURLScheme: scheme, completionHandler: completionHandler)
42
+ self.authSession?.presentationContextProvider = presentationContext
43
+ self.authSession?.prefersEphemeralWebBrowserSession = true
38
44
  self.authSession?.start()
39
- }
45
+ }.runOnQueue(.main)
40
46
 
41
47
  AsyncFunction("getAuthSchemeAsync") { () -> String in
42
- if let urlTypes = Bundle.main.object(forInfoDictionaryKey: "CFBundleURLTypes") as? [[String: Any]] {
43
- for urlType in urlTypes {
44
- if let schemes = urlType["CFBundleURLSchemes"] as? [String], !schemes.isEmpty {
45
- return schemes[0]
46
- }
47
- }
48
- }
49
-
50
- return DEV_LAUNCHER_DEFAULT_SCHEME
48
+ getAuthScheme()
51
49
  }
52
50
 
53
51
  AsyncFunction("setSessionAsync") { (session: String?) in
@@ -59,7 +57,24 @@ public class DevLauncherAuth: Module {
59
57
  }
60
58
  }
61
59
 
60
+ private func getAuthScheme() -> String {
61
+ guard let urlTypes = Bundle.main.object(forInfoDictionaryKey: "CFBundleURLTypes") as? [[String: Any]] else {
62
+ return DEV_LAUNCHER_DEFAULT_SCHEME
63
+ }
64
+
65
+ return urlTypes.compactMap { urlType in
66
+ (urlType["CFBundleURLSchemes"] as? [String])?.first
67
+ }.first ?? DEV_LAUNCHER_DEFAULT_SCHEME
68
+ }
69
+
62
70
  private func flowDidFinish() {
63
71
  self.redirectPromise = nil
64
72
  }
65
73
  }
74
+
75
+ private class DevLauncherAuthPresentationContext: NSObject, ASWebAuthenticationPresentationContextProviding {
76
+ func presentationAnchor(for session: ASWebAuthenticationSession) -> ASPresentationAnchor {
77
+ let window = UIApplication.shared.windows.first { $0.isKeyWindow }
78
+ return window ?? ASPresentationAnchor()
79
+ }
80
+ }
@@ -93,7 +93,6 @@
93
93
 
94
94
  - (NSArray<id<RCTBridgeModule>> *)extraModulesForBridge:(RCTBridge *)bridge
95
95
  {
96
-
97
96
  NSMutableArray<id<RCTBridgeModule>> *modules = [NSMutableArray new];
98
97
 
99
98
  [modules addObject:[RCTDevMenu new]];
@@ -14,16 +14,13 @@ public class EXDevLauncherUrl: NSObject {
14
14
  @objc
15
15
  public init(_ url: URL) {
16
16
  self.queryParams = EXDevLauncherURLHelper.getQueryParamsForUrl(url)
17
- self.url = url
18
-
19
- if EXDevLauncherURLHelper.isDevLauncherURL(url) {
20
- if let urlParam = self.queryParams["url"] {
21
- if let urlFromParam = URL.init(string: urlParam) {
22
- self.url = EXDevLauncherURLHelper.replaceEXPScheme(urlFromParam, to: "http")
23
- }
24
- }
17
+
18
+ if EXDevLauncherURLHelper.isDevLauncherURL(url),
19
+ let urlParam = queryParams["url"],
20
+ let urlFromParam = URL(string: urlParam) {
21
+ self.url = EXDevLauncherURLHelper.replaceEXPScheme(urlFromParam, to: "http")
25
22
  } else {
26
- self.url = EXDevLauncherURLHelper.replaceEXPScheme(self.url, to: "http")
23
+ self.url = EXDevLauncherURLHelper.replaceEXPScheme(url, to: "http")
27
24
  }
28
25
 
29
26
  super.init()
@@ -39,48 +36,53 @@ public class EXDevLauncherURLHelper: NSObject {
39
36
 
40
37
  @objc
41
38
  public static func hasUrlQueryParam(_ url: URL) -> Bool {
42
- var hasUrlQueryParam = false
43
-
44
- let components = URLComponents.init(url: url, resolvingAgainstBaseURL: false)
45
-
46
- if (components?.queryItems?.contains(where: {
47
- $0.name == "url" && $0.value != nil
48
- })) ?? false {
49
- hasUrlQueryParam = true
39
+ guard let components = URLComponents(url: url, resolvingAgainstBaseURL: false),
40
+ let queryItems = components.queryItems else {
41
+ return false
50
42
  }
51
43
 
52
- return hasUrlQueryParam
44
+ return queryItems.contains { $0.name == "url" && $0.value != nil }
53
45
  }
54
46
 
55
47
  @objc
56
48
  public static func disableOnboardingPopupIfNeeded(_ url: URL) {
57
- let components = URLComponents.init(url: url, resolvingAgainstBaseURL: false)
49
+ guard let components = URLComponents(url: url, resolvingAgainstBaseURL: false),
50
+ let queryItems = components.queryItems else {
51
+ return
52
+ }
58
53
 
59
- if (components?.queryItems?.contains(where: {
54
+ let shouldDisable = queryItems.contains {
60
55
  $0.name == "disableOnboarding" && ($0.value ?? "") == "1"
61
- })) ?? false {
56
+ }
57
+
58
+ if shouldDisable {
62
59
  DevMenuPreferences.isOnboardingFinished = true
63
60
  }
64
61
  }
65
62
 
66
63
  @objc
67
64
  public static func replaceEXPScheme(_ url: URL, to scheme: String) -> URL {
68
- var components = URLComponents(url: url, resolvingAgainstBaseURL: false)
69
- if components?.scheme == "exp" {
70
- components?.scheme = scheme
65
+ guard var components = URLComponents(url: url, resolvingAgainstBaseURL: false),
66
+ components.scheme == "exp" else {
67
+ return url
71
68
  }
72
- return components?.url ?? url
69
+
70
+ components.scheme = scheme
71
+ return components.url ?? url
73
72
  }
74
73
 
75
74
  @objc
76
75
  public static func getQueryParamsForUrl(_ url: URL) -> [String: String] {
77
- let components = URLComponents.init(url: url, resolvingAgainstBaseURL: false)
78
- var dict: [String: String] = [:]
76
+ guard let components = URLComponents(url: url, resolvingAgainstBaseURL: false),
77
+ let queryItems = components.queryItems else {
78
+ return [:]
79
+ }
79
80
 
80
- for parameter in components?.queryItems ?? [] {
81
- dict[parameter.name] = parameter.value?.removingPercentEncoding ?? ""
81
+ var params: [String: String] = [:]
82
+ for item in queryItems {
83
+ params[item.name] = item.value?.removingPercentEncoding ?? ""
82
84
  }
83
85
 
84
- return dict
86
+ return params
85
87
  }
86
88
  }
package/ios/main.jsbundle CHANGED
@@ -1355,7 +1355,7 @@ __d((function(g,r,i,a,m,e,d){'use strict';m.exports={isString:function(n){return
1355
1355
  __d((function(g,r,i,a,m,e,d){'use strict';e.decode=e.parse=r(d[0]),e.encode=e.stringify=r(d[1])}),1189,[1190,1191]);
1356
1356
  __d((function(g,r,_i,a,m,e,d){'use strict';function t(t,n){return Object.prototype.hasOwnProperty.call(t,n)}m.exports=function(n,o,s,p){o=o||'&',s=s||'=';var u={};if('string'!=typeof n||0===n.length)return u;var c=/\+/g;n=n.split(o);var i=1e3;p&&'number'==typeof p.maxKeys&&(i=p.maxKeys);var f=n.length;i>0&&f>i&&(f=i);for(var y=0;y<f;++y){var l,v,b,h,x=n[y].replace(c,'%20'),O=x.indexOf(s);O>=0?(l=x.substr(0,O),v=x.substr(O+1)):(l=x,v=''),b=decodeURIComponent(l),h=decodeURIComponent(v),t(u,b)?Array.isArray(u[b])?u[b].push(h):u[b]=[u[b],h]:u[b]=h}return u}}),1190,[]);
1357
1357
  __d((function(g,r,i,a,m,e,d){'use strict';var n=function(n){switch(typeof n){case'string':return n;case'boolean':return n?'true':'false';case'number':return isFinite(n)?n:'';default:return''}};m.exports=function(o,t,c,u){return t=t||'&',c=c||'=',null===o&&(o=void 0),'object'==typeof o?Object.keys(o).map((function(u){var s=encodeURIComponent(n(u))+c;return Array.isArray(o[u])?o[u].map((function(o){return s+encodeURIComponent(n(o))})).join(t):s+encodeURIComponent(n(o[u]))})).filter(Boolean).join(t):u?encodeURIComponent(n(u))+c+encodeURIComponent(n(o)):''}}),1191,[]);
1358
- __d((function(g,_r,_i,_a,_m,_e,d){Object.defineProperty(_e,"__esModule",{value:!0}),_e.ModalStackProvider=function(e){var u=e.children,l=e.modalStack,c=void 0===l?i:l,p=(0,r.useStackItems)(c),f=t.useRef(new n.Animated.Value(0)),v=p.some((function(e){return'settled'===e.status||'pushing'===e.status}));return t.useEffect((function(){v?n.Animated.timing(f.current,{toValue:1,useNativeDriver:!0,duration:200}).start():n.Animated.timing(f.current,{toValue:0,useNativeDriver:!0,duration:200}).start()}),[v]),(0,o.jsxs)(a.Provider,{value:{push:function(e){return c.push({element:e})},pop:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:1;return c.pop(e)}},children:[u,(0,o.jsx)(n.Animated.View,{style:[n.StyleSheet.absoluteFillObject,{backgroundColor:'rgba(0,0,0,0.75)',opacity:f.current}],pointerEvents:v?'box-none':'none',children:(0,o.jsx)(n.Pressable,{onPress:function(){c.pop()},style:[n.StyleSheet.absoluteFillObject],children:p.map((function(e){return(0,o.jsx)(s,Object.assign({},e,{onClose:e.pop,onPopEnd:e.onPopEnd,onPushEnd:e.onPushEnd}),e.key)}))})})]})},_e.useModalStack=void 0;var e=_r(d[0]),t=(function(e,t){if(!t&&e&&e.__esModule)return e;if(null===e||"object"!=typeof e&&"function"!=typeof e)return{default:e};var n=u(t);if(n&&n.has(e))return n.get(e);var r={__proto__:null},o=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var a in e)if("default"!==a&&{}.hasOwnProperty.call(e,a)){var i=o?Object.getOwnPropertyDescriptor(e,a):null;i&&(i.get||i.set)?Object.defineProperty(r,a,i):r[a]=e[a]}return r.default=e,n&&n.set(e,r),r})(_r(d[1])),n=_r(d[2]),r=_r(d[3]),o=_r(d[4]);function u(e){if("function"!=typeof WeakMap)return null;var t=new WeakMap,n=new WeakMap;return(u=function(e){return e?n:t})(e)}var a=t.createContext(null),i=(_e.useModalStack=function(){return t.useContext(a)},(0,r.createAsyncStack)());function s(t){var r=t.status,u=t.data.element;return(0,o.jsx)(n.Animated.View,{pointerEvents:'popping'===r?'none':'box-none',style:[n.StyleSheet.absoluteFillObject,{justifyContent:'center'}],children:(0,o.jsx)(e.Button.Container,{children:u})})}}),1192,[772,112,1,1175,262]);
1358
+ __d((function(g,_r,_i,_a,_m,_e,d){Object.defineProperty(_e,"__esModule",{value:!0}),_e.ModalStackProvider=function(e){var i=e.children,c=e.modalStack,p=void 0===c?s:c,f=(0,o.useStackItems)(p),v=n.useRef(new r.Animated.Value(0)),y=f.some((function(e){return'settled'===e.status||'pushing'===e.status}));return n.useEffect((function(){y?r.Animated.timing(v.current,{toValue:1,useNativeDriver:!0,duration:200}).start():r.Animated.timing(v.current,{toValue:0,useNativeDriver:!0,duration:200}).start()}),[y]),(0,u.jsxs)(a.Provider,{value:{push:function(e){return p.push({element:e})},pop:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:1;return p.pop(e)}},children:[i,(0,u.jsx)(r.Animated.View,{style:[r.StyleSheet.absoluteFillObject,{backgroundColor:'rgba(0,0,0,0.75)',opacity:v.current}],pointerEvents:y?'box-none':'none',children:(0,u.jsx)(r.Pressable,{onPress:function(){p.pop()},style:[r.StyleSheet.absoluteFillObject],children:f.map((function(e){return(0,t.createElement)(l,Object.assign({},e,{key:e.key,onClose:e.pop,onPopEnd:e.onPopEnd,onPushEnd:e.onPushEnd}))}))})})]})},_e.useModalStack=void 0;var e=_r(d[0]),t=(function(e,t){if(!t&&e&&e.__esModule)return e;if(null===e||"object"!=typeof e&&"function"!=typeof e)return{default:e};var n=i(t);if(n&&n.has(e))return n.get(e);var r={__proto__:null},o=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var u in e)if("default"!==u&&{}.hasOwnProperty.call(e,u)){var a=o?Object.getOwnPropertyDescriptor(e,u):null;a&&(a.get||a.set)?Object.defineProperty(r,u,a):r[u]=e[u]}return r.default=e,n&&n.set(e,r),r})(_r(d[1])),n=t,r=_r(d[2]),o=_r(d[3]),u=_r(d[4]);function i(e){if("function"!=typeof WeakMap)return null;var t=new WeakMap,n=new WeakMap;return(i=function(e){return e?n:t})(e)}var a=n.createContext(null),s=(_e.useModalStack=function(){return n.useContext(a)},(0,o.createAsyncStack)());function l(t){var o=t.status,i=t.data,a=t.onPushEnd,s=t.onPopEnd,l=i.element;return n.useEffect((function(){'pushing'===o?a():'popping'===o&&s()}),[o]),(0,u.jsx)(r.Animated.View,{pointerEvents:'popping'===o?'none':'box-none',style:[r.StyleSheet.absoluteFillObject,{justifyContent:'center'}],children:(0,u.jsx)(e.Button.Container,{children:l})})}}),1192,[772,112,1,1175,262]);
1359
1359
  __d((function(g,_r,_i,_a,m,_e,d){var e=_r(d[0]);Object.defineProperty(_e,"__esModule",{value:!0}),_e.PendingDeepLinkProvider=function(e){var f=e.children,p=e.initialPendingDeepLink,c=void 0===p?'':p,l=(0,u.useModalStack)(),s=t.useState(c),v=(0,n.default)(s,2),k=v[0],D=v[1];return t.useEffect((function(){(0,i.getPendingDeepLink)().then((function(e){e&&(D(e),l.push((function(){return(0,o.jsx)(r.DeepLinkModal,{pendingDeepLink:e})})))}))}),[]),t.useEffect((function(){var e=(0,i.addDeepLinkListener)((function(e){var n=e.url;n&&(D(n),l.push((function(){return(0,o.jsx)(r.DeepLinkModal,{pendingDeepLink:n})})))}));return function(){e.remove()}}),[]),(0,o.jsx)(a.Provider,{value:{pendingDeepLink:k,setPendingDeepLink:D},children:f})},_e.usePendingDeepLink=void 0;var n=e(_r(d[1])),t=(function(e,n){if(!n&&e&&e.__esModule)return e;if(null===e||"object"!=typeof e&&"function"!=typeof e)return{default:e};var t=f(n);if(t&&t.has(e))return t.get(e);var r={__proto__:null},i=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var u in e)if("default"!==u&&{}.hasOwnProperty.call(e,u)){var o=i?Object.getOwnPropertyDescriptor(e,u):null;o&&(o.get||o.set)?Object.defineProperty(r,u,o):r[u]=e[u]}return r.default=e,t&&t.set(e,r),r})(_r(d[2])),r=_r(d[3]),i=_r(d[4]),u=_r(d[5]),o=_r(d[6]);function f(e){if("function"!=typeof WeakMap)return null;var n=new WeakMap,t=new WeakMap;return(f=function(e){return e?t:n})(e)}var a=t.createContext(null);_e.usePendingDeepLink=function(){return t.useContext(a)}}),1193,[7,50,112,1194,1094,1192,262]);
1360
1360
  __d((function(g,_r,_i,_a,m,_e,d){Object.defineProperty(_e,"__esModule",{value:!0}),_e.DeepLinkModal=function(r){var i=r.pendingDeepLink,t=(0,l.useModalStack)();return(0,o.jsxs)(n.BaseModal,{title:"Deep link received:",children:[(0,o.jsx)(e.Spacer.Vertical,{size:"small"}),(0,o.jsx)(e.View,{py:"small",bg:"secondary",rounded:"medium",px:"medium",children:(0,o.jsx)(e.Text,{type:"mono",numberOfLines:3,children:i})}),(0,o.jsx)(e.Spacer.Vertical,{size:"large"}),(0,o.jsx)(u,{}),(0,o.jsx)(e.Spacer.Vertical,{size:"large"}),(0,o.jsxs)(e.View,{children:[(0,o.jsxs)(e.Text,{children:[(0,o.jsx)(e.Text,{weight:"bold",children:"Note: "}),"The next app you open will receive this link"]}),(0,o.jsx)(e.Spacer.Vertical,{size:"medium"}),(0,o.jsx)(e.Button.FadeOnPressContainer,{bg:"ghost",rounded:"medium",border:"ghost",onPress:function(){t.pop()},children:(0,o.jsx)(e.View,{py:"small",px:"medium",children:(0,o.jsx)(e.Button.Text,{size:"large",align:"center",weight:"semibold",color:"ghost",children:"Go back"})})})]})]})};var e=_r(d[0]),r=((function(e,r){if(!r&&e&&e.__esModule)return e;if(null===e||"object"!=typeof e&&"function"!=typeof e)return{default:e};var n=c(r);if(n&&n.has(e))return n.get(e);var i={__proto__:null},t=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var s in e)if("default"!==s&&{}.hasOwnProperty.call(e,s)){var l=t?Object.getOwnPropertyDescriptor(e,s):null;l&&(l.get||l.set)?Object.defineProperty(i,s,l):i[s]=e[s]}i.default=e,n&&n.set(e,i)})(_r(d[1])),_r(d[2])),n=_r(d[3]),i=_r(d[4]),t=_r(d[5]),s=_r(d[6]),l=_r(d[7]),a=_r(d[8]),o=_r(d[9]);function c(e){if("function"!=typeof WeakMap)return null;var r=new WeakMap,n=new WeakMap;return(c=function(e){return e?n:r})(e)}function u(){var n=(0,l.useModalStack)(),c=(0,s.useDevSessions)(),u=c.data,x=void 0===u?[]:u,j=c.isFetching,h=(0,a.useRecentlyOpenedApps)(),f=h.data,v=void 0===f?[]:f,w=h.isFetching,y=function(e){var r=e.url;(0,t.loadApp)(r).catch((function(e){n.push((function(){return(0,o.jsx)(i.LoadAppErrorModal,{message:e.message})}))}))};return j||w?(0,o.jsx)(r.ActivityIndicator,{}):x.length>0||v.length>0?(0,o.jsxs)(e.View,{children:[(0,o.jsx)(e.Text,{size:"large",children:"Select an app to open it:"}),(0,o.jsxs)(r.ScrollView,{style:{maxHeight:300},children:[(0,o.jsx)(e.Spacer.Vertical,{size:"medium"}),x.length>0&&(0,o.jsx)(o.Fragment,{children:x.map((function(r,n,i){var t=n===i.length-1;return(0,o.jsxs)(e.View,{children:[(0,o.jsx)(p,{label:r.description,onPress:function(){return y(r)}}),!t&&(0,o.jsx)(e.Divider,{})]},r.url)}))}),v.length>0&&(0,o.jsxs)(o.Fragment,{children:[(0,o.jsx)(e.Divider,{}),v.map((function(r,n,i){var t=n===i.length-1;return(0,o.jsxs)(e.View,{children:[(0,o.jsx)(p,{label:r.name,onPress:function(){return y(r)}}),!t&&(0,o.jsx)(e.Divider,{})]},r.url)}))]})]})]}):(0,o.jsxs)(e.View,{children:[(0,o.jsx)(e.Text,{size:"large",weight:"medium",children:"Unable to find any packagers"}),(0,o.jsx)(e.Spacer.Vertical,{size:"small"}),(0,o.jsx)(e.Text,{children:"Start a local development server with:"}),(0,o.jsx)(e.Spacer.Vertical,{size:"small"}),(0,o.jsx)(e.View,{bg:"secondary",border:"default",rounded:"medium",padding:"medium",children:(0,o.jsx)(e.Text,{type:"mono",children:"expo start"})})]})}function p(r){var n=r.onPress,i=r.label;return(0,o.jsx)(e.View,{rounded:"medium",children:(0,o.jsx)(e.Button.FadeOnPressContainer,{bg:"default",onPress:n,children:(0,o.jsxs)(e.Row,{align:"center",py:"medium",px:"small",children:[(0,o.jsx)(e.StatusIndicator,{size:"small",status:"success"}),(0,o.jsx)(e.Spacer.Horizontal,{size:"small"}),(0,o.jsx)(e.Text,{children:i}),(0,o.jsx)(e.Spacer.Horizontal,{}),(0,o.jsx)(e.ChevronRightIcon,{})]})})})}}),1194,[772,112,1,1195,1196,1094,1181,1192,1197,262]);
1361
1361
  __d((function(g,_r,_i,_a,m,_e,d){Object.defineProperty(_e,"__esModule",{value:!0}),_e.BaseModal=function(t){var i=t.children,a=t.title,l=(0,n.useModalStack)();return(0,r.jsxs)(e.View,{bg:"default",rounded:"large",shadow:"medium",mx:"small",children:[(0,r.jsx)(e.View,{padding:"medium",children:(0,r.jsxs)(e.Row,{align:"center",bg:"default",children:[(0,r.jsx)(e.View,{children:(0,r.jsx)(e.Heading,{children:a})}),(0,r.jsx)(e.Spacer.Horizontal,{}),(0,r.jsx)(e.View,{style:{transform:[{translateX:6},{translateY:-3}]},children:(0,r.jsx)(e.Button.FadeOnPressContainer,{bg:"default",rounded:"full",onPress:function(){l.pop()},children:(0,r.jsx)(e.View,{padding:"tiny",rounded:"full",bg:"default",children:(0,r.jsx)(e.XIcon,{})})})})]})}),(0,r.jsx)(e.Divider,{}),(0,r.jsx)(e.View,{padding:"medium",children:i})]})};var e=_r(d[0]),n=((function(e,n){if(!n&&e&&e.__esModule)return e;if(null===e||"object"!=typeof e&&"function"!=typeof e)return{default:e};var r=t(n);if(r&&r.has(e))return r.get(e);var i={__proto__:null},a=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var l in e)if("default"!==l&&{}.hasOwnProperty.call(e,l)){var o=a?Object.getOwnPropertyDescriptor(e,l):null;o&&(o.get||o.set)?Object.defineProperty(i,l,o):i[l]=e[l]}i.default=e,r&&r.set(e,i)})(_r(d[1])),_r(d[2])),r=_r(d[3]);function t(e){if("function"!=typeof WeakMap)return null;var n=new WeakMap,r=new WeakMap;return(t=function(e){return e?r:n})(e)}}),1195,[772,112,1192,262]);
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "expo-dev-launcher",
3
3
  "title": "Expo Development Launcher",
4
- "version": "5.1.4",
4
+ "version": "5.1.6",
5
5
  "description": "Pre-release version of the Expo development launcher package for testing.",
6
6
  "main": "build/DevLauncher.js",
7
7
  "types": "build/DevLauncher.d.ts",
@@ -31,8 +31,8 @@
31
31
  "homepage": "https://docs.expo.dev",
32
32
  "dependencies": {
33
33
  "ajv": "8.11.0",
34
- "expo-dev-menu": "6.1.4",
35
- "expo-manifests": "~0.16.1",
34
+ "expo-dev-menu": "6.1.6",
35
+ "expo-manifests": "~0.16.3",
36
36
  "resolve-from": "^5.0.0"
37
37
  },
38
38
  "devDependencies": {
@@ -43,10 +43,10 @@
43
43
  "@testing-library/jest-native": "^4.0.4",
44
44
  "@testing-library/react-native": "^13.1.0",
45
45
  "babel-plugin-module-resolver": "^5.0.0",
46
- "babel-preset-expo": "~13.1.5",
46
+ "babel-preset-expo": "~13.1.7",
47
47
  "date-fns": "^2.28.0",
48
- "expo-dev-client-components": "2.1.1",
49
- "expo-module-scripts": "^4.1.2",
48
+ "expo-dev-client-components": "2.1.3",
49
+ "expo-module-scripts": "^4.1.5",
50
50
  "graphql": "^16.0.1",
51
51
  "graphql-request": "^3.6.1",
52
52
  "react": "19.0.0",
@@ -67,5 +67,5 @@
67
67
  "/node_modules/(?!((jest-)?react-native|@react-native(-community)?)/|@react-navigation/)"
68
68
  ]
69
69
  },
70
- "gitHead": "f1394f21ff2719a9a3037d7511db170704e5c492"
70
+ "gitHead": "3cd208465df78e385ca9380531bbbfe33ca68e81"
71
71
  }