@@ -29,7 +29,7 @@ export const GifParseEventType = {
2929 * @property {string } version
3030 */
3131
32- export class GifHeaderParseEvent extends Event {
32+ export class GifHeaderEvent extends Event {
3333 /** @param {GifHeader } header */
3434 constructor ( header ) {
3535 super ( GifParseEventType . HEADER ) ;
@@ -58,7 +58,7 @@ export class GifHeaderParseEvent extends Event {
5858 * @property {GifColor[]= } globalColorTable Only if globalColorTableFlag is true.
5959 */
6060
61- export class GifLogicalScreenParseEvent extends Event {
61+ export class GifLogicalScreenEvent extends Event {
6262 /** @param {GifLogicalScreen } */
6363 constructor ( logicalScreen ) {
6464 super ( GifParseEventType . LOGICAL_SCREEN ) ;
@@ -204,13 +204,83 @@ export class GifParser extends EventTarget {
204204 }
205205
206206 /**
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
211210 */
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 ;
214284 }
215285
216286 /**
@@ -224,7 +294,7 @@ export class GifParser extends EventTarget {
224294 const version = this . version = this . bstream . readString ( 3 ) ; // "87a" or "89a"
225295 if ( ! [ "87a" , "89a" ] . includes ( version ) ) throw `Bad version: ${ version } ` ;
226296
227- this . dispatchEvent ( new GifHeaderParseEvent (
297+ this . dispatchEvent ( new GifHeaderEvent (
228298 /** @type {GifHeader } */ ( { version } )
229299 ) ) ;
230300
@@ -253,7 +323,7 @@ export class GifParser extends EventTarget {
253323 } ) ) ;
254324 }
255325 }
256- this . dispatchEvent ( new GifLogicalScreenParseEvent (
326+ this . dispatchEvent ( new GifLogicalScreenEvent (
257327 /** @type {GifLogicalScreen } */ ( {
258328 logicalScreenWidth,
259329 logicalScreenHeight,
0 commit comments