diff --git a/index.html b/src/index.html
similarity index 100%
rename from index.html
rename to src/index.html
diff --git a/script.js b/src/script.js
similarity index 98%
rename from script.js
rename to src/script.js
index 0e263bf..2863dc4 100644
--- a/script.js
+++ b/src/script.js
@@ -9,7 +9,7 @@ const canvas = document.getElementById("videoCanvas")
const ctx = canvas.getContext("2d")
let videosToLoad = 2
-const maxVideosToLoad = 9
+const maxVideosToLoad = 4
const videos = []
let videosLoaded = 0
@@ -159,6 +159,11 @@ function drawVideos() {
ctx.globalCompositeOperation = "source-over"
})
+ // Get pixel data
+ // let imageData = ctx.getImageData(0, 0, canvas.width, canvas.height);
+
+ // Todo calculate effects based on imageDate
+
// If showText is true, draw debug text
if (showText) {
drawDebugText()
diff --git a/styles.css b/src/styles.css
similarity index 100%
rename from styles.css
rename to src/styles.css
diff --git a/src/utils/EventEmitter.js b/src/utils/EventEmitter.js
new file mode 100644
index 0000000..1aa273c
--- /dev/null
+++ b/src/utils/EventEmitter.js
@@ -0,0 +1,42 @@
+// EventEmitter.js
+class EventEmitter {
+ constructor(debug = false) {
+ this.events = {};
+ this.debug = debug;
+ }
+
+ on(event, listener) {
+ if (!this.events[event]) this.events[event] = [];
+ this.events[event].push(listener);
+ }
+
+ once(event, listener) {
+ const wrapper = (...args) => {
+ listener(...args);
+ this.off(event, wrapper);
+ };
+ this.on(event, wrapper);
+ }
+
+ off(event, listener) {
+ if (this.events[event]) {
+ this.events[event] = this.events[event].filter(l => l !== listener);
+ }
+ }
+
+ emit(event, data) {
+ if (this.debug) console.log(`Event emitted: ${event}`, data);
+ (this.events[event] || []).forEach(listener => listener(data));
+ (this.events['*'] || []).forEach(listener => listener(event, data));
+ }
+
+ listeners(event) {
+ return this.events[event] || [];
+ }
+
+ clear() {
+ this.events = {};
+ }
+}
+
+export default EventEmitter;
diff --git a/src/utils/helpers.js b/src/utils/helpers.js
new file mode 100644
index 0000000..e69de29