expo-screen-orientation 8.1.2 → 8.1.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (42) hide show
  1. package/CHANGELOG.md +4 -0
  2. package/android/build.gradle +2 -2
  3. package/build/ExpoScreenOrientation.web.d.ts +9 -0
  4. package/build/ExpoScreenOrientation.web.d.ts.map +1 -1
  5. package/build/ExpoScreenOrientation.web.js +30 -24
  6. package/build/ExpoScreenOrientation.web.js.map +1 -1
  7. package/expo-module.config.json +1 -1
  8. package/local-maven-repo/host/exp/exponent/expo.modules.screenorientation/{8.1.2/expo.modules.screenorientation-8.1.2.module → 8.1.3/expo.modules.screenorientation-8.1.3.module} +7 -7
  9. package/local-maven-repo/host/exp/exponent/expo.modules.screenorientation/8.1.3/expo.modules.screenorientation-8.1.3.module.md5 +1 -0
  10. package/local-maven-repo/host/exp/exponent/expo.modules.screenorientation/8.1.3/expo.modules.screenorientation-8.1.3.module.sha1 +1 -0
  11. package/local-maven-repo/host/exp/exponent/expo.modules.screenorientation/8.1.3/expo.modules.screenorientation-8.1.3.module.sha256 +1 -0
  12. package/local-maven-repo/host/exp/exponent/expo.modules.screenorientation/8.1.3/expo.modules.screenorientation-8.1.3.module.sha512 +1 -0
  13. package/local-maven-repo/host/exp/exponent/expo.modules.screenorientation/{8.1.2/expo.modules.screenorientation-8.1.2.pom → 8.1.3/expo.modules.screenorientation-8.1.3.pom} +1 -1
  14. package/local-maven-repo/host/exp/exponent/expo.modules.screenorientation/8.1.3/expo.modules.screenorientation-8.1.3.pom.md5 +1 -0
  15. package/local-maven-repo/host/exp/exponent/expo.modules.screenorientation/8.1.3/expo.modules.screenorientation-8.1.3.pom.sha1 +1 -0
  16. package/local-maven-repo/host/exp/exponent/expo.modules.screenorientation/8.1.3/expo.modules.screenorientation-8.1.3.pom.sha256 +1 -0
  17. package/local-maven-repo/host/exp/exponent/expo.modules.screenorientation/8.1.3/expo.modules.screenorientation-8.1.3.pom.sha512 +1 -0
  18. package/local-maven-repo/host/exp/exponent/expo.modules.screenorientation/maven-metadata.xml +4 -4
  19. package/local-maven-repo/host/exp/exponent/expo.modules.screenorientation/maven-metadata.xml.md5 +1 -1
  20. package/local-maven-repo/host/exp/exponent/expo.modules.screenorientation/maven-metadata.xml.sha1 +1 -1
  21. package/local-maven-repo/host/exp/exponent/expo.modules.screenorientation/maven-metadata.xml.sha256 +1 -1
  22. package/local-maven-repo/host/exp/exponent/expo.modules.screenorientation/maven-metadata.xml.sha512 +1 -1
  23. package/package.json +3 -3
  24. package/src/ExpoScreenOrientation.web.ts +62 -33
  25. package/local-maven-repo/host/exp/exponent/expo.modules.screenorientation/8.1.2/expo.modules.screenorientation-8.1.2.module.md5 +0 -1
  26. package/local-maven-repo/host/exp/exponent/expo.modules.screenorientation/8.1.2/expo.modules.screenorientation-8.1.2.module.sha1 +0 -1
  27. package/local-maven-repo/host/exp/exponent/expo.modules.screenorientation/8.1.2/expo.modules.screenorientation-8.1.2.module.sha256 +0 -1
  28. package/local-maven-repo/host/exp/exponent/expo.modules.screenorientation/8.1.2/expo.modules.screenorientation-8.1.2.module.sha512 +0 -1
  29. package/local-maven-repo/host/exp/exponent/expo.modules.screenorientation/8.1.2/expo.modules.screenorientation-8.1.2.pom.md5 +0 -1
  30. package/local-maven-repo/host/exp/exponent/expo.modules.screenorientation/8.1.2/expo.modules.screenorientation-8.1.2.pom.sha1 +0 -1
  31. package/local-maven-repo/host/exp/exponent/expo.modules.screenorientation/8.1.2/expo.modules.screenorientation-8.1.2.pom.sha256 +0 -1
  32. package/local-maven-repo/host/exp/exponent/expo.modules.screenorientation/8.1.2/expo.modules.screenorientation-8.1.2.pom.sha512 +0 -1
  33. /package/local-maven-repo/host/exp/exponent/expo.modules.screenorientation/{8.1.2/expo.modules.screenorientation-8.1.2-sources.jar → 8.1.3/expo.modules.screenorientation-8.1.3-sources.jar} +0 -0
  34. /package/local-maven-repo/host/exp/exponent/expo.modules.screenorientation/{8.1.2/expo.modules.screenorientation-8.1.2-sources.jar.md5 → 8.1.3/expo.modules.screenorientation-8.1.3-sources.jar.md5} +0 -0
  35. /package/local-maven-repo/host/exp/exponent/expo.modules.screenorientation/{8.1.2/expo.modules.screenorientation-8.1.2-sources.jar.sha1 → 8.1.3/expo.modules.screenorientation-8.1.3-sources.jar.sha1} +0 -0
  36. /package/local-maven-repo/host/exp/exponent/expo.modules.screenorientation/{8.1.2/expo.modules.screenorientation-8.1.2-sources.jar.sha256 → 8.1.3/expo.modules.screenorientation-8.1.3-sources.jar.sha256} +0 -0
  37. /package/local-maven-repo/host/exp/exponent/expo.modules.screenorientation/{8.1.2/expo.modules.screenorientation-8.1.2-sources.jar.sha512 → 8.1.3/expo.modules.screenorientation-8.1.3-sources.jar.sha512} +0 -0
  38. /package/local-maven-repo/host/exp/exponent/expo.modules.screenorientation/{8.1.2/expo.modules.screenorientation-8.1.2.aar → 8.1.3/expo.modules.screenorientation-8.1.3.aar} +0 -0
  39. /package/local-maven-repo/host/exp/exponent/expo.modules.screenorientation/{8.1.2/expo.modules.screenorientation-8.1.2.aar.md5 → 8.1.3/expo.modules.screenorientation-8.1.3.aar.md5} +0 -0
  40. /package/local-maven-repo/host/exp/exponent/expo.modules.screenorientation/{8.1.2/expo.modules.screenorientation-8.1.2.aar.sha1 → 8.1.3/expo.modules.screenorientation-8.1.3.aar.sha1} +0 -0
  41. /package/local-maven-repo/host/exp/exponent/expo.modules.screenorientation/{8.1.2/expo.modules.screenorientation-8.1.2.aar.sha256 → 8.1.3/expo.modules.screenorientation-8.1.3.aar.sha256} +0 -0
  42. /package/local-maven-repo/host/exp/exponent/expo.modules.screenorientation/{8.1.2/expo.modules.screenorientation-8.1.2.aar.sha512 → 8.1.3/expo.modules.screenorientation-8.1.3.aar.sha512} +0 -0
