@nuxt/scripts 1.0.0-beta.7 → 1.0.0-rc.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.
- 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/cb4e67c6-e8b7-4205-95b7-708fd96ffab6.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 +940 -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 +19 -87
- package/dist/runtime/components/GoogleMaps/ScriptGoogleMaps.vue +79 -180
- package/dist/runtime/components/GoogleMaps/ScriptGoogleMaps.vue.d.ts +19 -87
- 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 +11 -8
- package/dist/runtime/components/GoogleMaps/ScriptGoogleMapsInfoWindow.vue +57 -57
- package/dist/runtime/components/GoogleMaps/ScriptGoogleMapsInfoWindow.vue.d.ts +11 -8
- package/dist/runtime/components/GoogleMaps/ScriptGoogleMapsMarker.d.vue.ts +24 -42
- package/dist/runtime/components/GoogleMaps/ScriptGoogleMapsMarker.vue +70 -73
- package/dist/runtime/components/GoogleMaps/ScriptGoogleMapsMarker.vue.d.ts +24 -42
- package/dist/runtime/components/GoogleMaps/ScriptGoogleMapsMarkerClusterer.d.vue.ts +42 -5
- package/dist/runtime/components/GoogleMaps/ScriptGoogleMapsMarkerClusterer.vue +83 -37
- package/dist/runtime/components/GoogleMaps/ScriptGoogleMapsMarkerClusterer.vue.d.ts +42 -5
- package/dist/runtime/components/GoogleMaps/ScriptGoogleMapsOverlayView.d.vue.ts +77 -0
- package/dist/runtime/components/GoogleMaps/ScriptGoogleMapsOverlayView.vue +223 -0
- package/dist/runtime/components/GoogleMaps/ScriptGoogleMapsOverlayView.vue.d.ts +77 -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 +166 -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 +84 -0
- package/dist/runtime/components/ScriptBlueskyEmbed.vue +89 -0
- package/dist/runtime/components/ScriptBlueskyEmbed.vue.d.ts +84 -0
- package/dist/runtime/components/ScriptCarbonAds.d.vue.ts +4 -7
- package/dist/runtime/components/ScriptCarbonAds.vue +1 -0
- package/dist/runtime/components/ScriptCarbonAds.vue.d.ts +4 -7
- package/dist/runtime/components/ScriptCrisp.d.vue.ts +7 -11
- package/dist/runtime/components/ScriptCrisp.vue +2 -1
- package/dist/runtime/components/ScriptCrisp.vue.d.ts +7 -11
- package/dist/runtime/components/ScriptGoogleAdsense.d.vue.ts +4 -7
- package/dist/runtime/components/ScriptGoogleAdsense.vue +2 -1
- package/dist/runtime/components/ScriptGoogleAdsense.vue.d.ts +4 -7
- 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 +12 -15
- package/dist/runtime/components/ScriptInstagramEmbed.vue +9 -3
- package/dist/runtime/components/ScriptInstagramEmbed.vue.d.ts +12 -15
- package/dist/runtime/components/ScriptIntercom.d.vue.ts +7 -11
- package/dist/runtime/components/ScriptIntercom.vue +5 -3
- package/dist/runtime/components/ScriptIntercom.vue.d.ts +7 -11
- package/dist/runtime/components/ScriptLemonSqueezy.d.vue.ts +2 -3
- package/dist/runtime/components/ScriptLemonSqueezy.vue +1 -0
- package/dist/runtime/components/ScriptLemonSqueezy.vue.d.ts +2 -3
- package/dist/runtime/components/ScriptPayPalButtons.d.vue.ts +43 -37
- package/dist/runtime/components/ScriptPayPalButtons.vue +49 -79
- package/dist/runtime/components/ScriptPayPalButtons.vue.d.ts +43 -37
- package/dist/runtime/components/ScriptPayPalMessages.d.vue.ts +37 -28
- package/dist/runtime/components/ScriptPayPalMessages.vue +47 -50
- package/dist/runtime/components/ScriptPayPalMessages.vue.d.ts +37 -28
- package/dist/runtime/components/ScriptStripePricingTable.d.vue.ts +5 -9
- package/dist/runtime/components/ScriptStripePricingTable.vue +3 -2
- package/dist/runtime/components/ScriptStripePricingTable.vue.d.ts +5 -9
- package/dist/runtime/components/ScriptVimeoPlayer.d.vue.ts +17 -11
- package/dist/runtime/components/ScriptVimeoPlayer.vue +14 -10
- package/dist/runtime/components/ScriptVimeoPlayer.vue.d.ts +17 -11
- package/dist/runtime/components/ScriptXEmbed.d.vue.ts +10 -13
- package/dist/runtime/components/ScriptXEmbed.vue +15 -8
- package/dist/runtime/components/ScriptXEmbed.vue.d.ts +10 -13
- package/dist/runtime/components/ScriptYouTubePlayer.d.vue.ts +10 -15
- package/dist/runtime/components/ScriptYouTubePlayer.vue +12 -5
- package/dist/runtime/components/ScriptYouTubePlayer.vue.d.ts +10 -15
- 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 +277 -53
- 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 +3835 -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,21 +167,14 @@ 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
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
} & {
|
|
241
|
-
awaitingLoad?: (props: {}) => any;
|
|
242
|
-
} & {
|
|
243
|
-
error?: (props: {}) => any;
|
|
244
|
-
} & {
|
|
245
|
-
default?: (props: {}) => any;
|
|
173
|
+
default?: () => any;
|
|
174
|
+
placeholder?: () => any;
|
|
175
|
+
loading?: () => any;
|
|
176
|
+
awaitingLoad?: () => any;
|
|
177
|
+
error?: () => any;
|
|
246
178
|
}>;
|
|
247
179
|
type __VLS_WithSlots<T, S> = T & {
|
|
248
180
|
new (): {
|
|
@@ -1,40 +1,37 @@
|
|
|
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"]);
|
|
32
|
+
defineSlots();
|
|
35
33
|
const apiKey = props.apiKey || scriptRuntimeConfig("googleMaps")?.apiKey;
|
|
36
34
|
const runtimeConfig = useRuntimeConfig();
|
|
37
|
-
const proxyConfig = runtimeConfig.public["nuxt-scripts"]?.googleStaticMapsProxy;
|
|
38
35
|
const nuxtApp = tryUseNuxtApp();
|
|
39
36
|
const nuxtColorMode = nuxtApp?.$colorMode;
|
|
40
37
|
const currentColorMode = computed(() => {
|
|
@@ -50,8 +47,22 @@ const currentMapId = computed(() => {
|
|
|
50
47
|
return props.mapIds[currentColorMode.value] || props.mapIds.light || props.mapOptions?.mapId;
|
|
51
48
|
});
|
|
52
49
|
const mapsApi = ref();
|
|
53
|
-
if (import.meta.dev
|
|
54
|
-
|
|
50
|
+
if (import.meta.dev) {
|
|
51
|
+
if (!apiKey)
|
|
52
|
+
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).");
|
|
53
|
+
const attrs = useAttrs();
|
|
54
|
+
const removedProps = {
|
|
55
|
+
markers: "Use child <ScriptGoogleMapsMarker> components instead.",
|
|
56
|
+
centerMarker: 'Use a child <ScriptGoogleMapsMarker :position="center" /> instead.',
|
|
57
|
+
placeholderOptions: "Use <ScriptGoogleMapsStaticMap> inside the #placeholder slot instead.",
|
|
58
|
+
placeholderAttrs: "Use <ScriptGoogleMapsStaticMap> with :img-attrs instead.",
|
|
59
|
+
aboveTheFold: 'Use <ScriptGoogleMapsStaticMap loading="eager"> inside #placeholder instead.'
|
|
60
|
+
};
|
|
61
|
+
for (const [prop, message] of Object.entries(removedProps)) {
|
|
62
|
+
if (prop in attrs)
|
|
63
|
+
console.warn(`[nuxt-scripts] <ScriptGoogleMaps> prop "${prop}" was removed in v1. ${message} See https://scripts.nuxt.com/docs/migration-guide/v0-to-v1`);
|
|
64
|
+
}
|
|
65
|
+
}
|
|
55
66
|
const rootEl = ref();
|
|
56
67
|
const mapEl = ref();
|
|
57
68
|
const centerOverride = ref();
|
|
@@ -67,66 +78,36 @@ const { load, status, onLoaded } = useScriptGoogleMaps({
|
|
|
67
78
|
});
|
|
68
79
|
const options = computed(() => {
|
|
69
80
|
const mapId = props.mapOptions?.styles ? void 0 : currentMapId.value || "map";
|
|
70
|
-
return defu({ center: centerOverride.value, mapId }, props.mapOptions, {
|
|
81
|
+
return defu({ center: centerOverride.value, mapId, zoom: props.zoom }, props.mapOptions, {
|
|
71
82
|
center: props.center,
|
|
72
83
|
zoom: 15
|
|
73
84
|
});
|
|
74
85
|
});
|
|
75
86
|
const ready = ref(false);
|
|
76
87
|
const map = shallowRef();
|
|
77
|
-
const mapMarkers = ref(/* @__PURE__ */ new Map());
|
|
78
88
|
function isLocationQuery(s) {
|
|
79
89
|
return typeof s === "string" && (s.split(",").length > 2 || s.includes("+"));
|
|
80
90
|
}
|
|
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
91
|
const queryToLatLngCache = /* @__PURE__ */ new Map();
|
|
124
|
-
async function
|
|
92
|
+
async function resolveQueryToLatLng(query) {
|
|
125
93
|
if (query && typeof query === "object")
|
|
126
94
|
return Promise.resolve(query);
|
|
127
95
|
if (queryToLatLngCache.has(query)) {
|
|
128
96
|
return Promise.resolve(queryToLatLngCache.get(query));
|
|
129
97
|
}
|
|
98
|
+
const endpoints = runtimeConfig.public["nuxt-scripts"]?.endpoints;
|
|
99
|
+
if (endpoints?.googleMaps) {
|
|
100
|
+
const data = await $fetch(`${scriptsPrefix()}/proxy/google-maps-geocode`, {
|
|
101
|
+
params: { address: query }
|
|
102
|
+
});
|
|
103
|
+
if (data.status === "OK" && data.results?.[0]?.geometry?.location) {
|
|
104
|
+
const loc = data.results[0].geometry.location;
|
|
105
|
+
const latLng = { lat: loc.lat, lng: loc.lng };
|
|
106
|
+
queryToLatLngCache.set(query, latLng);
|
|
107
|
+
return latLng;
|
|
108
|
+
}
|
|
109
|
+
throw new Error(`No location found for ${query}`);
|
|
110
|
+
}
|
|
130
111
|
return new Promise(async (resolve, reject) => {
|
|
131
112
|
if (!mapsApi.value) {
|
|
132
113
|
await load();
|
|
@@ -174,12 +155,21 @@ function importLibrary(key) {
|
|
|
174
155
|
const googleMaps = {
|
|
175
156
|
googleMaps: mapsApi,
|
|
176
157
|
map,
|
|
177
|
-
|
|
178
|
-
resolveQueryToLatLang,
|
|
158
|
+
resolveQueryToLatLng,
|
|
179
159
|
importLibrary
|
|
180
160
|
};
|
|
181
161
|
defineExpose(googleMaps);
|
|
182
|
-
|
|
162
|
+
let activeInfoWindow;
|
|
163
|
+
provide(MAP_INJECTION_KEY, {
|
|
164
|
+
map,
|
|
165
|
+
mapsApi,
|
|
166
|
+
activateInfoWindow(iw) {
|
|
167
|
+
if (activeInfoWindow && activeInfoWindow !== iw) {
|
|
168
|
+
activeInfoWindow.close();
|
|
169
|
+
}
|
|
170
|
+
activeInfoWindow = iw;
|
|
171
|
+
}
|
|
172
|
+
});
|
|
183
173
|
onMounted(() => {
|
|
184
174
|
watch(ready, (v) => {
|
|
185
175
|
if (v) {
|
|
@@ -194,58 +184,16 @@ onMounted(() => {
|
|
|
194
184
|
watch(options, () => {
|
|
195
185
|
map.value?.setOptions(options.value);
|
|
196
186
|
});
|
|
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) => {
|
|
187
|
+
watch([() => options.value.center, ready, map], async (next) => {
|
|
226
188
|
if (!map.value) {
|
|
227
189
|
return;
|
|
228
190
|
}
|
|
229
191
|
let center = toRaw(next[0]);
|
|
230
192
|
if (center) {
|
|
231
193
|
if (isLocationQuery(center) && ready.value) {
|
|
232
|
-
center = await
|
|
194
|
+
center = await resolveQueryToLatLng(center);
|
|
233
195
|
}
|
|
234
196
|
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
197
|
}
|
|
250
198
|
}, {
|
|
251
199
|
immediate: true
|
|
@@ -260,115 +208,66 @@ onMounted(() => {
|
|
|
260
208
|
};
|
|
261
209
|
map.value = new mapsApi.value.Map(mapEl.value, _options);
|
|
262
210
|
if (center && isLocationQuery(center)) {
|
|
263
|
-
centerOverride.value = await
|
|
211
|
+
centerOverride.value = await resolveQueryToLatLng(center);
|
|
264
212
|
map.value?.setCenter(centerOverride.value);
|
|
265
213
|
}
|
|
266
214
|
ready.value = true;
|
|
267
215
|
});
|
|
268
216
|
});
|
|
269
|
-
if (import.meta.server
|
|
217
|
+
if (import.meta.server) {
|
|
270
218
|
useHead({
|
|
271
219
|
link: [
|
|
272
220
|
{
|
|
273
|
-
rel:
|
|
221
|
+
rel: "dns-prefetch",
|
|
274
222
|
href: "https://maps.googleapis.com"
|
|
275
223
|
}
|
|
276
224
|
]
|
|
277
225
|
});
|
|
278
226
|
}
|
|
279
|
-
function
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
}).filter(Boolean);
|
|
227
|
+
function toCssUnit(value) {
|
|
228
|
+
if (value === void 0)
|
|
229
|
+
return void 0;
|
|
230
|
+
if (typeof value === "number")
|
|
231
|
+
return `${value}px`;
|
|
232
|
+
return value;
|
|
233
|
+
}
|
|
234
|
+
function isPixelValue(value) {
|
|
235
|
+
if (typeof value === "number")
|
|
236
|
+
return true;
|
|
237
|
+
if (typeof value === "string")
|
|
238
|
+
return DIGITS_ONLY_RE.test(value) || DIGITS_PX_RE.test(value);
|
|
239
|
+
return false;
|
|
293
240
|
}
|
|
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
241
|
const rootAttrs = computed(() => {
|
|
341
242
|
return defu(props.rootAttrs, {
|
|
342
243
|
"aria-busy": status.value === "loading",
|
|
343
|
-
"aria-label": status.value === "awaitingLoad" ? "Google Maps
|
|
244
|
+
"aria-label": status.value === "awaitingLoad" ? "Google Maps" : status.value === "loading" ? "Google Maps Loading" : "Google Maps",
|
|
344
245
|
"aria-live": "polite",
|
|
345
246
|
"role": "application",
|
|
346
247
|
"style": {
|
|
347
248
|
cursor: "pointer",
|
|
348
249
|
position: "relative",
|
|
349
250
|
maxWidth: "100%",
|
|
350
|
-
width:
|
|
351
|
-
height:
|
|
352
|
-
aspectRatio: `${props.width}/${props.height}`
|
|
251
|
+
width: toCssUnit(props.width),
|
|
252
|
+
height: isPixelValue(props.width) && isPixelValue(props.height) ? "auto" : toCssUnit(props.height),
|
|
253
|
+
aspectRatio: isPixelValue(props.width) && isPixelValue(props.height) ? `${props.width}/${props.height}` : void 0
|
|
353
254
|
},
|
|
354
255
|
...trigger instanceof Promise ? trigger.ssrAttrs || {} : {}
|
|
355
256
|
});
|
|
356
257
|
});
|
|
357
|
-
onBeforeUnmount(
|
|
358
|
-
await Promise.all([...mapMarkers.value.entries()].map(([, marker]) => resetMapMarkerMap(marker)));
|
|
359
|
-
mapMarkers.value.clear();
|
|
258
|
+
onBeforeUnmount(() => {
|
|
360
259
|
map.value?.unbindAll();
|
|
361
260
|
map.value = void 0;
|
|
362
261
|
mapEl.value?.firstChild?.remove();
|
|
262
|
+
libraries.clear();
|
|
263
|
+
queryToLatLngCache.clear();
|
|
363
264
|
});
|
|
364
265
|
</script>
|
|
365
266
|
|
|
366
267
|
<template>
|
|
367
268
|
<div ref="rootEl" v-bind="rootAttrs">
|
|
368
269
|
<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>
|
|
270
|
+
<slot v-if="!ready" name="placeholder" />
|
|
372
271
|
<slot v-if="status !== 'awaitingLoad' && !ready" name="loading">
|
|
373
272
|
<ScriptAriaLoadingIndicator />
|
|
374
273
|
</slot>
|