CrownyDoc 프레젠테이션 Phase 2 약점 보완 (#121-130)
개요
CrownyDoc Office Suite 프레젠테이션 모듈의 약점 10개 (#121-130)를 구현 완료했다.
모든 기능은 slide-phase2.js 단일 파일에 모듈 패턴으로 구성됐다.
무엇을 했는가
구현된 기능
| ID | 클래스 | 기능 |
|---|---|---|
| #121 | CrownyDesigner | 슬라이드 내용 분석 → 단순/그래픽/카드형 레이아웃 3개 제안 패널 |
| #122 | CrownyCameo | getUserMedia()로 카메라 스트림 → 슬라이드 우하단 원형 오버레이, 드래그 이동 |
| #123 | CrownyLiveCaption | SpeechRecognition (ko-KR, continuous) → 하단 자막 바, 미지원 시 안내 |
| #124 | CrownySection | 슬라이드 목록에 섹션 헤더 삽입, 클릭으로 접기/펼치기, 섹션명 인라인 편집 |
| #125 | CrownyAnimationPainter | 애니메이션 속성 복사(copy) → Alt+Click으로 타 요소에 붙여넣기 |
| #126 | CrownyModel3D | model-viewer Web Component (GLB URL) 또는 SVG 큐브 폴백 |
| #127 | CrownyZoomSlide | 마스터 슬라이드에 줌 링크 썸네일 배치, 클릭 시 줌인 후 해당 슬라이드 이동 |
| #128 | CrownySlideTag | 슬라이드별 태그 배열 관리, 태그 칩 UI, 태그 기반 필터링 |
| #129 | CrownySlideInk | Canvas 오버레이 펜 모드 (포인터 이벤트), 색상/굵기 툴바, PNG 내보내기 |
| #130 | CrownyMediaTrim | 오디오/비디오 시작/끝 시간 지정, timeupdate 이벤트로 범위 강제, 미리보기 |
핵심 구현 패턴
- 모든 클래스 즉시실행함수(IIFE) 모듈 패턴으로 전역 오염 차단
CrownyOffice네임스페이스에 자동 등록 (존재 시)- getData / loadData 메서드로 슬라이드 데이터와 직렬화/복원 일관성 유지
- 브라우저 미지원 기능은 안내 메시지 폴백
관련 파일 경로
- JS:
/Users/ef/CrownyDoc/한선씨/정적/slide-phase2.js - 한선씨 동반:
/Users/ef/CrownyDoc/한선씨/슬라이드/페이즈2.한선 - index.html:
/Users/ef/CrownyDoc/한선씨/정적/index.html(line 105: slide-phase2.js 추가됨) - benchmark:
/Users/ef/CrownyDoc/benchmark-weaknesses.json(#121-130 → done)
검증
node --check slide-phase2.js→ 문법 오류 없음- benchmark-weaknesses.json 10개 항목 status: done
잔여 이슈
- CrownyCameo: HTTPS 환경에서만 getUserMedia 동작 (개발 서버 localhost는 예외)
- CrownyLiveCaption: Chrome/Edge 전용 (SpeechRecognition 표준화 미완)
- CrownyModel3D model-viewer: CDN 연결 필요, 오프라인 환경에서는 SVG 큐브 폴백 사용
- CrownySection renderList: CrownySlide._renderList와 교체 연동 작업 필요 (툴바 버튼 미연결)
- slide-toolbar.js에 Phase 2 버튼 추가 작업 별도 진행 필요