@regulaforensics/face-sdk 7.2.433-rc → 7.2.444-rc

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 (173) hide show
  1. package/README.md +2 -3
  2. package/RNFaceSDK.podspec +2 -2
  3. package/android/build.gradle +1 -1
  4. package/android/cordova.gradle +1 -1
  5. package/android/src/main/java/com/regula/plugin/facesdk/JSONConstructor.kt +2 -0
  6. package/android/src/main/java/com/regula/plugin/facesdk/Main.kt +18 -0
  7. package/examples/capacitor/android/app/src/main/AndroidManifest.xml +2 -2
  8. package/examples/capacitor/index.html +2 -7
  9. package/examples/capacitor/index.tsx +53 -0
  10. package/examples/capacitor/package-lock.json +12 -162
  11. package/examples/capacitor/package.json +4 -4
  12. package/examples/capacitor/scripts/setup.sh +4 -2
  13. package/examples/capacitor/src/main.css +60 -6
  14. package/examples/capacitor/src/main.html +1 -1
  15. package/examples/capacitor/src/main.tsx +51 -87
  16. package/examples/ionic/README.md +1 -1
  17. package/examples/ionic/angular.json +3 -3
  18. package/examples/ionic/config.xml +4 -2
  19. package/examples/ionic/index.tsx +68 -0
  20. package/examples/ionic/package-lock.json +42 -68
  21. package/examples/ionic/package.json +2 -2
  22. package/examples/ionic/src/main.css +60 -6
  23. package/examples/ionic/src/main.html +1 -1
  24. package/examples/ionic/src/{main.ts → main.tsx} +52 -97
  25. package/examples/ionic/tsconfig.json +3 -2
  26. package/examples/react_native/README.md +1 -0
  27. package/examples/react_native/app.config.ts +1 -1
  28. package/examples/react_native/index.tsx +49 -7
  29. package/examples/react_native/package-lock.json +594 -597
  30. package/examples/react_native/package.json +9 -9
  31. package/examples/react_native/src/main.css +60 -6
  32. package/examples/react_native/src/main.html +1 -1
  33. package/examples/react_native/src/main.tsx +54 -77
  34. package/ios/RFSWJSONConstructor.h +0 -1
  35. package/ios/RFSWJSONConstructor.m +5 -14
  36. package/ios/RFSWMain.m +30 -0
  37. package/package.json +1 -1
  38. package/plugin.xml +2 -2
  39. package/test/json.tsx +375 -0
  40. package/test/package-lock.json +584 -0
  41. package/test/package.json +9 -0
  42. package/test/test.tsx +61 -0
  43. package/test/utils.tsx +38 -0
  44. package/www/capacitor/customization/customization_fonts.js +1 -1
  45. package/www/capacitor/customization/customization_images.js +1 -1
  46. package/www/capacitor/customization/font.js +8 -0
  47. package/www/capacitor/detect_faces/detect_face_result.js +12 -0
  48. package/www/capacitor/detect_faces/detect_faces_attribute_result.js +9 -0
  49. package/www/capacitor/detect_faces/detect_faces_backend_exception.js +7 -0
  50. package/www/capacitor/detect_faces/detect_faces_config.js +34 -0
  51. package/www/capacitor/detect_faces/detect_faces_exception.js +8 -0
  52. package/www/capacitor/detect_faces/detect_faces_request.js +22 -0
  53. package/www/capacitor/detect_faces/detect_faces_response.js +9 -0
  54. package/www/capacitor/face_capture/face_capture_config.js +37 -0
  55. package/www/capacitor/face_capture/face_capture_exception.js +7 -0
  56. package/www/capacitor/face_capture/face_capture_image.js +8 -0
  57. package/www/capacitor/face_capture/face_capture_response.js +7 -0
  58. package/www/capacitor/image_params/output_image_crop.js +23 -0
  59. package/www/capacitor/image_params/output_image_params.js +19 -0
  60. package/www/capacitor/image_params/point.js +7 -0
  61. package/www/capacitor/image_params/rect.js +9 -0
  62. package/www/capacitor/image_params/size.js +12 -0
  63. package/www/capacitor/image_quality/image_quality_characteristic.js +22 -0
  64. package/www/capacitor/image_quality/image_quality_range.js +7 -0
  65. package/www/capacitor/image_quality/image_quality_result.js +10 -0
  66. package/www/capacitor/index.js +48 -0
  67. package/www/capacitor/init/face_sdk_version.js +8 -0
  68. package/www/capacitor/init/init_config.js +19 -0
  69. package/www/capacitor/init/init_exception.js +8 -0
  70. package/www/capacitor/init/license_exception.js +7 -0
  71. package/www/capacitor/internal/bridge.js +20 -1
  72. package/www/capacitor/liveness/liveness_backend_exception.js +7 -0
  73. package/www/capacitor/liveness/liveness_config.js +43 -0
  74. package/www/capacitor/liveness/liveness_exception.js +8 -0
  75. package/www/capacitor/liveness/liveness_notification.js +7 -0
  76. package/www/capacitor/liveness/liveness_response.js +11 -0
  77. package/www/capacitor/match_faces/compared_face.js +9 -0
  78. package/www/capacitor/match_faces/compared_faces_pair.js +10 -0
  79. package/www/capacitor/match_faces/compared_faces_split.js +7 -0
  80. package/www/capacitor/match_faces/match_faces_backend_exception.js +7 -0
  81. package/www/capacitor/match_faces/match_faces_config.js +19 -0
  82. package/www/capacitor/match_faces/match_faces_detection.js +9 -0
  83. package/www/capacitor/match_faces/match_faces_detection_face.js +11 -0
  84. package/www/capacitor/match_faces/match_faces_exception.js +8 -0
  85. package/www/capacitor/match_faces/match_faces_image.js +9 -0
  86. package/www/capacitor/match_faces/match_faces_request.js +27 -0
  87. package/www/capacitor/match_faces/match_faces_response.js +9 -0
  88. package/www/capacitor/person_database/edit_group_persons_request.js +15 -0
  89. package/www/capacitor/person_database/image_upload.js +17 -0
  90. package/www/capacitor/person_database/pageable_item_list.js +8 -0
  91. package/www/capacitor/person_database/person.js +13 -0
  92. package/www/capacitor/person_database/person_group.js +11 -0
  93. package/www/capacitor/person_database/person_image.js +13 -0
  94. package/www/capacitor/person_database/search_person.js +14 -0
  95. package/www/capacitor/person_database/search_person_detection.js +9 -0
  96. package/www/capacitor/person_database/search_person_image.js +15 -0
  97. package/www/capacitor/person_database/search_person_request.js +29 -0
  98. package/www/cordova.js +753 -6
  99. package/www/react-native/customization/customization_fonts.js +1 -1
  100. package/www/react-native/customization/customization_images.js +1 -1
  101. package/www/react-native/customization/font.js +8 -0
  102. package/www/react-native/detect_faces/detect_face_result.js +12 -0
  103. package/www/react-native/detect_faces/detect_faces_attribute_result.js +9 -0
  104. package/www/react-native/detect_faces/detect_faces_backend_exception.js +7 -0
  105. package/www/react-native/detect_faces/detect_faces_config.js +34 -0
  106. package/www/react-native/detect_faces/detect_faces_exception.js +8 -0
  107. package/www/react-native/detect_faces/detect_faces_request.js +22 -0
  108. package/www/react-native/detect_faces/detect_faces_response.js +9 -0
  109. package/www/react-native/face_capture/face_capture_config.js +37 -0
  110. package/www/react-native/face_capture/face_capture_exception.js +7 -0
  111. package/www/react-native/face_capture/face_capture_image.js +8 -0
  112. package/www/react-native/face_capture/face_capture_response.js +7 -0
  113. package/www/react-native/image_params/output_image_crop.js +23 -0
  114. package/www/react-native/image_params/output_image_params.js +19 -0
  115. package/www/react-native/image_params/point.js +7 -0
  116. package/www/react-native/image_params/rect.js +9 -0
  117. package/www/react-native/image_params/size.js +12 -0
  118. package/www/react-native/image_quality/image_quality_characteristic.js +22 -0
  119. package/www/react-native/image_quality/image_quality_range.js +7 -0
  120. package/www/react-native/image_quality/image_quality_result.js +10 -0
  121. package/www/react-native/index.js +48 -0
  122. package/www/react-native/init/face_sdk_version.js +8 -0
  123. package/www/react-native/init/init_config.js +19 -0
  124. package/www/react-native/init/init_exception.js +8 -0
  125. package/www/react-native/init/license_exception.js +7 -0
  126. package/www/react-native/internal/bridge.js +20 -1
  127. package/www/react-native/liveness/liveness_backend_exception.js +7 -0
  128. package/www/react-native/liveness/liveness_config.js +43 -0
  129. package/www/react-native/liveness/liveness_exception.js +8 -0
  130. package/www/react-native/liveness/liveness_notification.js +7 -0
  131. package/www/react-native/liveness/liveness_response.js +11 -0
  132. package/www/react-native/match_faces/compared_face.js +9 -0
  133. package/www/react-native/match_faces/compared_faces_pair.js +10 -0
  134. package/www/react-native/match_faces/compared_faces_split.js +7 -0
  135. package/www/react-native/match_faces/match_faces_backend_exception.js +7 -0
  136. package/www/react-native/match_faces/match_faces_config.js +19 -0
  137. package/www/react-native/match_faces/match_faces_detection.js +9 -0
  138. package/www/react-native/match_faces/match_faces_detection_face.js +11 -0
  139. package/www/react-native/match_faces/match_faces_exception.js +8 -0
  140. package/www/react-native/match_faces/match_faces_image.js +9 -0
  141. package/www/react-native/match_faces/match_faces_request.js +27 -0
  142. package/www/react-native/match_faces/match_faces_response.js +9 -0
  143. package/www/react-native/person_database/edit_group_persons_request.js +15 -0
  144. package/www/react-native/person_database/image_upload.js +17 -0
  145. package/www/react-native/person_database/pageable_item_list.js +8 -0
  146. package/www/react-native/person_database/person.js +13 -0
  147. package/www/react-native/person_database/person_group.js +11 -0
  148. package/www/react-native/person_database/person_image.js +13 -0
  149. package/www/react-native/person_database/search_person.js +14 -0
  150. package/www/react-native/person_database/search_person_detection.js +9 -0
  151. package/www/react-native/person_database/search_person_image.js +15 -0
  152. package/www/react-native/person_database/search_person_request.js +29 -0
  153. package/www/types/index.d.ts +12 -0
  154. package/www/types/match_faces/match_faces_config.d.ts +2 -0
  155. package/www/types/person_database/search_person_request.d.ts +4 -0
  156. package/examples/cordova/.vscode/launch.json +0 -28
  157. package/examples/cordova/README.md +0 -25
  158. package/examples/cordova/config.xml +0 -26
  159. package/examples/cordova/package-lock.json +0 -1327
  160. package/examples/cordova/package.json +0 -30
  161. package/examples/cordova/scripts/android.sh +0 -8
  162. package/examples/cordova/scripts/ios.sh +0 -8
  163. package/examples/cordova/scripts/setup.sh +0 -8
  164. package/examples/cordova/www/images/logo.png +0 -0
  165. package/examples/cordova/www/index.html +0 -21
  166. package/examples/cordova/www/src/main.css +0 -83
  167. package/examples/cordova/www/src/main.html +0 -25
  168. package/examples/cordova/www/src/main.js +0 -152
  169. package/examples/ionic/index.ts +0 -17
  170. package/examples/ionic/src/images/portrait.png +0 -0
  171. /package/examples/ionic/{src/assets → assets}/.gitkeep +0 -0
  172. /package/examples/ionic/{src/images → images}/icon.png +0 -0
  173. /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.433-rc'
