diff --git a/packages/minimap/src/MiniMap.vue b/packages/minimap/src/MiniMap.vue index f68b0c12..26280d5e 100644 --- a/packages/minimap/src/MiniMap.vue +++ b/packages/minimap/src/MiniMap.vue @@ -6,7 +6,7 @@ import type { D3ZoomEvent } from 'd3-zoom' import { pointer, select } from 'd3-selection' import { computed, provide, ref, toRef, useAttrs, watchEffect } from 'vue' import type { MiniMapEmits, MiniMapNodeFunc, MiniMapProps, MiniMapSlots, ShapeRendering } from './types' -import MiniMapNode from './MiniMapNode' +import MiniMapNode from './MiniMapNode.vue' import { Slots } from './types' const { @@ -38,7 +38,7 @@ const attrs: Record = useAttrs() const defaultWidth = 200 const defaultHeight = 150 -const { id, edges, viewport, translateExtent, dimensions, emits, nodes, d3Selection, d3Zoom } = useVueFlow() +const { id, edges, viewport, translateExtent, dimensions, emits, d3Selection, d3Zoom, getNodesInitialized } = useVueFlow() const el = ref() @@ -60,7 +60,7 @@ const nodeClassNameFunc = computed(() => typeof nodeClassName === 'string' ? () => nodeClassName : typeof nodeClassName === 'function' ? nodeClassName : () => '', ) -const bb = computed(() => getRectOfNodes(nodes.value)) +const bb = computed(() => getRectOfNodes(getNodesInitialized.value)) const viewBB = computed(() => ({ x: -viewport.value.x / viewport.value.zoom, @@ -69,7 +69,9 @@ const viewBB = computed(() => ({ height: dimensions.value.height / viewport.value.zoom, })) -const boundingRect = computed(() => (nodes.value && nodes.value.length ? getBoundsofRects(bb.value, viewBB.value) : viewBB.value)) +const boundingRect = computed(() => + getNodesInitialized.value && getNodesInitialized.value.length ? getBoundsofRects(bb.value, viewBB.value) : viewBB.value, +) const viewScale = computed(() => { const scaledWidth = boundingRect.value.width / elementWidth.value @@ -223,7 +225,7 @@ export default { {{ ariaLabel }} ({ - name: 'MiniMapNode', - compatConfig: { MODE: 3 }, - setup(props, { attrs, emit }) { - const miniMapSlots = inject(Slots)! - - return () => { - const style = (attrs.style ?? {}) as CSSProperties - - const slot = miniMapSlots[`node-${props.type}`] - - if (slot) { - return slot(props) - } - - return h('rect', { - id: props.id, - class: ['vue-flow__minimap-node', attrs.class, { selected: props.selected, dragging: props.dragging }].join(' '), - style, - x: props.position.x, - y: props.position.y, - rx: props.borderRadius, - ry: props.borderRadius, - width: props.dimensions.width, - height: props.dimensions.height, - fill: props.color || (style.background as string) || style.backgroundColor, - stroke: props.strokeColor, - strokeWidth: props.strokeWidth, - shapeRendering: props.shapeRendering, - onClick: (e: MouseEvent) => emit('click', e), - onDblClick: (e: MouseEvent) => emit('dblclick', e), - onMouseenter: (e: MouseEvent) => emit('mouseenter', e), - onMousemove: (e: MouseEvent) => emit('mousemove', e), - onMouseleave: (e: MouseEvent) => emit('mouseleave', e), - }) - } - }, -}) diff --git a/packages/minimap/src/MiniMapNode.vue b/packages/minimap/src/MiniMapNode.vue new file mode 100644 index 00000000..f46ec117 --- /dev/null +++ b/packages/minimap/src/MiniMapNode.vue @@ -0,0 +1,69 @@ + + + + + diff --git a/packages/minimap/src/index.ts b/packages/minimap/src/index.ts index da2c2b37..cc8f007e 100644 --- a/packages/minimap/src/index.ts +++ b/packages/minimap/src/index.ts @@ -1,6 +1,6 @@ import './style.css' export { default as MiniMap } from './MiniMap.vue' -export { default as MiniMapNode } from './MiniMapNode' +export { default as MiniMapNode } from './MiniMapNode.vue' export * from './types'