@regulaforensics/face-sdk 7.2.423-beta → 7.2.429-beta

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 (171) hide show
  1. package/README.md +2 -3
  2. package/RNFaceSDK.podspec +1 -1
  3. package/android/src/main/java/com/regula/plugin/facesdk/JSONConstructor.kt +2 -0
  4. package/android/src/main/java/com/regula/plugin/facesdk/Main.kt +18 -0
  5. package/examples/capacitor/android/app/src/main/AndroidManifest.xml +2 -2
  6. package/examples/capacitor/index.html +2 -7
  7. package/examples/capacitor/index.tsx +53 -0
  8. package/examples/capacitor/package-lock.json +27 -163
  9. package/examples/capacitor/package.json +3 -3
  10. package/examples/capacitor/scripts/setup.sh +4 -2
  11. package/examples/capacitor/src/main.css +60 -6
  12. package/examples/capacitor/src/main.html +1 -1
  13. package/examples/capacitor/src/main.tsx +51 -87
  14. package/examples/ionic/README.md +1 -1
  15. package/examples/ionic/angular.json +3 -3
  16. package/examples/ionic/config.xml +4 -2
  17. package/examples/ionic/index.tsx +68 -0
  18. package/examples/ionic/package-lock.json +830 -770
  19. package/examples/ionic/package.json +2 -2
  20. package/examples/ionic/src/main.css +60 -6
  21. package/examples/ionic/src/main.html +1 -1
  22. package/examples/ionic/src/{main.ts → main.tsx} +52 -97
  23. package/examples/ionic/tsconfig.json +3 -2
  24. package/examples/react_native/README.md +1 -0
  25. package/examples/react_native/app.config.ts +1 -1
  26. package/examples/react_native/index.tsx +49 -7
  27. package/examples/react_native/package-lock.json +618 -621
  28. package/examples/react_native/package.json +8 -8
  29. package/examples/react_native/src/main.css +60 -6
  30. package/examples/react_native/src/main.html +1 -1
  31. package/examples/react_native/src/main.tsx +54 -80
  32. package/ios/RFSWJSONConstructor.h +0 -1
  33. package/ios/RFSWJSONConstructor.m +5 -14
  34. package/ios/RFSWMain.m +30 -0
  35. package/package.json +1 -1
  36. package/plugin.xml +1 -1
  37. package/test/json.tsx +375 -0
  38. package/test/package-lock.json +584 -0
  39. package/test/package.json +9 -0
  40. package/test/test.tsx +61 -0
  41. package/test/utils.tsx +38 -0
  42. package/www/capacitor/customization/customization_fonts.js +1 -1
  43. package/www/capacitor/customization/customization_images.js +1 -1
  44. package/www/capacitor/customization/font.js +8 -0
  45. package/www/capacitor/detect_faces/detect_face_result.js +12 -0
  46. package/www/capacitor/detect_faces/detect_faces_attribute_result.js +9 -0
  47. package/www/capacitor/detect_faces/detect_faces_backend_exception.js +7 -0
  48. package/www/capacitor/detect_faces/detect_faces_config.js +34 -0
  49. package/www/capacitor/detect_faces/detect_faces_exception.js +8 -0
  50. package/www/capacitor/detect_faces/detect_faces_request.js +22 -0
  51. package/www/capacitor/detect_faces/detect_faces_response.js +9 -0
  52. package/www/capacitor/face_capture/face_capture_config.js +37 -0
  53. package/www/capacitor/face_capture/face_capture_exception.js +7 -0
  54. package/www/capacitor/face_capture/face_capture_image.js +8 -0
  55. package/www/capacitor/face_capture/face_capture_response.js +7 -0
  56. package/www/capacitor/image_params/output_image_crop.js +23 -0
  57. package/www/capacitor/image_params/output_image_params.js +19 -0
  58. package/www/capacitor/image_params/point.js +7 -0
  59. package/www/capacitor/image_params/rect.js +9 -0
  60. package/www/capacitor/image_params/size.js +12 -0
  61. package/www/capacitor/image_quality/image_quality_characteristic.js +22 -0
  62. package/www/capacitor/image_quality/image_quality_range.js +7 -0
  63. package/www/capacitor/image_quality/image_quality_result.js +10 -0
  64. package/www/capacitor/index.js +48 -0
  65. package/www/capacitor/init/face_sdk_version.js +8 -0
  66. package/www/capacitor/init/init_config.js +19 -0
  67. package/www/capacitor/init/init_exception.js +8 -0
  68. package/www/capacitor/init/license_exception.js +7 -0
  69. package/www/capacitor/internal/bridge.js +20 -1
  70. package/www/capacitor/liveness/liveness_backend_exception.js +7 -0
  71. package/www/capacitor/liveness/liveness_config.js +43 -0
  72. package/www/capacitor/liveness/liveness_exception.js +8 -0
  73. package/www/capacitor/liveness/liveness_notification.js +7 -0
  74. package/www/capacitor/liveness/liveness_response.js +11 -0
  75. package/www/capacitor/match_faces/compared_face.js +9 -0
  76. package/www/capacitor/match_faces/compared_faces_pair.js +10 -0
  77. package/www/capacitor/match_faces/compared_faces_split.js +7 -0
  78. package/www/capacitor/match_faces/match_faces_backend_exception.js +7 -0
  79. package/www/capacitor/match_faces/match_faces_config.js +19 -0
  80. package/www/capacitor/match_faces/match_faces_detection.js +9 -0
  81. package/www/capacitor/match_faces/match_faces_detection_face.js +11 -0
  82. package/www/capacitor/match_faces/match_faces_exception.js +8 -0
  83. package/www/capacitor/match_faces/match_faces_image.js +9 -0
  84. package/www/capacitor/match_faces/match_faces_request.js +27 -0
  85. package/www/capacitor/match_faces/match_faces_response.js +9 -0
  86. package/www/capacitor/person_database/edit_group_persons_request.js +15 -0
  87. package/www/capacitor/person_database/image_upload.js +17 -0
  88. package/www/capacitor/person_database/pageable_item_list.js +8 -0
  89. package/www/capacitor/person_database/person.js +13 -0
  90. package/www/capacitor/person_database/person_group.js +11 -0
  91. package/www/capacitor/person_database/person_image.js +13 -0
  92. package/www/capacitor/person_database/search_person.js +14 -0
  93. package/www/capacitor/person_database/search_person_detection.js +9 -0
  94. package/www/capacitor/person_database/search_person_image.js +15 -0
  95. package/www/capacitor/person_database/search_person_request.js +29 -0
  96. package/www/cordova.js +753 -6
  97. package/www/react-native/customization/customization_fonts.js +1 -1
  98. package/www/react-native/customization/customization_images.js +1 -1
  99. package/www/react-native/customization/font.js +8 -0
  100. package/www/react-native/detect_faces/detect_face_result.js +12 -0
  101. package/www/react-native/detect_faces/detect_faces_attribute_result.js +9 -0
  102. package/www/react-native/detect_faces/detect_faces_backend_exception.js +7 -0
  103. package/www/react-native/detect_faces/detect_faces_config.js +34 -0
  104. package/www/react-native/detect_faces/detect_faces_exception.js +8 -0
  105. package/www/react-native/detect_faces/detect_faces_request.js +22 -0
  106. package/www/react-native/detect_faces/detect_faces_response.js +9 -0
  107. package/www/react-native/face_capture/face_capture_config.js +37 -0
  108. package/www/react-native/face_capture/face_capture_exception.js +7 -0
  109. package/www/react-native/face_capture/face_capture_image.js +8 -0
  110. package/www/react-native/face_capture/face_capture_response.js +7 -0
  111. package/www/react-native/image_params/output_image_crop.js +23 -0
  112. package/www/react-native/image_params/output_image_params.js +19 -0
  113. package/www/react-native/image_params/point.js +7 -0
  114. package/www/react-native/image_params/rect.js +9 -0
  115. package/www/react-native/image_params/size.js +12 -0
  116. package/www/react-native/image_quality/image_quality_characteristic.js +22 -0
  117. package/www/react-native/image_quality/image_quality_range.js +7 -0
  118. package/www/react-native/image_quality/image_quality_result.js +10 -0
  119. package/www/react-native/index.js +48 -0
  120. package/www/react-native/init/face_sdk_version.js +8 -0
  121. package/www/react-native/init/init_config.js +19 -0
  122. package/www/react-native/init/init_exception.js +8 -0
  123. package/www/react-native/init/license_exception.js +7 -0
  124. package/www/react-native/internal/bridge.js +20 -1
  125. package/www/react-native/liveness/liveness_backend_exception.js +7 -0
  126. package/www/react-native/liveness/liveness_config.js +43 -0
  127. package/www/react-native/liveness/liveness_exception.js +8 -0
  128. package/www/react-native/liveness/liveness_notification.js +7 -0
  129. package/www/react-native/liveness/liveness_response.js +11 -0
  130. package/www/react-native/match_faces/compared_face.js +9 -0
  131. package/www/react-native/match_faces/compared_faces_pair.js +10 -0
  132. package/www/react-native/match_faces/compared_faces_split.js +7 -0
  133. package/www/react-native/match_faces/match_faces_backend_exception.js +7 -0
  134. package/www/react-native/match_faces/match_faces_config.js +19 -0
  135. package/www/react-native/match_faces/match_faces_detection.js +9 -0
  136. package/www/react-native/match_faces/match_faces_detection_face.js +11 -0
  137. package/www/react-native/match_faces/match_faces_exception.js +8 -0
  138. package/www/react-native/match_faces/match_faces_image.js +9 -0
  139. package/www/react-native/match_faces/match_faces_request.js +27 -0
  140. package/www/react-native/match_faces/match_faces_response.js +9 -0
  141. package/www/react-native/person_database/edit_group_persons_request.js +15 -0
  142. package/www/react-native/person_database/image_upload.js +17 -0
  143. package/www/react-native/person_database/pageable_item_list.js +8 -0
  144. package/www/react-native/person_database/person.js +13 -0
  145. package/www/react-native/person_database/person_group.js +11 -0
  146. package/www/react-native/person_database/person_image.js +13 -0
  147. package/www/react-native/person_database/search_person.js +14 -0
  148. package/www/react-native/person_database/search_person_detection.js +9 -0
  149. package/www/react-native/person_database/search_person_image.js +15 -0
  150. package/www/react-native/person_database/search_person_request.js +29 -0
  151. package/www/types/index.d.ts +12 -0
  152. package/www/types/match_faces/match_faces_config.d.ts +2 -0
  153. package/www/types/person_database/search_person_request.d.ts +4 -0
  154. package/examples/cordova/.vscode/launch.json +0 -28
  155. package/examples/cordova/README.md +0 -25
  156. package/examples/cordova/config.xml +0 -26
  157. package/examples/cordova/package-lock.json +0 -1313
  158. package/examples/cordova/package.json +0 -30
  159. package/examples/cordova/scripts/android.sh +0 -8
  160. package/examples/cordova/scripts/ios.sh +0 -8
  161. package/examples/cordova/scripts/setup.sh +0 -8
  162. package/examples/cordova/www/images/logo.png +0 -0
  163. package/examples/cordova/www/index.html +0 -21
  164. package/examples/cordova/www/src/main.css +0 -83
  165. package/examples/cordova/www/src/main.html +0 -25
  166. package/examples/cordova/www/src/main.js +0 -152
  167. package/examples/ionic/index.ts +0 -17
  168. package/examples/ionic/src/images/portrait.png +0 -0
  169. /package/examples/ionic/{src/assets → assets}/.gitkeep +0 -0
  170. /package/examples/ionic/{src/images → images}/icon.png +0 -0
  171. /package/examples/{cordova/www → ionic}/images/portrait.png +0 -0
