[ 2-3 ] instead of 2 - 3, so a block
that moves and prints as one reads as one.host.manifest_data or host.manifest were ignored: the document opened with the
swatches it was saved with, so a theme that redefined COLOR_4 — another colour, or a linear
gradient made radial — changed nothing. They are now merged by uuid like the fonts, and everything
filled with that swatch follows.PageElementRoundedRect into shared functions
(corner_knob_points, corner_knob_hit, corner_knob_drag, corner_radius_set,
corner_knobs_draw). The rounded rectangle keeps its methods, which delegate; PageElementImage
has the same five (corner_knobs, corner_knob_at, drag_corner_knob, set_corner_radius,
draw_corner_knobs) plus corner_knobs_offered(), which is false while show_image_handles is
on or native_paths is set. An image's linked native_radius now survives a copy (undo, redo,
duplicate) and a reload; it was reset to 0. Browser suite run_corner_knobs_tests(): 30 (14 for
the image).cornerknob.ts: corner_knob_under() offers the knobs on a selected roundedrect or
image; the mouse manager's step 2.6 is unchanged.pagebar.ts: page_badge_text(flat0, n, record_index, kept_together) decides a row's number;
a spread with allow_page_shuffle === false and more than one page shows its range in brackets.
Tests: tests/page_badge_text.test.ts.try_resize() (TYP-904): for an element whose handles are transformed, the pointer offset
is taken into the box's own axes (the inverse of handle_transform()'s linear part), resize_n()
resizes the plain box, and the element is then moved (move_native()) so the handle opposite the
dragged one is drawn where it was when the drag started. The previous mousemove's move is undone
first, so a freely placed picture is not moved again on every mousemove. Size limits get the
element-space offsets. Browser suite run_transformed_resize_tests(): 74. editor-ui
resizesnap.ts and the move's snapping (moveelementhandler.ts) stand aside on
handles_are_transformed() instead of a rotation alone.hostmanifest.ts (TYP-962): as_manifest_data() passes swatches to
set_manifest_data() beside images and fonts; so does the Images panel's PHP fallback. A
runtime set_manifest_data({swatches}) already worked. The PDF still prints the template's saved
swatches, not the job manifest's: document-generator's half of TYP-962.bad503a (from 41ac947): canvas #199 (TYP-955, image corner knobs), #200
(TYP-956, kept-together page numbers) and #202 (TYP-904, transformed resize).