* feat(layout): add `hideTopRow` to nav bar context
Adds the `hideTopRow` property to the navbar in the layout context, allowing
the top row of the navigation bar to be hidden. Only the row with the
talking indicators and timer indicator will remain visible when this
option is used.
* feat(layout): add userdata `bbb_hide_controls`
Introduces the userdata join parameter `bbb_hide_controls`, which hides
the action bar and the top row of the navigation bar (including the close
sidebar button, room title, connectivity indicator, and leave meeting button)
while keeping the row with the talking indicator and timer indicator visible.
* fix(layout): has actions bar boolean expression
* feat(layout): add `hideNotificationToasts` to notifications bar
context
Adds the `hideNotificationToasts` property to the notifications bar
in the layout context, allowing the notification toasts to be
hidden when the property is set to `true`.
* feat(layout): add userdata `bbb_hide_notifications`
Introduces join userdata parameter `bbb_hide_notifications` that
prevents the rendering of all notification toasts in the client.
* fix(plugins): layout content pile hook improvements
The isOpen property of the content was not being updated when the minimize button was pressed, so plugins couldn't know if it was open or not.
Also, plugins were not receiving the initial state when subscribing to the hook, they only received subsequent changes.
+ fix duplicated external video event and user list event with wrong names.
* fix: eslint errors
* fix(layout): remove previous content from pile
Always remove previous content from pile when calling SET_PILE_CONTENT_FOR_PRESENTATION_AREA with open = false
Introduces a new layout type called `MEDIA_ONLY`, which shows only media
elements(presentation area and cameras). This layout follows the same
heuristics used by the smart layout to arrange presentation and cameras
in the screen.
Fixes an issue with the camera dock bounds calculation, where the banner
height was being accounted for twice, leading to incorrect dock height
and excessive spacing. The height is now correctly based on the media
are height, which already factors in the banner height.
Additionally, the top position of the camera dock is now calculated
using the media area's top position, correctly factoring in the margin of
the media area.
Adds an optional parameter to the `calculateMediaAreaBounds` function,
allowing a margin to be specified when determining the media area
bounds. Any usage of the function without the optional parameter will
default to the previous behavior(no margin).
This commit introduces a mapping between each layout type and the structures
it should propagate or replicate. This change enhances the clarity of the
implemented behavior for each layout type and simplifies modifications to the
elements propagated for each layout.
Additionally, the push layout engine has been updated to utilize the new
mapping structure.
* feat(layout): add propagation toggle
Transforms the 'update everyone' button in the layout modal into a
toggle, so that presenter get immediate visual feedback of the current
layout propagation setting when the modal is opened.
* fix: update propagation button locale to 'update to everyone'
* test: update layout test
---------
Co-authored-by: Anton B <antonbsa.bck@gmail.com>
* fix incorrect prop type
* remove duplicated code
* fix Unexpected constant truthiness on the left-hand side of a `&&` expression.
* fix Correct one of the identical sub-expressions on both sides of operator
Adds 'sidekick' type of generic content. This type allows rendering
generic content in the sidekick panel, in addition to the existing 'main'
type, which renders generic content over the presentation area.
Each generic sidekick content set through plugins is automatically
associated with a button in the navigation bar to toggle its panel.
Renames the generic component to generic content and adds the first
type, called 'main'. This commit is a preparation to allow generic
content from plugins to have types.
* refactor(storage): replace Tracker.Dependency with observer hook
* fix(storage): set initial value
* refactor(storage): stop using Meteor's Session singleton