@pickleball/expo-sdk 0.2.0 → 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +41 -0
- package/README.md +155 -101
- package/dist/advanced-DcbHBCGb.d.ts +300 -0
- package/dist/advanced-DeQwg7MK.d.cts +300 -0
- package/dist/advanced.cjs +14 -2
- package/dist/advanced.d.cts +2 -2
- package/dist/advanced.d.ts +2 -2
- package/dist/advanced.js +17 -5
- package/dist/camera-controls-By8tHigY.d.cts +97 -0
- package/dist/camera-controls-rCBUGGPC.d.ts +97 -0
- package/dist/chunk-62YV3PCD.cjs +139 -0
- package/dist/chunk-6F3HN6US.js +50 -0
- package/dist/chunk-6YE5BL3A.cjs +50 -0
- package/dist/chunk-7Z7TN5N3.js +318 -0
- package/dist/{chunk-TRLASNPQ.cjs → chunk-GXQYMPHE.cjs} +1 -1
- package/dist/{chunk-TBPR2QND.cjs → chunk-IUIRVKJI.cjs} +736 -399
- package/dist/chunk-TBUEXRFQ.cjs +318 -0
- package/dist/{chunk-FODE2W2H.js → chunk-XGP2MN5R.js} +688 -351
- package/dist/{chunk-6JOMESNT.js → chunk-XL4CISVQ.js} +1 -1
- package/dist/chunk-ZSKSXOCZ.js +139 -0
- package/dist/convex-command-subscription-Cabh9tND.d.ts +41 -0
- package/dist/convex-command-subscription-DUgpu75l.d.cts +41 -0
- package/dist/device-agent/index.cjs +973 -44
- package/dist/device-agent/index.d.cts +339 -3
- package/dist/device-agent/index.d.ts +339 -3
- package/dist/device-agent/index.js +940 -11
- package/dist/{engine-CCSSqPbZ.d.cts → engine-BSvSdCSE.d.cts} +227 -2
- package/dist/{engine-CCSSqPbZ.d.ts → engine-BSvSdCSE.d.ts} +227 -2
- package/dist/index.cjs +419 -937
- package/dist/index.d.cts +315 -32
- package/dist/index.d.ts +315 -32
- package/dist/index.js +423 -941
- package/dist/plugin.cjs +11 -13
- package/dist/plugin.d.cts +15 -1
- package/dist/plugin.d.ts +15 -1
- package/dist/plugin.js +7 -9
- package/dist/realtime/index.cjs +31 -0
- package/dist/realtime/index.d.cts +15 -0
- package/dist/realtime/index.d.ts +15 -0
- package/dist/realtime/index.js +31 -0
- package/dist/ui/index.cjs +1297 -0
- package/dist/ui/index.d.cts +493 -0
- package/dist/ui/index.d.ts +493 -0
- package/dist/ui/index.js +1297 -0
- package/dist/version.cjs +2 -2
- package/dist/version.js +1 -1
- package/package.json +31 -15
- package/src/advanced.ts +11 -9
- package/src/auto-resume.tsx +259 -0
- package/src/camera-controls.ts +99 -0
- package/src/camera-grant-provider.ts +392 -0
- package/src/camera-settings.ts +133 -0
- package/src/contracts.ts +73 -0
- package/src/device-agent/agent.ts +262 -9
- package/src/device-agent/beat-policy.ts +46 -0
- package/src/device-agent/component.tsx +11 -0
- package/src/device-agent/convex-beat-transport.ts +140 -0
- package/src/device-agent/convex-command-subscription.ts +101 -0
- package/src/device-agent/convex-control-channel.ts +7 -1
- package/src/device-agent/http-transport.ts +22 -1
- package/src/device-agent/index.ts +22 -0
- package/src/device-agent/mqtt-channel.ts +379 -0
- package/src/device-agent/mqtt-codec.ts +347 -0
- package/src/device-agent/tournament.ts +352 -0
- package/src/engine.ts +580 -15
- package/src/http-session-provider.ts +21 -189
- package/src/index.ts +84 -5
- package/src/local-video-quality.ts +43 -0
- package/src/native-runtime.ts +234 -78
- package/src/plugin.ts +19 -6
- package/src/provider.tsx +94 -18
- package/src/realtime/index.ts +56 -0
- package/src/resume-policy.ts +85 -0
- package/src/resume.ts +132 -0
- package/src/rtmp-room-adapter.ts +164 -12
- package/src/session-grant.ts +256 -0
- package/src/ui/camera-screen.tsx +484 -0
- package/src/ui/controls-sheet.tsx +445 -0
- package/src/ui/copy.ts +326 -0
- package/src/ui/helpers.ts +105 -0
- package/src/ui/hooks.ts +59 -0
- package/src/ui/index.ts +42 -0
- package/src/ui/preview-view.tsx +39 -0
- package/src/ui/primitives.tsx +304 -0
- package/src/uplink-check.ts +173 -0
- package/dist/advanced-BXDrDl1h.d.ts +0 -316
- package/dist/advanced-BdAa2Erv.d.cts +0 -316
- package/src/livekit-room-adapter.ts +0 -390
- package/src/livestream-screen.tsx +0 -1002
|
@@ -0,0 +1,318 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _nullishCoalesce(lhs, rhsFn) { if (lhs != null) { return lhs; } else { return rhsFn(); } } function _optionalChain(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; }
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
var _chunkIUIRVKJIcjs = require('./chunk-IUIRVKJI.cjs');
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
var _chunk7OX2DSKIcjs = require('./chunk-7OX2DSKI.cjs');
|
|
10
|
+
|
|
11
|
+
// src/resume-policy.ts
|
|
12
|
+
function classifyResumeStatus(status) {
|
|
13
|
+
if (status === 404 || status === 409 || status === 410) return "gone";
|
|
14
|
+
if (status >= 200 && status < 300) return "ok";
|
|
15
|
+
return "retry";
|
|
16
|
+
}
|
|
17
|
+
var RESUME_RETRY_DELAYS_MS = [1e3, 2e3, 4e3, 8e3, 15e3];
|
|
18
|
+
function resumeRetryDelayMs(attempt) {
|
|
19
|
+
const index = Math.min(Math.max(attempt, 0), RESUME_RETRY_DELAYS_MS.length - 1);
|
|
20
|
+
return RESUME_RETRY_DELAYS_MS[index];
|
|
21
|
+
}
|
|
22
|
+
function resumeBlocksArm(input) {
|
|
23
|
+
if (input.engineSessionId !== null) return false;
|
|
24
|
+
return input.adoptableSessionId !== null || input.serverSessionId !== null;
|
|
25
|
+
}
|
|
26
|
+
function resumeExternalSessionId(sessionId) {
|
|
27
|
+
return `resume-${sessionId}`;
|
|
28
|
+
}
|
|
29
|
+
function resumeGrantMatches(externalSessionId, grantSessionId) {
|
|
30
|
+
return externalSessionId === resumeExternalSessionId(grantSessionId);
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
// src/auto-resume.tsx
|
|
34
|
+
var _react = require('react');
|
|
35
|
+
function useLatest(value) {
|
|
36
|
+
const ref = _react.useRef.call(void 0, value);
|
|
37
|
+
ref.current = value;
|
|
38
|
+
return ref;
|
|
39
|
+
}
|
|
40
|
+
function PickleballAutoResume(props) {
|
|
41
|
+
const {
|
|
42
|
+
provider,
|
|
43
|
+
resumeInput,
|
|
44
|
+
enabled = true,
|
|
45
|
+
sessionIdHint = null,
|
|
46
|
+
retryDelayMs = resumeRetryDelayMs,
|
|
47
|
+
onAttempt
|
|
48
|
+
} = props;
|
|
49
|
+
const live = _chunkIUIRVKJIcjs.useLivestream.call(void 0, );
|
|
50
|
+
const { engine } = _chunkIUIRVKJIcjs.useLivestreamHost.call(void 0, );
|
|
51
|
+
const goneRef = _react.useRef.call(void 0, null);
|
|
52
|
+
const attemptRef = _react.useRef.call(void 0, 0);
|
|
53
|
+
const [retryTick, setRetryTick] = _react.useState.call(void 0, 0);
|
|
54
|
+
const { state, sessionId, adoptableSessionId } = live;
|
|
55
|
+
const resumeId = _nullishCoalesce(adoptableSessionId, () => ( sessionIdHint));
|
|
56
|
+
const liveRef = useLatest(live);
|
|
57
|
+
const onAttemptRef = useLatest(onAttempt);
|
|
58
|
+
const resumeInputRef = useLatest(resumeInput);
|
|
59
|
+
const retryDelayRef = useLatest(retryDelayMs);
|
|
60
|
+
_react.useEffect.call(void 0, () => {
|
|
61
|
+
if (!enabled) return;
|
|
62
|
+
if (!resumeId || sessionId !== null || state !== "preview") return;
|
|
63
|
+
if (goneRef.current === resumeId) return;
|
|
64
|
+
let cancelled = false;
|
|
65
|
+
let timer;
|
|
66
|
+
const scheduleRetry = () => {
|
|
67
|
+
const delay = retryDelayRef.current(attemptRef.current);
|
|
68
|
+
attemptRef.current += 1;
|
|
69
|
+
timer = setTimeout(() => {
|
|
70
|
+
if (!cancelled) setRetryTick((tick) => tick + 1);
|
|
71
|
+
}, delay);
|
|
72
|
+
};
|
|
73
|
+
void (async () => {
|
|
74
|
+
const result = await provider.resume(resumeId);
|
|
75
|
+
if (cancelled) return;
|
|
76
|
+
_optionalChain([onAttemptRef, 'access', _ => _.current, 'optionalCall', _2 => _2(resumeId, result.kind)]);
|
|
77
|
+
if (result.kind === "gone") {
|
|
78
|
+
goneRef.current = resumeId;
|
|
79
|
+
attemptRef.current = 0;
|
|
80
|
+
void engine.abandonAdoptableSession(resumeId).catch(() => void 0);
|
|
81
|
+
return;
|
|
82
|
+
}
|
|
83
|
+
if (result.kind === "retry") {
|
|
84
|
+
scheduleRetry();
|
|
85
|
+
return;
|
|
86
|
+
}
|
|
87
|
+
attemptRef.current = 0;
|
|
88
|
+
provider.adoptResumeGrant(result.grant);
|
|
89
|
+
const resumeInput2 = resumeInputRef.current;
|
|
90
|
+
await liveRef.current.start(
|
|
91
|
+
{
|
|
92
|
+
externalSessionId: resumeExternalSessionId(resumeId),
|
|
93
|
+
title: _nullishCoalesce(_optionalChain([resumeInput2, 'access', _3 => _3.titleFor, 'optionalCall', _4 => _4(resumeId)]), () => ( "Phi\xEAn \u0111ang kh\xF4i ph\u1EE5c")),
|
|
94
|
+
consentVersion: resumeInput2.consentVersion,
|
|
95
|
+
visibility: _nullishCoalesce(resumeInput2.visibility, () => ( "public")),
|
|
96
|
+
...resumeInput2.metadata ? { metadata: resumeInput2.metadata } : {}
|
|
97
|
+
},
|
|
98
|
+
// Trạng thái lấy từ chính phản hồi refresh, KHÔNG đoán: gán cứng "live" là
|
|
99
|
+
// camera tự lên sóng khi chủ nó chỉ đang trực sân (18/08/2026).
|
|
100
|
+
{ autoPublish: result.live }
|
|
101
|
+
).catch(() => {
|
|
102
|
+
_optionalChain([onAttemptRef, 'access', _5 => _5.current, 'optionalCall', _6 => _6(resumeId, "start_failed")]);
|
|
103
|
+
if (!cancelled) scheduleRetry();
|
|
104
|
+
});
|
|
105
|
+
})();
|
|
106
|
+
return () => {
|
|
107
|
+
cancelled = true;
|
|
108
|
+
if (timer) clearTimeout(timer);
|
|
109
|
+
};
|
|
110
|
+
}, [enabled, provider, resumeId, sessionId, state, retryTick, engine, liveRef, onAttemptRef, resumeInputRef, retryDelayRef]);
|
|
111
|
+
_react.useEffect.call(void 0, () => {
|
|
112
|
+
if (!enabled || state !== "error" || sessionId === null) return;
|
|
113
|
+
const timer = setTimeout(() => {
|
|
114
|
+
_optionalChain([onAttemptRef, 'access', _7 => _7.current, 'optionalCall', _8 => _8(sessionId, "publish_retry")]);
|
|
115
|
+
void liveRef.current.retry().catch(() => void 0);
|
|
116
|
+
}, retryDelayRef.current(attemptRef.current++));
|
|
117
|
+
return () => clearTimeout(timer);
|
|
118
|
+
}, [enabled, state, sessionId, liveRef, onAttemptRef, retryDelayRef]);
|
|
119
|
+
_react.useEffect.call(void 0, () => {
|
|
120
|
+
if (!enabled || state !== "error" || sessionId !== null || !adoptableSessionId) return;
|
|
121
|
+
const timer = setTimeout(() => {
|
|
122
|
+
_optionalChain([onAttemptRef, 'access', _9 => _9.current, 'optionalCall', _10 => _10(adoptableSessionId, "reprepare")]);
|
|
123
|
+
void liveRef.current.prepare().catch(() => void 0);
|
|
124
|
+
}, 2e3);
|
|
125
|
+
return () => clearTimeout(timer);
|
|
126
|
+
}, [enabled, state, sessionId, adoptableSessionId, liveRef, onAttemptRef]);
|
|
127
|
+
_react.useEffect.call(void 0, () => {
|
|
128
|
+
if (state === "live" || state === "standby") attemptRef.current = 0;
|
|
129
|
+
}, [state]);
|
|
130
|
+
return null;
|
|
131
|
+
}
|
|
132
|
+
function PickleballAutoPrepare(props) {
|
|
133
|
+
const { enabled = true, captureOrientation } = props;
|
|
134
|
+
const live = _chunkIUIRVKJIcjs.useLivestream.call(void 0, );
|
|
135
|
+
const { state } = live;
|
|
136
|
+
const liveRef = useLatest(live);
|
|
137
|
+
const orientedRef = _react.useRef.call(void 0, false);
|
|
138
|
+
_react.useEffect.call(void 0, () => {
|
|
139
|
+
if (!enabled || !captureOrientation || orientedRef.current) return;
|
|
140
|
+
orientedRef.current = true;
|
|
141
|
+
void liveRef.current.setCaptureOrientation(captureOrientation).catch(() => void 0);
|
|
142
|
+
}, [enabled, captureOrientation, liveRef]);
|
|
143
|
+
_react.useEffect.call(void 0, () => {
|
|
144
|
+
if (!enabled) return;
|
|
145
|
+
if (state !== "idle" && state !== "ended") return;
|
|
146
|
+
void liveRef.current.prepare().catch(() => void 0);
|
|
147
|
+
}, [enabled, state, liveRef]);
|
|
148
|
+
return null;
|
|
149
|
+
}
|
|
150
|
+
function useStandbySession(options) {
|
|
151
|
+
const { input, enabled = true, resumeSessionId = null } = options;
|
|
152
|
+
const live = _chunkIUIRVKJIcjs.useLivestream.call(void 0, );
|
|
153
|
+
const { state, sessionId, adoptableSessionId } = live;
|
|
154
|
+
const liveRef = useLatest(live);
|
|
155
|
+
const armedForRef = _react.useRef.call(void 0, null);
|
|
156
|
+
const inputRef = useLatest(input);
|
|
157
|
+
const externalSessionId = input.externalSessionId;
|
|
158
|
+
const armed = sessionId !== null && armedForRef.current === externalSessionId;
|
|
159
|
+
_react.useEffect.call(void 0, () => {
|
|
160
|
+
if (!enabled) return;
|
|
161
|
+
if (state !== "preview" || sessionId !== null) return;
|
|
162
|
+
if (armedForRef.current === externalSessionId) return;
|
|
163
|
+
if (resumeBlocksArm({
|
|
164
|
+
adoptableSessionId,
|
|
165
|
+
serverSessionId: resumeSessionId,
|
|
166
|
+
engineSessionId: sessionId
|
|
167
|
+
})) {
|
|
168
|
+
return;
|
|
169
|
+
}
|
|
170
|
+
armedForRef.current = externalSessionId;
|
|
171
|
+
void liveRef.current.start(inputRef.current, { autoPublish: false }).catch(() => {
|
|
172
|
+
armedForRef.current = null;
|
|
173
|
+
});
|
|
174
|
+
}, [enabled, state, sessionId, adoptableSessionId, resumeSessionId, externalSessionId, liveRef, inputRef]);
|
|
175
|
+
return { armed };
|
|
176
|
+
}
|
|
177
|
+
|
|
178
|
+
// src/camera-settings.ts
|
|
179
|
+
|
|
180
|
+
var CAMERA_SETTINGS_STORAGE_KEY = "@pickleball/expo-sdk/camera-settings";
|
|
181
|
+
var DEFAULT_CAMERA_SETTINGS = Object.freeze({
|
|
182
|
+
resolution: 720,
|
|
183
|
+
fps: 30,
|
|
184
|
+
antiFlicker: "50hz",
|
|
185
|
+
cameraId: null
|
|
186
|
+
});
|
|
187
|
+
function parseCameraSettings(raw, defaults = DEFAULT_CAMERA_SETTINGS) {
|
|
188
|
+
if (!raw) return { ...defaults };
|
|
189
|
+
try {
|
|
190
|
+
const parsed = JSON.parse(raw);
|
|
191
|
+
if (parsed === null || typeof parsed !== "object") return { ...defaults };
|
|
192
|
+
return {
|
|
193
|
+
resolution: parsed.resolution === 1080 ? 1080 : parsed.resolution === 720 ? 720 : defaults.resolution,
|
|
194
|
+
fps: parsed.fps === 24 || parsed.fps === 30 || parsed.fps === 60 ? parsed.fps : defaults.fps,
|
|
195
|
+
antiFlicker: parsed.antiFlicker === "auto" || parsed.antiFlicker === "60hz" || parsed.antiFlicker === "50hz" ? parsed.antiFlicker : defaults.antiFlicker,
|
|
196
|
+
cameraId: typeof parsed.cameraId === "string" ? parsed.cameraId : null
|
|
197
|
+
};
|
|
198
|
+
} catch (e) {
|
|
199
|
+
return { ...defaults };
|
|
200
|
+
}
|
|
201
|
+
}
|
|
202
|
+
function createCameraSettingsStore(options = {}) {
|
|
203
|
+
const storage = _nullishCoalesce(options.storage, () => ( _chunkIUIRVKJIcjs.createDefaultStorage.call(void 0, )));
|
|
204
|
+
const key = _nullishCoalesce(options.key, () => ( CAMERA_SETTINGS_STORAGE_KEY));
|
|
205
|
+
const defaults = { ...DEFAULT_CAMERA_SETTINGS, ...options.defaults };
|
|
206
|
+
let settings = { ...defaults };
|
|
207
|
+
let restored = false;
|
|
208
|
+
const listeners = /* @__PURE__ */ new Set();
|
|
209
|
+
const emit = () => {
|
|
210
|
+
for (const listener of listeners) listener();
|
|
211
|
+
};
|
|
212
|
+
return {
|
|
213
|
+
key,
|
|
214
|
+
get: () => settings,
|
|
215
|
+
set(patch) {
|
|
216
|
+
settings = { ...settings, ...patch };
|
|
217
|
+
void storage.setItem(key, JSON.stringify(settings)).catch(() => void 0);
|
|
218
|
+
emit();
|
|
219
|
+
},
|
|
220
|
+
subscribe(listener) {
|
|
221
|
+
listeners.add(listener);
|
|
222
|
+
return () => {
|
|
223
|
+
listeners.delete(listener);
|
|
224
|
+
};
|
|
225
|
+
},
|
|
226
|
+
async restore() {
|
|
227
|
+
const raw = await storage.getItem(key).catch(() => null);
|
|
228
|
+
settings = parseCameraSettings(raw, defaults);
|
|
229
|
+
restored = true;
|
|
230
|
+
emit();
|
|
231
|
+
},
|
|
232
|
+
isRestored: () => restored
|
|
233
|
+
};
|
|
234
|
+
}
|
|
235
|
+
function useCameraSettings(store) {
|
|
236
|
+
return _react.useSyncExternalStore.call(void 0, store.subscribe, store.get, store.get);
|
|
237
|
+
}
|
|
238
|
+
function cameraSettingsKey(settings) {
|
|
239
|
+
return `${settings.resolution}:${settings.fps}:${_nullishCoalesce(settings.cameraId, () => ( "default"))}`;
|
|
240
|
+
}
|
|
241
|
+
function rtmpRoomFactoryFor(settings) {
|
|
242
|
+
return _chunkIUIRVKJIcjs.createRtmpRoomFactory.call(void 0, {
|
|
243
|
+
frameRate: settings.fps,
|
|
244
|
+
...settings.cameraId ? { cameraId: settings.cameraId } : {}
|
|
245
|
+
});
|
|
246
|
+
}
|
|
247
|
+
|
|
248
|
+
// src/camera-controls.ts
|
|
249
|
+
function nativeModule() {
|
|
250
|
+
try {
|
|
251
|
+
const loaded = _chunk7OX2DSKIcjs.__require.call(void 0, "@pickleball/rtmp-native");
|
|
252
|
+
const candidate = _nullishCoalesce(_optionalChain([loaded, 'optionalAccess', _11 => _11.default]), () => ( loaded));
|
|
253
|
+
return candidate && typeof candidate === "object" ? candidate : null;
|
|
254
|
+
} catch (e2) {
|
|
255
|
+
return null;
|
|
256
|
+
}
|
|
257
|
+
}
|
|
258
|
+
async function callOptional(name, invoke, fallback) {
|
|
259
|
+
const native = nativeModule();
|
|
260
|
+
if (!native || typeof native[name] !== "function") return fallback;
|
|
261
|
+
try {
|
|
262
|
+
const result = await invoke(native);
|
|
263
|
+
return result === void 0 ? fallback : result;
|
|
264
|
+
} catch (e3) {
|
|
265
|
+
return fallback;
|
|
266
|
+
}
|
|
267
|
+
}
|
|
268
|
+
function getCameraCapabilities() {
|
|
269
|
+
return callOptional("getCameraCapabilities", (n) => _optionalChain([n, 'access', _12 => _12.getCameraCapabilities, 'optionalCall', _13 => _13()]), null);
|
|
270
|
+
}
|
|
271
|
+
function setZoom(factor) {
|
|
272
|
+
return callOptional("setZoom", (n) => _optionalChain([n, 'access', _14 => _14.setZoom, 'optionalCall', _15 => _15(factor)]), void 0);
|
|
273
|
+
}
|
|
274
|
+
function setExposureBias(ev) {
|
|
275
|
+
return callOptional("setExposureBias", (n) => _optionalChain([n, 'access', _16 => _16.setExposureBias, 'optionalCall', _17 => _17(ev)]), void 0);
|
|
276
|
+
}
|
|
277
|
+
function setFocusLocked(locked) {
|
|
278
|
+
return callOptional("setFocusLocked", (n) => _optionalChain([n, 'access', _18 => _18.setFocusLocked, 'optionalCall', _19 => _19(locked)]), void 0);
|
|
279
|
+
}
|
|
280
|
+
function setExposureLocked(locked) {
|
|
281
|
+
return callOptional("setExposureLocked", (n) => _optionalChain([n, 'access', _20 => _20.setExposureLocked, 'optionalCall', _21 => _21(locked)]), void 0);
|
|
282
|
+
}
|
|
283
|
+
function setTorch(enabled) {
|
|
284
|
+
return callOptional("setTorch", (n) => _optionalChain([n, 'access', _22 => _22.setTorch, 'optionalCall', _23 => _23(enabled)]), void 0);
|
|
285
|
+
}
|
|
286
|
+
function applyAntiFlicker(mode) {
|
|
287
|
+
return callOptional("setAntiFlicker", (n) => _optionalChain([n, 'access', _24 => _24.setAntiFlicker, 'optionalCall', _25 => _25(mode)]), void 0);
|
|
288
|
+
}
|
|
289
|
+
function requestNativePermissions() {
|
|
290
|
+
return callOptional("requestPermissions", (n) => _optionalChain([n, 'access', _26 => _26.requestPermissions, 'optionalCall', _27 => _27()]), null);
|
|
291
|
+
}
|
|
292
|
+
|
|
293
|
+
|
|
294
|
+
|
|
295
|
+
|
|
296
|
+
|
|
297
|
+
|
|
298
|
+
|
|
299
|
+
|
|
300
|
+
|
|
301
|
+
|
|
302
|
+
|
|
303
|
+
|
|
304
|
+
|
|
305
|
+
|
|
306
|
+
|
|
307
|
+
|
|
308
|
+
|
|
309
|
+
|
|
310
|
+
|
|
311
|
+
|
|
312
|
+
|
|
313
|
+
|
|
314
|
+
|
|
315
|
+
|
|
316
|
+
|
|
317
|
+
|
|
318
|
+
exports.classifyResumeStatus = classifyResumeStatus; exports.RESUME_RETRY_DELAYS_MS = RESUME_RETRY_DELAYS_MS; exports.resumeRetryDelayMs = resumeRetryDelayMs; exports.resumeBlocksArm = resumeBlocksArm; exports.resumeExternalSessionId = resumeExternalSessionId; exports.resumeGrantMatches = resumeGrantMatches; exports.PickleballAutoResume = PickleballAutoResume; exports.PickleballAutoPrepare = PickleballAutoPrepare; exports.useStandbySession = useStandbySession; exports.CAMERA_SETTINGS_STORAGE_KEY = CAMERA_SETTINGS_STORAGE_KEY; exports.DEFAULT_CAMERA_SETTINGS = DEFAULT_CAMERA_SETTINGS; exports.parseCameraSettings = parseCameraSettings; exports.createCameraSettingsStore = createCameraSettingsStore; exports.useCameraSettings = useCameraSettings; exports.cameraSettingsKey = cameraSettingsKey; exports.rtmpRoomFactoryFor = rtmpRoomFactoryFor; exports.getCameraCapabilities = getCameraCapabilities; exports.setZoom = setZoom; exports.setExposureBias = setExposureBias; exports.setFocusLocked = setFocusLocked; exports.setExposureLocked = setExposureLocked; exports.setTorch = setTorch; exports.applyAntiFlicker = applyAntiFlicker; exports.requestNativePermissions = requestNativePermissions;
|