8
+ s.version = '7.2.444-rc'
9
9
  s.summary = package['description']
10
10
  s.license = package['license']
11
11
 
@@ -16,6 +16,6 @@ Pod::Spec.new do |s|
16
16
  s.ios.deployment_target = '13.0'
17
17
  s.source_files = 'ios/**/*.{h,m}'
18
18
  s.exclude_files = [ 'ios/CVDFaceSDK.h', 'ios/CVDFaceSDK.m' ]
19
- s.dependency 'FaceSDKStage', '7.2.3038'
19
+ s.dependency 'FaceSDKStage', '7.2.3094'
20
20
  s.dependency 'React'
21
21
  end
@@ -41,7 +41,7 @@ dependencies {
41
41
  //noinspection GradleDynamicVersion
42
42
  implementation 'com.facebook.react:react-native:+'
43
43
  //noinspection GradleDependency
44
- implementation('com.regula.face:api:7.2.3966'){
44
+ implementation('com.regula.face:api:7.1.3983'){
45
45
  transitive = true
46
46
  }
47
47
  }
@@ -12,7 +12,7 @@ repositories {
12
12
 
13
13
  dependencies {
14
14
  //noinspection GradleDependency
15
- implementation('com.regula.face:api:7.2.3966'){
15
+ implementation('com.regula.face:api:7.1.3983'){
16
16
  transitive = true
17
17
  }
18
18
  }
@@ -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 })
@@ -22,7 +22,7 @@
22
22
  "@vitejs/plugin-react": "4.3.4",
23
23
  "cordova-plugin-camera": "8.0.0",
24
24
  "cordova-plugin-file": "8.1.3",
25
- "vite-plugin-static-copy": "2.3.1"
25
+ "vite-plugin-static-copy": "3.1.2"
26
26
  }
