@nywqs/scada-engine 1.1.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.
- package/README.md +455 -0
- package/dist/components/AttributeConfigDialog.d.ts +39 -0
- package/dist/components/BasicPropertiesTab.d.ts +51 -0
- package/dist/components/BindingCard.d.ts +36 -0
- package/dist/components/CanvasArea.d.ts +4 -0
- package/dist/components/CanvasConfigPanel.d.ts +2 -0
- package/dist/components/ComponentLibrary.d.ts +6 -0
- package/dist/components/CustomCodeDialog.d.ts +30 -0
- package/dist/components/DataPropertiesTab.d.ts +42 -0
- package/dist/components/DevicePointSelector.d.ts +27 -0
- package/dist/components/EdgePropertiesTab.d.ts +22 -0
- package/dist/components/EventCard.d.ts +63 -0
- package/dist/components/Footer.d.ts +37 -0
- package/dist/components/Header.d.ts +71 -0
- package/dist/components/MappingConfigurator.d.ts +27 -0
- package/dist/components/PropertyPanel.d.ts +27 -0
- package/dist/components/WorkflowSelectorDialog.d.ts +15 -0
- package/dist/index.d.ts +157 -0
- package/dist/main.d.ts +1 -0
- package/dist/mock/deviceData.d.ts +39 -0
- package/dist/scada-components/basic/circle.d.ts +6 -0
- package/dist/scada-components/basic/index.d.ts +6 -0
- package/dist/scada-components/basic/rect.d.ts +6 -0
- package/dist/scada-components/basic/text.d.ts +6 -0
- package/dist/scada-components/canvas/config.d.ts +17 -0
- package/dist/scada-components/canvas/index.d.ts +6 -0
- package/dist/scada-components/canvas/manager.d.ts +95 -0
- package/dist/scada-components/canvas/types.d.ts +77 -0
- package/dist/scada-components/index.d.ts +8 -0
- package/dist/scada-components/iot/gauge.d.ts +6 -0
- package/dist/scada-components/iot/index.d.ts +6 -0
- package/dist/scada-components/iot/light.d.ts +6 -0
- package/dist/scada-components/iot/switch.d.ts +6 -0
- package/dist/scada-components/registry.d.ts +56 -0
- package/dist/scada-components/types.d.ts +82 -0
- package/dist/scada-engine.css +1 -0
- package/dist/scada-engine.es.js +12390 -0
- package/dist/scada-engine.umd.js +53 -0
- package/dist/types/binding.d.ts +75 -0
- package/dist/types/device.d.ts +131 -0
- package/dist/types/workflow.d.ts +195 -0
- package/dist/utils/animationEngine.d.ts +68 -0
- package/dist/utils/authCrypto.d.ts +45 -0
- package/dist/utils/commonUtils.d.ts +83 -0
- package/dist/utils/eventUtils.d.ts +43 -0
- package/dist/utils/fileUtils.d.ts +43 -0
- package/dist/utils/index.d.ts +10 -0
- package/dist/utils/messageUtils.d.ts +56 -0
- package/dist/utils/nodePropertyUtils.d.ts +33 -0
- package/dist/utils/storageUtils.d.ts +55 -0
- package/dist/views/workflow/WorkflowDialog.d.ts +37 -0
- package/dist/views/workflow/WorkflowEditor.d.ts +38 -0
- package/dist/views/workflow/components/AddNodeMenu.d.ts +32 -0
- package/dist/views/workflow/components/ElementSelector.d.ts +45 -0
- package/dist/views/workflow/components/PropertyPanel.d.ts +27 -0
- package/dist/views/workflow/components/WorkflowToolbar.d.ts +24 -0
- package/dist/views/workflow/components/node-configs/ClearTimerConfig.d.ts +20 -0
- package/dist/views/workflow/components/node-configs/ConditionConfig.d.ts +20 -0
- package/dist/views/workflow/components/node-configs/CustomCodeConfig.d.ts +20 -0
- package/dist/views/workflow/components/node-configs/GetPropertyConfig.d.ts +20 -0
- package/dist/views/workflow/components/node-configs/HttpRequestConfig.d.ts +20 -0
- package/dist/views/workflow/components/node-configs/SetPropertyConfig.d.ts +20 -0
- package/dist/views/workflow/components/node-configs/TimerConfig.d.ts +20 -0
- package/dist/views/workflow/config/nodeConfigRegistry.d.ts +5 -0
- package/dist/views/workflow/services/canvasElementService.d.ts +31 -0
- package/dist/views/workflow/types/node.d.ts +70 -0
- package/package.json +77 -0
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
(function(G,e){typeof exports=="object"&&typeof module<"u"?e(exports,require("vue"),require("@antv/x6"),require("@antv/x6-plugin-selection"),require("@antv/x6-plugin-snapline")):typeof define=="function"&&define.amd?define(["exports","vue","@antv/x6","@antv/x6-plugin-selection","@antv/x6-plugin-snapline"],e):(G=typeof globalThis<"u"?globalThis:G||self,e(G.ScadaEngine={},G.Vue,G.X6,G.X6PluginSelection,G.X6PluginSnapline))})(this,function(G,e,ue,Gt,nn){"use strict";var bp=Object.defineProperty;var vp=(G,e,ue)=>e in G?bp(G,e,{enumerable:!0,configurable:!0,writable:!0,value:ue}):G[e]=ue;var Ue=(G,e,ue)=>vp(G,typeof e!="symbol"?e+"":e,ue);const an={xmlns:"http://www.w3.org/2000/svg","xmlns:xlink":"http://www.w3.org/1999/xlink",viewBox:"0 0 32 32"},rn=e.defineComponent({name:"AlignHorizontalCenter",render:function(E,o){return e.openBlock(),e.createElementBlock("svg",an,o[0]||(o[0]=[e.createElementVNode("path",{d:"M24 18h-7v-4h3a2.002 2.002 0 0 0 2-2V8a2.002 2.002 0 0 0-2-2h-3V2h-2v4h-3a2.002 2.002 0 0 0-2 2v4a2.002 2.002 0 0 0 2 2h3v4H8a2.002 2.002 0 0 0-2 2v4a2.002 2.002 0 0 0 2 2h7v4h2v-4h7a2.002 2.002 0 0 0 2-2v-4a2.002 2.002 0 0 0-2-2zM12 8h8v4h-8zm12 16H8v-4h16z",fill:"currentColor"},null,-1)]))}}),ln={xmlns:"http://www.w3.org/2000/svg","xmlns:xlink":"http://www.w3.org/1999/xlink",viewBox:"0 0 32 32"},sn=e.defineComponent({name:"AlignHorizontalLeft",render:function(E,o){return e.openBlock(),e.createElementBlock("svg",ln,o[0]||(o[0]=[e.createElementVNode("path",{d:"M26 26H11a2.002 2.002 0 0 1-2-2v-4a2.002 2.002 0 0 1 2-2h15a2.002 2.002 0 0 1 2 2v4a2.002 2.002 0 0 1-2 2zm0-6.001L11 20v4h15z",fill:"currentColor"},null,-1),e.createElementVNode("path",{d:"M18 14h-7a2.002 2.002 0 0 1-2-2V8a2.002 2.002 0 0 1 2-2h7a2.002 2.002 0 0 1 2 2v4a2.002 2.002 0 0 1-2 2zm0-6.001L11 8v4h7z",fill:"currentColor"},null,-1),e.createElementVNode("path",{d:"M4 2h2v28H4z",fill:"currentColor"},null,-1)]))}}),cn={xmlns:"http://www.w3.org/2000/svg","xmlns:xlink":"http://www.w3.org/1999/xlink",viewBox:"0 0 32 32"},dn=e.defineComponent({name:"AlignHorizontalRight",render:function(E,o){return e.openBlock(),e.createElementBlock("svg",cn,o[0]||(o[0]=[e.createElementVNode("path",{d:"M4 24v-4a2.002 2.002 0 0 1 2-2h15a2.002 2.002 0 0 1 2 2v4a2.002 2.002 0 0 1-2 2H6a2.002 2.002 0 0 1-2-2zm2 0h15v-4l-15-.001z",fill:"currentColor"},null,-1),e.createElementVNode("path",{d:"M12 12V8a2.002 2.002 0 0 1 2-2h7a2.002 2.002 0 0 1 2 2v4a2.002 2.002 0 0 1-2 2h-7a2.002 2.002 0 0 1-2-2zm2 0h7V8l-7-.001z",fill:"currentColor"},null,-1),e.createElementVNode("path",{d:"M28 30h-2V2h2z",fill:"currentColor"},null,-1)]))}}),pn={xmlns:"http://www.w3.org/2000/svg","xmlns:xlink":"http://www.w3.org/1999/xlink",viewBox:"0 0 32 32"},xn=e.defineComponent({name:"AlignVerticalBottom",render:function(E,o){return e.openBlock(),e.createElementBlock("svg",pn,o[0]||(o[0]=[e.createElementVNode("path",{d:"M2 26h28v2H2z",fill:"currentColor"},null,-1),e.createElementVNode("path",{d:"M24 23h-4a2.002 2.002 0 0 1-2-2v-7a2.002 2.002 0 0 1 2-2h4a2.002 2.002 0 0 1 2 2v7a2.002 2.002 0 0 1-2 2zm-4-9v7h4.001L24 14z",fill:"currentColor"},null,-1),e.createElementVNode("path",{d:"M12 23H8a2.002 2.002 0 0 1-2-2V6a2.002 2.002 0 0 1 2-2h4a2.002 2.002 0 0 1 2 2v15a2.002 2.002 0 0 1-2 2zM8 6v15h4.001L12 6z",fill:"currentColor"},null,-1)]))}}),fn={xmlns:"http://www.w3.org/2000/svg","xmlns:xlink":"http://www.w3.org/1999/xlink",viewBox:"0 0 32 32"},mn=e.defineComponent({name:"AlignVerticalCenter",render:function(E,o){return e.openBlock(),e.createElementBlock("svg",fn,o[0]||(o[0]=[e.createElementVNode("path",{d:"M30 15h-4v-3a2.002 2.002 0 0 0-2-2h-4a2.002 2.002 0 0 0-2 2v3h-4V8a2.002 2.002 0 0 0-2-2H8a2.002 2.002 0 0 0-2 2v7H2v2h4v7a2.002 2.002 0 0 0 2 2h4a2.002 2.002 0 0 0 2-2v-7h4v3a2.002 2.002 0 0 0 2 2h4a2.002 2.002 0 0 0 2-2v-3h4zM8 24V8h4l.001 16zm12-4v-8h4l.001 8z",fill:"currentColor"},null,-1)]))}}),un={xmlns:"http://www.w3.org/2000/svg","xmlns:xlink":"http://www.w3.org/1999/xlink",viewBox:"0 0 32 32"},gn=e.defineComponent({name:"AlignVerticalTop",render:function(E,o){return e.openBlock(),e.createElementBlock("svg",un,o[0]||(o[0]=[e.createElementVNode("path",{d:"M24 20h-4a2.002 2.002 0 0 1-2-2v-7a2.002 2.002 0 0 1 2-2h4a2.002 2.002 0 0 1 2 2v7a2.002 2.002 0 0 1-2 2zm-4-9v7h4.001L24 11z",fill:"currentColor"},null,-1),e.createElementVNode("path",{d:"M12 28H8a2.002 2.002 0 0 1-2-2V11a2.002 2.002 0 0 1 2-2h4a2.002 2.002 0 0 1 2 2v15a2.002 2.002 0 0 1-2 2zM8 11v15h4.001L12 11z",fill:"currentColor"},null,-1),e.createElementVNode("path",{d:"M2 4h28v2H2z",fill:"currentColor"},null,-1)]))}}),En={xmlns:"http://www.w3.org/2000/svg","xmlns:xlink":"http://www.w3.org/1999/xlink",viewBox:"0 0 32 32"},hn=e.defineComponent({name:"DistributeHorizontalCenter",render:function(E,o){return e.openBlock(),e.createElementBlock("svg",En,o[0]||(o[0]=[e.createElementVNode("path",{d:"M24 10h-1V2h-2v8h-1a2.002 2.002 0 0 0-2 2v8a2.002 2.002 0 0 0 2 2h1v8h2v-8h1a2.002 2.002 0 0 0 2-2v-8a2.002 2.002 0 0 0-2-2zm0 10h-4v-8h4z",fill:"currentColor"},null,-1),e.createElementVNode("path",{d:"M12 6h-1V2H9v4H8a2.002 2.002 0 0 0-2 2v16a2.002 2.002 0 0 0 2 2h1v4h2v-4h1a2.002 2.002 0 0 0 2-2V8a2.002 2.002 0 0 0-2-2zm0 18H8V8h4z",fill:"currentColor"},null,-1)]))}}),bn={xmlns:"http://www.w3.org/2000/svg","xmlns:xlink":"http://www.w3.org/1999/xlink",viewBox:"0 0 32 32"},vn=e.defineComponent({name:"DistributeVerticalCenter",render:function(E,o){return e.openBlock(),e.createElementBlock("svg",bn,o[0]||(o[0]=[e.createElementVNode("path",{d:"M30 21h-4v-1a2.002 2.002 0 0 0-2-2H8a2.002 2.002 0 0 0-2 2v1H2v2h4v1a2.002 2.002 0 0 0 2 2h16a2.002 2.002 0 0 0 2-2v-1h4zm-6 3H8v-4l16-.001z",fill:"currentColor"},null,-1),e.createElementVNode("path",{d:"M30 9h-8V8a2.002 2.002 0 0 0-2-2h-8a2.002 2.002 0 0 0-2 2v1H2v2h8v1a2.002 2.002 0 0 0 2 2h8a2.002 2.002 0 0 0 2-2v-1h8zm-10 3h-8V8l8-.001z",fill:"currentColor"},null,-1)]))}}),yn={class:"scada-header"},Cn={class:"header-left"},Bn={class:"header-center"},kn={class:"tool-group"},Nn={key:0,class:"divider"},Vn={key:1,class:"tool-group"},Dn={key:2,class:"divider"},An={key:3,class:"tool-group"},_n={class:"header-right"},$n={class:"tool-group"},Fn=e.defineComponent({__name:"Header",props:{selectedNodesCount:{default:0}},emits:["save","import","workflow","preview","export","zoomIn","zoomOut","clearAll","alignLeft","alignCenter","alignRight","alignTop","alignMiddle","alignBottom","distributeHorizontal","distributeVertical"],setup(g,{emit:E}){const o=g,a=E;return(t,s)=>(e.openBlock(),e.createElementBlock("header",yn,[e.createElementVNode("div",Cn,[e.renderSlot(t.$slots,"left",{},()=>[s[16]||(s[16]=e.createElementVNode("h1",{class:"logo"},"SCADA 组态引擎",-1)),s[17]||(s[17]=e.createElementVNode("span",{class:"version"},"v1.0.0",-1))],!0)]),e.createElementVNode("div",Bn,[e.createElementVNode("div",kn,[e.createElementVNode("button",{class:"toolbar-btn",onClick:s[0]||(s[0]=h=>a("zoomIn")),title:"放大"},[...s[18]||(s[18]=[e.createElementVNode("span",{class:"icon"},"+",-1)])]),e.createElementVNode("button",{class:"toolbar-btn",onClick:s[1]||(s[1]=h=>a("zoomOut")),title:"缩小"},[...s[19]||(s[19]=[e.createElementVNode("span",{class:"icon"},"-",-1)])]),e.createElementVNode("button",{class:"toolbar-btn",onClick:s[2]||(s[2]=h=>a("clearAll")),title:"清空画布"},[...s[20]||(s[20]=[e.createElementVNode("span",{class:"icon"},"🗑",-1)])])]),o.selectedNodesCount>=2?(e.openBlock(),e.createElementBlock("div",Nn)):e.createCommentVNode("",!0),o.selectedNodesCount>=2?(e.openBlock(),e.createElementBlock("div",Vn,[e.createElementVNode("button",{class:"toolbar-btn",onClick:s[3]||(s[3]=h=>a("alignLeft")),title:"左对齐"},[e.createVNode(e.unref(sn),{class:"icon-svg"})]),e.createElementVNode("button",{class:"toolbar-btn",onClick:s[4]||(s[4]=h=>a("alignCenter")),title:"水平居中"},[e.createVNode(e.unref(rn),{class:"icon-svg"})]),e.createElementVNode("button",{class:"toolbar-btn",onClick:s[5]||(s[5]=h=>a("alignRight")),title:"右对齐"},[e.createVNode(e.unref(dn),{class:"icon-svg"})]),e.createElementVNode("button",{class:"toolbar-btn",onClick:s[6]||(s[6]=h=>a("alignTop")),title:"顶部对齐"},[e.createVNode(e.unref(gn),{class:"icon-svg"})]),e.createElementVNode("button",{class:"toolbar-btn",onClick:s[7]||(s[7]=h=>a("alignMiddle")),title:"垂直居中"},[e.createVNode(e.unref(mn),{class:"icon-svg"})]),e.createElementVNode("button",{class:"toolbar-btn",onClick:s[8]||(s[8]=h=>a("alignBottom")),title:"底部对齐"},[e.createVNode(e.unref(xn),{class:"icon-svg"})])])):e.createCommentVNode("",!0),o.selectedNodesCount>=3?(e.openBlock(),e.createElementBlock("div",Dn)):e.createCommentVNode("",!0),o.selectedNodesCount>=3?(e.openBlock(),e.createElementBlock("div",An,[e.createElementVNode("button",{class:"toolbar-btn",onClick:s[9]||(s[9]=h=>a("distributeHorizontal")),title:"横向分布"},[e.createVNode(e.unref(hn),{class:"icon-svg"})]),e.createElementVNode("button",{class:"toolbar-btn",onClick:s[10]||(s[10]=h=>a("distributeVertical")),title:"纵向分布"},[e.createVNode(e.unref(vn),{class:"icon-svg"})])])):e.createCommentVNode("",!0)]),e.createElementVNode("div",_n,[e.createElementVNode("div",$n,[e.createElementVNode("button",{class:"header-btn",onClick:s[11]||(s[11]=h=>a("workflow")),title:"流程编排"},[...s[21]||(s[21]=[e.createElementVNode("span",{class:"icon"},"⚡",-1),e.createElementVNode("span",null,"流程编排",-1)])]),e.createElementVNode("button",{class:"header-btn",onClick:s[12]||(s[12]=h=>a("import")),title:"导入"},[...s[22]||(s[22]=[e.createElementVNode("span",{class:"icon"},"📂",-1),e.createElementVNode("span",null,"导入",-1)])]),e.createElementVNode("button",{class:"header-btn",onClick:s[13]||(s[13]=h=>a("export")),title:"导出"},[...s[23]||(s[23]=[e.createElementVNode("span",{class:"icon"},"📤",-1),e.createElementVNode("span",null,"导出",-1)])]),e.createElementVNode("button",{class:"header-btn",onClick:s[14]||(s[14]=h=>a("preview")),title:"预览"},[...s[24]||(s[24]=[e.createElementVNode("span",{class:"icon"},"👁",-1),e.createElementVNode("span",null,"预览",-1)])]),e.createElementVNode("button",{class:"header-btn",onClick:s[15]||(s[15]=h=>a("save")),title:"保存"},[...s[25]||(s[25]=[e.createElementVNode("span",{class:"icon"},"💾",-1),e.createElementVNode("span",null,"保存",-1)])])])])]))}}),te=(g,E)=>{const o=g.__vccOpts||g;for(const[a,t]of E)o[a]=t;return o},Ge=te(Fn,[["__scopeId","data-v-9bbedc41"]]),Se=[{key:"animationEnabled",label:"启用动画",type:"boolean",path:"data.animation.enabled",defaultValue:!1,description:"是否启用动画效果",bindable:!0},{key:"animationType",label:"动画类型",type:"select",path:"data.animation.type",defaultValue:"none",options:[{label:"无动画",value:"none"},{label:"闪烁",value:"blink"},{label:"缩放",value:"scale"},{label:"旋转",value:"rotate"},{label:"浮动",value:"float"},{label:"脉冲",value:"pulse"}],description:"组件动画效果类型",bindable:!1},{key:"animationDuration",label:"动画时长(ms)",type:"number",path:"data.animation.duration",defaultValue:1e3,min:100,max:5e3,step:100,description:"动画完成一次所需时间",bindable:!1},{key:"animationLoop",label:"循环播放",type:"boolean",path:"data.animation.loop",defaultValue:!0,description:"是否循环播放动画",bindable:!1}],jt={metadata:{id:"rect",name:"矩形",category:"basic",icon:"▢",description:"基础矩形图形组件",version:"1.0.0"},shape:"rect",width:120,height:60,label:"矩形",attrs:{body:{fill:"#3b82f6",stroke:"#2563eb",strokeWidth:2},label:{fill:"#fff",fontSize:14}},ports:{groups:{top:{position:"top",attrs:{circle:{r:4,magnet:!0,stroke:"#31d0c6",strokeWidth:2,fill:"#fff"}}},right:{position:"right",attrs:{circle:{r:4,magnet:!0,stroke:"#31d0c6",strokeWidth:2,fill:"#fff"}}},bottom:{position:"bottom",attrs:{circle:{r:4,magnet:!0,stroke:"#31d0c6",strokeWidth:2,fill:"#fff"}}},left:{position:"left",attrs:{circle:{r:4,magnet:!0,stroke:"#31d0c6",strokeWidth:2,fill:"#fff"}}}},items:[{id:"port-top",group:"top"},{id:"port-right",group:"right"},{id:"port-bottom",group:"bottom"},{id:"port-left",group:"left"}]},props:[{key:"name",label:"按钮文本",type:"text",path:"attrs.label.text",defaultValue:"矩形",description:"矩形名称"},{key:"fill",label:"填充色",type:"color",path:"attrs.body.fill",defaultValue:"#3b82f6",description:"矩形填充颜色"},{key:"stroke",label:"边框色",type:"color",path:"attrs.body.stroke",defaultValue:"#2563eb",description:"矩形边框颜色"},{key:"strokeWidth",label:"边框宽度",type:"number",path:"attrs.body.strokeWidth",defaultValue:2,min:0,max:10,description:"矩形边框宽度"},{key:"opacity",label:"透明度",type:"slider",path:"attrs.body.opacity",defaultValue:1,min:0,max:1,step:.1,description:"矩形透明度"},...Se]},Xt={metadata:{id:"circle",name:"圆形",category:"basic",icon:"○",description:"基础圆形图形组件",version:"1.0.0"},shape:"circle",width:80,height:80,label:"圆形",attrs:{body:{fill:"#10b981",stroke:"#059669",strokeWidth:2},label:{fill:"#fff",fontSize:14}},ports:{groups:{top:{position:"top",attrs:{circle:{r:4,magnet:!0,stroke:"#31d0c6",strokeWidth:2,fill:"#fff"}}},right:{position:"right",attrs:{circle:{r:4,magnet:!0,stroke:"#31d0c6",strokeWidth:2,fill:"#fff"}}},bottom:{position:"bottom",attrs:{circle:{r:4,magnet:!0,stroke:"#31d0c6",strokeWidth:2,fill:"#fff"}}},left:{position:"left",attrs:{circle:{r:4,magnet:!0,stroke:"#31d0c6",strokeWidth:2,fill:"#fff"}}}},items:[{id:"port-top",group:"top"},{id:"port-right",group:"right"},{id:"port-bottom",group:"bottom"},{id:"port-left",group:"left"}]},props:[{key:"text",label:"初始文本",type:"text",path:"attrs.label.text",defaultValue:"圆形",description:"圆形初始文本"},{key:"fill",label:"填充色",type:"color",path:"attrs.body.fill",defaultValue:"#10b981",description:"圆形填充颜色"},{key:"stroke",label:"边框色",type:"color",path:"attrs.body.stroke",defaultValue:"#059669",description:"圆形边框颜色"},{key:"strokeWidth",label:"边框宽度",type:"number",path:"attrs.body.strokeWidth",defaultValue:2,min:0,max:10,description:"圆形边框宽度"},{key:"opacity",label:"透明度",type:"slider",path:"attrs.body.opacity",defaultValue:1,min:0,max:1,step:.1,description:"圆形透明度"},...Se]},Yt={metadata:{id:"text",name:"文本",category:"basic",icon:"T",description:"文本标签组件",version:"1.0.0"},shape:"rect",width:100,height:40,label:"文本",attrs:{body:{fill:"transparent",stroke:"#64748b",strokeWidth:1,strokeDasharray:"5 5"},label:{fill:"#e2e8f0",fontSize:16}},props:[{key:"label",label:"文本内容",type:"text",path:"attrs.label.text",defaultValue:"文本",description:"显示的文本内容"},{key:"fontSize",label:"字体大小",type:"number",path:"attrs.label.fontSize",defaultValue:16,min:12,max:48,description:"文本字体大小"},{key:"fontColor",label:"字体颜色",type:"color",path:"attrs.label.fill",defaultValue:"#e2e8f0",description:"文本字体颜色"},{key:"stroke",label:"边框色",type:"color",path:"attrs.body.stroke",defaultValue:"#64748b",description:"边框颜色"},...Se]},wn=Object.freeze(Object.defineProperty({__proto__:null,CircleComponent:Xt,RectComponent:jt,TextComponent:Yt},Symbol.toStringTag,{value:"Module"})),Kt={metadata:{id:"light",name:"灯泡",category:"iot",icon:"💡",description:"IoT灯泡控制组件",version:"1.0.0"},shape:"circle",width:60,height:60,label:"💡",attrs:{body:{fill:"#fbbf24",stroke:"#f59e0b",strokeWidth:2},label:{fill:"#fff",fontSize:24}},data:{type:"light",deviceId:"",property:""},ports:{groups:{left:{position:"left",attrs:{circle:{r:4,magnet:!0,stroke:"#31d0c6",strokeWidth:2,fill:"#fff"}}},right:{position:"right",attrs:{circle:{r:4,magnet:!0,stroke:"#31d0c6",strokeWidth:2,fill:"#fff"}}}},items:[{id:"port-left",group:"left"},{id:"port-right",group:"right"}]},props:[{key:"fill",label:"填充色",type:"color",path:"attrs.body.fill",defaultValue:"#fbbf24",description:"灯泡颜色"},{key:"stroke",label:"边框色",type:"color",path:"attrs.body.stroke",defaultValue:"#f59e0b",description:"边框颜色"},{key:"deviceId",label:"设备ID",type:"text",path:"data.deviceId",defaultValue:"",description:"绑定的设备ID"},{key:"property",label:"设备属性",type:"text",path:"data.property",defaultValue:"",description:"绑定的设备属性名称"},...Se]},Jt={metadata:{id:"switch",name:"开关",category:"iot",icon:"🔘",description:"IoT开关控制组件",version:"1.0.0"},shape:"rect",width:100,height:50,label:"开关",attrs:{body:{fill:"#64748b",stroke:"#475569",strokeWidth:2,rx:25,ry:25},label:{fill:"#fff",fontSize:14}},data:{type:"switch",deviceId:"",property:"",state:!1},ports:{groups:{left:{position:"left",attrs:{circle:{r:4,magnet:!0,stroke:"#31d0c6",strokeWidth:2,fill:"#fff"}}},right:{position:"right",attrs:{circle:{r:4,magnet:!0,stroke:"#31d0c6",strokeWidth:2,fill:"#fff"}}}},items:[{id:"port-left",group:"left"},{id:"port-right",group:"right"}]},props:[{key:"fill",label:"填充色",type:"color",path:"attrs.body.fill",defaultValue:"#64748b",description:"开关颜色"},{key:"stroke",label:"边框色",type:"color",path:"attrs.body.stroke",defaultValue:"#475569",description:"边框颜色"},{key:"deviceId",label:"设备ID",type:"text",path:"data.deviceId",defaultValue:"",description:"绑定的设备ID"},{key:"property",label:"设备属性",type:"text",path:"data.property",defaultValue:"",description:"绑定的设备属性名称"},{key:"state",label:"开关状态",type:"boolean",path:"data.state",defaultValue:!1,description:"开关当前状态"},...Se]},Zt={metadata:{id:"gauge",name:"仪表",category:"iot",icon:"📊",description:"IoT仪表盘数据展示组件",version:"1.0.0"},shape:"circle",width:100,height:100,label:"📊",attrs:{body:{fill:"#8b5cf6",stroke:"#7c3aed",strokeWidth:2},label:{fill:"#fff",fontSize:32}},data:{type:"gauge",deviceId:"",property:"",value:0},ports:{groups:{top:{position:"top",attrs:{circle:{r:4,magnet:!0,stroke:"#31d0c6",strokeWidth:2,fill:"#fff"}}},right:{position:"right",attrs:{circle:{r:4,magnet:!0,stroke:"#31d0c6",strokeWidth:2,fill:"#fff"}}},bottom:{position:"bottom",attrs:{circle:{r:4,magnet:!0,stroke:"#31d0c6",strokeWidth:2,fill:"#fff"}}},left:{position:"left",attrs:{circle:{r:4,magnet:!0,stroke:"#31d0c6",strokeWidth:2,fill:"#fff"}}}},items:[{id:"port-top",group:"top"},{id:"port-right",group:"right"},{id:"port-bottom",group:"bottom"},{id:"port-left",group:"left"}]},props:[{key:"fill",label:"填充色",type:"color",path:"attrs.body.fill",defaultValue:"#8b5cf6",description:"仪表颜色"},{key:"stroke",label:"边框色",type:"color",path:"attrs.body.stroke",defaultValue:"#7c3aed",description:"边框颜色"},{key:"deviceId",label:"设备ID",type:"text",path:"data.deviceId",defaultValue:"",description:"绑定的设备ID"},{key:"property",label:"设备属性",type:"text",path:"data.property",defaultValue:"",description:"绑定的设备属性名称"},{key:"value",label:"当前值",type:"number",path:"data.value",defaultValue:0,min:0,max:100,description:"仪表当前显示值"},...Se]},Sn=Object.freeze(Object.defineProperty({__proto__:null,GaugeComponent:Zt,LightComponent:Kt,SwitchComponent:Jt},Symbol.toStringTag,{value:"Module"}));class In{constructor(){Ue(this,"registry",{});this.registerDefaultComponents()}registerDefaultComponents(){this.register(jt),this.register(Xt),this.register(Yt),this.register(Kt),this.register(Jt),this.register(Zt)}register(E){const{id:o}=E.metadata;this.registry[o]&&console.warn(`组件 ${o} 已存在,将被覆盖`),this.registry[o]=E,console.log(`✓ 组件注册成功: ${E.metadata.name} (${o})`)}registerBatch(E){E.forEach(o=>this.register(o))}getComponent(E){return this.registry[E]}getAllComponents(){return{...this.registry}}getComponentsByCategory(E){return Object.values(this.registry).filter(o=>o.metadata.category===E)}getComponentList(){return Object.values(this.registry)}hasComponent(E){return E in this.registry}unregister(E){return this.registry[E]?(delete this.registry[E],console.log(`✓ 组件注销成功: ${E}`),!0):(console.warn(`组件 ${E} 不存在`),!1)}getCount(){return Object.keys(this.registry).length}clear(){this.registry={},console.log("✓ 组件注册表已清空")}}const Pe=new In,je={size:{width:1920,height:1080,preset:"1920*1080"},zoom:{scale:1,min:.1,max:5},offset:{x:0,y:0},background:{color:"#1e293b",size:"origin",repeat:"repeat"},grid:{enabled:!0,size:10,color:"#475569",type:"dot"},snap:{enabled:!0,threshold:10},guides:{enabled:!1,color:"#3b82f6"},magnetism:{enabled:!0,threshold:10}},zn=[{key:"sizePreset",label:"画布尺寸",type:"select",category:"basic",path:"size.preset",defaultValue:"1920*1080",options:[{label:"1920*1080",value:"1920*1080"},{label:"1366*768",value:"1366*768"},{label:"1280*720",value:"1280*720"},{label:"800*600",value:"800*600"}],description:"预设画布尺寸"},{key:"scale",label:"缩放倍数",type:"slider",category:"transform",path:"zoom.scale",defaultValue:1,min:.1,max:5,step:.1,description:"画布缩放比例"},{key:"offsetX",label:"画布X轴偏移",type:"number",category:"transform",path:"offset.x",defaultValue:0,description:"X轴偏移量"},{key:"offsetY",label:"画布Y轴偏移",type:"number",category:"transform",path:"offset.y",defaultValue:0,description:"Y轴偏移量"},{key:"backgroundColor",label:"背景颜色",type:"color",category:"background",path:"background.color",defaultValue:"#1e293b",description:"画布背景颜色"},{key:"backgroundImage",label:"背景图片",type:"image",category:"background",path:"background.image",defaultValue:"",description:"背景图片URL"},{key:"backgroundSize",label:"背景大小",type:"select",category:"background",path:"background.size",defaultValue:"origin",options:[{label:"原始",value:"origin"},{label:"包含",value:"contain"},{label:"覆盖",value:"cover"},{label:"拉伸",value:"stretch"}],description:"背景图片尺寸模式"},{key:"backgroundRepeat",label:"图像重复",type:"select",category:"background",path:"background.repeat",defaultValue:"repeat",options:[{label:"重复",value:"repeat"},{label:"X轴重复",value:"repeat-x"},{label:"Y轴重复",value:"repeat-y"},{label:"不重复",value:"no-repeat"}],description:"背景图片重复模式"},{key:"gridEnabled",label:"网格",type:"boolean",category:"assist",path:"grid.enabled",defaultValue:!0,description:"显示网格"},{key:"gridSize",label:"网格大小",type:"number",category:"assist",path:"grid.size",defaultValue:10,min:5,max:50,description:"网格单元格大小"},{key:"snapEnabled",label:"网格对齐",type:"boolean",category:"assist",path:"snap.enabled",defaultValue:!0,description:"启用网格对齐"},{key:"guidesEnabled",label:"参考线",type:"boolean",category:"assist",path:"guides.enabled",defaultValue:!0,description:"显示参考线"},{key:"magnetismEnabled",label:"吸附",type:"boolean",category:"assist",path:"magnetism.enabled",defaultValue:!0,description:"启用吸附功能"}],Re={"1920*1080":{width:1920,height:1080},"1366*768":{width:1366,height:768},"1280*720":{width:1280,height:720},"800*600":{width:800,height:600}};class Tn{constructor(){Ue(this,"config");this.config=e.reactive({...je})}getConfig(){return this.config}updateConfig(E){Object.assign(this.config,E)}updateByPath(E,o){const a=E.split(".");let t=this.config;for(let s=0;s<a.length-1;s++)t=t[a[s]];if(t[a[a.length-1]]=o,E==="size.preset"&&o in Re){const{width:s,height:h}=Re[o];this.config.size.width=s,this.config.size.height=h}}getByPath(E){const o=E.split(".");let a=this.config;for(const t of o)a=a==null?void 0:a[t];return a}setSize(E,o,a){this.config.size.width=E,this.config.size.height=o,a&&(this.config.size.preset=a)}updateSize(E){this.config.size.width=E.width,this.config.size.height=E.height}setZoom(E){const{min:o=.1,max:a=5}=this.config.zoom;this.config.zoom.scale=Math.max(o,Math.min(a,E))}setOffset(E,o){this.config.offset.x=E,this.config.offset.y=o}setBackgroundColor(E){this.config.background.color=E}updateBackground(E){E.color!==void 0&&(this.config.background.color=E.color),E.image!==void 0&&(this.config.background.image=E.image),E.size!==void 0&&(this.config.background.size=E.size),E.repeat!==void 0&&(this.config.background.repeat=E.repeat)}setBackgroundImage(E){this.config.background.image=E}toggleGrid(E){this.config.grid.enabled=E??!this.config.grid.enabled}setGridSize(E){this.config.grid.size=E}toggleSnap(E){this.config.snap.enabled=E??!this.config.snap.enabled}toggleGuides(E){this.config.guides.enabled=E??!this.config.guides.enabled}toggleMagnetism(E){this.config.magnetism.enabled=E??!this.config.magnetism.enabled}reset(){Object.assign(this.config,je)}export(){return JSON.stringify(this.config,null,2)}import(E){try{const o=JSON.parse(E);Object.assign(this.config,o)}catch(o){console.error("导入画布配置失败:",o)}}}const Z=new Tn,Pn={class:"component-library"},Rn={class:"library-content"},Mn={key:0,class:"component-section"},Hn={class:"component-grid"},On=["onClick","title"],Un={class:"component-icon"},Ln={class:"component-name"},Wn={key:1,class:"component-section"},qn={class:"component-grid"},Gn=["onClick","title"],jn={class:"component-icon"},Xn={class:"component-name"},Xe=te(e.defineComponent({__name:"ComponentLibrary",emits:["addComponent"],setup(g,{emit:E}){const o=E,a=e.computed(()=>Pe.getComponentsByCategory("basic")),t=e.computed(()=>Pe.getComponentsByCategory("iot")),s=h=>{o("addComponent",h.metadata.id)};return(h,m)=>(e.openBlock(),e.createElementBlock("aside",Pn,[m[2]||(m[2]=e.createElementVNode("div",{class:"library-header"},[e.createElementVNode("h3",null,"组件库")],-1)),e.createElementVNode("div",Rn,[a.value.length>0?(e.openBlock(),e.createElementBlock("div",Mn,[m[0]||(m[0]=e.createElementVNode("h4",{class:"section-title"},"基础组件",-1)),e.createElementVNode("div",Hn,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(a.value,l=>(e.openBlock(),e.createElementBlock("div",{key:l.metadata.id,class:"component-item",onClick:i=>s(l),title:l.metadata.description||l.metadata.name},[e.createElementVNode("span",Un,e.toDisplayString(l.metadata.icon),1),e.createElementVNode("span",Ln,e.toDisplayString(l.metadata.name),1)],8,On))),128))])])):e.createCommentVNode("",!0),t.value.length>0?(e.openBlock(),e.createElementBlock("div",Wn,[m[1]||(m[1]=e.createElementVNode("h4",{class:"section-title"},"IoT组件",-1)),e.createElementVNode("div",qn,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(t.value,l=>(e.openBlock(),e.createElementBlock("div",{key:l.metadata.id,class:"component-item",onClick:i=>s(l),title:l.metadata.description||l.metadata.name},[e.createElementVNode("span",jn,e.toDisplayString(l.metadata.icon),1),e.createElementVNode("span",Xn,e.toDisplayString(l.metadata.name),1)],8,Gn))),128))])])):e.createCommentVNode("",!0)])]))}}),[["__scopeId","data-v-92bb4e17"]]),Yn={class:"canvas-area"},Kn=te(e.defineComponent({__name:"CanvasArea",setup(g,{expose:E}){const o=e.ref();return E({containerRef:o}),(a,t)=>(e.openBlock(),e.createElementBlock("div",Yn,[e.createElementVNode("div",{ref_key:"containerRef",ref:o,class:"canvas-container"},null,512)]))}}),[["__scopeId","data-v-a869f6aa"]]),Jn={class:"canvas-config-panel"},Zn={class:"panel-content"},Qn={class:"config-section"},e0={class:"config-item"},t0={class:"config-section"},o0={class:"config-item"},n0={class:"slider-group"},a0={class:"value-display"},r0={class:"config-item"},l0={class:"number-input-group"},s0={class:"config-item"},i0={class:"number-input-group"},c0={class:"config-section"},d0={class:"config-item"},p0={class:"config-item"},x0={class:"image-upload"},f0={class:"config-item"},m0={class:"config-item"},u0={class:"config-section"},g0={class:"config-item"},E0={class:"switch"},h0={class:"config-item"},b0={class:"switch"},v0={class:"config-item"},y0={class:"switch"},C0={key:0,class:"config-item"},B0={class:"number-input-group"},Ye=te(e.defineComponent({__name:"CanvasConfigPanel",setup(g){const E=e.computed(()=>Z.getConfig()),o=e.ref(),a=()=>{const i=E.value.size.preset;if(i&&i in Re){const{width:n,height:r}=Re[i];Z.setSize(n,r,i)}},t=(i,n)=>{const r=E.value.offset[i];Z.setOffset(i==="x"?r+n:E.value.offset.x,i==="y"?r+n:E.value.offset.y)},s=i=>{const n=Math.max(5,Math.min(50,E.value.grid.size+i));Z.setGridSize(n)},h=()=>{var i;(i=o.value)==null||i.click()},m=i=>{var c;const r=(c=i.target.files)==null?void 0:c[0];if(r){const f=new FileReader;f.onload=u=>{var B;const v=(B=u.target)==null?void 0:B.result;Z.updateByPath("background.image",v)},f.readAsDataURL(r)}},l=()=>{Z.updateByPath("background.image",""),o.value&&(o.value.value="")};return(i,n)=>(e.openBlock(),e.createElementBlock("div",Jn,[n[40]||(n[40]=e.createElementVNode("div",{class:"panel-header"},[e.createElementVNode("h3",null,"画布配置")],-1)),e.createElementVNode("div",Zn,[e.createElementVNode("div",Qn,[n[19]||(n[19]=e.createElementVNode("h4",{class:"section-title"},"基础配置",-1)),e.createElementVNode("div",e0,[n[18]||(n[18]=e.createElementVNode("label",null,"画布尺寸",-1)),e.withDirectives(e.createElementVNode("select",{"onUpdate:modelValue":n[0]||(n[0]=r=>E.value.size.preset=r),onChange:a,class:"config-select"},[...n[17]||(n[17]=[e.createElementVNode("option",{value:"1920*1080"},"1920*1080",-1),e.createElementVNode("option",{value:"1366*768"},"1366*768",-1),e.createElementVNode("option",{value:"1280*720"},"1280*720",-1),e.createElementVNode("option",{value:"800*600"},"800*600",-1)])],544),[[e.vModelSelect,E.value.size.preset]])])]),e.createElementVNode("div",t0,[n[23]||(n[23]=e.createElementVNode("h4",{class:"section-title"},"变换",-1)),e.createElementVNode("div",o0,[n[20]||(n[20]=e.createElementVNode("label",null,"缩放倍数",-1)),e.createElementVNode("div",n0,[e.withDirectives(e.createElementVNode("input",{type:"range","onUpdate:modelValue":n[1]||(n[1]=r=>E.value.zoom.scale=r),min:.1,max:5,step:.1,class:"config-slider"},null,512),[[e.vModelText,E.value.zoom.scale,void 0,{number:!0}]]),e.createElementVNode("span",a0,e.toDisplayString(E.value.zoom.scale.toFixed(1)),1)])]),e.createElementVNode("div",r0,[n[21]||(n[21]=e.createElementVNode("label",null,"画布X轴偏移",-1)),e.createElementVNode("div",l0,[e.createElementVNode("button",{onClick:n[2]||(n[2]=r=>t("x",-10)),class:"adjust-btn"},"-"),e.withDirectives(e.createElementVNode("input",{type:"number","onUpdate:modelValue":n[3]||(n[3]=r=>E.value.offset.x=r),class:"config-number"},null,512),[[e.vModelText,E.value.offset.x,void 0,{number:!0}]]),e.createElementVNode("button",{onClick:n[4]||(n[4]=r=>t("x",10)),class:"adjust-btn"},"+")])]),e.createElementVNode("div",s0,[n[22]||(n[22]=e.createElementVNode("label",null,"画布Y轴偏移",-1)),e.createElementVNode("div",i0,[e.createElementVNode("button",{onClick:n[5]||(n[5]=r=>t("y",-10)),class:"adjust-btn"},"-"),e.withDirectives(e.createElementVNode("input",{type:"number","onUpdate:modelValue":n[6]||(n[6]=r=>E.value.offset.y=r),class:"config-number"},null,512),[[e.vModelText,E.value.offset.y,void 0,{number:!0}]]),e.createElementVNode("button",{onClick:n[7]||(n[7]=r=>t("y",10)),class:"adjust-btn"},"+")])])]),e.createElementVNode("div",c0,[n[31]||(n[31]=e.createElementVNode("h4",{class:"section-title"},"背景",-1)),e.createElementVNode("div",d0,[n[24]||(n[24]=e.createElementVNode("label",null,"背景颜色",-1)),e.withDirectives(e.createElementVNode("input",{type:"color","onUpdate:modelValue":n[8]||(n[8]=r=>E.value.background.color=r),class:"config-color"},null,512),[[e.vModelText,E.value.background.color]])]),e.createElementVNode("div",p0,[n[26]||(n[26]=e.createElementVNode("label",null,"背景图片",-1)),e.createElementVNode("div",x0,[e.createElementVNode("input",{type:"file",accept:"image/*",onChange:m,ref_key:"fileInput",ref:o,style:{display:"none"}},null,544),e.createElementVNode("button",{onClick:h,class:"upload-btn"},[...n[25]||(n[25]=[e.createElementVNode("span",null,"📄",-1)])]),E.value.background.image?(e.openBlock(),e.createElementBlock("button",{key:0,onClick:l,class:"clear-btn",title:"清除背景图"}," ✕ ")):e.createCommentVNode("",!0)])]),e.createElementVNode("div",f0,[n[28]||(n[28]=e.createElementVNode("label",null,"背景大小",-1)),e.withDirectives(e.createElementVNode("select",{"onUpdate:modelValue":n[9]||(n[9]=r=>E.value.background.size=r),class:"config-select"},[...n[27]||(n[27]=[e.createElementVNode("option",{value:"origin"},"原始",-1),e.createElementVNode("option",{value:"contain"},"包含",-1),e.createElementVNode("option",{value:"cover"},"覆盖",-1),e.createElementVNode("option",{value:"stretch"},"拉伸",-1)])],512),[[e.vModelSelect,E.value.background.size]])]),e.createElementVNode("div",m0,[n[30]||(n[30]=e.createElementVNode("label",null,"图像重复",-1)),e.withDirectives(e.createElementVNode("select",{"onUpdate:modelValue":n[10]||(n[10]=r=>E.value.background.repeat=r),class:"config-select"},[...n[29]||(n[29]=[e.createElementVNode("option",{value:"repeat"},"重复",-1),e.createElementVNode("option",{value:"repeat-x"},"X轴重复",-1),e.createElementVNode("option",{value:"repeat-y"},"Y轴重复",-1),e.createElementVNode("option",{value:"no-repeat"},"不重复",-1)])],512),[[e.vModelSelect,E.value.background.repeat]])])]),e.createElementVNode("div",u0,[n[39]||(n[39]=e.createElementVNode("h4",{class:"section-title"},"辅助",-1)),e.createElementVNode("div",g0,[n[33]||(n[33]=e.createElementVNode("label",null,"吸附",-1)),e.createElementVNode("label",E0,[e.withDirectives(e.createElementVNode("input",{type:"checkbox","onUpdate:modelValue":n[11]||(n[11]=r=>E.value.magnetism.enabled=r)},null,512),[[e.vModelCheckbox,E.value.magnetism.enabled]]),n[32]||(n[32]=e.createElementVNode("span",{class:"slider"},null,-1))])]),e.createElementVNode("div",h0,[n[35]||(n[35]=e.createElementVNode("label",null,"网格",-1)),e.createElementVNode("label",b0,[e.withDirectives(e.createElementVNode("input",{type:"checkbox","onUpdate:modelValue":n[12]||(n[12]=r=>E.value.grid.enabled=r)},null,512),[[e.vModelCheckbox,E.value.grid.enabled]]),n[34]||(n[34]=e.createElementVNode("span",{class:"slider"},null,-1))])]),e.createElementVNode("div",v0,[n[37]||(n[37]=e.createElementVNode("label",null,"网格对齐",-1)),e.createElementVNode("label",y0,[e.withDirectives(e.createElementVNode("input",{type:"checkbox","onUpdate:modelValue":n[13]||(n[13]=r=>E.value.snap.enabled=r)},null,512),[[e.vModelCheckbox,E.value.snap.enabled]]),n[36]||(n[36]=e.createElementVNode("span",{class:"slider"},null,-1))])]),E.value.grid.enabled?(e.openBlock(),e.createElementBlock("div",C0,[n[38]||(n[38]=e.createElementVNode("label",null,"网格大小",-1)),e.createElementVNode("div",B0,[e.createElementVNode("button",{onClick:n[14]||(n[14]=r=>s(-5)),class:"adjust-btn"},"-"),e.withDirectives(e.createElementVNode("input",{type:"number","onUpdate:modelValue":n[15]||(n[15]=r=>E.value.grid.size=r),min:5,max:50,class:"config-number"},null,512),[[e.vModelText,E.value.grid.size,void 0,{number:!0}]]),e.createElementVNode("button",{onClick:n[16]||(n[16]=r=>s(5)),class:"adjust-btn"},"+")])])):e.createCommentVNode("",!0)])])]))}}),[["__scopeId","data-v-f309895b"]]),k0={class:"tab-pane"},N0={class:"property-section"},V0={class:"property-item-inline"},D0=["value"],A0={class:"property-item-inline"},_0=["value"],$0={class:"property-item-inline"},F0=["value"],w0={class:"property-section"},S0={class:"property-row"},I0={class:"property-item"},z0=["value"],T0={class:"property-item"},P0=["value"],R0={class:"property-row"},M0={class:"property-item"},H0=["value"],O0={class:"property-item"},U0=["value"],L0={class:"property-section"},W0={class:"property-item-inline"},q0=["value"],G0={class:"property-item-inline"},j0={class:"color-input-wrapper"},X0=["value"],Y0={class:"color-value"},K0={class:"property-item-inline"},J0={class:"color-input-wrapper"},Z0=["value"],Q0={class:"color-value"},ea={class:"property-item-inline"},ta=["value"],oa={class:"property-item-inline"},na=["value"],aa={key:0,class:"property-section"},ra={key:0,class:"property-hint"},la=["value","onInput","placeholder"],sa=["value","onInput","min","max","step"],ia={key:2,class:"color-input-wrapper"},ca=["value","onInput"],da={class:"color-value"},pa={key:3,class:"checkbox-wrapper"},xa=["checked","onChange"],fa={class:"checkbox-label"},ma=["value","onChange"],ua=["value"],Ke=te(e.defineComponent({__name:"BasicPropertiesTab",props:{selectedNode:{},nodePosition:{},nodeSize:{},nodeAttrs:{}},emits:["update-position","update-size","update-label","update-fill","update-stroke","update-stroke-width","update-opacity","update-component-name","update-dynamic-prop"],setup(g,{emit:E}){const o=g,a=E,t=e.computed(()=>{var l,i;if(!((i=(l=o.selectedNode)==null?void 0:l.data)!=null&&i.props))return[];const m=["label","fill","stroke","strokeWidth","opacity"];return o.selectedNode.data.props.filter(n=>!m.includes(n.key))}),s=m=>{if(!m.path)return m.defaultValue;const l=m.path.split(".");let i=o.selectedNode;for(const n of l)if(i&&typeof i=="object")i=i[n];else return m.defaultValue;return i!==void 0?i:m.defaultValue},h=(m,l)=>{const i=l.target;let n;m.type==="number"?n=Number(i.value):m.type==="boolean"?n=i.checked:n=i.value,a("update-dynamic-prop",m.path,n)};return(m,l)=>{var i,n,r,c,f,u,v,B,V,d,p,x,y,b,D,_,S;return e.openBlock(),e.createElementBlock("div",k0,[e.createElementVNode("div",N0,[l[13]||(l[13]=e.createElementVNode("h4",null,"基础信息",-1)),e.createElementVNode("div",V0,[l[10]||(l[10]=e.createElementVNode("label",null,"组件名称",-1)),e.createElementVNode("input",{type:"text",value:((i=g.selectedNode.getData())==null?void 0:i.componentName)||"",onInput:l[0]||(l[0]=C=>m.$emit("update-component-name",C)),placeholder:"请输入组件名称"},null,40,D0)]),e.createElementVNode("div",A0,[l[11]||(l[11]=e.createElementVNode("label",null,"ID",-1)),e.createElementVNode("input",{type:"text",value:g.selectedNode.id,disabled:""},null,8,_0)]),e.createElementVNode("div",$0,[l[12]||(l[12]=e.createElementVNode("label",null,"类型",-1)),e.createElementVNode("input",{type:"text",value:g.selectedNode.shape,disabled:""},null,8,F0)])]),e.createElementVNode("div",w0,[l[18]||(l[18]=e.createElementVNode("h4",null,"位置和尺寸",-1)),e.createElementVNode("div",S0,[e.createElementVNode("div",I0,[l[14]||(l[14]=e.createElementVNode("label",null,"X",-1)),e.createElementVNode("input",{type:"number",value:g.nodePosition.x,onInput:l[1]||(l[1]=C=>m.$emit("update-position","x",C))},null,40,z0)]),e.createElementVNode("div",T0,[l[15]||(l[15]=e.createElementVNode("label",null,"Y",-1)),e.createElementVNode("input",{type:"number",value:g.nodePosition.y,onInput:l[2]||(l[2]=C=>m.$emit("update-position","y",C))},null,40,P0)])]),e.createElementVNode("div",R0,[e.createElementVNode("div",M0,[l[16]||(l[16]=e.createElementVNode("label",null,"宽度",-1)),e.createElementVNode("input",{type:"number",value:g.nodeSize.width,onInput:l[3]||(l[3]=C=>m.$emit("update-size","width",C))},null,40,H0)]),e.createElementVNode("div",O0,[l[17]||(l[17]=e.createElementVNode("label",null,"高度",-1)),e.createElementVNode("input",{type:"number",value:g.nodeSize.height,onInput:l[4]||(l[4]=C=>m.$emit("update-size","height",C))},null,40,U0)])])]),e.createElementVNode("div",L0,[l[24]||(l[24]=e.createElementVNode("h4",null,"样式",-1)),e.createElementVNode("div",W0,[l[19]||(l[19]=e.createElementVNode("label",null,"初始文本",-1)),e.createElementVNode("input",{type:"text",value:((r=(n=g.nodeAttrs)==null?void 0:n.text)==null?void 0:r.text)||((f=(c=g.nodeAttrs)==null?void 0:c.label)==null?void 0:f.text)||g.selectedNode.getProp("label")||"",onInput:l[5]||(l[5]=C=>m.$emit("update-label",C)),placeholder:"设置默认显示文本"},null,40,q0)]),e.createElementVNode("div",G0,[l[20]||(l[20]=e.createElementVNode("label",null,"填充颜色",-1)),e.createElementVNode("div",j0,[e.createElementVNode("input",{type:"color",value:((v=(u=g.nodeAttrs)==null?void 0:u.body)==null?void 0:v.fill)||"#3b82f6",onInput:l[6]||(l[6]=C=>m.$emit("update-fill",C))},null,40,X0),e.createElementVNode("span",Y0,e.toDisplayString(((V=(B=g.nodeAttrs)==null?void 0:B.body)==null?void 0:V.fill)||"#3b82f6"),1)])]),e.createElementVNode("div",K0,[l[21]||(l[21]=e.createElementVNode("label",null,"边框颜色",-1)),e.createElementVNode("div",J0,[e.createElementVNode("input",{type:"color",value:((p=(d=g.nodeAttrs)==null?void 0:d.body)==null?void 0:p.stroke)||"#2563eb",onInput:l[7]||(l[7]=C=>m.$emit("update-stroke",C))},null,40,Z0),e.createElementVNode("span",Q0,e.toDisplayString(((y=(x=g.nodeAttrs)==null?void 0:x.body)==null?void 0:y.stroke)||"#2563eb"),1)])]),e.createElementVNode("div",ea,[l[22]||(l[22]=e.createElementVNode("label",null,"边框宽度",-1)),e.createElementVNode("input",{type:"number",min:"0",max:"10",value:((D=(b=g.nodeAttrs)==null?void 0:b.body)==null?void 0:D.strokeWidth)||2,onInput:l[8]||(l[8]=C=>m.$emit("update-stroke-width",C))},null,40,ta)]),e.createElementVNode("div",oa,[l[23]||(l[23]=e.createElementVNode("label",null,"透明度",-1)),e.createElementVNode("input",{type:"number",min:"0",max:"1",step:"0.1",value:((S=(_=g.nodeAttrs)==null?void 0:_.body)==null?void 0:S.opacity)!==void 0?g.nodeAttrs.body.opacity:1,onInput:l[9]||(l[9]=C=>m.$emit("update-opacity",C))},null,40,na)])]),t.value.length>0?(e.openBlock(),e.createElementBlock("div",aa,[l[25]||(l[25]=e.createElementVNode("h4",null,"组件属性",-1)),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(t.value,C=>(e.openBlock(),e.createElementBlock("div",{key:C.key,class:"property-item-inline"},[e.createElementVNode("label",null,[e.createTextVNode(e.toDisplayString(C.label)+" ",1),C.description?(e.openBlock(),e.createElementBlock("span",ra,e.toDisplayString(C.description),1)):e.createCommentVNode("",!0)]),C.type==="text"?(e.openBlock(),e.createElementBlock("input",{key:0,type:"text",value:s(C),onInput:k=>h(C,k),placeholder:C.defaultValue},null,40,la)):C.type==="number"?(e.openBlock(),e.createElementBlock("input",{key:1,type:"number",value:s(C),onInput:k=>h(C,k),min:C.min,max:C.max,step:C.step},null,40,sa)):C.type==="color"?(e.openBlock(),e.createElementBlock("div",ia,[e.createElementVNode("input",{type:"color",value:s(C),onInput:k=>h(C,k)},null,40,ca),e.createElementVNode("span",da,e.toDisplayString(s(C)),1)])):C.type==="boolean"?(e.openBlock(),e.createElementBlock("div",pa,[e.createElementVNode("input",{type:"checkbox",checked:s(C),onChange:k=>h(C,k)},null,40,xa),e.createElementVNode("span",fa,e.toDisplayString(s(C)?"是":"否"),1)])):C.type==="select"?(e.openBlock(),e.createElementBlock("select",{key:4,value:s(C),onChange:k=>h(C,k)},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(C.options,k=>(e.openBlock(),e.createElementBlock("option",{key:k.value,value:k.value},e.toDisplayString(k.label),9,ua))),128))],40,ma)):e.createCommentVNode("",!0)]))),128))])):e.createCommentVNode("",!0)])}}}),[["__scopeId","data-v-def84c5f"]]),ga={class:"tab-pane"},Ea={class:"property-section"},ha={class:"property-item-inline"},ba=["value"],va={key:0,class:"property-section"},ya={class:"property-item-inline"},Ca=["value"],Ba={class:"property-item-inline"},ka=["value"],Na={class:"property-item-inline"},Va=["value"],Da={class:"property-item-inline"},Aa=["value"],_a={class:"property-item-inline"},$a=["value"],Fa={class:"property-item-inline"},wa=["value"],Sa={key:1,class:"property-section"},Ia={class:"property-item-inline"},za=["value"],Ta={class:"property-item-inline"},Pa=["value"],Ra={class:"property-item-inline"},Ma=["value"],Ha={class:"property-item-inline"},Oa=["value"],Ua={class:"property-item-inline"},La=["value"],Wa={class:"property-item-inline"},qa=["value"],Ga={key:2,class:"property-section"},ja={class:"property-item-inline"},Xa=["value"],Ya={class:"property-item-inline"},Ka=["value"],Ja={class:"property-item-inline"},Za=["value"],Qa={class:"property-item-inline"},er=["value"],tr={class:"property-item-inline"},or={class:"checkbox-wrapper"},nr=["checked"],ar={class:"checkbox-label"},rr={key:3,class:"property-section"},lr={class:"property-item-inline"},sr=["value"],ir={class:"property-item-inline"},cr=["value"],dr={class:"property-item-inline"},pr=["value"],xr={key:4,class:"property-section"},fr={class:"property-item-inline"},mr=["value"],ur={class:"property-item-inline"},gr=["value"],Er={key:5,class:"property-section"},hr={class:"property-item-inline"},br={class:"checkbox-wrapper"},vr=["checked"],yr={class:"checkbox-label"},Cr={class:"property-item-inline"},Br=["value"],kr=te(e.defineComponent({__name:"DataPropertiesTab",props:{selectedNode:{}},emits:["update-data-source"],setup(g,{emit:E}){const o=g,a=E,t=e.ref({type:"none",enabled:!0,retryCount:3});e.watch(()=>o.selectedNode,n=>{if(n){const r=n.getData();r!=null&&r.dataSource?t.value={...r.dataSource}:t.value={type:"none",enabled:!0,retryCount:3}}},{immediate:!0});const s=n=>{const r=n.target.value;let c={type:r,enabled:!0,retryCount:3};r==="http"?(c.pollInterval=5e3,c.method="GET"):r==="sse"&&(c.autoReconnect=!0),t.value=c,i()},h=(n,r)=>{const c=r.target;let f;c.type==="number"?f=Number(c.value):f=c.value,t.value={...t.value,[n]:f},i()},m=(n,r)=>{const c=r.target.checked;t.value={...t.value,[n]:c},i()},l=n=>{const r=n.target.checked;t.value={...t.value,enabled:r},i()},i=()=>{a("update-data-source",t.value)};return(n,r)=>(e.openBlock(),e.createElementBlock("div",ga,[e.createElementVNode("div",Ea,[r[25]||(r[25]=e.createElementVNode("h4",null,"数据来源",-1)),e.createElementVNode("div",ha,[r[24]||(r[24]=e.createElementVNode("label",null,"来源类型",-1)),e.createElementVNode("select",{value:t.value.type,onChange:s},[...r[23]||(r[23]=[e.createStaticVNode('<option value="none" data-v-5b515f8a>无数据源</option><option value="mqtt" data-v-5b515f8a>MQTT</option><option value="websocket" data-v-5b515f8a>WebSocket</option><option value="http" data-v-5b515f8a>HTTP</option><option value="sse" data-v-5b515f8a>SSE</option><option value="static" data-v-5b515f8a>静态数据</option>',6)])],40,ba)])]),t.value.type==="mqtt"?(e.openBlock(),e.createElementBlock("div",va,[r[32]||(r[32]=e.createElementVNode("h4",null,"MQTT配置",-1)),e.createElementVNode("div",ya,[r[26]||(r[26]=e.createElementVNode("label",null,"服务器",-1)),e.createElementVNode("input",{type:"text",value:t.value.broker||"",onInput:r[0]||(r[0]=c=>h("broker",c)),placeholder:"mqtt://localhost:1883"},null,40,Ca)]),e.createElementVNode("div",Ba,[r[27]||(r[27]=e.createElementVNode("label",null,"客户端ID",-1)),e.createElementVNode("input",{type:"text",value:t.value.clientId||"",onInput:r[1]||(r[1]=c=>h("clientId",c)),placeholder:"自动生成"},null,40,ka)]),e.createElementVNode("div",Na,[r[28]||(r[28]=e.createElementVNode("label",null,"订阅主题",-1)),e.createElementVNode("input",{type:"text",value:t.value.topic||"",onInput:r[2]||(r[2]=c=>h("topic",c)),placeholder:"例如: sensor/temperature"},null,40,Va)]),e.createElementVNode("div",Da,[r[29]||(r[29]=e.createElementVNode("label",null,"用户名",-1)),e.createElementVNode("input",{type:"text",value:t.value.username||"",onInput:r[3]||(r[3]=c=>h("username",c)),placeholder:"可选"},null,40,Aa)]),e.createElementVNode("div",_a,[r[30]||(r[30]=e.createElementVNode("label",null,"密码",-1)),e.createElementVNode("input",{type:"password",value:t.value.password||"",onInput:r[4]||(r[4]=c=>h("password",c)),placeholder:"可选"},null,40,$a)]),e.createElementVNode("div",Fa,[r[31]||(r[31]=e.createElementVNode("label",null,"数据路径",-1)),e.createElementVNode("input",{type:"text",value:t.value.dataPath||"",onInput:r[5]||(r[5]=c=>h("dataPath",c)),placeholder:"例如: value"},null,40,wa)])])):e.createCommentVNode("",!0),t.value.type==="http"?(e.openBlock(),e.createElementBlock("div",Sa,[r[40]||(r[40]=e.createElementVNode("h4",null,"HTTP配置",-1)),e.createElementVNode("div",Ia,[r[33]||(r[33]=e.createElementVNode("label",null,"接口地址",-1)),e.createElementVNode("input",{type:"text",value:t.value.url||"",onInput:r[6]||(r[6]=c=>h("url",c)),placeholder:"https://api.example.com/data"},null,40,za)]),e.createElementVNode("div",Ta,[r[35]||(r[35]=e.createElementVNode("label",null,"请求方法",-1)),e.createElementVNode("select",{value:t.value.method||"GET",onChange:r[7]||(r[7]=c=>h("method",c))},[...r[34]||(r[34]=[e.createElementVNode("option",{value:"GET"},"GET",-1),e.createElementVNode("option",{value:"POST"},"POST",-1),e.createElementVNode("option",{value:"PUT"},"PUT",-1),e.createElementVNode("option",{value:"DELETE"},"DELETE",-1)])],40,Pa)]),e.createElementVNode("div",Ra,[r[36]||(r[36]=e.createElementVNode("label",null,"请求头",-1)),e.createElementVNode("input",{type:"text",value:t.value.headers||"",onInput:r[8]||(r[8]=c=>h("headers",c)),placeholder:"JSON格式"},null,40,Ma)]),e.createElementVNode("div",Ha,[r[37]||(r[37]=e.createElementVNode("label",null,"请求体",-1)),e.createElementVNode("input",{type:"text",value:t.value.body||"",onInput:r[9]||(r[9]=c=>h("body",c)),placeholder:"POST/PUT请求的数据"},null,40,Oa)]),e.createElementVNode("div",Ua,[r[38]||(r[38]=e.createElementVNode("label",null,"数据路径",-1)),e.createElementVNode("input",{type:"text",value:t.value.dataPath||"",onInput:r[10]||(r[10]=c=>h("dataPath",c)),placeholder:"例如: data.value"},null,40,La)]),e.createElementVNode("div",Wa,[r[39]||(r[39]=e.createElementVNode("label",null,"轮询间隔(ms)",-1)),e.createElementVNode("input",{type:"number",value:t.value.pollInterval||5e3,onInput:r[11]||(r[11]=c=>h("pollInterval",c)),min:"1000",step:"1000"},null,40,qa)])])):e.createCommentVNode("",!0),t.value.type==="sse"?(e.openBlock(),e.createElementBlock("div",Ga,[r[46]||(r[46]=e.createElementVNode("h4",null,"SSE配置",-1)),e.createElementVNode("div",ja,[r[41]||(r[41]=e.createElementVNode("label",null,"服务地址",-1)),e.createElementVNode("input",{type:"text",value:t.value.sseUrl||"",onInput:r[12]||(r[12]=c=>h("sseUrl",c)),placeholder:"https://api.example.com/events"},null,40,Xa)]),e.createElementVNode("div",Ya,[r[42]||(r[42]=e.createElementVNode("label",null,"事件类型",-1)),e.createElementVNode("input",{type:"text",value:t.value.eventType||"",onInput:r[13]||(r[13]=c=>h("eventType",c)),placeholder:"留空表示所有事件"},null,40,Ka)]),e.createElementVNode("div",Ja,[r[43]||(r[43]=e.createElementVNode("label",null,"请求头",-1)),e.createElementVNode("input",{type:"text",value:t.value.headers||"",onInput:r[14]||(r[14]=c=>h("headers",c)),placeholder:"JSON格式"},null,40,Za)]),e.createElementVNode("div",Qa,[r[44]||(r[44]=e.createElementVNode("label",null,"数据路径",-1)),e.createElementVNode("input",{type:"text",value:t.value.dataPath||"",onInput:r[15]||(r[15]=c=>h("dataPath",c)),placeholder:"例如: data.value"},null,40,er)]),e.createElementVNode("div",tr,[r[45]||(r[45]=e.createElementVNode("label",null,"自动重连",-1)),e.createElementVNode("div",or,[e.createElementVNode("input",{type:"checkbox",checked:t.value.autoReconnect!==!1,onChange:r[16]||(r[16]=c=>m("autoReconnect",c))},null,40,nr),e.createElementVNode("span",ar,e.toDisplayString(t.value.autoReconnect!==!1?"是":"否"),1)])])])):e.createCommentVNode("",!0),t.value.type==="websocket"?(e.openBlock(),e.createElementBlock("div",rr,[r[50]||(r[50]=e.createElementVNode("h4",null,"WebSocket配置",-1)),e.createElementVNode("div",lr,[r[47]||(r[47]=e.createElementVNode("label",null,"服务地址",-1)),e.createElementVNode("input",{type:"text",value:t.value.wsUrl||"",onInput:r[17]||(r[17]=c=>h("wsUrl",c)),placeholder:"ws://localhost:8080"},null,40,sr)]),e.createElementVNode("div",ir,[r[48]||(r[48]=e.createElementVNode("label",null,"订阅主题",-1)),e.createElementVNode("input",{type:"text",value:t.value.topic||"",onInput:r[18]||(r[18]=c=>h("topic",c)),placeholder:"例如: device/status"},null,40,cr)]),e.createElementVNode("div",dr,[r[49]||(r[49]=e.createElementVNode("label",null,"数据路径",-1)),e.createElementVNode("input",{type:"text",value:t.value.dataPath||"",onInput:r[19]||(r[19]=c=>h("dataPath",c)),placeholder:"例如: payload.value"},null,40,pr)])])):e.createCommentVNode("",!0),t.value.type==="static"?(e.openBlock(),e.createElementBlock("div",xr,[r[54]||(r[54]=e.createElementVNode("h4",null,"静态数据配置",-1)),e.createElementVNode("div",fr,[r[51]||(r[51]=e.createElementVNode("label",null,"数据值",-1)),e.createElementVNode("input",{type:"text",value:t.value.value||"",onInput:r[20]||(r[20]=c=>h("value",c)),placeholder:"请输入数据值"},null,40,mr)]),e.createElementVNode("div",ur,[r[53]||(r[53]=e.createElementVNode("label",null,"数据类型",-1)),e.createElementVNode("select",{value:t.value.valueType||"string",onChange:r[21]||(r[21]=c=>h("valueType",c))},[...r[52]||(r[52]=[e.createElementVNode("option",{value:"string"},"字符串",-1),e.createElementVNode("option",{value:"number"},"数字",-1),e.createElementVNode("option",{value:"boolean"},"布尔值",-1),e.createElementVNode("option",{value:"json"},"JSON对象",-1)])],40,gr)])])):e.createCommentVNode("",!0),t.value.type!=="none"?(e.openBlock(),e.createElementBlock("div",Er,[r[57]||(r[57]=e.createElementVNode("h4",null,"通用配置",-1)),e.createElementVNode("div",hr,[r[55]||(r[55]=e.createElementVNode("label",null,"启用状态",-1)),e.createElementVNode("div",br,[e.createElementVNode("input",{type:"checkbox",checked:t.value.enabled!==!1,onChange:l},null,40,vr),e.createElementVNode("span",yr,e.toDisplayString(t.value.enabled!==!1?"启用":"禁用"),1)])]),e.createElementVNode("div",Cr,[r[56]||(r[56]=e.createElementVNode("label",null,"错误重试",-1)),e.createElementVNode("input",{type:"number",value:t.value.retryCount||3,onInput:r[22]||(r[22]=c=>h("retryCount",c)),min:"0",max:"10"},null,40,Br)])])):e.createCommentVNode("",!0)]))}}),[["__scopeId","data-v-5b515f8a"]]),Nr={class:"edge-properties-tab"},Vr={class:"property-section"},Dr={class:"property-item"},Ar={class:"color-input-wrapper"},_r=["value"],$r=["value"],Fr={class:"property-item"},wr={class:"number-input-wrapper"},Sr=["value"],Ir={class:"property-item"},zr=["value"],Tr={class:"property-item"},Pr={class:"slider-wrapper"},Rr=["value"],Mr={class:"slider-value"},Hr={class:"property-item"},Or=["value"],Ur={key:0,class:"property-item"},Lr={class:"number-input-wrapper"},Wr=["value"],qr={class:"property-section"},Gr={class:"property-item"},jr=["value"],Xr={class:"property-item"},Yr=["value"],Kr={class:"property-section"},Jr={class:"property-item"},Zr=["value"],Qr={class:"property-item"},el=["value"],tl=te(e.defineComponent({__name:"EdgePropertiesTab",props:{selectedEdge:{}},emits:["updateEdge","deleteEdge"],setup(g,{emit:E}){const o=g,a=E,t=e.computed(()=>{var y;return((y=o.selectedEdge)==null?void 0:y.getAttrs())||{}}),s=y=>{const b=y.target.value;a("updateEdge",{attrs:{line:{stroke:b}}})},h=y=>{const b=Number(y.target.value);a("updateEdge",{attrs:{line:{strokeWidth:b}}})},m=()=>{var b;const y=(b=t.value.line)==null?void 0:b.strokeDasharray;return y?y==="5,5"?"5,5":y==="2,2"?"2,2":y==="10,5,2,5"?"10,5,2,5":"none":"none"},l=y=>{const b=y.target.value;a("updateEdge",{attrs:{line:{strokeDasharray:b==="none"?void 0:b}}})},i=y=>{const b=Number(y.target.value);a("updateEdge",{attrs:{line:{opacity:b}}})},n=y=>{var D;const b=(D=t.value.line)==null?void 0:D[`${y}Marker`];return!b||typeof b!="object"||!b.name?"none":b.name},r=()=>{var D;const y=(D=t.value.line)==null?void 0:D.opacity;return((y!==void 0&&typeof y=="number"?y:1)*100).toFixed(0)},c=y=>{const b=y.target.value;a("updateEdge",{attrs:{line:{sourceMarker:b==="none"?void 0:{name:b,width:8,height:6}}}})},f=y=>{const b=y.target.value;a("updateEdge",{attrs:{line:{targetMarker:b==="none"?void 0:{name:b,width:8,height:6}}}})},u=y=>{const b=y.target.value;a("updateEdge",{router:b})},v=y=>{const b=y.target.value;a("updateEdge",{connector:{name:b,args:b==="rounded"?{radius:8}:void 0}})},B=()=>{a("deleteEdge")},V=()=>{var b,D;const y=(D=(b=o.selectedEdge)==null?void 0:b.data)==null?void 0:D.animation;return y!=null&&y.enabled?"true":"false"},d=()=>{var b,D;const y=(D=(b=o.selectedEdge)==null?void 0:b.data)==null?void 0:D.animation;return y!=null&&y.duration?y.duration/1e3:2},p=y=>{if(!(y.target.value==="true"))a("updateEdge",{data:{animation:{enabled:!1}},animation:{enabled:!1}});else{const D=d()*1e3;a("updateEdge",{data:{animation:{enabled:!0,duration:D}},animation:{enabled:!0,duration:D}})}},x=y=>{const D=Number(y.target.value)*1e3;a("updateEdge",{data:{animation:{enabled:!0,duration:D}},animation:{enabled:!0,duration:D}})};return(y,b)=>{var D,_,S,C,k,$,z,O;return e.openBlock(),e.createElementBlock("div",Nr,[e.createElementVNode("div",Vr,[b[10]||(b[10]=e.createElementVNode("h4",{class:"section-title"},"线条样式",-1)),e.createElementVNode("div",Dr,[b[0]||(b[0]=e.createElementVNode("label",{class:"property-label"},"线条颜色",-1)),e.createElementVNode("div",Ar,[e.createElementVNode("input",{type:"color",class:"color-input",value:((D=t.value.line)==null?void 0:D.stroke)||"#10b981",onInput:s},null,40,_r),e.createElementVNode("input",{type:"text",class:"color-text",value:((_=t.value.line)==null?void 0:_.stroke)||"#10b981",onInput:s},null,40,$r)])]),e.createElementVNode("div",Fr,[b[2]||(b[2]=e.createElementVNode("label",{class:"property-label"},"线条粗细",-1)),e.createElementVNode("div",wr,[e.createElementVNode("input",{type:"number",class:"property-input",min:"1",max:"20",step:"1",value:((S=t.value.line)==null?void 0:S.strokeWidth)||2,onInput:h},null,40,Sr),b[1]||(b[1]=e.createElementVNode("span",{class:"input-unit"},"px",-1))])]),e.createElementVNode("div",Ir,[b[4]||(b[4]=e.createElementVNode("label",{class:"property-label"},"线条样式",-1)),e.createElementVNode("select",{class:"property-select",value:m(),onChange:l},[...b[3]||(b[3]=[e.createElementVNode("option",{value:"none"},"实线",-1),e.createElementVNode("option",{value:"5,5"},"虚线",-1),e.createElementVNode("option",{value:"2,2"},"点线",-1),e.createElementVNode("option",{value:"10,5,2,5"},"点划线",-1)])],40,zr)]),e.createElementVNode("div",Tr,[b[5]||(b[5]=e.createElementVNode("label",{class:"property-label"},"透明度",-1)),e.createElementVNode("div",Pr,[e.createElementVNode("input",{type:"range",class:"property-slider",min:"0",max:"1",step:"0.1",value:((C=t.value.line)==null?void 0:C.opacity)!==void 0?t.value.line.opacity:1,onInput:i},null,40,Rr),e.createElementVNode("span",Mr,e.toDisplayString(r())+"%",1)])]),e.createElementVNode("div",Hr,[b[7]||(b[7]=e.createElementVNode("label",{class:"property-label"},"流动动画",-1)),e.createElementVNode("select",{class:"property-select",value:V(),onChange:p},[...b[6]||(b[6]=[e.createElementVNode("option",{value:"false"},"关闭",-1),e.createElementVNode("option",{value:"true"},"开启",-1)])],40,Or)]),V()==="true"?(e.openBlock(),e.createElementBlock("div",Ur,[b[9]||(b[9]=e.createElementVNode("label",{class:"property-label"},"动画速度",-1)),e.createElementVNode("div",Lr,[e.createElementVNode("input",{type:"number",class:"property-input",min:"0.5",max:"10",step:"0.5",value:d(),onInput:x},null,40,Wr),b[8]||(b[8]=e.createElementVNode("span",{class:"input-unit"},"秒",-1))])])):e.createCommentVNode("",!0)]),e.createElementVNode("div",qr,[b[15]||(b[15]=e.createElementVNode("h4",{class:"section-title"},"箭头样式",-1)),e.createElementVNode("div",Gr,[b[12]||(b[12]=e.createElementVNode("label",{class:"property-label"},"起点箭头",-1)),e.createElementVNode("select",{class:"property-select",value:n("source"),onChange:c},[...b[11]||(b[11]=[e.createStaticVNode('<option value="none" data-v-e47f1784>无</option><option value="block" data-v-e47f1784>实心箭头</option><option value="classic" data-v-e47f1784>经典箭头</option><option value="diamond" data-v-e47f1784>菱形</option><option value="circle" data-v-e47f1784>圆形</option>',5)])],40,jr)]),e.createElementVNode("div",Xr,[b[14]||(b[14]=e.createElementVNode("label",{class:"property-label"},"终点箭头",-1)),e.createElementVNode("select",{class:"property-select",value:n("target"),onChange:f},[...b[13]||(b[13]=[e.createStaticVNode('<option value="none" data-v-e47f1784>无</option><option value="block" data-v-e47f1784>实心箭头</option><option value="classic" data-v-e47f1784>经典箭头</option><option value="diamond" data-v-e47f1784>菱形</option><option value="circle" data-v-e47f1784>圆形</option>',5)])],40,Yr)])]),e.createElementVNode("div",Kr,[b[20]||(b[20]=e.createElementVNode("h4",{class:"section-title"},"连接器",-1)),e.createElementVNode("div",Jr,[b[17]||(b[17]=e.createElementVNode("label",{class:"property-label"},"路由方式",-1)),e.createElementVNode("select",{class:"property-select",value:(($=(k=g.selectedEdge)==null?void 0:k.getRouter())==null?void 0:$.name)||"manhattan",onChange:u},[...b[16]||(b[16]=[e.createElementVNode("option",{value:"manhattan"},"曼哈顿",-1),e.createElementVNode("option",{value:"orth"},"正交",-1),e.createElementVNode("option",{value:"normal"},"直线",-1)])],40,Zr)]),e.createElementVNode("div",Qr,[b[19]||(b[19]=e.createElementVNode("label",{class:"property-label"},"连接器类型",-1)),e.createElementVNode("select",{class:"property-select",value:((O=(z=g.selectedEdge)==null?void 0:z.getConnector())==null?void 0:O.name)||"rounded",onChange:v},[...b[18]||(b[18]=[e.createElementVNode("option",{value:"rounded"},"圆角",-1),e.createElementVNode("option",{value:"smooth"},"平滑",-1),e.createElementVNode("option",{value:"normal"},"普通",-1)])],40,el)])]),e.createElementVNode("div",{class:"property-section"},[e.createElementVNode("button",{class:"delete-btn",onClick:B}," 删除连线 ")])])}}}),[["__scopeId","data-v-e47f1784"]]),ol={class:"event-card"},nl={class:"header-left"},al={class:"collapse-icon"},rl={class:"event-title"},ll={class:"event-card-body"},sl={class:"event-field"},il=["value"],cl={class:"event-field"},dl=["value"],pl={class:"event-field"},xl=["value"],fl={class:"condition-config"},ml=["value"],ul=["value"],gl=["value"],El=["value"],hl={key:0,class:"config-section"},bl={key:1,class:"config-section"},vl={key:2,class:"config-section"},yl={key:0,class:"selected-workflow-info"},Cl={class:"info-row"},Bl={class:"info-value"},kl={class:"event-field"},Nl=["value"],Je=te(e.defineComponent({__name:"EventCard",props:{event:{},index:{},isCollapsed:{type:Boolean},nodeProperties:{}},emits:["toggle-collapse","remove","update-field","update-condition","update-params","open-attribute-config","open-custom-code","open-workflow-selector"],setup(g){return(E,o)=>{var a,t,s,h,m,l,i;return e.openBlock(),e.createElementBlock("div",ol,[e.createElementVNode("div",{class:"event-card-header",onClick:o[1]||(o[1]=n=>E.$emit("toggle-collapse"))},[e.createElementVNode("div",nl,[e.createElementVNode("span",al,e.toDisplayString(g.isCollapsed?"▶":"▼"),1),e.createElementVNode("span",rl,"事件"+e.toDisplayString(g.index+1),1)]),e.createElementVNode("button",{class:"btn-remove",onClick:o[0]||(o[0]=e.withModifiers(n=>E.$emit("remove"),["stop"])),title:"删除事件"},"🗑")]),e.withDirectives(e.createElementVNode("div",ll,[e.createElementVNode("div",sl,[o[12]||(o[12]=e.createElementVNode("label",null,"事件名称",-1)),e.createElementVNode("input",{type:"text",value:g.event.name||"",onInput:o[2]||(o[2]=n=>E.$emit("update-field","name",n)),placeholder:"输入事件名称,如:温度报警、湿度预警"},null,40,il)]),e.createElementVNode("div",cl,[o[14]||(o[14]=e.createElementVNode("label",null,"事件类型",-1)),e.createElementVNode("select",{value:g.event.type,onChange:o[3]||(o[3]=n=>E.$emit("update-field","type",n))},[...o[13]||(o[13]=[e.createStaticVNode('<option value="click" data-v-af7c633a>单击</option><option value="dblclick" data-v-af7c633a>双击</option><option value="mouseenter" data-v-af7c633a>鼠标移入</option><option value="mouseleave" data-v-af7c633a>鼠标移出</option><option value="focus" data-v-af7c633a>获取焦点</option><option value="blur" data-v-af7c633a>失去焦点</option><option value="input" data-v-af7c633a>输入</option><option value="change" data-v-af7c633a>值变化</option>',8)])],40,dl)]),e.createElementVNode("div",pl,[o[16]||(o[16]=e.createElementVNode("label",null,"事件行为",-1)),e.createElementVNode("select",{value:g.event.action,onChange:o[4]||(o[4]=n=>E.$emit("update-field","action",n))},[...o[15]||(o[15]=[e.createElementVNode("option",{value:"attributeChange"},"更改属性",-1),e.createElementVNode("option",{value:"customCode"},"自定义代码",-1),e.createElementVNode("option",{value:"callProcess"},"调用流程",-1)])],40,xl)]),o[30]||(o[30]=e.createElementVNode("div",{class:"section-title"},"形参配置",-1)),o[31]||(o[31]=e.createElementVNode("div",{class:"field-hint"},"(不填直接触发)",-1)),o[32]||(o[32]=e.createElementVNode("div",{class:"section-title"},"触发规则",-1)),o[33]||(o[33]=e.createElementVNode("div",{class:"field-hint"},"(不填写条件则直接触发,填写后按条件触发)",-1)),e.createElementVNode("div",fl,[o[19]||(o[19]=e.createElementVNode("div",{class:"condition-label"},"当",-1)),o[20]||(o[20]=e.createElementVNode("div",{class:"condition-label"},"当前节点属性",-1)),e.createElementVNode("select",{class:"condition-select",value:((a=g.event.condition)==null?void 0:a.attribute)||"",onChange:o[5]||(o[5]=n=>E.$emit("update-condition","attribute",n))},[o[17]||(o[17]=e.createElementVNode("option",{value:""},"选择属性",-1)),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(g.nodeProperties,n=>(e.openBlock(),e.createElementBlock("option",{key:n.key,value:n.key},e.toDisplayString(n.label),9,ul))),128))],40,ml),o[21]||(o[21]=e.createElementVNode("div",{class:"condition-label"},"运算符",-1)),e.createElementVNode("select",{class:"condition-select",value:((t=g.event.condition)==null?void 0:t.operator)||"==",onChange:o[6]||(o[6]=n=>E.$emit("update-condition","operator",n))},[...o[18]||(o[18]=[e.createStaticVNode('<option value="==" data-v-af7c633a>等于</option><option value="!=" data-v-af7c633a>不等于</option><option value=">" data-v-af7c633a>大于</option><option value=">=" data-v-af7c633a>大于等于</option><option value="<" data-v-af7c633a>小于</option><option value="<=" data-v-af7c633a>小于等于</option><option value="contains" data-v-af7c633a>包含</option>',7)])],40,gl),o[22]||(o[22]=e.createElementVNode("div",{class:"condition-label"},"值",-1)),e.createElementVNode("input",{type:"text",class:"condition-input",value:((s=g.event.condition)==null?void 0:s.value)||"",onInput:o[7]||(o[7]=n=>E.$emit("update-condition","value",n)),placeholder:"输入值"},null,40,El),o[23]||(o[23]=e.createElementVNode("div",{class:"condition-label"},"时",-1)),o[24]||(o[24]=e.createElementVNode("div",{class:"condition-label"},"触发该事件",-1))]),g.event.action==="attributeChange"?(e.openBlock(),e.createElementBlock("div",hl,[o[25]||(o[25]=e.createElementVNode("div",{class:"section-title"},"属性更改",-1)),e.createElementVNode("button",{class:"btn-config",onClick:o[8]||(o[8]=n=>E.$emit("open-attribute-config"))},"点击配置")])):e.createCommentVNode("",!0),g.event.action==="customCode"?(e.openBlock(),e.createElementBlock("div",bl,[o[26]||(o[26]=e.createElementVNode("div",{class:"section-title"},"自定义代码",-1)),e.createElementVNode("button",{class:"btn-config",onClick:o[9]||(o[9]=n=>E.$emit("open-custom-code"))},"点击配置")])):e.createCommentVNode("",!0),g.event.action==="callProcess"?(e.openBlock(),e.createElementBlock("div",vl,[o[29]||(o[29]=e.createElementVNode("div",{class:"section-title"},"调用流程",-1)),e.createElementVNode("button",{class:"btn-config",onClick:o[10]||(o[10]=n=>E.$emit("open-workflow-selector"))},"选择流程"),(h=g.event.params)!=null&&h.processId?(e.openBlock(),e.createElementBlock("div",yl,[e.createElementVNode("div",Cl,[o[27]||(o[27]=e.createElementVNode("span",{class:"info-label"},"已选择:",-1)),e.createElementVNode("span",Bl,e.toDisplayString(((m=g.event.params)==null?void 0:m.processName)||((l=g.event.params)==null?void 0:l.processId)),1)]),e.createElementVNode("div",kl,[o[28]||(o[28]=e.createElementVNode("label",null,"传入参数",-1)),e.createElementVNode("textarea",{value:((i=g.event.params)==null?void 0:i.processParams)||"",onInput:o[11]||(o[11]=n=>E.$emit("update-params","processParams",n)),placeholder:'JSON格式: {"param1":"value1","param2":"value2"}',rows:"3"},null,40,Nl)])])):e.createCommentVNode("",!0)])):e.createCommentVNode("",!0)],512),[[e.vShow,!g.isCollapsed]])])}}}),[["__scopeId","data-v-af7c633a"]]);var ie=(g=>(g.BOOLEAN="boolean",g.NUMBER="number",g.STRING="string",g))(ie||{}),ce=(g=>(g.READ="read",g.WRITE="write",g.READ_WRITE="readWrite",g))(ce||{}),Me=(g=>(g.ONLINE="online",g.OFFLINE="offline",g.ERROR="error",g.MAINTENANCE="maintenance",g))(Me||{}),He=(g=>(g.PLC="plc",g.SENSOR="sensor",g.ACTUATOR="actuator",g.METER="meter",g.CAMERA="camera",g.OTHER="other",g))(He||{});const Ze=[{id:"device_001",name:"1号温控设备",code:"TC-001",type:He.PLC,description:"车间1号温控PLC",status:Me.ONLINE,ipAddress:"192.168.1.101",port:502,protocol:"Modbus TCP",enabled:!0,tags:["车间1","温控","PLC"],points:[{id:"point_001_01",name:"当前温度",code:"40001",description:"实时温度采集",dataType:ie.NUMBER,accessMode:ce.READ,value:25.5,unit:"°C",minValue:-20,maxValue:100,precision:1,enabled:!0,quality:"good",updateTime:"2025-12-17 08:15:00"},{id:"point_001_02",name:"设定温度",code:"40002",description:"目标温度设定值",dataType:ie.NUMBER,accessMode:ce.READ_WRITE,value:28,unit:"°C",minValue:0,maxValue:50,precision:1,enabled:!0,quality:"good",updateTime:"2025-12-17 08:15:00"},{id:"point_001_03",name:"加热状态",code:"40003",description:"加热器运行状态",dataType:ie.BOOLEAN,accessMode:ce.READ,value:!0,enabled:!0,quality:"good",updateTime:"2025-12-17 08:15:00"},{id:"point_001_04",name:"告警状态",code:"40004",description:"设备告警状态",dataType:ie.BOOLEAN,accessMode:ce.READ,value:!1,enabled:!0,quality:"good",updateTime:"2025-12-17 08:15:00"}],createTime:"2025-01-01 00:00:00",updateTime:"2025-12-17 08:15:00"},{id:"device_002",name:"主管道压力传感器",code:"PS-001",type:He.SENSOR,description:"主管道压力监测",status:Me.ONLINE,ipAddress:"192.168.1.102",port:502,protocol:"Modbus TCP",enabled:!0,tags:["管道","压力","传感器"],points:[{id:"point_002_01",name:"当前压力",code:"40001",description:"实时压力值",dataType:ie.NUMBER,accessMode:ce.READ,value:1.25,unit:"MPa",minValue:0,maxValue:5,precision:2,enabled:!0,quality:"good",updateTime:"2025-12-17 08:15:00"},{id:"point_002_02",name:"压力上限",code:"40002",description:"压力告警上限",dataType:ie.NUMBER,accessMode:ce.READ_WRITE,value:2,unit:"MPa",minValue:0,maxValue:5,precision:2,enabled:!0,quality:"good",updateTime:"2025-12-17 08:15:00"},{id:"point_002_03",name:"压力下限",code:"40003",description:"压力告警下限",dataType:ie.NUMBER,accessMode:ce.READ_WRITE,value:.5,unit:"MPa",minValue:0,maxValue:5,precision:2,enabled:!0,quality:"good",updateTime:"2025-12-17 08:15:00"}],createTime:"2025-01-01 00:00:00",updateTime:"2025-12-17 08:15:00"},{id:"device_003",name:"1号电机控制器",code:"MC-001",type:He.ACTUATOR,description:"主传送带电机控制",status:Me.ONLINE,ipAddress:"192.168.1.103",port:502,protocol:"Modbus TCP",enabled:!0,tags:["电机","控制器","传送带"],points:[{id:"point_003_01",name:"运行状态",code:"40001",description:"电机运行状态",dataType:ie.BOOLEAN,accessMode:ce.READ,value:!0,enabled:!0,quality:"good",updateTime:"2025-12-17 08:15:00"},{id:"point_003_02",name:"启动命令",code:"40002",description:"电机启动控制",dataType:ie.BOOLEAN,accessMode:ce.WRITE,value:!1,enabled:!0,quality:"good",updateTime:"2025-12-17 08:15:00"},{id:"point_003_03",name:"停止命令",code:"40003",description:"电机停止控制",dataType:ie.BOOLEAN,accessMode:ce.WRITE,value:!1,enabled:!0,quality:"good",updateTime:"2025-12-17 08:15:00"},{id:"point_003_04",name:"当前转速",code:"40004",description:"电机实时转速",dataType:ie.NUMBER,accessMode:ce.READ,value:1450,unit:"RPM",minValue:0,maxValue:3e3,precision:0,enabled:!0,quality:"good",updateTime:"2025-12-17 08:15:00"},{id:"point_003_05",name:"设定转速",code:"40005",description:"目标转速设定",dataType:ie.NUMBER,accessMode:ce.READ_WRITE,value:1500,unit:"RPM",minValue:0,maxValue:3e3,precision:0,enabled:!0,quality:"good",updateTime:"2025-12-17 08:15:00"},{id:"point_003_06",name:"电流",code:"40006",description:"电机运行电流",dataType:ie.NUMBER,accessMode:ce.READ,value:12.5,unit:"A",minValue:0,maxValue:50,precision:1,enabled:!0,quality:"good",updateTime:"2025-12-17 08:15:00"}],createTime:"2025-01-01 00:00:00",updateTime:"2025-12-17 08:15:00"},{id:"device_004",name:"进水流量计",code:"FM-001",type:He.METER,description:"进水管道流量监测",status:Me.OFFLINE,ipAddress:"192.168.1.104",port:502,protocol:"Modbus TCP",enabled:!0,tags:["流量","仪表","进水"],points:[{id:"point_004_01",name:"瞬时流量",code:"40001",description:"当前流量值",dataType:ie.NUMBER,accessMode:ce.READ,value:0,unit:"m³/h",minValue:0,maxValue:100,precision:2,enabled:!0,quality:"bad",updateTime:"2025-12-17 07:30:00"},{id:"point_004_02",name:"累计流量",code:"40002",description:"累计流量统计",dataType:ie.NUMBER,accessMode:ce.READ,value:12345.67,unit:"m³",minValue:0,maxValue:999999,precision:2,enabled:!0,quality:"bad",updateTime:"2025-12-17 07:30:00"}],createTime:"2025-01-01 00:00:00",updateTime:"2025-12-17 07:30:00"}];Ze.length;const Qt=g=>Ze.find(E=>E.id===g),Vl=(g,E)=>{const o=Qt(g);if(o)return o.points.find(a=>a.id===E)},Dl={class:"device-point-selector"},Al={class:"device-list-panel"},_l={class:"panel-header"},$l={class:"device-count"},Fl={class:"search-box"},wl={class:"device-list"},Sl=["onClick"],Il={class:"device-info"},zl={class:"device-name"},Tl={class:"device-meta"},Pl={class:"device-code"},Rl={class:"point-count"},Ml={key:0,class:"empty-hint"},Hl={class:"point-list-panel"},Ol={class:"panel-header"},Ul={key:0,class:"point-count"},Ll={key:0,class:"search-box"},Wl={class:"point-list"},ql={key:0,class:"empty-hint"},Gl={key:1,class:"empty-hint"},jl=["onClick"],Xl={class:"point-info"},Yl={class:"point-name"},Kl={class:"point-meta"},Jl={class:"point-code"},Zl={key:0,class:"point-unit"},Ql={class:"point-type"},es={key:0,class:"point-value"},ts={class:"value"},os={class:"modal-footer"},ns=["disabled"],as=te(e.defineComponent({__name:"DevicePointSelector",props:{visible:{type:Boolean},modelValue:{}},emits:["update:visible","update:modelValue","confirm"],setup(g,{emit:E}){const o=g,a=E,t=e.ref(Ze),s=e.ref(null),h=e.ref(null),m=e.ref(""),l=e.ref("");if(o.modelValue){const[d,p]=o.modelValue.split(":"),x=t.value.find(y=>y.id===d);x&&(s.value=x,h.value=x.points.find(y=>y.id===p)||null)}const i=e.computed(()=>{if(!m.value)return t.value;const d=m.value.toLowerCase();return t.value.filter(p=>p.name.toLowerCase().includes(d)||p.code.toLowerCase().includes(d))}),n=e.computed(()=>{if(!s.value)return[];if(!l.value)return s.value.points;const d=l.value.toLowerCase();return s.value.points.filter(p=>p.name.toLowerCase().includes(d)||p.code.toLowerCase().includes(d))}),r=d=>{s.value=d,h.value=null,l.value=""},c=d=>{d.enabled&&(h.value=d)},f=()=>{a("update:visible",!1)},u=()=>{if(!s.value||!h.value)return;const d=`${s.value.id}:${h.value.id}`;a("update:modelValue",d),a("confirm",s.value.id,h.value.id,s.value,h.value),a("update:visible",!1)},v=d=>({read:"只读",write:"只写",readWrite:"读写"})[d]||d,B=d=>({boolean:"布尔",number:"数值",string:"字符",json:"JSON"})[d]||d,V=d=>d.value===void 0||d.value===null?"-":d.dataType==="boolean"?d.value?"是":"否":d.dataType==="number"&&d.precision!==void 0?Number(d.value).toFixed(d.precision):String(d.value);return(d,p)=>g.visible?(e.openBlock(),e.createElementBlock("div",{key:0,class:"modal-overlay",onClick:f},[e.createElementVNode("div",{class:"modal-container",onClick:p[2]||(p[2]=e.withModifiers(()=>{},["stop"]))},[e.createElementVNode("div",{class:"modal-header"},[p[3]||(p[3]=e.createElementVNode("h3",null,"选择设备点位",-1)),e.createElementVNode("button",{class:"btn-close",onClick:f},"✕")]),e.createElementVNode("div",Dl,[e.createElementVNode("div",Al,[e.createElementVNode("div",_l,[p[4]||(p[4]=e.createElementVNode("h4",null,"设备列表",-1)),e.createElementVNode("span",$l,e.toDisplayString(t.value.length),1)]),e.createElementVNode("div",Fl,[e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":p[0]||(p[0]=x=>m.value=x),type:"text",placeholder:"搜索设备...",class:"search-input"},null,512),[[e.vModelText,m.value]])]),e.createElementVNode("div",wl,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(i.value,x=>{var y;return e.openBlock(),e.createElementBlock("div",{key:x.id,class:e.normalizeClass(["device-item",{active:((y=s.value)==null?void 0:y.id)===x.id,offline:x.status==="offline"}]),onClick:b=>r(x)},[e.createElementVNode("div",Il,[e.createElementVNode("div",zl,[e.createElementVNode("span",{class:e.normalizeClass(["status-dot",x.status])},null,2),e.createTextVNode(" "+e.toDisplayString(x.name),1)]),e.createElementVNode("div",Tl,[e.createElementVNode("span",Pl,e.toDisplayString(x.code),1),e.createElementVNode("span",Rl,e.toDisplayString(x.points.length)+" 点",1)])]),p[5]||(p[5]=e.createElementVNode("div",{class:"device-arrow"},"›",-1))],10,Sl)}),128)),i.value.length===0?(e.openBlock(),e.createElementBlock("div",Ml," 暂无设备 ")):e.createCommentVNode("",!0)])]),e.createElementVNode("div",Hl,[e.createElementVNode("div",Ol,[e.createElementVNode("h4",null,e.toDisplayString(s.value?s.value.name:"点位列表"),1),s.value?(e.openBlock(),e.createElementBlock("span",Ul,e.toDisplayString(n.value.length),1)):e.createCommentVNode("",!0)]),s.value?(e.openBlock(),e.createElementBlock("div",Ll,[e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":p[1]||(p[1]=x=>l.value=x),type:"text",placeholder:"搜索点位...",class:"search-input"},null,512),[[e.vModelText,l.value]])])):e.createCommentVNode("",!0),e.createElementVNode("div",Wl,[s.value?n.value.length===0?(e.openBlock(),e.createElementBlock("div",Gl," 暂无点位 ")):(e.openBlock(!0),e.createElementBlock(e.Fragment,{key:2},e.renderList(n.value,x=>{var y;return e.openBlock(),e.createElementBlock("div",{key:x.id,class:e.normalizeClass(["point-item",{active:((y=h.value)==null?void 0:y.id)===x.id,disabled:!x.enabled}]),onClick:b=>c(x)},[e.createElementVNode("div",Xl,[e.createElementVNode("div",Yl,[e.createTextVNode(e.toDisplayString(x.name)+" ",1),e.createElementVNode("span",{class:e.normalizeClass(["access-mode",x.accessMode])},e.toDisplayString(v(x.accessMode)),3)]),e.createElementVNode("div",Kl,[e.createElementVNode("span",Jl,e.toDisplayString(x.code),1),x.unit?(e.openBlock(),e.createElementBlock("span",Zl,e.toDisplayString(x.unit),1)):e.createCommentVNode("",!0),e.createElementVNode("span",Ql,e.toDisplayString(B(x.dataType)),1)]),x.value!==void 0?(e.openBlock(),e.createElementBlock("div",es,[p[6]||(p[6]=e.createTextVNode(" 当前值: ",-1)),e.createElementVNode("span",ts,e.toDisplayString(V(x)),1),e.createElementVNode("span",{class:e.normalizeClass(["quality",x.quality])},e.toDisplayString(x.quality),3)])):e.createCommentVNode("",!0)])],10,jl)}),128)):(e.openBlock(),e.createElementBlock("div",ql," ← 请先选择设备 "))])])]),e.createElementVNode("div",os,[e.createElementVNode("button",{class:"btn-cancel",onClick:f},"取消"),e.createElementVNode("button",{class:"btn-confirm",disabled:!h.value,onClick:u}," 确定 ",8,ns)])])])):e.createCommentVNode("",!0)}}),[["__scopeId","data-v-7884b850"]]);var Ve=(g=>(g.DIRECT="direct",g.BOOLEAN="boolean",g.RANGE="range",g.ENUM="enum",g))(Ve||{}),Oe=(g=>(g.BOOLEAN="boolean",g.NUMBER="number",g.STRING="string",g))(Oe||{});const rs={class:"mapping-configurator"},ls={class:"config-item"},ss={key:0,class:"field-hint error"},is={key:1,class:"field-hint"},cs={class:"config-item"},ds={key:0,class:"field-hint error"},ps={key:1,class:"field-hint"},xs={key:0,class:"config-item"},fs={class:"unit-config"},ms={class:"checkbox-label"},us={key:0,class:"custom-unit"},gs={key:1,class:"mapping-details"},Es={class:"config-item"},hs={class:"config-item"},bs={key:2,class:"mapping-details"},vs={class:"range-rules"},ys=["onUpdate:modelValue"],Cs=["onUpdate:modelValue"],Bs=["onUpdate:modelValue"],ks=["onClick"],Ns={key:3,class:"mapping-details"},Vs={class:"enum-mappings"},Ds=["value","onInput"],As=["onUpdate:modelValue"],_s=["onClick"],$s={key:4,class:"mapping-preview"},Fs={class:"preview-content"},ws={class:"preview-item"},Ss={class:"preview-output"},Is={class:"preview-item"},zs={class:"preview-output"},Ts={class:"preview-input"},Ps={class:"preview-output"},Rs={class:"preview-input"},Ms={class:"preview-output"},Hs=te(e.defineComponent({__name:"MappingConfigurator",props:{visible:{type:Boolean},modelValue:{}},emits:["update:visible","update:modelValue","confirm"],setup(g,{emit:E}){const o=g,a=E,t=e.ref(o.modelValue||{type:"",valueType:""});e.watch(()=>o.modelValue,V=>{V&&(t.value={...V})},{deep:!0});const s=()=>{t.value.type||(t.value.valueType===Oe.BOOLEAN?t.value.type=Ve.BOOLEAN:t.value.valueType===Oe.NUMBER?t.value.type=Ve.RANGE:t.value.type=Ve.DIRECT),t.value.valueType!==Oe.NUMBER&&(delete t.value.keepOriginalUnit,delete t.value.customUnit)},h=V=>({boolean:"适用于开关状态、是否判断等场景",number:"适用于温度、压力、流量等数值型数据",string:"适用于文本、状态码等字符型数据"})[V]||"",m=V=>({direct:"不做任何转换,直接使用原始值",boolean:"根据 true/false 转换为不同的值",range:"根据数值范围转换为对应值",enum:"根据枚举键值对转换"})[V]||"",l=()=>{const V=t.value.valueType;t.value={type:t.value.type,valueType:V},t.value.type===Ve.RANGE?t.value.rangeRules=[]:t.value.type===Ve.ENUM&&(t.value.enumMappings={})},i=()=>{t.value.rangeRules||(t.value.rangeRules=[]),t.value.rangeRules.push({min:0,max:100,value:""})},n=V=>{var d;(d=t.value.rangeRules)==null||d.splice(V,1)},r=()=>{t.value.enumMappings||(t.value.enumMappings={});const V=`key_${Object.keys(t.value.enumMappings).length+1}`;t.value.enumMappings[V]=""},c=V=>{t.value.enumMappings&&delete t.value.enumMappings[V]},f=(V,d)=>{const p=V.target.value;if(!t.value.enumMappings||p===d)return;const x=t.value.enumMappings[d];delete t.value.enumMappings[d],t.value.enumMappings[p]=x},u=()=>{},v=()=>{a("update:visible",!1)},B=()=>{if(!t.value.valueType){alert("请选择值类型!");return}if(!t.value.type){alert("请选择映射类型!");return}a("update:modelValue",{...t.value}),a("confirm",{...t.value}),a("update:visible",!1)};return(V,d)=>g.visible?(e.openBlock(),e.createElementBlock("div",{key:0,class:"modal-overlay",onClick:v},[e.createElementVNode("div",{class:"modal-container",onClick:d[6]||(d[6]=e.withModifiers(()=>{},["stop"]))},[e.createElementVNode("div",{class:"modal-header"},[d[7]||(d[7]=e.createElementVNode("h3",null,"值映射配置",-1)),e.createElementVNode("button",{class:"btn-close",onClick:v},"✕")]),e.createElementVNode("div",rs,[e.createElementVNode("div",ls,[d[9]||(d[9]=e.createElementVNode("label",null,[e.createTextVNode("值类型 "),e.createElementVNode("span",{class:"required"},"*")],-1)),e.withDirectives(e.createElementVNode("select",{"onUpdate:modelValue":d[0]||(d[0]=p=>t.value.valueType=p),onChange:s},[...d[8]||(d[8]=[e.createElementVNode("option",{value:""},"请选择值类型",-1),e.createElementVNode("option",{value:"boolean"},"布尔型 (true/false)",-1),e.createElementVNode("option",{value:"number"},"数值型 (123, 45.6)",-1),e.createElementVNode("option",{value:"string"},'字符串型 ("abc")',-1)])],544),[[e.vModelSelect,t.value.valueType]]),t.value.valueType?(e.openBlock(),e.createElementBlock("div",is,e.toDisplayString(h(t.value.valueType)),1)):(e.openBlock(),e.createElementBlock("div",ss," 值类型为必填项 "))]),e.createElementVNode("div",cs,[d[11]||(d[11]=e.createElementVNode("label",null,[e.createTextVNode("映射类型 "),e.createElementVNode("span",{class:"required"},"*")],-1)),e.withDirectives(e.createElementVNode("select",{"onUpdate:modelValue":d[1]||(d[1]=p=>t.value.type=p),onChange:l},[...d[10]||(d[10]=[e.createStaticVNode('<option value="" data-v-ef9e0ee1>请选择映射类型</option><option value="direct" data-v-ef9e0ee1>直接映射(无转换)</option><option value="boolean" data-v-ef9e0ee1>布尔映射</option><option value="range" data-v-ef9e0ee1>范围映射</option><option value="enum" data-v-ef9e0ee1>枚举映射</option>',5)])],544),[[e.vModelSelect,t.value.type]]),t.value.type?(e.openBlock(),e.createElementBlock("div",ps,e.toDisplayString(m(t.value.type)),1)):(e.openBlock(),e.createElementBlock("div",ds," 映射类型为必填项 "))]),t.value.valueType==="number"?(e.openBlock(),e.createElementBlock("div",xs,[d[13]||(d[13]=e.createElementVNode("label",null,"单位配置",-1)),e.createElementVNode("div",fs,[e.createElementVNode("label",ms,[e.withDirectives(e.createElementVNode("input",{type:"checkbox","onUpdate:modelValue":d[2]||(d[2]=p=>t.value.keepOriginalUnit=p),onChange:u},null,544),[[e.vModelCheckbox,t.value.keepOriginalUnit]]),d[12]||(d[12]=e.createTextVNode(" 保留点位原始单位 ",-1))]),t.value.keepOriginalUnit?e.createCommentVNode("",!0):(e.openBlock(),e.createElementBlock("div",us,[e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":d[3]||(d[3]=p=>t.value.customUnit=p),type:"text",placeholder:"自定义单位,如: °C, MPa, %",onInput:u},null,544),[[e.vModelText,t.value.customUnit]])]))])])):e.createCommentVNode("",!0),t.value.type==="boolean"?(e.openBlock(),e.createElementBlock("div",gs,[e.createElementVNode("div",Es,[d[14]||(d[14]=e.createElementVNode("label",null,"True 时的值",-1)),e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":d[4]||(d[4]=p=>t.value.trueValue=p),type:"text",placeholder:"例如: 运行、#00ff00",onInput:u},null,544),[[e.vModelText,t.value.trueValue]])]),e.createElementVNode("div",hs,[d[15]||(d[15]=e.createElementVNode("label",null,"False 时的值",-1)),e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":d[5]||(d[5]=p=>t.value.falseValue=p),type:"text",placeholder:"例如: 停止、#ff0000",onInput:u},null,544),[[e.vModelText,t.value.falseValue]])])])):e.createCommentVNode("",!0),t.value.type==="range"?(e.openBlock(),e.createElementBlock("div",bs,[e.createElementVNode("div",vs,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(t.value.rangeRules,(p,x)=>(e.openBlock(),e.createElementBlock("div",{key:x,class:"range-rule"},[e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":y=>p.min=y,type:"number",placeholder:"最小值",onInput:u},null,40,ys),[[e.vModelText,p.min,void 0,{number:!0}]]),d[16]||(d[16]=e.createElementVNode("span",{class:"range-separator"},"~",-1)),e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":y=>p.max=y,type:"number",placeholder:"最大值",onInput:u},null,40,Cs),[[e.vModelText,p.max,void 0,{number:!0}]]),d[17]||(d[17]=e.createElementVNode("span",{class:"range-arrow"},"→",-1)),e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":y=>p.value=y,type:"text",placeholder:"映射值",onInput:u},null,40,Bs),[[e.vModelText,p.value]]),e.createElementVNode("button",{class:"btn-remove-rule",onClick:y=>n(x),title:"删除规则"}," ✕ ",8,ks)]))),128))]),e.createElementVNode("button",{class:"btn-add-rule",onClick:i}," + 添加范围规则 ")])):e.createCommentVNode("",!0),t.value.type==="enum"?(e.openBlock(),e.createElementBlock("div",Ns,[e.createElementVNode("div",Vs,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(t.value.enumMappings,(p,x,y)=>(e.openBlock(),e.createElementBlock("div",{key:y,class:"enum-mapping"},[e.createElementVNode("input",{value:x,type:"text",placeholder:"原始值",onInput:b=>f(b,x)},null,40,Ds),d[18]||(d[18]=e.createElementVNode("span",{class:"enum-arrow"},"→",-1)),e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":b=>t.value.enumMappings[x]=b,type:"text",placeholder:"映射值",onInput:u},null,40,As),[[e.vModelText,t.value.enumMappings[x]]]),e.createElementVNode("button",{class:"btn-remove-rule",onClick:b=>c(x),title:"删除映射"}," ✕ ",8,_s)]))),128))]),e.createElementVNode("button",{class:"btn-add-rule",onClick:r}," + 添加枚举映射 ")])):e.createCommentVNode("",!0),t.value.type!=="direct"?(e.openBlock(),e.createElementBlock("div",$s,[d[25]||(d[25]=e.createElementVNode("label",null,"映射预览",-1)),e.createElementVNode("div",Fs,[t.value.type==="boolean"?(e.openBlock(),e.createElementBlock(e.Fragment,{key:0},[e.createElementVNode("div",ws,[d[19]||(d[19]=e.createElementVNode("span",{class:"preview-input"},"true",-1)),d[20]||(d[20]=e.createElementVNode("span",{class:"preview-arrow"},"→",-1)),e.createElementVNode("span",Ss,e.toDisplayString(t.value.trueValue||"true"),1)]),e.createElementVNode("div",Is,[d[21]||(d[21]=e.createElementVNode("span",{class:"preview-input"},"false",-1)),d[22]||(d[22]=e.createElementVNode("span",{class:"preview-arrow"},"→",-1)),e.createElementVNode("span",zs,e.toDisplayString(t.value.falseValue||"false"),1)])],64)):t.value.type==="range"?(e.openBlock(!0),e.createElementBlock(e.Fragment,{key:1},e.renderList(t.value.rangeRules,(p,x)=>(e.openBlock(),e.createElementBlock("div",{key:x,class:"preview-item"},[e.createElementVNode("span",Ts,"["+e.toDisplayString(p.min)+" ~ "+e.toDisplayString(p.max)+"]",1),d[23]||(d[23]=e.createElementVNode("span",{class:"preview-arrow"},"→",-1)),e.createElementVNode("span",Ps,e.toDisplayString(p.value),1)]))),128)):t.value.type==="enum"?(e.openBlock(!0),e.createElementBlock(e.Fragment,{key:2},e.renderList(t.value.enumMappings,(p,x)=>(e.openBlock(),e.createElementBlock("div",{key:x,class:"preview-item"},[e.createElementVNode("span",Rs,e.toDisplayString(x),1),d[24]||(d[24]=e.createElementVNode("span",{class:"preview-arrow"},"→",-1)),e.createElementVNode("span",Ms,e.toDisplayString(p),1)]))),128)):e.createCommentVNode("",!0)])])):e.createCommentVNode("",!0)]),e.createElementVNode("div",{class:"modal-footer"},[e.createElementVNode("button",{class:"btn-cancel",onClick:v},"取消"),e.createElementVNode("button",{class:"btn-confirm",onClick:B},"确定")])])])):e.createCommentVNode("",!0)}}),[["__scopeId","data-v-ef9e0ee1"]]),Os={class:"event-card"},Us={class:"header-left"},Ls={class:"collapse-icon"},Ws={class:"event-title"},qs={class:"event-card-body"},Gs={class:"property-item"},js={key:0,class:"selected-point"},Xs={class:"point-main"},Ys={class:"device-name"},Ks={class:"point-name"},Js={class:"point-details"},Zs={class:"point-code"},Qs={key:0,class:"point-unit"},ei={key:1,class:"placeholder"},ti={class:"property-item"},oi=["value"],ni=["value"],ai={class:"property-item"},ri={key:0,class:"mapping-summary"},li={class:"mapping-type-label"},si={class:"mapping-detail"},ii={key:1,class:"placeholder"},Qe=te(e.defineComponent({__name:"BindingCard",props:{binding:{},index:{},isCollapsed:{type:Boolean},nodeProperties:{}},emits:["toggle-collapse","remove","update-field"],setup(g,{emit:E}){const o=g,a=E,t=e.ref(o.binding.devicePointId||""),s=e.ref(!1),h=e.ref(!1),m=e.ref(o.binding.mapping||{type:Ve.DIRECT,valueType:Oe.NUMBER});e.watch(()=>o.binding.devicePointId,f=>{t.value=f||""}),e.watch(()=>o.binding.mapping,f=>{f&&(m.value=f)},{deep:!0});const l=e.computed(()=>{if(!t.value)return null;const[f,u]=t.value.split(":");if(!f||!u)return null;const v=Qt(f),B=v?Vl(f,u):null;return!v||!B?null:{deviceName:v.name,pointName:B.name,pointCode:B.code,pointUnit:B.unit}}),i=(f,u,v,B)=>{const V=new Event("change");Object.defineProperty(V,"target",{value:{value:`${f}:${u}`},writable:!1}),a("update-field","devicePointId",V),console.log("选择了点位:",{device:v.name,point:B.name,dataType:B.dataType,accessMode:B.accessMode})},n=f=>{const u=new Event("change");Object.defineProperty(u,"target",{value:{value:f},writable:!1}),a("update-field","mapping",u)},r=f=>({direct:"直接映射",boolean:"布尔映射",range:"范围映射",enum:"枚举映射"})[f]||f,c=()=>{const f=m.value;return f.type==="boolean"?`True:${f.trueValue||"true"} / False:${f.falseValue||"false"}`:f.type==="range"&&f.rangeRules?`${f.rangeRules.length} 个范围规则`:f.type==="enum"&&f.enumMappings?`${Object.keys(f.enumMappings).length} 个枚举映射`:""};return(f,u)=>(e.openBlock(),e.createElementBlock("div",Os,[e.createElementVNode("div",{class:"event-card-header",onClick:u[1]||(u[1]=v=>f.$emit("toggle-collapse"))},[e.createElementVNode("div",Us,[e.createElementVNode("span",Ls,e.toDisplayString(g.isCollapsed?"▶":"▼"),1),e.createElementVNode("span",Ws,"绑定"+e.toDisplayString(g.index+1),1)]),e.createElementVNode("button",{class:"btn-remove",onClick:u[0]||(u[0]=e.withModifiers(v=>f.$emit("remove"),["stop"])),title:"删除绑定"},"🗑")]),e.withDirectives(e.createElementVNode("div",qs,[e.createElementVNode("div",Gs,[u[10]||(u[10]=e.createElementVNode("label",null,"设备点位",-1)),e.createElementVNode("div",{class:"point-selector-trigger",onClick:u[2]||(u[2]=v=>s.value=!0)},[l.value?(e.openBlock(),e.createElementBlock("div",js,[e.createElementVNode("div",Xs,[e.createElementVNode("span",Ys,e.toDisplayString(l.value.deviceName),1),e.createElementVNode("span",Ks,e.toDisplayString(l.value.pointName),1)]),e.createElementVNode("div",Js,[e.createElementVNode("span",Zs,e.toDisplayString(l.value.pointCode),1),l.value.pointUnit?(e.openBlock(),e.createElementBlock("span",Qs,e.toDisplayString(l.value.pointUnit),1)):e.createCommentVNode("",!0)])])):(e.openBlock(),e.createElementBlock("div",ei," 点击选择设备点位 ")),u[9]||(u[9]=e.createElementVNode("span",{class:"selector-arrow"},"›",-1))])]),e.createVNode(as,{visible:s.value,"onUpdate:visible":u[3]||(u[3]=v=>s.value=v),modelValue:t.value,"onUpdate:modelValue":u[4]||(u[4]=v=>t.value=v),onConfirm:i},null,8,["visible","modelValue"]),e.createElementVNode("div",ti,[u[12]||(u[12]=e.createElementVNode("label",null,"目标属性",-1)),e.createElementVNode("select",{value:g.binding.targetProperty||"",onChange:u[5]||(u[5]=v=>f.$emit("update-field","targetProperty",v))},[u[11]||(u[11]=e.createElementVNode("option",{value:""},"选择属性",-1)),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(g.nodeProperties,v=>(e.openBlock(),e.createElementBlock("option",{key:v.key,value:v.key},e.toDisplayString(v.label),9,ni))),128))],40,oi)]),e.createElementVNode("div",ai,[u[14]||(u[14]=e.createElementVNode("label",null,"值映射配置",-1)),e.createElementVNode("div",{class:"mapping-trigger",onClick:u[6]||(u[6]=v=>h.value=!0)},[m.value.type!=="direct"?(e.openBlock(),e.createElementBlock("div",ri,[e.createElementVNode("span",li,e.toDisplayString(r(m.value.type)),1),e.createElementVNode("span",si,e.toDisplayString(c()),1)])):(e.openBlock(),e.createElementBlock("div",ii," 点击配置值映射 ")),u[13]||(u[13]=e.createElementVNode("span",{class:"selector-arrow"},"›",-1))])]),e.createVNode(Hs,{visible:h.value,"onUpdate:visible":u[7]||(u[7]=v=>h.value=v),modelValue:m.value,"onUpdate:modelValue":u[8]||(u[8]=v=>m.value=v),onConfirm:n},null,8,["visible","modelValue"])],512),[[e.vShow,!g.isCollapsed]])]))}}),[["__scopeId","data-v-3731c19a"]]),ci={class:"dialog-content"},di={class:"dialog-header"},pi={class:"dialog-body"},xi={class:"group-row"},fi={class:"group-field"},mi=["value","onChange"],ui=["value"],gi={class:"group-field group-field-value"},Ei=["value","onInput"],hi=["value","onInput"],bi={key:2,class:"color-input-wrapper"},vi=["value","onInput"],yi={class:"color-value"},Ci=["value","onChange"],Bi=["onClick"],ki={key:0,class:"empty-hint"},Ni={class:"dialog-footer"},et=te(e.defineComponent({__name:"AttributeConfigDialog",props:{attributeGroups:{},nodeProperties:{}},emits:["close","save","add-group","remove-group","update-group"],setup(g,{emit:E}){const o=g,a=E,t=m=>{const l=o.nodeProperties.find(i=>i.key===m);return(l==null?void 0:l.type)||"text"},s=(m,l,i)=>{const n=i.target.value;a("update-group",m,l,n)},h=()=>{for(const m of o.attributeGroups)if(!m.property){alert("请为每组配置选择目标属性");return}a("save")};return(m,l)=>(e.openBlock(),e.createElementBlock("div",{class:"dialog-overlay",onClick:l[3]||(l[3]=e.withModifiers(i=>m.$emit("close"),["self"]))},[e.createElementVNode("div",ci,[e.createElementVNode("div",di,[l[4]||(l[4]=e.createElementVNode("h3",null,"事件属性更改配置",-1)),e.createElementVNode("button",{class:"btn-close",onClick:l[0]||(l[0]=i=>m.$emit("close"))},"×")]),e.createElementVNode("div",pi,[e.createElementVNode("button",{class:"btn-add-group",onClick:l[1]||(l[1]=i=>m.$emit("add-group"))},"新增一组"),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(g.attributeGroups,(i,n)=>(e.openBlock(),e.createElementBlock("div",{key:n,class:"attribute-group"},[e.createElementVNode("div",xi,[e.createElementVNode("div",fi,[l[6]||(l[6]=e.createElementVNode("label",null,"目标属性",-1)),e.createElementVNode("select",{value:i.property,onChange:r=>s(n,"property",r)},[l[5]||(l[5]=e.createElementVNode("option",{value:""},"选择目标属性",-1)),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(g.nodeProperties,r=>(e.openBlock(),e.createElementBlock("option",{key:r.key,value:r.key},e.toDisplayString(r.label),9,ui))),128))],40,mi)]),e.createElementVNode("div",gi,[l[8]||(l[8]=e.createElementVNode("label",null,"期望值",-1)),!i.property||t(i.property)==="text"?(e.openBlock(),e.createElementBlock("input",{key:0,value:i.value,type:"text",onInput:r=>s(n,"value",r),placeholder:"输入值"},null,40,Ei)):t(i.property)==="number"?(e.openBlock(),e.createElementBlock("input",{key:1,value:i.value,type:"number",onInput:r=>s(n,"value",r),placeholder:"输入数字"},null,40,hi)):t(i.property)==="color"?(e.openBlock(),e.createElementBlock("div",bi,[e.createElementVNode("input",{value:i.value,type:"color",onInput:r=>s(n,"value",r)},null,40,vi),e.createElementVNode("span",yi,e.toDisplayString(i.value||"#000000"),1)])):t(i.property)==="boolean"?(e.openBlock(),e.createElementBlock("select",{key:3,value:i.value,onChange:r=>s(n,"value",r)},[...l[7]||(l[7]=[e.createElementVNode("option",{value:"true"},"是",-1),e.createElementVNode("option",{value:"false"},"否",-1)])],40,Ci)):e.createCommentVNode("",!0)]),e.createElementVNode("button",{class:"btn-delete-group",onClick:r=>m.$emit("remove-group",n),title:"删除"}," 🗑 ",8,Bi)])]))),128)),g.attributeGroups.length===0?(e.openBlock(),e.createElementBlock("div",ki,' 请点击"新增一组"按钮添加属性配置 ')):e.createCommentVNode("",!0)]),e.createElementVNode("div",Ni,[e.createElementVNode("button",{class:"btn-cancel",onClick:l[2]||(l[2]=i=>m.$emit("close"))},"取消"),e.createElementVNode("button",{class:"btn-confirm",onClick:h},"确定")])])]))}}),[["__scopeId","data-v-90af9944"]]),Vi={class:"dialog-content dialog-large"},Di={class:"dialog-header"},Ai={class:"dialog-body dialog-body-split"},_i={class:"code-editor-section"},$i=["value"],Fi={class:"code-preview-section"},wi={class:"section-header"},Si={class:"preview-status"},Ii={key:0,class:"status-success"},zi={key:1,class:"status-error"},Ti={class:"preview-canvas"},Pi={key:0,class:"preview-empty"},Ri={key:1,class:"preview-error-box"},Mi={class:"error-message"},Hi={key:2,class:"preview-node-container"},Oi={key:0,class:"console-output"},Ui={class:"console-logs"},Li={class:"dialog-footer"},Wi=`function execute(node) {
|
|
2
|
+
// 修改节点填充颜色为红色
|
|
3
|
+
node.attr('body/fill', '#ff0000');
|
|
4
|
+
|
|
5
|
+
// 修改节点文本内容
|
|
6
|
+
node.attr('text/text', '已点击');
|
|
7
|
+
|
|
8
|
+
// 获取当前节点位置
|
|
9
|
+
const pos = node.getPosition();
|
|
10
|
+
console.log('X:', pos.x, 'Y:', pos.y);
|
|
11
|
+
}`,tt=te(e.defineComponent({__name:"CustomCodeDialog",props:{code:{},selectedNode:{}},emits:["update:code","close","save"],setup(g,{expose:E}){const o=g,a=e.ref(null),t=e.ref(null);let s=null,h=null;const m=async()=>{var c;if(!o.selectedNode){t.value={success:!1,logs:[],error:"没有选中的节点"};return}const i=(c=o.selectedNode.model)==null?void 0:c.graph;if(!i){t.value={success:!1,logs:[],error:"无法获取画布对象"};return}t.value={success:!0,logs:[],result:void 0};const n=[],r=console.log;try{if(await e.nextTick(),await l(),!h||!s){t.value={success:!1,logs:[],error:"预览画布初始化失败"};return}console.log=(...V)=>{n.push(V.map(d=>typeof d=="object"?JSON.stringify(d,null,2):String(d)).join(" ")),r(...V)};let f=o.code.trim();f.startsWith("function")&&(f=`${f}; execute(node, graph, event);`);const u=new Function("node","graph","event",f),v=new Proxy(o.selectedNode,{get(V,d){return d==="attr"?function(...p){return p.length===1?V.attr(p[0]):h?h.attr(p[0],p[1]):void 0}:V[d]}}),B=u(v,i,{});h&&s&&(h.removeTools(),s.drawBackground(),h.toJSON()),t.value={success:!0,logs:n,result:B!==void 0?typeof B=="object"?JSON.stringify(B,null,2):String(B):void 0}}catch(f){t.value={success:!1,logs:n,error:f.message||String(f)}}finally{console.log=r}},l=async()=>{var c;if(!a.value||!o.selectedNode)return;await e.nextTick();const i=a.value.clientWidth,n=a.value.clientHeight;if(i===0||n===0)return;a.value.innerHTML="",s&&(s.dispose(),s=null,h=null),s=new ue.Graph({container:a.value,width:i,height:Math.max(n-100,300),background:{color:"#0f172a"},grid:{size:10,visible:!0,type:"dot",args:{color:"#1e293b",thickness:1}},interacting:!1});const r=o.selectedNode.toJSON();try{h=s.addNode({...r,position:{x:i/2-(((c=r.size)==null?void 0:c.width)||100)/2,y:100}})}catch(f){console.error("添加预览节点失败:",f)}};return E({previewContainer:a,DEFAULT_CODE:Wi}),(i,n)=>{var r,c;return e.openBlock(),e.createElementBlock("div",{class:"dialog-overlay",onClick:n[4]||(n[4]=e.withModifiers(f=>i.$emit("close"),["self"]))},[e.createElementVNode("div",Vi,[e.createElementVNode("div",Di,[n[5]||(n[5]=e.createElementVNode("h3",null,"自定义代码配置",-1)),e.createElementVNode("button",{class:"btn-close",onClick:n[0]||(n[0]=f=>i.$emit("close"))},"×")]),e.createElementVNode("div",Ai,[e.createElementVNode("div",_i,[e.createElementVNode("div",{class:"section-header"},[n[6]||(n[6]=e.createElementVNode("label",null,"JavaScript代码",-1)),e.createElementVNode("button",{class:"btn-test",onClick:m},"测试执行")]),e.createElementVNode("textarea",{value:g.code,onInput:n[1]||(n[1]=f=>i.$emit("update:code",f.target.value)),placeholder:`function execute(node) {
|
|
12
|
+
// 修改节点填充颜色为红色
|
|
13
|
+
node.attr('body/fill', '#ff0000');
|
|
14
|
+
|
|
15
|
+
// 修改节点文本内容
|
|
16
|
+
node.attr('text/text', '已点击');
|
|
17
|
+
|
|
18
|
+
// 获取当前节点位置
|
|
19
|
+
const pos = node.getPosition();
|
|
20
|
+
console.log('X:', pos.x, 'Y:', pos.y);
|
|
21
|
+
}`,class:"code-textarea code-textarea-full"},null,40,$i)]),e.createElementVNode("div",Fi,[e.createElementVNode("div",wi,[n[7]||(n[7]=e.createElementVNode("label",null,"组件预览",-1)),e.createElementVNode("div",Si,[(r=t.value)!=null&&r.success?(e.openBlock(),e.createElementBlock("span",Ii,"✓ 执行成功")):(c=t.value)!=null&&c.error?(e.openBlock(),e.createElementBlock("span",zi,"✗ 执行失败")):e.createCommentVNode("",!0)])]),e.createElementVNode("div",Ti,[t.value?t.value.error?(e.openBlock(),e.createElementBlock("div",Ri,[n[8]||(n[8]=e.createElementVNode("div",{class:"error-title"},"错误信息:",-1)),e.createElementVNode("div",Mi,e.toDisplayString(t.value.error),1)])):(e.openBlock(),e.createElementBlock("div",Hi,[e.createElementVNode("div",{ref_key:"previewContainer",ref:a,class:"node-preview"},null,512),t.value.logs.length>0?(e.openBlock(),e.createElementBlock("div",Oi,[n[9]||(n[9]=e.createElementVNode("div",{class:"console-title"},"控制台输出:",-1)),e.createElementVNode("div",Ui,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(t.value.logs,(f,u)=>(e.openBlock(),e.createElementBlock("div",{key:u,class:"log-item"},e.toDisplayString(f),1))),128))])])):e.createCommentVNode("",!0)])):(e.openBlock(),e.createElementBlock("div",Pi,' 点击"测试执行"按钮查看组件预览效果 '))])])]),e.createElementVNode("div",Li,[e.createElementVNode("button",{class:"btn-cancel",onClick:n[2]||(n[2]=f=>i.$emit("close"))},"取消"),e.createElementVNode("button",{class:"btn-confirm",onClick:n[3]||(n[3]=f=>i.$emit("save"))},"确定")])])])}}}),[["__scopeId","data-v-add3567b"]]),qi={class:"dialog-container"},Gi={class:"dialog-header"},ji={class:"dialog-body"},Xi={key:0,class:"empty-state"},Yi={key:1,class:"workflow-list"},Ki=["onClick"],Ji={class:"workflow-info"},Zi={class:"workflow-name"},Qi={class:"workflow-meta"},ec={class:"workflow-id"},tc={class:"workflow-date"},oc={class:"workflow-actions"},nc=["onClick"],ac={class:"dialog-footer"},rc=["disabled"],lc=te(e.defineComponent({__name:"WorkflowSelectorDialog",emits:["close","select"],setup(g,{emit:E}){const o=E,a=e.ref([]),t=e.ref(null),s=()=>{try{const n=localStorage.getItem("saved-workflows");n&&(a.value=JSON.parse(n))}catch(n){console.error("加载流程列表失败:",n)}},h=n=>{t.value=n},m=n=>{console.log("预览流程:",n)},l=()=>{t.value&&o("select",t.value)},i=n=>new Date(n).toLocaleString("zh-CN",{year:"numeric",month:"2-digit",day:"2-digit",hour:"2-digit",minute:"2-digit"});return e.onMounted(()=>{s()}),(n,r)=>(e.openBlock(),e.createElementBlock("div",{class:"dialog-overlay",onClick:r[2]||(r[2]=e.withModifiers(c=>n.$emit("close"),["self"]))},[e.createElementVNode("div",qi,[e.createElementVNode("div",Gi,[r[3]||(r[3]=e.createElementVNode("h3",null,"选择流程",-1)),e.createElementVNode("button",{class:"btn-close",onClick:r[0]||(r[0]=c=>n.$emit("close"))},"×")]),e.createElementVNode("div",ji,[a.value.length===0?(e.openBlock(),e.createElementBlock("div",Xi,[...r[4]||(r[4]=[e.createElementVNode("p",null,"暂无已保存的流程",-1),e.createElementVNode("p",{class:"hint"},"请先在流程编辑器中创建并保存流程",-1)])])):(e.openBlock(),e.createElementBlock("div",Yi,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(a.value,c=>{var f;return e.openBlock(),e.createElementBlock("div",{key:c.id,class:e.normalizeClass(["workflow-item",{selected:((f=t.value)==null?void 0:f.id)===c.id}]),onClick:u=>h(c)},[e.createElementVNode("div",Ji,[e.createElementVNode("div",Zi,e.toDisplayString(c.name),1),e.createElementVNode("div",Qi,[e.createElementVNode("span",ec,"ID: "+e.toDisplayString(c.id),1),e.createElementVNode("span",tc,e.toDisplayString(i(c.createdAt)),1)])]),e.createElementVNode("div",oc,[e.createElementVNode("button",{class:"btn-icon",onClick:e.withModifiers(u=>m(c),["stop"]),title:"预览"}," 👁️ ",8,nc)])],10,Ki)}),128))]))]),e.createElementVNode("div",ac,[e.createElementVNode("button",{class:"btn-secondary",onClick:r[1]||(r[1]=c=>n.$emit("close"))},"取消"),e.createElementVNode("button",{class:"btn-primary",disabled:!t.value,onClick:l}," 确定 ",8,rc)])])]))}}),[["__scopeId","data-v-c9a88e33"]]),Ie={SCADA_EDITOR_DATA:"scada_editor_data",SCADA_PREVIEW_DATA:"scada_preview_data"},ot=(g,E)=>{try{const o=JSON.stringify(E);return sessionStorage.setItem(g,o),!0}catch(o){return console.error(`保存到 sessionStorage 失败 [${g}]:`,o),!1}},eo=g=>{try{const E=sessionStorage.getItem(g);return E?JSON.parse(E):null}catch(E){return console.error(`从 sessionStorage 读取失败 [${g}]:`,E),null}},to=g=>{try{sessionStorage.removeItem(g)}catch(E){console.error(`从 sessionStorage 删除失败 [${g}]:`,E)}},sc=(g,E)=>{try{const o=JSON.stringify(E);return localStorage.setItem(g,o),!0}catch(o){return console.error(`保存到 localStorage 失败 [${g}]:`,o),!1}},ic=g=>{try{const E=localStorage.getItem(g);return E?JSON.parse(E):null}catch(E){return console.error(`从 localStorage 读取失败 [${g}]:`,E),null}},cc=g=>{try{localStorage.removeItem(g)}catch(E){console.error(`从 localStorage 删除失败 [${g}]:`,E)}},oo=(g,E)=>{try{const o=JSON.stringify(g,null,2),a=new Blob([o],{type:"application/json;charset=utf-8"}),t=URL.createObjectURL(a),s=document.createElement("a");return s.href=t,s.download=`${E}.json`,s.click(),URL.revokeObjectURL(t),!0}catch(o){return console.error("导出 JSON 文件失败:",o),!1}},nt=(g="")=>{const E=Date.now(),o=Math.random().toString(36).substring(2,11);return g?`${g}_${E}_${o}`:`${E}_${o}`},no=()=>nt("evt"),dc=()=>nt("node"),at=(g,E="YYYY-MM-DD HH:mm:ss")=>{const o=new Date(g),a=o.getFullYear(),t=String(o.getMonth()+1).padStart(2,"0"),s=String(o.getDate()).padStart(2,"0"),h=String(o.getHours()).padStart(2,"0"),m=String(o.getMinutes()).padStart(2,"0"),l=String(o.getSeconds()).padStart(2,"0");return E.replace("YYYY",String(a)).replace("MM",t).replace("DD",s).replace("HH",h).replace("mm",m).replace("ss",l)},rt=()=>Date.now(),ao=(g=50,E=50,o=400,a=300)=>({x:Math.random()*o+g,y:Math.random()*a+E}),oe=(g,E="info",o=3e3)=>{const a=document.createElement("div");a.className=`scada-toast scada-toast-${E}`,a.textContent=g,Object.assign(a.style,{position:"fixed",top:"20px",left:"50%",transform:"translateX(-50%)",padding:"12px 24px",borderRadius:"6px",fontSize:"14px",fontWeight:"500",zIndex:"10000",boxShadow:"0 4px 12px rgba(0, 0, 0, 0.15)",maxWidth:"80%",wordBreak:"break-word",opacity:"0",transition:"opacity 0.3s ease, transform 0.3s ease"});const s={success:{bg:"#10b981",text:"#fff"},error:{bg:"#ef4444",text:"#fff"},warning:{bg:"#f59e0b",text:"#fff"},info:{bg:"#3b82f6",text:"#fff"}}[E];a.style.backgroundColor=s.bg,a.style.color=s.text,document.body.appendChild(a),requestAnimationFrame(()=>{a.style.opacity="1"}),setTimeout(()=>{a.style.opacity="0",setTimeout(()=>{a.parentNode&&document.body.removeChild(a)},300)},o)},pc={class:"property-panel"},xc={key:1,class:"properties"},fc={key:2,class:"properties"},mc={class:"tabs"},uc={class:"tab-content"},gc={class:"tab-pane"},Ec={class:"property-section"},hc={key:0,class:"empty-hint"},bc={class:"event-list"},vc={class:"tab-pane"},yc={class:"property-section"},Cc={key:0,class:"empty-hint"},Bc={class:"event-list"},lt=te(e.defineComponent({__name:"PropertyPanel",props:{selectedNode:{},selectedEdge:{}},emits:["updateNode","deleteNode","updateEdge","deleteEdge"],setup(g,{emit:E}){const o=g,a=E,t=e.ref("basic"),s=e.ref([]),h=e.ref(new Set),m=e.ref([]),l=e.ref(new Set);e.watch(()=>o.selectedNode,R=>{var M,U;if((M=R==null?void 0:R.data)!=null&&M.events){const j=JSON.parse(JSON.stringify(R.data.events));j.forEach(K=>{K.id||(K.id=k())}),s.value=j}else s.value=[];h.value.clear(),(U=R==null?void 0:R.data)!=null&&U.bindings?m.value=JSON.parse(JSON.stringify(R.data.bindings)):m.value=[],l.value.clear()},{immediate:!0});const i=e.ref(0),n=e.ref(0);let r=null,c={x:0,y:0},f={width:0,height:0};e.watch(()=>o.selectedNode,R=>{if(r&&(clearInterval(r),r=null),R){const M=R.getPosition(),U=R.getSize();M&&typeof M.x=="number"&&typeof M.y=="number"?c=M:(c={x:0,y:0},console.warn("节点位置数据异常:",M)),U&&typeof U.width=="number"&&typeof U.height=="number"?f=U:(f={width:0,height:0},console.warn("节点尺寸数据异常:",U)),r=setInterval(()=>{if(o.selectedNode){const j=o.selectedNode.getPosition(),K=o.selectedNode.getSize();j&&typeof j.x=="number"&&typeof j.y=="number"&&(j.x!==c.x||j.y!==c.y)&&(c=j,i.value++),K&&typeof K.width=="number"&&typeof K.height=="number"&&(K.width!==f.width||K.height!==f.height)&&(f=K,n.value++)}},50)}}),e.onUnmounted(()=>{r&&clearInterval(r)});const u=e.computed(()=>{var M;return i.value,((M=o.selectedNode)==null?void 0:M.getPosition())||{x:0,y:0}}),v=e.computed(()=>{var M;return n.value,((M=o.selectedNode)==null?void 0:M.getSize())||{width:0,height:0}}),B=e.computed(()=>{var M;return((M=o.selectedNode)==null?void 0:M.getAttrs())||{}}),V=(R,M)=>{const U=Number(M.target.value),j=o.selectedNode.getPosition(),K=R==="x"?{x:U,y:j.y}:{x:j.x,y:U};a("updateNode",{position:K})},d=(R,M)=>{const U=Number(M.target.value),j=o.selectedNode.getSize(),K=R==="width"?{width:U,height:j.height}:{width:j.width,height:U};a("updateNode",{size:K})},p=R=>{const M=R.target.value;a("updateNode",{attrs:{text:{text:M},label:{text:M}}})},x=R=>{const M=R.target.value;a("updateNode",{attrs:{body:{fill:M}}})},y=R=>{const M=R.target.value;a("updateNode",{attrs:{body:{stroke:M}}})},b=R=>{const M=Number(R.target.value);a("updateNode",{attrs:{body:{strokeWidth:M}}})},D=R=>{const M=Number(R.target.value);a("updateNode",{attrs:{body:{opacity:M}}})},_=R=>{const M=R.target.value,U={...o.selectedNode.data,componentName:M};a("updateNode",{data:U})},S=(R,M)=>{if(!o.selectedNode)return;const U=R.split(".");if(U[0]==="attrs"){const j=U.slice(1).join("/");a("updateNode",{attrs:{[j]:M}})}else if(U[0]==="data"){const j=JSON.parse(JSON.stringify(o.selectedNode.data||{}));let K=j;for(let xe=1;xe<U.length-1;xe++){const Te=U[xe];K[Te]||(K[Te]={}),K=K[Te]}K[U[U.length-1]]=M,a("updateNode",{data:j})}},C=R=>{if(!o.selectedNode)return;const M={...o.selectedNode.data,dataSource:R};a("updateNode",{data:M})},k=no,$=()=>{const R={id:k(),name:"",type:"click",conditionType:"always",action:"attributeChange",params:{}};s.value.push(R),Q()},z=R=>{s.value.splice(R,1),Q()},O=(R,M,U)=>{const j=U.target.value;s.value[R][M]=j,Q()},W=(R,M,U)=>{const K=U.target.value;s.value[R].condition||(s.value[R].condition={}),s.value[R].condition[M]=K,Q()},Y=(R,M,U)=>{const K=U.target.value;s.value[R].params||(s.value[R].params={}),s.value[R].params[M]=K,Q()},Q=()=>{s.value.forEach(M=>{M.id||(M.id=k())});const R={...o.selectedNode.data,events:s.value};a("updateNode",{data:R})},N=R=>{h.value.has(R)?h.value.delete(R):h.value.add(R)},I=R=>h.value.has(R),P=()=>{const R={devicePointId:"",targetProperty:"",enabled:!0};m.value.push(R),T()},A=R=>{m.value.splice(R,1),T()},F=(R,M,U)=>{const K=U.target.value;m.value[R][M]=K,T()},T=()=>{const R={...o.selectedNode.data,bindings:m.value};a("updateNode",{data:R})},w=R=>{l.value.has(R)?l.value.delete(R):l.value.add(R)},q=R=>l.value.has(R),X=e.ref(!1),L=e.ref(-1),H=e.ref([]),ae=R=>{var U;L.value=R;const M=s.value[R];(U=M.params)!=null&&U.attributeGroups&&Array.isArray(M.params.attributeGroups)?H.value=JSON.parse(JSON.stringify(M.params.attributeGroups)):H.value=[{target:"current",property:"",value:""}],X.value=!0},re=()=>{X.value=!1},ne=()=>{H.value.push({target:"current",property:"",value:""})},ge=R=>{H.value.splice(R,1)},fe=(R,M,U)=>{H.value[R][M]=U},de=()=>{for(const R of H.value)if(!R.property){alert("请为每组配置选择目标属性");return}s.value[L.value].params||(s.value[L.value].params={}),s.value[L.value].params.attributeGroups=JSON.parse(JSON.stringify(H.value)),Q(),re()},ke=e.ref(!1),Ee=e.ref(""),ve=e.ref(-1),_e=R=>{var U;ve.value=R;const M=s.value[R];Ee.value=((U=M.params)==null?void 0:U.code)||"",ke.value=!0},ze=()=>{ke.value=!1},$e=()=>{s.value[ve.value].params||(s.value[ve.value].params={}),s.value[ve.value].params.code=Ee.value,Q(),ze()},pe=e.ref(!1),se=e.ref(-1),he=R=>{se.value=R,pe.value=!0},Fe=()=>{pe.value=!1},qe=R=>{s.value[se.value].params||(s.value[se.value].params={});const M=s.value[se.value].params;M.processId=R.id,M.processName=R.name,M.processData=R.data,Q(),Fe()},be=()=>{var M;if(!o.selectedNode)return[];const R=[];return(M=o.selectedNode.data)!=null&&M.props&&Array.isArray(o.selectedNode.data.props)&&o.selectedNode.data.props.forEach(U=>{U.bindable!==!1&&R.push({key:U.key,label:U.label,type:U.type||"text"})}),R},we=R=>{a("updateEdge",R)},qt=()=>{a("deleteEdge")};return(R,M)=>(e.openBlock(),e.createElementBlock(e.Fragment,null,[e.createElementVNode("div",pc,[!g.selectedNode&&!g.selectedEdge?(e.openBlock(),e.createBlock(Ye,{key:0})):g.selectedEdge?(e.openBlock(),e.createElementBlock("div",xc,[M[5]||(M[5]=e.createElementVNode("h3",{class:"panel-title"},"连线属性",-1)),e.createVNode(tl,{"selected-edge":g.selectedEdge,onUpdateEdge:we,onDeleteEdge:qt},null,8,["selected-edge"])])):g.selectedNode?(e.openBlock(),e.createElementBlock("div",fc,[M[10]||(M[10]=e.createElementVNode("h3",{class:"panel-title"},"节点属性",-1)),e.createElementVNode("div",mc,[e.createElementVNode("button",{class:e.normalizeClass(["tab-btn",{active:t.value==="basic"}]),onClick:M[0]||(M[0]=U=>t.value="basic")}," 基础 ",2),e.createElementVNode("button",{class:e.normalizeClass(["tab-btn",{active:t.value==="data"}]),onClick:M[1]||(M[1]=U=>t.value="data")}," 数据 ",2),e.createElementVNode("button",{class:e.normalizeClass(["tab-btn",{active:t.value==="binding"}]),onClick:M[2]||(M[2]=U=>t.value="binding")}," 绑定 ",2),e.createElementVNode("button",{class:e.normalizeClass(["tab-btn",{active:t.value==="event"}]),onClick:M[3]||(M[3]=U=>t.value="event")}," 事件 ",2)]),e.createElementVNode("div",uc,[e.withDirectives(e.createVNode(Ke,{"selected-node":g.selectedNode,"node-position":u.value,"node-size":v.value,"node-attrs":B.value,onUpdatePosition:V,onUpdateSize:d,onUpdateLabel:p,onUpdateFill:x,onUpdateStroke:y,onUpdateStrokeWidth:b,onUpdateOpacity:D,onUpdateComponentName:_,onUpdateDynamicProp:S},null,8,["selected-node","node-position","node-size","node-attrs"]),[[e.vShow,t.value==="basic"]]),e.withDirectives(e.createVNode(kr,{"selected-node":g.selectedNode,onUpdateDataSource:C},null,8,["selected-node"]),[[e.vShow,t.value==="data"]]),e.withDirectives(e.createElementVNode("div",gc,[e.createElementVNode("div",Ec,[e.createElementVNode("div",{class:"section-header"},[M[6]||(M[6]=e.createElementVNode("h4",null,"节点事件",-1)),e.createElementVNode("button",{class:"btn-add",onClick:$},"+ 添加事件")]),s.value.length===0?(e.openBlock(),e.createElementBlock("div",hc,[...M[7]||(M[7]=[e.createElementVNode("span",null,"暂无事件,点击上方按钮添加",-1)])])):e.createCommentVNode("",!0),e.createElementVNode("div",bc,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(s.value,(U,j)=>(e.openBlock(),e.createBlock(Je,{key:j,event:U,index:j,"is-collapsed":I(j),"node-properties":be(),onToggleCollapse:K=>N(j),onRemove:K=>z(j),onUpdateField:(K,xe)=>O(j,K,xe),onUpdateCondition:(K,xe)=>W(j,K,xe),onUpdateParams:(K,xe)=>Y(j,K,xe),onOpenAttributeConfig:K=>ae(j),onOpenCustomCode:K=>_e(j),onOpenWorkflowSelector:K=>he(j)},null,8,["event","index","is-collapsed","node-properties","onToggleCollapse","onRemove","onUpdateField","onUpdateCondition","onUpdateParams","onOpenAttributeConfig","onOpenCustomCode","onOpenWorkflowSelector"]))),128))])])],512),[[e.vShow,t.value==="event"]]),e.withDirectives(e.createElementVNode("div",vc,[e.createElementVNode("div",yc,[e.createElementVNode("div",{class:"section-header"},[M[8]||(M[8]=e.createElementVNode("h4",null,"数据绑定",-1)),e.createElementVNode("button",{class:"btn-add",onClick:P},"+ 添加绑定")]),m.value.length===0?(e.openBlock(),e.createElementBlock("div",Cc,[...M[9]||(M[9]=[e.createElementVNode("span",null,"暂无绑定,点击上方按钮添加",-1)])])):e.createCommentVNode("",!0),e.createElementVNode("div",Bc,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(m.value,(U,j)=>(e.openBlock(),e.createBlock(Qe,{key:j,binding:U,index:j,"is-collapsed":q(j),"node-properties":be(),"event-list":s.value,onToggleCollapse:K=>w(j),onRemove:K=>A(j),onUpdateField:(K,xe)=>F(j,K,xe)},null,8,["binding","index","is-collapsed","node-properties","event-list","onToggleCollapse","onRemove","onUpdateField"]))),128))])])],512),[[e.vShow,t.value==="binding"]])])])):e.createCommentVNode("",!0)]),X.value?(e.openBlock(),e.createBlock(et,{key:0,"attribute-groups":H.value,"node-properties":be(),onClose:re,onSave:de,onAddGroup:ne,onRemoveGroup:ge,onUpdateGroup:fe},null,8,["attribute-groups","node-properties"])):e.createCommentVNode("",!0),ke.value?(e.openBlock(),e.createBlock(tt,{key:1,code:Ee.value,"onUpdate:code":M[4]||(M[4]=U=>Ee.value=U),"selected-node":g.selectedNode,onClose:ze,onSave:$e},null,8,["code","selected-node"])):e.createCommentVNode("",!0),pe.value?(e.openBlock(),e.createBlock(lc,{key:2,onClose:Fe,onSelect:qe})):e.createCommentVNode("",!0)],64))}}),[["__scopeId","data-v-7d3281c0"]]);var J=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{};function kc(g){return g&&g.__esModule&&Object.prototype.hasOwnProperty.call(g,"default")?g.default:g}function Nc(g){if(g.__esModule)return g;var E=g.default;if(typeof E=="function"){var o=function a(){return this instanceof a?Reflect.construct(E,arguments,this.constructor):E.apply(this,arguments)};o.prototype=E.prototype}else o={};return Object.defineProperty(o,"__esModule",{value:!0}),Object.keys(g).forEach(function(a){var t=Object.getOwnPropertyDescriptor(g,a);Object.defineProperty(o,a,t.get?t:{enumerable:!0,get:function(){return g[a]}})}),o}var ro={exports:{}};function Vc(g){throw new Error('Could not dynamically require "'+g+'". Please configure the dynamicRequireTargets or/and ignoreDynamicRequires option of @rollup/plugin-commonjs appropriately for this require call to work.')}var st={exports:{}};const Dc=Nc(Object.freeze(Object.defineProperty({__proto__:null,default:{}},Symbol.toStringTag,{value:"Module"})));var lo;function ee(){return lo||(lo=1,function(g,E){(function(o,a){g.exports=a()})(J,function(){var o=o||function(a,t){var s;if(typeof window<"u"&&window.crypto&&(s=window.crypto),typeof self<"u"&&self.crypto&&(s=self.crypto),typeof globalThis<"u"&&globalThis.crypto&&(s=globalThis.crypto),!s&&typeof window<"u"&&window.msCrypto&&(s=window.msCrypto),!s&&typeof J<"u"&&J.crypto&&(s=J.crypto),!s&&typeof Vc=="function")try{s=Dc}catch{}var h=function(){if(s){if(typeof s.getRandomValues=="function")try{return s.getRandomValues(new Uint32Array(1))[0]}catch{}if(typeof s.randomBytes=="function")try{return s.randomBytes(4).readInt32LE()}catch{}}throw new Error("Native crypto module could not be used to get secure random number.")},m=Object.create||function(){function d(){}return function(p){var x;return d.prototype=p,x=new d,d.prototype=null,x}}(),l={},i=l.lib={},n=i.Base=function(){return{extend:function(d){var p=m(this);return d&&p.mixIn(d),(!p.hasOwnProperty("init")||this.init===p.init)&&(p.init=function(){p.$super.init.apply(this,arguments)}),p.init.prototype=p,p.$super=this,p},create:function(){var d=this.extend();return d.init.apply(d,arguments),d},init:function(){},mixIn:function(d){for(var p in d)d.hasOwnProperty(p)&&(this[p]=d[p]);d.hasOwnProperty("toString")&&(this.toString=d.toString)},clone:function(){return this.init.prototype.extend(this)}}}(),r=i.WordArray=n.extend({init:function(d,p){d=this.words=d||[],p!=t?this.sigBytes=p:this.sigBytes=d.length*4},toString:function(d){return(d||f).stringify(this)},concat:function(d){var p=this.words,x=d.words,y=this.sigBytes,b=d.sigBytes;if(this.clamp(),y%4)for(var D=0;D<b;D++){var _=x[D>>>2]>>>24-D%4*8&255;p[y+D>>>2]|=_<<24-(y+D)%4*8}else for(var S=0;S<b;S+=4)p[y+S>>>2]=x[S>>>2];return this.sigBytes+=b,this},clamp:function(){var d=this.words,p=this.sigBytes;d[p>>>2]&=4294967295<<32-p%4*8,d.length=a.ceil(p/4)},clone:function(){var d=n.clone.call(this);return d.words=this.words.slice(0),d},random:function(d){for(var p=[],x=0;x<d;x+=4)p.push(h());return new r.init(p,d)}}),c=l.enc={},f=c.Hex={stringify:function(d){for(var p=d.words,x=d.sigBytes,y=[],b=0;b<x;b++){var D=p[b>>>2]>>>24-b%4*8&255;y.push((D>>>4).toString(16)),y.push((D&15).toString(16))}return y.join("")},parse:function(d){for(var p=d.length,x=[],y=0;y<p;y+=2)x[y>>>3]|=parseInt(d.substr(y,2),16)<<24-y%8*4;return new r.init(x,p/2)}},u=c.Latin1={stringify:function(d){for(var p=d.words,x=d.sigBytes,y=[],b=0;b<x;b++){var D=p[b>>>2]>>>24-b%4*8&255;y.push(String.fromCharCode(D))}return y.join("")},parse:function(d){for(var p=d.length,x=[],y=0;y<p;y++)x[y>>>2]|=(d.charCodeAt(y)&255)<<24-y%4*8;return new r.init(x,p)}},v=c.Utf8={stringify:function(d){try{return decodeURIComponent(escape(u.stringify(d)))}catch{throw new Error("Malformed UTF-8 data")}},parse:function(d){return u.parse(unescape(encodeURIComponent(d)))}},B=i.BufferedBlockAlgorithm=n.extend({reset:function(){this._data=new r.init,this._nDataBytes=0},_append:function(d){typeof d=="string"&&(d=v.parse(d)),this._data.concat(d),this._nDataBytes+=d.sigBytes},_process:function(d){var p,x=this._data,y=x.words,b=x.sigBytes,D=this.blockSize,_=D*4,S=b/_;d?S=a.ceil(S):S=a.max((S|0)-this._minBufferSize,0);var C=S*D,k=a.min(C*4,b);if(C){for(var $=0;$<C;$+=D)this._doProcessBlock(y,$);p=y.splice(0,C),x.sigBytes-=k}return new r.init(p,k)},clone:function(){var d=n.clone.call(this);return d._data=this._data.clone(),d},_minBufferSize:0});i.Hasher=B.extend({cfg:n.extend(),init:function(d){this.cfg=this.cfg.extend(d),this.reset()},reset:function(){B.reset.call(this),this._doReset()},update:function(d){return this._append(d),this._process(),this},finalize:function(d){d&&this._append(d);var p=this._doFinalize();return p},blockSize:16,_createHelper:function(d){return function(p,x){return new d.init(x).finalize(p)}},_createHmacHelper:function(d){return function(p,x){return new V.HMAC.init(d,x).finalize(p)}}});var V=l.algo={};return l}(Math);return o})}(st)),st.exports}var it={exports:{}},so;function Le(){return so||(so=1,function(g,E){(function(o,a){g.exports=a(ee())})(J,function(o){return function(a){var t=o,s=t.lib,h=s.Base,m=s.WordArray,l=t.x64={};l.Word=h.extend({init:function(i,n){this.high=i,this.low=n}}),l.WordArray=h.extend({init:function(i,n){i=this.words=i||[],n!=a?this.sigBytes=n:this.sigBytes=i.length*8},toX32:function(){for(var i=this.words,n=i.length,r=[],c=0;c<n;c++){var f=i[c];r.push(f.high),r.push(f.low)}return m.create(r,this.sigBytes)},clone:function(){for(var i=h.clone.call(this),n=i.words=this.words.slice(0),r=n.length,c=0;c<r;c++)n[c]=n[c].clone();return i}})}(),o})}(it)),it.exports}var ct={exports:{}},io;function Ac(){return io||(io=1,function(g,E){(function(o,a){g.exports=a(ee())})(J,function(o){return function(){if(typeof ArrayBuffer=="function"){var a=o,t=a.lib,s=t.WordArray,h=s.init,m=s.init=function(l){if(l instanceof ArrayBuffer&&(l=new Uint8Array(l)),(l instanceof Int8Array||typeof Uint8ClampedArray<"u"&&l instanceof Uint8ClampedArray||l instanceof Int16Array||l instanceof Uint16Array||l instanceof Int32Array||l instanceof Uint32Array||l instanceof Float32Array||l instanceof Float64Array)&&(l=new Uint8Array(l.buffer,l.byteOffset,l.byteLength)),l instanceof Uint8Array){for(var i=l.byteLength,n=[],r=0;r<i;r++)n[r>>>2]|=l[r]<<24-r%4*8;h.call(this,n,i)}else h.apply(this,arguments)};m.prototype=s}}(),o.lib.WordArray})}(ct)),ct.exports}var dt={exports:{}},co;function _c(){return co||(co=1,function(g,E){(function(o,a){g.exports=a(ee())})(J,function(o){return function(){var a=o,t=a.lib,s=t.WordArray,h=a.enc;h.Utf16=h.Utf16BE={stringify:function(l){for(var i=l.words,n=l.sigBytes,r=[],c=0;c<n;c+=2){var f=i[c>>>2]>>>16-c%4*8&65535;r.push(String.fromCharCode(f))}return r.join("")},parse:function(l){for(var i=l.length,n=[],r=0;r<i;r++)n[r>>>1]|=l.charCodeAt(r)<<16-r%2*16;return s.create(n,i*2)}},h.Utf16LE={stringify:function(l){for(var i=l.words,n=l.sigBytes,r=[],c=0;c<n;c+=2){var f=m(i[c>>>2]>>>16-c%4*8&65535);r.push(String.fromCharCode(f))}return r.join("")},parse:function(l){for(var i=l.length,n=[],r=0;r<i;r++)n[r>>>1]|=m(l.charCodeAt(r)<<16-r%2*16);return s.create(n,i*2)}};function m(l){return l<<8&4278255360|l>>>8&16711935}}(),o.enc.Utf16})}(dt)),dt.exports}var pt={exports:{}},po;function De(){return po||(po=1,function(g,E){(function(o,a){g.exports=a(ee())})(J,function(o){return function(){var a=o,t=a.lib,s=t.WordArray,h=a.enc;h.Base64={stringify:function(l){var i=l.words,n=l.sigBytes,r=this._map;l.clamp();for(var c=[],f=0;f<n;f+=3)for(var u=i[f>>>2]>>>24-f%4*8&255,v=i[f+1>>>2]>>>24-(f+1)%4*8&255,B=i[f+2>>>2]>>>24-(f+2)%4*8&255,V=u<<16|v<<8|B,d=0;d<4&&f+d*.75<n;d++)c.push(r.charAt(V>>>6*(3-d)&63));var p=r.charAt(64);if(p)for(;c.length%4;)c.push(p);return c.join("")},parse:function(l){var i=l.length,n=this._map,r=this._reverseMap;if(!r){r=this._reverseMap=[];for(var c=0;c<n.length;c++)r[n.charCodeAt(c)]=c}var f=n.charAt(64);if(f){var u=l.indexOf(f);u!==-1&&(i=u)}return m(l,i,r)},_map:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/="};function m(l,i,n){for(var r=[],c=0,f=0;f<i;f++)if(f%4){var u=n[l.charCodeAt(f-1)]<<f%4*2,v=n[l.charCodeAt(f)]>>>6-f%4*2,B=u|v;r[c>>>2]|=B<<24-c%4*8,c++}return s.create(r,c)}}(),o.enc.Base64})}(pt)),pt.exports}var xt={exports:{}},xo;function $c(){return xo||(xo=1,function(g,E){(function(o,a){g.exports=a(ee())})(J,function(o){return function(){var a=o,t=a.lib,s=t.WordArray,h=a.enc;h.Base64url={stringify:function(l,i){i===void 0&&(i=!0);var n=l.words,r=l.sigBytes,c=i?this._safe_map:this._map;l.clamp();for(var f=[],u=0;u<r;u+=3)for(var v=n[u>>>2]>>>24-u%4*8&255,B=n[u+1>>>2]>>>24-(u+1)%4*8&255,V=n[u+2>>>2]>>>24-(u+2)%4*8&255,d=v<<16|B<<8|V,p=0;p<4&&u+p*.75<r;p++)f.push(c.charAt(d>>>6*(3-p)&63));var x=c.charAt(64);if(x)for(;f.length%4;)f.push(x);return f.join("")},parse:function(l,i){i===void 0&&(i=!0);var n=l.length,r=i?this._safe_map:this._map,c=this._reverseMap;if(!c){c=this._reverseMap=[];for(var f=0;f<r.length;f++)c[r.charCodeAt(f)]=f}var u=r.charAt(64);if(u){var v=l.indexOf(u);v!==-1&&(n=v)}return m(l,n,c)},_map:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",_safe_map:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_"};function m(l,i,n){for(var r=[],c=0,f=0;f<i;f++)if(f%4){var u=n[l.charCodeAt(f-1)]<<f%4*2,v=n[l.charCodeAt(f)]>>>6-f%4*2,B=u|v;r[c>>>2]|=B<<24-c%4*8,c++}return s.create(r,c)}}(),o.enc.Base64url})}(xt)),xt.exports}var ft={exports:{}},fo;function Ae(){return fo||(fo=1,function(g,E){(function(o,a){g.exports=a(ee())})(J,function(o){return function(a){var t=o,s=t.lib,h=s.WordArray,m=s.Hasher,l=t.algo,i=[];(function(){for(var v=0;v<64;v++)i[v]=a.abs(a.sin(v+1))*4294967296|0})();var n=l.MD5=m.extend({_doReset:function(){this._hash=new h.init([1732584193,4023233417,2562383102,271733878])},_doProcessBlock:function(v,B){for(var V=0;V<16;V++){var d=B+V,p=v[d];v[d]=(p<<8|p>>>24)&16711935|(p<<24|p>>>8)&4278255360}var x=this._hash.words,y=v[B+0],b=v[B+1],D=v[B+2],_=v[B+3],S=v[B+4],C=v[B+5],k=v[B+6],$=v[B+7],z=v[B+8],O=v[B+9],W=v[B+10],Y=v[B+11],Q=v[B+12],N=v[B+13],I=v[B+14],P=v[B+15],A=x[0],F=x[1],T=x[2],w=x[3];A=r(A,F,T,w,y,7,i[0]),w=r(w,A,F,T,b,12,i[1]),T=r(T,w,A,F,D,17,i[2]),F=r(F,T,w,A,_,22,i[3]),A=r(A,F,T,w,S,7,i[4]),w=r(w,A,F,T,C,12,i[5]),T=r(T,w,A,F,k,17,i[6]),F=r(F,T,w,A,$,22,i[7]),A=r(A,F,T,w,z,7,i[8]),w=r(w,A,F,T,O,12,i[9]),T=r(T,w,A,F,W,17,i[10]),F=r(F,T,w,A,Y,22,i[11]),A=r(A,F,T,w,Q,7,i[12]),w=r(w,A,F,T,N,12,i[13]),T=r(T,w,A,F,I,17,i[14]),F=r(F,T,w,A,P,22,i[15]),A=c(A,F,T,w,b,5,i[16]),w=c(w,A,F,T,k,9,i[17]),T=c(T,w,A,F,Y,14,i[18]),F=c(F,T,w,A,y,20,i[19]),A=c(A,F,T,w,C,5,i[20]),w=c(w,A,F,T,W,9,i[21]),T=c(T,w,A,F,P,14,i[22]),F=c(F,T,w,A,S,20,i[23]),A=c(A,F,T,w,O,5,i[24]),w=c(w,A,F,T,I,9,i[25]),T=c(T,w,A,F,_,14,i[26]),F=c(F,T,w,A,z,20,i[27]),A=c(A,F,T,w,N,5,i[28]),w=c(w,A,F,T,D,9,i[29]),T=c(T,w,A,F,$,14,i[30]),F=c(F,T,w,A,Q,20,i[31]),A=f(A,F,T,w,C,4,i[32]),w=f(w,A,F,T,z,11,i[33]),T=f(T,w,A,F,Y,16,i[34]),F=f(F,T,w,A,I,23,i[35]),A=f(A,F,T,w,b,4,i[36]),w=f(w,A,F,T,S,11,i[37]),T=f(T,w,A,F,$,16,i[38]),F=f(F,T,w,A,W,23,i[39]),A=f(A,F,T,w,N,4,i[40]),w=f(w,A,F,T,y,11,i[41]),T=f(T,w,A,F,_,16,i[42]),F=f(F,T,w,A,k,23,i[43]),A=f(A,F,T,w,O,4,i[44]),w=f(w,A,F,T,Q,11,i[45]),T=f(T,w,A,F,P,16,i[46]),F=f(F,T,w,A,D,23,i[47]),A=u(A,F,T,w,y,6,i[48]),w=u(w,A,F,T,$,10,i[49]),T=u(T,w,A,F,I,15,i[50]),F=u(F,T,w,A,C,21,i[51]),A=u(A,F,T,w,Q,6,i[52]),w=u(w,A,F,T,_,10,i[53]),T=u(T,w,A,F,W,15,i[54]),F=u(F,T,w,A,b,21,i[55]),A=u(A,F,T,w,z,6,i[56]),w=u(w,A,F,T,P,10,i[57]),T=u(T,w,A,F,k,15,i[58]),F=u(F,T,w,A,N,21,i[59]),A=u(A,F,T,w,S,6,i[60]),w=u(w,A,F,T,Y,10,i[61]),T=u(T,w,A,F,D,15,i[62]),F=u(F,T,w,A,O,21,i[63]),x[0]=x[0]+A|0,x[1]=x[1]+F|0,x[2]=x[2]+T|0,x[3]=x[3]+w|0},_doFinalize:function(){var v=this._data,B=v.words,V=this._nDataBytes*8,d=v.sigBytes*8;B[d>>>5]|=128<<24-d%32;var p=a.floor(V/4294967296),x=V;B[(d+64>>>9<<4)+15]=(p<<8|p>>>24)&16711935|(p<<24|p>>>8)&4278255360,B[(d+64>>>9<<4)+14]=(x<<8|x>>>24)&16711935|(x<<24|x>>>8)&4278255360,v.sigBytes=(B.length+1)*4,this._process();for(var y=this._hash,b=y.words,D=0;D<4;D++){var _=b[D];b[D]=(_<<8|_>>>24)&16711935|(_<<24|_>>>8)&4278255360}return y},clone:function(){var v=m.clone.call(this);return v._hash=this._hash.clone(),v}});function r(v,B,V,d,p,x,y){var b=v+(B&V|~B&d)+p+y;return(b<<x|b>>>32-x)+B}function c(v,B,V,d,p,x,y){var b=v+(B&d|V&~d)+p+y;return(b<<x|b>>>32-x)+B}function f(v,B,V,d,p,x,y){var b=v+(B^V^d)+p+y;return(b<<x|b>>>32-x)+B}function u(v,B,V,d,p,x,y){var b=v+(V^(B|~d))+p+y;return(b<<x|b>>>32-x)+B}t.MD5=m._createHelper(n),t.HmacMD5=m._createHmacHelper(n)}(Math),o.MD5})}(ft)),ft.exports}var mt={exports:{}},mo;function uo(){return mo||(mo=1,function(g,E){(function(o,a){g.exports=a(ee())})(J,function(o){return function(){var a=o,t=a.lib,s=t.WordArray,h=t.Hasher,m=a.algo,l=[],i=m.SHA1=h.extend({_doReset:function(){this._hash=new s.init([1732584193,4023233417,2562383102,271733878,3285377520])},_doProcessBlock:function(n,r){for(var c=this._hash.words,f=c[0],u=c[1],v=c[2],B=c[3],V=c[4],d=0;d<80;d++){if(d<16)l[d]=n[r+d]|0;else{var p=l[d-3]^l[d-8]^l[d-14]^l[d-16];l[d]=p<<1|p>>>31}var x=(f<<5|f>>>27)+V+l[d];d<20?x+=(u&v|~u&B)+1518500249:d<40?x+=(u^v^B)+1859775393:d<60?x+=(u&v|u&B|v&B)-1894007588:x+=(u^v^B)-899497514,V=B,B=v,v=u<<30|u>>>2,u=f,f=x}c[0]=c[0]+f|0,c[1]=c[1]+u|0,c[2]=c[2]+v|0,c[3]=c[3]+B|0,c[4]=c[4]+V|0},_doFinalize:function(){var n=this._data,r=n.words,c=this._nDataBytes*8,f=n.sigBytes*8;return r[f>>>5]|=128<<24-f%32,r[(f+64>>>9<<4)+14]=Math.floor(c/4294967296),r[(f+64>>>9<<4)+15]=c,n.sigBytes=r.length*4,this._process(),this._hash},clone:function(){var n=h.clone.call(this);return n._hash=this._hash.clone(),n}});a.SHA1=h._createHelper(i),a.HmacSHA1=h._createHmacHelper(i)}(),o.SHA1})}(mt)),mt.exports}var ut={exports:{}},go;function gt(){return go||(go=1,function(g,E){(function(o,a){g.exports=a(ee())})(J,function(o){return function(a){var t=o,s=t.lib,h=s.WordArray,m=s.Hasher,l=t.algo,i=[],n=[];(function(){function f(V){for(var d=a.sqrt(V),p=2;p<=d;p++)if(!(V%p))return!1;return!0}function u(V){return(V-(V|0))*4294967296|0}for(var v=2,B=0;B<64;)f(v)&&(B<8&&(i[B]=u(a.pow(v,1/2))),n[B]=u(a.pow(v,1/3)),B++),v++})();var r=[],c=l.SHA256=m.extend({_doReset:function(){this._hash=new h.init(i.slice(0))},_doProcessBlock:function(f,u){for(var v=this._hash.words,B=v[0],V=v[1],d=v[2],p=v[3],x=v[4],y=v[5],b=v[6],D=v[7],_=0;_<64;_++){if(_<16)r[_]=f[u+_]|0;else{var S=r[_-15],C=(S<<25|S>>>7)^(S<<14|S>>>18)^S>>>3,k=r[_-2],$=(k<<15|k>>>17)^(k<<13|k>>>19)^k>>>10;r[_]=C+r[_-7]+$+r[_-16]}var z=x&y^~x&b,O=B&V^B&d^V&d,W=(B<<30|B>>>2)^(B<<19|B>>>13)^(B<<10|B>>>22),Y=(x<<26|x>>>6)^(x<<21|x>>>11)^(x<<7|x>>>25),Q=D+Y+z+n[_]+r[_],N=W+O;D=b,b=y,y=x,x=p+Q|0,p=d,d=V,V=B,B=Q+N|0}v[0]=v[0]+B|0,v[1]=v[1]+V|0,v[2]=v[2]+d|0,v[3]=v[3]+p|0,v[4]=v[4]+x|0,v[5]=v[5]+y|0,v[6]=v[6]+b|0,v[7]=v[7]+D|0},_doFinalize:function(){var f=this._data,u=f.words,v=this._nDataBytes*8,B=f.sigBytes*8;return u[B>>>5]|=128<<24-B%32,u[(B+64>>>9<<4)+14]=a.floor(v/4294967296),u[(B+64>>>9<<4)+15]=v,f.sigBytes=u.length*4,this._process(),this._hash},clone:function(){var f=m.clone.call(this);return f._hash=this._hash.clone(),f}});t.SHA256=m._createHelper(c),t.HmacSHA256=m._createHmacHelper(c)}(Math),o.SHA256})}(ut)),ut.exports}var Et={exports:{}},Eo;function Fc(){return Eo||(Eo=1,function(g,E){(function(o,a,t){g.exports=a(ee(),gt())})(J,function(o){return function(){var a=o,t=a.lib,s=t.WordArray,h=a.algo,m=h.SHA256,l=h.SHA224=m.extend({_doReset:function(){this._hash=new s.init([3238371032,914150663,812702999,4144912697,4290775857,1750603025,1694076839,3204075428])},_doFinalize:function(){var i=m._doFinalize.call(this);return i.sigBytes-=4,i}});a.SHA224=m._createHelper(l),a.HmacSHA224=m._createHmacHelper(l)}(),o.SHA224})}(Et)),Et.exports}var ht={exports:{}},ho;function bo(){return ho||(ho=1,function(g,E){(function(o,a,t){g.exports=a(ee(),Le())})(J,function(o){return function(){var a=o,t=a.lib,s=t.Hasher,h=a.x64,m=h.Word,l=h.WordArray,i=a.algo;function n(){return m.create.apply(m,arguments)}var r=[n(1116352408,3609767458),n(1899447441,602891725),n(3049323471,3964484399),n(3921009573,2173295548),n(961987163,4081628472),n(1508970993,3053834265),n(2453635748,2937671579),n(2870763221,3664609560),n(3624381080,2734883394),n(310598401,1164996542),n(607225278,1323610764),n(1426881987,3590304994),n(1925078388,4068182383),n(2162078206,991336113),n(2614888103,633803317),n(3248222580,3479774868),n(3835390401,2666613458),n(4022224774,944711139),n(264347078,2341262773),n(604807628,2007800933),n(770255983,1495990901),n(1249150122,1856431235),n(1555081692,3175218132),n(1996064986,2198950837),n(2554220882,3999719339),n(2821834349,766784016),n(2952996808,2566594879),n(3210313671,3203337956),n(3336571891,1034457026),n(3584528711,2466948901),n(113926993,3758326383),n(338241895,168717936),n(666307205,1188179964),n(773529912,1546045734),n(1294757372,1522805485),n(1396182291,2643833823),n(1695183700,2343527390),n(1986661051,1014477480),n(2177026350,1206759142),n(2456956037,344077627),n(2730485921,1290863460),n(2820302411,3158454273),n(3259730800,3505952657),n(3345764771,106217008),n(3516065817,3606008344),n(3600352804,1432725776),n(4094571909,1467031594),n(275423344,851169720),n(430227734,3100823752),n(506948616,1363258195),n(659060556,3750685593),n(883997877,3785050280),n(958139571,3318307427),n(1322822218,3812723403),n(1537002063,2003034995),n(1747873779,3602036899),n(1955562222,1575990012),n(2024104815,1125592928),n(2227730452,2716904306),n(2361852424,442776044),n(2428436474,593698344),n(2756734187,3733110249),n(3204031479,2999351573),n(3329325298,3815920427),n(3391569614,3928383900),n(3515267271,566280711),n(3940187606,3454069534),n(4118630271,4000239992),n(116418474,1914138554),n(174292421,2731055270),n(289380356,3203993006),n(460393269,320620315),n(685471733,587496836),n(852142971,1086792851),n(1017036298,365543100),n(1126000580,2618297676),n(1288033470,3409855158),n(1501505948,4234509866),n(1607167915,987167468),n(1816402316,1246189591)],c=[];(function(){for(var u=0;u<80;u++)c[u]=n()})();var f=i.SHA512=s.extend({_doReset:function(){this._hash=new l.init([new m.init(1779033703,4089235720),new m.init(3144134277,2227873595),new m.init(1013904242,4271175723),new m.init(2773480762,1595750129),new m.init(1359893119,2917565137),new m.init(2600822924,725511199),new m.init(528734635,4215389547),new m.init(1541459225,327033209)])},_doProcessBlock:function(u,v){for(var B=this._hash.words,V=B[0],d=B[1],p=B[2],x=B[3],y=B[4],b=B[5],D=B[6],_=B[7],S=V.high,C=V.low,k=d.high,$=d.low,z=p.high,O=p.low,W=x.high,Y=x.low,Q=y.high,N=y.low,I=b.high,P=b.low,A=D.high,F=D.low,T=_.high,w=_.low,q=S,X=C,L=k,H=$,ae=z,re=O,ne=W,ge=Y,fe=Q,de=N,ke=I,Ee=P,ve=A,_e=F,ze=T,$e=w,pe=0;pe<80;pe++){var se,he,Fe=c[pe];if(pe<16)he=Fe.high=u[v+pe*2]|0,se=Fe.low=u[v+pe*2+1]|0;else{var qe=c[pe-15],be=qe.high,we=qe.low,qt=(be>>>1|we<<31)^(be>>>8|we<<24)^be>>>7,R=(we>>>1|be<<31)^(we>>>8|be<<24)^(we>>>7|be<<25),M=c[pe-2],U=M.high,j=M.low,K=(U>>>19|j<<13)^(U<<3|j>>>29)^U>>>6,xe=(j>>>19|U<<13)^(j<<3|U>>>29)^(j>>>6|U<<26),Te=c[pe-7],ip=Te.high,cp=Te.low,Ko=c[pe-16],dp=Ko.high,Jo=Ko.low;se=R+cp,he=qt+ip+(se>>>0<R>>>0?1:0),se=se+xe,he=he+K+(se>>>0<xe>>>0?1:0),se=se+Jo,he=he+dp+(se>>>0<Jo>>>0?1:0),Fe.high=he,Fe.low=se}var pp=fe&ke^~fe&ve,Zo=de&Ee^~de&_e,xp=q&L^q&ae^L&ae,fp=X&H^X&re^H&re,mp=(q>>>28|X<<4)^(q<<30|X>>>2)^(q<<25|X>>>7),Qo=(X>>>28|q<<4)^(X<<30|q>>>2)^(X<<25|q>>>7),up=(fe>>>14|de<<18)^(fe>>>18|de<<14)^(fe<<23|de>>>9),gp=(de>>>14|fe<<18)^(de>>>18|fe<<14)^(de<<23|fe>>>9),en=r[pe],Ep=en.high,tn=en.low,me=$e+gp,Ne=ze+up+(me>>>0<$e>>>0?1:0),me=me+Zo,Ne=Ne+pp+(me>>>0<Zo>>>0?1:0),me=me+tn,Ne=Ne+Ep+(me>>>0<tn>>>0?1:0),me=me+se,Ne=Ne+he+(me>>>0<se>>>0?1:0),on=Qo+fp,hp=mp+xp+(on>>>0<Qo>>>0?1:0);ze=ve,$e=_e,ve=ke,_e=Ee,ke=fe,Ee=de,de=ge+me|0,fe=ne+Ne+(de>>>0<ge>>>0?1:0)|0,ne=ae,ge=re,ae=L,re=H,L=q,H=X,X=me+on|0,q=Ne+hp+(X>>>0<me>>>0?1:0)|0}C=V.low=C+X,V.high=S+q+(C>>>0<X>>>0?1:0),$=d.low=$+H,d.high=k+L+($>>>0<H>>>0?1:0),O=p.low=O+re,p.high=z+ae+(O>>>0<re>>>0?1:0),Y=x.low=Y+ge,x.high=W+ne+(Y>>>0<ge>>>0?1:0),N=y.low=N+de,y.high=Q+fe+(N>>>0<de>>>0?1:0),P=b.low=P+Ee,b.high=I+ke+(P>>>0<Ee>>>0?1:0),F=D.low=F+_e,D.high=A+ve+(F>>>0<_e>>>0?1:0),w=_.low=w+$e,_.high=T+ze+(w>>>0<$e>>>0?1:0)},_doFinalize:function(){var u=this._data,v=u.words,B=this._nDataBytes*8,V=u.sigBytes*8;v[V>>>5]|=128<<24-V%32,v[(V+128>>>10<<5)+30]=Math.floor(B/4294967296),v[(V+128>>>10<<5)+31]=B,u.sigBytes=v.length*4,this._process();var d=this._hash.toX32();return d},clone:function(){var u=s.clone.call(this);return u._hash=this._hash.clone(),u},blockSize:1024/32});a.SHA512=s._createHelper(f),a.HmacSHA512=s._createHmacHelper(f)}(),o.SHA512})}(ht)),ht.exports}var bt={exports:{}},vo;function wc(){return vo||(vo=1,function(g,E){(function(o,a,t){g.exports=a(ee(),Le(),bo())})(J,function(o){return function(){var a=o,t=a.x64,s=t.Word,h=t.WordArray,m=a.algo,l=m.SHA512,i=m.SHA384=l.extend({_doReset:function(){this._hash=new h.init([new s.init(3418070365,3238371032),new s.init(1654270250,914150663),new s.init(2438529370,812702999),new s.init(355462360,4144912697),new s.init(1731405415,4290775857),new s.init(2394180231,1750603025),new s.init(3675008525,1694076839),new s.init(1203062813,3204075428)])},_doFinalize:function(){var n=l._doFinalize.call(this);return n.sigBytes-=16,n}});a.SHA384=l._createHelper(i),a.HmacSHA384=l._createHmacHelper(i)}(),o.SHA384})}(bt)),bt.exports}var vt={exports:{}},yo;function Sc(){return yo||(yo=1,function(g,E){(function(o,a,t){g.exports=a(ee(),Le())})(J,function(o){return function(a){var t=o,s=t.lib,h=s.WordArray,m=s.Hasher,l=t.x64,i=l.Word,n=t.algo,r=[],c=[],f=[];(function(){for(var B=1,V=0,d=0;d<24;d++){r[B+5*V]=(d+1)*(d+2)/2%64;var p=V%5,x=(2*B+3*V)%5;B=p,V=x}for(var B=0;B<5;B++)for(var V=0;V<5;V++)c[B+5*V]=V+(2*B+3*V)%5*5;for(var y=1,b=0;b<24;b++){for(var D=0,_=0,S=0;S<7;S++){if(y&1){var C=(1<<S)-1;C<32?_^=1<<C:D^=1<<C-32}y&128?y=y<<1^113:y<<=1}f[b]=i.create(D,_)}})();var u=[];(function(){for(var B=0;B<25;B++)u[B]=i.create()})();var v=n.SHA3=m.extend({cfg:m.cfg.extend({outputLength:512}),_doReset:function(){for(var B=this._state=[],V=0;V<25;V++)B[V]=new i.init;this.blockSize=(1600-2*this.cfg.outputLength)/32},_doProcessBlock:function(B,V){for(var d=this._state,p=this.blockSize/2,x=0;x<p;x++){var y=B[V+2*x],b=B[V+2*x+1];y=(y<<8|y>>>24)&16711935|(y<<24|y>>>8)&4278255360,b=(b<<8|b>>>24)&16711935|(b<<24|b>>>8)&4278255360;var D=d[x];D.high^=b,D.low^=y}for(var _=0;_<24;_++){for(var S=0;S<5;S++){for(var C=0,k=0,$=0;$<5;$++){var D=d[S+5*$];C^=D.high,k^=D.low}var z=u[S];z.high=C,z.low=k}for(var S=0;S<5;S++)for(var O=u[(S+4)%5],W=u[(S+1)%5],Y=W.high,Q=W.low,C=O.high^(Y<<1|Q>>>31),k=O.low^(Q<<1|Y>>>31),$=0;$<5;$++){var D=d[S+5*$];D.high^=C,D.low^=k}for(var N=1;N<25;N++){var C,k,D=d[N],I=D.high,P=D.low,A=r[N];A<32?(C=I<<A|P>>>32-A,k=P<<A|I>>>32-A):(C=P<<A-32|I>>>64-A,k=I<<A-32|P>>>64-A);var F=u[c[N]];F.high=C,F.low=k}var T=u[0],w=d[0];T.high=w.high,T.low=w.low;for(var S=0;S<5;S++)for(var $=0;$<5;$++){var N=S+5*$,D=d[N],q=u[N],X=u[(S+1)%5+5*$],L=u[(S+2)%5+5*$];D.high=q.high^~X.high&L.high,D.low=q.low^~X.low&L.low}var D=d[0],H=f[_];D.high^=H.high,D.low^=H.low}},_doFinalize:function(){var B=this._data,V=B.words;this._nDataBytes*8;var d=B.sigBytes*8,p=this.blockSize*32;V[d>>>5]|=1<<24-d%32,V[(a.ceil((d+1)/p)*p>>>5)-1]|=128,B.sigBytes=V.length*4,this._process();for(var x=this._state,y=this.cfg.outputLength/8,b=y/8,D=[],_=0;_<b;_++){var S=x[_],C=S.high,k=S.low;C=(C<<8|C>>>24)&16711935|(C<<24|C>>>8)&4278255360,k=(k<<8|k>>>24)&16711935|(k<<24|k>>>8)&4278255360,D.push(k),D.push(C)}return new h.init(D,y)},clone:function(){for(var B=m.clone.call(this),V=B._state=this._state.slice(0),d=0;d<25;d++)V[d]=V[d].clone();return B}});t.SHA3=m._createHelper(v),t.HmacSHA3=m._createHmacHelper(v)}(Math),o.SHA3})}(vt)),vt.exports}var yt={exports:{}},Co;function Ic(){return Co||(Co=1,function(g,E){(function(o,a){g.exports=a(ee())})(J,function(o){/** @preserve
|
|
22
|
+
(c) 2012 by Cédric Mesnil. All rights reserved.
|
|
23
|
+
|
|
24
|
+
Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
|
|
25
|
+
|
|
26
|
+
- Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
|
|
27
|
+
- Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
|
|
28
|
+
|
|
29
|
+
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
30
|
+
*/return function(a){var t=o,s=t.lib,h=s.WordArray,m=s.Hasher,l=t.algo,i=h.create([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,7,4,13,1,10,6,15,3,12,0,9,5,2,14,11,8,3,10,14,4,9,15,8,1,2,7,0,6,13,11,5,12,1,9,11,10,0,8,12,4,13,3,7,15,14,5,6,2,4,0,5,9,7,12,2,10,14,1,3,8,11,6,15,13]),n=h.create([5,14,7,0,9,2,11,4,13,6,15,8,1,10,3,12,6,11,3,7,0,13,5,10,14,15,8,12,4,9,1,2,15,5,1,3,7,14,6,9,11,8,12,2,10,0,4,13,8,6,4,1,3,11,15,0,5,12,2,13,9,7,10,14,12,15,10,4,1,5,8,7,6,2,13,14,0,3,9,11]),r=h.create([11,14,15,12,5,8,7,9,11,13,14,15,6,7,9,8,7,6,8,13,11,9,7,15,7,12,15,9,11,7,13,12,11,13,6,7,14,9,13,15,14,8,13,6,5,12,7,5,11,12,14,15,14,15,9,8,9,14,5,6,8,6,5,12,9,15,5,11,6,8,13,12,5,12,13,14,11,8,5,6]),c=h.create([8,9,9,11,13,15,15,5,7,7,8,11,14,14,12,6,9,13,15,7,12,8,9,11,7,7,12,7,6,15,13,11,9,7,15,11,8,6,6,14,12,13,5,14,13,13,7,5,15,5,8,11,14,14,6,14,6,9,12,9,12,5,15,8,8,5,12,9,12,5,14,6,8,13,6,5,15,13,11,11]),f=h.create([0,1518500249,1859775393,2400959708,2840853838]),u=h.create([1352829926,1548603684,1836072691,2053994217,0]),v=l.RIPEMD160=m.extend({_doReset:function(){this._hash=h.create([1732584193,4023233417,2562383102,271733878,3285377520])},_doProcessBlock:function(b,D){for(var _=0;_<16;_++){var S=D+_,C=b[S];b[S]=(C<<8|C>>>24)&16711935|(C<<24|C>>>8)&4278255360}var k=this._hash.words,$=f.words,z=u.words,O=i.words,W=n.words,Y=r.words,Q=c.words,N,I,P,A,F,T,w,q,X,L;T=N=k[0],w=I=k[1],q=P=k[2],X=A=k[3],L=F=k[4];for(var H,_=0;_<80;_+=1)H=N+b[D+O[_]]|0,_<16?H+=B(I,P,A)+$[0]:_<32?H+=V(I,P,A)+$[1]:_<48?H+=d(I,P,A)+$[2]:_<64?H+=p(I,P,A)+$[3]:H+=x(I,P,A)+$[4],H=H|0,H=y(H,Y[_]),H=H+F|0,N=F,F=A,A=y(P,10),P=I,I=H,H=T+b[D+W[_]]|0,_<16?H+=x(w,q,X)+z[0]:_<32?H+=p(w,q,X)+z[1]:_<48?H+=d(w,q,X)+z[2]:_<64?H+=V(w,q,X)+z[3]:H+=B(w,q,X)+z[4],H=H|0,H=y(H,Q[_]),H=H+L|0,T=L,L=X,X=y(q,10),q=w,w=H;H=k[1]+P+X|0,k[1]=k[2]+A+L|0,k[2]=k[3]+F+T|0,k[3]=k[4]+N+w|0,k[4]=k[0]+I+q|0,k[0]=H},_doFinalize:function(){var b=this._data,D=b.words,_=this._nDataBytes*8,S=b.sigBytes*8;D[S>>>5]|=128<<24-S%32,D[(S+64>>>9<<4)+14]=(_<<8|_>>>24)&16711935|(_<<24|_>>>8)&4278255360,b.sigBytes=(D.length+1)*4,this._process();for(var C=this._hash,k=C.words,$=0;$<5;$++){var z=k[$];k[$]=(z<<8|z>>>24)&16711935|(z<<24|z>>>8)&4278255360}return C},clone:function(){var b=m.clone.call(this);return b._hash=this._hash.clone(),b}});function B(b,D,_){return b^D^_}function V(b,D,_){return b&D|~b&_}function d(b,D,_){return(b|~D)^_}function p(b,D,_){return b&_|D&~_}function x(b,D,_){return b^(D|~_)}function y(b,D){return b<<D|b>>>32-D}t.RIPEMD160=m._createHelper(v),t.HmacRIPEMD160=m._createHmacHelper(v)}(),o.RIPEMD160})}(yt)),yt.exports}var Ct={exports:{}},Bo;function Bt(){return Bo||(Bo=1,function(g,E){(function(o,a){g.exports=a(ee())})(J,function(o){(function(){var a=o,t=a.lib,s=t.Base,h=a.enc,m=h.Utf8,l=a.algo;l.HMAC=s.extend({init:function(i,n){i=this._hasher=new i.init,typeof n=="string"&&(n=m.parse(n));var r=i.blockSize,c=r*4;n.sigBytes>c&&(n=i.finalize(n)),n.clamp();for(var f=this._oKey=n.clone(),u=this._iKey=n.clone(),v=f.words,B=u.words,V=0;V<r;V++)v[V]^=1549556828,B[V]^=909522486;f.sigBytes=u.sigBytes=c,this.reset()},reset:function(){var i=this._hasher;i.reset(),i.update(this._iKey)},update:function(i){return this._hasher.update(i),this},finalize:function(i){var n=this._hasher,r=n.finalize(i);n.reset();var c=n.finalize(this._oKey.clone().concat(r));return c}})})()})}(Ct)),Ct.exports}var kt={exports:{}},ko;function zc(){return ko||(ko=1,function(g,E){(function(o,a,t){g.exports=a(ee(),gt(),Bt())})(J,function(o){return function(){var a=o,t=a.lib,s=t.Base,h=t.WordArray,m=a.algo,l=m.SHA256,i=m.HMAC,n=m.PBKDF2=s.extend({cfg:s.extend({keySize:128/32,hasher:l,iterations:25e4}),init:function(r){this.cfg=this.cfg.extend(r)},compute:function(r,c){for(var f=this.cfg,u=i.create(f.hasher,r),v=h.create(),B=h.create([1]),V=v.words,d=B.words,p=f.keySize,x=f.iterations;V.length<p;){var y=u.update(c).finalize(B);u.reset();for(var b=y.words,D=b.length,_=y,S=1;S<x;S++){_=u.finalize(_),u.reset();for(var C=_.words,k=0;k<D;k++)b[k]^=C[k]}v.concat(y),d[0]++}return v.sigBytes=p*4,v}});a.PBKDF2=function(r,c,f){return n.create(f).compute(r,c)}}(),o.PBKDF2})}(kt)),kt.exports}var Nt={exports:{}},No;function ye(){return No||(No=1,function(g,E){(function(o,a,t){g.exports=a(ee(),uo(),Bt())})(J,function(o){return function(){var a=o,t=a.lib,s=t.Base,h=t.WordArray,m=a.algo,l=m.MD5,i=m.EvpKDF=s.extend({cfg:s.extend({keySize:128/32,hasher:l,iterations:1}),init:function(n){this.cfg=this.cfg.extend(n)},compute:function(n,r){for(var c,f=this.cfg,u=f.hasher.create(),v=h.create(),B=v.words,V=f.keySize,d=f.iterations;B.length<V;){c&&u.update(c),c=u.update(n).finalize(r),u.reset();for(var p=1;p<d;p++)c=u.finalize(c),u.reset();v.concat(c)}return v.sigBytes=V*4,v}});a.EvpKDF=function(n,r,c){return i.create(c).compute(n,r)}}(),o.EvpKDF})}(Nt)),Nt.exports}var Vt={exports:{}},Vo;function le(){return Vo||(Vo=1,function(g,E){(function(o,a,t){g.exports=a(ee(),ye())})(J,function(o){o.lib.Cipher||function(a){var t=o,s=t.lib,h=s.Base,m=s.WordArray,l=s.BufferedBlockAlgorithm,i=t.enc;i.Utf8;var n=i.Base64,r=t.algo,c=r.EvpKDF,f=s.Cipher=l.extend({cfg:h.extend(),createEncryptor:function(C,k){return this.create(this._ENC_XFORM_MODE,C,k)},createDecryptor:function(C,k){return this.create(this._DEC_XFORM_MODE,C,k)},init:function(C,k,$){this.cfg=this.cfg.extend($),this._xformMode=C,this._key=k,this.reset()},reset:function(){l.reset.call(this),this._doReset()},process:function(C){return this._append(C),this._process()},finalize:function(C){C&&this._append(C);var k=this._doFinalize();return k},keySize:128/32,ivSize:128/32,_ENC_XFORM_MODE:1,_DEC_XFORM_MODE:2,_createHelper:function(){function C(k){return typeof k=="string"?S:b}return function(k){return{encrypt:function($,z,O){return C(z).encrypt(k,$,z,O)},decrypt:function($,z,O){return C(z).decrypt(k,$,z,O)}}}}()});s.StreamCipher=f.extend({_doFinalize:function(){var C=this._process(!0);return C},blockSize:1});var u=t.mode={},v=s.BlockCipherMode=h.extend({createEncryptor:function(C,k){return this.Encryptor.create(C,k)},createDecryptor:function(C,k){return this.Decryptor.create(C,k)},init:function(C,k){this._cipher=C,this._iv=k}}),B=u.CBC=function(){var C=v.extend();C.Encryptor=C.extend({processBlock:function($,z){var O=this._cipher,W=O.blockSize;k.call(this,$,z,W),O.encryptBlock($,z),this._prevBlock=$.slice(z,z+W)}}),C.Decryptor=C.extend({processBlock:function($,z){var O=this._cipher,W=O.blockSize,Y=$.slice(z,z+W);O.decryptBlock($,z),k.call(this,$,z,W),this._prevBlock=Y}});function k($,z,O){var W,Y=this._iv;Y?(W=Y,this._iv=a):W=this._prevBlock;for(var Q=0;Q<O;Q++)$[z+Q]^=W[Q]}return C}(),V=t.pad={},d=V.Pkcs7={pad:function(C,k){for(var $=k*4,z=$-C.sigBytes%$,O=z<<24|z<<16|z<<8|z,W=[],Y=0;Y<z;Y+=4)W.push(O);var Q=m.create(W,z);C.concat(Q)},unpad:function(C){var k=C.words[C.sigBytes-1>>>2]&255;C.sigBytes-=k}};s.BlockCipher=f.extend({cfg:f.cfg.extend({mode:B,padding:d}),reset:function(){var C;f.reset.call(this);var k=this.cfg,$=k.iv,z=k.mode;this._xformMode==this._ENC_XFORM_MODE?C=z.createEncryptor:(C=z.createDecryptor,this._minBufferSize=1),this._mode&&this._mode.__creator==C?this._mode.init(this,$&&$.words):(this._mode=C.call(z,this,$&&$.words),this._mode.__creator=C)},_doProcessBlock:function(C,k){this._mode.processBlock(C,k)},_doFinalize:function(){var C,k=this.cfg.padding;return this._xformMode==this._ENC_XFORM_MODE?(k.pad(this._data,this.blockSize),C=this._process(!0)):(C=this._process(!0),k.unpad(C)),C},blockSize:128/32});var p=s.CipherParams=h.extend({init:function(C){this.mixIn(C)},toString:function(C){return(C||this.formatter).stringify(this)}}),x=t.format={},y=x.OpenSSL={stringify:function(C){var k,$=C.ciphertext,z=C.salt;return z?k=m.create([1398893684,1701076831]).concat(z).concat($):k=$,k.toString(n)},parse:function(C){var k,$=n.parse(C),z=$.words;return z[0]==1398893684&&z[1]==1701076831&&(k=m.create(z.slice(2,4)),z.splice(0,4),$.sigBytes-=16),p.create({ciphertext:$,salt:k})}},b=s.SerializableCipher=h.extend({cfg:h.extend({format:y}),encrypt:function(C,k,$,z){z=this.cfg.extend(z);var O=C.createEncryptor($,z),W=O.finalize(k),Y=O.cfg;return p.create({ciphertext:W,key:$,iv:Y.iv,algorithm:C,mode:Y.mode,padding:Y.padding,blockSize:C.blockSize,formatter:z.format})},decrypt:function(C,k,$,z){z=this.cfg.extend(z),k=this._parse(k,z.format);var O=C.createDecryptor($,z).finalize(k.ciphertext);return O},_parse:function(C,k){return typeof C=="string"?k.parse(C,this):C}}),D=t.kdf={},_=D.OpenSSL={execute:function(C,k,$,z,O){if(z||(z=m.random(64/8)),O)var W=c.create({keySize:k+$,hasher:O}).compute(C,z);else var W=c.create({keySize:k+$}).compute(C,z);var Y=m.create(W.words.slice(k),$*4);return W.sigBytes=k*4,p.create({key:W,iv:Y,salt:z})}},S=s.PasswordBasedCipher=b.extend({cfg:b.cfg.extend({kdf:_}),encrypt:function(C,k,$,z){z=this.cfg.extend(z);var O=z.kdf.execute($,C.keySize,C.ivSize,z.salt,z.hasher);z.iv=O.iv;var W=b.encrypt.call(this,C,k,O.key,z);return W.mixIn(O),W},decrypt:function(C,k,$,z){z=this.cfg.extend(z),k=this._parse(k,z.format);var O=z.kdf.execute($,C.keySize,C.ivSize,k.salt,z.hasher);z.iv=O.iv;var W=b.decrypt.call(this,C,k,O.key,z);return W}})}()})}(Vt)),Vt.exports}var Dt={exports:{}},Do;function Tc(){return Do||(Do=1,function(g,E){(function(o,a,t){g.exports=a(ee(),le())})(J,function(o){return o.mode.CFB=function(){var a=o.lib.BlockCipherMode.extend();a.Encryptor=a.extend({processBlock:function(s,h){var m=this._cipher,l=m.blockSize;t.call(this,s,h,l,m),this._prevBlock=s.slice(h,h+l)}}),a.Decryptor=a.extend({processBlock:function(s,h){var m=this._cipher,l=m.blockSize,i=s.slice(h,h+l);t.call(this,s,h,l,m),this._prevBlock=i}});function t(s,h,m,l){var i,n=this._iv;n?(i=n.slice(0),this._iv=void 0):i=this._prevBlock,l.encryptBlock(i,0);for(var r=0;r<m;r++)s[h+r]^=i[r]}return a}(),o.mode.CFB})}(Dt)),Dt.exports}var At={exports:{}},Ao;function Pc(){return Ao||(Ao=1,function(g,E){(function(o,a,t){g.exports=a(ee(),le())})(J,function(o){return o.mode.CTR=function(){var a=o.lib.BlockCipherMode.extend(),t=a.Encryptor=a.extend({processBlock:function(s,h){var m=this._cipher,l=m.blockSize,i=this._iv,n=this._counter;i&&(n=this._counter=i.slice(0),this._iv=void 0);var r=n.slice(0);m.encryptBlock(r,0),n[l-1]=n[l-1]+1|0;for(var c=0;c<l;c++)s[h+c]^=r[c]}});return a.Decryptor=t,a}(),o.mode.CTR})}(At)),At.exports}var _t={exports:{}},_o;function Rc(){return _o||(_o=1,function(g,E){(function(o,a,t){g.exports=a(ee(),le())})(J,function(o){/** @preserve
|
|
31
|
+
* Counter block mode compatible with Dr Brian Gladman fileenc.c
|
|
32
|
+
* derived from CryptoJS.mode.CTR
|
|
33
|
+
* Jan Hruby jhruby.web@gmail.com
|
|
34
|
+
*/return o.mode.CTRGladman=function(){var a=o.lib.BlockCipherMode.extend();function t(m){if((m>>24&255)===255){var l=m>>16&255,i=m>>8&255,n=m&255;l===255?(l=0,i===255?(i=0,n===255?n=0:++n):++i):++l,m=0,m+=l<<16,m+=i<<8,m+=n}else m+=1<<24;return m}function s(m){return(m[0]=t(m[0]))===0&&(m[1]=t(m[1])),m}var h=a.Encryptor=a.extend({processBlock:function(m,l){var i=this._cipher,n=i.blockSize,r=this._iv,c=this._counter;r&&(c=this._counter=r.slice(0),this._iv=void 0),s(c);var f=c.slice(0);i.encryptBlock(f,0);for(var u=0;u<n;u++)m[l+u]^=f[u]}});return a.Decryptor=h,a}(),o.mode.CTRGladman})}(_t)),_t.exports}var $t={exports:{}},$o;function Mc(){return $o||($o=1,function(g,E){(function(o,a,t){g.exports=a(ee(),le())})(J,function(o){return o.mode.OFB=function(){var a=o.lib.BlockCipherMode.extend(),t=a.Encryptor=a.extend({processBlock:function(s,h){var m=this._cipher,l=m.blockSize,i=this._iv,n=this._keystream;i&&(n=this._keystream=i.slice(0),this._iv=void 0),m.encryptBlock(n,0);for(var r=0;r<l;r++)s[h+r]^=n[r]}});return a.Decryptor=t,a}(),o.mode.OFB})}($t)),$t.exports}var Ft={exports:{}},Fo;function Hc(){return Fo||(Fo=1,function(g,E){(function(o,a,t){g.exports=a(ee(),le())})(J,function(o){return o.mode.ECB=function(){var a=o.lib.BlockCipherMode.extend();return a.Encryptor=a.extend({processBlock:function(t,s){this._cipher.encryptBlock(t,s)}}),a.Decryptor=a.extend({processBlock:function(t,s){this._cipher.decryptBlock(t,s)}}),a}(),o.mode.ECB})}(Ft)),Ft.exports}var wt={exports:{}},wo;function Oc(){return wo||(wo=1,function(g,E){(function(o,a,t){g.exports=a(ee(),le())})(J,function(o){return o.pad.AnsiX923={pad:function(a,t){var s=a.sigBytes,h=t*4,m=h-s%h,l=s+m-1;a.clamp(),a.words[l>>>2]|=m<<24-l%4*8,a.sigBytes+=m},unpad:function(a){var t=a.words[a.sigBytes-1>>>2]&255;a.sigBytes-=t}},o.pad.Ansix923})}(wt)),wt.exports}var St={exports:{}},So;function Uc(){return So||(So=1,function(g,E){(function(o,a,t){g.exports=a(ee(),le())})(J,function(o){return o.pad.Iso10126={pad:function(a,t){var s=t*4,h=s-a.sigBytes%s;a.concat(o.lib.WordArray.random(h-1)).concat(o.lib.WordArray.create([h<<24],1))},unpad:function(a){var t=a.words[a.sigBytes-1>>>2]&255;a.sigBytes-=t}},o.pad.Iso10126})}(St)),St.exports}var It={exports:{}},Io;function Lc(){return Io||(Io=1,function(g,E){(function(o,a,t){g.exports=a(ee(),le())})(J,function(o){return o.pad.Iso97971={pad:function(a,t){a.concat(o.lib.WordArray.create([2147483648],1)),o.pad.ZeroPadding.pad(a,t)},unpad:function(a){o.pad.ZeroPadding.unpad(a),a.sigBytes--}},o.pad.Iso97971})}(It)),It.exports}var zt={exports:{}},zo;function Wc(){return zo||(zo=1,function(g,E){(function(o,a,t){g.exports=a(ee(),le())})(J,function(o){return o.pad.ZeroPadding={pad:function(a,t){var s=t*4;a.clamp(),a.sigBytes+=s-(a.sigBytes%s||s)},unpad:function(a){for(var t=a.words,s=a.sigBytes-1,s=a.sigBytes-1;s>=0;s--)if(t[s>>>2]>>>24-s%4*8&255){a.sigBytes=s+1;break}}},o.pad.ZeroPadding})}(zt)),zt.exports}var Tt={exports:{}},To;function qc(){return To||(To=1,function(g,E){(function(o,a,t){g.exports=a(ee(),le())})(J,function(o){return o.pad.NoPadding={pad:function(){},unpad:function(){}},o.pad.NoPadding})}(Tt)),Tt.exports}var Pt={exports:{}},Po;function Gc(){return Po||(Po=1,function(g,E){(function(o,a,t){g.exports=a(ee(),le())})(J,function(o){return function(a){var t=o,s=t.lib,h=s.CipherParams,m=t.enc,l=m.Hex,i=t.format;i.Hex={stringify:function(n){return n.ciphertext.toString(l)},parse:function(n){var r=l.parse(n);return h.create({ciphertext:r})}}}(),o.format.Hex})}(Pt)),Pt.exports}var Rt={exports:{}},Ro;function jc(){return Ro||(Ro=1,function(g,E){(function(o,a,t){g.exports=a(ee(),De(),Ae(),ye(),le())})(J,function(o){return function(){var a=o,t=a.lib,s=t.BlockCipher,h=a.algo,m=[],l=[],i=[],n=[],r=[],c=[],f=[],u=[],v=[],B=[];(function(){for(var p=[],x=0;x<256;x++)x<128?p[x]=x<<1:p[x]=x<<1^283;for(var y=0,b=0,x=0;x<256;x++){var D=b^b<<1^b<<2^b<<3^b<<4;D=D>>>8^D&255^99,m[y]=D,l[D]=y;var _=p[y],S=p[_],C=p[S],k=p[D]*257^D*16843008;i[y]=k<<24|k>>>8,n[y]=k<<16|k>>>16,r[y]=k<<8|k>>>24,c[y]=k;var k=C*16843009^S*65537^_*257^y*16843008;f[D]=k<<24|k>>>8,u[D]=k<<16|k>>>16,v[D]=k<<8|k>>>24,B[D]=k,y?(y=_^p[p[p[C^_]]],b^=p[p[b]]):y=b=1}})();var V=[0,1,2,4,8,16,32,64,128,27,54],d=h.AES=s.extend({_doReset:function(){var p;if(!(this._nRounds&&this._keyPriorReset===this._key)){for(var x=this._keyPriorReset=this._key,y=x.words,b=x.sigBytes/4,D=this._nRounds=b+6,_=(D+1)*4,S=this._keySchedule=[],C=0;C<_;C++)C<b?S[C]=y[C]:(p=S[C-1],C%b?b>6&&C%b==4&&(p=m[p>>>24]<<24|m[p>>>16&255]<<16|m[p>>>8&255]<<8|m[p&255]):(p=p<<8|p>>>24,p=m[p>>>24]<<24|m[p>>>16&255]<<16|m[p>>>8&255]<<8|m[p&255],p^=V[C/b|0]<<24),S[C]=S[C-b]^p);for(var k=this._invKeySchedule=[],$=0;$<_;$++){var C=_-$;if($%4)var p=S[C];else var p=S[C-4];$<4||C<=4?k[$]=p:k[$]=f[m[p>>>24]]^u[m[p>>>16&255]]^v[m[p>>>8&255]]^B[m[p&255]]}}},encryptBlock:function(p,x){this._doCryptBlock(p,x,this._keySchedule,i,n,r,c,m)},decryptBlock:function(p,x){var y=p[x+1];p[x+1]=p[x+3],p[x+3]=y,this._doCryptBlock(p,x,this._invKeySchedule,f,u,v,B,l);var y=p[x+1];p[x+1]=p[x+3],p[x+3]=y},_doCryptBlock:function(p,x,y,b,D,_,S,C){for(var k=this._nRounds,$=p[x]^y[0],z=p[x+1]^y[1],O=p[x+2]^y[2],W=p[x+3]^y[3],Y=4,Q=1;Q<k;Q++){var N=b[$>>>24]^D[z>>>16&255]^_[O>>>8&255]^S[W&255]^y[Y++],I=b[z>>>24]^D[O>>>16&255]^_[W>>>8&255]^S[$&255]^y[Y++],P=b[O>>>24]^D[W>>>16&255]^_[$>>>8&255]^S[z&255]^y[Y++],A=b[W>>>24]^D[$>>>16&255]^_[z>>>8&255]^S[O&255]^y[Y++];$=N,z=I,O=P,W=A}var N=(C[$>>>24]<<24|C[z>>>16&255]<<16|C[O>>>8&255]<<8|C[W&255])^y[Y++],I=(C[z>>>24]<<24|C[O>>>16&255]<<16|C[W>>>8&255]<<8|C[$&255])^y[Y++],P=(C[O>>>24]<<24|C[W>>>16&255]<<16|C[$>>>8&255]<<8|C[z&255])^y[Y++],A=(C[W>>>24]<<24|C[$>>>16&255]<<16|C[z>>>8&255]<<8|C[O&255])^y[Y++];p[x]=N,p[x+1]=I,p[x+2]=P,p[x+3]=A},keySize:256/32});a.AES=s._createHelper(d)}(),o.AES})}(Rt)),Rt.exports}var Mt={exports:{}},Mo;function Xc(){return Mo||(Mo=1,function(g,E){(function(o,a,t){g.exports=a(ee(),De(),Ae(),ye(),le())})(J,function(o){return function(){var a=o,t=a.lib,s=t.WordArray,h=t.BlockCipher,m=a.algo,l=[57,49,41,33,25,17,9,1,58,50,42,34,26,18,10,2,59,51,43,35,27,19,11,3,60,52,44,36,63,55,47,39,31,23,15,7,62,54,46,38,30,22,14,6,61,53,45,37,29,21,13,5,28,20,12,4],i=[14,17,11,24,1,5,3,28,15,6,21,10,23,19,12,4,26,8,16,7,27,20,13,2,41,52,31,37,47,55,30,40,51,45,33,48,44,49,39,56,34,53,46,42,50,36,29,32],n=[1,2,4,6,8,10,12,14,15,17,19,21,23,25,27,28],r=[{0:8421888,268435456:32768,536870912:8421378,805306368:2,1073741824:512,1342177280:8421890,1610612736:8389122,1879048192:8388608,2147483648:514,2415919104:8389120,2684354560:33280,2952790016:8421376,3221225472:32770,3489660928:8388610,3758096384:0,4026531840:33282,134217728:0,402653184:8421890,671088640:33282,939524096:32768,1207959552:8421888,1476395008:512,1744830464:8421378,2013265920:2,2281701376:8389120,2550136832:33280,2818572288:8421376,3087007744:8389122,3355443200:8388610,3623878656:32770,3892314112:514,4160749568:8388608,1:32768,268435457:2,536870913:8421888,805306369:8388608,1073741825:8421378,1342177281:33280,1610612737:512,1879048193:8389122,2147483649:8421890,2415919105:8421376,2684354561:8388610,2952790017:33282,3221225473:514,3489660929:8389120,3758096385:32770,4026531841:0,134217729:8421890,402653185:8421376,671088641:8388608,939524097:512,1207959553:32768,1476395009:8388610,1744830465:2,2013265921:33282,2281701377:32770,2550136833:8389122,2818572289:514,3087007745:8421888,3355443201:8389120,3623878657:0,3892314113:33280,4160749569:8421378},{0:1074282512,16777216:16384,33554432:524288,50331648:1074266128,67108864:1073741840,83886080:1074282496,100663296:1073758208,117440512:16,134217728:540672,150994944:1073758224,167772160:1073741824,184549376:540688,201326592:524304,218103808:0,234881024:16400,251658240:1074266112,8388608:1073758208,25165824:540688,41943040:16,58720256:1073758224,75497472:1074282512,92274688:1073741824,109051904:524288,125829120:1074266128,142606336:524304,159383552:0,176160768:16384,192937984:1074266112,209715200:1073741840,226492416:540672,243269632:1074282496,260046848:16400,268435456:0,285212672:1074266128,301989888:1073758224,318767104:1074282496,335544320:1074266112,352321536:16,369098752:540688,385875968:16384,402653184:16400,419430400:524288,436207616:524304,452984832:1073741840,469762048:540672,486539264:1073758208,503316480:1073741824,520093696:1074282512,276824064:540688,293601280:524288,310378496:1074266112,327155712:16384,343932928:1073758208,360710144:1074282512,377487360:16,394264576:1073741824,411041792:1074282496,427819008:1073741840,444596224:1073758224,461373440:524304,478150656:0,494927872:16400,511705088:1074266128,528482304:540672},{0:260,1048576:0,2097152:67109120,3145728:65796,4194304:65540,5242880:67108868,6291456:67174660,7340032:67174400,8388608:67108864,9437184:67174656,10485760:65792,11534336:67174404,12582912:67109124,13631488:65536,14680064:4,15728640:256,524288:67174656,1572864:67174404,2621440:0,3670016:67109120,4718592:67108868,5767168:65536,6815744:65540,7864320:260,8912896:4,9961472:256,11010048:67174400,12058624:65796,13107200:65792,14155776:67109124,15204352:67174660,16252928:67108864,16777216:67174656,17825792:65540,18874368:65536,19922944:67109120,20971520:256,22020096:67174660,23068672:67108868,24117248:0,25165824:67109124,26214400:67108864,27262976:4,28311552:65792,29360128:67174400,30408704:260,31457280:65796,32505856:67174404,17301504:67108864,18350080:260,19398656:67174656,20447232:0,21495808:65540,22544384:67109120,23592960:256,24641536:67174404,25690112:65536,26738688:67174660,27787264:65796,28835840:67108868,29884416:67109124,30932992:67174400,31981568:4,33030144:65792},{0:2151682048,65536:2147487808,131072:4198464,196608:2151677952,262144:0,327680:4198400,393216:2147483712,458752:4194368,524288:2147483648,589824:4194304,655360:64,720896:2147487744,786432:2151678016,851968:4160,917504:4096,983040:2151682112,32768:2147487808,98304:64,163840:2151678016,229376:2147487744,294912:4198400,360448:2151682112,425984:0,491520:2151677952,557056:4096,622592:2151682048,688128:4194304,753664:4160,819200:2147483648,884736:4194368,950272:4198464,1015808:2147483712,1048576:4194368,1114112:4198400,1179648:2147483712,1245184:0,1310720:4160,1376256:2151678016,1441792:2151682048,1507328:2147487808,1572864:2151682112,1638400:2147483648,1703936:2151677952,1769472:4198464,1835008:2147487744,1900544:4194304,1966080:64,2031616:4096,1081344:2151677952,1146880:2151682112,1212416:0,1277952:4198400,1343488:4194368,1409024:2147483648,1474560:2147487808,1540096:64,1605632:2147483712,1671168:4096,1736704:2147487744,1802240:2151678016,1867776:4160,1933312:2151682048,1998848:4194304,2064384:4198464},{0:128,4096:17039360,8192:262144,12288:536870912,16384:537133184,20480:16777344,24576:553648256,28672:262272,32768:16777216,36864:537133056,40960:536871040,45056:553910400,49152:553910272,53248:0,57344:17039488,61440:553648128,2048:17039488,6144:553648256,10240:128,14336:17039360,18432:262144,22528:537133184,26624:553910272,30720:536870912,34816:537133056,38912:0,43008:553910400,47104:16777344,51200:536871040,55296:553648128,59392:16777216,63488:262272,65536:262144,69632:128,73728:536870912,77824:553648256,81920:16777344,86016:553910272,90112:537133184,94208:16777216,98304:553910400,102400:553648128,106496:17039360,110592:537133056,114688:262272,118784:536871040,122880:0,126976:17039488,67584:553648256,71680:16777216,75776:17039360,79872:537133184,83968:536870912,88064:17039488,92160:128,96256:553910272,100352:262272,104448:553910400,108544:0,112640:553648128,116736:16777344,120832:262144,124928:537133056,129024:536871040},{0:268435464,256:8192,512:270532608,768:270540808,1024:268443648,1280:2097152,1536:2097160,1792:268435456,2048:0,2304:268443656,2560:2105344,2816:8,3072:270532616,3328:2105352,3584:8200,3840:270540800,128:270532608,384:270540808,640:8,896:2097152,1152:2105352,1408:268435464,1664:268443648,1920:8200,2176:2097160,2432:8192,2688:268443656,2944:270532616,3200:0,3456:270540800,3712:2105344,3968:268435456,4096:268443648,4352:270532616,4608:270540808,4864:8200,5120:2097152,5376:268435456,5632:268435464,5888:2105344,6144:2105352,6400:0,6656:8,6912:270532608,7168:8192,7424:268443656,7680:270540800,7936:2097160,4224:8,4480:2105344,4736:2097152,4992:268435464,5248:268443648,5504:8200,5760:270540808,6016:270532608,6272:270540800,6528:270532616,6784:8192,7040:2105352,7296:2097160,7552:0,7808:268435456,8064:268443656},{0:1048576,16:33555457,32:1024,48:1049601,64:34604033,80:0,96:1,112:34603009,128:33555456,144:1048577,160:33554433,176:34604032,192:34603008,208:1025,224:1049600,240:33554432,8:34603009,24:0,40:33555457,56:34604032,72:1048576,88:33554433,104:33554432,120:1025,136:1049601,152:33555456,168:34603008,184:1048577,200:1024,216:34604033,232:1,248:1049600,256:33554432,272:1048576,288:33555457,304:34603009,320:1048577,336:33555456,352:34604032,368:1049601,384:1025,400:34604033,416:1049600,432:1,448:0,464:34603008,480:33554433,496:1024,264:1049600,280:33555457,296:34603009,312:1,328:33554432,344:1048576,360:1025,376:34604032,392:33554433,408:34603008,424:0,440:34604033,456:1049601,472:1024,488:33555456,504:1048577},{0:134219808,1:131072,2:134217728,3:32,4:131104,5:134350880,6:134350848,7:2048,8:134348800,9:134219776,10:133120,11:134348832,12:2080,13:0,14:134217760,15:133152,2147483648:2048,2147483649:134350880,2147483650:134219808,2147483651:134217728,2147483652:134348800,2147483653:133120,2147483654:133152,2147483655:32,2147483656:134217760,2147483657:2080,2147483658:131104,2147483659:134350848,2147483660:0,2147483661:134348832,2147483662:134219776,2147483663:131072,16:133152,17:134350848,18:32,19:2048,20:134219776,21:134217760,22:134348832,23:131072,24:0,25:131104,26:134348800,27:134219808,28:134350880,29:133120,30:2080,31:134217728,2147483664:131072,2147483665:2048,2147483666:134348832,2147483667:133152,2147483668:32,2147483669:134348800,2147483670:134217728,2147483671:134219808,2147483672:134350880,2147483673:134217760,2147483674:134219776,2147483675:0,2147483676:133120,2147483677:2080,2147483678:131104,2147483679:134350848}],c=[4160749569,528482304,33030144,2064384,129024,8064,504,2147483679],f=m.DES=h.extend({_doReset:function(){for(var V=this._key,d=V.words,p=[],x=0;x<56;x++){var y=l[x]-1;p[x]=d[y>>>5]>>>31-y%32&1}for(var b=this._subKeys=[],D=0;D<16;D++){for(var _=b[D]=[],S=n[D],x=0;x<24;x++)_[x/6|0]|=p[(i[x]-1+S)%28]<<31-x%6,_[4+(x/6|0)]|=p[28+(i[x+24]-1+S)%28]<<31-x%6;_[0]=_[0]<<1|_[0]>>>31;for(var x=1;x<7;x++)_[x]=_[x]>>>(x-1)*4+3;_[7]=_[7]<<5|_[7]>>>27}for(var C=this._invSubKeys=[],x=0;x<16;x++)C[x]=b[15-x]},encryptBlock:function(V,d){this._doCryptBlock(V,d,this._subKeys)},decryptBlock:function(V,d){this._doCryptBlock(V,d,this._invSubKeys)},_doCryptBlock:function(V,d,p){this._lBlock=V[d],this._rBlock=V[d+1],u.call(this,4,252645135),u.call(this,16,65535),v.call(this,2,858993459),v.call(this,8,16711935),u.call(this,1,1431655765);for(var x=0;x<16;x++){for(var y=p[x],b=this._lBlock,D=this._rBlock,_=0,S=0;S<8;S++)_|=r[S][((D^y[S])&c[S])>>>0];this._lBlock=D,this._rBlock=b^_}var C=this._lBlock;this._lBlock=this._rBlock,this._rBlock=C,u.call(this,1,1431655765),v.call(this,8,16711935),v.call(this,2,858993459),u.call(this,16,65535),u.call(this,4,252645135),V[d]=this._lBlock,V[d+1]=this._rBlock},keySize:64/32,ivSize:64/32,blockSize:64/32});function u(V,d){var p=(this._lBlock>>>V^this._rBlock)&d;this._rBlock^=p,this._lBlock^=p<<V}function v(V,d){var p=(this._rBlock>>>V^this._lBlock)&d;this._lBlock^=p,this._rBlock^=p<<V}a.DES=h._createHelper(f);var B=m.TripleDES=h.extend({_doReset:function(){var V=this._key,d=V.words;if(d.length!==2&&d.length!==4&&d.length<6)throw new Error("Invalid key length - 3DES requires the key length to be 64, 128, 192 or >192.");var p=d.slice(0,2),x=d.length<4?d.slice(0,2):d.slice(2,4),y=d.length<6?d.slice(0,2):d.slice(4,6);this._des1=f.createEncryptor(s.create(p)),this._des2=f.createEncryptor(s.create(x)),this._des3=f.createEncryptor(s.create(y))},encryptBlock:function(V,d){this._des1.encryptBlock(V,d),this._des2.decryptBlock(V,d),this._des3.encryptBlock(V,d)},decryptBlock:function(V,d){this._des3.decryptBlock(V,d),this._des2.encryptBlock(V,d),this._des1.decryptBlock(V,d)},keySize:192/32,ivSize:64/32,blockSize:64/32});a.TripleDES=h._createHelper(B)}(),o.TripleDES})}(Mt)),Mt.exports}var Ht={exports:{}},Ho;function Yc(){return Ho||(Ho=1,function(g,E){(function(o,a,t){g.exports=a(ee(),De(),Ae(),ye(),le())})(J,function(o){return function(){var a=o,t=a.lib,s=t.StreamCipher,h=a.algo,m=h.RC4=s.extend({_doReset:function(){for(var n=this._key,r=n.words,c=n.sigBytes,f=this._S=[],u=0;u<256;u++)f[u]=u;for(var u=0,v=0;u<256;u++){var B=u%c,V=r[B>>>2]>>>24-B%4*8&255;v=(v+f[u]+V)%256;var d=f[u];f[u]=f[v],f[v]=d}this._i=this._j=0},_doProcessBlock:function(n,r){n[r]^=l.call(this)},keySize:256/32,ivSize:0});function l(){for(var n=this._S,r=this._i,c=this._j,f=0,u=0;u<4;u++){r=(r+1)%256,c=(c+n[r])%256;var v=n[r];n[r]=n[c],n[c]=v,f|=n[(n[r]+n[c])%256]<<24-u*8}return this._i=r,this._j=c,f}a.RC4=s._createHelper(m);var i=h.RC4Drop=m.extend({cfg:m.cfg.extend({drop:192}),_doReset:function(){m._doReset.call(this);for(var n=this.cfg.drop;n>0;n--)l.call(this)}});a.RC4Drop=s._createHelper(i)}(),o.RC4})}(Ht)),Ht.exports}var Ot={exports:{}},Oo;function Kc(){return Oo||(Oo=1,function(g,E){(function(o,a,t){g.exports=a(ee(),De(),Ae(),ye(),le())})(J,function(o){return function(){var a=o,t=a.lib,s=t.StreamCipher,h=a.algo,m=[],l=[],i=[],n=h.Rabbit=s.extend({_doReset:function(){for(var c=this._key.words,f=this.cfg.iv,u=0;u<4;u++)c[u]=(c[u]<<8|c[u]>>>24)&16711935|(c[u]<<24|c[u]>>>8)&4278255360;var v=this._X=[c[0],c[3]<<16|c[2]>>>16,c[1],c[0]<<16|c[3]>>>16,c[2],c[1]<<16|c[0]>>>16,c[3],c[2]<<16|c[1]>>>16],B=this._C=[c[2]<<16|c[2]>>>16,c[0]&4294901760|c[1]&65535,c[3]<<16|c[3]>>>16,c[1]&4294901760|c[2]&65535,c[0]<<16|c[0]>>>16,c[2]&4294901760|c[3]&65535,c[1]<<16|c[1]>>>16,c[3]&4294901760|c[0]&65535];this._b=0;for(var u=0;u<4;u++)r.call(this);for(var u=0;u<8;u++)B[u]^=v[u+4&7];if(f){var V=f.words,d=V[0],p=V[1],x=(d<<8|d>>>24)&16711935|(d<<24|d>>>8)&4278255360,y=(p<<8|p>>>24)&16711935|(p<<24|p>>>8)&4278255360,b=x>>>16|y&4294901760,D=y<<16|x&65535;B[0]^=x,B[1]^=b,B[2]^=y,B[3]^=D,B[4]^=x,B[5]^=b,B[6]^=y,B[7]^=D;for(var u=0;u<4;u++)r.call(this)}},_doProcessBlock:function(c,f){var u=this._X;r.call(this),m[0]=u[0]^u[5]>>>16^u[3]<<16,m[1]=u[2]^u[7]>>>16^u[5]<<16,m[2]=u[4]^u[1]>>>16^u[7]<<16,m[3]=u[6]^u[3]>>>16^u[1]<<16;for(var v=0;v<4;v++)m[v]=(m[v]<<8|m[v]>>>24)&16711935|(m[v]<<24|m[v]>>>8)&4278255360,c[f+v]^=m[v]},blockSize:128/32,ivSize:64/32});function r(){for(var c=this._X,f=this._C,u=0;u<8;u++)l[u]=f[u];f[0]=f[0]+1295307597+this._b|0,f[1]=f[1]+3545052371+(f[0]>>>0<l[0]>>>0?1:0)|0,f[2]=f[2]+886263092+(f[1]>>>0<l[1]>>>0?1:0)|0,f[3]=f[3]+1295307597+(f[2]>>>0<l[2]>>>0?1:0)|0,f[4]=f[4]+3545052371+(f[3]>>>0<l[3]>>>0?1:0)|0,f[5]=f[5]+886263092+(f[4]>>>0<l[4]>>>0?1:0)|0,f[6]=f[6]+1295307597+(f[5]>>>0<l[5]>>>0?1:0)|0,f[7]=f[7]+3545052371+(f[6]>>>0<l[6]>>>0?1:0)|0,this._b=f[7]>>>0<l[7]>>>0?1:0;for(var u=0;u<8;u++){var v=c[u]+f[u],B=v&65535,V=v>>>16,d=((B*B>>>17)+B*V>>>15)+V*V,p=((v&4294901760)*v|0)+((v&65535)*v|0);i[u]=d^p}c[0]=i[0]+(i[7]<<16|i[7]>>>16)+(i[6]<<16|i[6]>>>16)|0,c[1]=i[1]+(i[0]<<8|i[0]>>>24)+i[7]|0,c[2]=i[2]+(i[1]<<16|i[1]>>>16)+(i[0]<<16|i[0]>>>16)|0,c[3]=i[3]+(i[2]<<8|i[2]>>>24)+i[1]|0,c[4]=i[4]+(i[3]<<16|i[3]>>>16)+(i[2]<<16|i[2]>>>16)|0,c[5]=i[5]+(i[4]<<8|i[4]>>>24)+i[3]|0,c[6]=i[6]+(i[5]<<16|i[5]>>>16)+(i[4]<<16|i[4]>>>16)|0,c[7]=i[7]+(i[6]<<8|i[6]>>>24)+i[5]|0}a.Rabbit=s._createHelper(n)}(),o.Rabbit})}(Ot)),Ot.exports}var Ut={exports:{}},Uo;function Jc(){return Uo||(Uo=1,function(g,E){(function(o,a,t){g.exports=a(ee(),De(),Ae(),ye(),le())})(J,function(o){return function(){var a=o,t=a.lib,s=t.StreamCipher,h=a.algo,m=[],l=[],i=[],n=h.RabbitLegacy=s.extend({_doReset:function(){var c=this._key.words,f=this.cfg.iv,u=this._X=[c[0],c[3]<<16|c[2]>>>16,c[1],c[0]<<16|c[3]>>>16,c[2],c[1]<<16|c[0]>>>16,c[3],c[2]<<16|c[1]>>>16],v=this._C=[c[2]<<16|c[2]>>>16,c[0]&4294901760|c[1]&65535,c[3]<<16|c[3]>>>16,c[1]&4294901760|c[2]&65535,c[0]<<16|c[0]>>>16,c[2]&4294901760|c[3]&65535,c[1]<<16|c[1]>>>16,c[3]&4294901760|c[0]&65535];this._b=0;for(var B=0;B<4;B++)r.call(this);for(var B=0;B<8;B++)v[B]^=u[B+4&7];if(f){var V=f.words,d=V[0],p=V[1],x=(d<<8|d>>>24)&16711935|(d<<24|d>>>8)&4278255360,y=(p<<8|p>>>24)&16711935|(p<<24|p>>>8)&4278255360,b=x>>>16|y&4294901760,D=y<<16|x&65535;v[0]^=x,v[1]^=b,v[2]^=y,v[3]^=D,v[4]^=x,v[5]^=b,v[6]^=y,v[7]^=D;for(var B=0;B<4;B++)r.call(this)}},_doProcessBlock:function(c,f){var u=this._X;r.call(this),m[0]=u[0]^u[5]>>>16^u[3]<<16,m[1]=u[2]^u[7]>>>16^u[5]<<16,m[2]=u[4]^u[1]>>>16^u[7]<<16,m[3]=u[6]^u[3]>>>16^u[1]<<16;for(var v=0;v<4;v++)m[v]=(m[v]<<8|m[v]>>>24)&16711935|(m[v]<<24|m[v]>>>8)&4278255360,c[f+v]^=m[v]},blockSize:128/32,ivSize:64/32});function r(){for(var c=this._X,f=this._C,u=0;u<8;u++)l[u]=f[u];f[0]=f[0]+1295307597+this._b|0,f[1]=f[1]+3545052371+(f[0]>>>0<l[0]>>>0?1:0)|0,f[2]=f[2]+886263092+(f[1]>>>0<l[1]>>>0?1:0)|0,f[3]=f[3]+1295307597+(f[2]>>>0<l[2]>>>0?1:0)|0,f[4]=f[4]+3545052371+(f[3]>>>0<l[3]>>>0?1:0)|0,f[5]=f[5]+886263092+(f[4]>>>0<l[4]>>>0?1:0)|0,f[6]=f[6]+1295307597+(f[5]>>>0<l[5]>>>0?1:0)|0,f[7]=f[7]+3545052371+(f[6]>>>0<l[6]>>>0?1:0)|0,this._b=f[7]>>>0<l[7]>>>0?1:0;for(var u=0;u<8;u++){var v=c[u]+f[u],B=v&65535,V=v>>>16,d=((B*B>>>17)+B*V>>>15)+V*V,p=((v&4294901760)*v|0)+((v&65535)*v|0);i[u]=d^p}c[0]=i[0]+(i[7]<<16|i[7]>>>16)+(i[6]<<16|i[6]>>>16)|0,c[1]=i[1]+(i[0]<<8|i[0]>>>24)+i[7]|0,c[2]=i[2]+(i[1]<<16|i[1]>>>16)+(i[0]<<16|i[0]>>>16)|0,c[3]=i[3]+(i[2]<<8|i[2]>>>24)+i[1]|0,c[4]=i[4]+(i[3]<<16|i[3]>>>16)+(i[2]<<16|i[2]>>>16)|0,c[5]=i[5]+(i[4]<<8|i[4]>>>24)+i[3]|0,c[6]=i[6]+(i[5]<<16|i[5]>>>16)+(i[4]<<16|i[4]>>>16)|0,c[7]=i[7]+(i[6]<<8|i[6]>>>24)+i[5]|0}a.RabbitLegacy=s._createHelper(n)}(),o.RabbitLegacy})}(Ut)),Ut.exports}var Lt={exports:{}},Lo;function Zc(){return Lo||(Lo=1,function(g,E){(function(o,a,t){g.exports=a(ee(),De(),Ae(),ye(),le())})(J,function(o){return function(){var a=o,t=a.lib,s=t.BlockCipher,h=a.algo;const m=16,l=[608135816,2242054355,320440878,57701188,2752067618,698298832,137296536,3964562569,1160258022,953160567,3193202383,887688300,3232508343,3380367581,1065670069,3041331479,2450970073,2306472731],i=[[3509652390,2564797868,805139163,3491422135,3101798381,1780907670,3128725573,4046225305,614570311,3012652279,134345442,2240740374,1667834072,1901547113,2757295779,4103290238,227898511,1921955416,1904987480,2182433518,2069144605,3260701109,2620446009,720527379,3318853667,677414384,3393288472,3101374703,2390351024,1614419982,1822297739,2954791486,3608508353,3174124327,2024746970,1432378464,3864339955,2857741204,1464375394,1676153920,1439316330,715854006,3033291828,289532110,2706671279,2087905683,3018724369,1668267050,732546397,1947742710,3462151702,2609353502,2950085171,1814351708,2050118529,680887927,999245976,1800124847,3300911131,1713906067,1641548236,4213287313,1216130144,1575780402,4018429277,3917837745,3693486850,3949271944,596196993,3549867205,258830323,2213823033,772490370,2760122372,1774776394,2652871518,566650946,4142492826,1728879713,2882767088,1783734482,3629395816,2517608232,2874225571,1861159788,326777828,3124490320,2130389656,2716951837,967770486,1724537150,2185432712,2364442137,1164943284,2105845187,998989502,3765401048,2244026483,1075463327,1455516326,1322494562,910128902,469688178,1117454909,936433444,3490320968,3675253459,1240580251,122909385,2157517691,634681816,4142456567,3825094682,3061402683,2540495037,79693498,3249098678,1084186820,1583128258,426386531,1761308591,1047286709,322548459,995290223,1845252383,2603652396,3431023940,2942221577,3202600964,3727903485,1712269319,422464435,3234572375,1170764815,3523960633,3117677531,1434042557,442511882,3600875718,1076654713,1738483198,4213154764,2393238008,3677496056,1014306527,4251020053,793779912,2902807211,842905082,4246964064,1395751752,1040244610,2656851899,3396308128,445077038,3742853595,3577915638,679411651,2892444358,2354009459,1767581616,3150600392,3791627101,3102740896,284835224,4246832056,1258075500,768725851,2589189241,3069724005,3532540348,1274779536,3789419226,2764799539,1660621633,3471099624,4011903706,913787905,3497959166,737222580,2514213453,2928710040,3937242737,1804850592,3499020752,2949064160,2386320175,2390070455,2415321851,4061277028,2290661394,2416832540,1336762016,1754252060,3520065937,3014181293,791618072,3188594551,3933548030,2332172193,3852520463,3043980520,413987798,3465142937,3030929376,4245938359,2093235073,3534596313,375366246,2157278981,2479649556,555357303,3870105701,2008414854,3344188149,4221384143,3956125452,2067696032,3594591187,2921233993,2428461,544322398,577241275,1471733935,610547355,4027169054,1432588573,1507829418,2025931657,3646575487,545086370,48609733,2200306550,1653985193,298326376,1316178497,3007786442,2064951626,458293330,2589141269,3591329599,3164325604,727753846,2179363840,146436021,1461446943,4069977195,705550613,3059967265,3887724982,4281599278,3313849956,1404054877,2845806497,146425753,1854211946],[1266315497,3048417604,3681880366,3289982499,290971e4,1235738493,2632868024,2414719590,3970600049,1771706367,1449415276,3266420449,422970021,1963543593,2690192192,3826793022,1062508698,1531092325,1804592342,2583117782,2714934279,4024971509,1294809318,4028980673,1289560198,2221992742,1669523910,35572830,157838143,1052438473,1016535060,1802137761,1753167236,1386275462,3080475397,2857371447,1040679964,2145300060,2390574316,1461121720,2956646967,4031777805,4028374788,33600511,2920084762,1018524850,629373528,3691585981,3515945977,2091462646,2486323059,586499841,988145025,935516892,3367335476,2599673255,2839830854,265290510,3972581182,2759138881,3795373465,1005194799,847297441,406762289,1314163512,1332590856,1866599683,4127851711,750260880,613907577,1450815602,3165620655,3734664991,3650291728,3012275730,3704569646,1427272223,778793252,1343938022,2676280711,2052605720,1946737175,3164576444,3914038668,3967478842,3682934266,1661551462,3294938066,4011595847,840292616,3712170807,616741398,312560963,711312465,1351876610,322626781,1910503582,271666773,2175563734,1594956187,70604529,3617834859,1007753275,1495573769,4069517037,2549218298,2663038764,504708206,2263041392,3941167025,2249088522,1514023603,1998579484,1312622330,694541497,2582060303,2151582166,1382467621,776784248,2618340202,3323268794,2497899128,2784771155,503983604,4076293799,907881277,423175695,432175456,1378068232,4145222326,3954048622,3938656102,3820766613,2793130115,2977904593,26017576,3274890735,3194772133,1700274565,1756076034,4006520079,3677328699,720338349,1533947780,354530856,688349552,3973924725,1637815568,332179504,3949051286,53804574,2852348879,3044236432,1282449977,3583942155,3416972820,4006381244,1617046695,2628476075,3002303598,1686838959,431878346,2686675385,1700445008,1080580658,1009431731,832498133,3223435511,2605976345,2271191193,2516031870,1648197032,4164389018,2548247927,300782431,375919233,238389289,3353747414,2531188641,2019080857,1475708069,455242339,2609103871,448939670,3451063019,1395535956,2413381860,1841049896,1491858159,885456874,4264095073,4001119347,1565136089,3898914787,1108368660,540939232,1173283510,2745871338,3681308437,4207628240,3343053890,4016749493,1699691293,1103962373,3625875870,2256883143,3830138730,1031889488,3479347698,1535977030,4236805024,3251091107,2132092099,1774941330,1199868427,1452454533,157007616,2904115357,342012276,595725824,1480756522,206960106,497939518,591360097,863170706,2375253569,3596610801,1814182875,2094937945,3421402208,1082520231,3463918190,2785509508,435703966,3908032597,1641649973,2842273706,3305899714,1510255612,2148256476,2655287854,3276092548,4258621189,236887753,3681803219,274041037,1734335097,3815195456,3317970021,1899903192,1026095262,4050517792,356393447,2410691914,3873677099,3682840055],[3913112168,2491498743,4132185628,2489919796,1091903735,1979897079,3170134830,3567386728,3557303409,857797738,1136121015,1342202287,507115054,2535736646,337727348,3213592640,1301675037,2528481711,1895095763,1721773893,3216771564,62756741,2142006736,835421444,2531993523,1442658625,3659876326,2882144922,676362277,1392781812,170690266,3921047035,1759253602,3611846912,1745797284,664899054,1329594018,3901205900,3045908486,2062866102,2865634940,3543621612,3464012697,1080764994,553557557,3656615353,3996768171,991055499,499776247,1265440854,648242737,3940784050,980351604,3713745714,1749149687,3396870395,4211799374,3640570775,1161844396,3125318951,1431517754,545492359,4268468663,3499529547,1437099964,2702547544,3433638243,2581715763,2787789398,1060185593,1593081372,2418618748,4260947970,69676912,2159744348,86519011,2512459080,3838209314,1220612927,3339683548,133810670,1090789135,1078426020,1569222167,845107691,3583754449,4072456591,1091646820,628848692,1613405280,3757631651,526609435,236106946,48312990,2942717905,3402727701,1797494240,859738849,992217954,4005476642,2243076622,3870952857,3732016268,765654824,3490871365,2511836413,1685915746,3888969200,1414112111,2273134842,3281911079,4080962846,172450625,2569994100,980381355,4109958455,2819808352,2716589560,2568741196,3681446669,3329971472,1835478071,660984891,3704678404,4045999559,3422617507,3040415634,1762651403,1719377915,3470491036,2693910283,3642056355,3138596744,1364962596,2073328063,1983633131,926494387,3423689081,2150032023,4096667949,1749200295,3328846651,309677260,2016342300,1779581495,3079819751,111262694,1274766160,443224088,298511866,1025883608,3806446537,1145181785,168956806,3641502830,3584813610,1689216846,3666258015,3200248200,1692713982,2646376535,4042768518,1618508792,1610833997,3523052358,4130873264,2001055236,3610705100,2202168115,4028541809,2961195399,1006657119,2006996926,3186142756,1430667929,3210227297,1314452623,4074634658,4101304120,2273951170,1399257539,3367210612,3027628629,1190975929,2062231137,2333990788,2221543033,2438960610,1181637006,548689776,2362791313,3372408396,3104550113,3145860560,296247880,1970579870,3078560182,3769228297,1714227617,3291629107,3898220290,166772364,1251581989,493813264,448347421,195405023,2709975567,677966185,3703036547,1463355134,2715995803,1338867538,1343315457,2802222074,2684532164,233230375,2599980071,2000651841,3277868038,1638401717,4028070440,3237316320,6314154,819756386,300326615,590932579,1405279636,3267499572,3150704214,2428286686,3959192993,3461946742,1862657033,1266418056,963775037,2089974820,2263052895,1917689273,448879540,3550394620,3981727096,150775221,3627908307,1303187396,508620638,2975983352,2726630617,1817252668,1876281319,1457606340,908771278,3720792119,3617206836,2455994898,1729034894,1080033504],[976866871,3556439503,2881648439,1522871579,1555064734,1336096578,3548522304,2579274686,3574697629,3205460757,3593280638,3338716283,3079412587,564236357,2993598910,1781952180,1464380207,3163844217,3332601554,1699332808,1393555694,1183702653,3581086237,1288719814,691649499,2847557200,2895455976,3193889540,2717570544,1781354906,1676643554,2592534050,3230253752,1126444790,2770207658,2633158820,2210423226,2615765581,2414155088,3127139286,673620729,2805611233,1269405062,4015350505,3341807571,4149409754,1057255273,2012875353,2162469141,2276492801,2601117357,993977747,3918593370,2654263191,753973209,36408145,2530585658,25011837,3520020182,2088578344,530523599,2918365339,1524020338,1518925132,3760827505,3759777254,1202760957,3985898139,3906192525,674977740,4174734889,2031300136,2019492241,3983892565,4153806404,3822280332,352677332,2297720250,60907813,90501309,3286998549,1016092578,2535922412,2839152426,457141659,509813237,4120667899,652014361,1966332200,2975202805,55981186,2327461051,676427537,3255491064,2882294119,3433927263,1307055953,942726286,933058658,2468411793,3933900994,4215176142,1361170020,2001714738,2830558078,3274259782,1222529897,1679025792,2729314320,3714953764,1770335741,151462246,3013232138,1682292957,1483529935,471910574,1539241949,458788160,3436315007,1807016891,3718408830,978976581,1043663428,3165965781,1927990952,4200891579,2372276910,3208408903,3533431907,1412390302,2931980059,4132332400,1947078029,3881505623,4168226417,2941484381,1077988104,1320477388,886195818,18198404,3786409e3,2509781533,112762804,3463356488,1866414978,891333506,18488651,661792760,1628790961,3885187036,3141171499,876946877,2693282273,1372485963,791857591,2686433993,3759982718,3167212022,3472953795,2716379847,445679433,3561995674,3504004811,3574258232,54117162,3331405415,2381918588,3769707343,4154350007,1140177722,4074052095,668550556,3214352940,367459370,261225585,2610173221,4209349473,3468074219,3265815641,314222801,3066103646,3808782860,282218597,3406013506,3773591054,379116347,1285071038,846784868,2669647154,3771962079,3550491691,2305946142,453669953,1268987020,3317592352,3279303384,3744833421,2610507566,3859509063,266596637,3847019092,517658769,3462560207,3443424879,370717030,4247526661,2224018117,4143653529,4112773975,2788324899,2477274417,1456262402,2901442914,1517677493,1846949527,2295493580,3734397586,2176403920,1280348187,1908823572,3871786941,846861322,1172426758,3287448474,3383383037,1655181056,3139813346,901632758,1897031941,2986607138,3066810236,3447102507,1393639104,373351379,950779232,625454576,3124240540,4148612726,2007998917,544563296,2244738638,2330496472,2058025392,1291430526,424198748,50039436,29584100,3605783033,2429876329,2791104160,1057563949,3255363231,3075367218,3463963227,1469046755,985887462]];var n={pbox:[],sbox:[]};function r(B,V){let d=V>>24&255,p=V>>16&255,x=V>>8&255,y=V&255,b=B.sbox[0][d]+B.sbox[1][p];return b=b^B.sbox[2][x],b=b+B.sbox[3][y],b}function c(B,V,d){let p=V,x=d,y;for(let b=0;b<m;++b)p=p^B.pbox[b],x=r(B,p)^x,y=p,p=x,x=y;return y=p,p=x,x=y,x=x^B.pbox[m],p=p^B.pbox[m+1],{left:p,right:x}}function f(B,V,d){let p=V,x=d,y;for(let b=m+1;b>1;--b)p=p^B.pbox[b],x=r(B,p)^x,y=p,p=x,x=y;return y=p,p=x,x=y,x=x^B.pbox[1],p=p^B.pbox[0],{left:p,right:x}}function u(B,V,d){for(let D=0;D<4;D++){B.sbox[D]=[];for(let _=0;_<256;_++)B.sbox[D][_]=i[D][_]}let p=0;for(let D=0;D<m+2;D++)B.pbox[D]=l[D]^V[p],p++,p>=d&&(p=0);let x=0,y=0,b=0;for(let D=0;D<m+2;D+=2)b=c(B,x,y),x=b.left,y=b.right,B.pbox[D]=x,B.pbox[D+1]=y;for(let D=0;D<4;D++)for(let _=0;_<256;_+=2)b=c(B,x,y),x=b.left,y=b.right,B.sbox[D][_]=x,B.sbox[D][_+1]=y;return!0}var v=h.Blowfish=s.extend({_doReset:function(){if(this._keyPriorReset!==this._key){var B=this._keyPriorReset=this._key,V=B.words,d=B.sigBytes/4;u(n,V,d)}},encryptBlock:function(B,V){var d=c(n,B[V],B[V+1]);B[V]=d.left,B[V+1]=d.right},decryptBlock:function(B,V){var d=f(n,B[V],B[V+1]);B[V]=d.left,B[V+1]=d.right},blockSize:64/32,keySize:128/32,ivSize:64/32});a.Blowfish=s._createHelper(v)}(),o.Blowfish})}(Lt)),Lt.exports}(function(g,E){(function(o,a,t){g.exports=a(ee(),Le(),Ac(),_c(),De(),$c(),Ae(),uo(),gt(),Fc(),bo(),wc(),Sc(),Ic(),Bt(),zc(),ye(),le(),Tc(),Pc(),Rc(),Mc(),Hc(),Oc(),Uc(),Lc(),Wc(),qc(),Gc(),jc(),Xc(),Yc(),Kc(),Jc(),Zc())})(J,function(o){return o})})(ro);var Qc=ro.exports;const We=kc(Qc),Wt="515745617364313233";function Wo(g,E=Wt){try{const o=We.enc.Hex.parse(g),a=We.enc.Base64.stringify(o);if(!a.startsWith("U2FsdGVkX1"))return{success:!1,error:"无效的授权码格式"};const s=We.AES.decrypt(a,E).toString(We.enc.Utf8);if(!s)return{success:!1,error:"授权码解密失败"};const h=s.split("|sv|");return{success:!0,company:h[0]||s,expiryDate:h[1],machineId:h[2],parts:h}}catch(o){return{success:!1,error:o instanceof Error?o.message:"解密异常"}}}function qo(g,E=Wt){if(!g||g.length<32)return!1;const o=Wo(g,E);if(!o.success)return!1;if(o.expiryDate){const a=new Date(o.expiryDate).getTime();if(new Date().getTime()>a)return console.warn("授权已过期"),!1}return!0}function ed(g,E=Wt){const o=Wo(g,E);return o.success?{company:o.company||"未知",expiryDate:o.expiryDate,isValid:qo(g,E)}:null}const td={key:0,class:"scada-footer"},od={key:1,class:"scada-footer"},nd={class:"footer-content"},ad={class:"footer-left"},rd={class:"copyright",style:{color:"#94a3b8 !important"}},ld={key:0,class:"divider",style:{color:"#475569 !important"}},sd={key:1,class:"license",style:{color:"#94a3b8 !important"}},id={key:0,class:"footer-right"},cd={class:"text",style:{color:"#94a3b8 !important"}},dd={key:2,class:"scada-footer"},pd={class:"footer-content"},xd={class:"footer-left"},fd={class:"authorized-text",style:{color:"#10b981 !important"}},md={class:"footer-right"},ud={key:0,class:"expiry-text",style:{color:"#94a3b8 !important"}},gd={key:1,class:"expiry-text",style:{color:"#94a3b8 !important"}},Ed=te(e.defineComponent({__name:"Footer",props:{authCode:{default:""},customFooter:{default:void 0}},setup(g){const E=g,o=e.ref(null),a=e.computed(()=>{if(!E.authCode)return!1;const t=qo(E.authCode);if(t){const s=ed(E.authCode);s&&(o.value=s,console.log("✅ 授权验证成功"),console.log("🏛️ 授权公司:",s.company),s.expiryDate?console.log("📅 有效期至:",s.expiryDate):console.log("∞ 永久授权"))}else o.value=null,console.warn("❌ 授权码验证失败");return t});return(t,s)=>{var h,m;return a.value?g.customFooter?(e.openBlock(),e.createElementBlock("footer",od,[e.createElementVNode("div",nd,[e.createElementVNode("div",ad,[e.createElementVNode("span",rd,e.toDisplayString(g.customFooter.copyright),1),g.customFooter.license?(e.openBlock(),e.createElementBlock("span",ld,"|")):e.createCommentVNode("",!0),g.customFooter.license?(e.openBlock(),e.createElementBlock("span",sd,e.toDisplayString(g.customFooter.license),1)):e.createCommentVNode("",!0)]),g.customFooter.contact?(e.openBlock(),e.createElementBlock("div",id,[e.createElementVNode("span",cd,e.toDisplayString(g.customFooter.contact),1)])):e.createCommentVNode("",!0)])])):(e.openBlock(),e.createElementBlock("footer",dd,[e.createElementVNode("div",pd,[e.createElementVNode("div",xd,[s[1]||(s[1]=e.createElementVNode("span",{class:"authorized-icon"},"✅",-1)),e.createElementVNode("span",fd,"已授权: "+e.toDisplayString(((h=o.value)==null?void 0:h.company)||"未知"),1)]),e.createElementVNode("div",md,[(m=o.value)!=null&&m.expiryDate?(e.openBlock(),e.createElementBlock("span",ud," 📅 有效期至: "+e.toDisplayString(o.value.expiryDate),1)):(e.openBlock(),e.createElementBlock("span",gd," ∞ 永久授权 "))])])])):(e.openBlock(),e.createElementBlock("footer",td,[...s[0]||(s[0]=[e.createStaticVNode('<div class="footer-content" data-v-52b6d4b1><div class="footer-left" data-v-52b6d4b1><span class="copyright" style="color:#94a3b8 !important;" data-v-52b6d4b1>© 2025 leoncheng</span><span class="divider" style="color:#475569 !important;" data-v-52b6d4b1>|</span><span class="license" style="color:#94a3b8 !important;" data-v-52b6d4b1>仅供学习研究使用,禁止商业用途</span></div><div class="footer-right" data-v-52b6d4b1><div class="contact-item" data-v-52b6d4b1><span class="icon" data-v-52b6d4b1>📧</span><span class="text" style="color:#94a3b8 !important;" data-v-52b6d4b1>nywqs@outlook.com</span></div><span class="divider" style="color:#475569 !important;" data-v-52b6d4b1>|</span><div class="contact-item" data-v-52b6d4b1><span class="icon" data-v-52b6d4b1>📱</span><span class="text" style="color:#94a3b8 !important;" data-v-52b6d4b1>18637762001</span></div></div></div>',1)])]))}}}),[["__scopeId","data-v-52b6d4b1"]]);var Ce=(g=>(g.START="start",g.END="end",g.GET_PROPERTY="getProperty",g.SET_PROPERTY="setProperty",g.CONDITION="condition",g.HTTP_REQUEST="httpRequest",g.CUSTOM_CODE="customCode",g.TIMER="timer",g.CLEAR_TIMER="clearTimer",g))(Ce||{});const hd={class:"dialog-body"},bd={class:"search-box"},vd={class:"element-list"},yd=["onClick"],Cd={class:"element-icon"},Bd={class:"element-info"},kd={class:"element-name"},Nd={class:"element-type"},Vd={key:0,class:"element-check"},Dd={key:0,class:"empty-state"},Ad={class:"dialog-footer"},_d=["disabled"],Go=te(e.defineComponent({__name:"ElementSelector",props:{visible:{type:Boolean},elements:{default:()=>[]}},emits:["close","select"],setup(g,{emit:E}){const o=g,a=E,t=e.ref(""),s=e.ref(null),h=e.computed(()=>{if(!t.value)return o.elements;const n=t.value.toLowerCase();return o.elements.filter(r=>r.name.toLowerCase().includes(n)||r.id.toLowerCase().includes(n)||r.type.toLowerCase().includes(n))}),m=n=>{s.value=n},l=()=>{t.value="",s.value=null,a("close")},i=()=>{s.value&&(a("select",s.value),l())};return(n,r)=>g.visible?(e.openBlock(),e.createElementBlock("div",{key:0,class:"element-selector-overlay",onClick:l},[e.createElementVNode("div",{class:"element-selector-dialog",onClick:r[1]||(r[1]=e.withModifiers(()=>{},["stop"]))},[e.createElementVNode("div",{class:"dialog-header"},[r[2]||(r[2]=e.createElementVNode("h3",null,"选择图元",-1)),e.createElementVNode("button",{class:"btn-close",onClick:l},"×")]),e.createElementVNode("div",hd,[e.createElementVNode("div",bd,[e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":r[0]||(r[0]=c=>t.value=c),type:"text",placeholder:"搜索图元名称或ID..."},null,512),[[e.vModelText,t.value]])]),e.createElementVNode("div",vd,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(h.value,c=>{var f,u;return e.openBlock(),e.createElementBlock("div",{key:c.id,class:e.normalizeClass(["element-item",{active:((f=s.value)==null?void 0:f.id)===c.id}]),onClick:v=>m(c)},[e.createElementVNode("div",Cd,e.toDisplayString(c.icon),1),e.createElementVNode("div",Bd,[e.createElementVNode("div",kd,e.toDisplayString(c.name),1),e.createElementVNode("div",Nd,e.toDisplayString(c.type),1)]),((u=s.value)==null?void 0:u.id)===c.id?(e.openBlock(),e.createElementBlock("div",Vd," ✓ ")):e.createCommentVNode("",!0)],10,yd)}),128)),h.value.length===0?(e.openBlock(),e.createElementBlock("div",Dd,[...r[3]||(r[3]=[e.createElementVNode("p",null,"未找到图元",-1),e.createElementVNode("p",{class:"empty-hint"},"请尝试其他搜索关键词",-1)])])):e.createCommentVNode("",!0)])]),e.createElementVNode("div",Ad,[e.createElementVNode("button",{class:"btn-secondary",onClick:l},"取消"),e.createElementVNode("button",{class:"btn-primary",disabled:!s.value,onClick:i}," 确定 ",8,_d)])])])):e.createCommentVNode("",!0)}}),[["__scopeId","data-v-882704dd"]]),$d={class:"node-config"},Fd={class:"config-group"},wd={class:"element-selector"},Sd={class:"config-group"},Id=["disabled"],zd=["value"],Td=te(e.defineComponent({__name:"GetPropertyConfig",props:{modelValue:{}},emits:["update:modelValue"],setup(g,{emit:E}){const o=g,a=E,t=e.reactive({elementId:o.modelValue.elementId||"",propertyName:o.modelValue.propertyName||""}),s=e.ref(""),h=e.ref(!1),m=e.ref([]),l=e.inject("canvasElementService"),i=e.computed(()=>{if(!t.elementId)return[];const f=m.value.find(u=>u.id===t.elementId);return(f==null?void 0:f.properties)||[]}),n=()=>{a("update:modelValue",{...t})},r=()=>{l&&(m.value=l.getElements()),h.value=!0},c=f=>{t.elementId=f.id,s.value=f.name,t.propertyName="",n()};return e.onMounted(()=>{if(l&&(m.value=l.getElements()),t.elementId){const f=m.value.find(u=>u.id===t.elementId);f&&(s.value=f.name)}}),(f,u)=>(e.openBlock(),e.createElementBlock(e.Fragment,null,[e.createElementVNode("div",$d,[e.createElementVNode("div",Fd,[u[3]||(u[3]=e.createElementVNode("label",null,"图元选择",-1)),e.createElementVNode("div",wd,[e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":u[0]||(u[0]=v=>s.value=v),type:"text",placeholder:"点击选择按钮从画布中选择图元",readonly:""},null,512),[[e.vModelText,s.value]]),e.createElementVNode("button",{class:"btn-select",onClick:r}," 选择图元 ")])]),e.createElementVNode("div",Sd,[u[5]||(u[5]=e.createElementVNode("label",null,"属性选择",-1)),e.withDirectives(e.createElementVNode("select",{"onUpdate:modelValue":u[1]||(u[1]=v=>t.propertyName=v),onChange:n,disabled:!t.elementId},[u[4]||(u[4]=e.createElementVNode("option",{value:""},"请先选择图元",-1)),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(i.value,v=>(e.openBlock(),e.createElementBlock("option",{key:v.key,value:v.key},e.toDisplayString(v.label),9,zd))),128))],40,Id),[[e.vModelSelect,t.propertyName]])])]),e.createVNode(Go,{visible:h.value,elements:m.value,onClose:u[2]||(u[2]=v=>h.value=!1),onSelect:c},null,8,["visible","elements"])],64))}}),[["__scopeId","data-v-fa65eb56"]]),Pd={class:"node-config"},Rd={class:"config-group"},Md={class:"element-selector"},Hd={class:"config-group"},Od=["disabled"],Ud=["value"],Ld={class:"config-group"},Wd=te(e.defineComponent({__name:"SetPropertyConfig",props:{modelValue:{}},emits:["update:modelValue"],setup(g,{emit:E}){const o=g,a=E,t=e.reactive({elementId:o.modelValue.elementId||"",propertyName:o.modelValue.propertyName||"",value:o.modelValue.value||""}),s=e.ref(""),h=e.ref(!1),m=e.ref([]),l=e.inject("canvasElementService"),i=e.computed(()=>{if(!t.elementId)return[];const f=m.value.find(u=>u.id===t.elementId);return(f==null?void 0:f.properties)||[]}),n=()=>{a("update:modelValue",{...t})},r=()=>{l&&(m.value=l.getElements()),h.value=!0},c=f=>{t.elementId=f.id,s.value=f.name,t.propertyName="",n()};return e.onMounted(()=>{if(l&&(m.value=l.getElements()),t.elementId){const f=m.value.find(u=>u.id===t.elementId);f&&(s.value=f.name)}}),(f,u)=>(e.openBlock(),e.createElementBlock(e.Fragment,null,[e.createElementVNode("div",Pd,[e.createElementVNode("div",Rd,[u[4]||(u[4]=e.createElementVNode("label",null,"图元选择",-1)),e.createElementVNode("div",Md,[e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":u[0]||(u[0]=v=>s.value=v),type:"text",placeholder:"点击选择按钮从画布中选择图元",readonly:""},null,512),[[e.vModelText,s.value]]),e.createElementVNode("button",{class:"btn-select",onClick:r}," 选择图元 ")])]),e.createElementVNode("div",Hd,[u[6]||(u[6]=e.createElementVNode("label",null,"属性选择",-1)),e.withDirectives(e.createElementVNode("select",{"onUpdate:modelValue":u[1]||(u[1]=v=>t.propertyName=v),onChange:n,disabled:!t.elementId},[u[5]||(u[5]=e.createElementVNode("option",{value:""},"请先选择图元",-1)),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(i.value,v=>(e.openBlock(),e.createElementBlock("option",{key:v.key,value:v.key},e.toDisplayString(v.label),9,Ud))),128))],40,Od),[[e.vModelSelect,t.propertyName]])]),e.createElementVNode("div",Ld,[u[7]||(u[7]=e.createElementVNode("label",null,"属性值",-1)),e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":u[2]||(u[2]=v=>t.value=v),type:"text",placeholder:"请输入属性值",onInput:n},null,544),[[e.vModelText,t.value]])])]),e.createVNode(Go,{visible:h.value,elements:m.value,onClose:u[3]||(u[3]=v=>h.value=!1),onSelect:c},null,8,["visible","elements"])],64))}}),[["__scopeId","data-v-42e029d4"]]),qd={class:"node-config"},Gd={class:"config-group"},jd={class:"config-group"},Xd={class:"branches-section"},Yd={class:"branch-list"},Kd={class:"branch-header"},Jd={class:"branch-number"},Zd=["onClick"],Qd={key:0,class:"branch-config"},e1={class:"config-row"},t1=["onUpdate:modelValue"],o1={key:0,class:"config-row"},n1=["onUpdate:modelValue"],a1={key:1,class:"config-row"},r1=["onUpdate:modelValue","type"],l1={key:1,class:"default-branch-label"},s1=te(e.defineComponent({__name:"ConditionConfig",props:{modelValue:{}},emits:["update:modelValue"],setup(g,{emit:E}){const o=g,a=E,t=()=>`branch_${Date.now()}_${Math.random().toString(36).substr(2,9)}`,s=()=>o.modelValue.branches&&o.modelValue.branches.length>0?o.modelValue.branches:(o.modelValue.dataType||"boolean")==="boolean"?[{id:t(),label:"True",value:!0},{id:t(),label:"False",value:!1,isDefault:!0}]:[{id:t(),label:"分支1",operator:"eq",value:""},{id:t(),label:"默认",isDefault:!0}],h=e.reactive({sourceNodeId:o.modelValue.sourceNodeId||"prev",dataType:o.modelValue.dataType||"boolean",branches:s()}),m=()=>{a("update:modelValue",{...h})},l=()=>{h.dataType==="boolean"?h.branches=[{id:t(),label:"True",value:!0},{id:t(),label:"False",value:!1,isDefault:!0}]:h.branches=[{id:t(),label:"分支1",operator:"eq",value:""},{id:t(),label:"默认",isDefault:!0}],m()},i=()=>{const r={id:t(),label:`分支${h.branches.length}`,operator:"eq",value:""},c=h.branches.findIndex(f=>f.isDefault);c>-1?h.branches.splice(c,0,r):h.branches.push(r),m()},n=r=>{h.branches.length>2&&(h.branches.splice(r,1),m())};return(r,c)=>(e.openBlock(),e.createElementBlock("div",qd,[e.createElementVNode("div",Gd,[c[3]||(c[3]=e.createElementVNode("label",null,"数据来源节点",-1)),e.withDirectives(e.createElementVNode("select",{"onUpdate:modelValue":c[0]||(c[0]=f=>h.sourceNodeId=f),onChange:m},[...c[2]||(c[2]=[e.createElementVNode("option",{value:""},"请选择数据来源节点",-1),e.createElementVNode("option",{value:"prev"},"上一个节点",-1)])],544),[[e.vModelSelect,h.sourceNodeId]])]),e.createElementVNode("div",jd,[c[5]||(c[5]=e.createElementVNode("label",null,"数据类型",-1)),e.withDirectives(e.createElementVNode("select",{"onUpdate:modelValue":c[1]||(c[1]=f=>h.dataType=f),onChange:l},[...c[4]||(c[4]=[e.createElementVNode("option",{value:"boolean"},"布尔类型",-1),e.createElementVNode("option",{value:"number"},"数字类型",-1),e.createElementVNode("option",{value:"string"},"字符串类型",-1),e.createElementVNode("option",{value:"any"},"自定义",-1)])],544),[[e.vModelSelect,h.dataType]])]),e.createElementVNode("div",Xd,[e.createElementVNode("div",{class:"section-header"},[c[6]||(c[6]=e.createElementVNode("label",null,"条件分支",-1)),e.createElementVNode("button",{class:"btn-add",onClick:i},"添加分支")]),e.createElementVNode("div",Yd,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(h.branches,(f,u)=>(e.openBlock(),e.createElementBlock("div",{key:f.id,class:"branch-item"},[e.createElementVNode("div",Kd,[e.createElementVNode("span",Jd,"分支 "+e.toDisplayString(u+1),1),!f.isDefault&&h.branches&&h.branches.length>1?(e.openBlock(),e.createElementBlock("button",{key:0,class:"btn-remove",onClick:v=>n(u)},"×",8,Zd)):e.createCommentVNode("",!0)]),f.isDefault?(e.openBlock(),e.createElementBlock("div",l1," 默认分支(其他情况) ")):(e.openBlock(),e.createElementBlock("div",Qd,[e.createElementVNode("div",e1,[c[7]||(c[7]=e.createElementVNode("label",null,"分支标签",-1)),e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":v=>f.label=v,type:"text",placeholder:"如: >10, =A, True",onInput:m},null,40,t1),[[e.vModelText,f.label]])]),h.dataType!=="boolean"?(e.openBlock(),e.createElementBlock("div",o1,[c[9]||(c[9]=e.createElementVNode("label",null,"运算符",-1)),e.withDirectives(e.createElementVNode("select",{"onUpdate:modelValue":v=>f.operator=v,onChange:m},[...c[8]||(c[8]=[e.createStaticVNode('<option value="eq" data-v-15975920>等于 (==)</option><option value="ne" data-v-15975920>不等于 (!=)</option><option value="gt" data-v-15975920>大于 (>)</option><option value="gte" data-v-15975920>大于等于 (>=)</option><option value="lt" data-v-15975920>小于 (<)</option><option value="lte" data-v-15975920>小于等于 (<=)</option><option value="contains" data-v-15975920>包含</option><option value="notContains" data-v-15975920>不包含</option>',8)])],40,n1),[[e.vModelSelect,f.operator]])])):e.createCommentVNode("",!0),h.dataType!=="boolean"?(e.openBlock(),e.createElementBlock("div",a1,[c[10]||(c[10]=e.createElementVNode("label",null,"比较值",-1)),e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":v=>f.value=v,type:h.dataType==="number"?"number":"text",placeholder:"请输入比较值",onInput:m},null,40,r1),[[e.vModelDynamic,f.value]])])):e.createCommentVNode("",!0)]))]))),128))])])]))}}),[["__scopeId","data-v-15975920"]]),i1={class:"node-config"},c1={class:"config-group"},d1={class:"config-group"},p1={class:"config-group"},x1={class:"config-group"},f1={class:"config-group"},m1=te(e.defineComponent({__name:"HttpRequestConfig",props:{modelValue:{}},emits:["update:modelValue"],setup(g,{emit:E}){const o=g,a=E,t=e.reactive({url:o.modelValue.url||"",method:o.modelValue.method||"GET",headers:o.modelValue.headers||{},body:o.modelValue.body||"",outputVariable:o.modelValue.outputVariable||""}),s=e.ref(JSON.stringify(t.headers,null,2)),h=()=>{a("update:modelValue",{...t})},m=()=>{try{t.headers=JSON.parse(s.value),h()}catch{}};return e.watch(()=>o.modelValue.headers,l=>{l&&(s.value=JSON.stringify(l,null,2))}),(l,i)=>(e.openBlock(),e.createElementBlock("div",i1,[e.createElementVNode("div",c1,[i[5]||(i[5]=e.createElementVNode("label",null,"请求URL",-1)),e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":i[0]||(i[0]=n=>t.url=n),type:"text",placeholder:"请输入请求URL",onInput:h},null,544),[[e.vModelText,t.url]])]),e.createElementVNode("div",d1,[i[7]||(i[7]=e.createElementVNode("label",null,"请求方法",-1)),e.withDirectives(e.createElementVNode("select",{"onUpdate:modelValue":i[1]||(i[1]=n=>t.method=n),onChange:h},[...i[6]||(i[6]=[e.createElementVNode("option",{value:"GET"},"GET",-1),e.createElementVNode("option",{value:"POST"},"POST",-1),e.createElementVNode("option",{value:"PUT"},"PUT",-1),e.createElementVNode("option",{value:"DELETE"},"DELETE",-1)])],544),[[e.vModelSelect,t.method]])]),e.createElementVNode("div",p1,[i[8]||(i[8]=e.createElementVNode("label",null,"请求头 (JSON格式)",-1)),e.withDirectives(e.createElementVNode("textarea",{"onUpdate:modelValue":i[2]||(i[2]=n=>s.value=n),rows:"3",placeholder:'{"Content-Type": "application/json"}',onInput:m},null,544),[[e.vModelText,s.value]])]),e.createElementVNode("div",x1,[i[9]||(i[9]=e.createElementVNode("label",null,"请求体",-1)),e.withDirectives(e.createElementVNode("textarea",{"onUpdate:modelValue":i[3]||(i[3]=n=>t.body=n),rows:"4",placeholder:"请输入请求体内容",onInput:h},null,544),[[e.vModelText,t.body]])]),e.createElementVNode("div",f1,[i[10]||(i[10]=e.createElementVNode("label",null,"输出变量",-1)),e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":i[4]||(i[4]=n=>t.outputVariable=n),type:"text",placeholder:"请输入输出变量名",onInput:h},null,544),[[e.vModelText,t.outputVariable]])])]))}}),[["__scopeId","data-v-4c312eea"]]),u1={class:"node-config"},g1={class:"config-group"},E1=te(e.defineComponent({__name:"CustomCodeConfig",props:{modelValue:{}},emits:["update:modelValue"],setup(g,{emit:E}){const o=g,a=E,t=e.reactive({code:o.modelValue.code||""}),s=()=>{a("update:modelValue",{...t})};return(h,m)=>(e.openBlock(),e.createElementBlock("div",u1,[e.createElementVNode("div",g1,[m[1]||(m[1]=e.createElementVNode("label",null,"JavaScript代码",-1)),e.withDirectives(e.createElementVNode("textarea",{"onUpdate:modelValue":m[0]||(m[0]=l=>t.code=l),rows:"10",placeholder:"请输入JavaScript代码",onInput:s},null,544),[[e.vModelText,t.code]])]),m[2]||(m[2]=e.createElementVNode("div",{class:"code-hint"},[e.createElementVNode("p",null,"提示:"),e.createElementVNode("ul",null,[e.createElementVNode("li",null,"可以使用 context 对象访问上下文变量"),e.createElementVNode("li",null,"使用 return 返回结果")])],-1))]))}}),[["__scopeId","data-v-f7115383"]]),h1={class:"node-config"},b1={class:"config-group"},v1={class:"config-group"},y1=te(e.defineComponent({__name:"TimerConfig",props:{modelValue:{}},emits:["update:modelValue"],setup(g,{emit:E}){const o=g,a=E,t=e.reactive({interval:o.modelValue.interval||1e3,unit:o.modelValue.unit||"ms"}),s=()=>{a("update:modelValue",{...t})};return(h,m)=>(e.openBlock(),e.createElementBlock("div",h1,[e.createElementVNode("div",b1,[m[2]||(m[2]=e.createElementVNode("label",null,"时间间隔",-1)),e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":m[0]||(m[0]=l=>t.interval=l),type:"number",min:"1",placeholder:"请输入时间间隔",onInput:s},null,544),[[e.vModelText,t.interval,void 0,{number:!0}]])]),e.createElementVNode("div",v1,[m[4]||(m[4]=e.createElementVNode("label",null,"时间单位",-1)),e.withDirectives(e.createElementVNode("select",{"onUpdate:modelValue":m[1]||(m[1]=l=>t.unit=l),onChange:s},[...m[3]||(m[3]=[e.createElementVNode("option",{value:"ms"},"毫秒 (ms)",-1),e.createElementVNode("option",{value:"s"},"秒 (s)",-1),e.createElementVNode("option",{value:"m"},"分钟 (m)",-1),e.createElementVNode("option",{value:"h"},"小时 (h)",-1)])],544),[[e.vModelSelect,t.unit]])])]))}}),[["__scopeId","data-v-323381bc"]]),C1={class:"node-config"},B1={class:"config-group"},k1=["value"],N1={key:0,class:"timer-hint warning"},V1={key:1,class:"timer-hint"},D1=te(e.defineComponent({__name:"ClearTimerConfig",props:{modelValue:{}},emits:["update:modelValue"],setup(g,{emit:E}){const o=g,a=E,t=e.reactive({timerId:o.modelValue.timerId||""}),s=e.ref([]),h=e.inject("getGraph"),m=()=>{if(!h)return[];const i=h();if(!i)return[];const n=i.getNodes(),r=[];return n.forEach(c=>{const f=c.getData();if((f==null?void 0:f.nodeType)==="timer"){const u=c.getAttrByPath("label/text")||"定时器";r.push({id:c.id,label:u})}}),r};e.onMounted(()=>{s.value=m()}),e.watch(()=>o.modelValue,()=>{s.value=m()},{deep:!0});const l=()=>{a("update:modelValue",{...t})};return(i,n)=>(e.openBlock(),e.createElementBlock("div",C1,[e.createElementVNode("div",B1,[n[2]||(n[2]=e.createElementVNode("label",null,"选择定时器节点",-1)),e.withDirectives(e.createElementVNode("select",{"onUpdate:modelValue":n[0]||(n[0]=r=>t.timerId=r),onChange:l},[n[1]||(n[1]=e.createElementVNode("option",{value:""},"请选择要清除的定时器",-1)),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(s.value,r=>(e.openBlock(),e.createElementBlock("option",{key:r.id,value:r.id},e.toDisplayString(r.label),9,k1))),128))],544),[[e.vModelSelect,t.timerId]])]),s.value.length===0?(e.openBlock(),e.createElementBlock("div",N1,[...n[3]||(n[3]=[e.createElementVNode("p",null,"提示:当前流程中没有定时器节点",-1)])])):(e.openBlock(),e.createElementBlock("div",V1,[...n[4]||(n[4]=[e.createElementVNode("p",null,"提示:选择要清除的定时器节点",-1)])]))]))}}),[["__scopeId","data-v-d102fb63"]]),A1={[Ce.GET_PROPERTY]:Td,[Ce.SET_PROPERTY]:Wd,[Ce.CONDITION]:s1,[Ce.HTTP_REQUEST]:m1,[Ce.CUSTOM_CODE]:E1,[Ce.TIMER]:y1,[Ce.CLEAR_TIMER]:D1};function _1(g){return A1[g]||null}const $1={class:"property-panel"},F1={key:0,class:"property-content"},w1={class:"property-group"},S1=["value"],I1={class:"property-group"},z1=["value"],T1={key:0,class:"divider"},P1={key:1,class:"property-empty"},R1=te(e.defineComponent({__name:"PropertyPanel",props:{selectedCell:{}},emits:["update:label","update:config"],setup(g,{emit:E}){const o=g,a=E,t=()=>{var n,r,c;return((c=(r=(n=o.selectedCell)==null?void 0:n.cell)==null?void 0:r.model)==null?void 0:c.graph)||null};e.provide("getGraph",t);const s=e.ref({}),h=e.computed(()=>o.selectedCell?_1(o.selectedCell.nodeType):null);e.watch(()=>o.selectedCell,n=>{if(n!=null&&n.cell){const r=n.cell.getData();s.value=(r==null?void 0:r.config)||{}}else s.value={}},{immediate:!0});const m=n=>{const r=n.target;a("update:label",r.value)},l=n=>{var r;if(s.value=n,(r=o.selectedCell)!=null&&r.cell){const c=o.selectedCell.cell.getData()||{};o.selectedCell.cell.setData({...c,config:n}),o.selectedCell.nodeType==="condition"&&n.branches&&i(n.branches)}a("update:config",n)},i=n=>{var S,C;if(!((S=o.selectedCell)!=null&&S.cell))return;const r=o.selectedCell.cell,c=(C=r.model)==null?void 0:C.graph;if(!c)return;const f=[];c.getConnectedEdges(r,{outgoing:!0}).forEach(k=>{const $=k.getSourcePortId(),z=k.getTargetCell(),O=k.getTargetPortId();$&&z&&f.push({sourcePortId:$,targetCell:z,targetPortId:O})});const v=f.length>0?f[0].targetCell:null,B=f.length>0?f[0].targetPortId:"port-in";r.getPorts().forEach(k=>{k.group==="out"&&r.removePort(k.id)});const d=30,p=60,x=Math.max(n.length,1),y=Math.max(p,x*d),b=r.size(),D=r.position(),_=y-b.height;_!==0&&r.position(D.x,D.y-_/2),r.resize(b.width,y),n.forEach((k,$)=>{r.addPort({id:`port-out-${$}`,group:"out",attrs:{circle:{r:5,magnet:!0,stroke:"#34d399",strokeWidth:2,fill:"#1e293b"},portLabel:{text:k.label||`分支${$+1}`,fontSize:10,fill:"#94a3b8"}}})}),setTimeout(()=>{v&&n.forEach((k,$)=>{c.addEdge({source:{cell:r,port:`port-out-${$}`},target:{cell:v,port:B},labels:[{attrs:{label:{text:k.label||`分支${$+1}`,fill:"#e2e8f0",fontSize:12},rect:{fill:"#334155",stroke:"#34d399",strokeWidth:1,rx:4,ry:4}},position:.5}]})})},100)};return(n,r)=>(e.openBlock(),e.createElementBlock("div",$1,[r[4]||(r[4]=e.createElementVNode("h3",null,"属性配置",-1)),g.selectedCell?(e.openBlock(),e.createElementBlock("div",F1,[e.createElementVNode("div",w1,[r[1]||(r[1]=e.createElementVNode("label",null,"节点名称",-1)),e.createElementVNode("input",{value:g.selectedCell.label,type:"text",placeholder:"输入节点名称",onInput:m},null,40,S1)]),e.createElementVNode("div",I1,[r[2]||(r[2]=e.createElementVNode("label",null,"节点类型",-1)),e.createElementVNode("input",{value:g.selectedCell.nodeType,type:"text",readonly:"",disabled:""},null,8,z1)]),h.value?(e.openBlock(),e.createElementBlock("div",T1)):e.createCommentVNode("",!0),h.value?(e.openBlock(),e.createBlock(e.resolveDynamicComponent(h.value),{key:1,modelValue:s.value,"onUpdate:modelValue":[r[0]||(r[0]=c=>s.value=c),l]},null,8,["modelValue"])):e.createCommentVNode("",!0)])):(e.openBlock(),e.createElementBlock("div",P1,[...r[3]||(r[3]=[e.createElementVNode("div",{class:"empty-text"},"选择节点以配置属性",-1)])]))]))}}),[["__scopeId","data-v-8304acbc"]]),M1={class:"toolbar"},H1={class:"toolbar-right"},O1=te(e.defineComponent({__name:"WorkflowToolbar",props:{showClose:{type:Boolean}},emits:["clear","validate","save","close"],setup(g){return(E,o)=>(e.openBlock(),e.createElementBlock("div",M1,[o[5]||(o[5]=e.createElementVNode("div",{class:"toolbar-left"},[e.createElementVNode("h2",null,"流程编排")],-1)),e.createElementVNode("div",H1,[e.createElementVNode("button",{class:"btn-secondary",onClick:o[0]||(o[0]=a=>E.$emit("clear"))},"清空"),e.createElementVNode("button",{class:"btn-secondary",onClick:o[1]||(o[1]=a=>E.$emit("validate"))},"验证"),e.createElementVNode("button",{class:"btn-primary",onClick:o[2]||(o[2]=a=>E.$emit("save"))},"保存"),g.showClose?(e.openBlock(),e.createElementBlock("button",{key:0,class:"btn-close",onClick:o[3]||(o[3]=a=>E.$emit("close")),title:"关闭"},[...o[4]||(o[4]=[e.createElementVNode("span",{class:"close-icon"},"×",-1)])])):e.createCommentVNode("",!0)])]))}}),[["__scopeId","data-v-b3e0a4fc"]]),U1={class:"menu-header"},L1={class:"menu-list"},W1=["onClick"],q1={class:"menu-item-info"},G1={class:"menu-item-name"},j1={class:"menu-item-desc"},X1=te(e.defineComponent({__name:"AddNodeMenu",props:{visible:{type:Boolean},position:{},nodeTypes:{}},emits:["close","select"],setup(g,{emit:E}){const o=g,a=E,t=e.computed(()=>o.nodeTypes.filter(h=>h.type!=="start"&&h.type!=="end")),s=h=>{a("select",h)};return(h,m)=>(e.openBlock(),e.createElementBlock("div",null,[g.visible?(e.openBlock(),e.createElementBlock("div",{key:0,class:"menu-overlay",onClick:m[0]||(m[0]=l=>h.$emit("close"))})):e.createCommentVNode("",!0),g.visible?(e.openBlock(),e.createElementBlock("div",{key:1,class:"add-node-menu",style:e.normalizeStyle({left:g.position.x+"px",top:g.position.y+"px"})},[e.createElementVNode("div",U1,[m[2]||(m[2]=e.createElementVNode("span",null,"选择节点类型",-1)),e.createElementVNode("button",{class:"btn-close",onClick:m[1]||(m[1]=l=>h.$emit("close"))},"×")]),e.createElementVNode("div",L1,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(t.value,l=>(e.openBlock(),e.createElementBlock("div",{key:l.type,class:"menu-item",onClick:i=>s(l)},[e.createElementVNode("div",{class:e.normalizeClass(["menu-item-icon",`node-icon-${l.type}`])},e.toDisplayString(l.icon),3),e.createElementVNode("div",q1,[e.createElementVNode("div",G1,e.toDisplayString(l.name),1),e.createElementVNode("div",j1,e.toDisplayString(l.description),1)])],8,W1))),128))])],4)):e.createCommentVNode("",!0)]))}}),[["__scopeId","data-v-aa6fccf8"]]);class Y1{constructor(){Ue(this,"graph",null)}setGraph(E){this.graph=E}getElements(){return this.graph?this.graph.getNodes().map(o=>{const a=o.getData()||{},t=a.type||o.shape,s=Pe.getComponent(t),h=this.getElementProperties(o,s);return{id:o.id,name:a.componentName||o.getAttrByPath("label/text")||`图元_${o.id.slice(0,8)}`,type:(s==null?void 0:s.metadata.name)||t,icon:(s==null?void 0:s.metadata.icon)||"📦",properties:h}}):(console.warn("画布实例未初始化"),[])}getElementProperties(E,o){const a=[],t=new Set;return o!=null&&o.props&&o.props.forEach(s=>{const h=s.path.split("."),m=h[h.length-1];m&&!t.has(m)&&(a.push({key:m,label:s.label||m}),t.add(m))}),a}getElementById(E){return this.getElements().find(a=>a.id===E)||null}searchElements(E){const o=this.getElements(),a=E.toLowerCase();return o.filter(t=>t.name.toLowerCase().includes(a)||t.id.toLowerCase().includes(a)||t.type.toLowerCase().includes(a))}}const jo=new Y1,K1={class:"workflow-editor"},J1={class:"editor-main"},Z1={class:"canvas-area"},Q1=te(e.defineComponent({__name:"WorkflowEditor",props:{scadaGraph:{default:null},showClose:{type:Boolean,default:!1}},emits:["close"],setup(g){const E=g,o=e.ref([{type:"start",name:"开始",icon:"▶",description:"流程起点",color:"#52c41a"},{type:"end",name:"结束",icon:"⏹",description:"流程终点",color:"#ff4d4f"},{type:"getProperty",name:"获取图元属性",icon:"📥",description:"获取图元的属性值",color:"#1890ff"},{type:"setProperty",name:"设置图元属性",icon:"📤",description:"设置图元的属性值",color:"#13c2c2"},{type:"condition",name:"条件节点",icon:"◆",description:"条件分支判断",color:"#faad14"},{type:"httpRequest",name:"http请求",icon:"🌐",description:"HTTP网络请求",color:"#722ed1"},{type:"customCode",name:"自定义代码",icon:"💻",description:"执行自定义JavaScript代码",color:"#eb2f96"},{type:"timer",name:"定时器节点",icon:"⏰",description:"设置定时执行",color:"#52c41a"},{type:"clearTimer",name:"清除定时器",icon:"🗑",description:"清除定时器",color:"#ff4d4f"}]),a=e.ref();let t=null;E.scadaGraph&&jo.setGraph(E.scadaGraph),e.provide("canvasElementService",jo);const s=e.ref(null),h=e.ref(!1),m=e.ref({x:0,y:0});let l=null;const i=()=>{o.value.forEach(p=>{const x={inherit:"rect",width:150,height:60,markup:[{tagName:"rect",selector:"body"},{tagName:"text",selector:"icon"},{tagName:"text",selector:"label"}],attrs:{body:{strokeWidth:1,stroke:p.color,fill:"#ffffff",rx:6,ry:6},icon:{text:p.icon,fontSize:24,fill:p.color,refX:20,refY:"50%",textAnchor:"middle",textVerticalAnchor:"middle"},label:{text:p.name,fontSize:14,fill:"#333333",refX:75,refY:"50%",textAnchor:"middle",textVerticalAnchor:"middle"}},ports:{groups:{in:{position:"left",attrs:{circle:{r:5,magnet:!0,stroke:"#10b981",strokeWidth:2,fill:"#1e293b"}}},out:{position:{name:"right"},attrs:{circle:{r:5,magnet:!0,stroke:"#10b981",strokeWidth:2,fill:"#1e293b"},portLabel:{fontSize:10,fill:"#94a3b8"}},markup:[{tagName:"circle",selector:"circle"},{tagName:"text",selector:"portLabel"}],label:{position:{name:"right",args:{x:10,y:0}}}}},items:[]},data:{nodeType:p.type}};p.type==="start"?x.ports.items=[{id:"port-out",group:"out"}]:p.type==="end"?x.ports.items=[{id:"port-in",group:"in"}]:p.type==="condition"?x.ports.items=[{id:"port-in",group:"in"},{id:"port-out-0",group:"out",args:{text:"True"}},{id:"port-out-1",group:"out",args:{text:"False"}}]:x.ports.items=[{id:"port-in",group:"in"},{id:"port-out",group:"out"}],ue.Graph.registerNode(p.type,x,!0)})},n=()=>{if(!a.value)return;i(),t=new ue.Graph({container:a.value,width:a.value.clientWidth,height:a.value.clientHeight,grid:{size:10,visible:!0,type:"dot",args:{color:"#333",thickness:1}},panning:{enabled:!0,modifiers:"shift"},mousewheel:{enabled:!0,modifiers:["ctrl","meta"]},connecting:{router:"manhattan",connector:{name:"rounded",args:{radius:8}},anchor:"center",connectionPoint:"anchor",snap:{radius:20},allowBlank:!1,allowLoop:!1,allowNode:!1,createEdge(){return new ue.Shape.Edge({attrs:{line:{stroke:"#64748b",strokeWidth:3,targetMarker:{name:"block",width:12,height:8,fill:"#64748b"}}},zIndex:0})},validateConnection({targetMagnet:x}){return!!x}},highlighting:{magnetAvailable:{name:"stroke",args:{attrs:{fill:"#34d399",stroke:"#34d399"}}}}}),t.use(new Gt.Selection({enabled:!0,rubberband:!1,showNodeSelectionBox:!0,showEdgeSelectionBox:!0,multiple:!0,movable:!0,strict:!1}));const p=x=>{var y;if(console.log("键盘事件触发:",x.key,"selectedCell存在:",!!s.value),x.key==="Delete"||x.key==="Backspace"){if(!t){console.log("graph不存在,无法删除");return}if((y=s.value)!=null&&y.cell){x.preventDefault();const D=s.value.cell;console.log("删除选中的节点:",s.value.label);const _=t.getIncomingEdges(D),S=t.getOutgoingEdges(D);_&&_.length>0&&S&&S.length>0&&_.forEach(C=>{const k=C.getSourceCell(),$=C.getSourcePortId();S.forEach(z=>{const O=z.getTargetCell(),W=z.getTargetPortId();k&&O&&t&&(t.addEdge({source:{cell:k,port:$},target:{cell:O,port:W}}),console.log("已连接前后节点"))})}),t.removeCells([D]),s.value=null,console.log("已删除节点");return}const b=t.getSelectedCells();console.log("选中的cells数量:",b.length,b),b.length?(x.preventDefault(),t.removeCells(b),console.log("已删除cells")):console.log("没有选中的cells")}};document.addEventListener("keydown",p),t.on("node:click",({node:x})=>{var D;const y=x.getAttrByPath("label/text")||"",b=((D=x.getData())==null?void 0:D.nodeType)||x.shape||"";s.value={label:y,nodeType:b,cell:x},console.log("节点已点击,保存到selectedCell:",y)}),t.on("blank:click",()=>{s.value=null,t&&t.cleanSelection()}),t.on("edge:mouseenter",({edge:x})=>{x.setAttrs({line:{stroke:"#10b981",strokeWidth:4}}),x.addTools([{name:"button",args:{markup:[{tagName:"circle",selector:"button",attrs:{r:12,stroke:"#10b981",strokeWidth:2,fill:"#1e293b",cursor:"pointer"}},{tagName:"path",selector:"icon",attrs:{d:"M -5 0 L 5 0 M 0 -5 L 0 5",stroke:"#10b981",strokeWidth:2,fill:"none",pointerEvents:"none"}}],distance:.5,onClick:({e:y,view:b})=>{l=b.cell,h.value=!0,m.value={x:y.clientX,y:y.clientY}}}},{name:"vertices"}])}),t.on("edge:mouseleave",({edge:x})=>{x.setAttrs({line:{stroke:"#64748b",strokeWidth:3}}),x.removeTools()}),t.on("edge:connected",({isNew:x,edge:y})=>{x&&y.setAttrs({line:{stroke:"#64748b",strokeWidth:3}})}),t.on("node:selected",({node:x})=>{x.toFront()}),t.on("edge:selected",({edge:x})=>{x.toFront()}),r()},r=()=>{if(!t)return;const p=t.addNode({shape:"start",x:100,y:200,label:"开始",data:{nodeType:"start"}}),x=t.addNode({shape:"end",x:500,y:200,label:"结束",data:{nodeType:"end"}});t.addEdge({source:{cell:p,port:"port-out"},target:{cell:x,port:"port-in"}})},c=p=>{var x;(x=s.value)!=null&&x.cell&&(s.value.label=p,s.value.cell.setAttrByPath("label/text",p))},f=p=>{if(!t||!l)return;const x=l.getSourceCell(),y=l.getTargetCell();if(!x||!y)return;const b=x.position(),D=y.position(),_=(b.x+D.x)/2,S=(b.y+D.y)/2,C=t.addNode({shape:p.type,x:_,y:S,label:p.name,data:{nodeType:p.type}});l.remove(),t.addEdge({source:{cell:x,port:"port-out"},target:{cell:C,port:"port-in"}}),p.type==="condition"?(t.addEdge({source:{cell:C,port:"port-out-0"},target:{cell:y,port:"port-in"},labels:[{attrs:{label:{text:"True",fill:"#e2e8f0",fontSize:12},rect:{fill:"#334155",stroke:"#64748b",strokeWidth:1,rx:4,ry:4}},position:.5}]}),t.addEdge({source:{cell:C,port:"port-out-1"},target:{cell:y,port:"port-in"},labels:[{attrs:{label:{text:"False",fill:"#e2e8f0",fontSize:12},rect:{fill:"#334155",stroke:"#64748b",strokeWidth:1,rx:4,ry:4}},position:.5}]})):t.addEdge({source:{cell:C,port:"port-out"},target:{cell:y,port:"port-in"}}),h.value=!1,l=null},u=()=>{t&&t.clearCells()},v=()=>{if(!t)return console.log("画布不存在"),{errors:["画布不存在"],warnings:[]};const p=[],x=[],y=t.getNodes(),b=y.filter(_=>{var S;return((S=_.getData())==null?void 0:S.nodeType)==="start"});return b.length===0?p.push("流程中缺少开始节点"):b.length>1&&x.push("流程中有多个开始节点"),y.filter(_=>{var S;return((S=_.getData())==null?void 0:S.nodeType)==="end"}).length===0&&x.push("流程中缺少结束节点"),y.forEach(_=>{const S=_.getData(),C=S==null?void 0:S.nodeType,k=(S==null?void 0:S.config)||{},$=_.getAttrByPath("label/text")||"未命名节点";(C==="getProperty"||C==="setProperty")&&(k.elementId||p.push(`节点「${$}」未配置图元`),k.propertyName||p.push(`节点「${$}」未配置属性`),C==="setProperty"&&!k.value&&x.push(`节点「${$}」未配置属性值`)),C==="httpRequest"&&(k.url||p.push(`节点「${$}」未配置请求URL`)),C==="condition"&&(!k.branches||k.branches.length===0)&&p.push(`节点「${$}」未配置条件分支`),C==="timer"&&(!k.interval||k.interval<=0)&&p.push(`节点「${$}」未配置有效的时间间隔`),C==="clearTimer"&&(k.timerId||p.push(`节点「${$}」未选择定时器`)),C==="customCode"&&(k.code||x.push(`节点「${$}」未编写代码`))}),y.forEach(_=>{var k;const S=(k=_.getData())==null?void 0:k.nodeType,C=_.getAttrByPath("label/text")||"未命名节点";if(S==="start"&&t){const $=t.getOutgoingEdges(_);(!$||$.length===0)&&p.push(`开始节点「${C}」没有连接到下一个节点`)}if(S==="end"&&t){const $=t.getOutgoingEdges(_);$&&$.length>0&&x.push(`结束节点「${C}」不应该有输出连线`)}if(S!=="start"&&S!=="end"&&t){const $=t.getIncomingEdges(_),z=t.getOutgoingEdges(_);(!$||$.length===0)&&x.push(`节点「${C}」没有输入连线`),S!=="clearTimer"&&(!z||z.length===0)&&x.push(`节点「${C}」没有输出连线`)}}),t&&y.forEach(_=>{var z;const S=t.getIncomingEdges(_),C=t.getOutgoingEdges(_),k=(z=_.getData())==null?void 0:z.nodeType,$=_.getAttrByPath("label/text")||"未命名节点";k!=="start"&&(!S||S.length===0)&&(!C||C.length===0)&&x.push(`节点「${$}」是孤立节点`)}),{errors:p,warnings:x}},B=()=>{const{errors:p,warnings:x}=v();if(p.length===0&&x.length===0)alert("✓ 流程验证通过!"),console.log("流程验证通过");else{let y="";p.length>0&&(y+=`错误:
|
|
35
|
+
`+p.map(b=>" • "+b).join(`
|
|
36
|
+
`)),x.length>0&&(y&&(y+=`
|
|
37
|
+
|
|
38
|
+
`),y+=`警告:
|
|
39
|
+
`+x.map(b=>" • "+b).join(`
|
|
40
|
+
`)),alert(y),console.log("验证结果:",{errors:p,warnings:x})}},V=()=>{if(!t)return;const{errors:p,warnings:x}=v();if(p.length>0){let k=`流程验证失败,无法保存!
|
|
41
|
+
|
|
42
|
+
`;k+=`错误:
|
|
43
|
+
`+p.map($=>" • "+$).join(`
|
|
44
|
+
`),x.length>0&&(k+=`
|
|
45
|
+
|
|
46
|
+
警告:
|
|
47
|
+
`+x.map($=>" • "+$).join(`
|
|
48
|
+
`)),alert(k);return}if(x.length>0){let k=`流程存在以下警告:
|
|
49
|
+
|
|
50
|
+
`;if(k+=x.map($=>" • "+$).join(`
|
|
51
|
+
`),k+=`
|
|
52
|
+
|
|
53
|
+
是否继续保存?`,!confirm(k))return}const y=prompt("请输入流程名称:","未命名流程");if(!y||!y.trim())return;const b=t.toJSON(),D=t.getNodes().map(k=>({id:k.id,shape:k.shape,position:k.getPosition(),size:k.getSize(),attrs:k.getAttrs(),data:k.getData()})),_=t.getEdges().map(k=>({id:k.id,source:k.getSourceCellId(),target:k.getTargetCellId(),attrs:k.getAttrs(),data:k.getData()})),C={id:"workflow_"+Date.now(),name:y.trim(),data:{...b,nodes:D,edges:_},createdAt:Date.now(),updatedAt:Date.now()};try{const k=localStorage.getItem("saved-workflows"),$=k?JSON.parse(k):[];$.push(C),localStorage.setItem("saved-workflows",JSON.stringify($)),alert("✓ 流程保存成功!"),console.log("流程已保存:",C)}catch(k){console.error("保存流程失败:",k),alert("保存失败,请重试")}};e.onMounted(()=>{n(),window.addEventListener("resize",d)});const d=()=>{!t||!a.value||t.resize(a.value.clientWidth,a.value.clientHeight)};return e.onBeforeUnmount(()=>{window.removeEventListener("resize",d);const p=x=>{if(x.key==="Delete"||x.key==="Backspace"){if(!t)return;const y=t.getSelectedCells();y.length&&(x.preventDefault(),t.removeCells(y),s.value&&y.includes(s.value.cell)&&(s.value=null))}};document.removeEventListener("keydown",p),t&&t.dispose()}),(p,x)=>(e.openBlock(),e.createElementBlock("div",K1,[e.createVNode(O1,{"show-close":g.showClose,onClear:u,onValidate:B,onSave:V,onClose:x[0]||(x[0]=y=>p.$emit("close"))},null,8,["show-close"]),e.createElementVNode("div",J1,[e.createElementVNode("div",Z1,[e.createElementVNode("div",{id:"workflow-container",ref_key:"containerRef",ref:a},null,512)]),e.createVNode(R1,{"selected-cell":s.value,"onUpdate:label":c},null,8,["selected-cell"])]),e.createVNode(X1,{visible:h.value,position:m.value,"node-types":o.value,onClose:x[1]||(x[1]=y=>h.value=!1),onSelect:f},null,8,["visible","position","node-types"])]))}}),[["__scopeId","data-v-649349a2"]]),ep={key:0,class:"workflow-dialog-overlay"},tp={class:"workflow-dialog"},op=te(e.defineComponent({__name:"WorkflowDialog",props:{visible:{type:Boolean},scadaGraph:{default:null}},emits:["update:visible","close"],setup(g,{emit:E}){const o=g,a=E;e.watch(()=>o.visible,h=>{h?document.body.style.overflow="hidden":document.body.style.overflow=""});const t=()=>{a("update:visible",!1),a("close")},s=h=>{h.key==="Escape"&&o.visible&&t()};return typeof window<"u"&&window.addEventListener("keydown",s),(h,m)=>g.visible?(e.openBlock(),e.createElementBlock("div",ep,[e.createElementVNode("div",tp,[e.createVNode(Q1,{"scada-graph":g.scadaGraph,"show-close":!0,onClose:t},null,8,["scada-graph"])])])):e.createCommentVNode("",!0)}}),[["__scopeId","data-v-4e7f6ab7"]]);class np{constructor(){Ue(this,"animations",new Map)}startAnimation(E,o){if(!E||o.type==="none")return;this.stopAnimation(E.id);const a=E.id;let t=null;switch(o.type){case"blink":t=this.createBlinkAnimation(E,o);break;case"scale":t=this.createScaleAnimation(E,o);break;case"rotate":t=this.createRotateAnimation(E,o);break;case"float":t=this.createFloatAnimation(E,o);break;case"pulse":t=this.createPulseAnimation(E,o);break}t&&this.animations.set(a,t)}stopAnimation(E){const o=this.animations.get(E);o&&(o.stop&&o.stop(),o.intervalId&&clearInterval(o.intervalId),this.animations.delete(E))}createBlinkAnimation(E,o){const a=E.getAttrByPath("body/opacity")||1;let t=!0;const s=setInterval(()=>{t=!t,E.setAttrByPath("body/opacity",t?a:.2),o.loop||(clearInterval(s),E.setAttrByPath("body/opacity",a))},o.duration/2);return{intervalId:s,stop:()=>{clearInterval(s),E.setAttrByPath("body/opacity",a)}}}createScaleAnimation(E,o){const a=E.getSize();let t=!0;const s=.05;let h=1;const m=setInterval(()=>{t?(h+=s,h>=1.2&&(t=!1)):(h-=s,h<=.8&&(t=!0)),E.resize(a.width*h,a.height*h),!o.loop&&h>=.99&&h<=1.01&&(clearInterval(m),E.resize(a.width,a.height))},o.duration/20);return{intervalId:m,stop:()=>{clearInterval(m),E.resize(a.width,a.height)}}}createRotateAnimation(E,o){let a=0;const t=360/(o.duration/50),s=setInterval(()=>{a=(a+t)%360,E.rotate(a,{absolute:!0}),!o.loop&&a>=360&&(clearInterval(s),E.rotate(0,{absolute:!0}))},50);return{intervalId:s,stop:()=>{clearInterval(s),E.rotate(0,{absolute:!0})}}}createFloatAnimation(E,o){const a=E.position();let t=!0;const s=2;let h=a.y;const m=setInterval(()=>{t?(h-=s,h<=a.y-10&&(t=!1)):(h+=s,h>=a.y+10&&(t=!0)),E.position(a.x,h),!o.loop&&Math.abs(h-a.y)<1&&(clearInterval(m),E.position(a.x,a.y))},o.duration/40);return{intervalId:m,stop:()=>{clearInterval(m),E.position(a.x,a.y)}}}createPulseAnimation(E,o){const a=E.getAttrByPath("body/fill"),t=E.getAttrByPath("body/stroke");let s=0,h=!0;const m=setInterval(()=>{h?(s+=.1,s>=1&&(h=!1)):(s-=.1,s<=0&&(h=!0)),E.setAttrByPath("body/opacity",.5+s*.5),!o.loop&&s<=.05&&(clearInterval(m),E.setAttrByPath("body/fill",a),E.setAttrByPath("body/stroke",t),E.setAttrByPath("body/opacity",1))},o.duration/20);return{intervalId:m,stop:()=>{clearInterval(m),E.setAttrByPath("body/fill",a),E.setAttrByPath("body/stroke",t),E.setAttrByPath("body/opacity",1)}}}clearAll(){this.animations.forEach((E,o)=>{this.stopAnimation(o)}),this.animations.clear()}}const Be=new np,ap={class:"scada-layout","data-scada-theme":"dark"},rp={class:"scada-canvas-container"},Xo=te(e.defineComponent({name:"ScadaCanvas",inheritAttrs:!0,__name:"ScadaCanvas",props:{authCode:{default:""},customFooter:{default:void 0}},setup(g,{expose:E}){const o=e.ref(null),a=e.ref(null),t=e.ref(null),s=e.ref(0),h=e.ref(null),m=e.ref(!1);let l=null;e.onMounted(()=>{var q,X;if(!((q=o.value)!=null&&q.containerRef))return;const N=Z.getConfig();ue.Graph.registerEdge("animated-edge",{inherit:"edge",markup:[{tagName:"path",selector:"line",attrs:{fill:"none"}},{tagName:"path",selector:"wrap",attrs:{fill:"none",stroke:"transparent",strokeWidth:20}},{tagName:"circle",selector:"circle"}],attrs:{line:{connection:!0,stroke:"#10b981",strokeWidth:2,targetMarker:{name:"block",width:8,height:6}},wrap:{connection:!0,strokeLinecap:"round",strokeLinejoin:"round"}}},!0);const I=o.value.containerRef,P=N.size.width,A=N.size.height;(L=>{I.style.width=`${P}px`,I.style.height=`${A}px`,I.style.transform=`scale(${L})`,I.style.transformOrigin="center center"})(N.zoom.scale),l=new ue.Graph({container:I,width:P,height:A,background:N.background.image?{color:N.background.color||"#1e293b",image:N.background.image,size:N.background.size||"cover",repeat:N.background.repeat||"no-repeat",position:"center"}:{color:N.background.color||"#1e293b"},grid:N.grid.enabled?{size:N.grid.size,visible:!0,type:N.grid.type||"dot",args:{color:N.grid.color||"#475569",thickness:1}}:!1,interacting:{nodeMovable:!0},panning:{enabled:!0,modifiers:"shift"},mousewheel:{enabled:!0,modifiers:["ctrl","meta"]},connecting:{router:"manhattan",connector:{name:"rounded",args:{radius:8}},snap:N.magnetism.enabled?{radius:N.magnetism.threshold||10}:!1,allowBlank:!1,allowLoop:!1,allowNode:!1,allowEdge:!1,highlight:!0,createEdge(){return l.createEdge({shape:"animated-edge",zIndex:0})},validateConnection({targetMagnet:L}){return!!L}}}),l.use(new Gt.Selection({enabled:!0,movable:!0,rubberband:!0,showNodeSelectionBox:!1,showEdgeSelectionBox:!1,multiple:!0,pointerEvents:"none"})),N.guides.enabled&&l.use(new nn.Snapline({enabled:!0,sharp:!0,clean:!0}));const T=eo(Ie.SCADA_EDITOR_DATA);if(((X=T==null?void 0:T.cells)==null?void 0:X.length)>0)try{const L=T.cells.map(H=>(H.position&&typeof H.position=="object"&&(typeof H.position.x!="number"||typeof H.position.y!="number")&&(H.position={x:100,y:100}),H));l.fromJSON({cells:L}),l.getEdges().forEach(H=>{var re;const ae=H.getData();(re=ae==null?void 0:ae.animation)!=null&&re.enabled&&B(H,ae.animation)})}catch(L){console.error("恢复画布数据失败,清空缓存:",L),sessionStorage.removeItem(Ie.SCADA_EDITOR_DATA)}l.on("selection:changed",({selected:L})=>{var ae,re;const H=L?L.filter(ne=>ne.isNode()):[];if(s.value=H.length,L&&L.length>0){const ne=L[0];if(ne.isNode())a.value=ne,t.value=null;else if(ne.isEdge()){t.value=ne,a.value=null;const ge=ne.getAttrs();ne.data={...ne.data,originalAttrs:ge},ne.attr("line/stroke","#3b82f6")}}else{if(t.value&&((ae=t.value.data)!=null&&ae.originalAttrs)){const ne=t.value.data.originalAttrs;t.value.attr("line/stroke",((re=ne.line)==null?void 0:re.stroke)||"#10b981")}a.value=null,t.value=null}}),l.on("edge:click",({edge:L})=>{l.select(L)}),l.on("blank:click",()=>{t.value=null,a.value=null}),l.on("node:change:position",()=>{}),l.on("node:change:size",()=>{}),l.on("node:change:data",({node:L})=>{const H=L.getData();if(H.animation)if(H.animation.enabled===!0){const ae={type:H.animation.type||"none",duration:H.animation.duration||1e3,loop:H.animation.loop!==!1};Be.startAnimation(L,ae)}else Be.stopAnimation(L.id)}),l.on("edge:change:data",({edge:L})=>{const H=L.getData();H!=null&&H.animation&&B(L,H.animation)});const w=L=>{if(L.key==="Delete"&&l){if(a.value){const H=a.value.id;Be.stopAnimation(H),l.removeNode(H),a.value=null}else if(t.value){const H=t.value.id;l.removeEdge(H),t.value=null}}};document.addEventListener("keydown",w),e.onUnmounted(()=>{document.removeEventListener("keydown",w)})}),e.onUnmounted(()=>{if(l){Be.clearAll();const N={cells:l.toJSON().cells};ot(Ie.SCADA_EDITOR_DATA,N),l.dispose()}}),e.watch(()=>Z.getConfig(),N=>{var P;if(!l)return;N.background.image?l.drawBackground({color:N.background.color||"#1e293b",image:N.background.image,size:N.background.size||"cover",repeat:N.background.repeat||"no-repeat",position:"center"}):l.drawBackground({color:N.background.color||"#1e293b"});const I=(P=o.value)==null?void 0:P.containerRef;I&&(I.style.transform=`scale(${N.zoom.scale})`,I.style.transformOrigin="center center",l.resize(N.size.width,N.size.height),I.style.width=`${N.size.width}px`,I.style.height=`${N.size.height}px`),N.grid.enabled?(l.drawGrid({type:N.grid.type||"dot",args:{color:N.grid.color||"#475569",thickness:1}}),l.showGrid()):l.hideGrid(),N.grid.enabled&&N.grid.size&&l.setGridSize(N.grid.size),l.translate(N.offset.x,N.offset.y)},{deep:!0});const i=e.ref({}),n=(N,I)=>(i.value[N]||(i.value[N]=0),i.value[N]++,`${I}_${i.value[N]}`),r=N=>{var q,X,L,H;if(!l)return;const I=Pe.getComponent(N);if(!I){console.error(`未找到组件配置: ${N}`);return}const P=n(N,I.metadata.name),A={enabled:!1,type:"none",duration:1e3,loop:!0},F=ao(50,50,400,300),T={x:F.x,y:F.y,shape:I.shape,width:I.width,height:I.height,label:I.label,attrs:I.attrs,ports:I.ports,data:{...I.data,componentType:N,componentName:P,props:I.props,animation:A,originalStroke:((X=(q=I.attrs)==null?void 0:q.body)==null?void 0:X.stroke)||"#2563eb",originalStrokeWidth:((H=(L=I.attrs)==null?void 0:L.body)==null?void 0:H.strokeWidth)||2}},w=l.addNode(T);l.cleanSelection(),l.select(w)},c=N=>{if(a.value&&(N.attrs&&Object.keys(N.attrs).forEach(I=>{const P=N.attrs[I];typeof P=="object"?Object.keys(P).forEach(A=>{a.value.attr(`${I}/${A}`,P[A])}):a.value.attr(I,P)}),N.position&&(typeof N.position.x=="number"&&typeof N.position.y=="number"?a.value.setPosition(N.position):console.error("position 数据格式错误:",N.position)),N.size&&(typeof N.size.width=="number"&&typeof N.size.height=="number"?a.value.setSize(N.size):console.error("size 数据格式错误:",N.size)),N.data)){const I={...N.data};delete I.position,delete I.size,a.value.store.set("data",I)}},f=()=>{if(!a.value||!l)return;const N=a.value.id;Be.stopAnimation(N),l.removeNode(N),a.value=null},u=N=>{if(t.value){if(N.attrs){Object.keys(N.attrs).forEach(P=>{const A=N.attrs[P];typeof A=="object"?Object.keys(A).forEach(F=>{var T,w;t.value.attr(`${P}/${F}`,A[F]),(w=(T=t.value.data)==null?void 0:T.originalAttrs)!=null&&w[P]&&(t.value.data.originalAttrs[P][F]=A[F])}):t.value.attr(P,A)});const I=t.value.getAttrs();t.value.data={...t.value.data,originalAttrs:I},t.value.attr("line/stroke","#3b82f6")}N.router&&t.value.setRouter(N.router),N.connector&&t.value.setConnector(N.connector),N.animation&&B(t.value,N.animation),N.data&&t.value.setData({...t.value.data,...N.data})}},v=()=>{!t.value||!l||(l.removeEdge(t.value.id),t.value=null)},B=(N,I)=>{if(!I||!I.enabled){N.attr("line/strokeDasharray",void 0),N.removeAttr("line/class"),N.attr("circle",void 0),N.stopTransition("attrs/circle/atConnectionRatio");return}const P=I.duration||2e3;N.attr("circle",{r:4,atConnectionRatio:0,fill:{type:"radialGradient",stops:[{offset:"0%",color:"#FFF"},{offset:"100%",color:N.attr("line/stroke")||"#10b981"}]},stroke:N.attr("line/stroke")||"#10b981",strokeWidth:1});const A=()=>{N.attr("circle/atConnectionRatio",0,{silent:!0}),N.transition("attrs/circle/atConnectionRatio",1,{delay:0,duration:P,timing:"linear",complete:()=>{A()}})};A()},V=()=>{l&&confirm("确定要清空画布吗?")&&(Be.clearAll(),l.clearCells(),a.value=null,to(Ie.SCADA_EDITOR_DATA))},d=()=>{if(!l)return;const N=Z.getConfig().zoom.scale,I=Math.min(5,N+.1);Z.setZoom(I)},p=()=>{if(!l)return;const N=Z.getConfig().zoom.scale,I=Math.max(.1,N-.1);Z.setZoom(I)},x=()=>{if(!l)return;const N=l.getSelectedCells().filter(P=>P.isNode());if(N.length<2){oe("请选择至少两个节点","warning");return}const I=Math.min(...N.map(P=>P.getPosition().x));N.forEach(P=>{P.setPosition({x:I,y:P.getPosition().y})})},y=()=>{if(!l)return;const N=l.getSelectedCells().filter(A=>A.isNode());if(N.length<2){oe("请选择至少两个节点","warning");return}const I=N.map(A=>A.getPosition().x+A.getSize().width/2),P=I.reduce((A,F)=>A+F,0)/I.length;N.forEach(A=>{const F=P-A.getSize().width/2;A.setPosition({x:F,y:A.getPosition().y})})},b=()=>{if(!l)return;const N=l.getSelectedCells().filter(P=>P.isNode());if(N.length<2){oe("请选择至少两个节点","warning");return}const I=Math.max(...N.map(P=>P.getPosition().x+P.getSize().width));N.forEach(P=>{const A=I-P.getSize().width;P.setPosition({x:A,y:P.getPosition().y})})},D=()=>{if(!l)return;const N=l.getSelectedCells().filter(P=>P.isNode());if(N.length<2){oe("请选择至少两个节点","warning");return}const I=Math.min(...N.map(P=>P.getPosition().y));N.forEach(P=>{P.setPosition({x:P.getPosition().x,y:I})})},_=()=>{if(!l)return;const N=l.getSelectedCells().filter(A=>A.isNode());if(N.length<2){oe("请选择至少两个节点","warning");return}const I=N.map(A=>A.getPosition().y+A.getSize().height/2),P=I.reduce((A,F)=>A+F,0)/I.length;N.forEach(A=>{const F=P-A.getSize().height/2;A.setPosition({x:A.getPosition().x,y:F})})},S=()=>{if(!l)return;const N=l.getSelectedCells().filter(P=>P.isNode());if(N.length<2){oe("请选择至少两个节点","warning");return}const I=Math.max(...N.map(P=>P.getPosition().y+P.getSize().height));N.forEach(P=>{const A=I-P.getSize().height;P.setPosition({x:P.getPosition().x,y:A})})},C=()=>{if(!l)return;const N=l.getSelectedCells().filter(w=>w.isNode());if(N.length<3){oe("请选择至少三个节点","warning");return}const I=N.sort((w,q)=>w.getPosition().x-q.getPosition().x),P=I[0],T=(I[I.length-1].getPosition().x-P.getPosition().x)/(I.length-1);I.forEach((w,q)=>{if(q===0||q===I.length-1)return;const X=P.getPosition().x+T*q;w.setPosition({x:X,y:w.getPosition().y})})},k=()=>{if(!l)return;const N=l.getSelectedCells().filter(w=>w.isNode());if(N.length<3){oe("请选择至少三个节点","warning");return}const I=N.sort((w,q)=>w.getPosition().y-q.getPosition().y),P=I[0],T=(I[I.length-1].getPosition().y-P.getPosition().y)/(I.length-1);I.forEach((w,q)=>{if(q===0||q===I.length-1)return;const X=P.getPosition().y+T*q;w.setPosition({x:w.getPosition().x,y:X})})},$=()=>{if(!l){oe("画布未初始化","error");return}try{const N={version:"1.0.0",timestamp:new Date().toISOString(),config:{size:Z.getConfig().size,background:Z.getConfig().background,grid:Z.getConfig().grid,guides:Z.getConfig().guides,magnetism:Z.getConfig().magnetism,zoom:Z.getConfig().zoom},cells:l.toJSON().cells},I=new Blob([JSON.stringify(N,null,2)],{type:"application/json"}),P=URL.createObjectURL(I),A=document.createElement("a"),F=`scada-canvas-${new Date().getTime()}.json`;A.href=P,A.download=F,A.click(),URL.revokeObjectURL(P),oe("保存成功","success")}catch(N){console.error("保存失败",N),oe("保存失败,请查看控制台","error")}},z=()=>{h.value&&h.value.click()},O=N=>{var F;const P=(F=N.target.files)==null?void 0:F[0];if(!P){oe("请选择文件","error");return}const A=new FileReader;A.onload=T=>{var w;try{const q=JSON.parse((w=T.target)==null?void 0:w.result);if(!q.cells){oe("无效的JSON文件格式","error");return}if(!confirm("导入将清空当前画布,是否继续?"))return;if(l){if(l.clearCells(),l.fromJSON({cells:q.cells}),l.getEdges().forEach(X=>{var H;const L=X.getData();(H=L==null?void 0:L.animation)!=null&&H.enabled&&B(X,L.animation)}),q.config&&Z.updateConfig(q.config),q.workflows&&Array.isArray(q.workflows)&&q.workflows.length>0)try{const X=localStorage.getItem("saved-workflows"),L=X?JSON.parse(X):[];let H=0,ae=0;q.workflows.forEach(re=>{const ne=L.findIndex(ge=>ge.id===re.id);ne>=0?(L[ne]={...re,updatedAt:Date.now()},ae++):(L.push(re),H++)}),localStorage.setItem("saved-workflows",JSON.stringify(L)),oe(`导入成功 画布已加载,流程: 新增${H}个,更新${ae}个`,"success")}catch(X){console.error("导入流程数据失败:",X),oe("画布导入成功, 但流程数据导入失败","warning")}else oe("导入成功","success");h.value&&(h.value.value="")}}catch(q){console.error("导入失败",q),oe("导入失败,JSON格式错误","error"),h.value&&(h.value.value="")}},A.readAsText(P)},W=()=>{if(!l)return;const N={cells:l.toJSON().cells,config:{width:Z.getConfig().size.width,height:Z.getConfig().size.height,background:Z.getConfig().background,grid:Z.getConfig().grid}};ot(Ie.SCADA_PREVIEW_DATA,N)},Y=()=>{m.value=!0},Q=()=>{if(!l){oe("画布未初始化","error");return}try{const N={version:"1.0.0",timestamp:at(rt()),config:{size:Z.getConfig().size,background:Z.getConfig().background,grid:Z.getConfig().grid,guides:Z.getConfig().guides,magnetism:Z.getConfig().magnetism,zoom:Z.getConfig().zoom},cells:l.toJSON().cells,nodes:l.getNodes().map(A=>({id:A.id,type:A.shape,position:A.getPosition(),size:A.getSize(),label:A.attr("label/text"),data:A.getData()})),edges:l.getEdges().map(A=>({id:A.id,source:A.getSourceCellId(),target:A.getTargetCellId()})),workflows:[]},I=new Set;if(l.getNodes().forEach(A=>{const F=A.getData();F!=null&&F.events&&Array.isArray(F.events)&&F.events.forEach(T=>{var w;T.action==="callProcess"&&((w=T.params)!=null&&w.processId)&&I.add(T.params.processId)})}),I.size>0)try{const A=localStorage.getItem("saved-workflows");if(A){const F=JSON.parse(A);N.workflows=F.filter(T=>I.has(T.id))}}catch(A){console.error("加载流程数据失败:",A)}const P=oo(N,"scada-export");oe(`已导出为 ${P}`,"success")}catch(N){console.error("导出失败",N),oe("导出失败,请查看控制台","error")}};return E({save:$,import:z,export:Q,preview:W,workflow:Y,zoomIn:d,zoomOut:p,clearAll:V,alignLeft:x,alignCenter:y,alignRight:b,alignTop:D,alignMiddle:_,alignBottom:S,distributeHorizontal:C,distributeVertical:k,addNode:r,updateNode:c,deleteNode:f,getSelectedNode:()=>a.value,selectNode:N=>{if(!l)return!1;const I=l.getCellById(N);return I?(l.select(I),!0):!1},clearSelection:()=>{l&&(l.unselect(l.getSelectedCells()),a.value=null)},getGraph:()=>l,getCanvasData:()=>l?{version:"1.0.0",timestamp:at(rt()),config:Z.getConfig(),cells:l.toJSON().cells,nodes:l.getNodes().map(N=>({id:N.id,type:N.shape,position:N.getPosition(),size:N.getSize(),label:N.attr("label/text"),data:N.getData()})),edges:l.getEdges().map(N=>({id:N.id,source:N.getSourceCellId(),target:N.getTargetCellId()}))}:null,loadCanvasData:N=>{if(!l)return!1;try{return l.clearCells(),l.fromJSON({cells:N.cells}),N.config&&Z.updateConfig(N.config),!0}catch(I){return console.error("加载画布数据失败:",I),!1}},getAllNodes:()=>l?l.getNodes().map(N=>({id:N.id,type:N.shape,position:N.getPosition(),size:N.getSize(),label:N.attr("label/text"),data:N.getData()})):[],getNodeById:N=>{if(!l)return null;const I=l.getCellById(N);if(!I||!I.isNode())return null;const P=I;return{id:P.id,type:P.shape,position:P.getPosition(),size:P.getSize(),label:P.attr("label/text"),data:P.getData()}},getConfigManager:()=>Z,updateCanvasConfig:N=>{Z.updateConfig(N)},setZoom:N=>{Z.setZoom(N)},setCanvasSize:(N,I)=>{Z.updateSize({width:N,height:I})},setBackgroundColor:N=>{Z.updateBackground({color:N})},getAnimationEngine:()=>Be}),(N,I)=>(e.openBlock(),e.createElementBlock("div",ap,[e.createVNode(Ge,{"selected-nodes-count":s.value,onSave:$,onImport:z,onWorkflow:Y,onPreview:W,onExport:Q,onZoomIn:d,onZoomOut:p,onClearAll:V,onAlignLeft:x,onAlignCenter:y,onAlignRight:b,onAlignTop:D,onAlignMiddle:_,onAlignBottom:S,onDistributeHorizontal:C,onDistributeVertical:k},null,8,["selected-nodes-count"]),e.createElementVNode("input",{ref_key:"fileInputRef",ref:h,type:"file",accept:".json",style:{display:"none"},onChange:O},null,544),e.createElementVNode("div",rp,[e.createVNode(Xe,{onAddComponent:r}),e.createVNode(Kn,{ref_key:"canvasAreaRef",ref:o},null,512),e.createVNode(lt,{ref:"propertyPanelRef","selected-node":a.value,"selected-edge":t.value,onUpdateNode:c,onDeleteNode:f,onUpdateEdge:u,onDeleteEdge:v},null,8,["selected-node","selected-edge"])]),e.createVNode(Ed,{"auth-code":g.authCode,"custom-footer":g.customFooter},null,8,["auth-code","custom-footer"]),e.createVNode(op,{visible:m.value,"onUpdate:visible":I[0]||(I[0]=P=>m.value=P),"scada-graph":e.unref(l),onClose:I[1]||(I[1]=P=>m.value=!1)},null,8,["visible","scada-graph"])]))}}),[["__scopeId","data-v-3a288b48"]]),lp={ScadaCanvas:Xo,PropertyPanel:lt,Header:Ge,ComponentLibrary:Xe,CanvasConfigPanel:Ye,BindingCard:Qe,EventCard:Je,BasicPropertiesTab:Ke,AttributeConfigDialog:et,CustomCodeDialog:tt},Yo=g=>{Object.entries(lp).forEach(([E,o])=>{g.component(E,o)})},sp={install:Yo,version:"1.0.0"};G.AttributeConfigDialog=et,G.BasicComponents=wn,G.BasicPropertiesTab=Ke,G.BindingCard=Qe,G.CanvasConfigPanel=Ye,G.ComponentLibrary=Xe,G.CustomCodeDialog=tt,G.EventCard=Je,G.Header=Ge,G.IoTComponents=Sn,G.PropertyPanel=lt,G.STORAGE_KEYS=Ie,G.ScadaCanvas=Xo,G.animationEngine=Be,G.canvasConfigItems=zn,G.canvasConfigManager=Z,G.componentRegistry=Pe,G.default=sp,G.defaultCanvasConfig=je,G.exportToJSON=oo,G.formatTimestamp=at,G.generateEventId=no,G.generateNodeId=dc,G.generateUniqueId=nt,G.getCurrentTimestamp=rt,G.install=Yo,G.loadFromLocal=ic,G.loadFromSession=eo,G.randomPosition=ao,G.removeFromLocal=cc,G.removeFromSession=to,G.saveToLocal=sc,G.saveToSession=ot,G.showMessage=oe,G.sizePresetMap=Re,Object.defineProperties(G,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}})});
|