đŸŽ¯ MapView v2.0 - Global Deployment Ready

✨ MAJOR FEATURES:
â€ĸ Auto-zoom intelligence váģ›i smart bounds fitting
â€ĸ Enhanced 3D GPS markers váģ›i pulsing effects
â€ĸ Professional route display váģ›i 6-layer rendering
â€ĸ Status-based parking icons váģ›i availability indicators
â€ĸ Production-ready build optimizations

đŸ—ēī¸ AUTO-ZOOM FEATURES:
â€ĸ Smart bounds fitting cho GPS + selected parking
â€ĸ Adaptive padding (50px) cho visual balance
â€ĸ Max zoom control (level 16) đáģƒ trÃĄnh quÃĄ gáē§n
â€ĸ Dynamic centering khi không cÃŗ selection

🎨 ENHANCED VISUALS:
â€ĸ 3D GPS marker váģ›i multi-layer pulse effects
â€ĸ Advanced parking icons váģ›i status colors
â€ĸ Selection highlighting váģ›i animation
â€ĸ Dimming system cho non-selected items

đŸ›Ŗī¸ ROUTE SYSTEM:
â€ĸ OpenRouteService API integration
â€ĸ Multi-layer route rendering (glow, shadow, main, animated)
â€ĸ Real-time distance & duration calculation
â€ĸ Visual route info trong popup

📱 PRODUCTION READY:
â€ĸ SSR safe váģ›i dynamic imports
â€ĸ Build errors resolved
â€ĸ Global deployment via Vercel
â€ĸ Optimized performance

🌍 DEPLOYMENT:
â€ĸ Vercel: https://whatever-ctk2auuxr-phong12hexdockworks-projects.vercel.app
â€ĸ Bundle size: 22.8 kB optimized
â€ĸ Global CDN distribution
â€ĸ HTTPS enabled

💾 VERSION CONTROL:
â€ĸ MapView-v2.0.tsx backup created
â€ĸ MAPVIEW_VERSIONS.md documentation
â€ĸ Full version history tracking
This commit is contained in:
2025-07-20 19:52:16 +07:00
parent 3203463a6a
commit c65cc97a33
64624 changed files with 7199453 additions and 6462 deletions

81
backend/node_modules/dayjs/esm/locale/bn-bd.js generated vendored Normal file
View File