package/README.md CHANGED
@@ -1,11 +1,10 @@
1
1
  # Regula Face SDK plugin
2
2
  Face SDK is a framework that is used for face matching, recognition and liveness detection.
3
- This plugin makes possible to use it with react-native, cordova and ionic applications.
3
+ This plugin makes possible to use it with react-native, cordova and capacitor applications.
4
4
 
5
5
  ## Demo applications
6
- In the [examples](examples/) folder you can find 4 demo applications:
6
+ In the [examples](examples/) folder you can find 3 demo applications:
7
7
  * [React-native](examples/react_native)
8
- * [Cordova](examples/cordova)
9
8
  * [Ionic(ionic app with cordova, angular)](examples/ionic)
10
9
  * [Capacitor(ionic app with capacitor, react)](examples/capacitor)
11
10
 
package/RNFaceSDK.podspec CHANGED
@@ -5,7 +5,7 @@ source = File.join(__dir__, 'ios')
5
5
 
6
6
  Pod::Spec.new do |s|
7
7
  s.name = 'RNFaceSDK'
8
- s.version = '7.2.423-beta'
8
+ s.version = '7.2.429-beta'
9
9
  s.summary = package['description']
10
10
  s.license = package['license']
11
11
 
@@ -833,6 +833,7 @@ fun searchPersonRequestFromJSON(it: JSONObject) = object : SearchPersonRequest()
833
833
  groupIdsForSearch = it.getJSONArrayOrNull("groupIdsForSearch").toArray()
