@@ -29,7 +29,7 @@ export const GifParseEventType = {
29
29
* @property {string } version
30
30
*/
31
31
32
- export class GifHeaderParseEvent extends Event {
32
+ export class GifHeaderEvent extends Event {
33
33
/** @param {GifHeader } header */
34
34
constructor ( header ) {
35
35
super ( GifParseEventType . HEADER ) ;
@@ -58,7 +58,7 @@ export class GifHeaderParseEvent extends Event {
58
58
* @property {GifColor[]= } globalColorTable Only if globalColorTableFlag is true.
59
59
*/
60
60
61
- export class GifLogicalScreenParseEvent extends Event {
61
+ export class GifLogicalScreenEvent extends Event {
62
62
/** @param {GifLogicalScreen } */
63
63
constructor ( logicalScreen ) {
64
64
super ( GifParseEventType . LOGICAL_SCREEN ) ;
@@ -204,13 +204,83 @@ export class GifParser extends EventTarget {
204
204
}
205
205
206
206
/**
207
- * Overridden so that the type hints for eventType are specific.
208
- * @param {'application_extension'|'comment_extension'|'graphical_control_extension'|'header'|'logical_screen'|'plain_text_extension'|'table_based_image'|'trailer' } eventType
209
- * @param {EventListenerOrEventListenerObject } listener
210
- * @override
207
+ * Type-safe way to bind a listener for a GifApplicationExtensionEvent.
208
+ * @param {function(GifApplicationExtensionEvent): void } listener
209
+ * @returns {GifParser } for chaining
211
210
*/
212
- addEventListener ( eventType , listener ) {
213
- super . addEventListener ( eventType , listener ) ;
211
+ onApplicationExtension ( listener ) {
212
+ super . addEventListener ( GifParseEventType . APPLICATION_EXTENSION , listener ) ;
213
+ return this ;
214
+ }
215
+
216
+ /**
217
+ * Type-safe way to bind a listener for a GifCommentExtensionEvent.
218
+ * @param {function(GifCommentExtensionEvent): void } listener
219
+ * @returns {GifParser } for chaining
220
+ */
221
+ onCommentExtension ( listener ) {
222
+ super . addEventListener ( GifParseEventType . COMMENT_EXTENSION , listener ) ;
223
+ return this ;
224
+ }
225
+
226
+ /**
227
+ * Type-safe way to bind a listener for a GifGraphicControlExtensionEvent.
228
+ * @param {function(GifGraphicControlExtensionEvent): void } listener
229
+ * @returns {GifParser } for chaining
230
+ */
231
+ onGraphicControlExtension ( listener ) {
232
+ super . addEventListener ( GifParseEventType . GRAPHIC_CONTROL_EXTENSION , listener ) ;
233
+ return this ;
234
+ }
235
+
236
+ /**
237
+ * Type-safe way to bind a listener for a GifHeaderEvent.
238
+ * @param {function(GifHeaderEvent): void } listener
239
+ * @returns {GifParser } for chaining
240
+ */
241
+ onHeader ( listener ) {
242
+ super . addEventListener ( GifParseEventType . HEADER , listener ) ;
243
+ return this ;
244
+ }
245
+
246
+ /**
247
+ * Type-safe way to bind a listener for a GifLogicalScreenEvent.
248
+ * @param {function(GifLogicalScreenEvent): void } listener
249
+ * @returns {GifParser } for chaining
250
+ */
251
+ onLogicalScreen ( listener ) {
252
+ super . addEventListener ( GifParseEventType . LOGICAL_SCREEN , listener ) ;
253
+ return this ;
254
+ }
255
+
256
+ /**
257
+ * Type-safe way to bind a listener for a GifPlainTextExtensionEvent.
258
+ * @param {function(GifPlainTextExtensionEvent): void } listener
259
+ * @returns {GifParser } for chaining
260
+ */
261
+ onPlainTextExtension ( listener ) {
262
+ super . addEventListener ( GifParseEventType . PLAIN_TEXT_EXTENSION , listener ) ;
263
+ return this ;
264
+ }
265
+
266
+ /**
267
+ * Type-safe way to bind a listener for a GifTableBasedImageEvent.
268
+ * @param {function(GifTableBasedImageEvent): void } listener
269
+ * @returns {GifParser } for chaining
270
+ */
271
+ onTableBasedImage ( listener ) {
272
+ super . addEventListener ( GifParseEventType . TABLE_BASED_IMAGE , listener ) ;
273
+ return this ;
274
+ }
275
+
276
+ /**
277
+ * Type-safe way to bind a listener for a GifTrailerEvent.
278
+ * @param {function(GifTrailerEvent): void } listener
279
+ * @returns {GifParser } for chaining
280
+ */
281
+ onTrailer ( listener ) {
282
+ super . addEventListener ( GifParseEventType . TRAILER , listener ) ;
283
+ return this ;
214
284
}
215
285
216
286
/**
@@ -224,7 +294,7 @@ export class GifParser extends EventTarget {
224
294
const version = this . version = this . bstream . readString ( 3 ) ; // "87a" or "89a"
225
295
if ( ! [ "87a" , "89a" ] . includes ( version ) ) throw `Bad version: ${ version } ` ;
226
296
227
- this . dispatchEvent ( new GifHeaderParseEvent (
297
+ this . dispatchEvent ( new GifHeaderEvent (
228
298
/** @type {GifHeader } */ ( { version } )
229
299
) ) ;
230
300
@@ -253,7 +323,7 @@ export class GifParser extends EventTarget {
253
323
} ) ) ;
254
324
}
255
325
}
256
- this . dispatchEvent ( new GifLogicalScreenParseEvent (
326
+ this . dispatchEvent ( new GifLogicalScreenEvent (
257
327
/** @type {GifLogicalScreen } */ ( {
258
328
logicalScreenWidth,
259
329
logicalScreenHeight,
0 commit comments