diff --git a/packages/expo-dev-launcher/android/src/debug/assets/expo_dev_launcher_android.bundle b/packages/expo-dev-launcher/android/src/debug/assets/expo_dev_launcher_android.bundle index 7e7b24cd74372..5d7af50e462a6 100644 --- a/packages/expo-dev-launcher/android/src/debug/assets/expo_dev_launcher_android.bundle +++ b/packages/expo-dev-launcher/android/src/debug/assets/expo_dev_launcher_android.bundle @@ -644,7 +644,7 @@ __d((function(g,r,i,a,m,e,d){Object.defineProperty(e,"__esModule",{value:!0});va __d((function(g,_r,_i,_a,m,_e,d){var e=_r(d[0]);Object.defineProperty(_e,"__esModule",{value:!0}),_e.SafeAreaInsetsContext=_e.SafeAreaFrameContext=_e.SafeAreaContext=_e.SafeAreaConsumer=void 0,_e.SafeAreaProvider=function(e){var t,u,l,f,v,y=e.children,h=e.initialMetrics,b=e.initialSafeAreaInsets,O=e.style,w=n.useContext(s),S=n.useContext(c),j=n.useState(null!=(t=null!=(u=null!=(l=null==h?void 0:h.insets)?l:b)?u:w)?t:null),x=(0,r.default)(j,2),C=x[0],P=x[1],A=n.useState(null!=(f=null!=(v=null==h?void 0:h.frame)?v:S)?f:{x:0,y:0,width:a.Dimensions.get('window').width,height:a.Dimensions.get('window').height}),_=(0,r.default)(A,2),D=_[0],M=_[1],k=n.useCallback((function(e){var t=e.nativeEvent,r=t.frame,n=t.insets;!r||r.height===D.height&&r.width===D.width&&r.x===D.x&&r.y===D.y||M(r),C&&n.bottom===C.bottom&&n.left===C.left&&n.right===C.right&&n.top===C.top||P(n)}),[D,C]);return(0,i.jsx)(o.default,{style:[p.fill,O],onInsetsChange:k,children:null!=C?(0,i.jsx)(c.Provider,{value:D,children:(0,i.jsx)(s.Provider,{value:C,children:y})}):null})},_e.useSafeArea=function(){return v()},_e.useSafeAreaFrame=function(){var e=n.useContext(c);if(null==e)throw new Error('No safe area frame value available. Make sure you are rendering `` at the top of your app.');return e},_e.useSafeAreaInsets=v,_e.withSafeAreaInsets=function(e){return n.forwardRef((function(t,r){return(0,i.jsx)(y,{children:function(n){return(0,i.jsx)(e,f(f({},t),{},{insets:n,ref:r}))}})}))};var t=e(_r(d[1])),r=e(_r(d[2])),n=(function(e,t){if(!t&&e&&e.__esModule)return e;if(null===e||"object"!=typeof e&&"function"!=typeof e)return{default:e};var r=u(t);if(r&&r.has(e))return r.get(e);var n={__proto__:null},a=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var o in e)if("default"!==o&&Object.prototype.hasOwnProperty.call(e,o)){var i=a?Object.getOwnPropertyDescriptor(e,o):null;i&&(i.get||i.set)?Object.defineProperty(n,o,i):n[o]=e[o]}return n.default=e,r&&r.set(e,n),n})(_r(d[3])),a=_r(d[4]),o=e(_r(d[5])),i=_r(d[6]);function u(e){if("function"!=typeof WeakMap)return null;var t=new WeakMap,r=new WeakMap;return(u=function(e){return e?r:t})(e)}function l(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function f(e){for(var r=1;r` at the top of your app.');return e}var y=_e.SafeAreaConsumer=s.Consumer;_e.SafeAreaContext=s}),587,[22,41,53,107,2,588,240]); __d((function(g,r,i,a,m,e,d){Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var t=r(d[0]);e.default=(0,t.requireNativeViewManager)('RNCSafeAreaProvider')}),588,[589]); __d((function(g,r,i,a,m,e,d){var t=r(d[0]);Object.defineProperty(e,"__esModule",{value:!0});var n={SyntheticPlatformEmitter:!0,DeviceEventEmitter:!0,EventEmitter:!0,NativeModulesProxy:!0,requireNativeViewManager:!0,Platform:!0,CodedError:!0,UnavailabilityError:!0,uuid:!0};Object.defineProperty(e,"CodedError",{enumerable:!0,get:function(){return b.CodedError}}),Object.defineProperty(e,"DeviceEventEmitter",{enumerable:!0,get:function(){return o.DeviceEventEmitter}}),Object.defineProperty(e,"EventEmitter",{enumerable:!0,get:function(){return u.EventEmitter}}),Object.defineProperty(e,"NativeModulesProxy",{enumerable:!0,get:function(){return c.default}}),Object.defineProperty(e,"Platform",{enumerable:!0,get:function(){return l.default}}),e.SyntheticPlatformEmitter=void 0,Object.defineProperty(e,"UnavailabilityError",{enumerable:!0,get:function(){return y.UnavailabilityError}}),Object.defineProperty(e,"requireNativeViewManager",{enumerable:!0,get:function(){return f.requireNativeViewManager}}),Object.defineProperty(e,"uuid",{enumerable:!0,get:function(){return p.default}});var o=r(d[1]),u=r(d[2]),c=t(r(d[3])),f=r(d[4]),l=t(r(d[5])),b=r(d[6]),y=r(d[7]);r(d[8]),r(d[9]);var p=t(r(d[10])),v=r(d[11]);Object.keys(v).forEach((function(t){"default"!==t&&"__esModule"!==t&&(Object.prototype.hasOwnProperty.call(n,t)||t in e&&e[t]===v[t]||Object.defineProperty(e,t,{enumerable:!0,get:function(){return v[t]}}))}));var O=r(d[12]);Object.keys(O).forEach((function(t){"default"!==t&&"__esModule"!==t&&(Object.prototype.hasOwnProperty.call(n,t)||t in e&&e[t]===O[t]||Object.defineProperty(e,t,{enumerable:!0,get:function(){return O[t]}}))}));var E=r(d[13]);Object.keys(E).forEach((function(t){"default"!==t&&"__esModule"!==t&&(Object.prototype.hasOwnProperty.call(n,t)||t in e&&e[t]===E[t]||Object.defineProperty(e,t,{enumerable:!0,get:function(){return E[t]}}))}));var P=r(d[14]);Object.keys(P).forEach((function(t){"default"!==t&&"__esModule"!==t&&(Object.prototype.hasOwnProperty.call(n,t)||t in e&&e[t]===P[t]||Object.defineProperty(e,t,{enumerable:!0,get:function(){return P[t]}}))}));var j=r(d[15]);Object.keys(j).forEach((function(t){"default"!==t&&"__esModule"!==t&&(Object.prototype.hasOwnProperty.call(n,t)||t in e&&e[t]===j[t]||Object.defineProperty(e,t,{enumerable:!0,get:function(){return j[t]}}))}));e.SyntheticPlatformEmitter=o.DeviceEventEmitter}),589,[22,2,590,591,592,594,596,597,598,600,601,593,605,606,607,608]); -__d((function(g,r,i,a,m,e,d){var t=r(d[0]);Object.defineProperty(e,"__esModule",{value:!0}),e.EventEmitter=void 0;var n=t(r(d[1])),s=t(r(d[2])),o=t(r(d[3])),v=t(r(d[4])),u=r(d[5]),l='@@nativeEmitterSubscription@@';e.EventEmitter=(function(){function t(n){(0,s.default)(this,t),this._listenerCount=0,n.__expo_module_name__&&u.NativeModules.EXReactNativeEventEmitter&&(n.addListener=function(){for(var t,s=arguments.length,o=new Array(s),v=0;v=0,"EventEmitter must have a non-negative number of listeners"),!this._listenerCount&&this._nativeModule.stopObserving&&this._nativeModule.stopObserving()}},{key:"removeSubscription",value:function(t){var n=t[l];n&&('remove'in n&&n.remove(),this._listenerCount--,delete t[l],t.remove=function(){},!this._listenerCount&&this._nativeModule.stopObserving&&this._nativeModule.stopObserving())}},{key:"emit",value:function(t){for(var n,s=arguments.length,o=new Array(s>1?s-1:0),v=1;v=0,"EventEmitter must have a non-negative number of listeners"),!this._listenerCount&&this._nativeModule.stopObserving&&this._nativeModule.stopObserving()}},{key:"removeSubscription",value:function(t){var n=t[l];n&&('remove'in n&&n.remove(),this._listenerCount--,delete t[l],t.remove=function(){},!this._listenerCount&&this._nativeModule.stopObserving&&this._nativeModule.stopObserving())}},{key:"emit",value:function(t){for(var n,s=arguments.length,o=new Array(s>1?s-1:0),v=1;v` at the top of your app.');return e},_e.useSafeAreaInsets=v,_e.withSafeAreaInsets=function(e){return n.forwardRef((function(t,r){return(0,i.jsx)(y,{children:function(n){return(0,i.jsx)(e,f(f({},t),{},{insets:n,ref:r}))}})}))};var t=e(_r(d[1])),r=e(_r(d[2])),n=(function(e,t){if(!t&&e&&e.__esModule)return e;if(null===e||"object"!=typeof e&&"function"!=typeof e)return{default:e};var r=u(t);if(r&&r.has(e))return r.get(e);var n={__proto__:null},a=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var o in e)if("default"!==o&&Object.prototype.hasOwnProperty.call(e,o)){var i=a?Object.getOwnPropertyDescriptor(e,o):null;i&&(i.get||i.set)?Object.defineProperty(n,o,i):n[o]=e[o]}return n.default=e,r&&r.set(e,n),n})(_r(d[3])),a=_r(d[4]),o=e(_r(d[5])),i=_r(d[6]);function u(e){if("function"!=typeof WeakMap)return null;var t=new WeakMap,r=new WeakMap;return(u=function(e){return e?r:t})(e)}function l(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function f(e){for(var r=1;r` at the top of your app.');return e}var y=_e.SafeAreaConsumer=s.Consumer;_e.SafeAreaContext=s}),585,[22,41,53,107,2,586,242]); __d((function(g,r,i,a,m,e,d){Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var t=r(d[0]);e.default=(0,t.requireNativeViewManager)('RNCSafeAreaProvider')}),586,[587]); __d((function(g,r,i,a,m,e,d){var t=r(d[0]);Object.defineProperty(e,"__esModule",{value:!0});var n={SyntheticPlatformEmitter:!0,DeviceEventEmitter:!0,EventEmitter:!0,NativeModulesProxy:!0,requireNativeViewManager:!0,Platform:!0,CodedError:!0,UnavailabilityError:!0,uuid:!0};Object.defineProperty(e,"CodedError",{enumerable:!0,get:function(){return b.CodedError}}),Object.defineProperty(e,"DeviceEventEmitter",{enumerable:!0,get:function(){return o.DeviceEventEmitter}}),Object.defineProperty(e,"EventEmitter",{enumerable:!0,get:function(){return u.EventEmitter}}),Object.defineProperty(e,"NativeModulesProxy",{enumerable:!0,get:function(){return c.default}}),Object.defineProperty(e,"Platform",{enumerable:!0,get:function(){return l.default}}),e.SyntheticPlatformEmitter=void 0,Object.defineProperty(e,"UnavailabilityError",{enumerable:!0,get:function(){return y.UnavailabilityError}}),Object.defineProperty(e,"requireNativeViewManager",{enumerable:!0,get:function(){return f.requireNativeViewManager}}),Object.defineProperty(e,"uuid",{enumerable:!0,get:function(){return p.default}});var o=r(d[1]),u=r(d[2]),c=t(r(d[3])),f=r(d[4]),l=t(r(d[5])),b=r(d[6]),y=r(d[7]);r(d[8]),r(d[9]);var p=t(r(d[10])),v=r(d[11]);Object.keys(v).forEach((function(t){"default"!==t&&"__esModule"!==t&&(Object.prototype.hasOwnProperty.call(n,t)||t in e&&e[t]===v[t]||Object.defineProperty(e,t,{enumerable:!0,get:function(){return v[t]}}))}));var O=r(d[12]);Object.keys(O).forEach((function(t){"default"!==t&&"__esModule"!==t&&(Object.prototype.hasOwnProperty.call(n,t)||t in e&&e[t]===O[t]||Object.defineProperty(e,t,{enumerable:!0,get:function(){return O[t]}}))}));var E=r(d[13]);Object.keys(E).forEach((function(t){"default"!==t&&"__esModule"!==t&&(Object.prototype.hasOwnProperty.call(n,t)||t in e&&e[t]===E[t]||Object.defineProperty(e,t,{enumerable:!0,get:function(){return E[t]}}))}));var P=r(d[14]);Object.keys(P).forEach((function(t){"default"!==t&&"__esModule"!==t&&(Object.prototype.hasOwnProperty.call(n,t)||t in e&&e[t]===P[t]||Object.defineProperty(e,t,{enumerable:!0,get:function(){return P[t]}}))}));var j=r(d[15]);Object.keys(j).forEach((function(t){"default"!==t&&"__esModule"!==t&&(Object.prototype.hasOwnProperty.call(n,t)||t in e&&e[t]===j[t]||Object.defineProperty(e,t,{enumerable:!0,get:function(){return j[t]}}))}));e.SyntheticPlatformEmitter=o.DeviceEventEmitter}),587,[22,2,588,589,590,592,594,595,596,598,599,591,603,604,605,606]); -__d((function(g,r,i,a,m,e,d){var t=r(d[0]);Object.defineProperty(e,"__esModule",{value:!0}),e.EventEmitter=void 0;var n=t(r(d[1])),o=t(r(d[2])),s=t(r(d[3])),v=t(r(d[4])),u=r(d[5]),l='@@nativeEmitterSubscription@@';e.EventEmitter=(function(){function t(n){(0,o.default)(this,t),this._listenerCount=0,n.__expo_module_name__&&u.NativeModules.EXReactNativeEventEmitter&&(n.addListener=function(){for(var t,o=arguments.length,s=new Array(o),v=0;v=0,"EventEmitter must have a non-negative number of listeners"),this._listenerCount}},{key:"removeSubscription",value:function(t){var n=t[l];n&&('remove'in n&&n.remove(),this._listenerCount--,delete t[l],t.remove=function(){},this._listenerCount)}},{key:"emit",value:function(t){for(var n,o=arguments.length,s=new Array(o>1?o-1:0),v=1;v=0,"EventEmitter must have a non-negative number of listeners"),this._listenerCount}},{key:"removeSubscription",value:function(t){var n=t[l];n&&('remove'in n&&n.remove(),this._listenerCount--,delete t[l],t.remove=function(){},this._listenerCount)}},{key:"emit",value:function(t){for(var n,s=arguments.length,o=new Array(s>1?s-1:0),u=1;u {\n if (webOrientationLock === WebOrientationLock.UNKNOWN) {\n throw new Error(\n `expo-screen-orientation: WebOrientationLock.UNKNOWN is not a valid lock that can be applied to the device.`\n );\n }\n if (screen.orientation && screen.orientation.lock) {\n await screen.orientation.lock(webOrientationLock);\n } else if (\n screen['lockOrientation'] ||\n screen['mozLockOrientation'] ||\n screen['msLockOrientation']\n ) {\n const legacyLock = _convertToLegacyOrientationLock(webOrientationLock);\n const lockOrientation =\n screen['lockOrientation'] || screen['mozLockOrientation'] || screen['msLockOrientation'];\n // correct `this` context must be passed in otherwise method call is disallowed by browser\n const isSuccess = lockOrientation.call(screen, legacyLock);\n if (!isSuccess) {\n throw new Error(\n `Applying orientation lock: ${JSON.stringify(webOrientationLock)} to device was denied`\n );\n }\n } else {\n throw new Error(\n `expo-screen-orientation: The browser doesn't support locking screen orientation.`\n );\n }\n}\n\nlet _lastWebOrientationLock: WebOrientationLock = WebOrientationLock.UNKNOWN;\n\nexport default {\n async supportsOrientationLockAsync(orientationLock: OrientationLock): Promise {\n return orientationLock in OrientationLockAPIToWeb;\n },\n async getPlatformOrientationLockAsync(): Promise {\n return _lastWebOrientationLock;\n },\n async getOrientationAsync(): Promise {\n const webOrientation =\n screen['msOrientation'] || (screen.orientation || screen['mozOrientation'] || {}).type;\n if (!webOrientation) {\n return Orientation.UNKNOWN;\n }\n return OrientationWebToAPI[webOrientation];\n },\n async lockAsync(orientationLock: OrientationLock): Promise {\n const webOrientationLock = OrientationLockAPIToWeb[orientationLock];\n if (!webOrientationLock) {\n throw new TypeError(`Invalid Orientation Lock: ${orientationLock}`);\n }\n await _lockAsync(webOrientationLock);\n },\n async lockPlatformAsync(webOrientationLock: WebOrientationLock): Promise {\n await _lockAsync(webOrientationLock);\n _lastWebOrientationLock = webOrientationLock;\n },\n async unlockAsync(): Promise {\n if (screen.orientation && screen.orientation.unlock) {\n screen.orientation.unlock();\n } else if (\n screen['unlockOrientation'] ||\n screen['mozUnlockOrientation'] ||\n screen['msUnlockOrientation']\n ) {\n const unlockOrientation =\n screen['unlockOrientation'] ||\n screen['mozUnlockOrientation'] ||\n screen['msUnlockOrientation'];\n // correct `this` context must be passed in otherwise method call is disallowed by browser\n const isSuccess = unlockOrientation.call(screen);\n if (!isSuccess) {\n throw new Error(`Unlocking screen orientation on device was denied`);\n }\n } else {\n throw new Error(\n `expo-screen-orientation: The browser doesn't support unlocking screen orientation.`\n );\n }\n },\n};\n"]} \ No newline at end of file +{"version":3,"file":"ExpoScreenOrientation.web.js","sourceRoot":"","sources":["../src/ExpoScreenOrientation.web.ts"],"names":[],"mappings":"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","sourcesContent":["import { DeviceEventEmitter, Platform } from 'expo-modules-core';\n\nimport { getOrientationLockAsync, getOrientationAsync } from './ScreenOrientation';\nimport {\n Orientation,\n OrientationLock,\n WebOrientationLock,\n WebOrientation,\n} from './ScreenOrientation.types';\n\nconst OrientationLockAPIToWeb: {\n [lock: string]: WebOrientationLock;\n} = {\n [OrientationLock.DEFAULT]: WebOrientationLock.NATURAL,\n [OrientationLock.ALL]: WebOrientationLock.ANY,\n [OrientationLock.PORTRAIT]: WebOrientationLock.PORTRAIT,\n [OrientationLock.PORTRAIT_UP]: WebOrientationLock.PORTRAIT_PRIMARY,\n [OrientationLock.PORTRAIT_DOWN]: WebOrientationLock.PORTRAIT_SECONDARY,\n [OrientationLock.LANDSCAPE]: WebOrientationLock.LANDSCAPE,\n [OrientationLock.LANDSCAPE_LEFT]: WebOrientationLock.LANDSCAPE_PRIMARY,\n [OrientationLock.LANDSCAPE_RIGHT]: WebOrientationLock.LANDSCAPE_SECONDARY,\n};\n\nconst OrientationWebToAPI: {\n [orientationWeb: string]: Orientation;\n} = {\n [WebOrientation.PORTRAIT_PRIMARY]: Orientation.PORTRAIT_UP,\n [WebOrientation.PORTRAIT_SECONDARY]: Orientation.PORTRAIT_DOWN,\n [WebOrientation.LANDSCAPE_PRIMARY]: Orientation.LANDSCAPE_LEFT,\n [WebOrientation.LANDSCAPE_SECONDARY]: Orientation.LANDSCAPE_RIGHT,\n};\n\ndeclare const window: Window;\n\nconst screen: Screen = Platform.canUseViewport ? window.screen : ({} as Screen);\nconst orientation: ScreenOrientation | null = Platform.canUseViewport\n ? screen.orientation || (screen as any).msOrientation || null\n : null;\n\nasync function emitOrientationEvent() {\n const [orientationLock, orientation] = await Promise.all([\n getOrientationLockAsync(),\n getOrientationAsync(),\n ]);\n DeviceEventEmitter.emit('expoDidUpdateDimensions', {\n orientationLock,\n orientationInfo: { orientation },\n });\n}\n\nif (Platform.canUseEventListeners) {\n if (orientation && orientation.addEventListener) {\n orientation.addEventListener('change', emitOrientationEvent);\n } else {\n window.addEventListener('orientationchange', emitOrientationEvent);\n }\n}\n\nfunction _convertToLegacyOrientationLock(orientationLock: WebOrientationLock): string | string[] {\n switch (orientationLock) {\n case WebOrientationLock.UNKNOWN:\n throw new Error(\n `expo-screen-orientation: WebOrientationLock.UNKNOWN is not a valid lock to be converted.`\n );\n case WebOrientationLock.ANY:\n return ['portrait', 'landscape'];\n case WebOrientationLock.NATURAL:\n return 'default';\n default:\n return orientationLock;\n }\n}\n\nasync function _lockAsync(webOrientationLock: WebOrientationLock): Promise {\n if (webOrientationLock === WebOrientationLock.UNKNOWN) {\n throw new Error(\n `expo-screen-orientation: WebOrientationLock.UNKNOWN is not a valid lock that can be applied to the device.`\n );\n }\n // @ts-expect-error: This is missing in the TypeScript definitions\n if (screen.orientation && screen.orientation.lock) {\n // @ts-expect-error\n await screen.orientation.lock(webOrientationLock);\n } else if (\n screen['lockOrientation'] ||\n screen['mozLockOrientation'] ||\n screen['msLockOrientation']\n ) {\n const legacyLock = _convertToLegacyOrientationLock(webOrientationLock);\n const lockOrientation =\n screen['lockOrientation'] || screen['mozLockOrientation'] || screen['msLockOrientation'];\n // correct `this` context must be passed in otherwise method call is disallowed by browser\n const isSuccess = lockOrientation.call(screen, legacyLock);\n if (!isSuccess) {\n throw new Error(\n `Applying orientation lock: ${JSON.stringify(webOrientationLock)} to device was denied`\n );\n }\n } else {\n throw new Error(\n `expo-screen-orientation: The browser doesn't support locking screen orientation.`\n );\n }\n}\n\nlet _lastWebOrientationLock: WebOrientationLock = WebOrientationLock.UNKNOWN;\n\nexport default {\n async supportsOrientationLockAsync(orientationLock: OrientationLock): Promise {\n return orientationLock in OrientationLockAPIToWeb;\n },\n async getPlatformOrientationLockAsync(): Promise {\n return _lastWebOrientationLock;\n },\n async getOrientationAsync(): Promise {\n const webOrientation =\n screen['msOrientation'] || (screen.orientation || screen['mozOrientation'] || {}).type;\n if (!webOrientation) {\n return Orientation.UNKNOWN;\n }\n return OrientationWebToAPI[webOrientation];\n },\n async lockAsync(orientationLock: OrientationLock): Promise {\n const webOrientationLock = OrientationLockAPIToWeb[orientationLock];\n if (!webOrientationLock) {\n throw new TypeError(`Invalid Orientation Lock: ${orientationLock}`);\n }\n await _lockAsync(webOrientationLock);\n },\n async lockPlatformAsync(webOrientationLock: WebOrientationLock): Promise {\n await _lockAsync(webOrientationLock);\n _lastWebOrientationLock = webOrientationLock;\n },\n async unlockAsync(): Promise {\n if (screen.orientation && screen.orientation.unlock) {\n screen.orientation.unlock();\n } else if (\n screen['unlockOrientation'] ||\n screen['mozUnlockOrientation'] ||\n screen['msUnlockOrientation']\n ) {\n const unlockOrientation =\n screen['unlockOrientation'] ||\n screen['mozUnlockOrientation'] ||\n screen['msUnlockOrientation'];\n // correct `this` context must be passed in otherwise method call is disallowed by browser\n const isSuccess = unlockOrientation.call(screen);\n if (!isSuccess) {\n throw new Error(`Unlocking screen orientation on device was denied`);\n }\n } else {\n throw new Error(\n `expo-screen-orientation: The browser doesn't support unlocking screen orientation.`\n );\n }\n },\n};\n"]} \ No newline at end of file diff --git a/packages/expo-screen-orientation/src/ExpoScreenOrientation.web.ts b/packages/expo-screen-orientation/src/ExpoScreenOrientation.web.ts index 48ce35d2ec0c0..ff3dcc68fb56a 100644 --- a/packages/expo-screen-orientation/src/ExpoScreenOrientation.web.ts +++ b/packages/expo-screen-orientation/src/ExpoScreenOrientation.web.ts @@ -77,7 +77,9 @@ async function _lockAsync(webOrientationLock: WebOrientationLock): Promise `expo-screen-orientation: WebOrientationLock.UNKNOWN is not a valid lock that can be applied to the device.` ); } + // @ts-expect-error: This is missing in the TypeScript definitions if (screen.orientation && screen.orientation.lock) { + // @ts-expect-error await screen.orientation.lock(webOrientationLock); } else if ( screen['lockOrientation'] ||