Skip to content

수식 편집 UI 개선: 듀얼 모드, 자동완성, 탭 기반 템플릿#738

Closed
oksure wants to merge 2 commits into
edwardkim:develfrom
oksure:contrib/equation-editor-ux
Closed

수식 편집 UI 개선: 듀얼 모드, 자동완성, 탭 기반 템플릿#738
oksure wants to merge 2 commits into
edwardkim:develfrom
oksure:contrib/equation-editor-ux

Conversation

@oksure

@oksure oksure commented May 9, 2026

Copy link
Copy Markdown
Contributor

변경 사항

수식 편집 대화상자(equation-editor-dialog.ts)를 전면 개선합니다.

1. HWP ↔ LaTeX 듀얼 입력 모드

  • 타이틀바에 모드 토글 버튼 (HWP/LaTeX)
  • 모드에 따라 템플릿 스크립트가 HWP 또는 LaTeX 구문으로 전환
  • 기존 스크립트에 \명령어 존재 시 LaTeX 모드로 자동 시작
  • Rust 수식 파서가 이미 양 구문을 처리하므로 백엔드 변경 불필요

2. 탭 기반 확장 템플릿

  • 기존 30개 → 130+ 항목으로 확장
  • 7개 탭: 구조, 그리스, 연산자, 화살표, 함수, 장식, 특수
  • symbols.rs 명령어 체계와 정합

3. 명령어 자동완성

  • 2자 이상 입력 시 자동완성 드롭다운 활성화
  • ↑↓ 키로 선택, Tab/Enter로 확정, Esc로 닫기
  • 기호 미리보기(α), 명령어 이름(alpha), 그룹명(그리스) 동시 표시

4. 기호 검색

  • 이름 또는 유니코드 문자로 전체 명령어 검색
  • 검색 결과 클릭 시 커서 위치에 삽입

5. LaTeX 전환 힌트

  • HWP 모드에서 \ + 영문자 입력 감지 시 LaTeX 전환 안내 배너 표시

의존성

테스트

  • npx tsc --noEmit: 에러 없음 (WASM 모듈 제외)
  • cargo test: 전체 통과
  • cargo clippy -- -D warnings: 경고 없음

Closes #144

감사합니다.

- HWP ↔ LaTeX 듀얼 입력 모드 (타이틀바 토글 버튼)
- 7개 탭 기반 템플릿 (구조/그리스/연산자/화살표/함수/장식/특수, 130+ 항목)
- 명령어 자동완성 드롭다운 (2자 이상 입력 시 활성화, ↑↓/Tab/Enter)
- 기호 검색 (이름/유니코드로 필터링)
- HWP 모드에서 백슬래시 감지 시 LaTeX 전환 힌트
- 기존 스크립트에 \명령어 존재 시 LaTeX 모드로 자동 시작

Closes edwardkim#144
Copilot AI review requested due to automatic review settings May 9, 2026 11:51

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Pull request overview

수식 편집 대화상자 UI를 확장하여 HWP ↔ LaTeX 듀얼 모드, 탭 기반 템플릿, 명령어 자동완성/검색을 제공하도록 개선하는 PR입니다. 기존 WASM 미리보기/속성 편집 흐름은 유지하면서, 입력 편의 기능과 템플릿 규모를 크게 늘리는 방향의 변경입니다.

Changes:

  • HWP/LaTeX 모드 토글 및 기존 스크립트 기반 LaTeX 자동 시작 로직 추가
  • 탭 UI로 템플릿 그룹화(구조/그리스/연산자/화살표/함수/장식/특수) 및 항목 확장
  • 자동완성 드롭다운 + 기호 검색 UI/키보드 인터랙션 추가

Reviewed changes

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

File Description
rhwp-studio/src/ui/equation-editor-dialog.ts 듀얼 모드/탭 템플릿/자동완성/검색 UI 로직 및 이벤트 처리 추가
rhwp-studio/src/styles/dialogs.css 수식 편집 대화상자 탭/모드 버튼/자동완성/검색/힌트 UI 스타일 추가

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

Comment on lines +181 to +191
function buildCommandList(): CommandEntry[] {
const cmds: CommandEntry[] = [];
for (const grp of TEMPLATE_GROUPS) {
for (const t of grp.items) {
cmds.push({ name: t.hwp.split(/[\s{}_^]/)[0], display: t.label, insert: t.hwp, group: grp.name });
}
}
return cmds;
}