834
834
  threshold = it.getDoubleOrNull("threshold")?.toFloat()
835
835
  limit = it.getIntOrNull("limit")
836
+ tag = it.getStringOrNull("tag")
836
837
  imageUpload = imageUploadFromJSON(it.getJSONObjectOrNull("imageUpload"))
837
838
  isDetectAll = it.optBoolean("detectAll", false)
838
839
  outputImageParams = outputImageParamsFromJSON(it.getJSONObjectOrNull("outputImageParams"))
@@ -843,6 +844,7 @@ fun generateSearchPersonRequest(it: SearchPersonRequest) = mapOf(
843
844
  "groupIdsForSearch" to it.groupIdsForSearch.toJson(),
844
845
  "threshold" to it.threshold,
845
846
  "limit" to it.limit,
847
+ "tag" to it.tag,
846
848
  "imageUpload" to generateImageUpload(it.imageUpload),
847
849
  "detectAll" to it.isDetectAll,
848
850
  "outputImageParams" to generateOutputImageParams(it.outputImageParams)
@@ -30,6 +30,12 @@ fun methodCall(method: String, callback: (Any?) -> Unit): Any = when (method) {
30
30
  "getVersion" -> getVersion(callback)
31
31
  "getServiceUrl" -> getServiceUrl(callback)
32
32
  "setServiceUrl" -> setServiceUrl(argsNullable(0))
33
+ "getTenant" -> getTenant(callback)
34
+ "setTenant" -> setTenant(argsNullable(0))
35
+ "getEnv" -> getEnv(callback)
36
+ "setEnv" -> setEnv(argsNullable(0))
37
+ "getLocale" -> getLocale(callback)
38
+ "setLocale" -> setLocale(argsNullable(0))
33
39
  "setLocalizationDictionary" -> setLocalizationDictionary(args(0))
34
40
  "setRequestHeaders" -> setRequestHeaders(args(0))
35
41
  "setCustomization" -> setCustomization(args(0))
@@ -81,6 +87,18 @@ fun getServiceUrl(callback: Callback) = callback(Instance().serviceUrl)
81
87
 
82
88
  fun setServiceUrl(url: String?) = url.let { Instance().serviceUrl = it }
83
89
 
90
+ fun getTenant(callback: Callback) = callback(Instance().tenant)
91
+
92
+ fun setTenant(tag: String?) = tag.let { Instance().tenant = it }
93
+
94
+ fun getEnv(callback: Callback) = callback(Instance().env)
95
+
96
+ fun setEnv(tag: String?) = tag.let { Instance().env = it }
97
+
98
+ fun getLocale(callback: Callback) = callback(Instance().locale)
99
+
100
+ fun setLocale(locale: String?) = locale.let { Instance().locale = it }
101
+
84
102
  fun setLocalizationDictionary(dictionary: JSONObject) {
85
103
  localizationCallbacks = LocalizationCallbacks { if (dictionary.has(it)) dictionary.getString(it) else null }
86
104
  Instance().setLocalizationCallback(localizationCallbacks!!)
@@ -18,8 +18,8 @@
18
18
  <action android:name="android.intent.action.MAIN" />
19
19
  <category android:name="android.intent.category.LAUNCHER" />
20
20
  </intent-filter>
21
-
22
21
  </activity>
23
22
  </application>
23
+
24
24
  <uses-permission android:name="android.permission.INTERNET" />
25
- </manifest>
25
+ </manifest>
@@ -1,10 +1,5 @@
1
1
  <meta name="viewport" content="initial-scale=1.0, user-scalable=no" />
2
- <script type="module" src="/src/main.tsx"></script>
3
-
4
2
  <div id="content" style="height: 100%"></div>
5
3
 
6
- <script>
7
- fetch("main.html")
8
- .then(response => response.text())
9
- .then(html => document.getElementById("content").innerHTML = html)
10
- </script>
4
+ <script type="module" src="./index.tsx"></script>
5
+ <script type="module" src="/src/main.tsx"></script>
@@ -0,0 +1,53 @@
1
+ import '@ionic/react/css/core.css'
2
+ import '/src/main.css'
3
+ import { setupIonicReact } from '@ionic/react'
4
+ import { StatusBar, Style } from '@capacitor/status-bar'
5
+ import { File } from '@awesome-cordova-plugins/file'
6
+ import { Camera, DestinationType, MediaType, PictureSourceType } from '@awesome-cordova-plugins/camera'
7
+ import { main } from './src/main'
8
+ import { Dialog } from '@capacitor/dialog'
9
+
10
+ document.addEventListener('deviceready', () => fetch("main.html")
11
+ .then(response => response.text())
12
+ .then(html => document.getElementById("content").innerHTML = html)
13
+ .then(_ => document.dispatchEvent(new Event('ready')))
14
+ )
15
+
16
+ export async function loadAssetIfExists(path: string): Promise<string | null> {
17
+ try {
18
+ var dir = await File.resolveDirectoryUrl(File.applicationDirectory + "public/assets")
19
+ var fileEntry = await File.getFile(dir, path, null)
20
+ var result = await new Promise<string | null>((resolve, _) => {
21
+ fileEntry.file(file => {
22
+ var reader = new FileReader()
23
+ reader.onloadend = (_) => resolve(reader.result as string)
24
+ reader.readAsDataURL(file)
25
+ }, _ => resolve(null))
26
+ })
27
+ return result
28
+ } catch (_) {
29
+ return null
30
+ }
31
+ }
32
+
33
+ export async function pickImage(): Promise<string | null> {
34
+ return await Camera.getPicture({
35
+ destinationType: DestinationType.DATA_URL,
36
+ mediaType: MediaType.PICTURE,
37
+ sourceType: PictureSourceType.PHOTOLIBRARY
38
+ })
39
+ }
40
+
41
+ export async function chooseOption(): Promise<boolean | null> {
42
+ var response = await Dialog.confirm({
43
+ message: "Select option",
44
+ okButtonTitle: "Use camera",
45
+ cancelButtonTitle: "Use gallery"
46
+ })
47
+ return response.value
48
+ }
49
+
50
+ document.addEventListener('ready', main)
51
+
52
+ setupIonicReact()
53
+ StatusBar.setStyle({ style: Style.Light })
@@ -16,11 +16,13 @@
16
16
  "@capacitor/ios": "7.0.1",
17
17
  "@capacitor/status-bar": "7.0.0",
18
18
  "@ionic/react": "8.4.3",
19
+ "@regulaforensics/face-core-basic": "7.1.178",
20
+ "@regulaforensics/face-sdk": "7.1.317",
19
21
  "@types/react-router-dom": "5.3.3",
20
22
  "@vitejs/plugin-react": "4.3.4",
21
23
  "cordova-plugin-camera": "8.0.0",
22
24
  "cordova-plugin-file": "8.1.3",
23
- "vite-plugin-static-copy": "2.3.1"
25
+ "vite-plugin-static-copy": "3.1.2"
24
26
  }
25
27
  },
26
28
  "node_modules/@ampproject/remapping": {
@@ -1167,40 +1169,17 @@
1167
1169
  "@jridgewell/sourcemap-codec": "^1.4.14"
1168
1170
  }
1169
1171
  },
