# Content Editor

### Content Editor vs Slide Editor

#### Content Editor
- **Full interface**: Page management panel with Main Playlist, System Pages
- **Page types**: Overlay, Master, Regular pages with sophisticated layering
- **Widget access**: All widgets including Content, Contents, Channel widgets
- **Complexity**: Multi-page navigation, embedding, advanced interactions
- **Use cases**: Standalone content, interactive applications, complex presentations

#### Slide Editor
- **Simplified interface**: No left panel, single-page editing only
- **Page structure**: Single slide page, no system pages
- **Embedding (2.1+)**: Slide widget, Playlist widget, Channel widget
- **Not supported**: Multi-page Content embedding
- **Media widget**: Cannot embed loops or playlists (data sources and folders only)
- **Design focus**: Lightweight, playlist-optimized, performance-focused
- **Use cases**: Playlist components, template creation, refined single-page designs

## Widget Ecosystem

### License Requirements
- **Lite License**: No Content creation capability - no widget access
- **Professional License**: Required minimum for all Content creation and widgets
- **Premium License**: Only required for PowerBI widget specifically

### Widget Categories

#### 1. Basic Category (8 widgets)
| Widget | Function | Key Features |
|--------|----------|--------------|
| **Text** | Typography and text | Custom fonts, dynamic sizing, data binding |
| **Image** | Static image display | Data source URL support, scaling options |
| **Video** | Single video playback | Hardware/HTML5 player options |
| **Shape** | Geometric design | Layout and design components |
| **Clock** | Time display | Timezone and format controls |
| **Custom** | HTML/CSS/JavaScript | Code embedding capabilities |
| **Scroll** | Scrolling content | Overflow content handling |
| **Weather** | Weather information | Multi-city configuration, device location override, customizable forecasts |
| **Audio** | Audio playback | Sound integration |

#### 2. Media Category (14 active widgets)
| Widget | Function | Key Behavior |
|--------|----------|--------------|
| **Gallery** | Image galleries | Multiple image display |
| **Carousel** | Rotating content | Content rotation interface |
| **Videos** | Multiple video playback | Plays from folder alphabetically |
| **Stream** | Live streaming | HTTP/UDP/RTSP + HDMI input |
| **YouTube** | YouTube integration | Direct embedding |
| **Content** | Single content embedding | Embed one content item |
| **Contents** | Multiple content embedding | Drag-and-drop sequencing |
| **Channel** | Channel widget integration | Channel content display |
| **QR Code** | QR code generation | Dynamic QR creation |
| **GDoc** | Google Docs integration | Live document display |
| **Calendar** | Calendar display | Specialized calendar widgets |
| **Lottie** | Animation files | Lottie animation support |
| **Facebook** | Social media | Facebook content embedding |
| **Media** | General media | Multi-format support, preset layouts, RSS/folder/playlist binding |

### Custom Widget - HTML File

Upload a `.html` or `.htm` page in **File Manager**, then choose **Custom -> Content type -> HTML File** and select **HTML file**. HTML is a distinct file type in lists and selectors. Authors can reuse the uploaded page in multiple widgets without copying its markup.

**Access:** In the Business and Enterprise UI, uploading new or replacement HTML requires **Technical manager**, **Administrator** or **Super administrator**. Interface-profile rules and normal file/folder permissions also apply. Authors with content-editing permission and file access can select existing HTML files.

**Playback:** The page loads in the editor and published content inside a sandboxed frame without same-origin access to Wallboard. **Interactive** enables viewer input. The selected file becomes a content resource dependency, but linked scripts, styles, images and services must remain reachable by the player; uploading HTML does not package those dependencies for offline use. An empty file selection leaves the frame blank.

**Preview image:** **Replace preview image** accepts a PNG thumbnail. **Generate from file** is unavailable for HTML; this is separate from viewing the page in the editor.

**Defaults and scope:** New Custom widgets default to **HTML Code**, with **Interactive** off. **URL** and **HTML Code** remain available. The HTML File picker excludes external URLs and app ZIPs. This stored-page workflow is separate from **Administrator -> Apps**, private HTML bundles and AI app generation.

### Custom Widget - External WebView

