@regulaforensics/ionic-native-document-reader 6.4.0 → 6.6.0

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 (125) hide show
  1. package/example/config.xml +9 -3
  2. package/example/package.json +10 -10
  3. package/example/src/app/app.component.spec.ts +2 -2
  4. package/example/src/app/app.component.ts +2 -2
  5. package/example/src/app/app.module.ts +2 -2
  6. package/example/src/app/home/home.module.ts +2 -2
  7. package/example/src/app/home/home.page.ts +24 -24
  8. package/index.d.ts +3653 -3534
  9. package/index.js +3618 -3444
  10. package/index.ts +7366 -0
  11. package/ngx/index.d.ts +3653 -3534
  12. package/ngx/index.js +3618 -3444
  13. package/ngx/index.metadata.json +1 -1
  14. package/package.json +1 -1
  15. package/reactExample/README.md +0 -24
  16. package/reactExample/android/app/build/.npmkeep +0 -0
  17. package/reactExample/android/app/build.gradle +0 -51
  18. package/reactExample/android/app/proguard-rules.pro +0 -21
  19. package/reactExample/android/app/src/androidTest/java/com/getcapacitor/myapp/ExampleInstrumentedTest.java +0 -26
  20. package/reactExample/android/app/src/main/AndroidManifest.xml +0 -42
  21. package/reactExample/android/app/src/main/java/com/regula/documentreader/MainActivity.java +0 -5
  22. package/reactExample/android/app/src/main/res/drawable/ic_launcher_background.xml +0 -170
  23. package/reactExample/android/app/src/main/res/drawable/splash.png +0 -0
  24. package/reactExample/android/app/src/main/res/drawable-land-hdpi/splash.png +0 -0
  25. package/reactExample/android/app/src/main/res/drawable-land-mdpi/splash.png +0 -0
  26. package/reactExample/android/app/src/main/res/drawable-land-xhdpi/splash.png +0 -0
  27. package/reactExample/android/app/src/main/res/drawable-land-xxhdpi/splash.png +0 -0
  28. package/reactExample/android/app/src/main/res/drawable-land-xxxhdpi/splash.png +0 -0
  29. package/reactExample/android/app/src/main/res/drawable-port-hdpi/splash.png +0 -0
  30. package/reactExample/android/app/src/main/res/drawable-port-mdpi/splash.png +0 -0
  31. package/reactExample/android/app/src/main/res/drawable-port-xhdpi/splash.png +0 -0
  32. package/reactExample/android/app/src/main/res/drawable-port-xxhdpi/splash.png +0 -0
  33. package/reactExample/android/app/src/main/res/drawable-port-xxxhdpi/splash.png +0 -0
  34. package/reactExample/android/app/src/main/res/drawable-v24/ic_launcher_foreground.xml +0 -34
  35. package/reactExample/android/app/src/main/res/layout/activity_main.xml +0 -12
  36. package/reactExample/android/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml +0 -5
  37. package/reactExample/android/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml +0 -5
  38. package/reactExample/android/app/src/main/res/mipmap-hdpi/ic_launcher.png +0 -0
  39. package/reactExample/android/app/src/main/res/mipmap-hdpi/ic_launcher_foreground.png +0 -0
  40. package/reactExample/android/app/src/main/res/mipmap-hdpi/ic_launcher_round.png +0 -0
  41. package/reactExample/android/app/src/main/res/mipmap-mdpi/ic_launcher.png +0 -0
  42. package/reactExample/android/app/src/main/res/mipmap-mdpi/ic_launcher_foreground.png +0 -0
  43. package/reactExample/android/app/src/main/res/mipmap-mdpi/ic_launcher_round.png +0 -0
  44. package/reactExample/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png +0 -0
  45. package/reactExample/android/app/src/main/res/mipmap-xhdpi/ic_launcher_foreground.png +0 -0
  46. package/reactExample/android/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png +0 -0
  47. package/reactExample/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png +0 -0
  48. package/reactExample/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_foreground.png +0 -0
  49. package/reactExample/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png +0 -0
  50. package/reactExample/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png +0 -0
  51. package/reactExample/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_foreground.png +0 -0
  52. package/reactExample/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png +0 -0
  53. package/reactExample/android/app/src/main/res/values/ic_launcher_background.xml +0 -4
  54. package/reactExample/android/app/src/main/res/values/strings.xml +0 -7
  55. package/reactExample/android/app/src/main/res/values/styles.xml +0 -22
  56. package/reactExample/android/app/src/main/res/xml/file_paths.xml +0 -5
  57. package/reactExample/android/app/src/test/java/com/getcapacitor/myapp/ExampleUnitTest.java +0 -18
  58. package/reactExample/android/build.gradle +0 -29
  59. package/reactExample/android/gradle/wrapper/gradle-wrapper.jar +0 -0
  60. package/reactExample/android/gradle/wrapper/gradle-wrapper.properties +0 -5
  61. package/reactExample/android/gradle.properties +0 -24
  62. package/reactExample/android/gradlew +0 -185
  63. package/reactExample/android/gradlew.bat +0 -89
  64. package/reactExample/android/settings.gradle +0 -5
  65. package/reactExample/android/variables.gradle +0 -14
  66. package/reactExample/capacitor.config.ts +0 -10
  67. package/reactExample/ionic.config.json +0 -7
  68. package/reactExample/ios/App/App/App.entitlements +0 -11
  69. package/reactExample/ios/App/App/AppDelegate.swift +0 -60
  70. package/reactExample/ios/App/App/Assets.xcassets/AppIcon.appiconset/AppIcon-20x20@1x.png +0 -0
  71. package/reactExample/ios/App/App/Assets.xcassets/AppIcon.appiconset/AppIcon-20x20@2x-1.png +0 -0
  72. package/reactExample/ios/App/App/Assets.xcassets/AppIcon.appiconset/AppIcon-20x20@2x.png +0 -0
  73. package/reactExample/ios/App/App/Assets.xcassets/AppIcon.appiconset/AppIcon-20x20@3x.png +0 -0
  74. package/reactExample/ios/App/App/Assets.xcassets/AppIcon.appiconset/AppIcon-29x29@1x.png +0 -0
  75. package/reactExample/ios/App/App/Assets.xcassets/AppIcon.appiconset/AppIcon-29x29@2x-1.png +0 -0
  76. package/reactExample/ios/App/App/Assets.xcassets/AppIcon.appiconset/AppIcon-29x29@2x.png +0 -0
  77. package/reactExample/ios/App/App/Assets.xcassets/AppIcon.appiconset/AppIcon-29x29@3x.png +0 -0
  78. package/reactExample/ios/App/App/Assets.xcassets/AppIcon.appiconset/AppIcon-40x40@1x.png +0 -0
  79. package/reactExample/ios/App/App/Assets.xcassets/AppIcon.appiconset/AppIcon-40x40@2x-1.png +0 -0
  80. package/reactExample/ios/App/App/Assets.xcassets/AppIcon.appiconset/AppIcon-40x40@2x.png +0 -0
  81. package/reactExample/ios/App/App/Assets.xcassets/AppIcon.appiconset/AppIcon-40x40@3x.png +0 -0
  82. package/reactExample/ios/App/App/Assets.xcassets/AppIcon.appiconset/AppIcon-512@2x.png +0 -0
  83. package/reactExample/ios/App/App/Assets.xcassets/AppIcon.appiconset/AppIcon-60x60@2x.png +0 -0
  84. package/reactExample/ios/App/App/Assets.xcassets/AppIcon.appiconset/AppIcon-60x60@3x.png +0 -0
  85. package/reactExample/ios/App/App/Assets.xcassets/AppIcon.appiconset/AppIcon-76x76@1x.png +0 -0
  86. package/reactExample/ios/App/App/Assets.xcassets/AppIcon.appiconset/AppIcon-76x76@2x.png +0 -0
  87. package/reactExample/ios/App/App/Assets.xcassets/AppIcon.appiconset/AppIcon-83.5x83.5@2x.png +0 -0
  88. package/reactExample/ios/App/App/Assets.xcassets/AppIcon.appiconset/Contents.json +0 -116
  89. package/reactExample/ios/App/App/Assets.xcassets/Contents.json +0 -6
  90. package/reactExample/ios/App/App/Assets.xcassets/Splash.imageset/Contents.json +0 -23
  91. package/reactExample/ios/App/App/Assets.xcassets/Splash.imageset/splash-2732x2732-1.png +0 -0
  92. package/reactExample/ios/App/App/Assets.xcassets/Splash.imageset/splash-2732x2732-2.png +0 -0
  93. package/reactExample/ios/App/App/Assets.xcassets/Splash.imageset/splash-2732x2732.png +0 -0
  94. package/reactExample/ios/App/App/Base.lproj/LaunchScreen.storyboard +0 -32
  95. package/reactExample/ios/App/App/Base.lproj/Main.storyboard +0 -19
  96. package/reactExample/ios/App/App/Info.plist +0 -70
  97. package/reactExample/ios/App/App/capacitor.config.json +0 -6
  98. package/reactExample/ios/App/App/config.xml +0 -19
  99. package/reactExample/ios/App/App.xcodeproj/project.pbxproj +0 -422
  100. package/reactExample/ios/App/App.xcodeproj/project.xcworkspace/contents.xcworkspacedata +0 -7
  101. package/reactExample/ios/App/App.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist +0 -8
  102. package/reactExample/ios/App/App.xcworkspace/contents.xcworkspacedata +0 -10
  103. package/reactExample/ios/App/App.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist +0 -8
  104. package/reactExample/ios/App/Podfile +0 -23
  105. package/reactExample/package.json +0 -84
  106. package/reactExample/public/assets/icon/favicon.png +0 -0
  107. package/reactExample/public/assets/icon/icon.png +0 -0
  108. package/reactExample/public/assets/img/id.png +0 -0
  109. package/reactExample/public/assets/img/portrait.png +0 -0
  110. package/reactExample/public/assets/shapes.svg +0 -1
  111. package/reactExample/public/index.html +0 -114
  112. package/reactExample/public/manifest.json +0 -21
  113. package/reactExample/src/App.test.tsx +0 -8
  114. package/reactExample/src/App.tsx +0 -42
  115. package/reactExample/src/assets/img/id.png +0 -0
  116. package/reactExample/src/assets/img/portrait.png +0 -0
  117. package/reactExample/src/index.tsx +0 -22
  118. package/reactExample/src/pages/Home.tsx +0 -328
  119. package/reactExample/src/react-app-env.d.ts +0 -1
  120. package/reactExample/src/reportWebVitals.ts +0 -15
  121. package/reactExample/src/service-worker.ts +0 -80
  122. package/reactExample/src/serviceWorkerRegistration.ts +0 -142
  123. package/reactExample/src/setupTests.ts +0 -14
  124. package/reactExample/src/theme/variables.css +0 -236
  125. package/reactExample/tsconfig.json +0 -26
