Skip to content

feat/MAT-354 타입/모델 추출#298

Open
b0nsu wants to merge 1 commit intodevelopfrom
refactor/mat-354-type-model
Open

feat/MAT-354 타입/모델 추출#298
b0nsu wants to merge 1 commit intodevelopfrom
refactor/mat-354-type-model

Conversation

@b0nsu
Copy link
Copy Markdown
Collaborator

@b0nsu b0nsu commented Apr 28, 2026

Summary

DrawingCanvas에서 타입과 유틸리티를 model/ 디렉토리로 추출. readonly 타입(ReadonlyPoint, ReadonlyStroke)과 StrokeBounds 타입을 도입하여 후속 이슈(MAT-358 undo/redo, MAT-360 지우개 최적화)의 기반을 마련.

Linear

Changes

  • model/drawingTypes.ts: Point, Stroke, TextItem, DrawingCanvasRef 추출 + ReadonlyPoint, ReadonlyStroke, StrokeBounds 추가
  • model/strokeUtils.ts: deepCopyStrokes, deepCopyTexts, safeMax 추출 + computeStrokeBounds (single-pass O(n)) 추가
  • smoothing.ts: 로컬 Point 제거, drawingTypes에서 import
  • DrawingCanvas.tsx: 인라인 타입/유틸 제거, model에서 import
  • index.ts: 새 타입/유틸 re-export 추가

Testing

  • pnpm --filter @repo/pointer-native-drawing lint 통과
  • 타입 추출만으로 런타임 동작 변경 없음

Risk / Impact

  • 영향 범위: @repo/pointer-native-drawing 패키지 내부 구조 변경만. 외부 API 동일
  • 확인이 필요한 부분: 없음
  • 배포 시 유의사항: 없음

@linear
Copy link
Copy Markdown

linear Bot commented Apr 28, 2026

@vercel
Copy link
Copy Markdown

vercel Bot commented Apr 28, 2026

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
pointer-admin Ready Ready Preview, Comment May 8, 2026 2:57pm

@b0nsu b0nsu changed the title [feat/MAT-354] 타입/모델 추출 feat/MAT-354 타입/모델 추출 Apr 29, 2026
@b0nsu b0nsu requested a review from sterdsterd April 29, 2026 01:46
@b0nsu b0nsu requested a review from Copilot May 7, 2026 13:29
Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

@repo/pointer-native-drawing 패키지에서 DrawingCanvas에 있던 타입/유틸을 model/ 디렉토리로 분리하고, 이후 undo/redo 및 지우개 최적화를 위한 기반 타입/유틸(특히 bounds 계산)을 추가하는 PR입니다.

Changes:

  • model/drawingTypes.ts로 Point/Stroke/TextItem/DrawingCanvasRef 및 readonly/bounds 타입을 추출·정의
  • model/strokeUtils.ts로 deep copy/배열 유틸을 추출하고 computeStrokeBounds를 추가
  • 기존 모듈들(smoothing, DrawingCanvas, index)에서 새 model 모듈을 import/re-export 하도록 정리

Reviewed changes

Copilot reviewed 5 out of 5 changed files in this pull request and generated 2 comments.

Show a summary per file
File Description
packages/pointer-native-drawing/src/smoothing.ts 로컬 Point 타입을 제거하고 model의 Point 타입을 사용하도록 변경
packages/pointer-native-drawing/src/model/strokeUtils.ts stroke/text deep copy 및 유틸 분리 + stroke AABB 계산 유틸 추가
packages/pointer-native-drawing/src/model/drawingTypes.ts 드로잉 관련 타입과 readonly/bounds 타입을 model로 추출
packages/pointer-native-drawing/src/index.ts 새 model 타입/유틸을 패키지 엔트리에서 re-export
packages/pointer-native-drawing/src/DrawingCanvas.tsx 인라인 타입/유틸 제거 후 model에서 import하도록 리팩터링

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment on lines +22 to +27
export function computeStrokeBounds(points: readonly Point[]): StrokeBounds {
let minX = Infinity;
let minY = Infinity;
let maxX = -Infinity;
let maxY = -Infinity;

Comment on lines +21 to +23
/** single-pass O(n)으로 stroke의 AABB를 계산. MAT-360 지우개 히트 테스트 최적화 기반. */
export function computeStrokeBounds(points: readonly Point[]): StrokeBounds {
let minX = Infinity;
…xtbox 임시 비활성화

- model/drawingTypes.ts: Point, Stroke, DrawingCanvasRef 추출 + StrokeBounds (지우개 히트 테스트 최적화 기반)
- model/strokeUtils.ts: deepCopyStrokes, safeMax 추출 + computeStrokeBounds (single-pass O(n) AABB)
- smoothing.ts: 로컬 Point 제거 → drawingTypes 참조
- DrawingCanvas.tsx: 인라인 타입/유틸 제거 + textbox 시스템 전체 비활성화 (TextItem/get·setTexts/text gesture/keyboard 처리/렌더링 모두 제거 — 재활성화는 별도 PR)
- index.ts: 외부 노출 심볼만 re-export (StrokeBounds/computeStrokeBounds 내부 전용)

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants