Skip to content

Commit fd9df8c

Browse files
committed
Move decoration application to constructor
1 parent 1deae41 commit fd9df8c

File tree

1 file changed

+30
-35
lines changed

1 file changed

+30
-35
lines changed

src/core/main.js

Lines changed: 30 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,35 @@ class p5 {
4848
static _friendlyFileLoadError = () => {};
4949

5050
constructor(sketch, node) {
51+
// Apply addon defined decorations
52+
if(p5.decorations.size > 0){
53+
for (const [patternArray, decoration] of p5.decorations) {
54+
for(const member in p5.prototype) {
55+
// Member must be a function
56+
if (typeof p5.prototype[member] !== 'function') continue;
57+
58+
if (!patternArray.some(pattern => {
59+
if (typeof pattern === 'string') {
60+
return pattern === member;
61+
} else if (pattern instanceof RegExp) {
62+
return pattern.test(member);
63+
}
64+
})) continue;
65+
66+
p5.prototype[member] = decoration(p5.prototype[member], {
67+
kind: 'method',
68+
name: member,
69+
access: {},
70+
static: false,
71+
private: false,
72+
addInitializer(initializer){}
73+
});
74+
}
75+
}
76+
77+
p5.decorations.clear();
78+
}
79+
5180
//////////////////////////////////////////////
5281
// PRIVATE p5 PROPERTIES AND METHODS
5382
//////////////////////////////////////////////
@@ -744,38 +773,4 @@ p5.registerAddon(renderer);
744773
p5.registerAddon(renderer2D);
745774
p5.registerAddon(graphics);
746775

747-
const p5Proxy = new Proxy(p5, {
748-
construct(target, args){
749-
if(p5.decorations.size > 0){
750-
// Apply addon defined decorations
751-
for (const [patternArray, decoration] of p5.decorations) {
752-
for(const member in p5.prototype) {
753-
// Member must be a function
754-
if (typeof p5.prototype[member] !== 'function') continue;
755-
756-
if (!patternArray.some(pattern => {
757-
if (typeof pattern === 'string') {
758-
return pattern === member;
759-
} else if (pattern instanceof RegExp) {
760-
return pattern.test(member);
761-
}
762-
})) continue;
763-
764-
p5.prototype[member] = decoration(p5.prototype[member], {
765-
kind: 'method',
766-
name: member,
767-
access: {},
768-
static: false,
769-
private: false,
770-
addInitializer(initializer){}
771-
});
772-
}
773-
}
774-
775-
p5.decorations.clear();
776-
}
777-
return new target(...args);
778-
}
779-
});
780-
781-
export default p5Proxy;
776+
export default p5;

0 commit comments

Comments
 (0)