const ALL_COMMANDS = buildCommandList();
Comment on lines +181 to +185
function buildCommandList(): CommandEntry[] {
const cmds: CommandEntry[] = [];
for (const grp of TEMPLATE_GROUPS) {
for (const t of grp.items) {
cmds.push({ name: t.hwp.split(/[\s{}_^]/)[0], display: t.label, insert: t.hwp, group: grp.name });
Comment on lines +540 to +547
const pos = ta.selectionStart;
const text = ta.value;
const before = text.substring(0, pos);
const match = before.match(/([a-zA-Z]+)$/);
if (!match) return;
const wordStart = pos - match[1].length;
const script = this.mode === 'hwp' ? cmd.insert : (cmd.insert.startsWith('\\') ? cmd.insert : '\\' + cmd.insert);
ta.value = text.substring(0, wordStart) + script + text.substring(pos);
edwardkim added a commit that referenced this pull request May 10, 2026
PR #738 (@oksure) 옵션 A 처리 — 2 commits cherry-pick + no-ff merge.

본질 정정 (2 files, +601/-98):
- rhwp-studio/src/ui/equation-editor-dialog.ts (+447/-91):
  · HWP ↔ LaTeX 듀얼 입력 모드 (InputMode = 'hwp' | 'latex' + setMode/toggleMode)
  · 타이틀바 모드 토글 버튼 + 기존 스크립트 영역 영역 \명령어 존재 시 LaTeX 모드 자동 시작
  · 탭 기반 130+ 템플릿 (7 탭: 구조/그리스/연산자/화살표/함수/장식/특수)
  · 명령어 자동완성 드롭다운 (2자 이상 입력 시 활성화, ↑↓ 선택 / Tab+Enter 확정 / Esc 닫기, 기호+이름+그룹 표시)
  · 기호 검색 (이름/유니코드 → 커서 위치 삽입)
  · LaTeX 전환 힌트 (HWP 모드 영역 \ + 영문자 감지 → 안내 배너)
- rhwp-studio/src/styles/dialogs.css (+154/-7): 신규 UI 요소 영역 CSS (모드 토글 / 탭 / 자동완성 / 검색 / LaTeX 힌트)

Copilot 리뷰 반영 (commit `f4636679`): LaTeX 모드 자동완성 정정 — 모드별 insert 분리 + 빈 name 방지 + 백슬래시 중복 제거.

백엔드 변경 부재:
- Rust 수식 파서 영역 영역 PR #729 (closes #143) 영역 영역 양 구문 처리 영역 영역 활용
- WASM 변경 부재 — TypeScript + CSS 만

자기 검증:
- cherry-pick 충돌 0건
- tsc --noEmit ✅ 통과
- 광범위 sweep 7 fixture / 170 페이지 / 회귀 0 ✅ (TypeScript 영역 영역 SVG 무영향 입증)
- WASM 빌드 4.66 MB
- 작업지시자 시각 판정 ✅ 통과 (dev server 영역 영역 모드 토글 / 자동완성 / 탭 템플릿 / 기호 검색 / LaTeX 힌트 5개 영역 영역 정합)

PR supersede 체인 (a) 패턴 — close+통합 머지:
- PR #738 영역 영역 PR #765 (closes #763, 5/9 19:35 등록, 동일 컨트리뷰터 @oksure) 영역 영역 의 본질 (UI 모드 토글) 영역 영역 완전 포함
- PR #765 영역 영역 close + Issue #763 close (PR #738 영역 영역 통합 영역 영역 명시)

closes #144
관련: PR #765 (closes #763) — PR #738 영역 영역 supersede ((a) 패턴)
edwardkim added a commit that referenced this pull request May 10, 2026
- mydocs/pr/archives/pr_738_review.md: 검토 문서 archives 이동
- mydocs/pr/archives/pr_738_report.md: 처리 보고서 작성
  · 수식 편집 UI 개선 (듀얼 모드 + 자동완성 + 탭 130+ 템플릿 + 기호 검색 + LaTeX 힌트)
  · 백엔드 변경 부재 (PR #729 영역 영역 Rust 수식 파서 활용)
  · 작업지시자 시각 판정 ✅ 통과
  · feedback_pr_supersede_chain (a) 패턴 권위 사례 — PR #738 영역 PR #765 (closes #763) supersede
- mydocs/orders/20260510.md: PR #738 항목 추가 (5/10 사이클 영역 영역 11건 처리)
@edwardkim

Copy link
Copy Markdown
Owner

@oksure 님, 검토 + 머지 완료했습니다.

처리 결과

옵션 A (2 commits cherry-pick + no-ff merge `11cb5424`) 로 처리. 충돌 0건.

자기 검증

  • `tsc --noEmit` ✅ 통과
  • 광범위 sweep (7 fixture / 170 페이지) ✅ 170 same / 0 diff (TypeScript 영역 SVG 무영향 입증)
  • WASM 빌드 ✅ 4.66 MB

작업지시자 시각 판정 ✅ 통과

dev server 영역 수식 편집 대화상자 영역 영역 5개 영역 모두 정합:

  1. HWP ↔ LaTeX 듀얼 모드 토글 ✓
  2. 탭 기반 130+ 템플릿 (7 탭) ✓
  3. 명령어 자동완성 드롭다운 ✓
  4. 기호 검색 ✓
  5. LaTeX 전환 힌트 ✓

본질

수식 편집 UX 전면 개선 — Rust 수식 파서 (PR #729 closes #143) 영역 영역 양 구문 처리 영역 영역 활용 영역 영역 백엔드 변경 부재. `feedback_process_must_follow` 정합 — 인프라 재사용 영역 영역 위험 좁힘.

PR supersede 체인 (a) 패턴 — PR #765 통합 처리

본 PR #738 영역 영역 PR #765 (closes #763, 5/9 19:35 등록, hwpeq/LaTeX 모드 토글 + 30개 템플릿 + Ctrl+M 작은 PR) 영역 영역 의 본질 (UI 모드 토글) 영역 영역 완전 포함 영역 영역 → close+통합 머지 ((a) 패턴 정합, PR #649#650 동일 패턴).

PR #765 영역 영역 close + Issue #763 close 후속 처리 영역 — `feedback_pr_supersede_chain` (a) 패턴 권위 사례.

처리 보고서: `mydocs/pr/archives/pr_738_report.md`.

@oksure20+ 사이클 컨트리뷰션 영역 — 5/10 사이클 영역 영역 PR #720/#723/#725/#728/#729/#730/#732/#734/#735/#737/#738 영역 11건 처리 완료 영역.

@edwardkim edwardkim closed this May 10, 2026
edwardkim added a commit that referenced this pull request May 10, 2026
PR #739 (@oksure) 옵션 A 처리 — 2 commits cherry-pick + 자기 정정 + no-ff merge.

본질 정정 (5 files, +152/-0):
- src/document_core/commands/object_ops.rs (+94): insert_equation_native() — insertFootnote 패턴 정합 (controls.insert + char_offsets gap 8 + reflow + paginate). treat_as_char: true (한컴 수식 영역 영역 항상 TAC, project_equation_always_tac 정합)
- src/wasm_api.rs (+22): WASM 바인딩 insertEquation(sec, para, charOffset, script, fontSize, color)
- rhwp-studio/src/core/wasm-bridge.ts (+5): TypeScript 바인딩 insertEquation()
- rhwp-studio/src/command/commands/insert.ts (+30): 'insert:equation' 커맨드 — 빈 수식 삽입 후 EquationEditorDialog 자동 진입 + 표 셀 내부 실행 차단 (이중 가드)
- rhwp-studio/index.html (+1): 입력 메뉴 영역 영역 "수식 (Ctrl+N,M)" 항목

Copilot 리뷰 반영 (commit `e93f60dc`): 셀 내부 실행 차단 + CTRL_EQUATION 상수 사용 + control_mask |= 1<<11 비트 설정.

본 환경 자기 정정 (commit `76f9ade6`): EditorContext.inTableCellEditing 영역 영역 부재 영역 영역 본 환경 영역 영역 정의 영역 영역 inTable 영역 영역 대체 (tsc 에러 정정).

인프라 재사용:
- insertFootnote 패턴 (object_ops.rs)
- EquationEditorDialog (PR #738 closes #144)
- Control::Equation IR + 기존 API (renderEquationPreview / getEquationProperties / setEquationProperties)

자기 검증:
- cherry-pick 충돌 0건
- cargo build/test --release ✅ ALL GREEN
- tsc --noEmit ✅ 통과 (자기 정정 후)
- 광범위 sweep 7 fixture / 170 페이지 / 회귀 0 ✅
- WASM 빌드 4.65 MB (cargo clean wasm target 후 강제 재빌드 — insertEquation API 노출 정합)

작업지시자 웹 검증:
- 메뉴 클릭 경로: 본문 캐럿 위치 영역 빈 수식 삽입 + 대화상자 자동 진입 ✅ 정합 동작
- 두 별 결함 발견 (PR #739 본질 영역 영역 무관, 후속 별 PR 영역 영역 정정):
  · Issue #766 — 수식 객체 backspace 삭제 시 "지정된 컨트롤이 Shape이 아닙니다" 오류 (input-handler-keyboard.ts 영역 picture-object selection ref dispatch 영역 영역 Equation 분기 부재)
  · Issue #767 — Ctrl+N+M 단축키 영역 chordMapN 영역 'm' 매핑 부재 → 브라우저 새 창 발생 (input-handler-keyboard.ts:chordMapN 영역 영역 등록 부재)

처리 결정 (feedback_pr_supersede_chain (c) 패턴 정합):
- PR #739 머지 유지 (insertEquation API + 메뉴 항목 + 대화상자 자동 진입 본질 보존)
- Issue #766/#767 영역 별 후속 PR 영역 영역 통합 처리

closes #731
관련 후속: Issue #766 / Issue #767
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.

3 participants