Media / foldkit-media

The model

ImageAsset + Provider + Layout  ->  Picture.derive  ->  attributes a view writes
   facts      URL scheme  how wide                        (no I/O)

One Widths ladder, carried by the provider, decides which widths exist. A Layout picks the ones worth offering:

LayoutCandidatessizes
Fixed({ width })the ladder widths covering 1x and 2x${width}px
Constrained({ width })every width up to the one covering 2x(min-width: ${width}px) ${width}px, 100vw
FullWidth()the whole ladder100vw

A width above the original's own is described with the original's width, and only the first such width is offered: a provider that does not enlarge answers all of them with the same pixels.