@@ -1 +0,0 @@
1
- <svg width="350" height="140" xmlns="http://www.w3.org/2000/svg" style="background:#f6f7f9"><g fill="none" fill-rule="evenodd"><path fill="#F04141" style="mix-blend-mode:multiply" d="M61.905-34.23l96.194 54.51-66.982 54.512L22 34.887z"/><circle fill="#10DC60" style="mix-blend-mode:multiply" cx="155.5" cy="135.5" r="57.5"/><path fill="#3880FF" style="mix-blend-mode:multiply" d="M208.538 9.513l84.417 15.392L223.93 93.93z"/><path fill="#FFCE00" style="mix-blend-mode:multiply" d="M268.625 106.557l46.332-26.75 46.332 26.75v53.5l-46.332 26.75-46.332-26.75z"/><circle fill="#7044FF" style="mix-blend-mode:multiply" cx="299.5" cy="9.5" r="38.5"/><rect fill="#11D3EA" style="mix-blend-mode:multiply" transform="rotate(-60 148.47 37.886)" x="143.372" y="-7.056" width="10.196" height="89.884" rx="5.098"/><path d="M-25.389 74.253l84.86 8.107c5.498.525 9.53 5.407 9.004 10.905a10 10 0 0 1-.057.477l-12.36 85.671a10.002 10.002 0 0 1-11.634 8.42l-86.351-15.226c-5.44-.959-9.07-6.145-8.112-11.584l13.851-78.551a10 10 0 0 1 10.799-8.219z" fill="#7044FF" style="mix-blend-mode:multiply"/><circle fill="#0CD1E8" style="mix-blend-mode:multiply" cx="273.5" cy="106.5" r="20.5"/></g></svg>
@@ -1,114 +0,0 @@
1
- <!DOCTYPE html>
2
- <html lang="en">
3
-
4
- <head>
5
- <meta charset="utf-8" />
6
- <title>Ionic App</title>
7
-
8
- <base href="/" />
9
-
10
- <meta name="color-scheme" content="light dark" />
11
- <meta name="viewport" content="viewport-fit=cover, width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=no" />
12
- <meta name="format-detection" content="telephone=no" />
13
- <meta name="msapplication-tap-highlight" content="no" />
14
-
15
- <link rel="manifest" href="%PUBLIC_URL%/manifest.json" />
16
-
17
- <link rel="shortcut icon" type="image/png" href="%PUBLIC_URL%/assets/icon/favicon.png" />
18
-
19
- <!-- add to homescreen for ios -->
20
- <meta name="apple-mobile-web-app-capable" content="yes" />
21
- <meta name="apple-mobile-web-app-title" content="Ionic App" />
22
- <meta name="apple-mobile-web-app-status-bar-style" content="black" />
23
- </head>
24
-
25
- <body>
26
- <div class="rfidUI" style="text-align: center; background-color: #F5FCFF; height: 100%; width:100%; display: none;">
27
- <div style="position: absolute; top: 50%; left: 50%; width:100%; -ms-transform: translate(-50%, -50%); transform: translate(-50%, -50%); ">
28
- <p class="rfidUIHeader">Reading RFID</p>
29
- <p class="rfidDescription">Place your phone on top of the NFC tag</p>
30
- <progress class="rfidProgress" value="0" max="100"></progress>
31
- <br><br><br>
32
- <button class="cancelButton">X</button>
33
- </div>
34
- </div>
35
- <div class="mainUI" style="text-align: center;background-color: #F5FCFF;height: 100%;">
36
- <div style="align-items: center; text-align: center; width: 100%">
37
- <br>
38
- <p class="status">Ready</p>
39
- </div>
40
- <div style=" align-items:center; text-align: center;display: inline-block;">
41
- <p style="margin-bottom: 5px">Portrait</p>
42
- <img style="height: 133px; width: 100px" src="assets/img/portrait.png" resizeMode="contain" class="portraitImage" />
43
- </div>
44
- <div style="align-items: center; text-align: center; display: inline-block;">
45
- <p style="margin-bottom: 5px">Document</p>
46
- <img style="height: 133px;" src="assets/img/id.png" resizeMode="contain" class="documentImage" />
47
- </div>
48
- <br><br>
49
- <div class="scenariosRadioGroup" style="position: absolute; bottom: 100px; top: 230px; left: 75px; padding: 5px; text-align:left; overflow: auto">
50
- </div>
51
-
52
- <div style="position: absolute; bottom: 10px; width: 100%; text-align: center; align-items: center">
53
- <div id="rfidDiv" style="flex-direction: row; padding: 5px">
54
- <input type="checkbox" class="rfidCheckbox" name="rfid" disabled=true></input><span class="rfidCheckboxText" style="color: lightgrey"> Process rfid reading(unavailable)</span><br>
55
- </div>
56
- <div style="flex-direction: row; padding: 10px">
57
- <button class="showScannerButton" style="margin-right: 20px">scan doc</button>
58
- <button class="showImagePicker" style="margin-left: 20px">scan image</button>
59
- </div>
60
- </div>
61
- </div>
62
-
63
-
64
- <style type="text/css">
65
- button {
66
- width: 40%;
67
- -moz-box-shadow: inset 0px -3px 7px 0px #29bbff;
68
- -webkit-box-shadow: inset 0px -3px 7px 0px #29bbff;
69
- box-shadow: inset 0px -3px 7px 0px #29bbff;
70
- background: -webkit-gradient(linear, left top, left bottom, color-stop(0.05, #2dabf9), color-stop(1, #0688fa));
71
- background: -moz-linear-gradient(top, #2dabf9 5%, #0688fa 100%);
72
- background: -webkit-linear-gradient(top, #2dabf9 5%, #0688fa 100%);
73
- background: -o-linear-gradient(top, #2dabf9 5%, #0688fa 100%);
74
- background: -ms-linear-gradient(top, #2dabf9 5%, #0688fa 100%);
75
- background: linear-gradient(to bottom, #2dabf9 5%, #0688fa 100%);
76
- filter: progid: DXImageTransform.Microsoft.gradient(startColorstr='#2dabf9', endColorstr='#0688fa', GradientType=0);
77
- background-color: #2dabf9;
78
- -moz-border-radius: 3px;
79
- -webkit-border-radius: 3px;
80
- border-radius: 3px;
81
- border: 1px solid #0b0e07;
82
- display: inline-block;
83
- cursor: pointer;
84
- color: #ffffff;
85
- font-family: Arial;
86
- font-size: 15px;
87
- padding: 9px 23px;
88
- text-decoration: none;
89
- text-shadow: 0px 1px 0px #263666;
90
- }
91
-
92
- button:hover {
93
- background: -webkit-gradient(linear, left top, left bottom, color-stop(0.05, #0688fa), color-stop(1, #2dabf9));
94
- background: -moz-linear-gradient(top, #0688fa 5%, #2dabf9 100%);
95
- background: -webkit-linear-gradient(top, #0688fa 5%, #2dabf9 100%);
96
- background: -o-linear-gradient(top, #0688fa 5%, #2dabf9 100%);
97
- background: -ms-linear-gradient(top, #0688fa 5%, #2dabf9 100%);
98
- background: linear-gradient(to bottom, #0688fa 5%, #2dabf9 100%);
99
- filter: progid: DXImageTransform.Microsoft.gradient(startColorstr='#0688fa', endColorstr='#2dabf9', GradientType=0);
100
- background-color: #0688fa;
101
- }
102
-
103
- button:active {
104
- position: relative;
105
- top: 1px;
106
- }
107
-
108
- div {
109
- color: black;
110
- }
111
- </style>
112
- </body>
113
-
114
- </html>
@@ -1,21 +0,0 @@
1
- {
2
- "short_name": "Ionic App",
3
- "name": "My Ionic App",
4
- "icons": [
5
- {
6
- "src": "assets/icon/favicon.png",
7
- "sizes": "64x64 32x32 24x24 16x16",
8
- "type": "image/x-icon"
9
- },
10
- {
11
- "src": "assets/icon/icon.png",
12
- "type": "image/png",
13
- "sizes": "512x512",
14
- "purpose": "maskable"
15
- }
16
- ],
17
- "start_url": ".",
18
- "display": "standalone",
19
- "theme_color": "#ffffff",
20
- "background_color": "#ffffff"
21
- }
@@ -1,8 +0,0 @@
1
- import React from 'react';
2
- import { render } from '@testing-library/react';
3
- import App from './App';
4
-
5
- test('renders without crashing', () => {
6
- const { baseElement } = render(<App />);
7
- expect(baseElement).toBeDefined();
8
- });
@@ -1,42 +0,0 @@
1
- import { Redirect, Route } from 'react-router-dom';
2
- import { IonApp, IonRouterOutlet, setupIonicReact } from '@ionic/react';
3
- import { IonReactRouter } from '@ionic/react-router';
4
- import Home from './pages/Home';
5
-
6
- /* Core CSS required for Ionic components to work properly */
7
- import '@ionic/react/css/core.css';
8
-
9
- /* Basic CSS for apps built with Ionic */
10
- import '@ionic/react/css/normalize.css';
11
- import '@ionic/react/css/structure.css';
12
- import '@ionic/react/css/typography.css';
13
-
14
- /* Optional CSS utils that can be commented out */
15
- import '@ionic/react/css/padding.css';
16
- import '@ionic/react/css/float-elements.css';
17
- import '@ionic/react/css/text-alignment.css';
18
- import '@ionic/react/css/text-transformation.css';
19
- import '@ionic/react/css/flex-utils.css';
20
- import '@ionic/react/css/display.css';
21
-
22
- /* Theme variables */
23
- import './theme/variables.css';
24
-
25
- setupIonicReact();
26
-
27
- const App: React.FC = () => (
28
- <IonApp>
29
- <IonReactRouter>
30
- <IonRouterOutlet>
31
- <Route exact path="/home">
32
- <Home />
33
- </Route>
34
- <Route exact path="/">
35
- <Redirect to="/home" />
36
- </Route>
37
- </IonRouterOutlet>
38
- </IonReactRouter>
39
- </IonApp>
40
- );
41
-
42
- export default App;
Binary file
@@ -1,22 +0,0 @@
1
- import React from 'react';
2
- import ReactDOM from 'react-dom';
3
- import App from './App';
4
- import * as serviceWorkerRegistration from './serviceWorkerRegistration';
5
- import reportWebVitals from './reportWebVitals';
6
-
7
- ReactDOM.render(
8
- <React.StrictMode>
9
- <App />
10
- </React.StrictMode>,
11
- document.getElementById('root')
12
- );
13
-
14
- // If you want your app to work offline and load faster, you can change
15
- // unregister() to register() below. Note this comes with some pitfalls.
16
- // Learn more about service workers: https://cra.link/PWA
17
- serviceWorkerRegistration.unregister();
18
-
19
- // If you want to start measuring performance in your app, pass a function
20
- // to log results (for example: reportWebVitals(console.log))
21
- // or send to an analytics endpoint. Learn more: https://bit.ly/CRA-vitals
22
- reportWebVitals();
@@ -1,328 +0,0 @@
1
- import { IonPage, isPlatform } from '@ionic/react';
2
- import { DocumentReader, DocumentReaderScenario, Enum, DocumentReaderCompletion, DocumentReaderResults, DocumentReaderNotification } from '@regulaforensics/ionic-native-document-reader';
3
- import React from "react";
4
- import { File } from '@ionic-native/file'
5
- import { AndroidPermissions } from "@ionic-native/android-permissions"
6
- import { ImagePicker } from "@ionic-native/image-picker"
7
-
8
- var doRfid: boolean = false
9
- var isReadingRfid: boolean = false
10
- var rfidUIHeader: string = "Reading RFID"
11
- var rfidUIHeaderColor: string = "black"
12
- var rfidDescription: string = "Place your phone on top of the NFC tag"
13
- var rfidProgress: number = -1
14
-
15
- const status = document.querySelector('.status') as HTMLElement
16
- const portraitImage = document.querySelector('.portraitImage') as any
17
- const documentImage = document.querySelector('.documentImage') as any
18
- const showScannerButton = document.querySelector('.showScannerButton') as HTMLElement
19
- const showImagePicker = document.querySelector('.showImagePicker') as HTMLElement
20
- const scenariosRadioGroup = document.querySelector('.scenariosRadioGroup') as HTMLElement
21
- const rfidCheckbox = document.querySelector('.rfidCheckbox') as HTMLIonCheckboxElement
22
- const rfidCheckboxText = document.querySelector('.rfidCheckboxText') as HTMLElement
23
- const rfidUI = document.querySelector('.rfidUI') as HTMLElement
24
- const mainUI = document.querySelector('.mainUI') as HTMLElement
25
- const rfidUIHeaderRef = document.querySelector('.rfidUIHeader') as HTMLElement
26
- const rfidDescriptionRef = document.querySelector('.rfidDescription') as HTMLElement
27
- const rfidProgressRef = document.querySelector('.rfidProgress') as HTMLIonProgressBarElement
28
- const cancelButtonRef = document.querySelector('.cancelButton') as HTMLElement
29
-
30
- var error1 = (e: any) => {
31
- console.log(e)
32
- status.innerHTML = e
33
- status.style.backgroundColor = "red"
34
- }
35
- var error2 = (e: any) => {
36
- e = JSON.stringify(e, undefined, 2)
37
- console.log(e)
38
- alert(e)
39
- }
40
-
41
- cancelButtonRef.addEventListener("click", stopRfid)
42
- updateUI()
43
- status.innerHTML = "loading......"
44
- status.style.backgroundColor = "grey"
45
- document.addEventListener("deviceready", onDeviceReady, false);
46
-
47
- function onDeviceReady(){
48
- readFile("public/assets", "regula.license", (license: any) => {
49
- DocumentReader.prepareDatabase("Full").subscribe(r => {
50
- if (r != "database prepared")
51
- status.innerHTML = "Downloading database: " + r + "%"
52
- else {
53
- status.innerHTML = "Loading......"
54
- DocumentReader.initializeReader(license).then(m => onInitialized()).catch(error1)
55
- }
56
- })
57
- })
58
- }
59
-
60
- function addCertificates() {
61
- File.resolveDirectoryUrl(File.applicationDirectory + "certificates").then(dir => {
62
- dir.createReader().readEntries(entries => {
63
- for (let i = 0; i < entries.length; i++) {
64
- if (entries[i].isFile) {
65
- var findExt = entries[i].name.split('.')
66
- var pkdResourceType = 0
67
- if (findExt.length > 0)
68
- pkdResourceType = Enum.PKDResourceType.getType(findExt[findExt.length - 1].toLowerCase())
69
- readFile("certificates", entries[i].name, (file: any, resType: any) => {
70
- resType = resType[0]
71
- var certificates = []
72
- certificates.push({
73
- 'binaryData': file,
74
- 'resourceType': resType
75
- })
76
- DocumentReader.addPKDCertificates(certificates).then(s => console.log("certificate added")).catch(e => console.log(e))
77
- }, pkdResourceType)
78
- }
79
- }
80
- })
81
- })
82
- }
83
-
84
- function readFile(dirPath: string, fileName: string, callback: any, ...items: any) {
85
- File.resolveDirectoryUrl(File.applicationDirectory + dirPath).then(dir => File.getFile(dir, fileName, {})).then(fileEntry => fileEntry.file(file => {
86
- var reader = new FileReader()
87
- reader.onloadend = (evt) => {
88
- var data = reader.result as String
89
- data = data.substring(data.indexOf(',') + 1)
90
- callback(data, items)
91
- }
92
- reader.readAsDataURL(file)
93
- }))
94
- }
95
-
96
- function updateUI() {
97
- mainUI.style.display = isReadingRfid ? "none" : ""
98
- rfidUI.style.display = isReadingRfid ? "" : "none"
99
- rfidUIHeaderRef.innerHTML = rfidUIHeader
100
- rfidUIHeaderRef.style.color = rfidUIHeaderColor
101
- rfidDescriptionRef.innerHTML = rfidDescription
102
- rfidProgressRef.value = rfidProgress
103
- }
104
-
105
- function stopRfid() {
106
- hideRfidUI()
107
- DocumentReader.stopRFIDReader()
108
- }
109
-
110
- function handleCompletion(completion: DocumentReaderCompletion) {
111
- if (isReadingRfid && (completion.action === Enum.DocReaderAction.CANCEL || completion.action === Enum.DocReaderAction.ERROR))
112
- hideRfidUI()
113
- if (isReadingRfid && completion.action === Enum.DocReaderAction.NOTIFICATION)
114
- updateRfidUI(completion.results!!.documentReaderNotification!!)
115
- if (completion.action === Enum.DocReaderAction.COMPLETE)
116
- if (isReadingRfid) {
117
- if (completion.results!!.rfidResult !== 1)
118
- restartRfidUI()
119
- else {
120
- hideRfidUI()
121
- displayResults(completion.results!!)
122
- }
123
- }
124
- else
125
- handleResults(completion.results!!)
126
- }
127
-
128
- function showRfidUI() {
129
- // show animation
130
- isReadingRfid = true
131
- updateUI()
132
- }
133
-
134
- function hideRfidUI() {
135
- // show animation
136
- restartRfidUI()
137
- isReadingRfid = false
138
- rfidUIHeader = "Reading RFID"
139
- rfidUIHeaderColor = "black"
140
- updateUI()
141
- }
142
-
143
- function restartRfidUI() {
144
- rfidUIHeaderColor = "red"
145
- rfidUIHeader = "Failed!"
146
- rfidDescription = "Place your phone on top of the NFC tag"
147
- rfidProgress = -1
148
- updateUI()
149
- }
150
-
151
- function updateRfidUI(notification: DocumentReaderNotification) {
152
- if (notification.code === Enum.eRFID_NotificationCodes.RFID_NOTIFICATION_PCSC_READING_DATAGROUP)
153
- rfidDescription = Enum.eRFID_DataFile_Type.getTranslation(notification.attachment!!)
154
- rfidUIHeader = "Reading RFID"
155
- rfidUIHeaderColor = "black"
156
- rfidProgress = notification.value!!
157
- updateUI()
158
- if (isPlatform("ios"))
159
- DocumentReader.setRfidSessionStatus(rfidDescription + "\n" + notification.value + "%")
160
- }
161
-
162
- function customRFID() {
163
- showRfidUI()
164
- DocumentReader.readRFID().subscribe(m =>
165
- handleCompletion(DocumentReaderCompletion.fromJson(JSON.parse(m))))
166
- }
167
-
168
- function usualRFID() {
169
- doRfid = false
170
- rfidCheckbox.checked = false
171
- var notification = "rfidNotificationCompletionEvent"
172
- var paCert = "paCertificateCompletionEvent"
173
- var taCert = "taCertificateCompletionEvent"
174
- var taSig = "taSignatureCompletionEvent"
175
- DocumentReader.startRFIDReader().subscribe(m => {
176
- if (m.substring(0, notification.length) === notification) {
177
- m = m.substring(notification.length, m.length)
178
- console.log(notification + ": " + m)
179
- } else if (m.substring(0, paCert.length) === paCert) {
180
- m = m.substring(paCert.length, m.length)
181
- console.log(paCert + ": " + m)
182
- } else if (m.substring(0, taCert.length) === taCert) {
183
- m = m.substring(taCert.length, m.length)
184
- console.log(taCert + ": " + m)
185
- } else if (m.substring(0, taSig.length) === taSig) {
186
- m = m.substring(taSig.length, m.length)
187
- console.log(taSig + ": " + m)
188
- } else
189
- handleCompletion(DocumentReaderCompletion.fromJson(JSON.parse(m)))
190
- })
191
- }
192
-
193
- function onInitialized() {
194
- status.innerHTML = "Ready"
195
- status.style.backgroundColor = "green"
196
- showScannerButton.addEventListener("click", scan)
197
- if (isPlatform("android"))
198
- showImagePicker.addEventListener("click", recognizeAndroid)
199
- if (isPlatform("ios"))
200
- showImagePicker.addEventListener("click", recognize)
201
- DocumentReader.setConfig({
202
- functionality: {
203
- videoCaptureMotionControl: true,
204
- showCaptureButton: true
205
- },
206
- customization: {
207
- showResultStatusMessages: true,
208
- showStatusMessages: true
209
- },
210
- processParams: {
211
- scenario: "Mrz",
212
- doRfid: false
213
- },
214
- })
215
- DocumentReader.getAvailableScenarios().then(sc =>
216
- DocumentReader.isRFIDAvailableForUse().then(canRfid =>
217
- postInitialize(JSON.parse(sc), canRfid)))
218
- DocumentReader.setRfidDelegate(Enum.RFIDDelegate.NO_PA)
219
- // addCertificates()
220
- }
221
-
222
- function postInitialize(scenarios: Array<any>, canRfid: boolean) {
223
- var inputs = []
224
- for (let index of scenarios) {
225
- var input = document.createElement("input")
226
- inputs.push(input)
227
- input.type = "radio"
228
- input.name = "scenario"
229
- input.value = (DocumentReaderScenario.fromJson(typeof index === "string" ? JSON.parse(index) : index).name)!!
230
- if (index == 0)
231
- input.checked = true
232
- input.onclick = () => DocumentReader.setConfig({ processParams: { scenario: DocumentReaderScenario.fromJson(typeof index === "string" ? JSON.parse(index) : index).name } })
233
- input.style.display = "inline-block"
234
- }
235
- for (let input of inputs) {
236
- scenariosRadioGroup.appendChild(input)
237
- var label = document.createElement("span")
238
- label.innerHTML = input.value
239
- label.style.display = "inline-block"
240
- label.style.width = "200px"
241
- label.onclick = () => input.click()
242
- scenariosRadioGroup.appendChild(label)
243
- scenariosRadioGroup.appendChild(document.createElement("br"))
244
- }
245
- if (canRfid) {
246
- rfidCheckbox.disabled = false
247
- rfidCheckboxText.style.color = "black"
248
- rfidCheckboxText.innerHTML = "Process rfid reading"
249
- rfidCheckbox.onclick = () => doRfid = !doRfid
250
- }
251
- }
252
-
253
- function handleResults(results: DocumentReaderResults) {
254
- clearResults()
255
- if (doRfid && results != null && results.chipPage != 0) {
256
- var accessKey = results.getTextFieldValueByType!!({ fieldType: 51 })
257
- if (accessKey != null && accessKey != "") {
258
- accessKey = accessKey.replace(/^/g, '').replace(/\n/g, '')
259
- DocumentReader.setRfidScenario({ mMrz: accessKey, mPacePasswordType: 1, })
260
- } else {
261
- accessKey = results.getTextFieldValueByType!!({ fieldType: 159 })
262
- if (accessKey != null && accessKey != "")
263
- DocumentReader.setRfidScenario({ mMrz: accessKey, mPacePasswordType: 2, })
264
- }
265
- // customRFID()
266
- usualRFID()
267
- } else
268
- displayResults(results)
269
- }
270
-
271
- function displayResults(results: DocumentReaderResults) {
272
- status.innerHTML = results.getTextFieldValueByType!!({ fieldType: Enum.eVisualFieldType.FT_SURNAME_AND_GIVEN_NAMES })
273
- status.style.backgroundColor = "green"
274
- if (results.getGraphicFieldImageByType!!({ fieldType: Enum.eGraphicFieldType.GF_DOCUMENT_IMAGE }) != null)
275
- documentImage.src = "data:image/png;base64," + results.getGraphicFieldImageByType!!({ fieldType: Enum.eGraphicFieldType.GF_DOCUMENT_IMAGE })
276
- if (results.getGraphicFieldImageByType!!({ fieldType: Enum.eGraphicFieldType.GF_PORTRAIT }) != null)
277
- portraitImage.src = "data:image/png;base64," + results.getGraphicFieldImageByType!!({ fieldType: Enum.eGraphicFieldType.GF_PORTRAIT })
278
- }
279
-
280
- function clearResults() {
281
- status.innerHTML = "Ready"
282
- documentImage.src = "assets/img/id.png"
283
- portraitImage.src = "assets/img/portrait.png"
284
- }
285
-
286
- function scan() {
287
- DocumentReader.showScanner().subscribe(m =>
288
- handleCompletion(DocumentReaderCompletion.fromJson(JSON.parse(m))))
289
- }
290
-
291
- function recognize() {
292
- ImagePicker.getPictures({ maximumImagesCount: 1 }).then((results: any) => {
293
- if (results.length > 0) {
294
- clearResults()
295
- status.innerHTML = "copying image......"
296
- status.style.backgroundColor = "grey"
297
- }
298
- File.readAsDataURL((isPlatform("ios") ? "file://" : "") + results[0].substring(0, (results[0] as string).lastIndexOf("/")), results[0].substring((results[0] as string).lastIndexOf("/") + 1)).then((file => {
299
- status.innerHTML = "processing image......"
300
- status.style.backgroundColor = "grey"
301
- DocumentReader.recognizeImage((file as string).substring(23)).subscribe(m =>
302
- handleCompletion(DocumentReaderCompletion.fromJson(JSON.parse(m))))
303
- })).catch(error2)
304
- }, error2)
305
- }
306
-
307
- function recognizeAndroid() {
308
- AndroidPermissions.checkPermission(AndroidPermissions.PERMISSION.READ_EXTERNAL_STORAGE).then((result: any) => {
309
- if (result.hasPermission)
310
- recognize()
311
- else
312
- AndroidPermissions.requestPermission(AndroidPermissions.PERMISSION.READ_EXTERNAL_STORAGE).then((result: any) => {
313
- if (result.hasPermission)
314
- recognize()
315
- else
316
- console.log("storage permission denied")
317
- }, (err: any) => console.log(JSON.stringify(err)))
318
- }, (err: any) => console.log(JSON.stringify(err)))
319
- }
320
-
321
- const Home: React.FC = () => {
322
- return (
323
- <IonPage>
324
- </IonPage>
325
- );
326
- };
327
-
328
- export default Home;
@@ -1 +0,0 @@
1
- /// <reference types="react-scripts" />
@@ -1,15 +0,0 @@
1
- import { ReportHandler } from 'web-vitals';
2
-
3
- const reportWebVitals = (onPerfEntry?: ReportHandler) => {
4
- if (onPerfEntry && onPerfEntry instanceof Function) {
5
- import('web-vitals').then(({ getCLS, getFID, getFCP, getLCP, getTTFB }) => {
6
- getCLS(onPerfEntry);
7
- getFID(onPerfEntry);
8
- getFCP(onPerfEntry);
9
- getLCP(onPerfEntry);
10
- getTTFB(onPerfEntry);
11
- });
12
- }
13
- };
14
-
15
- export default reportWebVitals;
@@ -1,80 +0,0 @@
1
- /// <reference lib="webworker" />
2
- /* eslint-disable no-restricted-globals */
3
-
4
- // This service worker can be customized!
5
- // See https://developers.google.com/web/tools/workbox/modules
6
- // for the list of available Workbox modules, or add any other
7
- // code you'd like.
8
- // You can also remove this file if you'd prefer not to use a
9
- // service worker, and the Workbox build step will be skipped.
10
-
11
- import { clientsClaim } from 'workbox-core';
12
- import { ExpirationPlugin } from 'workbox-expiration';
13
- import { precacheAndRoute, createHandlerBoundToURL } from 'workbox-precaching';
14
- import { registerRoute } from 'workbox-routing';
15
- import { StaleWhileRevalidate } from 'workbox-strategies';
16
-
17
- declare const self: ServiceWorkerGlobalScope;
18
-
19
- clientsClaim();
20
-
21
- // Precache all of the assets generated by your build process.
22
- // Their URLs are injected into the manifest variable below.
23
- // This variable must be present somewhere in your service worker file,
24
- // even if you decide not to use precaching. See https://cra.link/PWA
25
- precacheAndRoute(self.__WB_MANIFEST);
26
-
27
- // Set up App Shell-style routing, so that all navigation requests
28
- // are fulfilled with your index.html shell. Learn more at
29
- // https://developers.google.com/web/fundamentals/architecture/app-shell
30
- const fileExtensionRegexp = new RegExp('/[^/?]+\\.[^/]+$');
31
- registerRoute(
32
- // Return false to exempt requests from being fulfilled by index.html.
33
- ({ request, url }: { request: Request; url: URL }) => {
34
- // If this isn't a navigation, skip.
35
- if (request.mode !== 'navigate') {
36
- return false;
37
- }
38
-
39
- // If this is a URL that starts with /_, skip.
40
- if (url.pathname.startsWith('/_')) {
41
- return false;
42
- }
43
-
44
- // If this looks like a URL for a resource, because it contains
45
- // a file extension, skip.
46
- if (url.pathname.match(fileExtensionRegexp)) {
47
- return false;
48
- }
49
-
50
- // Return true to signal that we want to use the handler.
51
- return true;
52
- },
53
- createHandlerBoundToURL(process.env.PUBLIC_URL + '/index.html')
54
- );
55
-
56
- // An example runtime caching route for requests that aren't handled by the
57
- // precache, in this case same-origin .png requests like those from in public/
58
- registerRoute(
59
- // Add in any other file extensions or routing criteria as needed.
60
- ({ url }) => url.origin === self.location.origin && url.pathname.endsWith('.png'),
61
- // Customize this strategy as needed, e.g., by changing to CacheFirst.
62
- new StaleWhileRevalidate({
63
- cacheName: 'images',
64
- plugins: [
65
- // Ensure that once this runtime cache reaches a maximum size the
66
- // least-recently used images are removed.
67
- new ExpirationPlugin({ maxEntries: 50 }),
68
- ],
69
- })
70
- );
71
-
72
- // This allows the web app to trigger skipWaiting via
73
- // registration.waiting.postMessage({type: 'SKIP_WAITING'})
74
- self.addEventListener('message', (event) => {
75
- if (event.data && event.data.type === 'SKIP_WAITING') {
76
- self.skipWaiting();
77
- }
78
- });
79
-
80
- // Any other custom service worker logic can go here.