콘텐츠로 이동

메시지 · 콜백

부모 페이지와 편집기는 양방향 메시지로 통신합니다.

  • 부모 → 편집기: 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 새 토큰을 편집기에 전달
이름 타입 설명
type string undo / redo / save
force_save boolean 강제 저장 여부
show_progress boolean 진행 표시 여부
이름 타입 설명
src_type string file-input: 파일 불러오기 창으로 로컬 파일 추가
method string add: 마지막 아이템으로 추가
item_type string cell(사진틀) / sticker(스티커)
이름 타입 설명
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

undo/redo/save 버튼의 enable·disable 처리에 사용합니다.

이름 타입 설명
can_undo boolean Undo 가능 여부
can_redo boolean Redo 가능 여부
doc_dirty boolean Save 가능 여부
이름 타입 설명
load-prodinfo-failed ps_code로 prodinfo를 얻지 못한 경우
load-template-failed template_uri로 템플릿을 얻지 못한 경우

save-doc-reportinfo.statusend일 때 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만 유효. 달력 상품일 때
이름 타입 설명
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에 따라 활성/비활성화합니다.