@monkvision/inspection-capture-web 5.3.5 → 5.3.7

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 CHANGED
@@ -163,6 +163,8 @@ Props
163
163
  | enablePhoneShakingWarning | `boolean` | Boolean indicating if a warning should be shown to the user when they are shaking their phone too much. | | `true` |
164
164
  | fastWalkingWarningCooldown | `number` | The duration (in milliseconds) to wait between fast walking warnings. | | `4000` |
165
165
  | phoneShakingWarningCooldown | `number` | The duration (in milliseconds) to wait between phone shaking warnings. | | `4000` |
166
+ | enableVideoTutorial | `boolean` | Boolean indicating if the video tutorial should be enabled or not. | | `true` |
167
+ | enableHybridVideo | `boolean` | Boolean indicating if the hybrid video capture mode should be enabled or not. When enabled, users can take pictures during the video capture process, and these pictures will be added to the inspection. | | `false` |
166
168
 
167
169
  # DamageDisclosure
168
170
 
@@ -3,7 +3,7 @@ import { CameraConfig, VideoCaptureAppConfig } from '@monkvision/types';
3
3
  /**
4
4
  * Props of the VideoCapture component.
5
5
  */
6
- export interface VideoCaptureProps extends Pick<VideoCaptureAppConfig, keyof CameraConfig | 'additionalTasks' | 'startTasksOnComplete' | 'enforceOrientation' | 'minRecordingDuration' | 'maxRetryCount' | 'enableFastWalkingWarning' | 'enablePhoneShakingWarning' | 'fastWalkingWarningCooldown' | 'phoneShakingWarningCooldown'> {
6
+ export interface VideoCaptureProps extends Pick<VideoCaptureAppConfig, keyof CameraConfig | 'additionalTasks' | 'startTasksOnComplete' | 'enforceOrientation' | 'minRecordingDuration' | 'maxRetryCount' | 'enableFastWalkingWarning' | 'enablePhoneShakingWarning' | 'fastWalkingWarningCooldown' | 'phoneShakingWarningCooldown' | 'enableVideoTutorial' | 'enableHybridVideo'> {
7
7
  /**
8
8
  * The ID of the inspection to add the video frames to.
9
9
  */
@@ -24,4 +24,4 @@ export interface VideoCaptureProps extends Pick<VideoCaptureAppConfig, keyof Cam
24
24
  */
25
25
  lang?: string | null;
26
26
  }
27
- export declare function VideoCapture({ inspectionId, apiConfig, additionalTasks, startTasksOnComplete, enforceOrientation, minRecordingDuration, maxRetryCount, enableFastWalkingWarning, enablePhoneShakingWarning, fastWalkingWarningCooldown, phoneShakingWarningCooldown, onComplete, lang, }: VideoCaptureProps): import("react/jsx-runtime").JSX.Element;
27
+ export declare function VideoCapture({ inspectionId, apiConfig, additionalTasks, startTasksOnComplete, enforceOrientation, minRecordingDuration, maxRetryCount, enableFastWalkingWarning, enablePhoneShakingWarning, fastWalkingWarningCooldown, phoneShakingWarningCooldown, enableVideoTutorial, enableHybridVideo, onComplete, lang, }: VideoCaptureProps): import("react/jsx-runtime").JSX.Element;
@@ -5,7 +5,9 @@ var jsx_runtime_1 = require("react/jsx-runtime");
5
5
  var common_1 = require("@monkvision/common");
6
6
  var react_1 = require("react");
7
7
  var camera_web_1 = require("@monkvision/camera-web");
8
+ var types_1 = require("@monkvision/types");
8
9
  var monitoring_1 = require("@monkvision/monitoring");
10
+ var common_ui_web_1 = require("@monkvision/common-ui-web");
9
11
  var VideoCapture_styles_1 = require("./VideoCapture.styles");
10
12
  var VideoCapturePermissions_1 = require("./VideoCapturePermissions");
11
13
  var VideoCaptureHUD_1 = require("./VideoCaptureHUD");
@@ -17,22 +19,25 @@ var VideoCaptureScreen;
17
19
  VideoCaptureScreen["PERMISSIONS"] = "permissions";
18
20
  VideoCaptureScreen["TUTORIAL"] = "tutorial";
19
21
  VideoCaptureScreen["CAPTURE"] = "capture";
22
+ VideoCaptureScreen["GALLERY"] = "gallery";
20
23
  })(VideoCaptureScreen || (VideoCaptureScreen = {}));
21
24
  // No ts-doc for this component : the component exported is VideoCaptureHOC
