@g1cloud/entity-modeler-next 5.2.49 → 5.2.51

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/i18n/ko.d.ts CHANGED
@@ -294,6 +294,7 @@ export declare const ko: {
294
294
  readonly 'em.conflict.missingDetail': "변경 사항을 저장하지 못했습니다(서버 또는 네트워크 오류). 최신 내용을 다시 불러오세요.";
295
295
  readonly 'em.conflict.changedDetail': "다른 곳에서 변경되어 편집이 잠겼습니다. 최신 내용을 다시 불러오세요.";
296
296
  readonly 'em.conflict.commandFailedDetail': "편집을 처리하지 못해 화면 내용이 어긋났습니다. 저장된 내용은 그대로이니 최신 내용을 다시 불러오세요.";
297
+ readonly 'em.conflict.reloadingDetail': "최신 내용을 다시 불러오는 중입니다. 잠시만 기다려 주세요.";
297
298
  readonly 'em.ctx.addEntity': "엔티티 추가";
298
299
  readonly 'em.ctx.addNote': "노트 추가";
299
300
  readonly 'em.ctx.addGroup': "그룹 추가";
@@ -1,4 +1,5 @@
1
1
  import { OpConflict } from '../command/op';
2
+ import { CommandFailure } from '../editor/controller';
2
3
  import { MessageKey } from '../i18n';
3
4
  export interface OpConflictNotice {
4
5
  /** 배너 제목 키 — 상태 자체(무엇이 일어났는지). 뷰가 t()로 렌더. */
@@ -12,3 +13,33 @@ export interface OpConflictNotice {
12
13
  * (호스트 배선 경로와 동일한 kind 오진 방지). null → null(배너 미노출).
13
14
  */
14
15
  export declare function opConflictNotice(conflict: OpConflict | null | undefined): OpConflictNotice | null;
16
+ /**
17
+ * 배너가 실제로 그리는 것 — 원인(둘) × 복구 진행(하나)의 합성. 뷰 computed 가 아니라 여기가 소유한다
18
+ * (분기를 컴포넌트에 두면 jsdom 에 레이아웃이 없어 단위로 못 재고, 프로브만 남아 vacuous 해진다).
19
+ *
20
+ * ## 왜 «진행» 축이 필요한가 (T2-2 host 하드닝 #3)
21
+ * 위 세 detail 문구는 전부 *"최신 내용을 다시 불러오세요"* 로 끝나는 **행동 요구**다. 그런데 배선 호스트의
22
+ * 자동 복구 경로(`rev`·`layout`·`commandFailure`)에서는 호스트가 **이미 재적재 중**이라 사용자가 할 일이
23
+ * 없고, 배너에 누를 것도 없다 ⇒ **수단 없는 지시**가 된다. `reloadInFlight` 가 그 창을 덮는다.
24
+ *
25
+ * ★**미배선 임베더에서 문구가 갈리지 않는다** — 그쪽은 자동 reload 자체가 없어 신호가 영원히 false 이고,
26
+ * 그러면 *"다시 불러오세요"* 가 **맞는 안내**다. 그래서 이 축은 «신호가 있을 때만» 문구를 바꾸고
27
+ * 기본값을 false 로 둔다(호스트가 인자를 빠뜨려도 종전 동작).
28
+ *
29
+ * ⚠️**진행 축은 detail 만 덮고 title 은 덮지 않는다** — 편집이 잠긴 것은 재적재 중에도 참이고, 제목까지
30
+ * 바뀌면 자동 경로에서 배너가 뜨자마자 두 제목이 교차해 깜빡인다(호스트가 같은 watch 안에서 reload 를
31
+ * 시작하므로 두 상태의 간격이 거의 0이다).
32
+ */
33
+ export interface FreezeBannerNotice extends OpConflictNotice {
34
+ /** 재적재 진행 중 — 뷰가 경고 아이콘 대신 진행 표시를 그리는 축(문구는 detailKey 가 이미 반영). */
35
+ reloading: boolean;
36
+ }
37
+ export interface FreezeBannerInput {
38
+ /** 서버 축 — 로컬은 맞는데 서버가 못 따라왔다. */
39
+ conflict: OpConflict | null | undefined;
40
+ /** 로컬 축 — 명령 apply 가 중간에 throw 해 화면이 어긋났다(op 미방출). */
41
+ commandFailure: CommandFailure | null | undefined;
42
+ /** 호스트가 「재적재 중」을 알린 신호. 미배선이면 undefined ⇒ false. */
43
+ reloadInFlight?: boolean;
44
+ }
45
+ export declare function freezeBannerNotice(input: FreezeBannerInput): FreezeBannerNotice | null;
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@g1cloud/entity-modeler-next",
3
3
  "private": false,
4
- "version": "5.2.49",
4
+ "version": "5.2.51",
5
5
  "description": "Vue 3 visual entity-modeling / class-diagram editor",
6
6
  "type": "module",
7
7
  "files": [