Skip to content

Commit ffce538

Browse files
committed
Web Influx proxy, classic dashboard cleanup, and desktop tab inset
- Add optional EXPO_PUBLIC_INFLUX_WEB_PROXY for CORS-safe web Influx queries; encode org in query URL - Document proxy in .env.example; GitHub Pages workflow passes EXPO_PUBLIC_INFLUX_WEB_PROXY secret - Add wrangler.toml, scripts/influx-web-proxy.worker.example.js, and wrangler devDependency with cf:* npm scripts - Classic dashboard: remove sidebar and Home/Settings; restore HStack layout for grid + graphs; harden FaultsView and extend data-constants - Rebuild and sync public/classic-dashboard bundle; withExpoWebPublicPath for iframe under base path in dev - Web tabs: paddingLeft on scenes when vertical sidebar so Classic iframe is not covered - Telemetry/influx constants and related scripts; expoWebBasePath helper updates Made-with: Cursor
1 parent c9ba2a6 commit ffce538

113 files changed

Lines changed: 2751 additions & 1640 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.env.example

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -23,12 +23,14 @@ EXPO_PUBLIC_INFLUX_ORG=307f8812c3d9b017
2323
# Bucket name where telemetry data is written
2424
EXPO_PUBLIC_INFLUX_BUCKET=sc2-telemetry
2525

26+
# Web only: CORS-safe proxy base URL (no trailing slash). Browsers block direct calls to Influx Cloud;
27+
# native apps ignore this and use EXPO_PUBLIC_INFLUX_URL. Deploy scripts/influx-web-proxy.worker.example.js
28+
# (e.g. Cloudflare Worker) and point this at the worker origin.
29+
# EXPO_PUBLIC_INFLUX_WEB_PROXY=https://your-influx-proxy.workers.dev
30+
2631
# GitHub Pages project sites are served at https://<org>.github.io/<repo>/
2732
# Set this when building for that URL so JS/CSS load (CI sets it automatically).
2833
# EXPO_PUBLIC_BASE_PATH=/sc2-mobile-app
2934

3035
# ── Mapbox (optional — for map features) ─────────────────────────────────────
3136
MAPBOX_ACCESS_TOKEN=pk.your_mapbox_token_here
32-
33-
# Clerk Authentication
34-
EXPO_PUBLIC_CLERK_PUBLISHABLE_KEY=pk_test_your_clerk_publishable_key_here

.github/workflows/deploy-pages.yml

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,9 @@
44
# 1. Settings → Pages → Build and deployment → Source: "GitHub Actions".
55
# 2. Settings → Secrets and variables → Actions → New repository secret:
66
# - EXPO_PUBLIC_INFLUX_URL, EXPO_PUBLIC_INFLUX_TOKEN, EXPO_PUBLIC_INFLUX_ORG,
7-
# EXPO_PUBLIC_INFLUX_BUCKET (same values as local .env).
7+
# EXPO_PUBLIC_INFLUX_BUCKET (same values as local .env). The app queries measurement
8+
# sc2-telemetry (see src/constants/influxTelemetry.js); writers must use that name.
9+
# - EXPO_PUBLIC_INFLUX_WEB_PROXY (optional): CORS proxy URL for web; see scripts/influx-web-proxy.worker.example.js.
810
# - EXPO_PUBLIC_CLERK_PUBLISHABLE_KEY (if the app needs it at build time).
911
# - MAPBOX_ACCESS_TOKEN (optional; also in app.config extra).
1012
# 3. Clerk Dashboard → Native applications → allowlist SSO redirect URLs, e.g.
@@ -64,6 +66,7 @@ jobs:
6466
EXPO_PUBLIC_INFLUX_TOKEN: ${{ secrets.EXPO_PUBLIC_INFLUX_TOKEN }}
6567
EXPO_PUBLIC_INFLUX_ORG: ${{ secrets.EXPO_PUBLIC_INFLUX_ORG }}
6668
EXPO_PUBLIC_INFLUX_BUCKET: ${{ secrets.EXPO_PUBLIC_INFLUX_BUCKET }}
69+
EXPO_PUBLIC_INFLUX_WEB_PROXY: ${{ secrets.EXPO_PUBLIC_INFLUX_WEB_PROXY }}
6770
EXPO_PUBLIC_CLERK_PUBLISHABLE_KEY: ${{ secrets.EXPO_PUBLIC_CLERK_PUBLISHABLE_KEY }}
6871
MAPBOX_ACCESS_TOKEN: ${{ secrets.MAPBOX_ACCESS_TOKEN }}
6972
run: |

