Skip to content

Commit 7bc62d7

Browse files
committed
refactor(core): move MiniMap component into core pkg
Signed-off-by: braks <[email protected]>
1 parent b5f7162 commit 7bc62d7

File tree

19 files changed

+48
-333
lines changed

19 files changed

+48
-333
lines changed

docs/package.json

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,6 @@
1616
"@vercel/analytics": "^1.3.2",
1717
"@vercel/speed-insights": "^1.0.14",
1818
"@vue-flow/core": "workspace:*",
19-
"@vue-flow/minimap": "workspace:*",
2019
"@vue-flow/node-resizer": "workspace:*",
2120
"@vue-flow/node-toolbar": "workspace:*",
2221
"@vue/repl": "3.4.0",

examples/nuxt3/package.json

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,7 @@
77
"lint": "eslint --ext .js,.ts,.vue ./"
88
},
99
"dependencies": {
10-
"@vue-flow/core": "workspace:*",
11-
"@vue-flow/minimap": "workspace:*"
10+
"@vue-flow/core": "workspace:*"
1211
},
1312
"devDependencies": {
1413
"@tooling/eslint-config": "workspace:*",

examples/quasar/package.json

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,6 @@
99
"dependencies": {
1010
"@quasar/extras": "^1.16.12",
1111
"@vue-flow/core": "workspace:*",
12-
"@vue-flow/minimap": "workspace:*",
1312
"quasar": "^2.17.0",
1413
"vue": "^3.5.11",
1514
"vue-router": "^4.4.5"

examples/vite/package.json

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,6 @@
99
"dependencies": {
1010
"@dagrejs/dagre": "^1.1.4",
1111
"@vue-flow/core": "workspace:*",
12-
"@vue-flow/minimap": "workspace:*",
1312
"@vue-flow/node-resizer": "workspace:*",
1413
"@vue-flow/node-toolbar": "workspace:*",
1514
"html-to-image": "^1.11.11",

packages/core/package.json

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -68,10 +68,10 @@
6868
"test": "exit 0"
6969
},
7070
"peerDependencies": {
71-
"vue": "^3.3.0"
71+
"vue": "^3.5.25"
7272
},
7373
"dependencies": {
74-
"@vueuse/core": "^10.5.0",
74+
"@vueuse/core": "^14.1.0",
7575
"d3-drag": "^3.0.0",
7676
"d3-interpolate": "^3.0.1",
7777
"d3-selection": "^3.0.0",
@@ -86,13 +86,13 @@
8686
"@types/d3-selection": "^3.0.11",
8787
"@types/d3-transition": "^3.0.9",
8888
"@types/d3-zoom": "^3.0.8",
89-
"@vitejs/plugin-vue": "^4.4.0",
90-
"autoprefixer": "^10.4.16",
91-
"postcss": "^8.4.31",
92-
"postcss-cli": "^10.1.0",
93-
"postcss-nested": "^6.0.1",
94-
"vite": "^4.4.11",
89+
"@vitejs/plugin-vue": "^6.0.3",
90+
"autoprefixer": "^10.4.22",
91+
"postcss": "^8.5.6",
92+
"postcss-cli": "^11.0.1",
93+
"postcss-nested": "^7.0.2",
94+
"vite": "^7.2.7",
9595
"vite-svg-loader": "^5.1.0",
96-
"vue-tsc": "^1.8.16"
96+
"vue-tsc": "^3.1.8"
9797
}
9898
}

packages/minimap/src/MiniMap.vue renamed to packages/core/src/components/MiniMap/MiniMap.vue

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,12 @@
11
<script lang="ts" setup>
2-
import type { CoordinateExtent, GraphNode, PanelPosition } from '@vue-flow/core'
3-
import { Panel, getBoundsofRects, getConnectedEdges, getRectOfNodes, isMacOs, useVueFlow, wheelDelta } from '@vue-flow/core'
42
import { zoom, zoomIdentity } from 'd3-zoom'
53
import type { D3ZoomEvent } from 'd3-zoom'
64
import { pointer, select } from 'd3-selection'
75
import { computed, provide, ref, toRef, useAttrs, watchEffect } from 'vue'
6+
import type { CoordinateExtent, GraphNode } from '../../types'
7+
import { useVueFlow } from '../../composables'
8+
import { getBoundsofRects, getConnectedEdges, getRectOfNodes, isMacOs, wheelDelta } from '../../utils'
9+
import Panel from '../Panel/Panel.vue'
810
import type { MiniMapEmits, MiniMapNodeFunc, MiniMapProps, MiniMapSlots, ShapeRendering } from './types'
911
import MiniMapNode from './MiniMapNode.vue'
1012
import { Slots } from './types'
@@ -18,7 +20,7 @@ const {
1820
nodeBorderRadius = 5,
1921
nodeStrokeWidth = 2,
2022
maskColor = 'rgb(240, 240, 240, 0.6)',
21-
position = 'bottom-right' as PanelPosition,
23+
position = 'bottom-right',
2224
maskStrokeColor = 'none',
2325
maskStrokeWidth = 1,
2426
maskBorderRadius = 0,
@@ -218,14 +220,14 @@ export default {
218220
</script>
219221

220222
<template>
221-
<Panel :position="position" class="vue-flow__minimap" :class="{ pannable, zoomable }">
223+
<Panel :class="{ pannable, zoomable }" :position="position" class="vue-flow__minimap">
222224
<svg
223225
ref="el"
224226
:width="elementWidth"
225227
:height="elementHeight"
226228
:viewBox="[viewBox.x, viewBox.y, viewBox.width, viewBox.height].join(' ')"
227-
role="img"
228229
:aria-labelledby="`vue-flow__minimap-${id}`"
230+
role="img"
229231
@click="onSvgClick"
230232
>
231233
<title v-if="ariaLabel" :id="`vue-flow__minimap-${id}`">{{ ariaLabel }}</title>
@@ -234,7 +236,6 @@ export default {
234236
v-for="node of getNodesInitialized"
235237
:id="node.id"
236238
:key="node.id"
237-
f
238239
:position="node.computedPosition"
239240
:dimensions="node.dimensions"
240241
:selected="node.selected"
@@ -256,11 +257,11 @@ export default {
256257
/>
257258

258259
<path
259-
class="vue-flow__minimap-mask"
260260
:d="d"
261261
:fill="maskColor"
262262
:stroke="maskStrokeColor"
263263
:stroke-width="maskStrokeWidth"
264+
class="vue-flow__minimap-mask"
264265
fill-rule="evenodd"
265266
/>
266267
</svg>
Lines changed: 10 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
<script setup lang="ts">
2-
import type { CSSProperties } from 'vue'
3-
import { inject, toRef, useAttrs } from 'vue'
2+
import { inject, useAttrs } from 'vue'
43
import type { MiniMapNodeEmits, MiniMapNodeProps } from './types'
54
import { Slots } from './types'
65
@@ -10,29 +9,7 @@ const emits = defineEmits<MiniMapNodeEmits>()
109
1110
const miniMapSlots = inject(Slots)!
1211
13-
const attrs = useAttrs()
14-
15-
const style = toRef(() => (attrs.style ?? {}) as CSSProperties)
16-
17-
function onClick(event: MouseEvent) {
18-
emits('click', event)
19-
}
20-
21-
function onDblclick(event: MouseEvent) {
22-
emits('dblclick', event)
23-
}
24-
25-
function onMouseEnter(event: MouseEvent) {
26-
emits('mouseenter', event)
27-
}
28-
29-
function onMouseMove(event: MouseEvent) {
30-
emits('mousemove', event)
31-
}
32-
33-
function onMouseLeave(event: MouseEvent) {
34-
emits('mouseleave', event)
35-
}
12+
const attrs = useAttrs() as Record<string, any>
3613
</script>
3714

3815
<script lang="ts">
@@ -48,13 +25,13 @@ export default {
4825
<component
4926
:is="miniMapSlots[`node-${props.type}`]"
5027
v-if="miniMapSlots[`node-${props.type}`]"
51-
v-bind="{ ...props, ...$attrs }"
28+
v-bind="{ ...props, ...attrs }"
5229
/>
5330

5431
<rect
5532
v-else
5633
:id="id"
57-
v-bind="$attrs"
34+
v-bind="attrs"
5835
class="vue-flow__minimap-node"
5936
:class="{ selected, dragging }"
6037
:x="position.x"
@@ -63,15 +40,15 @@ export default {
6340
:ry="borderRadius"
6441
:width="dimensions.width"
6542
:height="dimensions.height"
66-
:fill="color || (style.background as string) || style.backgroundColor"
43+
:fill="color || (attrs.style?.background as string) || attrs.style?.backgroundColor"
6744
:stroke="strokeColor"
6845
:stroke-width="strokeWidth"
6946
:shape-rendering="shapeRendering"
70-
@click="onClick"
71-
@dblclick="onDblclick"
72-
@mouseenter="onMouseEnter"
73-
@mousemove="onMouseMove"
74-
@mouseleave="onMouseLeave"
47+
@click="emits('click', $event)"
48+
@dblclick="emits('dblclick', $event)"
49+
@mouseenter="emits('mouseenter', $event)"
50+
@mousemove="emits('mousemove', $event)"
51+
@mouseleave="emits('mouseleave', $event)"
7552
/>
7653
</template>
7754
</template>
File renamed without changes.

packages/minimap/src/types.ts renamed to packages/core/src/components/MiniMap/types.ts

Lines changed: 3 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
1-
import type { Dimensions, GraphNode, NodeMouseEvent, PanelPosition, PanelPositionType, XYPosition } from '@vue-flow/core'
21
import type { CSSProperties, InjectionKey } from 'vue'
2+
import type { Dimensions, GraphNode, NodeMouseEvent, PanelPositionType, XYPosition } from '../../types'
33

44
/** expects a node and returns a color value */
55
export type MiniMapNodeFunc = (node: GraphNode) => string
@@ -24,7 +24,7 @@ export interface MiniMapProps {
2424
/** Border width of minimap mask */
2525
maskStrokeWidth?: number
2626
/** Position of the minimap {@link PanelPosition} */
27-
position?: PanelPositionType | PanelPosition
27+
position?: PanelPositionType
2828
/** Enable drag minimap to drag viewport */
2929
pannable?: boolean
3030
/** Enable zoom minimap to zoom viewport */
@@ -62,13 +62,7 @@ export interface MiniMapNodeProps {
6262
}
6363

6464
export interface MiniMapEmits {
65-
(
66-
event: 'click',
67-
params: {
68-
event: MouseEvent
69-
position: { x: number; y: number }
70-
},
71-
): void
65+
(event: 'click', params: { event: MouseEvent; position: { x: number; y: number } }): void
7266
(event: 'nodeClick', params: NodeMouseEvent): void
7367
(event: 'nodeDblclick', params: NodeMouseEvent): void
7468
(event: 'nodeMouseenter', params: NodeMouseEvent): void
File renamed without changes.

0 commit comments

Comments
 (0)