- **Default:** URL content renders in an iframe. On supported Windows and BrightSign players, **Use separate webview** renders it in a native browser surface instead; the option is off by default and does not apply to **HTML Code** or **HTML File**.
- **Placement/lifecycle:** The native browser uses the widget's position and size, remains interactive, and is removed when its page or content ends.
- **Script on load up:** Runs after load and main-page navigation to adapt the external page (for example, dismiss a prompt or hide an element). It is site-specific and may require updates when the page changes.
- **Separate player z-index:** Orders multiple external WebViews. On Windows, they always render above the main Wallboard content.
- **Limits:** Validate the real site on the target player. Native WebView mode avoids iframe embedding restrictions, but does not guarantee camera, microphone, authentication, popup, compliance, or site-specific browser behavior.
- **Platform gap (LG webOS, as of 2026-09-08):** Separate WebView is **Windows and BrightSign only**. On LG the web player embeds via iframe; there is no native external-WebView path without a new platform interface. Sites that rely on `SameSite=Lax` session cookies therefore cannot keep auth inside a cross-domain iframe — typical symptom is a reload loop (~10s). Offering Windows/BrightSign Separate WebView is the supported workaround; customers who cannot use an external player need a different device/platform path.

### Media Widget - Advanced Configuration Knowledge

#### Data Source Binding Capabilities
**Media widget can bind to three data source types:**
- **RSS fields**: Live RSS feed data integration
- **Folder**: File system folder contents

#### Preset Layout System (5 total options)

##### **Default Layout**
- **Structure**: Left image, right text
- **Image position**: Left side
- **Text layout**: Title and description stacked right side
- **Use case**: Standard news/RSS display format

##### **Custom Layout**
- **Structure**: Fully customizable design
- **Default appearance**: Looks identical to Default until customized
- **Customization scope**: Complete layout control
- **Use case**: Brand-specific designs, unique layouts

##### **Preset 1**
- **Structure**: Vertical card layout
- **Image position**: Top/above text
- **Text layout**: Title and description below image
- **Visual style**: Card-based design
- **Use case**: Portrait-oriented displays, card galleries

##### **Preset 2**
- **Structure**: Continuous sliding cards
- **Image treatment**: Full background image
- **Text overlay**: Title and description over background
- **Animation**: Sliding/carousel behavior
- **Use case**: Dynamic presentations, featured content rotation

##### **Preset 3**
- **Structure**: Multiple miniature cards
- **Layout**: Grid of small cards
- **Image treatment**: Background for each card
- **Text overlay**: Title and description over each background
- **Use case**: Multiple item overview, catalog display

#### Advanced Configuration Options

##### **Display Mode Options**
- **Collage**: Grid-based layout with multiple items displayed simultaneously
- **Slider**: Single item display with navigation between items
- **Continuous-slider**: Automatic sliding between items without user interaction

##### **Orientation Options** (9 total)
- **Auto**: Automatic orientation detection
- **Landscape**: Standard horizontal orientation
- **Landscape-flipped**: Horizontal with 180° rotation
- **Portrait**: Standard vertical orientation
- **Portrait-flipped**: Vertical with 180° rotation
- **Overlapping-vertical**: Vertical with item overlap
- **Overlapping-horizontal**: Horizontal with item overlap
- **Linear-vertical**: Vertical linear arrangement
- **Linear-vertical-flipped**: Vertical linear with 180° rotation
- **Linear-horizontal**: Horizontal linear arrangement
- **Linear-horizontal-flipped**: Horizontal linear with 180° rotation

##### **Media Fit Options**
- **Cover**: Scale image to cover entire container (may crop)
- **Contain**: Scale image to fit within container (preserves aspect ratio)
- **Fill**: Stretch image to fill container exactly (may distort)

##### **Feed Order Options**
- **Default**: Original data source order
- **Random**: Randomized item sequence
- **Reverse**: Reversed original order

##### **Animation & Timing Controls**
- **Automatic item swap**: Toggle for auto-progression
- **Duration**: Time per item display (seconds)
- **Animation duration**: Transition timing (seconds)

##### **Video Playback Options**
- **Hardware accelerated player**: Enhanced performance toggle
- **Play in background**: Continue video during transitions
- **Change on video end**: Advance when video completes
- **Mute videos**: Audio control toggle

##### **Collage Mode Specific**
When Display Mode is set to "Collage", additional grid and animation options become available:

