The key of the surface whose tab is active; only it shows over TabSlot.
OptionalPipThe host's template for the buttons on a picture-in-picture bar.
ReadonlyPipThe id of the hint that tells a keyboard user how to move and resize a picture-in-picture box.
The user moved or resized a picture-in-picture box: the host saves it.
The surfaces, each with its placement.
OptionalSurfaceThe host's template for a surface's content.
The picture-in-picture box the user touched last; it sits above the others.
An element along the stage's foot that picture-in-picture boxes start clear of, such as the host's call controls,
or null (the default) for none. While the box in the stage's bottom-right corner would cover any of it, the boxes
the user has not moved stack upward from just above it instead; a box the user put somewhere stays there
(PipRects). It is followed like TabSlot, and while it has no size it counts as none.
Where the user put picture-in-picture boxes, by key, as fractions of the stage (what the host saved). A box with no entry stacks in the corner by its MediaStageSurface.PipIndex. Setting this replaces every box.
The element a stage surface covers instead of filling the stage, or null (the default) to fill it. It is followed
like TabSlot, and while it has no size the stage surface is out of sight.
The element the active tab's surface covers, or null when no tab is showing.
The box of a surface placed by geometry (over the stage slot or the tab slot, or picture-in-picture), or null when
it has none (a stage surface with no slot fills the stage).
A callback method that is invoked immediately after Angular has completed initialization of a component's view. It is invoked only once when the view is instantiated.
A callback method that performs custom clean-up, invoked immediately before a directive, pipe, or service instance is destroyed.
The arrow keys move a focused picture-in-picture bar's box; with Shift they resize it.
The pointer went down on a picture-in-picture bar (move) or its corner (resize). The box follows the pointer
outside Angular and is committed once, when the pointer comes up. A press on a button in the bar is not a drag.
The box of a surface shown over the tab slot, or null when it isn't.
mj-media-stage: shows each surface where its placement says, without ever moving it in the DOM. Every surface's content is created once, in this layer, and a change of placement only changes where and how big it is, so a whiteboard keeps its view, a stream keeps playing and nothing reloads.The host positions the stage over the area it covers (it fills its positioned parent). A
stagesurface fills it, or covers StageSlot when the host gives one (such as the agent's place in a call); atabsurface covers TabSlot, an element the host's tab panel keeps for the active tab. Both slots are followed as they resize or slide; apipsurface floats in a box the user drags by its bar, resizes from its corner, or moves with the arrow keys, stacked in the bottom-right corner until moved (PipRects, PipRectChange), above the host's controls when they are in that corner (PipKeepClear); any other surface stays alive, out of sight. So does every surface while the stage itself has no size (a hidden ancestor). Each surface's template learns whether it is on screen (Visible), so the host can tell the surface to pause work nobody sees.