Skip to content

Commit d41a820

Browse files
authored
refactor(pdfkit): replace events import in line_wrapper.js with inline emitter (#3401)
1 parent c2da509 commit d41a820

2 files changed

Lines changed: 26 additions & 3 deletions

File tree

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
"@react-pdf/pdfkit": patch
3+
---
4+
5+
refactor(pdfkit): replace events import in line_wrapper.js with inline emitter

packages/pdfkit/src/line_wrapper.js

Lines changed: 21 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,12 @@
1-
import { EventEmitter } from 'events';
21
import LineBreaker from 'linebreak';
32
import { PDFNumber } from './utils';
43

54
const SOFT_HYPHEN = '\u00AD';
65
const HYPHEN = '-';
76

8-
class LineWrapper extends EventEmitter {
7+
class LineWrapper {
98
constructor(document, options) {
10-
super();
9+
this._listeners = Object.create(null);
1110
this.document = document;
1211
this.horizontalScaling = options.horizontalScaling || 100;
1312
this.indent = ((options.indent || 0) * this.horizontalScaling) / 100;
@@ -85,6 +84,25 @@ class LineWrapper extends EventEmitter {
8584
});
8685
}
8786

87+
on(event, listener) {
88+
(this._listeners[event] || (this._listeners[event] = [])).push(listener);
89+
}
90+
91+
once(event, listener) {
92+
const wrapper = (...args) => {
93+
const listeners = this._listeners[event];
94+
listeners.splice(listeners.indexOf(wrapper), 1);
95+
listener(...args);
96+
};
97+
this.on(event, wrapper);
98+
}
99+
100+
emit(event, ...args) {
101+
const listeners = this._listeners[event];
102+
if (!listeners) return;
103+
for (const listener of listeners.slice()) listener(...args);
104+
}
105+
88106
wordWidth(word) {
89107
return PDFNumber(
90108
this.document.widthOfString(word, this) +

0 commit comments

Comments
 (0)