✨ 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
160 lines
4.9 KiB
JavaScript
160 lines
4.9 KiB
JavaScript
"use strict";
|
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
exports.NoticeMessage = exports.DataRowMessage = exports.CommandCompleteMessage = exports.ReadyForQueryMessage = exports.NotificationResponseMessage = exports.BackendKeyDataMessage = exports.AuthenticationMD5Password = exports.ParameterStatusMessage = exports.ParameterDescriptionMessage = exports.RowDescriptionMessage = exports.Field = exports.CopyResponse = exports.CopyDataMessage = exports.DatabaseError = exports.copyDone = exports.emptyQuery = exports.replicationStart = exports.portalSuspended = exports.noData = exports.closeComplete = exports.bindComplete = exports.parseComplete = void 0;
|
|
exports.parseComplete = {
|
|
name: 'parseComplete',
|
|
length: 5,
|
|
};
|
|
exports.bindComplete = {
|
|
name: 'bindComplete',
|
|
length: 5,
|
|
};
|
|
exports.closeComplete = {
|
|
name: 'closeComplete',
|
|
length: 5,
|
|
};
|
|
exports.noData = {
|
|
name: 'noData',
|
|
length: 5,
|
|
};
|
|
exports.portalSuspended = {
|
|
name: 'portalSuspended',
|
|
length: 5,
|
|
};
|
|
exports.replicationStart = {
|
|
name: 'replicationStart',
|
|
length: 4,
|
|
};
|
|
exports.emptyQuery = {
|
|
name: 'emptyQuery',
|
|
length: 4,
|
|
};
|
|
exports.copyDone = {
|
|
name: 'copyDone',
|
|
length: 4,
|
|
};
|
|
class DatabaseError extends Error {
|
|
constructor(message, length, name) {
|
|
super(message);
|
|
this.length = length;
|
|
this.name = name;
|
|
}
|
|
}
|
|
exports.DatabaseError = DatabaseError;
|
|
class CopyDataMessage {
|
|
constructor(length, chunk) {
|
|
this.length = length;
|
|
this.chunk = chunk;
|
|
this.name = 'copyData';
|
|
}
|
|
}
|
|
exports.CopyDataMessage = CopyDataMessage;
|
|
class CopyResponse {
|
|
constructor(length, name, binary, columnCount) {
|
|
this.length = length;
|
|
this.name = name;
|
|
this.binary = binary;
|
|
this.columnTypes = new Array(columnCount);
|
|
}
|
|
}
|
|
exports.CopyResponse = CopyResponse;
|
|
class Field {
|
|
constructor(name, tableID, columnID, dataTypeID, dataTypeSize, dataTypeModifier, format) {
|
|
this.name = name;
|
|
this.tableID = tableID;
|
|
this.columnID = columnID;
|
|
this.dataTypeID = dataTypeID;
|
|
this.dataTypeSize = dataTypeSize;
|
|
this.dataTypeModifier = dataTypeModifier;
|
|
this.format = format;
|
|
}
|
|
}
|
|
exports.Field = Field;
|
|
class RowDescriptionMessage {
|
|
constructor(length, fieldCount) {
|
|
this.length = length;
|
|
this.fieldCount = fieldCount;
|
|
this.name = 'rowDescription';
|
|
this.fields = new Array(this.fieldCount);
|
|
}
|
|
}
|
|
exports.RowDescriptionMessage = RowDescriptionMessage;
|
|
class ParameterDescriptionMessage {
|
|
constructor(length, parameterCount) {
|
|
this.length = length;
|
|
this.parameterCount = parameterCount;
|
|
this.name = 'parameterDescription';
|
|
this.dataTypeIDs = new Array(this.parameterCount);
|
|
}
|
|
}
|
|
exports.ParameterDescriptionMessage = ParameterDescriptionMessage;
|
|
class ParameterStatusMessage {
|
|
constructor(length, parameterName, parameterValue) {
|
|
this.length = length;
|
|
this.parameterName = parameterName;
|
|
this.parameterValue = parameterValue;
|
|
this.name = 'parameterStatus';
|
|
}
|
|
}
|
|
exports.ParameterStatusMessage = ParameterStatusMessage;
|
|
class AuthenticationMD5Password {
|
|
constructor(length, salt) {
|
|
this.length = length;
|
|
this.salt = salt;
|
|
this.name = 'authenticationMD5Password';
|
|
}
|
|
}
|
|
exports.AuthenticationMD5Password = AuthenticationMD5Password;
|
|
class BackendKeyDataMessage {
|
|
constructor(length, processID, secretKey) {
|
|
this.length = length;
|
|
this.processID = processID;
|
|
this.secretKey = secretKey;
|
|
this.name = 'backendKeyData';
|
|
}
|
|
}
|
|
exports.BackendKeyDataMessage = BackendKeyDataMessage;
|
|
class NotificationResponseMessage {
|
|
constructor(length, processId, channel, payload) {
|
|
this.length = length;
|
|
this.processId = processId;
|
|
this.channel = channel;
|
|
this.payload = payload;
|
|
this.name = 'notification';
|
|
}
|
|
}
|
|
exports.NotificationResponseMessage = NotificationResponseMessage;
|
|
class ReadyForQueryMessage {
|
|
constructor(length, status) {
|
|
this.length = length;
|
|
this.status = status;
|
|
this.name = 'readyForQuery';
|
|
}
|
|
}
|
|
exports.ReadyForQueryMessage = ReadyForQueryMessage;
|
|
class CommandCompleteMessage {
|
|
constructor(length, text) {
|
|
this.length = length;
|
|
this.text = text;
|
|
this.name = 'commandComplete';
|
|
}
|
|
}
|
|
exports.CommandCompleteMessage = CommandCompleteMessage;
|
|
class DataRowMessage {
|
|
constructor(length, fields) {
|
|
this.length = length;
|
|
this.fields = fields;
|
|
this.name = 'dataRow';
|
|
this.fieldCount = fields.length;
|
|
}
|
|
}
|
|
exports.DataRowMessage = DataRowMessage;
|
|
class NoticeMessage {
|
|
constructor(length, message) {
|
|
this.length = length;
|
|
this.message = message;
|
|
this.name = 'notice';
|
|
}
|
|
}
|
|
exports.NoticeMessage = NoticeMessage;
|
|
//# sourceMappingURL=messages.js.map
|