react-native-maplibre-lite 0.1.9 → 0.2.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 +92 -6
- package/lib/module/components/MapView.js +167 -48
- package/lib/module/components/MapView.js.map +1 -1
- package/lib/module/components/NavigatorHud.js +152 -0
- package/lib/module/components/NavigatorHud.js.map +1 -0
- package/lib/module/components/NavigatorRecenterButton.js +48 -0
- package/lib/module/components/NavigatorRecenterButton.js.map +1 -0
- package/lib/module/components/NavigatorVoiceControl.js +173 -0
- package/lib/module/components/NavigatorVoiceControl.js.map +1 -0
- package/lib/module/components/navigatorChromeTheme.js +98 -0
- package/lib/module/components/navigatorChromeTheme.js.map +1 -0
- package/lib/module/components/navigatorManeuverIcon.js +210 -0
- package/lib/module/components/navigatorManeuverIcon.js.map +1 -0
- package/lib/module/components/navigatorVoiceCatalog.js +225 -0
- package/lib/module/components/navigatorVoiceCatalog.js.map +1 -0
- package/lib/module/components/navigatorVoiceKeys.js +14 -0
- package/lib/module/components/navigatorVoiceKeys.js.map +1 -0
- package/lib/module/components/navigatorVoicePlayer.js +100 -0
- package/lib/module/components/navigatorVoicePlayer.js.map +1 -0
- package/lib/module/components/navigatorVoiceStrings.js +31 -0
- package/lib/module/components/navigatorVoiceStrings.js.map +1 -0
- package/lib/module/components/types.js +47 -0
- package/lib/module/components/types.js.map +1 -1
- package/lib/module/components/useNavigatorVoice.js +78 -0
- package/lib/module/components/useNavigatorVoice.js.map +1 -0
- package/lib/module/components/utils.js +26 -0
- package/lib/module/components/utils.js.map +1 -1
- package/lib/module/components/webMapBuild.js +1 -1
- package/lib/module/components/webMapBuild.js.map +1 -1
- package/lib/module/index.js.map +1 -1
- package/lib/typescript/src/components/MapView.d.ts +15 -2
- package/lib/typescript/src/components/MapView.d.ts.map +1 -1
- package/lib/typescript/src/components/NavigatorHud.d.ts +13 -0
- package/lib/typescript/src/components/NavigatorHud.d.ts.map +1 -0
- package/lib/typescript/src/components/NavigatorRecenterButton.d.ts +11 -0
- package/lib/typescript/src/components/NavigatorRecenterButton.d.ts.map +1 -0
- package/lib/typescript/src/components/NavigatorVoiceControl.d.ts +20 -0
- package/lib/typescript/src/components/NavigatorVoiceControl.d.ts.map +1 -0
- package/lib/typescript/src/components/navigatorChromeTheme.d.ts +19 -0
- package/lib/typescript/src/components/navigatorChromeTheme.d.ts.map +1 -0
- package/lib/typescript/src/components/navigatorManeuverIcon.d.ts +20 -0
- package/lib/typescript/src/components/navigatorManeuverIcon.d.ts.map +1 -0
- package/lib/typescript/src/components/navigatorVoiceCatalog.d.ts +50 -0
- package/lib/typescript/src/components/navigatorVoiceCatalog.d.ts.map +1 -0
- package/lib/typescript/src/components/navigatorVoiceKeys.d.ts +10 -0
- package/lib/typescript/src/components/navigatorVoiceKeys.d.ts.map +1 -0
- package/lib/typescript/src/components/navigatorVoicePlayer.d.ts +15 -0
- package/lib/typescript/src/components/navigatorVoicePlayer.d.ts.map +1 -0
- package/lib/typescript/src/components/navigatorVoiceStrings.d.ts +19 -0
- package/lib/typescript/src/components/navigatorVoiceStrings.d.ts.map +1 -0
- package/lib/typescript/src/components/types.d.ts +205 -12
- package/lib/typescript/src/components/types.d.ts.map +1 -1
- package/lib/typescript/src/components/useNavigatorVoice.d.ts +20 -0
- package/lib/typescript/src/components/useNavigatorVoice.d.ts.map +1 -0
- package/lib/typescript/src/components/utils.d.ts +9 -0
- package/lib/typescript/src/components/utils.d.ts.map +1 -1
- package/lib/typescript/src/components/webMapBuild.d.ts +1 -1
- package/lib/typescript/src/components/webMapBuild.d.ts.map +1 -1
- package/lib/typescript/src/index.d.ts +1 -1
- package/lib/typescript/src/index.d.ts.map +1 -1
- package/package.json +16 -7
- package/resources/README.md +62 -0
- package/resources/map.html +797 -0
- package/src/components/MapView.tsx +209 -58
- package/src/components/NavigatorHud.tsx +166 -0
- package/src/components/NavigatorRecenterButton.tsx +45 -0
- package/src/components/NavigatorVoiceControl.tsx +198 -0
- package/src/components/navigatorChromeTheme.ts +118 -0
- package/src/components/navigatorManeuverIcon.tsx +177 -0
- package/src/components/navigatorVoiceCatalog.ts +275 -0
- package/src/components/navigatorVoiceKeys.ts +132 -0
- package/src/components/navigatorVoicePlayer.tsx +126 -0
- package/src/components/navigatorVoiceStrings.ts +42 -0
- package/src/components/types.ts +198 -16
- package/src/components/useNavigatorVoice.ts +96 -0
- package/src/components/utils.ts +28 -0
- package/src/components/webMapBuild.ts +1 -1
- package/src/index.tsx +19 -0
|
@@ -0,0 +1,152 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
import { Text, View } from 'react-native';
|
|
4
|
+
import { NavigatorManeuverIcon } from "./navigatorManeuverIcon.js";
|
|
5
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
6
|
+
/**
|
|
7
|
+
* Нативная панель навигатора (HUD): порт DOM-плашки из веб-навигатора.
|
|
8
|
+
* Получает уже отформатированную view-model (`navigatorHud`) и тему из
|
|
9
|
+
* `navigatorChrome`; вся локализация/форматирование остаются в вебе.
|
|
10
|
+
*/
|
|
11
|
+
export function NavigatorHud({
|
|
12
|
+
state,
|
|
13
|
+
theme,
|
|
14
|
+
pickHint
|
|
15
|
+
}) {
|
|
16
|
+
if (!state || !state.visible) return null;
|
|
17
|
+
if (state.pick) {
|
|
18
|
+
return /*#__PURE__*/_jsx(View, {
|
|
19
|
+
pointerEvents: "none",
|
|
20
|
+
style: {
|
|
21
|
+
position: 'absolute',
|
|
22
|
+
top: 12,
|
|
23
|
+
left: 12,
|
|
24
|
+
right: 12,
|
|
25
|
+
padding: 14,
|
|
26
|
+
borderRadius: 14,
|
|
27
|
+
backgroundColor: 'rgba(120, 53, 15, 0.92)',
|
|
28
|
+
borderWidth: 2,
|
|
29
|
+
borderColor: '#facc15'
|
|
30
|
+
},
|
|
31
|
+
children: /*#__PURE__*/_jsx(Text, {
|
|
32
|
+
style: {
|
|
33
|
+
textAlign: 'center',
|
|
34
|
+
fontSize: 14,
|
|
35
|
+
fontWeight: '600',
|
|
36
|
+
color: '#fef3c7'
|
|
37
|
+
},
|
|
38
|
+
children: pickHint
|
|
39
|
+
})
|
|
40
|
+
});
|
|
41
|
+
}
|
|
42
|
+
const speedLimit = state.speedLimitKmh;
|
|
43
|
+
const showSpeed = typeof speedLimit === 'number' && Number.isFinite(speedLimit) && speedLimit > 0;
|
|
44
|
+
return /*#__PURE__*/_jsxs(View, {
|
|
45
|
+
pointerEvents: "none",
|
|
46
|
+
style: {
|
|
47
|
+
position: 'absolute',
|
|
48
|
+
top: 12,
|
|
49
|
+
left: 12,
|
|
50
|
+
right: 12,
|
|
51
|
+
flexDirection: 'row',
|
|
52
|
+
alignItems: 'center',
|
|
53
|
+
gap: 12,
|
|
54
|
+
padding: 14,
|
|
55
|
+
borderRadius: 14,
|
|
56
|
+
backgroundColor: theme.background,
|
|
57
|
+
shadowColor: '#0f172a',
|
|
58
|
+
shadowOpacity: 0.32,
|
|
59
|
+
shadowRadius: 24,
|
|
60
|
+
shadowOffset: {
|
|
61
|
+
width: 0,
|
|
62
|
+
height: 10
|
|
63
|
+
},
|
|
64
|
+
elevation: 6
|
|
65
|
+
},
|
|
66
|
+
children: [/*#__PURE__*/_jsx(View, {
|
|
67
|
+
style: {
|
|
68
|
+
width: 44,
|
|
69
|
+
height: 44,
|
|
70
|
+
borderRadius: 12,
|
|
71
|
+
backgroundColor: theme.iconBackground,
|
|
72
|
+
alignItems: 'center',
|
|
73
|
+
justifyContent: 'center'
|
|
74
|
+
},
|
|
75
|
+
children: typeof state.sign === 'number' ? /*#__PURE__*/_jsx(NavigatorManeuverIcon, {
|
|
76
|
+
sign: state.sign,
|
|
77
|
+
color: theme.iconForeground
|
|
78
|
+
}) : null
|
|
79
|
+
}), /*#__PURE__*/_jsxs(View, {
|
|
80
|
+
style: {
|
|
81
|
+
flex: 1,
|
|
82
|
+
minWidth: 0,
|
|
83
|
+
gap: 2
|
|
84
|
+
},
|
|
85
|
+
children: [state.distanceLabel ? /*#__PURE__*/_jsx(Text, {
|
|
86
|
+
numberOfLines: 1,
|
|
87
|
+
style: {
|
|
88
|
+
fontSize: 18,
|
|
89
|
+
fontWeight: '700',
|
|
90
|
+
lineHeight: 20,
|
|
91
|
+
color: theme.foreground
|
|
92
|
+
},
|
|
93
|
+
children: state.distanceLabel
|
|
94
|
+
}) : null, state.maneuverText ? /*#__PURE__*/_jsx(Text, {
|
|
95
|
+
numberOfLines: 1,
|
|
96
|
+
style: {
|
|
97
|
+
fontSize: 14,
|
|
98
|
+
fontWeight: '500',
|
|
99
|
+
color: theme.subtle
|
|
100
|
+
},
|
|
101
|
+
children: state.maneuverText
|
|
102
|
+
}) : null, state.streetName ? /*#__PURE__*/_jsx(Text, {
|
|
103
|
+
numberOfLines: 1,
|
|
104
|
+
style: {
|
|
105
|
+
fontSize: 12,
|
|
106
|
+
color: theme.muted
|
|
107
|
+
},
|
|
108
|
+
children: state.streetName
|
|
109
|
+
}) : null, state.summaryText ? /*#__PURE__*/_jsx(Text, {
|
|
110
|
+
style: {
|
|
111
|
+
marginTop: 4,
|
|
112
|
+
paddingTop: 6,
|
|
113
|
+
borderTopWidth: 1,
|
|
114
|
+
borderTopColor: theme.divider,
|
|
115
|
+
fontSize: 12,
|
|
116
|
+
fontWeight: '600',
|
|
117
|
+
color: theme.summary,
|
|
118
|
+
lineHeight: 16
|
|
119
|
+
},
|
|
120
|
+
children: state.summaryText
|
|
121
|
+
}) : null, state.extrasText ? /*#__PURE__*/_jsx(Text, {
|
|
122
|
+
style: {
|
|
123
|
+
marginTop: 2,
|
|
124
|
+
fontSize: 11,
|
|
125
|
+
fontWeight: '500',
|
|
126
|
+
color: theme.muted
|
|
127
|
+
},
|
|
128
|
+
children: state.extrasText
|
|
129
|
+
}) : null]
|
|
130
|
+
}), showSpeed ? /*#__PURE__*/_jsx(View, {
|
|
131
|
+
style: {
|
|
132
|
+
width: 52,
|
|
133
|
+
height: 52,
|
|
134
|
+
borderRadius: 26,
|
|
135
|
+
borderWidth: 3,
|
|
136
|
+
borderColor: '#dc2626',
|
|
137
|
+
backgroundColor: '#ffffff',
|
|
138
|
+
alignItems: 'center',
|
|
139
|
+
justifyContent: 'center'
|
|
140
|
+
},
|
|
141
|
+
children: /*#__PURE__*/_jsx(Text, {
|
|
142
|
+
style: {
|
|
143
|
+
fontSize: 14,
|
|
144
|
+
fontWeight: '800',
|
|
145
|
+
color: '#0f172a'
|
|
146
|
+
},
|
|
147
|
+
children: Math.round(speedLimit)
|
|
148
|
+
})
|
|
149
|
+
}) : null]
|
|
150
|
+
});
|
|
151
|
+
}
|
|
152
|
+
//# sourceMappingURL=NavigatorHud.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["Text","View","NavigatorManeuverIcon","jsx","_jsx","jsxs","_jsxs","NavigatorHud","state","theme","pickHint","visible","pick","pointerEvents","style","position","top","left","right","padding","borderRadius","backgroundColor","borderWidth","borderColor","children","textAlign","fontSize","fontWeight","color","speedLimit","speedLimitKmh","showSpeed","Number","isFinite","flexDirection","alignItems","gap","background","shadowColor","shadowOpacity","shadowRadius","shadowOffset","width","height","elevation","iconBackground","justifyContent","sign","iconForeground","flex","minWidth","distanceLabel","numberOfLines","lineHeight","foreground","maneuverText","subtle","streetName","muted","summaryText","marginTop","paddingTop","borderTopWidth","borderTopColor","divider","summary","extrasText","Math","round"],"sourceRoot":"../../../src","sources":["components/NavigatorHud.tsx"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
import { Pressable } from 'react-native';
|
|
4
|
+
import { NavigatorRecenterIcon } from "./navigatorManeuverIcon.js";
|
|
5
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
6
|
+
/**
|
|
7
|
+
* FAB «вернуть камеру на положение». При нажатии шлёт команду
|
|
8
|
+
* `recenterNavigatorCamera` в WebView — навигатор делает recenter.
|
|
9
|
+
*/
|
|
10
|
+
export function NavigatorRecenterButton({
|
|
11
|
+
theme,
|
|
12
|
+
accessibilityLabel,
|
|
13
|
+
onPress
|
|
14
|
+
}) {
|
|
15
|
+
return /*#__PURE__*/_jsx(Pressable, {
|
|
16
|
+
accessibilityRole: "button",
|
|
17
|
+
accessibilityLabel: accessibilityLabel,
|
|
18
|
+
onPress: onPress,
|
|
19
|
+
style: ({
|
|
20
|
+
pressed
|
|
21
|
+
}) => ({
|
|
22
|
+
position: 'absolute',
|
|
23
|
+
right: 16,
|
|
24
|
+
bottom: 16,
|
|
25
|
+
width: 56,
|
|
26
|
+
height: 56,
|
|
27
|
+
borderRadius: 28,
|
|
28
|
+
alignItems: 'center',
|
|
29
|
+
justifyContent: 'center',
|
|
30
|
+
backgroundColor: theme.background,
|
|
31
|
+
shadowColor: '#0f172a',
|
|
32
|
+
shadowOpacity: 0.32,
|
|
33
|
+
shadowRadius: 24,
|
|
34
|
+
shadowOffset: {
|
|
35
|
+
width: 0,
|
|
36
|
+
height: 10
|
|
37
|
+
},
|
|
38
|
+
elevation: 6,
|
|
39
|
+
transform: [{
|
|
40
|
+
scale: pressed ? 0.96 : 1
|
|
41
|
+
}]
|
|
42
|
+
}),
|
|
43
|
+
children: /*#__PURE__*/_jsx(NavigatorRecenterIcon, {
|
|
44
|
+
color: theme.iconForeground
|
|
45
|
+
})
|
|
46
|
+
});
|
|
47
|
+
}
|
|
48
|
+
//# sourceMappingURL=NavigatorRecenterButton.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["Pressable","NavigatorRecenterIcon","jsx","_jsx","NavigatorRecenterButton","theme","accessibilityLabel","onPress","accessibilityRole","style","pressed","position","right","bottom","width","height","borderRadius","alignItems","justifyContent","backgroundColor","background","shadowColor","shadowOpacity","shadowRadius","shadowOffset","elevation","transform","scale","children","color","iconForeground"],"sourceRoot":"../../../src","sources":["components/NavigatorRecenterButton.tsx"],"mappings":";;AAAA,SAASA,SAAS,QAAQ,cAAc;AAExC,SAASC,qBAAqB,QAAQ,4BAAyB;AAAC,SAAAC,GAAA,IAAAC,IAAA;AAGhE;AACA;AACA;AACA;AACA,OAAO,SAASC,uBAAuBA,CAAC;EACpCC,KAAK;EACLC,kBAAkB;EAClBC;AAKJ,CAAC,EAAE;EACC,oBACIJ,IAAA,CAACH,SAAS;IACNQ,iBAAiB,EAAC,QAAQ;IAC1BF,kBAAkB,EAAEA,kBAAmB;IACvCC,OAAO,EAAEA,OAAQ;IACjBE,KAAK,EAAEA,CAAC;MAAEC;IAAQ,CAAC,MAAM;MACrBC,QAAQ,EAAE,UAAU;MACpBC,KAAK,EAAE,EAAE;MACTC,MAAM,EAAE,EAAE;MACVC,KAAK,EAAE,EAAE;MACTC,MAAM,EAAE,EAAE;MACVC,YAAY,EAAE,EAAE;MAChBC,UAAU,EAAE,QAAQ;MACpBC,cAAc,EAAE,QAAQ;MACxBC,eAAe,EAAEd,KAAK,CAACe,UAAU;MACjCC,WAAW,EAAE,SAAS;MACtBC,aAAa,EAAE,IAAI;MACnBC,YAAY,EAAE,EAAE;MAChBC,YAAY,EAAE;QAAEV,KAAK,EAAE,CAAC;QAAEC,MAAM,EAAE;MAAG,CAAC;MACtCU,SAAS,EAAE,CAAC;MACZC,SAAS,EAAE,CAAC;QAAEC,KAAK,EAAEjB,OAAO,GAAG,IAAI,GAAG;MAAE,CAAC;IAC7C,CAAC,CAAE;IAAAkB,QAAA,eAEHzB,IAAA,CAACF,qBAAqB;MAAC4B,KAAK,EAAExB,KAAK,CAACyB;IAAe,CAAE;EAAC,CAC/C,CAAC;AAEpB","ignoreList":[]}
|
|
@@ -0,0 +1,173 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
import { useState } from 'react';
|
|
4
|
+
import { Pressable, ScrollView, Text, View } from 'react-native';
|
|
5
|
+
import { NavigatorVoiceIcon } from "./navigatorManeuverIcon.js";
|
|
6
|
+
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
7
|
+
/**
|
|
8
|
+
* FAB выбора голоса + меню (список голосов, громкость 1–5, «отключить»).
|
|
9
|
+
* Порт DOM-меню из веб-навигатора. Каталог/манифест и персист — в
|
|
10
|
+
* `useNavigatorVoice`; компонент только презентационный.
|
|
11
|
+
*/
|
|
12
|
+
export function NavigatorVoiceControl({
|
|
13
|
+
theme,
|
|
14
|
+
strings,
|
|
15
|
+
catalog,
|
|
16
|
+
selectedDir,
|
|
17
|
+
voiceEnabled,
|
|
18
|
+
volumeLevel,
|
|
19
|
+
onSelectVoice,
|
|
20
|
+
onSelectVolume,
|
|
21
|
+
onDisable
|
|
22
|
+
}) {
|
|
23
|
+
const [open, setOpen] = useState(false);
|
|
24
|
+
if (catalog.length === 0) return null;
|
|
25
|
+
return /*#__PURE__*/_jsxs(_Fragment, {
|
|
26
|
+
children: [/*#__PURE__*/_jsx(Pressable, {
|
|
27
|
+
accessibilityRole: "button",
|
|
28
|
+
accessibilityLabel: strings.voicePickerAria,
|
|
29
|
+
onPress: () => setOpen(v => !v),
|
|
30
|
+
style: ({
|
|
31
|
+
pressed
|
|
32
|
+
}) => ({
|
|
33
|
+
position: 'absolute',
|
|
34
|
+
right: 16,
|
|
35
|
+
bottom: 16 + 56 + 8,
|
|
36
|
+
width: 56,
|
|
37
|
+
height: 56,
|
|
38
|
+
borderRadius: 28,
|
|
39
|
+
alignItems: 'center',
|
|
40
|
+
justifyContent: 'center',
|
|
41
|
+
backgroundColor: theme.background,
|
|
42
|
+
shadowColor: '#0f172a',
|
|
43
|
+
shadowOpacity: 0.32,
|
|
44
|
+
shadowRadius: 24,
|
|
45
|
+
shadowOffset: {
|
|
46
|
+
width: 0,
|
|
47
|
+
height: 10
|
|
48
|
+
},
|
|
49
|
+
elevation: 6,
|
|
50
|
+
opacity: pressed ? 0.9 : 1
|
|
51
|
+
}),
|
|
52
|
+
children: /*#__PURE__*/_jsx(NavigatorVoiceIcon, {
|
|
53
|
+
color: voiceEnabled ? theme.iconForeground : theme.muted
|
|
54
|
+
})
|
|
55
|
+
}), open ? /*#__PURE__*/_jsx(View, {
|
|
56
|
+
style: {
|
|
57
|
+
position: 'absolute',
|
|
58
|
+
right: 16,
|
|
59
|
+
bottom: 16 + 56 + 8 + 56 + 8,
|
|
60
|
+
minWidth: 200,
|
|
61
|
+
maxWidth: 280,
|
|
62
|
+
paddingVertical: 6,
|
|
63
|
+
borderRadius: 12,
|
|
64
|
+
backgroundColor: theme.background,
|
|
65
|
+
shadowColor: '#0f172a',
|
|
66
|
+
shadowOpacity: 0.32,
|
|
67
|
+
shadowRadius: 24,
|
|
68
|
+
shadowOffset: {
|
|
69
|
+
width: 0,
|
|
70
|
+
height: 10
|
|
71
|
+
},
|
|
72
|
+
elevation: 8
|
|
73
|
+
},
|
|
74
|
+
children: /*#__PURE__*/_jsxs(ScrollView, {
|
|
75
|
+
style: {
|
|
76
|
+
maxHeight: 280
|
|
77
|
+
},
|
|
78
|
+
children: [catalog.map(entry => {
|
|
79
|
+
const active = voiceEnabled && entry.dir === selectedDir;
|
|
80
|
+
return /*#__PURE__*/_jsx(Pressable, {
|
|
81
|
+
accessibilityRole: "menuitem",
|
|
82
|
+
onPress: () => {
|
|
83
|
+
setOpen(false);
|
|
84
|
+
onSelectVoice(entry.dir);
|
|
85
|
+
},
|
|
86
|
+
style: {
|
|
87
|
+
paddingVertical: 10,
|
|
88
|
+
paddingHorizontal: 16
|
|
89
|
+
},
|
|
90
|
+
children: /*#__PURE__*/_jsx(Text, {
|
|
91
|
+
style: {
|
|
92
|
+
fontSize: 15,
|
|
93
|
+
color: active ? theme.iconForeground : theme.foreground,
|
|
94
|
+
fontWeight: active ? '600' : '400'
|
|
95
|
+
},
|
|
96
|
+
children: entry.name
|
|
97
|
+
})
|
|
98
|
+
}, entry.dir);
|
|
99
|
+
}), /*#__PURE__*/_jsxs(View, {
|
|
100
|
+
style: {
|
|
101
|
+
marginTop: 4,
|
|
102
|
+
paddingTop: 12,
|
|
103
|
+
paddingHorizontal: 16,
|
|
104
|
+
borderTopWidth: 1,
|
|
105
|
+
borderTopColor: 'rgba(255, 255, 255, 0.12)'
|
|
106
|
+
},
|
|
107
|
+
children: [/*#__PURE__*/_jsx(Text, {
|
|
108
|
+
style: {
|
|
109
|
+
marginBottom: 10,
|
|
110
|
+
fontSize: 13,
|
|
111
|
+
color: theme.muted
|
|
112
|
+
},
|
|
113
|
+
children: strings.voiceVolumeLabel
|
|
114
|
+
}), /*#__PURE__*/_jsx(View, {
|
|
115
|
+
style: {
|
|
116
|
+
flexDirection: 'row',
|
|
117
|
+
alignItems: 'flex-end',
|
|
118
|
+
gap: 6
|
|
119
|
+
},
|
|
120
|
+
children: [1, 2, 3, 4, 5].map(step => {
|
|
121
|
+
const stepActive = step <= volumeLevel;
|
|
122
|
+
return /*#__PURE__*/_jsx(Pressable, {
|
|
123
|
+
accessibilityRole: "button",
|
|
124
|
+
accessibilityLabel: strings.voiceVolumeStepAria(step),
|
|
125
|
+
onPress: () => onSelectVolume(step),
|
|
126
|
+
style: {
|
|
127
|
+
flex: 1,
|
|
128
|
+
height: 36,
|
|
129
|
+
justifyContent: 'flex-end',
|
|
130
|
+
alignItems: 'center',
|
|
131
|
+
paddingBottom: 4,
|
|
132
|
+
borderRadius: 6,
|
|
133
|
+
backgroundColor: step === volumeLevel ? 'rgba(59, 130, 246, 0.18)' : 'transparent'
|
|
134
|
+
},
|
|
135
|
+
children: /*#__PURE__*/_jsx(View, {
|
|
136
|
+
style: {
|
|
137
|
+
width: 14,
|
|
138
|
+
height: Math.max(6, step * 6),
|
|
139
|
+
borderRadius: 2,
|
|
140
|
+
backgroundColor: stepActive ? theme.iconForeground : theme.muted
|
|
141
|
+
}
|
|
142
|
+
})
|
|
143
|
+
}, step);
|
|
144
|
+
})
|
|
145
|
+
})]
|
|
146
|
+
}), /*#__PURE__*/_jsx(Pressable, {
|
|
147
|
+
accessibilityRole: "menuitem",
|
|
148
|
+
onPress: () => {
|
|
149
|
+
setOpen(false);
|
|
150
|
+
onDisable();
|
|
151
|
+
},
|
|
152
|
+
style: {
|
|
153
|
+
marginTop: 4,
|
|
154
|
+
paddingTop: 12,
|
|
155
|
+
paddingBottom: 10,
|
|
156
|
+
paddingHorizontal: 16,
|
|
157
|
+
borderTopWidth: 1,
|
|
158
|
+
borderTopColor: 'rgba(255, 255, 255, 0.12)'
|
|
159
|
+
},
|
|
160
|
+
children: /*#__PURE__*/_jsx(Text, {
|
|
161
|
+
style: {
|
|
162
|
+
fontSize: 15,
|
|
163
|
+
color: !voiceEnabled ? theme.iconForeground : theme.muted,
|
|
164
|
+
fontWeight: !voiceEnabled ? '600' : '400'
|
|
165
|
+
},
|
|
166
|
+
children: strings.voiceDisable
|
|
167
|
+
})
|
|
168
|
+
})]
|
|
169
|
+
})
|
|
170
|
+
}) : null]
|
|
171
|
+
});
|
|
172
|
+
}
|
|
173
|
+
//# sourceMappingURL=NavigatorVoiceControl.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["useState","Pressable","ScrollView","Text","View","NavigatorVoiceIcon","jsx","_jsx","jsxs","_jsxs","Fragment","_Fragment","NavigatorVoiceControl","theme","strings","catalog","selectedDir","voiceEnabled","volumeLevel","onSelectVoice","onSelectVolume","onDisable","open","setOpen","length","children","accessibilityRole","accessibilityLabel","voicePickerAria","onPress","v","style","pressed","position","right","bottom","width","height","borderRadius","alignItems","justifyContent","backgroundColor","background","shadowColor","shadowOpacity","shadowRadius","shadowOffset","elevation","opacity","color","iconForeground","muted","minWidth","maxWidth","paddingVertical","maxHeight","map","entry","active","dir","paddingHorizontal","fontSize","foreground","fontWeight","name","marginTop","paddingTop","borderTopWidth","borderTopColor","marginBottom","voiceVolumeLabel","flexDirection","gap","step","stepActive","voiceVolumeStepAria","flex","paddingBottom","Math","max","voiceDisable"],"sourceRoot":"../../../src","sources":["components/NavigatorVoiceControl.tsx"],"mappings":";;AAAA,SAASA,QAAQ,QAAQ,OAAO;AAChC,SAASC,SAAS,EAAEC,UAAU,EAAEC,IAAI,EAAEC,IAAI,QAAQ,cAAc;AAEhE,SAASC,kBAAkB,QAAQ,4BAAyB;AAAC,SAAAC,GAAA,IAAAC,IAAA,EAAAC,IAAA,IAAAC,KAAA,EAAAC,QAAA,IAAAC,SAAA;AAK7D;AACA;AACA;AACA;AACA;AACA,OAAO,SAASC,qBAAqBA,CAAC;EAClCC,KAAK;EACLC,OAAO;EACPC,OAAO;EACPC,WAAW;EACXC,YAAY;EACZC,WAAW;EACXC,aAAa;EACbC,cAAc;EACdC;AAWJ,CAAC,EAAE;EACC,MAAM,CAACC,IAAI,EAAEC,OAAO,CAAC,GAAGvB,QAAQ,CAAC,KAAK,CAAC;EAEvC,IAAIe,OAAO,CAACS,MAAM,KAAK,CAAC,EAAE,OAAO,IAAI;EAErC,oBACIf,KAAA,CAAAE,SAAA;IAAAc,QAAA,gBACIlB,IAAA,CAACN,SAAS;MACNyB,iBAAiB,EAAC,QAAQ;MAC1BC,kBAAkB,EAAEb,OAAO,CAACc,eAAgB;MAC5CC,OAAO,EAAEA,CAAA,KAAMN,OAAO,CAAEO,CAAC,IAAK,CAACA,CAAC,CAAE;MAClCC,KAAK,EAAEA,CAAC;QAAEC;MAAQ,CAAC,MAAM;QACrBC,QAAQ,EAAE,UAAU;QACpBC,KAAK,EAAE,EAAE;QACTC,MAAM,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC;QACnBC,KAAK,EAAE,EAAE;QACTC,MAAM,EAAE,EAAE;QACVC,YAAY,EAAE,EAAE;QAChBC,UAAU,EAAE,QAAQ;QACpBC,cAAc,EAAE,QAAQ;QACxBC,eAAe,EAAE5B,KAAK,CAAC6B,UAAU;QACjCC,WAAW,EAAE,SAAS;QACtBC,aAAa,EAAE,IAAI;QACnBC,YAAY,EAAE,EAAE;QAChBC,YAAY,EAAE;UAAEV,KAAK,EAAE,CAAC;UAAEC,MAAM,EAAE;QAAG,CAAC;QACtCU,SAAS,EAAE,CAAC;QACZC,OAAO,EAAEhB,OAAO,GAAG,GAAG,GAAG;MAC7B,CAAC,CAAE;MAAAP,QAAA,eAEHlB,IAAA,CAACF,kBAAkB;QACf4C,KAAK,EAAEhC,YAAY,GAAGJ,KAAK,CAACqC,cAAc,GAAGrC,KAAK,CAACsC;MAAM,CAC5D;IAAC,CACK,CAAC,EAEX7B,IAAI,gBACDf,IAAA,CAACH,IAAI;MACD2B,KAAK,EAAE;QACHE,QAAQ,EAAE,UAAU;QACpBC,KAAK,EAAE,EAAE;QACTC,MAAM,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC;QAC5BiB,QAAQ,EAAE,GAAG;QACbC,QAAQ,EAAE,GAAG;QACbC,eAAe,EAAE,CAAC;QAClBhB,YAAY,EAAE,EAAE;QAChBG,eAAe,EAAE5B,KAAK,CAAC6B,UAAU;QACjCC,WAAW,EAAE,SAAS;QACtBC,aAAa,EAAE,IAAI;QACnBC,YAAY,EAAE,EAAE;QAChBC,YAAY,EAAE;UAAEV,KAAK,EAAE,CAAC;UAAEC,MAAM,EAAE;QAAG,CAAC;QACtCU,SAAS,EAAE;MACf,CAAE;MAAAtB,QAAA,eAEFhB,KAAA,CAACP,UAAU;QAAC6B,KAAK,EAAE;UAAEwB,SAAS,EAAE;QAAI,CAAE;QAAA9B,QAAA,GACjCV,OAAO,CAACyC,GAAG,CAAEC,KAAK,IAAK;UACpB,MAAMC,MAAM,GAAGzC,YAAY,IAAIwC,KAAK,CAACE,GAAG,KAAK3C,WAAW;UACxD,oBACIT,IAAA,CAACN,SAAS;YAENyB,iBAAiB,EAAC,UAAU;YAC5BG,OAAO,EAAEA,CAAA,KAAM;cACXN,OAAO,CAAC,KAAK,CAAC;cACdJ,aAAa,CAACsC,KAAK,CAACE,GAAG,CAAC;YAC5B,CAAE;YACF5B,KAAK,EAAE;cAAEuB,eAAe,EAAE,EAAE;cAAEM,iBAAiB,EAAE;YAAG,CAAE;YAAAnC,QAAA,eAEtDlB,IAAA,CAACJ,IAAI;cACD4B,KAAK,EAAE;gBACH8B,QAAQ,EAAE,EAAE;gBACZZ,KAAK,EAAES,MAAM,GAAG7C,KAAK,CAACqC,cAAc,GAAGrC,KAAK,CAACiD,UAAU;gBACvDC,UAAU,EAAEL,MAAM,GAAG,KAAK,GAAG;cACjC,CAAE;cAAAjC,QAAA,EAEDgC,KAAK,CAACO;YAAI,CACT;UAAC,GAhBFP,KAAK,CAACE,GAiBJ,CAAC;QAEpB,CAAC,CAAC,eAEFlD,KAAA,CAACL,IAAI;UACD2B,KAAK,EAAE;YACHkC,SAAS,EAAE,CAAC;YACZC,UAAU,EAAE,EAAE;YACdN,iBAAiB,EAAE,EAAE;YACrBO,cAAc,EAAE,CAAC;YACjBC,cAAc,EAAE;UACpB,CAAE;UAAA3C,QAAA,gBAEFlB,IAAA,CAACJ,IAAI;YAAC4B,KAAK,EAAE;cAAEsC,YAAY,EAAE,EAAE;cAAER,QAAQ,EAAE,EAAE;cAAEZ,KAAK,EAAEpC,KAAK,CAACsC;YAAM,CAAE;YAAA1B,QAAA,EAC/DX,OAAO,CAACwD;UAAgB,CACvB,CAAC,eACP/D,IAAA,CAACH,IAAI;YACD2B,KAAK,EAAE;cACHwC,aAAa,EAAE,KAAK;cACpBhC,UAAU,EAAE,UAAU;cACtBiC,GAAG,EAAE;YACT,CAAE;YAAA/C,QAAA,EAEA,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAW+B,GAAG,CAAEiB,IAAI,IAAK;cACtC,MAAMC,UAAU,GAAGD,IAAI,IAAIvD,WAAW;cACtC,oBACIX,IAAA,CAACN,SAAS;gBAENyB,iBAAiB,EAAC,QAAQ;gBAC1BC,kBAAkB,EAAEb,OAAO,CAAC6D,mBAAmB,CAACF,IAAI,CAAE;gBACtD5C,OAAO,EAAEA,CAAA,KAAMT,cAAc,CAACqD,IAAwB,CAAE;gBACxD1C,KAAK,EAAE;kBACH6C,IAAI,EAAE,CAAC;kBACPvC,MAAM,EAAE,EAAE;kBACVG,cAAc,EAAE,UAAU;kBAC1BD,UAAU,EAAE,QAAQ;kBACpBsC,aAAa,EAAE,CAAC;kBAChBvC,YAAY,EAAE,CAAC;kBACfG,eAAe,EACXgC,IAAI,KAAKvD,WAAW,GACd,0BAA0B,GAC1B;gBACd,CAAE;gBAAAO,QAAA,eAEFlB,IAAA,CAACH,IAAI;kBACD2B,KAAK,EAAE;oBACHK,KAAK,EAAE,EAAE;oBACTC,MAAM,EAAEyC,IAAI,CAACC,GAAG,CAAC,CAAC,EAAEN,IAAI,GAAG,CAAC,CAAC;oBAC7BnC,YAAY,EAAE,CAAC;oBACfG,eAAe,EAAEiC,UAAU,GACrB7D,KAAK,CAACqC,cAAc,GACpBrC,KAAK,CAACsC;kBAChB;gBAAE,CACL;cAAC,GA1BGsB,IA2BE,CAAC;YAEpB,CAAC;UAAC,CACA,CAAC;QAAA,CACL,CAAC,eAEPlE,IAAA,CAACN,SAAS;UACNyB,iBAAiB,EAAC,UAAU;UAC5BG,OAAO,EAAEA,CAAA,KAAM;YACXN,OAAO,CAAC,KAAK,CAAC;YACdF,SAAS,CAAC,CAAC;UACf,CAAE;UACFU,KAAK,EAAE;YACHkC,SAAS,EAAE,CAAC;YACZC,UAAU,EAAE,EAAE;YACdW,aAAa,EAAE,EAAE;YACjBjB,iBAAiB,EAAE,EAAE;YACrBO,cAAc,EAAE,CAAC;YACjBC,cAAc,EAAE;UACpB,CAAE;UAAA3C,QAAA,eAEFlB,IAAA,CAACJ,IAAI;YACD4B,KAAK,EAAE;cACH8B,QAAQ,EAAE,EAAE;cACZZ,KAAK,EAAE,CAAChC,YAAY,GAAGJ,KAAK,CAACqC,cAAc,GAAGrC,KAAK,CAACsC,KAAK;cACzDY,UAAU,EAAE,CAAC9C,YAAY,GAAG,KAAK,GAAG;YACxC,CAAE;YAAAQ,QAAA,EAEDX,OAAO,CAACkE;UAAY,CACnB;QAAC,CACA,CAAC;MAAA,CACJ;IAAC,CACX,CAAC,GACP,IAAI;EAAA,CACV,CAAC;AAEX","ignoreList":[]}
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Цвета HUD/FAB навигатора, выведенные из `navigatorChrome`. Порт
|
|
5
|
+
* HUD-части `resolveNavigatorChrome` из веб-навигатора: раньше эти
|
|
6
|
+
* CSS-переменные применялись к DOM, теперь панель рисует нативная часть.
|
|
7
|
+
*/
|
|
8
|
+
|
|
9
|
+
const DEF_ACCENT = '#3b82f6';
|
|
10
|
+
const DEF_HUD_BG = 'rgba(15, 23, 42, 0.92)';
|
|
11
|
+
const DEF_HUD_FG = '#f8fafc';
|
|
12
|
+
const DEF_HUD_MUTED = '#94a3b8';
|
|
13
|
+
const DEF_HUD_SUBTLE = '#e2e8f0';
|
|
14
|
+
const DEF_HUD_SUMMARY = '#cbd5e1';
|
|
15
|
+
const RGB_WHITE = {
|
|
16
|
+
r: 255,
|
|
17
|
+
g: 255,
|
|
18
|
+
b: 255
|
|
19
|
+
};
|
|
20
|
+
function clamp255(n) {
|
|
21
|
+
return Math.max(0, Math.min(255, Math.round(n)));
|
|
22
|
+
}
|
|
23
|
+
function mixRgb(a, b, t) {
|
|
24
|
+
return {
|
|
25
|
+
r: clamp255(a.r + (b.r - a.r) * t),
|
|
26
|
+
g: clamp255(a.g + (b.g - a.g) * t),
|
|
27
|
+
b: clamp255(a.b + (b.b - a.b) * t)
|
|
28
|
+
};
|
|
29
|
+
}
|
|
30
|
+
function toHex({
|
|
31
|
+
r,
|
|
32
|
+
g,
|
|
33
|
+
b
|
|
34
|
+
}) {
|
|
35
|
+
const h = n => n.toString(16).padStart(2, '0');
|
|
36
|
+
return `#${h(r)}${h(g)}${h(b)}`;
|
|
37
|
+
}
|
|
38
|
+
function parseHexColor(input) {
|
|
39
|
+
if (typeof input !== 'string') return null;
|
|
40
|
+
const s = input.trim();
|
|
41
|
+
if (!/^#[0-9a-fA-F]{3}$|^#[0-9a-fA-F]{6}$/.test(s)) return null;
|
|
42
|
+
if (s.length === 4) {
|
|
43
|
+
const r = parseInt(s[1] + s[1], 16);
|
|
44
|
+
const g = parseInt(s[2] + s[2], 16);
|
|
45
|
+
const b = parseInt(s[3] + s[3], 16);
|
|
46
|
+
return {
|
|
47
|
+
r,
|
|
48
|
+
g,
|
|
49
|
+
b
|
|
50
|
+
};
|
|
51
|
+
}
|
|
52
|
+
return {
|
|
53
|
+
r: parseInt(s.slice(1, 3), 16),
|
|
54
|
+
g: parseInt(s.slice(3, 5), 16),
|
|
55
|
+
b: parseInt(s.slice(5, 7), 16)
|
|
56
|
+
};
|
|
57
|
+
}
|
|
58
|
+
function rgba(rgb, a) {
|
|
59
|
+
return `rgba(${rgb.r}, ${rgb.g}, ${rgb.b}, ${a})`;
|
|
60
|
+
}
|
|
61
|
+
function mixCssHexOr(a, b, t, fallback) {
|
|
62
|
+
const ra = parseHexColor(a);
|
|
63
|
+
const rb = parseHexColor(b);
|
|
64
|
+
if (!ra || !rb) return fallback;
|
|
65
|
+
return toHex(mixRgb(ra, rb, t));
|
|
66
|
+
}
|
|
67
|
+
function dividerFromMutedCss(muted) {
|
|
68
|
+
const m = parseHexColor(muted);
|
|
69
|
+
if (m) return rgba(m, 0.28);
|
|
70
|
+
return 'rgba(148, 163, 184, 0.28)';
|
|
71
|
+
}
|
|
72
|
+
export function resolveNavigatorChromeTheme(input) {
|
|
73
|
+
const accentRgb = parseHexColor(input?.accent) ?? parseHexColor(DEF_ACCENT) ?? {
|
|
74
|
+
r: 59,
|
|
75
|
+
g: 130,
|
|
76
|
+
b: 246
|
|
77
|
+
};
|
|
78
|
+
const background = typeof input?.hudBackground === 'string' && input.hudBackground.trim() ? input.hudBackground.trim() : DEF_HUD_BG;
|
|
79
|
+
const foreground = typeof input?.hudForeground === 'string' && input.hudForeground.trim() ? input.hudForeground.trim() : DEF_HUD_FG;
|
|
80
|
+
const muted = typeof input?.hudMuted === 'string' && input.hudMuted.trim() ? input.hudMuted.trim() : DEF_HUD_MUTED;
|
|
81
|
+
const subtle = mixCssHexOr(foreground, muted, 0.52, DEF_HUD_SUBTLE);
|
|
82
|
+
const summary = mixCssHexOr(foreground, muted, 0.3, DEF_HUD_SUMMARY);
|
|
83
|
+
const divider = dividerFromMutedCss(muted);
|
|
84
|
+
const iconForeground = toHex(mixRgb(accentRgb, RGB_WHITE, 0.38));
|
|
85
|
+
const iconBackground = rgba(accentRgb, 0.18);
|
|
86
|
+
return {
|
|
87
|
+
background,
|
|
88
|
+
foreground,
|
|
89
|
+
subtle,
|
|
90
|
+
muted,
|
|
91
|
+
summary,
|
|
92
|
+
divider,
|
|
93
|
+
iconBackground,
|
|
94
|
+
iconForeground,
|
|
95
|
+
shadow: 'rgba(15, 23, 42, 0.32)'
|
|
96
|
+
};
|
|
97
|
+
}
|
|
98
|
+
//# sourceMappingURL=navigatorChromeTheme.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["DEF_ACCENT","DEF_HUD_BG","DEF_HUD_FG","DEF_HUD_MUTED","DEF_HUD_SUBTLE","DEF_HUD_SUMMARY","RGB_WHITE","r","g","b","clamp255","n","Math","max","min","round","mixRgb","a","t","toHex","h","toString","padStart","parseHexColor","input","s","trim","test","length","parseInt","slice","rgba","rgb","mixCssHexOr","fallback","ra","rb","dividerFromMutedCss","muted","m","resolveNavigatorChromeTheme","accentRgb","accent","background","hudBackground","foreground","hudForeground","hudMuted","subtle","summary","divider","iconForeground","iconBackground","shadow"],"sourceRoot":"../../../src","sources":["components/navigatorChromeTheme.ts"],"mappings":"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","ignoreList":[]}
|