diff --git a/src/__tests__/logic/framework.test.ts b/src/__tests__/logic/framework.test.ts index e27c327..9fbb334 100644 --- a/src/__tests__/logic/framework.test.ts +++ b/src/__tests__/logic/framework.test.ts @@ -72,6 +72,22 @@ describe('hydratePayload', () => { expect(fw.quadrants[0].items[0].x).toBe(10) expect(fw.quadrants[0].items[0].y).toBe(10) }) + + it('clamps item coordinates to valid range (2-85)', () => { + const payload = makePayload() + payload.quadrants[0].items = [ + { text: 'Too high', x: 9999, y: 200 }, + { text: 'Too low', x: -500, y: -10 }, + { text: 'In range', x: 50, y: 50 }, + ] + const fw = hydratePayload(payload, 'id') + expect(fw.quadrants[0].items[0].x).toBe(85) + expect(fw.quadrants[0].items[0].y).toBe(85) + expect(fw.quadrants[0].items[1].x).toBe(2) + expect(fw.quadrants[0].items[1].y).toBe(2) + expect(fw.quadrants[0].items[2].x).toBe(50) + expect(fw.quadrants[0].items[2].y).toBe(50) + }) }) describe('updateFramework', () => { diff --git a/src/logic/framework.ts b/src/logic/framework.ts index e02e84d..f341f4a 100644 --- a/src/logic/framework.ts +++ b/src/logic/framework.ts @@ -13,8 +13,8 @@ export function hydratePayload(payload: SharedPayload, id: string): Framework { items: (q.items || []).map((it) => ({ id: crypto.randomUUID(), text: it.text, - x: it.x ?? 10, - y: it.y ?? 10, + x: Math.max(2, Math.min(it.x ?? 10, 85)), + y: Math.max(2, Math.min(it.y ?? 10, 85)), createdAt: Date.now(), })), })),