@blueking/bkflow-canvas-editor 1.1.0-beta.20 → 1.1.0-beta.21

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.
@@ -704,8 +704,16 @@ interface RunGlobalDebugResult {
704
704
  status: DebugContextStatus;
705
705
  [key: string]: unknown;
706
706
  }
707
+ /**
708
+ * /debug_terminate/ 返回。
709
+ *
710
+ * 全局终止返回 `terminating`,需要继续轮询 /debug_context/ 直到 idle + last_run_status=revoked;
711
+ * 单节点终止直接返回 `idle`,并用 reset_node_ids 告知哪些节点被恢复为「未调试」。
712
+ */
707
713
  interface TerminateDebugResult {
708
714
  status?: DebugContextStatus;
715
+ /** 单节点终止:被恢复为 not_run 的节点,本地需同步清空输入、输出、耗时、错误与日志。 */
716
+ reset_node_ids?: string[];
709
717
  [key: string]: unknown;
710
718
  }
711
719
  interface DebugResetResult {
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("vue"),M=require("bkui-vue/lib"),N=require("bkui-vue/lib/message"),O=require("lodash"),r=require("./index-XDQGda1C.cjs"),F={key:0,class:"mock-data-sideslider__title-sep"},S=["title"],q={class:"mock-data-sideslider"},D={class:"mock-data-sideslider__footer"},j="当前节点的输出不支持mock,如是否需要在调试时跳过当前节点?",Y="跳过调试",I=e.defineComponent({__name:"index",props:{show:{type:Boolean},node:{default:null},outputs:{default:()=>({})},pending:{type:Boolean,default:!1}},emits:["confirm","close","update:show"],setup(f,{emit:y}){const o=f,p=y,h=r.useFlowApiConfig(),k=e.ref(!1),u=e.shallowRef([]),d=e.ref({}),_=e.ref({}),m=e.ref(!1),b=e.computed(()=>m.value?j:"暂无输出结果"),C=e.computed(()=>m.value?Y:"确定"),w=async()=>{if(o.node){k.value=!0,_.value={},m.value=!1;try{const t=await r.pluginDetailRequest(h,o.node.component);u.value=r.mergeOutputs(t.outputs??[]),m.value=r.hasOnlySystemOutputs(t.outputs);const n=o.outputs??{},s={};u.value.forEach(l=>{const c=Object.prototype.hasOwnProperty.call(n,l.key)?n[l.key]:l.type==="object"?{}:void 0,a=r.resolveMockFormControl(l);s[l.key]=a==="json-editor"||a==="data-table"?r.formatJsonFieldValue(c):c}),d.value=s}catch(t){console.error(t),u.value=[],d.value={},m.value=!1,N({theme:"error",message:"加载输出结果失败"})}finally{k.value=!1}}},g=()=>{const t={},n={};return u.value.forEach(s=>{const l=d.value[s.key],c=r.resolveMockFormControl(s);if(c==="json-editor"||c==="data-table"){const a=r.parseJsonFieldValue(l);if(!a.valid){t[s.key]=a.message;return}a.value!==void 0&&(n[s.key]=a.value);return}l!==void 0&&l!==""&&(n[s.key]=l)}),{errors:t,outputs:n}},x=t=>{M.InfoBox({title:"确认 Mock 输出?",content:"Mock 输出将覆盖当前输出结果,执行时跳过该节点并以 Mock 值替代实际输出",confirmText:"确定",cancelText:"取消",width:400,onConfirm:()=>{t()}})},V=()=>{if(m.value){p("confirm",{outputs:{}});return}const{errors:t,outputs:n}=g();_.value=t,!(Object.keys(t).length>0)&&x(()=>p("confirm",{outputs:n}))},v=()=>{p("close"),p("update:show",!1)};return e.watch(()=>[o.show,o.node?.id],([t])=>{t&&o.node&&(d.value=O.cloneDeep(o.outputs??{}),w())},{immediate:!0}),(t,n)=>{const s=e.resolveComponent("bk-form-item"),l=e.resolveComponent("bk-form"),c=e.resolveComponent("bk-exception"),a=e.resolveComponent("bk-button"),B=e.resolveComponent("bk-sideslider"),E=e.resolveDirective("bkloading");return e.openBlock(),e.createBlock(B,{"is-show":o.show,width:960,"quick-close":"","esc-close":!1,onClosed:v},{header:e.withCtx(()=>[n[0]||(n[0]=e.createElementVNode("span",{class:"mock-data-sideslider__title"},"Mock输出",-1)),o.node?.name?(e.openBlock(),e.createElementBlock("span",F,"-")):e.createCommentVNode("",!0),o.node?.name?(e.openBlock(),e.createElementBlock("span",{key:1,class:"mock-data-sideslider__title-node",title:o.node.name},e.toDisplayString(o.node.name),9,S)):e.createCommentVNode("",!0)]),footer:e.withCtx(()=>[e.createElementVNode("div",D,[e.createVNode(a,{theme:"primary","data-test":"mock-confirm",loading:o.pending,onClick:V},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(C.value),1)]),_:1},8,["loading"]),e.createVNode(a,{disabled:o.pending,onClick:v},{default:e.withCtx(()=>[...n[1]||(n[1]=[e.createTextVNode("取消",-1)])]),_:1},8,["disabled"])])]),default:e.withCtx(()=>[e.withDirectives((e.openBlock(),e.createElementBlock("div",q,[u.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(u.value,i=>(e.openBlock(),e.createBlock(s,{key:i.key,label:i.name||i.key},{default:e.withCtx(()=>[e.createVNode(r.MockFieldRenderer,{modelValue:d.value[i.key],"onUpdate:modelValue":T=>d.value[i.key]=T,field:i,error:_.value[i.key]},null,8,["modelValue","onUpdate:modelValue","field","error"])]),_:2},1032,["label"]))),128))]),_:1})):k.value?e.createCommentVNode("",!0):(e.openBlock(),e.createBlock(c,{key:1,class:"mock-data-sideslider__exception",scene:"part",type:"empty",title:b.value},null,8,["title"]))])),[[E,{loading:k.value}]])]),_:1},8,["is-show"])}}}),L=r._export_sfc(I,[["__scopeId","data-v-d9a03d9c"]]);exports.default=L;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("vue"),M=require("bkui-vue/lib"),N=require("bkui-vue/lib/message"),O=require("lodash"),r=require("./index-j9vPPW5D.cjs"),F={key:0,class:"mock-data-sideslider__title-sep"},S=["title"],q={class:"mock-data-sideslider"},D={class:"mock-data-sideslider__footer"},j="当前节点的输出不支持mock,如是否需要在调试时跳过当前节点?",Y="跳过调试",I=e.defineComponent({__name:"index",props:{show:{type:Boolean},node:{default:null},outputs:{default:()=>({})},pending:{type:Boolean,default:!1}},emits:["confirm","close","update:show"],setup(f,{emit:y}){const o=f,p=y,h=r.useFlowApiConfig(),k=e.ref(!1),u=e.shallowRef([]),d=e.ref({}),_=e.ref({}),m=e.ref(!1),b=e.computed(()=>m.value?j:"暂无输出结果"),C=e.computed(()=>m.value?Y:"确定"),w=async()=>{if(o.node){k.value=!0,_.value={},m.value=!1;try{const t=await r.pluginDetailRequest(h,o.node.component);u.value=r.mergeOutputs(t.outputs??[]),m.value=r.hasOnlySystemOutputs(t.outputs);const n=o.outputs??{},s={};u.value.forEach(l=>{const c=Object.prototype.hasOwnProperty.call(n,l.key)?n[l.key]:l.type==="object"?{}:void 0,a=r.resolveMockFormControl(l);s[l.key]=a==="json-editor"||a==="data-table"?r.formatJsonFieldValue(c):c}),d.value=s}catch(t){console.error(t),u.value=[],d.value={},m.value=!1,N({theme:"error",message:"加载输出结果失败"})}finally{k.value=!1}}},g=()=>{const t={},n={};return u.value.forEach(s=>{const l=d.value[s.key],c=r.resolveMockFormControl(s);if(c==="json-editor"||c==="data-table"){const a=r.parseJsonFieldValue(l);if(!a.valid){t[s.key]=a.message;return}a.value!==void 0&&(n[s.key]=a.value);return}l!==void 0&&l!==""&&(n[s.key]=l)}),{errors:t,outputs:n}},x=t=>{M.InfoBox({title:"确认 Mock 输出?",content:"Mock 输出将覆盖当前输出结果,执行时跳过该节点并以 Mock 值替代实际输出",confirmText:"确定",cancelText:"取消",width:400,onConfirm:()=>{t()}})},V=()=>{if(m.value){p("confirm",{outputs:{}});return}const{errors:t,outputs:n}=g();_.value=t,!(Object.keys(t).length>0)&&x(()=>p("confirm",{outputs:n}))},v=()=>{p("close"),p("update:show",!1)};return e.watch(()=>[o.show,o.node?.id],([t])=>{t&&o.node&&(d.value=O.cloneDeep(o.outputs??{}),w())},{immediate:!0}),(t,n)=>{const s=e.resolveComponent("bk-form-item"),l=e.resolveComponent("bk-form"),c=e.resolveComponent("bk-exception"),a=e.resolveComponent("bk-button"),B=e.resolveComponent("bk-sideslider"),E=e.resolveDirective("bkloading");return e.openBlock(),e.createBlock(B,{"is-show":o.show,width:960,"quick-close":"","esc-close":!1,onClosed:v},{header:e.withCtx(()=>[n[0]||(n[0]=e.createElementVNode("span",{class:"mock-data-sideslider__title"},"Mock输出",-1)),o.node?.name?(e.openBlock(),e.createElementBlock("span",F,"-")):e.createCommentVNode("",!0),o.node?.name?(e.openBlock(),e.createElementBlock("span",{key:1,class:"mock-data-sideslider__title-node",title:o.node.name},e.toDisplayString(o.node.name),9,S)):e.createCommentVNode("",!0)]),footer:e.withCtx(()=>[e.createElementVNode("div",D,[e.createVNode(a,{theme:"primary","data-test":"mock-confirm",loading:o.pending,onClick:V},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(C.value),1)]),_:1},8,["loading"]),e.createVNode(a,{disabled:o.pending,onClick:v},{default:e.withCtx(()=>[...n[1]||(n[1]=[e.createTextVNode("取消",-1)])]),_:1},8,["disabled"])])]),default:e.withCtx(()=>[e.withDirectives((e.openBlock(),e.createElementBlock("div",q,[u.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(u.value,i=>(e.openBlock(),e.createBlock(s,{key:i.key,label:i.name||i.key},{default:e.withCtx(()=>[e.createVNode(r.MockFieldRenderer,{modelValue:d.value[i.key],"onUpdate:modelValue":T=>d.value[i.key]=T,field:i,error:_.value[i.key]},null,8,["modelValue","onUpdate:modelValue","field","error"])]),_:2},1032,["label"]))),128))]),_:1})):k.value?e.createCommentVNode("",!0):(e.openBlock(),e.createBlock(c,{key:1,class:"mock-data-sideslider__exception",scene:"part",type:"empty",title:b.value},null,8,["title"]))])),[[E,{loading:k.value}]])]),_:1},8,["is-show"])}}}),L=r._export_sfc(I,[["__scopeId","data-v-d9a03d9c"]]);exports.default=L;
@@ -0,0 +1 @@
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("vue"),d=require("./index-j9vPPW5D.cjs"),L={class:"debug-result-node-list"},D=["data-node-id","aria-selected","onClick","onKeydown"],z=["title"],A={key:0,class:"debug-result-node-list__mock","data-test":"node-mock-flag"},P={key:1,class:"debug-result-node-list__empty"},I=e.defineComponent({__name:"node-list",props:{nodes:{},modelValue:{default:""}},emits:["update:modelValue"],setup(c,{emit:g}){const t=c,s=g,r=e.ref(""),m=e.ref("all"),_=e.ref(null),p={not_run:"未执行",finished:"成功",failed:"失败",running:"正在调试",suspended:"挂起",skipped:"跳过",revoked:"终止"},k=[{value:"all",label:"全部"},{value:"finished",icon:"bkflow-canvas-dark-circle-checkbox",iconColor:"#5fb8ac",tooltip:p.finished},{value:"failed",icon:"bkflow-canvas-dark-circle-close",iconColor:"#fa4e41",tooltip:p.failed},{value:"revoked",icon:"bkflow-canvas-stop-fill",iconColor:"#fa4e41",tooltip:p.revoked},{value:"running",iconComponent:d.LoadingStatusIcon,iconColor:"#3a84ff",tooltip:p.running},{value:"not_run",icon:"bkflow-canvas-weizhixing2",iconColor:"#b8bbc4",tooltip:p.not_run},{value:"suspended",icon:"bkflow-canvas-zanting",iconColor:"#f59500",tooltip:p.suspended},{value:"skipped",icon:"bkflow-canvas-tiaoguo2",iconColor:"#6e89af",tooltip:p.skipped}],w=e.computed(()=>k.map(a=>({...a,count:a.value==="all"?t.nodes.length:t.nodes.filter(n=>n.status===a.value).length}))),V=e.computed(()=>{const a=r.value.trim().toLowerCase();return t.nodes.filter(n=>m.value!=="all"&&n.status!==m.value?!1:a?n.name.toLowerCase().includes(a)||n.type.toLowerCase().includes(a)||(n.typeName??"").toLowerCase().includes(a):!0)}),C=e.computed(()=>r.value.trim()?"搜索结果为空":m.value!=="all"?`暂无${p[m.value]}状态节点`:"暂无节点"),x=()=>{r.value="",m.value="all"},y=a=>{const n=_.value,v=n?.querySelector(`[data-node-id="${CSS.escape(a)}"]`);if(!n||!v)return;const o=n.getBoundingClientRect(),b=v.getBoundingClientRect();b.top<o.top?n.scrollTop-=o.top-b.top:b.bottom>o.bottom&&(n.scrollTop+=b.bottom-o.bottom)};return e.watch(()=>t.modelValue,async a=>{if(!a)return;!V.value.some(v=>v.id===a)&&t.nodes.some(v=>v.id===a)&&(r.value="",m.value="all"),await e.nextTick(),y(a)},{flush:"post"}),(a,n)=>{const v=e.resolveComponent("bk-input");return e.openBlock(),e.createElementBlock("aside",L,[e.createVNode(v,{modelValue:r.value,"onUpdate:modelValue":n[0]||(n[0]=o=>r.value=o),class:"debug-result-node-list__search",placeholder:"搜索节点名称 / 类型",type:"search",clearable:"","data-test":"node-search"},null,8,["modelValue"]),e.createVNode(d.SegmentTabs,{modelValue:m.value,"onUpdate:modelValue":n[1]||(n[1]=o=>m.value=o),class:"debug-result-node-list__filters","data-test":"status-filters",items:w.value},null,8,["modelValue","items"]),V.value.length>0?(e.openBlock(),e.createElementBlock("div",{key:0,ref_key:"itemsRef",ref:_,class:"debug-result-node-list__items",role:"listbox"},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(V.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:b=>s("update:modelValue",o.id),onKeydown:e.withKeys(e.withModifiers(b=>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.icon?(e.openBlock(),e.createElementBlock("i",{key:0,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,z),o.isMock?(e.openBlock(),e.createElementBlock("span",A,"MOCK")):e.createCommentVNode("",!0)],42,D))),128))],512)):(e.openBlock(),e.createElementBlock("div",P,[e.createVNode(d.EmptyException,{"is-search":!1,title:C.value,onClear:x},null,8,["title"])]))])}}}),H=d._export_sfc(I,[["__scopeId","data-v-db0cb31c"]]);function U(c){if(c==null)return"";if(typeof c=="string")return c;if(typeof c=="object"){const g=c,t=g.message;if(typeof t=="string"&&t){const s=g.type;return typeof s=="string"&&s?`${s}: ${t}`:t}try{return JSON.stringify(c)}catch{return String(c)}}return String(c)}const O={class:"debug-result-tabs"},F={class:"debug-result-tabs__failed-actions","data-test":"output-error-actions"},G={class:"debug-result-tabs__execution","data-test":"tab-execution"},K={class:"debug-result-tabs__row"},j={class:"value"},q={class:"debug-result-tabs__row"},Y={class:"value"},J={key:0,class:"debug-result-tabs__row is-error"},Q={class:"value"},W={class:"debug-result-tabs__mock-hint","data-test":"mock-banner"},X={class:"debug-result-tabs__logs","data-test":"tab-logs"},Z=e.defineComponent({__name:"result-tabs",props:{result:{},component:{},isMock:{type:Boolean,default:!1},canRunNodeDebug:{type:Boolean,default:!1}},emits:["reEditMock","runReal","runMock","logsTabActive"],setup(c,{emit:g}){const t=c,s=g,r=e.ref("execution");e.watch(r,f=>s("logsTabActive",f==="logs"),{immediate:!0});const m={not_run:"未调试",running:"正在调试",finished:"成功",failed:"失败",suspended:"挂起",skipped:"跳过",revoked:"已终止"},_=e.computed(()=>m[t.result.execution.status]??t.result.execution.status),p=e.computed(()=>d.formatSummaryDuration(t.result.execution.durationMs)),k=e.computed(()=>U(t.result.error||t.result.execution.errorDetail)),w=e.computed(()=>t.result.execution.status==="revoked"),V=e.computed(()=>d.isDebugAbnormalStatus(t.result.execution.status)),C=e.computed(()=>w.value?"该节点调试已终止,可":"该节点执行失败,可"),{loading:x,error:y,visibleInputs:a,visibleOutputs:n,outputNameMap:v}=d.usePluginParamMeta({component:()=>t.component}),o=e.computed(()=>t.result.loading||x.value),b=e.computed(()=>t.result.detailError||y.value),h=e.computed(()=>a.value.filter(({key:f})=>Object.prototype.hasOwnProperty.call(t.result.inputs,f)).map(({key:f,name:l})=>({key:f,name:l,value:t.result.inputs[f]}))),B=e.computed(()=>d.orderDebugRowsByDeclaredKeys(d.toDebugOutputValueRows(t.result.outputs,v.value),n.value.map(f=>f.key))),R=e.computed(()=>d.shouldShowMockReEditHint(t.isMock,n.value)),T=e.computed(()=>t.result.logs==null?"":d.normalizeLogText(t.result.logs));return(f,l)=>{const i=e.resolveComponent("bk-button"),u=e.resolveComponent("bk-tab-panel"),S=e.resolveComponent("bk-tab");return e.openBlock(),e.createElementBlock("div",O,[e.createVNode(S,{active:r.value,"onUpdate:active":l[3]||(l[3]=E=>r.value=E),type:"card-grid"},e.createSlots({default:e.withCtx(()=>[e.createVNode(u,{name:"execution",label:"执行信息"},{default:e.withCtx(()=>[e.createElementVNode("div",G,[e.createElementVNode("div",K,[l[8]||(l[8]=e.createElementVNode("span",{class:"label"},"执行状态",-1)),e.createElementVNode("span",j,e.toDisplayString(_.value),1)]),e.createElementVNode("div",q,[l[9]||(l[9]=e.createElementVNode("span",{class:"label"},"调试用时",-1)),e.createElementVNode("span",Y,e.toDisplayString(p.value),1)]),k.value?(e.openBlock(),e.createElementBlock("div",J,[l[10]||(l[10]=e.createElementVNode("span",{class:"label"},"错误信息",-1)),e.createElementVNode("span",Q,e.toDisplayString(k.value),1)])):e.createCommentVNode("",!0)])]),_:1}),e.createVNode(u,{name:"inputs",label:"输入参数"},{default:e.withCtx(()=>[e.createVNode(d.DebugValueTable,{rows:h.value,loading:o.value,error:b.value,"empty-text":"暂无输入参数"},null,8,["rows","loading","error"])]),_:1}),e.createVNode(u,{name:"outputs",label:"输出结果"},{default:e.withCtx(()=>[e.createVNode(d.DebugValueTable,{rows:B.value,loading:o.value,error:b.value,"empty-text":"暂无输出结果"},e.createSlots({_:2},[R.value?{name:"toolbar",fn:e.withCtx(()=>[e.createElementVNode("div",W,[l[12]||(l[12]=e.createElementVNode("i",{class:"bkflow-canvas-icon bkflow-canvas-info debug-result-tabs__mock-info","aria-hidden":"true"},null,-1)),l[13]||(l[13]=e.createElementVNode("span",null,"当前为 Mock 数据",-1)),e.createVNode(i,{text:"",theme:"primary",size:"small","data-test":"re-edit-mock",onClick:l[2]||(l[2]=E=>s("reEditMock"))},{default:e.withCtx(()=>[...l[11]||(l[11]=[e.createTextVNode(" 重新编辑 ",-1)])]),_:1})])]),key:"0"}:void 0]),1032,["rows","loading","error"])]),_:1}),e.createVNode(u,{name:"logs",label:"调用日志"},{default:e.withCtx(()=>[e.createElementVNode("div",X,[e.createVNode(d.CallLogsViewer,{"log-text":T.value,loading:t.result.logLoading,error:t.result.logError},null,8,["log-text","loading","error"])])]),_:1})]),_:2},[V.value&&t.canRunNodeDebug?{name:"setting",fn:e.withCtx(()=>[e.createElementVNode("div",F,[l[6]||(l[6]=e.createElementVNode("i",{class:"bkflow-canvas-icon bkflow-canvas-alert"},null,-1)),e.createElementVNode("span",null,e.toDisplayString(C.value),1),e.createVNode(i,{text:"",theme:"primary","data-test":"rerun-real",onClick:l[0]||(l[0]=E=>s("runReal"))},{default:e.withCtx(()=>[...l[4]||(l[4]=[e.createTextVNode("重新调试",-1)])]),_:1}),l[7]||(l[7]=e.createElementVNode("span",null,"或直接",-1)),e.createVNode(i,{text:"",theme:"primary","data-test":"run-mock",onClick:l[1]||(l[1]=E=>s("runMock"))},{default:e.withCtx(()=>[...l[5]||(l[5]=[e.createTextVNode("Mock 输出",-1)])]),_:1})])]),key:"0"}:void 0]),1032,["active"])])}}}),ee=d._export_sfc(Z,[["__scopeId","data-v-2a925689"]]),te={class:"debug-result-drawer__header"},oe={class:"debug-result-drawer__header-left"},le={class:"debug-result-drawer__body"},se={class:"debug-result-drawer__content"},ne={class:"debug-result-drawer__result"},ae={key:1,class:"debug-result-drawer__unselected","data-test":"node-unselected"},N=44,$=420,ue=e.defineComponent({__name:"index",props:{open:{type:Boolean},context:{},pipelineTree:{},mockNodeIds:{},modelValue:{default:""},result:{},hasGlobalRun:{type:Boolean,default:!1},viewParamsPending:{type:Boolean,default:!1},offsetLeft:{default:0}},emits:["update:open","update:modelValue","reEditMock","runReal","runMock","viewParams","logsTabActive"],setup(c,{emit:g}){const t=c,s=g,r=e.ref($),m=e.ref(!1);let _=0,p=0,k="",w="";const V=e.computed(()=>({left:`${t.offsetLeft}px`,height:`${t.open?r.value:N}px`})),C=()=>{t.open||(r.value=$),s("update:open",!t.open)},x=i=>{const u=i>N;u!==t.open&&s("update:open",u)},y=i=>{const u=p-(i.clientY-_);r.value=Math.max(N,Math.min(window.innerHeight*.8,u)),x(r.value)},a=()=>{document.removeEventListener("mousemove",y),document.removeEventListener("mouseup",a),document.body.style.cursor=k,document.body.style.userSelect=w,m.value=!1,r.value<=N&&(r.value=$,s("update:open",!1))},n=i=>{i.preventDefault(),m.value=!0,_=i.clientY,t.open?p=r.value:(s("update:open",!0),r.value=N,p=N),k=document.body.style.cursor,w=document.body.style.userSelect,document.body.style.cursor="ns-resize",document.body.style.userSelect="none",document.addEventListener("mousemove",y),document.addEventListener("mouseup",a)};e.onBeforeUnmount(a);const v=e.computed({get:()=>t.modelValue,set:i=>s("update:modelValue",i)});e.watch(()=>t.modelValue,i=>{i||s("logsTabActive",!1)},{immediate:!0});const o=e.computed(()=>d.buildDebugResultNodeItems(t.pipelineTree,t.context?.nodes,t.mockNodeIds)),b=e.computed(()=>t.mockNodeIds.has(t.modelValue)),h=e.computed(()=>t.pipelineTree?.activities?.[t.modelValue]?.component),B=e.computed(()=>{const i=o.value.find(u=>u.id===t.modelValue);return i?.type==="ServiceActivity"&&i.isConfigured}),R=()=>{!t.hasGlobalRun||t.viewParamsPending||s("viewParams")},T=()=>{t.modelValue&&s("reEditMock",t.modelValue)},f=()=>{t.modelValue&&s("runReal",t.modelValue)},l=()=>{t.modelValue&&s("runMock",t.modelValue)};return(i,u)=>{const S=e.resolveComponent("bk-button"),E=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)},[e.createElementVNode("div",{class:"debug-result-drawer__resize",onMousedown:n},null,32),e.createElementVNode("section",{class:e.normalizeClass(["debug-result-drawer",{"is-collapsed":!t.open}])},[e.createElementVNode("header",te,[e.createElementVNode("div",oe,[u[3]||(u[3]=e.createElementVNode("span",{class:"debug-result-drawer__title"},"调试结果",-1)),u[4]||(u[4]=e.createElementVNode("span",{class:"debug-result-drawer__divider"},null,-1)),e.withDirectives((e.openBlock(),e.createBlock(S,{text:"",theme:"primary",disabled:!t.hasGlobalRun,loading:t.viewParamsPending,onClick:R},{default:e.withCtx(()=>[...u[2]||(u[2]=[e.createElementVNode("i",{class:"bkflow-canvas-icon bkflow-canvas-audit view-params-icon"},null,-1),e.createTextVNode(" 查看参数 ",-1)])]),_:1},8,["disabled","loading"])),[[E,{content:"请先进行调试",disabled:t.hasGlobalRun}]])]),e.createElementVNode("span",{class:"debug-result-drawer__collapse",onClick:C},[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",le,[e.createElementVNode("div",se,[e.createVNode(H,{modelValue:v.value,"onUpdate:modelValue":u[0]||(u[0]=M=>v.value=M),nodes:o.value},null,8,["modelValue","nodes"]),e.createElementVNode("div",ne,[t.modelValue?(e.openBlock(),e.createBlock(ee,{key:0,result:t.result,component:h.value,"is-mock":b.value,"can-run-node-debug":B.value,onReEditMock:T,onRunReal:f,onRunMock:l,onLogsTabActive:u[1]||(u[1]=M=>s("logsTabActive",M))},null,8,["result","component","is-mock","can-run-node-debug"])):(e.openBlock(),e.createElementBlock("div",ae," 请先选择节点查看调试详情 "))])])])],2)],6)}}}),re=d._export_sfc(ue,[["__scopeId","data-v-f71c9f3b"]]);exports.default=re;
@@ -1,5 +1,5 @@
1
- import { defineComponent as G, ref as S, computed as i, watch as K, nextTick as Q, resolveComponent as N, openBlock as f, createElementBlock as y, createVNode as p, Fragment as W, renderList as X, withKeys as Z, withModifiers as ee, normalizeClass as L, createElementVNode as o, createCommentVNode as O, toDisplayString as E, createSlots as j, withCtx as k, createTextVNode as B, onBeforeUnmount as te, resolveDirective as se, normalizeStyle as oe, withDirectives as le, createBlock as q } from "vue";
2
- import { L as ae, S as ne, E as ue, _ as Y, b as ie, c as re, d as de, o as ce, t as pe, s as me, n as ve, D as J, C as be, e as fe } from "./index-BSJmvh9X.js";
1
+ import { defineComponent as G, ref as S, computed as i, watch as K, nextTick as Q, resolveComponent as N, openBlock as f, createElementBlock as y, createVNode as p, Fragment as W, renderList as X, withKeys as Z, withModifiers as ee, normalizeClass as L, createElementVNode as o, createCommentVNode as F, toDisplayString as E, createSlots as Y, withCtx as k, createTextVNode as B, onBeforeUnmount as te, resolveDirective as se, normalizeStyle as oe, withDirectives as le, createBlock as q } from "vue";
2
+ import { L as ae, S as ne, E as ue, _ as j, d as ie, e as re, j as de, o as ce, t as pe, s as me, n as ve, k as J, C as be, l as fe } from "./index-DUOfuLCl.js";
3
3
  const ge = { class: "debug-result-node-list" }, _e = ["data-node-id", "aria-selected", "onClick", "onKeydown"], ke = ["title"], ye = {
4
4
  key: 0,
5
5
  class: "debug-result-node-list__mock",
@@ -145,13 +145,13 @@ const ge = { class: "debug-result-node-list" }, _e = ["data-node-id", "aria-sele
145
145
  key: 0,
146
146
  class: L(t.icon),
147
147
  "data-test": "node-icon"
148
- }, null, 2)) : O("", !0)
148
+ }, null, 2)) : F("", !0)
149
149
  ], 2),
150
150
  o("span", {
151
151
  class: "debug-result-node-list__name",
152
152
  title: t.isConfigured ? `${t.name} ${t.typeName || t.type}` : t.name
153
153
  }, E(t.name), 9, ke),
154
- t.isMock ? (f(), y("span", ye, "MOCK")) : O("", !0)
154
+ t.isMock ? (f(), y("span", ye, "MOCK")) : F("", !0)
155
155
  ], 42, _e))), 128))
