dynamsoft-barcode-reader-bundle 11.2.4000 → 11.4.2000-beta-202604162228

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.
Files changed (58) hide show
  1. package/LEGAL.txt +8 -1
  2. package/LICENSE +1 -1
  3. package/README.html +541 -115
  4. package/README.md +628 -125
  5. package/dist/dbr.bundle.d.ts +1577 -2689
  6. package/dist/dbr.bundle.esm.js +3 -3
  7. package/dist/dbr.bundle.js +3 -3
  8. package/dist/dbr.bundle.mjs +3 -3
  9. package/dist/dbr.bundle.worker.js +3 -3
  10. package/dist/dynamsoft-barcode-reader-bundle-ml-simd-pthread.js +1 -1
  11. package/dist/dynamsoft-barcode-reader-bundle-ml-simd-pthread.wasm +0 -0
  12. package/dist/dynamsoft-barcode-reader-bundle-ml-simd.js +1 -1
  13. package/dist/dynamsoft-barcode-reader-bundle-ml-simd.wasm +0 -0
  14. package/dist/dynamsoft-barcode-reader-bundle.js +1 -1
  15. package/dist/dynamsoft-barcode-reader-bundle.wasm +0 -0
  16. package/dist/models/Code128Decoder.data +0 -0
  17. package/dist/models/Code39ITFDecoder.data +0 -0
  18. package/dist/models/DataMatrixQRCodeDeblur.data +0 -0
  19. package/dist/models/DataMatrixQRCodeLocalization.data +0 -0
  20. package/dist/models/EAN13Decoder.data +0 -0
  21. package/dist/models/OneDDeblur.data +0 -0
  22. package/dist/models/OneDLocalization.data +0 -0
  23. package/dist/models/PDF417Deblur.data +0 -0
  24. package/dist/models/PDF417Localization.data +0 -0
  25. package/dist/parser-resources/AADHAAR.data +0 -0
  26. package/dist/parser-resources/AAMVA_DL_ID.data +1 -0
  27. package/dist/parser-resources/GS1_AI.data +66 -0
  28. package/dist/parser-resources/MRTD.data +1 -0
  29. package/dist/parser-resources/SOUTH_AFRICA_DL.data +1 -0
  30. package/dist/parser-resources/VIN.data +0 -0
  31. package/dist/templates/DBR-PresetTemplates.json +9 -22
  32. package/dist/ui/barcode-scanner.ui.xml +271 -108
  33. package/dist/ui/dce.rtu.ui.xml +431 -0
  34. package/dist/ui/dce.ui.v5.xml +470 -0
  35. package/dist/ui/dce.ui.xml +138 -114
  36. package/dist/ui/dls.license.dialog.html +1 -1
  37. package/package.json +16 -15
  38. package/samples.url +1 -1
  39. package/API_Reference_BarcodeScanner.url +0 -2
  40. package/API_Reference_Foundational.url +0 -2
  41. package/dist/parser-resources/AADHAAR.dcpres +0 -1
  42. package/dist/parser-resources/AADHAAR_Map.txt +0 -3
  43. package/dist/parser-resources/AAMVA_DL_ID.dcpres +0 -1
  44. package/dist/parser-resources/AAMVA_DL_ID_WITH_MAG_STRIPE.dcpres +0 -1
  45. package/dist/parser-resources/AAMVA_Map.txt +0 -70
  46. package/dist/parser-resources/GS1_AI.dcpres +0 -1
  47. package/dist/parser-resources/GS1_AI_Map.txt +0 -643
  48. package/dist/parser-resources/MRTD_Map.txt +0 -255
  49. package/dist/parser-resources/MRTD_TD1_ID.dcpres +0 -1
  50. package/dist/parser-resources/MRTD_TD2_FRENCH_ID.dcpres +0 -1
  51. package/dist/parser-resources/MRTD_TD2_ID.dcpres +0 -1
  52. package/dist/parser-resources/MRTD_TD2_VISA.dcpres +0 -1
  53. package/dist/parser-resources/MRTD_TD3_PASSPORT.dcpres +0 -1
  54. package/dist/parser-resources/MRTD_TD3_VISA.dcpres +0 -1
  55. package/dist/parser-resources/SOUTH_AFRICA_DL.dcpres +0 -1
  56. package/dist/parser-resources/SOUTH_AFRICA_DL_Map.txt +0 -3
  57. package/dist/parser-resources/VIN.dcpres +0 -1
  58. package/dist/parser-resources/VIN_Map.txt +0 -150