@@ -0,0 +1,81 @@
// Bengali (Bangladesh) [bn-bd]
import dayjs from '../index';
var symbolMap = {
1: 'ā§§',
2: '⧍',
3: 'ā§Š',
4: 'ā§Ē',
5: 'ā§Ģ',
6: 'ā§Ŧ',
7: 'ā§­',
8: 'ā§Ž',
9: '⧝',
0: 'ā§Ļ'
};
var numberMap = {
'ā§§': '1',
'⧍': '2',
'ā§Š': '3',
'ā§Ē': '4',
'ā§Ģ': '5',
'ā§Ŧ': '6',
'ā§­': '7',
'ā§Ž': '8',
'⧝': '9',
'ā§Ļ': '0'
};
var locale = {
name: 'bn-bd',
weekdays: 'āϰāĻŦāĻŋāĻŦāĻžāϰ_āϏ⧋āĻŽāĻŦāĻžāϰ_āĻŽāĻ™ā§āĻ—āϞāĻŦāĻžāϰ_āĻŦ⧁āϧāĻŦāĻžāϰ_āĻŦ⧃āĻšāĻ¸ā§āĻĒāϤāĻŋāĻŦāĻžāϰ_āĻļ⧁āĻ•ā§āϰāĻŦāĻžāϰ_āĻļāύāĻŋāĻŦāĻžāϰ'.split('_'),
months: 'āϜāĻžāύ⧁⧟āĻžāϰāĻŋ_āĻĢ⧇āĻŦā§āϰ⧁⧟āĻžāϰāĻŋ_āĻŽāĻžāĻ°ā§āϚ_āĻāĻĒā§āϰāĻŋāϞ_āĻŽā§‡_āϜ⧁āύ_āϜ⧁āϞāĻžāχ_āφāĻ—āĻ¸ā§āϟ_āϏ⧇āĻĒā§āĻŸā§‡āĻŽā§āĻŦāϰ_āĻ…āĻ•ā§āĻŸā§‹āĻŦāϰ_āύāϭ⧇āĻŽā§āĻŦāϰ_āĻĄāĻŋāϏ⧇āĻŽā§āĻŦāϰ'.split('_'),
weekdaysShort: 'āϰāĻŦāĻŋ_āϏ⧋āĻŽ_āĻŽāĻ™ā§āĻ—āϞ_āĻŦ⧁āϧ_āĻŦ⧃āĻšāĻ¸ā§āĻĒāϤāĻŋ_āĻļ⧁āĻ•ā§āϰ_āĻļāύāĻŋ'.split('_'),
monthsShort: 'āϜāĻžāύ⧁_āĻĢ⧇āĻŦā§āϰ⧁_āĻŽāĻžāĻ°ā§āϚ_āĻāĻĒā§āϰāĻŋāϞ_āĻŽā§‡_āϜ⧁āύ_āϜ⧁āϞāĻžāχ_āφāĻ—āĻ¸ā§āϟ_āϏ⧇āĻĒā§āϟ_āĻ…āĻ•ā§āĻŸā§‹_āύāϭ⧇_āĻĄāĻŋāϏ⧇'.split('_'),
weekdaysMin: 'āϰāĻŦāĻŋ_āϏ⧋āĻŽ_āĻŽāĻ™ā§āĻ—_āĻŦ⧁āϧ_āĻŦ⧃āĻšāσ_āĻļ⧁āĻ•ā§āϰ_āĻļāύāĻŋ'.split('_'),
weekStart: 0,
preparse: function preparse(string) {
return string.replace(/[ā§§ā§¨ā§Šā§Ēā§Ģā§Ŧā§­ā§Žā§¯ā§Ļ]/g, function (match) {
return numberMap[match];
});
},
postformat: function postformat(string) {
return string.replace(/\d/g, function (match) {
return symbolMap[match];
});
},
ordinal: function ordinal(n) {
var s = ['āχ', 'āϞāĻž', 'āϰāĻž', 'āĻ āĻž', 'āĻļ⧇'];
var v = n % 100;
return "[" + n + (s[(v - 20) % 10] || s[v] || s[0]) + "]";
},
formats: {
LT: 'A h:mm āϏāĻŽā§Ÿ',
LTS: 'A h:mm:ss āϏāĻŽā§Ÿ',
L: 'DD/MM/YYYY āĻ–ā§āϰāĻŋāĻ¸ā§āϟāĻžāĻŦā§āĻĻ',
LL: 'D MMMM YYYY āĻ–ā§āϰāĻŋāĻ¸ā§āϟāĻžāĻŦā§āĻĻ',
LLL: 'D MMMM YYYY āĻ–ā§āϰāĻŋāĻ¸ā§āϟāĻžāĻŦā§āĻĻ, A h:mm āϏāĻŽā§Ÿ',
LLLL: 'dddd, D MMMM YYYY āĻ–ā§āϰāĻŋāĻ¸ā§āϟāĻžāĻŦā§āĻĻ, A h:mm āϏāĻŽā§Ÿ'
},
meridiem: function meridiem(hour) {
return (
/* eslint-disable no-nested-ternary */
hour < 4 ? 'āϰāĻžāϤ' : hour < 6 ? 'āĻ­ā§‹āϰ' : hour < 12 ? 'āϏāĻ•āĻžāϞ' : hour < 15 ? 'āĻĻ⧁āĻĒ⧁āϰ' : hour < 18 ? 'āĻŦāĻŋāĻ•āĻžāϞ' : hour < 20 ? 'āϏāĻ¨ā§āĻ§ā§āϝāĻž' : 'āϰāĻžāϤ'
);
},
relativeTime: {
future: '%s āĻĒāϰ⧇',
past: '%s āφāϗ⧇',
s: 'āĻ•ā§Ÿā§‡āĻ• āϏ⧇āϕ⧇āĻ¨ā§āĻĄ',
m: 'āĻāĻ• āĻŽāĻŋāύāĻŋāϟ',
mm: '%d āĻŽāĻŋāύāĻŋāϟ',
h: 'āĻāĻ• āϘāĻ¨ā§āϟāĻž',
hh: '%d āϘāĻ¨ā§āϟāĻž',
d: 'āĻāĻ• āĻĻāĻŋāύ',
dd: '%d āĻĻāĻŋāύ',
M: 'āĻāĻ• āĻŽāĻžāϏ',
MM: '%d āĻŽāĻžāϏ',
y: 'āĻāĻ• āĻŦāĻ›āϰ',
yy: '%d āĻŦāĻ›āϰ'
}
};
dayjs.locale(locale, null, true);
export default locale;