@panelwave/player 1.3.0 → 1.6.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/index.d.ts
CHANGED
|
@@ -401,10 +401,12 @@ interface BalloonConfig {
|
|
|
401
401
|
balloonType: BalloonType;
|
|
402
402
|
/** 0-1 (0=rectangle, 1=ellipse) */
|
|
403
403
|
cornerRadius: number;
|
|
404
|
-
/**
|
|
404
|
+
/** Authored width in px — the floor; with textFit 'grow' the body grows for longer text */
|
|
405
405
|
maxWidth: number;
|
|
406
|
-
/**
|
|
406
|
+
/** Authored height in px — the floor; with textFit 'grow' the body grows for longer text */
|
|
407
407
|
maxHeight: number;
|
|
408
|
+
/** grow (default): the balloon grows when the text needs more room; fixed: keeps the authored size (schema 1.8.0) */
|
|
409
|
+
textFit?: 'grow' | 'fixed';
|
|
408
410
|
/** CSS font-family */
|
|
409
411
|
fontFamily: string;
|
|
410
412
|
/** Pixels */
|
|
@@ -1431,8 +1433,14 @@ interface SequenceAudioTrack {
|
|
|
1431
1433
|
muted?: boolean;
|
|
1432
1434
|
/** Optional explicit panel range start */
|
|
1433
1435
|
startPanelId?: string;
|
|
1434
|
-
/** Optional explicit panel range end */
|
|
1436
|
+
/** Optional explicit panel range end (span 'work': may be in a later chapter) */
|
|
1435
1437
|
endPanelId?: string;
|
|
1438
|
+
/**
|
|
1439
|
+
* How long the track lasts, as authored (format 1.8.0, additive; default
|
|
1440
|
+
* 'custom'): 'page' / 'chapter' = that panel range, 'work' = keeps playing
|
|
1441
|
+
* across chapter boundaries until endPanelId (else the last panel).
|
|
1442
|
+
*/
|
|
1443
|
+
span?: 'custom' | 'page' | 'chapter' | 'work';
|
|
1436
1444
|
}
|
|
1437
1445
|
/**
|
|
1438
1446
|
* Chapter containing panels and navigation graph
|
|
@@ -3230,6 +3238,8 @@ interface AudioTrack {
|
|
|
3230
3238
|
volume?: number;
|
|
3231
3239
|
fadeIn?: number;
|
|
3232
3240
|
fadeOut?: number;
|
|
3241
|
+
/** Playback speed (0.25-4; 1 = as recorded). */
|
|
3242
|
+
playbackRate?: number;
|
|
3233
3243
|
}
|
|
3234
3244
|
/**
|
|
3235
3245
|
* Playback state
|
|
@@ -3302,9 +3312,9 @@ declare class AudioEngineService {
|
|
|
3302
3312
|
*/
|
|
3303
3313
|
resumeContext(): Promise<void>;
|
|
3304
3314
|
/**
|
|
3305
|
-
* Play audio track
|
|
3315
|
+
* Play audio track, optionally from `offsetSeconds` into the file.
|
|
3306
3316
|
*/
|
|
3307
|
-
play(track: AudioTrack): Promise<void>;
|
|
3317
|
+
play(track: AudioTrack, offsetSeconds?: number): Promise<void>;
|
|
3308
3318
|
/**
|
|
3309
3319
|
* Stop audio track
|
|
3310
3320
|
*/
|
|
@@ -3419,6 +3429,119 @@ declare class AudioEngineService {
|
|
|
3419
3429
|
static ɵprov: i0.ɵɵInjectableDeclaration<AudioEngineService>;
|
|
3420
3430
|
}
|
|
3421
3431
|
|
|
3432
|
+
/**
|
|
3433
|
+
* Sequence Audio Service
|
|
3434
|
+
*
|
|
3435
|
+
* Plays a work's timeline audio (`chapters[].sequenceAudioTracks` — music,
|
|
3436
|
+
* ambience, voiceover beds) while the reader moves through the panels:
|
|
3437
|
+
*
|
|
3438
|
+
* - entering a panel starts every track that covers it, at the right offset
|
|
3439
|
+
* (a jump into the middle of a scene picks the music up where it is);
|
|
3440
|
+
* - a track keeps playing while the reader stays inside its range, so
|
|
3441
|
+
* music does not restart on every panel; leaving the range fades it out
|
|
3442
|
+
* (its `fadeOut`, else 250 ms);
|
|
3443
|
+
* - a track that starts or ends inside a panel is delayed / stopped there;
|
|
3444
|
+
* - `span: 'work'` tracks continue across chapter boundaries.
|
|
3445
|
+
*
|
|
3446
|
+
* Placement follows the CMS timeline (see sequence-audio-timeline.ts). Roles
|
|
3447
|
+
* map onto the engine buses, so the reader's Audio / SFX / Speech toggles
|
|
3448
|
+
* apply. Tracks refused by the autoplay policy are retried on the first
|
|
3449
|
+
* user gesture.
|
|
3450
|
+
*/
|
|
3451
|
+
|
|
3452
|
+
/** Fade when a track ends because the reader left its range (unless it has its own fadeOut). */
|
|
3453
|
+
declare const SEQUENCE_AUDIO_LEAVE_FADE_MS = 250;
|
|
3454
|
+
declare class SequenceAudioService implements OnDestroy {
|
|
3455
|
+
private readonly engine;
|
|
3456
|
+
private readonly manifestService;
|
|
3457
|
+
private readonly gesture;
|
|
3458
|
+
/** Tracks the current panel wants, by engine id. */
|
|
3459
|
+
private desired;
|
|
3460
|
+
/** Refused by the autoplay policy; retried on the first gesture. */
|
|
3461
|
+
private blocked;
|
|
3462
|
+
private warned;
|
|
3463
|
+
private layoutCache?;
|
|
3464
|
+
private readonly gestureSub;
|
|
3465
|
+
constructor();
|
|
3466
|
+
ngOnDestroy(): void;
|
|
3467
|
+
/**
|
|
3468
|
+
* Follow the reader: call on every panel change (and when the page format
|
|
3469
|
+
* changes). `panelId` undefined = silence (cover, locked panel, teardown).
|
|
3470
|
+
*/
|
|
3471
|
+
syncPanel(panelId: string | undefined, format: string | null): void;
|
|
3472
|
+
/** Stop everything this service started. */
|
|
3473
|
+
stopAll(): void;
|
|
3474
|
+
/** Engine ids of the tracks the current panel wants (started, pending or blocked). */
|
|
3475
|
+
getDesiredTrackIds(): string[];
|
|
3476
|
+
private layout;
|
|
3477
|
+
private schedule;
|
|
3478
|
+
/** Stop the track inside this panel when its range ends here. */
|
|
3479
|
+
private armStop;
|
|
3480
|
+
private start;
|
|
3481
|
+
private release;
|
|
3482
|
+
private leaveFade;
|
|
3483
|
+
private onUserGesture;
|
|
3484
|
+
private isAutoplayRefusal;
|
|
3485
|
+
private warnOnce;
|
|
3486
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<SequenceAudioService, never>;
|
|
3487
|
+
static ɵprov: i0.ɵɵInjectableDeclaration<SequenceAudioService>;
|
|
3488
|
+
}
|
|
3489
|
+
|
|
3490
|
+
/**
|
|
3491
|
+
* Timeline (sequence) audio placement for the reader — the same model as the
|
|
3492
|
+
* CMS editor's timeline: the work is one line of panels (chapters in order →
|
|
3493
|
+
* the active format's pages → reading order), each panel lasting its
|
|
3494
|
+
* `durationMs` (else the work's seconds-per-panel, else 5 s).
|
|
3495
|
+
*
|
|
3496
|
+
* A chapter's `sequenceAudioTracks` sit on that line relative to their
|
|
3497
|
+
* chapter's start. `span` (format 1.8.0): 'page' / 'chapter' tracks cover
|
|
3498
|
+
* their startPanelId..endPanelId range; a 'work' track keeps playing across
|
|
3499
|
+
* chapter boundaries until endPanelId (else the work's last panel); every
|
|
3500
|
+
* other track ends with its chapter.
|
|
3501
|
+
*
|
|
3502
|
+
* The reader does not follow a clock, so the timeline is used per panel:
|
|
3503
|
+
* entering a panel tells which tracks cover it, from which offset, and
|
|
3504
|
+
* whether one starts or ends inside it (`cuesForPanel`).
|
|
3505
|
+
*/
|
|
3506
|
+
|
|
3507
|
+
interface TimelineEntry {
|
|
3508
|
+
panelId: string;
|
|
3509
|
+
chapterId: string;
|
|
3510
|
+
startMs: number;
|
|
3511
|
+
endMs: number;
|
|
3512
|
+
}
|
|
3513
|
+
interface WorkTimeline {
|
|
3514
|
+
entries: TimelineEntry[];
|
|
3515
|
+
byPanel: Map<string, TimelineEntry>;
|
|
3516
|
+
chapters: Map<string, {
|
|
3517
|
+
startMs: number;
|
|
3518
|
+
endMs: number;
|
|
3519
|
+
}>;
|
|
3520
|
+
endMs: number;
|
|
3521
|
+
}
|
|
3522
|
+
interface TrackRange {
|
|
3523
|
+
track: SequenceAudioTrack;
|
|
3524
|
+
chapterId: string;
|
|
3525
|
+
startMs: number;
|
|
3526
|
+
endMs: number;
|
|
3527
|
+
}
|
|
3528
|
+
/** What to do with a track when the reader enters a panel. */
|
|
3529
|
+
interface PanelCue {
|
|
3530
|
+
range: TrackRange;
|
|
3531
|
+
/** The track starts this long after the panel is entered (0 = at once). */
|
|
3532
|
+
delayMs: number;
|
|
3533
|
+
/** Timeline position inside the track when it starts (ms). */
|
|
3534
|
+
offsetMs: number;
|
|
3535
|
+
/** The track ends inside this panel, this long after entering it. */
|
|
3536
|
+
stopAfterMs?: number;
|
|
3537
|
+
}
|
|
3538
|
+
/** The work's panel line for a page format (null = every page). */
|
|
3539
|
+
declare function buildWorkTimeline(manifest: PanelWaveManifest | null | undefined, format: string | null, defaultPanelMs?: number): WorkTimeline;
|
|
3540
|
+
/** Where each (format-matching, unmuted) timeline track sits on the work line. */
|
|
3541
|
+
declare function resolveTrackRanges(manifest: PanelWaveManifest | null | undefined, timeline: WorkTimeline, format: string | null): TrackRange[];
|
|
3542
|
+
/** The tracks that sound while the reader is on `entry`'s panel. */
|
|
3543
|
+
declare function cuesForPanel(ranges: readonly TrackRange[], entry: TimelineEntry): PanelCue[];
|
|
3544
|
+
|
|
3422
3545
|
/**
|
|
3423
3546
|
* Panel Audio Service
|
|
3424
3547
|
*
|
|
@@ -3495,12 +3618,6 @@ declare class PanelAudioService implements OnDestroy {
|
|
|
3495
3618
|
private isAutoplayRefusal;
|
|
3496
3619
|
private resolve;
|
|
3497
3620
|
private resolveTrack;
|
|
3498
|
-
/**
|
|
3499
|
-
* First variant the browser reports it can play; otherwise the first one
|
|
3500
|
-
* (the element will surface the real error).
|
|
3501
|
-
*/
|
|
3502
|
-
private pickVariant;
|
|
3503
|
-
private createProbe;
|
|
3504
3621
|
private clampGain;
|
|
3505
3622
|
private warnOnce;
|
|
3506
3623
|
static ɵfac: i0.ɵɵFactoryDeclaration<PanelAudioService, never>;
|
|
@@ -5340,6 +5457,16 @@ declare function balloonConfigToTailOptions(config: BalloonConfig): {
|
|
|
5340
5457
|
curveAmount: number;
|
|
5341
5458
|
} | null;
|
|
5342
5459
|
|
|
5460
|
+
/**
|
|
5461
|
+
* How a balloon treats text that needs more room than its authored size
|
|
5462
|
+
* (`maxWidth × maxHeight`, schema 1.8 `BalloonConfig.textFit`):
|
|
5463
|
+
* - `grow` (default): the balloon grows beyond the authored size until the
|
|
5464
|
+
* text fits — proportionally first (the shape keeps its aspect ratio), then
|
|
5465
|
+
* in height; see {@link BALLOON_GROWTH_MAX}.
|
|
5466
|
+
* - `fixed`: the balloon keeps its authored size and the text spills over the
|
|
5467
|
+
* edges (pre-1.8 behaviour); `textOverflows` reports it.
|
|
5468
|
+
*/
|
|
5469
|
+
type BalloonTextFit = 'grow' | 'fixed';
|
|
5343
5470
|
interface BalloonPadding {
|
|
5344
5471
|
top: number;
|
|
5345
5472
|
right: number;
|
|
@@ -5347,8 +5474,12 @@ interface BalloonPadding {
|
|
|
5347
5474
|
left: number;
|
|
5348
5475
|
}
|
|
5349
5476
|
interface BalloonOptions {
|
|
5477
|
+
/** Authored width in px; 0 = natural width. With textFit 'grow' the body may become wider. */
|
|
5350
5478
|
maxWidth: number;
|
|
5479
|
+
/** Authored height in px; 0 = natural height. With textFit 'grow' the body may become taller. */
|
|
5351
5480
|
maxHeight: number;
|
|
5481
|
+
/** What happens when the text needs more room than the authored size (default 'grow'). */
|
|
5482
|
+
textFit: BalloonTextFit;
|
|
5352
5483
|
padding: BalloonPadding;
|
|
5353
5484
|
strokeWidth: number;
|
|
5354
5485
|
strokeColor: string;
|
|
@@ -5390,10 +5521,19 @@ interface CutOptions {
|
|
|
5390
5521
|
bottom?: boolean;
|
|
5391
5522
|
}
|
|
5392
5523
|
interface BalloonRenderResult {
|
|
5524
|
+
/** Rendered body width (the authored width, or more when the balloon grew). */
|
|
5393
5525
|
width: number;
|
|
5526
|
+
/** Rendered body height (the authored height, or more when the balloon grew). */
|
|
5394
5527
|
height: number;
|
|
5528
|
+
/** The authored body size the growth started from (maxWidth/maxHeight, or the natural size for 0). */
|
|
5529
|
+
authoredWidth: number;
|
|
5530
|
+
authoredHeight: number;
|
|
5531
|
+
/** True when the body is larger than the authored size because the text needed more room. */
|
|
5532
|
+
grown: boolean;
|
|
5533
|
+
/** Proportional growth factor applied to the authored size (1 when not grown). */
|
|
5534
|
+
growth: number;
|
|
5395
5535
|
svg: SVGSVGElement;
|
|
5396
|
-
/** True when the text needs more height than
|
|
5536
|
+
/** True when the text needs more height than the body gives it (textFit 'fixed' only). */
|
|
5397
5537
|
textOverflows: boolean;
|
|
5398
5538
|
balloon: ComicBalloon;
|
|
5399
5539
|
update: (newText?: string, newTailOptions?: TailOptions | null) => BalloonRenderResult;
|
|
@@ -6589,6 +6729,7 @@ declare class PlayerShellComponent implements OnInit, OnChanges, AfterViewChecke
|
|
|
6589
6729
|
private readonly cdr;
|
|
6590
6730
|
private readonly audioEngine;
|
|
6591
6731
|
private readonly panelAudio;
|
|
6732
|
+
private readonly sequenceAudio;
|
|
6592
6733
|
/**
|
|
6593
6734
|
* Reading order per panel id (1-based, across chapters), computed once per
|
|
6594
6735
|
* manifest. Reported as `panelOrder` on panel_view / funnel events and as
|
|
@@ -7522,6 +7663,14 @@ declare class SpeechBubblesComponent implements OnChanges, AfterViewInit, OnDest
|
|
|
7522
7663
|
* screens (phones) get smaller lettering.
|
|
7523
7664
|
*/
|
|
7524
7665
|
readingScale: number;
|
|
7666
|
+
/**
|
|
7667
|
+
* Page view: place a tailed balloon by its AUTHORED tail tip (the speaker
|
|
7668
|
+
* on the artwork) instead of centring its body on the stored box, and keep
|
|
7669
|
+
* the tail at its authored length when the MIN_LETTERING_PX floor boosts
|
|
7670
|
+
* the balloon — the CMS editor's page view rule (PanelRenderer), which the
|
|
7671
|
+
* lettered PDF must reproduce. Panel view keeps the centre placement.
|
|
7672
|
+
*/
|
|
7673
|
+
anchorTailTip: boolean;
|
|
7525
7674
|
/**
|
|
7526
7675
|
* Work-level balloon config defaults (from settings.typography.balloon_config)
|
|
7527
7676
|
*/
|
|
@@ -7543,6 +7692,14 @@ declare class SpeechBubblesComponent implements OnChanges, AfterViewInit, OnDest
|
|
|
7543
7692
|
}>;
|
|
7544
7693
|
/** Rendered balloon containers, keyed by bubble ID */
|
|
7545
7694
|
private renderedBalloons;
|
|
7695
|
+
/**
|
|
7696
|
+
* Font specs ("15px 'Ames Italic', sans-serif") whose loading this overlay
|
|
7697
|
+
* already requested. Web fonts load lazily on first use, so the first
|
|
7698
|
+
* render may have measured with a fallback face while document.fonts.ready
|
|
7699
|
+
* had long resolved (no font was in flight yet). Each new spec is loaded
|
|
7700
|
+
* explicitly and the balloons re-render once it arrives.
|
|
7701
|
+
*/
|
|
7702
|
+
private fontsRequested;
|
|
7546
7703
|
/** ResizeObserver for container size tracking */
|
|
7547
7704
|
private resizeObserver;
|
|
7548
7705
|
private initialized;
|
|
@@ -7573,12 +7730,18 @@ declare class SpeechBubblesComponent implements OnChanges, AfterViewInit, OnDest
|
|
|
7573
7730
|
* Render all speech balloons into the DOM
|
|
7574
7731
|
*/
|
|
7575
7732
|
renderAllBalloons(): void;
|
|
7733
|
+
/**
|
|
7734
|
+
* Request every font spec the balloons use that was not requested before;
|
|
7735
|
+
* re-render once a face that was not yet available arrives, so balloons
|
|
7736
|
+
* measured with a fallback face are laid out again with the real one.
|
|
7737
|
+
*/
|
|
7738
|
+
private ensureFontsLoaded;
|
|
7576
7739
|
/**
|
|
7577
7740
|
* Handle bubble click (called from template for any fallback interaction)
|
|
7578
7741
|
*/
|
|
7579
7742
|
onBubbleClick(bubble: SpeechBubble, event: MouseEvent): void;
|
|
7580
7743
|
static ɵfac: i0.ɵɵFactoryDeclaration<SpeechBubblesComponent, never>;
|
|
7581
|
-
static ɵcmp: i0.ɵɵComponentDeclaration<SpeechBubblesComponent, "pw-speech-bubbles", never, { "bubbles": { "alias": "bubbles"; "required": false; }; "locale": { "alias": "locale"; "required": false; }; "containerWidth": { "alias": "containerWidth"; "required": false; }; "containerHeight": { "alias": "containerHeight"; "required": false; }; "readingScale": { "alias": "readingScale"; "required": false; }; "workBalloonConfig": { "alias": "workBalloonConfig"; "required": false; }; "characters": { "alias": "characters"; "required": false; }; }, { "bubbleClick": "bubbleClick"; "bubbleAudioPlay": "bubbleAudioPlay"; }, never, never, true, never>;
|
|
7744
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<SpeechBubblesComponent, "pw-speech-bubbles", never, { "bubbles": { "alias": "bubbles"; "required": false; }; "locale": { "alias": "locale"; "required": false; }; "containerWidth": { "alias": "containerWidth"; "required": false; }; "containerHeight": { "alias": "containerHeight"; "required": false; }; "readingScale": { "alias": "readingScale"; "required": false; }; "anchorTailTip": { "alias": "anchorTailTip"; "required": false; }; "workBalloonConfig": { "alias": "workBalloonConfig"; "required": false; }; "characters": { "alias": "characters"; "required": false; }; }, { "bubbleClick": "bubbleClick"; "bubbleAudioPlay": "bubbleAudioPlay"; }, never, never, true, never>;
|
|
7582
7745
|
}
|
|
7583
7746
|
|
|
7584
7747
|
/**
|
|
@@ -7598,6 +7761,11 @@ declare class HotspotsOverlayComponent implements OnChanges {
|
|
|
7598
7761
|
* Hotspots of the current panel (manifest shape)
|
|
7599
7762
|
*/
|
|
7600
7763
|
hotspots: Hotspot[];
|
|
7764
|
+
/**
|
|
7765
|
+
* The panel's speech bubbles: a choice hotspot whose label is already
|
|
7766
|
+
* lettered as a bubble keeps its invisible area under `display: auto`.
|
|
7767
|
+
*/
|
|
7768
|
+
bubbles: SpeechBubble[];
|
|
7601
7769
|
/**
|
|
7602
7770
|
* Current locale for label resolution
|
|
7603
7771
|
*/
|
|
@@ -7687,7 +7855,7 @@ declare class HotspotsOverlayComponent implements OnChanges {
|
|
|
7687
7855
|
private centroidOf;
|
|
7688
7856
|
private clamp01;
|
|
7689
7857
|
static ɵfac: i0.ɵɵFactoryDeclaration<HotspotsOverlayComponent, never>;
|
|
7690
|
-
static ɵcmp: i0.ɵɵComponentDeclaration<HotspotsOverlayComponent, "pw-hotspots-overlay", never, { "hotspots": { "alias": "hotspots"; "required": false; }; "locale": { "alias": "locale"; "required": false; }; "containerWidth": { "alias": "containerWidth"; "required": false; }; "containerHeight": { "alias": "containerHeight"; "required": false; }; "context": { "alias": "context"; "required": false; }; "interactive": { "alias": "interactive"; "required": false; }; "showIndicators": { "alias": "showIndicators"; "required": false; }; }, { "hotspotActivate": "hotspotActivate"; }, never, never, true, never>;
|
|
7858
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<HotspotsOverlayComponent, "pw-hotspots-overlay", never, { "hotspots": { "alias": "hotspots"; "required": false; }; "bubbles": { "alias": "bubbles"; "required": false; }; "locale": { "alias": "locale"; "required": false; }; "containerWidth": { "alias": "containerWidth"; "required": false; }; "containerHeight": { "alias": "containerHeight"; "required": false; }; "context": { "alias": "context"; "required": false; }; "interactive": { "alias": "interactive"; "required": false; }; "showIndicators": { "alias": "showIndicators"; "required": false; }; }, { "hotspotActivate": "hotspotActivate"; }, never, never, true, never>;
|
|
7691
7859
|
}
|
|
7692
7860
|
|
|
7693
7861
|
/**
|
|
@@ -8089,5 +8257,5 @@ declare class PlayerComponent {
|
|
|
8089
8257
|
static ɵcmp: i0.ɵɵComponentDeclaration<PlayerComponent, "pw-player", never, {}, {}, never, never, true, never>;
|
|
8090
8258
|
}
|
|
8091
8259
|
|
|
8092
|
-
export { ANONYMOUS_READER, ActionModalComponent, AgeGateComponent, AssetUrlService, AudioEngineService, BranchChooserComponent, CANVAS_PANEL_BUDGET, CanvasCameraService, CanvasStageComponent, ComicBalloon, DEFAULT_BALLOON_CONFIG, DEFAULT_PAGE_BACKGROUND, DEFAULT_STALL_TIMEOUT_MS, DEFAULT_VIDEO_MUTED, DEFAULT_VIDEO_PLAY_MODE, DEFAULT_VIDEO_START_MODE, EntitlementError, EntitlementService, ExportService, FlowEngineService, HotspotActionService, HotspotsOverlayComponent, HttpEntitlementAdapter, ImageCacheService, LOCATION_PARAMS, ManifestService, MockEntitlementAdapter, NullEntitlementAdapter, PANEL_AUDIO_LEAVE_FADE_MS, PanelAudioService, PaywallOverlayComponent, PaywallService, PlayerComponent, PlayerEvent, PlayerService, PlayerShellComponent, PlayerStateService, PluginHostService, PluginSandboxComponent, PreloadService, PwIconComponent, RESERVED_NAMESPACES, SpeechBubblesComponent, THUMBNAIL_WIDTH, TrackingService, TranslationService, UserGestureService, VISIBILITY_THRESHOLD, VariableStoreService, VideoControllerService, VideoLayerComponent, VideoSequencerService, VisibilityService, applyVariantOverrides, balloonConfigToRenderOptions, balloonConfigToTailOptions, busForRole, chapterOrderFromManifest, coverImageSrc, createBalloon, evaluatePanelAccess, evaluateWorkAccess, findWorkGateRule, fromManifestRule, isExtraLocked, isLockedPanel, locationUrl, mergeBalloonConfig, pageAspectRatio, pageFormatOf, pageFormatsOf, pagesForFormat, panelThumbnailSrc, parseLocationSearch, pickPageFormat, rankPageFormats, readingOrderFromManifest, resolveMuted, resolvePageBackground, resolvePanelVariant, resolvePanels, resolvePlayMode, resolveStartMode, resolveVideoConfig, rulesFromManifest, satisfiesRule, screenClassFor, selectVariant, toEntitlementStatus };
|
|
8093
|
-
export type { AccessDecision, AgeVerificationResult, AnimatableProperty, AnimationEasing, AnimationKeyframe, AssetBase, AssetCatalogItem, AssetCatalogItemAudio, AssetCatalogItemImage, AssetCatalogItemJson, AssetCatalogItemPluginPayload, AssetCatalogItemSubtitle, AssetCatalogItemVector, AssetCatalogItemVideo, AssetCategory, AssetCommon, AssetRef, AssetReference, AssetVariant, Assets, AudioLayer, AudioRole, AudioTrack, AudioVariant, BalloonConfig, BalloonConfigOverride, BalloonOptions, BalloonRenderResult, BalloonType, Bookmark, BoundingBox, BranchChoice, BubbleStyle, BubbleTail, CameraMove, CameraMovePath, CameraState, CameraZoomProfile, CanvasBackground, CanvasCameraPolicy, CanvasDecoration, CanvasFitMode, CanvasFreeRoam, CanvasLayout, CanvasOverviewPolicy, CanvasPlacement, CanvasRevealMode, Chapter, Character$1 as Character, ContentWarning, Creator, DecisionEvent, DeepLinkTarget, DeviceVariables, Edge, EffectiveVideoConfig, EntitlementAdapter$1 as EntitlementAdapter, EntitlementContext, EntitlementErrorCode, EntitlementSnapshot, EntitlementSnapshotResponse, EntitlementStatus, EntitlementVariables, ErrorEvent$1 as ErrorEvent, EvaluatorEntitlementType, EvaluatorRule, EvaluatorScope, ExtraImage, ExtraItem, Extras, FormatView, Graph, HideBorderConfig, Hotspot, HotspotAction, HotspotCircle, HotspotGoToAction, HotspotOpenExtrasAction, HotspotOpenModalAction, HotspotPluginEventAction, HotspotPolygon, HotspotRect, HotspotSetVariablesAction, HotspotShape, HotspotUiEffect, HttpEntitlementAdapterConfig, ImageLayer, ImageVariant, JsonLogic, JsonLogicExpression, JsonValue, JsonVariant, Layer, LayerKind, LayerViewMode, LocaleCode, LocalizedString, LockReason, Meta, Mutation, MutationOperation, NavigationPath, NodeMetadata, NormalizedPoint, NormalizedRect, OutputFormat, OutputPreset, OverlayState, Page, PageLayout, PageVisual, Panel, PanelAnimations, PanelAudioRole, PanelAudioTrack, PanelChangeEvent, PanelPartial, PanelPlacement, PanelRef, PanelVariant, PanelWaveManifest, PanelwaveHeader, Paywall, PaywallAction, PaywallEvent, PaywallGate$1 as PaywallGate, PaywallProduct, PaywallRule, PlaybackState, PlayerError, PlayerErrorCode, PlayerEventData, PlayerLocation, PlayerOptions, PlayerPanelChangeEvent, PlayerPreferences, PlayerState, PlayerStatistics, PlayerView, PluginInstance$1 as PluginInstance, PluginLayer, PreferenceVariables, PreloadItem, PreloadPriority, PreloadSettings, PreloadStatus$1 as PreloadStatus, PreviewInfo, PurchaseInfo, ReadingProgress, ResolvedPanel, ResolvedPanelAudio, ScreenClass, SequenceAudioTrack, SequencedVideo, SequencedVideoInfo, Settings, SpeechBubble, StagePlacement, SubtitleVariant, TailConfig, TailCurve, TailOptions, TextLayer, TextStyle, Tracking, TrackingConfig$1 as TrackingConfig, TrackingEvent, Transform, Transition, TraversalOptions, TraversalResult, UIDefaults, UISettings, UserInfo, UserVariables, VariableChangeEvent, VariableContext, VariableDefinition, VariableMutation, VariableScope, VariableStore, VariableType, VariableValidationResult, Variables, VariantContext, VectorVariant, VideoEvent, VideoLayer, VideoPlayMode, VideoPoster, VideoStartMode, VideoState, VideoStatus, VideoTrackingPayload, VideoTrigger, VideoVariant, ViewMode, ViewportState, VisibilityChange, WorldPoint, WorldRect };
|
|
8260
|
+
export { ANONYMOUS_READER, ActionModalComponent, AgeGateComponent, AssetUrlService, AudioEngineService, BranchChooserComponent, CANVAS_PANEL_BUDGET, CanvasCameraService, CanvasStageComponent, ComicBalloon, DEFAULT_BALLOON_CONFIG, DEFAULT_PAGE_BACKGROUND, DEFAULT_STALL_TIMEOUT_MS, DEFAULT_VIDEO_MUTED, DEFAULT_VIDEO_PLAY_MODE, DEFAULT_VIDEO_START_MODE, EntitlementError, EntitlementService, ExportService, FlowEngineService, HotspotActionService, HotspotsOverlayComponent, HttpEntitlementAdapter, ImageCacheService, LOCATION_PARAMS, ManifestService, MockEntitlementAdapter, NullEntitlementAdapter, PANEL_AUDIO_LEAVE_FADE_MS, PanelAudioService, PaywallOverlayComponent, PaywallService, PlayerComponent, PlayerEvent, PlayerService, PlayerShellComponent, PlayerStateService, PluginHostService, PluginSandboxComponent, PreloadService, PwIconComponent, RESERVED_NAMESPACES, SEQUENCE_AUDIO_LEAVE_FADE_MS, SequenceAudioService, SpeechBubblesComponent, THUMBNAIL_WIDTH, TrackingService, TranslationService, UserGestureService, VISIBILITY_THRESHOLD, VariableStoreService, VideoControllerService, VideoLayerComponent, VideoSequencerService, VisibilityService, applyVariantOverrides, balloonConfigToRenderOptions, balloonConfigToTailOptions, buildWorkTimeline, busForRole, chapterOrderFromManifest, coverImageSrc, createBalloon, cuesForPanel, evaluatePanelAccess, evaluateWorkAccess, findWorkGateRule, fromManifestRule, isExtraLocked, isLockedPanel, locationUrl, mergeBalloonConfig, pageAspectRatio, pageFormatOf, pageFormatsOf, pagesForFormat, panelThumbnailSrc, parseLocationSearch, pickPageFormat, rankPageFormats, readingOrderFromManifest, resolveMuted, resolvePageBackground, resolvePanelVariant, resolvePanels, resolvePlayMode, resolveStartMode, resolveTrackRanges, resolveVideoConfig, rulesFromManifest, satisfiesRule, screenClassFor, selectVariant, toEntitlementStatus };
|
|
8261
|
+
export type { AccessDecision, AgeVerificationResult, AnimatableProperty, AnimationEasing, AnimationKeyframe, AssetBase, AssetCatalogItem, AssetCatalogItemAudio, AssetCatalogItemImage, AssetCatalogItemJson, AssetCatalogItemPluginPayload, AssetCatalogItemSubtitle, AssetCatalogItemVector, AssetCatalogItemVideo, AssetCategory, AssetCommon, AssetRef, AssetReference, AssetVariant, Assets, AudioLayer, AudioRole, AudioTrack, AudioVariant, BalloonConfig, BalloonConfigOverride, BalloonOptions, BalloonRenderResult, BalloonType, Bookmark, BoundingBox, BranchChoice, BubbleStyle, BubbleTail, CameraMove, CameraMovePath, CameraState, CameraZoomProfile, CanvasBackground, CanvasCameraPolicy, CanvasDecoration, CanvasFitMode, CanvasFreeRoam, CanvasLayout, CanvasOverviewPolicy, CanvasPlacement, CanvasRevealMode, Chapter, Character$1 as Character, ContentWarning, Creator, DecisionEvent, DeepLinkTarget, DeviceVariables, Edge, EffectiveVideoConfig, EntitlementAdapter$1 as EntitlementAdapter, EntitlementContext, EntitlementErrorCode, EntitlementSnapshot, EntitlementSnapshotResponse, EntitlementStatus, EntitlementVariables, ErrorEvent$1 as ErrorEvent, EvaluatorEntitlementType, EvaluatorRule, EvaluatorScope, ExtraImage, ExtraItem, Extras, FormatView, Graph, HideBorderConfig, Hotspot, HotspotAction, HotspotCircle, HotspotGoToAction, HotspotOpenExtrasAction, HotspotOpenModalAction, HotspotPluginEventAction, HotspotPolygon, HotspotRect, HotspotSetVariablesAction, HotspotShape, HotspotUiEffect, HttpEntitlementAdapterConfig, ImageLayer, ImageVariant, JsonLogic, JsonLogicExpression, JsonValue, JsonVariant, Layer, LayerKind, LayerViewMode, LocaleCode, LocalizedString, LockReason, Meta, Mutation, MutationOperation, NavigationPath, NodeMetadata, NormalizedPoint, NormalizedRect, OutputFormat, OutputPreset, OverlayState, Page, PageLayout, PageVisual, Panel, PanelAnimations, PanelAudioRole, PanelAudioTrack, PanelChangeEvent, PanelCue, PanelPartial, PanelPlacement, PanelRef, PanelVariant, PanelWaveManifest, PanelwaveHeader, Paywall, PaywallAction, PaywallEvent, PaywallGate$1 as PaywallGate, PaywallProduct, PaywallRule, PlaybackState, PlayerError, PlayerErrorCode, PlayerEventData, PlayerLocation, PlayerOptions, PlayerPanelChangeEvent, PlayerPreferences, PlayerState, PlayerStatistics, PlayerView, PluginInstance$1 as PluginInstance, PluginLayer, PreferenceVariables, PreloadItem, PreloadPriority, PreloadSettings, PreloadStatus$1 as PreloadStatus, PreviewInfo, PurchaseInfo, ReadingProgress, ResolvedPanel, ResolvedPanelAudio, ScreenClass, SequenceAudioTrack, SequencedVideo, SequencedVideoInfo, Settings, SpeechBubble, StagePlacement, SubtitleVariant, TailConfig, TailCurve, TailOptions, TextLayer, TextStyle, TimelineEntry, TrackRange, Tracking, TrackingConfig$1 as TrackingConfig, TrackingEvent, Transform, Transition, TraversalOptions, TraversalResult, UIDefaults, UISettings, UserInfo, UserVariables, VariableChangeEvent, VariableContext, VariableDefinition, VariableMutation, VariableScope, VariableStore, VariableType, VariableValidationResult, Variables, VariantContext, VectorVariant, VideoEvent, VideoLayer, VideoPlayMode, VideoPoster, VideoStartMode, VideoState, VideoStatus, VideoTrackingPayload, VideoTrigger, VideoVariant, ViewMode, ViewportState, VisibilityChange, WorkTimeline, WorldPoint, WorldRect };
|
package/package.json
CHANGED
|
@@ -25,9 +25,9 @@ License text: https://openfontlicense.org/open-font-license-official-text/
|
|
|
25
25
|
|
|
26
26
|
## Deliberately NOT included
|
|
27
27
|
|
|
28
|
-
**Ames Pro** (`amespro-*`, by
|
|
28
|
+
**Ames Pro** (`amespro-*`, by Purastik Graphics) is a **commercial** font and
|
|
29
29
|
is not part of this MIT-licensed package (the files are gitignored). Host
|
|
30
|
-
applications that use it must license it from https://
|
|
30
|
+
applications that use it must license it (web-font license) from https://www.fontspring.com/fonts/purastik-graphics/ames-pro and provide
|
|
31
31
|
their own `@font-face` declarations for `'Ames Italic'`, `'Ames Bold Italic'`
|
|
32
32
|
and `'Ames Regular'`. The player's default font stack falls back to Comic Neue
|
|
33
33
|
when Ames is unavailable.
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* All families here are open-licensed (SIL OFL 1.1, from Google Fonts) and
|
|
5
5
|
* ship with the @panelwave/player package — see LICENSES.md in this folder.
|
|
6
6
|
*
|
|
7
|
-
* The Ames Pro family (
|
|
7
|
+
* The Ames Pro family (Purastik Graphics, commercial) is deliberately NOT included —
|
|
8
8
|
* neither here nor in works exported from the PanelWave CMS. PanelWave's own
|
|
9
9
|
* players (CMS preview, read.panelwave.org) load it under PanelWave's
|
|
10
10
|
* license, which covers PanelWave's domains only. Self-hosting a work whose
|