@nuxt/scripts 1.0.0-beta.7 → 1.0.0-rc.1
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.
- package/dist/devtools-client/200.html +1 -0
- package/dist/devtools-client/404.html +1 -0
- package/dist/devtools-client/_fonts/4ppnHhMi-pBsWSPo7mY0avYxlDoAg1N3PTzCwXLZ5rA-d9oibkGnTd1JL3tc_xnaVgBLYmOB8kjrK2cvZaqwj9s.woff2 +0 -0
- package/dist/devtools-client/_fonts/4qBuU9MRVUlPZNPSF7Xom_sK8RBEnfYu-9VXFrdq8A8-8TDwLE1HAj1sQn7XxVWtM_7sIaPM-DTdO3Pf8U2DF1U.woff2 +0 -0
- package/dist/devtools-client/_fonts/6dYsbWUd_BpKJ7mdDihgOcya1gHXLpJBuMYXux3WMjE-q3fYNS8YbW5n7ZeXI2vSNgkRWW5VDPKAl51SNTjG2qk.woff2 +0 -0
- package/dist/devtools-client/_fonts/Lr-hqqZZsYmCt0ITUlr1CUrWim9fsKvoDFZliMxgNHY-iTa_Yt_PzhOY9TX7ZXdSlEPim6iRt92xhECwaxWxd5w.woff2 +0 -0
- package/dist/devtools-client/_fonts/OknHvWI6KtYn1JQBzX7eSpNDBQ8520F9TvSUJYkVf6A-xeZn9253svK_8Q2LD0XEruY_MnEsuCRO5LenPoggC0Y.woff2 +0 -0
- package/dist/devtools-client/_fonts/PV2hrQG6wq5BlIPDjdL1IcOflycaghyt5MHzlBqZtlo-lb_WexLz3VZqfTN0oi554iBH5tT2j2UFEV-XErCAS3E.woff2 +0 -0
- package/dist/devtools-client/_fonts/UA7OtwYHwGN_HjcVGTdmiQxUit7FlqkCwxVUWSeXVnQ-B4OXCFOL_tWrYODpQTc07aMaj0c2cewTOmBRWR9tD-A.woff2 +0 -0
- package/dist/devtools-client/_fonts/VE4cDVCv5MxbFM7ZLoLCGbIpNd71zhp7MDI9lmN5Y7I-xZyDYCUVrd6LV8eVGF3Um3UZjBFuUtDGtvdyTBBRYBo.woff2 +0 -0
- package/dist/devtools-client/_fonts/fVoGbnMbBFd5L9BBp9fUPavUSkZ_EmsQNSyadkT-108-U4T0khaeLQSIhtt9eVvaCEKJjtWJ4ioRJOf8hvqkWY0.woff2 +0 -0
- package/dist/devtools-client/_fonts/lQAxeCEs1R0Lw-H9XRU1RlOARQN8J6npRsPjyEDMe5s-_DUSLEkO3tKTuun_gSnDLoQPVEnpOnyqZMOw0ByZ6PA.woff2 +0 -0
- package/dist/devtools-client/_fonts/lntlqNHKLV2n82yTwMde70QqOjcfLE2XJ5oKZ3vRPWc-z6TxpIZQdWXztWLr9_OFWqt_WJJoeGtuK_-XQMZGQwE.woff2 +0 -0
- package/dist/devtools-client/_fonts/qxAYvKsXWeYv731eb-h5TRurcdIP_W44mpNdX-HABAk-zUDeMEFlNtNbrwvT9JxLEBg0TphGy70O6RfIoIX_ZwU.woff2 +0 -0
- package/dist/devtools-client/_nuxt/B3kN3DAy.js +1 -0
- package/dist/devtools-client/_nuxt/B8PEiB0p.js +1 -0
- package/dist/devtools-client/_nuxt/C8jhSQ8l.js +1 -0
- package/dist/devtools-client/_nuxt/CJD6wrkT.js +188 -0
- package/dist/devtools-client/_nuxt/CfOsp0mU.js +1 -0
- package/dist/devtools-client/_nuxt/DKL6PHO3.js +1 -0
- package/dist/devtools-client/_nuxt/ajngqPCs.js +1 -0
- package/dist/devtools-client/_nuxt/builds/latest.json +1 -0
- package/dist/devtools-client/_nuxt/builds/meta/b800a0be-5cab-4ea6-89e3-dd3a85690a73.json +1 -0
- package/dist/devtools-client/_nuxt/dlaR8P-P.js +1 -0
- package/dist/devtools-client/_nuxt/entry.BwpOBArY.css +1 -0
- package/dist/devtools-client/_nuxt/error-404.CvOVjXeC.css +1 -0
- package/dist/devtools-client/_nuxt/error-500.BIm53nmx.css +1 -0
- package/dist/devtools-client/_nuxt/first-party.C8Ha4JLM.css +1 -0
- package/dist/devtools-client/_nuxt/index.CA-OpSj0.css +1 -0
- package/dist/devtools-client/_nuxt/registry.B9lnjF_b.css +1 -0
- package/dist/devtools-client/_nuxt/wDzz0qaB.js +1 -0
- package/dist/devtools-client/docs/index.html +1 -0
- package/dist/devtools-client/first-party/index.html +1 -0
- package/dist/devtools-client/index.html +1 -0
- package/dist/devtools-client/registry/index.html +1 -0
- package/dist/module.d.mts +29 -84
- package/dist/module.d.ts +121 -0
- package/dist/module.json +1 -1
- package/dist/module.mjs +939 -755
- package/dist/registry.d.mts +91 -4
- package/dist/registry.d.ts +93 -0
- package/dist/registry.mjs +668 -326
- package/dist/runtime/components/GoogleMaps/ScriptGoogleMaps.d.vue.ts +15 -79
- package/dist/runtime/components/GoogleMaps/ScriptGoogleMaps.vue +78 -180
- package/dist/runtime/components/GoogleMaps/ScriptGoogleMaps.vue.d.ts +15 -79
- package/dist/runtime/components/GoogleMaps/ScriptGoogleMapsAdvancedMarkerElement.d.vue.ts +6 -55
- package/dist/runtime/components/GoogleMaps/ScriptGoogleMapsAdvancedMarkerElement.vue +12 -83
- package/dist/runtime/components/GoogleMaps/ScriptGoogleMapsAdvancedMarkerElement.vue.d.ts +6 -55
- package/dist/runtime/components/GoogleMaps/ScriptGoogleMapsCircle.d.vue.ts +5 -1
- package/dist/runtime/components/GoogleMaps/ScriptGoogleMapsCircle.vue +24 -38
- package/dist/runtime/components/GoogleMaps/ScriptGoogleMapsCircle.vue.d.ts +5 -1
- package/dist/runtime/components/GoogleMaps/ScriptGoogleMapsGeoJson.d.vue.ts +43 -0
- package/dist/runtime/components/GoogleMaps/ScriptGoogleMapsGeoJson.vue +60 -0
- package/dist/runtime/components/GoogleMaps/ScriptGoogleMapsGeoJson.vue.d.ts +43 -0
- package/dist/runtime/components/GoogleMaps/ScriptGoogleMapsHeatmapLayer.d.vue.ts +4 -0
- package/dist/runtime/components/GoogleMaps/ScriptGoogleMapsHeatmapLayer.vue +22 -26
- package/dist/runtime/components/GoogleMaps/ScriptGoogleMapsHeatmapLayer.vue.d.ts +4 -0
- package/dist/runtime/components/GoogleMaps/ScriptGoogleMapsInfoWindow.d.vue.ts +9 -5
- package/dist/runtime/components/GoogleMaps/ScriptGoogleMapsInfoWindow.vue +56 -57
- package/dist/runtime/components/GoogleMaps/ScriptGoogleMapsInfoWindow.vue.d.ts +9 -5
- package/dist/runtime/components/GoogleMaps/ScriptGoogleMapsMarker.d.vue.ts +24 -41
- package/dist/runtime/components/GoogleMaps/ScriptGoogleMapsMarker.vue +69 -73
- package/dist/runtime/components/GoogleMaps/ScriptGoogleMapsMarker.vue.d.ts +24 -41
- package/dist/runtime/components/GoogleMaps/ScriptGoogleMapsMarkerClusterer.d.vue.ts +36 -4
- package/dist/runtime/components/GoogleMaps/ScriptGoogleMapsMarkerClusterer.vue +82 -37
- package/dist/runtime/components/GoogleMaps/ScriptGoogleMapsMarkerClusterer.vue.d.ts +36 -4
- package/dist/runtime/components/GoogleMaps/ScriptGoogleMapsOverlayView.d.vue.ts +78 -0
- package/dist/runtime/components/GoogleMaps/ScriptGoogleMapsOverlayView.vue +222 -0
- package/dist/runtime/components/GoogleMaps/ScriptGoogleMapsOverlayView.vue.d.ts +78 -0
- package/dist/runtime/components/GoogleMaps/ScriptGoogleMapsPinElement.d.vue.ts +10 -3
- package/dist/runtime/components/GoogleMaps/ScriptGoogleMapsPinElement.vue +9 -41
- package/dist/runtime/components/GoogleMaps/ScriptGoogleMapsPinElement.vue.d.ts +10 -3
- package/dist/runtime/components/GoogleMaps/ScriptGoogleMapsPolygon.d.vue.ts +7 -3
- package/dist/runtime/components/GoogleMaps/ScriptGoogleMapsPolygon.vue +23 -38
- package/dist/runtime/components/GoogleMaps/ScriptGoogleMapsPolygon.vue.d.ts +7 -3
- package/dist/runtime/components/GoogleMaps/ScriptGoogleMapsPolyline.d.vue.ts +7 -3
- package/dist/runtime/components/GoogleMaps/ScriptGoogleMapsPolyline.vue +23 -38
- package/dist/runtime/components/GoogleMaps/ScriptGoogleMapsPolyline.vue.d.ts +7 -3
- package/dist/runtime/components/GoogleMaps/ScriptGoogleMapsRectangle.d.vue.ts +7 -3
- package/dist/runtime/components/GoogleMaps/ScriptGoogleMapsRectangle.vue +24 -38
- package/dist/runtime/components/GoogleMaps/ScriptGoogleMapsRectangle.vue.d.ts +7 -3
- package/dist/runtime/components/GoogleMaps/ScriptGoogleMapsStaticMap.d.vue.ts +200 -0
- package/dist/runtime/components/GoogleMaps/ScriptGoogleMapsStaticMap.vue +165 -0
- package/dist/runtime/components/GoogleMaps/ScriptGoogleMapsStaticMap.vue.d.ts +200 -0
- package/dist/runtime/components/GoogleMaps/bindGoogleMapsEvents.d.ts +13 -0
- package/dist/runtime/components/GoogleMaps/bindGoogleMapsEvents.js +8 -0
- package/dist/runtime/components/GoogleMaps/injectionKeys.d.ts +10 -0
- package/dist/runtime/components/GoogleMaps/injectionKeys.js +2 -0
- package/dist/runtime/components/GoogleMaps/useGoogleMapsResource.d.ts +48 -0
- package/dist/runtime/components/GoogleMaps/useGoogleMapsResource.js +51 -0
- package/dist/runtime/components/ScriptBlueskyEmbed.d.vue.ts +85 -0
- package/dist/runtime/components/ScriptBlueskyEmbed.vue +88 -0
- package/dist/runtime/components/ScriptBlueskyEmbed.vue.d.ts +85 -0
- package/dist/runtime/components/ScriptCrisp.vue +1 -1
- package/dist/runtime/components/ScriptGoogleAdsense.vue +1 -1
- package/dist/runtime/components/ScriptGravatar.d.vue.ts +22 -0
- package/dist/runtime/components/ScriptGravatar.vue +46 -0
- package/dist/runtime/components/ScriptGravatar.vue.d.ts +22 -0
- package/dist/runtime/components/ScriptInstagramEmbed.d.vue.ts +1 -2
- package/dist/runtime/components/ScriptInstagramEmbed.vue +8 -3
- package/dist/runtime/components/ScriptInstagramEmbed.vue.d.ts +1 -2
- package/dist/runtime/components/ScriptIntercom.vue +4 -3
- package/dist/runtime/components/ScriptPayPalButtons.d.vue.ts +43 -32
- package/dist/runtime/components/ScriptPayPalButtons.vue +48 -79
- package/dist/runtime/components/ScriptPayPalButtons.vue.d.ts +43 -32
- package/dist/runtime/components/ScriptPayPalMessages.d.vue.ts +37 -23
- package/dist/runtime/components/ScriptPayPalMessages.vue +46 -50
- package/dist/runtime/components/ScriptPayPalMessages.vue.d.ts +37 -23
- package/dist/runtime/components/ScriptStripePricingTable.vue +2 -2
- package/dist/runtime/components/ScriptVimeoPlayer.d.vue.ts +9 -0
- package/dist/runtime/components/ScriptVimeoPlayer.vue +13 -10
- package/dist/runtime/components/ScriptVimeoPlayer.vue.d.ts +9 -0
- package/dist/runtime/components/ScriptXEmbed.d.vue.ts +0 -2
- package/dist/runtime/components/ScriptXEmbed.vue +14 -8
- package/dist/runtime/components/ScriptXEmbed.vue.d.ts +0 -2
- package/dist/runtime/components/ScriptYouTubePlayer.d.vue.ts +2 -2
- package/dist/runtime/components/ScriptYouTubePlayer.vue +11 -5
- package/dist/runtime/components/ScriptYouTubePlayer.vue.d.ts +2 -2
- package/dist/runtime/composables/useScript.js +148 -8
- package/dist/runtime/composables/useScriptEventPage.js +2 -2
- package/dist/runtime/composables/useScriptTriggerConsent.d.ts +10 -0
- package/dist/runtime/composables/useScriptTriggerConsent.js +33 -20
- package/dist/runtime/composables/useScriptTriggerElement.js +1 -1
- package/dist/runtime/composables/useScriptTriggerIdleTimeout.js +1 -1
- package/dist/runtime/devtools-standalone-bridge.client.d.ts +8 -0
- package/dist/runtime/devtools-standalone-bridge.client.js +50 -0
- package/dist/runtime/registry/bing-uet.d.ts +20 -0
- package/dist/runtime/registry/bing-uet.js +29 -0
- package/dist/runtime/registry/bluesky-embed.d.ts +116 -0
- package/dist/runtime/registry/bluesky-embed.js +72 -0
- package/dist/runtime/registry/clarity.d.ts +10 -15
- package/dist/runtime/registry/clarity.js +22 -31
- package/dist/runtime/registry/cloudflare-web-analytics.d.ts +2 -13
- package/dist/runtime/registry/cloudflare-web-analytics.js +2 -14
- package/dist/runtime/registry/crisp.d.ts +10 -40
- package/dist/runtime/registry/crisp.js +2 -33
- package/dist/runtime/registry/databuddy-analytics.d.ts +2 -35
- package/dist/runtime/registry/databuddy-analytics.js +20 -45
- package/dist/runtime/registry/fathom-analytics.d.ts +7 -26
- package/dist/runtime/registry/fathom-analytics.js +3 -25
- package/dist/runtime/registry/google-adsense.d.ts +3 -11
- package/dist/runtime/registry/google-adsense.js +2 -11
- package/dist/runtime/registry/google-analytics.d.ts +3 -5
- package/dist/runtime/registry/google-analytics.js +3 -8
- package/dist/runtime/registry/google-maps.d.ts +3 -9
- package/dist/runtime/registry/google-maps.js +2 -8
- package/dist/runtime/registry/google-recaptcha.d.ts +2 -6
- package/dist/runtime/registry/google-recaptcha.js +4 -12
- package/dist/runtime/registry/google-sign-in.d.ts +2 -13
- package/dist/runtime/registry/google-sign-in.js +2 -22
- package/dist/runtime/registry/google-tag-manager.d.ts +3 -28
- package/dist/runtime/registry/google-tag-manager.js +4 -27
- package/dist/runtime/registry/gravatar.d.ts +26 -0
- package/dist/runtime/registry/gravatar.js +36 -0
- package/dist/runtime/registry/hotjar.d.ts +4 -6
- package/dist/runtime/registry/hotjar.js +2 -5
- package/dist/runtime/registry/instagram-embed.d.ts +3 -18
- package/dist/runtime/registry/instagram-embed.js +4 -19
- package/dist/runtime/registry/intercom.d.ts +5 -13
- package/dist/runtime/registry/intercom.js +2 -12
- package/dist/runtime/registry/matomo-analytics.d.ts +3 -12
- package/dist/runtime/registry/matomo-analytics.js +3 -12
- package/dist/runtime/registry/meta-pixel.d.ts +4 -6
- package/dist/runtime/registry/meta-pixel.js +2 -4
- package/dist/runtime/registry/mixpanel-analytics.d.ts +22 -0
- package/dist/runtime/registry/mixpanel-analytics.js +46 -0
- package/dist/runtime/registry/npm.d.ts +3 -7
- package/dist/runtime/registry/npm.js +2 -9
- package/dist/runtime/registry/paypal.d.ts +4 -25
- package/dist/runtime/registry/paypal.js +3 -66
- package/dist/runtime/registry/plausible-analytics.js +19 -14
- package/dist/runtime/registry/posthog.d.ts +10 -12
- package/dist/runtime/registry/posthog.js +3 -12
- package/dist/runtime/registry/reddit-pixel.d.ts +5 -6
- package/dist/runtime/registry/reddit-pixel.js +2 -4
- package/dist/runtime/registry/rybbit-analytics.d.ts +2 -14
- package/dist/runtime/registry/rybbit-analytics.js +10 -20
- package/dist/runtime/registry/schemas.d.ts +982 -0
- package/dist/runtime/registry/schemas.js +937 -0
- package/dist/runtime/registry/segment.d.ts +2 -5
- package/dist/runtime/registry/segment.js +2 -5
- package/dist/runtime/registry/snapchat-pixel.d.ts +5 -34
- package/dist/runtime/registry/snapchat-pixel.js +2 -20
- package/dist/runtime/registry/stripe.d.ts +3 -4
- package/dist/runtime/registry/stripe.js +2 -4
- package/dist/runtime/registry/tiktok-pixel.d.ts +4 -7
- package/dist/runtime/registry/tiktok-pixel.js +2 -6
- package/dist/runtime/registry/umami-analytics.d.ts +2 -31
- package/dist/runtime/registry/umami-analytics.js +2 -36
- package/dist/runtime/registry/vercel-analytics.d.ts +29 -0
- package/dist/runtime/registry/vercel-analytics.js +84 -0
- package/dist/runtime/registry/vimeo-player.d.ts +2 -2
- package/dist/runtime/registry/vimeo-player.js +1 -1
- package/dist/runtime/registry/x-embed.d.ts +3 -17
- package/dist/runtime/registry/x-embed.js +3 -18
- package/dist/runtime/registry/x-pixel.d.ts +4 -7
- package/dist/runtime/registry/x-pixel.js +2 -5
- package/dist/runtime/registry/youtube-player.d.ts +7 -7
- package/dist/runtime/registry/youtube-player.js +1 -1
- package/dist/runtime/server/bluesky-embed-image.d.ts +2 -0
- package/dist/runtime/server/bluesky-embed-image.js +7 -0
- package/dist/runtime/server/bluesky-embed.d.ts +16 -0
- package/dist/runtime/server/bluesky-embed.js +59 -0
- package/dist/runtime/server/google-maps-geocode-proxy.d.ts +2 -0
- package/dist/runtime/server/google-maps-geocode-proxy.js +34 -0
- package/dist/runtime/server/google-static-maps-proxy.js +2 -13
- package/dist/runtime/server/gravatar-proxy.d.ts +2 -0
- package/dist/runtime/server/gravatar-proxy.js +46 -0
- package/dist/runtime/server/instagram-embed-asset.js +8 -41
- package/dist/runtime/server/instagram-embed-image.js +6 -53
- package/dist/runtime/server/instagram-embed.d.ts +16 -0
- package/dist/runtime/server/instagram-embed.js +176 -35
- package/dist/runtime/server/proxy-handler.js +101 -83
- package/dist/runtime/server/utils/image-proxy.d.ts +12 -0
- package/dist/runtime/server/utils/image-proxy.js +70 -0
- package/dist/runtime/server/utils/privacy.d.ts +1 -10
- package/dist/runtime/server/utils/privacy.js +60 -40
- package/dist/runtime/server/x-embed-image.js +5 -49
- package/dist/runtime/server/x-embed.js +3 -2
- package/dist/runtime/types.d.ts +272 -51
- package/dist/runtime/types.js +0 -2
- package/dist/runtime/utils/pure.d.ts +1 -1
- package/dist/runtime/utils.d.ts +6 -4
- package/dist/runtime/utils.js +31 -14
- package/dist/stats.d.mts +202 -0
- package/dist/stats.d.ts +202 -0
- package/dist/stats.mjs +3875 -0
- package/dist/types-source.d.mts +17 -0
- package/dist/types-source.d.ts +17 -0
- package/dist/types-source.mjs +3414 -0
- package/dist/types.d.mts +4 -2
- package/package.json +35 -61
- package/README.md +0 -86
- package/dist/client/200.html +0 -1
- package/dist/client/404.html +0 -1
- package/dist/client/_nuxt/BJa0m50V.js +0 -1
- package/dist/client/_nuxt/BPQ3VLAy.js +0 -1
- package/dist/client/_nuxt/Ci5iXYuB.js +0 -1
- package/dist/client/_nuxt/DaI2y8Uz.js +0 -162
- package/dist/client/_nuxt/builds/latest.json +0 -1
- package/dist/client/_nuxt/builds/meta/9b4fb16a-3c62-48b0-8295-126cb077b5d3.json +0 -1
- package/dist/client/_nuxt/entry.D45OuV0w.css +0 -1
- package/dist/client/_nuxt/error-404.B57D-jUQ.css +0 -1
- package/dist/client/_nuxt/error-500.DTHUW7BI.css +0 -1
- package/dist/client/_nuxt/vPLZfVXe.js +0 -1
- package/dist/client/index.html +0 -1
- package/dist/runtime/components/ScriptPayPalMarks.d.vue.ts +0 -52
- package/dist/runtime/components/ScriptPayPalMarks.vue +0 -69
- package/dist/runtime/components/ScriptPayPalMarks.vue.d.ts +0 -52
- package/dist/runtime/validation/mock.d.ts +0 -42
- package/dist/runtime/validation/mock.js +0 -21
- package/dist/runtime/validation/valibot.d.ts +0 -1
- package/dist/runtime/validation/valibot.js +0 -1
- /package/dist/{client → devtools-client}/_nuxt/CVO1_9PV.js +0 -0
- /package/dist/{client → devtools-client}/_nuxt/Cp-IABpG.js +0 -0
- /package/dist/{client → devtools-client}/_nuxt/D0r3Knsf.js +0 -0
|
@@ -1,28 +1,6 @@
|
|
|
1
|
-
export interface PlaceholderOptions {
|
|
2
|
-
width?: string | number;
|
|
3
|
-
height?: string | number;
|
|
4
|
-
center?: string;
|
|
5
|
-
zoom?: number;
|
|
6
|
-
size?: string;
|
|
7
|
-
scale?: number;
|
|
8
|
-
format?: 'png' | 'jpg' | 'gif' | 'png8' | 'png32' | 'jpg-baseline';
|
|
9
|
-
maptype?: 'roadmap' | 'satellite' | 'terrain' | 'hybrid';
|
|
10
|
-
language?: string;
|
|
11
|
-
region?: string;
|
|
12
|
-
markers?: string;
|
|
13
|
-
path?: string;
|
|
14
|
-
visible?: string;
|
|
15
|
-
style?: string;
|
|
16
|
-
map_id?: string;
|
|
17
|
-
key?: string;
|
|
18
|
-
signature?: string;
|
|
19
|
-
}
|
|
20
|
-
import type { HTMLAttributes, ImgHTMLAttributes, InjectionKey, Ref, ReservedProps, ShallowRef } from 'vue';
|
|
21
1
|
import type { ElementScriptTrigger } from '#nuxt-scripts/types';
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
mapsApi: Ref<typeof google.maps | undefined>;
|
|
25
|
-
}>;
|
|
2
|
+
import type { HTMLAttributes, ReservedProps, ShallowRef } from 'vue';
|
|
3
|
+
export { MAP_INJECTION_KEY } from './useGoogleMapsResource.js';
|
|
26
4
|
declare const _default: typeof __VLS_export;
|
|
27
5
|
export default _default;
|
|
28
6
|
declare const __VLS_export: __VLS_WithSlots<import("vue").DefineComponent<{
|
|
@@ -30,11 +8,6 @@ declare const __VLS_export: __VLS_WithSlots<import("vue").DefineComponent<{
|
|
|
30
8
|
* Defines the trigger event to load the script.
|
|
31
9
|
*/
|
|
32
10
|
trigger?: ElementScriptTrigger;
|
|
33
|
-
/**
|
|
34
|
-
* Is Google Maps being rendered above the fold?
|
|
35
|
-
* This will load the placeholder image with higher priority.
|
|
36
|
-
*/
|
|
37
|
-
aboveTheFold?: boolean;
|
|
38
11
|
/**
|
|
39
12
|
* Defines the Google Maps API key. Must have access to the Static Maps API as well.
|
|
40
13
|
*/
|
|
@@ -44,9 +17,10 @@ declare const __VLS_export: __VLS_WithSlots<import("vue").DefineComponent<{
|
|
|
44
17
|
*/
|
|
45
18
|
center?: google.maps.LatLng | google.maps.LatLngLiteral | `${string},${string}`;
|
|
46
19
|
/**
|
|
47
|
-
*
|
|
20
|
+
* Zoom level for the map (0-21). Reactive: changing this will update the map.
|
|
21
|
+
* Takes precedence over mapOptions.zoom when provided.
|
|
48
22
|
*/
|
|
49
|
-
|
|
23
|
+
zoom?: number;
|
|
50
24
|
/**
|
|
51
25
|
* Options for the map.
|
|
52
26
|
*/
|
|
@@ -71,24 +45,10 @@ declare const __VLS_export: __VLS_WithSlots<import("vue").DefineComponent<{
|
|
|
71
45
|
* Defines the height of the map
|
|
72
46
|
*/
|
|
73
47
|
height?: number | string;
|
|
74
|
-
/**
|
|
75
|
-
* Customize the placeholder image attributes.
|
|
76
|
-
*
|
|
77
|
-
* @see https://developers.google.com/maps/documentation/maps-static/start.
|
|
78
|
-
*/
|
|
79
|
-
placeholderOptions?: PlaceholderOptions;
|
|
80
|
-
/**
|
|
81
|
-
* Customize the placeholder image attributes.
|
|
82
|
-
*/
|
|
83
|
-
placeholderAttrs?: ImgHTMLAttributes & ReservedProps & Record<string, unknown>;
|
|
84
48
|
/**
|
|
85
49
|
* Customize the root element attributes.
|
|
86
50
|
*/
|
|
87
51
|
rootAttrs?: HTMLAttributes & ReservedProps & Record<string, unknown>;
|
|
88
|
-
/**
|
|
89
|
-
* Extra Markers to add to the map.
|
|
90
|
-
*/
|
|
91
|
-
markers?: (`${string},${string}` | google.maps.marker.AdvancedMarkerElementOptions)[];
|
|
92
52
|
/**
|
|
93
53
|
* Map IDs for light and dark color modes.
|
|
94
54
|
* When provided, the map will automatically switch styles based on color mode.
|
|
@@ -104,10 +64,9 @@ declare const __VLS_export: __VLS_WithSlots<import("vue").DefineComponent<{
|
|
|
104
64
|
*/
|
|
105
65
|
colorMode?: "light" | "dark";
|
|
106
66
|
}, {
|
|
107
|
-
readonly googleMaps: Ref<typeof google.maps | undefined, typeof google.maps | undefined>;
|
|
67
|
+
readonly googleMaps: import("vue").Ref<typeof google.maps | undefined, typeof google.maps | undefined>;
|
|
108
68
|
readonly map: ShallowRef<google.maps.Map | undefined>;
|
|
109
|
-
readonly
|
|
110
|
-
readonly resolveQueryToLatLang: (query: string) => Promise<google.maps.LatLng | undefined>;
|
|
69
|
+
readonly resolveQueryToLatLng: (query: string) => Promise<google.maps.LatLng | google.maps.LatLngLiteral | undefined>;
|
|
111
70
|
readonly importLibrary: {
|
|
112
71
|
(key: "marker"): Promise<google.maps.MarkerLibrary>;
|
|
113
72
|
(key: "places"): Promise<google.maps.PlacesLibrary>;
|
|
@@ -119,10 +78,9 @@ declare const __VLS_export: __VLS_WithSlots<import("vue").DefineComponent<{
|
|
|
119
78
|
}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
|
|
120
79
|
error: () => any;
|
|
121
80
|
ready: (e: {
|
|
122
|
-
readonly googleMaps: Ref<typeof google.maps | undefined, typeof google.maps | undefined>;
|
|
81
|
+
readonly googleMaps: import("vue").Ref<typeof google.maps | undefined, typeof google.maps | undefined>;
|
|
123
82
|
readonly map: ShallowRef<google.maps.Map | undefined>;
|
|
124
|
-
readonly
|
|
125
|
-
readonly resolveQueryToLatLang: (query: string) => Promise<google.maps.LatLng | undefined>;
|
|
83
|
+
readonly resolveQueryToLatLng: (query: string) => Promise<google.maps.LatLng | google.maps.LatLngLiteral | undefined>;
|
|
126
84
|
readonly importLibrary: {
|
|
127
85
|
(key: "marker"): Promise<google.maps.MarkerLibrary>;
|
|
128
86
|
(key: "places"): Promise<google.maps.PlacesLibrary>;
|
|
@@ -137,11 +95,6 @@ declare const __VLS_export: __VLS_WithSlots<import("vue").DefineComponent<{
|
|
|
137
95
|
* Defines the trigger event to load the script.
|
|
138
96
|
*/
|
|
139
97
|
trigger?: ElementScriptTrigger;
|
|
140
|
-
/**
|
|
141
|
-
* Is Google Maps being rendered above the fold?
|
|
142
|
-
* This will load the placeholder image with higher priority.
|
|
143
|
-
*/
|
|
144
|
-
aboveTheFold?: boolean;
|
|
145
98
|
/**
|
|
146
99
|
* Defines the Google Maps API key. Must have access to the Static Maps API as well.
|
|
147
100
|
*/
|
|
@@ -151,9 +104,10 @@ declare const __VLS_export: __VLS_WithSlots<import("vue").DefineComponent<{
|
|
|
151
104
|
*/
|
|
152
105
|
center?: google.maps.LatLng | google.maps.LatLngLiteral | `${string},${string}`;
|
|
153
106
|
/**
|
|
154
|
-
*
|
|
107
|
+
* Zoom level for the map (0-21). Reactive: changing this will update the map.
|
|
108
|
+
* Takes precedence over mapOptions.zoom when provided.
|
|
155
109
|
*/
|
|
156
|
-
|
|
110
|
+
zoom?: number;
|
|
157
111
|
/**
|
|
158
112
|
* Options for the map.
|
|
159
113
|
*/
|
|
@@ -178,24 +132,10 @@ declare const __VLS_export: __VLS_WithSlots<import("vue").DefineComponent<{
|
|
|
178
132
|
* Defines the height of the map
|
|
179
133
|
*/
|
|
180
134
|
height?: number | string;
|
|
181
|
-
/**
|
|
182
|
-
* Customize the placeholder image attributes.
|
|
183
|
-
*
|
|
184
|
-
* @see https://developers.google.com/maps/documentation/maps-static/start.
|
|
185
|
-
*/
|
|
186
|
-
placeholderOptions?: PlaceholderOptions;
|
|
187
|
-
/**
|
|
188
|
-
* Customize the placeholder image attributes.
|
|
189
|
-
*/
|
|
190
|
-
placeholderAttrs?: ImgHTMLAttributes & ReservedProps & Record<string, unknown>;
|
|
191
135
|
/**
|
|
192
136
|
* Customize the root element attributes.
|
|
193
137
|
*/
|
|
194
138
|
rootAttrs?: HTMLAttributes & ReservedProps & Record<string, unknown>;
|
|
195
|
-
/**
|
|
196
|
-
* Extra Markers to add to the map.
|
|
197
|
-
*/
|
|
198
|
-
markers?: (`${string},${string}` | google.maps.marker.AdvancedMarkerElementOptions)[];
|
|
199
139
|
/**
|
|
200
140
|
* Map IDs for light and dark color modes.
|
|
201
141
|
* When provided, the map will automatically switch styles based on color mode.
|
|
@@ -213,10 +153,9 @@ declare const __VLS_export: __VLS_WithSlots<import("vue").DefineComponent<{
|
|
|
213
153
|
}> & Readonly<{
|
|
214
154
|
onError?: (() => any) | undefined;
|
|
215
155
|
onReady?: ((e: {
|
|
216
|
-
readonly googleMaps: Ref<typeof google.maps | undefined, typeof google.maps | undefined>;
|
|
156
|
+
readonly googleMaps: import("vue").Ref<typeof google.maps | undefined, typeof google.maps | undefined>;
|
|
217
157
|
readonly map: ShallowRef<google.maps.Map | undefined>;
|
|
218
|
-
readonly
|
|
219
|
-
readonly resolveQueryToLatLang: (query: string) => Promise<google.maps.LatLng | undefined>;
|
|
158
|
+
readonly resolveQueryToLatLng: (query: string) => Promise<google.maps.LatLng | google.maps.LatLngLiteral | undefined>;
|
|
220
159
|
readonly importLibrary: {
|
|
221
160
|
(key: "marker"): Promise<google.maps.MarkerLibrary>;
|
|
222
161
|
(key: "places"): Promise<google.maps.PlacesLibrary>;
|
|
@@ -228,13 +167,10 @@ declare const __VLS_export: __VLS_WithSlots<import("vue").DefineComponent<{
|
|
|
228
167
|
}) => any) | undefined;
|
|
229
168
|
}>, {
|
|
230
169
|
trigger: ElementScriptTrigger;
|
|
231
|
-
centerMarker: boolean;
|
|
232
170
|
width: number | string;
|
|
233
171
|
height: number | string;
|
|
234
172
|
}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>, {
|
|
235
|
-
placeholder?: (props: {
|
|
236
|
-
placeholder: string;
|
|
237
|
-
}) => any;
|
|
173
|
+
placeholder?: (props: {}) => any;
|
|
238
174
|
} & {
|
|
239
175
|
loading?: (props: {}) => any;
|
|
240
176
|
} & {
|
|
@@ -1,40 +1,36 @@
|
|
|
1
1
|
<script>
|
|
2
|
-
import { computed, onBeforeUnmount, onMounted, ref, watch, toRaw, provide, shallowRef } from "vue";
|
|
3
|
-
import { withQuery } from "ufo";
|
|
4
|
-
import { defu } from "defu";
|
|
5
|
-
import { hash } from "ohash";
|
|
6
|
-
import { tryUseNuxtApp, useHead, useRuntimeConfig } from "nuxt/app";
|
|
7
|
-
import { scriptRuntimeConfig } from "#nuxt-scripts/utils";
|
|
8
2
|
import { useScriptTriggerElement } from "#nuxt-scripts/composables/useScriptTriggerElement";
|
|
9
3
|
import { useScriptGoogleMaps } from "#nuxt-scripts/registry/google-maps";
|
|
4
|
+
import { scriptRuntimeConfig, scriptsPrefix } from "#nuxt-scripts/utils";
|
|
5
|
+
import { defu } from "defu";
|
|
6
|
+
import { tryUseNuxtApp, useHead, useRuntimeConfig } from "nuxt/app";
|
|
7
|
+
import { computed, onBeforeUnmount, onMounted, provide, ref, shallowRef, toRaw, useAttrs, watch } from "vue";
|
|
10
8
|
import ScriptAriaLoadingIndicator from "../ScriptAriaLoadingIndicator.vue";
|
|
11
|
-
|
|
9
|
+
import { MAP_INJECTION_KEY } from "./useGoogleMapsResource";
|
|
10
|
+
const DIGITS_ONLY_RE = /^\d+$/;
|
|
11
|
+
const DIGITS_PX_RE = /^\d+px$/i;
|
|
12
|
+
export { MAP_INJECTION_KEY } from "./useGoogleMapsResource";
|
|
12
13
|
</script>
|
|
13
14
|
|
|
14
15
|
<script setup>
|
|
15
16
|
const props = defineProps({
|
|
16
17
|
trigger: { type: [String, Array, Boolean], required: false, default: ["mouseenter", "mouseover", "mousedown"] },
|
|
17
|
-
aboveTheFold: { type: Boolean, required: false },
|
|
18
18
|
apiKey: { type: String, required: false },
|
|
19
19
|
center: { type: null, required: false },
|
|
20
|
-
|
|
20
|
+
zoom: { type: Number, required: false },
|
|
21
21
|
mapOptions: { type: null, required: false },
|
|
22
22
|
region: { type: String, required: false },
|
|
23
23
|
language: { type: String, required: false },
|
|
24
24
|
version: { type: String, required: false },
|
|
25
25
|
width: { type: [Number, String], required: false, default: 640 },
|
|
26
26
|
height: { type: [Number, String], required: false, default: 400 },
|
|
27
|
-
placeholderOptions: { type: Object, required: false },
|
|
28
|
-
placeholderAttrs: { type: Object, required: false },
|
|
29
27
|
rootAttrs: { type: Object, required: false },
|
|
30
|
-
markers: { type: Array, required: false },
|
|
31
28
|
mapIds: { type: Object, required: false },
|
|
32
29
|
colorMode: { type: String, required: false }
|
|
33
30
|
});
|
|
34
31
|
const emits = defineEmits(["ready", "error"]);
|
|
35
32
|
const apiKey = props.apiKey || scriptRuntimeConfig("googleMaps")?.apiKey;
|
|
36
33
|
const runtimeConfig = useRuntimeConfig();
|
|
37
|
-
const proxyConfig = runtimeConfig.public["nuxt-scripts"]?.googleStaticMapsProxy;
|
|
38
34
|
const nuxtApp = tryUseNuxtApp();
|
|
39
35
|
const nuxtColorMode = nuxtApp?.$colorMode;
|
|
40
36
|
const currentColorMode = computed(() => {
|
|
@@ -50,8 +46,22 @@ const currentMapId = computed(() => {
|
|
|
50
46
|
return props.mapIds[currentColorMode.value] || props.mapIds.light || props.mapOptions?.mapId;
|
|
51
47
|
});
|
|
52
48
|
const mapsApi = ref();
|
|
53
|
-
if (import.meta.dev
|
|
54
|
-
|
|
49
|
+
if (import.meta.dev) {
|
|
50
|
+
if (!apiKey)
|
|
51
|
+
throw new Error("GoogleMaps requires an API key. Enable it in your nuxt.config:\n\n scripts: {\n registry: {\n googleMaps: true\n }\n }\n\nThen set NUXT_PUBLIC_SCRIPTS_GOOGLE_MAPS_API_KEY in your .env file.\n\nAlternatively, pass `api-key` directly on the <ScriptGoogleMaps> component (note: this exposes the key client-side).");
|
|
52
|
+
const attrs = useAttrs();
|
|
53
|
+
const removedProps = {
|
|
54
|
+
markers: "Use child <ScriptGoogleMapsMarker> components instead.",
|
|
55
|
+
centerMarker: 'Use a child <ScriptGoogleMapsMarker :position="center" /> instead.',
|
|
56
|
+
placeholderOptions: "Use <ScriptGoogleMapsStaticMap> inside the #placeholder slot instead.",
|
|
57
|
+
placeholderAttrs: "Use <ScriptGoogleMapsStaticMap> with :img-attrs instead.",
|
|
58
|
+
aboveTheFold: 'Use <ScriptGoogleMapsStaticMap loading="eager"> inside #placeholder instead.'
|
|
59
|
+
};
|
|
60
|
+
for (const [prop, message] of Object.entries(removedProps)) {
|
|
61
|
+
if (prop in attrs)
|
|
62
|
+
console.warn(`[nuxt-scripts] <ScriptGoogleMaps> prop "${prop}" was removed in v1. ${message} See https://scripts.nuxt.com/docs/migration-guide/v0-to-v1`);
|
|
63
|
+
}
|
|
64
|
+
}
|
|
55
65
|
const rootEl = ref();
|
|
56
66
|
const mapEl = ref();
|
|
57
67
|
const centerOverride = ref();
|
|
@@ -67,66 +77,36 @@ const { load, status, onLoaded } = useScriptGoogleMaps({
|
|
|
67
77
|
});
|
|
68
78
|
const options = computed(() => {
|
|
69
79
|
const mapId = props.mapOptions?.styles ? void 0 : currentMapId.value || "map";
|
|
70
|
-
return defu({ center: centerOverride.value, mapId }, props.mapOptions, {
|
|
80
|
+
return defu({ center: centerOverride.value, mapId, zoom: props.zoom }, props.mapOptions, {
|
|
71
81
|
center: props.center,
|
|
72
82
|
zoom: 15
|
|
73
83
|
});
|
|
74
84
|
});
|
|
75
85
|
const ready = ref(false);
|
|
76
86
|
const map = shallowRef();
|
|
77
|
-
const mapMarkers = ref(/* @__PURE__ */ new Map());
|
|
78
87
|
function isLocationQuery(s) {
|
|
79
88
|
return typeof s === "string" && (s.split(",").length > 2 || s.includes("+"));
|
|
80
89
|
}
|
|
81
|
-
function resetMapMarkerMap(_marker) {
|
|
82
|
-
return new Promise(async (resolve) => {
|
|
83
|
-
const marker = _marker instanceof Promise ? await _marker : _marker;
|
|
84
|
-
if (marker) {
|
|
85
|
-
marker.setMap(null);
|
|
86
|
-
}
|
|
87
|
-
resolve();
|
|
88
|
-
});
|
|
89
|
-
}
|
|
90
|
-
function normalizeAdvancedMapMarkerOptions(_options) {
|
|
91
|
-
const opts = typeof _options === "string" ? {
|
|
92
|
-
position: {
|
|
93
|
-
lat: Number.parseFloat(_options.split(",")[0] || "0"),
|
|
94
|
-
lng: Number.parseFloat(_options.split(",")[1] || "0")
|
|
95
|
-
}
|
|
96
|
-
} : _options || {};
|
|
97
|
-
if (!opts.position) {
|
|
98
|
-
opts.position = {
|
|
99
|
-
lat: 0,
|
|
100
|
-
lng: 0
|
|
101
|
-
};
|
|
102
|
-
}
|
|
103
|
-
return opts;
|
|
104
|
-
}
|
|
105
|
-
async function createAdvancedMapMarker(_options) {
|
|
106
|
-
if (!_options)
|
|
107
|
-
return;
|
|
108
|
-
const normalizedOptions = normalizeAdvancedMapMarkerOptions(_options);
|
|
109
|
-
const key = hash({ position: normalizedOptions.position });
|
|
110
|
-
if (mapMarkers.value.has(key))
|
|
111
|
-
return mapMarkers.value.get(key);
|
|
112
|
-
const p = new Promise(async (resolve) => {
|
|
113
|
-
const lib = await importLibrary("marker");
|
|
114
|
-
const mapMarkerOptions = {
|
|
115
|
-
...toRaw(normalizedOptions),
|
|
116
|
-
map: toRaw(map.value)
|
|
117
|
-
};
|
|
118
|
-
resolve(new lib.AdvancedMarkerElement(mapMarkerOptions));
|
|
119
|
-
});
|
|
120
|
-
mapMarkers.value.set(key, p);
|
|
121
|
-
return p;
|
|
122
|
-
}
|
|
123
90
|
const queryToLatLngCache = /* @__PURE__ */ new Map();
|
|
124
|
-
async function
|
|
91
|
+
async function resolveQueryToLatLng(query) {
|
|
125
92
|
if (query && typeof query === "object")
|
|
126
93
|
return Promise.resolve(query);
|
|
127
94
|
if (queryToLatLngCache.has(query)) {
|
|
128
95
|
return Promise.resolve(queryToLatLngCache.get(query));
|
|
129
96
|
}
|
|
97
|
+
const endpoints = runtimeConfig.public["nuxt-scripts"]?.endpoints;
|
|
98
|
+
if (endpoints?.googleMaps) {
|
|
99
|
+
const data = await $fetch(`${scriptsPrefix()}/proxy/google-maps-geocode`, {
|
|
100
|
+
params: { address: query }
|
|
101
|
+
});
|
|
102
|
+
if (data.status === "OK" && data.results?.[0]?.geometry?.location) {
|
|
103
|
+
const loc = data.results[0].geometry.location;
|
|
104
|
+
const latLng = { lat: loc.lat, lng: loc.lng };
|
|
105
|
+
queryToLatLngCache.set(query, latLng);
|
|
106
|
+
return latLng;
|
|
107
|
+
}
|
|
108
|
+
throw new Error(`No location found for ${query}`);
|
|
109
|
+
}
|
|
130
110
|
return new Promise(async (resolve, reject) => {
|
|
131
111
|
if (!mapsApi.value) {
|
|
132
112
|
await load();
|
|
@@ -174,12 +154,21 @@ function importLibrary(key) {
|
|
|
174
154
|
const googleMaps = {
|
|
175
155
|
googleMaps: mapsApi,
|
|
176
156
|
map,
|
|
177
|
-
|
|
178
|
-
resolveQueryToLatLang,
|
|
157
|
+
resolveQueryToLatLng,
|
|
179
158
|
importLibrary
|
|
180
159
|
};
|
|
181
160
|
defineExpose(googleMaps);
|
|
182
|
-
|
|
161
|
+
let activeInfoWindow;
|
|
162
|
+
provide(MAP_INJECTION_KEY, {
|
|
163
|
+
map,
|
|
164
|
+
mapsApi,
|
|
165
|
+
activateInfoWindow(iw) {
|
|
166
|
+
if (activeInfoWindow && activeInfoWindow !== iw) {
|
|
167
|
+
activeInfoWindow.close();
|
|
168
|
+
}
|
|
169
|
+
activeInfoWindow = iw;
|
|
170
|
+
}
|
|
171
|
+
});
|
|
183
172
|
onMounted(() => {
|
|
184
173
|
watch(ready, (v) => {
|
|
185
174
|
if (v) {
|
|
@@ -194,58 +183,16 @@ onMounted(() => {
|
|
|
194
183
|
watch(options, () => {
|
|
195
184
|
map.value?.setOptions(options.value);
|
|
196
185
|
});
|
|
197
|
-
watch([() =>
|
|
198
|
-
if (!map.value) {
|
|
199
|
-
return;
|
|
200
|
-
}
|
|
201
|
-
const nextMap = new Map((props.markers || []).map((m) => [hash({ position: normalizeAdvancedMapMarkerOptions(m).position }), m]));
|
|
202
|
-
const toRemove = new Set([
|
|
203
|
-
...mapMarkers.value.keys()
|
|
204
|
-
].filter((k) => !nextMap.has(k)));
|
|
205
|
-
const toAdd = new Set([...nextMap.keys()].filter((k) => !mapMarkers.value.has(k)));
|
|
206
|
-
const centerHash = hash({ position: options.value.center });
|
|
207
|
-
for (const key of toRemove) {
|
|
208
|
-
if (props.centerMarker && key === centerHash) {
|
|
209
|
-
continue;
|
|
210
|
-
}
|
|
211
|
-
const marker = await mapMarkers.value.get(key);
|
|
212
|
-
if (marker) {
|
|
213
|
-
resetMapMarkerMap(marker).then(() => {
|
|
214
|
-
mapMarkers.value.delete(key);
|
|
215
|
-
});
|
|
216
|
-
}
|
|
217
|
-
}
|
|
218
|
-
for (const k of toAdd) {
|
|
219
|
-
createAdvancedMapMarker(nextMap.get(k));
|
|
220
|
-
}
|
|
221
|
-
}, {
|
|
222
|
-
immediate: true,
|
|
223
|
-
deep: true
|
|
224
|
-
});
|
|
225
|
-
watch([() => options.value.center, ready, map], async (next, prev) => {
|
|
186
|
+
watch([() => options.value.center, ready, map], async (next) => {
|
|
226
187
|
if (!map.value) {
|
|
227
188
|
return;
|
|
228
189
|
}
|
|
229
190
|
let center = toRaw(next[0]);
|
|
230
191
|
if (center) {
|
|
231
192
|
if (isLocationQuery(center) && ready.value) {
|
|
232
|
-
center = await
|
|
193
|
+
center = await resolveQueryToLatLng(center);
|
|
233
194
|
}
|
|
234
195
|
map.value.setCenter(center);
|
|
235
|
-
if (props.centerMarker) {
|
|
236
|
-
if (options.value.mapId) {
|
|
237
|
-
return;
|
|
238
|
-
}
|
|
239
|
-
if (prev[0]) {
|
|
240
|
-
const prevCenterHash = hash({ position: prev[0] });
|
|
241
|
-
if (mapMarkers.value.has(prevCenterHash)) {
|
|
242
|
-
resetMapMarkerMap(mapMarkers.value.get(prevCenterHash)).then(() => {
|
|
243
|
-
mapMarkers.value.delete(prevCenterHash);
|
|
244
|
-
});
|
|
245
|
-
}
|
|
246
|
-
}
|
|
247
|
-
createAdvancedMapMarker({ position: center });
|
|
248
|
-
}
|
|
249
196
|
}
|
|
250
197
|
}, {
|
|
251
198
|
immediate: true
|
|
@@ -260,115 +207,66 @@ onMounted(() => {
|
|
|
260
207
|
};
|
|
261
208
|
map.value = new mapsApi.value.Map(mapEl.value, _options);
|
|
262
209
|
if (center && isLocationQuery(center)) {
|
|
263
|
-
centerOverride.value = await
|
|
210
|
+
centerOverride.value = await resolveQueryToLatLng(center);
|
|
264
211
|
map.value?.setCenter(centerOverride.value);
|
|
265
212
|
}
|
|
266
213
|
ready.value = true;
|
|
267
214
|
});
|
|
268
215
|
});
|
|
269
|
-
if (import.meta.server
|
|
216
|
+
if (import.meta.server) {
|
|
270
217
|
useHead({
|
|
271
218
|
link: [
|
|
272
219
|
{
|
|
273
|
-
rel:
|
|
220
|
+
rel: "dns-prefetch",
|
|
274
221
|
href: "https://maps.googleapis.com"
|
|
275
222
|
}
|
|
276
223
|
]
|
|
277
224
|
});
|
|
278
225
|
}
|
|
279
|
-
function
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
}).filter(Boolean);
|
|
226
|
+
function toCssUnit(value) {
|
|
227
|
+
if (value === void 0)
|
|
228
|
+
return void 0;
|
|
229
|
+
if (typeof value === "number")
|
|
230
|
+
return `${value}px`;
|
|
231
|
+
return value;
|
|
232
|
+
}
|
|
233
|
+
function isPixelValue(value) {
|
|
234
|
+
if (typeof value === "number")
|
|
235
|
+
return true;
|
|
236
|
+
if (typeof value === "string")
|
|
237
|
+
return DIGITS_ONLY_RE.test(value) || DIGITS_PX_RE.test(value);
|
|
238
|
+
return false;
|
|
293
239
|
}
|
|
294
|
-
const placeholder = computed(() => {
|
|
295
|
-
let center = options.value.center;
|
|
296
|
-
if (center && typeof center === "object") {
|
|
297
|
-
center = `${center.lat},${center.lng}`;
|
|
298
|
-
}
|
|
299
|
-
const placeholderOptions = defu(props.placeholderOptions, {
|
|
300
|
-
// only map option values
|
|
301
|
-
zoom: options.value.zoom,
|
|
302
|
-
center
|
|
303
|
-
}, {
|
|
304
|
-
size: `${props.width}x${props.height}`,
|
|
305
|
-
// Only include API key if not using proxy (proxy injects it server-side)
|
|
306
|
-
key: proxyConfig?.enabled ? void 0 : apiKey,
|
|
307
|
-
scale: 2,
|
|
308
|
-
// we assume a high DPI to avoid hydration issues
|
|
309
|
-
style: props.mapOptions?.styles ? transformMapStyles(props.mapOptions.styles) : void 0,
|
|
310
|
-
map_id: currentMapId.value,
|
|
311
|
-
markers: [
|
|
312
|
-
...props.markers || [],
|
|
313
|
-
props.centerMarker && center
|
|
314
|
-
].filter(Boolean).map((m) => {
|
|
315
|
-
if (typeof m === "object" && m.location) {
|
|
316
|
-
m = m.location;
|
|
317
|
-
}
|
|
318
|
-
if (typeof m === "object" && m.lat) {
|
|
319
|
-
return `${m.lat},${m.lng}`;
|
|
320
|
-
}
|
|
321
|
-
return m;
|
|
322
|
-
}).join("|")
|
|
323
|
-
});
|
|
324
|
-
const baseUrl = proxyConfig?.enabled ? "/_scripts/google-static-maps-proxy" : "https://maps.googleapis.com/maps/api/staticmap";
|
|
325
|
-
return withQuery(baseUrl, placeholderOptions);
|
|
326
|
-
});
|
|
327
|
-
const placeholderAttrs = computed(() => {
|
|
328
|
-
return defu(props.placeholderAttrs, {
|
|
329
|
-
src: placeholder.value,
|
|
330
|
-
alt: "Google Maps Static Map",
|
|
331
|
-
loading: props.aboveTheFold ? "eager" : "lazy",
|
|
332
|
-
style: {
|
|
333
|
-
cursor: "pointer",
|
|
334
|
-
width: "100%",
|
|
335
|
-
objectFit: "cover",
|
|
336
|
-
height: "100%"
|
|
337
|
-
}
|
|
338
|
-
});
|
|
339
|
-
});
|
|
340
240
|
const rootAttrs = computed(() => {
|
|
341
241
|
return defu(props.rootAttrs, {
|
|
342
242
|
"aria-busy": status.value === "loading",
|
|
343
|
-
"aria-label": status.value === "awaitingLoad" ? "Google Maps
|
|
243
|
+
"aria-label": status.value === "awaitingLoad" ? "Google Maps" : status.value === "loading" ? "Google Maps Loading" : "Google Maps",
|
|
344
244
|
"aria-live": "polite",
|
|
345
245
|
"role": "application",
|
|
346
246
|
"style": {
|
|
347
247
|
cursor: "pointer",
|
|
348
248
|
position: "relative",
|
|
349
249
|
maxWidth: "100%",
|
|
350
|
-
width:
|
|
351
|
-
height:
|
|
352
|
-
aspectRatio: `${props.width}/${props.height}`
|
|
250
|
+
width: toCssUnit(props.width),
|
|
251
|
+
height: isPixelValue(props.width) && isPixelValue(props.height) ? "auto" : toCssUnit(props.height),
|
|
252
|
+
aspectRatio: isPixelValue(props.width) && isPixelValue(props.height) ? `${props.width}/${props.height}` : void 0
|
|
353
253
|
},
|
|
354
254
|
...trigger instanceof Promise ? trigger.ssrAttrs || {} : {}
|
|
355
255
|
});
|
|
356
256
|
});
|
|
357
|
-
onBeforeUnmount(
|
|
358
|
-
await Promise.all([...mapMarkers.value.entries()].map(([, marker]) => resetMapMarkerMap(marker)));
|
|
359
|
-
mapMarkers.value.clear();
|
|
257
|
+
onBeforeUnmount(() => {
|
|
360
258
|
map.value?.unbindAll();
|
|
361
259
|
map.value = void 0;
|
|
362
260
|
mapEl.value?.firstChild?.remove();
|
|
261
|
+
libraries.clear();
|
|
262
|
+
queryToLatLngCache.clear();
|
|
363
263
|
});
|
|
364
264
|
</script>
|
|
365
265
|
|
|
366
266
|
<template>
|
|
367
267
|
<div ref="rootEl" v-bind="rootAttrs">
|
|
368
268
|
<div v-show="ready" ref="mapEl" :style="{ width: '100%', height: '100%', maxWidth: '100%' }" />
|
|
369
|
-
<slot v-if="!ready"
|
|
370
|
-
<img v-bind="placeholderAttrs">
|
|
371
|
-
</slot>
|
|
269
|
+
<slot v-if="!ready" name="placeholder" />
|
|
372
270
|
<slot v-if="status !== 'awaitingLoad' && !ready" name="loading">
|
|
373
271
|
<ScriptAriaLoadingIndicator />
|
|
374
272
|
</slot>
|