@g1cloud/bpmn-modeler-next 5.0.0-alpha.97 → 5.0.0-alpha.99

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.
@@ -126,7 +126,6 @@ export declare function nearPassCount(pts: readonly GeometryPoint[], shapes: rea
126
126
  * 같은 레인 안에서 되돌아가는 간선(r2 `Flow_o14`)은 A2 채널이 경계에서 멀어 발동하지 않는다. 없으면 `null`.
127
127
  */
128
128
  export declare function planBackEdgeBoundaryClearance(edge: GeometryEdge, scene: GeometryScene): GeometryPoint[] | null;
129
- /** 이 배치가 **새로 만든** 시퀀스 플로우 중 경계에 붙어 달리는 되돌아가는 간선을 재경로한다(B-26 ⓑ). */
130
129
  /**
131
130
  * 배치가 만든 정방향 간선의 **불필요한 꺾임을 줄인다**(B-34 ⓑ) — bpmn-js 기본 맨해튼 라우팅은 출발 직후
132
131
  * 꺾어 목표 행으로 올라간 뒤 가로로 가는 4점을 낸다. 사람은 두 회차 연속(표본 30·31, 같은 간선 같은 변환)
@@ -135,8 +134,28 @@ export declare function planBackEdgeBoundaryClearance(edge: GeometryEdge, scene:
135
134
  * `planEdgeRepair`(B-9 ②)는 **관통이 있을 때만** 돌아 이 형상을 보지 못한다 — 관통이 없는 우회다.
136
135
  * 안전 성질은 그대로: 배치가 만든 간선만 · 점 수가 줄 때만 · 관통 0 · 읽을 수 없는 중첩 비증가 ·
137
136
  * 교차 비용 비증가. 하나라도 어긋나면 손대지 않는다.
137
+ *
138
+ * ── B-124. **이 배치가 끝점을 바꾼 간선**(`reroutedEdgeIds`)도 대상이다 ──
139
+ *
140
+ * 행이 다른 재배선은 7단계가 라우터에 태우는데(B-114 ⓔ ①), 태스크 → 태스크는 bpmn-js 기본 선호가 가로:가로라
141
+ * **두 면 중점에서 꺾는 4점**이 된다 — 틈이 40 이면 첫 가로가 20px 다(표본 89 증언 1순위 · *"왼쪽선이 짧게"*).
142
+ * 선재 간선이라 `beforeEdgeIds` 가 이 패스를 막고 있었다. 🔴 **N20** — 사람 원본 23종의 행이 다른 정방향 시퀀스에
143
+ * 가로 <30 인 4점은 **0/188**. 이 배치가 이미 경로를 바꾼 간선이라 선재 경로 불가침(안전 성질 2)과 부딪히지 않는다.
144
+ * ⚠ **채택 조건을 하나 더 건다 = B-100 처방**(키 집합 · 신규 ≤ 해소) — 같은 간선의 첫 수정(`relayFresh`)이 받은
145
+ * 기준이다. 재배선 간선과 그 곁의 선재 라벨은 뒤의 라벨 보정 대상이 아니라서, 새 경로가 선재 라벨을 밟으면 그대로
146
+ * 남는다(합성 반사실 = 게이트웨이 라벨 밑 `label-over-line` +1 · 이 조건이 막았다).
147
+ *
148
+ * ── B-124. **우회 노드로 들어가는 간선은 세로 → 가로를 먼저 본다** ──
149
+ *
150
+ * 후보 순서는 가로 → 세로가 먼저다(B-34 ⓑ). 그런데 우회 노드는 나가는 쪽이 가로 → 세로(하류 윗/아랫면으로)라,
151
+ * 들어오는 쪽도 가로 → 세로면 **상류 옆면 → 우회 노드 아랫면**이 되어 두 선이 드나드는 면이 어긋난다. 사람은 표본 89 에서
152
+ * 그것을 *"통일감"* 으로 **상류 윗면 → 우회 노드 왼쪽 면**(세로 → 가로)으로 고쳤다. 사람 원본의 우회 짝은 **49/49**
153
+ * (세로 → 가로, 가로 → 세로)인데 ⚠ **49건 전부 게이트웨이 출발**이다 — 태스크 출발 우회는 원본에 0건이라, 태스크에 대한
154
+ * 직접 근거는 표본 89 하나이고 원본은 짝의 **대칭**을 지지할 뿐이다. 짝 판정은 신규 · 재배선 간선에 똑같이 건다
155
+ * (한쪽만 걸면 🔁 add/update 경로 갈림이다). 우회가 아니면 순서는 그대로다 — 새 행의 흐름 머리로 들어가는 태스크 출발은
156
+ * 사람 원본이 가로 → 세로 **63/68**(세로 → 가로 0)이다.
138
157
  */
139
- export declare function repairIntroducedDetours(services: Pick<ResolverServices, 'elementRegistry' | 'modeling'>, beforeEdgeIds: ReadonlySet<string>): void;
158
+ export declare function repairIntroducedDetours(services: Pick<ResolverServices, 'elementRegistry' | 'modeling'>, beforeEdgeIds: ReadonlySet<string>, reroutedEdgeIds: ReadonlySet<string>): void;
140
159
  export declare function repairIntroducedBoundaryHugging(services: Pick<ResolverServices, 'elementRegistry' | 'modeling'>, beforeEdgeIds: ReadonlySet<string>): void;
141
160
  /**
142
161
  * 한 간선의 **읽을 수 없는 중첩**(반대 방향 · 종류 다름)을 없애거나 줄이는 경로(순수). 못 찾으면 `null`.
@@ -214,6 +233,15 @@ export interface EdgeLabelSnapshot {
214
233
  source: string | undefined;
215
234
  target: string | undefined;
216
235
  }
236
+ /**
237
+ * **B-119 ⓒ** — 라벨을 **자기 선 곁**의 빈자리에 놓는다(순수). 구간마다 중점에서 선의 한쪽 → 반대쪽을 시험해 선 관통 ·
238
+ * 흐름 노드({@link shapesUnderLabel}) · 다른 라벨을 피하는 첫 자리. 전부 막히면 `null`.
239
+ *
240
+ * 쪽 순서 = **가로 구간은 아래 먼저**(표본 78 사람 값 — 표류한 `合格` 라벨을 짧아진 선 **아래**에 놓았다 · 이 얼굴의 유일한
241
+ * 사람 값) · **세로 구간은 오른쪽 먼저**(B-22 관례 — 이 얼굴의 세로 사람 값은 없다). ⚠ 가로 「아래 먼저」는 B-22
242
+ * (`planLabelLineClearance` = 위 먼저)와 반대다 — 그쪽 근거는 **레인 경계에 걸친 라벨을 위로 올린** 다른 얼굴이다.
243
+ */
244
+ export declare function planLabelBesideOwnLine(edge: GeometryEdge, scene: GeometryScene): GeometryLabel | null;
217
245
  /**
218
246
  * ── B-99. **배치가 옮긴 선을 선재 라벨이 따라간다** ──
219
247
  *
@@ -258,9 +286,18 @@ export interface EdgeLabelSnapshot {
258
286
  *
259
287
  * **되돌리는 자리는 base 절대 좌표다** — 사람이 한 것이 정확히 그것이다(1px 차). 🔴 **겹칠 때만** 되돌린다
260
288
  * (사용자 결정 2026-09-28): 겹침 없이 표류만 한 라벨(합성 재고 80건 · 중앙 21px)은 결함 신호가 없어 두고 간다.
261
- * ⚠ **base 자리가 막혔으면 손대지 않는다** — 새 노드가 그 자리에 선 형상(합성 238건 · 표본 84 는 사람이 뒀다)은
262
- * 이 수단의 몫이 아니다(착지 축 = B-119 잔존). ⚠ **base 자리가 새 선에서 멀면 손대지 않는다** — 옛 경로 위의
263
- * 자리라 새 선의 라벨로 안 읽힌다(임계 = B-99 N20 sequenceFlow 중심거리 p95). 채택 조건은 위와 같은 키 집합.
289
+ * ⚠ base 자리가 **막혔거나**(새 노드가 그 자리에 섰다 · 합성 238건) **새 선에서 멀면**(옛 경로 위의 자리라 새 선의
290
+ * 라벨로 안 읽힌다 · 임계 = B-99 N20 sequenceFlow 중심거리 p95) base 로는 되돌리지 않는다. 채택 조건은 위와 같은 키 집합.
291
+ *
292
+ * ── B-119 ⓒ. **그때 라벨이 자기 선에서도 멀면(표류) 자기 선 곁 빈자리로** ──
293
+ *
294
+ * 🔴 **사람 판정을 가른 것은 base 자리 막힘(A1/A2)이 아니라 「자기 선과의 거리」였다** — 재배선 A2 두 회차 중 선 곁
295
+ * (중심거리 11 · 표본 84)은 사람이 **뒀고**, 표류(127 · 표본 78)는 **짧아진 선 아래로 옮겼다**. 사람 실무 23종이 남긴
296
+ * 겹침 2/2 도 선 곁(11 · 17.5)이다. ⇒ 선 곁 착지는 두고(관측 kind 만) **표류한 것만** 옮긴다 — 선 곁까지 넓힌 판은
297
+ * 합성 재고에서 168 을 더 옮겨 사람이 둔 형상까지 바꾼다. 자리 = {@link planLabelBesideOwnLine} · 채택 = 같은 키 집합.
298
+ * 반사실(합성 5,002 · lineage 93) = 해소 9 · lineage 는 표본 78 한 회차(사람 값과 3px) · 새 판정 0.
299
+ * ⚠ **못 닫는 것** — 라벨이 선보다 넓다(🔁 B-31 「틈 40」) · 고른 자리가 다른 선과 공유 구간이다(`label-on-shared-segment`
300
+ * — 공유 구간 검사 + 미끄럼 후보를 더한 판도 이득 0) · base 에서 이미 표류한 라벨(선 기하가 안 바뀌어 이 가지에 안 온다).
264
301
  */
265
302
  export declare function followMovedEdgeLabels(services: Pick<ResolverServices, 'elementRegistry' | 'modeling'>, before: ReadonlyMap<string, EdgeLabelSnapshot>): void;
266
303
  /** 이 배치가 **새로 만든** 간선의 라벨을 선·경계선에서 뗀다(맨 마지막 — 라벨 귀속 보정 뒤). 선재 라벨은 불가침. */