27
27
  },
28
28
  "node_modules/@ampproject/remapping": {
@@ -1169,41 +1169,6 @@
1169
1169
  "@jridgewell/sourcemap-codec": "^1.4.14"
1170
1170
  }
1171
1171
  },
1172
- "node_modules/@nodelib/fs.scandir": {
1173
- "version": "2.1.5",
1174
- "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz",
1175
- "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==",
1176
- "license": "MIT",
1177
- "dependencies": {
1178
- "@nodelib/fs.stat": "2.0.5",
1179
- "run-parallel": "^1.1.9"
1180
- },
1181
- "engines": {
1182
- "node": ">= 8"
1183
- }
1184
- },
1185
- "node_modules/@nodelib/fs.stat": {
1186
- "version": "2.0.5",
1187
- "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz",
1188
- "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==",
1189
- "license": "MIT",
1190
- "engines": {
1191
- "node": ">= 8"
1192
- }
1193
- },
1194
- "node_modules/@nodelib/fs.walk": {
1195
- "version": "1.2.8",
1196
- "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz",
1197
- "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==",
1198
- "license": "MIT",
1199
- "dependencies": {
1200
- "@nodelib/fs.scandir": "2.1.5",
1201
- "fastq": "^1.6.0"
1202
- },
1203
- "engines": {
1204
- "node": ">= 8"
1205
- }
1206
- },
1207
1172
  "node_modules/@regulaforensics/face-core-basic": {
1208
1173
  "version": "7.1.178",
1209
1174
  "resolved": "https://registry.npmjs.org/@regulaforensics/face-core-basic/-/face-core-basic-7.1.178.tgz",
@@ -2127,31 +2092,6 @@
2127
2092
  "node": ">=6"
2128
2093
  }