**Item Mix Type Options** (8 total):
- **Random switch**: Random item transitions
- **Linear move up**: Sequential upward movement
- **Linear move up instant**: Instant upward movement (no animation)
- **Linear move down**: Sequential downward movement
- **Linear move down instant**: Instant downward movement (no animation)
- **Paginate**: Page-by-page navigation through items
- **Paginate by row**: Row-by-row navigation through grid
- **Randomize**: Randomized item display order

**Grid Layout Controls**:
- **Rows**: Number of grid rows
- **Columns**: Number of grid columns

**Size & Position Controls**:
- **Width**: Collage container width
- **Height**: Collage container height
- **Horizontal**: Horizontal positioning
- **Vertical**: Vertical positioning

##### **Slider Mode Specific Options**
When Display Mode is set to "Slider", additional configuration becomes available:

**Slide Type Options** (7 total):
- **Up**: Slide transition moving upward
- **Down**: Slide transition moving downward
- **Left**: Slide transition moving left
- **Right**: Slide transition moving right
- **Instant**: No transition animation (immediate change)
- **Fade**: Fade in/out transition between items
- **Hide**: Hide previous item before showing next

**Size & Position Controls**:
- **Width**: Slider container width
- **Height**: Slider container height
- **Horizontal**: Horizontal positioning
- **Vertical**: Vertical positioning

**Style Section**: Additional styling options for slider appearance

##### **Continuous-Slider Mode Specific Options**
When Display Mode is set to "Continuous-slider", the slide type options are reduced:

**Slide Type Options** (4 total):
- **Up**: Continuous slide transition moving upward
- **Down**: Continuous slide transition moving downward
- **Left**: Continuous slide transition moving left
- **Right**: Continuous slide transition moving right

*Note: Continuous-slider mode removes Instant, Fade, and Hide options, focusing only on directional movement transitions.*

### Weather Widget - Advanced Multi-Location Configuration

#### Multi-City Management System
The Weather widget supports sophisticated location management with both static and dynamic configuration:

**Static Location Configuration (Content Editor)**:
- **City List Management**: Add multiple cities using City ID, Display Name, and Country Code
- **City ID**: Internal weather service identifier for location
- **Display Name**: Custom name shown on screen (can differ from actual city name)
- **Country Code**: Two-letter country identifier (HU, US, DE, etc.)
- **Apply to All Widgets**: Share city list across all weather widgets on current page (page-level, not content-wide)

**Dynamic Device Location Override**:
The device-level "Weather Location" setting creates sophisticated override behavior:

**Single City in Editor List**:
- Device weather location **overwrites** the editor city list completely
- Editor configuration is ignored when device has weather location set

**Multiple Cities in Editor List (2+)**:
- Device weather location **adds** to the editor city list
- Creates combined list: Editor cities + Device location
- Device location appears as additional option, not visible in editor UI
- Device weather location format: `Budapest_HU,Veszprem_HU,Szeged_HU` (comma-separated)

#### Configuration and Display Options

**Animation & Timing**:
- **Delay**: Time between city transitions (seconds)
- **Direction**: Transition direction (Left, Right, Top, Bottom, Fade)

**Visual Presentation**:
- **Icon set**: Multiple weather icon styles available (extensive options)
- **Language**: Multiple language options for weather terms (extensive options)
- **Template**: Square (and other layout templates)
- **Icon size**: Scalable icon sizing (1-100)

**Forecast Configuration**:
- **Forecast**: Toggle extended forecast display
- **Day offset**: Forecast day selection with multiple options:
    - **Today**: Current day weather
    - **Tomorrow**: Next day forecast
    - **+2 days** through **+8 days**: Extended forecast up to 8 days ahead
- **Partial**: Layout customization - select which elements to display:
    - **Icon**: Weather icon display
    - **City**: City name display
    - **Temperature**: Temperature value
    - **Wind**: Wind information
    - **Wind direction**: Wind direction indicator
    - **Humidity**: Humidity percentage
    - **Visibility**: Visibility distance
    - **Description**: Weather condition text (e.g., "Sunny")

**Part Position Options** (9 total):
- **Center-Center**: Elements positioned in widget center
- **Center-Left**: Center vertically, left horizontally
- **Center-Right**: Center vertically, right horizontally
- **Top-Center**: Top vertically, center horizontally
- **Top-Left**: Top-left corner positioning
- **Top-Right**: Top-right corner positioning
- **Bottom-Center**: Bottom vertically, center horizontally
- **Bottom-Left**: Bottom-left corner positioning
- **Bottom-Right**: Bottom-right corner positioning