156
156
  ], 512)) : (f(), y("div", we, [
157
157
  p(ue, {
@@ -163,7 +163,7 @@ const ge = { class: "debug-result-node-list" }, _e = ["data-node-id", "aria-sele
163
163
  ]);
164
164
  };
165
165
  }
166
- }), he = /* @__PURE__ */ Y(xe, [["__scopeId", "data-v-db0cb31c"]]);
166
+ }), he = /* @__PURE__ */ j(xe, [["__scopeId", "data-v-db0cb31c"]]);
167
167
  function Ce(c) {
168
168
  if (c == null) return "";
169
169
  if (typeof c == "string") return c;
@@ -241,7 +241,7 @@ const Re = { class: "debug-result-tabs" }, Ve = {
241
241
  active: r.value,
242
242
  "onUpdate:active": s[3] || (s[3] = (T) => r.value = T),
243
243
  type: "card-grid"
244
- }, j({
244
+ }, Y({
245
245
  default: k(() => [
246
246
  p(u, {
247
247
  name: "execution",
@@ -260,7 +260,7 @@ const Re = { class: "debug-result-tabs" }, Ve = {
260
260
  h.value ? (f(), y("div", $e, [
261
261
  s[10] || (s[10] = o("span", { class: "label" }, "错误信息", -1)),
262
262
  o("span", De, E(h.value), 1)
263
- ])) : O("", !0)
263
+ ])) : F("", !0)
264
264
  ])
265
265
  ]),
266
266
  _: 1
@@ -289,7 +289,7 @@ const Re = { class: "debug-result-tabs" }, Ve = {
289
289
  loading: t.value,
290
290
  error: g.value,
291
291
  "empty-text": "暂无输出结果"
292
- }, j({ _: 2 }, [
292
+ }, Y({ _: 2 }, [
293
293
  P.value ? {
294
294
  name: "toolbar",
295
295
  fn: k(() => [
@@ -374,11 +374,11 @@ const Re = { class: "debug-result-tabs" }, Ve = {
374
374
  ]);
375
375
  };
376
376
  }
377
- }), Ie = /* @__PURE__ */ Y(Ae, [["__scopeId", "data-v-adf659d4"]]), Pe = { class: "debug-result-drawer__header" }, ze = { class: "debug-result-drawer__header-left" }, He = { class: "debug-result-drawer__body" }, Ue = { class: "debug-result-drawer__content" }, Fe = { class: "debug-result-drawer__result" }, Oe = {
377
+ }), Ie = /* @__PURE__ */ j(Ae, [["__scopeId", "data-v-2a925689"]]), Pe = { class: "debug-result-drawer__header" }, ze = { class: "debug-result-drawer__header-left" }, He = { class: "debug-result-drawer__body" }, Ue = { class: "debug-result-drawer__content" }, Oe = { class: "debug-result-drawer__result" }, Fe = {
378
378
  key: 1,
379
379
  class: "debug-result-drawer__unselected",
380
380
  "data-test": "node-unselected"
381
- }, M = 44, F = 420, Ge = /* @__PURE__ */ G({
381
+ }, M = 44, O = 420, Ge = /* @__PURE__ */ G({
382
382
  __name: "index",
383
383
  props: {
384
384
  open: { type: Boolean },
@@ -393,13 +393,13 @@ const Re = { class: "debug-result-tabs" }, Ve = {
393
393
  },
394
394
  emits: ["update:open", "update:modelValue", "reEditMock", "runReal", "runMock", "viewParams", "logsTabActive"],
395
395
  setup(c, { emit: w }) {
396
- const e = c, l = w, r = S(F), m = S(!1);
396
+ const e = c, l = w, r = S(O), m = S(!1);
397
397
  let x = 0, v = 0, h = "", R = "";
398
398
  const C = i(() => ({
399
399
  left: `${e.offsetLeft}px`,
400
400
  height: `${e.open ? r.value : M}px`
401
401
  })), $ = () => {
402
- e.open || (r.value = F), l("update:open", !e.open);
402
+ e.open || (r.value = O), l("update:open", !e.open);
403
403
  }, D = (d) => {
404
404
  const u = d > M;
405
405
  u !== e.open && l("update:open", u);
@@ -407,7 +407,7 @@ const Re = { class: "debug-result-tabs" }, Ve = {
407
407
  const u = v - (d.clientY - x);
408
408
  r.value = Math.max(M, Math.min(window.innerHeight * 0.8, u)), D(r.value);
409
409
  }, n = () => {
410
- document.removeEventListener("mousemove", V), document.removeEventListener("mouseup", n), document.body.style.cursor = h, document.body.style.userSelect = R, m.value = !1, r.value <= M && (r.value = F, l("update:open", !1));
410
+ document.removeEventListener("mousemove", V), document.removeEventListener("mouseup", n), document.body.style.cursor = h, document.body.style.userSelect = R, m.value = !1, r.value <= M && (r.value = O, l("update:open", !1));
411
411
  }, a = (d) => {
412
412
  d.preventDefault(), m.value = !0, x = d.clientY, e.open ? v = r.value : (l("update:open", !0), r.value = M, v = M), h = document.body.style.cursor, R = document.body.style.userSelect, document.body.style.cursor = "ns-resize", document.body.style.userSelect = "none", document.addEventListener("mousemove", V), document.addEventListener("mouseup", n);
413
413
  };
@@ -487,7 +487,7 @@ const Re = { class: "debug-result-tabs" }, Ve = {
487
487
  "onUpdate:modelValue": u[0] || (u[0] = (U) => b.value = U),
488
488
  nodes: t.value
489
489
  }, null, 8, ["modelValue", "nodes"]),
490
- o("div", Fe, [
490
+ o("div", Oe, [
491
491
  e.modelValue ? (f(), q(Ie, {
492
492
  key: 0,
493
493
  result: e.result,
@@ -498,7 +498,7 @@ const Re = { class: "debug-result-tabs" }, Ve = {
498
498
  onRunReal: _,
499
499
  onRunMock: s,
500
500
  onLogsTabActive: u[1] || (u[1] = (U) => l("logsTabActive", U))
501
- }, null, 8, ["result", "component", "is-mock", "can-run-node-debug"])) : (f(), y("div", Oe, " 请先选择节点查看调试详情 "))
501
+ }, null, 8, ["result", "component", "is-mock", "can-run-node-debug"])) : (f(), y("div", Fe, " 请先选择节点查看调试详情 "))
502
502
  ])
503
503
  ])
504
504
  ])
@@ -506,7 +506,7 @@ const Re = { class: "debug-result-tabs" }, Ve = {
506
506
  ], 6);
507
507
  };
508
508
  }
