@nuxt/scripts 1.0.0-beta.3 → 1.0.0-beta.31

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 (217) hide show
  1. package/README.md +3 -3
  2. package/dist/client/200.html +1 -1
  3. package/dist/client/404.html +1 -1
  4. package/dist/client/_nuxt/{DdVDSbUA.js → 6CwTUC2b.js} +1 -1
  5. package/dist/client/_nuxt/{CD5B-xvT.js → B71AlSZ1.js} +1 -1
  6. package/dist/client/_nuxt/{Ds2G8aQM.js → BYGJV5dd.js} +1 -1
  7. package/dist/client/_nuxt/V4W-T8W6.js +162 -0
  8. package/dist/client/_nuxt/builds/latest.json +1 -1
  9. package/dist/client/_nuxt/builds/meta/70b59a3e-a025-4a77-a25a-dfadf5b1749d.json +1 -0
  10. package/dist/client/_nuxt/entry.C5SUNdim.css +1 -0
  11. package/dist/client/_nuxt/error-404.1K8v8Su2.css +1 -0
  12. package/dist/client/_nuxt/error-500.B9qvKpQm.css +1 -0
  13. package/dist/client/index.html +1 -1
  14. package/dist/module.d.mts +6 -18
  15. package/dist/module.d.ts +164 -0
  16. package/dist/module.json +1 -1
  17. package/dist/module.mjs +908 -645
  18. package/dist/registry.d.ts +6 -0
  19. package/dist/registry.mjs +244 -78
  20. package/dist/runtime/components/GoogleMaps/ScriptGoogleMaps.d.vue.ts +16 -9
  21. package/dist/runtime/components/GoogleMaps/ScriptGoogleMaps.vue +57 -30
  22. package/dist/runtime/components/GoogleMaps/ScriptGoogleMaps.vue.d.ts +16 -9
  23. package/dist/runtime/components/GoogleMaps/ScriptGoogleMapsAdvancedMarkerElement.d.vue.ts +22 -39
  24. package/dist/runtime/components/GoogleMaps/ScriptGoogleMapsAdvancedMarkerElement.vue +69 -72
  25. package/dist/runtime/components/GoogleMaps/ScriptGoogleMapsAdvancedMarkerElement.vue.d.ts +22 -39
  26. package/dist/runtime/components/GoogleMaps/ScriptGoogleMapsCircle.d.vue.ts +5 -1
  27. package/dist/runtime/components/GoogleMaps/ScriptGoogleMapsCircle.vue +25 -38
  28. package/dist/runtime/components/GoogleMaps/ScriptGoogleMapsCircle.vue.d.ts +5 -1
  29. package/dist/runtime/components/GoogleMaps/ScriptGoogleMapsGeoJson.d.vue.ts +43 -0
  30. package/dist/runtime/components/GoogleMaps/ScriptGoogleMapsGeoJson.vue +61 -0
  31. package/dist/runtime/components/GoogleMaps/ScriptGoogleMapsGeoJson.vue.d.ts +43 -0
  32. package/dist/runtime/components/GoogleMaps/ScriptGoogleMapsHeatmapLayer.d.vue.ts +4 -0
  33. package/dist/runtime/components/GoogleMaps/ScriptGoogleMapsHeatmapLayer.vue +22 -26
  34. package/dist/runtime/components/GoogleMaps/ScriptGoogleMapsHeatmapLayer.vue.d.ts +4 -0
  35. package/dist/runtime/components/GoogleMaps/ScriptGoogleMapsInfoWindow.d.vue.ts +9 -5
  36. package/dist/runtime/components/GoogleMaps/ScriptGoogleMapsInfoWindow.vue +62 -53
  37. package/dist/runtime/components/GoogleMaps/ScriptGoogleMapsInfoWindow.vue.d.ts +9 -5
  38. package/dist/runtime/components/GoogleMaps/ScriptGoogleMapsMarker.d.vue.ts +26 -11
  39. package/dist/runtime/components/GoogleMaps/ScriptGoogleMapsMarker.vue +48 -45
  40. package/dist/runtime/components/GoogleMaps/ScriptGoogleMapsMarker.vue.d.ts +26 -11
  41. package/dist/runtime/components/GoogleMaps/ScriptGoogleMapsMarkerClusterer.d.vue.ts +15 -4
  42. package/dist/runtime/components/GoogleMaps/ScriptGoogleMapsMarkerClusterer.vue +47 -37
  43. package/dist/runtime/components/GoogleMaps/ScriptGoogleMapsMarkerClusterer.vue.d.ts +15 -4
  44. package/dist/runtime/components/GoogleMaps/ScriptGoogleMapsOverlayView.d.vue.ts +77 -0
  45. package/dist/runtime/components/GoogleMaps/ScriptGoogleMapsOverlayView.vue +209 -0
  46. package/dist/runtime/components/GoogleMaps/ScriptGoogleMapsOverlayView.vue.d.ts +77 -0
  47. package/dist/runtime/components/GoogleMaps/ScriptGoogleMapsPinElement.d.vue.ts +4 -0
  48. package/dist/runtime/components/GoogleMaps/ScriptGoogleMapsPinElement.vue +23 -32
  49. package/dist/runtime/components/GoogleMaps/ScriptGoogleMapsPinElement.vue.d.ts +4 -0
  50. package/dist/runtime/components/GoogleMaps/ScriptGoogleMapsPolygon.d.vue.ts +7 -3
  51. package/dist/runtime/components/GoogleMaps/ScriptGoogleMapsPolygon.vue +24 -38
  52. package/dist/runtime/components/GoogleMaps/ScriptGoogleMapsPolygon.vue.d.ts +7 -3
  53. package/dist/runtime/components/GoogleMaps/ScriptGoogleMapsPolyline.d.vue.ts +7 -3
  54. package/dist/runtime/components/GoogleMaps/ScriptGoogleMapsPolyline.vue +24 -38
  55. package/dist/runtime/components/GoogleMaps/ScriptGoogleMapsPolyline.vue.d.ts +7 -3
  56. package/dist/runtime/components/GoogleMaps/ScriptGoogleMapsRectangle.d.vue.ts +7 -3
  57. package/dist/runtime/components/GoogleMaps/ScriptGoogleMapsRectangle.vue +25 -38
  58. package/dist/runtime/components/GoogleMaps/ScriptGoogleMapsRectangle.vue.d.ts +7 -3
  59. package/dist/runtime/components/GoogleMaps/bindGoogleMapsEvents.d.ts +13 -0
  60. package/dist/runtime/components/GoogleMaps/bindGoogleMapsEvents.js +8 -0
  61. package/dist/runtime/components/GoogleMaps/injectionKeys.d.ts +13 -0
  62. package/dist/runtime/components/GoogleMaps/injectionKeys.js +3 -0
  63. package/dist/runtime/components/GoogleMaps/useGoogleMapsResource.d.ts +26 -0
  64. package/dist/runtime/components/GoogleMaps/useGoogleMapsResource.js +42 -0
  65. package/dist/runtime/components/ScriptBlueskyEmbed.d.vue.ts +87 -0
  66. package/dist/runtime/components/ScriptBlueskyEmbed.vue +85 -0
  67. package/dist/runtime/components/ScriptBlueskyEmbed.vue.d.ts +87 -0
  68. package/dist/runtime/components/ScriptCrisp.vue +1 -1
  69. package/dist/runtime/components/ScriptGoogleAdsense.vue +1 -1
  70. package/dist/runtime/components/ScriptGravatar.d.vue.ts +22 -0
  71. package/dist/runtime/components/ScriptGravatar.vue +46 -0
  72. package/dist/runtime/components/ScriptGravatar.vue.d.ts +22 -0
  73. package/dist/runtime/components/ScriptInstagramEmbed.d.vue.ts +2 -2
  74. package/dist/runtime/components/ScriptInstagramEmbed.vue +5 -2
  75. package/dist/runtime/components/ScriptInstagramEmbed.vue.d.ts +2 -2
  76. package/dist/runtime/components/ScriptIntercom.vue +4 -3
  77. package/dist/runtime/components/ScriptPayPalButtons.d.vue.ts +43 -32
  78. package/dist/runtime/components/ScriptPayPalButtons.vue +48 -79
  79. package/dist/runtime/components/ScriptPayPalButtons.vue.d.ts +43 -32
  80. package/dist/runtime/components/ScriptPayPalMessages.d.vue.ts +37 -23
  81. package/dist/runtime/components/ScriptPayPalMessages.vue +46 -50
  82. package/dist/runtime/components/ScriptPayPalMessages.vue.d.ts +37 -23
  83. package/dist/runtime/components/ScriptStripePricingTable.vue +2 -2
  84. package/dist/runtime/components/ScriptVimeoPlayer.d.vue.ts +9 -0
  85. package/dist/runtime/components/ScriptVimeoPlayer.vue +13 -10
  86. package/dist/runtime/components/ScriptVimeoPlayer.vue.d.ts +9 -0
  87. package/dist/runtime/components/ScriptXEmbed.d.vue.ts +2 -2
  88. package/dist/runtime/components/ScriptXEmbed.vue +6 -3
  89. package/dist/runtime/components/ScriptXEmbed.vue.d.ts +2 -2
  90. package/dist/runtime/components/ScriptYouTubePlayer.d.vue.ts +2 -2
  91. package/dist/runtime/components/ScriptYouTubePlayer.vue +11 -5
  92. package/dist/runtime/components/ScriptYouTubePlayer.vue.d.ts +2 -2
  93. package/dist/runtime/composables/useScript.js +13 -6
  94. package/dist/runtime/composables/useScriptEventPage.js +2 -2
  95. package/dist/runtime/composables/useScriptTriggerConsent.d.ts +10 -0
  96. package/dist/runtime/composables/useScriptTriggerConsent.js +33 -20
  97. package/dist/runtime/composables/useScriptTriggerElement.js +1 -1
  98. package/dist/runtime/composables/useScriptTriggerIdleTimeout.js +1 -1
  99. package/dist/runtime/registry/bing-uet.d.ts +20 -0
  100. package/dist/runtime/registry/bing-uet.js +29 -0
  101. package/dist/runtime/registry/bluesky-embed.d.ts +116 -0
  102. package/dist/runtime/registry/bluesky-embed.js +72 -0
  103. package/dist/runtime/registry/clarity.d.ts +10 -15
  104. package/dist/runtime/registry/clarity.js +22 -31
  105. package/dist/runtime/registry/cloudflare-web-analytics.d.ts +2 -13
  106. package/dist/runtime/registry/cloudflare-web-analytics.js +2 -14
  107. package/dist/runtime/registry/crisp.d.ts +10 -40
  108. package/dist/runtime/registry/crisp.js +2 -33
  109. package/dist/runtime/registry/databuddy-analytics.d.ts +2 -35
  110. package/dist/runtime/registry/databuddy-analytics.js +20 -45
  111. package/dist/runtime/registry/fathom-analytics.d.ts +7 -26
  112. package/dist/runtime/registry/fathom-analytics.js +2 -24
  113. package/dist/runtime/registry/google-adsense.d.ts +3 -11
  114. package/dist/runtime/registry/google-adsense.js +2 -11
  115. package/dist/runtime/registry/google-analytics.d.ts +3 -5
  116. package/dist/runtime/registry/google-analytics.js +3 -8
  117. package/dist/runtime/registry/google-maps.d.ts +3 -9
  118. package/dist/runtime/registry/google-maps.js +2 -8
  119. package/dist/runtime/registry/google-recaptcha.d.ts +2 -6
  120. package/dist/runtime/registry/google-recaptcha.js +4 -12
  121. package/dist/runtime/registry/google-sign-in.d.ts +2 -13
  122. package/dist/runtime/registry/google-sign-in.js +2 -22
  123. package/dist/runtime/registry/google-tag-manager.d.ts +3 -28
  124. package/dist/runtime/registry/google-tag-manager.js +4 -27
  125. package/dist/runtime/registry/gravatar.d.ts +26 -0
  126. package/dist/runtime/registry/gravatar.js +33 -0
  127. package/dist/runtime/registry/hotjar.d.ts +4 -6
  128. package/dist/runtime/registry/hotjar.js +2 -5
  129. package/dist/runtime/registry/instagram-embed.d.ts +3 -18
  130. package/dist/runtime/registry/instagram-embed.js +4 -19
  131. package/dist/runtime/registry/intercom.d.ts +4 -12
  132. package/dist/runtime/registry/intercom.js +2 -12
  133. package/dist/runtime/registry/matomo-analytics.d.ts +3 -12
  134. package/dist/runtime/registry/matomo-analytics.js +3 -12
  135. package/dist/runtime/registry/meta-pixel.d.ts +4 -6
  136. package/dist/runtime/registry/meta-pixel.js +2 -4
  137. package/dist/runtime/registry/mixpanel-analytics.d.ts +22 -0
  138. package/dist/runtime/registry/mixpanel-analytics.js +46 -0
  139. package/dist/runtime/registry/npm.d.ts +3 -7
  140. package/dist/runtime/registry/npm.js +2 -9
  141. package/dist/runtime/registry/paypal.d.ts +4 -25
  142. package/dist/runtime/registry/paypal.js +3 -66
  143. package/dist/runtime/registry/plausible-analytics.js +18 -13
  144. package/dist/runtime/registry/posthog.d.ts +10 -12
  145. package/dist/runtime/registry/posthog.js +7 -14
  146. package/dist/runtime/registry/reddit-pixel.d.ts +5 -6
  147. package/dist/runtime/registry/reddit-pixel.js +2 -4
  148. package/dist/runtime/registry/rybbit-analytics.d.ts +2 -14
  149. package/dist/runtime/registry/rybbit-analytics.js +10 -20
  150. package/dist/runtime/registry/schemas.d.ts +982 -0
  151. package/dist/runtime/registry/schemas.js +937 -0
  152. package/dist/runtime/registry/segment.d.ts +2 -5
  153. package/dist/runtime/registry/segment.js +2 -5
  154. package/dist/runtime/registry/snapchat-pixel.d.ts +4 -33
  155. package/dist/runtime/registry/snapchat-pixel.js +2 -20
  156. package/dist/runtime/registry/stripe.d.ts +3 -4
  157. package/dist/runtime/registry/stripe.js +2 -4
  158. package/dist/runtime/registry/tiktok-pixel.d.ts +4 -7
  159. package/dist/runtime/registry/tiktok-pixel.js +2 -6
  160. package/dist/runtime/registry/umami-analytics.d.ts +2 -31
  161. package/dist/runtime/registry/umami-analytics.js +2 -36
  162. package/dist/runtime/registry/vercel-analytics.d.ts +29 -0
  163. package/dist/runtime/registry/vercel-analytics.js +84 -0
  164. package/dist/runtime/registry/vimeo-player.d.ts +2 -2
  165. package/dist/runtime/registry/vimeo-player.js +1 -1
  166. package/dist/runtime/registry/x-embed.d.ts +3 -17
  167. package/dist/runtime/registry/x-embed.js +3 -18
  168. package/dist/runtime/registry/x-pixel.d.ts +4 -7
  169. package/dist/runtime/registry/x-pixel.js +2 -5
  170. package/dist/runtime/registry/youtube-player.d.ts +7 -7
  171. package/dist/runtime/registry/youtube-player.js +1 -1
  172. package/dist/runtime/server/{sw-handler.d.ts → bluesky-embed-image.d.ts} +1 -1
  173. package/dist/runtime/server/bluesky-embed-image.js +7 -0
  174. package/dist/runtime/server/bluesky-embed.d.ts +16 -0
  175. package/dist/runtime/server/bluesky-embed.js +59 -0
  176. package/dist/runtime/server/google-maps-geocode-proxy.d.ts +2 -0
  177. package/dist/runtime/server/google-maps-geocode-proxy.js +34 -0
  178. package/dist/runtime/server/google-static-maps-proxy.js +2 -13
  179. package/dist/runtime/server/gravatar-proxy.d.ts +2 -0
  180. package/dist/runtime/server/gravatar-proxy.js +46 -0
  181. package/dist/runtime/server/instagram-embed-asset.js +8 -41
  182. package/dist/runtime/server/instagram-embed-image.js +6 -53
  183. package/dist/runtime/server/instagram-embed.d.ts +16 -0
  184. package/dist/runtime/server/instagram-embed.js +173 -35
  185. package/dist/runtime/server/proxy-handler.js +144 -113
  186. package/dist/runtime/server/utils/image-proxy.d.ts +12 -0
  187. package/dist/runtime/server/utils/image-proxy.js +70 -0
  188. package/dist/runtime/server/utils/privacy.d.ts +1 -2
  189. package/dist/runtime/server/utils/privacy.js +54 -34
  190. package/dist/runtime/server/x-embed-image.js +5 -49
  191. package/dist/runtime/server/x-embed.js +3 -2
  192. package/dist/runtime/types.d.ts +74 -40
  193. package/dist/runtime/utils/pure.d.ts +1 -5
  194. package/dist/runtime/utils/pure.js +0 -67
  195. package/dist/runtime/utils.d.ts +4 -3
  196. package/dist/runtime/utils.js +24 -10
  197. package/dist/shared/scripts.D7e2ENu6.mjs +211 -0
  198. package/dist/stats.d.mts +202 -0
  199. package/dist/stats.d.ts +202 -0
  200. package/dist/stats.mjs +3860 -0
  201. package/dist/types-source.d.mts +17 -0
  202. package/dist/types-source.d.ts +17 -0
  203. package/dist/types-source.mjs +3614 -0
  204. package/package.json +52 -38
  205. package/dist/client/_nuxt/D-kOnTuH.js +0 -162
  206. package/dist/client/_nuxt/builds/meta/f1474569-6922-450d-bc3f-4fd5f3e1391a.json +0 -1
  207. package/dist/client/_nuxt/entry.D45OuV0w.css +0 -1
  208. package/dist/client/_nuxt/error-404.B57D-jUQ.css +0 -1
  209. package/dist/client/_nuxt/error-500.DTHUW7BI.css +0 -1
  210. package/dist/runtime/components/ScriptPayPalMarks.d.vue.ts +0 -52
  211. package/dist/runtime/components/ScriptPayPalMarks.vue +0 -69
  212. package/dist/runtime/components/ScriptPayPalMarks.vue.d.ts +0 -52
  213. package/dist/runtime/plugins/sw-register.client.d.ts +0 -2
  214. package/dist/runtime/plugins/sw-register.client.js +0 -12
  215. package/dist/runtime/server/sw-handler.js +0 -25
  216. package/dist/runtime/sw/proxy-sw.template.d.ts +0 -1
  217. package/dist/runtime/sw/proxy-sw.template.js +0 -54