1170
- "node_modules/@nodelib/fs.scandir": {
1171
- "version": "2.1.5",
1172
- "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz",
1173
- "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==",
1174
- "license": "MIT",
1175
- "dependencies": {
1176
- "@nodelib/fs.stat": "2.0.5",
1177
- "run-parallel": "^1.1.9"
1178
- },
1179
- "engines": {
1180
- "node": ">= 8"
1181
- }
1172
+ "node_modules/@regulaforensics/face-core-basic": {
1173
+ "version": "7.1.178",
1174
+ "resolved": "https://registry.npmjs.org/@regulaforensics/face-core-basic/-/face-core-basic-7.1.178.tgz",
1175
+ "integrity": "sha512-KfVME7fPy3vOMKM5g/79Yiz6enWvhxL/nw6B9HKkMpE1uKYgXUa3DWgs4m5EMiqH7jmJ3bmxekkDUFwer6j3pw==",
1176
+ "license": "commercial"
1182
1177
  },
1183
- "node_modules/@nodelib/fs.stat": {
1184
- "version": "2.0.5",
1185
- "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz",
1186
- "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==",
1187
- "license": "MIT",
1188
- "engines": {
1189
- "node": ">= 8"
1190
- }
1191
- },
1192
- "node_modules/@nodelib/fs.walk": {
1193
- "version": "1.2.8",
1194
- "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz",
1195
- "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==",
1196
- "license": "MIT",
1197
- "dependencies": {
1198
- "@nodelib/fs.scandir": "2.1.5",
1199
- "fastq": "^1.6.0"
1200
- },
1201
- "engines": {
1202
- "node": ">= 8"
1203
- }
1178
+ "node_modules/@regulaforensics/face-sdk": {
1179
+ "version": "7.1.317",
1180
+ "resolved": "https://registry.npmjs.org/@regulaforensics/face-sdk/-/face-sdk-7.1.317.tgz",
1181
+ "integrity": "sha512-RtZ4vOlVfcisVcD86rEYbnxPyUjVW2cKwG45oUBGE43UJYAuoYdwdUdfOWoQqwNAsk5Aehp/8EsMwc6e775h3Q==",
1182
+ "license": "commercial"
1204
1183
  },
1205
1184
  "node_modules/@rollup/rollup-android-arm-eabi": {
1206
1185
  "version": "4.40.2",
@@ -1764,9 +1743,9 @@
1764
1743
  }
1765
1744
  },
1766
1745
  "node_modules/brace-expansion": {
1767
- "version": "2.0.1",
1768
- "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz",
1769
- "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==",
1746
+ "version": "2.0.2",
1747
+ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz",
1748
+ "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==",
1770
1749
  "license": "MIT",
1771
1750
  "dependencies": {
1772
1751
  "balanced-match": "^1.0.0"
@@ -2113,31 +2092,6 @@
2113
2092
  "node": ">=6"
2114
2093
  }
2115
2094
  },
2116
- "node_modules/fast-glob": {
2117
- "version": "3.3.3",
2118
- "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.3.tgz",
2119
- "integrity": "sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==",
2120
- "license": "MIT",
2121
- "dependencies": {
2122
- "@nodelib/fs.stat": "^2.0.2",
2123
- "@nodelib/fs.walk": "^1.2.3",
2124
- "glob-parent": "^5.1.2",
2125
- "merge2": "^1.3.0",
2126
- "micromatch": "^4.0.8"
2127
- },
2128
- "engines": {
2129
- "node": ">=8.6.0"
2130
- }
2131
- },
2132
- "node_modules/fastq": {
2133
- "version": "1.19.1",
2134
- "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.19.1.tgz",
2135
- "integrity": "sha512-GwLTyxkCXjXbxqIhTsMI2Nui8huMPtnxg7krajPJAjnEG/iiOS7i+zCtWGZR9G0NBKbXKh6X9m9UIsYX/N6vvQ==",
2136
- "license": "ISC",
2137
- "dependencies": {
2138
- "reusify": "^1.0.4"
2139
- }
2140
- },
2141
2095
  "node_modules/fd-slicer": {
2142
2096
  "version": "1.1.0",
2143
2097
  "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz",
@@ -2152,7 +2106,6 @@
2152
2106
  "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.4.4.tgz",
2153
2107
  "integrity": "sha512-1NZP+GK4GfuAv3PqKvxQRDMjdSRZjnkq7KfhlNrCNNlZ0ygQFpebfrnfnq/W7fpUnAv9aGWmY1zKx7FYL3gwhg==",
2154
2108
  "license": "MIT",
2155
- "peer": true,
2156
2109
  "peerDependencies": {
2157
2110
  "picomatch": "^3 || ^4"
2158
2111
  },
@@ -2502,40 +2455,6 @@
2502
2455
  "yallist": "^3.0.2"
2503
2456
  }
2504
2457
  },
