The panel viewport is active when makeContent fires, so we can
measure each tag's footprint in current native units via
grid::convertWidth(grobWidth(...), "native") and call eunoia's
place_euler_labels() again. On resize, grid invalidates the tree
and makeContent re-runs, so the placement tracks the current
device automatically.
# S3 method for EulerTags
makeContent(x)Tags whose measured size is zero (or whose anchor / kind eunoia
can't compute) keep the positions they were built with — typically
the setup-time placement stored on centers$x / centers$y.