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.
- package/dist/components/Mapbox.vue.d.ts.map +1 -1
- package/dist/{components-CwXC2MaG.js → components-9nhzTBku.js} +119 -23
- package/dist/components-9nhzTBku.js.map +1 -0
- package/dist/composables/utils/useOptimizedComputed.d.ts +0 -2
- package/dist/composables/utils/useOptimizedComputed.d.ts.map +1 -1
- package/dist/{composables-BFBL0Id8.js → composables-BTjkdo8Z.js} +34 -48
- package/dist/composables-BTjkdo8Z.js.map +1 -0
- package/dist/index.d.ts +2 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +35 -36
- package/dist/index.umd.cjs +1 -1
- package/dist/index.umd.cjs.map +1 -1
- package/dist/style.css +1 -0
- package/package.json +2 -2
- package/dist/components-CwXC2MaG.js.map +0 -1
- package/dist/components.css +0 -1
- package/dist/composables-BFBL0Id8.js.map +0 -1
|
@@ -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;
|
|
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-
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
1299
|
+
_sfc_main$9 as _,
|
|
1205
1300
|
MapProvideKey as a,
|
|
1206
1301
|
MapboxEvents as b,
|
|
1207
1302
|
MapboxLayerEvents as c,
|
|
1208
|
-
_sfc_main$
|
|
1209
|
-
_sfc_main$
|
|
1210
|
-
_sfc_main$
|
|
1211
|
-
_sfc_main$
|
|
1212
|
-
_sfc_main$
|
|
1213
|
-
_sfc_main$
|
|
1214
|
-
_sfc_main$
|
|
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-
|
|
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":";;AAIO,MAAM,gBAAgB,OAAA;AAItB,MAAM,mBAAmB,OAAA;ACNzB,IAAK,sCAAAA,uBAAL;AACLA,qBAAA,gBAAA,IAAiB;AACjBA,qBAAA,cAAA,IAAe;AACfA,qBAAA,SAAA,IAAU;AACVA,qBAAA,QAAA,IAAS;AACTA,qBAAA,OAAA,IAAQ;AACRA,qBAAA,WAAA,IAAY;AANF,SAAAA;AAAA,GAAA,qBAAA,CAAA,CAAA;AASL,MAAM,eAAwC;AAAA,EACnD;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;AAEO,MAAM,kBAAiD;AAAA,EAC5D;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;ACnEO,MAAM,oBAAiD;AAAA,EAC5D;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACoGA,UAAM,QAAQ;AAyBd,UAAM,QAAQ;AAGd,UAAM,EAAE,SAAA,IAAa,UAAU,MAAM,KAAK;AAG1C,UAAM,eAAe,IAAA;AACrB,UAAM,gBAAgB,IAAA;AACtB,UAAM,WAAW,IAAI,MAAM,QAAQ,KAAe;AAElD,UAAM,qBAAqB,IAAI,KAAK;AACpC,UAAM,oBAAoB;AAAA,MACxB,kBAAkB;AAAA,IAAA;AAIpB,UAAM,aAAa;AAAA,MACjB,MAAM;AACJ,cAAM,cAAc,EAAE,GAAG,MAAM,QAAA;AAC/B,cAAM,gBAAgB,EAAE,GAAG,aAAa,GAAG,aAAa,MAAA;AAGxD,YAAI,CAAC,cAAc,WAAW;AAC5B,wBAAc,YAAY,MAAM;AAAA,QAClC;AAEA,eAAO;AAAA,MACT;AAAA,MACA;AAAA,QACE,WAAW;AAAA;AAAA,MAAA;AAAA,IACb;AAGF,UAAM,aAAa;AAAA,MACjB,MAAM,kBAAkB,UAAU,kBAAkB;AAAA,IAAA;AAEtD,UAAM,eAAe;AAAA,MACnB,MAAM,kBAAkB,UAAU,kBAAkB;AAAA,IAAA;AAEtD,UAAM,cAAc;AAAA,MAClB,MAAM,kBAAkB,UAAU,kBAAkB;AAAA,IAAA;AAOtD,aAAS,cAAc,SAAoC;AACzD,UAAI;AACF,qBAAa,QAAQ;AAAA,UACnB,GAAI,MAAM,UAAU,KAAK,CAAA;AAAA,UACzB,GAAG;AAAA,QAAA;AAAA,MAEP,SAAS,OAAO;AACd,iBAAS,8BAA8B,OAAO,EAAE,QAAA,CAAS;AAAA,MAC3D;AAAA,IACF;AAKA,aAAS,qBAAyC;AAChD,UAAI;AACF,cAAM,UAAU,SAAS,eAAe,oBAAoB;AAC5D,YAAI,CAAC,SAAS;AACZ,mBAAS,iCAAiC;AAC1C,iBAAO;AAAA,QACT;AAGA,cAAM,oBAAoB,SAAS,eAAe,MAAM,WAAW;AACnE,YAAI,mBAAmB;AACrB,4BAAkB,OAAA;AAAA,QACpB;AAEA,cAAM,YAAY,SAAS,cAAc,KAAK;AAC9C,kBAAU,KAAK,MAAM;AACrB,kBAAU,YAAY,MAAM;AAC5B,kBAAU,MAAM,QAAQ;AACxB,kBAAU,MAAM,SAAS;AAEzB,gBAAQ,YAAY,SAAS;AAC7B,eAAO;AAAA,MACT,SAAS,OAAO;AACd,iBAAS,iCAAiC,KAAK;AAC/C,eAAO;AAAA,MACT;AAAA,IACF;AAGA,UAAM;AAAA,MACJ;AAAA,MAEA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IAAA,IACE,gBAAgB,eAAe,UAAU;AAAA,MAC3C,GAAG,MAAM,UAAU;AAAA,MACnB,UAAU,CAAC,YAAmC;;AAC5C,YAAI;AACF,gBAAM,kBAAkB;AAAA,YACtB,GAAG;AAAA,YACH;AAAA;AAAA,YAEA,YAAY,WAAW;AAAA,YACvB,cAAc,aAAa;AAAA,YAC3B,aAAa,YAAY;AAAA,UAAA;AAG3B,sBAAM,aAAN,+BAAiB;AACjB,gBAAM,YAAY,eAAkC;AAAA,QACtD,SAAS,OAAO;AACd,mBAAS,kCAAkC,KAAK;AAChD,sBAAM,YAAN,+BAAgB;AAAA,QAClB;AAAA,MACF;AAAA,MACA,QAAQ,CAAC,QAAQ;;AACf,YAAI;AACF,4BAAkB,QAAQ,kBAAkB;AAC5C,sBAAM,WAAN,+BAAe;AAAA,QACjB,SAAS,OAAO;AACd,mBAAS,8BAA8B,KAAK;AAC5C,sBAAM,YAAN,+BAAgB;AAAA,QAClB;AAAA,MACF;AAAA,MACA,SAAS,CAAC,UAAU;;AAClB,YAAI;AACF,4BAAkB,QAAQ,kBAAkB;AAC5C,mBAAS,uBAAuB,KAAK;AACrC,sBAAM,YAAN,+BAAgB;AAAA,QAClB,SAAS,cAAc;AACrB,mBAAS,2BAA2B,YAAY;AAAA,QAClD;AAAA,MACF;AAAA,MACA,OAAO,MAAM;AAAA,IAAA,CACd;AAGD,YAAQ,eAAe,WAAW;AAGlC,iBAAa,IAAI,CAAC,QAAQ;AACxB,aAAO,oBAAoB;AAAA,QACzB,KAAK;AAAA,QACL,OAAO;AAAA,QACP,IAAI,CAAC,SAAS;AACZ,cAAI;AACF,kBAAM,KAA2B,IAAI;AAAA,UACvC,SAAS,OAAO;AACd,qBAAS,YAAY,GAAG,mBAAmB,OAAO,EAAE,MAAM;AAAA,UAC5D;AAAA,QACF;AAAA,QACA,OAAO,MAAM;AAAA,MAAA,CACd;AAAA,IACH,CAAC;AAGD,UAAM,WAAW;AAAA,MACf;AAAA,QACE,MAAM,MAAM,UAAU,EAAE;AAAA,QACxB,CAAC,UAAU,SAAS,UAAU,KAAK;AAAA,QACnC,EAAE,OAAO,OAAA;AAAA,MAAO;AAAA,MAElB;AAAA,QACE,MAAM,MAAM,UAAU,EAAE;AAAA,QACxB,CAAC,UAAU,UAAU,UAAa,WAAW,KAAK;AAAA,QAClD,EAAE,OAAO,OAAA;AAAA,MAAO;AAAA,MAElB;AAAA,QACE,MAAM,MAAM,UAAU,EAAE;AAAA,QACxB,CAAC,UAAU,UAAU,UAAa,QAAQ,KAAK;AAAA,QAC/C,EAAE,OAAO,OAAA;AAAA,MAAO;AAAA,MAElB;AAAA,QACE,MAAM,MAAM,UAAU,EAAE;AAAA,QACxB,CAAC,UAAU,UAAU,UAAa,SAAS,KAAK;AAAA,QAChD,EAAE,OAAO,OAAA;AAAA,MAAO;AAAA,MAElB;AAAA,QACE,MAAM,MAAM,UAAU,EAAE;AAAA,QACxB,CAAC,UAAU,SAAS,SAAS,KAAK;AAAA,QAClC,EAAE,OAAO,OAAA;AAAA,MAAO;AAAA,MAElB;AAAA,QACE,MAAM,MAAM,UAAU,EAAE;AAAA,QACxB,CAAC,UAAU,SAAS,aAAa,KAAK;AAAA,QACtC,EAAE,OAAO,OAAA;AAAA,MAAO;AAAA,MAElB;AAAA,QACE,MAAM,MAAM,UAAU,EAAE;AAAA,QACxB,CAAC,UAAU,UAAU,UAAa,UAAU,QAAQ,YAAY,KAAK;AAAA,QACrE,EAAE,OAAO,OAAA;AAAA,MAAO;AAAA,MAElB;AAAA,QACE,MAAM,MAAM,UAAU,EAAE;AAAA,QACxB,CAAC,UAAU,UAAU,UAAa,UAAU,QAAQ,WAAW,KAAK;AAAA,QACpE,EAAE,OAAO,OAAA;AAAA,MAAO;AAAA,MAElB;AAAA,QACE,MAAM,MAAM,UAAU,EAAE;AAAA,QACxB,CAAC,UAAU,UAAU,UAAa,UAAU,QAAQ,YAAY,KAAK;AAAA,QACrE,EAAE,OAAO,OAAA;AAAA,MAAO;AAAA,MAElB;AAAA,QACE,MAAM,MAAM,UAAU,EAAE;AAAA,QACxB,CAAC,UAAU,UAAU,UAAa,UAAU,QAAQ,WAAW,KAAK;AAAA,QACpE,EAAE,OAAO,OAAA;AAAA,MAAO;AAAA,MAElB;AAAA,QACE,MAAM,MAAM,UAAU,EAAE;AAAA,QACxB,CAAC,UAAU,UAAU,UAAa,qBAAqB,KAAK;AAAA,QAC5D,EAAE,OAAO,OAAA;AAAA,MAAO;AAAA,IAClB;AAIF,gBAAY,YAAY;;AACtB,UAAI;AACF,cAAM,SAAA;AAEN,cAAM,YAAY,mBAAA;AAClB,YAAI,WAAW;AACb,wBAAc,QAAQ;AACtB,6BAAmB,QAAQ;AAC3B,4BAAkB,QAAQ,kBAAkB;AAAA,QAC9C,OAAO;AACL,mBAAS,gCAAgC;AACzC,4BAAkB,QAAQ,kBAAkB;AAAA,QAC9C;AAAA,MACF,SAAS,OAAO;AACd,iBAAS,4CAA4C,KAAK;AAC1D,0BAAkB,QAAQ,kBAAkB;AAC5C,oBAAM,YAAN,+BAAgB;AAAA,MAClB;AAAA,IACF,CAAC;AAGD,aAAS,UAAgB;;AACvB,UAAI;AAEF,iBAAS,QAAQ,CAAC,gBAAgB,4CAAe;AAGjD,4BAAc,UAAd,mBAAqB;AAGrB,2BAAmB,QAAQ;AAC3B,0BAAkB,QAAQ,kBAAkB;AAAA,MAC9C,SAAS,OAAO;AACd,iBAAS,yBAAyB,KAAK;AAAA,MACzC;AAAA,IACF;AAEA,kBAAc,MAAM;AAClB,UAAI,MAAM,aAAa;AACrB,gBAAA;AAAA,MACF;AAAA,IACF,CAAC;AAED,gBAAY,MAAM;AAChB,UAAI,MAAM,aAAa;AACrB,gBAAA;AAAA,MACF;AAAA,IACF,CAAC;;AAIC,aAAAC,UAAA,GAAAC,mBAaM,OAbNC,cAaM;AAAA,QAXO,aAAA,sBAAXD,mBAEM,OAAA,YAAA;AAAA,UADJE,WAA6B,KAAA,QAAA,SAAA;AAAA,QAAA;QAIpB,YAAA,sBAAXF,mBAEM,OAAA,YAAA;AAAA,UADJE,WAA2B,KAAA,QAAA,OAAA;AAAA,QAAA;QAIjB,WAAA,SAAU,CAAM,aAAA,SAAY,CAAK,YAAA,QAA7CA,WAA6D,KAAA,QAAA,WAAA,EAAA,KAAA,EAAA,CAAA;;;;;;;;;;;;;;;;;;;;;ACpXjE,UAAM,QAAQ;AAMd,UAAM,QAAQ;AAGd,UAAM,EAAE,SAAA,IAAa,UAAU,MAAM,KAAK;AAG1C,UAAM,cAAc,OAAO,eAAe,IAAI,IAAI,CAAC;AACnD,UAAM,sBAAsB,IAAI,KAAK;AACrC,UAAM,eAAe,IAAS,IAAI;AAGlC,UAAM,kBAAkB,SAAS,MAAM,CAAC,CAAC,aAAa,KAAK;AAG3D,UAAM,EAAE,kBAAkB,gBAAgB,eAAe,YAAY,QAAA,IACnE,oBAAoB;AAAA,MAClB,KAAK;AAAA,MACL,UAAU,MAAM;AAAA,MAChB,SAAS,MAAM;AAAA,MACf,OAAO,MAAM;AAAA,IAAA,CACd;AAOH,aAAS,qBACP,WACA,MACM;;AACN,UAAI;AAEF,cAAM,WAAW,IAAI;AAGrB,gBAAQ,WAAA;AAAA,UACN,KAAK;AACH,wBAAM,gBAAN,+BAAoB;AACpB;AAAA,UACF,KAAK;AACH,yBAAa,QAAQ;AACrB,wBAAM,YAAN,+BAAgB;AAChB;AAAA,UACF,KAAK;AACH,wBAAM,oBAAN,+BAAwB;AACxB;AAAA,UACF,KAAK;AACH,wBAAM,kBAAN,+BAAsB;AACtB;AAAA,UACF,KAAK;AACH,wBAAM,qBAAN,+BAAyB;AACzB;AAAA,UACF;AACE;AAAA,QAAA;AAAA,MAEN,SAAS,OAAO;AACd,iBAAS,kBAAkB,SAAS,WAAW,OAAO,EAAE,MAAM;AAC9D,qBAAa,QAAQ;AACrB,oBAAM,YAAN,+BAAgB;AAAA,MAClB;AAAA,IACF;AAGA,gBAAY,MAAM;;AAChB,UAAI;AACF,YAAI,iBAAiB,SAAS,CAAC,oBAAoB,OAAO;AACxD,gBAAM,YAAY,iBAAiB,KAAK;AACxC,8BAAoB,QAAQ;AAC5B,uBAAa,QAAQ;AAAA,QACvB;AAAA,MACF,SAAS,OAAO;AACd,iBAAS,wCAAwC,KAAK;AACtD,qBAAa,QAAQ;AACrB,oBAAM,YAAN,+BAAgB;AAAA,MAClB;AAAA,IACF,CAAC;AAGD,oBAAgB,IAAI,CAAC,QAAQ;AAC3B,aAAO,0BAA0B;AAAA,QAC/B,WAAW;AAAA,QACX,OAAO;AAAA,QACP,IAAI,CAAC,SAAS,qBAAqB,KAAK,IAAI;AAAA,QAC5C,OAAO,MAAM;AAAA,MAAA,CACd;AAAA,IACH,CAAC;AAKD,aAAS,UAAgB;AACvB,UAAI;AACF,YAAI,MAAM,aAAa;AAErB,8BAAoB,QAAQ;AAC5B,uBAAa,QAAQ;AAGrB,cAAI,eAAe,OAAO;AACxB,0BAAA;AAAA,UACF;AAAA,QACF;AAAA,MACF,SAAS,OAAO;AACd,iBAAS,2CAA2C,KAAK;AAAA,MAC3D;AAAA,IACF;AAGA,gBAAY,OAAO;AAGnB,aAAa;AAAA,MACX;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IAAA,CACD;;aAKY,gBAAA,sBAAXF,mBAEM,OAAA,YAAA;AAAA,QADJE,WAA2B,KAAA,QAAA,OAAA;AAAA,MAAA;;;;;;;;;;;;;;;;;;;;;;;AC/I/B,UAAM,QAAQ;AAWd,UAAM,QAAQ;AAGd,UAAM,EAAE,SAAA,IAAa,UAAU,MAAM,KAAK;AAG1C,UAAM,cAAc,OAAO,eAAe,IAAI,IAAI,CAAC;AACnD,UAAM,qBAAqB,IAAI,KAAK;AACpC,UAAM,iBAAiB,IAAA;AAGvB,UAAM,cAAc,SAAS,MAAM;AACjC,YAAM,OAAO,MAAM;AACnB,UAAI,CAAC,KAAM,QAAO;AAGlB,UAAI,OAAO,SAAS,YAAY,UAAU,MAAM;AAC9C,eAAO,KAAK,SAAS,uBAAuB,KAAK,SAAS;AAAA,MAC5D;AAGA,UAAI,OAAO,SAAS,UAAU;AAC5B,YAAI;AACF,cAAI,IAAI,IAAI;AACZ,iBAAO;AAAA,QACT,QAAQ;AACN,iBAAO;AAAA,QACT;AAAA,MACF;AAEA,aAAO;AAAA,IACT,CAAC;AAMD,aAAS,cAAc,SAAmD;;AACxE,UAAI;AACF,YAAI,CAAC,QAAS;AAGd,YAAI,OAAO,YAAY,YAAY,UAAU,SAAS;AACpD,cAAI,CAAC,CAAC,qBAAqB,SAAS,EAAE,SAAS,QAAQ,IAAI,GAAG;AAC5D,qBAAS,yBAAyB,QAAQ,IAAI;AAC9C;AAAA,UACF;AAAA,QACF;AAEA,gBAAQ,OAAO;AACf,uBAAe,QAAQ;AAGvB,cAAM,eAAe,OAAO;AAC5B,oBAAM,iBAAN,+BAAqB;AAAA,MACvB,SAAS,OAAO;AACd,iBAAS,sCAAsC,KAAK;AACpD,cAAM,SAAS,KAAK;AACpB,oBAAM,YAAN,+BAAgB;AAAA,MAClB;AAAA,IACF;AAGA,UAAM;AAAA,MACJ;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IAAA,IACE,uBAAuB;AAAA,MACzB,KAAK;AAAA,MACL,IAAI,MAAM;AAAA,MACV,MAAM,MAAM;AAAA,MACZ,SAAS,MAAM;AAAA,MACf,OAAO,MAAM;AAAA,MACb,UAAU,CAAC,YAAY;;AACrB,YAAI;AACF,gBAAM,kBAAkB;AAAA,YACtB,GAAG;AAAA;AAAA,YAEH,oBAAoB,mBAAmB;AAAA,YACvC,gBAAgB,eAAe;AAAA,YAC/B,aAAa,YAAY;AAAA,UAAA;AAG3B,sBAAM,aAAN,+BAAiB;AACjB,gBAAM,YAAY,eAAe;AAEjC,6BAAmB,QAAQ;AAG3B,cAAI,QAAQ,UAAU,OAAO;AAC3B,kBAAM,QAAQ,QAAQ,UAAU,KAAK;AACrC,wBAAM,WAAN,+BAAe,QAAQ,UAAU;AAAA,UACnC;AAAA,QACF,SAAS,OAAO;AACd,mBAAS,qCAAqC,KAAK;AACnD,gBAAM,SAAS,KAAK;AACpB,sBAAM,YAAN,+BAAgB;AAAA,QAClB;AAAA,MACF;AAAA,IAAA,CACD;AAGD,YAAQ,kBAAkB,SAAS;AAGnC,UAAM,kBAAkB;AAAA,MACtB,MAAM,MAAM;AAAA,MACZ,CAAC,SAAS,YAAY;;AACpB,YAAI,YAAY,QAAS;AAEzB,YAAI;AACF,cAAI,WAAW,YAAY,OAAO;AAChC,0BAAc,OAAO;AAAA,UACvB,WAAW,WAAW,CAAC,YAAY,OAAO;AACxC,kBAAM,QAAQ,IAAI,MAAM,6BAA6B;AACrD,qBAAS,kCAAkC,OAAO;AAClD,kBAAM,SAAS,KAAK;AACpB,wBAAM,YAAN,+BAAgB;AAAA,UAClB;AAAA,QACF,SAAS,OAAO;AACd,mBAAS,0BAA0B,KAAK;AACxC,gBAAM,SAAS,KAAK;AACpB,sBAAM,YAAN,+BAAgB;AAAA,QAClB;AAAA,MACF;AAAA,MACA;AAAA,QACE,OAAO,MAAM;AAAA,QACb,MAAM;AAAA,QACN,WAAW;AAAA,QACX,OAAO;AAAA;AAAA,QACP,OAAO,MAAM;AAAA,MAAA;AAAA,IACf;AAMF,aAAS,UAAgB;AACvB,UAAI;AACF,YAAI,MAAM,aAAa;AAErB,0BAAA;AAGA,6BAAmB,QAAQ;AAC3B,yBAAe,QAAQ;AAGvB,cAAI,eAAe;AACjB,yBAAA;AAAA,UACF;AAAA,QACF;AAAA,MACF,SAAS,OAAO;AACd,iBAAS,wCAAwC,KAAK;AAAA,MACxD;AAAA,IACF;AAGA,gBAAY,OAAO;AAGnB,aAAa;AAAA,MACX;AAAA,MACA;AAAA,MACA,SAAS;AAAA,MACT;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IAAA,CACD;;aAKCA,WAAQ,KAAA,QAAA,SAAA;AAAA;;;;;;;;;;;;;;;;;;;;ACzJV,UAAM,QAAQ;AAKd,UAAM,QAAQ;AAGd,UAAM,aAAa,OAAO,kBAAkB,IAAI,IAAI,CAAC;AACrD,UAAM,cAAc,OAAO,eAAe,IAAI,IAAI,CAAC;AAGnD,UAAM,kBAAkB,SAAS,MAAM,MAAM,UAAU,WAAW,KAAK;AAEvE,UAAM,kBAAkB;AAAA,MACtB,OAAkB;AAAA,QAChB,YAAY,MAAM,UAAU,YAAY;AAAA,MAAA;AAAA,IAC1C;AAGF,UAAM,cAAc,SAAS,OAAO;AAAA,MAClC,GAAG,MAAM;AAAA,MACT,GAAG,gBAAgB;AAAA,IAAA,EACnB;AAGF,UAAM,iBAAiB,CACrB,SACA,QACG;AACH,YAAM,YAAY,SAAS,GAAG;AAAA,IAChC;AAGA,UAAM;AAAA,MACJ;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IAAA,IACE,mBAAmB;AAAA,MACrB,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,OAAO,YAAY;AAAA,MACnB,QAAQ,MAAM,UAAU,CAAC,KAAK;AAAA,MAC9B,IAAI,MAAM;AAAA,MACV,SAAS,MAAM;AAAA,MACf,SAAS,MAAM;AAAA,MACf,UAAU,MAAM;AAAA,MAChB,aAAa,MAAM;AAAA,MACnB,UAAU;AAAA,IAAA,CACX;AAGD,sBAAkB,QAAQ,CAAC,QAAQ;AACjC,4BAAsB;AAAA,QACpB,KAAK;AAAA,QACL,OAAO;AAAA,QACP,OAAO;AAAA,QACP,IAAI,CAAC,SAAS;AACZ,gBAAM,KAAK,IAAI;AAAA,QACjB;AAAA,MAAA,CACD;AAAA,IACH,CAAC;AAGD,UAAM,mBAAmB;AAAA,MACvB,OAAO;AAAA,QACL,QAAQ,MAAM;AAAA,QACd,OAAO,MAAM;AAAA,QACb,SAAS,MAAM;AAAA,QACf,SAAS,MAAM;AAAA,QACf,UAAU,MAAM;AAAA,QAChB,SAAS,MAAM;AAAA,MAAA;AAAA,MAEjB,CAAC,UAAU,aAAa;AAEtB,YAAI,SAAS,YAAW,qCAAU,SAAQ;AACxC,oBAAU,SAAS,MAAM;AAAA,QAC3B;AACA,YAAI,SAAS,WAAU,qCAAU,QAAO;AACtC,mBAAS,SAAS,KAAK;AAAA,QACzB;AACA,YACE,SAAS,aAAY,qCAAU,YAC/B,SAAS,aAAY,qCAAU,UAC/B;AACA,uBAAa,SAAS,SAAS,SAAS,OAAO;AAAA,QACjD;AACA,YAAI,SAAS,cAAa,qCAAU,WAAU;AAC5C,sBAAY,SAAS,QAAQ;AAAA,QAC/B;AACA,YAAI,SAAS,aAAY,qCAAU,UAAS;AAC1C,4BAAkB,cAAc,SAAS,UAAU,YAAY,MAAM;AAAA,QACvE;AAAA,MACF;AAAA,MACA;AAAA,QACE,MAAM;AAAA,QACN,OAAO;AAAA;AAAA,MAAA;AAAA,IACT;AAIF,gBAAY,MAAM;AAChB,uBAAA;AAAA,IACF,CAAC;;;;;;;;;;;;;;;;;;;;;;;;ACxGD,UAAM,QAAQ;AAQd,UAAM,QAAQ;AAGd,UAAM,aAAa,OAAO,kBAAkB,IAAI,IAAI,CAAC;AACrD,UAAM,cAAc,OAAO,eAAe,IAAI,IAAI,CAAC;AAGnD,UAAM,kBAAkB,SAAS,MAAM,MAAM,UAAU,WAAW,KAAK;AAEvE,UAAM,kBAAkB;AAAA,MACtB,OAAkB;AAAA,QAChB,YAAY,MAAM,UAAU,YAAY;AAAA,MAAA;AAAA,IAC1C;AAGF,UAAM,cAAc,SAAS,OAAO;AAAA,MAClC,GAAG,MAAM;AAAA,MACT,GAAG,gBAAgB;AAAA,IAAA,EACnB;AAGF,UAAM,iBAAiB,CACrB,SACA,QACG;;AACH,kBAAM,aAAN,+BAAiB,SAAS;AAC1B,YAAM,YAAY,SAAS,GAAG;AAAA,IAChC;AAGA,UAAM;AAAA,MACJ;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IAAA,IACE,qBAAqB;AAAA,MACvB,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,OAAO,YAAY;AAAA,MACnB,QAAQ,MAAM,UAAU,CAAC,KAAK;AAAA,MAC9B,IAAI,MAAM;AAAA,MACV,SAAS,MAAM;AAAA,MACf,SAAS,MAAM;AAAA,MACf,UAAU,MAAM;AAAA,MAChB,aAAa,MAAM;AAAA,MACnB,UAAU;AAAA,IAAA,CACX;AAGD,sBAAkB,QAAQ,CAAC,QAAQ;AACjC,4BAAsB;AAAA,QACpB,KAAK;AAAA,QACL,OAAO;AAAA,QACP,OAAO;AAAA,QACP,IAAI,CAAC,SAAS;AACZ,gBAAM,KAAK,IAAI;AAAA,QACjB;AAAA,MAAA,CACD;AAAA,IACH,CAAC;AAGD,UAAM,mBAAmB;AAAA,MACvB,OAAO;AAAA,QACL,QAAQ,MAAM;AAAA,QACd,OAAO,MAAM;AAAA,QACb,SAAS,MAAM;AAAA,QACf,SAAS,MAAM;AAAA,QACf,UAAU,MAAM;AAAA,QAChB,SAAS,MAAM;AAAA,MAAA;AAAA,MAEjB,CAAC,UAAU,aAAa;AAEtB,YAAI,SAAS,YAAW,qCAAU,SAAQ;AACxC,oBAAU,SAAS,MAAM;AAAA,QAC3B;AACA,YAAI,SAAS,WAAU,qCAAU,QAAO;AACtC,mBAAS,SAAS,KAAK;AAAA,QACzB;AACA,YACE,SAAS,aAAY,qCAAU,YAC/B,SAAS,aAAY,qCAAU,UAC/B;AACA,uBAAa,SAAS,SAAS,SAAS,OAAO;AAAA,QACjD;AACA,YAAI,SAAS,cAAa,qCAAU,WAAU;AAC5C,sBAAY,SAAS,QAAQ;AAAA,QAC/B;AACA,YAAI,SAAS,aAAY,qCAAU,UAAS;AAC1C,4BAAkB,cAAc,SAAS,UAAU,YAAY,MAAM;AAAA,QACvE;AAAA,MACF;AAAA,MACA;AAAA,QACE,MAAM;AAAA,QACN,OAAO;AAAA;AAAA,MAAA;AAAA,IACT;AAIF,gBAAY,MAAM;AAChB,uBAAA;AAAA,IACF,CAAC;;;;;;;;;;;;;;;;;;;;;;;AChHD,UAAM,QAAQ;AAKd,UAAM,QAAQ;AAGd,UAAM,aAAa,OAAO,kBAAkB,IAAI,IAAI,CAAC;AACrD,UAAM,cAAc,OAAO,eAAe,IAAI,IAAI,CAAC;AAGnD,UAAM,kBAAkB,SAAS,MAAM,MAAM,UAAU,WAAW,KAAK;AAEvE,UAAM,kBAAkB;AAAA,MACtB,OAAkB;AAAA,QAChB,YAAY,MAAM,UAAU,YAAY;AAAA,MAAA;AAAA,IAC1C;AAGF,UAAM,cAAc,SAAS,OAAO;AAAA,MAClC,GAAG,MAAM;AAAA,MACT,GAAG,gBAAgB;AAAA,IAAA,EACnB;AAGF,UAAM,iBAAiB,CACrB,SACA,QACG;;AACH,kBAAM,aAAN,+BAAiB,SAAS;AAC1B,YAAM,YAAY,SAAS,GAAG;AAAA,IAChC;AAGA,UAAM;AAAA,MACJ;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IAAA,IACE,mBAAmB;AAAA,MACrB,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,OAAO,YAAY;AAAA,MACnB,QAAQ,MAAM,UAAU,CAAC,KAAK;AAAA,MAC9B,IAAI,MAAM;AAAA,MACV,SAAS,MAAM;AAAA,MACf,SAAS,MAAM;AAAA,MACf,UAAU,MAAM;AAAA,MAChB,aAAa,MAAM;AAAA,MACnB,UAAU;AAAA,IAAA,CACX;AAGD,sBAAkB,QAAQ,CAAC,QAAQ;AACjC,4BAAsB;AAAA,QACpB,KAAK;AAAA,QACL,OAAO;AAAA,QACP,OAAO;AAAA,QACP,IAAI,CAAC,SAAS;AACZ,gBAAM,KAAK,IAAI;AAAA,QACjB;AAAA,MAAA,CACD;AAAA,IACH,CAAC;AAGD,UAAM,mBAAmB;AAAA,MACvB,OAAO;AAAA,QACL,QAAQ,MAAM;AAAA,QACd,OAAO,MAAM;AAAA,QACb,SAAS,MAAM;AAAA,QACf,SAAS,MAAM;AAAA,QACf,UAAU,MAAM;AAAA,QAChB,SAAS,MAAM;AAAA,MAAA;AAAA,MAEjB,CAAC,UAAU,aAAa;AAEtB,YAAI,SAAS,YAAW,qCAAU,SAAQ;AACxC,oBAAU,SAAS,MAAM;AAAA,QAC3B;AACA,YAAI,SAAS,WAAU,qCAAU,QAAO;AACtC,mBAAS,SAAS,KAAK;AAAA,QACzB;AACA,YACE,SAAS,aAAY,qCAAU,YAC/B,SAAS,aAAY,qCAAU,UAC/B;AACA,uBAAa,SAAS,SAAS,SAAS,OAAO;AAAA,QACjD;AACA,YAAI,SAAS,cAAa,qCAAU,WAAU;AAC5C,sBAAY,SAAS,QAAQ;AAAA,QAC/B;AACA,YAAI,SAAS,aAAY,qCAAU,UAAS;AAC1C,4BAAkB,cAAc,SAAS,UAAU,YAAY,MAAM;AAAA,QACvE;AAAA,MACF;AAAA,MACA;AAAA,QACE,MAAM;AAAA,QACN,OAAO;AAAA;AAAA,MAAA;AAAA,IACT;AAIF,gBAAY,MAAM;AAChB,uBAAA;AAAA,IACF,CAAC;;;;;;;;;;;;;;;;;;;;;;;AC3GD,UAAM,QAAQ;AAKd,UAAM,QAAQ;AAGd,UAAM,aAAa,OAAO,kBAAkB,IAAI,IAAI,CAAC;AACrD,UAAM,cAAc,OAAO,eAAe,IAAI,IAAI,CAAC;AAGnD,UAAM,kBAAkB,SAAS,MAAM,MAAM,UAAU,WAAW,KAAK;AAEvE,UAAM,kBAAkB;AAAA,MACtB,OAAkB;AAAA,QAChB,YAAY,MAAM,UAAU,YAAY;AAAA,MAAA;AAAA,IAC1C;AAGF,UAAM,cAAc,SAAS,OAAO;AAAA,MAClC,GAAG,MAAM;AAAA,MACT,GAAG,gBAAgB;AAAA,IAAA,EACnB;AAGF,UAAM,iBAAiB,CACrB,SACA,QACG;;AACH,kBAAM,aAAN,+BAAiB,SAAS;AAC1B,YAAM,YAAY,SAAS,GAAG;AAAA,IAChC;AAGA,UAAM;AAAA,MACJ;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IAAA,IACE,qBAAqB;AAAA,MACvB,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,OAAO,YAAY;AAAA,MACnB,QAAQ,MAAM,UAAU,CAAC,KAAK;AAAA,MAC9B,IAAI,MAAM;AAAA,MACV,SAAS,MAAM;AAAA,MACf,SAAS,MAAM;AAAA,MACf,UAAU,MAAM;AAAA,MAChB,aAAa,MAAM;AAAA,MACnB,UAAU;AAAA,IAAA,CACX;AAGD,sBAAkB,QAAQ,CAAC,QAAQ;AACjC,4BAAsB;AAAA,QACpB,KAAK;AAAA,QACL,OAAO;AAAA,QACP,OAAO;AAAA,QACP,IAAI,CAAC,SAAS;AACZ,gBAAM,KAAK,IAAI;AAAA,QACjB;AAAA,MAAA,CACD;AAAA,IACH,CAAC;AAGD,UAAM,mBAAmB;AAAA,MACvB,OAAO;AAAA,QACL,QAAQ,MAAM;AAAA,QACd,OAAO,MAAM;AAAA,QACb,SAAS,MAAM;AAAA,QACf,SAAS,MAAM;AAAA,QACf,UAAU,MAAM;AAAA,QAChB,SAAS,MAAM;AAAA,MAAA;AAAA,MAEjB,CAAC,UAAU,aAAa;AAEtB,YAAI,SAAS,YAAW,qCAAU,SAAQ;AACxC,oBAAU,SAAS,MAAM;AAAA,QAC3B;AACA,YAAI,SAAS,WAAU,qCAAU,QAAO;AACtC,mBAAS,SAAS,KAAK;AAAA,QACzB;AACA,YACE,SAAS,aAAY,qCAAU,YAC/B,SAAS,aAAY,qCAAU,UAC/B;AACA,uBAAa,SAAS,SAAS,SAAS,OAAO;AAAA,QACjD;AACA,YAAI,SAAS,cAAa,qCAAU,WAAU;AAC5C,sBAAY,SAAS,QAAQ;AAAA,QAC/B;AACA,YAAI,SAAS,aAAY,qCAAU,UAAS;AAC1C,4BAAkB,cAAc,SAAS,UAAU,YAAY,MAAM;AAAA,QACvE;AAAA,MACF;AAAA,MACA;AAAA,QACE,MAAM;AAAA,QACN,OAAO;AAAA;AAAA,MAAA;AAAA,IACT;AAIF,gBAAY,MAAM;AAChB,uBAAA;AAAA,IACF,CAAC;;;;;;;;;;;;;;;AC/JD,UAAM,QAAQ;AAKd,UAAM,EAAE,SAAA,IAAa,UAAU,MAAM,KAAK;AAG1C,UAAM,UAAU,IAAI,IAAI;AAGxB,UAAM,cAAc,OAAO,eAAe,IAAI,IAAI,CAAC;AAGnD,UAAM,YAAY,SAAS,MAAM,MAAM,OAAO,SAAS,CAAC;AAMxD,mBAAe,WAAW,QAAoC;AAC5D,UAAI,CAAC,OAAO,QAAQ;AAClB,gBAAQ,QAAQ;AAChB;AAAA,MACF;AAEA,cAAQ,QAAQ;AAEhB,UAAI;AACF,cAAM,eAAe,OAAO,IAAI,OAAO,UAAU;AAC/C,cAAI;AACF,kBAAM,UAAU,eAAe;AAAA,cAC7B,KAAK;AAAA,cACL,IAAI,MAAM;AAAA,cACV,OAAO,MAAM;AAAA,cACb,SAAS,MAAM,WAAW,MAAM;AAAA,YAAA,CACjC;AACD,kBAAM,QAAQ;AAAA,UAChB,SAAS,OAAO;AACd,kBAAM,eAAe,wBAAwB,MAAM,EAAE,KAAK,KAAK;AAC/D,qBAAS,YAAY;AAAA,UACvB;AAAA,QACF,CAAC;AAED,cAAM,QAAQ,WAAW,YAAY;AAAA,MACvC,SAAS,OAAO;AACd,iBAAS,yBAAyB,KAAK;AAAA,MACzC,UAAA;AACE,gBAAQ,QAAQ;AAAA,MAClB;AAAA,IACF;AAGA;AAAA,MACE,MAAM,MAAM;AAAA,MACZ,CAAC,cAAc;AACb,YAAI,UAAU,SAAS,GAAG;AACxB,qBAAW,SAAS;AAAA,QACtB;AAAA,MACF;AAAA,MACA,EAAE,MAAM,MAAM,WAAW,MAAA;AAAA,IAAM;AAIjC,cAAU,MAAM;AACd,UAAI,UAAU,OAAO;AACnB,mBAAW,MAAM,MAAM;AAAA,MACzB,OAAO;AACL,gBAAQ,QAAQ;AAAA,MAClB;AAAA,IACF,CAAC;;cAGc,QAAA,QAAbA,WAAwB,KAAA,QAAA,WAAA,EAAA,KAAA,EAAA,CAAA;;;;;;;;;;;;;;;;;;;;AC7D1B,UAAM,QAAQ;AASd,UAAM,QAAQ;AAGd,UAAM,cAAc,OAAO,eAAe,IAAI,IAAI,CAAC;AACnD,UAAM,aAAa,IAAA;AAGnB,UAAM,eAAe,SAAS,OAAO;AAAA,MACnC,GAAG,MAAM;AAAA,MACT,WAAW,MAAM;AAAA,MACjB,UAAU,MAAM;AAAA,MAChB,aAAa,MAAM;AAAA,MACnB,cAAc,MAAM;AAAA,MACpB,eAAe,MAAM;AAAA,IAAA,EACrB;AAGF,UAAM,gBAAgB;AAAA,MACpB,MAAM,MAAM;AACV,cAAM,MAAM;AACZ,cAAM,eAAe,IAAI;AAAA,MAC3B;AAAA,MACA,OAAO,MAAM;AACX,cAAM,OAAO;AACb,cAAM,eAAe,KAAK;AAAA,MAC5B;AAAA,IAAA;AAIF,UAAM,EAAE,WAAW,MAAM,KAAA,IAAS,eAAe;AAAA,MAC/C,KAAK;AAAA,MACL,IAAI;AAAA,MACJ,QAAQ,MAAM;AAAA,MACd,MAAM,MAAM;AAAA,MACZ,MAAM,MAAM;AAAA,MACZ,SAAS,MAAM;AAAA,MACf,SAAS,aAAa;AAAA,MACtB,IAAI;AAAA,IAAA,CACL;AAGD;AAAA,MACE,MAAM,MAAM;AAAA,MACZ,CAAC,WAAW;AACV,iBAAS,KAAA,IAAS,KAAA;AAAA,MACpB;AAAA,IAAA;AAGF;AAAA,MACE,MAAM,MAAM;AAAA,MACZ,CAAC,cAAc;AACb,YAAI,WAAW;AACb,oBAAU,SAAS;AAAA,QACrB;AAAA,MACF;AAAA,MACA,EAAE,MAAM,KAAA;AAAA,IAAK;;0BAIbF,mBAEM,OAAA;AAAA,iBAFG;AAAA,QAAJ,KAAI;AAAA,QAAa,OAAM;AAAA,MAAA;QAC1BE,WAAQ,KAAA,QAAA,SAAA;AAAA,MAAA;;;;;;;;;;;;;;;;;;;;;;;;ACtDZ,UAAM,QAAQ;AAKd,UAAM,QAAQ;AAGd,UAAM,QAAQ,SAAA;AAGd,UAAM,cAAc,OAAO,eAAe,IAAI,IAAI,CAAC;AACnD,UAAM,cAAc,IAAA;AAGpB,UAAM,mBAAmB,SAAS,MAAA;;AAAM,sBAAQ,WAAM,YAAN,8BAAiB;AAAA,KAAC;AAElE,UAAM,gBAAgB,SAAS,OAAO;AAAA,MACpC,GAAG,MAAM;AAAA,MACT,GAAI,MAAM,cAAc,UAAa,EAAE,WAAW,MAAM,UAAA;AAAA,MACxD,GAAI,MAAM,WAAW,UAAa,EAAE,QAAQ,MAAM,OAAA;AAAA,MAClD,GAAI,MAAM,WAAW,UAAa,EAAE,QAAQ,MAAM,OAAA;AAAA,MAClD,GAAI,MAAM,UAAU,UAAa,EAAE,OAAO,MAAM,MAAA;AAAA,MAChD,GAAI,MAAM,mBAAmB,UAAa;AAAA,QACxC,gBAAgB,MAAM;AAAA,MAAA;AAAA,MAExB,GAAI,MAAM,aAAa,UAAa,EAAE,UAAU,MAAM,SAAA;AAAA,MACtD,GAAI,MAAM,sBAAsB,UAAa;AAAA,QAC3C,mBAAmB,MAAM;AAAA,MAAA;AAAA,MAE3B,GAAI,MAAM,mBAAmB,UAAa;AAAA,QACxC,gBAAgB,MAAM;AAAA,MAAA;AAAA,MAExB,GAAI,MAAM,UAAU,UAAa,EAAE,OAAO,MAAM,MAAA;AAAA,MAChD,GAAI,MAAM,oBAAoB,UAAa;AAAA,QACzC,iBAAiB,MAAM;AAAA,MAAA;AAAA,IACzB,EACA;AAGF,UAAM,gBAAgB;AAAA,MACpB,WAAW,CAAC,OAAc;AACxB,cAAM,aAAa,EAAE;AAAA,MACvB;AAAA,MACA,MAAM,CAAC,OAAc;AACnB,cAAM,QAAQ,EAAE;AAAA,MAClB;AAAA,MACA,SAAS,CAAC,OAAc;AACtB,cAAM,WAAW,EAAE;AAAA,MACrB;AAAA,IAAA;AAIF,UAAM,EAAE,cAAc,UAAA,IAAc,gBAAgB;AAAA,MAClD,KAAK;AAAA,MACL,IAAI,iBAAiB,QAAQ,cAAc;AAAA,MAC3C,QAAQ,MAAM;AAAA,MACd,OAAO,MAAM;AAAA,MACb,SAAS,cAAc;AAAA,MACvB,IAAI;AAAA,IAAA,CACL;AAGD;AAAA,MACE,MAAM,MAAM;AAAA,MACZ,CAAC,cAAc;AACb,YAAI,WAAW;AACb,oBAAU,SAAS;AAAA,QACrB;AAAA,MACF;AAAA,MACA,EAAE,MAAM,KAAA;AAAA,IAAK;AAGf;AAAA,MACE,MAAM,MAAM;AAAA,MACZ,CAAC,iBAAiB;AAChB,YAAI,iBAAiB,QAAW;AAC9B,uBAAa,YAAY;AAAA,QAC3B;AAAA,MACF;AAAA,IAAA;;0BAIAF,mBAEM,OAAA;AAAA,iBAFG;AAAA,QAAJ,KAAI;AAAA,MAAA;QACPE,WAAQ,KAAA,QAAA,SAAA;AAAA,MAAA;;;;"}
|
|
@@ -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;
|
|
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-
|
|
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
|
-
|
|
5686
|
+
useThrottledComputed as A,
|
|
5701
5687
|
BoundsStatus as B,
|
|
5702
|
-
|
|
5703
|
-
|
|
5688
|
+
useComputedWithCleanup as C,
|
|
5689
|
+
useBatchedComputed as D,
|
|
5704
5690
|
EaseStatus as E,
|
|
5705
5691
|
FitScreenCoordinatesStatus as F,
|
|
5706
|
-
|
|
5707
|
-
|
|
5708
|
-
|
|
5692
|
+
usePanBy as G,
|
|
5693
|
+
usePanTo as H,
|
|
5694
|
+
useRotateTo as I,
|
|
5709
5695
|
JumpStatus as J,
|
|
5710
|
-
|
|
5711
|
-
|
|
5712
|
-
|
|
5713
|
-
|
|
5714
|
-
|
|
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
|
-
|
|
5702
|
+
useZoomOut as Q,
|
|
5717
5703
|
RotationStatus as R,
|
|
5718
|
-
|
|
5719
|
-
|
|
5720
|
-
|
|
5721
|
-
|
|
5722
|
-
|
|
5723
|
-
|
|
5724
|
-
|
|
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
|
-
|
|
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
|
-
|
|
5755
|
-
|
|
5756
|
-
|
|
5757
|
-
|
|
5758
|
-
|
|
5759
|
-
|
|
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
|
-
|
|
5762
|
-
|
|
5763
|
-
|
|
5764
|
-
|
|
5765
|
-
|
|
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-
|
|
5753
|
+
//# sourceMappingURL=composables-BTjkdo8Z.js.map
|