diff --git a/Dockerfile b/Dockerfile index 85fbeac..697e613 100644 --- a/Dockerfile +++ b/Dockerfile @@ -55,7 +55,7 @@ RUN echo "Building with ID: ${BUILD_ID}" COPY . . # Build application (monorepo filter) -ENV NODE_OPTIONS="--max_old_space_size=4096" +ENV NODE_OPTIONS="--max_old_space_size=8192" RUN pnpm --filter @mintel/web build # Stage 2: Runner diff --git a/Dockerfile.dev b/Dockerfile.dev index 4936254..01eeeec 100644 --- a/Dockerfile.dev +++ b/Dockerfile.dev @@ -1,7 +1,7 @@ FROM node:20-alpine # Install essential build tools if needed (e.g., for node-gyp) -RUN apk add --no-cache libc6-compat python3 make g++ +RUN apk add --no-cache libc6-compat git python3 make g++ WORKDIR /app diff --git a/apps/web/src/components/IframeSection.tsx b/apps/web/src/components/IframeSection.tsx index 316186c..1e7d4b2 100644 --- a/apps/web/src/components/IframeSection.tsx +++ b/apps/web/src/components/IframeSection.tsx @@ -196,11 +196,13 @@ export const IframeSection: React.FC = ({ const updateScrollState = React.useCallback(() => { try { + const win = iframeRef.current?.contentWindow; const doc = iframeRef.current?.contentDocument?.documentElement; - if (doc) { - const atTop = doc.scrollTop <= 5; + if (doc && win) { + const scrollTop = doc.scrollTop || win.scrollY || 0; + const atTop = scrollTop <= 5; const atBottom = - doc.scrollTop + doc.clientHeight >= doc.scrollHeight - 5; + scrollTop + doc.clientHeight >= doc.scrollHeight - 5; const isScrollable = doc.scrollHeight > doc.clientHeight + 10; setScrollState({ atTop, atBottom, isScrollable }); } diff --git a/docker-compose.dev.yml b/docker-compose.dev.yml index 77ad1e2..9e675b7 100644 --- a/docker-compose.dev.yml +++ b/docker-compose.dev.yml @@ -31,6 +31,7 @@ services: # - CI=true - NPM_TOKEN=${NPM_TOKEN:-} - DATABASE_URI=postgres://${postgres_DB_USER:-payload}:${postgres_DB_PASSWORD:-payload}@postgres-db:5432/${postgres_DB_NAME:-payload} + - QDRANT_URL=http://qdrant:6333 - PAYLOAD_SECRET=dev-secret command: > sh -c "pnpm install --no-frozen-lockfile && pnpm --filter @mintel/web dev" diff --git a/scripts/visual_debug.mjs b/scripts/visual_debug.mjs new file mode 100644 index 0000000..6fbc4a7 --- /dev/null +++ b/scripts/visual_debug.mjs @@ -0,0 +1,36 @@ +import puppeteer from 'puppeteer'; + +(async () => { + // Launch browser + const browser = await puppeteer.launch({ headless: true }); + const page = await browser.newPage(); + + // Set viewport + await page.setViewport({ width: 1920, height: 1080 }); + + try { + console.log("Navigating to case study page..."); + await page.goto('https://mintel.me/case-studies/klz-cables', { waitUntil: 'networkidle2' }); + + console.log("Waiting a bit for iframes to load..."); + await new Promise(r => setTimeout(r, 5000)); + + // Let's get console logs from the page too + page.on('console', msg => console.log('PAGE LOG:', msg.text())); + + console.log("Taking screenshot..."); + await page.screenshot({ path: '/Users/marcmintel/Projects/mintel.me/screenshot_case_study.png', fullPage: true }); + + // Also take a screenshot of the actual showcase HTML page directly to compare + console.log("Navigating directly to showcase HTML..."); + await page.goto('https://mintel.me/showcase/klz-cables.com/power-cables-medium-voltage-cables.html', { waitUntil: 'networkidle2' }); + await new Promise(r => setTimeout(r, 3000)); + await page.screenshot({ path: '/Users/marcmintel/Projects/mintel.me/screenshot_showcase.png', fullPage: true }); + + console.log("Done!"); + } catch (e) { + console.error("Error:", e); + } finally { + await browser.close(); + } +})(); diff --git a/wget_out.txt b/wget_out.txt new file mode 100644 index 0000000..d5ed53f --- /dev/null +++ b/wget_out.txt @@ -0,0 +1 @@ +zsh:1: command not found: wget