Files
vue-flow/src/additional-components/MiniMap/MiniMapNode.tsx
Braks e4f57c79e8 feat: Create examples directory and add some examples
* Add svg plugins for vite & rollup
update: more bundle stuff
2021-07-10 23:51:04 +02:00

87 lines
2.1 KiB
TypeScript

import { computed, defineComponent, PropType } from 'vue';
interface MiniMapNodeProps {
x: number;
y: number;
width: number;
height: number;
borderRadius: number;
color: string;
shapeRendering: string;
strokeColor: string;
strokeWidth: number;
}
const MiniMapNode = defineComponent({
name: 'MiniMapNode',
props: {
x: {
type: Number as PropType<MiniMapNodeProps['x']>,
required: false,
default: undefined
},
y: {
type: Number as PropType<MiniMapNodeProps['y']>,
required: false,
default: undefined
},
width: {
type: Number as PropType<MiniMapNodeProps['width']>,
required: false,
default: undefined
},
height: {
type: Number as PropType<MiniMapNodeProps['height']>,
required: false,
default: undefined
},
borderRadius: {
type: Number as PropType<MiniMapNodeProps['borderRadius']>,
required: false,
default: undefined
},
color: {
type: String as PropType<MiniMapNodeProps['color']>,
required: false,
default: undefined
},
shapeRendering: {
type: String as PropType<MiniMapNodeProps['shapeRendering']>,
required: false,
default: undefined
},
strokeColor: {
type: String as PropType<MiniMapNodeProps['strokeColor']>,
required: false,
default: undefined
},
strokeWidth: {
type: Number as PropType<MiniMapNodeProps['strokeWidth']>,
required: false,
default: undefined
}
},
setup(props, { attrs }: { attrs: Record<string, any> }) {
const styles = attrs.style || {};
const fill = computed(() => (props.color || styles.value.background || styles.value.backgroundColor) as string);
return () => (
<rect
class="revue-flow__minimap-node"
x={props.x}
y={props.y}
rx={props.borderRadius}
ry={props.borderRadius}
width={props.width}
height={props.height}
fill={fill.value}
stroke={props.strokeColor}
stroke-width={props.strokeWidth}
shape-rendering={props.shapeRendering}
/>
);
}
});
export default MiniMapNode;