@yimou6/common-ui 1.13.14 → 1.13.15

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (91) hide show
  1. package/cdn/index.cdn.js +26 -23
  2. package/cdn/index.cdn.js.map +1 -1
  3. package/cdn/index.cdn.mjs +25 -22
  4. package/cdn/index.cdn.mjs.map +1 -1
  5. package/cdn/index.css +1 -1
  6. package/es/components/index.d.ts +1 -0
  7. package/es/components/index.mjs +1 -0
  8. package/es/components/index.mjs.map +1 -1
  9. package/es/components/map/index.d.ts +190 -0
  10. package/es/components/map/index.mjs +8 -0
  11. package/es/components/map/index.mjs.map +1 -0
  12. package/es/components/map/src/map.d.ts +51 -0
  13. package/es/components/map/src/map.mjs +43 -0
  14. package/es/components/map/src/map.mjs.map +1 -0
  15. package/es/components/map/src/map.vue.d.ts +191 -0
  16. package/es/components/map/src/map.vue.mjs +6 -0
  17. package/es/components/map/src/map.vue.mjs.map +1 -0
  18. package/es/components/map/src/map.vue2.mjs +597 -0
  19. package/es/components/map/src/map.vue2.mjs.map +1 -0
  20. package/es/components/map/src/marker.png.mjs +4 -0
  21. package/es/components/map/src/marker.png.mjs.map +1 -0
  22. package/es/components/monitor-playback/src/monitor-playback.vue2.mjs.map +1 -1
  23. package/es/components/tzj-player/index.d.ts +0 -3657
  24. package/es/components/tzj-player/src/ctyun-player.vue.d.ts +0 -44
  25. package/es/components/tzj-player/src/ctyun-player.vue2.mjs +5 -11
  26. package/es/components/tzj-player/src/ctyun-player.vue2.mjs.map +1 -1
  27. package/es/components/tzj-player/src/easyPlayer.vue.d.ts +0 -22
  28. package/es/components/tzj-player/src/easyPlayer.vue2.mjs +8 -21
  29. package/es/components/tzj-player/src/easyPlayer.vue2.mjs.map +1 -1
  30. package/es/components/tzj-player/src/tzj-player.vue.d.ts +0 -3657
  31. package/es/components/tzj-player/src/tzj-player.vue2.mjs +11 -37
  32. package/es/components/tzj-player/src/tzj-player.vue2.mjs.map +1 -1
  33. package/es/components/tzj-player/src/yunzhiyanPlayer.vue.d.ts +0 -22
  34. package/es/index.mjs +1 -0
  35. package/es/index.mjs.map +1 -1
  36. package/es/installer.mjs +3 -1
  37. package/es/installer.mjs.map +1 -1
  38. package/es/node_modules/.pnpm/@element-plus_icons-vue@2.3.2_vue@3.5.12_typescript@5.9.2_/node_modules/@element-plus/icons-vue/dist/index.mjs +4876 -0
  39. package/es/node_modules/.pnpm/@element-plus_icons-vue@2.3.2_vue@3.5.12_typescript@5.9.2_/node_modules/@element-plus/icons-vue/dist/index.mjs.map +1 -0
  40. package/es/utils/util.mjs +4 -4
  41. package/es/utils/util.mjs.map +1 -1
  42. package/global.d.ts +1 -0
  43. package/lib/components/index.d.ts +1 -0
  44. package/lib/components/index.js +25 -23
  45. package/lib/components/index.js.map +1 -1
  46. package/lib/components/map/index.d.ts +190 -0
  47. package/lib/components/map/index.js +13 -0
  48. package/lib/components/map/index.js.map +1 -0
  49. package/lib/components/map/src/map.d.ts +51 -0
  50. package/lib/components/map/src/map.js +45 -0
  51. package/lib/components/map/src/map.js.map +1 -0
  52. package/lib/components/map/src/map.vue.d.ts +191 -0
  53. package/lib/components/map/src/map.vue.js +10 -0
  54. package/lib/components/map/src/map.vue.js.map +1 -0
  55. package/lib/components/map/src/map.vue2.js +601 -0
  56. package/lib/components/map/src/map.vue2.js.map +1 -0
  57. package/lib/components/map/src/marker.png.js +8 -0
  58. package/lib/components/map/src/marker.png.js.map +1 -0
  59. package/lib/components/monitor-playback/src/monitor-playback.vue2.js.map +1 -1
  60. package/lib/components/tzj-player/index.d.ts +0 -3657
  61. package/lib/components/tzj-player/src/ctyun-player.vue.d.ts +0 -44
  62. package/lib/components/tzj-player/src/ctyun-player.vue2.js +3 -9
  63. package/lib/components/tzj-player/src/ctyun-player.vue2.js.map +1 -1
  64. package/lib/components/tzj-player/src/easyPlayer.vue.d.ts +0 -22
  65. package/lib/components/tzj-player/src/easyPlayer.vue2.js +7 -20
  66. package/lib/components/tzj-player/src/easyPlayer.vue2.js.map +1 -1
  67. package/lib/components/tzj-player/src/tzj-player.vue.d.ts +0 -3657
  68. package/lib/components/tzj-player/src/tzj-player.vue2.js +10 -36
  69. package/lib/components/tzj-player/src/tzj-player.vue2.js.map +1 -1
  70. package/lib/components/tzj-player/src/yunzhiyanPlayer.vue.d.ts +0 -22
  71. package/lib/index.js +29 -27
  72. package/lib/index.js.map +1 -1
  73. package/lib/installer.js +3 -1
  74. package/lib/installer.js.map +1 -1
  75. package/lib/node_modules/.pnpm/@element-plus_icons-vue@2.3.2_vue@3.5.12_typescript@5.9.2_/node_modules/@element-plus/icons-vue/dist/index.js +5170 -0
  76. package/lib/node_modules/.pnpm/@element-plus_icons-vue@2.3.2_vue@3.5.12_typescript@5.9.2_/node_modules/@element-plus/icons-vue/dist/index.js.map +1 -0
  77. package/lib/utils/util.js +4 -4
  78. package/lib/utils/util.js.map +1 -1
  79. package/package.json +1 -1
  80. package/theme-default/i-map.css +1 -0
  81. package/theme-default/index.css +1 -1
  82. package/es/components/tzj-player/src/newPlayer.vue.d.ts +0 -7
  83. package/es/components/tzj-player/src/newPlayer.vue.mjs +0 -6
  84. package/es/components/tzj-player/src/newPlayer.vue.mjs.map +0 -1
  85. package/es/components/tzj-player/src/newPlayer.vue2.mjs +0 -85
  86. package/es/components/tzj-player/src/newPlayer.vue2.mjs.map +0 -1
  87. package/lib/components/tzj-player/src/newPlayer.vue.d.ts +0 -7
  88. package/lib/components/tzj-player/src/newPlayer.vue.js +0 -10
  89. package/lib/components/tzj-player/src/newPlayer.vue.js.map +0 -1
  90. package/lib/components/tzj-player/src/newPlayer.vue2.js +0 -89
  91. package/lib/components/tzj-player/src/newPlayer.vue2.js.map +0 -1