2129
2094
  },
2130
- "node_modules/fast-glob": {
2131
- "version": "3.3.3",
2132
- "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.3.tgz",
2133
- "integrity": "sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==",
2134
- "license": "MIT",
2135
- "dependencies": {
2136
- "@nodelib/fs.stat": "^2.0.2",
2137
- "@nodelib/fs.walk": "^1.2.3",
2138
- "glob-parent": "^5.1.2",
2139
- "merge2": "^1.3.0",
2140
- "micromatch": "^4.0.8"
2141
- },
2142
- "engines": {
2143
- "node": ">=8.6.0"
2144
- }
2145
- },
2146
- "node_modules/fastq": {
2147
- "version": "1.19.1",
2148
- "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.19.1.tgz",
2149
- "integrity": "sha512-GwLTyxkCXjXbxqIhTsMI2Nui8huMPtnxg7krajPJAjnEG/iiOS7i+zCtWGZR9G0NBKbXKh6X9m9UIsYX/N6vvQ==",
2150
- "license": "ISC",
2151
- "dependencies": {
2152
- "reusify": "^1.0.4"
2153
- }
2154
- },
2155
2095
  "node_modules/fd-slicer": {
2156
2096
  "version": "1.1.0",
2157
2097
  "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz",
@@ -2166,7 +2106,6 @@
2166
2106
  "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.4.4.tgz",
2167
2107
  "integrity": "sha512-1NZP+GK4GfuAv3PqKvxQRDMjdSRZjnkq7KfhlNrCNNlZ0ygQFpebfrnfnq/W7fpUnAv9aGWmY1zKx7FYL3gwhg==",
2168
2108
  "license": "MIT",
2169
- "peer": true,
2170
2109
  "peerDependencies": {
2171
2110
  "picomatch": "^3 || ^4"
2172
2111
  },
@@ -2516,40 +2455,6 @@
2516
2455
  "yallist": "^3.0.2"
2517
2456
  }
