Files
Laca-City/frontend/node_modules/react-query/es/broadcastQueryClient-experimental/index.js
PhongPham c65cc97a33 🎯 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
2025-07-20 19:52:16 +07:00

80 lines
2.1 KiB
JavaScript

import { BroadcastChannel } from 'broadcast-channel';
export function broadcastQueryClient(_ref) {
var queryClient = _ref.queryClient,
_ref$broadcastChannel = _ref.broadcastChannel,
broadcastChannel = _ref$broadcastChannel === void 0 ? 'react-query' : _ref$broadcastChannel;
var transaction = false;
var tx = function tx(cb) {
transaction = true;
cb();
transaction = false;
};
var channel = new BroadcastChannel(broadcastChannel, {
webWorkerSupport: false
});
var queryCache = queryClient.getQueryCache();
queryClient.getQueryCache().subscribe(function (queryEvent) {
var _queryEvent$action;
if (transaction || !(queryEvent == null ? void 0 : queryEvent.query)) {
return;
}
var _queryEvent$query = queryEvent.query,
queryHash = _queryEvent$query.queryHash,
queryKey = _queryEvent$query.queryKey,
state = _queryEvent$query.state;
if (queryEvent.type === 'queryUpdated' && ((_queryEvent$action = queryEvent.action) == null ? void 0 : _queryEvent$action.type) === 'success') {
channel.postMessage({
type: 'queryUpdated',
queryHash: queryHash,
queryKey: queryKey,
state: state
});
}
if (queryEvent.type === 'queryRemoved') {
channel.postMessage({
type: 'queryRemoved',
queryHash: queryHash,
queryKey: queryKey
});
}
});
channel.onmessage = function (action) {
if (!(action == null ? void 0 : action.type)) {
return;
}
tx(function () {
var type = action.type,
queryHash = action.queryHash,
queryKey = action.queryKey,
state = action.state;
if (type === 'queryUpdated') {
var query = queryCache.get(queryHash);
if (query) {
query.setState(state);
return;
}
queryCache.build(queryClient, {
queryKey: queryKey,
queryHash: queryHash
}, state);
} else if (type === 'queryRemoved') {
var _query = queryCache.get(queryHash);
if (_query) {
queryCache.remove(_query);
}
}
});
};
}