@g1cloud/bpmn-modeler-next 5.0.0-beta.8 → 5.0.0-beta.81
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 +21 -0
- package/dist/adapter/i18nBackfill.d.ts +11 -3
- package/dist/adapter/translationLocaleCopy.d.ts +11 -0
- package/dist/adapter/translationLocaleRestore.d.ts +86 -0
- package/dist/agent/agentBatch.d.ts +17 -1
- package/dist/agent/agentReplay.d.ts +36 -0
- package/dist/agent/describeProcess.d.ts +29 -2
- package/dist/agent/generatedIds.d.ts +18 -0
- package/dist/agent/geometryAudit.d.ts +46 -1
- package/dist/agent/resolver/annotationSize.d.ts +12 -0
- package/dist/agent/resolver/documentIndex.d.ts +12 -0
- package/dist/agent/resolver/index.d.ts +28 -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 +72 -5
- package/dist/agent/resolver/routeRepair.d.ts +172 -4
- 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 +16903 -14041
- package/dist/bpmn-modeler.umd.cjs +106 -107
- package/dist/command/annotationExactResize.d.ts +30 -0
- package/dist/command/setTranslations.d.ts +42 -0
- package/dist/command/translationCommands.d.ts +11 -0
- package/dist/command/undoEpisode.d.ts +7 -0
- package/dist/core/ir.d.ts +48 -1
- package/dist/editor/controller.d.ts +14 -1
- package/dist/editor/editLock.d.ts +9 -0
- package/dist/headless/dom.d.ts +2 -0
- package/dist/headless/modeler.d.ts +22 -2
- package/dist/index.d.ts +7 -0
- package/dist/view/BpmnModelerView.vue.d.ts +7 -0
- package/dist/view/headlessReplay.d.ts +63 -0
- package/dist/view/i18nDisplay.d.ts +18 -6
- package/dist/view/minimap.d.ts +25 -0
- package/package.json +3 -2
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 주석 resize 의 정확한 크기 (B-209) — **resolver 가 표시한** `shape.resize` 만 bpmn-js 높이 스냅 뒤에 요청 크기로 되돌린다.
|
|
3
|
+
*
|
|
4
|
+
* bpmn-js 18.23 `TextAnnotationBehavior` 는 주석 하나의 프로그램 resize 마다 높이를 **그 환경의 측정 × 설계 언어 문구**로
|
|
5
|
+
* 다시 맞추고 최소 40(`MIN_TEXT_ANNOTATION_HEIGHT`)으로 둔다 — 우회 힌트(`autoResize`)도 강제로 끈다. 그래서 resolver 의
|
|
6
|
+
* 주석 상자(`agent/resolver/annotationSize` — 문서 언어 전부 · diagram-js 줄바꿈 · 한자 1em)를 `annotation.update` 에서
|
|
7
|
+
* 그대로 쓸 길이 공개 API 에 없었다(폭만 쓰고 높이를 스냅에 맡기면 로컬 말뭉치에서 ja 38 · ko 19 가 넘쳤다 —
|
|
8
|
+
* `ledger/backlog.md` §부록 B-209). 이 모듈이 스냅 **뒤**(우선순위 500)에 요청 크기를 다시 놓는다.
|
|
9
|
+
*
|
|
10
|
+
* 🔴 **힌트(`ANNOTATION_EXACT_BOUNDS_HINT`)가 있는 resize 만** 손댄다 — 사람의 GUI 크기 조절 · 문구 편집과 다른 경로는
|
|
11
|
+
* bpmn-js 그대로다. 힌트 값 = 요청 바운즈(스냅이 `context.newBounds` 를 새 객체로 바꾸므로 원래 값을 힌트에 싣는다).
|
|
12
|
+
* redo 는 preExecute 를 다시 타지 않고 저장된 `newBounds` 로 실행하므로 정확한 크기가 그대로 돌아온다.
|
|
13
|
+
*
|
|
14
|
+
* ⚠ **bpmn-js 내부 동작에 기댄다**(스냅이 `shape.resize` preExecute · 기본 우선순위 1000) — pin 상향 게이트 =
|
|
15
|
+
* `annotationExactResize.test.ts`(스냅이 다른 단계로 옮겨지면 그 테스트가 깨진다). 헤드리스 기본 셋 · `BpmnModelerView`
|
|
16
|
+
* 양쪽에 등록한다 — 턴 끝 재실행(G4 B′)이 서버와 같은 크기를 내야 한다.
|
|
17
|
+
*/
|
|
18
|
+
type Any = any;
|
|
19
|
+
/** `modeling.resizeShape(shape, bounds, undefined, { [ANNOTATION_EXACT_BOUNDS_HINT]: bounds })`. */
|
|
20
|
+
export declare const ANNOTATION_EXACT_BOUNDS_HINT = "bwlExactAnnotationBounds";
|
|
21
|
+
export declare class AnnotationExactResize {
|
|
22
|
+
static $inject: string[];
|
|
23
|
+
constructor(eventBus: Any);
|
|
24
|
+
}
|
|
25
|
+
/** bpmn-js 모듈 — 서비스 이름 = `annotationExactResize`. 헤드리스 기본 셋과 `BpmnModelerView` 가 붙인다. */
|
|
26
|
+
export declare const AnnotationExactResizeModule: {
|
|
27
|
+
__init__: string[];
|
|
28
|
+
annotationExactResize: (string | typeof AnnotationExactResize)[];
|
|
29
|
+
};
|
|
30
|
+
export {};
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
/** 커맨드 이름 — bwl 소유 네임스페이스(`bwl.updateTranslation` 과 같은 소유권 경계). */
|
|
2
|
+
export declare const SET_TRANSLATIONS_COMMAND = "bwl.setTranslations";
|
|
3
|
+
type Any = any;
|
|
4
|
+
/** 확인 요청 표식 한 건의 값 — moddle 객체와 무관한 비교 단위. */
|
|
5
|
+
export interface ReviewRequestValue {
|
|
6
|
+
locale: string;
|
|
7
|
+
sourceLocale?: string;
|
|
8
|
+
previous: string;
|
|
9
|
+
}
|
|
10
|
+
export interface SetTranslationsContext {
|
|
11
|
+
element: Any;
|
|
12
|
+
/**
|
|
13
|
+
* 쓸 문구 — 문서 언어 **전부**(validator 가 보장한다). `undefined` = 문구를 쓰지 않는다(확인만) ·
|
|
14
|
+
* `null` = 라벨 제거(문서 언어 칸과 표식을 전부 걷는다 — `name` 은 하강이 이미 지웠다).
|
|
15
|
+
*/
|
|
16
|
+
texts?: Record<string, string> | null;
|
|
17
|
+
/** 문구를 바꾸지 않고 해소할 확인 요청의 언어들(`translation.confirm`). */
|
|
18
|
+
confirm?: string[];
|
|
19
|
+
designLocale: string;
|
|
20
|
+
/** 문서 언어(설계 + 병기). */
|
|
21
|
+
locales: string[];
|
|
22
|
+
/** 루트 `xml:lang`. */
|
|
23
|
+
rootLang?: string;
|
|
24
|
+
/** 배치 직전 상태 — 「바뀌었나」 판정과 표식의 출발점. 새 요소는 둘 다 비어 있다. */
|
|
25
|
+
before: {
|
|
26
|
+
texts: Record<string, string>;
|
|
27
|
+
requests: ReviewRequestValue[];
|
|
28
|
+
};
|
|
29
|
+
}
|
|
30
|
+
interface ExecutedContext extends SetTranslationsContext {
|
|
31
|
+
undo: Array<() => void>;
|
|
32
|
+
}
|
|
33
|
+
export declare class SetTranslationsHandler {
|
|
34
|
+
private moddle;
|
|
35
|
+
static $inject: string[];
|
|
36
|
+
constructor(moddle: Any);
|
|
37
|
+
execute(ctx: ExecutedContext): Any[];
|
|
38
|
+
revert(ctx: ExecutedContext): Any[];
|
|
39
|
+
}
|
|
40
|
+
/** 요소의 확인 요청 표식을 비교 단위 값으로 읽는다(배치 직전 스냅샷용). */
|
|
41
|
+
export declare function reviewRequestValuesOf(bo: Any): ReviewRequestValue[];
|
|
42
|
+
export {};
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
type Any = any;
|
|
2
|
+
export declare class TranslationCommands {
|
|
3
|
+
static $inject: string[];
|
|
4
|
+
constructor(commandStack: Any);
|
|
5
|
+
}
|
|
6
|
+
/** bpmn-js 모듈 — 서비스 이름 = `translationCommands`. 헤드리스 기본 셋(`HEADLESS_BPMN_MODULES`)에 들어 있다. */
|
|
7
|
+
export declare const TranslationCommandsModule: {
|
|
8
|
+
__init__: string[];
|
|
9
|
+
translationCommands: (string | typeof TranslationCommands)[];
|
|
10
|
+
};
|
|
11
|
+
export {};
|
|
@@ -8,3 +8,10 @@ export declare const UNDO_EPISODE_COMMAND = "bwl.undoEpisode";
|
|
|
8
8
|
* 호출자(resolver `applyBpmnOps`)의 원자성 2차 방어가 이 경로를 쓴다.
|
|
9
9
|
*/
|
|
10
10
|
export declare function executeAsUndoEpisode(commandStack: CommandStack, run: () => void): void;
|
|
11
|
+
/** 다음에 쌓일 액션의 자리 — 합치기의 시작 표식. */
|
|
12
|
+
export declare function undoStepMark(commandStack: CommandStack): number;
|
|
13
|
+
/**
|
|
14
|
+
* `mark` 이후 **실행된** 액션(지금 `_stackIdx` 까지)을 한 undo 단계로 합친다. 되감긴(redo 쪽) 액션은 건드리지 않는다.
|
|
15
|
+
* @returns 합친 액션 수(0 = 그 사이 실행된 것이 없다)
|
|
16
|
+
*/
|
|
17
|
+
export declare function mergeUndoSteps(commandStack: CommandStack, mark: number): number;
|
package/dist/core/ir.d.ts
CHANGED
|
@@ -64,9 +64,35 @@ export declare function isIrEventDefinition(v: unknown): v is IrEventDefinition;
|
|
|
64
64
|
* 어휘 안의 것일 때만** 값을 낸다 — 다중 정의(BPMN 의 multiple 이벤트)와 어휘 밖 정의는 undefined.
|
|
65
65
|
*/
|
|
66
66
|
export declare function irEventDefinitionOf(definitionTypes: readonly string[]): IrEventDefinition | undefined;
|
|
67
|
+
/**
|
|
68
|
+
* **문구 로케일 어휘**(B-4 ④ · 2026-10-02) — 다국어 그룹의 op 가 문구마다 붙이는 로케일의 닫힌 집합.
|
|
69
|
+
*
|
|
70
|
+
* 🔴 **열린 맵이 아니라 닫힌 집합인 이유** — op 스키마는 Anthropic 엄격 서브셋을 지킨다(`strictSubset.ts`)는데
|
|
71
|
+
* 그 서브셋은 `additionalProperties` 에 false 밖에 못 쓴다. 로케일을 키로 받는 맵은 **키를 열거해야만** 표현된다.
|
|
72
|
+
* 값은 호스트 그룹 설정의 선택지(`GROUP_DOC_LOCALES` = ko · en · ja · zh)와 같다 — 🔴 **호스트 선택지는 이 집합의
|
|
73
|
+
* 부분집합이어야 한다**(밖의 언어를 문서 언어로 켜면 에이전트가 그 칸을 스키마상 쓸 수 없어 「전 언어 필수」를
|
|
74
|
+
* 영원히 못 채운다). 늘릴 때는 additive 다(불변식 5).
|
|
75
|
+
*
|
|
76
|
+
* 실제로 요구되는 언어는 이 집합이 아니라 **그 그룹의 문서 언어**(설계 + 병기)다 — validator 가 집행한다.
|
|
77
|
+
*/
|
|
78
|
+
export declare const IR_TEXT_LOCALES: readonly ["ko", "en", "ja", "zh"];
|
|
79
|
+
export type IrTextLocale = (typeof IR_TEXT_LOCALES)[number];
|
|
80
|
+
export declare function isIrTextLocale(v: unknown): v is IrTextLocale;
|
|
81
|
+
/**
|
|
82
|
+
* 로케일 → 문구 (B-4 ④). 다국어 그룹에서 평문 `name`/`text` 대신 쓰는 짝 필드(`names`/`texts`)의 형태다.
|
|
83
|
+
*
|
|
84
|
+
* - **write** — 그 그룹의 문서 언어(설계 + 병기)를 **전부** 담아야 한다(빠지거나 밖의 언어면 거부). 평문과 함께
|
|
85
|
+
* 주면 모호해 거부한다(🔁 A-5 `condition-name-conflict`). `name` 은 설계 언어 문구로 하강한다.
|
|
86
|
+
* - **read** — 문서 언어 중 **문구가 있는 칸만** 담는다. 빠진 키 = 그 언어로는 미번역이다.
|
|
87
|
+
*
|
|
88
|
+
* 기능이 꺼진 그룹(문서 언어 미설정)은 지금처럼 평문만 쓴다 — 이 필드를 주면 거부한다.
|
|
89
|
+
*/
|
|
90
|
+
export type IrLocaleTexts = Partial<Record<IrTextLocale, string>>;
|
|
67
91
|
export interface IrLane {
|
|
68
92
|
id: string;
|
|
69
93
|
name?: string;
|
|
94
|
+
/** 다국어 그룹의 이름(B-4 ④ — `IrLocaleTexts`). `name` 과 동시 지정 금지. */
|
|
95
|
+
names?: IrLocaleTexts;
|
|
70
96
|
}
|
|
71
97
|
/**
|
|
72
98
|
* 풀(participant). 레인은 풀 정의에 선언하고 노드가 `lane` 인자로 배정된다(A-3) —
|
|
@@ -75,6 +101,8 @@ export interface IrLane {
|
|
|
75
101
|
export interface IrParticipant {
|
|
76
102
|
id: string;
|
|
77
103
|
name?: string;
|
|
104
|
+
/** 다국어 그룹의 이름(B-4 ④ — `IrLocaleTexts`). `name` 과 동시 지정 금지. */
|
|
105
|
+
names?: IrLocaleTexts;
|
|
78
106
|
/** true 면 내부 프로세스 없는 블랙박스 풀 */
|
|
79
107
|
blackBox?: boolean;
|
|
80
108
|
lanes?: IrLane[];
|
|
@@ -83,6 +111,8 @@ export interface IrNode {
|
|
|
83
111
|
id: string;
|
|
84
112
|
type: IrFlowNodeType;
|
|
85
113
|
name?: string;
|
|
114
|
+
/** 다국어 그룹의 이름(B-4 ④ — `IrLocaleTexts`). `name` 과 동시 지정 금지. */
|
|
115
|
+
names?: IrLocaleTexts;
|
|
86
116
|
/** 소속 풀 (협업 문서) */
|
|
87
117
|
participant?: string;
|
|
88
118
|
/** 소속 레인 (A-3) */
|
|
@@ -112,6 +142,11 @@ export interface IrSequenceFlow {
|
|
|
112
142
|
source: string;
|
|
113
143
|
target: string;
|
|
114
144
|
name?: string;
|
|
145
|
+
/**
|
|
146
|
+
* 다국어 그룹의 이름(B-4 ④ — `IrLocaleTexts`). 🔴 **다국어 그룹의 조건 라벨도 이것이다** — `condition.label` 은
|
|
147
|
+
* name 채널의 별칭이라(A-5) 평문 하나로는 언어를 못 싣는다. 그 그룹에서 `condition` 을 주면 거부한다.
|
|
148
|
+
*/
|
|
149
|
+
names?: IrLocaleTexts;
|
|
115
150
|
condition?: IrFlowCondition;
|
|
116
151
|
}
|
|
117
152
|
export interface IrMessageFlow {
|
|
@@ -119,10 +154,14 @@ export interface IrMessageFlow {
|
|
|
119
154
|
source: string;
|
|
120
155
|
target: string;
|
|
121
156
|
name?: string;
|
|
157
|
+
/** 다국어 그룹의 이름(B-4 ④ — `IrLocaleTexts`). `name` 과 동시 지정 금지. */
|
|
158
|
+
names?: IrLocaleTexts;
|
|
122
159
|
}
|
|
123
160
|
export interface IrDataStore {
|
|
124
161
|
id: string;
|
|
125
162
|
name?: string;
|
|
163
|
+
/** 다국어 그룹의 이름(B-4 ④ — `IrLocaleTexts`). `name` 과 동시 지정 금지. */
|
|
164
|
+
names?: IrLocaleTexts;
|
|
126
165
|
}
|
|
127
166
|
/** 데이터 입출력 연관 (노드 ↔ 데이터 스토어, 방향 = source→target) */
|
|
128
167
|
export interface IrDataAssociation {
|
|
@@ -133,7 +172,13 @@ export interface IrDataAssociation {
|
|
|
133
172
|
}
|
|
134
173
|
export interface IrTextAnnotation {
|
|
135
174
|
id: string;
|
|
136
|
-
|
|
175
|
+
/**
|
|
176
|
+
* 본문. read 는 늘 낸다(다국어 그룹이면 설계 언어 문구). write 는 이것 또는 `texts` 중 **하나**가 필수다 —
|
|
177
|
+
* 다국어 그룹은 `texts`, 기능이 꺼진 그룹은 `text`(B-4 ④ · 종전엔 늘 필수였다).
|
|
178
|
+
*/
|
|
179
|
+
text?: string;
|
|
180
|
+
/** 다국어 그룹의 본문(B-4 ④ — `IrLocaleTexts`). `text` 와 동시 지정 금지. */
|
|
181
|
+
texts?: IrLocaleTexts;
|
|
137
182
|
}
|
|
138
183
|
/** 연관선 (주석 ↔ 요소) */
|
|
139
184
|
export interface IrAssociation {
|
|
@@ -145,6 +190,8 @@ export interface IrAssociation {
|
|
|
145
190
|
export interface IrGroup {
|
|
146
191
|
id: string;
|
|
147
192
|
name?: string;
|
|
193
|
+
/** 다국어 그룹의 이름(B-4 ④ — `IrLocaleTexts`). `name` 과 동시 지정 금지. */
|
|
194
|
+
names?: IrLocaleTexts;
|
|
148
195
|
members?: string[];
|
|
149
196
|
}
|
|
150
197
|
/** describeProcess 가 반환하는 문서 전체 파생 뷰의 골격 */
|
|
@@ -2,6 +2,7 @@ import { InjectionKey, Ref } from 'vue';
|
|
|
2
2
|
import { default as Modeler } from 'bpmn-js/lib/Modeler';
|
|
3
3
|
import { CommandSeam } from '../command/commandSeam';
|
|
4
4
|
import { ApplyBatchOutcome, BpmnOpBatch } from '../agent/agentBatch';
|
|
5
|
+
import { BpmnReplayBatch, ReplayAgentTurnOutcome } from '../agent/agentReplay';
|
|
5
6
|
import { GeometryFinding } from '../agent/geometryAudit';
|
|
6
7
|
import { SemanticIssue } from '../agent/semanticAudit';
|
|
7
8
|
import { I18nDisplayConfig } from '../view/i18nDisplay';
|
|
@@ -53,9 +54,10 @@ export interface ImportXmlResult {
|
|
|
53
54
|
*
|
|
54
55
|
* **M3-2 에이전트 턴 통합** — 시블링 포크 A·B 대칭:
|
|
55
56
|
* - 적용은 단일 undo 에피소드(`agent/agentBatch` → `command/undoEpisode`)
|
|
56
|
-
* - 턴 중 사용자 편집 잠금은 `setEditable(false)` — 잠금은 **사용자
|
|
57
|
+
* - 턴 중 사용자 편집 잠금은 `setEditable(false)` — 잠금은 **사용자 편집 입구만** 막고
|
|
57
58
|
* 프로그램 경로(modeling API)는 막지 않는다. 그래서 잠긴 상태에서도 배치 적용이 된다
|
|
58
59
|
* (에이전트가 쓰는 동안 사용자를 막는 것이 목적이므로 우회 장치가 따로 필요 없다).
|
|
60
|
+
* 탐색(선택 · 팬 · 줌 · 미니맵)은 잠금 중에도 된다(B-145 · `editor/editLock`).
|
|
59
61
|
*/
|
|
60
62
|
export interface BpmnEditorController extends CommandSeam {
|
|
61
63
|
/** 뷰 마운트 완료(@ready) 후 호출 — dirty 추적 구독의 수명 시작점. */
|
|
@@ -68,8 +70,19 @@ export interface BpmnEditorController extends CommandSeam {
|
|
|
68
70
|
/**
|
|
69
71
|
* 에이전트 배치 적용 — 단일 undo 에피소드. `applied` 의 `xml` 이 호스트 영속 페이로드다
|
|
70
72
|
* (내부적으로 `saveXml()` 경로를 타므로 dirty 도 리셋된다 = "영속 진실로 내보낸 시점").
|
|
73
|
+
* 다국어 설정(`configureI18n`)이 걸려 있으면 그것이 그 문서의 문서 언어다 — op 의 문구는 `names`/`texts` 로
|
|
74
|
+
* 문서 언어 전부를 요구하고 평문은 거부된다(B-4 ④).
|
|
71
75
|
*/
|
|
72
76
|
applyAgentBatch(batch: BpmnOpBatch, currentVersion: number): Promise<ApplyBatchOutcome>;
|
|
77
|
+
/**
|
|
78
|
+
* 턴 끝 재실행(G4 B′ · `agent/agentReplay`) — 서버가 이 턴에 커밋한 배치들을 헤드리스 동등 실행 환경
|
|
79
|
+
* (`view/headlessReplay` · `BpmnModelerView` 가 붙인다)에서 다시 하강해 `expectedXml` 과 **바이트로 같을 때만** 남긴다 —
|
|
80
|
+
* Ctrl+Z 1회 = 턴 전 · 턴 전 사람 undo 이력 보존. `diverged` 면 재실행 전으로 되감겨 있다 → 호스트는
|
|
81
|
+
* `importXml(expectedXml)` 로 떨어진다.
|
|
82
|
+
* 🔴 재실행 동안 `dirty` 를 움직이지 않는다 — 결과는 서버와 같은 문서라 드래프트를 내면 안 된다(빈 쓰기 · 사람 편집으로 찍힌다).
|
|
83
|
+
* 다국어 설정(`configureI18n`)이 곧 그 문서의 문서 언어다(서버와 같은 값이어야 같은 하강을 탄다).
|
|
84
|
+
*/
|
|
85
|
+
replayAgentTurn(batches: readonly BpmnReplayBatch[], expectedXml: string): Promise<ReplayAgentTurnOutcome>;
|
|
73
86
|
/** 사용자 입력 잠금 — 에이전트 턴 시작/종료에서 호출. 프로그램 경로는 영향 없음. */
|
|
74
87
|
setEditable(editable: boolean): void;
|
|
75
88
|
readonly editable: Readonly<Ref<boolean>>;
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { default as Modeler } from 'bpmn-js/lib/Modeler';
|
|
2
|
+
/** 잠긴 동안 캔버스 컨테이너에 붙는 클래스 — 뷰가 크기 조절 · 꺾임점 손잡이를 숨긴다(눌러도 안 되는 손잡이를 안 보이게). */
|
|
3
|
+
export declare const EDIT_LOCKED_CLASS = "bwl-edit-locked";
|
|
4
|
+
export interface EditLock {
|
|
5
|
+
readonly locked: boolean;
|
|
6
|
+
set(locked: boolean): void;
|
|
7
|
+
}
|
|
8
|
+
/** 그 modeler 의 잠금 레버 — 처음 부를 때 입구 리스너를 단다. */
|
|
9
|
+
export declare function editLockOf(modeler: Modeler): EditLock;
|
package/dist/headless/dom.d.ts
CHANGED
|
@@ -40,6 +40,8 @@ export declare const HEADLESS_TEXT_METRICS: {
|
|
|
40
40
|
readonly ascentEm: 0.9;
|
|
41
41
|
readonly descentEm: 0.25;
|
|
42
42
|
};
|
|
43
|
+
/** 위 전각 판정 — 주석 상자 측정(`agent/resolver/annotationSize`)이 같은 문자 클래스를 쓴다. */
|
|
44
|
+
export declare function isFullWidthChar(ch: string): boolean;
|
|
43
45
|
/** 폰트 크기(px)에서 텍스트 폭을 근사한다 — 심의 `measureText` 와 대조 테스트가 공유하는 단일 출처. */
|
|
44
46
|
export declare function approximateTextWidth(text: string, fontSizePx: number): number;
|
|
45
47
|
/**
|
|
@@ -3,11 +3,31 @@ import { ModdleExtensions, ModuleDeclaration } from 'bpmn-js/lib/BaseViewer';
|
|
|
3
3
|
import { default as CoreModule } from 'bpmn-js/lib/core';
|
|
4
4
|
import { default as ModelingModule } from 'bpmn-js/lib/features/modeling';
|
|
5
5
|
import { default as AutoPlaceModule } from 'bpmn-js/lib/features/auto-place';
|
|
6
|
+
import { default as AutoResizeModule } from 'bpmn-js/lib/features/auto-resize';
|
|
6
7
|
import { HeadlessDomOptions } from './dom';
|
|
7
|
-
/**
|
|
8
|
+
/**
|
|
9
|
+
* 헤드리스 하강에 필요한 최소 모듈 셋 — 이 목록이 곧 "에디터 없이 성립하는 표면"의 정의다.
|
|
10
|
+
* `TranslationCommandsModule` = 번역 칸 커맨드(B-4 ④ — 다국어 그룹의 에이전트 op 가 쓴다 · 그래픽스 무관).
|
|
11
|
+
* `TranslationLocaleCopyModule` = 타입 전환이 번역 칸 언어를 잃지 않게(B-156 — `BpmnModelerView` 와 같은 모듈).
|
|
12
|
+
* `AnnotationImportDockingModule` = 주석 연관선의 가져오기 도킹 원점이 주석 밖이면 중심으로(B-139 — `BpmnModelerView` 와 같은 모듈).
|
|
13
|
+
* `AnnotationExactResizeModule` = resolver 가 표시한 주석 resize 를 bpmn-js 높이 스냅 뒤 요청 크기로(B-209 — `BpmnModelerView` 와 같은 모듈).
|
|
14
|
+
* `AutoResizeModule` = 내용이 풀 · 레인 경계를 넘으면 컨테이너를 키운다(B-176 — `Modeler` 에 있는 bpmn-js 모듈 · 위 헤더).
|
|
15
|
+
*/
|
|
8
16
|
export declare const HEADLESS_BPMN_MODULES: readonly [typeof CoreModule, {
|
|
9
17
|
translate: (string | typeof import('diagram-js/lib/i18n/translate/translate').default)[];
|
|
10
|
-
}, typeof ModelingModule, typeof AutoPlaceModule
|
|
18
|
+
}, typeof ModelingModule, typeof AutoPlaceModule, typeof AutoResizeModule, {
|
|
19
|
+
__init__: string[];
|
|
20
|
+
translationCommands: (string | typeof import('..').TranslationCommands)[];
|
|
21
|
+
}, {
|
|
22
|
+
__init__: string[];
|
|
23
|
+
translationLocaleCopy: (string | typeof import('../adapter/translationLocaleCopy').TranslationLocaleCopy)[];
|
|
24
|
+
}, {
|
|
25
|
+
__init__: string[];
|
|
26
|
+
annotationImportDocking: (string | typeof import('../adapter/annotationImportDocking').AnnotationImportDocking)[];
|
|
27
|
+
}, {
|
|
28
|
+
__init__: string[];
|
|
29
|
+
annotationExactResize: (string | typeof import('../command/annotationExactResize').AnnotationExactResize)[];
|
|
30
|
+
}];
|
|
11
31
|
export interface HeadlessBpmnModelerOptions {
|
|
12
32
|
/** 추가 모듈(호스트 확장). 기본 셋을 대체하지 않고 덧붙인다. */
|
|
13
33
|
additionalModules?: ModuleDeclaration[];
|
package/dist/index.d.ts
CHANGED
|
@@ -4,6 +4,8 @@ export * from './core/hints';
|
|
|
4
4
|
export * from './command/commandSeam';
|
|
5
5
|
export * from './command/undoEpisode';
|
|
6
6
|
export * from './command/updateTranslation';
|
|
7
|
+
export * from './command/setTranslations';
|
|
8
|
+
export * from './command/translationCommands';
|
|
7
9
|
export * from './agent/symbolicOp';
|
|
8
10
|
export * from './agent/schema';
|
|
9
11
|
export * from './agent/resolver';
|
|
@@ -12,14 +14,19 @@ export * from './agent/geometryAudit';
|
|
|
12
14
|
export * from './agent/semanticAudit';
|
|
13
15
|
export * from './agent/elementDiff';
|
|
14
16
|
export * from './agent/agentBatch';
|
|
17
|
+
export * from './agent/agentReplay';
|
|
18
|
+
export * from './agent/generatedIds';
|
|
15
19
|
export * from './editor/controller';
|
|
16
20
|
export * from './adapter/i18n';
|
|
17
21
|
export * from './adapter/i18nBackfill';
|
|
22
|
+
export * from './adapter/translationLocaleRestore';
|
|
18
23
|
export * from './adapter/extensions';
|
|
19
24
|
export * from './adapter/xml';
|
|
20
25
|
export * from './headless';
|
|
21
26
|
export * from './view/validationDisplay';
|
|
22
27
|
export * from './view/i18nDisplay';
|
|
28
|
+
export * from './view/headlessReplay';
|
|
29
|
+
export * from './view/modelerViewModules';
|
|
23
30
|
export { default as BpmnModelerView } from './view/BpmnModelerView.vue';
|
|
24
31
|
export { default as BpmnValidationPanel } from './view/BpmnValidationPanel.vue';
|
|
25
32
|
export { default as BpmnDisplayLocaleSwitcher } from './view/BpmnDisplayLocaleSwitcher.vue';
|
|
@@ -1,6 +1,13 @@
|
|
|
1
1
|
import { default as Modeler } from 'bpmn-js/lib/Modeler';
|
|
2
2
|
type __VLS_Props = {
|
|
3
3
|
xml?: string;
|
|
4
|
+
/**
|
|
5
|
+
* 라벨 폰트(CSS `font-family`) — 줄바꿈을 **재는** 폰트와 **그리는** 폰트를 함께 정한다(bpmn-js `textRenderer`).
|
|
6
|
+
* 마운트 때 한 번 읽는다(bpmn-js 설정은 생성 시점에 고정된다). 미지정 = bpmn-js 기본(`Arial, sans-serif`).
|
|
7
|
+
* 🔴 CSS 로 라벨 폰트만 덮지 말 것 — diagram-js 는 줄 폭을 캔버스 `measureText` 로 재므로 CSS 가 닿지 않아,
|
|
8
|
+
* 잰 폭과 그린 폭이 갈려 라벨이 도형 밖으로 밀린다(B-160 · PDF 인쇄 페이지 실측 ja 0.75 · ko 0.84).
|
|
9
|
+
*/
|
|
10
|
+
labelFontFamily?: string;
|
|
4
11
|
};
|
|
5
12
|
declare function importXml(xml: string): Promise<{
|
|
6
13
|
warnings: string[];
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
type Any = any;
|
|
2
|
+
export declare class HeadlessReplay {
|
|
3
|
+
private eventBus;
|
|
4
|
+
private elementRegistry;
|
|
5
|
+
private textRenderer;
|
|
6
|
+
private graphicsFactory;
|
|
7
|
+
private canvas;
|
|
8
|
+
private bpmnjs;
|
|
9
|
+
static $inject: string[];
|
|
10
|
+
private active;
|
|
11
|
+
/** 재투영 오라클 — 처음 쓸 때 만든다(사람 편집만 하는 화면엔 비용이 없다). */
|
|
12
|
+
private shadow;
|
|
13
|
+
private shadowContainer;
|
|
14
|
+
constructor(eventBus: Any, elementRegistry: Any, textRenderer: Any, graphicsFactory: Any, canvas: Any, bpmnjs: Any);
|
|
15
|
+
/** 창 안인가 — 그리드 스냅 가드가 본다. */
|
|
16
|
+
isActive(): boolean;
|
|
17
|
+
/**
|
|
18
|
+
* `run` 을 창 안에서 돌린다(동기). 열 때 측정 근사 + 재투영, 닫을 때 측정 원복 + 라벨 재측정 + 다시 그리기.
|
|
19
|
+
* 중첩 금지 — 창 안의 창은 측정 원복 순서가 꼬인다.
|
|
20
|
+
*/
|
|
21
|
+
run<T>(run: () => T): T;
|
|
22
|
+
/**
|
|
23
|
+
* 배치 경계 — 서버는 배치마다 저장(`saveXML.start` = DI 정렬)하고 그 XML 을 새로 import 한다. 그 둘을 재현한다.
|
|
24
|
+
* 창 안에서만 부른다. 🔴 앞 배치는 **자기 커맨드를 끝낸 뒤**여야 한다(라벨 DI 가 그때 써진다 — `agent/agentReplay`).
|
|
25
|
+
*/
|
|
26
|
+
atBatchBoundary(): void;
|
|
27
|
+
/** ③ — 그림자 import 의 메모리 상태를 라이브 요소에 옮겨 적는다(의미론 · DI · 커맨드 스택 무변 · 이벤트 없음). */
|
|
28
|
+
private reproject;
|
|
29
|
+
/** import 의 외부 라벨 보정(`BpmnImporter.addLabel`)을 **지금 측정으로** 다시 한다 — 메모리만. */
|
|
30
|
+
private relabel;
|
|
31
|
+
/** 라벨 하나를 지금 측정으로 다시 잰다(메모리만 · 이벤트 없음). @returns 바뀌었는가 */
|
|
32
|
+
private remeasure;
|
|
33
|
+
/** ⑤ — undo · redo 가 바꾼 요소의 외부 라벨을 실폰트로 다시 재고, 바뀐 것만 다시 그린다(`elements.changed` 없이). */
|
|
34
|
+
private remeasureLabelsOf;
|
|
35
|
+
/** SVG 순서(z-order)를 메모리 형제 순서에 맞춘다 — 재투영이 형제 순서를 바꿨다. 메모리는 건드리지 않는다. */
|
|
36
|
+
private syncGraphicsOrder;
|
|
37
|
+
/** 전부 다시 그린다 — 창 안에서 근사 측정으로 그린 문구를 실폰트로. 🔴 `elements.changed` 를 내지 않는다(헤더 ④). */
|
|
38
|
+
private redrawAll;
|
|
39
|
+
private ensureShadow;
|
|
40
|
+
private disposeShadow;
|
|
41
|
+
}
|
|
42
|
+
declare function GuardedGridSnappingAutoPlaceBehavior(this: Any, eventBus: Any, gridSnapping: Any, elementRegistry: Any, headlessReplay: HeadlessReplay): void;
|
|
43
|
+
declare namespace GuardedGridSnappingAutoPlaceBehavior {
|
|
44
|
+
var $inject: string[];
|
|
45
|
+
}
|
|
46
|
+
declare function GuardedGridSnappingLayoutConnectionBehavior(this: Any, eventBus: Any, gridSnapping: Any, modeling: Any, headlessReplay: HeadlessReplay): void;
|
|
47
|
+
declare namespace GuardedGridSnappingLayoutConnectionBehavior {
|
|
48
|
+
var prototype: any;
|
|
49
|
+
var $inject: string[];
|
|
50
|
+
}
|
|
51
|
+
/** 가드를 씌운 원본이 그 이름으로 서 있는가 — 게이트 테스트가 본다(bpmn-js 가 이름을 바꾸면 덮기가 헛돈다). */
|
|
52
|
+
export declare function isGuardedGridSnapping(service: unknown): boolean;
|
|
53
|
+
/**
|
|
54
|
+
* bpmn-js 모듈 — `BpmnModelerView` 가 붙인다. 서비스 이름 = `headlessReplay`. 그리드 스냅 동작 둘을 **같은 이름으로 덮는다**
|
|
55
|
+
* (추가 모듈이 뒤에 실려 이긴다 — bpmn-js 의 `__init__` 이 그 이름으로 우리 정의를 만든다).
|
|
56
|
+
*/
|
|
57
|
+
export declare const HeadlessReplayModule: {
|
|
58
|
+
__init__: string[];
|
|
59
|
+
headlessReplay: (string | typeof HeadlessReplay)[];
|
|
60
|
+
gridSnappingAutoPlaceBehavior: (string | typeof GuardedGridSnappingAutoPlaceBehavior)[];
|
|
61
|
+
gridSnappingLayoutConnectionBehavior: (string | typeof GuardedGridSnappingLayoutConnectionBehavior)[];
|
|
62
|
+
};
|
|
63
|
+
export {};
|
|
@@ -1,8 +1,9 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
1
|
+
import { BpmnDocumentLocales } from '../adapter/i18n';
|
|
2
|
+
/**
|
|
3
|
+
* 다국어 표시 설정 — 문서 언어(`designLocale` = 설계 언어 · `name` 이 따른다 · `companionLocales` = 병기 언어 ·
|
|
4
|
+
* 표시 언어 선택지는 설계 언어 + 이것)에 표시 옵션을 더한다.
|
|
5
|
+
*/
|
|
6
|
+
export interface I18nDisplayConfig extends BpmnDocumentLocales {
|
|
6
7
|
/**
|
|
7
8
|
* 외부 라벨(이벤트 · 게이트웨이 · 흐름 · 그룹)을 표시 문구 폭으로 그린다 — 기본 켬.
|
|
8
9
|
* 끄면 DI 폭(설계 언어 문구 기준)에서 줄바꿈되어 긴 문구가 세로 기둥이 된다(스파이크 F7 — 폭 19 ·
|
|
@@ -26,8 +27,14 @@ export interface I18nDisplayResolution {
|
|
|
26
27
|
export declare const I18N_UNTRANSLATED_CLASS = "i18n-untranslated";
|
|
27
28
|
/** 확인 요청 요소의 그래픽(`djs-element`)에 붙는 클래스. */
|
|
28
29
|
export declare const I18N_REVIEW_REQUESTED_CLASS = "i18n-review-requested";
|
|
30
|
+
/**
|
|
31
|
+
* 표시 문구를 **`elements.changed` 없이** 다시 그린 뒤 내는 이벤트(설정 · 표시 언어 전환). 그래픽을 복제해 들고 있는
|
|
32
|
+
* 소비자(미니맵 — `view/minimap`)는 이것으로 다시 짓는다. 페이로드 없음 — 전량을 다시 그렸다.
|
|
33
|
+
*/
|
|
34
|
+
export declare const I18N_DISPLAY_REDRAWN_EVENT = "i18nDisplay.redrawn";
|
|
29
35
|
type Any = any;
|
|
30
36
|
export declare class I18nDisplay {
|
|
37
|
+
private eventBus;
|
|
31
38
|
private elementRegistry;
|
|
32
39
|
private canvas;
|
|
33
40
|
private textRenderer;
|
|
@@ -63,12 +70,17 @@ export declare class I18nDisplay {
|
|
|
63
70
|
* 이벤트 없이 다시 그린다. 🔴 `elements.changed` 를 쓰면 안 된다 — 임포트가 외부 라벨 요소 크기를
|
|
64
71
|
* 문구 측정값으로 보정해 두고(DI 엔 안 씀 · `BpmnImporter.addLabel`), `shape.changed` 가 나면
|
|
65
72
|
* `BpmnUpdater` 가 그 보정값을 DI 에 쓴다(upstream). 토글 한 번이 문서 전체 라벨 DI 를 고치는 셈이
|
|
66
|
-
* 된다(스파이크 F2 — 그룹 라벨 폭 36 → 31 · 흐름 라벨 22 → 20).
|
|
73
|
+
* 된다(스파이크 F2 — 그룹 라벨 폭 36 → 31 · 흐름 라벨 22 → 20). 대신 전용 이벤트(`I18N_DISPLAY_REDRAWN_EVENT`)를
|
|
74
|
+
* 끝에 한 번 낸다 — 그래픽 복제 소비자(미니맵)가 옛 문구를 들고 남지 않게.
|
|
67
75
|
*/
|
|
68
76
|
private rerenderAll;
|
|
69
77
|
}
|
|
70
78
|
/** bpmn-js 모듈 — `BpmnModelerView` 가 붙인다. 서비스 이름 = `i18nDisplay`. */
|
|
71
79
|
export declare const I18nDisplayModule: {
|
|
80
|
+
__depends__: {
|
|
81
|
+
__init__: string[];
|
|
82
|
+
translationCommands: (string | typeof import('..').TranslationCommands)[];
|
|
83
|
+
}[];
|
|
72
84
|
__init__: string[];
|
|
73
85
|
i18nDisplay: (string | typeof I18nDisplay)[];
|
|
74
86
|
};
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
type Any = any;
|
|
2
|
+
/** 토글 문구 — 접힘 = 여는 단추 · 펼침 = 지도 오른쪽 위의 접는 단추. */
|
|
3
|
+
export declare const MINIMAP_TOGGLE_TITLES: {
|
|
4
|
+
readonly closed: "미니맵";
|
|
5
|
+
readonly open: "접기";
|
|
6
|
+
};
|
|
7
|
+
export declare class MinimapI18n {
|
|
8
|
+
private minimap;
|
|
9
|
+
private canvas;
|
|
10
|
+
static $inject: string[];
|
|
11
|
+
constructor(eventBus: Any, minimap: Any, canvas: Any);
|
|
12
|
+
/** 닫혀 있으면 「열 때 다시 짓기」만 걸어 둔다 — 미니맵 자신이 닫힌 동안의 변경을 그렇게 다룬다. */
|
|
13
|
+
private rebuild;
|
|
14
|
+
private retitle;
|
|
15
|
+
}
|
|
16
|
+
/** bpmn-js 모듈 — `BpmnModelerView` 가 붙인다(헤드리스 경로엔 붙이지 않는다). 처음엔 접혀 있다. */
|
|
17
|
+
export declare const BpmnMinimapModule: {
|
|
18
|
+
__depends__: {
|
|
19
|
+
__init__: string[];
|
|
20
|
+
minimap: [string, unknown];
|
|
21
|
+
}[];
|
|
22
|
+
__init__: string[];
|
|
23
|
+
minimapI18n: (string | typeof MinimapI18n)[];
|
|
24
|
+
};
|
|
25
|
+
export {};
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@g1cloud/bpmn-modeler-next",
|
|
3
3
|
"private": false,
|
|
4
|
-
"version": "5.0.0-beta.
|
|
4
|
+
"version": "5.0.0-beta.81",
|
|
5
5
|
"description": "Vue 3 BPMN document authoring editor (bpmn-js based) with AI agent authoring",
|
|
6
6
|
"type": "module",
|
|
7
7
|
"files": [
|
|
@@ -31,7 +31,8 @@
|
|
|
31
31
|
"bpmn-i18n-moddle": "^0.2.0",
|
|
32
32
|
"bpmn-js": "^18.23.0",
|
|
33
33
|
"bpmn-moddle": "^10.1.0",
|
|
34
|
-
"diagram-js": "^15.23.2"
|
|
34
|
+
"diagram-js": "^15.23.2",
|
|
35
|
+
"diagram-js-minimap": "^5.5.0"
|
|
35
36
|
},
|
|
36
37
|
"devDependencies": {
|
|
37
38
|
"@types/node": "^25.9.2",
|