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.
Files changed (78) hide show
  1. package/README.md +92 -6
  2. package/lib/module/components/MapView.js +167 -48
  3. package/lib/module/components/MapView.js.map +1 -1
  4. package/lib/module/components/NavigatorHud.js +152 -0
  5. package/lib/module/components/NavigatorHud.js.map +1 -0
  6. package/lib/module/components/NavigatorRecenterButton.js +48 -0
  7. package/lib/module/components/NavigatorRecenterButton.js.map +1 -0
  8. package/lib/module/components/NavigatorVoiceControl.js +173 -0
  9. package/lib/module/components/NavigatorVoiceControl.js.map +1 -0
  10. package/lib/module/components/navigatorChromeTheme.js +98 -0
  11. package/lib/module/components/navigatorChromeTheme.js.map +1 -0
  12. package/lib/module/components/navigatorManeuverIcon.js +210 -0
  13. package/lib/module/components/navigatorManeuverIcon.js.map +1 -0
  14. package/lib/module/components/navigatorVoiceCatalog.js +225 -0
  15. package/lib/module/components/navigatorVoiceCatalog.js.map +1 -0
  16. package/lib/module/components/navigatorVoiceKeys.js +14 -0
  17. package/lib/module/components/navigatorVoiceKeys.js.map +1 -0
  18. package/lib/module/components/navigatorVoicePlayer.js +100 -0
  19. package/lib/module/components/navigatorVoicePlayer.js.map +1 -0
  20. package/lib/module/components/navigatorVoiceStrings.js +31 -0
  21. package/lib/module/components/navigatorVoiceStrings.js.map +1 -0
  22. package/lib/module/components/types.js +47 -0
  23. package/lib/module/components/types.js.map +1 -1
  24. package/lib/module/components/useNavigatorVoice.js +78 -0
  25. package/lib/module/components/useNavigatorVoice.js.map +1 -0
  26. package/lib/module/components/utils.js +26 -0
  27. package/lib/module/components/utils.js.map +1 -1
  28. package/lib/module/components/webMapBuild.js +1 -1
  29. package/lib/module/components/webMapBuild.js.map +1 -1
  30. package/lib/module/index.js.map +1 -1
  31. package/lib/typescript/src/components/MapView.d.ts +15 -2
  32. package/lib/typescript/src/components/MapView.d.ts.map +1 -1
  33. package/lib/typescript/src/components/NavigatorHud.d.ts +13 -0
  34. package/lib/typescript/src/components/NavigatorHud.d.ts.map +1 -0
  35. package/lib/typescript/src/components/NavigatorRecenterButton.d.ts +11 -0
  36. package/lib/typescript/src/components/NavigatorRecenterButton.d.ts.map +1 -0
  37. package/lib/typescript/src/components/NavigatorVoiceControl.d.ts +20 -0
  38. package/lib/typescript/src/components/NavigatorVoiceControl.d.ts.map +1 -0
  39. package/lib/typescript/src/components/navigatorChromeTheme.d.ts +19 -0
  40. package/lib/typescript/src/components/navigatorChromeTheme.d.ts.map +1 -0
  41. package/lib/typescript/src/components/navigatorManeuverIcon.d.ts +20 -0
  42. package/lib/typescript/src/components/navigatorManeuverIcon.d.ts.map +1 -0
  43. package/lib/typescript/src/components/navigatorVoiceCatalog.d.ts +50 -0
  44. package/lib/typescript/src/components/navigatorVoiceCatalog.d.ts.map +1 -0
  45. package/lib/typescript/src/components/navigatorVoiceKeys.d.ts +10 -0
  46. package/lib/typescript/src/components/navigatorVoiceKeys.d.ts.map +1 -0
  47. package/lib/typescript/src/components/navigatorVoicePlayer.d.ts +15 -0
  48. package/lib/typescript/src/components/navigatorVoicePlayer.d.ts.map +1 -0
  49. package/lib/typescript/src/components/navigatorVoiceStrings.d.ts +19 -0
  50. package/lib/typescript/src/components/navigatorVoiceStrings.d.ts.map +1 -0
  51. package/lib/typescript/src/components/types.d.ts +205 -12
  52. package/lib/typescript/src/components/types.d.ts.map +1 -1
  53. package/lib/typescript/src/components/useNavigatorVoice.d.ts +20 -0
  54. package/lib/typescript/src/components/useNavigatorVoice.d.ts.map +1 -0
  55. package/lib/typescript/src/components/utils.d.ts +9 -0
  56. package/lib/typescript/src/components/utils.d.ts.map +1 -1
  57. package/lib/typescript/src/components/webMapBuild.d.ts +1 -1
  58. package/lib/typescript/src/components/webMapBuild.d.ts.map +1 -1
  59. package/lib/typescript/src/index.d.ts +1 -1
  60. package/lib/typescript/src/index.d.ts.map +1 -1
  61. package/package.json +16 -7
  62. package/resources/README.md +62 -0
  63. package/resources/map.html +797 -0
  64. package/src/components/MapView.tsx +209 -58
  65. package/src/components/NavigatorHud.tsx +166 -0
  66. package/src/components/NavigatorRecenterButton.tsx +45 -0
  67. package/src/components/NavigatorVoiceControl.tsx +198 -0
  68. package/src/components/navigatorChromeTheme.ts +118 -0
  69. package/src/components/navigatorManeuverIcon.tsx +177 -0
  70. package/src/components/navigatorVoiceCatalog.ts +275 -0
  71. package/src/components/navigatorVoiceKeys.ts +132 -0
  72. package/src/components/navigatorVoicePlayer.tsx +126 -0
  73. package/src/components/navigatorVoiceStrings.ts +42 -0
  74. package/src/components/types.ts +198 -16
  75. package/src/components/useNavigatorVoice.ts +96 -0
  76. package/src/components/utils.ts +28 -0
  77. package/src/components/webMapBuild.ts +1 -1
  78. 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":";;AAEA;AACA;AACA;AACA;AACA;;AAeA,MAAMA,UAAU,GAAG,SAAS;AAC5B,MAAMC,UAAU,GAAG,wBAAwB;AAC3C,MAAMC,UAAU,GAAG,SAAS;AAC5B,MAAMC,aAAa,GAAG,SAAS;AAC/B,MAAMC,cAAc,GAAG,SAAS;AAChC,MAAMC,eAAe,GAAG,SAAS;AACjC,MAAMC,SAAc,GAAG;EAAEC,CAAC,EAAE,GAAG;EAAEC,CAAC,EAAE,GAAG;EAAEC,CAAC,EAAE;AAAI,CAAC;AAEjD,SAASC,QAAQA,CAACC,CAAS,EAAU;EACjC,OAAOC,IAAI,CAACC,GAAG,CAAC,CAAC,EAAED,IAAI,CAACE,GAAG,CAAC,GAAG,EAAEF,IAAI,CAACG,KAAK,CAACJ,CAAC,CAAC,CAAC,CAAC;AACpD;AAEA,SAASK,MAAMA,CAACC,CAAM,EAAER,CAAM,EAAES,CAAS,EAAO;EAC5C,OAAO;IACHX,CAAC,EAAEG,QAAQ,CAACO,CAAC,CAACV,CAAC,GAAG,CAACE,CAAC,CAACF,CAAC,GAAGU,CAAC,CAACV,CAAC,IAAIW,CAAC,CAAC;IAClCV,CAAC,EAAEE,QAAQ,CAACO,CAAC,CAACT,CAAC,GAAG,CAACC,CAAC,CAACD,CAAC,GAAGS,CAAC,CAACT,CAAC,IAAIU,CAAC,CAAC;IAClCT,CAAC,EAAEC,QAAQ,CAACO,CAAC,CAACR,CAAC,GAAG,CAACA,CAAC,CAACA,CAAC,GAAGQ,CAAC,CAACR,CAAC,IAAIS,CAAC;EACrC,CAAC;AACL;AAEA,SAASC,KAAKA,CAAC;EAAEZ,CAAC;EAAEC,CAAC;EAAEC;AAAO,CAAC,EAAU;EACrC,MAAMW,CAAC,GAAIT,CAAS,IAAKA,CAAC,CAACU,QAAQ,CAAC,EAAE,CAAC,CAACC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC;EACxD,OAAO,IAAIF,CAAC,CAACb,CAAC,CAAC,GAAGa,CAAC,CAACZ,CAAC,CAAC,GAAGY,CAAC,CAACX,CAAC,CAAC,EAAE;AACnC;AAEA,SAASc,aAAaA,CAACC,KAAyB,EAAc;EAC1D,IAAI,OAAOA,KAAK,KAAK,QAAQ,EAAE,OAAO,IAAI;EAC1C,MAAMC,CAAC,GAAGD,KAAK,CAACE,IAAI,CAAC,CAAC;EACtB,IAAI,CAAC,qCAAqC,CAACC,IAAI,CAACF,CAAC,CAAC,EAAE,OAAO,IAAI;EAC/D,IAAIA,CAAC,CAACG,MAAM,KAAK,CAAC,EAAE;IAChB,MAAMrB,CAAC,GAAGsB,QAAQ,CAACJ,CAAC,CAAC,CAAC,CAAC,GAAIA,CAAC,CAAC,CAAC,CAAE,EAAE,EAAE,CAAC;IACrC,MAAMjB,CAAC,GAAGqB,QAAQ,CAACJ,CAAC,CAAC,CAAC,CAAC,GAAIA,CAAC,CAAC,CAAC,CAAE,EAAE,EAAE,CAAC;IACrC,MAAMhB,CAAC,GAAGoB,QAAQ,CAACJ,CAAC,CAAC,CAAC,CAAC,GAAIA,CAAC,CAAC,CAAC,CAAE,EAAE,EAAE,CAAC;IACrC,OAAO;MAAElB,CAAC;MAAEC,CAAC;MAAEC;IAAE,CAAC;EACtB;EACA,OAAO;IACHF,CAAC,EAAEsB,QAAQ,CAACJ,CAAC,CAACK,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC;IAC9BtB,CAAC,EAAEqB,QAAQ,CAACJ,CAAC,CAACK,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC;IAC9BrB,CAAC,EAAEoB,QAAQ,CAACJ,CAAC,CAACK,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE;EACjC,CAAC;AACL;AAEA,SAASC,IAAIA,CAACC,GAAQ,EAAEf,CAAS,EAAU;EACvC,OAAO,QAAQe,GAAG,CAACzB,CAAC,KAAKyB,GAAG,CAACxB,CAAC,KAAKwB,GAAG,CAACvB,CAAC,KAAKQ,CAAC,GAAG;AACrD;AAEA,SAASgB,WAAWA,CAAChB,CAAS,EAAER,CAAS,EAAES,CAAS,EAAEgB,QAAgB,EAAU;EAC5E,MAAMC,EAAE,GAAGZ,aAAa,CAACN,CAAC,CAAC;EAC3B,MAAMmB,EAAE,GAAGb,aAAa,CAACd,CAAC,CAAC;EAC3B,IAAI,CAAC0B,EAAE,IAAI,CAACC,EAAE,EAAE,OAAOF,QAAQ;EAC/B,OAAOf,KAAK,CAACH,MAAM,CAACmB,EAAE,EAAEC,EAAE,EAAElB,CAAC,CAAC,CAAC;AACnC;AAEA,SAASmB,mBAAmBA,CAACC,KAAa,EAAU;EAChD,MAAMC,CAAC,GAAGhB,aAAa,CAACe,KAAK,CAAC;EAC9B,IAAIC,CAAC,EAAE,OAAOR,IAAI,CAACQ,CAAC,EAAE,IAAI,CAAC;EAC3B,OAAO,2BAA2B;AACtC;AAEA,OAAO,SAASC,2BAA2BA,CACvChB,KAAoC,EAChB;EACpB,MAAMiB,SAAS,GACXlB,aAAa,CAACC,KAAK,EAAEkB,MAAM,CAAC,IAAInB,aAAa,CAACvB,UAAU,CAAC,IAAI;IAAEO,CAAC,EAAE,EAAE;IAAEC,CAAC,EAAE,GAAG;IAAEC,CAAC,EAAE;EAAI,CAAC;EAE1F,MAAMkC,UAAU,GACZ,OAAOnB,KAAK,EAAEoB,aAAa,KAAK,QAAQ,IAAIpB,KAAK,CAACoB,aAAa,CAAClB,IAAI,CAAC,CAAC,GAChEF,KAAK,CAACoB,aAAa,CAAClB,IAAI,CAAC,CAAC,GAC1BzB,UAAU;EACpB,MAAM4C,UAAU,GACZ,OAAOrB,KAAK,EAAEsB,aAAa,KAAK,QAAQ,IAAItB,KAAK,CAACsB,aAAa,CAACpB,IAAI,CAAC,CAAC,GAChEF,KAAK,CAACsB,aAAa,CAACpB,IAAI,CAAC,CAAC,GAC1BxB,UAAU;EACpB,MAAMoC,KAAK,GACP,OAAOd,KAAK,EAAEuB,QAAQ,KAAK,QAAQ,IAAIvB,KAAK,CAACuB,QAAQ,CAACrB,IAAI,CAAC,CAAC,GACtDF,KAAK,CAACuB,QAAQ,CAACrB,IAAI,CAAC,CAAC,GACrBvB,aAAa;EAEvB,MAAM6C,MAAM,GAAGf,WAAW,CAACY,UAAU,EAAEP,KAAK,EAAE,IAAI,EAAElC,cAAc,CAAC;EACnE,MAAM6C,OAAO,GAAGhB,WAAW,CAACY,UAAU,EAAEP,KAAK,EAAE,GAAG,EAAEjC,eAAe,CAAC;EACpE,MAAM6C,OAAO,GAAGb,mBAAmB,CAACC,KAAK,CAAC;EAE1C,MAAMa,cAAc,GAAGhC,KAAK,CAACH,MAAM,CAACyB,SAAS,EAAEnC,SAAS,EAAE,IAAI,CAAC,CAAC;EAChE,MAAM8C,cAAc,GAAGrB,IAAI,CAACU,SAAS,EAAE,IAAI,CAAC;EAE5C,OAAO;IACHE,UAAU;IACVE,UAAU;IACVG,MAAM;IACNV,KAAK;IACLW,OAAO;IACPC,OAAO;IACPE,cAAc;IACdD,cAAc;IACdE,MAAM,EAAE;EACZ,CAAC;AACL","ignoreList":[]}