**Template Layout Options**:
The Template setting controls the overall arrangement of weather elements:

**Vertical Template**:
```
New York          ← City name (top center)
    ☀️            ← Weather icon (center)
  Sunny           ← Description (below icon)
   19°C           ← Temperature (bottom center)
```

**Horizontal Template**:
```
Berlin  ☀️  Sunny  20°C
  ↑     ↑     ↑     ↑
City   Icon  Desc  Temp
```

**Square Template** (Default):
```
Budapest          ← City name (top)
    ☀️            ← Weather icon (center)
  Sunny           ← Description (below icon)
       27°C       ← Temperature (lower right)
```

**Template Selection Strategy**:
- **Vertical**: Tall, narrow widgets - maximizes vertical space usage
- **Horizontal**: Wide, short widgets - single-line weather display
- **Square**: Balanced layout - standard weather card format

**Partial Configuration Purpose**:
The Partial option allows selective element display rather than showing all weather information, enabling customized layouts based on available space and information priorities.
- **Show city**: Toggle city name display
- **Unit**: Temperature unit (Celsius, Fahrenheit)
- **Show unit**: Toggle unit symbol display

#### Strategic Implementation Patterns

**Multi-Location Scenarios**:
- **Corporate Offices**: Show weather for multiple office locations
- **Retail Chains**: Display local weather + regional conditions
- **Transportation Hubs**: Multiple destination weather information
- **Event Venues**: Local + visitor origin weather

**Device Override Use Cases**:
- **Template Deployment**: Single weather widget template deployed to multiple locations
- **Device-Specific Customization**: Local weather added to corporate content
- **Dynamic Location Management**: IT admin controls local weather without content modification

### Stream Widget - Platform compatibility

The Stream Widget enables live streaming capabilities within Wallboard digital signage content, supporting multiple streaming methods and protocols.

#### Two Main Streaming Methods

##### 1. Network Stream
- **Source**: Stream from HDMI sources (set-top boxes, etc.) using HDMI-IN-NETWORK-OUT streamers
- **Protocols**: HTTP or UDP protocol support
- **Connection**: Stream Widget connects directly to streamer's input
- **Platform Considerations**: Supported formats and protocols vary between Samsung, Windows, and Android platforms
- **Hardware Examples**:
  - Johansson HDMI Streamer 8210
  - VLC player for streaming

##### 2. HDMI Input
- **Direct Connection**: Use devices with built-in HDMI input capability
- **Supported Devices**:
  - Samsung (with picture-in-picture)
  - Android with Giada DN75
  - BrightSign XT1144
  - Windows with USB capture input
- **Configuration**: Use Stream Widget with HDMI-IN settings

#### Streaming Protocol Support by Platform

**Windows:**
- ✅ HTTP streams (with and without password)
- ❌ RTSP streams
- ❌ UDP streams

**Android:**
- ✅ HTTP streams (with and without password)
- ✅ RTSP streams (except H.265 encoded)
- ✅ UDP streams

**All Platforms:**
- ✅ HTTP streams without password protection (universal compatibility)

#### Protocol Support & Configuration

##### Source Options
- **HTTP video** (with optional subtitles)
- **HTTP audio**
- **UDP/RTSP streams**
- **HDMI input** (requires HDMI IN port)

##### Player Types
- **HTTP streams**: Always use HTML player
- **UDP and RTSP streams**: Always use hardware accelerated player
- **Password Protection**: HTTP streams without password work on all platforms

##### Authentication for Protected Streams
For password-protected HTTP streams, use device command:

```json
{
  "user_command": "SetWebViewBasicAuthentication",
  "command_data": {
    "credentialList": [
      {
        "domainUrl": "http://YourHTTPStreamHere/",
        "userName": "",
        "password": ""
      }
    ]
  }
}
```

#### 3. Dynamic Charts Category (10 widgets)
**Critical Requirement**: All widgets require data source binding - cannot use static data.

| Widget      | Function           | Data Requirement |
|-------------|--------------------|------------------|
| **Meter**   | Gauge displays     | Data binding required |
| **Pie**     | Pie charts         | Data binding required |
| **Bar**     | Bar charts         | Data binding required |
| **Column**  | Column charts      | Data binding required |
| **Line**    | Line graphs        | Data binding required |
| **Area**    | Area charts        | Data binding required |
| **Pyramid** | Pyramid charts     | Data binding required |
| **Gauge**   | Gauge meters       | Data binding required |
| **Table**   | Table display      | Data binding required |
| **PowerBI** | Microsoft Power BI | Data binding + Premium License |