app/(tabs)/_layout.js

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,9 @@ export default function TabLayout() {
2323
const isWebInfotainment = Platform.OS === 'web' && deviceType.isInfotainmentMode;
2424
const isWebInfotainmentWithMap = isWebInfotainment && showInfotainmentMap;
2525

26+
// Classic dashboard + Account tab: large / infotainment only. Settings stays on the bar for phones & narrow web.
27+
const showInfotainmentExtraTabs = deviceType.isInfotainmentMode;
28+
2629
// Web uses standard Expo Router Tabs to avoid NativeTabs icon rasterization errors.
2730
if (Platform.OS === 'web') {
2831
const isDesktopSidebar = deviceType.isInfotainmentMode;
@@ -151,6 +154,8 @@ export default function TabLayout() {
151154
? {
152155
paddingBottom: 0,
153156
marginBottom: 0,
157+
// Tab bar is position absolute, width 56 — inset scenes so content (e.g. Classic iframe) is not covered
158+
paddingLeft: 56,
154159
}
155160
: undefined,
156161
tabBarActiveTintColor: '#C9302C',
@@ -220,6 +225,7 @@ export default function TabLayout() {
220225
name="classic-dashboard"
221226
options={{
222227
title: 'Classic',
228+
href: showInfotainmentExtraTabs ? undefined : null,
223229
tabBarIcon: ({ color, size }) => <Ionicons name="speedometer-outline" size={isDesktopSidebar ? 22 : size} color={color} />,
224230
}}
225231
/>
@@ -241,6 +247,7 @@ export default function TabLayout() {
241247
name="account"
242248
options={{
243249
title: 'Account',
250+
href: showInfotainmentExtraTabs ? undefined : null,
244251
tabBarItemStyle: isDesktopSidebar ? { marginTop: 'auto' } : undefined,
245252
tabBarIcon: ({ color, size }) =>
246253
user?.imageUrl ? (
@@ -310,7 +317,7 @@ export default function TabLayout() {
310317
})}
311318
</NativeTabs.Trigger>
312319

313-
<NativeTabs.Trigger name="classic-dashboard">
320+
<NativeTabs.Trigger name="classic-dashboard" hidden={!showInfotainmentExtraTabs}>
314321
<Label>Classic</Label>
315322
{Platform.select({
316323
ios: <Icon sf={{ default: 'speedometer', selected: 'speedometer' }} />,
@@ -334,7 +341,7 @@ export default function TabLayout() {
334341
})}
335342
</NativeTabs.Trigger>
336343

337-
<NativeTabs.Trigger name="account">
344+
<NativeTabs.Trigger name="account" hidden={!showInfotainmentExtraTabs}>
338345
<Label>Account</Label>
339346
{Platform.select({
340347
ios: <Icon sf={{ default: 'person.circle', selected: 'person.circle.fill' }} />,

app/account-settings.js

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -139,6 +139,21 @@ export default function AccountSettingsScreen() {
139139
) : null}
140140
</View>
141141

142+
<View style={[styles.appSettingsCard, { backgroundColor: theme.colors.card, borderColor: theme.colors.border }]}>
143+
<Text style={[styles.sectionTitle, { color: theme.colors.text }]}>App</Text>
144+
<Text style={[styles.subtitle, { color: theme.colors.muted, marginBottom: 10 }]}>
145+
Quick link to the Settings tab (telemetry, theme, units). On phones the Account tab is hidden; open Account Settings from Settings → Account Settings.
146+
</Text>
147+
<TouchableOpacity
148+
onPress={() => router.push('/profile')}
149+
style={[styles.appSettingsBtn, { borderColor: theme.colors.border, backgroundColor: theme.colors.background }]}
150+
>
151+
<Ionicons name="settings-outline" size={18} color={theme.colors.primary} />
152+
<Text style={[styles.appSettingsBtnText, { color: theme.colors.text }]}>Open Settings tab</Text>
153+
<Ionicons name="chevron-forward" size={18} color={theme.colors.muted} style={styles.appSettingsChevron} />
154+
</TouchableOpacity>
155+
</View>
156+
142157
{!user ? (
143158
<View style={[styles.card, { backgroundColor: theme.colors.card }]}>
144159
<Text style={[styles.emptyText, { color: theme.colors.muted }]}>You are not signed in.</Text>
@@ -350,4 +365,27 @@ const styles = StyleSheet.create({
350365
fontFamily: 'D-DIN-Bold',
351366
fontSize: 13,
352367
},
368+
appSettingsCard: {
369+
borderRadius: 12,
370+
borderWidth: 1,
371+
padding: 14,
372+
marginBottom: 16,
373+
},
374+
appSettingsBtn: {
375+
flexDirection: 'row',
376+
alignItems: 'center',
377+
borderWidth: 1,
378+
borderRadius: 10,
379+
paddingVertical: 12,
380+
paddingHorizontal: 12,
381+
},
382+
appSettingsBtnText: {
383+
flex: 1,
384+
marginLeft: 10,
385+
fontFamily: 'D-DIN-Bold',
386+
fontSize: 14,
387+
},
388+
appSettingsChevron: {
389+
marginLeft: 8,
390+
},
353391
});

babel.config.js

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,7 @@
1+
// Load .env before Babel inlines EXPO_PUBLIC_* into the bundle. Without this, a stale Metro
2+
// cache or load order can leave Clerk on a placeholder key even when .env is correct.
3+
require('dotenv').config({ path: require('path').join(__dirname, '.env'), quiet: true });
4+
15
module.exports = function (api) {
26
api.cache(true);
37
return {
Lines changed: 29 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -1,33 +1,33 @@
11
{
22
"files": {
3-
"main.css": "./static/css/main.6dea0f05.chunk.css",
4-
"main.js": "./static/js/main.ce6c6fe4.chunk.js",
5-
"main.js.map": "./static/js/main.ce6c6fe4.chunk.js.map",
6-
"runtime-main.js": "./static/js/runtime-main.187e9d01.js",
7-
"runtime-main.js.map": "./static/js/runtime-main.187e9d01.js.map",
3+
"main.css": "./static/css/main.2ae47eeb.chunk.css",
4+
"main.js": "./static/js/main.490b1527.chunk.js",
5+
"main.js.map": "./static/js/main.490b1527.chunk.js.map",
6+
"runtime-main.js": "./static/js/runtime-main.0b7785a0.js",
7+
"runtime-main.js.map": "./static/js/runtime-main.0b7785a0.js.map",
88
"static/css/2.f4c56af9.chunk.css": "./static/css/2.f4c56af9.chunk.css",
9-
"static/js/2.3fc7ebd9.chunk.js": "./static/js/2.3fc7ebd9.chunk.js",
10-
"static/js/2.3fc7ebd9.chunk.js.map": "./static/js/2.3fc7ebd9.chunk.js.map",
11-
"static/js/3.73299e68.chunk.js": "./static/js/3.73299e68.chunk.js",
12-
"static/js/3.73299e68.chunk.js.map": "./static/js/3.73299e68.chunk.js.map",
13-
"static/js/4.cde8783f.chunk.js": "./static/js/4.cde8783f.chunk.js",
14-
"static/js/4.cde8783f.chunk.js.map": "./static/js/4.cde8783f.chunk.js.map",
15-
"static/js/5.872c44af.chunk.js": "./static/js/5.872c44af.chunk.js",
16-
"static/js/5.872c44af.chunk.js.map": "./static/js/5.872c44af.chunk.js.map",
17-
"static/js/6.40610ea1.chunk.js": "./static/js/6.40610ea1.chunk.js",
18-
"static/js/6.40610ea1.chunk.js.map": "./static/js/6.40610ea1.chunk.js.map",
19-
"static/js/7.957cc246.chunk.js": "./static/js/7.957cc246.chunk.js",
20-
"static/js/7.957cc246.chunk.js.map": "./static/js/7.957cc246.chunk.js.map",
21-
"static/js/8.1a410c4b.chunk.js": "./static/js/8.1a410c4b.chunk.js",
22-
"static/js/8.1a410c4b.chunk.js.map": "./static/js/8.1a410c4b.chunk.js.map",
23-
"static/js/9.c7ef4621.chunk.js": "./static/js/9.c7ef4621.chunk.js",
24-
"static/js/9.c7ef4621.chunk.js.map": "./static/js/9.c7ef4621.chunk.js.map",
25-
"static/js/10.af732696.chunk.js": "./static/js/10.af732696.chunk.js",
26-
"static/js/10.af732696.chunk.js.map": "./static/js/10.af732696.chunk.js.map",
9+
"static/js/2.bf1f622e.chunk.js": "./static/js/2.bf1f622e.chunk.js",
10+
"static/js/2.bf1f622e.chunk.js.map": "./static/js/2.bf1f622e.chunk.js.map",
11+
"static/js/3.5b1da16d.chunk.js": "./static/js/3.5b1da16d.chunk.js",
12+
"static/js/3.5b1da16d.chunk.js.map": "./static/js/3.5b1da16d.chunk.js.map",
13+
"static/js/4.2f340a22.chunk.js": "./static/js/4.2f340a22.chunk.js",
14+
"static/js/4.2f340a22.chunk.js.map": "./static/js/4.2f340a22.chunk.js.map",
15+
"static/js/5.748631ed.chunk.js": "./static/js/5.748631ed.chunk.js",
16+
"static/js/5.748631ed.chunk.js.map": "./static/js/5.748631ed.chunk.js.map",
17+
"static/js/6.cbbad1a5.chunk.js": "./static/js/6.cbbad1a5.chunk.js",
18+
"static/js/6.cbbad1a5.chunk.js.map": "./static/js/6.cbbad1a5.chunk.js.map",
19+
"static/js/7.28689cba.chunk.js": "./static/js/7.28689cba.chunk.js",
20+
"static/js/7.28689cba.chunk.js.map": "./static/js/7.28689cba.chunk.js.map",
21+
"static/js/8.f83cf0a3.chunk.js": "./static/js/8.f83cf0a3.chunk.js",
22+
"static/js/8.f83cf0a3.chunk.js.map": "./static/js/8.f83cf0a3.chunk.js.map",
23+
"static/js/9.41676568.chunk.js": "./static/js/9.41676568.chunk.js",
24+
"static/js/9.41676568.chunk.js.map": "./static/js/9.41676568.chunk.js.map",
25+
"static/js/10.a9424c8e.chunk.js": "./static/js/10.a9424c8e.chunk.js",
26+
"static/js/10.a9424c8e.chunk.js.map": "./static/js/10.a9424c8e.chunk.js.map",
2727
"index.html": "./index.html",
2828
"static/css/2.f4c56af9.chunk.css.map": "./static/css/2.f4c56af9.chunk.css.map",
29-
"static/css/main.6dea0f05.chunk.css.map": "./static/css/main.6dea0f05.chunk.css.map",
30-
"static/js/2.3fc7ebd9.chunk.js.LICENSE.txt": "./static/js/2.3fc7ebd9.chunk.js.LICENSE.txt",
29+
"static/css/main.2ae47eeb.chunk.css.map": "./static/css/main.2ae47eeb.chunk.css.map",
30+
"static/js/2.bf1f622e.chunk.js.LICENSE.txt": "./static/js/2.bf1f622e.chunk.js.LICENSE.txt",
3131
"static/media/Brake Status Dark.bb26f9b9.png": "./static/media/Brake Status Dark.bb26f9b9.png",
3232
"static/media/Brake Status Light.ffb5ad70.png": "./static/media/Brake Status Light.ffb5ad70.png",
3333
"static/media/Cruise Dark.e86ea0ee.png": "./static/media/Cruise Dark.e86ea0ee.png",
@@ -47,10 +47,10 @@
4747
"static/media/Right Turn Light.49d13366.png": "./static/media/Right Turn Light.49d13366.png"
4848
},
4949
"entrypoints": [
50-
"static/js/runtime-main.187e9d01.js",
50+
"static/js/runtime-main.0b7785a0.js",
5151
"static/css/2.f4c56af9.chunk.css",
52-
"static/js/2.3fc7ebd9.chunk.js",
53-
"static/css/main.6dea0f05.chunk.css",
54-
"static/js/main.ce6c6fe4.chunk.js"
52+
"static/js/2.bf1f622e.chunk.js",
53+
"static/css/main.2ae47eeb.chunk.css",
54+
"static/js/main.490b1527.chunk.js"
5555
]
5656
}

classic-dashboard/build/index.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
<!doctype html><html lang="en"><head><meta charset="utf-8"/><link rel="icon" href="./favicon.ico"/><meta name="viewport" content="width=device-width,initial-scale=1"/><meta name="theme-color" content="#000000"/><meta name="description" content="Web site created using create-react-server"/><link rel="apple-touch-icon" href="./favicon.ico"/><link rel="manifest" href="./manifest.json"/><title>Chase Car Dashboard</title><link href="./static/css/2.f4c56af9.chunk.css" rel="stylesheet"><link href="./static/css/main.6dea0f05.chunk.css" rel="stylesheet"></head><body><noscript>You need to enable JavaScript to run this server.</noscript><div id="root"></div><script>!function(e){function r(r){for(var n,u,c=r[0],i=r[1],f=r[2],s=0,p=[];s<c.length;s++)u=c[s],Object.prototype.hasOwnProperty.call(o,u)&&o[u]&&p.push(o[u][0]),o[u]=0;for(n in i)Object.prototype.hasOwnProperty.call(i,n)&&(e[n]=i[n]);for(l&&l(r);p.length;)p.shift()();return a.push.apply(a,f||[]),t()}function t(){for(var e,r=0;r<a.length;r++){for(var t=a[r],n=!0,c=1;c<t.length;c++){var i=t[c];0!==o[i]&&(n=!1)}n&&(a.splice(r--,1),e=u(u.s=t[0]))}return e}var n={},o={1:0},a=[];function u(r){if(n[r])return n[r].exports;var t=n[r]={i:r,l:!1,exports:{}};return e[r].call(t.exports,t,t.exports,u),t.l=!0,t.exports}u.e=function(e){var r=[],t=o[e];if(0!==t)if(t)r.push(t[2]);else{var n=new Promise((function(r,n){t=o[e]=[r,n]}));r.push(t[2]=n);var a,c=document.createElement("script");c.charset="utf-8",c.timeout=120,u.nc&&c.setAttribute("nonce",u.nc),c.src=function(e){return u.p+"static/js/"+({}[e]||e)+"."+{3:"73299e68",4:"cde8783f",5:"872c44af",6:"40610ea1",7:"957cc246",8:"1a410c4b",9:"c7ef4621",10:"af732696"}[e]+".chunk.js"}(e);var i=new Error;a=function(r){c.onerror=c.onload=null,clearTimeout(f);var t=o[e];if(0!==t){if(t){var n=r&&("load"===r.type?"missing":r.type),a=r&&r.target&&r.target.src;i.message="Loading chunk "+e+" failed.\n("+n+": "+a+")",i.name="ChunkLoadError",i.type=n,i.request=a,t[1](i)}o[e]=void 0}};var f=setTimeout((function(){a({type:"timeout",target:c})}),12e4);c.onerror=c.onload=a,document.head.appendChild(c)}return Promise.all(r)},u.m=e,u.c=n,u.d=function(e,r,t){u.o(e,r)||Object.defineProperty(e,r,{enumerable:!0,get:t})},u.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},u.t=function(e,r){if(1&r&&(e=u(e)),8&r)return e;if(4&r&&"object"==typeof e&&e&&e.__esModule)return e;var t=Object.create(null);if(u.r(t),Object.defineProperty(t,"default",{enumerable:!0,value:e}),2&r&&"string"!=typeof e)for(var n in e)u.d(t,n,function(r){return e[r]}.bind(null,n));return t},u.n=function(e){var r=e&&e.__esModule?function(){return e.default}:function(){return e};return u.d(r,"a",r),r},u.o=function(e,r){return Object.prototype.hasOwnProperty.call(e,r)},u.p="./",u.oe=function(e){throw console.error(e),e};var c=this["webpackJsonpchase-car-dashboard-frontend"]=this["webpackJsonpchase-car-dashboard-frontend"]||[],i=c.push.bind(c);c.push=r,c=c.slice();for(var f=0;f<c.length;f++)r(c[f]);var l=i;t()}([])</script><script src="./static/js/2.3fc7ebd9.chunk.js"></script><script src="./static/js/main.ce6c6fe4.chunk.js"></script></body></html>
1+
<!doctype html><html lang="en"><head><meta charset="utf-8"/><link rel="icon" href="./favicon.ico"/><meta name="viewport" content="width=device-width,initial-scale=1"/><meta name="theme-color" content="#000000"/><meta name="description" content="Web site created using create-react-server"/><link rel="apple-touch-icon" href="./favicon.ico"/><link rel="manifest" href="./manifest.json"/><title>Chase Car Dashboard</title><link href="./static/css/2.f4c56af9.chunk.css" rel="stylesheet"><link href="./static/css/main.2ae47eeb.chunk.css" rel="stylesheet"></head><body><noscript>You need to enable JavaScript to run this server.</noscript><div id="root"></div><script>!function(e){function r(r){for(var n,u,c=r[0],i=r[1],f=r[2],s=0,p=[];s<c.length;s++)u=c[s],Object.prototype.hasOwnProperty.call(o,u)&&o[u]&&p.push(o[u][0]),o[u]=0;for(n in i)Object.prototype.hasOwnProperty.call(i,n)&&(e[n]=i[n]);for(l&&l(r);p.length;)p.shift()();return a.push.apply(a,f||[]),t()}function t(){for(var e,r=0;r<a.length;r++){for(var t=a[r],n=!0,c=1;c<t.length;c++){var i=t[c];0!==o[i]&&(n=!1)}n&&(a.splice(r--,1),e=u(u.s=t[0]))}return e}var n={},o={1:0},a=[];function u(r){if(n[r])return n[r].exports;var t=n[r]={i:r,l:!1,exports:{}};return e[r].call(t.exports,t,t.exports,u),t.l=!0,t.exports}u.e=function(e){var r=[],t=o[e];if(0!==t)if(t)r.push(t[2]);else{var n=new Promise((function(r,n){t=o[e]=[r,n]}));r.push(t[2]=n);var a,c=document.createElement("script");c.charset="utf-8",c.timeout=120,u.nc&&c.setAttribute("nonce",u.nc),c.src=function(e){return u.p+"static/js/"+({}[e]||e)+"."+{3:"5b1da16d",4:"2f340a22",5:"748631ed",6:"cbbad1a5",7:"28689cba",8:"f83cf0a3",9:"41676568",10:"a9424c8e"}[e]+".chunk.js"}(e);var i=new Error;a=function(r){c.onerror=c.onload=null,clearTimeout(f);var t=o[e];if(0!==t){if(t){var n=r&&("load"===r.type?"missing":r.type),a=r&&r.target&&r.target.src;i.message="Loading chunk "+e+" failed.\n("+n+": "+a+")",i.name="ChunkLoadError",i.type=n,i.request=a,t[1](i)}o[e]=void 0}};var f=setTimeout((function(){a({type:"timeout",target:c})}),12e4);c.onerror=c.onload=a,document.head.appendChild(c)}return Promise.all(r)},u.m=e,u.c=n,u.d=function(e,r,t){u.o(e,r)||Object.defineProperty(e,r,{enumerable:!0,get:t})},u.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},u.t=function(e,r){if(1&r&&(e=u(e)),8&r)return e;if(4&r&&"object"==typeof e&&e&&e.__esModule)return e;var t=Object.create(null);if(u.r(t),Object.defineProperty(t,"default",{enumerable:!0,value:e}),2&r&&"string"!=typeof e)for(var n in e)u.d(t,n,function(r){return e[r]}.bind(null,n));return t},u.n=function(e){var r=e&&e.__esModule?function(){return e.default}:function(){return e};return u.d(r,"a",r),r},u.o=function(e,r){return Object.prototype.hasOwnProperty.call(e,r)},u.p="./",u.oe=function(e){throw console.error(e),e};var c=this["webpackJsonpchase-car-dashboard-frontend"]=this["webpackJsonpchase-car-dashboard-frontend"]||[],i=c.push.bind(c);c.push=r,c=c.slice();for(var f=0;f<c.length;f++)r(c[f]);var l=i;t()}([])</script><script src="./static/js/2.bf1f622e.chunk.js"></script><script src="./static/js/main.490b1527.chunk.js"></script></body></html>

classic-dashboard/build/static/css/main.6dea0f05.chunk.css renamed to classic-dashboard/build/static/css/main.2ae47eeb.chunk.css

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

classic-dashboard/build/static/css/main.2ae47eeb.chunk.css.map

Lines changed: 1 addition & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

classic-dashboard/build/static/css/main.6dea0f05.chunk.css.map

Lines changed: 0 additions & 1 deletion
This file was deleted.

0 commit comments

Comments
 (0)