pi-kiosk-shared 2.2.88 → 2.2.91

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.
@@ -2,14 +2,39 @@ import { useCallback, useEffect, useRef, useState } from 'react';
2
2
  import { BrowserMultiFormatReader } from '@zxing/browser';
3
3
  import { DecodeHintType } from '@zxing/library';
4
4
  import './scannerNativeTypes.js';
5
- import { selectBarcodeScannerEngine } from './selectEngine.js';
6
5
  import { resolveScannerFormatConfig, } from './scannerFormats.js';
6
+ import { applyScannerTrackEnhancements, openScannerMediaStream, } from './scannerCameraConstraints.js';
7
+ import { createSensitiveZxingReader, decodeVideoFrameWithZxingJs, } from './zxingJsSensitiveDecode.js';
8
+ function isInsecureCameraContext() {
9
+ return typeof window !== 'undefined' && window.isSecureContext === false;
10
+ }
11
+ function isPermissionDeniedError(err) {
12
+ return (err instanceof DOMException &&
13
+ (err.name === 'NotAllowedError' || err.name === 'PermissionDeniedError'));
14
+ }
15
+ function isSecurityPolicyError(err) {
16
+ return err instanceof DOMException && err.name === 'SecurityError';
17
+ }
18
+ function isCameraInUseError(err) {
19
+ return (err instanceof DOMException &&
20
+ (err.name === 'NotReadableError' || err.name === 'AbortError'));
21
+ }
22
+ /** Multi-pass @zxing decode budget (~20–25 attempts/s). */
23
+ const ZXING_MIN_FRAME_INTERVAL_MS = 40;
24
+ /**
25
+ * Live camera barcode/QR decode.
26
+ *
27
+ * Primary: pure-JS @zxing/browser `decodeFromStream` (former working engine)
28
+ * plus parallel multi-pass digital zoom + TRY_HARDER for distant / small codes.
29
+ * If stream fails but a canvas exists, multi-pass alone is the sensitive path.
30
+ * G5: never start native BarcodeDetector alone (no TRY_HARDER / distance assist) —
31
+ * hard-fail with recovery copy when neither @zxing path can start.
32
+ */
7
33
  export function useBarcodeScanner(options) {
8
34
  const { enabled, videoRef, onDecode, messages, formatProfile = 'retail', onBackgroundStop, } = options;
9
35
  const [status, setStatus] = useState('idle');
10
36
  const [engine, setEngine] = useState(null);
11
37
  const [errorMessage, setErrorMessage] = useState(null);
12
- /** Latches after background release until parent sets `enabled` false (G7 / G10). */
13
38
  const [heldOffByBackground, setHeldOffByBackground] = useState(false);
14
39
  const onDecodeRef = useRef(onDecode);
15
40
  useEffect(() => {
@@ -45,7 +70,6 @@ export function useBarcodeScanner(options) {
45
70
  stopRef.current = null;
46
71
  }
47
72
  }, []);
48
- // G7 — release camera on background; do not auto-restart on visible.
49
73
  useEffect(() => {
50
74
  if (typeof document === 'undefined') {
51
75
  return;
@@ -84,8 +108,20 @@ export function useBarcodeScanner(options) {
84
108
  let cancelled = false;
85
109
  let stream = null;
86
110
  let zxingControls = null;
87
- let nativeFrameHandle = null;
111
+ let zxingFrameHandle = null;
88
112
  const formatConfig = resolveScannerFormatConfig(formatProfile);
113
+ // G5: multi-pass needs a canvas; if creation fails, hard-fail later (never native-only).
114
+ const decodeCanvas = (() => {
115
+ if (typeof document === 'undefined') {
116
+ return null;
117
+ }
118
+ try {
119
+ return document.createElement('canvas');
120
+ }
121
+ catch {
122
+ return null;
123
+ }
124
+ })();
89
125
  const cleanup = () => {
90
126
  if (zxingControls !== null) {
91
127
  try {
@@ -96,9 +132,9 @@ export function useBarcodeScanner(options) {
96
132
  }
97
133
  zxingControls = null;
98
134
  }
99
- if (nativeFrameHandle !== null) {
100
- cancelAnimationFrame(nativeFrameHandle);
101
- nativeFrameHandle = null;
135
+ if (zxingFrameHandle !== null) {
136
+ cancelAnimationFrame(zxingFrameHandle);
137
+ zxingFrameHandle = null;
102
138
  }
103
139
  if (stream !== null) {
104
140
  for (const track of stream.getTracks()) {
@@ -120,33 +156,47 @@ export function useBarcodeScanner(options) {
120
156
  void (async () => {
121
157
  setStatus('starting');
122
158
  setErrorMessage(null);
123
- if (typeof navigator === 'undefined' || navigator.mediaDevices === undefined) {
159
+ if (isInsecureCameraContext()) {
124
160
  if (!cancelled) {
125
161
  setStatus('error');
126
- setErrorMessage(messagesRef.current.noCamera);
162
+ setErrorMessage(messagesRef.current.insecureContext ?? messagesRef.current.noCamera);
127
163
  }
128
164
  return;
129
165
  }
130
- const chosenEngine = await selectBarcodeScannerEngine(formatProfile);
131
- if (cancelled) {
166
+ // Missing MediaDevices (secure context prep for G3): prefer noCamera only.
167
+ if (typeof navigator === 'undefined' || navigator.mediaDevices === undefined) {
168
+ if (!cancelled) {
169
+ setStatus('error');
170
+ setErrorMessage(messagesRef.current.noCamera);
171
+ }
132
172
  return;
133
173
  }
134
- setEngine(chosenEngine);
135
174
  try {
136
- stream = await navigator.mediaDevices.getUserMedia({
137
- video: { facingMode: { ideal: 'environment' } },
138
- audio: false,
139
- });
175
+ stream = await openScannerMediaStream(navigator.mediaDevices.getUserMedia.bind(navigator.mediaDevices));
140
176
  }
141
177
  catch (err) {
142
178
  if (cancelled) {
143
179
  return;
144
180
  }
145
- const isPermissionDenied = err instanceof DOMException &&
146
- (err.name === 'NotAllowedError' || err.name === 'PermissionDeniedError');
147
- if (isPermissionDenied) {
148
- setStatus('denied');
149
- setErrorMessage(messagesRef.current.permissionDenied);
181
+ if (isPermissionDeniedError(err)) {
182
+ // Android Chrome often throws NotAllowedError on plain HTTP LAN URLs;
183
+ // prefer the HTTPS recovery copy when the context is still insecure.
184
+ if (isInsecureCameraContext()) {
185
+ setStatus('error');
186
+ setErrorMessage(messagesRef.current.insecureContext ?? messagesRef.current.noCamera);
187
+ }
188
+ else {
189
+ setStatus('denied');
190
+ setErrorMessage(messagesRef.current.permissionDenied);
191
+ }
192
+ }
193
+ else if (isSecurityPolicyError(err)) {
194
+ setStatus('error');
195
+ setErrorMessage(messagesRef.current.policyBlocked ?? messagesRef.current.error);
196
+ }
197
+ else if (isCameraInUseError(err)) {
198
+ setStatus('error');
199
+ setErrorMessage(messagesRef.current.cameraInUse ?? messagesRef.current.error);
150
200
  }
151
201
  else {
152
202
  setStatus('error');
@@ -155,14 +205,33 @@ export function useBarcodeScanner(options) {
155
205
  cleanup();
156
206
  return;
157
207
  }
208
+ // G5: cancel/unmount after GUM — release before enhance/play.
209
+ if (cancelled) {
210
+ cleanup();
211
+ return;
212
+ }
213
+ const activeStream = stream;
214
+ const [primaryTrack] = activeStream.getVideoTracks();
215
+ if (primaryTrack !== undefined) {
216
+ await applyScannerTrackEnhancements(primaryTrack);
217
+ }
218
+ if (cancelled) {
219
+ cleanup();
220
+ return;
221
+ }
158
222
  const video = videoRef.current;
159
223
  if (video === null) {
224
+ // G4: successful GUM but video element gone — surface error, release tracks.
160
225
  cleanup();
226
+ if (!cancelled) {
227
+ setStatus('error');
228
+ setErrorMessage(messagesRef.current.error);
229
+ }
161
230
  return;
162
231
  }
163
232
  video.setAttribute('playsinline', 'true');
164
233
  video.muted = true;
165
- video.srcObject = stream;
234
+ video.srcObject = activeStream;
166
235
  try {
167
236
  await video.play();
168
237
  }
@@ -173,64 +242,101 @@ export function useBarcodeScanner(options) {
173
242
  cleanup();
174
243
  return;
175
244
  }
176
- setStatus('running');
177
- if (chosenEngine === 'native-detector' && window.BarcodeDetector !== undefined) {
178
- const detector = new window.BarcodeDetector({
179
- formats: [...formatConfig.nativeFormats],
180
- });
181
- const tick = async () => {
182
- if (cancelled || video.readyState < 2) {
183
- nativeFrameHandle = requestAnimationFrame(() => {
184
- void tick();
185
- });
245
+ const startZxingStreamFallback = async () => {
246
+ const hints = new Map();
247
+ hints.set(DecodeHintType.POSSIBLE_FORMATS, [...formatConfig.zxingFormats]);
248
+ hints.set(DecodeHintType.TRY_HARDER, true);
249
+ const reader = new BrowserMultiFormatReader(hints);
250
+ try {
251
+ zxingControls = await reader.decodeFromStream(activeStream, video, (result, _err, controls) => {
252
+ if (cancelled) {
253
+ controls.stop();
254
+ return;
255
+ }
256
+ if (result !== undefined && result !== null) {
257
+ onDecodeRef.current(result.getText());
258
+ }
259
+ });
260
+ return true;
261
+ }
262
+ catch {
263
+ return false;
264
+ }
265
+ };
266
+ const startZxingMultiPassLoop = () => {
267
+ if (decodeCanvas === null) {
268
+ return false;
269
+ }
270
+ let reader;
271
+ try {
272
+ reader = createSensitiveZxingReader(formatConfig.zxingFormats);
273
+ }
274
+ catch {
275
+ // Reader/bootstrap failure — do not pretend multi-pass started.
276
+ return false;
277
+ }
278
+ let lastAttemptMs = 0;
279
+ let busy = false;
280
+ const tick = () => {
281
+ if (cancelled) {
186
282
  return;
187
283
  }
188
- try {
189
- const results = await detector.detect(video);
190
- if (results.length > 0) {
191
- const first = results[0];
192
- if (first !== undefined) {
193
- onDecodeRef.current(first.rawValue);
284
+ const now = performance.now();
285
+ if (!busy &&
286
+ video.readyState >= 2 &&
287
+ now - lastAttemptMs >= ZXING_MIN_FRAME_INTERVAL_MS) {
288
+ lastAttemptMs = now;
289
+ busy = true;
290
+ try {
291
+ const text = decodeVideoFrameWithZxingJs(video, decodeCanvas, reader);
292
+ if (!cancelled && text !== null) {
293
+ onDecodeRef.current(text);
194
294
  }
195
295
  }
196
- }
197
- catch {
198
- // unstable frames may throw; keep scanning
296
+ catch {
297
+ // keep scanning
298
+ }
299
+ finally {
300
+ busy = false;
301
+ }
199
302
  }
200
303
  if (!cancelled) {
201
- nativeFrameHandle = requestAnimationFrame(() => {
202
- void tick();
203
- });
304
+ zxingFrameHandle = requestAnimationFrame(tick);
204
305
  }
205
306
  };
206
- nativeFrameHandle = requestAnimationFrame(() => {
207
- void tick();
208
- });
307
+ zxingFrameHandle = requestAnimationFrame(tick);
308
+ return true;
309
+ };
310
+ // G5 engine order (max sensitivity — never native-only):
311
+ // 1) @zxing decodeFromStream (+ TRY_HARDER); if OK also start multi-pass
312
+ // 2) Else multi-pass canvas alone (when canvas exists)
313
+ // 3) Else hard-fail — do not start weak native BarcodeDetector alone
314
+ const streamOk = await startZxingStreamFallback();
315
+ // G5: if cancelled after controls assigned, stop them + release stream.
316
+ if (cancelled) {
317
+ cleanup();
209
318
  return;
210
319
  }
211
- const hints = new Map();
212
- hints.set(DecodeHintType.POSSIBLE_FORMATS, [...formatConfig.zxingFormats]);
213
- hints.set(DecodeHintType.TRY_HARDER, true);
214
- const reader = new BrowserMultiFormatReader(hints);
215
- try {
216
- zxingControls = await reader.decodeFromStream(stream, video, (result, _err, controls) => {
217
- if (cancelled) {
218
- controls.stop();
219
- return;
220
- }
221
- if (result !== undefined && result !== null) {
222
- onDecodeRef.current(result.getText());
223
- }
224
- });
320
+ if (streamOk) {
321
+ startZxingMultiPassLoop();
322
+ if (!cancelled) {
323
+ setEngine('zxing');
324
+ setStatus('running');
325
+ }
326
+ return;
225
327
  }
226
- catch {
227
- if (cancelled) {
228
- return;
328
+ if (startZxingMultiPassLoop()) {
329
+ if (!cancelled) {
330
+ setEngine('zxing');
331
+ setStatus('running');
229
332
  }
333
+ return;
334
+ }
335
+ if (!cancelled) {
230
336
  setStatus('error');
231
337
  setErrorMessage(messagesRef.current.error);
232
- cleanup();
233
338
  }
339
+ cleanup();
234
340
  })();
235
341
  return () => {
236
342
  cancelled = true;
@@ -1 +1 @@
1
- {"version":3,"file":"useBarcodeScanner.js","sourceRoot":"","sources":["../../src/hooks/useBarcodeScanner.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AACjE,OAAO,EAAE,wBAAwB,EAAE,MAAM,gBAAgB,CAAC;AAC1D,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAChD,OAAO,yBAAyB,CAAC;AACjC,OAAO,EAAE,0BAA0B,EAAsB,MAAM,mBAAmB,CAAC;AACnF,OAAO,EACL,0BAA0B,GAE3B,MAAM,qBAAqB,CAAC;AAiC7B,MAAM,UAAU,iBAAiB,CAAC,OAAiC;IACjE,MAAM,EACJ,OAAO,EACP,QAAQ,EACR,QAAQ,EACR,QAAQ,EACR,aAAa,GAAG,QAAQ,EACxB,gBAAgB,GACjB,GAAG,OAAO,CAAC;IAEZ,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,QAAQ,CAAgB,MAAM,CAAC,CAAC;IAC5D,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,QAAQ,CAAuB,IAAI,CAAC,CAAC;IACjE,MAAM,CAAC,YAAY,EAAE,eAAe,CAAC,GAAG,QAAQ,CAAgB,IAAI,CAAC,CAAC;IACtE,qFAAqF;IACrF,MAAM,CAAC,mBAAmB,EAAE,sBAAsB,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IAEtE,MAAM,WAAW,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC;IACrC,SAAS,CAAC,GAAG,EAAE;QACb,WAAW,CAAC,OAAO,GAAG,QAAQ,CAAC;IACjC,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC;IAEf,MAAM,WAAW,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC;IACrC,SAAS,CAAC,GAAG,EAAE;QACb,WAAW,CAAC,OAAO,GAAG,QAAQ,CAAC;IACjC,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC;IAEf,MAAM,mBAAmB,GAAG,MAAM,CAAC,gBAAgB,CAAC,CAAC;IACrD,SAAS,CAAC,GAAG,EAAE;QACb,mBAAmB,CAAC,OAAO,GAAG,gBAAgB,CAAC;IACjD,CAAC,EAAE,CAAC,gBAAgB,CAAC,CAAC,CAAC;IAEvB,MAAM,UAAU,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC;IACnC,UAAU,CAAC,OAAO,GAAG,OAAO,CAAC;IAE7B,MAAM,OAAO,GAAG,MAAM,CAAsB,IAAI,CAAC,CAAC;IAElD,IAAI,CAAC,OAAO,IAAI,mBAAmB,EAAE,CAAC;QACpC,sBAAsB,CAAC,KAAK,CAAC,CAAC;IAChC,CAAC;IAED,MAAM,eAAe,GAAG,OAAO,IAAI,CAAC,mBAAmB,CAAC;IAExD,MAAM,CAAC,cAAc,EAAE,iBAAiB,CAAC,GAAG,QAAQ,CAAC,eAAe,CAAC,CAAC;IACtE,IAAI,cAAc,KAAK,eAAe,EAAE,CAAC;QACvC,iBAAiB,CAAC,eAAe,CAAC,CAAC;QACnC,IAAI,CAAC,eAAe,EAAE,CAAC;YACrB,SAAS,CAAC,MAAM,CAAC,CAAC;YAClB,SAAS,CAAC,IAAI,CAAC,CAAC;YAChB,eAAe,CAAC,IAAI,CAAC,CAAC;QACxB,CAAC;IACH,CAAC;IAED,MAAM,IAAI,GAAG,WAAW,CAAC,GAAS,EAAE;QAClC,IAAI,OAAO,CAAC,OAAO,KAAK,IAAI,EAAE,CAAC;YAC7B,OAAO,CAAC,OAAO,EAAE,CAAC;YAClB,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC;QACzB,CAAC;IACH,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,qEAAqE;IACrE,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,OAAO,QAAQ,KAAK,WAAW,EAAE,CAAC;YACpC,OAAO;QACT,CAAC;QAED,MAAM,oBAAoB,GAAG,GAAS,EAAE;YACtC,IAAI,EAAE,CAAC;YACP,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC;gBACxB,OAAO;YACT,CAAC;YACD,sBAAsB,CAAC,IAAI,CAAC,CAAC;YAC7B,SAAS,CAAC,MAAM,CAAC,CAAC;YAClB,SAAS,CAAC,IAAI,CAAC,CAAC;YAChB,eAAe,CAAC,IAAI,CAAC,CAAC;YACtB,mBAAmB,CAAC,OAAO,EAAE,EAAE,CAAC;QAClC,CAAC,CAAC;QAEF,MAAM,kBAAkB,GAAG,GAAS,EAAE;YACpC,IAAI,QAAQ,CAAC,MAAM,EAAE,CAAC;gBACpB,oBAAoB,EAAE,CAAC;YACzB,CAAC;QACH,CAAC,CAAC;QAEF,MAAM,UAAU,GAAG,GAAS,EAAE;YAC5B,oBAAoB,EAAE,CAAC;QACzB,CAAC,CAAC;QAEF,QAAQ,CAAC,gBAAgB,CAAC,kBAAkB,EAAE,kBAAkB,CAAC,CAAC;QAClE,MAAM,CAAC,gBAAgB,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;QAChD,OAAO,GAAG,EAAE;YACV,QAAQ,CAAC,mBAAmB,CAAC,kBAAkB,EAAE,kBAAkB,CAAC,CAAC;YACrE,MAAM,CAAC,mBAAmB,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;QACrD,CAAC,CAAC;IACJ,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC;IAEX,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,CAAC,eAAe,EAAE,CAAC;YACrB,IAAI,EAAE,CAAC;YACP,OAAO;QACT,CAAC;QAED,IAAI,SAAS,GAAG,KAAK,CAAC;QACtB,IAAI,MAAM,GAAuB,IAAI,CAAC;QACtC,IAAI,aAAa,GAAgC,IAAI,CAAC;QACtD,IAAI,iBAAiB,GAAkB,IAAI,CAAC;QAC5C,MAAM,YAAY,GAAG,0BAA0B,CAAC,aAAa,CAAC,CAAC;QAE/D,MAAM,OAAO,GAAG,GAAS,EAAE;YACzB,IAAI,aAAa,KAAK,IAAI,EAAE,CAAC;gBAC3B,IAAI,CAAC;oBACH,aAAa,CAAC,IAAI,EAAE,CAAC;gBACvB,CAAC;gBAAC,MAAM,CAAC;oBACP,yBAAyB;gBAC3B,CAAC;gBACD,aAAa,GAAG,IAAI,CAAC;YACvB,CAAC;YACD,IAAI,iBAAiB,KAAK,IAAI,EAAE,CAAC;gBAC/B,oBAAoB,CAAC,iBAAiB,CAAC,CAAC;gBACxC,iBAAiB,GAAG,IAAI,CAAC;YAC3B,CAAC;YACD,IAAI,MAAM,KAAK,IAAI,EAAE,CAAC;gBACpB,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,SAAS,EAAE,EAAE,CAAC;oBACvC,IAAI,CAAC;wBACH,KAAK,CAAC,IAAI,EAAE,CAAC;oBACf,CAAC;oBAAC,MAAM,CAAC;wBACP,yBAAyB;oBAC3B,CAAC;gBACH,CAAC;gBACD,MAAM,GAAG,IAAI,CAAC;YAChB,CAAC;YACD,MAAM,KAAK,GAAG,QAAQ,CAAC,OAAO,CAAC;YAC/B,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;gBACnB,KAAK,CAAC,SAAS,GAAG,IAAI,CAAC;YACzB,CAAC;QACH,CAAC,CAAC;QACF,OAAO,CAAC,OAAO,GAAG,OAAO,CAAC;QAE1B,KAAK,CAAC,KAAK,IAAmB,EAAE;YAC9B,SAAS,CAAC,UAAU,CAAC,CAAC;YACtB,eAAe,CAAC,IAAI,CAAC,CAAC;YAEtB,IAAI,OAAO,SAAS,KAAK,WAAW,IAAI,SAAS,CAAC,YAAY,KAAK,SAAS,EAAE,CAAC;gBAC7E,IAAI,CAAC,SAAS,EAAE,CAAC;oBACf,SAAS,CAAC,OAAO,CAAC,CAAC;oBACnB,eAAe,CAAC,WAAW,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;gBAChD,CAAC;gBACD,OAAO;YACT,CAAC;YAED,MAAM,YAAY,GAAG,MAAM,0BAA0B,CAAC,aAAa,CAAC,CAAC;YACrE,IAAI,SAAS,EAAE,CAAC;gBACd,OAAO;YACT,CAAC;YACD,SAAS,CAAC,YAAY,CAAC,CAAC;YAExB,IAAI,CAAC;gBACH,MAAM,GAAG,MAAM,SAAS,CAAC,YAAY,CAAC,YAAY,CAAC;oBACjD,KAAK,EAAE,EAAE,UAAU,EAAE,EAAE,KAAK,EAAE,aAAa,EAAE,EAAE;oBAC/C,KAAK,EAAE,KAAK;iBACb,CAAC,CAAC;YACL,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,IAAI,SAAS,EAAE,CAAC;oBACd,OAAO;gBACT,CAAC;gBACD,MAAM,kBAAkB,GACtB,GAAG,YAAY,YAAY;oBAC3B,CAAC,GAAG,CAAC,IAAI,KAAK,iBAAiB,IAAI,GAAG,CAAC,IAAI,KAAK,uBAAuB,CAAC,CAAC;gBAC3E,IAAI,kBAAkB,EAAE,CAAC;oBACvB,SAAS,CAAC,QAAQ,CAAC,CAAC;oBACpB,eAAe,CAAC,WAAW,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC;gBACxD,CAAC;qBAAM,CAAC;oBACN,SAAS,CAAC,OAAO,CAAC,CAAC;oBACnB,eAAe,CAAC,WAAW,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;gBAC7C,CAAC;gBACD,OAAO,EAAE,CAAC;gBACV,OAAO;YACT,CAAC;YAED,MAAM,KAAK,GAAG,QAAQ,CAAC,OAAO,CAAC;YAC/B,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;gBACnB,OAAO,EAAE,CAAC;gBACV,OAAO;YACT,CAAC;YACD,KAAK,CAAC,YAAY,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC;YAC1C,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC;YACnB,KAAK,CAAC,SAAS,GAAG,MAAM,CAAC;YACzB,IAAI,CAAC;gBACH,MAAM,KAAK,CAAC,IAAI,EAAE,CAAC;YACrB,CAAC;YAAC,MAAM,CAAC;gBACP,4CAA4C;YAC9C,CAAC;YAED,IAAI,SAAS,EAAE,CAAC;gBACd,OAAO,EAAE,CAAC;gBACV,OAAO;YACT,CAAC;YACD,SAAS,CAAC,SAAS,CAAC,CAAC;YAErB,IAAI,YAAY,KAAK,iBAAiB,IAAI,MAAM,CAAC,eAAe,KAAK,SAAS,EAAE,CAAC;gBAC/E,MAAM,QAAQ,GAAG,IAAI,MAAM,CAAC,eAAe,CAAC;oBAC1C,OAAO,EAAE,CAAC,GAAG,YAAY,CAAC,aAAa,CAAC;iBACzC,CAAC,CAAC;gBACH,MAAM,IAAI,GAAG,KAAK,IAAmB,EAAE;oBACrC,IAAI,SAAS,IAAI,KAAK,CAAC,UAAU,GAAG,CAAC,EAAE,CAAC;wBACtC,iBAAiB,GAAG,qBAAqB,CAAC,GAAG,EAAE;4BAC7C,KAAK,IAAI,EAAE,CAAC;wBACd,CAAC,CAAC,CAAC;wBACH,OAAO;oBACT,CAAC;oBACD,IAAI,CAAC;wBACH,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;wBAC7C,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;4BACvB,MAAM,KAAK,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;4BACzB,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;gCACxB,WAAW,CAAC,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;4BACtC,CAAC;wBACH,CAAC;oBACH,CAAC;oBAAC,MAAM,CAAC;wBACP,2CAA2C;oBAC7C,CAAC;oBACD,IAAI,CAAC,SAAS,EAAE,CAAC;wBACf,iBAAiB,GAAG,qBAAqB,CAAC,GAAG,EAAE;4BAC7C,KAAK,IAAI,EAAE,CAAC;wBACd,CAAC,CAAC,CAAC;oBACL,CAAC;gBACH,CAAC,CAAC;gBACF,iBAAiB,GAAG,qBAAqB,CAAC,GAAG,EAAE;oBAC7C,KAAK,IAAI,EAAE,CAAC;gBACd,CAAC,CAAC,CAAC;gBACH,OAAO;YACT,CAAC;YAED,MAAM,KAAK,GAAG,IAAI,GAAG,EAAE,CAAC;YACxB,KAAK,CAAC,GAAG,CAAC,cAAc,CAAC,gBAAgB,EAAE,CAAC,GAAG,YAAY,CAAC,YAAY,CAAC,CAAC,CAAC;YAC3E,KAAK,CAAC,GAAG,CAAC,cAAc,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;YAC3C,MAAM,MAAM,GAAG,IAAI,wBAAwB,CAAC,KAAK,CAAC,CAAC;YACnD,IAAI,CAAC;gBACH,aAAa,GAAG,MAAM,MAAM,CAAC,gBAAgB,CAC3C,MAAM,EACN,KAAK,EACL,CAAC,MAAM,EAAE,IAAI,EAAE,QAA8B,EAAE,EAAE;oBACjD,IAAI,SAAS,EAAE,CAAC;wBACd,QAAQ,CAAC,IAAI,EAAE,CAAC;wBAChB,OAAO;oBACT,CAAC;oBACD,IAAI,MAAM,KAAK,SAAS,IAAI,MAAM,KAAK,IAAI,EAAE,CAAC;wBAC5C,WAAW,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC;oBACxC,CAAC;gBACH,CAAC,CAAC,CAAC;YACL,CAAC;YAAC,MAAM,CAAC;gBACP,IAAI,SAAS,EAAE,CAAC;oBACd,OAAO;gBACT,CAAC;gBACD,SAAS,CAAC,OAAO,CAAC,CAAC;gBACnB,eAAe,CAAC,WAAW,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;gBAC3C,OAAO,EAAE,CAAC;YACZ,CAAC;QACH,CAAC,CAAC,EAAE,CAAC;QAEL,OAAO,GAAG,EAAE;YACV,SAAS,GAAG,IAAI,CAAC;YACjB,OAAO,EAAE,CAAC;YACV,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC;QACzB,CAAC,CAAC;IACJ,CAAC,EAAE,CAAC,eAAe,EAAE,aAAa,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC;IAErD,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,YAAY,EAAE,CAAC;AAC1C,CAAC"}
1
+ {"version":3,"file":"useBarcodeScanner.js","sourceRoot":"","sources":["../../src/hooks/useBarcodeScanner.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ /**
2
+ * High-sensitivity pure-JS @zxing decode (the library that previously worked).
3
+ * Multi-pass digital zoom + TRY_HARDER for distant / small codes.
4
+ */
5
+ import { BrowserMultiFormatReader } from '@zxing/browser';
6
+ import { BarcodeFormat } from '@zxing/library';
7
+ export declare function createSensitiveZxingReader(formats: readonly BarcodeFormat[]): BrowserMultiFormatReader;
8
+ /**
9
+ * Decode one video frame via multi-pass canvas crops → @zxing decodeFromCanvas.
10
+ * Returns the first payload or null when nothing is found.
11
+ */
12
+ export declare function decodeVideoFrameWithZxingJs(video: HTMLVideoElement, canvas: HTMLCanvasElement, reader: BrowserMultiFormatReader): string | null;
13
+ //# sourceMappingURL=zxingJsSensitiveDecode.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"zxingJsSensitiveDecode.d.ts","sourceRoot":"","sources":["../../src/hooks/zxingJsSensitiveDecode.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,EAAE,wBAAwB,EAAE,MAAM,gBAAgB,CAAC;AAC1D,OAAO,EAAE,aAAa,EAAkB,MAAM,gBAAgB,CAAC;AAG/D,wBAAgB,0BAA0B,CACxC,OAAO,EAAE,SAAS,aAAa,EAAE,GAChC,wBAAwB,CAK1B;AAED;;;GAGG;AACH,wBAAgB,2BAA2B,CACzC,KAAK,EAAE,gBAAgB,EACvB,MAAM,EAAE,iBAAiB,EACzB,MAAM,EAAE,wBAAwB,GAC/B,MAAM,GAAG,IAAI,CAwCf"}
@@ -0,0 +1,54 @@
1
+ /**
2
+ * High-sensitivity pure-JS @zxing decode (the library that previously worked).
3
+ * Multi-pass digital zoom + TRY_HARDER for distant / small codes.
4
+ */
5
+ import { BrowserMultiFormatReader } from '@zxing/browser';
6
+ import { DecodeHintType } from '@zxing/library';
7
+ import { buildMaxSensitivityScanPasses } from './scannerScanPasses.js';
8
+ export function createSensitiveZxingReader(formats) {
9
+ const hints = new Map();
10
+ hints.set(DecodeHintType.POSSIBLE_FORMATS, [...formats]);
11
+ hints.set(DecodeHintType.TRY_HARDER, true);
12
+ return new BrowserMultiFormatReader(hints);
13
+ }
14
+ /**
15
+ * Decode one video frame via multi-pass canvas crops → @zxing decodeFromCanvas.
16
+ * Returns the first payload or null when nothing is found.
17
+ */
18
+ export function decodeVideoFrameWithZxingJs(video, canvas, reader) {
19
+ const width = video.videoWidth;
20
+ const height = video.videoHeight;
21
+ if (width < 2 || height < 2) {
22
+ return null;
23
+ }
24
+ const ctx = canvas.getContext('2d', { willReadFrequently: true });
25
+ if (ctx === null) {
26
+ return null;
27
+ }
28
+ ctx.imageSmoothingEnabled = false;
29
+ const passes = buildMaxSensitivityScanPasses(width, height);
30
+ for (const pass of passes) {
31
+ const outW = Math.max(2, Math.floor(pass.sw * pass.scale));
32
+ const outH = Math.max(2, Math.floor(pass.sh * pass.scale));
33
+ if (canvas.width !== outW) {
34
+ canvas.width = outW;
35
+ }
36
+ if (canvas.height !== outH) {
37
+ canvas.height = outH;
38
+ }
39
+ ctx.clearRect(0, 0, outW, outH);
40
+ ctx.drawImage(video, pass.sx, pass.sy, pass.sw, pass.sh, 0, 0, outW, outH);
41
+ try {
42
+ const result = reader.decodeFromCanvas(canvas);
43
+ const text = result.getText();
44
+ if (text.length > 0) {
45
+ return text;
46
+ }
47
+ }
48
+ catch {
49
+ // NotFoundException / checksum — try next pass
50
+ }
51
+ }
52
+ return null;
53
+ }
54
+ //# sourceMappingURL=zxingJsSensitiveDecode.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"zxingJsSensitiveDecode.js","sourceRoot":"","sources":["../../src/hooks/zxingJsSensitiveDecode.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,EAAE,wBAAwB,EAAE,MAAM,gBAAgB,CAAC;AAC1D,OAAO,EAAiB,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAC/D,OAAO,EAAE,6BAA6B,EAAE,MAAM,wBAAwB,CAAC;AAEvE,MAAM,UAAU,0BAA0B,CACxC,OAAiC;IAEjC,MAAM,KAAK,GAAG,IAAI,GAAG,EAAE,CAAC;IACxB,KAAK,CAAC,GAAG,CAAC,cAAc,CAAC,gBAAgB,EAAE,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC;IACzD,KAAK,CAAC,GAAG,CAAC,cAAc,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;IAC3C,OAAO,IAAI,wBAAwB,CAAC,KAAK,CAAC,CAAC;AAC7C,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,2BAA2B,CACzC,KAAuB,EACvB,MAAyB,EACzB,MAAgC;IAEhC,MAAM,KAAK,GAAG,KAAK,CAAC,UAAU,CAAC;IAC/B,MAAM,MAAM,GAAG,KAAK,CAAC,WAAW,CAAC;IACjC,IAAI,KAAK,GAAG,CAAC,IAAI,MAAM,GAAG,CAAC,EAAE,CAAC;QAC5B,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,GAAG,GAAG,MAAM,CAAC,UAAU,CAAC,IAAI,EAAE,EAAE,kBAAkB,EAAE,IAAI,EAAE,CAAC,CAAC;IAClE,IAAI,GAAG,KAAK,IAAI,EAAE,CAAC;QACjB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,GAAG,CAAC,qBAAqB,GAAG,KAAK,CAAC;IAElC,MAAM,MAAM,GAAG,6BAA6B,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;IAC5D,KAAK,MAAM,IAAI,IAAI,MAAM,EAAE,CAAC;QAC1B,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;QAC3D,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;QAC3D,IAAI,MAAM,CAAC,KAAK,KAAK,IAAI,EAAE,CAAC;YAC1B,MAAM,CAAC,KAAK,GAAG,IAAI,CAAC;QACtB,CAAC;QACD,IAAI,MAAM,CAAC,MAAM,KAAK,IAAI,EAAE,CAAC;YAC3B,MAAM,CAAC,MAAM,GAAG,IAAI,CAAC;QACvB,CAAC;QAED,GAAG,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;QAChC,GAAG,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;QAE3E,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC;YAC/C,MAAM,IAAI,GAAG,MAAM,CAAC,OAAO,EAAE,CAAC;YAC9B,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACpB,OAAO,IAAI,CAAC;YACd,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACP,+CAA+C;QACjD,CAAC;IACH,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"Switch.d.ts","sourceRoot":"","sources":["../../../src/ui/Switch/Switch.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAc,KAAK,oBAAoB,EAAE,MAAM,OAAO,CAAC;AAkC9D,MAAM,MAAM,WAAW,GAAG,IAAI,CAAC,oBAAoB,CAAC,iBAAiB,CAAC,EAAE,UAAU,CAAC,GAAG;IACpF,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,eAAe,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,IAAI,CAAC;CACvD,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,MAAM;sBATC,OAAO;+BACE,CAAC,OAAO,EAAE,OAAO,KAAK,IAAI;qDAuBtD,CAAC"}
1
+ {"version":3,"file":"Switch.d.ts","sourceRoot":"","sources":["../../../src/ui/Switch/Switch.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAc,KAAK,oBAAoB,EAAE,MAAM,OAAO,CAAC;AAyC9D,MAAM,MAAM,WAAW,GAAG,IAAI,CAAC,oBAAoB,CAAC,iBAAiB,CAAC,EAAE,UAAU,CAAC,GAAG;IACpF,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,eAAe,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,IAAI,CAAC;CACvD,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,MAAM;sBATC,OAAO;+BACE,CAAC,OAAO,EAAE,OAAO,KAAK,IAAI;qDAuBtD,CAAC"}
@@ -4,14 +4,21 @@ import { tv } from '../tvShim.js';
4
4
  const switchTrack = tv({
5
5
  base: [
6
6
  'relative inline-flex h-[1.55rem] w-[2.85rem] shrink-0 cursor-pointer rounded-full',
7
- 'bg-[var(--color-border,var(--color-an-border,#cbd5e1))] transition-[background-color] duration-150',
7
+ /* OFF: muted inactive — avoid bright slate that reads as "on" on dark surfaces. */
8
+ 'bg-[color-mix(in_srgb,var(--color-an-text-muted,var(--color-text-secondary,#71717a))_42%,var(--color-an-surface,var(--color-surface,#fff)))]',
9
+ 'shadow-[inset_0_0_0_1px_color-mix(in_srgb,var(--color-an-border,var(--color-border,#cbd5e1))_70%,transparent)]',
10
+ 'transition-[background-color,box-shadow] duration-150',
8
11
  'focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2',
9
12
  'focus-visible:outline-[var(--color-focus-ring,var(--color-an-primary))]',
10
13
  'disabled:cursor-not-allowed disabled:opacity-55',
11
14
  ].join(' '),
12
15
  variants: {
13
16
  checked: {
14
- true: 'bg-[var(--color-action-primary,var(--color-an-primary))]',
17
+ true: [
18
+ /* ON: success green — clear true/false when brand primary is monochrome. */
19
+ 'bg-[var(--color-an-success,var(--color-success,#16a34a))]',
20
+ 'shadow-[inset_0_0_0_1px_color-mix(in_srgb,var(--color-an-success,var(--color-success,#16a34a))_55%,transparent)]',
21
+ ].join(' '),
15
22
  false: '',
16
23
  },
17
24
  },
@@ -20,7 +27,7 @@ const switchTrack = tv({
20
27
  const switchKnob = tv({
21
28
  base: [
22
29
  'pointer-events-none absolute left-[2px] top-[2px] h-5 w-5 rounded-full bg-white',
23
- 'shadow-[0_1px_3px_rgba(15,23,42,0.18)] transition-transform duration-150',
30
+ 'shadow-[0_1px_3px_rgba(15,23,42,0.45)] transition-transform duration-150',
24
31
  ].join(' '),
25
32
  variants: {
26
33
  checked: {
@@ -1 +1 @@
1
- {"version":3,"file":"Switch.js","sourceRoot":"","sources":["../../../src/ui/Switch/Switch.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,UAAU,EAA6B,MAAM,OAAO,CAAC;AAC9D,OAAO,EAAE,EAAE,EAAE,MAAM,cAAc,CAAC;AAElC,MAAM,WAAW,GAAG,EAAE,CAAC;IACrB,IAAI,EAAE;QACJ,mFAAmF;QACnF,oGAAoG;QACpG,8EAA8E;QAC9E,yEAAyE;QACzE,iDAAiD;KAClD,CAAC,IAAI,CAAC,GAAG,CAAC;IACX,QAAQ,EAAE;QACR,OAAO,EAAE;YACP,IAAI,EAAE,0DAA0D;YAChE,KAAK,EAAE,EAAE;SACV;KACF;IACD,eAAe,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE;CACpC,CAAC,CAAC;AAEH,MAAM,UAAU,GAAG,EAAE,CAAC;IACpB,IAAI,EAAE;QACJ,iFAAiF;QACjF,0EAA0E;KAC3E,CAAC,IAAI,CAAC,GAAG,CAAC;IACX,QAAQ,EAAE;QACR,OAAO,EAAE;YACP,IAAI,EAAE,sBAAsB;YAC5B,KAAK,EAAE,EAAE;SACV;KACF;IACD,eAAe,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE;CACpC,CAAC,CAAC;AAOH;;;;GAIG;AACH,MAAM,CAAC,MAAM,MAAM,GAAG,UAAU,CAC9B,CAAC,EAAE,OAAO,EAAE,eAAe,EAAE,SAAS,EAAE,QAAQ,EAAE,GAAG,IAAI,EAAE,EAAE,GAAG,EAAE,EAAE,CAAC,CACnE,iBACE,GAAG,EAAE,GAAG,EACR,IAAI,EAAC,QAAQ,EACb,IAAI,EAAC,QAAQ,kBACC,OAAO,EACrB,QAAQ,EAAE,QAAQ,EAClB,SAAS,EAAE,WAAW,CAAC,EAAE,OAAO,EAAE,SAAS,EAAE,CAAC,EAC9C,OAAO,EAAE,GAAG,EAAE,CAAC,eAAe,EAAE,CAAC,CAAC,OAAO,CAAC,KACtC,IAAI,YAER,eAAM,SAAS,EAAE,UAAU,CAAC,EAAE,OAAO,EAAE,CAAC,iBAAc,MAAM,GAAG,GACxD,CACV,CACF,CAAC;AACF,MAAM,CAAC,WAAW,GAAG,QAAQ,CAAC"}
1
+ {"version":3,"file":"Switch.js","sourceRoot":"","sources":["../../../src/ui/Switch/Switch.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,UAAU,EAA6B,MAAM,OAAO,CAAC;AAC9D,OAAO,EAAE,EAAE,EAAE,MAAM,cAAc,CAAC;AAElC,MAAM,WAAW,GAAG,EAAE,CAAC;IACrB,IAAI,EAAE;QACJ,mFAAmF;QACnF,mFAAmF;QACnF,8IAA8I;QAC9I,gHAAgH;QAChH,uDAAuD;QACvD,8EAA8E;QAC9E,yEAAyE;QACzE,iDAAiD;KAClD,CAAC,IAAI,CAAC,GAAG,CAAC;IACX,QAAQ,EAAE;QACR,OAAO,EAAE;YACP,IAAI,EAAE;gBACJ,4EAA4E;gBAC5E,2DAA2D;gBAC3D,kHAAkH;aACnH,CAAC,IAAI,CAAC,GAAG,CAAC;YACX,KAAK,EAAE,EAAE;SACV;KACF;IACD,eAAe,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE;CACpC,CAAC,CAAC;AAEH,MAAM,UAAU,GAAG,EAAE,CAAC;IACpB,IAAI,EAAE;QACJ,iFAAiF;QACjF,0EAA0E;KAC3E,CAAC,IAAI,CAAC,GAAG,CAAC;IACX,QAAQ,EAAE;QACR,OAAO,EAAE;YACP,IAAI,EAAE,sBAAsB;YAC5B,KAAK,EAAE,EAAE;SACV;KACF;IACD,eAAe,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE;CACpC,CAAC,CAAC;AAOH;;;;GAIG;AACH,MAAM,CAAC,MAAM,MAAM,GAAG,UAAU,CAC9B,CAAC,EAAE,OAAO,EAAE,eAAe,EAAE,SAAS,EAAE,QAAQ,EAAE,GAAG,IAAI,EAAE,EAAE,GAAG,EAAE,EAAE,CAAC,CACnE,iBACE,GAAG,EAAE,GAAG,EACR,IAAI,EAAC,QAAQ,EACb,IAAI,EAAC,QAAQ,kBACC,OAAO,EACrB,QAAQ,EAAE,QAAQ,EAClB,SAAS,EAAE,WAAW,CAAC,EAAE,OAAO,EAAE,SAAS,EAAE,CAAC,EAC9C,OAAO,EAAE,GAAG,EAAE,CAAC,eAAe,EAAE,CAAC,CAAC,OAAO,CAAC,KACtC,IAAI,YAER,eAAM,SAAS,EAAE,UAAU,CAAC,EAAE,OAAO,EAAE,CAAC,iBAAc,MAAM,GAAG,GACxD,CACV,CACF,CAAC;AACF,MAAM,CAAC,WAAW,GAAG,QAAQ,CAAC"}