@monkvision/common 4.0.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.
- package/LICENSE +32 -0
- package/README/APP_UTILS.md +52 -0
- package/README/HOOKS.md +242 -0
- package/README/INTERNATIONALIZATION.md +89 -0
- package/README/STATE_MANAGEMENT.md +125 -0
- package/README/THEMING.md +70 -0
- package/README/UTILITIES.md +254 -0
- package/README.md +23 -0
- package/lib/PreventExit/hooks.d.ts +15 -0
- package/lib/PreventExit/hooks.js +27 -0
- package/lib/PreventExit/hooks.js.map +1 -0
- package/lib/PreventExit/index.d.ts +1 -0
- package/lib/PreventExit/index.js +18 -0
- package/lib/PreventExit/index.js.map +1 -0
- package/lib/PreventExit/store.d.ts +23 -0
- package/lib/PreventExit/store.js +41 -0
- package/lib/PreventExit/store.js.map +1 -0
- package/lib/apps/analytics.d.ts +2 -0
- package/lib/apps/analytics.js +16 -0
- package/lib/apps/analytics.js.map +1 -0
- package/lib/apps/appState.d.ts +61 -0
- package/lib/apps/appState.js +11 -0
- package/lib/apps/appState.js.map +1 -0
- package/lib/apps/appStateProvider.d.ts +64 -0
- package/lib/apps/appStateProvider.js +116 -0
- package/lib/apps/appStateProvider.js.map +1 -0
- package/lib/apps/index.d.ts +3 -0
- package/lib/apps/index.js +20 -0
- package/lib/apps/index.js.map +1 -0
- package/lib/apps/monitoring.d.ts +2 -0
- package/lib/apps/monitoring.js +25 -0
- package/lib/apps/monitoring.js.map +1 -0
- package/lib/apps/searchParams.d.ts +60 -0
- package/lib/apps/searchParams.js +81 -0
- package/lib/apps/searchParams.js.map +1 -0
- package/lib/hooks/index.d.ts +12 -0
- package/lib/hooks/index.js +29 -0
- package/lib/hooks/index.js.map +1 -0
- package/lib/hooks/useAsyncEffect.d.ts +7 -0
- package/lib/hooks/useAsyncEffect.js +37 -0
- package/lib/hooks/useAsyncEffect.js.map +1 -0
- package/lib/hooks/useAsyncInterval.d.ts +7 -0
- package/lib/hooks/useAsyncInterval.js +54 -0
- package/lib/hooks/useAsyncInterval.js.map +1 -0
- package/lib/hooks/useInteractiveStatus.d.ts +52 -0
- package/lib/hooks/useInteractiveStatus.js +70 -0
- package/lib/hooks/useInteractiveStatus.js.map +1 -0
- package/lib/hooks/useInterval.d.ts +5 -0
- package/lib/hooks/useInterval.js +27 -0
- package/lib/hooks/useInterval.js.map +1 -0
- package/lib/hooks/useLoadingState.d.ts +33 -0
- package/lib/hooks/useLoadingState.js +36 -0
- package/lib/hooks/useLoadingState.js.map +1 -0
- package/lib/hooks/useObjectMemo.d.ts +12 -0
- package/lib/hooks/useObjectMemo.js +20 -0
- package/lib/hooks/useObjectMemo.js.map +1 -0
- package/lib/hooks/useObjectTranslation.d.ts +15 -0
- package/lib/hooks/useObjectTranslation.js +19 -0
- package/lib/hooks/useObjectTranslation.js.map +1 -0
- package/lib/hooks/useQueue.d.ts +152 -0
- package/lib/hooks/useQueue.js +194 -0
- package/lib/hooks/useQueue.js.map +1 -0
- package/lib/hooks/useResponsiveStyle.d.ts +28 -0
- package/lib/hooks/useResponsiveStyle.js +64 -0
- package/lib/hooks/useResponsiveStyle.js.map +1 -0
- package/lib/hooks/useSearchParams.d.ts +4 -0
- package/lib/hooks/useSearchParams.js +12 -0
- package/lib/hooks/useSearchParams.js.map +1 -0
- package/lib/hooks/useSightLabel.d.ts +21 -0
- package/lib/hooks/useSightLabel.js +19 -0
- package/lib/hooks/useSightLabel.js.map +1 -0
- package/lib/hooks/useWindowDimensions.d.ts +15 -0
- package/lib/hooks/useWindowDimensions.js +27 -0
- package/lib/hooks/useWindowDimensions.js.map +1 -0
- package/lib/i18n/index.d.ts +2 -0
- package/lib/i18n/index.js +19 -0
- package/lib/i18n/index.js.map +1 -0
- package/lib/i18n/translations/image.d.ts +22 -0
- package/lib/i18n/translations/image.js +408 -0
- package/lib/i18n/translations/image.js.map +1 -0
- package/lib/i18n/translations/index.d.ts +2 -0
- package/lib/i18n/translations/index.js +19 -0
- package/lib/i18n/translations/index.js.map +1 -0
- package/lib/i18n/translations/vehicleParts.d.ts +5 -0
- package/lib/i18n/translations/vehicleParts.js +461 -0
- package/lib/i18n/translations/vehicleParts.js.map +1 -0
- package/lib/i18n/utils.d.ts +45 -0
- package/lib/i18n/utils.js +86 -0
- package/lib/i18n/utils.js.map +1 -0
- package/lib/index.d.ts +7 -0
- package/lib/index.js +24 -0
- package/lib/index.js.map +1 -0
- package/lib/state/actions/createdOneImage.d.ts +44 -0
- package/lib/state/actions/createdOneImage.js +52 -0
- package/lib/state/actions/createdOneImage.js.map +1 -0
- package/lib/state/actions/gotOneInspection.d.ts +24 -0
- package/lib/state/actions/gotOneInspection.js +55 -0
- package/lib/state/actions/gotOneInspection.js.map +1 -0
- package/lib/state/actions/index.d.ts +6 -0
- package/lib/state/actions/index.js +23 -0
- package/lib/state/actions/index.js.map +1 -0
- package/lib/state/actions/monkAction.d.ts +34 -0
- package/lib/state/actions/monkAction.js +30 -0
- package/lib/state/actions/monkAction.js.map +1 -0
- package/lib/state/actions/resetState.d.ts +20 -0
- package/lib/state/actions/resetState.js +21 -0
- package/lib/state/actions/resetState.js.map +1 -0
- package/lib/state/actions/updatedManyTasks.d.ts +32 -0
- package/lib/state/actions/updatedManyTasks.js +47 -0
- package/lib/state/actions/updatedManyTasks.js.map +1 -0
- package/lib/state/actions/updatedVehicle.d.ts +38 -0
- package/lib/state/actions/updatedVehicle.js +50 -0
- package/lib/state/actions/updatedVehicle.js.map +1 -0
- package/lib/state/context.d.ts +21 -0
- package/lib/state/context.js +10 -0
- package/lib/state/context.js.map +1 -0
- package/lib/state/hooks.d.ts +8 -0
- package/lib/state/hooks.js +20 -0
- package/lib/state/hooks.js.map +1 -0
- package/lib/state/index.d.ts +6 -0
- package/lib/state/index.js +23 -0
- package/lib/state/index.js.map +1 -0
- package/lib/state/provider.d.ts +19 -0
- package/lib/state/provider.js +40 -0
- package/lib/state/provider.js.map +1 -0
- package/lib/state/reducer.d.ts +6 -0
- package/lib/state/reducer.js +24 -0
- package/lib/state/reducer.js.map +1 -0
- package/lib/state/state.d.ts +50 -0
- package/lib/state/state.js +22 -0
- package/lib/state/state.js.map +1 -0
- package/lib/theme/context.d.ts +5 -0
- package/lib/theme/context.js +10 -0
- package/lib/theme/context.js.map +1 -0
- package/lib/theme/default/index.d.ts +1 -0
- package/lib/theme/default/index.js +18 -0
- package/lib/theme/default/index.js.map +1 -0
- package/lib/theme/default/palette.d.ts +2 -0
- package/lib/theme/default/palette.js +69 -0
- package/lib/theme/default/palette.js.map +1 -0
- package/lib/theme/hooks.d.ts +5 -0
- package/lib/theme/hooks.js +13 -0
- package/lib/theme/hooks.js.map +1 -0
- package/lib/theme/index.d.ts +5 -0
- package/lib/theme/index.js +22 -0
- package/lib/theme/index.js.map +1 -0
- package/lib/theme/provider.d.ts +16 -0
- package/lib/theme/provider.js +29 -0
- package/lib/theme/provider.js.map +1 -0
- package/lib/theme/theme.d.ts +17 -0
- package/lib/theme/theme.js +54 -0
- package/lib/theme/theme.js.map +1 -0
- package/lib/utils/array.utils.d.ts +26 -0
- package/lib/utils/array.utils.js +75 -0
- package/lib/utils/array.utils.js.map +1 -0
- package/lib/utils/browser.utils.d.ts +4 -0
- package/lib/utils/browser.utils.js +16 -0
- package/lib/utils/browser.utils.js.map +1 -0
- package/lib/utils/color.utils.d.ts +51 -0
- package/lib/utils/color.utils.js +155 -0
- package/lib/utils/color.utils.js.map +1 -0
- package/lib/utils/env.utils.d.ts +5 -0
- package/lib/utils/env.utils.js +16 -0
- package/lib/utils/env.utils.js.map +1 -0
- package/lib/utils/index.d.ts +9 -0
- package/lib/utils/index.js +26 -0
- package/lib/utils/index.js.map +1 -0
- package/lib/utils/mimetype.utils.d.ts +14 -0
- package/lib/utils/mimetype.utils.js +69 -0
- package/lib/utils/mimetype.utils.js.map +1 -0
- package/lib/utils/promise.utils.d.ts +4 -0
- package/lib/utils/promise.utils.js +13 -0
- package/lib/utils/promise.utils.js.map +1 -0
- package/lib/utils/state.utils.d.ts +9 -0
- package/lib/utils/state.utils.js +35 -0
- package/lib/utils/state.utils.js.map +1 -0
- package/lib/utils/string.utils.d.ts +22 -0
- package/lib/utils/string.utils.js +48 -0
- package/lib/utils/string.utils.js.map +1 -0
- package/lib/utils/zlib.utils.d.ts +8 -0
- package/lib/utils/zlib.utils.js +30 -0
- package/lib/utils/zlib.utils.js.map +1 -0
- package/package.json +97 -0
|
@@ -0,0 +1,116 @@
|
|
|
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
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
14
|
+
exports.useMonkAppState = exports.MonkAppStateProvider = exports.STORAGE_KEY_AUTH_TOKEN = void 0;
|
|
15
|
+
var jsx_runtime_1 = require("react/jsx-runtime");
|
|
16
|
+
var sights_1 = require("@monkvision/sights");
|
|
17
|
+
var react_1 = require("react");
|
|
18
|
+
var hooks_1 = require("../hooks");
|
|
19
|
+
var searchParams_1 = require("./searchParams");
|
|
20
|
+
var appState_1 = require("./appState");
|
|
21
|
+
var monitoring_1 = require("./monitoring");
|
|
22
|
+
var analytics_1 = require("./analytics");
|
|
23
|
+
/**
|
|
24
|
+
* Local storage key used within Monk web applications to store the authentication token.
|
|
25
|
+
*/
|
|
26
|
+
exports.STORAGE_KEY_AUTH_TOKEN = '@monk_authToken';
|
|
27
|
+
function getSights(config, vehicleType, steeringWheel) {
|
|
28
|
+
var currentVehicleType = vehicleType !== null && vehicleType !== void 0 ? vehicleType : config.defaultVehicleType;
|
|
29
|
+
var sightIds;
|
|
30
|
+
if (config.enableSteeringWheelPosition) {
|
|
31
|
+
var currentSteeringWheel = steeringWheel !== null && steeringWheel !== void 0 ? steeringWheel : config.defaultSteeringWheelPosition;
|
|
32
|
+
sightIds = config.sights[currentSteeringWheel][currentVehicleType];
|
|
33
|
+
}
|
|
34
|
+
else {
|
|
35
|
+
sightIds = config.sights[currentVehicleType];
|
|
36
|
+
}
|
|
37
|
+
if (!sightIds) {
|
|
38
|
+
throw new Error('Invalid application configuration. No sights have been found for the current vehicle type steering wheel position.');
|
|
39
|
+
}
|
|
40
|
+
return sightIds.map(function (id) {
|
|
41
|
+
if (!sights_1.sights[id]) {
|
|
42
|
+
throw new Error("Sight with ID \"".concat(id, "\" does not exist."));
|
|
43
|
+
}
|
|
44
|
+
return sights_1.sights[id];
|
|
45
|
+
});
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* A React context provider that declares the state for the common parameters used by Monk applications. The parameters
|
|
49
|
+
* are described in the `MonkAppState` interface. Using options available in the App config (`config` prop), this
|
|
50
|
+
* component can also fetch initial values for these params directly from the URL search params and the web local
|
|
51
|
+
* storage.
|
|
52
|
+
*
|
|
53
|
+
* @see MonkAppState
|
|
54
|
+
* @see MonkAppStateProviderProps
|
|
55
|
+
*/
|
|
56
|
+
function MonkAppStateProvider(_a) {
|
|
57
|
+
var config = _a.config, onFetchAuthToken = _a.onFetchAuthToken, onFetchLanguage = _a.onFetchLanguage, children = _a.children;
|
|
58
|
+
var loading = (0, hooks_1.useLoadingState)(true);
|
|
59
|
+
var _b = (0, react_1.useState)(null), authToken = _b[0], setAuthToken = _b[1];
|
|
60
|
+
var _c = (0, react_1.useState)(null), inspectionId = _c[0], setInspectionId = _c[1];
|
|
61
|
+
var _d = (0, react_1.useState)(null), vehicleType = _d[0], setVehicleType = _d[1];
|
|
62
|
+
var _e = (0, react_1.useState)(null), steeringWheel = _e[0], setSteeringWheel = _e[1];
|
|
63
|
+
var monkSearchParams = (0, searchParams_1.useMonkSearchParams)();
|
|
64
|
+
(0, monitoring_1.useAppStateMonitoring)({ authToken: authToken, inspectionId: inspectionId, vehicleType: vehicleType, steeringWheel: steeringWheel });
|
|
65
|
+
(0, analytics_1.useAppStateAnalytics)({ inspectionId: inspectionId });
|
|
66
|
+
(0, react_1.useEffect)(function () {
|
|
67
|
+
var _a;
|
|
68
|
+
loading.onSuccess();
|
|
69
|
+
var fetchedToken = localStorage.getItem(exports.STORAGE_KEY_AUTH_TOKEN);
|
|
70
|
+
if (config.fetchFromSearchParams) {
|
|
71
|
+
fetchedToken = (_a = monkSearchParams.get(searchParams_1.MonkSearchParam.TOKEN)) !== null && _a !== void 0 ? _a : fetchedToken;
|
|
72
|
+
setInspectionId(function (param) { var _a; return (_a = monkSearchParams.get(searchParams_1.MonkSearchParam.INSPECTION_ID)) !== null && _a !== void 0 ? _a : param; });
|
|
73
|
+
setVehicleType(function (param) { var _a; return (_a = monkSearchParams.get(searchParams_1.MonkSearchParam.VEHICLE_TYPE)) !== null && _a !== void 0 ? _a : param; });
|
|
74
|
+
setSteeringWheel(function (param) { var _a; return (_a = monkSearchParams.get(searchParams_1.MonkSearchParam.STEERING_WHEEL)) !== null && _a !== void 0 ? _a : param; });
|
|
75
|
+
var lang = monkSearchParams.get(searchParams_1.MonkSearchParam.LANGUAGE);
|
|
76
|
+
if (lang) {
|
|
77
|
+
onFetchLanguage === null || onFetchLanguage === void 0 ? void 0 : onFetchLanguage(lang);
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
if (fetchedToken) {
|
|
81
|
+
setAuthToken(fetchedToken);
|
|
82
|
+
onFetchAuthToken === null || onFetchAuthToken === void 0 ? void 0 : onFetchAuthToken();
|
|
83
|
+
}
|
|
84
|
+
}, [monkSearchParams, config]);
|
|
85
|
+
var getCurrentSights = (0, react_1.useCallback)(function () { return getSights(config, vehicleType, steeringWheel); }, [config, vehicleType, steeringWheel]);
|
|
86
|
+
var appState = (0, hooks_1.useObjectMemo)({
|
|
87
|
+
loading: loading,
|
|
88
|
+
config: config,
|
|
89
|
+
authToken: authToken,
|
|
90
|
+
inspectionId: inspectionId,
|
|
91
|
+
vehicleType: vehicleType,
|
|
92
|
+
steeringWheel: steeringWheel,
|
|
93
|
+
getCurrentSights: getCurrentSights,
|
|
94
|
+
setAuthToken: setAuthToken,
|
|
95
|
+
setInspectionId: setInspectionId,
|
|
96
|
+
setVehicleType: setVehicleType,
|
|
97
|
+
setSteeringWheel: setSteeringWheel,
|
|
98
|
+
});
|
|
99
|
+
return (0, jsx_runtime_1.jsx)(appState_1.MonkAppStateContext.Provider, __assign({ value: appState }, { children: children }));
|
|
100
|
+
}
|
|
101
|
+
exports.MonkAppStateProvider = MonkAppStateProvider;
|
|
102
|
+
function useMonkAppState(options) {
|
|
103
|
+
var value = (0, react_1.useContext)(appState_1.MonkAppStateContext);
|
|
104
|
+
if (!value) {
|
|
105
|
+
throw new Error('MonkAppState is null! Did you forget to place the <MonkAppStateProvider /> component?');
|
|
106
|
+
}
|
|
107
|
+
if ((options === null || options === void 0 ? void 0 : options.requireInspection) && !value.authToken) {
|
|
108
|
+
throw new Error('Authentication token is null but was required by the current component.');
|
|
109
|
+
}
|
|
110
|
+
if ((options === null || options === void 0 ? void 0 : options.requireInspection) && !value.inspectionId) {
|
|
111
|
+
throw new Error('Inspection ID is null but was required by the current component.');
|
|
112
|
+
}
|
|
113
|
+
return value;
|
|
114
|
+
}
|
|
115
|
+
exports.useMonkAppState = useMonkAppState;
|
|
116
|
+
//# sourceMappingURL=appStateProvider.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"appStateProvider.js","sourceRoot":"","sources":["../../src/apps/appStateProvider.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
__exportStar(require("./appState"), exports);
|
|
18
|
+
__exportStar(require("./appStateProvider"), exports);
|
|
19
|
+
__exportStar(require("./searchParams"), exports);
|
|
20
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/apps/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,6CAA2B;AAC3B,qDAAmC;AACnC,iDAA+B"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.useAppStateMonitoring = void 0;
|
|
4
|
+
var react_1 = require("react");
|
|
5
|
+
var jwt_decode_1 = require("jwt-decode");
|
|
6
|
+
var monitoring_1 = require("@monkvision/monitoring");
|
|
7
|
+
function useAppStateMonitoring(_a) {
|
|
8
|
+
var authToken = _a.authToken, inspectionId = _a.inspectionId, vehicleType = _a.vehicleType, steeringWheel = _a.steeringWheel;
|
|
9
|
+
var _b = (0, monitoring_1.useMonitoring)(), setTags = _b.setTags, setUserId = _b.setUserId;
|
|
10
|
+
(0, react_1.useEffect)(function () {
|
|
11
|
+
setTags({
|
|
12
|
+
inspectionId: inspectionId,
|
|
13
|
+
vehicleType: vehicleType,
|
|
14
|
+
steeringWheel: steeringWheel,
|
|
15
|
+
});
|
|
16
|
+
}, [inspectionId, vehicleType, steeringWheel, setTags]);
|
|
17
|
+
(0, react_1.useEffect)(function () {
|
|
18
|
+
var userId = authToken ? (0, jwt_decode_1.jwtDecode)(authToken).sub : undefined;
|
|
19
|
+
if (userId) {
|
|
20
|
+
setUserId(userId);
|
|
21
|
+
}
|
|
22
|
+
}, [authToken, setUserId]);
|
|
23
|
+
}
|
|
24
|
+
exports.useAppStateMonitoring = useAppStateMonitoring;
|
|
25
|
+
//# sourceMappingURL=monitoring.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"monitoring.js","sourceRoot":"","sources":["../../src/apps/monitoring.ts"],"names":[],"mappings":";;;AAAA,+BAAkC;AAClC,yCAAuC;AACvC,qDAAuD;AAGvD,SAAgB,qBAAqB,CAAC,EAK+C;QAJnF,SAAS,eAAA,EACT,YAAY,kBAAA,EACZ,WAAW,iBAAA,EACX,aAAa,mBAAA;IAEP,IAAA,KAAyB,IAAA,0BAAa,GAAE,EAAtC,OAAO,aAAA,EAAE,SAAS,eAAoB,CAAC;IAE/C,IAAA,iBAAS,EAAC;QACR,OAAO,CAAC;YACN,YAAY,cAAA;YACZ,WAAW,aAAA;YACX,aAAa,eAAA;SACd,CAAC,CAAC;IACL,CAAC,EAAE,CAAC,YAAY,EAAE,WAAW,EAAE,aAAa,EAAE,OAAO,CAAC,CAAC,CAAC;IAExD,IAAA,iBAAS,EAAC;QACR,IAAM,MAAM,GAAG,SAAS,CAAC,CAAC,CAAC,IAAA,sBAAS,EAAC,SAAS,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC;QAChE,IAAI,MAAM,EAAE;YACV,SAAS,CAAC,MAAM,CAAC,CAAC;SACnB;IACH,CAAC,EAAE,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC,CAAC;AAC7B,CAAC;AAtBD,sDAsBC"}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
import { MonkLanguage, SteeringWheelPosition, VehicleType } from '@monkvision/types';
|
|
2
|
+
/**
|
|
3
|
+
* Enumeration of the usual search parameters used by Monk applications. These parameters help configure the application
|
|
4
|
+
* via URL directly.
|
|
5
|
+
*/
|
|
6
|
+
export declare enum MonkSearchParam {
|
|
7
|
+
/**
|
|
8
|
+
* Search parameter used to provide an authentication token directly via URL. Note : auth tokens need be compressed
|
|
9
|
+
* using ZLib (ex: using the `zlibCompress` utility function available in this package) and properly URL-encoded
|
|
10
|
+
* before being passed as a URL param. No Monk app should ever use auth tokens obtained from URL search params without
|
|
11
|
+
* compression and encoding.
|
|
12
|
+
*
|
|
13
|
+
* @see zlibCompress
|
|
14
|
+
* @see encodeURIComponent
|
|
15
|
+
*/
|
|
16
|
+
TOKEN = "t",
|
|
17
|
+
/**
|
|
18
|
+
* Search parameter used to provide an inspection ID to the app to use directly.
|
|
19
|
+
*/
|
|
20
|
+
INSPECTION_ID = "i",
|
|
21
|
+
/**
|
|
22
|
+
* Search parameter used to specify the vehicle type that the application should use. The list of vehicle types
|
|
23
|
+
* available and supported by the Monk SDK is described in the `VehicleType` enum exported by the `@monkvision/types`
|
|
24
|
+
* package.
|
|
25
|
+
*
|
|
26
|
+
* @see VehicleType
|
|
27
|
+
*/
|
|
28
|
+
VEHICLE_TYPE = "v",
|
|
29
|
+
/**
|
|
30
|
+
* Search parameter used to specify the language used by the application. The list of languages supported by the Monk
|
|
31
|
+
* SDK is available in the `monkLanguages` array exported by the `@monkvision/types` package.
|
|
32
|
+
*
|
|
33
|
+
* @see monkLanguages
|
|
34
|
+
*/
|
|
35
|
+
LANGUAGE = "l",
|
|
36
|
+
/**
|
|
37
|
+
* Search parameter used to specify the position of the steering wheel on the car.
|
|
38
|
+
*
|
|
39
|
+
* @see SteeringWheelPosition
|
|
40
|
+
*/
|
|
41
|
+
STEERING_WHEEL = "s"
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Getter function used to fetch the value of MonkSearchParams for the current app search params.
|
|
45
|
+
*/
|
|
46
|
+
export type MonkSearchParamsGetter = {
|
|
47
|
+
(param: MonkSearchParam.TOKEN): string | null;
|
|
48
|
+
(param: MonkSearchParam.INSPECTION_ID): string | null;
|
|
49
|
+
(param: MonkSearchParam.VEHICLE_TYPE): VehicleType | null;
|
|
50
|
+
(param: MonkSearchParam.STEERING_WHEEL): SteeringWheelPosition | null;
|
|
51
|
+
(param: MonkSearchParam.LANGUAGE): MonkLanguage | null;
|
|
52
|
+
};
|
|
53
|
+
/**
|
|
54
|
+
* Custom hook used to return a getter function used to fetch the value of different MonkSearchParams.
|
|
55
|
+
*
|
|
56
|
+
* @see MonkSearchParam
|
|
57
|
+
*/
|
|
58
|
+
export declare function useMonkSearchParams(): {
|
|
59
|
+
get: MonkSearchParamsGetter;
|
|
60
|
+
};
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.useMonkSearchParams = exports.MonkSearchParam = void 0;
|
|
4
|
+
var types_1 = require("@monkvision/types");
|
|
5
|
+
var react_1 = require("react");
|
|
6
|
+
var hooks_1 = require("../hooks");
|
|
7
|
+
var utils_1 = require("../utils");
|
|
8
|
+
/**
|
|
9
|
+
* Enumeration of the usual search parameters used by Monk applications. These parameters help configure the application
|
|
10
|
+
* via URL directly.
|
|
11
|
+
*/
|
|
12
|
+
var MonkSearchParam;
|
|
13
|
+
(function (MonkSearchParam) {
|
|
14
|
+
/**
|
|
15
|
+
* Search parameter used to provide an authentication token directly via URL. Note : auth tokens need be compressed
|
|
16
|
+
* using ZLib (ex: using the `zlibCompress` utility function available in this package) and properly URL-encoded
|
|
17
|
+
* before being passed as a URL param. No Monk app should ever use auth tokens obtained from URL search params without
|
|
18
|
+
* compression and encoding.
|
|
19
|
+
*
|
|
20
|
+
* @see zlibCompress
|
|
21
|
+
* @see encodeURIComponent
|
|
22
|
+
*/
|
|
23
|
+
MonkSearchParam["TOKEN"] = "t";
|
|
24
|
+
/**
|
|
25
|
+
* Search parameter used to provide an inspection ID to the app to use directly.
|
|
26
|
+
*/
|
|
27
|
+
MonkSearchParam["INSPECTION_ID"] = "i";
|
|
28
|
+
/**
|
|
29
|
+
* Search parameter used to specify the vehicle type that the application should use. The list of vehicle types
|
|
30
|
+
* available and supported by the Monk SDK is described in the `VehicleType` enum exported by the `@monkvision/types`
|
|
31
|
+
* package.
|
|
32
|
+
*
|
|
33
|
+
* @see VehicleType
|
|
34
|
+
*/
|
|
35
|
+
MonkSearchParam["VEHICLE_TYPE"] = "v";
|
|
36
|
+
/**
|
|
37
|
+
* Search parameter used to specify the language used by the application. The list of languages supported by the Monk
|
|
38
|
+
* SDK is available in the `monkLanguages` array exported by the `@monkvision/types` package.
|
|
39
|
+
*
|
|
40
|
+
* @see monkLanguages
|
|
41
|
+
*/
|
|
42
|
+
MonkSearchParam["LANGUAGE"] = "l";
|
|
43
|
+
/**
|
|
44
|
+
* Search parameter used to specify the position of the steering wheel on the car.
|
|
45
|
+
*
|
|
46
|
+
* @see SteeringWheelPosition
|
|
47
|
+
*/
|
|
48
|
+
MonkSearchParam["STEERING_WHEEL"] = "s";
|
|
49
|
+
})(MonkSearchParam = exports.MonkSearchParam || (exports.MonkSearchParam = {}));
|
|
50
|
+
function validateParamValue(value, validValues) {
|
|
51
|
+
var validValuesArray = (Array.isArray(validValues) ? validValues : Object.values(validValues));
|
|
52
|
+
return validValuesArray.includes(value) ? value : null;
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* Custom hook used to return a getter function used to fetch the value of different MonkSearchParams.
|
|
56
|
+
*
|
|
57
|
+
* @see MonkSearchParam
|
|
58
|
+
*/
|
|
59
|
+
function useMonkSearchParams() {
|
|
60
|
+
var searchParams = (0, hooks_1.useSearchParams)();
|
|
61
|
+
var get = (0, react_1.useCallback)(function (param) {
|
|
62
|
+
var value = searchParams.get(param);
|
|
63
|
+
switch (param) {
|
|
64
|
+
case MonkSearchParam.TOKEN:
|
|
65
|
+
return value ? (0, utils_1.zlibDecompress)(value) : null;
|
|
66
|
+
case MonkSearchParam.INSPECTION_ID:
|
|
67
|
+
return value;
|
|
68
|
+
case MonkSearchParam.VEHICLE_TYPE:
|
|
69
|
+
return validateParamValue(value, types_1.VehicleType);
|
|
70
|
+
case MonkSearchParam.STEERING_WHEEL:
|
|
71
|
+
return validateParamValue(value, types_1.SteeringWheelPosition);
|
|
72
|
+
case MonkSearchParam.LANGUAGE:
|
|
73
|
+
return validateParamValue(value, types_1.monkLanguages);
|
|
74
|
+
default:
|
|
75
|
+
return null;
|
|
76
|
+
}
|
|
77
|
+
}, [searchParams]);
|
|
78
|
+
return (0, hooks_1.useObjectMemo)({ get: get });
|
|
79
|
+
}
|
|
80
|
+
exports.useMonkSearchParams = useMonkSearchParams;
|
|
81
|
+
//# sourceMappingURL=searchParams.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"searchParams.js","sourceRoot":"","sources":["../../src/apps/searchParams.ts"],"names":[],"mappings":";;;AAAA,2CAM2B;AAC3B,+BAAoC;AACpC,kCAA0D;AAC1D,kCAA0C;AAE1C;;;GAGG;AACH,IAAY,eAoCX;AApCD,WAAY,eAAe;IACzB;;;;;;;;OAQG;IACH,8BAAW,CAAA;IACX;;OAEG;IACH,sCAAmB,CAAA;IACnB;;;;;;OAMG;IACH,qCAAkB,CAAA;IAClB;;;;;OAKG;IACH,iCAAc,CAAA;IACd;;;;OAIG;IACH,uCAAoB,CAAA;AACtB,CAAC,EApCW,eAAe,GAAf,uBAAe,KAAf,uBAAe,QAoC1B;AAaD,SAAS,kBAAkB,CACzB,KAAoB,EACpB,WAAkC;IAElC,IAAM,gBAAgB,GAAG,CACvB,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,CACjD,CAAC;IACvB,OAAO,gBAAgB,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAE,KAAW,CAAC,CAAC,CAAC,IAAI,CAAC;AAChE,CAAC;AAED;;;;GAIG;AACH,SAAgB,mBAAmB;IACjC,IAAM,YAAY,GAAG,IAAA,uBAAe,GAAE,CAAC;IAEvC,IAAM,GAAG,GAAG,IAAA,mBAAW,EACrB,UAAC,KAAsB;QACrB,IAAM,KAAK,GAAG,YAAY,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QACtC,QAAQ,KAAK,EAAE;YACb,KAAK,eAAe,CAAC,KAAK;gBACxB,OAAO,KAAK,CAAC,CAAC,CAAC,IAAA,sBAAc,EAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;YAC9C,KAAK,eAAe,CAAC,aAAa;gBAChC,OAAO,KAAK,CAAC;YACf,KAAK,eAAe,CAAC,YAAY;gBAC/B,OAAO,kBAAkB,CAAC,KAAK,EAAE,mBAAW,CAAC,CAAC;YAChD,KAAK,eAAe,CAAC,cAAc;gBACjC,OAAO,kBAAkB,CAAC,KAAK,EAAE,6BAAqB,CAAC,CAAC;YAC1D,KAAK,eAAe,CAAC,QAAQ;gBAC3B,OAAO,kBAAkB,CAAC,KAAK,EAAE,qBAAa,CAAC,CAAC;YAClD;gBACE,OAAO,IAAI,CAAC;SACf;IACH,CAAC,EACD,CAAC,YAAY,CAAC,CACf,CAAC;IAEF,OAAO,IAAA,qBAAa,EAAC,EAAE,GAAG,KAAA,EAAE,CAAC,CAAC;AAChC,CAAC;AAzBD,kDAyBC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
export * from './useWindowDimensions';
|
|
2
|
+
export * from './useResponsiveStyle';
|
|
3
|
+
export * from './useInteractiveStatus';
|
|
4
|
+
export * from './useQueue';
|
|
5
|
+
export * from './useObjectTranslation';
|
|
6
|
+
export * from './useSightLabel';
|
|
7
|
+
export * from './useLoadingState';
|
|
8
|
+
export * from './useAsyncEffect';
|
|
9
|
+
export * from './useSearchParams';
|
|
10
|
+
export * from './useInterval';
|
|
11
|
+
export * from './useAsyncInterval';
|
|
12
|
+
export * from './useObjectMemo';
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
__exportStar(require("./useWindowDimensions"), exports);
|
|
18
|
+
__exportStar(require("./useResponsiveStyle"), exports);
|
|
19
|
+
__exportStar(require("./useInteractiveStatus"), exports);
|
|
20
|
+
__exportStar(require("./useQueue"), exports);
|
|
21
|
+
__exportStar(require("./useObjectTranslation"), exports);
|
|
22
|
+
__exportStar(require("./useSightLabel"), exports);
|
|
23
|
+
__exportStar(require("./useLoadingState"), exports);
|
|
24
|
+
__exportStar(require("./useAsyncEffect"), exports);
|
|
25
|
+
__exportStar(require("./useSearchParams"), exports);
|
|
26
|
+
__exportStar(require("./useInterval"), exports);
|
|
27
|
+
__exportStar(require("./useAsyncInterval"), exports);
|
|
28
|
+
__exportStar(require("./useObjectMemo"), exports);
|
|
29
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/hooks/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,wDAAsC;AACtC,uDAAqC;AACrC,yDAAuC;AACvC,6CAA2B;AAC3B,yDAAuC;AACvC,kDAAgC;AAChC,oDAAkC;AAClC,mDAAiC;AACjC,oDAAkC;AAClC,gDAA8B;AAC9B,qDAAmC;AACnC,kDAAgC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { DependencyList } from 'react';
|
|
2
|
+
import { PromiseHandlers } from '@monkvision/types';
|
|
3
|
+
/**
|
|
4
|
+
* Custom hook that can be used to run asyncrhonous effects. It is similar to `useEffect` but makes sure to not execute
|
|
5
|
+
* the effect handlers if the effect's Promise resolves after the current component as been dismounted.
|
|
6
|
+
*/
|
|
7
|
+
export declare function useAsyncEffect<T = void>(effect: () => Promise<T>, deps: DependencyList | undefined, handlers?: Partial<PromiseHandlers<T>>): void;
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.useAsyncEffect = void 0;
|
|
4
|
+
var react_1 = require("react");
|
|
5
|
+
/**
|
|
6
|
+
* Custom hook that can be used to run asyncrhonous effects. It is similar to `useEffect` but makes sure to not execute
|
|
7
|
+
* the effect handlers if the effect's Promise resolves after the current component as been dismounted.
|
|
8
|
+
*/
|
|
9
|
+
function useAsyncEffect(effect, deps, handlers) {
|
|
10
|
+
(0, react_1.useEffect)(function () {
|
|
11
|
+
var isActive = true;
|
|
12
|
+
effect()
|
|
13
|
+
.then(function (res) {
|
|
14
|
+
var _a;
|
|
15
|
+
if (isActive) {
|
|
16
|
+
(_a = handlers === null || handlers === void 0 ? void 0 : handlers.onResolve) === null || _a === void 0 ? void 0 : _a.call(handlers, res);
|
|
17
|
+
}
|
|
18
|
+
})
|
|
19
|
+
.catch(function (err) {
|
|
20
|
+
var _a;
|
|
21
|
+
if (isActive) {
|
|
22
|
+
(_a = handlers === null || handlers === void 0 ? void 0 : handlers.onReject) === null || _a === void 0 ? void 0 : _a.call(handlers, err);
|
|
23
|
+
}
|
|
24
|
+
})
|
|
25
|
+
.finally(function () {
|
|
26
|
+
var _a;
|
|
27
|
+
if (isActive) {
|
|
28
|
+
(_a = handlers === null || handlers === void 0 ? void 0 : handlers.onComplete) === null || _a === void 0 ? void 0 : _a.call(handlers);
|
|
29
|
+
}
|
|
30
|
+
});
|
|
31
|
+
return function () {
|
|
32
|
+
isActive = false;
|
|
33
|
+
};
|
|
34
|
+
}, deps);
|
|
35
|
+
}
|
|
36
|
+
exports.useAsyncEffect = useAsyncEffect;
|
|
37
|
+
//# sourceMappingURL=useAsyncEffect.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useAsyncEffect.js","sourceRoot":"","sources":["../../src/hooks/useAsyncEffect.ts"],"names":[],"mappings":";;;AAAA,+BAAkD;AAGlD;;;GAGG;AACH,SAAgB,cAAc,CAC5B,MAAwB,EACxB,IAAgC,EAChC,QAAsC;IAEtC,IAAA,iBAAS,EAAC;QACR,IAAI,QAAQ,GAAG,IAAI,CAAC;QACpB,MAAM,EAAE;aACL,IAAI,CAAC,UAAC,GAAG;;YACR,IAAI,QAAQ,EAAE;gBACZ,MAAA,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,SAAS,yDAAG,GAAG,CAAC,CAAC;aAC5B;QACH,CAAC,CAAC;aACD,KAAK,CAAC,UAAC,GAAG;;YACT,IAAI,QAAQ,EAAE;gBACZ,MAAA,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,QAAQ,yDAAG,GAAG,CAAC,CAAC;aAC3B;QACH,CAAC,CAAC;aACD,OAAO,CAAC;;YACP,IAAI,QAAQ,EAAE;gBACZ,MAAA,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,UAAU,wDAAI,CAAC;aAC1B;QACH,CAAC,CAAC,CAAC;QACL,OAAO;YACL,QAAQ,GAAG,KAAK,CAAC;QACnB,CAAC,CAAC;IACJ,CAAC,EAAE,IAAI,CAAC,CAAC;AACX,CAAC;AA3BD,wCA2BC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { PromiseHandlers } from '@monkvision/types';
|
|
2
|
+
/**
|
|
3
|
+
* This custom hook creates an interval that calls the provided async callback every `delay` milliseconds if the
|
|
4
|
+
* previous call isn't still running. If `delay` is `null` or less than 0, the callback will not be called. The
|
|
5
|
+
* promise handlers provided will only be called while the component is still mounted.
|
|
6
|
+
*/
|
|
7
|
+
export declare function useAsyncInterval<T>(callback: () => Promise<T>, delay: number | null, handlers?: Partial<PromiseHandlers<T>>): void;
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.useAsyncInterval = void 0;
|
|
4
|
+
var react_1 = require("react");
|
|
5
|
+
/**
|
|
6
|
+
* This custom hook creates an interval that calls the provided async callback every `delay` milliseconds if the
|
|
7
|
+
* previous call isn't still running. If `delay` is `null` or less than 0, the callback will not be called. The
|
|
8
|
+
* promise handlers provided will only be called while the component is still mounted.
|
|
9
|
+
*/
|
|
10
|
+
function useAsyncInterval(callback, delay, handlers) {
|
|
11
|
+
var callbackRef = (0, react_1.useRef)(callback);
|
|
12
|
+
(0, react_1.useLayoutEffect)(function () {
|
|
13
|
+
callbackRef.current = callback;
|
|
14
|
+
}, [callback]);
|
|
15
|
+
(0, react_1.useEffect)(function () {
|
|
16
|
+
var isActive = true;
|
|
17
|
+
var isRunning = false;
|
|
18
|
+
if (delay === null || delay < 0) {
|
|
19
|
+
return function () { };
|
|
20
|
+
}
|
|
21
|
+
var intervalId = setInterval(function () {
|
|
22
|
+
if (!isRunning) {
|
|
23
|
+
isRunning = true;
|
|
24
|
+
callbackRef
|
|
25
|
+
.current()
|
|
26
|
+
.then(function (res) {
|
|
27
|
+
var _a;
|
|
28
|
+
if (isActive) {
|
|
29
|
+
(_a = handlers === null || handlers === void 0 ? void 0 : handlers.onResolve) === null || _a === void 0 ? void 0 : _a.call(handlers, res);
|
|
30
|
+
}
|
|
31
|
+
})
|
|
32
|
+
.catch(function (err) {
|
|
33
|
+
var _a;
|
|
34
|
+
if (isActive) {
|
|
35
|
+
(_a = handlers === null || handlers === void 0 ? void 0 : handlers.onReject) === null || _a === void 0 ? void 0 : _a.call(handlers, err);
|
|
36
|
+
}
|
|
37
|
+
})
|
|
38
|
+
.finally(function () {
|
|
39
|
+
var _a;
|
|
40
|
+
if (isActive) {
|
|
41
|
+
isRunning = false;
|
|
42
|
+
(_a = handlers === null || handlers === void 0 ? void 0 : handlers.onComplete) === null || _a === void 0 ? void 0 : _a.call(handlers);
|
|
43
|
+
}
|
|
44
|
+
});
|
|
45
|
+
}
|
|
46
|
+
}, delay);
|
|
47
|
+
return function () {
|
|
48
|
+
isActive = false;
|
|
49
|
+
clearInterval(intervalId);
|
|
50
|
+
};
|
|
51
|
+
}, [delay]);
|
|
52
|
+
}
|
|
53
|
+
exports.useAsyncInterval = useAsyncInterval;
|
|
54
|
+
//# sourceMappingURL=useAsyncInterval.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useAsyncInterval.js","sourceRoot":"","sources":["../../src/hooks/useAsyncInterval.ts"],"names":[],"mappings":";;;AAAA,+BAA2D;AAG3D;;;;GAIG;AACH,SAAgB,gBAAgB,CAC9B,QAA0B,EAC1B,KAAoB,EACpB,QAAsC;IAEtC,IAAM,WAAW,GAAG,IAAA,cAAM,EAAC,QAAQ,CAAC,CAAC;IAErC,IAAA,uBAAe,EAAC;QACd,WAAW,CAAC,OAAO,GAAG,QAAQ,CAAC;IACjC,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC;IAEf,IAAA,iBAAS,EAAC;QACR,IAAI,QAAQ,GAAG,IAAI,CAAC;QACpB,IAAI,SAAS,GAAG,KAAK,CAAC;QAEtB,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,GAAG,CAAC,EAAE;YAC/B,OAAO,cAAO,CAAC,CAAC;SACjB;QAED,IAAM,UAAU,GAAG,WAAW,CAAC;YAC7B,IAAI,CAAC,SAAS,EAAE;gBACd,SAAS,GAAG,IAAI,CAAC;gBACjB,WAAW;qBACR,OAAO,EAAE;qBACT,IAAI,CAAC,UAAC,GAAG;;oBACR,IAAI,QAAQ,EAAE;wBACZ,MAAA,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,SAAS,yDAAG,GAAG,CAAC,CAAC;qBAC5B;gBACH,CAAC,CAAC;qBACD,KAAK,CAAC,UAAC,GAAG;;oBACT,IAAI,QAAQ,EAAE;wBACZ,MAAA,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,QAAQ,yDAAG,GAAG,CAAC,CAAC;qBAC3B;gBACH,CAAC,CAAC;qBACD,OAAO,CAAC;;oBACP,IAAI,QAAQ,EAAE;wBACZ,SAAS,GAAG,KAAK,CAAC;wBAClB,MAAA,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,UAAU,wDAAI,CAAC;qBAC1B;gBACH,CAAC,CAAC,CAAC;aACN;QACH,CAAC,EAAE,KAAK,CAAC,CAAC;QAEV,OAAO;YACL,QAAQ,GAAG,KAAK,CAAC;YACjB,aAAa,CAAC,UAAU,CAAC,CAAC;QAC5B,CAAC,CAAC;IACJ,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;AACd,CAAC;AAhDD,4CAgDC"}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import { MouseEventHandler } from 'react';
|
|
2
|
+
import { InteractiveStatus } from '@monkvision/types';
|
|
3
|
+
/**
|
|
4
|
+
* Object containing the event listeners used to get the current status of an interactive element.
|
|
5
|
+
*/
|
|
6
|
+
export interface InteractiveEventListeners {
|
|
7
|
+
onMouseEnter: MouseEventHandler;
|
|
8
|
+
onMouseLeave: MouseEventHandler;
|
|
9
|
+
onMouseDown: MouseEventHandler;
|
|
10
|
+
onMouseUp: MouseEventHandler;
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* Parameters given to the useInteractiveStatus hook.
|
|
14
|
+
*/
|
|
15
|
+
export interface UseInteractiveStatusParams {
|
|
16
|
+
/**
|
|
17
|
+
* Boolean indicating if the element is disabled or not.
|
|
18
|
+
*
|
|
19
|
+
* @default false
|
|
20
|
+
*/
|
|
21
|
+
disabled?: boolean;
|
|
22
|
+
/**
|
|
23
|
+
* The event handlers of the component if you need to merge them.
|
|
24
|
+
*/
|
|
25
|
+
componentHandlers?: Partial<InteractiveEventListeners>;
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* The result of the useInteractiveStatus. It contains the current interactive status of the element as well as the
|
|
29
|
+
* event listeners it needs to update its status.
|
|
30
|
+
*/
|
|
31
|
+
export interface UseInteractiveStatusResult {
|
|
32
|
+
/**
|
|
33
|
+
* The interactive status of the element.
|
|
34
|
+
*/
|
|
35
|
+
status: InteractiveStatus;
|
|
36
|
+
/**
|
|
37
|
+
* The event listeners the element needs to update its status.
|
|
38
|
+
*/
|
|
39
|
+
eventHandlers: InteractiveEventListeners;
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Custom hook used to manage the interactive state (active, hovered, disabled...) of a React element. This hook returns
|
|
43
|
+
* the state of the element, as well as MouseEvent listeners needed on the element to update its interactive state.
|
|
44
|
+
*
|
|
45
|
+
* @example
|
|
46
|
+
* function TestComponent() {
|
|
47
|
+
* const { status, events } = useInteractiveStatus();
|
|
48
|
+
* useEffect(() => console.log('Button status :', status), [status]);
|
|
49
|
+
* return <button {...events}>My Button</button>;
|
|
50
|
+
* }
|
|
51
|
+
*/
|
|
52
|
+
export declare function useInteractiveStatus(params?: UseInteractiveStatusParams): UseInteractiveStatusResult;
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.useInteractiveStatus = void 0;
|
|
4
|
+
var react_1 = require("react");
|
|
5
|
+
var types_1 = require("@monkvision/types");
|
|
6
|
+
function getInteractiveStatus(_a) {
|
|
7
|
+
var _b = _a.hovered, hovered = _b === void 0 ? false : _b, _c = _a.active, active = _c === void 0 ? false : _c, _d = _a.disabled, disabled = _d === void 0 ? false : _d;
|
|
8
|
+
if (disabled) {
|
|
9
|
+
return types_1.InteractiveStatus.DISABLED;
|
|
10
|
+
}
|
|
11
|
+
if (active) {
|
|
12
|
+
return types_1.InteractiveStatus.ACTIVE;
|
|
13
|
+
}
|
|
14
|
+
return hovered ? types_1.InteractiveStatus.HOVERED : types_1.InteractiveStatus.DEFAULT;
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Custom hook used to manage the interactive state (active, hovered, disabled...) of a React element. This hook returns
|
|
18
|
+
* the state of the element, as well as MouseEvent listeners needed on the element to update its interactive state.
|
|
19
|
+
*
|
|
20
|
+
* @example
|
|
21
|
+
* function TestComponent() {
|
|
22
|
+
* const { status, events } = useInteractiveStatus();
|
|
23
|
+
* useEffect(() => console.log('Button status :', status), [status]);
|
|
24
|
+
* return <button {...events}>My Button</button>;
|
|
25
|
+
* }
|
|
26
|
+
*/
|
|
27
|
+
function useInteractiveStatus(params) {
|
|
28
|
+
var _a, _b, _c, _d;
|
|
29
|
+
var _e = (0, react_1.useState)(false), hovered = _e[0], setHovered = _e[1];
|
|
30
|
+
var _f = (0, react_1.useState)(false), active = _f[0], setActive = _f[1];
|
|
31
|
+
var onMouseEnter = (0, react_1.useCallback)(function (event) {
|
|
32
|
+
var _a;
|
|
33
|
+
setHovered(true);
|
|
34
|
+
if ((_a = params === null || params === void 0 ? void 0 : params.componentHandlers) === null || _a === void 0 ? void 0 : _a.onMouseEnter) {
|
|
35
|
+
params.componentHandlers.onMouseEnter(event);
|
|
36
|
+
}
|
|
37
|
+
}, [(_a = params === null || params === void 0 ? void 0 : params.componentHandlers) === null || _a === void 0 ? void 0 : _a.onMouseEnter]);
|
|
38
|
+
var onMouseLeave = (0, react_1.useCallback)(function (event) {
|
|
39
|
+
var _a;
|
|
40
|
+
setHovered(false);
|
|
41
|
+
if ((_a = params === null || params === void 0 ? void 0 : params.componentHandlers) === null || _a === void 0 ? void 0 : _a.onMouseLeave) {
|
|
42
|
+
params.componentHandlers.onMouseLeave(event);
|
|
43
|
+
}
|
|
44
|
+
}, [(_b = params === null || params === void 0 ? void 0 : params.componentHandlers) === null || _b === void 0 ? void 0 : _b.onMouseLeave]);
|
|
45
|
+
var onMouseDown = (0, react_1.useCallback)(function (event) {
|
|
46
|
+
var _a;
|
|
47
|
+
setActive(true);
|
|
48
|
+
if ((_a = params === null || params === void 0 ? void 0 : params.componentHandlers) === null || _a === void 0 ? void 0 : _a.onMouseDown) {
|
|
49
|
+
params.componentHandlers.onMouseDown(event);
|
|
50
|
+
}
|
|
51
|
+
}, [(_c = params === null || params === void 0 ? void 0 : params.componentHandlers) === null || _c === void 0 ? void 0 : _c.onMouseDown]);
|
|
52
|
+
var onMouseUp = (0, react_1.useCallback)(function (event) {
|
|
53
|
+
var _a;
|
|
54
|
+
setActive(false);
|
|
55
|
+
if ((_a = params === null || params === void 0 ? void 0 : params.componentHandlers) === null || _a === void 0 ? void 0 : _a.onMouseUp) {
|
|
56
|
+
params.componentHandlers.onMouseUp(event);
|
|
57
|
+
}
|
|
58
|
+
}, [(_d = params === null || params === void 0 ? void 0 : params.componentHandlers) === null || _d === void 0 ? void 0 : _d.onMouseUp]);
|
|
59
|
+
return (0, react_1.useMemo)(function () { return ({
|
|
60
|
+
status: getInteractiveStatus({ hovered: hovered, active: active, disabled: params === null || params === void 0 ? void 0 : params.disabled }),
|
|
61
|
+
eventHandlers: {
|
|
62
|
+
onMouseEnter: onMouseEnter,
|
|
63
|
+
onMouseLeave: onMouseLeave,
|
|
64
|
+
onMouseDown: onMouseDown,
|
|
65
|
+
onMouseUp: onMouseUp,
|
|
66
|
+
},
|
|
67
|
+
}); }, [hovered, active, params === null || params === void 0 ? void 0 : params.disabled, onMouseEnter, onMouseLeave, onMouseDown, onMouseUp]);
|
|
68
|
+
}
|
|
69
|
+
exports.useInteractiveStatus = useInteractiveStatus;
|
|
70
|
+
//# sourceMappingURL=useInteractiveStatus.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useInteractiveStatus.js","sourceRoot":"","sources":["../../src/hooks/useInteractiveStatus.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* This custom hook creates an interval that calls the provided callback every `delay` milliseconds. If `delay` is
|
|
3
|
+
* `null` or less than 0, the callback will not be called.
|
|
4
|
+
*/
|
|
5
|
+
export declare function useInterval(callback: () => void, delay: number | null): void;
|