jassub 1.8.8 → 2.0.1
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/README.md +66 -205
- package/dist/jassub.d.ts +71 -0
- package/dist/jassub.js +278 -0
- package/dist/jassub.js.map +1 -0
- package/dist/{jassub-worker-modern.wasm → wasm/jassub-worker-modern.wasm} +0 -0
- package/dist/wasm/jassub-worker.d.ts +2 -0
- package/dist/wasm/jassub-worker.js +1017 -0
- package/dist/wasm/jassub-worker.js.map +1 -0
- package/dist/{jassub-worker.wasm → wasm/jassub-worker.wasm} +0 -0
- package/dist/wasm/types.d.ts +118 -0
- package/dist/worker/util.d.ts +5 -0
- package/dist/worker/util.js +30 -0
- package/dist/worker/util.js.map +1 -0
- package/dist/worker/webgpu-renderer.d.ts +54 -0
- package/dist/worker/webgpu-renderer.js +434 -0
- package/dist/worker/webgpu-renderer.js.map +1 -0
- package/dist/worker/worker.d.ts +59 -0
- package/dist/worker/worker.js +215 -0
- package/dist/worker/worker.js.map +1 -0
- package/package.json +21 -16
- package/dist/COPYRIGHT +0 -951
- package/dist/default.woff2 +0 -0
- package/dist/jassub-worker.js +0 -11
- package/dist/jassub-worker.wasm.js +0 -2
- package/dist/jassub.es.js +0 -552
- package/dist/jassub.umd.js +0 -1
- package/index.d.ts +0 -122
- package/src/jassub.js +0 -860
|
@@ -0,0 +1,215 @@
|
|
|
1
|
+
/* eslint-disable camelcase */
|
|
2
|
+
import { finalizer } from 'abslink';
|
|
3
|
+
import { expose } from 'abslink/w3c';
|
|
4
|
+
import WASM from '../wasm/jassub-worker.js';
|
|
5
|
+
import { libassYCbCrMap, read_, readAsync, _applyKeys } from './util';
|
|
6
|
+
import { colorMatrixConversionMap, WebGPURenderer } from './webgpu-renderer';
|
|
7
|
+
export class ASSRenderer {
|
|
8
|
+
_offCanvas;
|
|
9
|
+
_wasm;
|
|
10
|
+
_subtitleColorSpace;
|
|
11
|
+
_videoColorSpace;
|
|
12
|
+
_malloc;
|
|
13
|
+
_gpurender = new WebGPURenderer();
|
|
14
|
+
debug = false;
|
|
15
|
+
useLocalFonts = false;
|
|
16
|
+
_availableFonts = {};
|
|
17
|
+
_fontMap = {};
|
|
18
|
+
_fontId = 0;
|
|
19
|
+
_ready;
|
|
20
|
+
_getFont;
|
|
21
|
+
constructor(data, getFont) {
|
|
22
|
+
this._availableFonts = data.availableFonts;
|
|
23
|
+
this.debug = data.debug;
|
|
24
|
+
this.useLocalFonts = data.useLocalFonts;
|
|
25
|
+
this._getFont = getFont;
|
|
26
|
+
// hack, we want custom WASM URLs
|
|
27
|
+
const _fetch = globalThis.fetch;
|
|
28
|
+
globalThis.fetch = _ => _fetch(data.wasmUrl);
|
|
29
|
+
// TODO: abslink doesnt support transferables yet
|
|
30
|
+
const handleMessage = ({ data }) => {
|
|
31
|
+
if (data.name === 'offscreenCanvas') {
|
|
32
|
+
this._offCanvas = data.ctrl;
|
|
33
|
+
this._gpurender.setCanvas(this._offCanvas, this._offCanvas.width, this._offCanvas.height);
|
|
34
|
+
removeEventListener('message', handleMessage);
|
|
35
|
+
}
|
|
36
|
+
};
|
|
37
|
+
addEventListener('message', handleMessage);
|
|
38
|
+
this._ready = WASM().then(Module => {
|
|
39
|
+
// eslint-disable-next-line @typescript-eslint/unbound-method
|
|
40
|
+
this._malloc = Module._malloc;
|
|
41
|
+
const fallbackFont = data.fallbackFont.toLowerCase();
|
|
42
|
+
this._wasm = new Module.JASSUB(data.width, data.height, fallbackFont);
|
|
43
|
+
this._wasm.setThreads(Math.min(Math.max(1, navigator.hardwareConcurrency - 2), 8));
|
|
44
|
+
if (fallbackFont)
|
|
45
|
+
this._findAvailableFonts(fallbackFont);
|
|
46
|
+
const subContent = data.subContent ?? read_(data.subUrl);
|
|
47
|
+
for (const font of data.fonts)
|
|
48
|
+
this._asyncWrite(font);
|
|
49
|
+
this._wasm.createTrackMem(subContent);
|
|
50
|
+
this._processAvailableFonts(subContent);
|
|
51
|
+
this._subtitleColorSpace = libassYCbCrMap[this._wasm.trackColorSpace];
|
|
52
|
+
if (data.libassMemoryLimit > 0 || data.libassGlyphLimit > 0) {
|
|
53
|
+
this._wasm.setMemoryLimits(data.libassGlyphLimit || 0, data.libassMemoryLimit || 0);
|
|
54
|
+
}
|
|
55
|
+
this._checkColorSpace();
|
|
56
|
+
});
|
|
57
|
+
}
|
|
58
|
+
ready() {
|
|
59
|
+
return this._ready;
|
|
60
|
+
}
|
|
61
|
+
addFont(fontOrURL) {
|
|
62
|
+
this._asyncWrite(fontOrURL);
|
|
63
|
+
}
|
|
64
|
+
createEvent(event) {
|
|
65
|
+
_applyKeys(event, this._wasm.getEvent(this._wasm.allocEvent()));
|
|
66
|
+
}
|
|
67
|
+
getEvents() {
|
|
68
|
+
const events = [];
|
|
69
|
+
for (let i = 0; i < this._wasm.getEventCount(); i++) {
|
|
70
|
+
const { Start, Duration, ReadOrder, Layer, Style, MarginL, MarginR, MarginV, Name, Text, Effect } = this._wasm.getEvent(i);
|
|
71
|
+
events.push({ Start, Duration, ReadOrder, Layer, Style, MarginL, MarginR, MarginV, Name, Text, Effect });
|
|
72
|
+
}
|
|
73
|
+
return events;
|
|
74
|
+
}
|
|
75
|
+
setEvent(event, index) {
|
|
76
|
+
_applyKeys(event, this._wasm.getEvent(index));
|
|
77
|
+
}
|
|
78
|
+
removeEvent(index) {
|
|
79
|
+
this._wasm.removeEvent(index);
|
|
80
|
+
}
|
|
81
|
+
createStyle(style) {
|
|
82
|
+
const alloc = this._wasm.getStyle(this._wasm.allocStyle());
|
|
83
|
+
_applyKeys(style, alloc);
|
|
84
|
+
return alloc;
|
|
85
|
+
}
|
|
86
|
+
getStyles() {
|
|
87
|
+
const styles = [];
|
|
88
|
+
for (let i = 0; i < this._wasm.getStyleCount(); i++) {
|
|
89
|
+
// eslint-disable-next-line @typescript-eslint/naming-convention
|
|
90
|
+
const { Name, FontName, FontSize, PrimaryColour, SecondaryColour, OutlineColour, BackColour, Bold, Italic, Underline, StrikeOut, ScaleX, ScaleY, Spacing, Angle, BorderStyle, Outline, Shadow, Alignment, MarginL, MarginR, MarginV, Encoding, treat_fontname_as_pattern, Blur, Justify } = this._wasm.getStyle(i);
|
|
91
|
+
styles.push({ Name, FontName, FontSize, PrimaryColour, SecondaryColour, OutlineColour, BackColour, Bold, Italic, Underline, StrikeOut, ScaleX, ScaleY, Spacing, Angle, BorderStyle, Outline, Shadow, Alignment, MarginL, MarginR, MarginV, Encoding, treat_fontname_as_pattern, Blur, Justify });
|
|
92
|
+
}
|
|
93
|
+
return styles;
|
|
94
|
+
}
|
|
95
|
+
setStyle(style, index) {
|
|
96
|
+
_applyKeys(style, this._wasm.getStyle(index));
|
|
97
|
+
}
|
|
98
|
+
removeStyle(index) {
|
|
99
|
+
this._wasm.removeStyle(index);
|
|
100
|
+
}
|
|
101
|
+
styleOverride(style) {
|
|
102
|
+
this._wasm.styleOverride(this.createStyle(style));
|
|
103
|
+
}
|
|
104
|
+
disableStyleOverride() {
|
|
105
|
+
this._wasm.disableStyleOverride();
|
|
106
|
+
}
|
|
107
|
+
setDefaultFont(fontName) {
|
|
108
|
+
this._wasm.setDefaultFont(fontName);
|
|
109
|
+
}
|
|
110
|
+
setTrack(content) {
|
|
111
|
+
this._wasm.createTrackMem(content);
|
|
112
|
+
this._processAvailableFonts(content);
|
|
113
|
+
this._subtitleColorSpace = libassYCbCrMap[this._wasm.trackColorSpace];
|
|
114
|
+
}
|
|
115
|
+
freeTrack() {
|
|
116
|
+
this._wasm.removeTrack();
|
|
117
|
+
}
|
|
118
|
+
setTrackByUrl(url) {
|
|
119
|
+
this.setTrack(read_(url));
|
|
120
|
+
}
|
|
121
|
+
_checkColorSpace() {
|
|
122
|
+
if (!this._subtitleColorSpace || !this._videoColorSpace)
|
|
123
|
+
return;
|
|
124
|
+
this._gpurender.setColorMatrix(colorMatrixConversionMap[this._subtitleColorSpace][this._videoColorSpace]);
|
|
125
|
+
}
|
|
126
|
+
_findAvailableFonts(font) {
|
|
127
|
+
font = font.trim().toLowerCase();
|
|
128
|
+
if (font[0] === '@')
|
|
129
|
+
font = font.substring(1);
|
|
130
|
+
if (this._fontMap[font])
|
|
131
|
+
return;
|
|
132
|
+
this._fontMap[font] = true;
|
|
133
|
+
if (!this._availableFonts[font]) {
|
|
134
|
+
if (this.useLocalFonts)
|
|
135
|
+
this._getFont(font);
|
|
136
|
+
}
|
|
137
|
+
else {
|
|
138
|
+
this._asyncWrite(this._availableFonts[font]);
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
_asyncWrite(font) {
|
|
142
|
+
if (typeof font === 'string') {
|
|
143
|
+
readAsync(font, fontData => {
|
|
144
|
+
this._allocFont(new Uint8Array(fontData));
|
|
145
|
+
}, console.error);
|
|
146
|
+
}
|
|
147
|
+
else {
|
|
148
|
+
this._allocFont(font);
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
// TODO: this should re-draw last frame!
|
|
152
|
+
_allocFont(uint8) {
|
|
153
|
+
const ptr = this._malloc(uint8.byteLength);
|
|
154
|
+
self.HEAPU8RAW.set(uint8, ptr);
|
|
155
|
+
this._wasm.addFont('font-' + (this._fontId++), ptr, uint8.byteLength);
|
|
156
|
+
this._wasm.reloadFonts();
|
|
157
|
+
}
|
|
158
|
+
_processAvailableFonts(content) {
|
|
159
|
+
if (!this._availableFonts)
|
|
160
|
+
return;
|
|
161
|
+
for (const { FontName } of this.getStyles()) {
|
|
162
|
+
this._findAvailableFonts(FontName);
|
|
163
|
+
}
|
|
164
|
+
const regex = /\\fn([^\\}]*?)[\\}]/g;
|
|
165
|
+
let matches;
|
|
166
|
+
while ((matches = regex.exec(content)) !== null) {
|
|
167
|
+
this._findAvailableFonts(matches[1]);
|
|
168
|
+
}
|
|
169
|
+
}
|
|
170
|
+
_canvas(width, height, videoWidth, videoHeight) {
|
|
171
|
+
if (this._offCanvas)
|
|
172
|
+
this._gpurender.setCanvas(this._offCanvas, width, height);
|
|
173
|
+
this._wasm.resizeCanvas(width, height, videoWidth, videoHeight);
|
|
174
|
+
}
|
|
175
|
+
[finalizer]() {
|
|
176
|
+
this._wasm.quitLibrary();
|
|
177
|
+
this._gpurender.destroy();
|
|
178
|
+
// @ts-expect-error force GC
|
|
179
|
+
this._wasm = null;
|
|
180
|
+
// @ts-expect-error force GC
|
|
181
|
+
this._gpurender = null;
|
|
182
|
+
this._availableFonts = {};
|
|
183
|
+
}
|
|
184
|
+
_draw(time, force = false) {
|
|
185
|
+
if (!this._offCanvas)
|
|
186
|
+
return;
|
|
187
|
+
const result = this._wasm.rawRender(time, Number(force));
|
|
188
|
+
if (this._wasm.changed === 0 && !force)
|
|
189
|
+
return;
|
|
190
|
+
const bitmaps = [];
|
|
191
|
+
for (let image = result, i = 0; i < this._wasm.count; image = image.next, ++i) {
|
|
192
|
+
// @ts-expect-error internal emsc types
|
|
193
|
+
bitmaps.push({
|
|
194
|
+
bitmap: image.bitmap,
|
|
195
|
+
color: image.color,
|
|
196
|
+
dst_x: image.dst_x,
|
|
197
|
+
dst_y: image.dst_y,
|
|
198
|
+
h: image.h,
|
|
199
|
+
stride: image.stride,
|
|
200
|
+
w: image.w
|
|
201
|
+
});
|
|
202
|
+
}
|
|
203
|
+
this._gpurender.render(bitmaps, self.HEAPU8RAW);
|
|
204
|
+
}
|
|
205
|
+
_setColorSpace(videoColorSpace) {
|
|
206
|
+
if (videoColorSpace === 'RGB')
|
|
207
|
+
return;
|
|
208
|
+
this._videoColorSpace = videoColorSpace;
|
|
209
|
+
this._checkColorSpace();
|
|
210
|
+
}
|
|
211
|
+
}
|
|
212
|
+
if (self.name === 'jassub-worker') {
|
|
213
|
+
expose(ASSRenderer);
|
|
214
|
+
}
|
|
215
|
+
//# sourceMappingURL=worker.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"worker.js","sourceRoot":"","sources":["../../src/worker/worker.ts"],"names":[],"mappings":"AAAA,8BAA8B;AAC9B,OAAO,EAAE,SAAS,EAAE,MAAM,SAAS,CAAA;AACnC,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AAEpC,OAAO,IAAI,MAAM,0BAA0B,CAAA;AAE3C,OAAO,EAAE,cAAc,EAAE,KAAK,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAA;AACrE,OAAO,EAAE,wBAAwB,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAA;AAwB5E,MAAM,OAAO,WAAW;IACtB,UAAU,CAAkB;IAC5B,KAAK,CAAS;IACd,mBAAmB,CAAiD;IACpE,gBAAgB,CAAoB;IACpC,OAAO,CAA2B;IAClC,UAAU,GAAG,IAAI,cAAc,EAAE,CAAA;IAEjC,KAAK,GAAG,KAAK,CAAA;IACb,aAAa,GAAG,KAAK,CAAA;IACrB,eAAe,GAAwC,EAAE,CAAA;IACzD,QAAQ,GAA4B,EAAE,CAAA;IACtC,OAAO,GAAG,CAAC,CAAA;IAEX,MAAM,CAAA;IACN,QAAQ,CAAA;IAER,YAAa,IAAU,EAAE,OAAwC;QAC/D,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,cAAc,CAAA;QAC1C,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAA;QACvB,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,aAAa,CAAA;QACvC,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAA;QAEvB,iCAAiC;QACjC,MAAM,MAAM,GAAG,UAAU,CAAC,KAAK,CAAA;QAC/B,UAAU,CAAC,KAAK,GAAG,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;QAE5C,iDAAiD;QACjD,MAAM,aAAa,GAAG,CAAC,EAAE,IAAI,EAAgB,EAAE,EAAE;YAC/C,IAAI,IAAI,CAAC,IAAI,KAAK,iBAAiB,EAAE,CAAC;gBACpC,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,IAAI,CAAA;gBAC3B,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,IAAI,CAAC,UAAW,EAAE,IAAI,CAAC,UAAW,CAAC,KAAK,EAAE,IAAI,CAAC,UAAW,CAAC,MAAM,CAAC,CAAA;gBAC5F,mBAAmB,CAAC,SAAS,EAAE,aAAa,CAAC,CAAA;YAC/C,CAAC;QACH,CAAC,CAAA;QACD,gBAAgB,CAAC,SAAS,EAAE,aAAa,CAAC,CAAA;QAE1C,IAAI,CAAC,MAAM,GAAI,IAAI,EAA0B,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE;YAC1D,6DAA6D;YAC7D,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,OAAO,CAAA;YAE7B,MAAM,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC,WAAW,EAAE,CAAA;YACpD,IAAI,CAAC,KAAK,GAAG,IAAI,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,MAAM,EAAE,YAAY,CAAC,CAAA;YACrE,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,SAAS,CAAC,mBAAmB,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAA;YAElF,IAAI,YAAY;gBAAE,IAAI,CAAC,mBAAmB,CAAC,YAAY,CAAC,CAAA;YAExD,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,IAAI,KAAK,CAAC,IAAI,CAAC,MAAO,CAAC,CAAA;YAEzD,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,KAAK;gBAAE,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAA;YAErD,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,UAAU,CAAC,CAAA;YACrC,IAAI,CAAC,sBAAsB,CAAC,UAAU,CAAC,CAAA;YAEvC,IAAI,CAAC,mBAAmB,GAAG,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,CAAA;YAErE,IAAI,IAAI,CAAC,iBAAiB,GAAG,CAAC,IAAI,IAAI,CAAC,gBAAgB,GAAG,CAAC,EAAE,CAAC;gBAC5D,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,IAAI,CAAC,gBAAgB,IAAI,CAAC,EAAE,IAAI,CAAC,iBAAiB,IAAI,CAAC,CAAC,CAAA;YACrF,CAAC;YACD,IAAI,CAAC,gBAAgB,EAAE,CAAA;QACzB,CAAC,CAAC,CAAA;IACJ,CAAC;IAED,KAAK;QACH,OAAO,IAAI,CAAC,MAAM,CAAA;IACpB,CAAC;IAED,OAAO,CAAE,SAA8B;QACrC,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,CAAA;IAC7B,CAAC;IAED,WAAW,CAAE,KAAgB;QAC3B,UAAU,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE,CAAE,CAAC,CAAA;IAClE,CAAC;IAED,SAAS;QACP,MAAM,MAAM,GAA8B,EAAE,CAAA;QAC5C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,aAAa,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC;YACpD,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAE,CAAA;YAC3H,MAAM,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAA;QAC1G,CAAC;QACD,OAAO,MAAM,CAAA;IACf,CAAC;IAED,QAAQ,CAAE,KAAgB,EAAE,KAAa;QACvC,UAAU,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAE,CAAC,CAAA;IAChD,CAAC;IAED,WAAW,CAAE,KAAa;QACxB,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,KAAK,CAAC,CAAA;IAC/B,CAAC;IAED,WAAW,CAAE,KAAgB;QAC3B,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE,CAAE,CAAA;QAC3D,UAAU,CAAC,KAAK,EAAE,KAAK,CAAC,CAAA;QACxB,OAAO,KAAK,CAAA;IACd,CAAC;IAED,SAAS;QACP,MAAM,MAAM,GAA8B,EAAE,CAAA;QAC5C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,aAAa,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC;YACtD,gEAAgE;YAC9D,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,aAAa,EAAE,eAAe,EAAE,aAAa,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,yBAAyB,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAE,CAAA;YAEnT,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,aAAa,EAAE,eAAe,EAAE,aAAa,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,yBAAyB,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAA;QAClS,CAAC;QACD,OAAO,MAAM,CAAA;IACf,CAAC;IAED,QAAQ,CAAE,KAAgB,EAAE,KAAa;QACvC,UAAU,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAE,CAAC,CAAA;IAChD,CAAC;IAED,WAAW,CAAE,KAAa;QACxB,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,KAAK,CAAC,CAAA;IAC/B,CAAC;IAED,aAAa,CAAE,KAAgB;QAC7B,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,CAAA;IACnD,CAAC;IAED,oBAAoB;QAClB,IAAI,CAAC,KAAK,CAAC,oBAAoB,EAAE,CAAA;IACnC,CAAC;IAED,cAAc,CAAE,QAAgB;QAC9B,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAA;IACrC,CAAC;IAED,QAAQ,CAAE,OAAe;QACvB,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,OAAO,CAAC,CAAA;QAClC,IAAI,CAAC,sBAAsB,CAAC,OAAO,CAAC,CAAA;QAEpC,IAAI,CAAC,mBAAmB,GAAG,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,eAAe,CAAE,CAAA;IACxE,CAAC;IAED,SAAS;QACP,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,CAAA;IAC1B,CAAC;IAED,aAAa,CAAE,GAAW;QACxB,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAA;IAC3B,CAAC;IAED,gBAAgB;QACd,IAAI,CAAC,IAAI,CAAC,mBAAmB,IAAI,CAAC,IAAI,CAAC,gBAAgB;YAAE,OAAM;QAC/D,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC,wBAAwB,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAA;IAC3G,CAAC;IAED,mBAAmB,CAAE,IAAY;QAC/B,IAAI,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAA;QAEhC,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,GAAG;YAAE,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAA;QAE7C,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC;YAAE,OAAM;QAE/B,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,IAAI,CAAA;QAE1B,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,EAAE,CAAC;YAChC,IAAI,IAAI,CAAC,aAAa;gBAAE,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAA;QAC7C,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,eAAe,CAAC,IAAI,CAAE,CAAC,CAAA;QAC/C,CAAC;IACH,CAAC;IAED,WAAW,CAAE,IAAyB;QACpC,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,CAAC;YAC7B,SAAS,CAAC,IAAI,EAAE,QAAQ,CAAC,EAAE;gBACzB,IAAI,CAAC,UAAU,CAAC,IAAI,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAA;YAC3C,CAAC,EAAE,OAAO,CAAC,KAAK,CAAC,CAAA;QACnB,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAA;QACvB,CAAC;IACH,CAAC;IAED,wCAAwC;IACxC,UAAU,CAAE,KAAiB;QAC3B,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,UAAU,CAAC,CAAA;QAC1C,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,CAAA;QAC9B,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,GAAG,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,EAAE,GAAG,EAAE,KAAK,CAAC,UAAU,CAAC,CAAA;QACrE,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,CAAA;IAC1B,CAAC;IAED,sBAAsB,CAAE,OAAe;QACrC,IAAI,CAAC,IAAI,CAAC,eAAe;YAAE,OAAM;QAEjC,KAAK,MAAM,EAAE,QAAQ,EAAE,IAAI,IAAI,CAAC,SAAS,EAAE,EAAE,CAAC;YAC5C,IAAI,CAAC,mBAAmB,CAAC,QAAS,CAAC,CAAA;QACrC,CAAC;QAED,MAAM,KAAK,GAAG,sBAAsB,CAAA;QACpC,IAAI,OAAO,CAAA;QACX,OAAO,CAAC,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;YAChD,IAAI,CAAC,mBAAmB,CAAC,OAAO,CAAC,CAAC,CAAE,CAAC,CAAA;QACvC,CAAC;IACH,CAAC;IAED,OAAO,CAAE,KAAa,EAAE,MAAc,EAAE,UAAkB,EAAE,WAAmB;QAC7E,IAAI,IAAI,CAAC,UAAU;YAAE,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,IAAI,CAAC,UAAU,EAAE,KAAK,EAAE,MAAM,CAAC,CAAA;QAE9E,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,WAAW,CAAC,CAAA;IACjE,CAAC;IAED,CAAC,SAAS,CAAC;QACT,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,CAAA;QACxB,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,CAAA;QACzB,4BAA4B;QAC5B,IAAI,CAAC,KAAK,GAAG,IAAI,CAAA;QACjB,4BAA4B;QAC5B,IAAI,CAAC,UAAU,GAAG,IAAI,CAAA;QACtB,IAAI,CAAC,eAAe,GAAG,EAAE,CAAA;IAC3B,CAAC;IAED,KAAK,CAAE,IAAY,EAAE,KAAK,GAAG,KAAK;QAChC,IAAI,CAAC,IAAI,CAAC,UAAU;YAAE,OAAM;QAE5B,MAAM,MAAM,GAAc,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,EAAE,MAAM,CAAC,KAAK,CAAC,CAAE,CAAA;QACpE,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,KAAK,CAAC,IAAI,CAAC,KAAK;YAAE,OAAM;QAE9C,MAAM,OAAO,GAAgB,EAAE,CAAA;QAE/B,KAAK,IAAI,KAAK,GAAG,MAAM,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,GAAG,KAAK,CAAC,IAAK,EAAE,EAAE,CAAC,EAAE,CAAC;YAC/E,uCAAuC;YACvC,OAAO,CAAC,IAAI,CAAC;gBACX,MAAM,EAAE,KAAK,CAAC,MAAM;gBACpB,KAAK,EAAE,KAAK,CAAC,KAAK;gBAClB,KAAK,EAAE,KAAK,CAAC,KAAK;gBAClB,KAAK,EAAE,KAAK,CAAC,KAAK;gBAClB,CAAC,EAAE,KAAK,CAAC,CAAC;gBACV,MAAM,EAAE,KAAK,CAAC,MAAM;gBACpB,CAAC,EAAE,KAAK,CAAC,CAAC;aACX,CAAC,CAAA;QACJ,CAAC;QACD,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC,CAAA;IACjD,CAAC;IAED,cAAc,CAAE,eAA0C;QACxD,IAAI,eAAe,KAAK,KAAK;YAAE,OAAM;QACrC,IAAI,CAAC,gBAAgB,GAAG,eAAe,CAAA;QACvC,IAAI,CAAC,gBAAgB,EAAE,CAAA;IACzB,CAAC;CACF;AAED,IAAI,IAAI,CAAC,IAAI,KAAK,eAAe,EAAE,CAAC;IAClC,MAAM,CAAC,WAAW,CAAC,CAAA;AACrB,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,14 +1,15 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "jassub",
|
|
3
|
-
"version": "
|
|
4
|
-
"description": "libass
|
|
5
|
-
"main": "
|
|
3
|
+
"version": "2.0.1",
|
|
4
|
+
"description": "libass subtitle renderer for modern browsers",
|
|
5
|
+
"main": "dist/jassub.js",
|
|
6
6
|
"type": "module",
|
|
7
7
|
"files": [
|
|
8
|
-
"dist/
|
|
9
|
-
"dist/
|
|
10
|
-
"dist/jassub
|
|
11
|
-
"
|
|
8
|
+
"dist/wasm/*",
|
|
9
|
+
"dist/worker/*",
|
|
10
|
+
"dist/jassub.*",
|
|
11
|
+
"README.md",
|
|
12
|
+
"LICENSE",
|
|
12
13
|
"index.d.ts"
|
|
13
14
|
],
|
|
14
15
|
"repository": {
|
|
@@ -19,28 +20,32 @@
|
|
|
19
20
|
"libass",
|
|
20
21
|
"subtitle",
|
|
21
22
|
"wasm",
|
|
22
|
-
"emscripten"
|
|
23
|
+
"emscripten",
|
|
24
|
+
"ASS",
|
|
25
|
+
"WebAssembly",
|
|
26
|
+
"subtitles",
|
|
27
|
+
"webgpu",
|
|
28
|
+
"typescript"
|
|
23
29
|
],
|
|
24
30
|
"author": "ThaUnknown",
|
|
25
|
-
"contributors": [
|
|
26
|
-
"SubtitlesOctopus Contributors"
|
|
27
|
-
],
|
|
28
31
|
"license": "LGPL-2.1-or-later AND (FTL OR GPL-2.0-or-later) AND MIT AND MIT-Modern-Variant AND ISC AND NTP AND Zlib AND BSL-1.0",
|
|
29
32
|
"bugs": {
|
|
30
33
|
"url": "https://github.com/ThaUnknown/jassub/issues"
|
|
31
34
|
},
|
|
32
35
|
"homepage": "https://github.com/ThaUnknown/jassub",
|
|
33
36
|
"dependencies": {
|
|
37
|
+
"abslink": "^1.1.6",
|
|
34
38
|
"rvfc-polyfill": "^1.0.7"
|
|
35
39
|
},
|
|
36
40
|
"devDependencies": {
|
|
37
|
-
"@types
|
|
38
|
-
"
|
|
39
|
-
"
|
|
40
|
-
"vite
|
|
41
|
+
"@webgpu/types": "^0.1.68",
|
|
42
|
+
"eslint-config-standard-universal": "^1.0.9",
|
|
43
|
+
"typescript": "^5.2.2",
|
|
44
|
+
"vite": "^7.3.0"
|
|
41
45
|
},
|
|
42
46
|
"scripts": {
|
|
43
|
-
"build": "
|
|
47
|
+
"build": "tsc --noCheck",
|
|
48
|
+
"dev": "vite",
|
|
44
49
|
"docker:build": "docker build -t thaunknown/jassub-build .",
|
|
45
50
|
"docker:run": "docker run -it --rm -v ${PWD}:/code --name thaunknown_jassub-build thaunknown/jassub-build:latest"
|
|
46
51
|
}
|