2505
- "node_modules/merge2": {
2506
- "version": "1.4.1",
2507
- "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz",
2508
- "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==",
2509
- "license": "MIT",
2510
- "engines": {
2511
- "node": ">= 8"
2512
- }
2513
- },
2514
- "node_modules/micromatch": {
2515
- "version": "4.0.8",
2516
- "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz",
2517
- "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==",
2518
- "license": "MIT",
2519
- "dependencies": {
2520
- "braces": "^3.0.3",
2521
- "picomatch": "^2.3.1"
2522
- },
2523
- "engines": {
2524
- "node": ">=8.6"
2525
- }
2526
- },
2527
- "node_modules/micromatch/node_modules/picomatch": {
2528
- "version": "2.3.1",
2529
- "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz",
2530
- "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==",
2531
- "license": "MIT",
2532
- "engines": {
2533
- "node": ">=8.6"
2534
- },
2535
- "funding": {
2536
- "url": "https://github.com/sponsors/jonschlinkert"
2537
- }
2538
- },
2539
2458
  "node_modules/minimatch": {
2540
2459
  "version": "10.0.1",
2541
2460
  "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.0.1.tgz",
@@ -2754,7 +2673,6 @@
2754
2673
  "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.2.tgz",
2755
2674
  "integrity": "sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==",
2756
2675
  "license": "MIT",
2757
- "peer": true,
2758
2676
  "engines": {
2759
2677
  "node": ">=12"
2760
2678
  },
@@ -2827,26 +2745,6 @@
2827
2745
  "node": ">=6"
2828
2746
  }
