@camstack/addon-pipeline 1.1.67 → 1.1.69
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/dist/audio-analyzer/index.js +1 -1
- package/dist/audio-analyzer/index.mjs +1 -1
- package/dist/detection-pipeline/index.js +137 -27
- package/dist/detection-pipeline/index.mjs +137 -27
- package/dist/{dist-DkGHtAaK.mjs → dist-BT4Ug2Bf.mjs} +22 -2
- package/dist/{dist-BxxVKcnw.js → dist-DUcDVlg7.js} +22 -2
- package/dist/motion-wasm/index.js +1 -1
- package/dist/motion-wasm/index.mjs +1 -1
- package/dist/pipeline-runner/index.js +7 -3
- package/dist/pipeline-runner/index.mjs +7 -3
- package/dist/recorder/index.js +1 -1
- package/dist/recorder/index.mjs +1 -1
- package/dist/{step-definitions-CAs0RD2N.js → step-definitions-4tt-nRM4.js} +114 -187
- package/dist/{step-definitions-Delhq28w.mjs → step-definitions-DO0hIDMx.mjs} +114 -187
- package/dist/stream-broker/{_virtual_mf-localSharedImportMap___mfe_internal__addon_stream_broker_widgets-CfFsU700.mjs → _virtual_mf-localSharedImportMap___mfe_internal__addon_stream_broker_widgets-CP4DpABx.mjs} +1 -1
- package/dist/stream-broker/{hostInit-D-S5fCDx.mjs → hostInit-Do2ymS0O.mjs} +1 -1
- package/dist/stream-broker/index.js +1 -1
- package/dist/stream-broker/index.mjs +1 -1
- package/dist/stream-broker/remoteEntry.js +1 -1
- package/embed-dist/assets/{MaskShapeCanvas-DI4BY7W2-CRvzj7Of.js → MaskShapeCanvas-DI4BY7W2-DlI3udxg.js} +1 -1
- package/embed-dist/assets/{MotionZonesSettings-NcxxQN8r-CBgvPUB-.js → MotionZonesSettings-NcxxQN8r-Du8J0kED.js} +1 -1
- package/embed-dist/assets/{PrivacyMaskSettings-APgPLF7p-DH07fe1k.js → PrivacyMaskSettings-APgPLF7p-DSST47WI.js} +1 -1
- package/embed-dist/assets/{index-BkoPcGtQ.js → index-B2ux2xJ7.js} +4 -4
- package/embed-dist/index.html +1 -1
- package/package.json +1 -1
- package/python/inference_pool.py +13 -3
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { a as COCO_TO_MACRO, i as COCO_80_LABELS, r as AUDIO_MACRO_LABELS, w as hfModelUrl } from "./dist-
|
|
1
|
+
import { a as COCO_TO_MACRO, i as COCO_80_LABELS, r as AUDIO_MACRO_LABELS, w as hfModelUrl } from "./dist-BT4Ug2Bf.mjs";
|
|
2
2
|
//#region src/detection-pipeline/registry/model-catalogs.ts
|
|
3
3
|
var HF_REPO = "camstack/camstack-models";
|
|
4
4
|
var HF_SCRYPTED = "scrypted/plugin-models";
|
|
@@ -61,6 +61,71 @@ var YOLO26_TIER_NAME = {
|
|
|
61
61
|
m: "Medium",
|
|
62
62
|
l: "Large"
|
|
63
63
|
};
|
|
64
|
+
var YOLOV9_TIER_NAME = {
|
|
65
|
+
t: "Tiny",
|
|
66
|
+
s: "Small",
|
|
67
|
+
m: "Medium",
|
|
68
|
+
c: "Compact"
|
|
69
|
+
};
|
|
70
|
+
/**
|
|
71
|
+
* OUR YOLOv9 family (Ultralytics base) — the NPU-detection line. Unlike yolo26
|
|
72
|
+
* (whose arch the Intel NPU rejects → 0 frames), yolov9 COMPILES AND RUNS on the
|
|
73
|
+
* Intel NPU ("AI Boost"). Empirically: our yolov9t-320-int8 = ~298 fps on the
|
|
74
|
+
* NPU vs yolo26n = 103 on the iGPU (~2.9×). t/s/m/c × {320,640}; each size ships
|
|
75
|
+
* a base entry (onnx + coreml + openvino **fp16**) + an OpenVINO **int8** entry
|
|
76
|
+
* (the NPU/iGPU-optimal config). CoreML (fp16) runs on the Mac ANE — the
|
|
77
|
+
* apple-ane default detector (`default-detection-model.ts`).
|
|
78
|
+
*/
|
|
79
|
+
var yolov9Reduced = (tier, res, sizes) => {
|
|
80
|
+
const name = YOLOV9_TIER_NAME[tier] ?? tier.toUpperCase();
|
|
81
|
+
return [{
|
|
82
|
+
id: `yolov9${tier}-${res}`,
|
|
83
|
+
group: {
|
|
84
|
+
family: "yolov9",
|
|
85
|
+
tier,
|
|
86
|
+
resolution: res
|
|
87
|
+
},
|
|
88
|
+
name: `YOLOv9 ${name} @${res}`,
|
|
89
|
+
description: `YOLOv9 ${name} @${res}×${res} (Ultralytics) — OpenVINO fp16, runs on Intel NPU + iGPU (NPU-compatible; yolo26 is not).`,
|
|
90
|
+
inputSize: {
|
|
91
|
+
width: res,
|
|
92
|
+
height: res
|
|
93
|
+
},
|
|
94
|
+
labels: [],
|
|
95
|
+
preprocessMode: "letterbox",
|
|
96
|
+
formats: {
|
|
97
|
+
onnx: {
|
|
98
|
+
url: hf(`objectDetection/yolov9/onnx/camstack-yolov9${tier}-${res}.onnx`),
|
|
99
|
+
sizeMB: sizes.onnx
|
|
100
|
+
},
|
|
101
|
+
coreml: {
|
|
102
|
+
url: hf(`objectDetection/yolov9/coreml/camstack-yolov9${tier}-${res}.mlpackage`),
|
|
103
|
+
sizeMB: sizes.coreml,
|
|
104
|
+
isDirectory: true,
|
|
105
|
+
files: [...MLPACKAGE_FILES],
|
|
106
|
+
runtimes: ["python"]
|
|
107
|
+
},
|
|
108
|
+
openvino: ovFormat(hf(`objectDetection/yolov9/openvino/camstack-yolov9${tier}-${res}-fp16.xml`), sizes.ovFp16)
|
|
109
|
+
}
|
|
110
|
+
}, {
|
|
111
|
+
id: `yolov9${tier}-${res}-int8`,
|
|
112
|
+
group: {
|
|
113
|
+
family: "yolov9",
|
|
114
|
+
tier,
|
|
115
|
+
precision: "int8",
|
|
116
|
+
resolution: res
|
|
117
|
+
},
|
|
118
|
+
name: `YOLOv9 ${name} @${res} (INT8)`,
|
|
119
|
+
description: `YOLOv9 ${name} @${res} — OpenVINO INT8 for the Intel NPU / iGPU. The NPU's fastest config (our-base detector).`,
|
|
120
|
+
inputSize: {
|
|
121
|
+
width: res,
|
|
122
|
+
height: res
|
|
123
|
+
},
|
|
124
|
+
labels: [],
|
|
125
|
+
preprocessMode: "letterbox",
|
|
126
|
+
formats: { openvino: ovFormat(hf(`objectDetection/yolov9/openvino/camstack-yolov9${tier}-${res}-int8.xml`), sizes.ovInt8) }
|
|
127
|
+
}];
|
|
128
|
+
};
|
|
64
129
|
/**
|
|
65
130
|
* Reduced-input YOLO26 variants (2026-07-11). A lower square input (320 / 256)
|
|
66
131
|
* is the biggest, cheapest latency lever measured across every runtime — Mac
|
|
@@ -121,84 +186,6 @@ var yolo26Reduced = (tier, res, sizes) => {
|
|
|
121
186
|
}];
|
|
122
187
|
};
|
|
123
188
|
var OBJECT_DETECTION_MODELS = [
|
|
124
|
-
{
|
|
125
|
-
id: "yolov9t",
|
|
126
|
-
legacy: true,
|
|
127
|
-
name: "YOLOv9 Tiny",
|
|
128
|
-
description: "YOLOv9 Tiny — ultra-lightweight next-gen detector",
|
|
129
|
-
inputSize: {
|
|
130
|
-
width: 640,
|
|
131
|
-
height: 640
|
|
132
|
-
},
|
|
133
|
-
labels: [],
|
|
134
|
-
preprocessMode: "letterbox",
|
|
135
|
-
formats: {
|
|
136
|
-
onnx: {
|
|
137
|
-
url: hf("objectDetection/yolov9/onnx/camstack-yolov9t.onnx"),
|
|
138
|
-
sizeMB: 8
|
|
139
|
-
},
|
|
140
|
-
coreml: {
|
|
141
|
-
url: hf("objectDetection/yolov9/coreml/camstack-yolov9t.mlpackage"),
|
|
142
|
-
sizeMB: 4,
|
|
143
|
-
isDirectory: true,
|
|
144
|
-
files: [...MLPACKAGE_FILES],
|
|
145
|
-
runtimes: ["python"]
|
|
146
|
-
},
|
|
147
|
-
openvino: ovFormat(hf("objectDetection/yolov9/openvino/camstack-yolov9t.xml"), 6)
|
|
148
|
-
}
|
|
149
|
-
},
|
|
150
|
-
{
|
|
151
|
-
id: "yolov9s",
|
|
152
|
-
legacy: true,
|
|
153
|
-
name: "YOLOv9 Small",
|
|
154
|
-
description: "YOLOv9 Small — improved efficiency over YOLOv8s",
|
|
155
|
-
inputSize: {
|
|
156
|
-
width: 640,
|
|
157
|
-
height: 640
|
|
158
|
-
},
|
|
159
|
-
labels: [],
|
|
160
|
-
preprocessMode: "letterbox",
|
|
161
|
-
formats: {
|
|
162
|
-
onnx: {
|
|
163
|
-
url: hf("objectDetection/yolov9/onnx/camstack-yolov9s.onnx"),
|
|
164
|
-
sizeMB: 28
|
|
165
|
-
},
|
|
166
|
-
coreml: {
|
|
167
|
-
url: hf("objectDetection/yolov9/coreml/camstack-yolov9s.mlpackage"),
|
|
168
|
-
sizeMB: 14,
|
|
169
|
-
isDirectory: true,
|
|
170
|
-
files: [...MLPACKAGE_FILES],
|
|
171
|
-
runtimes: ["python"]
|
|
172
|
-
},
|
|
173
|
-
openvino: ovFormat(hf("objectDetection/yolov9/openvino/camstack-yolov9s.xml"), 16)
|
|
174
|
-
}
|
|
175
|
-
},
|
|
176
|
-
{
|
|
177
|
-
id: "yolov9c",
|
|
178
|
-
legacy: true,
|
|
179
|
-
name: "YOLOv9 C",
|
|
180
|
-
description: "YOLOv9 C — high-accuracy compact model",
|
|
181
|
-
inputSize: {
|
|
182
|
-
width: 640,
|
|
183
|
-
height: 640
|
|
184
|
-
},
|
|
185
|
-
labels: [],
|
|
186
|
-
preprocessMode: "letterbox",
|
|
187
|
-
formats: {
|
|
188
|
-
onnx: {
|
|
189
|
-
url: hf("objectDetection/yolov9/onnx/camstack-yolov9c.onnx"),
|
|
190
|
-
sizeMB: 97
|
|
191
|
-
},
|
|
192
|
-
coreml: {
|
|
193
|
-
url: hf("objectDetection/yolov9/coreml/camstack-yolov9c.mlpackage"),
|
|
194
|
-
sizeMB: 48,
|
|
195
|
-
isDirectory: true,
|
|
196
|
-
files: [...MLPACKAGE_FILES],
|
|
197
|
-
runtimes: ["python"]
|
|
198
|
-
},
|
|
199
|
-
openvino: ovFormat(hf("objectDetection/yolov9/openvino/camstack-yolov9c.xml"), 49)
|
|
200
|
-
}
|
|
201
|
-
},
|
|
202
189
|
{
|
|
203
190
|
id: "yolo26n",
|
|
204
191
|
group: {
|
|
@@ -375,114 +362,6 @@ var OBJECT_DETECTION_MODELS = [
|
|
|
375
362
|
runtimes: ["python"]
|
|
376
363
|
} }
|
|
377
364
|
},
|
|
378
|
-
{
|
|
379
|
-
id: "scrypted-yolov9t-relu",
|
|
380
|
-
legacy: true,
|
|
381
|
-
name: "YOLOv9 Tiny ReLU",
|
|
382
|
-
description: "YOLOv9t ReLU — optimized for int8 quantization",
|
|
383
|
-
inputSize: {
|
|
384
|
-
width: 320,
|
|
385
|
-
height: 320
|
|
386
|
-
},
|
|
387
|
-
labels: [],
|
|
388
|
-
preprocessMode: "letterbox",
|
|
389
|
-
formats: {
|
|
390
|
-
onnx: {
|
|
391
|
-
url: hfScrypted("onnx/scrypted_yolov9t_relu/scrypted_yolov9t_relu.onnx"),
|
|
392
|
-
sizeMB: 8.1
|
|
393
|
-
},
|
|
394
|
-
coreml: {
|
|
395
|
-
url: hfScrypted("coreml/scrypted_yolov9t_relu/scrypted_yolov9t_relu.mlpackage"),
|
|
396
|
-
sizeMB: 4,
|
|
397
|
-
isDirectory: true,
|
|
398
|
-
files: [...MLPACKAGE_FILES],
|
|
399
|
-
runtimes: ["python"]
|
|
400
|
-
},
|
|
401
|
-
openvino: ovFormat(hf("objectDetection/scrypted-yolov9-relu/openvino/scrypted_yolov9t_relu.xml"), 6)
|
|
402
|
-
}
|
|
403
|
-
},
|
|
404
|
-
{
|
|
405
|
-
id: "scrypted-yolov9s-relu",
|
|
406
|
-
legacy: true,
|
|
407
|
-
name: "YOLOv9 Small ReLU",
|
|
408
|
-
description: "YOLOv9s ReLU — improved efficiency, int8 ready",
|
|
409
|
-
inputSize: {
|
|
410
|
-
width: 320,
|
|
411
|
-
height: 320
|
|
412
|
-
},
|
|
413
|
-
labels: [],
|
|
414
|
-
preprocessMode: "letterbox",
|
|
415
|
-
formats: {
|
|
416
|
-
onnx: {
|
|
417
|
-
url: hfScrypted("onnx/scrypted_yolov9s_relu/scrypted_yolov9s_relu.onnx"),
|
|
418
|
-
sizeMB: 27.9
|
|
419
|
-
},
|
|
420
|
-
coreml: {
|
|
421
|
-
url: hfScrypted("coreml/scrypted_yolov9s_relu/scrypted_yolov9s_relu.mlpackage"),
|
|
422
|
-
sizeMB: 14,
|
|
423
|
-
isDirectory: true,
|
|
424
|
-
files: [...MLPACKAGE_FILES],
|
|
425
|
-
runtimes: ["python"]
|
|
426
|
-
},
|
|
427
|
-
openvino: ovFormat(hf("objectDetection/scrypted-yolov9-relu/openvino/scrypted_yolov9s_relu.xml"), 16)
|
|
428
|
-
}
|
|
429
|
-
},
|
|
430
|
-
{
|
|
431
|
-
id: "scrypted-yolov9c-relu",
|
|
432
|
-
legacy: true,
|
|
433
|
-
name: "YOLOv9 C ReLU",
|
|
434
|
-
description: "YOLOv9c ReLU — high-accuracy, int8 ready",
|
|
435
|
-
inputSize: {
|
|
436
|
-
width: 320,
|
|
437
|
-
height: 320
|
|
438
|
-
},
|
|
439
|
-
labels: [],
|
|
440
|
-
preprocessMode: "letterbox",
|
|
441
|
-
formats: {
|
|
442
|
-
onnx: {
|
|
443
|
-
url: hfScrypted("onnx/scrypted_yolov9c_relu/scrypted_yolov9c_relu.onnx"),
|
|
444
|
-
sizeMB: 96.9
|
|
445
|
-
},
|
|
446
|
-
coreml: {
|
|
447
|
-
url: hfScrypted("coreml/scrypted_yolov9c_relu/scrypted_yolov9c_relu.mlpackage"),
|
|
448
|
-
sizeMB: 48,
|
|
449
|
-
isDirectory: true,
|
|
450
|
-
files: [...MLPACKAGE_FILES],
|
|
451
|
-
runtimes: ["python"]
|
|
452
|
-
},
|
|
453
|
-
openvino: ovFormat(hf("objectDetection/scrypted-yolov9-relu/openvino/scrypted_yolov9c_relu.xml"), 49)
|
|
454
|
-
}
|
|
455
|
-
},
|
|
456
|
-
{
|
|
457
|
-
id: "scrypted-yolov9m-relu",
|
|
458
|
-
legacy: true,
|
|
459
|
-
name: "YOLOv9 M ReLU",
|
|
460
|
-
description: "YOLOv9m ReLU — medium, int8 ready",
|
|
461
|
-
inputSize: {
|
|
462
|
-
width: 320,
|
|
463
|
-
height: 320
|
|
464
|
-
},
|
|
465
|
-
labels: [],
|
|
466
|
-
preprocessMode: "letterbox",
|
|
467
|
-
formats: {
|
|
468
|
-
onnx: {
|
|
469
|
-
url: hfScrypted("onnx/scrypted_yolov9m_relu/scrypted_yolov9m_relu.onnx"),
|
|
470
|
-
sizeMB: 76.6
|
|
471
|
-
},
|
|
472
|
-
coreml: {
|
|
473
|
-
url: hfScrypted("coreml/scrypted_yolov9m_relu/scrypted_yolov9m_relu.mlpackage"),
|
|
474
|
-
sizeMB: 38,
|
|
475
|
-
isDirectory: true,
|
|
476
|
-
files: [...MLPACKAGE_FILES],
|
|
477
|
-
runtimes: ["python"]
|
|
478
|
-
},
|
|
479
|
-
openvino: ovFormat(hf("objectDetection/scrypted-yolov9-relu/openvino/scrypted_yolov9m_relu.xml"), 38)
|
|
480
|
-
}
|
|
481
|
-
},
|
|
482
|
-
ovPrecisionVariant("yolov9t", "objectDetection/yolov9/openvino", "YOLOv9 Tiny", "fp16", 5, true),
|
|
483
|
-
ovPrecisionVariant("yolov9t", "objectDetection/yolov9/openvino", "YOLOv9 Tiny", "int8", 3, true),
|
|
484
|
-
ovPrecisionVariant("yolov9s", "objectDetection/yolov9/openvino", "YOLOv9 Small", "fp16", 15, true),
|
|
485
|
-
ovPrecisionVariant("yolov9s", "objectDetection/yolov9/openvino", "YOLOv9 Small", "int8", 8, true),
|
|
486
365
|
ovPrecisionVariant("yolo26n", "objectDetection/yolo26/openvino", "YOLO26 Nano", "fp16", 5, true),
|
|
487
366
|
ovPrecisionVariant("yolo26n", "objectDetection/yolo26/openvino", "YOLO26 Nano", "int8", 3),
|
|
488
367
|
ovPrecisionVariant("yolo26s", "objectDetection/yolo26/openvino", "YOLO26 Small", "fp16", 19, true),
|
|
@@ -539,6 +418,54 @@ var OBJECT_DETECTION_MODELS = [
|
|
|
539
418
|
ovFp32: 99.85,
|
|
540
419
|
ovInt8: 26.31
|
|
541
420
|
}),
|
|
421
|
+
...yolov9Reduced("t", 320, {
|
|
422
|
+
onnx: 8,
|
|
423
|
+
coreml: 8.3,
|
|
424
|
+
ovFp16: 4,
|
|
425
|
+
ovInt8: 3
|
|
426
|
+
}),
|
|
427
|
+
...yolov9Reduced("t", 640, {
|
|
428
|
+
onnx: 8,
|
|
429
|
+
coreml: 8.4,
|
|
430
|
+
ovFp16: 4,
|
|
431
|
+
ovInt8: 3
|
|
432
|
+
}),
|
|
433
|
+
...yolov9Reduced("s", 320, {
|
|
434
|
+
onnx: 27,
|
|
435
|
+
coreml: 27.8,
|
|
436
|
+
ovFp16: 14,
|
|
437
|
+
ovInt8: 8
|
|
438
|
+
}),
|
|
439
|
+
...yolov9Reduced("s", 640, {
|
|
440
|
+
onnx: 27,
|
|
441
|
+
coreml: 27.9,
|
|
442
|
+
ovFp16: 14,
|
|
443
|
+
ovInt8: 8
|
|
444
|
+
}),
|
|
445
|
+
...yolov9Reduced("m", 320, {
|
|
446
|
+
onnx: 76,
|
|
447
|
+
coreml: 76.8,
|
|
448
|
+
ovFp16: 38,
|
|
449
|
+
ovInt8: 20
|
|
450
|
+
}),
|
|
451
|
+
...yolov9Reduced("m", 640, {
|
|
452
|
+
onnx: 76,
|
|
453
|
+
coreml: 76.9,
|
|
454
|
+
ovFp16: 38,
|
|
455
|
+
ovInt8: 20
|
|
456
|
+
}),
|
|
457
|
+
...yolov9Reduced("c", 320, {
|
|
458
|
+
onnx: 97,
|
|
459
|
+
coreml: 97.1,
|
|
460
|
+
ovFp16: 49,
|
|
461
|
+
ovInt8: 25
|
|
462
|
+
}),
|
|
463
|
+
...yolov9Reduced("c", 640, {
|
|
464
|
+
onnx: 97,
|
|
465
|
+
coreml: 97,
|
|
466
|
+
ovFp16: 49,
|
|
467
|
+
ovInt8: 25
|
|
468
|
+
}),
|
|
542
469
|
ovPrecisionVariant("yolo26x", "objectDetection/yolo26/openvino", "YOLO26 XLarge", "fp16", 112, true),
|
|
543
470
|
ovPrecisionVariant("yolo26x", "objectDetection/yolo26/openvino", "YOLO26 XLarge", "int8", 56, true)
|
|
544
471
|
];
|
|
@@ -3,7 +3,7 @@ Object.defineProperties(exports, {
|
|
|
3
3
|
[Symbol.toStringTag]: { value: "Module" }
|
|
4
4
|
});
|
|
5
5
|
const require_chunk = require("../chunk-D6vf50IK.js");
|
|
6
|
-
const require_dist = require("../dist-
|
|
6
|
+
const require_dist = require("../dist-DUcDVlg7.js");
|
|
7
7
|
const require_remote_restream = require("../remote-restream-CO36Sr30.js");
|
|
8
8
|
const require_model_download_service_Cp9f4dk6 = require("../model-download-service-Cp9f4dk6-Dv-oFwjN.js");
|
|
9
9
|
let node_child_process = require("node:child_process");
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { t as __require } from "../chunk-BdkLduGY.mjs";
|
|
2
|
-
import { B as errMsg, E as maskUrlCredentials, G as createEvent, H as CAM_PROFILE_ORDER, J as makeProfileBrokerId, L as streamBrokerCapability, U as DeviceFeature, V as BaseAddon, W as DeviceType, Y as makeSourceBrokerId, Z as parseProfileBrokerId, at as literal, c as EncodeProfileSchema, ct as record, dt as EventCategory, et as _enum, h as addonWidgetsSourceCapability, k as nodePin, lt as string, nt as boolean, ot as number, p as RingBuffer, q as isEvent, rt as discriminatedUnion, st as object, tt as array, ut as union, v as cameraStreamsCapability, z as webrtcSessionCapability } from "../dist-
|
|
2
|
+
import { B as errMsg, E as maskUrlCredentials, G as createEvent, H as CAM_PROFILE_ORDER, J as makeProfileBrokerId, L as streamBrokerCapability, U as DeviceFeature, V as BaseAddon, W as DeviceType, Y as makeSourceBrokerId, Z as parseProfileBrokerId, at as literal, c as EncodeProfileSchema, ct as record, dt as EventCategory, et as _enum, h as addonWidgetsSourceCapability, k as nodePin, lt as string, nt as boolean, ot as number, p as RingBuffer, q as isEvent, rt as discriminatedUnion, st as object, tt as array, ut as union, v as cameraStreamsCapability, z as webrtcSessionCapability } from "../dist-BT4Ug2Bf.mjs";
|
|
3
3
|
import { n as profileForStreamId } from "../remote-restream-BeHi78PZ.mjs";
|
|
4
4
|
import { n as createFileDataPlaneHandler } from "../model-download-service-Cp9f4dk6-CwUb5v3Y.mjs";
|
|
5
5
|
import { createRequire } from "node:module";
|
|
@@ -30,7 +30,7 @@ async function d(e) {
|
|
|
30
30
|
}
|
|
31
31
|
}
|
|
32
32
|
async function f() {
|
|
33
|
-
return l ||= d(() => import("./_virtual_mf-localSharedImportMap___mfe_internal__addon_stream_broker_widgets-
|
|
33
|
+
return l ||= d(() => import("./_virtual_mf-localSharedImportMap___mfe_internal__addon_stream_broker_widgets-CP4DpABx.mjs")).catch((e) => {
|
|
34
34
|
throw l = void 0, e;
|
|
35
35
|
}), l;
|
|
36
36
|
}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{d as e,f as t,g as n,h as r,m as i,p as a}from"./index-
|
|
1
|
+
import{d as e,f as t,g as n,h as r,m as i,p as a}from"./index-B2ux2xJ7.js";var o=n(t()),s=n(e(),1),c=Math.PI/180;function l(){return typeof window<`u`&&({}.toString.call(window)===`[object Window]`||{}.toString.call(window)===`[object global]`)}var u=typeof global<`u`?global:typeof window<`u`?window:typeof WorkerGlobalScope<`u`?self:{},d={_global:u,version:`10.3.0`,isBrowser:l(),isUnminified:/param/.test(function(e){}.toString()),dblClickWindow:400,getAngle(e){return d.angleDeg?e*c:e},enableTrace:!1,pointerEventsEnabled:!0,autoDrawEnabled:!0,hitOnDragEnabled:!1,capturePointerEventsEnabled:!1,_mouseListenClick:!1,_touchListenClick:!1,_pointerListenClick:!1,_mouseInDblClickWindow:!1,_touchInDblClickWindow:!1,_pointerInDblClickWindow:!1,_mouseDblClickPointerId:null,_touchDblClickPointerId:null,_pointerDblClickPointerId:null,_renderBackend:`web`,legacyTextRendering:!1,pixelRatio:typeof window<`u`&&window.devicePixelRatio||1,dragDistance:3,angleDeg:!0,showWarnings:!0,dragButtons:[0,1],isDragging(){return d.DD.isDragging},isTransforming(){return d.Transformer?.isTransforming()??!1},isDragReady(){return!!d.DD.node},releaseCanvasOnDestroy:!0,document:u.document,_injectGlobal(e){u.Konva!==void 0&&console.error(`Several Konva instances detected. It is not recommended to use multiple Konva instances in the same environment.`),u.Konva=e}},f=e=>{d[e.prototype.getClassName()]=e};d._injectGlobal(d);var p=`Konva.js unsupported environment.
|
|
2
2
|
|
|
3
3
|
Looks like you are trying to use Konva.js in Node.js environment. because "document" object is undefined.
|
|
4
4
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{a as e,c as t,d as n,f as r,g as i,l as a,o,r as s,s as c,u as l}from"./index-
|
|
1
|
+
import{a as e,c as t,d as n,f as r,g as i,l as a,o,r as s,s as c,u as l}from"./index-B2ux2xJ7.js";import{MaskShapeCanvas as u}from"./MaskShapeCanvas-DI4BY7W2-DlI3udxg.js";var d=i(r(),1),f=i(n(),1),p=o(`grid-2x2`,[[`path`,{d:`M12 3v18`,key:`108xh3`}],[`path`,{d:`M3 12h18`,key:`1i2n21`}],[`rect`,{x:`3`,y:`3`,width:`18`,height:`18`,rx:`2`,key:`h1oib`}]]),m=110,h=`motion-zones`,g=0,_=[1,2,3],v=1,y=`rounded-md border border-border bg-surface px-2 py-1 text-[11px] font-medium text-foreground-subtle hover:bg-surface-hover disabled:opacity-40 transition-colors`,b=`rounded-md border border-primary/50 bg-primary/15 px-2.5 py-1 text-[11px] font-medium text-primary hover:bg-primary/25 disabled:opacity-40 transition-colors`;function x(e,t,n){let r=t*n,i=Array.from({length:r});for(let t=0;t<r;t+=1)i[t]=e[t]===!0;return i}function S(e,t){if(e.length!==t.length)return!1;for(let n=0;n<e.length;n+=1)if(e[n]!==t[n])return!1;return!0}function C(e,t){return Math.ceil(e/t)}function w(e,t,n){return Math.min(n-1,Math.floor((e+.5)/t*n))}function T(e,t,n,r){let i=C(t,r),a=C(n,r),o=Array.from({length:i*a},()=>!1);for(let r=0;r<n;r+=1){let s=w(r,n,a);for(let n=0;n<t;n+=1)e[r*t+n]===!0&&(o[s*i+w(n,t,i)]=!0)}return o}function E(e,t,n,r){let i=C(t,r),a=C(n,r),o=Array.from({length:t*n},()=>!1);for(let r=0;r<n;r+=1){let s=w(r,n,a);for(let n=0;n<t;n+=1)o[r*t+n]=e[s*i+w(n,t,i)]===!0}return o}function D({deviceId:n}){let r=t(l().trpcClient,n),[i,o]=(0,d.useState)(null),[w,D]=(0,d.useState)(!1),[O,k]=(0,d.useState)(null),[A,j]=(0,d.useState)(null),[M,N]=(0,d.useState)(v),[P,F]=(0,d.useState)(!1),[I,L]=(0,d.useState)(!1),R=(0,d.useRef)(!1);(0,d.useEffect)(()=>{if(!r)return;let e=!1;return R.current=!1,o(null),D(!1),k(null),j(null),N(v),L(!1),(async()=>{try{let t=await r.motionZones?.getOptions({});if(e)return;if(!t)throw Error(`device proxy not ready`);if(o(t),R.current)return;let n=await r.motionZones?.getStatus({});if(e)return;if(!n)throw Error(`device proxy not ready`);R.current=!0;let i=n.regions.find(e=>e.shape.kind===`grid`),a=x(i?i.shape.cells:[],t.grid.width,t.grid.height);j(a),k(T(a,t.grid.width,t.grid.height,v))}catch(t){if(e)return;c(t)?D(!0):console.error(`Motion Zones load failed`,t)}})(),()=>{e=!0}},[r]);let z=i?i.grid.width:0,B=i?i.grid.height:0,V=C(z,M),H=C(B,M),U=(0,d.useMemo)(()=>O&&i?E(O,z,B,M):null,[O,i,z,B,M]),W=(0,d.useMemo)(()=>U!==null&&A!==null&&!S(U,A),[U,A]),G=(0,d.useMemo)(()=>U?U.reduce((e,t)=>t?e+1:e,0):0,[U]),K=z*B,q=V*H,J=(0,d.useCallback)(e=>{q>0&&k(Array.from({length:q},()=>e))},[q]),Y=(0,d.useCallback)(()=>{k(e=>e&&e.map(e=>!e))},[]),X=(0,d.useCallback)(()=>{A&&i&&k(T(A,z,B,M))},[A,i,z,B,M]),Z=(0,d.useCallback)(e=>{e===M||!i||k(t=>{if(!t)return N(e),t;let n=T(E(t,z,B,M),z,B,e);return N(e),n})},[M,i,z,B]),Q=(0,d.useMemo)(()=>i&&O?[{id:g,shape:{kind:`grid`,gridWidth:V,gridHeight:H,cells:[...O]}}]:[],[i,O,V,H]),$=(0,d.useCallback)((e,t)=>{t.kind===`grid`&&k(t.cells)},[]),ee=(0,d.useCallback)(async()=>{if(!(!r||!O||!i)){F(!0);try{let e=E(O,i.grid.width,i.grid.height,M),t={kind:`grid`,gridWidth:i.grid.width,gridHeight:i.grid.height,cells:e};await r.motionZones?.setZone({patch:{regions:[{id:g,enabled:!0,shape:t}]}});let n=await r.motionZones?.getStatus({});if(n){let e=n.regions.find(e=>e.shape.kind===`grid`),t=x(e?e.shape.cells:[],i.grid.width,i.grid.height);j(t),k(T(t,i.grid.width,i.grid.height,M))}}catch(e){console.error(`Motion Zones save failed`,e)}finally{F(!1)}}},[r,O,i,M]);a((0,d.useMemo)(()=>I&&!w&&i&&O?{id:h,order:m,node:(0,f.jsx)(u,{transparent:!0,items:Q,supportedShapes:[`grid`],grid:{width:V,height:H},selectedId:g,onSelect:()=>{},onShapeChange:$,onDrawComplete:()=>{},drawingKind:null})}:null,[I,w,i,O,Q,$,V,H]));let te=!w&&i!==null&&O!==null;return r?(0,f.jsx)(e,{title:`Motion Zones`,icon:(0,f.jsx)(p,{className:`h-3.5 w-3.5 text-foreground-subtle`}),children:(0,f.jsx)(`div`,{className:`flex flex-col gap-3`,children:w?(0,f.jsx)(`p`,{className:`${s} leading-relaxed`,children:`This camera doesn't expose an on-board motion zones grid.`}):te?(0,f.jsxs)(f.Fragment,{children:[(0,f.jsxs)(`p`,{className:`${s} leading-relaxed`,children:[`Toggle `,(0,f.jsx)(`strong`,{className:`text-foreground`,children:`Edit grid`}),` to paint the region directly on the live frame, then `,(0,f.jsx)(`strong`,{className:`text-foreground`,children:`Save`}),` to push the mask to the camera. Pick a bigger`,` `,(0,f.jsx)(`strong`,{className:`text-foreground`,children:`Cell size`}),` for quicker, broad-stroke painting — it's resampled to the camera's native `,i.grid.width,`×`,i.grid.height,` grid on save (×1 is the finest).`]}),(0,f.jsxs)(`div`,{className:`flex items-center gap-2 flex-wrap`,children:[(0,f.jsx)(`button`,{type:`button`,onClick:()=>L(e=>!e),disabled:P,"aria-pressed":I,className:I?b:y,children:I?`Done editing`:`Edit grid`}),(0,f.jsx)(`button`,{type:`button`,onClick:()=>J(!0),disabled:P,className:y,children:`All on`}),(0,f.jsx)(`button`,{type:`button`,onClick:()=>J(!1),disabled:P,className:y,children:`All off`}),(0,f.jsx)(`button`,{type:`button`,onClick:Y,disabled:P,className:y,children:`Invert`}),(0,f.jsxs)(`div`,{className:`flex items-center gap-1 ml-1`,role:`group`,"aria-label":`Cell size`,children:[(0,f.jsx)(`span`,{className:`${s} mr-0.5`,children:`Cell size`}),_.map(e=>(0,f.jsxs)(`button`,{type:`button`,onClick:()=>Z(e),disabled:P,"aria-pressed":M===e,title:e===1?`Camera grid ${z}×${B} (finest)`:`${C(z,e)}×${C(B,e)} painting grid · cells ×${e} bigger`,className:M===e?b:y,children:[`×`,e]},e))]}),(0,f.jsxs)(`span`,{className:`${s} ml-1 tabular-nums`,children:[G,` / `,K,` cells · `,i.grid.width,`×`,i.grid.height,M===1?``:` · paint ${V}×${H}`]}),(0,f.jsx)(`span`,{className:`flex-1`}),(0,f.jsx)(`button`,{type:`button`,onClick:X,disabled:P||!W,className:`rounded-md border border-border bg-surface px-2 py-1 text-[11px] text-foreground-subtle hover:bg-surface-hover disabled:opacity-40 transition-colors`,children:`Revert`}),(0,f.jsx)(`button`,{type:`button`,onClick:()=>void ee(),disabled:P||!W,className:b,children:P?`Saving…`:`Save`})]})]}):(0,f.jsx)(`p`,{className:`${s} leading-relaxed`,children:`Loading the camera's grid…`})})}):null}export{D as MotionZonesSettings};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{a as e,c as t,d as n,f as r,g as i,i as a,l as o,n as s,o as c,r as l,s as u,t as d,u as ee}from"./index-
|
|
1
|
+
import{a as e,c as t,d as n,f as r,g as i,i as a,l as o,n as s,o as c,r as l,s as u,t as d,u as ee}from"./index-B2ux2xJ7.js";import{MaskShapeCanvas as te}from"./MaskShapeCanvas-DI4BY7W2-DlI3udxg.js";var f=i(r(),1),p=i(n(),1),m=c(`hexagon`,[[`path`,{d:`M21 16V8a2 2 0 0 0-1-1.73l-7-4a2 2 0 0 0-2 0l-7 4A2 2 0 0 0 3 8v8a2 2 0 0 0 1 1.73l7 4a2 2 0 0 0 2 0l7-4A2 2 0 0 0 21 16z`,key:`yt0hxn`}]]),h=120,g=`privacy-mask`,_=`rounded-md border border-border bg-surface px-2 py-1 text-[11px] font-medium text-foreground-subtle hover:bg-surface-hover disabled:opacity-40 transition-colors`,v=`rounded-md border border-primary/50 bg-primary/15 px-2.5 py-1 text-[11px] font-medium text-primary hover:bg-primary/25 disabled:opacity-40 transition-colors`;function y(e){return e.kind===`rect`||e.kind===`polygon`?e:null}function b(e){let t=new Set(e.map(e=>e.id)),n=0;for(;t.has(n);)n+=1;return n}function x(e,t){if(e.length!==t.length)return!1;for(let n=0;n<e.length;n+=1)if(JSON.stringify(e[n])!==JSON.stringify(t[n]))return!1;return!0}function S({deviceId:n}){let r=t(ee().trpcClient,n),[i,c]=(0,f.useState)(null),[S,C]=(0,f.useState)(!1),[w,T]=(0,f.useState)(null),[E,D]=(0,f.useState)(null),[O,k]=(0,f.useState)(!1),[A,j]=(0,f.useState)(!1),[M,N]=(0,f.useState)(null),[P,F]=(0,f.useState)(null),I=(0,f.useRef)(!1);(0,f.useEffect)(()=>{if(!r)return;let e=!1;return I.current=!1,c(null),C(!1),T(null),D(null),j(!1),N(null),F(null),(async()=>{try{let t=await r.privacyMask?.getOptions({});if(e)return;if(!t)throw Error(`device proxy not ready`);if(c(t),I.current)return;let n=await r.privacyMask?.getStatus({});if(e)return;if(!n)throw Error(`device proxy not ready`);I.current=!0;let i={enabled:n.enabled,regions:n.regions};D(i),T(i)}catch(t){if(e)return;u(t)?C(!0):console.error(`Privacy Mask load failed`,t)}})(),()=>{e=!0}},[r]);let L=(0,f.useMemo)(()=>w!==null&&E!==null&&(w.enabled!==E.enabled||!x(w.regions,E.regions)),[w,E]),R=w?w.regions.length:0,z=i?i.maxRegions:0,B=(0,f.useRef)(0);(0,f.useEffect)(()=>{B.current=z},[z]);let V=z>0&&R>=z,H=(0,f.useCallback)(()=>{T(e=>e&&{...e,enabled:!e.enabled})},[]),U=(0,f.useCallback)(e=>{N(typeof e==`number`?e:null)},[]),W=(0,f.useMemo)(()=>w?w.regions.map(e=>({id:e.id,shape:e.shape,enabled:e.enabled,label:`Zone ${String(e.id)}`})):[],[w]),G=(0,f.useCallback)((e,t)=>{let n=y(t);n&&T(t=>t&&{...t,regions:t.regions.map(t=>t.id===e?{...t,shape:n}:t)})},[]),K=(0,f.useCallback)(e=>{let t=y(e);t&&(F(null),T(e=>{if(!e)return e;let n=B.current;if(n>0&&e.regions.length>=n)return e;let r=b(e.regions),i={id:r,enabled:!0,shape:t};return N(r),{...e,regions:[...e.regions,i]}}))},[]),q=(0,f.useCallback)(e=>{j(!0),N(null),F(e)},[]),J=(0,f.useCallback)(e=>{j(!0),F(null),N(e)},[]),Y=(0,f.useCallback)(e=>{N(t=>t===e?null:t),T(t=>t&&{...t,regions:t.regions.filter(t=>t.id!==e)})},[]),X=(0,f.useCallback)(()=>{F(null),N(null),E&&T({enabled:E.enabled,regions:E.regions})},[E]),Z=(0,f.useCallback)(async()=>{if(!(!r||!w)){k(!0);try{await r.privacyMask?.setMask({patch:{enabled:w.enabled,regions:[...w.regions]}});let e=await r.privacyMask?.getStatus({});if(e){let t={enabled:e.enabled,regions:e.regions};D(t),T(t)}}catch(e){console.error(`Privacy Mask save failed`,e)}finally{k(!1)}}},[r,w]),ne=(0,f.useCallback)(()=>{j(e=>(e&&(F(null),N(null)),!e))},[]),Q=i?.supportedShapes??[];o((0,f.useMemo)(()=>A&&!S&&i&&w?{id:g,order:h,node:(0,p.jsx)(te,{transparent:!0,items:W,supportedShapes:Q,polygonVertices:i.polygonVertices,selectedId:M,onSelect:U,onShapeChange:G,onDrawComplete:K,drawingKind:P})}:null,[A,S,i,w,W,Q,M,U,G,K,P]));let re=i?.supportedShapes.includes(`rect`)??!1,ie=i?.supportedShapes.includes(`polygon`)??!1,$=i!==null&&(i.maxRegions<=0||i.supportedShapes.length===0),ae=!S&&!$&&i!==null&&w!==null;return r?(0,p.jsx)(e,{title:`Privacy Mask`,icon:(0,p.jsx)(d,{className:`h-3.5 w-3.5 text-foreground-subtle`}),children:(0,p.jsx)(`div`,{className:`flex flex-col gap-3`,children:S||$?(0,p.jsx)(`p`,{className:`${l} leading-relaxed`,children:`This camera doesn't support an on-board privacy mask.`}):ae?(0,p.jsxs)(p.Fragment,{children:[(0,p.jsxs)(`p`,{className:`${l} leading-relaxed`,children:[`Toggle `,(0,p.jsx)(`strong`,{className:`text-foreground`,children:`Edit mask`}),` to draw blanked-out zones on the live frame, then `,(0,p.jsx)(`strong`,{className:`text-foreground`,children:`Save`}),` to push them to the camera. Drag a rectangle to move, its corner to resize; drag polygon vertices, click an edge midpoint to add one, or right-click a vertex to remove it.`]}),(0,p.jsxs)(`div`,{className:`flex items-center gap-2 flex-wrap`,children:[(0,p.jsx)(`button`,{type:`button`,onClick:ne,disabled:O,"aria-pressed":A,className:A?v:_,children:A?`Done editing`:`Edit mask`}),(0,p.jsx)(`button`,{type:`button`,onClick:H,disabled:O,"aria-pressed":w.enabled,className:w.enabled?v:_,children:w.enabled?`Mask on`:`Mask off`}),re&&(0,p.jsx)(`button`,{type:`button`,onClick:()=>q(`rect`),disabled:O||V,"aria-pressed":P===`rect`,className:P===`rect`?v:_,title:V?`Maximum zones reached`:`Add a rectangle zone`,children:`+ Rect`}),ie&&(0,p.jsx)(`button`,{type:`button`,onClick:()=>q(`polygon`),disabled:O||V,"aria-pressed":P===`polygon`,className:P===`polygon`?v:_,title:V?`Maximum zones reached`:`Add a polygon zone`,children:`+ Polygon`}),(0,p.jsxs)(`span`,{className:`${l} ml-1 tabular-nums`,children:[R,` / `,z,` zones`]}),(0,p.jsx)(`span`,{className:`flex-1`}),(0,p.jsx)(`button`,{type:`button`,onClick:X,disabled:O||!L,className:`rounded-md border border-border bg-surface px-2 py-1 text-[11px] text-foreground-subtle hover:bg-surface-hover disabled:opacity-40 transition-colors`,children:`Revert`}),(0,p.jsx)(`button`,{type:`button`,onClick:()=>void Z(),disabled:O||!L,className:v,children:O?`Saving…`:`Save`})]}),R>0?(0,p.jsx)(`div`,{className:`flex flex-col gap-1`,children:w.regions.map(e=>{let t=M===e.id,n=e.shape.kind===`polygon`?m:s;return(0,p.jsxs)(`div`,{className:`flex items-center gap-2 rounded-md border px-2 py-1 transition-colors ${t?`border-primary/50 bg-primary/10`:`border-border bg-surface`}`,children:[(0,p.jsxs)(`button`,{type:`button`,onClick:()=>J(e.id),disabled:O,className:`flex flex-1 items-center gap-2 text-left text-[11px] font-medium text-foreground-subtle hover:text-foreground disabled:opacity-40 transition-colors`,children:[(0,p.jsx)(n,{className:`h-3.5 w-3.5 shrink-0`}),(0,p.jsxs)(`span`,{children:[`Zone `,e.id]}),(0,p.jsx)(`span`,{className:`text-foreground-faint capitalize`,children:e.shape.kind})]}),(0,p.jsx)(`button`,{type:`button`,onClick:()=>Y(e.id),disabled:O,"aria-label":`Delete zone ${String(e.id)}`,title:`Delete zone`,className:`inline-flex h-6 w-6 items-center justify-center rounded border border-border bg-surface text-foreground-subtle hover:border-red-400/40 hover:bg-red-500/10 hover:text-red-400 disabled:opacity-40 transition-colors`,children:(0,p.jsx)(a,{className:`h-3.5 w-3.5`})})]},e.id)})}):null]}):(0,p.jsx)(`p`,{className:`${l} leading-relaxed`,children:`Loading the camera's privacy mask…`})})}):null}export{S as PrivacyMaskSettings};
|