메시지 · 콜백
부모 페이지와 편집기는 양방향 메시지로 통신합니다.
- 부모 → 편집기:
editor.post_to_editor(action, info) - 편집기 → 부모:
create_project/open_project에 등록한 콜백으로 수신
패시브 모드
섹션 제목: “패시브 모드”패시브 모드는 편집기를 작업영역(canvas)만 보이게 띄우고, 외부와 메시지로 연동하는 모드입니다. 편집기 UI를 최소화해 부모 페이지에 embed된 형태로 다양하게 활용할 수 있습니다.
create_project/open_project에서run_mode: 'passive'로 설정합니다.- 편집기로부터의 메시지는 등록한 콜백으로 계속 들어오므로 적절히 대응해야 합니다.
- multi line은 지원하지 않습니다.
post_to_editor — 편집기로 메시지 보내기
섹션 제목: “post_to_editor — 편집기로 메시지 보내기”editor.post_to_editor(action, info);| action | 타입 | 설명 |
|---|---|---|
command | object | 간단한 명령 전달(undo / redo / save 등) |
var-changed | object | 부모쪽 variable 변화를 편집기에 알림 |
add-image | object | 이미지 삽입 명령 |
add-text | object | 텍스트 삽입 명령 |
request-feature | object | 편집기 부가 기능 요청(보통 ready-to-listen 직후). 거부될 수 있음 |
send-user-token | object | 새 토큰을 편집기에 전달 |
info — command
섹션 제목: “info — command”| 이름 | 타입 | 설명 |
|---|---|---|
type | string | undo / redo / save |
force_save | boolean | 강제 저장 여부 |
show_progress | boolean | 진행 표시 여부 |
info — add-image
섹션 제목: “info — add-image”| 이름 | 타입 | 설명 |
|---|---|---|
src_type | string | file-input: 파일 불러오기 창으로 로컬 파일 추가 |
method | string | add: 마지막 아이템으로 추가 |
item_type | string | cell(사진틀) / sticker(스티커) |
info — add-text / var-changed
섹션 제목: “info — add-text / var-changed”| 이름 | 타입 | 설명 |
|---|---|---|
variable | varInfo | variable 정보 |
data.text | string | 텍스트 내용 |
data.font_size | number | 폰트 사이즈(pt) |
data.align | string | 'left' / 'center' / 'right' |
varInfo 구조:
| 이름 | 타입 | 설명 |
|---|---|---|
type | string | 외부연동 action 타입(input / select) |
id | string | 외부연동에 사용할 아이템 id |
title | string | 외부연동 아이템 title |
group_id | string | select를 위한 group id |
extra | any | 외부연동 부가 데이터 |
editor.post_to_editor('command', { type: 'undo' });
editor.post_to_editor('add-image', { src_type: 'file-input', method: 'add', item_type: 'sticker',});
editor.post_to_editor('add-text', { name: '_text_001_', feature: 'var:text', data: { text: '내용을 입력하세요', font_size: 10, align: 'left' },});
editor.post_to_editor('var-changed', { name: '_text_001_', feature: 'var:text', data: { text: '바뀐 내용' }, item_id: 234, page_id: 5, page_index: 0,});콜백 이벤트 — 편집기에서 받는 메시지
섹션 제목: “콜백 이벤트 — 편집기에서 받는 메시지”콜백 data는 { type: 'from-edicus', action, info } 형태입니다.
| action | 타입 | 설명 |
|---|---|---|
ready-to-listen | — | 편집기가 메시지를 받을 준비가 됨 |
load-project-report | — | 프로젝트 최초 로드 상태 보고 |
change-project-report | — | 프로젝트 변경 상태 보고 |
change-template-report | — | 템플릿 변경 상태 보고 |
project-id-created | — | 새 project-id 생성됨 |
save-doc-report | — | doc 저장 시작/완료 |
doc-changed | — | doc 로드되거나 변경됨 |
page-changed | — | page 변경됨 |
var-added / var-deleted / var-changed | — | 외부 연동 아이템 추가/삭제/변경 |
state-history | — | undo/redo/save 가능 상태 보고 |
error-report | — | 중요 오류 전달 |
close | — | 편집기를 닫아줄 것을 요청 |
info@load-project-report · change-project-report
섹션 제목: “info@load-project-report · change-project-report”| 이름 | 타입 | 설명 |
|---|---|---|
status | string | start / end / denied / error |
error | any | status가 error일 때 존재 |
project_id | string | 프로젝트 id |
info@state-history
섹션 제목: “info@state-history”undo/redo/save 버튼의 enable·disable 처리에 사용합니다.
| 이름 | 타입 | 설명 |
|---|---|---|
can_undo | boolean | Undo 가능 여부 |
can_redo | boolean | Redo 가능 여부 |
doc_dirty | boolean | Save 가능 여부 |
info@error-report
섹션 제목: “info@error-report”| 이름 | 타입 | 설명 |
|---|---|---|
load-prodinfo-failed | — | ps_code로 prodinfo를 얻지 못한 경우 |
load-template-failed | — | template_uri로 템플릿을 얻지 못한 경우 |
save-doc-report와 docInfo
섹션 제목: “save-doc-report와 docInfo”save-doc-report의 info.status가 end일 때 docInfo에 문서 상세 정보가 담깁니다. 일반 상품과 사진인화 상품의 구조가 다릅니다.
docInfo — 일반 상품
섹션 제목: “docInfo — 일반 상품”| 이름 | 타입 | 설명 |
|---|---|---|
projectID | string | project id |
docRevision | number | document version |
totalPageCount | number | 전체 page 수 |
contentPageCount | number | cover 제외 content page 수 |
totalCellCount | number | 전체 사진틀 수 |
emptyCellCount | number | 빈 사진틀 수 |
lowResCellCount | number | 저해상도 사진을 포함한 사진틀 수 |
vdpList | varInfo[] | vdp 리스트 |
tnUrlList | string[] | preview thumbnail url 리스트 |
usedFontsList | Array | 사용된 폰트 리스트 |
unresolvedFontsList | Array | 미등록 폰트 사용 시에만 존재(없으면 키 자체가 없음) |
calendarInfo | object | year/month만 유효. 달력 상품일 때 |
docInfo — 사진인화
섹션 제목: “docInfo — 사진인화”| 이름 | 타입 | 설명 |
|---|---|---|
projectID | string | project id |
totalPrintCount | number | 사진 수 |
totalOrderCount | number | 각 사진 개별 수량의 합 |
paperType | string | "matte" 또는 "gloss" |
lowResPrintCount | number | 저해상도 이미지 수 |
tnUrlList | string[] | preview thumbnail url 리스트 |
prints | Array | 사진별 정보. 예: [{ orderCount: 1 }, ...] |
외부 연동 텍스트 처리
섹션 제목: “외부 연동 텍스트 처리”var-added / var-deleted / var-changed 콜백으로 부모 페이지의 텍스트 필드를 편집기와 동기화합니다.
var-added: 받은info를 그대로 보관하고 text-field를 생성합니다.var-deleted: 해당item_id와 연결된 text-field를 삭제합니다.var-changed: 연결된 text-field를 찾아info.data.text로 값을 갱신하고,info.state.enable에 따라 활성/비활성화합니다.