✨ 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
54 lines
2.5 KiB
TypeScript
54 lines
2.5 KiB
TypeScript
/// <reference types="node" />
|
|
import type { IncomingMessage, ServerResponse } from 'http';
|
|
import type { ActionResult, DynamicParamTypesShort, FlightRouterState, FlightSegmentPath, RenderOpts, Segment } from './types';
|
|
import type { StaticGenerationStore } from '../../client/components/static-generation-async-storage.external';
|
|
import type { RequestStore } from '../../client/components/request-async-storage.external';
|
|
import type { NextParsedUrlQuery } from '../request-meta';
|
|
import type { AppPageModule } from '../future/route-modules/app-page/module';
|
|
import type { ClientReferenceManifest } from '../../build/webpack/plugins/flight-manifest-plugin';
|
|
import type { Revalidate } from '../lib/revalidate';
|
|
import RenderResult, { type AppPageRenderResultMetadata } from '../render-result';
|
|
import { type ErrorHandler } from './create-error-handler';
|
|
import type { DeepReadonly } from '../../shared/lib/deep-readonly';
|
|
export type GetDynamicParamFromSegment = (segment: string) => {
|
|
param: string;
|
|
value: string | string[] | null;
|
|
treeSegment: Segment;
|
|
type: DynamicParamTypesShort;
|
|
} | null;
|
|
type AppRenderBaseContext = {
|
|
staticGenerationStore: StaticGenerationStore;
|
|
requestStore: RequestStore;
|
|
componentMod: AppPageModule;
|
|
renderOpts: RenderOpts;
|
|
};
|
|
export type GenerateFlight = typeof generateFlight;
|
|
export type AppRenderContext = AppRenderBaseContext & {
|
|
getDynamicParamFromSegment: GetDynamicParamFromSegment;
|
|
query: NextParsedUrlQuery;
|
|
isPrefetch: boolean;
|
|
requestTimestamp: number;
|
|
appUsingSizeAdjustment: boolean;
|
|
flightRouterState?: FlightRouterState;
|
|
requestId: string;
|
|
defaultRevalidate: Revalidate;
|
|
pagePath: string;
|
|
clientReferenceManifest: DeepReadonly<ClientReferenceManifest>;
|
|
assetPrefix: string;
|
|
flightDataRendererErrorHandler: ErrorHandler;
|
|
serverComponentsErrorHandler: ErrorHandler;
|
|
isNotFoundPath: boolean;
|
|
res: ServerResponse;
|
|
builtInWaitUntil: RenderOpts['builtInWaitUntil'];
|
|
};
|
|
export type CreateSegmentPath = (child: FlightSegmentPath) => FlightSegmentPath;
|
|
declare function generateFlight(ctx: AppRenderContext, options?: {
|
|
actionResult: ActionResult;
|
|
skipFlight: boolean;
|
|
asNotFound?: boolean;
|
|
}): Promise<RenderResult>;
|
|
export type BinaryStreamOf<T> = ReadableStream<Uint8Array>;
|
|
export type AppPageRender = (req: IncomingMessage, res: ServerResponse, pagePath: string, query: NextParsedUrlQuery, renderOpts: RenderOpts) => Promise<RenderResult<AppPageRenderResultMetadata>>;
|
|
export declare const renderToHTMLOrFlight: AppPageRender;
|
|
export {};
|