### Table Widget - Comprehensive Configuration System

#### Core Architecture
The Table widget follows a unique configuration pattern:
- **Main tab**: Only data binding configuration
- **Other tab**: Complete visual styling and layout control system
- **Pure data-driven**: All content comes from data sources, no static data support

#### Visual Styling Controls (Other Tab)

**Effects & Background**:
- **Background**: Background color/image selection
- **BG color**: Background color picker with transparency
- **Size & Position**: Width/Height (px), Position (px), Rotation controls

**Table Style**:
- **Enable table height override**: Adjusts text bounding box height as a percentage of the cell height.

**Key Concept**: Table cells have two independent heights:
- **Cell height**: Total vertical space of the cell
- **Text bounding box height**: Space occupied by text content

- **Table height (%)**: Set custom height as a percentage of the available space

**Values**: 0% to 100%

**Example values**:
- `0%`: Text maintains natural height (default)
- `50%`: Text bounding box fills 50% of cell height
- `100%`: Text bounding box expands to full cell height

**Warning**: At 100%, long text may overlap bottom pagination depending on alignment settings.

**Typography System**:
- **Font size**: Adjustable slider (15-500 range)
- **Font family**: Dropdown selection (Open Sans, etc.)
- **Style**: Bold, Italic, Underline toggle buttons
- **Font color**: Color picker for text
- **Letter spacing**: Character spacing control (-25 to 250)
- **Text shadow**: Shadow effects dropdown
- **Letter case**: Text case transformation options

**Cell Configuration**:
- **Row height**: Dynamic, Fixed, or custom options
- **Padding**: Cell internal spacing (0-40px)
- **Border**: Border width and style controls
- **BG color**: Cell background color

**Layout & Alignment**:
- **Vertical alignment**: Top, Center, Bottom options (icon-based)
- **Horizontal alignment**: Left, Center, Right, Justify options (icon-based)
- **Different header**: Separate header styling toggle
- **Different even/odd**: Alternating row styling toggle

**Advanced Visual Effects**:
- **Custom margin**: Margin spacing control
- **All margins**: Global margin settings
- **Shadow**: Drop shadow options
- **Opacity**: Transparency control (0-100%)
- **Rounding**: Corner rounding (0px-1024px)
- **Mask**: Masking effects
- **Flip**: None or flip transformation options
- **Enter anim**: Entry animation selection
- **Exit anim**: Exit animation selection
- **Click through**: Click-through behavior toggle
- **Hide based on**: Conditional visibility with data binding
- **BG color**: Additional background color binding

#### Table Data Configuration System

**Data Navigation Process**:
The Table widget uses a sophisticated pivot-based data selection system:

1. **Data Source Selection**: Choose data source (e.g., "Pokedex")
2. **Collection Navigation**: Navigate to data array (e.g., "pokemon")
3. **Pivot Point Setting**: Set pivot at collection level (removes specific index selection)
4. **Data Access**: Gain access to entire dataset (e.g., all Pokemon 0-151)

**Column Selection Interface**:
- **Available Fields**: All data fields from collection appear as selectable columns
- **Column Configuration**: Each column can be individually configured
- **Field Types**: name, img, id, num, type, etc. (based on data structure)

**Column Configuration Options**:
Each selected column provides detailed configuration:
- **Column Name**: Custom display name (can differ from data field name)
- **Width Setting**: Pixel width control
- **Visibility Toggle**: Show/hide column
- **Type Selection**: Critical for data display format
    - **text**: Display as plain text
    - **image**: Display URLs as images (critical for img columns)
    - **checkbox**: Interactive checkbox controls
    - **radioButton**: Radio button controls
    - **content**: Embedded content display
- **Column-Level Actions**: Edit, sort, filter controls per column

**Advanced Configuration Tabs**:
- **Table level settings**: Overall table behavior
- **Select columns**: Column selection and basic settings
- **Column level settings**: Individual column detailed configuration
- **Displayed value**: Data formatting and transformation
- **Dynamic style**: Conditional styling based on data values
- **Events**: Interactive behaviors and actions

**Data Type Handling**:
The Pokemon example demonstrates URL-to-image transformation:
- **Raw data**: URLs like "http://www.serebii.net/pokemongo/pokemon/042.png"
- **Type setting**: "image" converts URLs to displayed images
- **Result**: Visual images instead of text URLs in table cells

