✨ 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
64 lines
2.5 KiB
JavaScript
64 lines
2.5 KiB
JavaScript
"use strict";
|
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
exports.buildSwaggerHTML = exports.getSwaggerAssetsAbsoluteFSPath = exports.buildSwaggerInitJS = void 0;
|
|
const constants_1 = require("./constants");
|
|
const helpers_1 = require("./helpers");
|
|
function buildSwaggerInitJS(swaggerDoc, customOptions = {}) {
|
|
const { swaggerOptions = {}, swaggerUrl } = customOptions;
|
|
const swaggerInitOptions = {
|
|
swaggerDoc,
|
|
swaggerUrl,
|
|
customOptions: swaggerOptions
|
|
};
|
|
const jsInitOptions = (0, helpers_1.buildJSInitOptions)(swaggerInitOptions);
|
|
return constants_1.jsTemplateString.replace('<% swaggerOptions %>', jsInitOptions);
|
|
}
|
|
exports.buildSwaggerInitJS = buildSwaggerInitJS;
|
|
let swaggerAssetsAbsoluteFSPath;
|
|
function getSwaggerAssetsAbsoluteFSPath() {
|
|
if (!swaggerAssetsAbsoluteFSPath) {
|
|
swaggerAssetsAbsoluteFSPath = require('swagger-ui-dist/absolute-path.js')();
|
|
}
|
|
return swaggerAssetsAbsoluteFSPath;
|
|
}
|
|
exports.getSwaggerAssetsAbsoluteFSPath = getSwaggerAssetsAbsoluteFSPath;
|
|
function toExternalScriptTag(url) {
|
|
return `<script src='${url}'></script>`;
|
|
}
|
|
function toInlineScriptTag(jsCode) {
|
|
return `<script>${jsCode}</script>`;
|
|
}
|
|
function toExternalStylesheetTag(url) {
|
|
return `<link href='${url}' rel='stylesheet'>`;
|
|
}
|
|
function toTags(customCode, toScript) {
|
|
if (!customCode) {
|
|
return '';
|
|
}
|
|
if (typeof customCode === 'string') {
|
|
return toScript(customCode);
|
|
}
|
|
else {
|
|
return customCode.map(toScript).join('\n');
|
|
}
|
|
}
|
|
function buildSwaggerHTML(baseUrl, customOptions = {}) {
|
|
const { customCss = '', customJs = '', customJsStr = '', customfavIcon = false, customSiteTitle = 'Swagger UI', customCssUrl = '', explorer = false } = customOptions;
|
|
const favIconString = customfavIcon
|
|
? `<link rel='icon' href='${customfavIcon}' />`
|
|
: constants_1.favIconHtml;
|
|
const explorerCss = explorer
|
|
? ''
|
|
: '.swagger-ui .topbar .download-url-wrapper { display: none }';
|
|
return constants_1.htmlTemplateString
|
|
.replace('<% customCss %>', customCss)
|
|
.replace('<% explorerCss %>', explorerCss)
|
|
.replace('<% favIconString %>', favIconString)
|
|
.replace(/<% baseUrl %>/g, baseUrl)
|
|
.replace('<% customJs %>', toTags(customJs, toExternalScriptTag))
|
|
.replace('<% customJsStr %>', toTags(customJsStr, toInlineScriptTag))
|
|
.replace('<% customCssUrl %>', toTags(customCssUrl, toExternalStylesheetTag))
|
|
.replace('<% title %>', customSiteTitle);
|
|
}
|
|
exports.buildSwaggerHTML = buildSwaggerHTML;
|