✨ 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
51 lines
1.7 KiB
TypeScript
51 lines
1.7 KiB
TypeScript
/// <reference types="react" />
|
|
import type { BuildManifest } from '../../server/get-page-files';
|
|
import type { ServerRuntime } from 'next/types';
|
|
import type { NEXT_DATA } from './utils';
|
|
import type { FontConfig } from '../../server/font-utils';
|
|
import type { NextFontManifest } from '../../build/webpack/plugins/next-font-manifest-plugin';
|
|
import type { DeepReadonly } from './deep-readonly';
|
|
export type HtmlProps = {
|
|
__NEXT_DATA__: NEXT_DATA;
|
|
strictNextHead: boolean;
|
|
dangerousAsPath: string;
|
|
docComponentsRendered: {
|
|
Html?: boolean;
|
|
Main?: boolean;
|
|
Head?: boolean;
|
|
NextScript?: boolean;
|
|
};
|
|
buildManifest: BuildManifest;
|
|
ampPath: string;
|
|
inAmpMode: boolean;
|
|
hybridAmp: boolean;
|
|
isDevelopment: boolean;
|
|
dynamicImports: string[];
|
|
assetPrefix?: string;
|
|
canonicalBase: string;
|
|
headTags: any[];
|
|
unstable_runtimeJS?: false;
|
|
unstable_JsPreload?: false;
|
|
assetQueryString: string;
|
|
scriptLoader: {
|
|
afterInteractive?: string[];
|
|
beforeInteractive?: any[];
|
|
worker?: any[];
|
|
};
|
|
locale?: string;
|
|
disableOptimizedLoading?: boolean;
|
|
styles?: React.ReactElement[] | React.ReactFragment;
|
|
head?: Array<JSX.Element | null>;
|
|
crossOrigin?: 'anonymous' | 'use-credentials' | '' | undefined;
|
|
optimizeCss?: any;
|
|
optimizeFonts?: FontConfig;
|
|
nextConfigOutput?: 'standalone' | 'export';
|
|
nextScriptWorkers?: boolean;
|
|
runtime?: ServerRuntime;
|
|
hasConcurrentFeatures?: boolean;
|
|
largePageDataBytes?: number;
|
|
nextFontManifest?: DeepReadonly<NextFontManifest>;
|
|
};
|
|
export declare const HtmlContext: import("react").Context<HtmlProps | undefined>;
|
|
export declare function useHtmlContext(): HtmlProps;
|