@g1cloud/bpmn-modeler-next 5.0.0-beta.5 → 5.0.0-beta.50
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/adapter/annotationImportDocking.d.ts +28 -0
- package/dist/adapter/i18n.d.ts +38 -6
- package/dist/adapter/i18nBackfill.d.ts +72 -0
- package/dist/adapter/translationLocaleCopy.d.ts +11 -0
- package/dist/adapter/translationLocaleRestore.d.ts +86 -0
- package/dist/agent/agentBatch.d.ts +7 -1
- package/dist/agent/describeProcess.d.ts +29 -2
- package/dist/agent/geometryAudit.d.ts +24 -0
- package/dist/agent/resolver/documentIndex.d.ts +12 -0
- package/dist/agent/resolver/index.d.ts +25 -2
- package/dist/agent/resolver/issues.d.ts +53 -0
- package/dist/agent/resolver/localeTexts.d.ts +24 -0
- package/dist/agent/resolver/lower.d.ts +29 -4
- package/dist/agent/resolver/routeRepair.d.ts +84 -2
- package/dist/agent/resolver/validate.d.ts +10 -1
- package/dist/agent/symbolicOp.d.ts +20 -2
- package/dist/bpmn-modeler-next.css +1 -1
- package/dist/bpmn-modeler.js +16091 -13873
- package/dist/bpmn-modeler.umd.cjs +105 -105
- package/dist/command/commandSeam.d.ts +2 -1
- package/dist/command/setTranslations.d.ts +42 -0
- package/dist/command/translationCommands.d.ts +11 -0
- package/dist/command/updateTranslation.d.ts +31 -0
- package/dist/core/hints.d.ts +29 -0
- package/dist/core/ir.d.ts +48 -1
- package/dist/editor/controller.d.ts +33 -1
- package/dist/editor/editLock.d.ts +9 -0
- package/dist/headless/modeler.d.ts +18 -2
- package/dist/index.d.ts +7 -0
- package/dist/view/BpmnDisplayLocaleSwitcher.vue.d.ts +6 -0
- package/dist/view/BpmnModelerView.vue.d.ts +7 -0
- package/dist/view/i18nDisplay.d.ts +87 -0
- package/dist/view/minimap.d.ts +25 -0
- package/package.json +3 -2
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { Connection } from 'bpmn-js/lib/model/Types';
|
|
1
2
|
import { GeometryEdge, GeometryLabel, GeometryPoint, GeometryScene, GeometryShape } from '../geometryAudit';
|
|
2
3
|
import { ResolverServices } from './lower';
|
|
3
4
|
/**
|
|
@@ -54,6 +55,11 @@ export declare function forwardThreePointCandidates(edge: GeometryEdge, shapes:
|
|
|
54
55
|
* 목표 열은 목표 중심에 도킹 편이 0/±25/±40 — 그 열에 다른 메시지가 이미 중심 도킹해 있으면(같은 방향·같은
|
|
55
56
|
* 종류라 finding 은 아니지만 두 화살표가 한 선으로 합쳐 보인다 — 사용자도 -19 비껴 놓았다) 편이 후보가 피한다.
|
|
56
57
|
* 채택은 호출자 몫: 관통 0 을 먼저, 그다음 다른 간선과의 공선 공유가 없는 후보를 고른다.
|
|
58
|
+
*
|
|
59
|
+
* 🔴 B-141. 목표 도킹 열이 **출발 도형 폭 안**이면(같은 열 메시지) 후보를 내지 않는다 — 되돌아오는 세로 구간이
|
|
60
|
+
* 출발 도형을 관통하고, 도킹 편이(최대 ±40)로는 반폭을 못 벗어난다. 그 관통은 호출자의 관통 셈과 판정이 둘 다
|
|
61
|
+
* **자기 끝점을 빼서** 보이지 않아 그대로 채택됐다(표본 93 갈고리 · 계보 102 재하강 = 8회차 10간선 · 전부 이 후보 ·
|
|
62
|
+
* 사람 문서 0/1040 · 사람은 6/7 을 고쳤다). 위 전례는 목표 열 ≠ 출발 열이었다 — 같은 열이면 ㄷ 우회(B-9 ②)로 넘긴다.
|
|
57
63
|
*/
|
|
58
64
|
export declare function farSideChannelCandidates(edge: GeometryEdge, shapes: readonly GeometryShape[]): GeometryPoint[][];
|
|
59
65
|
/**
|
|
@@ -79,6 +85,14 @@ export declare function planEdgeRepair(edge: GeometryEdge, targets: readonly Geo
|
|
|
79
85
|
export declare function repairIntroducedCrossings(services: Pick<ResolverServices, 'elementRegistry' | 'modeling'>, beforeKeys: ReadonlySet<string>,
|
|
80
86
|
/** 2차 호출 전용 — 이 간선들만 본다(B-90. 1차가 돌려준 «주석 때문에 포기» 집합). */
|
|
81
87
|
only?: ReadonlySet<string>): Set<string>;
|
|
88
|
+
type Bounds = {
|
|
89
|
+
x: number;
|
|
90
|
+
y: number;
|
|
91
|
+
width: number;
|
|
92
|
+
height: number;
|
|
93
|
+
};
|
|
94
|
+
/** 연결의 부모 컨테이너 bounds — 프로세스 평면(루트)이면 `undefined`. */
|
|
95
|
+
export declare function parentBoundsOf(connection: Connection): Bounds | undefined;
|
|
82
96
|
/**
|
|
83
97
|
* 🔴 **이 배치가 새로 만든 간선 × 간선 교차 중 「대가 없이 없앨 수 있는 것」만 없앤다**(B-90 ⓑ).
|
|
84
98
|
*
|
|
@@ -99,16 +113,75 @@ only?: ReadonlySet<string>): Set<string>;
|
|
|
99
113
|
* 읽을 수 없는 중첩이 늘지 않을 때만 채택(🔁 「채택 조건에 대가가 없다」 클래스를 미리 막는다).
|
|
100
114
|
*/
|
|
101
115
|
export declare function repairIntroducedEdgeCrossings(services: Pick<ResolverServices, 'elementRegistry' | 'modeling'>, beforePairs: ReadonlySet<string>, beforeEdgeIds: ReadonlySet<string>): void;
|
|
116
|
+
/**
|
|
117
|
+
* 공유 노드 `node` 쪽 끝을 네 변 중심으로 옮긴 경로 후보(순수). 반대쪽 끝은 **지금 도킹점 · 그 변 그대로** 둔다 —
|
|
118
|
+
* 그 끝은 이 쌍의 교차와 무관하고, 옮기면 그쪽 이웃과의 관계가 새로 생긴다. 반대쪽 도킹점이 변 위가 아니면 후보 없음.
|
|
119
|
+
*/
|
|
120
|
+
export declare function redockCandidates(edge: GeometryEdge, node: GeometryShape, shapesById: ReadonlyMap<string, GeometryShape>): GeometryPoint[][];
|
|
121
|
+
/**
|
|
122
|
+
* 🔴 **이 배치가 만든 「끝점을 공유하는」 시퀀스 플로우 교차를 공유 노드의 출입 변을 바꿔 없앤다**(B-146 ⓑ).
|
|
123
|
+
*
|
|
124
|
+
* 표본 98 의 사람 수정 형태 그대로다 — 실패 갈래(게이트웨이 → 오류 노드)가 오류 노드 왼쪽 면으로, 되돌아감(오류 노드 →
|
|
125
|
+
* 상류)이 윗면에서 나가 서로 가로질렀고, 사람은 **실패 갈래를 윗면으로 · 되돌아감을 왼쪽 면에서** 내도록 맞바꿨다
|
|
126
|
+
* (도형 무이동 · 간선 직접 2). 🔴 **한 간선만 옮겨서는 안 풀린다** — 어느 쪽만 옮겨도 다른 쪽과 공선으로 마주 달린다.
|
|
127
|
+
* 그래서 B-90 ⓑ(한 간선씩)와 달리 **쌍을 함께** 고른다.
|
|
128
|
+
*
|
|
129
|
+
* **범위**(B-146 수단 결정) — 시퀀스 × 시퀀스(노드 루프)만 · 블랙박스 풀을 함께 끝점으로 가진 메시지는 보류(사람 기저 0 ·
|
|
130
|
+
* 증언 없음) · 이 배치가 만든 쌍만(`beforeSharedPairs` 밖) · **이 배치가 만든 간선만 움직인다**(B-90 ⓑ 규약 — 기존 간선은
|
|
131
|
+
* 지금 경로 하나만 후보다). 도형은 옮기지 않는다 — 경로로 안 풀리는 형상(g39 = 새 게이트웨이가 기존 우회선 아래)은 남는다.
|
|
132
|
+
*
|
|
133
|
+
* **대가 판정**(B-90 ⓑ 와 같은 자세 — 계산이 곧 판별) — 이 쌍이 더는 교차하지 않고 · 둘이 공선으로 겹치지 않고 · 컨테이너
|
|
134
|
+
* 안이고 · 끝점 공유 교차 총수가 줄고 · **종전 교차 쌍이 새로 생기지 않고** · 문서 판정에 **새 키가 0** 일 때만. 통과한
|
|
135
|
+
* 조합 중 **길이 + 꺾임** 이 가장 작은 것을 고른다(사람 수정본은 도구 산출과 길이가 같고 꺾임만 달랐다).
|
|
136
|
+
*/
|
|
137
|
+
export declare function repairIntroducedSharedEndpointCrossings(services: Pick<ResolverServices, 'elementRegistry' | 'modeling'>, beforeSharedPairs: ReadonlySet<string>, beforeEdgeIds: ReadonlySet<string>): void;
|
|
138
|
+
/**
|
|
139
|
+
* 🔴 **이 배치가 만든 메시지 중 선재 블랙박스 풀로 가고 짝 열이 풀 가로 범위 밖인 것을 짝 쪽 가장자리에 다시 도킹한다**(B-150).
|
|
140
|
+
* `beforeEdgeIds` · `beforeShapeIds` = 하강 전 간선 · 도형 id(선재 풀 판별 · 새 메시지 판별).
|
|
141
|
+
*/
|
|
142
|
+
export declare function redockIntroducedBlackboxMessages(services: Pick<ResolverServices, 'elementRegistry' | 'modeling'>, beforeEdgeIds: ReadonlySet<string>, beforeShapeIds: ReadonlySet<string>): void;
|
|
102
143
|
/**
|
|
103
144
|
* 풀 횡단 메시지플로우의 6점 경로 계획(순수). `null` = 이 간선은 대상이 아니거나(중간 풀 없음 ·
|
|
104
145
|
* 끝점 해소 불가) 더 나은 열이 없다.
|
|
105
146
|
*/
|
|
106
147
|
export declare function planCrossPoolRoute(edge: GeometryEdge, scene: GeometryScene): GeometryPoint[] | null;
|
|
148
|
+
/**
|
|
149
|
+
* ── 승객 간선의 base 경로 평행이동 (B-133 ⓒ) ──
|
|
150
|
+
*
|
|
151
|
+
* 하강 전에 있던 간선 중 **양 끝 도형이 같은 델타로 움직였는데 경로는 다시 깔린 것**을 base 경로 + 델타로
|
|
152
|
+
* 되돌린다. 한 짝의 끝점이 **서로 다른 단계**에서 옮겨지면(밀기 `createSpace` 는 노드 쪽만 · B-75 추종은 풀
|
|
153
|
+
* 쪽만 · 짝 동반은 짝 쪽만) 단계마다 bpmn-js `connection.layout` 이 사람이 그린 경로를 버리고 다시 깐다. 순
|
|
154
|
+
* 변위가 같으므로 평행이동이면 사람 경로가 그대로 산다. 실측(표본 103 · 사람 문서 + 증언 *"선이 껶여있는
|
|
155
|
+
* 부분이 걸렸어"*) = 쌓인 송신 노드의 **옆면 출발 3점**이 위 노드를 관통하는 2점으로 다시 깔리고, 우회 보정이
|
|
156
|
+
* 그것을 **8점 지그재그**로 감싸 이웃 메시지와 130px 겹쳤다(`edge-overlap-unrelated`).
|
|
157
|
+
*
|
|
158
|
+
* 안전 성질 2(선재 경로 불가침)의 **복원판**이다 — 선재 경로를 이 배치가 이미 지운 자리에서, 사람이 그린 것을
|
|
159
|
+
* 되살린다. 자리 = 도형을 옮기는 패스(lower · 풀 · 그룹) **전부 뒤**, 경로 보정 **앞** — 되살린 경로도 뒤
|
|
160
|
+
* 보정의 입력이 된다.
|
|
161
|
+
*
|
|
162
|
+
* 조건(전부) — ① 하강 전에 있던 **시퀀스 · 메시지 흐름**(연관은 뺀다 — N20 에서 base 의 끊긴 주석 연관만 되살려
|
|
163
|
+
* 판정을 늘렸고 이득은 0 이었다) ② 이 배치가 끝점을 바꾸지 않았다(재배선 · 끝점 id) ③ 양 끝 도형 **크기 불변** ·
|
|
164
|
+
* 이동 델타가 **같고 0 이 아니다** ④ 지금 경로 ≠ base + 델타 ⑤ 지금 경로가 이미 **관통 없는 2점 축 직선이면
|
|
165
|
+
* 둔다**(N20 — 다시 깐 직선을 사람의 꺾인 경로로 되돌리면 2점 메시지만 잃었다) ⑥ base + 델타 경로가 도형을
|
|
166
|
+
* 관통하지 않는다(관통하면 뒤 우회 보정에 맡긴다).
|
|
167
|
+
*
|
|
168
|
+
* N20(합성 재고 = 풀 안 시퀀스 전량 끼우기 3 op · 사람 문서 183 → 3,884 · 저장본 109 → 4,466) — 사람: 배치가 만든
|
|
169
|
+
* 판정 **−50** · 새 판정 4(전부 교환) · 교차 −25 · 2점 메시지 무변 · 순악화 **0** / 저장본: **−58** · 교차 감소 ·
|
|
170
|
+
* 2점 메시지 무변 · 순악화 **0**(교차 +1 4건은 종류 다름 중첩 해소와 교환).
|
|
171
|
+
*/
|
|
172
|
+
export declare function restorePassengerEdgeRoutes(services: Pick<ResolverServices, 'elementRegistry' | 'modeling'>, sceneBefore: GeometryScene, reroutedEdgeIds: ReadonlySet<string>): void;
|
|
107
173
|
/**
|
|
108
174
|
* 이 배치가 **새로 만든** 메시지플로우 중 풀을 횡단하는 것을 재경로한다(하강 직후, undo 에피소드
|
|
109
175
|
* 안). `beforeEdgeIds` = 하강 전 간선 id — 그 밖의 것만 대상(안전 성질 2: 선재 경로 불가침).
|
|
110
176
|
*/
|
|
111
177
|
export declare function rerouteIntroducedCrossPoolEdges(services: Pick<ResolverServices, 'elementRegistry' | 'modeling'>, beforeEdgeIds: ReadonlySet<string>): void;
|
|
178
|
+
/**
|
|
179
|
+
* 🔴 **이 배치가 만들었거나 경로를 바꾼 메시지가 관계없는 풀 안을 가로로 지나면 그 가로를 끝점의 풀 안으로 옮긴다**(B-151) — 끝점 풀 안이
|
|
180
|
+
* 막히면 풀 밖 채널(풀 사이 틈 · 더미 바깥)로(B-151 ⓐ) · 채택이 없던 메시지는 한 번 더 본다.
|
|
181
|
+
* 선재 메시지는 base 보다 그 길이가 `UNRELATED_POOL_RUN_MIN` 이상 **는** 것만 — base 의 가로는 사람이 둔 것이다.
|
|
182
|
+
* `beforeEdgeIds` = 하강 전 간선 id · `sceneBefore` = 하강 전 장면(선재 경로 · 풀).
|
|
183
|
+
*/
|
|
184
|
+
export declare function repairIntroducedUnrelatedPoolRuns(services: Pick<ResolverServices, 'elementRegistry' | 'modeling'>, beforeEdgeIds: ReadonlySet<string>, sceneBefore: GeometryScene): void;
|
|
112
185
|
/** 안쪽 구간(첫·끝 도킹 구간 제외)이 컨테이너 경계선과 나란히 이 거리 안에서 달리면 "경계에 붙었다"고 본다. */
|
|
113
186
|
export declare const BOUNDARY_CLEARANCE = 30;
|
|
114
187
|
/** 웨이포인트의 **안쪽 구간**(도킹 구간 제외)이 어느 컨테이너의 경계선과 나란히 `BOUNDARY_CLEARANCE` 안에서 겹쳐 달리는가. */
|
|
@@ -162,7 +235,9 @@ export declare function repairIntroducedBoundaryHugging(services: Pick<ResolverS
|
|
|
162
235
|
* 종류 다른 중첩(B-17 ⓐ)의 보정 = 도킹 편이 — "가급적 중심에 도킹하되 어쩔 수 없을 땐 약간 비껴서"
|
|
163
236
|
* (사용자 프레이밍). 기본은 중심이고, finding 이 났을 때만, 최소 편이(±25)부터 본다.
|
|
164
237
|
*/
|
|
165
|
-
export declare function planOppositeOverlapRepair(edge: GeometryEdge, scene: GeometryScene
|
|
238
|
+
export declare function planOppositeOverlapRepair(edge: GeometryEdge, scene: GeometryScene, options?: {
|
|
239
|
+
sideEntry?: boolean;
|
|
240
|
+
}): GeometryPoint[] | null;
|
|
166
241
|
/**
|
|
167
242
|
* 이 간선의 **가짜 합류**(B-77)를 없애는 경로(순수). 못 찾으면 `null`.
|
|
168
243
|
*
|
|
@@ -201,7 +276,13 @@ export declare function planChainOverlapRepair(edge: GeometryEdge, scene: Geomet
|
|
|
201
276
|
* 짝 중 **새 간선만** 손댄다(안전 성질 2).
|
|
202
277
|
*/
|
|
203
278
|
export declare function repairIntroducedChainOverlaps(services: Pick<ResolverServices, 'elementRegistry' | 'modeling'>, beforeKeys: ReadonlySet<string>, beforeEdgeIds: ReadonlySet<string>): void;
|
|
204
|
-
|
|
279
|
+
/**
|
|
280
|
+
* B-14 ⓒ1 — 이 배치가 새로 낸 읽을 수 없는 중첩을 고친다. `beforeEdgeIds` 에 든 간선(배치 전부터 있던 것)은 손대지 않는다.
|
|
281
|
+
* 🔴 **B-178** — `sideEntryEdgeIds` 에 든 간선에만 빈 옆면 진입 후보를 연다(호출자 = 「이 배치가 경로를 다시 깐 기존 간선」).
|
|
282
|
+
* 🔴 **반환 = 실제로 경로를 바꾼 간선** — 뒤의 라벨-선 보정이 그 간선의 라벨을 이 배치 몫으로 다뤄야 한다(안 그러면
|
|
283
|
+
* 다시 깐 기존 간선의 라벨이 새 경로 위에 남는다 — N20 실측 +9).
|
|
284
|
+
*/
|
|
285
|
+
export declare function repairIntroducedOppositeOverlaps(services: Pick<ResolverServices, 'elementRegistry' | 'modeling'>, beforeKeys: ReadonlySet<string>, beforeEdgeIds: ReadonlySet<string>, sideEntryEdgeIds?: ReadonlySet<string>): ReadonlySet<string>;
|
|
205
286
|
/**
|
|
206
287
|
* 라벨의 새 bounds(순수). 라벨이 공유 구간 위에 없으면 `null`(옮길 이유가 없다). 고유 구간을 못
|
|
207
288
|
* 찾거나 옮긴 자리가 도형과 겹치면 `null`(손대지 않고 보고에 맡긴다).
|
|
@@ -342,3 +423,4 @@ export declare function repairIntroducedShapeLabelLines(services: Pick<ResolverS
|
|
|
342
423
|
* `scene` 으로 하고 통과한 간선만 실제로 옮긴다 · 새 키가 생기면 **그 간선만** 두고 간다(🔁 B-61).
|
|
343
424
|
*/
|
|
344
425
|
export declare function redockIntroducedDetachedEndpoints(services: Pick<ResolverServices, 'elementRegistry' | 'modeling'>, beforeKeys: ReadonlySet<string>): void;
|
|
426
|
+
export {};
|
|
@@ -1,4 +1,13 @@
|
|
|
1
|
+
import { BpmnDocumentLocales } from '../../adapter/i18n';
|
|
1
2
|
import { SymbolicOp } from '../symbolicOp';
|
|
2
3
|
import { DocumentIndex } from './documentIndex';
|
|
3
4
|
import { ResolveIssue } from './issues';
|
|
4
|
-
|
|
5
|
+
/** 검증 옵션 — 문서 밖에서만 알 수 있는 입력. */
|
|
6
|
+
export interface ValidateOpsOptions {
|
|
7
|
+
/**
|
|
8
|
+
* 그룹의 문서 언어 설정(B-4 ④) — 있으면 다국어 그룹이다(문구 = `names`/`texts` 로 문서 언어 전부 · 평문 거부).
|
|
9
|
+
* 없으면 기능이 꺼진 그룹이다(평문만 · 맵 거부). 그룹 설정은 문서에 없으므로 호스트가 공급한다.
|
|
10
|
+
*/
|
|
11
|
+
i18n?: BpmnDocumentLocales;
|
|
12
|
+
}
|
|
13
|
+
export declare function validateOps(ops: readonly SymbolicOp[], index: DocumentIndex, options?: ValidateOpsOptions): ResolveIssue[];
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { BwlAfterColumn, BwlBand, BwlPlacement, BwlPoolOrder } from '../core/hints';
|
|
2
|
-
import { IrAssociation, IrDataAssociation, IrDataStore, AddableFlowNodeType, IrEventDefinition, IrFlowCondition, IrGroup, IrLane, IrMessageFlow, IrNode, IrParticipant, IrSequenceFlow, IrTextAnnotation } from '../core/ir';
|
|
2
|
+
import { IrLocaleTexts, IrAssociation, IrDataAssociation, IrDataStore, AddableFlowNodeType, IrEventDefinition, IrFlowCondition, IrGroup, IrLane, IrMessageFlow, IrNode, IrParticipant, IrSequenceFlow, IrTextAnnotation } from '../core/ir';
|
|
3
3
|
/** LLM 이 산출하는 단일 심볼릭 op. `kind` 로 판별한다. */
|
|
4
4
|
export type SymbolicOp =
|
|
5
5
|
/** 풀 추가. `order` = 풀 세로 순서 힌트(생략 시 op 순서가 곧 배치 순서). */
|
|
@@ -57,6 +57,7 @@ export type SymbolicOp =
|
|
|
57
57
|
kind: 'participant.update';
|
|
58
58
|
id: string;
|
|
59
59
|
name?: string | null;
|
|
60
|
+
names?: IrLocaleTexts;
|
|
60
61
|
lanes?: IrLane[];
|
|
61
62
|
}
|
|
62
63
|
/** `lane` = 레인 재배정(이동). `type` = 태스크/이벤트 타입 전환(bpmn-js replace 하강 — 외래 확장 속성 유실 가능성은 불변식 2 가 완충). */
|
|
@@ -67,6 +68,7 @@ export type SymbolicOp =
|
|
|
67
68
|
kind: 'node.update';
|
|
68
69
|
id: string;
|
|
69
70
|
name?: string | null;
|
|
71
|
+
names?: IrLocaleTexts;
|
|
70
72
|
lane?: string;
|
|
71
73
|
type?: AddableFlowNodeType;
|
|
72
74
|
eventDefinition?: IrEventDefinition;
|
|
@@ -85,6 +87,7 @@ export type SymbolicOp =
|
|
|
85
87
|
kind: 'sequenceFlow.update';
|
|
86
88
|
id: string;
|
|
87
89
|
name?: string | null;
|
|
90
|
+
names?: IrLocaleTexts;
|
|
88
91
|
condition?: IrFlowCondition | null;
|
|
89
92
|
source?: string;
|
|
90
93
|
target?: string;
|
|
@@ -92,16 +95,19 @@ export type SymbolicOp =
|
|
|
92
95
|
kind: 'messageFlow.update';
|
|
93
96
|
id: string;
|
|
94
97
|
name?: string | null;
|
|
98
|
+
names?: IrLocaleTexts;
|
|
95
99
|
} | {
|
|
96
100
|
kind: 'dataStore.update';
|
|
97
101
|
id: string;
|
|
98
102
|
name?: string | null;
|
|
103
|
+
names?: IrLocaleTexts;
|
|
99
104
|
}
|
|
100
105
|
/** `text` 는 주석의 본질이라 제거 불가(주석 삭제 = element.remove). `placement: null` = 힌트 제거(휴리스틱 복귀). */
|
|
101
106
|
| {
|
|
102
107
|
kind: 'annotation.update';
|
|
103
108
|
id: string;
|
|
104
109
|
text?: string;
|
|
110
|
+
texts?: IrLocaleTexts;
|
|
105
111
|
placement?: BwlPlacement | null;
|
|
106
112
|
}
|
|
107
113
|
/** `members` 는 전체 재선언(생략 = 보존) — resolver 가 바운즈를 재산출한다. */
|
|
@@ -109,8 +115,20 @@ export type SymbolicOp =
|
|
|
109
115
|
kind: 'group.update';
|
|
110
116
|
id: string;
|
|
111
117
|
name?: string | null;
|
|
118
|
+
names?: IrLocaleTexts;
|
|
112
119
|
members?: string[];
|
|
113
120
|
}
|
|
121
|
+
/**
|
|
122
|
+
* **확인만** — 그 요소의 `locale` 칸에 걸린 확인 요청(`bwl:reviewRequest`)을 문구를 바꾸지 않고 해소한다.
|
|
123
|
+
* 다른 언어가 고쳐졌지만 이 칸의 번역은 여전히 맞을 때(오타 수준 수정) 쓴다. 번역을 고쳐야 하면 이것이 아니라
|
|
124
|
+
* 그 요소의 `*.update` 에 `names`/`texts` 를 준다 — 문구가 **실제로 바뀐 칸**의 표식만 해소된다.
|
|
125
|
+
* 다국어 그룹에서만 받는다 · 그 칸에 표식이 없으면 거부한다(읽은 뒤 사람이 이미 정리했을 수 있다).
|
|
126
|
+
*/
|
|
127
|
+
| {
|
|
128
|
+
kind: 'translation.confirm';
|
|
129
|
+
id: string;
|
|
130
|
+
locale: string;
|
|
131
|
+
}
|
|
114
132
|
/** 요소 제거(카테고리 무관 — 도형·연결 균일, 부착 연결은 연쇄 제거). */
|
|
115
133
|
| {
|
|
116
134
|
kind: 'element.remove';
|
|
@@ -120,5 +138,5 @@ export type SymbolicOp =
|
|
|
120
138
|
* 심볼릭 op 종류의 닫힌 집합(단일 출처). resolver·JSON Schema(`schema.ts`)가 공유한다.
|
|
121
139
|
* 아래 컴파일타임 단언이 이 튜플과 `SymbolicOp['kind']` 의 일치를 강제 — 한쪽만 늘리면 타입 에러.
|
|
122
140
|
*/
|
|
123
|
-
export declare const SYMBOLIC_OP_KINDS: readonly ["participant.add", "participant.update", "node.add", "node.update", "sequenceFlow.add", "sequenceFlow.update", "messageFlow.add", "messageFlow.update", "dataStore.add", "dataStore.update", "dataAssociation.add", "association.add", "annotation.add", "annotation.update", "group.add", "group.update", "element.remove"];
|
|
141
|
+
export declare const SYMBOLIC_OP_KINDS: readonly ["participant.add", "participant.update", "node.add", "node.update", "sequenceFlow.add", "sequenceFlow.update", "messageFlow.add", "messageFlow.update", "dataStore.add", "dataStore.update", "dataAssociation.add", "association.add", "annotation.add", "annotation.update", "group.add", "group.update", "translation.confirm", "element.remove"];
|
|
124
142
|
export type SymbolicOpKind = (typeof SYMBOLIC_OP_KINDS)[number];
|