@zurigo/maps 1.0.0 → 1.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (57) hide show
  1. package/dist/components/error-display.d.ts +33 -0
  2. package/dist/components/error-display.d.ts.map +1 -0
  3. package/dist/components/error-display.js +188 -0
  4. package/dist/components/error-display.js.map +1 -0
  5. package/dist/components/google-maps.d.ts +31 -0
  6. package/dist/components/google-maps.d.ts.map +1 -0
  7. package/dist/components/google-maps.js +1709 -0
  8. package/dist/components/google-maps.js.map +1 -0
  9. package/dist/index.d.ts +8 -0
  10. package/dist/index.d.ts.map +1 -0
  11. package/dist/index.js +35 -0
  12. package/dist/index.js.map +1 -0
  13. package/dist/lib/google-maps/china-fallback.d.ts +64 -0
  14. package/dist/lib/google-maps/china-fallback.d.ts.map +1 -0
  15. package/dist/lib/google-maps/china-fallback.js +212 -0
  16. package/dist/lib/google-maps/china-fallback.js.map +1 -0
  17. package/dist/lib/google-maps/config.d.ts +51 -0
  18. package/dist/lib/google-maps/config.d.ts.map +1 -0
  19. package/dist/lib/google-maps/config.js +73 -0
  20. package/dist/lib/google-maps/config.js.map +1 -0
  21. package/dist/lib/google-maps/error-handler.d.ts +30 -0
  22. package/dist/lib/google-maps/error-handler.d.ts.map +1 -0
  23. package/dist/lib/google-maps/error-handler.js +224 -0
  24. package/dist/lib/google-maps/error-handler.js.map +1 -0
  25. package/dist/lib/google-maps/geocoding-service.d.ts +47 -0
  26. package/dist/lib/google-maps/geocoding-service.d.ts.map +1 -0
  27. package/dist/lib/google-maps/geocoding-service.js +224 -0
  28. package/dist/lib/google-maps/geocoding-service.js.map +1 -0
  29. package/dist/lib/google-maps/hooks.d.ts +35 -0
  30. package/dist/lib/google-maps/hooks.d.ts.map +1 -0
  31. package/dist/lib/google-maps/hooks.js +207 -0
  32. package/dist/lib/google-maps/hooks.js.map +1 -0
  33. package/dist/lib/google-maps/index.d.ts +7 -0
  34. package/dist/lib/google-maps/index.d.ts.map +1 -0
  35. package/dist/lib/google-maps/index.js +23 -0
  36. package/dist/lib/google-maps/index.js.map +1 -0
  37. package/dist/lib/google-maps/types.d.ts +96 -0
  38. package/dist/lib/google-maps/types.d.ts.map +1 -0
  39. package/dist/lib/google-maps/types.js +41 -0
  40. package/dist/lib/google-maps/types.js.map +1 -0
  41. package/dist/lib/google-maps/utils.d.ts +20 -0
  42. package/dist/lib/google-maps/utils.d.ts.map +1 -0
  43. package/dist/lib/google-maps/utils.js +176 -0
  44. package/dist/lib/google-maps/utils.js.map +1 -0
  45. package/dist/lib/solar-panel/constraints.d.ts +62 -0
  46. package/dist/lib/solar-panel/constraints.d.ts.map +1 -0
  47. package/dist/lib/solar-panel/constraints.js +166 -0
  48. package/dist/lib/solar-panel/constraints.js.map +1 -0
  49. package/dist/lib/solar-panel/orientation.d.ts +56 -0
  50. package/dist/lib/solar-panel/orientation.d.ts.map +1 -0
  51. package/dist/lib/solar-panel/orientation.js +255 -0
  52. package/dist/lib/solar-panel/orientation.js.map +1 -0
  53. package/dist/lib/solar-panel-calculator.d.ts +126 -0
  54. package/dist/lib/solar-panel-calculator.d.ts.map +1 -0
  55. package/dist/lib/solar-panel-calculator.js +450 -0
  56. package/dist/lib/solar-panel-calculator.js.map +1 -0
  57. package/package.json +2 -2