@@ -1,8 +1,7 @@
1
- import { defineComponent, toRefs, shallowRef, watch, computed, openBlock, createElementBlock, createCommentVNode, createElementVNode, toDisplayString, createBlock, Fragment, resolveDynamicComponent, mergeProps, createVNode } from 'vue';
1
+ import { defineComponent, toRefs, shallowRef, watch, computed, openBlock, createElementBlock, createCommentVNode, createElementVNode, toDisplayString, createBlock, resolveDynamicComponent, mergeProps } from 'vue';
2
2
  import { debounce } from 'lodash-es';
3
3
  import './ctyun-player.vue.mjs';
4
4
  import './easyPlayer.vue.mjs';
5
- import './errorPage.vue.mjs';
6
5
  import { TzjPlayerProps, isSupportedProtocol, getVideoType } from './tzj-player.mjs';
7
6
  import './ysPlayer.vue.mjs';
8
7
  import './yunzhiyanPlayer.vue.mjs';
@@ -10,7 +9,6 @@ import _sfc_main$1 from './yunzhiyanPlayer.vue2.mjs';
10
9
  import _sfc_main$2 from './ysPlayer.vue2.mjs';
11
10
  import _sfc_main$3 from './ctyun-player.vue2.mjs';
12
11
  import _sfc_main$4 from './easyPlayer.vue2.mjs';
