@g1cloud/entity-modeler-next 5.0.0-alpha.9 → 5.0.0-beta.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/agent/symbolicOp.d.ts +1 -0
- package/dist/command/commands.d.ts +11 -3
- package/dist/core/associationNav.d.ts +10 -0
- package/dist/core/attributeOrder.d.ts +17 -0
- package/dist/core/ddl.d.ts +10 -0
- package/dist/core/inheritedColumns.d.ts +57 -0
- package/dist/core/jsonModel.d.ts +23 -0
- package/dist/core/mergeDiagram.d.ts +45 -0
- package/dist/core/mermaid.d.ts +6 -0
- package/dist/core/parseMermaid.d.ts +9 -0
- package/dist/core/parseSqlDdl.d.ts +11 -0
- package/dist/core/propagation.d.ts +22 -0
- package/dist/core/quickFix.d.ts +12 -0
- package/dist/core/scaffoldJava.d.ts +62 -0
- package/dist/core/sharedColumn.d.ts +16 -1
- package/dist/core/text.d.ts +4 -1
- package/dist/core/types.d.ts +50 -5
- package/dist/core/validation.d.ts +37 -6
- package/dist/editor/controller.d.ts +88 -10
- package/dist/entity-modeler-next.css +1 -1
- package/dist/entity-modeler.js +14021 -10319
- package/dist/entity-modeler.umd.cjs +45 -24
- package/dist/i18n/en.d.ts +3 -0
- package/dist/i18n/index.d.ts +17 -0
- package/dist/i18n/ja.d.ts +3 -0
- package/dist/i18n/ko.d.ts +364 -0
- package/dist/index.d.ts +11 -1
- package/dist/view/CommandPalette.vue.d.ts +10 -0
- package/dist/view/DiagramCanvas.vue.d.ts +2 -0
- package/dist/view/EditModeToggle.vue.d.ts +3 -0
- package/dist/view/EditorToolbar.vue.d.ts +2 -0
- package/dist/view/EmContextMenu.vue.d.ts +7 -2
- package/dist/view/GroupCodeCombobox.vue.d.ts +2 -0
- package/dist/view/OperationSourceEditor.vue.d.ts +2 -0
- package/dist/view/{EntityTextPreview.vue.d.ts → ShortcutHelpModal.vue.d.ts} +2 -1
- package/dist/view/TextExportModal.vue.d.ts +15 -0
- package/dist/view/TextImportModal.vue.d.ts +8 -0
- package/dist/view/explorerFilter.d.ts +20 -0
- package/dist/view/exportImage.d.ts +14 -0
- package/dist/view/opConflictNotice.d.ts +12 -0
- package/dist/view/validationDisplay.d.ts +14 -2
- package/package.json +1 -1
- package/dist/view/exportSvg.d.ts +0 -7
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { en } from './en';
|
|
2
|
+
import { ja } from './ja';
|
|
3
|
+
import { ko, MessageKey } from './ko';
|
|
4
|
+
export type { MessageKey };
|
|
5
|
+
/** UI 크롬 언어. 콘텐츠 `LangCode`의 부분집합(zh 미포함). */
|
|
6
|
+
export type UiLocale = 'ko' | 'en' | 'ja';
|
|
7
|
+
/** UI에서 선택 가능한 로케일 목록(순서 = 표시 순서). */
|
|
8
|
+
export declare const UI_LOCALES: readonly UiLocale[];
|
|
9
|
+
export type MessageParams = Record<string, string | number>;
|
|
10
|
+
/** `t()` 시그니처 — controller가 노출하고 뷰가 소비. */
|
|
11
|
+
export type Translator = (key: MessageKey, params?: MessageParams) => string;
|
|
12
|
+
/**
|
|
13
|
+
* 키 → 로케일 문자열. `{name}` 형태 파라미터를 치환한다.
|
|
14
|
+
* 폴백: 로케일에 키 없음 → ko → 키 원문(누락 시각화, 렌더 깨짐 방지).
|
|
15
|
+
*/
|
|
16
|
+
export declare function translate(locale: UiLocale, key: MessageKey, params?: MessageParams): string;
|
|
17
|
+
export { ko, en, ja };
|
|
@@ -0,0 +1,364 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* UI 크롬(툴 사용자용) 메시지 카탈로그 — 한국어(단일 진실 소스).
|
|
3
|
+
*
|
|
4
|
+
* 콘텐츠 다국어(MultiLangText: 엔티티/속성 논리명·설명)와는 **별개 축**이다.
|
|
5
|
+
* 이건 툴 자체의 버튼/라벨/툴팁/검증 메시지를 쓰는 사람의 언어로 보여주기 위한 것.
|
|
6
|
+
*
|
|
7
|
+
* `ko`가 키 집합의 SoT — `en`/`ja`는 `Record<MessageKey>`로 선언되어 키 누락이 컴파일 에러가 된다.
|
|
8
|
+
* 새 문자열은 여기에 키를 먼저 추가하고 en/ja를 채운다.
|
|
9
|
+
*
|
|
10
|
+
* 키 규약: `em.area.item`(camelCase). `em.` 프리픽스로 lib 소유 키를 네임스페이싱(CSS `em-`·`EmIcon`
|
|
11
|
+
* 등 코드베이스 전면 컨벤션과 일관 + 번역 관리 시 호스트 키와 그룹 구분). 파라미터는 `{name}` 형태 삽입.
|
|
12
|
+
*/
|
|
13
|
+
export declare const ko: {
|
|
14
|
+
readonly 'em.mode.view': "조회";
|
|
15
|
+
readonly 'em.mode.edit': "편집";
|
|
16
|
+
readonly 'em.mode.frozen': "편집 잠김 (충돌)";
|
|
17
|
+
readonly 'em.mode.frozenTitle': "동시편집 충돌로 편집이 잠겼습니다. 최신 내용을 다시 불러오는 중입니다.";
|
|
18
|
+
readonly 'em.mode.readonlyTitle': "이 다이어그램은 조회 전용입니다";
|
|
19
|
+
readonly 'em.toolbar.undo': "실행 취소";
|
|
20
|
+
readonly 'em.toolbar.redo': "다시 실행";
|
|
21
|
+
readonly 'em.toolbar.displayLabel': "표시";
|
|
22
|
+
readonly 'em.toolbar.routingToggle': "연결선 모드 전환";
|
|
23
|
+
readonly 'em.toolbar.routingOrthogonal': "직각";
|
|
24
|
+
readonly 'em.toolbar.routingStraight': "직선";
|
|
25
|
+
readonly 'em.toolbar.grid': "그리드";
|
|
26
|
+
readonly 'em.toolbar.gridOn': "그리드 켜기";
|
|
27
|
+
readonly 'em.toolbar.gridOff': "그리드 끄기";
|
|
28
|
+
readonly 'em.toolbar.minimap': "미니맵";
|
|
29
|
+
readonly 'em.toolbar.minimapOn': "미니맵 켜기";
|
|
30
|
+
readonly 'em.toolbar.minimapOff': "미니맵 끄기";
|
|
31
|
+
readonly 'em.toolbar.exportText': "내보내기 (텍스트 · Mermaid)";
|
|
32
|
+
readonly 'em.toolbar.exportSvg': "SVG 내보내기";
|
|
33
|
+
readonly 'em.toolbar.exportPng': "PNG 내보내기";
|
|
34
|
+
readonly 'em.toolbar.import': "가져오기 (텍스트 붙여넣기)";
|
|
35
|
+
readonly 'em.toolbar.history': "이력";
|
|
36
|
+
readonly 'em.toolbar.historyOpen': "변경 이력 열기";
|
|
37
|
+
readonly 'em.toolbar.historyClose': "변경 이력 닫기";
|
|
38
|
+
readonly 'em.toolbar.shortcuts': "키보드 단축키 (?)";
|
|
39
|
+
readonly 'em.displayMode.logical': "논리";
|
|
40
|
+
readonly 'em.displayMode.physical': "물리";
|
|
41
|
+
readonly 'em.displayMode.logicalPhysical': "논리·물리";
|
|
42
|
+
readonly 'em.displayMode.class': "클래스";
|
|
43
|
+
readonly 'em.panel.resizeWidth': "너비 조절";
|
|
44
|
+
readonly 'em.panel.collapse': "접기";
|
|
45
|
+
readonly 'em.panel.expand': "펼치기";
|
|
46
|
+
readonly 'em.panel.collapseAll': "모두 접기";
|
|
47
|
+
readonly 'em.panel.expandAll': "모두 펼치기";
|
|
48
|
+
readonly 'em.panel.lockedBanner': "편집 잠김 — 이동·수정·삭제 차단";
|
|
49
|
+
readonly 'em.panel.openNamed': "{name} 열기";
|
|
50
|
+
readonly 'em.validation.title': "검증";
|
|
51
|
+
readonly 'em.validation.noIssues': "검증 이슈가 없습니다.";
|
|
52
|
+
readonly 'em.validation.noVisibleIssues': "표시할 이슈가 없습니다 (필터 적용 중).";
|
|
53
|
+
readonly 'em.validation.checkOrphanEntities': "관계 없는 엔티티 검사";
|
|
54
|
+
readonly 'em.validation.nameless': "(이름 없음)";
|
|
55
|
+
readonly 'em.validation.severityError': "오류";
|
|
56
|
+
readonly 'em.validation.severityWarning': "경고";
|
|
57
|
+
readonly 'em.validation.severityInfo': "정보";
|
|
58
|
+
readonly 'em.validation.hideSeverity': "{label} 숨기기";
|
|
59
|
+
readonly 'em.validation.showSeverity': "{label} 표시";
|
|
60
|
+
readonly 'em.validation.expandPanel': "검증 패널 펼치기";
|
|
61
|
+
readonly 'em.validation.quickFix': "수정";
|
|
62
|
+
readonly 'em.validation.quickFixTip': "자동 수정 적용 (되돌리기 가능)";
|
|
63
|
+
readonly 'em.common.close': "닫기";
|
|
64
|
+
readonly 'em.common.save': "저장";
|
|
65
|
+
readonly 'em.export.title': "내보내기";
|
|
66
|
+
readonly 'em.export.formatText': "논리 모델 텍스트";
|
|
67
|
+
readonly 'em.export.formatMermaidEr': "Mermaid (ER)";
|
|
68
|
+
readonly 'em.export.formatMermaidClass': "Mermaid (클래스)";
|
|
69
|
+
readonly 'em.export.formatDdl': "SQL DDL (PostgreSQL)";
|
|
70
|
+
readonly 'em.export.formatJson': "JSON (백업)";
|
|
71
|
+
readonly 'em.export.copy': "복사";
|
|
72
|
+
readonly 'em.export.download': "다운로드";
|
|
73
|
+
readonly 'em.export.copied': "클립보드에 복사되었습니다.";
|
|
74
|
+
readonly 'em.export.copyFailed': "복사에 실패했습니다.";
|
|
75
|
+
readonly 'em.import.title': "가져오기";
|
|
76
|
+
readonly 'em.import.placeholder': "SQL DDL · Mermaid ER · JSON 백업을 붙여넣으세요.";
|
|
77
|
+
readonly 'em.import.formatAuto': "자동 감지";
|
|
78
|
+
readonly 'em.import.formatMermaid': "Mermaid ER";
|
|
79
|
+
readonly 'em.import.formatDdl': "SQL DDL";
|
|
80
|
+
readonly 'em.import.formatJson': "JSON";
|
|
81
|
+
readonly 'em.import.detected': "감지: {format}";
|
|
82
|
+
readonly 'em.import.summary': "엔티티 {entities} · 관계 {relations}";
|
|
83
|
+
readonly 'em.import.warnings': "경고 {n}건 (부분 파싱)";
|
|
84
|
+
readonly 'em.import.error': "파싱 실패: {message}";
|
|
85
|
+
readonly 'em.import.emptyParse': "인식된 엔티티가 없습니다.";
|
|
86
|
+
readonly 'em.import.unknownFormat': "포맷을 감지하지 못했습니다 — 위에서 직접 선택하세요.";
|
|
87
|
+
readonly 'em.import.confirm': "가져오기";
|
|
88
|
+
readonly 'em.shortcuts.title': "키보드 단축키";
|
|
89
|
+
readonly 'em.shortcuts.groupEdit': "편집";
|
|
90
|
+
readonly 'em.shortcuts.groupMove': "이동 · 정렬";
|
|
91
|
+
readonly 'em.shortcuts.groupOther': "기타";
|
|
92
|
+
readonly 'em.shortcuts.keyArrows': "방향키";
|
|
93
|
+
readonly 'em.shortcuts.keyRightClick': "우클릭";
|
|
94
|
+
readonly 'em.shortcuts.descUndo': "실행 취소";
|
|
95
|
+
readonly 'em.shortcuts.descRedo': "다시 실행";
|
|
96
|
+
readonly 'em.shortcuts.descCopy': "선택 복사";
|
|
97
|
+
readonly 'em.shortcuts.descPaste': "붙여넣기";
|
|
98
|
+
readonly 'em.shortcuts.descDelete': "선택 항목 삭제 (Backspace 동일)";
|
|
99
|
+
readonly 'em.shortcuts.descMove1': "선택 노드 1px 이동";
|
|
100
|
+
readonly 'em.shortcuts.descMove10': "선택 노드 10px 이동";
|
|
101
|
+
readonly 'em.shortcuts.descAttrFocus': "속성 선택 시 포커스 이동";
|
|
102
|
+
readonly 'em.shortcuts.descAttrReorder': "속성 순서 위/아래로";
|
|
103
|
+
readonly 'em.shortcuts.descContextMenu': "컨텍스트 메뉴 (엔티티·노트 추가 등)";
|
|
104
|
+
readonly 'em.shortcuts.descInlineConfirm': "인라인 편집 확정";
|
|
105
|
+
readonly 'em.shortcuts.descCloseEdit': "편집·메뉴 닫기";
|
|
106
|
+
readonly 'em.shortcuts.descOpenHelp': "이 도움말 열기";
|
|
107
|
+
readonly 'em.shortcuts.descCommandPalette': "명령 팔레트 (이동·명령 실행)";
|
|
108
|
+
readonly 'em.opSource.title': "본문 — {name}()";
|
|
109
|
+
readonly 'em.opSource.placeholder': "// Java 구현 코드";
|
|
110
|
+
readonly 'em.entity.name': "이름";
|
|
111
|
+
readonly 'em.entity.stereotype': "스테레오타입";
|
|
112
|
+
readonly 'em.entity.package': "패키지";
|
|
113
|
+
readonly 'em.panel.unlock': "잠금 해제";
|
|
114
|
+
readonly 'em.entity.fallback': "엔티티";
|
|
115
|
+
readonly 'em.group.fallback': "그룹";
|
|
116
|
+
readonly 'em.common.description': "설명";
|
|
117
|
+
readonly 'em.common.memo': "메모";
|
|
118
|
+
readonly 'em.common.color': "색상";
|
|
119
|
+
readonly 'em.common.add': "추가";
|
|
120
|
+
readonly 'em.common.inherit': "기본(따름)";
|
|
121
|
+
readonly 'em.common.noneParen': "(없음)";
|
|
122
|
+
readonly 'em.swatch.none': "없음";
|
|
123
|
+
readonly 'em.inspector.ctxEntityAttrs': "엔티티 · {name} › 속성 · {n}개";
|
|
124
|
+
readonly 'em.inspector.ctxEntityDivider': "엔티티 · {name} › 구분선";
|
|
125
|
+
readonly 'em.inspector.ctxEntityAttr': "엔티티 · {name} › 속성 · {attr}";
|
|
126
|
+
readonly 'em.inspector.ctxEntity': "엔티티 · {name}";
|
|
127
|
+
readonly 'em.inspector.ctxAssoc': "관계 · {a} — {b}";
|
|
128
|
+
readonly 'em.inspector.ctxGroup': "그룹 · {name}";
|
|
129
|
+
readonly 'em.inspector.ctxNote': "노트";
|
|
130
|
+
readonly 'em.inspector.ctxNone': "선택된 항목 없음";
|
|
131
|
+
readonly 'em.assoc.identifying': "identifying (식별 관계)";
|
|
132
|
+
readonly 'em.assoc.selfNoIdentifying': "셀프 연관은 식별 관계로 둘 수 없습니다 (비식별 FK 강제).";
|
|
133
|
+
readonly 'em.assoc.embedNoIdentifying': "임베드(@Embedded/@ElementCollection)는 식별 관계로 둘 수 없습니다 (임베더블은 독립 식별자가 없음).";
|
|
134
|
+
readonly 'em.assoc.multiplicity': "다중성";
|
|
135
|
+
readonly 'em.assoc.navFieldName': "연관 필드명(nav)";
|
|
136
|
+
readonly 'em.assoc.cascadeAllNote': "ALL이 개별 cascade를 모두 포함합니다 (CHK-JPA-5).";
|
|
137
|
+
readonly 'em.assoc.orphanRemovalNote': "반대편이 컬렉션(@ManyToOne/@ManyToMany)이라 orphanRemoval이 무효입니다 (CHK-JPA-14).";
|
|
138
|
+
readonly 'em.assoc.orderByPlaceholder': "예: name ASC";
|
|
139
|
+
readonly 'em.assoc.jpaDetails': "JPA 상세";
|
|
140
|
+
readonly 'em.embed.legend': "임베드";
|
|
141
|
+
readonly 'em.embed.cardinality': "카디널리티";
|
|
142
|
+
readonly 'em.embed.card1': "1 (필수 @Embedded)";
|
|
143
|
+
readonly 'em.embed.card01': "0..1 (선택 @Embedded)";
|
|
144
|
+
readonly 'em.embed.card0N': "0..* (컬렉션 @ElementCollection)";
|
|
145
|
+
readonly 'em.embed.collectionTablePlaceholder': "미지정 시 코드젠 폴백";
|
|
146
|
+
readonly 'em.embed.orderColumnPlaceholder': "미지정 시 순서 비보존";
|
|
147
|
+
readonly 'em.embed.ownerFixedNote': "임베더블은 소유자에 평탄화되므로 소유자 쪽 end(다중성·navigable·composition)는 구조적으로 고정이라 표시하지 않습니다.";
|
|
148
|
+
readonly 'em.group.nameLegend': "그룹명";
|
|
149
|
+
readonly 'em.group.excludeDDL': "DDL 생성 제외";
|
|
150
|
+
readonly 'em.group.members': "멤버 엔티티 {n}개";
|
|
151
|
+
readonly 'em.entity.classLegend': "클래스";
|
|
152
|
+
readonly 'em.entity.superClass': "부모 클래스";
|
|
153
|
+
readonly 'em.entity.superClassPlaceholder': "예: BaseEntity";
|
|
154
|
+
readonly 'em.entity.interfaces': "구현 인터페이스";
|
|
155
|
+
readonly 'em.entity.interfacesPlaceholder': "콤마로 구분 (예: Serializable, Cloneable)";
|
|
156
|
+
readonly 'em.entity.abstractClass': "추상 클래스";
|
|
157
|
+
readonly 'em.entity.tablePhysical': "테이블(물리)";
|
|
158
|
+
readonly 'em.entity.schema': "스키마";
|
|
159
|
+
readonly 'em.entity.schemaPlaceholder': "예: sales, master";
|
|
160
|
+
readonly 'em.entity.tableLogicalLegend': "테이블 논리명";
|
|
161
|
+
readonly 'em.entity.discColumn': "Discriminator 컬럼명";
|
|
162
|
+
readonly 'em.entity.discColumnPlaceholder': "예: DTYPE";
|
|
163
|
+
readonly 'em.entity.discType': "Discriminator 타입";
|
|
164
|
+
readonly 'em.entity.discLength': "Discriminator 길이";
|
|
165
|
+
readonly 'em.entity.hasPersonalInfo': "개인정보 포함 (hasPersonalInfo)";
|
|
166
|
+
readonly 'em.entity.headerColor': "헤더 색상";
|
|
167
|
+
readonly 'em.attr.section': "속성 ({n})";
|
|
168
|
+
readonly 'em.attr.addEmbeddable': "임베더블 추가";
|
|
169
|
+
readonly 'em.attr.nameless': "(이름 없음)";
|
|
170
|
+
readonly 'em.attr.selectHint': "위 목록에서 속성을 선택하면 편집 폼이 표시됩니다.";
|
|
171
|
+
readonly 'em.attr.inverseNavHint': "역방향 연관관계 필드 — 물리 컬럼이 없습니다(대상 엔티티 참조).";
|
|
172
|
+
readonly 'em.attr.namePlaceholder': "이름";
|
|
173
|
+
readonly 'em.attr.typePlaceholder': "타입";
|
|
174
|
+
readonly 'em.attr.customTypePlaceholder': "커스텀 타입명";
|
|
175
|
+
readonly 'em.attr.logicalPlaceholder': "논리명";
|
|
176
|
+
readonly 'em.attr.columnPlaceholder': "컬럼";
|
|
177
|
+
readonly 'em.attr.defaultValue': "기본값";
|
|
178
|
+
readonly 'em.attr.codeGroup': "코드그룹";
|
|
179
|
+
readonly 'em.attr.currencyColumn': "통화 컬럼";
|
|
180
|
+
readonly 'em.attr.pii': "개인정보";
|
|
181
|
+
readonly 'em.attr.colFallback': "컬럼 {n}";
|
|
182
|
+
readonly 'em.attr.sharedOwn': "전용 컬럼(OWN)";
|
|
183
|
+
readonly 'em.attr.sharedRef': "↗ {owner}{physical} ({mode})";
|
|
184
|
+
readonly 'em.attr.currencyMode': "통화";
|
|
185
|
+
readonly 'em.attr.sharedMode': "공유";
|
|
186
|
+
readonly 'em.attr.batchHint': "선택 {n}개 일괄";
|
|
187
|
+
readonly 'em.attr.fkDeleteHint': "외래키는 연관관계에서 파생됩니다 — 연관관계선을 삭제하세요";
|
|
188
|
+
readonly 'em.op.section': "오퍼레이션 ({n})";
|
|
189
|
+
readonly 'em.op.namePlaceholder': "오퍼레이션명";
|
|
190
|
+
readonly 'em.op.editBodyDirty': "본문 편집 ●";
|
|
191
|
+
readonly 'em.op.editBody': "본문 편집";
|
|
192
|
+
readonly 'em.index.section': "인덱스 ({n})";
|
|
193
|
+
readonly 'em.index.inherited': "{field} (상속)";
|
|
194
|
+
readonly 'em.index.namePlaceholder': "인덱스명";
|
|
195
|
+
readonly 'em.index.addColumn': "컬럼";
|
|
196
|
+
readonly 'em.index.condition': "조건 (partial index)";
|
|
197
|
+
readonly 'em.index.conditionPlaceholder': "예: WHERE status = 'A'";
|
|
198
|
+
readonly 'em.groupCode.searchPlaceholder': "코드그룹 검색/선택";
|
|
199
|
+
readonly 'em.groupCode.noMatch': "일치하는 코드그룹 없음";
|
|
200
|
+
readonly 'em.detail.tabBasics': "기본";
|
|
201
|
+
readonly 'em.detail.tabColumns': "속성";
|
|
202
|
+
readonly 'em.detail.tabIndexes': "인덱스";
|
|
203
|
+
readonly 'em.detail.tabOperations': "오퍼레이션";
|
|
204
|
+
readonly 'em.detail.title': "엔티티 — {name}";
|
|
205
|
+
readonly 'em.attr.addDivider': "구분선";
|
|
206
|
+
readonly 'em.attr.columnPhysical': "컬럼(물리)";
|
|
207
|
+
readonly 'em.attr.constraints': "제약";
|
|
208
|
+
readonly 'em.attr.dividerLabelPlaceholder': "구분선 라벨(선택)";
|
|
209
|
+
readonly 'em.attr.dividerNote': "── 시각 구획 ──";
|
|
210
|
+
readonly 'em.attr.detailCollapse': "상세 접기";
|
|
211
|
+
readonly 'em.attr.detailExpand': "상세 펼치기";
|
|
212
|
+
readonly 'em.attr.semanticLegend': "의미";
|
|
213
|
+
readonly 'em.attr.embedChildCols': "임베더블 — 하위 컬럼 {n}개";
|
|
214
|
+
readonly 'em.attr.overrideCollapse': "오버라이드 접기";
|
|
215
|
+
readonly 'em.attr.overrideExpand': "오버라이드 펼치기";
|
|
216
|
+
readonly 'em.attr.overrideLegend': "컬럼 오버라이드";
|
|
217
|
+
readonly 'em.attr.empty': "속성 없음 — '추가'로 생성";
|
|
218
|
+
readonly 'em.op.body': "본문";
|
|
219
|
+
readonly 'em.op.bodyDirty': "본문 ●";
|
|
220
|
+
readonly 'em.op.descPlaceholderKo': "설명(ko)";
|
|
221
|
+
readonly 'em.op.empty': "오퍼레이션 없음 — '추가'로 생성";
|
|
222
|
+
readonly 'em.index.delete': "인덱스 삭제";
|
|
223
|
+
readonly 'em.index.empty': "인덱스 없음 — '추가'로 생성";
|
|
224
|
+
readonly 'em.index.conditionPlaceholderWide': "예: WHERE status = 'A' AND deleted = false";
|
|
225
|
+
readonly 'em.index.inheritedColTitle': "슈퍼클래스 상속 컬럼";
|
|
226
|
+
readonly 'em.index.inheritedBadge': "상속";
|
|
227
|
+
readonly 'em.index.availColumns': "가용 컬럼 ({n})";
|
|
228
|
+
readonly 'em.index.indexColumns': "인덱스 컬럼 ({n})";
|
|
229
|
+
readonly 'em.index.allColumnsUsed': "모든 컬럼 사용됨";
|
|
230
|
+
readonly 'em.index.addArrow': "추가 →";
|
|
231
|
+
readonly 'em.index.moveUp': "위로";
|
|
232
|
+
readonly 'em.index.moveDown': "아래로";
|
|
233
|
+
readonly 'em.index.removeColumn': "제거";
|
|
234
|
+
readonly 'em.index.noColumns': "컬럼 없음 — 좌측에서 추가";
|
|
235
|
+
readonly 'em.index.selectPrompt': "인덱스를 선택하거나 추가하세요.";
|
|
236
|
+
readonly 'em.palette.autoLayout': "자동 배치";
|
|
237
|
+
readonly 'em.cmd.placeholder': "엔티티로 이동하거나 명령 실행…";
|
|
238
|
+
readonly 'em.cmd.sectionGoto': "이동";
|
|
239
|
+
readonly 'em.cmd.sectionActions': "명령";
|
|
240
|
+
readonly 'em.cmd.empty': "일치하는 항목이 없습니다";
|
|
241
|
+
readonly 'em.cmd.groupTag': "그룹";
|
|
242
|
+
readonly 'em.canvas.emptyTitle': "빈 다이어그램입니다";
|
|
243
|
+
readonly 'em.canvas.emptyHint': "캔버스를 <strong>우클릭</strong>하거나 좌하단 <strong>+</strong> 버튼으로 첫 엔티티를 추가하세요.";
|
|
244
|
+
readonly 'em.canvas.emptyShortcutHint': "단축키 도움말은 <kbd>?</kbd> 키";
|
|
245
|
+
readonly 'em.canvas.emptyReadonly': "표시할 엔티티가 없습니다";
|
|
246
|
+
readonly 'em.ctx.addEntity': "엔티티 추가";
|
|
247
|
+
readonly 'em.ctx.addNote': "노트 추가";
|
|
248
|
+
readonly 'em.ctx.addGroup': "그룹 추가";
|
|
249
|
+
readonly 'em.ctx.paste': "붙여넣기";
|
|
250
|
+
readonly 'em.ctx.copy': "복사";
|
|
251
|
+
readonly 'em.ctx.copyN': "복사 ({n})";
|
|
252
|
+
readonly 'em.ctx.editDetail': "상세 편집…";
|
|
253
|
+
readonly 'em.ctx.viewDetail': "상세 보기…";
|
|
254
|
+
readonly 'em.ctx.lock': "잠금";
|
|
255
|
+
readonly 'em.ctx.ungroup': "그룹 해제";
|
|
256
|
+
readonly 'em.ctx.deleteNote': "노트 삭제";
|
|
257
|
+
readonly 'em.ctx.addAttr': "속성 추가";
|
|
258
|
+
readonly 'em.ctx.colorN': "색상 ({n})";
|
|
259
|
+
readonly 'em.ctx.pasteAttr': "속성 붙여넣기";
|
|
260
|
+
readonly 'em.ctx.pasteAttrN': "속성 붙여넣기 ({n})";
|
|
261
|
+
readonly 'em.ctx.deleteAttr': "속성 삭제";
|
|
262
|
+
readonly 'em.ctx.deleteAttrN': "속성 삭제 ({n})";
|
|
263
|
+
readonly 'em.ctx.addOperation': "오퍼레이션 추가";
|
|
264
|
+
readonly 'em.ctx.deleteOperation': "오퍼레이션 삭제";
|
|
265
|
+
readonly 'em.ctx.addMethod': "메서드 추가";
|
|
266
|
+
readonly 'em.ctx.groupInto': "그룹으로 묶기";
|
|
267
|
+
readonly 'em.ctx.addSelfAssoc': "셀프 연관 추가";
|
|
268
|
+
readonly 'em.ctx.addEmbeddableNamed': "임베더블 추가: {label}";
|
|
269
|
+
readonly 'em.ctx.ungroupEntity': "그룹에서 빼기";
|
|
270
|
+
readonly 'em.ctx.deleteEntity': "엔티티 삭제";
|
|
271
|
+
readonly 'em.ctx.clearWaypoints': "꺾은선 풀기";
|
|
272
|
+
readonly 'em.ctx.deleteConnection': "연결 삭제";
|
|
273
|
+
readonly 'em.ctx.deleteAssociation': "관계 삭제";
|
|
274
|
+
readonly 'em.node.keyPfk': "PFK (식별 외래키)";
|
|
275
|
+
readonly 'em.node.keyPk': "PK (기본키)";
|
|
276
|
+
readonly 'em.node.keyFk': "FK (외래키)";
|
|
277
|
+
readonly 'em.node.required': "필수 (NOT NULL)";
|
|
278
|
+
readonly 'em.node.logicalMissing': "(논리명)";
|
|
279
|
+
readonly 'em.node.editLock': "편집 잠금";
|
|
280
|
+
readonly 'em.node.opsSummaryTitle': "오퍼레이션 {n}개 — 클래스 표시 모드에서 펼쳐 보입니다";
|
|
281
|
+
readonly 'em.node.opsSummary': "오퍼레이션 {n}개";
|
|
282
|
+
readonly 'em.node.addAttr': "+ 속성";
|
|
283
|
+
readonly 'em.node.addDivider': "+ 구분선";
|
|
284
|
+
readonly 'em.group.ddlExcludeBadge': "DDL 제외";
|
|
285
|
+
readonly 'em.explorer.groupFallback': "(그룹)";
|
|
286
|
+
readonly 'em.explorer.associations': "관계 ({n})";
|
|
287
|
+
readonly 'em.explorer.notes': "노트 ({n})";
|
|
288
|
+
readonly 'em.explorer.emptyNote': "(빈 노트)";
|
|
289
|
+
readonly 'em.explorer.diagram': "다이어그램";
|
|
290
|
+
readonly 'em.explorer.searchPlaceholder': "엔티티·속성 검색 ( / )";
|
|
291
|
+
readonly 'em.explorer.searchAria': "엔티티·속성 검색";
|
|
292
|
+
readonly 'em.explorer.clearSearchAria': "검색어 지우기";
|
|
293
|
+
readonly 'em.explorer.clearSearchTitle': "지우기 (Esc)";
|
|
294
|
+
readonly 'em.explorer.noMatches': "일치하는 엔티티·속성이 없습니다";
|
|
295
|
+
readonly 'em.history.title': "변경 이력";
|
|
296
|
+
readonly 'em.history.refresh': "새로고침";
|
|
297
|
+
readonly 'em.history.loading': "이력을 불러오는 중…";
|
|
298
|
+
readonly 'em.history.loadError': "이력을 불러오지 못했습니다.";
|
|
299
|
+
readonly 'em.history.emptyLoaded': "표시할 변경 이력이 없습니다.";
|
|
300
|
+
readonly 'em.history.emptyNotLoaded': "이력을 불러오세요.";
|
|
301
|
+
readonly 'em.history.filterAll': "전체";
|
|
302
|
+
readonly 'em.history.kindEdit': "편집";
|
|
303
|
+
readonly 'em.history.kindRestore': "복원";
|
|
304
|
+
readonly 'em.history.verbAdd': "추가";
|
|
305
|
+
readonly 'em.history.verbUpdate': "수정";
|
|
306
|
+
readonly 'em.history.verbRemove': "삭제";
|
|
307
|
+
readonly 'em.history.assocFallback': "연관";
|
|
308
|
+
readonly 'em.history.groupSubject': "그룹 {name}";
|
|
309
|
+
readonly 'em.history.emptyValue': "(비움)";
|
|
310
|
+
readonly 'em.history.noChange': "변경 없음";
|
|
311
|
+
readonly 'em.history.summaryAdd': "{name} 추가";
|
|
312
|
+
readonly 'em.history.summaryRemove': "{name} 삭제";
|
|
313
|
+
readonly 'em.history.summaryFields': "{name} {n}개 변경";
|
|
314
|
+
readonly 'em.history.summaryMore': "{summary} 외 {n}건";
|
|
315
|
+
readonly 'em.history.restoreFailed': "복원 실패: {reason}";
|
|
316
|
+
readonly 'em.history.unknown': "알 수 없음";
|
|
317
|
+
readonly 'em.history.confirmRestore': "이 시점으로 되돌립니다.";
|
|
318
|
+
readonly 'em.history.doRestore': "복원";
|
|
319
|
+
readonly 'em.history.cancel': "취소";
|
|
320
|
+
readonly 'em.history.restoreToHere': "이 시점으로 복원";
|
|
321
|
+
readonly 'em.check.catName': "이름";
|
|
322
|
+
readonly 'em.check.catJpa': "JPA";
|
|
323
|
+
readonly 'em.check.catType': "타입";
|
|
324
|
+
readonly 'em.check.catDsn': "설계";
|
|
325
|
+
readonly 'em.check.name1': "속성 이름이 중복됩니다: \"{name}\"";
|
|
326
|
+
readonly 'em.check.name2': "컬럼 물리명이 중복됩니다: \"{name}\"";
|
|
327
|
+
readonly 'em.check.name3': "엔티티 이름이 중복됩니다: \"{name}\"";
|
|
328
|
+
readonly 'em.check.name4Entity': "엔티티 이름이 비어 있습니다";
|
|
329
|
+
readonly 'em.check.name4Attr': "속성 이름이 비어 있습니다";
|
|
330
|
+
readonly 'em.check.name5': "물리명이 {max}자를 초과했습니다 ({len}자) — 일부 DB에서 잘릴 수 있습니다";
|
|
331
|
+
readonly 'em.check.name6Column': "컬럼 물리명이 SQL 예약어입니다: \"{name}\"";
|
|
332
|
+
readonly 'em.check.name6Table': "테이블 물리명이 SQL 예약어입니다: \"{name}\"";
|
|
333
|
+
readonly 'em.check.name6Index': "인덱스 이름이 SQL 예약어입니다: \"{name}\"";
|
|
334
|
+
readonly 'em.check.jpa1': "JPA 엔티티에 식별자(PK) 속성이 없습니다";
|
|
335
|
+
readonly 'em.check.jpa2': "임베더블 타입은 식별자 속성을 가질 수 없습니다: \"{name}\"";
|
|
336
|
+
readonly 'em.check.jpa4': "식별 관계 사이클입니다 (PK 무한 의존): {path}";
|
|
337
|
+
readonly 'em.check.jpa5': "{which}: cascade ALL이 개별 cascade와 중복됩니다 (ALL이 모두 포함)";
|
|
338
|
+
readonly 'em.check.jpa6': "{which}: orphanRemoval이 cascade {cascade}와 의미가 겹칩니다";
|
|
339
|
+
readonly 'em.check.jpa7': "{which}: 컬렉션(to-many) 연관에 EAGER 페치는 성능 위험이 있습니다";
|
|
340
|
+
readonly 'em.check.jpa8': "JPA 엔티티에 테이블 물리명이 설정되지 않았습니다";
|
|
341
|
+
readonly 'em.check.jpa9': "{which}: 단일(to-one) 연관에 컬렉션 메타(collectionType/collectionTable/orderColumn)는 무의미합니다 — @ElementCollection은 컬렉션에서만 적용됩니다";
|
|
342
|
+
readonly 'em.check.jpa10': "{which}: SET 컬렉션은 순서를 보존하지 않아 orderColumn(@OrderColumn)이 무의미합니다";
|
|
343
|
+
readonly 'em.check.jpa11': "임베드(@Embedded/@ElementCollection)는 식별 관계로 둘 수 없습니다 — 임베더블은 독립 식별자가 없습니다";
|
|
344
|
+
readonly 'em.check.jpa12': "식별자(@Id) 속성은 transient(@Transient)일 수 없습니다: \"{name}\"";
|
|
345
|
+
readonly 'em.check.jpa13AutoIncrement': "채번(auto increment)은 식별자(@Id) 속성에만 쓸 수 있습니다 — 비식별 속성 \"{name}\"에 설정되어 있습니다";
|
|
346
|
+
readonly 'em.check.jpa13Sequence': "채번(시퀀스 \"{seq}\")은 식별자(@Id) 속성에만 쓸 수 있습니다 — 비식별 속성 \"{name}\"에 설정되어 있습니다";
|
|
347
|
+
readonly 'em.check.jpa14': "{which}: orphanRemoval은 @ManyToOne/@ManyToMany(반대편이 컬렉션) 연관에는 적용할 수 없습니다 — @OneToOne·@OneToMany에서만 유효합니다";
|
|
348
|
+
readonly 'em.check.jpa15': "식별자(@Id) 속성은 자연키(@NaturalId)일 수 없습니다 — 자연키는 PK와 별개의 비즈니스 키입니다: \"{name}\"";
|
|
349
|
+
readonly 'em.check.jpa16': "자연키(@NaturalId) 속성은 transient(@Transient)일 수 없습니다: \"{name}\"";
|
|
350
|
+
readonly 'em.check.jpa17': "자연키(@NaturalId) 속성은 not null이 권장됩니다(비즈니스 키는 non-null이 원칙): \"{name}\"";
|
|
351
|
+
readonly 'em.check.type1': "타겟 DB가 지원하지 않는 컬럼 타입입니다: \"{dataType}\"";
|
|
352
|
+
readonly 'em.check.type2': "{dataType} 타입에 length가 지정되지 않았습니다";
|
|
353
|
+
readonly 'em.check.type3': "공유 대상 컬럼의 타입({targetType})이 {metaName} 정의({metaType})와 다릅니다";
|
|
354
|
+
readonly 'em.check.type4': "다중값(Multi-Value) 속성은 GroupCodeEnum + VARCHAR 조합에서만 컨버터가 자동 생성됩니다 — 현재({type} / {dataType})에서는 Set<…> 필드만 생성되어 매핑이 불완전할 수 있습니다";
|
|
355
|
+
readonly 'em.check.dsn1': "both-many(M:N) 관계를 조인 엔티티 없이 직접 연결했습니다 — 연관 엔티티 도입을 검토하세요";
|
|
356
|
+
readonly 'em.check.dsn2': "속성이 하나도 없는 엔티티입니다";
|
|
357
|
+
readonly 'em.check.dsn3': "모델링된 관계가 없습니다 (연관·상속·임베딩 미참여 — 의도적 생략이면 무시)";
|
|
358
|
+
readonly 'em.check.dsn4': "속성이 {count}개로 많습니다 (임계치 {threshold} 초과) — 분해를 검토하세요";
|
|
359
|
+
readonly 'em.check.dsn5Inherited': "인덱스 \"{name}\"가 참조하는 상속 컬럼을 슈퍼클래스 카탈로그에서 찾을 수 없습니다({field}).";
|
|
360
|
+
readonly 'em.check.dsn5Missing': "인덱스 \"{name}\"가 존재하지 않는 컬럼을 참조합니다.";
|
|
361
|
+
readonly 'em.check.unspecified': "미지정";
|
|
362
|
+
};
|
|
363
|
+
/** 메시지 키 — `ko` 카탈로그의 키 집합(단일 진실 소스). */
|
|
364
|
+
export type MessageKey = keyof typeof ko;
|
package/dist/index.d.ts
CHANGED
|
@@ -3,15 +3,24 @@ export * from './core/resolve';
|
|
|
3
3
|
export * from './core/routing';
|
|
4
4
|
export * from './core/autolayout';
|
|
5
5
|
export * from './core/text';
|
|
6
|
+
export * from './core/mermaid';
|
|
7
|
+
export * from './core/parseMermaid';
|
|
8
|
+
export * from './core/parseSqlDdl';
|
|
9
|
+
export * from './core/ddl';
|
|
10
|
+
export * from './core/jsonModel';
|
|
6
11
|
export * from './core/svg';
|
|
7
12
|
export * from './core/validation';
|
|
13
|
+
export * from './core/quickFix';
|
|
8
14
|
export * from './core/sharedColumn';
|
|
9
15
|
export { JAVA_TYPES, SELECTABLE_JAVA_TYPES, javaTypeLabel, CUSTOM_TYPE_VALUE, GROUP_CODE_ENUM_VALUE, DEFAULT_JAVA_TYPE, type JavaTypeDef, } from './core/javaTypes';
|
|
16
|
+
export { scaffoldEntityJava, type ScaffoldOptions, type ScaffoldedEntity, } from './core/scaffoldJava';
|
|
10
17
|
export { migrateLegacyMoney } from './core/migrateLegacyMoney';
|
|
18
|
+
export { mergeDiagram, type MergeDiagramSource, type MergeDiagramOptions, type MergeDiagramResult, } from './core/mergeDiagram';
|
|
11
19
|
export { synthesizeRestoreOps, deepEqual as restoreDeepEqual, type DiagramSnapshotState } from './core/synthesizeRestoreOps';
|
|
12
20
|
export { projectFieldAudit, type FieldAuditRecord, type FieldAuditTarget, type FieldAuditEntry } from './core/projectFieldAudit';
|
|
13
21
|
export { projectEntityAudit, type EntityAuditEntry, type EntityAuditSubject, type EntityAuditSubjectKind } from './core/projectEntityAudit';
|
|
14
22
|
export { projectActionLog, type ActionGroup, type SubjectAction, type ActionSubject, type ActionSubjectKind, type ActionFieldChange } from './core/projectActionLog';
|
|
23
|
+
export { projectInheritedColumns, makeInheritedColumnRef, isInheritedColumnRef, parseInheritedColumnRef, INHERITED_REF_PREFIX, type InheritedColumn, } from './core/inheritedColumns';
|
|
15
24
|
export { newId } from './core/id';
|
|
16
25
|
export * from './command/types';
|
|
17
26
|
export { CommandStack, type CommandDirection, type CommandListener } from './command/stack';
|
|
@@ -34,5 +43,6 @@ export { default as EditorToolbar } from './view/EditorToolbar.vue';
|
|
|
34
43
|
export { default as EditModeToggle } from './view/EditModeToggle.vue';
|
|
35
44
|
export { default as PropertyPanel } from './view/PropertyPanel.vue';
|
|
36
45
|
export { default as EntityModeler } from './view/EntityModeler.vue';
|
|
37
|
-
export { buildDiagramSvg, exportDiagramSvg } from './view/
|
|
46
|
+
export { buildDiagramSvg, exportDiagramSvg, exportDiagramPng } from './view/exportImage';
|
|
47
|
+
export { translate, UI_LOCALES, ko as uiMessagesKo, en as uiMessagesEn, ja as uiMessagesJa, type UiLocale, type MessageKey, type Translator, type MessageParams } from './i18n';
|
|
38
48
|
export { createEditorController, emptyState, EDITOR, type EditorController, type HistoryTransport, type RestoreTransport, type RestoreOutcome, } from './editor/controller';
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { EditorController } from '../editor/controller';
|
|
2
|
+
type __VLS_Props = {
|
|
3
|
+
controller: EditorController;
|
|
4
|
+
};
|
|
5
|
+
declare const _default: import('vue').DefineComponent<__VLS_Props, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {
|
|
6
|
+
close: () => any;
|
|
7
|
+
}, string, import('vue').PublicProps, Readonly<__VLS_Props> & Readonly<{
|
|
8
|
+
onClose?: (() => any) | undefined;
|
|
9
|
+
}>, {}, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, any>;
|
|
10
|
+
export default _default;
|
|
@@ -3,7 +3,9 @@ type __VLS_Props = {
|
|
|
3
3
|
controller: EditorController;
|
|
4
4
|
};
|
|
5
5
|
declare function exportSvg(): Promise<void>;
|
|
6
|
+
declare function exportPng(): Promise<void>;
|
|
6
7
|
declare const _default: import('vue').DefineComponent<__VLS_Props, {
|
|
7
8
|
exportSvg: typeof exportSvg;
|
|
9
|
+
exportPng: typeof exportPng;
|
|
8
10
|
}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<__VLS_Props> & Readonly<{}>, {}, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, any>;
|
|
9
11
|
export default _default;
|
|
@@ -1,6 +1,9 @@
|
|
|
1
|
+
import { UiLocale } from '../i18n';
|
|
1
2
|
type __VLS_Props = {
|
|
2
3
|
editable: boolean;
|
|
3
4
|
opMode: boolean;
|
|
5
|
+
frozen?: boolean;
|
|
6
|
+
locale?: UiLocale;
|
|
4
7
|
};
|
|
5
8
|
declare const _default: import('vue').DefineComponent<__VLS_Props, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {
|
|
6
9
|
toggle: () => any;
|
|
@@ -5,9 +5,11 @@ type __VLS_Props = {
|
|
|
5
5
|
};
|
|
6
6
|
declare const _default: import('vue').DefineComponent<__VLS_Props, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {
|
|
7
7
|
exportSvg: () => any;
|
|
8
|
+
exportPng: () => any;
|
|
8
9
|
toggleHistory: () => any;
|
|
9
10
|
}, string, import('vue').PublicProps, Readonly<__VLS_Props> & Readonly<{
|
|
10
11
|
onExportSvg?: (() => any) | undefined;
|
|
12
|
+
onExportPng?: (() => any) | undefined;
|
|
11
13
|
onToggleHistory?: (() => any) | undefined;
|
|
12
14
|
}>, {}, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, any>;
|
|
13
15
|
export default _default;
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { UiLocale } from '../i18n';
|
|
1
2
|
import { SwatchToken } from './swatches';
|
|
2
3
|
/**
|
|
3
4
|
* 캔버스 우클릭 메뉴 항목 모델 — 호스트(bluesea) BSContextMenu 의존을 끊고 다이어그램 토큰(--em-*)
|
|
@@ -19,8 +20,12 @@ export type EmMenuItem = {
|
|
|
19
20
|
current: SwatchToken | null;
|
|
20
21
|
onPick: (token: SwatchToken | null) => void;
|
|
21
22
|
};
|
|
22
|
-
declare const _default: import('vue').DefineComponent<{
|
|
23
|
+
declare const _default: import('vue').DefineComponent<{
|
|
24
|
+
locale?: UiLocale;
|
|
25
|
+
}, {
|
|
23
26
|
open: (event: MouseEvent, menuItems: EmMenuItem[]) => Promise<void>;
|
|
24
27
|
close: () => void;
|
|
25
|
-
}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<{
|
|
28
|
+
}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<{
|
|
29
|
+
locale?: UiLocale;
|
|
30
|
+
}> & Readonly<{}>, {}, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, any>;
|
|
26
31
|
export default _default;
|
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
import { GroupCodeCatalogEntry } from '../core/types';
|
|
2
|
+
import { UiLocale } from '../i18n';
|
|
2
3
|
type __VLS_Props = {
|
|
3
4
|
modelValue: string | undefined;
|
|
4
5
|
items: GroupCodeCatalogEntry[];
|
|
6
|
+
locale?: UiLocale;
|
|
5
7
|
};
|
|
6
8
|
declare const _default: import('vue').DefineComponent<__VLS_Props, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {
|
|
7
9
|
"update:modelValue": (args_0: string | undefined) => any;
|
|
@@ -1,7 +1,9 @@
|
|
|
1
|
+
import { UiLocale } from '../i18n';
|
|
1
2
|
type __VLS_Props = {
|
|
2
3
|
operationName: string;
|
|
3
4
|
sourceCode: string;
|
|
4
5
|
onSave: (code: string) => void;
|
|
6
|
+
locale?: UiLocale;
|
|
5
7
|
};
|
|
6
8
|
declare const _default: import('vue').DefineComponent<__VLS_Props, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<__VLS_Props> & Readonly<{}>, {}, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, any>;
|
|
7
9
|
export default _default;
|
|
@@ -1,5 +1,6 @@
|
|
|
1
|
+
import { UiLocale } from '../i18n';
|
|
1
2
|
type __VLS_Props = {
|
|
2
|
-
|
|
3
|
+
locale?: UiLocale;
|
|
3
4
|
};
|
|
4
5
|
declare const _default: import('vue').DefineComponent<__VLS_Props, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<__VLS_Props> & Readonly<{}>, {}, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, any>;
|
|
5
6
|
export default _default;
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { UiLocale } from '../i18n';
|
|
2
|
+
/** 내보내기 포맷 하나 — 탭 라벨·표시 내용·다운로드 파일명. */
|
|
3
|
+
export interface ExportFormat {
|
|
4
|
+
key: string;
|
|
5
|
+
label: string;
|
|
6
|
+
content: string;
|
|
7
|
+
filename: string;
|
|
8
|
+
}
|
|
9
|
+
type __VLS_Props = {
|
|
10
|
+
formats: ExportFormat[];
|
|
11
|
+
title?: string;
|
|
12
|
+
locale?: UiLocale;
|
|
13
|
+
};
|
|
14
|
+
declare const _default: import('vue').DefineComponent<__VLS_Props, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<__VLS_Props> & Readonly<{}>, {}, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, any>;
|
|
15
|
+
export default _default;
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { UiLocale } from '../i18n';
|
|
2
|
+
import { MergeDiagramSource } from '../core/mergeDiagram';
|
|
3
|
+
type __VLS_Props = {
|
|
4
|
+
onImport: (source: MergeDiagramSource) => void;
|
|
5
|
+
locale?: UiLocale;
|
|
6
|
+
};
|
|
7
|
+
declare const _default: import('vue').DefineComponent<__VLS_Props, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<__VLS_Props> & Readonly<{}>, {}, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, any>;
|
|
8
|
+
export default _default;
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 탐색기 필터 — 순수 로직. 매칭 노드 + 그 조상 체인을 보존하는 keep 집합을 계산한다.
|
|
3
|
+
*
|
|
4
|
+
* 매칭 축은 표시 모드에 묶지 않는다: 노드의 `matchText`(논리·물리·코드명을 소문자로 합쳐둔 문자열)에
|
|
5
|
+
* 대한 대소문자 무시 부분일치 — 사용자가 어떤 이름 표기를 기억하든 찾히도록. `matchText`가 없는 노드
|
|
6
|
+
* (그룹·관계/노트 섹션 등 필터 비대상)는 자기 자신으로는 매칭되지 않고, 자손이 매칭될 때만 조상으로 보존된다.
|
|
7
|
+
*/
|
|
8
|
+
export interface FilterableNode {
|
|
9
|
+
key: string;
|
|
10
|
+
/** 검색 대상 문자열(소문자 합성). 없으면 자기 자신은 매칭 대상이 아님. */
|
|
11
|
+
matchText?: string;
|
|
12
|
+
children: FilterableNode[];
|
|
13
|
+
}
|
|
14
|
+
/** 검색 축 합성 — 빈 값 제외 후 소문자·공백 결합. 모두 비면 undefined(필터 비대상 노드). */
|
|
15
|
+
export declare function buildMatchText(...parts: Array<string | undefined | null>): string | undefined;
|
|
16
|
+
/**
|
|
17
|
+
* `query`(호출부에서 trim·소문자로 정규화, 비어있지 않다고 가정)에 대해 트리에서 보존할 노드 key 집합.
|
|
18
|
+
* 노드가 self 매칭이거나 자손이 보존되면 포함 → 조상 체인이 자동으로 함께 보존된다.
|
|
19
|
+
*/
|
|
20
|
+
export declare function computeKeptKeys(root: FilterableNode, query: string): Set<string>;
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { useVueFlow } from '@vue-flow/core';
|
|
2
|
+
type VueFlowStore = ReturnType<typeof useVueFlow>;
|
|
3
|
+
/** 현재 캔버스를 측정·합성해 SVG 문자열을 반환 (다운로드 없이 문자열만 필요할 때). */
|
|
4
|
+
export declare function buildDiagramSvg(vf: VueFlowStore): string;
|
|
5
|
+
/** 현재 캔버스를 벡터 SVG로 내보내 브라우저 다운로드를 트리거한다. */
|
|
6
|
+
export declare function exportDiagramSvg(vf: VueFlowStore, filename?: string): void;
|
|
7
|
+
/**
|
|
8
|
+
* 현재 캔버스를 PNG 래스터로 내보내 다운로드한다. SVG 문자열을 Image로 로드해 오프스크린 캔버스에
|
|
9
|
+
* 그린 뒤 toBlob으로 변환한다. 합성 SVG는 외부 참조(foreignObject·원격 이미지·폰트) 없이 도형·텍스트로만
|
|
10
|
+
* 구성되고 색상도 concrete 값이 박혀 있어(측정 레이어가 computed style 채취) 캔버스 tainting이 없다.
|
|
11
|
+
* scale=2로 확대 렌더해 고해상도(레티나·문서 삽입) 품질을 확보한다.
|
|
12
|
+
*/
|
|
13
|
+
export declare function exportDiagramPng(vf: VueFlowStore, filename?: string, scale?: number): Promise<void>;
|
|
14
|
+
export {};
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { OpConflict } from '../command/op';
|
|
2
|
+
export interface OpConflictNotice {
|
|
3
|
+
/** 배너 제목 — 상태 자체(무엇이 일어났는지). */
|
|
4
|
+
title: string;
|
|
5
|
+
/** 배너 본문 — 원인 + 복구 방향(다시 불러오기). */
|
|
6
|
+
detail: string;
|
|
7
|
+
}
|
|
8
|
+
/**
|
|
9
|
+
* 충돌 종류 → 사용자 문구. `missing`은 동시편집이 아니라 전송 실패(혼자 편집 중에도 발생)라 원인을
|
|
10
|
+
* 구분한다(호스트 배선 경로와 동일한 kind 오진 방지). null → null(배너 미노출).
|
|
11
|
+
*/
|
|
12
|
+
export declare function opConflictNotice(conflict: OpConflict | null | undefined): OpConflictNotice | null;
|