123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172 |
- import { memo } from 'react'
- import { useViewport } from 'reactflow'
- import { useStore } from '../store'
- import type {
- HelpLineHorizontalPosition,
- HelpLineVerticalPosition,
- } from './types'
- const HelpLineHorizontal = memo(({
- top,
- left,
- width,
- }: HelpLineHorizontalPosition) => {
- const { x, y, zoom } = useViewport()
- return (
- <div
- className='absolute h-[1px] bg-primary-300 z-[9]'
- style={{
- top: top * zoom + y,
- left: left * zoom + x,
- width: width * zoom,
- }}
- />
- )
- })
- HelpLineHorizontal.displayName = 'HelpLineBase'
- const HelpLineVertical = memo(({
- top,
- left,
- height,
- }: HelpLineVerticalPosition) => {
- const { x, y, zoom } = useViewport()
- return (
- <div
- className='absolute w-[1px] bg-primary-300 z-[9]'
- style={{
- top: top * zoom + y,
- left: left * zoom + x,
- height: height * zoom,
- }}
- />
- )
- })
- HelpLineVertical.displayName = 'HelpLineVertical'
- const HelpLine = () => {
- const helpLineHorizontal = useStore(s => s.helpLineHorizontal)
- const helpLineVertical = useStore(s => s.helpLineVertical)
- if (!helpLineHorizontal && !helpLineVertical)
- return null
- return (
- <>
- {
- helpLineHorizontal && (
- <HelpLineHorizontal {...helpLineHorizontal} />
- )
- }
- {
- helpLineVertical && (
- <HelpLineVertical {...helpLineVertical} />
- )
- }
- </>
- )
- }
- export default memo(HelpLine)
|