13
- import _sfc_main$5 from './errorPage.vue2.mjs';
14
12
 
15
13
  const _hoisted_1 = { class: "i-tzj-player" };
16
14
  const _hoisted_2 = { class: "i-tzj-player__header" };
@@ -84,9 +82,6 @@ var _sfc_main = /* @__PURE__ */ defineComponent({
84
82
  }
85
83
  return null;
86
84
  });
87
- const shouldShowPlayer = computed(() => {
88
- return !errorState.value && playerComponent.value;
89
- });
90
85
  __expose({
91
86
  /**
92
87
  * 播放视频
@@ -155,37 +150,16 @@ var _sfc_main = /* @__PURE__ */ defineComponent({
155
150
  /* TEXT */
156
151
  )
157
152
  ]),
158
- createCommentVNode(" \u9519\u8BEF\u72B6\u6001\u663E\u793A "),
159
- errorState.value ? (openBlock(), createBlock(_sfc_main$5, {
160
- key: 0,
161
- message: errorState.value.message
162
- }, null, 8, ["message"])) : shouldShowPlayer.value ? (openBlock(), createElementBlock(
163
- Fragment,
164
- { key: 1 },
165
- [
166
- createCommentVNode(" \u64AD\u653E\u5668\u7EC4\u4EF6 "),
167
- (openBlock(), createBlock(
168
- resolveDynamicComponent(playerComponent.value),
169
- mergeProps({
170
- ref_key: "compRef",
171
- ref: compRef
172
- }, props),
173
- null,
174
- 16
175
- /* FULL_PROPS */
176
- ))
177
- ],
178
- 2112
179
- /* STABLE_FRAGMENT, DEV_ROOT_FRAGMENT */
180
- )) : (openBlock(), createElementBlock(
181
- Fragment,
182
- { key: 2 },
183
- [
184
- createCommentVNode(" \u65E0\u53EF\u7528\u64AD\u653E\u5668 "),
185
- createVNode(_sfc_main$5, { message: "\u65E0\u4FE1\u53F7" })
186
- ],
187
- 2112
188
- /* STABLE_FRAGMENT, DEV_ROOT_FRAGMENT */
153
+ createCommentVNode(" \u64AD\u653E\u5668\u7EC4\u4EF6 "),
154
+ (openBlock(), createBlock(
155
+ resolveDynamicComponent(playerComponent.value),
156
+ mergeProps({
157
+ ref_key: "compRef",
158
+ ref: compRef
159
+ }, props),
160
+ null,
161
+ 16
162
+ /* FULL_PROPS */
189
163
  ))
190
164
  ]);
191
165
  };
