🎯 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

View File

@@ -0,0 +1,2 @@
export {};
//# sourceMappingURL=ValidationSchema.js.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"ValidationSchema.js","sourceRoot":"","sources":["../../../src/validation-schema/ValidationSchema.ts"],"names":[],"mappings":"","sourcesContent":["/**\n * Validation schema is a decorator-free way of validation of your objects.\n * Also using validation schemas makes this library to be easily used with es6/es5.\n */\nexport interface ValidationSchema {\n /**\n * Schema name. This is required, because we tell validator to validate by this schema using its name.\n */\n name: string;\n\n /**\n * Validated properties.\n */\n properties: {\n /**\n * Name of the object's property to be validated which holds an array of validation constraints.\n */\n [propertyName: string]: {\n /**\n * Validation type. Should be one of the ValidationTypes value.\n */\n type: string;\n\n /**\n * Validator name.\n */\n name?: string;\n\n /**\n * Constraints set by validation type.\n */\n constraints?: any[];\n\n /**\n * Error message used to be used on validation fail.\n * You can use \"$value\" to use value that was failed by validation.\n * You can use \"$constraint1\" and \"$constraint2\" keys in the message string,\n * and they will be replaced with constraint values if they exist.\n * Message can be either string, either a function that returns a string.\n * Second option allows to use values and custom messages depend of them.\n */\n message?: string | ((value?: any, constraint1?: any, constraint2?: any) => string);\n\n /**\n * Specifies if validated value is an array and each of its item must be validated.\n */\n each?: boolean;\n\n /**\n * Indicates if validation must be performed always, no matter of validation groups used.\n */\n always?: boolean;\n\n /**\n * Validation groups used for this validation.\n */\n groups?: string[];\n\n /**\n * Specific validation type options.\n */\n options?: any;\n }[];\n };\n}\n"]}

View File

@@ -0,0 +1,35 @@
import { ValidationMetadata } from '../metadata/ValidationMetadata';
/**
* Used to transform validation schemas to validation metadatas.
*/
var ValidationSchemaToMetadataTransformer = /** @class */ (function () {
function ValidationSchemaToMetadataTransformer() {
}
ValidationSchemaToMetadataTransformer.prototype.transform = function (schema) {
var metadatas = [];
Object.keys(schema.properties).forEach(function (property) {
schema.properties[property].forEach(function (validation) {
var validationOptions = {
message: validation.message,
groups: validation.groups,
always: validation.always,
each: validation.each,
};
var args = {
type: validation.type,
name: validation.name,
target: schema.name,
propertyName: property,
constraints: validation.constraints,
validationTypeOptions: validation.options,
validationOptions: validationOptions,
};
metadatas.push(new ValidationMetadata(args));
});
});
return metadatas;
};
return ValidationSchemaToMetadataTransformer;
}());
export { ValidationSchemaToMetadataTransformer };
//# sourceMappingURL=ValidationSchemaToMetadataTransformer.js.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"ValidationSchemaToMetadataTransformer.js","sourceRoot":"","sources":["../../../src/validation-schema/ValidationSchemaToMetadataTransformer.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,kBAAkB,EAAE,MAAM,gCAAgC,CAAC;AAIpE;;GAEG;AACH;IAAA;IAyBA,CAAC;IAxBC,yDAAS,GAAT,UAAU,MAAwB;QAChC,IAAM,SAAS,GAAyB,EAAE,CAAC;QAC3C,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,OAAO,CAAC,UAAA,QAAQ;YAC7C,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,UAAA,UAAU;gBAC5C,IAAM,iBAAiB,GAAsB;oBAC3C,OAAO,EAAE,UAAU,CAAC,OAAO;oBAC3B,MAAM,EAAE,UAAU,CAAC,MAAM;oBACzB,MAAM,EAAE,UAAU,CAAC,MAAM;oBACzB,IAAI,EAAE,UAAU,CAAC,IAAI;iBACtB,CAAC;gBACF,IAAM,IAAI,GAA2B;oBACnC,IAAI,EAAE,UAAU,CAAC,IAAI;oBACrB,IAAI,EAAE,UAAU,CAAC,IAAI;oBACrB,MAAM,EAAE,MAAM,CAAC,IAAI;oBACnB,YAAY,EAAE,QAAQ;oBACtB,WAAW,EAAE,UAAU,CAAC,WAAW;oBACnC,qBAAqB,EAAE,UAAU,CAAC,OAAO;oBACzC,iBAAiB,EAAE,iBAAiB;iBACrC,CAAC;gBACF,SAAS,CAAC,IAAI,CAAC,IAAI,kBAAkB,CAAC,IAAI,CAAC,CAAC,CAAC;YAC/C,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QACH,OAAO,SAAS,CAAC;IACnB,CAAC;IACH,4CAAC;AAAD,CAAC,AAzBD,IAyBC","sourcesContent":["import { ValidationSchema } from './ValidationSchema';\nimport { ValidationMetadata } from '../metadata/ValidationMetadata';\nimport { ValidationMetadataArgs } from '../metadata/ValidationMetadataArgs';\nimport { ValidationOptions } from '../decorator/ValidationOptions';\n\n/**\n * Used to transform validation schemas to validation metadatas.\n */\nexport class ValidationSchemaToMetadataTransformer {\n transform(schema: ValidationSchema): ValidationMetadata[] {\n const metadatas: ValidationMetadata[] = [];\n Object.keys(schema.properties).forEach(property => {\n schema.properties[property].forEach(validation => {\n const validationOptions: ValidationOptions = {\n message: validation.message,\n groups: validation.groups,\n always: validation.always,\n each: validation.each,\n };\n const args: ValidationMetadataArgs = {\n type: validation.type,\n name: validation.name,\n target: schema.name,\n propertyName: property,\n constraints: validation.constraints,\n validationTypeOptions: validation.options,\n validationOptions: validationOptions,\n };\n metadatas.push(new ValidationMetadata(args));\n });\n });\n return metadatas;\n }\n}\n"]}