btw, current implementation should merge into one <foreignobject /> and fix the gap above triangle tip.