tg-map-vue3 4.2.1 → 4.2.3

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/CHANGELOG.md CHANGED
@@ -1,116 +1,117 @@
1
- # 更新日志
2
-
3
- ## 4.2.x
4
-
5
- - feat: talks支持编辑覆盖物
6
- - feat: [Overlay]新增`addTo`方法
7
- - feat: talks支持切换内置地图类型和暗色模式
8
-
9
- ## 4.1.x
10
-
11
- - ***BREAKING CHANGE***: [AbstractMap]改成接口, 只保留`getCenter`/`panTo`等外部使用的方法
12
- - ***BREAKING CHANGE***: 样式改回独立的css文件, 需要手动导入`import 'tg-map-vue3/dist/tg-map.css'`
13
- - refactor: 独立出单独的[tg-map-core]包
14
- - feat: 使用实现基于maptalks的地图的展示功能
15
- - feat: 实验性支持GL版的baidu地图, 暂时不可用于生产环境
16
- - feat: [TgMap]新增`fractionalZoom`选项
17
- - feat: [TgInfoBox]新增`disableAutoPan`选项
18
- - feat: [TgZoomControl]新增`showZoomLevel`选项
19
- - refactor: [TgMarkerClusterer]的`styles`选项新增`minMarkersLength`属性, 用于支持新的talks地图
20
- - feat: [MarkerLabel]新增`talksStyle`选项
21
-
22
- ## 3.9.x
23
-
24
- - ***BREAKING CHANGE***: 依赖[tg-commons](https://www.npmjs.com/package/tg-commons), 移除`typed`/`isDef`等和地图无关的导出
25
- - feat: [TgMarker]添加`label`属性, **它和已有的[TgLabel]不能同时设置**
26
- - feat: 添加球体和线段工具: [SphericalUtil], [PolyUtil]
27
-
28
- ## 3.8.x
29
-
30
- - chore: 更新到Vue3.4 & Vite5
31
- - fix: 香港地区坐标转换问题
32
- - fix: google地图弹窗样式问题
33
-
34
- ## 3.7.x
35
-
36
- - feat: 添加[IconSequence]到[TgPolyline]中
37
- - fix: 多个地图同时载入时报错的问题
38
- - feat: [TgMarker]添加`autoAddToClusterer`属性, 可以不被点聚合管理
39
- - feat: 添加[热力图][TgHeatmap]功能
40
- - fix: 让baidu-info-box的行为和google的尽量一致
41
- - ***BREAKING CHANGE***: [MapStyle]简化成纯对象, 方便使用
42
- - ***BREAKING CHANGE***: 增加[TgStreetViewControl], 默认关闭google的街景控制按钮
43
-
44
- ## 3.6.x
45
-
46
- - feat: 添加[MapUrls], 支持打开地图网页(导航和搜索)
47
- - feat: [LatLng]和[TgMarker]添加`normalize`相关方法/参数, 处理经纬度不合法的问题
48
- - fix: 百度地图的覆盖物([BaiduShape])不能隐藏填充/线条颜色的问题
49
- - perf: [TgLabel]/[TgInfoBox]/[TgInfoWindow]和[TgMarker]不必紧密相邻, 可以放其他组件
50
- - ***BREAKING CHANGE***: `placeService` -> `placesService`
51
-
52
- ## 3.5.x
53
-
54
- - fix: [LatLngBounds]为空时中心点计算问题
55
- - perf: 废弃`rightclick`事件, 使用`contextmenu`替代
56
- - ***BREAKING CHANGE***: `useTgMap` -> [useTgMapInner]
57
- - ***BREAKING CHANGE***: 统一[TgLabel]在google和baidu上的默认显示层级, 都位于overlay上方
58
-
59
- ## 3.4.x
60
-
61
- - feat: 添加矩形[TgRectangle]
62
- - feat: 点/圆/矩形/多边形/多段线 在`editable`/`draggable`模式时支持双向绑定
63
- - fix: 修复[TgCircle]在某些情况下半径会变成0的问题
64
- - ***BREAKING CHANGE***: [TgPolygon].polygon, [TgPolyline].polyline 属性, 统一改成`overlay`
65
- - ***BREAKING CHANGE***: 修复`setDisableDoubleClickZoom(type)`在google/baidu行为相反的问题, 并且重命名为`setDoubleClickZoom(enable)`
66
-
67
- ## 3.3.x
68
-
69
- - fix: 修复同时修改center和zoom可能中心点偏移的问题
70
- - feat: [Icon]支持缩放
71
- - ***BREAKING CHANGE***: [TgMap]的高度默认改成`100%`
72
-
73
- ## 3.2.x
74
-
75
- - fix: 修复google和baidu的zoom取值不一致的问题
76
- - feat: 支持[SymbolIcon]
77
- - feat: 支持[PlacesService], [Autocomplete], [SearchBox]
78
-
79
- ## 3.1.x
80
-
81
- - feat: 支持隐藏地图Logo
82
-
83
- ## 3.0.x
84
-
85
- - ***BREAKING CHANGE***: 迁移到Vue3
86
-
87
- [TgMap]: src/components/TgMap.vue
88
- [TgCircle]: src/components/overlays/TgCircle.vue
89
- [TgLabel]: src/components/overlays/TgLabel.vue
90
- [TgRectangle]: src/components/overlays/TgRectangle.vue
91
- [TgPolygon]: src/components/overlays/TgPolygon.vue
92
- [TgPolyline]: src/components/overlays/TgPolyline.vue
93
- [TgMarker]: src/components/overlays/TgMarker.vue
94
- [TgInfoBox]: src/components/overlays/TgInfoBox.vue
95
- [TgInfoWindow]: src/components/overlays/TgInfoWindow.vue
96
- [TgHeatmap]: src/components/extra/TgHeatmap.vue "热力图"
97
- [TgStreetViewControl]: src/components/controls/TgStreetViewControl.vue
98
- [TgZoomControl]: src/components/controls/TgZoomControl.vue
99
- [Icon]: packages/tg-map-core/src/map/map/overlay/icon.ts#L17 "图标"
100
- [SymbolIcon]: packages/tg-map-core/src/map/map/overlay/icon.ts#L143 "Svg图标"
101
- [MarkerLabel]: packages/tg-map-core/src/map/map/overlay/marker-label.ts
102
- [IconSequence]: packages/tg-map-core/src/map/map/overlay/icon.ts#L254 "Svg图标序列"
103
- [PlacesService]: packages/tg-map-core/src/map/map/extra/places-service.ts "位置服务"
104
- [Autocomplete]: packages/tg-map-core/src/map/map/extra/autocomplete.ts "自动完成"
105
- [MapUrls]: packages/tg-map-core/src/map/map/extra/map-urls.ts "地图网页"
106
- [SearchBox]: packages/tg-map-core/src/map/map/extra/search-box.ts "搜索框"
107
- [useTgMapInner]: src/components/map-hooks.ts
108
- [LatLngBounds]: packages/tg-map-core/src/map/lat-lng.ts#L355
109
- [LatLng]: packages/tg-map-core/src/map/lat-lng.ts#L32
110
- [BaiduShape]: packages/tg-map-core/src/map/map/overlay/shape.ts#L48
111
- [MapStyle]: packages/tg-map-core/src/map/map/map-options.ts#L97
112
- [PolyUtil]: packages/tg-map-core/src/utils/maps-utils/poly-util.ts
113
- [SphericalUtil]: packages/tg-map-core/src/utils/maps-utils/spherical-util.ts
114
- [AbstractMap]: packages/tg-map-core/src/map/map/map.ts#L92
115
- [Overlay]: packages/tg-map-core/src/map/map/overlay/overlay.ts
116
- [tg-map-core]: packages/tg-map-core/README.md
1
+ # 更新日志
2
+
3
+ ## 4.2.x
4
+
5
+ - ***BREAKING CHANGE***: `TgMapConfig.talks.layerId`废弃, 改用`layerIds`
6
+ - feat: talks支持编辑覆盖物
7
+ - feat: [Overlay]新增`addTo`方法
8
+ - feat: talks支持切换内置地图类型和暗色模式
9
+
10
+ ## 4.1.x
11
+
12
+ - ***BREAKING CHANGE***: [AbstractMap]改成接口, 只保留`getCenter`/`panTo`等外部使用的方法
13
+ - ***BREAKING CHANGE***: 样式改回独立的css文件, 需要手动导入`import 'tg-map-vue3/dist/tg-map.css'`
14
+ - refactor: 独立出单独的[tg-map-core]包
15
+ - feat: 使用实现基于maptalks的地图的展示功能
16
+ - feat: 实验性支持GL版的baidu地图, 暂时不可用于生产环境
17
+ - feat: [TgMap]新增`fractionalZoom`选项
18
+ - feat: [TgInfoBox]新增`disableAutoPan`选项
19
+ - feat: [TgZoomControl]新增`showZoomLevel`选项
20
+ - refactor: [TgMarkerClusterer]的`styles`选项新增`minMarkersLength`属性, 用于支持新的talks地图
21
+ - feat: [MarkerLabel]新增`talksStyle`选项
22
+
23
+ ## 3.9.x
24
+
25
+ - ***BREAKING CHANGE***: 依赖[tg-commons](https://www.npmjs.com/package/tg-commons), 移除`typed`/`isDef`等和地图无关的导出
26
+ - feat: [TgMarker]添加`label`属性, **它和已有的[TgLabel]不能同时设置**
27
+ - feat: 添加球体和线段工具: [SphericalUtil], [PolyUtil]
28
+
29
+ ## 3.8.x
30
+
31
+ - chore: 更新到Vue3.4 & Vite5
32
+ - fix: 香港地区坐标转换问题
33
+ - fix: google地图弹窗样式问题
34
+
35
+ ## 3.7.x
36
+
37
+ - feat: 添加[IconSequence]到[TgPolyline]中
38
+ - fix: 多个地图同时载入时报错的问题
39
+ - feat: [TgMarker]添加`autoAddToClusterer`属性, 可以不被点聚合管理
40
+ - feat: 添加[热力图][TgHeatmap]功能
41
+ - fix: 让baidu-info-box的行为和google的尽量一致
42
+ - ***BREAKING CHANGE***: [MapStyle]简化成纯对象, 方便使用
43
+ - ***BREAKING CHANGE***: 增加[TgStreetViewControl], 默认关闭google的街景控制按钮
44
+
45
+ ## 3.6.x
46
+
47
+ - feat: 添加[MapUrls], 支持打开地图网页(导航和搜索)
48
+ - feat: [LatLng]和[TgMarker]添加`normalize`相关方法/参数, 处理经纬度不合法的问题
49
+ - fix: 百度地图的覆盖物([BaiduShape])不能隐藏填充/线条颜色的问题
50
+ - perf: [TgLabel]/[TgInfoBox]/[TgInfoWindow]和[TgMarker]不必紧密相邻, 可以放其他组件
51
+ - ***BREAKING CHANGE***: `placeService` -> `placesService`
52
+
53
+ ## 3.5.x
54
+
55
+ - fix: [LatLngBounds]为空时中心点计算问题
56
+ - perf: 废弃`rightclick`事件, 使用`contextmenu`替代
57
+ - ***BREAKING CHANGE***: `useTgMap` -> [useTgMapInner]
58
+ - ***BREAKING CHANGE***: 统一[TgLabel]在google和baidu上的默认显示层级, 都位于overlay上方
59
+
60
+ ## 3.4.x
61
+
62
+ - feat: 添加矩形[TgRectangle]
63
+ - feat: 点/圆/矩形/多边形/多段线 在`editable`/`draggable`模式时支持双向绑定
64
+ - fix: 修复[TgCircle]在某些情况下半径会变成0的问题
65
+ - ***BREAKING CHANGE***: [TgPolygon].polygon, [TgPolyline].polyline 属性, 统一改成`overlay`
66
+ - ***BREAKING CHANGE***: 修复`setDisableDoubleClickZoom(type)`在google/baidu行为相反的问题, 并且重命名为`setDoubleClickZoom(enable)`
67
+
68
+ ## 3.3.x
69
+
70
+ - fix: 修复同时修改center和zoom可能中心点偏移的问题
71
+ - feat: [Icon]支持缩放
72
+ - ***BREAKING CHANGE***: [TgMap]的高度默认改成`100%`
73
+
74
+ ## 3.2.x
75
+
76
+ - fix: 修复google和baidu的zoom取值不一致的问题
77
+ - feat: 支持[SymbolIcon]
78
+ - feat: 支持[PlacesService], [Autocomplete], [SearchBox]
79
+
80
+ ## 3.1.x
81
+
82
+ - feat: 支持隐藏地图Logo
83
+
84
+ ## 3.0.x
85
+
86
+ - ***BREAKING CHANGE***: 迁移到Vue3
87
+
88
+ [TgMap]: src/components/TgMap.vue
89
+ [TgCircle]: src/components/overlays/TgCircle.vue
90
+ [TgLabel]: src/components/overlays/TgLabel.vue
91
+ [TgRectangle]: src/components/overlays/TgRectangle.vue
92
+ [TgPolygon]: src/components/overlays/TgPolygon.vue
93
+ [TgPolyline]: src/components/overlays/TgPolyline.vue
94
+ [TgMarker]: src/components/overlays/TgMarker.vue
95
+ [TgInfoBox]: src/components/overlays/TgInfoBox.vue
96
+ [TgInfoWindow]: src/components/overlays/TgInfoWindow.vue
97
+ [TgHeatmap]: src/components/extra/TgHeatmap.vue "热力图"
98
+ [TgStreetViewControl]: src/components/controls/TgStreetViewControl.vue
99
+ [TgZoomControl]: src/components/controls/TgZoomControl.vue
100
+ [Icon]: packages/tg-map-core/src/map/map/overlay/icon.ts#L17 "图标"
101
+ [SymbolIcon]: packages/tg-map-core/src/map/map/overlay/icon.ts#L143 "Svg图标"
102
+ [MarkerLabel]: packages/tg-map-core/src/map/map/overlay/marker-label.ts
103
+ [IconSequence]: packages/tg-map-core/src/map/map/overlay/icon.ts#L254 "Svg图标序列"
104
+ [PlacesService]: packages/tg-map-core/src/map/map/extra/places-service.ts "位置服务"
105
+ [Autocomplete]: packages/tg-map-core/src/map/map/extra/autocomplete.ts "自动完成"
106
+ [MapUrls]: packages/tg-map-core/src/map/map/extra/map-urls.ts "地图网页"
107
+ [SearchBox]: packages/tg-map-core/src/map/map/extra/search-box.ts "搜索框"
108
+ [useTgMapInner]: src/components/map-hooks.ts
109
+ [LatLngBounds]: packages/tg-map-core/src/map/lat-lng.ts#L355
110
+ [LatLng]: packages/tg-map-core/src/map/lat-lng.ts#L32
111
+ [BaiduShape]: packages/tg-map-core/src/map/map/overlay/shape.ts#L48
112
+ [MapStyle]: packages/tg-map-core/src/map/map/map-options.ts#L97
113
+ [PolyUtil]: packages/tg-map-core/src/utils/maps-utils/poly-util.ts
114
+ [SphericalUtil]: packages/tg-map-core/src/utils/maps-utils/spherical-util.ts
115
+ [AbstractMap]: packages/tg-map-core/src/map/map/map.ts#L92
116
+ [Overlay]: packages/tg-map-core/src/map/map/overlay/overlay.ts
117
+ [tg-map-core]: packages/tg-map-core/README.md
package/README.md CHANGED
@@ -1,105 +1,105 @@
1
- # tg-map-vue3
2
-
3
- 封装 百度地图, Google地图, Here地图(未完成), Maptalks 的Vue3组件库
4
-
5
- ## 使用
6
-
7
- 安装:
8
-
9
- ```sh
10
- pnpm install tg-map-vue3
11
- ```
12
-
13
- 使用:
14
-
15
- ```vue
16
- <template>
17
- <TgMap> </TgMap>
18
- </template>
19
- <script lang="ts" setup>
20
- import { TgMap } from 'tg-map-vue3'
21
- // 需要手动导入样式文件
22
- import 'tg-map-vue3/dist/tg-map.css'
23
- </script>
24
- ```
25
-
26
- ## 发布
27
-
28
- 在npm上, 登录[transcode-group](https://www.npmjs.com/~transcode-group)帐号后, 可以发布该项目的所有库
29
-
30
- ```sh
31
- pnpm -r publish
32
- ```
33
-
34
- ## 开发
35
-
36
- ### 初始化仓库
37
-
38
- ```sh
39
- # 拉取本仓库
40
- git clone https://github.com/TranscodeGroup/tg-map.git
41
- # 进入本地仓库目录
42
- cd tg-map
43
- # 安装依赖
44
- pnpm install
45
- ```
46
-
47
- 其他项目若需要引用本地开发中的tg-map, 可以根据需要链接tg-map-vue3/tg-map-core:
48
-
49
- ```sh
50
- # 使用相对路径链接tg-map-vue3包
51
- pnpm link ../tg-map
52
- # 使用相对路径链接tg-map-core包
53
- pnpm link ../tg-map/packages/tg-map-core
54
- ```
55
-
56
- ### 构建
57
-
58
- ```sh
59
- # 修改代码后要重新构建
60
- pnpm run build
61
- ```
62
-
63
- ## 其他
64
-
65
- ```sh
66
- pnpm install
67
- ```
68
-
69
- ### Compile and Hot-Reload for Development
70
-
71
- ```sh
72
- pnpm run dev
73
- ```
74
-
75
- ### Type-Check, Compile and Minify for Production
76
-
77
- ```sh
78
- pnpm run build
79
- ```
80
-
81
- ### Lint with [ESLint](https://eslint.org/)
82
-
83
- ```sh
84
- pnpm run lint
85
- ```
86
-
87
- ### Customize configuration
88
-
89
- See [Vite Configuration Reference](https://vitejs.dev/config/).
90
-
91
- ## 参考文档
92
-
93
- - [百度Javascript API v3.0][]: 老版, [类参考][baidu_ref3]
94
- - [百度Javascript API GL][]: 新的基于WebGL的实现, [类参考][baidu_ref]
95
- - [Google Maps Javascript API][]: Google地图, [类参考][google_ref]
96
- - [maptalks][]: 自绘地图, [类参考][maptalks_ref]
97
-
98
- [Google Maps Javascript API]: https://developers.google.com/maps/documentation/javascript
99
- [google_ref]: https://developers.google.com/maps/documentation/javascript/reference
100
- [百度Javascript API v3.0]: https://lbsyun.baidu.com/index.php?title=jspopular3.0
101
- [baidu_ref3]: https://mapopen-pub-jsapi.bj.bcebos.com/jsapi/reference/jsapi_reference_3_0.html
102
- [百度Javascript API GL]: https://lbsyun.baidu.com/index.php?title=jspopularGL
103
- [baidu_ref]: https://mapopen-pub-jsapi.bj.bcebos.com/jsapi/reference/jsapi_webgl_1_0.html
104
- [maptalks]: https://maptalks.org/
105
- [maptalks_ref]: https://maptalks.org/maptalks.js/api/1.x/Map.html
1
+ # tg-map-vue3
2
+
3
+ 封装 百度地图, Google地图, Here地图(未完成), Maptalks 的Vue3组件库
4
+
5
+ ## 使用
6
+
7
+ 安装:
8
+
9
+ ```sh
10
+ pnpm install tg-map-vue3
11
+ ```
12
+
13
+ 使用:
14
+
15
+ ```vue
16
+ <template>
17
+ <TgMap> </TgMap>
18
+ </template>
19
+ <script lang="ts" setup>
20
+ import { TgMap } from 'tg-map-vue3'
21
+ // 需要手动导入样式文件
22
+ import 'tg-map-vue3/dist/tg-map.css'
23
+ </script>
24
+ ```
25
+
26
+ ## 发布
27
+
28
+ 在npm上, 登录[transcode-group](https://www.npmjs.com/~transcode-group)帐号后, 可以发布该项目的所有库
29
+
30
+ ```sh
31
+ pnpm -r publish
32
+ ```
33
+
34
+ ## 开发
35
+
36
+ ### 初始化仓库
37
+
38
+ ```sh
39
+ # 拉取本仓库
40
+ git clone https://github.com/TranscodeGroup/tg-map.git
41
+ # 进入本地仓库目录
42
+ cd tg-map
43
+ # 安装依赖
44
+ pnpm install
45
+ ```
46
+
47
+ 其他项目若需要引用本地开发中的tg-map, 可以根据需要链接tg-map-vue3/tg-map-core:
48
+
49
+ ```sh
50
+ # 使用相对路径链接tg-map-vue3包
51
+ pnpm link ../tg-map
52
+ # 使用相对路径链接tg-map-core包
53
+ pnpm link ../tg-map/packages/tg-map-core
54
+ ```
55
+
56
+ ### 构建
57
+
58
+ ```sh
59
+ # 修改代码后要重新构建
60
+ pnpm run build
61
+ ```
62
+
63
+ ## 其他
64
+
65
+ ```sh
66
+ pnpm install
67
+ ```
68
+
69
+ ### Compile and Hot-Reload for Development
70
+
71
+ ```sh
72
+ pnpm run dev
73
+ ```
74
+
75
+ ### Type-Check, Compile and Minify for Production
76
+
77
+ ```sh
78
+ pnpm run build
79
+ ```
80
+
81
+ ### Lint with [ESLint](https://eslint.org/)
82
+
83
+ ```sh
84
+ pnpm run lint
85
+ ```
86
+
87
+ ### Customize configuration
88
+
89
+ See [Vite Configuration Reference](https://vitejs.dev/config/).
90
+
91
+ ## 参考文档
92
+
93
+ - [百度Javascript API v3.0][]: 老版, [类参考][baidu_ref3]
94
+ - [百度Javascript API GL][]: 新的基于WebGL的实现, [类参考][baidu_ref]
95
+ - [Google Maps Javascript API][]: Google地图, [类参考][google_ref]
96
+ - [maptalks][]: 自绘地图, [类参考][maptalks_ref]
97
+
98
+ [Google Maps Javascript API]: https://developers.google.com/maps/documentation/javascript
99
+ [google_ref]: https://developers.google.com/maps/documentation/javascript/reference
100
+ [百度Javascript API v3.0]: https://lbsyun.baidu.com/index.php?title=jspopular3.0
101
+ [baidu_ref3]: https://mapopen-pub-jsapi.bj.bcebos.com/jsapi/reference/jsapi_reference_3_0.html
102
+ [百度Javascript API GL]: https://lbsyun.baidu.com/index.php?title=jspopularGL
103
+ [baidu_ref]: https://mapopen-pub-jsapi.bj.bcebos.com/jsapi/reference/jsapi_webgl_1_0.html
104
+ [maptalks]: https://maptalks.org/
105
+ [maptalks_ref]: https://maptalks.org/maptalks.js/api/1.x/Map.html
@@ -24,9 +24,11 @@ declare const TgMarkerClusterer: import("vue").DefineComponent<import("vue").Ext
24
24
  }>, {
25
25
  clusterer: MarkerClusterer;
26
26
  markers: MarkerOverlay[];
27
+ pendingMarkers: MarkerOverlay[];
27
28
  }, {}, {}, {
28
29
  /** TgMarker有可能在该组件未初始化之前调用, 需要通过该方法判断 */
29
30
  isInitiated(): boolean;
31
+ performAddMarkers(): void;
30
32
  onAddMarker(marker: MarkerOverlay): void;
31
33
  onRemoveMarker(marker: MarkerOverlay): void;
32
34
  }, import("vue").DefineComponent<{}, {}, {}, {}, {
package/dist/tg-map.cjs CHANGED
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const h=require("tg-commons"),s=require("tg-map-core"),r=require("vue");require("tg-map-core/dist/tg-map-core.css");function c(e,t){return{type:String,default:t,validator:i=>Object.values(e).includes(i)}}function I(e,t){return{type:String,default:t,validator:i=>e.includes(i)}}function m(e){return{type:e,required:!0}}function o(e,t){return{type:e,default:t}}function N(e){const t={};return Object.entries(e).forEach(([i,n])=>{const a=`__${i}`;t[i]={get(){const l=this[a];return l===void 0?n:l},set(l){this[a]=l}}}),t}const b={enumerable:!0,configurable:!0,get:h.noop,set:h.noop};function E(e){return Object.keys(e).forEach(t=>{const i=e[t];let n=!1;typeof i=="function"?(b.get=i,b.set=h.noop,n=!0):typeof i=="object"&&typeof i.get=="function"&&(b.get=i.get,b.set=i.set,n=!0),n&&(e[t]=Object.defineProperty(e,t,b))}),e}function x(e){return E(e)}function $(){return r.createCommentVNode()}function C(e,t){const i=e.$options[t];if(i)for(const n of i)n.call(e)}function z(e,t){for(const i of e)if(i.$options.name===t.name)return i}function D(e,t){if(!e.default)return;const i=e.default();for(const n of i)if((n==null?void 0:n.type).name===t.name)return n}function M(e,t){const i={},n={},a={};return Object.keys(e).forEach(l=>{l.startsWith("on")?i[s.Strings.pascal2kebab(l.substring(2))]=e[l]:n[l]=e[l]}),t&&Object.keys(t).forEach(l=>{l.startsWith("on")&&(a[s.Strings.pascal2kebab(l.substring(2))]=t[l])}),{binds:n,listeners:i,listenerProps:a}}function u(e,t){return r.computed(()=>M(e,t))}function d(){return Function}const V=()=>{let e,t;function i(a){console.log(a),e=a&&a.type,t=Date.now()}function n(a){((a&&a.type)!==e||Date.now()-(t??0)>1e3)&&i(a)}return{eventLog:i,eventLogLess:n}};function k(e,t){return(e==null?void 0:e.$options.name)===t.name}function w(e,t){return k(e,t)?e:void 0}function P(e,t,i){let n=t;for(;n;){if(k(n,e))return n;if(i&&k(n,i))return;n=n.$parent}}const T="$map",v="onCreate",g="onDestroy",p=r.defineComponent({inject:[T],mounted(){C(this,v)},beforeUnmount(){C(this,g)},methods:{recreate(){C(this,g),C(this,v)}},render(){return $()}}),W={type:c(s.TgMapType,s.TgMapType.google),center:m(s.LatLng),centerSyncDelay:o(Number,300),currentCenter:o(s.LatLng),lastCenter:o(s.LatLng),zoom:m(Number),infoWindowMode:I(s.InfoWindowModeValues),gestureHandling:c(s.GestureHandlingOptions),fractionalZoom:o(Boolean),minZoom:o(Number),maxZoom:o(Number),mapStyle:o(Object),mapTypeId:c(s.BuildInMapTypeId),mapType:o(Object),hideLogo:o(Boolean),onLoad:d(),"onUpdate:center":d(),"onUpdate:current-center":d(),"onUpdate:last-center":d(),"onUpdate:map-type":d(),"onUpdate:map-type-id":d(),"onUpdate:zoom":d(),onError:d()},R=r.defineComponent({name:"tg-map",provide(){return{[T]:r.computed(()=>this.map)}},inheritAttrs:!1,props:W,emits:void 0,setup(e,{attrs:t}){return{attrs:u(t,e),centerSyncTimeoutId:void 0}},data(){return{map:h.typed(),isDestroyed:!1}},computed:{propsJson(){return s.Objects.toJsonSafely(this.$props)}},watch:{gestureHandling(e){var t;e&&((t=this.map)==null||t.setGestureHandling(s.unwrapStringEnumValue(e,s.GestureHandlingOptions)))},minZoom(e){var t;(t=this.map)==null||t.setMinZoom(e)},maxZoom(e){var t;(t=this.map)==null||t.setMaxZoom(e)},mapStyle(e){var t;(t=this.map)==null||t.setMapStyle(e)},mapTypeId(e){var t;e&&((t=this.map)==null||t.setBuildInMapTypeId(s.unwrapStringEnumValue(e,s.BuildInMapTypeId)))},mapType(e){var t;(t=this.map)==null||t.setMapType(e??s.MapType.NORMAL)},hideLogo(e){var t;(t=this.map)==null||t.setHideLogo(e??!1)},fractionalZoom(e){var t;(t=this.map)==null||t.setFractionalZoom(e??!1)}},async mounted(){const e=s.unwrapStringEnumValue(this.type,s.TgMapType);try{await s.loadCachedMap(e)}catch(a){this.$emit("error",a);return}if(this.isDestroyed){console.warn(`tg-map(type=${e})已销毁, 不需要继续执行`);return}const t=s.TgMapFactory.createMap(e,this.$refs.map,{center:this.center,zoom:this.zoom,infoWindowMode:this.infoWindowMode,gestureHandling:s.unwrapStringEnumValue(this.gestureHandling,s.GestureHandlingOptions),minZoom:this.minZoom,maxZoom:this.maxZoom,mapStyle:this.mapStyle,buildInMapTypeId:s.unwrapStringEnumValue(this.mapTypeId,s.BuildInMapTypeId),hideLogo:this.hideLogo,fractionalZoom:this.fractionalZoom});if(this.map=r.markRaw(t),this.mapType&&t.setMapType(this.mapType),"ready"in this.attrs.listeners&&console.error("地图载入完成的事件已经从ready改为了load, 请手动修改"),s.bindEvents(this.attrs.listeners,t,["load"]),this.$emit("load",t),r.watch([()=>this.zoom,()=>this.center],([a,l],[y,A])=>{a!==y&&t.setZoom(a),l!==A&&(t.getCenter().equals(l)||t.setCenter(l))}),this.attrs.listenerProps["update:center"]){const a=()=>this.$emit("update:center",t.getCenter());t.addEventListener("center-changed",()=>{this.centerSyncDelay>0?(clearTimeout(this.centerSyncTimeoutId),this.centerSyncTimeoutId=setTimeout(a,this.centerSyncDelay)):a()})}this.attrs.listenerProps["update:current-center"]&&(this.$emit("update:current-center",this.center),t.addEventListener("center-changed",()=>{this.$emit("update:current-center",t.getCenter())})),this.attrs.listenerProps["update:zoom"]&&t.addEventListener("zoom-changed",()=>{this.$emit("update:zoom",t.getZoom())});const i=this.attrs.listenerProps["update:map-type"],n=this.attrs.listenerProps["update:map-type-id"];(i||n)&&t.addEventListener("map-type-changed",()=>{const a=t.getMapType();i&&this.$emit("update:map-type",a),n&&this.$emit("update:map-type-id",a.id)})},unmounted(){this.isDestroyed=!0,this.map&&(this.attrs.listenerProps["update:last-center"]&&this.$emit("update:last-center",this.map.getCenter()),this.attrs.listenerProps["update:center"]&&(clearTimeout(this.centerSyncTimeoutId),this.$emit("update:center",this.map.getCenter())))},methods:{}}),f=(e,t)=>{const i=e.__vccOpts||e;for(const[n,a]of t)i[n]=a;return i};function Z(e,t,i,n,a,l){return r.openBlock(),r.createElementBlock("div",r.mergeProps({class:"tg-map"},e.attrs.binds),[r.createElementVNode("div",{ref:"map",class:r.normalizeClass({"tg-map__map":!0,[`tg-map__map--hide-logo-${e.type}`]:e.hideLogo})},null,2),r.createCommentVNode("",!0),e.map?r.renderSlot(e.$slots,"default",{key:1}):r.createCommentVNode("",!0),r.renderSlot(e.$slots,"overlay")],16)}const _=f(R,[["render",Z]]),U=r.defineComponent({name:"tg-map-widget",props:{left:{type:[Number,String],default:null},top:{type:[Number,String],default:null},right:{type:[Number,String],default:null},bottom:{type:[Number,String],default:null}},computed:{topValue(){return this.top==null&&this.bottom==null?0:this.top}},methods:{dimen:s.dimen}});function j(e,t,i,n,a,l){return r.openBlock(),r.createElementBlock("div",{class:r.normalizeClass(e.$options.name),style:r.normalizeStyle({left:e.dimen(e.left),top:e.dimen(e.topValue),right:e.dimen(e.right),bottom:e.dimen(e.bottom)})},[r.renderSlot(e.$slots,"default")],6)}const H=f(U,[["render",j]]),F=r.defineComponent({name:"tg-custom-control",mixins:[p],props:{position:c(s.ControlPosition,s.ControlPosition.RIGHT_BOTTOM)},setup(){return{control:h.lateinit()}},watch:{position(){this.recreate()}},onCreate(){w(this.$parent,_)||console.warn("请将tg-custom-control放到tg-map中");const{$el:e}=this,t=class extends s.CustomControl{onCreateElement(){return e}};this.control=new t(s.unwrapStringEnumValue(this.position,s.ControlPosition)),this.$map.addCustomControl(this.control)},onDestroy(){this.$map.removeCustomControl(this.control)}});function q(e,t,i,n,a,l){return r.openBlock(),r.createElementBlock("div",{class:r.normalizeClass(e.$options.name)},[r.renderSlot(e.$slots,"default")],2)}const G=f(F,[["render",q]]),X=r.defineComponent({name:"tg-map-type-control",mixins:[p],props:{position:c(s.ControlPosition,s.ControlPosition.TOP_LEFT),type:c(s.MapTypeControlType),mapTypes:o(Array)},setup(){return{control:h.lateinit()}},watch:{position(e){this.control.setPosition(e)},type(){this.recreate()},mapTypes:{handler(){this.recreate()},deep:!0}},onCreate(){this.control=this.$map.createMapTypeControl(s.unwrapStringEnumValue(this)),this.$map.addControl(this.control)},onDestroy(){this.$map.removeControl(this.control)}}),K=r.defineComponent({name:"tg-scale-control",mixins:[p],props:{position:c(s.ControlPosition,s.ControlPosition.BOTTOM_RIGHT)},setup(){return{control:h.lateinit()}},watch:{position(e){this.control.setPosition(e)}},onCreate(){this.control=this.$map.createScaleControl(s.unwrapStringEnumValue(this)),this.$map.addControl(this.control)},onDestroy(){this.$map.removeControl(this.control)}});function B(){var i;const e=(i=r.getCurrentInstance())==null?void 0:i.type;let t=(e==null?void 0:e.name)??(e==null?void 0:e.__name);if(!t){const n=e==null?void 0:e.__file;n&&(t=h.path.basename(n,".vue"))}return t}function O(){const e=r.inject(T);let t,i;return e==null&&h.throwError(`<${B()||"unknown"}>必须作为<tg-map>的子代组件`),{mapRef:e,get map(){return e.value??h.throwError("map尚未初始化")},[v](n){r.onMounted(n),t&&h.throwError(`${v}只能调用一次`),t=n},[g](n){r.onBeforeUnmount(n),i&&h.throwError(`${g}只能调用一次`),i=n},recreate(){i==null||i(),t==null||t()}}}const J=r.defineComponent({name:"tg-street-view-control",props:{position:c(s.ControlPosition,s.ControlPosition.RIGHT_BOTTOM)},setup(e){let t=h.lateinit();const{map:i,onCreate:n,onDestroy:a}=O();return n(()=>{t=i.createStreetViewControl(s.unwrapStringEnumValue(e)),i.addControl(t)}),a(()=>{i.removeControl(t)}),r.watch(()=>e.position,l=>{t.setPosition(s.unwrapStringEnumValue(l,s.ControlPosition))}),$}}),Y=r.defineComponent({name:"tg-zoom-control",props:{position:c(s.ControlPosition,s.ControlPosition.RIGHT_BOTTOM),showZoomLevel:o(Boolean)},setup(e){let t=h.lateinit();const{map:i,onCreate:n,onDestroy:a}=O();return n(()=>{t=i.createZoomControl(s.unwrapStringEnumValue(e)),i.addControl(t)}),a(()=>{i.removeControl(t)}),r.watch(()=>e.position,l=>{t.setPosition(s.unwrapStringEnumValue(l,s.ControlPosition))}),r.watch(()=>e.showZoomLevel,l=>{t.setShowZoomLevel(l??!0)}),$}}),Q=r.defineComponent({name:"tg-heatmap",props:{maxIntensity:o(Number),gradient:o(Object),opacity:o(Number),radius:o(Number),data:m(Array)},setup(e){const{map:t,onCreate:i,onDestroy:n}=O();let a=h.lateinit();return i(()=>{a=t.createHeatmap(e)}),n(()=>{a.remove()}),r.watch(()=>e.data,l=>a.setData(l)),r.watch([()=>e.maxIntensity,()=>e.gradient,()=>e.opacity,()=>e.radius],()=>a.setOptions(e)),$}}),ee=r.defineComponent({name:"tg-marker-clusterer",mixins:[p],props:{gridSize:o(Number),maxZoom:o(Number),minClusterSize:o(Number),averageCenter:o(Boolean),styles:o(Array),stylesIndexCalculator:o(Function),zIndex:o(Number)},setup(){return{clusterer:h.lateinit(),markers:h.typed([])}},watch:{gridSize(){this.recreate()},maxZoom(){this.recreate()},minClusterSize(){this.recreate()},averageCenter(){this.recreate()},styles:{handler(){this.recreate()},deep:!0},stylesIndexCalculator(){this.recreate()},zIndex(){this.recreate()}},onCreate(){this.clusterer=this.$map.createMarkerClusterer(this)},onDestroy(){this.clusterer.clearMarkers(!0)},methods:{isInitiated(){return this.clusterer!=null},onAddMarker(e){this.markers.push(e),this.isInitiated()&&this.clusterer.addMarker(e)},onRemoveMarker(e){this.isInitiated()&&this.clusterer.removeMarker(e),h.Arrays.remove(this.markers,e)}}});function te(e,t,i,n,a,l){return r.openBlock(),r.createElementBlock("div",{class:r.normalizeClass(e.$options.name)},[r.renderSlot(e.$slots,"default")],2)}const L=f(ee,[["render",te]]),oe=r.defineComponent({name:"tg-traffic-layer",mixins:[p],setup(){return{layer:h.lateinit()}},watch:{},onCreate(){this.layer=new s.TrafficLayer,this.$map.addLayer(this.layer)},onDestroy(){this.$map.removeLayer(this.layer)}}),re=r.defineComponent({name:"tg-circle",mixins:[p],inheritAttrs:!1,props:{center:m(s.LatLng),radius:m(Number),clickable:o(Boolean),editable:o(Boolean),strokeColor:o(String),strokeOpacity:o(Number),strokeWeight:o(Number),visible:o(Boolean),zIndex:o(Number),fillColor:o(String),fillOpacity:o(Number),"onUpdate:center":d(),"onUpdate:radius":d()},emits:void 0,setup(e,{attrs:t}){return{attrs:u(t,e),overlay:h.lateinit(),emittedRadius:void 0,emittedCenter:void 0}},watch:{center(e){if(this.emittedCenter!=null){const t=this.emittedCenter;if(this.emittedCenter=void 0,t===r.toRaw(e))return}this.overlay.setCenter(e)},radius(e){if(this.emittedRadius!=null){const t=this.emittedRadius;if(this.emittedRadius=void 0,t===e)return}this.overlay.setRadius(e)},clickable(){this.recreate()},editable(e){this.overlay.setEditable(e)},strokeColor(e){this.overlay.setStrokeColor(e)},strokeOpacity(e){this.overlay.setStrokeOpacity(e)},strokeWeight(e){this.overlay.setStrokeWeight(e)},fillColor(e){this.overlay.setFillColor(e)},fillOpacity(e){this.overlay.setFillOpacity(e)},visible(e){this.overlay.setVisible(e)},zIndex(e){this.overlay.setZIndex(e)}},onCreate(){this.overlay=this.$map.createCircle(this),this.$map.addOverlay(this.overlay),s.bindEvents(this.attrs.listeners,this.overlay),this.attrs.listenerProps["update:center"]&&this.overlay.addEventListener("center-changed",()=>{this.$emit("update:center",this.emittedCenter=this.overlay.getCenter())}),this.attrs.listenerProps["update:radius"]&&this.overlay.addEventListener("radius-changed",()=>{this.$emit("update:radius",this.emittedRadius=this.overlay.getRadius())})},onDestroy(){this.$map.removeOverlay(this.overlay)}});class ie extends s.ElementOverlay{constructor(t,i,n,a){super(t,i),this.content=n,this.position=a}onCreate(){return this.content}onDraw(t){const i=t.fromLatLngToOverlayPoint(this.position);this.content.style.left=i.x+"px",this.content.style.top=i.y+"px"}setPosition(t){this.position=t,this.draw()}}const se=r.defineComponent({name:"tg-element-overlay",mixins:[p],props:{mapPane:c(s.MapPane,s.MapPane.overlayMouseTarget),position:m(s.LatLng)},setup(){return{overlay:h.lateinit()}},watch:{position(e){this.overlay.setPosition(e)},mapPane(){this.recreate()}},methods:{content(){return this.$el}},onCreate(){this.overlay=new ie(this.$map,s.unwrapStringEnumValue(this),this.content(),this.position),this.$map.addElementOverlay(this.overlay)},onDestroy(){this.$map.removeElementOverlay(this.overlay)}});function ne(e,t,i,n,a,l){return r.openBlock(),r.createElementBlock("div",r.mergeProps({class:e.$options.name},e.$attrs),[r.renderSlot(e.$slots,"default")],16)}const ae=f(se,[["render",ne]]),le={position:m(s.LatLng),title:o(String),label:o(Object),icon:o(Object),clickable:o(Boolean),draggable:o(Boolean),crossOnDrag:o(Boolean),cursor:o(String),zIndex:o(Number),visible:o(Boolean),normalizePositionForBaidu:o(Boolean),autoAddToClusterer:o(Boolean,!0),"onUpdate:position":d()},he=r.defineComponent({name:"tg-marker",mixins:[p],inheritAttrs:!1,props:le,emits:void 0,setup(e,{attrs:t}){return{attrs:u(t,e),marker:h.lateinit(),labelOverlay:h.typed(),info:h.typed(),emittedPosition:void 0,autoAddToClustererWhenCreate:e.autoAddToClusterer}},watch:{position(e){if(this.emittedPosition!=null){const t=this.emittedPosition;if(this.emittedPosition=void 0,t===r.toRaw(e))return}this.marker.setPosition(e)},title(e){this.marker.setTitle(e)},label(e,t){h.deepEqual(e,t)||(e?this.marker.setLabel(e):this.recreate())},icon(e){e?this.marker.setIcon(e):this.recreate()},clickable(e){this.marker instanceof s.BaiduMarker?this.recreate():this.marker.setClickable(e)},draggable(e){this.marker.setDraggable(e)},crossOnDrag(){this.recreate()},cursor(){this.recreate()},zIndex(e){this.marker instanceof s.BaiduMarker?this.recreate():this.marker.setZIndex(e)},visible(e){this.marker.setVisible(e)},normalizePositionForBaidu(){this.recreate()},autoAddToClusterer(){this.recreate()}},onCreate(){this.marker=this.$map.createMarker(this),this.labelOverlay&&this.marker.attachLabelOverlay(this.labelOverlay.overlay),this.$clusterer()&&this.autoAddToClusterer?this.$clusterer().onAddMarker(this.marker):this.$map.addOverlay(this.marker),this.autoAddToClustererWhenCreate=this.autoAddToClusterer,this.info&&this.info.show&&this.info.overlay.open(this.marker),s.bindEvents(this.attrs.listeners,this.marker),this.attrs.listenerProps["update:position"]&&this.marker.addEventListener("dragend",e=>{this.$emit("update:position",this.emittedPosition=e.position)})},onDestroy(){this.$clusterer()&&this.autoAddToClustererWhenCreate?this.$clusterer().onRemoveMarker(this.marker):this.$map.removeOverlay(this.marker)},methods:{$clusterer(){return w(this.$parent,L)},onAddLabel(e){this.labelOverlay=e,this.marker&&this.marker.attachLabelOverlay(e.overlay)},onRemoveLabel(e){this.marker.attachLabelOverlay(void 0),this.labelOverlay=void 0},onAddInfo(e){this.info=e,this.marker&&e.show&&e.overlay.open(this.marker)},onRemoveInfo(e){e.overlay.close(),this.info=void 0},onInfoShowChanged(e,t){t?e.overlay.open(this.marker):e.overlay.close()}}});function de(e,t,i,n,a,l){return r.renderSlot(e.$slots,"default")}const S=f(he,[["render",de]]),pe=r.defineComponent({name:"tg-info-box",mixins:[p],inheritAttrs:!1,props:{show:m(Boolean),position:o(s.LatLng),offset:o(Object),maxWidth:o(Number),borderClass:o(String),zIndex:o(Number),disableAutoPan:o(Boolean),"onUpdate:show":d()},emits:void 0,setup(e,{attrs:t}){return{attrs:u(t,e),overlay:h.lateinit()}},watch:{show(e){this.$marker()?this.$marker().onInfoShowChanged(this,e):e?this.overlay.open():this.overlay.close()},position(e){this.overlay.setPosition(e)},offset(){this.recreate()},maxWidth(e){this.overlay.setMaxWidth(e)},borderClass(){this.recreate()},zIndex(e){this.overlay.setZIndex(e)},disableAutoPan(){this.recreate()}},onCreate(){this.overlay=this.$map.createInfoBox(this.getOptions()),this.$marker()?this.$marker().onAddInfo(this):this.show&&this.overlay.open(),this.attrs.listenerProps["update:show"]&&this.overlay.addEventListener("closeclick",()=>{this.$emit("update:show",!1)}),s.bindEvents(this.attrs.listeners,this.overlay)},onDestroy(){this.$marker()?this.$marker().onRemoveInfo(this):this.overlay.close()},methods:{getOptions(){return{content:this.content(),position:this.position,offset:this.offset,zIndex:this.zIndex,maxWidth:this.maxWidth,borderClass:this.borderClass,disableAutoPan:this.disableAutoPan}},content(){return this.$el},$marker(){return P(S,this.$parent,_)},open(e){this.overlay.open(e)},close(){this.overlay.close()}}});function me(e,t,i,n,a,l){return r.openBlock(),r.createElementBlock("div",r.mergeProps({class:e.$options.name},e.attrs.binds),[r.renderSlot(e.$slots,"default")],16)}const ce=f(pe,[["render",me]]),ue=r.defineComponent({name:"tg-info-window",mixins:[p],inheritAttrs:!1,props:{show:m(Boolean),position:o(s.LatLng),maxWidth:o(Number),offset:o(Object),disableAutoPan:o(Boolean),"onUpdate:show":d()},emits:void 0,setup(e,{attrs:t}){return{attrs:u(t,e),overlay:h.lateinit()}},watch:{show(e){this.$marker()?this.$marker().onInfoShowChanged(this,e):e?this.overlay.open():this.overlay.close()},position(e){this.overlay.setPosition(e)},maxWidth(){this.recreate()},offset(){this.recreate()},disableAutoPan(){this.recreate()}},methods:{content(){return this.$el},$marker(){return P(S,this.$parent,_)},getOptions(){return{content:this.content(),position:this.position,maxWidth:this.maxWidth,offset:this.offset,disableAutoPan:this.disableAutoPan}}},onCreate(){this.overlay=this.$map.createInfoWindow(this.getOptions()),this.$marker()?this.$marker().onAddInfo(this):this.show&&this.overlay.open(),this.overlay.addEventListener("open",()=>{this.$emit("update:show",!0)}),this.overlay.addEventListener("close",()=>{this.$emit("update:show",!1)}),s.bindEvents(this.attrs.listeners,this.overlay)},onDestroy(){this.$marker()?this.$marker().onRemoveInfo(this):this.overlay.close()}});function fe(e,t,i,n,a,l){return r.withDirectives((r.openBlock(),r.createElementBlock("div",r.mergeProps({class:e.$options.name},e.attrs.binds),[r.renderSlot(e.$slots,"default")],16)),[[r.vShow,e.show]])}const ye=f(ue,[["render",fe]]),ve=r.defineComponent({name:"tg-label",mixins:[p],inheritAttrs:!1,props:{position:o(s.LatLng),offset:o(Object),zIndex:o(Number),mapPane:c(s.MapPane)},emits:void 0,setup(e,{attrs:t}){return{attrs:u(t),overlay:h.lateinit()}},watch:{position(e){this.overlay.setPosition(e)},offset(e){this.overlay.setOffset(e)},zIndex(e){this.overlay.setZIndex(e)},visible(e){this.overlay.setVisible(e)},mapPane(){this.recreate()}},methods:{content(){return this.$el},marker(){var e;return(e=this.$marker())==null?void 0:e.marker},$marker(){return P(S,this.$parent,_)},getOptions(){return{content:this.content(),position:this.position,offset:this.offset,zIndex:this.zIndex,mapPane:s.unwrapStringEnumValue(this.mapPane,s.MapPane)}}},onCreate(){this.overlay=this.$map.createLabel(this.getOptions()),this.$marker()?this.$marker().onAddLabel(this):this.$map.addOverlay(this.overlay),s.bindEvents(this.attrs.listeners,this.overlay)},onDestroy(){this.$marker()?this.$marker().onRemoveLabel(this):this.$map.removeOverlay(this.overlay)}});function ge(e,t,i,n,a,l){return r.openBlock(),r.createElementBlock("div",r.mergeProps({class:e.$options.name},e.attrs.binds),[r.renderSlot(e.$slots,"default")],16)}const be=f(ve,[["render",ge]]),Ce={paths:m(Array),clickable:o(Boolean),editable:o(Boolean),strokeColor:o(String),strokeOpacity:o(Number),strokeWeight:o(Number),visible:o(Boolean),zIndex:o(Number),fillColor:o(String),fillOpacity:o(Number),"onUpdate:paths":d()},$e=r.defineComponent({name:"tg-polygon",mixins:[p],inheritAttrs:!1,props:Ce,emits:void 0,setup(e,{attrs:t}){return{attrs:u(t,e),overlay:h.lateinit(),emittedPaths:void 0}},watch:{paths:{handler(e){if(this.emittedPaths!=null){const t=this.emittedPaths;if(this.emittedPaths=void 0,t.length===e.length&&t.every((i,n)=>i===r.toRaw(e[n])))return}this.overlay.setPaths(e)},deep:!0},clickable(){this.recreate()},editable(e){this.overlay.setEditable(e)},strokeColor(e){this.overlay.setStrokeColor(e)},strokeOpacity(e){this.overlay.setStrokeOpacity(e)},strokeWeight(e){this.overlay.setStrokeWeight(e)},fillColor(e){this.overlay.setFillColor(e)},fillOpacity(e){this.overlay.setFillOpacity(e)},visible(e){this.overlay.setVisible(e)},zIndex(e){this.overlay.setZIndex(e)}},onCreate(){this.overlay=this.$map.createPolygon(this),this.$map.addOverlay(this.overlay),s.bindEvents(this.attrs.listeners,this.overlay),this.attrs.listenerProps["update:paths"]&&this.overlay.addEventListener("paths-edited",()=>{this.$emit("update:paths",this.emittedPaths=this.overlay.getPaths())})},onDestroy(){this.$map.removeOverlay(this.overlay)}}),_e=r.defineComponent({name:"tg-polyline",mixins:[p],inheritAttrs:!1,props:{path:m(Array),icons:o(Array),clickable:o(Boolean),editable:o(Boolean),strokeColor:o(String),strokeOpacity:o(Number),strokeWeight:o(Number),visible:o(Boolean),zIndex:o(Number),"onUpdate:path":d()},emits:void 0,setup(e,{attrs:t}){return{attrs:u(t,e),overlay:h.lateinit(),emittedPath:void 0}},watch:{path:{handler(e){if(this.emittedPath!=null){const t=this.emittedPath;if(this.emittedPath=void 0,t===r.toRaw(e))return}this.overlay.setPath(e)},deep:!0},icons:{handler(){this.recreate()},deep:!0},clickable(){this.recreate()},editable(e){this.overlay.setEditable(e)},strokeColor(e){this.overlay.setStrokeColor(e)},strokeOpacity(e){this.overlay.setStrokeOpacity(e)},strokeWeight(e){this.overlay.setStrokeWeight(e)},visible(e){this.overlay.setVisible(e)},zIndex(e){this.overlay.setZIndex(e)}},onCreate(){this.overlay=this.$map.createPolyline(this),this.$map.addOverlay(this.overlay),s.bindEvents(this.attrs.listeners,this.overlay),this.attrs.listenerProps["update:path"]&&this.overlay.addEventListener("path-edited",()=>{this.$emit("update:path",this.emittedPath=this.overlay.getPath())})},onDestroy(){this.overlay.remove()}}),ke=r.defineComponent({name:"tg-rectangle",mixins:[p],inheritAttrs:!1,props:{bounds:m(Object),clickable:o(Boolean),editable:o(Boolean),strokeColor:o(String),strokeOpacity:o(Number),strokeWeight:o(Number),visible:o(Boolean),zIndex:o(Number),fillColor:o(String),fillOpacity:o(Number),"onUpdate:bounds":d()},emits:void 0,setup(e,{attrs:t}){return{attrs:u(t,e),overlay:h.lateinit(),emittedBounds:void 0}},watch:{bounds(e){if(this.emittedBounds!=null){const t=this.emittedBounds;if(this.emittedBounds=void 0,t.equals(e))return}this.overlay.setBounds(e)},clickable(){this.recreate()},editable(e){this.overlay.setEditable(e)},strokeColor(e){this.overlay.setStrokeColor(e)},strokeOpacity(e){this.overlay.setStrokeOpacity(e)},strokeWeight(e){this.overlay.setStrokeWeight(e)},fillColor(e){this.overlay.setFillColor(e)},fillOpacity(e){this.overlay.setFillOpacity(e)},visible(e){this.overlay.setVisible(e)},zIndex(e){this.overlay.setZIndex(e)}},onCreate(){this.overlay=this.$map.createRectangle(this),this.$map.addOverlay(this.overlay),s.bindEvents(this.attrs.listeners,this.overlay),this.attrs.listenerProps["update:bounds"]&&this.overlay.addEventListener("bounds-changed",()=>{this.$emit("update:bounds",this.emittedBounds=this.overlay.getBounds())})},onDestroy(){this.$map.removeOverlay(this.overlay)}}),Pe=["beforeUpdate","updated"],Te={install(e,t={}){if(t.enable!==!1){const i=r.defineComponent({beforeCreate(){const n=B()??"",l=(t.nameRegex||/^[A-Z]/).test(n)?y=>{t.hookNames?t.hookNames.includes(y)&&console.debug("[lifecycle]",n,y):Pe.includes(y)||console.debug("[lifecycle]",n,y)}:h.noop;l("beforeCreate"),this.__life_impl=l},created(){this.__life("created")},beforeMount(){this.__life("beforeMount")},mounted(){this.__life("mounted")},beforeUpdate(){this.__life("beforeUpdate")},updated(){this.__life("updated")},beforeUnmount(){this.__life("beforeUnmount")},unmounted(){this.__life("unmounted")},methods:{__life(n){this.__life_impl(n)}},onCreate(){this.__life("onCreate")},onDestroy(){this.__life("onDestroy")}});e.mixin(i)}}},Oe={install(e,t){s.setTgMapConfig(t);const i=e.config.optionMergeStrategies;i[v]=i[g]=(n,a)=>n?[...new Set([].concat(n,a))]:Array.isArray(a)?a:[a]}};exports.LifecycleLogPlugin=Te;exports.MIXIN_HOOK_CREATE=v;exports.MIXIN_HOOK_DESTROY=g;exports.MIXIN_MAP_NAME=T;exports.MapMixin=p;exports.TgCircle=re;exports.TgCustomControl=G;exports.TgElementOverlay=ae;exports.TgHeatmap=Q;exports.TgInfoBox=ce;exports.TgInfoWindow=ye;exports.TgLabel=be;exports.TgMap=_;exports.TgMapTypeControl=X;exports.TgMapWidget=H;exports.TgMarker=S;exports.TgMarkerClusterer=L;exports.TgPolygon=$e;exports.TgPolyline=_e;exports.TgRectangle=ke;exports.TgScaleControl=K;exports.TgStreetViewControl=J;exports.TgTrafficLayer=oe;exports.TgZoomControl=Y;exports.callHook=C;exports.computedSaveOnThis=N;exports.createEmptyVNode=$;exports.createPropertyObject=E;exports.createPropertyObjectTyped=x;exports.default=Oe;exports.eventProp=d;exports.extractVNodeFromSlotsByComponent=D;exports.findAncestorComponentByType=P;exports.findByComponentType=z;exports.isComponentByType=k;exports.optionalProp=o;exports.requiredProp=m;exports.safeAsComponent=w;exports.splitAttrs=M;exports.stringEnumProp=c;exports.stringUnionPropFromValues=I;exports.useEventLogMethods=V;exports.useSplittedAttrs=u;exports.useTgMapInner=O;Object.keys(s).forEach(e=>{e!=="default"&&!Object.prototype.hasOwnProperty.call(exports,e)&&Object.defineProperty(exports,e,{enumerable:!0,get:()=>s[e]})});
1
+ "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const h=require("tg-commons"),s=require("tg-map-core"),r=require("vue");require("tg-map-core/dist/tg-map-core.css");function c(e,t){return{type:String,default:t,validator:i=>Object.values(e).includes(i)}}function w(e,t){return{type:String,default:t,validator:i=>e.includes(i)}}function m(e){return{type:e,required:!0}}function o(e,t){return{type:e,default:t}}function N(e){const t={};return Object.entries(e).forEach(([i,n])=>{const a=`__${i}`;t[i]={get(){const l=this[a];return l===void 0?n:l},set(l){this[a]=l}}}),t}const b={enumerable:!0,configurable:!0,get:h.noop,set:h.noop};function I(e){return Object.keys(e).forEach(t=>{const i=e[t];let n=!1;typeof i=="function"?(b.get=i,b.set=h.noop,n=!0):typeof i=="object"&&typeof i.get=="function"&&(b.get=i.get,b.set=i.set,n=!0),n&&(e[t]=Object.defineProperty(e,t,b))}),e}function x(e){return I(e)}function $(){return r.createCommentVNode()}function C(e,t){const i=e.$options[t];if(i)for(const n of i)n.call(e)}function z(e,t){for(const i of e)if(i.$options.name===t.name)return i}function D(e,t){if(!e.default)return;const i=e.default();for(const n of i)if((n==null?void 0:n.type).name===t.name)return n}function E(e,t){const i={},n={},a={};return Object.keys(e).forEach(l=>{l.startsWith("on")?i[s.Strings.pascal2kebab(l.substring(2))]=e[l]:n[l]=e[l]}),t&&Object.keys(t).forEach(l=>{l.startsWith("on")&&(a[s.Strings.pascal2kebab(l.substring(2))]=t[l])}),{binds:n,listeners:i,listenerProps:a}}function u(e,t){return r.computed(()=>E(e,t))}function d(){return Function}const V=()=>{let e,t;function i(a){console.log(a),e=a&&a.type,t=Date.now()}function n(a){((a&&a.type)!==e||Date.now()-(t??0)>1e3)&&i(a)}return{eventLog:i,eventLogLess:n}};function _(e,t){return(e==null?void 0:e.$options.name)===t.name}function S(e,t){return _(e,t)?e:void 0}function P(e,t,i){let n=t;for(;n;){if(_(n,e))return n;if(i&&_(n,i))return;n=n.$parent}}const T="$map",v="onCreate",g="onDestroy",p=r.defineComponent({inject:[T],mounted(){C(this,v)},beforeUnmount(){C(this,g)},methods:{recreate(){C(this,g),C(this,v)}},render(){return $()}}),W={type:c(s.TgMapType,s.TgMapType.google),center:m(s.LatLng),centerSyncDelay:o(Number,300),currentCenter:o(s.LatLng),lastCenter:o(s.LatLng),zoom:m(Number),infoWindowMode:w(s.InfoWindowModeValues),gestureHandling:c(s.GestureHandlingOptions),fractionalZoom:o(Boolean),minZoom:o(Number),maxZoom:o(Number),mapStyle:o(Object),mapTypeId:c(s.BuildInMapTypeId),mapType:o(Object),hideLogo:o(Boolean),onLoad:d(),"onUpdate:center":d(),"onUpdate:current-center":d(),"onUpdate:last-center":d(),"onUpdate:map-type":d(),"onUpdate:map-type-id":d(),"onUpdate:zoom":d(),onError:d()},R=r.defineComponent({name:"tg-map",provide(){return{[T]:r.computed(()=>this.map)}},inheritAttrs:!1,props:W,emits:void 0,setup(e,{attrs:t}){return{attrs:u(t,e),centerSyncTimeoutId:void 0}},data(){return{map:h.typed(),isDestroyed:!1}},computed:{propsJson(){return s.Objects.toJsonSafely(this.$props)}},watch:{gestureHandling(e){var t;e&&((t=this.map)==null||t.setGestureHandling(s.unwrapStringEnumValue(e,s.GestureHandlingOptions)))},minZoom(e){var t;(t=this.map)==null||t.setMinZoom(e)},maxZoom(e){var t;(t=this.map)==null||t.setMaxZoom(e)},mapStyle(e){var t;(t=this.map)==null||t.setMapStyle(e)},mapTypeId(e){var t;e&&((t=this.map)==null||t.setBuildInMapTypeId(s.unwrapStringEnumValue(e,s.BuildInMapTypeId)))},mapType(e){var t;(t=this.map)==null||t.setMapType(e??s.MapType.NORMAL)},hideLogo(e){var t;(t=this.map)==null||t.setHideLogo(e??!1)},fractionalZoom(e){var t;(t=this.map)==null||t.setFractionalZoom(e??!1)}},async mounted(){const e=s.unwrapStringEnumValue(this.type,s.TgMapType);try{await s.loadCachedMap(e)}catch(a){this.$emit("error",a);return}if(this.isDestroyed){console.warn(`tg-map(type=${e})已销毁, 不需要继续执行`);return}const t=s.TgMapFactory.createMap(e,this.$refs.map,{center:this.center,zoom:this.zoom,infoWindowMode:this.infoWindowMode,gestureHandling:s.unwrapStringEnumValue(this.gestureHandling,s.GestureHandlingOptions),minZoom:this.minZoom,maxZoom:this.maxZoom,mapStyle:this.mapStyle,buildInMapTypeId:s.unwrapStringEnumValue(this.mapTypeId,s.BuildInMapTypeId),hideLogo:this.hideLogo,fractionalZoom:this.fractionalZoom});if(this.map=r.markRaw(t),this.mapType&&t.setMapType(this.mapType),"ready"in this.attrs.listeners&&console.error("地图载入完成的事件已经从ready改为了load, 请手动修改"),s.bindEvents(this.attrs.listeners,t,["load"]),this.$emit("load",t),r.watch([()=>this.zoom,()=>this.center],([a,l],[y,A])=>{a!==y&&t.setZoom(a),l!==A&&(t.getCenter().equals(l)||t.setCenter(l))}),this.attrs.listenerProps["update:center"]){const a=()=>this.$emit("update:center",t.getCenter());t.addEventListener("center-changed",()=>{this.centerSyncDelay>0?(clearTimeout(this.centerSyncTimeoutId),this.centerSyncTimeoutId=setTimeout(a,this.centerSyncDelay)):a()})}this.attrs.listenerProps["update:current-center"]&&(this.$emit("update:current-center",this.center),t.addEventListener("center-changed",()=>{this.$emit("update:current-center",t.getCenter())})),this.attrs.listenerProps["update:zoom"]&&t.addEventListener("zoom-changed",()=>{this.$emit("update:zoom",t.getZoom())});const i=this.attrs.listenerProps["update:map-type"],n=this.attrs.listenerProps["update:map-type-id"];(i||n)&&t.addEventListener("map-type-changed",()=>{const a=t.getMapType();i&&this.$emit("update:map-type",a),n&&this.$emit("update:map-type-id",a.id)})},unmounted(){this.isDestroyed=!0,this.map&&(this.attrs.listenerProps["update:last-center"]&&this.$emit("update:last-center",this.map.getCenter()),this.attrs.listenerProps["update:center"]&&(clearTimeout(this.centerSyncTimeoutId),this.$emit("update:center",this.map.getCenter())))},methods:{}}),f=(e,t)=>{const i=e.__vccOpts||e;for(const[n,a]of t)i[n]=a;return i};function Z(e,t,i,n,a,l){return r.openBlock(),r.createElementBlock("div",r.mergeProps({class:"tg-map"},e.attrs.binds),[r.createElementVNode("div",{ref:"map",class:r.normalizeClass({"tg-map__map":!0,[`tg-map__map--hide-logo-${e.type}`]:e.hideLogo})},null,2),r.createCommentVNode("",!0),e.map?r.renderSlot(e.$slots,"default",{key:1}):r.createCommentVNode("",!0),r.renderSlot(e.$slots,"overlay")],16)}const k=f(R,[["render",Z]]),U=r.defineComponent({name:"tg-map-widget",props:{left:{type:[Number,String],default:null},top:{type:[Number,String],default:null},right:{type:[Number,String],default:null},bottom:{type:[Number,String],default:null}},computed:{topValue(){return this.top==null&&this.bottom==null?0:this.top}},methods:{dimen:s.dimen}});function j(e,t,i,n,a,l){return r.openBlock(),r.createElementBlock("div",{class:r.normalizeClass(e.$options.name),style:r.normalizeStyle({left:e.dimen(e.left),top:e.dimen(e.topValue),right:e.dimen(e.right),bottom:e.dimen(e.bottom)})},[r.renderSlot(e.$slots,"default")],6)}const H=f(U,[["render",j]]),F=r.defineComponent({name:"tg-custom-control",mixins:[p],props:{position:c(s.ControlPosition,s.ControlPosition.RIGHT_BOTTOM)},setup(){return{control:h.lateinit()}},watch:{position(){this.recreate()}},onCreate(){S(this.$parent,k)||console.warn("请将tg-custom-control放到tg-map中");const{$el:e}=this,t=class extends s.CustomControl{onCreateElement(){return e}};this.control=new t(s.unwrapStringEnumValue(this.position,s.ControlPosition)),this.$map.addCustomControl(this.control)},onDestroy(){this.$map.removeCustomControl(this.control)}});function q(e,t,i,n,a,l){return r.openBlock(),r.createElementBlock("div",{class:r.normalizeClass(e.$options.name)},[r.renderSlot(e.$slots,"default")],2)}const G=f(F,[["render",q]]),X=r.defineComponent({name:"tg-map-type-control",mixins:[p],props:{position:c(s.ControlPosition,s.ControlPosition.TOP_LEFT),type:c(s.MapTypeControlType),mapTypes:o(Array)},setup(){return{control:h.lateinit()}},watch:{position(e){this.control.setPosition(e)},type(){this.recreate()},mapTypes:{handler(){this.recreate()},deep:!0}},onCreate(){this.control=this.$map.createMapTypeControl(s.unwrapStringEnumValue(this)),this.$map.addControl(this.control)},onDestroy(){this.$map.removeControl(this.control)}}),K=r.defineComponent({name:"tg-scale-control",mixins:[p],props:{position:c(s.ControlPosition,s.ControlPosition.BOTTOM_RIGHT)},setup(){return{control:h.lateinit()}},watch:{position(e){this.control.setPosition(e)}},onCreate(){this.control=this.$map.createScaleControl(s.unwrapStringEnumValue(this)),this.$map.addControl(this.control)},onDestroy(){this.$map.removeControl(this.control)}});function B(){var i;const e=(i=r.getCurrentInstance())==null?void 0:i.type;let t=(e==null?void 0:e.name)??(e==null?void 0:e.__name);if(!t){const n=e==null?void 0:e.__file;n&&(t=h.path.basename(n,".vue"))}return t}function O(){const e=r.inject(T);let t,i;return e==null&&h.throwError(`<${B()||"unknown"}>必须作为<tg-map>的子代组件`),{mapRef:e,get map(){return e.value??h.throwError("map尚未初始化")},[v](n){r.onMounted(n),t&&h.throwError(`${v}只能调用一次`),t=n},[g](n){r.onBeforeUnmount(n),i&&h.throwError(`${g}只能调用一次`),i=n},recreate(){i==null||i(),t==null||t()}}}const J=r.defineComponent({name:"tg-street-view-control",props:{position:c(s.ControlPosition,s.ControlPosition.RIGHT_BOTTOM)},setup(e){let t=h.lateinit();const{map:i,onCreate:n,onDestroy:a}=O();return n(()=>{t=i.createStreetViewControl(s.unwrapStringEnumValue(e)),i.addControl(t)}),a(()=>{i.removeControl(t)}),r.watch(()=>e.position,l=>{t.setPosition(s.unwrapStringEnumValue(l,s.ControlPosition))}),$}}),Y=r.defineComponent({name:"tg-zoom-control",props:{position:c(s.ControlPosition,s.ControlPosition.RIGHT_BOTTOM),showZoomLevel:o(Boolean)},setup(e){let t=h.lateinit();const{map:i,onCreate:n,onDestroy:a}=O();return n(()=>{t=i.createZoomControl(s.unwrapStringEnumValue(e)),i.addControl(t)}),a(()=>{i.removeControl(t)}),r.watch(()=>e.position,l=>{t.setPosition(s.unwrapStringEnumValue(l,s.ControlPosition))}),r.watch(()=>e.showZoomLevel,l=>{t.setShowZoomLevel(l??!0)}),$}}),Q=r.defineComponent({name:"tg-heatmap",props:{maxIntensity:o(Number),gradient:o(Object),opacity:o(Number),radius:o(Number),data:m(Array)},setup(e){const{map:t,onCreate:i,onDestroy:n}=O();let a=h.lateinit();return i(()=>{a=t.createHeatmap(e)}),n(()=>{a.remove()}),r.watch(()=>e.data,l=>a.setData(l)),r.watch([()=>e.maxIntensity,()=>e.gradient,()=>e.opacity,()=>e.radius],()=>a.setOptions(e)),$}}),ee=r.defineComponent({name:"tg-marker-clusterer",mixins:[p],props:{gridSize:o(Number),maxZoom:o(Number),minClusterSize:o(Number),averageCenter:o(Boolean),styles:o(Array),stylesIndexCalculator:o(Function),zIndex:o(Number)},setup(){return{clusterer:h.lateinit(),markers:h.typed([]),pendingMarkers:h.typed([])}},watch:{gridSize(){this.recreate()},maxZoom(){this.recreate()},minClusterSize(){this.recreate()},averageCenter(){this.recreate()},styles:{handler(){this.recreate()},deep:!0},stylesIndexCalculator(){this.recreate()},zIndex(){this.recreate()}},onCreate(){this.clusterer=this.$map.createMarkerClusterer(this)},onDestroy(){this.clusterer.clearMarkers(!0),this.pendingMarkers=[]},methods:{isInitiated(){return this.clusterer!=null},performAddMarkers(){this.clusterer.addMarkers(this.pendingMarkers),this.pendingMarkers=[]},onAddMarker(e){this.markers.push(e),this.isInitiated()&&(this.pendingMarkers.length||this.$nextTick(this.performAddMarkers),this.pendingMarkers.push(e))},onRemoveMarker(e){this.isInitiated()&&(h.Arrays.remove(this.pendingMarkers,e)||this.clusterer.removeMarker(e)),h.Arrays.remove(this.markers,e)}}});function te(e,t,i,n,a,l){return r.openBlock(),r.createElementBlock("div",{class:r.normalizeClass(e.$options.name)},[r.renderSlot(e.$slots,"default")],2)}const L=f(ee,[["render",te]]),oe=r.defineComponent({name:"tg-traffic-layer",mixins:[p],setup(){return{layer:h.lateinit()}},watch:{},onCreate(){this.layer=new s.TrafficLayer,this.$map.addLayer(this.layer)},onDestroy(){this.$map.removeLayer(this.layer)}}),re=r.defineComponent({name:"tg-circle",mixins:[p],inheritAttrs:!1,props:{center:m(s.LatLng),radius:m(Number),clickable:o(Boolean),editable:o(Boolean),strokeColor:o(String),strokeOpacity:o(Number),strokeWeight:o(Number),visible:o(Boolean),zIndex:o(Number),fillColor:o(String),fillOpacity:o(Number),"onUpdate:center":d(),"onUpdate:radius":d()},emits:void 0,setup(e,{attrs:t}){return{attrs:u(t,e),overlay:h.lateinit(),emittedRadius:void 0,emittedCenter:void 0}},watch:{center(e){if(this.emittedCenter!=null){const t=this.emittedCenter;if(this.emittedCenter=void 0,t===r.toRaw(e))return}this.overlay.setCenter(e)},radius(e){if(this.emittedRadius!=null){const t=this.emittedRadius;if(this.emittedRadius=void 0,t===e)return}this.overlay.setRadius(e)},clickable(){this.recreate()},editable(e){this.overlay.setEditable(e)},strokeColor(e){this.overlay.setStrokeColor(e)},strokeOpacity(e){this.overlay.setStrokeOpacity(e)},strokeWeight(e){this.overlay.setStrokeWeight(e)},fillColor(e){this.overlay.setFillColor(e)},fillOpacity(e){this.overlay.setFillOpacity(e)},visible(e){this.overlay.setVisible(e)},zIndex(e){this.overlay.setZIndex(e)}},onCreate(){this.overlay=this.$map.createCircle(this),this.$map.addOverlay(this.overlay),s.bindEvents(this.attrs.listeners,this.overlay),this.attrs.listenerProps["update:center"]&&this.overlay.addEventListener("center-changed",()=>{this.$emit("update:center",this.emittedCenter=this.overlay.getCenter())}),this.attrs.listenerProps["update:radius"]&&this.overlay.addEventListener("radius-changed",()=>{this.$emit("update:radius",this.emittedRadius=this.overlay.getRadius())})},onDestroy(){this.$map.removeOverlay(this.overlay)}});class ie extends s.ElementOverlay{constructor(t,i,n,a){super(t,i),this.content=n,this.position=a}onCreate(){return this.content}onDraw(t){const i=t.fromLatLngToOverlayPoint(this.position);this.content.style.left=i.x+"px",this.content.style.top=i.y+"px"}setPosition(t){this.position=t,this.draw()}}const se=r.defineComponent({name:"tg-element-overlay",mixins:[p],props:{mapPane:c(s.MapPane,s.MapPane.overlayMouseTarget),position:m(s.LatLng)},setup(){return{overlay:h.lateinit()}},watch:{position(e){this.overlay.setPosition(e)},mapPane(){this.recreate()}},methods:{content(){return this.$el}},onCreate(){this.overlay=new ie(this.$map,s.unwrapStringEnumValue(this),this.content(),this.position),this.$map.addElementOverlay(this.overlay)},onDestroy(){this.$map.removeElementOverlay(this.overlay)}});function ne(e,t,i,n,a,l){return r.openBlock(),r.createElementBlock("div",r.mergeProps({class:e.$options.name},e.$attrs),[r.renderSlot(e.$slots,"default")],16)}const ae=f(se,[["render",ne]]),le={position:m(s.LatLng),title:o(String),label:o(Object),icon:o(Object),clickable:o(Boolean),draggable:o(Boolean),crossOnDrag:o(Boolean),cursor:o(String),zIndex:o(Number),visible:o(Boolean),normalizePositionForBaidu:o(Boolean),autoAddToClusterer:o(Boolean,!0),"onUpdate:position":d()},he=r.defineComponent({name:"tg-marker",mixins:[p],inheritAttrs:!1,props:le,emits:void 0,setup(e,{attrs:t}){return{attrs:u(t,e),marker:h.lateinit(),labelOverlay:h.typed(),info:h.typed(),emittedPosition:void 0,autoAddToClustererWhenCreate:e.autoAddToClusterer}},watch:{position(e){if(this.emittedPosition!=null){const t=this.emittedPosition;if(this.emittedPosition=void 0,t===r.toRaw(e))return}this.marker.setPosition(e)},title(e){this.marker.setTitle(e)},label(e,t){h.deepEqual(e,t)||(e?this.marker.setLabel(e):this.recreate())},icon(e){e?this.marker.setIcon(e):this.recreate()},clickable(e){this.marker instanceof s.BaiduMarker?this.recreate():this.marker.setClickable(e)},draggable(e){this.marker.setDraggable(e)},crossOnDrag(){this.recreate()},cursor(){this.recreate()},zIndex(e){this.marker instanceof s.BaiduMarker?this.recreate():this.marker.setZIndex(e)},visible(e){this.marker.setVisible(e)},normalizePositionForBaidu(){this.recreate()},autoAddToClusterer(){this.recreate()}},onCreate(){this.marker=this.$map.createMarker(this),this.labelOverlay&&this.marker.attachLabelOverlay(this.labelOverlay.overlay),this.$clusterer()&&this.autoAddToClusterer?this.$clusterer().onAddMarker(this.marker):this.$map.addOverlay(this.marker),this.autoAddToClustererWhenCreate=this.autoAddToClusterer,this.info&&this.info.show&&this.info.overlay.open(this.marker),s.bindEvents(this.attrs.listeners,this.marker),this.attrs.listenerProps["update:position"]&&this.marker.addEventListener("dragend",e=>{this.$emit("update:position",this.emittedPosition=e.position)})},onDestroy(){this.$clusterer()&&this.autoAddToClustererWhenCreate?this.$clusterer().onRemoveMarker(this.marker):this.$map.removeOverlay(this.marker)},methods:{$clusterer(){return S(this.$parent,L)},onAddLabel(e){this.labelOverlay=e,this.marker&&this.marker.attachLabelOverlay(e.overlay)},onRemoveLabel(e){this.marker.attachLabelOverlay(void 0),this.labelOverlay=void 0},onAddInfo(e){this.info=e,this.marker&&e.show&&e.overlay.open(this.marker)},onRemoveInfo(e){e.overlay.close(),this.info=void 0},onInfoShowChanged(e,t){t?e.overlay.open(this.marker):e.overlay.close()}}});function de(e,t,i,n,a,l){return r.renderSlot(e.$slots,"default")}const M=f(he,[["render",de]]),pe=r.defineComponent({name:"tg-info-box",mixins:[p],inheritAttrs:!1,props:{show:m(Boolean),position:o(s.LatLng),offset:o(Object),maxWidth:o(Number),borderClass:o(String),zIndex:o(Number),disableAutoPan:o(Boolean),"onUpdate:show":d()},emits:void 0,setup(e,{attrs:t}){return{attrs:u(t,e),overlay:h.lateinit()}},watch:{show(e){this.$marker()?this.$marker().onInfoShowChanged(this,e):e?this.overlay.open():this.overlay.close()},position(e){this.overlay.setPosition(e)},offset(){this.recreate()},maxWidth(e){this.overlay.setMaxWidth(e)},borderClass(){this.recreate()},zIndex(e){this.overlay.setZIndex(e)},disableAutoPan(){this.recreate()}},onCreate(){this.overlay=this.$map.createInfoBox(this.getOptions()),this.$marker()?this.$marker().onAddInfo(this):this.show&&this.overlay.open(),this.attrs.listenerProps["update:show"]&&this.overlay.addEventListener("closeclick",()=>{this.$emit("update:show",!1)}),s.bindEvents(this.attrs.listeners,this.overlay)},onDestroy(){this.$marker()?this.$marker().onRemoveInfo(this):this.overlay.close()},methods:{getOptions(){return{content:this.content(),position:this.position,offset:this.offset,zIndex:this.zIndex,maxWidth:this.maxWidth,borderClass:this.borderClass,disableAutoPan:this.disableAutoPan}},content(){return this.$el},$marker(){return P(M,this.$parent,k)},open(e){this.overlay.open(e)},close(){this.overlay.close()}}});function me(e,t,i,n,a,l){return r.openBlock(),r.createElementBlock("div",r.mergeProps({class:e.$options.name},e.attrs.binds),[r.renderSlot(e.$slots,"default")],16)}const ce=f(pe,[["render",me]]),ue=r.defineComponent({name:"tg-info-window",mixins:[p],inheritAttrs:!1,props:{show:m(Boolean),position:o(s.LatLng),maxWidth:o(Number),offset:o(Object),disableAutoPan:o(Boolean),"onUpdate:show":d()},emits:void 0,setup(e,{attrs:t}){return{attrs:u(t,e),overlay:h.lateinit()}},watch:{show(e){this.$marker()?this.$marker().onInfoShowChanged(this,e):e?this.overlay.open():this.overlay.close()},position(e){this.overlay.setPosition(e)},maxWidth(){this.recreate()},offset(){this.recreate()},disableAutoPan(){this.recreate()}},methods:{content(){return this.$el},$marker(){return P(M,this.$parent,k)},getOptions(){return{content:this.content(),position:this.position,maxWidth:this.maxWidth,offset:this.offset,disableAutoPan:this.disableAutoPan}}},onCreate(){this.overlay=this.$map.createInfoWindow(this.getOptions()),this.$marker()?this.$marker().onAddInfo(this):this.show&&this.overlay.open(),this.overlay.addEventListener("open",()=>{this.$emit("update:show",!0)}),this.overlay.addEventListener("close",()=>{this.$emit("update:show",!1)}),s.bindEvents(this.attrs.listeners,this.overlay)},onDestroy(){this.$marker()?this.$marker().onRemoveInfo(this):this.overlay.close()}});function fe(e,t,i,n,a,l){return r.withDirectives((r.openBlock(),r.createElementBlock("div",r.mergeProps({class:e.$options.name},e.attrs.binds),[r.renderSlot(e.$slots,"default")],16)),[[r.vShow,e.show]])}const ye=f(ue,[["render",fe]]),ve=r.defineComponent({name:"tg-label",mixins:[p],inheritAttrs:!1,props:{position:o(s.LatLng),offset:o(Object),zIndex:o(Number),mapPane:c(s.MapPane)},emits:void 0,setup(e,{attrs:t}){return{attrs:u(t),overlay:h.lateinit()}},watch:{position(e){this.overlay.setPosition(e)},offset(e){this.overlay.setOffset(e)},zIndex(e){this.overlay.setZIndex(e)},visible(e){this.overlay.setVisible(e)},mapPane(){this.recreate()}},methods:{content(){return this.$el},marker(){var e;return(e=this.$marker())==null?void 0:e.marker},$marker(){return P(M,this.$parent,k)},getOptions(){return{content:this.content(),position:this.position,offset:this.offset,zIndex:this.zIndex,mapPane:s.unwrapStringEnumValue(this.mapPane,s.MapPane)}}},onCreate(){this.overlay=this.$map.createLabel(this.getOptions()),this.$marker()?this.$marker().onAddLabel(this):this.$map.addOverlay(this.overlay),s.bindEvents(this.attrs.listeners,this.overlay)},onDestroy(){this.$marker()?this.$marker().onRemoveLabel(this):this.$map.removeOverlay(this.overlay)}});function ge(e,t,i,n,a,l){return r.openBlock(),r.createElementBlock("div",r.mergeProps({class:e.$options.name},e.attrs.binds),[r.renderSlot(e.$slots,"default")],16)}const be=f(ve,[["render",ge]]),Ce={paths:m(Array),clickable:o(Boolean),editable:o(Boolean),strokeColor:o(String),strokeOpacity:o(Number),strokeWeight:o(Number),visible:o(Boolean),zIndex:o(Number),fillColor:o(String),fillOpacity:o(Number),"onUpdate:paths":d()},$e=r.defineComponent({name:"tg-polygon",mixins:[p],inheritAttrs:!1,props:Ce,emits:void 0,setup(e,{attrs:t}){return{attrs:u(t,e),overlay:h.lateinit(),emittedPaths:void 0}},watch:{paths:{handler(e){if(this.emittedPaths!=null){const t=this.emittedPaths;if(this.emittedPaths=void 0,t.length===e.length&&t.every((i,n)=>i===r.toRaw(e[n])))return}this.overlay.setPaths(e)},deep:!0},clickable(){this.recreate()},editable(e){this.overlay.setEditable(e)},strokeColor(e){this.overlay.setStrokeColor(e)},strokeOpacity(e){this.overlay.setStrokeOpacity(e)},strokeWeight(e){this.overlay.setStrokeWeight(e)},fillColor(e){this.overlay.setFillColor(e)},fillOpacity(e){this.overlay.setFillOpacity(e)},visible(e){this.overlay.setVisible(e)},zIndex(e){this.overlay.setZIndex(e)}},onCreate(){this.overlay=this.$map.createPolygon(this),this.$map.addOverlay(this.overlay),s.bindEvents(this.attrs.listeners,this.overlay),this.attrs.listenerProps["update:paths"]&&this.overlay.addEventListener("paths-edited",()=>{this.$emit("update:paths",this.emittedPaths=this.overlay.getPaths())})},onDestroy(){this.$map.removeOverlay(this.overlay)}}),ke=r.defineComponent({name:"tg-polyline",mixins:[p],inheritAttrs:!1,props:{path:m(Array),icons:o(Array),clickable:o(Boolean),editable:o(Boolean),strokeColor:o(String),strokeOpacity:o(Number),strokeWeight:o(Number),visible:o(Boolean),zIndex:o(Number),"onUpdate:path":d()},emits:void 0,setup(e,{attrs:t}){return{attrs:u(t,e),overlay:h.lateinit(),emittedPath:void 0}},watch:{path:{handler(e){if(this.emittedPath!=null){const t=this.emittedPath;if(this.emittedPath=void 0,t===r.toRaw(e))return}this.overlay.setPath(e)},deep:!0},icons:{handler(){this.recreate()},deep:!0},clickable(){this.recreate()},editable(e){this.overlay.setEditable(e)},strokeColor(e){this.overlay.setStrokeColor(e)},strokeOpacity(e){this.overlay.setStrokeOpacity(e)},strokeWeight(e){this.overlay.setStrokeWeight(e)},visible(e){this.overlay.setVisible(e)},zIndex(e){this.overlay.setZIndex(e)}},onCreate(){this.overlay=this.$map.createPolyline(this),this.$map.addOverlay(this.overlay),s.bindEvents(this.attrs.listeners,this.overlay),this.attrs.listenerProps["update:path"]&&this.overlay.addEventListener("path-edited",()=>{this.$emit("update:path",this.emittedPath=this.overlay.getPath())})},onDestroy(){this.overlay.remove()}}),_e=r.defineComponent({name:"tg-rectangle",mixins:[p],inheritAttrs:!1,props:{bounds:m(Object),clickable:o(Boolean),editable:o(Boolean),strokeColor:o(String),strokeOpacity:o(Number),strokeWeight:o(Number),visible:o(Boolean),zIndex:o(Number),fillColor:o(String),fillOpacity:o(Number),"onUpdate:bounds":d()},emits:void 0,setup(e,{attrs:t}){return{attrs:u(t,e),overlay:h.lateinit(),emittedBounds:void 0}},watch:{bounds(e){if(this.emittedBounds!=null){const t=this.emittedBounds;if(this.emittedBounds=void 0,t.equals(e))return}this.overlay.setBounds(e)},clickable(){this.recreate()},editable(e){this.overlay.setEditable(e)},strokeColor(e){this.overlay.setStrokeColor(e)},strokeOpacity(e){this.overlay.setStrokeOpacity(e)},strokeWeight(e){this.overlay.setStrokeWeight(e)},fillColor(e){this.overlay.setFillColor(e)},fillOpacity(e){this.overlay.setFillOpacity(e)},visible(e){this.overlay.setVisible(e)},zIndex(e){this.overlay.setZIndex(e)}},onCreate(){this.overlay=this.$map.createRectangle(this),this.$map.addOverlay(this.overlay),s.bindEvents(this.attrs.listeners,this.overlay),this.attrs.listenerProps["update:bounds"]&&this.overlay.addEventListener("bounds-changed",()=>{this.$emit("update:bounds",this.emittedBounds=this.overlay.getBounds())})},onDestroy(){this.$map.removeOverlay(this.overlay)}}),Pe=["beforeUpdate","updated"],Te={install(e,t={}){if(t.enable!==!1){const i=r.defineComponent({beforeCreate(){const n=B()??"",l=(t.nameRegex||/^[A-Z]/).test(n)?y=>{t.hookNames?t.hookNames.includes(y)&&console.debug("[lifecycle]",n,y):Pe.includes(y)||console.debug("[lifecycle]",n,y)}:h.noop;l("beforeCreate"),this.__life_impl=l},created(){this.__life("created")},beforeMount(){this.__life("beforeMount")},mounted(){this.__life("mounted")},beforeUpdate(){this.__life("beforeUpdate")},updated(){this.__life("updated")},beforeUnmount(){this.__life("beforeUnmount")},unmounted(){this.__life("unmounted")},methods:{__life(n){this.__life_impl(n)}},onCreate(){this.__life("onCreate")},onDestroy(){this.__life("onDestroy")}});e.mixin(i)}}},Oe={install(e,t){s.setTgMapConfig(t);const i=e.config.optionMergeStrategies;i[v]=i[g]=(n,a)=>n?[...new Set([].concat(n,a))]:Array.isArray(a)?a:[a]}};exports.LifecycleLogPlugin=Te;exports.MIXIN_HOOK_CREATE=v;exports.MIXIN_HOOK_DESTROY=g;exports.MIXIN_MAP_NAME=T;exports.MapMixin=p;exports.TgCircle=re;exports.TgCustomControl=G;exports.TgElementOverlay=ae;exports.TgHeatmap=Q;exports.TgInfoBox=ce;exports.TgInfoWindow=ye;exports.TgLabel=be;exports.TgMap=k;exports.TgMapTypeControl=X;exports.TgMapWidget=H;exports.TgMarker=M;exports.TgMarkerClusterer=L;exports.TgPolygon=$e;exports.TgPolyline=ke;exports.TgRectangle=_e;exports.TgScaleControl=K;exports.TgStreetViewControl=J;exports.TgTrafficLayer=oe;exports.TgZoomControl=Y;exports.callHook=C;exports.computedSaveOnThis=N;exports.createEmptyVNode=$;exports.createPropertyObject=I;exports.createPropertyObjectTyped=x;exports.default=Oe;exports.eventProp=d;exports.extractVNodeFromSlotsByComponent=D;exports.findAncestorComponentByType=P;exports.findByComponentType=z;exports.isComponentByType=_;exports.optionalProp=o;exports.requiredProp=m;exports.safeAsComponent=S;exports.splitAttrs=E;exports.stringEnumProp=c;exports.stringUnionPropFromValues=w;exports.useEventLogMethods=V;exports.useSplittedAttrs=u;exports.useTgMapInner=O;Object.keys(s).forEach(e=>{e!=="default"&&!Object.prototype.hasOwnProperty.call(exports,e)&&Object.defineProperty(exports,e,{enumerable:!0,get:()=>s[e]})});
2
2
  //# sourceMappingURL=tg-map.cjs.map