@symbiote-native/brightness 0.0.1
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/LICENSE +21 -0
- package/README.md +290 -0
- package/build/angular/index.d.ts +2 -0
- package/build/angular/index.js +4 -0
- package/build/angular/services/permissions.service/index.d.ts +8 -0
- package/build/angular/services/permissions.service/index.js +78 -0
- package/build/core/brightness.d.ts +56 -0
- package/build/core/brightness.js +137 -0
- package/build/core/index.d.ts +3 -0
- package/build/core/index.js +2 -0
- package/build/core/native-module.d.ts +16 -0
- package/build/core/native-module.js +3 -0
- package/build/core/types.d.ts +16 -0
- package/build/core/types.js +16 -0
- package/build/react/hooks/use-permissions/index.d.ts +6 -0
- package/build/react/hooks/use-permissions/index.js +30 -0
- package/build/react/index.d.ts +2 -0
- package/build/react/index.js +6 -0
- package/build/vue/composables/use-permissions/index.d.ts +7 -0
- package/build/vue/composables/use-permissions/index.js +23 -0
- package/build/vue/index.d.ts +2 -0
- package/build/vue/index.js +6 -0
- package/build-ngc/angular/index.d.ts +2 -0
- package/build-ngc/angular/index.js +5 -0
- package/build-ngc/angular/index.js.map +1 -0
- package/build-ngc/angular/services/permissions.service/index.d.ts +11 -0
- package/build-ngc/angular/services/permissions.service/index.js +37 -0
- package/build-ngc/angular/services/permissions.service/index.js.map +1 -0
- package/build-ngc/core/brightness.d.ts +56 -0
- package/build-ngc/core/brightness.js +138 -0
- package/build-ngc/core/brightness.js.map +1 -0
- package/build-ngc/core/index.d.ts +3 -0
- package/build-ngc/core/index.js +3 -0
- package/build-ngc/core/index.js.map +1 -0
- package/build-ngc/core/native-module.d.ts +16 -0
- package/build-ngc/core/native-module.js +4 -0
- package/build-ngc/core/native-module.js.map +1 -0
- package/build-ngc/core/types.d.ts +16 -0
- package/build-ngc/core/types.js +17 -0
- package/build-ngc/core/types.js.map +1 -0
- package/native-link.json +12 -0
- package/package.json +107 -0
- package/src/angular/index.ts +23 -0
- package/src/angular/services/permissions.service/index.ts +37 -0
- package/src/angular/services/permissions.service/permissions.service.test.ts +107 -0
- package/src/core/brightness.test.ts +334 -0
- package/src/core/brightness.ts +155 -0
- package/src/core/index.ts +22 -0
- package/src/core/native-module.ts +32 -0
- package/src/core/types.ts +27 -0
- package/src/react/hooks/use-permissions/index.ts +41 -0
- package/src/react/hooks/use-permissions/use-permissions.test.tsx +100 -0
- package/src/react/index.ts +26 -0
- package/src/vue/composables/use-permissions/index.ts +36 -0
- package/src/vue/composables/use-permissions/use-permissions.test.ts +99 -0
- package/src/vue/index.ts +26 -0
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
// Hand-ported from .vendors/expo/packages/expo-brightness/src/Brightness.ts (sdk-57) —
|
|
2
|
+
// PermissionResponse/PermissionStatus/PermissionExpiration come straight from
|
|
3
|
+
// expo-modules-core (it re-exports PermissionsInterface), never the `expo` meta-package
|
|
4
|
+
// upstream itself imports them from.
|
|
5
|
+
import { PermissionStatus, } from 'expo-modules-core';
|
|
6
|
+
export { PermissionStatus };
|
|
7
|
+
/** Enum representing the brightness mode of the device. */
|
|
8
|
+
export var BrightnessMode;
|
|
9
|
+
(function (BrightnessMode) {
|
|
10
|
+
/** Returned when brightness mode cannot be determined. */
|
|
11
|
+
BrightnessMode[BrightnessMode["UNKNOWN"] = 0] = "UNKNOWN";
|
|
12
|
+
/** Automatic brightness mode, tracking the ambient light sensor. */
|
|
13
|
+
BrightnessMode[BrightnessMode["AUTOMATIC"] = 1] = "AUTOMATIC";
|
|
14
|
+
/** Manual brightness mode, set by the user or by `setSystemBrightnessAsync`. */
|
|
15
|
+
BrightnessMode[BrightnessMode["MANUAL"] = 2] = "MANUAL";
|
|
16
|
+
})(BrightnessMode || (BrightnessMode = {}));
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
// React lifecycle wiring over the framework-agnostic core (core/brightness.ts) — auto-fetches
|
|
2
|
+
// the current permission status on mount, then exposes get/request as imperative callbacks.
|
|
3
|
+
// Mirrors the shape @symbiote-native/cellular's own usePermissions ships in parallel, so both
|
|
4
|
+
// stay byte-for-byte consistent.
|
|
5
|
+
import { useCallback, useEffect, useRef, useState } from 'react';
|
|
6
|
+
import { getPermissionsAsync, requestPermissionsAsync, } from '../../../core';
|
|
7
|
+
export function usePermissions() {
|
|
8
|
+
const isMounted = useRef(true);
|
|
9
|
+
const [status, setStatus] = useState(null);
|
|
10
|
+
const getPermission = useCallback(async () => {
|
|
11
|
+
const response = await getPermissionsAsync();
|
|
12
|
+
if (isMounted.current)
|
|
13
|
+
setStatus(response);
|
|
14
|
+
return response;
|
|
15
|
+
}, []);
|
|
16
|
+
const requestPermission = useCallback(async () => {
|
|
17
|
+
const response = await requestPermissionsAsync();
|
|
18
|
+
if (isMounted.current)
|
|
19
|
+
setStatus(response);
|
|
20
|
+
return response;
|
|
21
|
+
}, []);
|
|
22
|
+
useEffect(() => {
|
|
23
|
+
isMounted.current = true;
|
|
24
|
+
void getPermission();
|
|
25
|
+
return () => {
|
|
26
|
+
isMounted.current = false;
|
|
27
|
+
};
|
|
28
|
+
}, [getPermission]);
|
|
29
|
+
return [status, requestPermission, getPermission];
|
|
30
|
+
}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export { usePermissions } from './hooks/use-permissions';
|
|
2
|
+
export { isAvailableAsync, getBrightnessAsync, setBrightnessAsync, getSystemBrightnessAsync, setSystemBrightnessAsync, restoreSystemBrightnessAsync, isUsingSystemBrightnessAsync, getSystemBrightnessModeAsync, setSystemBrightnessModeAsync, getPermissionsAsync, requestPermissionsAsync, addBrightnessListener, BrightnessMode, PermissionStatus, type BrightnessEvent, type PermissionExpiration, type PermissionResponse, type EventSubscription, } from '../core';
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
// @symbiote-native/brightness/react: the React entry over the framework-agnostic core. Only the
|
|
2
|
+
// permission surface gets a lifecycle hook (there is per-instance state to seed and refresh);
|
|
3
|
+
// every other export is a stateless async function or one-shot listener, re-exported verbatim —
|
|
4
|
+
// mirrors the lifecycle-bucket naming convention of adapters/react/src/hooks.
|
|
5
|
+
export { usePermissions } from './hooks/use-permissions/index.js';
|
|
6
|
+
export { isAvailableAsync, getBrightnessAsync, setBrightnessAsync, getSystemBrightnessAsync, setSystemBrightnessAsync, restoreSystemBrightnessAsync, isUsingSystemBrightnessAsync, getSystemBrightnessModeAsync, setSystemBrightnessModeAsync, getPermissionsAsync, requestPermissionsAsync, addBrightnessListener, BrightnessMode, PermissionStatus, } from '../core/index.js';
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { type Ref } from '@vue/runtime-core';
|
|
2
|
+
import { type PermissionResponse } from '../../../core';
|
|
3
|
+
export declare function usePermissions(): {
|
|
4
|
+
status: Ref<PermissionResponse | null>;
|
|
5
|
+
request: () => Promise<PermissionResponse>;
|
|
6
|
+
get: () => Promise<PermissionResponse>;
|
|
7
|
+
};
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
// Vue lifecycle wiring over the framework-agnostic core (core/brightness.ts) — auto-fetches the
|
|
2
|
+
// current permission status on mount (mirrors use-battery-level's onMounted/onUnmounted style,
|
|
3
|
+
// but there is no ongoing subscription to tear down here, just a one-shot get), then exposes
|
|
4
|
+
// get/request as imperative callbacks.
|
|
5
|
+
import { onMounted, ref } from '@vue/runtime-core';
|
|
6
|
+
import { getPermissionsAsync, requestPermissionsAsync, } from '../../../core';
|
|
7
|
+
export function usePermissions() {
|
|
8
|
+
const status = ref(null);
|
|
9
|
+
const get = async () => {
|
|
10
|
+
const response = await getPermissionsAsync();
|
|
11
|
+
status.value = response;
|
|
12
|
+
return response;
|
|
13
|
+
};
|
|
14
|
+
const request = async () => {
|
|
15
|
+
const response = await requestPermissionsAsync();
|
|
16
|
+
status.value = response;
|
|
17
|
+
return response;
|
|
18
|
+
};
|
|
19
|
+
onMounted(() => {
|
|
20
|
+
void get();
|
|
21
|
+
});
|
|
22
|
+
return { status, request, get };
|
|
23
|
+
}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export { usePermissions } from './composables/use-permissions';
|
|
2
|
+
export { isAvailableAsync, getBrightnessAsync, setBrightnessAsync, getSystemBrightnessAsync, setSystemBrightnessAsync, restoreSystemBrightnessAsync, isUsingSystemBrightnessAsync, getSystemBrightnessModeAsync, setSystemBrightnessModeAsync, getPermissionsAsync, requestPermissionsAsync, addBrightnessListener, BrightnessMode, PermissionStatus, type BrightnessEvent, type PermissionExpiration, type PermissionResponse, type EventSubscription, } from '../core';
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
// @symbiote-native/brightness/vue: the Vue entry over the framework-agnostic core. Same
|
|
2
|
+
// reasoning as the React entry — only the permission surface gets a lifecycle composable, every
|
|
3
|
+
// other export is a plain re-export — mirrors the lifecycle-bucket naming convention of
|
|
4
|
+
// adapters/vue/src/composables (never `hooks/`, that's React's term).
|
|
5
|
+
export { usePermissions } from './composables/use-permissions/index.js';
|
|
6
|
+
export { isAvailableAsync, getBrightnessAsync, setBrightnessAsync, getSystemBrightnessAsync, setSystemBrightnessAsync, restoreSystemBrightnessAsync, isUsingSystemBrightnessAsync, getSystemBrightnessModeAsync, setSystemBrightnessModeAsync, getPermissionsAsync, requestPermissionsAsync, addBrightnessListener, BrightnessMode, PermissionStatus, } from '../core/index.js';
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export { PermissionsService } from './services/permissions.service';
|
|
2
|
+
export { isAvailableAsync, getBrightnessAsync, setBrightnessAsync, getSystemBrightnessAsync, setSystemBrightnessAsync, restoreSystemBrightnessAsync, isUsingSystemBrightnessAsync, getSystemBrightnessModeAsync, setSystemBrightnessModeAsync, getPermissionsAsync, requestPermissionsAsync, addBrightnessListener, BrightnessMode, PermissionStatus, type BrightnessEvent, type PermissionExpiration, type PermissionResponse, type EventSubscription, } from '../core';
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
// PermissionsService is the Angular-only lifecycle half; the free functions and event
|
|
2
|
+
// subscription plumbing all live in core, shared with React/Vue.
|
|
3
|
+
export { PermissionsService } from './services/permissions.service';
|
|
4
|
+
export { isAvailableAsync, getBrightnessAsync, setBrightnessAsync, getSystemBrightnessAsync, setSystemBrightnessAsync, restoreSystemBrightnessAsync, isUsingSystemBrightnessAsync, getSystemBrightnessModeAsync, setSystemBrightnessModeAsync, getPermissionsAsync, requestPermissionsAsync, addBrightnessListener, BrightnessMode, PermissionStatus, } from '../core';
|
|
5
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/angular/index.ts"],"names":[],"mappings":"AAAA,sFAAsF;AACtF,iEAAiE;AACjE,OAAO,EAAE,kBAAkB,EAAE,MAAM,gCAAgC,CAAC;AACpE,OAAO,EACL,gBAAgB,EAChB,kBAAkB,EAClB,kBAAkB,EAClB,wBAAwB,EACxB,wBAAwB,EACxB,4BAA4B,EAC5B,4BAA4B,EAC5B,4BAA4B,EAC5B,4BAA4B,EAC5B,mBAAmB,EACnB,uBAAuB,EACvB,qBAAqB,EACrB,cAAc,EACd,gBAAgB,GAKjB,MAAM,SAAS,CAAC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { type Signal } from '@angular/core';
|
|
2
|
+
import { type PermissionResponse } from '../../../core';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
export declare class PermissionsService {
|
|
5
|
+
private readonly status;
|
|
6
|
+
connect(): Signal<PermissionResponse | null>;
|
|
7
|
+
get(): Promise<PermissionResponse>;
|
|
8
|
+
request(): Promise<PermissionResponse>;
|
|
9
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<PermissionsService, never>;
|
|
10
|
+
static ɵprov: i0.ɵɵInjectableDeclaration<PermissionsService>;
|
|
11
|
+
}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
// Angular twin of React's usePermissions hook and Vue's usePermissions composable.
|
|
2
|
+
// `connect()` auto-fetches once (no ongoing subscription to clean up, so no Injector/effect
|
|
3
|
+
// needed, unlike BatteryStateService) and returns a readonly signal; get()/request() are
|
|
4
|
+
// imperative one-shot methods.
|
|
5
|
+
//
|
|
6
|
+
// readonly status = inject(PermissionsService).connect();
|
|
7
|
+
// // template: {{ status()?.granted }}
|
|
8
|
+
import { Injectable, signal } from '@angular/core';
|
|
9
|
+
import { getPermissionsAsync, requestPermissionsAsync, } from '../../../core';
|
|
10
|
+
import * as i0 from "@angular/core";
|
|
11
|
+
export class PermissionsService {
|
|
12
|
+
status = signal(null, /* @ts-ignore */
|
|
13
|
+
...(ngDevMode ? [{ debugName: "status" }] : /* istanbul ignore next */ []));
|
|
14
|
+
connect() {
|
|
15
|
+
if (this.status() === null) {
|
|
16
|
+
void this.get();
|
|
17
|
+
}
|
|
18
|
+
return this.status.asReadonly();
|
|
19
|
+
}
|
|
20
|
+
async get() {
|
|
21
|
+
const response = await getPermissionsAsync();
|
|
22
|
+
this.status.set(response);
|
|
23
|
+
return response;
|
|
24
|
+
}
|
|
25
|
+
async request() {
|
|
26
|
+
const response = await requestPermissionsAsync();
|
|
27
|
+
this.status.set(response);
|
|
28
|
+
return response;
|
|
29
|
+
}
|
|
30
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type: PermissionsService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
31
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type: PermissionsService, providedIn: 'root' });
|
|
32
|
+
}
|
|
33
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type: PermissionsService, decorators: [{
|
|
34
|
+
type: Injectable,
|
|
35
|
+
args: [{ providedIn: 'root' }]
|
|
36
|
+
}] });
|
|
37
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/angular/services/permissions.service/index.ts"],"names":[],"mappings":"AAAA,mFAAmF;AACnF,4FAA4F;AAC5F,yFAAyF;AACzF,+BAA+B;AAC/B,EAAE;AACF,4DAA4D;AAC5D,yCAAyC;AACzC,OAAO,EAAE,UAAU,EAAE,MAAM,EAAe,MAAM,eAAe,CAAC;AAChE,OAAO,EACL,mBAAmB,EACnB,uBAAuB,GAExB,MAAM,eAAe,CAAC;;AAGvB,MAAM,OAAO,kBAAkB;IACZ,MAAM,GAAG,MAAM,CAA4B,IAAI;+EAAC,CAAC;IAElE,OAAO;QACL,IAAI,IAAI,CAAC,MAAM,EAAE,KAAK,IAAI,EAAE,CAAC;YAC3B,KAAK,IAAI,CAAC,GAAG,EAAE,CAAC;QAClB,CAAC;QACD,OAAO,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC;IAClC,CAAC;IAED,KAAK,CAAC,GAAG;QACP,MAAM,QAAQ,GAAG,MAAM,mBAAmB,EAAE,CAAC;QAC7C,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAC1B,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED,KAAK,CAAC,OAAO;QACX,MAAM,QAAQ,GAAG,MAAM,uBAAuB,EAAE,CAAC;QACjD,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAC1B,OAAO,QAAQ,CAAC;IAClB,CAAC;uGApBU,kBAAkB;2GAAlB,kBAAkB,cADL,MAAM;;2FACnB,kBAAkB;kBAD9B,UAAU;mBAAC,EAAE,UAAU,EAAE,MAAM,EAAE"}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
import type { EventSubscription } from 'expo-modules-core';
|
|
2
|
+
import { BrightnessMode, type BrightnessEvent, type PermissionResponse } from './types';
|
|
3
|
+
/** Whether the brightness API is available on the current device. */
|
|
4
|
+
export declare function isAvailableAsync(): Promise<boolean>;
|
|
5
|
+
/** Gets the current brightness level of the device's main screen, between `0` and `1`. */
|
|
6
|
+
export declare function getBrightnessAsync(): Promise<number>;
|
|
7
|
+
/**
|
|
8
|
+
* Sets the current screen brightness. On iOS this only affects the screen while the app is
|
|
9
|
+
* foregrounded; on Android it persists until changed again.
|
|
10
|
+
*/
|
|
11
|
+
export declare function setBrightnessAsync(brightnessValue: number): Promise<void>;
|
|
12
|
+
/**
|
|
13
|
+
* Gets the system-wide brightness. On iOS the app-local and system brightness are the same
|
|
14
|
+
* value, so this delegates to `getBrightnessAsync`.
|
|
15
|
+
* @platform android
|
|
16
|
+
*/
|
|
17
|
+
export declare function getSystemBrightnessAsync(): Promise<number>;
|
|
18
|
+
/**
|
|
19
|
+
* Sets the system-wide brightness. On iOS this delegates to `setBrightnessAsync`, since there is
|
|
20
|
+
* no separate system-level brightness to set.
|
|
21
|
+
* @platform android
|
|
22
|
+
*/
|
|
23
|
+
export declare function setSystemBrightnessAsync(brightnessValue: number): Promise<void>;
|
|
24
|
+
/**
|
|
25
|
+
* Resets the system brightness to the value it had before this app started controlling it. A
|
|
26
|
+
* no-op on every platform except Android.
|
|
27
|
+
* @platform android
|
|
28
|
+
*/
|
|
29
|
+
export declare function restoreSystemBrightnessAsync(): Promise<void>;
|
|
30
|
+
/**
|
|
31
|
+
* Whether the app is currently controlling the system brightness (as opposed to only its own
|
|
32
|
+
* window's brightness). Always `false` on every platform except Android.
|
|
33
|
+
* @platform android
|
|
34
|
+
*/
|
|
35
|
+
export declare function isUsingSystemBrightnessAsync(): Promise<boolean>;
|
|
36
|
+
/**
|
|
37
|
+
* Gets the system brightness mode (`AUTOMATIC` / `MANUAL`). Always resolves `UNKNOWN` on every
|
|
38
|
+
* platform except Android.
|
|
39
|
+
* @platform android
|
|
40
|
+
*/
|
|
41
|
+
export declare function getSystemBrightnessModeAsync(): Promise<BrightnessMode>;
|
|
42
|
+
/**
|
|
43
|
+
* Sets the system brightness mode. A no-op on every platform except Android, and also a no-op
|
|
44
|
+
* when passed `BrightnessMode.UNKNOWN` (there is nothing meaningful to set it to).
|
|
45
|
+
* @platform android
|
|
46
|
+
*/
|
|
47
|
+
export declare function setSystemBrightnessModeAsync(brightnessMode: BrightnessMode): Promise<void>;
|
|
48
|
+
/** Checks user's permissions for accessing the system brightness. */
|
|
49
|
+
export declare function getPermissionsAsync(): Promise<PermissionResponse>;
|
|
50
|
+
/** Asks the user for permission to access the system brightness. */
|
|
51
|
+
export declare function requestPermissionsAsync(): Promise<PermissionResponse>;
|
|
52
|
+
/**
|
|
53
|
+
* Subscribes to brightness changes. Only fires on iOS — never on Android or web.
|
|
54
|
+
* @platform ios
|
|
55
|
+
*/
|
|
56
|
+
export declare function addBrightnessListener(listener: (event: BrightnessEvent) => void): EventSubscription;
|
|
@@ -0,0 +1,138 @@
|
|
|
1
|
+
// Hand-ported from .vendors/expo/packages/expo-brightness/src/Brightness.ts (sdk-57). The
|
|
2
|
+
// system-brightness surface (mode, "using system brightness", restore) is Android-only —
|
|
3
|
+
// upstream branches every one of those on `Platform.OS !== 'android'` before ever reaching the
|
|
4
|
+
// native module, so those branches are preserved verbatim rather than guessed.
|
|
5
|
+
import { Platform, UnavailabilityError } from 'expo-modules-core';
|
|
6
|
+
import { expoBrightness } from './native-module';
|
|
7
|
+
import { BrightnessMode } from './types';
|
|
8
|
+
const NATIVE_MODULE_NAME = 'expo-brightness';
|
|
9
|
+
function clampBrightness(brightnessValue, callerName) {
|
|
10
|
+
const clamped = Math.max(0, Math.min(brightnessValue, 1));
|
|
11
|
+
if (Number.isNaN(clamped)) {
|
|
12
|
+
throw new TypeError(`${callerName} cannot be called with ${brightnessValue}`);
|
|
13
|
+
}
|
|
14
|
+
return clamped;
|
|
15
|
+
}
|
|
16
|
+
/** Whether the brightness API is available on the current device. */
|
|
17
|
+
export async function isAvailableAsync() {
|
|
18
|
+
return !!expoBrightness.getBrightnessAsync;
|
|
19
|
+
}
|
|
20
|
+
/** Gets the current brightness level of the device's main screen, between `0` and `1`. */
|
|
21
|
+
export async function getBrightnessAsync() {
|
|
22
|
+
if (!expoBrightness.getBrightnessAsync) {
|
|
23
|
+
throw new UnavailabilityError(NATIVE_MODULE_NAME, 'getBrightnessAsync');
|
|
24
|
+
}
|
|
25
|
+
return expoBrightness.getBrightnessAsync();
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Sets the current screen brightness. On iOS this only affects the screen while the app is
|
|
29
|
+
* foregrounded; on Android it persists until changed again.
|
|
30
|
+
*/
|
|
31
|
+
export async function setBrightnessAsync(brightnessValue) {
|
|
32
|
+
const clamped = clampBrightness(brightnessValue, 'setBrightnessAsync');
|
|
33
|
+
if (!expoBrightness.setBrightnessAsync) {
|
|
34
|
+
throw new UnavailabilityError(NATIVE_MODULE_NAME, 'setBrightnessAsync');
|
|
35
|
+
}
|
|
36
|
+
await expoBrightness.setBrightnessAsync(clamped);
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Gets the system-wide brightness. On iOS the app-local and system brightness are the same
|
|
40
|
+
* value, so this delegates to `getBrightnessAsync`.
|
|
41
|
+
* @platform android
|
|
42
|
+
*/
|
|
43
|
+
export async function getSystemBrightnessAsync() {
|
|
44
|
+
if (Platform.OS !== 'android') {
|
|
45
|
+
return getBrightnessAsync();
|
|
46
|
+
}
|
|
47
|
+
if (!expoBrightness.getSystemBrightnessAsync) {
|
|
48
|
+
throw new UnavailabilityError(NATIVE_MODULE_NAME, 'getSystemBrightnessAsync');
|
|
49
|
+
}
|
|
50
|
+
return expoBrightness.getSystemBrightnessAsync();
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* Sets the system-wide brightness. On iOS this delegates to `setBrightnessAsync`, since there is
|
|
54
|
+
* no separate system-level brightness to set.
|
|
55
|
+
* @platform android
|
|
56
|
+
*/
|
|
57
|
+
export async function setSystemBrightnessAsync(brightnessValue) {
|
|
58
|
+
const clamped = clampBrightness(brightnessValue, 'setSystemBrightnessAsync');
|
|
59
|
+
if (Platform.OS !== 'android') {
|
|
60
|
+
return setBrightnessAsync(clamped);
|
|
61
|
+
}
|
|
62
|
+
if (!expoBrightness.setSystemBrightnessAsync) {
|
|
63
|
+
throw new UnavailabilityError(NATIVE_MODULE_NAME, 'setSystemBrightnessAsync');
|
|
64
|
+
}
|
|
65
|
+
await expoBrightness.setSystemBrightnessAsync(clamped);
|
|
66
|
+
}
|
|
67
|
+
/**
|
|
68
|
+
* Resets the system brightness to the value it had before this app started controlling it. A
|
|
69
|
+
* no-op on every platform except Android.
|
|
70
|
+
* @platform android
|
|
71
|
+
*/
|
|
72
|
+
export async function restoreSystemBrightnessAsync() {
|
|
73
|
+
if (Platform.OS !== 'android') {
|
|
74
|
+
return;
|
|
75
|
+
}
|
|
76
|
+
if (!expoBrightness.restoreSystemBrightnessAsync) {
|
|
77
|
+
throw new UnavailabilityError(NATIVE_MODULE_NAME, 'restoreSystemBrightnessAsync');
|
|
78
|
+
}
|
|
79
|
+
await expoBrightness.restoreSystemBrightnessAsync();
|
|
80
|
+
}
|
|
81
|
+
/**
|
|
82
|
+
* Whether the app is currently controlling the system brightness (as opposed to only its own
|
|
83
|
+
* window's brightness). Always `false` on every platform except Android.
|
|
84
|
+
* @platform android
|
|
85
|
+
*/
|
|
86
|
+
export async function isUsingSystemBrightnessAsync() {
|
|
87
|
+
if (Platform.OS !== 'android') {
|
|
88
|
+
return false;
|
|
89
|
+
}
|
|
90
|
+
if (!expoBrightness.isUsingSystemBrightnessAsync) {
|
|
91
|
+
throw new UnavailabilityError(NATIVE_MODULE_NAME, 'isUsingSystemBrightnessAsync');
|
|
92
|
+
}
|
|
93
|
+
return expoBrightness.isUsingSystemBrightnessAsync();
|
|
94
|
+
}
|
|
95
|
+
/**
|
|
96
|
+
* Gets the system brightness mode (`AUTOMATIC` / `MANUAL`). Always resolves `UNKNOWN` on every
|
|
97
|
+
* platform except Android.
|
|
98
|
+
* @platform android
|
|
99
|
+
*/
|
|
100
|
+
export async function getSystemBrightnessModeAsync() {
|
|
101
|
+
if (Platform.OS !== 'android') {
|
|
102
|
+
return BrightnessMode.UNKNOWN;
|
|
103
|
+
}
|
|
104
|
+
if (!expoBrightness.getSystemBrightnessModeAsync) {
|
|
105
|
+
throw new UnavailabilityError(NATIVE_MODULE_NAME, 'getSystemBrightnessModeAsync');
|
|
106
|
+
}
|
|
107
|
+
return expoBrightness.getSystemBrightnessModeAsync();
|
|
108
|
+
}
|
|
109
|
+
/**
|
|
110
|
+
* Sets the system brightness mode. A no-op on every platform except Android, and also a no-op
|
|
111
|
+
* when passed `BrightnessMode.UNKNOWN` (there is nothing meaningful to set it to).
|
|
112
|
+
* @platform android
|
|
113
|
+
*/
|
|
114
|
+
export async function setSystemBrightnessModeAsync(brightnessMode) {
|
|
115
|
+
if (Platform.OS !== 'android' || brightnessMode === BrightnessMode.UNKNOWN) {
|
|
116
|
+
return;
|
|
117
|
+
}
|
|
118
|
+
if (!expoBrightness.setSystemBrightnessModeAsync) {
|
|
119
|
+
throw new UnavailabilityError(NATIVE_MODULE_NAME, 'setSystemBrightnessModeAsync');
|
|
120
|
+
}
|
|
121
|
+
await expoBrightness.setSystemBrightnessModeAsync(brightnessMode);
|
|
122
|
+
}
|
|
123
|
+
/** Checks user's permissions for accessing the system brightness. */
|
|
124
|
+
export async function getPermissionsAsync() {
|
|
125
|
+
return expoBrightness.getPermissionsAsync();
|
|
126
|
+
}
|
|
127
|
+
/** Asks the user for permission to access the system brightness. */
|
|
128
|
+
export async function requestPermissionsAsync() {
|
|
129
|
+
return expoBrightness.requestPermissionsAsync();
|
|
130
|
+
}
|
|
131
|
+
/**
|
|
132
|
+
* Subscribes to brightness changes. Only fires on iOS — never on Android or web.
|
|
133
|
+
* @platform ios
|
|
134
|
+
*/
|
|
135
|
+
export function addBrightnessListener(listener) {
|
|
136
|
+
return expoBrightness.addListener('Expo.brightnessDidChange', listener);
|
|
137
|
+
}
|
|
138
|
+
//# sourceMappingURL=brightness.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"brightness.js","sourceRoot":"","sources":["../../src/core/brightness.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
export { isAvailableAsync, getBrightnessAsync, setBrightnessAsync, getSystemBrightnessAsync, setSystemBrightnessAsync, restoreSystemBrightnessAsync, isUsingSystemBrightnessAsync, getSystemBrightnessModeAsync, setSystemBrightnessModeAsync, getPermissionsAsync, requestPermissionsAsync, addBrightnessListener, } from './brightness';
|
|
2
|
+
export { BrightnessMode, PermissionStatus, type BrightnessEvent, type PermissionExpiration, type PermissionResponse, } from './types';
|
|
3
|
+
export type { EventSubscription } from 'expo-modules-core';
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
export { isAvailableAsync, getBrightnessAsync, setBrightnessAsync, getSystemBrightnessAsync, setSystemBrightnessAsync, restoreSystemBrightnessAsync, isUsingSystemBrightnessAsync, getSystemBrightnessModeAsync, setSystemBrightnessModeAsync, getPermissionsAsync, requestPermissionsAsync, addBrightnessListener, } from './brightness';
|
|
2
|
+
export { BrightnessMode, PermissionStatus, } from './types';
|
|
3
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/core/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,gBAAgB,EAChB,kBAAkB,EAClB,kBAAkB,EAClB,wBAAwB,EACxB,wBAAwB,EACxB,4BAA4B,EAC5B,4BAA4B,EAC5B,4BAA4B,EAC5B,4BAA4B,EAC5B,mBAAmB,EACnB,uBAAuB,EACvB,qBAAqB,GACtB,MAAM,cAAc,CAAC;AACtB,OAAO,EACL,cAAc,EACd,gBAAgB,GAIjB,MAAM,SAAS,CAAC"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import type { EventSubscription } from 'expo-modules-core';
|
|
2
|
+
import type { BrightnessEvent, BrightnessMode, PermissionResponse } from './types';
|
|
3
|
+
export type INativeBrightnessModule = {
|
|
4
|
+
getBrightnessAsync?(): Promise<number>;
|
|
5
|
+
setBrightnessAsync?(value: number): Promise<void>;
|
|
6
|
+
getSystemBrightnessAsync?(): Promise<number>;
|
|
7
|
+
setSystemBrightnessAsync?(value: number): Promise<void>;
|
|
8
|
+
restoreSystemBrightnessAsync?(): Promise<void>;
|
|
9
|
+
isUsingSystemBrightnessAsync?(): Promise<boolean>;
|
|
10
|
+
getSystemBrightnessModeAsync?(): Promise<BrightnessMode>;
|
|
11
|
+
setSystemBrightnessModeAsync?(mode: BrightnessMode): Promise<void>;
|
|
12
|
+
getPermissionsAsync(): Promise<PermissionResponse>;
|
|
13
|
+
requestPermissionsAsync(): Promise<PermissionResponse>;
|
|
14
|
+
addListener(eventName: 'Expo.brightnessDidChange', listener: (event: BrightnessEvent) => void): EventSubscription;
|
|
15
|
+
};
|
|
16
|
+
export declare const expoBrightness: INativeBrightnessModule;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"native-module.js","sourceRoot":"","sources":["../../src/core/native-module.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAIxD,MAAM,2BAA2B,GAAG,gBAAgB,CAAC;AAyBrD,MAAM,CAAC,MAAM,cAAc,GAAG,mBAAmB,CAC/C,2BAA2B,CAC5B,CAAC"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { PermissionStatus, type PermissionExpiration, type PermissionResponse } from 'expo-modules-core';
|
|
2
|
+
export { PermissionStatus, type PermissionExpiration, type PermissionResponse };
|
|
3
|
+
/** Enum representing the brightness mode of the device. */
|
|
4
|
+
export declare enum BrightnessMode {
|
|
5
|
+
/** Returned when brightness mode cannot be determined. */
|
|
6
|
+
UNKNOWN = 0,
|
|
7
|
+
/** Automatic brightness mode, tracking the ambient light sensor. */
|
|
8
|
+
AUTOMATIC = 1,
|
|
9
|
+
/** Manual brightness mode, set by the user or by `setSystemBrightnessAsync`. */
|
|
10
|
+
MANUAL = 2
|
|
11
|
+
}
|
|
12
|
+
/** Fired when the screen brightness changes, on iOS only. */
|
|
13
|
+
export type BrightnessEvent = {
|
|
14
|
+
/** The current brightness value between `0` and `1`, inclusive. */
|
|
15
|
+
brightness: number;
|
|
16
|
+
};
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
// Hand-ported from .vendors/expo/packages/expo-brightness/src/Brightness.ts (sdk-57) —
|
|
2
|
+
// PermissionResponse/PermissionStatus/PermissionExpiration come straight from
|
|
3
|
+
// expo-modules-core (it re-exports PermissionsInterface), never the `expo` meta-package
|
|
4
|
+
// upstream itself imports them from.
|
|
5
|
+
import { PermissionStatus, } from 'expo-modules-core';
|
|
6
|
+
export { PermissionStatus };
|
|
7
|
+
/** Enum representing the brightness mode of the device. */
|
|
8
|
+
export var BrightnessMode;
|
|
9
|
+
(function (BrightnessMode) {
|
|
10
|
+
/** Returned when brightness mode cannot be determined. */
|
|
11
|
+
BrightnessMode[BrightnessMode["UNKNOWN"] = 0] = "UNKNOWN";
|
|
12
|
+
/** Automatic brightness mode, tracking the ambient light sensor. */
|
|
13
|
+
BrightnessMode[BrightnessMode["AUTOMATIC"] = 1] = "AUTOMATIC";
|
|
14
|
+
/** Manual brightness mode, set by the user or by `setSystemBrightnessAsync`. */
|
|
15
|
+
BrightnessMode[BrightnessMode["MANUAL"] = 2] = "MANUAL";
|
|
16
|
+
})(BrightnessMode || (BrightnessMode = {}));
|
|
17
|
+
//# sourceMappingURL=types.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/core/types.ts"],"names":[],"mappings":"AAAA,uFAAuF;AACvF,8EAA8E;AAC9E,wFAAwF;AACxF,qCAAqC;AACrC,OAAO,EACL,gBAAgB,GAGjB,MAAM,mBAAmB,CAAC;AAE3B,OAAO,EAAE,gBAAgB,EAAsD,CAAC;AAEhF,2DAA2D;AAC3D,MAAM,CAAN,IAAY,cAOX;AAPD,WAAY,cAAc;IACxB,0DAA0D;IAC1D,yDAAW,CAAA;IACX,oEAAoE;IACpE,6DAAa,CAAA;IACb,gFAAgF;IAChF,uDAAU,CAAA;AACZ,CAAC,EAPW,cAAc,KAAd,cAAc,QAOzB"}
|
package/native-link.json
ADDED
package/package.json
ADDED
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@symbiote-native/brightness",
|
|
3
|
+
"version": "0.0.1",
|
|
4
|
+
"description": "expo-brightness wrapped for SymbioteNative — one framework-agnostic core, built once and reachable from the React, Vue, and Angular adapters. Screen brightness get/set, Android-only system-brightness-mode control, an iOS-only brightness-change listener, and permission get/request.",
|
|
5
|
+
"license": "MIT",
|
|
6
|
+
"repository": {
|
|
7
|
+
"type": "git",
|
|
8
|
+
"url": "git+https://github.com/OneEyed1366/symbiote-native.git",
|
|
9
|
+
"directory": "packages/brightness"
|
|
10
|
+
},
|
|
11
|
+
"homepage": "https://github.com/OneEyed1366/symbiote-native/tree/master/packages/brightness#readme",
|
|
12
|
+
"bugs": {
|
|
13
|
+
"url": "https://github.com/OneEyed1366/symbiote-native/issues"
|
|
14
|
+
},
|
|
15
|
+
"author": "Andrey Prokopenko <psevdoproger@gmail.com>",
|
|
16
|
+
"type": "module",
|
|
17
|
+
"main": "./build/core/index.js",
|
|
18
|
+
"module": "./build/core/index.js",
|
|
19
|
+
"types": "./build/core/index.d.ts",
|
|
20
|
+
"exports": {
|
|
21
|
+
".": {
|
|
22
|
+
"types": "./build/core/index.d.ts",
|
|
23
|
+
"default": "./build/core/index.js"
|
|
24
|
+
},
|
|
25
|
+
"./vue": {
|
|
26
|
+
"types": "./build/vue/index.d.ts",
|
|
27
|
+
"default": "./build/vue/index.js"
|
|
28
|
+
},
|
|
29
|
+
"./react": {
|
|
30
|
+
"types": "./build/react/index.d.ts",
|
|
31
|
+
"default": "./build/react/index.js"
|
|
32
|
+
},
|
|
33
|
+
"./angular": {
|
|
34
|
+
"types": "./build-ngc/angular/index.d.ts",
|
|
35
|
+
"react-native": "./build-ngc/angular/index.js",
|
|
36
|
+
"default": "./src/angular/index.ts"
|
|
37
|
+
}
|
|
38
|
+
},
|
|
39
|
+
"files": [
|
|
40
|
+
"src",
|
|
41
|
+
"build",
|
|
42
|
+
"build-ngc",
|
|
43
|
+
"native-link.json"
|
|
44
|
+
],
|
|
45
|
+
"publishConfig": {
|
|
46
|
+
"access": "public"
|
|
47
|
+
},
|
|
48
|
+
"dependencies": {
|
|
49
|
+
"expo-brightness": "57.0.1",
|
|
50
|
+
"expo-modules-core": "57.0.5"
|
|
51
|
+
},
|
|
52
|
+
"peerDependencies": {
|
|
53
|
+
"@symbiote-native/engine": ">=0.1.7",
|
|
54
|
+
"@angular/core": ">=20",
|
|
55
|
+
"@vue/runtime-core": "^3.5.13",
|
|
56
|
+
"react": ">=19.0.0",
|
|
57
|
+
"react-native": ">=0.86",
|
|
58
|
+
"vue": ">=3.5.0",
|
|
59
|
+
"@symbiote-native/angular": "0.6.1",
|
|
60
|
+
"@symbiote-native/react": "0.2.8",
|
|
61
|
+
"@symbiote-native/vue": "0.3.8"
|
|
62
|
+
},
|
|
63
|
+
"peerDependenciesMeta": {
|
|
64
|
+
"@symbiote-native/angular": {
|
|
65
|
+
"optional": true
|
|
66
|
+
},
|
|
67
|
+
"@symbiote-native/react": {
|
|
68
|
+
"optional": true
|
|
69
|
+
},
|
|
70
|
+
"@symbiote-native/vue": {
|
|
71
|
+
"optional": true
|
|
72
|
+
},
|
|
73
|
+
"@angular/core": {
|
|
74
|
+
"optional": true
|
|
75
|
+
},
|
|
76
|
+
"@vue/runtime-core": {
|
|
77
|
+
"optional": true
|
|
78
|
+
},
|
|
79
|
+
"react": {
|
|
80
|
+
"optional": true
|
|
81
|
+
},
|
|
82
|
+
"vue": {
|
|
83
|
+
"optional": true
|
|
84
|
+
}
|
|
85
|
+
},
|
|
86
|
+
"devDependencies": {
|
|
87
|
+
"@angular/compiler": "^22",
|
|
88
|
+
"@angular/compiler-cli": "^22",
|
|
89
|
+
"@angular/core": "^22",
|
|
90
|
+
"@types/node": "^26.0.0",
|
|
91
|
+
"@types/react": "^19.2.0",
|
|
92
|
+
"@vue/runtime-core": "^3.5.13",
|
|
93
|
+
"react": "19.2.3",
|
|
94
|
+
"typescript": "~6.0.0",
|
|
95
|
+
"@symbiote-native/angular": "0.6.1",
|
|
96
|
+
"@symbiote-native/test-utils": "0.1.6",
|
|
97
|
+
"@symbiote-native/engine": "0.1.7",
|
|
98
|
+
"@symbiote-native/react": "0.2.8",
|
|
99
|
+
"@symbiote-native/vue": "0.3.8"
|
|
100
|
+
},
|
|
101
|
+
"scripts": {
|
|
102
|
+
"typecheck": "tsc --build",
|
|
103
|
+
"clean": "rm -rf build-ngc",
|
|
104
|
+
"ng:build": "pnpm run clean && ngc -p tsconfig.angular.json",
|
|
105
|
+
"format": "prettier --write \"src/**/*.{ts,tsx}\""
|
|
106
|
+
}
|
|
107
|
+
}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
// PermissionsService is the Angular-only lifecycle half; the free functions and event
|
|
2
|
+
// subscription plumbing all live in core, shared with React/Vue.
|
|
3
|
+
export { PermissionsService } from './services/permissions.service';
|
|
4
|
+
export {
|
|
5
|
+
isAvailableAsync,
|
|
6
|
+
getBrightnessAsync,
|
|
7
|
+
setBrightnessAsync,
|
|
8
|
+
getSystemBrightnessAsync,
|
|
9
|
+
setSystemBrightnessAsync,
|
|
10
|
+
restoreSystemBrightnessAsync,
|
|
11
|
+
isUsingSystemBrightnessAsync,
|
|
12
|
+
getSystemBrightnessModeAsync,
|
|
13
|
+
setSystemBrightnessModeAsync,
|
|
14
|
+
getPermissionsAsync,
|
|
15
|
+
requestPermissionsAsync,
|
|
16
|
+
addBrightnessListener,
|
|
17
|
+
BrightnessMode,
|
|
18
|
+
PermissionStatus,
|
|
19
|
+
type BrightnessEvent,
|
|
20
|
+
type PermissionExpiration,
|
|
21
|
+
type PermissionResponse,
|
|
22
|
+
type EventSubscription,
|
|
23
|
+
} from '../core';
|