Media

Block-level media nodes.

Media nodes are first-class block nodes. The semantic media family supports image and embed media. Media nodes are atoms: they have no text children and participate in node selection, not text selection.

Authored attributes

Core exposes explicit authored controls with validated numeric bounds:

  • MediaAlignment = "left" | "center" | "right" (with null meaning the default unaligned state).
  • Width bounds: MIN_MEDIA_WIDTH_PX = 32, MAX_MEDIA_WIDTH_PX = 4096.
  • Indent bounds: MIN_MEDIA_INDENT_PX = 0, MAX_MEDIA_INDENT_PX = 16384, step MEDIA_INDENT_STEP_PX = 48.

Validators: normalizeMediaWidthPx, normalizeMediaAlignment, normalizeMediaIndent. See packages/core/src/media.ts.

Intents

  • adjustSelectedMediaIndent / setSelectedMediaWidth / setSelectedMediaAlignment — operate on one selected image media node.
  • adjustMediaRowIndent / setMediaRowAlignment — image row groups resolved by the DOM runtime and referenced by mediaPaths and textBlockPaths.

Selection and navigation around media atoms are handled in the DOM layer (see frontier and selection-mapping). Core exposes the node model; the runtime enforces caret behavior around atomic blocks.

Pasting media

Media pasted from the OS or a web page flows through the paste planner, which produces a fragment for insertFragment rather than attempting inline text insertion.