2829
2747
  },
2830
- "node_modules/queue-microtask": {
2831
- "version": "1.2.3",
2832
- "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz",
2833
- "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==",
2834
- "funding": [
2835
- {
2836
- "type": "github",
2837
- "url": "https://github.com/sponsors/feross"
2838
- },
2839
- {
2840
- "type": "patreon",
2841
- "url": "https://www.patreon.com/feross"
2842
- },
2843
- {
2844
- "type": "consulting",
2845
- "url": "https://feross.org/support"
2846
- }
2847
- ],
2848
- "license": "MIT"
2849
- },
2850
2748
  "node_modules/react": {
2851
2749
  "version": "19.1.0",
2852
2750
  "resolved": "https://registry.npmjs.org/react/-/react-19.1.0.tgz",
@@ -2917,16 +2815,6 @@
2917
2815
  "url": "https://github.com/sponsors/jonschlinkert"
2918
2816
  }
2919
2817
  },
2920
- "node_modules/reusify": {
2921
- "version": "1.1.0",
2922
- "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.1.0.tgz",
2923
- "integrity": "sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==",
2924
- "license": "MIT",
2925
- "engines": {
2926
- "iojs": ">=1.0.0",
2927
- "node": ">=0.10.0"
2928
- }
2929
- },
2930
2818
  "node_modules/rimraf": {
2931
2819
  "version": "6.0.1",
2932
2820
  "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-6.0.1.tgz",
@@ -2986,29 +2874,6 @@
2986
2874
  "fsevents": "~2.3.2"
2987
2875
  }