This system enables complex data tables with mixed content types, interactive elements, and sophisticated data presentation within a single widget.

#### 4. Interactions Category (8 widgets)
| Widget | Function | Purpose |
|--------|----------|---------|
| **Checkbox** | Checkbox controls | Form input |
| **Radio** | Radio buttons | Form input |
| **Input** | Text fields | Form input |
| **Reset** | Reset form state | Form control |
| **Submit** | Submit button | Form control |
| **Data Store** | Data summary | Data aggregation |
| **Stopper** | Stop/pause controls | Playback control |
| **PDF** | PDF display | Document display |

## Page Management System

### Page Types & Hierarchy

| Page Type | Layer Position | Quantity | Duration | Transitions | Background Rules |
|-----------|----------------|----------|----------|-------------|------------------|
| **Overlay Page** | Top (always visible) | Max 1 | Persistent | None | Must be transparent |
| **Regular Pages** | Middle (sequence) | Unlimited | User-defined | Full transitions | Can have backgrounds* |
| **Master Page** | Bottom (always visible) | Max 1 | Persistent | None | Can have backgrounds |

*Regular pages must be transparent when using master pages.

### Layer Stacking Behavior
```
┌─────────────────┐ ← Overlay Page (logos, persistent UI)
│   Logo/Vignette │   Always on top, no animations
├─────────────────┤
│ Page 1 → Page 2 │ ← Regular Pages (content sequence)
│ Page 2 → Page 3 │   Transitions, duration-based timing
├─────────────────┤
│ Background Art  │ ← Master Page (consistent background)
└─────────────────┘   Always on bottom, no animations
```

### Special Page Types
- **Other Pages**: Non-sequential pages accessible directly but not part of automatic progression
- **Popup Pages**: Triggered via widget settings > Other > Interaction > Click type > Popup

## Configuration Hierarchy

### Page-Level Settings

#### Background Configuration
- **Background types**:
    - **Image and color**: Standard background with image/color support
    - **Video**: Video background playback
    - **HDMI input**: Direct hardware video input as background
- **Background audio**:
    - **No audio**: Silent background
    - **One time audio**: Audio plays once
    - **Repeating audio**: Audio loops continuously

#### Animation Controls
- **Animation types**:
    - **Fade**: Fade in/out transitions
    - **No animation**: No transition effects
    - **Slide left to right**: Content slides from left
    - **Slide top to bottom**: Content slides from top
    - **Slide bottom to top**: Content slides from bottom
    - **Slide right to left**: Content slides from right
    - **Random**: Randomly selected transition
- **Animation duration**: Configurable timing (e.g., 1 sec)

#### Custom Reporting
- **Name field**: Custom identifier for reported data
- **Duration field**: Time duration for reporting period (seconds)
- **Plays field**: Number of plays represented by duration
- **Play calculation**: Duration ÷ Plays = Time per play unit

#### Dynamic Navigation
- **Next page**: Custom page progression vs sequential
- **Automatic**: Auto-advancement toggle
- **Page delay**: Minimum 3 seconds
- **When widget finishes**: Page change triggers when widget completes
- **Screensaver control**: Per-page screensaver settings

### Content-Level Settings

#### Audio System

**Background Audio Configuration:**

**Audio Types:**
- **No Audio**: Disabled
- **Single Audio**: Plays once, then stops
- **Repeating Audio**: Loops continuously
- **Playlist Audio**: Sequential playback from Wallboard playlist (audio-only items)
- **Stream Audio**: Live audio streams (m3u8 HLS, HTTP audio)
- **CloudCover Audio**: Pandora CloudCover iframe URL-based streaming

**Volume Control:**
- **Base Volume**: 0-100% normal playback level
- **Enable Ducking**: Toggle audio ducking functionality
- **Duck Level**: 0-100% (direct multiplier - 25% default = volume becomes 25% of original)
- **Fade Duration**: 0-1000ms transition timing (300ms default, 0 = instant)

**Audio Ducking Behavior:**
- Background audio automatically reduces when foreground audio plays
- Restores to original volume when foreground audio ends
- Content-level background audio = ducking TARGET
- Foreground audio sources = ducking TRIGGERS

