@iternio/react-native-auto-play 0.5.14-beta.1 → 0.6.1
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 +270 -36
- package/android/src/main/java/com/margelo/nitro/swe/iternio/reactnativeautoplay/AndroidAutoSession.kt +5 -0
- package/android/src/main/java/com/margelo/nitro/swe/iternio/reactnativeautoplay/HybridMapTemplate.kt +9 -2
- package/android/src/main/java/com/margelo/nitro/swe/iternio/reactnativeautoplay/NativeBackdrop.kt +40 -0
- package/android/src/main/java/com/margelo/nitro/swe/iternio/reactnativeautoplay/VirtualRenderer.kt +52 -0
- package/android/src/main/java/com/margelo/nitro/swe/iternio/reactnativeautoplay/template/GridTemplate.kt +47 -13
- package/android/src/main/java/com/margelo/nitro/swe/iternio/reactnativeautoplay/template/Parser.kt +69 -15
- package/ios/Types.swift +3 -0
- package/ios/extensions/UIImage+Toggle.swift +5 -2
- package/ios/hybrid/HybridAutoPlay.swift +28 -16
- package/ios/hybrid/HybridMapTemplate.swift +22 -5
- package/ios/scenes/AutoPlayInterfaceController.swift +261 -72
- package/ios/templates/AutoPlayMapPanelDelegate.swift +190 -0
- package/ios/templates/AutoPlayTemplate.swift +24 -2
- package/ios/templates/GridTemplate.swift +57 -57
- package/ios/templates/InformationTemplate.swift +84 -9
- package/ios/templates/ListTemplate.swift +66 -11
- package/ios/templates/MapTemplate.swift +83 -68
- package/ios/templates/MessageTemplate.swift +72 -6
- package/ios/templates/Parser.swift +564 -69
- package/ios/templates/SearchTemplate.swift +1 -1
- package/ios/templates/TemplateStore.swift +5 -15
- package/ios/utils/SymbolFont.swift +13 -28
- package/jest.js +2 -0
- package/lib/Constants.d.ts +4 -0
- package/lib/Constants.js +6 -0
- package/lib/index.d.ts +1 -0
- package/lib/index.js +1 -0
- package/lib/index.web.d.ts +73 -0
- package/lib/index.web.js +72 -1
- package/lib/specs/MapTemplate.nitro.d.ts +3 -1
- package/lib/templates/GridTemplate.d.ts +23 -3
- package/lib/templates/GridTemplate.js +8 -0
- package/lib/templates/InformationTemplate.d.ts +38 -12
- package/lib/templates/ListTemplate.d.ts +16 -47
- package/lib/templates/MapTemplate.d.ts +26 -2
- package/lib/templates/MapTemplate.js +16 -2
- package/lib/templates/MessageTemplate.d.ts +52 -11
- package/lib/templates/MessageTemplate.js +1 -1
- package/lib/types/Image.d.ts +6 -1
- package/lib/utils/NitroColor.d.ts +1 -0
- package/lib/utils/NitroColor.js +8 -0
- package/lib/utils/NitroImage.js +1 -1
- package/lib/utils/NitroManeuver.js +1 -3
- package/lib/utils/NitroOptionsPanel.d.ts +103 -0
- package/lib/utils/NitroOptionsPanel.js +63 -0
- package/lib/utils/NitroSection.d.ts +89 -2
- package/lib/utils/NitroSection.js +49 -2
- package/lib-cjs/AutoPlayHeadlessJsTask.js +16 -0
- package/lib-cjs/Constants.js +9 -0
- package/lib-cjs/components/MapTemplateContext.js +10 -0
- package/lib-cjs/components/SafeAreaInsetsContext.js +21 -0
- package/lib-cjs/components/SafeAreaView.js +22 -0
- package/lib-cjs/components/WindowInformationWrapper.js +20 -0
- package/lib-cjs/hooks/useAndroidAutoTelemetry.js +115 -0
- package/lib-cjs/hooks/useFocusedEffect.js +35 -0
- package/lib-cjs/hooks/useMapTemplate.js +13 -0
- package/lib-cjs/hooks/useSafeAreaInsets.js +9 -0
- package/lib-cjs/hooks/useVoiceInput.js +42 -0
- package/lib-cjs/hybrid/HybridAndroidAutoTelemetry.js +4 -0
- package/lib-cjs/hybrid/HybridAndroidWindowInformation.js +4 -0
- package/lib-cjs/hybrid/HybridAutoPlay.js +5 -0
- package/lib-cjs/hybrid/HybridVoice.js +61 -0
- package/lib-cjs/index.js +76 -0
- package/lib-cjs/index.web.js +98 -0
- package/lib-cjs/scenes/AutoPlayCluster.js +140 -0
- package/lib-cjs/scenes/CarPlayDashboardScene.js +100 -0
- package/lib-cjs/specs/AndroidAutoTelemetry.nitro.js +2 -0
- package/lib-cjs/specs/AndroidAutomotive.nitro.js +16 -0
- package/lib-cjs/specs/AndroidWindowInformation.nitro.js +2 -0
- package/lib-cjs/specs/AutoPlay.nitro.js +2 -0
- package/lib-cjs/specs/CarPlayDashboard.nitro.js +2 -0
- package/lib-cjs/specs/Cluster.nitro.js +2 -0
- package/lib-cjs/specs/GridTemplate.nitro.js +2 -0
- package/lib-cjs/specs/InformationTemplate.nitro.js +2 -0
- package/lib-cjs/specs/ListTemplate.nitro.js +2 -0
- package/lib-cjs/specs/MapTemplate.nitro.js +2 -0
- package/lib-cjs/specs/MessageTemplate.nitro.js +2 -0
- package/lib-cjs/specs/SearchTemplate.nitro.js +2 -0
- package/lib-cjs/specs/SignInTemplate.nitro.js +2 -0
- package/lib-cjs/specs/Voice.nitro.js +2 -0
- package/lib-cjs/templates/GridTemplate.js +41 -0
- package/lib-cjs/templates/InformationTemplate.js +49 -0
- package/lib-cjs/templates/ListTemplate.js +33 -0
- package/lib-cjs/templates/MapTemplate.js +168 -0
- package/lib-cjs/templates/MessageTemplate.js +50 -0
- package/lib-cjs/templates/SearchTemplate.js +32 -0
- package/lib-cjs/templates/SignInTemplate.js +55 -0
- package/lib-cjs/templates/Template.js +40 -0
- package/lib-cjs/types/Button.js +12 -0
- package/lib-cjs/types/Event.js +2 -0
- package/lib-cjs/types/Image.js +2 -0
- package/lib-cjs/types/Maneuver.js +77 -0
- package/lib-cjs/types/RootComponent.js +2 -0
- package/lib-cjs/types/SignInMethod.js +22 -0
- package/lib-cjs/types/Telemetry.js +24 -0
- package/lib-cjs/types/Text.js +8 -0
- package/lib-cjs/types/Trip.js +2 -0
- package/lib-cjs/types/Voice.js +2 -0
- package/lib-cjs/utils/ErrorUtil.js +34 -0
- package/lib-cjs/utils/NitroAction.js +129 -0
- package/lib-cjs/utils/NitroAlert.js +19 -0
- package/lib-cjs/utils/NitroAttributedString.js +14 -0
- package/lib-cjs/utils/NitroColor.js +32 -0
- package/lib-cjs/utils/NitroGrid.js +12 -0
- package/lib-cjs/utils/NitroImage.js +97 -0
- package/lib-cjs/utils/NitroManeuver.js +79 -0
- package/lib-cjs/utils/NitroMapButton.js +33 -0
- package/lib-cjs/utils/NitroOptionsPanel.js +66 -0
- package/lib-cjs/utils/NitroSection.js +112 -0
- package/nitrogen/generated/android/ReactNativeAutoPlay+autolinking.cmake +1 -0
- package/nitrogen/generated/android/c++/JChargingConnector.hpp +79 -0
- package/nitrogen/generated/android/c++/JGridImageSize.hpp +64 -0
- package/nitrogen/generated/android/c++/JGridTemplateConfig.hpp +7 -1
- package/nitrogen/generated/android/c++/JHybridGridTemplateSpec.cpp +4 -0
- package/nitrogen/generated/android/c++/JHybridInformationTemplateSpec.cpp +12 -0
- package/nitrogen/generated/android/c++/JHybridListTemplateSpec.cpp +12 -0
- package/nitrogen/generated/android/c++/JHybridMapTemplateSpec.cpp +78 -3
- package/nitrogen/generated/android/c++/JHybridMapTemplateSpec.hpp +2 -1
- package/nitrogen/generated/android/c++/JHybridSearchTemplateSpec.cpp +12 -0
- package/nitrogen/generated/android/c++/JInformationTemplateConfig.hpp +6 -0
- package/nitrogen/generated/android/c++/JListImageType.hpp +67 -0
- package/nitrogen/generated/android/c++/JListTemplateConfig.hpp +6 -0
- package/nitrogen/generated/android/c++/JNitroChargerLocation.hpp +115 -0
- package/nitrogen/generated/android/c++/JNitroChargerOutlet.hpp +82 -0
- package/nitrogen/generated/android/c++/JNitroColor.hpp +8 -4
- package/nitrogen/generated/android/c++/JNitroOptionsPanelChargerSection.hpp +112 -0
- package/nitrogen/generated/android/c++/JNitroOptionsPanelConfig.hpp +157 -0
- package/nitrogen/generated/android/c++/JNitroOptionsPanelGridSection.hpp +102 -0
- package/nitrogen/generated/android/c++/JNitroOptionsPanelSection.cpp +30 -0
- package/nitrogen/generated/android/c++/JNitroOptionsPanelSection.hpp +129 -0
- package/nitrogen/generated/android/c++/JNitroRow.hpp +33 -3
- package/nitrogen/generated/android/c++/JNitroSection.hpp +6 -0
- package/nitrogen/generated/android/c++/JSearchTemplateConfig.hpp +6 -0
- package/nitrogen/generated/android/c++/JWaypointCoordinate.hpp +65 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/swe/iternio/reactnativeautoplay/ChargingConnector.kt +30 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/swe/iternio/reactnativeautoplay/GridImageSize.kt +25 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/swe/iternio/reactnativeautoplay/GridTemplateConfig.kt +9 -4
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/swe/iternio/reactnativeautoplay/HybridMapTemplateSpec.kt +5 -1
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/swe/iternio/reactnativeautoplay/ListImageType.kt +26 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/swe/iternio/reactnativeautoplay/NitroChargerLocation.kt +90 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/swe/iternio/reactnativeautoplay/NitroChargerOutlet.kt +70 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/swe/iternio/reactnativeautoplay/NitroColor.kt +9 -4
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/swe/iternio/reactnativeautoplay/NitroOptionsPanelChargerSection.kt +61 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/swe/iternio/reactnativeautoplay/NitroOptionsPanelConfig.kt +61 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/swe/iternio/reactnativeautoplay/NitroOptionsPanelGridSection.kt +56 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/swe/iternio/reactnativeautoplay/NitroOptionsPanelSection.kt +75 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/swe/iternio/reactnativeautoplay/NitroRow.kt +36 -6
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/swe/iternio/reactnativeautoplay/WaypointCoordinate.kt +61 -0
- package/nitrogen/generated/ios/ReactNativeAutoPlay-Swift-Cxx-Bridge.hpp +174 -0
- package/nitrogen/generated/ios/ReactNativeAutoPlay-Swift-Cxx-Umbrella.hpp +27 -0
- package/nitrogen/generated/ios/c++/HybridGridTemplateSpecSwift.hpp +3 -0
- package/nitrogen/generated/ios/c++/HybridInformationTemplateSpecSwift.hpp +9 -0
- package/nitrogen/generated/ios/c++/HybridListTemplateSpecSwift.hpp +9 -0
- package/nitrogen/generated/ios/c++/HybridMapTemplateSpecSwift.hpp +47 -1
- package/nitrogen/generated/ios/c++/HybridSearchTemplateSpecSwift.hpp +9 -0
- package/nitrogen/generated/ios/swift/ChargingConnector.swift +68 -0
- package/nitrogen/generated/ios/swift/GridImageSize.swift +48 -0
- package/nitrogen/generated/ios/swift/GridTemplateConfig.swift +12 -1
- package/nitrogen/generated/ios/swift/HybridMapTemplateSpec.swift +2 -1
- package/nitrogen/generated/ios/swift/HybridMapTemplateSpec_cxx.swift +31 -4
- package/nitrogen/generated/ios/swift/ListImageType.swift +52 -0
- package/nitrogen/generated/ios/swift/NitroChargerLocation.swift +161 -0
- package/nitrogen/generated/ios/swift/NitroChargerOutlet.swift +65 -0
- package/nitrogen/generated/ios/swift/NitroColor.swift +20 -2
- package/nitrogen/generated/ios/swift/NitroOptionsPanelChargerSection.swift +64 -0
- package/nitrogen/generated/ios/swift/NitroOptionsPanelConfig.swift +94 -0
- package/nitrogen/generated/ios/swift/NitroOptionsPanelGridSection.swift +53 -0
- package/nitrogen/generated/ios/swift/NitroOptionsPanelSection.swift +32 -0
- package/nitrogen/generated/ios/swift/NitroRow.swift +81 -1
- package/nitrogen/generated/ios/swift/WaypointCoordinate.swift +52 -0
- package/nitrogen/generated/shared/c++/ChargingConnector.hpp +104 -0
- package/nitrogen/generated/shared/c++/GridImageSize.hpp +84 -0
- package/nitrogen/generated/shared/c++/GridTemplateConfig.hpp +8 -1
- package/nitrogen/generated/shared/c++/HybridMapTemplateSpec.cpp +1 -0
- package/nitrogen/generated/shared/c++/HybridMapTemplateSpec.hpp +5 -1
- package/nitrogen/generated/shared/c++/ListImageType.hpp +88 -0
- package/nitrogen/generated/shared/c++/NitroChargerLocation.hpp +131 -0
- package/nitrogen/generated/shared/c++/NitroChargerOutlet.hpp +98 -0
- package/nitrogen/generated/shared/c++/NitroColor.hpp +7 -3
- package/nitrogen/generated/shared/c++/NitroOptionsPanelChargerSection.hpp +98 -0
- package/nitrogen/generated/shared/c++/NitroOptionsPanelConfig.hpp +107 -0
- package/nitrogen/generated/shared/c++/NitroOptionsPanelGridSection.hpp +91 -0
- package/nitrogen/generated/shared/c++/NitroRow.hpp +39 -2
- package/nitrogen/generated/shared/c++/WaypointCoordinate.hpp +91 -0
- package/package.json +7 -3
- package/src/Constants.ts +9 -0
- package/src/index.ts +1 -0
- package/src/index.web.ts +166 -0
- package/src/specs/MapTemplate.nitro.ts +3 -1
- package/src/templates/GridTemplate.ts +38 -3
- package/src/templates/InformationTemplate.ts +60 -29
- package/src/templates/ListTemplate.ts +27 -55
- package/src/templates/MapTemplate.ts +60 -2
- package/src/templates/MessageTemplate.ts +71 -24
- package/src/types/Image.ts +6 -1
- package/src/utils/NitroColor.ts +10 -1
- package/src/utils/NitroImage.ts +1 -5
- package/src/utils/NitroManeuver.ts +1 -4
- package/src/utils/NitroOptionsPanel.ts +218 -0
- package/src/utils/NitroSection.ts +160 -5
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const react_native_1 = require("react-native");
|
|
4
|
+
const createTaskProvider = (hybridAutoPlay) => () => () => new Promise((resolve) => {
|
|
5
|
+
const remove = hybridAutoPlay.addListener('didDisconnect', () => {
|
|
6
|
+
resolve();
|
|
7
|
+
remove();
|
|
8
|
+
});
|
|
9
|
+
});
|
|
10
|
+
const registerHeadlessTask = (hybridAutoPlay) => {
|
|
11
|
+
if (react_native_1.Platform.OS !== 'android') {
|
|
12
|
+
return;
|
|
13
|
+
}
|
|
14
|
+
react_native_1.AppRegistry.registerHeadlessTask('AndroidAutoHeadlessJsTask', createTaskProvider(hybridAutoPlay));
|
|
15
|
+
};
|
|
16
|
+
exports.default = { registerHeadlessTask };
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.Constants = void 0;
|
|
4
|
+
const react_native_1 = require("react-native");
|
|
5
|
+
const isIos27OrGreater = react_native_1.Platform.OS === 'ios' && Math.floor(Number(react_native_1.Platform.Version)) >= 27;
|
|
6
|
+
const Constants = {
|
|
7
|
+
isIos27OrGreater,
|
|
8
|
+
};
|
|
9
|
+
exports.Constants = Constants;
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.MapTemplateContext = void 0;
|
|
4
|
+
exports.MapTemplateProvider = MapTemplateProvider;
|
|
5
|
+
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
6
|
+
const react_1 = require("react");
|
|
7
|
+
exports.MapTemplateContext = (0, react_1.createContext)(null);
|
|
8
|
+
function MapTemplateProvider({ children, mapTemplate, }) {
|
|
9
|
+
return (0, jsx_runtime_1.jsx)(exports.MapTemplateContext.Provider, { value: mapTemplate, children: children });
|
|
10
|
+
}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.SafeAreaInsetsContext = void 0;
|
|
4
|
+
exports.SafeAreaInsetsProvider = SafeAreaInsetsProvider;
|
|
5
|
+
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
6
|
+
const react_1 = require("react");
|
|
7
|
+
const HybridAutoPlay_1 = require("../hybrid/HybridAutoPlay");
|
|
8
|
+
const DEFAULT = { top: 0, bottom: 0, left: 0, right: 0 };
|
|
9
|
+
exports.SafeAreaInsetsContext = (0, react_1.createContext)(DEFAULT);
|
|
10
|
+
function SafeAreaInsetsProvider({ children, moduleName, }) {
|
|
11
|
+
const [insets, setInsets] = (0, react_1.useState)(DEFAULT);
|
|
12
|
+
(0, react_1.useEffect)(() => {
|
|
13
|
+
const removeSafeAreaInsetsListener = HybridAutoPlay_1.HybridAutoPlay.addSafeAreaInsetsListener(moduleName, (safeAreaInsets) => {
|
|
14
|
+
setInsets(safeAreaInsets);
|
|
15
|
+
});
|
|
16
|
+
return () => {
|
|
17
|
+
removeSafeAreaInsetsListener();
|
|
18
|
+
};
|
|
19
|
+
}, [moduleName]);
|
|
20
|
+
return (0, jsx_runtime_1.jsx)(exports.SafeAreaInsetsContext.Provider, { value: insets, children: children });
|
|
21
|
+
}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.SafeAreaView = void 0;
|
|
4
|
+
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
5
|
+
const react_native_1 = require("react-native");
|
|
6
|
+
const useSafeAreaInsets_1 = require("../hooks/useSafeAreaInsets");
|
|
7
|
+
const SafeAreaView = (props) => {
|
|
8
|
+
const { style, ...rest } = props;
|
|
9
|
+
const safeAreaInsets = (0, useSafeAreaInsets_1.useSafeAreaInsets)();
|
|
10
|
+
return ((0, jsx_runtime_1.jsx)(react_native_1.View, { style: [
|
|
11
|
+
style,
|
|
12
|
+
{
|
|
13
|
+
...react_native_1.StyleSheet.absoluteFillObject,
|
|
14
|
+
paddingTop: safeAreaInsets.top,
|
|
15
|
+
paddingBottom: safeAreaInsets.bottom,
|
|
16
|
+
paddingRight: safeAreaInsets.right,
|
|
17
|
+
paddingLeft: safeAreaInsets.left,
|
|
18
|
+
pointerEvents: 'box-none',
|
|
19
|
+
},
|
|
20
|
+
], ...rest }));
|
|
21
|
+
};
|
|
22
|
+
exports.SafeAreaView = SafeAreaView;
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.WindowInformationWrapper = WindowInformationWrapper;
|
|
4
|
+
const react_1 = require("react");
|
|
5
|
+
const HybridAndroidWindowInformation_1 = require("../hybrid/HybridAndroidWindowInformation");
|
|
6
|
+
/**
|
|
7
|
+
* Renders a user-provided root component and keeps its `window` prop up to date when the host
|
|
8
|
+
* recreates the render surface with new dimensions (some head units run Android Auto windowed
|
|
9
|
+
* and resize it at runtime), so consumers can simply read `props.window` without registering a
|
|
10
|
+
* listener themselves.
|
|
11
|
+
* On iOS this only passes the initial props through — CarPlay windows keep their size for the
|
|
12
|
+
* lifetime of a scene, so there is nothing to subscribe to.
|
|
13
|
+
*/
|
|
14
|
+
function WindowInformationWrapper({ moduleName, component, componentProps, }) {
|
|
15
|
+
const [window, setWindow] = (0, react_1.useState)(componentProps.window);
|
|
16
|
+
(0, react_1.useEffect)(() => {
|
|
17
|
+
return HybridAndroidWindowInformation_1.HybridAndroidWindowInformation?.addWindowInformationListener(moduleName, setWindow);
|
|
18
|
+
}, [moduleName]);
|
|
19
|
+
return (0, react_1.createElement)(component, { ...componentProps, window });
|
|
20
|
+
}
|
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.useAndroidAutoTelemetry = void 0;
|
|
4
|
+
const react_1 = require("react");
|
|
5
|
+
const react_native_1 = require("react-native");
|
|
6
|
+
const HybridAndroidAutoTelemetry_1 = require("../hybrid/HybridAndroidAutoTelemetry");
|
|
7
|
+
const HybridAutoPlay_1 = require("../hybrid/HybridAutoPlay");
|
|
8
|
+
/**
|
|
9
|
+
* Hook to check if the telemetry permissions are granted. If the permissions are not granted, it will request them from the user.
|
|
10
|
+
*
|
|
11
|
+
* @namespace Android
|
|
12
|
+
* @param requestTelemetryPermissions If true, the telemetry permissions will be requested from the user. Can be set to false initially, in case other permissions need to be requested first, so the permission request dialogs do not overlap.
|
|
13
|
+
* @param requiredPermissions The permissions to check.
|
|
14
|
+
*/
|
|
15
|
+
const useAndroidAutoTelemetry = ({ requestTelemetryPermissions = true, requiredPermissions = [], automotivePermissionRequest, isAndroidAutomotive = false, }) => {
|
|
16
|
+
const [permissionsGranted, setPermissionsGranted] = (0, react_1.useState)(null);
|
|
17
|
+
const [telemetry, setTelemetry] = (0, react_1.useState)(undefined);
|
|
18
|
+
const [error, setError] = (0, react_1.useState)(undefined);
|
|
19
|
+
const [isConnected, setIsConnected] = (0, react_1.useState)(isAndroidAutomotive);
|
|
20
|
+
(0, react_1.useEffect)(() => {
|
|
21
|
+
if (isAndroidAutomotive) {
|
|
22
|
+
return;
|
|
23
|
+
}
|
|
24
|
+
const removeDidConnect = HybridAutoPlay_1.HybridAutoPlay.addListener('didConnect', () => setIsConnected(true));
|
|
25
|
+
const removeDidDisconnect = HybridAutoPlay_1.HybridAutoPlay.addListener('didDisconnect', () => setIsConnected(false));
|
|
26
|
+
setIsConnected(HybridAutoPlay_1.HybridAutoPlay.isConnected());
|
|
27
|
+
return () => {
|
|
28
|
+
removeDidConnect();
|
|
29
|
+
removeDidDisconnect();
|
|
30
|
+
};
|
|
31
|
+
}, [isAndroidAutomotive]);
|
|
32
|
+
(0, react_1.useEffect)(() => {
|
|
33
|
+
const checkPermissions = async () => {
|
|
34
|
+
const state = await Promise.all(requiredPermissions.map((permission) => react_native_1.PermissionsAndroid.check(permission).catch(() => false)));
|
|
35
|
+
setPermissionsGranted(state.every((granted) => granted));
|
|
36
|
+
};
|
|
37
|
+
void checkPermissions();
|
|
38
|
+
}, [requiredPermissions]);
|
|
39
|
+
(0, react_1.useEffect)(() => {
|
|
40
|
+
if (!isConnected || !permissionsGranted) {
|
|
41
|
+
return;
|
|
42
|
+
}
|
|
43
|
+
try {
|
|
44
|
+
const remove = HybridAndroidAutoTelemetry_1.HybridAndroidAutoTelemetry?.registerTelemetryListener(setTelemetry);
|
|
45
|
+
return () => remove?.();
|
|
46
|
+
}
|
|
47
|
+
catch (e) {
|
|
48
|
+
if (e instanceof Error) {
|
|
49
|
+
setError(`${e.name}: ${e.message}\n${e.stack ?? ''}`.trim());
|
|
50
|
+
}
|
|
51
|
+
else {
|
|
52
|
+
setError(String(e));
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
return;
|
|
56
|
+
}, [isConnected, permissionsGranted]);
|
|
57
|
+
(0, react_1.useEffect)(() => {
|
|
58
|
+
if (!requestTelemetryPermissions || requiredPermissions.length === 0) {
|
|
59
|
+
return;
|
|
60
|
+
}
|
|
61
|
+
if (permissionsGranted !== false) {
|
|
62
|
+
// either wait for permission request to finish or do nothing in case permissions are granted already
|
|
63
|
+
return;
|
|
64
|
+
}
|
|
65
|
+
if (automotivePermissionRequest?.message != null) {
|
|
66
|
+
HybridAndroidAutoTelemetry_1.HybridAndroidAutoTelemetry?.requestAutomotivePermissions(requiredPermissions, automotivePermissionRequest.message, automotivePermissionRequest.grantButtonText, automotivePermissionRequest.cancelButtonText)
|
|
67
|
+
.then(({ granted, denied }) => {
|
|
68
|
+
const isGranted = granted.length === requiredPermissions.length;
|
|
69
|
+
setPermissionsGranted(isGranted);
|
|
70
|
+
if (!isGranted) {
|
|
71
|
+
setError(`Android Automotive permissions denied: [${denied.join(',')}]`);
|
|
72
|
+
}
|
|
73
|
+
})
|
|
74
|
+
.catch((e) => {
|
|
75
|
+
const message = e instanceof Error ? e.message : String(e);
|
|
76
|
+
setError(message);
|
|
77
|
+
});
|
|
78
|
+
return;
|
|
79
|
+
}
|
|
80
|
+
// PermissionsAndroid is not aware of Android Auto related permissions
|
|
81
|
+
react_native_1.PermissionsAndroid.requestMultiple(requiredPermissions)
|
|
82
|
+
.then((result) => {
|
|
83
|
+
const isGranted = requiredPermissions.every((permission) => result[permission] === 'granted');
|
|
84
|
+
if (!isGranted) {
|
|
85
|
+
console.warn('Android Auto telemetry permissions not granted');
|
|
86
|
+
return;
|
|
87
|
+
}
|
|
88
|
+
setPermissionsGranted(true);
|
|
89
|
+
})
|
|
90
|
+
.catch((e) => console.error('Android Auto telemetry permissions error', e));
|
|
91
|
+
}, [
|
|
92
|
+
requestTelemetryPermissions,
|
|
93
|
+
requiredPermissions,
|
|
94
|
+
permissionsGranted,
|
|
95
|
+
automotivePermissionRequest?.cancelButtonText,
|
|
96
|
+
automotivePermissionRequest?.grantButtonText,
|
|
97
|
+
automotivePermissionRequest?.message,
|
|
98
|
+
]);
|
|
99
|
+
return {
|
|
100
|
+
/**
|
|
101
|
+
* null on pending permission check, True if the telemetry permissions are granted, false otherwise.
|
|
102
|
+
*/
|
|
103
|
+
permissionsGranted,
|
|
104
|
+
/**
|
|
105
|
+
* The telemetry data, might be a partial update not containing all properties of the regular timed updates.
|
|
106
|
+
* For example gear changes are emitted immediately without all the other telemetry data.
|
|
107
|
+
*/
|
|
108
|
+
telemetry,
|
|
109
|
+
/**
|
|
110
|
+
* The error message if the telemetry listener failed to start.
|
|
111
|
+
*/
|
|
112
|
+
error,
|
|
113
|
+
};
|
|
114
|
+
};
|
|
115
|
+
exports.useAndroidAutoTelemetry = useAndroidAutoTelemetry;
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.useFocusedEffect = useFocusedEffect;
|
|
4
|
+
const react_1 = require("react");
|
|
5
|
+
const HybridAutoPlay_1 = require("../hybrid/HybridAutoPlay");
|
|
6
|
+
/**
|
|
7
|
+
* An effect hook that only runs when the CarPlay/Android Auto screen is visible to the user and dependencies have changed.
|
|
8
|
+
* It behaves like `useEffect`, but the effect function is only executed if the screen is visible.
|
|
9
|
+
*
|
|
10
|
+
* @param moduleName The name of the root module to listen to for focus changes - one of AutoPlayModules or a cluster uuid.
|
|
11
|
+
* @param effect The effect function to run.
|
|
12
|
+
* @param deps An array of dependencies for the effect.
|
|
13
|
+
*/
|
|
14
|
+
function useFocusedEffect(moduleName, effect, deps) {
|
|
15
|
+
const [isFocused, setIsFocused] = (0, react_1.useState)(false);
|
|
16
|
+
const effectRef = (0, react_1.useRef)(effect);
|
|
17
|
+
(0, react_1.useEffect)(() => {
|
|
18
|
+
effectRef.current = effect;
|
|
19
|
+
}, [effect]);
|
|
20
|
+
(0, react_1.useEffect)(() => {
|
|
21
|
+
return HybridAutoPlay_1.HybridAutoPlay.addListenerRenderState(moduleName, (state) => {
|
|
22
|
+
if (state === 'willAppear' || state === 'willDisappear') {
|
|
23
|
+
// react on actual visibility changes only
|
|
24
|
+
return;
|
|
25
|
+
}
|
|
26
|
+
setIsFocused(state === 'didAppear');
|
|
27
|
+
});
|
|
28
|
+
}, [moduleName]);
|
|
29
|
+
(0, react_1.useEffect)(() => {
|
|
30
|
+
if (!isFocused) {
|
|
31
|
+
return;
|
|
32
|
+
}
|
|
33
|
+
return effectRef.current();
|
|
34
|
+
}, [isFocused, ...deps]);
|
|
35
|
+
}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.useMapTemplate = void 0;
|
|
4
|
+
const react_1 = require("react");
|
|
5
|
+
const MapTemplateContext_1 = require("../components/MapTemplateContext");
|
|
6
|
+
/**
|
|
7
|
+
* provides access to the map template
|
|
8
|
+
* obviously this works only on the map template component and its children
|
|
9
|
+
*/
|
|
10
|
+
const useMapTemplate = () => {
|
|
11
|
+
return (0, react_1.useContext)(MapTemplateContext_1.MapTemplateContext);
|
|
12
|
+
};
|
|
13
|
+
exports.useMapTemplate = useMapTemplate;
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.useSafeAreaInsets = void 0;
|
|
4
|
+
const react_1 = require("react");
|
|
5
|
+
const SafeAreaInsetsContext_1 = require("../components/SafeAreaInsetsContext");
|
|
6
|
+
const useSafeAreaInsets = () => {
|
|
7
|
+
return (0, react_1.useContext)(SafeAreaInsetsContext_1.SafeAreaInsetsContext);
|
|
8
|
+
};
|
|
9
|
+
exports.useSafeAreaInsets = useSafeAreaInsets;
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.useVoiceInput = void 0;
|
|
4
|
+
const react_1 = require("react");
|
|
5
|
+
const HybridAutoPlay_1 = require("../hybrid/HybridAutoPlay");
|
|
6
|
+
const useVoiceInput = () => {
|
|
7
|
+
const [isConnected, setIsConnected] = (0, react_1.useState)(false);
|
|
8
|
+
const [voiceInputResult, setVoiceInputResult] = (0, react_1.useState)();
|
|
9
|
+
/**
|
|
10
|
+
* Resets the voice input result to undefined. This is useful when you want to clear the voice input result after processing it.
|
|
11
|
+
*/
|
|
12
|
+
const resetVoiceInputResult = (0, react_1.useCallback)(() => {
|
|
13
|
+
setVoiceInputResult(undefined);
|
|
14
|
+
}, []);
|
|
15
|
+
(0, react_1.useEffect)(() => {
|
|
16
|
+
const removeDidConnect = HybridAutoPlay_1.HybridAutoPlay.addListener('didConnect', () => setIsConnected(true));
|
|
17
|
+
const removeDidDisconnect = HybridAutoPlay_1.HybridAutoPlay.addListener('didDisconnect', () => setIsConnected(false));
|
|
18
|
+
setIsConnected(HybridAutoPlay_1.HybridAutoPlay.isConnected());
|
|
19
|
+
return () => {
|
|
20
|
+
removeDidConnect();
|
|
21
|
+
removeDidDisconnect();
|
|
22
|
+
};
|
|
23
|
+
}, []);
|
|
24
|
+
(0, react_1.useEffect)(() => {
|
|
25
|
+
if (!isConnected) {
|
|
26
|
+
return;
|
|
27
|
+
}
|
|
28
|
+
const remove = HybridAutoPlay_1.HybridAutoPlay.addListenerVoiceInput((coordinates, query) => {
|
|
29
|
+
if (coordinates || query) {
|
|
30
|
+
setVoiceInputResult({ coordinates, query });
|
|
31
|
+
}
|
|
32
|
+
else {
|
|
33
|
+
setVoiceInputResult(undefined);
|
|
34
|
+
}
|
|
35
|
+
});
|
|
36
|
+
return () => {
|
|
37
|
+
remove();
|
|
38
|
+
};
|
|
39
|
+
}, [isConnected]);
|
|
40
|
+
return { voiceInputResult, resetVoiceInputResult };
|
|
41
|
+
};
|
|
42
|
+
exports.useVoiceInput = useVoiceInput;
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.HybridAutoPlay = void 0;
|
|
4
|
+
const react_native_nitro_modules_1 = require("react-native-nitro-modules");
|
|
5
|
+
exports.HybridAutoPlay = react_native_nitro_modules_1.NitroModules.createHybridObject('AutoPlay');
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.HybridVoice = void 0;
|
|
4
|
+
const react_native_1 = require("react-native");
|
|
5
|
+
const react_native_nitro_modules_1 = require("react-native-nitro-modules");
|
|
6
|
+
const NitroImage_1 = require("../utils/NitroImage");
|
|
7
|
+
const _native = react_native_nitro_modules_1.NitroModules.createHybridObject('Voice');
|
|
8
|
+
const startVoiceInput = async (options) => {
|
|
9
|
+
const { onChunk, silenceThresholdMs, maxDurationMs, listeningText, listeningImage, preferSpeechToText, language, startSound, endSound, encoding, } = options ?? {};
|
|
10
|
+
const listeningImageRepeats = listeningImage?.type === 'asset' ? listeningImage.repeats : undefined;
|
|
11
|
+
const startSoundUri = startSound != null ? react_native_1.Image.resolveAssetSource(startSound).uri : undefined;
|
|
12
|
+
const endSoundUri = endSound != null ? react_native_1.Image.resolveAssetSource(endSound).uri : undefined;
|
|
13
|
+
return await _native.startVoiceInput(silenceThresholdMs, maxDurationMs, listeningText, NitroImage_1.NitroImageUtil.convert(listeningImage), listeningImageRepeats, preferSpeechToText, onChunk, language, startSoundUri, endSoundUri, encoding);
|
|
14
|
+
};
|
|
15
|
+
exports.HybridVoice = {
|
|
16
|
+
/**
|
|
17
|
+
* Returns true if all permissions required for voice input are granted.
|
|
18
|
+
* On iOS: checks both microphone and speech recognition authorization.
|
|
19
|
+
* On Android: checks RECORD_AUDIO permission.
|
|
20
|
+
*/
|
|
21
|
+
hasVoiceInputPermission: () => _native.hasVoiceInputPermission(),
|
|
22
|
+
/**
|
|
23
|
+
* Request all permissions required for voice input.
|
|
24
|
+
* On iOS: requests microphone permission then speech recognition authorization.
|
|
25
|
+
* On Android: requests RECORD_AUDIO via car context when connected, otherwise
|
|
26
|
+
* via the React Native application context.
|
|
27
|
+
* Returns true only if all required permissions were granted.
|
|
28
|
+
*/
|
|
29
|
+
requestVoiceInputPermission: () => _native.requestVoiceInputPermission(),
|
|
30
|
+
/**
|
|
31
|
+
* Start an in-app voice session.
|
|
32
|
+
*
|
|
33
|
+
* When preferSpeechToText is true:
|
|
34
|
+
* iOS — streams audio buffers into SFSpeechRecognizer during recording;
|
|
35
|
+
* onChunk fires with partial transcription results; resolves with
|
|
36
|
+
* { transcription } or falls back to { audio } if unavailable.
|
|
37
|
+
* Android — checks SpeechRecognizer availability upfront; if available it
|
|
38
|
+
* owns the mic and streams partial results via onChunk; if not
|
|
39
|
+
* available falls back to PCM recording.
|
|
40
|
+
*
|
|
41
|
+
* When preferSpeechToText is false (default):
|
|
42
|
+
* Both platforms record raw PCM; onChunk fires with audio chunks;
|
|
43
|
+
* resolves with { audio }.
|
|
44
|
+
*
|
|
45
|
+
* @param silenceThresholdMs ms of silence before auto-stop (default 1500)
|
|
46
|
+
* @param maxDurationMs hard cap on recording duration (default 10000)
|
|
47
|
+
* @param listeningText iOS only — text shown on CPVoiceControlTemplate
|
|
48
|
+
* @param preferSpeechToText request STT transcription instead of raw PCM
|
|
49
|
+
* @param onChunk optional streaming callback
|
|
50
|
+
* @param language specify the language for the SpeechRecognizer, falls back to system language if not set
|
|
51
|
+
* @param encoding PCM encoding for onChunk audio and the final result (default LINEAR16)
|
|
52
|
+
*/
|
|
53
|
+
startVoiceInput,
|
|
54
|
+
/**
|
|
55
|
+
* Stop the active voice session early.
|
|
56
|
+
* For PCM mode: resolves startVoiceInput with audio captured so far.
|
|
57
|
+
* For STT mode: finalises the recognition request.
|
|
58
|
+
* No-op if no session is active.
|
|
59
|
+
*/
|
|
60
|
+
stopVoiceInput: () => _native.stopVoiceInput(),
|
|
61
|
+
};
|
package/lib-cjs/index.js
ADDED
|
@@ -0,0 +1,76 @@
|
|
|
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
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
17
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
18
|
+
};
|
|
19
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
20
|
+
exports.setIconFont = exports.CarUxRestrictions = exports.AutoPlayModules = exports.HybridAndroidAutomotive = exports.HybridVoice = exports.HybridAutoPlay = exports.HybridAndroidWindowInformation = exports.HybridAndroidAutoTelemetry = void 0;
|
|
21
|
+
const react_native_1 = require("react-native");
|
|
22
|
+
const react_native_nitro_modules_1 = require("react-native-nitro-modules");
|
|
23
|
+
const AutoPlayHeadlessJsTask_1 = __importDefault(require("./AutoPlayHeadlessJsTask"));
|
|
24
|
+
const HybridAndroidAutoTelemetry_1 = require("./hybrid/HybridAndroidAutoTelemetry");
|
|
25
|
+
Object.defineProperty(exports, "HybridAndroidAutoTelemetry", { enumerable: true, get: function () { return HybridAndroidAutoTelemetry_1.HybridAndroidAutoTelemetry; } });
|
|
26
|
+
const HybridAndroidWindowInformation_1 = require("./hybrid/HybridAndroidWindowInformation");
|
|
27
|
+
Object.defineProperty(exports, "HybridAndroidWindowInformation", { enumerable: true, get: function () { return HybridAndroidWindowInformation_1.HybridAndroidWindowInformation; } });
|
|
28
|
+
const HybridAutoPlay_1 = require("./hybrid/HybridAutoPlay");
|
|
29
|
+
Object.defineProperty(exports, "HybridAutoPlay", { enumerable: true, get: function () { return HybridAutoPlay_1.HybridAutoPlay; } });
|
|
30
|
+
const HybridVoice_1 = require("./hybrid/HybridVoice");
|
|
31
|
+
Object.defineProperty(exports, "HybridVoice", { enumerable: true, get: function () { return HybridVoice_1.HybridVoice; } });
|
|
32
|
+
AutoPlayHeadlessJsTask_1.default.registerHeadlessTask(HybridAutoPlay_1.HybridAutoPlay);
|
|
33
|
+
exports.HybridAndroidAutomotive = react_native_1.Platform.OS === 'android'
|
|
34
|
+
? react_native_nitro_modules_1.NitroModules.createHybridObject('AndroidAutomotive')
|
|
35
|
+
: null;
|
|
36
|
+
/**
|
|
37
|
+
* These are the static module names for the app running on the mobile device, head unit screen and the CarPlay dashboard.
|
|
38
|
+
* Clusters generate uuids on native side that are passed in the RootComponentInitialProps
|
|
39
|
+
*/
|
|
40
|
+
var AutoPlayModules;
|
|
41
|
+
(function (AutoPlayModules) {
|
|
42
|
+
AutoPlayModules["App"] = "main";
|
|
43
|
+
AutoPlayModules["AutoPlayRoot"] = "AutoPlayRoot";
|
|
44
|
+
AutoPlayModules["CarPlayDashboard"] = "CarPlayDashboard";
|
|
45
|
+
})(AutoPlayModules || (exports.AutoPlayModules = AutoPlayModules = {}));
|
|
46
|
+
__exportStar(require("./Constants"), exports);
|
|
47
|
+
__exportStar(require("./components/SafeAreaView"), exports);
|
|
48
|
+
__exportStar(require("./hooks/useAndroidAutoTelemetry"), exports);
|
|
49
|
+
__exportStar(require("./hooks/useFocusedEffect"), exports);
|
|
50
|
+
__exportStar(require("./hooks/useMapTemplate"), exports);
|
|
51
|
+
__exportStar(require("./hooks/useSafeAreaInsets"), exports);
|
|
52
|
+
__exportStar(require("./hooks/useVoiceInput"), exports);
|
|
53
|
+
__exportStar(require("./scenes/AutoPlayCluster"), exports);
|
|
54
|
+
__exportStar(require("./scenes/CarPlayDashboardScene"), exports);
|
|
55
|
+
var AndroidAutomotive_nitro_1 = require("./specs/AndroidAutomotive.nitro");
|
|
56
|
+
Object.defineProperty(exports, "CarUxRestrictions", { enumerable: true, get: function () { return AndroidAutomotive_nitro_1.CarUxRestrictions; } });
|
|
57
|
+
__exportStar(require("./templates/GridTemplate"), exports);
|
|
58
|
+
__exportStar(require("./templates/InformationTemplate"), exports);
|
|
59
|
+
__exportStar(require("./templates/ListTemplate"), exports);
|
|
60
|
+
__exportStar(require("./templates/MapTemplate"), exports);
|
|
61
|
+
__exportStar(require("./templates/MessageTemplate"), exports);
|
|
62
|
+
__exportStar(require("./templates/SearchTemplate"), exports);
|
|
63
|
+
__exportStar(require("./templates/SignInTemplate"), exports);
|
|
64
|
+
__exportStar(require("./templates/Template"), exports);
|
|
65
|
+
__exportStar(require("./types/Button"), exports);
|
|
66
|
+
__exportStar(require("./types/Event"), exports);
|
|
67
|
+
__exportStar(require("./types/Image"), exports);
|
|
68
|
+
__exportStar(require("./types/Maneuver"), exports);
|
|
69
|
+
__exportStar(require("./types/RootComponent"), exports);
|
|
70
|
+
__exportStar(require("./types/SignInMethod"), exports);
|
|
71
|
+
__exportStar(require("./types/Telemetry"), exports);
|
|
72
|
+
__exportStar(require("./types/Text"), exports);
|
|
73
|
+
__exportStar(require("./types/Trip"), exports);
|
|
74
|
+
__exportStar(require("./utils/ErrorUtil"), exports);
|
|
75
|
+
var NitroImage_1 = require("./utils/NitroImage");
|
|
76
|
+
Object.defineProperty(exports, "setIconFont", { enumerable: true, get: function () { return NitroImage_1.setIconFont; } });
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// Web/Jest stub for the native CarPlay/Android Auto surface. Nothing here talks to a real native
|
|
3
|
+
// module — every function call resolves to `undefined` (or an already-resolved promise, which is
|
|
4
|
+
// indistinguishable from `undefined` to an `await`er) rather than throwing. Types are preserved by
|
|
5
|
+
// casting against the real exports, so callers still get full type-checking/autocomplete.
|
|
6
|
+
//
|
|
7
|
+
// Anything below that's already safe as-is (pure types, plain enums, or modules that neither
|
|
8
|
+
// create native objects nor import anything that does) is re-exported directly instead of stubbed.
|
|
9
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
12
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
13
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
14
|
+
}
|
|
15
|
+
Object.defineProperty(o, k2, desc);
|
|
16
|
+
}) : (function(o, m, k, k2) {
|
|
17
|
+
if (k2 === undefined) k2 = k;
|
|
18
|
+
o[k2] = m[k];
|
|
19
|
+
}));
|
|
20
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
21
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
22
|
+
};
|
|
23
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
24
|
+
exports.SignInTemplate = exports.SearchTemplate = exports.MapTemplate = exports.MessageTemplate = exports.InformationTemplate = exports.GridTemplate = exports.ListTemplate = exports.Template = exports.HybridVoice = exports.HybridAutoPlay = exports.HybridAndroidWindowInformation = exports.HybridAndroidAutoTelemetry = exports.HybridAndroidAutomotive = exports.CarPlayDashboard = exports.AutoPlayCluster = exports.useAndroidAutoTelemetry = exports.useVoiceInput = exports.useFocusedEffect = exports.SafeAreaView = exports.useSafeAreaInsets = exports.AutoPlayModules = exports.CarUxRestrictions = void 0;
|
|
25
|
+
exports.setIconFont = setIconFont;
|
|
26
|
+
const react_1 = require("react");
|
|
27
|
+
const react_native_1 = require("react-native");
|
|
28
|
+
function noop() {
|
|
29
|
+
return undefined;
|
|
30
|
+
}
|
|
31
|
+
/** Any property access returns a no-op function, so any method call is safe regardless of name. */
|
|
32
|
+
function createNoopObject() {
|
|
33
|
+
return new Proxy({}, {
|
|
34
|
+
get: (_target, prop) => (prop === 'then' || prop === 'toJSON' ? undefined : noop),
|
|
35
|
+
});
|
|
36
|
+
}
|
|
37
|
+
function createNoopClass() {
|
|
38
|
+
function NoopInstance() {
|
|
39
|
+
return createNoopObject();
|
|
40
|
+
}
|
|
41
|
+
return NoopInstance;
|
|
42
|
+
}
|
|
43
|
+
__exportStar(require("./Constants"), exports);
|
|
44
|
+
__exportStar(require("./hooks/useMapTemplate"), exports);
|
|
45
|
+
var AndroidAutomotive_nitro_1 = require("./specs/AndroidAutomotive.nitro");
|
|
46
|
+
Object.defineProperty(exports, "CarUxRestrictions", { enumerable: true, get: function () { return AndroidAutomotive_nitro_1.CarUxRestrictions; } });
|
|
47
|
+
__exportStar(require("./types/Button"), exports);
|
|
48
|
+
__exportStar(require("./types/Event"), exports);
|
|
49
|
+
__exportStar(require("./types/Image"), exports);
|
|
50
|
+
__exportStar(require("./types/Maneuver"), exports);
|
|
51
|
+
__exportStar(require("./types/RootComponent"), exports);
|
|
52
|
+
__exportStar(require("./types/SignInMethod"), exports);
|
|
53
|
+
__exportStar(require("./types/Telemetry"), exports);
|
|
54
|
+
__exportStar(require("./types/Text"), exports);
|
|
55
|
+
__exportStar(require("./types/Trip"), exports);
|
|
56
|
+
__exportStar(require("./utils/ErrorUtil"), exports);
|
|
57
|
+
var AutoPlayModules;
|
|
58
|
+
(function (AutoPlayModules) {
|
|
59
|
+
AutoPlayModules["App"] = "main";
|
|
60
|
+
AutoPlayModules["AutoPlayRoot"] = "AutoPlayRoot";
|
|
61
|
+
AutoPlayModules["CarPlayDashboard"] = "CarPlayDashboard";
|
|
62
|
+
})(AutoPlayModules || (exports.AutoPlayModules = AutoPlayModules = {}));
|
|
63
|
+
const NO_INSETS = { top: 0, bottom: 0, left: 0, right: 0 };
|
|
64
|
+
const useSafeAreaInsets = () => NO_INSETS;
|
|
65
|
+
exports.useSafeAreaInsets = useSafeAreaInsets;
|
|
66
|
+
const SafeAreaView = (props) => (0, react_1.createElement)(react_native_1.View, props);
|
|
67
|
+
exports.SafeAreaView = SafeAreaView;
|
|
68
|
+
function setIconFont(_name, _glyphMap) { }
|
|
69
|
+
const useFocusedEffect = () => { };
|
|
70
|
+
exports.useFocusedEffect = useFocusedEffect;
|
|
71
|
+
const useVoiceInput = () => ({
|
|
72
|
+
voiceInputResult: undefined,
|
|
73
|
+
resetVoiceInputResult: () => { },
|
|
74
|
+
});
|
|
75
|
+
exports.useVoiceInput = useVoiceInput;
|
|
76
|
+
const useAndroidAutoTelemetry = () => ({
|
|
77
|
+
permissionsGranted: null,
|
|
78
|
+
telemetry: undefined,
|
|
79
|
+
error: undefined,
|
|
80
|
+
});
|
|
81
|
+
exports.useAndroidAutoTelemetry = useAndroidAutoTelemetry;
|
|
82
|
+
exports.AutoPlayCluster = createNoopObject();
|
|
83
|
+
exports.CarPlayDashboard = createNoopObject();
|
|
84
|
+
exports.HybridAndroidAutomotive = null;
|
|
85
|
+
var HybridAndroidAutoTelemetry_1 = require("./hybrid/HybridAndroidAutoTelemetry");
|
|
86
|
+
Object.defineProperty(exports, "HybridAndroidAutoTelemetry", { enumerable: true, get: function () { return HybridAndroidAutoTelemetry_1.HybridAndroidAutoTelemetry; } });
|
|
87
|
+
var HybridAndroidWindowInformation_1 = require("./hybrid/HybridAndroidWindowInformation");
|
|
88
|
+
Object.defineProperty(exports, "HybridAndroidWindowInformation", { enumerable: true, get: function () { return HybridAndroidWindowInformation_1.HybridAndroidWindowInformation; } });
|
|
89
|
+
exports.HybridAutoPlay = createNoopObject();
|
|
90
|
+
exports.HybridVoice = createNoopObject();
|
|
91
|
+
exports.Template = createNoopClass();
|
|
92
|
+
exports.ListTemplate = createNoopClass();
|
|
93
|
+
exports.GridTemplate = createNoopClass();
|
|
94
|
+
exports.InformationTemplate = createNoopClass();
|
|
95
|
+
exports.MessageTemplate = createNoopClass();
|
|
96
|
+
exports.MapTemplate = createNoopClass();
|
|
97
|
+
exports.SearchTemplate = createNoopClass();
|
|
98
|
+
exports.SignInTemplate = createNoopClass();
|