✨ 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
57 lines
2.9 KiB
JavaScript
57 lines
2.9 KiB
JavaScript
/**
|
|
* Validation error description.
|
|
*/
|
|
var ValidationError = /** @class */ (function () {
|
|
function ValidationError() {
|
|
}
|
|
/**
|
|
*
|
|
* @param shouldDecorate decorate the message with ANSI formatter escape codes for better readability
|
|
* @param hasParent true when the error is a child of an another one
|
|
* @param parentPath path as string to the parent of this property
|
|
* @param showConstraintMessages show constraint messages instead of constraint names
|
|
*/
|
|
ValidationError.prototype.toString = function (shouldDecorate, hasParent, parentPath, showConstraintMessages) {
|
|
var _this = this;
|
|
if (shouldDecorate === void 0) { shouldDecorate = false; }
|
|
if (hasParent === void 0) { hasParent = false; }
|
|
if (parentPath === void 0) { parentPath = ""; }
|
|
if (showConstraintMessages === void 0) { showConstraintMessages = false; }
|
|
var boldStart = shouldDecorate ? "\u001B[1m" : "";
|
|
var boldEnd = shouldDecorate ? "\u001B[22m" : "";
|
|
var constraintsToString = function () { var _a; return (showConstraintMessages ? Object.values : Object.keys)((_a = _this.constraints) !== null && _a !== void 0 ? _a : {}).join(", "); };
|
|
var propConstraintFailed = function (propertyName) {
|
|
return " - property ".concat(boldStart).concat(parentPath).concat(propertyName).concat(boldEnd, " has failed the following constraints: ").concat(boldStart).concat(constraintsToString()).concat(boldEnd, " \n");
|
|
};
|
|
if (!hasParent) {
|
|
return ("An instance of ".concat(boldStart).concat(this.target ? this.target.constructor.name : 'an object').concat(boldEnd, " has failed the validation:\n") +
|
|
(this.constraints ? propConstraintFailed(this.property) : "") +
|
|
(this.children
|
|
? this.children
|
|
.map(function (childError) { return childError.toString(shouldDecorate, true, _this.property, showConstraintMessages); })
|
|
.join("")
|
|
: ""));
|
|
}
|
|
else {
|
|
// we format numbers as array indexes for better readability.
|
|
var formattedProperty_1 = Number.isInteger(+this.property)
|
|
? "[".concat(this.property, "]")
|
|
: "".concat(parentPath ? "." : "").concat(this.property);
|
|
if (this.constraints) {
|
|
return propConstraintFailed(formattedProperty_1);
|
|
}
|
|
else {
|
|
return this.children
|
|
? this.children
|
|
.map(function (childError) {
|
|
return childError.toString(shouldDecorate, true, "".concat(parentPath).concat(formattedProperty_1), showConstraintMessages);
|
|
})
|
|
.join("")
|
|
: "";
|
|
}
|
|
}
|
|
};
|
|
return ValidationError;
|
|
}());
|
|
export { ValidationError };
|
|
//# sourceMappingURL=ValidationError.js.map
|