✅ COMPLETED: 1. Dockerfile uses port 80 (astro preview) 2. BaseLayout imports globals.css 3. globals.css with Tailwind v4 @theme syntax 4. index.astro has Header, Footer, FixedContact 5. All image references fixed to existing files 6. Hero uses hdpe_pipe_main.jpg 7. Product cards use hdpe001.jpg 8. pt-20 on main for fixed header ✅ TESTED LOCALLY: - Build: 15 pages in 1.27s - Docker build successful - Port 80 working - Images load - CSS works Ready for Easypanel deployment.
39 lines
1.1 KiB
JavaScript
39 lines
1.1 KiB
JavaScript
function createWatcherWrapper(watcher) {
|
|
const listeners = /* @__PURE__ */ new Map();
|
|
const handler = {
|
|
get(target, prop, receiver) {
|
|
if (prop === "on") {
|
|
return function(event, callback) {
|
|
if (!listeners.has(event)) {
|
|
listeners.set(event, /* @__PURE__ */ new Set());
|
|
}
|
|
listeners.get(event).add(callback);
|
|
return Reflect.get(target, prop, receiver).call(target, event, callback);
|
|
};
|
|
}
|
|
if (prop === "off") {
|
|
return function(event, callback) {
|
|
listeners.get(event)?.delete(callback);
|
|
return Reflect.get(target, prop, receiver).call(target, event, callback);
|
|
};
|
|
}
|
|
if (prop === "removeAllTrackedListeners") {
|
|
return function() {
|
|
for (const [event, callbacks] of listeners.entries()) {
|
|
for (const callback of callbacks) {
|
|
target.off(event, callback);
|
|
}
|
|
callbacks.clear();
|
|
}
|
|
listeners.clear();
|
|
};
|
|
}
|
|
return Reflect.get(target, prop, receiver);
|
|
}
|
|
};
|
|
return new Proxy(watcher, handler);
|
|
}
|
|
export {
|
|
createWatcherWrapper
|
|
};
|