@@ -0,0 +1,77 @@
1
+ type OverlayAnchor = 'center' | 'top-left' | 'top-center' | 'top-right' | 'bottom-left' | 'bottom-center' | 'bottom-right' | 'left-center' | 'right-center';
2
+ type OverlayPane = 'mapPane' | 'overlayLayer' | 'markerLayer' | 'overlayMouseTarget' | 'floatPane';
3
+ type __VLS_Props = {
4
+ /**
5
+ * Geographic position for the overlay. Falls back to parent marker position if omitted.
6
+ * @see https://developers.google.com/maps/documentation/javascript/reference/overlay-view#OverlayView
7
+ */
8
+ position?: google.maps.LatLngLiteral;
9
+ /**
10
+ * Anchor point of the overlay relative to its position.
11
+ * @default 'bottom-center'
12
+ */
13
+ anchor?: OverlayAnchor;
14
+ /**
15
+ * Pixel offset from the anchor position.
16
+ */
17
+ offset?: {
18
+ x: number;
19
+ y: number;
20
+ };
21
+ /**
22
+ * The map pane on which to render the overlay.
23
+ * @default 'floatPane'
24
+ * @see https://developers.google.com/maps/documentation/javascript/reference/overlay-view#MapPanes
25
+ */
26
+ pane?: OverlayPane;
27
+ /**
28
+ * CSS z-index for the overlay element.
29
+ */
30
+ zIndex?: number;
31
+ /**
32
+ * Whether to block map click and gesture events from passing through the overlay.
33
+ * @default true
34
+ */
35
+ blockMapInteraction?: boolean;
36
+ /**
37
+ * Pan the map so the overlay is fully visible when opened, similar to InfoWindow behavior.
38
+ * Set to `true` for default 40px padding, or a number for custom padding.
39
+ * @default true
40
+ */
41
+ panOnOpen?: boolean | number;
42
+ /**
43
+ * Automatically hide the overlay when its parent marker joins a cluster (on zoom out).
44
+ * Only applies when nested inside a ScriptGoogleMapsMarkerClusterer.
45
+ * @default true
46
+ */
47
+ hideWhenClustered?: boolean;
48
+ };
49
+ type __VLS_ModelProps = {
50
+ 'open'?: boolean;
51
+ };
52
+ type __VLS_PublicProps = __VLS_Props & __VLS_ModelProps;
53
+ declare var __VLS_1: {};
54
+ type __VLS_Slots = {} & {
55
+ default?: (props: typeof __VLS_1) => any;
56
+ };
57
+ declare const __VLS_base: import("vue").DefineComponent<__VLS_PublicProps, {
58
+ overlay: import("vue").ShallowRef<google.maps.OverlayView | undefined>;
59
+ }, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
60
+ "update:open": (value: boolean) => any;
61
+ }, string, import("vue").PublicProps, Readonly<__VLS_PublicProps> & Readonly<{
62
+ "onUpdate:open"?: ((value: boolean) => any) | undefined;
63
+ }>, {
64
+ anchor: OverlayAnchor;
65
+ pane: OverlayPane;
66
+ blockMapInteraction: boolean;
67
+ panOnOpen: boolean | number;
68
+ hideWhenClustered: boolean;
69
+ }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
70
+ declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
71
+ declare const _default: typeof __VLS_export;
72
+ export default _default;
73
+ type __VLS_WithSlots<T, S> = T & {
74
+ new (): {
75
+ $slots: S;
76
+ };
77
+ };
@@ -1,4 +1,8 @@
1
1
  type __VLS_Props = {
2
+ /**
3
+ * Configuration options for the pin element that customizes the visual appearance of the marker.
4
+ * @see https://developers.google.com/maps/documentation/javascript/reference/advanced-markers#PinElementOptions
5
+ */
2
6
  options?: Omit<google.maps.marker.PinElementOptions, 'map'>;
3
7
  };