2988
2876
  },
2989
- "node_modules/run-parallel": {
2990
- "version": "1.2.0",
2991
- "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz",
2992
- "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==",
2993
- "funding": [
2994
- {
2995
- "type": "github",
2996
- "url": "https://github.com/sponsors/feross"
2997
- },
2998
- {
2999
- "type": "patreon",
3000
- "url": "https://www.patreon.com/feross"
3001
- },
3002
- {
3003
- "type": "consulting",
3004
- "url": "https://feross.org/support"
3005
- }
3006
- ],
3007
- "license": "MIT",
3008
- "dependencies": {
3009
- "queue-microtask": "^1.2.2"
3010
- }
3011
- },
3012
2877
  "node_modules/rxjs": {
3013
2878
  "version": "7.8.2",
3014
2879
  "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.2.tgz",
@@ -3238,11 +3103,10 @@
3238
3103
  }
3239
3104
  },
3240
3105
  "node_modules/tinyglobby": {
3241
- "version": "0.2.13",
3242
- "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.13.tgz",
3243
- "integrity": "sha512-mEwzpUgrLySlveBwEVDMKk5B57bhLPYovRfPAXD5gA/98Opn0rCDj3GtLwFvCvH5RK9uPCExUROW5NjDwvqkxw==",
3106
+ "version": "0.2.14",
3107
+ "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.14.tgz",
3108
+ "integrity": "sha512-tX5e7OM1HnYr2+a2C/4V0htOcSQcoSTH9KgJnVvNm5zm/cyEWKJ7j7YutsH9CxMdtOkkLFy2AHrMci9IM8IPZQ==",
3244
3109
  "license": "MIT",
3245
- "peer": true,
3246
3110
  "dependencies": {
3247
3111
  "fdir": "^6.4.4",
3248
3112
  "picomatch": "^4.0.2"
@@ -3417,22 +3281,22 @@
3417
3281
  }
3418
3282
  },
3419
3283
  "node_modules/vite-plugin-static-copy": {
3420
- "version": "2.3.1",
3421
- "resolved": "https://registry.npmjs.org/vite-plugin-static-copy/-/vite-plugin-static-copy-2.3.1.tgz",
3422
- "integrity": "sha512-EfsPcBm3ewg3UMG8RJaC0ADq6/qnUZnokXx4By4+2cAcipjT9i0Y0owIJGqmZI7d6nxk4qB1q5aXOwNuSyPdyA==",
3284
+ "version": "3.1.2",
3285
+ "resolved": "https://registry.npmjs.org/vite-plugin-static-copy/-/vite-plugin-static-copy-3.1.2.tgz",
3286
+ "integrity": "sha512-aVmYOzptLVOI2b1jL+cmkF7O6uhRv1u5fvOkQgbohWZp2CbR22kn9ZqkCUIt9umKF7UhdbsEpshn1rf4720QFg==",
3423
3287
  "license": "MIT",
3424
3288
  "dependencies": {
3425
- "chokidar": "^3.5.3",
3426
- "fast-glob": "^3.2.11",
3427
- "fs-extra": "^11.1.0",
3289
+ "chokidar": "^3.6.0",
3290
+ "fs-extra": "^11.3.0",
3428
3291
  "p-map": "^7.0.3",
3429
- "picocolors": "^1.0.0"
3292
+ "picocolors": "^1.1.1",
3293
+ "tinyglobby": "^0.2.14"
3430
3294
  },
3431
3295
  "engines": {
3432
3296
  "node": "^18.0.0 || >=20.0.0"
3433
3297
  },
3434
3298
  "peerDependencies": {
3435
- "vite": "^5.0.0 || ^6.0.0"
3299
+ "vite": "^5.0.0 || ^6.0.0 || ^7.0.0"
3436
3300
  }
3437
3301
  },
3438
3302
  "node_modules/which": {
@@ -6,22 +6,22 @@
6
6
  "android": "scripts/android.sh"
7
7
  },
