@bpmn-nova/react 0.3.5-preview → 0.3.7-preview
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/README.md +12 -287
- package/dist/index.d.ts +12 -1
- package/dist/index.js +9 -0
- package/dist/styles.css +5 -0
- package/llms-full.txt +3396 -1747
- package/llms.txt +6 -4
- package/package.json +2 -2
package/README.md
CHANGED
|
@@ -4,7 +4,7 @@ BPMN Nova 的 React 18+ Adapter,提供 Studio、Designer、Viewer、审批轨
|
|
|
4
4
|
|
|
5
5
|
> **English summary:** React 18+ components and refs for BPMN Nova process design, viewing, approval traces, properties, themes, and SVG export.
|
|
6
6
|
|
|
7
|
-
> 当前版本为 `0.3.
|
|
7
|
+
> 当前版本为 `0.3.7-preview`。React 与 React DOM 由宿主工程提供,本包不会替应用选择或升级框架版本。
|
|
8
8
|
|
|
9
9
|

|
|
10
10
|
|
|
@@ -14,29 +14,11 @@ BPMN Nova 的 React 18+ Adapter,提供 Studio、Designer、Viewer、审批轨
|
|
|
14
14
|
npm install @bpmn-nova/react@preview
|
|
15
15
|
```
|
|
16
16
|
|
|
17
|
-
|
|
18
|
-
import '@bpmn-nova/react/styles.css'
|
|
19
|
-
```
|
|
20
|
-
|
|
21
|
-
只安装本包;`@bpmn-nova/studio` 会作为内部依赖自动解析。容器必须有明确高度。
|
|
22
|
-
|
|
23
|
-
TypeScript 类型也从 React 入口导入,不要为了模型类型额外声明 Studio 直依赖:
|
|
17
|
+
只安装本包;匹配版本的 `@bpmn-nova/studio` 会作为依赖自动解析。公共 TypeScript 类型直接从 `@bpmn-nova/react` 导入,不需要为类型额外添加 Studio 直依赖。
|
|
24
18
|
|
|
25
|
-
|
|
26
|
-
import type {
|
|
27
|
-
BpmnNode,
|
|
28
|
-
EdgeType,
|
|
29
|
-
ElementSelection,
|
|
30
|
-
NodeType,
|
|
31
|
-
ProcessModel,
|
|
32
|
-
} from '@bpmn-nova/react'
|
|
33
|
-
```
|
|
34
|
-
|
|
35
|
-
公共类型门面还包含 `BpmnEdge`、`EngineId` 和 `LayoutOptions`。
|
|
36
|
-
|
|
37
|
-
使用代码生成助手或 IDE Agent 接入时,从随包的 `llms.txt` 开始;需要完整接口和定制资料时再读取 `llms-full.txt`。两份文件都包含在 npm tarball 中,不依赖源码仓库可见性。
|
|
19
|
+
CSS 必须显式导入 `@bpmn-nova/react/styles.css`;视觉容器及其父级需要具有可计算高度。
|
|
38
20
|
|
|
39
|
-
##
|
|
21
|
+
## 最小用法
|
|
40
22
|
|
|
41
23
|
```jsx
|
|
42
24
|
import { useRef } from 'react'
|
|
@@ -67,274 +49,17 @@ export function WorkflowEditor({ initialXml }) {
|
|
|
67
49
|
}
|
|
68
50
|
```
|
|
69
51
|
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
`xml`/`model` 是外部替换输入,`onChange` 的 XML 是草稿输出。宿主回写完全相同的导出 XML 不会重新导入或清空撤销历史;切换服务器 revision 或流程时传入不同 XML 会替换模型。Activiti 宿主应显式使用 `engine="activiti"`。
|
|
73
|
-
|
|
74
|
-
## 组合宿主头部与业务属性面板
|
|
75
|
-
|
|
76
|
-
默认 `BpmnStudio` 是完整工作台。下面展示宿主拥有外部面板的接法:通过 `config.ui.regions.right = 'hidden'` 隐藏 Nova Properties,Canvas 获得该轨道的全部宽度。若希望复用 Nova 侧栏布局,使用下文的 `right` Render Prop,不必放到外部。
|
|
77
|
-
|
|
78
|
-
```jsx
|
|
79
|
-
<BpmnStudio
|
|
80
|
-
ref={studioRef}
|
|
81
|
-
xml={xml}
|
|
82
|
-
engine="activiti"
|
|
83
|
-
mode="design"
|
|
84
|
-
allowedModes={['design']}
|
|
85
|
-
config={{
|
|
86
|
-
modeling: { allowedNodeTypes: supportedNodeTypes, allowedEdgeTypes: ['sequenceFlow'] },
|
|
87
|
-
ui: { controlSize: 'medium', regions: { right: 'hidden' } },
|
|
88
|
-
}}
|
|
89
|
-
theme="auto"
|
|
90
|
-
headerStart={({ state, actions }) => (
|
|
91
|
-
<HostProcessIdentity onBack={back} />
|
|
92
|
-
)}
|
|
93
|
-
headerActions={({ actions, mode, ui }) => (
|
|
94
|
-
<HostWorkflowActions
|
|
95
|
-
disabled={mode !== 'design'}
|
|
96
|
-
onValidate={() => actions.validate()}
|
|
97
|
-
onSave={() => saveDraft(actions.exportXml())}
|
|
98
|
-
onPublish={() => publishProcess(actions)}
|
|
99
|
-
/>
|
|
100
|
-
)}
|
|
101
|
-
onChange={handleChange}
|
|
102
|
-
onValidation={(event) => handleValidation(event)}
|
|
103
|
-
onSelectionChange={(selection, element) => {
|
|
104
|
-
setSelectedElement(selection ? element : null)
|
|
105
|
-
}}
|
|
106
|
-
/>
|
|
107
|
-
```
|
|
108
|
-
|
|
109
|
-
`headerStart` 只替换 Nova Brand;`headerActions` 只替换默认“校验 / 导入 / 导出”动作组,适合组合“校验 / 保存 / 发布”;`header` 可完整替换 Header。它们都通过 React Portal 在当前组件树内渲染,保留 Context 和生命周期。默认 Header 的最佳视图只保留在底部缩放区。
|
|
110
|
-
|
|
111
|
-
`actions.validate()` 以 `toolbar` 来源先更新 Nova 默认状态栏,再调用 `onValidation` 并返回 issues;Ref `validate()` 使用 `api` 来源。事件的 `valid` 仅由 error 决定,warning 会保留在 `issues` 中但不默认阻止发布。保存与发布仍由宿主负责。
|
|
112
|
-
|
|
113
|
-
```js
|
|
114
|
-
async function publishProcess(actions) {
|
|
115
|
-
const issues = actions.validate()
|
|
116
|
-
if (issues.some((issue) => issue.level === 'error')) return
|
|
117
|
-
await publishXml(actions.exportXml())
|
|
118
|
-
}
|
|
119
|
-
```
|
|
120
|
-
|
|
121
|
-
宿主属性面板以 `onSelectionChange` 为选择状态来源;它覆盖节点、连线、多选、清空与键盘选择。`onElementClick` 只是点击观察事件,不能代替选择状态。宿主通过稳定 BPMN Element ID 关联业务配置,并自行负责保存、发布、权限与服务端事务。
|
|
122
|
-
|
|
123
|
-
`config` 收拢 `modeling/ui/viewer/export` 静态选项。顶部控件尺寸使用 `config.ui.controlSize`,默认 `medium`,支持 `small`、`medium`、`large` 和 `24px`–`48px`。Render Context 的只读 `ui.controlHeight` 可交给宿主按钮;Element Plus `default`、Ant Design `middle` 都映射到 Nova `medium`。自定义 px 时也可以在宿主 Header Actions CSS 中读取 `--nova-control-height` 等公开变量。
|
|
124
|
-
|
|
125
|
-
```jsx
|
|
126
|
-
<BpmnStudio
|
|
127
|
-
ref={studioRef}
|
|
128
|
-
config={{ ui: { controlSize: '36px' } }}
|
|
129
|
-
headerActions={({ actions, ui }) => (
|
|
130
|
-
<HostActions actions={actions} buttonHeight={ui.controlHeight} />
|
|
131
|
-
)}
|
|
132
|
-
/>
|
|
133
|
-
```
|
|
134
|
-
|
|
135
|
-
Ref 同步提供 `getConfig()` / `setConfig()`;运行时更新 UI、Viewer 或 Export 不重建 Canvas。旧顶层配置继续兼容并标记 Deprecated,同项冲突时显式旧值优先。`config.modeling` 只在内部 Controller 创建时建立节点和连线约束。
|
|
136
|
-
|
|
137
|
-
## 原生右侧内容与折叠
|
|
138
|
-
|
|
139
|
-
`right` Render Prop 仅替换侧栏内容,保留 Nova 的布局与折叠按钮;它高于 Core `slots.right`,通过 Portal 保留宿主 Context。不要同时配置 `regions.right: 'hidden'`,否则自定义内容也隐藏。
|
|
140
|
-
|
|
141
|
-
```jsx
|
|
142
|
-
<BpmnStudio
|
|
143
|
-
ref={studioRef}
|
|
144
|
-
xml={xml}
|
|
145
|
-
config={{ ui: {
|
|
146
|
-
leftPanel: { collapsible: true, defaultCollapsed: false },
|
|
147
|
-
rightPanel: { collapsible: true, defaultCollapsed: false, layout: 'flex' },
|
|
148
|
-
} }}
|
|
149
|
-
onSidebarChange={(event) => console.log(event.side, event.collapsed, event.source)}
|
|
150
|
-
right={({ panelSelection, mode }) => (
|
|
151
|
-
<>
|
|
152
|
-
<header style={{ flex: 'none', padding: 12 }}>业务详情 · {mode}</header>
|
|
153
|
-
<div style={{ flex: 1, minHeight: 0, overflow: 'auto', padding: 12 }}>
|
|
154
|
-
{panelSelection.selectedElement?.id ?? '未选择元素'}
|
|
155
|
-
{/* 填入宿主表单 */}
|
|
156
|
-
</div>
|
|
157
|
-
<footer style={{ flex: 'none', padding: 12 }}>宿主固定操作区</footer>
|
|
158
|
-
</>
|
|
159
|
-
)}
|
|
160
|
-
/>
|
|
161
|
-
```
|
|
162
|
-
|
|
163
|
-
默认 `flex` 由宿主安排内部滚动;`scroll` 由 Nova 滚动整个内容,宿主只填普通内容。父容器仍需可计算高度。收起不卸载内容、不丢失表单/滚动状态、不自动 Fit;左右按钮位于分隔线中点,支持键盘和尊重减少动态效果的 200ms 动画。Shell 容器 ≤720px 时首次默认收起,保留按钮,展开挤压画布而非抽屉,宽窄屏分别记忆状态。
|
|
164
|
-
|
|
165
|
-
Ref 增加 `getSidebarState()`、`setSidebarCollapsed(side, collapsed)`、`subscribeSidebarChange()`、`getPanelSelection()`、`subscribePanelSelection()`;设置仅在实际切换时返回 `true`。Header/Right Render Context 共享响应式 `panelSelection`(`selection`、`selectedElement`、`trace`),只读轨迹选择不回写设计选择。
|
|
166
|
-
|
|
167
|
-
Instance 默认隐藏右侧且没有展开按钮;需要时显式设置 `config.ui.regions.right: 'default'`。新增能力自 `0.3.5-preview` 提供。完整示例见[侧栏指南](https://github.com/daxiangme/bpmn-nova/blob/dev/docs/CUSTOMIZATION.md#侧栏布局与平滑折叠)或包内 `llms-full.txt`。
|
|
168
|
-
|
|
169
|
-
## Mode 双向同步与副标题刷新
|
|
170
|
-
|
|
171
|
-
```jsx
|
|
172
|
-
import { useCallback, useRef, useState } from 'react'
|
|
173
|
-
|
|
174
|
-
const [mode, setMode] = useState('design')
|
|
175
|
-
const summaries = useRef(new Map())
|
|
176
|
-
const resolveSubtitle = useCallback(
|
|
177
|
-
({ node }) => summaries.current.has(node.id)
|
|
178
|
-
? summaries.current.get(node.id)
|
|
179
|
-
: undefined,
|
|
180
|
-
[],
|
|
181
|
-
)
|
|
182
|
-
|
|
183
|
-
<BpmnStudio
|
|
184
|
-
ref={studioRef}
|
|
185
|
-
xml={xml}
|
|
186
|
-
mode={mode}
|
|
187
|
-
allowedModes={['design', 'viewer']}
|
|
188
|
-
onModeChange={(event) => setMode(event.mode)}
|
|
189
|
-
nodeSubtitleResolver={resolveSubtitle}
|
|
190
|
-
headerStart={({ mode: actualMode }) => (
|
|
191
|
-
<HostHeader mode={actualMode} />
|
|
192
|
-
)}
|
|
193
|
-
/>
|
|
194
|
-
|
|
195
|
-
function updateArchiveSummary() {
|
|
196
|
-
summaries.current.set('ServiceTask_Archive', '归档到采购系统')
|
|
197
|
-
studioRef.current?.refreshPresentation()
|
|
198
|
-
}
|
|
199
|
-
```
|
|
200
|
-
|
|
201
|
-
Ref 的 `mode` Getter 与 `setMode()` 始终反映 Shell 实际状态。Resolver 返回 `undefined` 保留默认值、`null` 移除副标题行、字符串替换显示;函数引用变化会自动刷新,稳定闭包内部数据变化需显式调用 `refreshPresentation()`。Resolver 只影响 Design/Viewer 标准卡片和 SVG,不覆盖 Instance Runtime Presentation,也不修改 XML、History、Selection 或 Viewport。
|
|
202
|
-
|
|
203
|
-
## 只读展示与审批轨迹
|
|
204
|
-
|
|
205
|
-
真实后端的数据格式与接入步骤见[审批轨迹接入指南](https://github.com/daxiangme/bpmn-nova/blob/dev/docs/RUNTIME-INTEGRATION.md),完整正文也包含在包内 `llms-full.txt`。React 根入口的 `ProcessInstanceSnapshot`、Activity/Action/Transition、`RuntimeTraceClickEvent` 与资源 Resolver 等 14 个 Runtime 类型出口自 `0.3.5-preview` 提供;旧版可按指南从 `BpmnStudioProps['runtime']` 推导,无需增加 Studio 直依赖。
|
|
206
|
-
|
|
207
|
-
```jsx
|
|
208
|
-
import { BpmnViewer } from '@bpmn-nova/react'
|
|
209
|
-
import '@bpmn-nova/react/styles.css'
|
|
210
|
-
|
|
211
|
-
export function ApprovalTrace({ xml, runtime, resolveAsset }) {
|
|
212
|
-
return (
|
|
213
|
-
<div style={{ height: 720 }}>
|
|
214
|
-
<BpmnViewer
|
|
215
|
-
xml={xml}
|
|
216
|
-
engine="flowable"
|
|
217
|
-
runtime={runtime}
|
|
218
|
-
projection="compact"
|
|
219
|
-
responsive
|
|
220
|
-
theme="auto"
|
|
221
|
-
runtimeAssetResolver={resolveAsset}
|
|
222
|
-
onTraceClick={(event) => console.log(event)}
|
|
223
|
-
/>
|
|
224
|
-
</div>
|
|
225
|
-
)
|
|
226
|
-
}
|
|
227
|
-
```
|
|
228
|
-
|
|
229
|
-
- `approval`:实际发生的有效路径。
|
|
230
|
-
- `compact`:移动时间线、审批动作、图片和附件。
|
|
231
|
-
- `standard`:完整 BPMN 叠加运行状态。
|
|
232
|
-
|
|
233
|
-

|
|
234
|
-
|
|
235
|
-
## Runtime Action 与附件
|
|
236
|
-
|
|
237
|
-
```js
|
|
238
|
-
const runtime = {
|
|
239
|
-
processInstanceId: 'purchase-20260824',
|
|
240
|
-
status: 'running',
|
|
241
|
-
activities: [{
|
|
242
|
-
id: 'activity-manager-1',
|
|
243
|
-
elementId: 'UserTask_Manager',
|
|
244
|
-
visitId: 'visit-manager-1',
|
|
245
|
-
status: 'completed',
|
|
246
|
-
assignee: '李经理',
|
|
247
|
-
}],
|
|
248
|
-
actions: [{
|
|
249
|
-
id: 'approve-manager-1',
|
|
250
|
-
type: 'approve',
|
|
251
|
-
elementId: 'UserTask_Manager',
|
|
252
|
-
visitId: 'visit-manager-1',
|
|
253
|
-
occurredAt: '2026-08-24T10:12:00+08:00',
|
|
254
|
-
actor: { id: 'manager-li', name: '李经理' },
|
|
255
|
-
content: {
|
|
256
|
-
plainText: '资料完整,同意提交总经理审批。',
|
|
257
|
-
blocks: [{ type: 'file', assetId: 'purchase-checklist' }],
|
|
258
|
-
assets: [{
|
|
259
|
-
id: 'purchase-checklist',
|
|
260
|
-
name: '采购核验清单.txt',
|
|
261
|
-
mediaType: 'text/plain',
|
|
262
|
-
size: 248,
|
|
263
|
-
}],
|
|
264
|
-
},
|
|
265
|
-
}],
|
|
266
|
-
visitedEdges: [],
|
|
267
|
-
}
|
|
268
|
-
|
|
269
|
-
const resolveAsset = async (asset, { purpose, signal }) => {
|
|
270
|
-
const response = await fetch(
|
|
271
|
-
`/api/runtime-assets/${encodeURIComponent(asset.id)}?purpose=${purpose}`,
|
|
272
|
-
{ signal },
|
|
273
|
-
)
|
|
274
|
-
return response.ok ? response.url : null
|
|
275
|
-
}
|
|
276
|
-
```
|
|
277
|
-
|
|
278
|
-
Runtime Snapshot 只保存资源引用;上传、存储和权限签发由宿主负责。
|
|
279
|
-
|
|
280
|
-
## 主题和 SVG 导出
|
|
281
|
-
|
|
282
|
-
```jsx
|
|
283
|
-
<BpmnStudio
|
|
284
|
-
ref={studioRef}
|
|
285
|
-
xml={xml}
|
|
286
|
-
theme={{
|
|
287
|
-
mode: 'auto',
|
|
288
|
-
dark: {
|
|
289
|
-
colors: {
|
|
290
|
-
canvas: '#0b1018',
|
|
291
|
-
surface: '#18202b',
|
|
292
|
-
},
|
|
293
|
-
},
|
|
294
|
-
}}
|
|
295
|
-
/>
|
|
296
|
-
```
|
|
297
|
-
|
|
298
|
-
```js
|
|
299
|
-
studioRef.current?.openSvgExportPreview({
|
|
300
|
-
theme: 'current',
|
|
301
|
-
filename: '采购申请审批流程.svg',
|
|
302
|
-
})
|
|
303
|
-
```
|
|
304
|
-
|
|
305
|
-
主题属性变化会更新现有实例,不会重新挂载画布、清除选择或关闭详情。
|
|
306
|
-
|
|
307
|
-
## Properties 与自定义 Renderer
|
|
308
|
-
|
|
309
|
-
本包还导出:
|
|
310
|
-
|
|
311
|
-
- `BpmnDesigner`、`BpmnCanvas`、`BpmnPalettePanel`、`BpmnPropertiesPanel`
|
|
312
|
-
- `useBpmnStudio`
|
|
313
|
-
- `createReactPropertyComponent`
|
|
314
|
-
- `createReactRuntimeDetailsComponent`
|
|
315
|
-
- `createReactRuntimeTransitionDetailsComponent`
|
|
316
|
-
- `createReactRuntimeTimelineComponent`
|
|
317
|
-
- `createStudioController`、`createEmptyProcess`、`importBpmn`、`exportBpmn`
|
|
318
|
-
- Palette、Properties、Context Menu、Icon 和 Template Registry 的公开创建函数
|
|
319
|
-
|
|
320
|
-
完整工作台可通过 `allowedNodeTypes` 与 `allowedEdgeTypes` 限制宿主支持的图元类型,通过 `allowedModes` 限制可切换的工作台模式。图元限制同时作用于 XML 导入、Palette、连接、快捷新增、模板和节点类型转换。
|
|
321
|
-
|
|
322
|
-
## 常见问题
|
|
52
|
+
`initialXml` 由宿主提供。组件负责实例生命周期;SSR 应用只在客户端挂载。`xml` / `model` 用于外部替换输入,事件中的 XML 是草稿输出。
|
|
323
53
|
|
|
324
|
-
|
|
325
|
-
- **无样式:** 导入一次 `@bpmn-nova/react/styles.css`。
|
|
326
|
-
- **Hooks/React 重复:** React 与 React DOM 应由宿主提供并保持单实例。
|
|
327
|
-
- **SSR:** 将可视组件放到客户端挂载阶段。
|
|
328
|
-
- **包选择:** React 项目只直接安装 `@bpmn-nova/react`。
|
|
54
|
+
## 完整文档
|
|
329
55
|
|
|
330
|
-
|
|
56
|
+
- [官网与文档](https://github.com/daxiangme/bpmn-nova/blob/dev/docs/src/index.md)
|
|
57
|
+
- [React 接入、宿主组合和完整示例](https://github.com/daxiangme/bpmn-nova/blob/dev/docs/src/guide/react.md)
|
|
58
|
+
- [组件参数与事件](https://github.com/daxiangme/bpmn-nova/blob/dev/docs/src/components/index.md)、[公开 API](https://github.com/daxiangme/bpmn-nova/blob/dev/docs/src/api/index.md)
|
|
59
|
+
- [审批轨迹接入](https://github.com/daxiangme/bpmn-nova/blob/dev/docs/src/guide/runtime.md)、[自定义扩展](https://github.com/daxiangme/bpmn-nova/blob/dev/docs/src/customization/index.md)
|
|
60
|
+
- [更新日志](https://github.com/daxiangme/bpmn-nova/blob/dev/docs/src/changelog.md)
|
|
331
61
|
|
|
332
|
-
|
|
333
|
-
- npm 包内 `llms-full.txt`:完整 AI 上下文
|
|
334
|
-
- [完整项目能力](https://github.com/daxiangme/bpmn-nova)
|
|
335
|
-
- [React/Vue 组件说明](https://github.com/daxiangme/bpmn-nova/blob/dev/docs/COMPONENTS.md)
|
|
336
|
-
- [公开 Interface](https://github.com/daxiangme/bpmn-nova/blob/dev/docs/API.md)
|
|
337
|
-
- [审批轨迹接入指南](https://github.com/daxiangme/bpmn-nova/blob/dev/docs/RUNTIME-INTEGRATION.md)
|
|
62
|
+
官网尚未部署,以上链接暂指向仓库文档。AI 接入从随包的 `llms.txt` 开始;`llms-full.txt` 提供完整离线上下文,两份文件都包含在 npm tarball 中。
|
|
338
63
|
|
|
339
64
|
## License
|
|
340
65
|
|
package/dist/index.d.ts
CHANGED
|
@@ -110,20 +110,31 @@ export type {
|
|
|
110
110
|
StudioViewerConfig,
|
|
111
111
|
} from '@bpmn-nova/studio'
|
|
112
112
|
|
|
113
|
-
/** Runtime integration facade.
|
|
113
|
+
/** Runtime integration facade. Types since 0.3.5-preview; inspectRuntime / formatRuntimeInstant since 0.3.6-preview. */
|
|
114
114
|
export type {
|
|
115
115
|
ActivityInstance,
|
|
116
116
|
ActivityStatus,
|
|
117
|
+
ActivityVisitState,
|
|
117
118
|
ProcessInstanceSnapshot,
|
|
118
119
|
RuntimeApprovalAction,
|
|
119
120
|
RuntimeApprovalActionType,
|
|
120
121
|
RuntimeApprovalContent,
|
|
121
122
|
RuntimeApprovalContentBlock,
|
|
122
123
|
RuntimeAssetRef,
|
|
124
|
+
RuntimeDiagnostic,
|
|
123
125
|
RuntimeEdgeVisit,
|
|
126
|
+
RuntimeInstant,
|
|
124
127
|
RuntimeParticipant,
|
|
125
128
|
RuntimeTransition,
|
|
126
129
|
} from '@bpmn-nova/studio/runtime'
|
|
130
|
+
export {
|
|
131
|
+
activityState,
|
|
132
|
+
createRuntimePresentation,
|
|
133
|
+
formatRuntimeInstant,
|
|
134
|
+
inspectRuntime,
|
|
135
|
+
normalizeRuntime,
|
|
136
|
+
parseRuntimeInstant,
|
|
137
|
+
} from '@bpmn-nova/studio/runtime'
|
|
127
138
|
export type {
|
|
128
139
|
RuntimeAssetPurpose,
|
|
129
140
|
RuntimeAssetResolver,
|
package/dist/index.js
CHANGED
|
@@ -7,6 +7,15 @@ import { createEmptyProcess } from '@bpmn-nova/studio';
|
|
|
7
7
|
import { BpmnCanvas as CoreCanvas, BpmnStudioShell as CoreStudioShell, createInteractionController, createStudioController, createTemplateRegistry } from '@bpmn-nova/studio';
|
|
8
8
|
import { createDefaultPaletteRegistry, PalettePanel as CorePalettePanel } from '@bpmn-nova/studio';
|
|
9
9
|
|
|
10
|
+
export {
|
|
11
|
+
activityState,
|
|
12
|
+
createRuntimePresentation,
|
|
13
|
+
formatRuntimeInstant,
|
|
14
|
+
inspectRuntime,
|
|
15
|
+
normalizeRuntime,
|
|
16
|
+
parseRuntimeInstant,
|
|
17
|
+
} from '@bpmn-nova/studio/runtime';
|
|
18
|
+
|
|
10
19
|
export {
|
|
11
20
|
createContextMenuRegistry,
|
|
12
21
|
createDefaultContextMenuRegistry,
|
package/dist/styles.css
CHANGED
|
@@ -938,6 +938,11 @@ button.mb-runtime-action-summary:hover, button.mb-runtime-action-summary:focus-v
|
|
|
938
938
|
.mb-runtime-timeline-content { min-width: 0; display: grid; gap: 4px; }
|
|
939
939
|
.mb-runtime-timeline-card { width: 100%; min-width: 0; overflow: visible; border: 0; border-radius: 0; display: grid; color: inherit; background: transparent; box-shadow: none; }
|
|
940
940
|
.mb-runtime-timeline-card-main { width: 100%; min-width: 0; border: 0; border-radius: 8px; padding: 5px 7px; display: grid; gap: 3px; color: inherit; background: transparent; text-align: left; font: inherit; cursor: pointer; transition: background-color .14s ease, box-shadow .14s ease; }
|
|
941
|
+
.mb-runtime-timeline-card-main.has-avatars { grid-template-columns: auto minmax(0, 1fr); align-items: start; column-gap: 8px; }
|
|
942
|
+
.mb-runtime-timeline-card-copy { min-width: 0; display: grid; gap: 3px; }
|
|
943
|
+
.mb-runtime-timeline-avatars { display: flex; align-items: center; margin-top: 2px; }
|
|
944
|
+
.mb-runtime-timeline-avatars .mb-runtime-details-avatar + .mb-runtime-details-avatar { margin-left: -8px; box-shadow: 0 0 0 2px var(--nova-color-surface, #fff); }
|
|
945
|
+
.mb-runtime-timeline-avatar-more { font-size: var(--nova-font-size-xs, 10px); }
|
|
941
946
|
.mb-runtime-timeline-card-main:hover { background: var(--nova-color-primary-soft, #f5f6ff); }
|
|
942
947
|
.mb-runtime-timeline-card-main:focus-visible { outline: none; background: var(--nova-color-primary-soft, #f5f6ff); box-shadow: inset 0 0 0 2px color-mix(in srgb, var(--nova-color-primary) 22%, transparent); }
|
|
943
948
|
.mb-runtime-timeline-card-main:active { background: color-mix(in srgb, var(--nova-color-primary-soft) 84%, var(--nova-color-primary)); }
|