@blueking/bkflow-canvas-editor 1.1.0-beta.5 → 1.1.0-beta.7

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 @@
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("vue"),B=require("bkui-vue/lib"),N=require("bkui-vue/lib/message"),E=require("lodash"),r=require("./index-CZfjC730.cjs"),F={key:0,class:"mock-data-sideslider__title-sep"},M=["title"],q={class:"mock-data-sideslider"},j={class:"mock-data-sideslider__footer"},D=e.defineComponent({__name:"index",props:{show:{type:Boolean},node:{default:null},outputs:{default:()=>({})},pending:{type:Boolean,default:!1}},emits:["confirm","close","update:show"],setup(v,{emit:f}){const t=v,p=f,y=r.useFlowApiConfig(),m=e.ref(!1),d=e.shallowRef([]),u=e.ref({}),k=e.ref({}),h=async()=>{if(t.node){m.value=!0,k.value={};try{const n=await r.pluginDetailRequest(y,t.node.component);d.value=r.mergeOutputs(n.outputs??[]);const o=t.outputs??{},s={};d.value.forEach(l=>{const c=Object.prototype.hasOwnProperty.call(o,l.key)?o[l.key]:l.type==="object"?{}:void 0,a=r.resolveMockFormControl(l);s[l.key]=a==="json-editor"||a==="data-table"?r.formatJsonFieldValue(c):c}),u.value=s}catch(n){console.error(n),d.value=[],u.value={},N({theme:"error",message:"加载输出参数失败"})}finally{m.value=!1}}},b=()=>{const n={},o={};return d.value.forEach(s=>{const l=u.value[s.key],c=r.resolveMockFormControl(s);if(c==="json-editor"||c==="data-table"){const a=r.parseJsonFieldValue(l);if(!a.valid){n[s.key]=a.message;return}a.value!==void 0&&(o[s.key]=a.value);return}l!==void 0&&l!==""&&(o[s.key]=l)}),{errors:n,outputs:o}},w=n=>{B.InfoBox({title:"确认 Mock 输出?",content:"Mock 输出将覆盖当前输出参数,执行时跳过该节点并以 Mock 值替代实际输出",confirmText:"确定",cancelText:"取消",width:400,onConfirm:()=>{n()}})},C=()=>{const{errors:n,outputs:o}=b();k.value=n,!(Object.keys(n).length>0)&&w(()=>p("confirm",{outputs:o}))},_=()=>{p("close"),p("update:show",!1)};return e.watch(()=>[t.show,t.node?.id],([n])=>{n&&t.node&&(u.value=E.cloneDeep(t.outputs??{}),h())},{immediate:!0}),(n,o)=>{const s=e.resolveComponent("bk-form-item"),l=e.resolveComponent("bk-form"),c=e.resolveComponent("bk-exception"),a=e.resolveComponent("bk-button"),g=e.resolveComponent("bk-sideslider"),x=e.resolveDirective("bkloading");return e.openBlock(),e.createBlock(g,{"is-show":t.show,width:640,"quick-close":"","esc-close":!1,onClosed:_},{header:e.withCtx(()=>[o[0]||(o[0]=e.createElementVNode("span",{class:"mock-data-sideslider__title"},"Mock 输出",-1)),t.node?.name?(e.openBlock(),e.createElementBlock("span",F,"-")):e.createCommentVNode("",!0),t.node?.name?(e.openBlock(),e.createElementBlock("span",{key:1,class:"mock-data-sideslider__title-node",title:t.node.name},e.toDisplayString(t.node.name),9,M)):e.createCommentVNode("",!0)]),footer:e.withCtx(()=>[e.createElementVNode("div",j,[e.createVNode(a,{theme:"primary","data-test":"mock-confirm",loading:t.pending,onClick:C},{default:e.withCtx(()=>[...o[1]||(o[1]=[e.createTextVNode(" 确定 ",-1)])]),_:1},8,["loading"]),e.createVNode(a,{disabled:t.pending,onClick:_},{default:e.withCtx(()=>[...o[2]||(o[2]=[e.createTextVNode("取消",-1)])]),_:1},8,["disabled"])])]),default:e.withCtx(()=>[e.withDirectives((e.openBlock(),e.createElementBlock("div",q,[d.value.length>0?(e.openBlock(),e.createBlock(l,{key:0,"form-type":"vertical","label-width":120,"data-test":"mock-outputs-form"},{default:e.withCtx(()=>[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(d.value,i=>(e.openBlock(),e.createBlock(s,{key:i.key,label:i.name||i.key},{default:e.withCtx(()=>[e.createVNode(r.MockFieldRenderer,{modelValue:u.value[i.key],"onUpdate:modelValue":V=>u.value[i.key]=V,field:i,error:k.value[i.key]},null,8,["modelValue","onUpdate:modelValue","field","error"])]),_:2},1032,["label"]))),128))]),_:1})):m.value?e.createCommentVNode("",!0):(e.openBlock(),e.createBlock(c,{key:1,class:"mock-data-sideslider__exception",scene:"part",type:"empty",title:"暂无输出参数"}))])),[[x,{loading:m.value}]])]),_:1},8,["is-show"])}}}),O=r._export_sfc(D,[["__scopeId","data-v-8f1333c7"]]);exports.default=O;
@@ -0,0 +1,159 @@
1
+ import { defineComponent as T, ref as y, shallowRef as q, watch as I, resolveComponent as m, resolveDirective as J, openBlock as l, createBlock as k, withCtx as c, withDirectives as U, createElementBlock as _, Fragment as z, renderList as A, createVNode as b, createCommentVNode as h, createElementVNode as w, createTextVNode as V, toDisplayString as L } from "vue";
2
+ import { InfoBox as P } from "bkui-vue/lib";
3
+ import S from "bkui-vue/lib/message";
4
+ import { cloneDeep as W } from "lodash";
5
+ import { u as G, M as H, p as K, m as Q, r as x, f as X, a as Y, _ as Z } from "./index-CIEiIRmL.js";
6
+ const $ = {
7
+ key: 0,
8
+ class: "mock-data-sideslider__title-sep"
9
+ }, ee = ["title"], oe = { class: "mock-data-sideslider" }, te = { class: "mock-data-sideslider__footer" }, se = /* @__PURE__ */ T({
10
+ __name: "index",
11
+ props: {
12
+ show: { type: Boolean },
13
+ node: { default: null },
14
+ outputs: { default: () => ({}) },
15
+ pending: { type: Boolean, default: !1 }
16
+ },
17
+ emits: ["confirm", "close", "update:show"],
18
+ setup(C, { emit: F }) {
19
+ const o = C, f = F, M = G(), p = y(!1), d = q([]), u = y({}), v = y({}), B = async () => {
20
+ if (o.node) {
21
+ p.value = !0, v.value = {};
22
+ try {
23
+ const t = await K(M, o.node.component);
24
+ d.value = Q(t.outputs ?? []);
25
+ const e = o.outputs ?? {}, a = {};
26
+ d.value.forEach((s) => {
27
+ const r = Object.prototype.hasOwnProperty.call(e, s.key) ? e[s.key] : s.type === "object" ? {} : void 0, n = x(s);
28
+ a[s.key] = n === "json-editor" || n === "data-table" ? X(r) : r;
29
+ }), u.value = a;
30
+ } catch (t) {
31
+ console.error(t), d.value = [], u.value = {}, S({ theme: "error", message: "加载输出参数失败" });
32
+ } finally {
33
+ p.value = !1;
34
+ }
35
+ }
36
+ }, D = () => {
37
+ const t = {}, e = {};
38
+ return d.value.forEach((a) => {
39
+ const s = u.value[a.key], r = x(a);
40
+ if (r === "json-editor" || r === "data-table") {
41
+ const n = Y(s);
42
+ if (!n.valid) {
43
+ t[a.key] = n.message;
44
+ return;
45
+ }
46
+ n.value !== void 0 && (e[a.key] = n.value);
47
+ return;
48
+ }
49
+ s !== void 0 && s !== "" && (e[a.key] = s);
50
+ }), { errors: t, outputs: e };
51
+ }, j = (t) => {
52
+ P({
53
+ title: "确认 Mock 输出?",
54
+ content: "Mock 输出将覆盖当前输出参数,执行时跳过该节点并以 Mock 值替代实际输出",
55
+ confirmText: "确定",
56
+ cancelText: "取消",
57
+ width: 400,
58
+ onConfirm: () => {
59
+ t();
60
+ }
61
+ });
62
+ }, E = () => {
63
+ const { errors: t, outputs: e } = D();
64
+ v.value = t, !(Object.keys(t).length > 0) && j(() => f("confirm", { outputs: e }));
65
+ }, g = () => {
66
+ f("close"), f("update:show", !1);
67
+ };
68
+ return I(
69
+ () => [o.show, o.node?.id],
70
+ ([t]) => {
71
+ t && o.node && (u.value = W(o.outputs ?? {}), B());
72
+ },
73
+ { immediate: !0 }
74
+ ), (t, e) => {
75
+ const a = m("bk-form-item"), s = m("bk-form"), r = m("bk-exception"), n = m("bk-button"), N = m("bk-sideslider"), O = J("bkloading");
76
+ return l(), k(N, {
77
+ "is-show": o.show,
78
+ width: 640,
79
+ "quick-close": "",
80
+ "esc-close": !1,
81
+ onClosed: g
82
+ }, {
83
+ header: c(() => [
84
+ e[0] || (e[0] = w("span", { class: "mock-data-sideslider__title" }, "Mock 输出", -1)),
85
+ o.node?.name ? (l(), _("span", $, "-")) : h("", !0),
86
+ o.node?.name ? (l(), _("span", {
87
+ key: 1,
88
+ class: "mock-data-sideslider__title-node",
89
+ title: o.node.name
90
+ }, L(o.node.name), 9, ee)) : h("", !0)
91
+ ]),
92
+ footer: c(() => [
93
+ w("div", te, [
94
+ b(n, {
95
+ theme: "primary",
96
+ "data-test": "mock-confirm",
97
+ loading: o.pending,
98
+ onClick: E
99
+ }, {
100
+ default: c(() => [...e[1] || (e[1] = [
101
+ V(" 确定 ", -1)
102
+ ])]),
103
+ _: 1
104
+ }, 8, ["loading"]),
105
+ b(n, {
106
+ disabled: o.pending,
107
+ onClick: g
108
+ }, {
109
+ default: c(() => [...e[2] || (e[2] = [
110
+ V("取消", -1)
111
+ ])]),
112
+ _: 1
113
+ }, 8, ["disabled"])
114
+ ])
115
+ ]),
116
+ default: c(() => [
117
+ U((l(), _("div", oe, [
118
+ d.value.length > 0 ? (l(), k(s, {
119
+ key: 0,
120
+ "form-type": "vertical",
121
+ "label-width": 120,
122
+ "data-test": "mock-outputs-form"
123
+ }, {
124
+ default: c(() => [
125
+ (l(!0), _(z, null, A(d.value, (i) => (l(), k(a, {
126
+ key: i.key,
127
+ label: i.name || i.key
128
+ }, {
129
+ default: c(() => [
130
+ b(H, {
131
+ modelValue: u.value[i.key],
132
+ "onUpdate:modelValue": (R) => u.value[i.key] = R,
133
+ field: i,
134
+ error: v.value[i.key]
135
+ }, null, 8, ["modelValue", "onUpdate:modelValue", "field", "error"])
136
+ ]),
137
+ _: 2
138
+ }, 1032, ["label"]))), 128))
139
+ ]),
140
+ _: 1
141
+ })) : p.value ? h("", !0) : (l(), k(r, {
142
+ key: 1,
143
+ class: "mock-data-sideslider__exception",
144
+ scene: "part",
145
+ type: "empty",
146
+ title: "暂无输出参数"
147
+ }))
148
+ ])), [
149
+ [O, { loading: p.value }]
150
+ ])
151
+ ]),
152
+ _: 1
153
+ }, 8, ["is-show"]);
154
+ };
155
+ }
156
+ }), ce = /* @__PURE__ */ Z(se, [["__scopeId", "data-v-8f1333c7"]]);
157
+ export {
158
+ ce as default
159
+ };
@@ -0,0 +1 @@
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("vue"),_=require("./index-CZfjC730.cjs"),E=require("./composable-YlUVct40.cjs"),$={class:"debug-result-node-list"},L=["data-node-id","aria-selected","onClick","onKeydown"],G=["title"],P={key:0,class:"debug-result-node-list__mock","data-test":"node-mock-flag"},A={key:1,class:"debug-result-node-list__empty"},D=e.defineComponent({__name:"node-list",props:{nodes:{},modelValue:{default:""}},emits:["update:modelValue"],setup(n,{emit:r}){const t=n,s=r,u=e.ref(""),a=e.ref("all"),c=e.ref(null),m=[{value:"all",label:"全部"},{value:"finished",icon:"bkflow-canvas-dark-circle-checkbox",iconColor:"#2dcb56"},{value:"failed",icon:"bkflow-canvas-circle-alert-filled",iconColor:"#ea3636"},{value:"running",iconComponent:_.LoadingStatusIcon,iconColor:"#3a84ff"},{value:"suspended",icon:"bkflow-canvas-guaqi",iconColor:"#ff9c01"},{value:"skipped",icon:"bkflow-canvas-tiaoguo",iconColor:"#6e89af"}],v=e.computed(()=>m.map(d=>({...d,count:d.value==="all"?t.nodes.length:t.nodes.filter(i=>i.status===d.value).length}))),b=e.computed(()=>{const d=u.value.trim().toLowerCase();return t.nodes.filter(i=>a.value!=="all"&&i.status!==a.value?!1:d?i.name.toLowerCase().includes(d)||i.type.toLowerCase().includes(d)||(i.typeName??"").toLowerCase().includes(d):!0)}),f={finished:"成功",failed:"失败",running:"正在调试",suspended:"挂起",skipped:"跳过"},y=e.computed(()=>u.value.trim()?"搜索结果为空":a.value!=="all"?`暂无${f[a.value]}状态节点`:"暂无节点"),V=()=>{u.value="",a.value="all"};return e.watch(()=>t.modelValue,async d=>{if(!d)return;!b.value.some(o=>o.id===d)&&t.nodes.some(o=>o.id===d)&&(u.value="",a.value="all",await e.nextTick()),c.value?.querySelector(`[data-node-id="${CSS.escape(d)}"]`)?.scrollIntoView({block:"nearest"})}),(d,i)=>{const l=e.resolveComponent("bk-input");return e.openBlock(),e.createElementBlock("aside",$,[e.createVNode(l,{modelValue:u.value,"onUpdate:modelValue":i[0]||(i[0]=o=>u.value=o),class:"debug-result-node-list__search",placeholder:"搜索节点名称 / 类型",type:"search",clearable:"","data-test":"node-search"},null,8,["modelValue"]),e.createVNode(_.SegmentTabs,{modelValue:a.value,"onUpdate:modelValue":i[1]||(i[1]=o=>a.value=o),class:"debug-result-node-list__filters","data-test":"status-filters",items:v.value},null,8,["modelValue","items"]),b.value.length>0?(e.openBlock(),e.createElementBlock("div",{key:0,ref_key:"itemsRef",ref:c,class:"debug-result-node-list__items",role:"listbox"},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(b.value,o=>(e.openBlock(),e.createElementBlock("div",{key:o.id,class:e.normalizeClass(["debug-result-node-list__item",`is-${o.status}`,{"is-active":o.id===t.modelValue,"is-unconfigured":!o.isConfigured}]),role:"option","data-test":"node-item","data-node-id":o.id,"aria-selected":o.id===t.modelValue,tabindex:"0",onClick:g=>s("update:modelValue",o.id),onKeydown:e.withKeys(e.withModifiers(g=>s("update:modelValue",o.id),["prevent"]),["enter","space"])},[e.createElementVNode("span",{class:e.normalizeClass(["debug-result-node-list__status",`is-${o.status}`,{"is-placeholder":!o.isConfigured}])},[o.isConfigured&&o.status==="running"?(e.openBlock(),e.createBlock(_.LoadingStatusIcon,{key:0,size:12})):o.icon?(e.openBlock(),e.createElementBlock("i",{key:1,class:e.normalizeClass(o.icon),"data-test":"node-icon"},null,2)):e.createCommentVNode("",!0)],2),e.createElementVNode("span",{class:"debug-result-node-list__name",title:o.isConfigured?`${o.name} ${o.typeName||o.type}`:o.name},e.toDisplayString(o.name),9,G),o.isMock?(e.openBlock(),e.createElementBlock("span",P,"MOCK")):e.createCommentVNode("",!0)],42,L))),128))],512)):(e.openBlock(),e.createElementBlock("div",A,[e.createVNode(_.EmptyException,{"is-search":!1,title:y.value,onClear:V},null,8,["title"])]))])}}}),z=_._export_sfc(D,[["__scopeId","data-v-7088d550"]]);function U(n){if(n==null)return"";if(typeof n=="string")return n;if(typeof n=="object"){const r=n,t=r.message;if(typeof t=="string"&&t){const s=r.type;return typeof s=="string"&&s?`${s}: ${t}`:t}try{return JSON.stringify(n)}catch{return String(n)}}return String(n)}const I={class:"debug-result-tabs"},O={class:"debug-result-tabs__execution","data-test":"tab-execution"},F={class:"debug-result-tabs__row"},j={class:"value"},q={class:"debug-result-tabs__row"},H={class:"value"},Y={key:0,class:"debug-result-tabs__row is-error"},K={class:"value"},J={key:0,class:"debug-result-tabs__mock-banner","data-test":"mock-banner"},W={key:1,class:"debug-result-tabs__error-banner","data-test":"output-error"},Q={key:0,class:"debug-result-tabs__error-text"},X={class:"debug-result-tabs__error-guide"},Z={class:"debug-result-tabs__logs","data-test":"tab-logs"},ee=e.defineComponent({__name:"result-tabs",props:{result:{},isMock:{type:Boolean,default:!1}},emits:["reEditMock","runReal","runMock"],setup(n,{emit:r}){const t=n,s=r,u=e.ref("execution"),a={not_run:"未调试",running:"正在调试",finished:"成功",failed:"失败",suspended:"挂起",skipped:"跳过"},c=e.computed(()=>a[t.result.execution.status]??t.result.execution.status),m=e.computed(()=>{const i=t.result.execution.durationMs;return i==null?"--":`${(i/1e3).toFixed(1)}s`}),v=e.computed(()=>U(t.result.error||t.result.execution.errorDetail)),b=e.computed(()=>t.result.execution.status==="failed"),f=i=>Object.entries(i??{}).map(([l,o])=>({key:l,name:l,value:o})),y=e.computed(()=>f(t.result.inputs)),V=e.computed(()=>f(t.result.outputs)),d=e.computed(()=>t.result.logs==null?"":_.normalizeLogText(t.result.logs));return(i,l)=>{const o=e.resolveComponent("bk-tab-panel"),g=e.resolveComponent("bk-button"),N=e.resolveComponent("bk-tab");return e.openBlock(),e.createElementBlock("div",I,[e.createVNode(N,{active:u.value,"onUpdate:active":l[3]||(l[3]=w=>u.value=w),type:"card-grid"},{default:e.withCtx(()=>[e.createVNode(o,{name:"execution",label:"执行信息"},{default:e.withCtx(()=>[e.createElementVNode("div",O,[e.createElementVNode("div",F,[l[4]||(l[4]=e.createElementVNode("span",{class:"label"},"执行状态",-1)),e.createElementVNode("span",j,e.toDisplayString(c.value),1)]),e.createElementVNode("div",q,[l[5]||(l[5]=e.createElementVNode("span",{class:"label"},"调试用时",-1)),e.createElementVNode("span",H,e.toDisplayString(m.value),1)]),v.value?(e.openBlock(),e.createElementBlock("div",Y,[l[6]||(l[6]=e.createElementVNode("span",{class:"label"},"错误信息",-1)),e.createElementVNode("span",K,e.toDisplayString(v.value),1)])):e.createCommentVNode("",!0)])]),_:1}),e.createVNode(o,{name:"inputs",label:"输入参数"},{default:e.withCtx(()=>[e.createVNode(_.DebugValueTable,{rows:y.value,loading:t.result.loading,error:t.result.detailError,"empty-text":"暂无输入参数"},null,8,["rows","loading","error"])]),_:1}),e.createVNode(o,{name:"outputs",label:"输出结果"},{default:e.withCtx(()=>[t.isMock?(e.openBlock(),e.createElementBlock("div",J,[l[8]||(l[8]=e.createElementVNode("span",null,"当前为 Mock 数据",-1)),e.createVNode(g,{text:"",theme:"primary",size:"small","data-test":"re-edit-mock",onClick:l[0]||(l[0]=w=>s("reEditMock"))},{default:e.withCtx(()=>[...l[7]||(l[7]=[e.createTextVNode(" 重新编辑 ",-1)])]),_:1})])):e.createCommentVNode("",!0),b.value?(e.openBlock(),e.createElementBlock("div",W,[v.value?(e.openBlock(),e.createElementBlock("p",Q,e.toDisplayString(v.value),1)):e.createCommentVNode("",!0),e.createElementVNode("p",X,[l[11]||(l[11]=e.createElementVNode("span",null,"该节点调试失败,可",-1)),e.createVNode(g,{text:"",theme:"primary","data-test":"rerun-real",onClick:l[1]||(l[1]=w=>s("runReal"))},{default:e.withCtx(()=>[...l[9]||(l[9]=[e.createTextVNode("重新调试",-1)])]),_:1}),l[12]||(l[12]=e.createElementVNode("span",null,"或直接",-1)),e.createVNode(g,{text:"",theme:"primary","data-test":"run-mock",onClick:l[2]||(l[2]=w=>s("runMock"))},{default:e.withCtx(()=>[...l[10]||(l[10]=[e.createTextVNode("Mock 输出",-1)])]),_:1})])])):(e.openBlock(),e.createBlock(_.DebugValueTable,{key:2,rows:V.value,loading:t.result.loading,error:t.result.detailError,"empty-text":"暂无输出结果"},null,8,["rows","loading","error"]))]),_:1}),e.createVNode(o,{name:"logs",label:"调用日志"},{default:e.withCtx(()=>[e.createElementVNode("div",Z,[e.createVNode(_.CallLogsViewer,{"log-text":d.value,loading:t.result.loading,error:t.result.logError},null,8,["log-text","loading","error"])])]),_:1})]),_:1},8,["active"])])}}}),te=_._export_sfc(ee,[["__scopeId","data-v-99ed168c"]]),oe={ExclusiveGateway:"bkflow-canvas-fenzhiwangguan",ParallelGateway:"bkflow-canvas-bingxingwangguan",ConditionalParallelGateway:"bkflow-canvas-tiaojianbingxingwangguan",ConvergeGateway:"bkflow-canvas-huijuwangguan"},C={ServiceActivity:"任务节点",EmptyStartEvent:"开始节点",EmptyEndEvent:"结束节点",ExclusiveGateway:"分支网关",ParallelGateway:"并行网关",ConditionalParallelGateway:"条件并行网关",ConvergeGateway:"汇聚网关"};function le(n){if(!n.component?.code)return"";if(n.component.code==="uniform_api"){const r=n.component.api_meta?.category?.name??"";return E.PLUGGIN_GROUP_FONT_CLASS_MAP[r]??E.PLUGGIN_GROUP_FONT_CLASS_MAP.bkflow}return E.PLUGGIN_GROUP_FONT_CLASS_MAP.bkflow}function ne(n,r){const t=n?.location?.find(c=>c.id===r),s=t?.icon??"",u=n?.activities?.[r];if(u)return{name:!!u.component?.code?u.name||t?.name||r:"节点未配置",type:u.type||"ServiceActivity",typeName:C[u.type]??"任务节点",icon:le(u)};const a=n?.gateways?.[r];return a?{name:a.name||t?.name||C[a.type]||r,type:a.type,typeName:C[a.type]??"网关",icon:s||oe[a.type]||""}:n?.start_event?.id===r?{name:n.start_event.name||"开始",type:"EmptyStartEvent",typeName:"开始节点",icon:s||"bkflow-canvas-kaishi"}:n?.end_event?.id===r?{name:n.end_event.name||"结束",type:"EmptyEndEvent",typeName:"结束节点",icon:s||"bkflow-canvas-stop"}:t?{name:t.name||r,type:t.type||"",typeName:"",icon:s}:{name:r,type:"",typeName:"",icon:""}}function ae(n,r,t=new Set){const s=n?.activities;if(!s)return[];const u=new Map((r??[]).map(a=>[a.node_id,a.status]));return Object.values(s).map(a=>{const c=!!a.component?.code,m=ne(n,a.id);return{id:a.id,name:m.name,type:m.type||a.type,typeName:m.typeName,icon:m.icon,status:u.get(a.id)??"not_run",isMock:t.has(a.id),isConfigured:c}})}const se={class:"debug-result-drawer__header"},re={class:"debug-result-drawer__header-left"},ue={class:"debug-result-drawer__body"},ie={key:0,class:"debug-result-drawer__params","data-test":"params-panel"},de={class:"debug-result-drawer__params-body"},ce={class:"debug-result-drawer__content"},me={class:"debug-result-drawer__result"},pe=44,_e=e.defineComponent({__name:"index",props:{open:{type:Boolean},context:{},pipelineTree:{},mockNodeIds:{},modelValue:{default:""},result:{},hasGlobalRun:{type:Boolean,default:!1},globalInputs:{default:()=>({})}},emits:["update:open","update:modelValue","reEditMock","runReal","runMock"],setup(n,{emit:r}){const t=n,s=r,u=e.ref(!1),a=u,c=e.ref(420),m=e.ref(!1);let v=0,b=0,f="",y="";const V=e.computed(()=>({height:`${t.open?c.value:pe}px`})),d=()=>{s("update:open",!t.open)},i=k=>{const p=b-(k.clientY-v);c.value=Math.max(200,Math.min(window.innerHeight*.8,p))},l=()=>{document.removeEventListener("mousemove",i),document.removeEventListener("mouseup",l),document.body.style.cursor=f,document.body.style.userSelect=y,m.value=!1},o=k=>{k.preventDefault(),m.value=!0,v=k.clientY,b=c.value,f=document.body.style.cursor,y=document.body.style.userSelect,document.body.style.cursor="ns-resize",document.body.style.userSelect="none",document.addEventListener("mousemove",i),document.addEventListener("mouseup",l)};e.onBeforeUnmount(l);const g=e.computed({get:()=>t.modelValue,set:k=>s("update:modelValue",k)}),N=e.computed(()=>ae(t.pipelineTree,t.context?.nodes,t.mockNodeIds)),w=e.computed(()=>t.mockNodeIds.has(t.modelValue)),x=()=>{t.hasGlobalRun&&(u.value=!u.value)},h=()=>{t.modelValue&&s("reEditMock",t.modelValue)},B=()=>{t.modelValue&&s("runReal",t.modelValue)},S=()=>{t.modelValue&&s("runMock",t.modelValue)};return(k,p)=>{const M=e.resolveComponent("bk-button"),T=e.resolveDirective("bk-tooltips");return e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(["debug-result-drawer-wrapper",{"is-resizing":m.value}]),style:e.normalizeStyle(V.value)},[t.open?(e.openBlock(),e.createElementBlock("div",{key:0,class:"debug-result-drawer__resize",onMousedown:o},null,32)):e.createCommentVNode("",!0),e.createElementVNode("section",{class:e.normalizeClass(["debug-result-drawer",{"is-collapsed":!t.open}])},[e.createElementVNode("header",se,[e.createElementVNode("div",re,[p[2]||(p[2]=e.createElementVNode("span",{class:"debug-result-drawer__title"},"调试结果",-1)),p[3]||(p[3]=e.createElementVNode("span",{class:"debug-result-drawer__divider"},null,-1)),e.withDirectives((e.openBlock(),e.createBlock(M,{text:"",theme:"primary","data-test":"view-params",disabled:!t.hasGlobalRun,onClick:x},{default:e.withCtx(()=>[...p[1]||(p[1]=[e.createTextVNode(" 查看参数 ",-1)])]),_:1},8,["disabled"])),[[T,{content:"请先进行调试",disabled:t.hasGlobalRun}]])]),e.createElementVNode("span",{class:"debug-result-drawer__collapse",onClick:d},[e.createElementVNode("span",null,e.toDisplayString(t.open?"收起":"展开"),1),e.createElementVNode("i",{class:e.normalizeClass(["bkflow-canvas-icon bkflow-canvas-arrows-down debug-result-drawer__collapse-icon",{"is-expanded":t.open}])},null,2)])]),e.createElementVNode("div",ue,[e.unref(a)?(e.openBlock(),e.createElementBlock("div",ie,[p[4]||(p[4]=e.createElementVNode("div",{class:"debug-result-drawer__params-title"},"本次调试输入参数",-1)),e.createElementVNode("div",de,[e.createVNode(_.DebugJsonViewer,{value:t.globalInputs??{},"default-expanded":!0},null,8,["value"])])])):e.createCommentVNode("",!0),e.createElementVNode("div",ce,[e.createVNode(z,{modelValue:g.value,"onUpdate:modelValue":p[0]||(p[0]=R=>g.value=R),nodes:N.value},null,8,["modelValue","nodes"]),e.createElementVNode("div",me,[e.createVNode(te,{result:t.result,"is-mock":w.value,onReEditMock:h,onRunReal:B,onRunMock:S},null,8,["result","is-mock"])])])])],2)],6)}}}),ve=_._export_sfc(_e,[["__scopeId","data-v-a977e91c"]]);exports.default=ve;
@@ -0,0 +1,178 @@
1
+ import { defineComponent as $, ref as _, shallowRef as h, computed as V, watch as A, resolveComponent as C, resolveDirective as O, openBlock as c, createBlock as d, withCtx as m, withDirectives as P, createElementBlock as U, createElementVNode as F, unref as K, createCommentVNode as g, createVNode as x, createTextVNode as B } from "vue";
2
+ import { cloneDeep as p } from "lodash";
3
+ import { u as G, i as H, g as Y, B as z, R as J, E as M, _ as Q } from "./index-CIEiIRmL.js";
4
+ import "bkui-vue/lib/message";
5
+ import "bkui-vue/lib/icon";
6
+ import "monaco-editor";
7
+ const S = {
8
+ string: "input",
9
+ text: "input",
10
+ textarea: "textarea",
11
+ int: "input",
12
+ integer: "input",
13
+ number: "input",
14
+ float: "input",
15
+ json: "json",
16
+ object: "json",
17
+ array: "array",
18
+ list: "array",
19
+ select: "select",
20
+ time: "timepicker",
21
+ datetime: "timepicker"
22
+ }, j = (e) => e.replace(/^\$\{(.+)\}$/, "$1"), E = (e) => `\${${j(e)}}`;
23
+ function W(e, i) {
24
+ const o = E(e.key), t = i ? p(i) : {}, l = e.custom_type ?? t.custom_type ?? S[e.type] ?? "input";
25
+ return {
26
+ ...t,
27
+ key: o,
28
+ name: e.name ?? t.name ?? j(e.key),
29
+ custom_type: l,
30
+ desc: t.desc ?? "",
31
+ index: t.index ?? 0,
32
+ show_type: "show",
33
+ source_info: t.source_info ?? {},
34
+ source_tag: t.source_tag ?? "",
35
+ source_type: t.source_type ?? "custom",
36
+ validation: t.validation ?? "",
37
+ value: e.default ?? t.value,
38
+ meta: {
39
+ ...t.meta ?? {},
40
+ required: e.required ?? t.meta?.required ?? !1
41
+ }
42
+ };
43
+ }
44
+ function X(e, i = {}) {
45
+ if (!e) return {};
46
+ const o = e.constants;
47
+ return o && Object.keys(o).length > 0 ? { ...o } : Array.isArray(e.fields) && e.fields.length > 0 ? e.fields.reduce((t, l) => {
48
+ const s = E(l.key);
49
+ return t[s] = W(l, i[s]), t;
50
+ }, {}) : {};
51
+ }
52
+ const Z = { class: "global-debug-input" }, ee = { class: "form-params-wrapper" }, te = { class: "sideslider-footer-buttons" }, oe = /* @__PURE__ */ $({
53
+ __name: "index",
54
+ props: {
55
+ show: { type: Boolean },
56
+ schema: {},
57
+ pipelineConstants: { default: () => ({}) },
58
+ initialValues: { default: () => ({}) },
59
+ pending: { type: Boolean, default: !1 }
60
+ },
61
+ emits: ["confirm", "close", "update:show"],
62
+ setup(e, { emit: i }) {
63
+ const o = e, t = i, l = G(), s = _({}), k = h([]), u = h([]), f = h(!1), v = _(), b = _(), y = V(() => k.value.filter((a) => H(a))), R = V(() => y.value.length > 0 || u.value.length > 0);
64
+ A(
65
+ () => o.show,
66
+ (a) => {
67
+ a && (s.value = p(o.initialValues ?? {}), D());
68
+ }
69
+ );
70
+ const D = async () => {
71
+ const a = X(o.schema, o.pipelineConstants), n = Object.values(a).filter(
72
+ (r) => typeof r == "object" && r !== null && r.show_type === "show"
73
+ );
74
+ if (k.value = n, Object.keys(a).length < 1) {
75
+ u.value = [];
76
+ return;
77
+ }
78
+ f.value = !0;
79
+ try {
80
+ u.value = await Y(l, a);
81
+ } catch (r) {
82
+ console.error("Failed to build debug input forms from schema:", r), u.value = [];
83
+ } finally {
84
+ f.value = !1;
85
+ }
86
+ }, I = (a) => {
87
+ s.value = { ...s.value, ...p(a) };
88
+ }, L = async () => {
89
+ const [a, n] = await Promise.all([
90
+ Promise.resolve(
91
+ typeof b.value?.validate == "function" ? b.value.validate() : !0
92
+ ),
93
+ Promise.resolve(typeof v.value?.validate == "function" ? v.value.validate() : !0)
94
+ ]);
95
+ !a || !n || t("confirm", p(s.value));
96
+ }, w = () => {
97
+ t("close"), t("update:show", !1);
98
+ };
99
+ return (a, n) => {
100
+ const r = C("bk-button"), q = C("bk-sideslider"), N = O("bkloading");
101
+ return c(), d(q, {
102
+ title: "调试参数",
103
+ "is-show": o.show,
104
+ width: 700,
105
+ "quick-close": !0,
106
+ "esc-close": !1,
107
+ onClosed: w
108
+ }, {
109
+ footer: m(() => [
110
+ F("div", te, [
111
+ x(r, {
112
+ theme: "primary",
113
+ "data-test": "save-and-run",
114
+ loading: o.pending,
115
+ onClick: L
116
+ }, {
117
+ default: m(() => [...n[1] || (n[1] = [
118
+ B(" 保存并执行 ", -1)
119
+ ])]),
120
+ _: 1
121
+ }, 8, ["loading"]),
122
+ x(r, {
123
+ disabled: o.pending,
124
+ onClick: w
125
+ }, {
126
+ default: m(() => [...n[2] || (n[2] = [
127
+ B("取消", -1)
128
+ ])]),
129
+ _: 1
130
+ }, 8, ["disabled"])
131
+ ])
132
+ ]),
133
+ default: m(() => [
134
+ P((c(), U("div", Z, [
135
+ F("div", ee, [
136
+ y.value.length > 0 ? (c(), d(K(z), {
137
+ key: 0,
138
+ ref_key: "builtinVariableFormRef",
139
+ ref: b,
140
+ modelValue: s.value,
141
+ "onUpdate:modelValue": n[0] || (n[0] = (T) => s.value = T),
142
+ variables: y.value,
143
+ editable: !0
144
+ }, null, 8, ["modelValue", "variables"])) : g("", !0),
145
+ u.value.length > 0 ? (c(), d(J, {
146
+ key: 1,
147
+ ref_key: "renderFormRef",
148
+ ref: v,
149
+ scheme: u.value,
150
+ editable: !0,
151
+ "form-option": {
152
+ showRequired: !0,
153
+ showGroup: !0,
154
+ showLabel: !1,
155
+ showHook: !1,
156
+ showDesc: !0,
157
+ formEdit: !0
158
+ },
159
+ "form-data": s.value,
160
+ onChange: I
161
+ }, null, 8, ["scheme", "form-data"])) : g("", !0),
162
+ R.value ? g("", !0) : (c(), d(M, {
163
+ key: 2,
164
+ title: "暂无参数"
165
+ }))
166
+ ])
167
+ ])), [
168
+ [N, { loading: f.value }]
169
+ ])
170
+ ]),
171
+ _: 1
172
+ }, 8, ["is-show"]);
173
+ };
174
+ }
175
+ }), ue = /* @__PURE__ */ Q(oe, [["__scopeId", "data-v-e0e948eb"]]);
176
+ export {
177
+ ue as default
178
+ };