2518
2457
  },
2519
- "node_modules/merge2": {
2520
- "version": "1.4.1",
2521
- "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz",
2522
- "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==",
2523
- "license": "MIT",
2524
- "engines": {
2525
- "node": ">= 8"
2526
- }
2527
- },
2528
- "node_modules/micromatch": {
2529
- "version": "4.0.8",
2530
- "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz",
2531
- "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==",
2532
- "license": "MIT",
2533
- "dependencies": {
2534
- "braces": "^3.0.3",
2535
- "picomatch": "^2.3.1"
2536
- },
2537
- "engines": {
2538
- "node": ">=8.6"
2539
- }
2540
- },
2541
- "node_modules/micromatch/node_modules/picomatch": {
2542
- "version": "2.3.1",
2543
- "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz",
2544
- "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==",
2545
- "license": "MIT",
2546
- "engines": {
2547
- "node": ">=8.6"
2548
- },
2549
- "funding": {
2550
- "url": "https://github.com/sponsors/jonschlinkert"
2551
- }
2552
- },
2553
2458
  "node_modules/minimatch": {
2554
2459
  "version": "10.0.1",
2555
2460
  "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.0.1.tgz",
@@ -2768,7 +2673,6 @@
2768
2673
  "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.2.tgz",
2769
2674
  "integrity": "sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==",
2770
2675
  "license": "MIT",
2771
- "peer": true,
2772
2676
  "engines": {
2773
2677
  "node": ">=12"
2774
2678
  },
@@ -2841,26 +2745,6 @@
2841
2745
  "node": ">=6"
2842
2746
  }
2843
2747
  },
2844
- "node_modules/queue-microtask": {
2845
- "version": "1.2.3",
2846
- "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz",
2847
- "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==",
2848
- "funding": [
2849
- {
2850
- "type": "github",
2851
- "url": "https://github.com/sponsors/feross"
2852
- },
2853
- {
2854
- "type": "patreon",
2855
- "url": "https://www.patreon.com/feross"
2856
- },
2857
- {
2858
- "type": "consulting",
2859
- "url": "https://feross.org/support"
2860
- }
2861
- ],
2862
- "license": "MIT"
2863
- },
2864
2748
  "node_modules/react": {
2865
2749
  "version": "19.1.0",
2866
2750
  "resolved": "https://registry.npmjs.org/react/-/react-19.1.0.tgz",
@@ -2931,16 +2815,6 @@
2931
2815
  "url": "https://github.com/sponsors/jonschlinkert"
2932
2816
  }