@@ -1 +1 @@
1
- {"version":3,"file":"tzj-player.vue2.mjs","sources":["../../../../../../../packages/components/tzj-player/src/tzj-player.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { debounce } from \"lodash-es\";\nimport { computed, shallowRef, toRefs, watch } from \"vue\";\nimport CtyunPlayer from \"./ctyun-player.vue\";\nimport EasyPlayer from \"./easyPlayer.vue\";\nimport ErrorPage from \"./errorPage.vue\";\nimport {\n getVideoType,\n isSupportedProtocol,\n TzjPlayerProps,\n} from \"./tzj-player\";\nimport YsPlayer from \"./ysPlayer.vue\";\nimport YunzhiyanPlayer from \"./yunzhiyanPlayer.vue\";\n\ndefineOptions({\n name: \"ITzjPlayer\",\n});\n\nconst props = defineProps(TzjPlayerProps);\nconst { url, platformTypeName, accessToken } = toRefs(props);\n\nconst compRef = shallowRef();\n\n// 防抖处理组件渲染更新,避免频繁切换播放器类型\nconst updatePlayerComponent = debounce(() => {\n // 强制更新组件,销毁旧实例\n if (compRef.value) {\n compRef.value.destroy?.();\n }\n}, 300);\n\n// 监听URL变化,使用防抖处理\nwatch(\n () => [url.value, platformTypeName.value, accessToken.value],\n ([newUrl, newPlatform, newToken], [oldUrl, oldPlatform, oldToken]) => {\n // 只有当值真正发生变化时才更新\n if (\n newUrl !== oldUrl ||\n newPlatform !== oldPlatform ||\n newToken !== oldToken\n ) {\n // 更新播放器组件\n updatePlayerComponent();\n }\n },\n);\n\n/**\n * 平台类型映射表,提升可维护性\n */\nconst PLATFORM_COMPONENTS = {\n 云智眼: YunzhiyanPlayer,\n 萤石云: YsPlayer,\n 天翼云: CtyunPlayer,\n // hls: XgPlayer,\n} as const;\n\n/**\n * 计算当前播放器组件类型\n * 使用计算属性避免重复计算,提升性能\n */\nconst playerComponent = computed(() => {\n // 优先使用指定的平台类型\n if (platformTypeName.value) {\n return (\n PLATFORM_COMPONENTS[\n platformTypeName.value as keyof typeof PLATFORM_COMPONENTS\n ] || EasyPlayer\n );\n }\n\n // 未指定平台类型时,根据URL自动判断\n if (!url.value) {\n return null;\n }\n\n // 检查协议支持性\n if (!isSupportedProtocol(url.value)) {\n return null;\n }\n\n // ezopen协议使用萤石云播放器\n if (url.value.includes(\"ezopen\")) {\n return YsPlayer;\n }\n\n // 根据视频类型选择播放器\n const videoType = getVideoType(url.value);\n return videoType ? EasyPlayer : null;\n});\n\n/**\n * 计算错误状态信息\n * 统一错误状态管理,提升用户体验\n */\nconst errorState = computed(() => {\n // 云智眼平台不需要URL\n if (\n platformTypeName.value === \"云智眼\" ||\n platformTypeName.value === \"天翼云\"\n ) {\n return null;\n }\n\n // 检查URL是否存在\n if (!url.value) {\n return {\n type: \"no-url\",\n message: \"无视频地址\",\n };\n }\n // 检查协议支持性\n if (!isSupportedProtocol(url.value)) {\n return {\n type: \"unsupported-protocol\",\n message: \"不支持该视频协议\",\n };\n }\n\n // 萤石云平台需要accessToken\n if (\n (platformTypeName.value === \"萤石云\" || url.value.includes(\"ezopen\")) &&\n !accessToken.value\n ) {\n return {\n type: \"no-token\",\n message: \"缺少访问令牌\",\n };\n }\n\n return null;\n});\n\n/**\n * 计算是否显示播放器组件\n */\nconst shouldShowPlayer = computed(() => {\n return !errorState.value && playerComponent.value;\n});\n\n/**\n * 暴露的方法,增加错误处理\n */\ndefineExpose({\n /**\n * 播放视频\n * @param options 播放选项\n */\n play(options?: any) {\n if (!compRef.value) {\n props.debug && console.warn(\"[TzjPlayer] 播放器组件未初始化\");\n return;\n }\n compRef.value?.play(options);\n },\n\n /**\n * 销毁播放器\n */\n destroy() {\n if (!compRef.value) {\n props.debug && console.warn(\"[TzjPlayer] 播放器组件未初始化\");\n return;\n }\n compRef.value?.destroy();\n },\n\n /**\n * 调整播放器尺寸\n */\n resize() {\n if (!compRef.value) {\n props.debug && console.warn(\"[TzjPlayer] 播放器组件未初始化\");\n return;\n }\n compRef.value?.resize();\n },\n\n /**\n * 获取当前播放器类型\n */\n getPlayerType() {\n return playerComponent.value?.name || null;\n },\n\n /**\n * 获取错误状态\n */\n getErrorState() {\n return errorState.value;\n },\n});\n</script>\n\n<template>\n <div class=\"i-tzj-player\">\n <!-- 头部标题栏 -->\n <div class=\"i-tzj-player__header\">\n <i class=\"iconfont icon-shexiangtou4\" />\n <span>{{ areaName || deviceSerial || \"摄像头\" }}</span>\n </div>\n\n <!-- 错误状态显示 -->\n <ErrorPage v-if=\"errorState\" :message=\"errorState.message\" />\n\n <!-- 播放器组件 -->\n <component\n :is=\"playerComponent\"\n v-else-if=\"shouldShowPlayer\"\n ref=\"compRef\"\n v-bind=\"props\"\n />\n\n <!-- 无可用播放器 -->\n <ErrorPage v-else message=\"无信号\" />\n </div>\n</template>\n"],"names":["YunzhiyanPlayer","YsPlayer","CtyunPlayer","EasyPlayer","_openBlock","_createElementBlock","_createCommentVNode","_createElementVNode","_toDisplayString","areaName","deviceSerial","_createBlock","ErrorPage","_Fragment","_resolveDynamicComponent","_mergeProps","_createVNode"],"mappings":"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"}
1
+ {"version":3,"file":"tzj-player.vue2.mjs","sources":["../../../../../../../packages/components/tzj-player/src/tzj-player.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { debounce } from \"lodash-es\";\nimport { computed, shallowRef, toRefs, watch } from \"vue\";\nimport CtyunPlayer from \"./ctyun-player.vue\";\nimport EasyPlayer from \"./easyPlayer.vue\";\nimport {\n getVideoType,\n isSupportedProtocol,\n TzjPlayerProps,\n} from \"./tzj-player\";\nimport YsPlayer from \"./ysPlayer.vue\";\nimport YunzhiyanPlayer from \"./yunzhiyanPlayer.vue\";\n\ndefineOptions({\n name: \"ITzjPlayer\",\n});\n\nconst props = defineProps(TzjPlayerProps);\nconst { url, platformTypeName, accessToken } = toRefs(props);\n\nconst compRef = shallowRef();\n\n// 防抖处理组件渲染更新,避免频繁切换播放器类型\nconst updatePlayerComponent = debounce(() => {\n // 强制更新组件,销毁旧实例\n if (compRef.value) {\n compRef.value.destroy?.();\n }\n}, 300);\n\n// 监听URL变化,使用防抖处理\nwatch(\n () => [url.value, platformTypeName.value, accessToken.value],\n ([newUrl, newPlatform, newToken], [oldUrl, oldPlatform, oldToken]) => {\n // 只有当值真正发生变化时才更新\n if (\n newUrl !== oldUrl ||\n newPlatform !== oldPlatform ||\n newToken !== oldToken\n ) {\n // 更新播放器组件\n updatePlayerComponent();\n }\n },\n);\n\n/**\n * 平台类型映射表,提升可维护性\n */\nconst PLATFORM_COMPONENTS = {\n 云智眼: YunzhiyanPlayer,\n 萤石云: YsPlayer,\n 天翼云: CtyunPlayer,\n // hls: XgPlayer,\n} as const;\n\n/**\n * 计算当前播放器组件类型\n * 使用计算属性避免重复计算,提升性能\n */\nconst playerComponent = computed(() => {\n // 优先使用指定的平台类型\n if (platformTypeName.value) {\n return (\n PLATFORM_COMPONENTS[\n platformTypeName.value as keyof typeof PLATFORM_COMPONENTS\n ] || EasyPlayer\n );\n }\n\n // 未指定平台类型时,根据URL自动判断\n if (!url.value) {\n return null;\n }\n\n // 检查协议支持性\n if (!isSupportedProtocol(url.value)) {\n return null;\n }\n\n // ezopen协议使用萤石云播放器\n if (url.value.includes(\"ezopen\")) {\n return YsPlayer;\n }\n\n // 根据视频类型选择播放器\n const videoType = getVideoType(url.value);\n return videoType ? EasyPlayer : null;\n});\n\n/**\n * 计算错误状态信息\n * 统一错误状态管理,提升用户体验\n */\nconst errorState = computed(() => {\n // 云智眼平台不需要URL\n if (\n platformTypeName.value === \"云智眼\" ||\n platformTypeName.value === \"天翼云\"\n ) {\n return null;\n }\n\n // 检查URL是否存在\n if (!url.value) {\n return {\n type: \"no-url\",\n message: \"无视频地址\",\n };\n }\n // 检查协议支持性\n if (!isSupportedProtocol(url.value)) {\n return {\n type: \"unsupported-protocol\",\n message: \"不支持该视频协议\",\n };\n }\n\n // 萤石云平台需要accessToken\n if (\n (platformTypeName.value === \"萤石云\" || url.value.includes(\"ezopen\")) &&\n !accessToken.value\n ) {\n return {\n type: \"no-token\",\n message: \"缺少访问令牌\",\n };\n }\n\n return null;\n});\n\n/**\n * 暴露的方法,增加错误处理\n */\ndefineExpose({\n /**\n * 播放视频\n * @param options 播放选项\n */\n play(options?: any) {\n if (!compRef.value) {\n props.debug && console.warn(\"[TzjPlayer] 播放器组件未初始化\");\n return;\n }\n compRef.value?.play(options);\n },\n\n /**\n * 销毁播放器\n */\n destroy() {\n if (!compRef.value) {\n props.debug && console.warn(\"[TzjPlayer] 播放器组件未初始化\");\n return;\n }\n compRef.value?.destroy();\n },\n\n /**\n * 调整播放器尺寸\n */\n resize() {\n if (!compRef.value) {\n props.debug && console.warn(\"[TzjPlayer] 播放器组件未初始化\");\n return;\n }\n compRef.value?.resize();\n },\n\n /**\n * 获取当前播放器类型\n */\n getPlayerType() {\n return playerComponent.value?.name || null;\n },\n\n /**\n * 获取错误状态\n */\n getErrorState() {\n return errorState.value;\n },\n});\n</script>\n\n<template>\n <div class=\"i-tzj-player\">\n <!-- 头部标题栏 -->\n <div class=\"i-tzj-player__header\">\n <i class=\"iconfont icon-shexiangtou4\" />\n <span>{{ areaName || deviceSerial || \"摄像头\" }}</span>\n </div>\n\n <!-- 播放器组件 -->\n <component :is=\"playerComponent\" ref=\"compRef\" v-bind=\"props\" />\n </div>\n</template>\n"],"names":["YunzhiyanPlayer","YsPlayer","CtyunPlayer","EasyPlayer","_openBlock","_createElementBlock","_createCommentVNode","_createElementVNode","_toDisplayString","areaName","deviceSerial","_createBlock","_resolveDynamicComponent","_mergeProps"],"mappings":"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"}
@@ -1473,28 +1473,6 @@ declare const _default: import("vue").DefineComponent<import("vue").ExtractPropT
1473
1473
  createPlayer: () => Promise<void>;