22
25
  function VideoCapture(_a) {
23
- var inspectionId = _a.inspectionId, apiConfig = _a.apiConfig, additionalTasks = _a.additionalTasks, startTasksOnComplete = _a.startTasksOnComplete, enforceOrientation = _a.enforceOrientation, _b = _a.minRecordingDuration, minRecordingDuration = _b === void 0 ? 15000 : _b, _c = _a.maxRetryCount, maxRetryCount = _c === void 0 ? 3 : _c, _d = _a.enableFastWalkingWarning, enableFastWalkingWarning = _d === void 0 ? true : _d, _e = _a.enablePhoneShakingWarning, enablePhoneShakingWarning = _e === void 0 ? false : _e, _f = _a.fastWalkingWarningCooldown, fastWalkingWarningCooldown = _f === void 0 ? 1000 : _f, _g = _a.phoneShakingWarningCooldown, phoneShakingWarningCooldown = _g === void 0 ? 1000 : _g, onComplete = _a.onComplete, lang = _a.lang;
26
+ var inspectionId = _a.inspectionId, apiConfig = _a.apiConfig, additionalTasks = _a.additionalTasks, startTasksOnComplete = _a.startTasksOnComplete, enforceOrientation = _a.enforceOrientation, _b = _a.minRecordingDuration, minRecordingDuration = _b === void 0 ? 15000 : _b, _c = _a.maxRetryCount, maxRetryCount = _c === void 0 ? 3 : _c, _d = _a.enableFastWalkingWarning, enableFastWalkingWarning = _d === void 0 ? true : _d, _e = _a.enablePhoneShakingWarning, enablePhoneShakingWarning = _e === void 0 ? false : _e, _f = _a.fastWalkingWarningCooldown, fastWalkingWarningCooldown = _f === void 0 ? 1000 : _f, _g = _a.phoneShakingWarningCooldown, phoneShakingWarningCooldown = _g === void 0 ? 1000 : _g, _h = _a.enableVideoTutorial, enableVideoTutorial = _h === void 0 ? true : _h, _j = _a.enableHybridVideo, enableHybridVideo = _j === void 0 ? false : _j, onComplete = _a.onComplete, lang = _a.lang;
24
27
  (0, common_1.useI18nSync)(lang);
25
- var _h = (0, react_1.useState)(VideoCaptureScreen.PERMISSIONS), screen = _h[0], setScreen = _h[1];
26
- var _j = (0, react_1.useState)(false), isRecording = _j[0], setIsRecording = _j[1];
28
+ var _k = (0, react_1.useState)(VideoCaptureScreen.PERMISSIONS), screen = _k[0], setScreen = _k[1];
29
+ var _l = (0, react_1.useState)(false), isRecording = _l[0], setIsRecording = _l[1];
27
30
  var handleError = (0, monitoring_1.useMonitoring)().handleError;
28
- var _k = (0, hooks_2.useFastMovementsDetection)({
31
+ var _m = (0, hooks_2.useFastMovementsDetection)({
29
32
  isRecording: isRecording,
30
33
  enableFastWalkingWarning: enableFastWalkingWarning,
31
34
  enablePhoneShakingWarning: enablePhoneShakingWarning,
32
35
  fastWalkingWarningCooldown: fastWalkingWarningCooldown,
33
36
  phoneShakingWarningCooldown: phoneShakingWarningCooldown,
34
- }), onDeviceOrientationEvent = _k.onDeviceOrientationEvent, fastMovementsWarning = _k.fastMovementsWarning, onWarningDismiss = _k.onWarningDismiss;
35
- var _l = (0, common_1.useDeviceOrientation)({ onDeviceOrientationEvent: onDeviceOrientationEvent }), alpha = _l.alpha, requestCompassPermission = _l.requestCompassPermission;
37
+ }), onDeviceOrientationEvent = _m.onDeviceOrientationEvent, fastMovementsWarning = _m.fastMovementsWarning, onWarningDismiss = _m.onWarningDismiss;
38
+ var _o = (0, common_1.useDeviceOrientation)({ onDeviceOrientationEvent: onDeviceOrientationEvent }), alpha = _o.alpha, requestCompassPermission = _o.requestCompassPermission;
39
+ var inspectionLoading = (0, common_1.useLoadingState)();
40
+ (0, hooks_2.useGetInspection)({ inspectionId: inspectionId, apiConfig: apiConfig, loading: inspectionLoading });
36
41
  var startTasksLoading = (0, common_1.useLoadingState)();
37
42
  var startTasks = (0, hooks_1.useStartTasksOnComplete)({
38
43
  inspectionId: inspectionId,
@@ -42,7 +47,7 @@ function VideoCapture(_a) {
42
47
  loading: startTasksLoading,
43
48
  });
44
49
  var allowRedirect = (0, common_1.usePreventExit)(true).allowRedirect;
45
- var handleComplete = function () {
50
+ var handleInspectionCompleted = function () {
46
51
  startTasks()
47
52
  .then(function () {
48
53
  allowRedirect();
@@ -53,6 +58,12 @@ function VideoCapture(_a) {
53
58
  handleError(err);
54
59
  });
55
60
  };
61
+ var handleVideoCaptureCompleted = function () {
62
+ setScreen(VideoCaptureScreen.GALLERY);
63
+ };
64
+ var handlePermissionsSuccess = function () {
65
+ setScreen(enableVideoTutorial ? VideoCaptureScreen.TUTORIAL : VideoCaptureScreen.CAPTURE);
66
+ };
56
67
  var hudProps = {
57
68
  inspectionId: inspectionId,
58
69
  maxRetryCount: maxRetryCount,
@@ -65,7 +76,7 @@ function VideoCapture(_a) {
65
76
  fastMovementsWarning: fastMovementsWarning,
66
77
  onWarningDismiss: onWarningDismiss,
67
78
  startTasksLoading: startTasksLoading,
68
- onComplete: handleComplete,
79
+ onComplete: handleVideoCaptureCompleted,
69
80
  };
70
- return ((0, jsx_runtime_1.jsxs)("div", { style: VideoCapture_styles_1.styles['container'], children: [screen === VideoCaptureScreen.PERMISSIONS && ((0, jsx_runtime_1.jsx)(VideoCapturePermissions_1.VideoCapturePermissions, { requestCompassPermission: requestCompassPermission, onSuccess: function () { return setScreen(VideoCaptureScreen.TUTORIAL); } })), screen === VideoCaptureScreen.TUTORIAL && ((0, jsx_runtime_1.jsx)(VideoCaptureTutorial_1.VideoCaptureTutorial, { enforceOrientation: enforceOrientation, onClose: function () { return setScreen(VideoCaptureScreen.CAPTURE); } })), screen === VideoCaptureScreen.CAPTURE && ((0, jsx_runtime_1.jsx)(camera_web_1.Camera, { HUDComponent: VideoCaptureHUD_1.VideoCaptureHUD, hudProps: hudProps }))] }));
81
+ return ((0, jsx_runtime_1.jsxs)("div", { style: VideoCapture_styles_1.styles['container'], children: [screen === VideoCaptureScreen.PERMISSIONS && ((0, jsx_runtime_1.jsx)(VideoCapturePermissions_1.VideoCapturePermissions, { requestCompassPermission: requestCompassPermission, onSuccess: handlePermissionsSuccess })), screen === VideoCaptureScreen.TUTORIAL && ((0, jsx_runtime_1.jsx)(VideoCaptureTutorial_1.VideoCaptureTutorial, { enforceOrientation: enforceOrientation, onClose: function () { return setScreen(VideoCaptureScreen.CAPTURE); } })), screen === VideoCaptureScreen.GALLERY && ((0, jsx_runtime_1.jsx)(common_ui_web_1.InspectionGallery, { inspectionId: inspectionId, apiConfig: apiConfig, captureMode: enableHybridVideo, sights: [], lang: lang, showBackButton: true, enableBeautyShotExtraction: true, onBack: function () { return setScreen(VideoCaptureScreen.CAPTURE); }, onValidate: handleInspectionCompleted, addDamage: types_1.AddDamage.DISABLED, isInspectionCompleted: false })), screen === VideoCaptureScreen.CAPTURE && ((0, jsx_runtime_1.jsx)(camera_web_1.Camera, { HUDComponent: VideoCaptureHUD_1.VideoCaptureHUD, hudProps: hudProps }))] }));
71
82
  }
@@ -1,3 +1,4 @@
1
+ export * from './useGetInspection';
1
2
  export * from './useVehicleWalkaround';
2
3
  export * from './useVideoRecording';
3
4
  export * from './useFrameSelection';
@@ -14,6 +14,7 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
14
  for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
15
  };
16
16
  Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./useGetInspection"), exports);
17
18
  __exportStar(require("./useVehicleWalkaround"), exports);
18
19
  __exportStar(require("./useVideoRecording"), exports);
19
20
  __exportStar(require("./useFrameSelection"), exports);
@@ -0,0 +1,24 @@
1
+ import { MonkApiConfig } from '@monkvision/network';
2
+ import { LoadingState } from '@monkvision/common';
3
+ /**
4
+ * Params accepted by the useGetInspection hook.
5
+ */
6
+ export interface UseGetInspectionParams {
7
+ /**
8
+ * The ID of the inspection to fetch.
9
+ */
10
+ inspectionId: string;
11
+ /**
12
+ * The api config used to communicate with the API.
13
+ */
14
+ apiConfig: MonkApiConfig;
15
+ /**
16
+ * Global loading state of the VideoCapture component.
17
+ */
18
+ loading: LoadingState;
19
+ }
20
+ /**
21
+ * Custom hook that fetches the inspection details when the VideoCapture component mounts.
22
+ * This ensures the inspection data is available in the Monk state for the video capture process.
23
+ */
24
+ export declare function useGetInspection({ inspectionId, apiConfig, loading }: UseGetInspectionParams): void;
@@ -0,0 +1,27 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.useGetInspection = useGetInspection;
4
+ var network_1 = require("@monkvision/network");
5
+ var monitoring_1 = require("@monkvision/monitoring");
6
+ var common_1 = require("@monkvision/common");
7
+ /**
8
+ * Custom hook that fetches the inspection details when the VideoCapture component mounts.
9
+ * This ensures the inspection data is available in the Monk state for the video capture process.
10
+ */
11
+ function useGetInspection(_a) {
12
+ var inspectionId = _a.inspectionId, apiConfig = _a.apiConfig, loading = _a.loading;
13
+ var getInspection = (0, network_1.useMonkApi)(apiConfig).getInspection;
14
+ var handleError = (0, monitoring_1.useMonitoring)().handleError;
15
+ (0, common_1.useAsyncEffect)(function () {
16
+ loading.start();
17
+ return getInspection({ id: inspectionId });
18
+ }, [inspectionId], {
19
+ onResolve: function () {
20
+ loading.onSuccess();
21
+ },
22
+ onReject: function (err) {
23
+ handleError(err);
24
+ loading.onError(err);
25
+ },
26
+ });
27
+ }
@@ -1,15 +1,4 @@
1
1
  "use strict";
2
- var __assign = (this && this.__assign) || function () {
3
- __assign = Object.assign || function(t) {
4
- for (var s, i = 1, n = arguments.length; i < n; i++) {
5
- s = arguments[i];
6
- for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
7
- t[p] = s[p];
8
- }
9
- return t;
10
- };
11
- return __assign.apply(this, arguments);
12
- };
13
2
  var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
14
3
  function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
15
4
  return new (P || (P = Promise))(function (resolve, reject) {
@@ -67,17 +56,20 @@ var CAPTURE_DURATION = 'capture_duration';
67
56
  */
68
57
  function useCaptureDuration(_a) {
69
58
  var _this = this;
70
- var apiConfig = _a.apiConfig, inspectionId = _a.inspectionId, isInspectionCompleted = _a.isInspectionCompleted, _b = _a.heartbeatInterval, heartbeatInterval = _b === void 0 ? 30000 : _b, _c = _a.idleTimeout, idleTimeout = _c === void 0 ? 10000 : _c;
59
+ var _b, _c;
60
+ var apiConfig = _a.apiConfig, inspectionId = _a.inspectionId, isInspectionCompleted = _a.isInspectionCompleted, _d = _a.heartbeatInterval, heartbeatInterval = _d === void 0 ? 30000 : _d, _e = _a.idleTimeout, idleTimeout = _e === void 0 ? 10000 : _e;
71
61
  var startTimeRef = (0, react_1.useRef)(Date.now());
72
62
  var totalActiveTimeRef = (0, react_1.useRef)(0);
73
63
  var heartbeatTimerRef = (0, react_1.useRef)(null);
74
64
  var idleTimerRef = (0, react_1.useRef)(null);
75
65
  var pendingUpdateRef = (0, react_1.useRef)(false);
76
- var captureDurationRef = (0, react_1.useRef)(0);
77
66
  var isActive = (0, react_1.useRef)(true);
78
67
  var cycleCountRef = (0, react_1.useRef)(0);
79
68
  var updateAdditionalData = (0, network_1.useMonkApi)(apiConfig).updateAdditionalData;
80
69
  var handleError = (0, monitoring_1.useMonitoring)().handleError;
70
+ var state = (0, common_1.useMonkState)().state;
71
+ var initialDuration = (_c = (_b = state.inspections.find(function (insp) { return insp.id === inspectionId; })) === null || _b === void 0 ? void 0 : _b.additionalData) === null || _c === void 0 ? void 0 : _c[CAPTURE_DURATION];
72
+ var captureDurationRef = (0, react_1.useRef)(typeof initialDuration === 'number' ? initialDuration : 0);
81
73
  var pauseTracking = (0, react_1.useCallback)(function () {
82
74
  if (isActive.current) {
83
75
  isActive.current = false;
@@ -96,7 +88,7 @@ function useCaptureDuration(_a) {
96
88
  args_1[_i] = arguments[_i];
97
89
  }
98
90
  return __awaiter(_this, __spreadArray([], args_1, true), void 0, function (forceUpdate) {
99
- var existingDuration_1, err_1;
91
+ var err_1;
100
92
  if (forceUpdate === void 0) { forceUpdate = false; }
101
93
  return __generator(this, function (_a) {
102
94
  switch (_a.label) {
@@ -111,19 +103,17 @@ function useCaptureDuration(_a) {
111
103
  case 1:
112
104
  _a.trys.push([1, 3, 4, 5]);
113
105
  pendingUpdateRef.current = true;
114
- existingDuration_1 = 0;
115
106
  return [4 /*yield*/, updateAdditionalData({
116
107
  id: inspectionId,
117
- callback: function (existingData) {
118
- existingDuration_1 = (existingData === null || existingData === void 0 ? void 0 : existingData[CAPTURE_DURATION])
119
- ? existingData === null || existingData === void 0 ? void 0 : existingData[CAPTURE_DURATION]
120
- : 0;
121
- return __assign(__assign({}, existingData), { capture_duration: existingDuration_1 + totalActiveTimeRef.current });
108
+ callback: function () {
109
+ captureDurationRef.current += totalActiveTimeRef.current;
110
+ return {
111
+ capture_duration: captureDurationRef.current,
112
+ };
122
113
  },
123
114
  })];
124
115
  case 2:
125
116
  _a.sent();
126
- captureDurationRef.current = existingDuration_1 + totalActiveTimeRef.current;
127
117
  startTimeRef.current = Date.now();
128
118
  totalActiveTimeRef.current = 0;
129
119
  return [2 /*return*/, captureDurationRef.current];
@@ -177,8 +167,8 @@ function useCaptureDuration(_a) {
177
167
  };
178
168
  var handleVisibilityChange = function () {
179
169
  if (document.hidden) {
180
- updateDuration();
181
170
  pauseTracking();
171
+ updateDuration(true);
182
172
  }
183
173
  else {
184
174
  resumeTracking();
package/lib/i18n.js CHANGED
@@ -6,6 +6,8 @@ Object.defineProperty(exports, "__esModule", { value: true });
6
6
  exports.i18nInspectionCaptureWeb = void 0;
7
7
  var common_1 = require("@monkvision/common");
8
8
  var en_json_1 = __importDefault(require("./translations/en.json"));
9
+ var cs_json_1 = __importDefault(require("./translations/cs.json"));
10
+ var no_json_1 = __importDefault(require("./translations/no.json"));
9
11
  var ro_json_1 = __importDefault(require("./translations/ro.json"));
10
12
  var pl_json_1 = __importDefault(require("./translations/pl.json"));
11
13
  var da_json_1 = __importDefault(require("./translations/da.json"));
@@ -33,6 +35,8 @@ var i18nInspectionCaptureWeb = (0, common_1.i18nCreateSDKInstance)({
33
35
  da: { translation: da_json_1.default },
34
36
  pl: { translation: pl_json_1.default },
35
37
  ro: { translation: ro_json_1.default },
38
+ no: { translation: no_json_1.default },
39
+ cs: { translation: cs_json_1.default },
36
40
  },
37
41
  });
38
42
  exports.i18nInspectionCaptureWeb = i18nInspectionCaptureWeb;
@@ -0,0 +1,114 @@
1
+ {
2
+ "photo": {
3
+ "badConnectionWarning": {
4
+ "message": "Občasné problémy s připojením. Nahrávání obrázků může trvat déle.",
5
+ "confirm": "Rozumím"
6
+ },
7
+ "hud": {
8
+ "sight": {
9
+ "addDamageBtn": "Poškození"
10
+ },
11
+ "addDamage": {
12
+ "cancelBtn": "Zrušit",
13
+ "damagedPartCounter": "1 / 2 • Poškozená součást",
14
+ "closeupPictureCounter": "2 / 2 • Detailní snímek",
15
+ "infoBtn": "Cílový bod nasměrujte na poškozenou část a klepněte na tlačítko.",
16
+ "infoCloseup": "Pořiďte detailní snímek poškození",
17
+ "selectPart": "Klepe na poškozenou část. Použijte šipky k otočení vozidla a zobrazení druhé strany.",
18
+ "selectParts": "Klepejte poškozené části. Použijte šipky k otočení vozidla a zobrazení druhé strany."
19
+ },
20
+ "error": {
21
+ "retry": "Zkus znovu",
22
+ "missingTasks": "Kontrola obsahuje chybějící úkoly, které jsou požadovány aktuálním modulem.",
23
+ "invalidToken": "Nesprávný token pro ověření",
24
+ "expiredToken": "Token pro ověření vypršel.",
25
+ "insufficientAuth": "Nemáte potřebná oprávnění k provedení této akce.",
26
+ "inspectionLoading": "Došlo k chybě při načítání kontroly. Zkuste to znovu za několik minut, nebo kontaktujte podporu s následujícím ID kontroly:"
27
+ },
28
+ "closeConfirm": {
29
+ "message": "Jste si jistí, že chcete zavřít nástroj pro snímání?",
30
+ "cancel": "Ne",
31
+ "confirm": "Ano"
32
+ },
33
+ "guidelines": {
34
+ "defaultGuideline": "Zde můžete zobrazit pokyny pro nastavení úhlu kamery.",
35
+ "disable": "Nezobrazovat znovu",
36
+ "validate": "Zkontrolovat"
37
+ },
38
+ "tutorial": {
39
+ "welcome": "Vítejte při první kontrole!",
40
+ "title": "Jak to používat",
41
+ "guideline": "Procházejte vozidlo a pořiďte všechny fotografie. Postupujte podle pokynů nahoře a zajistěte správný úhel.",
42
+ "sightTutorial": "Použijte obrázek v levém dolním rohu pro správné nastavení záběru.<br>Klepejte na něj, abyste viděli podrobnější vysvětlení.",
43
+ "sight": "Zarovnejte vozidlo s liniemi, aby bylo snímek co nejlepší.<br>Stiskněte tlačítko, abyste snímali.",
44
+ "next": "Pokračovat"
45
+ },
46
+ "sightTutorial": {
47
+ "tip": "Nápověda",
48
+ "defaultTutorialWithImage": "Zde je referenční obrázek\nPokuste se co nejlépe napodobit jeho úhel pohledu.",
49
+ "defaultTutorialWithoutImage": "Umístěte se podle obrázku vlevo.\nZajistěte, aby kamera byla ve správné výšce."
50
+ }
51
+ },
52
+ "gallery": {
53
+ "next": "Další: fotografie vozidla"
54
+ }
55
+ },
56
+ "video": {
57
+ "introduction": {
58
+ "title": "Nahrát video prohlídky vozidla"
59
+ },
60
+ "permissions": {
61
+ "camera": {
62
+ "title": "Kamera",
63
+ "description": "K nahrávání videa musíte povolit přístup k kameře zařízení"
64
+ },
65
+ "compass": {
66
+ "title": "Směr",
67
+ "description": "K detekci kompletní 360° rotace vozidla je nutné povolit přístup k kompasu zařízení."
68
+ },
69
+ "confirm": "Spravovat oprávnění"
70
+ },
71
+ "tutorial": {
72
+ "start": {
73
+ "title": "Začněte u předního kola",
74
+ "description": "Udržujte vzdálenost 90-120 cm a pomalu se pohybujte kolem vozidla, fotografujte od střechy až po zem."
75
+ },
76
+ "finish": {
77
+ "title": "Dokončete, kde jste začali",
78
+ "description": "Měli byste být hotovi s nahráváním za přibližně 45 sekund."
79
+ },
80
+ "photos": {
81
+ "title": "Pořiďte fotografie podle potřeby",
82
+ "description": "Stiskněte tlačítko, abyste pořídili fotografie pro účely remarketingu nebo zaznamenali škody během nahrávání."
83
+ },
84
+ "confirm": "Nahrát video"
85
+ },
86
+ "recording": {
87
+ "discardDialog": {
88
+ "message": "Chcete smazat video?\nNeobcházeli jste celý vůz.",
89
+ "keepRecording": "Pokračovat v nahrávání",
90
+ "discardVideo": "Zrušit video"
91
+ },
92
+ "fastMovementsDialog": {
93
+ "walkingTooFast": "Jste příliš rychlý! Zpomalte, prohlídka vozidla by vám měla trvat přibližně jednu minutu.",
94
+ "phoneShaking": "Vaše zařízení se příliš třese! Snažte se, aby kamera byla během nahrávání vozidla stabilní.",
95
+ "confirm": "Zavřít"
96
+ },
97
+ "tooltip": {
98
+ "start": "Jakmile se auto dostane do cíle, stiskněte tlačítko pro zahájení nahrávání videa.",
99
+ "end": "Po dokončení prohlídky vozidla stiskněte tlačítko pro zastavení nahrávání."
100
+ }
101
+ },
102
+ "processing": {
103
+ "processing": "Zpracovává se video",
104
+ "uploading": "Nahrazování videa",
105
+ "success": "Zpracování videa dokončeno!",
106
+ "error": "Došlo k chybě při dokončování kontroly. ID kontroly:",
107
+ "done": "Dokončeno"
108
+ }
109
+ },
110
+ "orientationEnforcer": {
111
+ "title": "otočte zařízení",
112
+ "description": "Možná budete muset nastavit orientaci zařízení ve vašich telefonních nastaveních."
113
+ }
114
+ }
@@ -0,0 +1,114 @@
1
+ {
2
+ "photo": {
3
+ "badConnectionWarning": {
4
+ "message": "Vi opplever problemer med tilkobling. Lasting av bilder kan ta lengre tid.",
5
+ "confirm": "Jeg forstår"
6
+ },
7
+ "hud": {
8
+ "sight": {
9
+ "addDamageBtn": "Skade"
10
+ },
11
+ "addDamage": {
12
+ "cancelBtn": "Avbryt",
13
+ "damagedPartCounter": "1 / 2 • Skadet del",
14
+ "closeupPictureCounter": "2 / 2 • Nærbilde",
15
+ "infoBtn": "Ret det riktige området, deretter trykk på knappen",
16
+ "infoCloseup": "Ta et nærbilde av skaden",
17
+ "selectPart": "Trykk på det skadede området. Bruk pilene til å rotere kjøretøyet og se den andre siden.",
18
+ "selectParts": "Trykk på de skadede delene. Bruk pilene til å rotere kjøretøyet og se den andre siden."
19
+ },
20
+ "error": {
21
+ "retry": "Prøv igjen",
22
+ "missingTasks": "Inspeksjonen mangler noen oppgaver som kreves av det nåværende modulen.",
23
+ "invalidToken": "Autentiserings-tokenet er ugyldig.",
24
+ "expiredToken": "Autentiserings-tokenet er utløpt.",
25
+ "insufficientAuth": "Du har ikke nødvendige tillatelser for å utføre denne handlingen.",
26
+ "inspectionLoading": "Det oppstod en feil under innlasting av inspeksjonen. Prøv igjen om noen minutter, eller kontakt support med følgende inspeksjons-ID:"
27
+ },
28
+ "closeConfirm": {
29
+ "message": "Er du sikker på at du vil avslutte opptaket?",
30
+ "cancel": "Nei",
31
+ "confirm": "Ja"
32
+ },
33
+ "guidelines": {
34
+ "defaultGuideline": "Bildevisningspunkter kan vises her.",
35
+ "disable": "Ikke vis dette igjen",
36
+ "validate": "Ok"
37
+ },
38
+ "tutorial": {
39
+ "welcome": "Velkommen til din første inspeksjon!",
40
+ "title": "Hvordan bruke det",
41
+ "guideline": "Gå rundt bilen for å ta alle bilder og følg veiledningen øverst for å plassere kameraet i riktig vinkel.",
42
+ "sightTutorial": "Bruk bildet nederst til venstre for å hjelpe deg med å komponere bildet.<br>Trykk på det for å se en detaljert forklaring.",
43
+ "sight": "Juster bilen så godt som mulig med linjene for å få det beste bildet.<br>Trykk på knappen for å ta bildet.",
44
+ "next": "Neste"
45
+ },
46
+ "sightTutorial": {
47
+ "tip": "Tips",
48
+ "defaultTutorialWithImage": "Her er et referansebilde\nPrøv å matche rammen din så godt som mulig.",
49
+ "defaultTutorialWithoutImage": "Plasser deg som vist i diagrammet til venstre\nSørg for at kameraet er på riktig høyde."
50
+ }
51
+ },
52
+ "gallery": {
53
+ "next": "Neste: bilder av kjøretøy"
54
+ }
55
+ },
56
+ "video": {
57
+ "introduction": {
58
+ "title": "Ta opp en video av kjøretøyet"
59
+ },
60
+ "permissions": {
61
+ "camera": {
62
+ "title": "Kamera",
63
+ "description": "For å ta opp video, må du gi appen tilgang til enhetenes kamera"
64
+ },
65
+ "compass": {
66
+ "title": "Kompass",
67
+ "description": "For å oppdage en fullstendig 360 graders sirkulasjon av kjøretøyet, må du gi enheten tilgang til kompasset"
68
+ },
69
+ "confirm": "Administrer tillatelser"
70
+ },
71
+ "tutorial": {
72
+ "start": {
73
+ "title": "Begynn ved foran",
74
+ "description": "Hold en avstand på 3 til 4 fot og gå sakte rundt kjøretøyet, og ta bilder fra taket og ned til bakken."
75
+ },
76
+ "finish": {
77
+ "title": "Gå tilbake til starten",
78
+ "description": "Du bør være ferdig med å ta opp om omtrent 45 sekunder."
79
+ },
80
+ "photos": {
81
+ "title": "Ta bilder etter behov",
82
+ "description": "Trykk på knappen for å ta bilder for markedsføring eller skader, mens du filmer."
83
+ },
84
+ "confirm": "Ta opp en video"
85
+ },
86
+ "recording": {
87
+ "discardDialog": {
88
+ "message": "Vil du slette videoen?",
89
+ "keepRecording": "Fortsett å ta opp",
90
+ "discardVideo": "Avvis video"
91
+ },
92
+ "fastMovementsDialog": {
93
+ "walkingTooFast": "Du kjører for fort! Reduser farten litt, det burde ta omtrent én minutt å fullføre inspeksjonen.",
94
+ "phoneShaking": "Enheten din vibrerer for mye! Prøv å holde kameraet stabilt mens du tar opp kjøretøyet.",
95
+ "confirm": "Bekreft"
96
+ },
97
+ "tooltip": {
98
+ "start": "Når du har kjørt opp til bilen, trykk på knappen for å starte videoopptak.",
99
+ "end": "Når kjøretøyet er inspisert, trykk på knappen for å stoppe opptaket."
100
+ }
101
+ },
102
+ "processing": {
103
+ "processing": "Behandler video",
104
+ "uploading": "Lasting video",
105
+ "success": "Videobehandling fullført!",
106
+ "error": "En feil oppstod under avsluttet av inspeksjonen. Inspeksjons-ID:",
107
+ "done": "Ferdig"
108
+ }
109
+ },
110
+ "orientationEnforcer": {
111
+ "title": "Vennligst roter på enheten",
112
+ "description": "Du må kanskje justere skjermens orientering i telefonens innstillinger."
113
+ }
114
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@monkvision/inspection-capture-web",
3
- "version": "5.3.5",
3
+ "version": "5.3.7",
4
4
  "license": "BSD-3-Clause-Clear",
5
5
  "packageManager": "yarn@3.2.4",
6
6
  "description": "MonkJs inspection capture package for React (web) used to implement the Monk inspection capture workflow",
@@ -28,12 +28,12 @@
28
28
  "lint:fix": "yarn run prettier:fix && yarn run eslint:fix"
29
29
  },
30
30
  "dependencies": {
31
- "@monkvision/analytics": "5.3.5",
32
- "@monkvision/camera-web": "5.3.5",
33
- "@monkvision/common": "5.3.5",
34
- "@monkvision/common-ui-web": "5.3.5",
35
- "@monkvision/network": "5.3.5",
36
- "@monkvision/sights": "5.3.5",
31
+ "@monkvision/analytics": "5.3.7",
32
+ "@monkvision/camera-web": "5.3.7",
33
+ "@monkvision/common": "5.3.7",
34
+ "@monkvision/common-ui-web": "5.3.7",
35
+ "@monkvision/network": "5.3.7",
36
+ "@monkvision/sights": "5.3.7",
37
37
  "i18next": "^23.4.5",
38
38
  "react-i18next": "^13.2.0"
39
39
  },
@@ -44,13 +44,13 @@
44
44
  "react-router-dom": "^6.22.3"
45
45
  },
46
46
  "devDependencies": {
47
- "@monkvision/eslint-config-base": "5.3.5",
48
- "@monkvision/eslint-config-typescript": "5.3.5",
49
- "@monkvision/eslint-config-typescript-react": "5.3.5",
50
- "@monkvision/jest-config": "5.3.5",
51
- "@monkvision/prettier-config": "5.3.5",
52
- "@monkvision/test-utils": "5.3.5",
53
- "@monkvision/typescript-config": "5.3.5",
47
+ "@monkvision/eslint-config-base": "5.3.7",
48
+ "@monkvision/eslint-config-typescript": "5.3.7",
49
+ "@monkvision/eslint-config-typescript-react": "5.3.7",
50
+ "@monkvision/jest-config": "5.3.7",
51
+ "@monkvision/prettier-config": "5.3.7",
52
+ "@monkvision/test-utils": "5.3.7",
53
+ "@monkvision/typescript-config": "5.3.7",
54
54
  "@testing-library/react": "^16.3.0",
55
55
  "@types/copyfiles": "^2",
56
56
  "@types/fscreen": "^1.0.1",
@@ -92,5 +92,5 @@
92
92
  "url": "https://github.com/monkvision/monkjs/issues"
93
93
  },
94
94
  "homepage": "https://github.com/monkvision/monkjs",
95
- "gitHead": "cfca4988f50b55abca344f0ae3408a7798d61978"
95
+ "gitHead": "8f2473ad68cb762819c57d1b8dc0db2510d33740"
96
96
  }