// import { memo, useState, useCallback } from 'react'; import cc from 'classcat'; import type { Rect } from '@xyflow/system'; import type { EdgeLabelOptions } from '../../types'; import { Show, mergeProps, splitProps, JSX, createSignal } from 'solid-js'; interface Props extends EdgeLabelOptions, JSX.GSVGAttributes { x: number; y: number; } function EdgeTextComponent(_p: Props) { const p = mergeProps( { labelStyle: {}, labelShowBg: true, labelBgStyle: {}, labelBgPadding: [2, 4], labelBgBorderRadius: 2, }, _p ); const [edgeTextBbox, setEdgeTextBbox] = createSignal({ x: 1, y: 0, width: 0, height: 0 }); const edgeTextClasses = () => cc(['react-flow__edge-textwrapper', p.class]); const onEdgeTextRefChange = (edgeRef: SVGTextElement) => { if (edgeRef === null) return; const textBbox = edgeRef.getBBox(); setEdgeTextBbox({ x: textBbox.x, y: textBbox.y, width: textBbox.width, height: textBbox.height, }); }; const [_, rest] = splitProps(p, [ 'label', 'labelStyle', 'labelShowBg', 'labelBgStyle', 'labelBgPadding', 'labelBgBorderRadius', 'children', 'class', ]); return ( {(label) => { return ( {label()} {p.children} ); }} ); } EdgeTextComponent.displayName = 'EdgeText'; export const EdgeText = EdgeTextComponent;