@nddeps/barcode-scanner 0.3.0 → 0.3.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.
@@ -1,6 +1,7 @@
1
1
  import { type ScanArea } from './utils';
2
- declare function createBarcodeScanner(video: HTMLVideoElement, { calcScanArea, }?: {
2
+ declare function createBarcodeScanner(video: HTMLVideoElement, { calcScanArea, debug, }?: {
3
3
  calcScanArea?: (video: HTMLVideoElement) => ScanArea;
4
+ debug?: boolean;
4
5
  }): {
5
6
  destroy: () => Promise<void>;
6
7
  pause: () => void;
package/dist/index.js CHANGED
@@ -204,15 +204,15 @@ function install() {
204
204
  }, { once: !0 }), instance.value = e;
205
205
  });
206
206
  }
207
- function createBarcodeScanner(r, { calcScanArea: o } = {}) {
207
+ function createBarcodeScanner(r, { calcScanArea: o, debug: s = !1 } = {}) {
208
208
  if (!(r instanceof HTMLVideoElement)) throw Error("video is not a HTMLVideoElement");
209
- let s = document.createElement("canvas"), c = s.getContext("2d", { willReadFrequently: !0 });
210
- if (!c) throw Error("Failed to get canvas context");
209
+ let c = document.createElement("canvas"), l = c.getContext("2d", { willReadFrequently: !0 });
210
+ if (!l) throw Error("Failed to get canvas context");
211
211
  let { state: u, watch: d } = createWatchable({
212
212
  calcScanArea: o ?? getScanArea,
213
- canvas: s,
214
- canvasContext: c,
215
- debug: !0,
213
+ canvas: c,
214
+ canvasContext: l,
215
+ debug: s,
216
216
  decodeFrameRequestTimestamp: performance.now(),
217
217
  facingMode: "environment",
218
218
  isDecodeFrameProcessed: !1,
@@ -236,11 +236,11 @@ function createBarcodeScanner(r, { calcScanArea: o } = {}) {
236
236
  });
237
237
  install().then((e) => u.worker = e).then(() => Promise.resolve()).then(() => u.isReady = !0), u.video.autoplay = !0, u.video.disablePictureInPicture = !0, u.video.hidden = !1, u.video.muted = !0, u.video.playsInline = !0, document.addEventListener("visibilitychange", f);
238
238
  function f() {
239
- document.visibilityState === "hidden" ? u.isVideoActive && u.isVideoPaused === !1 && (u.resumeOnVisibilityChange = !0, h()) : u.resumeOnVisibilityChange && (u.resumeOnVisibilityChange = !1, g({ facingMode: u.facingMode }, u.onDecodeSuccess, u.onDecodeFailure));
239
+ s && console.log("barcode-scanner:handleVisibilityChange", document.visibilityState, u), document.visibilityState === "hidden" ? u.isVideoActive && u.isVideoPaused === !1 && (u.resumeOnVisibilityChange = !0, h()) : u.resumeOnVisibilityChange && (u.resumeOnVisibilityChange = !1, g({ facingMode: u.facingMode }, u.onDecodeSuccess, u.onDecodeFailure));
240
240
  }
241
241
  function p(e, r) {
242
- u.isDestroyed || u.isVideoActive === !1 || u.isVideoPaused || u.requestFrame(() => {
243
- if (performance.now() - u.decodeFrameRequestTimestamp < 1e3 / u.scanRate || u.isDecodeFrameProcessed || u.video.ended || u.video.paused || u.video.readyState <= 1) {
242
+ s && console.log("barcode-scanner:handleDecode", u, performance.now()), !(u.isDestroyed || u.isVideoActive === !1 || u.isVideoPaused) && u.requestFrame(() => {
243
+ if (u.isReady === !1 || performance.now() - u.decodeFrameRequestTimestamp < 1e3 / u.scanRate || u.isDecodeFrameProcessed || u.video.readyState <= 1) {
244
244
  u.decodeFrameRequestTimestamp = performance.now(), p(e, r);
245
245
  return;
246
246
  }
@@ -249,12 +249,12 @@ function createBarcodeScanner(r, { calcScanArea: o } = {}) {
249
249
  u.debug && window.dispatchEvent(new CustomEvent("barcode-scanner:decode-frame", { detail: { imageData: i } })), decode(i).then((i) => {
250
250
  if (i) {
251
251
  let r = i.cornerPoints.map((e) => e.x), a = i.cornerPoints.map((e) => e.y);
252
- e(i.rawValue, translateAreaToVideoRender(u.video, {
252
+ e(i.rawValue, {
253
253
  height: Math.max(...a) - Math.min(...a),
254
254
  width: Math.max(...r) - Math.min(...r),
255
255
  x: Math.min(...r) + u.scanArea.x,
256
256
  y: Math.min(...a) + u.scanArea.y
257
- }));
257
+ });
258
258
  } else r();
259
259
  }).catch(() => {
260
260
  console.error("Failed to decode barcode");
@@ -267,11 +267,11 @@ function createBarcodeScanner(r, { calcScanArea: o } = {}) {
267
267
  u.isDestroyed || (_(), document.removeEventListener("visibilitychange", f), u.worker?.terminate(), u.worker = null, u.isDestroyed = !0, u.isReady = !1);
268
268
  }
269
269
  function h() {
270
- u.canvas.height = u.video.videoHeight, u.canvas.width = u.video.videoWidth, u.canvasContext.clearRect(0, 0, u.canvas.width, u.canvas.height), u.canvasContext.drawImage(u.video, 0, 0, u.canvas.width, u.canvas.height, 0, 0, u.canvas.width, u.canvas.height), u.video.poster = u.canvas.toDataURL(), u.video.srcObject instanceof MediaStream && u.video.srcObject.getTracks().forEach((e) => e.stop()), u.video.srcObject = null, u.isVideoPaused = !0;
270
+ s && console.log("barcode-scanner:pause", u), u.canvas.height = u.video.videoHeight, u.canvas.width = u.video.videoWidth, u.canvasContext.clearRect(0, 0, u.canvas.width, u.canvas.height), u.canvasContext.drawImage(u.video, 0, 0, u.canvas.width, u.canvas.height, 0, 0, u.canvas.width, u.canvas.height), u.video.poster = u.canvas.toDataURL(), u.video.srcObject instanceof MediaStream && u.video.srcObject.getTracks().forEach((e) => e.stop()), u.video.srcObject = null, u.isVideoPaused = !0;
271
271
  }
272
272
  async function g({ facingMode: e = "environment" } = {}, r, a = () => {}) {
273
- if (!await getCameraAccess()) throw Error("No camera access");
274
- u.video.srcObject instanceof MediaStream && u.isVideoActive && u.isVideoPaused === !1 || (u.video.srcObject instanceof MediaStream || (u.video.srcObject = await navigator.mediaDevices.getUserMedia({ video: { facingMode: e } })), await u.video.play(), u.facingMode = e, u.isVideoActive = !0, u.isVideoPaused = !1, u.onDecodeFailure = a, u.onDecodeSuccess = r, u.scanArea = u.calcScanArea(u.video), u.video.style.transform = e === "user" ? "scaleX(-1)" : "none", p(r, a));
273
+ if (s && console.log("barcode-scanner:start:before", u), !await getCameraAccess()) throw Error("No camera access");
274
+ u.video.srcObject instanceof MediaStream && u.isVideoActive && u.isVideoPaused === !1 || (u.video.srcObject instanceof MediaStream || (u.video.srcObject = await navigator.mediaDevices.getUserMedia({ video: { facingMode: e } })), await u.video.play(), u.facingMode = e, u.isVideoActive = !0, u.isVideoPaused = !1, u.onDecodeFailure = a, u.onDecodeSuccess = r, u.scanArea = u.calcScanArea(u.video), u.video.style.transform = e === "user" ? "scaleX(-1)" : "none", s && console.log("barcode-scanner:start:after", u), p(r, a));
275
275
  }
276
276
  function _() {
277
277
  u.video.srcObject instanceof MediaStream && u.video.srcObject.getTracks().forEach((e) => e.stop()), u.video.poster = "", u.video.srcObject = null, u.isVideoActive = !1, u.isVideoPaused = !1;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@nddeps/barcode-scanner",
3
- "version": "0.3.0",
3
+ "version": "0.3.1",
4
4
  "private": false,
5
5
  "keywords": [
6
6
  "barcode",
@@ -32,15 +32,13 @@
32
32
  "scripts": {
33
33
  "build": "vite build && tsc -b",
34
34
  "dev": "vite",
35
- "preview": "vite preview",
36
- "publish": "npm publish --access public"
35
+ "preview": "vite preview"
37
36
  },
38
37
  "overrides": {
39
38
  "vite": "npm:rolldown-vite@7.3.1"
40
39
  },
41
40
  "dependencies": {
42
41
  "barcode-detector": "^3.0.8",
43
- "jsqr": "^1.4.0",
44
42
  "zxing-wasm": "^2.2.4"
45
43
  },
46
44
  "devDependencies": {