1474
1474
  startPlayer: () => Promise<void>;
1475
1475
  destroy: (flag?: boolean) => void;
1476
- ErrorPage: import("vue").DefineComponent<import("vue").ExtractPropTypes<{
1477
- videoName: {
1478
- type: StringConstructor;
1479
- default: string;
1480
- };
1481
- message: {
1482
- type: StringConstructor;
1483
- default: string;
1484
- };
1485
- }>, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<{
1486
- videoName: {
1487
- type: StringConstructor;
1488
- default: string;
1489
- };
1490
- message: {
1491
- type: StringConstructor;
1492
- default: string;
1493
- };
1494
- }>> & Readonly<{}>, {
1495
- message: string;
1496
- videoName: string;
1497
- }, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
1498
1476
  }, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, ("error" | "play" | "pause" | "videoInfo" | "timeout" | "mute")[], "error" | "play" | "pause" | "videoInfo" | "timeout" | "mute", import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<{
1499
1477
  url: {
1500
1478
  type: StringConstructor;
package/es/index.mjs CHANGED
@@ -15,6 +15,7 @@ export { IIconSelect } from './components/icon-select/index.mjs';
15
15
  export { IImageVerification } from './components/image-verification/index.mjs';
16
16
  export { ILink } from './components/link/index.mjs';
17
17
  export { ILivePlayer } from './components/live-player/index.mjs';
18
+ export { IMap } from './components/map/index.mjs';
18
19
  export { IMonitorPlayback } from './components/monitor-playback/index.mjs';
19
20
  export { IPageHeader } from './components/page-header/index.mjs';
20
21
  export { IRadio } from './components/radio/index.mjs';
package/es/index.mjs.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"index.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
package/es/installer.mjs CHANGED
@@ -21,6 +21,7 @@ import { ILink } from './components/link/index.mjs';
21
21
  import { IMonitorPlayback } from './components/monitor-playback/index.mjs';
22
22
  import { ITzjPlayer } from './components/tzj-player/index.mjs';
23
23
  import { IDatePicker } from './components/date-picker/index.mjs';
24
+ import { IMap } from './components/map/index.mjs';
24
25
 
25
26
  var __defProp = Object.defineProperty;
26
27
  var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
@@ -48,7 +49,8 @@ const component = [
48
49
  ILink,
49
50
  IMonitorPlayback,
50
51
  ITzjPlayer,
51
- IDatePicker
52
+ IDatePicker,
53
+ IMap
52
54
  ];
53
55
  const install = /* @__PURE__ */ __name(function(app, _options) {
54
56
  component.forEach((i) => app.use(i, _options));
@@ -1 +1 @@
1
- {"version":3,"file":"installer.mjs","sources":["../../../../packages/installer.ts"],"sourcesContent":["import type { App, Plugin } from \"vue\";\n\nimport {\n ICheckbox,\n IDatePicker,\n IDescriptionItem,\n IDescriptions,\n IDialog,\n IDivider,\n IDrawer,\n IForm,\n IIconSelect,\n IImageVerification,\n ILink,\n ILivePlayer,\n IPageHeader,\n IRadio,\n ISearch,\n ISegmented,\n ISelect,\n ISplitPane,\n ITable,\n ITenantEnterprise,\n ITextButton,\n ITextButtonGroup,\n IMonitorPlayback,\n ITzjPlayer,\n} from \"./components\";\n\nconst component = [\n IForm,\n ISelect,\n IRadio,\n ICheckbox,\n IDivider,\n IDrawer,\n IIconSelect,\n IImageVerification,\n ITextButton,\n ITextButtonGroup,\n IPageHeader,\n ISearch,\n ITable,\n ISplitPane,\n ITenantEnterprise,\n ISegmented,\n IDescriptions,\n IDescriptionItem,\n ILivePlayer,\n IDialog,\n ILink,\n IMonitorPlayback,\n ITzjPlayer,\n IDatePicker,\n] as Plugin[];\n\nexport const install = function (app: App, _options?: any) {\n component.forEach((i) => app.use(i, _options));\n};\n\nexport default {\n install,\n};\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AA6BA,MAAM,SAAY,GAAA;AAAA,EAChB,KAAA;AAAA,EACA,OAAA;AAAA,EACA,MAAA;AAAA,EACA,SAAA;AAAA,EACA,QAAA;AAAA,EACA,OAAA;AAAA,EACA,WAAA;AAAA,EACA,kBAAA;AAAA,EACA,WAAA;AAAA,EACA,gBAAA;AAAA,EACA,WAAA;AAAA,EACA,OAAA;AAAA,EACA,MAAA;AAAA,EACA,UAAA;AAAA,EACA,iBAAA;AAAA,EACA,UAAA;AAAA,EACA,aAAA;AAAA,EACA,gBAAA;AAAA,EACA,WAAA;AAAA,EACA,OAAA;AAAA,EACA,KAAA;AAAA,EACA,gBAAA;AAAA,EACA,UAAA;AAAA,EACA;AACF,CAAA;AAEa,MAAA,OAAA,mBAAoB,MAAA,CAAA,SAAA,GAAA,EAAU,QAAgB,EAAA;AACzD,EAAA,SAAA,CAAU,QAAQ,CAAC,CAAA,KAAM,IAAI,GAAI,CAAA,CAAA,EAAG,QAAQ,CAAC,CAAA;AAC/C,CAFuB,EAAA,SAAA;AAIvB,gBAAe;AAAA,EACb;AACF,CAAA;;;;"}
1
+ {"version":3,"file":"installer.mjs","sources":["../../../../packages/installer.ts"],"sourcesContent":["import type { App, Plugin } from \"vue\";\n\nimport {\n ICheckbox,\n IDatePicker,\n IDescriptionItem,\n IDescriptions,\n IDialog,\n IDivider,\n IDrawer,\n IForm,\n IIconSelect,\n IImageVerification,\n ILink,\n ILivePlayer,\n IMap,\n IMonitorPlayback,\n IPageHeader,\n IRadio,\n ISearch,\n ISegmented,\n ISelect,\n ISplitPane,\n ITable,\n ITenantEnterprise,\n ITextButton,\n ITextButtonGroup,\n ITzjPlayer,\n} from \"./components\";\n\nconst component = [\n IForm,\n ISelect,\n IRadio,\n ICheckbox,\n IDivider,\n IDrawer,\n IIconSelect,\n IImageVerification,\n ITextButton,\n ITextButtonGroup,\n IPageHeader,\n ISearch,\n ITable,\n ISplitPane,\n ITenantEnterprise,\n ISegmented,\n IDescriptions,\n IDescriptionItem,\n ILivePlayer,\n IDialog,\n ILink,\n IMonitorPlayback,\n ITzjPlayer,\n IDatePicker,\n IMap,\n] as Plugin[];\n\nexport const install = function (app: App, _options?: any) {\n component.forEach((i) => app.use(i, _options));\n};\n\nexport default {\n install,\n};\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;AA8BA,MAAM,SAAY,GAAA;AAAA,EAChB,KAAA;AAAA,EACA,OAAA;AAAA,EACA,MAAA;AAAA,EACA,SAAA;AAAA,EACA,QAAA;AAAA,EACA,OAAA;AAAA,EACA,WAAA;AAAA,EACA,kBAAA;AAAA,EACA,WAAA;AAAA,EACA,gBAAA;AAAA,EACA,WAAA;AAAA,EACA,OAAA;AAAA,EACA,MAAA;AAAA,EACA,UAAA;AAAA,EACA,iBAAA;AAAA,EACA,UAAA;AAAA,EACA,aAAA;AAAA,EACA,gBAAA;AAAA,EACA,WAAA;AAAA,EACA,OAAA;AAAA,EACA,KAAA;AAAA,EACA,gBAAA;AAAA,EACA,UAAA;AAAA,EACA,WAAA;AAAA,EACA;AACF,CAAA;AAEa,MAAA,OAAA,mBAAoB,MAAA,CAAA,SAAA,GAAA,EAAU,QAAgB,EAAA;AACzD,EAAA,SAAA,CAAU,QAAQ,CAAC,CAAA,KAAM,IAAI,GAAI,CAAA,CAAA,EAAG,QAAQ,CAAC,CAAA;AAC/C,CAFuB,EAAA,SAAA;AAIvB,gBAAe;AAAA,EACb;AACF,CAAA;;;;"}