✨ 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
62 lines
2.7 KiB
JavaScript
62 lines
2.7 KiB
JavaScript
"use strict";
|
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
exports.Compiler = void 0;
|
|
const ts = require("typescript");
|
|
const base_compiler_1 = require("./base-compiler");
|
|
const tsconfig_paths_hook_1 = require("./hooks/tsconfig-paths.hook");
|
|
class Compiler extends base_compiler_1.BaseCompiler {
|
|
constructor(pluginsLoader, tsConfigProvider, typescriptLoader) {
|
|
super(pluginsLoader);
|
|
this.tsConfigProvider = tsConfigProvider;
|
|
this.typescriptLoader = typescriptLoader;
|
|
}
|
|
run(configuration, tsConfigPath, appName, _extras, onSuccess) {
|
|
const tsBinary = this.typescriptLoader.load();
|
|
const formatHost = {
|
|
getCanonicalFileName: (path) => path,
|
|
getCurrentDirectory: tsBinary.sys.getCurrentDirectory,
|
|
getNewLine: () => tsBinary.sys.newLine,
|
|
};
|
|
const { options, fileNames, projectReferences } = this.tsConfigProvider.getByConfigFilename(tsConfigPath);
|
|
const createProgram = tsBinary.createIncrementalProgram || tsBinary.createProgram;
|
|
const program = createProgram.call(ts, {
|
|
rootNames: fileNames,
|
|
projectReferences,
|
|
options,
|
|
});
|
|
const plugins = this.loadPlugins(configuration, tsConfigPath, appName);
|
|
const tsconfigPathsPlugin = (0, tsconfig_paths_hook_1.tsconfigPathsBeforeHookFactory)(options);
|
|
const programRef = program.getProgram
|
|
? program.getProgram()
|
|
: program;
|
|
const before = plugins.beforeHooks.map((hook) => hook(programRef));
|
|
const after = plugins.afterHooks.map((hook) => hook(programRef));
|
|
const afterDeclarations = plugins.afterDeclarationsHooks.map((hook) => hook(programRef));
|
|
const emitResult = program.emit(undefined, undefined, undefined, undefined, {
|
|
before: tsconfigPathsPlugin
|
|
? before.concat(tsconfigPathsPlugin)
|
|
: before,
|
|
after,
|
|
afterDeclarations,
|
|
});
|
|
const errorsCount = this.reportAfterCompilationDiagnostic(program, emitResult, tsBinary, formatHost);
|
|
if (errorsCount) {
|
|
process.exit(1);
|
|
}
|
|
else if (!errorsCount && onSuccess) {
|
|
onSuccess();
|
|
}
|
|
}
|
|
reportAfterCompilationDiagnostic(program, emitResult, tsBinary, formatHost) {
|
|
const diagnostics = tsBinary
|
|
.getPreEmitDiagnostics(program)
|
|
.concat(emitResult.diagnostics);
|
|
if (diagnostics.length > 0) {
|
|
console.error(tsBinary.formatDiagnosticsWithColorAndContext(diagnostics, formatHost));
|
|
console.info(`Found ${diagnostics.length} error(s).` + tsBinary.sys.newLine);
|
|
}
|
|
return diagnostics.length;
|
|
}
|
|
}
|
|
exports.Compiler = Compiler;
|