8
8
  "dependencies": {
9
- "@regulaforensics/face-sdk": "7.2.423-beta",
9
+ "@regulaforensics/face-sdk": "7.2.429-beta",
10
10
  "@regulaforensics/face-core-basic": "7.1.202",
11
11
  "@awesome-cordova-plugins/file": "6.6.0",
12
12
  "@awesome-cordova-plugins/camera": "6.6.0",
13
13
  "cordova-plugin-file": "8.1.3",
14
14
  "cordova-plugin-camera": "8.0.0",
15
- "@capacitor/dialog": "7.0.1",
16
15
  "@capacitor/cli": "7.0.1",
17
16
  "@capacitor/core": "7.0.1",
18
17
  "@capacitor/app": "7.0.0",
19
18
  "@capacitor/ios": "7.0.1",
20
19
  "@capacitor/android": "7.0.1",
21
20
  "@capacitor/status-bar": "7.0.0",
21
+ "@capacitor/dialog": "7.0.1",
22
22
  "@ionic/react": "8.4.3",
23
23
  "@vitejs/plugin-react": "4.3.4",
24
- "vite-plugin-static-copy": "2.3.1",
24
+ "vite-plugin-static-copy": "3.1.2",
25
25
  "@types/react-router-dom": "5.3.3"
26
26
  }
27
27
  }
@@ -2,5 +2,7 @@
2
2
  set -e
3
3
 
4
4
  npm install
5
- cd ios/App
6
- pod install || pod update
5
+ ionic cap sync ios || {
6
+ cd ios/App
7
+ pod update
8
+ }
@@ -1,15 +1,19 @@
1
1
  html,
2
2
  body {
3
- width: 99%;
3
+ margin: 0;
4
+ width: 100%;
4
5
  height: 99vh;
5
6
  display: flex;
7
+ overflow: hidden;
6
8
  flex-direction: column;
7
9
  }
8
10
 
9
- .page {
10
- height: 100%;
11
- display: flex;
12
- flex-direction: column;
11
+ /* Prevent text selection */
12
+ * {
13
+ user-select: none !important;
14
+ -webkit-user-select: none !important;
15
+ -webkit-user-drag: none !important;
16
+ -webkit-touch-callout: none !important;
13
17
  }
14
18
 
15
19
  .column {
@@ -52,10 +56,14 @@ body {
52
56
  margin-top: 13px;
53
57
  }
54
58
 
59
+ .scroll {
60
+ flex-grow: 1;
61
+ overflow-y: auto;
62
+ }
63
+
55
64
  .no-scroll {
56
65
  flex-grow: 1;
57
66
  overflow-y: hidden;
58
- overflow-x: hidden;
59
67
  }
60
68
 
61
69
  .button {
@@ -67,6 +75,7 @@ body {
67
75
  color: white;
68
76
  border: none;
69
77
  padding: 10px 20px;
78
+ justify-content: center;
70
79
  font-size: 16px;
71
80
  border-radius: 100px;
72
81
  cursor: pointer;
@@ -80,4 +89,49 @@ body {
80
89
  .button:active {
81
90
  position: relative;
82
91
  top: 1px;
92
+ }
93
+
94
+ .text-button {
95
+ background: none;
96
+ border: none;
97
+ color: #2196f3;
98
+ font-size: 20px;
99
+ font-weight: bold;
100
+ padding: 5px;
101
+ }
102
+
103
+ .text-button:active {
104
+ position: relative;
105
+ top: 1px;
106
+ }
107
+
108
+ .radio {
109
+ align-items: baseline;
110
+ padding: 15px;
111
+ }
112
+
113
+ input[type="checkbox"] {
114
+ width: 20px;
115
+ height: 20px;
116
+ border: 2px solid black;
117
+ background-color: white;
118
+ display: inline-block;
119
+ position: relative;
120
+ cursor: pointer;
121
+ }
122
+
123
+ .progress-bar {
124
+ width: 75%;
125
+ padding: 3px;
126
+ margin-top: 40px;
127
+ background-color: #eee;
128
+ border-radius: 8px;
129
+ box-shadow: inset 0 0 5px rgba(0, 0, 0, 0.2);
130
+ }
131
+
132
+ #progress {
133
+ width: 0%;
134
+ height: 20px;
135
+ background-color: #4285F4;
136
+ border-radius: 5px;
83
137
  }
@@ -1,4 +1,4 @@
1
- <div class="page">
1
+ <div class="column" style="height: 100%">
2
2
  <div class="column header">
3
3
  <span id="status">Loading...</span>
4
4
  <div class="column divider"></div>