@regulaforensics/idv 3.2.23-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.
- package/README.md +36 -0
- package/RNIDV.podspec +21 -0
- package/android/CVDIDV.kt +48 -0
- package/android/build.gradle +41 -0
- package/android/cordova.gradle +20 -0
- package/android/src/main/java/com/regula/plugin/idv/JSONConstructor.kt +135 -0
- package/android/src/main/java/com/regula/plugin/idv/Main.kt +124 -0
- package/android/src/main/java/com/regula/plugin/idv/RNIDVModule.kt +71 -0
- package/android/src/main/java/com/regula/plugin/idv/Utils.kt +60 -0
- package/examples/capacitor/README.md +15 -0
- package/examples/capacitor/android/app/build.gradle +50 -0
- package/examples/capacitor/android/app/capacitor.build.gradle +22 -0
- package/examples/capacitor/android/app/proguard-rules.pro +21 -0
- package/examples/capacitor/android/app/src/main/AndroidManifest.xml +26 -0
- package/examples/capacitor/android/app/src/main/assets/Regula/.gitkeep +0 -0
- package/examples/capacitor/android/app/src/main/java/com/regula/example/idv/capacitor/MainActivity.java +5 -0
- package/examples/capacitor/android/app/src/main/res/drawable/ic_launcher.png +0 -0
- package/examples/capacitor/android/app/src/main/res/drawable/ic_launcher_foreground.png +0 -0
- package/examples/capacitor/android/app/src/main/res/drawable/ic_launcher_round.png +0 -0
- package/examples/capacitor/android/app/src/main/res/drawable/launcher.xml +4 -0
- package/examples/capacitor/android/app/src/main/res/drawable/launcher_round.xml +4 -0
- package/examples/capacitor/android/app/src/main/res/drawable/splash.png +0 -0
- package/examples/capacitor/android/app/src/main/res/layout/activity_main.xml +12 -0
- package/examples/capacitor/android/app/src/main/res/values/styles.xml +22 -0
- package/examples/capacitor/android/build.gradle +30 -0
- package/examples/capacitor/android/capacitor.settings.gradle +15 -0
- package/examples/capacitor/android/gradle/wrapper/gradle-wrapper.jar +0 -0
- package/examples/capacitor/android/gradle/wrapper/gradle-wrapper.properties +7 -0
- package/examples/capacitor/android/gradle.properties +22 -0
- package/examples/capacitor/android/gradlew +252 -0
- package/examples/capacitor/android/gradlew.bat +94 -0
- package/examples/capacitor/android/settings.gradle +5 -0
- package/examples/capacitor/android/variables.gradle +16 -0
- package/examples/capacitor/index.html +5 -0
- package/examples/capacitor/index.tsx +16 -0
- package/examples/capacitor/ionic.config.json +7 -0
- package/examples/capacitor/ios/App/App/App.entitlements +10 -0
- package/examples/capacitor/ios/App/App/AppDelegate.swift +49 -0
- package/examples/capacitor/ios/App/App/Assets.xcassets/AppIcon.appiconset/AppIcon-512@2x.png +0 -0
- package/examples/capacitor/ios/App/App/Assets.xcassets/AppIcon.appiconset/Contents.json +14 -0
- package/examples/capacitor/ios/App/App/Assets.xcassets/Contents.json +6 -0
- package/examples/capacitor/ios/App/App/Assets.xcassets/Splash.imageset/Contents.json +23 -0
- package/examples/capacitor/ios/App/App/Assets.xcassets/Splash.imageset/splash-2732x2732-1.png +0 -0
- package/examples/capacitor/ios/App/App/Assets.xcassets/Splash.imageset/splash-2732x2732-2.png +0 -0
- package/examples/capacitor/ios/App/App/Assets.xcassets/Splash.imageset/splash-2732x2732.png +0 -0
- package/examples/capacitor/ios/App/App/Base.lproj/LaunchScreen.storyboard +32 -0
- package/examples/capacitor/ios/App/App/Base.lproj/Main.storyboard +19 -0
- package/examples/capacitor/ios/App/App/Info.plist +65 -0
- package/examples/capacitor/ios/App/App.xcodeproj/project.pbxproj +414 -0
- package/examples/capacitor/ios/App/App.xcodeproj/project.xcworkspace/contents.xcworkspacedata +7 -0
- package/examples/capacitor/ios/App/App.xcworkspace/contents.xcworkspacedata +10 -0
- package/examples/capacitor/ios/App/App.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist +8 -0
- package/examples/capacitor/ios/App/Podfile +26 -0
- package/examples/capacitor/package.json +27 -0
- package/examples/capacitor/public/assets/.gitkeep +0 -0
- package/examples/capacitor/scripts/android.sh +9 -0
- package/examples/capacitor/scripts/ios.sh +8 -0
- package/examples/capacitor/scripts/setup.sh +14 -0
- package/examples/capacitor/src/main.css +148 -0
- package/examples/capacitor/src/main.html +38 -0
- package/examples/capacitor/src/main.tsx +10 -0
- package/examples/capacitor/tsconfig.json +5 -0
- package/examples/capacitor/vite.config.ts +17 -0
- package/examples/ionic/README.md +15 -0
- package/examples/ionic/angular.json +39 -0
- package/examples/ionic/assets/.gitkeep +0 -0
- package/examples/ionic/config.xml +59 -0
- package/examples/ionic/images/icon.png +0 -0
- package/examples/ionic/index.html +19 -0
- package/examples/ionic/index.tsx +28 -0
- package/examples/ionic/ionic.config.json +7 -0
- package/examples/ionic/package.json +46 -0
- package/examples/ionic/scripts/android.sh +8 -0
- package/examples/ionic/scripts/ios.sh +8 -0
- package/examples/ionic/scripts/setup.sh +8 -0
- package/examples/ionic/src/main.css +148 -0
- package/examples/ionic/src/main.html +38 -0
- package/examples/ionic/src/main.tsx +10 -0
- package/examples/ionic/tsconfig.json +14 -0
- package/examples/react_native/README.md +15 -0
- package/examples/react_native/app.config.ts +46 -0
- package/examples/react_native/assets/.gitkeep +0 -0
- package/examples/react_native/images/icon.png +0 -0
- package/examples/react_native/index.html +11 -0
- package/examples/react_native/index.tsx +63 -0
- package/examples/react_native/metro.config.js +7 -0
- package/examples/react_native/package.json +29 -0
- package/examples/react_native/scripts/android.sh +13 -0
- package/examples/react_native/scripts/ios.sh +12 -0
- package/examples/react_native/scripts/setup.sh +9 -0
- package/examples/react_native/src/main.css +148 -0
- package/examples/react_native/src/main.html +38 -0
- package/examples/react_native/src/main.tsx +10 -0
- package/ios/CVDIDV.swift +72 -0
- package/ios/FlutterIDVPlugin.swift +72 -0
- package/ios/JSONConstructor.swift +134 -0
- package/ios/Main.swift +89 -0
- package/ios/RNIDV.swift +72 -0
- package/ios/Utils.swift +56 -0
- package/package.json +38 -0
- package/plugin.xml +45 -0
- package/test/json.tsx +0 -0
- package/test/package-lock.json +584 -0
- package/test/package.json +9 -0
- package/test/test.tsx +3 -0
- package/test/utils.tsx +38 -0
- package/www/capacitor/index.js +6 -0
- package/www/capacitor/internal/bridge.js +19 -0
- package/www/capacitor/internal/cordova.js +17 -0
- package/www/cordova.js +150 -0
- package/www/react-native/index.js +6 -0
- package/www/react-native/internal/bridge.js +19 -0
- package/www/types/index.d.ts +12 -0
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
#!/usr/bin/env bash
|
|
2
|
+
set -e
|
|
3
|
+
|
|
4
|
+
npm install
|
|
5
|
+
ionic cap sync ios || {
|
|
6
|
+
cd ios/App
|
|
7
|
+
pod update
|
|
8
|
+
cd ../../
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
cp public/assets/regula.license ios/App/App/
|
|
12
|
+
cp public/assets/db.dat ios/App/App/
|
|
13
|
+
cp public/assets/regula.license android/app/src/main/assets/Regula/
|
|
14
|
+
cp public/assets/db.dat android/app/src/main/assets/Regula/
|
|
@@ -0,0 +1,148 @@
|
|
|
1
|
+
html,
|
|
2
|
+
body {
|
|
3
|
+
margin: 0;
|
|
4
|
+
width: 100%;
|
|
5
|
+
height: 99vh;
|
|
6
|
+
display: flex;
|
|
7
|
+
overflow: hidden;
|
|
8
|
+
flex-direction: column;
|
|
9
|
+
}
|
|
10
|
+
|
|
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;
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
.column {
|
|
20
|
+
display: flex;
|
|
21
|
+
flex-direction: column;
|
|
22
|
+
align-items: center;
|
|
23
|
+
justify-content: center;
|
|
24
|
+
width: 100%;
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
.row {
|
|
28
|
+
display: flex;
|
|
29
|
+
flex-direction: row;
|
|
30
|
+
align-items: center;
|
|
31
|
+
justify-content: center;
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
.header {
|
|
35
|
+
text-align: center;
|
|
36
|
+
padding-top: 80px;
|
|
37
|
+
margin-top: -10px;
|
|
38
|
+
background-color: rgba(0, 0, 0, 0.03);
|
|
39
|
+
font-weight: 600;
|
|
40
|
+
font-size: 18px;
|
|
41
|
+
font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif;
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
.sub-header {
|
|
45
|
+
background-color: rgba(0, 0, 0, 0.03);
|
|
46
|
+
width: 100%;
|
|
47
|
+
padding-top: 13px;
|
|
48
|
+
text-align: center;
|
|
49
|
+
font-weight: 550;
|
|
50
|
+
font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif;
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
.divider {
|
|
54
|
+
height: 1px;
|
|
55
|
+
background-color: rgba(0, 0, 0, 0.075);
|
|
56
|
+
margin-top: 13px;
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
.scroll {
|
|
60
|
+
flex-grow: 1;
|
|
61
|
+
overflow-y: auto;
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
.no-scroll {
|
|
65
|
+
flex-grow: 1;
|
|
66
|
+
overflow-y: hidden;
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
.button {
|
|
70
|
+
width: 175px;
|
|
71
|
+
height: 40px;
|
|
72
|
+
margin: 5px;
|
|
73
|
+
margin-top: 10px;
|
|
74
|
+
background-color: #4285F4;
|
|
75
|
+
color: white;
|
|
76
|
+
border: none;
|
|
77
|
+
padding: 10px 20px;
|
|
78
|
+
justify-content: center;
|
|
79
|
+
font-size: 16px;
|
|
80
|
+
border-radius: 100px;
|
|
81
|
+
cursor: pointer;
|
|
82
|
+
transition: all 0.3s ease;
|
|
83
|
+
user-select: none;
|
|
84
|
+
-webkit-user-select: none;
|
|
85
|
+
-moz-user-select: none;
|
|
86
|
+
-ms-user-select: none;
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
.button:active {
|
|
90
|
+
position: relative;
|
|
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
|
+
input[type="text"] {
|
|
124
|
+
width: 173px;
|
|
125
|
+
height: 40px;
|
|
126
|
+
font-size: 15px;
|
|
127
|
+
margin: 5px;
|
|
128
|
+
border-radius: 100px;
|
|
129
|
+
padding-left: 10px;
|
|
130
|
+
padding-right: 10px;
|
|
131
|
+
margin-top: 10px;
|
|
132
|
+
}
|
|
133
|
+
|
|
134
|
+
.progress-bar {
|
|
135
|
+
width: 75%;
|
|
136
|
+
padding: 3px;
|
|
137
|
+
margin-top: 40px;
|
|
138
|
+
background-color: #eee;
|
|
139
|
+
border-radius: 8px;
|
|
140
|
+
box-shadow: inset 0 0 5px rgba(0, 0, 0, 0.2);
|
|
141
|
+
}
|
|
142
|
+
|
|
143
|
+
#progress {
|
|
144
|
+
width: 0%;
|
|
145
|
+
height: 20px;
|
|
146
|
+
background-color: #4285F4;
|
|
147
|
+
border-radius: 5px;
|
|
148
|
+
}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
<div class="column" style="height: 100%">
|
|
2
|
+
<div class="column header">
|
|
3
|
+
<span id="status">Loading...</span>
|
|
4
|
+
<div class="column divider"></div>
|
|
5
|
+
</div>
|
|
6
|
+
<div id="main" class="column no-scroll">
|
|
7
|
+
<div class="row">
|
|
8
|
+
<div class="column" style="padding: 5px;">
|
|
9
|
+
<p>Portrait</p>
|
|
10
|
+
<img id="portrait-image" src="images/portrait.png" height="160px" width="120px">
|
|
11
|
+
</div>
|
|
12
|
+
<div class="column" style="padding: 5px;">
|
|
13
|
+
<p>Document image</p>
|
|
14
|
+
<img id="document-image" src="images/document.png" height="160px" width="200px">
|
|
15
|
+
</div>
|
|
16
|
+
</div>
|
|
17
|
+
<div id="scenario-container" class="column no-scroll" style="margin-top: 15px; background-color: rgba(0, 0, 0, 0.03);">
|
|
18
|
+
<div id="scenarios" class="scroll"></div>
|
|
19
|
+
</div>
|
|
20
|
+
<div class="row" style="width: 360px; padding-top: 15px;">
|
|
21
|
+
<span id="rfid-checkbox-description" style="font-size: 18px;width: 100%;">Process rfid reading(unavailable)</span>
|
|
22
|
+
<input id="rfid-checkbox" type="checkbox" style="margin-left: auto;" disabled />
|
|
23
|
+
</div>
|
|
24
|
+
<div class="row">
|
|
25
|
+
<button id="scan" class="button">Scan document</button>
|
|
26
|
+
<button id="recognize" class="button">Scan image</button>
|
|
27
|
+
</div>
|
|
28
|
+
<button id="connect" class="button" style="width: 360px; display: none;">Connect</button>
|
|
29
|
+
<div style="padding-top: 20px;"></div>
|
|
30
|
+
</div>
|
|
31
|
+
<div id="custom-rfid" class="column no-scroll" style="display: none;">
|
|
32
|
+
<span id="rfid-description" style="font-size: 22px">Place your phone on top of the NFC tag</span>
|
|
33
|
+
<div class="progress-bar">
|
|
34
|
+
<div id="progress"></div>
|
|
35
|
+
</div>
|
|
36
|
+
<button id="cancel-rfid" class="text-button" style="margin-top: 50px; padding-bottom: 100px;">X</button>
|
|
37
|
+
</div>
|
|
38
|
+
</div>
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import react from '@vitejs/plugin-react'
|
|
2
|
+
import { defineConfig } from 'vite'
|
|
3
|
+
import { viteStaticCopy } from 'vite-plugin-static-copy';
|
|
4
|
+
|
|
5
|
+
export default defineConfig({
|
|
6
|
+
plugins: [
|
|
7
|
+
react(),
|
|
8
|
+
viteStaticCopy({
|
|
9
|
+
targets: [
|
|
10
|
+
{
|
|
11
|
+
src: 'src/main.html',
|
|
12
|
+
dest: '.'
|
|
13
|
+
}
|
|
14
|
+
]
|
|
15
|
+
})],
|
|
16
|
+
build: { outDir: 'www' }
|
|
17
|
+
})
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
# Regula IDV Ionic demo application
|
|
2
|
+
|
|
3
|
+
## How to build demo application
|
|
4
|
+
1. Download or the clone current repository using the command `git clone https://github.com/regulaforensics/npm-idv.git`.
|
|
5
|
+
2. Put `regula.license` file at `public/assets/` (you can get a trial license [here](https://client.regulaforensics.com)).
|
|
6
|
+
3. Put `db.dat` file at `public/assets/` (you can get a trial database [here](https://client.regulaforensics.com/customer/databases))
|
|
7
|
+
4. Execute `npm run setup` within this directory.
|
|
8
|
+
5. In `src/main.tsx` choose prefered login configuration(`loginType` variable) and provide your login data according to it: username and password for `credentials`, tokenUrl for `token`, apiKey for `apiKey`.
|
|
9
|
+
6. Run the app:
|
|
10
|
+
* IOS: `npm run ios`.
|
|
11
|
+
* Android: `npm run android`.
|
|
12
|
+
7. After initialization choose **General KYC - AP** from workflows list and click **Start Workflow** button.
|
|
13
|
+
8. Complete workflow and get your session id.
|
|
14
|
+
|
|
15
|
+
**Note**: `npm run ios`/`npm run android` is just one way of running the app. You can also pass `-o` or `--open` argument to the command, and this will open Xcode/Android Studio, then run the app directly from the IDE. Overall, this is a more consistent way, so if you're having troubles running the app from terminal, try running it from the IDE.
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 1,
|
|
3
|
+
"projects": {
|
|
4
|
+
"app": {
|
|
5
|
+
"root": "",
|
|
6
|
+
"sourceRoot": "src",
|
|
7
|
+
"projectType": "application",
|
|
8
|
+
"architect": {
|
|
9
|
+
"build": {
|
|
10
|
+
"builder": "@angular-devkit/build-angular:browser",
|
|
11
|
+
"options": {
|
|
12
|
+
"outputPath": "www",
|
|
13
|
+
"index": "index.html",
|
|
14
|
+
"main": "index.tsx",
|
|
15
|
+
"tsConfig": "tsconfig.json",
|
|
16
|
+
"assets": [
|
|
17
|
+
{
|
|
18
|
+
"glob": "**/*",
|
|
19
|
+
"input": "assets",
|
|
20
|
+
"output": "assets"
|
|
21
|
+
},
|
|
22
|
+
{
|
|
23
|
+
"glob": "**/*",
|
|
24
|
+
"input": "images",
|
|
25
|
+
"output": "images"
|
|
26
|
+
}
|
|
27
|
+
]
|
|
28
|
+
}
|
|
29
|
+
},
|
|
30
|
+
"ionic-cordova-build": {
|
|
31
|
+
"builder": "@ionic/cordova-builders:cordova-build",
|
|
32
|
+
"options": {
|
|
33
|
+
"browserTarget": "app:build"
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
}
|
|
File without changes
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
<?xml version='1.0' encoding='utf-8'?>
|
|
2
|
+
<widget android-packageName="com.regula.example.idv.ionic" ios-CFBundleIdentifier="com.regula.example.idv.ionic" version="1.0.0"
|
|
3
|
+
xmlns:android="http://schemas.android.com/apk/res/android">
|
|
4
|
+
<name>IDV</name>
|
|
5
|
+
<icon src="images/icon.png" />
|
|
6
|
+
<platform name="android">
|
|
7
|
+
<resource-file src="assets/regula.license" target="app/src/main/assets/Regula/regula.license" />
|
|
8
|
+
<resource-file src="assets/db.dat" target="app/src/main/assets/Regula/db.dat" />
|
|
9
|
+
<preference name="orientation" value="portrait" />
|
|
10
|
+
<preference name="AndroidEdgeToEdge" value="true" />
|
|
11
|
+
<preference name="android-minSdkVersion" value="24" />
|
|
12
|
+
<preference name="android-targetSdkVersion" value="36" />
|
|
13
|
+
<preference name="GradlePluginKotlinEnabled" value="true" />
|
|
14
|
+
<config-file parent="/*" target="AndroidManifest.xml">
|
|
15
|
+
<uses-permission android:name="android.permission.NFC" />
|
|
16
|
+
</config-file>
|
|
17
|
+
<edit-config file="app/src/main/AndroidManifest.xml" mode="merge" target="/manifest/application">
|
|
18
|
+
<application android:usesCleartextTraffic="true" />
|
|
19
|
+
</edit-config>
|
|
20
|
+
</platform>
|
|
21
|
+
<platform name="ios">
|
|
22
|
+
<resource-file src="assets/regula.license" />
|
|
23
|
+
<resource-file src="assets/db.dat" />
|
|
24
|
+
<preference name="deployment-target" value="14.0" />
|
|
25
|
+
<preference name="orientation" value="portrait" />
|
|
26
|
+
<allow-intent href="itms:*" />
|
|
27
|
+
<allow-intent href="itms-apps:*" />
|
|
28
|
+
<config-file parent="NSCameraUsageDescription" target="*-Info.plist">
|
|
29
|
+
<string>To use camera</string>
|
|
30
|
+
</config-file>
|
|
31
|
+
<config-file parent="NSPhotoLibraryUsageDescription" target="*-Info.plist">
|
|
32
|
+
<string>To pick images</string>
|
|
33
|
+
</config-file>
|
|
34
|
+
<config-file parent="NFCReaderUsageDescription" target="*-Info.plist">
|
|
35
|
+
<string>To use NFC</string>
|
|
36
|
+
</config-file>
|
|
37
|
+
<config-file parent="com.apple.developer.nfc.readersession.iso7816.select-identifiers" target="*-Info.plist">
|
|
38
|
+
<array>
|
|
39
|
+
<string>A0000002471001</string>
|
|
40
|
+
<string>E80704007F00070302</string>
|
|
41
|
+
<string>A000000167455349474E</string>
|
|
42
|
+
<string>A0000002480100</string>
|
|
43
|
+
<string>A0000002480200</string>
|
|
44
|
+
<string>A0000002480300</string>
|
|
45
|
+
<string>A00000045645444C2D3031</string>
|
|
46
|
+
</array>
|
|
47
|
+
</config-file>
|
|
48
|
+
<config-file parent="com.apple.developer.nfc.readersession.formats" target="*-Debug.plist">
|
|
49
|
+
<array>
|
|
50
|
+
<string>TAG</string>
|
|
51
|
+
</array>
|
|
52
|
+
</config-file>
|
|
53
|
+
<config-file parent="com.apple.developer.nfc.readersession.formats" target="*-Release.plist">
|
|
54
|
+
<array>
|
|
55
|
+
<string>TAG</string>
|
|
56
|
+
</array>
|
|
57
|
+
</config-file>
|
|
58
|
+
</platform>
|
|
59
|
+
</widget>
|
|
Binary file
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
<head>
|
|
2
|
+
<meta name="viewport"
|
|
3
|
+
content="viewport-fit=cover, width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=no" />
|
|
4
|
+
<base href="/" />
|
|
5
|
+
</head>
|
|
6
|
+
|
|
7
|
+
<body>
|
|
8
|
+
<ion-app>
|
|
9
|
+
<app-root></app-root>
|
|
10
|
+
</ion-app>
|
|
11
|
+
</body>
|
|
12
|
+
|
|
13
|
+
<style>
|
|
14
|
+
html,
|
|
15
|
+
body {
|
|
16
|
+
height: 100%;
|
|
17
|
+
margin: 0;
|
|
18
|
+
}
|
|
19
|
+
</style>
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import 'zone.js';
|
|
2
|
+
import { platformBrowserDynamic } from '@angular/platform-browser-dynamic'
|
|
3
|
+
import { BrowserModule } from '@angular/platform-browser'
|
|
4
|
+
import { IonicModule, Platform } from '@ionic/angular'
|
|
5
|
+
import { NgModule } from '@angular/core'
|
|
6
|
+
import { Component } from '@angular/core'
|
|
7
|
+
|
|
8
|
+
import { main } from './src/main'
|
|
9
|
+
|
|
10
|
+
@Component({
|
|
11
|
+
selector: 'app-root',
|
|
12
|
+
templateUrl: 'src/main.html',
|
|
13
|
+
styleUrl: 'src/main.css'
|
|
14
|
+
})
|
|
15
|
+
class Main {
|
|
16
|
+
constructor(platform: Platform) {
|
|
17
|
+
platform.ready().then(main)
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
@NgModule({
|
|
22
|
+
bootstrap: [Main],
|
|
23
|
+
providers: [Platform],
|
|
24
|
+
imports: [BrowserModule, IonicModule.forRoot()]
|
|
25
|
+
})
|
|
26
|
+
class MainModule { }
|
|
27
|
+
|
|
28
|
+
platformBrowserDynamic().bootstrapModule(MainModule)
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "idv",
|
|
3
|
+
"scripts": {
|
|
4
|
+
"setup": "scripts/setup.sh",
|
|
5
|
+
"ios": "scripts/ios.sh",
|
|
6
|
+
"android": "scripts/android.sh"
|
|
7
|
+
},
|
|
8
|
+
"dependencies": {
|
|
9
|
+
"@angular-devkit/build-angular": "^20.3.1",
|
|
10
|
+
"@angular/cli": "^20.3.1",
|
|
11
|
+
"@angular/common": "^20.3.0",
|
|
12
|
+
"@angular/compiler-cli": "^20.3.0",
|
|
13
|
+
"@angular/core": "^20.3.0",
|
|
14
|
+
"@angular/forms": "^20.3.0",
|
|
15
|
+
"@angular/platform-browser-dynamic": "^20.3.0",
|
|
16
|
+
"@angular/router": "^20.3.0",
|
|
17
|
+
"@ionic/angular": "^8.7.3",
|
|
18
|
+
"@ionic/cordova-builders": "^12.3.0",
|
|
19
|
+
"@regulaforensics/idv": "3.2.23-beta",
|
|
20
|
+
"@regulaforensics/document-reader": "8.4.312-beta",
|
|
21
|
+
"@regulaforensics/face-sdk": "7.2.455-beta",
|
|
22
|
+
"@regulaforensics/document-reader-core-fullauthrfid": "8.4.271-beta",
|
|
23
|
+
"@regulaforensics/face-core-basic": "7.3.280-beta",
|
|
24
|
+
"@regulaforensics/idv-module-document-reader": "3.2.29-beta",
|
|
25
|
+
"@regulaforensics/idv-module-face": "3.2.28-beta",
|
|
26
|
+
"cordova-android": "^14.0.1",
|
|
27
|
+
"cordova-ios": "^7.1.1",
|
|
28
|
+
"cordova-plugin-ionic-webview": "^5.0.1"
|
|
29
|
+
},
|
|
30
|
+
"cordova": {
|
|
31
|
+
"plugins": {
|
|
32
|
+
"@regulaforensics/idv": {},
|
|
33
|
+
"@regulaforensics/document-reader": {},
|
|
34
|
+
"@regulaforensics/face-sdk": {},
|
|
35
|
+
"@regulaforensics/document-reader-core-fullauthrfid": {},
|
|
36
|
+
"@regulaforensics/face-core-basic": {},
|
|
37
|
+
"@regulaforensics/idv-module-document-reader": {},
|
|
38
|
+
"@regulaforensics/idv-module-face": {},
|
|
39
|
+
"cordova-plugin-ionic-webview": {}
|
|
40
|
+
},
|
|
41
|
+
"platforms": [
|
|
42
|
+
"android",
|
|
43
|
+
"ios"
|
|
44
|
+
]
|
|
45
|
+
}
|
|
46
|
+
}
|
|
@@ -0,0 +1,148 @@
|
|
|
1
|
+
html,
|
|
2
|
+
body {
|
|
3
|
+
margin: 0;
|
|
4
|
+
width: 100%;
|
|
5
|
+
height: 99vh;
|
|
6
|
+
display: flex;
|
|
7
|
+
overflow: hidden;
|
|
8
|
+
flex-direction: column;
|
|
9
|
+
}
|
|
10
|
+
|
|
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;
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
.column {
|
|
20
|
+
display: flex;
|
|
21
|
+
flex-direction: column;
|
|
22
|
+
align-items: center;
|
|
23
|
+
justify-content: center;
|
|
24
|
+
width: 100%;
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
.row {
|
|
28
|
+
display: flex;
|
|
29
|
+
flex-direction: row;
|
|
30
|
+
align-items: center;
|
|
31
|
+
justify-content: center;
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
.header {
|
|
35
|
+
text-align: center;
|
|
36
|
+
padding-top: 80px;
|
|
37
|
+
margin-top: -10px;
|
|
38
|
+
background-color: rgba(0, 0, 0, 0.03);
|
|
39
|
+
font-weight: 600;
|
|
40
|
+
font-size: 18px;
|
|
41
|
+
font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif;
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
.sub-header {
|
|
45
|
+
background-color: rgba(0, 0, 0, 0.03);
|
|
46
|
+
width: 100%;
|
|
47
|
+
padding-top: 13px;
|
|
48
|
+
text-align: center;
|
|
49
|
+
font-weight: 550;
|
|
50
|
+
font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif;
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
.divider {
|
|
54
|
+
height: 1px;
|
|
55
|
+
background-color: rgba(0, 0, 0, 0.075);
|
|
56
|
+
margin-top: 13px;
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
.scroll {
|
|
60
|
+
flex-grow: 1;
|
|
61
|
+
overflow-y: auto;
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
.no-scroll {
|
|
65
|
+
flex-grow: 1;
|
|
66
|
+
overflow-y: hidden;
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
.button {
|
|
70
|
+
width: 175px;
|
|
71
|
+
height: 40px;
|
|
72
|
+
margin: 5px;
|
|
73
|
+
margin-top: 10px;
|
|
74
|
+
background-color: #4285F4;
|
|
75
|
+
color: white;
|
|
76
|
+
border: none;
|
|
77
|
+
padding: 10px 20px;
|
|
78
|
+
justify-content: center;
|
|
79
|
+
font-size: 16px;
|
|
80
|
+
border-radius: 100px;
|
|
81
|
+
cursor: pointer;
|
|
82
|
+
transition: all 0.3s ease;
|
|
83
|
+
user-select: none;
|
|
84
|
+
-webkit-user-select: none;
|
|
85
|
+
-moz-user-select: none;
|
|
86
|
+
-ms-user-select: none;
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
.button:active {
|
|
90
|
+
position: relative;
|
|
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
|
+
input[type="text"] {
|
|
124
|
+
width: 173px;
|
|
125
|
+
height: 40px;
|
|
126
|
+
font-size: 15px;
|
|
127
|
+
margin: 5px;
|
|
128
|
+
border-radius: 100px;
|
|
129
|
+
padding-left: 10px;
|
|
130
|
+
padding-right: 10px;
|
|
131
|
+
margin-top: 10px;
|
|
132
|
+
}
|
|
133
|
+
|
|
134
|
+
.progress-bar {
|
|
135
|
+
width: 75%;
|
|
136
|
+
padding: 3px;
|
|
137
|
+
margin-top: 40px;
|
|
138
|
+
background-color: #eee;
|
|
139
|
+
border-radius: 8px;
|
|
140
|
+
box-shadow: inset 0 0 5px rgba(0, 0, 0, 0.2);
|
|
141
|
+
}
|
|
142
|
+
|
|
143
|
+
#progress {
|
|
144
|
+
width: 0%;
|
|
145
|
+
height: 20px;
|
|
146
|
+
background-color: #4285F4;
|
|
147
|
+
border-radius: 5px;
|
|
148
|
+
}
|