Skip to content

Commit 1579dc8

Browse files
author
edward.kim
committed
Revert "feat: HWPX fragment paste support (closes #880)"
This reverts commit 6c42ee9.
1 parent 47c3e75 commit 1579dc8

20 files changed

Lines changed: 47 additions & 4112 deletions

rhwp-studio/index.html

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -98,7 +98,6 @@
9898
<div class="md-item" data-cmd="insert:image"><span class="md-icon icon-image"></span><span class="md-label">그림</span></div>
9999
<div class="md-item" data-cmd="insert:textbox"><span class="md-icon icon-textbox"></span><span class="md-label">글상자</span></div>
100100
<div class="md-item" data-cmd="insert:equation"><span class="md-icon"></span><span class="md-label">수식</span><span class="md-shortcut">Ctrl+N,M</span></div>
101-
<div class="md-item" data-cmd="insert:yangsik-parts"><span class="md-icon"></span><span class="md-label">양식 부품</span></div>
102101
<div class="md-sep"></div>
103102
<div class="md-item disabled" data-cmd="insert:field"><span class="md-icon"></span><span class="md-label">필드 입력</span><span class="md-shortcut">Ctrl+K+E</span></div>
104103
<div class="md-sep"></div>

rhwp-studio/src/command/commands/insert.ts

Lines changed: 0 additions & 48 deletions
Original file line numberDiff line numberDiff line change
@@ -5,12 +5,6 @@ import { SymbolsDialog } from '@/ui/symbols-dialog';
55
import { BookmarkDialog } from '@/ui/bookmark-dialog';
66
import { showShapePicker } from '@/ui/shape-picker';
77
import type { ShapeType } from '@/ui/shape-picker';
8-
import {
9-
YangsikPartsDialog,
10-
fetchYangsikFragmentManifest,
11-
fetchYangsikFragmentXml,
12-
type FragmentManifestEntry,
13-
} from '@/ui/yangsik-parts-dialog';
148

159
/** 스텁 커맨드 생성 헬퍼 */
1610
function stub(id: string, label: string, icon?: string, shortcut?: string): CommandDef {
@@ -397,48 +391,6 @@ export const insertCommands: CommandDef[] = [
397391
toggleFlip(services, 'vertFlip');
398392
},
399393
},
400-
{
401-
id: 'insert:yangsik-parts',
402-
label: '양식 부품',
403-
canExecute: (ctx) => ctx.hasDocument && ctx.isEditable,
404-
async execute(services) {
405-
try {
406-
const fragments = await fetchYangsikFragmentManifest();
407-
if (fragments.length === 0) {
408-
window.alert('양식 부품 카탈로그가 비어있습니다.');
409-
return;
410-
}
411-
const inserter = async (entry: FragmentManifestEntry): Promise<boolean> => {
412-
const ih = services.getInputHandler();
413-
if (!ih) return false;
414-
const pos = ih.getPosition();
415-
try {
416-
const fragmentXml = await fetchYangsikFragmentXml(entry.fragment_file);
417-
const defs = entry.source_definitions ?? {};
418-
services.wasm.pasteHwpxFragmentInDocument(
419-
pos.sectionIndex,
420-
pos.paragraphIndex,
421-
fragmentXml,
422-
defs.char_prs ?? '',
423-
defs.para_prs ?? '',
424-
defs.styles ?? '',
425-
defs.border_fills ?? '',
426-
);
427-
ih.triggerAfterEdit();
428-
return true;
429-
} catch (err) {
430-
console.error('[insert:yangsik-parts] paste failed', err);
431-
return false;
432-
}
433-
};
434-
new YangsikPartsDialog(fragments, inserter).show();
435-
} catch (err) {
436-
const msg = err instanceof Error ? err.message : String(err);
437-
console.error('[insert:yangsik-parts]', msg);
438-
window.alert(`양식 부품 목록을 불러오지 못했습니다:\n${msg}`);
439-
}
440-
},
441-
},
442394
];
443395

444396
/** 선택 개체 ref 타입 — cursor.selectedPictureRef 와 정합 (headerFooter optional, [Task #831]) */

rhwp-studio/src/core/wasm-bridge.ts

Lines changed: 0 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -355,36 +355,6 @@ export class WasmBridge {
355355
return this.doc.insertText(sec, para, charOffset, text);
356356
}
357357

358-
/**
359-
* HWPX fragment 를 Document IR 에 byte-preserving paste 한다.
360-
* rhwp `pasteHwpxFragmentInDocument` (wasm bridge) 호출 — section 의 raw XML 보존본 위에서
361-
* 직접 동작하므로 zip/unzip 라운드트립 없이 즉시 반영.
362-
*
363-
* 반환 JSON 스키마:
364-
* `{"inserted_para_count":N,"id_remap_char_pr":{...},"id_remap_para_pr":{...},
365-
* "id_remap_style":{...},"id_remap_border_fill":{...}}`
366-
*/
367-
pasteHwpxFragmentInDocument(
368-
sec: number,
369-
afterParaIdx: number,
370-
fragmentXml: string,
371-
sourceCharPrs: string,
372-
sourceParaPrs: string,
373-
sourceStyles: string,
374-
sourceBorderFills: string,
375-
): string {
376-
if (!this.doc) throw new Error('문서가 로드되지 않았습니다');
377-
return this.doc.pasteHwpxFragmentInDocument(
378-
sec,
379-
afterParaIdx,
380-
fragmentXml,
381-
sourceCharPrs,
382-
sourceParaPrs,
383-
sourceStyles,
384-
sourceBorderFills,
385-
);
386-
}
387-
388358
deleteText(sec: number, para: number, charOffset: number, count: number): string {
389359
if (!this.doc) throw new Error('문서가 로드되지 않았습니다');
390360
return this.doc.deleteText(sec, para, charOffset, count);

0 commit comments

Comments
 (0)