vue3-maplibre-gl 3.2.2 → 3.2.4

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.
@@ -1 +1 @@
1
- {"version":3,"file":"Mapbox.vue.d.ts","sourceRoot":"","sources":["../../libs/components/Mapbox.vue"],"names":[],"mappings":"AAoBA,OAAO,KAAK,EAAyB,eAAe,EAAE,MAAM,aAAa,CAAC;AAC1E,OAAO,KAAK,EACV,GAAG,EACH,eAAe,EACf,YAAY,EAEZ,iBAAiB,EACjB,aAAa,EACb,UAAU,EACV,kBAAkB,EAClB,aAAa,EACb,aAAa,EACd,MAAM,aAAa,CAAC;AAIrB;;GAEG;AACH,UAAU,WAAW;IACnB,gCAAgC;IAChC,OAAO,CAAC,EAAE,OAAO,CAAC,UAAU,CAAC,CAAC;IAC9B,2CAA2C;IAC3C,QAAQ,CAAC,EAAE,CAAC,OAAO,EAAE,eAAe,KAAK,IAAI,CAAC;IAC9C,2BAA2B;IAC3B,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,iDAAiD;IACjD,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,uCAAuC;IACvC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,mCAAmC;IACnC,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,8BAA8B;IAC9B,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,GAAG,KAAK,IAAI,CAAC;IAC/B,4BAA4B;IAC5B,MAAM,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,KAAK,IAAI,CAAC;CAC7B;AAsYD,iBAAS,cAAc;qBAkFO,GAAG;mBACL,GAAG;qBACD,GAAG;EAGhC;AAYD,QAAA,MAAM,eAAe;;;gBA5HC,CAAC,MAAM,EAAE,MAAM,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;gBAAhB,CAAC,MAAM,EAAE,MAAM,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;WAxX5B,OAAO;iBAED,OAAO;aANX,OAAO,CAAC,UAAU,CAAC;iBAQf,MAAM;oBAEH,MAAM;4EAqfvB,CAAC;wBACkB,uBAAuB,CAAC,OAAO,eAAe,EAAE,UAAU,CAAC,OAAO,cAAc,CAAC,CAAC;AAAvG,wBAAwG;AACxG,KAAK,sBAAsB,CAAC,CAAC,IAAI,CAAC,SAAS,SAAS,GAAG,KAAK,GAAG,CAAC,CAAC;AACjE,KAAK,6BAA6B,CAAC,CAAC,IAAI;KAAG,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,GAAG,EAAE,SAAS,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG;QAAE,IAAI,EAAE,OAAO,KAAK,EAAE,QAAQ,CAAC,sBAAsB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;KAAE,GAAG;QAAE,IAAI,EAAE,OAAO,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAAC,QAAQ,EAAE,IAAI,CAAA;KAAE;CAAE,CAAC;AAC9M,KAAK,kBAAkB,CAAC,CAAC,EAAE,CAAC,IAAI;KAE1B,CAAC,IAAI,MAAM,IAAI,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,GAAG,CAAC,SAAS,MAAM,CAAC,GAAG,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG;QACxE,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,CAAA;KACb,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;CACT,CAAC;AACN,KAAK,cAAc,CAAC,CAAC,IAAI;KAAG,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;CAAG,GAAG,EAAE,CAAC;AACxD,KAAK,uBAAuB,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG;IAAE,QAAO;QAClD,MAAM,EAAE,CAAC,CAAC;KACT,CAAA;CAAE,CAAC"}
1
+ {"version":3,"file":"Mapbox.vue.d.ts","sourceRoot":"","sources":["../../libs/components/Mapbox.vue"],"names":[],"mappings":"AAoBA,OAAO,KAAK,EAAyB,eAAe,EAAE,MAAM,aAAa,CAAC;AAC1E,OAAO,KAAK,EACV,GAAG,EACH,eAAe,EACf,YAAY,EAEZ,iBAAiB,EACjB,aAAa,EACb,UAAU,EACV,kBAAkB,EAClB,aAAa,EACb,aAAa,EACd,MAAM,aAAa,CAAC;AAIrB;;GAEG;AACH,UAAU,WAAW;IACnB,gCAAgC;IAChC,OAAO,CAAC,EAAE,OAAO,CAAC,UAAU,CAAC,CAAC;IAC9B,2CAA2C;IAC3C,QAAQ,CAAC,EAAE,CAAC,OAAO,EAAE,eAAe,KAAK,IAAI,CAAC;IAC9C,2BAA2B;IAC3B,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,iDAAiD;IACjD,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,uCAAuC;IACvC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,mCAAmC;IACnC,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,8BAA8B;IAC9B,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,GAAG,KAAK,IAAI,CAAC;IAC/B,4BAA4B;IAC5B,MAAM,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,KAAK,IAAI,CAAC;CAC7B;AAqYD,iBAAS,cAAc;qBAkFO,GAAG;mBACL,GAAG;qBACD,GAAG;EAGhC;AAYD,QAAA,MAAM,eAAe;;;gBA5HC,CAAC,MAAM,EAAE,MAAM,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;gBAAhB,CAAC,MAAM,EAAE,MAAM,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;WAvX5B,OAAO;iBAED,OAAO;aANX,OAAO,CAAC,UAAU,CAAC;iBAQf,MAAM;oBAEH,MAAM;4EAofvB,CAAC;wBACkB,uBAAuB,CAAC,OAAO,eAAe,EAAE,UAAU,CAAC,OAAO,cAAc,CAAC,CAAC;AAAvG,wBAAwG;AACxG,KAAK,sBAAsB,CAAC,CAAC,IAAI,CAAC,SAAS,SAAS,GAAG,KAAK,GAAG,CAAC,CAAC;AACjE,KAAK,6BAA6B,CAAC,CAAC,IAAI;KAAG,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,GAAG,EAAE,SAAS,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG;QAAE,IAAI,EAAE,OAAO,KAAK,EAAE,QAAQ,CAAC,sBAAsB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;KAAE,GAAG;QAAE,IAAI,EAAE,OAAO,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAAC,QAAQ,EAAE,IAAI,CAAA;KAAE;CAAE,CAAC;AAC9M,KAAK,kBAAkB,CAAC,CAAC,EAAE,CAAC,IAAI;KAE1B,CAAC,IAAI,MAAM,IAAI,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,GAAG,CAAC,SAAS,MAAM,CAAC,GAAG,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG;QACxE,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,CAAA;KACb,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;CACT,CAAC;AACN,KAAK,cAAc,CAAC,CAAC,IAAI;KAAG,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;CAAG,GAAG,EAAE,CAAC;AACxD,KAAK,uBAAuB,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG;IAAE,QAAO;QAClD,MAAM,EAAE,CAAC,CAAC;KACT,CAAA;CAAE,CAAC"}
@@ -1,5 +1,5 @@
1
- import { defineComponent, ref, computed, unref, provide, watch, watchEffect, nextTick, onBeforeMount, onUnmounted, createElementBlock, openBlock, createCommentVNode, renderSlot, inject, onMounted } from "vue";
2
- import { u as useOptimizedComputed, a as useCreateMapbox, b as useMapEventListener, c as useLogger, d as useGeolocateControl, e as useGeolocateEventListener, f as useCreateGeoJsonSource, g as useDebouncedWatch, h as useCreateFillLayer, i as useLayerEventListener, j as useCreateCircleLayer, k as useCreateLineLayer, l as useCreateSymbolLayer, m as useCreateImage, n as useCreatePopup } from "./composables-BFBL0Id8.js";
1
+ import { defineComponent, ref, computed, unref, provide, watch, watchEffect, nextTick, onBeforeMount, onUnmounted, createElementBlock, openBlock, createCommentVNode, renderSlot, inject, onMounted, useSlots } from "vue";
2
+ import { u as useOptimizedComputed, a as useCreateMapbox, b as useMapEventListener, c as useLogger, d as useGeolocateControl, e as useGeolocateEventListener, f as useCreateGeoJsonSource, g as useDebouncedWatch, h as useCreateFillLayer, i as useLayerEventListener, j as useCreateCircleLayer, k as useCreateLineLayer, l as useCreateSymbolLayer, m as useCreateImage, n as useCreatePopup, o as useCreateMarker } from "./composables-BTjkdo8Z.js";
3
3
  const MapProvideKey = Symbol();
4
4
  const SourceProvideKey = Symbol();
