@g1cloud/bpmn-modeler-next 5.0.0-alpha.9 → 5.0.0-alpha.91

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.
@@ -1,5 +1,5 @@
1
1
  import { ModdleElement, ParseWarning } from '../adapter/xml';
2
- import { BwlBand, BwlPlacement, BwlPoolOrder } from '../core/hints';
2
+ import { BwlAfterColumn, BwlBand, BwlPlacement, BwlPoolOrder } from '../core/hints';
3
3
  import { IrDefinition } from '../core/ir';
4
4
  /** 파생 뷰가 표현하지 못한 요소 — 침묵 폐기 금지(에이전트가 미표현 존재를 알아야 안전). */
5
5
  export interface IrOmission {
@@ -7,8 +7,14 @@ export interface IrOmission {
7
7
  /** bpmn $type 원형 (예: `bpmn:BoundaryEvent`) */
8
8
  type: string;
9
9
  reason:
10
- /** MVP 타입 집합 밖 (boundaryEvent·subProcess·dataObject 등 — 승격 시 자동 해소) */
10
+ /** IR 타입 집합 밖 (intermediate 이벤트·dataObject 등 — 승격 시 자동 해소) */
11
11
  'type-outside-mvp'
12
+ /**
13
+ * 승격된 컨테이너(subProcess) **내부**라 표현하지 않음 (B-87 ⓐ = 불투명 승격).
14
+ * 컨테이너 자신은 노드로 보이지만 내부는 열지 않았다 — 침묵하면 에이전트가 빈 컨테이너로
15
+ * 오인해 파괴적 편집을 한다. 내부를 IR 에 내려면 부모 채널·컨테이너 내부 좌표계가 필요하다.
16
+ */
17
+ | 'inside-container'
12
18
  /** 끝점이 미표현 요소라 연결 자체를 표현할 수 없음 */
13
19
  | 'endpoint-outside-mvp'
14
20
  /** 협업 문서인데 어느 participant 도 참조하지 않는 프로세스 (풀 귀속 불명) */
@@ -21,8 +27,13 @@ export interface IrOmission {
21
27
  export interface BwlHintView {
22
28
  /** participant id → 풀 세로 순서 */
23
29
  poolOrders: Record<string, BwlPoolOrder>;
24
- /** 플로우 노드 id → 프로세스 내부 가로 밴드 */
30
+ /** 플로우 노드 id → 프로세스 내부 가로 밴드(행) */
25
31
  bands: Record<string, BwlBand>;
32
+ /**
33
+ * 플로우 노드 id → 열 지목 힌트(그 노드보다 뒤 열). `bands` 와 대칭 채널이다.
34
+ * ⚠ **존재 필터**(A-6) — 참조 대상이 문서에 없으면 내지 않는다(힌트 = 파생 정보 · 불변식 2).
35
+ */
36
+ afterColumns: Record<string, BwlAfterColumn>;
26
37
  /** 주석 id → 앵커 기준 방위 (앵커 부재분은 필터됨) */
27
38
  placements: Record<string, BwlPlacement>;
28
39
  }
@@ -0,0 +1,53 @@
1
+ import { ModdleElement, ParseWarning } from '../adapter/xml';
2
+ type El = ModdleElement;
3
+ /**
4
+ * 이 쓰기가 만진 요소 id 집합 — 호스트 `BpmnChangedElements` 와 같은 형태.
5
+ *
6
+ * `modified` 는 **의미론 변화와 기하 변화의 합집합**이다. 둘을 가르지 않는 이유 = 소비처 둘이
7
+ * 모두 합집합을 쓴다(충돌 판정 = 「만졌는가」 · 패널 범위 = 「이번 것인가」). 가를 필요가 생기면
8
+ * 그때 `modifiedGeometry` 를 additive 로 더한다 — 지금 나누면 어느 소비처도 안 쓰는 축이 계약에 남는다.
9
+ */
10
+ export interface BpmnChangedElements {
11
+ added: string[];
12
+ removed: string[];
13
+ modified: string[];
14
+ }
15
+ export interface DiffBpmnElementsOptions {
16
+ /**
17
+ * 「움직였다」로 볼 최소 좌표 변화(px). 기본 **0.5** = 직렬화 잡음만 거른다.
18
+ *
19
+ * ⚠ **의도적으로 작다** — 이 판정기의 1차 소비처가 충돌 판정이라 *사람이 일부러 옮긴 것*을
20
+ * 놓치는 쪽이 비싸다. 범위 축(B-109)의 N20 은 5px 로 쟀는데 두 값 사이에서 결과가 갈리지
21
+ * 않았다(그 회차들의 이동은 전부 수십~수백 px).
22
+ */
23
+ moveTolerance?: number;
24
+ /**
25
+ * 라벨 **위치**의 허용 오차(px). 기본 **8**.
26
+ *
27
+ * 🔴 **라벨 박스는 사람 손과 폰트 근사가 함께 움직인다** — 실측(2026-09-26 · 82쌍 · 본체가 안
28
+ * 움직인 라벨 **280**): 라벨만 달라진 것이 **2건**이고 위치 Δ 3·5px · 크기 Δ 6·9px 였다. 우리
29
+ * 헤드리스 하강이 폰트 폭을 **근사**하므로(`headless/dom`) 재직렬화만으로 그만큼 표류한다.
30
+ * ⇒ 표류폭 위에 임계를 둔다. ⚠ **크기는 아예 안 본다** — bpmn-js 에 라벨 리사이즈가 없어
31
+ * 사람이 만들 수 없는 변화이고, 텍스트·폰트가 정하는 파생값이다.
32
+ */
33
+ labelTolerance?: number;
34
+ }
35
+ /**
36
+ * 두 문서가 만진 요소를 가른다. **순수 함수** — 좌표·의미 어느 쪽 변화든 `modified` 에 든다.
37
+ *
38
+ * ⚠ **id 가 진실이다** — bpmn-js 가 요소를 재생성하는 조작(morph)은 id 를 바꾸므로 `removed` +
39
+ * `added` 한 쌍으로 잡힌다. 그것이 정직한 판정이다(같은 요소라고 우기면 충돌 판정이 거짓 음성이 된다).
40
+ */
41
+ export declare function diffBpmnElements(oldDefinitions: El, newDefinitions: El, options?: DiffBpmnElementsOptions): BpmnChangedElements;
42
+ export interface DiffBpmnElementsXmlResult extends BpmnChangedElements {
43
+ warnings: ParseWarning[];
44
+ }
45
+ /** XML 진입점 — 호스트(서버)가 두 버전 본문을 그대로 넘기는 경로. C-3 이 적은 그 시그니처다. */
46
+ export declare function diffBpmnElementsXml(oldXml: string, newXml: string, options?: DiffBpmnElementsOptions): Promise<DiffBpmnElementsXmlResult>;
47
+ /**
48
+ * 「이번에 만들거나 만진 것」 — 패널 범위 축(B-109 ⓑ)이 쓰는 형태.
49
+ *
50
+ * ⚠ `removed` 는 넣지 않는다 — 사라진 요소는 패널이 가리킬 대상이 없다(판정도 안 난다).
51
+ */
52
+ export declare function touchedElements(changed: BpmnChangedElements): Set<string>;
53
+ export {};