MotionScript

@motion-script/core


@motion-script/core / StorageAdapter

Abstract Class: StorageAdapter

Defined in: platform/storage-adapter.ts:5

Internal

Constructors

Constructor

new StorageAdapter(catalog, viewport): StorageAdapter

Defined in: platform/storage-adapter.ts:8

Parameters

catalog

AssetCatalog

viewport

Size2D

Returns

StorageAdapter

Properties

cachedAssets

protected cachedAssets: Set<string>

Defined in: platform/storage-adapter.ts:37

Keys of assets that have been fully loaded and are ready to use.


catalog

protected catalog: AssetCatalog

Defined in: platform/storage-adapter.ts:6


inFlightLoads

protected inFlightLoads: Map<string, Promise<void>>

Defined in: platform/storage-adapter.ts:35

Every asset src whose loadXxx is currently in flight, mapped to its pending promise. The render path awaits these to guarantee no draw happens while a load is still resolving. Cleared on completion.


viewport

protected viewport: Size2D

Defined in: platform/storage-adapter.ts:7

Methods

dispose()

dispose(): void

Defined in: platform/storage-adapter.ts:142

Returns

void


fetchAudioData()

abstract fetchAudioData(src): Promise<ArrayBuffer>

Defined in: platform/storage-adapter.ts:114

Parameters

src

string

Returns

Promise<ArrayBuffer>


loadAsset()

loadAsset(key, value): Promise<void>

Defined in: platform/storage-adapter.ts:41

Parameters

key

string

value

AssetRecord

Returns

Promise<void>


loadAudio()

abstract loadAudio(src, startFrame, endFrame, trimStart, trimEnd?): Promise<void>

Defined in: platform/storage-adapter.ts:107

Parameters

src

string

startFrame

number

endFrame

number

trimStart

number

trimEnd?

number

Returns

Promise<void>


loadFont()

abstract loadFont(src, fontFamily, fontWeight): Promise<void>

Defined in: platform/storage-adapter.ts:115

Parameters

src

string

fontFamily

string

fontWeight

number

Returns

Promise<void>


loadImage()

abstract loadImage(src, width, height): Promise<void>

Defined in: platform/storage-adapter.ts:97

Parameters

src

string

width

number

height

number

Returns

Promise<void>


loadVideo()

abstract loadVideo(src, startFrame, endFrame, width, height, trimStart, trimEnd?): Promise<void>

Defined in: platform/storage-adapter.ts:98

Parameters

src

string

startFrame

number

endFrame

number

width

number

height

number

trimStart

number

trimEnd?

number

Returns

Promise<void>


parseFontKey()

protected parseFontKey(key): object

Defined in: platform/storage-adapter.ts:86

Parameters

key

string

Returns

object

fontFamily

fontFamily: string

fontWeight

fontWeight: number


setCatalog()

setCatalog(catalog): void

Defined in: platform/storage-adapter.ts:27

Point the adapter at a different asset catalog, keeping every decode it has already cached.

Safe because the catalog supplies metadata (durations, intrinsic sizes) while the caches are keyed by source URL: a src the new catalog drops leaves an orphaned decode, and a src it adds simply isn't cached yet. Neither is a correctness problem, which is what lets a long-lived renderer take an updated manifest without paying to re-decode everything still in use.

The viewport deliberately has no such setter — it clamps the resolution images are decoded at, so changing it makes cached decodes genuinely wrong, and the adapter has to be rebuilt.

Parameters

catalog

AssetCatalog

Returns

void


setPlaying()

setPlaying(_playing): void

Defined in: platform/storage-adapter.ts:136

Notify the adapter whether playback is live. Time-varying media (video) uses this to prefetch ahead only while playing and to quiesce on pause, so a paused timeline doesn't drain a backlog of stale decodes. No-op by default.

Parameters

_playing

boolean

Returns

void


warmPendingVideo()

warmPendingVideo(): Promise<boolean>

Defined in: platform/storage-adapter.ts:127

Decode any exact media frames the most recent render asked for but couldn't satisfy synchronously (e.g. a video frame at a freshly-seeked timestamp), and report whether there were any. A blocking caller (seek / screenshot / export) renders once, awaits this, and re-renders while it returns true so the frame is accurate even on a cold jump. Defaults to a no-op for adapters with no time-varying media.

Returns

Promise<boolean>