✨ 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
154 lines
3.1 KiB
JavaScript
154 lines
3.1 KiB
JavaScript
// Generated by LiveScript 1.6.0
|
|
var values, keys, pairsToObj, objToPairs, listsToObj, objToLists, empty, each, map, compact, filter, reject, partition, find;
|
|
values = function(object){
|
|
var i$, x, results$ = [];
|
|
for (i$ in object) {
|
|
x = object[i$];
|
|
results$.push(x);
|
|
}
|
|
return results$;
|
|
};
|
|
keys = function(object){
|
|
var x, results$ = [];
|
|
for (x in object) {
|
|
results$.push(x);
|
|
}
|
|
return results$;
|
|
};
|
|
pairsToObj = function(object){
|
|
var i$, len$, x, resultObj$ = {};
|
|
for (i$ = 0, len$ = object.length; i$ < len$; ++i$) {
|
|
x = object[i$];
|
|
resultObj$[x[0]] = x[1];
|
|
}
|
|
return resultObj$;
|
|
};
|
|
objToPairs = function(object){
|
|
var key, value, results$ = [];
|
|
for (key in object) {
|
|
value = object[key];
|
|
results$.push([key, value]);
|
|
}
|
|
return results$;
|
|
};
|
|
listsToObj = curry$(function(keys, values){
|
|
var i$, len$, i, key, resultObj$ = {};
|
|
for (i$ = 0, len$ = keys.length; i$ < len$; ++i$) {
|
|
i = i$;
|
|
key = keys[i$];
|
|
resultObj$[key] = values[i];
|
|
}
|
|
return resultObj$;
|
|
});
|
|
objToLists = function(object){
|
|
var keys, values, key, value;
|
|
keys = [];
|
|
values = [];
|
|
for (key in object) {
|
|
value = object[key];
|
|
keys.push(key);
|
|
values.push(value);
|
|
}
|
|
return [keys, values];
|
|
};
|
|
empty = function(object){
|
|
var x;
|
|
for (x in object) {
|
|
return false;
|
|
}
|
|
return true;
|
|
};
|
|
each = curry$(function(f, object){
|
|
var i$, x;
|
|
for (i$ in object) {
|
|
x = object[i$];
|
|
f(x);
|
|
}
|
|
return object;
|
|
});
|
|
map = curry$(function(f, object){
|
|
var k, x, resultObj$ = {};
|
|
for (k in object) {
|
|
x = object[k];
|
|
resultObj$[k] = f(x);
|
|
}
|
|
return resultObj$;
|
|
});
|
|
compact = function(object){
|
|
var k, x, resultObj$ = {};
|
|
for (k in object) {
|
|
x = object[k];
|
|
if (x) {
|
|
resultObj$[k] = x;
|
|
}
|
|
}
|
|
return resultObj$;
|
|
};
|
|
filter = curry$(function(f, object){
|
|
var k, x, resultObj$ = {};
|
|
for (k in object) {
|
|
x = object[k];
|
|
if (f(x)) {
|
|
resultObj$[k] = x;
|
|
}
|
|
}
|
|
return resultObj$;
|
|
});
|
|
reject = curry$(function(f, object){
|
|
var k, x, resultObj$ = {};
|
|
for (k in object) {
|
|
x = object[k];
|
|
if (!f(x)) {
|
|
resultObj$[k] = x;
|
|
}
|
|
}
|
|
return resultObj$;
|
|
});
|
|
partition = curry$(function(f, object){
|
|
var passed, failed, k, x;
|
|
passed = {};
|
|
failed = {};
|
|
for (k in object) {
|
|
x = object[k];
|
|
(f(x) ? passed : failed)[k] = x;
|
|
}
|
|
return [passed, failed];
|
|
});
|
|
find = curry$(function(f, object){
|
|
var i$, x;
|
|
for (i$ in object) {
|
|
x = object[i$];
|
|
if (f(x)) {
|
|
return x;
|
|
}
|
|
}
|
|
});
|
|
module.exports = {
|
|
values: values,
|
|
keys: keys,
|
|
pairsToObj: pairsToObj,
|
|
objToPairs: objToPairs,
|
|
listsToObj: listsToObj,
|
|
objToLists: objToLists,
|
|
empty: empty,
|
|
each: each,
|
|
map: map,
|
|
filter: filter,
|
|
compact: compact,
|
|
reject: reject,
|
|
partition: partition,
|
|
find: find
|
|
};
|
|
function curry$(f, bound){
|
|
var context,
|
|
_curry = function(args) {
|
|
return f.length > 1 ? function(){
|
|
var params = args ? args.concat() : [];
|
|
context = bound ? context || this : this;
|
|
return params.push.apply(params, arguments) <
|
|
f.length && arguments.length ?
|
|
_curry.call(context, params) : f.apply(context, params);
|
|
} : f;
|
|
};
|
|
return _curry();
|
|
} |