✨ 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
237 lines
7.3 KiB
TypeScript
237 lines
7.3 KiB
TypeScript
export interface OpenAPIObject {
|
|
openapi: string;
|
|
info: InfoObject;
|
|
servers?: ServerObject[];
|
|
paths: PathsObject;
|
|
components?: ComponentsObject;
|
|
security?: SecurityRequirementObject[];
|
|
tags?: TagObject[];
|
|
externalDocs?: ExternalDocumentationObject;
|
|
}
|
|
export interface InfoObject {
|
|
title: string;
|
|
description?: string;
|
|
termsOfService?: string;
|
|
contact?: ContactObject;
|
|
license?: LicenseObject;
|
|
version: string;
|
|
}
|
|
export interface ContactObject {
|
|
name?: string;
|
|
url?: string;
|
|
email?: string;
|
|
}
|
|
export interface LicenseObject {
|
|
name: string;
|
|
url?: string;
|
|
}
|
|
export interface ServerObject {
|
|
url: string;
|
|
description?: string;
|
|
variables?: Record<string, ServerVariableObject>;
|
|
}
|
|
export interface ServerVariableObject {
|
|
enum?: string[] | boolean[] | number[];
|
|
default: string | boolean | number;
|
|
description?: string;
|
|
}
|
|
export interface ComponentsObject {
|
|
schemas?: Record<string, SchemaObject | ReferenceObject>;
|
|
responses?: Record<string, ResponseObject | ReferenceObject>;
|
|
parameters?: Record<string, ParameterObject | ReferenceObject>;
|
|
examples?: Record<string, ExampleObject | ReferenceObject>;
|
|
requestBodies?: Record<string, RequestBodyObject | ReferenceObject>;
|
|
headers?: Record<string, HeaderObject | ReferenceObject>;
|
|
securitySchemes?: Record<string, SecuritySchemeObject | ReferenceObject>;
|
|
links?: Record<string, LinkObject | ReferenceObject>;
|
|
callbacks?: Record<string, CallbackObject | ReferenceObject>;
|
|
}
|
|
export type PathsObject = Record<string, PathItemObject>;
|
|
export interface PathItemObject {
|
|
$ref?: string;
|
|
summary?: string;
|
|
description?: string;
|
|
get?: OperationObject;
|
|
put?: OperationObject;
|
|
post?: OperationObject;
|
|
delete?: OperationObject;
|
|
options?: OperationObject;
|
|
head?: OperationObject;
|
|
patch?: OperationObject;
|
|
trace?: OperationObject;
|
|
servers?: ServerObject[];
|
|
parameters?: (ParameterObject | ReferenceObject)[];
|
|
}
|
|
export interface OperationObject {
|
|
tags?: string[];
|
|
summary?: string;
|
|
description?: string;
|
|
externalDocs?: ExternalDocumentationObject;
|
|
operationId?: string;
|
|
parameters?: (ParameterObject | ReferenceObject)[];
|
|
requestBody?: RequestBodyObject | ReferenceObject;
|
|
responses: ResponsesObject;
|
|
callbacks?: CallbacksObject;
|
|
deprecated?: boolean;
|
|
security?: SecurityRequirementObject[];
|
|
servers?: ServerObject[];
|
|
}
|
|
export interface ExternalDocumentationObject {
|
|
description?: string;
|
|
url: string;
|
|
}
|
|
export type ParameterLocation = 'query' | 'header' | 'path' | 'cookie';
|
|
export type ParameterStyle = 'matrix' | 'label' | 'form' | 'simple' | 'spaceDelimited' | 'pipeDelimited' | 'deepObject';
|
|
export interface BaseParameterObject {
|
|
description?: string;
|
|
required?: boolean;
|
|
deprecated?: boolean;
|
|
allowEmptyValue?: boolean;
|
|
style?: ParameterStyle;
|
|
explode?: boolean;
|
|
allowReserved?: boolean;
|
|
schema?: SchemaObject | ReferenceObject;
|
|
examples?: Record<string, ExampleObject | ReferenceObject>;
|
|
example?: any;
|
|
content?: ContentObject;
|
|
}
|
|
export interface ParameterObject extends BaseParameterObject {
|
|
name: string;
|
|
in: ParameterLocation;
|
|
}
|
|
export interface RequestBodyObject {
|
|
description?: string;
|
|
content: ContentObject;
|
|
required?: boolean;
|
|
}
|
|
export type ContentObject = Record<string, MediaTypeObject>;
|
|
export interface MediaTypeObject {
|
|
schema?: SchemaObject | ReferenceObject;
|
|
examples?: ExamplesObject;
|
|
example?: any;
|
|
encoding?: EncodingObject;
|
|
}
|
|
export type EncodingObject = Record<string, EncodingPropertyObject>;
|
|
export interface EncodingPropertyObject {
|
|
contentType?: string;
|
|
headers?: Record<string, HeaderObject | ReferenceObject>;
|
|
style?: string;
|
|
explode?: boolean;
|
|
allowReserved?: boolean;
|
|
}
|
|
export interface ResponsesObject extends Record<string, ResponseObject | ReferenceObject | undefined> {
|
|
default?: ResponseObject | ReferenceObject;
|
|
}
|
|
export interface ResponseObject {
|
|
description: string;
|
|
headers?: HeadersObject;
|
|
content?: ContentObject;
|
|
links?: LinksObject;
|
|
}
|
|
export type CallbacksObject = Record<string, CallbackObject | ReferenceObject>;
|
|
export type CallbackObject = Record<string, PathItemObject>;
|
|
export type HeadersObject = Record<string, HeaderObject | ReferenceObject>;
|
|
export interface ExampleObject {
|
|
summary?: string;
|
|
description?: string;
|
|
value?: any;
|
|
externalValue?: string;
|
|
}
|
|
export type LinksObject = Record<string, LinkObject | ReferenceObject>;
|
|
export interface LinkObject {
|
|
operationRef?: string;
|
|
operationId?: string;
|
|
parameters?: LinkParametersObject;
|
|
requestBody?: any | string;
|
|
description?: string;
|
|
server?: ServerObject;
|
|
}
|
|
export type LinkParametersObject = Record<string, any>;
|
|
export type HeaderObject = BaseParameterObject;
|
|
export interface TagObject {
|
|
name: string;
|
|
description?: string;
|
|
externalDocs?: ExternalDocumentationObject;
|
|
}
|
|
export type ExamplesObject = Record<string, ExampleObject | ReferenceObject>;
|
|
export interface ReferenceObject {
|
|
$ref: string;
|
|
}
|
|
export interface SchemaObject {
|
|
nullable?: boolean;
|
|
discriminator?: DiscriminatorObject;
|
|
readOnly?: boolean;
|
|
writeOnly?: boolean;
|
|
xml?: XmlObject;
|
|
externalDocs?: ExternalDocumentationObject;
|
|
example?: any;
|
|
examples?: any[] | Record<string, any>;
|
|
deprecated?: boolean;
|
|
type?: string;
|
|
allOf?: (SchemaObject | ReferenceObject)[];
|
|
oneOf?: (SchemaObject | ReferenceObject)[];
|
|
anyOf?: (SchemaObject | ReferenceObject)[];
|
|
not?: SchemaObject | ReferenceObject;
|
|
items?: SchemaObject | ReferenceObject;
|
|
properties?: Record<string, SchemaObject | ReferenceObject>;
|
|
additionalProperties?: SchemaObject | ReferenceObject | boolean;
|
|
patternProperties?: SchemaObject | ReferenceObject | any;
|
|
description?: string;
|
|
format?: string;
|
|
default?: any;
|
|
title?: string;
|
|
multipleOf?: number;
|
|
maximum?: number;
|
|
exclusiveMaximum?: boolean;
|
|
minimum?: number;
|
|
exclusiveMinimum?: boolean;
|
|
maxLength?: number;
|
|
minLength?: number;
|
|
pattern?: string;
|
|
maxItems?: number;
|
|
minItems?: number;
|
|
uniqueItems?: boolean;
|
|
maxProperties?: number;
|
|
minProperties?: number;
|
|
required?: string[];
|
|
enum?: any[];
|
|
}
|
|
export type SchemasObject = Record<string, SchemaObject>;
|
|
export interface DiscriminatorObject {
|
|
propertyName: string;
|
|
mapping?: Record<string, string>;
|
|
}
|
|
export interface XmlObject {
|
|
name?: string;
|
|
namespace?: string;
|
|
prefix?: string;
|
|
attribute?: boolean;
|
|
wrapped?: boolean;
|
|
}
|
|
export type SecuritySchemeType = 'apiKey' | 'http' | 'oauth2' | 'openIdConnect';
|
|
export interface SecuritySchemeObject {
|
|
type: SecuritySchemeType;
|
|
description?: string;
|
|
name?: string;
|
|
in?: string;
|
|
scheme?: string;
|
|
bearerFormat?: string;
|
|
flows?: OAuthFlowsObject;
|
|
openIdConnectUrl?: string;
|
|
'x-tokenName'?: string;
|
|
}
|
|
export interface OAuthFlowsObject {
|
|
implicit?: OAuthFlowObject;
|
|
password?: OAuthFlowObject;
|
|
clientCredentials?: OAuthFlowObject;
|
|
authorizationCode?: OAuthFlowObject;
|
|
}
|
|
export interface OAuthFlowObject {
|
|
authorizationUrl?: string;
|
|
tokenUrl?: string;
|
|
refreshUrl?: string;
|
|
scopes: ScopesObject;
|
|
}
|
|
export type ScopesObject = Record<string, any>;
|
|
export type SecurityRequirementObject = Record<string, string[]>;
|