@fses/workbench-app 0.1.2 → 0.2.0

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.
@@ -0,0 +1,1392 @@
1
+ import "@fses/workbench-card";
2
+ import { resolveCardRegistryEntry as E, compositeCardPatternById as j } from "@fses/workbench-card/registry";
3
+ import "@fses/workbench-card/renderers";
4
+ const Y = {
5
+ "card.metric.numeric": { previewKind: "metricNumeric", layoutHint: "metric", sampleTone: "info", sampleTitle: "核心数值" },
6
+ "card.metric.combo": { previewKind: "metricCombo", layoutHint: "metric", sampleTone: "info", sampleTitle: "组合指标" },
7
+ "card.metric.comparison": { previewKind: "metricComparison", layoutHint: "metric", sampleTone: "success", sampleTitle: "指标对比" },
8
+ "card.metric.alert": { previewKind: "metricAlert", layoutHint: "metric", sampleTone: "warning", sampleTitle: "预警指标" },
9
+ "card.metric.targetAchievement": { previewKind: "metricTarget", layoutHint: "metric", sampleTone: "success", sampleTitle: "目标达成" },
10
+ "card.metric.yoyMom": { previewKind: "metricYoyMom", layoutHint: "metric", sampleTone: "info", sampleTitle: "同比环比" },
11
+ "card.metric.segmentedProgress": { previewKind: "metricSegmentedProgress", layoutHint: "metric", sampleTone: "success", sampleTitle: "分段进度" },
12
+ "card.metric.abnormalMetric": { previewKind: "metricAbnormal", layoutHint: "metric", sampleTone: "danger", sampleTitle: "异常指标" },
13
+ "card.metric.slaMetric": { previewKind: "metricSla", layoutHint: "metric", sampleTone: "warning", sampleTitle: "SLA 指标" },
14
+ "card.table.list": { previewKind: "tableRecordList", layoutHint: "table", sampleTone: "neutral", sampleTitle: "明细清单" },
15
+ "card.analysis.insight": { previewKind: "analysisInsight", layoutHint: "narrative", sampleTone: "info", sampleTitle: "经营洞察" },
16
+ "card.analysis.reportSummary": { previewKind: "analysisReportSummary", layoutHint: "narrative", sampleTone: "info", sampleTitle: "报告摘要" },
17
+ "card.analysis.rootCause": { previewKind: "analysisRootCause", layoutHint: "narrative", sampleTone: "warning", sampleTitle: "根因分析" },
18
+ "card.analysis.riskInterpretation": { previewKind: "analysisRisk", layoutHint: "narrative", sampleTone: "danger", sampleTitle: "风险解读" },
19
+ "card.analysis.businessSuggestion": { previewKind: "analysisSuggestion", layoutHint: "narrative", sampleTone: "success", sampleTitle: "经营建议" },
20
+ "card.analysis.weeklyReport": { previewKind: "analysisWeeklyReport", layoutHint: "narrative", sampleTone: "info", sampleTitle: "周报摘要" },
21
+ "card.analysis.retrospective": { previewKind: "analysisRetrospective", layoutHint: "narrative", sampleTone: "neutral", sampleTitle: "复盘结论" },
22
+ "card.graph.knowledge": { previewKind: "graphKnowledge", layoutHint: "network", sampleTone: "info", sampleTitle: "知识图谱" },
23
+ "card.graph.ontology": { previewKind: "graphOntology", layoutHint: "network", sampleTone: "info", sampleTitle: "本体图谱" },
24
+ "card.graph.relationship": { previewKind: "graphRelationship", layoutHint: "network", sampleTone: "neutral", sampleTitle: "关系网络" },
25
+ "card.graph.dataLineage": { previewKind: "graphDataLineage", layoutHint: "network", sampleTone: "info", sampleTitle: "数据血缘" },
26
+ "card.graph.impactChain": { previewKind: "graphImpactChain", layoutHint: "network", sampleTone: "warning", sampleTitle: "影响链路" },
27
+ "card.graph.metricLineage": { previewKind: "graphMetricLineage", layoutHint: "network", sampleTone: "success", sampleTitle: "指标血缘" },
28
+ "card.graph.permissionRelation": { previewKind: "graphPermission", layoutHint: "network", sampleTone: "warning", sampleTitle: "权限关系" },
29
+ "card.identity.directory": { previewKind: "identityDirectory", layoutHint: "table", sampleTone: "neutral", sampleTitle: "通讯录" },
30
+ "card.identity.orgChart": { previewKind: "identityOrgChart", layoutHint: "network", sampleTone: "info", sampleTitle: "组织架构" },
31
+ "card.identity.personProfile": { previewKind: "identityPersonProfile", layoutHint: "profile", sampleTone: "info", sampleTitle: "人员画像" },
32
+ "card.identity.teamDistribution": { previewKind: "identityTeamDistribution", layoutHint: "metric", sampleTone: "success", sampleTitle: "团队分布" },
33
+ "card.identity.permissionRelation": { previewKind: "identityPermission", layoutHint: "network", sampleTone: "warning", sampleTitle: "身份权限" },
34
+ "card.workflow.todoList": { previewKind: "workflowTodo", layoutHint: "workflow", sampleTone: "warning", sampleTitle: "待办清单" },
35
+ "card.workflow.approvalList": { previewKind: "workflowApprovalList", layoutHint: "table", sampleTone: "warning", sampleTitle: "审批列表" },
36
+ "card.workflow.processStatus": { previewKind: "workflowProcessStatus", layoutHint: "metric", sampleTone: "info", sampleTitle: "流程状态" },
37
+ "card.workflow.approvalChain": { previewKind: "workflowApprovalChain", layoutHint: "network", sampleTone: "info", sampleTitle: "审批链路" },
38
+ "card.workflow.sla": { previewKind: "workflowSla", layoutHint: "metric", sampleTone: "warning", sampleTitle: "流程 SLA" },
39
+ "card.workflow.taskTimeline": { previewKind: "workflowTaskTimeline", layoutHint: "timeline", sampleTone: "info", sampleTitle: "任务时间线" },
40
+ "card.workflow.bottleneck": { previewKind: "workflowBottleneck", layoutHint: "metric", sampleTone: "danger", sampleTitle: "流程瓶颈" },
41
+ "card.utility.quickLinks": { previewKind: "utilityQuickLinks", layoutHint: "customCanvas", sampleTone: "info", sampleTitle: "快捷入口" },
42
+ "card.utility.announcement": { previewKind: "utilityAnnouncement", layoutHint: "customCanvas", sampleTone: "warning", sampleTitle: "公告通知" },
43
+ "card.utility.search": { previewKind: "utilitySearch", layoutHint: "customCanvas", sampleTone: "info", sampleTitle: "搜索入口" },
44
+ "card.utility.reminder": { previewKind: "utilityReminder", layoutHint: "workflow", sampleTone: "warning", sampleTitle: "提醒事项" },
45
+ "card.utility.favorites": { previewKind: "utilityFavorites", layoutHint: "customCanvas", sampleTone: "success", sampleTitle: "收藏夹" },
46
+ "card.utility.weather": { previewKind: "utilityWeather", layoutHint: "metric", sampleTone: "info", sampleTitle: "天气状态" },
47
+ "card.utility.calendar": { previewKind: "utilityCalendar", layoutHint: "timeline", sampleTone: "info", sampleTitle: "日程安排" },
48
+ "card.chart.bar": { previewKind: "chartBarComparison", layoutHint: "metric", sampleTone: "info", sampleTitle: "柱状对比" },
49
+ "card.chart.customEcharts": { previewKind: "chartCustomEcharts", layoutHint: "metric", sampleTone: "neutral", sampleTitle: "自定义图表" },
50
+ "card.chart.mixedBarLine": { previewKind: "chartMixedTrend", layoutHint: "metric", sampleTone: "success", sampleTitle: "柱线混合" },
51
+ "card.chart.line": { previewKind: "chartLineTrend", layoutHint: "metric", sampleTone: "info", sampleTitle: "趋势折线" },
52
+ "card.chart.waterfall": { previewKind: "chartWaterfallSteps", layoutHint: "metric", sampleTone: "info", sampleTitle: "瀑布分解" },
53
+ "card.chart.heatmap": { previewKind: "chartHeatmapMatrix", layoutHint: "matrix", sampleTone: "warning", sampleTitle: "热力矩阵" },
54
+ "card.chart.area": { previewKind: "chartAreaAccumulation", layoutHint: "metric", sampleTone: "success", sampleTitle: "累计面积" },
55
+ "card.chart.pie": { previewKind: "chartPieShare", layoutHint: "metric", sampleTone: "info", sampleTitle: "占比饼图" },
56
+ "card.chart.donut": { previewKind: "chartDonutProgress", layoutHint: "metric", sampleTone: "success", sampleTitle: "环形进度" },
57
+ "card.chart.radar": { previewKind: "chartRadarMetrics", layoutHint: "metric", sampleTone: "info", sampleTitle: "雷达指标" },
58
+ "card.chart.scatter": { previewKind: "chartScatterDistribution", layoutHint: "metric", sampleTone: "info", sampleTitle: "散点分布" },
59
+ "card.chart.bubble": { previewKind: "chartBubbleScale", layoutHint: "metric", sampleTone: "warning", sampleTitle: "气泡规模" },
60
+ "card.chart.funnel": { previewKind: "chartFunnelStages", layoutHint: "workflow", sampleTone: "info", sampleTitle: "漏斗转化" },
61
+ "card.chart.gauge": { previewKind: "chartGaugeMetric", layoutHint: "metric", sampleTone: "success", sampleTitle: "仪表盘" },
62
+ "card.chart.map": { previewKind: "chartMapRegion", layoutHint: "map", sampleTone: "info", sampleTitle: "地图分布" },
63
+ "card.chart.sankey": { previewKind: "chartSankeyFlow", layoutHint: "network", sampleTone: "info", sampleTitle: "桑基流向" },
64
+ "card.chart.tree": { previewKind: "chartTreeHierarchy", layoutHint: "network", sampleTone: "info", sampleTitle: "树状层级" },
65
+ "card.chart.gantt": { previewKind: "chartGanttTasks", layoutHint: "timeline", sampleTone: "info", sampleTitle: "甘特任务" },
66
+ "card.chart.candlestick": { previewKind: "chartCandlestickSeries", layoutHint: "metric", sampleTone: "warning", sampleTitle: "K 线走势" },
67
+ "card.chart.boxplot": { previewKind: "chartBoxplotSeries", layoutHint: "metric", sampleTone: "neutral", sampleTitle: "箱线分布" },
68
+ "card.chart.stackedBar": { previewKind: "chartStackedBar", layoutHint: "metric", sampleTone: "info", sampleTitle: "堆叠柱图" },
69
+ "card.chart.pareto": { previewKind: "chartParetoSeries", layoutHint: "metric", sampleTone: "warning", sampleTitle: "帕累托分析" },
70
+ "card.chart.drilldownTree": { previewKind: "chartDrilldownTree", layoutHint: "network", sampleTone: "info", sampleTitle: "下钻树图" },
71
+ "card.chart.network": { previewKind: "chartNetworkRelation", layoutHint: "network", sampleTone: "info", sampleTitle: "网络关系" },
72
+ "card.geo.earth3d": { previewKind: "geoEarthArc", layoutHint: "map", sampleTone: "info", sampleTitle: "全球流向" },
73
+ "card.geo.siteDistribution": { previewKind: "geoSiteDistribution", layoutHint: "map", sampleTone: "success", sampleTitle: "网点分布" },
74
+ "card.geo.regionalHeat": { previewKind: "geoRegionalHeat", layoutHint: "map", sampleTone: "warning", sampleTitle: "区域热力" },
75
+ "card.geo.migrationFlow": { previewKind: "geoMigrationFlow", layoutHint: "network", sampleTone: "info", sampleTitle: "迁徙飞线" },
76
+ "card.geo.routeTrack": { previewKind: "geoRouteTrack", layoutHint: "network", sampleTone: "info", sampleTitle: "路线轨迹" },
77
+ "card.embedded.iframe": { previewKind: "embeddedIframe", layoutHint: "embed", sampleTone: "neutral", sampleTitle: "内嵌页面" },
78
+ "card.fde.customComponent": { previewKind: "fdeCustomComponent", layoutHint: "embed", sampleTone: "neutral", sampleTitle: "FDE 组件" },
79
+ "card.fde.templateWeather": { previewKind: "fdeTemplateWeather", layoutHint: "metric", sampleTone: "info", sampleTitle: "模板天气" },
80
+ "card.custom.blankCanvas": { previewKind: "customBlankCanvas", layoutHint: "customCanvas", sampleTone: "neutral", sampleTitle: "空白画布" },
81
+ "card.custom.nestedContainer": { previewKind: "customNestedContainer", layoutHint: "customCanvas", sampleTone: "info", sampleTitle: "嵌套容器" },
82
+ "card.entity.customerDetail": { previewKind: "entityCustomer", layoutHint: "profile", sampleTone: "info", sampleTitle: "客户详情" },
83
+ "card.entity.projectDetail": { previewKind: "entityProject", layoutHint: "profile", sampleTone: "success", sampleTitle: "项目详情" },
84
+ "card.entity.contractDetail": { previewKind: "entityContract", layoutHint: "profile", sampleTone: "warning", sampleTitle: "合同详情" },
85
+ "card.entity.supplierDetail": { previewKind: "entitySupplier", layoutHint: "profile", sampleTone: "neutral", sampleTitle: "供应商详情" },
86
+ "card.entity.assetDetail": { previewKind: "entityAsset", layoutHint: "profile", sampleTone: "info", sampleTitle: "资产详情" },
87
+ "card.entity.ticketDetail": { previewKind: "entityTicket", layoutHint: "workflow", sampleTone: "danger", sampleTitle: "工单详情" }
88
+ };
89
+ function U(e) {
90
+ const a = Y[e.capabilityId];
91
+ if (a) return { capabilityId: e.capabilityId, explicit: !0, ...a };
92
+ const t = e.dataShape === "metricSummary" ? "metric" : e.dataShape === "rows" ? "table" : e.dataShape === "networkGraph" ? "network" : e.dataShape === "customCanvas" ? "customCanvas" : e.dataShape === "embeddedFrame" ? "embed" : "metric";
93
+ return {
94
+ capabilityId: e.capabilityId,
95
+ previewKind: `${e.category.replace(/^card\./u, "").replace(/[^a-z0-9]+/giu, "_")}_${e.type}`,
96
+ layoutHint: t,
97
+ sampleTone: "neutral",
98
+ sampleTitle: e.title,
99
+ explicit: !1
100
+ };
101
+ }
102
+ const d = 100, g = 5, R = {
103
+ small: { w: 33.333, h: 20 },
104
+ medium: { w: 33.333, h: 34 },
105
+ componentTall: { w: 33.333, h: 42 },
106
+ large: { w: 100, h: 32 },
107
+ screen: { w: 100, h: 50 }
108
+ }, V = {
109
+ small: 3,
110
+ medium: 3,
111
+ componentTall: 3,
112
+ large: 1,
113
+ screen: 1
114
+ }, X = 0.75;
115
+ function h(e, a) {
116
+ const t = Number(e);
117
+ return Number.isFinite(t) ? t : a;
118
+ }
119
+ function Ne(e) {
120
+ return Math.max(1, e) / d;
121
+ }
122
+ function We(e, a) {
123
+ return e * a;
124
+ }
125
+ function Oe(e, a) {
126
+ return e / Math.max(1e-4, a);
127
+ }
128
+ function Ge(e, a = g) {
129
+ return Math.round(e / a) * a;
130
+ }
131
+ function o(e) {
132
+ return Math.round(e * 1e3) / 1e3;
133
+ }
134
+ function _(e = "small") {
135
+ return { ...R[e] };
136
+ }
137
+ function K(e) {
138
+ const a = Math.min(d, Math.max(g, o(h(e.w, 30)))), t = Math.max(g, o(h(e.h, 20))), i = Math.min(d - a, Math.max(0, o(h(e.x, 0)))), r = Math.max(0, o(h(e.y, 0)));
139
+ return { x: i, y: r, w: a, h: t };
140
+ }
141
+ function y(e) {
142
+ const a = Math.min(d, Math.max(g, o(h(e.w, 30)))), t = Math.max(g, o(h(e.h, 20))), i = Math.min(d - a, Math.max(0, o(h(e.x, 0)))), r = Math.max(0, o(h(e.y, 0)));
143
+ return { x: i, y: r, w: a, h: t };
144
+ }
145
+ function Q(e, a) {
146
+ return !(e.x + e.w <= a.x || a.x + a.w <= e.x || e.y + e.h <= a.y || a.y + a.h <= e.y);
147
+ }
148
+ function C(e, a) {
149
+ return e.x >= 0 && e.y >= 0 && e.x + e.w <= d && a.every((t) => !Q(e, t));
150
+ }
151
+ function J(e, a) {
152
+ return o(e.w) === o(a.w) && o(e.h) === o(a.h);
153
+ }
154
+ function D(e) {
155
+ return [...new Set(e.map((a) => o(a)))].filter((a) => Number.isFinite(a)).sort((a, t) => a - t);
156
+ }
157
+ function Z(e) {
158
+ return e.map(K).sort((a, t) => {
159
+ const i = a.y - t.y;
160
+ if (i !== 0) return i;
161
+ const r = a.x - t.x;
162
+ return r !== 0 ? r : a.w - t.w || a.h - t.h;
163
+ });
164
+ }
165
+ function ee(e) {
166
+ const a = /* @__PURE__ */ new Map();
167
+ return Z(e).forEach((t) => {
168
+ const i = o(t.y);
169
+ a.set(i, [...a.get(i) || [], t]);
170
+ }), [...a.entries()].map(([t, i]) => ({ y: t, rects: i.sort((r, l) => r.x - l.x) })).sort((t, i) => t.y - i.y);
171
+ }
172
+ function x(e) {
173
+ return e.reduce((a, t) => Math.max(a, t.h), 0);
174
+ }
175
+ function ae(e) {
176
+ return e.reduce((a, t) => a + t.w, 0);
177
+ }
178
+ function te(e, a) {
179
+ return e >= a * X;
180
+ }
181
+ function F(e) {
182
+ for (const a of ["screen", "large", "componentTall", "medium", "small"]) {
183
+ const t = R[a].w, i = V[a];
184
+ if (e.length >= i && e.every((r) => r.w === t))
185
+ return a;
186
+ }
187
+ return null;
188
+ }
189
+ function z(e, a) {
190
+ const t = ee(a), i = t.map((n) => ({
191
+ ...n,
192
+ width: ae(n.rects),
193
+ height: x(n.rects),
194
+ hasSameSize: n.rects.some((c) => J(c, e))
195
+ })).filter(
196
+ (n) => n.width + e.w <= d && te(n.height, e.h)
197
+ ), l = i.filter((n) => n.height === e.h || n.hasSameSize).sort((n, c) => n.hasSameSize !== c.hasSameSize ? n.hasSameSize ? -1 : 1 : n.y - c.y)[0] || i[0];
198
+ if (l) {
199
+ const n = { ...e, x: o(l.width), y: l.y };
200
+ if (C(n, a)) return n;
201
+ }
202
+ const s = t.reduce((n, c) => Math.max(n, c.y + x(c.rects)), 0);
203
+ return { ...e, x: 0, y: o(s) };
204
+ }
205
+ function N(e, a) {
206
+ const t = K(e);
207
+ if (C(t, a)) return t;
208
+ const i = z(t, a);
209
+ if (C(i, a)) return i;
210
+ const r = a.reduce((n, c) => Math.max(n, c.y + c.h), 0), l = D([
211
+ 0,
212
+ t.x,
213
+ ...a.flatMap((n) => [n.x, n.x + n.w])
214
+ ]).filter((n) => n >= 0 && n + t.w <= d), s = D([
215
+ 0,
216
+ t.y,
217
+ r,
218
+ ...a.flatMap((n) => [n.y, n.y + n.h])
219
+ ]).filter((n) => n >= 0);
220
+ for (const n of s)
221
+ for (const c of l) {
222
+ const p = { ...t, x: c, y: n };
223
+ if (C(p, a)) return p;
224
+ }
225
+ return { ...t, x: 0, y: o(r + g) };
226
+ }
227
+ function ie(e, a) {
228
+ const t = K(e), i = z(t, a);
229
+ return C(i, a) ? i : N(t, a);
230
+ }
231
+ function qe(e) {
232
+ const a = /* @__PURE__ */ new Map();
233
+ return e.forEach((t) => {
234
+ const i = o(y(t.layout).y);
235
+ a.set(i, [...a.get(i) || [], t]);
236
+ }), [...a.entries()].sort((t, i) => t[0] - i[0]).flatMap(([t, i]) => {
237
+ const r = i.slice().sort((u, b) => {
238
+ const v = y(u.layout), f = y(b.layout), k = v.x - f.x;
239
+ return k !== 0 ? k : v.w - f.w || v.h - f.h;
240
+ }), l = r.reduce((u, b) => u + y(b.layout).w, 0), s = Math.max(0, d - l), n = r.reduce((u, b) => Math.min(u, y(b.layout).w), d), c = F(r.map((u) => y(u.layout))), p = !!c && s > 0 && s < n, w = p ? r.filter((u) => y(u.layout).w === R[c].w) : [], m = w.length > 0 ? s / w.length : 0;
241
+ let T = 0;
242
+ return r.map((u, b) => {
243
+ const v = y(u.layout), f = b === r.length - 1, k = w.length > 0 ? w.includes(u) : p && f, q = p && f ? Math.max(g, o(d - T)) : Math.max(g, o(k ? v.w + m : v.w)), M = {
244
+ ...v,
245
+ x: o(T),
246
+ y: t,
247
+ w: q
248
+ };
249
+ return T += M.w, {
250
+ ...u,
251
+ layout: {
252
+ ...u.layout,
253
+ ...M
254
+ }
255
+ };
256
+ });
257
+ });
258
+ }
259
+ function re(e, a) {
260
+ const t = e.reduce((m, T) => m + T.rect.w, 0), i = Math.max(0, d - t), r = F(e.map((m) => m.rect)), l = !!r, s = l ? e.filter((m) => m.rect.w === R[r].w) : [], n = l && s.length === 0 ? e[e.length - 1] : null, c = s.length || (n ? 1 : 0), p = c > 0 ? i / c : 0;
261
+ let w = 0;
262
+ return e.map((m, T) => {
263
+ const u = T === e.length - 1, b = s.includes(m) || m === n, v = u && l ? Math.max(g, o(d - w)) : Math.max(g, o(m.rect.w + (b ? p : 0))), f = {
264
+ ...m.rect,
265
+ x: o(w),
266
+ y: a,
267
+ w: v
268
+ };
269
+ return w += f.w, {
270
+ ...m.item,
271
+ layout: {
272
+ ...m.item.layout,
273
+ ...f
274
+ }
275
+ };
276
+ });
277
+ }
278
+ function ne(e) {
279
+ const a = [];
280
+ let t = 0, i = [];
281
+ const r = () => {
282
+ i.length !== 0 && (a.push(...re(i, o(t))), t += x(i.map((l) => l.rect)), i = []);
283
+ };
284
+ return e.forEach((l) => {
285
+ const s = y(l.layout);
286
+ if (s.w >= d) {
287
+ r(), i = [{ item: l, rect: { ...s, x: 0, w: d } }], r();
288
+ return;
289
+ }
290
+ const n = i.reduce((c, p) => c + p.rect.w, 0);
291
+ i.length > 0 && n + s.w > d && r(), i.push({ item: l, rect: s });
292
+ }), r(), a;
293
+ }
294
+ function Ee(e) {
295
+ const a = [...e].sort((l, s) => {
296
+ const n = y(l.layout), c = y(s.layout), p = n.y - c.y;
297
+ if (p !== 0) return p;
298
+ const w = n.x - c.x;
299
+ return w !== 0 ? w : l.id.localeCompare(s.id);
300
+ });
301
+ let t = 0, i = 0, r = 0;
302
+ return a.map((l) => {
303
+ const s = y(l.layout);
304
+ t > 0 && t + s.w > d && (t = 0, i = o(i + r), r = 0);
305
+ const n = {
306
+ ...s,
307
+ x: o(t),
308
+ y: o(i)
309
+ };
310
+ return t = o(t + n.w), r = Math.max(r, n.h), {
311
+ ...l,
312
+ layout: {
313
+ ...l.layout,
314
+ ...n,
315
+ i: l.id
316
+ }
317
+ };
318
+ });
319
+ }
320
+ function je(e) {
321
+ const a = [...e].sort((t, i) => {
322
+ const r = y(t.layout), l = y(i.layout), s = r.y - l.y;
323
+ if (s !== 0) return s;
324
+ const n = r.x - l.x;
325
+ return n !== 0 ? n : t.id.localeCompare(i.id);
326
+ });
327
+ return ne(a).map((t) => ({
328
+ ...t,
329
+ layout: {
330
+ ...t.layout,
331
+ i: t.id
332
+ }
333
+ }));
334
+ }
335
+ function Ye(e, a = 20) {
336
+ return e.reduce((t, i) => Math.max(t, i.y + i.h), 0) + a;
337
+ }
338
+ function le(e) {
339
+ var i, r, l, s;
340
+ const a = _(e.preset), t = K({
341
+ x: h((i = e.layout) == null ? void 0 : i.x, 0),
342
+ y: h((r = e.layout) == null ? void 0 : r.y, 0),
343
+ w: h(((l = e.layout) == null ? void 0 : l.w) ?? e.width, a.w),
344
+ h: h(((s = e.layout) == null ? void 0 : s.h) ?? e.height, a.h)
345
+ });
346
+ return N(t, e.placed);
347
+ }
348
+ function se(e) {
349
+ var i, r, l, s;
350
+ const a = _(e.preset), t = K({
351
+ x: h((i = e.layout) == null ? void 0 : i.x, 0),
352
+ y: h((r = e.layout) == null ? void 0 : r.y, 0),
353
+ w: h(((l = e.layout) == null ? void 0 : l.w) ?? e.width, a.w),
354
+ h: h(((s = e.layout) == null ? void 0 : s.h) ?? e.height, a.h)
355
+ });
356
+ return ie(t, e.placed);
357
+ }
358
+ function oe(e, a) {
359
+ return {
360
+ i: e,
361
+ ...K(a),
362
+ minW: g,
363
+ minH: g,
364
+ maxW: d,
365
+ static: !1
366
+ };
367
+ }
368
+ async function P(e) {
369
+ const a = await fetch(e, { credentials: "same-origin" });
370
+ if (!a.ok)
371
+ throw new Error(`加载 ECharts 模板资源失败:${e} (${a.status})`);
372
+ return await a.json();
373
+ }
374
+ const ce = ["extraction", "officialComparison", "officialSourceReplay"], ue = ["params", "reloadPolicy", "extraction"];
375
+ function Ue(e) {
376
+ let a = !1;
377
+ const t = e.blocks.map((i) => {
378
+ const r = de(i);
379
+ return r !== i && (a = !0), r;
380
+ });
381
+ return a ? { ...e, blocks: t } : e;
382
+ }
383
+ function de(e) {
384
+ if (!S(e.data)) return e;
385
+ const a = L(e.data);
386
+ return a === e.data ? e : { ...e, data: a };
387
+ }
388
+ function L(e) {
389
+ let a = !1;
390
+ const t = me(e) ? { ...e } : e;
391
+ if (S(t.protocolConfig)) {
392
+ const i = A(t.protocolConfig, ce);
393
+ i !== t.protocolConfig && (t.protocolConfig = i, a = !0);
394
+ }
395
+ if (S(t.protocolData)) {
396
+ const i = A(t.protocolData, ue);
397
+ i !== t.protocolData && (t.protocolData = i, a = !0);
398
+ }
399
+ if (Array.isArray(t.nestedBlocks)) {
400
+ const i = t.nestedBlocks.map((r) => S(r) ? pe(r) : r);
401
+ if (i.some((r, l) => r !== t.nestedBlocks[l])) {
402
+ if (t === e) return { ...e, nestedBlocks: i };
403
+ t.nestedBlocks = i, a = !0;
404
+ }
405
+ }
406
+ return a ? t : e;
407
+ }
408
+ function me(e) {
409
+ return e.shape === "protocolRender" && e.rendererType === "echarts" && S(e.protocolConfig);
410
+ }
411
+ function pe(e) {
412
+ let a = !1, t = L(e);
413
+ if (t !== e && (a = !0), S(t.data)) {
414
+ const i = L(t.data);
415
+ i !== t.data && (t = t === e ? { ...e, data: i } : { ...t, data: i }, a = !0);
416
+ }
417
+ return a ? t : e;
418
+ }
419
+ function S(e) {
420
+ return !!(e && typeof e == "object" && !Array.isArray(e));
421
+ }
422
+ function A(e, a) {
423
+ let t = !1;
424
+ const i = { ...e };
425
+ return a.forEach((r) => {
426
+ r in i && (delete i[r], t = !0);
427
+ }), t ? i : e;
428
+ }
429
+ async function he(e) {
430
+ try {
431
+ const a = await P(e.echarts.configPath), t = e.echarts.dataPath ? await P(e.echarts.dataPath) : void 0, i = L({
432
+ shape: "protocolRender",
433
+ rendererType: "echarts",
434
+ protocolConfig: a,
435
+ ...t ? { protocolData: t } : {}
436
+ }), r = i.protocolConfig, l = i.protocolData;
437
+ return {
438
+ ok: !0,
439
+ data: {
440
+ shape: "protocolRender",
441
+ rendererType: "echarts",
442
+ sourceLabel: "ECharts 官方示例",
443
+ protocolConfig: r,
444
+ ...l ? { protocolData: l } : {},
445
+ template: {
446
+ exampleId: e.echarts.exampleId,
447
+ mainCategory: e.echarts.mainCategory,
448
+ tags: e.echarts.tags,
449
+ requires: e.echarts.requires
450
+ }
451
+ },
452
+ renderer: {
453
+ engine: "echarts",
454
+ rendererKey: "echartsProtocol"
455
+ },
456
+ meta: {
457
+ capabilityId: e.capabilityId,
458
+ rendererKey: e.rendererKey,
459
+ dataShape: e.dataShape,
460
+ echartsTemplate: e.echarts
461
+ }
462
+ };
463
+ } catch (a) {
464
+ return {
465
+ ok: !1,
466
+ reason: a instanceof Error ? a.message : "ECharts 模板资源加载失败。"
467
+ };
468
+ }
469
+ }
470
+ function we(e) {
471
+ return !!(e && typeof e == "object" && typeof e.capabilityId == "string" && e.capabilityId.startsWith("card.echarts.") && typeof e.echarts == "object");
472
+ }
473
+ function ye(e = "canvas-card") {
474
+ return typeof crypto < "u" && "randomUUID" in crypto ? `${e}-${crypto.randomUUID()}` : `${e}-${Date.now()}-${Math.random().toString(36).slice(2)}`;
475
+ }
476
+ function be() {
477
+ return {
478
+ mode: "final",
479
+ status: "ready",
480
+ refreshable: !0,
481
+ cacheable: !0,
482
+ drilldown: !1,
483
+ editable: !0,
484
+ submitable: !1
485
+ };
486
+ }
487
+ function ve(e) {
488
+ if (e.category !== "card.composite_cards") return null;
489
+ const a = j(e.type);
490
+ if (!a) return null;
491
+ if (a.id === "threePanelAnalysis") return fe(a.scene);
492
+ const t = a.dataContract.nestedBlockKinds.slice(0, 4).map((i, r) => ({
493
+ id: `${a.id}-sample-${r + 1}`,
494
+ title: B(a.id, i, r),
495
+ kind: ge(i),
496
+ visualKind: i,
497
+ slot: r < 2 ? "body" : "footer",
498
+ dataBindingStatus: r === 0 ? "business_input" : "none",
499
+ ...r === 0 ? {
500
+ dataBindingId: `binding-${a.id}-sample-${r + 1}`,
501
+ dataBinding: {
502
+ id: `binding-${a.id}-sample-${r + 1}`,
503
+ status: "business_input",
504
+ queryIntent: `查询${B(a.id, i, r)}`,
505
+ refreshApi: `/workbench/v2/documents/{workspaceId}/data-bindings/binding-${a.id}-sample-${r + 1}/query`
506
+ },
507
+ humanIntervention: {
508
+ required: !0,
509
+ reason: "sample_business_input",
510
+ hint: "补充业务口径后由宿主问数并 setData。"
511
+ }
512
+ } : {},
513
+ data: Te(i)
514
+ }));
515
+ return {
516
+ shape: "customCanvas",
517
+ sourceLabel: "Workbench Card Library",
518
+ narrative: a.scene,
519
+ elements: [],
520
+ nestedLayoutMode: "stack",
521
+ nestedLayoutStacks: [
522
+ { id: `${a.id}-left`, childIds: t.filter((i, r) => r % 2 === 0).map((i) => i.id) },
523
+ { id: `${a.id}-right`, childIds: t.filter((i, r) => r % 2 === 1).map((i) => i.id) }
524
+ ],
525
+ nestedBlocks: t
526
+ };
527
+ }
528
+ function fe(e) {
529
+ return {
530
+ shape: "customCanvas",
531
+ sourceLabel: "Workbench Card Library",
532
+ narrative: e,
533
+ elements: [],
534
+ nestedLayoutMode: "grid",
535
+ nestedBlocks: [
536
+ {
537
+ id: "three-panel-bar",
538
+ title: "左侧柱状图",
539
+ capabilityId: "card.chart.bar",
540
+ dataShape: "multiSeries",
541
+ visualKind: "bar",
542
+ renderer: { engine: "custom", rendererKey: "bar" },
543
+ layout: { i: "three-panel-bar", x: 0, y: 0, w: 6, h: 10, parentId: "three-panel-analysis" },
544
+ data: {
545
+ shape: "multiSeries",
546
+ categories: ["A", "B", "C"],
547
+ series: [{ name: "待问数", type: "bar", data: [0, 0, 0] }]
548
+ }
549
+ },
550
+ {
551
+ id: "three-panel-line",
552
+ title: "右上折线图",
553
+ capabilityId: "card.chart.line",
554
+ dataShape: "singleSeries",
555
+ visualKind: "line",
556
+ renderer: { engine: "custom", rendererKey: "line" },
557
+ layout: { i: "three-panel-line", x: 6, y: 0, w: 6, h: 5, parentId: "three-panel-analysis" },
558
+ data: {
559
+ shape: "singleSeries",
560
+ categories: ["一月", "二月", "三月"],
561
+ series: [{ name: "待问数", type: "line", data: [0, 0, 0] }]
562
+ }
563
+ },
564
+ {
565
+ id: "three-panel-metric",
566
+ title: "右下指标卡",
567
+ capabilityId: "card.metric.numeric",
568
+ dataShape: "metricSummary",
569
+ visualKind: "metric",
570
+ renderer: { engine: "custom", rendererKey: "metricStrip" },
571
+ layout: { i: "three-panel-metric", x: 6, y: 5, w: 6, h: 5, parentId: "three-panel-analysis" },
572
+ data: {
573
+ shape: "metricSummary",
574
+ primaryLabel: "待问数指标",
575
+ primaryValue: "待补口径"
576
+ }
577
+ }
578
+ ].map((t, i) => {
579
+ const r = `binding-three-panel-${i + 1}`;
580
+ return {
581
+ id: t.id,
582
+ title: t.title,
583
+ kind: t.visualKind === "metric" ? "metric" : "chart",
584
+ capabilityId: t.capabilityId,
585
+ dataShape: t.dataShape,
586
+ visualKind: t.visualKind,
587
+ slot: "main",
588
+ renderer: t.renderer,
589
+ dataBindingId: r,
590
+ dataBindingStatus: "business_input",
591
+ dataBinding: {
592
+ id: r,
593
+ bindingId: r,
594
+ status: "business_input",
595
+ queryIntent: `查询${t.title}`,
596
+ refreshApi: `/workbench/v2/documents/{workspaceId}/data-bindings/${r}/query`
597
+ },
598
+ humanIntervention: {
599
+ required: !0,
600
+ reason: "sample_business_input",
601
+ hint: "补充业务口径后由宿主问数并 setData。"
602
+ },
603
+ queryIntent: `查询${t.title}`,
604
+ layout: t.layout,
605
+ data: {
606
+ ...t.data,
607
+ dataBindingStatus: "business_input",
608
+ dataBindingId: r,
609
+ humanIntervention: {
610
+ required: !0,
611
+ reason: "sample_business_input"
612
+ },
613
+ capabilityId: t.capabilityId,
614
+ dataShape: t.dataShape,
615
+ visualKind: t.visualKind,
616
+ rendererKey: t.renderer.rendererKey,
617
+ queryIntent: `查询${t.title}`
618
+ }
619
+ };
620
+ })
621
+ };
622
+ }
623
+ function B(e, a, t) {
624
+ var r;
625
+ return ((r = {
626
+ asset: ["资产台账", "成本分析", "资产异常", "成本优化"],
627
+ project: ["重点 IT 项目看板", "个人待办", "快捷入口", "研发与运维效能"],
628
+ ops: ["全局服务监控", "资源负载监控", "故障与告警中心", "近七日趋势"],
629
+ security: ["安全风险总览", "账号权限风险", "合规审计", "整改待办"],
630
+ businessMetricMatrix: ["核心 KPI", "趋势缩略图", "业务动态", "风险提醒"]
631
+ }[e]) == null ? void 0 : r[t]) || a;
632
+ }
633
+ function ge(e) {
634
+ return /metric|score/i.test(e) ? "metric" : /chart|donut|bars/i.test(e) ? "chart" : "list";
635
+ }
636
+ function Te(e) {
637
+ return /metric|score/i.test(e) ? { shape: "metricSummary", primaryValue: "待补口径", primaryLabel: "示例指标" } : /donut/i.test(e) ? { shape: "pieSlices", slices: [{ label: "已用", value: 62 }, { label: "剩余", value: 38 }] } : /chart|bars/i.test(e) ? { shape: "singleSeries", categories: ["周一", "周二", "周三"], series: [{ name: "趋势", type: "line", data: [82, 88, 91] }] } : {
638
+ shape: "categoryRanking",
639
+ items: [
640
+ { label: "示例事项 A", value: "待确认" },
641
+ { label: "示例事项 B", value: "可跟进" }
642
+ ]
643
+ };
644
+ }
645
+ function Se(e, a) {
646
+ const t = {
647
+ multiPanel: ["核心指标趋势", "业务分布", "结构占比", "健康度监控"],
648
+ executiveCockpit: ["经营目标达成", "收入趋势", "费用结构", "风险预警"],
649
+ projectCockpit: ["项目进度", "里程碑趋势", "资源占比", "交付健康度"],
650
+ riskCockpit: ["风险总览", "风险趋势", "风险类型占比", "处置完成率"],
651
+ regionalCockpit: ["区域贡献", "区域趋势", "区域结构", "区域达成率"]
652
+ }, [i, r, l, s] = t[e.type] || t.multiPanel;
653
+ return {
654
+ shape: "dashboardGrid",
655
+ sourceLabel: "Canvas Runtime",
656
+ narrative: a,
657
+ panels: [
658
+ {
659
+ id: `${e.type}-trend`,
660
+ title: i,
661
+ subtitle: "月度走势",
662
+ rendererKey: "line",
663
+ data: {
664
+ shape: "singleSeries",
665
+ categories: ["一月", "二月", "三月", "四月", "五月", "六月"],
666
+ metricFormat: "number",
667
+ unit: "趋势值",
668
+ series: [{ name: "本期", type: "line", data: [82, 96, 91, 118, 126, 138] }]
669
+ }
670
+ },
671
+ {
672
+ id: `${e.type}-bars`,
673
+ title: r,
674
+ subtitle: "分组对比",
675
+ rendererKey: "bar",
676
+ data: {
677
+ shape: "multiSeries",
678
+ categories: ["华东", "华北", "华南", "西部"],
679
+ metricFormat: "number",
680
+ unit: "业务量",
681
+ series: [
682
+ { name: "本期", type: "bar", data: [128, 96, 112, 78] },
683
+ { name: "上期", type: "bar", data: [110, 88, 104, 72] }
684
+ ]
685
+ }
686
+ },
687
+ {
688
+ id: `${e.type}-structure`,
689
+ title: l,
690
+ subtitle: "结构拆分",
691
+ rendererKey: "donut",
692
+ data: {
693
+ shape: "pieSlices",
694
+ innerRadius: 0.52,
695
+ slices: [
696
+ { label: "A 类", value: 45, share: 0.45 },
697
+ { label: "B 类", value: 32, share: 0.32 },
698
+ { label: "C 类", value: 23, share: 0.23 }
699
+ ]
700
+ }
701
+ },
702
+ {
703
+ id: `${e.type}-combo`,
704
+ title: s,
705
+ subtitle: "完成与趋势",
706
+ rendererKey: "mixedBarLine",
707
+ data: {
708
+ shape: "multiSeries",
709
+ categories: ["一月", "二月", "三月", "四月"],
710
+ metricFormat: "percent",
711
+ unit: "完成率",
712
+ series: [
713
+ { name: "完成率", type: "bar", data: [66, 72, 79, 84] },
714
+ { name: "趋势线", type: "line", data: [61, 69, 77, 88] }
715
+ ]
716
+ }
717
+ }
718
+ ]
719
+ };
720
+ }
721
+ function Ke() {
722
+ return {
723
+ shape: "customCanvas",
724
+ sourceLabel: "Canvas Runtime",
725
+ narrative: "拖拽卡片到容器中进行分组,子卡可独立问数。",
726
+ elements: [],
727
+ nestedLayoutMode: "grid",
728
+ nestedBlocks: [],
729
+ containerRole: "nested-card-container"
730
+ };
731
+ }
732
+ function Ce(e, a) {
733
+ const i = {
734
+ metricNumeric: { value: 128, delta: 0.062, compare: "较上期", secondary: [{ label: "本期值", format: "number", value: 128 }, { label: "样本数", format: "number", value: 24 }] },
735
+ metricCombo: { value: 386, delta: 0.094, compare: "组合提升", secondary: [{ label: "收入", format: "currency", value: 218 }, { label: "订单", format: "number", value: 168 }] },
736
+ metricComparison: { value: 112, delta: 0.047, compare: "领先对照组", secondary: [{ label: "A 组", format: "number", value: 112 }, { label: "B 组", format: "number", value: 97 }] },
737
+ metricAlert: { value: 7, delta: -0.18, compare: "异常下降", secondary: [{ label: "告警数", format: "number", value: 3 }, { label: "处置率", format: "percent", value: 0.62 }] },
738
+ metricYoyMom: { value: 128, delta: 0.062, compare: "同比环比", secondary: [{ label: "同比", format: "percent", value: 0.12 }, { label: "环比", format: "percent", value: -0.03 }] },
739
+ metricAbnormal: { value: 12, delta: 0.24, compare: "异常上升", secondary: [{ label: "异常项", format: "number", value: 12 }, { label: "影响率", format: "percent", value: 0.18 }] },
740
+ metricSegmentedProgress: { value: 76, delta: 0.08, compare: "阶段推进", secondary: [{ label: "已完成", format: "number", value: 76 }, { label: "完成率", format: "percent", value: 0.76 }] },
741
+ metricTarget: { value: 0.92, delta: 0.12, compare: "目标达成", secondary: [{ label: "目标", format: "number", value: 100 }, { label: "达成率", format: "percent", value: 0.92 }] },
742
+ metricSla: { value: 0.96, delta: -0.03, compare: "SLA 压线", secondary: [{ label: "目标线", format: "percent", value: 0.98 }, { label: "当前值", format: "percent", value: 0.96 }] },
743
+ workflowSla: { value: 0.94, delta: -0.04, compare: "即将超时", secondary: [{ label: "超时单", format: "number", value: 2 }, { label: "准时率", format: "percent", value: 0.94 }] },
744
+ workflowProcessStatus: { value: 18, delta: 0.11, compare: "流转中", secondary: [{ label: "进行中", format: "number", value: 18 }, { label: "完成率", format: "percent", value: 0.71 }] }
745
+ }[a.previewKind] || {
746
+ value: 128,
747
+ delta: 0.062,
748
+ compare: "较上期",
749
+ secondary: [{ label: "目标", format: "number", value: 150 }, { label: "完成率", format: "percent", value: 0.85 }]
750
+ };
751
+ return {
752
+ shape: "metricSummary",
753
+ primaryLabel: a.sampleTitle || e.title,
754
+ primaryFormat: a.previewKind === "metricTarget" || a.previewKind === "metricSla" ? "percent" : "number",
755
+ primaryValue: i.value,
756
+ deltaPct: i.delta,
757
+ compareLabel: i.compare,
758
+ periodLabel: "预览样例",
759
+ sourceLabel: "Canvas Runtime",
760
+ secondary: i.secondary
761
+ };
762
+ }
763
+ function ke(e, a) {
764
+ const t = {
765
+ analysisInsight: ["核心指标保持稳定。", "结构变化主要来自重点分组。", "建议继续观察趋势拐点。"],
766
+ analysisRootCause: ["波动来源集中在输入、过程、结果三层。", "主因需要结合明细数据确认。", "建议优先排查异常链路。"],
767
+ analysisRisk: ["当前存在可恢复风险。", "风险影响集中在关键节点。", "建议设置负责人和截止时间。"],
768
+ analysisSuggestion: ["优先推进高收益动作。", "保留低风险试点空间。", "按周复盘动作收益。"],
769
+ analysisWeeklyReport: ["本周目标推进平稳。", "重点事项按计划收敛。", "下周关注跨团队阻塞。"],
770
+ analysisRetrospective: ["目标完成情况与预期基本一致。", "过程问题集中在协同节奏。", "下阶段需要沉淀标准动作。"]
771
+ };
772
+ if (e.dataShape === "reportSummary") {
773
+ const i = t[a.previewKind] || ["关键变化已归纳。", "后续可继续下钻。"];
774
+ return {
775
+ shape: "reportSummary",
776
+ summary: `${a.sampleTitle || e.title}预览摘要。`,
777
+ highlights: i,
778
+ sourceLabel: "Canvas Runtime",
779
+ dataStatus: "sample"
780
+ };
781
+ }
782
+ return {
783
+ shape: "insightNarrative",
784
+ bullets: t[a.previewKind] || ["本期摘要已生成。", "关键变化已归纳。", "后续可继续下钻。"],
785
+ confidence: a.sampleTone === "danger" ? 0.74 : 0.86,
786
+ owner: a.sampleTitle,
787
+ sourceLabel: "Canvas Runtime"
788
+ };
789
+ }
790
+ function W() {
791
+ return {
792
+ shape: "rows",
793
+ sourceLabel: "Canvas Runtime",
794
+ visualKind: "genericRows",
795
+ columns: ["项目", "状态", "数值"],
796
+ rows: [
797
+ { id: "row-1", cells: ["样例 A", "正常", "128"] },
798
+ { id: "row-2", cells: ["样例 B", "关注", "76"] }
799
+ ]
800
+ };
801
+ }
802
+ function Le(e, a) {
803
+ return {
804
+ tableRecordList: { shape: "rows", sourceLabel: "Canvas Runtime", visualKind: "tableRecordList", columns: ["事项", "负责人", "状态", "数值"], rows: [
805
+ { id: "row-1", cells: ["客户跟进", "张明", "进行中", "12"] },
806
+ { id: "row-2", cells: ["方案确认", "李然", "待处理", "8"] }
807
+ ] },
808
+ tableCompactList: { shape: "rows", sourceLabel: "Canvas Runtime", visualKind: "tableCompactList", columns: ["名称", "状态", "备注"], rows: [
809
+ { id: "row-1", cells: ["示例项 A", "正常", "已同步"] },
810
+ { id: "row-2", cells: ["示例项 B", "关注", "待确认"] }
811
+ ] },
812
+ tableSummary: { shape: "rows", sourceLabel: "Canvas Runtime", visualKind: "tableSummary", columns: ["分组", "本期", "上期", "变化"], rows: [
813
+ { id: "row-1", cells: ["销售", "128", "116", "+12"] },
814
+ { id: "row-2", cells: ["交付", "92", "88", "+4"] }
815
+ ] },
816
+ tableComparison: { shape: "rows", sourceLabel: "Canvas Runtime", visualKind: "tableComparison", columns: ["对象", "效率", "质量", "风险"], rows: [
817
+ { id: "row-1", cells: ["A 组", "高", "稳定", "低"] },
818
+ { id: "row-2", cells: ["B 组", "中", "提升", "中"] }
819
+ ] },
820
+ tableParameter: { shape: "rows", sourceLabel: "Canvas Runtime", visualKind: "tableParameter", columns: ["参数", "当前值", "说明"], rows: [
821
+ { id: "row-1", cells: ["刷新周期", "15 分钟", "自动更新"] },
822
+ { id: "row-2", cells: ["预警阈值", "80%", "超过提醒"] }
823
+ ] },
824
+ tableIndex: { shape: "rows", sourceLabel: "Canvas Runtime", visualKind: "tableIndex", columns: ["指标", "口径", "负责人"], rows: [
825
+ { id: "row-1", cells: ["收入", "已确认金额", "财务"] },
826
+ { id: "row-2", cells: ["履约率", "按期完成占比", "交付"] }
827
+ ] },
828
+ tablePartition: { shape: "rows", sourceLabel: "Canvas Runtime", visualKind: "tablePartition", columns: ["分区", "记录数", "更新时间"], rows: [
829
+ { id: "row-1", cells: ["华东", "12,680", "09:20"] },
830
+ { id: "row-2", cells: ["华北", "8,914", "09:18"] }
831
+ ] },
832
+ tableMapping: { shape: "rows", sourceLabel: "Canvas Runtime", visualKind: "tableMapping", columns: ["来源字段", "目标字段", "状态"], rows: [
833
+ { id: "row-1", cells: ["customer_id", "客户 ID", "已映射"] },
834
+ { id: "row-2", cells: ["owner_id", "负责人", "待确认"] }
835
+ ] },
836
+ tableLevel: { shape: "rows", sourceLabel: "Canvas Runtime", visualKind: "tableLevel", columns: ["等级", "阈值", "动作"], rows: [
837
+ { id: "row-1", cells: ["高", "> 90%", "重点保障"] },
838
+ { id: "row-2", cells: ["中", "70%-90%", "持续观察"] }
839
+ ] },
840
+ tableTimeline: { shape: "rows", sourceLabel: "Canvas Runtime", visualKind: "tableTimeline", columns: ["时间", "节点", "状态"], rows: [
841
+ { id: "row-1", cells: ["09:00", "提交申请", "完成"] },
842
+ { id: "row-2", cells: ["10:30", "主管审批", "进行中"] }
843
+ ] },
844
+ tableMatrix: { shape: "rows", sourceLabel: "Canvas Runtime", visualKind: "tableMatrix", columns: ["维度", "销售", "交付", "财务"], rows: [
845
+ { id: "row-1", cells: ["风险", "低", "中", "低"] },
846
+ { id: "row-2", cells: ["优先级", "高", "中", "高"] }
847
+ ] },
848
+ tableNested: { shape: "rows", sourceLabel: "Canvas Runtime", visualKind: "tableNested", columns: ["层级", "对象", "状态"], rows: [
849
+ { id: "row-1", cells: ["一级", "项目群", "运行中"] },
850
+ { id: "row-2", cells: ["二级", "交付任务", "待确认"] }
851
+ ] },
852
+ tableSteps: { shape: "rows", sourceLabel: "Canvas Runtime", visualKind: "tableSteps", columns: ["步骤", "动作", "状态"], rows: [
853
+ { id: "row-1", cells: ["1", "发起", "完成"] },
854
+ { id: "row-2", cells: ["2", "复核", "进行中"] }
855
+ ] },
856
+ tableDescription: { shape: "rows", sourceLabel: "Canvas Runtime", visualKind: "tableDescription", columns: ["名称", "含义", "备注"], rows: [
857
+ { id: "row-1", cells: ["完成率", "已完成 / 目标", "百分比"] },
858
+ { id: "row-2", cells: ["响应时长", "首次响应耗时", "分钟"] }
859
+ ] }
860
+ }[a.previewKind] || {
861
+ ...W(),
862
+ visualKind: a.previewKind,
863
+ columns: ["类型", "状态", "说明"],
864
+ rows: [
865
+ { id: "row-1", cells: [a.sampleTitle || e.title, "正常", "预览样例"] },
866
+ { id: "row-2", cells: ["更新", "待确认", "可接入真实数据"] }
867
+ ]
868
+ };
869
+ }
870
+ function Re(e, a) {
871
+ return e.category === "card.table_cards" ? Le(e, a) : e.capabilityId === "card.identity.directory" ? { shape: "rows", sourceLabel: "Canvas Runtime", visualKind: "identityDirectory", columns: ["姓名", "角色", "状态"], rows: [
872
+ { id: "row-1", cells: ["张明", "销售负责人", "在线"] },
873
+ { id: "row-2", cells: ["李然", "交付负责人", "忙碌"] }
874
+ ] } : e.capabilityId === "card.workflow.approvalList" ? { shape: "rows", sourceLabel: "Canvas Runtime", visualKind: "workflowApprovalList", columns: ["单据", "节点", "状态"], rows: [
875
+ { id: "row-1", cells: ["合同审批", "法务复核", "待处理"] },
876
+ { id: "row-2", cells: ["费用申请", "部门确认", "进行中"] }
877
+ ] } : W();
878
+ }
879
+ function xe(e, a) {
880
+ if (a.previewKind === "chartBubbleScale")
881
+ return {
882
+ shape: "scatterPoints",
883
+ xLabel: "投入",
884
+ yLabel: "产出",
885
+ sizeLabel: "规模",
886
+ points: [
887
+ { label: "A", x: 18, y: 42, size: 18 },
888
+ { label: "B", x: 38, y: 70, size: 44 },
889
+ { label: "C", x: 66, y: 76, size: 30 }
890
+ ],
891
+ narrative: `${a.sampleTitle}预览。`
892
+ };
893
+ if (e.dataShape === "scatterPoints")
894
+ return {
895
+ shape: "scatterPoints",
896
+ xLabel: "投入",
897
+ yLabel: "产出",
898
+ sizeLabel: "规模",
899
+ points: [
900
+ { label: "样本 A", x: 18, y: 42, size: 24 },
901
+ { label: "样本 B", x: 36, y: 68, size: 36 },
902
+ { label: "样本 C", x: 56, y: 72, size: 18 },
903
+ { label: "样本 D", x: 74, y: 84, size: 28 }
904
+ ],
905
+ narrative: `${a.sampleTitle}预览。`
906
+ };
907
+ if (a.previewKind === "chartAreaAccumulation")
908
+ return {
909
+ shape: e.dataShape,
910
+ categories: ["一月", "二月", "三月", "四月", "五月", "六月"],
911
+ metricFormat: "number",
912
+ unit: "累计值",
913
+ narrative: `${a.sampleTitle}预览。`,
914
+ series: [{ name: "累计面积", type: "line", data: [32, 68, 105, 149, 188, 236] }]
915
+ };
916
+ const t = e.rendererKey === "line" || e.rendererKey === "area" ? "line" : "bar";
917
+ return {
918
+ shape: e.dataShape,
919
+ categories: ["一月", "二月", "三月", "四月", "五月", "六月"],
920
+ metricFormat: "number",
921
+ unit: a.previewKind === "chartLineTrend" ? "趋势值" : "业务量",
922
+ narrative: `${a.sampleTitle}预览。`,
923
+ series: [
924
+ { name: a.previewKind === "chartLineTrend" ? "趋势" : a.sampleTitle, type: t, data: [88, 112, 96, 128, 142, 156] },
925
+ ...e.dataShape === "multiSeries" ? [{ name: "上期", type: "bar", data: [76, 90, 105, 118, 124, 136] }] : []
926
+ ]
927
+ };
928
+ }
929
+ function He(e) {
930
+ return e.previewKind === "chartDonutProgress" ? {
931
+ shape: "pieSlices",
932
+ innerRadius: 0.58,
933
+ slices: [
934
+ { label: "已完成", value: 68, share: 0.68 },
935
+ { label: "未完成", value: 32, share: 0.32 }
936
+ ],
937
+ narrative: `${e.sampleTitle}预览。`
938
+ } : {
939
+ shape: "pieSlices",
940
+ slices: [
941
+ { label: "华东", value: 45, share: 0.45 },
942
+ { label: "华北", value: 35, share: 0.35 },
943
+ { label: "华南", value: 20, share: 0.2 }
944
+ ],
945
+ narrative: `${e.sampleTitle}预览。`
946
+ };
947
+ }
948
+ function Ie(e) {
949
+ return {
950
+ shape: "mapRegions",
951
+ regions: e.previewKind === "geoRegionalHeat" ? [
952
+ { name: "华东", value: 96, status: "high" },
953
+ { name: "华北", value: 82, status: "high" },
954
+ { name: "西部", value: 44, status: "low" }
955
+ ] : [
956
+ { name: "上海网点", value: 28, status: "high" },
957
+ { name: "北京网点", value: 18, status: "medium" },
958
+ { name: "深圳网点", value: 16, status: "medium" }
959
+ ],
960
+ narrative: `${e.sampleTitle}预览。`
961
+ };
962
+ }
963
+ function Me(e, a) {
964
+ const t = a.previewKind === "chartDrilldownTree" || a.previewKind === "workflowApprovalChain";
965
+ return {
966
+ shape: "treeHierarchy",
967
+ root: {
968
+ id: "root",
969
+ label: a.sampleTitle || e.title,
970
+ children: t ? [
971
+ { id: "node-a", label: "一级分类", value: 42, children: [{ id: "node-a-1", label: "明细 A", value: 18 }] },
972
+ { id: "node-b", label: "二级分类", value: 31, children: [{ id: "node-b-1", label: "明细 B", value: 12 }] }
973
+ ] : [
974
+ { id: "node-a", label: "收入", value: 42 },
975
+ { id: "node-b", label: "成本", value: 31 },
976
+ { id: "node-c", label: "风险", value: 18 }
977
+ ]
978
+ },
979
+ narrative: `${a.sampleTitle}预览。`
980
+ };
981
+ }
982
+ function De(e) {
983
+ return {
984
+ shape: "geoGlobe",
985
+ title: e.sampleTitle,
986
+ centerLabel: e.sampleTitle,
987
+ arcs: [
988
+ { from: "上海", to: "新加坡", value: 76 },
989
+ { from: "上海", to: "东京", value: 54 },
990
+ { from: "上海", to: "法兰克福", value: 38 }
991
+ ],
992
+ metrics: [
993
+ { label: "节点", value: "18" },
994
+ { label: "流向", value: "3" }
995
+ ],
996
+ narrative: `${e.sampleTitle}预览。`
997
+ };
998
+ }
999
+ function Pe(e, a) {
1000
+ const t = a.sampleTitle || e.title, i = a.previewKind === "geoMigrationFlow" ? ["出发地", "中转点", "目的地"] : a.previewKind === "geoRouteTrack" ? ["起点", "途经站", "终点"] : a.previewKind.includes("Permission") || a.previewKind.includes("permission") ? ["用户", "角色", "权限"] : a.previewKind.includes("Lineage") || a.previewKind.includes("lineage") ? ["来源表", "指标", "报表"] : a.previewKind === "graphKnowledge" ? ["概念", "属性", "事实"] : ["对象 A", "关系", "对象 B"];
1001
+ return {
1002
+ shape: "networkGraph",
1003
+ nodes: [
1004
+ { id: "root", label: t, value: 48, category: "root" },
1005
+ { id: "node-a", label: i[0], value: 30, category: "object" },
1006
+ { id: "node-b", label: i[1], value: 28, category: "metric" },
1007
+ { id: "node-c", label: i[2], value: 24, category: "target" }
1008
+ ],
1009
+ links: [
1010
+ { source: "root", target: "node-a", value: 2 },
1011
+ { source: "node-a", target: "node-b", value: 1 },
1012
+ { source: "node-b", target: "node-c", value: 1 }
1013
+ ],
1014
+ narrative: `${t}预览关系。`
1015
+ };
1016
+ }
1017
+ function Ae(e, a) {
1018
+ return e.dataShape === "weatherCurrent" ? {
1019
+ shape: "weatherCurrent",
1020
+ location: "上海",
1021
+ observedAt: (/* @__PURE__ */ new Date()).toISOString(),
1022
+ condition: "cloudy",
1023
+ conditionLabel: "多云",
1024
+ temperatureC: 22,
1025
+ sourceLabel: "Canvas Runtime",
1026
+ dataStatus: "sample",
1027
+ forecast: [
1028
+ { label: "明日", conditionLabel: "小雨", highC: 24, lowC: 19, precipitationPct: 0.62 },
1029
+ { label: "周末", conditionLabel: "晴", highC: 27, lowC: 21, precipitationPct: 0.12 }
1030
+ ]
1031
+ } : e.dataShape === "calendarCard" ? {
1032
+ shape: "calendarCard",
1033
+ timezone: "Asia/Shanghai",
1034
+ today: (/* @__PURE__ */ new Date()).toISOString().slice(0, 10),
1035
+ dateLabel: "今日",
1036
+ weekLabel: "工作日",
1037
+ sourceLabel: "Canvas Runtime",
1038
+ dataStatus: "sample",
1039
+ items: [
1040
+ { id: "event-1", time: "09:30", title: "晨会同步", type: "meeting", status: "scheduled" },
1041
+ { id: "event-2", time: "14:00", title: "项目评审", type: "deadline", status: "due" }
1042
+ ]
1043
+ } : e.dataShape === "embeddedFrame" ? {
1044
+ shape: "embeddedFrame",
1045
+ title: a.sampleTitle,
1046
+ srcUrl: "",
1047
+ sandbox: "allow-scripts allow-same-origin",
1048
+ status: "missing_url",
1049
+ sourceLabel: "Canvas Runtime",
1050
+ fallbackText: "配置白名单 URL 后展示内嵌页面。"
1051
+ } : e.dataShape === "fdeCustomComponent" ? {
1052
+ shape: "fdeCustomComponent",
1053
+ componentRef: a.previewKind === "fdeTemplateWeather" ? "@byteluck-fe/workbench-template/weather" : "unregistered-component",
1054
+ componentName: a.sampleTitle,
1055
+ props: a.previewKind === "fdeTemplateWeather" ? { city: "上海", mode: "compact" } : {},
1056
+ status: a.previewKind === "fdeTemplateWeather" ? "ready" : "unregistered",
1057
+ sourceLabel: "Canvas Runtime",
1058
+ fallbackText: a.previewKind === "fdeTemplateWeather" ? "模板天气组件预览。" : "注册 FDE 组件后展示定制内容。"
1059
+ } : null;
1060
+ }
1061
+ function $(e, a) {
1062
+ if (a.previewKind === "customNestedContainer") return Ke();
1063
+ const i = {
1064
+ customBlankCanvas: "blank-card-canvas",
1065
+ utilityQuickLinks: "quick-links",
1066
+ utilityAnnouncement: "announcement",
1067
+ utilitySearch: "search-entry",
1068
+ utilityReminder: "reminder-list",
1069
+ utilityFavorites: "favorite-list",
1070
+ identityPersonProfile: "identity-profile",
1071
+ entityCustomer: "customer-profile",
1072
+ entityProject: "project-profile",
1073
+ entityContract: "contract-profile",
1074
+ entitySupplier: "supplier-profile",
1075
+ entityAsset: "asset-profile",
1076
+ entityTicket: "ticket-workflow"
1077
+ }[a.previewKind] || "profile-card", r = a.previewKind === "utilitySearch" ? [
1078
+ { id: "search", kind: "text", label: "搜索", value: "输入关键词查找对象" },
1079
+ { id: "scope", kind: "badge", label: "范围", value: "全部" }
1080
+ ] : a.previewKind === "utilityQuickLinks" ? [
1081
+ { id: "link-a", kind: "badge", label: "入口", value: "新建事项" },
1082
+ { id: "link-b", kind: "badge", label: "入口", value: "查看报表" },
1083
+ { id: "link-c", kind: "badge", label: "入口", value: "发起审批" }
1084
+ ] : [
1085
+ { id: "title", kind: "text", label: a.sampleTitle || e.title, value: a.sampleTitle || e.title },
1086
+ { id: "status", kind: "text", label: "状态", value: a.sampleTone === "danger" ? "需处理" : a.sampleTone === "warning" ? "待关注" : "正常" },
1087
+ { id: "summary", kind: "text", label: "摘要", value: `${i} 示例结构` }
1088
+ ];
1089
+ return {
1090
+ shape: "customCanvas",
1091
+ sourceLabel: "Canvas Runtime",
1092
+ narrative: `${a.sampleTitle || e.title}预览。`,
1093
+ containerRole: i,
1094
+ elements: r
1095
+ };
1096
+ }
1097
+ function Be(e, a) {
1098
+ if (a && typeof a == "object") return a;
1099
+ const t = `${e.title}由左画布 Canvas Runtime 生成。`, i = U(e), r = ve(e);
1100
+ if (r) return r;
1101
+ if (e.dataShape === "metricSummary") return Ce(e, i);
1102
+ if (e.dataShape === "rows") return Re(e, i);
1103
+ if (e.dataShape === "insightNarrative" || e.dataShape === "reportSummary") return ke(e, i);
1104
+ if (e.dataShape === "dashboardGrid")
1105
+ return Se(e, t);
1106
+ if (e.dataShape === "pieSlices") return He(i);
1107
+ if (e.dataShape === "singleSeries" || e.dataShape === "multiSeries" || e.dataShape === "scatterPoints") return xe(e, i);
1108
+ if (e.dataShape === "waterfallSteps")
1109
+ return {
1110
+ shape: "waterfallSteps",
1111
+ unit: "万元",
1112
+ steps: [
1113
+ { label: "预算", value: 860 },
1114
+ { label: "增长", delta: 120 },
1115
+ { label: "费用优化", delta: -68 },
1116
+ { label: "实际", value: 912 }
1117
+ ],
1118
+ narrative: t
1119
+ };
1120
+ if (e.dataShape === "heatmapMatrix")
1121
+ return {
1122
+ shape: "heatmapMatrix",
1123
+ rows: ["销售", "交付", "研发", "运营"],
1124
+ columns: ["效率", "质量", "成本", "风险"],
1125
+ values: [
1126
+ [86, 74, 68, 42],
1127
+ [79, 88, 73, 51],
1128
+ [92, 81, 64, 48],
1129
+ [76, 69, 72, 57]
1130
+ ],
1131
+ narrative: t
1132
+ };
1133
+ if (e.dataShape === "radarMetrics")
1134
+ return {
1135
+ shape: "radarMetrics",
1136
+ max: 100,
1137
+ axes: [
1138
+ { label: "收入", value: 82 },
1139
+ { label: "效率", value: 76 },
1140
+ { label: "风险", value: 54 },
1141
+ { label: "质量", value: 88 },
1142
+ { label: "成本", value: 69 }
1143
+ ],
1144
+ narrative: t
1145
+ };
1146
+ if (e.dataShape === "scatterPoints")
1147
+ return {
1148
+ shape: "scatterPoints",
1149
+ xLabel: "投入",
1150
+ yLabel: "产出",
1151
+ sizeLabel: "规模",
1152
+ points: [
1153
+ { label: "A", x: 18, y: 42, size: 24 },
1154
+ { label: "B", x: 36, y: 68, size: 36 },
1155
+ { label: "C", x: 56, y: 72, size: 18 },
1156
+ { label: "D", x: 74, y: 84, size: 28 }
1157
+ ],
1158
+ narrative: t
1159
+ };
1160
+ if (e.dataShape === "funnelStages")
1161
+ return {
1162
+ shape: "funnelStages",
1163
+ stages: [
1164
+ { label: "线索", value: 1200, rate: 1 },
1165
+ { label: "商机", value: 760, rate: 0.63 },
1166
+ { label: "方案", value: 420, rate: 0.35 },
1167
+ { label: "成交", value: 180, rate: 0.15 }
1168
+ ],
1169
+ narrative: t
1170
+ };
1171
+ if (e.dataShape === "gaugeMetric")
1172
+ return {
1173
+ shape: "gaugeMetric",
1174
+ label: e.title,
1175
+ value: 78,
1176
+ max: 100,
1177
+ unit: "%",
1178
+ thresholds: [
1179
+ { label: "风险", value: 60, color: "#dc2626" },
1180
+ { label: "健康", value: 80, color: "#d97706" },
1181
+ { label: "优秀", value: 100, color: "#16a34a" }
1182
+ ],
1183
+ narrative: t
1184
+ };
1185
+ if (e.dataShape === "mapRegions") return Ie(i);
1186
+ if (e.dataShape === "sankeyFlow")
1187
+ return {
1188
+ shape: "sankeyFlow",
1189
+ nodes: [
1190
+ { id: "market", label: "市场" },
1191
+ { id: "sales", label: "销售" },
1192
+ { id: "service", label: "服务" },
1193
+ { id: "renew", label: "续约" }
1194
+ ],
1195
+ links: [
1196
+ { source: "market", target: "sales", value: 120 },
1197
+ { source: "sales", target: "service", value: 86 },
1198
+ { source: "service", target: "renew", value: 54 }
1199
+ ],
1200
+ narrative: t
1201
+ };
1202
+ if (e.dataShape === "treeHierarchy") return Me(e, i);
1203
+ if (e.dataShape === "ganttTasks")
1204
+ return {
1205
+ shape: "ganttTasks",
1206
+ timeline: ["05-01", "05-08", "05-15", "05-22", "05-29"],
1207
+ tasks: [
1208
+ { label: "需求", start: 0, end: 1, status: "done", owner: "产品" },
1209
+ { label: "开发", start: 1, end: 3, status: "running", owner: "研发" },
1210
+ { label: "验收", start: 3, end: 4, status: "pending", owner: "业务" }
1211
+ ],
1212
+ narrative: t
1213
+ };
1214
+ if (e.dataShape === "candlestickSeries")
1215
+ return {
1216
+ shape: "candlestickSeries",
1217
+ categories: ["05-01", "05-08", "05-15", "05-22", "05-29"],
1218
+ values: [
1219
+ { open: 92, close: 98, low: 88, high: 104 },
1220
+ { open: 99, close: 95, low: 90, high: 108 },
1221
+ { open: 96, close: 112, low: 94, high: 118 },
1222
+ { open: 111, close: 108, low: 102, high: 121 },
1223
+ { open: 109, close: 124, low: 106, high: 130 }
1224
+ ],
1225
+ narrative: t
1226
+ };
1227
+ if (e.dataShape === "boxplotSeries")
1228
+ return {
1229
+ shape: "boxplotSeries",
1230
+ categories: ["销售", "交付", "财务", "研发", "运营"],
1231
+ values: [
1232
+ [18, 32, 48, 66, 78],
1233
+ [22, 38, 55, 72, 86],
1234
+ [14, 28, 43, 61, 74],
1235
+ [20, 36, 58, 76, 92],
1236
+ [16, 31, 49, 68, 82]
1237
+ ],
1238
+ narrative: t
1239
+ };
1240
+ if (e.dataShape === "paretoSeries")
1241
+ return {
1242
+ shape: "paretoSeries",
1243
+ categories: ["合同条款", "回款滞后", "资料缺失", "交付偏差"],
1244
+ bars: [42, 31, 18, 9],
1245
+ cumulative: [42, 73, 91, 100],
1246
+ narrative: t
1247
+ };
1248
+ if (e.dataShape === "networkGraph") return Pe(e, i);
1249
+ if (e.dataShape === "geoGlobe") return De(i);
1250
+ if (e.dataShape === "taskSummary")
1251
+ return {
1252
+ shape: "taskSummary",
1253
+ total: 12,
1254
+ overdue: 1,
1255
+ dueToday: 4,
1256
+ completed: 7,
1257
+ sourceLabel: "Canvas Runtime",
1258
+ items: [
1259
+ { id: "task-1", title: "审批销售合同", type: "workflow", owner: "张总", status: "pending", dueAt: "今日" },
1260
+ { id: "task-2", title: "确认回款计划", type: "document", owner: "李经理", status: "reading", dueAt: "明日" }
1261
+ ]
1262
+ };
1263
+ const l = Ae(e, i);
1264
+ return l || (e.dataShape === "customCanvas", $(e, i));
1265
+ }
1266
+ function Ve(e, a) {
1267
+ const t = G(e), i = O(e, t);
1268
+ return i || (t ? I(e, a, t) : H(e));
1269
+ }
1270
+ async function Xe(e, a) {
1271
+ const t = G(e), i = O(e, t);
1272
+ return i || (t ? we(t) ? await $e(e, a, t) : I(e, a, t) : H(e));
1273
+ }
1274
+ function O(e, a) {
1275
+ return a ? e.registryEntry && e.capabilityId && e.capabilityId !== e.registryEntry.capabilityId ? {
1276
+ status: "failed",
1277
+ registryEntry: a,
1278
+ reason: `宿主注册项与 capabilityId 不一致:${e.capabilityId}`,
1279
+ suggestion: "修正 userCustomCards.ts 中的 capabilityId。"
1280
+ } : a.status === "placeholder" ? {
1281
+ status: "failed",
1282
+ registryEntry: a,
1283
+ reason: a.honestFailure || `能力暂未实现:${a.capabilityId}`,
1284
+ suggestion: "该能力需要后续补齐实现后再开放。"
1285
+ } : a.status === "lifecycle" ? {
1286
+ status: "failed",
1287
+ registryEntry: a,
1288
+ reason: `生命周期能力不能通过 insertCard 创建:${a.capabilityId}`,
1289
+ suggestion: "请使用 updateCard.operation 进入改卡生命周期。"
1290
+ } : null : H(e);
1291
+ }
1292
+ function G(e) {
1293
+ return e.registryEntry ?? E(e);
1294
+ }
1295
+ function H(e) {
1296
+ return {
1297
+ status: "failed",
1298
+ reason: `能力不存在或未登记:${e.capabilityId || `${e.category || "-"}/${e.type || "-"}`}`,
1299
+ suggestion: "请使用 Card Registry 中已登记的 capabilityId,或补齐对应卡片能力。"
1300
+ };
1301
+ }
1302
+ function I(e, a, t, i) {
1303
+ var p, w, m, T, u, b, v, f;
1304
+ const r = String(((p = e.meta) == null ? void 0 : p.id) || ((w = e.layout) == null ? void 0 : w.i) || ye()), s = (e.layout ? le : se)({
1305
+ preset: ((m = e.size) == null ? void 0 : m.preset) || "medium",
1306
+ width: (T = e.size) == null ? void 0 : T.width,
1307
+ height: (u = e.size) == null ? void 0 : u.height,
1308
+ layout: e.layout,
1309
+ placed: a
1310
+ }), n = ((b = e.renderer) == null ? void 0 : b.rendererKey) || t.rendererKey;
1311
+ return { status: "success", block: {
1312
+ id: r,
1313
+ version: 1,
1314
+ blockType: t.blockType,
1315
+ subType: t.subType,
1316
+ title: e.title || t.title,
1317
+ subtitle: e.subtitle || t.description,
1318
+ layout: oe(r, s),
1319
+ intent: {
1320
+ scene: "personal_workbench_canvas_runtime",
1321
+ bizIntent: e.title || t.title,
1322
+ roleTemplate: "canvas_runtime"
1323
+ },
1324
+ source: {
1325
+ sourceType: "canvas_runtime",
1326
+ service: "card_factory",
1327
+ resourceKey: t.capabilityId,
1328
+ params: {
1329
+ capabilityId: t.capabilityId,
1330
+ category: t.category,
1331
+ type: t.type,
1332
+ variant: t.variant
1333
+ }
1334
+ },
1335
+ renderer: (i == null ? void 0 : i.renderer) ?? {
1336
+ engine: ((v = e.renderer) == null ? void 0 : v.engine) || "echarts",
1337
+ rendererKey: n,
1338
+ preset: (f = e.renderer) == null ? void 0 : f.preset
1339
+ },
1340
+ state: be(),
1341
+ data: (i == null ? void 0 : i.data) ?? Be(t, e.data),
1342
+ meta: {
1343
+ ...e.meta,
1344
+ ...(i == null ? void 0 : i.meta) ?? {},
1345
+ capabilityId: t.capabilityId,
1346
+ macroCapabilityId: t.category,
1347
+ handlerClassName: t.handlerClassName,
1348
+ dataShape: t.dataShape,
1349
+ shell: t.shell,
1350
+ styleVariants: t.styleVariants,
1351
+ canvasRuntime: !0,
1352
+ layoutBasis: {
1353
+ baseCols: 100,
1354
+ w: s.w,
1355
+ h: s.h
1356
+ }
1357
+ }
1358
+ }, registryEntry: t };
1359
+ }
1360
+ async function $e(e, a, t) {
1361
+ const i = await he(t);
1362
+ return i.ok ? I(e, a, t, {
1363
+ renderer: i.renderer,
1364
+ data: i.data,
1365
+ meta: i.meta
1366
+ }) : { status: "failed", registryEntry: t, reason: i.reason };
1367
+ }
1368
+ export {
1369
+ R as D,
1370
+ d as L,
1371
+ g as S,
1372
+ Xe as a,
1373
+ je as b,
1374
+ Ve as c,
1375
+ Ye as d,
1376
+ K as e,
1377
+ qe as f,
1378
+ _ as g,
1379
+ ie as h,
1380
+ N as i,
1381
+ Ne as j,
1382
+ C as k,
1383
+ oe as l,
1384
+ We as m,
1385
+ Q as n,
1386
+ Ee as o,
1387
+ Oe as p,
1388
+ se as q,
1389
+ le as r,
1390
+ Ge as s,
1391
+ Ue as t
1392
+ };