**Widget Audio Triggers (Automatic):**
Widgets that trigger background audio ducking when playing:
- **Audio**: HTML5 audio elements
- **Video**: HTML5 and hardware-accelerated players (both modes)
- **VideoGallery**: HTML5 and external players with gallery transitions
- **Stream**: Audio/video HTTP streams
- **YouTube**: Iframe player (when volume > 0)
- **Media (RSS)**: Video content from RSS feeds
- **Content/Contents**: Embedded Wallboard content (automatic iframe audio detection via postMessage)
- **Custom**: Custom widget (HTML/CSS/JavaScript code or webpage embedding) with "Contains audio" checkbox enabled
- **Page-level audio**: Page-specific background music

**Mute All Media (Content/Contents Widgets):**
- **Checkbox location**: Widget configuration > Source section
- **Effect**: Silences ALL audio in embedded content (any depth)
- **Propagation**: Iframe Mode (`?mute=true` param), Performance Mode (`volume=0`), One Page Mode (`muted=true`)
- **Background audio**: Completely skipped when muted
- **Integration**: Muted widgets don't trigger ducking (silent media optimization)

**File-Level Mute:**
- Audio/video files can be muted during upload or with **Files > Edit mute**
- Always keeps that file silent across direct, folder, widget, and nested playback; Playlist/folder settings cannot override it
- Playlist volume is disabled with **Muted on file-level**; its configured value is retained and applies again if file mute is removed

**Playlist Mute System:**
- **Playlist-level mute** (`loopData.mute`): Entire playlist can be muted
    - Applies when playlist embedded in Content/Contents widget
    - All pages within playlist affected
- **Page-level mute** (`slide.mute`): Individual pages (Folders, Slides, embedded Playlists) can be muted within playlist
- **Inheritance rule**: Mute flows DOWN only (parent overrides child, unmute cannot flow down)
    - Each level controls its own mute setting
    - Parent mute = true → all children muted (cannot unmute at lower levels)
    - Parent mute = false/unset → children control their own mute independently
- **Check order** (determines if page is muted):
    1. Parent content mute (when playlist embedded in content)
    2. Playlist-level mute (`loopData.mute`)
    3. Page-level mute (`slide.mute`)
    4. Source file mute (cannot be overridden)
- **Propagation**: Mute propagates to nested content (any depth, downward only)
- **Technical**: Muted pages set `volume=0`, don't register with ducking system

**Automatic Behaviors:**
- **Silent media optimization**: Muted or zero-volume widgets don't trigger ducking
- **Performance Mode - Background Audio Only**: Content/Contents widgets suppress ONLY embedded content's background audio. Widget audio (Video, Audio, Stream, etc.) plays normally and triggers ducking in both Performance Mode and iframe mode. Ducking behavior identical regardless of rendering mode.
- **Volume check**: Widgets only register for ducking if `muted !== true` AND `volume > 0`

#### Master Page & Display
- **Master page**: Select any existing Content to act as master page (different from System Pages master page)
- **Stretch content**: Content scaling behavior
- **Writing direction**: LTR/RTL language support
- **Disable transitive quick editing**: Editing permissions control

#### Performance & Rendering
- **Performance mode**: Pre-loading system for smooth transitions
    - **Benefits**: Seamless transitions, reduced lag, weaker device optimization
    - **Limitations**: No overlay/master pages in widgets, disabled interactions, limited animations
    - **Scope**: Content level, Content/Contents widgets, Channel widgets
- **Data binding**: Base data path for global data context
- **Datasource mappers**: JavaScript transformation engine

#### Synchronization
- **Multi-device sync**: Coordinated display across devices
    - **Principle**: Absolute time-based vs device startup time
    - **Platform compatibility**: Best between same device types
    - **Requirements**: Same content, accurate time sync
    - **Platform implementations**:
        - Android: NTP time synchronization
        - BrightSign: Server sync + local SyncManager
        - Windows: NTP with HTTP fallback

#### Advanced Features
- **External events** (Premium):
    - Sensor events: IoT integration
    - Data source events: Data change triggers
    - Time-based events: Scheduled automation
    - Page change events: Navigation triggers
- **Content script**: Custom JavaScript at content level
- **Translation**: Multi-language widget support

#### Analytics
- **Widget statistics**: Widget-level tracking
- **Asset statistics**: Asset-level tracking

This comprehensive knowledge base provides AI agents with complete understanding of the Wallboard content creation system for effective user support and guidance.