2933
2817
  },
2934
- "node_modules/reusify": {
2935
- "version": "1.1.0",
2936
- "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.1.0.tgz",
2937
- "integrity": "sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==",
2938
- "license": "MIT",
2939
- "engines": {
2940
- "iojs": ">=1.0.0",
2941
- "node": ">=0.10.0"
2942
- }
2943
- },
2944
2818
  "node_modules/rimraf": {
2945
2819
  "version": "6.0.1",
2946
2820
  "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-6.0.1.tgz",
@@ -3000,29 +2874,6 @@
3000
2874
  "fsevents": "~2.3.2"
3001
2875
  }
3002
2876
  },
3003
- "node_modules/run-parallel": {
3004
- "version": "1.2.0",
3005
- "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz",
3006
- "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==",
3007
- "funding": [
3008
- {
3009
- "type": "github",
3010
- "url": "https://github.com/sponsors/feross"
3011
- },
3012
- {
3013
- "type": "patreon",
3014
- "url": "https://www.patreon.com/feross"
3015
- },
3016
- {
3017
- "type": "consulting",
3018
- "url": "https://feross.org/support"
3019
- }
3020
- ],
3021
- "license": "MIT",
3022
- "dependencies": {
3023
- "queue-microtask": "^1.2.2"
3024
- }
3025
- },
3026
2877
  "node_modules/rxjs": {
3027
2878
  "version": "7.8.2",
3028
2879
  "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.2.tgz",
@@ -3252,11 +3103,10 @@
3252
3103
  }
3253
3104
  },
3254
3105
  "node_modules/tinyglobby": {
3255
- "version": "0.2.13",
3256
- "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.13.tgz",
3257
- "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==",
3258
3109
  "license": "MIT",
3259
- "peer": true,
3260
3110
  "dependencies": {
3261
3111
  "fdir": "^6.4.4",
3262
3112
  "picomatch": "^4.0.2"
@@ -3431,22 +3281,22 @@
3431
3281
  }
3432
3282
  },
3433
3283
  "node_modules/vite-plugin-static-copy": {
3434
- "version": "2.3.1",
3435
- "resolved": "https://registry.npmjs.org/vite-plugin-static-copy/-/vite-plugin-static-copy-2.3.1.tgz",
3436
- "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==",
3437
3287
  "license": "MIT",
3438
3288
  "dependencies": {
3439
- "chokidar": "^3.5.3",
3440
- "fast-glob": "^3.2.11",
3441
- "fs-extra": "^11.1.0",
3289
+ "chokidar": "^3.6.0",
3290
+ "fs-extra": "^11.3.0",
3442
3291
  "p-map": "^7.0.3",
3443
- "picocolors": "^1.0.0"
3292
+ "picocolors": "^1.1.1",
3293
+ "tinyglobby": "^0.2.14"
3444
3294
  },
3445
3295
  "engines": {
3446
3296
  "node": "^18.0.0 || >=20.0.0"
3447
3297
  },
3448
3298
  "peerDependencies": {
3449
- "vite": "^5.0.0 || ^6.0.0"
3299
+ "vite": "^5.0.0 || ^6.0.0 || ^7.0.0"
3450
3300
  }
3451
3301
  },
3452
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.433-rc",
10
- "@regulaforensics/face-core-basic": "7.2.250-rc",
9
+ "@regulaforensics/face-sdk": "7.2.444-rc",
10
+ "@regulaforensics/face-core-basic": "7.2.260-rc",
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>