✨ 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
48 lines
1.7 KiB
TypeScript
48 lines
1.7 KiB
TypeScript
import type { AnySchema } from "../../types";
|
|
import type { SchemaObjCxt } from "..";
|
|
import { Code, Name } from "../codegen";
|
|
import { Type } from "../util";
|
|
import type { JSONType } from "../rules";
|
|
export interface SubschemaContext {
|
|
schema: AnySchema;
|
|
schemaPath: Code;
|
|
errSchemaPath: string;
|
|
topSchemaRef?: Code;
|
|
errorPath?: Code;
|
|
dataLevel?: number;
|
|
dataTypes?: JSONType[];
|
|
data?: Name;
|
|
parentData?: Name;
|
|
parentDataProperty?: Code | number;
|
|
dataNames?: Name[];
|
|
dataPathArr?: (Code | number)[];
|
|
propertyName?: Name;
|
|
jtdDiscriminator?: string;
|
|
jtdMetadata?: boolean;
|
|
compositeRule?: true;
|
|
createErrors?: boolean;
|
|
allErrors?: boolean;
|
|
}
|
|
export type SubschemaArgs = Partial<{
|
|
keyword: string;
|
|
schemaProp: string | number;
|
|
schema: AnySchema;
|
|
schemaPath: Code;
|
|
errSchemaPath: string;
|
|
topSchemaRef: Code;
|
|
data: Name | Code;
|
|
dataProp: Code | string | number;
|
|
dataTypes: JSONType[];
|
|
definedProperties: Set<string>;
|
|
propertyName: Name;
|
|
dataPropType: Type;
|
|
jtdDiscriminator: string;
|
|
jtdMetadata: boolean;
|
|
compositeRule: true;
|
|
createErrors: boolean;
|
|
allErrors: boolean;
|
|
}>;
|
|
export declare function getSubschema(it: SchemaObjCxt, { keyword, schemaProp, schema, schemaPath, errSchemaPath, topSchemaRef }: SubschemaArgs): SubschemaContext;
|
|
export declare function extendSubschemaData(subschema: SubschemaContext, it: SchemaObjCxt, { dataProp, dataPropType: dpType, data, dataTypes, propertyName }: SubschemaArgs): void;
|
|
export declare function extendSubschemaMode(subschema: SubschemaContext, { jtdDiscriminator, jtdMetadata, compositeRule, createErrors, allErrors }: SubschemaArgs): void;
|