5
5
  var MapCreationStatus = /* @__PURE__ */ ((MapCreationStatus2) => {
@@ -87,7 +87,7 @@ const MapboxLayerEvents = [
87
87
  const _hoisted_1$1 = { id: "maplibre_container" };
88
88
  const _hoisted_2 = { key: 0 };
89
89
  const _hoisted_3 = { key: 1 };
90
- const _sfc_main$8 = /* @__PURE__ */ defineComponent({
90
+ const _sfc_main$9 = /* @__PURE__ */ defineComponent({
91
91
  __name: "Mapbox",
92
92
  props: {
93
93
  options: { default: () => ({
@@ -139,9 +139,8 @@ const _sfc_main$8 = /* @__PURE__ */ defineComponent({
139
139
  return mergedOptions;
140
140
  },
141
141
  {
142
- deepEqual: true,
142
+ deepEqual: true
143
143
  // Use deep equality for complex objects
144
- debug: props.debug
145
144
  }
146
145
  );
147
146
  const isMapReady = computed(
@@ -367,7 +366,7 @@ const _sfc_main$8 = /* @__PURE__ */ defineComponent({
367
366
  }
368
367
  });
369
368
  const _hoisted_1 = { key: 0 };
370
- const _sfc_main$7 = /* @__PURE__ */ defineComponent({
369
+ const _sfc_main$8 = /* @__PURE__ */ defineComponent({
371
370
  __name: "GeolocateControls",
372
371
  props: {
373
372
  position: { default: "bottom-right" },
@@ -479,7 +478,7 @@ const _sfc_main$7 = /* @__PURE__ */ defineComponent({
479
478
  };
480
479
  }
481
480
  });
482
- const _sfc_main$6 = /* @__PURE__ */ defineComponent({
481
+ const _sfc_main$7 = /* @__PURE__ */ defineComponent({
483
482
  __name: "GeoJsonSource",
484
483
  props: {
485
484
  id: {},
@@ -641,7 +640,7 @@ const _sfc_main$6 = /* @__PURE__ */ defineComponent({
641
640
  };
642
641
  }
643
642
  });
644
- const _sfc_main$5 = /* @__PURE__ */ defineComponent({
643
+ const _sfc_main$6 = /* @__PURE__ */ defineComponent({
645
644
  __name: "FillLayer",
646
645
  props: {
647
646
  id: {},
@@ -744,7 +743,7 @@ const _sfc_main$5 = /* @__PURE__ */ defineComponent({
744
743
  };
745
744
  }
746
745
  });
747
- const _sfc_main$4 = /* @__PURE__ */ defineComponent({
746
+ const _sfc_main$5 = /* @__PURE__ */ defineComponent({
748
747
  __name: "CircleLayer",
749
748
  props: {
750
749
  id: {},
@@ -850,7 +849,7 @@ const _sfc_main$4 = /* @__PURE__ */ defineComponent({
850
849
  };
851
850
  }
852
851
  });
853
- const _sfc_main$3 = /* @__PURE__ */ defineComponent({
852
+ const _sfc_main$4 = /* @__PURE__ */ defineComponent({
854
853
  __name: "LineLayer",
855
854
  props: {
856
855
  id: {},
@@ -955,7 +954,7 @@ const _sfc_main$3 = /* @__PURE__ */ defineComponent({
955
954
  };
956
955
  }
957
956
  });
958
- const _sfc_main$2 = /* @__PURE__ */ defineComponent({
957
+ const _sfc_main$3 = /* @__PURE__ */ defineComponent({
959
958
  __name: "SymbolLayer",
960
959
  props: {
961
960
  id: {},
@@ -1060,7 +1059,7 @@ const _sfc_main$2 = /* @__PURE__ */ defineComponent({
1060
1059
  };
1061
1060
  }
1062
1061
  });
1063
- const _sfc_main$1 = /* @__PURE__ */ defineComponent({
1062
+ const _sfc_main$2 = /* @__PURE__ */ defineComponent({
1064
1063
  __name: "Image",
1065
1064
  props: {
1066
1065
  images: { default: () => [] },
@@ -1123,7 +1122,7 @@ const _sfc_main$1 = /* @__PURE__ */ defineComponent({
1123
1122
  };
1124
1123
  }
1125
1124
  });
1126
- const _sfc_main = /* @__PURE__ */ defineComponent({
1125
+ const _sfc_main$1 = /* @__PURE__ */ defineComponent({
1127
1126
  __name: "PopUp",
1128
1127
  props: {
1129
1128
  className: {},
@@ -1197,21 +1196,118 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
1197
1196
  };
1198
1197
  }
1199
1198
  });
1199
+ const _sfc_main = /* @__PURE__ */ defineComponent({
1200
+ __name: "Marker",
1201
+ props: {
1202
+ lnglat: {},
1203
+ popup: {},
1204
+ options: { default: () => ({}) },
1205
+ draggable: { type: Boolean },
1206
+ element: {},
1207
+ offset: {},
1208
+ anchor: {},
1209
+ color: {},
1210
+ clickTolerance: {},
1211
+ rotation: {},
1212
+ rotationAlignment: {},
1213
+ pitchAlignment: {},
1214
+ scale: {},
1215
+ occludedOpacity: {}
1216
+ },
1217
+ emits: ["dragstart", "drag", "dragend"],
1218
+ setup(__props, { emit: __emit }) {
1219
+ const props = __props;
1220
+ const emits = __emit;
1221
+ const slots = useSlots();
1222
+ const mapInstance = inject(MapProvideKey, ref(null));
1223
+ const markerElRef = ref();
1224
+ const hasCustomElement = computed(() => {
1225
+ var _a;
1226
+ return Boolean((_a = slots.default) == null ? void 0 : _a.call(slots));
1227
+ });
1228
+ const markerOptions = computed(() => ({
1229
+ ...props.options,
1230
+ ...props.draggable !== void 0 && { draggable: props.draggable },
1231
+ ...props.offset !== void 0 && { offset: props.offset },
1232
+ ...props.anchor !== void 0 && { anchor: props.anchor },
1233
+ ...props.color !== void 0 && { color: props.color },
1234
+ ...props.clickTolerance !== void 0 && {
1235
+ clickTolerance: props.clickTolerance
1236
+ },
1237
+ ...props.rotation !== void 0 && { rotation: props.rotation },
1238
+ ...props.rotationAlignment !== void 0 && {
1239
+ rotationAlignment: props.rotationAlignment
1240
+ },
1241
+ ...props.pitchAlignment !== void 0 && {
1242
+ pitchAlignment: props.pitchAlignment
1243
+ },
1244
+ ...props.scale !== void 0 && { scale: props.scale },
1245
+ ...props.occludedOpacity !== void 0 && {
1246
+ occludedOpacity: props.occludedOpacity
1247
+ }
1248
+ }));
1249
+ const eventHandlers = {
1250
+ dragstart: (ev) => {
1251
+ emits("dragstart", ev);
1252
+ },
1253
+ drag: (ev) => {
1254
+ emits("drag", ev);
1255
+ },
1256
+ dragend: (ev) => {
1257
+ emits("dragend", ev);
1258
+ }
1259
+ };
1260
+ const { setDraggable, setLngLat } = useCreateMarker({
1261
+ map: mapInstance,
1262
+ el: hasCustomElement.value ? markerElRef : void 0,
1263
+ lnglat: props.lnglat,
1264
+ popup: props.popup,
1265
+ options: markerOptions.value,
1266
+ on: eventHandlers
1267
+ });
1268
+ watch(
1269
+ () => props.lnglat,
1270
+ (newLnglat) => {
1271
+ if (newLnglat) {
1272
+ setLngLat(newLnglat);
1273
+ }
1274
+ },
1275
+ { deep: true }
1276
+ );
1277
+ watch(
1278
+ () => props.draggable,
1279
+ (newDraggable) => {
1280
+ if (newDraggable !== void 0) {
1281
+ setDraggable(newDraggable);
1282
+ }
1283
+ }
1284
+ );
1285
+ return (_ctx, _cache) => {
1286
+ return openBlock(), createElementBlock("div", {
1287
+ ref_key: "markerElRef",
1288
+ ref: markerElRef
1289
+ }, [
1290
+ renderSlot(_ctx.$slots, "default")
1291
+ ], 512);
1292
+ };
1293
+ }
1294
+ });
1200
1295
  export {
1201
1296
  GeolocateEvents as G,
1202
1297
  MapCreationStatus as M,
1203
1298
  SourceProvideKey as S,
1204
- _sfc_main$8 as _,
1299
+ _sfc_main$9 as _,
1205
1300
  MapProvideKey as a,
1206
1301
  MapboxEvents as b,
1207
1302
  MapboxLayerEvents as c,
1208
- _sfc_main$7 as d,
1209
- _sfc_main$6 as e,
1210
- _sfc_main$5 as f,
1211
- _sfc_main$4 as g,
1212
- _sfc_main$3 as h,
1213
- _sfc_main$2 as i,
1214
- _sfc_main$1 as j,
1215
- _sfc_main as k
1303
+ _sfc_main$8 as d,
1304
+ _sfc_main$7 as e,
1305
+ _sfc_main$6 as f,
1306
+ _sfc_main$5 as g,
1307
+ _sfc_main$4 as h,
1308
+ _sfc_main$3 as i,
1309
+ _sfc_main$2 as j,
1310
+ _sfc_main$1 as k,
1311
+ _sfc_main as l
1216
1312
  };
1217
- //# sourceMappingURL=components-CwXC2MaG.js.map
1313
+ //# sourceMappingURL=components-9nhzTBku.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"components-9nhzTBku.js","sources":["../libs/enums/MapProvideKey.ts","../libs/enums/MapboxEnum.ts","../libs/enums/MapboxLayerEnum.ts","../libs/components/Mapbox.vue","../libs/components/GeolocateControls.vue","../libs/components/GeoJsonSource.vue","../libs/components/FillLayer.vue","../libs/components/CircleLayer.vue","../libs/components/LineLayer.vue","../libs/components/SymbolLayer.vue","../libs/components/Image.vue","../libs/components/PopUp.vue","../libs/components/Marker.vue"],"sourcesContent":["import type { ComputedRef, InjectionKey, ShallowRef } from 'vue';\nimport type { GeoJSONSource, Map, SourceSpecification } from 'maplibre-gl';\nimport type { Nullable } from '@libs/types';\n\nexport const MapProvideKey = Symbol() as InjectionKey<\n ShallowRef<Nullable<Map>> | ComputedRef<Nullable<Map>>\n>;\n\nexport const SourceProvideKey = Symbol() as InjectionKey<\n | ShallowRef<Nullable<SourceSpecification | GeoJSONSource>>\n | ComputedRef<Nullable<SourceSpecification | GeoJSONSource>>\n>;\n","import type { GeolocateEventTypes, MapEventTypes } from '@libs/types';\n\nexport enum MapCreationStatus {\n NotInitialized = 'not-initialized',\n Initializing = 'initializing',\n Loading = 'loading',\n Loaded = 'loaded',\n Error = 'error',\n Destroyed = 'destroyed',\n}\n\nexport const MapboxEvents: (keyof MapEventTypes)[] = [\n 'error',\n 'load',\n 'idle',\n 'remove',\n 'render',\n 'resize',\n 'webglcontextlost',\n 'webglcontextrestored',\n 'dataloading',\n 'data',\n 'tiledataloading',\n 'sourcedataloading',\n 'sourcedata',\n 'styledata',\n 'styleimagemissing',\n 'dataabort',\n 'sourcedataabort',\n 'boxzoomcancel',\n 'boxzoomstart',\n 'boxzoomend',\n 'touchcancel',\n 'touchmove',\n 'touchend',\n 'touchstart',\n 'click',\n 'contextmenu',\n 'dblclick',\n 'mousemove',\n 'mouseup',\n 'mousedown',\n 'mouseout',\n 'mouseover',\n 'movestart',\n 'move',\n 'moveend',\n 'zoomstart',\n 'zoom',\n 'zoomend',\n 'rotatestart',\n 'rotate',\n 'rotateend',\n 'dragstart',\n 'drag',\n 'dragend',\n 'pitchstart',\n 'pitch',\n 'pitchend',\n 'wheel',\n 'terrain',\n];\n\nexport const GeolocateEvents: (keyof GeolocateEventTypes)[] = [\n 'geolocate',\n 'error',\n 'outofmaxbounds',\n 'trackuserlocationstart',\n 'trackuserlocationend',\n];\n","import type { MapLayerEventType } from 'maplibre-gl';\n\nexport const MapboxLayerEvents: (keyof MapLayerEventType)[] = [\n 'click',\n 'dblclick',\n 'mousedown',\n 'mouseup',\n 'mousemove',\n 'mouseenter',\n 'mouseleave',\n 'mouseover',\n 'mouseout',\n 'contextmenu',\n 'touchstart',\n 'touchend',\n 'touchcancel',\n];\n","<script lang=\"ts\" setup>\nimport {\n ref,\n provide,\n computed,\n unref,\n watch,\n nextTick,\n onBeforeMount,\n onUnmounted,\n watchEffect,\n} from 'vue';\nimport { MapProvideKey, MapboxEvents, MapCreationStatus } from '@libs/enums';\nimport {\n useCreateMapbox,\n useMapEventListener,\n useLogger,\n useOptimizedComputed,\n} from '@libs/composables';\nimport type { CreateMaplibreActions, MaplibreActions } from '@libs/types';\nimport type {\n Map,\n MapContextEvent,\n MapDataEvent,\n MapEventType,\n MapLibreZoomEvent,\n MapMouseEvent,\n MapOptions,\n MapSourceDataEvent,\n MapTouchEvent,\n MapWheelEvent,\n} from 'maplibre-gl';\n\n/**\n * Enhanced Mapbox component props with comprehensive configuration options\n */\ninterface MapboxProps {\n /** Map configuration options */\n options?: Partial<MapOptions>;\n /** Callback for registering map actions */\n register?: (actions: MaplibreActions) => void;\n /** Enable debug logging */\n debug?: boolean;\n /** Automatically cleanup resources on unmount */\n autoCleanup?: boolean;\n /** Container ID for the map element */\n containerId?: string;\n /** Custom container class names */\n containerClass?: string;\n /** Error handling callback */\n onError?: (error: any) => void;\n /** Load success callback */\n onLoad?: (map: Map) => void;\n}\n\ninterface Emits {\n (e: keyof MapEventType, ev: any): void;\n (e: 'register', actions: MaplibreActions): void;\n (\n e: 'error' | 'load' | 'idle' | 'remove' | 'render' | 'resize',\n ev: Event,\n ): void;\n (e: 'webglcontextlost' | 'webglcontextrestored', ev: MapContextEvent): void;\n (\n e: 'dataloading' | 'data' | 'tiledataloading' | 'dataabort',\n ev: MapDataEvent,\n ): void;\n (\n e: 'sourcedataloading' | 'sourcedata' | 'sourcedataabort',\n ev: MapSourceDataEvent,\n ): void;\n (e: 'styledata', ev: Event): void;\n (e: 'styleimagemissing', ev: Event): void;\n (\n e: 'boxzoomcancel' | 'boxzoomstart' | 'boxzoomend',\n ev: MapLibreZoomEvent,\n ): void;\n (\n e: 'touchcancel' | 'touchmove' | 'touchend' | 'touchstart',\n ev: MapTouchEvent,\n ): void;\n (\n e:\n | 'click'\n | 'contextmenu'\n | 'dblclick'\n | 'mousemove'\n | 'mouseup'\n | 'mousedown'\n | 'mouseout'\n | 'mouseover',\n ev: MapMouseEvent,\n ): void;\n (\n e:\n | 'movestart'\n | 'move'\n | 'moveend'\n | 'zoomstart'\n | 'zoom'\n | 'zoomend'\n | 'rotatestart'\n | 'rotate'\n | 'rotateend'\n | 'dragstart'\n | 'drag'\n | 'dragend'\n | 'pitchstart'\n | 'pitch'\n | 'pitchend',\n ev: Event,\n ): void;\n (e: 'wheel', ev: MapWheelEvent): void;\n (e: 'terrain', ev: Event): void;\n}\n\nconst props = withDefaults(defineProps<MapboxProps>(), {\n options: () => ({\n // Provide sensible defaults for better performance\n style: 'https://demotiles.maplibre.org/style.json',\n center: [0, 0] as [number, number],\n zoom: 1,\n pitch: 0,\n bearing: 0,\n antialias: true,\n optimizeForTerrain: true,\n // Performance optimizations\n preserveDrawingBuffer: false,\n refreshExpiredTiles: true,\n maxTileCacheSize: null,\n localIdeographFontFamily: false,\n transformRequest: undefined,\n collectResourceTiming: false,\n fadeDuration: 300,\n crossSourceCollisions: true,\n }),\n debug: false,\n autoCleanup: true,\n containerId: () => `maplibre-${Math.random().toString(36).substring(2, 11)}`,\n containerClass: '',\n});\nconst emits = defineEmits<Emits>();\n\n// Enhanced logging and error handling\nconst { logError } = useLogger(props.debug);\n\n// Reactive state management\nconst innerOptions = ref<Partial<MapOptions>>();\nconst maplibreElRef = ref<HTMLElement>();\nconst styleRef = ref(props.options.style as string);\n\nconst isComponentMounted = ref(false);\nconst mapCreationStatus = ref<MapCreationStatus>(\n MapCreationStatus.NotInitialized,\n);\n\n// Enhanced computed properties for better reactivity and performance\nconst mapOptions = useOptimizedComputed(\n () => {\n const baseOptions = { ...props.options };\n const mergedOptions = { ...baseOptions, ...innerOptions.value };\n\n // Ensure container is properly set\n if (!mergedOptions.container) {\n mergedOptions.container = props.containerId;\n }\n\n return mergedOptions;\n },\n {\n deepEqual: true, // Use deep equality for complex objects\n },\n);\n\nconst isMapReady = computed(\n () => mapCreationStatus.value === MapCreationStatus.Loaded,\n);\nconst isMapLoading = computed(\n () => mapCreationStatus.value === MapCreationStatus.Loading,\n);\nconst hasMapError = computed(\n () => mapCreationStatus.value === MapCreationStatus.Error,\n);\n\n/**\n * Enhanced map options setter with validation and error handling\n * @param options - Partial map options to merge\n */\nfunction setMapOptions(options: Partial<MapOptions>): void {\n try {\n innerOptions.value = {\n ...(unref(mapOptions) || {}),\n ...options,\n };\n } catch (error) {\n logError('Error setting map options:', error, { options });\n }\n}\n\n/**\n * Enhanced container creation with error handling and validation\n */\nfunction createMapContainer(): HTMLElement | null {\n try {\n const wrapper = document.getElementById('maplibre_container');\n if (!wrapper) {\n logError('Map container wrapper not found');\n return null;\n }\n\n // Remove existing container if present\n const existingContainer = document.getElementById(props.containerId);\n if (existingContainer) {\n existingContainer.remove();\n }\n\n const container = document.createElement('div');\n container.id = props.containerId;\n container.className = props.containerClass;\n container.style.width = '100%';\n container.style.height = '100%';\n\n wrapper.appendChild(container);\n return container;\n } catch (error) {\n logError('Error creating map container:', error);\n return null;\n }\n}\n\n// Enhanced map creation with comprehensive error handling and performance monitoring\nconst {\n mapInstance,\n\n setCenter,\n setBearing,\n setZoom,\n setPitch,\n setStyle,\n setMaxBounds,\n setMaxPitch,\n setMaxZoom,\n setMinPitch,\n setMinZoom,\n setRenderWorldCopies,\n} = useCreateMapbox(maplibreElRef, styleRef, {\n ...unref(mapOptions),\n register: (actions: CreateMaplibreActions) => {\n try {\n const enhancedActions = {\n ...actions,\n setMapOptions,\n // Additional enhanced methods\n isMapReady: isMapReady.value,\n isMapLoading: isMapLoading.value,\n hasMapError: hasMapError.value,\n };\n\n props.register?.(enhancedActions as MaplibreActions);\n emits('register', enhancedActions as MaplibreActions);\n } catch (error) {\n logError('Error during map registration:', error);\n props.onError?.(error);\n }\n },\n onLoad: (map) => {\n try {\n mapCreationStatus.value = MapCreationStatus.Loaded;\n props.onLoad?.(map);\n } catch (error) {\n logError('Error in map load handler:', error);\n props.onError?.(error);\n }\n },\n onError: (error) => {\n try {\n mapCreationStatus.value = MapCreationStatus.Error;\n logError('Map creation error:', error);\n props.onError?.(error);\n } catch (handlerError) {\n logError('Error in error handler:', handlerError);\n }\n },\n debug: props.debug,\n});\n\n// Provide map instance to child components\nprovide(MapProvideKey, mapInstance);\n\n// Enhanced event listeners with error handling and performance monitoring\nMapboxEvents.map((evt) => {\n return useMapEventListener({\n map: mapInstance,\n event: evt,\n on: (data) => {\n try {\n emits(evt as keyof MapEventType, data);\n } catch (error) {\n logError(`Error in ${evt} event handler:`, error, { data });\n }\n },\n debug: props.debug,\n });\n});\n\n// Create optimized watchers for map properties with null safety\nconst watchers = [\n watch(\n () => unref(mapOptions).center,\n (value) => value && setCenter(value),\n { flush: 'post' },\n ),\n watch(\n () => unref(mapOptions).bearing,\n (value) => value !== undefined && setBearing(value),\n { flush: 'post' },\n ),\n watch(\n () => unref(mapOptions).zoom,\n (value) => value !== undefined && setZoom(value),\n { flush: 'post' },\n ),\n watch(\n () => unref(mapOptions).pitch,\n (value) => value !== undefined && setPitch(value),\n { flush: 'post' },\n ),\n watch(\n () => unref(mapOptions).style,\n (value) => value && setStyle(value),\n { flush: 'post' },\n ),\n watch(\n () => unref(mapOptions).maxBounds,\n (value) => value && setMaxBounds(value),\n { flush: 'post' },\n ),\n watch(\n () => unref(mapOptions).maxPitch,\n (value) => value !== undefined && value !== null && setMaxPitch(value),\n { flush: 'post' },\n ),\n watch(\n () => unref(mapOptions).maxZoom,\n (value) => value !== undefined && value !== null && setMaxZoom(value),\n { flush: 'post' },\n ),\n watch(\n () => unref(mapOptions).minPitch,\n (value) => value !== undefined && value !== null && setMinPitch(value),\n { flush: 'post' },\n ),\n watch(\n () => unref(mapOptions).minZoom,\n (value) => value !== undefined && value !== null && setMinZoom(value),\n { flush: 'post' },\n ),\n watch(\n () => unref(mapOptions).renderWorldCopies,\n (value) => value !== undefined && setRenderWorldCopies(value),\n { flush: 'post' },\n ),\n];\n\n// Enhanced container management\nwatchEffect(async () => {\n try {\n await nextTick();\n\n const container = createMapContainer();\n if (container) {\n maplibreElRef.value = container;\n isComponentMounted.value = true;\n mapCreationStatus.value = MapCreationStatus.Initializing;\n } else {\n logError('Failed to create map container');\n mapCreationStatus.value = MapCreationStatus.Error;\n }\n } catch (error) {\n logError('Error in container creation watchEffect:', error);\n mapCreationStatus.value = MapCreationStatus.Error;\n props.onError?.(error);\n }\n});\n\n// Enhanced cleanup with comprehensive resource disposal\nfunction cleanup(): void {\n try {\n // Stop all watchers\n watchers.forEach((stopWatcher) => stopWatcher?.());\n\n // Remove container\n maplibreElRef.value?.remove();\n\n // Reset state\n isComponentMounted.value = false;\n mapCreationStatus.value = MapCreationStatus.Destroyed;\n } catch (error) {\n logError('Error during cleanup:', error);\n }\n}\n\nonBeforeMount(() => {\n if (props.autoCleanup) {\n cleanup();\n }\n});\n\nonUnmounted(() => {\n if (props.autoCleanup) {\n cleanup();\n }\n});\n</script>\n\n<template>\n <div id=\"maplibre_container\">\n <!-- Loading state -->\n <div v-if=\"isMapLoading\">\n <slot name=\"loading\"> </slot>\n </div>\n\n <!-- Error state -->\n <div v-if=\"hasMapError\">\n <slot name=\"error\"> </slot>\n </div>\n\n <!-- Map content -->\n <slot v-if=\"isMapReady || (!isMapLoading && !hasMapError)\" />\n </div>\n</template>\n\n<style lang=\"scss\">\n.maplibre-container {\n position: relative;\n width: 100%;\n height: 100%;\n overflow: hidden;\n}\n\n// Legacy support\n#maplibre_container {\n @extend .maplibre-container;\n}\n</style>\n","<script lang=\"ts\" setup>\nimport { inject, ref, watchEffect, computed, onUnmounted } from 'vue';\nimport { MapProvideKey, GeolocateEvents } from '@libs/enums';\nimport {\n useGeolocateControl,\n useGeolocateEventListener,\n useLogger,\n} from '@libs/composables';\nimport type {\n GeolocateSuccess,\n GeolocationPositionError,\n GeolocateEventTypes,\n} from '@libs/types';\nimport type {\n ControlPosition,\n GeolocateControl,\n GeolocateControlOptions,\n} from 'maplibre-gl';\n\n/**\n * Enhanced GeolocateControl component props with comprehensive configuration options\n */\ninterface GeolocateControlProps {\n /** Position of the control on the map */\n position?: ControlPosition;\n /** Geolocate control configuration options */\n options?: GeolocateControlOptions;\n /** Enable debug logging */\n debug?: boolean;\n /** Automatically cleanup resources on unmount */\n autoCleanup?: boolean;\n /** Error handling callback */\n onError?: (error: any) => void;\n /** Success callback for geolocation */\n onGeolocate?: (data: GeolocateSuccess) => void;\n /** Callback when user location tracking starts */\n onTrackingStart?: (data: GeolocateSuccess) => void;\n /** Callback when user location tracking ends */\n onTrackingEnd?: (data: GeolocateSuccess) => void;\n /** Callback when user location is out of max bounds */\n onOutOfMaxBounds?: (data: GeolocateSuccess) => void;\n}\n\n/**\n * Enhanced event emits with proper typing and comprehensive event coverage\n */\ninterface Emits {\n (e: keyof GeolocateEventTypes, ev: any): void;\n (e: 'register', ev: GeolocateControl): void;\n (e: 'geolocate', ev: GeolocateSuccess): void;\n (e: 'error', ev: GeolocationPositionError): void;\n (e: 'outofmaxbounds', ev: GeolocateSuccess): void;\n (e: 'trackuserlocationstart', ev: GeolocateSuccess): void;\n (e: 'trackuserlocationend', ev: GeolocateSuccess): void;\n}\n\nconst props = withDefaults(defineProps<GeolocateControlProps>(), {\n position: 'bottom-right',\n options: () => ({}),\n debug: false,\n autoCleanup: true,\n});\nconst emits = defineEmits<Emits>();\n\n// Enhanced logging and error handling\nconst { logError } = useLogger(props.debug);\n\n// Reactive state management\nconst mapInstance = inject(MapProvideKey, ref(null));\nconst isControlRegistered = ref(false);\nconst controlError = ref<any>(null);\n\n// Computed properties for better reactivity and performance\nconst hasControlError = computed(() => !!controlError.value);\n\n// Enhanced geolocate control with comprehensive error handling\nconst { geolocateControl, isControlAdded, removeControl, addControl, trigger } =\n useGeolocateControl({\n map: mapInstance,\n position: props.position,\n options: props.options,\n debug: props.debug,\n });\n\n/**\n * Enhanced event handler with error handling and callback support\n * @param eventType - The type of geolocate event\n * @param data - Event data\n */\nfunction handleGeolocateEvent(\n eventType: keyof GeolocateEventTypes,\n data: any,\n): void {\n try {\n // Emit the event\n emits(eventType, data);\n\n // Call specific callback handlers\n switch (eventType) {\n case 'geolocate':\n props.onGeolocate?.(data as GeolocateSuccess);\n break;\n case 'error':\n controlError.value = data;\n props.onError?.(data);\n break;\n case 'trackuserlocationstart':\n props.onTrackingStart?.(data as GeolocateSuccess);\n break;\n case 'trackuserlocationend':\n props.onTrackingEnd?.(data as GeolocateSuccess);\n break;\n case 'outofmaxbounds':\n props.onOutOfMaxBounds?.(data as GeolocateSuccess);\n break;\n default:\n break;\n }\n } catch (error) {\n logError(`Error handling ${eventType} event:`, error, { data });\n controlError.value = error;\n props.onError?.(error);\n }\n}\n\n// Enhanced control registration with error handling\nwatchEffect(() => {\n try {\n if (geolocateControl.value && !isControlRegistered.value) {\n emits('register', geolocateControl.value);\n isControlRegistered.value = true;\n controlError.value = null;\n }\n } catch (error) {\n logError('Error registering geolocate control:', error);\n controlError.value = error;\n props.onError?.(error);\n }\n});\n\n// Enhanced event listeners with error handling and performance optimization\nGeolocateEvents.map((evt) => {\n return useGeolocateEventListener({\n geolocate: geolocateControl,\n event: evt,\n on: (data) => handleGeolocateEvent(evt, data),\n debug: props.debug,\n });\n});\n\n/**\n * Enhanced cleanup function for disposing resources\n */\nfunction cleanup(): void {\n try {\n if (props.autoCleanup) {\n // Reset state\n isControlRegistered.value = false;\n controlError.value = null;\n\n // Remove control if still added\n if (isControlAdded.value) {\n removeControl();\n }\n }\n } catch (error) {\n logError('Error during geolocate control cleanup:', error);\n }\n}\n\n// Cleanup on component unmount\nonUnmounted(cleanup);\n\n// Expose control methods for parent components\ndefineExpose({\n geolocateControl,\n isControlAdded,\n isControlRegistered,\n hasControlError,\n controlError,\n addControl,\n removeControl,\n trigger,\n cleanup,\n});\n</script>\n\n<template>\n <!-- Enhanced template with error state and accessibility -->\n <div v-if=\"hasControlError\">\n <slot name=\"error\"> </slot>\n </div>\n</template>\n","<script lang=\"ts\" setup>\nimport { inject, ref, provide, computed, onUnmounted } from 'vue';\nimport { MapProvideKey, SourceProvideKey } from '@libs/enums';\nimport {\n useCreateGeoJsonSource,\n useLogger,\n useDebouncedWatch,\n} from '@libs/composables';\nimport type { CreateGeoJsonSourceActions } from '@libs/composables';\nimport type { GeoJSONSource, GeoJSONSourceSpecification } from 'maplibre-gl';\n\n/**\n * Enhanced GeoJsonSource component props with comprehensive configuration options\n */\ninterface GeoJsonSourceProps {\n /** Unique identifier for the source */\n id?: string;\n /** GeoJSON data for the source */\n data?: GeoJSONSourceSpecification['data'];\n /** Additional source configuration options */\n options?: Partial<GeoJSONSourceSpecification>;\n /** Callback for registering source actions */\n register?: (actions: CreateGeoJsonSourceActions) => void;\n /** Enable debug logging */\n debug?: boolean;\n /** Automatically cleanup resources on unmount */\n autoCleanup?: boolean;\n /** Error handling callback */\n onError?: (error: any) => void;\n /** Source load success callback */\n onLoad?: (source: GeoJSONSource) => void;\n /** Data update callback */\n onDataUpdate?: (data: GeoJSONSourceSpecification['data']) => void;\n /** Debounce delay for data updates in milliseconds (default: 100) */\n debounceDelay?: number;\n}\n\n/**\n * Enhanced event emits with proper typing and comprehensive event coverage\n */\ninterface Emits {\n (e: 'register', actions: CreateGeoJsonSourceActions): void;\n (e: 'error', error: any): void;\n (e: 'load', source: any): void;\n (e: 'data-update', data: GeoJSONSourceSpecification['data']): void;\n}\n\nconst props = withDefaults(defineProps<GeoJsonSourceProps>(), {\n data: () => ({\n type: 'FeatureCollection',\n features: [],\n }),\n options: () => ({}),\n debug: false,\n autoCleanup: true,\n debounceDelay: 100,\n});\n\nconst emits = defineEmits<Emits>();\n\n// Enhanced logging and error handling\nconst { logError } = useLogger(props.debug);\n\n// Reactive state management\nconst mapInstance = inject(MapProvideKey, ref(null));\nconst isSourceRegistered = ref(false);\nconst lastDataUpdate = ref<GeoJSONSourceSpecification['data']>();\n\n// Computed properties for better reactivity and performance\nconst isDataValid = computed(() => {\n const data = props.data;\n if (!data) return false;\n\n // Basic GeoJSON validation\n if (typeof data === 'object' && 'type' in data) {\n return data.type === 'FeatureCollection' || data.type === 'Feature';\n }\n\n // URL validation for string data\n if (typeof data === 'string') {\n try {\n new URL(data);\n return true;\n } catch {\n return false;\n }\n }\n\n return false;\n});\n\n/**\n * Enhanced data setter with validation and error handling\n * @param newData - New GeoJSON data to set\n */\nfunction handleSetData(newData: GeoJSONSourceSpecification['data']): void {\n try {\n if (!newData) return;\n\n // Validate data before setting\n if (typeof newData === 'object' && 'type' in newData) {\n if (!['FeatureCollection', 'Feature'].includes(newData.type)) {\n logError('Invalid GeoJSON type:', newData.type);\n return;\n }\n }\n\n setData(newData);\n lastDataUpdate.value = newData;\n\n // Emit data update event\n emits('data-update', newData);\n props.onDataUpdate?.(newData);\n } catch (error) {\n logError('Error setting GeoJSON source data:', error);\n emits('error', error);\n props.onError?.(error);\n }\n}\n\n// Enhanced GeoJSON source with comprehensive error handling\nconst {\n sourceId,\n getSource,\n setData,\n removeSource,\n refreshSource,\n sourceStatus,\n isSourceReady,\n} = useCreateGeoJsonSource({\n map: mapInstance,\n id: props.id,\n data: props.data,\n options: props.options,\n debug: props.debug,\n register: (actions) => {\n try {\n const enhancedActions = {\n ...actions,\n // Additional enhanced methods\n isSourceRegistered: isSourceRegistered.value,\n lastDataUpdate: lastDataUpdate.value,\n isDataValid: isDataValid.value,\n };\n\n props.register?.(enhancedActions);\n emits('register', enhancedActions);\n\n isSourceRegistered.value = true;\n\n // Emit load event\n if (actions.getSource.value) {\n emits('load', actions.getSource.value);\n props.onLoad?.(actions.getSource.value);\n }\n } catch (error) {\n logError('Error registering GeoJSON source:', error);\n emits('error', error);\n props.onError?.(error);\n }\n },\n});\n\n// Provide source to child components\nprovide(SourceProvideKey, getSource);\n\n// Enhanced debounced data watcher with validation and error handling for better performance\nconst stopDataWatcher = useDebouncedWatch(\n () => props.data,\n (newData, oldData) => {\n if (newData === oldData) return;\n\n try {\n if (newData && isDataValid.value) {\n handleSetData(newData);\n } else if (newData && !isDataValid.value) {\n const error = new Error('Invalid GeoJSON data format');\n logError('Invalid GeoJSON data provided:', newData);\n emits('error', error);\n props.onError?.(error);\n }\n } catch (error) {\n logError('Error in data watcher:', error);\n emits('error', error);\n props.onError?.(error);\n }\n },\n {\n delay: props.debounceDelay,\n deep: true,\n immediate: true,\n flush: 'post', // Optimize by running after DOM updates\n debug: props.debug,\n },\n);\n\n/**\n * Enhanced cleanup function for disposing resources\n */\nfunction cleanup(): void {\n try {\n if (props.autoCleanup) {\n // Stop debounced watcher\n stopDataWatcher();\n\n // Reset state\n isSourceRegistered.value = false;\n lastDataUpdate.value = undefined;\n\n // Remove source if still available\n if (isSourceReady) {\n removeSource();\n }\n }\n } catch (error) {\n logError('Error during GeoJSON source cleanup:', error);\n }\n}\n\n// Cleanup on component unmount\nonUnmounted(cleanup);\n\n// Expose source methods for parent components\ndefineExpose({\n sourceId,\n getSource,\n setData: handleSetData,\n removeSource,\n refreshSource,\n sourceStatus,\n isSourceReady,\n isSourceRegistered,\n isDataValid,\n lastDataUpdate,\n cleanup,\n});\n</script>\n\n<template>\n <!-- Main content slot -->\n <slot />\n</template>\n","<script lang=\"ts\" setup>\nimport { ref, inject, watch, computed, onUnmounted } from 'vue';\nimport {\n MapProvideKey,\n SourceProvideKey,\n MapboxLayerEvents,\n} from '@libs/enums';\nimport { useCreateFillLayer, useLayerEventListener } from '@libs/composables';\nimport type {\n CreateLayerActions,\n AnyLayout,\n FillLayerStyle,\n} from '@libs/types';\nimport type {\n Map,\n MapLayerEventType,\n MapLayerMouseEvent,\n MapLayerTouchEvent,\n FilterSpecification,\n FillLayerSpecification,\n} from 'maplibre-gl';\n\n/**\n * Props interface for FillLayer component\n * Defines all configurable properties for a MapLibre GL Fill Layer\n */\ninterface LayerProps {\n /** Unique identifier for the layer */\n id: string;\n /** Filter expression to apply to the layer */\n filter: FilterSpecification;\n /** Style configuration for the fill layer */\n style: FillLayerStyle;\n /** Maximum zoom level for layer visibility */\n maxzoom: number;\n /** Minimum zoom level for layer visibility */\n minzoom: number;\n /** Arbitrary metadata for the layer */\n metadata: object;\n /** Data source for the layer */\n source: string | object;\n /** Source layer name for vector sources */\n sourceLayer: string;\n /** ID of layer before which to insert this layer */\n beforeId: string;\n /** Whether the layer is visible */\n visible: boolean;\n /** Callback function to register layer actions */\n register: (\n actions: CreateLayerActions<FillLayerSpecification>,\n map: Map,\n ) => void;\n}\n\n/**\n * Events interface for FillLayer component\n * Defines all events that can be emitted by the layer\n */\ninterface Emits {\n /** Generic layer event */\n (e: keyof MapLayerEventType, ev: any): void;\n /** Layer registration event */\n (\n e: 'register',\n actions: CreateLayerActions<FillLayerSpecification>,\n map: Map,\n ): void;\n /** Mouse events */\n (\n e:\n | 'click'\n | 'dblclick'\n | 'mousedown'\n | 'mouseup'\n | 'mousemove'\n | 'mouseenter'\n | 'mouseleave'\n | 'mouseover'\n | 'mouseout'\n | 'contextmenu',\n ev: MapLayerMouseEvent,\n ): void;\n /** Touch events */\n (e: 'touchstart' | 'touchend' | 'touchcancel', ev: MapLayerTouchEvent): void;\n}\n\n// Component props with sensible defaults\nconst props = withDefaults(defineProps<Partial<LayerProps>>(), {\n visible: true,\n});\n\n// Component events\nconst emits = defineEmits<Emits>();\n\n// Injected dependencies\nconst sourceData = inject(SourceProvideKey, ref(null));\nconst mapInstance = inject(MapProvideKey, ref(null));\n\n// Computed properties for better performance and reactivity\nconst effectiveSource = computed(() => props.source || sourceData.value);\n\nconst visibilityStyle = computed(\n (): AnyLayout => ({\n visibility: props.visible ? 'visible' : 'none',\n }),\n);\n\nconst mergedStyle = computed(() => ({\n ...props.style,\n ...visibilityStyle.value,\n}));\n\n// Enhanced register callback with proper typing\nconst handleRegister = (\n actions: CreateLayerActions<FillLayerSpecification>,\n map: Map,\n) => {\n emits('register', actions, map);\n};\n\n// Create fill layer with optimized configuration\nconst {\n getLayer,\n setBeforeId,\n setFilter,\n setStyle,\n setZoomRange,\n setLayoutProperty,\n} = useCreateFillLayer({\n map: mapInstance,\n source: effectiveSource,\n style: mergedStyle.value,\n filter: props.filter || ['all'],\n id: props.id,\n maxzoom: props.maxzoom,\n minzoom: props.minzoom,\n metadata: props.metadata,\n sourceLayer: props.sourceLayer,\n register: handleRegister,\n});\n\n// Optimized event listener setup with error handling\nMapboxLayerEvents.forEach((evt) => {\n useLayerEventListener({\n map: mapInstance,\n layer: getLayer,\n event: evt,\n on: (data) => {\n emits(evt, data);\n },\n });\n});\n\n// Optimized single watcher for all prop changes to reduce overhead\nconst stopPropsWatcher = watch(\n () => ({\n filter: props.filter,\n style: props.style,\n maxzoom: props.maxzoom,\n minzoom: props.minzoom,\n beforeId: props.beforeId,\n visible: props.visible,\n }),\n (newProps, oldProps) => {\n // Only update if values actually changed to prevent unnecessary operations\n if (newProps.filter !== oldProps?.filter) {\n setFilter(newProps.filter);\n }\n if (newProps.style !== oldProps?.style) {\n setStyle(newProps.style);\n }\n if (\n newProps.maxzoom !== oldProps?.maxzoom ||\n newProps.minzoom !== oldProps?.minzoom\n ) {\n setZoomRange(newProps.minzoom, newProps.maxzoom);\n }\n if (newProps.beforeId !== oldProps?.beforeId) {\n setBeforeId(newProps.beforeId);\n }\n if (newProps.visible !== oldProps?.visible) {\n setLayoutProperty('visibility', newProps.visible ? 'visible' : 'none');\n }\n },\n {\n deep: true,\n flush: 'post', // Run after DOM updates for better performance\n },\n);\n\n// Enhanced cleanup\nonUnmounted(() => {\n stopPropsWatcher();\n});\n</script>\n<template></template>\n","<script lang=\"ts\" setup>\nimport { ref, inject, watch, computed, onUnmounted } from 'vue';\nimport {\n MapProvideKey,\n SourceProvideKey,\n MapboxLayerEvents,\n} from '@libs/enums';\nimport { useLayerEventListener, useCreateCircleLayer } from '@libs/composables';\nimport type {\n CreateLayerActions,\n AnyLayout,\n CircleLayerStyle,\n} from '@libs/types';\nimport type {\n Map,\n MapLayerEventType,\n MapLayerMouseEvent,\n MapLayerTouchEvent,\n FilterSpecification,\n CircleLayerSpecification,\n} from 'maplibre-gl';\n\n/**\n * Props interface for CircleLayer component\n * Defines all configurable properties for a MapLibre GL Circle Layer\n */\ninterface LayerProps {\n /** Unique identifier for the layer */\n id: string;\n /** Filter expression to apply to the layer */\n filter: FilterSpecification;\n /** Style configuration for the circle layer */\n style: CircleLayerStyle;\n /** Maximum zoom level for layer visibility */\n maxzoom: number;\n /** Minimum zoom level for layer visibility */\n minzoom: number;\n /** Arbitrary metadata for the layer */\n metadata: object;\n /** Data source for the layer */\n source: string | object;\n /** Source layer name for vector sources */\n sourceLayer: string;\n /** ID of layer before which to insert this layer */\n beforeId: string;\n /** Whether the layer is visible */\n visible: boolean;\n /** Enable debug logging */\n debug: boolean;\n /** Callback function to register layer actions */\n register: (\n actions: CreateLayerActions<CircleLayerSpecification>,\n map: Map,\n ) => void;\n}\n\n/**\n * Events interface for CircleLayer component\n * Defines all events that can be emitted by the layer\n */\ninterface Emits {\n /** Generic layer event */\n (e: keyof MapLayerEventType, ev: any): void;\n /** Layer registration event */\n (\n e: 'register',\n actions: CreateLayerActions<CircleLayerSpecification>,\n map: Map,\n ): void;\n /** Mouse events */\n (\n e:\n | 'click'\n | 'dblclick'\n | 'mousedown'\n | 'mouseup'\n | 'mousemove'\n | 'mouseenter'\n | 'mouseleave'\n | 'mouseover'\n | 'mouseout'\n | 'contextmenu',\n ev: MapLayerMouseEvent,\n ): void;\n /** Touch events */\n (e: 'touchstart' | 'touchend' | 'touchcancel', ev: MapLayerTouchEvent): void;\n}\n\n// Component props with sensible defaults and performance optimizations\nconst props = withDefaults(defineProps<Partial<LayerProps>>(), {\n visible: true,\n debug: false,\n filter: () => ['all'] as FilterSpecification,\n style: () => ({}) as CircleLayerStyle,\n});\n\n// Component events\nconst emits = defineEmits<Emits>();\n\n// Injected dependencies\nconst sourceData = inject(SourceProvideKey, ref(null));\nconst mapInstance = inject(MapProvideKey, ref(null));\n\n// Computed properties for better performance and reactivity\nconst effectiveSource = computed(() => props.source || sourceData.value);\n\nconst visibilityStyle = computed(\n (): AnyLayout => ({\n visibility: props.visible ? 'visible' : 'none',\n }),\n);\n\nconst mergedStyle = computed(() => ({\n ...props.style,\n ...visibilityStyle.value,\n}));\n\n// Enhanced register callback with proper typing\nconst handleRegister = (\n actions: CreateLayerActions<CircleLayerSpecification>,\n map: Map,\n) => {\n props.register?.(actions, map);\n emits('register', actions, map);\n};\n\n// Create circle layer with optimized configuration\nconst {\n getLayer,\n setBeforeId,\n setFilter,\n setStyle,\n setZoomRange,\n setLayoutProperty,\n} = useCreateCircleLayer({\n map: mapInstance,\n source: effectiveSource,\n style: mergedStyle.value,\n filter: props.filter || ['all'],\n id: props.id,\n maxzoom: props.maxzoom,\n minzoom: props.minzoom,\n metadata: props.metadata,\n sourceLayer: props.sourceLayer,\n register: handleRegister,\n});\n\n// Optimized event listener setup with error handling\nMapboxLayerEvents.forEach((evt) => {\n useLayerEventListener({\n map: mapInstance,\n layer: getLayer,\n event: evt,\n on: (data) => {\n emits(evt, data);\n },\n });\n});\n\n// Optimized single watcher for all prop changes to reduce overhead\nconst stopPropsWatcher = watch(\n () => ({\n filter: props.filter,\n style: props.style,\n maxzoom: props.maxzoom,\n minzoom: props.minzoom,\n beforeId: props.beforeId,\n visible: props.visible,\n }),\n (newProps, oldProps) => {\n // Only update if values actually changed to prevent unnecessary operations\n if (newProps.filter !== oldProps?.filter) {\n setFilter(newProps.filter);\n }\n if (newProps.style !== oldProps?.style) {\n setStyle(newProps.style);\n }\n if (\n newProps.maxzoom !== oldProps?.maxzoom ||\n newProps.minzoom !== oldProps?.minzoom\n ) {\n setZoomRange(newProps.minzoom, newProps.maxzoom);\n }\n if (newProps.beforeId !== oldProps?.beforeId) {\n setBeforeId(newProps.beforeId);\n }\n if (newProps.visible !== oldProps?.visible) {\n setLayoutProperty('visibility', newProps.visible ? 'visible' : 'none');\n }\n },\n {\n deep: true,\n flush: 'post', // Run after DOM updates for better performance\n },\n);\n\n// Enhanced cleanup\nonUnmounted(() => {\n stopPropsWatcher();\n});\n</script>\n<template></template>\n","<script lang=\"ts\" setup>\nimport { ref, inject, watch, computed, onUnmounted } from 'vue';\nimport {\n MapProvideKey,\n SourceProvideKey,\n MapboxLayerEvents,\n} from '@libs/enums';\nimport { useCreateLineLayer, useLayerEventListener } from '@libs/composables';\nimport type {\n CreateLayerActions,\n AnyLayout,\n LineLayerStyle,\n} from '@libs/types';\nimport type {\n Map,\n MapLayerEventType,\n MapLayerMouseEvent,\n MapLayerTouchEvent,\n FilterSpecification,\n LineLayerSpecification,\n} from 'maplibre-gl';\n\n/**\n * Props interface for LineLayer component\n * Defines all configurable properties for a MapLibre GL Line Layer\n */\ninterface LayerProps {\n /** Unique identifier for the layer */\n id: string;\n /** Filter expression to apply to the layer */\n filter: FilterSpecification;\n /** Style configuration for the line layer */\n style: LineLayerStyle;\n /** Maximum zoom level for layer visibility */\n maxzoom: number;\n /** Minimum zoom level for layer visibility */\n minzoom: number;\n /** Arbitrary metadata for the layer */\n metadata: object;\n /** Data source for the layer */\n source: string | object;\n /** Source layer name for vector sources */\n sourceLayer: string;\n /** ID of layer before which to insert this layer */\n beforeId: string;\n /** Whether the layer is visible */\n visible: boolean;\n /** Callback function to register layer actions */\n register: (\n actions: CreateLayerActions<LineLayerSpecification>,\n map: Map,\n ) => void;\n}\n\n/**\n * Events interface for LineLayer component\n * Defines all events that can be emitted by the layer\n */\ninterface Emits {\n /** Generic layer event */\n (e: keyof MapLayerEventType, ev: any): void;\n /** Layer registration event */\n (\n e: 'register',\n actions: CreateLayerActions<LineLayerSpecification>,\n map: Map,\n ): void;\n /** Mouse events */\n (\n e:\n | 'click'\n | 'dblclick'\n | 'mousedown'\n | 'mouseup'\n | 'mousemove'\n | 'mouseenter'\n | 'mouseleave'\n | 'mouseover'\n | 'mouseout'\n | 'contextmenu',\n ev: MapLayerMouseEvent,\n ): void;\n /** Touch events */\n (e: 'touchstart' | 'touchend' | 'touchcancel', ev: MapLayerTouchEvent): void;\n}\n\n// Component props with sensible defaults\nconst props = withDefaults(defineProps<Partial<LayerProps>>(), {\n visible: true,\n});\n\n// Component events\nconst emits = defineEmits<Emits>();\n\n// Injected dependencies\nconst sourceData = inject(SourceProvideKey, ref(null));\nconst mapInstance = inject(MapProvideKey, ref(null));\n\n// Computed properties for better performance and reactivity\nconst effectiveSource = computed(() => props.source || sourceData.value);\n\nconst visibilityStyle = computed(\n (): AnyLayout => ({\n visibility: props.visible ? 'visible' : 'none',\n }),\n);\n\nconst mergedStyle = computed(() => ({\n ...props.style,\n ...visibilityStyle.value,\n}));\n\n// Enhanced register callback with proper typing\nconst handleRegister = (\n actions: CreateLayerActions<LineLayerSpecification>,\n map: Map,\n) => {\n props.register?.(actions, map);\n emits('register', actions, map);\n};\n\n// Create line layer with optimized configuration\nconst {\n getLayer,\n setBeforeId,\n setFilter,\n setStyle,\n setZoomRange,\n setLayoutProperty,\n} = useCreateLineLayer({\n map: mapInstance,\n source: effectiveSource,\n style: mergedStyle.value,\n filter: props.filter || ['all'],\n id: props.id,\n maxzoom: props.maxzoom,\n minzoom: props.minzoom,\n metadata: props.metadata,\n sourceLayer: props.sourceLayer,\n register: handleRegister,\n});\n\n// Optimized event listener setup with error handling\nMapboxLayerEvents.forEach((evt) => {\n useLayerEventListener({\n map: mapInstance,\n layer: getLayer,\n event: evt,\n on: (data) => {\n emits(evt, data);\n },\n });\n});\n\n// Optimized single watcher for all prop changes to reduce overhead\nconst stopPropsWatcher = watch(\n () => ({\n filter: props.filter,\n style: props.style,\n maxzoom: props.maxzoom,\n minzoom: props.minzoom,\n beforeId: props.beforeId,\n visible: props.visible,\n }),\n (newProps, oldProps) => {\n // Only update if values actually changed to prevent unnecessary operations\n if (newProps.filter !== oldProps?.filter) {\n setFilter(newProps.filter);\n }\n if (newProps.style !== oldProps?.style) {\n setStyle(newProps.style);\n }\n if (\n newProps.maxzoom !== oldProps?.maxzoom ||\n newProps.minzoom !== oldProps?.minzoom\n ) {\n setZoomRange(newProps.minzoom, newProps.maxzoom);\n }\n if (newProps.beforeId !== oldProps?.beforeId) {\n setBeforeId(newProps.beforeId);\n }\n if (newProps.visible !== oldProps?.visible) {\n setLayoutProperty('visibility', newProps.visible ? 'visible' : 'none');\n }\n },\n {\n deep: true,\n flush: 'post', // Run after DOM updates for better performance\n },\n);\n\n// Enhanced cleanup\nonUnmounted(() => {\n stopPropsWatcher();\n});\n</script>\n<template></template>\n","<script lang=\"ts\" setup>\nimport { ref, inject, watch, computed, onUnmounted } from 'vue';\nimport {\n MapProvideKey,\n SourceProvideKey,\n MapboxLayerEvents,\n} from '@libs/enums';\nimport { useCreateSymbolLayer, useLayerEventListener } from '@libs/composables';\nimport type {\n CreateLayerActions,\n AnyLayout,\n SymbolLayerStyle,\n} from '@libs/types';\nimport type {\n Map,\n MapLayerEventType,\n MapLayerMouseEvent,\n MapLayerTouchEvent,\n FilterSpecification,\n SymbolLayerSpecification,\n} from 'maplibre-gl';\n\n/**\n * Props interface for SymbolLayer component\n * Defines all configurable properties for a MapLibre GL Symbol Layer\n */\ninterface LayerProps {\n /** Unique identifier for the layer */\n id: string;\n /** Filter expression to apply to the layer */\n filter: FilterSpecification;\n /** Style configuration for the symbol layer */\n style: SymbolLayerStyle;\n /** Maximum zoom level for layer visibility */\n maxzoom: number;\n /** Minimum zoom level for layer visibility */\n minzoom: number;\n /** Arbitrary metadata for the layer */\n metadata: object;\n /** Data source for the layer */\n source: string | object;\n /** Source layer name for vector sources */\n sourceLayer: string;\n /** ID of layer before which to insert this layer */\n beforeId: string;\n /** Whether the layer is visible */\n visible: boolean;\n /** Callback function to register layer actions */\n register: (\n actions: CreateLayerActions<SymbolLayerSpecification>,\n map: Map,\n ) => void;\n}\n\n/**\n * Events interface for SymbolLayer component\n * Defines all events that can be emitted by the layer\n */\ninterface Emits {\n /** Generic layer event */\n (e: keyof MapLayerEventType, ev: any): void;\n /** Layer registration event */\n (\n e: 'register',\n actions: CreateLayerActions<SymbolLayerSpecification>,\n map: Map,\n ): void;\n /** Mouse events */\n (\n e:\n | 'click'\n | 'dblclick'\n | 'mousedown'\n | 'mouseup'\n | 'mousemove'\n | 'mouseenter'\n | 'mouseleave'\n | 'mouseover'\n | 'mouseout'\n | 'contextmenu',\n ev: MapLayerMouseEvent,\n ): void;\n /** Touch events */\n (e: 'touchstart' | 'touchend' | 'touchcancel', ev: MapLayerTouchEvent): void;\n}\n\n// Component props with sensible defaults\nconst props = withDefaults(defineProps<Partial<LayerProps>>(), {\n visible: true,\n});\n\n// Component events\nconst emits = defineEmits<Emits>();\n\n// Injected dependencies\nconst sourceData = inject(SourceProvideKey, ref(null));\nconst mapInstance = inject(MapProvideKey, ref(null));\n\n// Computed properties for better performance and reactivity\nconst effectiveSource = computed(() => props.source || sourceData.value);\n\nconst visibilityStyle = computed(\n (): AnyLayout => ({\n visibility: props.visible ? 'visible' : 'none',\n }),\n);\n\nconst mergedStyle = computed(() => ({\n ...props.style,\n ...visibilityStyle.value,\n}));\n\n// Enhanced register callback with proper typing\nconst handleRegister = (\n actions: CreateLayerActions<SymbolLayerSpecification>,\n map: Map,\n) => {\n props.register?.(actions, map);\n emits('register', actions, map);\n};\n\n// Create symbol layer with optimized configuration\nconst {\n getLayer,\n setBeforeId,\n setFilter,\n setStyle,\n setZoomRange,\n setLayoutProperty,\n} = useCreateSymbolLayer({\n map: mapInstance,\n source: effectiveSource,\n style: mergedStyle.value,\n filter: props.filter || ['all'],\n id: props.id,\n maxzoom: props.maxzoom,\n minzoom: props.minzoom,\n metadata: props.metadata,\n sourceLayer: props.sourceLayer,\n register: handleRegister,\n});\n\n// Optimized event listener setup with error handling\nMapboxLayerEvents.forEach((evt) => {\n useLayerEventListener({\n map: mapInstance,\n layer: getLayer,\n event: evt,\n on: (data) => {\n emits(evt, data);\n },\n });\n});\n\n// Optimized single watcher for all prop changes to reduce overhead\nconst stopPropsWatcher = watch(\n () => ({\n filter: props.filter,\n style: props.style,\n maxzoom: props.maxzoom,\n minzoom: props.minzoom,\n beforeId: props.beforeId,\n visible: props.visible,\n }),\n (newProps, oldProps) => {\n // Only update if values actually changed to prevent unnecessary operations\n if (newProps.filter !== oldProps?.filter) {\n setFilter(newProps.filter);\n }\n if (newProps.style !== oldProps?.style) {\n setStyle(newProps.style);\n }\n if (\n newProps.maxzoom !== oldProps?.maxzoom ||\n newProps.minzoom !== oldProps?.minzoom\n ) {\n setZoomRange(newProps.minzoom, newProps.maxzoom);\n }\n if (newProps.beforeId !== oldProps?.beforeId) {\n setBeforeId(newProps.beforeId);\n }\n if (newProps.visible !== oldProps?.visible) {\n setLayoutProperty('visibility', newProps.visible ? 'visible' : 'none');\n }\n },\n {\n deep: true,\n flush: 'post', // Run after DOM updates for better performance\n },\n);\n\n// Enhanced cleanup\nonUnmounted(() => {\n stopPropsWatcher();\n});\n</script>\n<template></template>\n","<script lang=\"ts\" setup>\nimport { inject, ref, computed, watch, onMounted } from 'vue';\nimport { useCreateImage, useLogger } from '@libs/composables';\nimport { MapProvideKey } from '@libs/enums';\nimport type { ImageDatas } from '@libs/types';\nimport type { StyleImageMetadata } from 'maplibre-gl';\n\n/**\n * Interface for individual image items\n */\ninterface ImageItem {\n /** Unique identifier for the image */\n id: string;\n /** Image data (URL string or ImageData/HTMLImageElement) */\n image: ImageDatas | string;\n /** Optional image metadata and options */\n options?: Partial<StyleImageMetadata>;\n}\n\n/**\n * Props interface for Image component\n * Manages multiple images for MapLibre GL\n */\ninterface ImageProps {\n /** Array of images to load */\n images: ImageItem[];\n /** Default options applied to all images */\n options?: Partial<StyleImageMetadata>;\n /** Whether to show loading state */\n showLoading?: boolean;\n /** Whether to enable debug logging */\n debug?: boolean;\n}\n\n// Component props with sensible defaults\nconst props = withDefaults(defineProps<ImageProps>(), {\n images: () => [],\n showLoading: true,\n});\n\nconst { logError } = useLogger(props.debug);\n\n// Reactive state\nconst loading = ref(true);\n\n// Injected dependencies\nconst mapInstance = inject(MapProvideKey, ref(null));\n\n// Computed properties for better performance\nconst hasImages = computed(() => props.images.length > 0);\n\n/**\n * Enhanced image loading function with error handling and progress tracking\n * @param images - Array of images to load\n */\nasync function loadImages(images: ImageItem[]): Promise<void> {\n if (!images.length) {\n loading.value = false;\n return;\n }\n\n loading.value = true;\n\n try {\n const loadPromises = images.map(async (image) => {\n try {\n const actions = useCreateImage({\n map: mapInstance,\n id: image.id,\n image: image.image,\n options: image.options || props.options,\n });\n await actions.loadPromise;\n } catch (error) {\n const errorMessage = `Failed to load image ${image.id}: ${error}`;\n logError(errorMessage);\n }\n });\n\n await Promise.allSettled(loadPromises);\n } catch (error) {\n logError('Error loading images:', error);\n } finally {\n loading.value = false;\n }\n}\n\n// Watch for changes in images prop\nwatch(\n () => props.images,\n (newImages) => {\n if (newImages.length > 0) {\n loadImages(newImages);\n }\n },\n { deep: true, immediate: false },\n);\n\n// Load images on mount\nonMounted(() => {\n if (hasImages.value) {\n loadImages(props.images);\n } else {\n loading.value = false;\n }\n});\n</script>\n<template>\n <slot v-if=\"!loading\" />\n</template>\n","<script lang=\"ts\" setup>\nimport { inject, ref, watch, computed } from 'vue';\nimport { MapProvideKey } from '@libs/enums';\nimport { useCreatePopup } from '@libs/composables';\nimport type { LngLatLike, PopupOptions } from 'maplibre-gl';\n\n/**\n * Props interface for Popup component\n * Defines all configurable properties for a MapLibre GL Popup\n */\ninterface PopupProps {\n /** CSS class name for the popup */\n className: string;\n /** Geographic coordinates for the popup */\n lnglat: LngLatLike;\n /** Whether the popup is visible */\n show: boolean;\n /** Whether to attach popup to the map */\n withMap: boolean;\n /** Popup configuration options */\n options: PopupOptions;\n /** HTML content for the popup */\n html: string;\n /** Maximum width of the popup */\n maxWidth?: string;\n /** Whether to show close button */\n closeButton?: boolean;\n /** Whether to close on map click */\n closeOnClick?: boolean;\n /** Whether to close on escape key */\n closeOnEscape?: boolean;\n}\n\n/**\n * Events interface for Popup component\n * Defines all events that can be emitted by the popup\n */\ninterface Emits {\n /** Fired when popup is closed */\n (event: 'close'): void;\n /** Fired when popup is opened */\n (event: 'open'): void;\n /** Fired when show state changes (for v-model support) */\n (event: 'update:show', show: boolean): void;\n}\n\n// Component props with sensible defaults\nconst props = withDefaults(defineProps<Partial<PopupProps>>(), {\n show: true,\n withMap: true,\n closeButton: true,\n closeOnClick: true,\n closeOnEscape: true,\n});\n\n// Component events\nconst emits = defineEmits<Emits>();\n\n// Injected dependencies\nconst mapInstance = inject(MapProvideKey, ref(null));\nconst popupElRef = ref<HTMLElement>();\n\n// Computed properties for better performance\nconst popupOptions = computed(() => ({\n ...props.options,\n className: props.className,\n maxWidth: props.maxWidth,\n closeButton: props.closeButton,\n closeOnClick: props.closeOnClick,\n closeOnEscape: props.closeOnEscape,\n}));\n\n// Enhanced event handlers with error handling\nconst eventHandlers = {\n open: () => {\n emits('open');\n emits('update:show', true);\n },\n close: () => {\n emits('close');\n emits('update:show', false);\n },\n};\n\n// Create popup with optimized configuration\nconst { setLngLat, show, hide } = useCreatePopup({\n map: mapInstance,\n el: popupElRef,\n lnglat: props.lnglat,\n html: props.html,\n show: props.show,\n withMap: props.withMap,\n options: popupOptions.value,\n on: eventHandlers,\n});\n\n// Reactive watchers for prop changes with error handling\nwatch(\n () => props.show,\n (isShow) => {\n isShow ? show() : hide();\n },\n);\n\nwatch(\n () => props.lnglat,\n (newLnglat) => {\n if (newLnglat) {\n setLngLat(newLnglat);\n }\n },\n { deep: true },\n);\n</script>\n<template>\n <div ref=\"popupElRef\" class=\"mapboxgl-popup-content-inner\">\n <slot />\n </div>\n</template>\n","<script lang=\"ts\" setup>\nimport { inject, ref, useSlots, watch, computed } from 'vue';\nimport { MapProvideKey } from '@libs/enums';\nimport { useCreateMarker } from '@libs/composables';\nimport type { Anchor } from '@libs/types';\nimport type {\n LngLatLike,\n Alignment,\n PointLike,\n MarkerOptions,\n Popup,\n} from 'maplibre-gl';\n\n/**\n * Props interface for Marker component\n * Defines all configurable properties for a MapLibre GL Marker\n */\ninterface MarkerProps {\n /** Geographic coordinates for the marker */\n lnglat: LngLatLike;\n /** Popup to associate with the marker */\n popup: Popup;\n /** Marker configuration options */\n options: MarkerOptions;\n /** Whether the marker is draggable */\n draggable: boolean;\n /** Custom HTML element for the marker */\n element: HTMLElement | undefined;\n /** Offset from the marker's position */\n offset: PointLike | undefined;\n /** Anchor point for the marker */\n anchor: Anchor | undefined;\n /** Color of the default marker */\n color: string | undefined;\n /** Tolerance for click events */\n clickTolerance: number | undefined;\n /** Rotation angle in degrees */\n rotation: number | undefined;\n /** Rotation alignment relative to the map */\n rotationAlignment: Alignment | undefined;\n /** Pitch alignment relative to the map */\n pitchAlignment: Alignment | undefined;\n /** Scale factor for the marker */\n scale: number | undefined;\n /** Opacity when marker is occluded */\n occludedOpacity: number | undefined;\n}\n\n/**\n * Events interface for Marker component\n * Defines all events that can be emitted by the marker\n */\ninterface Emits {\n /** Fired when marker drag starts */\n (e: 'dragstart', ev: Event): void;\n /** Fired during marker drag */\n (e: 'drag', ev: Event): void;\n /** Fired when marker drag ends */\n (e: 'dragend', ev: Event): void;\n}\n\n// Component props with sensible defaults\nconst props = withDefaults(defineProps<Partial<MarkerProps>>(), {\n options: () => ({}),\n});\n\n// Component events\nconst emits = defineEmits<Emits>();\n\n// Slots for custom marker content\nconst slots = useSlots();\n\n// Injected dependencies\nconst mapInstance = inject(MapProvideKey, ref(null));\nconst markerElRef = ref<HTMLElement>();\n\n// Computed properties for better performance\nconst hasCustomElement = computed(() => Boolean(slots.default?.()));\n\nconst markerOptions = computed(() => ({\n ...props.options,\n ...(props.draggable !== undefined && { draggable: props.draggable }),\n ...(props.offset !== undefined && { offset: props.offset }),\n ...(props.anchor !== undefined && { anchor: props.anchor }),\n ...(props.color !== undefined && { color: props.color }),\n ...(props.clickTolerance !== undefined && {\n clickTolerance: props.clickTolerance,\n }),\n ...(props.rotation !== undefined && { rotation: props.rotation }),\n ...(props.rotationAlignment !== undefined && {\n rotationAlignment: props.rotationAlignment,\n }),\n ...(props.pitchAlignment !== undefined && {\n pitchAlignment: props.pitchAlignment,\n }),\n ...(props.scale !== undefined && { scale: props.scale }),\n ...(props.occludedOpacity !== undefined && {\n occludedOpacity: props.occludedOpacity,\n }),\n}));\n\n// Enhanced event handlers with error handling\nconst eventHandlers = {\n dragstart: (ev: Event) => {\n emits('dragstart', ev);\n },\n drag: (ev: Event) => {\n emits('drag', ev);\n },\n dragend: (ev: Event) => {\n emits('dragend', ev);\n },\n};\n\n// Create marker with optimized configuration\nconst { setDraggable, setLngLat } = useCreateMarker({\n map: mapInstance,\n el: hasCustomElement.value ? markerElRef : undefined,\n lnglat: props.lnglat,\n popup: props.popup,\n options: markerOptions.value,\n on: eventHandlers,\n});\n\n// Reactive watchers for prop changes with error handling\nwatch(\n () => props.lnglat,\n (newLnglat) => {\n if (newLnglat) {\n setLngLat(newLnglat);\n }\n },\n { deep: true },\n);\n\nwatch(\n () => props.draggable,\n (newDraggable) => {\n if (newDraggable !== undefined) {\n setDraggable(newDraggable);\n }\n },\n);\n</script>\n<template>\n <div ref=\"markerElRef\">\n <slot />\n </div>\n</template>\n"],"names":["MapCreationStatus","_openBlock","_createElementBlock","_hoisted_1","_renderSlot"],"mappings":"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"}
@@ -10,8 +10,6 @@ interface OptimizedComputedOptions<T> {
10
10
  equalityFn?: (a: T, b: T) => boolean;
11
11
  /** Cache duration in milliseconds (default: no expiration) */
12
12
  cacheDuration?: number;
13
- /** Enable debug logging */
14
- debug?: boolean;
15
13
  }
16
14
  /**
17
15
  * Creates an optimized computed property with caching and equality checking
@@ -1 +1 @@
1
- {"version":3,"file":"useOptimizedComputed.d.ts","sourceRoot":"","sources":["../../../libs/composables/utils/useOptimizedComputed.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiB,KAAK,WAAW,EAAE,MAAM,KAAK,CAAC;AAEtD;;GAEG;AACH,UAAU,wBAAwB,CAAC,CAAC;IAClC,qDAAqD;IACrD,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,+BAA+B;IAC/B,UAAU,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,OAAO,CAAC;IACrC,8DAA8D;IAC9D,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,2BAA2B;IAC3B,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED;;;;;;;GAOG;AACH,wBAAgB,oBAAoB,CAAC,CAAC,EACpC,MAAM,EAAE,MAAM,CAAC,EACf,OAAO,GAAE,wBAAwB,CAAC,CAAC,CAAM,GACxC,WAAW,CAAC,CAAC,CAAC,CA2DhB;AAED;;;;;;;;GAQG;AACH,wBAAgB,WAAW,CAAC,KAAK,SAAS,GAAG,EAAE,EAAE,OAAO,EACtD,EAAE,EAAE,CAAC,GAAG,IAAI,EAAE,KAAK,KAAK,OAAO,EAC/B,KAAK,GAAE,CAAC,GAAG,IAAI,EAAE,KAAK,KAAK,MAA0C,EACrE,YAAY,SAAM,GACjB,CAAC,GAAG,IAAI,EAAE,KAAK,KAAK,OAAO,CAyB7B;AAED;;;;;;;;GAQG;AACH,wBAAgB,oBAAoB,CAAC,CAAC,SAAS,MAAM,EACnD,MAAM,EAAE,MAAM,CAAC,EACf,SAAS,SAAO,EAChB,UAAU,SAAM,GACf,WAAW,CAAC,CAAC,CAAC,CA0BhB;AAED;;;;;;;GAOG;AACH,wBAAgB,sBAAsB,CAAC,CAAC,EACtC,MAAM,EAAE,MAAM,CAAC,EACf,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,KAAK,IAAI,GAC7B,WAAW,CAAC,CAAC,CAAC,CAkBhB;AAED;;;;;;;;GAQG;AACH,wBAAgB,kBAAkB,CAAC,CAAC,EAClC,MAAM,EAAE,MAAM,CAAC,EACf,SAAS,SAAI,EACb,UAAU,SAAK,GACd,WAAW,CAAC,CAAC,CAAC,CAkChB"}
1
+ {"version":3,"file":"useOptimizedComputed.d.ts","sourceRoot":"","sources":["../../../libs/composables/utils/useOptimizedComputed.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiB,KAAK,WAAW,EAAE,MAAM,KAAK,CAAC;AAEtD;;GAEG;AACH,UAAU,wBAAwB,CAAC,CAAC;IAClC,qDAAqD;IACrD,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,+BAA+B;IAC/B,UAAU,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,OAAO,CAAC;IACrC,8DAA8D;IAC9D,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED;;;;;;;GAOG;AACH,wBAAgB,oBAAoB,CAAC,CAAC,EACpC,MAAM,EAAE,MAAM,CAAC,EACf,OAAO,GAAE,wBAAwB,CAAC,CAAC,CAAM,GACxC,WAAW,CAAC,CAAC,CAAC,CA4ChB;AAED;;;;;;;;GAQG;AACH,wBAAgB,WAAW,CAAC,KAAK,SAAS,GAAG,EAAE,EAAE,OAAO,EACtD,EAAE,EAAE,CAAC,GAAG,IAAI,EAAE,KAAK,KAAK,OAAO,EAC/B,KAAK,GAAE,CAAC,GAAG,IAAI,EAAE,KAAK,KAAK,MAA0C,EACrE,YAAY,SAAM,GACjB,CAAC,GAAG,IAAI,EAAE,KAAK,KAAK,OAAO,CAyB7B;AAED;;;;;;;;GAQG;AACH,wBAAgB,oBAAoB,CAAC,CAAC,SAAS,MAAM,EACnD,MAAM,EAAE,MAAM,CAAC,EACf,SAAS,SAAO,EAChB,UAAU,SAAM,GACf,WAAW,CAAC,CAAC,CAAC,CA0BhB;AAED;;;;;;;GAOG;AACH,wBAAgB,sBAAsB,CAAC,CAAC,EACtC,MAAM,EAAE,MAAM,CAAC,EACf,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,KAAK,IAAI,GAC7B,WAAW,CAAC,CAAC,CAAC,CAkBhB;AAED;;;;;;;;GAQG;AACH,wBAAgB,kBAAkB,CAAC,CAAC,EAClC,MAAM,EAAE,MAAM,CAAC,EACf,SAAS,SAAI,EACb,UAAU,SAAK,GACd,WAAW,CAAC,CAAC,CAAC,CAkChB"}
@@ -1,6 +1,6 @@
1
1
  import { ref, computed, unref, watchEffect, onUnmounted, watch, shallowRef, effectScope, onScopeDispose, onMounted, nextTick } from "vue";
2
2
  import { Map as Map$1, getVersion, Popup, Marker, GeolocateControl } from "maplibre-gl";
3
- import { M as MapCreationStatus } from "./components-CwXC2MaG.js";
3
+ import { M as MapCreationStatus } from "./components-9nhzTBku.js";
4
4
  var BoundsStatus = /* @__PURE__ */ ((BoundsStatus2) => {
5
5
  BoundsStatus2["NotSet"] = "not-set";
6
6
  BoundsStatus2["Setting"] = "setting";
@@ -921,12 +921,7 @@ function useJumpTo(mapOrProps, legacyOptions) {
921
921
  };
922
922
  }
923
923
  function useOptimizedComputed(getter, options = {}) {
924
- const {
925
- deepEqual = false,
926
- equalityFn,
927
- cacheDuration,
928
- debug = false
929
- } = options;
924
+ const { deepEqual = false, equalityFn, cacheDuration } = options;
930
925
  const lastValue = ref();
931
926
  const lastComputedTime = ref(0);
932
927
  const hasInitialValue = ref(false);
@@ -942,25 +937,16 @@ function useOptimizedComputed(getter, options = {}) {
942
937
  if (cacheDuration && hasInitialValue.value) {
943
938
  const timeSinceLastCompute = now - lastComputedTime.value;
944
939
  if (timeSinceLastCompute < cacheDuration) {
945
- if (debug) {
946
- console.log("useOptimizedComputed: returning cached value");
947
- }
948
940
  return lastValue.value;
949
941
  }
950
942
  }
951
943
  const newValue = getter();
952
944
  if (hasInitialValue.value && isEqual(newValue, lastValue.value)) {
953
- if (debug) {
954
- console.log("useOptimizedComputed: value unchanged, returning cached");
955
- }
956
945
  return lastValue.value;
957
946
  }
958
947
  lastValue.value = newValue;
959
948
  lastComputedTime.value = now;
960
949
  hasInitialValue.value = true;
961
- if (debug) {
962
- console.log("useOptimizedComputed: computed new value", newValue);
963
- }
964
950
  return newValue;
965
951
  });
966
952
  }
@@ -5697,33 +5683,33 @@ function useCreateSymbolLayer(props) {
5697
5683
  }
5698
5684
  export {
5699
5685
  EventListenerStatus as $,
5700
- useComputedWithCleanup as A,
5686
+ useThrottledComputed as A,
5701
5687
  BoundsStatus as B,
5702
- useBatchedComputed as C,
5703
- usePanBy as D,
5688
+ useComputedWithCleanup as C,
5689
+ useBatchedComputed as D,
5704
5690
  EaseStatus as E,
5705
5691
  FitScreenCoordinatesStatus as F,
5706
- usePanTo as G,
5707
- useRotateTo as H,
5708
- useResetNorth as I,
5692
+ usePanBy as G,
5693
+ usePanTo as H,
5694
+ useRotateTo as I,
5709
5695
  JumpStatus as J,
5710
- useResetNorthPitch as K,
5711
- useSnapToNorth as L,
5712
- useZoomTo as M,
5713
- useZoomIn as N,
5714
- useZoomOut as O,
5696
+ useResetNorth as K,
5697
+ useResetNorthPitch as L,
5698
+ useSnapToNorth as M,
5699
+ useZoomTo as N,
5700
+ useZoomIn as O,
5715
5701
  PanStatus as P,
5716
- useMapbox as Q,
5702
+ useZoomOut as Q,
5717
5703
  RotationStatus as R,
5718
- LayerManagementStatus as S,
5719
- useLayer as T,
5720
- ImageStatus as U,
5721
- GeoJsonSourceStatus as V,
5722
- useGeoJsonSource as W,
5723
- PopupStatus as X,
5724
- MarkerStatus as Y,
5704
+ useMapbox as S,
5705
+ LayerManagementStatus as T,
5706
+ useLayer as U,
5707
+ ImageStatus as V,
5708
+ GeoJsonSourceStatus as W,
5709
+ useGeoJsonSource as X,
5710
+ PopupStatus as Y,
5725
5711
  ZoomStatus as Z,
5726
- useCreateMarker as _,
5712
+ MarkerStatus as _,
5727
5713
  useCreateMapbox as a,
5728
5714
  GeolocateEventListenerStatus as a0,
5729
5715
  MapReloadEventStatus as a1,
@@ -5751,17 +5737,17 @@ export {
5751
5737
  useCreateSymbolLayer as l,
5752
5738
  useCreateImage as m,
5753
5739
  useCreatePopup as n,
5754
- useFitBounds as o,
5755
- useCameraForBounds as p,
5756
- useDebounce as q,
5757
- useDebouncedRef as r,
5758
- useEaseTo as s,
5759
- useFitScreenCoordinates as t,
5740
+ useCreateMarker as o,
5741
+ useFitBounds as p,
5742
+ useCameraForBounds as q,
5743
+ useDebounce as r,
5744
+ useDebouncedRef as s,
5745
+ useEaseTo as t,
5760
5746
  useOptimizedComputed as u,
5761
- FlyStatus as v,
5762
- useFlyTo as w,
5763
- useJumpTo as x,
5764
- useMemoized as y,
5765
- useThrottledComputed as z
5747
+ useFitScreenCoordinates as v,
5748
+ FlyStatus as w,
5749
+ useFlyTo as x,
5750
+ useJumpTo as y,
5751
+ useMemoized as z
5766
5752
  };
5767
- //# sourceMappingURL=composables-BFBL0Id8.js.map
5753
+ //# sourceMappingURL=composables-BTjkdo8Z.js.map