mirror of
https://github.com/zhw2590582/ArtPlayer.git
synced 2026-10-29 02:51:20 -08:00
fix(multiple-subtitles): [PKG-MULTI-SUB-07] preserve inline timestamps and caption text
This commit is contained in:
1 parent
da64aae267
commit
7f226ff822
24 files changed
+8660
-132
No files matched your search
@@ -17,11 +17,12 @@ task PKG-MULTI-SUB-04 owns that compatibility work. Do not infer runtime behavio
|
||||
Its cancellation Promise also settles pending operations without AbortController support.
|
||||
- `src/render.ts` owns generated Blob URLs and synchronous/async host installation outcomes.
|
||||
Reentrant selections and stale host rejections cannot release the latest selected resource.
|
||||
- `src/caption.ts` owns a subtitleAfterUpdate listener. It unwraps internal timestamp markers
|
||||
in the custom HTML caption layer, preserving subsequent nodes and literal user text.
|
||||
- `src/types.ts` describes the internal Promise result, selected tracks and narrow host/resource
|
||||
boundaries; option fields reuse the existing public declaration. It is not a published API.
|
||||
- `src/parser.d.ts` describes the vendored parse result and discriminated cue nodes. Parsed
|
||||
numeric timestamps are distinct from the historically wrapped string nodes accepted by the
|
||||
serializer. That wrapping produces invalid inline times; PKG-MULTI-SUB-07 owns its repair.
|
||||
timestamp values must remain numeric in both parsed and serialized trees.
|
||||
- `src/parser.js` is vendored WebVTT parser/serializer code with a CC0 dedication. It is not
|
||||
owned plugin code to mechanically migrate to TypeScript. Keep it distinct from task 04.
|
||||
The pinned upstream reference and full adaptation check are in
|
||||
@@ -52,6 +53,18 @@ The historical failure suite deliberately retains the old outcomes; the candidat
|
||||
suite verifies their fixes. Preserve parser best-effort behavior independently: invalid-header
|
||||
diagnostics can coexist with usable cues, and metadata is intentionally read after download.
|
||||
|
||||
Inline timestamp nodes keep their numeric values. The merge layer puts them in valid VTT
|
||||
class spans (`c.artplayer-multiple-subtitles-timestamp`), including nested timestamps. Native
|
||||
getCueAsHTML retains the processing instructions. ArtPlayer's HTML layer does not interpret
|
||||
those tags, so caption.ts removes only the leading instruction within the generated marker
|
||||
and unwraps its remaining children. HTML does not pair `<c.class>` with `</c>`; removing the
|
||||
whole element would incorrectly discard following caption text. The original cue stays intact.
|
||||
This keeps the existing whole-cue display behavior; it does not add karaoke highlighting.
|
||||
|
||||
The vendor entity decoder still leaves extra semicolons after standard named entities. Nine
|
||||
historical implementations reproduce it; MULTI-SUB-ENTITY-01 remains open for task 05. Do not
|
||||
silently alter vendor source or declare entity rendering correct because timestamp tests pass.
|
||||
|
||||
## Vendor boundary and validation
|
||||
|
||||
The comparison revision is w3c/webvtt.js `380cfcce34ba8b472d3a31474874eb72a0e5f460`.
|
||||
|
||||
Reference in new issue
Block a user