509
- }), je = /* @__PURE__ */ Y(Ge, [["__scopeId", "data-v-f71c9f3b"]]);
509
+ }), Ye = /* @__PURE__ */ j(Ge, [["__scopeId", "data-v-f71c9f3b"]]);
510
510
  export {
511
- je as default
511
+ Ye as default
512
512
  };
@@ -0,0 +1,235 @@
1
+ import { defineComponent as A, ref as V, shallowRef as x, computed as C, watch as U, resolveComponent as j, resolveDirective as K, openBlock as l, createBlock as f, createSlots as S, withCtx as y, withDirectives as G, createElementBlock as d, createElementVNode as i, createCommentVNode as v, Fragment as H, renderList as J, toDisplayString as B, unref as Y, createVNode as R, createTextVNode as E } from "vue";
2
+ import { cloneDeep as _ } from "lodash";
3
+ import { u as z, i as M, b as Q, c as W, g as X, D as Z, B as ee, R as te, E as ae, _ as oe } from "./index-DUOfuLCl.js";
4
+ import "bkui-vue/lib/message";
5
+ import "bkui-vue/lib/icon";
6
+ import "monaco-editor";
7
+ const se = {
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
+ }, L = (a) => a.replace(/^\$\{(.+)\}$/, "$1"), I = (a) => `\${${L(a)}}`;
23
+ function ne(a, c) {
24
+ const s = I(a.key), o = c ? _(c) : {}, p = a.custom_type ?? o.custom_type ?? se[a.type] ?? "input";
25
+ return {
26
+ ...o,
27
+ key: s,
28
+ name: a.name ?? o.name ?? L(a.key),
29
+ custom_type: p,
30
+ desc: o.desc ?? "",
31
+ index: o.index ?? 0,
32
+ show_type: "show",
33
+ source_info: o.source_info ?? {},
34
+ source_tag: o.source_tag ?? "",
35
+ source_type: o.source_type ?? "custom",
36
+ validation: o.validation ?? "",
37
+ value: a.default ?? o.value,
38
+ meta: {
39
+ ...o.meta ?? {},
40
+ required: a.required ?? o.meta?.required ?? !1
41
+ }
42
+ };
43
+ }
44
+ function le(a, c = {}) {
45
+ if (!a) return {};
46
+ const s = a.constants;
47
+ return s && Object.keys(s).length > 0 ? { ...s } : Array.isArray(a.fields) && a.fields.length > 0 ? a.fields.reduce((o, p) => {
48
+ const n = I(p.key);
49
+ return o[n] = ne(p, c[n]), o;
50
+ }, {}) : {};
51
+ }
52
+ const ie = { class: "global-debug-input" }, re = {
53
+ key: 0,
54
+ class: "global-debug-input__params",
55
+ "data-test": "input-params"
56
+ }, ue = { key: 0 }, de = ["title"], ce = { class: "col-value" }, pe = {
57
+ key: 1,
58
+ class: "global-debug-input__value"
59
+ }, me = {
60
+ key: 1,
61
+ class: "form-params-wrapper"
62
+ }, fe = { class: "sideslider-footer-buttons" }, ye = /* @__PURE__ */ A({
63
+ __name: "index",
64
+ props: {
65
+ show: { type: Boolean },
66
+ schema: {},
67
+ pipelineConstants: { default: () => ({}) },
68
+ initialValues: { default: () => ({}) },
69
+ pending: { type: Boolean, default: !1 },
70
+ readonly: { type: Boolean, default: !1 }
71
+ },
72
+ emits: ["confirm", "close", "update:show"],
73
+ setup(a, { emit: c }) {
74
+ const s = a, o = c, p = z(), n = V({}), b = x([]), m = x([]), g = x(!1), h = V(), k = V(), w = C(() => b.value.filter((e) => M(e))), O = C(() => w.value.length > 0 || m.value.length > 0), F = C(
75
+ () => [...b.value].sort((e, t) => (e.index ?? 0) - (t.index ?? 0)).map((e) => {
76
+ const t = Object.prototype.hasOwnProperty.call(n.value, e.key) ? n.value[e.key] : e.value;
77
+ return {
78
+ key: e.key,
79
+ name: e.name || e.key,
80
+ value: t,
81
+ display: W(t),
82
+ isComplex: Q(t)
83
+ };
84
+ })
85
+ );
86
+ U(
87
+ () => s.show,
88
+ (e) => {
89
+ e && (n.value = _(s.initialValues ?? {}), q());
90
+ }
91
+ );
92
+ const q = async () => {
93
+ const e = le(s.schema, s.pipelineConstants), t = Object.values(e).filter(
94
+ (r) => typeof r == "object" && r !== null && r.show_type === "show"
95
+ );
96
+ if (b.value = t, s.readonly || Object.keys(e).length < 1) {
97
+ m.value = [];
98
+ return;
99
+ }
100
+ g.value = !0;
101
+ try {
102
+ m.value = await X(p, e);
103
+ } catch (r) {
104
+ console.error("Failed to build debug input forms from schema:", r), m.value = [];
105
+ } finally {
106
+ g.value = !1;
107
+ }
108
+ }, N = (e) => {
109
+ n.value = { ...n.value, ..._(e) };
110
+ }, P = async () => {
111
+ const [e, t] = await Promise.all([
112
+ Promise.resolve(
113
+ typeof k.value?.validate == "function" ? k.value.validate() : !0
114
+ ),
115
+ Promise.resolve(typeof h.value?.validate == "function" ? h.value.validate() : !0)
116
+ ]);
117
+ !e || !t || o("confirm", _(n.value));
118
+ }, D = () => {
119
+ o("close"), o("update:show", !1);
120
+ };
121
+ return (e, t) => {
122
+ const r = j("bk-button"), T = j("bk-sideslider"), $ = K("bkloading");
123
+ return l(), f(T, {
124
+ title: "调试参数",
125
+ "is-show": s.show,
126
+ width: 960,
127
+ "quick-close": !0,
128
+ "esc-close": !1,
129
+ onClosed: D
130
+ }, S({
131
+ default: y(() => [
132
+ G((l(), d("div", ie, [
133
+ s.readonly ? (l(), d("table", re, [
134
+ t[2] || (t[2] = i("thead", null, [
135
+ i("tr", null, [
136
+ i("th", { class: "col-name" }, "参数名"),
137
+ i("th", { class: "col-value" }, "参数值")
138
+ ])
139
+ ], -1)),
140
+ i("tbody", null, [
141
+ F.value.length === 0 ? (l(), d("tr", ue, [...t[1] || (t[1] = [
142
+ i("td", {
143
+ class: "global-debug-input__empty",
144
+ colspan: "2"
145
+ }, "暂无参数", -1)
146
+ ])])) : v("", !0),
147
+ (l(!0), d(H, null, J(F.value, (u) => (l(), d("tr", {
148
+ key: u.key,
149
+ "data-test": "input-row"
150
+ }, [
151
+ i("td", {
152
+ class: "col-name",
153
+ title: u.key
154
+ }, B(u.name), 9, de),
155
+ i("td", ce, [
156
+ u.isComplex ? (l(), f(Z, {
157
+ key: 0,
158
+ value: u.value,
159
+ "data-test": "json-viewer"
160
+ }, null, 8, ["value"])) : (l(), d("pre", pe, B(u.display), 1))
161
+ ])
162
+ ]))), 128))
163
+ ])
164
+ ])) : (l(), d("div", me, [
165
+ w.value.length > 0 ? (l(), f(Y(ee), {
166
+ key: 0,
167
+ ref_key: "builtinVariableFormRef",
168
+ ref: k,
169
+ modelValue: n.value,
170
+ "onUpdate:modelValue": t[0] || (t[0] = (u) => n.value = u),
171
+ variables: w.value
172
+ }, null, 8, ["modelValue", "variables"])) : v("", !0),
173
+ m.value.length > 0 ? (l(), f(te, {
174
+ key: 1,
175
+ ref_key: "renderFormRef",
176
+ ref: h,
177
+ scheme: m.value,
178
+ editable: "",
179
+ "form-option": {
180
+ showRequired: !0,
181
+ showGroup: !0,
182
+ showLabel: !1,
183
+ showHook: !1,
184
+ showDesc: !0,
185
+ formEdit: !0
186
+ },
187
+ "form-data": n.value,
188
+ onChange: N
189
+ }, null, 8, ["scheme", "form-data"])) : v("", !0),
190
+ O.value ? v("", !0) : (l(), f(ae, {
191
+ key: 2,
192
+ title: "暂无参数"
193
+ }))
194
+ ]))
195
+ ])), [
196
+ [$, { loading: g.value }]
197
+ ])
198
+ ]),
199
+ _: 2
200
+ }, [
201
+ s.readonly ? void 0 : {
202
+ name: "footer",
203
+ fn: y(() => [
204
+ i("div", fe, [
205
+ R(r, {
206
+ theme: "primary",
207
+ "data-test": "save-and-run",
208
+ loading: s.pending,
209
+ onClick: P
210
+ }, {
211
+ default: y(() => [...t[3] || (t[3] = [
212
+ E(" 保存并执行 ", -1)
213
+ ])]),
214
+ _: 1
215
+ }, 8, ["loading"]),
216
+ R(r, {
217
+ disabled: s.pending,
218
+ onClick: D
219
+ }, {
220
+ default: y(() => [...t[4] || (t[4] = [
221
+ E("取消", -1)
222
+ ])]),
223
+ _: 1
224
+ }, 8, ["disabled"])
225
+ ])
226
+ ]),
227
+ key: "0"
228
+ }
229
+ ]), 1032, ["is-show"]);
230
+ };
231
+ }
232
+ }), we = /* @__PURE__ */ oe(ye, [["__scopeId", "data-v-95858958"]]);
233
+ export {
234
+ we as default
235
+ };
@@ -0,0 +1 @@
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("vue"),p=require("lodash"),r=require("./index-j9vPPW5D.cjs");require("bkui-vue/lib/message");require("bkui-vue/lib/icon");require("monaco-editor");const F={string:"input",text:"input",textarea:"textarea",int:"input",integer:"input",number:"input",float:"input",json:"json",object:"json",array:"array",list:"array",select:"select",time:"timepicker",datetime:"timepicker"},g=l=>l.replace(/^\$\{(.+)\}$/,"$1"),V=l=>`\${${g(l)}}`;function D(l,c){const a=V(l.key),n=c?p.cloneDeep(c):{},d=l.custom_type??n.custom_type??F[l.type]??"input";return{...n,key:a,name:l.name??n.name??g(l.key),custom_type:d,desc:n.desc??"",index:n.index??0,show_type:"show",source_info:n.source_info??{},source_tag:n.source_tag??"",source_type:n.source_type??"custom",validation:n.validation??"",value:l.default??n.value,meta:{...n.meta??{},required:l.required??n.meta?.required??!1}}}function j(l,c={}){if(!l)return{};const a=l.constants;return a&&Object.keys(a).length>0?{...a}:Array.isArray(l.fields)&&l.fields.length>0?l.fields.reduce((n,d)=>{const s=V(d.key);return n[s]=D(d,c[s]),n},{}):{}}const q={class:"global-debug-input"},R={key:0,class:"global-debug-input__params","data-test":"input-params"},L={key:0},O=["title"],T={class:"col-value"},I={key:1,class:"global-debug-input__value"},P={key:1,class:"form-params-wrapper"},$={class:"sideslider-footer-buttons"},S=e.defineComponent({__name:"index",props:{show:{type:Boolean},schema:{},pipelineConstants:{default:()=>({})},initialValues:{default:()=>({})},pending:{type:Boolean,default:!1},readonly:{type:Boolean,default:!1}},emits:["confirm","close","update:show"],setup(l,{emit:c}){const a=l,n=c,d=r.useFlowApiConfig(),s=e.ref({}),f=e.shallowRef([]),m=e.shallowRef([]),y=e.shallowRef(!1),v=e.ref(),k=e.ref(),b=e.computed(()=>f.value.filter(t=>r.isBuiltinUsageVariable(t))),w=e.computed(()=>b.value.length>0||m.value.length>0),_=e.computed(()=>[...f.value].sort((t,o)=>(t.index??0)-(o.index??0)).map(t=>{const o=Object.prototype.hasOwnProperty.call(s.value,t.key)?s.value[t.key]:t.value;return{key:t.key,name:t.name||t.key,value:o,display:r.formatDebugValue(o),isComplex:r.isComplexDebugValue(o)}}));e.watch(()=>a.show,t=>{t&&(s.value=p.cloneDeep(a.initialValues??{}),B())});const B=async()=>{const t=j(a.schema,a.pipelineConstants),o=Object.values(t).filter(i=>typeof i=="object"&&i!==null&&i.show_type==="show");if(f.value=o,a.readonly||Object.keys(t).length<1){m.value=[];return}y.value=!0;try{m.value=await r.getInputFormsFromConstants(d,t)}catch(i){console.error("Failed to build debug input forms from schema:",i),m.value=[]}finally{y.value=!1}},C=t=>{s.value={...s.value,...p.cloneDeep(t)}},x=async()=>{const[t,o]=await Promise.all([Promise.resolve(typeof k.value?.validate=="function"?k.value.validate():!0),Promise.resolve(typeof v.value?.validate=="function"?v.value.validate():!0)]);!t||!o||n("confirm",p.cloneDeep(s.value))},h=()=>{n("close"),n("update:show",!1)};return(t,o)=>{const i=e.resolveComponent("bk-button"),E=e.resolveComponent("bk-sideslider"),N=e.resolveDirective("bkloading");return e.openBlock(),e.createBlock(E,{title:"调试参数","is-show":a.show,width:960,"quick-close":!0,"esc-close":!1,onClosed:h},e.createSlots({default:e.withCtx(()=>[e.withDirectives((e.openBlock(),e.createElementBlock("div",q,[a.readonly?(e.openBlock(),e.createElementBlock("table",R,[o[2]||(o[2]=e.createElementVNode("thead",null,[e.createElementVNode("tr",null,[e.createElementVNode("th",{class:"col-name"},"参数名"),e.createElementVNode("th",{class:"col-value"},"参数值")])],-1)),e.createElementVNode("tbody",null,[_.value.length===0?(e.openBlock(),e.createElementBlock("tr",L,[...o[1]||(o[1]=[e.createElementVNode("td",{class:"global-debug-input__empty",colspan:"2"},"暂无参数",-1)])])):e.createCommentVNode("",!0),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(_.value,u=>(e.openBlock(),e.createElementBlock("tr",{key:u.key,"data-test":"input-row"},[e.createElementVNode("td",{class:"col-name",title:u.key},e.toDisplayString(u.name),9,O),e.createElementVNode("td",T,[u.isComplex?(e.openBlock(),e.createBlock(r.DebugJsonViewer,{key:0,value:u.value,"data-test":"json-viewer"},null,8,["value"])):(e.openBlock(),e.createElementBlock("pre",I,e.toDisplayString(u.display),1))])]))),128))])])):(e.openBlock(),e.createElementBlock("div",P,[b.value.length>0?(e.openBlock(),e.createBlock(e.unref(r.BuiltinVariableUsageForm),{key:0,ref_key:"builtinVariableFormRef",ref:k,modelValue:s.value,"onUpdate:modelValue":o[0]||(o[0]=u=>s.value=u),variables:b.value},null,8,["modelValue","variables"])):e.createCommentVNode("",!0),m.value.length>0?(e.openBlock(),e.createBlock(r.RenderForm,{key:1,ref_key:"renderFormRef",ref:v,scheme:m.value,editable:"","form-option":{showRequired:!0,showGroup:!0,showLabel:!1,showHook:!1,showDesc:!0,formEdit:!0},"form-data":s.value,onChange:C},null,8,["scheme","form-data"])):e.createCommentVNode("",!0),w.value?e.createCommentVNode("",!0):(e.openBlock(),e.createBlock(r.EmptyException,{key:2,title:"暂无参数"}))]))])),[[N,{loading:y.value}]])]),_:2},[a.readonly?void 0:{name:"footer",fn:e.withCtx(()=>[e.createElementVNode("div",$,[e.createVNode(i,{theme:"primary","data-test":"save-and-run",loading:a.pending,onClick:x},{default:e.withCtx(()=>[...o[3]||(o[3]=[e.createTextVNode(" 保存并执行 ",-1)])]),_:1},8,["loading"]),e.createVNode(i,{disabled:a.pending,onClick:h},{default:e.withCtx(()=>[...o[4]||(o[4]=[e.createTextVNode("取消",-1)])]),_:1},8,["disabled"])])]),key:"0"}]),1032,["is-show"])}}}),A=r._export_sfc(S,[["__scopeId","data-v-95858958"]]);exports.default=A;