package/CHANGELOG.md CHANGED
@@ -10,6 +10,10 @@
10
10
 
11
11
  ### 💡 Others
12
12
 
13
+ ## 8.1.3 — 2025-04-14
14
+
15
+ _This version does not introduce any user-facing changes._
16
+
13
17
  ## 8.1.2 — 2025-04-11
14
18
 
15
19
  _This version does not introduce any user-facing changes._
@@ -4,12 +4,12 @@ plugins {
4
4
  }
5
5
 
6
6
  group = 'host.exp.exponent'
7
- version = '8.1.2'
7
+ version = '8.1.3'
8
8
 
9
9
  android {
10
10
  namespace "expo.modules.screenorientation"
11
11
  defaultConfig {
12
12
  versionCode 7
13
- versionName '8.1.2'
13
+ versionName '8.1.3'
14
14
  }
15
15
  }
@@ -1,5 +1,14 @@
1
1
  import { NativeModule } from 'expo-modules-core';
2
2
  import { Orientation, OrientationLock, WebOrientationLock, ExpoOrientationEvents } from './ScreenOrientation.types';
3
+ declare global {
4
+ interface Screen {
5
+ msOrientation?: Screen['orientation']['type'];
6
+ mozOrientation?: Screen['orientation'];
7
+ mozUnlockOrientation?(): boolean | undefined;
8
+ msUnlockOrientation?(): boolean | undefined;
9
+ unlockOrientation?(): boolean | undefined;
10
+ }
11
+ }
3
12
  declare class ExpoScreenOrientation extends NativeModule<ExpoOrientationEvents> {
4
13
  orientation: ScreenOrientation | null;
5
14
  emitOrientationEvent(): Promise<void>;
@@ -1 +1 @@
1
- {"version":3,"file":"ExpoScreenOrientation.web.d.ts","sourceRoot":"","sources":["../src/ExpoScreenOrientation.web.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAA+B,MAAM,mBAAmB,CAAC;AAG9E,OAAO,EACL,WAAW,EACX,eAAe,EACf,kBAAkB,EAElB,qBAAqB,EACtB,MAAM,2BAA2B,CAAC;AA6EnC,cAAM,qBAAsB,SAAQ,YAAY,CAAC,qBAAqB,CAAC;IACrE,WAAW,EAAE,iBAAiB,GAAG,IAAI,CAE5B;IACH,oBAAoB;IAU1B,cAAc;IAUd,aAAa,IAAI,IAAI;IASf,4BAA4B,CAAC,eAAe,EAAE,eAAe,GAAG,OAAO,CAAC,OAAO,CAAC;IAGhF,+BAA+B,IAAI,OAAO,CAAC,kBAAkB,CAAC;IAG9D,mBAAmB,IAAI,OAAO,CAAC,WAAW,CAAC;IAQ3C,SAAS,CAAC,eAAe,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC;IAO1D,iBAAiB,CAAC,kBAAkB,EAAE,kBAAkB,GAAG,OAAO,CAAC,IAAI,CAAC;IAIxE,WAAW,IAAI,OAAO,CAAC,IAAI,CAAC;CAuBnC;;AAED,wBAAiF"}
1
+ {"version":3,"file":"ExpoScreenOrientation.web.d.ts","sourceRoot":"","sources":["../src/ExpoScreenOrientation.web.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAA+B,MAAM,mBAAmB,CAAC;AAG9E,OAAO,EACL,WAAW,EACX,eAAe,EACf,kBAAkB,EAElB,qBAAqB,EACtB,MAAM,2BAA2B,CAAC;AA2CnC,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,MAAM;QACd,aAAa,CAAC,EAAE,MAAM,CAAC,aAAa,CAAC,CAAC,MAAM,CAAC,CAAC;QAC9C,cAAc,CAAC,EAAE,MAAM,CAAC,aAAa,CAAC,CAAC;QAEvC,oBAAoB,CAAC,IAAI,OAAO,GAAG,SAAS,CAAC;QAC7C,mBAAmB,CAAC,IAAI,OAAO,GAAG,SAAS,CAAC;QAC5C,iBAAiB,CAAC,IAAI,OAAO,GAAG,SAAS,CAAC;KAC3C;CACF;AA+CD,cAAM,qBAAsB,SAAQ,YAAY,CAAC,qBAAqB,CAAC;IACrE,WAAW,EAAE,iBAAiB,GAAG,IAAI,CAE5B;IACH,oBAAoB;IAU1B,cAAc;IAUd,aAAa,IAAI,IAAI;IASf,4BAA4B,CAAC,eAAe,EAAE,eAAe,GAAG,OAAO,CAAC,OAAO,CAAC;IAGhF,+BAA+B,IAAI,OAAO,CAAC,kBAAkB,CAAC;IAG9D,mBAAmB,IAAI,OAAO,CAAC,WAAW,CAAC;IAQ3C,SAAS,CAAC,eAAe,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC;IAO1D,iBAAiB,CAAC,kBAAkB,EAAE,kBAAkB,GAAG,OAAO,CAAC,IAAI,CAAC;IAIxE,WAAW,IAAI,OAAO,CAAC,IAAI,CAAC;CA8BnC;;AAED,wBAAiF"}
@@ -34,25 +34,29 @@ async function _lockAsync(webOrientationLock) {
34
34
  if (webOrientationLock === WebOrientationLock.UNKNOWN) {
35
35
  throw new Error(`expo-screen-orientation: WebOrientationLock.UNKNOWN is not a valid lock that can be applied to the device.`);
36
36
  }
37
- // @ts-ignore-error: This is missing in the TypeScript definitions
38
- if (screen.orientation && screen.orientation.lock) {
39
- // @ts-ignore-error
37
+ // Handle modern lock screen web API
38
+ // See: https://developer.mozilla.org/en-US/docs/Web/API/ScreenOrientation/lock
39
+ if (screen.orientation &&
40
+ 'lock' in screen.orientation &&
41
+ typeof screen.orientation.lock === 'function') {
40
42
  await screen.orientation.lock(webOrientationLock);
43
+ return;
41
44
  }
42
- else if (screen['lockOrientation'] ||
43
- screen['mozLockOrientation'] ||
44
- screen['msLockOrientation']) {
45
+ // See: https://developer.mozilla.org/en-US/docs/Web/API/Screen/lockOrientation
46
+ const _legacyLockUniversal =
47
+ // @ts-expect-error - These legacy APIs are removed from the types
48
+ screen.lockOrientation || screen.mozLockOrientation || screen.msLockOrientation;
49
+ // Fallback to outdated legacy web API
50
+ // See: https://developer.mozilla.org/en-US/docs/Web/API/Screen/lockOrientation
51
+ if (typeof _legacyLockUniversal === 'function') {
45
52
  const legacyLock = _convertToLegacyOrientationLock(webOrientationLock);
46
- const lockOrientation = screen['lockOrientation'] || screen['mozLockOrientation'] || screen['msLockOrientation'];
47
- // correct `this` context must be passed in otherwise method call is disallowed by browser
48
- const isSuccess = lockOrientation.call(screen, legacyLock);
53
+ const isSuccess = _legacyLockUniversal.call(screen, legacyLock);
49
54
  if (!isSuccess) {
50
55
  throw new Error(`Applying orientation lock: ${JSON.stringify(webOrientationLock)} to device was denied`);
51
56
  }
57
+ return;
52
58
  }
53
- else {
54
- throw new Error(`expo-screen-orientation: The browser doesn't support locking screen orientation.`);
55
- }
59
+ throw new Error(`expo-screen-orientation: The browser doesn't support locking screen orientation.`);
56
60
  }
57
61
  let _lastWebOrientationLock = WebOrientationLock.UNKNOWN;
58
62
  class ExpoScreenOrientation extends NativeModule {
@@ -115,24 +119,26 @@ class ExpoScreenOrientation extends NativeModule {
115
119
  _lastWebOrientationLock = webOrientationLock;
116
120
  }
117
121
  async unlockAsync() {
118
- if (screen.orientation && screen.orientation.unlock) {
122
+ // Handle modern lock screen web API
123
+ // See: https://developer.mozilla.org/en-US/docs/Web/API/ScreenOrientation/unlock
124
+ if (screen.orientation &&
125
+ 'unlock' in screen.orientation &&
126
+ typeof screen.orientation.unlock === 'function') {
119
127
  screen.orientation.unlock();
128
+ return;
120
129
  }
121
- else if (screen['unlockOrientation'] ||
122
- screen['mozUnlockOrientation'] ||
123
- screen['msUnlockOrientation']) {
124
- const unlockOrientation = screen['unlockOrientation'] ||
125
- screen['mozUnlockOrientation'] ||
126
- screen['msUnlockOrientation'];
127
- // correct `this` context must be passed in otherwise method call is disallowed by browser
128
- const isSuccess = unlockOrientation.call(screen);
130
+ // See: https://developer.mozilla.org/en-US/docs/Web/API/Screen/unlockOrientation
131
+ const _legacyUnlockUniversal = screen.unlockOrientation || screen.mozUnlockOrientation || screen.msUnlockOrientation;
132
+ // Fallback to outdated legacy web API
133
+ // See: https://developer.mozilla.org/en-US/docs/Web/API/Screen/unlockOrientation
134
+ if (typeof _legacyUnlockUniversal === 'function') {
135
+ const isSuccess = _legacyUnlockUniversal.call(screen);
129
136
  if (!isSuccess) {
130
137
  throw new Error(`Unlocking screen orientation on device was denied`);
131
138
  }
139
+ return;
132
140
  }
133
- else {
134
- throw new Error(`expo-screen-orientation: The browser doesn't support unlocking screen orientation.`);
135
- }
141
+ throw new Error(`expo-screen-orientation: The browser doesn't support unlocking screen orientation.`);
136
142
  }
137
143
  }
138
144
  export default registerWebModule(ExpoScreenOrientation, 'ExpoScreenOrientation');
@@ -1 +1 @@
1
- {"version":3,"file":"ExpoScreenOrientation.web.js","sourceRoot":"","sources":["../src/ExpoScreenOrientation.web.ts"],"names":[],"mappings":"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","sourcesContent":["import { NativeModule, Platform, registerWebModule } from 'expo-modules-core';\n\nimport { getOrientationLockAsync, getOrientationAsync } from './ScreenOrientation';\nimport {\n Orientation,\n OrientationLock,\n WebOrientationLock,\n WebOrientation,\n ExpoOrientationEvents,\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);\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<void> {\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-ignore-error: This is missing in the TypeScript definitions\n if (screen.orientation && screen.orientation.lock) {\n // @ts-ignore-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\nclass ExpoScreenOrientation extends NativeModule<ExpoOrientationEvents> {\n orientation: ScreenOrientation | null = Platform.canUseViewport\n ? screen.orientation || (screen as any).msOrientation || null\n : null;\n async emitOrientationEvent() {\n const [orientationLock, orientation] = await Promise.all([\n getOrientationLockAsync(),\n getOrientationAsync(),\n ]);\n this.emit('expoDidUpdateDimensions', {\n orientationLock,\n orientationInfo: { orientation },\n });\n }\n startObserving() {\n this.listener = () => this.emitOrientationEvent();\n if (Platform.canUseEventListeners) {\n if (this.orientation && this.orientation.addEventListener) {\n this.orientation.addEventListener('change', this.listener);\n } else {\n window.addEventListener('orientationchange', this.listener);\n }\n }\n }\n stopObserving(): void {\n if (Platform.canUseEventListeners) {\n if (this.orientation && this.orientation.removeEventListener) {\n this.orientation.removeEventListener('change', this.listener);\n } else {\n window.removeEventListener('orientationchange', this.listener);\n }\n }\n }\n async supportsOrientationLockAsync(orientationLock: OrientationLock): Promise<boolean> {\n return orientationLock in OrientationLockAPIToWeb;\n }\n async getPlatformOrientationLockAsync(): Promise<WebOrientationLock> {\n return _lastWebOrientationLock;\n }\n async getOrientationAsync(): Promise<Orientation> {\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<void> {\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<void> {\n await _lockAsync(webOrientationLock);\n _lastWebOrientationLock = webOrientationLock;\n }\n async unlockAsync(): Promise<void> {\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\nexport default registerWebModule(ExpoScreenOrientation, 'ExpoScreenOrientation');\n"]}
1
+ {"version":3,"file":"ExpoScreenOrientation.web.js","sourceRoot":"","sources":["../src/ExpoScreenOrientation.web.ts"],"names":[],"mappings":"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","sourcesContent":["import { NativeModule, Platform, registerWebModule } from 'expo-modules-core';\n\nimport { getOrientationLockAsync, getOrientationAsync } from './ScreenOrientation';\nimport {\n Orientation,\n OrientationLock,\n WebOrientationLock,\n WebOrientation,\n ExpoOrientationEvents,\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);\n\nfunction _convertToLegacyOrientationLock(orientationLock: WebOrientationLock) {\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\ndeclare global {\n interface Screen {\n msOrientation?: Screen['orientation']['type'];\n mozOrientation?: Screen['orientation'];\n\n mozUnlockOrientation?(): boolean | undefined;\n msUnlockOrientation?(): boolean | undefined;\n unlockOrientation?(): boolean | undefined;\n }\n}\n\nasync function _lockAsync(webOrientationLock: WebOrientationLock): Promise<void> {\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\n // Handle modern lock screen web API\n // See: https://developer.mozilla.org/en-US/docs/Web/API/ScreenOrientation/lock\n if (\n screen.orientation &&\n 'lock' in screen.orientation &&\n typeof screen.orientation.lock === 'function'\n ) {\n await screen.orientation.lock(webOrientationLock);\n return;\n }\n\n // See: https://developer.mozilla.org/en-US/docs/Web/API/Screen/lockOrientation\n const _legacyLockUniversal:\n | undefined\n | ((orientation: ReturnType<typeof _convertToLegacyOrientationLock>) => boolean) =\n // @ts-expect-error - These legacy APIs are removed from the types\n screen.lockOrientation || screen.mozLockOrientation || screen.msLockOrientation;\n\n // Fallback to outdated legacy web API\n // See: https://developer.mozilla.org/en-US/docs/Web/API/Screen/lockOrientation\n if (typeof _legacyLockUniversal === 'function') {\n const legacyLock = _convertToLegacyOrientationLock(webOrientationLock);\n const isSuccess = _legacyLockUniversal.call(screen, legacyLock);\n if (!isSuccess) {\n throw new Error(\n `Applying orientation lock: ${JSON.stringify(webOrientationLock)} to device was denied`\n );\n }\n return;\n }\n\n throw new Error(\n `expo-screen-orientation: The browser doesn't support locking screen orientation.`\n );\n}\n\nlet _lastWebOrientationLock: WebOrientationLock = WebOrientationLock.UNKNOWN;\n\nclass ExpoScreenOrientation extends NativeModule<ExpoOrientationEvents> {\n orientation: ScreenOrientation | null = Platform.canUseViewport\n ? screen.orientation || (screen as any).msOrientation || null\n : null;\n async emitOrientationEvent() {\n const [orientationLock, orientation] = await Promise.all([\n getOrientationLockAsync(),\n getOrientationAsync(),\n ]);\n this.emit('expoDidUpdateDimensions', {\n orientationLock,\n orientationInfo: { orientation },\n });\n }\n startObserving() {\n this.listener = () => this.emitOrientationEvent();\n if (Platform.canUseEventListeners) {\n if (this.orientation && this.orientation.addEventListener) {\n this.orientation.addEventListener('change', this.listener);\n } else {\n window.addEventListener('orientationchange', this.listener);\n }\n }\n }\n stopObserving(): void {\n if (Platform.canUseEventListeners) {\n if (this.orientation && this.orientation.removeEventListener) {\n this.orientation.removeEventListener('change', this.listener);\n } else {\n window.removeEventListener('orientationchange', this.listener);\n }\n }\n }\n async supportsOrientationLockAsync(orientationLock: OrientationLock): Promise<boolean> {\n return orientationLock in OrientationLockAPIToWeb;\n }\n async getPlatformOrientationLockAsync(): Promise<WebOrientationLock> {\n return _lastWebOrientationLock;\n }\n async getOrientationAsync(): Promise<Orientation> {\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<void> {\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<void> {\n await _lockAsync(webOrientationLock);\n _lastWebOrientationLock = webOrientationLock;\n }\n async unlockAsync(): Promise<void> {\n // Handle modern lock screen web API\n // See: https://developer.mozilla.org/en-US/docs/Web/API/ScreenOrientation/unlock\n if (\n screen.orientation &&\n 'unlock' in screen.orientation &&\n typeof screen.orientation.unlock === 'function'\n ) {\n screen.orientation.unlock();\n return;\n }\n\n // See: https://developer.mozilla.org/en-US/docs/Web/API/Screen/unlockOrientation\n const _legacyUnlockUniversal: undefined | (() => boolean | undefined) =\n screen.unlockOrientation || screen.mozUnlockOrientation || screen.msUnlockOrientation;\n\n // Fallback to outdated legacy web API\n // See: https://developer.mozilla.org/en-US/docs/Web/API/Screen/unlockOrientation\n if (typeof _legacyUnlockUniversal === 'function') {\n const isSuccess = _legacyUnlockUniversal.call(screen);\n if (!isSuccess) {\n throw new Error(`Unlocking screen orientation on device was denied`);\n }\n return;\n }\n\n throw new Error(\n `expo-screen-orientation: The browser doesn't support unlocking screen orientation.`\n );\n }\n}\n\nexport default registerWebModule(ExpoScreenOrientation, 'ExpoScreenOrientation');\n"]}
@@ -10,7 +10,7 @@
10
10
  "publication": {
11
11
  "groupId": "host.exp.exponent",
12
12
  "artifactId": "expo.modules.screenorientation",
13
- "version": "8.1.2",
13
+ "version": "8.1.3",
14
14
  "repository": "local-maven-repo"
15
15
  }
16
16
  }
@@ -3,7 +3,7 @@
3
3
  "component": {
4
4
  "group": "host.exp.exponent",
5
5
  "module": "expo.modules.screenorientation",
6
- "version": "8.1.2",
6
+ "version": "8.1.3",
7
7
  "attributes": {
8
8
  "org.gradle.status": "release"
9
9
  }
@@ -24,8 +24,8 @@
24
24
  },
25
25
  "files": [
26
26
  {
27
- "name": "expo.modules.screenorientation-8.1.2.aar",
28
- "url": "expo.modules.screenorientation-8.1.2.aar",
27
+ "name": "expo.modules.screenorientation-8.1.3.aar",
28
+ "url": "expo.modules.screenorientation-8.1.3.aar",
29
29
  "size": 36475,
30
30
  "sha512": "a4b3c18f9651ead41fb1fe22c1e6b790b9d7c68491d80e58e790f6c1171f398fb4156ef115553a155f1ef7aa77b452271e03427c0f10baae2e2a141f6e10da7b",
31
31
  "sha256": "c60d4a82ab38a0ee50e0e163b0b070b1428604a0c9eb88122459bb788eeff98b",
@@ -53,8 +53,8 @@
53
53
  ],
54
54
  "files": [
55
55
  {
56
- "name": "expo.modules.screenorientation-8.1.2.aar",
57
- "url": "expo.modules.screenorientation-8.1.2.aar",
56
+ "name": "expo.modules.screenorientation-8.1.3.aar",
57
+ "url": "expo.modules.screenorientation-8.1.3.aar",
58
58
  "size": 36475,
59
59
  "sha512": "a4b3c18f9651ead41fb1fe22c1e6b790b9d7c68491d80e58e790f6c1171f398fb4156ef115553a155f1ef7aa77b452271e03427c0f10baae2e2a141f6e10da7b",
60
60
  "sha256": "c60d4a82ab38a0ee50e0e163b0b070b1428604a0c9eb88122459bb788eeff98b",
@@ -73,8 +73,8 @@
73
73
  },
74
74
  "files": [
75
75
  {
76
- "name": "expo.modules.screenorientation-8.1.2-sources.jar",
77
- "url": "expo.modules.screenorientation-8.1.2-sources.jar",
76
+ "name": "expo.modules.screenorientation-8.1.3-sources.jar",
77
+ "url": "expo.modules.screenorientation-8.1.3-sources.jar",
78
78
  "size": 5194,
79
79
  "sha512": "e06be0d0236539250b81b1d5670d89f70600b03c82fa53c245602afdcb2bab06d04d42e6dd85e9686867d069a8b09dd3fbc04f562bc1760e33f68ea614b2ec42",
80
80
  "sha256": "d63ace679c73e409ffd1706ac43973134e9151254bf644d73a33c27539db1037",
@@ -0,0 +1 @@
1
+ 38e215ebd25a9a7d45ff400c7bce0534434fdfa797c355e24dc8dd284d5d2344
@@ -0,0 +1 @@
1
+ 221253328fed36c152aa5dae8e4bb07aca505d3dc97cca1c11967e921a908cc828ebdbf76f25da674ed2792b1ebe085dc6bb1cde65f1092d8aa28f9b6a21b9d0
@@ -9,7 +9,7 @@
9
9
  <modelVersion>4.0.0</modelVersion>
10
10
  <groupId>host.exp.exponent</groupId>
11
11
  <artifactId>expo.modules.screenorientation</artifactId>
12
- <version>8.1.2</version>
12
+ <version>8.1.3</version>
13
13
  <packaging>aar</packaging>
14
14
  <name>expo.modules.screenorientation</name>
15
15
  <url>https://github.com/expo/expo</url>
@@ -0,0 +1 @@
1
+ 652bbf6492af7a3f4d115450e2c4d5bde4bf9aeaecafcf4998233d2e2bf1ecd9
@@ -0,0 +1 @@
1
+ dd2bac19e5e5fb7bb0679690503dc7ac98b3a6bb3c59004361bd29ce20c40a56f47cbc63475a597f7191474936a7050fbcb3c4226c8db04d1fce85df3d5e39fb
@@ -3,11 +3,11 @@
3
3
  <groupId>host.exp.exponent</groupId>
4
4
  <artifactId>expo.modules.screenorientation</artifactId>
5
5
  <versioning>
6
- <latest>8.1.2</latest>
7
- <release>8.1.2</release>
6
+ <latest>8.1.3</latest>
7
+ <release>8.1.3</release>
8
8
  <versions>
9
- <version>8.1.2</version>
9
+ <version>8.1.3</version>
10
10
  </versions>
11
- <lastUpdated>20250411190920</lastUpdated>
11
+ <lastUpdated>20250414184111</lastUpdated>
12
12
  </versioning>
13
13
  </metadata>
@@ -1 +1 @@
1
- 009662c00abee777c3e0a62349edf94c
1
+ 1352cc4fe58812efc4855272406d455c
@@ -1 +1 @@
1
- 34895ecbcce285f5b5ea3783d0c9f8a0328ab13b
1
+ 3c83bc1ab38ac6a01705d6b85cf0420ba3260cd3
@@ -1 +1 @@
1
- 64daf1843b0a6850a4a3f4fcaa2768c5b1f6be56ae10e58ac6ebbad404de39bc
1
+ 221ac3a4f845adf18302ca12b37628e2783a2a825a64044bf61228b6e101dfd8
@@ -1 +1 @@
1
- 91e1fd9bce01baf13f6ecf9d983f43965428e756b258eb1fa400f34cc625c22879c8aa4a666d66c63fa81a199a4b234fd7d3f7e5813396b3eebba9cdfa52de37
1
+ 1474ca54c89f74f75620aefeff6483fae36fd68fd4a98abbdfe2469b082cee7824d5e598af5c44e28d190d398801ef1738e41d3aee81aa984da6a87c6d6bad1a
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "expo-screen-orientation",
3
- "version": "8.1.2",
3
+ "version": "8.1.3",
4
4
  "description": "Expo universal module for managing device's screen orientation",
5
5
  "main": "build/ScreenOrientation.js",
6
6
  "types": "build/ScreenOrientation.d.ts",
@@ -36,11 +36,11 @@
36
36
  "preset": "expo-module-scripts"
37
37
  },
38
38
  "devDependencies": {
39
- "expo-module-scripts": "^4.1.1"
39
+ "expo-module-scripts": "^4.1.2"
40
40
  },
41
41
  "peerDependencies": {
42
42
  "expo": "*",
43
43
  "react-native": "*"
44
44
  },
45
- "gitHead": "dd2c7150fd75c56505aa6d3f805c14e255649c5d"
45
+ "gitHead": "335e9312f5caf634097354a230f0d4bbbfb9b0ba"
46
46
  }
@@ -35,7 +35,7 @@ declare const window: Window;
35
35
 
36
36
  const screen: Screen = Platform.canUseViewport ? window.screen : ({} as Screen);
37
37
 
38
- function _convertToLegacyOrientationLock(orientationLock: WebOrientationLock): string | string[] {
38
+ function _convertToLegacyOrientationLock(orientationLock: WebOrientationLock) {
39
39
  switch (orientationLock) {
40
40
  case WebOrientationLock.UNKNOWN:
41
41
  throw new Error(
@@ -50,36 +50,58 @@ function _convertToLegacyOrientationLock(orientationLock: WebOrientationLock): s
50
50
  }
51
51
  }
52
52
 
53
+ declare global {
54
+ interface Screen {
55
+ msOrientation?: Screen['orientation']['type'];
56
+ mozOrientation?: Screen['orientation'];
57
+
58
+ mozUnlockOrientation?(): boolean | undefined;
59
+ msUnlockOrientation?(): boolean | undefined;
60
+ unlockOrientation?(): boolean | undefined;
61
+ }
62
+ }
63
+
53
64
  async function _lockAsync(webOrientationLock: WebOrientationLock): Promise<void> {
54
65
  if (webOrientationLock === WebOrientationLock.UNKNOWN) {
55
66
  throw new Error(
56
67
  `expo-screen-orientation: WebOrientationLock.UNKNOWN is not a valid lock that can be applied to the device.`
57
68
  );
58
69
  }
59
- // @ts-ignore-error: This is missing in the TypeScript definitions
60
- if (screen.orientation && screen.orientation.lock) {
61
- // @ts-ignore-error
62
- await screen.orientation.lock(webOrientationLock);
63
- } else if (
64
- screen['lockOrientation'] ||
65
- screen['mozLockOrientation'] ||
66
- screen['msLockOrientation']
70
+
71
+ // Handle modern lock screen web API
72
+ // See: https://developer.mozilla.org/en-US/docs/Web/API/ScreenOrientation/lock
73
+ if (
74
+ screen.orientation &&
75
+ 'lock' in screen.orientation &&
76
+ typeof screen.orientation.lock === 'function'
67
77
  ) {
78
+ await screen.orientation.lock(webOrientationLock);
79
+ return;
80
+ }
81
+
82
+ // See: https://developer.mozilla.org/en-US/docs/Web/API/Screen/lockOrientation
83
+ const _legacyLockUniversal:
84
+ | undefined
85
+ | ((orientation: ReturnType<typeof _convertToLegacyOrientationLock>) => boolean) =
86
+ // @ts-expect-error - These legacy APIs are removed from the types
87
+ screen.lockOrientation || screen.mozLockOrientation || screen.msLockOrientation;
88
+
89
+ // Fallback to outdated legacy web API
90
+ // See: https://developer.mozilla.org/en-US/docs/Web/API/Screen/lockOrientation
91
+ if (typeof _legacyLockUniversal === 'function') {
68
92
  const legacyLock = _convertToLegacyOrientationLock(webOrientationLock);
69
- const lockOrientation =
70
- screen['lockOrientation'] || screen['mozLockOrientation'] || screen['msLockOrientation'];
71
- // correct `this` context must be passed in otherwise method call is disallowed by browser
72
- const isSuccess = lockOrientation.call(screen, legacyLock);
93
+ const isSuccess = _legacyLockUniversal.call(screen, legacyLock);
73
94
  if (!isSuccess) {
74
95
  throw new Error(
75
96
  `Applying orientation lock: ${JSON.stringify(webOrientationLock)} to device was denied`
76
97
  );
77
98
  }
78
- } else {
79
- throw new Error(
80
- `expo-screen-orientation: The browser doesn't support locking screen orientation.`
81
- );
99
+ return;
82
100
  }
101
+
102
+ throw new Error(
103
+ `expo-screen-orientation: The browser doesn't support locking screen orientation.`
104
+ );
83
105
  }
84
106
 
85
107
  let _lastWebOrientationLock: WebOrientationLock = WebOrientationLock.UNKNOWN;
@@ -143,27 +165,34 @@ class ExpoScreenOrientation extends NativeModule<ExpoOrientationEvents> {
143
165
  _lastWebOrientationLock = webOrientationLock;
144
166
  }
145
167
  async unlockAsync(): Promise<void> {
146
- if (screen.orientation && screen.orientation.unlock) {
147
- screen.orientation.unlock();
148
- } else if (
149
- screen['unlockOrientation'] ||
150
- screen['mozUnlockOrientation'] ||
151
- screen['msUnlockOrientation']
168
+ // Handle modern lock screen web API
169
+ // See: https://developer.mozilla.org/en-US/docs/Web/API/ScreenOrientation/unlock
170
+ if (
171
+ screen.orientation &&
172
+ 'unlock' in screen.orientation &&
173
+ typeof screen.orientation.unlock === 'function'
152
174
  ) {
153
- const unlockOrientation =
154
- screen['unlockOrientation'] ||
155
- screen['mozUnlockOrientation'] ||
156
- screen['msUnlockOrientation'];
157
- // correct `this` context must be passed in otherwise method call is disallowed by browser
158
- const isSuccess = unlockOrientation.call(screen);
175
+ screen.orientation.unlock();
176
+ return;
177
+ }
178
+
179
+ // See: https://developer.mozilla.org/en-US/docs/Web/API/Screen/unlockOrientation
180
+ const _legacyUnlockUniversal: undefined | (() => boolean | undefined) =
181
+ screen.unlockOrientation || screen.mozUnlockOrientation || screen.msUnlockOrientation;
182
+
183
+ // Fallback to outdated legacy web API
184
+ // See: https://developer.mozilla.org/en-US/docs/Web/API/Screen/unlockOrientation
185
+ if (typeof _legacyUnlockUniversal === 'function') {
186
+ const isSuccess = _legacyUnlockUniversal.call(screen);
159
187
  if (!isSuccess) {
160
188
  throw new Error(`Unlocking screen orientation on device was denied`);
161
189
  }
162
- } else {
163
- throw new Error(
164
- `expo-screen-orientation: The browser doesn't support unlocking screen orientation.`
165
- );
190
+ return;
166
191
  }
192
+
193
+ throw new Error(
194
+ `expo-screen-orientation: The browser doesn't support unlocking screen orientation.`
195
+ );
167
196
  }
168
197
  }
169
198
 
@@ -1 +0,0 @@
1
- 44f55b4c192df9a38395b61444bafa5d996a991be11b17e28348e5b7d9049cf6
@@ -1 +0,0 @@
1
- 7746805968e86cc6e6c6587363d673d308d6d2ccf8fbf5a892eb657e74795d0b2c74bdf542919a3913ad4465ad0f874532eb823e11ee6ee4f610b4f0e5b429ef
@@ -1 +0,0 @@
1
- 53a5b807402467bb26e52a661f0a1137f3d91140a08796967d47860651e362df
@@ -1 +0,0 @@
1
- a32423e791c8b4a14a661512cc641837fc176278f5ea9784693f812590a3e16e7013c628dbd05cb6d608c7b27293d5349e5de0c49e1946b5247f7903651761bb