From 0fd3b524f7801ce88c8dcb540efb81fd69b21d3a Mon Sep 17 00:00:00 2001 From: Diego Muracciole Date: Sat, 18 Apr 2026 16:51:00 +0200 Subject: [PATCH] refactor: replace events import in line_wrapper.js with inline emitter --- lib/line_wrapper.js | 24 +++++++++++++++++++++--- 1 file changed, 21 insertions(+), 3 deletions(-) diff --git a/lib/line_wrapper.js b/lib/line_wrapper.js index 66aaeb90..62f7e99f 100644 --- a/lib/line_wrapper.js +++ b/lib/line_wrapper.js @@ -1,13 +1,12 @@ -import { EventEmitter } from 'events'; import LineBreaker from 'linebreak'; import { PDFNumber } from './utils'; const SOFT_HYPHEN = '\u00AD'; const HYPHEN = '-'; -class LineWrapper extends EventEmitter { +class LineWrapper { constructor(document, options) { - super(); + this._listeners = Object.create(null); this.document = document; this.horizontalScaling = options.horizontalScaling || 100; this.indent = ((options.indent || 0) * this.horizontalScaling) / 100; @@ -85,6 +84,25 @@ class LineWrapper extends EventEmitter { }); } + on(event, listener) { + (this._listeners[event] || (this._listeners[event] = [])).push(listener); + } + + once(event, listener) { + const wrapper = (...args) => { + const listeners = this._listeners[event]; + listeners.splice(listeners.indexOf(wrapper), 1); + listener(...args); + }; + this.on(event, wrapper); + } + + emit(event, ...args) { + const listeners = this._listeners[event]; + if (!listeners) return; + for (const listener of listeners.slice()) listener(...args); + } + wordWidth(word) { return PDFNumber( this.document.widthOfString(word, this) +