leiting-bim 2.1.133 → 2.1.136

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 (28) hide show
  1. package/leiting-bim.es.js +1 -1
  2. package/leiting-bim.umd.js +10 -10
  3. package/leitingbim.css +1 -1
  4. package/package.json +1 -1
  5. package/plugins/cesium-core/dist/cesium-core.mjs +1505 -1315
  6. package/plugins/cesium-core/dist/cesium-core.mjs.map +1 -1
  7. package/plugins/cesium-core/dist/cesium-core.umd.js +25 -25
  8. package/plugins/cesium-core/dist/cesium-core.umd.js.map +1 -1
  9. package/plugins/cesium-core/dist/components/HtmlOverlayLabelPool.d.ts +36 -0
  10. package/plugins/cesium-core/dist/components/draw/handlers/LineDrawer.d.ts +1 -0
  11. package/plugins/cesium-core/dist/components/draw/handlers/PolygonDrawer.d.ts +1 -0
  12. package/plugins/cesium-core/package.json +1 -1
  13. package/plugins/cesium-vue/dist/HtmlOverlayLabelPool-CbiNlyAM.js +510 -0
  14. package/plugins/cesium-vue/dist/HtmlOverlayLabelPool-CbiNlyAM.js.map +1 -0
  15. package/plugins/cesium-vue/dist/cesium-vue/src/components/marker-bubble/index.d.ts +87 -1
  16. package/plugins/cesium-vue/dist/cesium-vue/src/components/marker-manage/index.d.ts +12 -0
  17. package/plugins/cesium-vue/dist/cesium-vue/src/index.d.ts +3 -2
  18. package/plugins/cesium-vue/dist/components/marker-bubble.js +200 -73
  19. package/plugins/cesium-vue/dist/components/marker-bubble.js.map +1 -1
  20. package/plugins/cesium-vue/dist/components/marker-manage.js +536 -511
  21. package/plugins/cesium-vue/dist/components/marker-manage.js.map +1 -1
  22. package/plugins/cesium-vue/dist/components/measurement.js +1 -1
  23. package/plugins/cesium-vue/dist/index.js +39 -37
  24. package/plugins/cesium-vue/dist/index.js.map +1 -1
  25. package/plugins/cesium-vue/package.json +1 -1
  26. package/plugins/theme-chalk/dist/theme-chalk.css +33 -0
  27. package/plugins/theme-chalk/package.json +1 -1
  28. package/plugins/utils/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"marker-bubble.js","sources":["../../src/components/marker-bubble/src/markerBubble.ts","../../src/components/marker-bubble/src/MarkerBubble.vue","../../src/components/marker-bubble/index.ts"],"sourcesContent":["import { ExtractPropTypes, PropType } from 'vue';\r\n\r\nexport type OtherOffset = { x: number; y: number };\r\n\r\nexport const markerBubbleProps = {\r\n text: { type: String, default: '文字' },\r\n textStyle: {\r\n type: Object,\r\n default: () => ({}),\r\n },\r\n lineStyle: {\r\n type: Object,\r\n default: () => ({}),\r\n },\r\n isCanDraggable: {\r\n type: Boolean,\r\n default: false,\r\n },\r\n onCanDraggable: {\r\n type: Function as PropType<() => boolean>,\r\n },\r\n pixelOffset: {\r\n type: Object as PropType<OtherOffset>,\r\n default: () => ({ x: 0, y: 0 }),\r\n },\r\n otherOffset: {\r\n type: Object as PropType<OtherOffset>,\r\n default: () => ({ x: 0, y: 0 }),\r\n },\r\n onSetOtherOffset: {\r\n type: Function as PropType<(offset: OtherOffset) => void>,\r\n },\r\n\r\n} as const;\r\n\r\nexport type MarkerBubbleProps = ExtractPropTypes<typeof markerBubbleProps>;\r\n","<template>\r\n <div :class=\"bem.b('bubble')\">\r\n <div ref=\"el\" :style=\"nameTransform\">\r\n <div :class=\"bem.be('bubble', 'name')\" v-if=\"props.text\" :style=\"props.textStyle\">\r\n {{ props.text }}\r\n </div>\r\n </div>\r\n <div :class=\"bem.be('bubble', 'line')\" :style=\"lineStyle\"></div>\r\n </div>\r\n</template>\r\n<script lang=\"ts\" setup>\r\n import { createNamespace, prefix } from '../../../../../utils/create';\r\n import { markerBubbleProps } from './markerBubble';\r\n import { computed, ref } from 'vue';\r\n import { useElementSize, useDraggable, useMouseInElement } from '@vueuse/core';\r\n defineOptions({ name: `${prefix}-marker` });\r\n const props = defineProps(markerBubbleProps);\r\n const bem = createNamespace('marker');\r\n\r\n const emit = defineEmits(['setOtherOffset']);\r\n const el = ref();\r\n const { width, height } = useElementSize(el);\r\n const draggable = ref(false);\r\n const lineStyle = computed(() => {\r\n let otherOffsetX = props.otherOffset?.x || 0;\r\n let otherOffsetY = props.otherOffset?.y || 0;\r\n if (isMove.value && (props.isCanDraggable || draggable.value)) {\r\n otherOffsetX = currX.value || 0;\r\n otherOffsetY = currY.value || 0;\r\n }\r\n\r\n let XF = (props.pixelOffset?.x || 0) + otherOffsetX;\r\n let YF = (props.pixelOffset?.y || 0) + otherOffsetY;\r\n let X = 0;\r\n let Y = 0;\r\n let XL = X + XF;\r\n let XM = X + XF + width.value / 2;\r\n let XR = X + XF + width.value;\r\n let YT = Y + YF;\r\n let YM = Y + YF + height.value / 2;\r\n let YB = Y + YF + height.value;\r\n let DX1 = 0;\r\n let DY1 = 0;\r\n let DX2 = 0;\r\n let DY2 = 0;\r\n let arrowW = 0;\r\n let arrowH = 0;\r\n let arrowXF = 0;\r\n let arrowYF = 0;\r\n let interval = 24;\r\n let PML = 4;\r\n let borderRadius = 4;\r\n let EDGE = '';\r\n let directionX = '';\r\n let directionY = '';\r\n //计算动态点位\r\n if (X < XL && Y >= YT && Y <= YB) {\r\n //点在矩形左边\r\n DX1 = XL;\r\n DX2 = XL;\r\n let PY = Y < YM ? YT : YM;\r\n DY1 = PY + PML;\r\n DY2 = PY + PML + Math.min(interval, height.value / 2 - PML - borderRadius);\r\n // DY1 = PY + PML;\r\n // DY2 = PY + PML + interval;\r\n EDGE = 'left';\r\n } else if (X > XR && Y >= YT && Y <= YB) {\r\n //点在矩形右边\r\n DX1 = XR;\r\n DX2 = XR;\r\n let PY = Y < YM ? YT : YM;\r\n DY1 = PY + PML;\r\n DY2 = PY + PML + Math.min(interval, height.value / 2 - PML - borderRadius);\r\n // DY1 = PY + PML;\r\n // DY2 = PY + PML + interval;\r\n EDGE = 'right';\r\n } else if (Y < YT) {\r\n //点在矩形上方\r\n DY1 = YT;\r\n DY2 = YT;\r\n let PX = X < XM ? XL : XM;\r\n DX1 = PX + PML;\r\n DX2 = PX + PML + Math.min(interval, width.value / 2 - PML - borderRadius);\r\n // DX1 = PX + PML;\r\n // DX2 = PX + PML + interval;\r\n EDGE = 'top';\r\n } else if (Y > YB) {\r\n //点在矩形下方\r\n DY1 = YB;\r\n DY2 = YB;\r\n let PX = X < XM ? XL : XM;\r\n DX1 = PX + PML;\r\n DX2 = PX + PML + Math.min(interval, width.value / 2 - PML - borderRadius);\r\n // DX1 = PX + PML;\r\n // DX2 = PX + PML + interval;\r\n EDGE = 'bottom';\r\n } else {\r\n DX1 = 0;\r\n DX2 = 0;\r\n DY1 = 0;\r\n DY2 = 0;\r\n }\r\n //计算箭头容器大小与偏移量\r\n if (X >= DX1 && X <= DX2) {\r\n arrowW = Math.abs(X - DX1) + Math.abs(X - DX2);\r\n arrowXF = -Math.abs(X - DX1);\r\n directionX = 'mid';\r\n } else {\r\n arrowW = Math.max(Math.abs(X - DX1), Math.abs(X - DX2));\r\n arrowXF = X < DX1 ? 0 : -arrowW;\r\n directionX = X < DX1 ? 'left' : 'right';\r\n }\r\n\r\n if (Y >= DY1 && Y <= DY2) {\r\n arrowH = Math.abs(Y - DY1) + Math.abs(Y - DY2);\r\n arrowYF = -Math.abs(Y - DY1);\r\n directionY = 'mid';\r\n } else {\r\n arrowH = Math.max(Math.abs(Y - DY1), Math.abs(Y - DY2));\r\n arrowYF = Y < DY1 ? 0 : -arrowH;\r\n directionY = Y < DY1 ? 'top' : 'bottom';\r\n }\r\n //计算剖切路径\r\n let p1x = 0 as Number | String;\r\n let p1y = 0 as Number | String;\r\n let p2x = 0 as Number | String;\r\n let p2y = 0 as Number | String;\r\n let p3x = 0 as Number | String;\r\n let p3y = 0 as Number | String;\r\n\r\n if (EDGE == 'top' || EDGE == 'bottom') {\r\n p1y = EDGE == 'top' ? 0 : '100%';\r\n p2y = EDGE == 'top' ? '100%' : 0;\r\n p3y = EDGE == 'top' ? '100%' : 0;\r\n if (directionX == 'left') {\r\n p1x = 0;\r\n p2x = DX1 + 'px';\r\n p3x = '100%';\r\n } else if (directionX == 'right') {\r\n p1x = '100%';\r\n p2x = 0;\r\n p3x = Math.abs(DX2 - DX1) + 'px';\r\n } else if (directionX == 'mid') {\r\n p1x = Math.abs(X - DX1) + 'px';\r\n p2x = 0;\r\n p3x = '100%';\r\n }\r\n }\r\n\r\n if (EDGE == 'left' || EDGE == 'right') {\r\n p1x = EDGE == 'left' ? 0 : '100%';\r\n p2x = EDGE == 'left' ? '100%' : 0;\r\n p3x = EDGE == 'left' ? '100%' : 0;\r\n if (directionY == 'top') {\r\n p1y = 0;\r\n p2y = DY1 + 'px';\r\n p3y = '100%';\r\n } else if (directionY == 'bottom') {\r\n p1y = '100%';\r\n p2y = 0;\r\n p3y = Math.abs(DY2 - DY1) + 'px';\r\n } else if (directionY == 'mid') {\r\n p1y = Math.abs(Y - DY1) + 'px';\r\n p2y = 0;\r\n p3y = '100%';\r\n }\r\n }\r\n let clipPath = `polygon(${p1x} ${p1y}, ${p2x} ${p2y},${p3x} ${p3y})`;\r\n return {\r\n ...props.lineStyle,\r\n width: arrowW + 'px',\r\n height: arrowH + 'px',\r\n clipPath: clipPath,\r\n position: 'absolute',\r\n top: 0,\r\n left: 0,\r\n transform: `translate(${-XF + arrowXF + otherOffsetX}px , ${\r\n -YF + arrowYF + otherOffsetY\r\n }px)`,\r\n };\r\n });\r\n let isMouseOver = false;\r\n const oldX = ref(0);\r\n const oldY = ref(0);\r\n const currX = ref(0);\r\n const currY = ref(0);\r\n const isMove = ref(false);\r\n const nameTransform = computed(() => {\r\n if (isMove.value && (props.isCanDraggable || draggable.value)) {\r\n return {\r\n width: `max-content`,\r\n transform: `translate(${currX.value}px, ${currY.value}px)`,\r\n };\r\n } else {\r\n return {\r\n width: `max-content`,\r\n transform: `translate(${props.otherOffset?.x || 0}px, ${props.otherOffset?.y || 0}px)`,\r\n };\r\n }\r\n });\r\n const { elementPositionX, elementPositionY } = useMouseInElement(el);\r\n useDraggable(el, {\r\n initialValue: { x: elementPositionX.value, y: elementPositionY.value },\r\n onStart: () => {\r\n oldX.value = elementPositionX.value;\r\n oldY.value = elementPositionY.value;\r\n setTimeout(() => {\r\n if (props.onCanDraggable) {\r\n draggable.value = props.onCanDraggable();\r\n }\r\n isMove.value = true;\r\n });\r\n },\r\n onMove: (position) => {\r\n if ((props.isCanDraggable || draggable.value) && isMove.value) {\r\n currX.value = position.x - oldX.value + (props.otherOffset?.x || 0);\r\n currY.value = position.y - oldY.value + (props.otherOffset?.y || 0);\r\n }\r\n },\r\n onEnd: (position) => {\r\n if (position.x == 0 && position.y == 0) return;\r\n if (position.x == oldX.value && position.y == oldY.value) return;\r\n if (props.isCanDraggable || draggable.value) {\r\n currX.value = position.x - oldX.value + (props.otherOffset?.x || 0);\r\n currY.value = position.y - oldY.value + (props.otherOffset?.y || 0);\r\n const offset = {\r\n x: position.x - oldX.value + (props.otherOffset?.x || 0),\r\n y: position.y - oldY.value + (props.otherOffset?.y || 0),\r\n };\r\n emit('setOtherOffset', offset);\r\n }\r\n isMove.value = false;\r\n },\r\n });\r\n</script>\r\n","import { withInstall } from '../../../../utils/with-install';\r\nimport _MarkerBubble from './src/MarkerBubble.vue';\r\nexport * from './src/markerBubble';\r\n\r\nconst CxMarkerBubble = withInstall(_MarkerBubble);\r\nexport { CxMarkerBubble };\r\nexport default CxMarkerBubble;\r\n"],"names":["markerBubbleProps","props","__props","bem","createNamespace","emit","__emit","el","ref","width","height","useElementSize","draggable","lineStyle","computed","otherOffsetX","otherOffsetY","isMove","currX","currY","XF","YF","X","Y","XL","XM","XR","YT","YM","YB","DX1","DY1","DX2","DY2","arrowW","arrowH","arrowXF","arrowYF","interval","PML","borderRadius","EDGE","directionX","directionY","PY","PX","p1x","p1y","p2x","p2y","p3x","p3y","clipPath","oldX","oldY","nameTransform","elementPositionX","elementPositionY","useMouseInElement","useDraggable","position","offset","_createElementBlock","_normalizeClass","_unref","_createElementVNode","_normalizeStyle","_toDisplayString","CxMarkerBubble","withInstall","_MarkerBubble"],"mappings":"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"}