@@ -0,0 +1,470 @@
1
+
2
+ <div style="position:relative;width:100%;height:100%;min-width:100px;min-height:100px;background:#000;font-family:Arial,Helvetica,sans-serif;pointer-events:none;user-select:none;">
3
+ <div class="dm-camera-core-container" style="width:100%;height:100%;pointer-events:initial;"></div>
4
+ <div class="dm-camera-mn-torch" title="torch" style="display:none;">
5
+ <div class="dm-camera-mn-torch-auto">
6
+ <svg viewBox="0 0 512 512" fill="#fff">
7
+ <path d="M220,45 74.5,255 212.5,277.5 184,429 329.5,219 191.5,196.5Z"/>
8
+ <text x="250" y="480" font-size="256" font-family="Verdana">A</text>
9
+ </svg>
10
+ </div>
11
+ <div class="dm-camera-mn-torch-on">
12
+ <svg viewBox="0 0 512 512" fill="#fff">
13
+ <path d="M280,0 86,280 270,310 232,512 426,232 242,202Z"/>
14
+ </svg>
15
+ </div>
16
+ <div class="dm-camera-mn-torch-off">
17
+ <svg viewBox="0 0 512 512" fill="#fff">
18
+ <defs>
19
+ <mask id="dm-camera-mn-torch-off-mask">
20
+ <rect width="512" height="512" fill="#fff"/>
21
+ <path d="M116,70 406,392 396,442 106,120Z" fill="#000"/>
22
+ </mask>
23
+ </defs>
24
+ <path d="M280,0 86,280 270,310 232,512 426,232 242,202Z" mask="url(#dm-camera-mn-torch-off-mask)"/>
25
+ <path d="M118,85 408,407 394,427 104,105Z"/>
26
+ </svg>
27
+ </div>
28
+ </div>
29
+ <div class="dm-camera-mn-beep" title="beep" style="display:none;">
30
+ <div class="dm-camera-mn-beep-on">
31
+ <svg viewBox="0 0 512 512" stroke="#fff" fill="#fff">
32
+ <path d="M140,148 50,148 50,364 140,364 226,482 226,30Z" />
33
+ <path d="M260,168A128,128,0,0,1,260,344" stroke-width="16" fill="transparent"/>
34
+ <path d="M310,118A192,192,0,0,1,310,394" stroke-width="16" fill="transparent"/>
35
+ <path d="M360,68A256,256,0,0,1,360,444" stroke-width="16" fill="transparent"/>
36
+ </svg>
37
+ </div>
38
+ <div class="dm-camera-mn-beep-off">
39
+ <svg viewBox="0 0 512 512" stroke="#fff" fill="#fff">
40
+ <path d="M140,148 50,148 50,364 140,364 226,482 226,30Z" />
41
+ <path d="M260,168 436,344" stroke-width="16"/>
42
+ <path d="M436,168 260,344" stroke-width="16"/>
43
+ </svg>
44
+ </div>
45
+ </div>
46
+ <div class="dm-camera-mn-vibrate" title="vibrate" style="display:none;">
47
+ <div class="dm-camera-mn-vibrate-on">
48
+ <svg viewBox="0 0 512 512" stroke="#fff" fill="#fff">
49
+ <path d="M60,180 180,60 452,332 332,452Z" stroke-width="16" stroke-linejoin="round" fill="transparent"/>
50
+ <path d="M67,247 70,310 133,313 136,376 199,379 202,442 265,445" stroke-width="16" stroke-linecap="round" stroke-linejoin="round" fill="transparent"/>
51
+ <path d="M27,287 30,350 93,353 96,416 159,419 162,482 225,485" stroke-width="16" stroke-linecap="round" stroke-linejoin="round" fill="transparent"/>
52
+ <path d="M247,67 310,70 313,133 376,136 379,199 442,202 445,265" stroke-width="16" stroke-linecap="round" stroke-linejoin="round" fill="transparent"/>
53
+ <path d="M287,27 350,30 353,93 416,96 419,159 482,162 485,225" stroke-width="16" stroke-linecap="round" stroke-linejoin="round" fill="transparent"/>
54
+ </svg>
55
+ </div>
56
+ <div class="dm-camera-mn-vibrate-off">
57
+ <svg viewBox="0 0 512 512" stroke="#fff" fill="#fff">
58
+ <path d="M60,180 180,60 452,332 332,452Z" stroke-width="16" stroke-linejoin="round" fill="transparent"/>
59
+ <path d="M67,247 70,310 133,313 136,376 199,379 202,442 265,445" stroke-width="16" stroke-linecap="round" stroke-linejoin="round" fill="transparent"/>
60
+ <path d="M27,287 30,350 93,353 96,416 159,419 162,482 225,485" stroke-width="16" stroke-linecap="round" stroke-linejoin="round" fill="transparent"/>
61
+ <path d="M300,122 480,122" stroke-width="16" stroke-linecap="round"/>
62
+ <path d="M390,32 390,212" stroke-width="16" stroke-linecap="round"/>
63
+ </svg>
64
+ </div>
65
+ </div>
66
+ <div class="dm-camera-mn-resolution-box" title="camera settings" style="display:none;">720P</div>
67
+ <div class="dm-camera-mn-zoom" style="display:none;">- <span>1.0X</span> -</div>
68
+ <div class="dm-camera-mn-toast" style="display:none;"></div>
69
+ <div class="dm-camera-mn-camera-close" style="display:none;" title="close">
70
+ <svg viewBox="0 0 512 512" fill="#fff">
71
+ <defs>
72
+ <mask id="dm-camera-mn-camera-close-mask">
73
+ <rect width="512" height="512" fill="#fff"/>
74
+ <path d="M128,128 384,384" stroke-width="60" stroke="#000"/>
75
+ <path d="M384,128 128,384" stroke-width="60" stroke="#000"/>
76
+ </mask>
77
+ </defs>
78
+ <circle cx="256" cy="256" r="256" mask="url(#dm-camera-mn-camera-close-mask)"/>
79
+ </svg>
80
+ </div>
81
+ <div class="dm-camera-mn-take-photo" style="display:none;" title="take photo"></div>
82
+ <div class="dm-camera-mn-camera-switch" title="switch camera" style="display:none;">
83
+ <svg viewBox="0 0 512 512" stroke="#fff" fill="#fff">
84
+ <defs>
85
+ <mask id="dm-camera-mn-camera-switch-mask">
86
+ <rect width="512" height="512" fill="#fff"/>
87
+ <path d="M512,148 256,148" stroke-width="80" stroke="#000"/>
88
+ <path d="M0,364 256,364" stroke-width="80" stroke="#000"/>
89
+ </mask>
90
+ </defs>
91
+ <circle cx="256" cy="256" r="235" stroke-width="40" fill="transparent" mask="url(#dm-camera-mn-camera-switch-mask)"/>
92
+ <path d="M450,108 300,108 400,70Z" stroke-width="0"/>
93
+ <path d="M62,404 212,404 112,442Z" stroke-width="0"/>
94
+ </svg>
95
+ </div>
96
+ <svg class="dm-camera-mn-msg-poweredby" viewBox="0 0 94 17">
97
+ <path d="M0.9,14V4.3h2.3c0.6,0,1,0.1,1.4,0.3c0.3,0.2,0.6,0.5,0.7,0.9s0.2,0.8,0.2,1.4c0,0.5-0.1,0.9-0.2,1.3
98
+ C5.1,8.5,4.9,8.8,4.5,9.1C4.2,9.3,3.7,9.4,3.2,9.4H1.8V14H0.9z M1.8,8.7h1.2c0.4,0,0.7-0.1,1-0.2S4.3,8.2,4.4,8
99
+ c0.1-0.3,0.2-0.6,0.2-1.1c0-0.5,0-0.9-0.1-1.2C4.3,5.4,4.2,5.2,3.9,5.1S3.4,5,2.9,5H1.8V8.7z" />
100
+ <path d="M8.1,14.1c-0.5,0-0.8-0.1-1.1-0.3s-0.5-0.5-0.6-0.9s-0.2-0.9-0.2-1.4V9.6c0-0.6,0.1-1,0.2-1.4
101
+ C6.5,7.8,6.7,7.5,7,7.3S7.6,7,8.1,7C8.6,7,9,7.1,9.2,7.3s0.5,0.5,0.6,0.9C9.9,8.5,9.9,9,9.9,9.6v1.9c0,0.6-0.1,1-0.2,1.4
102
+ c-0.1,0.4-0.3,0.7-0.6,0.9S8.6,14.1,8.1,14.1z M8.1,13.4c0.3,0,0.5-0.1,0.7-0.2C8.9,13,9,12.8,9,12.5c0-0.3,0-0.6,0-1v-2
103
+ c0-0.4,0-0.7,0-1C9,8.2,8.9,8,8.8,7.9C8.6,7.7,8.4,7.6,8.1,7.6c-0.3,0-0.5,0.1-0.7,0.2C7.3,8,7.2,8.2,7.2,8.5c0,0.3-0.1,0.6-0.1,1
104
+ v2c0,0.4,0,0.7,0.1,1c0,0.3,0.1,0.5,0.3,0.7C7.6,13.4,7.8,13.4,8.1,13.4z" />
105
+ <path d="M12,14l-1.1-6.9h0.7l0.9,5.8l1.1-5.8h0.8l1.1,5.8l0.8-5.8H17L15.9,14H15l-1.1-5.6L12.8,14H12z" />
106
+ <path d="M19.8,14.1c-0.4,0-0.8-0.1-1.1-0.3s-0.5-0.5-0.6-0.9c-0.1-0.4-0.2-0.9-0.2-1.6V9.6c0-0.7,0.1-1.2,0.2-1.6
107
+ c0.1-0.4,0.3-0.7,0.6-0.8C19,7,19.3,7,19.8,7c0.5,0,0.9,0.1,1.1,0.3c0.3,0.2,0.4,0.5,0.5,0.9c0.1,0.4,0.1,1,0.1,1.6v0.6h-2.8v1.2
108
+ c0,0.4,0,0.8,0.1,1.1c0.1,0.3,0.2,0.4,0.3,0.6s0.3,0.2,0.6,0.2c0.2,0,0.3,0,0.5-0.1c0.1-0.1,0.3-0.2,0.3-0.4s0.1-0.5,0.1-0.8v-0.5
109
+ h0.9V12c0,0.6-0.1,1.1-0.4,1.5S20.4,14.1,19.8,14.1z M18.8,9.9h1.9V9.4c0-0.4,0-0.7-0.1-0.9c0-0.3-0.1-0.5-0.3-0.6S20,7.6,19.8,7.6
110
+ c-0.2,0-0.4,0.1-0.6,0.2c-0.1,0.1-0.3,0.3-0.3,0.6c-0.1,0.3-0.1,0.7-0.1,1.1V9.9z" />
111
+ <path d="M22.8,14V7.1h0.9V8c0.2-0.4,0.5-0.6,0.8-0.8C24.8,7.1,25,7,25.3,7c0,0,0,0,0.1,0s0.1,0,0.1,0v0.9
112
+ c-0.1,0-0.1,0-0.2-0.1c-0.1,0-0.2,0-0.2,0c-0.3,0-0.5,0.1-0.7,0.2c-0.2,0.1-0.4,0.3-0.6,0.6V14H22.8z" />
113
+ <path d="M28,14.1c-0.4,0-0.8-0.1-1.1-0.3s-0.5-0.5-0.6-0.9c-0.1-0.4-0.2-0.9-0.2-1.6V9.6c0-0.7,0.1-1.2,0.2-1.6
114
+ c0.1-0.4,0.3-0.7,0.6-0.8C27.3,7,27.6,7,28,7c0.5,0,0.9,0.1,1.1,0.3c0.3,0.2,0.4,0.5,0.5,0.9c0.1,0.4,0.1,1,0.1,1.6v0.6H27v1.2
115
+ c0,0.4,0,0.8,0.1,1.1c0.1,0.3,0.2,0.4,0.3,0.6s0.3,0.2,0.6,0.2c0.2,0,0.3,0,0.5-0.1c0.1-0.1,0.3-0.2,0.3-0.4s0.1-0.5,0.1-0.8v-0.5
116
+ h0.9V12c0,0.6-0.1,1.1-0.4,1.5S28.7,14.1,28,14.1z M27,9.9H29V9.4c0-0.4,0-0.7-0.1-0.9c0-0.3-0.1-0.5-0.3-0.6S28.3,7.6,28,7.6
117
+ c-0.2,0-0.4,0.1-0.6,0.2c-0.1,0.1-0.3,0.3-0.3,0.6C27.1,8.6,27,9,27,9.5V9.9z" />
118
+ <path d="M32.6,14.1c-0.6,0-1-0.2-1.3-0.7c-0.3-0.4-0.4-1.2-0.4-2.2V9.9c0-0.6,0-1.1,0.1-1.6c0.1-0.4,0.2-0.8,0.5-1
119
+ c0.2-0.2,0.6-0.4,1-0.4C32.8,7,33,7,33.2,7.1c0.2,0.1,0.4,0.3,0.5,0.4V4.3h0.9V14h-0.9v-0.5c-0.1,0.2-0.3,0.3-0.5,0.4
120
+ C33,14,32.8,14.1,32.6,14.1z M32.7,13.4c0.2,0,0.4,0,0.5-0.1c0.2-0.1,0.3-0.2,0.5-0.3V8.1c-0.1-0.1-0.3-0.2-0.4-0.3
121
+ c-0.2-0.1-0.4-0.2-0.6-0.2c-0.4,0-0.6,0.2-0.8,0.5S31.8,9,31.8,9.6v1.6c0,0.5,0,0.9,0.1,1.2c0.1,0.3,0.1,0.6,0.3,0.7
122
+ C32.3,13.3,32.5,13.4,32.7,13.4z" />
123
+ <path d="M40.5,14.1c-0.3,0-0.5-0.1-0.7-0.2c-0.2-0.1-0.4-0.3-0.5-0.4V14h-0.9V4.3h0.9v3.4c0.1-0.2,0.3-0.3,0.5-0.5
124
+ C40.1,7,40.3,7,40.6,7C41,7,41.2,7,41.4,7.2c0.2,0.2,0.4,0.4,0.5,0.6c0.1,0.3,0.2,0.6,0.2,0.9s0.1,0.7,0.1,1v1.5
125
+ c0,0.6,0,1.1-0.1,1.5c-0.1,0.4-0.3,0.8-0.5,1C41.3,14,41,14.1,40.5,14.1z M40.4,13.4c0.3,0,0.5-0.1,0.6-0.3
126
+ c0.1-0.2,0.2-0.4,0.3-0.8s0.1-0.7,0.1-1.2V9.7c0-0.5,0-0.8-0.1-1.1S41.1,8,41,7.9c-0.1-0.2-0.3-0.2-0.6-0.2c-0.2,0-0.4,0.1-0.6,0.2
127
+ c-0.2,0.1-0.3,0.2-0.5,0.4v4.7c0.1,0.1,0.3,0.3,0.5,0.4C40,13.4,40.2,13.4,40.4,13.4z" />
128
+ <path d="M43.2,15.7V15c0.4,0,0.7,0,0.9-0.1c0.2-0.1,0.3-0.1,0.4-0.3c0.1-0.1,0.1-0.2,0.1-0.4c0-0.1,0-0.3-0.1-0.5
129
+ c0-0.2-0.1-0.4-0.2-0.6L43,7.1h0.9l1.2,5.9l1.2-5.9h0.9l-1.7,7.4c-0.1,0.3-0.2,0.5-0.3,0.7c-0.2,0.2-0.4,0.3-0.6,0.4
130
+ c-0.3,0.1-0.6,0.1-1,0.1H43.2z" />
131
+ <path d="M50.6,14V4.3h2.1c0.7,0,1.2,0.1,1.6,0.4c0.4,0.2,0.6,0.6,0.8,1c0.2,0.4,0.2,0.9,0.2,1.5V11
132
+ c0,0.6-0.1,1.1-0.2,1.6s-0.4,0.8-0.8,1S53.5,14,52.8,14H50.6z M51.5,13.3h1.2c0.5,0,0.9-0.1,1.1-0.3s0.4-0.5,0.5-0.9
133
+ s0.1-0.8,0.1-1.3V7.2c0-0.5,0-0.9-0.1-1.2s-0.2-0.6-0.5-0.8S53.2,5,52.7,5h-1.2V13.3z" />
134
+ <path d="M56.5,15.7V15c0.4,0,0.7,0,0.9-0.1c0.2-0.1,0.3-0.1,0.4-0.3c0.1-0.1,0.1-0.2,0.1-0.4c0-0.1,0-0.3-0.1-0.5
135
+ c0-0.2-0.1-0.4-0.2-0.6l-1.4-6.1h0.9l1.2,5.9l1.2-5.9h0.9l-1.7,7.4c-0.1,0.3-0.2,0.5-0.3,0.7s-0.4,0.3-0.6,0.4s-0.6,0.1-1,0.1H56.5
136
+ z" />
137
+ <path d="M61.3,14V7.1h0.9v0.7c0.2-0.2,0.5-0.4,0.8-0.6C63.2,7,63.5,7,63.8,7C64,7,64.2,7,64.4,7.1s0.3,0.3,0.4,0.5
138
+ c0.1,0.2,0.1,0.5,0.1,0.8V14H64V8.6c0-0.4-0.1-0.6-0.2-0.8c-0.1-0.1-0.3-0.2-0.5-0.2c-0.2,0-0.4,0.1-0.6,0.2s-0.4,0.3-0.6,0.5V14
139
+ H61.3z" />
140
+ <path d="M67.4,14.1c-0.3,0-0.5-0.1-0.7-0.2c-0.2-0.1-0.4-0.3-0.5-0.6C66,13.1,66,12.8,66,12.6c0-0.4,0.1-0.7,0.2-0.9
141
+ s0.3-0.5,0.5-0.7c0.2-0.2,0.5-0.4,0.9-0.6c0.4-0.2,0.8-0.4,1.3-0.6V9.3c0-0.4,0-0.8-0.1-1c-0.1-0.2-0.1-0.4-0.3-0.5
142
+ c-0.1-0.1-0.3-0.2-0.5-0.2c-0.2,0-0.3,0-0.5,0.1c-0.1,0.1-0.3,0.2-0.3,0.4c-0.1,0.2-0.1,0.4-0.1,0.7V9l-0.9,0
143
+ c0-0.7,0.2-1.2,0.5-1.6C66.8,7.1,67.3,7,68,7c0.6,0,1.1,0.2,1.3,0.6c0.3,0.4,0.4,1,0.4,1.7v3.4c0,0.1,0,0.3,0,0.5
144
+ c0,0.2,0,0.4,0,0.5c0,0.2,0,0.3,0,0.4h-0.8c0-0.2-0.1-0.3-0.1-0.5c0-0.2,0-0.3-0.1-0.5c-0.1,0.3-0.3,0.5-0.5,0.7
145
+ S67.7,14.1,67.4,14.1z M67.6,13.4c0.2,0,0.3,0,0.5-0.1c0.1-0.1,0.3-0.2,0.4-0.3s0.2-0.3,0.3-0.4v-2.2c-0.3,0.2-0.6,0.3-0.9,0.5
146
+ c-0.2,0.1-0.4,0.3-0.6,0.4c-0.2,0.1-0.3,0.3-0.3,0.5s-0.1,0.4-0.1,0.6c0,0.4,0.1,0.6,0.2,0.8C67.2,13.3,67.4,13.4,67.6,13.4z" />
147
+ <path d="M70.9,14V7.1h0.8v0.7c0.2-0.3,0.5-0.5,0.8-0.6c0.3-0.1,0.6-0.2,0.9-0.2c0.2,0,0.5,0.1,0.7,0.2s0.3,0.4,0.4,0.7
148
+ c0.2-0.3,0.5-0.5,0.8-0.7c0.3-0.2,0.6-0.2,0.9-0.2c0.2,0,0.4,0,0.6,0.1s0.3,0.3,0.4,0.5c0.1,0.2,0.2,0.5,0.2,0.9V14h-0.8V8.6
149
+ c0-0.4-0.1-0.7-0.2-0.8s-0.3-0.2-0.5-0.2c-0.2,0-0.4,0.1-0.7,0.2S74.7,8,74.5,8.3c0,0,0,0.1,0,0.1s0,0.1,0,0.1V14h-0.8V8.6
150
+ c0-0.4-0.1-0.7-0.2-0.8c-0.1-0.1-0.3-0.2-0.5-0.2c-0.2,0-0.4,0.1-0.7,0.2c-0.2,0.1-0.4,0.3-0.6,0.5V14H70.9z" />
151
+ <path d="M80.2,14.1c-0.6,0-1-0.2-1.3-0.5c-0.3-0.4-0.5-0.8-0.6-1.4l0.7-0.2c0,0.5,0.2,0.9,0.4,1.2
152
+ c0.2,0.2,0.5,0.4,0.8,0.4c0.3,0,0.5-0.1,0.7-0.3c0.2-0.2,0.2-0.4,0.2-0.7c0-0.2-0.1-0.5-0.2-0.7c-0.1-0.2-0.4-0.5-0.6-0.7l-0.9-0.8
153
+ c-0.3-0.3-0.5-0.5-0.7-0.8c-0.2-0.3-0.2-0.6-0.2-0.9c0-0.3,0.1-0.6,0.2-0.8c0.1-0.2,0.3-0.4,0.6-0.5C79.5,7,79.8,7,80.2,7
154
+ c0.5,0,0.9,0.2,1.2,0.5c0.3,0.3,0.4,0.8,0.4,1.3L81.2,9c0-0.3-0.1-0.6-0.1-0.8s-0.2-0.4-0.3-0.5c-0.1-0.1-0.3-0.1-0.5-0.1
155
+ c-0.3,0-0.5,0.1-0.6,0.2c-0.2,0.1-0.2,0.4-0.2,0.6c0,0.2,0,0.4,0.1,0.6c0.1,0.2,0.2,0.3,0.4,0.5l1,0.9c0.2,0.2,0.4,0.3,0.6,0.5
156
+ c0.2,0.2,0.3,0.4,0.4,0.6c0.1,0.2,0.2,0.5,0.2,0.8c0,0.4-0.1,0.7-0.2,0.9c-0.1,0.2-0.4,0.4-0.6,0.6C80.9,14,80.6,14.1,80.2,14.1z" />
157
+ <path d="M84.7,14.1c-0.5,0-0.8-0.1-1.1-0.3c-0.3-0.2-0.5-0.5-0.6-0.9s-0.2-0.9-0.2-1.4V9.6c0-0.6,0.1-1,0.2-1.4
158
+ c0.1-0.4,0.3-0.7,0.6-0.9C83.9,7.1,84.3,7,84.7,7c0.5,0,0.9,0.1,1.1,0.3s0.5,0.5,0.6,0.9c0.1,0.4,0.2,0.9,0.2,1.4v1.9
159
+ c0,0.6-0.1,1-0.2,1.4s-0.3,0.7-0.6,0.9S85.2,14.1,84.7,14.1z M84.7,13.4c0.3,0,0.5-0.1,0.7-0.2c0.1-0.2,0.2-0.4,0.3-0.7
160
+ c0-0.3,0-0.6,0-1v-2c0-0.4,0-0.7,0-1c0-0.3-0.1-0.5-0.3-0.7c-0.1-0.2-0.4-0.2-0.7-0.2c-0.3,0-0.5,0.1-0.7,0.2
161
+ c-0.1,0.2-0.2,0.4-0.3,0.7c0,0.3-0.1,0.6-0.1,1v2c0,0.4,0,0.7,0.1,1c0,0.3,0.1,0.5,0.3,0.7C84.2,13.4,84.4,13.4,84.7,13.4z" />
162
+ <path d="M88.2,14V7.7h-0.9V7.1h0.9V6.3c0-0.3,0-0.6,0.1-0.9c0.1-0.3,0.2-0.5,0.4-0.6c0.2-0.2,0.5-0.2,0.8-0.2
163
+ c0.1,0,0.2,0,0.4,0c0.1,0,0.2,0,0.3,0.1v0.6c-0.1,0-0.2,0-0.2,0c-0.1,0-0.2,0-0.2,0c-0.3,0-0.4,0.1-0.5,0.2s-0.1,0.4-0.1,0.8v0.8
164
+ h1.1v0.6h-1.1V14H88.2z" />
165
+ <path d="M92.7,14.1c-0.3,0-0.6-0.1-0.8-0.2s-0.3-0.3-0.4-0.5c-0.1-0.2-0.1-0.5-0.1-0.8V7.6h-0.9V7.1h0.9V4.9h0.9v2.1
166
+ h1.2v0.6h-1.2v4.8c0,0.3,0,0.6,0.1,0.7c0.1,0.1,0.2,0.2,0.5,0.2c0.1,0,0.2,0,0.2,0s0.2,0,0.3,0V14c-0.1,0-0.2,0-0.4,0.1
167
+ C92.9,14.1,92.8,14.1,92.7,14.1z" />
168
+ </svg>
169
+ <div class="dm-camera-mn-camera-and-resolution-settings" style="display:none;">
170
+ <div class="dm-camera-mn-cameras">
171
+ <div class="dm-camera-mn-camera-option" data-device-id="">example camera</div>
172
+ </div>
173
+ <div class="dm-camera-mn-camera-and-resolution-bar"></div>
174
+ <div class="dm-camera-mn-resolutions">
175
+ <div class="dm-camera-mn-resolution-option" data-width="640" data-height="480">480P</div>
176
+ <div class="dm-camera-mn-resolution-option" data-width="1080" data-height="720">720P</div>
177
+ <div class="dm-camera-mn-resolution-option" data-width="1920" data-height="1080">1080P</div>
178
+ <div class="dm-camera-mn-resolution-option" data-width="2560" data-height="1440">2K</div>
179
+ <div class="dm-camera-mn-resolution-option" data-width="3840" data-height="2160">4K</div>
180
+ </div>
181
+ </div>
182
+ <svg class="dce-bg-loading"
183
+ style="display:none;position:absolute;left:0;top:0;right:0;bottom:0;margin:auto;width:40%;height:40%;fill:#aaa;animation:1s linear infinite dce-rotate;"
184
+ viewBox="0 0 1792 1792">
185
+ <path d="M1760 896q0 176-68.5 336t-184 275.5-275.5 184-336 68.5-336-68.5-275.5-184-184-275.5-68.5-336q0-213 97-398.5t265-305.5 374-151v228q-221 45-366.5 221t-145.5 406q0 130 51 248.5t136.5 204 204 136.5 248.5 51 248.5-51 204-136.5 136.5-204 51-248.5q0-230-145.5-406t-366.5-221v-228q206 31 374 151t265 305.5 97 398.5z" />
186
+ </svg>
187
+ <div class="dce-bg-camera" title="Take a photo" style="display:none;position:absolute;left:0;top:0;width:100%;height:100%;cursor:pointer;pointer-events:auto;">
188
+ <svg style="position:absolute;left:0;top:0;right:0;bottom:0;margin:auto;width:40%;height:40%;fill:#aaa;"
189
+ viewBox="0 0 2048 1792">
190
+ <path d="M1024 672q119 0 203.5 84.5t84.5 203.5-84.5 203.5-203.5 84.5-203.5-84.5-84.5-203.5 84.5-203.5 203.5-84.5zm704-416q106 0 181 75t75 181v896q0 106-75 181t-181 75h-1408q-106 0-181-75t-75-181v-896q0-106 75-181t181-75h224l51-136q19-49 69.5-84.5t103.5-35.5h512q53 0 103.5 35.5t69.5 84.5l51 136h224zm-704 1152q185 0 316.5-131.5t131.5-316.5-131.5-316.5-316.5-131.5-316.5 131.5-131.5 316.5 131.5 316.5 316.5 131.5z" />
191
+ </svg>
192
+ </div>
193
+ </div>
194
+ <style>
195
+ @keyframes dce-rotate {
196
+ from { transform: rotate(0turn); }
197
+ to { transform: rotate(1turn); }
198
+ }
199
+ @keyframes dm-camera-scanlight {
200
+ from { top: 0; }
201
+ to { top: 97%; }
202
+ }
203
+
204
+ .dm-camera-mn-torch-auto,.dm-camera-mn-torch-on,.dm-camera-mn-torch-off
205
+ {position:absolute;width:max(3vmin,24px);height:max(3vmin,24px);left:12px;top:12px;padding:max(0.5vmin,4px);box-sizing:border-box;border-radius:max(1.5vmin,12px);background:rgba(100,100,100,0.5);cursor:pointer;pointer-events:initial;}
206
+
207
+ .dm-camera-mn-beep-on,.dm-camera-mn-beep-off
208
+ {position:absolute;width:max(3vmin,24px);height:max(3vmin,24px);left:calc(48px + max(3vmin,24px));padding:max(0.5vmin,4px);box-sizing:border-box;top:12px;border-radius:max(1.5vmin,12px);background:rgba(100,100,100,0.5);cursor:pointer;pointer-events:initial;}
209
+
210
+ .dm-camera-mn-vibrate-on,.dm-camera-mn-vibrate-off
211
+ {position:absolute;width:max(3vmin,24px);height:max(3vmin,24px);left:calc(84px + max(6vmin,48px));padding:max(0.25vmin,2px);box-sizing:border-box;top:12px;border-radius:max(1.5vmin,12px);background:rgba(100,100,100,0.5);cursor:pointer;pointer-events:initial;}
212
+
213
+ .dm-camera-mn-resolution-box{position:absolute;width:max(5vmin,40px);right:12px;top:12px;font-size:max(1.25vmin,10px);line-height:max(2vmin,16px);padding:max(0.5vmin,4px);box-sizing:border-box;text-align:center;color:#fff;border-radius:max(0.75vmin,6px);background:rgba(100,100,100,0.5);display:block;cursor:pointer;pointer-events:initial;user-select:none;}
214
+
215
+ .dm-camera-mn-zoom{position:absolute;font-size:max(1vmin,8px);line-height:max(3vmin,24px);left:50%;bottom:max(12.5vmin,100px);transform:translateX(-50%);color:#fff;}
216
+ .dm-camera-mn-zoom span{width:max(3vmin,24px);border-radius:max(1.5vmin,12px);text-align:center;background:rgba(100,100,100,0.5);display:inline-block;}
217
+ .dm-camera-mn-toast{position:absolute;max-width:90%;font-size:max(1.25vmin,10px);line-height:max(2vmin,16px);padding:max(0.25vmin,2px) max(0.5vmin,4px);left:50%;bottom:max(12.5vmin,100px);transform:translateX(-50%);color:#fff;border-radius:max(0.5vmin,4px);background:rgba(100,100,100,0.5);white-space:pre-wrap;overflow-wrap:break-word;}
218
+
219
+ .dm-camera-mn-camera-close{position:absolute;width:max(4vmin,32px);height:max(4vmin,32px);left:16px;bottom:32px;padding:max(0.5vmin,4px);border-radius:max(2.5vmin,20px);background:rgba(100,100,100,0.5);cursor:pointer;pointer-events:initial;}
220
+ .dm-camera-mn-take-photo{position:absolute;width:max(7vmin,56px);height:max(7vmin,56px);border:max(0.5vmin,4px) solid #fff;left:50%;border-radius:max(3.5vmin,28px);box-sizing:border-box;bottom:max(4vmin,32px);transform:translateX(-50%);cursor:pointer;pointer-events:initial;}
221
+ .dm-camera-mn-camera-switch{position:absolute;width:max(4vmin,32px);height:max(4vmin,32px);right:16px;bottom:32px;padding:max(0.5vmin,4px);border-radius:max(2.5vmin,20px);background:rgba(100,100,100,0.5);cursor:pointer;pointer-events:initial;}
222
+
223
+ .dm-camera-mn-msg-poweredby{position:absolute;height:max(2.125vmin,17px);left:50%;bottom:4px;transform:translateX(-50%);fill:#fff;}
224
+
225
+ .dm-camera-mn-camera-and-resolution-settings{position:absolute;top:calc(24px + max(3vmin,24px));right:0;max-height:calc(100% - 24px - max(3vmin,24px));background:rgba(100,100,100,0.5);display:flex;pointer-events:initial;}
226
+ .dm-camera-mn-cameras{overflow-y:auto;display:block;}
227
+ .dm-camera-mn-camera-option{font-size:max(1.25vmin,10px);line-height:max(2vmin,16px);padding:max(0.5vmin,4px);margin:12px;box-sizing:border-box;position:relative;text-align:center;color:#fff;border-radius:max(0.75vmin,6px);background:rgba(100,100,100,0.5);display:block;cursor:pointer;}
228
+ .dm-camera-mn-camera-and-resolution-bar{width:1px;align-self:stretch;background:rgba(100,100,100,0.5);}
229
+ .dm-camera-mn-resolutions{overflow-y:auto;display:block;}
230
+ .dm-camera-mn-resolution-option{width:max(5vmin,40px);font-size:max(1.25vmin,10px);line-height:max(2vmin,16px);padding:max(0.5vmin,4px);margin:12px;box-sizing:border-box;position:relative;text-align:center;color:#fff;border-radius:max(0.75vmin,6px);background:rgba(100,100,100,0.5);display:block;cursor:pointer;}
231
+ .dm-camera-mn-camera-option[selected],.dm-camera-mn-resolution-option[selected]{box-shadow:inset 0 0 0 max(0.25vmin, 2px) rgb(254,142,20);}
232
+
233
+ .dm-camera-mn-torch-auto::before,.dm-camera-mn-torch-on::before,.dm-camera-mn-torch-off::before,
234
+ .dm-camera-mn-beep-on::before,.dm-camera-mn-beep-off::before,
235
+ .dm-camera-mn-vibrate-on::before,.dm-camera-mn-vibrate-off::before,
236
+ .dm-camera-mn-resolution-box::before,
237
+ .dm-camera-mn-camera-close::before,.dm-camera-mn-take-photo::before,.dm-camera-mn-camera-switch::before
238
+ {content:"";position:absolute;inset:-12px;width:calc(100% + 24px);height:calc(100% + 24px);}
239
+ .dm-camera-mn-camera-option::before,.dm-camera-mn-resolution-option::before
240
+ {content:"";position:absolute;inset:-12px;width:calc(100% + 24px);height:calc(100% + 24px);}
241
+
242
+ /*show toast in edit mode*/
243
+ .dm-camera-mn-toast{z-index:1;}
244
+ </style>
245
+ <script>
246
+ (()=>{ // wrapper to avoid conflicts when apply many times
247
+ const camera = document.currentScript.currentDMCamera;
248
+ const scanlight = document.createElement('div');
249
+ Object.assign(scanlight.style, {
250
+ position: 'absolute',
251
+ width: '100%',
252
+ height: '3%',
253
+ borderRadius: '50%',
254
+ boxShadow: '0px 0px 2vw 1px #00e5ff',
255
+ background: '#fff',
256
+ animation: '3s infinite dm-camera-scanlight',
257
+ pointerEvents: 'none',
258
+ userSelect: 'none',
259
+ display: 'none',
260
+ });
261
+ camera.setRegionBox({innerUi: scanlight});
262
+
263
+ const ui = camera.ui;
264
+
265
+
266
+ const elTorch = ui.querySelector('.dm-camera-mn-torch');
267
+ const elTorchAuto = ui.querySelector('.dm-camera-mn-torch-auto');
268
+ const elTorchOn = ui.querySelector('.dm-camera-mn-torch-on');
269
+ const elTorchOff = ui.querySelector('.dm-camera-mn-torch-off');
270
+ if(elTorchAuto){ elTorchAuto.style.display = undefined == camera.isTorchOn ? '' : 'none'; }
271
+ if(elTorchOn){ elTorchOn.style.display = true == camera.isTorchOn ? '' : 'none'; }
272
+ if(elTorchOff){ elTorchOff.style.display = false == camera.isTorchOn ? '' : 'none'; }
273
+
274
+ // You need to bind the events yourself to determine when `beep()` and `vibrate()` are triggered;
275
+ // the SDK includes built-in, callable versions of both functions.
276
+ const elBeepOn = ui.querySelector('.dm-camera-mn-beep-on');
277
+ const elBeepOff = ui.querySelector('.dm-camera-mn-beep-off')
278
+ const elVibrateOn = ui.querySelector('.dm-camera-mn-vibrate-on');
279
+ const elVibrateOff = ui.querySelector('.dm-camera-mn-vibrate-off');
280
+
281
+ const elResolutionBox = ui.querySelector('.dm-camera-mn-resolution-box');
282
+ const elZoom = ui.querySelector('.dm-camera-mn-zoom');
283
+ const elZoomSpan = elZoom?.querySelector('span');
284
+ const elToast = ui.querySelector('.dm-camera-mn-toast');
285
+ const elCameraClose = ui.querySelector('.dm-camera-mn-camera-close');
286
+ const elTakePhoto = ui.querySelector('.dm-camera-mn-take-photo');
287
+ const elCameraSwitch = ui.querySelector('.dm-camera-mn-camera-switch');
288
+ const elCameraAndResolutionSettings = ui.querySelector('.dm-camera-mn-camera-and-resolution-settings');
289
+ const divCameras = elCameraAndResolutionSettings?.querySelector('.dm-camera-mn-cameras');
290
+ const arrElResolutionOption = elCameraAndResolutionSettings?.querySelectorAll('.dm-camera-mn-resolution-option');
291
+
292
+ camera.addEventListener('opened',async()=>{
293
+ if('customized-video' != camera.requestedCamera){
294
+
295
+ // mirror front camera
296
+ camera.isMirrored = camera.currentCamera?.isFront;
297
+
298
+ if(elTorch){ elTorch.style.display = ''; }
299
+
300
+ // show current resolution
301
+ if(elResolutionBox || arrElResolutionOption?.length){
302
+ let resolutionFriendlyName;
303
+ // Notice: rule should match names in the resolution options
304
+ {
305
+ let rsl = camera.currentResolution;
306
+ let maxDimension = Math.max(rsl.width, rsl.height);
307
+ let minDimension = Math.min(rsl.width, rsl.height);
308
+ if(minDimension <= 1080){
309
+ resolutionFriendlyName = minDimension + 'P';
310
+ }else if(maxDimension < 3000){
311
+ resolutionFriendlyName = '2K'
312
+ }else{ // maxDimension >= 3000
313
+ resolutionFriendlyName = Math.round(maxDimension / 1000) + 'K';
314
+ }
315
+ }
316
+
317
+ if(elResolutionBox){
318
+ elResolutionBox.textContent = resolutionFriendlyName;
319
+ elResolutionBox.style.display = '';
320
+ }
321
+
322
+ if(arrElResolutionOption?.length){
323
+ for(let option of arrElResolutionOption){
324
+ if(option.textContent === resolutionFriendlyName){
325
+ option.setAttribute('selected', '');
326
+ }else if(option.hasAttribute('selected')){
327
+ option.removeAttribute('selected');
328
+ }
329
+ }
330
+ }
331
+ }
332
+
333
+ // show current camera
334
+ if(divCameras){
335
+ const infos = await camera.constructor.getDeviceInfos();
336
+ const curCam = camera.currentCamera;
337
+ if(!curCam){ return; } // rarely, after await, camera may already change
338
+ const curCamLabel = curCam.trackLabel || curCam.label;
339
+ divCameras.textContent = '';
340
+ for (let info of infos) {
341
+ const opt = document.createElement("div");
342
+ opt.classList.add('dm-camera-mn-camera-option');
343
+ opt.setAttribute('data-device-id', info.deviceId);
344
+ opt.textContent = info.trackLabel || info.label;
345
+ if(opt.textContent === curCamLabel){
346
+ opt.setAttribute('selected', '');
347
+ }
348
+ divCameras.append(opt);
349
+ }
350
+ }
351
+
352
+ // show switch camera button
353
+ if(await camera.constructor.hasFrontCamera()){
354
+ if(elCameraSwitch){ elCameraSwitch.style.display = ''; }
355
+ }
356
+ }
357
+ });
358
+
359
+ camera.addEventListener('closed',()=>{
360
+ if(elTorch){ elTorch.style.display = 'none'; }
361
+ if(elResolutionBox){ elResolutionBox.style.display = 'none'; }
362
+ if(elCameraSwitch){ elCameraSwitch.style.display = 'none'; }
363
+ if(elCameraAndResolutionSettings){ elCameraAndResolutionSettings.style.display = 'none'; }
364
+ });
365
+
366
+ elTorchAuto?.addEventListener('pointerdown', ()=>{
367
+ camera.turnOnTorch();
368
+ elTorchAuto.style.display = 'none';
369
+ elTorchOn.style.display = '';
370
+ });
371
+ elTorchOn?.addEventListener('pointerdown', ()=>{
372
+ camera.turnOffTorch();
373
+ elTorchOn.style.display = 'none';
374
+ elTorchOff.style.display = '';
375
+ });
376
+ elTorchOff?.addEventListener('pointerdown', ()=>{
377
+ if(!camera.isSupportTorch){
378
+ funcShowToast('Torch Not Supported');
379
+ return;
380
+ }
381
+ camera.turnAutoTorch();
382
+ elTorchOff.style.display = 'none';
383
+ elTorchAuto.style.display = '';
384
+ });
385
+ camera.addEventListener('torchAutoOn', ()=>{
386
+ funcShowToast('Torch Auto On');
387
+ if(elTorchAuto){elTorchAuto.style.display = 'none';}
388
+ if(elTorchOn){elTorchOn.style.display = '';}
389
+ });
390
+
391
+ ui.addEventListener('click', async(ev)=>{
392
+ let target = ev.target;
393
+ let option;
394
+ if(option = target.closest('.dm-camera-mn-camera-option')){
395
+ // change camera
396
+ if(option.hasAttribute('selected')){ return; }
397
+ await camera.requestCamera(option.getAttribute('data-device-id'));
398
+ // if remove usb camera, camera status can be 'paused'
399
+ // anyway, if not 'opened', reopen it
400
+ if('opened' !== camera.status){ await camera.open(); }
401
+ }else if(option = target.closest('.dm-camera-mn-resolution-option')){
402
+ // change resolution
403
+ if(option.hasAttribute('selected')){ return; }
404
+ let width = parseInt(option.getAttribute('data-width'));
405
+ let height = parseInt(option.getAttribute('data-height'));
406
+ await camera.requestResolution({ width, height });
407
+
408
+ if(arrElResolutionOption.length){
409
+ const selectedOption = elCameraAndResolutionSettings?.querySelector('.dm-camera-mn-resolution-option[selected]');
410
+ if(selectedOption && selectedOption.textContent != option.textContent){
411
+ funcShowToast(`Fallback to ${selectedOption.textContent}`);
412
+ }
413
+ }
414
+ }else if(target.closest('.dm-camera-mn-camera-and-resolution-settings')){
415
+ // nothing happen
416
+ return;
417
+ }else if(target.closest('.dm-camera-mn-resolution-box')){ // toggle settings
418
+ if(elCameraAndResolutionSettings){
419
+ elCameraAndResolutionSettings.style.display = elCameraAndResolutionSettings.style.display ? '' : 'none';
420
+ }
421
+ return;
422
+ }
423
+ // hide settings
424
+ if(elCameraAndResolutionSettings){
425
+ if('' === elCameraAndResolutionSettings.style.display){
426
+ elCameraAndResolutionSettings.style.display = 'none';
427
+ }
428
+ }
429
+ });
430
+
431
+ let taskInfoZoomChange = null;
432
+ camera.addEventListener('zoom', ({zoom})=>{
433
+ if(!elZoom || !elZoomSpan){ return; }
434
+ elZoomSpan.textContent = zoom.toFixed(1);
435
+ elZoom.style.display = '';
436
+ if(null != taskInfoZoomChange){
437
+ clearTimeout(taskInfoZoomChange);
438
+ taskInfoZoomChange = null;
439
+ }
440
+ taskInfoZoomChange = setTimeout(()=>{
441
+ elZoom.style.display = 'none';
442
+ taskInfoZoomChange = null;
443
+ }, 3000);
444
+ });
445
+
446
+ let taskShowToast = null;
447
+ const funcShowToast = camera.funcShowToast = (info, duration = 3000)=>{
448
+ if(!elToast){ return; }
449
+ elToast.textContent = info;
450
+ elToast.style.display = '';
451
+ if(null != taskShowToast){
452
+ clearTimeout(taskShowToast);
453
+ taskShowToast = null;
454
+ }
455
+ if(duration){ // 0 never hide
456
+ taskShowToast = setTimeout(()=>{
457
+ elToast.style.display = 'none';
458
+ taskShowToast = null;
459
+ }, duration);
460
+ }
461
+ };
462
+
463
+ elCameraClose?.addEventListener('click', ()=>{ camera.close(); });
464
+
465
+ elCameraSwitch?.addEventListener('pointerdown', async()=>{
466
+ await camera.requestCamera(camera.currentCamera.isFront ? 'back': 'front');
467
+ });
468
+
469
+ })();
470
+ </script>