Methods

(static) evaluateGridTextureState() → {void}

Central texture decision — called when renderTracking, textureManagerState, or loadedRowRange changes.

State machine (same as JRRowItem but without horizontal buffer): "destroyed" → force unload everything (no guards) "init" → no-op (freeze state during layout changes) "hidden" → no-op (freeze — screen is behind another on the stack) "active" → managed rows (visible + buffer): always loaded. Outside rows: renderTracking decides.

Returns:
Type: 
void

(static) forceUnloadGridTexture() → {void}

Force-unloads textures unconditionally — used only during onDestroy(). Ignores m.isTextureUnloaded and m.cachedPosterUri guards so every cell releases memory.

Returns:
Type: 
void

(static) getGridRowPosition() → {string}

Returns this cell's row position relative to the managed row ranges. Derives the grid row from the cached flat index and numColumns. or "outside" if not in any managed range

Returns:

"visible" if in a visible row, "buffer" if in a vertical buffer row,

Type: 
string

(static) getGridTextureManagerState() → {string}

Returns the current texture manager state from the content root.

Returns:

"init", "active", "hidden", "destroyed", or "init" if unavailable

Type: 
string

(static) init() → {void}

Returns:
Type: 
void

(static) onFocusChanged() → {void}

Enable title scrolling based on item focus

Returns:
Type: 
void

(static) onItemContentChanged() → {void}

Returns:
Type: 
void

(static) onLoadedRowRangeChanged() → {void}

Fires when the parent screen updates the loaded row range (focus change).

Returns:
Type: 
void

(static) onPosterLoadStatusChanged() → {void}

Toggle the JRPlaceholder fallback based on the real poster's load state. Mirrors the canonical state machine from JRRowItem.bs onPosterLoadStatusChanged.

Returns:
Type: 
void

(static) onRenderTrackingChanged() → {void}

Fires when the cell scrolls in/out of the visible area.

Returns:
Type: 
void

(static) onTextureManagerStateChanged() → {void}

Fires when textureManagerState changes (init → active, active → hidden, etc.)

Returns:
Type: 
void

(static) reloadGridTexture() → {void}

Restores poster URI from cache when the cell scrolls back on screen. The backdrop will show briefly while the image reloads from Roku's HTTP cache.

Returns:
Type: 
void

(static) resetPlaceholderToLoading() → {void}

Reset the JRPlaceholder to loading state (themed backdrop visible, no glyph). Used by the initial-load branches in onItemContentChanged and by the texture unload paths so off-screen / unloaded cells don't carry a stale failure-state glyph back into view when they reload.

Returns:
Type: 
void

(static) setSquarePosterLayout() → {void}

Apply square 323x323 layout for music items (artists, albums, genres)

Returns:
Type: 
void

(static) setupGridTextureObserver() → {void}

One-time setup: observes loadedRowRange and textureManagerState on the MarkupGrid's content root. The content root is the direct parent of itemContent in the content tree (flat model, unlike RowList's 2-level hierarchy): contentRoot → itemNode (itemContent) Called from onItemContentChanged. Skips if already connected.

Returns:
Type: 
void

(static) shouldLoadGridTexture() → {boolean}

Determines whether this cell should load its poster during initial render. Mirrors evaluateGridTextureState logic: managed rows trust buffer logic, outside rows trust renderTracking.

Returns:
Type: 
boolean

(static) showPlaceholder(itemType) → {void}

Flip the placeholder into failure state with a type-appropriate glyph, then clear the poster URI so the glyph isn't covered by a stale broken image. itemType="" puts JRPlaceholder in loading state (backdrop only, no glyph); resolveItemPlaceholderType returns "" only for invalid/typeless items, so valid items always end up here with a typed glyph or the Folder fallback.

Parameters:
NameTypeDescription
itemTypestring
Returns:
Type: 
void

(static) unloadGridTexture() → {void}

Clears poster URI to release texture memory when the cell is off-screen. Items with no real image (cachedPosterUri = "") are skipped — they already show a lightweight local placeholder that costs negligible texture memory.

Returns:
Type: 
void