1
+ {"version":3,"file":"marker-bubble.js","sources":["../../src/components/marker-bubble/src/markerBubble.ts","../../src/components/marker-bubble/src/MarkerBubble.vue","../../src/components/marker-bubble/src/markerBubbleLine.ts","../../src/components/marker-bubble/src/MarkerBubbleLine.vue","../../src/components/marker-bubble/index.ts"],"sourcesContent":["import { ExtractPropTypes, PropType } from 'vue';\r\n\r\nexport type OtherOffset = { x: number; y: number };\r\n\r\nexport const markerBubbleProps = {\r\n text: { type: String, default: '文字' },\r\n textStyle: {\r\n type: Object,\r\n default: () => ({}),\r\n },\r\n lineStyle: {\r\n type: Object,\r\n default: () => ({}),\r\n },\r\n isCanDraggable: {\r\n type: Boolean,\r\n default: false,\r\n },\r\n onCanDraggable: {\r\n type: Function as PropType<() => boolean>,\r\n },\r\n pixelOffset: {\r\n type: Object as PropType<OtherOffset>,\r\n default: () => ({ x: 0, y: 0 }),\r\n },\r\n otherOffset: {\r\n type: Object as PropType<OtherOffset>,\r\n default: () => ({ x: 0, y: 0 }),\r\n },\r\n onSetOtherOffset: {\r\n type: Function as PropType<(offset: OtherOffset) => void>,\r\n },\r\n\r\n} as const;\r\n\r\nexport type MarkerBubbleProps = ExtractPropTypes<typeof markerBubbleProps>;\r\n","<template>\r\n <div :class=\"bem.b('bubble')\">\r\n <div ref=\"el\" :style=\"nameTransform\">\r\n <div :class=\"bem.be('bubble', 'name')\" v-if=\"props.text\" :style=\"props.textStyle\">\r\n {{ props.text }}\r\n </div>\r\n </div>\r\n <div :class=\"bem.be('bubble', 'line')\" :style=\"lineStyle\"></div>\r\n </div>\r\n</template>\r\n<script lang=\"ts\" setup>\r\n import { createNamespace, prefix } from '../../../../../utils/create';\r\n import { markerBubbleProps } from './markerBubble';\r\n import { computed, ref } from 'vue';\r\n import { useElementSize, useDraggable, useMouseInElement } from '@vueuse/core';\r\n defineOptions({ name: `${prefix}-marker` });\r\n const props = defineProps(markerBubbleProps);\r\n const bem = createNamespace('marker');\r\n\r\n const emit = defineEmits(['setOtherOffset']);\r\n const el = ref();\r\n const { width, height } = useElementSize(el);\r\n const draggable = ref(false);\r\n const lineStyle = computed(() => {\r\n let otherOffsetX = props.otherOffset?.x || 0;\r\n let otherOffsetY = props.otherOffset?.y || 0;\r\n if (isMove.value && (props.isCanDraggable || draggable.value)) {\r\n otherOffsetX = currX.value || 0;\r\n otherOffsetY = currY.value || 0;\r\n }\r\n\r\n let XF = (props.pixelOffset?.x || 0) + otherOffsetX;\r\n let YF = (props.pixelOffset?.y || 0) + otherOffsetY;\r\n let X = 0;\r\n let Y = 0;\r\n let XL = X + XF;\r\n let XM = X + XF + width.value / 2;\r\n let XR = X + XF + width.value;\r\n let YT = Y + YF;\r\n let YM = Y + YF + height.value / 2;\r\n let YB = Y + YF + height.value;\r\n let DX1 = 0;\r\n let DY1 = 0;\r\n let DX2 = 0;\r\n let DY2 = 0;\r\n let arrowW = 0;\r\n let arrowH = 0;\r\n let arrowXF = 0;\r\n let arrowYF = 0;\r\n let interval = 24;\r\n let PML = 4;\r\n let borderRadius = 4;\r\n let EDGE = '';\r\n let directionX = '';\r\n let directionY = '';\r\n //计算动态点位\r\n if (X < XL && Y >= YT && Y <= YB) {\r\n //点在矩形左边\r\n DX1 = XL;\r\n DX2 = XL;\r\n let PY = Y < YM ? YT : YM;\r\n DY1 = PY + PML;\r\n DY2 = PY + PML + Math.min(interval, height.value / 2 - PML - borderRadius);\r\n // DY1 = PY + PML;\r\n // DY2 = PY + PML + interval;\r\n EDGE = 'left';\r\n } else if (X > XR && Y >= YT && Y <= YB) {\r\n //点在矩形右边\r\n DX1 = XR;\r\n DX2 = XR;\r\n let PY = Y < YM ? YT : YM;\r\n DY1 = PY + PML;\r\n DY2 = PY + PML + Math.min(interval, height.value / 2 - PML - borderRadius);\r\n // DY1 = PY + PML;\r\n // DY2 = PY + PML + interval;\r\n EDGE = 'right';\r\n } else if (Y < YT) {\r\n //点在矩形上方\r\n DY1 = YT;\r\n DY2 = YT;\r\n let PX = X < XM ? XL : XM;\r\n DX1 = PX + PML;\r\n DX2 = PX + PML + Math.min(interval, width.value / 2 - PML - borderRadius);\r\n // DX1 = PX + PML;\r\n // DX2 = PX + PML + interval;\r\n EDGE = 'top';\r\n } else if (Y > YB) {\r\n //点在矩形下方\r\n DY1 = YB;\r\n DY2 = YB;\r\n let PX = X < XM ? XL : XM;\r\n DX1 = PX + PML;\r\n DX2 = PX + PML + Math.min(interval, width.value / 2 - PML - borderRadius);\r\n // DX1 = PX + PML;\r\n // DX2 = PX + PML + interval;\r\n EDGE = 'bottom';\r\n } else {\r\n DX1 = 0;\r\n DX2 = 0;\r\n DY1 = 0;\r\n DY2 = 0;\r\n }\r\n //计算箭头容器大小与偏移量\r\n if (X >= DX1 && X <= DX2) {\r\n arrowW = Math.abs(X - DX1) + Math.abs(X - DX2);\r\n arrowXF = -Math.abs(X - DX1);\r\n directionX = 'mid';\r\n } else {\r\n arrowW = Math.max(Math.abs(X - DX1), Math.abs(X - DX2));\r\n arrowXF = X < DX1 ? 0 : -arrowW;\r\n directionX = X < DX1 ? 'left' : 'right';\r\n }\r\n\r\n if (Y >= DY1 && Y <= DY2) {\r\n arrowH = Math.abs(Y - DY1) + Math.abs(Y - DY2);\r\n arrowYF = -Math.abs(Y - DY1);\r\n directionY = 'mid';\r\n } else {\r\n arrowH = Math.max(Math.abs(Y - DY1), Math.abs(Y - DY2));\r\n arrowYF = Y < DY1 ? 0 : -arrowH;\r\n directionY = Y < DY1 ? 'top' : 'bottom';\r\n }\r\n //计算剖切路径\r\n let p1x = 0 as Number | String;\r\n let p1y = 0 as Number | String;\r\n let p2x = 0 as Number | String;\r\n let p2y = 0 as Number | String;\r\n let p3x = 0 as Number | String;\r\n let p3y = 0 as Number | String;\r\n\r\n if (EDGE == 'top' || EDGE == 'bottom') {\r\n p1y = EDGE == 'top' ? 0 : '100%';\r\n p2y = EDGE == 'top' ? '100%' : 0;\r\n p3y = EDGE == 'top' ? '100%' : 0;\r\n if (directionX == 'left') {\r\n p1x = 0;\r\n p2x = DX1 + 'px';\r\n p3x = '100%';\r\n } else if (directionX == 'right') {\r\n p1x = '100%';\r\n p2x = 0;\r\n p3x = Math.abs(DX2 - DX1) + 'px';\r\n } else if (directionX == 'mid') {\r\n p1x = Math.abs(X - DX1) + 'px';\r\n p2x = 0;\r\n p3x = '100%';\r\n }\r\n }\r\n\r\n if (EDGE == 'left' || EDGE == 'right') {\r\n p1x = EDGE == 'left' ? 0 : '100%';\r\n p2x = EDGE == 'left' ? '100%' : 0;\r\n p3x = EDGE == 'left' ? '100%' : 0;\r\n if (directionY == 'top') {\r\n p1y = 0;\r\n p2y = DY1 + 'px';\r\n p3y = '100%';\r\n } else if (directionY == 'bottom') {\r\n p1y = '100%';\r\n p2y = 0;\r\n p3y = Math.abs(DY2 - DY1) + 'px';\r\n } else if (directionY == 'mid') {\r\n p1y = Math.abs(Y - DY1) + 'px';\r\n p2y = 0;\r\n p3y = '100%';\r\n }\r\n }\r\n let clipPath = `polygon(${p1x} ${p1y}, ${p2x} ${p2y},${p3x} ${p3y})`;\r\n return {\n ...props.lineStyle,\n width: arrowW + 'px',\n height: arrowH + 'px',\n clipPath: clipPath,\n position: 'absolute',\n top: 0,\n left: 0,\n transform: `translate(${-XF + arrowXF + otherOffsetX}px , ${\n -YF + arrowYF + otherOffsetY\n }px)`,\n } as any;\n });\n let isMouseOver = false;\r\n const oldX = ref(0);\r\n const oldY = ref(0);\r\n const currX = ref(0);\r\n const currY = ref(0);\r\n const isMove = ref(false);\r\n const nameTransform = computed(() => {\r\n if (isMove.value && (props.isCanDraggable || draggable.value)) {\r\n return {\r\n width: `max-content`,\r\n transform: `translate(${currX.value}px, ${currY.value}px)`,\r\n };\r\n } else {\r\n return {\r\n width: `max-content`,\r\n transform: `translate(${props.otherOffset?.x || 0}px, ${props.otherOffset?.y || 0}px)`,\r\n };\r\n }\r\n });\r\n const { elementPositionX, elementPositionY } = useMouseInElement(el);\r\n useDraggable(el, {\r\n initialValue: { x: elementPositionX.value, y: elementPositionY.value },\r\n onStart: () => {\r\n oldX.value = elementPositionX.value;\r\n oldY.value = elementPositionY.value;\r\n setTimeout(() => {\r\n if (props.onCanDraggable) {\r\n draggable.value = props.onCanDraggable();\r\n }\r\n isMove.value = true;\r\n });\r\n },\r\n onMove: (position) => {\r\n if ((props.isCanDraggable || draggable.value) && isMove.value) {\r\n currX.value = position.x - oldX.value + (props.otherOffset?.x || 0);\r\n currY.value = position.y - oldY.value + (props.otherOffset?.y || 0);\r\n }\r\n },\r\n onEnd: (position) => {\r\n if (position.x == 0 && position.y == 0) return;\r\n if (position.x == oldX.value && position.y == oldY.value) return;\r\n if (props.isCanDraggable || draggable.value) {\r\n currX.value = position.x - oldX.value + (props.otherOffset?.x || 0);\r\n currY.value = position.y - oldY.value + (props.otherOffset?.y || 0);\r\n const offset = {\r\n x: position.x - oldX.value + (props.otherOffset?.x || 0),\r\n y: position.y - oldY.value + (props.otherOffset?.y || 0),\r\n };\r\n emit('setOtherOffset', offset);\r\n }\r\n isMove.value = false;\r\n },\r\n });\r\n</script>\r\n","import { ExtractPropTypes, PropType } from 'vue';\n\nexport type BubbleLineOffset = { x: number; y: number };\nexport type LineStake = 'top' | 'right' | 'bottom' | 'left';\nexport type LineStakeInfo = {\n stake: LineStake;\n anchorPoint: BubbleLineOffset;\n};\n\nexport const markerBubbleLineProps = {\n text: { type: String, default: '文字' },\n textStyle: {\n type: Object,\n default: () => ({}),\n },\n lineStyle: {\n type: Object,\n default: () => ({}),\n },\n isCanDraggable: {\n type: Boolean,\n default: false,\n },\n onCanDraggable: {\n type: Function as PropType<() => boolean>,\n },\n pixelOffset: {\n type: Object as PropType<BubbleLineOffset>,\n default: () => ({ x: 0, y: 0 }),\n },\n otherOffset: {\n type: Object as PropType<BubbleLineOffset>,\n default: () => ({ x: 0, y: 0 }),\n },\n} as const;\n\nexport type MarkerBubbleLineProps = ExtractPropTypes<typeof markerBubbleLineProps>;\n","<template>\n <div :class=\"bem.b('bubble-line')\">\n <div\n ref=\"dragRef\"\n :class=\"bem.be('bubble-line', 'drag')\"\n :style=\"nameTransform\"\n @pointerdown=\"onPointerDown\"\n >\n <div v-if=\"props.text\" :class=\"bem.be('bubble-line', 'name')\" :style=\"props.textStyle\">\n {{ props.text }}\n </div>\n </div>\n <div\n ref=\"lineRef\"\n :class=\"bem.be('bubble-line', 'line')\"\n :style=\"lineStyle\"\n @pointerdown=\"onPointerDown\"\n ></div>\n </div>\n</template>\n\n<script lang=\"ts\" setup>\n import { computed, onUnmounted, ref, watch } from 'vue';\n import { useElementSize } from '@vueuse/core';\n import { createNamespace, prefix } from '../../../../../utils/create';\n import {\n markerBubbleLineProps,\n BubbleLineOffset,\n LineStake,\n LineStakeInfo,\n } from './markerBubbleLine';\n\n defineOptions({ name: `${prefix}-marker-bubble-line` });\n\n const props = defineProps(markerBubbleLineProps);\n const bem = createNamespace('marker');\n const emit = defineEmits<{\n (e: 'setOtherOffset', offset: BubbleLineOffset): void;\n (e: 'setLineStake', info: LineStakeInfo): void;\n }>();\n\n const dragRef = ref<HTMLElement>();\n const lineRef = ref<HTMLElement>();\n const { width, height } = useElementSize(dragRef);\n\n const draggable = ref(false);\n const dragging = ref(false);\n const activePointerId = ref<number | null>(null);\n const dragStartPointer = ref<BubbleLineOffset>({ x: 0, y: 0 });\n const dragStartOffset = ref<BubbleLineOffset>({ x: 0, y: 0 });\n const offsetX = ref(props.otherOffset?.x ?? 0);\n const offsetY = ref(props.otherOffset?.y ?? 0);\n\n const canDrag = computed(() => props.isCanDraggable || draggable.value);\n\n watch(\n () => props.otherOffset,\n (val) => {\n if (dragging.value) return;\n offsetX.value = val?.x ?? 0;\n offsetY.value = val?.y ?? 0;\n },\n { deep: true, immediate: true },\n );\n\n const bubbleRect = computed(() => {\n const x = (props.pixelOffset?.x ?? 0) + offsetX.value;\n const y = (props.pixelOffset?.y ?? 0) + offsetY.value;\n return {\n x,\n y,\n width: width.value ?? 0,\n height: height.value ?? 0,\n };\n });\n\n const nameTransform = computed(() => {\n return {\n width: 'max-content',\n transform: `translate(${bubbleRect.value.x}px, ${bubbleRect.value.y}px)`,\n };\n });\n\n const stakeInfo = computed<LineStakeInfo>(() => {\n const rect = bubbleRect.value;\n const halfW = rect.width / 2;\n const halfH = rect.height / 2;\n const stakePoints: Record<LineStake, BubbleLineOffset> = {\n top: { x: rect.x + halfW, y: rect.y },\n right: { x: rect.x + rect.width, y: rect.y + halfH },\n bottom: { x: rect.x + halfW, y: rect.y + rect.height },\n left: { x: rect.x, y: rect.y + halfH },\n };\n\n let currentStake: LineStake = 'top';\n let anchorPoint: BubbleLineOffset = stakePoints.top;\n let minDistance = Number.POSITIVE_INFINITY;\n\n (Object.keys(stakePoints) as LineStake[]).forEach((stake) => {\n const point = stakePoints[stake];\n const distance = point.x * point.x + point.y * point.y;\n if (distance < minDistance) {\n minDistance = distance;\n currentStake = stake;\n anchorPoint = point;\n }\n });\n\n return {\n stake: currentStake,\n anchorPoint,\n };\n });\n\n watch(\n stakeInfo,\n (value) => {\n emit('setLineStake', value);\n },\n { deep: true, immediate: true },\n );\n\n const lineStyle = computed(() => {\n const { x, y } = stakeInfo.value.anchorPoint;\n const deltaX = -x;\n const deltaY = -y;\n const length = Math.hypot(deltaX, deltaY);\n const angle = Math.atan2(deltaY, deltaX) * (180 / Math.PI);\n\n return {\n position: 'absolute',\n top: 0,\n left: 0,\n pointerEvents: 'auto',\n transformOrigin: '0 50%',\n height: '1px',\n backgroundColor: '#fff',\n ...props.lineStyle,\n width: `${length}px`,\n transform: `translate(${x}px, ${y}px) rotate(${angle}deg)`,\n } as any;\n });\n\n const clearPointerListeners = () => {\n window.removeEventListener('pointermove', onPointerMove);\n window.removeEventListener('pointerup', onPointerUp);\n window.removeEventListener('pointercancel', onPointerUp);\n };\n\n const onPointerMove = (event: PointerEvent) => {\n if (!dragging.value || activePointerId.value !== event.pointerId) return;\n offsetX.value = dragStartOffset.value.x + event.clientX - dragStartPointer.value.x;\n offsetY.value = dragStartOffset.value.y + event.clientY - dragStartPointer.value.y;\n };\n\n const onPointerUp = (event: PointerEvent) => {\n if (activePointerId.value !== event.pointerId) return;\n\n const nextOffset = { x: offsetX.value, y: offsetY.value };\n const moved =\n nextOffset.x !== dragStartOffset.value.x || nextOffset.y !== dragStartOffset.value.y;\n\n dragging.value = false;\n activePointerId.value = null;\n clearPointerListeners();\n\n if (moved) {\n emit('setOtherOffset', nextOffset);\n }\n };\n\n const onPointerDown = (event: PointerEvent) => {\n if (props.onCanDraggable) {\n draggable.value = !!props.onCanDraggable();\n }\n if (!canDrag.value) return;\n\n event.preventDefault();\n activePointerId.value = event.pointerId;\n dragging.value = true;\n dragStartPointer.value = { x: event.clientX, y: event.clientY };\n dragStartOffset.value = { x: offsetX.value, y: offsetY.value };\n\n window.addEventListener('pointermove', onPointerMove);\n window.addEventListener('pointerup', onPointerUp);\n window.addEventListener('pointercancel', onPointerUp);\n };\n\n onUnmounted(() => {\n clearPointerListeners();\n });\n</script>\n","import { withInstall } from '../../../../utils/with-install';\nimport _MarkerBubble from './src/MarkerBubble.vue';\nimport _MarkerBubbleLine from './src/MarkerBubbleLine.vue';\nexport * from './src/markerBubble';\nexport * from './src/markerBubbleLine';\n\nconst CxMarkerBubble = withInstall(_MarkerBubble);\nconst CxMarkerBubbleLine = withInstall(_MarkerBubbleLine);\nexport { CxMarkerBubble, CxMarkerBubbleLine };\nexport default CxMarkerBubble;\n"],"names":["markerBubbleProps","props","__props","bem","createNamespace","emit","__emit","el","ref","width","height","useElementSize","draggable","lineStyle","computed","otherOffsetX","otherOffsetY","isMove","currX","currY","XF","YF","X","Y","XL","XM","XR","YT","YM","YB","DX1","DY1","DX2","DY2","arrowW","arrowH","arrowXF","arrowYF","interval","PML","borderRadius","EDGE","directionX","directionY","PY","PX","p1x","p1y","p2x","p2y","p3x","p3y","clipPath","oldX","oldY","nameTransform","elementPositionX","elementPositionY","useMouseInElement","useDraggable","position","offset","_createElementBlock","_normalizeClass","_unref","_createElementVNode","_normalizeStyle","_toDisplayString","markerBubbleLineProps","dragRef","lineRef","dragging","activePointerId","dragStartPointer","dragStartOffset","offsetX","offsetY","canDrag","watch","val","bubbleRect","x","y","stakeInfo","rect","halfW","halfH","stakePoints","currentStake","anchorPoint","minDistance","stake","point","distance","value","deltaX","deltaY","length","angle","clearPointerListeners","onPointerMove","onPointerUp","event","nextOffset","moved","onPointerDown","onUnmounted","CxMarkerBubble","withInstall","_MarkerBubble","CxMarkerBubbleLine","_MarkerBubbleLine"],"mappings":"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"}