4
8
  declare const __VLS_export: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
@@ -1,43 +1,34 @@
1
- <template>
2
-
3
- </template>
4
-
5
1
  <script setup>
6
- import { inject, onUnmounted, shallowRef } from "vue";
7
- import { whenever } from "@vueuse/core";
8
- import { MAP_INJECTION_KEY } from "./ScriptGoogleMaps.vue";
9
- import { ADVANCED_MARKER_ELEMENT_INJECTION_KEY } from "./ScriptGoogleMapsAdvancedMarkerElement.vue";
2
+ import { inject, watch } from "vue";
3
+ import { ADVANCED_MARKER_ELEMENT_INJECTION_KEY } from "./injectionKeys";
4
+ import { useGoogleMapsResource } from "./useGoogleMapsResource";
10
5
  const props = defineProps({
11
6
  options: { type: Object, required: false }
12
7
  });
13
- const mapContext = inject(MAP_INJECTION_KEY, void 0);
14
8
  const advancedMarkerElementContext = inject(ADVANCED_MARKER_ELEMENT_INJECTION_KEY, void 0);
15
- const pinElement = shallowRef(void 0);
16
- whenever(
17
- () => mapContext?.map.value && mapContext.mapsApi.value && advancedMarkerElementContext?.advancedMarkerElement.value,
18
- async () => {
19
- await mapContext.mapsApi.value.importLibrary("marker");
20
- pinElement.value = new mapContext.mapsApi.value.marker.PinElement(props.options);
9
+ const pinElement = useGoogleMapsResource({
10
+ ready: () => !!advancedMarkerElementContext?.advancedMarkerElement.value,
11
+ async create({ mapsApi }) {
12
+ await mapsApi.importLibrary("marker");
13
+ const pin = new mapsApi.marker.PinElement(props.options);
21
14
  if (advancedMarkerElementContext?.advancedMarkerElement.value) {
22
- advancedMarkerElementContext.advancedMarkerElement.value.content = pinElement.value.element;
15
+ advancedMarkerElementContext.advancedMarkerElement.value.content = pin.element;
23
16
  }
24
- whenever(() => props.options, (options) => {
25
- if (pinElement.value && options) {
26
- Object.assign(pinElement.value, options);
27
- }
28
- }, {
29
- deep: true
30
- });
17
+ return pin;
31
18
  },
32
- {
33
- immediate: true,
34
- once: true
35
- }
36
- );
37
- onUnmounted(() => {
38
- if (advancedMarkerElementContext?.advancedMarkerElement.value && pinElement.value) {
39
- advancedMarkerElementContext.advancedMarkerElement.value.content = null;
19
+ cleanup() {
20
+ if (advancedMarkerElementContext?.advancedMarkerElement.value) {
21
+ advancedMarkerElementContext.advancedMarkerElement.value.content = null;
22
+ }
40
23
  }
41
- pinElement.value = void 0;
42
24
  });
25
+ watch(() => props.options, (options) => {
26
+ if (pinElement.value && options) {
27
+ Object.assign(pinElement.value, options);
28
+ }
29
+ }, { deep: true });
43
30
  </script>
31
+
32
+ <template>
33
+
34
+ </template>
@@ -1,4 +1,8 @@
1
1
  type __VLS_Props = {
2
+ /**
3
+ * Configuration options for the pin element that customizes the visual appearance of the marker.
4
+ * @see https://developers.google.com/maps/documentation/javascript/reference/advanced-markers#PinElementOptions
5
+ */
2
6
  options?: Omit<google.maps.marker.PinElementOptions, 'map'>;
3
7
  };
4
8
  declare const __VLS_export: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
@@ -1,9 +1,13 @@
1
1
  type __VLS_Props = {
2
+ /**
3
+ * Configuration options for the polygon overlay.
4
+ * @see https://developers.google.com/maps/documentation/javascript/reference/polygon#PolygonOptions
5
+ */
2
6
  options?: Omit<google.maps.PolygonOptions, 'map'>;
3
7
  };
4
- declare const __VLS_export: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {} & {
5
- click: (payload: google.maps.PolyMouseEvent) => any;
8
+ declare const __VLS_export: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
6
9
  contextmenu: (payload: google.maps.PolyMouseEvent) => any;
10
+ click: (payload: google.maps.PolyMouseEvent) => any;
7
11
  dblclick: (payload: google.maps.PolyMouseEvent) => any;
8
12
  drag: (payload: google.maps.MapMouseEvent) => any;
9
13
  dragend: (payload: google.maps.MapMouseEvent) => any;
@@ -14,8 +18,8 @@ declare const __VLS_export: import("vue").DefineComponent<__VLS_Props, {}, {}, {
14
18
  mouseover: (payload: google.maps.PolyMouseEvent) => any;
15
19
  mouseup: (payload: google.maps.PolyMouseEvent) => any;
16
20
  }, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{
17
- onClick?: ((payload: google.maps.PolyMouseEvent) => any) | undefined;
18
21
  onContextmenu?: ((payload: google.maps.PolyMouseEvent) => any) | undefined;
22
+ onClick?: ((payload: google.maps.PolyMouseEvent) => any) | undefined;
19
23
  onDblclick?: ((payload: google.maps.PolyMouseEvent) => any) | undefined;
20
24
  onDrag?: ((payload: google.maps.MapMouseEvent) => any) | undefined;
21
25
  onDragend?: ((payload: google.maps.MapMouseEvent) => any) | undefined;
@@ -1,14 +1,11 @@
1
- <template>
2
-
3
- </template>
4
-
5
1
  <script setup>
6
- import { inject, onUnmounted } from "vue";
7
- import { whenever } from "@vueuse/core";
8
- import { MAP_INJECTION_KEY } from "./ScriptGoogleMaps.vue";
2
+ import { watch } from "vue";
3
+ import { bindGoogleMapsEvents } from "./bindGoogleMapsEvents";
4
+ import { useGoogleMapsResource } from "./useGoogleMapsResource";
9
5
  const props = defineProps({
10
6
  options: { type: Object, required: false }
11
7
  });
8
+ const emit = defineEmits(["click", "contextmenu", "dblclick", "mousedown", "mousemove", "mouseout", "mouseover", "mouseup", "drag", "dragend", "dragstart"]);
12
9
  const eventsWithPolyMouseEventPayload = [
13
10
  "click",
14
11
  "contextmenu",
@@ -24,37 +21,26 @@ const eventsWithMapMouseEventPayload = [
24
21
  "dragend",
25
22
  "dragstart"
26
23
  ];
27
- const emit = defineEmits([]);
28
- const mapContext = inject(MAP_INJECTION_KEY, void 0);
29
- let polygon = void 0;
30
- whenever(() => mapContext?.map.value && mapContext.mapsApi.value, () => {
31
- polygon = new mapContext.mapsApi.value.Polygon({
32
- map: mapContext.map.value,
33
- ...props.options
34
- });
35
- setupPolygonEventListeners(polygon);
36
- whenever(() => props.options, (options) => {
37
- polygon?.setOptions(options);
38
- }, {
39
- deep: true
40
- });
41
- }, {
42
- immediate: true,
43
- once: true
44
- });
45
- onUnmounted(() => {
46
- if (!polygon || !mapContext?.mapsApi.value) {
47
- return;
24
+ const polygon = useGoogleMapsResource({
25
+ create({ mapsApi, map }) {
26
+ const p = new mapsApi.Polygon({ map, ...props.options });
27
+ bindGoogleMapsEvents(p, emit, {
28
+ withPayload: [...eventsWithPolyMouseEventPayload, ...eventsWithMapMouseEventPayload]
29
+ });
30
+ return p;
31
+ },
32
+ cleanup(p, { mapsApi }) {
33
+ mapsApi.event.clearInstanceListeners(p);
34
+ p.setMap(null);
48
35
  }
49
- mapContext.mapsApi.value.event.clearInstanceListeners(polygon);
50
- polygon.setMap(null);
51
36
  });
52
- function setupPolygonEventListeners(polygon2) {
53
- eventsWithPolyMouseEventPayload.forEach((event) => {
54
- polygon2.addListener(event, (payload) => emit(event, payload));
55
- });
56
- eventsWithMapMouseEventPayload.forEach((event) => {
57
- polygon2.addListener(event, (payload) => emit(event, payload));
58
- });
59
- }
37
+ watch(() => props.options, (options) => {
38
+ if (polygon.value && options) {
39
+ polygon.value.setOptions(options);
40
+ }
41
+ }, { deep: true });
60
42
  </script>
43
+
44
+ <template>
45
+
46
+ </template>
@@ -1,9 +1,13 @@
1
1
  type __VLS_Props = {
2
+ /**
3
+ * Configuration options for the polygon overlay.
4
+ * @see https://developers.google.com/maps/documentation/javascript/reference/polygon#PolygonOptions
5
+ */
2
6
  options?: Omit<google.maps.PolygonOptions, 'map'>;
3
7
  };
4
- declare const __VLS_export: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {} & {
5
- click: (payload: google.maps.PolyMouseEvent) => any;
8
+ declare const __VLS_export: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
6
9
  contextmenu: (payload: google.maps.PolyMouseEvent) => any;
10
+ click: (payload: google.maps.PolyMouseEvent) => any;
7
11
  dblclick: (payload: google.maps.PolyMouseEvent) => any;
8
12
  drag: (payload: google.maps.MapMouseEvent) => any;
9
13
  dragend: (payload: google.maps.MapMouseEvent) => any;
@@ -14,8 +18,8 @@ declare const __VLS_export: import("vue").DefineComponent<__VLS_Props, {}, {}, {
14
18
  mouseover: (payload: google.maps.PolyMouseEvent) => any;
15
19
  mouseup: (payload: google.maps.PolyMouseEvent) => any;
16
20
  }, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{
17
- onClick?: ((payload: google.maps.PolyMouseEvent) => any) | undefined;
18
21
  onContextmenu?: ((payload: google.maps.PolyMouseEvent) => any) | undefined;
22
+ onClick?: ((payload: google.maps.PolyMouseEvent) => any) | undefined;
19
23
  onDblclick?: ((payload: google.maps.PolyMouseEvent) => any) | undefined;
20
24
  onDrag?: ((payload: google.maps.MapMouseEvent) => any) | undefined;
21
25
  onDragend?: ((payload: google.maps.MapMouseEvent) => any) | undefined;
@@ -1,9 +1,13 @@
1
1
  type __VLS_Props = {
2
+ /**
3
+ * Configuration options for the polyline overlay.
4
+ * @see https://developers.google.com/maps/documentation/javascript/reference/polygon#PolylineOptions
5
+ */
2
6
  options?: Omit<google.maps.PolylineOptions, 'map'>;
3
7
  };
4
- declare const __VLS_export: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {} & {
5
- click: (payload: google.maps.PolyMouseEvent) => any;
8
+ declare const __VLS_export: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
6
9
  contextmenu: (payload: google.maps.PolyMouseEvent) => any;
10
+ click: (payload: google.maps.PolyMouseEvent) => any;
7
11
  dblclick: (payload: google.maps.PolyMouseEvent) => any;
8
12
  drag: (payload: google.maps.MapMouseEvent) => any;
9
13
  dragend: (payload: google.maps.MapMouseEvent) => any;
@@ -14,8 +18,8 @@ declare const __VLS_export: import("vue").DefineComponent<__VLS_Props, {}, {}, {
14
18
  mouseover: (payload: google.maps.PolyMouseEvent) => any;
15
19
  mouseup: (payload: google.maps.PolyMouseEvent) => any;
16
20
  }, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{
17
- onClick?: ((payload: google.maps.PolyMouseEvent) => any) | undefined;
18
21
  onContextmenu?: ((payload: google.maps.PolyMouseEvent) => any) | undefined;
22
+ onClick?: ((payload: google.maps.PolyMouseEvent) => any) | undefined;
19
23
  onDblclick?: ((payload: google.maps.PolyMouseEvent) => any) | undefined;
20
24
  onDrag?: ((payload: google.maps.MapMouseEvent) => any) | undefined;
21
25
  onDragend?: ((payload: google.maps.MapMouseEvent) => any) | undefined;
@@ -1,14 +1,11 @@
1
- <template>
2
-
3
- </template>
4
-
5
1
  <script setup>
6
- import { inject, onUnmounted } from "vue";
7
- import { whenever } from "@vueuse/core";
8
- import { MAP_INJECTION_KEY } from "./ScriptGoogleMaps.vue";
2
+ import { watch } from "vue";
3
+ import { bindGoogleMapsEvents } from "./bindGoogleMapsEvents";
4
+ import { useGoogleMapsResource } from "./useGoogleMapsResource";
9
5
  const props = defineProps({
10
6
  options: { type: Object, required: false }
11
7
  });
8
+ const emit = defineEmits(["click", "contextmenu", "dblclick", "mousedown", "mousemove", "mouseout", "mouseover", "mouseup", "drag", "dragend", "dragstart"]);
12
9
  const eventsWithPolyMouseEventPayload = [
13
10
  "click",
14
11
  "contextmenu",
@@ -24,37 +21,26 @@ const eventsWithMapMouseEventPayload = [
24
21
  "dragend",
25
22
  "dragstart"
26
23
  ];
27
- const emit = defineEmits([]);
28
- const mapContext = inject(MAP_INJECTION_KEY, void 0);
29
- let polyline = void 0;
30
- whenever(() => mapContext?.map.value && mapContext.mapsApi.value, () => {
31
- polyline = new mapContext.mapsApi.value.Polyline({
32
- map: mapContext.map.value,
33
- ...props.options
34
- });
35
- setupPolylineEventListeners(polyline);
36
- whenever(() => props.options, (options) => {
37
- polyline?.setOptions(options);
38
- }, {
39
- deep: true
40
- });
41
- }, {
42
- immediate: true,
43
- once: true
44
- });
45
- onUnmounted(() => {
46
- if (!polyline || !mapContext?.mapsApi.value) {
47
- return;
24
+ const polyline = useGoogleMapsResource({
25
+ create({ mapsApi, map }) {
26
+ const p = new mapsApi.Polyline({ map, ...props.options });
27
+ bindGoogleMapsEvents(p, emit, {
28
+ withPayload: [...eventsWithPolyMouseEventPayload, ...eventsWithMapMouseEventPayload]
29
+ });
30
+ return p;
31
+ },
32
+ cleanup(p, { mapsApi }) {
33
+ mapsApi.event.clearInstanceListeners(p);
34
+ p.setMap(null);
48
35
  }
49
- mapContext.mapsApi.value.event.clearInstanceListeners(polyline);
50
- polyline.setMap(null);
51
36
  });
52
- function setupPolylineEventListeners(polyline2) {
53
- eventsWithPolyMouseEventPayload.forEach((event) => {
54
- polyline2.addListener(event, (payload) => emit(event, payload));
55
- });
56
- eventsWithMapMouseEventPayload.forEach((event) => {
57
- polyline2.addListener(event, (payload) => emit(event, payload));
58
- });
59
- }
37
+ watch(() => props.options, (options) => {
38
+ if (polyline.value && options) {
39
+ polyline.value.setOptions(options);
40
+ }
41
+ }, { deep: true });
60
42
  </script>
43
+
44
+ <template>
45
+
46
+ </template>
@@ -1,9 +1,13 @@
1
1
  type __VLS_Props = {
2
+ /**
3
+ * Configuration options for the polyline overlay.
4
+ * @see https://developers.google.com/maps/documentation/javascript/reference/polygon#PolylineOptions
5
+ */
2
6
  options?: Omit<google.maps.PolylineOptions, 'map'>;
3
7
  };
4
- declare const __VLS_export: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {} & {
5
- click: (payload: google.maps.PolyMouseEvent) => any;
8
+ declare const __VLS_export: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
6
9
  contextmenu: (payload: google.maps.PolyMouseEvent) => any;
10
+ click: (payload: google.maps.PolyMouseEvent) => any;
7
11
  dblclick: (payload: google.maps.PolyMouseEvent) => any;
8
12
  drag: (payload: google.maps.MapMouseEvent) => any;
9
13
  dragend: (payload: google.maps.MapMouseEvent) => any;
@@ -14,8 +18,8 @@ declare const __VLS_export: import("vue").DefineComponent<__VLS_Props, {}, {}, {
14
18
  mouseover: (payload: google.maps.PolyMouseEvent) => any;
15
19
  mouseup: (payload: google.maps.PolyMouseEvent) => any;
16
20
  }, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{
17
- onClick?: ((payload: google.maps.PolyMouseEvent) => any) | undefined;
18
21
  onContextmenu?: ((payload: google.maps.PolyMouseEvent) => any) | undefined;
22
+ onClick?: ((payload: google.maps.PolyMouseEvent) => any) | undefined;
19
23
  onDblclick?: ((payload: google.maps.PolyMouseEvent) => any) | undefined;
20
24
  onDrag?: ((payload: google.maps.MapMouseEvent) => any) | undefined;
21
25
  onDragend?: ((payload: google.maps.MapMouseEvent) => any) | undefined;
@@ -1,9 +1,13 @@
1
1
  type __VLS_Props = {
2
+ /**
3
+ * Configuration options for the rectangle overlay.
4
+ * @see https://developers.google.com/maps/documentation/javascript/reference/polygon#RectangleOptions
5
+ */
2
6
  options?: Omit<google.maps.RectangleOptions, 'map'>;
3
7
  };
4
- declare const __VLS_export: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {} & {
5
- click: (payload: google.maps.MapMouseEvent) => any;
8
+ declare const __VLS_export: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
6
9
  contextmenu: (payload: google.maps.MapMouseEvent) => any;
10
+ click: (payload: google.maps.MapMouseEvent) => any;
7
11
  dblclick: (payload: google.maps.MapMouseEvent) => any;
8
12
  drag: (payload: google.maps.MapMouseEvent) => any;
9
13
  dragend: (payload: google.maps.MapMouseEvent) => any;
@@ -15,8 +19,8 @@ declare const __VLS_export: import("vue").DefineComponent<__VLS_Props, {}, {}, {
15
19
  mouseup: (payload: google.maps.MapMouseEvent) => any;
16
20
  bounds_changed: () => any;
17
21
  }, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{
18
- onClick?: ((payload: google.maps.MapMouseEvent) => any) | undefined;
19
22
  onContextmenu?: ((payload: google.maps.MapMouseEvent) => any) | undefined;
23
+ onClick?: ((payload: google.maps.MapMouseEvent) => any) | undefined;
20
24
  onDblclick?: ((payload: google.maps.MapMouseEvent) => any) | undefined;
21
25
  onDrag?: ((payload: google.maps.MapMouseEvent) => any) | undefined;
22
26
  onDragend?: ((payload: google.maps.MapMouseEvent) => any) | undefined;
@@ -1,14 +1,11 @@
1
- <template>
2
-
3
- </template>
4
-
5
1
  <script setup>
6
- import { inject, onUnmounted } from "vue";
7
- import { whenever } from "@vueuse/core";
8
- import { MAP_INJECTION_KEY } from "./ScriptGoogleMaps.vue";
2
+ import { watch } from "vue";
3
+ import { bindGoogleMapsEvents } from "./bindGoogleMapsEvents";
4
+ import { useGoogleMapsResource } from "./useGoogleMapsResource";
9
5
  const props = defineProps({
10
6
  options: { type: Object, required: false }
11
7
  });
8
+ const emit = defineEmits(["bounds_changed", "click", "contextmenu", "dblclick", "drag", "dragend", "dragstart", "mousedown", "mousemove", "mouseout", "mouseover", "mouseup"]);
12
9
  const eventsWithoutPayload = [
13
10
  "bounds_changed"
14
11
  ];
@@ -25,37 +22,27 @@ const eventsWithMapMouseEventPayload = [
25
22
  "mouseover",
26
23
  "mouseup"
27
24
  ];
28
- const emit = defineEmits([]);
29
- const mapContext = inject(MAP_INJECTION_KEY, void 0);
30
- let rectangle = void 0;
31
- whenever(() => mapContext?.map.value && mapContext.mapsApi.value, () => {
32
- rectangle = new mapContext.mapsApi.value.Rectangle({
33
- map: mapContext.map.value,
34
- ...props.options
35
- });
36
- setupRectangleEventListeners(rectangle);
37
- whenever(() => props.options, (options) => {
38
- rectangle?.setOptions(options);
39
- }, {
40
- deep: true
41
- });
42
- }, {
43
- immediate: true,
44
- once: true
45
- });
46
- onUnmounted(() => {
47
- if (!rectangle || !mapContext?.mapsApi.value) {
48
- return;
25
+ const rectangle = useGoogleMapsResource({
26
+ create({ mapsApi, map }) {
27
+ const r = new mapsApi.Rectangle({ map, ...props.options });
28
+ bindGoogleMapsEvents(r, emit, {
29
+ noPayload: eventsWithoutPayload,
30
+ withPayload: eventsWithMapMouseEventPayload
31
+ });
32
+ return r;
33
+ },
34
+ cleanup(r, { mapsApi }) {
35
+ mapsApi.event.clearInstanceListeners(r);
36
+ r.setMap(null);
49
37
  }
50
- mapContext.mapsApi.value.event.clearInstanceListeners(rectangle);
51
- rectangle.setMap(null);
52
38
  });
53
- function setupRectangleEventListeners(rectangle2) {
54
- eventsWithoutPayload.forEach((event) => {
55
- rectangle2.addListener(event, () => emit(event));
56
- });
57
- eventsWithMapMouseEventPayload.forEach((event) => {
58
- rectangle2.addListener(event, (payload) => emit(event, payload));
59
- });
60
- }
39
+ watch(() => props.options, (options) => {
40
+ if (rectangle.value && options) {
41
+ rectangle.value.setOptions(options);
42
+ }
43
+ }, { deep: true });
61
44
  </script>
45
+
46
+ <template>
47
+
48
+ </template>
@@ -1,9 +1,13 @@
1
1
  type __VLS_Props = {
2
+ /**
3
+ * Configuration options for the rectangle overlay.
4
+ * @see https://developers.google.com/maps/documentation/javascript/reference/polygon#RectangleOptions
5
+ */
2
6
  options?: Omit<google.maps.RectangleOptions, 'map'>;
3
7
  };
4
- declare const __VLS_export: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {} & {
5
- click: (payload: google.maps.MapMouseEvent) => any;
8
+ declare const __VLS_export: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
6
9
  contextmenu: (payload: google.maps.MapMouseEvent) => any;
10
+ click: (payload: google.maps.MapMouseEvent) => any;
7
11
  dblclick: (payload: google.maps.MapMouseEvent) => any;
8
12
  drag: (payload: google.maps.MapMouseEvent) => any;
9
13
  dragend: (payload: google.maps.MapMouseEvent) => any;
@@ -15,8 +19,8 @@ declare const __VLS_export: import("vue").DefineComponent<__VLS_Props, {}, {}, {
15
19
  mouseup: (payload: google.maps.MapMouseEvent) => any;
16
20
  bounds_changed: () => any;
17
21
  }, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{
18
- onClick?: ((payload: google.maps.MapMouseEvent) => any) | undefined;
19
22
  onContextmenu?: ((payload: google.maps.MapMouseEvent) => any) | undefined;
23
+ onClick?: ((payload: google.maps.MapMouseEvent) => any) | undefined;
20
24
  onDblclick?: ((payload: google.maps.MapMouseEvent) => any) | undefined;
21
25
  onDrag?: ((payload: google.maps.MapMouseEvent) => any) | undefined;
22
26
  onDragend?: ((payload: google.maps.MapMouseEvent) => any) | undefined;
@@ -0,0 +1,13 @@
1
+ /**
2
+ * Bind Google Maps event listeners that forward to Vue emit.
3
+ *
4
+ * Two categories:
5
+ * - `noPayload`: emits with no arguments (state-change events like `position_changed`)
6
+ * - `withPayload`: forwards the first argument from the listener (mouse events, etc.)
7
+ */
8
+ export declare function bindGoogleMapsEvents(instance: {
9
+ addListener: (event: string, handler: (...args: any[]) => void) => void;
10
+ }, emit: (...args: any[]) => void, config: {
11
+ noPayload?: readonly string[];
12
+ withPayload?: readonly string[];
13
+ }): void;
@@ -0,0 +1,8 @@
1
+ export function bindGoogleMapsEvents(instance, emit, config) {
2
+ config.noPayload?.forEach((event) => {
3
+ instance.addListener(event, () => emit(event));
4
+ });
5
+ config.withPayload?.forEach((event) => {
6
+ instance.addListener(event, (payload) => emit(event, payload));
7
+ });
8
+ }
@@ -0,0 +1,13 @@
1
+ import type { InjectionKey, Ref, ShallowRef } from 'vue';
2
+ export declare const MAP_INJECTION_KEY: InjectionKey<{
3
+ map: ShallowRef<google.maps.Map | undefined>;
4
+ mapsApi: Ref<typeof google.maps | undefined>;
5
+ /** Close the previously active InfoWindow and register a new one as active */
6
+ activateInfoWindow: (iw: google.maps.InfoWindow) => void;
7
+ }>;
8
+ export declare const ADVANCED_MARKER_ELEMENT_INJECTION_KEY: InjectionKey<{
9
+ advancedMarkerElement: ShallowRef<google.maps.marker.AdvancedMarkerElement | undefined>;
10
+ }>;
11
+ export declare const MARKER_INJECTION_KEY: InjectionKey<{
12
+ marker: ShallowRef<google.maps.Marker | undefined>;
13
+ }>;
@@ -0,0 +1,3 @@
1
+ export const MAP_INJECTION_KEY = Symbol("map");
2
+ export const ADVANCED_MARKER_ELEMENT_INJECTION_KEY = Symbol("marker");
3
+ export const MARKER_INJECTION_KEY = Symbol("marker");
@@ -0,0 +1,26 @@
1
+ import type { ShallowRef } from 'vue';
2
+ export interface GoogleMapsResourceContext {
3
+ map: google.maps.Map;
4
+ mapsApi: typeof google.maps;
5
+ }
6
+ /**
7
+ * Composable for safely managing Google Maps resource lifecycle.
8
+ *
9
+ * Handles the common pattern: wait for map readiness → async create → cleanup on unmount.
10
+ *
11
+ * Safety guarantees:
12
+ * - No watchers created after `await` (prevents orphaned watchers that leak memory)
13
+ * - Unmount guard prevents resource creation after component unmount
14
+ * - Resources created during the async gap are immediately cleaned up
15
+ * - Resource ref is always nulled on unmount to allow GC
16
+ */
17
+ export declare function useGoogleMapsResource<T>({ ready, create, cleanup, }: {
18
+ /** Additional readiness condition beyond map + mapsApi being available */
19
+ ready?: () => boolean;
20
+ /** Create the Google Maps resource. Receives map context snapshot. May be async. */
21
+ create: (ctx: GoogleMapsResourceContext) => Promise<T> | T;
22
+ /** Clean up the resource. Called on unmount, or immediately if resource was created after unmount. */
23
+ cleanup?: (resource: T, ctx: {
24
+ mapsApi: typeof google.maps;
25
+ }) => void;
26
+ }): ShallowRef<T | undefined>;