@g1cloud/entity-modeler-next 5.0.0-beta.16 → 5.0.0-beta.18
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/core/propagation.d.ts +6 -1
- package/dist/editor/controller.d.ts +22 -17
- package/dist/entity-modeler-next.css +1 -1
- package/dist/entity-modeler.js +9751 -9664
- package/dist/entity-modeler.umd.cjs +24 -24
- package/dist/i18n/ko.d.ts +5 -0
- package/package.json +1 -1
|
@@ -42,9 +42,14 @@ export declare function computeForeignAttributes(logical: LogicalModel, associat
|
|
|
42
42
|
export declare function reconcileForeignAttributes(logical: LogicalModel, childEntityId: ModelId, idFactory?: IdFactory): ReconcilePlan;
|
|
43
43
|
/**
|
|
44
44
|
* changedEntityId의 식별자 변경이 영향을 주는 모든 후손 자식의 reconcile 계획.
|
|
45
|
-
* A→B→C 연쇄와 사이클(A→B→A)을 visited 가드로 안전 종료(INV-6).
|
|
46
45
|
* 클론에 단계별로 적용하며 다음 단계 입력을 갱신하므로, 반환 계획은 *원본* logical 기준이다.
|
|
47
46
|
* self-association은 비식별이라 자식 식별자를 바꾸지 않아 더 전파되지 않는다(자연 종료).
|
|
47
|
+
*
|
|
48
|
+
* 비등깊이 다중 경로(A→D + A→B→D)에서는 D의 desired가 두 단계에 걸쳐 도착한다 —
|
|
49
|
+
* 늦게 온 계획은 mergePlans로 병합하고, 계획을 받은 자식은 재큐해 후손을 재연쇄한다.
|
|
50
|
+
* 종료(INV-6): reconcile이 멱등 diff라 비순환 그래프는 자연 수렴(재처리 횟수 ≤ 최장 경로 깊이).
|
|
51
|
+
* 식별 사이클(A⇄B)은 desired가 무한 성장하므로 엔터티당 처리 횟수를 entities.length로 캡해 절단한다
|
|
52
|
+
* (비순환에선 최장 경로 ≤ 엔터티 수라 캡이 정확성을 해치지 않는다).
|
|
48
53
|
*/
|
|
49
54
|
export declare function planPropagation(logical: LogicalModel, changedEntityId: ModelId, idFactory?: IdFactory): Map<ModelId, ReconcilePlan>;
|
|
50
55
|
/**
|
|
@@ -11,11 +11,6 @@ import { ValidationIssue } from '../core/validation';
|
|
|
11
11
|
import { UiLocale, Translator } from '../i18n';
|
|
12
12
|
import { AssociationEnd, Attribute, DisplayMode, EmbeddableCatalog, Entity, EntityIndex, Geo, GroupCodeCatalog, LangCode, LogicalGroup, ModelId, Multiplicity, Operation, Point, PredefinedCustomTypeCatalog, SuperClassCatalog } from '../core/types';
|
|
13
13
|
import * as cmd from '../command/commands';
|
|
14
|
-
/**
|
|
15
|
-
* 관계 파생 FK 직접 삭제 시도 시의 안내 — 뷰 tooltip(어포던스)과 차단 시 토스트(피드백)가 공유한다.
|
|
16
|
-
* FK는 관계가 소유·관리하므로 컬럼을 직접 지우는 대신 연관관계선을 삭제해야 한다(Option B).
|
|
17
|
-
*/
|
|
18
|
-
export declare const FK_MANAGED_DELETE_MESSAGE = "\uC678\uB798\uD0A4\uB294 \uC5F0\uAD00\uAD00\uACC4\uC5D0\uC11C \uD30C\uC0DD\uB429\uB2C8\uB2E4. \uC0AD\uC81C\uD558\uB824\uBA74 \uC5F0\uAD00\uAD00\uACC4\uC120\uC744 \uC120\uD0DD\uD574 \uC0AD\uC81C\uD558\uC138\uC694.";
|
|
19
14
|
/** 엔티티 내부 속성을 가리키는 주소 원자 — 선택·컨텍스트·재정렬·연결 등 속성 단위 기능의 공통 참조점. */
|
|
20
15
|
export type AttrRef = {
|
|
21
16
|
entityId: ModelId;
|
|
@@ -219,7 +214,12 @@ export interface EditorController {
|
|
|
219
214
|
undo(): void;
|
|
220
215
|
redo(): void;
|
|
221
216
|
markSaved(): void;
|
|
222
|
-
|
|
217
|
+
/**
|
|
218
|
+
* add류 intent 공통 반환 계약: 성공 시 생성된 ModelId, 실패(조회 모드·충돌 프리즈·잠금·가드 차단) 시
|
|
219
|
+
* null. 거짓 성공 id를 돌려주면 뷰가 존재하지 않는 대상을 select(빈 폼)하므로, 소비처는 null 가드 후
|
|
220
|
+
* 후속 동작(자동 선택 등)을 수행해야 한다.
|
|
221
|
+
*/
|
|
222
|
+
addEntity(name?: string, location?: Point): ModelId | null;
|
|
223
223
|
renameEntity(id: ModelId, name: string): void;
|
|
224
224
|
updateEntity(id: ModelId, patch: Partial<Entity>): void;
|
|
225
225
|
moveEntity(id: ModelId, location: Point): void;
|
|
@@ -237,6 +237,11 @@ export interface EditorController {
|
|
|
237
237
|
setEntityLocked(id: ModelId, locked: boolean): void;
|
|
238
238
|
/** 엔티티 잠금 여부 조회 (레이아웃) */
|
|
239
239
|
isEntityLocked(id: ModelId): boolean;
|
|
240
|
+
/**
|
|
241
|
+
* 연관 잠금 여부 조회 — 양 끝 엔티티 중 한쪽이라도 잠겼으면 true(내부 게이트 isAssocLockedFn와
|
|
242
|
+
* 동일 의미론 단일 출처). 뷰가 관계 편집 어포던스(삭제 메뉴·인스펙터 폼)를 억제할 때 사용.
|
|
243
|
+
*/
|
|
244
|
+
isAssociationLocked(assocId: ModelId): boolean;
|
|
240
245
|
/** 활성 다이어그램 전체 엔티티 접기/펼치기 — 사전 상태 캡처 단일 커맨드(1 undo 스텝) */
|
|
241
246
|
collapseAll(): void;
|
|
242
247
|
expandAll(): void;
|
|
@@ -259,10 +264,10 @@ export interface EditorController {
|
|
|
259
264
|
setGroupLocked(groupId: ModelId, locked: boolean): void;
|
|
260
265
|
/** 그룹 잠금 여부 조회 (레이아웃) */
|
|
261
266
|
isGroupLocked(groupId: ModelId): boolean;
|
|
262
|
-
/** 선택 엔티티들로 새 그룹 생성 (멤버 bbox에 박스 배치) */
|
|
267
|
+
/** 선택 엔티티들로 새 그룹 생성 (멤버 bbox에 박스 배치) — 빈 입력·조회 모드 시 null */
|
|
263
268
|
createGroup(entityIds: ModelId[], name?: string): ModelId | null;
|
|
264
269
|
/** 빈 그룹 박스 생성 (이후 드래그로 엔티티 편입) */
|
|
265
|
-
addEmptyGroup(location: Point, name?: string): ModelId;
|
|
270
|
+
addEmptyGroup(location: Point, name?: string): ModelId | null;
|
|
266
271
|
removeGroup(groupId: ModelId): void;
|
|
267
272
|
/** 엔티티 이동 + 컨테인먼트에 따른 그룹 편입/해제를 한 명령으로 */
|
|
268
273
|
dropEntity(entityId: ModelId, location: Point, targetGroupId: ModelId | null): void;
|
|
@@ -338,16 +343,16 @@ export interface EditorController {
|
|
|
338
343
|
* dbAttr 슬롯은 레거시 `initAttributeDatabaseAttribute` 동형으로 **빈 골격**(physicalName/dataType
|
|
339
344
|
* 미설정)만 시드하고, 표시·저장 시 카탈로그 메타모델로 폴백한다(`SVG:976` 대응). 참조가 아니므로
|
|
340
345
|
* association은 만들지 않는다(entity.attributes 직접 보유 — 레거시 NORMAL 부류). 카탈로그에 없거나
|
|
341
|
-
* 대상 엔티티가 없으면 no-op(
|
|
346
|
+
* 대상 엔티티가 없으면 no-op(null).
|
|
342
347
|
*/
|
|
343
|
-
addPredefinedEmbed(entityId: ModelId, embeddableType: string): ModelId |
|
|
344
|
-
addAttribute(entityId: ModelId, partial?: Partial<Attribute>): ModelId;
|
|
348
|
+
addPredefinedEmbed(entityId: ModelId, embeddableType: string): ModelId | null;
|
|
349
|
+
addAttribute(entityId: ModelId, partial?: Partial<Attribute>): ModelId | null;
|
|
345
350
|
/**
|
|
346
351
|
* 시각 구획 행(DIVIDER) 추가 — 거대 엔티티에서 속성 묶음을 끊는 구분선. DB 컬럼·타입·식별자 없이
|
|
347
352
|
* 말미에 추가되며(이후 grip 드래그로 위치 조정), `name`은 선택적 섹션 라벨. divider 기본값을 단일
|
|
348
353
|
* 출처로 보장하려고 addAttribute에 위임한다.
|
|
349
354
|
*/
|
|
350
|
-
addDivider(entityId: ModelId): ModelId;
|
|
355
|
+
addDivider(entityId: ModelId): ModelId | null;
|
|
351
356
|
updateAttribute(entityId: ModelId, attributeId: ModelId, patch: Partial<Attribute>): void;
|
|
352
357
|
/**
|
|
353
358
|
* ⑤ 파생 타입 결합 — 속성 groupCode를 설정/해제하며 type을 동반 조정한다(레거시 정합).
|
|
@@ -378,21 +383,21 @@ export interface EditorController {
|
|
|
378
383
|
updateIndex(entityId: ModelId, indexId: ModelId, patch: Partial<EntityIndex>): void;
|
|
379
384
|
removeIndex(entityId: ModelId, indexId: ModelId): void;
|
|
380
385
|
/** 메서드(operation) 추가 — 신규는 visibility=PACKAGE, order=말미. 생성된 modelId 반환. */
|
|
381
|
-
addOperation(entityId: ModelId, partial?: Partial<Operation>): ModelId;
|
|
386
|
+
addOperation(entityId: ModelId, partial?: Partial<Operation>): ModelId | null;
|
|
382
387
|
updateOperation(entityId: ModelId, operationId: ModelId, patch: Partial<Operation>): void;
|
|
383
388
|
removeOperation(entityId: ModelId, operationId: ModelId): void;
|
|
384
389
|
/** 메서드 행 재정렬 — toIndex = 대상 제거 후 배열 기준 삽입 위치(단일 명령, undo 원자). */
|
|
385
390
|
reorderOperations(entityId: ModelId, operationIds: ModelId[], toIndex: number): void;
|
|
386
391
|
/** 메서드 강조 색 토큰 지정 (null이면 해제). */
|
|
387
392
|
setOperationSwatch(entityId: ModelId, operationId: ModelId, token: string | null): void;
|
|
388
|
-
addAssociation(sourceEntityId: ModelId, targetEntityId: ModelId, sourceColumnRef?: ModelId, targetColumnRef?: ModelId): ModelId;
|
|
393
|
+
addAssociation(sourceEntityId: ModelId, targetEntityId: ModelId, sourceColumnRef?: ModelId, targetColumnRef?: ModelId): ModelId | null;
|
|
389
394
|
/**
|
|
390
395
|
* 임베드 생성 — 소유자에 EMBED_OWN 표시 속성을 물질화(임베더블 source 컬럼 복사 + `embedded` 마커)하고
|
|
391
396
|
* EMBED association(owner EXACTLY_ONE / embeddable EXACTLY_ONE+composition)을 한 composite로 추가한다.
|
|
392
397
|
* 가드(결정 2 단일): 대상이 JPA_EMBEDDABLE이 아니거나 소유자가 이미 그 임베더블을 임베드했으면 no-op.
|
|
393
|
-
* 반환은 생성된 association id, 가드 차단 시
|
|
398
|
+
* 반환은 생성된 association id, 가드 차단 시 null.
|
|
394
399
|
*/
|
|
395
|
-
addEmbedAssociation(ownerEntityId: ModelId, embeddableEntityId: ModelId): ModelId |
|
|
400
|
+
addEmbedAssociation(ownerEntityId: ModelId, embeddableEntityId: ModelId): ModelId | null;
|
|
396
401
|
/**
|
|
397
402
|
* 임베드 카디널리티 설정 — 임베더블 end multiplicity를 지정 값으로 바꾼다. 컬렉션(`@ElementCollection`)
|
|
398
403
|
* 여부는 이 multiplicity에서 파생되는 값(권위=multiplicity, 결정 3): `*_MORE`(0..N / 1..N)면 컬렉션,
|
|
@@ -415,7 +420,7 @@ export interface EditorController {
|
|
|
415
420
|
addWaypoint(assocId: ModelId, index: number, point: Point): void;
|
|
416
421
|
removeWaypoint(assocId: ModelId, index: number): void;
|
|
417
422
|
clearWaypoints(assocId: ModelId): void;
|
|
418
|
-
addNote(memo?: string, location?: Point): ModelId;
|
|
423
|
+
addNote(memo?: string, location?: Point): ModelId | null;
|
|
419
424
|
removeNote(noteId: ModelId): void;
|
|
420
425
|
moveNote(noteId: ModelId, location: Point): void;
|
|
421
426
|
resizeNote(noteId: ModelId, size: {
|