@@ -0,0 +1,207 @@
1
+ "use strict";
2
+ 'use client';
3
+ var __rest = (this && this.__rest) || function (s, e) {
4
+ var t = {};
5
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
6
+ t[p] = s[p];
7
+ if (s != null && typeof Object.getOwnPropertySymbols === "function")
8
+ for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
9
+ if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
10
+ t[p[i]] = s[p[i]];
11
+ }
12
+ return t;
13
+ };
14
+ Object.defineProperty(exports, "__esModule", { value: true });
15
+ exports.useGeocode = exports.useGoogleMap = exports.useGoogleMaps = void 0;
16
+ const js_api_loader_1 = require("@googlemaps/js-api-loader");
17
+ const react_1 = require("react");
18
+ const config_1 = require("./config");
19
+ // Global loader instance to prevent multiple loaders with different options
20
+ let globalLoader = null;
21
+ let globalLoadPromise = null;
22
+ let isGlobalLoaded = false;
23
+ const initializeGlobalLoader = () => {
24
+ if (globalLoader)
25
+ return globalLoader;
26
+ if (!(0, config_1.validateApiKey)()) {
27
+ throw new Error('Google Maps API key is not configured');
28
+ }
29
+ globalLoader = new js_api_loader_1.Loader({
30
+ apiKey: config_1.GOOGLE_MAPS_CONFIG.apiKey,
31
+ version: 'weekly',
32
+ libraries: [...config_1.GOOGLE_MAPS_CONFIG.libraries],
33
+ language: config_1.GOOGLE_MAPS_CONFIG.language,
34
+ region: config_1.GOOGLE_MAPS_CONFIG.region,
35
+ });
36
+ return globalLoader;
37
+ };
38
+ const useGoogleMaps = (options = {}) => {
39
+ const [isLoaded, setIsLoaded] = (0, react_1.useState)(isGlobalLoaded);
40
+ const [isLoading, setIsLoading] = (0, react_1.useState)(false);
41
+ const [error, setError] = (0, react_1.useState)(null);
42
+ const { onLoad, onError } = options;
43
+ (0, react_1.useEffect)(() => {
44
+ var _a;
45
+ // If already loaded globally, just call onLoad
46
+ if (isGlobalLoaded && ((_a = window.google) === null || _a === void 0 ? void 0 : _a.maps)) {
47
+ setIsLoaded(true);
48
+ onLoad === null || onLoad === void 0 ? void 0 : onLoad();
49
+ return;
50
+ }
51
+ // If loading is already in progress, wait for it
52
+ if (globalLoadPromise) {
53
+ setIsLoading(true);
54
+ globalLoadPromise
55
+ .then(() => {
56
+ isGlobalLoaded = true;
57
+ setIsLoaded(true);
58
+ setIsLoading(false);
59
+ onLoad === null || onLoad === void 0 ? void 0 : onLoad();
60
+ })
61
+ .catch((err) => {
62
+ const loadError = err instanceof Error ? err : new Error('Failed to load Google Maps');
63
+ setError(loadError);
64
+ setIsLoading(false);
65
+ onError === null || onError === void 0 ? void 0 : onError(loadError);
66
+ });
67
+ return;
68
+ }
69
+ // Initialize and start loading
70
+ try {
71
+ const loader = initializeGlobalLoader();
72
+ setIsLoading(true);
73
+ setError(null);
74
+ // Store the promise globally
75
+ globalLoadPromise = loader.load();
76
+ globalLoadPromise
77
+ .then(() => {
78
+ isGlobalLoaded = true;
79
+ setIsLoaded(true);
80
+ setIsLoading(false);
81
+ onLoad === null || onLoad === void 0 ? void 0 : onLoad();
82
+ })
83
+ .catch((err) => {
84
+ const loadError = err instanceof Error ? err : new Error('Failed to load Google Maps');
85
+ setError(loadError);
86
+ setIsLoading(false);
87
+ onError === null || onError === void 0 ? void 0 : onError(loadError);
88
+ });
89
+ }
90
+ catch (err) {
91
+ const initError = err instanceof Error
92
+ ? err
93
+ : new Error('Failed to initialize Google Maps loader');
94
+ setError(initError);
95
+ onError === null || onError === void 0 ? void 0 : onError(initError);
96
+ }
97
+ }, [onLoad, onError]);
98
+ return {
99
+ isLoaded,
100
+ isLoading,
101
+ error,
102
+ loader: globalLoader,
103
+ };
104
+ };
105
+ exports.useGoogleMaps = useGoogleMaps;
106
+ const useGoogleMap = (containerRef, options = {}) => {
107
+ const [map, setMap] = (0, react_1.useState)(null);
108
+ const { isLoaded, error: mapsError } = (0, exports.useGoogleMaps)();
109
+ const [mapError, setMapError] = (0, react_1.useState)(null);
110
+ const { onMapLoad, onMapError } = options, mapOptions = __rest(options, ["onMapLoad", "onMapError"]);
111
+ (0, react_1.useEffect)(() => {
112
+ if (!isLoaded || !containerRef.current || map)
113
+ return;
114
+ try {
115
+ const googleMap = new google.maps.Map(containerRef.current, Object.assign(Object.assign({ center: config_1.GOOGLE_MAPS_CONFIG.china.center, zoom: config_1.GOOGLE_MAPS_CONFIG.china.zoom.default }, config_1.GOOGLE_MAPS_CONFIG.mapOptions), mapOptions));
116
+ setMap(googleMap);
117
+ onMapLoad === null || onMapLoad === void 0 ? void 0 : onMapLoad(googleMap);
118
+ }
119
+ catch (err) {
120
+ const error = err instanceof Error ? err : new Error('Failed to create map');
121
+ setMapError(error);
122
+ onMapError === null || onMapError === void 0 ? void 0 : onMapError(error);
123
+ }
124
+ }, [isLoaded, containerRef, map, mapOptions, onMapLoad, onMapError]);
125
+ return {
126
+ map,
127
+ isLoaded,
128
+ error: mapsError || mapError,
129
+ };
130
+ };
131
+ exports.useGoogleMap = useGoogleMap;
132
+ const useGeocode = () => {
133
+ const { isLoaded } = (0, exports.useGoogleMaps)();
134
+ const [isGeocoding, setIsGeocoding] = (0, react_1.useState)(false);
135
+ const [error, setError] = (0, react_1.useState)(null);
136
+ const geocodeAddress = (0, react_1.useCallback)(async (address, options) => {
137
+ var _a;
138
+ if (!isLoaded || !((_a = window.google) === null || _a === void 0 ? void 0 : _a.maps)) {
139
+ throw new Error('Google Maps not loaded');
140
+ }
141
+ if (!address.trim()) {
142
+ throw new Error('Address is required');
143
+ }
144
+ setIsGeocoding(true);
145
+ setError(null);
146
+ try {
147
+ const geocoder = new google.maps.Geocoder();
148
+ const response = await geocoder.geocode({
149
+ address,
150
+ region: config_1.GOOGLE_MAPS_CONFIG.geocoding.region,
151
+ language: config_1.GOOGLE_MAPS_CONFIG.geocoding.language,
152
+ });
153
+ if (response.results.length === 0) {
154
+ throw new Error('No results found for the provided address');
155
+ }
156
+ return response.results;
157
+ }
158
+ catch (err) {
159
+ const error = err instanceof Error ? err : new Error('Geocoding failed');
160
+ setError(error);
161
+ throw error;
162
+ }
163
+ finally {
164
+ setIsGeocoding(false);
165
+ }
166
+ }, [isLoaded]);
167
+ const reverseGeocode = (0, react_1.useCallback)(async (lat, lng) => {
168
+ var _a;
169
+ if (!isLoaded || !((_a = window.google) === null || _a === void 0 ? void 0 : _a.maps)) {
170
+ throw new Error('Google Maps not loaded');
171
+ }
172
+ setIsGeocoding(true);
173
+ setError(null);
174
+ try {
175
+ const geocoder = new google.maps.Geocoder();
176
+ const response = await geocoder.geocode({
177
+ location: { lat, lng },
178
+ language: config_1.GOOGLE_MAPS_CONFIG.geocoding.language,
179
+ });
180
+ if (response.results.length === 0) {
181
+ throw new Error('No results found for the provided coordinates');
182
+ }
183
+ return response.results;
184
+ }
185
+ catch (err) {
186
+ const error = err instanceof Error ? err : new Error('Reverse geocoding failed');
187
+ setError(error);
188
+ throw error;
189
+ }
190
+ finally {
191
+ setIsGeocoding(false);
192
+ }
193
+ }, [isLoaded]);
194
+ const clearError = (0, react_1.useCallback)(() => {
195
+ setError(null);
196
+ }, []);
197
+ return {
198
+ geocodeAddress,
199
+ reverseGeocode,
200
+ isGeocoding,
201
+ isReady: isLoaded,
202
+ error,
203
+ clearError,
204
+ };
205
+ };
206
+ exports.useGeocode = useGeocode;
207
+ //# sourceMappingURL=hooks.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hooks.js","sourceRoot":"","sources":["../../../src/lib/google-maps/hooks.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ export * from './config';
2
+ export * from './hooks';
3
+ export * from './types';
4
+ export * from './utils';
5
+ export * from './error-handler';
6
+ export * from './geocoding-service';
7
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/lib/google-maps/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAA;AACxB,cAAc,SAAS,CAAA;AACvB,cAAc,SAAS,CAAA;AACvB,cAAc,SAAS,CAAA;AACvB,cAAc,iBAAiB,CAAA;AAC/B,cAAc,qBAAqB,CAAA"}
@@ -0,0 +1,23 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./config"), exports);
18
+ __exportStar(require("./hooks"), exports);
19
+ __exportStar(require("./types"), exports);
20
+ __exportStar(require("./utils"), exports);
21
+ __exportStar(require("./error-handler"), exports);
22
+ __exportStar(require("./geocoding-service"), exports);
23
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/lib/google-maps/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,2CAAwB;AACxB,0CAAuB;AACvB,0CAAuB;AACvB,0CAAuB;AACvB,kDAA+B;AAC/B,sDAAmC"}
@@ -0,0 +1,96 @@
1
+ export interface ChineseAddress {
2
+ province: string;
3
+ city: string;
4
+ district: string;
5
+ street: string;
6
+ fullAddress: string;
7
+ formattedAddress?: string;
8
+ }
9
+ export interface GeocodeResult {
10
+ address: ChineseAddress;
11
+ coordinates: {
12
+ lat: number;
13
+ lng: number;
14
+ };
15
+ placeId: string;
16
+ types: string[];
17
+ viewport?: {
18
+ northeast: {
19
+ lat: number;
20
+ lng: number;
21
+ };
22
+ southwest: {
23
+ lat: number;
24
+ lng: number;
25
+ };
26
+ };
27
+ }
28
+ export interface GeocodingError {
29
+ code: 'ZERO_RESULTS' | 'OVER_QUERY_LIMIT' | 'REQUEST_DENIED' | 'INVALID_REQUEST' | 'UNKNOWN_ERROR';
30
+ message: string;
31
+ status: google.maps.GeocoderStatus;
32
+ }
33
+ export interface MapBounds {
34
+ north: number;
35
+ south: number;
36
+ east: number;
37
+ west: number;
38
+ }
39
+ export interface AddressComponent {
40
+ longName: string;
41
+ shortName: string;
42
+ types: string[];
43
+ }
44
+ export interface AddressValidationResult {
45
+ isValid: boolean;
46
+ errors: string[];
47
+ suggestions?: string[];
48
+ confidence: number;
49
+ }
50
+ export interface ChinaMapRegion {
51
+ name: string;
52
+ code: string;
53
+ bounds: MapBounds;
54
+ center: {
55
+ lat: number;
56
+ lng: number;
57
+ };
58
+ zoom: number;
59
+ }
60
+ export declare const CHINA_REGIONS: ChinaMapRegion[];
61
+ export interface PlacesSearchOptions {
62
+ query: string;
63
+ location?: {
64
+ lat: number;
65
+ lng: number;
66
+ };
67
+ radius?: number;
68
+ types?: string[];
69
+ language?: string;
70
+ region?: string;
71
+ }
72
+ export interface PlacesSearchResult {
73
+ placeId: string;
74
+ name: string;
75
+ formattedAddress: string;
76
+ geometry: {
77
+ location: {
78
+ lat: number;
79
+ lng: number;
80
+ };
81
+ viewport?: {
82
+ northeast: {
83
+ lat: number;
84
+ lng: number;
85
+ };
86
+ southwest: {
87
+ lat: number;
88
+ lng: number;
89
+ };
90
+ };
91
+ };
92
+ types: string[];
93
+ rating?: number;
94
+ priceLevel?: number;
95
+ }
96
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/lib/google-maps/types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,41 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.CHINA_REGIONS = void 0;
4
+ exports.CHINA_REGIONS = [
5
+ {
6
+ name: '北京市',
7
+ code: 'BJ',
8
+ bounds: { north: 41.05, south: 39.44, east: 117.51, west: 115.42 },
9
+ center: { lat: 39.9042, lng: 116.4074 },
10
+ zoom: 10,
11
+ },
12
+ {
13
+ name: '上海市',
14
+ code: 'SH',
15
+ bounds: { north: 31.87, south: 30.67, east: 122.12, west: 120.86 },
16
+ center: { lat: 31.2304, lng: 121.4737 },
17
+ zoom: 10,
18
+ },
19
+ {
20
+ name: '广东省',
21
+ code: 'GD',
22
+ bounds: { north: 25.32, south: 20.22, east: 117.22, west: 109.67 },
23
+ center: { lat: 23.1291, lng: 113.2644 },
24
+ zoom: 8,
25
+ },
26
+ {
27
+ name: '浙江省',
28
+ code: 'ZJ',
29
+ bounds: { north: 31.41, south: 27.02, east: 123.25, west: 118.01 },
30
+ center: { lat: 30.2741, lng: 120.1551 },
31
+ zoom: 8,
32
+ },
33
+ {
34
+ name: '江苏省',
35
+ code: 'JS',
36
+ bounds: { north: 35.2, south: 30.75, east: 121.96, west: 116.36 },
37
+ center: { lat: 32.0617, lng: 118.7778 },
38
+ zoom: 8,
39
+ },
40
+ ];
41
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/lib/google-maps/types.ts"],"names":[],"mappings":";;;AA8Da,QAAA,aAAa,GAAqB;IAC7C;QACE,IAAI,EAAE,KAAK;QACX,IAAI,EAAE,IAAI;QACV,MAAM,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE;QAClE,MAAM,EAAE,EAAE,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,QAAQ,EAAE;QACvC,IAAI,EAAE,EAAE;KACT;IACD;QACE,IAAI,EAAE,KAAK;QACX,IAAI,EAAE,IAAI;QACV,MAAM,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE;QAClE,MAAM,EAAE,EAAE,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,QAAQ,EAAE;QACvC,IAAI,EAAE,EAAE;KACT;IACD;QACE,IAAI,EAAE,KAAK;QACX,IAAI,EAAE,IAAI;QACV,MAAM,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE;QAClE,MAAM,EAAE,EAAE,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,QAAQ,EAAE;QACvC,IAAI,EAAE,CAAC;KACR;IACD;QACE,IAAI,EAAE,KAAK;QACX,IAAI,EAAE,IAAI;QACV,MAAM,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE;QAClE,MAAM,EAAE,EAAE,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,QAAQ,EAAE;QACvC,IAAI,EAAE,CAAC;KACR;IACD;QACE,IAAI,EAAE,KAAK;QACX,IAAI,EAAE,IAAI;QACV,MAAM,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE;QACjE,MAAM,EAAE,EAAE,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,QAAQ,EAAE;QACvC,IAAI,EAAE,CAAC;KACR;CACF,CAAA"}
@@ -0,0 +1,20 @@
1
+ import type { ChineseAddress, GeocodeResult, AddressValidationResult, ChinaMapRegion } from './types';
2
+ export declare const parseGoogleGeocoderResult: (result: google.maps.GeocoderResult) => GeocodeResult;
3
+ export declare const parseChineseAddressComponents: (components: google.maps.GeocoderAddressComponent[]) => ChineseAddress;
4
+ export declare const validateChineseAddress: (address: string) => AddressValidationResult;
5
+ export declare const formatChineseAddress: (components: Partial<ChineseAddress>) => string;
6
+ export declare const isWithinChinaBounds: (lat: number, lng: number) => boolean;
7
+ export declare const findBestRegionForCoordinates: (lat: number, lng: number) => ChinaMapRegion | null;
8
+ export declare const calculateDistance: (point1: {
9
+ lat: number;
10
+ lng: number;
11
+ }, point2: {
12
+ lat: number;
13
+ lng: number;
14
+ }) => number;
15
+ export declare const createMapBounds: (points: {
16
+ lat: number;
17
+ lng: number;
18
+ }[]) => google.maps.LatLngBounds | null;
19
+ export declare const debounce: <T extends (...args: any[]) => any>(func: T, wait: number) => ((...args: Parameters<T>) => void);
20
+ //# sourceMappingURL=utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/lib/google-maps/utils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,cAAc,EACd,aAAa,EAEb,uBAAuB,EACvB,cAAc,EACf,MAAM,SAAS,CAAA;AAGhB,eAAO,MAAM,yBAAyB,GACpC,QAAQ,MAAM,CAAC,IAAI,CAAC,cAAc,KACjC,aAyBF,CAAA;AAED,eAAO,MAAM,6BAA6B,GACxC,YAAY,MAAM,CAAC,IAAI,CAAC,wBAAwB,EAAE,KACjD,cA2CF,CAAA;AAED,eAAO,MAAM,sBAAsB,GACjC,SAAS,MAAM,KACd,uBA6CF,CAAA;AAED,eAAO,MAAM,oBAAoB,GAC/B,YAAY,OAAO,CAAC,cAAc,CAAC,KAClC,MAGF,CAAA;AAED,eAAO,MAAM,mBAAmB,GAAI,KAAK,MAAM,EAAE,KAAK,MAAM,KAAG,OAc9D,CAAA;AAED,eAAO,MAAM,4BAA4B,GACvC,KAAK,MAAM,EACX,KAAK,MAAM,KACV,cAAc,GAAG,IAanB,CAAA;AAED,eAAO,MAAM,iBAAiB,GAC5B,QAAQ;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAE,EACpC,QAAQ;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAE,KACnC,MAYF,CAAA;AAED,eAAO,MAAM,eAAe,GAC1B,QAAQ;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAE,EAAE,KACrC,MAAM,CAAC,IAAI,CAAC,YAAY,GAAG,IAM7B,CAAA;AAED,eAAO,MAAM,QAAQ,GAAI,CAAC,SAAS,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,GAAG,EACxD,MAAM,CAAC,EACP,MAAM,MAAM,KACX,CAAC,CAAC,GAAG,IAAI,EAAE,UAAU,CAAC,CAAC,CAAC,KAAK,IAAI,CAMnC,CAAA"}
@@ -0,0 +1,176 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.debounce = exports.createMapBounds = exports.calculateDistance = exports.findBestRegionForCoordinates = exports.isWithinChinaBounds = exports.formatChineseAddress = exports.validateChineseAddress = exports.parseChineseAddressComponents = exports.parseGoogleGeocoderResult = void 0;
4
+ const types_1 = require("./types");
5
+ const parseGoogleGeocoderResult = (result) => {
6
+ const components = result.address_components;
7
+ const chineseAddress = (0, exports.parseChineseAddressComponents)(components);
8
+ return {
9
+ address: chineseAddress,
10
+ coordinates: {
11
+ lat: result.geometry.location.lat(),
12
+ lng: result.geometry.location.lng(),
13
+ },
14
+ placeId: result.place_id,
15
+ types: result.types,
16
+ viewport: result.geometry.viewport
17
+ ? {
18
+ northeast: {
19
+ lat: result.geometry.viewport.getNorthEast().lat(),
20
+ lng: result.geometry.viewport.getNorthEast().lng(),
21
+ },
22
+ southwest: {
23
+ lat: result.geometry.viewport.getSouthWest().lat(),
24
+ lng: result.geometry.viewport.getSouthWest().lng(),
25
+ },
26
+ }
27
+ : undefined,
28
+ };
29
+ };
30
+ exports.parseGoogleGeocoderResult = parseGoogleGeocoderResult;
31
+ const parseChineseAddressComponents = (components) => {
32
+ var _a;
33
+ const addressMap = new Map();
34
+ components.forEach((component) => {
35
+ const { long_name, types } = component;
36
+ if (types.includes('administrative_area_level_1')) {
37
+ addressMap.set('province', long_name);
38
+ }
39
+ else if (types.includes('locality') ||
40
+ types.includes('administrative_area_level_2')) {
41
+ addressMap.set('city', long_name);
42
+ }
43
+ else if (types.includes('sublocality') ||
44
+ types.includes('administrative_area_level_3')) {
45
+ addressMap.set('district', long_name);
46
+ }
47
+ else if (types.includes('route') || types.includes('street_address')) {
48
+ addressMap.set('street', long_name);
49
+ }
50
+ });
51
+ const province = addressMap.get('province') || '';
52
+ const city = addressMap.get('city') || '';
53
+ const district = addressMap.get('district') || '';
54
+ const street = addressMap.get('street') || '';
55
+ // Construct full Chinese address format
56
+ const fullAddress = [province, city, district, street]
57
+ .filter(Boolean)
58
+ .join('');
59
+ return {
60
+ province,
61
+ city,
62
+ district,
63
+ street,
64
+ fullAddress,
65
+ formattedAddress: (_a = components.find((c) => c.types.includes('formatted_address'))) === null || _a === void 0 ? void 0 : _a.long_name,
66
+ };
67
+ };
68
+ exports.parseChineseAddressComponents = parseChineseAddressComponents;
69
+ const validateChineseAddress = (address) => {
70
+ const errors = [];
71
+ let confidence = 0;
72
+ // Basic validation
73
+ if (!address || address.trim().length === 0) {
74
+ errors.push('Address cannot be empty');
75
+ return { isValid: false, errors, confidence: 0 };
76
+ }
77
+ if (address.length < 4) {
78
+ errors.push('Address too short, please provide complete address');
79
+ confidence = 0.2;
80
+ }
81
+ else if (address.length >= 4 && address.length < 10) {
82
+ confidence = 0.6;
83
+ }
84
+ else {
85
+ confidence = 0.8;
86
+ }
87
+ // Check for Chinese characters
88
+ const chineseCharRegex = /[\u4e00-\u9fff]/;
89
+ if (!chineseCharRegex.test(address)) {
90
+ errors.push('Please use Chinese address format');
91
+ confidence *= 0.5;
92
+ }
93
+ else {
94
+ confidence += 0.1;
95
+ }
96
+ // Check for common Chinese address components
97
+ const hasProvince = /省|市|自治区|特别行政区/.test(address);
98
+ const hasCity = /市|县|区/.test(address);
99
+ const hasDistrict = /区|县|镇|街道/.test(address);
100
+ if (hasProvince)
101
+ confidence += 0.1;
102
+ if (hasCity)
103
+ confidence += 0.1;
104
+ if (hasDistrict)
105
+ confidence += 0.1;
106
+ // Ensure confidence doesn't exceed 1
107
+ confidence = Math.min(confidence, 1);
108
+ return {
109
+ isValid: errors.length === 0,
110
+ errors,
111
+ confidence,
112
+ };
113
+ };
114
+ exports.validateChineseAddress = validateChineseAddress;
115
+ const formatChineseAddress = (components) => {
116
+ const { province, city, district, street } = components;
117
+ return [province, city, district, street].filter(Boolean).join('');
118
+ };
119
+ exports.formatChineseAddress = formatChineseAddress;
120
+ const isWithinChinaBounds = (lat, lng) => {
121
+ const bounds = {
122
+ north: 53.5,
123
+ south: 18.2,
124
+ east: 134.8,
125
+ west: 73.5,
126
+ };
127
+ return (lat >= bounds.south &&
128
+ lat <= bounds.north &&
129
+ lng >= bounds.west &&
130
+ lng <= bounds.east);
131
+ };
132
+ exports.isWithinChinaBounds = isWithinChinaBounds;
133
+ const findBestRegionForCoordinates = (lat, lng) => {
134
+ for (const region of types_1.CHINA_REGIONS) {
135
+ const { bounds } = region;
136
+ if (lat >= bounds.south &&
137
+ lat <= bounds.north &&
138
+ lng >= bounds.west &&
139
+ lng <= bounds.east) {
140
+ return region;
141
+ }
142
+ }
143
+ return null;
144
+ };
145
+ exports.findBestRegionForCoordinates = findBestRegionForCoordinates;
146
+ const calculateDistance = (point1, point2) => {
147
+ const R = 6371; // Earth's radius in kilometers
148
+ const dLat = ((point2.lat - point1.lat) * Math.PI) / 180;
149
+ const dLng = ((point2.lng - point1.lng) * Math.PI) / 180;
150
+ const a = Math.sin(dLat / 2) * Math.sin(dLat / 2) +
151
+ Math.cos((point1.lat * Math.PI) / 180) *
152
+ Math.cos((point2.lat * Math.PI) / 180) *
153
+ Math.sin(dLng / 2) *
154
+ Math.sin(dLng / 2);
155
+ const c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a));
156
+ return R * c;
157
+ };
158
+ exports.calculateDistance = calculateDistance;
159
+ const createMapBounds = (points) => {
160
+ var _a;
161
+ if (!((_a = window.google) === null || _a === void 0 ? void 0 : _a.maps) || points.length === 0)
162
+ return null;
163
+ const bounds = new google.maps.LatLngBounds();
164
+ points.forEach((point) => bounds.extend(point));
165
+ return bounds;
166
+ };
167
+ exports.createMapBounds = createMapBounds;
168
+ const debounce = (func, wait) => {
169
+ let timeout;
170
+ return (...args) => {
171
+ clearTimeout(timeout);
172
+ timeout = setTimeout(() => func(...args), wait);
173
+ };
174
+ };
175
+ exports.debounce = debounce;
176
+ //# sourceMappingURL=utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../src/lib/google-maps/utils.ts"],"names":[],"mappings":"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"}