@nywqs/scada-engine 1.1.24 → 1.1.26

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.
Files changed (107) hide show
  1. package/README.md +1 -1
  2. package/dist/index.d.ts +3 -159
  3. package/dist/scada-engine.css +1 -1
  4. package/dist/scada-engine.es.js +22244 -10991
  5. package/dist/scada-engine.umd.js +34 -17
  6. package/dist/{components → src/components}/BindingCard.d.ts +4 -0
  7. package/dist/src/components/ComponentLibrary.d.ts +34 -0
  8. package/dist/src/components/ContextMenu.d.ts +63 -0
  9. package/dist/src/components/DataPropertiesTab.d.ts +26 -0
  10. package/dist/{components/PropertyPanel.d.ts → src/components/DataSourceDialog.d.ts} +10 -12
  11. package/dist/{components → src/components}/DevicePointSelector.d.ts +7 -3
  12. package/dist/{components → src/components}/Header.d.ts +2 -0
  13. package/dist/src/components/PropertyPanel.d.ts +45 -0
  14. package/dist/src/index.d.ts +158 -0
  15. package/dist/{scada-components → src/scada-components}/types.d.ts +1 -0
  16. package/dist/src/services/dataSourceManager.d.ts +121 -0
  17. package/dist/src/services/mqttService.d.ts +110 -0
  18. package/dist/src/utils/canvasConfigWatcher.d.ts +39 -0
  19. package/dist/src/utils/canvasDataHandler.d.ts +70 -0
  20. package/dist/src/utils/contextMenuManager.d.ts +27 -0
  21. package/dist/src/utils/dataBindingService.d.ts +42 -0
  22. package/dist/src/utils/edgeOperations.d.ts +57 -0
  23. package/dist/src/utils/eventManager.d.ts +62 -0
  24. package/dist/src/utils/graphOperations.d.ts +85 -0
  25. package/dist/src/utils/index.d.ts +18 -0
  26. package/dist/src/utils/nodeOperations.d.ts +77 -0
  27. package/dist/src/utils/storageUtils.d.ts +32 -0
  28. package/package.json +2 -1
  29. package/dist/components/ComponentLibrary.d.ts +0 -6
  30. package/dist/components/DataPropertiesTab.d.ts +0 -42
  31. package/dist/mock/deviceData.d.ts +0 -39
  32. package/dist/utils/index.d.ts +0 -10
  33. package/dist/utils/storageUtils.d.ts +0 -55
  34. package/dist/views/preview/PreviewView.d.ts +0 -2
  35. package/dist/{components → src/components}/AttributeConfigDialog.d.ts +0 -0
  36. package/dist/{components → src/components}/BasicPropertiesTab.d.ts +0 -0
  37. package/dist/{components → src/components}/CanvasArea.d.ts +0 -0
  38. package/dist/{components → src/components}/CanvasConfigPanel.d.ts +0 -0
  39. package/dist/{components → src/components}/CustomCodeDialog.d.ts +0 -0
  40. package/dist/{components → src/components}/EdgePropertiesTab.d.ts +0 -0
  41. package/dist/{components → src/components}/EventCard.d.ts +0 -0
  42. package/dist/{components → src/components}/Footer.d.ts +0 -0
  43. package/dist/{components → src/components}/MappingConfigurator.d.ts +0 -0
  44. package/dist/{components → src/components}/WorkflowSelectorDialog.d.ts +0 -0
  45. package/dist/{main.d.ts → src/main.d.ts} +0 -0
  46. package/dist/{scada-components → src/scada-components}/basic/circle.d.ts +0 -0
  47. package/dist/{scada-components → src/scada-components}/basic/index.d.ts +0 -0
  48. package/dist/{scada-components → src/scada-components}/basic/rect.d.ts +0 -0
  49. package/dist/{scada-components → src/scada-components}/basic/text.d.ts +0 -0
  50. package/dist/{scada-components → src/scada-components}/canvas/config.d.ts +0 -0
  51. package/dist/{scada-components → src/scada-components}/canvas/index.d.ts +0 -0
  52. package/dist/{scada-components → src/scada-components}/canvas/manager.d.ts +0 -0
  53. package/dist/{scada-components → src/scada-components}/canvas/types.d.ts +0 -0
  54. package/dist/{scada-components → src/scada-components}/index.d.ts +0 -0
  55. package/dist/{scada-components → src/scada-components}/iot/AlarmLight3D.d.ts +0 -0
  56. package/dist/{scada-components → src/scada-components}/iot/Conveyor3D.d.ts +0 -0
  57. package/dist/{scada-components → src/scada-components}/iot/Cylinder3D.d.ts +0 -0
  58. package/dist/{scada-components → src/scada-components}/iot/EChartsGauge.d.ts +0 -0
  59. package/dist/{scada-components → src/scada-components}/iot/EChartsLine.d.ts +0 -0
  60. package/dist/{scada-components → src/scada-components}/iot/Filter3D.d.ts +0 -0
  61. package/dist/{scada-components → src/scada-components}/iot/HeatExchanger3D.d.ts +0 -0
  62. package/dist/{scada-components → src/scada-components}/iot/Light3D.d.ts +0 -0
  63. package/dist/{scada-components → src/scada-components}/iot/Motor3D.d.ts +0 -0
  64. package/dist/{scada-components → src/scada-components}/iot/Pipe3D.d.ts +0 -0
  65. package/dist/{scada-components → src/scada-components}/iot/Pump3D.d.ts +0 -0
  66. package/dist/{scada-components → src/scada-components}/iot/Switch3D.d.ts +0 -0
  67. package/dist/{scada-components → src/scada-components}/iot/Tank3D.d.ts +0 -0
  68. package/dist/{scada-components → src/scada-components}/iot/Tee3D.d.ts +0 -0
  69. package/dist/{scada-components → src/scada-components}/iot/TemperatureSensor3D.d.ts +0 -0
  70. package/dist/{scada-components → src/scada-components}/iot/Valve3D.d.ts +0 -0
  71. package/dist/{scada-components → src/scada-components}/iot/echarts-gauge-presets.d.ts +0 -0
  72. package/dist/{scada-components → src/scada-components}/iot/echarts-gauge.d.ts +0 -0
  73. package/dist/{scada-components → src/scada-components}/iot/echarts-line-presets.d.ts +0 -0
  74. package/dist/{scada-components → src/scada-components}/iot/echarts-line.d.ts +0 -0
  75. package/dist/{scada-components → src/scada-components}/iot/index.d.ts +0 -0
  76. package/dist/{scada-components → src/scada-components}/iot/industrial-3d-extended.d.ts +0 -0
  77. package/dist/{scada-components → src/scada-components}/iot/industrial-3d-fluid.d.ts +0 -0
  78. package/dist/{scada-components → src/scada-components}/iot/industrial-3d.d.ts +0 -0
  79. package/dist/{scada-components → src/scada-components}/iot/light.d.ts +0 -0
  80. package/dist/{scada-components → src/scada-components}/iot/switch.d.ts +0 -0
  81. package/dist/{scada-components → src/scada-components}/registry.d.ts +0 -0
  82. package/dist/{types → src/types}/binding.d.ts +0 -0
  83. package/dist/{types → src/types}/device.d.ts +0 -0
  84. package/dist/{types → src/types}/workflow.d.ts +0 -0
  85. package/dist/{utils → src/utils}/animationEngine.d.ts +0 -0
  86. package/dist/{utils → src/utils}/authCrypto.d.ts +0 -0
  87. package/dist/{utils → src/utils}/commonUtils.d.ts +0 -0
  88. package/dist/{utils → src/utils}/eventUtils.d.ts +0 -0
  89. package/dist/{utils → src/utils}/fileUtils.d.ts +0 -0
  90. package/dist/{utils → src/utils}/messageUtils.d.ts +0 -0
  91. package/dist/{utils → src/utils}/nodePropertyUtils.d.ts +0 -0
  92. package/dist/{views → src/views}/workflow/WorkflowDialog.d.ts +1 -1
  93. /package/dist/{views → src/views}/workflow/WorkflowEditor.d.ts +0 -0
  94. /package/dist/{views → src/views}/workflow/components/AddNodeMenu.d.ts +0 -0
  95. /package/dist/{views → src/views}/workflow/components/ElementSelector.d.ts +0 -0
  96. /package/dist/{views → src/views}/workflow/components/PropertyPanel.d.ts +0 -0
  97. /package/dist/{views → src/views}/workflow/components/WorkflowToolbar.d.ts +0 -0
  98. /package/dist/{views → src/views}/workflow/components/node-configs/ClearTimerConfig.d.ts +0 -0
  99. /package/dist/{views → src/views}/workflow/components/node-configs/ConditionConfig.d.ts +0 -0
  100. /package/dist/{views → src/views}/workflow/components/node-configs/CustomCodeConfig.d.ts +0 -0
  101. /package/dist/{views → src/views}/workflow/components/node-configs/GetPropertyConfig.d.ts +0 -0
  102. /package/dist/{views → src/views}/workflow/components/node-configs/HttpRequestConfig.d.ts +0 -0
  103. /package/dist/{views → src/views}/workflow/components/node-configs/SetPropertyConfig.d.ts +0 -0
  104. /package/dist/{views → src/views}/workflow/components/node-configs/TimerConfig.d.ts +0 -0
  105. /package/dist/{views → src/views}/workflow/config/nodeConfigRegistry.d.ts +0 -0
  106. /package/dist/{views → src/views}/workflow/services/canvasElementService.d.ts +0 -0
  107. /package/dist/{views → src/views}/workflow/types/node.d.ts +0 -0
@@ -1,9 +1,26 @@
1
- (function(I,e){typeof exports=="object"&&typeof module<"u"?e(exports,require("vue"),require("@antv/x6"),require("@antv/x6-plugin-selection"),require("@antv/x6-plugin-snapline"),require("echarts")):typeof define=="function"&&define.amd?define(["exports","vue","@antv/x6","@antv/x6-plugin-selection","@antv/x6-plugin-snapline","echarts"],e):(I=typeof globalThis<"u"?globalThis:I||self,e(I.ScadaEngine={},I.Vue,I.X6,I.X6PluginSelection,I.X6PluginSnapline,I.echarts))})(this,function(I,e,ee,Ke,zt,Mt){"use strict";var U1=Object.defineProperty;var W1=(I,e,ee)=>e in I?U1(I,e,{enumerable:!0,configurable:!0,writable:!0,value:ee}):I[e]=ee;var ke=(I,e,ee)=>W1(I,typeof e!="symbol"?e+"":e,ee);/*!
2
- * @nywqs/scada-engine v1.1.24
1
+ (function($e,e){typeof exports=="object"&&typeof module<"u"?e(exports,require("vue"),require("@antv/x6"),require("@antv/x6-plugin-selection"),require("@antv/x6-plugin-snapline"),require("echarts")):typeof define=="function"&&define.amd?define(["exports","vue","@antv/x6","@antv/x6-plugin-selection","@antv/x6-plugin-snapline","echarts"],e):($e=typeof globalThis<"u"?globalThis:$e||self,e($e.ScadaEngine={},$e.Vue,$e.X6,$e.X6PluginSelection,$e.X6PluginSnapline,$e.echarts))})(this,function($e,e,Le,zt,mo,kc){"use strict";var M_=Object.defineProperty;var uc=$e=>{throw TypeError($e)};var R_=($e,e,Le)=>e in $e?M_($e,e,{enumerable:!0,configurable:!0,writable:!0,value:Le}):$e[e]=Le;var Se=($e,e,Le)=>R_($e,typeof e!="symbol"?e+"":e,Le),Gi=($e,e,Le)=>e.has($e)||uc("Cannot "+Le);var W=($e,e,Le)=>(Gi($e,e,"read from private field"),Le?Le.call($e):e.get($e)),Fe=($e,e,Le)=>e.has($e)?uc("Cannot add the same private member more than once"):e instanceof WeakSet?e.add($e):e.set($e,Le),Oe=($e,e,Le,zt)=>(Gi($e,e,"write to private field"),zt?zt.call($e,Le):e.set($e,Le),Le),Be=($e,e,Le)=>(Gi($e,e,"access private method"),Le);var fo=($e,e,Le,zt)=>({set _(mo){Oe($e,e,mo,Le)},get _(){return W($e,e,zt)}});/*!
2
+ * @nywqs/scada-engine v1.1.26
3
3
  * Copyright (c) 2025 leoncheng
4
4
  * Licensed under proprietary license - see LICENSE file
5
5
  * Contact: nywqs@outlook.com
6
- */function At(s){const l=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(s){for(const o in s)if(o!=="default"){const r=Object.getOwnPropertyDescriptor(s,o);Object.defineProperty(l,o,r.get?r:{enumerable:!0,get:()=>s[o]})}}return l.default=s,Object.freeze(l)}const Qe=At(Mt);class Ze extends ee.Node{}(function(s){function l(o){const r=[],t=ee.Markup.getForeignObjectMarkup();return o?r.push({tagName:o,selector:"body"},t):r.push(t),r}s.config({view:"vue-shape-view",markup:l(),attrs:{body:{fill:"none",stroke:"none",refWidth:"100%",refHeight:"100%"},fo:{refWidth:"100%",refHeight:"100%"}},propHooks(o){if(o.markup==null){const r=o.primer;if(r){o.markup=l(r);let t={};switch(r){case"circle":t={refCx:"50%",refCy:"50%",refR:"50%"};break;case"ellipse":t={refCx:"50%",refCy:"50%",refRx:"50%",refRy:"50%"};break}o.attrs=ee.ObjectExt.merge({},{body:Object.assign({refWidth:null,refHeight:null},t)},o.attrs||{})}}return o}}),ee.Node.registry.register("vue-shape",s,!0)})(Ze||(Ze={}));var Pt=function(s,l){var o={};for(var r in s)Object.prototype.hasOwnProperty.call(s,r)&&l.indexOf(r)<0&&(o[r]=s[r]);if(s!=null&&typeof Object.getOwnPropertySymbols=="function")for(var t=0,r=Object.getOwnPropertySymbols(s);t<r.length;t++)l.indexOf(r[t])<0&&Object.prototype.propertyIsEnumerable.call(s,r[t])&&(o[r[t]]=s[r[t]]);return o};const et={};function ne(s){const{shape:l,component:o,inherit:r}=s,t=Pt(s,["shape","component","inherit"]);if(!l)throw new Error("should specify shape in config");et[l]={component:o},ee.Graph.registerNode(l,Object.assign({inherit:r||"vue-shape"},t),!0)}e.reactive({});class Ee extends ee.NodeView{getComponentContainer(){return this.selectors&&this.selectors.foContent}confirmUpdate(l){const o=super.confirmUpdate(l);return this.handleAction(o,Ee.action,()=>{this.renderVueComponent()})}targetId(){return`${this.graph.view.cid}:${this.cell.id}`}renderVueComponent(){this.unmountVueComponent();const l=this.getComponentContainer(),o=this.cell,r=this.graph;if(l){const{component:t}=et[o.shape];t&&(this.vm=e.createApp({render(){return e.h(t,{node:o,graph:r})},provide(){return{getNode:()=>o,getGraph:()=>r}}}),this.vm.mount(l))}}unmountVueComponent(){const l=this.getComponentContainer();return this.vm&&(this.vm.unmount(),this.vm=null),l&&(l.innerHTML=""),l}onMouseDown(l,o,r){const t=l.target;if(t.tagName.toLowerCase()==="input"){const c=t.getAttribute("type");if(c==null||["text","password","number","email","search","tel","url"].includes(c))return}super.onMouseDown(l,o,r)}unmount(){return this.unmountVueComponent(),super.unmount(),this}}(function(s){s.action="vue",s.config({bootstrap:[s.action],actions:{component:s.action}}),ee.NodeView.registry.register("vue-shape-view",s,!0)})(Ee||(Ee={}));const Ot={xmlns:"http://www.w3.org/2000/svg","xmlns:xlink":"http://www.w3.org/1999/xlink",viewBox:"0 0 32 32"},Lt=e.defineComponent({name:"AlignHorizontalCenter",render:function(l,o){return e.openBlock(),e.createElementBlock("svg",Ot,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)]))}}),Rt={xmlns:"http://www.w3.org/2000/svg","xmlns:xlink":"http://www.w3.org/1999/xlink",viewBox:"0 0 32 32"},Ut=e.defineComponent({name:"AlignHorizontalLeft",render:function(l,o){return e.openBlock(),e.createElementBlock("svg",Rt,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)]))}}),Wt={xmlns:"http://www.w3.org/2000/svg","xmlns:xlink":"http://www.w3.org/1999/xlink",viewBox:"0 0 32 32"},Ft=e.defineComponent({name:"AlignHorizontalRight",render:function(l,o){return e.openBlock(),e.createElementBlock("svg",Wt,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)]))}}),Gt={xmlns:"http://www.w3.org/2000/svg","xmlns:xlink":"http://www.w3.org/1999/xlink",viewBox:"0 0 32 32"},jt=e.defineComponent({name:"AlignVerticalBottom",render:function(l,o){return e.openBlock(),e.createElementBlock("svg",Gt,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)]))}}),Ht={xmlns:"http://www.w3.org/2000/svg","xmlns:xlink":"http://www.w3.org/1999/xlink",viewBox:"0 0 32 32"},qt=e.defineComponent({name:"AlignVerticalCenter",render:function(l,o){return e.openBlock(),e.createElementBlock("svg",Ht,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)]))}}),Jt={xmlns:"http://www.w3.org/2000/svg","xmlns:xlink":"http://www.w3.org/1999/xlink",viewBox:"0 0 32 32"},Yt=e.defineComponent({name:"AlignVerticalTop",render:function(l,o){return e.openBlock(),e.createElementBlock("svg",Jt,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)]))}}),Xt={xmlns:"http://www.w3.org/2000/svg","xmlns:xlink":"http://www.w3.org/1999/xlink",viewBox:"0 0 32 32"},Kt=e.defineComponent({name:"DistributeHorizontalCenter",render:function(l,o){return e.openBlock(),e.createElementBlock("svg",Xt,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)]))}}),Qt={xmlns:"http://www.w3.org/2000/svg","xmlns:xlink":"http://www.w3.org/1999/xlink",viewBox:"0 0 32 32"},Zt=e.defineComponent({name:"DistributeVerticalCenter",render:function(l,o){return e.openBlock(),e.createElementBlock("svg",Qt,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)]))}}),eo={class:"scada-header"},to={class:"header-left"},oo={class:"header-center"},lo={class:"tool-group"},no={key:0,class:"divider"},ao={key:1,class:"tool-group"},ro={key:2,class:"divider"},io={key:3,class:"tool-group"},so={class:"header-right"},co={class:"tool-group"},po=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(s,{emit:l}){const o=s,r=l;return(t,a)=>(e.openBlock(),e.createElementBlock("header",eo,[e.createElementVNode("div",to,[e.renderSlot(t.$slots,"left",{},()=>[a[16]||(a[16]=e.createElementVNode("h1",{class:"logo"},"SCADA 组态引擎",-1)),a[17]||(a[17]=e.createElementVNode("span",{class:"version"},"v1.0.0",-1))],!0)]),e.createElementVNode("div",oo,[e.createElementVNode("div",lo,[e.createElementVNode("button",{class:"toolbar-btn",onClick:a[0]||(a[0]=c=>r("zoomIn")),title:"放大"},[...a[18]||(a[18]=[e.createElementVNode("span",{class:"icon"},"+",-1)])]),e.createElementVNode("button",{class:"toolbar-btn",onClick:a[1]||(a[1]=c=>r("zoomOut")),title:"缩小"},[...a[19]||(a[19]=[e.createElementVNode("span",{class:"icon"},"-",-1)])]),e.createElementVNode("button",{class:"toolbar-btn",onClick:a[2]||(a[2]=c=>r("clearAll")),title:"清空画布"},[...a[20]||(a[20]=[e.createElementVNode("span",{class:"icon"},"🗑",-1)])])]),o.selectedNodesCount>=2?(e.openBlock(),e.createElementBlock("div",no)):e.createCommentVNode("",!0),o.selectedNodesCount>=2?(e.openBlock(),e.createElementBlock("div",ao,[e.createElementVNode("button",{class:"toolbar-btn",onClick:a[3]||(a[3]=c=>r("alignLeft")),title:"左对齐"},[e.createVNode(e.unref(Ut),{class:"icon-svg"})]),e.createElementVNode("button",{class:"toolbar-btn",onClick:a[4]||(a[4]=c=>r("alignCenter")),title:"水平居中"},[e.createVNode(e.unref(Lt),{class:"icon-svg"})]),e.createElementVNode("button",{class:"toolbar-btn",onClick:a[5]||(a[5]=c=>r("alignRight")),title:"右对齐"},[e.createVNode(e.unref(Ft),{class:"icon-svg"})]),e.createElementVNode("button",{class:"toolbar-btn",onClick:a[6]||(a[6]=c=>r("alignTop")),title:"顶部对齐"},[e.createVNode(e.unref(Yt),{class:"icon-svg"})]),e.createElementVNode("button",{class:"toolbar-btn",onClick:a[7]||(a[7]=c=>r("alignMiddle")),title:"垂直居中"},[e.createVNode(e.unref(qt),{class:"icon-svg"})]),e.createElementVNode("button",{class:"toolbar-btn",onClick:a[8]||(a[8]=c=>r("alignBottom")),title:"底部对齐"},[e.createVNode(e.unref(jt),{class:"icon-svg"})])])):e.createCommentVNode("",!0),o.selectedNodesCount>=3?(e.openBlock(),e.createElementBlock("div",ro)):e.createCommentVNode("",!0),o.selectedNodesCount>=3?(e.openBlock(),e.createElementBlock("div",io,[e.createElementVNode("button",{class:"toolbar-btn",onClick:a[9]||(a[9]=c=>r("distributeHorizontal")),title:"横向分布"},[e.createVNode(e.unref(Kt),{class:"icon-svg"})]),e.createElementVNode("button",{class:"toolbar-btn",onClick:a[10]||(a[10]=c=>r("distributeVertical")),title:"纵向分布"},[e.createVNode(e.unref(Zt),{class:"icon-svg"})])])):e.createCommentVNode("",!0)]),e.createElementVNode("div",so,[e.createElementVNode("div",co,[e.createElementVNode("button",{class:"header-btn",onClick:a[11]||(a[11]=c=>r("workflow")),title:"流程编排"},[...a[21]||(a[21]=[e.createElementVNode("span",{class:"icon"},"⚡",-1),e.createElementVNode("span",null,"流程编排",-1)])]),e.createElementVNode("button",{class:"header-btn",onClick:a[12]||(a[12]=c=>r("import")),title:"导入"},[...a[22]||(a[22]=[e.createElementVNode("span",{class:"icon"},"📂",-1),e.createElementVNode("span",null,"导入",-1)])]),e.createElementVNode("button",{class:"header-btn",onClick:a[13]||(a[13]=c=>r("export")),title:"导出"},[...a[23]||(a[23]=[e.createElementVNode("span",{class:"icon"},"📤",-1),e.createElementVNode("span",null,"导出",-1)])]),e.createElementVNode("button",{class:"header-btn",onClick:a[14]||(a[14]=c=>r("preview")),title:"预览"},[...a[24]||(a[24]=[e.createElementVNode("span",{class:"icon"},"👁",-1),e.createElementVNode("span",null,"预览",-1)])]),e.createElementVNode("button",{class:"header-btn",onClick:a[15]||(a[15]=c=>r("save")),title:"保存"},[...a[25]||(a[25]=[e.createElementVNode("span",{class:"icon"},"💾",-1),e.createElementVNode("span",null,"保存",-1)])])])])]))}}),P=(s,l)=>{const o=s.__vccOpts||s;for(const[r,t]of l)o[r]=t;return o},Ce=P(po,[["__scopeId","data-v-9bbedc41"]]),_e=[{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}],tt={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:"矩形透明度"},..._e]},ot={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:"圆形透明度"},..._e]},lt={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:"边框颜色"},..._e]},mo=Object.freeze(Object.defineProperty({__proto__:null,CircleComponent:ot,RectComponent:tt,TextComponent:lt},Symbol.toStringTag,{value:"Module"})),nt={metadata:{id:"light",name:"3D灯泡",category:"iot",icon:"💡",description:"3D仿真IoT灯泡控制组件",version:"2.0.0"},shape:"light-3d-vue",width:100,height:120,label:"",attrs:{body:{fill:"transparent",stroke:"transparent"}},data:{type:"light",state:!1,color:"#fbbf24",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:"state",label:"灯泡状态",type:"select",path:"data.state",defaultValue:!1,options:[{label:"关闭",value:!1},{label:"开启",value:!0}],description:"灯泡开关状态"},{key:"color",label:"灯光颜色",type:"color",path:"data.color",defaultValue:"#fbbf24",description:"灯泡发光颜色"},{key:"deviceId",label:"设备ID",type:"text",path:"data.deviceId",defaultValue:"",description:"绑定的设备ID"},{key:"property",label:"设备属性",type:"text",path:"data.property",defaultValue:"",description:"绑定的设备属性名称"}]},at={metadata:{id:"switch",name:"3D开关",category:"iot",icon:"🔘",description:"3D仿真IoT开关控制组件",version:"2.0.0"},shape:"switch-3d-vue",width:140,height:100,label:"",attrs:{body:{fill:"transparent",stroke:"transparent"}},data:{type:"switch",state:!1,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:"state",label:"开关状态",type:"select",path:"data.state",defaultValue:!1,options:[{label:"关闭",value:!1},{label:"开启",value:!0}],description:"开关当前状态"},{key:"deviceId",label:"设备ID",type:"text",path:"data.deviceId",defaultValue:"",description:"绑定的设备ID"},{key:"property",label:"设备属性",type:"text",path:"data.property",defaultValue:"",description:"绑定的设备属性名称"}]},rt=[{id:"basic",name:"基础仪表盘",config:{min:0,max:100,splitNumber:5,radius:"100%",axisLine:{lineStyle:{width:10,color:[[.3,"#67e0e3"],[.7,"#37a2da"],[1,"#fd666d"]]}},axisTick:{distance:2,length:5,lineStyle:{color:"#fff",width:1}},splitLine:{distance:2,length:10,lineStyle:{color:"#fff",width:2}},axisLabel:{distance:20,fontSize:12,color:"#999"},title:{offsetCenter:[0,"90%"],fontSize:14,color:"#999"},detail:{fontSize:30,offsetCenter:[0,"45%"],color:"#fff",formatter:"{value}"}}},{id:"temperature",name:"温度仪表盘",config:{min:-20,max:50,splitNumber:5,radius:"100%",axisLine:{lineStyle:{width:10,color:[[.2,"#2563eb"],[.5,"#22c55e"],[.8,"#f59e0b"],[1,"#ef4444"]]}},axisTick:{distance:2,length:5,lineStyle:{color:"#fff",width:1}},splitLine:{distance:2,length:10,lineStyle:{color:"#fff",width:2}},axisLabel:{distance:10,fontSize:12,color:"#999"},title:{offsetCenter:[0,"90%"],fontSize:14,color:"#999"},detail:{fontSize:30,offsetCenter:[0,"45%"],color:"#fff",formatter:"{value}°C"}}},{id:"humidity",name:"湿度仪表盘",config:{min:0,max:100,splitNumber:5,radius:"100%",axisLine:{lineStyle:{width:10,color:[[.3,"#fbbf24"],[.7,"#3b82f6"],[1,"#1e40af"]]}},axisTick:{distance:2,length:5,lineStyle:{color:"#fff",width:1}},splitLine:{distance:2,length:10,lineStyle:{color:"#fff",width:2}},axisLabel:{distance:20,fontSize:12,color:"#999"},title:{offsetCenter:[0,"90%"],fontSize:14,color:"#999"},detail:{fontSize:30,offsetCenter:[0,"45%"],color:"#fff",formatter:"{value}%"}}},{id:"speed",name:"速度仪表盘",config:{min:0,max:200,splitNumber:10,startAngle:225,endAngle:-45,radius:"100%",axisLine:{lineStyle:{width:10,color:[[.4,"#10b981"],[.7,"#f59e0b"],[1,"#ef4444"]]}},axisTick:{distance:2,length:5,lineStyle:{color:"#fff",width:1}},splitLine:{distance:2,length:10,lineStyle:{color:"#fff",width:2}},axisLabel:{distance:20,fontSize:12,color:"#999"},title:{offsetCenter:[0,"90%"],fontSize:14,color:"#999"},detail:{fontSize:30,offsetCenter:[0,"45%"],color:"#fff",formatter:"{value} km/h"}}},{id:"pressure",name:"压力仪表盘",config:{min:0,max:10,splitNumber:5,radius:"100%",axisLine:{lineStyle:{width:10,color:[[.5,"#22c55e"],[.8,"#f59e0b"],[1,"#dc2626"]]}},axisTick:{distance:2,length:5,lineStyle:{color:"#fff",width:1}},splitLine:{distance:2,length:10,lineStyle:{color:"#fff",width:2}},axisLabel:{distance:20,fontSize:12,color:"#999"},title:{offsetCenter:[0,"90%"],fontSize:14,color:"#999"},detail:{fontSize:30,offsetCenter:[0,"45%"],color:"#fff",formatter:"{value} MPa"}}},{id:"rpm",name:"转速仪表盘",config:{min:0,max:8e3,splitNumber:8,startAngle:225,endAngle:-45,radius:"100%",axisLine:{lineStyle:{width:10,color:[[.6,"#06b6d4"],[.85,"#eab308"],[1,"#dc2626"]]}},axisTick:{distance:2,length:5,lineStyle:{color:"#fff",width:1}},splitLine:{distance:2,length:10,lineStyle:{color:"#fff",width:2}},axisLabel:{distance:20,fontSize:12,color:"#999"},title:{offsetCenter:[0,"90%"],fontSize:14,color:"#999"},detail:{fontSize:30,offsetCenter:[0,"45%"],color:"#fff",formatter:"{value} RPM"}}},{id:"battery",name:"电池仪表盘",config:{min:0,max:100,splitNumber:5,radius:"100%",axisLine:{lineStyle:{width:10,color:[[.2,"#dc2626"],[.5,"#f59e0b"],[1,"#22c55e"]]}},axisTick:{distance:2,length:5,lineStyle:{color:"#fff",width:1}},splitLine:{distance:2,length:10,lineStyle:{color:"#fff",width:2}},axisLabel:{distance:10,fontSize:12,color:"#999"},title:{offsetCenter:[0,"80%"],fontSize:12,color:"#999"},detail:{fontSize:20,offsetCenter:[0,"45%"],color:"#fff",formatter:"{value}%"}}},{id:"power",name:"功率仪表盘",config:{min:0,max:100,splitNumber:5,radius:"100%",axisLine:{lineStyle:{width:10,color:[[.3,"#64748b"],[.7,"#3b82f6"],[1,"#8b5cf6"]]}},axisTick:{distance:2,length:5,lineStyle:{color:"#fff",width:1}},splitLine:{distance:2,length:10,lineStyle:{color:"#fff",width:2}},axisLabel:{distance:10,fontSize:12,color:"#999"},title:{offsetCenter:[0,"90%"],fontSize:12,color:"#999"},detail:{fontSize:20,offsetCenter:[0,"45%"],color:"#fff",formatter:"{value} kW"}}}];function fo(s){return rt.find(l=>l.id===s)}const it={metadata:{id:"echarts-gauge",name:"ECharts仪表盘",category:"iot",icon:"📈",description:"ECharts 仪表盘数据展示组件,支持丰富的配置选项",version:"1.0.0"},shape:"echarts-vue",width:200,height:200,label:"",attrs:{body:{fill:"transparent",stroke:"transparent"}},data:{type:"echarts-gauge",presetId:"basic",value:50,title:"SCORE",name:"Pressure"},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:"presetId",label:"仪表盘类型",type:"select",path:"data.presetId",defaultValue:"basic",options:rt.map(s=>({label:s.name,value:s.id})),description:"选择预设的仪表盘类型,会自动应用对应的配置"},{key:"value",label:"当前值",type:"number",path:"data.value",defaultValue:50,description:"仪表盘当前显示值"},{key:"title",label:"标题",type:"text",path:"data.title",defaultValue:"SCORE",description:"仪表盘标题"},{key:"name",label:"系列名称",type:"text",path:"data.name",defaultValue:"Pressure",description:"显示在 tooltip 中的系列名称"}]},st=[{id:"basic",name:"基础折线图",config:{smooth:!1,lineStyle:{width:2,color:"#5470c6"},areaStyle:null,symbol:"circle",symbolSize:6,radius:"100%"}},{id:"smooth",name:"平滑曲线",config:{smooth:!0,lineStyle:{width:2,color:"#91cc75"},areaStyle:null,symbol:"circle",symbolSize:6}},{id:"area",name:"区域折线图",config:{smooth:!1,lineStyle:{width:2,color:"#5470c6"},areaStyle:{color:{type:"linear",x:0,y:0,x2:0,y2:1,colorStops:[{offset:0,color:"rgba(84, 112, 198, 0.3)"},{offset:1,color:"rgba(84, 112, 198, 0.05)"}]}},symbol:"circle",symbolSize:6}},{id:"smooth-area",name:"平滑区域图",config:{smooth:!0,lineStyle:{width:2,color:"#91cc75"},areaStyle:{color:{type:"linear",x:0,y:0,x2:0,y2:1,colorStops:[{offset:0,color:"rgba(145, 204, 117, 0.3)"},{offset:1,color:"rgba(145, 204, 117, 0.05)"}]}},symbol:"circle",symbolSize:6}},{id:"dashed",name:"虚线折线图",config:{smooth:!1,lineStyle:{width:2,color:"#fac858",type:"dashed"},areaStyle:null,symbol:"circle",symbolSize:6}},{id:"step",name:"阶梯折线图",config:{smooth:!1,step:"middle",lineStyle:{width:2,color:"#ee6666"},areaStyle:null,symbol:"circle",symbolSize:6}}];function uo(s){return st.find(l=>l.id===s)}const dt={metadata:{id:"echarts-line",name:"ECharts折线图",category:"iot",icon:"📉",description:"ECharts 折线图数据展示组件,支持时序数据可视化",version:"1.0.0"},shape:"echarts-line-vue",width:400,height:300,label:"",attrs:{body:{fill:"transparent",stroke:"transparent"}},data:{type:"echarts-line",presetId:"basic",title:"数据趋势",xAxisData:["Mon","Tue","Wed","Thu","Fri","Sat","Sun"],seriesData:[120,200,150,80,70,110,130],seriesName:"Data"},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:"presetId",label:"折线图类型",type:"select",path:"data.presetId",defaultValue:"basic",options:st.map(s=>({label:s.name,value:s.id})),description:"选择预设的折线图类型"},{key:"title",label:"图表标题",type:"text",path:"data.title",defaultValue:"数据趋势",description:"折线图标题"},{key:"seriesName",label:"系列名称",type:"text",path:"data.seriesName",defaultValue:"Data",description:"显示在 tooltip 和 legend 中的系列名称"}]},ct={metadata:{id:"motor-3d",name:"3D电机",category:"iot",icon:"⚡",description:"3D仿真电机组件,支持运行状态和转速显示",version:"1.0.0"},shape:"motor-3d-vue",width:140,height:110,label:"",attrs:{body:{fill:"transparent",stroke:"transparent"}},data:{type:"motor",state:!1,speed:1500,power:7.5,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:"state",label:"运行状态",type:"select",path:"data.state",defaultValue:!1,options:[{label:"停止",value:!1},{label:"运行",value:"running"}]},{key:"speed",label:"转速(rpm)",type:"number",path:"data.speed",defaultValue:1500,min:0},{key:"power",label:"功率(kW)",type:"number",path:"data.power",defaultValue:7.5,min:0},{key:"deviceId",label:"设备ID",type:"text",path:"data.deviceId",defaultValue:""},{key:"property",label:"设备属性",type:"text",path:"data.property",defaultValue:""}]},pt={metadata:{id:"valve-3d",name:"3D阀门",category:"iot",icon:"🚰",description:"3D仿真阀门组件,支持开关状态和开度显示",version:"1.0.0"},shape:"valve-3d-vue",width:100,height:140,label:"",attrs:{body:{fill:"transparent",stroke:"transparent"}},data:{type:"valve",state:!1,openness:0,deviceId:"",property:""},ports:{groups:{top:{position:"top",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"}}}},items:[{id:"port-top",group:"top"},{id:"port-bottom",group:"bottom"}]},props:[{key:"state",label:"阀门状态",type:"select",path:"data.state",defaultValue:!1,options:[{label:"关闭",value:!1},{label:"开启",value:"open"}]},{key:"openness",label:"开度(%)",type:"number",path:"data.openness",defaultValue:0,min:0,max:100},{key:"deviceId",label:"设备ID",type:"text",path:"data.deviceId",defaultValue:""},{key:"property",label:"设备属性",type:"text",path:"data.property",defaultValue:""}]},mt={metadata:{id:"tank-3d",name:"3D储罐",category:"iot",icon:"🛢️",description:"3D仿真储罐组件,支持液位、温度、压力显示",version:"1.0.0"},shape:"tank-3d-vue",width:120,height:160,label:"",attrs:{body:{fill:"transparent",stroke:"transparent"}},data:{type:"tank",level:50,capacity:100,temperature:25,pressure:101,liquidColor:"#3b82f6",deviceId:"",property:""},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"}}}},items:[{id:"port-top",group:"top"},{id:"port-right",group:"right"},{id:"port-bottom",group:"bottom"}]},props:[{key:"level",label:"液位(%)",type:"number",path:"data.level",defaultValue:50,min:0,max:100},{key:"capacity",label:"容量(m³)",type:"number",path:"data.capacity",defaultValue:100,min:0},{key:"temperature",label:"温度(°C)",type:"number",path:"data.temperature",defaultValue:25},{key:"pressure",label:"压力(kPa)",type:"number",path:"data.pressure",defaultValue:101,min:0},{key:"liquidColor",label:"液体颜色",type:"color",path:"data.liquidColor",defaultValue:"#3b82f6"},{key:"deviceId",label:"设备ID",type:"text",path:"data.deviceId",defaultValue:""},{key:"property",label:"设备属性",type:"text",path:"data.property",defaultValue:""}]},ft={metadata:{id:"pump-3d",name:"3D水泵",category:"iot",icon:"🌊",description:"3D仿真水泵组件,支持运行状态、流量、压力显示",version:"1.0.0"},shape:"pump-3d-vue",width:160,height:120,label:"",attrs:{body:{fill:"transparent",stroke:"transparent"}},data:{type:"pump",state:!1,speed:2900,power:5.5,flowRate:15,pressure:3.5,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:"state",label:"运行状态",type:"select",path:"data.state",defaultValue:!1,options:[{label:"停止",value:!1},{label:"运行",value:"running"}]},{key:"speed",label:"转速(rpm)",type:"number",path:"data.speed",defaultValue:2900,min:0},{key:"power",label:"功率(kW)",type:"number",path:"data.power",defaultValue:5.5,min:0},{key:"flowRate",label:"流量(m³/h)",type:"number",path:"data.flowRate",defaultValue:15,min:0},{key:"pressure",label:"压力(bar)",type:"number",path:"data.pressure",defaultValue:3.5,min:0},{key:"deviceId",label:"设备ID",type:"text",path:"data.deviceId",defaultValue:""},{key:"property",label:"设备属性",type:"text",path:"data.property",defaultValue:""}]},ut={metadata:{id:"conveyor-3d",name:"3D传送带",category:"iot",icon:"🔄",description:"3D仿真传送带组件,支持正反转和速度控制",version:"1.0.0"},shape:"conveyor-3d-vue",width:220,height:100,label:"",attrs:{body:{fill:"transparent",stroke:"transparent"}},data:{type:"conveyor",state:!1,speed:10,direction:"forward",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:"state",label:"运行状态",type:"select",path:"data.state",defaultValue:!1,options:[{label:"停止",value:!1},{label:"运行",value:"running"}],description:"传送带运行状态"},{key:"speed",label:"速度(m/min)",type:"number",path:"data.speed",defaultValue:10,min:0,max:100,description:"传送带运行速度"},{key:"direction",label:"运行方向",type:"select",path:"data.direction",defaultValue:"forward",options:[{label:"正向",value:"forward"},{label:"反向",value:"reverse"}],description:"传送带运行方向"},{key:"deviceId",label:"设备ID",type:"text",path:"data.deviceId",defaultValue:"",description:"绑定的设备ID"},{key:"property",label:"设备属性",type:"text",path:"data.property",defaultValue:"",description:"绑定的设备属性名称"}]},gt={metadata:{id:"alarm-light-3d",name:"3D报警灯",category:"iot",icon:"🚨",description:"3D仿真报警灯组件,支持旋转、闪烁、持续三种模式",version:"1.0.0"},shape:"alarm-light-3d-vue",width:100,height:120,label:"",attrs:{body:{fill:"transparent",stroke:"transparent"}},data:{type:"alarm-light",state:!1,mode:"rotating",color:"#ef4444",deviceId:"",property:""},ports:{groups:{bottom:{position:"bottom",attrs:{circle:{r:4,magnet:!0,stroke:"#31d0c6",strokeWidth:2,fill:"#fff"}}}},items:[{id:"port-bottom",group:"bottom"}]},props:[{key:"state",label:"报警状态",type:"select",path:"data.state",defaultValue:!1,options:[{label:"正常",value:!1},{label:"报警",value:"active"}],description:"报警灯激活状态"},{key:"mode",label:"报警模式",type:"select",path:"data.mode",defaultValue:"rotating",options:[{label:"旋转",value:"rotating"},{label:"闪烁",value:"flashing"},{label:"持续",value:"steady"}],description:"报警灯工作模式"},{key:"color",label:"灯光颜色",type:"color",path:"data.color",defaultValue:"#ef4444",description:"报警灯颜色"},{key:"deviceId",label:"设备ID",type:"text",path:"data.deviceId",defaultValue:"",description:"绑定的设备ID"},{key:"property",label:"设备属性",type:"text",path:"data.property",defaultValue:"",description:"绑定的设备属性名称"}]},ht={metadata:{id:"temperature-sensor-3d",name:"3D温度传感器",category:"iot",icon:"🌡️",description:"3D仿真温度传感器,支持温度显示和报警",version:"1.0.0"},shape:"temperature-sensor-3d-vue",width:100,height:140,label:"",attrs:{body:{fill:"transparent",stroke:"transparent"}},data:{type:"temperature-sensor",temperature:25,maxTemp:100,minTemp:0,alarmHighLimit:80,alarmLowLimit:10,deviceId:"",property:""},ports:{groups:{bottom:{position:"bottom",attrs:{circle:{r:4,magnet:!0,stroke:"#31d0c6",strokeWidth:2,fill:"#fff"}}}},items:[{id:"port-bottom",group:"bottom"}]},props:[{key:"temperature",label:"当前温度(°C)",type:"number",path:"data.temperature",defaultValue:25,description:"当前测量温度值"},{key:"maxTemp",label:"最大量程(°C)",type:"number",path:"data.maxTemp",defaultValue:100,description:"传感器最大测量温度"},{key:"minTemp",label:"最小量程(°C)",type:"number",path:"data.minTemp",defaultValue:0,description:"传感器最小测量温度"},{key:"alarmHighLimit",label:"高温报警(°C)",type:"number",path:"data.alarmHighLimit",defaultValue:80,description:"高温报警阈值"},{key:"alarmLowLimit",label:"低温报警(°C)",type:"number",path:"data.alarmLowLimit",defaultValue:10,description:"低温报警阈值"},{key:"deviceId",label:"设备ID",type:"text",path:"data.deviceId",defaultValue:"",description:"绑定的设备ID"},{key:"property",label:"设备属性",type:"text",path:"data.property",defaultValue:"",description:"绑定的设备属性名称"}]},yt={metadata:{id:"cylinder-3d",name:"3D气缸",category:"iot",icon:"🔩",description:"3D仿真气缸组件,支持伸缩动作和位置显示",version:"1.0.0"},shape:"cylinder-3d-vue",width:80,height:160,label:"",attrs:{body:{fill:"transparent",stroke:"transparent"}},data:{type:"cylinder",action:"stop",position:0,stroke:50,speed:200,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:"action",label:"动作指令",type:"select",path:"data.action",defaultValue:"stop",options:[{label:"停止",value:"stop"},{label:"伸出",value:"extend"},{label:"缩回",value:"retract"}],description:"气缸动作指令"},{key:"position",label:"当前位置(mm)",type:"number",path:"data.position",defaultValue:0,min:0,description:"活塞杆当前位置"},{key:"stroke",label:"行程(mm)",type:"number",path:"data.stroke",defaultValue:50,min:10,max:200,description:"气缸最大行程"},{key:"speed",label:"速度(mm/s)",type:"number",path:"data.speed",defaultValue:200,min:10,max:1e3,description:"活塞杆运动速度"},{key:"deviceId",label:"设备ID",type:"text",path:"data.deviceId",defaultValue:"",description:"绑定的设备ID"},{key:"property",label:"设备属性",type:"text",path:"data.property",defaultValue:"",description:"绑定的设备属性名称"}]},bt={metadata:{id:"pipe-3d",name:"3D管道",category:"iot",icon:"🔧",description:"3D仿真管道组件,支持横向/纵向和流体动画",version:"1.0.0"},shape:"pipe-3d-vue",width:220,height:60,label:"",attrs:{body:{fill:"transparent",stroke:"transparent"}},data:{type:"pipe",state:!1,flowRate:10,direction:"horizontal",fluidColor:"#3b82f6",diameter:40,length:200,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:"state",label:"流动状态",type:"select",path:"data.state",defaultValue:!1,options:[{label:"停止",value:!1},{label:"流动",value:"flowing"}],description:"管道流体状态"},{key:"flowRate",label:"流量(m³/h)",type:"number",path:"data.flowRate",defaultValue:10,min:0,description:"流体流量"},{key:"direction",label:"管道方向",type:"select",path:"data.direction",defaultValue:"horizontal",options:[{label:"横向",value:"horizontal"},{label:"纵向",value:"vertical"}],description:"管道布置方向"},{key:"fluidColor",label:"流体颜色",type:"color",path:"data.fluidColor",defaultValue:"#3b82f6",description:"流体显示颜色"},{key:"diameter",label:"管径(mm)",type:"number",path:"data.diameter",defaultValue:40,min:20,max:100,description:"管道直径"},{key:"length",label:"长度(mm)",type:"number",path:"data.length",defaultValue:200,min:100,max:500,description:"管道长度"},{key:"deviceId",label:"设备ID",type:"text",path:"data.deviceId",defaultValue:"",description:"绑定的设备ID"},{key:"property",label:"设备属性",type:"text",path:"data.property",defaultValue:"",description:"绑定的设备属性名称"}]},kt={metadata:{id:"filter-3d",name:"3D过滤器",category:"iot",icon:"🧹",description:"3D仿真过滤器,支持堵塞度和压差显示",version:"1.0.0"},shape:"filter-3d-vue",width:140,height:120,label:"",attrs:{body:{fill:"transparent",stroke:"transparent"}},data:{type:"filter",clogLevel:20,pressureDrop:5,diameter:50,alarmThreshold:70,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:"clogLevel",label:"堵塞度(%)",type:"number",path:"data.clogLevel",defaultValue:20,min:0,max:100,description:"滤芯堵塞程度"},{key:"pressureDrop",label:"压差(kPa)",type:"number",path:"data.pressureDrop",defaultValue:5,min:0,description:"过滤器压差"},{key:"diameter",label:"口径(mm)",type:"number",path:"data.diameter",defaultValue:50,min:20,max:100,description:"过滤器口径"},{key:"alarmThreshold",label:"报警阈值(%)",type:"number",path:"data.alarmThreshold",defaultValue:70,min:0,max:100,description:"堵塞度报警阈值"},{key:"deviceId",label:"设备ID",type:"text",path:"data.deviceId",defaultValue:"",description:"绑定的设备ID"},{key:"property",label:"设备属性",type:"text",path:"data.property",defaultValue:"",description:"绑定的设备属性名称"}]},Et={metadata:{id:"heat-exchanger-3d",name:"3D换热器",category:"iot",icon:"🔥",description:"3D仿真换热器,支持热冷流体交换和效率显示",version:"1.0.0"},shape:"heat-exchanger-3d-vue",width:160,height:140,label:"",attrs:{body:{fill:"transparent",stroke:"transparent"}},data:{type:"heat-exchanger",state:!1,hotTempIn:80,hotTempOut:50,coldTempIn:20,coldTempOut:40,heatTransferArea:10,deviceId:"",property:""},ports:{groups:{top:{position:"top",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"}}},right:{position:"right",attrs:{circle:{r:4,magnet:!0,stroke:"#31d0c6",strokeWidth:2,fill:"#fff"}}}},items:[{id:"port-top",group:"top"},{id:"port-bottom",group:"bottom"},{id:"port-left",group:"left"},{id:"port-right",group:"right"}]},props:[{key:"state",label:"运行状态",type:"select",path:"data.state",defaultValue:!1,options:[{label:"停止",value:!1},{label:"运行",value:"working"}],description:"换热器运行状态"},{key:"hotTempIn",label:"热侧进口(°C)",type:"number",path:"data.hotTempIn",defaultValue:80,description:"热流体进口温度"},{key:"hotTempOut",label:"热侧出口(°C)",type:"number",path:"data.hotTempOut",defaultValue:50,description:"热流体出口温度"},{key:"coldTempIn",label:"冷侧进口(°C)",type:"number",path:"data.coldTempIn",defaultValue:20,description:"冷流体进口温度"},{key:"coldTempOut",label:"冷侧出口(°C)",type:"number",path:"data.coldTempOut",defaultValue:40,description:"冷流体出口温度"},{key:"heatTransferArea",label:"换热面积(m²)",type:"number",path:"data.heatTransferArea",defaultValue:10,min:1,description:"换热器换热面积"},{key:"deviceId",label:"设备ID",type:"text",path:"data.deviceId",defaultValue:"",description:"绑定的设备ID"},{key:"property",label:"设备属性",type:"text",path:"data.property",defaultValue:"",description:"绑定的设备属性名称"}]},Nt={metadata:{id:"tee-3d",name:"3D三通",category:"iot",icon:"⛓️",description:"3D仿真三通管件,支持流体分流和汇流",version:"1.0.0"},shape:"tee-3d-vue",width:120,height:120,label:"",attrs:{body:{fill:"transparent",stroke:"transparent"}},data:{type:"tee",state:!1,fluidColor:"#3b82f6",topFlowEnabled:!0,bottomFlowEnabled:!0,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"}}},top:{position:"top",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"}}}},items:[{id:"port-left",group:"left"},{id:"port-right",group:"right"},{id:"port-top",group:"top"},{id:"port-bottom",group:"bottom"}]},props:[{key:"state",label:"流动状态",type:"select",path:"data.state",defaultValue:!1,options:[{label:"关闭",value:!1},{label:"流动",value:"flowing"}],description:"三通管件流动状态"},{key:"fluidColor",label:"流体颜色",type:"color",path:"data.fluidColor",defaultValue:"#3b82f6",description:"流体显示颜色"},{key:"topFlowEnabled",label:"上方分流",type:"boolean",path:"data.topFlowEnabled",defaultValue:!0,description:"是否启用上方分流"},{key:"bottomFlowEnabled",label:"下方分流",type:"boolean",path:"data.bottomFlowEnabled",defaultValue:!0,description:"是否启用下方分流"},{key:"deviceId",label:"设备ID",type:"text",path:"data.deviceId",defaultValue:"",description:"绑定的设备ID"},{key:"property",label:"设备属性",type:"text",path:"data.property",defaultValue:"",description:"绑定的设备属性名称"}]},go=Object.freeze(Object.defineProperty({__proto__:null,AlarmLight3DComponent:gt,Conveyor3DComponent:ut,Cylinder3DComponent:yt,EChartsGaugeComponent:it,EChartsLineComponent:dt,Filter3DComponent:kt,HeatExchanger3DComponent:Et,LightComponent:nt,Motor3DComponent:ct,Pipe3DComponent:bt,Pump3DComponent:ft,SwitchComponent:at,Tank3DComponent:mt,Tee3DComponent:Nt,TemperatureSensor3DComponent:ht,Valve3DComponent:pt},Symbol.toStringTag,{value:"Module"}));class ho{constructor(){ke(this,"registry",{});this.registerDefaultComponents()}registerDefaultComponents(){this.register(tt),this.register(ot),this.register(lt),this.register(nt),this.register(at),this.register(it),this.register(dt),this.register(ct),this.register(pt),this.register(mt),this.register(ft),this.register(ut),this.register(gt),this.register(ht),this.register(yt),this.register(bt),this.register(kt),this.register(Et),this.register(Nt)}register(l){const{id:o}=l.metadata;this.registry[o]&&console.warn(`组件 ${o} 已存在,将被覆盖`),this.registry[o]=l,console.log(`✓ 组件注册成功: ${l.metadata.name} (${o})`)}registerBatch(l){l.forEach(o=>this.register(o))}getComponent(l){return this.registry[l]}getAllComponents(){return{...this.registry}}getComponentsByCategory(l){return Object.values(this.registry).filter(o=>o.metadata.category===l)}getComponentList(){return Object.values(this.registry)}hasComponent(l){return l in this.registry}unregister(l){return this.registry[l]?(delete this.registry[l],console.log(`✓ 组件注销成功: ${l}`),!0):(console.warn(`组件 ${l} 不存在`),!1)}getCount(){return Object.keys(this.registry).length}clear(){this.registry={},console.log("✓ 组件注册表已清空")}}const he=new ho,ve={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}},yo=[{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:"启用吸附功能"}],ye={"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 bo{constructor(){ke(this,"config");this.config=e.reactive({...ve})}getConfig(){return this.config}updateConfig(l){Object.assign(this.config,l)}updateByPath(l,o){const r=l.split(".");let t=this.config;for(let a=0;a<r.length-1;a++)t=t[r[a]];if(t[r[r.length-1]]=o,l==="size.preset"&&o in ye){const{width:a,height:c}=ye[o];this.config.size.width=a,this.config.size.height=c}}getByPath(l){const o=l.split(".");let r=this.config;for(const t of o)r=r==null?void 0:r[t];return r}setSize(l,o,r){this.config.size.width=l,this.config.size.height=o,r&&(this.config.size.preset=r)}updateSize(l){this.config.size.width=l.width,this.config.size.height=l.height}setZoom(l){const{min:o=.1,max:r=5}=this.config.zoom;this.config.zoom.scale=Math.max(o,Math.min(r,l))}setOffset(l,o){this.config.offset.x=l,this.config.offset.y=o}setBackgroundColor(l){this.config.background.color=l}updateBackground(l){l.color!==void 0&&(this.config.background.color=l.color),l.image!==void 0&&(this.config.background.image=l.image),l.size!==void 0&&(this.config.background.size=l.size),l.repeat!==void 0&&(this.config.background.repeat=l.repeat)}setBackgroundImage(l){this.config.background.image=l}toggleGrid(l){this.config.grid.enabled=l??!this.config.grid.enabled}setGridSize(l){this.config.grid.size=l}toggleSnap(l){this.config.snap.enabled=l??!this.config.snap.enabled}toggleGuides(l){this.config.guides.enabled=l??!this.config.guides.enabled}toggleMagnetism(l){this.config.magnetism.enabled=l??!this.config.magnetism.enabled}reset(){Object.assign(this.config,ve)}export(){return JSON.stringify(this.config,null,2)}import(l){try{const o=JSON.parse(l);Object.assign(this.config,o)}catch(o){console.error("导入画布配置失败:",o)}}}const W=new bo,ko={class:"component-library"},Eo={class:"library-content"},No={key:0,class:"component-section"},Vo={class:"component-grid"},xo=["onClick","title"],wo={class:"component-icon"},$o={class:"component-name"},Co={key:1,class:"component-section"},_o={class:"component-grid"},vo=["onClick","title"],Bo={class:"component-icon"},So={class:"component-name"},Be=P(e.defineComponent({__name:"ComponentLibrary",emits:["addComponent"],setup(s,{emit:l}){const o=l,r=e.reactive({basic:!1,iot:!1}),t=p=>{r[p]=!r[p]},a=e.computed(()=>he.getComponentsByCategory("basic")),c=e.computed(()=>he.getComponentsByCategory("iot")),d=p=>{o("addComponent",p.metadata.id)};return(p,f)=>(e.openBlock(),e.createElementBlock("aside",ko,[f[4]||(f[4]=e.createElementVNode("div",{class:"library-header"},[e.createElementVNode("h3",null,"组件库")],-1)),e.createElementVNode("div",Eo,[a.value.length>0?(e.openBlock(),e.createElementBlock("div",No,[e.createElementVNode("div",{class:"section-header",onClick:f[0]||(f[0]=m=>t("basic"))},[f[2]||(f[2]=e.createElementVNode("h4",{class:"section-title"},"基础组件",-1)),e.createElementVNode("span",{class:e.normalizeClass(["toggle-icon",{collapsed:r.basic}])},"▼",2)]),e.withDirectives(e.createElementVNode("div",Vo,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(a.value,m=>(e.openBlock(),e.createElementBlock("div",{key:m.metadata.id,class:"component-item",onClick:n=>d(m),title:m.metadata.description||m.metadata.name},[e.createElementVNode("span",wo,e.toDisplayString(m.metadata.icon),1),e.createElementVNode("span",$o,e.toDisplayString(m.metadata.name),1)],8,xo))),128))],512),[[e.vShow,!r.basic]])])):e.createCommentVNode("",!0),c.value.length>0?(e.openBlock(),e.createElementBlock("div",Co,[e.createElementVNode("div",{class:"section-header",onClick:f[1]||(f[1]=m=>t("iot"))},[f[3]||(f[3]=e.createElementVNode("h4",{class:"section-title"},"IoT组件",-1)),e.createElementVNode("span",{class:e.normalizeClass(["toggle-icon",{collapsed:r.iot}])},"▼",2)]),e.withDirectives(e.createElementVNode("div",_o,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(c.value,m=>(e.openBlock(),e.createElementBlock("div",{key:m.metadata.id,class:"component-item",onClick:n=>d(m),title:m.metadata.description||m.metadata.name},[e.createElementVNode("span",Bo,e.toDisplayString(m.metadata.icon),1),e.createElementVNode("span",So,e.toDisplayString(m.metadata.name),1)],8,vo))),128))],512),[[e.vShow,!r.iot]])])):e.createCommentVNode("",!0)])]))}}),[["__scopeId","data-v-7e281fd3"]]),Do={class:"canvas-area"},Io=P(e.defineComponent({__name:"CanvasArea",setup(s,{expose:l}){const o=e.ref();return l({containerRef:o}),(r,t)=>(e.openBlock(),e.createElementBlock("div",Do,[e.createElementVNode("div",{ref_key:"containerRef",ref:o,class:"canvas-container"},null,512)]))}}),[["__scopeId","data-v-a869f6aa"]]),To={class:"canvas-config-panel"},zo={class:"panel-content"},Mo={class:"config-section"},Ao={class:"config-item"},Po={key:0,class:"config-item"},Oo={class:"number-input-group"},Lo={key:1,class:"config-item"},Ro={class:"number-input-group"},Uo={class:"config-section"},Wo={class:"config-item"},Fo={class:"slider-group"},Go={class:"value-display"},jo={class:"config-item"},Ho={class:"number-input-group"},qo={class:"config-item"},Jo={class:"number-input-group"},Yo={class:"config-section"},Xo={class:"config-item"},Ko={class:"config-item"},Qo={class:"image-upload"},Zo={class:"config-item"},el={class:"config-item"},tl={class:"config-section"},ol={class:"config-item"},ll={class:"switch"},nl={class:"config-item"},al={class:"switch"},rl={class:"config-item"},il={class:"switch"},sl={key:0,class:"config-item"},dl={class:"number-input-group"},Se=P(e.defineComponent({__name:"CanvasConfigPanel",setup(s){const l=e.computed(()=>W.getConfig()),o=e.ref(),r=e.ref(l.value.size.width),t=e.ref(l.value.size.height),a=()=>{const h=l.value.size.preset;if(h==="custom")r.value=l.value.size.width,t.value=l.value.size.height;else if(h&&h in ye){const{width:i,height:g}=ye[h];W.setSize(i,g,h)}},c=()=>{l.value.size.preset==="custom"&&W.setSize(r.value,t.value,"custom")},d=(h,i)=>{h==="width"?r.value=Math.max(800,Math.min(7680,r.value+i)):t.value=Math.max(600,Math.min(4320,t.value+i)),c()},p=(h,i)=>{const g=l.value.offset[h];W.setOffset(h==="x"?g+i:l.value.offset.x,h==="y"?g+i:l.value.offset.y)},f=h=>{const i=Math.max(5,Math.min(50,l.value.grid.size+h));W.setGridSize(i)},m=()=>{var h;(h=o.value)==null||h.click()},n=h=>{var $;const g=($=h.target.files)==null?void 0:$[0];if(g){const D=new FileReader;D.onload=x=>{var y;const k=(y=x.target)==null?void 0:y.result;W.updateByPath("background.image",k)},D.readAsDataURL(g)}},u=()=>{W.updateByPath("background.image",""),o.value&&(o.value.value="")};return(h,i)=>(e.openBlock(),e.createElementBlock("div",To,[i[48]||(i[48]=e.createElementVNode("div",{class:"panel-header"},[e.createElementVNode("h3",null,"画布配置")],-1)),e.createElementVNode("div",zo,[e.createElementVNode("div",Mo,[i[27]||(i[27]=e.createElementVNode("h4",{class:"section-title"},"基础配置",-1)),e.createElementVNode("div",Ao,[i[24]||(i[24]=e.createElementVNode("label",null,"画布尺寸",-1)),e.withDirectives(e.createElementVNode("select",{"onUpdate:modelValue":i[0]||(i[0]=g=>l.value.size.preset=g),onChange:a,class:"config-select"},[...i[23]||(i[23]=[e.createStaticVNode('<option value="1920*1080" data-v-be44eb59>1920*1080</option><option value="1366*768" data-v-be44eb59>1366*768</option><option value="1280*720" data-v-be44eb59>1280*720</option><option value="800*600" data-v-be44eb59>800*600</option><option value="custom" data-v-be44eb59>自定义</option>',5)])],544),[[e.vModelSelect,l.value.size.preset]])]),l.value.size.preset==="custom"?(e.openBlock(),e.createElementBlock("div",Po,[i[25]||(i[25]=e.createElementVNode("label",null,"宽度",-1)),e.createElementVNode("div",Oo,[e.createElementVNode("button",{onClick:i[1]||(i[1]=g=>d("width",-100)),class:"adjust-btn"},"-"),e.withDirectives(e.createElementVNode("input",{type:"number","onUpdate:modelValue":i[2]||(i[2]=g=>r.value=g),onChange:c,min:800,max:7680,class:"config-number"},null,544),[[e.vModelText,r.value,void 0,{number:!0}]]),e.createElementVNode("button",{onClick:i[3]||(i[3]=g=>d("width",100)),class:"adjust-btn"},"+")])])):e.createCommentVNode("",!0),l.value.size.preset==="custom"?(e.openBlock(),e.createElementBlock("div",Lo,[i[26]||(i[26]=e.createElementVNode("label",null,"高度",-1)),e.createElementVNode("div",Ro,[e.createElementVNode("button",{onClick:i[4]||(i[4]=g=>d("height",-100)),class:"adjust-btn"},"-"),e.withDirectives(e.createElementVNode("input",{type:"number","onUpdate:modelValue":i[5]||(i[5]=g=>t.value=g),onChange:c,min:600,max:4320,class:"config-number"},null,544),[[e.vModelText,t.value,void 0,{number:!0}]]),e.createElementVNode("button",{onClick:i[6]||(i[6]=g=>d("height",100)),class:"adjust-btn"},"+")])])):e.createCommentVNode("",!0)]),e.createElementVNode("div",Uo,[i[31]||(i[31]=e.createElementVNode("h4",{class:"section-title"},"变换",-1)),e.createElementVNode("div",Wo,[i[28]||(i[28]=e.createElementVNode("label",null,"缩放倍数",-1)),e.createElementVNode("div",Fo,[e.withDirectives(e.createElementVNode("input",{type:"range","onUpdate:modelValue":i[7]||(i[7]=g=>l.value.zoom.scale=g),min:.1,max:5,step:.1,class:"config-slider"},null,512),[[e.vModelText,l.value.zoom.scale,void 0,{number:!0}]]),e.createElementVNode("span",Go,e.toDisplayString(l.value.zoom.scale.toFixed(1)),1)])]),e.createElementVNode("div",jo,[i[29]||(i[29]=e.createElementVNode("label",null,"画布X轴偏移",-1)),e.createElementVNode("div",Ho,[e.createElementVNode("button",{onClick:i[8]||(i[8]=g=>p("x",-10)),class:"adjust-btn"},"-"),e.withDirectives(e.createElementVNode("input",{type:"number","onUpdate:modelValue":i[9]||(i[9]=g=>l.value.offset.x=g),class:"config-number"},null,512),[[e.vModelText,l.value.offset.x,void 0,{number:!0}]]),e.createElementVNode("button",{onClick:i[10]||(i[10]=g=>p("x",10)),class:"adjust-btn"},"+")])]),e.createElementVNode("div",qo,[i[30]||(i[30]=e.createElementVNode("label",null,"画布Y轴偏移",-1)),e.createElementVNode("div",Jo,[e.createElementVNode("button",{onClick:i[11]||(i[11]=g=>p("y",-10)),class:"adjust-btn"},"-"),e.withDirectives(e.createElementVNode("input",{type:"number","onUpdate:modelValue":i[12]||(i[12]=g=>l.value.offset.y=g),class:"config-number"},null,512),[[e.vModelText,l.value.offset.y,void 0,{number:!0}]]),e.createElementVNode("button",{onClick:i[13]||(i[13]=g=>p("y",10)),class:"adjust-btn"},"+")])])]),e.createElementVNode("div",Yo,[i[39]||(i[39]=e.createElementVNode("h4",{class:"section-title"},"背景",-1)),e.createElementVNode("div",Xo,[i[32]||(i[32]=e.createElementVNode("label",null,"背景颜色",-1)),e.withDirectives(e.createElementVNode("input",{type:"color","onUpdate:modelValue":i[14]||(i[14]=g=>l.value.background.color=g),class:"config-color"},null,512),[[e.vModelText,l.value.background.color]])]),e.createElementVNode("div",Ko,[i[34]||(i[34]=e.createElementVNode("label",null,"背景图片",-1)),e.createElementVNode("div",Qo,[e.createElementVNode("input",{type:"file",accept:"image/*",onChange:n,ref_key:"fileInput",ref:o,style:{display:"none"}},null,544),e.createElementVNode("button",{onClick:m,class:"upload-btn"},[...i[33]||(i[33]=[e.createElementVNode("span",null,"📄",-1)])]),l.value.background.image?(e.openBlock(),e.createElementBlock("button",{key:0,onClick:u,class:"clear-btn",title:"清除背景图"}," ✕ ")):e.createCommentVNode("",!0)])]),e.createElementVNode("div",Zo,[i[36]||(i[36]=e.createElementVNode("label",null,"背景大小",-1)),e.withDirectives(e.createElementVNode("select",{"onUpdate:modelValue":i[15]||(i[15]=g=>l.value.background.size=g),class:"config-select"},[...i[35]||(i[35]=[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,l.value.background.size]])]),e.createElementVNode("div",el,[i[38]||(i[38]=e.createElementVNode("label",null,"图像重复",-1)),e.withDirectives(e.createElementVNode("select",{"onUpdate:modelValue":i[16]||(i[16]=g=>l.value.background.repeat=g),class:"config-select"},[...i[37]||(i[37]=[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,l.value.background.repeat]])])]),e.createElementVNode("div",tl,[i[47]||(i[47]=e.createElementVNode("h4",{class:"section-title"},"辅助",-1)),e.createElementVNode("div",ol,[i[41]||(i[41]=e.createElementVNode("label",null,"吸附",-1)),e.createElementVNode("label",ll,[e.withDirectives(e.createElementVNode("input",{type:"checkbox","onUpdate:modelValue":i[17]||(i[17]=g=>l.value.magnetism.enabled=g)},null,512),[[e.vModelCheckbox,l.value.magnetism.enabled]]),i[40]||(i[40]=e.createElementVNode("span",{class:"slider"},null,-1))])]),e.createElementVNode("div",nl,[i[43]||(i[43]=e.createElementVNode("label",null,"网格",-1)),e.createElementVNode("label",al,[e.withDirectives(e.createElementVNode("input",{type:"checkbox","onUpdate:modelValue":i[18]||(i[18]=g=>l.value.grid.enabled=g)},null,512),[[e.vModelCheckbox,l.value.grid.enabled]]),i[42]||(i[42]=e.createElementVNode("span",{class:"slider"},null,-1))])]),e.createElementVNode("div",rl,[i[45]||(i[45]=e.createElementVNode("label",null,"网格对齐",-1)),e.createElementVNode("label",il,[e.withDirectives(e.createElementVNode("input",{type:"checkbox","onUpdate:modelValue":i[19]||(i[19]=g=>l.value.snap.enabled=g)},null,512),[[e.vModelCheckbox,l.value.snap.enabled]]),i[44]||(i[44]=e.createElementVNode("span",{class:"slider"},null,-1))])]),l.value.grid.enabled?(e.openBlock(),e.createElementBlock("div",sl,[i[46]||(i[46]=e.createElementVNode("label",null,"网格大小",-1)),e.createElementVNode("div",dl,[e.createElementVNode("button",{onClick:i[20]||(i[20]=g=>f(-5)),class:"adjust-btn"},"-"),e.withDirectives(e.createElementVNode("input",{type:"number","onUpdate:modelValue":i[21]||(i[21]=g=>l.value.grid.size=g),min:5,max:50,class:"config-number"},null,512),[[e.vModelText,l.value.grid.size,void 0,{number:!0}]]),e.createElementVNode("button",{onClick:i[22]||(i[22]=g=>f(5)),class:"adjust-btn"},"+")])])):e.createCommentVNode("",!0)])])]))}}),[["__scopeId","data-v-be44eb59"]]),cl={class:"tab-pane"},pl={class:"property-section"},ml={class:"property-item-inline"},fl=["value"],ul={class:"property-item-inline"},gl=["value"],hl={class:"property-item-inline"},yl=["value"],bl={class:"property-section"},kl={class:"property-row"},El={class:"property-item"},Nl=["value"],Vl={class:"property-item"},xl=["value"],wl={class:"property-row"},$l={class:"property-item"},Cl=["value"],_l={class:"property-item"},vl=["value"],Bl={class:"property-section"},Sl={class:"property-item-inline"},Dl=["value"],Il={class:"property-item-inline"},Tl={class:"color-input-wrapper"},zl=["value"],Ml={class:"color-value"},Al={class:"property-item-inline"},Pl={class:"color-input-wrapper"},Ol=["value"],Ll={class:"color-value"},Rl={class:"property-item-inline"},Ul=["value"],Wl={class:"property-item-inline"},Fl=["value"],Gl={key:0,class:"property-section"},jl={key:0,class:"property-hint"},Hl=["value","onInput","placeholder"],ql=["value","onInput","min","max","step"],Jl={key:2,class:"color-input-wrapper"},Yl=["value","onInput"],Xl={class:"color-value"},Kl={key:3,class:"checkbox-wrapper"},Ql=["checked","onChange"],Zl={class:"checkbox-label"},en=["value","onChange"],tn=["value"],De=P(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(s,{emit:l}){const o=s,r=l,t=e.computed(()=>{var p,f;if(!((f=(p=o.selectedNode)==null?void 0:p.data)!=null&&f.props))return[];const d=["label","fill","stroke","strokeWidth","opacity"];return o.selectedNode.data.props.filter(m=>!d.includes(m.key))}),a=d=>{if(!d.path)return d.defaultValue;const p=d.path.split(".");let f=o.selectedNode;for(const m of p)if(f&&typeof f=="object")f=f[m];else return d.defaultValue;return f!==void 0?f:d.defaultValue},c=(d,p)=>{var n;const f=p.target;let m;if(d.type==="number")m=Number(f.value);else if(d.type==="boolean")m=f.checked;else if(d.type==="select"){const u=(n=d.options)==null?void 0:n.find(h=>String(h.value)===f.value);m=u?u.value:f.value}else m=f.value;r("update-dynamic-prop",d.path,m)};return(d,p)=>{var f,m,n,u,h,i,g,$,D,x,k,y,E,N,z,F,U;return e.openBlock(),e.createElementBlock("div",cl,[e.createElementVNode("div",pl,[p[13]||(p[13]=e.createElementVNode("h4",null,"基础信息",-1)),e.createElementVNode("div",ml,[p[10]||(p[10]=e.createElementVNode("label",null,"组件名称",-1)),e.createElementVNode("input",{type:"text",value:((f=s.selectedNode.getData())==null?void 0:f.componentName)||"",onInput:p[0]||(p[0]=v=>d.$emit("update-component-name",v)),placeholder:"请输入组件名称"},null,40,fl)]),e.createElementVNode("div",ul,[p[11]||(p[11]=e.createElementVNode("label",null,"ID",-1)),e.createElementVNode("input",{type:"text",value:s.selectedNode.id,disabled:""},null,8,gl)]),e.createElementVNode("div",hl,[p[12]||(p[12]=e.createElementVNode("label",null,"类型",-1)),e.createElementVNode("input",{type:"text",value:s.selectedNode.shape,disabled:""},null,8,yl)])]),e.createElementVNode("div",bl,[p[18]||(p[18]=e.createElementVNode("h4",null,"位置和尺寸",-1)),e.createElementVNode("div",kl,[e.createElementVNode("div",El,[p[14]||(p[14]=e.createElementVNode("label",null,"X",-1)),e.createElementVNode("input",{type:"number",value:s.nodePosition.x,onInput:p[1]||(p[1]=v=>d.$emit("update-position","x",v))},null,40,Nl)]),e.createElementVNode("div",Vl,[p[15]||(p[15]=e.createElementVNode("label",null,"Y",-1)),e.createElementVNode("input",{type:"number",value:s.nodePosition.y,onInput:p[2]||(p[2]=v=>d.$emit("update-position","y",v))},null,40,xl)])]),e.createElementVNode("div",wl,[e.createElementVNode("div",$l,[p[16]||(p[16]=e.createElementVNode("label",null,"宽度",-1)),e.createElementVNode("input",{type:"number",value:s.nodeSize.width,onInput:p[3]||(p[3]=v=>d.$emit("update-size","width",v))},null,40,Cl)]),e.createElementVNode("div",_l,[p[17]||(p[17]=e.createElementVNode("label",null,"高度",-1)),e.createElementVNode("input",{type:"number",value:s.nodeSize.height,onInput:p[4]||(p[4]=v=>d.$emit("update-size","height",v))},null,40,vl)])])]),e.createElementVNode("div",Bl,[p[24]||(p[24]=e.createElementVNode("h4",null,"样式",-1)),e.createElementVNode("div",Sl,[p[19]||(p[19]=e.createElementVNode("label",null,"初始文本",-1)),e.createElementVNode("input",{type:"text",value:((n=(m=s.nodeAttrs)==null?void 0:m.text)==null?void 0:n.text)||((h=(u=s.nodeAttrs)==null?void 0:u.label)==null?void 0:h.text)||s.selectedNode.getProp("label")||"",onInput:p[5]||(p[5]=v=>d.$emit("update-label",v)),placeholder:"设置默认显示文本"},null,40,Dl)]),e.createElementVNode("div",Il,[p[20]||(p[20]=e.createElementVNode("label",null,"填充颜色",-1)),e.createElementVNode("div",Tl,[e.createElementVNode("input",{type:"color",value:((g=(i=s.nodeAttrs)==null?void 0:i.body)==null?void 0:g.fill)||"#3b82f6",onInput:p[6]||(p[6]=v=>d.$emit("update-fill",v))},null,40,zl),e.createElementVNode("span",Ml,e.toDisplayString(((D=($=s.nodeAttrs)==null?void 0:$.body)==null?void 0:D.fill)||"#3b82f6"),1)])]),e.createElementVNode("div",Al,[p[21]||(p[21]=e.createElementVNode("label",null,"边框颜色",-1)),e.createElementVNode("div",Pl,[e.createElementVNode("input",{type:"color",value:((k=(x=s.nodeAttrs)==null?void 0:x.body)==null?void 0:k.stroke)||"#2563eb",onInput:p[7]||(p[7]=v=>d.$emit("update-stroke",v))},null,40,Ol),e.createElementVNode("span",Ll,e.toDisplayString(((E=(y=s.nodeAttrs)==null?void 0:y.body)==null?void 0:E.stroke)||"#2563eb"),1)])]),e.createElementVNode("div",Rl,[p[22]||(p[22]=e.createElementVNode("label",null,"边框宽度",-1)),e.createElementVNode("input",{type:"number",min:"0",max:"10",value:((z=(N=s.nodeAttrs)==null?void 0:N.body)==null?void 0:z.strokeWidth)||2,onInput:p[8]||(p[8]=v=>d.$emit("update-stroke-width",v))},null,40,Ul)]),e.createElementVNode("div",Wl,[p[23]||(p[23]=e.createElementVNode("label",null,"透明度",-1)),e.createElementVNode("input",{type:"number",min:"0",max:"1",step:"0.1",value:((U=(F=s.nodeAttrs)==null?void 0:F.body)==null?void 0:U.opacity)!==void 0?s.nodeAttrs.body.opacity:1,onInput:p[9]||(p[9]=v=>d.$emit("update-opacity",v))},null,40,Fl)])]),t.value.length>0?(e.openBlock(),e.createElementBlock("div",Gl,[p[25]||(p[25]=e.createElementVNode("h4",null,"组件属性",-1)),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(t.value,v=>(e.openBlock(),e.createElementBlock("div",{key:v.key,class:"property-item-inline"},[e.createElementVNode("label",null,[e.createTextVNode(e.toDisplayString(v.label)+" ",1),v.description?(e.openBlock(),e.createElementBlock("span",jl,e.toDisplayString(v.description),1)):e.createCommentVNode("",!0)]),v.type==="text"?(e.openBlock(),e.createElementBlock("input",{key:0,type:"text",value:a(v),onInput:S=>c(v,S),placeholder:v.defaultValue},null,40,Hl)):v.type==="number"?(e.openBlock(),e.createElementBlock("input",{key:1,type:"number",value:a(v),onInput:S=>c(v,S),min:v.min,max:v.max,step:v.step},null,40,ql)):v.type==="color"?(e.openBlock(),e.createElementBlock("div",Jl,[e.createElementVNode("input",{type:"color",value:a(v),onInput:S=>c(v,S)},null,40,Yl),e.createElementVNode("span",Xl,e.toDisplayString(a(v)),1)])):v.type==="boolean"?(e.openBlock(),e.createElementBlock("div",Kl,[e.createElementVNode("input",{type:"checkbox",checked:a(v),onChange:S=>c(v,S)},null,40,Ql),e.createElementVNode("span",Zl,e.toDisplayString(a(v)?"是":"否"),1)])):v.type==="select"?(e.openBlock(),e.createElementBlock("select",{key:4,value:a(v),onChange:S=>c(v,S)},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(v.options,S=>(e.openBlock(),e.createElementBlock("option",{key:S.value,value:S.value},e.toDisplayString(S.label),9,tn))),128))],40,en)):e.createCommentVNode("",!0)]))),128))])):e.createCommentVNode("",!0)])}}}),[["__scopeId","data-v-e63074f3"]]),on={class:"tab-pane"},ln={class:"property-section"},nn={class:"property-item-inline"},an=["value"],rn={key:0,class:"property-section"},sn={class:"property-item-inline"},dn=["value"],cn={class:"property-item-inline"},pn=["value"],mn={class:"property-item-inline"},fn=["value"],un={class:"property-item-inline"},gn=["value"],hn={class:"property-item-inline"},yn=["value"],bn={class:"property-item-inline"},kn=["value"],En={key:1,class:"property-section"},Nn={class:"property-item-inline"},Vn=["value"],xn={class:"property-item-inline"},wn=["value"],$n={class:"property-item-inline"},Cn=["value"],_n={class:"property-item-inline"},vn=["value"],Bn={class:"property-item-inline"},Sn=["value"],Dn={class:"property-item-inline"},In=["value"],Tn={key:2,class:"property-section"},zn={class:"property-item-inline"},Mn=["value"],An={class:"property-item-inline"},Pn=["value"],On={class:"property-item-inline"},Ln=["value"],Rn={class:"property-item-inline"},Un=["value"],Wn={class:"property-item-inline"},Fn={class:"checkbox-wrapper"},Gn=["checked"],jn={class:"checkbox-label"},Hn={key:3,class:"property-section"},qn={class:"property-item-inline"},Jn=["value"],Yn={class:"property-item-inline"},Xn=["value"],Kn={class:"property-item-inline"},Qn=["value"],Zn={key:4,class:"property-section"},ea={class:"property-item-inline"},ta=["value"],oa={class:"property-item-inline"},la=["value"],na={key:5,class:"property-section"},aa={class:"property-item-inline"},ra={class:"checkbox-wrapper"},ia=["checked"],sa={class:"checkbox-label"},da={class:"property-item-inline"},ca=["value"],pa=P(e.defineComponent({__name:"DataPropertiesTab",props:{selectedNode:{}},emits:["update-data-source"],setup(s,{emit:l}){const o=s,r=l,t=e.ref({type:"none",enabled:!0,retryCount:3});e.watch(()=>o.selectedNode,m=>{if(m){const n=m.getData();n!=null&&n.dataSource?t.value={...n.dataSource}:t.value={type:"none",enabled:!0,retryCount:3}}},{immediate:!0});const a=m=>{const n=m.target.value;let u={type:n,enabled:!0,retryCount:3};n==="http"?(u.pollInterval=5e3,u.method="GET"):n==="sse"&&(u.autoReconnect=!0),t.value=u,f()},c=(m,n)=>{const u=n.target;let h;u.type==="number"?h=Number(u.value):h=u.value,t.value={...t.value,[m]:h},f()},d=(m,n)=>{const u=n.target.checked;t.value={...t.value,[m]:u},f()},p=m=>{const n=m.target.checked;t.value={...t.value,enabled:n},f()},f=()=>{r("update-data-source",t.value)};return(m,n)=>(e.openBlock(),e.createElementBlock("div",on,[e.createElementVNode("div",ln,[n[25]||(n[25]=e.createElementVNode("h4",null,"数据来源",-1)),e.createElementVNode("div",nn,[n[24]||(n[24]=e.createElementVNode("label",null,"来源类型",-1)),e.createElementVNode("select",{value:t.value.type,onChange:a},[...n[23]||(n[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,an)])]),t.value.type==="mqtt"?(e.openBlock(),e.createElementBlock("div",rn,[n[32]||(n[32]=e.createElementVNode("h4",null,"MQTT配置",-1)),e.createElementVNode("div",sn,[n[26]||(n[26]=e.createElementVNode("label",null,"服务器",-1)),e.createElementVNode("input",{type:"text",value:t.value.broker||"",onInput:n[0]||(n[0]=u=>c("broker",u)),placeholder:"mqtt://localhost:1883"},null,40,dn)]),e.createElementVNode("div",cn,[n[27]||(n[27]=e.createElementVNode("label",null,"客户端ID",-1)),e.createElementVNode("input",{type:"text",value:t.value.clientId||"",onInput:n[1]||(n[1]=u=>c("clientId",u)),placeholder:"自动生成"},null,40,pn)]),e.createElementVNode("div",mn,[n[28]||(n[28]=e.createElementVNode("label",null,"订阅主题",-1)),e.createElementVNode("input",{type:"text",value:t.value.topic||"",onInput:n[2]||(n[2]=u=>c("topic",u)),placeholder:"例如: sensor/temperature"},null,40,fn)]),e.createElementVNode("div",un,[n[29]||(n[29]=e.createElementVNode("label",null,"用户名",-1)),e.createElementVNode("input",{type:"text",value:t.value.username||"",onInput:n[3]||(n[3]=u=>c("username",u)),placeholder:"可选"},null,40,gn)]),e.createElementVNode("div",hn,[n[30]||(n[30]=e.createElementVNode("label",null,"密码",-1)),e.createElementVNode("input",{type:"password",value:t.value.password||"",onInput:n[4]||(n[4]=u=>c("password",u)),placeholder:"可选"},null,40,yn)]),e.createElementVNode("div",bn,[n[31]||(n[31]=e.createElementVNode("label",null,"数据路径",-1)),e.createElementVNode("input",{type:"text",value:t.value.dataPath||"",onInput:n[5]||(n[5]=u=>c("dataPath",u)),placeholder:"例如: value"},null,40,kn)])])):e.createCommentVNode("",!0),t.value.type==="http"?(e.openBlock(),e.createElementBlock("div",En,[n[40]||(n[40]=e.createElementVNode("h4",null,"HTTP配置",-1)),e.createElementVNode("div",Nn,[n[33]||(n[33]=e.createElementVNode("label",null,"接口地址",-1)),e.createElementVNode("input",{type:"text",value:t.value.url||"",onInput:n[6]||(n[6]=u=>c("url",u)),placeholder:"https://api.example.com/data"},null,40,Vn)]),e.createElementVNode("div",xn,[n[35]||(n[35]=e.createElementVNode("label",null,"请求方法",-1)),e.createElementVNode("select",{value:t.value.method||"GET",onChange:n[7]||(n[7]=u=>c("method",u))},[...n[34]||(n[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,wn)]),e.createElementVNode("div",$n,[n[36]||(n[36]=e.createElementVNode("label",null,"请求头",-1)),e.createElementVNode("input",{type:"text",value:t.value.headers||"",onInput:n[8]||(n[8]=u=>c("headers",u)),placeholder:"JSON格式"},null,40,Cn)]),e.createElementVNode("div",_n,[n[37]||(n[37]=e.createElementVNode("label",null,"请求体",-1)),e.createElementVNode("input",{type:"text",value:t.value.body||"",onInput:n[9]||(n[9]=u=>c("body",u)),placeholder:"POST/PUT请求的数据"},null,40,vn)]),e.createElementVNode("div",Bn,[n[38]||(n[38]=e.createElementVNode("label",null,"数据路径",-1)),e.createElementVNode("input",{type:"text",value:t.value.dataPath||"",onInput:n[10]||(n[10]=u=>c("dataPath",u)),placeholder:"例如: data.value"},null,40,Sn)]),e.createElementVNode("div",Dn,[n[39]||(n[39]=e.createElementVNode("label",null,"轮询间隔(ms)",-1)),e.createElementVNode("input",{type:"number",value:t.value.pollInterval||5e3,onInput:n[11]||(n[11]=u=>c("pollInterval",u)),min:"1000",step:"1000"},null,40,In)])])):e.createCommentVNode("",!0),t.value.type==="sse"?(e.openBlock(),e.createElementBlock("div",Tn,[n[46]||(n[46]=e.createElementVNode("h4",null,"SSE配置",-1)),e.createElementVNode("div",zn,[n[41]||(n[41]=e.createElementVNode("label",null,"服务地址",-1)),e.createElementVNode("input",{type:"text",value:t.value.sseUrl||"",onInput:n[12]||(n[12]=u=>c("sseUrl",u)),placeholder:"https://api.example.com/events"},null,40,Mn)]),e.createElementVNode("div",An,[n[42]||(n[42]=e.createElementVNode("label",null,"事件类型",-1)),e.createElementVNode("input",{type:"text",value:t.value.eventType||"",onInput:n[13]||(n[13]=u=>c("eventType",u)),placeholder:"留空表示所有事件"},null,40,Pn)]),e.createElementVNode("div",On,[n[43]||(n[43]=e.createElementVNode("label",null,"请求头",-1)),e.createElementVNode("input",{type:"text",value:t.value.headers||"",onInput:n[14]||(n[14]=u=>c("headers",u)),placeholder:"JSON格式"},null,40,Ln)]),e.createElementVNode("div",Rn,[n[44]||(n[44]=e.createElementVNode("label",null,"数据路径",-1)),e.createElementVNode("input",{type:"text",value:t.value.dataPath||"",onInput:n[15]||(n[15]=u=>c("dataPath",u)),placeholder:"例如: data.value"},null,40,Un)]),e.createElementVNode("div",Wn,[n[45]||(n[45]=e.createElementVNode("label",null,"自动重连",-1)),e.createElementVNode("div",Fn,[e.createElementVNode("input",{type:"checkbox",checked:t.value.autoReconnect!==!1,onChange:n[16]||(n[16]=u=>d("autoReconnect",u))},null,40,Gn),e.createElementVNode("span",jn,e.toDisplayString(t.value.autoReconnect!==!1?"是":"否"),1)])])])):e.createCommentVNode("",!0),t.value.type==="websocket"?(e.openBlock(),e.createElementBlock("div",Hn,[n[50]||(n[50]=e.createElementVNode("h4",null,"WebSocket配置",-1)),e.createElementVNode("div",qn,[n[47]||(n[47]=e.createElementVNode("label",null,"服务地址",-1)),e.createElementVNode("input",{type:"text",value:t.value.wsUrl||"",onInput:n[17]||(n[17]=u=>c("wsUrl",u)),placeholder:"ws://localhost:8080"},null,40,Jn)]),e.createElementVNode("div",Yn,[n[48]||(n[48]=e.createElementVNode("label",null,"订阅主题",-1)),e.createElementVNode("input",{type:"text",value:t.value.topic||"",onInput:n[18]||(n[18]=u=>c("topic",u)),placeholder:"例如: device/status"},null,40,Xn)]),e.createElementVNode("div",Kn,[n[49]||(n[49]=e.createElementVNode("label",null,"数据路径",-1)),e.createElementVNode("input",{type:"text",value:t.value.dataPath||"",onInput:n[19]||(n[19]=u=>c("dataPath",u)),placeholder:"例如: payload.value"},null,40,Qn)])])):e.createCommentVNode("",!0),t.value.type==="static"?(e.openBlock(),e.createElementBlock("div",Zn,[n[54]||(n[54]=e.createElementVNode("h4",null,"静态数据配置",-1)),e.createElementVNode("div",ea,[n[51]||(n[51]=e.createElementVNode("label",null,"数据值",-1)),e.createElementVNode("input",{type:"text",value:t.value.value||"",onInput:n[20]||(n[20]=u=>c("value",u)),placeholder:"请输入数据值"},null,40,ta)]),e.createElementVNode("div",oa,[n[53]||(n[53]=e.createElementVNode("label",null,"数据类型",-1)),e.createElementVNode("select",{value:t.value.valueType||"string",onChange:n[21]||(n[21]=u=>c("valueType",u))},[...n[52]||(n[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,la)])])):e.createCommentVNode("",!0),t.value.type!=="none"?(e.openBlock(),e.createElementBlock("div",na,[n[57]||(n[57]=e.createElementVNode("h4",null,"通用配置",-1)),e.createElementVNode("div",aa,[n[55]||(n[55]=e.createElementVNode("label",null,"启用状态",-1)),e.createElementVNode("div",ra,[e.createElementVNode("input",{type:"checkbox",checked:t.value.enabled!==!1,onChange:p},null,40,ia),e.createElementVNode("span",sa,e.toDisplayString(t.value.enabled!==!1?"启用":"禁用"),1)])]),e.createElementVNode("div",da,[n[56]||(n[56]=e.createElementVNode("label",null,"错误重试",-1)),e.createElementVNode("input",{type:"number",value:t.value.retryCount||3,onInput:n[22]||(n[22]=u=>c("retryCount",u)),min:"0",max:"10"},null,40,ca)])])):e.createCommentVNode("",!0)]))}}),[["__scopeId","data-v-5b515f8a"]]),ma={class:"edge-properties-tab"},fa={class:"property-section"},ua={class:"property-item"},ga={class:"color-input-wrapper"},ha=["value"],ya=["value"],ba={class:"property-item"},ka={class:"number-input-wrapper"},Ea=["value"],Na={class:"property-item"},Va=["value"],xa={class:"property-item"},wa={class:"slider-wrapper"},$a=["value"],Ca={class:"slider-value"},_a={class:"property-item"},va=["value"],Ba={key:0,class:"property-item"},Sa={class:"number-input-wrapper"},Da=["value"],Ia={class:"property-section"},Ta={class:"property-item"},za=["value"],Ma={class:"property-item"},Aa=["value"],Pa={class:"property-section"},Oa={class:"property-item"},La=["value"],Ra={class:"property-item"},Ua=["value"],Wa=P(e.defineComponent({__name:"EdgePropertiesTab",props:{selectedEdge:{}},emits:["updateEdge","deleteEdge"],setup(s,{emit:l}){const o=s,r=l,t=e.computed(()=>{var E;return((E=o.selectedEdge)==null?void 0:E.getAttrs())||{}}),a=E=>{const N=E.target.value;r("updateEdge",{attrs:{line:{stroke:N}}})},c=E=>{const N=Number(E.target.value);r("updateEdge",{attrs:{line:{strokeWidth:N}}})},d=()=>{var N;const E=(N=t.value.line)==null?void 0:N.strokeDasharray;return E?E==="5,5"?"5,5":E==="2,2"?"2,2":E==="10,5,2,5"?"10,5,2,5":"none":"none"},p=E=>{const N=E.target.value;r("updateEdge",{attrs:{line:{strokeDasharray:N==="none"?void 0:N}}})},f=E=>{const N=Number(E.target.value);r("updateEdge",{attrs:{line:{opacity:N}}})},m=E=>{var z;const N=(z=t.value.line)==null?void 0:z[`${E}Marker`];return!N||typeof N!="object"||!N.name?"none":N.name},n=()=>{var z;const E=(z=t.value.line)==null?void 0:z.opacity;return((E!==void 0&&typeof E=="number"?E:1)*100).toFixed(0)},u=E=>{const N=E.target.value;r("updateEdge",{attrs:{line:{sourceMarker:N==="none"?void 0:{name:N,width:8,height:6}}}})},h=E=>{const N=E.target.value;r("updateEdge",{attrs:{line:{targetMarker:N==="none"?void 0:{name:N,width:8,height:6}}}})},i=E=>{const N=E.target.value;r("updateEdge",{router:N})},g=E=>{const N=E.target.value;r("updateEdge",{connector:{name:N,args:N==="rounded"?{radius:8}:void 0}})},$=()=>{r("deleteEdge")},D=()=>{var N,z;const E=(z=(N=o.selectedEdge)==null?void 0:N.data)==null?void 0:z.animation;return E!=null&&E.enabled?"true":"false"},x=()=>{var N,z;const E=(z=(N=o.selectedEdge)==null?void 0:N.data)==null?void 0:z.animation;return E!=null&&E.duration?E.duration/1e3:2},k=E=>{if(!(E.target.value==="true"))r("updateEdge",{data:{animation:{enabled:!1}},animation:{enabled:!1}});else{const z=x()*1e3;r("updateEdge",{data:{animation:{enabled:!0,duration:z}},animation:{enabled:!0,duration:z}})}},y=E=>{const z=Number(E.target.value)*1e3;r("updateEdge",{data:{animation:{enabled:!0,duration:z}},animation:{enabled:!0,duration:z}})};return(E,N)=>{var z,F,U,v,S,M,te,ae;return e.openBlock(),e.createElementBlock("div",ma,[e.createElementVNode("div",fa,[N[10]||(N[10]=e.createElementVNode("h4",{class:"section-title"},"线条样式",-1)),e.createElementVNode("div",ua,[N[0]||(N[0]=e.createElementVNode("label",{class:"property-label"},"线条颜色",-1)),e.createElementVNode("div",ga,[e.createElementVNode("input",{type:"color",class:"color-input",value:((z=t.value.line)==null?void 0:z.stroke)||"#10b981",onInput:a},null,40,ha),e.createElementVNode("input",{type:"text",class:"color-text",value:((F=t.value.line)==null?void 0:F.stroke)||"#10b981",onInput:a},null,40,ya)])]),e.createElementVNode("div",ba,[N[2]||(N[2]=e.createElementVNode("label",{class:"property-label"},"线条粗细",-1)),e.createElementVNode("div",ka,[e.createElementVNode("input",{type:"number",class:"property-input",min:"1",max:"20",step:"1",value:((U=t.value.line)==null?void 0:U.strokeWidth)||2,onInput:c},null,40,Ea),N[1]||(N[1]=e.createElementVNode("span",{class:"input-unit"},"px",-1))])]),e.createElementVNode("div",Na,[N[4]||(N[4]=e.createElementVNode("label",{class:"property-label"},"线条样式",-1)),e.createElementVNode("select",{class:"property-select",value:d(),onChange:p},[...N[3]||(N[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,Va)]),e.createElementVNode("div",xa,[N[5]||(N[5]=e.createElementVNode("label",{class:"property-label"},"透明度",-1)),e.createElementVNode("div",wa,[e.createElementVNode("input",{type:"range",class:"property-slider",min:"0",max:"1",step:"0.1",value:((v=t.value.line)==null?void 0:v.opacity)!==void 0?t.value.line.opacity:1,onInput:f},null,40,$a),e.createElementVNode("span",Ca,e.toDisplayString(n())+"%",1)])]),e.createElementVNode("div",_a,[N[7]||(N[7]=e.createElementVNode("label",{class:"property-label"},"流动动画",-1)),e.createElementVNode("select",{class:"property-select",value:D(),onChange:k},[...N[6]||(N[6]=[e.createElementVNode("option",{value:"false"},"关闭",-1),e.createElementVNode("option",{value:"true"},"开启",-1)])],40,va)]),D()==="true"?(e.openBlock(),e.createElementBlock("div",Ba,[N[9]||(N[9]=e.createElementVNode("label",{class:"property-label"},"动画速度",-1)),e.createElementVNode("div",Sa,[e.createElementVNode("input",{type:"number",class:"property-input",min:"0.5",max:"10",step:"0.5",value:x(),onInput:y},null,40,Da),N[8]||(N[8]=e.createElementVNode("span",{class:"input-unit"},"秒",-1))])])):e.createCommentVNode("",!0)]),e.createElementVNode("div",Ia,[N[15]||(N[15]=e.createElementVNode("h4",{class:"section-title"},"箭头样式",-1)),e.createElementVNode("div",Ta,[N[12]||(N[12]=e.createElementVNode("label",{class:"property-label"},"起点箭头",-1)),e.createElementVNode("select",{class:"property-select",value:m("source"),onChange:u},[...N[11]||(N[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,za)]),e.createElementVNode("div",Ma,[N[14]||(N[14]=e.createElementVNode("label",{class:"property-label"},"终点箭头",-1)),e.createElementVNode("select",{class:"property-select",value:m("target"),onChange:h},[...N[13]||(N[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,Aa)])]),e.createElementVNode("div",Pa,[N[20]||(N[20]=e.createElementVNode("h4",{class:"section-title"},"连接器",-1)),e.createElementVNode("div",Oa,[N[17]||(N[17]=e.createElementVNode("label",{class:"property-label"},"路由方式",-1)),e.createElementVNode("select",{class:"property-select",value:((M=(S=s.selectedEdge)==null?void 0:S.getRouter())==null?void 0:M.name)||"manhattan",onChange:i},[...N[16]||(N[16]=[e.createElementVNode("option",{value:"manhattan"},"曼哈顿",-1),e.createElementVNode("option",{value:"orth"},"正交",-1),e.createElementVNode("option",{value:"normal"},"直线",-1)])],40,La)]),e.createElementVNode("div",Ra,[N[19]||(N[19]=e.createElementVNode("label",{class:"property-label"},"连接器类型",-1)),e.createElementVNode("select",{class:"property-select",value:((ae=(te=s.selectedEdge)==null?void 0:te.getConnector())==null?void 0:ae.name)||"rounded",onChange:g},[...N[18]||(N[18]=[e.createElementVNode("option",{value:"rounded"},"圆角",-1),e.createElementVNode("option",{value:"smooth"},"平滑",-1),e.createElementVNode("option",{value:"normal"},"普通",-1)])],40,Ua)])]),e.createElementVNode("div",{class:"property-section"},[e.createElementVNode("button",{class:"delete-btn",onClick:$}," 删除连线 ")])])}}}),[["__scopeId","data-v-e47f1784"]]),Fa={class:"event-card"},Ga={class:"header-left"},ja={class:"collapse-icon"},Ha={class:"event-title"},qa={class:"event-card-body"},Ja={class:"event-field"},Ya=["value"],Xa={class:"event-field"},Ka=["value"],Qa={class:"event-field"},Za=["value"],er={class:"condition-config"},tr=["value"],or=["value"],lr=["value"],nr=["value"],ar={key:0,class:"config-section"},rr={key:1,class:"config-section"},ir={key:2,class:"config-section"},sr={key:0,class:"selected-workflow-info"},dr={class:"info-row"},cr={class:"info-value"},pr={class:"event-field"},mr=["value"],Ie=P(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(s){return(l,o)=>{var r,t,a,c,d,p,f;return e.openBlock(),e.createElementBlock("div",Fa,[e.createElementVNode("div",{class:"event-card-header",onClick:o[1]||(o[1]=m=>l.$emit("toggle-collapse"))},[e.createElementVNode("div",Ga,[e.createElementVNode("span",ja,e.toDisplayString(s.isCollapsed?"▶":"▼"),1),e.createElementVNode("span",Ha,"事件"+e.toDisplayString(s.index+1),1)]),e.createElementVNode("button",{class:"btn-remove",onClick:o[0]||(o[0]=e.withModifiers(m=>l.$emit("remove"),["stop"])),title:"删除事件"},"🗑")]),e.withDirectives(e.createElementVNode("div",qa,[e.createElementVNode("div",Ja,[o[12]||(o[12]=e.createElementVNode("label",null,"事件名称",-1)),e.createElementVNode("input",{type:"text",value:s.event.name||"",onInput:o[2]||(o[2]=m=>l.$emit("update-field","name",m)),placeholder:"输入事件名称,如:温度报警、湿度预警"},null,40,Ya)]),e.createElementVNode("div",Xa,[o[14]||(o[14]=e.createElementVNode("label",null,"事件类型",-1)),e.createElementVNode("select",{value:s.event.type,onChange:o[3]||(o[3]=m=>l.$emit("update-field","type",m))},[...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,Ka)]),e.createElementVNode("div",Qa,[o[16]||(o[16]=e.createElementVNode("label",null,"事件行为",-1)),e.createElementVNode("select",{value:s.event.action,onChange:o[4]||(o[4]=m=>l.$emit("update-field","action",m))},[...o[15]||(o[15]=[e.createElementVNode("option",{value:"attributeChange"},"更改属性",-1),e.createElementVNode("option",{value:"customCode"},"自定义代码",-1),e.createElementVNode("option",{value:"callProcess"},"调用流程",-1)])],40,Za)]),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",er,[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:((r=s.event.condition)==null?void 0:r.attribute)||"",onChange:o[5]||(o[5]=m=>l.$emit("update-condition","attribute",m))},[o[17]||(o[17]=e.createElementVNode("option",{value:""},"选择属性",-1)),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(s.nodeProperties,m=>(e.openBlock(),e.createElementBlock("option",{key:m.key,value:m.key},e.toDisplayString(m.label),9,or))),128))],40,tr),o[21]||(o[21]=e.createElementVNode("div",{class:"condition-label"},"运算符",-1)),e.createElementVNode("select",{class:"condition-select",value:((t=s.event.condition)==null?void 0:t.operator)||"==",onChange:o[6]||(o[6]=m=>l.$emit("update-condition","operator",m))},[...o[18]||(o[18]=[e.createStaticVNode('<option value="==" data-v-af7c633a>等于</option><option value="!=" data-v-af7c633a>不等于</option><option value="&gt;" data-v-af7c633a>大于</option><option value="&gt;=" data-v-af7c633a>大于等于</option><option value="&lt;" data-v-af7c633a>小于</option><option value="&lt;=" data-v-af7c633a>小于等于</option><option value="contains" data-v-af7c633a>包含</option>',7)])],40,lr),o[22]||(o[22]=e.createElementVNode("div",{class:"condition-label"},"值",-1)),e.createElementVNode("input",{type:"text",class:"condition-input",value:((a=s.event.condition)==null?void 0:a.value)||"",onInput:o[7]||(o[7]=m=>l.$emit("update-condition","value",m)),placeholder:"输入值"},null,40,nr),o[23]||(o[23]=e.createElementVNode("div",{class:"condition-label"},"时",-1)),o[24]||(o[24]=e.createElementVNode("div",{class:"condition-label"},"触发该事件",-1))]),s.event.action==="attributeChange"?(e.openBlock(),e.createElementBlock("div",ar,[o[25]||(o[25]=e.createElementVNode("div",{class:"section-title"},"属性更改",-1)),e.createElementVNode("button",{class:"btn-config",onClick:o[8]||(o[8]=m=>l.$emit("open-attribute-config"))},"点击配置")])):e.createCommentVNode("",!0),s.event.action==="customCode"?(e.openBlock(),e.createElementBlock("div",rr,[o[26]||(o[26]=e.createElementVNode("div",{class:"section-title"},"自定义代码",-1)),e.createElementVNode("button",{class:"btn-config",onClick:o[9]||(o[9]=m=>l.$emit("open-custom-code"))},"点击配置")])):e.createCommentVNode("",!0),s.event.action==="callProcess"?(e.openBlock(),e.createElementBlock("div",ir,[o[29]||(o[29]=e.createElementVNode("div",{class:"section-title"},"调用流程",-1)),e.createElementVNode("button",{class:"btn-config",onClick:o[10]||(o[10]=m=>l.$emit("open-workflow-selector"))},"选择流程"),(c=s.event.params)!=null&&c.processId?(e.openBlock(),e.createElementBlock("div",sr,[e.createElementVNode("div",dr,[o[27]||(o[27]=e.createElementVNode("span",{class:"info-label"},"已选择:",-1)),e.createElementVNode("span",cr,e.toDisplayString(((d=s.event.params)==null?void 0:d.processName)||((p=s.event.params)==null?void 0:p.processId)),1)]),e.createElementVNode("div",pr,[o[28]||(o[28]=e.createElementVNode("label",null,"传入参数",-1)),e.createElementVNode("textarea",{value:((f=s.event.params)==null?void 0:f.processParams)||"",onInput:o[11]||(o[11]=m=>l.$emit("update-params","processParams",m)),placeholder:'JSON格式: {"param1":"value1","param2":"value2"}',rows:"3"},null,40,mr)])])):e.createCommentVNode("",!0)])):e.createCommentVNode("",!0)],512),[[e.vShow,!s.isCollapsed]])])}}}),[["__scopeId","data-v-af7c633a"]]);var oe=(s=>(s.BOOLEAN="boolean",s.NUMBER="number",s.STRING="string",s))(oe||{}),le=(s=>(s.READ="read",s.WRITE="write",s.READ_WRITE="readWrite",s))(le||{}),me=(s=>(s.ONLINE="online",s.OFFLINE="offline",s.ERROR="error",s.MAINTENANCE="maintenance",s))(me||{}),fe=(s=>(s.PLC="plc",s.SENSOR="sensor",s.ACTUATOR="actuator",s.METER="meter",s.CAMERA="camera",s.OTHER="other",s))(fe||{});const Te=[{id:"device_001",name:"1号温控设备",code:"TC-001",type:fe.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:oe.NUMBER,accessMode:le.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:oe.NUMBER,accessMode:le.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:oe.BOOLEAN,accessMode:le.READ,value:!0,enabled:!0,quality:"good",updateTime:"2025-12-17 08:15:00"},{id:"point_001_04",name:"告警状态",code:"40004",description:"设备告警状态",dataType:oe.BOOLEAN,accessMode:le.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:fe.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:oe.NUMBER,accessMode:le.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:oe.NUMBER,accessMode:le.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:oe.NUMBER,accessMode:le.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:fe.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:oe.BOOLEAN,accessMode:le.READ,value:!0,enabled:!0,quality:"good",updateTime:"2025-12-17 08:15:00"},{id:"point_003_02",name:"启动命令",code:"40002",description:"电机启动控制",dataType:oe.BOOLEAN,accessMode:le.WRITE,value:!1,enabled:!0,quality:"good",updateTime:"2025-12-17 08:15:00"},{id:"point_003_03",name:"停止命令",code:"40003",description:"电机停止控制",dataType:oe.BOOLEAN,accessMode:le.WRITE,value:!1,enabled:!0,quality:"good",updateTime:"2025-12-17 08:15:00"},{id:"point_003_04",name:"当前转速",code:"40004",description:"电机实时转速",dataType:oe.NUMBER,accessMode:le.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:oe.NUMBER,accessMode:le.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:oe.NUMBER,accessMode:le.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:fe.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:oe.NUMBER,accessMode:le.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:oe.NUMBER,accessMode:le.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"}];Te.length;const Vt=s=>Te.find(l=>l.id===s),fr=(s,l)=>{const o=Vt(s);if(o)return o.points.find(r=>r.id===l)},ur={class:"device-point-selector"},gr={class:"device-list-panel"},hr={class:"panel-header"},yr={class:"device-count"},br={class:"search-box"},kr={class:"device-list"},Er=["onClick"],Nr={class:"device-info"},Vr={class:"device-name"},xr={class:"device-meta"},wr={class:"device-code"},$r={class:"point-count"},Cr={key:0,class:"empty-hint"},_r={class:"point-list-panel"},vr={class:"panel-header"},Br={key:0,class:"point-count"},Sr={key:0,class:"search-box"},Dr={class:"point-list"},Ir={key:0,class:"empty-hint"},Tr={key:1,class:"empty-hint"},zr=["onClick"],Mr={class:"point-info"},Ar={class:"point-name"},Pr={class:"point-meta"},Or={class:"point-code"},Lr={key:0,class:"point-unit"},Rr={class:"point-type"},Ur={key:0,class:"point-value"},Wr={class:"value"},Fr={class:"modal-footer"},Gr=["disabled"],jr=P(e.defineComponent({__name:"DevicePointSelector",props:{visible:{type:Boolean},modelValue:{},deviceData:{}},emits:["update:visible","update:modelValue","confirm"],setup(s,{emit:l}){var x;const o=s,r=l,t=e.ref(((x=o.deviceData)==null?void 0:x.devices)||Te),a=e.ref(null),c=e.ref(null),d=e.ref(""),p=e.ref("");if(o.modelValue){const[k,y]=o.modelValue.split(":"),E=t.value.find(N=>N.id===k);E&&(a.value=E,c.value=E.points.find(N=>N.id===y)||null)}const f=e.computed(()=>{if(!d.value)return t.value;const k=d.value.toLowerCase();return t.value.filter(y=>y.name.toLowerCase().includes(k)||y.code.toLowerCase().includes(k))}),m=e.computed(()=>{if(!a.value)return[];if(!p.value)return a.value.points;const k=p.value.toLowerCase();return a.value.points.filter(y=>y.name.toLowerCase().includes(k)||y.code.toLowerCase().includes(k))}),n=k=>{a.value=k,c.value=null,p.value=""},u=k=>{k.enabled&&(c.value=k)},h=()=>{r("update:visible",!1)},i=()=>{if(!a.value||!c.value)return;const k=`${a.value.id}:${c.value.id}`;r("update:modelValue",k),r("confirm",a.value.id,c.value.id,a.value,c.value),r("update:visible",!1)},g=k=>({read:"只读",write:"只写",readWrite:"读写"})[k]||k,$=k=>({boolean:"布尔",number:"数值",string:"字符",json:"JSON"})[k]||k,D=k=>k.value===void 0||k.value===null?"-":k.dataType==="boolean"?k.value?"是":"否":k.dataType==="number"&&k.precision!==void 0?Number(k.value).toFixed(k.precision):String(k.value);return(k,y)=>s.visible?(e.openBlock(),e.createElementBlock("div",{key:0,class:"modal-overlay",onClick:h},[e.createElementVNode("div",{class:"modal-container",onClick:y[2]||(y[2]=e.withModifiers(()=>{},["stop"]))},[e.createElementVNode("div",{class:"modal-header"},[y[3]||(y[3]=e.createElementVNode("h3",null,"选择设备点位",-1)),e.createElementVNode("button",{class:"btn-close",onClick:h},"✕")]),e.createElementVNode("div",ur,[e.createElementVNode("div",gr,[e.createElementVNode("div",hr,[y[4]||(y[4]=e.createElementVNode("h4",null,"设备列表",-1)),e.createElementVNode("span",yr,e.toDisplayString(t.value.length),1)]),e.createElementVNode("div",br,[e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":y[0]||(y[0]=E=>d.value=E),type:"text",placeholder:"搜索设备...",class:"search-input"},null,512),[[e.vModelText,d.value]])]),e.createElementVNode("div",kr,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(f.value,E=>{var N;return e.openBlock(),e.createElementBlock("div",{key:E.id,class:e.normalizeClass(["device-item",{active:((N=a.value)==null?void 0:N.id)===E.id,offline:E.status==="offline"}]),onClick:z=>n(E)},[e.createElementVNode("div",Nr,[e.createElementVNode("div",Vr,[e.createElementVNode("span",{class:e.normalizeClass(["status-dot",E.status])},null,2),e.createTextVNode(" "+e.toDisplayString(E.name),1)]),e.createElementVNode("div",xr,[e.createElementVNode("span",wr,e.toDisplayString(E.code),1),e.createElementVNode("span",$r,e.toDisplayString(E.points.length)+" 点",1)])]),y[5]||(y[5]=e.createElementVNode("div",{class:"device-arrow"},"›",-1))],10,Er)}),128)),f.value.length===0?(e.openBlock(),e.createElementBlock("div",Cr," 暂无设备 ")):e.createCommentVNode("",!0)])]),e.createElementVNode("div",_r,[e.createElementVNode("div",vr,[e.createElementVNode("h4",null,e.toDisplayString(a.value?a.value.name:"点位列表"),1),a.value?(e.openBlock(),e.createElementBlock("span",Br,e.toDisplayString(m.value.length),1)):e.createCommentVNode("",!0)]),a.value?(e.openBlock(),e.createElementBlock("div",Sr,[e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":y[1]||(y[1]=E=>p.value=E),type:"text",placeholder:"搜索点位...",class:"search-input"},null,512),[[e.vModelText,p.value]])])):e.createCommentVNode("",!0),e.createElementVNode("div",Dr,[a.value?m.value.length===0?(e.openBlock(),e.createElementBlock("div",Tr," 暂无点位 ")):(e.openBlock(!0),e.createElementBlock(e.Fragment,{key:2},e.renderList(m.value,E=>{var N;return e.openBlock(),e.createElementBlock("div",{key:E.id,class:e.normalizeClass(["point-item",{active:((N=c.value)==null?void 0:N.id)===E.id,disabled:!E.enabled}]),onClick:z=>u(E)},[e.createElementVNode("div",Mr,[e.createElementVNode("div",Ar,[e.createTextVNode(e.toDisplayString(E.name)+" ",1),e.createElementVNode("span",{class:e.normalizeClass(["access-mode",E.accessMode])},e.toDisplayString(g(E.accessMode)),3)]),e.createElementVNode("div",Pr,[e.createElementVNode("span",Or,e.toDisplayString(E.code),1),E.unit?(e.openBlock(),e.createElementBlock("span",Lr,e.toDisplayString(E.unit),1)):e.createCommentVNode("",!0),e.createElementVNode("span",Rr,e.toDisplayString($(E.dataType)),1)]),E.value!==void 0?(e.openBlock(),e.createElementBlock("div",Ur,[y[6]||(y[6]=e.createTextVNode(" 当前值: ",-1)),e.createElementVNode("span",Wr,e.toDisplayString(D(E)),1),e.createElementVNode("span",{class:e.normalizeClass(["quality",E.quality])},e.toDisplayString(E.quality),3)])):e.createCommentVNode("",!0)])],10,zr)}),128)):(e.openBlock(),e.createElementBlock("div",Ir," ← 请先选择设备 "))])])]),e.createElementVNode("div",Fr,[e.createElementVNode("button",{class:"btn-cancel",onClick:h},"取消"),e.createElementVNode("button",{class:"btn-confirm",disabled:!c.value,onClick:i}," 确定 ",8,Gr)])])])):e.createCommentVNode("",!0)}}),[["__scopeId","data-v-76d1c7fe"]]);var pe=(s=>(s.DIRECT="direct",s.BOOLEAN="boolean",s.RANGE="range",s.ENUM="enum",s))(pe||{}),be=(s=>(s.BOOLEAN="boolean",s.NUMBER="number",s.STRING="string",s))(be||{});const Hr={class:"mapping-configurator"},qr={class:"config-item"},Jr={key:0,class:"field-hint error"},Yr={key:1,class:"field-hint"},Xr={class:"config-item"},Kr={key:0,class:"field-hint error"},Qr={key:1,class:"field-hint"},Zr={key:0,class:"config-item"},ei={class:"unit-config"},ti={class:"checkbox-label"},oi={key:0,class:"custom-unit"},li={key:1,class:"mapping-details"},ni={class:"config-item"},ai={class:"config-item"},ri={key:2,class:"mapping-details"},ii={class:"range-rules"},si=["onUpdate:modelValue"],di=["onUpdate:modelValue"],ci=["onUpdate:modelValue"],pi=["onClick"],mi={key:3,class:"mapping-details"},fi={class:"enum-mappings"},ui=["value","onInput"],gi=["onUpdate:modelValue"],hi=["onClick"],yi={key:4,class:"mapping-preview"},bi={class:"preview-content"},ki={class:"preview-item"},Ei={class:"preview-output"},Ni={class:"preview-item"},Vi={class:"preview-output"},xi={class:"preview-input"},wi={class:"preview-output"},$i={class:"preview-input"},Ci={class:"preview-output"},_i=P(e.defineComponent({__name:"MappingConfigurator",props:{visible:{type:Boolean},modelValue:{}},emits:["update:visible","update:modelValue","confirm"],setup(s,{emit:l}){const o=s,r=l,t=e.ref(o.modelValue||{type:"",valueType:""});e.watch(()=>o.modelValue,D=>{D&&(t.value={...D})},{deep:!0});const a=()=>{t.value.type||(t.value.valueType===be.BOOLEAN?t.value.type=pe.BOOLEAN:t.value.valueType===be.NUMBER?t.value.type=pe.RANGE:t.value.type=pe.DIRECT),t.value.valueType!==be.NUMBER&&(delete t.value.keepOriginalUnit,delete t.value.customUnit)},c=D=>({boolean:"适用于开关状态、是否判断等场景",number:"适用于温度、压力、流量等数值型数据",string:"适用于文本、状态码等字符型数据"})[D]||"",d=D=>({direct:"不做任何转换,直接使用原始值",boolean:"根据 true/false 转换为不同的值",range:"根据数值范围转换为对应值",enum:"根据枚举键值对转换"})[D]||"",p=()=>{const D=t.value.valueType;t.value={type:t.value.type,valueType:D},t.value.type===pe.RANGE?t.value.rangeRules=[]:t.value.type===pe.ENUM&&(t.value.enumMappings={})},f=()=>{t.value.rangeRules||(t.value.rangeRules=[]),t.value.rangeRules.push({min:0,max:100,value:""})},m=D=>{var x;(x=t.value.rangeRules)==null||x.splice(D,1)},n=()=>{t.value.enumMappings||(t.value.enumMappings={});const D=`key_${Object.keys(t.value.enumMappings).length+1}`;t.value.enumMappings[D]=""},u=D=>{t.value.enumMappings&&delete t.value.enumMappings[D]},h=(D,x)=>{const k=D.target.value;if(!t.value.enumMappings||k===x)return;const y=t.value.enumMappings[x];delete t.value.enumMappings[x],t.value.enumMappings[k]=y},i=()=>{},g=()=>{r("update:visible",!1)},$=()=>{if(!t.value.valueType){alert("请选择值类型!");return}if(!t.value.type){alert("请选择映射类型!");return}r("update:modelValue",{...t.value}),r("confirm",{...t.value}),r("update:visible",!1)};return(D,x)=>s.visible?(e.openBlock(),e.createElementBlock("div",{key:0,class:"modal-overlay",onClick:g},[e.createElementVNode("div",{class:"modal-container",onClick:x[6]||(x[6]=e.withModifiers(()=>{},["stop"]))},[e.createElementVNode("div",{class:"modal-header"},[x[7]||(x[7]=e.createElementVNode("h3",null,"值映射配置",-1)),e.createElementVNode("button",{class:"btn-close",onClick:g},"✕")]),e.createElementVNode("div",Hr,[e.createElementVNode("div",qr,[x[9]||(x[9]=e.createElementVNode("label",null,[e.createTextVNode("值类型 "),e.createElementVNode("span",{class:"required"},"*")],-1)),e.withDirectives(e.createElementVNode("select",{"onUpdate:modelValue":x[0]||(x[0]=k=>t.value.valueType=k),onChange:a},[...x[8]||(x[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",Yr,e.toDisplayString(c(t.value.valueType)),1)):(e.openBlock(),e.createElementBlock("div",Jr," 值类型为必填项 "))]),e.createElementVNode("div",Xr,[x[11]||(x[11]=e.createElementVNode("label",null,[e.createTextVNode("映射类型 "),e.createElementVNode("span",{class:"required"},"*")],-1)),e.withDirectives(e.createElementVNode("select",{"onUpdate:modelValue":x[1]||(x[1]=k=>t.value.type=k),onChange:p},[...x[10]||(x[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",Qr,e.toDisplayString(d(t.value.type)),1)):(e.openBlock(),e.createElementBlock("div",Kr," 映射类型为必填项 "))]),t.value.valueType==="number"?(e.openBlock(),e.createElementBlock("div",Zr,[x[13]||(x[13]=e.createElementVNode("label",null,"单位配置",-1)),e.createElementVNode("div",ei,[e.createElementVNode("label",ti,[e.withDirectives(e.createElementVNode("input",{type:"checkbox","onUpdate:modelValue":x[2]||(x[2]=k=>t.value.keepOriginalUnit=k),onChange:i},null,544),[[e.vModelCheckbox,t.value.keepOriginalUnit]]),x[12]||(x[12]=e.createTextVNode(" 保留点位原始单位 ",-1))]),t.value.keepOriginalUnit?e.createCommentVNode("",!0):(e.openBlock(),e.createElementBlock("div",oi,[e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":x[3]||(x[3]=k=>t.value.customUnit=k),type:"text",placeholder:"自定义单位,如: °C, MPa, %",onInput:i},null,544),[[e.vModelText,t.value.customUnit]])]))])])):e.createCommentVNode("",!0),t.value.type==="boolean"?(e.openBlock(),e.createElementBlock("div",li,[e.createElementVNode("div",ni,[x[14]||(x[14]=e.createElementVNode("label",null,"True 时的值",-1)),e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":x[4]||(x[4]=k=>t.value.trueValue=k),type:"text",placeholder:"例如: 运行、#00ff00",onInput:i},null,544),[[e.vModelText,t.value.trueValue]])]),e.createElementVNode("div",ai,[x[15]||(x[15]=e.createElementVNode("label",null,"False 时的值",-1)),e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":x[5]||(x[5]=k=>t.value.falseValue=k),type:"text",placeholder:"例如: 停止、#ff0000",onInput:i},null,544),[[e.vModelText,t.value.falseValue]])])])):e.createCommentVNode("",!0),t.value.type==="range"?(e.openBlock(),e.createElementBlock("div",ri,[e.createElementVNode("div",ii,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(t.value.rangeRules,(k,y)=>(e.openBlock(),e.createElementBlock("div",{key:y,class:"range-rule"},[e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":E=>k.min=E,type:"number",placeholder:"最小值",onInput:i},null,40,si),[[e.vModelText,k.min,void 0,{number:!0}]]),x[16]||(x[16]=e.createElementVNode("span",{class:"range-separator"},"~",-1)),e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":E=>k.max=E,type:"number",placeholder:"最大值",onInput:i},null,40,di),[[e.vModelText,k.max,void 0,{number:!0}]]),x[17]||(x[17]=e.createElementVNode("span",{class:"range-arrow"},"→",-1)),e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":E=>k.value=E,type:"text",placeholder:"映射值",onInput:i},null,40,ci),[[e.vModelText,k.value]]),e.createElementVNode("button",{class:"btn-remove-rule",onClick:E=>m(y),title:"删除规则"}," ✕ ",8,pi)]))),128))]),e.createElementVNode("button",{class:"btn-add-rule",onClick:f}," + 添加范围规则 ")])):e.createCommentVNode("",!0),t.value.type==="enum"?(e.openBlock(),e.createElementBlock("div",mi,[e.createElementVNode("div",fi,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(t.value.enumMappings,(k,y,E)=>(e.openBlock(),e.createElementBlock("div",{key:E,class:"enum-mapping"},[e.createElementVNode("input",{value:y,type:"text",placeholder:"原始值",onInput:N=>h(N,y)},null,40,ui),x[18]||(x[18]=e.createElementVNode("span",{class:"enum-arrow"},"→",-1)),e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":N=>t.value.enumMappings[y]=N,type:"text",placeholder:"映射值",onInput:i},null,40,gi),[[e.vModelText,t.value.enumMappings[y]]]),e.createElementVNode("button",{class:"btn-remove-rule",onClick:N=>u(y),title:"删除映射"}," ✕ ",8,hi)]))),128))]),e.createElementVNode("button",{class:"btn-add-rule",onClick:n}," + 添加枚举映射 ")])):e.createCommentVNode("",!0),t.value.type!=="direct"?(e.openBlock(),e.createElementBlock("div",yi,[x[25]||(x[25]=e.createElementVNode("label",null,"映射预览",-1)),e.createElementVNode("div",bi,[t.value.type==="boolean"?(e.openBlock(),e.createElementBlock(e.Fragment,{key:0},[e.createElementVNode("div",ki,[x[19]||(x[19]=e.createElementVNode("span",{class:"preview-input"},"true",-1)),x[20]||(x[20]=e.createElementVNode("span",{class:"preview-arrow"},"→",-1)),e.createElementVNode("span",Ei,e.toDisplayString(t.value.trueValue||"true"),1)]),e.createElementVNode("div",Ni,[x[21]||(x[21]=e.createElementVNode("span",{class:"preview-input"},"false",-1)),x[22]||(x[22]=e.createElementVNode("span",{class:"preview-arrow"},"→",-1)),e.createElementVNode("span",Vi,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,(k,y)=>(e.openBlock(),e.createElementBlock("div",{key:y,class:"preview-item"},[e.createElementVNode("span",xi,"["+e.toDisplayString(k.min)+" ~ "+e.toDisplayString(k.max)+"]",1),x[23]||(x[23]=e.createElementVNode("span",{class:"preview-arrow"},"→",-1)),e.createElementVNode("span",wi,e.toDisplayString(k.value),1)]))),128)):t.value.type==="enum"?(e.openBlock(!0),e.createElementBlock(e.Fragment,{key:2},e.renderList(t.value.enumMappings,(k,y)=>(e.openBlock(),e.createElementBlock("div",{key:y,class:"preview-item"},[e.createElementVNode("span",$i,e.toDisplayString(y),1),x[24]||(x[24]=e.createElementVNode("span",{class:"preview-arrow"},"→",-1)),e.createElementVNode("span",Ci,e.toDisplayString(k),1)]))),128)):e.createCommentVNode("",!0)])])):e.createCommentVNode("",!0)]),e.createElementVNode("div",{class:"modal-footer"},[e.createElementVNode("button",{class:"btn-cancel",onClick:g},"取消"),e.createElementVNode("button",{class:"btn-confirm",onClick:$},"确定")])])])):e.createCommentVNode("",!0)}}),[["__scopeId","data-v-ef9e0ee1"]]),vi={class:"event-card"},Bi={class:"header-left"},Si={class:"collapse-icon"},Di={class:"event-title"},Ii={class:"event-card-body"},Ti={class:"property-item"},zi={key:0,class:"selected-point"},Mi={class:"point-main"},Ai={class:"device-name"},Pi={class:"point-name"},Oi={class:"point-details"},Li={class:"point-code"},Ri={key:0,class:"point-unit"},Ui={key:1,class:"placeholder"},Wi={class:"property-item"},Fi=["value"],Gi=["value"],ji={class:"property-item"},Hi={key:0,class:"mapping-summary"},qi={class:"mapping-type-label"},Ji={class:"mapping-detail"},Yi={key:1,class:"placeholder"},ze=P(e.defineComponent({__name:"BindingCard",props:{binding:{},index:{},isCollapsed:{type:Boolean},nodeProperties:{},deviceData:{}},emits:["toggle-collapse","remove","update-field"],setup(s,{emit:l}){const o=s,r=l,t=e.ref(o.binding.devicePointId||""),a=e.ref(!1),c=e.ref(!1),d=e.ref(o.binding.mapping||{type:pe.DIRECT,valueType:be.NUMBER}),p=e.computed(()=>o.deviceData||{});e.watch(()=>o.binding.devicePointId,i=>{t.value=i||""}),e.watch(()=>o.binding.mapping,i=>{i&&(d.value=i)},{deep:!0});const f=e.computed(()=>{var x;if(!t.value)return null;const[i,g]=t.value.split(":");if(!i||!g)return null;let $=null,D=null;return o.deviceData&&o.deviceData.devices&&($=o.deviceData.devices.find(k=>k.id===i),$&&(D=((x=$.points)==null?void 0:x.find(k=>k.id===g))||null)),$||($=Vt(i),$&&(D=fr(i,g))),!$||!D?null:{deviceName:$.name,pointName:D.name,pointCode:D.code,pointUnit:D.unit}}),m=(i,g,$,D)=>{const x=new Event("change");Object.defineProperty(x,"target",{value:{value:`${i}:${g}`},writable:!1}),r("update-field","devicePointId",x),console.log("选择了点位:",{device:$.name,point:D.name,dataType:D.dataType,accessMode:D.accessMode})},n=i=>{const g=new Event("change");Object.defineProperty(g,"target",{value:{value:i},writable:!1}),r("update-field","mapping",g)},u=i=>({direct:"直接映射",boolean:"布尔映射",range:"范围映射",enum:"枚举映射"})[i]||i,h=()=>{const i=d.value;return i.type==="boolean"?`True:${i.trueValue||"true"} / False:${i.falseValue||"false"}`:i.type==="range"&&i.rangeRules?`${i.rangeRules.length} 个范围规则`:i.type==="enum"&&i.enumMappings?`${Object.keys(i.enumMappings).length} 个枚举映射`:""};return(i,g)=>(e.openBlock(),e.createElementBlock("div",vi,[e.createElementVNode("div",{class:"event-card-header",onClick:g[1]||(g[1]=$=>i.$emit("toggle-collapse"))},[e.createElementVNode("div",Bi,[e.createElementVNode("span",Si,e.toDisplayString(s.isCollapsed?"▶":"▼"),1),e.createElementVNode("span",Di,"绑定"+e.toDisplayString(s.index+1),1)]),e.createElementVNode("button",{class:"btn-remove",onClick:g[0]||(g[0]=e.withModifiers($=>i.$emit("remove"),["stop"])),title:"删除绑定"},"🗑")]),e.withDirectives(e.createElementVNode("div",Ii,[e.createElementVNode("div",Ti,[g[10]||(g[10]=e.createElementVNode("label",null,"设备点位",-1)),e.createElementVNode("div",{class:"point-selector-trigger",onClick:g[2]||(g[2]=$=>a.value=!0)},[f.value?(e.openBlock(),e.createElementBlock("div",zi,[e.createElementVNode("div",Mi,[e.createElementVNode("span",Ai,e.toDisplayString(f.value.deviceName),1),e.createElementVNode("span",Pi,e.toDisplayString(f.value.pointName),1)]),e.createElementVNode("div",Oi,[e.createElementVNode("span",Li,e.toDisplayString(f.value.pointCode),1),f.value.pointUnit?(e.openBlock(),e.createElementBlock("span",Ri,e.toDisplayString(f.value.pointUnit),1)):e.createCommentVNode("",!0)])])):(e.openBlock(),e.createElementBlock("div",Ui," 点击选择设备点位 ")),g[9]||(g[9]=e.createElementVNode("span",{class:"selector-arrow"},"›",-1))])]),e.createVNode(jr,{visible:a.value,"onUpdate:visible":g[3]||(g[3]=$=>a.value=$),modelValue:t.value,"onUpdate:modelValue":g[4]||(g[4]=$=>t.value=$),"device-data":p.value,onConfirm:m},null,8,["visible","modelValue","device-data"]),e.createElementVNode("div",Wi,[g[12]||(g[12]=e.createElementVNode("label",null,"目标属性",-1)),e.createElementVNode("select",{value:s.binding.targetProperty||"",onChange:g[5]||(g[5]=$=>i.$emit("update-field","targetProperty",$))},[g[11]||(g[11]=e.createElementVNode("option",{value:""},"选择属性",-1)),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(s.nodeProperties,$=>(e.openBlock(),e.createElementBlock("option",{key:$.key,value:$.key},e.toDisplayString($.label),9,Gi))),128))],40,Fi)]),e.createElementVNode("div",ji,[g[14]||(g[14]=e.createElementVNode("label",null,"值映射配置",-1)),e.createElementVNode("div",{class:"mapping-trigger",onClick:g[6]||(g[6]=$=>c.value=!0)},[d.value.type!=="direct"?(e.openBlock(),e.createElementBlock("div",Hi,[e.createElementVNode("span",qi,e.toDisplayString(u(d.value.type)),1),e.createElementVNode("span",Ji,e.toDisplayString(h()),1)])):(e.openBlock(),e.createElementBlock("div",Yi," 点击配置值映射 ")),g[13]||(g[13]=e.createElementVNode("span",{class:"selector-arrow"},"›",-1))])]),e.createVNode(_i,{visible:c.value,"onUpdate:visible":g[7]||(g[7]=$=>c.value=$),modelValue:d.value,"onUpdate:modelValue":g[8]||(g[8]=$=>d.value=$),onConfirm:n},null,8,["visible","modelValue"])],512),[[e.vShow,!s.isCollapsed]])]))}}),[["__scopeId","data-v-a00f38e8"]]),Xi={class:"dialog-content"},Ki={class:"dialog-header"},Qi={class:"dialog-body"},Zi={class:"group-row"},es={class:"group-field"},ts=["value","onChange"],os=["value"],ls={class:"group-field group-field-value"},ns=["value","onInput"],as=["value","onInput"],rs={key:2,class:"color-input-wrapper"},is=["value","onInput"],ss={class:"color-value"},ds=["value","onChange"],cs=["onClick"],ps={key:0,class:"empty-hint"},ms={class:"dialog-footer"},Me=P(e.defineComponent({__name:"AttributeConfigDialog",props:{attributeGroups:{},nodeProperties:{}},emits:["close","save","add-group","remove-group","update-group"],setup(s,{emit:l}){const o=s,r=l,t=d=>{const p=o.nodeProperties.find(f=>f.key===d);return(p==null?void 0:p.type)||"text"},a=(d,p,f)=>{const m=f.target.value;r("update-group",d,p,m)},c=()=>{for(const d of o.attributeGroups)if(!d.property){alert("请为每组配置选择目标属性");return}r("save")};return(d,p)=>(e.openBlock(),e.createElementBlock("div",{class:"dialog-overlay",onClick:p[3]||(p[3]=e.withModifiers(f=>d.$emit("close"),["self"]))},[e.createElementVNode("div",Xi,[e.createElementVNode("div",Ki,[p[4]||(p[4]=e.createElementVNode("h3",null,"事件属性更改配置",-1)),e.createElementVNode("button",{class:"btn-close",onClick:p[0]||(p[0]=f=>d.$emit("close"))},"×")]),e.createElementVNode("div",Qi,[e.createElementVNode("button",{class:"btn-add-group",onClick:p[1]||(p[1]=f=>d.$emit("add-group"))},"新增一组"),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(s.attributeGroups,(f,m)=>(e.openBlock(),e.createElementBlock("div",{key:m,class:"attribute-group"},[e.createElementVNode("div",Zi,[e.createElementVNode("div",es,[p[6]||(p[6]=e.createElementVNode("label",null,"目标属性",-1)),e.createElementVNode("select",{value:f.property,onChange:n=>a(m,"property",n)},[p[5]||(p[5]=e.createElementVNode("option",{value:""},"选择目标属性",-1)),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(s.nodeProperties,n=>(e.openBlock(),e.createElementBlock("option",{key:n.key,value:n.key},e.toDisplayString(n.label),9,os))),128))],40,ts)]),e.createElementVNode("div",ls,[p[8]||(p[8]=e.createElementVNode("label",null,"期望值",-1)),!f.property||t(f.property)==="text"?(e.openBlock(),e.createElementBlock("input",{key:0,value:f.value,type:"text",onInput:n=>a(m,"value",n),placeholder:"输入值"},null,40,ns)):t(f.property)==="number"?(e.openBlock(),e.createElementBlock("input",{key:1,value:f.value,type:"number",onInput:n=>a(m,"value",n),placeholder:"输入数字"},null,40,as)):t(f.property)==="color"?(e.openBlock(),e.createElementBlock("div",rs,[e.createElementVNode("input",{value:f.value,type:"color",onInput:n=>a(m,"value",n)},null,40,is),e.createElementVNode("span",ss,e.toDisplayString(f.value||"#000000"),1)])):t(f.property)==="boolean"?(e.openBlock(),e.createElementBlock("select",{key:3,value:f.value,onChange:n=>a(m,"value",n)},[...p[7]||(p[7]=[e.createElementVNode("option",{value:"true"},"是",-1),e.createElementVNode("option",{value:"false"},"否",-1)])],40,ds)):e.createCommentVNode("",!0)]),e.createElementVNode("button",{class:"btn-delete-group",onClick:n=>d.$emit("remove-group",m),title:"删除"}," 🗑 ",8,cs)])]))),128)),s.attributeGroups.length===0?(e.openBlock(),e.createElementBlock("div",ps,' 请点击"新增一组"按钮添加属性配置 ')):e.createCommentVNode("",!0)]),e.createElementVNode("div",ms,[e.createElementVNode("button",{class:"btn-cancel",onClick:p[2]||(p[2]=f=>d.$emit("close"))},"取消"),e.createElementVNode("button",{class:"btn-confirm",onClick:c},"确定")])])]))}}),[["__scopeId","data-v-90af9944"]]),fs={class:"dialog-content dialog-large"},us={class:"dialog-header"},gs={class:"dialog-body dialog-body-split"},hs={class:"code-editor-section"},ys=["value"],bs={class:"code-preview-section"},ks={class:"section-header"},Es={class:"preview-status"},Ns={key:0,class:"status-success"},Vs={key:1,class:"status-error"},xs={class:"preview-canvas"},ws={key:0,class:"preview-empty"},$s={key:1,class:"preview-error-box"},Cs={class:"error-message"},_s={key:2,class:"preview-node-container"},vs={key:0,class:"console-output"},Bs={class:"console-logs"},Ss={class:"dialog-footer"},Ds=`function execute(node) {
6
+ */function _c(u){const r=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(u){for(const t in u)if(t!=="default"){const l=Object.getOwnPropertyDescriptor(u,t);Object.defineProperty(r,t,l.get?l:{enumerable:!0,get:()=>u[t]})}}return r.default=u,Object.freeze(r)}const Xi=_c(kc);class Zi extends Le.Node{}(function(u){function r(t){const l=[],n=Le.Markup.getForeignObjectMarkup();return t?l.push({tagName:t,selector:"body"},n):l.push(n),l}u.config({view:"vue-shape-view",markup:r(),attrs:{body:{fill:"none",stroke:"none",refWidth:"100%",refHeight:"100%"},fo:{refWidth:"100%",refHeight:"100%"}},propHooks(t){if(t.markup==null){const l=t.primer;if(l){t.markup=r(l);let n={};switch(l){case"circle":n={refCx:"50%",refCy:"50%",refR:"50%"};break;case"ellipse":n={refCx:"50%",refCy:"50%",refRx:"50%",refRy:"50%"};break}t.attrs=Le.ObjectExt.merge({},{body:Object.assign({refWidth:null,refHeight:null},n)},t.attrs||{})}}return t}}),Le.Node.registry.register("vue-shape",u,!0)})(Zi||(Zi={}));var Nc=function(u,r){var t={};for(var l in u)Object.prototype.hasOwnProperty.call(u,l)&&r.indexOf(l)<0&&(t[l]=u[l]);if(u!=null&&typeof Object.getOwnPropertySymbols=="function")for(var n=0,l=Object.getOwnPropertySymbols(u);n<l.length;n++)r.indexOf(l[n])<0&&Object.prototype.propertyIsEnumerable.call(u,l[n])&&(t[l[n]]=u[l[n]]);return t};const es={};function xc(u){const{shape:r,component:t,inherit:l}=u,n=Nc(u,["shape","component","inherit"]);if(!r)throw new Error("should specify shape in config");es[r]={component:t},Le.Graph.registerNode(r,Object.assign({inherit:l||"vue-shape"},n),!0)}e.reactive({});class xr extends Le.NodeView{getComponentContainer(){return this.selectors&&this.selectors.foContent}confirmUpdate(r){const t=super.confirmUpdate(r);return this.handleAction(t,xr.action,()=>{this.renderVueComponent()})}targetId(){return`${this.graph.view.cid}:${this.cell.id}`}renderVueComponent(){this.unmountVueComponent();const r=this.getComponentContainer(),t=this.cell,l=this.graph;if(r){const{component:n}=es[t.shape];n&&(this.vm=e.createApp({render(){return e.h(n,{node:t,graph:l})},provide(){return{getNode:()=>t,getGraph:()=>l}}}),this.vm.mount(r))}}unmountVueComponent(){const r=this.getComponentContainer();return this.vm&&(this.vm.unmount(),this.vm=null),r&&(r.innerHTML=""),r}onMouseDown(r,t,l){const n=r.target;if(n.tagName.toLowerCase()==="input"){const i=n.getAttribute("type");if(i==null||["text","password","number","email","search","tel","url"].includes(i))return}super.onMouseDown(r,t,l)}unmount(){return this.unmountVueComponent(),super.unmount(),this}}(function(u){u.action="vue",u.config({bootstrap:[u.action],actions:{component:u.action}}),Le.NodeView.registry.register("vue-shape-view",u,!0)})(xr||(xr={}));const Sc={xmlns:"http://www.w3.org/2000/svg","xmlns:xlink":"http://www.w3.org/1999/xlink",viewBox:"0 0 32 32"},Vc=e.defineComponent({name:"AlignHorizontalCenter",render:function(r,t){return e.openBlock(),e.createElementBlock("svg",Sc,t[0]||(t[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)]))}}),Cc={xmlns:"http://www.w3.org/2000/svg","xmlns:xlink":"http://www.w3.org/1999/xlink",viewBox:"0 0 32 32"},Ic=e.defineComponent({name:"AlignHorizontalLeft",render:function(r,t){return e.openBlock(),e.createElementBlock("svg",Cc,t[0]||(t[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)]))}}),Ac={xmlns:"http://www.w3.org/2000/svg","xmlns:xlink":"http://www.w3.org/1999/xlink",viewBox:"0 0 32 32"},$c=e.defineComponent({name:"AlignHorizontalRight",render:function(r,t){return e.openBlock(),e.createElementBlock("svg",Ac,t[0]||(t[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)]))}}),Tc={xmlns:"http://www.w3.org/2000/svg","xmlns:xlink":"http://www.w3.org/1999/xlink",viewBox:"0 0 32 32"},Bc=e.defineComponent({name:"AlignVerticalBottom",render:function(r,t){return e.openBlock(),e.createElementBlock("svg",Tc,t[0]||(t[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)]))}}),Dc={xmlns:"http://www.w3.org/2000/svg","xmlns:xlink":"http://www.w3.org/1999/xlink",viewBox:"0 0 32 32"},Pc=e.defineComponent({name:"AlignVerticalCenter",render:function(r,t){return e.openBlock(),e.createElementBlock("svg",Dc,t[0]||(t[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)]))}}),Oc={xmlns:"http://www.w3.org/2000/svg","xmlns:xlink":"http://www.w3.org/1999/xlink",viewBox:"0 0 32 32"},Mc=e.defineComponent({name:"AlignVerticalTop",render:function(r,t){return e.openBlock(),e.createElementBlock("svg",Oc,t[0]||(t[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)]))}}),Rc={xmlns:"http://www.w3.org/2000/svg","xmlns:xlink":"http://www.w3.org/1999/xlink",viewBox:"0 0 32 32"},jc=e.defineComponent({name:"DistributeHorizontalCenter",render:function(r,t){return e.openBlock(),e.createElementBlock("svg",Rc,t[0]||(t[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)]))}}),Lc={xmlns:"http://www.w3.org/2000/svg","xmlns:xlink":"http://www.w3.org/1999/xlink",viewBox:"0 0 32 32"},Uc=e.defineComponent({name:"DistributeVerticalCenter",render:function(r,t){return e.openBlock(),e.createElementBlock("svg",Lc,t[0]||(t[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)]))}}),Fc={version:"1.1.26"},zc={class:"scada-header"},Wc={class:"header-left"},qc={class:"version"},Gc={class:"header-center"},Hc={class:"tool-group"},Kc={key:0,class:"divider"},Qc={key:1,class:"tool-group"},Yc={key:2,class:"divider"},Jc={key:3,class:"tool-group"},Xc={class:"header-right"},Zc={class:"tool-group"},ed=e.defineComponent({__name:"Header",props:{selectedNodesCount:{default:0}},emits:["save","import","workflow","preview","export","dataSource","zoomIn","zoomOut","clearAll","alignLeft","alignCenter","alignRight","alignTop","alignMiddle","alignBottom","distributeHorizontal","distributeVertical"],setup(u,{emit:r}){const t=Fc.version,l=u,n=r;return(o,i)=>(e.openBlock(),e.createElementBlock("header",zc,[e.createElementVNode("div",Wc,[e.renderSlot(o.$slots,"left",{},()=>[i[17]||(i[17]=e.createElementVNode("h1",{class:"logo"},"SCADA 组态引擎",-1)),e.createElementVNode("span",qc,"v"+e.toDisplayString(e.unref(t)),1)],!0)]),e.createElementVNode("div",Gc,[e.createElementVNode("div",Hc,[e.createElementVNode("button",{class:"toolbar-btn",onClick:i[0]||(i[0]=a=>n("zoomIn")),title:"放大"},[...i[18]||(i[18]=[e.createElementVNode("span",{class:"icon"},"+",-1)])]),e.createElementVNode("button",{class:"toolbar-btn",onClick:i[1]||(i[1]=a=>n("zoomOut")),title:"缩小"},[...i[19]||(i[19]=[e.createElementVNode("span",{class:"icon"},"-",-1)])]),e.createElementVNode("button",{class:"toolbar-btn",onClick:i[2]||(i[2]=a=>n("clearAll")),title:"清空画布"},[...i[20]||(i[20]=[e.createElementVNode("span",{class:"icon"},"🗑",-1)])])]),l.selectedNodesCount>=2?(e.openBlock(),e.createElementBlock("div",Kc)):e.createCommentVNode("",!0),l.selectedNodesCount>=2?(e.openBlock(),e.createElementBlock("div",Qc,[e.createElementVNode("button",{class:"toolbar-btn",onClick:i[3]||(i[3]=a=>n("alignLeft")),title:"左对齐"},[e.createVNode(e.unref(Ic),{class:"icon-svg"})]),e.createElementVNode("button",{class:"toolbar-btn",onClick:i[4]||(i[4]=a=>n("alignCenter")),title:"水平居中"},[e.createVNode(e.unref(Vc),{class:"icon-svg"})]),e.createElementVNode("button",{class:"toolbar-btn",onClick:i[5]||(i[5]=a=>n("alignRight")),title:"右对齐"},[e.createVNode(e.unref($c),{class:"icon-svg"})]),e.createElementVNode("button",{class:"toolbar-btn",onClick:i[6]||(i[6]=a=>n("alignTop")),title:"顶部对齐"},[e.createVNode(e.unref(Mc),{class:"icon-svg"})]),e.createElementVNode("button",{class:"toolbar-btn",onClick:i[7]||(i[7]=a=>n("alignMiddle")),title:"垂直居中"},[e.createVNode(e.unref(Pc),{class:"icon-svg"})]),e.createElementVNode("button",{class:"toolbar-btn",onClick:i[8]||(i[8]=a=>n("alignBottom")),title:"底部对齐"},[e.createVNode(e.unref(Bc),{class:"icon-svg"})])])):e.createCommentVNode("",!0),l.selectedNodesCount>=3?(e.openBlock(),e.createElementBlock("div",Yc)):e.createCommentVNode("",!0),l.selectedNodesCount>=3?(e.openBlock(),e.createElementBlock("div",Jc,[e.createElementVNode("button",{class:"toolbar-btn",onClick:i[9]||(i[9]=a=>n("distributeHorizontal")),title:"横向分布"},[e.createVNode(e.unref(jc),{class:"icon-svg"})]),e.createElementVNode("button",{class:"toolbar-btn",onClick:i[10]||(i[10]=a=>n("distributeVertical")),title:"纵向分布"},[e.createVNode(e.unref(Uc),{class:"icon-svg"})])])):e.createCommentVNode("",!0)]),e.createElementVNode("div",Xc,[e.createElementVNode("div",Zc,[e.createElementVNode("button",{class:"header-btn",onClick:i[11]||(i[11]=a=>n("dataSource")),title:"数据源管理"},[...i[21]||(i[21]=[e.createElementVNode("span",{class:"icon"},"📡",-1),e.createElementVNode("span",null,"数据源",-1)])]),e.createElementVNode("button",{class:"header-btn",onClick:i[12]||(i[12]=a=>n("workflow")),title:"流程编排"},[...i[22]||(i[22]=[e.createElementVNode("span",{class:"icon"},"⚡",-1),e.createElementVNode("span",null,"流程编排",-1)])]),e.createElementVNode("button",{class:"header-btn",onClick:i[13]||(i[13]=a=>n("import")),title:"导入"},[...i[23]||(i[23]=[e.createElementVNode("span",{class:"icon"},"📂",-1),e.createElementVNode("span",null,"导入",-1)])]),e.createElementVNode("button",{class:"header-btn",onClick:i[14]||(i[14]=a=>n("export")),title:"导出"},[...i[24]||(i[24]=[e.createElementVNode("span",{class:"icon"},"📤",-1),e.createElementVNode("span",null,"导出",-1)])]),e.createElementVNode("button",{class:"header-btn",onClick:i[15]||(i[15]=a=>n("preview")),title:"预览"},[...i[25]||(i[25]=[e.createElementVNode("span",{class:"icon"},"👁",-1),e.createElementVNode("span",null,"预览",-1)])]),e.createElementVNode("button",{class:"header-btn",onClick:i[16]||(i[16]=a=>n("save")),title:"保存"},[...i[26]||(i[26]=[e.createElementVNode("span",{class:"icon"},"💾",-1),e.createElementVNode("span",null,"保存",-1)])])])])]))}}),Me=(u,r)=>{const t=u.__vccOpts||u;for(const[l,n]of r)t[l]=n;return t},go=Me(ed,[["__scopeId","data-v-70211483"]]),yo=[{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}],ts={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:"矩形透明度"},...yo]},rs={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:"圆形透明度"},...yo]},os={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:"边框颜色"},...yo]},td=Object.freeze(Object.defineProperty({__proto__:null,CircleComponent:rs,RectComponent:ts,TextComponent:os},Symbol.toStringTag,{value:"Module"})),rd={class:"light-3d-container"},od={viewBox:"0 0 100 100",xmlns:"http://www.w3.org/2000/svg"},nd=["id"],id=["stop-color"],sd=["stop-color"],ad=["stop-color"],ld=["id"],cd=["id"],dd=["id"],ud=["flood-color"],fd=["fill","filter"],pd=["fill","filter"],hd=["opacity"],md={key:1,opacity:"0.8"},gd=["fill"],yd=["fill"],bd=["fill"],wd=["fill"],Ed=["fill"],ns={metadata:{id:"light",name:"3D灯泡",category:"iot",icon:"💡",description:"3D仿真IoT灯泡控制组件",version:"2.0.0"},shape:"light-3d-vue",component:Me(e.defineComponent({__name:"Light3D",props:{node:{}},setup(u){const r=u,t=e.ref(`light-${Math.random().toString(36).substr(2,9)}`),l=()=>r.node?r.node.getData?r.node.getData():r.node.data||{}:{},n=e.ref(!1),o=e.ref("#fbbf24"),i=(s,c)=>{const d=s.replace("#",""),f=parseInt(d.substring(0,2),16),m=parseInt(d.substring(2,4),16),h=parseInt(d.substring(4,6),16),p=Math.max(0,Math.floor(f*(1-c))),w=Math.max(0,Math.floor(m*(1-c))),v=Math.max(0,Math.floor(h*(1-c)));return`#${p.toString(16).padStart(2,"0")}${w.toString(16).padStart(2,"0")}${v.toString(16).padStart(2,"0")}`},a=()=>{const s=l();n.value=s.state===!0||s.state==="on",o.value=s.color||"#fbbf24"};return e.watch(()=>r.node,()=>{a()},{deep:!0}),e.onMounted(()=>{a(),r.node&&typeof r.node.on=="function"&&r.node.on("change:data",()=>{a()})}),(s,c)=>(e.openBlock(),e.createElementBlock("div",rd,[(e.openBlock(),e.createElementBlock("svg",od,[e.createElementVNode("defs",null,[e.createElementVNode("radialGradient",{id:`bulb-gradient-${t.value}`,cx:"40%",cy:"30%"},[e.createElementVNode("stop",{offset:"0%","stop-color":n.value?"#fff9e6":"#e5e7eb"},null,8,id),e.createElementVNode("stop",{offset:"50%","stop-color":n.value?o.value:"#d1d5db"},null,8,sd),e.createElementVNode("stop",{offset:"100%","stop-color":n.value?i(o.value,.3):"#9ca3af"},null,8,ad)],8,nd),e.createElementVNode("linearGradient",{id:`base-gradient-${t.value}`,x1:"0%",y1:"0%",x2:"0%",y2:"100%"},[...c[0]||(c[0]=[e.createElementVNode("stop",{offset:"0%","stop-color":"#94a3b8"},null,-1),e.createElementVNode("stop",{offset:"50%","stop-color":"#64748b"},null,-1),e.createElementVNode("stop",{offset:"100%","stop-color":"#475569"},null,-1)])],8,ld),e.createElementVNode("filter",{id:`glow-${t.value}`},[...c[1]||(c[1]=[e.createElementVNode("feGaussianBlur",{stdDeviation:"3",result:"coloredBlur"},null,-1),e.createElementVNode("feMerge",null,[e.createElementVNode("feMergeNode",{in:"coloredBlur"}),e.createElementVNode("feMergeNode",{in:"SourceGraphic"})],-1)])],8,cd),e.createElementVNode("filter",{id:`outer-glow-${t.value}`},[c[2]||(c[2]=e.createElementVNode("feGaussianBlur",{stdDeviation:"5",result:"blur"},null,-1)),e.createElementVNode("feFlood",{"flood-color":o.value,"flood-opacity":"0.6",result:"color"},null,8,ud),c[3]||(c[3]=e.createElementVNode("feComposite",{in:"color",in2:"blur",operator:"in",result:"glow"},null,-1)),c[4]||(c[4]=e.createElementVNode("feMerge",null,[e.createElementVNode("feMergeNode",{in:"glow"}),e.createElementVNode("feMergeNode",{in:"SourceGraphic"})],-1))],8,dd)]),n.value?(e.openBlock(),e.createElementBlock("circle",{key:0,cx:"50",cy:"35",r:"32",fill:o.value,opacity:"0.3",filter:`url(#outer-glow-${t.value})`},null,8,fd)):e.createCommentVNode("",!0),e.createElementVNode("ellipse",{cx:"50",cy:"35",rx:"25",ry:"28",fill:`url(#bulb-gradient-${t.value})`,stroke:"#cbd5e1","stroke-width":"0.5",filter:n.value?`url(#glow-${t.value})`:"none"},null,8,pd),e.createElementVNode("ellipse",{cx:"42",cy:"25",rx:"8",ry:"10",fill:"#ffffff",opacity:n.value?.7:.3},null,8,hd),n.value?(e.openBlock(),e.createElementBlock("g",md,[...c[5]||(c[5]=[e.createElementVNode("path",{d:"M 45 30 Q 47 35 45 40",stroke:"#ff9500","stroke-width":"1.5",fill:"none"},null,-1),e.createElementVNode("path",{d:"M 55 30 Q 53 35 55 40",stroke:"#ff9500","stroke-width":"1.5",fill:"none"},null,-1)])])):e.createCommentVNode("",!0),c[10]||(c[10]=e.createElementVNode("ellipse",{cx:"50",cy:"60",rx:"15",ry:"4",fill:"#94a3b8"},null,-1)),e.createElementVNode("g",null,[e.createElementVNode("rect",{x:"40",y:"63",width:"20",height:"3",fill:`url(#base-gradient-${t.value})`,rx:"1"},null,8,gd),e.createElementVNode("rect",{x:"40",y:"67",width:"20",height:"3",fill:`url(#base-gradient-${t.value})`,rx:"1"},null,8,yd),e.createElementVNode("rect",{x:"40",y:"71",width:"20",height:"3",fill:`url(#base-gradient-${t.value})`,rx:"1"},null,8,bd),e.createElementVNode("rect",{x:"40",y:"75",width:"20",height:"3",fill:`url(#base-gradient-${t.value})`,rx:"1"},null,8,wd),c[6]||(c[6]=e.createElementVNode("rect",{x:"40",y:"66",width:"20",height:"1",fill:"#1e293b",opacity:"0.3"},null,-1)),c[7]||(c[7]=e.createElementVNode("rect",{x:"40",y:"70",width:"20",height:"1",fill:"#1e293b",opacity:"0.3"},null,-1)),c[8]||(c[8]=e.createElementVNode("rect",{x:"40",y:"74",width:"20",height:"1",fill:"#1e293b",opacity:"0.3"},null,-1)),c[9]||(c[9]=e.createElementVNode("rect",{x:"40",y:"78",width:"20",height:"1",fill:"#1e293b",opacity:"0.3"},null,-1))]),e.createElementVNode("ellipse",{cx:"50",cy:"80",rx:"12",ry:"5",fill:`url(#base-gradient-${t.value})`},null,8,Ed),c[11]||(c[11]=e.createElementVNode("ellipse",{cx:"50",cy:"83",rx:"8",ry:"3",fill:"#334155"},null,-1)),c[12]||(c[12]=e.createElementVNode("circle",{cx:"50",cy:"85",r:"2",fill:"#475569"},null,-1))])),e.createElementVNode("div",{class:e.normalizeClass(["status-text",{"is-on":n.value}])},e.toDisplayString(n.value?"开启":"关闭"),3)]))}}),[["__scopeId","data-v-7237b5fc"]]),width:100,height:120,label:"",attrs:{body:{fill:"transparent",stroke:"transparent"}},data:{type:"light",state:!1,color:"#fbbf24",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:"state",label:"灯泡状态",type:"select",path:"data.state",defaultValue:!1,options:[{label:"关闭",value:!1},{label:"开启",value:!0}],description:"灯泡开关状态"},{key:"color",label:"灯光颜色",type:"color",path:"data.color",defaultValue:"#fbbf24",description:"灯泡发光颜色"},{key:"deviceId",label:"设备ID",type:"text",path:"data.deviceId",defaultValue:"",description:"绑定的设备ID"},{key:"property",label:"设备属性",type:"text",path:"data.property",defaultValue:"",description:"绑定的设备属性名称"}]},vd={class:"switch-3d-container"},kd={viewBox:"0 0 120 80",xmlns:"http://www.w3.org/2000/svg"},_d=["id"],Nd=["id"],xd=["id"],Sd=["id"],Vd=["fill"],Cd=["fill"],Id=["fill"],Ad=["transform"],$d=["fill"],Td=["fill","filter"],Bd=["opacity"],Dd=["fill","filter"],Pd=["opacity"],is={metadata:{id:"switch",name:"3D开关",category:"iot",icon:"🔘",description:"3D仿真IoT开关控制组件",version:"2.0.0"},shape:"switch-3d-vue",component:Me(e.defineComponent({__name:"Switch3D",props:{node:{}},setup(u){const r=u,t=e.ref(`switch-${Math.random().toString(36).substr(2,9)}`),l=()=>r.node?r.node.getData?r.node.getData():r.node.data||{}:{},n=e.ref(!1),o=e.computed(()=>n.value?72:48),i=()=>{const a=l();n.value=a.state===!0||a.state==="on"};return e.watch(()=>r.node,()=>{i()},{deep:!0}),e.onMounted(()=>{i(),r.node&&typeof r.node.on=="function"&&r.node.on("change:data",()=>{i()})}),(a,s)=>(e.openBlock(),e.createElementBlock("div",vd,[(e.openBlock(),e.createElementBlock("svg",kd,[e.createElementVNode("defs",null,[e.createElementVNode("linearGradient",{id:`base-gradient-${t.value}`,x1:"0%",y1:"0%",x2:"0%",y2:"100%"},[...s[0]||(s[0]=[e.createElementVNode("stop",{offset:"0%","stop-color":"#475569"},null,-1),e.createElementVNode("stop",{offset:"50%","stop-color":"#334155"},null,-1),e.createElementVNode("stop",{offset:"100%","stop-color":"#1e293b"},null,-1)])],8,_d),e.createElementVNode("linearGradient",{id:`track-gradient-${t.value}`,x1:"0%",y1:"0%",x2:"0%",y2:"100%"},[...s[1]||(s[1]=[e.createElementVNode("stop",{offset:"0%","stop-color":"#1e293b"},null,-1),e.createElementVNode("stop",{offset:"50%","stop-color":"#0f172a"},null,-1),e.createElementVNode("stop",{offset:"100%","stop-color":"#1e293b"},null,-1)])],8,Nd),e.createElementVNode("linearGradient",{id:`handle-gradient-${t.value}`,x1:"0%",y1:"0%",x2:"0%",y2:"100%"},[...s[2]||(s[2]=[e.createElementVNode("stop",{offset:"0%","stop-color":"#e2e8f0"},null,-1),e.createElementVNode("stop",{offset:"50%","stop-color":"#cbd5e1"},null,-1),e.createElementVNode("stop",{offset:"100%","stop-color":"#94a3b8"},null,-1)])],8,xd),e.createElementVNode("filter",{id:`indicator-glow-${t.value}`},[...s[3]||(s[3]=[e.createElementVNode("feGaussianBlur",{stdDeviation:"3",result:"coloredBlur"},null,-1),e.createElementVNode("feMerge",null,[e.createElementVNode("feMergeNode",{in:"coloredBlur"}),e.createElementVNode("feMergeNode",{in:"SourceGraphic"})],-1)])],8,Sd)]),e.createElementVNode("rect",{x:"20",y:"25",width:"80",height:"50",rx:"8",fill:`url(#base-gradient-${t.value})`,stroke:"#0f172a","stroke-width":"1"},null,8,Vd),s[6]||(s[6]=e.createStaticVNode('<g data-v-09d0019e><circle cx="30" cy="35" r="3" fill="#0f172a" data-v-09d0019e></circle><circle cx="30" cy="35" r="1.5" fill="#475569" data-v-09d0019e></circle><line x1="28" y1="35" x2="32" y2="35" stroke="#1e293b" stroke-width="0.5" data-v-09d0019e></line><circle cx="90" cy="35" r="3" fill="#0f172a" data-v-09d0019e></circle><circle cx="90" cy="35" r="1.5" fill="#475569" data-v-09d0019e></circle><line x1="88" y1="35" x2="92" y2="35" stroke="#1e293b" stroke-width="0.5" data-v-09d0019e></line><circle cx="30" cy="65" r="3" fill="#0f172a" data-v-09d0019e></circle><circle cx="30" cy="65" r="1.5" fill="#475569" data-v-09d0019e></circle><line x1="28" y1="65" x2="32" y2="65" stroke="#1e293b" stroke-width="0.5" data-v-09d0019e></line><circle cx="90" cy="65" r="3" fill="#0f172a" data-v-09d0019e></circle><circle cx="90" cy="65" r="1.5" fill="#475569" data-v-09d0019e></circle><line x1="88" y1="65" x2="92" y2="65" stroke="#1e293b" stroke-width="0.5" data-v-09d0019e></line></g>',1)),e.createElementVNode("rect",{x:"40",y:"38",width:"40",height:"24",rx:"12",fill:`url(#track-gradient-${t.value})`,stroke:"#0f172a","stroke-width":"1"},null,8,Cd),s[7]||(s[7]=e.createElementVNode("text",{x:"48",y:"53","font-size":"8",fill:"#64748b","text-anchor":"middle","font-weight":"bold"},"OFF",-1)),e.createElementVNode("text",{x:"72",y:"53","font-size":"8",fill:n.value?"#22c55e":"#64748b","text-anchor":"middle","font-weight":"bold"},"ON",8,Id),e.createElementVNode("g",{transform:`translate(${o.value}, 0)`,style:{transition:"transform 0.3s ease"}},[s[4]||(s[4]=e.createElementVNode("ellipse",{cx:"0",cy:"52",rx:"10",ry:"3",fill:"#000",opacity:"0.3"},null,-1)),e.createElementVNode("rect",{x:"-8",y:"40",width:"16",height:"20",rx:"8",fill:`url(#handle-gradient-${t.value})`,stroke:"#94a3b8","stroke-width":"1"},null,8,$d),s[5]||(s[5]=e.createStaticVNode('<g opacity="0.3" data-v-09d0019e><line x1="-4" y1="43" x2="-4" y2="57" stroke="#64748b" stroke-width="0.5" data-v-09d0019e></line><line x1="0" y1="43" x2="0" y2="57" stroke="#64748b" stroke-width="0.5" data-v-09d0019e></line><line x1="4" y1="43" x2="4" y2="57" stroke="#64748b" stroke-width="0.5" data-v-09d0019e></line></g><rect x="-6" y="42" width="4" height="8" rx="2" fill="#ffffff" opacity="0.4" data-v-09d0019e></rect>',2))],8,Ad),e.createElementVNode("g",null,[e.createElementVNode("circle",{cx:"35",cy:"50",r:"3",fill:n.value?"#334155":"#ef4444",filter:n.value?"none":`url(#indicator-glow-${t.value})`},null,8,Td),e.createElementVNode("circle",{cx:"35",cy:"50",r:"1.5",fill:"#ffffff",opacity:n.value?.1:.6},null,8,Bd),e.createElementVNode("circle",{cx:"85",cy:"50",r:"3",fill:n.value?"#22c55e":"#334155",filter:n.value?`url(#indicator-glow-${t.value})`:"none"},null,8,Dd),e.createElementVNode("circle",{cx:"85",cy:"50",r:"1.5",fill:"#ffffff",opacity:n.value?.6:.1},null,8,Pd)]),s[8]||(s[8]=e.createStaticVNode('<g data-v-09d0019e><rect x="15" y="47" width="8" height="6" rx="1" fill="#64748b" stroke="#475569" stroke-width="0.5" data-v-09d0019e></rect><circle cx="19" cy="50" r="1.5" fill="#94a3b8" data-v-09d0019e></circle><rect x="97" y="47" width="8" height="6" rx="1" fill="#64748b" stroke="#475569" stroke-width="0.5" data-v-09d0019e></rect><circle cx="101" cy="50" r="1.5" fill="#94a3b8" data-v-09d0019e></circle></g><rect x="50" y="67" width="20" height="6" rx="1" fill="#0f172a" opacity="0.7" data-v-09d0019e></rect><text x="60" y="71" font-size="3" fill="#64748b" text-anchor="middle" font-family="monospace" data-v-09d0019e>KCD1-101</text>',3))])),e.createElementVNode("div",{class:e.normalizeClass(["status-text",{"is-on":n.value}])},e.toDisplayString(n.value?"开启":"关闭"),3)]))}}),[["__scopeId","data-v-09d0019e"]]),width:140,height:100,label:"",attrs:{body:{fill:"transparent",stroke:"transparent"}},data:{type:"switch",state:!1,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:"state",label:"开关状态",type:"select",path:"data.state",defaultValue:!1,options:[{label:"关闭",value:!1},{label:"开启",value:!0}],description:"开关当前状态"},{key:"deviceId",label:"设备ID",type:"text",path:"data.deviceId",defaultValue:"",description:"绑定的设备ID"},{key:"property",label:"设备属性",type:"text",path:"data.property",defaultValue:"",description:"绑定的设备属性名称"}]},ss=[{id:"basic",name:"基础仪表盘",config:{min:0,max:100,splitNumber:5,radius:"100%",axisLine:{lineStyle:{width:10,color:[[.3,"#67e0e3"],[.7,"#37a2da"],[1,"#fd666d"]]}},axisTick:{distance:2,length:5,lineStyle:{color:"#fff",width:1}},splitLine:{distance:2,length:10,lineStyle:{color:"#fff",width:2}},axisLabel:{distance:20,fontSize:12,color:"#999"},title:{offsetCenter:[0,"90%"],fontSize:14,color:"#999"},detail:{fontSize:30,offsetCenter:[0,"45%"],color:"#fff",formatter:"{value}"}}},{id:"temperature",name:"温度仪表盘",config:{min:-20,max:50,splitNumber:5,radius:"100%",axisLine:{lineStyle:{width:10,color:[[.2,"#2563eb"],[.5,"#22c55e"],[.8,"#f59e0b"],[1,"#ef4444"]]}},axisTick:{distance:2,length:5,lineStyle:{color:"#fff",width:1}},splitLine:{distance:2,length:10,lineStyle:{color:"#fff",width:2}},axisLabel:{distance:10,fontSize:12,color:"#999"},title:{offsetCenter:[0,"90%"],fontSize:14,color:"#999"},detail:{fontSize:30,offsetCenter:[0,"45%"],color:"#fff",formatter:"{value}°C"}}},{id:"humidity",name:"湿度仪表盘",config:{min:0,max:100,splitNumber:5,radius:"100%",axisLine:{lineStyle:{width:10,color:[[.3,"#fbbf24"],[.7,"#3b82f6"],[1,"#1e40af"]]}},axisTick:{distance:2,length:5,lineStyle:{color:"#fff",width:1}},splitLine:{distance:2,length:10,lineStyle:{color:"#fff",width:2}},axisLabel:{distance:20,fontSize:12,color:"#999"},title:{offsetCenter:[0,"90%"],fontSize:14,color:"#999"},detail:{fontSize:30,offsetCenter:[0,"45%"],color:"#fff",formatter:"{value}%"}}},{id:"speed",name:"速度仪表盘",config:{min:0,max:200,splitNumber:10,startAngle:225,endAngle:-45,radius:"100%",axisLine:{lineStyle:{width:10,color:[[.4,"#10b981"],[.7,"#f59e0b"],[1,"#ef4444"]]}},axisTick:{distance:2,length:5,lineStyle:{color:"#fff",width:1}},splitLine:{distance:2,length:10,lineStyle:{color:"#fff",width:2}},axisLabel:{distance:20,fontSize:12,color:"#999"},title:{offsetCenter:[0,"90%"],fontSize:14,color:"#999"},detail:{fontSize:30,offsetCenter:[0,"45%"],color:"#fff",formatter:"{value} km/h"}}},{id:"pressure",name:"压力仪表盘",config:{min:0,max:10,splitNumber:5,radius:"100%",axisLine:{lineStyle:{width:10,color:[[.5,"#22c55e"],[.8,"#f59e0b"],[1,"#dc2626"]]}},axisTick:{distance:2,length:5,lineStyle:{color:"#fff",width:1}},splitLine:{distance:2,length:10,lineStyle:{color:"#fff",width:2}},axisLabel:{distance:20,fontSize:12,color:"#999"},title:{offsetCenter:[0,"90%"],fontSize:14,color:"#999"},detail:{fontSize:30,offsetCenter:[0,"45%"],color:"#fff",formatter:"{value} MPa"}}},{id:"rpm",name:"转速仪表盘",config:{min:0,max:8e3,splitNumber:8,startAngle:225,endAngle:-45,radius:"100%",axisLine:{lineStyle:{width:10,color:[[.6,"#06b6d4"],[.85,"#eab308"],[1,"#dc2626"]]}},axisTick:{distance:2,length:5,lineStyle:{color:"#fff",width:1}},splitLine:{distance:2,length:10,lineStyle:{color:"#fff",width:2}},axisLabel:{distance:20,fontSize:12,color:"#999"},title:{offsetCenter:[0,"90%"],fontSize:14,color:"#999"},detail:{fontSize:30,offsetCenter:[0,"45%"],color:"#fff",formatter:"{value} RPM"}}},{id:"battery",name:"电池仪表盘",config:{min:0,max:100,splitNumber:5,radius:"100%",axisLine:{lineStyle:{width:10,color:[[.2,"#dc2626"],[.5,"#f59e0b"],[1,"#22c55e"]]}},axisTick:{distance:2,length:5,lineStyle:{color:"#fff",width:1}},splitLine:{distance:2,length:10,lineStyle:{color:"#fff",width:2}},axisLabel:{distance:10,fontSize:12,color:"#999"},title:{offsetCenter:[0,"80%"],fontSize:12,color:"#999"},detail:{fontSize:20,offsetCenter:[0,"45%"],color:"#fff",formatter:"{value}%"}}},{id:"power",name:"功率仪表盘",config:{min:0,max:100,splitNumber:5,radius:"100%",axisLine:{lineStyle:{width:10,color:[[.3,"#64748b"],[.7,"#3b82f6"],[1,"#8b5cf6"]]}},axisTick:{distance:2,length:5,lineStyle:{color:"#fff",width:1}},splitLine:{distance:2,length:10,lineStyle:{color:"#fff",width:2}},axisLabel:{distance:10,fontSize:12,color:"#999"},title:{offsetCenter:[0,"90%"],fontSize:12,color:"#999"},detail:{fontSize:20,offsetCenter:[0,"45%"],color:"#fff",formatter:"{value} kW"}}}];function Od(u){return ss.find(r=>r.id===u)}const as={metadata:{id:"echarts-gauge",name:"ECharts仪表盘",category:"iot",icon:"📈",description:"ECharts 仪表盘数据展示组件,支持丰富的配置选项",version:"1.0.0"},shape:"echarts-vue",component:Me(e.defineComponent({__name:"EChartsGauge",props:{node:{}},setup(u){const r=u,t=e.ref();let l=null;const n=()=>r.node?r.node.getData?r.node.getData():r.node.data||{}:{},o=()=>{t.value&&(l&&l.dispose(),l=Xi.init(t.value),i())},i=()=>{if(!l)return;const a=n(),s=a.presetId||"basic",c=Od(s),d={tooltip:{formatter:"{a} <br/>{b} : {c}%"},series:[{name:a.name||"Pressure",type:"gauge",data:[{value:a.value??50,name:a.title||"SCORE"}]}]};c&&c.config&&Object.assign(d.series[0],c.config),l.setOption(d,!0)};return e.watch(()=>{var a;return(a=r.node)==null?void 0:a.data},(a,s)=>{i()},{deep:!0}),e.watch(()=>{var a,s;return(s=(a=r.node)==null?void 0:a.data)==null?void 0:s.presetId},(a,s)=>{a!==s&&i()}),e.watch(()=>{var a;return(a=r.node)==null?void 0:a.size},()=>{if(l&&r.node){const a=r.node.getSize?r.node.getSize():r.node.size||{width:200,height:200};l.resize({width:a.width,height:a.height})}},{deep:!0}),e.onMounted(()=>{setTimeout(()=>{o(),r.node&&typeof r.node.on=="function"&&r.node.on("change:data",({current:a})=>{i()})},100)}),e.onUnmounted(()=>{l&&(l.dispose(),l=null)}),(a,s)=>(e.openBlock(),e.createElementBlock("div",{ref_key:"chartRef",ref:t,class:"echarts-gauge-component",style:{width:"100%",height:"100%"}},null,512))}}),[["__scopeId","data-v-08427ff6"]]),width:200,height:200,label:"",attrs:{body:{fill:"transparent",stroke:"transparent"}},data:{type:"echarts-gauge",presetId:"basic",value:50,title:"SCORE",name:"Pressure"},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:"presetId",label:"仪表盘类型",type:"select",path:"data.presetId",defaultValue:"basic",options:ss.map(u=>({label:u.name,value:u.id})),description:"选择预设的仪表盘类型,会自动应用对应的配置"},{key:"value",label:"当前值",type:"number",path:"data.value",defaultValue:50,description:"仪表盘当前显示值"},{key:"title",label:"标题",type:"text",path:"data.title",defaultValue:"SCORE",description:"仪表盘标题"},{key:"name",label:"系列名称",type:"text",path:"data.name",defaultValue:"Pressure",description:"显示在 tooltip 中的系列名称"}]},ls=[{id:"basic",name:"基础折线图",config:{smooth:!1,lineStyle:{width:2,color:"#5470c6"},areaStyle:null,symbol:"circle",symbolSize:6,radius:"100%"}},{id:"smooth",name:"平滑曲线",config:{smooth:!0,lineStyle:{width:2,color:"#91cc75"},areaStyle:null,symbol:"circle",symbolSize:6}},{id:"area",name:"区域折线图",config:{smooth:!1,lineStyle:{width:2,color:"#5470c6"},areaStyle:{color:{type:"linear",x:0,y:0,x2:0,y2:1,colorStops:[{offset:0,color:"rgba(84, 112, 198, 0.3)"},{offset:1,color:"rgba(84, 112, 198, 0.05)"}]}},symbol:"circle",symbolSize:6}},{id:"smooth-area",name:"平滑区域图",config:{smooth:!0,lineStyle:{width:2,color:"#91cc75"},areaStyle:{color:{type:"linear",x:0,y:0,x2:0,y2:1,colorStops:[{offset:0,color:"rgba(145, 204, 117, 0.3)"},{offset:1,color:"rgba(145, 204, 117, 0.05)"}]}},symbol:"circle",symbolSize:6}},{id:"dashed",name:"虚线折线图",config:{smooth:!1,lineStyle:{width:2,color:"#fac858",type:"dashed"},areaStyle:null,symbol:"circle",symbolSize:6}},{id:"step",name:"阶梯折线图",config:{smooth:!1,step:"middle",lineStyle:{width:2,color:"#ee6666"},areaStyle:null,symbol:"circle",symbolSize:6}}];function Md(u){return ls.find(r=>r.id===u)}const cs={metadata:{id:"echarts-line",name:"ECharts折线图",category:"iot",icon:"📉",description:"ECharts 折线图数据展示组件,支持时序数据可视化",version:"1.0.0"},shape:"echarts-line-vue",component:e.defineComponent({__name:"EChartsLine",props:{node:{}},setup(u){const r=u,t=e.ref();let l=null;const n=()=>r.node?r.node.getData?r.node.getData():r.node.data||{}:{},o=()=>{t.value&&(l=Xi.init(t.value),i())},i=()=>{if(!l)return;const a=n(),s=a.presetId||"basic",c=Md(s),d={title:{text:a.title||"数据趋势",left:"center",top:10,textStyle:{color:"#fff",fontSize:14}},tooltip:{trigger:"axis",backgroundColor:"rgba(0, 0, 0, 0.7)",borderColor:"#333",textStyle:{color:"#fff"}},grid:{left:"10%",right:"10%",top:"20%",bottom:"15%",containLabel:!0},xAxis:{type:"category",boundaryGap:!1,data:a.xAxisData||["Mon","Tue","Wed","Thu","Fri","Sat","Sun"],axisLine:{lineStyle:{color:"#999"}},axisLabel:{color:"#999"}},yAxis:{type:"value",axisLine:{lineStyle:{color:"#999"}},axisLabel:{color:"#999"},splitLine:{lineStyle:{color:"rgba(255, 255, 255, 0.1)"}}},series:[{name:a.seriesName||"Data",type:"line",data:a.seriesData||[120,200,150,80,70,110,130]}]};c&&c.config&&Object.assign(d.series[0],c.config),l.setOption(d,!0)};return e.onMounted(()=>{setTimeout(()=>{o(),r.node&&typeof r.node.on=="function"&&r.node.on("change:data",({current:a})=>{i()})},100)}),e.onUnmounted(()=>{l&&(l.dispose(),l=null)}),(a,s)=>(e.openBlock(),e.createElementBlock("div",{ref_key:"chartContainer",ref:t,style:{width:"100%",height:"100%"}},null,512))}}),width:400,height:300,label:"",attrs:{body:{fill:"transparent",stroke:"transparent"}},data:{type:"echarts-line",presetId:"basic",title:"数据趋势",xAxisData:["Mon","Tue","Wed","Thu","Fri","Sat","Sun"],seriesData:[120,200,150,80,70,110,130],seriesName:"Data"},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:"presetId",label:"折线图类型",type:"select",path:"data.presetId",defaultValue:"basic",options:ls.map(u=>({label:u.name,value:u.id})),description:"选择预设的折线图类型"},{key:"title",label:"图表标题",type:"text",path:"data.title",defaultValue:"数据趋势",description:"折线图标题"},{key:"seriesName",label:"系列名称",type:"text",path:"data.seriesName",defaultValue:"Data",description:"显示在 tooltip 和 legend 中的系列名称"}]},Rd={class:"motor-3d-container"},jd={viewBox:"0 0 120 100",xmlns:"http://www.w3.org/2000/svg"},Ld=["id"],Ud=["id"],Fd=["id"],zd=["fill"],Wd=["fill"],qd=["fill"],Gd=["transform"],Hd=["fill","filter"],Kd=["opacity"],Qd={x:"60",y:"61","font-size":"4",fill:"#cbd5e1","text-anchor":"middle","font-family":"monospace"},Yd=Me(e.defineComponent({__name:"Motor3D",props:{node:{}},setup(u){const r=u,t=e.ref(`motor-${Math.random().toString(36).substr(2,9)}`),l=()=>r.node?r.node.getData?r.node.getData():r.node.data||{}:{},n=e.ref(!1),o=e.ref(1500),i=e.ref(7.5),a=e.ref(0);let s=null;const c=()=>{if(n.value){const f=o.value/300;a.value=(a.value+f)%360}s=requestAnimationFrame(c)},d=()=>{const f=l();n.value=f.state==="running"||f.state===!0,o.value=f.speed||1500,i.value=f.power||7.5};return e.watch(()=>r.node,()=>{d()},{deep:!0}),e.onMounted(()=>{d(),n.value&&c(),r.node&&typeof r.node.on=="function"&&r.node.on("change:data",()=>{const f=n.value;d(),n.value&&!f?c():!n.value&&f&&s&&(cancelAnimationFrame(s),s=null)})}),e.onUnmounted(()=>{s&&cancelAnimationFrame(s)}),(f,m)=>(e.openBlock(),e.createElementBlock("div",Rd,[(e.openBlock(),e.createElementBlock("svg",jd,[e.createElementVNode("defs",null,[e.createElementVNode("linearGradient",{id:`motor-body-${t.value}`,x1:"0%",y1:"0%",x2:"0%",y2:"100%"},[...m[0]||(m[0]=[e.createElementVNode("stop",{offset:"0%","stop-color":"#94a3b8"},null,-1),e.createElementVNode("stop",{offset:"50%","stop-color":"#64748b"},null,-1),e.createElementVNode("stop",{offset:"100%","stop-color":"#475569"},null,-1)])],8,Ld),e.createElementVNode("linearGradient",{id:`shaft-gradient-${t.value}`,x1:"0%",y1:"0%",x2:"100%",y2:"0%"},[...m[1]||(m[1]=[e.createElementVNode("stop",{offset:"0%","stop-color":"#94a3b8"},null,-1),e.createElementVNode("stop",{offset:"50%","stop-color":"#cbd5e1"},null,-1),e.createElementVNode("stop",{offset:"100%","stop-color":"#64748b"},null,-1)])],8,Ud),e.createElementVNode("filter",{id:`indicator-glow-${t.value}`},[...m[2]||(m[2]=[e.createElementVNode("feGaussianBlur",{stdDeviation:"2",result:"coloredBlur"},null,-1),e.createElementVNode("feMerge",null,[e.createElementVNode("feMergeNode",{in:"coloredBlur"}),e.createElementVNode("feMergeNode",{in:"SourceGraphic"})],-1)])],8,Fd)]),e.createElementVNode("rect",{x:"20",y:"70",width:"80",height:"25",rx:"3",fill:`url(#motor-body-${t.value})`},null,8,zd),m[4]||(m[4]=e.createStaticVNode('<rect x="20" y="70" width="80" height="3" fill="#1e293b" opacity="0.3" data-v-14ee96e9></rect><circle cx="30" cy="82" r="3" fill="#334155" data-v-14ee96e9></circle><circle cx="30" cy="82" r="1.5" fill="#64748b" data-v-14ee96e9></circle><circle cx="90" cy="82" r="3" fill="#334155" data-v-14ee96e9></circle><circle cx="90" cy="82" r="1.5" fill="#64748b" data-v-14ee96e9></circle>',5)),e.createElementVNode("ellipse",{cx:"60",cy:"45",rx:"35",ry:"25",fill:`url(#motor-body-${t.value})`,stroke:"#334155","stroke-width":"1"},null,8,Wd),m[5]||(m[5]=e.createStaticVNode('<g opacity="0.3" data-v-14ee96e9><line x1="30" y1="30" x2="30" y2="60" stroke="#1e293b" stroke-width="1" data-v-14ee96e9></line><line x1="40" y1="25" x2="40" y2="65" stroke="#1e293b" stroke-width="1" data-v-14ee96e9></line><line x1="50" y1="22" x2="50" y2="68" stroke="#1e293b" stroke-width="1" data-v-14ee96e9></line><line x1="60" y1="20" x2="60" y2="70" stroke="#1e293b" stroke-width="1" data-v-14ee96e9></line><line x1="70" y1="22" x2="70" y2="68" stroke="#1e293b" stroke-width="1" data-v-14ee96e9></line><line x1="80" y1="25" x2="80" y2="65" stroke="#1e293b" stroke-width="1" data-v-14ee96e9></line><line x1="90" y1="30" x2="90" y2="60" stroke="#1e293b" stroke-width="1" data-v-14ee96e9></line></g><rect x="25" y="40" width="2" height="10" fill="#475569" opacity="0.6" data-v-14ee96e9></rect><rect x="30" y="38" width="2" height="14" fill="#475569" opacity="0.6" data-v-14ee96e9></rect><rect x="35" y="36" width="2" height="18" fill="#475569" opacity="0.6" data-v-14ee96e9></rect>',4)),e.createElementVNode("rect",{x:"95",y:"42",width:"20",height:"6",rx:"1",fill:`url(#shaft-gradient-${t.value})`,stroke:"#475569","stroke-width":"0.5"},null,8,qd),e.createElementVNode("g",{transform:`rotate(${a.value} 105 45)`},[...m[3]||(m[3]=[e.createStaticVNode('<g opacity="0.8" data-v-14ee96e9><rect x="103" y="40" width="4" height="10" rx="1" fill="#94a3b8" data-v-14ee96e9></rect><rect x="100" y="43" width="10" height="4" rx="1" fill="#94a3b8" data-v-14ee96e9></rect><line x1="102" y1="42" x2="108" y2="48" stroke="#94a3b8" stroke-width="3" stroke-linecap="round" data-v-14ee96e9></line><line x1="108" y1="42" x2="102" y2="48" stroke="#94a3b8" stroke-width="3" stroke-linecap="round" data-v-14ee96e9></line></g>',1)])],8,Gd),m[6]||(m[6]=e.createStaticVNode('<circle cx="105" cy="45" r="3" fill="#334155" stroke="#64748b" stroke-width="1" data-v-14ee96e9></circle><rect x="45" y="15" width="15" height="10" rx="1" fill="#334155" stroke="#475569" stroke-width="0.5" data-v-14ee96e9></rect><circle cx="48" cy="20" r="1" fill="#dc2626" data-v-14ee96e9></circle><circle cx="52" cy="20" r="1" fill="#22c55e" data-v-14ee96e9></circle><circle cx="56" cy="20" r="1" fill="#3b82f6" data-v-14ee96e9></circle>',5)),e.createElementVNode("circle",{cx:"15",cy:"45",r:"4",fill:n.value?"#22c55e":"#ef4444",filter:n.value?`url(#indicator-glow-${t.value})`:"none"},null,8,Hd),e.createElementVNode("circle",{cx:"15",cy:"45",r:"2",fill:"#ffffff",opacity:n.value?.6:.2},null,8,Kd),m[7]||(m[7]=e.createElementVNode("rect",{x:"40",y:"55",width:"40",height:"8",rx:"1",fill:"#1e293b",opacity:"0.7"},null,-1)),e.createElementVNode("text",Qd,e.toDisplayString(i.value)+"kW "+e.toDisplayString(o.value)+"rpm ",1)])),e.createElementVNode("div",{class:e.normalizeClass(["status-text",{"is-running":n.value}])},e.toDisplayString(n.value?"运行中":"已停止"),3)]))}}),[["__scopeId","data-v-14ee96e9"]]),Jd={class:"valve-3d-container"},Xd={viewBox:"0 0 100 120",xmlns:"http://www.w3.org/2000/svg"},Zd=["id"],eu=["id"],tu=["fill"],ru=["fill"],ou=["fill"],nu=["fill"],iu={transform:"translate(50, 60)"},su=["fill","transform"],au=["transform"],lu=["fill"],cu=["fill"],du={x:"12.5",y:"62","font-size":"6",fill:"#ffffff","text-anchor":"middle","font-weight":"bold"},uu={x:"85",y:"62","font-size":"8",fill:"#cbd5e1","text-anchor":"middle","font-family":"monospace"},fu=Me(e.defineComponent({__name:"Valve3D",props:{node:{}},setup(u){const r=u,t=e.ref(`valve-${Math.random().toString(36).substr(2,9)}`),l=()=>r.node?r.node.getData?r.node.getData():r.node.data||{}:{},n=e.ref(!1),o=e.ref(0),i=e.computed(()=>o.value/100*720),a=()=>{const s=l();n.value=s.state==="open"||s.state===!0,o.value=s.openness!==void 0?s.openness:n.value?100:0};return e.watch(()=>r.node,()=>{a()},{deep:!0}),e.onMounted(()=>{a(),r.node&&typeof r.node.on=="function"&&r.node.on("change:data",()=>{a()})}),(s,c)=>(e.openBlock(),e.createElementBlock("div",Jd,[(e.openBlock(),e.createElementBlock("svg",Xd,[e.createElementVNode("defs",null,[e.createElementVNode("linearGradient",{id:`valve-body-${t.value}`,x1:"0%",y1:"0%",x2:"100%",y2:"0%"},[...c[0]||(c[0]=[e.createElementVNode("stop",{offset:"0%","stop-color":"#64748b"},null,-1),e.createElementVNode("stop",{offset:"50%","stop-color":"#94a3b8"},null,-1),e.createElementVNode("stop",{offset:"100%","stop-color":"#64748b"},null,-1)])],8,Zd),e.createElementVNode("linearGradient",{id:`handle-gradient-${t.value}`,x1:"0%",y1:"0%",x2:"0%",y2:"100%"},[...c[1]||(c[1]=[e.createElementVNode("stop",{offset:"0%","stop-color":"#ef4444"},null,-1),e.createElementVNode("stop",{offset:"50%","stop-color":"#dc2626"},null,-1),e.createElementVNode("stop",{offset:"100%","stop-color":"#b91c1c"},null,-1)])],8,eu)]),e.createElementVNode("rect",{x:"40",y:"85",width:"20",height:"30",fill:`url(#valve-body-${t.value})`,stroke:"#475569","stroke-width":"1"},null,8,tu),c[3]||(c[3]=e.createElementVNode("ellipse",{cx:"50",cy:"85",rx:"10",ry:"5",fill:"#94a3b8",stroke:"#475569","stroke-width":"1"},null,-1)),c[4]||(c[4]=e.createElementVNode("ellipse",{cx:"50",cy:"115",rx:"10",ry:"5",fill:"#64748b",stroke:"#475569","stroke-width":"1"},null,-1)),e.createElementVNode("ellipse",{cx:"50",cy:"60",rx:"25",ry:"15",fill:`url(#valve-body-${t.value})`,stroke:"#475569","stroke-width":"1"},null,8,ru),e.createElementVNode("rect",{x:"25",y:"50",width:"50",height:"20",fill:`url(#valve-body-${t.value})`,stroke:"#475569","stroke-width":"1"},null,8,ou),c[5]||(c[5]=e.createStaticVNode('<ellipse cx="50" cy="50" rx="25" ry="15" fill="#94a3b8" stroke="#475569" stroke-width="1" data-v-9c6b9014></ellipse><g data-v-9c6b9014><circle cx="30" cy="55" r="2" fill="#334155" data-v-9c6b9014></circle><circle cx="30" cy="65" r="2" fill="#334155" data-v-9c6b9014></circle><circle cx="70" cy="55" r="2" fill="#334155" data-v-9c6b9014></circle><circle cx="70" cy="65" r="2" fill="#334155" data-v-9c6b9014></circle></g>',2)),e.createElementVNode("rect",{x:"40",y:"10",width:"20",height:"30",fill:`url(#valve-body-${t.value})`,stroke:"#475569","stroke-width":"1"},null,8,nu),c[6]||(c[6]=e.createElementVNode("ellipse",{cx:"50",cy:"10",rx:"10",ry:"5",fill:"#94a3b8",stroke:"#475569","stroke-width":"1"},null,-1)),c[7]||(c[7]=e.createElementVNode("ellipse",{cx:"50",cy:"40",rx:"10",ry:"5",fill:"#64748b",stroke:"#475569","stroke-width":"1"},null,-1)),e.createElementVNode("g",iu,[e.createElementVNode("rect",{x:"-3",y:"-20",width:"6",height:"40",rx:"3",fill:n.value?"#22c55e":"#ef4444",transform:`rotate(${n.value?0:90})`,style:{transition:"transform 0.5s ease"}},null,8,su)]),c[8]||(c[8]=e.createElementVNode("rect",{x:"47",y:"40",width:"6",height:"40",rx:"1",fill:"#475569",stroke:"#334155","stroke-width":"0.5"},null,-1)),e.createElementVNode("g",{transform:`rotate(${i.value} 50 25)`,style:{transformOrigin:"50px 25px"}},[e.createElementVNode("circle",{cx:"50",cy:"25",r:"15",fill:`url(#handle-gradient-${t.value})`,stroke:"#991b1b","stroke-width":"1"},null,8,lu),c[2]||(c[2]=e.createStaticVNode('<circle cx="50" cy="25" r="12" fill="none" stroke="#7f1d1d" stroke-width="2" data-v-9c6b9014></circle><circle cx="50" cy="25" r="5" fill="#7f1d1d" data-v-9c6b9014></circle><line x1="50" y1="25" x2="50" y2="12" stroke="#7f1d1d" stroke-width="2" data-v-9c6b9014></line><line x1="50" y1="25" x2="50" y2="38" stroke="#7f1d1d" stroke-width="2" data-v-9c6b9014></line><line x1="50" y1="25" x2="37" y2="25" stroke="#7f1d1d" stroke-width="2" data-v-9c6b9014></line><line x1="50" y1="25" x2="63" y2="25" stroke="#7f1d1d" stroke-width="2" data-v-9c6b9014></line><rect x="63" y="23" width="8" height="4" rx="2" fill="#991b1b" data-v-9c6b9014></rect>',7))],8,au),e.createElementVNode("g",null,[e.createElementVNode("rect",{x:"5",y:"55",width:"15",height:"10",rx:"2",fill:n.value?"#22c55e":"#ef4444",opacity:"0.9"},null,8,cu),e.createElementVNode("text",du,e.toDisplayString(n.value?"ON":"OFF"),1)]),e.createElementVNode("text",uu,e.toDisplayString(o.value)+"% ",1)])),e.createElementVNode("div",{class:e.normalizeClass(["status-text",{"is-open":n.value}])},e.toDisplayString(n.value?"开启":"关闭")+" - "+e.toDisplayString(o.value)+"% ",3)]))}}),[["__scopeId","data-v-9c6b9014"]]),pu={class:"tank-3d-container"},hu={viewBox:"0 0 100 140",xmlns:"http://www.w3.org/2000/svg"},mu=["id"],gu=["id"],yu=["stop-color"],bu=["stop-color"],wu=["id"],Eu=["fill"],vu=["y","height","fill","filter"],ku=["cy","fill"],_u=["fill"],Nu=["height"],xu={x:"65",y:"38","font-size":"5",fill:"#22c55e","text-anchor":"middle"},Su=["height"],Vu={x:"50",y:"127","font-size":"6",fill:"#22c55e","text-anchor":"middle","font-family":"monospace"},Cu={class:"status-text"},Iu=Me(e.defineComponent({__name:"Tank3D",props:{node:{}},setup(u){const r=u,t=e.ref(`tank-${Math.random().toString(36).substr(2,9)}`),l=()=>r.node?r.node.getData?r.node.getData():r.node.data||{}:{},n=e.ref(50),o=e.ref(100),i=e.ref(25),a=e.ref(101),s=e.ref("#3b82f6"),c=e.computed(()=>(n.value/100*o.value).toFixed(1)),d=e.computed(()=>90*n.value/100),f=e.computed(()=>110-d.value),m=()=>{const h=l();n.value=Math.max(0,Math.min(100,h.level||50)),o.value=h.capacity||100,i.value=h.temperature||25,a.value=h.pressure||101,s.value=h.liquidColor||"#3b82f6"};return e.watch(()=>r.node,()=>{m()},{deep:!0}),e.onMounted(()=>{m(),r.node&&typeof r.node.on=="function"&&r.node.on("change:data",()=>{m()})}),(h,p)=>(e.openBlock(),e.createElementBlock("div",pu,[(e.openBlock(),e.createElementBlock("svg",hu,[e.createElementVNode("defs",null,[e.createElementVNode("linearGradient",{id:`tank-body-${t.value}`,x1:"0%",y1:"0%",x2:"100%",y2:"0%"},[...p[0]||(p[0]=[e.createElementVNode("stop",{offset:"0%","stop-color":"#64748b"},null,-1),e.createElementVNode("stop",{offset:"50%","stop-color":"#cbd5e1"},null,-1),e.createElementVNode("stop",{offset:"100%","stop-color":"#64748b"},null,-1)])],8,mu),e.createElementVNode("linearGradient",{id:`liquid-${t.value}`,x1:"0%",y1:"0%",x2:"0%",y2:"100%"},[e.createElementVNode("stop",{offset:"0%","stop-color":s.value,"stop-opacity":"0.9"},null,8,yu),e.createElementVNode("stop",{offset:"100%","stop-color":s.value,"stop-opacity":"0.7"},null,8,bu)],8,gu),e.createElementVNode("filter",{id:`wave-${t.value}`},[...p[1]||(p[1]=[e.createElementVNode("feTurbulence",{type:"fractalNoise",baseFrequency:"0.02",numOctaves:"2",result:"turbulence"},null,-1),e.createElementVNode("feDisplacementMap",{in:"SourceGraphic",in2:"turbulence",scale:"2",xChannelSelector:"R",yChannelSelector:"G"},null,-1)])],8,wu)]),p[2]||(p[2]=e.createElementVNode("ellipse",{cx:"50",cy:"20",rx:"30",ry:"8",fill:"#94a3b8",stroke:"#475569","stroke-width":"1"},null,-1)),p[3]||(p[3]=e.createElementVNode("ellipse",{cx:"50",cy:"20",rx:"25",ry:"6",fill:"#cbd5e1"},null,-1)),e.createElementVNode("rect",{x:"20",y:"20",width:"60",height:"90",fill:`url(#tank-body-${t.value})`,stroke:"#475569","stroke-width":"1"},null,8,Eu),p[4]||(p[4]=e.createStaticVNode('<g opacity="0.6" data-v-13c65d9d><line x1="15" y1="30" x2="20" y2="30" stroke="#94a3b8" stroke-width="1" data-v-13c65d9d></line><text x="12" y="32" font-size="5" fill="#94a3b8" text-anchor="end" data-v-13c65d9d>100%</text><line x1="15" y1="52.5" x2="20" y2="52.5" stroke="#94a3b8" stroke-width="1" data-v-13c65d9d></line><text x="12" y="54.5" font-size="5" fill="#94a3b8" text-anchor="end" data-v-13c65d9d>75%</text><line x1="15" y1="75" x2="20" y2="75" stroke="#94a3b8" stroke-width="1" data-v-13c65d9d></line><text x="12" y="77" font-size="5" fill="#94a3b8" text-anchor="end" data-v-13c65d9d>50%</text><line x1="15" y1="97.5" x2="20" y2="97.5" stroke="#94a3b8" stroke-width="1" data-v-13c65d9d></line><text x="12" y="99.5" font-size="5" fill="#94a3b8" text-anchor="end" data-v-13c65d9d>25%</text><line x1="15" y1="110" x2="20" y2="110" stroke="#94a3b8" stroke-width="1" data-v-13c65d9d></line><text x="12" y="112" font-size="5" fill="#94a3b8" text-anchor="end" data-v-13c65d9d>0%</text></g>',1)),e.createElementVNode("rect",{x:"20",y:f.value,width:"60",height:d.value,fill:`url(#liquid-${t.value})`,filter:`url(#wave-${t.value})`,opacity:"0.85"},null,8,vu),n.value>0?(e.openBlock(),e.createElementBlock("ellipse",{key:0,cx:"50",cy:f.value,rx:"30",ry:"5",fill:s.value,opacity:"0.6"},null,8,ku)):e.createCommentVNode("",!0),e.createElementVNode("ellipse",{cx:"50",cy:"110",rx:"30",ry:"8",fill:`url(#tank-body-${t.value})`,stroke:"#475569","stroke-width":"1"},null,8,_u),p[5]||(p[5]=e.createStaticVNode('<g data-v-13c65d9d><rect x="23" y="110" width="4" height="15" fill="#475569" data-v-13c65d9d></rect><rect x="73" y="110" width="4" height="15" fill="#475569" data-v-13c65d9d></rect><rect x="20" y="123" width="10" height="3" rx="1" fill="#64748b" data-v-13c65d9d></rect><rect x="70" y="123" width="10" height="3" rx="1" fill="#64748b" data-v-13c65d9d></rect></g><rect x="45" y="12" width="10" height="8" rx="1" fill="#64748b" stroke="#475569" stroke-width="0.5" data-v-13c65d9d></rect><ellipse cx="50" cy="12" rx="5" ry="3" fill="#94a3b8" data-v-13c65d9d></ellipse><rect x="75" y="105" width="8" height="4" rx="1" fill="#64748b" stroke="#475569" stroke-width="0.5" data-v-13c65d9d></rect><rect x="82" y="30" width="6" height="80" rx="1" fill="#334155" opacity="0.7" data-v-13c65d9d></rect>',5)),e.createElementVNode("rect",{x:"84",y:"32",width:"2",height:76*(n.value/100),fill:"#22c55e"},null,8,Nu),p[6]||(p[6]=e.createElementVNode("circle",{cx:"65",cy:"35",r:"8",fill:"#1e293b",stroke:"#475569","stroke-width":"1"},null,-1)),e.createElementVNode("text",xu,e.toDisplayString(a.value),1),p[7]||(p[7]=e.createElementVNode("text",{x:"65",y:"42","font-size":"3",fill:"#94a3b8","text-anchor":"middle"},"kPa",-1)),p[8]||(p[8]=e.createElementVNode("rect",{x:"32",y:"35",width:"4",height:"15",rx:"2",fill:"#1e293b",stroke:"#475569","stroke-width":"0.5"},null,-1)),e.createElementVNode("rect",{x:"33",y:"37",width:"2",height:i.value/10,fill:"#ef4444"},null,8,Su),p[9]||(p[9]=e.createElementVNode("circle",{cx:"34",cy:"52",r:"2",fill:"#ef4444"},null,-1)),p[10]||(p[10]=e.createElementVNode("rect",{x:"25",y:"120",width:"50",height:"12",rx:"2",fill:"#1e293b",opacity:"0.9"},null,-1)),e.createElementVNode("text",Vu,e.toDisplayString(n.value)+"% | "+e.toDisplayString(c.value)+"m³ ",1)])),e.createElementVNode("div",Cu," 液位: "+e.toDisplayString(n.value)+"% | 容量: "+e.toDisplayString(c.value)+"m³ ",1)]))}}),[["__scopeId","data-v-13c65d9d"]]),Au={class:"pump-3d-container"},$u={viewBox:"0 0 140 100",xmlns:"http://www.w3.org/2000/svg"},Tu=["id"],Bu=["id"],Du=["id"],Pu={key:0,attributeName:"x1",values:"-100%;100%",dur:"1s",repeatCount:"indefinite"},Ou={key:1,attributeName:"x2",values:"0%;200%",dur:"1s",repeatCount:"indefinite"},Mu=["fill"],Ru=["fill"],ju=["fill"],Lu=["fill"],Uu=["transform"],Fu=["fill"],zu={transform:"translate(100, 25)"},Wu={x:"0",y:"2","font-size":"5",fill:"#22c55e","text-anchor":"middle"},qu={transform:"translate(115, 35)"},Gu={x:"0",y:"1","font-size":"4",fill:"#3b82f6","text-anchor":"middle"},Hu=["fill"],Ku=["opacity"],Qu={x:"60",y:"68","font-size":"4",fill:"#cbd5e1","text-anchor":"middle","font-family":"monospace"},Yu=Me(e.defineComponent({__name:"Pump3D",props:{node:{}},setup(u){const r=u,t=e.ref(`pump-${Math.random().toString(36).substr(2,9)}`),l=()=>r.node?r.node.getData?r.node.getData():r.node.data||{}:{},n=e.ref(!1),o=e.ref(2900),i=e.ref(5.5),a=e.ref(0),s=e.ref(0),c=e.ref(0);let d=null;const f=()=>{if(n.value){const h=o.value/360;c.value=(c.value+h)%360}d=requestAnimationFrame(f)},m=()=>{const h=l();n.value=h.state==="running"||h.state===!0,o.value=h.speed||2900,i.value=h.power||5.5,a.value=n.value?h.flowRate||15:0,s.value=n.value?(h.pressure||3.5).toFixed(1):0};return e.watch(()=>r.node,()=>{m()},{deep:!0}),e.onMounted(()=>{m(),n.value&&f(),r.node&&typeof r.node.on=="function"&&r.node.on("change:data",()=>{const h=n.value;m(),n.value&&!h?f():!n.value&&h&&d&&(cancelAnimationFrame(d),d=null)})}),e.onUnmounted(()=>{d&&cancelAnimationFrame(d)}),(h,p)=>(e.openBlock(),e.createElementBlock("div",Au,[(e.openBlock(),e.createElementBlock("svg",$u,[e.createElementVNode("defs",null,[e.createElementVNode("radialGradient",{id:`pump-body-${t.value}`,cx:"50%",cy:"50%"},[...p[0]||(p[0]=[e.createElementVNode("stop",{offset:"0%","stop-color":"#cbd5e1"},null,-1),e.createElementVNode("stop",{offset:"70%","stop-color":"#94a3b8"},null,-1),e.createElementVNode("stop",{offset:"100%","stop-color":"#64748b"},null,-1)])],8,Tu),e.createElementVNode("linearGradient",{id:`motor-gradient-${t.value}`,x1:"0%",y1:"0%",x2:"0%",y2:"100%"},[...p[1]||(p[1]=[e.createElementVNode("stop",{offset:"0%","stop-color":"#94a3b8"},null,-1),e.createElementVNode("stop",{offset:"50%","stop-color":"#64748b"},null,-1),e.createElementVNode("stop",{offset:"100%","stop-color":"#475569"},null,-1)])],8,Bu),e.createElementVNode("linearGradient",{id:`flow-gradient-${t.value}`,x1:"0%",y1:"0%",x2:"100%",y2:"0%"},[p[2]||(p[2]=e.createElementVNode("stop",{offset:"0%","stop-color":"#3b82f6","stop-opacity":"0.3"},null,-1)),p[3]||(p[3]=e.createElementVNode("stop",{offset:"50%","stop-color":"#60a5fa","stop-opacity":"0.6"},null,-1)),p[4]||(p[4]=e.createElementVNode("stop",{offset:"100%","stop-color":"#3b82f6","stop-opacity":"0.3"},null,-1)),n.value?(e.openBlock(),e.createElementBlock("animate",Pu)):e.createCommentVNode("",!0),n.value?(e.openBlock(),e.createElementBlock("animate",Ou)):e.createCommentVNode("",!0)],8,Du)]),e.createElementVNode("rect",{x:"30",y:"75",width:"60",height:"20",rx:"2",fill:`url(#motor-gradient-${t.value})`},null,8,Mu),p[15]||(p[15]=e.createElementVNode("rect",{x:"30",y:"75",width:"60",height:"2",fill:"#1e293b",opacity:"0.4"},null,-1)),p[16]||(p[16]=e.createElementVNode("circle",{cx:"35",cy:"85",r:"2",fill:"#334155"},null,-1)),p[17]||(p[17]=e.createElementVNode("circle",{cx:"85",cy:"85",r:"2",fill:"#334155"},null,-1)),e.createElementVNode("ellipse",{cx:"60",cy:"50",rx:"28",ry:"25",fill:`url(#pump-body-${t.value})`,stroke:"#475569","stroke-width":"1.5"},null,8,Ru),p[18]||(p[18]=e.createElementVNode("g",null,[e.createElementVNode("circle",{cx:"40",cy:"40",r:"3",fill:"#334155"}),e.createElementVNode("circle",{cx:"40",cy:"60",r:"3",fill:"#334155"}),e.createElementVNode("circle",{cx:"80",cy:"40",r:"3",fill:"#334155"}),e.createElementVNode("circle",{cx:"80",cy:"60",r:"3",fill:"#334155"})],-1)),e.createElementVNode("g",null,[p[5]||(p[5]=e.createElementVNode("rect",{x:"5",y:"45",width:"28",height:"10",rx:"2",fill:"#64748b",stroke:"#475569","stroke-width":"1"},null,-1)),p[6]||(p[6]=e.createElementVNode("ellipse",{cx:"5",cy:"50",rx:"5",ry:"5",fill:"#94a3b8",stroke:"#475569","stroke-width":"1"},null,-1)),n.value?(e.openBlock(),e.createElementBlock("rect",{key:0,x:"5",y:"46",width:"28",height:"8",fill:`url(#flow-gradient-${t.value})`,opacity:"0.7"},null,8,ju)):e.createCommentVNode("",!0)]),e.createElementVNode("g",null,[p[7]||(p[7]=e.createElementVNode("rect",{x:"87",y:"45",width:"48",height:"10",rx:"2",fill:"#64748b",stroke:"#475569","stroke-width":"1"},null,-1)),p[8]||(p[8]=e.createElementVNode("ellipse",{cx:"135",cy:"50",rx:"5",ry:"5",fill:"#94a3b8",stroke:"#475569","stroke-width":"1"},null,-1)),n.value?(e.openBlock(),e.createElementBlock("rect",{key:0,x:"87",y:"46",width:"48",height:"8",fill:`url(#flow-gradient-${t.value})`,opacity:"0.7"},null,8,Lu)):e.createCommentVNode("",!0)]),e.createElementVNode("g",{transform:`rotate(${c.value} 60 50)`},[...p[9]||(p[9]=[e.createStaticVNode('<circle cx="60" cy="50" r="15" fill="#475569" opacity="0.6" data-v-71be9db7></circle><path d="M 60 50 L 70 35 Q 75 40 70 50 Z" fill="#64748b" data-v-71be9db7></path><path d="M 60 50 L 75 50 Q 75 55 65 60 Z" fill="#64748b" data-v-71be9db7></path><path d="M 60 50 L 60 65 Q 55 65 50 60 Z" fill="#64748b" data-v-71be9db7></path><path d="M 60 50 L 45 50 Q 45 45 50 40 Z" fill="#64748b" data-v-71be9db7></path>',5)])],8,Uu),p[19]||(p[19]=e.createElementVNode("circle",{cx:"60",cy:"50",r:"5",fill:"#334155",stroke:"#64748b","stroke-width":"1"},null,-1)),e.createElementVNode("rect",{x:"50",y:"20",width:"20",height:"10",rx:"2",fill:`url(#motor-gradient-${t.value})`,stroke:"#475569","stroke-width":"1"},null,8,Fu),p[20]||(p[20]=e.createElementVNode("rect",{x:"58",y:"30",width:"4",height:"20",fill:"#475569"},null,-1)),e.createElementVNode("g",zu,[p[10]||(p[10]=e.createElementVNode("circle",{cx:"0",cy:"0",r:"10",fill:"#1e293b",stroke:"#475569","stroke-width":"1"},null,-1)),p[11]||(p[11]=e.createElementVNode("circle",{cx:"0",cy:"0",r:"8",fill:"none",stroke:"#64748b","stroke-width":"0.5"},null,-1)),e.createElementVNode("text",Wu,e.toDisplayString(s.value),1),p[12]||(p[12]=e.createElementVNode("text",{x:"0",y:"6","font-size":"2.5",fill:"#94a3b8","text-anchor":"middle"},"bar",-1))]),e.createElementVNode("g",qu,[p[13]||(p[13]=e.createElementVNode("rect",{x:"-8",y:"-6",width:"16",height:"12",rx:"1",fill:"#1e293b",stroke:"#475569","stroke-width":"0.5"},null,-1)),e.createElementVNode("text",Gu,e.toDisplayString(a.value),1),p[14]||(p[14]=e.createElementVNode("text",{x:"0",y:"4.5","font-size":"2",fill:"#94a3b8","text-anchor":"middle"},"m³/h",-1))]),e.createElementVNode("circle",{cx:"25",cy:"30",r:"4",fill:n.value?"#22c55e":"#ef4444"},null,8,Hu),e.createElementVNode("circle",{cx:"25",cy:"30",r:"2",fill:"#ffffff",opacity:n.value?.6:.2},null,8,Ku),p[21]||(p[21]=e.createElementVNode("rect",{x:"45",y:"62",width:"30",height:"8",rx:"1",fill:"#1e293b",opacity:"0.7"},null,-1)),e.createElementVNode("text",Qu,e.toDisplayString(i.value)+"kW "+e.toDisplayString(o.value)+"rpm ",1)])),e.createElementVNode("div",{class:e.normalizeClass(["status-text",{"is-running":n.value}])},e.toDisplayString(n.value?"运行中":"已停止")+" | "+e.toDisplayString(a.value)+"m³/h ",3)]))}}),[["__scopeId","data-v-71be9db7"]]),ds={metadata:{id:"motor-3d",name:"3D电机",category:"iot",icon:"⚡",description:"3D仿真电机组件,支持运行状态和转速显示",version:"1.0.0"},shape:"motor-3d-vue",component:Yd,width:140,height:110,label:"",attrs:{body:{fill:"transparent",stroke:"transparent"}},data:{type:"motor",state:!1,speed:1500,power:7.5,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:"state",label:"运行状态",type:"select",path:"data.state",defaultValue:!1,options:[{label:"停止",value:!1},{label:"运行",value:"running"}]},{key:"speed",label:"转速(rpm)",type:"number",path:"data.speed",defaultValue:1500,min:0},{key:"power",label:"功率(kW)",type:"number",path:"data.power",defaultValue:7.5,min:0},{key:"deviceId",label:"设备ID",type:"text",path:"data.deviceId",defaultValue:""},{key:"property",label:"设备属性",type:"text",path:"data.property",defaultValue:""}]},us={metadata:{id:"valve-3d",name:"3D阀门",category:"iot",icon:"🚰",description:"3D仿真阀门组件,支持开关状态和开度显示",version:"1.0.0"},shape:"valve-3d-vue",component:fu,width:100,height:140,label:"",attrs:{body:{fill:"transparent",stroke:"transparent"}},data:{type:"valve",state:!1,openness:0,deviceId:"",property:""},ports:{groups:{top:{position:"top",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"}}}},items:[{id:"port-top",group:"top"},{id:"port-bottom",group:"bottom"}]},props:[{key:"state",label:"阀门状态",type:"select",path:"data.state",defaultValue:!1,options:[{label:"关闭",value:!1},{label:"开启",value:"open"}]},{key:"openness",label:"开度(%)",type:"number",path:"data.openness",defaultValue:0,min:0,max:100},{key:"deviceId",label:"设备ID",type:"text",path:"data.deviceId",defaultValue:""},{key:"property",label:"设备属性",type:"text",path:"data.property",defaultValue:""}]},fs={metadata:{id:"tank-3d",name:"3D储罐",category:"iot",icon:"🛢️",description:"3D仿真储罐组件,支持液位、温度、压力显示",version:"1.0.0"},shape:"tank-3d-vue",component:Iu,width:120,height:160,label:"",attrs:{body:{fill:"transparent",stroke:"transparent"}},data:{type:"tank",level:50,capacity:100,temperature:25,pressure:101,liquidColor:"#3b82f6",deviceId:"",property:""},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"}}}},items:[{id:"port-top",group:"top"},{id:"port-right",group:"right"},{id:"port-bottom",group:"bottom"}]},props:[{key:"level",label:"液位(%)",type:"number",path:"data.level",defaultValue:50,min:0,max:100},{key:"capacity",label:"容量(m³)",type:"number",path:"data.capacity",defaultValue:100,min:0},{key:"temperature",label:"温度(°C)",type:"number",path:"data.temperature",defaultValue:25},{key:"pressure",label:"压力(kPa)",type:"number",path:"data.pressure",defaultValue:101,min:0},{key:"liquidColor",label:"液体颜色",type:"color",path:"data.liquidColor",defaultValue:"#3b82f6"},{key:"deviceId",label:"设备ID",type:"text",path:"data.deviceId",defaultValue:""},{key:"property",label:"设备属性",type:"text",path:"data.property",defaultValue:""}]},ps={metadata:{id:"pump-3d",name:"3D水泵",category:"iot",icon:"🌊",description:"3D仿真水泵组件,支持运行状态、流量、压力显示",version:"1.0.0"},shape:"pump-3d-vue",component:Yu,width:160,height:120,label:"",attrs:{body:{fill:"transparent",stroke:"transparent"}},data:{type:"pump",state:!1,speed:2900,power:5.5,flowRate:15,pressure:3.5,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:"state",label:"运行状态",type:"select",path:"data.state",defaultValue:!1,options:[{label:"停止",value:!1},{label:"运行",value:"running"}]},{key:"speed",label:"转速(rpm)",type:"number",path:"data.speed",defaultValue:2900,min:0},{key:"power",label:"功率(kW)",type:"number",path:"data.power",defaultValue:5.5,min:0},{key:"flowRate",label:"流量(m³/h)",type:"number",path:"data.flowRate",defaultValue:15,min:0},{key:"pressure",label:"压力(bar)",type:"number",path:"data.pressure",defaultValue:3.5,min:0},{key:"deviceId",label:"设备ID",type:"text",path:"data.deviceId",defaultValue:""},{key:"property",label:"设备属性",type:"text",path:"data.property",defaultValue:""}]},Ju={class:"conveyor-3d-container"},Xu={viewBox:"0 0 200 80",xmlns:"http://www.w3.org/2000/svg"},Zu=["id"],ef=["id"],tf=["id"],rf=["fill","transform"],of=["transform"],nf=["fill","transform"],sf=["transform"],af=["fill"],lf=["x1","x2"],cf=["x","fill"],df=["fill","opacity"],uf={key:0,attributeName:"opacity",values:"1;0.4;1",dur:"1s",repeatCount:"indefinite"},ff={x:"100",y:"20","font-size":"10",fill:"#94a3b8","text-anchor":"middle","font-family":"monospace"},pf=Me(e.defineComponent({__name:"Conveyor3D",props:{node:{}},setup(u){const r=u,t=e.ref(`conveyor-${Math.random().toString(36).substr(2,9)}`),l=()=>r.node?r.node.getData?r.node.getData():r.node.data||{}:{},n=e.ref(!1),o=e.ref(10),i=e.ref("forward"),a=e.ref(0),s=e.ref(0),c=e.ref(30);let d=null;const f=()=>{if(n.value){const h=o.value/10,p=o.value/5;i.value==="forward"?(a.value=(a.value+h)%360,s.value=(s.value+p)%15,c.value=c.value+p,c.value>180&&(c.value=20)):(a.value=(a.value-h+360)%360,s.value=(s.value-p+15)%15,c.value=c.value-p,c.value<20&&(c.value=180))}d=requestAnimationFrame(f)},m=()=>{const h=l();n.value=h.state==="running"||h.state===!0,o.value=h.speed||10,i.value=h.direction||"forward"};return e.watch(()=>r.node,()=>{m()},{deep:!0}),e.onMounted(()=>{m(),f(),r.node&&typeof r.node.on=="function"&&r.node.on("change:data",()=>{m()})}),e.onUnmounted(()=>{d&&cancelAnimationFrame(d)}),(h,p)=>(e.openBlock(),e.createElementBlock("div",Ju,[(e.openBlock(),e.createElementBlock("svg",Xu,[e.createElementVNode("defs",null,[e.createElementVNode("linearGradient",{id:`belt-gradient-${t.value}`,x1:"0%",y1:"0%",x2:"0%",y2:"100%"},[...p[0]||(p[0]=[e.createElementVNode("stop",{offset:"0%","stop-color":"#1e293b"},null,-1),e.createElementVNode("stop",{offset:"50%","stop-color":"#334155"},null,-1),e.createElementVNode("stop",{offset:"100%","stop-color":"#1e293b"},null,-1)])],8,Zu),e.createElementVNode("radialGradient",{id:`roller-gradient-${t.value}`},[...p[1]||(p[1]=[e.createElementVNode("stop",{offset:"0%","stop-color":"#64748b"},null,-1),e.createElementVNode("stop",{offset:"70%","stop-color":"#475569"},null,-1),e.createElementVNode("stop",{offset:"100%","stop-color":"#334155"},null,-1)])],8,ef),e.createElementVNode("linearGradient",{id:`cargo-gradient-${t.value}`,x1:"0%",y1:"0%",x2:"100%",y2:"0%"},[...p[2]||(p[2]=[e.createElementVNode("stop",{offset:"0%","stop-color":"#3b82f6"},null,-1),e.createElementVNode("stop",{offset:"50%","stop-color":"#60a5fa"},null,-1),e.createElementVNode("stop",{offset:"100%","stop-color":"#3b82f6"},null,-1)])],8,tf)]),p[3]||(p[3]=e.createElementVNode("rect",{x:"10",y:"45",width:"180",height:"25",rx:"3",fill:"#0f172a",stroke:"#475569","stroke-width":"1"},null,-1)),e.createElementVNode("circle",{cx:"25",cy:"50",r:"12",fill:`url(#roller-gradient-${t.value})`,stroke:"#1e293b","stroke-width":"2",transform:`rotate(${a.value}, 25, 50)`},null,8,rf),(e.openBlock(),e.createElementBlock(e.Fragment,null,e.renderList(8,w=>e.createElementVNode("g",{key:`left-${w}`},[e.createElementVNode("line",{x1:25,y1:38,x2:25,y2:42,stroke:"#1e293b","stroke-width":"1.5",transform:`rotate(${a.value+w*45}, 25, 50)`},null,8,of)])),64)),e.createElementVNode("circle",{cx:"175",cy:"50",r:"12",fill:`url(#roller-gradient-${t.value})`,stroke:"#1e293b","stroke-width":"2",transform:`rotate(${a.value}, 175, 50)`},null,8,nf),(e.openBlock(),e.createElementBlock(e.Fragment,null,e.renderList(8,w=>e.createElementVNode("g",{key:`right-${w}`},[e.createElementVNode("line",{x1:175,y1:38,x2:175,y2:42,stroke:"#1e293b","stroke-width":"1.5",transform:`rotate(${a.value+w*45}, 175, 50)`},null,8,sf)])),64)),e.createElementVNode("rect",{x:"25",y:"38",width:"150",height:"24",fill:`url(#belt-gradient-${t.value})`},null,8,af),(e.openBlock(),e.createElementBlock(e.Fragment,null,e.renderList(10,w=>e.createElementVNode("g",{key:`line-${w}`},[e.createElementVNode("line",{x1:25+w*15+s.value,y1:38,x2:25+w*15+s.value,y2:62,stroke:"#475569","stroke-width":"1.5",opacity:"0.5"},null,8,lf)])),64)),n.value?(e.openBlock(),e.createElementBlock("rect",{key:0,x:c.value,y:"30",width:"30",height:"20",rx:"2",fill:`url(#cargo-gradient-${t.value})`,stroke:"#2563eb","stroke-width":"1",opacity:"0.9"},null,8,cf)):e.createCommentVNode("",!0),p[4]||(p[4]=e.createStaticVNode('<g data-v-eb26bad8><rect x="20" y="68" width="4" height="8" fill="#475569" data-v-eb26bad8></rect><rect x="96" y="68" width="4" height="8" fill="#475569" data-v-eb26bad8></rect><rect x="172" y="68" width="4" height="8" fill="#475569" data-v-eb26bad8></rect><rect x="18" y="74" width="8" height="2" rx="1" fill="#64748b" data-v-eb26bad8></rect><rect x="94" y="74" width="8" height="2" rx="1" fill="#64748b" data-v-eb26bad8></rect><rect x="170" y="74" width="8" height="2" rx="1" fill="#64748b" data-v-eb26bad8></rect></g><rect x="180" y="52" width="15" height="18" rx="2" fill="#334155" stroke="#475569" stroke-width="1" data-v-eb26bad8></rect><circle cx="187.5" cy="61" r="3" fill="#64748b" data-v-eb26bad8></circle>',3)),e.createElementVNode("circle",{cx:"15",cy:"55",r:"3",fill:n.value?"#22c55e":"#ef4444",opacity:n.value?1:.5},[n.value?(e.openBlock(),e.createElementBlock("animate",uf)):e.createCommentVNode("",!0)],8,df),e.createElementVNode("text",ff,e.toDisplayString(o.value)+" m/min ",1)])),e.createElementVNode("div",{class:e.normalizeClass(["status-text",{"is-running":n.value}])},e.toDisplayString(n.value?"运行中":"停止")+" | "+e.toDisplayString(o.value)+" m/min ",3)]))}}),[["__scopeId","data-v-eb26bad8"]]),hf={class:"alarm-light-3d-container"},mf={viewBox:"0 0 80 100",xmlns:"http://www.w3.org/2000/svg"},gf=["id"],yf=["stop-color"],bf=["stop-color"],wf=["stop-color"],Ef=["id"],vf=["stop-color"],kf=["stop-color"],_f=["stop-color"],Nf=["id"],xf=["fill","opacity"],Sf=["transform"],Vf=["fill","opacity"],Cf=["fill"],If=["fill"],Af=["fill"],$f=["fill"],Tf={x:"40",y:"85","font-size":"4",fill:"#64748b","text-anchor":"middle","font-family":"Arial"},Bf=Me(e.defineComponent({__name:"AlarmLight3D",props:{node:{}},setup(u){const r=u,t=e.ref(`alarm-${Math.random().toString(36).substr(2,9)}`),l=()=>r.node?r.node.getData?r.node.getData():r.node.data||{}:{},n=e.ref(!1),o=e.ref("rotating"),i=e.ref("#ef4444"),a=e.ref(0),s=e.ref(.8);let c=null;const d=e.computed(()=>n.value?i.value:"#475569"),f=e.computed(()=>n.value?o.value==="rotating"?"旋转报警":o.value==="flashing"?"闪烁报警":"持续报警":"正常"),m=()=>{n.value?o.value==="rotating"?(a.value=(a.value+5)%360,s.value=.8):o.value==="flashing"?s.value=Math.abs(Math.sin(Date.now()/300)):s.value=.8:s.value=0,c=requestAnimationFrame(m)},h=()=>{const p=l();n.value=p.state==="active"||p.state===!0,o.value=p.mode||"rotating",i.value=p.color||"#ef4444"};return e.watch(()=>r.node,()=>{h()},{deep:!0}),e.onMounted(()=>{h(),m(),r.node&&typeof r.node.on=="function"&&r.node.on("change:data",()=>{h()})}),e.onUnmounted(()=>{c&&cancelAnimationFrame(c)}),(p,w)=>(e.openBlock(),e.createElementBlock("div",hf,[(e.openBlock(),e.createElementBlock("svg",mf,[e.createElementVNode("defs",null,[e.createElementVNode("linearGradient",{id:`dome-gradient-${t.value}`,x1:"0%",y1:"0%",x2:"0%",y2:"100%"},[e.createElementVNode("stop",{offset:"0%","stop-color":d.value,"stop-opacity":"0.9"},null,8,yf),e.createElementVNode("stop",{offset:"50%","stop-color":d.value,"stop-opacity":"0.7"},null,8,bf),e.createElementVNode("stop",{offset:"100%","stop-color":d.value,"stop-opacity":"0.5"},null,8,wf)],8,gf),e.createElementVNode("radialGradient",{id:`glow-${t.value}`},[e.createElementVNode("stop",{offset:"0%","stop-color":d.value,"stop-opacity":"0.8"},null,8,vf),e.createElementVNode("stop",{offset:"50%","stop-color":d.value,"stop-opacity":"0.3"},null,8,kf),e.createElementVNode("stop",{offset:"100%","stop-color":d.value,"stop-opacity":"0"},null,8,_f)],8,Ef),e.createElementVNode("linearGradient",{id:`base-gradient-${t.value}`,x1:"0%",y1:"0%",x2:"100%",y2:"0%"},[...w[0]||(w[0]=[e.createElementVNode("stop",{offset:"0%","stop-color":"#1e293b"},null,-1),e.createElementVNode("stop",{offset:"50%","stop-color":"#334155"},null,-1),e.createElementVNode("stop",{offset:"100%","stop-color":"#1e293b"},null,-1)])],8,Nf)]),n.value?(e.openBlock(),e.createElementBlock("circle",{key:0,cx:"40",cy:"35",r:"35",fill:`url(#glow-${t.value})`,opacity:s.value},null,8,xf)):e.createCommentVNode("",!0),w[3]||(w[3]=e.createElementVNode("ellipse",{cx:"40",cy:"35",rx:"25",ry:"22",fill:"#1e293b",stroke:"#475569","stroke-width":"1.5",opacity:"0.3"},null,-1)),e.createElementVNode("g",{transform:`rotate(${a.value}, 40, 35)`},[e.createElementVNode("ellipse",{cx:"40",cy:"35",rx:"23",ry:"20",fill:`url(#dome-gradient-${t.value})`,opacity:n.value?1:.3},null,8,Vf),w[1]||(w[1]=e.createElementVNode("path",{d:"M 17,35 Q 40,25 63,35",stroke:"#ffffff","stroke-width":"1",fill:"none",opacity:"0.3"},null,-1)),w[2]||(w[2]=e.createElementVNode("path",{d:"M 17,35 Q 40,45 63,35",stroke:"#000000","stroke-width":"1",fill:"none",opacity:"0.2"},null,-1))],8,Sf),w[4]||(w[4]=e.createElementVNode("rect",{x:"35",y:"55",width:"10",height:"8",rx:"2",fill:"#334155",stroke:"#475569","stroke-width":"1"},null,-1)),e.createElementVNode("ellipse",{cx:"40",cy:"63",rx:"18",ry:"5",fill:`url(#base-gradient-${t.value})`,stroke:"#475569","stroke-width":"1"},null,8,Cf),e.createElementVNode("rect",{x:"22",y:"63",width:"36",height:"12",fill:`url(#base-gradient-${t.value})`,stroke:"#475569","stroke-width":"1"},null,8,If),e.createElementVNode("ellipse",{cx:"40",cy:"75",rx:"18",ry:"5",fill:`url(#base-gradient-${t.value})`,stroke:"#475569","stroke-width":"1"},null,8,Af),w[5]||(w[5]=e.createElementVNode("circle",{cx:"28",cy:"69",r:"2",fill:"#64748b",stroke:"#1e293b","stroke-width":"0.5"},null,-1)),w[6]||(w[6]=e.createElementVNode("circle",{cx:"52",cy:"69",r:"2",fill:"#64748b",stroke:"#1e293b","stroke-width":"0.5"},null,-1)),w[7]||(w[7]=e.createElementVNode("line",{x1:"27",y1:"68",x2:"29",y2:"70",stroke:"#1e293b","stroke-width":"0.5"},null,-1)),w[8]||(w[8]=e.createElementVNode("line",{x1:"51",y1:"68",x2:"53",y2:"70",stroke:"#1e293b","stroke-width":"0.5"},null,-1)),e.createElementVNode("circle",{cx:"40",cy:"69",r:"1.5",fill:n.value?"#22c55e":"#64748b"},null,8,$f),e.createElementVNode("text",Tf," AL-"+e.toDisplayString(o.value.toUpperCase()),1)])),e.createElementVNode("div",{class:e.normalizeClass(["status-text",{"is-active":n.value}])},e.toDisplayString(f.value),3)]))}}),[["__scopeId","data-v-80aba40a"]]),Df={class:"temperature-sensor-3d-container"},Pf={viewBox:"0 0 80 120",xmlns:"http://www.w3.org/2000/svg"},Of=["id"],Mf=["id"],Rf=["stop-color"],jf=["stop-color"],Lf=["id"],Uf=["stop-color"],Ff=["stop-color"],zf=["fill"],Wf=["y","height","fill"],qf=["fill"],Gf=["fill"],Hf=["fill","opacity"],Kf={key:0,attributeName:"opacity",values:"1;0.3;1",dur:"0.8s",repeatCount:"indefinite"},Qf=Me(e.defineComponent({__name:"TemperatureSensor3D",props:{node:{}},setup(u){const r=u,t=e.ref(`temp-sensor-${Math.random().toString(36).substr(2,9)}`),l=()=>r.node?r.node.getData?r.node.getData():r.node.data||{}:{},n=e.ref(25),o=e.ref(100),i=e.ref(0),a=e.ref(80),s=e.ref(10),c=e.computed(()=>{const w=o.value-i.value;return Math.max(0,Math.min(1,(n.value-i.value)/w))*45}),d=e.computed(()=>65-c.value),f=e.computed(()=>n.value>=a.value?"#ef4444":n.value<=s.value?"#3b82f6":n.value>=60?"#f97316":n.value>=40?"#fbbf24":"#22c55e"),m=e.computed(()=>n.value>=a.value?"#ef4444":n.value<=s.value?"#3b82f6":"#22c55e"),h=e.computed(()=>n.value>=a.value||n.value<=s.value),p=()=>{const w=l();n.value=Math.round(w.temperature??25),o.value=w.maxTemp||100,i.value=w.minTemp||0,a.value=w.alarmHighLimit||80,s.value=w.alarmLowLimit||10};return e.watch(()=>r.node,()=>{p()},{deep:!0}),e.onMounted(()=>{p(),r.node&&typeof r.node.on=="function"&&r.node.on("change:data",()=>{p()})}),(w,v)=>(e.openBlock(),e.createElementBlock("div",Df,[(e.openBlock(),e.createElementBlock("svg",Pf,[e.createElementVNode("defs",null,[e.createElementVNode("linearGradient",{id:`shell-gradient-${t.value}`,x1:"0%",y1:"0%",x2:"100%",y2:"0%"},[...v[0]||(v[0]=[e.createElementVNode("stop",{offset:"0%","stop-color":"#64748b"},null,-1),e.createElementVNode("stop",{offset:"50%","stop-color":"#cbd5e1"},null,-1),e.createElementVNode("stop",{offset:"100%","stop-color":"#64748b"},null,-1)])],8,Of),e.createElementVNode("linearGradient",{id:`liquid-gradient-${t.value}`,x1:"0%",y1:"0%",x2:"0%",y2:"100%"},[e.createElementVNode("stop",{offset:"0%","stop-color":f.value},null,8,Rf),e.createElementVNode("stop",{offset:"100%","stop-color":f.value,"stop-opacity":"0.7"},null,8,jf)],8,Mf),e.createElementVNode("radialGradient",{id:`bulb-gradient-${t.value}`},[e.createElementVNode("stop",{offset:"0%","stop-color":f.value,"stop-opacity":"0.9"},null,8,Uf),e.createElementVNode("stop",{offset:"70%","stop-color":f.value},null,8,Ff),v[1]||(v[1]=e.createElementVNode("stop",{offset:"100%","stop-color":"#991b1b"},null,-1))],8,Lf)]),e.createElementVNode("rect",{x:"30",y:"15",width:"20",height:"60",rx:"10",fill:`url(#shell-gradient-${t.value})`,stroke:"#475569","stroke-width":"1.5"},null,8,zf),v[2]||(v[2]=e.createStaticVNode('<rect x="35" y="20" width="10" height="50" rx="5" fill="#f8fafc" stroke="#cbd5e1" stroke-width="1" opacity="0.8" data-v-1b4c4bcc></rect><g opacity="0.6" data-v-1b4c4bcc><line x1="32" y1="25" x2="35" y2="25" stroke="#64748b" stroke-width="0.8" data-v-1b4c4bcc></line><text x="29" y="27" font-size="5" fill="#64748b" text-anchor="end" data-v-1b4c4bcc>100</text><line x1="32" y1="35" x2="35" y2="35" stroke="#64748b" stroke-width="0.8" data-v-1b4c4bcc></line><text x="29" y="37" font-size="5" fill="#64748b" text-anchor="end" data-v-1b4c4bcc>75</text><line x1="32" y1="45" x2="35" y2="45" stroke="#64748b" stroke-width="0.8" data-v-1b4c4bcc></line><text x="29" y="47" font-size="5" fill="#64748b" text-anchor="end" data-v-1b4c4bcc>50</text><line x1="32" y1="55" x2="35" y2="55" stroke="#64748b" stroke-width="0.8" data-v-1b4c4bcc></line><text x="29" y="57" font-size="5" fill="#64748b" text-anchor="end" data-v-1b4c4bcc>25</text><line x1="32" y1="65" x2="35" y2="65" stroke="#64748b" stroke-width="0.8" data-v-1b4c4bcc></line><text x="29" y="67" font-size="5" fill="#64748b" text-anchor="end" data-v-1b4c4bcc>0</text></g>',2)),e.createElementVNode("rect",{x:"37",y:d.value,width:"6",height:c.value,rx:"3",fill:`url(#liquid-gradient-${t.value})`},null,8,Wf),e.createElementVNode("circle",{cx:"40",cy:"75",r:"10",fill:`url(#bulb-gradient-${t.value})`,stroke:"#991b1b","stroke-width":"1.5"},null,8,qf),v[3]||(v[3]=e.createStaticVNode('<ellipse cx="37" cy="72" rx="3" ry="4" fill="#ffffff" opacity="0.4" data-v-1b4c4bcc></ellipse><path d="M 40,85 Q 45,90 45,95 L 45,105" stroke="#1e293b" stroke-width="3" fill="none" stroke-linecap="round" data-v-1b4c4bcc></path><path d="M 40,85 Q 35,90 35,95 L 35,105" stroke="#ef4444" stroke-width="3" fill="none" stroke-linecap="round" data-v-1b4c4bcc></path><rect x="32" y="103" width="6" height="8" rx="1" fill="#fbbf24" stroke="#b45309" stroke-width="0.5" data-v-1b4c4bcc></rect><rect x="42" y="103" width="6" height="8" rx="1" fill="#1e293b" stroke="#475569" stroke-width="0.5" data-v-1b4c4bcc></rect><rect x="50" y="35" width="25" height="18" rx="2" fill="#0f172a" stroke="#334155" stroke-width="1" data-v-1b4c4bcc></rect>',6)),e.createElementVNode("text",{x:"62.5",y:"47","font-size":"10",fill:m.value,"text-anchor":"middle","font-family":"monospace"},e.toDisplayString(n.value),9,Gf),v[4]||(v[4]=e.createElementVNode("text",{x:"62.5",y:"51","font-size":"4",fill:"#64748b","text-anchor":"middle"},"°C",-1)),e.createElementVNode("circle",{cx:"58",cy:"29",r:"2.5",fill:h.value?"#ef4444":"#64748b",opacity:h.value?1:.3},[h.value?(e.openBlock(),e.createElementBlock("animate",Kf)):e.createCommentVNode("",!0)],8,Hf),v[5]||(v[5]=e.createElementVNode("text",{x:"40",y:"115","font-size":"5",fill:"#64748b","text-anchor":"middle","font-family":"Arial"}," PT100 ",-1))])),e.createElementVNode("div",{class:e.normalizeClass(["status-text",{"is-alarm":h.value}])},e.toDisplayString(n.value)+"°C "+e.toDisplayString(h.value?"- 超限":""),3)]))}}),[["__scopeId","data-v-1b4c4bcc"]]),Yf={class:"cylinder-3d-container"},Jf={viewBox:"0 0 60 140",xmlns:"http://www.w3.org/2000/svg"},Xf=["id"],Zf=["id"],ep=["id"],tp=["fill"],rp=["fill"],op=["fill"],np=["y","height","fill"],ip=["cy"],sp=["cy"],ap=["x","fill"],lp=["x","fill"],cp={x:"30",y:"125","font-size":"5",fill:"#64748b","text-anchor":"middle","font-family":"Arial"},dp={x:"30",y:"18","font-size":"8",fill:"#22c55e","text-anchor":"middle","font-family":"monospace"},up=Me(e.defineComponent({__name:"Cylinder3D",props:{node:{}},setup(u){const r=u,t=e.ref(`cylinder-${Math.random().toString(36).substr(2,9)}`),l=()=>r.node?r.node.getData?r.node.getData():r.node.data||{}:{},n=e.ref(0),o=e.ref(50),i=e.ref(200),a=e.ref("stop");let s=null,c=Date.now();const d=e.computed(()=>n.value>=o.value),f=e.computed(()=>n.value<=0),m=e.computed(()=>30+n.value/o.value*40),h=e.computed(()=>50-m.value),p=e.computed(()=>110-n.value/o.value*60),w=e.computed(()=>d.value?"伸出到位":f.value?"缩回到位":a.value==="extend"?"正在伸出":a.value==="retract"?"正在缩回":"停止"),v=e.computed(()=>d.value||f.value?"is-positioned":a.value!=="stop"?"is-moving":""),S=()=>{const k=Date.now(),_=(k-c)/1e3;c=k,a.value==="extend"&&n.value<o.value?n.value=Math.min(o.value,n.value+i.value*_):a.value==="retract"&&n.value>0&&(n.value=Math.max(0,n.value-i.value*_)),n.value=Math.round(n.value),s=requestAnimationFrame(S)},y=()=>{const k=l();a.value=k.action||"stop",o.value=k.stroke||50,i.value=k.speed||200,typeof k.position=="number"&&(n.value=Math.max(0,Math.min(o.value,k.position)))};return e.watch(()=>r.node,()=>{y()},{deep:!0}),e.onMounted(()=>{y(),c=Date.now(),S(),r.node&&typeof r.node.on=="function"&&r.node.on("change:data",()=>{y()})}),e.onUnmounted(()=>{s&&cancelAnimationFrame(s)}),(k,_)=>(e.openBlock(),e.createElementBlock("div",Yf,[(e.openBlock(),e.createElementBlock("svg",Jf,[e.createElementVNode("defs",null,[e.createElementVNode("linearGradient",{id:`cylinder-gradient-${t.value}`,x1:"0%",y1:"0%",x2:"100%",y2:"0%"},[..._[0]||(_[0]=[e.createElementVNode("stop",{offset:"0%","stop-color":"#475569"},null,-1),e.createElementVNode("stop",{offset:"30%","stop-color":"#94a3b8"},null,-1),e.createElementVNode("stop",{offset:"70%","stop-color":"#cbd5e1"},null,-1),e.createElementVNode("stop",{offset:"100%","stop-color":"#475569"},null,-1)])],8,Xf),e.createElementVNode("linearGradient",{id:`rod-gradient-${t.value}`,x1:"0%",y1:"0%",x2:"100%",y2:"0%"},[..._[1]||(_[1]=[e.createElementVNode("stop",{offset:"0%","stop-color":"#64748b"},null,-1),e.createElementVNode("stop",{offset:"50%","stop-color":"#94a3b8"},null,-1),e.createElementVNode("stop",{offset:"100%","stop-color":"#64748b"},null,-1)])],8,Zf),e.createElementVNode("radialGradient",{id:`cap-gradient-${t.value}`},[..._[2]||(_[2]=[e.createElementVNode("stop",{offset:"0%","stop-color":"#64748b"},null,-1),e.createElementVNode("stop",{offset:"70%","stop-color":"#475569"},null,-1),e.createElementVNode("stop",{offset:"100%","stop-color":"#334155"},null,-1)])],8,ep)]),e.createElementVNode("ellipse",{cx:"30",cy:"80",rx:"15",ry:"8",fill:`url(#cap-gradient-${t.value})`,stroke:"#1e293b","stroke-width":"1"},null,8,tp),e.createElementVNode("rect",{x:"15",y:"50",width:"30",height:"60",fill:`url(#cylinder-gradient-${t.value})`,stroke:"#334155","stroke-width":"1"},null,8,rp),_[3]||(_[3]=e.createStaticVNode('<g opacity="0.2" data-v-7429604c><line x1="15" y1="55" x2="45" y2="55" stroke="#1e293b" stroke-width="0.5" data-v-7429604c></line><line x1="15" y1="65" x2="45" y2="65" stroke="#1e293b" stroke-width="0.5" data-v-7429604c></line><line x1="15" y1="75" x2="45" y2="75" stroke="#1e293b" stroke-width="0.5" data-v-7429604c></line><line x1="15" y1="85" x2="45" y2="85" stroke="#1e293b" stroke-width="0.5" data-v-7429604c></line><line x1="15" y1="95" x2="45" y2="95" stroke="#1e293b" stroke-width="0.5" data-v-7429604c></line><line x1="15" y1="105" x2="45" y2="105" stroke="#1e293b" stroke-width="0.5" data-v-7429604c></line></g>',1)),e.createElementVNode("ellipse",{cx:"30",cy:"50",rx:"15",ry:"8",fill:`url(#cap-gradient-${t.value})`,stroke:"#1e293b","stroke-width":"1"},null,8,op),e.createElementVNode("rect",{x:"26",y:h.value,width:"8",height:m.value,fill:`url(#rod-gradient-${t.value})`,stroke:"#475569","stroke-width":"0.5"},null,8,np),e.createElementVNode("ellipse",{cx:"30",cy:h.value,rx:"4",ry:"2",fill:"#94a3b8",stroke:"#64748b","stroke-width":"0.5"},null,8,ip),e.createElementVNode("ellipse",{cx:"30",cy:p.value,rx:"13",ry:"6",fill:"#64748b",stroke:"#334155","stroke-width":"1"},null,8,sp),_[4]||(_[4]=e.createElementVNode("circle",{cx:"48",cy:"58",r:"3",fill:"#3b82f6",stroke:"#1e40af","stroke-width":"1"},null,-1)),_[5]||(_[5]=e.createElementVNode("text",{x:"55",y:"60","font-size":"6",fill:"#3b82f6","font-weight":"bold"},"A",-1)),_[6]||(_[6]=e.createElementVNode("circle",{cx:"48",cy:"102",r:"3",fill:"#ef4444",stroke:"#991b1b","stroke-width":"1"},null,-1)),_[7]||(_[7]=e.createElementVNode("text",{x:"55",y:"104","font-size":"6",fill:"#ef4444","font-weight":"bold"},"B",-1)),e.createElementVNode("rect",{x:d.value?48:50,y:"52",width:"6",height:"4",rx:"1",fill:d.value?"#22c55e":"#64748b",stroke:"#334155","stroke-width":"0.5"},null,8,ap),e.createElementVNode("rect",{x:f.value?48:50,y:"104",width:"6",height:"4",rx:"1",fill:f.value?"#22c55e":"#64748b",stroke:"#334155","stroke-width":"0.5"},null,8,lp),_[8]||(_[8]=e.createElementVNode("g",null,[e.createElementVNode("rect",{x:"5",y:"78",width:"8",height:"4",rx:"1",fill:"#334155"}),e.createElementVNode("circle",{cx:"7",cy:"80",r:"2",fill:"#64748b",stroke:"#1e293b","stroke-width":"0.5"}),e.createElementVNode("rect",{x:"47",y:"78",width:"8",height:"4",rx:"1",fill:"#334155"}),e.createElementVNode("circle",{cx:"53",cy:"80",r:"2",fill:"#64748b",stroke:"#1e293b","stroke-width":"0.5"})],-1)),e.createElementVNode("text",cp,e.toDisplayString(o.value)+"mm ",1),e.createElementVNode("text",dp,e.toDisplayString(n.value)+"mm ",1)])),e.createElementVNode("div",{class:e.normalizeClass(["status-text",v.value])},e.toDisplayString(w.value),3)]))}}),[["__scopeId","data-v-7429604c"]]),hs={metadata:{id:"conveyor-3d",name:"3D传送带",category:"iot",icon:"🔄",description:"3D仿真传送带组件,支持正反转和速度控制",version:"1.0.0"},shape:"conveyor-3d-vue",component:pf,width:220,height:100,label:"",attrs:{body:{fill:"transparent",stroke:"transparent"}},data:{type:"conveyor",state:!1,speed:10,direction:"forward",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:"state",label:"运行状态",type:"select",path:"data.state",defaultValue:!1,options:[{label:"停止",value:!1},{label:"运行",value:"running"}],description:"传送带运行状态"},{key:"speed",label:"速度(m/min)",type:"number",path:"data.speed",defaultValue:10,min:0,max:100,description:"传送带运行速度"},{key:"direction",label:"运行方向",type:"select",path:"data.direction",defaultValue:"forward",options:[{label:"正向",value:"forward"},{label:"反向",value:"reverse"}],description:"传送带运行方向"},{key:"deviceId",label:"设备ID",type:"text",path:"data.deviceId",defaultValue:"",description:"绑定的设备ID"},{key:"property",label:"设备属性",type:"text",path:"data.property",defaultValue:"",description:"绑定的设备属性名称"}]},ms={metadata:{id:"alarm-light-3d",name:"3D报警灯",category:"iot",icon:"🚨",description:"3D仿真报警灯组件,支持旋转、闪烁、持续三种模式",version:"1.0.0"},shape:"alarm-light-3d-vue",component:Bf,width:100,height:120,label:"",attrs:{body:{fill:"transparent",stroke:"transparent"}},data:{type:"alarm-light",state:!1,mode:"rotating",color:"#ef4444",deviceId:"",property:""},ports:{groups:{bottom:{position:"bottom",attrs:{circle:{r:4,magnet:!0,stroke:"#31d0c6",strokeWidth:2,fill:"#fff"}}}},items:[{id:"port-bottom",group:"bottom"}]},props:[{key:"state",label:"报警状态",type:"select",path:"data.state",defaultValue:!1,options:[{label:"正常",value:!1},{label:"报警",value:"active"}],description:"报警灯激活状态"},{key:"mode",label:"报警模式",type:"select",path:"data.mode",defaultValue:"rotating",options:[{label:"旋转",value:"rotating"},{label:"闪烁",value:"flashing"},{label:"持续",value:"steady"}],description:"报警灯工作模式"},{key:"color",label:"灯光颜色",type:"color",path:"data.color",defaultValue:"#ef4444",description:"报警灯颜色"},{key:"deviceId",label:"设备ID",type:"text",path:"data.deviceId",defaultValue:"",description:"绑定的设备ID"},{key:"property",label:"设备属性",type:"text",path:"data.property",defaultValue:"",description:"绑定的设备属性名称"}]},gs={metadata:{id:"temperature-sensor-3d",name:"3D温度传感器",category:"iot",icon:"🌡️",description:"3D仿真温度传感器,支持温度显示和报警",version:"1.0.0"},shape:"temperature-sensor-3d-vue",component:Qf,width:100,height:140,label:"",attrs:{body:{fill:"transparent",stroke:"transparent"}},data:{type:"temperature-sensor",temperature:25,maxTemp:100,minTemp:0,alarmHighLimit:80,alarmLowLimit:10,deviceId:"",property:""},ports:{groups:{bottom:{position:"bottom",attrs:{circle:{r:4,magnet:!0,stroke:"#31d0c6",strokeWidth:2,fill:"#fff"}}}},items:[{id:"port-bottom",group:"bottom"}]},props:[{key:"temperature",label:"当前温度(°C)",type:"number",path:"data.temperature",defaultValue:25,description:"当前测量温度值"},{key:"maxTemp",label:"最大量程(°C)",type:"number",path:"data.maxTemp",defaultValue:100,description:"传感器最大测量温度"},{key:"minTemp",label:"最小量程(°C)",type:"number",path:"data.minTemp",defaultValue:0,description:"传感器最小测量温度"},{key:"alarmHighLimit",label:"高温报警(°C)",type:"number",path:"data.alarmHighLimit",defaultValue:80,description:"高温报警阈值"},{key:"alarmLowLimit",label:"低温报警(°C)",type:"number",path:"data.alarmLowLimit",defaultValue:10,description:"低温报警阈值"},{key:"deviceId",label:"设备ID",type:"text",path:"data.deviceId",defaultValue:"",description:"绑定的设备ID"},{key:"property",label:"设备属性",type:"text",path:"data.property",defaultValue:"",description:"绑定的设备属性名称"}]},ys={metadata:{id:"cylinder-3d",name:"3D气缸",category:"iot",icon:"🔩",description:"3D仿真气缸组件,支持伸缩动作和位置显示",version:"1.0.0"},shape:"cylinder-3d-vue",component:up,width:80,height:160,label:"",attrs:{body:{fill:"transparent",stroke:"transparent"}},data:{type:"cylinder",action:"stop",position:0,stroke:50,speed:200,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:"action",label:"动作指令",type:"select",path:"data.action",defaultValue:"stop",options:[{label:"停止",value:"stop"},{label:"伸出",value:"extend"},{label:"缩回",value:"retract"}],description:"气缸动作指令"},{key:"position",label:"当前位置(mm)",type:"number",path:"data.position",defaultValue:0,min:0,description:"活塞杆当前位置"},{key:"stroke",label:"行程(mm)",type:"number",path:"data.stroke",defaultValue:50,min:10,max:200,description:"气缸最大行程"},{key:"speed",label:"速度(mm/s)",type:"number",path:"data.speed",defaultValue:200,min:10,max:1e3,description:"活塞杆运动速度"},{key:"deviceId",label:"设备ID",type:"text",path:"data.deviceId",defaultValue:"",description:"绑定的设备ID"},{key:"property",label:"设备属性",type:"text",path:"data.property",defaultValue:"",description:"绑定的设备属性名称"}]},fp={class:"pipe-3d-container"},pp=["viewBox"],hp=["id"],mp=["id"],gp=["stop-color"],yp=["stop-color"],bp=["stop-color"],wp={key:0},Ep=["y","width","height","fill"],vp=["y","width","height"],kp=["x","y","width","height","fill"],_p=["cy","rx","ry"],Np=["cx","cy","rx","ry"],xp=["cy"],Sp=["cy"],Vp=["cx","cy"],Cp=["cx","cy"],Ip={key:1},Ap=["x","width","height","fill"],$p=["x","width","height"],Tp=["x","y","width","height","fill"],Bp=["cx","rx","ry"],Dp=["cx","cy","rx","ry"],Pp=["cx"],Op=["cx"],Mp=["cx","cy"],Rp=["cx","cy"],jp={key:2},Lp=["id"],Up=["fill"],Fp=["x1","y1","x2","y2","stroke","marker-end"],zp=["x1","y1","x2","y2","stroke","marker-end"],Wp=Me(e.defineComponent({__name:"Pipe3D",props:{node:{}},setup(u){const r=u,t=e.ref(`pipe-${Math.random().toString(36).substr(2,9)}`),l=()=>r.node?r.node.getData?r.node.getData():r.node.data||{}:{},n=e.ref(!1),o=e.ref(10),i=e.ref("horizontal"),a=e.ref("#3b82f6"),s=e.ref(40),c=e.ref(200),d=e.computed(()=>s.value/2),f=e.computed(()=>c.value),m=e.computed(()=>i.value==="horizontal"?`0 0 ${f.value} ${s.value+10}`:`0 0 ${s.value+10} ${f.value}`),h=e.computed(()=>(s.value+10)/2),p=e.computed(()=>(s.value+10)/2),w=e.ref(0);let v=null;const S=()=>{if(n.value){const k=o.value/5;w.value=(w.value+k)%f.value}v=requestAnimationFrame(S)},y=()=>{const k=l();n.value=k.state==="flowing"||k.state===!0,o.value=k.flowRate||10,i.value=k.direction||"horizontal",a.value=k.fluidColor||"#3b82f6",s.value=k.diameter||40,c.value=k.length||200};return e.watch(()=>r.node,()=>{y()},{deep:!0}),e.onMounted(()=>{y(),S(),r.node&&typeof r.node.on=="function"&&r.node.on("change:data",()=>{y()})}),e.onUnmounted(()=>{v&&cancelAnimationFrame(v)}),(k,_)=>(e.openBlock(),e.createElementBlock("div",fp,[(e.openBlock(),e.createElementBlock("svg",{viewBox:m.value,xmlns:"http://www.w3.org/2000/svg"},[e.createElementVNode("defs",null,[e.createElementVNode("linearGradient",{id:`pipe-gradient-${t.value}`,x1:"0%",y1:"0%",x2:"100%",y2:"0%"},[..._[0]||(_[0]=[e.createElementVNode("stop",{offset:"0%","stop-color":"#475569"},null,-1),e.createElementVNode("stop",{offset:"30%","stop-color":"#94a3b8"},null,-1),e.createElementVNode("stop",{offset:"70%","stop-color":"#cbd5e1"},null,-1),e.createElementVNode("stop",{offset:"100%","stop-color":"#475569"},null,-1)])],8,hp),e.createElementVNode("linearGradient",{id:`flow-gradient-${t.value}`,x1:"0%",y1:"0%",x2:"100%",y2:"0%"},[e.createElementVNode("stop",{offset:"0%","stop-color":a.value,"stop-opacity":"0.3"},null,8,gp),e.createElementVNode("stop",{offset:"50%","stop-color":a.value,"stop-opacity":"0.8"},null,8,yp),e.createElementVNode("stop",{offset:"100%","stop-color":a.value,"stop-opacity":"0.3"},null,8,bp)],8,mp)]),i.value==="horizontal"?(e.openBlock(),e.createElementBlock("g",wp,[e.createElementVNode("rect",{x:"0",y:h.value-d.value,width:f.value,height:d.value*2,fill:`url(#pipe-gradient-${t.value})`,stroke:"#334155","stroke-width":"1"},null,8,Ep),e.createElementVNode("rect",{x:"0",y:h.value-d.value+3,width:f.value,height:d.value*2-6,fill:"#0f172a"},null,8,vp),n.value?(e.openBlock(),e.createElementBlock("rect",{key:0,x:w.value,y:h.value-d.value+5,width:f.value/2,height:d.value*2-10,fill:`url(#flow-gradient-${t.value})`},null,8,kp)):e.createCommentVNode("",!0),e.createElementVNode("g",null,[e.createElementVNode("ellipse",{cx:0,cy:h.value,rx:d.value+2,ry:d.value+2,fill:"#64748b",stroke:"#334155","stroke-width":"1"},null,8,_p),e.createElementVNode("ellipse",{cx:f.value,cy:h.value,rx:d.value+2,ry:d.value+2,fill:"#64748b",stroke:"#334155","stroke-width":"1"},null,8,Np),e.createElementVNode("circle",{cx:0,cy:h.value-d.value-2,r:"1.5",fill:"#1e293b"},null,8,xp),e.createElementVNode("circle",{cx:0,cy:h.value+d.value+2,r:"1.5",fill:"#1e293b"},null,8,Sp),e.createElementVNode("circle",{cx:f.value,cy:h.value-d.value-2,r:"1.5",fill:"#1e293b"},null,8,Vp),e.createElementVNode("circle",{cx:f.value,cy:h.value+d.value+2,r:"1.5",fill:"#1e293b"},null,8,Cp)])])):(e.openBlock(),e.createElementBlock("g",Ip,[e.createElementVNode("rect",{x:p.value-d.value,y:"0",width:d.value*2,height:f.value,fill:`url(#pipe-gradient-${t.value})`,stroke:"#334155","stroke-width":"1"},null,8,Ap),e.createElementVNode("rect",{x:p.value-d.value+3,y:"0",width:d.value*2-6,height:f.value,fill:"#0f172a"},null,8,$p),n.value?(e.openBlock(),e.createElementBlock("rect",{key:0,x:p.value-d.value+5,y:w.value,width:d.value*2-10,height:f.value/2,fill:`url(#flow-gradient-${t.value})`},null,8,Tp)):e.createCommentVNode("",!0),e.createElementVNode("g",null,[e.createElementVNode("ellipse",{cx:p.value,cy:0,rx:d.value+2,ry:d.value+2,fill:"#64748b",stroke:"#334155","stroke-width":"1"},null,8,Bp),e.createElementVNode("ellipse",{cx:p.value,cy:f.value,rx:d.value+2,ry:d.value+2,fill:"#64748b",stroke:"#334155","stroke-width":"1"},null,8,Dp),e.createElementVNode("circle",{cx:p.value-d.value-2,cy:0,r:"1.5",fill:"#1e293b"},null,8,Pp),e.createElementVNode("circle",{cx:p.value+d.value+2,cy:0,r:"1.5",fill:"#1e293b"},null,8,Op),e.createElementVNode("circle",{cx:p.value-d.value-2,cy:f.value,r:"1.5",fill:"#1e293b"},null,8,Mp),e.createElementVNode("circle",{cx:p.value+d.value+2,cy:f.value,r:"1.5",fill:"#1e293b"},null,8,Rp)])])),n.value?(e.openBlock(),e.createElementBlock("g",jp,[e.createElementVNode("defs",null,[e.createElementVNode("marker",{id:`arrow-${t.value}`,markerWidth:"10",markerHeight:"10",refX:"8",refY:"3",orient:"auto",markerUnits:"strokeWidth"},[e.createElementVNode("path",{d:"M0,0 L0,6 L9,3 z",fill:a.value},null,8,Up)],8,Lp)]),i.value==="horizontal"?(e.openBlock(),e.createElementBlock("line",{key:0,x1:f.value/2-20,y1:h.value,x2:f.value/2+20,y2:h.value,stroke:a.value,"stroke-width":"2","marker-end":`url(#arrow-${t.value})`},null,8,Fp)):(e.openBlock(),e.createElementBlock("line",{key:1,x1:p.value,y1:f.value/2-20,x2:p.value,y2:f.value/2+20,stroke:a.value,"stroke-width":"2","marker-end":`url(#arrow-${t.value})`},null,8,zp))])):e.createCommentVNode("",!0)],8,pp)),e.createElementVNode("div",{class:e.normalizeClass(["status-text",{"is-flowing":n.value}])},e.toDisplayString(n.value?"流动中":"停止")+" | "+e.toDisplayString(o.value)+" m³/h ",3)]))}}),[["__scopeId","data-v-5c3ec02f"]]),qp={class:"filter-3d-container"},Gp={viewBox:"0 0 120 100",xmlns:"http://www.w3.org/2000/svg"},Hp=["id"],Kp=["id"],Qp=["stop-color"],Yp=["stop-color"],Jp=["fill"],Xp=["fill"],Zp={opacity:"0.5"},eh=["x1","x2"],th=["y1","y2"],rh=["y","height"],oh={transform:"translate(80, 30)"},nh=["fill"],ih=["fill","opacity"],sh={key:0,attributeName:"opacity",values:"1;0.3;1",dur:"0.8s",repeatCount:"indefinite"},ah={x:"60",y:"95","font-size":"5",fill:"#64748b","text-anchor":"middle","font-family":"Arial"},lh=Me(e.defineComponent({__name:"Filter3D",props:{node:{}},setup(u){const r=u,t=e.ref(`filter-${Math.random().toString(36).substr(2,9)}`),l=()=>r.node?r.node.getData?r.node.getData():r.node.data||{}:{},n=e.ref(20),o=e.ref(5),i=e.ref(50),a=e.ref(70),s=e.computed(()=>n.value>=a.value?"#7f1d1d":n.value>=50?"#b45309":"#15803d"),c=e.computed(()=>n.value>=a.value?"#991b1b":n.value>=50?"#d97706":"#166534"),d=e.computed(()=>o.value>=15?"#ef4444":o.value>=10?"#f97316":"#22c55e"),f=e.computed(()=>n.value>=a.value),m=()=>{const h=l();n.value=Math.max(0,Math.min(100,h.clogLevel||20)),o.value=h.pressureDrop||5,i.value=h.diameter||50,a.value=h.alarmThreshold||70};return e.watch(()=>r.node,()=>{m()},{deep:!0}),e.onMounted(()=>{m(),r.node&&typeof r.node.on=="function"&&r.node.on("change:data",()=>{m()})}),(h,p)=>(e.openBlock(),e.createElementBlock("div",qp,[(e.openBlock(),e.createElementBlock("svg",Gp,[e.createElementVNode("defs",null,[e.createElementVNode("linearGradient",{id:`shell-gradient-${t.value}`,x1:"0%",y1:"0%",x2:"100%",y2:"0%"},[...p[0]||(p[0]=[e.createElementVNode("stop",{offset:"0%","stop-color":"#475569"},null,-1),e.createElementVNode("stop",{offset:"50%","stop-color":"#94a3b8"},null,-1),e.createElementVNode("stop",{offset:"100%","stop-color":"#475569"},null,-1)])],8,Hp),e.createElementVNode("linearGradient",{id:`filter-element-${t.value}`,x1:"0%",y1:"0%",x2:"0%",y2:"100%"},[e.createElementVNode("stop",{offset:"0%","stop-color":s.value},null,8,Qp),e.createElementVNode("stop",{offset:"100%","stop-color":c.value},null,8,Yp)],8,Kp)]),p[3]||(p[3]=e.createElementVNode("rect",{x:"0",y:"43",width:"25",height:"14",fill:"#64748b",stroke:"#334155","stroke-width":"1"},null,-1)),e.createElementVNode("rect",{x:"25",y:"20",width:"70",height:"60",rx:"5",fill:`url(#shell-gradient-${t.value})`,stroke:"#334155","stroke-width":"2"},null,8,Jp),p[4]||(p[4]=e.createElementVNode("ellipse",{cx:"60",cy:"50",rx:"15",ry:"20",fill:"#1e293b",stroke:"#64748b","stroke-width":"2",opacity:"0.7"},null,-1)),e.createElementVNode("g",null,[e.createElementVNode("rect",{x:"50",y:"30",width:"20",height:"40",rx:"2",fill:`url(#filter-element-${t.value})`,stroke:"#475569","stroke-width":"1"},null,8,Xp),e.createElementVNode("g",Zp,[(e.openBlock(),e.createElementBlock(e.Fragment,null,e.renderList(8,w=>e.createElementVNode("line",{key:`v-${w}`,x1:50+w*2.5,y1:"30",x2:50+w*2.5,y2:"70",stroke:"#1e293b","stroke-width":"0.5"},null,8,eh)),64)),(e.openBlock(),e.createElementBlock(e.Fragment,null,e.renderList(8,w=>e.createElementVNode("line",{key:`h-${w}`,x1:"50",y1:30+w*5,x2:"70",y2:30+w*5,stroke:"#1e293b","stroke-width":"0.5"},null,8,th)),64))]),e.createElementVNode("rect",{x:"52",y:70-n.value*.4,width:"16",height:n.value*.4,fill:"#ef4444",opacity:"0.6"},null,8,rh)]),p[5]||(p[5]=e.createElementVNode("rect",{x:"95",y:"43",width:"25",height:"14",fill:"#64748b",stroke:"#334155","stroke-width":"1"},null,-1)),p[6]||(p[6]=e.createElementVNode("rect",{x:"55",y:"78",width:"10",height:"8",rx:"1",fill:"#334155",stroke:"#1e293b","stroke-width":"1"},null,-1)),p[7]||(p[7]=e.createElementVNode("path",{d:"M 57,86 L 60,90 L 63,86",stroke:"#64748b","stroke-width":"1.5",fill:"none"},null,-1)),e.createElementVNode("g",oh,[p[1]||(p[1]=e.createElementVNode("circle",{cx:"0",cy:"0",r:"12",fill:"#0f172a",stroke:"#475569","stroke-width":"1.5"},null,-1)),e.createElementVNode("text",{x:"0",y:"4","font-size":"7",fill:d.value,"text-anchor":"middle","font-family":"monospace"},e.toDisplayString(o.value),9,nh),p[2]||(p[2]=e.createElementVNode("text",{x:"0",y:"10","font-size":"3",fill:"#64748b","text-anchor":"middle"},"kPa",-1))]),e.createElementVNode("circle",{cx:"35",cy:"28",r:"3",fill:f.value?"#ef4444":"#64748b",opacity:f.value?1:.3},[f.value?(e.openBlock(),e.createElementBlock("animate",sh)):e.createCommentVNode("",!0)],8,ih),e.createElementVNode("text",ah," FLT-"+e.toDisplayString(i.value),1)])),e.createElementVNode("div",{class:e.normalizeClass(["status-text",{"is-alarm":f.value}])}," 堵塞度: "+e.toDisplayString(n.value)+"% | 压差: "+e.toDisplayString(o.value)+" kPa ",3)]))}}),[["__scopeId","data-v-1bb1c80a"]]),ch={class:"heat-exchanger-3d-container"},dh={viewBox:"0 0 140 120",xmlns:"http://www.w3.org/2000/svg"},uh=["id"],fh=["id"],ph=["id"],hh=["fill"],mh={opacity:"0.6"},gh=["y1","y2"],yh=["y","fill"],bh=["y","fill"],wh=["x","fill"],Eh=["x","fill"],vh={transform:"translate(70, 60)"},kh=["fill"],_h={transform:"translate(95, 50)"},Nh={x:"0",y:"-1","font-size":"6",fill:"#ef4444","text-anchor":"middle"},xh={x:"0",y:"6","font-size":"5",fill:"#f97316","text-anchor":"middle"},Sh={transform:"translate(45, 70)"},Vh={x:"0",y:"-1","font-size":"6",fill:"#3b82f6","text-anchor":"middle"},Ch={x:"0",y:"6","font-size":"5",fill:"#60a5fa","text-anchor":"middle"},Ih=["fill","opacity"],Ah={key:0,attributeName:"opacity",values:"1;0.5;1",dur:"1.5s",repeatCount:"indefinite"},$h={x:"70",y:"115","font-size":"5",fill:"#64748b","text-anchor":"middle","font-family":"Arial"},Th=Me(e.defineComponent({__name:"HeatExchanger3D",props:{node:{}},setup(u){const r=u,t=e.ref(`hex-${Math.random().toString(36).substr(2,9)}`),l=()=>r.node?r.node.getData?r.node.getData():r.node.data||{}:{},n=e.ref(!1),o=e.ref(80),i=e.ref(50),a=e.ref(20),s=e.ref(40),c=e.ref(10),d=e.computed(()=>{if(o.value<=i.value)return 0;const k=o.value-a.value,_=o.value-i.value,E=Math.round(_/k*100);return Math.max(0,Math.min(100,E))}),f=e.computed(()=>d.value>=80?"#22c55e":d.value>=60?"#fbbf24":d.value>=40?"#f97316":"#ef4444"),m=e.ref(0),h=e.ref(0),p=e.ref(0),w=e.ref(0);let v=null;const S=()=>{n.value&&(m.value=(m.value+.5)%20,h.value=(h.value+.5)%20,p.value=(p.value+.5)%20,w.value=(w.value+.5)%20),v=requestAnimationFrame(S)},y=()=>{const k=l();n.value=k.state==="working"||k.state===!0,o.value=k.hotTempIn||80,i.value=k.hotTempOut||50,a.value=k.coldTempIn||20,s.value=k.coldTempOut||40,c.value=k.heatTransferArea||10};return e.watch(()=>r.node,()=>{y()},{deep:!0}),e.onMounted(()=>{y(),S(),r.node&&typeof r.node.on=="function"&&r.node.on("change:data",()=>{y()})}),e.onUnmounted(()=>{v&&cancelAnimationFrame(v)}),(k,_)=>(e.openBlock(),e.createElementBlock("div",ch,[(e.openBlock(),e.createElementBlock("svg",dh,[e.createElementVNode("defs",null,[e.createElementVNode("linearGradient",{id:`shell-gradient-${t.value}`,x1:"0%",y1:"0%",x2:"100%",y2:"0%"},[..._[0]||(_[0]=[e.createElementVNode("stop",{offset:"0%","stop-color":"#475569"},null,-1),e.createElementVNode("stop",{offset:"50%","stop-color":"#94a3b8"},null,-1),e.createElementVNode("stop",{offset:"100%","stop-color":"#475569"},null,-1)])],8,uh),e.createElementVNode("linearGradient",{id:`hot-fluid-${t.value}`,x1:"0%",y1:"0%",x2:"100%",y2:"0%"},[..._[1]||(_[1]=[e.createElementVNode("stop",{offset:"0%","stop-color":"#ef4444","stop-opacity":"0.3"},null,-1),e.createElementVNode("stop",{offset:"50%","stop-color":"#ef4444","stop-opacity":"0.7"},null,-1),e.createElementVNode("stop",{offset:"100%","stop-color":"#ef4444","stop-opacity":"0.3"},null,-1)])],8,fh),e.createElementVNode("linearGradient",{id:`cold-fluid-${t.value}`,x1:"0%",y1:"0%",x2:"100%",y2:"0%"},[..._[2]||(_[2]=[e.createElementVNode("stop",{offset:"0%","stop-color":"#3b82f6","stop-opacity":"0.3"},null,-1),e.createElementVNode("stop",{offset:"50%","stop-color":"#3b82f6","stop-opacity":"0.7"},null,-1),e.createElementVNode("stop",{offset:"100%","stop-color":"#3b82f6","stop-opacity":"0.3"},null,-1)])],8,ph)]),e.createElementVNode("rect",{x:"20",y:"30",width:"100",height:"60",rx:"8",fill:`url(#shell-gradient-${t.value})`,stroke:"#334155","stroke-width":"2"},null,8,hh),_[15]||(_[15]=e.createElementVNode("line",{x1:"70",y1:"30",x2:"70",y2:"90",stroke:"#64748b","stroke-width":"2"},null,-1)),e.createElementVNode("g",mh,[(e.openBlock(),e.createElementBlock(e.Fragment,null,e.renderList(8,E=>e.createElementVNode("line",{key:`tube-${E}`,x1:"25",y1:35+E*7,x2:"115",y2:35+E*7,stroke:"#475569","stroke-width":"1.5"},null,8,gh)),64))]),e.createElementVNode("g",null,[_[3]||(_[3]=e.createElementVNode("rect",{x:"60",y:"10",width:"20",height:"20",rx:"2",fill:"#64748b",stroke:"#334155","stroke-width":"1"},null,-1)),_[4]||(_[4]=e.createElementVNode("text",{x:"70",y:"23","font-size":"6",fill:"#ef4444","text-anchor":"middle","font-weight":"bold"},"H-IN",-1)),n.value?(e.openBlock(),e.createElementBlock("rect",{key:0,x:"65",y:10+m.value,width:"10",height:"8",fill:`url(#hot-fluid-${t.value})`},null,8,yh)):e.createCommentVNode("",!0)]),e.createElementVNode("g",null,[_[5]||(_[5]=e.createElementVNode("rect",{x:"60",y:"90",width:"20",height:"20",rx:"2",fill:"#64748b",stroke:"#334155","stroke-width":"1"},null,-1)),_[6]||(_[6]=e.createElementVNode("text",{x:"70",y:"103","font-size":"6",fill:"#f97316","text-anchor":"middle","font-weight":"bold"},"H-OUT",-1)),n.value?(e.openBlock(),e.createElementBlock("rect",{key:0,x:"65",y:90+h.value,width:"10",height:"8",fill:`url(#hot-fluid-${t.value})`,opacity:"0.7"},null,8,bh)):e.createCommentVNode("",!0)]),e.createElementVNode("g",null,[_[7]||(_[7]=e.createElementVNode("rect",{x:"0",y:"53",width:"20",height:"14",rx:"2",fill:"#64748b",stroke:"#334155","stroke-width":"1"},null,-1)),_[8]||(_[8]=e.createElementVNode("text",{x:"10",y:"62","font-size":"5",fill:"#3b82f6","text-anchor":"middle","font-weight":"bold"},"C-IN",-1)),n.value?(e.openBlock(),e.createElementBlock("rect",{key:0,x:p.value,y:"56",width:"8",height:"8",fill:`url(#cold-fluid-${t.value})`},null,8,wh)):e.createCommentVNode("",!0)]),e.createElementVNode("g",null,[_[9]||(_[9]=e.createElementVNode("rect",{x:"120",y:"53",width:"20",height:"14",rx:"2",fill:"#64748b",stroke:"#334155","stroke-width":"1"},null,-1)),_[10]||(_[10]=e.createElementVNode("text",{x:"130",y:"62","font-size":"5",fill:"#60a5fa","text-anchor":"middle","font-weight":"bold"},"C-OUT",-1)),n.value?(e.openBlock(),e.createElementBlock("rect",{key:0,x:120+w.value,y:"56",width:"8",height:"8",fill:`url(#cold-fluid-${t.value})`,opacity:"0.7"},null,8,Eh)):e.createCommentVNode("",!0)]),e.createElementVNode("g",vh,[_[11]||(_[11]=e.createElementVNode("circle",{cx:"0",cy:"0",r:"15",fill:"#0f172a",stroke:"#475569","stroke-width":"2"},null,-1)),e.createElementVNode("text",{x:"0",y:"2","font-size":"10",fill:f.value,"text-anchor":"middle","font-family":"monospace","font-weight":"bold"},e.toDisplayString(d.value),9,kh),_[12]||(_[12]=e.createElementVNode("text",{x:"0",y:"8","font-size":"4",fill:"#64748b","text-anchor":"middle"},"%",-1))]),e.createElementVNode("g",_h,[_[13]||(_[13]=e.createElementVNode("rect",{x:"-15",y:"-8",width:"30",height:"16",rx:"2",fill:"#1e293b",stroke:"#ef4444","stroke-width":"1"},null,-1)),e.createElementVNode("text",Nh,e.toDisplayString(o.value)+"°C",1),e.createElementVNode("text",xh,"→"+e.toDisplayString(i.value)+"°C",1)]),e.createElementVNode("g",Sh,[_[14]||(_[14]=e.createElementVNode("rect",{x:"-15",y:"-8",width:"30",height:"16",rx:"2",fill:"#1e293b",stroke:"#3b82f6","stroke-width":"1"},null,-1)),e.createElementVNode("text",Vh,e.toDisplayString(a.value)+"°C",1),e.createElementVNode("text",Ch,"→"+e.toDisplayString(s.value)+"°C",1)]),e.createElementVNode("circle",{cx:"30",cy:"38",r:"3",fill:n.value?"#22c55e":"#64748b",opacity:n.value?1:.3},[n.value?(e.openBlock(),e.createElementBlock("animate",Ah)):e.createCommentVNode("",!0)],8,Ih),e.createElementVNode("text",$h," HEX-"+e.toDisplayString(c.value)+"m² ",1)])),e.createElementVNode("div",{class:e.normalizeClass(["status-text",{"is-working":n.value}])},e.toDisplayString(n.value?"运行中":"停止")+" | 效率: "+e.toDisplayString(d.value)+"% ",3)]))}}),[["__scopeId","data-v-ed672204"]]),Bh={class:"tee-3d-container"},Dh={viewBox:"0 0 100 100",xmlns:"http://www.w3.org/2000/svg"},Ph=["id"],Oh=["id"],Mh=["stop-color"],Rh=["stop-color"],jh=["fill"],Lh=["fill"],Uh=["fill"],Fh={key:0},zh=["fill"],Wh=["x","fill"],qh=["x","fill"],Gh=["y","fill"],Hh=["y","fill"],Kh={key:1},Qh=["id"],Yh=["fill"],Jh=["stroke","marker-end"],Xh=["stroke","marker-end"],Zh=["stroke","marker-end"],em={transform:"translate(50, 50)"},tm=["fill"],rm=Me(e.defineComponent({__name:"Tee3D",props:{node:{}},setup(u){const r=u,t=e.ref(`tee-${Math.random().toString(36).substr(2,9)}`),l=()=>r.node?r.node.getData?r.node.getData():r.node.data||{}:{},n=e.ref(!1),o=e.ref("#3b82f6"),i=e.ref(!0),a=e.ref(!0),s=e.ref(0),c=e.ref(0),d=e.ref(0),f=e.ref(0);let m=null;const h=()=>{n.value&&(s.value=(s.value+1)%40,c.value=(c.value+1)%20,d.value=(d.value+1)%20,f.value=(f.value+1)%20),m=requestAnimationFrame(h)},p=()=>{const w=l();n.value=w.state==="flowing"||w.state===!0,o.value=w.fluidColor||"#3b82f6",i.value=w.topFlowEnabled!==!1,a.value=w.bottomFlowEnabled!==!1};return e.watch(()=>r.node,()=>{p()},{deep:!0}),e.onMounted(()=>{p(),h(),r.node&&typeof r.node.on=="function"&&r.node.on("change:data",()=>{p()})}),e.onUnmounted(()=>{m&&cancelAnimationFrame(m)}),(w,v)=>(e.openBlock(),e.createElementBlock("div",Bh,[(e.openBlock(),e.createElementBlock("svg",Dh,[e.createElementVNode("defs",null,[e.createElementVNode("linearGradient",{id:`pipe-gradient-${t.value}`,x1:"0%",y1:"0%",x2:"100%",y2:"0%"},[...v[0]||(v[0]=[e.createElementVNode("stop",{offset:"0%","stop-color":"#475569"},null,-1),e.createElementVNode("stop",{offset:"50%","stop-color":"#94a3b8"},null,-1),e.createElementVNode("stop",{offset:"100%","stop-color":"#475569"},null,-1)])],8,Ph),e.createElementVNode("radialGradient",{id:`flow-gradient-${t.value}`},[e.createElementVNode("stop",{offset:"0%","stop-color":o.value,"stop-opacity":"0.8"},null,8,Mh),e.createElementVNode("stop",{offset:"100%","stop-color":o.value,"stop-opacity":"0.2"},null,8,Rh)],8,Oh)]),e.createElementVNode("rect",{x:"0",y:"40",width:"100",height:"20",fill:`url(#pipe-gradient-${t.value})`,stroke:"#334155","stroke-width":"1.5"},null,8,jh),e.createElementVNode("rect",{x:"40",y:"0",width:"20",height:"100",fill:`url(#pipe-gradient-${t.value})`,stroke:"#334155","stroke-width":"1.5"},null,8,Lh),e.createElementVNode("circle",{cx:"50",cy:"50",r:"18",fill:`url(#pipe-gradient-${t.value})`,stroke:"#334155","stroke-width":"2"},null,8,Uh),v[3]||(v[3]=e.createElementVNode("rect",{x:"0",y:"43",width:"100",height:"14",fill:"#0f172a"},null,-1)),v[4]||(v[4]=e.createElementVNode("rect",{x:"43",y:"0",width:"14",height:"100",fill:"#0f172a"},null,-1)),v[5]||(v[5]=e.createElementVNode("circle",{cx:"50",cy:"50",r:"15",fill:"#0f172a"},null,-1)),n.value?(e.openBlock(),e.createElementBlock("g",Fh,[e.createElementVNode("circle",{cx:"50",cy:"50",r:"12",fill:`url(#flow-gradient-${t.value})`},[...v[1]||(v[1]=[e.createElementVNode("animate",{attributeName:"r",values:"8;14;8",dur:"1.5s",repeatCount:"indefinite"},null,-1)])],8,zh),e.createElementVNode("rect",{x:s.value,y:"45",width:"20",height:"10",fill:o.value,opacity:"0.6"},null,8,Wh),e.createElementVNode("rect",{x:60+c.value,y:"45",width:"20",height:"10",fill:o.value,opacity:"0.4"},null,8,qh),e.createElementVNode("rect",{x:"45",y:d.value,width:"10",height:"20",fill:o.value,opacity:"0.4"},null,8,Gh),e.createElementVNode("rect",{x:"45",y:60+f.value,width:"10",height:"20",fill:o.value,opacity:"0.4"},null,8,Hh)])):e.createCommentVNode("",!0),v[6]||(v[6]=e.createStaticVNode('<g data-v-cd328987><ellipse cx="0" cy="50" rx="3" ry="10" fill="#64748b" stroke="#334155" stroke-width="1" data-v-cd328987></ellipse><circle cx="0" cy="45" r="1" fill="#1e293b" data-v-cd328987></circle><circle cx="0" cy="55" r="1" fill="#1e293b" data-v-cd328987></circle><ellipse cx="100" cy="50" rx="3" ry="10" fill="#64748b" stroke="#334155" stroke-width="1" data-v-cd328987></ellipse><circle cx="100" cy="45" r="1" fill="#1e293b" data-v-cd328987></circle><circle cx="100" cy="55" r="1" fill="#1e293b" data-v-cd328987></circle><ellipse cx="50" cy="0" rx="10" ry="3" fill="#64748b" stroke="#334155" stroke-width="1" data-v-cd328987></ellipse><circle cx="45" cy="0" r="1" fill="#1e293b" data-v-cd328987></circle><circle cx="55" cy="0" r="1" fill="#1e293b" data-v-cd328987></circle><ellipse cx="50" cy="100" rx="10" ry="3" fill="#64748b" stroke="#334155" stroke-width="1" data-v-cd328987></ellipse><circle cx="45" cy="100" r="1" fill="#1e293b" data-v-cd328987></circle><circle cx="55" cy="100" r="1" fill="#1e293b" data-v-cd328987></circle></g>',1)),n.value?(e.openBlock(),e.createElementBlock("g",Kh,[e.createElementVNode("defs",null,[e.createElementVNode("marker",{id:`arrow-${t.value}`,markerWidth:"8",markerHeight:"8",refX:"6",refY:"3",orient:"auto"},[e.createElementVNode("path",{d:"M0,0 L0,6 L6,3 z",fill:o.value},null,8,Yh)],8,Qh)]),e.createElementVNode("line",{x1:"20",y1:"50",x2:"35",y2:"50",stroke:o.value,"stroke-width":"2","marker-end":`url(#arrow-${t.value})`},null,8,Jh),i.value?(e.openBlock(),e.createElementBlock("line",{key:0,x1:"50",y1:"35",x2:"50",y2:"20",stroke:o.value,"stroke-width":"2","marker-end":`url(#arrow-${t.value})`},null,8,Xh)):e.createCommentVNode("",!0),a.value?(e.openBlock(),e.createElementBlock("line",{key:1,x1:"50",y1:"65",x2:"50",y2:"80",stroke:o.value,"stroke-width":"2","marker-end":`url(#arrow-${t.value})`},null,8,Zh)):e.createCommentVNode("",!0)])):e.createCommentVNode("",!0),e.createElementVNode("g",em,[v[2]||(v[2]=e.createElementVNode("circle",{cx:"0",cy:"0",r:"6",fill:"#0f172a",stroke:"#475569","stroke-width":"1"},null,-1)),e.createElementVNode("circle",{cx:"0",cy:"0",r:"3",fill:n.value?"#22c55e":"#64748b"},null,8,tm)])])),e.createElementVNode("div",{class:e.normalizeClass(["status-text",{"is-flowing":n.value}])},e.toDisplayString(n.value?"流动中":"关闭"),3)]))}}),[["__scopeId","data-v-cd328987"]]),bs={metadata:{id:"pipe-3d",name:"3D管道",category:"iot",icon:"🔧",description:"3D仿真管道组件,支持横向/纵向和流体动画",version:"1.0.0"},shape:"pipe-3d-vue",component:Wp,width:220,height:60,label:"",attrs:{body:{fill:"transparent",stroke:"transparent"}},data:{type:"pipe",state:!1,flowRate:10,direction:"horizontal",fluidColor:"#3b82f6",diameter:40,length:200,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:"state",label:"流动状态",type:"select",path:"data.state",defaultValue:!1,options:[{label:"停止",value:!1},{label:"流动",value:"flowing"}],description:"管道流体状态"},{key:"flowRate",label:"流量(m³/h)",type:"number",path:"data.flowRate",defaultValue:10,min:0,description:"流体流量"},{key:"direction",label:"管道方向",type:"select",path:"data.direction",defaultValue:"horizontal",options:[{label:"横向",value:"horizontal"},{label:"纵向",value:"vertical"}],description:"管道布置方向"},{key:"fluidColor",label:"流体颜色",type:"color",path:"data.fluidColor",defaultValue:"#3b82f6",description:"流体显示颜色"},{key:"diameter",label:"管径(mm)",type:"number",path:"data.diameter",defaultValue:40,min:20,max:100,description:"管道直径"},{key:"length",label:"长度(mm)",type:"number",path:"data.length",defaultValue:200,min:100,max:500,description:"管道长度"},{key:"deviceId",label:"设备ID",type:"text",path:"data.deviceId",defaultValue:"",description:"绑定的设备ID"},{key:"property",label:"设备属性",type:"text",path:"data.property",defaultValue:"",description:"绑定的设备属性名称"}]},ws={metadata:{id:"filter-3d",name:"3D过滤器",category:"iot",icon:"🧹",description:"3D仿真过滤器,支持堵塞度和压差显示",version:"1.0.0"},shape:"filter-3d-vue",component:lh,width:140,height:120,label:"",attrs:{body:{fill:"transparent",stroke:"transparent"}},data:{type:"filter",clogLevel:20,pressureDrop:5,diameter:50,alarmThreshold:70,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:"clogLevel",label:"堵塞度(%)",type:"number",path:"data.clogLevel",defaultValue:20,min:0,max:100,description:"滤芯堵塞程度"},{key:"pressureDrop",label:"压差(kPa)",type:"number",path:"data.pressureDrop",defaultValue:5,min:0,description:"过滤器压差"},{key:"diameter",label:"口径(mm)",type:"number",path:"data.diameter",defaultValue:50,min:20,max:100,description:"过滤器口径"},{key:"alarmThreshold",label:"报警阈值(%)",type:"number",path:"data.alarmThreshold",defaultValue:70,min:0,max:100,description:"堵塞度报警阈值"},{key:"deviceId",label:"设备ID",type:"text",path:"data.deviceId",defaultValue:"",description:"绑定的设备ID"},{key:"property",label:"设备属性",type:"text",path:"data.property",defaultValue:"",description:"绑定的设备属性名称"}]},Es={metadata:{id:"heat-exchanger-3d",name:"3D换热器",category:"iot",icon:"🔥",description:"3D仿真换热器,支持热冷流体交换和效率显示",version:"1.0.0"},shape:"heat-exchanger-3d-vue",component:Th,width:160,height:140,label:"",attrs:{body:{fill:"transparent",stroke:"transparent"}},data:{type:"heat-exchanger",state:!1,hotTempIn:80,hotTempOut:50,coldTempIn:20,coldTempOut:40,heatTransferArea:10,deviceId:"",property:""},ports:{groups:{top:{position:"top",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"}}},right:{position:"right",attrs:{circle:{r:4,magnet:!0,stroke:"#31d0c6",strokeWidth:2,fill:"#fff"}}}},items:[{id:"port-top",group:"top"},{id:"port-bottom",group:"bottom"},{id:"port-left",group:"left"},{id:"port-right",group:"right"}]},props:[{key:"state",label:"运行状态",type:"select",path:"data.state",defaultValue:!1,options:[{label:"停止",value:!1},{label:"运行",value:"working"}],description:"换热器运行状态"},{key:"hotTempIn",label:"热侧进口(°C)",type:"number",path:"data.hotTempIn",defaultValue:80,description:"热流体进口温度"},{key:"hotTempOut",label:"热侧出口(°C)",type:"number",path:"data.hotTempOut",defaultValue:50,description:"热流体出口温度"},{key:"coldTempIn",label:"冷侧进口(°C)",type:"number",path:"data.coldTempIn",defaultValue:20,description:"冷流体进口温度"},{key:"coldTempOut",label:"冷侧出口(°C)",type:"number",path:"data.coldTempOut",defaultValue:40,description:"冷流体出口温度"},{key:"heatTransferArea",label:"换热面积(m²)",type:"number",path:"data.heatTransferArea",defaultValue:10,min:1,description:"换热器换热面积"},{key:"deviceId",label:"设备ID",type:"text",path:"data.deviceId",defaultValue:"",description:"绑定的设备ID"},{key:"property",label:"设备属性",type:"text",path:"data.property",defaultValue:"",description:"绑定的设备属性名称"}]},vs={metadata:{id:"tee-3d",name:"3D三通",category:"iot",icon:"⛓️",description:"3D仿真三通管件,支持流体分流和汇流",version:"1.0.0"},shape:"tee-3d-vue",component:rm,width:120,height:120,label:"",attrs:{body:{fill:"transparent",stroke:"transparent"}},data:{type:"tee",state:!1,fluidColor:"#3b82f6",topFlowEnabled:!0,bottomFlowEnabled:!0,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"}}},top:{position:"top",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"}}}},items:[{id:"port-left",group:"left"},{id:"port-right",group:"right"},{id:"port-top",group:"top"},{id:"port-bottom",group:"bottom"}]},props:[{key:"state",label:"流动状态",type:"select",path:"data.state",defaultValue:!1,options:[{label:"关闭",value:!1},{label:"流动",value:"flowing"}],description:"三通管件流动状态"},{key:"fluidColor",label:"流体颜色",type:"color",path:"data.fluidColor",defaultValue:"#3b82f6",description:"流体显示颜色"},{key:"topFlowEnabled",label:"上方分流",type:"boolean",path:"data.topFlowEnabled",defaultValue:!0,description:"是否启用上方分流"},{key:"bottomFlowEnabled",label:"下方分流",type:"boolean",path:"data.bottomFlowEnabled",defaultValue:!0,description:"是否启用下方分流"},{key:"deviceId",label:"设备ID",type:"text",path:"data.deviceId",defaultValue:"",description:"绑定的设备ID"},{key:"property",label:"设备属性",type:"text",path:"data.property",defaultValue:"",description:"绑定的设备属性名称"}]},om=Object.freeze(Object.defineProperty({__proto__:null,AlarmLight3DComponent:ms,Conveyor3DComponent:hs,Cylinder3DComponent:ys,EChartsGaugeComponent:as,EChartsLineComponent:cs,Filter3DComponent:ws,HeatExchanger3DComponent:Es,LightComponent:ns,Motor3DComponent:ds,Pipe3DComponent:bs,Pump3DComponent:ps,SwitchComponent:is,Tank3DComponent:fs,Tee3DComponent:vs,TemperatureSensor3DComponent:gs,Valve3DComponent:us},Symbol.toStringTag,{value:"Module"}));class nm{constructor(){Se(this,"registry",{});this.registerDefaultComponents()}registerDefaultComponents(){this.register(ts),this.register(rs),this.register(os),this.register(ns),this.register(is),this.register(as),this.register(cs),this.register(ds),this.register(us),this.register(fs),this.register(ps),this.register(hs),this.register(ms),this.register(gs),this.register(ys),this.register(bs),this.register(ws),this.register(Es),this.register(vs)}register(r){const{id:t}=r.metadata;this.registry[t]&&console.warn(`组件 ${t} 已存在,将被覆盖`),this.registry[t]=r}registerBatch(r){r.forEach(t=>this.register(t))}getComponent(r){return this.registry[r]}getAllComponents(){return{...this.registry}}getComponentsByCategory(r){return Object.values(this.registry).filter(t=>t.metadata.category===r)}getComponentList(){return Object.values(this.registry)}hasComponent(r){return r in this.registry}unregister(r){return this.registry[r]?(delete this.registry[r],!0):(console.warn(`组件 ${r} 不存在`),!1)}getCount(){return Object.keys(this.registry).length}clear(){this.registry={}}}const er=new nm,bo={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}},im=[{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:"启用吸附功能"}],dr={"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 sm{constructor(){Se(this,"config");this.config=e.reactive({...bo})}getConfig(){return this.config}updateConfig(r){Object.assign(this.config,r)}updateByPath(r,t){const l=r.split(".");let n=this.config;for(let o=0;o<l.length-1;o++)n=n[l[o]];if(n[l[l.length-1]]=t,r==="size.preset"&&t in dr){const{width:o,height:i}=dr[t];this.config.size.width=o,this.config.size.height=i}}getByPath(r){const t=r.split(".");let l=this.config;for(const n of t)l=l==null?void 0:l[n];return l}setSize(r,t,l){this.config.size.width=r,this.config.size.height=t,l&&(this.config.size.preset=l)}updateSize(r){this.config.size.width=r.width,this.config.size.height=r.height}setZoom(r){const{min:t=.1,max:l=5}=this.config.zoom;this.config.zoom.scale=Math.max(t,Math.min(l,r))}setOffset(r,t){this.config.offset.x=r,this.config.offset.y=t}setBackgroundColor(r){this.config.background.color=r}updateBackground(r){r.color!==void 0&&(this.config.background.color=r.color),r.image!==void 0&&(this.config.background.image=r.image),r.size!==void 0&&(this.config.background.size=r.size),r.repeat!==void 0&&(this.config.background.repeat=r.repeat)}setBackgroundImage(r){this.config.background.image=r}toggleGrid(r){this.config.grid.enabled=r??!this.config.grid.enabled}setGridSize(r){this.config.grid.size=r}toggleSnap(r){this.config.snap.enabled=r??!this.config.snap.enabled}toggleGuides(r){this.config.guides.enabled=r??!this.config.guides.enabled}toggleMagnetism(r){this.config.magnetism.enabled=r??!this.config.magnetism.enabled}reset(){Object.assign(this.config,bo)}export(){return JSON.stringify(this.config,null,2)}import(r){try{const t=JSON.parse(r);Object.assign(this.config,t)}catch(t){console.error("导入画布配置失败:",t)}}}const je=new sm,am=["title"],lm={class:"library-content"},cm={key:0,class:"component-section"},dm={class:"component-grid"},um=["onClick","title"],fm={class:"component-icon"},pm={class:"component-name"},hm={key:1,class:"component-section"},mm={class:"component-grid"},gm=["onClick","title"],ym={class:"component-icon"},bm={class:"component-name"},wo=Me(e.defineComponent({__name:"ComponentLibrary",props:{isCollapsed:{type:Boolean,default:!1}},emits:["addComponent","update:collapsed"],setup(u,{emit:r}){const t=u,l=r,n=()=>{l("update:collapsed",!t.isCollapsed)},o=e.reactive({basic:!1,iot:!1}),i=d=>{o[d]=!o[d]},a=e.computed(()=>er.getComponentsByCategory("basic")),s=e.computed(()=>er.getComponentsByCategory("iot")),c=d=>{l("addComponent",d.metadata.id)};return(d,f)=>(e.openBlock(),e.createElementBlock("aside",{class:e.normalizeClass(["component-library",{collapsed:u.isCollapsed}])},[e.createElementVNode("button",{class:"collapse-btn",onClick:n,title:u.isCollapsed?"展开组件库":"折叠组件库"},[...f[2]||(f[2]=[e.createElementVNode("span",{class:"collapse-icon"},"◀",-1)])],8,am),f[5]||(f[5]=e.createElementVNode("div",{class:"library-header"},[e.createElementVNode("h3",null,"组件库")],-1)),e.createElementVNode("div",lm,[a.value.length>0?(e.openBlock(),e.createElementBlock("div",cm,[e.createElementVNode("div",{class:"section-header",onClick:f[0]||(f[0]=m=>i("basic"))},[f[3]||(f[3]=e.createElementVNode("h4",{class:"section-title"},"基础组件",-1)),e.createElementVNode("span",{class:e.normalizeClass(["toggle-icon",{collapsed:o.basic}])},"▼",2)]),e.withDirectives(e.createElementVNode("div",dm,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(a.value,m=>(e.openBlock(),e.createElementBlock("div",{key:m.metadata.id,class:"component-item",onClick:h=>c(m),title:m.metadata.description||m.metadata.name},[e.createElementVNode("span",fm,e.toDisplayString(m.metadata.icon),1),e.createElementVNode("span",pm,e.toDisplayString(m.metadata.name),1)],8,um))),128))],512),[[e.vShow,!o.basic]])])):e.createCommentVNode("",!0),s.value.length>0?(e.openBlock(),e.createElementBlock("div",hm,[e.createElementVNode("div",{class:"section-header",onClick:f[1]||(f[1]=m=>i("iot"))},[f[4]||(f[4]=e.createElementVNode("h4",{class:"section-title"},"IoT组件",-1)),e.createElementVNode("span",{class:e.normalizeClass(["toggle-icon",{collapsed:o.iot}])},"▼",2)]),e.withDirectives(e.createElementVNode("div",mm,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(s.value,m=>(e.openBlock(),e.createElementBlock("div",{key:m.metadata.id,class:"component-item",onClick:h=>c(m),title:m.metadata.description||m.metadata.name},[e.createElementVNode("span",ym,e.toDisplayString(m.metadata.icon),1),e.createElementVNode("span",bm,e.toDisplayString(m.metadata.name),1)],8,gm))),128))],512),[[e.vShow,!o.iot]])])):e.createCommentVNode("",!0)])],2))}}),[["__scopeId","data-v-d0dd96c9"]]),wm={class:"canvas-area"},Em=Me(e.defineComponent({__name:"CanvasArea",setup(u,{expose:r}){const t=e.ref();return r({containerRef:t}),(l,n)=>(e.openBlock(),e.createElementBlock("div",wm,[e.createElementVNode("div",{ref_key:"containerRef",ref:t,class:"canvas-container"},null,512)]))}}),[["__scopeId","data-v-a869f6aa"]]),vm={class:"canvas-config-panel"},km={class:"panel-content"},_m={class:"config-section"},Nm={class:"config-item"},xm={key:0,class:"config-item"},Sm={class:"number-input-group"},Vm={key:1,class:"config-item"},Cm={class:"number-input-group"},Im={class:"config-section"},Am={class:"config-item"},$m={class:"slider-group"},Tm={class:"value-display"},Bm={class:"config-item"},Dm={class:"number-input-group"},Pm={class:"config-item"},Om={class:"number-input-group"},Mm={class:"config-section"},Rm={class:"config-item"},jm={class:"config-item"},Lm={class:"image-upload"},Um={class:"config-item"},Fm={class:"config-item"},zm={class:"config-section"},Wm={class:"config-item"},qm={class:"switch"},Gm={class:"config-item"},Hm={class:"switch"},Km={class:"config-item"},Qm={class:"switch"},Ym={key:0,class:"config-item"},Jm={class:"number-input-group"},Xm={class:"config-section"},Zm={class:"config-item"},eg={class:"switch"},tg={class:"config-item-full"},rg={class:"config-item-full"},og={class:"config-item-full"},ng={class:"config-item-full"},ig={class:"config-item-full"},sg={key:0,class:"config-item"},Eo=Me(e.defineComponent({__name:"CanvasConfigPanel",setup(u){const r=e.computed(()=>je.getConfig()),t=e.ref(),l=e.ref(!1),n=e.ref({broker:"mqtt://broker.emqx.io",topic:"/devices/+/data",clientId:"",username:"",password:""}),o=e.ref(null),i=e.inject("connectMqtt"),a=e.inject("disconnectMqtt"),s=e.inject("getMqttStatus"),c=()=>{l.value?(n.value.clientId||(n.value.clientId="scada_"+Date.now()),i==null||i({type:"MQTT",enabled:!0,...n.value})):(a==null||a(),o.value=null)},d=()=>{l.value&&c()};let f=null;e.watch(l,I=>{I?f=setInterval(()=>{if(s){const x=s();o.value={connected:x}}},1e3):f&&(clearInterval(f),f=null)}),e.onUnmounted(()=>{f&&clearInterval(f)});const m=e.ref(r.value.size.width),h=e.ref(r.value.size.height),p=()=>{const I=r.value.size.preset;if(I==="custom")m.value=r.value.size.width,h.value=r.value.size.height;else if(I&&I in dr){const{width:x,height:V}=dr[I];je.setSize(x,V,I)}},w=()=>{r.value.size.preset==="custom"&&je.setSize(m.value,h.value,"custom")},v=(I,x)=>{I==="width"?m.value=Math.max(800,Math.min(7680,m.value+x)):h.value=Math.max(600,Math.min(4320,h.value+x)),w()},S=(I,x)=>{const V=r.value.offset[I];je.setOffset(I==="x"?V+x:r.value.offset.x,I==="y"?V+x:r.value.offset.y)},y=I=>{const x=Math.max(5,Math.min(50,r.value.grid.size+I));je.setGridSize(x)},k=()=>{var I;(I=t.value)==null||I.click()},_=I=>{var $;const V=($=I.target.files)==null?void 0:$[0];if(V){const C=new FileReader;C.onload=D=>{var U;const A=(U=D.target)==null?void 0:U.result;je.updateByPath("background.image",A)},C.readAsDataURL(V)}},E=()=>{je.updateByPath("background.image",""),t.value&&(t.value.value="")};return(I,x)=>(e.openBlock(),e.createElementBlock("div",vm,[x[63]||(x[63]=e.createElementVNode("div",{class:"panel-header"},[e.createElementVNode("h3",null,"画布配置")],-1)),e.createElementVNode("div",km,[e.createElementVNode("div",_m,[x[33]||(x[33]=e.createElementVNode("h4",{class:"section-title"},"基础配置",-1)),e.createElementVNode("div",Nm,[x[30]||(x[30]=e.createElementVNode("label",null,"画布尺寸",-1)),e.withDirectives(e.createElementVNode("select",{"onUpdate:modelValue":x[0]||(x[0]=V=>r.value.size.preset=V),onChange:p,class:"config-select"},[...x[29]||(x[29]=[e.createStaticVNode('<option value="1920*1080" data-v-43175010>1920*1080</option><option value="1366*768" data-v-43175010>1366*768</option><option value="1280*720" data-v-43175010>1280*720</option><option value="800*600" data-v-43175010>800*600</option><option value="custom" data-v-43175010>自定义</option>',5)])],544),[[e.vModelSelect,r.value.size.preset]])]),r.value.size.preset==="custom"?(e.openBlock(),e.createElementBlock("div",xm,[x[31]||(x[31]=e.createElementVNode("label",null,"宽度",-1)),e.createElementVNode("div",Sm,[e.createElementVNode("button",{onClick:x[1]||(x[1]=V=>v("width",-100)),class:"adjust-btn"},"-"),e.withDirectives(e.createElementVNode("input",{type:"number","onUpdate:modelValue":x[2]||(x[2]=V=>m.value=V),onChange:w,min:800,max:7680,class:"config-number"},null,544),[[e.vModelText,m.value,void 0,{number:!0}]]),e.createElementVNode("button",{onClick:x[3]||(x[3]=V=>v("width",100)),class:"adjust-btn"},"+")])])):e.createCommentVNode("",!0),r.value.size.preset==="custom"?(e.openBlock(),e.createElementBlock("div",Vm,[x[32]||(x[32]=e.createElementVNode("label",null,"高度",-1)),e.createElementVNode("div",Cm,[e.createElementVNode("button",{onClick:x[4]||(x[4]=V=>v("height",-100)),class:"adjust-btn"},"-"),e.withDirectives(e.createElementVNode("input",{type:"number","onUpdate:modelValue":x[5]||(x[5]=V=>h.value=V),onChange:w,min:600,max:4320,class:"config-number"},null,544),[[e.vModelText,h.value,void 0,{number:!0}]]),e.createElementVNode("button",{onClick:x[6]||(x[6]=V=>v("height",100)),class:"adjust-btn"},"+")])])):e.createCommentVNode("",!0)]),e.createElementVNode("div",Im,[x[37]||(x[37]=e.createElementVNode("h4",{class:"section-title"},"变换",-1)),e.createElementVNode("div",Am,[x[34]||(x[34]=e.createElementVNode("label",null,"缩放倍数",-1)),e.createElementVNode("div",$m,[e.withDirectives(e.createElementVNode("input",{type:"range","onUpdate:modelValue":x[7]||(x[7]=V=>r.value.zoom.scale=V),min:.1,max:5,step:.1,class:"config-slider"},null,512),[[e.vModelText,r.value.zoom.scale,void 0,{number:!0}]]),e.createElementVNode("span",Tm,e.toDisplayString(r.value.zoom.scale.toFixed(1)),1)])]),e.createElementVNode("div",Bm,[x[35]||(x[35]=e.createElementVNode("label",null,"画布X轴偏移",-1)),e.createElementVNode("div",Dm,[e.createElementVNode("button",{onClick:x[8]||(x[8]=V=>S("x",-10)),class:"adjust-btn"},"-"),e.withDirectives(e.createElementVNode("input",{type:"number","onUpdate:modelValue":x[9]||(x[9]=V=>r.value.offset.x=V),class:"config-number"},null,512),[[e.vModelText,r.value.offset.x,void 0,{number:!0}]]),e.createElementVNode("button",{onClick:x[10]||(x[10]=V=>S("x",10)),class:"adjust-btn"},"+")])]),e.createElementVNode("div",Pm,[x[36]||(x[36]=e.createElementVNode("label",null,"画布Y轴偏移",-1)),e.createElementVNode("div",Om,[e.createElementVNode("button",{onClick:x[11]||(x[11]=V=>S("y",-10)),class:"adjust-btn"},"-"),e.withDirectives(e.createElementVNode("input",{type:"number","onUpdate:modelValue":x[12]||(x[12]=V=>r.value.offset.y=V),class:"config-number"},null,512),[[e.vModelText,r.value.offset.y,void 0,{number:!0}]]),e.createElementVNode("button",{onClick:x[13]||(x[13]=V=>S("y",10)),class:"adjust-btn"},"+")])])]),e.createElementVNode("div",Mm,[x[45]||(x[45]=e.createElementVNode("h4",{class:"section-title"},"背景",-1)),e.createElementVNode("div",Rm,[x[38]||(x[38]=e.createElementVNode("label",null,"背景颜色",-1)),e.withDirectives(e.createElementVNode("input",{type:"color","onUpdate:modelValue":x[14]||(x[14]=V=>r.value.background.color=V),class:"config-color"},null,512),[[e.vModelText,r.value.background.color]])]),e.createElementVNode("div",jm,[x[40]||(x[40]=e.createElementVNode("label",null,"背景图片",-1)),e.createElementVNode("div",Lm,[e.createElementVNode("input",{type:"file",accept:"image/*",onChange:_,ref_key:"fileInput",ref:t,style:{display:"none"}},null,544),e.createElementVNode("button",{onClick:k,class:"upload-btn"},[...x[39]||(x[39]=[e.createElementVNode("span",null,"📄",-1)])]),r.value.background.image?(e.openBlock(),e.createElementBlock("button",{key:0,onClick:E,class:"clear-btn",title:"清除背景图"}," ✕ ")):e.createCommentVNode("",!0)])]),e.createElementVNode("div",Um,[x[42]||(x[42]=e.createElementVNode("label",null,"背景大小",-1)),e.withDirectives(e.createElementVNode("select",{"onUpdate:modelValue":x[15]||(x[15]=V=>r.value.background.size=V),class:"config-select"},[...x[41]||(x[41]=[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,r.value.background.size]])]),e.createElementVNode("div",Fm,[x[44]||(x[44]=e.createElementVNode("label",null,"图像重复",-1)),e.withDirectives(e.createElementVNode("select",{"onUpdate:modelValue":x[16]||(x[16]=V=>r.value.background.repeat=V),class:"config-select"},[...x[43]||(x[43]=[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,r.value.background.repeat]])])]),e.createElementVNode("div",zm,[x[53]||(x[53]=e.createElementVNode("h4",{class:"section-title"},"辅助",-1)),e.createElementVNode("div",Wm,[x[47]||(x[47]=e.createElementVNode("label",null,"吸附",-1)),e.createElementVNode("label",qm,[e.withDirectives(e.createElementVNode("input",{type:"checkbox","onUpdate:modelValue":x[17]||(x[17]=V=>r.value.magnetism.enabled=V)},null,512),[[e.vModelCheckbox,r.value.magnetism.enabled]]),x[46]||(x[46]=e.createElementVNode("span",{class:"slider"},null,-1))])]),e.createElementVNode("div",Gm,[x[49]||(x[49]=e.createElementVNode("label",null,"网格",-1)),e.createElementVNode("label",Hm,[e.withDirectives(e.createElementVNode("input",{type:"checkbox","onUpdate:modelValue":x[18]||(x[18]=V=>r.value.grid.enabled=V)},null,512),[[e.vModelCheckbox,r.value.grid.enabled]]),x[48]||(x[48]=e.createElementVNode("span",{class:"slider"},null,-1))])]),e.createElementVNode("div",Km,[x[51]||(x[51]=e.createElementVNode("label",null,"网格对齐",-1)),e.createElementVNode("label",Qm,[e.withDirectives(e.createElementVNode("input",{type:"checkbox","onUpdate:modelValue":x[19]||(x[19]=V=>r.value.snap.enabled=V)},null,512),[[e.vModelCheckbox,r.value.snap.enabled]]),x[50]||(x[50]=e.createElementVNode("span",{class:"slider"},null,-1))])]),r.value.grid.enabled?(e.openBlock(),e.createElementBlock("div",Ym,[x[52]||(x[52]=e.createElementVNode("label",null,"网格大小",-1)),e.createElementVNode("div",Jm,[e.createElementVNode("button",{onClick:x[20]||(x[20]=V=>y(-5)),class:"adjust-btn"},"-"),e.withDirectives(e.createElementVNode("input",{type:"number","onUpdate:modelValue":x[21]||(x[21]=V=>r.value.grid.size=V),min:5,max:50,class:"config-number"},null,512),[[e.vModelText,r.value.grid.size,void 0,{number:!0}]]),e.createElementVNode("button",{onClick:x[22]||(x[22]=V=>y(5)),class:"adjust-btn"},"+")])])):e.createCommentVNode("",!0)]),e.createElementVNode("div",Xm,[x[62]||(x[62]=e.createElementVNode("h4",{class:"section-title"},"数据源",-1)),e.createElementVNode("div",Zm,[x[55]||(x[55]=e.createElementVNode("label",null,"MQTT 数据源",-1)),e.createElementVNode("label",eg,[e.withDirectives(e.createElementVNode("input",{type:"checkbox","onUpdate:modelValue":x[23]||(x[23]=V=>l.value=V),onChange:c},null,544),[[e.vModelCheckbox,l.value]]),x[54]||(x[54]=e.createElementVNode("span",{class:"slider"},null,-1))])]),l.value?(e.openBlock(),e.createElementBlock(e.Fragment,{key:0},[e.createElementVNode("div",tg,[x[56]||(x[56]=e.createElementVNode("label",null,"Broker 地址",-1)),e.withDirectives(e.createElementVNode("input",{type:"text","onUpdate:modelValue":x[24]||(x[24]=V=>n.value.broker=V),onChange:d,placeholder:"mqtt://broker.emqx.io",class:"config-input-full"},null,544),[[e.vModelText,n.value.broker]])]),e.createElementVNode("div",rg,[x[57]||(x[57]=e.createElementVNode("label",null,"订阅主题",-1)),e.withDirectives(e.createElementVNode("input",{type:"text","onUpdate:modelValue":x[25]||(x[25]=V=>n.value.topic=V),onChange:d,placeholder:"/devices/+/data",class:"config-input-full"},null,544),[[e.vModelText,n.value.topic]])]),e.createElementVNode("div",og,[x[58]||(x[58]=e.createElementVNode("label",null,"客户端ID",-1)),e.withDirectives(e.createElementVNode("input",{type:"text","onUpdate:modelValue":x[26]||(x[26]=V=>n.value.clientId=V),onChange:d,placeholder:"自动生成",class:"config-input-full"},null,544),[[e.vModelText,n.value.clientId]])]),e.createElementVNode("div",ng,[x[59]||(x[59]=e.createElementVNode("label",null,"用户名",-1)),e.withDirectives(e.createElementVNode("input",{type:"text","onUpdate:modelValue":x[27]||(x[27]=V=>n.value.username=V),onChange:d,placeholder:"可选",class:"config-input-full"},null,544),[[e.vModelText,n.value.username]])]),e.createElementVNode("div",ig,[x[60]||(x[60]=e.createElementVNode("label",null,"密码",-1)),e.withDirectives(e.createElementVNode("input",{type:"password","onUpdate:modelValue":x[28]||(x[28]=V=>n.value.password=V),onChange:d,placeholder:"可选",class:"config-input-full"},null,544),[[e.vModelText,n.value.password]])]),o.value?(e.openBlock(),e.createElementBlock("div",sg,[x[61]||(x[61]=e.createElementVNode("label",null,"连接状态",-1)),e.createElementVNode("span",{class:e.normalizeClass(["status-badge",o.value.connected?"connected":"disconnected"])},e.toDisplayString(o.value.connected?"已连接":"未连接"),3)])):e.createCommentVNode("",!0)],64)):e.createCommentVNode("",!0)])])]))}}),[["__scopeId","data-v-43175010"]]),ag={class:"tab-pane"},lg={class:"property-section"},cg={class:"property-item-inline"},dg=["value"],ug={class:"property-item-inline"},fg=["value"],pg={class:"property-item-inline"},hg=["value"],mg={class:"property-section"},gg={class:"property-row"},yg={class:"property-item"},bg=["value"],wg={class:"property-item"},Eg=["value"],vg={class:"property-row"},kg={class:"property-item"},_g=["value"],Ng={class:"property-item"},xg=["value"],Sg={class:"property-section"},Vg={class:"property-item-inline"},Cg=["value"],Ig={class:"property-item-inline"},Ag={class:"color-input-wrapper"},$g=["value"],Tg={class:"color-value"},Bg={class:"property-item-inline"},Dg={class:"color-input-wrapper"},Pg=["value"],Og={class:"color-value"},Mg={class:"property-item-inline"},Rg=["value"],jg={class:"property-item-inline"},Lg=["value"],Ug={key:0,class:"property-section"},Fg={key:0,class:"property-hint"},zg=["value","onInput","placeholder"],Wg=["value","onInput","min","max","step"],qg={key:2,class:"color-input-wrapper"},Gg=["value","onInput"],Hg={class:"color-value"},Kg={key:3,class:"checkbox-wrapper"},Qg=["checked","onChange"],Yg={class:"checkbox-label"},Jg=["value","onChange"],Xg=["value"],vo=Me(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(u,{emit:r}){const t=u,l=r,n=e.computed(()=>{var s,c;if(!((c=(s=t.selectedNode)==null?void 0:s.data)!=null&&c.props))return[];const a=["label","fill","stroke","strokeWidth","opacity"];return t.selectedNode.data.props.filter(d=>!a.includes(d.key))}),o=a=>{if(!a.path)return a.defaultValue;const s=a.path.split(".");let c=t.selectedNode;for(const d of s)if(c&&typeof c=="object")c=c[d];else return a.defaultValue;return c!==void 0?c:a.defaultValue},i=(a,s)=>{var f;const c=s.target;let d;if(a.type==="number")d=Number(c.value);else if(a.type==="boolean")d=c.checked;else if(a.type==="select"){const m=(f=a.options)==null?void 0:f.find(h=>String(h.value)===c.value);d=m?m.value:c.value}else d=c.value;l("update-dynamic-prop",a.path,d)};return(a,s)=>{var c,d,f,m,h,p,w,v,S,y,k,_,E,I,x,V,$;return e.openBlock(),e.createElementBlock("div",ag,[e.createElementVNode("div",lg,[s[13]||(s[13]=e.createElementVNode("h4",null,"基础信息",-1)),e.createElementVNode("div",cg,[s[10]||(s[10]=e.createElementVNode("label",null,"组件名称",-1)),e.createElementVNode("input",{type:"text",value:((c=u.selectedNode.getData())==null?void 0:c.componentName)||"",onInput:s[0]||(s[0]=C=>a.$emit("update-component-name",C)),placeholder:"请输入组件名称"},null,40,dg)]),e.createElementVNode("div",ug,[s[11]||(s[11]=e.createElementVNode("label",null,"ID",-1)),e.createElementVNode("input",{type:"text",value:u.selectedNode.id,disabled:""},null,8,fg)]),e.createElementVNode("div",pg,[s[12]||(s[12]=e.createElementVNode("label",null,"类型",-1)),e.createElementVNode("input",{type:"text",value:u.selectedNode.shape,disabled:""},null,8,hg)])]),e.createElementVNode("div",mg,[s[18]||(s[18]=e.createElementVNode("h4",null,"位置和尺寸",-1)),e.createElementVNode("div",gg,[e.createElementVNode("div",yg,[s[14]||(s[14]=e.createElementVNode("label",null,"X",-1)),e.createElementVNode("input",{type:"number",value:u.nodePosition.x,onInput:s[1]||(s[1]=C=>a.$emit("update-position","x",C))},null,40,bg)]),e.createElementVNode("div",wg,[s[15]||(s[15]=e.createElementVNode("label",null,"Y",-1)),e.createElementVNode("input",{type:"number",value:u.nodePosition.y,onInput:s[2]||(s[2]=C=>a.$emit("update-position","y",C))},null,40,Eg)])]),e.createElementVNode("div",vg,[e.createElementVNode("div",kg,[s[16]||(s[16]=e.createElementVNode("label",null,"宽度",-1)),e.createElementVNode("input",{type:"number",value:u.nodeSize.width,onInput:s[3]||(s[3]=C=>a.$emit("update-size","width",C))},null,40,_g)]),e.createElementVNode("div",Ng,[s[17]||(s[17]=e.createElementVNode("label",null,"高度",-1)),e.createElementVNode("input",{type:"number",value:u.nodeSize.height,onInput:s[4]||(s[4]=C=>a.$emit("update-size","height",C))},null,40,xg)])])]),e.createElementVNode("div",Sg,[s[24]||(s[24]=e.createElementVNode("h4",null,"样式",-1)),e.createElementVNode("div",Vg,[s[19]||(s[19]=e.createElementVNode("label",null,"初始文本",-1)),e.createElementVNode("input",{type:"text",value:((f=(d=u.nodeAttrs)==null?void 0:d.text)==null?void 0:f.text)||((h=(m=u.nodeAttrs)==null?void 0:m.label)==null?void 0:h.text)||u.selectedNode.getProp("label")||"",onInput:s[5]||(s[5]=C=>a.$emit("update-label",C)),placeholder:"设置默认显示文本"},null,40,Cg)]),e.createElementVNode("div",Ig,[s[20]||(s[20]=e.createElementVNode("label",null,"填充颜色",-1)),e.createElementVNode("div",Ag,[e.createElementVNode("input",{type:"color",value:((w=(p=u.nodeAttrs)==null?void 0:p.body)==null?void 0:w.fill)||"#3b82f6",onInput:s[6]||(s[6]=C=>a.$emit("update-fill",C))},null,40,$g),e.createElementVNode("span",Tg,e.toDisplayString(((S=(v=u.nodeAttrs)==null?void 0:v.body)==null?void 0:S.fill)||"#3b82f6"),1)])]),e.createElementVNode("div",Bg,[s[21]||(s[21]=e.createElementVNode("label",null,"边框颜色",-1)),e.createElementVNode("div",Dg,[e.createElementVNode("input",{type:"color",value:((k=(y=u.nodeAttrs)==null?void 0:y.body)==null?void 0:k.stroke)||"#2563eb",onInput:s[7]||(s[7]=C=>a.$emit("update-stroke",C))},null,40,Pg),e.createElementVNode("span",Og,e.toDisplayString(((E=(_=u.nodeAttrs)==null?void 0:_.body)==null?void 0:E.stroke)||"#2563eb"),1)])]),e.createElementVNode("div",Mg,[s[22]||(s[22]=e.createElementVNode("label",null,"边框宽度",-1)),e.createElementVNode("input",{type:"number",min:"0",max:"10",value:((x=(I=u.nodeAttrs)==null?void 0:I.body)==null?void 0:x.strokeWidth)||2,onInput:s[8]||(s[8]=C=>a.$emit("update-stroke-width",C))},null,40,Rg)]),e.createElementVNode("div",jg,[s[23]||(s[23]=e.createElementVNode("label",null,"透明度",-1)),e.createElementVNode("input",{type:"number",min:"0",max:"1",step:"0.1",value:(($=(V=u.nodeAttrs)==null?void 0:V.body)==null?void 0:$.opacity)!==void 0?u.nodeAttrs.body.opacity:1,onInput:s[9]||(s[9]=C=>a.$emit("update-opacity",C))},null,40,Lg)])]),n.value.length>0?(e.openBlock(),e.createElementBlock("div",Ug,[s[25]||(s[25]=e.createElementVNode("h4",null,"组件属性",-1)),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(n.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",Fg,e.toDisplayString(C.description),1)):e.createCommentVNode("",!0)]),C.type==="text"?(e.openBlock(),e.createElementBlock("input",{key:0,type:"text",value:o(C),onInput:D=>i(C,D),placeholder:C.defaultValue},null,40,zg)):C.type==="number"?(e.openBlock(),e.createElementBlock("input",{key:1,type:"number",value:o(C),onInput:D=>i(C,D),min:C.min,max:C.max,step:C.step},null,40,Wg)):C.type==="color"?(e.openBlock(),e.createElementBlock("div",qg,[e.createElementVNode("input",{type:"color",value:o(C),onInput:D=>i(C,D)},null,40,Gg),e.createElementVNode("span",Hg,e.toDisplayString(o(C)),1)])):C.type==="boolean"?(e.openBlock(),e.createElementBlock("div",Kg,[e.createElementVNode("input",{type:"checkbox",checked:o(C),onChange:D=>i(C,D)},null,40,Qg),e.createElementVNode("span",Yg,e.toDisplayString(o(C)?"是":"否"),1)])):C.type==="select"?(e.openBlock(),e.createElementBlock("select",{key:4,value:o(C),onChange:D=>i(C,D)},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(C.options,D=>(e.openBlock(),e.createElementBlock("option",{key:D.value,value:D.value},e.toDisplayString(D.label),9,Xg))),128))],40,Jg)):e.createCommentVNode("",!0)]))),128))])):e.createCommentVNode("",!0)])}}}),[["__scopeId","data-v-e63074f3"]]);var ko=Object.defineProperty,Zg=Object.getOwnPropertyDescriptor,ey=Object.getOwnPropertyNames,ty=Object.prototype.hasOwnProperty,dt=(u,r)=>()=>(u&&(r=u(u=0)),r),_e=(u,r)=>()=>(r||u((r={exports:{}}).exports,r),r.exports),tr=(u,r)=>{for(var t in r)ko(u,t,{get:r[t],enumerable:!0})},ry=(u,r,t,l)=>{if(r&&typeof r=="object"||typeof r=="function")for(let n of ey(r))!ty.call(u,n)&&n!==t&&ko(u,n,{get:()=>r[n],enumerable:!(l=Zg(r,n))||l.enumerable});return u},We=u=>ry(ko({},"__esModule",{value:!0}),u),be=dt(()=>{}),ze={};tr(ze,{_debugEnd:()=>on,_debugProcess:()=>rn,_events:()=>En,_eventsCount:()=>vn,_exiting:()=>Fo,_fatalExceptions:()=>Zo,_getActiveHandles:()=>Cs,_getActiveRequests:()=>Vs,_kill:()=>qo,_linkedBinding:()=>xs,_maxListeners:()=>wn,_preload_modules:()=>gn,_rawDebug:()=>jo,_startProfilerIdleNotifier:()=>nn,_stopProfilerIdleNotifier:()=>sn,_tickCallback:()=>tn,abort:()=>dn,addListener:()=>kn,allowedNodeEnvironmentFlags:()=>Jo,arch:()=>xo,argv:()=>Co,argv0:()=>mn,assert:()=>Is,binding:()=>Bo,browser:()=>Ro,chdir:()=>Oo,config:()=>zo,cpuUsage:()=>fr,cwd:()=>Po,debugPort:()=>hn,default:()=>An,dlopen:()=>Ss,domain:()=>Uo,emit:()=>Vn,emitWarning:()=>To,env:()=>Vo,execArgv:()=>Io,execPath:()=>pn,exit:()=>Qo,features:()=>Xo,hasUncaughtExceptionCaptureCallback:()=>As,hrtime:()=>Sr,kill:()=>Ko,listeners:()=>Ts,memoryUsage:()=>Ho,moduleLoadList:()=>Lo,nextTick:()=>_s,off:()=>Nn,on:()=>Et,once:()=>_n,openStdin:()=>Yo,pid:()=>un,platform:()=>So,ppid:()=>fn,prependListener:()=>Cn,prependOnceListener:()=>In,reallyExit:()=>Wo,release:()=>Mo,removeAllListeners:()=>Sn,removeListener:()=>xn,resourceUsage:()=>Go,setSourceMapsEnabled:()=>yn,setUncaughtExceptionCaptureCallback:()=>en,stderr:()=>ln,stdin:()=>cn,stdout:()=>an,title:()=>No,umask:()=>Do,uptime:()=>$s,version:()=>Ao,versions:()=>$o});function _o(u){throw new Error("Node.js process "+u+" is not supported by JSPM core outside of Node.js")}function oy(){!Wt||!qt||(Wt=!1,qt.length?gt=qt.concat(gt):ur=-1,gt.length&&ks())}function ks(){if(!Wt){var u=setTimeout(oy,0);Wt=!0;for(var r=gt.length;r;){for(qt=gt,gt=[];++ur<r;)qt&&qt[ur].run();ur=-1,r=gt.length}qt=null,Wt=!1,clearTimeout(u)}}function _s(u){var r=new Array(arguments.length-1);if(arguments.length>1)for(var t=1;t<arguments.length;t++)r[t-1]=arguments[t];gt.push(new Ns(u,r)),gt.length===1&&!Wt&&setTimeout(ks,0)}function Ns(u,r){this.fun=u,this.array=r}function it(){}function xs(u){_o("_linkedBinding")}function Ss(u){_o("dlopen")}function Vs(){return[]}function Cs(){return[]}function Is(u,r){if(!u)throw new Error(r||"assertion error")}function As(){return!1}function $s(){return vt.now()/1e3}function Sr(u){var r=Math.floor((Date.now()-vt.now())*.001),t=vt.now()*.001,l=Math.floor(t)+r,n=Math.floor(t%1*1e9);return u&&(l=l-u[0],n=n-u[1],n<0&&(l--,n+=Vr)),[l,n]}function Et(){return An}function Ts(u){return[]}var gt,Wt,qt,ur,No,xo,So,Vo,Co,Io,Ao,$o,To,Bo,Do,Po,Oo,Mo,Ro,jo,Lo,Uo,Fo,zo,Wo,qo,fr,Go,Ho,Ko,Qo,Yo,Jo,Xo,Zo,en,tn,rn,on,nn,sn,an,ln,cn,dn,un,fn,pn,hn,mn,gn,yn,vt,bn,Vr,wn,En,vn,kn,_n,Nn,xn,Sn,Vn,Cn,In,An,ny=dt(()=>{be(),Ee(),we(),gt=[],Wt=!1,ur=-1,Ns.prototype.run=function(){this.fun.apply(null,this.array)},No="browser",xo="x64",So="browser",Vo={PATH:"/usr/bin",LANG:typeof navigator<"u"?navigator.language+".UTF-8":void 0,PWD:"/",HOME:"/home",TMP:"/tmp"},Co=["/usr/bin/node"],Io=[],Ao="v16.8.0",$o={},To=function(u,r){console.warn((r?r+": ":"")+u)},Bo=function(u){_o("binding")},Do=function(u){return 0},Po=function(){return"/"},Oo=function(u){},Mo={name:"node",sourceUrl:"",headersUrl:"",libUrl:""},Ro=!0,jo=it,Lo=[],Uo={},Fo=!1,zo={},Wo=it,qo=it,fr=function(){return{}},Go=fr,Ho=fr,Ko=it,Qo=it,Yo=it,Jo={},Xo={inspector:!1,debug:!1,uv:!1,ipv6:!1,tls_alpn:!1,tls_sni:!1,tls_ocsp:!1,tls:!1,cached_builtins:!0},Zo=it,en=it,tn=it,rn=it,on=it,nn=it,sn=it,an=void 0,ln=void 0,cn=void 0,dn=it,un=2,fn=1,pn="/bin/usr/node",hn=9229,mn="node",gn=[],yn=it,vt={now:typeof performance<"u"?performance.now.bind(performance):void 0,timing:typeof performance<"u"?performance.timing:void 0},vt.now===void 0&&(bn=Date.now(),vt.timing&&vt.timing.navigationStart&&(bn=vt.timing.navigationStart),vt.now=()=>Date.now()-bn),Vr=1e9,Sr.bigint=function(u){var r=Sr(u);return typeof BigInt>"u"?r[0]*Vr+r[1]:BigInt(r[0]*Vr)+BigInt(r[1])},wn=10,En={},vn=0,kn=Et,_n=Et,Nn=Et,xn=Et,Sn=Et,Vn=it,Cn=Et,In=Et,An={version:Ao,versions:$o,arch:xo,platform:So,browser:Ro,release:Mo,_rawDebug:jo,moduleLoadList:Lo,binding:Bo,_linkedBinding:xs,_events:En,_eventsCount:vn,_maxListeners:wn,on:Et,addListener:kn,once:_n,off:Nn,removeListener:xn,removeAllListeners:Sn,emit:Vn,prependListener:Cn,prependOnceListener:In,listeners:Ts,domain:Uo,_exiting:Fo,config:zo,dlopen:Ss,uptime:$s,_getActiveRequests:Vs,_getActiveHandles:Cs,reallyExit:Wo,_kill:qo,cpuUsage:fr,resourceUsage:Go,memoryUsage:Ho,kill:Ko,exit:Qo,openStdin:Yo,allowedNodeEnvironmentFlags:Jo,assert:Is,features:Xo,_fatalExceptions:Zo,setUncaughtExceptionCaptureCallback:en,hasUncaughtExceptionCaptureCallback:As,emitWarning:To,nextTick:_s,_tickCallback:tn,_debugProcess:rn,_debugEnd:on,_startProfilerIdleNotifier:nn,_stopProfilerIdleNotifier:sn,stdout:an,stdin:cn,stderr:ln,abort:dn,umask:Do,chdir:Oo,cwd:Po,env:Vo,title:No,argv:Co,execArgv:Io,pid:un,ppid:fn,execPath:pn,debugPort:hn,hrtime:Sr,argv0:mn,_preload_modules:gn,setSourceMapsEnabled:yn}}),we=dt(()=>{ny()});function iy(){if($n)return rr;$n=!0,rr.byteLength=a,rr.toByteArray=c,rr.fromByteArray=m;for(var u=[],r=[],t=typeof Uint8Array<"u"?Uint8Array:Array,l="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",n=0,o=l.length;n<o;++n)u[n]=l[n],r[l.charCodeAt(n)]=n;r[45]=62,r[95]=63;function i(h){var p=h.length;if(p%4>0)throw new Error("Invalid string. Length must be a multiple of 4");var w=h.indexOf("=");w===-1&&(w=p);var v=w===p?0:4-w%4;return[w,v]}function a(h){var p=i(h),w=p[0],v=p[1];return(w+v)*3/4-v}function s(h,p,w){return(p+w)*3/4-w}function c(h){var p,w=i(h),v=w[0],S=w[1],y=new t(s(h,v,S)),k=0,_=S>0?v-4:v,E;for(E=0;E<_;E+=4)p=r[h.charCodeAt(E)]<<18|r[h.charCodeAt(E+1)]<<12|r[h.charCodeAt(E+2)]<<6|r[h.charCodeAt(E+3)],y[k++]=p>>16&255,y[k++]=p>>8&255,y[k++]=p&255;return S===2&&(p=r[h.charCodeAt(E)]<<2|r[h.charCodeAt(E+1)]>>4,y[k++]=p&255),S===1&&(p=r[h.charCodeAt(E)]<<10|r[h.charCodeAt(E+1)]<<4|r[h.charCodeAt(E+2)]>>2,y[k++]=p>>8&255,y[k++]=p&255),y}function d(h){return u[h>>18&63]+u[h>>12&63]+u[h>>6&63]+u[h&63]}function f(h,p,w){for(var v,S=[],y=p;y<w;y+=3)v=(h[y]<<16&16711680)+(h[y+1]<<8&65280)+(h[y+2]&255),S.push(d(v));return S.join("")}function m(h){for(var p,w=h.length,v=w%3,S=[],y=16383,k=0,_=w-v;k<_;k+=y)S.push(f(h,k,k+y>_?_:k+y));return v===1?(p=h[w-1],S.push(u[p>>2]+u[p<<4&63]+"==")):v===2&&(p=(h[w-2]<<8)+h[w-1],S.push(u[p>>10]+u[p>>4&63]+u[p<<2&63]+"=")),S.join("")}return rr}function sy(){return Tn?pr:(Tn=!0,pr.read=function(u,r,t,l,n){var o,i,a=n*8-l-1,s=(1<<a)-1,c=s>>1,d=-7,f=t?n-1:0,m=t?-1:1,h=u[r+f];for(f+=m,o=h&(1<<-d)-1,h>>=-d,d+=a;d>0;o=o*256+u[r+f],f+=m,d-=8);for(i=o&(1<<-d)-1,o>>=-d,d+=l;d>0;i=i*256+u[r+f],f+=m,d-=8);if(o===0)o=1-c;else{if(o===s)return i?NaN:(h?-1:1)*(1/0);i=i+Math.pow(2,l),o=o-c}return(h?-1:1)*i*Math.pow(2,o-l)},pr.write=function(u,r,t,l,n,o){var i,a,s,c=o*8-n-1,d=(1<<c)-1,f=d>>1,m=n===23?Math.pow(2,-24)-Math.pow(2,-77):0,h=l?0:o-1,p=l?1:-1,w=r<0||r===0&&1/r<0?1:0;for(r=Math.abs(r),isNaN(r)||r===1/0?(a=isNaN(r)?1:0,i=d):(i=Math.floor(Math.log(r)/Math.LN2),r*(s=Math.pow(2,-i))<1&&(i--,s*=2),i+f>=1?r+=m/s:r+=m*Math.pow(2,1-f),r*s>=2&&(i++,s/=2),i+f>=d?(a=0,i=d):i+f>=1?(a=(r*s-1)*Math.pow(2,n),i=i+f):(a=r*Math.pow(2,f-1)*Math.pow(2,n),i=0));n>=8;u[t+h]=a&255,h+=p,a/=256,n-=8);for(i=i<<n|a,c+=n;c>0;u[t+h]=i&255,h+=p,i/=256,c-=8);u[t+h-p]|=w*128},pr)}function ay(){if(Bn)return $t;Bn=!0;let u=iy(),r=sy(),t=typeof Symbol=="function"&&typeof Symbol.for=="function"?Symbol.for("nodejs.util.inspect.custom"):null;$t.Buffer=i,$t.SlowBuffer=S,$t.INSPECT_MAX_BYTES=50;let l=2147483647;$t.kMaxLength=l,i.TYPED_ARRAY_SUPPORT=n(),!i.TYPED_ARRAY_SUPPORT&&typeof console<"u"&&typeof console.error=="function"&&console.error("This browser lacks typed array (Uint8Array) support which is required by `buffer` v5.x. Use `buffer` v4.x if you require old browser support.");function n(){try{let g=new Uint8Array(1),b={foo:function(){return 42}};return Object.setPrototypeOf(b,Uint8Array.prototype),Object.setPrototypeOf(g,b),g.foo()===42}catch{return!1}}Object.defineProperty(i.prototype,"parent",{enumerable:!0,get:function(){if(i.isBuffer(this))return this.buffer}}),Object.defineProperty(i.prototype,"offset",{enumerable:!0,get:function(){if(i.isBuffer(this))return this.byteOffset}});function o(g){if(g>l)throw new RangeError('The value "'+g+'" is invalid for option "size"');let b=new Uint8Array(g);return Object.setPrototypeOf(b,i.prototype),b}function i(g,b,N){if(typeof g=="number"){if(typeof b=="string")throw new TypeError('The "string" argument must be of type string. Received type number');return d(g)}return a(g,b,N)}i.poolSize=8192;function a(g,b,N){if(typeof g=="string")return f(g,b);if(ArrayBuffer.isView(g))return h(g);if(g==null)throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+typeof g);if(Q(g,ArrayBuffer)||g&&Q(g.buffer,ArrayBuffer)||typeof SharedArrayBuffer<"u"&&(Q(g,SharedArrayBuffer)||g&&Q(g.buffer,SharedArrayBuffer)))return p(g,b,N);if(typeof g=="number")throw new TypeError('The "value" argument must not be of type number. Received type number');let T=g.valueOf&&g.valueOf();if(T!=null&&T!==g)return i.from(T,b,N);let L=w(g);if(L)return L;if(typeof Symbol<"u"&&Symbol.toPrimitive!=null&&typeof g[Symbol.toPrimitive]=="function")return i.from(g[Symbol.toPrimitive]("string"),b,N);throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+typeof g)}i.from=function(g,b,N){return a(g,b,N)},Object.setPrototypeOf(i.prototype,Uint8Array.prototype),Object.setPrototypeOf(i,Uint8Array);function s(g){if(typeof g!="number")throw new TypeError('"size" argument must be of type number');if(g<0)throw new RangeError('The value "'+g+'" is invalid for option "size"')}function c(g,b,N){return s(g),g<=0?o(g):b!==void 0?typeof N=="string"?o(g).fill(b,N):o(g).fill(b):o(g)}i.alloc=function(g,b,N){return c(g,b,N)};function d(g){return s(g),o(g<0?0:v(g)|0)}i.allocUnsafe=function(g){return d(g)},i.allocUnsafeSlow=function(g){return d(g)};function f(g,b){if((typeof b!="string"||b==="")&&(b="utf8"),!i.isEncoding(b))throw new TypeError("Unknown encoding: "+b);let N=y(g,b)|0,T=o(N),L=T.write(g,b);return L!==N&&(T=T.slice(0,L)),T}function m(g){let b=g.length<0?0:v(g.length)|0,N=o(b);for(let T=0;T<b;T+=1)N[T]=g[T]&255;return N}function h(g){if(Q(g,Uint8Array)){let b=new Uint8Array(g);return p(b.buffer,b.byteOffset,b.byteLength)}return m(g)}function p(g,b,N){if(b<0||g.byteLength<b)throw new RangeError('"offset" is outside of buffer bounds');if(g.byteLength<b+(N||0))throw new RangeError('"length" is outside of buffer bounds');let T;return b===void 0&&N===void 0?T=new Uint8Array(g):N===void 0?T=new Uint8Array(g,b):T=new Uint8Array(g,b,N),Object.setPrototypeOf(T,i.prototype),T}function w(g){if(i.isBuffer(g)){let b=v(g.length)|0,N=o(b);return N.length===0||g.copy(N,0,0,b),N}if(g.length!==void 0)return typeof g.length!="number"||ye(g.length)?o(0):m(g);if(g.type==="Buffer"&&Array.isArray(g.data))return m(g.data)}function v(g){if(g>=l)throw new RangeError("Attempt to allocate Buffer larger than maximum size: 0x"+l.toString(16)+" bytes");return g|0}function S(g){return+g!=g&&(g=0),i.alloc(+g)}i.isBuffer=function(g){return g!=null&&g._isBuffer===!0&&g!==i.prototype},i.compare=function(g,b){if(Q(g,Uint8Array)&&(g=i.from(g,g.offset,g.byteLength)),Q(b,Uint8Array)&&(b=i.from(b,b.offset,b.byteLength)),!i.isBuffer(g)||!i.isBuffer(b))throw new TypeError('The "buf1", "buf2" arguments must be one of type Buffer or Uint8Array');if(g===b)return 0;let N=g.length,T=b.length;for(let L=0,Y=Math.min(N,T);L<Y;++L)if(g[L]!==b[L]){N=g[L],T=b[L];break}return N<T?-1:T<N?1:0},i.isEncoding=function(g){switch(String(g).toLowerCase()){case"hex":case"utf8":case"utf-8":case"ascii":case"latin1":case"binary":case"base64":case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return!0;default:return!1}},i.concat=function(g,b){if(!Array.isArray(g))throw new TypeError('"list" argument must be an Array of Buffers');if(g.length===0)return i.alloc(0);let N;if(b===void 0)for(b=0,N=0;N<g.length;++N)b+=g[N].length;let T=i.allocUnsafe(b),L=0;for(N=0;N<g.length;++N){let Y=g[N];if(Q(Y,Uint8Array))L+Y.length>T.length?(i.isBuffer(Y)||(Y=i.from(Y)),Y.copy(T,L)):Uint8Array.prototype.set.call(T,Y,L);else if(i.isBuffer(Y))Y.copy(T,L);else throw new TypeError('"list" argument must be an Array of Buffers');L+=Y.length}return T};function y(g,b){if(i.isBuffer(g))return g.length;if(ArrayBuffer.isView(g)||Q(g,ArrayBuffer))return g.byteLength;if(typeof g!="string")throw new TypeError('The "string" argument must be one of type string, Buffer, or ArrayBuffer. Received type '+typeof g);let N=g.length,T=arguments.length>2&&arguments[2]===!0;if(!T&&N===0)return 0;let L=!1;for(;;)switch(b){case"ascii":case"latin1":case"binary":return N;case"utf8":case"utf-8":return K(g).length;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return N*2;case"hex":return N>>>1;case"base64":return pe(g).length;default:if(L)return T?-1:K(g).length;b=(""+b).toLowerCase(),L=!0}}i.byteLength=y;function k(g,b,N){let T=!1;if((b===void 0||b<0)&&(b=0),b>this.length||((N===void 0||N>this.length)&&(N=this.length),N<=0)||(N>>>=0,b>>>=0,N<=b))return"";for(g||(g="utf8");;)switch(g){case"hex":return oe(this,b,N);case"utf8":case"utf-8":return U(this,b,N);case"ascii":return ue(this,b,N);case"latin1":case"binary":return ne(this,b,N);case"base64":return A(this,b,N);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return fe(this,b,N);default:if(T)throw new TypeError("Unknown encoding: "+g);g=(g+"").toLowerCase(),T=!0}}i.prototype._isBuffer=!0;function _(g,b,N){let T=g[b];g[b]=g[N],g[N]=T}i.prototype.swap16=function(){let g=this.length;if(g%2!==0)throw new RangeError("Buffer size must be a multiple of 16-bits");for(let b=0;b<g;b+=2)_(this,b,b+1);return this},i.prototype.swap32=function(){let g=this.length;if(g%4!==0)throw new RangeError("Buffer size must be a multiple of 32-bits");for(let b=0;b<g;b+=4)_(this,b,b+3),_(this,b+1,b+2);return this},i.prototype.swap64=function(){let g=this.length;if(g%8!==0)throw new RangeError("Buffer size must be a multiple of 64-bits");for(let b=0;b<g;b+=8)_(this,b,b+7),_(this,b+1,b+6),_(this,b+2,b+5),_(this,b+3,b+4);return this},i.prototype.toString=function(){let g=this.length;return g===0?"":arguments.length===0?U(this,0,g):k.apply(this,arguments)},i.prototype.toLocaleString=i.prototype.toString,i.prototype.equals=function(g){if(!i.isBuffer(g))throw new TypeError("Argument must be a Buffer");return this===g?!0:i.compare(this,g)===0},i.prototype.inspect=function(){let g="",b=$t.INSPECT_MAX_BYTES;return g=this.toString("hex",0,b).replace(/(.{2})/g,"$1 ").trim(),this.length>b&&(g+=" ... "),"<Buffer "+g+">"},t&&(i.prototype[t]=i.prototype.inspect),i.prototype.compare=function(g,b,N,T,L){if(Q(g,Uint8Array)&&(g=i.from(g,g.offset,g.byteLength)),!i.isBuffer(g))throw new TypeError('The "target" argument must be one of type Buffer or Uint8Array. Received type '+typeof g);if(b===void 0&&(b=0),N===void 0&&(N=g?g.length:0),T===void 0&&(T=0),L===void 0&&(L=this.length),b<0||N>g.length||T<0||L>this.length)throw new RangeError("out of range index");if(T>=L&&b>=N)return 0;if(T>=L)return-1;if(b>=N)return 1;if(b>>>=0,N>>>=0,T>>>=0,L>>>=0,this===g)return 0;let Y=L-T,le=N-b,B=Math.min(Y,le),P=this.slice(T,L),me=g.slice(b,N);for(let Ne=0;Ne<B;++Ne)if(P[Ne]!==me[Ne]){Y=P[Ne],le=me[Ne];break}return Y<le?-1:le<Y?1:0};function E(g,b,N,T,L){if(g.length===0)return-1;if(typeof N=="string"?(T=N,N=0):N>2147483647?N=2147483647:N<-2147483648&&(N=-2147483648),N=+N,ye(N)&&(N=L?0:g.length-1),N<0&&(N=g.length+N),N>=g.length){if(L)return-1;N=g.length-1}else if(N<0)if(L)N=0;else return-1;if(typeof b=="string"&&(b=i.from(b,T)),i.isBuffer(b))return b.length===0?-1:I(g,b,N,T,L);if(typeof b=="number")return b=b&255,typeof Uint8Array.prototype.indexOf=="function"?L?Uint8Array.prototype.indexOf.call(g,b,N):Uint8Array.prototype.lastIndexOf.call(g,b,N):I(g,[b],N,T,L);throw new TypeError("val must be string, number or Buffer")}function I(g,b,N,T,L){let Y=1,le=g.length,B=b.length;if(T!==void 0&&(T=String(T).toLowerCase(),T==="ucs2"||T==="ucs-2"||T==="utf16le"||T==="utf-16le")){if(g.length<2||b.length<2)return-1;Y=2,le/=2,B/=2,N/=2}function P(Ne,xe){return Y===1?Ne[xe]:Ne.readUInt16BE(xe*Y)}let me;if(L){let Ne=-1;for(me=N;me<le;me++)if(P(g,me)===P(b,Ne===-1?0:me-Ne)){if(Ne===-1&&(Ne=me),me-Ne+1===B)return Ne*Y}else Ne!==-1&&(me-=me-Ne),Ne=-1}else for(N+B>le&&(N=le-B),me=N;me>=0;me--){let Ne=!0;for(let xe=0;xe<B;xe++)if(P(g,me+xe)!==P(b,xe)){Ne=!1;break}if(Ne)return me}return-1}i.prototype.includes=function(g,b,N){return this.indexOf(g,b,N)!==-1},i.prototype.indexOf=function(g,b,N){return E(this,g,b,N,!0)},i.prototype.lastIndexOf=function(g,b,N){return E(this,g,b,N,!1)};function x(g,b,N,T){N=Number(N)||0;let L=g.length-N;T?(T=Number(T),T>L&&(T=L)):T=L;let Y=b.length;T>Y/2&&(T=Y/2);let le;for(le=0;le<T;++le){let B=parseInt(b.substr(le*2,2),16);if(ye(B))return le;g[N+le]=B}return le}function V(g,b,N,T){return ve(K(b,g.length-N),g,N,T)}function $(g,b,N,T){return ve(ae(b),g,N,T)}function C(g,b,N,T){return ve(pe(b),g,N,T)}function D(g,b,N,T){return ve(he(b,g.length-N),g,N,T)}i.prototype.write=function(g,b,N,T){if(b===void 0)T="utf8",N=this.length,b=0;else if(N===void 0&&typeof b=="string")T=b,N=this.length,b=0;else if(isFinite(b))b=b>>>0,isFinite(N)?(N=N>>>0,T===void 0&&(T="utf8")):(T=N,N=void 0);else throw new Error("Buffer.write(string, encoding, offset[, length]) is no longer supported");let L=this.length-b;if((N===void 0||N>L)&&(N=L),g.length>0&&(N<0||b<0)||b>this.length)throw new RangeError("Attempt to write outside buffer bounds");T||(T="utf8");let Y=!1;for(;;)switch(T){case"hex":return x(this,g,b,N);case"utf8":case"utf-8":return V(this,g,b,N);case"ascii":case"latin1":case"binary":return $(this,g,b,N);case"base64":return C(this,g,b,N);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return D(this,g,b,N);default:if(Y)throw new TypeError("Unknown encoding: "+T);T=(""+T).toLowerCase(),Y=!0}},i.prototype.toJSON=function(){return{type:"Buffer",data:Array.prototype.slice.call(this._arr||this,0)}};function A(g,b,N){return b===0&&N===g.length?u.fromByteArray(g):u.fromByteArray(g.slice(b,N))}function U(g,b,N){N=Math.min(g.length,N);let T=[],L=b;for(;L<N;){let Y=g[L],le=null,B=Y>239?4:Y>223?3:Y>191?2:1;if(L+B<=N){let P,me,Ne,xe;switch(B){case 1:Y<128&&(le=Y);break;case 2:P=g[L+1],(P&192)===128&&(xe=(Y&31)<<6|P&63,xe>127&&(le=xe));break;case 3:P=g[L+1],me=g[L+2],(P&192)===128&&(me&192)===128&&(xe=(Y&15)<<12|(P&63)<<6|me&63,xe>2047&&(xe<55296||xe>57343)&&(le=xe));break;case 4:P=g[L+1],me=g[L+2],Ne=g[L+3],(P&192)===128&&(me&192)===128&&(Ne&192)===128&&(xe=(Y&15)<<18|(P&63)<<12|(me&63)<<6|Ne&63,xe>65535&&xe<1114112&&(le=xe))}}le===null?(le=65533,B=1):le>65535&&(le-=65536,T.push(le>>>10&1023|55296),le=56320|le&1023),T.push(le),L+=B}return F(T)}let H=4096;function F(g){let b=g.length;if(b<=H)return String.fromCharCode.apply(String,g);let N="",T=0;for(;T<b;)N+=String.fromCharCode.apply(String,g.slice(T,T+=H));return N}function ue(g,b,N){let T="";N=Math.min(g.length,N);for(let L=b;L<N;++L)T+=String.fromCharCode(g[L]&127);return T}function ne(g,b,N){let T="";N=Math.min(g.length,N);for(let L=b;L<N;++L)T+=String.fromCharCode(g[L]);return T}function oe(g,b,N){let T=g.length;(!b||b<0)&&(b=0),(!N||N<0||N>T)&&(N=T);let L="";for(let Y=b;Y<N;++Y)L+=ke[g[Y]];return L}function fe(g,b,N){let T=g.slice(b,N),L="";for(let Y=0;Y<T.length-1;Y+=2)L+=String.fromCharCode(T[Y]+T[Y+1]*256);return L}i.prototype.slice=function(g,b){let N=this.length;g=~~g,b=b===void 0?N:~~b,g<0?(g+=N,g<0&&(g=0)):g>N&&(g=N),b<0?(b+=N,b<0&&(b=0)):b>N&&(b=N),b<g&&(b=g);let T=this.subarray(g,b);return Object.setPrototypeOf(T,i.prototype),T};function J(g,b,N){if(g%1!==0||g<0)throw new RangeError("offset is not uint");if(g+b>N)throw new RangeError("Trying to access beyond buffer length")}i.prototype.readUintLE=i.prototype.readUIntLE=function(g,b,N){g=g>>>0,b=b>>>0,N||J(g,b,this.length);let T=this[g],L=1,Y=0;for(;++Y<b&&(L*=256);)T+=this[g+Y]*L;return T},i.prototype.readUintBE=i.prototype.readUIntBE=function(g,b,N){g=g>>>0,b=b>>>0,N||J(g,b,this.length);let T=this[g+--b],L=1;for(;b>0&&(L*=256);)T+=this[g+--b]*L;return T},i.prototype.readUint8=i.prototype.readUInt8=function(g,b){return g=g>>>0,b||J(g,1,this.length),this[g]},i.prototype.readUint16LE=i.prototype.readUInt16LE=function(g,b){return g=g>>>0,b||J(g,2,this.length),this[g]|this[g+1]<<8},i.prototype.readUint16BE=i.prototype.readUInt16BE=function(g,b){return g=g>>>0,b||J(g,2,this.length),this[g]<<8|this[g+1]},i.prototype.readUint32LE=i.prototype.readUInt32LE=function(g,b){return g=g>>>0,b||J(g,4,this.length),(this[g]|this[g+1]<<8|this[g+2]<<16)+this[g+3]*16777216},i.prototype.readUint32BE=i.prototype.readUInt32BE=function(g,b){return g=g>>>0,b||J(g,4,this.length),this[g]*16777216+(this[g+1]<<16|this[g+2]<<8|this[g+3])},i.prototype.readBigUInt64LE=de(function(g){g=g>>>0,O(g,"offset");let b=this[g],N=this[g+7];(b===void 0||N===void 0)&&te(g,this.length-8);let T=b+this[++g]*2**8+this[++g]*2**16+this[++g]*2**24,L=this[++g]+this[++g]*2**8+this[++g]*2**16+N*2**24;return BigInt(T)+(BigInt(L)<<BigInt(32))}),i.prototype.readBigUInt64BE=de(function(g){g=g>>>0,O(g,"offset");let b=this[g],N=this[g+7];(b===void 0||N===void 0)&&te(g,this.length-8);let T=b*2**24+this[++g]*2**16+this[++g]*2**8+this[++g],L=this[++g]*2**24+this[++g]*2**16+this[++g]*2**8+N;return(BigInt(T)<<BigInt(32))+BigInt(L)}),i.prototype.readIntLE=function(g,b,N){g=g>>>0,b=b>>>0,N||J(g,b,this.length);let T=this[g],L=1,Y=0;for(;++Y<b&&(L*=256);)T+=this[g+Y]*L;return L*=128,T>=L&&(T-=Math.pow(2,8*b)),T},i.prototype.readIntBE=function(g,b,N){g=g>>>0,b=b>>>0,N||J(g,b,this.length);let T=b,L=1,Y=this[g+--T];for(;T>0&&(L*=256);)Y+=this[g+--T]*L;return L*=128,Y>=L&&(Y-=Math.pow(2,8*b)),Y},i.prototype.readInt8=function(g,b){return g=g>>>0,b||J(g,1,this.length),this[g]&128?(255-this[g]+1)*-1:this[g]},i.prototype.readInt16LE=function(g,b){g=g>>>0,b||J(g,2,this.length);let N=this[g]|this[g+1]<<8;return N&32768?N|4294901760:N},i.prototype.readInt16BE=function(g,b){g=g>>>0,b||J(g,2,this.length);let N=this[g+1]|this[g]<<8;return N&32768?N|4294901760:N},i.prototype.readInt32LE=function(g,b){return g=g>>>0,b||J(g,4,this.length),this[g]|this[g+1]<<8|this[g+2]<<16|this[g+3]<<24},i.prototype.readInt32BE=function(g,b){return g=g>>>0,b||J(g,4,this.length),this[g]<<24|this[g+1]<<16|this[g+2]<<8|this[g+3]},i.prototype.readBigInt64LE=de(function(g){g=g>>>0,O(g,"offset");let b=this[g],N=this[g+7];(b===void 0||N===void 0)&&te(g,this.length-8);let T=this[g+4]+this[g+5]*2**8+this[g+6]*2**16+(N<<24);return(BigInt(T)<<BigInt(32))+BigInt(b+this[++g]*2**8+this[++g]*2**16+this[++g]*2**24)}),i.prototype.readBigInt64BE=de(function(g){g=g>>>0,O(g,"offset");let b=this[g],N=this[g+7];(b===void 0||N===void 0)&&te(g,this.length-8);let T=(b<<24)+this[++g]*2**16+this[++g]*2**8+this[++g];return(BigInt(T)<<BigInt(32))+BigInt(this[++g]*2**24+this[++g]*2**16+this[++g]*2**8+N)}),i.prototype.readFloatLE=function(g,b){return g=g>>>0,b||J(g,4,this.length),r.read(this,g,!0,23,4)},i.prototype.readFloatBE=function(g,b){return g=g>>>0,b||J(g,4,this.length),r.read(this,g,!1,23,4)},i.prototype.readDoubleLE=function(g,b){return g=g>>>0,b||J(g,8,this.length),r.read(this,g,!0,52,8)},i.prototype.readDoubleBE=function(g,b){return g=g>>>0,b||J(g,8,this.length),r.read(this,g,!1,52,8)};function ie(g,b,N,T,L,Y){if(!i.isBuffer(g))throw new TypeError('"buffer" argument must be a Buffer instance');if(b>L||b<Y)throw new RangeError('"value" argument is out of bounds');if(N+T>g.length)throw new RangeError("Index out of range")}i.prototype.writeUintLE=i.prototype.writeUIntLE=function(g,b,N,T){if(g=+g,b=b>>>0,N=N>>>0,!T){let le=Math.pow(2,8*N)-1;ie(this,g,b,N,le,0)}let L=1,Y=0;for(this[b]=g&255;++Y<N&&(L*=256);)this[b+Y]=g/L&255;return b+N},i.prototype.writeUintBE=i.prototype.writeUIntBE=function(g,b,N,T){if(g=+g,b=b>>>0,N=N>>>0,!T){let le=Math.pow(2,8*N)-1;ie(this,g,b,N,le,0)}let L=N-1,Y=1;for(this[b+L]=g&255;--L>=0&&(Y*=256);)this[b+L]=g/Y&255;return b+N},i.prototype.writeUint8=i.prototype.writeUInt8=function(g,b,N){return g=+g,b=b>>>0,N||ie(this,g,b,1,255,0),this[b]=g&255,b+1},i.prototype.writeUint16LE=i.prototype.writeUInt16LE=function(g,b,N){return g=+g,b=b>>>0,N||ie(this,g,b,2,65535,0),this[b]=g&255,this[b+1]=g>>>8,b+2},i.prototype.writeUint16BE=i.prototype.writeUInt16BE=function(g,b,N){return g=+g,b=b>>>0,N||ie(this,g,b,2,65535,0),this[b]=g>>>8,this[b+1]=g&255,b+2},i.prototype.writeUint32LE=i.prototype.writeUInt32LE=function(g,b,N){return g=+g,b=b>>>0,N||ie(this,g,b,4,4294967295,0),this[b+3]=g>>>24,this[b+2]=g>>>16,this[b+1]=g>>>8,this[b]=g&255,b+4},i.prototype.writeUint32BE=i.prototype.writeUInt32BE=function(g,b,N){return g=+g,b=b>>>0,N||ie(this,g,b,4,4294967295,0),this[b]=g>>>24,this[b+1]=g>>>16,this[b+2]=g>>>8,this[b+3]=g&255,b+4};function R(g,b,N,T,L){re(b,T,L,g,N,7);let Y=Number(b&BigInt(4294967295));g[N++]=Y,Y=Y>>8,g[N++]=Y,Y=Y>>8,g[N++]=Y,Y=Y>>8,g[N++]=Y;let le=Number(b>>BigInt(32)&BigInt(4294967295));return g[N++]=le,le=le>>8,g[N++]=le,le=le>>8,g[N++]=le,le=le>>8,g[N++]=le,N}function Z(g,b,N,T,L){re(b,T,L,g,N,7);let Y=Number(b&BigInt(4294967295));g[N+7]=Y,Y=Y>>8,g[N+6]=Y,Y=Y>>8,g[N+5]=Y,Y=Y>>8,g[N+4]=Y;let le=Number(b>>BigInt(32)&BigInt(4294967295));return g[N+3]=le,le=le>>8,g[N+2]=le,le=le>>8,g[N+1]=le,le=le>>8,g[N]=le,N+8}i.prototype.writeBigUInt64LE=de(function(g,b=0){return R(this,g,b,BigInt(0),BigInt("0xffffffffffffffff"))}),i.prototype.writeBigUInt64BE=de(function(g,b=0){return Z(this,g,b,BigInt(0),BigInt("0xffffffffffffffff"))}),i.prototype.writeIntLE=function(g,b,N,T){if(g=+g,b=b>>>0,!T){let B=Math.pow(2,8*N-1);ie(this,g,b,N,B-1,-B)}let L=0,Y=1,le=0;for(this[b]=g&255;++L<N&&(Y*=256);)g<0&&le===0&&this[b+L-1]!==0&&(le=1),this[b+L]=(g/Y>>0)-le&255;return b+N},i.prototype.writeIntBE=function(g,b,N,T){if(g=+g,b=b>>>0,!T){let B=Math.pow(2,8*N-1);ie(this,g,b,N,B-1,-B)}let L=N-1,Y=1,le=0;for(this[b+L]=g&255;--L>=0&&(Y*=256);)g<0&&le===0&&this[b+L+1]!==0&&(le=1),this[b+L]=(g/Y>>0)-le&255;return b+N},i.prototype.writeInt8=function(g,b,N){return g=+g,b=b>>>0,N||ie(this,g,b,1,127,-128),g<0&&(g=255+g+1),this[b]=g&255,b+1},i.prototype.writeInt16LE=function(g,b,N){return g=+g,b=b>>>0,N||ie(this,g,b,2,32767,-32768),this[b]=g&255,this[b+1]=g>>>8,b+2},i.prototype.writeInt16BE=function(g,b,N){return g=+g,b=b>>>0,N||ie(this,g,b,2,32767,-32768),this[b]=g>>>8,this[b+1]=g&255,b+2},i.prototype.writeInt32LE=function(g,b,N){return g=+g,b=b>>>0,N||ie(this,g,b,4,2147483647,-2147483648),this[b]=g&255,this[b+1]=g>>>8,this[b+2]=g>>>16,this[b+3]=g>>>24,b+4},i.prototype.writeInt32BE=function(g,b,N){return g=+g,b=b>>>0,N||ie(this,g,b,4,2147483647,-2147483648),g<0&&(g=4294967295+g+1),this[b]=g>>>24,this[b+1]=g>>>16,this[b+2]=g>>>8,this[b+3]=g&255,b+4},i.prototype.writeBigInt64LE=de(function(g,b=0){return R(this,g,b,-BigInt("0x8000000000000000"),BigInt("0x7fffffffffffffff"))}),i.prototype.writeBigInt64BE=de(function(g,b=0){return Z(this,g,b,-BigInt("0x8000000000000000"),BigInt("0x7fffffffffffffff"))});function ge(g,b,N,T,L,Y){if(N+T>g.length)throw new RangeError("Index out of range");if(N<0)throw new RangeError("Index out of range")}function G(g,b,N,T,L){return b=+b,N=N>>>0,L||ge(g,b,N,4),r.write(g,b,N,T,23,4),N+4}i.prototype.writeFloatLE=function(g,b,N){return G(this,g,b,!0,N)},i.prototype.writeFloatBE=function(g,b,N){return G(this,g,b,!1,N)};function Ve(g,b,N,T,L){return b=+b,N=N>>>0,L||ge(g,b,N,8),r.write(g,b,N,T,52,8),N+8}i.prototype.writeDoubleLE=function(g,b,N){return Ve(this,g,b,!0,N)},i.prototype.writeDoubleBE=function(g,b,N){return Ve(this,g,b,!1,N)},i.prototype.copy=function(g,b,N,T){if(!i.isBuffer(g))throw new TypeError("argument should be a Buffer");if(N||(N=0),!T&&T!==0&&(T=this.length),b>=g.length&&(b=g.length),b||(b=0),T>0&&T<N&&(T=N),T===N||g.length===0||this.length===0)return 0;if(b<0)throw new RangeError("targetStart out of bounds");if(N<0||N>=this.length)throw new RangeError("Index out of range");if(T<0)throw new RangeError("sourceEnd out of bounds");T>this.length&&(T=this.length),g.length-b<T-N&&(T=g.length-b+N);let L=T-N;return this===g&&typeof Uint8Array.prototype.copyWithin=="function"?this.copyWithin(b,N,T):Uint8Array.prototype.set.call(g,this.subarray(N,T),b),L},i.prototype.fill=function(g,b,N,T){if(typeof g=="string"){if(typeof b=="string"?(T=b,b=0,N=this.length):typeof N=="string"&&(T=N,N=this.length),T!==void 0&&typeof T!="string")throw new TypeError("encoding must be a string");if(typeof T=="string"&&!i.isEncoding(T))throw new TypeError("Unknown encoding: "+T);if(g.length===1){let Y=g.charCodeAt(0);(T==="utf8"&&Y<128||T==="latin1")&&(g=Y)}}else typeof g=="number"?g=g&255:typeof g=="boolean"&&(g=Number(g));if(b<0||this.length<b||this.length<N)throw new RangeError("Out of range index");if(N<=b)return this;b=b>>>0,N=N===void 0?this.length:N>>>0,g||(g=0);let L;if(typeof g=="number")for(L=b;L<N;++L)this[L]=g;else{let Y=i.isBuffer(g)?g:i.from(g,T),le=Y.length;if(le===0)throw new TypeError('The value "'+g+'" is invalid for argument "value"');for(L=0;L<N-b;++L)this[L+b]=Y[L%le]}return this};let ee={};function q(g,b,N){ee[g]=class extends N{constructor(){super(),Object.defineProperty(this,"message",{value:b.apply(this,arguments),writable:!0,configurable:!0}),this.name=`${this.name} [${g}]`,this.stack,delete this.name}get code(){return g}set code(T){Object.defineProperty(this,"code",{configurable:!0,enumerable:!0,value:T,writable:!0})}toString(){return`${this.name} [${g}]: ${this.message}`}}}q("ERR_BUFFER_OUT_OF_BOUNDS",function(g){return g?`${g} is outside of buffer bounds`:"Attempt to access memory outside buffer bounds"},RangeError),q("ERR_INVALID_ARG_TYPE",function(g,b){return`The "${g}" argument must be of type number. Received type ${typeof b}`},TypeError),q("ERR_OUT_OF_RANGE",function(g,b,N){let T=`The value of "${g}" is out of range.`,L=N;return Number.isInteger(N)&&Math.abs(N)>2**32?L=ce(String(N)):typeof N=="bigint"&&(L=String(N),(N>BigInt(2)**BigInt(32)||N<-(BigInt(2)**BigInt(32)))&&(L=ce(L)),L+="n"),T+=` It must be ${b}. Received ${L}`,T},RangeError);function ce(g){let b="",N=g.length,T=g[0]==="-"?1:0;for(;N>=T+4;N-=3)b=`_${g.slice(N-3,N)}${b}`;return`${g.slice(0,N)}${b}`}function X(g,b,N){O(b,"offset"),(g[b]===void 0||g[b+N]===void 0)&&te(b,g.length-(N+1))}function re(g,b,N,T,L,Y){if(g>N||g<b){let le=typeof b=="bigint"?"n":"",B;throw b===0||b===BigInt(0)?B=`>= 0${le} and < 2${le} ** ${(Y+1)*8}${le}`:B=`>= -(2${le} ** ${(Y+1)*8-1}${le}) and < 2 ** ${(Y+1)*8-1}${le}`,new ee.ERR_OUT_OF_RANGE("value",B,g)}X(T,L,Y)}function O(g,b){if(typeof g!="number")throw new ee.ERR_INVALID_ARG_TYPE(b,"number",g)}function te(g,b,N){throw Math.floor(g)!==g?(O(g,N),new ee.ERR_OUT_OF_RANGE("offset","an integer",g)):b<0?new ee.ERR_BUFFER_OUT_OF_BOUNDS:new ee.ERR_OUT_OF_RANGE("offset",`>= 0 and <= ${b}`,g)}let se=/[^+/0-9A-Za-z-_]/g;function j(g){if(g=g.split("=")[0],g=g.trim().replace(se,""),g.length<2)return"";for(;g.length%4!==0;)g=g+"=";return g}function K(g,b){b=b||1/0;let N,T=g.length,L=null,Y=[];for(let le=0;le<T;++le){if(N=g.charCodeAt(le),N>55295&&N<57344){if(!L){if(N>56319){(b-=3)>-1&&Y.push(239,191,189);continue}else if(le+1===T){(b-=3)>-1&&Y.push(239,191,189);continue}L=N;continue}if(N<56320){(b-=3)>-1&&Y.push(239,191,189),L=N;continue}N=(L-55296<<10|N-56320)+65536}else L&&(b-=3)>-1&&Y.push(239,191,189);if(L=null,N<128){if((b-=1)<0)break;Y.push(N)}else if(N<2048){if((b-=2)<0)break;Y.push(N>>6|192,N&63|128)}else if(N<65536){if((b-=3)<0)break;Y.push(N>>12|224,N>>6&63|128,N&63|128)}else if(N<1114112){if((b-=4)<0)break;Y.push(N>>18|240,N>>12&63|128,N>>6&63|128,N&63|128)}else throw new Error("Invalid code point")}return Y}function ae(g){let b=[];for(let N=0;N<g.length;++N)b.push(g.charCodeAt(N)&255);return b}function he(g,b){let N,T,L,Y=[];for(let le=0;le<g.length&&!((b-=2)<0);++le)N=g.charCodeAt(le),T=N>>8,L=N%256,Y.push(L),Y.push(T);return Y}function pe(g){return u.toByteArray(j(g))}function ve(g,b,N,T){let L;for(L=0;L<T&&!(L+N>=b.length||L>=g.length);++L)b[L+N]=g[L];return L}function Q(g,b){return g instanceof b||g!=null&&g.constructor!=null&&g.constructor.name!=null&&g.constructor.name===b.name}function ye(g){return g!==g}let ke=function(){let g="0123456789abcdef",b=new Array(256);for(let N=0;N<16;++N){let T=N*16;for(let L=0;L<16;++L)b[T+L]=g[N]+g[L]}return b}();function de(g){return typeof BigInt>"u"?Ae:g}function Ae(){throw new Error("BigInt not supported")}return $t}var rr,$n,pr,Tn,$t,Bn,ly=dt(()=>{be(),Ee(),we(),rr={},$n=!1,pr={},Tn=!1,$t={},Bn=!1}),rt={};tr(rt,{Buffer:()=>Cr,INSPECT_MAX_BYTES:()=>Bs,default:()=>kt,kMaxLength:()=>Ds});var kt,Cr,Bs,Ds,ot=dt(()=>{be(),Ee(),we(),ly(),kt=ay(),kt.Buffer,kt.SlowBuffer,kt.INSPECT_MAX_BYTES,kt.kMaxLength,Cr=kt.Buffer,Bs=kt.INSPECT_MAX_BYTES,Ds=kt.kMaxLength}),Ee=dt(()=>{ot()}),Je=_e((u,r)=>{be(),Ee(),we();var t=class extends Error{constructor(l){if(!Array.isArray(l))throw new TypeError(`Expected input to be an Array, got ${typeof l}`);let n="";for(let o=0;o<l.length;o++)n+=` ${l[o].stack}
7
+ `;super(n),this.name="AggregateError",this.errors=l}};r.exports={AggregateError:t,ArrayIsArray(l){return Array.isArray(l)},ArrayPrototypeIncludes(l,n){return l.includes(n)},ArrayPrototypeIndexOf(l,n){return l.indexOf(n)},ArrayPrototypeJoin(l,n){return l.join(n)},ArrayPrototypeMap(l,n){return l.map(n)},ArrayPrototypePop(l,n){return l.pop(n)},ArrayPrototypePush(l,n){return l.push(n)},ArrayPrototypeSlice(l,n,o){return l.slice(n,o)},Error,FunctionPrototypeCall(l,n,...o){return l.call(n,...o)},FunctionPrototypeSymbolHasInstance(l,n){return Function.prototype[Symbol.hasInstance].call(l,n)},MathFloor:Math.floor,Number,NumberIsInteger:Number.isInteger,NumberIsNaN:Number.isNaN,NumberMAX_SAFE_INTEGER:Number.MAX_SAFE_INTEGER,NumberMIN_SAFE_INTEGER:Number.MIN_SAFE_INTEGER,NumberParseInt:Number.parseInt,ObjectDefineProperties(l,n){return Object.defineProperties(l,n)},ObjectDefineProperty(l,n,o){return Object.defineProperty(l,n,o)},ObjectGetOwnPropertyDescriptor(l,n){return Object.getOwnPropertyDescriptor(l,n)},ObjectKeys(l){return Object.keys(l)},ObjectSetPrototypeOf(l,n){return Object.setPrototypeOf(l,n)},Promise,PromisePrototypeCatch(l,n){return l.catch(n)},PromisePrototypeThen(l,n,o){return l.then(n,o)},PromiseReject(l){return Promise.reject(l)},PromiseResolve(l){return Promise.resolve(l)},ReflectApply:Reflect.apply,RegExpPrototypeTest(l,n){return l.test(n)},SafeSet:Set,String,StringPrototypeSlice(l,n,o){return l.slice(n,o)},StringPrototypeToLowerCase(l){return l.toLowerCase()},StringPrototypeToUpperCase(l){return l.toUpperCase()},StringPrototypeTrim(l){return l.trim()},Symbol,SymbolFor:Symbol.for,SymbolAsyncIterator:Symbol.asyncIterator,SymbolHasInstance:Symbol.hasInstance,SymbolIterator:Symbol.iterator,SymbolDispose:Symbol.dispose||Symbol("Symbol.dispose"),SymbolAsyncDispose:Symbol.asyncDispose||Symbol("Symbol.asyncDispose"),TypedArrayPrototypeSet(l,n,o){return l.set(n,o)},Boolean,Uint8Array}}),Ps=_e((u,r)=>{be(),Ee(),we(),r.exports={format(t,...l){return t.replace(/%([sdifj])/g,function(...[n,o]){let i=l.shift();return o==="f"?i.toFixed(6):o==="j"?JSON.stringify(i):o==="s"&&typeof i=="object"?`${i.constructor!==Object?i.constructor.name:""} {}`.trim():i.toString()})},inspect(t){switch(typeof t){case"string":if(t.includes("'"))if(t.includes('"')){if(!t.includes("`")&&!t.includes("${"))return`\`${t}\``}else return`"${t}"`;return`'${t}'`;case"number":return isNaN(t)?"NaN":Object.is(t,-0)?String(t):t;case"bigint":return`${String(t)}n`;case"boolean":case"undefined":return String(t);case"object":return"{}"}}}}),lt=_e((u,r)=>{be(),Ee(),we();var{format:t,inspect:l}=Ps(),{AggregateError:n}=Je(),o=globalThis.AggregateError||n,i=Symbol("kIsNodeError"),a=["string","function","number","object","Function","Object","boolean","bigint","symbol"],s=/^([A-Z][a-z0-9]*)+$/,c="__node_internal_",d={};function f(y,k){if(!y)throw new d.ERR_INTERNAL_ASSERTION(k)}function m(y){let k="",_=y.length,E=y[0]==="-"?1:0;for(;_>=E+4;_-=3)k=`_${y.slice(_-3,_)}${k}`;return`${y.slice(0,_)}${k}`}function h(y,k,_){if(typeof k=="function")return f(k.length<=_.length,`Code: ${y}; The provided arguments length (${_.length}) does not match the required ones (${k.length}).`),k(..._);let E=(k.match(/%[dfijoOs]/g)||[]).length;return f(E===_.length,`Code: ${y}; The provided arguments length (${_.length}) does not match the required ones (${E}).`),_.length===0?k:t(k,..._)}function p(y,k,_){_||(_=Error);class E extends _{constructor(...x){super(h(y,k,x))}toString(){return`${this.name} [${y}]: ${this.message}`}}Object.defineProperties(E.prototype,{name:{value:_.name,writable:!0,enumerable:!1,configurable:!0},toString:{value(){return`${this.name} [${y}]: ${this.message}`},writable:!0,enumerable:!1,configurable:!0}}),E.prototype.code=y,E.prototype[i]=!0,d[y]=E}function w(y){let k=c+y.name;return Object.defineProperty(y,"name",{value:k}),y}function v(y,k){if(y&&k&&y!==k){if(Array.isArray(k.errors))return k.errors.push(y),k;let _=new o([k,y],k.message);return _.code=k.code,_}return y||k}var S=class extends Error{constructor(y="The operation was aborted",k=void 0){if(k!==void 0&&typeof k!="object")throw new d.ERR_INVALID_ARG_TYPE("options","Object",k);super(y,k),this.code="ABORT_ERR",this.name="AbortError"}};p("ERR_ASSERTION","%s",Error),p("ERR_INVALID_ARG_TYPE",(y,k,_)=>{f(typeof y=="string","'name' must be a string"),Array.isArray(k)||(k=[k]);let E="The ";y.endsWith(" argument")?E+=`${y} `:E+=`"${y}" ${y.includes(".")?"property":"argument"} `,E+="must be ";let I=[],x=[],V=[];for(let C of k)f(typeof C=="string","All expected entries have to be of type string"),a.includes(C)?I.push(C.toLowerCase()):s.test(C)?x.push(C):(f(C!=="object",'The value "object" should be written as "Object"'),V.push(C));if(x.length>0){let C=I.indexOf("object");C!==-1&&(I.splice(I,C,1),x.push("Object"))}if(I.length>0){switch(I.length){case 1:E+=`of type ${I[0]}`;break;case 2:E+=`one of type ${I[0]} or ${I[1]}`;break;default:{let C=I.pop();E+=`one of type ${I.join(", ")}, or ${C}`}}(x.length>0||V.length>0)&&(E+=" or ")}if(x.length>0){switch(x.length){case 1:E+=`an instance of ${x[0]}`;break;case 2:E+=`an instance of ${x[0]} or ${x[1]}`;break;default:{let C=x.pop();E+=`an instance of ${x.join(", ")}, or ${C}`}}V.length>0&&(E+=" or ")}switch(V.length){case 0:break;case 1:V[0].toLowerCase()!==V[0]&&(E+="an "),E+=`${V[0]}`;break;case 2:E+=`one of ${V[0]} or ${V[1]}`;break;default:{let C=V.pop();E+=`one of ${V.join(", ")}, or ${C}`}}if(_==null)E+=`. Received ${_}`;else if(typeof _=="function"&&_.name)E+=`. Received function ${_.name}`;else if(typeof _=="object"){var $;if(($=_.constructor)!==null&&$!==void 0&&$.name)E+=`. Received an instance of ${_.constructor.name}`;else{let C=l(_,{depth:-1});E+=`. Received ${C}`}}else{let C=l(_,{colors:!1});C.length>25&&(C=`${C.slice(0,25)}...`),E+=`. Received type ${typeof _} (${C})`}return E},TypeError),p("ERR_INVALID_ARG_VALUE",(y,k,_="is invalid")=>{let E=l(k);return E.length>128&&(E=E.slice(0,128)+"..."),`The ${y.includes(".")?"property":"argument"} '${y}' ${_}. Received ${E}`},TypeError),p("ERR_INVALID_RETURN_VALUE",(y,k,_)=>{var E;let I=_!=null&&(E=_.constructor)!==null&&E!==void 0&&E.name?`instance of ${_.constructor.name}`:`type ${typeof _}`;return`Expected ${y} to be returned from the "${k}" function but got ${I}.`},TypeError),p("ERR_MISSING_ARGS",(...y)=>{f(y.length>0,"At least one arg needs to be specified");let k,_=y.length;switch(y=(Array.isArray(y)?y:[y]).map(E=>`"${E}"`).join(" or "),_){case 1:k+=`The ${y[0]} argument`;break;case 2:k+=`The ${y[0]} and ${y[1]} arguments`;break;default:{let E=y.pop();k+=`The ${y.join(", ")}, and ${E} arguments`}break}return`${k} must be specified`},TypeError),p("ERR_OUT_OF_RANGE",(y,k,_)=>{f(k,'Missing "range" argument');let E;if(Number.isInteger(_)&&Math.abs(_)>2**32)E=m(String(_));else if(typeof _=="bigint"){E=String(_);let I=BigInt(2)**BigInt(32);(_>I||_<-I)&&(E=m(E)),E+="n"}else E=l(_);return`The value of "${y}" is out of range. It must be ${k}. Received ${E}`},RangeError),p("ERR_MULTIPLE_CALLBACK","Callback called multiple times",Error),p("ERR_METHOD_NOT_IMPLEMENTED","The %s method is not implemented",Error),p("ERR_STREAM_ALREADY_FINISHED","Cannot call %s after a stream was finished",Error),p("ERR_STREAM_CANNOT_PIPE","Cannot pipe, not readable",Error),p("ERR_STREAM_DESTROYED","Cannot call %s after a stream was destroyed",Error),p("ERR_STREAM_NULL_VALUES","May not write null values to stream",TypeError),p("ERR_STREAM_PREMATURE_CLOSE","Premature close",Error),p("ERR_STREAM_PUSH_AFTER_EOF","stream.push() after EOF",Error),p("ERR_STREAM_UNSHIFT_AFTER_END_EVENT","stream.unshift() after end event",Error),p("ERR_STREAM_WRITE_AFTER_END","write after end",Error),p("ERR_UNKNOWN_ENCODING","Unknown encoding: %s",TypeError),r.exports={AbortError:S,aggregateTwoErrors:w(v),hideStackFrames:w,codes:d}}),hr=_e((u,r)=>{be(),Ee(),we();var{AbortController:t,AbortSignal:l}=typeof self<"u"?self:typeof window<"u"?window:void 0;r.exports=t,r.exports.AbortSignal=l,r.exports.default=t}),Tt={};tr(Tt,{EventEmitter:()=>Os,default:()=>or,defaultMaxListeners:()=>Ms,init:()=>Rs,listenerCount:()=>js,on:()=>Ls,once:()=>Us});function cy(){if(Dn)return mr;Dn=!0;var u=typeof Reflect=="object"?Reflect:null,r=u&&typeof u.apply=="function"?u.apply:function(_,E,I){return Function.prototype.apply.call(_,E,I)},t;u&&typeof u.ownKeys=="function"?t=u.ownKeys:Object.getOwnPropertySymbols?t=function(_){return Object.getOwnPropertyNames(_).concat(Object.getOwnPropertySymbols(_))}:t=function(_){return Object.getOwnPropertyNames(_)};function l(_){console&&console.warn&&console.warn(_)}var n=Number.isNaN||function(_){return _!==_};function o(){o.init.call(this)}mr=o,mr.once=S,o.EventEmitter=o,o.prototype._events=void 0,o.prototype._eventsCount=0,o.prototype._maxListeners=void 0;var i=10;function a(_){if(typeof _!="function")throw new TypeError('The "listener" argument must be of type Function. Received type '+typeof _)}Object.defineProperty(o,"defaultMaxListeners",{enumerable:!0,get:function(){return i},set:function(_){if(typeof _!="number"||_<0||n(_))throw new RangeError('The value of "defaultMaxListeners" is out of range. It must be a non-negative number. Received '+_+".");i=_}}),o.init=function(){(this._events===void 0||this._events===Object.getPrototypeOf(this)._events)&&(this._events=Object.create(null),this._eventsCount=0),this._maxListeners=this._maxListeners||void 0},o.prototype.setMaxListeners=function(_){if(typeof _!="number"||_<0||n(_))throw new RangeError('The value of "n" is out of range. It must be a non-negative number. Received '+_+".");return this._maxListeners=_,this};function s(_){return _._maxListeners===void 0?o.defaultMaxListeners:_._maxListeners}o.prototype.getMaxListeners=function(){return s(this)},o.prototype.emit=function(_){for(var E=[],I=1;I<arguments.length;I++)E.push(arguments[I]);var x=_==="error",V=this._events;if(V!==void 0)x=x&&V.error===void 0;else if(!x)return!1;if(x){var $;if(E.length>0&&($=E[0]),$ instanceof Error)throw $;var C=new Error("Unhandled error."+($?" ("+$.message+")":""));throw C.context=$,C}var D=V[_];if(D===void 0)return!1;if(typeof D=="function")r(D,this,E);else for(var A=D.length,U=p(D,A),I=0;I<A;++I)r(U[I],this,E);return!0};function c(_,E,I,x){var V,$,C;if(a(I),$=_._events,$===void 0?($=_._events=Object.create(null),_._eventsCount=0):($.newListener!==void 0&&(_.emit("newListener",E,I.listener?I.listener:I),$=_._events),C=$[E]),C===void 0)C=$[E]=I,++_._eventsCount;else if(typeof C=="function"?C=$[E]=x?[I,C]:[C,I]:x?C.unshift(I):C.push(I),V=s(_),V>0&&C.length>V&&!C.warned){C.warned=!0;var D=new Error("Possible EventEmitter memory leak detected. "+C.length+" "+String(E)+" listeners added. Use emitter.setMaxListeners() to increase limit");D.name="MaxListenersExceededWarning",D.emitter=_,D.type=E,D.count=C.length,l(D)}return _}o.prototype.addListener=function(_,E){return c(this,_,E,!1)},o.prototype.on=o.prototype.addListener,o.prototype.prependListener=function(_,E){return c(this,_,E,!0)};function d(){if(!this.fired)return this.target.removeListener(this.type,this.wrapFn),this.fired=!0,arguments.length===0?this.listener.call(this.target):this.listener.apply(this.target,arguments)}function f(_,E,I){var x={fired:!1,wrapFn:void 0,target:_,type:E,listener:I},V=d.bind(x);return V.listener=I,x.wrapFn=V,V}o.prototype.once=function(_,E){return a(E),this.on(_,f(this,_,E)),this},o.prototype.prependOnceListener=function(_,E){return a(E),this.prependListener(_,f(this,_,E)),this},o.prototype.removeListener=function(_,E){var I,x,V,$,C;if(a(E),x=this._events,x===void 0)return this;if(I=x[_],I===void 0)return this;if(I===E||I.listener===E)--this._eventsCount===0?this._events=Object.create(null):(delete x[_],x.removeListener&&this.emit("removeListener",_,I.listener||E));else if(typeof I!="function"){for(V=-1,$=I.length-1;$>=0;$--)if(I[$]===E||I[$].listener===E){C=I[$].listener,V=$;break}if(V<0)return this;V===0?I.shift():w(I,V),I.length===1&&(x[_]=I[0]),x.removeListener!==void 0&&this.emit("removeListener",_,C||E)}return this},o.prototype.off=o.prototype.removeListener,o.prototype.removeAllListeners=function(_){var E,I,x;if(I=this._events,I===void 0)return this;if(I.removeListener===void 0)return arguments.length===0?(this._events=Object.create(null),this._eventsCount=0):I[_]!==void 0&&(--this._eventsCount===0?this._events=Object.create(null):delete I[_]),this;if(arguments.length===0){var V=Object.keys(I),$;for(x=0;x<V.length;++x)$=V[x],$!=="removeListener"&&this.removeAllListeners($);return this.removeAllListeners("removeListener"),this._events=Object.create(null),this._eventsCount=0,this}if(E=I[_],typeof E=="function")this.removeListener(_,E);else if(E!==void 0)for(x=E.length-1;x>=0;x--)this.removeListener(_,E[x]);return this};function m(_,E,I){var x=_._events;if(x===void 0)return[];var V=x[E];return V===void 0?[]:typeof V=="function"?I?[V.listener||V]:[V]:I?v(V):p(V,V.length)}o.prototype.listeners=function(_){return m(this,_,!0)},o.prototype.rawListeners=function(_){return m(this,_,!1)},o.listenerCount=function(_,E){return typeof _.listenerCount=="function"?_.listenerCount(E):h.call(_,E)},o.prototype.listenerCount=h;function h(_){var E=this._events;if(E!==void 0){var I=E[_];if(typeof I=="function")return 1;if(I!==void 0)return I.length}return 0}o.prototype.eventNames=function(){return this._eventsCount>0?t(this._events):[]};function p(_,E){for(var I=new Array(E),x=0;x<E;++x)I[x]=_[x];return I}function w(_,E){for(;E+1<_.length;E++)_[E]=_[E+1];_.pop()}function v(_){for(var E=new Array(_.length),I=0;I<E.length;++I)E[I]=_[I].listener||_[I];return E}function S(_,E){return new Promise(function(I,x){function V(C){_.removeListener(E,$),x(C)}function $(){typeof _.removeListener=="function"&&_.removeListener("error",V),I([].slice.call(arguments))}k(_,E,$,{once:!0}),E!=="error"&&y(_,V,{once:!0})})}function y(_,E,I){typeof _.on=="function"&&k(_,"error",E,I)}function k(_,E,I,x){if(typeof _.on=="function")x.once?_.once(E,I):_.on(E,I);else if(typeof _.addEventListener=="function")_.addEventListener(E,function V($){x.once&&_.removeEventListener(E,V),I($)});else throw new TypeError('The "emitter" argument must be of type EventEmitter. Received type '+typeof _)}return mr}var mr,Dn,or,Os,Ms,Rs,js,Ls,Us,Gt=dt(()=>{be(),Ee(),we(),mr={},Dn=!1,or=cy(),or.once,or.once=function(u,r){return new Promise((t,l)=>{function n(...i){o!==void 0&&u.removeListener("error",o),t(i)}let o;r!=="error"&&(o=i=>{u.removeListener(name,n),l(i)},u.once("error",o)),u.once(r,n)})},or.on=function(u,r){let t=[],l=[],n=null,o=!1,i={async next(){let c=t.shift();if(c)return createIterResult(c,!1);if(n){let d=Promise.reject(n);return n=null,d}return o?createIterResult(void 0,!0):new Promise((d,f)=>l.push({resolve:d,reject:f}))},async return(){u.removeListener(r,a),u.removeListener("error",s),o=!0;for(let c of l)c.resolve(createIterResult(void 0,!0));return createIterResult(void 0,!0)},throw(c){n=c,u.removeListener(r,a),u.removeListener("error",s)},[Symbol.asyncIterator](){return this}};return u.on(r,a),u.on("error",s),i;function a(...c){let d=l.shift();d?d.resolve(createIterResult(c,!1)):t.push(c)}function s(c){o=!0;let d=l.shift();d?d.reject(c):n=c,i.return()}},{EventEmitter:Os,defaultMaxListeners:Ms,init:Rs,listenerCount:js,on:Ls,once:Us}=or}),ut=_e((u,r)=>{be(),Ee(),we();var t=(ot(),We(rt)),{format:l,inspect:n}=Ps(),{codes:{ERR_INVALID_ARG_TYPE:o}}=lt(),{kResistStopPropagation:i,AggregateError:a,SymbolDispose:s}=Je(),c=globalThis.AbortSignal||hr().AbortSignal,d=globalThis.AbortController||hr().AbortController,f=Object.getPrototypeOf(async function(){}).constructor,m=globalThis.Blob||t.Blob,h=typeof m<"u"?function(v){return v instanceof m}:function(v){return!1},p=(v,S)=>{if(v!==void 0&&(v===null||typeof v!="object"||!("aborted"in v)))throw new o(S,"AbortSignal",v)},w=(v,S)=>{if(typeof v!="function")throw new o(S,"Function",v)};r.exports={AggregateError:a,kEmptyObject:Object.freeze({}),once(v){let S=!1;return function(...y){S||(S=!0,v.apply(this,y))}},createDeferredPromise:function(){let v,S;return{promise:new Promise((y,k)=>{v=y,S=k}),resolve:v,reject:S}},promisify(v){return new Promise((S,y)=>{v((k,..._)=>k?y(k):S(..._))})},debuglog(){return function(){}},format:l,inspect:n,types:{isAsyncFunction(v){return v instanceof f},isArrayBufferView(v){return ArrayBuffer.isView(v)}},isBlob:h,deprecate(v,S){return v},addAbortListener:(Gt(),We(Tt)).addAbortListener||function(v,S){if(v===void 0)throw new o("signal","AbortSignal",v);p(v,"signal"),w(S,"listener");let y;return v.aborted?queueMicrotask(()=>S()):(v.addEventListener("abort",S,{__proto__:null,once:!0,[i]:!0}),y=()=>{v.removeEventListener("abort",S)}),{__proto__:null,[s](){var k;(k=y)===null||k===void 0||k()}}},AbortSignalAny:c.any||function(v){if(v.length===1)return v[0];let S=new d,y=()=>S.abort();return v.forEach(k=>{p(k,"signals"),k.addEventListener("abort",y,{once:!0})}),S.signal.addEventListener("abort",()=>{v.forEach(k=>k.removeEventListener("abort",y))},{once:!0}),S.signal}},r.exports.promisify.custom=Symbol.for("nodejs.util.promisify.custom")}),gr=_e((u,r)=>{be(),Ee(),we();var{ArrayIsArray:t,ArrayPrototypeIncludes:l,ArrayPrototypeJoin:n,ArrayPrototypeMap:o,NumberIsInteger:i,NumberIsNaN:a,NumberMAX_SAFE_INTEGER:s,NumberMIN_SAFE_INTEGER:c,NumberParseInt:d,ObjectPrototypeHasOwnProperty:f,RegExpPrototypeExec:m,String:h,StringPrototypeToUpperCase:p,StringPrototypeTrim:w}=Je(),{hideStackFrames:v,codes:{ERR_SOCKET_BAD_PORT:S,ERR_INVALID_ARG_TYPE:y,ERR_INVALID_ARG_VALUE:k,ERR_OUT_OF_RANGE:_,ERR_UNKNOWN_SIGNAL:E}}=lt(),{normalizeEncoding:I}=ut(),{isAsyncFunction:x,isArrayBufferView:V}=ut().types,$={};function C(Q){return Q===(Q|0)}function D(Q){return Q===Q>>>0}var A=/^[0-7]+$/,U="must be a 32-bit unsigned integer or an octal string";function H(Q,ye,ke){if(typeof Q>"u"&&(Q=ke),typeof Q=="string"){if(m(A,Q)===null)throw new k(ye,Q,U);Q=d(Q,8)}return ne(Q,ye),Q}var F=v((Q,ye,ke=c,de=s)=>{if(typeof Q!="number")throw new y(ye,"number",Q);if(!i(Q))throw new _(ye,"an integer",Q);if(Q<ke||Q>de)throw new _(ye,`>= ${ke} && <= ${de}`,Q)}),ue=v((Q,ye,ke=-2147483648,de=2147483647)=>{if(typeof Q!="number")throw new y(ye,"number",Q);if(!i(Q))throw new _(ye,"an integer",Q);if(Q<ke||Q>de)throw new _(ye,`>= ${ke} && <= ${de}`,Q)}),ne=v((Q,ye,ke=!1)=>{if(typeof Q!="number")throw new y(ye,"number",Q);if(!i(Q))throw new _(ye,"an integer",Q);let de=ke?1:0,Ae=4294967295;if(Q<de||Q>Ae)throw new _(ye,`>= ${de} && <= ${Ae}`,Q)});function oe(Q,ye){if(typeof Q!="string")throw new y(ye,"string",Q)}function fe(Q,ye,ke=void 0,de){if(typeof Q!="number")throw new y(ye,"number",Q);if(ke!=null&&Q<ke||de!=null&&Q>de||(ke!=null||de!=null)&&a(Q))throw new _(ye,`${ke!=null?`>= ${ke}`:""}${ke!=null&&de!=null?" && ":""}${de!=null?`<= ${de}`:""}`,Q)}var J=v((Q,ye,ke)=>{if(!l(ke,Q)){let de="must be one of: "+n(o(ke,Ae=>typeof Ae=="string"?`'${Ae}'`:h(Ae)),", ");throw new k(ye,Q,de)}});function ie(Q,ye){if(typeof Q!="boolean")throw new y(ye,"boolean",Q)}function R(Q,ye,ke){return Q==null||!f(Q,ye)?ke:Q[ye]}var Z=v((Q,ye,ke=null)=>{let de=R(ke,"allowArray",!1),Ae=R(ke,"allowFunction",!1);if(!R(ke,"nullable",!1)&&Q===null||!de&&t(Q)||typeof Q!="object"&&(!Ae||typeof Q!="function"))throw new y(ye,"Object",Q)}),ge=v((Q,ye)=>{if(Q!=null&&typeof Q!="object"&&typeof Q!="function")throw new y(ye,"a dictionary",Q)}),G=v((Q,ye,ke=0)=>{if(!t(Q))throw new y(ye,"Array",Q);if(Q.length<ke){let de=`must be longer than ${ke}`;throw new k(ye,Q,de)}});function Ve(Q,ye){G(Q,ye);for(let ke=0;ke<Q.length;ke++)oe(Q[ke],`${ye}[${ke}]`)}function ee(Q,ye){G(Q,ye);for(let ke=0;ke<Q.length;ke++)ie(Q[ke],`${ye}[${ke}]`)}function q(Q,ye){G(Q,ye);for(let ke=0;ke<Q.length;ke++){let de=Q[ke],Ae=`${ye}[${ke}]`;if(de==null)throw new y(Ae,"AbortSignal",de);te(de,Ae)}}function ce(Q,ye="signal"){if(oe(Q,ye),$[Q]===void 0)throw $[p(Q)]!==void 0?new E(Q+" (signals must use all capital letters)"):new E(Q)}var X=v((Q,ye="buffer")=>{if(!V(Q))throw new y(ye,["Buffer","TypedArray","DataView"],Q)});function re(Q,ye){let ke=I(ye),de=Q.length;if(ke==="hex"&&de%2!==0)throw new k("encoding",ye,`is invalid for data of length ${de}`)}function O(Q,ye="Port",ke=!0){if(typeof Q!="number"&&typeof Q!="string"||typeof Q=="string"&&w(Q).length===0||+Q!==+Q>>>0||Q>65535||Q===0&&!ke)throw new S(ye,Q,ke);return Q|0}var te=v((Q,ye)=>{if(Q!==void 0&&(Q===null||typeof Q!="object"||!("aborted"in Q)))throw new y(ye,"AbortSignal",Q)}),se=v((Q,ye)=>{if(typeof Q!="function")throw new y(ye,"Function",Q)}),j=v((Q,ye)=>{if(typeof Q!="function"||x(Q))throw new y(ye,"Function",Q)}),K=v((Q,ye)=>{if(Q!==void 0)throw new y(ye,"undefined",Q)});function ae(Q,ye,ke){if(!l(ke,Q))throw new y(ye,`('${n(ke,"|")}')`,Q)}var he=/^(?:<[^>]*>)(?:\s*;\s*[^;"\s]+(?:=(")?[^;"\s]*\1)?)*$/;function pe(Q,ye){if(typeof Q>"u"||!m(he,Q))throw new k(ye,Q,'must be an array or string of format "</styles.css>; rel=preload; as=style"')}function ve(Q){if(typeof Q=="string")return pe(Q,"hints"),Q;if(t(Q)){let ye=Q.length,ke="";if(ye===0)return ke;for(let de=0;de<ye;de++){let Ae=Q[de];pe(Ae,"hints"),ke+=Ae,de!==ye-1&&(ke+=", ")}return ke}throw new k("hints",Q,'must be an array or string of format "</styles.css>; rel=preload; as=style"')}r.exports={isInt32:C,isUint32:D,parseFileMode:H,validateArray:G,validateStringArray:Ve,validateBooleanArray:ee,validateAbortSignalArray:q,validateBoolean:ie,validateBuffer:X,validateDictionary:ge,validateEncoding:re,validateFunction:se,validateInt32:ue,validateInteger:F,validateNumber:fe,validateObject:Z,validateOneOf:J,validatePlainFunction:j,validatePort:O,validateSignalName:ce,validateString:oe,validateUint32:ne,validateUndefined:K,validateUnion:ae,validateAbortSignal:te,validateLinkHeaderValue:ve}}),Ht=_e((u,r)=>{be(),Ee(),we();var t=r.exports={},l,n;function o(){throw new Error("setTimeout has not been defined")}function i(){throw new Error("clearTimeout has not been defined")}(function(){try{typeof setTimeout=="function"?l=setTimeout:l=o}catch{l=o}try{typeof clearTimeout=="function"?n=clearTimeout:n=i}catch{n=i}})();function a(S){if(l===setTimeout)return setTimeout(S,0);if((l===o||!l)&&setTimeout)return l=setTimeout,setTimeout(S,0);try{return l(S,0)}catch{try{return l.call(null,S,0)}catch{return l.call(this,S,0)}}}function s(S){if(n===clearTimeout)return clearTimeout(S);if((n===i||!n)&&clearTimeout)return n=clearTimeout,clearTimeout(S);try{return n(S)}catch{try{return n.call(null,S)}catch{return n.call(this,S)}}}var c=[],d=!1,f,m=-1;function h(){!d||!f||(d=!1,f.length?c=f.concat(c):m=-1,c.length&&p())}function p(){if(!d){var S=a(h);d=!0;for(var y=c.length;y;){for(f=c,c=[];++m<y;)f&&f[m].run();m=-1,y=c.length}f=null,d=!1,s(S)}}t.nextTick=function(S){var y=new Array(arguments.length-1);if(arguments.length>1)for(var k=1;k<arguments.length;k++)y[k-1]=arguments[k];c.push(new w(S,y)),c.length===1&&!d&&a(p)};function w(S,y){this.fun=S,this.array=y}w.prototype.run=function(){this.fun.apply(null,this.array)},t.title="browser",t.browser=!0,t.env={},t.argv=[],t.version="",t.versions={};function v(){}t.on=v,t.addListener=v,t.once=v,t.off=v,t.removeListener=v,t.removeAllListeners=v,t.emit=v,t.prependListener=v,t.prependOnceListener=v,t.listeners=function(S){return[]},t.binding=function(S){throw new Error("process.binding is not supported")},t.cwd=function(){return"/"},t.chdir=function(S){throw new Error("process.chdir is not supported")},t.umask=function(){return 0}}),_t=_e((u,r)=>{be(),Ee(),we();var{SymbolAsyncIterator:t,SymbolIterator:l,SymbolFor:n}=Je(),o=n("nodejs.stream.destroyed"),i=n("nodejs.stream.errored"),a=n("nodejs.stream.readable"),s=n("nodejs.stream.writable"),c=n("nodejs.stream.disturbed"),d=n("nodejs.webstream.isClosedPromise"),f=n("nodejs.webstream.controllerErrorFunction");function m(R,Z=!1){var ge;return!!(R&&typeof R.pipe=="function"&&typeof R.on=="function"&&(!Z||typeof R.pause=="function"&&typeof R.resume=="function")&&(!R._writableState||((ge=R._readableState)===null||ge===void 0?void 0:ge.readable)!==!1)&&(!R._writableState||R._readableState))}function h(R){var Z;return!!(R&&typeof R.write=="function"&&typeof R.on=="function"&&(!R._readableState||((Z=R._writableState)===null||Z===void 0?void 0:Z.writable)!==!1))}function p(R){return!!(R&&typeof R.pipe=="function"&&R._readableState&&typeof R.on=="function"&&typeof R.write=="function")}function w(R){return R&&(R._readableState||R._writableState||typeof R.write=="function"&&typeof R.on=="function"||typeof R.pipe=="function"&&typeof R.on=="function")}function v(R){return!!(R&&!w(R)&&typeof R.pipeThrough=="function"&&typeof R.getReader=="function"&&typeof R.cancel=="function")}function S(R){return!!(R&&!w(R)&&typeof R.getWriter=="function"&&typeof R.abort=="function")}function y(R){return!!(R&&!w(R)&&typeof R.readable=="object"&&typeof R.writable=="object")}function k(R){return v(R)||S(R)||y(R)}function _(R,Z){return R==null?!1:Z===!0?typeof R[t]=="function":Z===!1?typeof R[l]=="function":typeof R[t]=="function"||typeof R[l]=="function"}function E(R){if(!w(R))return null;let Z=R._writableState,ge=R._readableState,G=Z||ge;return!!(R.destroyed||R[o]||G!=null&&G.destroyed)}function I(R){if(!h(R))return null;if(R.writableEnded===!0)return!0;let Z=R._writableState;return Z!=null&&Z.errored?!1:typeof(Z==null?void 0:Z.ended)!="boolean"?null:Z.ended}function x(R,Z){if(!h(R))return null;if(R.writableFinished===!0)return!0;let ge=R._writableState;return ge!=null&&ge.errored?!1:typeof(ge==null?void 0:ge.finished)!="boolean"?null:!!(ge.finished||Z===!1&&ge.ended===!0&&ge.length===0)}function V(R){if(!m(R))return null;if(R.readableEnded===!0)return!0;let Z=R._readableState;return!Z||Z.errored?!1:typeof(Z==null?void 0:Z.ended)!="boolean"?null:Z.ended}function $(R,Z){if(!m(R))return null;let ge=R._readableState;return ge!=null&&ge.errored?!1:typeof(ge==null?void 0:ge.endEmitted)!="boolean"?null:!!(ge.endEmitted||Z===!1&&ge.ended===!0&&ge.length===0)}function C(R){return R&&R[a]!=null?R[a]:typeof(R==null?void 0:R.readable)!="boolean"?null:E(R)?!1:m(R)&&R.readable&&!$(R)}function D(R){return R&&R[s]!=null?R[s]:typeof(R==null?void 0:R.writable)!="boolean"?null:E(R)?!1:h(R)&&R.writable&&!I(R)}function A(R,Z){return w(R)?E(R)?!0:!((Z==null?void 0:Z.readable)!==!1&&C(R)||(Z==null?void 0:Z.writable)!==!1&&D(R)):null}function U(R){var Z,ge;return w(R)?R.writableErrored?R.writableErrored:(Z=(ge=R._writableState)===null||ge===void 0?void 0:ge.errored)!==null&&Z!==void 0?Z:null:null}function H(R){var Z,ge;return w(R)?R.readableErrored?R.readableErrored:(Z=(ge=R._readableState)===null||ge===void 0?void 0:ge.errored)!==null&&Z!==void 0?Z:null:null}function F(R){if(!w(R))return null;if(typeof R.closed=="boolean")return R.closed;let Z=R._writableState,ge=R._readableState;return typeof(Z==null?void 0:Z.closed)=="boolean"||typeof(ge==null?void 0:ge.closed)=="boolean"?(Z==null?void 0:Z.closed)||(ge==null?void 0:ge.closed):typeof R._closed=="boolean"&&ue(R)?R._closed:null}function ue(R){return typeof R._closed=="boolean"&&typeof R._defaultKeepAlive=="boolean"&&typeof R._removedConnection=="boolean"&&typeof R._removedContLen=="boolean"}function ne(R){return typeof R._sent100=="boolean"&&ue(R)}function oe(R){var Z;return typeof R._consuming=="boolean"&&typeof R._dumped=="boolean"&&((Z=R.req)===null||Z===void 0?void 0:Z.upgradeOrConnect)===void 0}function fe(R){if(!w(R))return null;let Z=R._writableState,ge=R._readableState,G=Z||ge;return!G&&ne(R)||!!(G&&G.autoDestroy&&G.emitClose&&G.closed===!1)}function J(R){var Z;return!!(R&&((Z=R[c])!==null&&Z!==void 0?Z:R.readableDidRead||R.readableAborted))}function ie(R){var Z,ge,G,Ve,ee,q,ce,X,re,O;return!!(R&&((Z=(ge=(G=(Ve=(ee=(q=R[i])!==null&&q!==void 0?q:R.readableErrored)!==null&&ee!==void 0?ee:R.writableErrored)!==null&&Ve!==void 0?Ve:(ce=R._readableState)===null||ce===void 0?void 0:ce.errorEmitted)!==null&&G!==void 0?G:(X=R._writableState)===null||X===void 0?void 0:X.errorEmitted)!==null&&ge!==void 0?ge:(re=R._readableState)===null||re===void 0?void 0:re.errored)!==null&&Z!==void 0?Z:!((O=R._writableState)===null||O===void 0)&&O.errored))}r.exports={isDestroyed:E,kIsDestroyed:o,isDisturbed:J,kIsDisturbed:c,isErrored:ie,kIsErrored:i,isReadable:C,kIsReadable:a,kIsClosedPromise:d,kControllerErrorFunction:f,kIsWritable:s,isClosed:F,isDuplexNodeStream:p,isFinished:A,isIterable:_,isReadableNodeStream:m,isReadableStream:v,isReadableEnded:V,isReadableFinished:$,isReadableErrored:H,isNodeStream:w,isWebStream:k,isWritable:D,isWritableNodeStream:h,isWritableStream:S,isWritableEnded:I,isWritableFinished:x,isWritableErrored:U,isServerRequest:oe,isServerResponse:ne,willEmitClose:fe,isTransformStream:y}}),Bt=_e((u,r)=>{be(),Ee(),we();var t=Ht(),{AbortError:l,codes:n}=lt(),{ERR_INVALID_ARG_TYPE:o,ERR_STREAM_PREMATURE_CLOSE:i}=n,{kEmptyObject:a,once:s}=ut(),{validateAbortSignal:c,validateFunction:d,validateObject:f,validateBoolean:m}=gr(),{Promise:h,PromisePrototypeThen:p,SymbolDispose:w}=Je(),{isClosed:v,isReadable:S,isReadableNodeStream:y,isReadableStream:k,isReadableFinished:_,isReadableErrored:E,isWritable:I,isWritableNodeStream:x,isWritableStream:V,isWritableFinished:$,isWritableErrored:C,isNodeStream:D,willEmitClose:A,kIsClosedPromise:U}=_t(),H;function F(J){return J.setHeader&&typeof J.abort=="function"}var ue=()=>{};function ne(J,ie,R){var Z,ge;if(arguments.length===2?(R=ie,ie=a):ie==null?ie=a:f(ie,"options"),d(R,"callback"),c(ie.signal,"options.signal"),R=s(R),k(J)||V(J))return oe(J,ie,R);if(!D(J))throw new o("stream",["ReadableStream","WritableStream","Stream"],J);let G=(Z=ie.readable)!==null&&Z!==void 0?Z:y(J),Ve=(ge=ie.writable)!==null&&ge!==void 0?ge:x(J),ee=J._writableState,q=J._readableState,ce=()=>{J.writable||O()},X=A(J)&&y(J)===G&&x(J)===Ve,re=$(J,!1),O=()=>{re=!0,J.destroyed&&(X=!1),!(X&&(!J.readable||G))&&(!G||te)&&R.call(J)},te=_(J,!1),se=()=>{te=!0,J.destroyed&&(X=!1),!(X&&(!J.writable||Ve))&&(!Ve||re)&&R.call(J)},j=Q=>{R.call(J,Q)},K=v(J),ae=()=>{K=!0;let Q=C(J)||E(J);if(Q&&typeof Q!="boolean")return R.call(J,Q);if(G&&!te&&y(J,!0)&&!_(J,!1))return R.call(J,new i);if(Ve&&!re&&!$(J,!1))return R.call(J,new i);R.call(J)},he=()=>{K=!0;let Q=C(J)||E(J);if(Q&&typeof Q!="boolean")return R.call(J,Q);R.call(J)},pe=()=>{J.req.on("finish",O)};F(J)?(J.on("complete",O),X||J.on("abort",ae),J.req?pe():J.on("request",pe)):Ve&&!ee&&(J.on("end",ce),J.on("close",ce)),!X&&typeof J.aborted=="boolean"&&J.on("aborted",ae),J.on("end",se),J.on("finish",O),ie.error!==!1&&J.on("error",j),J.on("close",ae),K?t.nextTick(ae):ee!=null&&ee.errorEmitted||q!=null&&q.errorEmitted?X||t.nextTick(he):(!G&&(!X||S(J))&&(re||I(J)===!1)||!Ve&&(!X||I(J))&&(te||S(J)===!1)||q&&J.req&&J.aborted)&&t.nextTick(he);let ve=()=>{R=ue,J.removeListener("aborted",ae),J.removeListener("complete",O),J.removeListener("abort",ae),J.removeListener("request",pe),J.req&&J.req.removeListener("finish",O),J.removeListener("end",ce),J.removeListener("close",ce),J.removeListener("finish",O),J.removeListener("end",se),J.removeListener("error",j),J.removeListener("close",ae)};if(ie.signal&&!K){let Q=()=>{let ye=R;ve(),ye.call(J,new l(void 0,{cause:ie.signal.reason}))};if(ie.signal.aborted)t.nextTick(Q);else{H=H||ut().addAbortListener;let ye=H(ie.signal,Q),ke=R;R=s((...de)=>{ye[w](),ke.apply(J,de)})}}return ve}function oe(J,ie,R){let Z=!1,ge=ue;if(ie.signal)if(ge=()=>{Z=!0,R.call(J,new l(void 0,{cause:ie.signal.reason}))},ie.signal.aborted)t.nextTick(ge);else{H=H||ut().addAbortListener;let Ve=H(ie.signal,ge),ee=R;R=s((...q)=>{Ve[w](),ee.apply(J,q)})}let G=(...Ve)=>{Z||t.nextTick(()=>R.apply(J,Ve))};return p(J[U].promise,G,G),ue}function fe(J,ie){var R;let Z=!1;return ie===null&&(ie=a),(R=ie)!==null&&R!==void 0&&R.cleanup&&(m(ie.cleanup,"cleanup"),Z=ie.cleanup),new h((ge,G)=>{let Ve=ne(J,ie,ee=>{Z&&Ve(),ee?G(ee):ge()})})}r.exports=ne,r.exports.finished=fe}),nr=_e((u,r)=>{be(),Ee(),we();var t=Ht(),{aggregateTwoErrors:l,codes:{ERR_MULTIPLE_CALLBACK:n},AbortError:o}=lt(),{Symbol:i}=Je(),{kIsDestroyed:a,isDestroyed:s,isFinished:c,isServerRequest:d}=_t(),f=i("kDestroy"),m=i("kConstruct");function h(A,U,H){A&&(A.stack,U&&!U.errored&&(U.errored=A),H&&!H.errored&&(H.errored=A))}function p(A,U){let H=this._readableState,F=this._writableState,ue=F||H;return F!=null&&F.destroyed||H!=null&&H.destroyed?(typeof U=="function"&&U(),this):(h(A,F,H),F&&(F.destroyed=!0),H&&(H.destroyed=!0),ue.constructed?w(this,A,U):this.once(f,function(ne){w(this,l(ne,A),U)}),this)}function w(A,U,H){let F=!1;function ue(ne){if(F)return;F=!0;let oe=A._readableState,fe=A._writableState;h(ne,fe,oe),fe&&(fe.closed=!0),oe&&(oe.closed=!0),typeof H=="function"&&H(ne),ne?t.nextTick(v,A,ne):t.nextTick(S,A)}try{A._destroy(U||null,ue)}catch(ne){ue(ne)}}function v(A,U){y(A,U),S(A)}function S(A){let U=A._readableState,H=A._writableState;H&&(H.closeEmitted=!0),U&&(U.closeEmitted=!0),(H!=null&&H.emitClose||U!=null&&U.emitClose)&&A.emit("close")}function y(A,U){let H=A._readableState,F=A._writableState;F!=null&&F.errorEmitted||H!=null&&H.errorEmitted||(F&&(F.errorEmitted=!0),H&&(H.errorEmitted=!0),A.emit("error",U))}function k(){let A=this._readableState,U=this._writableState;A&&(A.constructed=!0,A.closed=!1,A.closeEmitted=!1,A.destroyed=!1,A.errored=null,A.errorEmitted=!1,A.reading=!1,A.ended=A.readable===!1,A.endEmitted=A.readable===!1),U&&(U.constructed=!0,U.destroyed=!1,U.closed=!1,U.closeEmitted=!1,U.errored=null,U.errorEmitted=!1,U.finalCalled=!1,U.prefinished=!1,U.ended=U.writable===!1,U.ending=U.writable===!1,U.finished=U.writable===!1)}function _(A,U,H){let F=A._readableState,ue=A._writableState;if(ue!=null&&ue.destroyed||F!=null&&F.destroyed)return this;F!=null&&F.autoDestroy||ue!=null&&ue.autoDestroy?A.destroy(U):U&&(U.stack,ue&&!ue.errored&&(ue.errored=U),F&&!F.errored&&(F.errored=U),H?t.nextTick(y,A,U):y(A,U))}function E(A,U){if(typeof A._construct!="function")return;let H=A._readableState,F=A._writableState;H&&(H.constructed=!1),F&&(F.constructed=!1),A.once(m,U),!(A.listenerCount(m)>1)&&t.nextTick(I,A)}function I(A){let U=!1;function H(F){if(U){_(A,F??new n);return}U=!0;let ue=A._readableState,ne=A._writableState,oe=ne||ue;ue&&(ue.constructed=!0),ne&&(ne.constructed=!0),oe.destroyed?A.emit(f,F):F?_(A,F,!0):t.nextTick(x,A)}try{A._construct(F=>{t.nextTick(H,F)})}catch(F){t.nextTick(H,F)}}function x(A){A.emit(m)}function V(A){return(A==null?void 0:A.setHeader)&&typeof A.abort=="function"}function $(A){A.emit("close")}function C(A,U){A.emit("error",U),t.nextTick($,A)}function D(A,U){!A||s(A)||(!U&&!c(A)&&(U=new o),d(A)?(A.socket=null,A.destroy(U)):V(A)?A.abort():V(A.req)?A.req.abort():typeof A.destroy=="function"?A.destroy(U):typeof A.close=="function"?A.close():U?t.nextTick(C,A,U):t.nextTick($,A),A.destroyed||(A[a]=!0))}r.exports={construct:E,destroyer:D,destroy:p,undestroy:k,errorOrDestroy:_}}),Pn=_e((u,r)=>{be(),Ee(),we();var{ArrayIsArray:t,ObjectSetPrototypeOf:l}=Je(),{EventEmitter:n}=(Gt(),We(Tt));function o(a){n.call(this,a)}l(o.prototype,n.prototype),l(o,n),o.prototype.pipe=function(a,s){let c=this;function d(S){a.writable&&a.write(S)===!1&&c.pause&&c.pause()}c.on("data",d);function f(){c.readable&&c.resume&&c.resume()}a.on("drain",f),!a._isStdio&&(!s||s.end!==!1)&&(c.on("end",h),c.on("close",p));let m=!1;function h(){m||(m=!0,a.end())}function p(){m||(m=!0,typeof a.destroy=="function"&&a.destroy())}function w(S){v(),n.listenerCount(this,"error")===0&&this.emit("error",S)}i(c,"error",w),i(a,"error",w);function v(){c.removeListener("data",d),a.removeListener("drain",f),c.removeListener("end",h),c.removeListener("close",p),c.removeListener("error",w),a.removeListener("error",w),c.removeListener("end",v),c.removeListener("close",v),a.removeListener("close",v)}return c.on("end",v),c.on("close",v),a.on("close",v),a.emit("pipe",c),a};function i(a,s,c){if(typeof a.prependListener=="function")return a.prependListener(s,c);!a._events||!a._events[s]?a.on(s,c):t(a._events[s])?a._events[s].unshift(c):a._events[s]=[c,a._events[s]]}r.exports={Stream:o,prependListener:i}}),Ir=_e((u,r)=>{be(),Ee(),we();var{SymbolDispose:t}=Je(),{AbortError:l,codes:n}=lt(),{isNodeStream:o,isWebStream:i,kControllerErrorFunction:a}=_t(),s=Bt(),{ERR_INVALID_ARG_TYPE:c}=n,d,f=(m,h)=>{if(typeof m!="object"||!("aborted"in m))throw new c(h,"AbortSignal",m)};r.exports.addAbortSignal=function(m,h){if(f(m,"signal"),!o(h)&&!i(h))throw new c("stream",["ReadableStream","WritableStream","Stream"],h);return r.exports.addAbortSignalNoValidate(m,h)},r.exports.addAbortSignalNoValidate=function(m,h){if(typeof m!="object"||!("aborted"in m))return h;let p=o(h)?()=>{h.destroy(new l(void 0,{cause:m.reason}))}:()=>{h[a](new l(void 0,{cause:m.reason}))};if(m.aborted)p();else{d=d||ut().addAbortListener;let w=d(m,p);s(h,w[t])}return h}}),dy=_e((u,r)=>{be(),Ee(),we();var{StringPrototypeSlice:t,SymbolIterator:l,TypedArrayPrototypeSet:n,Uint8Array:o}=Je(),{Buffer:i}=(ot(),We(rt)),{inspect:a}=ut();r.exports=class{constructor(){this.head=null,this.tail=null,this.length=0}push(s){let c={data:s,next:null};this.length>0?this.tail.next=c:this.head=c,this.tail=c,++this.length}unshift(s){let c={data:s,next:this.head};this.length===0&&(this.tail=c),this.head=c,++this.length}shift(){if(this.length===0)return;let s=this.head.data;return this.length===1?this.head=this.tail=null:this.head=this.head.next,--this.length,s}clear(){this.head=this.tail=null,this.length=0}join(s){if(this.length===0)return"";let c=this.head,d=""+c.data;for(;(c=c.next)!==null;)d+=s+c.data;return d}concat(s){if(this.length===0)return i.alloc(0);let c=i.allocUnsafe(s>>>0),d=this.head,f=0;for(;d;)n(c,d.data,f),f+=d.data.length,d=d.next;return c}consume(s,c){let d=this.head.data;if(s<d.length){let f=d.slice(0,s);return this.head.data=d.slice(s),f}return s===d.length?this.shift():c?this._getString(s):this._getBuffer(s)}first(){return this.head.data}*[l](){for(let s=this.head;s;s=s.next)yield s.data}_getString(s){let c="",d=this.head,f=0;do{let m=d.data;if(s>m.length)c+=m,s-=m.length;else{s===m.length?(c+=m,++f,d.next?this.head=d.next:this.head=this.tail=null):(c+=t(m,0,s),this.head=d,d.data=t(m,s));break}++f}while((d=d.next)!==null);return this.length-=f,c}_getBuffer(s){let c=i.allocUnsafe(s),d=s,f=this.head,m=0;do{let h=f.data;if(s>h.length)n(c,h,d-s),s-=h.length;else{s===h.length?(n(c,h,d-s),++m,f.next?this.head=f.next:this.head=this.tail=null):(n(c,new o(h.buffer,h.byteOffset,s),d-s),this.head=f,f.data=h.slice(s));break}++m}while((f=f.next)!==null);return this.length-=m,c}[Symbol.for("nodejs.util.inspect.custom")](s,c){return a(this,{...c,depth:0,customInspect:!1})}}}),Ar=_e((u,r)=>{be(),Ee(),we();var{MathFloor:t,NumberIsInteger:l}=Je(),{validateInteger:n}=gr(),{ERR_INVALID_ARG_VALUE:o}=lt().codes,i=16*1024,a=16;function s(m,h,p){return m.highWaterMark!=null?m.highWaterMark:h?m[p]:null}function c(m){return m?a:i}function d(m,h){n(h,"value",0),m?a=h:i=h}function f(m,h,p,w){let v=s(h,w,p);if(v!=null){if(!l(v)||v<0){let S=w?`options.${p}`:"options.highWaterMark";throw new o(S,v)}return t(v)}return c(m.objectMode)}r.exports={getHighWaterMark:f,getDefaultHighWaterMark:c,setDefaultHighWaterMark:d}}),uy=_e((u,r)=>{be(),Ee(),we();var t=(ot(),We(rt)),l=t.Buffer;function n(i,a){for(var s in i)a[s]=i[s]}l.from&&l.alloc&&l.allocUnsafe&&l.allocUnsafeSlow?r.exports=t:(n(t,u),u.Buffer=o);function o(i,a,s){return l(i,a,s)}o.prototype=Object.create(l.prototype),n(l,o),o.from=function(i,a,s){if(typeof i=="number")throw new TypeError("Argument must not be a number");return l(i,a,s)},o.alloc=function(i,a,s){if(typeof i!="number")throw new TypeError("Argument must be a number");var c=l(i);return a!==void 0?typeof s=="string"?c.fill(a,s):c.fill(a):c.fill(0),c},o.allocUnsafe=function(i){if(typeof i!="number")throw new TypeError("Argument must be a number");return l(i)},o.allocUnsafeSlow=function(i){if(typeof i!="number")throw new TypeError("Argument must be a number");return t.SlowBuffer(i)}}),fy=_e(u=>{be(),Ee(),we();var r=uy().Buffer,t=r.isEncoding||function(y){switch(y=""+y,y&&y.toLowerCase()){case"hex":case"utf8":case"utf-8":case"ascii":case"binary":case"base64":case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":case"raw":return!0;default:return!1}};function l(y){if(!y)return"utf8";for(var k;;)switch(y){case"utf8":case"utf-8":return"utf8";case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return"utf16le";case"latin1":case"binary":return"latin1";case"base64":case"ascii":case"hex":return y;default:if(k)return;y=(""+y).toLowerCase(),k=!0}}function n(y){var k=l(y);if(typeof k!="string"&&(r.isEncoding===t||!t(y)))throw new Error("Unknown encoding: "+y);return k||y}u.StringDecoder=o;function o(y){this.encoding=n(y);var k;switch(this.encoding){case"utf16le":this.text=m,this.end=h,k=4;break;case"utf8":this.fillLast=c,k=4;break;case"base64":this.text=p,this.end=w,k=3;break;default:this.write=v,this.end=S;return}this.lastNeed=0,this.lastTotal=0,this.lastChar=r.allocUnsafe(k)}o.prototype.write=function(y){if(y.length===0)return"";var k,_;if(this.lastNeed){if(k=this.fillLast(y),k===void 0)return"";_=this.lastNeed,this.lastNeed=0}else _=0;return _<y.length?k?k+this.text(y,_):this.text(y,_):k||""},o.prototype.end=f,o.prototype.text=d,o.prototype.fillLast=function(y){if(this.lastNeed<=y.length)return y.copy(this.lastChar,this.lastTotal-this.lastNeed,0,this.lastNeed),this.lastChar.toString(this.encoding,0,this.lastTotal);y.copy(this.lastChar,this.lastTotal-this.lastNeed,0,y.length),this.lastNeed-=y.length};function i(y){return y<=127?0:y>>5===6?2:y>>4===14?3:y>>3===30?4:y>>6===2?-1:-2}function a(y,k,_){var E=k.length-1;if(E<_)return 0;var I=i(k[E]);return I>=0?(I>0&&(y.lastNeed=I-1),I):--E<_||I===-2?0:(I=i(k[E]),I>=0?(I>0&&(y.lastNeed=I-2),I):--E<_||I===-2?0:(I=i(k[E]),I>=0?(I>0&&(I===2?I=0:y.lastNeed=I-3),I):0))}function s(y,k,_){if((k[0]&192)!==128)return y.lastNeed=0,"�";if(y.lastNeed>1&&k.length>1){if((k[1]&192)!==128)return y.lastNeed=1,"�";if(y.lastNeed>2&&k.length>2&&(k[2]&192)!==128)return y.lastNeed=2,"�"}}function c(y){var k=this.lastTotal-this.lastNeed,_=s(this,y);if(_!==void 0)return _;if(this.lastNeed<=y.length)return y.copy(this.lastChar,k,0,this.lastNeed),this.lastChar.toString(this.encoding,0,this.lastTotal);y.copy(this.lastChar,k,0,y.length),this.lastNeed-=y.length}function d(y,k){var _=a(this,y,k);if(!this.lastNeed)return y.toString("utf8",k);this.lastTotal=_;var E=y.length-(_-this.lastNeed);return y.copy(this.lastChar,0,E),y.toString("utf8",k,E)}function f(y){var k=y&&y.length?this.write(y):"";return this.lastNeed?k+"�":k}function m(y,k){if((y.length-k)%2===0){var _=y.toString("utf16le",k);if(_){var E=_.charCodeAt(_.length-1);if(E>=55296&&E<=56319)return this.lastNeed=2,this.lastTotal=4,this.lastChar[0]=y[y.length-2],this.lastChar[1]=y[y.length-1],_.slice(0,-1)}return _}return this.lastNeed=1,this.lastTotal=2,this.lastChar[0]=y[y.length-1],y.toString("utf16le",k,y.length-1)}function h(y){var k=y&&y.length?this.write(y):"";if(this.lastNeed){var _=this.lastTotal-this.lastNeed;return k+this.lastChar.toString("utf16le",0,_)}return k}function p(y,k){var _=(y.length-k)%3;return _===0?y.toString("base64",k):(this.lastNeed=3-_,this.lastTotal=3,_===1?this.lastChar[0]=y[y.length-1]:(this.lastChar[0]=y[y.length-2],this.lastChar[1]=y[y.length-1]),y.toString("base64",k,y.length-_))}function w(y){var k=y&&y.length?this.write(y):"";return this.lastNeed?k+this.lastChar.toString("base64",0,3-this.lastNeed):k}function v(y){return y.toString(this.encoding)}function S(y){return y&&y.length?this.write(y):""}}),Fs=_e((u,r)=>{be(),Ee(),we();var t=Ht(),{PromisePrototypeThen:l,SymbolAsyncIterator:n,SymbolIterator:o}=Je(),{Buffer:i}=(ot(),We(rt)),{ERR_INVALID_ARG_TYPE:a,ERR_STREAM_NULL_VALUES:s}=lt().codes;function c(d,f,m){let h;if(typeof f=="string"||f instanceof i)return new d({objectMode:!0,...m,read(){this.push(f),this.push(null)}});let p;if(f&&f[n])p=!0,h=f[n]();else if(f&&f[o])p=!1,h=f[o]();else throw new a("iterable",["Iterable"],f);let w=new d({objectMode:!0,highWaterMark:1,...m}),v=!1;w._read=function(){v||(v=!0,y())},w._destroy=function(k,_){l(S(k),()=>t.nextTick(_,k),E=>t.nextTick(_,E||k))};async function S(k){let _=k!=null,E=typeof h.throw=="function";if(_&&E){let{value:I,done:x}=await h.throw(k);if(await I,x)return}if(typeof h.return=="function"){let{value:I}=await h.return();await I}}async function y(){for(;;){try{let{value:k,done:_}=p?await h.next():h.next();if(_)w.push(null);else{let E=k&&typeof k.then=="function"?await k:k;if(E===null)throw v=!1,new s;if(w.push(E))continue;v=!1}}catch(k){w.destroy(k)}break}}return w}r.exports=c}),$r=_e((u,r)=>{be(),Ee(),we();var t=Ht(),{ArrayPrototypeIndexOf:l,NumberIsInteger:n,NumberIsNaN:o,NumberParseInt:i,ObjectDefineProperties:a,ObjectKeys:s,ObjectSetPrototypeOf:c,Promise:d,SafeSet:f,SymbolAsyncDispose:m,SymbolAsyncIterator:h,Symbol:p}=Je();r.exports=de,de.ReadableState=ke;var{EventEmitter:w}=(Gt(),We(Tt)),{Stream:v,prependListener:S}=Pn(),{Buffer:y}=(ot(),We(rt)),{addAbortSignal:k}=Ir(),_=Bt(),E=ut().debuglog("stream",M=>{E=M}),I=dy(),x=nr(),{getHighWaterMark:V,getDefaultHighWaterMark:$}=Ar(),{aggregateTwoErrors:C,codes:{ERR_INVALID_ARG_TYPE:D,ERR_METHOD_NOT_IMPLEMENTED:A,ERR_OUT_OF_RANGE:U,ERR_STREAM_PUSH_AFTER_EOF:H,ERR_STREAM_UNSHIFT_AFTER_END_EVENT:F},AbortError:ue}=lt(),{validateObject:ne}=gr(),oe=p("kPaused"),{StringDecoder:fe}=fy(),J=Fs();c(de.prototype,v.prototype),c(de,v);var ie=()=>{},{errorOrDestroy:R}=x,Z=1,ge=2,G=4,Ve=8,ee=16,q=32,ce=64,X=128,re=256,O=512,te=1024,se=2048,j=4096,K=8192,ae=16384,he=32768,pe=65536,ve=1<<17,Q=1<<18;function ye(M){return{enumerable:!1,get(){return(this.state&M)!==0},set(z){z?this.state|=M:this.state&=~M}}}a(ke.prototype,{objectMode:ye(Z),ended:ye(ge),endEmitted:ye(G),reading:ye(Ve),constructed:ye(ee),sync:ye(q),needReadable:ye(ce),emittedReadable:ye(X),readableListening:ye(re),resumeScheduled:ye(O),errorEmitted:ye(te),emitClose:ye(se),autoDestroy:ye(j),destroyed:ye(K),closed:ye(ae),closeEmitted:ye(he),multiAwaitDrain:ye(pe),readingMore:ye(ve),dataEmitted:ye(Q)});function ke(M,z,Ce){typeof Ce!="boolean"&&(Ce=z instanceof Nt()),this.state=se|j|ee|q,M&&M.objectMode&&(this.state|=Z),Ce&&M&&M.readableObjectMode&&(this.state|=Z),this.highWaterMark=M?V(this,M,"readableHighWaterMark",Ce):$(!1),this.buffer=new I,this.length=0,this.pipes=[],this.flowing=null,this[oe]=null,M&&M.emitClose===!1&&(this.state&=~se),M&&M.autoDestroy===!1&&(this.state&=~j),this.errored=null,this.defaultEncoding=M&&M.defaultEncoding||"utf8",this.awaitDrainWriters=null,this.decoder=null,this.encoding=null,M&&M.encoding&&(this.decoder=new fe(M.encoding),this.encoding=M.encoding)}function de(M){if(!(this instanceof de))return new de(M);let z=this instanceof Nt();this._readableState=new ke(M,this,z),M&&(typeof M.read=="function"&&(this._read=M.read),typeof M.destroy=="function"&&(this._destroy=M.destroy),typeof M.construct=="function"&&(this._construct=M.construct),M.signal&&!z&&k(M.signal,this)),v.call(this,M),x.construct(this,()=>{this._readableState.needReadable&&B(this,this._readableState)})}de.prototype.destroy=x.destroy,de.prototype._undestroy=x.undestroy,de.prototype._destroy=function(M,z){z(M)},de.prototype[w.captureRejectionSymbol]=function(M){this.destroy(M)},de.prototype[m]=function(){let M;return this.destroyed||(M=this.readableEnded?null:new ue,this.destroy(M)),new d((z,Ce)=>_(this,Ie=>Ie&&Ie!==M?Ce(Ie):z(null)))},de.prototype.push=function(M,z){return Ae(this,M,z,!1)},de.prototype.unshift=function(M,z){return Ae(this,M,z,!0)};function Ae(M,z,Ce,Ie){E("readableAddChunk",z);let Te=M._readableState,tt;if(!(Te.state&Z)&&(typeof z=="string"?(Ce=Ce||Te.defaultEncoding,Te.encoding!==Ce&&(Ie&&Te.encoding?z=y.from(z,Ce).toString(Te.encoding):(z=y.from(z,Ce),Ce=""))):z instanceof y?Ce="":v._isUint8Array(z)?(z=v._uint8ArrayToBuffer(z),Ce=""):z!=null&&(tt=new D("chunk",["string","Buffer","Uint8Array"],z))),tt)R(M,tt);else if(z===null)Te.state&=~Ve,L(M,Te);else if(Te.state&Z||z&&z.length>0)if(Ie)if(Te.state&G)R(M,new F);else{if(Te.destroyed||Te.errored)return!1;g(M,Te,z,!0)}else if(Te.ended)R(M,new H);else{if(Te.destroyed||Te.errored)return!1;Te.state&=~Ve,Te.decoder&&!Ce?(z=Te.decoder.write(z),Te.objectMode||z.length!==0?g(M,Te,z,!1):B(M,Te)):g(M,Te,z,!1)}else Ie||(Te.state&=~Ve,B(M,Te));return!Te.ended&&(Te.length<Te.highWaterMark||Te.length===0)}function g(M,z,Ce,Ie){z.flowing&&z.length===0&&!z.sync&&M.listenerCount("data")>0?(z.state&pe?z.awaitDrainWriters.clear():z.awaitDrainWriters=null,z.dataEmitted=!0,M.emit("data",Ce)):(z.length+=z.objectMode?1:Ce.length,Ie?z.buffer.unshift(Ce):z.buffer.push(Ce),z.state&ce&&Y(M)),B(M,z)}de.prototype.isPaused=function(){let M=this._readableState;return M[oe]===!0||M.flowing===!1},de.prototype.setEncoding=function(M){let z=new fe(M);this._readableState.decoder=z,this._readableState.encoding=this._readableState.decoder.encoding;let Ce=this._readableState.buffer,Ie="";for(let Te of Ce)Ie+=z.write(Te);return Ce.clear(),Ie!==""&&Ce.push(Ie),this._readableState.length=Ie.length,this};var b=1073741824;function N(M){if(M>b)throw new U("size","<= 1GiB",M);return M--,M|=M>>>1,M|=M>>>2,M|=M>>>4,M|=M>>>8,M|=M>>>16,M++,M}function T(M,z){return M<=0||z.length===0&&z.ended?0:z.state&Z?1:o(M)?z.flowing&&z.length?z.buffer.first().length:z.length:M<=z.length?M:z.ended?z.length:0}de.prototype.read=function(M){E("read",M),M===void 0?M=NaN:n(M)||(M=i(M,10));let z=this._readableState,Ce=M;if(M>z.highWaterMark&&(z.highWaterMark=N(M)),M!==0&&(z.state&=~X),M===0&&z.needReadable&&((z.highWaterMark!==0?z.length>=z.highWaterMark:z.length>0)||z.ended))return E("read: emitReadable",z.length,z.ended),z.length===0&&z.ended?Ue(this):Y(this),null;if(M=T(M,z),M===0&&z.ended)return z.length===0&&Ue(this),null;let Ie=(z.state&ce)!==0;if(E("need readable",Ie),(z.length===0||z.length-M<z.highWaterMark)&&(Ie=!0,E("length less than watermark",Ie)),z.ended||z.reading||z.destroyed||z.errored||!z.constructed)Ie=!1,E("reading, ended or constructing",Ie);else if(Ie){E("do read"),z.state|=Ve|q,z.length===0&&(z.state|=ce);try{this._read(z.highWaterMark)}catch(tt){R(this,tt)}z.state&=~q,z.reading||(M=T(Ce,z))}let Te;return M>0?Te=Pe(M,z):Te=null,Te===null?(z.needReadable=z.length<=z.highWaterMark,M=0):(z.length-=M,z.multiAwaitDrain?z.awaitDrainWriters.clear():z.awaitDrainWriters=null),z.length===0&&(z.ended||(z.needReadable=!0),Ce!==M&&z.ended&&Ue(this)),Te!==null&&!z.errorEmitted&&!z.closeEmitted&&(z.dataEmitted=!0,this.emit("data",Te)),Te};function L(M,z){if(E("onEofChunk"),!z.ended){if(z.decoder){let Ce=z.decoder.end();Ce&&Ce.length&&(z.buffer.push(Ce),z.length+=z.objectMode?1:Ce.length)}z.ended=!0,z.sync?Y(M):(z.needReadable=!1,z.emittedReadable=!0,le(M))}}function Y(M){let z=M._readableState;E("emitReadable",z.needReadable,z.emittedReadable),z.needReadable=!1,z.emittedReadable||(E("emitReadable",z.flowing),z.emittedReadable=!0,t.nextTick(le,M))}function le(M){let z=M._readableState;E("emitReadable_",z.destroyed,z.length,z.ended),!z.destroyed&&!z.errored&&(z.length||z.ended)&&(M.emit("readable"),z.emittedReadable=!1),z.needReadable=!z.flowing&&!z.ended&&z.length<=z.highWaterMark,et(M)}function B(M,z){!z.readingMore&&z.constructed&&(z.readingMore=!0,t.nextTick(P,M,z))}function P(M,z){for(;!z.reading&&!z.ended&&(z.length<z.highWaterMark||z.flowing&&z.length===0);){let Ce=z.length;if(E("maybeReadMore read 0"),M.read(0),Ce===z.length)break}z.readingMore=!1}de.prototype._read=function(M){throw new A("_read()")},de.prototype.pipe=function(M,z){let Ce=this,Ie=this._readableState;Ie.pipes.length===1&&(Ie.multiAwaitDrain||(Ie.multiAwaitDrain=!0,Ie.awaitDrainWriters=new f(Ie.awaitDrainWriters?[Ie.awaitDrainWriters]:[]))),Ie.pipes.push(M),E("pipe count=%d opts=%j",Ie.pipes.length,z);let Te=(!z||z.end!==!1)&&M!==t.stdout&&M!==t.stderr?ct:Zt;Ie.endEmitted?t.nextTick(Te):Ce.once("end",Te),M.on("unpipe",tt);function tt(wt,At){E("onunpipe"),wt===Ce&&At&&At.hasUnpiped===!1&&(At.hasUnpiped=!0,kr())}function ct(){E("onend"),M.end()}let mt,vr=!1;function kr(){E("cleanup"),M.removeListener("close",bt),M.removeListener("finish",jt),mt&&M.removeListener("drain",mt),M.removeListener("error",Xt),M.removeListener("unpipe",tt),Ce.removeListener("end",ct),Ce.removeListener("end",Zt),Ce.removeListener("data",uo),vr=!0,mt&&Ie.awaitDrainWriters&&(!M._writableState||M._writableState.needDrain)&&mt()}function _r(){vr||(Ie.pipes.length===1&&Ie.pipes[0]===M?(E("false write response, pause",0),Ie.awaitDrainWriters=M,Ie.multiAwaitDrain=!1):Ie.pipes.length>1&&Ie.pipes.includes(M)&&(E("false write response, pause",Ie.awaitDrainWriters.size),Ie.awaitDrainWriters.add(M)),Ce.pause()),mt||(mt=me(Ce,M),M.on("drain",mt))}Ce.on("data",uo);function uo(wt){E("ondata");let At=M.write(wt);E("dest.write",At),At===!1&&_r()}function Xt(wt){if(E("onerror",wt),Zt(),M.removeListener("error",Xt),M.listenerCount("error")===0){let At=M._writableState||M._readableState;At&&!At.errorEmitted?R(M,wt):M.emit("error",wt)}}S(M,"error",Xt);function bt(){M.removeListener("finish",jt),Zt()}M.once("close",bt);function jt(){E("onfinish"),M.removeListener("close",bt),Zt()}M.once("finish",jt);function Zt(){E("unpipe"),Ce.unpipe(M)}return M.emit("pipe",Ce),M.writableNeedDrain===!0?_r():Ie.flowing||(E("pipe resume"),Ce.resume()),M};function me(M,z){return function(){let Ce=M._readableState;Ce.awaitDrainWriters===z?(E("pipeOnDrain",1),Ce.awaitDrainWriters=null):Ce.multiAwaitDrain&&(E("pipeOnDrain",Ce.awaitDrainWriters.size),Ce.awaitDrainWriters.delete(z)),(!Ce.awaitDrainWriters||Ce.awaitDrainWriters.size===0)&&M.listenerCount("data")&&M.resume()}}de.prototype.unpipe=function(M){let z=this._readableState,Ce={hasUnpiped:!1};if(z.pipes.length===0)return this;if(!M){let Te=z.pipes;z.pipes=[],this.pause();for(let tt=0;tt<Te.length;tt++)Te[tt].emit("unpipe",this,{hasUnpiped:!1});return this}let Ie=l(z.pipes,M);return Ie===-1?this:(z.pipes.splice(Ie,1),z.pipes.length===0&&this.pause(),M.emit("unpipe",this,Ce),this)},de.prototype.on=function(M,z){let Ce=v.prototype.on.call(this,M,z),Ie=this._readableState;return M==="data"?(Ie.readableListening=this.listenerCount("readable")>0,Ie.flowing!==!1&&this.resume()):M==="readable"&&!Ie.endEmitted&&!Ie.readableListening&&(Ie.readableListening=Ie.needReadable=!0,Ie.flowing=!1,Ie.emittedReadable=!1,E("on readable",Ie.length,Ie.reading),Ie.length?Y(this):Ie.reading||t.nextTick(xe,this)),Ce},de.prototype.addListener=de.prototype.on,de.prototype.removeListener=function(M,z){let Ce=v.prototype.removeListener.call(this,M,z);return M==="readable"&&t.nextTick(Ne,this),Ce},de.prototype.off=de.prototype.removeListener,de.prototype.removeAllListeners=function(M){let z=v.prototype.removeAllListeners.apply(this,arguments);return(M==="readable"||M===void 0)&&t.nextTick(Ne,this),z};function Ne(M){let z=M._readableState;z.readableListening=M.listenerCount("readable")>0,z.resumeScheduled&&z[oe]===!1?z.flowing=!0:M.listenerCount("data")>0?M.resume():z.readableListening||(z.flowing=null)}function xe(M){E("readable nexttick read 0"),M.read(0)}de.prototype.resume=function(){let M=this._readableState;return M.flowing||(E("resume"),M.flowing=!M.readableListening,De(this,M)),M[oe]=!1,this};function De(M,z){z.resumeScheduled||(z.resumeScheduled=!0,t.nextTick(Ge,M,z))}function Ge(M,z){E("resume",z.reading),z.reading||M.read(0),z.resumeScheduled=!1,M.emit("resume"),et(M),z.flowing&&!z.reading&&M.read(0)}de.prototype.pause=function(){return E("call pause flowing=%j",this._readableState.flowing),this._readableState.flowing!==!1&&(E("pause"),this._readableState.flowing=!1,this.emit("pause")),this._readableState[oe]=!0,this};function et(M){let z=M._readableState;for(E("flow",z.flowing);z.flowing&&M.read()!==null;);}de.prototype.wrap=function(M){let z=!1;M.on("data",Ie=>{!this.push(Ie)&&M.pause&&(z=!0,M.pause())}),M.on("end",()=>{this.push(null)}),M.on("error",Ie=>{R(this,Ie)}),M.on("close",()=>{this.destroy()}),M.on("destroy",()=>{this.destroy()}),this._read=()=>{z&&M.resume&&(z=!1,M.resume())};let Ce=s(M);for(let Ie=1;Ie<Ce.length;Ie++){let Te=Ce[Ie];this[Te]===void 0&&typeof M[Te]=="function"&&(this[Te]=M[Te].bind(M))}return this},de.prototype[h]=function(){return Re(this)},de.prototype.iterator=function(M){return M!==void 0&&ne(M,"options"),Re(this,M)};function Re(M,z){typeof M.read!="function"&&(M=de.wrap(M,{objectMode:!0}));let Ce=He(M,z);return Ce.stream=M,Ce}async function*He(M,z){let Ce=ie;function Ie(ct){this===M?(Ce(),Ce=ie):Ce=ct}M.on("readable",Ie);let Te,tt=_(M,{writable:!1},ct=>{Te=ct?C(Te,ct):null,Ce(),Ce=ie});try{for(;;){let ct=M.destroyed?null:M.read();if(ct!==null)yield ct;else{if(Te)throw Te;if(Te===null)return;await new d(Ie)}}}catch(ct){throw Te=C(Te,ct),Te}finally{(Te||(z==null?void 0:z.destroyOnReturn)!==!1)&&(Te===void 0||M._readableState.autoDestroy)?x.destroyer(M,null):(M.off("readable",Ie),tt())}}a(de.prototype,{readable:{__proto__:null,get(){let M=this._readableState;return!!M&&M.readable!==!1&&!M.destroyed&&!M.errorEmitted&&!M.endEmitted},set(M){this._readableState&&(this._readableState.readable=!!M)}},readableDidRead:{__proto__:null,enumerable:!1,get:function(){return this._readableState.dataEmitted}},readableAborted:{__proto__:null,enumerable:!1,get:function(){return!!(this._readableState.readable!==!1&&(this._readableState.destroyed||this._readableState.errored)&&!this._readableState.endEmitted)}},readableHighWaterMark:{__proto__:null,enumerable:!1,get:function(){return this._readableState.highWaterMark}},readableBuffer:{__proto__:null,enumerable:!1,get:function(){return this._readableState&&this._readableState.buffer}},readableFlowing:{__proto__:null,enumerable:!1,get:function(){return this._readableState.flowing},set:function(M){this._readableState&&(this._readableState.flowing=M)}},readableLength:{__proto__:null,enumerable:!1,get(){return this._readableState.length}},readableObjectMode:{__proto__:null,enumerable:!1,get(){return this._readableState?this._readableState.objectMode:!1}},readableEncoding:{__proto__:null,enumerable:!1,get(){return this._readableState?this._readableState.encoding:null}},errored:{__proto__:null,enumerable:!1,get(){return this._readableState?this._readableState.errored:null}},closed:{__proto__:null,get(){return this._readableState?this._readableState.closed:!1}},destroyed:{__proto__:null,enumerable:!1,get(){return this._readableState?this._readableState.destroyed:!1},set(M){this._readableState&&(this._readableState.destroyed=M)}},readableEnded:{__proto__:null,enumerable:!1,get(){return this._readableState?this._readableState.endEmitted:!1}}}),a(ke.prototype,{pipesCount:{__proto__:null,get(){return this.pipes.length}},paused:{__proto__:null,get(){return this[oe]!==!1},set(M){this[oe]=!!M}}}),de._fromList=Pe;function Pe(M,z){if(z.length===0)return null;let Ce;return z.objectMode?Ce=z.buffer.shift():!M||M>=z.length?(z.decoder?Ce=z.buffer.join(""):z.buffer.length===1?Ce=z.buffer.first():Ce=z.buffer.concat(z.length),z.buffer.clear()):Ce=z.buffer.consume(M,z.decoder),Ce}function Ue(M){let z=M._readableState;E("endReadable",z.endEmitted),z.endEmitted||(z.ended=!0,t.nextTick(qe,z,M))}function qe(M,z){if(E("endReadableNT",M.endEmitted,M.length),!M.errored&&!M.closeEmitted&&!M.endEmitted&&M.length===0){if(M.endEmitted=!0,z.emit("end"),z.writable&&z.allowHalfOpen===!1)t.nextTick(Ze,z);else if(M.autoDestroy){let Ce=z._writableState;(!Ce||Ce.autoDestroy&&(Ce.finished||Ce.writable===!1))&&z.destroy()}}}function Ze(M){M.writable&&!M.writableEnded&&!M.destroyed&&M.end()}de.from=function(M,z){return J(de,M,z)};var nt;function ht(){return nt===void 0&&(nt={}),nt}de.fromWeb=function(M,z){return ht().newStreamReadableFromReadableStream(M,z)},de.toWeb=function(M,z){return ht().newReadableStreamFromStreamReadable(M,z)},de.wrap=function(M,z){var Ce,Ie;return new de({objectMode:(Ce=(Ie=M.readableObjectMode)!==null&&Ie!==void 0?Ie:M.objectMode)!==null&&Ce!==void 0?Ce:!0,...z,destroy(Te,tt){x.destroyer(M,Te),tt(Te)}}).wrap(M)}}),On=_e((u,r)=>{be(),Ee(),we();var t=Ht(),{ArrayPrototypeSlice:l,Error:n,FunctionPrototypeSymbolHasInstance:o,ObjectDefineProperty:i,ObjectDefineProperties:a,ObjectSetPrototypeOf:s,StringPrototypeToLowerCase:c,Symbol:d,SymbolHasInstance:f}=Je();r.exports=ne,ne.WritableState=F;var{EventEmitter:m}=(Gt(),We(Tt)),h=Pn().Stream,{Buffer:p}=(ot(),We(rt)),w=nr(),{addAbortSignal:v}=Ir(),{getHighWaterMark:S,getDefaultHighWaterMark:y}=Ar(),{ERR_INVALID_ARG_TYPE:k,ERR_METHOD_NOT_IMPLEMENTED:_,ERR_MULTIPLE_CALLBACK:E,ERR_STREAM_CANNOT_PIPE:I,ERR_STREAM_DESTROYED:x,ERR_STREAM_ALREADY_FINISHED:V,ERR_STREAM_NULL_VALUES:$,ERR_STREAM_WRITE_AFTER_END:C,ERR_UNKNOWN_ENCODING:D}=lt().codes,{errorOrDestroy:A}=w;s(ne.prototype,h.prototype),s(ne,h);function U(){}var H=d("kOnFinished");function F(j,K,ae){typeof ae!="boolean"&&(ae=K instanceof Nt()),this.objectMode=!!(j&&j.objectMode),ae&&(this.objectMode=this.objectMode||!!(j&&j.writableObjectMode)),this.highWaterMark=j?S(this,j,"writableHighWaterMark",ae):y(!1),this.finalCalled=!1,this.needDrain=!1,this.ending=!1,this.ended=!1,this.finished=!1,this.destroyed=!1;let he=!!(j&&j.decodeStrings===!1);this.decodeStrings=!he,this.defaultEncoding=j&&j.defaultEncoding||"utf8",this.length=0,this.writing=!1,this.corked=0,this.sync=!0,this.bufferProcessing=!1,this.onwrite=R.bind(void 0,K),this.writecb=null,this.writelen=0,this.afterWriteTickInfo=null,ue(this),this.pendingcb=0,this.constructed=!0,this.prefinished=!1,this.errorEmitted=!1,this.emitClose=!j||j.emitClose!==!1,this.autoDestroy=!j||j.autoDestroy!==!1,this.errored=null,this.closed=!1,this.closeEmitted=!1,this[H]=[]}function ue(j){j.buffered=[],j.bufferedIndex=0,j.allBuffers=!0,j.allNoop=!0}F.prototype.getBuffer=function(){return l(this.buffered,this.bufferedIndex)},i(F.prototype,"bufferedRequestCount",{__proto__:null,get(){return this.buffered.length-this.bufferedIndex}});function ne(j){let K=this instanceof Nt();if(!K&&!o(ne,this))return new ne(j);this._writableState=new F(j,this,K),j&&(typeof j.write=="function"&&(this._write=j.write),typeof j.writev=="function"&&(this._writev=j.writev),typeof j.destroy=="function"&&(this._destroy=j.destroy),typeof j.final=="function"&&(this._final=j.final),typeof j.construct=="function"&&(this._construct=j.construct),j.signal&&v(j.signal,this)),h.call(this,j),w.construct(this,()=>{let ae=this._writableState;ae.writing||Ve(this,ae),X(this,ae)})}i(ne,f,{__proto__:null,value:function(j){return o(this,j)?!0:this!==ne?!1:j&&j._writableState instanceof F}}),ne.prototype.pipe=function(){A(this,new I)};function oe(j,K,ae,he){let pe=j._writableState;if(typeof ae=="function")he=ae,ae=pe.defaultEncoding;else{if(!ae)ae=pe.defaultEncoding;else if(ae!=="buffer"&&!p.isEncoding(ae))throw new D(ae);typeof he!="function"&&(he=U)}if(K===null)throw new $;if(!pe.objectMode)if(typeof K=="string")pe.decodeStrings!==!1&&(K=p.from(K,ae),ae="buffer");else if(K instanceof p)ae="buffer";else if(h._isUint8Array(K))K=h._uint8ArrayToBuffer(K),ae="buffer";else throw new k("chunk",["string","Buffer","Uint8Array"],K);let ve;return pe.ending?ve=new C:pe.destroyed&&(ve=new x("write")),ve?(t.nextTick(he,ve),A(j,ve,!0),ve):(pe.pendingcb++,fe(j,pe,K,ae,he))}ne.prototype.write=function(j,K,ae){return oe(this,j,K,ae)===!0},ne.prototype.cork=function(){this._writableState.corked++},ne.prototype.uncork=function(){let j=this._writableState;j.corked&&(j.corked--,j.writing||Ve(this,j))},ne.prototype.setDefaultEncoding=function(j){if(typeof j=="string"&&(j=c(j)),!p.isEncoding(j))throw new D(j);return this._writableState.defaultEncoding=j,this};function fe(j,K,ae,he,pe){let ve=K.objectMode?1:ae.length;K.length+=ve;let Q=K.length<K.highWaterMark;return Q||(K.needDrain=!0),K.writing||K.corked||K.errored||!K.constructed?(K.buffered.push({chunk:ae,encoding:he,callback:pe}),K.allBuffers&&he!=="buffer"&&(K.allBuffers=!1),K.allNoop&&pe!==U&&(K.allNoop=!1)):(K.writelen=ve,K.writecb=pe,K.writing=!0,K.sync=!0,j._write(ae,he,K.onwrite),K.sync=!1),Q&&!K.errored&&!K.destroyed}function J(j,K,ae,he,pe,ve,Q){K.writelen=he,K.writecb=Q,K.writing=!0,K.sync=!0,K.destroyed?K.onwrite(new x("write")):ae?j._writev(pe,K.onwrite):j._write(pe,ve,K.onwrite),K.sync=!1}function ie(j,K,ae,he){--K.pendingcb,he(ae),G(K),A(j,ae)}function R(j,K){let ae=j._writableState,he=ae.sync,pe=ae.writecb;if(typeof pe!="function"){A(j,new E);return}ae.writing=!1,ae.writecb=null,ae.length-=ae.writelen,ae.writelen=0,K?(K.stack,ae.errored||(ae.errored=K),j._readableState&&!j._readableState.errored&&(j._readableState.errored=K),he?t.nextTick(ie,j,ae,K,pe):ie(j,ae,K,pe)):(ae.buffered.length>ae.bufferedIndex&&Ve(j,ae),he?ae.afterWriteTickInfo!==null&&ae.afterWriteTickInfo.cb===pe?ae.afterWriteTickInfo.count++:(ae.afterWriteTickInfo={count:1,cb:pe,stream:j,state:ae},t.nextTick(Z,ae.afterWriteTickInfo)):ge(j,ae,1,pe))}function Z({stream:j,state:K,count:ae,cb:he}){return K.afterWriteTickInfo=null,ge(j,K,ae,he)}function ge(j,K,ae,he){for(!K.ending&&!j.destroyed&&K.length===0&&K.needDrain&&(K.needDrain=!1,j.emit("drain"));ae-- >0;)K.pendingcb--,he();K.destroyed&&G(K),X(j,K)}function G(j){if(j.writing)return;for(let pe=j.bufferedIndex;pe<j.buffered.length;++pe){var K;let{chunk:ve,callback:Q}=j.buffered[pe],ye=j.objectMode?1:ve.length;j.length-=ye,Q((K=j.errored)!==null&&K!==void 0?K:new x("write"))}let ae=j[H].splice(0);for(let pe=0;pe<ae.length;pe++){var he;ae[pe]((he=j.errored)!==null&&he!==void 0?he:new x("end"))}ue(j)}function Ve(j,K){if(K.corked||K.bufferProcessing||K.destroyed||!K.constructed)return;let{buffered:ae,bufferedIndex:he,objectMode:pe}=K,ve=ae.length-he;if(!ve)return;let Q=he;if(K.bufferProcessing=!0,ve>1&&j._writev){K.pendingcb-=ve-1;let ye=K.allNoop?U:de=>{for(let Ae=Q;Ae<ae.length;++Ae)ae[Ae].callback(de)},ke=K.allNoop&&Q===0?ae:l(ae,Q);ke.allBuffers=K.allBuffers,J(j,K,!0,K.length,ke,"",ye),ue(K)}else{do{let{chunk:ye,encoding:ke,callback:de}=ae[Q];ae[Q++]=null;let Ae=pe?1:ye.length;J(j,K,!1,Ae,ye,ke,de)}while(Q<ae.length&&!K.writing);Q===ae.length?ue(K):Q>256?(ae.splice(0,Q),K.bufferedIndex=0):K.bufferedIndex=Q}K.bufferProcessing=!1}ne.prototype._write=function(j,K,ae){if(this._writev)this._writev([{chunk:j,encoding:K}],ae);else throw new _("_write()")},ne.prototype._writev=null,ne.prototype.end=function(j,K,ae){let he=this._writableState;typeof j=="function"?(ae=j,j=null,K=null):typeof K=="function"&&(ae=K,K=null);let pe;if(j!=null){let ve=oe(this,j,K);ve instanceof n&&(pe=ve)}return he.corked&&(he.corked=1,this.uncork()),pe||(!he.errored&&!he.ending?(he.ending=!0,X(this,he,!0),he.ended=!0):he.finished?pe=new V("end"):he.destroyed&&(pe=new x("end"))),typeof ae=="function"&&(pe||he.finished?t.nextTick(ae,pe):he[H].push(ae)),this};function ee(j){return j.ending&&!j.destroyed&&j.constructed&&j.length===0&&!j.errored&&j.buffered.length===0&&!j.finished&&!j.writing&&!j.errorEmitted&&!j.closeEmitted}function q(j,K){let ae=!1;function he(pe){if(ae){A(j,pe??E());return}if(ae=!0,K.pendingcb--,pe){let ve=K[H].splice(0);for(let Q=0;Q<ve.length;Q++)ve[Q](pe);A(j,pe,K.sync)}else ee(K)&&(K.prefinished=!0,j.emit("prefinish"),K.pendingcb++,t.nextTick(re,j,K))}K.sync=!0,K.pendingcb++;try{j._final(he)}catch(pe){he(pe)}K.sync=!1}function ce(j,K){!K.prefinished&&!K.finalCalled&&(typeof j._final=="function"&&!K.destroyed?(K.finalCalled=!0,q(j,K)):(K.prefinished=!0,j.emit("prefinish")))}function X(j,K,ae){ee(K)&&(ce(j,K),K.pendingcb===0&&(ae?(K.pendingcb++,t.nextTick((he,pe)=>{ee(pe)?re(he,pe):pe.pendingcb--},j,K)):ee(K)&&(K.pendingcb++,re(j,K))))}function re(j,K){K.pendingcb--,K.finished=!0;let ae=K[H].splice(0);for(let he=0;he<ae.length;he++)ae[he]();if(j.emit("finish"),K.autoDestroy){let he=j._readableState;(!he||he.autoDestroy&&(he.endEmitted||he.readable===!1))&&j.destroy()}}a(ne.prototype,{closed:{__proto__:null,get(){return this._writableState?this._writableState.closed:!1}},destroyed:{__proto__:null,get(){return this._writableState?this._writableState.destroyed:!1},set(j){this._writableState&&(this._writableState.destroyed=j)}},writable:{__proto__:null,get(){let j=this._writableState;return!!j&&j.writable!==!1&&!j.destroyed&&!j.errored&&!j.ending&&!j.ended},set(j){this._writableState&&(this._writableState.writable=!!j)}},writableFinished:{__proto__:null,get(){return this._writableState?this._writableState.finished:!1}},writableObjectMode:{__proto__:null,get(){return this._writableState?this._writableState.objectMode:!1}},writableBuffer:{__proto__:null,get(){return this._writableState&&this._writableState.getBuffer()}},writableEnded:{__proto__:null,get(){return this._writableState?this._writableState.ending:!1}},writableNeedDrain:{__proto__:null,get(){let j=this._writableState;return j?!j.destroyed&&!j.ending&&j.needDrain:!1}},writableHighWaterMark:{__proto__:null,get(){return this._writableState&&this._writableState.highWaterMark}},writableCorked:{__proto__:null,get(){return this._writableState?this._writableState.corked:0}},writableLength:{__proto__:null,get(){return this._writableState&&this._writableState.length}},errored:{__proto__:null,enumerable:!1,get(){return this._writableState?this._writableState.errored:null}},writableAborted:{__proto__:null,enumerable:!1,get:function(){return!!(this._writableState.writable!==!1&&(this._writableState.destroyed||this._writableState.errored)&&!this._writableState.finished)}}});var O=w.destroy;ne.prototype.destroy=function(j,K){let ae=this._writableState;return!ae.destroyed&&(ae.bufferedIndex<ae.buffered.length||ae[H].length)&&t.nextTick(G,ae),O.call(this,j,K),this},ne.prototype._undestroy=w.undestroy,ne.prototype._destroy=function(j,K){K(j)},ne.prototype[m.captureRejectionSymbol]=function(j){this.destroy(j)};var te;function se(){return te===void 0&&(te={}),te}ne.fromWeb=function(j,K){return se().newStreamWritableFromWritableStream(j,K)},ne.toWeb=function(j){return se().newWritableStreamFromStreamWritable(j)}}),py=_e((u,r)=>{be(),Ee(),we();var t=Ht(),l=(ot(),We(rt)),{isReadable:n,isWritable:o,isIterable:i,isNodeStream:a,isReadableNodeStream:s,isWritableNodeStream:c,isDuplexNodeStream:d,isReadableStream:f,isWritableStream:m}=_t(),h=Bt(),{AbortError:p,codes:{ERR_INVALID_ARG_TYPE:w,ERR_INVALID_RETURN_VALUE:v}}=lt(),{destroyer:S}=nr(),y=Nt(),k=$r(),_=On(),{createDeferredPromise:E}=ut(),I=Fs(),x=globalThis.Blob||l.Blob,V=typeof x<"u"?function(H){return H instanceof x}:function(H){return!1},$=globalThis.AbortController||hr().AbortController,{FunctionPrototypeCall:C}=Je(),D=class extends y{constructor(H){super(H),(H==null?void 0:H.readable)===!1&&(this._readableState.readable=!1,this._readableState.ended=!0,this._readableState.endEmitted=!0),(H==null?void 0:H.writable)===!1&&(this._writableState.writable=!1,this._writableState.ending=!0,this._writableState.ended=!0,this._writableState.finished=!0)}};r.exports=function H(F,ue){if(d(F))return F;if(s(F))return U({readable:F});if(c(F))return U({writable:F});if(a(F))return U({writable:!1,readable:!1});if(f(F))return U({readable:k.fromWeb(F)});if(m(F))return U({writable:_.fromWeb(F)});if(typeof F=="function"){let{value:oe,write:fe,final:J,destroy:ie}=A(F);if(i(oe))return I(D,oe,{objectMode:!0,write:fe,final:J,destroy:ie});let R=oe==null?void 0:oe.then;if(typeof R=="function"){let Z,ge=C(R,oe,G=>{if(G!=null)throw new v("nully","body",G)},G=>{S(Z,G)});return Z=new D({objectMode:!0,readable:!1,write:fe,final(G){J(async()=>{try{await ge,t.nextTick(G,null)}catch(Ve){t.nextTick(G,Ve)}})},destroy:ie})}throw new v("Iterable, AsyncIterable or AsyncFunction",ue,oe)}if(V(F))return H(F.arrayBuffer());if(i(F))return I(D,F,{objectMode:!0,writable:!1});if(f(F==null?void 0:F.readable)&&m(F==null?void 0:F.writable))return D.fromWeb(F);if(typeof(F==null?void 0:F.writable)=="object"||typeof(F==null?void 0:F.readable)=="object"){let oe=F!=null&&F.readable?s(F==null?void 0:F.readable)?F==null?void 0:F.readable:H(F.readable):void 0,fe=F!=null&&F.writable?c(F==null?void 0:F.writable)?F==null?void 0:F.writable:H(F.writable):void 0;return U({readable:oe,writable:fe})}let ne=F==null?void 0:F.then;if(typeof ne=="function"){let oe;return C(ne,F,fe=>{fe!=null&&oe.push(fe),oe.push(null)},fe=>{S(oe,fe)}),oe=new D({objectMode:!0,writable:!1,read(){}})}throw new w(ue,["Blob","ReadableStream","WritableStream","Stream","Iterable","AsyncIterable","Function","{ readable, writable } pair","Promise"],F)};function A(H){let{promise:F,resolve:ue}=E(),ne=new $,oe=ne.signal;return{value:H(async function*(){for(;;){let fe=F;F=null;let{chunk:J,done:ie,cb:R}=await fe;if(t.nextTick(R),ie)return;if(oe.aborted)throw new p(void 0,{cause:oe.reason});({promise:F,resolve:ue}=E()),yield J}}(),{signal:oe}),write(fe,J,ie){let R=ue;ue=null,R({chunk:fe,done:!1,cb:ie})},final(fe){let J=ue;ue=null,J({done:!0,cb:fe})},destroy(fe,J){ne.abort(),J(fe)}}}function U(H){let F=H.readable&&typeof H.readable.read!="function"?k.wrap(H.readable):H.readable,ue=H.writable,ne=!!n(F),oe=!!o(ue),fe,J,ie,R,Z;function ge(G){let Ve=R;R=null,Ve?Ve(G):G&&Z.destroy(G)}return Z=new D({readableObjectMode:!!(F!=null&&F.readableObjectMode),writableObjectMode:!!(ue!=null&&ue.writableObjectMode),readable:ne,writable:oe}),oe&&(h(ue,G=>{oe=!1,G&&S(F,G),ge(G)}),Z._write=function(G,Ve,ee){ue.write(G,Ve)?ee():fe=ee},Z._final=function(G){ue.end(),J=G},ue.on("drain",function(){if(fe){let G=fe;fe=null,G()}}),ue.on("finish",function(){if(J){let G=J;J=null,G()}})),ne&&(h(F,G=>{ne=!1,G&&S(F,G),ge(G)}),F.on("readable",function(){if(ie){let G=ie;ie=null,G()}}),F.on("end",function(){Z.push(null)}),Z._read=function(){for(;;){let G=F.read();if(G===null){ie=Z._read;return}if(!Z.push(G))return}}),Z._destroy=function(G,Ve){!G&&R!==null&&(G=new p),ie=null,fe=null,J=null,R===null?Ve(G):(R=Ve,S(ue,G),S(F,G))},Z}}),Nt=_e((u,r)=>{be(),Ee(),we();var{ObjectDefineProperties:t,ObjectGetOwnPropertyDescriptor:l,ObjectKeys:n,ObjectSetPrototypeOf:o}=Je();r.exports=s;var i=$r(),a=On();o(s.prototype,i.prototype),o(s,i);{let m=n(a.prototype);for(let h=0;h<m.length;h++){let p=m[h];s.prototype[p]||(s.prototype[p]=a.prototype[p])}}function s(m){if(!(this instanceof s))return new s(m);i.call(this,m),a.call(this,m),m?(this.allowHalfOpen=m.allowHalfOpen!==!1,m.readable===!1&&(this._readableState.readable=!1,this._readableState.ended=!0,this._readableState.endEmitted=!0),m.writable===!1&&(this._writableState.writable=!1,this._writableState.ending=!0,this._writableState.ended=!0,this._writableState.finished=!0)):this.allowHalfOpen=!0}t(s.prototype,{writable:{__proto__:null,...l(a.prototype,"writable")},writableHighWaterMark:{__proto__:null,...l(a.prototype,"writableHighWaterMark")},writableObjectMode:{__proto__:null,...l(a.prototype,"writableObjectMode")},writableBuffer:{__proto__:null,...l(a.prototype,"writableBuffer")},writableLength:{__proto__:null,...l(a.prototype,"writableLength")},writableFinished:{__proto__:null,...l(a.prototype,"writableFinished")},writableCorked:{__proto__:null,...l(a.prototype,"writableCorked")},writableEnded:{__proto__:null,...l(a.prototype,"writableEnded")},writableNeedDrain:{__proto__:null,...l(a.prototype,"writableNeedDrain")},destroyed:{__proto__:null,get(){return this._readableState===void 0||this._writableState===void 0?!1:this._readableState.destroyed&&this._writableState.destroyed},set(m){this._readableState&&this._writableState&&(this._readableState.destroyed=m,this._writableState.destroyed=m)}}});var c;function d(){return c===void 0&&(c={}),c}s.fromWeb=function(m,h){return d().newStreamDuplexFromReadableWritablePair(m,h)},s.toWeb=function(m){return d().newReadableWritablePairFromDuplex(m)};var f;s.from=function(m){return f||(f=py()),f(m,"body")}}),zs=_e((u,r)=>{be(),Ee(),we();var{ObjectSetPrototypeOf:t,Symbol:l}=Je();r.exports=s;var{ERR_METHOD_NOT_IMPLEMENTED:n}=lt().codes,o=Nt(),{getHighWaterMark:i}=Ar();t(s.prototype,o.prototype),t(s,o);var a=l("kCallback");function s(f){if(!(this instanceof s))return new s(f);let m=f?i(this,f,"readableHighWaterMark",!0):null;m===0&&(f={...f,highWaterMark:null,readableHighWaterMark:m,writableHighWaterMark:f.writableHighWaterMark||0}),o.call(this,f),this._readableState.sync=!1,this[a]=null,f&&(typeof f.transform=="function"&&(this._transform=f.transform),typeof f.flush=="function"&&(this._flush=f.flush)),this.on("prefinish",d)}function c(f){typeof this._flush=="function"&&!this.destroyed?this._flush((m,h)=>{if(m){f?f(m):this.destroy(m);return}h!=null&&this.push(h),this.push(null),f&&f()}):(this.push(null),f&&f())}function d(){this._final!==c&&c.call(this)}s.prototype._final=c,s.prototype._transform=function(f,m,h){throw new n("_transform()")},s.prototype._write=function(f,m,h){let p=this._readableState,w=this._writableState,v=p.length;this._transform(f,m,(S,y)=>{if(S){h(S);return}y!=null&&this.push(y),w.ended||v===p.length||p.length<p.highWaterMark?h():this[a]=h})},s.prototype._read=function(){if(this[a]){let f=this[a];this[a]=null,f()}}}),Ws=_e((u,r)=>{be(),Ee(),we();var{ObjectSetPrototypeOf:t}=Je();r.exports=n;var l=zs();t(n.prototype,l.prototype),t(n,l);function n(o){if(!(this instanceof n))return new n(o);l.call(this,o)}n.prototype._transform=function(o,i,a){a(null,o)}}),Mn=_e((u,r)=>{be(),Ee(),we();var t=Ht(),{ArrayIsArray:l,Promise:n,SymbolAsyncIterator:o,SymbolDispose:i}=Je(),a=Bt(),{once:s}=ut(),c=nr(),d=Nt(),{aggregateTwoErrors:f,codes:{ERR_INVALID_ARG_TYPE:m,ERR_INVALID_RETURN_VALUE:h,ERR_MISSING_ARGS:p,ERR_STREAM_DESTROYED:w,ERR_STREAM_PREMATURE_CLOSE:v},AbortError:S}=lt(),{validateFunction:y,validateAbortSignal:k}=gr(),{isIterable:_,isReadable:E,isReadableNodeStream:I,isNodeStream:x,isTransformStream:V,isWebStream:$,isReadableStream:C,isReadableFinished:D}=_t(),A=globalThis.AbortController||hr().AbortController,U,H,F;function ue(G,Ve,ee){let q=!1;G.on("close",()=>{q=!0});let ce=a(G,{readable:Ve,writable:ee},X=>{q=!X});return{destroy:X=>{q||(q=!0,c.destroyer(G,X||new w("pipe")))},cleanup:ce}}function ne(G){return y(G[G.length-1],"streams[stream.length - 1]"),G.pop()}function oe(G){if(_(G))return G;if(I(G))return fe(G);throw new m("val",["Readable","Iterable","AsyncIterable"],G)}async function*fe(G){H||(H=$r()),yield*H.prototype[o].call(G)}async function J(G,Ve,ee,{end:q}){let ce,X=null,re=se=>{if(se&&(ce=se),X){let j=X;X=null,j()}},O=()=>new n((se,j)=>{ce?j(ce):X=()=>{ce?j(ce):se()}});Ve.on("drain",re);let te=a(Ve,{readable:!1},re);try{Ve.writableNeedDrain&&await O();for await(let se of G)Ve.write(se)||await O();q&&(Ve.end(),await O()),ee()}catch(se){ee(ce!==se?f(ce,se):se)}finally{te(),Ve.off("drain",re)}}async function ie(G,Ve,ee,{end:q}){V(Ve)&&(Ve=Ve.writable);let ce=Ve.getWriter();try{for await(let X of G)await ce.ready,ce.write(X).catch(()=>{});await ce.ready,q&&await ce.close(),ee()}catch(X){try{await ce.abort(X),ee(X)}catch(re){ee(re)}}}function R(...G){return Z(G,s(ne(G)))}function Z(G,Ve,ee){if(G.length===1&&l(G[0])&&(G=G[0]),G.length<2)throw new p("streams");let q=new A,ce=q.signal,X=ee==null?void 0:ee.signal,re=[];k(X,"options.signal");function O(){pe(new S)}F=F||ut().addAbortListener;let te;X&&(te=F(X,O));let se,j,K=[],ae=0;function he(ke){pe(ke,--ae===0)}function pe(ke,de){var Ae;if(ke&&(!se||se.code==="ERR_STREAM_PREMATURE_CLOSE")&&(se=ke),!(!se&&!de)){for(;K.length;)K.shift()(se);(Ae=te)===null||Ae===void 0||Ae[i](),q.abort(),de&&(se||re.forEach(g=>g()),t.nextTick(Ve,se,j))}}let ve;for(let ke=0;ke<G.length;ke++){let de=G[ke],Ae=ke<G.length-1,g=ke>0,b=Ae||(ee==null?void 0:ee.end)!==!1,N=ke===G.length-1;if(x(de)){let T=function(L){L&&L.name!=="AbortError"&&L.code!=="ERR_STREAM_PREMATURE_CLOSE"&&he(L)};if(b){let{destroy:L,cleanup:Y}=ue(de,Ae,g);K.push(L),E(de)&&N&&re.push(Y)}de.on("error",T),E(de)&&N&&re.push(()=>{de.removeListener("error",T)})}if(ke===0)if(typeof de=="function"){if(ve=de({signal:ce}),!_(ve))throw new h("Iterable, AsyncIterable or Stream","source",ve)}else _(de)||I(de)||V(de)?ve=de:ve=d.from(de);else if(typeof de=="function"){if(V(ve)){var Q;ve=oe((Q=ve)===null||Q===void 0?void 0:Q.readable)}else ve=oe(ve);if(ve=de(ve,{signal:ce}),Ae){if(!_(ve,!0))throw new h("AsyncIterable",`transform[${ke-1}]`,ve)}else{var ye;U||(U=Ws());let T=new U({objectMode:!0}),L=(ye=ve)===null||ye===void 0?void 0:ye.then;if(typeof L=="function")ae++,L.call(ve,B=>{j=B,B!=null&&T.write(B),b&&T.end(),t.nextTick(he)},B=>{T.destroy(B),t.nextTick(he,B)});else if(_(ve,!0))ae++,J(ve,T,he,{end:b});else if(C(ve)||V(ve)){let B=ve.readable||ve;ae++,J(B,T,he,{end:b})}else throw new h("AsyncIterable or Promise","destination",ve);ve=T;let{destroy:Y,cleanup:le}=ue(ve,!1,!0);K.push(Y),N&&re.push(le)}}else if(x(de)){if(I(ve)){ae+=2;let T=ge(ve,de,he,{end:b});E(de)&&N&&re.push(T)}else if(V(ve)||C(ve)){let T=ve.readable||ve;ae++,J(T,de,he,{end:b})}else if(_(ve))ae++,J(ve,de,he,{end:b});else throw new m("val",["Readable","Iterable","AsyncIterable","ReadableStream","TransformStream"],ve);ve=de}else if($(de)){if(I(ve))ae++,ie(oe(ve),de,he,{end:b});else if(C(ve)||_(ve))ae++,ie(ve,de,he,{end:b});else if(V(ve))ae++,ie(ve.readable,de,he,{end:b});else throw new m("val",["Readable","Iterable","AsyncIterable","ReadableStream","TransformStream"],ve);ve=de}else ve=d.from(de)}return(ce!=null&&ce.aborted||X!=null&&X.aborted)&&t.nextTick(O),ve}function ge(G,Ve,ee,{end:q}){let ce=!1;if(Ve.on("close",()=>{ce||ee(new v)}),G.pipe(Ve,{end:!1}),q){let X=function(){ce=!0,Ve.end()};D(G)?t.nextTick(X):G.once("end",X)}else ee();return a(G,{readable:!0,writable:!1},X=>{let re=G._readableState;X&&X.code==="ERR_STREAM_PREMATURE_CLOSE"&&re&&re.ended&&!re.errored&&!re.errorEmitted?G.once("end",ee).once("error",ee):ee(X)}),a(Ve,{readable:!1,writable:!0},ee)}r.exports={pipelineImpl:Z,pipeline:R}}),qs=_e((u,r)=>{be(),Ee(),we();var{pipeline:t}=Mn(),l=Nt(),{destroyer:n}=nr(),{isNodeStream:o,isReadable:i,isWritable:a,isWebStream:s,isTransformStream:c,isWritableStream:d,isReadableStream:f}=_t(),{AbortError:m,codes:{ERR_INVALID_ARG_VALUE:h,ERR_MISSING_ARGS:p}}=lt(),w=Bt();r.exports=function(...v){if(v.length===0)throw new p("streams");if(v.length===1)return l.from(v[0]);let S=[...v];if(typeof v[0]=="function"&&(v[0]=l.from(v[0])),typeof v[v.length-1]=="function"){let A=v.length-1;v[A]=l.from(v[A])}for(let A=0;A<v.length;++A)if(!(!o(v[A])&&!s(v[A]))){if(A<v.length-1&&!(i(v[A])||f(v[A])||c(v[A])))throw new h(`streams[${A}]`,S[A],"must be readable");if(A>0&&!(a(v[A])||d(v[A])||c(v[A])))throw new h(`streams[${A}]`,S[A],"must be writable")}let y,k,_,E,I;function x(A){let U=E;E=null,U?U(A):A?I.destroy(A):!D&&!C&&I.destroy()}let V=v[0],$=t(v,x),C=!!(a(V)||d(V)||c(V)),D=!!(i($)||f($)||c($));if(I=new l({writableObjectMode:!!(V!=null&&V.writableObjectMode),readableObjectMode:!!($!=null&&$.readableObjectMode),writable:C,readable:D}),C){if(o(V))I._write=function(U,H,F){V.write(U,H)?F():y=F},I._final=function(U){V.end(),k=U},V.on("drain",function(){if(y){let U=y;y=null,U()}});else if(s(V)){let U=(c(V)?V.writable:V).getWriter();I._write=async function(H,F,ue){try{await U.ready,U.write(H).catch(()=>{}),ue()}catch(ne){ue(ne)}},I._final=async function(H){try{await U.ready,U.close().catch(()=>{}),k=H}catch(F){H(F)}}}let A=c($)?$.readable:$;w(A,()=>{if(k){let U=k;k=null,U()}})}if(D){if(o($))$.on("readable",function(){if(_){let A=_;_=null,A()}}),$.on("end",function(){I.push(null)}),I._read=function(){for(;;){let A=$.read();if(A===null){_=I._read;return}if(!I.push(A))return}};else if(s($)){let A=(c($)?$.readable:$).getReader();I._read=async function(){for(;;)try{let{value:U,done:H}=await A.read();if(!I.push(U))return;if(H){I.push(null);return}}catch{return}}}}return I._destroy=function(A,U){!A&&E!==null&&(A=new m),_=null,y=null,k=null,E===null?U(A):(E=U,o($)&&n($,A))},I}}),hy=_e((u,r)=>{be(),Ee(),we();var t=globalThis.AbortController||hr().AbortController,{codes:{ERR_INVALID_ARG_VALUE:l,ERR_INVALID_ARG_TYPE:n,ERR_MISSING_ARGS:o,ERR_OUT_OF_RANGE:i},AbortError:a}=lt(),{validateAbortSignal:s,validateInteger:c,validateObject:d}=gr(),f=Je().Symbol("kWeak"),m=Je().Symbol("kResistStopPropagation"),{finished:h}=Bt(),p=qs(),{addAbortSignalNoValidate:w}=Ir(),{isWritable:v,isNodeStream:S}=_t(),{deprecate:y}=ut(),{ArrayPrototypePush:k,Boolean:_,MathFloor:E,Number:I,NumberIsNaN:x,Promise:V,PromiseReject:$,PromiseResolve:C,PromisePrototypeThen:D,Symbol:A}=Je(),U=A("kEmpty"),H=A("kEof");function F(X,re){if(re!=null&&d(re,"options"),(re==null?void 0:re.signal)!=null&&s(re.signal,"options.signal"),S(X)&&!v(X))throw new l("stream",X,"must be writable");let O=p(this,X);return re!=null&&re.signal&&w(re.signal,O),O}function ue(X,re){if(typeof X!="function")throw new n("fn",["Function","AsyncFunction"],X);re!=null&&d(re,"options"),(re==null?void 0:re.signal)!=null&&s(re.signal,"options.signal");let O=1;(re==null?void 0:re.concurrency)!=null&&(O=E(re.concurrency));let te=O-1;return(re==null?void 0:re.highWaterMark)!=null&&(te=E(re.highWaterMark)),c(O,"options.concurrency",1),c(te,"options.highWaterMark",0),te+=O,(async function*(){let se=ut().AbortSignalAny([re==null?void 0:re.signal].filter(_)),j=this,K=[],ae={signal:se},he,pe,ve=!1,Q=0;function ye(){ve=!0,ke()}function ke(){Q-=1,de()}function de(){pe&&!ve&&Q<O&&K.length<te&&(pe(),pe=null)}async function Ae(){try{for await(let g of j){if(ve)return;if(se.aborted)throw new a;try{if(g=X(g,ae),g===U)continue;g=C(g)}catch(b){g=$(b)}Q+=1,D(g,ke,ye),K.push(g),he&&(he(),he=null),!ve&&(K.length>=te||Q>=O)&&await new V(b=>{pe=b})}K.push(H)}catch(g){let b=$(g);D(b,ke,ye),K.push(b)}finally{ve=!0,he&&(he(),he=null)}}Ae();try{for(;;){for(;K.length>0;){let g=await K[0];if(g===H)return;if(se.aborted)throw new a;g!==U&&(yield g),K.shift(),de()}await new V(g=>{he=g})}}finally{ve=!0,pe&&(pe(),pe=null)}}).call(this)}function ne(X=void 0){return X!=null&&d(X,"options"),(X==null?void 0:X.signal)!=null&&s(X.signal,"options.signal"),(async function*(){let re=0;for await(let te of this){var O;if(X!=null&&(O=X.signal)!==null&&O!==void 0&&O.aborted)throw new a({cause:X.signal.reason});yield[re++,te]}}).call(this)}async function oe(X,re=void 0){for await(let O of R.call(this,X,re))return!0;return!1}async function fe(X,re=void 0){if(typeof X!="function")throw new n("fn",["Function","AsyncFunction"],X);return!await oe.call(this,async(...O)=>!await X(...O),re)}async function J(X,re){for await(let O of R.call(this,X,re))return O}async function ie(X,re){if(typeof X!="function")throw new n("fn",["Function","AsyncFunction"],X);async function O(te,se){return await X(te,se),U}for await(let te of ue.call(this,O,re));}function R(X,re){if(typeof X!="function")throw new n("fn",["Function","AsyncFunction"],X);async function O(te,se){return await X(te,se)?te:U}return ue.call(this,O,re)}var Z=class extends o{constructor(){super("reduce"),this.message="Reduce of an empty stream requires an initial value"}};async function ge(X,re,O){var te;if(typeof X!="function")throw new n("reducer",["Function","AsyncFunction"],X);O!=null&&d(O,"options"),(O==null?void 0:O.signal)!=null&&s(O.signal,"options.signal");let se=arguments.length>1;if(O!=null&&(te=O.signal)!==null&&te!==void 0&&te.aborted){let pe=new a(void 0,{cause:O.signal.reason});throw this.once("error",()=>{}),await h(this.destroy(pe)),pe}let j=new t,K=j.signal;if(O!=null&&O.signal){let pe={once:!0,[f]:this,[m]:!0};O.signal.addEventListener("abort",()=>j.abort(),pe)}let ae=!1;try{for await(let pe of this){var he;if(ae=!0,O!=null&&(he=O.signal)!==null&&he!==void 0&&he.aborted)throw new a;se?re=await X(re,pe,{signal:K}):(re=pe,se=!0)}if(!ae&&!se)throw new Z}finally{j.abort()}return re}async function G(X){X!=null&&d(X,"options"),(X==null?void 0:X.signal)!=null&&s(X.signal,"options.signal");let re=[];for await(let te of this){var O;if(X!=null&&(O=X.signal)!==null&&O!==void 0&&O.aborted)throw new a(void 0,{cause:X.signal.reason});k(re,te)}return re}function Ve(X,re){let O=ue.call(this,X,re);return(async function*(){for await(let te of O)yield*te}).call(this)}function ee(X){if(X=I(X),x(X))return 0;if(X<0)throw new i("number",">= 0",X);return X}function q(X,re=void 0){return re!=null&&d(re,"options"),(re==null?void 0:re.signal)!=null&&s(re.signal,"options.signal"),X=ee(X),(async function*(){var O;if(re!=null&&(O=re.signal)!==null&&O!==void 0&&O.aborted)throw new a;for await(let se of this){var te;if(re!=null&&(te=re.signal)!==null&&te!==void 0&&te.aborted)throw new a;X--<=0&&(yield se)}}).call(this)}function ce(X,re=void 0){return re!=null&&d(re,"options"),(re==null?void 0:re.signal)!=null&&s(re.signal,"options.signal"),X=ee(X),(async function*(){var O;if(re!=null&&(O=re.signal)!==null&&O!==void 0&&O.aborted)throw new a;for await(let se of this){var te;if(re!=null&&(te=re.signal)!==null&&te!==void 0&&te.aborted)throw new a;if(X-- >0&&(yield se),X<=0)return}}).call(this)}r.exports.streamReturningOperators={asIndexedPairs:y(ne,"readable.asIndexedPairs will be removed in a future version."),drop:q,filter:R,flatMap:Ve,map:ue,take:ce,compose:F},r.exports.promiseReturningOperators={every:fe,forEach:ie,reduce:ge,toArray:G,some:oe,find:J}}),Gs=_e((u,r)=>{be(),Ee(),we();var{ArrayPrototypePop:t,Promise:l}=Je(),{isIterable:n,isNodeStream:o,isWebStream:i}=_t(),{pipelineImpl:a}=Mn(),{finished:s}=Bt();Hs();function c(...d){return new l((f,m)=>{let h,p,w=d[d.length-1];if(w&&typeof w=="object"&&!o(w)&&!n(w)&&!i(w)){let v=t(d);h=v.signal,p=v.end}a(d,(v,S)=>{v?m(v):f(S)},{signal:h,end:p})})}r.exports={finished:s,pipeline:c}}),Hs=_e((u,r)=>{be(),Ee(),we();var{Buffer:t}=(ot(),We(rt)),{ObjectDefineProperty:l,ObjectKeys:n,ReflectApply:o}=Je(),{promisify:{custom:i}}=ut(),{streamReturningOperators:a,promiseReturningOperators:s}=hy(),{codes:{ERR_ILLEGAL_CONSTRUCTOR:c}}=lt(),d=qs(),{setDefaultHighWaterMark:f,getDefaultHighWaterMark:m}=Ar(),{pipeline:h}=Mn(),{destroyer:p}=nr(),w=Bt(),v=Gs(),S=_t(),y=r.exports=Pn().Stream;y.isDestroyed=S.isDestroyed,y.isDisturbed=S.isDisturbed,y.isErrored=S.isErrored,y.isReadable=S.isReadable,y.isWritable=S.isWritable,y.Readable=$r();for(let _ of n(a)){let E=function(...x){if(new.target)throw c();return y.Readable.from(o(I,this,x))},I=a[_];l(E,"name",{__proto__:null,value:I.name}),l(E,"length",{__proto__:null,value:I.length}),l(y.Readable.prototype,_,{__proto__:null,value:E,enumerable:!1,configurable:!0,writable:!0})}for(let _ of n(s)){let E=function(...x){if(new.target)throw c();return o(I,this,x)},I=s[_];l(E,"name",{__proto__:null,value:I.name}),l(E,"length",{__proto__:null,value:I.length}),l(y.Readable.prototype,_,{__proto__:null,value:E,enumerable:!1,configurable:!0,writable:!0})}y.Writable=On(),y.Duplex=Nt(),y.Transform=zs(),y.PassThrough=Ws(),y.pipeline=h;var{addAbortSignal:k}=Ir();y.addAbortSignal=k,y.finished=w,y.destroy=p,y.compose=d,y.setDefaultHighWaterMark=f,y.getDefaultHighWaterMark=m,l(y,"promises",{__proto__:null,configurable:!0,enumerable:!0,get(){return v}}),l(h,i,{__proto__:null,enumerable:!0,get(){return v.pipeline}}),l(w,i,{__proto__:null,enumerable:!0,get(){return v.finished}}),y.Stream=y,y._isUint8Array=function(_){return _ instanceof Uint8Array},y._uint8ArrayToBuffer=function(_){return t.from(_.buffer,_.byteOffset,_.byteLength)}}),Kt=_e((u,r)=>{be(),Ee(),we();var t=Hs(),l=Gs(),n=t.Readable.destroy;r.exports=t.Readable,r.exports._uint8ArrayToBuffer=t._uint8ArrayToBuffer,r.exports._isUint8Array=t._isUint8Array,r.exports.isDisturbed=t.isDisturbed,r.exports.isErrored=t.isErrored,r.exports.isReadable=t.isReadable,r.exports.Readable=t.Readable,r.exports.Writable=t.Writable,r.exports.Duplex=t.Duplex,r.exports.Transform=t.Transform,r.exports.PassThrough=t.PassThrough,r.exports.addAbortSignal=t.addAbortSignal,r.exports.finished=t.finished,r.exports.destroy=t.destroy,r.exports.destroy=n,r.exports.pipeline=t.pipeline,r.exports.compose=t.compose,Object.defineProperty(t,"promises",{configurable:!0,enumerable:!0,get(){return l}}),r.exports.Stream=t.Stream,r.exports.default=r.exports}),my=_e((u,r)=>{be(),Ee(),we(),typeof Object.create=="function"?r.exports=function(t,l){l&&(t.super_=l,t.prototype=Object.create(l.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}))}:r.exports=function(t,l){if(l){t.super_=l;var n=function(){};n.prototype=l.prototype,t.prototype=new n,t.prototype.constructor=t}}}),gy=_e((u,r)=>{be(),Ee(),we();var{Buffer:t}=(ot(),We(rt)),l=Symbol.for("BufferList");function n(o){if(!(this instanceof n))return new n(o);n._init.call(this,o)}n._init=function(o){Object.defineProperty(this,l,{value:!0}),this._bufs=[],this.length=0,o&&this.append(o)},n.prototype._new=function(o){return new n(o)},n.prototype._offset=function(o){if(o===0)return[0,0];let i=0;for(let a=0;a<this._bufs.length;a++){let s=i+this._bufs[a].length;if(o<s||a===this._bufs.length-1)return[a,o-i];i=s}},n.prototype._reverseOffset=function(o){let i=o[0],a=o[1];for(let s=0;s<i;s++)a+=this._bufs[s].length;return a},n.prototype.getBuffers=function(){return this._bufs},n.prototype.get=function(o){if(o>this.length||o<0)return;let i=this._offset(o);return this._bufs[i[0]][i[1]]},n.prototype.slice=function(o,i){return typeof o=="number"&&o<0&&(o+=this.length),typeof i=="number"&&i<0&&(i+=this.length),this.copy(null,0,o,i)},n.prototype.copy=function(o,i,a,s){if((typeof a!="number"||a<0)&&(a=0),(typeof s!="number"||s>this.length)&&(s=this.length),a>=this.length||s<=0)return o||t.alloc(0);let c=!!o,d=this._offset(a),f=s-a,m=f,h=c&&i||0,p=d[1];if(a===0&&s===this.length){if(!c)return this._bufs.length===1?this._bufs[0]:t.concat(this._bufs,this.length);for(let w=0;w<this._bufs.length;w++)this._bufs[w].copy(o,h),h+=this._bufs[w].length;return o}if(m<=this._bufs[d[0]].length-p)return c?this._bufs[d[0]].copy(o,i,p,p+m):this._bufs[d[0]].slice(p,p+m);c||(o=t.allocUnsafe(f));for(let w=d[0];w<this._bufs.length;w++){let v=this._bufs[w].length-p;if(m>v)this._bufs[w].copy(o,h,p),h+=v;else{this._bufs[w].copy(o,h,p,p+m),h+=v;break}m-=v,p&&(p=0)}return o.length>h?o.slice(0,h):o},n.prototype.shallowSlice=function(o,i){if(o=o||0,i=typeof i!="number"?this.length:i,o<0&&(o+=this.length),i<0&&(i+=this.length),o===i)return this._new();let a=this._offset(o),s=this._offset(i),c=this._bufs.slice(a[0],s[0]+1);return s[1]===0?c.pop():c[c.length-1]=c[c.length-1].slice(0,s[1]),a[1]!==0&&(c[0]=c[0].slice(a[1])),this._new(c)},n.prototype.toString=function(o,i,a){return this.slice(i,a).toString(o)},n.prototype.consume=function(o){if(o=Math.trunc(o),Number.isNaN(o)||o<=0)return this;for(;this._bufs.length;)if(o>=this._bufs[0].length)o-=this._bufs[0].length,this.length-=this._bufs[0].length,this._bufs.shift();else{this._bufs[0]=this._bufs[0].slice(o),this.length-=o;break}return this},n.prototype.duplicate=function(){let o=this._new();for(let i=0;i<this._bufs.length;i++)o.append(this._bufs[i]);return o},n.prototype.append=function(o){return this._attach(o,n.prototype._appendBuffer)},n.prototype.prepend=function(o){return this._attach(o,n.prototype._prependBuffer,!0)},n.prototype._attach=function(o,i,a){if(o==null)return this;if(o.buffer)i.call(this,t.from(o.buffer,o.byteOffset,o.byteLength));else if(Array.isArray(o)){let[s,c]=a?[o.length-1,-1]:[0,1];for(let d=s;d>=0&&d<o.length;d+=c)this._attach(o[d],i,a)}else if(this._isBufferList(o)){let[s,c]=a?[o._bufs.length-1,-1]:[0,1];for(let d=s;d>=0&&d<o._bufs.length;d+=c)this._attach(o._bufs[d],i,a)}else typeof o=="number"&&(o=o.toString()),i.call(this,t.from(o));return this},n.prototype._appendBuffer=function(o){this._bufs.push(o),this.length+=o.length},n.prototype._prependBuffer=function(o){this._bufs.unshift(o),this.length+=o.length},n.prototype.indexOf=function(o,i,a){if(a===void 0&&typeof i=="string"&&(a=i,i=void 0),typeof o=="function"||Array.isArray(o))throw new TypeError('The "value" argument must be one of type string, Buffer, BufferList, or Uint8Array.');if(typeof o=="number"?o=t.from([o]):typeof o=="string"?o=t.from(o,a):this._isBufferList(o)?o=o.slice():Array.isArray(o.buffer)?o=t.from(o.buffer,o.byteOffset,o.byteLength):t.isBuffer(o)||(o=t.from(o)),i=Number(i||0),isNaN(i)&&(i=0),i<0&&(i=this.length+i),i<0&&(i=0),o.length===0)return i>this.length?this.length:i;let s=this._offset(i),c=s[0],d=s[1];for(;c<this._bufs.length;c++){let f=this._bufs[c];for(;d<f.length;)if(f.length-d>=o.length){let m=f.indexOf(o,d);if(m!==-1)return this._reverseOffset([c,m]);d=f.length-o.length+1}else{let m=this._reverseOffset([c,d]);if(this._match(m,o))return m;d++}d=0}return-1},n.prototype._match=function(o,i){if(this.length-o<i.length)return!1;for(let a=0;a<i.length;a++)if(this.get(o+a)!==i[a])return!1;return!0},function(){let o={readDoubleBE:8,readDoubleLE:8,readFloatBE:4,readFloatLE:4,readBigInt64BE:8,readBigInt64LE:8,readBigUInt64BE:8,readBigUInt64LE:8,readInt32BE:4,readInt32LE:4,readUInt32BE:4,readUInt32LE:4,readInt16BE:2,readInt16LE:2,readUInt16BE:2,readUInt16LE:2,readInt8:1,readUInt8:1,readIntBE:null,readIntLE:null,readUIntBE:null,readUIntLE:null};for(let i in o)(function(a){o[a]===null?n.prototype[a]=function(s,c){return this.slice(s,s+c)[a](0,c)}:n.prototype[a]=function(s=0){return this.slice(s,s+o[a])[a](0)}})(i)}(),n.prototype._isBufferList=function(o){return o instanceof n||n.isBufferList(o)},n.isBufferList=function(o){return o!=null&&o[l]},r.exports=n}),yy=_e((u,r)=>{be(),Ee(),we();var t=Kt().Duplex,l=my(),n=gy();function o(i){if(!(this instanceof o))return new o(i);if(typeof i=="function"){this._callback=i;let a=(function(s){this._callback&&(this._callback(s),this._callback=null)}).bind(this);this.on("pipe",function(s){s.on("error",a)}),this.on("unpipe",function(s){s.removeListener("error",a)}),i=null}n._init.call(this,i),t.call(this)}l(o,t),Object.assign(o.prototype,n.prototype),o.prototype._new=function(i){return new o(i)},o.prototype._write=function(i,a,s){this._appendBuffer(i),typeof s=="function"&&s()},o.prototype._read=function(i){if(!this.length)return this.push(null);i=Math.min(i,this.length),this.push(this.slice(0,i)),this.consume(i)},o.prototype.end=function(i){t.prototype.end.call(this,i),this._callback&&(this._callback(null,this.slice()),this._callback=null)},o.prototype._destroy=function(i,a){this._bufs.length=0,this.length=0,a(i)},o.prototype._isBufferList=function(i){return i instanceof o||i instanceof n||o.isBufferList(i)},o.isBufferList=n.isBufferList,r.exports=o,r.exports.BufferListStream=o,r.exports.BufferList=n}),by=_e((u,r)=>{be(),Ee(),we();var t=class{constructor(){this.cmd=null,this.retain=!1,this.qos=0,this.dup=!1,this.length=-1,this.topic=null,this.payload=null}};r.exports=t}),Ks=_e((u,r)=>{be(),Ee(),we();var t=r.exports,{Buffer:l}=(ot(),We(rt));t.types={0:"reserved",1:"connect",2:"connack",3:"publish",4:"puback",5:"pubrec",6:"pubrel",7:"pubcomp",8:"subscribe",9:"suback",10:"unsubscribe",11:"unsuback",12:"pingreq",13:"pingresp",14:"disconnect",15:"auth"},t.requiredHeaderFlags={1:0,2:0,4:0,5:0,6:2,7:0,8:2,9:0,10:2,11:0,12:0,13:0,14:0,15:0},t.requiredHeaderFlagsErrors={};for(let o in t.requiredHeaderFlags){let i=t.requiredHeaderFlags[o];t.requiredHeaderFlagsErrors[o]="Invalid header flag bits, must be 0x"+i.toString(16)+" for "+t.types[o]+" packet"}t.codes={};for(let o in t.types){let i=t.types[o];t.codes[i]=o}t.CMD_SHIFT=4,t.CMD_MASK=240,t.DUP_MASK=8,t.QOS_MASK=3,t.QOS_SHIFT=1,t.RETAIN_MASK=1,t.VARBYTEINT_MASK=127,t.VARBYTEINT_FIN_MASK=128,t.VARBYTEINT_MAX=268435455,t.SESSIONPRESENT_MASK=1,t.SESSIONPRESENT_HEADER=l.from([t.SESSIONPRESENT_MASK]),t.CONNACK_HEADER=l.from([t.codes.connack<<t.CMD_SHIFT]),t.USERNAME_MASK=128,t.PASSWORD_MASK=64,t.WILL_RETAIN_MASK=32,t.WILL_QOS_MASK=24,t.WILL_QOS_SHIFT=3,t.WILL_FLAG_MASK=4,t.CLEAN_SESSION_MASK=2,t.CONNECT_HEADER=l.from([t.codes.connect<<t.CMD_SHIFT]),t.properties={sessionExpiryInterval:17,willDelayInterval:24,receiveMaximum:33,maximumPacketSize:39,topicAliasMaximum:34,requestResponseInformation:25,requestProblemInformation:23,userProperties:38,authenticationMethod:21,authenticationData:22,payloadFormatIndicator:1,messageExpiryInterval:2,contentType:3,responseTopic:8,correlationData:9,maximumQoS:36,retainAvailable:37,assignedClientIdentifier:18,reasonString:31,wildcardSubscriptionAvailable:40,subscriptionIdentifiersAvailable:41,sharedSubscriptionAvailable:42,serverKeepAlive:19,responseInformation:26,serverReference:28,topicAlias:35,subscriptionIdentifier:11},t.propertiesCodes={};for(let o in t.properties){let i=t.properties[o];t.propertiesCodes[i]=o}t.propertiesTypes={sessionExpiryInterval:"int32",willDelayInterval:"int32",receiveMaximum:"int16",maximumPacketSize:"int32",topicAliasMaximum:"int16",requestResponseInformation:"byte",requestProblemInformation:"byte",userProperties:"pair",authenticationMethod:"string",authenticationData:"binary",payloadFormatIndicator:"byte",messageExpiryInterval:"int32",contentType:"string",responseTopic:"string",correlationData:"binary",maximumQoS:"int8",retainAvailable:"byte",assignedClientIdentifier:"string",reasonString:"string",wildcardSubscriptionAvailable:"byte",subscriptionIdentifiersAvailable:"byte",sharedSubscriptionAvailable:"byte",serverKeepAlive:"int16",responseInformation:"string",serverReference:"string",topicAlias:"int16",subscriptionIdentifier:"var"};function n(o){return[0,1,2].map(i=>[0,1].map(a=>[0,1].map(s=>{let c=l.alloc(1);return c.writeUInt8(t.codes[o]<<t.CMD_SHIFT|(a?t.DUP_MASK:0)|i<<t.QOS_SHIFT|s,0,!0),c})))}t.PUBLISH_HEADER=n("publish"),t.SUBSCRIBE_HEADER=n("subscribe"),t.SUBSCRIBE_OPTIONS_QOS_MASK=3,t.SUBSCRIBE_OPTIONS_NL_MASK=1,t.SUBSCRIBE_OPTIONS_NL_SHIFT=2,t.SUBSCRIBE_OPTIONS_RAP_MASK=1,t.SUBSCRIBE_OPTIONS_RAP_SHIFT=3,t.SUBSCRIBE_OPTIONS_RH_MASK=3,t.SUBSCRIBE_OPTIONS_RH_SHIFT=4,t.SUBSCRIBE_OPTIONS_RH=[0,16,32],t.SUBSCRIBE_OPTIONS_NL=4,t.SUBSCRIBE_OPTIONS_RAP=8,t.SUBSCRIBE_OPTIONS_QOS=[0,1,2],t.UNSUBSCRIBE_HEADER=n("unsubscribe"),t.ACKS={unsuback:n("unsuback"),puback:n("puback"),pubcomp:n("pubcomp"),pubrel:n("pubrel"),pubrec:n("pubrec")},t.SUBACK_HEADER=l.from([t.codes.suback<<t.CMD_SHIFT]),t.VERSION3=l.from([3]),t.VERSION4=l.from([4]),t.VERSION5=l.from([5]),t.VERSION131=l.from([131]),t.VERSION132=l.from([132]),t.QOS=[0,1,2].map(o=>l.from([o])),t.EMPTY={pingreq:l.from([t.codes.pingreq<<4,0]),pingresp:l.from([t.codes.pingresp<<4,0]),disconnect:l.from([t.codes.disconnect<<4,0])},t.MQTT5_PUBACK_PUBREC_CODES={0:"Success",16:"No matching subscribers",128:"Unspecified error",131:"Implementation specific error",135:"Not authorized",144:"Topic Name invalid",145:"Packet identifier in use",151:"Quota exceeded",153:"Payload format invalid"},t.MQTT5_PUBREL_PUBCOMP_CODES={0:"Success",146:"Packet Identifier not found"},t.MQTT5_SUBACK_CODES={0:"Granted QoS 0",1:"Granted QoS 1",2:"Granted QoS 2",128:"Unspecified error",131:"Implementation specific error",135:"Not authorized",143:"Topic Filter invalid",145:"Packet Identifier in use",151:"Quota exceeded",158:"Shared Subscriptions not supported",161:"Subscription Identifiers not supported",162:"Wildcard Subscriptions not supported"},t.MQTT5_UNSUBACK_CODES={0:"Success",17:"No subscription existed",128:"Unspecified error",131:"Implementation specific error",135:"Not authorized",143:"Topic Filter invalid",145:"Packet Identifier in use"},t.MQTT5_DISCONNECT_CODES={0:"Normal disconnection",4:"Disconnect with Will Message",128:"Unspecified error",129:"Malformed Packet",130:"Protocol Error",131:"Implementation specific error",135:"Not authorized",137:"Server busy",139:"Server shutting down",141:"Keep Alive timeout",142:"Session taken over",143:"Topic Filter invalid",144:"Topic Name invalid",147:"Receive Maximum exceeded",148:"Topic Alias invalid",149:"Packet too large",150:"Message rate too high",151:"Quota exceeded",152:"Administrative action",153:"Payload format invalid",154:"Retain not supported",155:"QoS not supported",156:"Use another server",157:"Server moved",158:"Shared Subscriptions not supported",159:"Connection rate exceeded",160:"Maximum connect time",161:"Subscription Identifiers not supported",162:"Wildcard Subscriptions not supported"},t.MQTT5_AUTH_CODES={0:"Success",24:"Continue authentication",25:"Re-authenticate"}}),wy=_e((u,r)=>{be(),Ee(),we();var t=1e3,l=t*60,n=l*60,o=n*24,i=o*7,a=o*365.25;r.exports=function(m,h){h=h||{};var p=typeof m;if(p==="string"&&m.length>0)return s(m);if(p==="number"&&isFinite(m))return h.long?d(m):c(m);throw new Error("val is not a non-empty string or a valid number. val="+JSON.stringify(m))};function s(m){if(m=String(m),!(m.length>100)){var h=/^(-?(?:\d+)?\.?\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)?$/i.exec(m);if(h){var p=parseFloat(h[1]),w=(h[2]||"ms").toLowerCase();switch(w){case"years":case"year":case"yrs":case"yr":case"y":return p*a;case"weeks":case"week":case"w":return p*i;case"days":case"day":case"d":return p*o;case"hours":case"hour":case"hrs":case"hr":case"h":return p*n;case"minutes":case"minute":case"mins":case"min":case"m":return p*l;case"seconds":case"second":case"secs":case"sec":case"s":return p*t;case"milliseconds":case"millisecond":case"msecs":case"msec":case"ms":return p;default:return}}}}function c(m){var h=Math.abs(m);return h>=o?Math.round(m/o)+"d":h>=n?Math.round(m/n)+"h":h>=l?Math.round(m/l)+"m":h>=t?Math.round(m/t)+"s":m+"ms"}function d(m){var h=Math.abs(m);return h>=o?f(m,h,o,"day"):h>=n?f(m,h,n,"hour"):h>=l?f(m,h,l,"minute"):h>=t?f(m,h,t,"second"):m+" ms"}function f(m,h,p,w){var v=h>=p*1.5;return Math.round(m/p)+" "+w+(v?"s":"")}}),Ey=_e((u,r)=>{be(),Ee(),we();function t(l){o.debug=o,o.default=o,o.coerce=f,o.disable=c,o.enable=a,o.enabled=d,o.humanize=wy(),o.destroy=m,Object.keys(l).forEach(h=>{o[h]=l[h]}),o.names=[],o.skips=[],o.formatters={};function n(h){let p=0;for(let w=0;w<h.length;w++)p=(p<<5)-p+h.charCodeAt(w),p|=0;return o.colors[Math.abs(p)%o.colors.length]}o.selectColor=n;function o(h){let p,w=null,v,S;function y(...k){if(!y.enabled)return;let _=y,E=Number(new Date),I=E-(p||E);_.diff=I,_.prev=p,_.curr=E,p=E,k[0]=o.coerce(k[0]),typeof k[0]!="string"&&k.unshift("%O");let x=0;k[0]=k[0].replace(/%([a-zA-Z%])/g,(V,$)=>{if(V==="%%")return"%";x++;let C=o.formatters[$];if(typeof C=="function"){let D=k[x];V=C.call(_,D),k.splice(x,1),x--}return V}),o.formatArgs.call(_,k),(_.log||o.log).apply(_,k)}return y.namespace=h,y.useColors=o.useColors(),y.color=o.selectColor(h),y.extend=i,y.destroy=o.destroy,Object.defineProperty(y,"enabled",{enumerable:!0,configurable:!1,get:()=>w!==null?w:(v!==o.namespaces&&(v=o.namespaces,S=o.enabled(h)),S),set:k=>{w=k}}),typeof o.init=="function"&&o.init(y),y}function i(h,p){let w=o(this.namespace+(typeof p>"u"?":":p)+h);return w.log=this.log,w}function a(h){o.save(h),o.namespaces=h,o.names=[],o.skips=[];let p=(typeof h=="string"?h:"").trim().replace(/\s+/g,",").split(",").filter(Boolean);for(let w of p)w[0]==="-"?o.skips.push(w.slice(1)):o.names.push(w)}function s(h,p){let w=0,v=0,S=-1,y=0;for(;w<h.length;)if(v<p.length&&(p[v]===h[w]||p[v]==="*"))p[v]==="*"?(S=v,y=w,v++):(w++,v++);else if(S!==-1)v=S+1,y++,w=y;else return!1;for(;v<p.length&&p[v]==="*";)v++;return v===p.length}function c(){let h=[...o.names,...o.skips.map(p=>"-"+p)].join(",");return o.enable(""),h}function d(h){for(let p of o.skips)if(s(h,p))return!1;for(let p of o.names)if(s(h,p))return!0;return!1}function f(h){return h instanceof Error?h.stack||h.message:h}function m(){console.warn("Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.")}return o.enable(o.load()),o}r.exports=t}),xt=_e((u,r)=>{be(),Ee(),we(),u.formatArgs=l,u.save=n,u.load=o,u.useColors=t,u.storage=i(),u.destroy=(()=>{let s=!1;return()=>{s||(s=!0,console.warn("Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`."))}})(),u.colors=["#0000CC","#0000FF","#0033CC","#0033FF","#0066CC","#0066FF","#0099CC","#0099FF","#00CC00","#00CC33","#00CC66","#00CC99","#00CCCC","#00CCFF","#3300CC","#3300FF","#3333CC","#3333FF","#3366CC","#3366FF","#3399CC","#3399FF","#33CC00","#33CC33","#33CC66","#33CC99","#33CCCC","#33CCFF","#6600CC","#6600FF","#6633CC","#6633FF","#66CC00","#66CC33","#9900CC","#9900FF","#9933CC","#9933FF","#99CC00","#99CC33","#CC0000","#CC0033","#CC0066","#CC0099","#CC00CC","#CC00FF","#CC3300","#CC3333","#CC3366","#CC3399","#CC33CC","#CC33FF","#CC6600","#CC6633","#CC9900","#CC9933","#CCCC00","#CCCC33","#FF0000","#FF0033","#FF0066","#FF0099","#FF00CC","#FF00FF","#FF3300","#FF3333","#FF3366","#FF3399","#FF33CC","#FF33FF","#FF6600","#FF6633","#FF9900","#FF9933","#FFCC00","#FFCC33"];function t(){if(typeof window<"u"&&window.process&&(window.process.type==="renderer"||window.process.__nwjs))return!0;if(typeof navigator<"u"&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/(edge|trident)\/(\d+)/))return!1;let s;return typeof document<"u"&&document.documentElement&&document.documentElement.style&&document.documentElement.style.WebkitAppearance||typeof window<"u"&&window.console&&(window.console.firebug||window.console.exception&&window.console.table)||typeof navigator<"u"&&navigator.userAgent&&(s=navigator.userAgent.toLowerCase().match(/firefox\/(\d+)/))&&parseInt(s[1],10)>=31||typeof navigator<"u"&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/applewebkit\/(\d+)/)}function l(s){if(s[0]=(this.useColors?"%c":"")+this.namespace+(this.useColors?" %c":" ")+s[0]+(this.useColors?"%c ":" ")+"+"+r.exports.humanize(this.diff),!this.useColors)return;let c="color: "+this.color;s.splice(1,0,c,"color: inherit");let d=0,f=0;s[0].replace(/%[a-zA-Z%]/g,m=>{m!=="%%"&&(d++,m==="%c"&&(f=d))}),s.splice(f,0,c)}u.log=console.debug||console.log||(()=>{});function n(s){try{s?u.storage.setItem("debug",s):u.storage.removeItem("debug")}catch{}}function o(){let s;try{s=u.storage.getItem("debug")||u.storage.getItem("DEBUG")}catch{}return!s&&typeof ze<"u"&&"env"in ze&&(s=ze.env.DEBUG),s}function i(){try{return localStorage}catch{}}r.exports=Ey()(u);var{formatters:a}=r.exports;a.j=function(s){try{return JSON.stringify(s)}catch(c){return"[UnexpectedJSONParseError]: "+c.message}}}),vy=_e((u,r)=>{be(),Ee(),we();var t=yy(),{EventEmitter:l}=(Gt(),We(Tt)),n=by(),o=Ks(),i=xt()("mqtt-packet:parser"),a=class Hi extends l{constructor(){super(),this.parser=this.constructor.parser}static parser(c){return this instanceof Hi?(this.settings=c||{},this._states=["_parseHeader","_parseLength","_parsePayload","_newPacket"],this._resetState(),this):new Hi().parser(c)}_resetState(){i("_resetState: resetting packet, error, _list, and _stateCounter"),this.packet=new n,this.error=null,this._list=t(),this._stateCounter=0}parse(c){for(this.error&&this._resetState(),this._list.append(c),i("parse: current state: %s",this._states[this._stateCounter]);(this.packet.length!==-1||this._list.length>0)&&this[this._states[this._stateCounter]]()&&!this.error;)this._stateCounter++,i("parse: state complete. _stateCounter is now: %d",this._stateCounter),i("parse: packet.length: %d, buffer list length: %d",this.packet.length,this._list.length),this._stateCounter>=this._states.length&&(this._stateCounter=0);return i("parse: exited while loop. packet: %d, buffer list length: %d",this.packet.length,this._list.length),this._list.length}_parseHeader(){let c=this._list.readUInt8(0),d=c>>o.CMD_SHIFT;this.packet.cmd=o.types[d];let f=c&15,m=o.requiredHeaderFlags[d];return m!=null&&f!==m?this._emitError(new Error(o.requiredHeaderFlagsErrors[d])):(this.packet.retain=(c&o.RETAIN_MASK)!==0,this.packet.qos=c>>o.QOS_SHIFT&o.QOS_MASK,this.packet.qos>2?this._emitError(new Error("Packet must not have both QoS bits set to 1")):(this.packet.dup=(c&o.DUP_MASK)!==0,i("_parseHeader: packet: %o",this.packet),this._list.consume(1),!0))}_parseLength(){let c=this._parseVarByteNum(!0);return c&&(this.packet.length=c.value,this._list.consume(c.bytes)),i("_parseLength %d",c.value),!!c}_parsePayload(){i("_parsePayload: payload %O",this._list);let c=!1;if(this.packet.length===0||this._list.length>=this.packet.length){switch(this._pos=0,this.packet.cmd){case"connect":this._parseConnect();break;case"connack":this._parseConnack();break;case"publish":this._parsePublish();break;case"puback":case"pubrec":case"pubrel":case"pubcomp":this._parseConfirmation();break;case"subscribe":this._parseSubscribe();break;case"suback":this._parseSuback();break;case"unsubscribe":this._parseUnsubscribe();break;case"unsuback":this._parseUnsuback();break;case"pingreq":case"pingresp":break;case"disconnect":this._parseDisconnect();break;case"auth":this._parseAuth();break;default:this._emitError(new Error("Not supported"))}c=!0}return i("_parsePayload complete result: %s",c),c}_parseConnect(){i("_parseConnect");let c,d,f,m,h={},p=this.packet,w=this._parseString();if(w===null)return this._emitError(new Error("Cannot parse protocolId"));if(w!=="MQTT"&&w!=="MQIsdp")return this._emitError(new Error("Invalid protocolId"));if(p.protocolId=w,this._pos>=this._list.length)return this._emitError(new Error("Packet too short"));if(p.protocolVersion=this._list.readUInt8(this._pos),p.protocolVersion>=128&&(p.bridgeMode=!0,p.protocolVersion=p.protocolVersion-128),p.protocolVersion!==3&&p.protocolVersion!==4&&p.protocolVersion!==5)return this._emitError(new Error("Invalid protocol version"));if(this._pos++,this._pos>=this._list.length)return this._emitError(new Error("Packet too short"));if(this._list.readUInt8(this._pos)&1)return this._emitError(new Error("Connect flag bit 0 must be 0, but got 1"));h.username=this._list.readUInt8(this._pos)&o.USERNAME_MASK,h.password=this._list.readUInt8(this._pos)&o.PASSWORD_MASK,h.will=this._list.readUInt8(this._pos)&o.WILL_FLAG_MASK;let v=!!(this._list.readUInt8(this._pos)&o.WILL_RETAIN_MASK),S=(this._list.readUInt8(this._pos)&o.WILL_QOS_MASK)>>o.WILL_QOS_SHIFT;if(h.will)p.will={},p.will.retain=v,p.will.qos=S;else{if(v)return this._emitError(new Error("Will Retain Flag must be set to zero when Will Flag is set to 0"));if(S)return this._emitError(new Error("Will QoS must be set to zero when Will Flag is set to 0"))}if(p.clean=(this._list.readUInt8(this._pos)&o.CLEAN_SESSION_MASK)!==0,this._pos++,p.keepalive=this._parseNum(),p.keepalive===-1)return this._emitError(new Error("Packet too short"));if(p.protocolVersion===5){let k=this._parseProperties();Object.getOwnPropertyNames(k).length&&(p.properties=k)}let y=this._parseString();if(y===null)return this._emitError(new Error("Packet too short"));if(p.clientId=y,i("_parseConnect: packet.clientId: %s",p.clientId),h.will){if(p.protocolVersion===5){let k=this._parseProperties();Object.getOwnPropertyNames(k).length&&(p.will.properties=k)}if(c=this._parseString(),c===null)return this._emitError(new Error("Cannot parse will topic"));if(p.will.topic=c,i("_parseConnect: packet.will.topic: %s",p.will.topic),d=this._parseBuffer(),d===null)return this._emitError(new Error("Cannot parse will payload"));p.will.payload=d,i("_parseConnect: packet.will.paylaod: %s",p.will.payload)}if(h.username){if(m=this._parseString(),m===null)return this._emitError(new Error("Cannot parse username"));p.username=m,i("_parseConnect: packet.username: %s",p.username)}if(h.password){if(f=this._parseBuffer(),f===null)return this._emitError(new Error("Cannot parse password"));p.password=f}return this.settings=p,i("_parseConnect: complete"),p}_parseConnack(){i("_parseConnack");let c=this.packet;if(this._list.length<1)return null;let d=this._list.readUInt8(this._pos++);if(d>1)return this._emitError(new Error("Invalid connack flags, bits 7-1 must be set to 0"));if(c.sessionPresent=!!(d&o.SESSIONPRESENT_MASK),this.settings.protocolVersion===5)this._list.length>=2?c.reasonCode=this._list.readUInt8(this._pos++):c.reasonCode=0;else{if(this._list.length<2)return null;c.returnCode=this._list.readUInt8(this._pos++)}if(c.returnCode===-1||c.reasonCode===-1)return this._emitError(new Error("Cannot parse return code"));if(this.settings.protocolVersion===5){let f=this._parseProperties();Object.getOwnPropertyNames(f).length&&(c.properties=f)}i("_parseConnack: complete")}_parsePublish(){i("_parsePublish");let c=this.packet;if(c.topic=this._parseString(),c.topic===null)return this._emitError(new Error("Cannot parse topic"));if(!(c.qos>0&&!this._parseMessageId())){if(this.settings.protocolVersion===5){let d=this._parseProperties();Object.getOwnPropertyNames(d).length&&(c.properties=d)}c.payload=this._list.slice(this._pos,c.length),i("_parsePublish: payload from buffer list: %o",c.payload)}}_parseSubscribe(){i("_parseSubscribe");let c=this.packet,d,f,m,h,p,w,v;if(c.subscriptions=[],!!this._parseMessageId()){if(this.settings.protocolVersion===5){let S=this._parseProperties();Object.getOwnPropertyNames(S).length&&(c.properties=S)}if(c.length<=0)return this._emitError(new Error("Malformed subscribe, no payload specified"));for(;this._pos<c.length;){if(d=this._parseString(),d===null)return this._emitError(new Error("Cannot parse topic"));if(this._pos>=c.length)return this._emitError(new Error("Malformed Subscribe Payload"));if(f=this._parseByte(),this.settings.protocolVersion===5){if(f&192)return this._emitError(new Error("Invalid subscribe topic flag bits, bits 7-6 must be 0"))}else if(f&252)return this._emitError(new Error("Invalid subscribe topic flag bits, bits 7-2 must be 0"));if(m=f&o.SUBSCRIBE_OPTIONS_QOS_MASK,m>2)return this._emitError(new Error("Invalid subscribe QoS, must be <= 2"));if(w=(f>>o.SUBSCRIBE_OPTIONS_NL_SHIFT&o.SUBSCRIBE_OPTIONS_NL_MASK)!==0,p=(f>>o.SUBSCRIBE_OPTIONS_RAP_SHIFT&o.SUBSCRIBE_OPTIONS_RAP_MASK)!==0,h=f>>o.SUBSCRIBE_OPTIONS_RH_SHIFT&o.SUBSCRIBE_OPTIONS_RH_MASK,h>2)return this._emitError(new Error("Invalid retain handling, must be <= 2"));v={topic:d,qos:m},this.settings.protocolVersion===5?(v.nl=w,v.rap=p,v.rh=h):this.settings.bridgeMode&&(v.rh=0,v.rap=!0,v.nl=!0),i("_parseSubscribe: push subscription `%s` to subscription",v),c.subscriptions.push(v)}}}_parseSuback(){i("_parseSuback");let c=this.packet;if(this.packet.granted=[],!!this._parseMessageId()){if(this.settings.protocolVersion===5){let d=this._parseProperties();Object.getOwnPropertyNames(d).length&&(c.properties=d)}if(c.length<=0)return this._emitError(new Error("Malformed suback, no payload specified"));for(;this._pos<this.packet.length;){let d=this._list.readUInt8(this._pos++);if(this.settings.protocolVersion===5){if(!o.MQTT5_SUBACK_CODES[d])return this._emitError(new Error("Invalid suback code"))}else if(d>2&&d!==128)return this._emitError(new Error("Invalid suback QoS, must be 0, 1, 2 or 128"));this.packet.granted.push(d)}}}_parseUnsubscribe(){i("_parseUnsubscribe");let c=this.packet;if(c.unsubscriptions=[],!!this._parseMessageId()){if(this.settings.protocolVersion===5){let d=this._parseProperties();Object.getOwnPropertyNames(d).length&&(c.properties=d)}if(c.length<=0)return this._emitError(new Error("Malformed unsubscribe, no payload specified"));for(;this._pos<c.length;){let d=this._parseString();if(d===null)return this._emitError(new Error("Cannot parse topic"));i("_parseUnsubscribe: push topic `%s` to unsubscriptions",d),c.unsubscriptions.push(d)}}}_parseUnsuback(){i("_parseUnsuback");let c=this.packet;if(!this._parseMessageId())return this._emitError(new Error("Cannot parse messageId"));if((this.settings.protocolVersion===3||this.settings.protocolVersion===4)&&c.length!==2)return this._emitError(new Error("Malformed unsuback, payload length must be 2"));if(c.length<=0)return this._emitError(new Error("Malformed unsuback, no payload specified"));if(this.settings.protocolVersion===5){let d=this._parseProperties();for(Object.getOwnPropertyNames(d).length&&(c.properties=d),c.granted=[];this._pos<this.packet.length;){let f=this._list.readUInt8(this._pos++);if(!o.MQTT5_UNSUBACK_CODES[f])return this._emitError(new Error("Invalid unsuback code"));this.packet.granted.push(f)}}}_parseConfirmation(){i("_parseConfirmation: packet.cmd: `%s`",this.packet.cmd);let c=this.packet;if(this._parseMessageId(),this.settings.protocolVersion===5){if(c.length>2){switch(c.reasonCode=this._parseByte(),this.packet.cmd){case"puback":case"pubrec":if(!o.MQTT5_PUBACK_PUBREC_CODES[c.reasonCode])return this._emitError(new Error("Invalid "+this.packet.cmd+" reason code"));break;case"pubrel":case"pubcomp":if(!o.MQTT5_PUBREL_PUBCOMP_CODES[c.reasonCode])return this._emitError(new Error("Invalid "+this.packet.cmd+" reason code"));break}i("_parseConfirmation: packet.reasonCode `%d`",c.reasonCode)}else c.reasonCode=0;if(c.length>3){let d=this._parseProperties();Object.getOwnPropertyNames(d).length&&(c.properties=d)}}return!0}_parseDisconnect(){let c=this.packet;if(i("_parseDisconnect"),this.settings.protocolVersion===5){this._list.length>0?(c.reasonCode=this._parseByte(),o.MQTT5_DISCONNECT_CODES[c.reasonCode]||this._emitError(new Error("Invalid disconnect reason code"))):c.reasonCode=0;let d=this._parseProperties();Object.getOwnPropertyNames(d).length&&(c.properties=d)}return i("_parseDisconnect result: true"),!0}_parseAuth(){i("_parseAuth");let c=this.packet;if(this.settings.protocolVersion!==5)return this._emitError(new Error("Not supported auth packet for this version MQTT"));if(c.reasonCode=this._parseByte(),!o.MQTT5_AUTH_CODES[c.reasonCode])return this._emitError(new Error("Invalid auth reason code"));let d=this._parseProperties();return Object.getOwnPropertyNames(d).length&&(c.properties=d),i("_parseAuth: result: true"),!0}_parseMessageId(){let c=this.packet;return c.messageId=this._parseNum(),c.messageId===null?(this._emitError(new Error("Cannot parse messageId")),!1):(i("_parseMessageId: packet.messageId %d",c.messageId),!0)}_parseString(c){let d=this._parseNum(),f=d+this._pos;if(d===-1||f>this._list.length||f>this.packet.length)return null;let m=this._list.toString("utf8",this._pos,f);return this._pos+=d,i("_parseString: result: %s",m),m}_parseStringPair(){return i("_parseStringPair"),{name:this._parseString(),value:this._parseString()}}_parseBuffer(){let c=this._parseNum(),d=c+this._pos;if(c===-1||d>this._list.length||d>this.packet.length)return null;let f=this._list.slice(this._pos,d);return this._pos+=c,i("_parseBuffer: result: %o",f),f}_parseNum(){if(this._list.length-this._pos<2)return-1;let c=this._list.readUInt16BE(this._pos);return this._pos+=2,i("_parseNum: result: %s",c),c}_parse4ByteNum(){if(this._list.length-this._pos<4)return-1;let c=this._list.readUInt32BE(this._pos);return this._pos+=4,i("_parse4ByteNum: result: %s",c),c}_parseVarByteNum(c){i("_parseVarByteNum");let d=4,f=0,m=1,h=0,p=!1,w,v=this._pos?this._pos:0;for(;f<d&&v+f<this._list.length;){if(w=this._list.readUInt8(v+f++),h+=m*(w&o.VARBYTEINT_MASK),m*=128,(w&o.VARBYTEINT_FIN_MASK)===0){p=!0;break}if(this._list.length<=f)break}return!p&&f===d&&this._list.length>=f&&this._emitError(new Error("Invalid variable byte integer")),v&&(this._pos+=f),p?c?p={bytes:f,value:h}:p=h:p=!1,i("_parseVarByteNum: result: %o",p),p}_parseByte(){let c;return this._pos<this._list.length&&(c=this._list.readUInt8(this._pos),this._pos++),i("_parseByte: result: %o",c),c}_parseByType(c){switch(i("_parseByType: type: %s",c),c){case"byte":return this._parseByte()!==0;case"int8":return this._parseByte();case"int16":return this._parseNum();case"int32":return this._parse4ByteNum();case"var":return this._parseVarByteNum();case"string":return this._parseString();case"pair":return this._parseStringPair();case"binary":return this._parseBuffer()}}_parseProperties(){i("_parseProperties");let c=this._parseVarByteNum(),d=this._pos+c,f={};for(;this._pos<d;){let m=this._parseByte();if(!m)return this._emitError(new Error("Cannot parse property code type")),!1;let h=o.propertiesCodes[m];if(!h)return this._emitError(new Error("Unknown property")),!1;if(h==="userProperties"){f[h]||(f[h]=Object.create(null));let p=this._parseByType(o.propertiesTypes[h]);if(f[h][p.name])if(Array.isArray(f[h][p.name]))f[h][p.name].push(p.value);else{let w=f[h][p.name];f[h][p.name]=[w],f[h][p.name].push(p.value)}else f[h][p.name]=p.value;continue}f[h]?Array.isArray(f[h])?f[h].push(this._parseByType(o.propertiesTypes[h])):(f[h]=[f[h]],f[h].push(this._parseByType(o.propertiesTypes[h]))):f[h]=this._parseByType(o.propertiesTypes[h])}return f}_newPacket(){return i("_newPacket"),this.packet&&(this._list.consume(this.packet.length),i("_newPacket: parser emit packet: packet.cmd: %s, packet.payload: %s, packet.length: %d",this.packet.cmd,this.packet.payload,this.packet.length),this.emit("packet",this.packet)),i("_newPacket: new packet"),this.packet=new n,this._pos=0,!0}_emitError(c){i("_emitError",c),this.error=c,this.emit("error",c)}};r.exports=a}),ky=_e((u,r)=>{be(),Ee(),we();var{Buffer:t}=(ot(),We(rt)),l=65536,n={},o=t.isBuffer(t.from([1,2]).subarray(0,1));function i(d){let f=t.allocUnsafe(2);return f.writeUInt8(d>>8,0),f.writeUInt8(d&255,1),f}function a(){for(let d=0;d<l;d++)n[d]=i(d)}function s(d){let f=0,m=0,h=t.allocUnsafe(4);do f=d%128|0,d=d/128|0,d>0&&(f=f|128),h.writeUInt8(f,m++);while(d>0&&m<4);return d>0&&(m=0),o?h.subarray(0,m):h.slice(0,m)}function c(d){let f=t.allocUnsafe(4);return f.writeUInt32BE(d,0),f}r.exports={cache:n,generateCache:a,generateNumber:i,genBufVariableByteInt:s,generate4ByteBuffer:c}}),_y=_e((u,r)=>{be(),Ee(),we(),typeof ze>"u"||!ze.version||ze.version.indexOf("v0.")===0||ze.version.indexOf("v1.")===0&&ze.version.indexOf("v1.8.")!==0?r.exports={nextTick:t}:r.exports=ze;function t(l,n,o,i){if(typeof l!="function")throw new TypeError('"callback" argument must be a function');var a=arguments.length,s,c;switch(a){case 0:case 1:return ze.nextTick(l);case 2:return ze.nextTick(function(){l.call(null,n)});case 3:return ze.nextTick(function(){l.call(null,n,o)});case 4:return ze.nextTick(function(){l.call(null,n,o,i)});default:for(s=new Array(a-1),c=0;c<s.length;)s[c++]=arguments[c];return ze.nextTick(function(){l.apply(null,s)})}}}),Qs=_e((u,r)=>{be(),Ee(),we();var t=Ks(),{Buffer:l}=(ot(),We(rt)),n=l.allocUnsafe(0),o=l.from([0]),i=ky(),a=_y().nextTick,s=xt()("mqtt-packet:writeToStream"),c=i.cache,d=i.generateNumber,f=i.generateCache,m=i.genBufVariableByteInt,h=i.generate4ByteBuffer,p=ne,w=!0;function v(ee,q,ce){switch(s("generate called"),q.cork&&(q.cork(),a(S,q)),w&&(w=!1,f()),s("generate: packet.cmd: %s",ee.cmd),ee.cmd){case"connect":return y(ee,q);case"connack":return k(ee,q,ce);case"publish":return _(ee,q,ce);case"puback":case"pubrec":case"pubrel":case"pubcomp":return E(ee,q,ce);case"subscribe":return I(ee,q,ce);case"suback":return x(ee,q,ce);case"unsubscribe":return V(ee,q,ce);case"unsuback":return $(ee,q,ce);case"pingreq":case"pingresp":return C(ee,q);case"disconnect":return D(ee,q,ce);case"auth":return A(ee,q,ce);default:return q.destroy(new Error("Unknown command")),!1}}Object.defineProperty(v,"cacheNumbers",{get(){return p===ne},set(ee){ee?((!c||Object.keys(c).length===0)&&(w=!0),p=ne):(w=!1,p=oe)}});function S(ee){ee.uncork()}function y(ee,q,ce){let X=ee||{},re=X.protocolId||"MQTT",O=X.protocolVersion||4,te=X.will,se=X.clean,j=X.keepalive||0,K=X.clientId||"",ae=X.username,he=X.password,pe=X.properties;se===void 0&&(se=!0);let ve=0;if(typeof re!="string"&&!l.isBuffer(re))return q.destroy(new Error("Invalid protocolId")),!1;if(ve+=re.length+2,O!==3&&O!==4&&O!==5)return q.destroy(new Error("Invalid protocol version")),!1;if(ve+=1,(typeof K=="string"||l.isBuffer(K))&&(K||O>=4)&&(K||se))ve+=l.byteLength(K)+2;else{if(O<4)return q.destroy(new Error("clientId must be supplied before 3.1.1")),!1;if(se*1===0)return q.destroy(new Error("clientId must be given if cleanSession set to 0")),!1}if(typeof j!="number"||j<0||j>65535||j%1!==0)return q.destroy(new Error("Invalid keepalive")),!1;ve+=2,ve+=1;let Q,ye;if(O===5){if(Q=ie(q,pe),!Q)return!1;ve+=Q.length}if(te){if(typeof te!="object")return q.destroy(new Error("Invalid will")),!1;if(!te.topic||typeof te.topic!="string")return q.destroy(new Error("Invalid will topic")),!1;if(ve+=l.byteLength(te.topic)+2,ve+=2,te.payload)if(te.payload.length>=0)typeof te.payload=="string"?ve+=l.byteLength(te.payload):ve+=te.payload.length;else return q.destroy(new Error("Invalid will payload")),!1;if(ye={},O===5){if(ye=ie(q,te.properties),!ye)return!1;ve+=ye.length}}let ke=!1;if(ae!=null)if(Ve(ae))ke=!0,ve+=l.byteLength(ae)+2;else return q.destroy(new Error("Invalid username")),!1;if(he!=null){if(!ke)return q.destroy(new Error("Username is required to use password")),!1;if(Ve(he))ve+=G(he)+2;else return q.destroy(new Error("Invalid password")),!1}q.write(t.CONNECT_HEADER),H(q,ve),J(q,re),X.bridgeMode&&(O+=128),q.write(O===131?t.VERSION131:O===132?t.VERSION132:O===4?t.VERSION4:O===5?t.VERSION5:t.VERSION3);let de=0;return de|=ae!=null?t.USERNAME_MASK:0,de|=he!=null?t.PASSWORD_MASK:0,de|=te&&te.retain?t.WILL_RETAIN_MASK:0,de|=te&&te.qos?te.qos<<t.WILL_QOS_SHIFT:0,de|=te?t.WILL_FLAG_MASK:0,de|=se?t.CLEAN_SESSION_MASK:0,q.write(l.from([de])),p(q,j),O===5&&Q.write(),J(q,K),te&&(O===5&&ye.write(),F(q,te.topic),J(q,te.payload)),ae!=null&&J(q,ae),he!=null&&J(q,he),!0}function k(ee,q,ce){let X=ce?ce.protocolVersion:4,re=ee||{},O=X===5?re.reasonCode:re.returnCode,te=re.properties,se=2;if(typeof O!="number")return q.destroy(new Error("Invalid return code")),!1;let j=null;if(X===5){if(j=ie(q,te),!j)return!1;se+=j.length}return q.write(t.CONNACK_HEADER),H(q,se),q.write(re.sessionPresent?t.SESSIONPRESENT_HEADER:o),q.write(l.from([O])),j==null||j.write(),!0}function _(ee,q,ce){s("publish: packet: %o",ee);let X=ce?ce.protocolVersion:4,re=ee||{},O=re.qos||0,te=re.retain?t.RETAIN_MASK:0,se=re.topic,j=re.payload||n,K=re.messageId,ae=re.properties,he=0;if(typeof se=="string")he+=l.byteLength(se)+2;else if(l.isBuffer(se))he+=se.length+2;else return q.destroy(new Error("Invalid topic")),!1;if(l.isBuffer(j)?he+=j.length:he+=l.byteLength(j),O&&typeof K!="number")return q.destroy(new Error("Invalid messageId")),!1;O&&(he+=2);let pe=null;if(X===5){if(pe=ie(q,ae),!pe)return!1;he+=pe.length}return q.write(t.PUBLISH_HEADER[O][re.dup?1:0][te?1:0]),H(q,he),p(q,G(se)),q.write(se),O>0&&p(q,K),pe==null||pe.write(),s("publish: payload: %o",j),q.write(j)}function E(ee,q,ce){let X=ce?ce.protocolVersion:4,re=ee||{},O=re.cmd||"puback",te=re.messageId,se=re.dup&&O==="pubrel"?t.DUP_MASK:0,j=0,K=re.reasonCode,ae=re.properties,he=X===5?3:2;if(O==="pubrel"&&(j=1),typeof te!="number")return q.destroy(new Error("Invalid messageId")),!1;let pe=null;if(X===5&&typeof ae=="object"){if(pe=R(q,ae,ce,he),!pe)return!1;he+=pe.length}return q.write(t.ACKS[O][j][se][0]),he===3&&(he+=K!==0?1:-1),H(q,he),p(q,te),X===5&&he!==2&&q.write(l.from([K])),pe!==null?pe.write():he===4&&q.write(l.from([0])),!0}function I(ee,q,ce){s("subscribe: packet: ");let X=ce?ce.protocolVersion:4,re=ee||{},O=re.dup?t.DUP_MASK:0,te=re.messageId,se=re.subscriptions,j=re.properties,K=0;if(typeof te!="number")return q.destroy(new Error("Invalid messageId")),!1;K+=2;let ae=null;if(X===5){if(ae=ie(q,j),!ae)return!1;K+=ae.length}if(typeof se=="object"&&se.length)for(let pe=0;pe<se.length;pe+=1){let ve=se[pe].topic,Q=se[pe].qos;if(typeof ve!="string")return q.destroy(new Error("Invalid subscriptions - invalid topic")),!1;if(typeof Q!="number")return q.destroy(new Error("Invalid subscriptions - invalid qos")),!1;if(X===5){if(typeof(se[pe].nl||!1)!="boolean")return q.destroy(new Error("Invalid subscriptions - invalid No Local")),!1;if(typeof(se[pe].rap||!1)!="boolean")return q.destroy(new Error("Invalid subscriptions - invalid Retain as Published")),!1;let ye=se[pe].rh||0;if(typeof ye!="number"||ye>2)return q.destroy(new Error("Invalid subscriptions - invalid Retain Handling")),!1}K+=l.byteLength(ve)+2+1}else return q.destroy(new Error("Invalid subscriptions")),!1;s("subscribe: writing to stream: %o",t.SUBSCRIBE_HEADER),q.write(t.SUBSCRIBE_HEADER[1][O?1:0][0]),H(q,K),p(q,te),ae!==null&&ae.write();let he=!0;for(let pe of se){let ve=pe.topic,Q=pe.qos,ye=+pe.nl,ke=+pe.rap,de=pe.rh,Ae;F(q,ve),Ae=t.SUBSCRIBE_OPTIONS_QOS[Q],X===5&&(Ae|=ye?t.SUBSCRIBE_OPTIONS_NL:0,Ae|=ke?t.SUBSCRIBE_OPTIONS_RAP:0,Ae|=de?t.SUBSCRIBE_OPTIONS_RH[de]:0),he=q.write(l.from([Ae]))}return he}function x(ee,q,ce){let X=ce?ce.protocolVersion:4,re=ee||{},O=re.messageId,te=re.granted,se=re.properties,j=0;if(typeof O!="number")return q.destroy(new Error("Invalid messageId")),!1;if(j+=2,typeof te=="object"&&te.length)for(let ae=0;ae<te.length;ae+=1){if(typeof te[ae]!="number")return q.destroy(new Error("Invalid qos vector")),!1;j+=1}else return q.destroy(new Error("Invalid qos vector")),!1;let K=null;if(X===5){if(K=R(q,se,ce,j),!K)return!1;j+=K.length}return q.write(t.SUBACK_HEADER),H(q,j),p(q,O),K!==null&&K.write(),q.write(l.from(te))}function V(ee,q,ce){let X=ce?ce.protocolVersion:4,re=ee||{},O=re.messageId,te=re.dup?t.DUP_MASK:0,se=re.unsubscriptions,j=re.properties,K=0;if(typeof O!="number")return q.destroy(new Error("Invalid messageId")),!1;if(K+=2,typeof se=="object"&&se.length)for(let pe=0;pe<se.length;pe+=1){if(typeof se[pe]!="string")return q.destroy(new Error("Invalid unsubscriptions")),!1;K+=l.byteLength(se[pe])+2}else return q.destroy(new Error("Invalid unsubscriptions")),!1;let ae=null;if(X===5){if(ae=ie(q,j),!ae)return!1;K+=ae.length}q.write(t.UNSUBSCRIBE_HEADER[1][te?1:0][0]),H(q,K),p(q,O),ae!==null&&ae.write();let he=!0;for(let pe=0;pe<se.length;pe++)he=F(q,se[pe]);return he}function $(ee,q,ce){let X=ce?ce.protocolVersion:4,re=ee||{},O=re.messageId,te=re.dup?t.DUP_MASK:0,se=re.granted,j=re.properties,K=re.cmd,ae=0,he=2;if(typeof O!="number")return q.destroy(new Error("Invalid messageId")),!1;if(X===5)if(typeof se=="object"&&se.length)for(let ve=0;ve<se.length;ve+=1){if(typeof se[ve]!="number")return q.destroy(new Error("Invalid qos vector")),!1;he+=1}else return q.destroy(new Error("Invalid qos vector")),!1;let pe=null;if(X===5){if(pe=R(q,j,ce,he),!pe)return!1;he+=pe.length}return q.write(t.ACKS[K][ae][te][0]),H(q,he),p(q,O),pe!==null&&pe.write(),X===5&&q.write(l.from(se)),!0}function C(ee,q,ce){return q.write(t.EMPTY[ee.cmd])}function D(ee,q,ce){let X=ce?ce.protocolVersion:4,re=ee||{},O=re.reasonCode,te=re.properties,se=X===5?1:0,j=null;if(X===5){if(j=R(q,te,ce,se),!j)return!1;se+=j.length}return q.write(l.from([t.codes.disconnect<<4])),H(q,se),X===5&&q.write(l.from([O])),j!==null&&j.write(),!0}function A(ee,q,ce){let X=ce?ce.protocolVersion:4,re=ee||{},O=re.reasonCode,te=re.properties,se=X===5?1:0;X!==5&&q.destroy(new Error("Invalid mqtt version for auth packet"));let j=R(q,te,ce,se);return j?(se+=j.length,q.write(l.from([t.codes.auth<<4])),H(q,se),q.write(l.from([O])),j!==null&&j.write(),!0):!1}var U={};function H(ee,q){if(q>t.VARBYTEINT_MAX)return ee.destroy(new Error(`Invalid variable byte integer: ${q}`)),!1;let ce=U[q];return ce||(ce=m(q),q<16384&&(U[q]=ce)),s("writeVarByteInt: writing to stream: %o",ce),ee.write(ce)}function F(ee,q){let ce=l.byteLength(q);return p(ee,ce),s("writeString: %s",q),ee.write(q,"utf8")}function ue(ee,q,ce){F(ee,q),F(ee,ce)}function ne(ee,q){return s("writeNumberCached: number: %d",q),s("writeNumberCached: %o",c[q]),ee.write(c[q])}function oe(ee,q){let ce=d(q);return s("writeNumberGenerated: %o",ce),ee.write(ce)}function fe(ee,q){let ce=h(q);return s("write4ByteNumber: %o",ce),ee.write(ce)}function J(ee,q){typeof q=="string"?F(ee,q):q?(p(ee,q.length),ee.write(q)):p(ee,0)}function ie(ee,q){if(typeof q!="object"||q.length!=null)return{length:1,write(){ge(ee,{},0)}};let ce=0;function X(re,O){let te=t.propertiesTypes[re],se=0;switch(te){case"byte":{if(typeof O!="boolean")return ee.destroy(new Error(`Invalid ${re}: ${O}`)),!1;se+=2;break}case"int8":{if(typeof O!="number"||O<0||O>255)return ee.destroy(new Error(`Invalid ${re}: ${O}`)),!1;se+=2;break}case"binary":{if(O&&O===null)return ee.destroy(new Error(`Invalid ${re}: ${O}`)),!1;se+=1+l.byteLength(O)+2;break}case"int16":{if(typeof O!="number"||O<0||O>65535)return ee.destroy(new Error(`Invalid ${re}: ${O}`)),!1;se+=3;break}case"int32":{if(typeof O!="number"||O<0||O>4294967295)return ee.destroy(new Error(`Invalid ${re}: ${O}`)),!1;se+=5;break}case"var":{if(typeof O!="number"||O<0||O>268435455)return ee.destroy(new Error(`Invalid ${re}: ${O}`)),!1;se+=1+l.byteLength(m(O));break}case"string":{if(typeof O!="string")return ee.destroy(new Error(`Invalid ${re}: ${O}`)),!1;se+=3+l.byteLength(O.toString());break}case"pair":{if(typeof O!="object")return ee.destroy(new Error(`Invalid ${re}: ${O}`)),!1;se+=Object.getOwnPropertyNames(O).reduce((j,K)=>{let ae=O[K];return Array.isArray(ae)?j+=ae.reduce((he,pe)=>(he+=3+l.byteLength(K.toString())+2+l.byteLength(pe.toString()),he),0):j+=3+l.byteLength(K.toString())+2+l.byteLength(O[K].toString()),j},0);break}default:return ee.destroy(new Error(`Invalid property ${re}: ${O}`)),!1}return se}if(q)for(let re in q){let O=0,te=0,se=q[re];if(se!==void 0){if(Array.isArray(se))for(let j=0;j<se.length;j++){if(te=X(re,se[j]),!te)return!1;O+=te}else{if(te=X(re,se),!te)return!1;O=te}if(!O)return!1;ce+=O}}return{length:l.byteLength(m(ce))+ce,write(){ge(ee,q,ce)}}}function R(ee,q,ce,X){let re=["reasonString","userProperties"],O=ce&&ce.properties&&ce.properties.maximumPacketSize?ce.properties.maximumPacketSize:0,te=ie(ee,q);if(O)for(;X+te.length>O;){let se=re.shift();if(se&&q[se])delete q[se],te=ie(ee,q);else return!1}return te}function Z(ee,q,ce){switch(t.propertiesTypes[q]){case"byte":{ee.write(l.from([t.properties[q]])),ee.write(l.from([+ce]));break}case"int8":{ee.write(l.from([t.properties[q]])),ee.write(l.from([ce]));break}case"binary":{ee.write(l.from([t.properties[q]])),J(ee,ce);break}case"int16":{ee.write(l.from([t.properties[q]])),p(ee,ce);break}case"int32":{ee.write(l.from([t.properties[q]])),fe(ee,ce);break}case"var":{ee.write(l.from([t.properties[q]])),H(ee,ce);break}case"string":{ee.write(l.from([t.properties[q]])),F(ee,ce);break}case"pair":{Object.getOwnPropertyNames(ce).forEach(X=>{let re=ce[X];Array.isArray(re)?re.forEach(O=>{ee.write(l.from([t.properties[q]])),ue(ee,X.toString(),O.toString())}):(ee.write(l.from([t.properties[q]])),ue(ee,X.toString(),re.toString()))});break}default:return ee.destroy(new Error(`Invalid property ${q} value: ${ce}`)),!1}}function ge(ee,q,ce){H(ee,ce);for(let X in q)if(Object.prototype.hasOwnProperty.call(q,X)&&q[X]!=null){let re=q[X];if(Array.isArray(re))for(let O=0;O<re.length;O++)Z(ee,X,re[O]);else Z(ee,X,re)}}function G(ee){return ee?ee instanceof l?ee.length:l.byteLength(ee):0}function Ve(ee){return typeof ee=="string"||ee instanceof l}r.exports=v}),Ny=_e((u,r)=>{be(),Ee(),we();var t=Qs(),{EventEmitter:l}=(Gt(),We(Tt)),{Buffer:n}=(ot(),We(rt));function o(a,s){let c=new i;return t(a,c,s),c.concat()}var i=class extends l{constructor(){super(),this._array=new Array(20),this._i=0}write(a){return this._array[this._i++]=a,!0}concat(){let a=0,s=new Array(this._array.length),c=this._array,d=0,f;for(f=0;f<c.length&&c[f]!==void 0;f++)typeof c[f]!="string"?s[f]=c[f].length:s[f]=n.byteLength(c[f]),a+=s[f];let m=n.allocUnsafe(a);for(f=0;f<c.length&&c[f]!==void 0;f++)typeof c[f]!="string"?(c[f].copy(m,d),d+=s[f]):(m.write(c[f],d),d+=s[f]);return m}destroy(a){a&&this.emit("error",a)}};r.exports=o}),xy=_e(u=>{be(),Ee(),we(),u.parser=vy().parser,u.generate=Ny(),u.writeToStream=Qs()}),Sy=_e((u,r)=>{be(),Ee(),we(),r.exports=l;function t(o){return o instanceof Cr?Cr.from(o):new o.constructor(o.buffer.slice(),o.byteOffset,o.length)}function l(o){if(o=o||{},o.circles)return n(o);let i=new Map;if(i.set(Date,f=>new Date(f)),i.set(Map,(f,m)=>new Map(s(Array.from(f),m))),i.set(Set,(f,m)=>new Set(s(Array.from(f),m))),o.constructorHandlers)for(let f of o.constructorHandlers)i.set(f[0],f[1]);let a=null;return o.proto?d:c;function s(f,m){let h=Object.keys(f),p=new Array(h.length);for(let w=0;w<h.length;w++){let v=h[w],S=f[v];typeof S!="object"||S===null?p[v]=S:S.constructor!==Object&&(a=i.get(S.constructor))?p[v]=a(S,m):ArrayBuffer.isView(S)?p[v]=t(S):p[v]=m(S)}return p}function c(f){if(typeof f!="object"||f===null)return f;if(Array.isArray(f))return s(f,c);if(f.constructor!==Object&&(a=i.get(f.constructor)))return a(f,c);let m={};for(let h in f){if(Object.hasOwnProperty.call(f,h)===!1)continue;let p=f[h];typeof p!="object"||p===null?m[h]=p:p.constructor!==Object&&(a=i.get(p.constructor))?m[h]=a(p,c):ArrayBuffer.isView(p)?m[h]=t(p):m[h]=c(p)}return m}function d(f){if(typeof f!="object"||f===null)return f;if(Array.isArray(f))return s(f,d);if(f.constructor!==Object&&(a=i.get(f.constructor)))return a(f,d);let m={};for(let h in f){let p=f[h];typeof p!="object"||p===null?m[h]=p:p.constructor!==Object&&(a=i.get(p.constructor))?m[h]=a(p,d):ArrayBuffer.isView(p)?m[h]=t(p):m[h]=d(p)}return m}}function n(o){let i=[],a=[],s=new Map;if(s.set(Date,h=>new Date(h)),s.set(Map,(h,p)=>new Map(d(Array.from(h),p))),s.set(Set,(h,p)=>new Set(d(Array.from(h),p))),o.constructorHandlers)for(let h of o.constructorHandlers)s.set(h[0],h[1]);let c=null;return o.proto?m:f;function d(h,p){let w=Object.keys(h),v=new Array(w.length);for(let S=0;S<w.length;S++){let y=w[S],k=h[y];if(typeof k!="object"||k===null)v[y]=k;else if(k.constructor!==Object&&(c=s.get(k.constructor)))v[y]=c(k,p);else if(ArrayBuffer.isView(k))v[y]=t(k);else{let _=i.indexOf(k);_!==-1?v[y]=a[_]:v[y]=p(k)}}return v}function f(h){if(typeof h!="object"||h===null)return h;if(Array.isArray(h))return d(h,f);if(h.constructor!==Object&&(c=s.get(h.constructor)))return c(h,f);let p={};i.push(h),a.push(p);for(let w in h){if(Object.hasOwnProperty.call(h,w)===!1)continue;let v=h[w];if(typeof v!="object"||v===null)p[w]=v;else if(v.constructor!==Object&&(c=s.get(v.constructor)))p[w]=c(v,f);else if(ArrayBuffer.isView(v))p[w]=t(v);else{let S=i.indexOf(v);S!==-1?p[w]=a[S]:p[w]=f(v)}}return i.pop(),a.pop(),p}function m(h){if(typeof h!="object"||h===null)return h;if(Array.isArray(h))return d(h,m);if(h.constructor!==Object&&(c=s.get(h.constructor)))return c(h,m);let p={};i.push(h),a.push(p);for(let w in h){let v=h[w];if(typeof v!="object"||v===null)p[w]=v;else if(v.constructor!==Object&&(c=s.get(v.constructor)))p[w]=c(v,m);else if(ArrayBuffer.isView(v))p[w]=t(v);else{let S=i.indexOf(v);S!==-1?p[w]=a[S]:p[w]=m(v)}}return i.pop(),a.pop(),p}}}),Vy=_e((u,r)=>{be(),Ee(),we(),r.exports=Sy()()}),Cy=_e(u=>{be(),Ee(),we(),Object.defineProperty(u,"__esModule",{value:!0}),u.validateTopic=r,u.validateTopics=t;function r(l){let n=l.split("/");for(let o=0;o<n.length;o++)if(n[o]!=="+"){if(n[o]==="#")return o===n.length-1;if(n[o].indexOf("+")!==-1||n[o].indexOf("#")!==-1)return!1}return!0}function t(l){if(l.length===0)return"empty_topic_list";for(let n=0;n<l.length;n++)if(!r(l[n]))return l[n];return null}}),Ys=_e(u=>{be(),Ee(),we(),Object.defineProperty(u,"__esModule",{value:!0});var r=Kt(),t={objectMode:!0},l={clean:!0},n=class{constructor(o){Se(this,"options");Se(this,"_inflights");this.options=o||{},this.options={...l,...o},this._inflights=new Map}put(o,i){return this._inflights.set(o.messageId,o),i&&i(),this}createStream(){let o=new r.Readable(t),i=[],a=!1,s=0;return this._inflights.forEach((c,d)=>{i.push(c)}),o._read=()=>{!a&&s<i.length?o.push(i[s++]):o.push(null)},o.destroy=c=>{if(!a)return a=!0,setTimeout(()=>{o.emit("close")},0),o},o}del(o,i){let a=this._inflights.get(o.messageId);return a?(this._inflights.delete(o.messageId),i(null,a)):i&&i(new Error("missing packet")),this}get(o,i){let a=this._inflights.get(o.messageId);return a?i(null,a):i&&i(new Error("missing packet")),this}close(o){this.options.clean&&(this._inflights=null),o&&o()}};u.default=n}),Iy=_e(u=>{be(),Ee(),we(),Object.defineProperty(u,"__esModule",{value:!0});var r=[0,16,128,131,135,144,145,151,153],t=(l,n,o)=>{l.log("handlePublish: packet %o",n),o=typeof o<"u"?o:l.noop;let i=n.topic.toString(),a=n.payload,{qos:s}=n,{messageId:c}=n,{options:d}=l;if(l.options.protocolVersion===5){let f;if(n.properties&&(f=n.properties.topicAlias),typeof f<"u")if(i.length===0)if(f>0&&f<=65535){let m=l.topicAliasRecv.getTopicByAlias(f);if(m)i=m,l.log("handlePublish :: topic complemented by alias. topic: %s - alias: %d",i,f);else{l.log("handlePublish :: unregistered topic alias. alias: %d",f),l.emit("error",new Error("Received unregistered Topic Alias"));return}}else{l.log("handlePublish :: topic alias out of range. alias: %d",f),l.emit("error",new Error("Received Topic Alias is out of range"));return}else if(l.topicAliasRecv.put(i,f))l.log("handlePublish :: registered topic: %s - alias: %d",i,f);else{l.log("handlePublish :: topic alias out of range. alias: %d",f),l.emit("error",new Error("Received Topic Alias is out of range"));return}}switch(l.log("handlePublish: qos %d",s),s){case 2:{d.customHandleAcks(i,a,n,(f,m)=>{if(typeof f=="number"&&(m=f,f=null),f)return l.emit("error",f);if(r.indexOf(m)===-1)return l.emit("error",new Error("Wrong reason code for pubrec"));m?l._sendPacket({cmd:"pubrec",messageId:c,reasonCode:m},o):l.incomingStore.put(n,()=>{l._sendPacket({cmd:"pubrec",messageId:c},o)})});break}case 1:{d.customHandleAcks(i,a,n,(f,m)=>{if(typeof f=="number"&&(m=f,f=null),f)return l.emit("error",f);if(r.indexOf(m)===-1)return l.emit("error",new Error("Wrong reason code for puback"));m||l.emit("message",i,a,n),l.handleMessage(n,h=>{if(h)return o&&o(h);l._sendPacket({cmd:"puback",messageId:c,reasonCode:m},o)})});break}case 0:l.emit("message",i,a,n),l.handleMessage(n,o);break;default:l.log("handlePublish: unknown QoS. Doing nothing.");break}};u.default=t}),Ay=_e((u,r)=>{r.exports={version:"5.14.1"}}),ir=_e(u=>{be(),Ee(),we(),Object.defineProperty(u,"__esModule",{value:!0}),u.MQTTJS_VERSION=u.nextTick=u.ErrorWithSubackPacket=u.ErrorWithReasonCode=void 0,u.applyMixin=l;var r=class fc extends Error{constructor(i,a){super(i);Se(this,"code");this.code=a,Object.setPrototypeOf(this,fc.prototype),Object.getPrototypeOf(this).name="ErrorWithReasonCode"}};u.ErrorWithReasonCode=r;var t=class pc extends Error{constructor(i,a){super(i);Se(this,"packet");this.packet=a,Object.setPrototypeOf(this,pc.prototype),Object.getPrototypeOf(this).name="ErrorWithSubackPacket"}};u.ErrorWithSubackPacket=t;function l(n,o,i=!1){let a=[o];for(;;){let s=a[0],c=Object.getPrototypeOf(s);if(c!=null&&c.prototype)a.unshift(c);else break}for(let s of a)for(let c of Object.getOwnPropertyNames(s.prototype))(i||c!=="constructor")&&Object.defineProperty(n.prototype,c,Object.getOwnPropertyDescriptor(s.prototype,c)??Object.create(null))}u.nextTick=typeof(ze==null?void 0:ze.nextTick)=="function"?ze.nextTick:n=>{setTimeout(n,0)},u.MQTTJS_VERSION=Ay().version}),Tr=_e(u=>{be(),Ee(),we(),Object.defineProperty(u,"__esModule",{value:!0}),u.ReasonCodes=void 0;var r=ir();u.ReasonCodes={0:"",1:"Unacceptable protocol version",2:"Identifier rejected",3:"Server unavailable",4:"Bad username or password",5:"Not authorized",16:"No matching subscribers",17:"No subscription existed",128:"Unspecified error",129:"Malformed Packet",130:"Protocol Error",131:"Implementation specific error",132:"Unsupported Protocol Version",133:"Client Identifier not valid",134:"Bad User Name or Password",135:"Not authorized",136:"Server unavailable",137:"Server busy",138:"Banned",139:"Server shutting down",140:"Bad authentication method",141:"Keep Alive timeout",142:"Session taken over",143:"Topic Filter invalid",144:"Topic Name invalid",145:"Packet identifier in use",146:"Packet Identifier not found",147:"Receive Maximum exceeded",148:"Topic Alias invalid",149:"Packet too large",150:"Message rate too high",151:"Quota exceeded",152:"Administrative action",153:"Payload format invalid",154:"Retain not supported",155:"QoS not supported",156:"Use another server",157:"Server moved",158:"Shared Subscriptions not supported",159:"Connection rate exceeded",160:"Maximum connect time",161:"Subscription Identifiers not supported",162:"Wildcard Subscriptions not supported"};var t=(l,n)=>{let{messageId:o}=n,i=n.cmd,a=null,s=l.outgoing[o]?l.outgoing[o].cb:null,c=null;if(!s){l.log("_handleAck :: Server sent an ack in error. Ignoring.");return}switch(l.log("_handleAck :: packet type",i),i){case"pubcomp":case"puback":{let d=n.reasonCode;d&&d>0&&d!==16?(c=new r.ErrorWithReasonCode(`Publish error: ${u.ReasonCodes[d]}`,d),l._removeOutgoingAndStoreMessage(o,()=>{s(c,n)})):l._removeOutgoingAndStoreMessage(o,s);break}case"pubrec":{a={cmd:"pubrel",qos:2,messageId:o};let d=n.reasonCode;d&&d>0&&d!==16?(c=new r.ErrorWithReasonCode(`Publish error: ${u.ReasonCodes[d]}`,d),l._removeOutgoingAndStoreMessage(o,()=>{s(c,n)})):l._sendPacket(a);break}case"suback":{delete l.outgoing[o],l.messageIdProvider.deallocate(o);let d=n.granted;for(let f=0;f<d.length;f++){let m=d[f];if(m&128){c=new Error(`Subscribe error: ${u.ReasonCodes[m]}`),c.code=m;let h=l.messageIdToTopic[o];h&&h.forEach(p=>{delete l._resubscribeTopics[p]})}}delete l.messageIdToTopic[o],l._invokeStoreProcessingQueue(),s(c,n);break}case"unsuback":{delete l.outgoing[o],l.messageIdProvider.deallocate(o),l._invokeStoreProcessingQueue(),s(null,n);break}default:l.emit("error",new Error("unrecognized packet type"))}l.disconnecting&&Object.keys(l.outgoing).length===0&&l.emit("outgoingEmpty")};u.default=t}),$y=_e(u=>{be(),Ee(),we(),Object.defineProperty(u,"__esModule",{value:!0});var r=ir(),t=Tr(),l=(n,o)=>{let{options:i}=n,a=i.protocolVersion,s=a===5?o.reasonCode:o.returnCode;if(a!==5){let c=new r.ErrorWithReasonCode(`Protocol error: Auth packets are only supported in MQTT 5. Your version:${a}`,s);n.emit("error",c);return}n.handleAuth(o,(c,d)=>{if(c){n.emit("error",c);return}if(s===24)n.reconnecting=!1,n._sendPacket(d);else{let f=new r.ErrorWithReasonCode(`Connection refused: ${t.ReasonCodes[s]}`,s);n.emit("error",f)}})};u.default=l}),Ty=_e(u=>{var h,p,w,v,S,y,k,_,E,I,x,V,$,C,D,A,U,H,F,ue,ne,oe,fe,J,ie,R,Z,ge,G,Ki,ee,q,ce,X,hc,O,te,se,Lt,Ut,Qi,po,ho,Qe,Yi,Nr,Ft,Ji,Ae;be(),Ee(),we(),Object.defineProperty(u,"__esModule",{value:!0}),u.LRUCache=void 0;var r=typeof performance=="object"&&performance&&typeof performance.now=="function"?performance:Date,t=new Set,l=typeof ze=="object"&&ze?ze:{},n=(g,b,N,T)=>{typeof l.emitWarning=="function"?l.emitWarning(g,b,N,T):console.error(`[${N}] ${b}: ${g}`)},o=globalThis.AbortController,i=globalThis.AbortSignal;if(typeof o>"u"){i=class{constructor(){Se(this,"onabort");Se(this,"_onabort",[]);Se(this,"reason");Se(this,"aborted",!1)}addEventListener(N,T){this._onabort.push(T)}},o=class{constructor(){Se(this,"signal",new i);b()}abort(N){var T,L;if(!this.signal.aborted){this.signal.reason=N,this.signal.aborted=!0;for(let Y of this.signal._onabort)Y(N);(L=(T=this.signal).onabort)==null||L.call(T,N)}}};let g=((h=l.env)==null?void 0:h.LRU_CACHE_IGNORE_AC_WARNING)!=="1",b=()=>{g&&(g=!1,n("AbortController is not defined. If using lru-cache in node 14, load an AbortController polyfill from the `node-abort-controller` package. A minimal polyfill is provided for use by LRUCache.fetch(), but it should not be relied upon in other contexts (eg, passing it to other APIs that use AbortController/AbortSignal might have undesirable effects). You may disable this with LRU_CACHE_IGNORE_AC_WARNING=1 in the env.","NO_ABORT_CONTROLLER","ENOTSUP",b))}}var a=g=>!t.has(g),s=g=>g&&g===Math.floor(g)&&g>0&&isFinite(g),c=g=>s(g)?g<=Math.pow(2,8)?Uint8Array:g<=Math.pow(2,16)?Uint16Array:g<=Math.pow(2,32)?Uint32Array:g<=Number.MAX_SAFE_INTEGER?d:null:null,d=class extends Array{constructor(g){super(g),this.fill(0)}},f=(p=class{constructor(b,N){Se(this,"heap");Se(this,"length");if(!W(p,w))throw new TypeError("instantiate Stack using Stack.create(n)");this.heap=new N(b),this.length=0}static create(b){let N=c(b);if(!N)return[];Oe(p,w,!0);let T=new p(b,N);return Oe(p,w,!1),T}push(b){this.heap[this.length++]=b}pop(){return this.heap[--this.length]}},w=new WeakMap,Fe(p,w,!1),p),m=(Ae=class{constructor(b){Fe(this,G);Fe(this,y);Fe(this,k);Fe(this,_);Fe(this,E);Fe(this,I);Fe(this,x);Se(this,"ttl");Se(this,"ttlResolution");Se(this,"ttlAutopurge");Se(this,"updateAgeOnGet");Se(this,"updateAgeOnHas");Se(this,"allowStale");Se(this,"noDisposeOnSet");Se(this,"noUpdateTTL");Se(this,"maxEntrySize");Se(this,"sizeCalculation");Se(this,"noDeleteOnFetchRejection");Se(this,"noDeleteOnStaleGet");Se(this,"allowStaleOnFetchAbort");Se(this,"allowStaleOnFetchRejection");Se(this,"ignoreFetchAbort");Fe(this,V);Fe(this,$);Fe(this,C);Fe(this,D);Fe(this,A);Fe(this,U);Fe(this,H);Fe(this,F);Fe(this,ue);Fe(this,ne);Fe(this,oe);Fe(this,fe);Fe(this,J);Fe(this,ie);Fe(this,R);Fe(this,Z);Fe(this,ge);Fe(this,ee,()=>{});Fe(this,q,()=>{});Fe(this,ce,()=>{});Fe(this,X,()=>!1);Fe(this,O,b=>{});Fe(this,te,(b,N,T)=>{});Fe(this,se,(b,N,T,L)=>{if(T||L)throw new TypeError("cannot set size without setting maxSize or maxEntrySize on cache");return 0});Se(this,v,"LRUCache");let{max:N=0,ttl:T,ttlResolution:L=1,ttlAutopurge:Y,updateAgeOnGet:le,updateAgeOnHas:B,allowStale:P,dispose:me,disposeAfter:Ne,noDisposeOnSet:xe,noUpdateTTL:De,maxSize:Ge=0,maxEntrySize:et=0,sizeCalculation:Re,fetchMethod:He,memoMethod:Pe,noDeleteOnFetchRejection:Ue,noDeleteOnStaleGet:qe,allowStaleOnFetchRejection:Ze,allowStaleOnFetchAbort:nt,ignoreFetchAbort:ht}=b;if(N!==0&&!s(N))throw new TypeError("max option must be a nonnegative integer");let M=N?c(N):Array;if(!M)throw new Error("invalid max value: "+N);if(Oe(this,y,N),Oe(this,k,Ge),this.maxEntrySize=et||W(this,k),this.sizeCalculation=Re,this.sizeCalculation){if(!W(this,k)&&!this.maxEntrySize)throw new TypeError("cannot set sizeCalculation without setting maxSize or maxEntrySize");if(typeof this.sizeCalculation!="function")throw new TypeError("sizeCalculation set to non-function")}if(Pe!==void 0&&typeof Pe!="function")throw new TypeError("memoMethod must be a function if defined");if(Oe(this,x,Pe),He!==void 0&&typeof He!="function")throw new TypeError("fetchMethod must be a function if specified");if(Oe(this,I,He),Oe(this,Z,!!He),Oe(this,C,new Map),Oe(this,D,new Array(N).fill(void 0)),Oe(this,A,new Array(N).fill(void 0)),Oe(this,U,new M(N)),Oe(this,H,new M(N)),Oe(this,F,0),Oe(this,ue,0),Oe(this,ne,f.create(N)),Oe(this,V,0),Oe(this,$,0),typeof me=="function"&&Oe(this,_,me),typeof Ne=="function"?(Oe(this,E,Ne),Oe(this,oe,[])):(Oe(this,E,void 0),Oe(this,oe,void 0)),Oe(this,R,!!W(this,_)),Oe(this,ge,!!W(this,E)),this.noDisposeOnSet=!!xe,this.noUpdateTTL=!!De,this.noDeleteOnFetchRejection=!!Ue,this.allowStaleOnFetchRejection=!!Ze,this.allowStaleOnFetchAbort=!!nt,this.ignoreFetchAbort=!!ht,this.maxEntrySize!==0){if(W(this,k)!==0&&!s(W(this,k)))throw new TypeError("maxSize must be a positive integer if specified");if(!s(this.maxEntrySize))throw new TypeError("maxEntrySize must be a positive integer if specified");Be(this,G,hc).call(this)}if(this.allowStale=!!P,this.noDeleteOnStaleGet=!!qe,this.updateAgeOnGet=!!le,this.updateAgeOnHas=!!B,this.ttlResolution=s(L)||L===0?L:1,this.ttlAutopurge=!!Y,this.ttl=T||0,this.ttl){if(!s(this.ttl))throw new TypeError("ttl must be a positive integer if specified");Be(this,G,Ki).call(this)}if(W(this,y)===0&&this.ttl===0&&W(this,k)===0)throw new TypeError("At least one of max, maxSize, or ttl is required");if(!this.ttlAutopurge&&!W(this,y)&&!W(this,k)){let z="LRU_CACHE_UNBOUNDED";a(z)&&(t.add(z),n("TTL caching without ttlAutopurge, max, or maxSize can result in unbounded memory consumption.","UnboundedCacheWarning",z,Ae))}}static unsafeExposeInternals(b){return{starts:W(b,J),ttls:W(b,ie),sizes:W(b,fe),keyMap:W(b,C),keyList:W(b,D),valList:W(b,A),next:W(b,U),prev:W(b,H),get head(){return W(b,F)},get tail(){return W(b,ue)},free:W(b,ne),isBackgroundFetch:N=>{var T;return Be(T=b,G,Qe).call(T,N)},backgroundFetch:(N,T,L,Y)=>{var le;return Be(le=b,G,ho).call(le,N,T,L,Y)},moveToTail:N=>{var T;return Be(T=b,G,Nr).call(T,N)},indexes:N=>{var T;return Be(T=b,G,Lt).call(T,N)},rindexes:N=>{var T;return Be(T=b,G,Ut).call(T,N)},isStale:N=>{var T;return W(T=b,X).call(T,N)}}}get max(){return W(this,y)}get maxSize(){return W(this,k)}get calculatedSize(){return W(this,$)}get size(){return W(this,V)}get fetchMethod(){return W(this,I)}get memoMethod(){return W(this,x)}get dispose(){return W(this,_)}get disposeAfter(){return W(this,E)}getRemainingTTL(b){return W(this,C).has(b)?1/0:0}*entries(){for(let b of Be(this,G,Lt).call(this))W(this,A)[b]!==void 0&&W(this,D)[b]!==void 0&&!Be(this,G,Qe).call(this,W(this,A)[b])&&(yield[W(this,D)[b],W(this,A)[b]])}*rentries(){for(let b of Be(this,G,Ut).call(this))W(this,A)[b]!==void 0&&W(this,D)[b]!==void 0&&!Be(this,G,Qe).call(this,W(this,A)[b])&&(yield[W(this,D)[b],W(this,A)[b]])}*keys(){for(let b of Be(this,G,Lt).call(this)){let N=W(this,D)[b];N!==void 0&&!Be(this,G,Qe).call(this,W(this,A)[b])&&(yield N)}}*rkeys(){for(let b of Be(this,G,Ut).call(this)){let N=W(this,D)[b];N!==void 0&&!Be(this,G,Qe).call(this,W(this,A)[b])&&(yield N)}}*values(){for(let b of Be(this,G,Lt).call(this))W(this,A)[b]!==void 0&&!Be(this,G,Qe).call(this,W(this,A)[b])&&(yield W(this,A)[b])}*rvalues(){for(let b of Be(this,G,Ut).call(this))W(this,A)[b]!==void 0&&!Be(this,G,Qe).call(this,W(this,A)[b])&&(yield W(this,A)[b])}[(S=Symbol.iterator,v=Symbol.toStringTag,S)](){return this.entries()}find(b,N={}){for(let T of Be(this,G,Lt).call(this)){let L=W(this,A)[T],Y=Be(this,G,Qe).call(this,L)?L.__staleWhileFetching:L;if(Y!==void 0&&b(Y,W(this,D)[T],this))return this.get(W(this,D)[T],N)}}forEach(b,N=this){for(let T of Be(this,G,Lt).call(this)){let L=W(this,A)[T],Y=Be(this,G,Qe).call(this,L)?L.__staleWhileFetching:L;Y!==void 0&&b.call(N,Y,W(this,D)[T],this)}}rforEach(b,N=this){for(let T of Be(this,G,Ut).call(this)){let L=W(this,A)[T],Y=Be(this,G,Qe).call(this,L)?L.__staleWhileFetching:L;Y!==void 0&&b.call(N,Y,W(this,D)[T],this)}}purgeStale(){let b=!1;for(let N of Be(this,G,Ut).call(this,{allowStale:!0}))W(this,X).call(this,N)&&(Be(this,G,Ft).call(this,W(this,D)[N],"expire"),b=!0);return b}info(b){let N=W(this,C).get(b);if(N===void 0)return;let T=W(this,A)[N],L=Be(this,G,Qe).call(this,T)?T.__staleWhileFetching:T;if(L===void 0)return;let Y={value:L};if(W(this,ie)&&W(this,J)){let le=W(this,ie)[N],B=W(this,J)[N];if(le&&B){let P=le-(r.now()-B);Y.ttl=P,Y.start=Date.now()}}return W(this,fe)&&(Y.size=W(this,fe)[N]),Y}dump(){let b=[];for(let N of Be(this,G,Lt).call(this,{allowStale:!0})){let T=W(this,D)[N],L=W(this,A)[N],Y=Be(this,G,Qe).call(this,L)?L.__staleWhileFetching:L;if(Y===void 0||T===void 0)continue;let le={value:Y};if(W(this,ie)&&W(this,J)){le.ttl=W(this,ie)[N];let B=r.now()-W(this,J)[N];le.start=Math.floor(Date.now()-B)}W(this,fe)&&(le.size=W(this,fe)[N]),b.unshift([T,le])}return b}load(b){this.clear();for(let[N,T]of b){if(T.start){let L=Date.now()-T.start;T.start=r.now()-L}this.set(N,T.value,T)}}set(b,N,T={}){var De,Ge,et,Re,He;if(N===void 0)return this.delete(b),this;let{ttl:L=this.ttl,start:Y,noDisposeOnSet:le=this.noDisposeOnSet,sizeCalculation:B=this.sizeCalculation,status:P}=T,{noUpdateTTL:me=this.noUpdateTTL}=T,Ne=W(this,se).call(this,b,N,T.size||0,B);if(this.maxEntrySize&&Ne>this.maxEntrySize)return P&&(P.set="miss",P.maxEntrySizeExceeded=!0),Be(this,G,Ft).call(this,b,"set"),this;let xe=W(this,V)===0?void 0:W(this,C).get(b);if(xe===void 0)xe=W(this,V)===0?W(this,ue):W(this,ne).length!==0?W(this,ne).pop():W(this,V)===W(this,y)?Be(this,G,po).call(this,!1):W(this,V),W(this,D)[xe]=b,W(this,A)[xe]=N,W(this,C).set(b,xe),W(this,U)[W(this,ue)]=xe,W(this,H)[xe]=W(this,ue),Oe(this,ue,xe),fo(this,V)._++,W(this,te).call(this,xe,Ne,P),P&&(P.set="add"),me=!1;else{Be(this,G,Nr).call(this,xe);let Pe=W(this,A)[xe];if(N!==Pe){if(W(this,Z)&&Be(this,G,Qe).call(this,Pe)){Pe.__abortController.abort(new Error("replaced"));let{__staleWhileFetching:Ue}=Pe;Ue!==void 0&&!le&&(W(this,R)&&((De=W(this,_))==null||De.call(this,Ue,b,"set")),W(this,ge)&&((Ge=W(this,oe))==null||Ge.push([Ue,b,"set"])))}else le||(W(this,R)&&((et=W(this,_))==null||et.call(this,Pe,b,"set")),W(this,ge)&&((Re=W(this,oe))==null||Re.push([Pe,b,"set"])));if(W(this,O).call(this,xe),W(this,te).call(this,xe,Ne,P),W(this,A)[xe]=N,P){P.set="replace";let Ue=Pe&&Be(this,G,Qe).call(this,Pe)?Pe.__staleWhileFetching:Pe;Ue!==void 0&&(P.oldValue=Ue)}}else P&&(P.set="update")}if(L!==0&&!W(this,ie)&&Be(this,G,Ki).call(this),W(this,ie)&&(me||W(this,ce).call(this,xe,L,Y),P&&W(this,q).call(this,P,xe)),!le&&W(this,ge)&&W(this,oe)){let Pe=W(this,oe),Ue;for(;Ue=Pe==null?void 0:Pe.shift();)(He=W(this,E))==null||He.call(this,...Ue)}return this}pop(){var b;try{for(;W(this,V);){let N=W(this,A)[W(this,F)];if(Be(this,G,po).call(this,!0),Be(this,G,Qe).call(this,N)){if(N.__staleWhileFetching)return N.__staleWhileFetching}else if(N!==void 0)return N}}finally{if(W(this,ge)&&W(this,oe)){let N=W(this,oe),T;for(;T=N==null?void 0:N.shift();)(b=W(this,E))==null||b.call(this,...T)}}}has(b,N={}){let{updateAgeOnHas:T=this.updateAgeOnHas,status:L}=N,Y=W(this,C).get(b);if(Y!==void 0){let le=W(this,A)[Y];if(Be(this,G,Qe).call(this,le)&&le.__staleWhileFetching===void 0)return!1;if(W(this,X).call(this,Y))L&&(L.has="stale",W(this,q).call(this,L,Y));else return T&&W(this,ee).call(this,Y),L&&(L.has="hit",W(this,q).call(this,L,Y)),!0}else L&&(L.has="miss");return!1}peek(b,N={}){let{allowStale:T=this.allowStale}=N,L=W(this,C).get(b);if(L===void 0||!T&&W(this,X).call(this,L))return;let Y=W(this,A)[L];return Be(this,G,Qe).call(this,Y)?Y.__staleWhileFetching:Y}async fetch(b,N={}){let{allowStale:T=this.allowStale,updateAgeOnGet:L=this.updateAgeOnGet,noDeleteOnStaleGet:Y=this.noDeleteOnStaleGet,ttl:le=this.ttl,noDisposeOnSet:B=this.noDisposeOnSet,size:P=0,sizeCalculation:me=this.sizeCalculation,noUpdateTTL:Ne=this.noUpdateTTL,noDeleteOnFetchRejection:xe=this.noDeleteOnFetchRejection,allowStaleOnFetchRejection:De=this.allowStaleOnFetchRejection,ignoreFetchAbort:Ge=this.ignoreFetchAbort,allowStaleOnFetchAbort:et=this.allowStaleOnFetchAbort,context:Re,forceRefresh:He=!1,status:Pe,signal:Ue}=N;if(!W(this,Z))return Pe&&(Pe.fetch="get"),this.get(b,{allowStale:T,updateAgeOnGet:L,noDeleteOnStaleGet:Y,status:Pe});let qe={allowStale:T,updateAgeOnGet:L,noDeleteOnStaleGet:Y,ttl:le,noDisposeOnSet:B,size:P,sizeCalculation:me,noUpdateTTL:Ne,noDeleteOnFetchRejection:xe,allowStaleOnFetchRejection:De,allowStaleOnFetchAbort:et,ignoreFetchAbort:Ge,status:Pe,signal:Ue},Ze=W(this,C).get(b);if(Ze===void 0){Pe&&(Pe.fetch="miss");let nt=Be(this,G,ho).call(this,b,Ze,qe,Re);return nt.__returned=nt}else{let nt=W(this,A)[Ze];if(Be(this,G,Qe).call(this,nt)){let Ce=T&&nt.__staleWhileFetching!==void 0;return Pe&&(Pe.fetch="inflight",Ce&&(Pe.returnedStale=!0)),Ce?nt.__staleWhileFetching:nt.__returned=nt}let ht=W(this,X).call(this,Ze);if(!He&&!ht)return Pe&&(Pe.fetch="hit"),Be(this,G,Nr).call(this,Ze),L&&W(this,ee).call(this,Ze),Pe&&W(this,q).call(this,Pe,Ze),nt;let M=Be(this,G,ho).call(this,b,Ze,qe,Re),z=M.__staleWhileFetching!==void 0&&T;return Pe&&(Pe.fetch=ht?"stale":"refresh",z&&ht&&(Pe.returnedStale=!0)),z?M.__staleWhileFetching:M.__returned=M}}async forceFetch(b,N={}){let T=await this.fetch(b,N);if(T===void 0)throw new Error("fetch() returned undefined");return T}memo(b,N={}){let T=W(this,x);if(!T)throw new Error("no memoMethod provided to constructor");let{context:L,forceRefresh:Y,...le}=N,B=this.get(b,le);if(!Y&&B!==void 0)return B;let P=T(b,B,{options:le,context:L});return this.set(b,P,le),P}get(b,N={}){let{allowStale:T=this.allowStale,updateAgeOnGet:L=this.updateAgeOnGet,noDeleteOnStaleGet:Y=this.noDeleteOnStaleGet,status:le}=N,B=W(this,C).get(b);if(B!==void 0){let P=W(this,A)[B],me=Be(this,G,Qe).call(this,P);return le&&W(this,q).call(this,le,B),W(this,X).call(this,B)?(le&&(le.get="stale"),me?(le&&T&&P.__staleWhileFetching!==void 0&&(le.returnedStale=!0),T?P.__staleWhileFetching:void 0):(Y||Be(this,G,Ft).call(this,b,"expire"),le&&T&&(le.returnedStale=!0),T?P:void 0)):(le&&(le.get="hit"),me?P.__staleWhileFetching:(Be(this,G,Nr).call(this,B),L&&W(this,ee).call(this,B),P))}else le&&(le.get="miss")}delete(b){return Be(this,G,Ft).call(this,b,"delete")}clear(){return Be(this,G,Ji).call(this,"delete")}},y=new WeakMap,k=new WeakMap,_=new WeakMap,E=new WeakMap,I=new WeakMap,x=new WeakMap,V=new WeakMap,$=new WeakMap,C=new WeakMap,D=new WeakMap,A=new WeakMap,U=new WeakMap,H=new WeakMap,F=new WeakMap,ue=new WeakMap,ne=new WeakMap,oe=new WeakMap,fe=new WeakMap,J=new WeakMap,ie=new WeakMap,R=new WeakMap,Z=new WeakMap,ge=new WeakMap,G=new WeakSet,Ki=function(){let b=new d(W(this,y)),N=new d(W(this,y));Oe(this,ie,b),Oe(this,J,N),Oe(this,ce,(Y,le,B=r.now())=>{if(N[Y]=le!==0?B:0,b[Y]=le,le!==0&&this.ttlAutopurge){let P=setTimeout(()=>{W(this,X).call(this,Y)&&Be(this,G,Ft).call(this,W(this,D)[Y],"expire")},le+1);P.unref&&P.unref()}}),Oe(this,ee,Y=>{N[Y]=b[Y]!==0?r.now():0}),Oe(this,q,(Y,le)=>{if(b[le]){let B=b[le],P=N[le];if(!B||!P)return;Y.ttl=B,Y.start=P,Y.now=T||L();let me=Y.now-P;Y.remainingTTL=B-me}});let T=0,L=()=>{let Y=r.now();if(this.ttlResolution>0){T=Y;let le=setTimeout(()=>T=0,this.ttlResolution);le.unref&&le.unref()}return Y};this.getRemainingTTL=Y=>{let le=W(this,C).get(Y);if(le===void 0)return 0;let B=b[le],P=N[le];if(!B||!P)return 1/0;let me=(T||L())-P;return B-me},Oe(this,X,Y=>{let le=N[Y],B=b[Y];return!!B&&!!le&&(T||L())-le>B})},ee=new WeakMap,q=new WeakMap,ce=new WeakMap,X=new WeakMap,hc=function(){let b=new d(W(this,y));Oe(this,$,0),Oe(this,fe,b),Oe(this,O,N=>{Oe(this,$,W(this,$)-b[N]),b[N]=0}),Oe(this,se,(N,T,L,Y)=>{if(Be(this,G,Qe).call(this,T))return 0;if(!s(L))if(Y){if(typeof Y!="function")throw new TypeError("sizeCalculation must be a function");if(L=Y(T,N),!s(L))throw new TypeError("sizeCalculation return invalid (expect positive integer)")}else throw new TypeError("invalid size value (must be positive integer). When maxSize or maxEntrySize is used, sizeCalculation or size must be set.");return L}),Oe(this,te,(N,T,L)=>{if(b[N]=T,W(this,k)){let Y=W(this,k)-b[N];for(;W(this,$)>Y;)Be(this,G,po).call(this,!0)}Oe(this,$,W(this,$)+b[N]),L&&(L.entrySize=T,L.totalCalculatedSize=W(this,$))})},O=new WeakMap,te=new WeakMap,se=new WeakMap,Lt=function*({allowStale:b=this.allowStale}={}){if(W(this,V))for(let N=W(this,ue);!(!Be(this,G,Qi).call(this,N)||((b||!W(this,X).call(this,N))&&(yield N),N===W(this,F)));)N=W(this,H)[N]},Ut=function*({allowStale:b=this.allowStale}={}){if(W(this,V))for(let N=W(this,F);!(!Be(this,G,Qi).call(this,N)||((b||!W(this,X).call(this,N))&&(yield N),N===W(this,ue)));)N=W(this,U)[N]},Qi=function(b){return b!==void 0&&W(this,C).get(W(this,D)[b])===b},po=function(b){var Y,le;let N=W(this,F),T=W(this,D)[N],L=W(this,A)[N];return W(this,Z)&&Be(this,G,Qe).call(this,L)?L.__abortController.abort(new Error("evicted")):(W(this,R)||W(this,ge))&&(W(this,R)&&((Y=W(this,_))==null||Y.call(this,L,T,"evict")),W(this,ge)&&((le=W(this,oe))==null||le.push([L,T,"evict"]))),W(this,O).call(this,N),b&&(W(this,D)[N]=void 0,W(this,A)[N]=void 0,W(this,ne).push(N)),W(this,V)===1?(Oe(this,F,Oe(this,ue,0)),W(this,ne).length=0):Oe(this,F,W(this,U)[N]),W(this,C).delete(T),fo(this,V)._--,N},ho=function(b,N,T,L){let Y=N===void 0?void 0:W(this,A)[N];if(Be(this,G,Qe).call(this,Y))return Y;let le=new o,{signal:B}=T;B==null||B.addEventListener("abort",()=>le.abort(B.reason),{signal:le.signal});let P={signal:le.signal,options:T,context:L},me=(Re,He=!1)=>{let{aborted:Pe}=le.signal,Ue=T.ignoreFetchAbort&&Re!==void 0;if(T.status&&(Pe&&!He?(T.status.fetchAborted=!0,T.status.fetchError=le.signal.reason,Ue&&(T.status.fetchAbortIgnored=!0)):T.status.fetchResolved=!0),Pe&&!Ue&&!He)return xe(le.signal.reason);let qe=Ge;return W(this,A)[N]===Ge&&(Re===void 0?qe.__staleWhileFetching?W(this,A)[N]=qe.__staleWhileFetching:Be(this,G,Ft).call(this,b,"fetch"):(T.status&&(T.status.fetchUpdated=!0),this.set(b,Re,P.options))),Re},Ne=Re=>(T.status&&(T.status.fetchRejected=!0,T.status.fetchError=Re),xe(Re)),xe=Re=>{let{aborted:He}=le.signal,Pe=He&&T.allowStaleOnFetchAbort,Ue=Pe||T.allowStaleOnFetchRejection,qe=Ue||T.noDeleteOnFetchRejection,Ze=Ge;if(W(this,A)[N]===Ge&&(!qe||Ze.__staleWhileFetching===void 0?Be(this,G,Ft).call(this,b,"fetch"):Pe||(W(this,A)[N]=Ze.__staleWhileFetching)),Ue)return T.status&&Ze.__staleWhileFetching!==void 0&&(T.status.returnedStale=!0),Ze.__staleWhileFetching;if(Ze.__returned===Ze)throw Re},De=(Re,He)=>{var Ue;let Pe=(Ue=W(this,I))==null?void 0:Ue.call(this,b,Y,P);Pe&&Pe instanceof Promise&&Pe.then(qe=>Re(qe===void 0?void 0:qe),He),le.signal.addEventListener("abort",()=>{(!T.ignoreFetchAbort||T.allowStaleOnFetchAbort)&&(Re(void 0),T.allowStaleOnFetchAbort&&(Re=qe=>me(qe,!0)))})};T.status&&(T.status.fetchDispatched=!0);let Ge=new Promise(De).then(me,Ne),et=Object.assign(Ge,{__abortController:le,__staleWhileFetching:Y,__returned:void 0});return N===void 0?(this.set(b,et,{...P.options,status:void 0}),N=W(this,C).get(b)):W(this,A)[N]=et,et},Qe=function(b){if(!W(this,Z))return!1;let N=b;return!!N&&N instanceof Promise&&N.hasOwnProperty("__staleWhileFetching")&&N.__abortController instanceof o},Yi=function(b,N){W(this,H)[N]=b,W(this,U)[b]=N},Nr=function(b){b!==W(this,ue)&&(b===W(this,F)?Oe(this,F,W(this,U)[b]):Be(this,G,Yi).call(this,W(this,H)[b],W(this,U)[b]),Be(this,G,Yi).call(this,W(this,ue),b),Oe(this,ue,b))},Ft=function(b,N){var L,Y,le,B;let T=!1;if(W(this,V)!==0){let P=W(this,C).get(b);if(P!==void 0)if(T=!0,W(this,V)===1)Be(this,G,Ji).call(this,N);else{W(this,O).call(this,P);let me=W(this,A)[P];if(Be(this,G,Qe).call(this,me)?me.__abortController.abort(new Error("deleted")):(W(this,R)||W(this,ge))&&(W(this,R)&&((L=W(this,_))==null||L.call(this,me,b,N)),W(this,ge)&&((Y=W(this,oe))==null||Y.push([me,b,N]))),W(this,C).delete(b),W(this,D)[P]=void 0,W(this,A)[P]=void 0,P===W(this,ue))Oe(this,ue,W(this,H)[P]);else if(P===W(this,F))Oe(this,F,W(this,U)[P]);else{let Ne=W(this,H)[P];W(this,U)[Ne]=W(this,U)[P];let xe=W(this,U)[P];W(this,H)[xe]=W(this,H)[P]}fo(this,V)._--,W(this,ne).push(P)}}if(W(this,ge)&&((le=W(this,oe))!=null&&le.length)){let P=W(this,oe),me;for(;me=P==null?void 0:P.shift();)(B=W(this,E))==null||B.call(this,...me)}return T},Ji=function(b){var N,T,L;for(let Y of Be(this,G,Ut).call(this,{allowStale:!0})){let le=W(this,A)[Y];if(Be(this,G,Qe).call(this,le))le.__abortController.abort(new Error("deleted"));else{let B=W(this,D)[Y];W(this,R)&&((N=W(this,_))==null||N.call(this,le,B,b)),W(this,ge)&&((T=W(this,oe))==null||T.push([le,B,b]))}}if(W(this,C).clear(),W(this,A).fill(void 0),W(this,D).fill(void 0),W(this,ie)&&W(this,J)&&(W(this,ie).fill(0),W(this,J).fill(0)),W(this,fe)&&W(this,fe).fill(0),Oe(this,F,0),Oe(this,ue,0),W(this,ne).length=0,Oe(this,$,0),Oe(this,V,0),W(this,ge)&&W(this,oe)){let Y=W(this,oe),le;for(;le=Y==null?void 0:Y.shift();)(L=W(this,E))==null||L.call(this,...le)}},Ae);u.LRUCache=m}),St=_e(u=>{be(),Ee(),we(),Object.defineProperty(u,"t",{value:!0}),u.ContainerIterator=u.Container=u.Base=void 0;var r=class{constructor(n=0){this.iteratorType=n}equals(n){return this.o===n.o}};u.ContainerIterator=r;var t=class{constructor(){this.i=0}get length(){return this.i}size(){return this.i}empty(){return this.i===0}};u.Base=t;var l=class extends t{};u.Container=l}),By=_e(u=>{be(),Ee(),we(),Object.defineProperty(u,"t",{value:!0}),u.default=void 0;var r=St(),t=class extends r.Base{constructor(n=[]){super(),this.S=[];let o=this;n.forEach(function(i){o.push(i)})}clear(){this.i=0,this.S=[]}push(n){return this.S.push(n),this.i+=1,this.i}pop(){if(this.i!==0)return this.i-=1,this.S.pop()}top(){return this.S[this.i-1]}},l=t;u.default=l}),Dy=_e(u=>{be(),Ee(),we(),Object.defineProperty(u,"t",{value:!0}),u.default=void 0;var r=St(),t=class extends r.Base{constructor(n=[]){super(),this.j=0,this.q=[];let o=this;n.forEach(function(i){o.push(i)})}clear(){this.q=[],this.i=this.j=0}push(n){let o=this.q.length;if(this.j/o>.5&&this.j+this.i>=o&&o>4096){let i=this.i;for(let a=0;a<i;++a)this.q[a]=this.q[this.j+a];this.j=0,this.q[this.i]=n}else this.q[this.j+this.i]=n;return++this.i}pop(){if(this.i===0)return;let n=this.q[this.j++];return this.i-=1,n}front(){if(this.i!==0)return this.q[this.j]}},l=t;u.default=l}),Py=_e(u=>{be(),Ee(),we(),Object.defineProperty(u,"t",{value:!0}),u.default=void 0;var r=St(),t=class extends r.Base{constructor(n=[],o=function(a,s){return a>s?-1:a<s?1:0},i=!0){if(super(),this.v=o,Array.isArray(n))this.C=i?[...n]:n;else{this.C=[];let s=this;n.forEach(function(c){s.C.push(c)})}this.i=this.C.length;let a=this.i>>1;for(let s=this.i-1>>1;s>=0;--s)this.k(s,a)}m(n){let o=this.C[n];for(;n>0;){let i=n-1>>1,a=this.C[i];if(this.v(a,o)<=0)break;this.C[n]=a,n=i}this.C[n]=o}k(n,o){let i=this.C[n];for(;n<o;){let a=n<<1|1,s=a+1,c=this.C[a];if(s<this.i&&this.v(c,this.C[s])>0&&(a=s,c=this.C[s]),this.v(c,i)>=0)break;this.C[n]=c,n=a}this.C[n]=i}clear(){this.i=0,this.C.length=0}push(n){this.C.push(n),this.m(this.i),this.i+=1}pop(){if(this.i===0)return;let n=this.C[0],o=this.C.pop();return this.i-=1,this.i&&(this.C[0]=o,this.k(0,this.i>>1)),n}top(){return this.C[0]}find(n){return this.C.indexOf(n)>=0}remove(n){let o=this.C.indexOf(n);return o<0?!1:(o===0?this.pop():o===this.i-1?(this.C.pop(),this.i-=1):(this.C.splice(o,1,this.C.pop()),this.i-=1,this.m(o),this.k(o,this.i>>1)),!0)}updateItem(n){let o=this.C.indexOf(n);return o<0?!1:(this.m(o),this.k(o,this.i>>1),!0)}toArray(){return[...this.C]}},l=t;u.default=l}),Rn=_e(u=>{be(),Ee(),we(),Object.defineProperty(u,"t",{value:!0}),u.default=void 0;var r=St(),t=class extends r.Container{},l=t;u.default=l}),Vt=_e(u=>{be(),Ee(),we(),Object.defineProperty(u,"t",{value:!0}),u.throwIteratorAccessError=r;function r(){throw new RangeError("Iterator access denied!")}}),Js=_e(u=>{be(),Ee(),we(),Object.defineProperty(u,"t",{value:!0}),u.RandomIterator=void 0;var r=St(),t=Vt(),l=class extends r.ContainerIterator{constructor(n,o){super(o),this.o=n,this.iteratorType===0?(this.pre=function(){return this.o===0&&(0,t.throwIteratorAccessError)(),this.o-=1,this},this.next=function(){return this.o===this.container.size()&&(0,t.throwIteratorAccessError)(),this.o+=1,this}):(this.pre=function(){return this.o===this.container.size()-1&&(0,t.throwIteratorAccessError)(),this.o+=1,this},this.next=function(){return this.o===-1&&(0,t.throwIteratorAccessError)(),this.o-=1,this})}get pointer(){return this.container.getElementByPos(this.o)}set pointer(n){this.container.setElementByPos(this.o,n)}};u.RandomIterator=l}),Oy=_e(u=>{be(),Ee(),we(),Object.defineProperty(u,"t",{value:!0}),u.default=void 0;var r=l(Rn()),t=Js();function l(a){return a&&a.t?a:{default:a}}var n=class mc extends t.RandomIterator{constructor(s,c,d){super(s,d),this.container=c}copy(){return new mc(this.o,this.container,this.iteratorType)}},o=class extends r.default{constructor(a=[],s=!0){if(super(),Array.isArray(a))this.J=s?[...a]:a,this.i=a.length;else{this.J=[];let c=this;a.forEach(function(d){c.pushBack(d)})}}clear(){this.i=0,this.J.length=0}begin(){return new n(0,this)}end(){return new n(this.i,this)}rBegin(){return new n(this.i-1,this,1)}rEnd(){return new n(-1,this,1)}front(){return this.J[0]}back(){return this.J[this.i-1]}getElementByPos(a){if(a<0||a>this.i-1)throw new RangeError;return this.J[a]}eraseElementByPos(a){if(a<0||a>this.i-1)throw new RangeError;return this.J.splice(a,1),this.i-=1,this.i}eraseElementByValue(a){let s=0;for(let c=0;c<this.i;++c)this.J[c]!==a&&(this.J[s++]=this.J[c]);return this.i=this.J.length=s,this.i}eraseElementByIterator(a){let s=a.o;return a=a.next(),this.eraseElementByPos(s),a}pushBack(a){return this.J.push(a),this.i+=1,this.i}popBack(){if(this.i!==0)return this.i-=1,this.J.pop()}setElementByPos(a,s){if(a<0||a>this.i-1)throw new RangeError;this.J[a]=s}insert(a,s,c=1){if(a<0||a>this.i)throw new RangeError;return this.J.splice(a,0,...new Array(c).fill(s)),this.i+=c,this.i}find(a){for(let s=0;s<this.i;++s)if(this.J[s]===a)return new n(s,this);return this.end()}reverse(){this.J.reverse()}unique(){let a=1;for(let s=1;s<this.i;++s)this.J[s]!==this.J[s-1]&&(this.J[a++]=this.J[s]);return this.i=this.J.length=a,this.i}sort(a){this.J.sort(a)}forEach(a){for(let s=0;s<this.i;++s)a(this.J[s],s,this)}[Symbol.iterator](){return(function*(){yield*this.J}).bind(this)()}},i=o;u.default=i}),My=_e(u=>{be(),Ee(),we(),Object.defineProperty(u,"t",{value:!0}),u.default=void 0;var r=n(Rn()),t=St(),l=Vt();function n(s){return s&&s.t?s:{default:s}}var o=class gc extends t.ContainerIterator{constructor(c,d,f,m){super(m),this.o=c,this.h=d,this.container=f,this.iteratorType===0?(this.pre=function(){return this.o.L===this.h&&(0,l.throwIteratorAccessError)(),this.o=this.o.L,this},this.next=function(){return this.o===this.h&&(0,l.throwIteratorAccessError)(),this.o=this.o.B,this}):(this.pre=function(){return this.o.B===this.h&&(0,l.throwIteratorAccessError)(),this.o=this.o.B,this},this.next=function(){return this.o===this.h&&(0,l.throwIteratorAccessError)(),this.o=this.o.L,this})}get pointer(){return this.o===this.h&&(0,l.throwIteratorAccessError)(),this.o.l}set pointer(c){this.o===this.h&&(0,l.throwIteratorAccessError)(),this.o.l=c}copy(){return new gc(this.o,this.h,this.container,this.iteratorType)}},i=class extends r.default{constructor(s=[]){super(),this.h={},this.p=this._=this.h.L=this.h.B=this.h;let c=this;s.forEach(function(d){c.pushBack(d)})}V(s){let{L:c,B:d}=s;c.B=d,d.L=c,s===this.p&&(this.p=d),s===this._&&(this._=c),this.i-=1}G(s,c){let d=c.B,f={l:s,L:c,B:d};c.B=f,d.L=f,c===this.h&&(this.p=f),d===this.h&&(this._=f),this.i+=1}clear(){this.i=0,this.p=this._=this.h.L=this.h.B=this.h}begin(){return new o(this.p,this.h,this)}end(){return new o(this.h,this.h,this)}rBegin(){return new o(this._,this.h,this,1)}rEnd(){return new o(this.h,this.h,this,1)}front(){return this.p.l}back(){return this._.l}getElementByPos(s){if(s<0||s>this.i-1)throw new RangeError;let c=this.p;for(;s--;)c=c.B;return c.l}eraseElementByPos(s){if(s<0||s>this.i-1)throw new RangeError;let c=this.p;for(;s--;)c=c.B;return this.V(c),this.i}eraseElementByValue(s){let c=this.p;for(;c!==this.h;)c.l===s&&this.V(c),c=c.B;return this.i}eraseElementByIterator(s){let c=s.o;return c===this.h&&(0,l.throwIteratorAccessError)(),s=s.next(),this.V(c),s}pushBack(s){return this.G(s,this._),this.i}popBack(){if(this.i===0)return;let s=this._.l;return this.V(this._),s}pushFront(s){return this.G(s,this.h),this.i}popFront(){if(this.i===0)return;let s=this.p.l;return this.V(this.p),s}setElementByPos(s,c){if(s<0||s>this.i-1)throw new RangeError;let d=this.p;for(;s--;)d=d.B;d.l=c}insert(s,c,d=1){if(s<0||s>this.i)throw new RangeError;if(d<=0)return this.i;if(s===0)for(;d--;)this.pushFront(c);else if(s===this.i)for(;d--;)this.pushBack(c);else{let f=this.p;for(let h=1;h<s;++h)f=f.B;let m=f.B;for(this.i+=d;d--;)f.B={l:c,L:f},f.B.L=f,f=f.B;f.B=m,m.L=f}return this.i}find(s){let c=this.p;for(;c!==this.h;){if(c.l===s)return new o(c,this.h,this);c=c.B}return this.end()}reverse(){if(this.i<=1)return;let s=this.p,c=this._,d=0;for(;d<<1<this.i;){let f=s.l;s.l=c.l,c.l=f,s=s.B,c=c.L,d+=1}}unique(){if(this.i<=1)return this.i;let s=this.p;for(;s!==this.h;){let c=s;for(;c.B!==this.h&&c.l===c.B.l;)c=c.B,this.i-=1;s.B=c.B,s.B.L=s,s=s.B}return this.i}sort(s){if(this.i<=1)return;let c=[];this.forEach(function(f){c.push(f)}),c.sort(s);let d=this.p;c.forEach(function(f){d.l=f,d=d.B})}merge(s){let c=this;if(this.i===0)s.forEach(function(d){c.pushBack(d)});else{let d=this.p;s.forEach(function(f){for(;d!==c.h&&d.l<=f;)d=d.B;c.G(f,d.L)})}return this.i}forEach(s){let c=this.p,d=0;for(;c!==this.h;)s(c.l,d++,this),c=c.B}[Symbol.iterator](){return(function*(){if(this.i===0)return;let s=this.p;for(;s!==this.h;)yield s.l,s=s.B}).bind(this)()}},a=i;u.default=a}),Ry=_e(u=>{be(),Ee(),we(),Object.defineProperty(u,"t",{value:!0}),u.default=void 0;var r=l(Rn()),t=Js();function l(a){return a&&a.t?a:{default:a}}var n=class yc extends t.RandomIterator{constructor(s,c,d){super(s,d),this.container=c}copy(){return new yc(this.o,this.container,this.iteratorType)}},o=class extends r.default{constructor(a=[],s=4096){super(),this.j=0,this.D=0,this.R=0,this.N=0,this.P=0,this.A=[];let c=(()=>{if(typeof a.length=="number")return a.length;if(typeof a.size=="number")return a.size;if(typeof a.size=="function")return a.size();throw new TypeError("Cannot get the length or size of the container")})();this.F=s,this.P=Math.max(Math.ceil(c/this.F),1);for(let m=0;m<this.P;++m)this.A.push(new Array(this.F));let d=Math.ceil(c/this.F);this.j=this.R=(this.P>>1)-(d>>1),this.D=this.N=this.F-c%this.F>>1;let f=this;a.forEach(function(m){f.pushBack(m)})}T(){let a=[],s=Math.max(this.P>>1,1);for(let c=0;c<s;++c)a[c]=new Array(this.F);for(let c=this.j;c<this.P;++c)a[a.length]=this.A[c];for(let c=0;c<this.R;++c)a[a.length]=this.A[c];a[a.length]=[...this.A[this.R]],this.j=s,this.R=a.length-1;for(let c=0;c<s;++c)a[a.length]=new Array(this.F);this.A=a,this.P=a.length}O(a){let s=this.D+a+1,c=s%this.F,d=c-1,f=this.j+(s-c)/this.F;return c===0&&(f-=1),f%=this.P,d<0&&(d+=this.F),{curNodeBucketIndex:f,curNodePointerIndex:d}}clear(){this.A=[new Array(this.F)],this.P=1,this.j=this.R=this.i=0,this.D=this.N=this.F>>1}begin(){return new n(0,this)}end(){return new n(this.i,this)}rBegin(){return new n(this.i-1,this,1)}rEnd(){return new n(-1,this,1)}front(){if(this.i!==0)return this.A[this.j][this.D]}back(){if(this.i!==0)return this.A[this.R][this.N]}pushBack(a){return this.i&&(this.N<this.F-1?this.N+=1:this.R<this.P-1?(this.R+=1,this.N=0):(this.R=0,this.N=0),this.R===this.j&&this.N===this.D&&this.T()),this.i+=1,this.A[this.R][this.N]=a,this.i}popBack(){if(this.i===0)return;let a=this.A[this.R][this.N];return this.i!==1&&(this.N>0?this.N-=1:this.R>0?(this.R-=1,this.N=this.F-1):(this.R=this.P-1,this.N=this.F-1)),this.i-=1,a}pushFront(a){return this.i&&(this.D>0?this.D-=1:this.j>0?(this.j-=1,this.D=this.F-1):(this.j=this.P-1,this.D=this.F-1),this.j===this.R&&this.D===this.N&&this.T()),this.i+=1,this.A[this.j][this.D]=a,this.i}popFront(){if(this.i===0)return;let a=this.A[this.j][this.D];return this.i!==1&&(this.D<this.F-1?this.D+=1:this.j<this.P-1?(this.j+=1,this.D=0):(this.j=0,this.D=0)),this.i-=1,a}getElementByPos(a){if(a<0||a>this.i-1)throw new RangeError;let{curNodeBucketIndex:s,curNodePointerIndex:c}=this.O(a);return this.A[s][c]}setElementByPos(a,s){if(a<0||a>this.i-1)throw new RangeError;let{curNodeBucketIndex:c,curNodePointerIndex:d}=this.O(a);this.A[c][d]=s}insert(a,s,c=1){if(a<0||a>this.i)throw new RangeError;if(a===0)for(;c--;)this.pushFront(s);else if(a===this.i)for(;c--;)this.pushBack(s);else{let d=[];for(let f=a;f<this.i;++f)d.push(this.getElementByPos(f));this.cut(a-1);for(let f=0;f<c;++f)this.pushBack(s);for(let f=0;f<d.length;++f)this.pushBack(d[f])}return this.i}cut(a){if(a<0)return this.clear(),0;let{curNodeBucketIndex:s,curNodePointerIndex:c}=this.O(a);return this.R=s,this.N=c,this.i=a+1,this.i}eraseElementByPos(a){if(a<0||a>this.i-1)throw new RangeError;if(a===0)this.popFront();else if(a===this.i-1)this.popBack();else{let s=[];for(let d=a+1;d<this.i;++d)s.push(this.getElementByPos(d));this.cut(a),this.popBack();let c=this;s.forEach(function(d){c.pushBack(d)})}return this.i}eraseElementByValue(a){if(this.i===0)return 0;let s=[];for(let d=0;d<this.i;++d){let f=this.getElementByPos(d);f!==a&&s.push(f)}let c=s.length;for(let d=0;d<c;++d)this.setElementByPos(d,s[d]);return this.cut(c-1)}eraseElementByIterator(a){let s=a.o;return this.eraseElementByPos(s),a=a.next(),a}find(a){for(let s=0;s<this.i;++s)if(this.getElementByPos(s)===a)return new n(s,this);return this.end()}reverse(){let a=0,s=this.i-1;for(;a<s;){let c=this.getElementByPos(a);this.setElementByPos(a,this.getElementByPos(s)),this.setElementByPos(s,c),a+=1,s-=1}}unique(){if(this.i<=1)return this.i;let a=1,s=this.getElementByPos(0);for(let c=1;c<this.i;++c){let d=this.getElementByPos(c);d!==s&&(s=d,this.setElementByPos(a++,d))}for(;this.i>a;)this.popBack();return this.i}sort(a){let s=[];for(let c=0;c<this.i;++c)s.push(this.getElementByPos(c));s.sort(a);for(let c=0;c<this.i;++c)this.setElementByPos(c,s[c])}shrinkToFit(){if(this.i===0)return;let a=[];this.forEach(function(s){a.push(s)}),this.P=Math.max(Math.ceil(this.i/this.F),1),this.i=this.j=this.R=this.D=this.N=0,this.A=[];for(let s=0;s<this.P;++s)this.A.push(new Array(this.F));for(let s=0;s<a.length;++s)this.pushBack(a[s])}forEach(a){for(let s=0;s<this.i;++s)a(this.getElementByPos(s),s,this)}[Symbol.iterator](){return(function*(){for(let a=0;a<this.i;++a)yield this.getElementByPos(a)}).bind(this)()}},i=o;u.default=i}),jy=_e(u=>{be(),Ee(),we(),Object.defineProperty(u,"t",{value:!0}),u.TreeNodeEnableIndex=u.TreeNode=void 0;var r=class{constructor(l,n){this.ee=1,this.u=void 0,this.l=void 0,this.U=void 0,this.W=void 0,this.tt=void 0,this.u=l,this.l=n}L(){let l=this;if(l.ee===1&&l.tt.tt===l)l=l.W;else if(l.U)for(l=l.U;l.W;)l=l.W;else{let n=l.tt;for(;n.U===l;)l=n,n=l.tt;l=n}return l}B(){let l=this;if(l.W){for(l=l.W;l.U;)l=l.U;return l}else{let n=l.tt;for(;n.W===l;)l=n,n=l.tt;return l.W!==n?n:l}}te(){let l=this.tt,n=this.W,o=n.U;return l.tt===this?l.tt=n:l.U===this?l.U=n:l.W=n,n.tt=l,n.U=this,this.tt=n,this.W=o,o&&(o.tt=this),n}se(){let l=this.tt,n=this.U,o=n.W;return l.tt===this?l.tt=n:l.U===this?l.U=n:l.W=n,n.tt=l,n.W=this,this.tt=n,this.U=o,o&&(o.tt=this),n}};u.TreeNode=r;var t=class extends r{constructor(){super(...arguments),this.rt=1}te(){let l=super.te();return this.ie(),l.ie(),l}se(){let l=super.se();return this.ie(),l.ie(),l}ie(){this.rt=1,this.U&&(this.rt+=this.U.rt),this.W&&(this.rt+=this.W.rt)}};u.TreeNodeEnableIndex=t}),Xs=_e(u=>{be(),Ee(),we(),Object.defineProperty(u,"t",{value:!0}),u.default=void 0;var r=jy(),t=St(),l=Vt(),n=class extends t.Container{constructor(i=function(s,c){return s<c?-1:s>c?1:0},a=!1){super(),this.Y=void 0,this.v=i,a?(this.re=r.TreeNodeEnableIndex,this.M=function(s,c,d){let f=this.ne(s,c,d);if(f){let m=f.tt;for(;m!==this.h;)m.rt+=1,m=m.tt;let h=this.he(f);if(h){let{parentNode:p,grandParent:w,curNode:v}=h;p.ie(),w.ie(),v.ie()}}return this.i},this.V=function(s){let c=this.fe(s);for(;c!==this.h;)c.rt-=1,c=c.tt}):(this.re=r.TreeNode,this.M=function(s,c,d){let f=this.ne(s,c,d);return f&&this.he(f),this.i},this.V=this.fe),this.h=new this.re}X(i,a){let s=this.h;for(;i;){let c=this.v(i.u,a);if(c<0)i=i.W;else if(c>0)s=i,i=i.U;else return i}return s}Z(i,a){let s=this.h;for(;i;)this.v(i.u,a)<=0?i=i.W:(s=i,i=i.U);return s}$(i,a){let s=this.h;for(;i;){let c=this.v(i.u,a);if(c<0)s=i,i=i.W;else if(c>0)i=i.U;else return i}return s}rr(i,a){let s=this.h;for(;i;)this.v(i.u,a)<0?(s=i,i=i.W):i=i.U;return s}ue(i){for(;;){let a=i.tt;if(a===this.h)return;if(i.ee===1){i.ee=0;return}if(i===a.U){let s=a.W;if(s.ee===1)s.ee=0,a.ee=1,a===this.Y?this.Y=a.te():a.te();else if(s.W&&s.W.ee===1){s.ee=a.ee,a.ee=0,s.W.ee=0,a===this.Y?this.Y=a.te():a.te();return}else s.U&&s.U.ee===1?(s.ee=1,s.U.ee=0,s.se()):(s.ee=1,i=a)}else{let s=a.U;if(s.ee===1)s.ee=0,a.ee=1,a===this.Y?this.Y=a.se():a.se();else if(s.U&&s.U.ee===1){s.ee=a.ee,a.ee=0,s.U.ee=0,a===this.Y?this.Y=a.se():a.se();return}else s.W&&s.W.ee===1?(s.ee=1,s.W.ee=0,s.te()):(s.ee=1,i=a)}}}fe(i){if(this.i===1)return this.clear(),this.h;let a=i;for(;a.U||a.W;){if(a.W)for(a=a.W;a.U;)a=a.U;else a=a.U;[i.u,a.u]=[a.u,i.u],[i.l,a.l]=[a.l,i.l],i=a}this.h.U===a?this.h.U=a.tt:this.h.W===a&&(this.h.W=a.tt),this.ue(a);let s=a.tt;return a===s.U?s.U=void 0:s.W=void 0,this.i-=1,this.Y.ee=0,s}oe(i,a){return i===void 0?!1:this.oe(i.U,a)||a(i)?!0:this.oe(i.W,a)}he(i){for(;;){let a=i.tt;if(a.ee===0)return;let s=a.tt;if(a===s.U){let c=s.W;if(c&&c.ee===1){if(c.ee=a.ee=0,s===this.Y)return;s.ee=1,i=s;continue}else if(i===a.W){if(i.ee=0,i.U&&(i.U.tt=a),i.W&&(i.W.tt=s),a.W=i.U,s.U=i.W,i.U=a,i.W=s,s===this.Y)this.Y=i,this.h.tt=i;else{let d=s.tt;d.U===s?d.U=i:d.W=i}return i.tt=s.tt,a.tt=i,s.tt=i,s.ee=1,{parentNode:a,grandParent:s,curNode:i}}else a.ee=0,s===this.Y?this.Y=s.se():s.se(),s.ee=1}else{let c=s.U;if(c&&c.ee===1){if(c.ee=a.ee=0,s===this.Y)return;s.ee=1,i=s;continue}else if(i===a.U){if(i.ee=0,i.U&&(i.U.tt=s),i.W&&(i.W.tt=a),s.W=i.U,a.U=i.W,i.U=s,i.W=a,s===this.Y)this.Y=i,this.h.tt=i;else{let d=s.tt;d.U===s?d.U=i:d.W=i}return i.tt=s.tt,a.tt=i,s.tt=i,s.ee=1,{parentNode:a,grandParent:s,curNode:i}}else a.ee=0,s===this.Y?this.Y=s.te():s.te(),s.ee=1}return}}ne(i,a,s){if(this.Y===void 0){this.i+=1,this.Y=new this.re(i,a),this.Y.ee=0,this.Y.tt=this.h,this.h.tt=this.Y,this.h.U=this.Y,this.h.W=this.Y;return}let c,d=this.h.U,f=this.v(d.u,i);if(f===0){d.l=a;return}else if(f>0)d.U=new this.re(i,a),d.U.tt=d,c=d.U,this.h.U=c;else{let m=this.h.W,h=this.v(m.u,i);if(h===0){m.l=a;return}else if(h<0)m.W=new this.re(i,a),m.W.tt=m,c=m.W,this.h.W=c;else{if(s!==void 0){let p=s.o;if(p!==this.h){let w=this.v(p.u,i);if(w===0){p.l=a;return}else if(w>0){let v=p.L(),S=this.v(v.u,i);if(S===0){v.l=a;return}else S<0&&(c=new this.re(i,a),v.W===void 0?(v.W=c,c.tt=v):(p.U=c,c.tt=p))}}}if(c===void 0)for(c=this.Y;;){let p=this.v(c.u,i);if(p>0){if(c.U===void 0){c.U=new this.re(i,a),c.U.tt=c,c=c.U;break}c=c.U}else if(p<0){if(c.W===void 0){c.W=new this.re(i,a),c.W.tt=c,c=c.W;break}c=c.W}else{c.l=a;return}}}}return this.i+=1,c}I(i,a){for(;i;){let s=this.v(i.u,a);if(s<0)i=i.W;else if(s>0)i=i.U;else return i}return i||this.h}clear(){this.i=0,this.Y=void 0,this.h.tt=void 0,this.h.U=this.h.W=void 0}updateKeyByIterator(i,a){let s=i.o;if(s===this.h&&(0,l.throwIteratorAccessError)(),this.i===1)return s.u=a,!0;if(s===this.h.U)return this.v(s.B().u,a)>0?(s.u=a,!0):!1;if(s===this.h.W)return this.v(s.L().u,a)<0?(s.u=a,!0):!1;let c=s.L().u;if(this.v(c,a)>=0)return!1;let d=s.B().u;return this.v(d,a)<=0?!1:(s.u=a,!0)}eraseElementByPos(i){if(i<0||i>this.i-1)throw new RangeError;let a=0,s=this;return this.oe(this.Y,function(c){return i===a?(s.V(c),!0):(a+=1,!1)}),this.i}eraseElementByKey(i){if(this.i===0)return!1;let a=this.I(this.Y,i);return a===this.h?!1:(this.V(a),!0)}eraseElementByIterator(i){let a=i.o;a===this.h&&(0,l.throwIteratorAccessError)();let s=a.W===void 0;return i.iteratorType===0?s&&i.next():(!s||a.U===void 0)&&i.next(),this.V(a),i}forEach(i){let a=0;for(let s of this)i(s,a++,this)}getElementByPos(i){if(i<0||i>this.i-1)throw new RangeError;let a,s=0;for(let c of this){if(s===i){a=c;break}s+=1}return a}getHeight(){if(this.i===0)return 0;let i=function(a){return a?Math.max(i(a.U),i(a.W))+1:0};return i(this.Y)}},o=n;u.default=o}),Zs=_e(u=>{be(),Ee(),we(),Object.defineProperty(u,"t",{value:!0}),u.default=void 0;var r=St(),t=Vt(),l=class extends r.ContainerIterator{constructor(o,i,a){super(a),this.o=o,this.h=i,this.iteratorType===0?(this.pre=function(){return this.o===this.h.U&&(0,t.throwIteratorAccessError)(),this.o=this.o.L(),this},this.next=function(){return this.o===this.h&&(0,t.throwIteratorAccessError)(),this.o=this.o.B(),this}):(this.pre=function(){return this.o===this.h.W&&(0,t.throwIteratorAccessError)(),this.o=this.o.B(),this},this.next=function(){return this.o===this.h&&(0,t.throwIteratorAccessError)(),this.o=this.o.L(),this})}get index(){let o=this.o,i=this.h.tt;if(o===this.h)return i?i.rt-1:0;let a=0;for(o.U&&(a+=o.U.rt);o!==i;){let s=o.tt;o===s.W&&(a+=1,s.U&&(a+=s.U.rt)),o=s}return a}},n=l;u.default=n}),Ly=_e(u=>{be(),Ee(),we(),Object.defineProperty(u,"t",{value:!0}),u.default=void 0;var r=n(Xs()),t=n(Zs()),l=Vt();function n(s){return s&&s.t?s:{default:s}}var o=class bc extends t.default{constructor(c,d,f,m){super(c,d,m),this.container=f}get pointer(){return this.o===this.h&&(0,l.throwIteratorAccessError)(),this.o.u}copy(){return new bc(this.o,this.h,this.container,this.iteratorType)}},i=class extends r.default{constructor(s=[],c,d){super(c,d);let f=this;s.forEach(function(m){f.insert(m)})}*K(s){s!==void 0&&(yield*this.K(s.U),yield s.u,yield*this.K(s.W))}begin(){return new o(this.h.U||this.h,this.h,this)}end(){return new o(this.h,this.h,this)}rBegin(){return new o(this.h.W||this.h,this.h,this,1)}rEnd(){return new o(this.h,this.h,this,1)}front(){return this.h.U?this.h.U.u:void 0}back(){return this.h.W?this.h.W.u:void 0}insert(s,c){return this.M(s,void 0,c)}find(s){let c=this.I(this.Y,s);return new o(c,this.h,this)}lowerBound(s){let c=this.X(this.Y,s);return new o(c,this.h,this)}upperBound(s){let c=this.Z(this.Y,s);return new o(c,this.h,this)}reverseLowerBound(s){let c=this.$(this.Y,s);return new o(c,this.h,this)}reverseUpperBound(s){let c=this.rr(this.Y,s);return new o(c,this.h,this)}union(s){let c=this;return s.forEach(function(d){c.insert(d)}),this.i}[Symbol.iterator](){return this.K(this.Y)}},a=i;u.default=a}),Uy=_e(u=>{be(),Ee(),we(),Object.defineProperty(u,"t",{value:!0}),u.default=void 0;var r=n(Xs()),t=n(Zs()),l=Vt();function n(s){return s&&s.t?s:{default:s}}var o=class wc extends t.default{constructor(c,d,f,m){super(c,d,m),this.container=f}get pointer(){this.o===this.h&&(0,l.throwIteratorAccessError)();let c=this;return new Proxy([],{get(d,f){if(f==="0")return c.o.u;if(f==="1")return c.o.l},set(d,f,m){if(f!=="1")throw new TypeError("props must be 1");return c.o.l=m,!0}})}copy(){return new wc(this.o,this.h,this.container,this.iteratorType)}},i=class extends r.default{constructor(s=[],c,d){super(c,d);let f=this;s.forEach(function(m){f.setElement(m[0],m[1])})}*K(s){s!==void 0&&(yield*this.K(s.U),yield[s.u,s.l],yield*this.K(s.W))}begin(){return new o(this.h.U||this.h,this.h,this)}end(){return new o(this.h,this.h,this)}rBegin(){return new o(this.h.W||this.h,this.h,this,1)}rEnd(){return new o(this.h,this.h,this,1)}front(){if(this.i===0)return;let s=this.h.U;return[s.u,s.l]}back(){if(this.i===0)return;let s=this.h.W;return[s.u,s.l]}lowerBound(s){let c=this.X(this.Y,s);return new o(c,this.h,this)}upperBound(s){let c=this.Z(this.Y,s);return new o(c,this.h,this)}reverseLowerBound(s){let c=this.$(this.Y,s);return new o(c,this.h,this)}reverseUpperBound(s){let c=this.rr(this.Y,s);return new o(c,this.h,this)}setElement(s,c,d){return this.M(s,c,d)}find(s){let c=this.I(this.Y,s);return new o(c,this.h,this)}getElementByKey(s){return this.I(this.Y,s).l}union(s){let c=this;return s.forEach(function(d){c.setElement(d[0],d[1])}),this.i}[Symbol.iterator](){return this.K(this.Y)}},a=i;u.default=a}),ea=_e(u=>{be(),Ee(),we(),Object.defineProperty(u,"t",{value:!0}),u.default=r;function r(t){let l=typeof t;return l==="object"&&t!==null||l==="function"}}),ta=_e(u=>{be(),Ee(),we(),Object.defineProperty(u,"t",{value:!0}),u.HashContainerIterator=u.HashContainer=void 0;var r=St(),t=n(ea()),l=Vt();function n(a){return a&&a.t?a:{default:a}}var o=class extends r.ContainerIterator{constructor(a,s,c){super(c),this.o=a,this.h=s,this.iteratorType===0?(this.pre=function(){return this.o.L===this.h&&(0,l.throwIteratorAccessError)(),this.o=this.o.L,this},this.next=function(){return this.o===this.h&&(0,l.throwIteratorAccessError)(),this.o=this.o.B,this}):(this.pre=function(){return this.o.B===this.h&&(0,l.throwIteratorAccessError)(),this.o=this.o.B,this},this.next=function(){return this.o===this.h&&(0,l.throwIteratorAccessError)(),this.o=this.o.L,this})}};u.HashContainerIterator=o;var i=class extends r.Container{constructor(){super(),this.H=[],this.g={},this.HASH_TAG=Symbol("@@HASH_TAG"),Object.setPrototypeOf(this.g,null),this.h={},this.h.L=this.h.B=this.p=this._=this.h}V(a){let{L:s,B:c}=a;s.B=c,c.L=s,a===this.p&&(this.p=c),a===this._&&(this._=s),this.i-=1}M(a,s,c){c===void 0&&(c=(0,t.default)(a));let d;if(c){let f=a[this.HASH_TAG];if(f!==void 0)return this.H[f].l=s,this.i;Object.defineProperty(a,this.HASH_TAG,{value:this.H.length,configurable:!0}),d={u:a,l:s,L:this._,B:this.h},this.H.push(d)}else{let f=this.g[a];if(f)return f.l=s,this.i;d={u:a,l:s,L:this._,B:this.h},this.g[a]=d}return this.i===0?(this.p=d,this.h.B=d):this._.B=d,this._=d,this.h.L=d,++this.i}I(a,s){if(s===void 0&&(s=(0,t.default)(a)),s){let c=a[this.HASH_TAG];return c===void 0?this.h:this.H[c]}else return this.g[a]||this.h}clear(){let a=this.HASH_TAG;this.H.forEach(function(s){delete s.u[a]}),this.H=[],this.g={},Object.setPrototypeOf(this.g,null),this.i=0,this.p=this._=this.h.L=this.h.B=this.h}eraseElementByKey(a,s){let c;if(s===void 0&&(s=(0,t.default)(a)),s){let d=a[this.HASH_TAG];if(d===void 0)return!1;delete a[this.HASH_TAG],c=this.H[d],delete this.H[d]}else{if(c=this.g[a],c===void 0)return!1;delete this.g[a]}return this.V(c),!0}eraseElementByIterator(a){let s=a.o;return s===this.h&&(0,l.throwIteratorAccessError)(),this.V(s),a.next()}eraseElementByPos(a){if(a<0||a>this.i-1)throw new RangeError;let s=this.p;for(;a--;)s=s.B;return this.V(s),this.i}};u.HashContainer=i}),Fy=_e(u=>{be(),Ee(),we(),Object.defineProperty(u,"t",{value:!0}),u.default=void 0;var r=ta(),t=Vt(),l=class Ec extends r.HashContainerIterator{constructor(a,s,c,d){super(a,s,d),this.container=c}get pointer(){return this.o===this.h&&(0,t.throwIteratorAccessError)(),this.o.u}copy(){return new Ec(this.o,this.h,this.container,this.iteratorType)}},n=class extends r.HashContainer{constructor(i=[]){super();let a=this;i.forEach(function(s){a.insert(s)})}begin(){return new l(this.p,this.h,this)}end(){return new l(this.h,this.h,this)}rBegin(){return new l(this._,this.h,this,1)}rEnd(){return new l(this.h,this.h,this,1)}front(){return this.p.u}back(){return this._.u}insert(i,a){return this.M(i,void 0,a)}getElementByPos(i){if(i<0||i>this.i-1)throw new RangeError;let a=this.p;for(;i--;)a=a.B;return a.u}find(i,a){let s=this.I(i,a);return new l(s,this.h,this)}forEach(i){let a=0,s=this.p;for(;s!==this.h;)i(s.u,a++,this),s=s.B}[Symbol.iterator](){return(function*(){let i=this.p;for(;i!==this.h;)yield i.u,i=i.B}).bind(this)()}},o=n;u.default=o}),zy=_e(u=>{be(),Ee(),we(),Object.defineProperty(u,"t",{value:!0}),u.default=void 0;var r=ta(),t=n(ea()),l=Vt();function n(s){return s&&s.t?s:{default:s}}var o=class vc extends r.HashContainerIterator{constructor(c,d,f,m){super(c,d,m),this.container=f}get pointer(){this.o===this.h&&(0,l.throwIteratorAccessError)();let c=this;return new Proxy([],{get(d,f){if(f==="0")return c.o.u;if(f==="1")return c.o.l},set(d,f,m){if(f!=="1")throw new TypeError("props must be 1");return c.o.l=m,!0}})}copy(){return new vc(this.o,this.h,this.container,this.iteratorType)}},i=class extends r.HashContainer{constructor(s=[]){super();let c=this;s.forEach(function(d){c.setElement(d[0],d[1])})}begin(){return new o(this.p,this.h,this)}end(){return new o(this.h,this.h,this)}rBegin(){return new o(this._,this.h,this,1)}rEnd(){return new o(this.h,this.h,this,1)}front(){if(this.i!==0)return[this.p.u,this.p.l]}back(){if(this.i!==0)return[this._.u,this._.l]}setElement(s,c,d){return this.M(s,c,d)}getElementByKey(s,c){if(c===void 0&&(c=(0,t.default)(s)),c){let f=s[this.HASH_TAG];return f!==void 0?this.H[f].l:void 0}let d=this.g[s];return d?d.l:void 0}getElementByPos(s){if(s<0||s>this.i-1)throw new RangeError;let c=this.p;for(;s--;)c=c.B;return[c.u,c.l]}find(s,c){let d=this.I(s,c);return new o(d,this.h,this)}forEach(s){let c=0,d=this.p;for(;d!==this.h;)s([d.u,d.l],c++,this),d=d.B}[Symbol.iterator](){return(function*(){let s=this.p;for(;s!==this.h;)yield[s.u,s.l],s=s.B}).bind(this)()}},a=i;u.default=a}),Wy=_e(u=>{be(),Ee(),we(),Object.defineProperty(u,"t",{value:!0}),Object.defineProperty(u,"Deque",{enumerable:!0,get:function(){return i.default}}),Object.defineProperty(u,"HashMap",{enumerable:!0,get:function(){return d.default}}),Object.defineProperty(u,"HashSet",{enumerable:!0,get:function(){return c.default}}),Object.defineProperty(u,"LinkList",{enumerable:!0,get:function(){return o.default}}),Object.defineProperty(u,"OrderedMap",{enumerable:!0,get:function(){return s.default}}),Object.defineProperty(u,"OrderedSet",{enumerable:!0,get:function(){return a.default}}),Object.defineProperty(u,"PriorityQueue",{enumerable:!0,get:function(){return l.default}}),Object.defineProperty(u,"Queue",{enumerable:!0,get:function(){return t.default}}),Object.defineProperty(u,"Stack",{enumerable:!0,get:function(){return r.default}}),Object.defineProperty(u,"Vector",{enumerable:!0,get:function(){return n.default}});var r=f(By()),t=f(Dy()),l=f(Py()),n=f(Oy()),o=f(My()),i=f(Ry()),a=f(Ly()),s=f(Uy()),c=f(Fy()),d=f(zy());function f(m){return m&&m.t?m:{default:m}}}),qy=_e((u,r)=>{be(),Ee(),we();var t=Wy().OrderedSet,l=xt()("number-allocator:trace"),n=xt()("number-allocator:error");function o(a,s){this.low=a,this.high=s}o.prototype.equals=function(a){return this.low===a.low&&this.high===a.high},o.prototype.compare=function(a){return this.low<a.low&&this.high<a.low?-1:a.low<this.low&&a.high<this.low?1:0};function i(a,s){if(!(this instanceof i))return new i(a,s);this.min=a,this.max=s,this.ss=new t([],(c,d)=>c.compare(d)),l("Create"),this.clear()}i.prototype.firstVacant=function(){return this.ss.size()===0?null:this.ss.front().low},i.prototype.alloc=function(){if(this.ss.size()===0)return l("alloc():empty"),null;let a=this.ss.begin(),s=a.pointer.low,c=a.pointer.high,d=s;return d+1<=c?this.ss.updateKeyByIterator(a,new o(s+1,c)):this.ss.eraseElementByPos(0),l("alloc():"+d),d},i.prototype.use=function(a){let s=new o(a,a),c=this.ss.lowerBound(s);if(!c.equals(this.ss.end())){let d=c.pointer.low,f=c.pointer.high;return c.pointer.equals(s)?(this.ss.eraseElementByIterator(c),l("use():"+a),!0):d>a?!1:d===a?(this.ss.updateKeyByIterator(c,new o(d+1,f)),l("use():"+a),!0):f===a?(this.ss.updateKeyByIterator(c,new o(d,f-1)),l("use():"+a),!0):(this.ss.updateKeyByIterator(c,new o(a+1,f)),this.ss.insert(new o(d,a-1)),l("use():"+a),!0)}return l("use():failed"),!1},i.prototype.free=function(a){if(a<this.min||a>this.max){n("free():"+a+" is out of range");return}let s=new o(a,a),c=this.ss.upperBound(s);if(c.equals(this.ss.end())){if(c.equals(this.ss.begin())){this.ss.insert(s);return}c.pre();let d=c.pointer.high;c.pointer.high+1===a?this.ss.updateKeyByIterator(c,new o(d,a)):this.ss.insert(s)}else if(c.equals(this.ss.begin()))if(a+1===c.pointer.low){let d=c.pointer.high;this.ss.updateKeyByIterator(c,new o(a,d))}else this.ss.insert(s);else{let d=c.pointer.low,f=c.pointer.high;c.pre();let m=c.pointer.low;c.pointer.high+1===a?a+1===d?(this.ss.eraseElementByIterator(c),this.ss.updateKeyByIterator(c,new o(m,f))):this.ss.updateKeyByIterator(c,new o(m,a)):a+1===d?(this.ss.eraseElementByIterator(c.next()),this.ss.insert(new o(a,f))):this.ss.insert(s)}l("free():"+a)},i.prototype.clear=function(){l("clear()"),this.ss.clear(),this.ss.insert(new o(this.min,this.max))},i.prototype.intervalCount=function(){return this.ss.size()},i.prototype.dump=function(){console.log("length:"+this.ss.size());for(let a of this.ss)console.log(a)},r.exports=i}),ra=_e((u,r)=>{be(),Ee(),we();var t=qy();r.exports.NumberAllocator=t}),Gy=_e(u=>{be(),Ee(),we(),Object.defineProperty(u,"__esModule",{value:!0});var r=Ty(),t=ra(),l=class{constructor(n){Se(this,"aliasToTopic");Se(this,"topicToAlias");Se(this,"max");Se(this,"numberAllocator");Se(this,"length");n>0&&(this.aliasToTopic=new r.LRUCache({max:n}),this.topicToAlias={},this.numberAllocator=new t.NumberAllocator(1,n),this.max=n,this.length=0)}put(n,o){if(o===0||o>this.max)return!1;let i=this.aliasToTopic.get(o);return i&&delete this.topicToAlias[i],this.aliasToTopic.set(o,n),this.topicToAlias[n]=o,this.numberAllocator.use(o),this.length=this.aliasToTopic.size,!0}getTopicByAlias(n){return this.aliasToTopic.get(n)}getAliasByTopic(n){let o=this.topicToAlias[n];return typeof o<"u"&&this.aliasToTopic.get(o),o}clear(){this.aliasToTopic.clear(),this.topicToAlias={},this.numberAllocator.clear(),this.length=0}getLruAlias(){return this.numberAllocator.firstVacant()||[...this.aliasToTopic.keys()][this.aliasToTopic.size-1]}};u.default=l}),Hy=_e(u=>{be(),Ee(),we();var r=u&&u.__importDefault||function(i){return i&&i.__esModule?i:{default:i}};Object.defineProperty(u,"__esModule",{value:!0});var t=Tr(),l=r(Gy()),n=ir(),o=(i,a)=>{i.log("_handleConnack");let{options:s}=i,c=s.protocolVersion===5?a.reasonCode:a.returnCode;if(clearTimeout(i.connackTimer),delete i.topicAliasSend,a.properties){if(a.properties.topicAliasMaximum){if(a.properties.topicAliasMaximum>65535){i.emit("error",new Error("topicAliasMaximum from broker is out of range"));return}a.properties.topicAliasMaximum>0&&(i.topicAliasSend=new l.default(a.properties.topicAliasMaximum))}a.properties.serverKeepAlive&&s.keepalive&&(s.keepalive=a.properties.serverKeepAlive),a.properties.maximumPacketSize&&(s.properties||(s.properties={}),s.properties.maximumPacketSize=a.properties.maximumPacketSize)}if(c===0)i.reconnecting=!1,i._onConnect(a);else if(c>0){let d=new n.ErrorWithReasonCode(`Connection refused: ${t.ReasonCodes[c]}`,c);i.emit("error",d),i.options.reconnectOnConnackError&&i._cleanUp(!0)}};u.default=o}),Ky=_e(u=>{be(),Ee(),we(),Object.defineProperty(u,"__esModule",{value:!0});var r=(t,l,n)=>{t.log("handling pubrel packet");let o=typeof n<"u"?n:t.noop,{messageId:i}=l,a={cmd:"pubcomp",messageId:i};t.incomingStore.get(l,(s,c)=>{s?t._sendPacket(a,o):(t.emit("message",c.topic,c.payload,c),t.handleMessage(c,d=>{if(d)return o(d);t.incomingStore.del(c,t.noop),t._sendPacket(a,o)}))})};u.default=r}),Qy=_e(u=>{be(),Ee(),we();var r=u&&u.__importDefault||function(s){return s&&s.__esModule?s:{default:s}};Object.defineProperty(u,"__esModule",{value:!0});var t=r(Iy()),l=r($y()),n=r(Hy()),o=r(Tr()),i=r(Ky()),a=(s,c,d)=>{let{options:f}=s;if(f.protocolVersion===5&&f.properties&&f.properties.maximumPacketSize&&f.properties.maximumPacketSize<c.length)return s.emit("error",new Error(`exceeding packets size ${c.cmd}`)),s.end({reasonCode:149,properties:{reasonString:"Maximum packet size was exceeded"}}),s;switch(s.log("_handlePacket :: emitting packetreceive"),s.emit("packetreceive",c),c.cmd){case"publish":(0,t.default)(s,c,d);break;case"puback":case"pubrec":case"pubcomp":case"suback":case"unsuback":s.reschedulePing(),(0,o.default)(s,c),d();break;case"pubrel":s.reschedulePing(),(0,i.default)(s,c,d);break;case"connack":(0,n.default)(s,c),d();break;case"auth":s.reschedulePing(),(0,l.default)(s,c),d();break;case"pingresp":s.log("_handlePacket :: received pingresp"),s.reschedulePing(!0),d();break;case"disconnect":s.emit("disconnect",c),d();break;default:s.log("_handlePacket :: unknown command"),d();break}};u.default=a}),oa=_e(u=>{be(),Ee(),we(),Object.defineProperty(u,"__esModule",{value:!0});var r=class{constructor(){Se(this,"nextId");this.nextId=Math.max(1,Math.floor(Math.random()*65535))}allocate(){let t=this.nextId++;return this.nextId===65536&&(this.nextId=1),t}getLastAllocated(){return this.nextId===1?65535:this.nextId-1}register(t){return!0}deallocate(t){}clear(){}};u.default=r}),Yy=_e(u=>{be(),Ee(),we(),Object.defineProperty(u,"__esModule",{value:!0});var r=class{constructor(t){Se(this,"aliasToTopic");Se(this,"max");Se(this,"length");this.aliasToTopic={},this.max=t}put(t,l){return l===0||l>this.max?!1:(this.aliasToTopic[l]=t,this.length=Object.keys(this.aliasToTopic).length,!0)}getTopicByAlias(t){return this.aliasToTopic[t]}clear(){this.aliasToTopic={}}};u.default=r}),Jy=_e(u=>{be(),Ee(),we();var r=u&&u.__importDefault||function(o){return o&&o.__esModule?o:{default:o}};Object.defineProperty(u,"__esModule",{value:!0}),u.TypedEventEmitter=void 0;var t=r((Gt(),We(Tt))),l=ir(),n=class{};u.TypedEventEmitter=n,(0,l.applyMixin)(n,t.default)}),Br=_e((u,r)=>{be(),Ee(),we();function t(l){"@babel/helpers - typeof";return r.exports=t=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(n){return typeof n}:function(n){return n&&typeof Symbol=="function"&&n.constructor===Symbol&&n!==Symbol.prototype?"symbol":typeof n},r.exports.__esModule=!0,r.exports.default=r.exports,t(l)}r.exports=t,r.exports.__esModule=!0,r.exports.default=r.exports}),Xy=_e((u,r)=>{be(),Ee(),we();var t=Br().default;function l(n,o){if(t(n)!="object"||!n)return n;var i=n[Symbol.toPrimitive];if(i!==void 0){var a=i.call(n,o||"default");if(t(a)!="object")return a;throw new TypeError("@@toPrimitive must return a primitive value.")}return(o==="string"?String:Number)(n)}r.exports=l,r.exports.__esModule=!0,r.exports.default=r.exports}),Zy=_e((u,r)=>{be(),Ee(),we();var t=Br().default,l=Xy();function n(o){var i=l(o,"string");return t(i)=="symbol"?i:i+""}r.exports=n,r.exports.__esModule=!0,r.exports.default=r.exports}),e0=_e((u,r)=>{be(),Ee(),we();var t=Zy();function l(n,o,i){return(o=t(o))in n?Object.defineProperty(n,o,{value:i,enumerable:!0,configurable:!0,writable:!0}):n[o]=i,n}r.exports=l,r.exports.__esModule=!0,r.exports.default=r.exports}),t0=_e((u,r)=>{be(),Ee(),we();function t(l){if(Array.isArray(l))return l}r.exports=t,r.exports.__esModule=!0,r.exports.default=r.exports}),r0=_e((u,r)=>{be(),Ee(),we();function t(l,n){var o=l==null?null:typeof Symbol<"u"&&l[Symbol.iterator]||l["@@iterator"];if(o!=null){var i,a,s,c,d=[],f=!0,m=!1;try{if(s=(o=o.call(l)).next,n===0){if(Object(o)!==o)return;f=!1}else for(;!(f=(i=s.call(o)).done)&&(d.push(i.value),d.length!==n);f=!0);}catch(h){m=!0,a=h}finally{try{if(!f&&o.return!=null&&(c=o.return(),Object(c)!==c))return}finally{if(m)throw a}}return d}}r.exports=t,r.exports.__esModule=!0,r.exports.default=r.exports}),o0=_e((u,r)=>{be(),Ee(),we();function t(l,n){(n==null||n>l.length)&&(n=l.length);for(var o=0,i=Array(n);o<n;o++)i[o]=l[o];return i}r.exports=t,r.exports.__esModule=!0,r.exports.default=r.exports}),n0=_e((u,r)=>{be(),Ee(),we();var t=o0();function l(n,o){if(n){if(typeof n=="string")return t(n,o);var i={}.toString.call(n).slice(8,-1);return i==="Object"&&n.constructor&&(i=n.constructor.name),i==="Map"||i==="Set"?Array.from(n):i==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(i)?t(n,o):void 0}}r.exports=l,r.exports.__esModule=!0,r.exports.default=r.exports}),i0=_e((u,r)=>{be(),Ee(),we();function t(){throw new TypeError(`Invalid attempt to destructure non-iterable instance.
8
+ In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}r.exports=t,r.exports.__esModule=!0,r.exports.default=r.exports}),s0=_e((u,r)=>{be(),Ee(),we();var t=t0(),l=r0(),n=n0(),o=i0();function i(a,s){return t(a)||l(a,s)||n(a,s)||o()}r.exports=i,r.exports.__esModule=!0,r.exports.default=r.exports}),na=_e((u,r)=>{be(),Ee(),we(),function(t,l){typeof u=="object"&&typeof r<"u"?l(u):typeof define=="function"&&define.amd?define(["exports"],l):(t=typeof globalThis<"u"?globalThis:t||self,l(t.fastUniqueNumbers={}))}(u,function(t){var l=function(h){return function(p){var w=h(p);return p.add(w),w}},n=function(h){return function(p,w){return h.set(p,w),w}},o=Number.MAX_SAFE_INTEGER===void 0?9007199254740991:Number.MAX_SAFE_INTEGER,i=536870912,a=i*2,s=function(h,p){return function(w){var v=p.get(w),S=v===void 0?w.size:v<a?v+1:0;if(!w.has(S))return h(w,S);if(w.size<i){for(;w.has(S);)S=Math.floor(Math.random()*a);return h(w,S)}if(w.size>o)throw new Error("Congratulations, you created a collection of unique numbers which uses all available integers!");for(;w.has(S);)S=Math.floor(Math.random()*o);return h(w,S)}},c=new WeakMap,d=n(c),f=s(d,c),m=l(f);t.addUniqueNumber=m,t.generateUniqueNumber=f})}),a0=_e((u,r)=>{be(),Ee(),we();function t(n,o,i,a,s,c,d){try{var f=n[c](d),m=f.value}catch(h){return void i(h)}f.done?o(m):Promise.resolve(m).then(a,s)}function l(n){return function(){var o=this,i=arguments;return new Promise(function(a,s){var c=n.apply(o,i);function d(m){t(c,a,s,d,f,"next",m)}function f(m){t(c,a,s,d,f,"throw",m)}d(void 0)})}}r.exports=l,r.exports.__esModule=!0,r.exports.default=r.exports}),ia=_e((u,r)=>{be(),Ee(),we();function t(l,n){this.v=l,this.k=n}r.exports=t,r.exports.__esModule=!0,r.exports.default=r.exports}),sa=_e((u,r)=>{be(),Ee(),we();function t(l,n,o,i){var a=Object.defineProperty;try{a({},"",{})}catch{a=0}r.exports=t=function(s,c,d,f){function m(h,p){t(s,h,function(w){return this._invoke(h,p,w)})}c?a?a(s,c,{value:d,enumerable:!f,configurable:!f,writable:!f}):s[c]=d:(m("next",0),m("throw",1),m("return",2))},r.exports.__esModule=!0,r.exports.default=r.exports,t(l,n,o,i)}r.exports=t,r.exports.__esModule=!0,r.exports.default=r.exports}),aa=_e((u,r)=>{be(),Ee(),we();var t=sa();function l(){var n,o,i=typeof Symbol=="function"?Symbol:{},a=i.iterator||"@@iterator",s=i.toStringTag||"@@toStringTag";function c(S,y,k,_){var E=y&&y.prototype instanceof f?y:f,I=Object.create(E.prototype);return t(I,"_invoke",function(x,V,$){var C,D,A,U=0,H=$||[],F=!1,ue={p:0,n:0,v:n,a:ne,f:ne.bind(n,4),d:function(oe,fe){return C=oe,D=0,A=n,ue.n=fe,d}};function ne(oe,fe){for(D=oe,A=fe,o=0;!F&&U&&!J&&o<H.length;o++){var J,ie=H[o],R=ue.p,Z=ie[2];oe>3?(J=Z===fe)&&(A=ie[(D=ie[4])?5:(D=3,3)],ie[4]=ie[5]=n):ie[0]<=R&&((J=oe<2&&R<ie[1])?(D=0,ue.v=fe,ue.n=ie[1]):R<Z&&(J=oe<3||ie[0]>fe||fe>Z)&&(ie[4]=oe,ie[5]=fe,ue.n=Z,D=0))}if(J||oe>1)return d;throw F=!0,fe}return function(oe,fe,J){if(U>1)throw TypeError("Generator is already running");for(F&&fe===1&&ne(fe,J),D=fe,A=J;(o=D<2?n:A)||!F;){C||(D?D<3?(D>1&&(ue.n=-1),ne(D,A)):ue.n=A:ue.v=A);try{if(U=2,C){if(D||(oe="next"),o=C[oe]){if(!(o=o.call(C,A)))throw TypeError("iterator result is not an object");if(!o.done)return o;A=o.value,D<2&&(D=0)}else D===1&&(o=C.return)&&o.call(C),D<2&&(A=TypeError("The iterator does not provide a '"+oe+"' method"),D=1);C=n}else if((o=(F=ue.n<0)?A:x.call(V,ue))!==d)break}catch(ie){C=n,D=1,A=ie}finally{U=1}}return{value:o,done:F}}}(S,k,_),!0),I}var d={};function f(){}function m(){}function h(){}o=Object.getPrototypeOf;var p=[][a]?o(o([][a]())):(t(o={},a,function(){return this}),o),w=h.prototype=f.prototype=Object.create(p);function v(S){return Object.setPrototypeOf?Object.setPrototypeOf(S,h):(S.__proto__=h,t(S,s,"GeneratorFunction")),S.prototype=Object.create(w),S}return m.prototype=h,t(w,"constructor",h),t(h,"constructor",m),m.displayName="GeneratorFunction",t(h,s,"GeneratorFunction"),t(w),t(w,s,"Generator"),t(w,a,function(){return this}),t(w,"toString",function(){return"[object Generator]"}),(r.exports=l=function(){return{w:c,m:v}},r.exports.__esModule=!0,r.exports.default=r.exports)()}r.exports=l,r.exports.__esModule=!0,r.exports.default=r.exports}),la=_e((u,r)=>{be(),Ee(),we();var t=ia(),l=sa();function n(o,i){function a(c,d,f,m){try{var h=o[c](d),p=h.value;return p instanceof t?i.resolve(p.v).then(function(w){a("next",w,f,m)},function(w){a("throw",w,f,m)}):i.resolve(p).then(function(w){h.value=w,f(h)},function(w){return a("throw",w,f,m)})}catch(w){m(w)}}var s;this.next||(l(n.prototype),l(n.prototype,typeof Symbol=="function"&&Symbol.asyncIterator||"@asyncIterator",function(){return this})),l(this,"_invoke",function(c,d,f){function m(){return new i(function(h,p){a(c,f,h,p)})}return s=s?s.then(m,m):m()},!0)}r.exports=n,r.exports.__esModule=!0,r.exports.default=r.exports}),ca=_e((u,r)=>{be(),Ee(),we();var t=aa(),l=la();function n(o,i,a,s,c){return new l(t().w(o,i,a,s),c||Promise)}r.exports=n,r.exports.__esModule=!0,r.exports.default=r.exports}),l0=_e((u,r)=>{be(),Ee(),we();var t=ca();function l(n,o,i,a,s){var c=t(n,o,i,a,s);return c.next().then(function(d){return d.done?d.value:c.next()})}r.exports=l,r.exports.__esModule=!0,r.exports.default=r.exports}),c0=_e((u,r)=>{be(),Ee(),we();function t(l){var n=Object(l),o=[];for(var i in n)o.unshift(i);return function a(){for(;o.length;)if((i=o.pop())in n)return a.value=i,a.done=!1,a;return a.done=!0,a}}r.exports=t,r.exports.__esModule=!0,r.exports.default=r.exports}),d0=_e((u,r)=>{be(),Ee(),we();var t=Br().default;function l(n){if(n!=null){var o=n[typeof Symbol=="function"&&Symbol.iterator||"@@iterator"],i=0;if(o)return o.call(n);if(typeof n.next=="function")return n;if(!isNaN(n.length))return{next:function(){return n&&i>=n.length&&(n=void 0),{value:n&&n[i++],done:!n}}}}throw new TypeError(t(n)+" is not iterable")}r.exports=l,r.exports.__esModule=!0,r.exports.default=r.exports}),u0=_e((u,r)=>{be(),Ee(),we();var t=ia(),l=aa(),n=l0(),o=ca(),i=la(),a=c0(),s=d0();function c(){var d=l(),f=d.m(c),m=(Object.getPrototypeOf?Object.getPrototypeOf(f):f.__proto__).constructor;function h(v){var S=typeof v=="function"&&v.constructor;return!!S&&(S===m||(S.displayName||S.name)==="GeneratorFunction")}var p={throw:1,return:2,break:3,continue:3};function w(v){var S,y;return function(k){S||(S={stop:function(){return y(k.a,2)},catch:function(){return k.v},abrupt:function(_,E){return y(k.a,p[_],E)},delegateYield:function(_,E,I){return S.resultName=E,y(k.d,s(_),I)},finish:function(_){return y(k.f,_)}},y=function(_,E,I){k.p=S.prev,k.n=S.next;try{return _(E,I)}finally{S.next=k.n}}),S.resultName&&(S[S.resultName]=k.v,S.resultName=void 0),S.sent=k.v,S.next=k.n;try{return v.call(this,S)}finally{k.p=S.prev,k.n=S.next}}}return(r.exports=c=function(){return{wrap:function(v,S,y,k){return d.w(w(v),S,y,k&&k.reverse())},isGeneratorFunction:h,mark:d.m,awrap:function(v,S){return new t(v,S)},AsyncIterator:i,async:function(v,S,y,k,_){return(h(S)?o:n)(w(v),S,y,k,_)},keys:a,values:s}},r.exports.__esModule=!0,r.exports.default=r.exports)()}r.exports=c,r.exports.__esModule=!0,r.exports.default=r.exports}),f0=_e((u,r)=>{be(),Ee(),we();var t=u0()();r.exports=t;try{regeneratorRuntime=t}catch{typeof globalThis=="object"?globalThis.regeneratorRuntime=t:Function("r","regeneratorRuntime = r")(t)}}),p0=_e((u,r)=>{be(),Ee(),we(),function(t,l){typeof u=="object"&&typeof r<"u"?l(u,e0(),s0(),na(),a0(),f0()):typeof define=="function"&&define.amd?define(["exports","@babel/runtime/helpers/defineProperty","@babel/runtime/helpers/slicedToArray","fast-unique-numbers","@babel/runtime/helpers/asyncToGenerator","@babel/runtime/regenerator"],l):(t=typeof globalThis<"u"?globalThis:t||self,l(t.brokerFactory={},t._defineProperty,t._slicedToArray,t.fastUniqueNumbers,t._asyncToGenerator,t._regeneratorRuntime))}(u,function(t,l,n,o,i,a){var s=function(y){return typeof y.start=="function"},c=new WeakMap;function d(y,k){var _=Object.keys(y);if(Object.getOwnPropertySymbols){var E=Object.getOwnPropertySymbols(y);k&&(E=E.filter(function(I){return Object.getOwnPropertyDescriptor(y,I).enumerable})),_.push.apply(_,E)}return _}function f(y){for(var k=1;k<arguments.length;k++){var _=arguments[k]!=null?arguments[k]:{};k%2?d(Object(_),!0).forEach(function(E){l(y,E,_[E])}):Object.getOwnPropertyDescriptors?Object.defineProperties(y,Object.getOwnPropertyDescriptors(_)):d(Object(_)).forEach(function(E){Object.defineProperty(y,E,Object.getOwnPropertyDescriptor(_,E))})}return y}var m=function(y){return f(f({},y),{},{connect:function(k){var _=k.call;return i(a.mark(function E(){var I,x,V,$;return a.wrap(function(C){for(;;)switch(C.prev=C.next){case 0:return I=new MessageChannel,x=I.port1,V=I.port2,C.next=1,_("connect",{port:x},[x]);case 1:return $=C.sent,c.set(V,$),C.abrupt("return",V);case 2:case"end":return C.stop()}},E)}))},disconnect:function(k){var _=k.call;return function(){var E=i(a.mark(function I(x){var V;return a.wrap(function($){for(;;)switch($.prev=$.next){case 0:if(V=c.get(x),V!==void 0){$.next=1;break}throw new Error("The given port is not connected.");case 1:return $.next=2,_("disconnect",{portId:V});case 2:case"end":return $.stop()}},I)}));return function(I){return E.apply(this,arguments)}}()},isSupported:function(k){var _=k.call;return function(){return _("isSupported")}}})};function h(y,k){var _=Object.keys(y);if(Object.getOwnPropertySymbols){var E=Object.getOwnPropertySymbols(y);k&&(E=E.filter(function(I){return Object.getOwnPropertyDescriptor(y,I).enumerable})),_.push.apply(_,E)}return _}function p(y){for(var k=1;k<arguments.length;k++){var _=arguments[k]!=null?arguments[k]:{};k%2?h(Object(_),!0).forEach(function(E){l(y,E,_[E])}):Object.getOwnPropertyDescriptors?Object.defineProperties(y,Object.getOwnPropertyDescriptors(_)):h(Object(_)).forEach(function(E){Object.defineProperty(y,E,Object.getOwnPropertyDescriptor(_,E))})}return y}var w=new WeakMap,v=function(y){if(w.has(y))return w.get(y);var k=new Map;return w.set(y,k),k},S=function(y){var k=m(y);return function(_){var E=v(_);_.addEventListener("message",function(H){var F=H.data,ue=F.id;if(ue!==null&&E.has(ue)){var ne=E.get(ue),oe=ne.reject,fe=ne.resolve;E.delete(ue),F.error===void 0?fe(F.result):oe(new Error(F.error.message))}}),s(_)&&_.start();for(var I=function(H){var F=arguments.length>1&&arguments[1]!==void 0?arguments[1]:null,ue=arguments.length>2&&arguments[2]!==void 0?arguments[2]:[];return new Promise(function(ne,oe){var fe=o.generateUniqueNumber(E);E.set(fe,{reject:oe,resolve:ne}),F===null?_.postMessage({id:fe,method:H},ue):_.postMessage({id:fe,method:H,params:F},ue)})},x=function(H,F){var ue=arguments.length>2&&arguments[2]!==void 0?arguments[2]:[];_.postMessage({id:null,method:H,params:F},ue)},V={},$=0,C=Object.entries(k);$<C.length;$++){var D=n(C[$],2),A=D[0],U=D[1];V=p(p({},V),{},l({},A,U({call:I,notify:x})))}return p({},V)}};t.createBroker=S})}),h0=_e((u,r)=>{be(),Ee(),we(),function(t,l){typeof u=="object"&&typeof r<"u"?l(u,Br(),p0(),na()):typeof define=="function"&&define.amd?define(["exports","@babel/runtime/helpers/typeof","broker-factory","fast-unique-numbers"],l):(t=typeof globalThis<"u"?globalThis:t||self,l(t.workerTimersBroker={},t._typeof,t.brokerFactory,t.fastUniqueNumbers))}(u,function(t,l,n,o){var i=new Map([[0,null]]),a=new Map([[0,null]]),s=n.createBroker({clearInterval:function(d){var f=d.call;return function(m){l(i.get(m))==="symbol"&&(i.set(m,null),f("clear",{timerId:m,timerType:"interval"}).then(function(){i.delete(m)}))}},clearTimeout:function(d){var f=d.call;return function(m){l(a.get(m))==="symbol"&&(a.set(m,null),f("clear",{timerId:m,timerType:"timeout"}).then(function(){a.delete(m)}))}},setInterval:function(d){var f=d.call;return function(m){for(var h=arguments.length>1&&arguments[1]!==void 0?arguments[1]:0,p=arguments.length,w=new Array(p>2?p-2:0),v=2;v<p;v++)w[v-2]=arguments[v];var S=Symbol(),y=o.generateUniqueNumber(i);i.set(y,S);var k=function(){return f("set",{delay:h,now:performance.timeOrigin+performance.now(),timerId:y,timerType:"interval"}).then(function(){var _=i.get(y);if(_===void 0)throw new Error("The timer is in an undefined state.");_===S&&(m.apply(void 0,w),i.get(y)===S&&k())})};return k(),y}},setTimeout:function(d){var f=d.call;return function(m){for(var h=arguments.length>1&&arguments[1]!==void 0?arguments[1]:0,p=arguments.length,w=new Array(p>2?p-2:0),v=2;v<p;v++)w[v-2]=arguments[v];var S=Symbol(),y=o.generateUniqueNumber(a);return a.set(y,S),f("set",{delay:h,now:performance.timeOrigin+performance.now(),timerId:y,timerType:"timeout"}).then(function(){var k=a.get(y);if(k===void 0)throw new Error("The timer is in an undefined state.");k===S&&(a.delete(y),m.apply(void 0,w))}),y}}}),c=function(d){var f=new Worker(d);return s(f)};t.load=c,t.wrap=s})}),m0=_e((u,r)=>{be(),Ee(),we(),function(t,l){typeof u=="object"&&typeof r<"u"?l(u,h0()):typeof define=="function"&&define.amd?define(["exports","worker-timers-broker"],l):(t=typeof globalThis<"u"?globalThis:t||self,l(t.workerTimers={},t.workerTimersBroker))}(u,function(t,l){var n=function(f,m){var h=null;return function(){if(h!==null)return h;var p=new Blob([m],{type:"application/javascript; charset=utf-8"}),w=URL.createObjectURL(p);return h=f(w),setTimeout(function(){return URL.revokeObjectURL(w)}),h}},o=`(()=>{var e={45:(e,t,r)=>{var n=r(738).default;e.exports=function(e,t){if("object"!=n(e)||!e)return e;var r=e[Symbol.toPrimitive];if(void 0!==r){var o=r.call(e,t||"default");if("object"!=n(o))return o;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)},e.exports.__esModule=!0,e.exports.default=e.exports},79:e=>{e.exports=function(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=Array(t);r<t;r++)n[r]=e[r];return n},e.exports.__esModule=!0,e.exports.default=e.exports},122:(e,t,r)=>{var n=r(79);e.exports=function(e,t){if(e){if("string"==typeof e)return n(e,t);var r={}.toString.call(e).slice(8,-1);return"Object"===r&&e.constructor&&(r=e.constructor.name),"Map"===r||"Set"===r?Array.from(e):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?n(e,t):void 0}},e.exports.__esModule=!0,e.exports.default=e.exports},156:e=>{e.exports=function(e,t){var r=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=r){var n,o,u,a,i=[],s=!0,c=!1;try{if(u=(r=r.call(e)).next,0===t){if(Object(r)!==r)return;s=!1}else for(;!(s=(n=u.call(r)).done)&&(i.push(n.value),i.length!==t);s=!0);}catch(e){c=!0,o=e}finally{try{if(!s&&null!=r.return&&(a=r.return(),Object(a)!==a))return}finally{if(c)throw o}}return i}},e.exports.__esModule=!0,e.exports.default=e.exports},172:e=>{e.exports=function(e,t){this.v=e,this.k=t},e.exports.__esModule=!0,e.exports.default=e.exports},293:e=>{function t(e,t,r,n,o,u,a){try{var i=e[u](a),s=i.value}catch(e){return void r(e)}i.done?t(s):Promise.resolve(s).then(n,o)}e.exports=function(e){return function(){var r=this,n=arguments;return new Promise((function(o,u){var a=e.apply(r,n);function i(e){t(a,o,u,i,s,"next",e)}function s(e){t(a,o,u,i,s,"throw",e)}i(void 0)}))}},e.exports.__esModule=!0,e.exports.default=e.exports},373:e=>{e.exports=function(e){var t=Object(e),r=[];for(var n in t)r.unshift(n);return function e(){for(;r.length;)if((n=r.pop())in t)return e.value=n,e.done=!1,e;return e.done=!0,e}},e.exports.__esModule=!0,e.exports.default=e.exports},389:function(e,t){!function(e){"use strict";var t=function(e){return function(t){var r=e(t);return t.add(r),r}},r=function(e){return function(t,r){return e.set(t,r),r}},n=void 0===Number.MAX_SAFE_INTEGER?9007199254740991:Number.MAX_SAFE_INTEGER,o=536870912,u=2*o,a=function(e,t){return function(r){var a=t.get(r),i=void 0===a?r.size:a<u?a+1:0;if(!r.has(i))return e(r,i);if(r.size<o){for(;r.has(i);)i=Math.floor(Math.random()*u);return e(r,i)}if(r.size>n)throw new Error("Congratulations, you created a collection of unique numbers which uses all available integers!");for(;r.has(i);)i=Math.floor(Math.random()*n);return e(r,i)}},i=new WeakMap,s=r(i),c=a(s,i),f=t(c);e.addUniqueNumber=f,e.generateUniqueNumber=c}(t)},472:function(e,t,r){!function(e,t,r,n){"use strict";var o=function(e,t){return function(r){var o=t.get(r);if(void 0===o)return Promise.resolve(!1);var u=n(o,2),a=u[0],i=u[1];return e(a),t.delete(r),i(!1),Promise.resolve(!0)}},u=function(e,t){var r=function(n,o,u,a){var i=n-e.now();i>0?o.set(a,[t(r,i,n,o,u,a),u]):(o.delete(a),u(!0))};return r},a=function(e,t,r,n){return function(o,u,a){var i=o+u-t.timeOrigin,s=i-t.now();return new Promise((function(t){e.set(a,[r(n,s,i,e,t,a),t])}))}},i=new Map,s=o(globalThis.clearTimeout,i),c=new Map,f=o(globalThis.clearTimeout,c),l=u(performance,globalThis.setTimeout),p=a(i,performance,globalThis.setTimeout,l),d=a(c,performance,globalThis.setTimeout,l);r.createWorker(self,{clear:function(){var r=e(t.mark((function e(r){var n,o,u;return t.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return n=r.timerId,o=r.timerType,e.next=1,"interval"===o?s(n):f(n);case 1:return u=e.sent,e.abrupt("return",{result:u});case 2:case"end":return e.stop()}}),e)})));function n(e){return r.apply(this,arguments)}return n}(),set:function(){var r=e(t.mark((function e(r){var n,o,u,a,i;return t.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return n=r.delay,o=r.now,u=r.timerId,a=r.timerType,e.next=1,("interval"===a?p:d)(n,o,u);case 1:return i=e.sent,e.abrupt("return",{result:i});case 2:case"end":return e.stop()}}),e)})));function n(e){return r.apply(this,arguments)}return n}()})}(r(293),r(756),r(623),r(715))},546:e=>{function t(r,n,o,u){var a=Object.defineProperty;try{a({},"",{})}catch(r){a=0}e.exports=t=function(e,r,n,o){if(r)a?a(e,r,{value:n,enumerable:!o,configurable:!o,writable:!o}):e[r]=n;else{var u=function(r,n){t(e,r,(function(e){return this._invoke(r,n,e)}))};u("next",0),u("throw",1),u("return",2)}},e.exports.__esModule=!0,e.exports.default=e.exports,t(r,n,o,u)}e.exports=t,e.exports.__esModule=!0,e.exports.default=e.exports},579:(e,t,r)=>{var n=r(738).default;e.exports=function(e){if(null!=e){var t=e["function"==typeof Symbol&&Symbol.iterator||"@@iterator"],r=0;if(t)return t.call(e);if("function"==typeof e.next)return e;if(!isNaN(e.length))return{next:function(){return e&&r>=e.length&&(e=void 0),{value:e&&e[r++],done:!e}}}}throw new TypeError(n(e)+" is not iterable")},e.exports.__esModule=!0,e.exports.default=e.exports},623:function(e,t,r){!function(e,t,r,n,o){"use strict";var u={INTERNAL_ERROR:-32603,INVALID_PARAMS:-32602,METHOD_NOT_FOUND:-32601},a=function(e,t){return Object.assign(new Error(e),{status:t})},i=function(e){return a('The requested method called "'.concat(e,'" is not supported.'),u.METHOD_NOT_FOUND)},s=function(e){return a('The handler of the method called "'.concat(e,'" returned no required result.'),u.INTERNAL_ERROR)},c=function(e){return a('The handler of the method called "'.concat(e,'" returned an unexpected result.'),u.INTERNAL_ERROR)},f=function(e){return a('The specified parameter called "portId" with the given value "'.concat(e,'" does not identify a port connected to this worker.'),u.INVALID_PARAMS)},l=function(e,n){return function(){var o=t(r.mark((function t(o){var u,a,f,l,p,d,v,x,y,b,h,m,_,g,w;return r.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(u=o.data,a=u.id,f=u.method,l=u.params,p=n[f],t.prev=1,void 0!==p){t.next=2;break}throw i(f);case 2:if(void 0!==(d=void 0===l?p():p(l))){t.next=3;break}throw s(f);case 3:if(!(d instanceof Promise)){t.next=5;break}return t.next=4,d;case 4:g=t.sent,t.next=6;break;case 5:g=d;case 6:if(v=g,null!==a){t.next=8;break}if(void 0===v.result){t.next=7;break}throw c(f);case 7:t.next=10;break;case 8:if(void 0!==v.result){t.next=9;break}throw c(f);case 9:x=v.result,y=v.transferables,b=void 0===y?[]:y,e.postMessage({id:a,result:x},b);case 10:t.next=12;break;case 11:t.prev=11,w=t.catch(1),h=w.message,m=w.status,_=void 0===m?-32603:m,e.postMessage({error:{code:_,message:h},id:a});case 12:case"end":return t.stop()}}),t,null,[[1,11]])})));return function(e){return o.apply(this,arguments)}}()},p=function(){return new Promise((function(e){var t=new ArrayBuffer(0),r=new MessageChannel,n=r.port1,o=r.port2;n.onmessage=function(t){var r=t.data;return e(null!==r)},o.postMessage(t,[t])}))};function d(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function v(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?d(Object(r),!0).forEach((function(t){n(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):d(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}var x=new Map,y=function(e,n,u){return v(v({},n),{},{connect:function(t){var r=t.port;r.start();var u=e(r,n),a=o.generateUniqueNumber(x);return x.set(a,(function(){u(),r.close(),x.delete(a)})),{result:a}},disconnect:function(e){var t=e.portId,r=x.get(t);if(void 0===r)throw f(t);return r(),{result:null}},isSupported:function(){var e=t(r.mark((function e(){var t,n,o;return r.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=1,p();case 1:if(!e.sent){e.next=5;break}if(!((t=u())instanceof Promise)){e.next=3;break}return e.next=2,t;case 2:o=e.sent,e.next=4;break;case 3:o=t;case 4:return n=o,e.abrupt("return",{result:n});case 5:return e.abrupt("return",{result:!1});case 6:case"end":return e.stop()}}),e)})));function n(){return e.apply(this,arguments)}return n}()})},b=function(e,t){var r=y(b,t,arguments.length>2&&void 0!==arguments[2]?arguments[2]:function(){return!0}),n=l(e,r);return e.addEventListener("message",n),function(){return e.removeEventListener("message",n)}};e.createWorker=b,e.isSupported=p}(t,r(293),r(756),r(693),r(389))},633:(e,t,r)=>{var n=r(172),o=r(993),u=r(869),a=r(887),i=r(791),s=r(373),c=r(579);function f(){"use strict";var t=o(),r=t.m(f),l=(Object.getPrototypeOf?Object.getPrototypeOf(r):r.__proto__).constructor;function p(e){var t="function"==typeof e&&e.constructor;return!!t&&(t===l||"GeneratorFunction"===(t.displayName||t.name))}var d={throw:1,return:2,break:3,continue:3};function v(e){var t,r;return function(n){t||(t={stop:function(){return r(n.a,2)},catch:function(){return n.v},abrupt:function(e,t){return r(n.a,d[e],t)},delegateYield:function(e,o,u){return t.resultName=o,r(n.d,c(e),u)},finish:function(e){return r(n.f,e)}},r=function(e,r,o){n.p=t.prev,n.n=t.next;try{return e(r,o)}finally{t.next=n.n}}),t.resultName&&(t[t.resultName]=n.v,t.resultName=void 0),t.sent=n.v,t.next=n.n;try{return e.call(this,t)}finally{n.p=t.prev,n.n=t.next}}}return(e.exports=f=function(){return{wrap:function(e,r,n,o){return t.w(v(e),r,n,o&&o.reverse())},isGeneratorFunction:p,mark:t.m,awrap:function(e,t){return new n(e,t)},AsyncIterator:i,async:function(e,t,r,n,o){return(p(t)?a:u)(v(e),t,r,n,o)},keys:s,values:c}},e.exports.__esModule=!0,e.exports.default=e.exports)()}e.exports=f,e.exports.__esModule=!0,e.exports.default=e.exports},693:(e,t,r)=>{var n=r(736);e.exports=function(e,t,r){return(t=n(t))in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e},e.exports.__esModule=!0,e.exports.default=e.exports},715:(e,t,r)=>{var n=r(987),o=r(156),u=r(122),a=r(752);e.exports=function(e,t){return n(e)||o(e,t)||u(e,t)||a()},e.exports.__esModule=!0,e.exports.default=e.exports},736:(e,t,r)=>{var n=r(738).default,o=r(45);e.exports=function(e){var t=o(e,"string");return"symbol"==n(t)?t:t+""},e.exports.__esModule=!0,e.exports.default=e.exports},738:e=>{function t(r){return e.exports=t="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},e.exports.__esModule=!0,e.exports.default=e.exports,t(r)}e.exports=t,e.exports.__esModule=!0,e.exports.default=e.exports},752:e=>{e.exports=function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")},e.exports.__esModule=!0,e.exports.default=e.exports},756:(e,t,r)=>{var n=r(633)();e.exports=n;try{regeneratorRuntime=n}catch(e){"object"==typeof globalThis?globalThis.regeneratorRuntime=n:Function("r","regeneratorRuntime = r")(n)}},791:(e,t,r)=>{var n=r(172),o=r(546);e.exports=function e(t,r){function u(e,o,a,i){try{var s=t[e](o),c=s.value;return c instanceof n?r.resolve(c.v).then((function(e){u("next",e,a,i)}),(function(e){u("throw",e,a,i)})):r.resolve(c).then((function(e){s.value=e,a(s)}),(function(e){return u("throw",e,a,i)}))}catch(e){i(e)}}var a;this.next||(o(e.prototype),o(e.prototype,"function"==typeof Symbol&&Symbol.asyncIterator||"@asyncIterator",(function(){return this}))),o(this,"_invoke",(function(e,t,n){function o(){return new r((function(t,r){u(e,n,t,r)}))}return a=a?a.then(o,o):o()}),!0)},e.exports.__esModule=!0,e.exports.default=e.exports},869:(e,t,r)=>{var n=r(887);e.exports=function(e,t,r,o,u){var a=n(e,t,r,o,u);return a.next().then((function(e){return e.done?e.value:a.next()}))},e.exports.__esModule=!0,e.exports.default=e.exports},887:(e,t,r)=>{var n=r(993),o=r(791);e.exports=function(e,t,r,u,a){return new o(n().w(e,t,r,u),a||Promise)},e.exports.__esModule=!0,e.exports.default=e.exports},987:e=>{e.exports=function(e){if(Array.isArray(e))return e},e.exports.__esModule=!0,e.exports.default=e.exports},993:(e,t,r)=>{var n=r(546);function o(){var t,r,u="function"==typeof Symbol?Symbol:{},a=u.iterator||"@@iterator",i=u.toStringTag||"@@toStringTag";function s(e,o,u,a){var i=o&&o.prototype instanceof f?o:f,s=Object.create(i.prototype);return n(s,"_invoke",function(e,n,o){var u,a,i,s=0,f=o||[],l=!1,p={p:0,n:0,v:t,a:d,f:d.bind(t,4),d:function(e,r){return u=e,a=0,i=t,p.n=r,c}};function d(e,n){for(a=e,i=n,r=0;!l&&s&&!o&&r<f.length;r++){var o,u=f[r],d=p.p,v=u[2];e>3?(o=v===n)&&(i=u[(a=u[4])?5:(a=3,3)],u[4]=u[5]=t):u[0]<=d&&((o=e<2&&d<u[1])?(a=0,p.v=n,p.n=u[1]):d<v&&(o=e<3||u[0]>n||n>v)&&(u[4]=e,u[5]=n,p.n=v,a=0))}if(o||e>1)return c;throw l=!0,n}return function(o,f,v){if(s>1)throw TypeError("Generator is already running");for(l&&1===f&&d(f,v),a=f,i=v;(r=a<2?t:i)||!l;){u||(a?a<3?(a>1&&(p.n=-1),d(a,i)):p.n=i:p.v=i);try{if(s=2,u){if(a||(o="next"),r=u[o]){if(!(r=r.call(u,i)))throw TypeError("iterator result is not an object");if(!r.done)return r;i=r.value,a<2&&(a=0)}else 1===a&&(r=u.return)&&r.call(u),a<2&&(i=TypeError("The iterator does not provide a '"+o+"' method"),a=1);u=t}else if((r=(l=p.n<0)?i:e.call(n,p))!==c)break}catch(e){u=t,a=1,i=e}finally{s=1}}return{value:r,done:l}}}(e,u,a),!0),s}var c={};function f(){}function l(){}function p(){}r=Object.getPrototypeOf;var d=[][a]?r(r([][a]())):(n(r={},a,(function(){return this})),r),v=p.prototype=f.prototype=Object.create(d);function x(e){return Object.setPrototypeOf?Object.setPrototypeOf(e,p):(e.__proto__=p,n(e,i,"GeneratorFunction")),e.prototype=Object.create(v),e}return l.prototype=p,n(v,"constructor",p),n(p,"constructor",l),l.displayName="GeneratorFunction",n(p,i,"GeneratorFunction"),n(v),n(v,i,"Generator"),n(v,a,(function(){return this})),n(v,"toString",(function(){return"[object Generator]"})),(e.exports=o=function(){return{w:s,m:x}},e.exports.__esModule=!0,e.exports.default=e.exports)()}e.exports=o,e.exports.__esModule=!0,e.exports.default=e.exports}},t={};function r(n){var o=t[n];if(void 0!==o)return o.exports;var u=t[n]={exports:{}};return e[n].call(u.exports,u,u.exports,r),u.exports}r.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return r.d(t,{a:t}),t},r.d=(e,t)=>{for(var n in t)r.o(t,n)&&!r.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},r.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),(()=>{"use strict";r(472)})()})();`,i=n(l.load,o),a=function(f){return i().clearInterval(f)},s=function(f){return i().clearTimeout(f)},c=function(){var f;return(f=i()).setInterval.apply(f,arguments)},d=function(){var f;return(f=i()).setTimeout.apply(f,arguments)};t.clearInterval=a,t.clearTimeout=s,t.setInterval=c,t.setTimeout=d})}),Dr=_e(u=>{be(),Ee(),we(),Object.defineProperty(u,"__esModule",{value:!0}),u.isReactNativeBrowser=u.isWebWorker=void 0;var r=()=>{var o;return typeof window<"u"?typeof navigator<"u"&&((o=navigator.userAgent)==null?void 0:o.toLowerCase().indexOf(" electron/"))>-1&&(ze!=null&&ze.versions)?!Object.prototype.hasOwnProperty.call(ze.versions,"electron"):typeof window.document<"u":!1},t=()=>{var o,i;return!!(typeof self=="object"&&((i=(o=self==null?void 0:self.constructor)==null?void 0:o.name)!=null&&i.includes("WorkerGlobalScope"))&&typeof Deno>"u")},l=()=>typeof navigator<"u"&&navigator.product==="ReactNative",n=r()||t()||l();u.isWebWorker=t(),u.isReactNativeBrowser=l(),u.default=n}),g0=_e(u=>{be(),Ee(),we();var r=u&&u.__createBinding||(Object.create?function(c,d,f,m){m===void 0&&(m=f);var h=Object.getOwnPropertyDescriptor(d,f);(!h||("get"in h?!d.__esModule:h.writable||h.configurable))&&(h={enumerable:!0,get:function(){return d[f]}}),Object.defineProperty(c,m,h)}:function(c,d,f,m){m===void 0&&(m=f),c[m]=d[f]}),t=u&&u.__setModuleDefault||(Object.create?function(c,d){Object.defineProperty(c,"default",{enumerable:!0,value:d})}:function(c,d){c.default=d}),l=u&&u.__importStar||function(){var c=function(d){return c=Object.getOwnPropertyNames||function(f){var m=[];for(var h in f)Object.prototype.hasOwnProperty.call(f,h)&&(m[m.length]=h);return m},c(d)};return function(d){if(d&&d.__esModule)return d;var f={};if(d!=null)for(var m=c(d),h=0;h<m.length;h++)m[h]!=="default"&&r(f,d,m[h]);return t(f,d),f}}();Object.defineProperty(u,"__esModule",{value:!0});var n=m0(),o=l(Dr()),i={set:n.setInterval,clear:n.clearInterval},a={set:(c,d)=>setInterval(c,d),clear:c=>clearInterval(c)},s=c=>{switch(c){case"native":return a;case"worker":return i;case"auto":default:return o.default&&!o.isWebWorker&&!o.isReactNativeBrowser?i:a}};u.default=s}),da=_e(u=>{be(),Ee(),we();var r=u&&u.__importDefault||function(n){return n&&n.__esModule?n:{default:n}};Object.defineProperty(u,"__esModule",{value:!0});var t=r(g0()),l=class{constructor(n,o){Se(this,"_keepalive");Se(this,"timerId");Se(this,"timer");Se(this,"destroyed",!1);Se(this,"counter");Se(this,"client");Se(this,"_keepaliveTimeoutTimestamp");Se(this,"_intervalEvery");this.client=n,this.timer=typeof o=="object"&&"set"in o&&"clear"in o?o:(0,t.default)(o),this.setKeepalive(n.options.keepalive)}get keepaliveTimeoutTimestamp(){return this._keepaliveTimeoutTimestamp}get intervalEvery(){return this._intervalEvery}get keepalive(){return this._keepalive}clear(){this.timerId&&(this.timer.clear(this.timerId),this.timerId=null)}setKeepalive(n){if(n*=1e3,isNaN(n)||n<=0||n>2147483647)throw new Error(`Keepalive value must be an integer between 0 and 2147483647. Provided value is ${n}`);this._keepalive=n,this.reschedule(),this.client.log(`KeepaliveManager: set keepalive to ${n}ms`)}destroy(){this.clear(),this.destroyed=!0}reschedule(){if(this.destroyed)return;this.clear(),this.counter=0;let n=Math.ceil(this._keepalive*1.5);this._keepaliveTimeoutTimestamp=Date.now()+n,this._intervalEvery=Math.ceil(this._keepalive/2),this.timerId=this.timer.set(()=>{this.destroyed||(this.counter+=1,this.counter===2?this.client.sendPing():this.counter>2&&this.client.onKeepaliveTimeout())},this._intervalEvery)}};u.default=l}),jn=_e(u=>{var E;be(),Ee(),we();var r=u&&u.__createBinding||(Object.create?function(I,x,V,$){$===void 0&&($=V);var C=Object.getOwnPropertyDescriptor(x,V);(!C||("get"in C?!x.__esModule:C.writable||C.configurable))&&(C={enumerable:!0,get:function(){return x[V]}}),Object.defineProperty(I,$,C)}:function(I,x,V,$){$===void 0&&($=V),I[$]=x[V]}),t=u&&u.__setModuleDefault||(Object.create?function(I,x){Object.defineProperty(I,"default",{enumerable:!0,value:x})}:function(I,x){I.default=x}),l=u&&u.__importStar||function(){var I=function(x){return I=Object.getOwnPropertyNames||function(V){var $=[];for(var C in V)Object.prototype.hasOwnProperty.call(V,C)&&($[$.length]=C);return $},I(x)};return function(x){if(x&&x.__esModule)return x;var V={};if(x!=null)for(var $=I(x),C=0;C<$.length;C++)$[C]!=="default"&&r(V,x,$[C]);return t(V,x),V}}(),n=u&&u.__importDefault||function(I){return I&&I.__esModule?I:{default:I}};Object.defineProperty(u,"__esModule",{value:!0});var o=n(xy()),i=Kt(),a=n(Vy()),s=n(xt()),c=l(Cy()),d=n(Ys()),f=n(Qy()),m=n(oa()),h=n(Yy()),p=ir(),w=Jy(),v=n(da()),S=l(Dr()),y=globalThis.setImmediate||((...I)=>{let x=I.shift();(0,p.nextTick)(()=>{x(...I)})}),k={keepalive:60,reschedulePings:!0,protocolId:"MQTT",protocolVersion:4,reconnectPeriod:1e3,connectTimeout:30*1e3,clean:!0,resubscribe:!0,subscribeBatchSize:null,writeCache:!0,timerVariant:"auto"},_=(E=class extends w.TypedEventEmitter{constructor(V,$){super();Se(this,"connected");Se(this,"disconnecting");Se(this,"disconnected");Se(this,"reconnecting");Se(this,"incomingStore");Se(this,"outgoingStore");Se(this,"options");Se(this,"queueQoSZero");Se(this,"_reconnectCount");Se(this,"log");Se(this,"messageIdProvider");Se(this,"outgoing");Se(this,"messageIdToTopic");Se(this,"noop");Se(this,"keepaliveManager");Se(this,"stream");Se(this,"queue");Se(this,"streamBuilder");Se(this,"_resubscribeTopics");Se(this,"connackTimer");Se(this,"reconnectTimer");Se(this,"_storeProcessing");Se(this,"_packetIdsDuringStoreProcessing");Se(this,"_storeProcessingQueue");Se(this,"_firstConnection");Se(this,"topicAliasRecv");Se(this,"topicAliasSend");Se(this,"_deferredReconnect");Se(this,"connackPacket");this.options=$||{};for(let C in k)typeof this.options[C]>"u"?this.options[C]=k[C]:this.options[C]=$[C];this.log=this.options.log||(0,s.default)("mqttjs:client"),this.noop=this._noop.bind(this),this.log("MqttClient :: version:",E.VERSION),S.isWebWorker?this.log("MqttClient :: environment","webworker"):this.log("MqttClient :: environment",S.default?"browser":"node"),this.log("MqttClient :: options.protocol",$.protocol),this.log("MqttClient :: options.protocolVersion",$.protocolVersion),this.log("MqttClient :: options.username",$.username),this.log("MqttClient :: options.keepalive",$.keepalive),this.log("MqttClient :: options.reconnectPeriod",$.reconnectPeriod),this.log("MqttClient :: options.rejectUnauthorized",$.rejectUnauthorized),this.log("MqttClient :: options.properties.topicAliasMaximum",$.properties?$.properties.topicAliasMaximum:void 0),this.options.clientId=typeof $.clientId=="string"?$.clientId:E.defaultId(),this.log("MqttClient :: clientId",this.options.clientId),this.options.customHandleAcks=$.protocolVersion===5&&$.customHandleAcks?$.customHandleAcks:(...C)=>{C[3](null,0)},this.options.writeCache||(o.default.writeToStream.cacheNumbers=!1),this.streamBuilder=V,this.messageIdProvider=typeof this.options.messageIdProvider>"u"?new m.default:this.options.messageIdProvider,this.outgoingStore=$.outgoingStore||new d.default,this.incomingStore=$.incomingStore||new d.default,this.queueQoSZero=$.queueQoSZero===void 0?!0:$.queueQoSZero,this._resubscribeTopics={},this.messageIdToTopic={},this.keepaliveManager=null,this.connected=!1,this.disconnecting=!1,this.reconnecting=!1,this.queue=[],this.connackTimer=null,this.reconnectTimer=null,this._storeProcessing=!1,this._packetIdsDuringStoreProcessing={},this._storeProcessingQueue=[],this.outgoing={},this._firstConnection=!0,$.properties&&$.properties.topicAliasMaximum>0&&($.properties.topicAliasMaximum>65535?this.log("MqttClient :: options.properties.topicAliasMaximum is out of range"):this.topicAliasRecv=new h.default($.properties.topicAliasMaximum)),this.on("connect",()=>{let{queue:C}=this,D=()=>{let A=C.shift();this.log("deliver :: entry %o",A);let U=null;if(!A){this._resubscribe();return}U=A.packet,this.log("deliver :: call _sendPacket for %o",U);let H=!0;U.messageId&&U.messageId!==0&&(this.messageIdProvider.register(U.messageId)||(H=!1)),H?this._sendPacket(U,F=>{A.cb&&A.cb(F),D()}):(this.log("messageId: %d has already used. The message is skipped and removed.",U.messageId),D())};this.log("connect :: sending queued packets"),D()}),this.on("close",()=>{this.log("close :: connected set to `false`"),this.connected=!1,this.log("close :: clearing connackTimer"),clearTimeout(this.connackTimer),this._destroyKeepaliveManager(),this.topicAliasRecv&&this.topicAliasRecv.clear(),this.log("close :: calling _setupReconnect"),this._setupReconnect()}),this.options.manualConnect||(this.log("MqttClient :: setting up stream"),this.connect())}static defaultId(){return`mqttjs_${Math.random().toString(16).substr(2,8)}`}handleAuth(V,$){$()}handleMessage(V,$){$()}_nextId(){return this.messageIdProvider.allocate()}getLastMessageId(){return this.messageIdProvider.getLastAllocated()}connect(){var ue;let V=new i.Writable,$=o.default.parser(this.options),C=null,D=[];this.log("connect :: calling method to clear reconnect"),this._clearReconnect(),this.disconnected&&!this.reconnecting&&(this.incomingStore=this.options.incomingStore||new d.default,this.outgoingStore=this.options.outgoingStore||new d.default,this.disconnecting=!1,this.disconnected=!1),this.log("connect :: using streamBuilder provided to client to create stream"),this.stream=this.streamBuilder(this),$.on("packet",ne=>{this.log("parser :: on packet push to packets array."),D.push(ne)});let A=()=>{this.log("work :: getting next packet in queue");let ne=D.shift();if(ne)this.log("work :: packet pulled from queue"),(0,f.default)(this,ne,U);else{this.log("work :: no packets in queue");let oe=C;C=null,this.log("work :: done flag is %s",!!oe),oe&&oe()}},U=()=>{if(D.length)(0,p.nextTick)(A);else{let ne=C;C=null,ne()}};V._write=(ne,oe,fe)=>{C=fe,this.log("writable stream :: parsing buffer"),$.parse(ne),A()};let H=ne=>{this.log("streamErrorHandler :: error",ne.message),ne.code?(this.log("streamErrorHandler :: emitting error"),this.emit("error",ne)):this.noop(ne)};this.log("connect :: pipe stream to writable stream"),this.stream.pipe(V),this.stream.on("error",H),this.stream.on("close",()=>{this.log("(%s)stream :: on close",this.options.clientId),this._flushVolatile(),this.log("stream: emit close to MqttClient"),this.emit("close")}),this.log("connect: sending packet `connect`");let F={cmd:"connect",protocolId:this.options.protocolId,protocolVersion:this.options.protocolVersion,clean:this.options.clean,clientId:this.options.clientId,keepalive:this.options.keepalive,username:this.options.username,password:this.options.password,properties:this.options.properties};if(this.options.will&&(F.will={...this.options.will,payload:(ue=this.options.will)==null?void 0:ue.payload}),this.topicAliasRecv&&(F.properties||(F.properties={}),this.topicAliasRecv&&(F.properties.topicAliasMaximum=this.topicAliasRecv.max)),this._writePacket(F),$.on("error",this.emit.bind(this,"error")),this.options.properties){if(!this.options.properties.authenticationMethod&&this.options.properties.authenticationData)return this.end(()=>this.emit("error",new Error("Packet has no Authentication Method"))),this;if(this.options.properties.authenticationMethod&&this.options.authPacket&&typeof this.options.authPacket=="object"){let ne={cmd:"auth",reasonCode:0,...this.options.authPacket};this._writePacket(ne)}}return this.stream.setMaxListeners(1e3),clearTimeout(this.connackTimer),this.connackTimer=setTimeout(()=>{this.log("!!connectTimeout hit!! Calling _cleanUp with force `true`"),this.emit("error",new Error("connack timeout")),this._cleanUp(!0)},this.options.connectTimeout),this}publish(V,$,C,D){this.log("publish :: message `%s` to topic `%s`",$,V);let{options:A}=this;typeof C=="function"&&(D=C,C=null),C=C||{},C={qos:0,retain:!1,dup:!1,...C};let{qos:U,retain:H,dup:F,properties:ue,cbStorePut:ne}=C;if(this._checkDisconnecting(D))return this;let oe=()=>{let fe=0;if((U===1||U===2)&&(fe=this._nextId(),fe===null))return this.log("No messageId left"),!1;let J={cmd:"publish",topic:V,payload:$,qos:U,retain:H,messageId:fe,dup:F};switch(A.protocolVersion===5&&(J.properties=ue),this.log("publish :: qos",U),U){case 1:case 2:this.outgoing[J.messageId]={volatile:!1,cb:D||this.noop},this.log("MqttClient:publish: packet cmd: %s",J.cmd),this._sendPacket(J,void 0,ne);break;default:this.log("MqttClient:publish: packet cmd: %s",J.cmd),this._sendPacket(J,D,ne);break}return!0};return(this._storeProcessing||this._storeProcessingQueue.length>0||!oe())&&this._storeProcessingQueue.push({invoke:oe,cbStorePut:C.cbStorePut,callback:D}),this}publishAsync(V,$,C){return new Promise((D,A)=>{this.publish(V,$,C,(U,H)=>{U?A(U):D(H)})})}subscribe(V,$,C){let D=this.options.protocolVersion;typeof $=="function"&&(C=$),C=C||this.noop;let A=!1,U=[];typeof V=="string"?(V=[V],U=V):Array.isArray(V)?U=V:typeof V=="object"&&(A=V.resubscribe,delete V.resubscribe,U=Object.keys(V));let H=c.validateTopics(U);if(H!==null)return y(C,new Error(`Invalid topic ${H}`)),this;if(this._checkDisconnecting(C))return this.log("subscribe: discconecting true"),this;let F={qos:0};D===5&&(F.nl=!1,F.rap=!1,F.rh=0),$={...F,...$};let{properties:ue}=$,ne=[],oe=(ie,R)=>{if(R=R||$,!Object.prototype.hasOwnProperty.call(this._resubscribeTopics,ie)||this._resubscribeTopics[ie].qos<R.qos||A){let Z={topic:ie,qos:R.qos};D===5&&(Z.nl=R.nl,Z.rap=R.rap,Z.rh=R.rh,Z.properties=ue),this.log("subscribe: pushing topic `%s` and qos `%s` to subs list",Z.topic,Z.qos),ne.push(Z)}};if(Array.isArray(V)?V.forEach(ie=>{this.log("subscribe: array topic %s",ie),oe(ie)}):Object.keys(V).forEach(ie=>{this.log("subscribe: object topic %s, %o",ie,V[ie]),oe(ie,V[ie])}),!ne.length)return C(null,[]),this;let fe=(ie,R)=>{let Z={cmd:"subscribe",subscriptions:ie,messageId:R};if(ue&&(Z.properties=ue),this.options.resubscribe){this.log("subscribe :: resubscribe true");let G=[];ie.forEach(Ve=>{if(this.options.reconnectPeriod>0){let ee={qos:Ve.qos};D===5&&(ee.nl=Ve.nl||!1,ee.rap=Ve.rap||!1,ee.rh=Ve.rh||0,ee.properties=Ve.properties),this._resubscribeTopics[Ve.topic]=ee,G.push(Ve.topic)}}),this.messageIdToTopic[Z.messageId]=G}let ge=new Promise((G,Ve)=>{this.outgoing[Z.messageId]={volatile:!0,cb(ee,q){if(!ee){let{granted:ce}=q;for(let X=0;X<ce.length;X+=1)ie[X].qos=ce[X]}ee?Ve(new p.ErrorWithSubackPacket(ee.message,q)):G(q)}}});return this.log("subscribe :: call _sendPacket"),this._sendPacket(Z),ge},J=()=>{let ie=this.options.subscribeBatchSize??ne.length,R=[];for(let Z=0;Z<ne.length;Z+=ie){let ge=ne.slice(Z,Z+ie),G=this._nextId();if(G===null)return this.log("No messageId left"),!1;R.push(fe(ge,G))}return Promise.all(R).then(Z=>{C(null,ne,Z.at(-1))}).catch(Z=>{C(Z,ne,Z.packet)}),!0};return(this._storeProcessing||this._storeProcessingQueue.length>0||!J())&&this._storeProcessingQueue.push({invoke:J,callback:C}),this}subscribeAsync(V,$){return new Promise((C,D)=>{this.subscribe(V,$,(A,U)=>{A?D(A):C(U)})})}unsubscribe(V,$,C){typeof V=="string"&&(V=[V]),typeof $=="function"&&(C=$),C=C||this.noop;let D=c.validateTopics(V);if(D!==null)return y(C,new Error(`Invalid topic ${D}`)),this;if(this._checkDisconnecting(C))return this;let A=()=>{let U=this._nextId();if(U===null)return this.log("No messageId left"),!1;let H={cmd:"unsubscribe",messageId:U,unsubscriptions:[]};return typeof V=="string"?H.unsubscriptions=[V]:Array.isArray(V)&&(H.unsubscriptions=V),this.options.resubscribe&&H.unsubscriptions.forEach(F=>{delete this._resubscribeTopics[F]}),typeof $=="object"&&$.properties&&(H.properties=$.properties),this.outgoing[H.messageId]={volatile:!0,cb:C},this.log("unsubscribe: call _sendPacket"),this._sendPacket(H),!0};return(this._storeProcessing||this._storeProcessingQueue.length>0||!A())&&this._storeProcessingQueue.push({invoke:A,callback:C}),this}unsubscribeAsync(V,$){return new Promise((C,D)=>{this.unsubscribe(V,$,(A,U)=>{A?D(A):C(U)})})}end(V,$,C){this.log("end :: (%s)",this.options.clientId),(V==null||typeof V!="boolean")&&(C=C||$,$=V,V=!1),typeof $!="object"&&(C=C||$,$=null),this.log("end :: cb? %s",!!C),(!C||typeof C!="function")&&(C=this.noop);let D=()=>{this.log("end :: closeStores: closing incoming and outgoing stores"),this.disconnected=!0,this.incomingStore.close(U=>{this.outgoingStore.close(H=>{if(this.log("end :: closeStores: emitting end"),this.emit("end"),C){let F=U||H;this.log("end :: closeStores: invoking callback with args"),C(F)}})}),this._deferredReconnect?this._deferredReconnect():(this.options.reconnectPeriod===0||this.options.manualConnect)&&(this.disconnecting=!1)},A=()=>{this.log("end :: (%s) :: finish :: calling _cleanUp with force %s",this.options.clientId,V),this._cleanUp(V,()=>{this.log("end :: finish :: calling process.nextTick on closeStores"),(0,p.nextTick)(D)},$)};return this.disconnecting?(C(),this):(this._clearReconnect(),this.disconnecting=!0,!V&&Object.keys(this.outgoing).length>0?(this.log("end :: (%s) :: calling finish in 10ms once outgoing is empty",this.options.clientId),this.once("outgoingEmpty",setTimeout.bind(null,A,10))):(this.log("end :: (%s) :: immediately calling finish",this.options.clientId),A()),this)}endAsync(V,$){return new Promise((C,D)=>{this.end(V,$,A=>{A?D(A):C()})})}removeOutgoingMessage(V){if(this.outgoing[V]){let{cb:$}=this.outgoing[V];this._removeOutgoingAndStoreMessage(V,()=>{$(new Error("Message removed"))})}return this}reconnect(V){this.log("client reconnect");let $=()=>{V?(this.options.incomingStore=V.incomingStore,this.options.outgoingStore=V.outgoingStore):(this.options.incomingStore=null,this.options.outgoingStore=null),this.incomingStore=this.options.incomingStore||new d.default,this.outgoingStore=this.options.outgoingStore||new d.default,this.disconnecting=!1,this.disconnected=!1,this._deferredReconnect=null,this._reconnect()};return this.disconnecting&&!this.disconnected?this._deferredReconnect=$:$(),this}_flushVolatile(){this.outgoing&&(this.log("_flushVolatile :: deleting volatile messages from the queue and setting their callbacks as error function"),Object.keys(this.outgoing).forEach(V=>{this.outgoing[V].volatile&&typeof this.outgoing[V].cb=="function"&&(this.outgoing[V].cb(new Error("Connection closed")),delete this.outgoing[V])}))}_flush(){this.outgoing&&(this.log("_flush: queue exists? %b",!!this.outgoing),Object.keys(this.outgoing).forEach(V=>{typeof this.outgoing[V].cb=="function"&&(this.outgoing[V].cb(new Error("Connection closed")),delete this.outgoing[V])}))}_removeTopicAliasAndRecoverTopicName(V){let $;V.properties&&($=V.properties.topicAlias);let C=V.topic.toString();if(this.log("_removeTopicAliasAndRecoverTopicName :: alias %d, topic %o",$,C),C.length===0){if(typeof $>"u")return new Error("Unregistered Topic Alias");if(C=this.topicAliasSend.getTopicByAlias($),typeof C>"u")return new Error("Unregistered Topic Alias");V.topic=C}$&&delete V.properties.topicAlias}_checkDisconnecting(V){return this.disconnecting&&(V&&V!==this.noop?V(new Error("client disconnecting")):this.emit("error",new Error("client disconnecting"))),this.disconnecting}_reconnect(){this.log("_reconnect: emitting reconnect to client"),this.emit("reconnect"),this.connected?(this.end(()=>{this.connect()}),this.log("client already connected. disconnecting first.")):(this.log("_reconnect: calling connect"),this.connect())}_setupReconnect(){!this.disconnecting&&!this.reconnectTimer&&this.options.reconnectPeriod>0?(this.reconnecting||(this.log("_setupReconnect :: emit `offline` state"),this.emit("offline"),this.log("_setupReconnect :: set `reconnecting` to `true`"),this.reconnecting=!0),this.log("_setupReconnect :: setting reconnectTimer for %d ms",this.options.reconnectPeriod),this.reconnectTimer=setInterval(()=>{this.log("reconnectTimer :: reconnect triggered!"),this._reconnect()},this.options.reconnectPeriod)):this.log("_setupReconnect :: doing nothing...")}_clearReconnect(){this.log("_clearReconnect : clearing reconnect timer"),this.reconnectTimer&&(clearInterval(this.reconnectTimer),this.reconnectTimer=null)}_cleanUp(V,$,C={}){if($&&(this.log("_cleanUp :: done callback provided for on stream close"),this.stream.on("close",$)),this.log("_cleanUp :: forced? %s",V),V)this.options.reconnectPeriod===0&&this.options.clean&&this._flush(),this.log("_cleanUp :: (%s) :: destroying stream",this.options.clientId),this.stream.destroy();else{let D={cmd:"disconnect",...C};this.log("_cleanUp :: (%s) :: call _sendPacket with disconnect packet",this.options.clientId),this._sendPacket(D,()=>{this.log("_cleanUp :: (%s) :: destroying stream",this.options.clientId),y(()=>{this.stream.end(()=>{this.log("_cleanUp :: (%s) :: stream destroyed",this.options.clientId)})})})}!this.disconnecting&&!this.reconnecting&&(this.log("_cleanUp :: client not disconnecting/reconnecting. Clearing and resetting reconnect."),this._clearReconnect(),this._setupReconnect()),this._destroyKeepaliveManager(),$&&!this.connected&&(this.log("_cleanUp :: (%s) :: removing stream `done` callback `close` listener",this.options.clientId),this.stream.removeListener("close",$),$())}_storeAndSend(V,$,C){this.log("storeAndSend :: store packet with cmd %s to outgoingStore",V.cmd);let D=V,A;if(D.cmd==="publish"&&(D=(0,a.default)(V),A=this._removeTopicAliasAndRecoverTopicName(D),A))return $&&$(A);this.outgoingStore.put(D,U=>{if(U)return $&&$(U);C(),this._writePacket(V,$)})}_applyTopicAlias(V){if(this.options.protocolVersion===5&&V.cmd==="publish"){let $;V.properties&&($=V.properties.topicAlias);let C=V.topic.toString();if(this.topicAliasSend)if($){if(C.length!==0&&(this.log("applyTopicAlias :: register topic: %s - alias: %d",C,$),!this.topicAliasSend.put(C,$)))return this.log("applyTopicAlias :: error out of range. topic: %s - alias: %d",C,$),new Error("Sending Topic Alias out of range")}else C.length!==0&&(this.options.autoAssignTopicAlias?($=this.topicAliasSend.getAliasByTopic(C),$?(V.topic="",V.properties={...V.properties,topicAlias:$},this.log("applyTopicAlias :: auto assign(use) topic: %s - alias: %d",C,$)):($=this.topicAliasSend.getLruAlias(),this.topicAliasSend.put(C,$),V.properties={...V.properties,topicAlias:$},this.log("applyTopicAlias :: auto assign topic: %s - alias: %d",C,$))):this.options.autoUseTopicAlias&&($=this.topicAliasSend.getAliasByTopic(C),$&&(V.topic="",V.properties={...V.properties,topicAlias:$},this.log("applyTopicAlias :: auto use topic: %s - alias: %d",C,$))));else if($)return this.log("applyTopicAlias :: error out of range. topic: %s - alias: %d",C,$),new Error("Sending Topic Alias out of range")}}_noop(V){this.log("noop ::",V)}_writePacket(V,$){this.log("_writePacket :: packet: %O",V),this.log("_writePacket :: emitting `packetsend`"),this.emit("packetsend",V),this.log("_writePacket :: writing to stream");let C=o.default.writeToStream(V,this.stream,this.options);this.log("_writePacket :: writeToStream result %s",C),!C&&$&&$!==this.noop?(this.log("_writePacket :: handle events on `drain` once through callback."),this.stream.once("drain",$)):$&&(this.log("_writePacket :: invoking cb"),$())}_sendPacket(V,$,C,D){this.log("_sendPacket :: (%s) :: start",this.options.clientId),C=C||this.noop,$=$||this.noop;let A=this._applyTopicAlias(V);if(A){$(A);return}if(!this.connected){if(V.cmd==="auth"){this._writePacket(V,$);return}this.log("_sendPacket :: client not connected. Storing packet offline."),this._storePacket(V,$,C);return}if(D){this._writePacket(V,$);return}switch(V.cmd){case"publish":break;case"pubrel":this._storeAndSend(V,$,C);return;default:this._writePacket(V,$);return}switch(V.qos){case 2:case 1:this._storeAndSend(V,$,C);break;case 0:default:this._writePacket(V,$);break}this.log("_sendPacket :: (%s) :: end",this.options.clientId)}_storePacket(V,$,C){this.log("_storePacket :: packet: %o",V),this.log("_storePacket :: cb? %s",!!$),C=C||this.noop;let D=V;if(D.cmd==="publish"){D=(0,a.default)(V);let U=this._removeTopicAliasAndRecoverTopicName(D);if(U)return $&&$(U)}let A=D.qos||0;A===0&&this.queueQoSZero||D.cmd!=="publish"?this.queue.push({packet:D,cb:$}):A>0?($=this.outgoing[D.messageId]?this.outgoing[D.messageId].cb:null,this.outgoingStore.put(D,U=>{if(U)return $&&$(U);C()})):$&&$(new Error("No connection to broker"))}_setupKeepaliveManager(){this.log("_setupKeepaliveManager :: keepalive %d (seconds)",this.options.keepalive),!this.keepaliveManager&&this.options.keepalive&&(this.keepaliveManager=new v.default(this,this.options.timerVariant))}_destroyKeepaliveManager(){this.keepaliveManager&&(this.log("_destroyKeepaliveManager :: destroying keepalive manager"),this.keepaliveManager.destroy(),this.keepaliveManager=null)}reschedulePing(V=!1){this.keepaliveManager&&this.options.keepalive&&(V||this.options.reschedulePings)&&this._reschedulePing()}_reschedulePing(){this.log("_reschedulePing :: rescheduling ping"),this.keepaliveManager.reschedule()}sendPing(){this.log("_sendPing :: sending pingreq"),this._sendPacket({cmd:"pingreq"})}onKeepaliveTimeout(){this.emit("error",new Error("Keepalive timeout")),this.log("onKeepaliveTimeout :: calling _cleanUp with force true"),this._cleanUp(!0)}_resubscribe(){this.log("_resubscribe");let V=Object.keys(this._resubscribeTopics);if(!this._firstConnection&&(this.options.clean||this.options.protocolVersion>=4&&!this.connackPacket.sessionPresent)&&V.length>0)if(this.options.resubscribe)if(this.options.protocolVersion===5){this.log("_resubscribe: protocolVersion 5");for(let $=0;$<V.length;$++){let C={};C[V[$]]=this._resubscribeTopics[V[$]],C.resubscribe=!0,this.subscribe(C,{properties:C[V[$]].properties})}}else this._resubscribeTopics.resubscribe=!0,this.subscribe(this._resubscribeTopics);else this._resubscribeTopics={};this._firstConnection=!1}_onConnect(V){if(this.disconnected){this.emit("connect",V);return}this.connackPacket=V,this.messageIdProvider.clear(),this._setupKeepaliveManager(),this.connected=!0;let $=()=>{let C=this.outgoingStore.createStream(),D=()=>{C.destroy(),C=null,this._flushStoreProcessingQueue(),A()},A=()=>{this._storeProcessing=!1,this._packetIdsDuringStoreProcessing={}};this.once("close",D),C.on("error",H=>{A(),this._flushStoreProcessingQueue(),this.removeListener("close",D),this.emit("error",H)});let U=()=>{if(!C)return;let H=C.read(1),F;if(!H){C.once("readable",U);return}if(this._storeProcessing=!0,this._packetIdsDuringStoreProcessing[H.messageId]){U();return}!this.disconnecting&&!this.reconnectTimer?(F=this.outgoing[H.messageId]?this.outgoing[H.messageId].cb:null,this.outgoing[H.messageId]={volatile:!1,cb(ue,ne){F&&F(ue,ne),U()}},this._packetIdsDuringStoreProcessing[H.messageId]=!0,this.messageIdProvider.register(H.messageId)?this._sendPacket(H,void 0,void 0,!0):this.log("messageId: %d has already used.",H.messageId)):C.destroy&&C.destroy()};C.on("end",()=>{let H=!0;for(let F in this._packetIdsDuringStoreProcessing)if(!this._packetIdsDuringStoreProcessing[F]){H=!1;break}this.removeListener("close",D),H?(A(),this._invokeAllStoreProcessingQueue(),this.emit("connect",V)):$()}),U()};$()}_invokeStoreProcessingQueue(){if(!this._storeProcessing&&this._storeProcessingQueue.length>0){let V=this._storeProcessingQueue[0];if(V&&V.invoke())return this._storeProcessingQueue.shift(),!0}return!1}_invokeAllStoreProcessingQueue(){for(;this._invokeStoreProcessingQueue(););}_flushStoreProcessingQueue(){for(let V of this._storeProcessingQueue)V.cbStorePut&&V.cbStorePut(new Error("Connection closed")),V.callback&&V.callback(new Error("Connection closed"));this._storeProcessingQueue.splice(0)}_removeOutgoingAndStoreMessage(V,$){delete this.outgoing[V],this.outgoingStore.del({messageId:V},(C,D)=>{$(C,D),this.messageIdProvider.deallocate(V),this._invokeStoreProcessingQueue()})}},Se(E,"VERSION",p.MQTTJS_VERSION),E);u.default=_}),y0=_e(u=>{be(),Ee(),we(),Object.defineProperty(u,"__esModule",{value:!0});var r=ra(),t=class{constructor(){Se(this,"numberAllocator");Se(this,"lastId");this.numberAllocator=new r.NumberAllocator(1,65535)}allocate(){return this.lastId=this.numberAllocator.alloc(),this.lastId}getLastAllocated(){return this.lastId}register(l){return this.numberAllocator.use(l)}deallocate(l){this.numberAllocator.free(l)}clear(){this.numberAllocator.clear()}};u.default=t});function b0(){if(Ln)return Pr;Ln=!0;let u=2147483647,r=36,t=1,l=26,n=38,o=700,i=72,a=128,s="-",c=/^xn--/,d=/[^\0-\x7F]/,f=/[\x2E\u3002\uFF0E\uFF61]/g,m={overflow:"Overflow: input needs wider integers to process","not-basic":"Illegal input >= 0x80 (not a basic code point)","invalid-input":"Invalid input"},h=r-t,p=Math.floor,w=String.fromCharCode;function v(C){throw new RangeError(m[C])}function S(C,D){let A=[],U=C.length;for(;U--;)A[U]=D(C[U]);return A}function y(C,D){let A=C.split("@"),U="";A.length>1&&(U=A[0]+"@",C=A[1]),C=C.replace(f,".");let H=C.split("."),F=S(H,D).join(".");return U+F}function k(C){let D=[],A=0,U=C.length;for(;A<U;){let H=C.charCodeAt(A++);if(H>=55296&&H<=56319&&A<U){let F=C.charCodeAt(A++);(F&64512)==56320?D.push(((H&1023)<<10)+(F&1023)+65536):(D.push(H),A--)}else D.push(H)}return D}let _=C=>String.fromCodePoint(...C),E=function(C){return C>=48&&C<58?26+(C-48):C>=65&&C<91?C-65:C>=97&&C<123?C-97:r},I=function(C,D){return C+22+75*(C<26)-((D!=0)<<5)},x=function(C,D,A){let U=0;for(C=A?p(C/o):C>>1,C+=p(C/D);C>h*l>>1;U+=r)C=p(C/h);return p(U+(h+1)*C/(C+n))},V=function(C){let D=[],A=C.length,U=0,H=a,F=i,ue=C.lastIndexOf(s);ue<0&&(ue=0);for(let ne=0;ne<ue;++ne)C.charCodeAt(ne)>=128&&v("not-basic"),D.push(C.charCodeAt(ne));for(let ne=ue>0?ue+1:0;ne<A;){let oe=U;for(let J=1,ie=r;;ie+=r){ne>=A&&v("invalid-input");let R=E(C.charCodeAt(ne++));R>=r&&v("invalid-input"),R>p((u-U)/J)&&v("overflow"),U+=R*J;let Z=ie<=F?t:ie>=F+l?l:ie-F;if(R<Z)break;let ge=r-Z;J>p(u/ge)&&v("overflow"),J*=ge}let fe=D.length+1;F=x(U-oe,fe,oe==0),p(U/fe)>u-H&&v("overflow"),H+=p(U/fe),U%=fe,D.splice(U++,0,H)}return String.fromCodePoint(...D)},$=function(C){let D=[];C=k(C);let A=C.length,U=a,H=0,F=i;for(let oe of C)oe<128&&D.push(w(oe));let ue=D.length,ne=ue;for(ue&&D.push(s);ne<A;){let oe=u;for(let J of C)J>=U&&J<oe&&(oe=J);let fe=ne+1;oe-U>p((u-H)/fe)&&v("overflow"),H+=(oe-U)*fe,U=oe;for(let J of C)if(J<U&&++H>u&&v("overflow"),J===U){let ie=H;for(let R=r;;R+=r){let Z=R<=F?t:R>=F+l?l:R-F;if(ie<Z)break;let ge=ie-Z,G=r-Z;D.push(w(I(Z+ge%G,0))),ie=p(ge/G)}D.push(w(I(ie,0))),F=x(H,fe,ne===ue),H=0,++ne}++H,++U}return D.join("")};return Pr={version:"2.3.1",ucs2:{decode:k,encode:_},decode:V,encode:$,toASCII:function(C){return y(C,function(D){return d.test(D)?"xn--"+$(D):D})},toUnicode:function(C){return y(C,function(D){return c.test(D)?V(D.slice(4).toLowerCase()):D})}},Pr}var Pr,Ln,Dt,w0=dt(()=>{be(),Ee(),we(),Pr={},Ln=!1,Dt=b0(),Dt.decode,Dt.encode,Dt.toASCII,Dt.toUnicode,Dt.ucs2,Dt.version});function E0(){return Wn||(Wn=!0,zn=function(){if(typeof Symbol!="function"||typeof Object.getOwnPropertySymbols!="function")return!1;if(typeof Symbol.iterator=="symbol")return!0;var u={},r=Symbol("test"),t=Object(r);if(typeof r=="string"||Object.prototype.toString.call(r)!=="[object Symbol]"||Object.prototype.toString.call(t)!=="[object Symbol]")return!1;var l=42;u[r]=l;for(r in u)return!1;if(typeof Object.keys=="function"&&Object.keys(u).length!==0||typeof Object.getOwnPropertyNames=="function"&&Object.getOwnPropertyNames(u).length!==0)return!1;var n=Object.getOwnPropertySymbols(u);if(n.length!==1||n[0]!==r||!Object.prototype.propertyIsEnumerable.call(u,r))return!1;if(typeof Object.getOwnPropertyDescriptor=="function"){var o=Object.getOwnPropertyDescriptor(u,r);if(o.value!==l||o.enumerable!==!0)return!1}return!0}),zn}function v0(){return Gn||(Gn=!0,qn=Error),qn}function k0(){return Kn||(Kn=!0,Hn=EvalError),Hn}function _0(){return Yn||(Yn=!0,Qn=RangeError),Qn}function N0(){return Xn||(Xn=!0,Jn=ReferenceError),Jn}function ua(){return ei||(ei=!0,Zn=SyntaxError),Zn}function yr(){return ri||(ri=!0,ti=TypeError),ti}function x0(){return ni||(ni=!0,oi=URIError),oi}function S0(){if(ii)return Or;ii=!0;var u=typeof Symbol<"u"&&Symbol,r=E0();return Or=function(){return typeof u!="function"||typeof Symbol!="function"||typeof u("foo")!="symbol"||typeof Symbol("bar")!="symbol"?!1:r()},Or}function V0(){if(si)return Mr;si=!0;var u={__proto__:null,foo:{}},r=Object;return Mr=function(){return{__proto__:u}.foo===u.foo&&!(u instanceof r)},Mr}function C0(){if(ai)return Rr;ai=!0;var u="Function.prototype.bind called on incompatible ",r=Object.prototype.toString,t=Math.max,l="[object Function]",n=function(a,s){for(var c=[],d=0;d<a.length;d+=1)c[d]=a[d];for(var f=0;f<s.length;f+=1)c[f+a.length]=s[f];return c},o=function(a,s){for(var c=[],d=s,f=0;d<a.length;d+=1,f+=1)c[f]=a[d];return c},i=function(a,s){for(var c="",d=0;d<a.length;d+=1)c+=a[d],d+1<a.length&&(c+=s);return c};return Rr=function(a){var s=this;if(typeof s!="function"||r.apply(s)!==l)throw new TypeError(u+s);for(var c=o(arguments,1),d,f=function(){if(this instanceof d){var v=s.apply(this,n(c,arguments));return Object(v)===v?v:this}return s.apply(a,n(c,arguments))},m=t(0,s.length-c.length),h=[],p=0;p<m;p++)h[p]="$"+p;if(d=Function("binder","return function ("+i(h,",")+"){ return binder.apply(this,arguments); }")(f),s.prototype){var w=function(){};w.prototype=s.prototype,d.prototype=new w,w.prototype=null}return d},Rr}function Un(){if(li)return jr;li=!0;var u=C0();return jr=Function.prototype.bind||u,jr}function I0(){if(ci)return Lr;ci=!0;var u=Function.prototype.call,r=Object.prototype.hasOwnProperty,t=Un();return Lr=t.call(u,r),Lr}function sr(){if(di)return Ur;di=!0;var u,r=v0(),t=k0(),l=_0(),n=N0(),o=ua(),i=yr(),a=x0(),s=Function,c=function(ne){try{return s('"use strict"; return ('+ne+").constructor;")()}catch{}},d=Object.getOwnPropertyDescriptor;if(d)try{d({},"")}catch{d=null}var f=function(){throw new i},m=d?function(){try{return arguments.callee,f}catch{try{return d(arguments,"callee").get}catch{return f}}}():f,h=S0()(),p=V0()(),w=Object.getPrototypeOf||(p?function(ne){return ne.__proto__}:null),v={},S=typeof Uint8Array>"u"||!w?u:w(Uint8Array),y={__proto__:null,"%AggregateError%":typeof AggregateError>"u"?u:AggregateError,"%Array%":Array,"%ArrayBuffer%":typeof ArrayBuffer>"u"?u:ArrayBuffer,"%ArrayIteratorPrototype%":h&&w?w([][Symbol.iterator]()):u,"%AsyncFromSyncIteratorPrototype%":u,"%AsyncFunction%":v,"%AsyncGenerator%":v,"%AsyncGeneratorFunction%":v,"%AsyncIteratorPrototype%":v,"%Atomics%":typeof Atomics>"u"?u:Atomics,"%BigInt%":typeof BigInt>"u"?u:BigInt,"%BigInt64Array%":typeof BigInt64Array>"u"?u:BigInt64Array,"%BigUint64Array%":typeof BigUint64Array>"u"?u:BigUint64Array,"%Boolean%":Boolean,"%DataView%":typeof DataView>"u"?u:DataView,"%Date%":Date,"%decodeURI%":decodeURI,"%decodeURIComponent%":decodeURIComponent,"%encodeURI%":encodeURI,"%encodeURIComponent%":encodeURIComponent,"%Error%":r,"%eval%":eval,"%EvalError%":t,"%Float32Array%":typeof Float32Array>"u"?u:Float32Array,"%Float64Array%":typeof Float64Array>"u"?u:Float64Array,"%FinalizationRegistry%":typeof FinalizationRegistry>"u"?u:FinalizationRegistry,"%Function%":s,"%GeneratorFunction%":v,"%Int8Array%":typeof Int8Array>"u"?u:Int8Array,"%Int16Array%":typeof Int16Array>"u"?u:Int16Array,"%Int32Array%":typeof Int32Array>"u"?u:Int32Array,"%isFinite%":isFinite,"%isNaN%":isNaN,"%IteratorPrototype%":h&&w?w(w([][Symbol.iterator]())):u,"%JSON%":typeof JSON=="object"?JSON:u,"%Map%":typeof Map>"u"?u:Map,"%MapIteratorPrototype%":typeof Map>"u"||!h||!w?u:w(new Map()[Symbol.iterator]()),"%Math%":Math,"%Number%":Number,"%Object%":Object,"%parseFloat%":parseFloat,"%parseInt%":parseInt,"%Promise%":typeof Promise>"u"?u:Promise,"%Proxy%":typeof Proxy>"u"?u:Proxy,"%RangeError%":l,"%ReferenceError%":n,"%Reflect%":typeof Reflect>"u"?u:Reflect,"%RegExp%":RegExp,"%Set%":typeof Set>"u"?u:Set,"%SetIteratorPrototype%":typeof Set>"u"||!h||!w?u:w(new Set()[Symbol.iterator]()),"%SharedArrayBuffer%":typeof SharedArrayBuffer>"u"?u:SharedArrayBuffer,"%String%":String,"%StringIteratorPrototype%":h&&w?w(""[Symbol.iterator]()):u,"%Symbol%":h?Symbol:u,"%SyntaxError%":o,"%ThrowTypeError%":m,"%TypedArray%":S,"%TypeError%":i,"%Uint8Array%":typeof Uint8Array>"u"?u:Uint8Array,"%Uint8ClampedArray%":typeof Uint8ClampedArray>"u"?u:Uint8ClampedArray,"%Uint16Array%":typeof Uint16Array>"u"?u:Uint16Array,"%Uint32Array%":typeof Uint32Array>"u"?u:Uint32Array,"%URIError%":a,"%WeakMap%":typeof WeakMap>"u"?u:WeakMap,"%WeakRef%":typeof WeakRef>"u"?u:WeakRef,"%WeakSet%":typeof WeakSet>"u"?u:WeakSet};if(w)try{null.error}catch(ne){var k=w(w(ne));y["%Error.prototype%"]=k}var _=function ne(oe){var fe;if(oe==="%AsyncFunction%")fe=c("async function () {}");else if(oe==="%GeneratorFunction%")fe=c("function* () {}");else if(oe==="%AsyncGeneratorFunction%")fe=c("async function* () {}");else if(oe==="%AsyncGenerator%"){var J=ne("%AsyncGeneratorFunction%");J&&(fe=J.prototype)}else if(oe==="%AsyncIteratorPrototype%"){var ie=ne("%AsyncGenerator%");ie&&w&&(fe=w(ie.prototype))}return y[oe]=fe,fe},E={__proto__:null,"%ArrayBufferPrototype%":["ArrayBuffer","prototype"],"%ArrayPrototype%":["Array","prototype"],"%ArrayProto_entries%":["Array","prototype","entries"],"%ArrayProto_forEach%":["Array","prototype","forEach"],"%ArrayProto_keys%":["Array","prototype","keys"],"%ArrayProto_values%":["Array","prototype","values"],"%AsyncFunctionPrototype%":["AsyncFunction","prototype"],"%AsyncGenerator%":["AsyncGeneratorFunction","prototype"],"%AsyncGeneratorPrototype%":["AsyncGeneratorFunction","prototype","prototype"],"%BooleanPrototype%":["Boolean","prototype"],"%DataViewPrototype%":["DataView","prototype"],"%DatePrototype%":["Date","prototype"],"%ErrorPrototype%":["Error","prototype"],"%EvalErrorPrototype%":["EvalError","prototype"],"%Float32ArrayPrototype%":["Float32Array","prototype"],"%Float64ArrayPrototype%":["Float64Array","prototype"],"%FunctionPrototype%":["Function","prototype"],"%Generator%":["GeneratorFunction","prototype"],"%GeneratorPrototype%":["GeneratorFunction","prototype","prototype"],"%Int8ArrayPrototype%":["Int8Array","prototype"],"%Int16ArrayPrototype%":["Int16Array","prototype"],"%Int32ArrayPrototype%":["Int32Array","prototype"],"%JSONParse%":["JSON","parse"],"%JSONStringify%":["JSON","stringify"],"%MapPrototype%":["Map","prototype"],"%NumberPrototype%":["Number","prototype"],"%ObjectPrototype%":["Object","prototype"],"%ObjProto_toString%":["Object","prototype","toString"],"%ObjProto_valueOf%":["Object","prototype","valueOf"],"%PromisePrototype%":["Promise","prototype"],"%PromiseProto_then%":["Promise","prototype","then"],"%Promise_all%":["Promise","all"],"%Promise_reject%":["Promise","reject"],"%Promise_resolve%":["Promise","resolve"],"%RangeErrorPrototype%":["RangeError","prototype"],"%ReferenceErrorPrototype%":["ReferenceError","prototype"],"%RegExpPrototype%":["RegExp","prototype"],"%SetPrototype%":["Set","prototype"],"%SharedArrayBufferPrototype%":["SharedArrayBuffer","prototype"],"%StringPrototype%":["String","prototype"],"%SymbolPrototype%":["Symbol","prototype"],"%SyntaxErrorPrototype%":["SyntaxError","prototype"],"%TypedArrayPrototype%":["TypedArray","prototype"],"%TypeErrorPrototype%":["TypeError","prototype"],"%Uint8ArrayPrototype%":["Uint8Array","prototype"],"%Uint8ClampedArrayPrototype%":["Uint8ClampedArray","prototype"],"%Uint16ArrayPrototype%":["Uint16Array","prototype"],"%Uint32ArrayPrototype%":["Uint32Array","prototype"],"%URIErrorPrototype%":["URIError","prototype"],"%WeakMapPrototype%":["WeakMap","prototype"],"%WeakSetPrototype%":["WeakSet","prototype"]},I=Un(),x=I0(),V=I.call(Function.call,Array.prototype.concat),$=I.call(Function.apply,Array.prototype.splice),C=I.call(Function.call,String.prototype.replace),D=I.call(Function.call,String.prototype.slice),A=I.call(Function.call,RegExp.prototype.exec),U=/[^%.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|%$))/g,H=/\\(\\)?/g,F=function(ne){var oe=D(ne,0,1),fe=D(ne,-1);if(oe==="%"&&fe!=="%")throw new o("invalid intrinsic syntax, expected closing `%`");if(fe==="%"&&oe!=="%")throw new o("invalid intrinsic syntax, expected opening `%`");var J=[];return C(ne,U,function(ie,R,Z,ge){J[J.length]=Z?C(ge,H,"$1"):R||ie}),J},ue=function(ne,oe){var fe=ne,J;if(x(E,fe)&&(J=E[fe],fe="%"+J[0]+"%"),x(y,fe)){var ie=y[fe];if(ie===v&&(ie=_(fe)),typeof ie>"u"&&!oe)throw new i("intrinsic "+ne+" exists, but is not available. Please file an issue!");return{alias:J,name:fe,value:ie}}throw new o("intrinsic "+ne+" does not exist!")};return Ur=function(ne,oe){if(typeof ne!="string"||ne.length===0)throw new i("intrinsic name must be a non-empty string");if(arguments.length>1&&typeof oe!="boolean")throw new i('"allowMissing" argument must be a boolean');if(A(/^%?[^%]*%?$/,ne)===null)throw new o("`%` may not be present anywhere but at the beginning and end of the intrinsic name");var fe=F(ne),J=fe.length>0?fe[0]:"",ie=ue("%"+J+"%",oe),R=ie.name,Z=ie.value,ge=!1,G=ie.alias;G&&(J=G[0],$(fe,V([0,1],G)));for(var Ve=1,ee=!0;Ve<fe.length;Ve+=1){var q=fe[Ve],ce=D(q,0,1),X=D(q,-1);if((ce==='"'||ce==="'"||ce==="`"||X==='"'||X==="'"||X==="`")&&ce!==X)throw new o("property names with quotes must have matching quotes");if((q==="constructor"||!ee)&&(ge=!0),J+="."+q,R="%"+J+"%",x(y,R))Z=y[R];else if(Z!=null){if(!(q in Z)){if(!oe)throw new i("base intrinsic for "+ne+" exists, but the property is not available.");return}if(d&&Ve+1>=fe.length){var re=d(Z,q);ee=!!re,ee&&"get"in re&&!("originalValue"in re.get)?Z=re.get:Z=Z[q]}else ee=x(Z,q),Z=Z[q];ee&&!ge&&(y[R]=Z)}}return Z},Ur}function Fn(){if(ui)return Fr;ui=!0;var u=sr(),r=u("%Object.defineProperty%",!0)||!1;if(r)try{r({},"a",{value:1})}catch{r=!1}return Fr=r,Fr}function fa(){if(fi)return zr;fi=!0;var u=sr(),r=u("%Object.getOwnPropertyDescriptor%",!0);if(r)try{r([],"length")}catch{r=null}return zr=r,zr}function A0(){if(pi)return Wr;pi=!0;var u=Fn(),r=ua(),t=yr(),l=fa();return Wr=function(n,o,i){if(!n||typeof n!="object"&&typeof n!="function")throw new t("`obj` must be an object or a function`");if(typeof o!="string"&&typeof o!="symbol")throw new t("`property` must be a string or a symbol`");if(arguments.length>3&&typeof arguments[3]!="boolean"&&arguments[3]!==null)throw new t("`nonEnumerable`, if provided, must be a boolean or null");if(arguments.length>4&&typeof arguments[4]!="boolean"&&arguments[4]!==null)throw new t("`nonWritable`, if provided, must be a boolean or null");if(arguments.length>5&&typeof arguments[5]!="boolean"&&arguments[5]!==null)throw new t("`nonConfigurable`, if provided, must be a boolean or null");if(arguments.length>6&&typeof arguments[6]!="boolean")throw new t("`loose`, if provided, must be a boolean");var a=arguments.length>3?arguments[3]:null,s=arguments.length>4?arguments[4]:null,c=arguments.length>5?arguments[5]:null,d=arguments.length>6?arguments[6]:!1,f=!!l&&l(n,o);if(u)u(n,o,{configurable:c===null&&f?f.configurable:!c,enumerable:a===null&&f?f.enumerable:!a,value:i,writable:s===null&&f?f.writable:!s});else if(d||!a&&!s&&!c)n[o]=i;else throw new r("This environment does not support defining a property as non-configurable, non-writable, or non-enumerable.")},Wr}function $0(){if(hi)return qr;hi=!0;var u=Fn(),r=function(){return!!u};return r.hasArrayLengthDefineBug=function(){if(!u)return null;try{return u([],"length",{value:1}).length!==1}catch{return!0}},qr=r,qr}function T0(){if(mi)return Gr;mi=!0;var u=sr(),r=A0(),t=$0()(),l=fa(),n=yr(),o=u("%Math.floor%");return Gr=function(i,a){if(typeof i!="function")throw new n("`fn` is not a function");if(typeof a!="number"||a<0||a>4294967295||o(a)!==a)throw new n("`length` must be a positive 32-bit integer");var s=arguments.length>2&&!!arguments[2],c=!0,d=!0;if("length"in i&&l){var f=l(i,"length");f&&!f.configurable&&(c=!1),f&&!f.writable&&(d=!1)}return(c||d||!s)&&(t?r(i,"length",a,!0,!0):r(i,"length",a)),i},Gr}function B0(){if(gi)return ar;gi=!0;var u=Un(),r=sr(),t=T0(),l=yr(),n=r("%Function.prototype.apply%"),o=r("%Function.prototype.call%"),i=r("%Reflect.apply%",!0)||u.call(o,n),a=Fn(),s=r("%Math.max%");ar=function(d){if(typeof d!="function")throw new l("a function is required");var f=i(u,o,arguments);return t(f,1+s(0,d.length-(arguments.length-1)),!0)};var c=function(){return i(u,n,arguments)};return a?a(ar,"apply",{value:c}):ar.apply=c,ar}function D0(){if(yi)return Hr;yi=!0;var u=sr(),r=B0(),t=r(u("String.prototype.indexOf"));return Hr=function(l,n){var o=u(l,!!n);return typeof o=="function"&&t(l,".prototype.")>-1?r(o):o},Hr}var zn,Wn,qn,Gn,Hn,Kn,Qn,Yn,Jn,Xn,Zn,ei,ti,ri,oi,ni,Or,ii,Mr,si,Rr,ai,jr,li,Lr,ci,Ur,di,Fr,ui,zr,fi,Wr,pi,qr,hi,Gr,mi,ar,gi,Hr,yi,P0=dt(()=>{be(),Ee(),we(),zn={},Wn=!1,qn={},Gn=!1,Hn={},Kn=!1,Qn={},Yn=!1,Jn={},Xn=!1,Zn={},ei=!1,ti={},ri=!1,oi={},ni=!1,Or={},ii=!1,Mr={},si=!1,Rr={},ai=!1,jr={},li=!1,Lr={},ci=!1,Ur={},di=!1,Fr={},ui=!1,zr={},fi=!1,Wr={},pi=!1,qr={},hi=!1,Gr={},mi=!1,ar={},gi=!1,Hr={},yi=!1});function bi(u){throw new Error("Node.js process "+u+" is not supported by JSPM core outside of Node.js")}function O0(){!Qt||!Yt||(Qt=!1,Yt.length?yt=Yt.concat(yt):br=-1,yt.length&&pa())}function pa(){if(!Qt){var u=setTimeout(O0,0);Qt=!0;for(var r=yt.length;r;){for(Yt=yt,yt=[];++br<r;)Yt&&Yt[br].run();br=-1,r=yt.length}Yt=null,Qt=!1,clearTimeout(u)}}function M0(u){var r=new Array(arguments.length-1);if(arguments.length>1)for(var t=1;t<arguments.length;t++)r[t-1]=arguments[t];yt.push(new ha(u,r)),yt.length===1&&!Qt&&setTimeout(pa,0)}function ha(u,r){this.fun=u,this.array=r}function st(){}function R0(u){bi("_linkedBinding")}function j0(u){bi("dlopen")}function L0(){return[]}function U0(){return[]}function F0(u,r){if(!u)throw new Error(r||"assertion error")}function z0(){return!1}function W0(){return Ct.now()/1e3}function wi(u){var r=Math.floor((Date.now()-Ct.now())*.001),t=Ct.now()*.001,l=Math.floor(t)+r,n=Math.floor(t%1*1e9);return u&&(l=l-u[0],n=n-u[1],n<0&&(l--,n+=Qr)),[l,n]}function Pt(){return vi}function q0(u){return[]}var yt,Qt,Yt,br,ma,ga,ya,ba,wa,Ea,va,ka,_a,Na,xa,Sa,Va,Ca,Ia,Aa,$a,Ta,Ba,Da,Pa,Kr,Oa,Ma,Ra,ja,La,Ua,Fa,za,Wa,qa,Ga,Ha,Ka,Qa,Ya,Ja,Xa,Za,el,tl,rl,ol,nl,il,sl,Ct,Ei,Qr,al,ll,cl,dl,ul,fl,pl,hl,ml,gl,yl,vi,bl=dt(()=>{be(),Ee(),we(),yt=[],Qt=!1,br=-1,ha.prototype.run=function(){this.fun.apply(null,this.array)},ma="browser",ga="x64",ya="browser",ba={PATH:"/usr/bin",LANG:navigator.language+".UTF-8",PWD:"/",HOME:"/home",TMP:"/tmp"},wa=["/usr/bin/node"],Ea=[],va="v16.8.0",ka={},_a=function(u,r){console.warn((r?r+": ":"")+u)},Na=function(u){bi("binding")},xa=function(u){return 0},Sa=function(){return"/"},Va=function(u){},Ca={name:"node",sourceUrl:"",headersUrl:"",libUrl:""},Ia=st,Aa=[],$a={},Ta=!1,Ba={},Da=st,Pa=st,Kr=function(){return{}},Oa=Kr,Ma=Kr,Ra=st,ja=st,La=st,Ua={},Fa={inspector:!1,debug:!1,uv:!1,ipv6:!1,tls_alpn:!1,tls_sni:!1,tls_ocsp:!1,tls:!1,cached_builtins:!0},za=st,Wa=st,qa=st,Ga=st,Ha=st,Ka=st,Qa=st,Ya=void 0,Ja=void 0,Xa=void 0,Za=st,el=2,tl=1,rl="/bin/usr/node",ol=9229,nl="node",il=[],sl=st,Ct={now:typeof performance<"u"?performance.now.bind(performance):void 0,timing:typeof performance<"u"?performance.timing:void 0},Ct.now===void 0&&(Ei=Date.now(),Ct.timing&&Ct.timing.navigationStart&&(Ei=Ct.timing.navigationStart),Ct.now=()=>Date.now()-Ei),Qr=1e9,wi.bigint=function(u){var r=wi(u);return typeof BigInt>"u"?r[0]*Qr+r[1]:BigInt(r[0]*Qr)+BigInt(r[1])},al=10,ll={},cl=0,dl=Pt,ul=Pt,fl=Pt,pl=Pt,hl=Pt,ml=st,gl=Pt,yl=Pt,vi={version:va,versions:ka,arch:ga,platform:ya,release:Ca,_rawDebug:Ia,moduleLoadList:Aa,binding:Na,_linkedBinding:R0,_events:ll,_eventsCount:cl,_maxListeners:al,on:Pt,addListener:dl,once:ul,off:fl,removeListener:pl,removeAllListeners:hl,emit:ml,prependListener:gl,prependOnceListener:yl,listeners:q0,domain:$a,_exiting:Ta,config:Ba,dlopen:j0,uptime:W0,_getActiveRequests:L0,_getActiveHandles:U0,reallyExit:Da,_kill:Pa,cpuUsage:Kr,resourceUsage:Oa,memoryUsage:Ma,kill:Ra,exit:ja,openStdin:La,allowedNodeEnvironmentFlags:Ua,assert:F0,features:Fa,_fatalExceptions:za,setUncaughtExceptionCaptureCallback:Wa,hasUncaughtExceptionCaptureCallback:z0,emitWarning:_a,nextTick:M0,_tickCallback:qa,_debugProcess:Ga,_debugEnd:Ha,_startProfilerIdleNotifier:Ka,_stopProfilerIdleNotifier:Qa,stdout:Ya,stdin:Xa,stderr:Ja,abort:Za,umask:xa,chdir:Va,cwd:Sa,env:ba,title:ma,argv:wa,execArgv:Ea,pid:el,ppid:tl,execPath:rl,debugPort:ol,hrtime:wi,argv0:nl,_preload_modules:il,setSourceMapsEnabled:sl}});function G0(){if(ki)return Yr;ki=!0;var u=vi;function r(o){if(typeof o!="string")throw new TypeError("Path must be a string. Received "+JSON.stringify(o))}function t(o,i){for(var a="",s=0,c=-1,d=0,f,m=0;m<=o.length;++m){if(m<o.length)f=o.charCodeAt(m);else{if(f===47)break;f=47}if(f===47){if(!(c===m-1||d===1))if(c!==m-1&&d===2){if(a.length<2||s!==2||a.charCodeAt(a.length-1)!==46||a.charCodeAt(a.length-2)!==46){if(a.length>2){var h=a.lastIndexOf("/");if(h!==a.length-1){h===-1?(a="",s=0):(a=a.slice(0,h),s=a.length-1-a.lastIndexOf("/")),c=m,d=0;continue}}else if(a.length===2||a.length===1){a="",s=0,c=m,d=0;continue}}i&&(a.length>0?a+="/..":a="..",s=2)}else a.length>0?a+="/"+o.slice(c+1,m):a=o.slice(c+1,m),s=m-c-1;c=m,d=0}else f===46&&d!==-1?++d:d=-1}return a}function l(o,i){var a=i.dir||i.root,s=i.base||(i.name||"")+(i.ext||"");return a?a===i.root?a+s:a+o+s:s}var n={resolve:function(){for(var o="",i=!1,a,s=arguments.length-1;s>=-1&&!i;s--){var c;s>=0?c=arguments[s]:(a===void 0&&(a=u.cwd()),c=a),r(c),c.length!==0&&(o=c+"/"+o,i=c.charCodeAt(0)===47)}return o=t(o,!i),i?o.length>0?"/"+o:"/":o.length>0?o:"."},normalize:function(o){if(r(o),o.length===0)return".";var i=o.charCodeAt(0)===47,a=o.charCodeAt(o.length-1)===47;return o=t(o,!i),o.length===0&&!i&&(o="."),o.length>0&&a&&(o+="/"),i?"/"+o:o},isAbsolute:function(o){return r(o),o.length>0&&o.charCodeAt(0)===47},join:function(){if(arguments.length===0)return".";for(var o,i=0;i<arguments.length;++i){var a=arguments[i];r(a),a.length>0&&(o===void 0?o=a:o+="/"+a)}return o===void 0?".":n.normalize(o)},relative:function(o,i){if(r(o),r(i),o===i||(o=n.resolve(o),i=n.resolve(i),o===i))return"";for(var a=1;a<o.length&&o.charCodeAt(a)===47;++a);for(var s=o.length,c=s-a,d=1;d<i.length&&i.charCodeAt(d)===47;++d);for(var f=i.length,m=f-d,h=c<m?c:m,p=-1,w=0;w<=h;++w){if(w===h){if(m>h){if(i.charCodeAt(d+w)===47)return i.slice(d+w+1);if(w===0)return i.slice(d+w)}else c>h&&(o.charCodeAt(a+w)===47?p=w:w===0&&(p=0));break}var v=o.charCodeAt(a+w),S=i.charCodeAt(d+w);if(v!==S)break;v===47&&(p=w)}var y="";for(w=a+p+1;w<=s;++w)(w===s||o.charCodeAt(w)===47)&&(y.length===0?y+="..":y+="/..");return y.length>0?y+i.slice(d+p):(d+=p,i.charCodeAt(d)===47&&++d,i.slice(d))},_makeLong:function(o){return o},dirname:function(o){if(r(o),o.length===0)return".";for(var i=o.charCodeAt(0),a=i===47,s=-1,c=!0,d=o.length-1;d>=1;--d)if(i=o.charCodeAt(d),i===47){if(!c){s=d;break}}else c=!1;return s===-1?a?"/":".":a&&s===1?"//":o.slice(0,s)},basename:function(o,i){if(i!==void 0&&typeof i!="string")throw new TypeError('"ext" argument must be a string');r(o);var a=0,s=-1,c=!0,d;if(i!==void 0&&i.length>0&&i.length<=o.length){if(i.length===o.length&&i===o)return"";var f=i.length-1,m=-1;for(d=o.length-1;d>=0;--d){var h=o.charCodeAt(d);if(h===47){if(!c){a=d+1;break}}else m===-1&&(c=!1,m=d+1),f>=0&&(h===i.charCodeAt(f)?--f===-1&&(s=d):(f=-1,s=m))}return a===s?s=m:s===-1&&(s=o.length),o.slice(a,s)}else{for(d=o.length-1;d>=0;--d)if(o.charCodeAt(d)===47){if(!c){a=d+1;break}}else s===-1&&(c=!1,s=d+1);return s===-1?"":o.slice(a,s)}},extname:function(o){r(o);for(var i=-1,a=0,s=-1,c=!0,d=0,f=o.length-1;f>=0;--f){var m=o.charCodeAt(f);if(m===47){if(!c){a=f+1;break}continue}s===-1&&(c=!1,s=f+1),m===46?i===-1?i=f:d!==1&&(d=1):i!==-1&&(d=-1)}return i===-1||s===-1||d===0||d===1&&i===s-1&&i===a+1?"":o.slice(i,s)},format:function(o){if(o===null||typeof o!="object")throw new TypeError('The "pathObject" argument must be of type Object. Received type '+typeof o);return l("/",o)},parse:function(o){r(o);var i={root:"",dir:"",base:"",ext:"",name:""};if(o.length===0)return i;var a=o.charCodeAt(0),s=a===47,c;s?(i.root="/",c=1):c=0;for(var d=-1,f=0,m=-1,h=!0,p=o.length-1,w=0;p>=c;--p){if(a=o.charCodeAt(p),a===47){if(!h){f=p+1;break}continue}m===-1&&(h=!1,m=p+1),a===46?d===-1?d=p:w!==1&&(w=1):d!==-1&&(w=-1)}return d===-1||m===-1||w===0||w===1&&d===m-1&&d===f+1?m!==-1&&(f===0&&s?i.base=i.name=o.slice(1,m):i.base=i.name=o.slice(f,m)):(f===0&&s?(i.name=o.slice(1,d),i.base=o.slice(1,m)):(i.name=o.slice(f,d),i.base=o.slice(f,m)),i.ext=o.slice(d,m)),f>0?i.dir=o.slice(0,f-1):s&&(i.dir="/"),i},sep:"/",delimiter:":",win32:null,posix:null};return n.posix=n,Yr=n,Yr}var Yr,ki,_i,H0=dt(()=>{be(),Ee(),we(),bl(),Yr={},ki=!1,_i=G0()}),wl={};tr(wl,{URL:()=>Al,Url:()=>xl,default:()=>at,fileURLToPath:()=>vl,format:()=>Sl,parse:()=>Il,pathToFileURL:()=>kl,resolve:()=>Vl,resolveObject:()=>Cl});function K0(){if(xi)return Jr;xi=!0;var u=typeof Map=="function"&&Map.prototype,r=Object.getOwnPropertyDescriptor&&u?Object.getOwnPropertyDescriptor(Map.prototype,"size"):null,t=u&&r&&typeof r.get=="function"?r.get:null,l=u&&Map.prototype.forEach,n=typeof Set=="function"&&Set.prototype,o=Object.getOwnPropertyDescriptor&&n?Object.getOwnPropertyDescriptor(Set.prototype,"size"):null,i=n&&o&&typeof o.get=="function"?o.get:null,a=n&&Set.prototype.forEach,s=typeof WeakMap=="function"&&WeakMap.prototype,c=s?WeakMap.prototype.has:null,d=typeof WeakSet=="function"&&WeakSet.prototype,f=d?WeakSet.prototype.has:null,m=typeof WeakRef=="function"&&WeakRef.prototype,h=m?WeakRef.prototype.deref:null,p=Boolean.prototype.valueOf,w=Object.prototype.toString,v=Function.prototype.toString,S=String.prototype.match,y=String.prototype.slice,k=String.prototype.replace,_=String.prototype.toUpperCase,E=String.prototype.toLowerCase,I=RegExp.prototype.test,x=Array.prototype.concat,V=Array.prototype.join,$=Array.prototype.slice,C=Math.floor,D=typeof BigInt=="function"?BigInt.prototype.valueOf:null,A=Object.getOwnPropertySymbols,U=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?Symbol.prototype.toString:null,H=typeof Symbol=="function"&&typeof Symbol.iterator=="object",F=typeof Symbol=="function"&&Symbol.toStringTag&&(typeof Symbol.toStringTag===H||!0)?Symbol.toStringTag:null,ue=Object.prototype.propertyIsEnumerable,ne=(typeof Reflect=="function"?Reflect.getPrototypeOf:Object.getPrototypeOf)||([].__proto__===Array.prototype?function(B){return B.__proto__}:null);function oe(B,P){if(B===1/0||B===-1/0||B!==B||B&&B>-1e3&&B<1e3||I.call(/e/,P))return P;var me=/[0-9](?=(?:[0-9]{3})+(?![0-9]))/g;if(typeof B=="number"){var Ne=B<0?-C(-B):C(B);if(Ne!==B){var xe=String(Ne),De=y.call(P,xe.length+1);return k.call(xe,me,"$&_")+"."+k.call(k.call(De,/([0-9]{3})/g,"$&_"),/_$/,"")}}return k.call(P,me,"$&_")}var fe=_l,J=fe.custom,ie=re(J)?J:null;Jr=function B(P,me,Ne,xe){var De=me||{};if(se(De,"quoteStyle")&&De.quoteStyle!=="single"&&De.quoteStyle!=="double")throw new TypeError('option "quoteStyle" must be "single" or "double"');if(se(De,"maxStringLength")&&(typeof De.maxStringLength=="number"?De.maxStringLength<0&&De.maxStringLength!==1/0:De.maxStringLength!==null))throw new TypeError('option "maxStringLength", if provided, must be a positive integer, Infinity, or `null`');var Ge=se(De,"customInspect")?De.customInspect:!0;if(typeof Ge!="boolean"&&Ge!=="symbol")throw new TypeError("option \"customInspect\", if provided, must be `true`, `false`, or `'symbol'`");if(se(De,"indent")&&De.indent!==null&&De.indent!==" "&&!(parseInt(De.indent,10)===De.indent&&De.indent>0))throw new TypeError('option "indent" must be "\\t", an integer > 0, or `null`');if(se(De,"numericSeparator")&&typeof De.numericSeparator!="boolean")throw new TypeError('option "numericSeparator", if provided, must be `true` or `false`');var et=De.numericSeparator;if(typeof P>"u")return"undefined";if(P===null)return"null";if(typeof P=="boolean")return P?"true":"false";if(typeof P=="string")return de(P,De);if(typeof P=="number"){if(P===0)return 1/0/P>0?"0":"-0";var Re=String(P);return et?oe(P,Re):Re}if(typeof P=="bigint"){var He=String(P)+"n";return et?oe(P,He):He}var Pe=typeof De.depth>"u"?5:De.depth;if(typeof Ne>"u"&&(Ne=0),Ne>=Pe&&Pe>0&&typeof P=="object")return ge(P)?"[Array]":"[Object]";var Ue=L(De,Ne);if(typeof xe>"u")xe=[];else if(ae(xe,P)>=0)return"[Circular]";function qe(bt,jt,Zt){if(jt&&(xe=$.call(xe),xe.push(jt)),Zt){var wt={depth:De.depth};return se(De,"quoteStyle")&&(wt.quoteStyle=De.quoteStyle),B(bt,wt,Ne+1,xe)}return B(bt,De,Ne+1,xe)}if(typeof P=="function"&&!Ve(P)){var Ze=K(P),nt=le(P,qe);return"[Function"+(Ze?": "+Ze:" (anonymous)")+"]"+(nt.length>0?" { "+V.call(nt,", ")+" }":"")}if(re(P)){var ht=H?k.call(String(P),/^(Symbol\(.*\))_[^)]*$/,"$1"):U.call(P);return typeof P=="object"&&!H?g(ht):ht}if(ke(P)){for(var M="<"+E.call(String(P.nodeName)),z=P.attributes||[],Ce=0;Ce<z.length;Ce++)M+=" "+z[Ce].name+"="+R(Z(z[Ce].value),"double",De);return M+=">",P.childNodes&&P.childNodes.length&&(M+="..."),M+="</"+E.call(String(P.nodeName))+">",M}if(ge(P)){if(P.length===0)return"[]";var Ie=le(P,qe);return Ue&&!T(Ie)?"["+Y(Ie,Ue)+"]":"[ "+V.call(Ie,", ")+" ]"}if(ee(P)){var Te=le(P,qe);return!("cause"in Error.prototype)&&"cause"in P&&!ue.call(P,"cause")?"{ ["+String(P)+"] "+V.call(x.call("[cause]: "+qe(P.cause),Te),", ")+" }":Te.length===0?"["+String(P)+"]":"{ ["+String(P)+"] "+V.call(Te,", ")+" }"}if(typeof P=="object"&&Ge){if(ie&&typeof P[ie]=="function"&&fe)return fe(P,{depth:Pe-Ne});if(Ge!=="symbol"&&typeof P.inspect=="function")return P.inspect()}if(he(P)){var tt=[];return l&&l.call(P,function(bt,jt){tt.push(qe(jt,P,!0)+" => "+qe(bt,P))}),N("Map",t.call(P),tt,Ue)}if(Q(P)){var ct=[];return a&&a.call(P,function(bt){ct.push(qe(bt,P))}),N("Set",i.call(P),ct,Ue)}if(pe(P))return b("WeakMap");if(ye(P))return b("WeakSet");if(ve(P))return b("WeakRef");if(ce(P))return g(qe(Number(P)));if(O(P))return g(qe(D.call(P)));if(X(P))return g(p.call(P));if(q(P))return g(qe(String(P)));if(typeof window<"u"&&P===window)return"{ [object Window] }";if(typeof globalThis<"u"&&P===globalThis||typeof Xr<"u"&&P===Xr)return"{ [object globalThis] }";if(!G(P)&&!Ve(P)){var mt=le(P,qe),vr=ne?ne(P)===Object.prototype:P instanceof Object||P.constructor===Object,kr=P instanceof Object?"":"null prototype",_r=!vr&&F&&Object(P)===P&&F in P?y.call(j(P),8,-1):kr?"Object":"",uo=vr||typeof P.constructor!="function"?"":P.constructor.name?P.constructor.name+" ":"",Xt=uo+(_r||kr?"["+V.call(x.call([],_r||[],kr||[]),": ")+"] ":"");return mt.length===0?Xt+"{}":Ue?Xt+"{"+Y(mt,Ue)+"}":Xt+"{ "+V.call(mt,", ")+" }"}return String(P)};function R(B,P,me){var Ne=(me.quoteStyle||P)==="double"?'"':"'";return Ne+B+Ne}function Z(B){return k.call(String(B),/"/g,"&quot;")}function ge(B){return j(B)==="[object Array]"&&(!F||!(typeof B=="object"&&F in B))}function G(B){return j(B)==="[object Date]"&&(!F||!(typeof B=="object"&&F in B))}function Ve(B){return j(B)==="[object RegExp]"&&(!F||!(typeof B=="object"&&F in B))}function ee(B){return j(B)==="[object Error]"&&(!F||!(typeof B=="object"&&F in B))}function q(B){return j(B)==="[object String]"&&(!F||!(typeof B=="object"&&F in B))}function ce(B){return j(B)==="[object Number]"&&(!F||!(typeof B=="object"&&F in B))}function X(B){return j(B)==="[object Boolean]"&&(!F||!(typeof B=="object"&&F in B))}function re(B){if(H)return B&&typeof B=="object"&&B instanceof Symbol;if(typeof B=="symbol")return!0;if(!B||typeof B!="object"||!U)return!1;try{return U.call(B),!0}catch{}return!1}function O(B){if(!B||typeof B!="object"||!D)return!1;try{return D.call(B),!0}catch{}return!1}var te=Object.prototype.hasOwnProperty||function(B){return B in(this||Xr)};function se(B,P){return te.call(B,P)}function j(B){return w.call(B)}function K(B){if(B.name)return B.name;var P=S.call(v.call(B),/^function\s*([\w$]+)/);return P?P[1]:null}function ae(B,P){if(B.indexOf)return B.indexOf(P);for(var me=0,Ne=B.length;me<Ne;me++)if(B[me]===P)return me;return-1}function he(B){if(!t||!B||typeof B!="object")return!1;try{t.call(B);try{i.call(B)}catch{return!0}return B instanceof Map}catch{}return!1}function pe(B){if(!c||!B||typeof B!="object")return!1;try{c.call(B,c);try{f.call(B,f)}catch{return!0}return B instanceof WeakMap}catch{}return!1}function ve(B){if(!h||!B||typeof B!="object")return!1;try{return h.call(B),!0}catch{}return!1}function Q(B){if(!i||!B||typeof B!="object")return!1;try{i.call(B);try{t.call(B)}catch{return!0}return B instanceof Set}catch{}return!1}function ye(B){if(!f||!B||typeof B!="object")return!1;try{f.call(B,f);try{c.call(B,c)}catch{return!0}return B instanceof WeakSet}catch{}return!1}function ke(B){return!B||typeof B!="object"?!1:typeof HTMLElement<"u"&&B instanceof HTMLElement?!0:typeof B.nodeName=="string"&&typeof B.getAttribute=="function"}function de(B,P){if(B.length>P.maxStringLength){var me=B.length-P.maxStringLength,Ne="... "+me+" more character"+(me>1?"s":"");return de(y.call(B,0,P.maxStringLength),P)+Ne}var xe=k.call(k.call(B,/(['\\])/g,"\\$1"),/[\x00-\x1f]/g,Ae);return R(xe,"single",P)}function Ae(B){var P=B.charCodeAt(0),me={8:"b",9:"t",10:"n",12:"f",13:"r"}[P];return me?"\\"+me:"\\x"+(P<16?"0":"")+_.call(P.toString(16))}function g(B){return"Object("+B+")"}function b(B){return B+" { ? }"}function N(B,P,me,Ne){var xe=Ne?Y(me,Ne):V.call(me,", ");return B+" ("+P+") {"+xe+"}"}function T(B){for(var P=0;P<B.length;P++)if(ae(B[P],`
9
+ `)>=0)return!1;return!0}function L(B,P){var me;if(B.indent===" ")me=" ";else if(typeof B.indent=="number"&&B.indent>0)me=V.call(Array(B.indent+1)," ");else return null;return{base:me,prev:V.call(Array(P+1),me)}}function Y(B,P){if(B.length===0)return"";var me=`
10
+ `+P.prev+P.base;return me+V.call(B,","+me)+`
11
+ `+P.prev}function le(B,P){var me=ge(B),Ne=[];if(me){Ne.length=B.length;for(var xe=0;xe<B.length;xe++)Ne[xe]=se(B,xe)?P(B[xe],B):""}var De=typeof A=="function"?A(B):[],Ge;if(H){Ge={};for(var et=0;et<De.length;et++)Ge["$"+De[et]]=De[et]}for(var Re in B)se(B,Re)&&(me&&String(Number(Re))===Re&&Re<B.length||H&&Ge["$"+Re]instanceof Symbol||(I.call(/[^\w$]/,Re)?Ne.push(P(Re,B)+": "+P(B[Re],B)):Ne.push(Re+": "+P(B[Re],B))));if(typeof A=="function")for(var He=0;He<De.length;He++)ue.call(B,De[He])&&Ne.push("["+P(De[He])+"]: "+P(B[De[He]],B));return Ne}return Jr}function Q0(){if(Si)return Zr;Si=!0;var u=sr(),r=D0(),t=K0(),l=yr(),n=u("%WeakMap%",!0),o=u("%Map%",!0),i=r("WeakMap.prototype.get",!0),a=r("WeakMap.prototype.set",!0),s=r("WeakMap.prototype.has",!0),c=r("Map.prototype.get",!0),d=r("Map.prototype.set",!0),f=r("Map.prototype.has",!0),m=function(v,S){for(var y=v,k;(k=y.next)!==null;y=k)if(k.key===S)return y.next=k.next,k.next=v.next,v.next=k,k},h=function(v,S){var y=m(v,S);return y&&y.value},p=function(v,S,y){var k=m(v,S);k?k.value=y:v.next={key:S,next:v.next,value:y}},w=function(v,S){return!!m(v,S)};return Zr=function(){var v,S,y,k={assert:function(_){if(!k.has(_))throw new l("Side channel does not contain "+t(_))},get:function(_){if(n&&_&&(typeof _=="object"||typeof _=="function")){if(v)return i(v,_)}else if(o){if(S)return c(S,_)}else if(y)return h(y,_)},has:function(_){if(n&&_&&(typeof _=="object"||typeof _=="function")){if(v)return s(v,_)}else if(o){if(S)return f(S,_)}else if(y)return w(y,_);return!1},set:function(_,E){n&&_&&(typeof _=="object"||typeof _=="function")?(v||(v=new n),a(v,_,E)):o?(S||(S=new o),d(S,_,E)):(y||(y={key:{},next:null}),p(y,_,E))}};return k},Zr}function Ni(){if(Vi)return eo;Vi=!0;var u=String.prototype.replace,r=/%20/g,t={RFC1738:"RFC1738",RFC3986:"RFC3986"};return eo={default:t.RFC3986,formatters:{RFC1738:function(l){return u.call(l,r,"+")},RFC3986:function(l){return String(l)}},RFC1738:t.RFC1738,RFC3986:t.RFC3986},eo}function El(){if(Ci)return to;Ci=!0;var u=Ni(),r=Object.prototype.hasOwnProperty,t=Array.isArray,l=function(){for(var v=[],S=0;S<256;++S)v.push("%"+((S<16?"0":"")+S.toString(16)).toUpperCase());return v}(),n=function(v){for(;v.length>1;){var S=v.pop(),y=S.obj[S.prop];if(t(y)){for(var k=[],_=0;_<y.length;++_)typeof y[_]<"u"&&k.push(y[_]);S.obj[S.prop]=k}}},o=function(v,S){for(var y=S&&S.plainObjects?Object.create(null):{},k=0;k<v.length;++k)typeof v[k]<"u"&&(y[k]=v[k]);return y},i=function v(S,y,k){if(!y)return S;if(typeof y!="object"){if(t(S))S.push(y);else if(S&&typeof S=="object")(k&&(k.plainObjects||k.allowPrototypes)||!r.call(Object.prototype,y))&&(S[y]=!0);else return[S,y];return S}if(!S||typeof S!="object")return[S].concat(y);var _=S;return t(S)&&!t(y)&&(_=o(S,k)),t(S)&&t(y)?(y.forEach(function(E,I){if(r.call(S,I)){var x=S[I];x&&typeof x=="object"&&E&&typeof E=="object"?S[I]=v(x,E,k):S.push(E)}else S[I]=E}),S):Object.keys(y).reduce(function(E,I){var x=y[I];return r.call(E,I)?E[I]=v(E[I],x,k):E[I]=x,E},_)},a=function(v,S){return Object.keys(S).reduce(function(y,k){return y[k]=S[k],y},v)},s=function(v,S,y){var k=v.replace(/\+/g," ");if(y==="iso-8859-1")return k.replace(/%[0-9a-f]{2}/gi,unescape);try{return decodeURIComponent(k)}catch{return k}},c=1024,d=function(v,S,y,k,_){if(v.length===0)return v;var E=v;if(typeof v=="symbol"?E=Symbol.prototype.toString.call(v):typeof v!="string"&&(E=String(v)),y==="iso-8859-1")return escape(E).replace(/%u[0-9a-f]{4}/gi,function(A){return"%26%23"+parseInt(A.slice(2),16)+"%3B"});for(var I="",x=0;x<E.length;x+=c){for(var V=E.length>=c?E.slice(x,x+c):E,$=[],C=0;C<V.length;++C){var D=V.charCodeAt(C);if(D===45||D===46||D===95||D===126||D>=48&&D<=57||D>=65&&D<=90||D>=97&&D<=122||_===u.RFC1738&&(D===40||D===41)){$[$.length]=V.charAt(C);continue}if(D<128){$[$.length]=l[D];continue}if(D<2048){$[$.length]=l[192|D>>6]+l[128|D&63];continue}if(D<55296||D>=57344){$[$.length]=l[224|D>>12]+l[128|D>>6&63]+l[128|D&63];continue}C+=1,D=65536+((D&1023)<<10|V.charCodeAt(C)&1023),$[$.length]=l[240|D>>18]+l[128|D>>12&63]+l[128|D>>6&63]+l[128|D&63]}I+=$.join("")}return I},f=function(v){for(var S=[{obj:{o:v},prop:"o"}],y=[],k=0;k<S.length;++k)for(var _=S[k],E=_.obj[_.prop],I=Object.keys(E),x=0;x<I.length;++x){var V=I[x],$=E[V];typeof $=="object"&&$!==null&&y.indexOf($)===-1&&(S.push({obj:E,prop:V}),y.push($))}return n(S),v},m=function(v){return Object.prototype.toString.call(v)==="[object RegExp]"},h=function(v){return!v||typeof v!="object"?!1:!!(v.constructor&&v.constructor.isBuffer&&v.constructor.isBuffer(v))},p=function(v,S){return[].concat(v,S)},w=function(v,S){if(t(v)){for(var y=[],k=0;k<v.length;k+=1)y.push(S(v[k]));return y}return S(v)};return to={arrayToObject:o,assign:a,combine:p,compact:f,decode:s,encode:d,isBuffer:h,isRegExp:m,maybeMap:w,merge:i},to}function Y0(){if(Ii)return ro;Ii=!0;var u=Q0(),r=El(),t=Ni(),l=Object.prototype.hasOwnProperty,n={brackets:function(w){return w+"[]"},comma:"comma",indices:function(w,v){return w+"["+v+"]"},repeat:function(w){return w}},o=Array.isArray,i=Array.prototype.push,a=function(w,v){i.apply(w,o(v)?v:[v])},s=Date.prototype.toISOString,c=t.default,d={addQueryPrefix:!1,allowDots:!1,allowEmptyArrays:!1,arrayFormat:"indices",charset:"utf-8",charsetSentinel:!1,delimiter:"&",encode:!0,encodeDotInKeys:!1,encoder:r.encode,encodeValuesOnly:!1,format:c,formatter:t.formatters[c],indices:!1,serializeDate:function(w){return s.call(w)},skipNulls:!1,strictNullHandling:!1},f=function(w){return typeof w=="string"||typeof w=="number"||typeof w=="boolean"||typeof w=="symbol"||typeof w=="bigint"},m={},h=function w(v,S,y,k,_,E,I,x,V,$,C,D,A,U,H,F,ue,ne){for(var oe=v,fe=ne,J=0,ie=!1;(fe=fe.get(m))!==void 0&&!ie;){var R=fe.get(v);if(J+=1,typeof R<"u"){if(R===J)throw new RangeError("Cyclic object value");ie=!0}typeof fe.get(m)>"u"&&(J=0)}if(typeof $=="function"?oe=$(S,oe):oe instanceof Date?oe=A(oe):y==="comma"&&o(oe)&&(oe=r.maybeMap(oe,function(j){return j instanceof Date?A(j):j})),oe===null){if(E)return V&&!F?V(S,d.encoder,ue,"key",U):S;oe=""}if(f(oe)||r.isBuffer(oe)){if(V){var Z=F?S:V(S,d.encoder,ue,"key",U);return[H(Z)+"="+H(V(oe,d.encoder,ue,"value",U))]}return[H(S)+"="+H(String(oe))]}var ge=[];if(typeof oe>"u")return ge;var G;if(y==="comma"&&o(oe))F&&V&&(oe=r.maybeMap(oe,V)),G=[{value:oe.length>0?oe.join(",")||null:void 0}];else if(o($))G=$;else{var Ve=Object.keys(oe);G=C?Ve.sort(C):Ve}var ee=x?S.replace(/\./g,"%2E"):S,q=k&&o(oe)&&oe.length===1?ee+"[]":ee;if(_&&o(oe)&&oe.length===0)return q+"[]";for(var ce=0;ce<G.length;++ce){var X=G[ce],re=typeof X=="object"&&typeof X.value<"u"?X.value:oe[X];if(!(I&&re===null)){var O=D&&x?X.replace(/\./g,"%2E"):X,te=o(oe)?typeof y=="function"?y(q,O):q:q+(D?"."+O:"["+O+"]");ne.set(v,J);var se=u();se.set(m,ne),a(ge,w(re,te,y,k,_,E,I,x,y==="comma"&&F&&o(oe)?null:V,$,C,D,A,U,H,F,ue,se))}}return ge},p=function(w){if(!w)return d;if(typeof w.allowEmptyArrays<"u"&&typeof w.allowEmptyArrays!="boolean")throw new TypeError("`allowEmptyArrays` option can only be `true` or `false`, when provided");if(typeof w.encodeDotInKeys<"u"&&typeof w.encodeDotInKeys!="boolean")throw new TypeError("`encodeDotInKeys` option can only be `true` or `false`, when provided");if(w.encoder!==null&&typeof w.encoder<"u"&&typeof w.encoder!="function")throw new TypeError("Encoder has to be a function.");var v=w.charset||d.charset;if(typeof w.charset<"u"&&w.charset!=="utf-8"&&w.charset!=="iso-8859-1")throw new TypeError("The charset option must be either utf-8, iso-8859-1, or undefined");var S=t.default;if(typeof w.format<"u"){if(!l.call(t.formatters,w.format))throw new TypeError("Unknown format option provided.");S=w.format}var y=t.formatters[S],k=d.filter;(typeof w.filter=="function"||o(w.filter))&&(k=w.filter);var _;if(w.arrayFormat in n?_=w.arrayFormat:"indices"in w?_=w.indices?"indices":"repeat":_=d.arrayFormat,"commaRoundTrip"in w&&typeof w.commaRoundTrip!="boolean")throw new TypeError("`commaRoundTrip` must be a boolean, or absent");var E=typeof w.allowDots>"u"?w.encodeDotInKeys===!0?!0:d.allowDots:!!w.allowDots;return{addQueryPrefix:typeof w.addQueryPrefix=="boolean"?w.addQueryPrefix:d.addQueryPrefix,allowDots:E,allowEmptyArrays:typeof w.allowEmptyArrays=="boolean"?!!w.allowEmptyArrays:d.allowEmptyArrays,arrayFormat:_,charset:v,charsetSentinel:typeof w.charsetSentinel=="boolean"?w.charsetSentinel:d.charsetSentinel,commaRoundTrip:w.commaRoundTrip,delimiter:typeof w.delimiter>"u"?d.delimiter:w.delimiter,encode:typeof w.encode=="boolean"?w.encode:d.encode,encodeDotInKeys:typeof w.encodeDotInKeys=="boolean"?w.encodeDotInKeys:d.encodeDotInKeys,encoder:typeof w.encoder=="function"?w.encoder:d.encoder,encodeValuesOnly:typeof w.encodeValuesOnly=="boolean"?w.encodeValuesOnly:d.encodeValuesOnly,filter:k,format:S,formatter:y,serializeDate:typeof w.serializeDate=="function"?w.serializeDate:d.serializeDate,skipNulls:typeof w.skipNulls=="boolean"?w.skipNulls:d.skipNulls,sort:typeof w.sort=="function"?w.sort:null,strictNullHandling:typeof w.strictNullHandling=="boolean"?w.strictNullHandling:d.strictNullHandling}};return ro=function(w,v){var S=w,y=p(v),k,_;typeof y.filter=="function"?(_=y.filter,S=_("",S)):o(y.filter)&&(_=y.filter,k=_);var E=[];if(typeof S!="object"||S===null)return"";var I=n[y.arrayFormat],x=I==="comma"&&y.commaRoundTrip;k||(k=Object.keys(S)),y.sort&&k.sort(y.sort);for(var V=u(),$=0;$<k.length;++$){var C=k[$];y.skipNulls&&S[C]===null||a(E,h(S[C],C,I,x,y.allowEmptyArrays,y.strictNullHandling,y.skipNulls,y.encodeDotInKeys,y.encode?y.encoder:null,y.filter,y.sort,y.allowDots,y.serializeDate,y.format,y.formatter,y.encodeValuesOnly,y.charset,V))}var D=E.join(y.delimiter),A=y.addQueryPrefix===!0?"?":"";return y.charsetSentinel&&(y.charset==="iso-8859-1"?A+="utf8=%26%2310003%3B&":A+="utf8=%E2%9C%93&"),D.length>0?A+D:""},ro}function J0(){if(Ai)return oo;Ai=!0;var u=El(),r=Object.prototype.hasOwnProperty,t=Array.isArray,l={allowDots:!1,allowEmptyArrays:!1,allowPrototypes:!1,allowSparse:!1,arrayLimit:20,charset:"utf-8",charsetSentinel:!1,comma:!1,decodeDotInKeys:!1,decoder:u.decode,delimiter:"&",depth:5,duplicates:"combine",ignoreQueryPrefix:!1,interpretNumericEntities:!1,parameterLimit:1e3,parseArrays:!0,plainObjects:!1,strictDepth:!1,strictNullHandling:!1},n=function(m){return m.replace(/&#(\d+);/g,function(h,p){return String.fromCharCode(parseInt(p,10))})},o=function(m,h){return m&&typeof m=="string"&&h.comma&&m.indexOf(",")>-1?m.split(","):m},i="utf8=%26%2310003%3B",a="utf8=%E2%9C%93",s=function(m,h){var p={__proto__:null},w=h.ignoreQueryPrefix?m.replace(/^\?/,""):m;w=w.replace(/%5B/gi,"[").replace(/%5D/gi,"]");var v=h.parameterLimit===1/0?void 0:h.parameterLimit,S=w.split(h.delimiter,v),y=-1,k,_=h.charset;if(h.charsetSentinel)for(k=0;k<S.length;++k)S[k].indexOf("utf8=")===0&&(S[k]===a?_="utf-8":S[k]===i&&(_="iso-8859-1"),y=k,k=S.length);for(k=0;k<S.length;++k)if(k!==y){var E=S[k],I=E.indexOf("]="),x=I===-1?E.indexOf("="):I+1,V,$;x===-1?(V=h.decoder(E,l.decoder,_,"key"),$=h.strictNullHandling?null:""):(V=h.decoder(E.slice(0,x),l.decoder,_,"key"),$=u.maybeMap(o(E.slice(x+1),h),function(D){return h.decoder(D,l.decoder,_,"value")})),$&&h.interpretNumericEntities&&_==="iso-8859-1"&&($=n($)),E.indexOf("[]=")>-1&&($=t($)?[$]:$);var C=r.call(p,V);C&&h.duplicates==="combine"?p[V]=u.combine(p[V],$):(!C||h.duplicates==="last")&&(p[V]=$)}return p},c=function(m,h,p,w){for(var v=w?h:o(h,p),S=m.length-1;S>=0;--S){var y,k=m[S];if(k==="[]"&&p.parseArrays)y=p.allowEmptyArrays&&(v===""||p.strictNullHandling&&v===null)?[]:[].concat(v);else{y=p.plainObjects?Object.create(null):{};var _=k.charAt(0)==="["&&k.charAt(k.length-1)==="]"?k.slice(1,-1):k,E=p.decodeDotInKeys?_.replace(/%2E/g,"."):_,I=parseInt(E,10);!p.parseArrays&&E===""?y={0:v}:!isNaN(I)&&k!==E&&String(I)===E&&I>=0&&p.parseArrays&&I<=p.arrayLimit?(y=[],y[I]=v):E!=="__proto__"&&(y[E]=v)}v=y}return v},d=function(m,h,p,w){if(m){var v=p.allowDots?m.replace(/\.([^.[]+)/g,"[$1]"):m,S=/(\[[^[\]]*])/,y=/(\[[^[\]]*])/g,k=p.depth>0&&S.exec(v),_=k?v.slice(0,k.index):v,E=[];if(_){if(!p.plainObjects&&r.call(Object.prototype,_)&&!p.allowPrototypes)return;E.push(_)}for(var I=0;p.depth>0&&(k=y.exec(v))!==null&&I<p.depth;){if(I+=1,!p.plainObjects&&r.call(Object.prototype,k[1].slice(1,-1))&&!p.allowPrototypes)return;E.push(k[1])}if(k){if(p.strictDepth===!0)throw new RangeError("Input depth exceeded depth option of "+p.depth+" and strictDepth is true");E.push("["+v.slice(k.index)+"]")}return c(E,h,p,w)}},f=function(m){if(!m)return l;if(typeof m.allowEmptyArrays<"u"&&typeof m.allowEmptyArrays!="boolean")throw new TypeError("`allowEmptyArrays` option can only be `true` or `false`, when provided");if(typeof m.decodeDotInKeys<"u"&&typeof m.decodeDotInKeys!="boolean")throw new TypeError("`decodeDotInKeys` option can only be `true` or `false`, when provided");if(m.decoder!==null&&typeof m.decoder<"u"&&typeof m.decoder!="function")throw new TypeError("Decoder has to be a function.");if(typeof m.charset<"u"&&m.charset!=="utf-8"&&m.charset!=="iso-8859-1")throw new TypeError("The charset option must be either utf-8, iso-8859-1, or undefined");var h=typeof m.charset>"u"?l.charset:m.charset,p=typeof m.duplicates>"u"?l.duplicates:m.duplicates;if(p!=="combine"&&p!=="first"&&p!=="last")throw new TypeError("The duplicates option must be either combine, first, or last");var w=typeof m.allowDots>"u"?m.decodeDotInKeys===!0?!0:l.allowDots:!!m.allowDots;return{allowDots:w,allowEmptyArrays:typeof m.allowEmptyArrays=="boolean"?!!m.allowEmptyArrays:l.allowEmptyArrays,allowPrototypes:typeof m.allowPrototypes=="boolean"?m.allowPrototypes:l.allowPrototypes,allowSparse:typeof m.allowSparse=="boolean"?m.allowSparse:l.allowSparse,arrayLimit:typeof m.arrayLimit=="number"?m.arrayLimit:l.arrayLimit,charset:h,charsetSentinel:typeof m.charsetSentinel=="boolean"?m.charsetSentinel:l.charsetSentinel,comma:typeof m.comma=="boolean"?m.comma:l.comma,decodeDotInKeys:typeof m.decodeDotInKeys=="boolean"?m.decodeDotInKeys:l.decodeDotInKeys,decoder:typeof m.decoder=="function"?m.decoder:l.decoder,delimiter:typeof m.delimiter=="string"||u.isRegExp(m.delimiter)?m.delimiter:l.delimiter,depth:typeof m.depth=="number"||m.depth===!1?+m.depth:l.depth,duplicates:p,ignoreQueryPrefix:m.ignoreQueryPrefix===!0,interpretNumericEntities:typeof m.interpretNumericEntities=="boolean"?m.interpretNumericEntities:l.interpretNumericEntities,parameterLimit:typeof m.parameterLimit=="number"?m.parameterLimit:l.parameterLimit,parseArrays:m.parseArrays!==!1,plainObjects:typeof m.plainObjects=="boolean"?m.plainObjects:l.plainObjects,strictDepth:typeof m.strictDepth=="boolean"?!!m.strictDepth:l.strictDepth,strictNullHandling:typeof m.strictNullHandling=="boolean"?m.strictNullHandling:l.strictNullHandling}};return oo=function(m,h){var p=f(h);if(m===""||m===null||typeof m>"u")return p.plainObjects?Object.create(null):{};for(var w=typeof m=="string"?s(m,p):m,v=p.plainObjects?Object.create(null):{},S=Object.keys(w),y=0;y<S.length;++y){var k=S[y],_=d(k,w[k],p,typeof m=="string");v=u.merge(v,_,p)}return p.allowSparse===!0?v:u.compact(v)},oo}function X0(){if($i)return no;$i=!0;var u=Y0(),r=J0(),t=Ni();return no={formats:t,parse:r,stringify:u},no}function Z0(){if(Ti)return Ot;Ti=!0;var u=Dt;function r(){this.protocol=null,this.slashes=null,this.auth=null,this.host=null,this.port=null,this.hostname=null,this.hash=null,this.search=null,this.query=null,this.pathname=null,this.path=null,this.href=null}var t=/^([a-z0-9.+-]+:)/i,l=/:[0-9]*$/,n=/^(\/\/?(?!\/)[^?\s]*)(\?[^\s]*)?$/,o=["<",">",'"',"`"," ","\r",`
12
+ `," "],i=["{","}","|","\\","^","`"].concat(o),a=["'"].concat(i),s=["%","/","?",";","#"].concat(a),c=["/","?","#"],d=255,f=/^[+a-z0-9A-Z_-]{0,63}$/,m=/^([+a-z0-9A-Z_-]{0,63})(.*)$/,h={javascript:!0,"javascript:":!0},p={javascript:!0,"javascript:":!0},w={http:!0,https:!0,ftp:!0,gopher:!0,file:!0,"http:":!0,"https:":!0,"ftp:":!0,"gopher:":!0,"file:":!0},v=X0();function S(E,I,x){if(E&&typeof E=="object"&&E instanceof r)return E;var V=new r;return V.parse(E,I,x),V}r.prototype.parse=function(E,I,x){if(typeof E!="string")throw new TypeError("Parameter 'url' must be a string, not "+typeof E);var V=E.indexOf("?"),$=V!==-1&&V<E.indexOf("#")?"?":"#",C=E.split($),D=/\\/g;C[0]=C[0].replace(D,"/"),E=C.join($);var A=E;if(A=A.trim(),!x&&E.split("#").length===1){var U=n.exec(A);if(U)return this.path=A,this.href=A,this.pathname=U[1],U[2]?(this.search=U[2],I?this.query=v.parse(this.search.substr(1)):this.query=this.search.substr(1)):I&&(this.search="",this.query={}),this}var H=t.exec(A);if(H){H=H[0];var F=H.toLowerCase();this.protocol=F,A=A.substr(H.length)}if(x||H||A.match(/^\/\/[^@/]+@[^@/]+/)){var ue=A.substr(0,2)==="//";ue&&!(H&&p[H])&&(A=A.substr(2),this.slashes=!0)}if(!p[H]&&(ue||H&&!w[H])){for(var ne=-1,oe=0;oe<c.length;oe++){var fe=A.indexOf(c[oe]);fe!==-1&&(ne===-1||fe<ne)&&(ne=fe)}var J,ie;ne===-1?ie=A.lastIndexOf("@"):ie=A.lastIndexOf("@",ne),ie!==-1&&(J=A.slice(0,ie),A=A.slice(ie+1),this.auth=decodeURIComponent(J)),ne=-1;for(var oe=0;oe<s.length;oe++){var fe=A.indexOf(s[oe]);fe!==-1&&(ne===-1||fe<ne)&&(ne=fe)}ne===-1&&(ne=A.length),this.host=A.slice(0,ne),A=A.slice(ne),this.parseHost(),this.hostname=this.hostname||"";var R=this.hostname[0]==="["&&this.hostname[this.hostname.length-1]==="]";if(!R)for(var Z=this.hostname.split(/\./),oe=0,ge=Z.length;oe<ge;oe++){var G=Z[oe];if(G&&!G.match(f)){for(var Ve="",ee=0,q=G.length;ee<q;ee++)G.charCodeAt(ee)>127?Ve+="x":Ve+=G[ee];if(!Ve.match(f)){var ce=Z.slice(0,oe),X=Z.slice(oe+1),re=G.match(m);re&&(ce.push(re[1]),X.unshift(re[2])),X.length&&(A="/"+X.join(".")+A),this.hostname=ce.join(".");break}}}this.hostname.length>d?this.hostname="":this.hostname=this.hostname.toLowerCase(),R||(this.hostname=u.toASCII(this.hostname));var O=this.port?":"+this.port:"",te=this.hostname||"";this.host=te+O,this.href+=this.host,R&&(this.hostname=this.hostname.substr(1,this.hostname.length-2),A[0]!=="/"&&(A="/"+A))}if(!h[F])for(var oe=0,ge=a.length;oe<ge;oe++){var se=a[oe];if(A.indexOf(se)!==-1){var j=encodeURIComponent(se);j===se&&(j=escape(se)),A=A.split(se).join(j)}}var K=A.indexOf("#");K!==-1&&(this.hash=A.substr(K),A=A.slice(0,K));var ae=A.indexOf("?");if(ae!==-1?(this.search=A.substr(ae),this.query=A.substr(ae+1),I&&(this.query=v.parse(this.query)),A=A.slice(0,ae)):I&&(this.search="",this.query={}),A&&(this.pathname=A),w[F]&&this.hostname&&!this.pathname&&(this.pathname="/"),this.pathname||this.search){var O=this.pathname||"",he=this.search||"";this.path=O+he}return this.href=this.format(),this};function y(E){return typeof E=="string"&&(E=S(E)),E instanceof r?E.format():r.prototype.format.call(E)}r.prototype.format=function(){var E=this.auth||"";E&&(E=encodeURIComponent(E),E=E.replace(/%3A/i,":"),E+="@");var I=this.protocol||"",x=this.pathname||"",V=this.hash||"",$=!1,C="";this.host?$=E+this.host:this.hostname&&($=E+(this.hostname.indexOf(":")===-1?this.hostname:"["+this.hostname+"]"),this.port&&($+=":"+this.port)),this.query&&typeof this.query=="object"&&Object.keys(this.query).length&&(C=v.stringify(this.query,{arrayFormat:"repeat",addQueryPrefix:!1}));var D=this.search||C&&"?"+C||"";return I&&I.substr(-1)!==":"&&(I+=":"),this.slashes||(!I||w[I])&&$!==!1?($="//"+($||""),x&&x.charAt(0)!=="/"&&(x="/"+x)):$||($=""),V&&V.charAt(0)!=="#"&&(V="#"+V),D&&D.charAt(0)!=="?"&&(D="?"+D),x=x.replace(/[?#]/g,function(A){return encodeURIComponent(A)}),D=D.replace("#","%23"),I+$+x+D+V};function k(E,I){return S(E,!1,!0).resolve(I)}r.prototype.resolve=function(E){return this.resolveObject(S(E,!1,!0)).format()};function _(E,I){return E?S(E,!1,!0).resolveObject(I):I}return r.prototype.resolveObject=function(E){if(typeof E=="string"){var I=new r;I.parse(E,!1,!0),E=I}for(var x=new r,V=Object.keys(this),$=0;$<V.length;$++){var C=V[$];x[C]=this[C]}if(x.hash=E.hash,E.href==="")return x.href=x.format(),x;if(E.slashes&&!E.protocol){for(var D=Object.keys(E),A=0;A<D.length;A++){var U=D[A];U!=="protocol"&&(x[U]=E[U])}return w[x.protocol]&&x.hostname&&!x.pathname&&(x.pathname="/",x.path=x.pathname),x.href=x.format(),x}if(E.protocol&&E.protocol!==x.protocol){if(!w[E.protocol]){for(var H=Object.keys(E),F=0;F<H.length;F++){var ue=H[F];x[ue]=E[ue]}return x.href=x.format(),x}if(x.protocol=E.protocol,!E.host&&!p[E.protocol]){for(var ge=(E.pathname||"").split("/");ge.length&&!(E.host=ge.shift()););E.host||(E.host=""),E.hostname||(E.hostname=""),ge[0]!==""&&ge.unshift(""),ge.length<2&&ge.unshift(""),x.pathname=ge.join("/")}else x.pathname=E.pathname;if(x.search=E.search,x.query=E.query,x.host=E.host||"",x.auth=E.auth,x.hostname=E.hostname||E.host,x.port=E.port,x.pathname||x.search){var ne=x.pathname||"",oe=x.search||"";x.path=ne+oe}return x.slashes=x.slashes||E.slashes,x.href=x.format(),x}var fe=x.pathname&&x.pathname.charAt(0)==="/",J=E.host||E.pathname&&E.pathname.charAt(0)==="/",ie=J||fe||x.host&&E.pathname,R=ie,Z=x.pathname&&x.pathname.split("/")||[],ge=E.pathname&&E.pathname.split("/")||[],G=x.protocol&&!w[x.protocol];if(G&&(x.hostname="",x.port=null,x.host&&(Z[0]===""?Z[0]=x.host:Z.unshift(x.host)),x.host="",E.protocol&&(E.hostname=null,E.port=null,E.host&&(ge[0]===""?ge[0]=E.host:ge.unshift(E.host)),E.host=null),ie=ie&&(ge[0]===""||Z[0]==="")),J)x.host=E.host||E.host===""?E.host:x.host,x.hostname=E.hostname||E.hostname===""?E.hostname:x.hostname,x.search=E.search,x.query=E.query,Z=ge;else if(ge.length)Z||(Z=[]),Z.pop(),Z=Z.concat(ge),x.search=E.search,x.query=E.query;else if(E.search!=null){if(G){x.host=Z.shift(),x.hostname=x.host;var Ve=x.host&&x.host.indexOf("@")>0?x.host.split("@"):!1;Ve&&(x.auth=Ve.shift(),x.hostname=Ve.shift(),x.host=x.hostname)}return x.search=E.search,x.query=E.query,(x.pathname!==null||x.search!==null)&&(x.path=(x.pathname?x.pathname:"")+(x.search?x.search:"")),x.href=x.format(),x}if(!Z.length)return x.pathname=null,x.search?x.path="/"+x.search:x.path=null,x.href=x.format(),x;for(var ee=Z.slice(-1)[0],q=(x.host||E.host||Z.length>1)&&(ee==="."||ee==="..")||ee==="",ce=0,X=Z.length;X>=0;X--)ee=Z[X],ee==="."?Z.splice(X,1):ee===".."?(Z.splice(X,1),ce++):ce&&(Z.splice(X,1),ce--);if(!ie&&!R)for(;ce--;ce)Z.unshift("..");ie&&Z[0]!==""&&(!Z[0]||Z[0].charAt(0)!=="/")&&Z.unshift(""),q&&Z.join("/").substr(-1)!=="/"&&Z.push("");var re=Z[0]===""||Z[0]&&Z[0].charAt(0)==="/";if(G){x.hostname=re?"":Z.length?Z.shift():"",x.host=x.hostname;var Ve=x.host&&x.host.indexOf("@")>0?x.host.split("@"):!1;Ve&&(x.auth=Ve.shift(),x.hostname=Ve.shift(),x.host=x.hostname)}return ie=ie||x.host&&Z.length,ie&&!re&&Z.unshift(""),Z.length>0?x.pathname=Z.join("/"):(x.pathname=null,x.path=null),(x.pathname!==null||x.search!==null)&&(x.path=(x.pathname?x.pathname:"")+(x.search?x.search:"")),x.auth=E.auth||x.auth,x.slashes=x.slashes||E.slashes,x.href=x.format(),x},r.prototype.parseHost=function(){var E=this.host,I=l.exec(E);I&&(I=I[0],I!==":"&&(this.port=I.substr(1)),E=E.substr(0,E.length-I.length)),E&&(this.hostname=E)},Ot.parse=S,Ot.resolve=k,Ot.resolveObject=_,Ot.format=y,Ot.Url=r,Ot}function vl(u){if(typeof u=="string")u=new URL(u);else if(!(u instanceof URL))throw new Deno.errors.InvalidData("invalid argument path , must be a string or URL");if(u.protocol!=="file:")throw new Deno.errors.InvalidData("invalid url scheme");return io?eb(u):tb(u)}function eb(u){let r=u.hostname,t=u.pathname;for(let l=0;l<t.length;l++)if(t[l]==="%"){let n=t.codePointAt(l+2)||32;if(t[l+1]==="2"&&n===102||t[l+1]==="5"&&n===99)throw new Deno.errors.InvalidData("must not include encoded \\ or / characters")}if(t=t.replace(Pl,"\\"),t=decodeURIComponent(t),r!=="")return`\\\\${r}${t}`;{let l=t.codePointAt(1)|32,n=t[2];if(l<Bl||l>Dl||n!==":")throw new Deno.errors.InvalidData("file url path must be absolute");return t.slice(1)}}function tb(u){if(u.hostname!=="")throw new Deno.errors.InvalidData("invalid file url hostname");let r=u.pathname;for(let t=0;t<r.length;t++)if(r[t]==="%"){let l=r.codePointAt(t+2)||32;if(r[t+1]==="2"&&l===102)throw new Deno.errors.InvalidData("must not include encoded / characters")}return decodeURIComponent(r)}function kl(u){let r=_i.resolve(u),t=u.charCodeAt(u.length-1);(t===Tl||io&&t===$l)&&r[r.length-1]!==_i.sep&&(r+="/");let l=new URL("file://");return r.includes("%")&&(r=r.replace(Ol,"%25")),!io&&r.includes("\\")&&(r=r.replace(Ml,"%5C")),r.includes(`
13
+ `)&&(r=r.replace(Rl,"%0A")),r.includes("\r")&&(r=r.replace(jl,"%0D")),r.includes(" ")&&(r=r.replace(Ll,"%09")),l.pathname=r,l}var _l,Jr,xi,Xr,Zr,Si,eo,Vi,to,Ci,ro,Ii,oo,Ai,no,$i,Ot,Ti,at,Nl,xl,Sl,Vl,Cl,Il,Al,$l,Tl,Bl,Dl,io,Pl,Ol,Ml,Rl,jl,Ll,rb=dt(()=>{be(),Ee(),we(),w0(),P0(),H0(),bl(),_l=Object.freeze(Object.create(null)),Jr={},xi=!1,Xr=typeof globalThis<"u"?globalThis:typeof self<"u"?self:global,Zr={},Si=!1,eo={},Vi=!1,to={},Ci=!1,ro={},Ii=!1,oo={},Ai=!1,no={},$i=!1,Ot={},Ti=!1,at=Z0(),at.parse,at.resolve,at.resolveObject,at.format,at.Url,Nl=typeof Deno<"u"?Deno.build.os==="windows"?"win32":Deno.build.os:void 0,at.URL=typeof URL<"u"?URL:null,at.pathToFileURL=kl,at.fileURLToPath=vl,xl=at.Url,Sl=at.format,Vl=at.resolve,Cl=at.resolveObject,Il=at.parse,Al=at.URL,$l=92,Tl=47,Bl=97,Dl=122,io=Nl==="win32",Pl=/\//g,Ol=/%/g,Ml=/\\/g,Rl=/\n/g,jl=/\r/g,Ll=/\t/g}),ob=_e((u,r)=>{be(),Ee(),we(),r.exports=function(){throw new Error("ws does not work in the browser. Browser clients must use the native WebSocket object")}}),Bi=_e(u=>{be(),Ee(),we(),Object.defineProperty(u,"__esModule",{value:!0}),u.BufferedDuplex=void 0,u.writev=l;var r=Kt(),t=(ot(),We(rt));function l(o,i){let a=new Array(o.length);for(let s=0;s<o.length;s++)typeof o[s].chunk=="string"?a[s]=t.Buffer.from(o[s].chunk,"utf8"):a[s]=o[s].chunk;this._write(t.Buffer.concat(a),"binary",i)}var n=class extends r.Duplex{constructor(i,a,s){super({objectMode:!0});Se(this,"socket");Se(this,"proxy");Se(this,"isSocketOpen");Se(this,"writeQueue");this.proxy=a,this.socket=s,this.writeQueue=[],i.objectMode||(this._writev=l.bind(this)),this.isSocketOpen=!1,this.proxy.on("data",c=>{!this.destroyed&&this.readable&&this.push(c)})}_read(i){this.proxy.read(i)}_write(i,a,s){this.isSocketOpen?this.writeToProxy(i,a,s):this.writeQueue.push({chunk:i,encoding:a,cb:s})}_final(i){this.writeQueue=[],this.proxy.end(i)}_destroy(i,a){this.writeQueue=[],this.proxy.destroy(),a(i)}socketReady(){this.emit("connect"),this.isSocketOpen=!0,this.processWriteQueue()}writeToProxy(i,a,s){this.proxy.write(i,a)===!1?this.proxy.once("drain",s):s()}processWriteQueue(){for(;this.writeQueue.length>0;){let{chunk:i,encoding:a,cb:s}=this.writeQueue.shift();this.writeToProxy(i,a,s)}}};u.BufferedDuplex=n}),so=_e(u=>{be(),Ee(),we();var r=u&&u.__importDefault||function(S){return S&&S.__esModule?S:{default:S}};Object.defineProperty(u,"__esModule",{value:!0}),u.streamBuilder=u.browserStreamBuilder=void 0;var t=(ot(),We(rt)),l=r(ob()),n=r(xt()),o=Kt(),i=r(Dr()),a=Bi(),s=(0,n.default)("mqttjs:ws"),c=["rejectUnauthorized","ca","cert","key","pfx","passphrase"];function d(S,y){let k=`${S.protocol}://${S.hostname}:${S.port}${S.path}`;return typeof S.transformWsUrl=="function"&&(k=S.transformWsUrl(k,S,y)),k}function f(S){let y=S;return S.port||(S.protocol==="wss"?y.port=443:y.port=80),S.path||(y.path="/"),S.wsOptions||(y.wsOptions={}),!i.default&&!S.forceNativeWebSocket&&S.protocol==="wss"&&c.forEach(k=>{Object.prototype.hasOwnProperty.call(S,k)&&!Object.prototype.hasOwnProperty.call(S.wsOptions,k)&&(y.wsOptions[k]=S[k])}),y}function m(S){let y=f(S);if(y.hostname||(y.hostname=y.host),!y.hostname){if(typeof document>"u")throw new Error("Could not determine host. Specify host manually.");let k=new URL(document.URL);y.hostname=k.hostname,y.port||(y.port=Number(k.port))}return y.objectMode===void 0&&(y.objectMode=!(y.binary===!0||y.binary===void 0)),y}function h(S,y,k){s("createWebSocket"),s(`protocol: ${k.protocolId} ${k.protocolVersion}`);let _=k.protocolId==="MQIsdp"&&k.protocolVersion===3?"mqttv3.1":"mqtt";s(`creating new Websocket for url: ${y} and protocol: ${_}`);let E;return k.createWebsocket?E=k.createWebsocket(y,[_],k):E=new l.default(y,[_],k.wsOptions),E}function p(S,y){let k=y.protocolId==="MQIsdp"&&y.protocolVersion===3?"mqttv3.1":"mqtt",_=d(y,S),E;return y.createWebsocket?E=y.createWebsocket(_,[k],y):E=new WebSocket(_,[k]),E.binaryType="arraybuffer",E}var w=(S,y)=>{s("streamBuilder");let k=f(y);k.hostname=k.hostname||k.host||"localhost";let _=d(k,S),E=h(S,_,k),I=l.default.createWebSocketStream(E,k.wsOptions);return I.url=_,E.on("close",()=>{I.destroy()}),I};u.streamBuilder=w;var v=(S,y)=>{s("browserStreamBuilder");let k,_=m(y).browserBufferSize||1024*512,E=y.browserBufferTimeout||1e3,I=!y.objectMode,x=p(S,y),V=C(y,F,ue);y.objectMode||(V._writev=a.writev.bind(V)),V.on("close",()=>{x.close()});let $=typeof x.addEventListener<"u";x.readyState===x.OPEN?(k=V,k.socket=x):(k=new a.BufferedDuplex(y,V,x),$?x.addEventListener("open",D):x.onopen=D),$?(x.addEventListener("close",A),x.addEventListener("error",U),x.addEventListener("message",H)):(x.onclose=A,x.onerror=U,x.onmessage=H);function C(ne,oe,fe){let J=new o.Transform({objectMode:ne.objectMode});return J._write=oe,J._flush=fe,J}function D(){s("WebSocket onOpen"),k instanceof a.BufferedDuplex&&k.socketReady()}function A(ne){s("WebSocket onClose",ne),k.end(),k.destroy()}function U(ne){s("WebSocket onError",ne);let oe=new Error("WebSocket error");oe.event=ne,k.destroy(oe)}async function H(ne){if(!V||!V.readable||!V.writable)return;let{data:oe}=ne;oe instanceof ArrayBuffer?oe=t.Buffer.from(oe):oe instanceof Blob?oe=t.Buffer.from(await new Response(oe).arrayBuffer()):oe=t.Buffer.from(oe,"utf8"),V.push(oe)}function F(ne,oe,fe){if(x.bufferedAmount>_){setTimeout(F,E,ne,oe,fe);return}I&&typeof ne=="string"&&(ne=t.Buffer.from(ne,"utf8"));try{x.send(ne)}catch(J){return fe(J)}fe()}function ue(ne){x.close(),ne()}return k};u.browserStreamBuilder=v}),Di={};tr(Di,{Server:()=>Ye,Socket:()=>Ye,Stream:()=>Ye,_createServerHandle:()=>Ye,_normalizeArgs:()=>Ye,_setSimultaneousAccepts:()=>Ye,connect:()=>Ye,createConnection:()=>Ye,createServer:()=>Ye,default:()=>Ul,isIP:()=>Ye,isIPv4:()=>Ye,isIPv6:()=>Ye});function Ye(){throw new Error("Node.js net module is not supported by JSPM core outside of Node.js")}var Ul,Fl=dt(()=>{be(),Ee(),we(),Ul={_createServerHandle:Ye,_normalizeArgs:Ye,_setSimultaneousAccepts:Ye,connect:Ye,createConnection:Ye,createServer:Ye,isIP:Ye,isIPv4:Ye,isIPv6:Ye,Server:Ye,Socket:Ye,Stream:Ye}}),zl=_e((u,r)=>{be(),Ee(),we(),r.exports={}}),Wl=_e(u=>{be(),Ee(),we();var r=u&&u.__importDefault||function(a){return a&&a.__esModule?a:{default:a}};Object.defineProperty(u,"__esModule",{value:!0});var t=r((Fl(),We(Di))),l=r(xt()),n=r(zl()),o=(0,l.default)("mqttjs:tcp"),i=(a,s)=>{if(s.port=s.port||1883,s.hostname=s.hostname||s.host||"localhost",s.socksProxy)return(0,n.default)(s.hostname,s.port,s.socksProxy,{timeout:s.socksTimeout});let{port:c,path:d}=s,f=s.hostname;return o("port %d and host %s",c,f),t.default.createConnection({port:c,host:f,path:d})};u.default=i}),ql={};tr(ql,{default:()=>Gl});var Gl,nb=dt(()=>{be(),Ee(),we(),Gl={}}),Hl=_e(u=>{be(),Ee(),we();var r=u&&u.__importDefault||function(c){return c&&c.__esModule?c:{default:c}};Object.defineProperty(u,"__esModule",{value:!0});var t=(nb(),We(ql)),l=r((Fl(),We(Di))),n=r(xt()),o=r(zl()),i=(0,n.default)("mqttjs:tls");function a(c){let{host:d,port:f,socksProxy:m,...h}=c;if(m!==void 0){let p=(0,o.default)(d,f,m,{timeout:c.socksTimeout});return(0,t.connect)({...h,socket:p})}return(0,t.connect)(c)}var s=(c,d)=>{d.port=d.port||8883,d.host=d.hostname||d.host||"localhost",l.default.isIP(d.host)===0&&(d.servername=d.host),d.rejectUnauthorized=d.rejectUnauthorized!==!1,delete d.path,i("port %d host %s rejectUnauthorized %b",d.port,d.host,d.rejectUnauthorized);let f=a(d);f.on("secureConnect",()=>{d.rejectUnauthorized&&!f.authorized?f.emit("error",new Error("TLS not authorized")):f.removeListener("error",m)});function m(h){d.rejectUnauthorized&&c.emit("error",h),f.end()}return f.on("error",m),f};u.default=s}),Kl=_e(u=>{be(),Ee(),we(),Object.defineProperty(u,"__esModule",{value:!0});var r=(ot(),We(rt)),t=Kt(),l=Bi(),n,o,i;function a(){let m=new t.Transform;return m._write=(h,p,w)=>{n.send({data:h.buffer,success(){w()},fail(v){w(new Error(v))}})},m._flush=h=>{n.close({success(){h()}})},m}function s(m){m.hostname||(m.hostname="localhost"),m.path||(m.path="/"),m.wsOptions||(m.wsOptions={})}function c(m,h){let p=m.protocol==="wxs"?"wss":"ws",w=`${p}://${m.hostname}${m.path}`;return m.port&&m.port!==80&&m.port!==443&&(w=`${p}://${m.hostname}:${m.port}${m.path}`),typeof m.transformWsUrl=="function"&&(w=m.transformWsUrl(w,m,h)),w}function d(){n.onOpen(()=>{i.socketReady()}),n.onMessage(m=>{let{data:h}=m;h instanceof ArrayBuffer?h=r.Buffer.from(h):h=r.Buffer.from(h,"utf8"),o.push(h)}),n.onClose(()=>{i.emit("close"),i.end(),i.destroy()}),n.onError(m=>{let h=new Error(m.errMsg);i.destroy(h)})}var f=(m,h)=>{if(h.hostname=h.hostname||h.host,!h.hostname)throw new Error("Could not determine host. Specify host manually.");let p=h.protocolId==="MQIsdp"&&h.protocolVersion===3?"mqttv3.1":"mqtt";s(h);let w=c(h,m);n=wx.connectSocket({url:w,protocols:[p]}),o=a(),i=new l.BufferedDuplex(h,o,n),i._destroy=(S,y)=>{n.close({success(){y&&y(S)}})};let v=i.destroy;return i.destroy=(S,y)=>(i.destroy=v,setTimeout(()=>{n.close({fail(){i._destroy(S,y)}})},0),i),d(),i};u.default=f}),Ql=_e(u=>{be(),Ee(),we(),Object.defineProperty(u,"__esModule",{value:!0});var r=(ot(),We(rt)),t=Kt(),l=Bi(),n,o,i,a=!1;function s(){let h=new t.Transform;return h._write=(p,w,v)=>{n.sendSocketMessage({data:p.buffer,success(){v()},fail(){v(new Error)}})},h._flush=p=>{n.closeSocket({success(){p()}})},h}function c(h){h.hostname||(h.hostname="localhost"),h.path||(h.path="/"),h.wsOptions||(h.wsOptions={})}function d(h,p){let w=h.protocol==="alis"?"wss":"ws",v=`${w}://${h.hostname}${h.path}`;return h.port&&h.port!==80&&h.port!==443&&(v=`${w}://${h.hostname}:${h.port}${h.path}`),typeof h.transformWsUrl=="function"&&(v=h.transformWsUrl(v,h,p)),v}function f(){a||(a=!0,n.onSocketOpen(()=>{i.socketReady()}),n.onSocketMessage(h=>{if(typeof h.data=="string"){let p=r.Buffer.from(h.data,"base64");o.push(p)}else{let p=new FileReader;p.addEventListener("load",()=>{if(p.result instanceof ArrayBuffer){o.push(r.Buffer.from(p.result));return}o.push(r.Buffer.from(p.result,"utf-8"))}),p.readAsArrayBuffer(h.data)}}),n.onSocketClose(()=>{i.end(),i.destroy()}),n.onSocketError(h=>{i.destroy(h)}))}var m=(h,p)=>{if(p.hostname=p.hostname||p.host,!p.hostname)throw new Error("Could not determine host. Specify host manually.");let w=p.protocolId==="MQIsdp"&&p.protocolVersion===3?"mqttv3.1":"mqtt";c(p);let v=d(p,h);return n=p.my,n.connectSocket({url:v,protocols:w}),o=s(),i=new l.BufferedDuplex(p,o,n),f(),i};u.default=m}),ib=_e(u=>{be(),Ee(),we();var r=u&&u.__importDefault||function(f){return f&&f.__esModule?f:{default:f}};Object.defineProperty(u,"__esModule",{value:!0}),u.connectAsync=d;var t=r(xt()),l=r((rb(),We(wl))),n=r(jn()),o=r(Dr());typeof(ze==null?void 0:ze.nextTick)!="function"&&(ze.nextTick=setImmediate);var i=(0,t.default)("mqttjs"),a=null;function s(f){let m;if(f.auth)if(m=f.auth.match(/^(.+):(.+)$/),m){let[,h,p]=m;f.username=h,f.password=p}else f.username=f.auth}function c(f,m){var w,v,S;if(i("connecting to an MQTT broker..."),typeof f=="object"&&!m&&(m=f,f=""),m=m||{},f&&typeof f=="string"){let y=l.default.parse(f,!0),k={};if(y.port!=null&&(k.port=Number(y.port)),k.host=y.hostname,k.query=y.query,k.auth=y.auth,k.protocol=y.protocol,k.path=y.path,m={...k,...m},!m.protocol)throw new Error("Missing protocol");m.protocol=m.protocol.replace(/:$/,"")}if(m.unixSocket=m.unixSocket||((w=m.protocol)==null?void 0:w.includes("+unix")),m.unixSocket?m.protocol=m.protocol.replace("+unix",""):!((v=m.protocol)!=null&&v.startsWith("ws"))&&!((S=m.protocol)!=null&&S.startsWith("wx"))&&delete m.path,s(m),m.query&&typeof m.query.clientId=="string"&&(m.clientId=m.query.clientId),o.default||m.unixSocket?m.socksProxy=void 0:m.socksProxy===void 0&&typeof ze<"u"&&(m.socksProxy=ze.env.MQTTJS_SOCKS_PROXY),m.cert&&m.key)if(m.protocol){if(["mqtts","wss","wxs","alis"].indexOf(m.protocol)===-1)switch(m.protocol){case"mqtt":m.protocol="mqtts";break;case"ws":m.protocol="wss";break;case"wx":m.protocol="wxs";break;case"ali":m.protocol="alis";break;default:throw new Error(`Unknown protocol for secure connection: "${m.protocol}"!`)}}else throw new Error("Missing secure protocol key");if(a||(a={},!o.default&&!m.forceNativeWebSocket?(a.ws=so().streamBuilder,a.wss=so().streamBuilder,a.mqtt=Wl().default,a.tcp=Wl().default,a.ssl=Hl().default,a.tls=a.ssl,a.mqtts=Hl().default):(a.ws=so().browserStreamBuilder,a.wss=so().browserStreamBuilder,a.wx=Kl().default,a.wxs=Kl().default,a.ali=Ql().default,a.alis=Ql().default)),!a[m.protocol]){let y=["mqtts","wss"].indexOf(m.protocol)!==-1;m.protocol=["mqtt","mqtts","ws","wss","wx","wxs","ali","alis"].filter((k,_)=>y&&_%2===0?!1:typeof a[k]=="function")[0]}if(m.clean===!1&&!m.clientId)throw new Error("Missing clientId for unclean clients");m.protocol&&(m.defaultProtocol=m.protocol);function h(y){return m.servers&&((!y._reconnectCount||y._reconnectCount===m.servers.length)&&(y._reconnectCount=0),m.host=m.servers[y._reconnectCount].host,m.port=m.servers[y._reconnectCount].port,m.protocol=m.servers[y._reconnectCount].protocol?m.servers[y._reconnectCount].protocol:m.defaultProtocol,m.hostname=m.host,y._reconnectCount++),i("calling streambuilder for",m.protocol),a[m.protocol](y,m)}let p=new n.default(h,m);return p.on("error",()=>{}),p}function d(f,m,h=!0){return new Promise((p,w)=>{let v=c(f,m),S={connect:k=>{y(),p(v)},end:()=>{y(),p(v)},error:k=>{y(),v.end(),w(k)}};h===!1&&(S.close=()=>{S.error(new Error("Couldn't connect to server"))});function y(){Object.keys(S).forEach(k=>{v.off(k,S[k])})}Object.keys(S).forEach(k=>{v.on(k,S[k])})})}u.default=c}),Yl=_e(u=>{be(),Ee(),we();var r=u&&u.__createBinding||(Object.create?function(h,p,w,v){v===void 0&&(v=w);var S=Object.getOwnPropertyDescriptor(p,w);(!S||("get"in S?!p.__esModule:S.writable||S.configurable))&&(S={enumerable:!0,get:function(){return p[w]}}),Object.defineProperty(h,v,S)}:function(h,p,w,v){v===void 0&&(v=w),h[v]=p[w]}),t=u&&u.__setModuleDefault||(Object.create?function(h,p){Object.defineProperty(h,"default",{enumerable:!0,value:p})}:function(h,p){h.default=p}),l=u&&u.__importStar||function(){var h=function(p){return h=Object.getOwnPropertyNames||function(w){var v=[];for(var S in w)Object.prototype.hasOwnProperty.call(w,S)&&(v[v.length]=S);return v},h(p)};return function(p){if(p&&p.__esModule)return p;var w={};if(p!=null)for(var v=h(p),S=0;S<v.length;S++)v[S]!=="default"&&r(w,p,v[S]);return t(w,p),w}}(),n=u&&u.__exportStar||function(h,p){for(var w in h)w!=="default"&&!Object.prototype.hasOwnProperty.call(p,w)&&r(p,h,w)},o=u&&u.__importDefault||function(h){return h&&h.__esModule?h:{default:h}};Object.defineProperty(u,"__esModule",{value:!0}),u.ReasonCodes=u.KeepaliveManager=u.UniqueMessageIdProvider=u.DefaultMessageIdProvider=u.Store=u.MqttClient=u.connectAsync=u.connect=u.Client=void 0;var i=o(jn());u.MqttClient=i.default;var a=o(oa());u.DefaultMessageIdProvider=a.default;var s=o(y0());u.UniqueMessageIdProvider=s.default;var c=o(Ys());u.Store=c.default;var d=l(ib());u.connect=d.default,Object.defineProperty(u,"connectAsync",{enumerable:!0,get:function(){return d.connectAsync}});var f=o(da());u.KeepaliveManager=f.default,u.Client=i.default,n(jn(),u),n(ir(),u);var m=Tr();Object.defineProperty(u,"ReasonCodes",{enumerable:!0,get:function(){return m.ReasonCodes}})}),sb=_e(u=>{be(),Ee(),we();var r=u&&u.__createBinding||(Object.create?function(i,a,s,c){c===void 0&&(c=s);var d=Object.getOwnPropertyDescriptor(a,s);(!d||("get"in d?!a.__esModule:d.writable||d.configurable))&&(d={enumerable:!0,get:function(){return a[s]}}),Object.defineProperty(i,c,d)}:function(i,a,s,c){c===void 0&&(c=s),i[c]=a[s]}),t=u&&u.__setModuleDefault||(Object.create?function(i,a){Object.defineProperty(i,"default",{enumerable:!0,value:a})}:function(i,a){i.default=a}),l=u&&u.__importStar||function(){var i=function(a){return i=Object.getOwnPropertyNames||function(s){var c=[];for(var d in s)Object.prototype.hasOwnProperty.call(s,d)&&(c[c.length]=d);return c},i(a)};return function(a){if(a&&a.__esModule)return a;var s={};if(a!=null)for(var c=i(a),d=0;d<c.length;d++)c[d]!=="default"&&r(s,a,c[d]);return t(s,a),s}}(),n=u&&u.__exportStar||function(i,a){for(var s in i)s!=="default"&&!Object.prototype.hasOwnProperty.call(a,s)&&r(a,i,s)};Object.defineProperty(u,"__esModule",{value:!0});var o=l(Yl());u.default=o,n(Yl(),u)});const ab=sb();/*! Bundled license information:
14
+
15
+ @jspm/core/nodelibs/browser/chunk-DtuTasat.js:
16
+ (*! ieee754. BSD-3-Clause License. Feross Aboukhadijeh <https://feross.org/opensource> *)
17
+
18
+ safe-buffer/index.js:
19
+ (*! safe-buffer. MIT License. Feross Aboukhadijeh <https://feross.org/opensource> *)
20
+
21
+ @babel/runtime/helpers/regenerator.js:
22
+ (*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/babel/babel/blob/main/packages/babel-helpers/LICENSE *)
23
+ */class lb{constructor(){Se(this,"client",null);Se(this,"config",null);Se(this,"onDataCallback",null);Se(this,"onErrorCallback",null);Se(this,"isConnected",!1)}connect(r){return new Promise((t,l)=>{if(!r.enabled){l(new Error("MQTT 连接未启用"));return}this.config=r;let n=r.broker;if(n.startsWith("mqtt://")){const i=n.replace("mqtt://","");i.includes("broker.emqx.io")?n="ws://broker.emqx.io:8083/mqtt":n=`ws://${i}:8083/mqtt`}else if(n.startsWith("mqtts://")){const i=n.replace("mqtts://","");i.includes("broker.emqx.io")?n="wss://broker.emqx.io:8084/mqtt":n=`wss://${i}:8084/mqtt`}else!n.startsWith("ws://")&&!n.startsWith("wss://")&&(n=`ws://${n}:8083/mqtt`);const o={clientId:r.clientId||`scada_${Math.random().toString(16).substring(2,8)}`,clean:!0,reconnectPeriod:0};r.username&&r.username.trim()&&(o.username=r.username),r.password&&r.password.trim()&&(o.password=r.password);try{this.client=ab.connect(n,o),this.client.on("connect",i=>{this.isConnected=!0,this.client&&r.topic&&this.client.subscribe(r.topic,a=>{a?(console.error("[MQTT] 订阅失败:",a),l(a)):t()})}),this.client.on("message",(i,a)=>{try{const s=a.toString();let d=JSON.parse(s);if(r.dataPath){const m=r.dataPath.split(".");for(const h of m)d=d==null?void 0:d[h]}const f=this.parseDeviceData(d);this.onDataCallback&&f&&this.onDataCallback(f)}catch(s){console.error("[MQTT] 消息解析失败:",s),this.onErrorCallback&&this.onErrorCallback(s)}}),this.client.on("error",i=>{console.error("[MQTT] 连接错误:",i),this.isConnected=!1,this.onErrorCallback&&this.onErrorCallback(i)}),this.client.on("close",()=>{console.warn("[MQTT] 连接断开 - 可能原因:认证失败、clientId冲突、权限不足或服务器主动断开"),this.isConnected=!1}),this.client.on("offline",()=>{console.warn("[MQTT] 客户端离线")}),this.client.on("end",()=>{console.log("[MQTT] 连接已结束")})}catch(i){console.error("[MQTT] 创建客户端失败:",i),l(i)}})}parseDeviceData(r){if(!r)return null;if(r.deviceId&&Array.isArray(r.points))return{id:r.deviceId,name:r.deviceName||r.deviceId,points:r.points.map(t=>({id:t.id||t.pointId,name:t.name||t.id||t.pointId,code:t.code||t.id||t.pointId,dataType:t.dataType||(typeof t.value=="boolean"?"boolean":typeof t.value=="number"?"number":"string"),accessMode:t.accessMode||"readWrite",value:t.value,quality:t.quality||"good",timestamp:t.timestamp||new Date().toISOString(),unit:t.unit,enabled:t.enabled!==!1}))};if(r.deviceId&&r.pointId&&r.value!==void 0)return{id:r.deviceId,name:r.deviceName||r.deviceId,points:[{id:r.pointId,name:r.pointName||r.pointId,code:r.pointCode||r.pointId,dataType:r.dataType||(typeof r.value=="boolean"?"boolean":typeof r.value=="number"?"number":"string"),accessMode:r.accessMode||"readWrite",value:r.value,quality:r.quality||"good",timestamp:r.timestamp||new Date().toISOString(),unit:r.unit,enabled:r.enabled!==!1}]};if(r.deviceId){const t=[];for(const l in r)if(l!=="deviceId"&&l!=="deviceName"&&l!=="timestamp"){const n=r[l];t.push({id:l,name:l,code:l,dataType:typeof n=="boolean"?"boolean":typeof n=="number"?"number":"string",accessMode:"readWrite",value:n,quality:"good",timestamp:r.timestamp||new Date().toISOString(),enabled:!0})}if(t.length>0)return{id:r.deviceId,name:r.deviceName||r.deviceId,points:t}}return null}onData(r){this.onDataCallback=r}onError(r){this.onErrorCallback=r}publish(r,t){if(!this.client||!this.isConnected){console.warn("[MQTT] 未连接,无法发布消息");return}const l=typeof t=="string"?t:JSON.stringify(t);this.client.publish(r,l,n=>{n?console.error("[MQTT] 消息发布失败:",n):console.log("[MQTT] 消息发布成功:",r)})}disconnect(){if(this.client){console.log("[MQTT] 断开连接");try{this.client.removeAllListeners(),this.client.end(!0)}catch(r){console.warn("[MQTT] 断开连接时出错:",r)}this.client=null,this.isConnected=!1}}getConnectionStatus(){return this.isConnected}getConfig(){return this.config}}function cb(){return new lb}class db{constructor(){Se(this,"dataSources",e.reactive(new Map));Se(this,"connections",new Map);Se(this,"onDataCallbacks",[])}addDataSource(r){this.dataSources.set(r.id,r),r.enabled&&this.connectDataSource(r.id)}updateDataSource(r,t){const l=this.dataSources.get(r);l&&(Object.assign(l,t),(t.config||t.enabled!==void 0)&&this.reconnectDataSource(r))}removeDataSource(r){this.disconnectDataSource(r),this.dataSources.delete(r)}getDataSource(r){return this.dataSources.get(r)}getAllDataSources(){return Array.from(this.dataSources.values())}getAllDevices(){const r=[];return this.dataSources.forEach(t=>{t.devices.forEach(l=>{r.push({dataSourceId:t.id,dataSourceName:t.name,device:l})})}),r}async connectDataSource(r){const t=this.dataSources.get(r);if(t)try{switch(this.disconnectDataSource(r),t.type){case"MQTT":await this.connectMqtt(r,t);break;case"WebSocket":await this.connectWebSocket(r,t);break;case"HTTP":await this.connectHttp(r,t);break;case"SSE":await this.connectSSE(r,t);break}t.status&&(t.status.connected=!0,t.status.error=void 0)}catch(l){console.error(`[DataSource] 连接失败: ${t.name}`,l),t.status&&(t.status.connected=!1,t.status.error=l.message)}}disconnectDataSource(r){const t=this.connections.get(r);if(!t)return;const l=this.dataSources.get(r);if(l){try{l.type==="MQTT"?t.disconnect():l.type==="WebSocket"?t.close():l.type==="HTTP"?t.intervalId&&clearInterval(t.intervalId):l.type==="SSE"&&t.close()}catch(n){console.error("[DataSource] 断开连接失败:",n)}this.connections.delete(r),l.status&&(l.status.connected=!1)}}async reconnectDataSource(r){const t=this.dataSources.get(r);t&&(t.enabled?await this.connectDataSource(r):this.disconnectDataSource(r))}async connectMqtt(r,t){const l=cb();l.onData(o=>{this.handleDeviceData(r,o)}),l.onError(o=>{console.error(`[MQTT] 数据源 ${t.name} 错误:`,o),t.status&&(t.status.error=o.message)});const n={broker:t.config.broker||"",topic:t.config.topic||"",clientId:t.config.clientId,username:t.config.username,password:t.config.password,dataPath:t.config.dataPath,enabled:!0,retryCount:t.config.retryCount||3};await l.connect(n),this.connections.set(r,l)}async connectWebSocket(r,t){console.log("[WebSocket] 连接功能待实现")}async connectHttp(r,t){console.log("[HTTP] 轮询功能待实现")}async connectSSE(r,t){console.log("[SSE] 连接功能待实现")}handleDeviceData(r,t){const l=this.dataSources.get(r);if(!l)return;const n=l.devices.findIndex(o=>o.id===t.id);if(n>=0){const o=l.devices[n];t.points.forEach(i=>{const a=o.points.findIndex(s=>s.id===i.id);a>=0?o.points[a]={...o.points[a],...i}:o.points.push(i)}),o.name=t.name||o.name}else l.devices.push({id:t.id,name:t.name||t.id,points:t.points});l.status&&(l.status.lastUpdate=new Date().toISOString()),this.onDataCallbacks.forEach(o=>{o(r,t)})}onData(r){this.onDataCallbacks.push(r)}disconnectAll(){this.dataSources.forEach((r,t)=>{this.disconnectDataSource(t)})}getDataSourceStatus(r){const t=this.dataSources.get(r);return(t==null?void 0:t.status)||null}}const Ke=new db,ub={class:"compact-data-binding"},fb={class:"compact-row"},pb=["value"],hb=["value"],mb=["title"],gb={key:0,class:"compact-row"},yb=["value"],bb=["value"],wb={key:1,class:"compact-hint"},Eb={key:2,class:"compact-hint"},vb=Me(e.defineComponent({__name:"DataPropertiesTab",props:{selectedNode:{}},emits:["update-data-source"],setup(u,{emit:r}){const t=u,l=r,n=e.computed(()=>Ke.getAllDataSources()),o=e.ref(""),i=e.ref(""),a=e.computed(()=>o.value?Ke.getDataSource(o.value):null),s=e.computed(()=>a.value?a.value.devices||[]:[]);e.computed(()=>!i.value||!s.value?null:s.value.find(m=>m.id===i.value)),e.watch(()=>t.selectedNode,m=>{if(m){const h=m.getData();h!=null&&h.dataBinding?(o.value=h.dataBinding.dataSourceId||"",i.value=h.dataBinding.deviceId||""):(o.value="",i.value="")}},{immediate:!0});const c=m=>{const h=m.target.value;o.value=h,i.value="",f()},d=m=>{const h=m.target.value;i.value=h,f()},f=()=>{l("update-data-source",{dataSourceId:o.value,deviceId:i.value})};return(m,h)=>{var p,w,v,S;return e.openBlock(),e.createElementBlock("div",ub,[e.createElementVNode("div",fb,[h[1]||(h[1]=e.createElementVNode("label",null,"数据源",-1)),e.createElementVNode("select",{value:o.value,onChange:c,class:"compact-select"},[h[0]||(h[0]=e.createElementVNode("option",{value:""},"无",-1)),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(n.value,y=>(e.openBlock(),e.createElementBlock("option",{key:y.id,value:y.id},e.toDisplayString(y.name),9,hb))),128))],40,pb),o.value?(e.openBlock(),e.createElementBlock("span",{key:0,class:e.normalizeClass(["status-dot",(w=(p=a.value)==null?void 0:p.status)!=null&&w.connected?"connected":"disconnected"]),title:(S=(v=a.value)==null?void 0:v.status)!=null&&S.connected?"已连接":"未连接"},null,10,mb)):e.createCommentVNode("",!0)]),o.value&&s.value.length>0?(e.openBlock(),e.createElementBlock("div",gb,[h[3]||(h[3]=e.createElementVNode("label",null,"选择设备",-1)),e.createElementVNode("select",{value:i.value,onChange:d,class:"compact-select"},[h[2]||(h[2]=e.createElementVNode("option",{value:""},"请选择",-1)),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(s.value,y=>(e.openBlock(),e.createElementBlock("option",{key:y.id,value:y.id},e.toDisplayString(y.name)+" ("+e.toDisplayString(y.points.length)+") ",9,bb))),128))],40,yb)])):e.createCommentVNode("",!0),o.value?s.value.length===0?(e.openBlock(),e.createElementBlock("div",Eb," ℹ️ 该数据源尚无设备数据 ")):e.createCommentVNode("",!0):(e.openBlock(),e.createElementBlock("div",wb," 💡 请先配置数据源 "))])}}}),[["__scopeId","data-v-47fdd6c8"]]),kb={class:"edge-properties-tab"},_b={class:"property-section"},Nb={class:"property-item"},xb={class:"color-input-wrapper"},Sb=["value"],Vb=["value"],Cb={class:"property-item"},Ib={class:"number-input-wrapper"},Ab=["value"],$b={class:"property-item"},Tb=["value"],Bb={class:"property-item"},Db={class:"slider-wrapper"},Pb=["value"],Ob={class:"slider-value"},Mb={class:"property-item"},Rb=["value"],jb={key:0,class:"property-item"},Lb={class:"number-input-wrapper"},Ub=["value"],Fb={class:"property-section"},zb={class:"property-item"},Wb=["value"],qb={class:"property-item"},Gb=["value"],Hb={class:"property-section"},Kb={class:"property-item"},Qb=["value"],Yb={class:"property-item"},Jb=["value"],Xb=Me(e.defineComponent({__name:"EdgePropertiesTab",props:{selectedEdge:{}},emits:["updateEdge","deleteEdge"],setup(u,{emit:r}){const t=u,l=r,n=e.computed(()=>{var E;return((E=t.selectedEdge)==null?void 0:E.getAttrs())||{}}),o=E=>{const I=E.target.value;l("updateEdge",{attrs:{line:{stroke:I}}})},i=E=>{const I=Number(E.target.value);l("updateEdge",{attrs:{line:{strokeWidth:I}}})},a=()=>{var I;const E=(I=n.value.line)==null?void 0:I.strokeDasharray;return E?E==="5,5"?"5,5":E==="2,2"?"2,2":E==="10,5,2,5"?"10,5,2,5":"none":"none"},s=E=>{const I=E.target.value;l("updateEdge",{attrs:{line:{strokeDasharray:I==="none"?void 0:I}}})},c=E=>{const I=Number(E.target.value);l("updateEdge",{attrs:{line:{opacity:I}}})},d=E=>{var x;const I=(x=n.value.line)==null?void 0:x[`${E}Marker`];return!I||typeof I!="object"||!I.name?"none":I.name},f=()=>{var x;const E=(x=n.value.line)==null?void 0:x.opacity;return((E!==void 0&&typeof E=="number"?E:1)*100).toFixed(0)},m=E=>{const I=E.target.value;l("updateEdge",{attrs:{line:{sourceMarker:I==="none"?void 0:{name:I,width:8,height:6}}}})},h=E=>{const I=E.target.value;l("updateEdge",{attrs:{line:{targetMarker:I==="none"?void 0:{name:I,width:8,height:6}}}})},p=E=>{const I=E.target.value;l("updateEdge",{router:I})},w=E=>{const I=E.target.value;l("updateEdge",{connector:{name:I,args:I==="rounded"?{radius:8}:void 0}})},v=()=>{l("deleteEdge")},S=()=>{var I,x;const E=(x=(I=t.selectedEdge)==null?void 0:I.data)==null?void 0:x.animation;return E!=null&&E.enabled?"true":"false"},y=()=>{var I,x;const E=(x=(I=t.selectedEdge)==null?void 0:I.data)==null?void 0:x.animation;return E!=null&&E.duration?E.duration/1e3:2},k=E=>{if(!(E.target.value==="true"))l("updateEdge",{data:{animation:{enabled:!1}},animation:{enabled:!1}});else{const x=y()*1e3;l("updateEdge",{data:{animation:{enabled:!0,duration:x}},animation:{enabled:!0,duration:x}})}},_=E=>{const x=Number(E.target.value)*1e3;l("updateEdge",{data:{animation:{enabled:!0,duration:x}},animation:{enabled:!0,duration:x}})};return(E,I)=>{var x,V,$,C,D,A,U,H;return e.openBlock(),e.createElementBlock("div",kb,[e.createElementVNode("div",_b,[I[10]||(I[10]=e.createElementVNode("h4",{class:"section-title"},"线条样式",-1)),e.createElementVNode("div",Nb,[I[0]||(I[0]=e.createElementVNode("label",{class:"property-label"},"线条颜色",-1)),e.createElementVNode("div",xb,[e.createElementVNode("input",{type:"color",class:"color-input",value:((x=n.value.line)==null?void 0:x.stroke)||"#10b981",onInput:o},null,40,Sb),e.createElementVNode("input",{type:"text",class:"color-text",value:((V=n.value.line)==null?void 0:V.stroke)||"#10b981",onInput:o},null,40,Vb)])]),e.createElementVNode("div",Cb,[I[2]||(I[2]=e.createElementVNode("label",{class:"property-label"},"线条粗细",-1)),e.createElementVNode("div",Ib,[e.createElementVNode("input",{type:"number",class:"property-input",min:"1",max:"20",step:"1",value:(($=n.value.line)==null?void 0:$.strokeWidth)||2,onInput:i},null,40,Ab),I[1]||(I[1]=e.createElementVNode("span",{class:"input-unit"},"px",-1))])]),e.createElementVNode("div",$b,[I[4]||(I[4]=e.createElementVNode("label",{class:"property-label"},"线条样式",-1)),e.createElementVNode("select",{class:"property-select",value:a(),onChange:s},[...I[3]||(I[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,Tb)]),e.createElementVNode("div",Bb,[I[5]||(I[5]=e.createElementVNode("label",{class:"property-label"},"透明度",-1)),e.createElementVNode("div",Db,[e.createElementVNode("input",{type:"range",class:"property-slider",min:"0",max:"1",step:"0.1",value:((C=n.value.line)==null?void 0:C.opacity)!==void 0?n.value.line.opacity:1,onInput:c},null,40,Pb),e.createElementVNode("span",Ob,e.toDisplayString(f())+"%",1)])]),e.createElementVNode("div",Mb,[I[7]||(I[7]=e.createElementVNode("label",{class:"property-label"},"流动动画",-1)),e.createElementVNode("select",{class:"property-select",value:S(),onChange:k},[...I[6]||(I[6]=[e.createElementVNode("option",{value:"false"},"关闭",-1),e.createElementVNode("option",{value:"true"},"开启",-1)])],40,Rb)]),S()==="true"?(e.openBlock(),e.createElementBlock("div",jb,[I[9]||(I[9]=e.createElementVNode("label",{class:"property-label"},"动画速度",-1)),e.createElementVNode("div",Lb,[e.createElementVNode("input",{type:"number",class:"property-input",min:"0.5",max:"10",step:"0.5",value:y(),onInput:_},null,40,Ub),I[8]||(I[8]=e.createElementVNode("span",{class:"input-unit"},"秒",-1))])])):e.createCommentVNode("",!0)]),e.createElementVNode("div",Fb,[I[15]||(I[15]=e.createElementVNode("h4",{class:"section-title"},"箭头样式",-1)),e.createElementVNode("div",zb,[I[12]||(I[12]=e.createElementVNode("label",{class:"property-label"},"起点箭头",-1)),e.createElementVNode("select",{class:"property-select",value:d("source"),onChange:m},[...I[11]||(I[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,Wb)]),e.createElementVNode("div",qb,[I[14]||(I[14]=e.createElementVNode("label",{class:"property-label"},"终点箭头",-1)),e.createElementVNode("select",{class:"property-select",value:d("target"),onChange:h},[...I[13]||(I[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,Gb)])]),e.createElementVNode("div",Hb,[I[20]||(I[20]=e.createElementVNode("h4",{class:"section-title"},"连接器",-1)),e.createElementVNode("div",Kb,[I[17]||(I[17]=e.createElementVNode("label",{class:"property-label"},"路由方式",-1)),e.createElementVNode("select",{class:"property-select",value:((A=(D=u.selectedEdge)==null?void 0:D.getRouter())==null?void 0:A.name)||"manhattan",onChange:p},[...I[16]||(I[16]=[e.createElementVNode("option",{value:"manhattan"},"曼哈顿",-1),e.createElementVNode("option",{value:"orth"},"正交",-1),e.createElementVNode("option",{value:"normal"},"直线",-1)])],40,Qb)]),e.createElementVNode("div",Yb,[I[19]||(I[19]=e.createElementVNode("label",{class:"property-label"},"连接器类型",-1)),e.createElementVNode("select",{class:"property-select",value:((H=(U=u.selectedEdge)==null?void 0:U.getConnector())==null?void 0:H.name)||"rounded",onChange:w},[...I[18]||(I[18]=[e.createElementVNode("option",{value:"rounded"},"圆角",-1),e.createElementVNode("option",{value:"smooth"},"平滑",-1),e.createElementVNode("option",{value:"normal"},"普通",-1)])],40,Jb)])]),e.createElementVNode("div",{class:"property-section"},[e.createElementVNode("button",{class:"delete-btn",onClick:v}," 删除连线 ")])])}}}),[["__scopeId","data-v-e47f1784"]]),Zb={class:"event-card"},e1={class:"header-left"},t1={class:"collapse-icon"},r1={class:"event-title"},o1={class:"event-card-body"},n1={class:"event-field"},i1=["value"],s1={class:"event-field"},a1=["value"],l1={class:"event-field"},c1=["value"],d1={class:"condition-config"},u1=["value"],f1=["value"],p1=["value"],h1=["value"],m1={key:0,class:"config-section"},g1={key:1,class:"config-section"},y1={key:2,class:"config-section"},b1={key:0,class:"selected-workflow-info"},w1={class:"info-row"},E1={class:"info-value"},v1={class:"event-field"},k1=["value"],Pi=Me(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(u){return(r,t)=>{var l,n,o,i,a,s,c;return e.openBlock(),e.createElementBlock("div",Zb,[e.createElementVNode("div",{class:"event-card-header",onClick:t[1]||(t[1]=d=>r.$emit("toggle-collapse"))},[e.createElementVNode("div",e1,[e.createElementVNode("span",t1,e.toDisplayString(u.isCollapsed?"▶":"▼"),1),e.createElementVNode("span",r1,"事件"+e.toDisplayString(u.index+1),1)]),e.createElementVNode("button",{class:"btn-remove",onClick:t[0]||(t[0]=e.withModifiers(d=>r.$emit("remove"),["stop"])),title:"删除事件"},"🗑")]),e.withDirectives(e.createElementVNode("div",o1,[e.createElementVNode("div",n1,[t[12]||(t[12]=e.createElementVNode("label",null,"事件名称",-1)),e.createElementVNode("input",{type:"text",value:u.event.name||"",onInput:t[2]||(t[2]=d=>r.$emit("update-field","name",d)),placeholder:"输入事件名称,如:温度报警、湿度预警"},null,40,i1)]),e.createElementVNode("div",s1,[t[14]||(t[14]=e.createElementVNode("label",null,"事件类型",-1)),e.createElementVNode("select",{value:u.event.type,onChange:t[3]||(t[3]=d=>r.$emit("update-field","type",d))},[...t[13]||(t[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,a1)]),e.createElementVNode("div",l1,[t[16]||(t[16]=e.createElementVNode("label",null,"事件行为",-1)),e.createElementVNode("select",{value:u.event.action,onChange:t[4]||(t[4]=d=>r.$emit("update-field","action",d))},[...t[15]||(t[15]=[e.createElementVNode("option",{value:"attributeChange"},"更改属性",-1),e.createElementVNode("option",{value:"customCode"},"自定义代码",-1),e.createElementVNode("option",{value:"callProcess"},"调用流程",-1)])],40,c1)]),t[30]||(t[30]=e.createElementVNode("div",{class:"section-title"},"形参配置",-1)),t[31]||(t[31]=e.createElementVNode("div",{class:"field-hint"},"(不填直接触发)",-1)),t[32]||(t[32]=e.createElementVNode("div",{class:"section-title"},"触发规则",-1)),t[33]||(t[33]=e.createElementVNode("div",{class:"field-hint"},"(不填写条件则直接触发,填写后按条件触发)",-1)),e.createElementVNode("div",d1,[t[19]||(t[19]=e.createElementVNode("div",{class:"condition-label"},"当",-1)),t[20]||(t[20]=e.createElementVNode("div",{class:"condition-label"},"当前节点属性",-1)),e.createElementVNode("select",{class:"condition-select",value:((l=u.event.condition)==null?void 0:l.attribute)||"",onChange:t[5]||(t[5]=d=>r.$emit("update-condition","attribute",d))},[t[17]||(t[17]=e.createElementVNode("option",{value:""},"选择属性",-1)),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(u.nodeProperties,d=>(e.openBlock(),e.createElementBlock("option",{key:d.key,value:d.key},e.toDisplayString(d.label),9,f1))),128))],40,u1),t[21]||(t[21]=e.createElementVNode("div",{class:"condition-label"},"运算符",-1)),e.createElementVNode("select",{class:"condition-select",value:((n=u.event.condition)==null?void 0:n.operator)||"==",onChange:t[6]||(t[6]=d=>r.$emit("update-condition","operator",d))},[...t[18]||(t[18]=[e.createStaticVNode('<option value="==" data-v-af7c633a>等于</option><option value="!=" data-v-af7c633a>不等于</option><option value="&gt;" data-v-af7c633a>大于</option><option value="&gt;=" data-v-af7c633a>大于等于</option><option value="&lt;" data-v-af7c633a>小于</option><option value="&lt;=" data-v-af7c633a>小于等于</option><option value="contains" data-v-af7c633a>包含</option>',7)])],40,p1),t[22]||(t[22]=e.createElementVNode("div",{class:"condition-label"},"值",-1)),e.createElementVNode("input",{type:"text",class:"condition-input",value:((o=u.event.condition)==null?void 0:o.value)||"",onInput:t[7]||(t[7]=d=>r.$emit("update-condition","value",d)),placeholder:"输入值"},null,40,h1),t[23]||(t[23]=e.createElementVNode("div",{class:"condition-label"},"时",-1)),t[24]||(t[24]=e.createElementVNode("div",{class:"condition-label"},"触发该事件",-1))]),u.event.action==="attributeChange"?(e.openBlock(),e.createElementBlock("div",m1,[t[25]||(t[25]=e.createElementVNode("div",{class:"section-title"},"属性更改",-1)),e.createElementVNode("button",{class:"btn-config",onClick:t[8]||(t[8]=d=>r.$emit("open-attribute-config"))},"点击配置")])):e.createCommentVNode("",!0),u.event.action==="customCode"?(e.openBlock(),e.createElementBlock("div",g1,[t[26]||(t[26]=e.createElementVNode("div",{class:"section-title"},"自定义代码",-1)),e.createElementVNode("button",{class:"btn-config",onClick:t[9]||(t[9]=d=>r.$emit("open-custom-code"))},"点击配置")])):e.createCommentVNode("",!0),u.event.action==="callProcess"?(e.openBlock(),e.createElementBlock("div",y1,[t[29]||(t[29]=e.createElementVNode("div",{class:"section-title"},"调用流程",-1)),e.createElementVNode("button",{class:"btn-config",onClick:t[10]||(t[10]=d=>r.$emit("open-workflow-selector"))},"选择流程"),(i=u.event.params)!=null&&i.processId?(e.openBlock(),e.createElementBlock("div",b1,[e.createElementVNode("div",w1,[t[27]||(t[27]=e.createElementVNode("span",{class:"info-label"},"已选择:",-1)),e.createElementVNode("span",E1,e.toDisplayString(((a=u.event.params)==null?void 0:a.processName)||((s=u.event.params)==null?void 0:s.processId)),1)]),e.createElementVNode("div",v1,[t[28]||(t[28]=e.createElementVNode("label",null,"传入参数",-1)),e.createElementVNode("textarea",{value:((c=u.event.params)==null?void 0:c.processParams)||"",onInput:t[11]||(t[11]=d=>r.$emit("update-params","processParams",d)),placeholder:'JSON格式: {"param1":"value1","param2":"value2"}',rows:"3"},null,40,k1)])])):e.createCommentVNode("",!0)])):e.createCommentVNode("",!0)],512),[[e.vShow,!u.isCollapsed]])])}}}),[["__scopeId","data-v-af7c633a"]]),_1={class:"point-selector"},N1={class:"point-list-panel"},x1={class:"panel-header"},S1={class:"point-count"},V1={class:"search-box"},C1={class:"point-list"},I1={key:0,class:"empty-hint"},A1=["onClick"],$1={class:"point-info"},T1={class:"point-name"},B1={class:"point-meta"},D1={class:"point-code"},P1={key:0,class:"point-unit"},O1={class:"point-type"},M1={key:0,class:"point-value"},R1={class:"value"},j1={class:"modal-footer"},L1=["disabled"],U1=Me(e.defineComponent({__name:"DevicePointSelector",props:{visible:{type:Boolean},deviceId:{},deviceName:{},modelValue:{},deviceData:{}},emits:["update:visible","update:modelValue","confirm"],setup(u,{emit:r}){const t=u,l=r,n=e.ref(null),o=e.ref(null),i=e.ref("");e.watch(()=>{var p;return[(p=t.deviceData)==null?void 0:p.devices,t.deviceId]},([p,w])=>{if(p&&w){const v=p.find(S=>S.id===w);n.value=v||null}else n.value=null},{immediate:!0}),e.watch(()=>t.modelValue,p=>{p&&n.value&&(o.value=n.value.points.find(w=>w.id===p)||null)},{immediate:!0});const a=e.computed(()=>{if(!n.value)return[];const p=n.value.points;if(!i.value)return p;const w=i.value.toLowerCase();return p.filter(v=>{var S,y;return((S=v.name)==null?void 0:S.toLowerCase().includes(w))||((y=v.code)==null?void 0:y.toLowerCase().includes(w))})}),s=p=>{p.enabled&&(o.value=p)},c=()=>{l("update:visible",!1)},d=()=>{o.value&&(l("update:modelValue",o.value.id),l("confirm",o.value.id,o.value),l("update:visible",!1))},f=p=>({read:"只读",write:"只写",readWrite:"读写"})[p]||p,m=p=>({boolean:"布尔",number:"数值",string:"字符",json:"JSON"})[p]||p,h=p=>p.value===void 0||p.value===null?"-":p.dataType==="boolean"?p.value?"是":"否":p.dataType==="number"&&p.precision!==void 0?Number(p.value).toFixed(p.precision):String(p.value);return(p,w)=>u.visible?(e.openBlock(),e.createElementBlock("div",{key:0,class:"modal-overlay",onClick:c},[e.createElementVNode("div",{class:"modal-container",onClick:w[1]||(w[1]=e.withModifiers(()=>{},["stop"]))},[e.createElementVNode("div",{class:"modal-header"},[w[2]||(w[2]=e.createElementVNode("h3",null,"选择点位",-1)),e.createElementVNode("button",{class:"btn-close",onClick:c},"✕")]),e.createElementVNode("div",_1,[e.createElementVNode("div",N1,[e.createElementVNode("div",x1,[e.createElementVNode("h4",null,e.toDisplayString(u.deviceName||"点位列表"),1),e.createElementVNode("span",S1,e.toDisplayString(a.value.length),1)]),e.createElementVNode("div",V1,[e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":w[0]||(w[0]=v=>i.value=v),type:"text",placeholder:"搜索点位...",class:"search-input"},null,512),[[e.vModelText,i.value]])]),e.createElementVNode("div",C1,[a.value.length===0?(e.openBlock(),e.createElementBlock("div",I1," 暂无点位 ")):(e.openBlock(!0),e.createElementBlock(e.Fragment,{key:1},e.renderList(a.value,v=>{var S;return e.openBlock(),e.createElementBlock("div",{key:v.id,class:e.normalizeClass(["point-item",{active:((S=o.value)==null?void 0:S.id)===v.id,disabled:!v.enabled}]),onClick:y=>s(v)},[e.createElementVNode("div",$1,[e.createElementVNode("div",T1,[e.createTextVNode(e.toDisplayString(v.name)+" ",1),e.createElementVNode("span",{class:e.normalizeClass(["access-mode",v.accessMode])},e.toDisplayString(f(v.accessMode)),3)]),e.createElementVNode("div",B1,[e.createElementVNode("span",D1,e.toDisplayString(v.code),1),v.unit?(e.openBlock(),e.createElementBlock("span",P1,e.toDisplayString(v.unit),1)):e.createCommentVNode("",!0),e.createElementVNode("span",O1,e.toDisplayString(m(v.dataType)),1)]),v.value!==void 0?(e.openBlock(),e.createElementBlock("div",M1,[w[3]||(w[3]=e.createTextVNode(" 当前值: ",-1)),e.createElementVNode("span",R1,e.toDisplayString(h(v)),1),e.createElementVNode("span",{class:e.normalizeClass(["quality",v.quality])},e.toDisplayString(v.quality),3)])):e.createCommentVNode("",!0)])],10,A1)}),128))])])]),e.createElementVNode("div",j1,[e.createElementVNode("button",{class:"btn-cancel",onClick:c},"取消"),e.createElementVNode("button",{class:"btn-confirm",disabled:!o.value,onClick:d}," 确定 ",8,L1)])])])):e.createCommentVNode("",!0)}}),[["__scopeId","data-v-d75f8845"]]);var Jt=(u=>(u.DIRECT="direct",u.BOOLEAN="boolean",u.RANGE="range",u.ENUM="enum",u))(Jt||{}),wr=(u=>(u.BOOLEAN="boolean",u.NUMBER="number",u.STRING="string",u))(wr||{});const F1={class:"mapping-configurator"},z1={class:"config-item"},W1={key:0,class:"field-hint error"},q1={key:1,class:"field-hint"},G1={class:"config-item"},H1={key:0,class:"field-hint error"},K1={key:1,class:"field-hint"},Q1={key:0,class:"config-item"},Y1={class:"unit-config"},J1={class:"checkbox-label"},X1={key:0,class:"custom-unit"},Z1={key:1,class:"mapping-details"},ew={class:"config-item"},tw={class:"config-item"},rw={key:2,class:"mapping-details"},ow={class:"range-rules"},nw=["onUpdate:modelValue"],iw=["onUpdate:modelValue"],sw=["onUpdate:modelValue"],aw=["onClick"],lw={key:3,class:"mapping-details"},cw={class:"enum-mappings"},dw=["value","onInput"],uw=["onUpdate:modelValue"],fw=["onClick"],pw={key:4,class:"mapping-preview"},hw={class:"preview-content"},mw={class:"preview-item"},gw={class:"preview-output"},yw={class:"preview-item"},bw={class:"preview-output"},ww={class:"preview-input"},Ew={class:"preview-output"},vw={class:"preview-input"},kw={class:"preview-output"},_w=Me(e.defineComponent({__name:"MappingConfigurator",props:{visible:{type:Boolean},modelValue:{}},emits:["update:visible","update:modelValue","confirm"],setup(u,{emit:r}){const t=u,l=r,n=e.ref(t.modelValue||{type:"",valueType:""});e.watch(()=>t.modelValue,S=>{S&&(n.value={...S})},{deep:!0});const o=()=>{n.value.type||(n.value.valueType===wr.BOOLEAN?n.value.type=Jt.BOOLEAN:n.value.valueType===wr.NUMBER?n.value.type=Jt.RANGE:n.value.type=Jt.DIRECT),n.value.valueType!==wr.NUMBER&&(delete n.value.keepOriginalUnit,delete n.value.customUnit)},i=S=>({boolean:"适用于开关状态、是否判断等场景",number:"适用于温度、压力、流量等数值型数据",string:"适用于文本、状态码等字符型数据"})[S]||"",a=S=>({direct:"不做任何转换,直接使用原始值",boolean:"根据 true/false 转换为不同的值",range:"根据数值范围转换为对应值",enum:"根据枚举键值对转换"})[S]||"",s=()=>{const S=n.value.valueType;n.value={type:n.value.type,valueType:S},n.value.type===Jt.RANGE?n.value.rangeRules=[]:n.value.type===Jt.ENUM&&(n.value.enumMappings={})},c=()=>{n.value.rangeRules||(n.value.rangeRules=[]),n.value.rangeRules.push({min:0,max:100,value:""})},d=S=>{var y;(y=n.value.rangeRules)==null||y.splice(S,1)},f=()=>{n.value.enumMappings||(n.value.enumMappings={});const S=`key_${Object.keys(n.value.enumMappings).length+1}`;n.value.enumMappings[S]=""},m=S=>{n.value.enumMappings&&delete n.value.enumMappings[S]},h=(S,y)=>{const k=S.target.value;if(!n.value.enumMappings||k===y)return;const _=n.value.enumMappings[y];delete n.value.enumMappings[y],n.value.enumMappings[k]=_},p=()=>{},w=()=>{l("update:visible",!1)},v=()=>{if(!n.value.valueType){alert("请选择值类型!");return}if(!n.value.type){alert("请选择映射类型!");return}l("update:modelValue",{...n.value}),l("confirm",{...n.value}),l("update:visible",!1)};return(S,y)=>u.visible?(e.openBlock(),e.createElementBlock("div",{key:0,class:"modal-overlay",onClick:w},[e.createElementVNode("div",{class:"modal-container",onClick:y[6]||(y[6]=e.withModifiers(()=>{},["stop"]))},[e.createElementVNode("div",{class:"modal-header"},[y[7]||(y[7]=e.createElementVNode("h3",null,"值映射配置",-1)),e.createElementVNode("button",{class:"btn-close",onClick:w},"✕")]),e.createElementVNode("div",F1,[e.createElementVNode("div",z1,[y[9]||(y[9]=e.createElementVNode("label",null,[e.createTextVNode("值类型 "),e.createElementVNode("span",{class:"required"},"*")],-1)),e.withDirectives(e.createElementVNode("select",{"onUpdate:modelValue":y[0]||(y[0]=k=>n.value.valueType=k),onChange:o},[...y[8]||(y[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,n.value.valueType]]),n.value.valueType?(e.openBlock(),e.createElementBlock("div",q1,e.toDisplayString(i(n.value.valueType)),1)):(e.openBlock(),e.createElementBlock("div",W1," 值类型为必填项 "))]),e.createElementVNode("div",G1,[y[11]||(y[11]=e.createElementVNode("label",null,[e.createTextVNode("映射类型 "),e.createElementVNode("span",{class:"required"},"*")],-1)),e.withDirectives(e.createElementVNode("select",{"onUpdate:modelValue":y[1]||(y[1]=k=>n.value.type=k),onChange:s},[...y[10]||(y[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,n.value.type]]),n.value.type?(e.openBlock(),e.createElementBlock("div",K1,e.toDisplayString(a(n.value.type)),1)):(e.openBlock(),e.createElementBlock("div",H1," 映射类型为必填项 "))]),n.value.valueType==="number"?(e.openBlock(),e.createElementBlock("div",Q1,[y[13]||(y[13]=e.createElementVNode("label",null,"单位配置",-1)),e.createElementVNode("div",Y1,[e.createElementVNode("label",J1,[e.withDirectives(e.createElementVNode("input",{type:"checkbox","onUpdate:modelValue":y[2]||(y[2]=k=>n.value.keepOriginalUnit=k),onChange:p},null,544),[[e.vModelCheckbox,n.value.keepOriginalUnit]]),y[12]||(y[12]=e.createTextVNode(" 保留点位原始单位 ",-1))]),n.value.keepOriginalUnit?e.createCommentVNode("",!0):(e.openBlock(),e.createElementBlock("div",X1,[e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":y[3]||(y[3]=k=>n.value.customUnit=k),type:"text",placeholder:"自定义单位,如: °C, MPa, %",onInput:p},null,544),[[e.vModelText,n.value.customUnit]])]))])])):e.createCommentVNode("",!0),n.value.type==="boolean"?(e.openBlock(),e.createElementBlock("div",Z1,[e.createElementVNode("div",ew,[y[14]||(y[14]=e.createElementVNode("label",null,"True 时的值",-1)),e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":y[4]||(y[4]=k=>n.value.trueValue=k),type:"text",placeholder:"例如: 运行、#00ff00",onInput:p},null,544),[[e.vModelText,n.value.trueValue]])]),e.createElementVNode("div",tw,[y[15]||(y[15]=e.createElementVNode("label",null,"False 时的值",-1)),e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":y[5]||(y[5]=k=>n.value.falseValue=k),type:"text",placeholder:"例如: 停止、#ff0000",onInput:p},null,544),[[e.vModelText,n.value.falseValue]])])])):e.createCommentVNode("",!0),n.value.type==="range"?(e.openBlock(),e.createElementBlock("div",rw,[e.createElementVNode("div",ow,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(n.value.rangeRules,(k,_)=>(e.openBlock(),e.createElementBlock("div",{key:_,class:"range-rule"},[e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":E=>k.min=E,type:"number",placeholder:"最小值",onInput:p},null,40,nw),[[e.vModelText,k.min,void 0,{number:!0}]]),y[16]||(y[16]=e.createElementVNode("span",{class:"range-separator"},"~",-1)),e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":E=>k.max=E,type:"number",placeholder:"最大值",onInput:p},null,40,iw),[[e.vModelText,k.max,void 0,{number:!0}]]),y[17]||(y[17]=e.createElementVNode("span",{class:"range-arrow"},"→",-1)),e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":E=>k.value=E,type:"text",placeholder:"映射值",onInput:p},null,40,sw),[[e.vModelText,k.value]]),e.createElementVNode("button",{class:"btn-remove-rule",onClick:E=>d(_),title:"删除规则"}," ✕ ",8,aw)]))),128))]),e.createElementVNode("button",{class:"btn-add-rule",onClick:c}," + 添加范围规则 ")])):e.createCommentVNode("",!0),n.value.type==="enum"?(e.openBlock(),e.createElementBlock("div",lw,[e.createElementVNode("div",cw,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(n.value.enumMappings,(k,_,E)=>(e.openBlock(),e.createElementBlock("div",{key:E,class:"enum-mapping"},[e.createElementVNode("input",{value:_,type:"text",placeholder:"原始值",onInput:I=>h(I,_)},null,40,dw),y[18]||(y[18]=e.createElementVNode("span",{class:"enum-arrow"},"→",-1)),e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":I=>n.value.enumMappings[_]=I,type:"text",placeholder:"映射值",onInput:p},null,40,uw),[[e.vModelText,n.value.enumMappings[_]]]),e.createElementVNode("button",{class:"btn-remove-rule",onClick:I=>m(_),title:"删除映射"}," ✕ ",8,fw)]))),128))]),e.createElementVNode("button",{class:"btn-add-rule",onClick:f}," + 添加枚举映射 ")])):e.createCommentVNode("",!0),n.value.type!=="direct"?(e.openBlock(),e.createElementBlock("div",pw,[y[25]||(y[25]=e.createElementVNode("label",null,"映射预览",-1)),e.createElementVNode("div",hw,[n.value.type==="boolean"?(e.openBlock(),e.createElementBlock(e.Fragment,{key:0},[e.createElementVNode("div",mw,[y[19]||(y[19]=e.createElementVNode("span",{class:"preview-input"},"true",-1)),y[20]||(y[20]=e.createElementVNode("span",{class:"preview-arrow"},"→",-1)),e.createElementVNode("span",gw,e.toDisplayString(n.value.trueValue||"true"),1)]),e.createElementVNode("div",yw,[y[21]||(y[21]=e.createElementVNode("span",{class:"preview-input"},"false",-1)),y[22]||(y[22]=e.createElementVNode("span",{class:"preview-arrow"},"→",-1)),e.createElementVNode("span",bw,e.toDisplayString(n.value.falseValue||"false"),1)])],64)):n.value.type==="range"?(e.openBlock(!0),e.createElementBlock(e.Fragment,{key:1},e.renderList(n.value.rangeRules,(k,_)=>(e.openBlock(),e.createElementBlock("div",{key:_,class:"preview-item"},[e.createElementVNode("span",ww,"["+e.toDisplayString(k.min)+" ~ "+e.toDisplayString(k.max)+"]",1),y[23]||(y[23]=e.createElementVNode("span",{class:"preview-arrow"},"→",-1)),e.createElementVNode("span",Ew,e.toDisplayString(k.value),1)]))),128)):n.value.type==="enum"?(e.openBlock(!0),e.createElementBlock(e.Fragment,{key:2},e.renderList(n.value.enumMappings,(k,_)=>(e.openBlock(),e.createElementBlock("div",{key:_,class:"preview-item"},[e.createElementVNode("span",vw,e.toDisplayString(_),1),y[24]||(y[24]=e.createElementVNode("span",{class:"preview-arrow"},"→",-1)),e.createElementVNode("span",kw,e.toDisplayString(k),1)]))),128)):e.createCommentVNode("",!0)])])):e.createCommentVNode("",!0)]),e.createElementVNode("div",{class:"modal-footer"},[e.createElementVNode("button",{class:"btn-cancel",onClick:w},"取消"),e.createElementVNode("button",{class:"btn-confirm",onClick:v},"确定")])])])):e.createCommentVNode("",!0)}}),[["__scopeId","data-v-ef9e0ee1"]]),Nw={class:"event-card"},xw={class:"header-left"},Sw={class:"collapse-icon"},Vw={class:"event-title"},Cw={class:"event-card-body"},Iw={class:"property-item"},Aw={key:0,class:"selected-point"},$w={class:"point-main"},Tw={class:"device-name"},Bw={class:"point-name"},Dw={class:"point-details"},Pw={class:"point-code"},Ow={key:0,class:"point-unit"},Mw={key:1,class:"placeholder"},Rw={class:"property-item"},jw=["value"],Lw=["value"],Uw={class:"property-item"},Fw={key:0,class:"mapping-summary"},zw={class:"mapping-type-label"},Ww={class:"mapping-detail"},qw={key:1,class:"placeholder"},Oi=Me(e.defineComponent({__name:"BindingCard",props:{binding:{},index:{},isCollapsed:{type:Boolean},nodeProperties:{},deviceData:{},nodeDeviceId:{},nodeDeviceName:{}},emits:["toggle-collapse","remove","update-field"],setup(u,{emit:r}){const t=u,l=r,n=e.ref(""),o=e.ref(!1),i=e.ref(!1),a=e.ref(t.binding.mapping||{type:Jt.DIRECT,valueType:wr.NUMBER});if(t.binding.devicePointId){const p=t.binding.devicePointId.split(":");p.length===2?n.value=p[1]:n.value=t.binding.devicePointId}const s=e.computed(()=>t.deviceData||{});e.watch(()=>t.binding.devicePointId,p=>{if(p){const w=p.split(":");w.length===2?n.value=w[1]:n.value=p}else n.value=""}),e.watch(()=>t.binding.mapping,p=>{p&&(a.value=p)},{deep:!0});const c=e.computed(()=>{var y;if(!n.value||!t.nodeDeviceId)return null;const p=t.nodeDeviceId,w=n.value;let v=null,S=null;return t.deviceData&&t.deviceData.devices&&(v=t.deviceData.devices.find(k=>k.id===p),v&&(S=((y=v.points)==null?void 0:y.find(k=>k.id===w))||null)),!v||!S?null:{deviceName:v.name,pointName:S.name,pointCode:S.code,pointUnit:S.unit}}),d=(p,w)=>{const v=`${t.nodeDeviceId}:${p}`,S=new Event("change");Object.defineProperty(S,"target",{value:{value:v},writable:!1}),l("update-field","devicePointId",S),console.log("选择了点位:",{deviceId:t.nodeDeviceId,pointId:p,pointName:w.name,dataType:w.dataType,accessMode:w.accessMode})},f=p=>{const w=new Event("change");Object.defineProperty(w,"target",{value:{value:p},writable:!1}),l("update-field","mapping",w)},m=p=>({direct:"直接映射",boolean:"布尔映射",range:"范围映射",enum:"枚举映射"})[p]||p,h=()=>{const p=a.value;return p.type==="boolean"?`True:${p.trueValue||"true"} / False:${p.falseValue||"false"}`:p.type==="range"&&p.rangeRules?`${p.rangeRules.length} 个范围规则`:p.type==="enum"&&p.enumMappings?`${Object.keys(p.enumMappings).length} 个枚举映射`:""};return(p,w)=>(e.openBlock(),e.createElementBlock("div",Nw,[e.createElementVNode("div",{class:"event-card-header",onClick:w[1]||(w[1]=v=>p.$emit("toggle-collapse"))},[e.createElementVNode("div",xw,[e.createElementVNode("span",Sw,e.toDisplayString(u.isCollapsed?"▶":"▼"),1),e.createElementVNode("span",Vw,"绑定"+e.toDisplayString(u.index+1),1)]),e.createElementVNode("button",{class:"btn-remove",onClick:w[0]||(w[0]=e.withModifiers(v=>p.$emit("remove"),["stop"])),title:"删除绑定"},"🗑")]),e.withDirectives(e.createElementVNode("div",Cw,[e.createElementVNode("div",Iw,[w[10]||(w[10]=e.createElementVNode("label",null,"设备点位",-1)),e.createElementVNode("div",{class:"point-selector-trigger",onClick:w[2]||(w[2]=v=>o.value=!0)},[c.value?(e.openBlock(),e.createElementBlock("div",Aw,[e.createElementVNode("div",$w,[e.createElementVNode("span",Tw,e.toDisplayString(c.value.deviceName),1),e.createElementVNode("span",Bw,e.toDisplayString(c.value.pointName),1)]),e.createElementVNode("div",Dw,[e.createElementVNode("span",Pw,e.toDisplayString(c.value.pointCode),1),c.value.pointUnit?(e.openBlock(),e.createElementBlock("span",Ow,e.toDisplayString(c.value.pointUnit),1)):e.createCommentVNode("",!0)])])):(e.openBlock(),e.createElementBlock("div",Mw," 点击选择设备点位 ")),w[9]||(w[9]=e.createElementVNode("span",{class:"selector-arrow"},"›",-1))])]),e.createVNode(U1,{visible:o.value,"onUpdate:visible":w[3]||(w[3]=v=>o.value=v),modelValue:n.value,"onUpdate:modelValue":w[4]||(w[4]=v=>n.value=v),"device-id":t.nodeDeviceId||"","device-name":t.nodeDeviceName,"device-data":s.value,onConfirm:d},null,8,["visible","modelValue","device-id","device-name","device-data"]),e.createElementVNode("div",Rw,[w[12]||(w[12]=e.createElementVNode("label",null,"目标属性",-1)),e.createElementVNode("select",{value:u.binding.targetProperty||"",onChange:w[5]||(w[5]=v=>p.$emit("update-field","targetProperty",v))},[w[11]||(w[11]=e.createElementVNode("option",{value:""},"选择属性",-1)),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(u.nodeProperties,v=>(e.openBlock(),e.createElementBlock("option",{key:v.key,value:v.key},e.toDisplayString(v.label),9,Lw))),128))],40,jw)]),e.createElementVNode("div",Uw,[w[14]||(w[14]=e.createElementVNode("label",null,"值映射配置",-1)),e.createElementVNode("div",{class:"mapping-trigger",onClick:w[6]||(w[6]=v=>i.value=!0)},[a.value.type!=="direct"?(e.openBlock(),e.createElementBlock("div",Fw,[e.createElementVNode("span",zw,e.toDisplayString(m(a.value.type)),1),e.createElementVNode("span",Ww,e.toDisplayString(h()),1)])):(e.openBlock(),e.createElementBlock("div",qw," 点击配置值映射 ")),w[13]||(w[13]=e.createElementVNode("span",{class:"selector-arrow"},"›",-1))])]),e.createVNode(_w,{visible:i.value,"onUpdate:visible":w[7]||(w[7]=v=>i.value=v),modelValue:a.value,"onUpdate:modelValue":w[8]||(w[8]=v=>a.value=v),onConfirm:f},null,8,["visible","modelValue"])],512),[[e.vShow,!u.isCollapsed]])]))}}),[["__scopeId","data-v-7a57195b"]]),Gw={class:"dialog-content"},Hw={class:"dialog-header"},Kw={class:"dialog-body"},Qw={class:"group-row"},Yw={class:"group-field"},Jw=["value","onChange"],Xw=["value"],Zw={class:"group-field group-field-value"},eE=["value","onInput"],tE=["value","onInput"],rE={key:2,class:"color-input-wrapper"},oE=["value","onInput"],nE={class:"color-value"},iE=["value","onChange"],sE=["onClick"],aE={key:0,class:"empty-hint"},lE={class:"dialog-footer"},Mi=Me(e.defineComponent({__name:"AttributeConfigDialog",props:{attributeGroups:{},nodeProperties:{}},emits:["close","save","add-group","remove-group","update-group"],setup(u,{emit:r}){const t=u,l=r,n=a=>{const s=t.nodeProperties.find(c=>c.key===a);return(s==null?void 0:s.type)||"text"},o=(a,s,c)=>{const d=c.target.value;l("update-group",a,s,d)},i=()=>{for(const a of t.attributeGroups)if(!a.property){alert("请为每组配置选择目标属性");return}l("save")};return(a,s)=>(e.openBlock(),e.createElementBlock("div",{class:"dialog-overlay",onClick:s[3]||(s[3]=e.withModifiers(c=>a.$emit("close"),["self"]))},[e.createElementVNode("div",Gw,[e.createElementVNode("div",Hw,[s[4]||(s[4]=e.createElementVNode("h3",null,"事件属性更改配置",-1)),e.createElementVNode("button",{class:"btn-close",onClick:s[0]||(s[0]=c=>a.$emit("close"))},"×")]),e.createElementVNode("div",Kw,[e.createElementVNode("button",{class:"btn-add-group",onClick:s[1]||(s[1]=c=>a.$emit("add-group"))},"新增一组"),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(u.attributeGroups,(c,d)=>(e.openBlock(),e.createElementBlock("div",{key:d,class:"attribute-group"},[e.createElementVNode("div",Qw,[e.createElementVNode("div",Yw,[s[6]||(s[6]=e.createElementVNode("label",null,"目标属性",-1)),e.createElementVNode("select",{value:c.property,onChange:f=>o(d,"property",f)},[s[5]||(s[5]=e.createElementVNode("option",{value:""},"选择目标属性",-1)),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(u.nodeProperties,f=>(e.openBlock(),e.createElementBlock("option",{key:f.key,value:f.key},e.toDisplayString(f.label),9,Xw))),128))],40,Jw)]),e.createElementVNode("div",Zw,[s[8]||(s[8]=e.createElementVNode("label",null,"期望值",-1)),!c.property||n(c.property)==="text"?(e.openBlock(),e.createElementBlock("input",{key:0,value:c.value,type:"text",onInput:f=>o(d,"value",f),placeholder:"输入值"},null,40,eE)):n(c.property)==="number"?(e.openBlock(),e.createElementBlock("input",{key:1,value:c.value,type:"number",onInput:f=>o(d,"value",f),placeholder:"输入数字"},null,40,tE)):n(c.property)==="color"?(e.openBlock(),e.createElementBlock("div",rE,[e.createElementVNode("input",{value:c.value,type:"color",onInput:f=>o(d,"value",f)},null,40,oE),e.createElementVNode("span",nE,e.toDisplayString(c.value||"#000000"),1)])):n(c.property)==="boolean"?(e.openBlock(),e.createElementBlock("select",{key:3,value:c.value,onChange:f=>o(d,"value",f)},[...s[7]||(s[7]=[e.createElementVNode("option",{value:"true"},"是",-1),e.createElementVNode("option",{value:"false"},"否",-1)])],40,iE)):e.createCommentVNode("",!0)]),e.createElementVNode("button",{class:"btn-delete-group",onClick:f=>a.$emit("remove-group",d),title:"删除"}," 🗑 ",8,sE)])]))),128)),u.attributeGroups.length===0?(e.openBlock(),e.createElementBlock("div",aE,' 请点击"新增一组"按钮添加属性配置 ')):e.createCommentVNode("",!0)]),e.createElementVNode("div",lE,[e.createElementVNode("button",{class:"btn-cancel",onClick:s[2]||(s[2]=c=>a.$emit("close"))},"取消"),e.createElementVNode("button",{class:"btn-confirm",onClick:i},"确定")])])]))}}),[["__scopeId","data-v-90af9944"]]),cE={class:"dialog-content dialog-large"},dE={class:"dialog-header"},uE={class:"dialog-body dialog-body-split"},fE={class:"code-editor-section"},pE=["value"],hE={class:"code-preview-section"},mE={class:"section-header"},gE={class:"preview-status"},yE={key:0,class:"status-success"},bE={key:1,class:"status-error"},wE={class:"preview-canvas"},EE={key:0,class:"preview-empty"},vE={key:1,class:"preview-error-box"},kE={class:"error-message"},_E={key:2,class:"preview-node-container"},NE={key:0,class:"console-output"},xE={class:"console-logs"},SE={class:"dialog-footer"},VE=`function execute(node) {
7
24
  // 修改节点填充颜色为红色
8
25
  node.attr('body/fill', '#ff0000');
9
26
 
@@ -13,7 +30,7 @@
13
30
  // 获取当前节点位置
14
31
  const pos = node.getPosition();
15
32
  console.log('X:', pos.x, 'Y:', pos.y);
16
- }`,Ae=P(e.defineComponent({__name:"CustomCodeDialog",props:{code:{},selectedNode:{}},emits:["update:code","close","save"],setup(s,{expose:l}){const o=s,r=e.ref(null),t=e.ref(null);let a=null,c=null;const d=async()=>{var u;if(!o.selectedNode){t.value={success:!1,logs:[],error:"没有选中的节点"};return}const f=(u=o.selectedNode.model)==null?void 0:u.graph;if(!f){t.value={success:!1,logs:[],error:"无法获取画布对象"};return}t.value={success:!0,logs:[],result:void 0};const m=[],n=console.log;try{if(await e.nextTick(),await p(),!c||!a){t.value={success:!1,logs:[],error:"预览画布初始化失败"};return}console.log=(...D)=>{m.push(D.map(x=>typeof x=="object"?JSON.stringify(x,null,2):String(x)).join(" ")),n(...D)};let h=o.code.trim();h.startsWith("function")&&(h=`${h}; execute(node, graph, event);`);const i=new Function("node","graph","event",h),g=new Proxy(o.selectedNode,{get(D,x){return x==="attr"?function(...k){return k.length===1?D.attr(k[0]):c?c.attr(k[0],k[1]):void 0}:D[x]}}),$=i(g,f,{});c&&a&&(c.removeTools(),a.drawBackground(),c.toJSON()),t.value={success:!0,logs:m,result:$!==void 0?typeof $=="object"?JSON.stringify($,null,2):String($):void 0}}catch(h){t.value={success:!1,logs:m,error:h.message||String(h)}}finally{console.log=n}},p=async()=>{var u;if(!r.value||!o.selectedNode)return;await e.nextTick();const f=r.value.clientWidth,m=r.value.clientHeight;if(f===0||m===0)return;r.value.innerHTML="",a&&(a.dispose(),a=null,c=null),a=new ee.Graph({container:r.value,width:f,height:Math.max(m-100,300),background:{color:"#0f172a"},grid:{size:10,visible:!0,type:"dot",args:{color:"#1e293b",thickness:1}},interacting:!1});const n=o.selectedNode.toJSON();try{c=a.addNode({...n,position:{x:f/2-(((u=n.size)==null?void 0:u.width)||100)/2,y:100}})}catch(h){console.error("添加预览节点失败:",h)}};return l({previewContainer:r,DEFAULT_CODE:Ds}),(f,m)=>{var n,u;return e.openBlock(),e.createElementBlock("div",{class:"dialog-overlay",onClick:m[4]||(m[4]=e.withModifiers(h=>f.$emit("close"),["self"]))},[e.createElementVNode("div",fs,[e.createElementVNode("div",us,[m[5]||(m[5]=e.createElementVNode("h3",null,"自定义代码配置",-1)),e.createElementVNode("button",{class:"btn-close",onClick:m[0]||(m[0]=h=>f.$emit("close"))},"×")]),e.createElementVNode("div",gs,[e.createElementVNode("div",hs,[e.createElementVNode("div",{class:"section-header"},[m[6]||(m[6]=e.createElementVNode("label",null,"JavaScript代码",-1)),e.createElementVNode("button",{class:"btn-test",onClick:d},"测试执行")]),e.createElementVNode("textarea",{value:s.code,onInput:m[1]||(m[1]=h=>f.$emit("update:code",h.target.value)),placeholder:`function execute(node) {
33
+ }`,Ri=Me(e.defineComponent({__name:"CustomCodeDialog",props:{code:{},selectedNode:{}},emits:["update:code","close","save"],setup(u,{expose:r}){const t=u,l=e.ref(null),n=e.ref(null);let o=null,i=null;const a=async()=>{var m;if(!t.selectedNode){n.value={success:!1,logs:[],error:"没有选中的节点"};return}const c=(m=t.selectedNode.model)==null?void 0:m.graph;if(!c){n.value={success:!1,logs:[],error:"无法获取画布对象"};return}n.value={success:!0,logs:[],result:void 0};const d=[],f=console.log;try{if(await e.nextTick(),await s(),!i||!o){n.value={success:!1,logs:[],error:"预览画布初始化失败"};return}console.log=(...S)=>{d.push(S.map(y=>typeof y=="object"?JSON.stringify(y,null,2):String(y)).join(" ")),f(...S)};let h=t.code.trim();h.startsWith("function")&&(h=`${h}; execute(node, graph, event);`);const p=new Function("node","graph","event",h),w=new Proxy(t.selectedNode,{get(S,y){return y==="attr"?function(...k){return k.length===1?S.attr(k[0]):i?i.attr(k[0],k[1]):void 0}:S[y]}}),v=p(w,c,{});i&&o&&(i.removeTools(),o.drawBackground(),i.toJSON()),n.value={success:!0,logs:d,result:v!==void 0?typeof v=="object"?JSON.stringify(v,null,2):String(v):void 0}}catch(h){n.value={success:!1,logs:d,error:h.message||String(h)}}finally{console.log=f}},s=async()=>{var m;if(!l.value||!t.selectedNode)return;await e.nextTick();const c=l.value.clientWidth,d=l.value.clientHeight;if(c===0||d===0)return;l.value.innerHTML="",o&&(o.dispose(),o=null,i=null),o=new Le.Graph({container:l.value,width:c,height:Math.max(d-100,300),background:{color:"#0f172a"},grid:{size:10,visible:!0,type:"dot",args:{color:"#1e293b",thickness:1}},interacting:!1});const f=t.selectedNode.toJSON();try{i=o.addNode({...f,position:{x:c/2-(((m=f.size)==null?void 0:m.width)||100)/2,y:100}})}catch(h){console.error("添加预览节点失败:",h)}};return r({previewContainer:l,DEFAULT_CODE:VE}),(c,d)=>{var f,m;return e.openBlock(),e.createElementBlock("div",{class:"dialog-overlay",onClick:d[4]||(d[4]=e.withModifiers(h=>c.$emit("close"),["self"]))},[e.createElementVNode("div",cE,[e.createElementVNode("div",dE,[d[5]||(d[5]=e.createElementVNode("h3",null,"自定义代码配置",-1)),e.createElementVNode("button",{class:"btn-close",onClick:d[0]||(d[0]=h=>c.$emit("close"))},"×")]),e.createElementVNode("div",uE,[e.createElementVNode("div",fE,[e.createElementVNode("div",{class:"section-header"},[d[6]||(d[6]=e.createElementVNode("label",null,"JavaScript代码",-1)),e.createElementVNode("button",{class:"btn-test",onClick:a},"测试执行")]),e.createElementVNode("textarea",{value:u.code,onInput:d[1]||(d[1]=h=>c.$emit("update:code",h.target.value)),placeholder:`function execute(node) {
17
34
  // 修改节点填充颜色为红色
18
35
  node.attr('body/fill', '#ff0000');
19
36
 
@@ -23,23 +40,23 @@
23
40
  // 获取当前节点位置
24
41
  const pos = node.getPosition();
25
42
  console.log('X:', pos.x, 'Y:', pos.y);
26
- }`,class:"code-textarea code-textarea-full"},null,40,ys)]),e.createElementVNode("div",bs,[e.createElementVNode("div",ks,[m[7]||(m[7]=e.createElementVNode("label",null,"组件预览",-1)),e.createElementVNode("div",Es,[(n=t.value)!=null&&n.success?(e.openBlock(),e.createElementBlock("span",Ns,"✓ 执行成功")):(u=t.value)!=null&&u.error?(e.openBlock(),e.createElementBlock("span",Vs,"✗ 执行失败")):e.createCommentVNode("",!0)])]),e.createElementVNode("div",xs,[t.value?t.value.error?(e.openBlock(),e.createElementBlock("div",$s,[m[8]||(m[8]=e.createElementVNode("div",{class:"error-title"},"错误信息:",-1)),e.createElementVNode("div",Cs,e.toDisplayString(t.value.error),1)])):(e.openBlock(),e.createElementBlock("div",_s,[e.createElementVNode("div",{ref_key:"previewContainer",ref:r,class:"node-preview"},null,512),t.value.logs.length>0?(e.openBlock(),e.createElementBlock("div",vs,[m[9]||(m[9]=e.createElementVNode("div",{class:"console-title"},"控制台输出:",-1)),e.createElementVNode("div",Bs,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(t.value.logs,(h,i)=>(e.openBlock(),e.createElementBlock("div",{key:i,class:"log-item"},e.toDisplayString(h),1))),128))])])):e.createCommentVNode("",!0)])):(e.openBlock(),e.createElementBlock("div",ws,' 点击"测试执行"按钮查看组件预览效果 '))])])]),e.createElementVNode("div",Ss,[e.createElementVNode("button",{class:"btn-cancel",onClick:m[2]||(m[2]=h=>f.$emit("close"))},"取消"),e.createElementVNode("button",{class:"btn-confirm",onClick:m[3]||(m[3]=h=>f.$emit("save"))},"确定")])])])}}}),[["__scopeId","data-v-add3567b"]]),Is={class:"dialog-container"},Ts={class:"dialog-header"},zs={class:"dialog-body"},Ms={key:0,class:"empty-state"},As={key:1,class:"workflow-list"},Ps=["onClick"],Os={class:"workflow-info"},Ls={class:"workflow-name"},Rs={class:"workflow-meta"},Us={class:"workflow-id"},Ws={class:"workflow-date"},Fs={class:"workflow-actions"},Gs=["onClick"],js={class:"dialog-footer"},Hs=["disabled"],qs=P(e.defineComponent({__name:"WorkflowSelectorDialog",emits:["close","select"],setup(s,{emit:l}){const o=l,r=e.ref([]),t=e.ref(null),a=()=>{try{const m=localStorage.getItem("saved-workflows");m&&(r.value=JSON.parse(m))}catch(m){console.error("加载流程列表失败:",m)}},c=m=>{t.value=m},d=m=>{console.log("预览流程:",m)},p=()=>{t.value&&o("select",t.value)},f=m=>new Date(m).toLocaleString("zh-CN",{year:"numeric",month:"2-digit",day:"2-digit",hour:"2-digit",minute:"2-digit"});return e.onMounted(()=>{a()}),(m,n)=>(e.openBlock(),e.createElementBlock("div",{class:"dialog-overlay",onClick:n[2]||(n[2]=e.withModifiers(u=>m.$emit("close"),["self"]))},[e.createElementVNode("div",Is,[e.createElementVNode("div",Ts,[n[3]||(n[3]=e.createElementVNode("h3",null,"选择流程",-1)),e.createElementVNode("button",{class:"btn-close",onClick:n[0]||(n[0]=u=>m.$emit("close"))},"×")]),e.createElementVNode("div",zs,[r.value.length===0?(e.openBlock(),e.createElementBlock("div",Ms,[...n[4]||(n[4]=[e.createElementVNode("p",null,"暂无已保存的流程",-1),e.createElementVNode("p",{class:"hint"},"请先在流程编辑器中创建并保存流程",-1)])])):(e.openBlock(),e.createElementBlock("div",As,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(r.value,u=>{var h;return e.openBlock(),e.createElementBlock("div",{key:u.id,class:e.normalizeClass(["workflow-item",{selected:((h=t.value)==null?void 0:h.id)===u.id}]),onClick:i=>c(u)},[e.createElementVNode("div",Os,[e.createElementVNode("div",Ls,e.toDisplayString(u.name),1),e.createElementVNode("div",Rs,[e.createElementVNode("span",Us,"ID: "+e.toDisplayString(u.id),1),e.createElementVNode("span",Ws,e.toDisplayString(f(u.createdAt)),1)])]),e.createElementVNode("div",Fs,[e.createElementVNode("button",{class:"btn-icon",onClick:e.withModifiers(i=>d(u),["stop"]),title:"预览"}," 👁️ ",8,Gs)])],10,Ps)}),128))]))]),e.createElementVNode("div",js,[e.createElementVNode("button",{class:"btn-secondary",onClick:n[1]||(n[1]=u=>m.$emit("close"))},"取消"),e.createElementVNode("button",{class:"btn-primary",disabled:!t.value,onClick:p}," 确定 ",8,Hs)])])]))}}),[["__scopeId","data-v-c9a88e33"]]),Js=(s,l)=>{const o=l.split(".");let r=s;for(const t of o)if(r&&typeof r=="object"&&t in r)r=r[t];else return;return r},Ys=(s,l,o)=>{const r=l.split(".");let t=s;for(let a=0;a<r.length-1;a++)t[r[a]]||(t[r[a]]={}),t=t[r[a]];t[r[r.length-1]]=o},Xs=(s,l)=>{var a;const o=s.getData(),r=(a=o==null?void 0:o.props)==null?void 0:a.find(c=>c.key===l);if(!r||!r.path)return;const t=r.path.split(".");if(t[0]==="attrs"){const c=t.slice(1).join("/");return s.attr(c)}else if(t[0]==="data"){const c=t.slice(1).join(".");return Js(s.getData(),c)}},Ks=(s,l,o)=>{var c;const r=s.getData(),t=(c=r==null?void 0:r.props)==null?void 0:c.find(d=>d.key===l);if(!t||!t.path)return console.warn(`未找到属性配置: ${l}`),!1;const a=t.path.split(".");if(a[0]==="attrs"){const d=a.slice(1).join("/");return s.setAttrByPath(d,o),console.log(`属性已更改: ${l} (${d}) = ${o}`),!0}else if(a[0]==="data"){const d=a.slice(1).join("."),p=s.getData()||{};return Ys(p,d,o),s.setData(p),console.log(`数据已更改: ${l} (${d}) = ${o}`),!0}else return console.warn(`未知的属性路径类型: ${t.path}`),!1},Pe=(s,l)=>{if(l.conditionType==="always")return!0;if(l.condition&&l.condition.attribute){const o=Xs(s,l.condition.attribute),r=o===l.condition.value;return console.log(`条件检查: ${l.condition.attribute} = ${o}, 期望: ${l.condition.value}, 结果: ${r}`),r}return!1},Qs=(s,l)=>{l!=null&&l.attributeGroups&&l.attributeGroups.forEach(o=>{const r=o.target==="current"?s:null;r&&Ks(r,o.property,o.value)})},Zs=(s,l,o)=>{if(o!=null&&o.code)try{new Function("node","event",o.code)(s,l)}catch(r){console.error("自定义代码执行失败:",r)}},ed=(s,l,o)=>{if(!(o!=null&&o.processId)||!(o!=null&&o.processData)){console.error("流程配置不完整:",o);return}try{console.log("开始执行流程:",o.processName||o.processId);let r={};if(o.processParams)try{r=JSON.parse(o.processParams)}catch(a){console.error("流程参数解析失败:",a)}console.log("流程数据:",o.processData),console.log("传入参数:",r);const t=new CustomEvent("workflow-execute",{detail:{processId:o.processId,processName:o.processName,processData:o.processData,params:r,triggerNode:s}});window.dispatchEvent(t)}catch(r){console.error("流程执行失败:",r)}},Oe=(s,l)=>{if(l.action)switch(console.log("执行事件动作:",l.action,l.params),l.action){case"attributeChange":Qs(s,l.params);break;case"customCode":Zs(s,l,l.params);break;case"callProcess":ed(s,l,l.params);break;default:console.warn("未知的事件动作:",l.action)}},xt=(s,l)=>{const o=l.getData();!(o!=null&&o.events)||!Array.isArray(o.events)||o.events.forEach(r=>{const t=r.type;switch(t){case"click":case"dblclick":case"mouseenter":case"mouseleave":s.on(`node:${t}`,({node:a})=>{a.id===l.id&&(console.log(`触发 ${t} 事件:`,r),Pe(a,r)&&Oe(a,r))});break;case"change":s.on("node:change:attrs",({node:a})=>{a.id===l.id&&(console.log("检查 change 事件:",r),Pe(a,r)&&(console.log("条件满足,触发 change 事件:",r),Oe(a,r)))});break;case"input":s.on("node:change:data",({node:a})=>{a.id===l.id&&(console.log("触发 input 事件:",r),Pe(a,r)&&Oe(a,r))});break;case"focus":case"blur":console.warn(`事件类型 ${t} 在预览模式下不支持`);break;default:console.warn(`未知的事件类型: ${t}`)}})},de={SCADA_EDITOR_DATA:"scada_editor_data",SCADA_PREVIEW_DATA:"scada_preview_data"},Le=(s,l)=>{try{const o=JSON.stringify(l);return sessionStorage.setItem(s,o),!0}catch(o){return console.error(`保存到 sessionStorage 失败 [${s}]:`,o),!1}},Re=s=>{try{const l=sessionStorage.getItem(s);return l?JSON.parse(l):null}catch(l){return console.error(`从 sessionStorage 读取失败 [${s}]:`,l),null}},Ue=s=>{try{sessionStorage.removeItem(s)}catch(l){console.error(`从 sessionStorage 删除失败 [${s}]:`,l)}},td=(s,l)=>{try{const o=JSON.stringify(l);return localStorage.setItem(s,o),!0}catch(o){return console.error(`保存到 localStorage 失败 [${s}]:`,o),!1}},od=s=>{try{const l=localStorage.getItem(s);return l?JSON.parse(l):null}catch(l){return console.error(`从 localStorage 读取失败 [${s}]:`,l),null}},ld=s=>{try{localStorage.removeItem(s)}catch(l){console.error(`从 localStorage 删除失败 [${s}]:`,l)}},wt=(s,l)=>{try{const o=JSON.stringify(s,null,2),r=new Blob([o],{type:"application/json;charset=utf-8"}),t=URL.createObjectURL(r),a=document.createElement("a");return a.href=t,a.download=`${l}.json`,a.click(),URL.revokeObjectURL(t),!0}catch(o){return console.error("导出 JSON 文件失败:",o),!1}},We=(s="")=>{const l=Date.now(),o=Math.random().toString(36).substring(2,11);return s?`${s}_${l}_${o}`:`${l}_${o}`},$t=()=>We("evt"),nd=()=>We("node"),Fe=(s,l="YYYY-MM-DD HH:mm:ss")=>{const o=new Date(s),r=o.getFullYear(),t=String(o.getMonth()+1).padStart(2,"0"),a=String(o.getDate()).padStart(2,"0"),c=String(o.getHours()).padStart(2,"0"),d=String(o.getMinutes()).padStart(2,"0"),p=String(o.getSeconds()).padStart(2,"0");return l.replace("YYYY",String(r)).replace("MM",t).replace("DD",a).replace("HH",c).replace("mm",d).replace("ss",p)},Ge=()=>Date.now(),Ct=(s=50,l=50,o=400,r=300)=>({x:Math.random()*o+s,y:Math.random()*r+l}),Q=(s,l="info",o=3e3)=>{const r=document.createElement("div");r.className=`scada-toast scada-toast-${l}`,r.textContent=s,Object.assign(r.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 a={success:{bg:"#10b981",text:"#fff"},error:{bg:"#ef4444",text:"#fff"},warning:{bg:"#f59e0b",text:"#fff"},info:{bg:"#3b82f6",text:"#fff"}}[l];r.style.backgroundColor=a.bg,r.style.color=a.text,document.body.appendChild(r),requestAnimationFrame(()=>{r.style.opacity="1"}),setTimeout(()=>{r.style.opacity="0",setTimeout(()=>{r.parentNode&&document.body.removeChild(r)},300)},o)},ad={class:"property-panel"},rd={key:1,class:"properties"},id={key:2,class:"properties"},sd={class:"tabs"},dd={class:"tab-content"},cd={class:"tab-pane"},pd={class:"property-section"},md={key:0,class:"empty-hint"},fd={class:"event-list"},ud={class:"tab-pane"},gd={class:"property-section"},hd={key:0,class:"empty-hint"},yd={class:"event-list"},je=P(e.defineComponent({__name:"PropertyPanel",props:{selectedNode:{},selectedEdge:{},deviceData:{}},emits:["updateNode","deleteNode","updateEdge","deleteEdge"],setup(s,{emit:l}){const o=s,r=l,t=e.ref("basic"),a=e.ref([]),c=e.ref(new Set),d=e.ref([]),p=e.ref(new Set);e.watch(()=>o.selectedNode,w=>{var C,T;if((C=w==null?void 0:w.data)!=null&&C.events){const R=JSON.parse(JSON.stringify(w.data.events));R.forEach(G=>{G.id||(G.id=S())}),a.value=R}else a.value=[];c.value.clear(),(T=w==null?void 0:w.data)!=null&&T.bindings?d.value=JSON.parse(JSON.stringify(w.data.bindings)):d.value=[],p.value.clear()},{immediate:!0});const f=e.ref(0),m=e.ref(0);let n=null,u={x:0,y:0},h={width:0,height:0};e.watch(()=>o.selectedNode,w=>{if(n&&(clearInterval(n),n=null),w){const C=w.getPosition(),T=w.getSize();C&&typeof C.x=="number"&&typeof C.y=="number"?u=C:(u={x:0,y:0},console.warn("节点位置数据异常:",C)),T&&typeof T.width=="number"&&typeof T.height=="number"?h=T:(h={width:0,height:0},console.warn("节点尺寸数据异常:",T)),n=setInterval(()=>{if(o.selectedNode){const R=o.selectedNode.getPosition(),G=o.selectedNode.getSize();R&&typeof R.x=="number"&&typeof R.y=="number"&&(R.x!==u.x||R.y!==u.y)&&(u=R,f.value++),G&&typeof G.width=="number"&&typeof G.height=="number"&&(G.width!==h.width||G.height!==h.height)&&(h=G,m.value++)}},50)}}),e.onUnmounted(()=>{n&&clearInterval(n)});const i=e.computed(()=>{var C;return f.value,((C=o.selectedNode)==null?void 0:C.getPosition())||{x:0,y:0}}),g=e.computed(()=>{var C;return m.value,((C=o.selectedNode)==null?void 0:C.getSize())||{width:0,height:0}}),$=e.computed(()=>{var C;return((C=o.selectedNode)==null?void 0:C.getAttrs())||{}}),D=(w,C)=>{const T=Number(C.target.value),R=o.selectedNode.getPosition(),G=w==="x"?{x:T,y:R.y}:{x:R.x,y:T};r("updateNode",{position:G})},x=(w,C)=>{const T=Number(C.target.value),R=o.selectedNode.getSize(),G=w==="width"?{width:T,height:R.height}:{width:R.width,height:T};r("updateNode",{size:G})},k=w=>{const C=w.target.value;r("updateNode",{attrs:{text:{text:C},label:{text:C}}})},y=w=>{const C=w.target.value;r("updateNode",{attrs:{body:{fill:C}}})},E=w=>{const C=w.target.value;r("updateNode",{attrs:{body:{stroke:C}}})},N=w=>{const C=Number(w.target.value);r("updateNode",{attrs:{body:{strokeWidth:C}}})},z=w=>{const C=Number(w.target.value);r("updateNode",{attrs:{body:{opacity:C}}})},F=w=>{const C=w.target.value,T={...o.selectedNode.data,componentName:C};r("updateNode",{data:T})},U=(w,C)=>{if(!o.selectedNode)return;const T=w.split(".");if(T[0]==="attrs"){const R=T.slice(1).join("/");r("updateNode",{attrs:{[R]:C}})}else if(T[0]==="data"){const R=JSON.parse(JSON.stringify(o.selectedNode.data||{}));let G=R;for(let ie=1;ie<T.length-1;ie++){const Xe=T[ie];G[Xe]||(G[Xe]={}),G=G[Xe]}G[T[T.length-1]]=C,console.log("[PropertyPanel] 更新属性:",w,"=",C),console.log("[PropertyPanel] 节点类型:",o.selectedNode.shape),w==="data.presetId"&&o.selectedNode.shape==="echarts-vue"&&console.log("[PropertyPanel] 检测到预设切换,只更新 presetId"),r("updateNode",{data:R})}},v=w=>{if(!o.selectedNode)return;const C={...o.selectedNode.data,dataSource:w};r("updateNode",{data:C})},S=$t,M=()=>{const w={id:S(),name:"",type:"click",conditionType:"always",action:"attributeChange",params:{}};a.value.push(w),re()},te=w=>{a.value.splice(w,1),re()},ae=(w,C,T)=>{const R=T.target.value;a.value[w][C]=R,re()},ue=(w,C,T)=>{const G=T.target.value;a.value[w].condition||(a.value[w].condition={}),a.value[w].condition[C]=G,re()},Ne=(w,C,T)=>{const G=T.target.value;a.value[w].params||(a.value[w].params={}),a.value[w].params[C]=G,re()},re=()=>{a.value.forEach(C=>{C.id||(C.id=S())});const w={...o.selectedNode.data,events:a.value};r("updateNode",{data:w})},qe=w=>{c.value.has(w)?c.value.delete(w):c.value.add(w)},Ve=w=>c.value.has(w),xe=()=>{const w={devicePointId:"",targetProperty:"",enabled:!0};d.value.push(w),V()},we=w=>{d.value.splice(w,1),V()},b=(w,C,T)=>{const G=T.target.value;d.value[w][C]=G,V()},V=()=>{const w={...o.selectedNode.data,bindings:d.value};r("updateNode",{data:w})},_=w=>{p.value.has(w)?p.value.delete(w):p.value.add(w)},B=w=>p.value.has(w),A=e.ref(!1),H=e.ref(-1),L=e.ref([]),j=w=>{var T;H.value=w;const C=a.value[w];(T=C.params)!=null&&T.attributeGroups&&Array.isArray(C.params.attributeGroups)?L.value=JSON.parse(JSON.stringify(C.params.attributeGroups)):L.value=[{target:"current",property:"",value:""}],A.value=!0},Y=()=>{A.value=!1},X=()=>{L.value.push({target:"current",property:"",value:""})},O=w=>{L.value.splice(w,1)},J=(w,C,T)=>{L.value[w][C]=T},q=()=>{for(const w of L.value)if(!w.property){alert("请为每组配置选择目标属性");return}a.value[H.value].params||(a.value[H.value].params={}),a.value[H.value].params.attributeGroups=JSON.parse(JSON.stringify(L.value)),re(),Y()},Z=e.ref(!1),K=e.ref(""),ge=e.ref(-1),M1=w=>{var T;ge.value=w;const C=a.value[w];K.value=((T=C.params)==null?void 0:T.code)||"",Z.value=!0},It=()=>{Z.value=!1},A1=()=>{a.value[ge.value].params||(a.value[ge.value].params={}),a.value[ge.value].params.code=K.value,re(),It()},Je=e.ref(!1),$e=e.ref(-1),P1=w=>{$e.value=w,Je.value=!0},Tt=()=>{Je.value=!1},O1=w=>{a.value[$e.value].params||(a.value[$e.value].params={});const C=a.value[$e.value].params;C.processId=w.id,C.processName=w.name,C.processData=w.data,re(),Tt()},Ye=()=>{var C;if(!o.selectedNode)return[];const w=[];return(C=o.selectedNode.data)!=null&&C.props&&Array.isArray(o.selectedNode.data.props)&&o.selectedNode.data.props.forEach(T=>{T.bindable!==!1&&w.push({key:T.key,label:T.label,type:T.type||"text"})}),w},L1=w=>{r("updateEdge",w)},R1=()=>{r("deleteEdge")};return(w,C)=>(e.openBlock(),e.createElementBlock(e.Fragment,null,[e.createElementVNode("div",ad,[!s.selectedNode&&!s.selectedEdge?(e.openBlock(),e.createBlock(Se,{key:0})):s.selectedEdge?(e.openBlock(),e.createElementBlock("div",rd,[C[5]||(C[5]=e.createElementVNode("h3",{class:"panel-title"},"连线属性",-1)),e.createVNode(Wa,{"selected-edge":s.selectedEdge,onUpdateEdge:L1,onDeleteEdge:R1},null,8,["selected-edge"])])):s.selectedNode?(e.openBlock(),e.createElementBlock("div",id,[C[10]||(C[10]=e.createElementVNode("h3",{class:"panel-title"},"节点属性",-1)),e.createElementVNode("div",sd,[e.createElementVNode("button",{class:e.normalizeClass(["tab-btn",{active:t.value==="basic"}]),onClick:C[0]||(C[0]=T=>t.value="basic")}," 基础 ",2),e.createElementVNode("button",{class:e.normalizeClass(["tab-btn",{active:t.value==="data"}]),onClick:C[1]||(C[1]=T=>t.value="data")}," 数据 ",2),e.createElementVNode("button",{class:e.normalizeClass(["tab-btn",{active:t.value==="binding"}]),onClick:C[2]||(C[2]=T=>t.value="binding")}," 绑定 ",2),e.createElementVNode("button",{class:e.normalizeClass(["tab-btn",{active:t.value==="event"}]),onClick:C[3]||(C[3]=T=>t.value="event")}," 事件 ",2)]),e.createElementVNode("div",dd,[e.withDirectives(e.createVNode(De,{"selected-node":s.selectedNode,"node-position":i.value,"node-size":g.value,"node-attrs":$.value,onUpdatePosition:D,onUpdateSize:x,onUpdateLabel:k,onUpdateFill:y,onUpdateStroke:E,onUpdateStrokeWidth:N,onUpdateOpacity:z,onUpdateComponentName:F,onUpdateDynamicProp:U},null,8,["selected-node","node-position","node-size","node-attrs"]),[[e.vShow,t.value==="basic"]]),e.withDirectives(e.createVNode(pa,{"selected-node":s.selectedNode,onUpdateDataSource:v},null,8,["selected-node"]),[[e.vShow,t.value==="data"]]),e.withDirectives(e.createElementVNode("div",cd,[e.createElementVNode("div",pd,[e.createElementVNode("div",{class:"section-header"},[C[6]||(C[6]=e.createElementVNode("h4",null,"节点事件",-1)),e.createElementVNode("button",{class:"btn-add",onClick:M},"+ 添加事件")]),a.value.length===0?(e.openBlock(),e.createElementBlock("div",md,[...C[7]||(C[7]=[e.createElementVNode("span",null,"暂无事件,点击上方按钮添加",-1)])])):e.createCommentVNode("",!0),e.createElementVNode("div",fd,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(a.value,(T,R)=>(e.openBlock(),e.createBlock(Ie,{key:R,event:T,index:R,"is-collapsed":Ve(R),"node-properties":Ye(),onToggleCollapse:G=>qe(R),onRemove:G=>te(R),onUpdateField:(G,ie)=>ae(R,G,ie),onUpdateCondition:(G,ie)=>ue(R,G,ie),onUpdateParams:(G,ie)=>Ne(R,G,ie),onOpenAttributeConfig:G=>j(R),onOpenCustomCode:G=>M1(R),onOpenWorkflowSelector:G=>P1(R)},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",ud,[e.createElementVNode("div",gd,[e.createElementVNode("div",{class:"section-header"},[C[8]||(C[8]=e.createElementVNode("h4",null,"数据绑定",-1)),e.createElementVNode("button",{class:"btn-add",onClick:xe},"+ 添加绑定")]),d.value.length===0?(e.openBlock(),e.createElementBlock("div",hd,[...C[9]||(C[9]=[e.createElementVNode("span",null,"暂无绑定,点击上方按钮添加",-1)])])):e.createCommentVNode("",!0),e.createElementVNode("div",yd,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(d.value,(T,R)=>(e.openBlock(),e.createBlock(ze,{key:R,binding:T,index:R,"is-collapsed":B(R),"node-properties":Ye(),"event-list":a.value,"device-data":o.deviceData,onToggleCollapse:G=>_(R),onRemove:G=>we(R),onUpdateField:(G,ie)=>b(R,G,ie)},null,8,["binding","index","is-collapsed","node-properties","event-list","device-data","onToggleCollapse","onRemove","onUpdateField"]))),128))])])],512),[[e.vShow,t.value==="binding"]])])])):e.createCommentVNode("",!0)]),A.value?(e.openBlock(),e.createBlock(Me,{key:0,"attribute-groups":L.value,"node-properties":Ye(),onClose:Y,onSave:q,onAddGroup:X,onRemoveGroup:O,onUpdateGroup:J},null,8,["attribute-groups","node-properties"])):e.createCommentVNode("",!0),Z.value?(e.openBlock(),e.createBlock(Ae,{key:1,code:K.value,"onUpdate:code":C[4]||(C[4]=T=>K.value=T),"selected-node":s.selectedNode,onClose:It,onSave:A1},null,8,["code","selected-node"])):e.createCommentVNode("",!0),Je.value?(e.openBlock(),e.createBlock(qs,{key:2,onClose:Tt,onSelect:O1})):e.createCommentVNode("",!0)],64))}}),[["__scopeId","data-v-8bf0e080"]]);function He(s){const l=s.replace(/-/g,"+").replace(/_/g,"/"),o=l.length%4?"=".repeat(4-l.length%4):"",r=l+o,t=(typeof atob<"u"?atob:c=>Buffer.from(c,"base64").toString("binary"))(r),a=new Uint8Array(t.length);for(let c=0;c<t.length;c++)a[c]=t.charCodeAt(c);return a}function _t(s){const l=new ArrayBuffer(s.byteLength);return new Uint8Array(l).set(s),l}function bd(s){const l=s.replace("-----BEGIN PUBLIC KEY-----","").replace("-----END PUBLIC KEY-----","").replace(/\s+/g,""),o=(typeof atob<"u"?atob:t=>Buffer.from(t,"base64").toString("binary"))(l),r=new Uint8Array(o.length);for(let t=0;t<o.length;t++)r[t]=o.charCodeAt(t);return r.buffer}async function kd(s){const l=bd(s);return await crypto.subtle.importKey("spki",l,{name:"ECDSA",namedCurve:"P-256"},!1,["verify"])}async function Ed(s,l){try{const[o,r]=s.split(".");if(!o||!r)return!1;const t=await kd(l),a=He(o),c=He(r),d=_t(a),p=_t(c);return await crypto.subtle.verify({name:"ECDSA",hash:{name:"SHA-256"}},t,p,d)}catch{return!1}}async function Nd(s,l){const o=await Ed(s,l);if(!o)return null;const r=s.split(".")[0],t=He(r),a=new TextDecoder().decode(t),c=JSON.parse(a),d=c.expiryDate?new Date().getTime()<=new Date(c.expiryDate).getTime():!0;return{company:c.company||"未知",expiryDate:c.expiryDate,isValid:!!(o&&d)}}const Vd={key:0,class:"scada-footer"},xd={key:1,class:"scada-footer"},wd={class:"footer-content"},$d={class:"footer-left"},Cd={class:"copyright",style:{color:"#94a3b8 !important"}},_d={key:0,class:"divider",style:{color:"#475569 !important"}},vd={key:1,class:"license",style:{color:"#94a3b8 !important"}},Bd={key:0,class:"footer-right"},Sd={class:"text",style:{color:"#94a3b8 !important"}},Dd={key:2,class:"scada-footer"},Id={class:"footer-content"},Td={class:"footer-left"},zd={class:"authorized-text",style:{color:"#10b981 !important"}},Md={class:"footer-right"},Ad={key:0,class:"expiry-text",style:{color:"#94a3b8 !important"}},Pd={key:1,class:"expiry-text",style:{color:"#94a3b8 !important"}},Od=P(e.defineComponent({__name:"Footer",props:{authCode:{default:""},publicKeyPem:{default:void 0},customFooter:{default:void 0}},setup(s){const l=s,o=e.ref(null),r=e.ref(!1);e.watch(()=>[l.authCode,l.publicKeyPem],async()=>{if(!l.authCode||!l.publicKeyPem){r.value=!1,o.value=null;return}const a=await Nd(l.authCode,l.publicKeyPem);r.value=!!(a!=null&&a.isValid),o.value=a||null},{immediate:!0});const t=e.computed(()=>r.value);return(a,c)=>{var d,p;return t.value?s.customFooter?(e.openBlock(),e.createElementBlock("footer",xd,[e.createElementVNode("div",wd,[e.createElementVNode("div",$d,[e.createElementVNode("span",Cd,e.toDisplayString(s.customFooter.copyright),1),s.customFooter.license?(e.openBlock(),e.createElementBlock("span",_d,"|")):e.createCommentVNode("",!0),s.customFooter.license?(e.openBlock(),e.createElementBlock("span",vd,e.toDisplayString(s.customFooter.license),1)):e.createCommentVNode("",!0)]),s.customFooter.contact?(e.openBlock(),e.createElementBlock("div",Bd,[e.createElementVNode("span",Sd,e.toDisplayString(s.customFooter.contact),1)])):e.createCommentVNode("",!0)])])):(e.openBlock(),e.createElementBlock("footer",Dd,[e.createElementVNode("div",Id,[e.createElementVNode("div",Td,[c[1]||(c[1]=e.createElementVNode("span",{class:"authorized-icon"},"✅",-1)),e.createElementVNode("span",zd,"已授权: "+e.toDisplayString(((d=o.value)==null?void 0:d.company)||"未知"),1)]),e.createElementVNode("div",Md,[(p=o.value)!=null&&p.expiryDate?(e.openBlock(),e.createElementBlock("span",Ad," 📅 有效期至: "+e.toDisplayString(o.value.expiryDate),1)):(e.openBlock(),e.createElementBlock("span",Pd," ∞ 永久授权 "))])])])):(e.openBlock(),e.createElementBlock("footer",Vd,[...c[0]||(c[0]=[e.createStaticVNode('<div class="footer-content" data-v-7fd5ce26><div class="footer-left" data-v-7fd5ce26><span class="copyright" style="color:#94a3b8 !important;" data-v-7fd5ce26>© 2025 leoncheng</span><span class="divider" style="color:#475569 !important;" data-v-7fd5ce26>|</span><span class="license" style="color:#94a3b8 !important;" data-v-7fd5ce26>仅供学习研究使用,禁止商业用途</span></div><div class="footer-right" data-v-7fd5ce26><div class="contact-item" data-v-7fd5ce26><span class="icon" data-v-7fd5ce26>📧</span><span class="text" style="color:#94a3b8 !important;" data-v-7fd5ce26>nywqs@outlook.com</span></div><span class="divider" style="color:#475569 !important;" data-v-7fd5ce26>|</span><div class="contact-item" data-v-7fd5ce26><span class="icon" data-v-7fd5ce26>📱</span><span class="text" style="color:#94a3b8 !important;" data-v-7fd5ce26>18637762001</span></div></div></div>',1)])]))}}}),[["__scopeId","data-v-7fd5ce26"]]);var ce=(s=>(s.START="start",s.END="end",s.GET_PROPERTY="getProperty",s.SET_PROPERTY="setProperty",s.CONDITION="condition",s.HTTP_REQUEST="httpRequest",s.CUSTOM_CODE="customCode",s.TIMER="timer",s.CLEAR_TIMER="clearTimer",s))(ce||{});const Ld={class:"dialog-body"},Rd={class:"search-box"},Ud={class:"element-list"},Wd=["onClick"],Fd={class:"element-icon"},Gd={class:"element-info"},jd={class:"element-name"},Hd={class:"element-type"},qd={key:0,class:"element-check"},Jd={key:0,class:"empty-state"},Yd={class:"dialog-footer"},Xd=["disabled"],vt=P(e.defineComponent({__name:"ElementSelector",props:{visible:{type:Boolean},elements:{default:()=>[]}},emits:["close","select"],setup(s,{emit:l}){const o=s,r=l,t=e.ref(""),a=e.ref(null),c=e.computed(()=>{if(!t.value)return o.elements;const m=t.value.toLowerCase();return o.elements.filter(n=>n.name.toLowerCase().includes(m)||n.id.toLowerCase().includes(m)||n.type.toLowerCase().includes(m))}),d=m=>{a.value=m},p=()=>{t.value="",a.value=null,r("close")},f=()=>{a.value&&(r("select",a.value),p())};return(m,n)=>s.visible?(e.openBlock(),e.createElementBlock("div",{key:0,class:"element-selector-overlay",onClick:p},[e.createElementVNode("div",{class:"element-selector-dialog",onClick:n[1]||(n[1]=e.withModifiers(()=>{},["stop"]))},[e.createElementVNode("div",{class:"dialog-header"},[n[2]||(n[2]=e.createElementVNode("h3",null,"选择图元",-1)),e.createElementVNode("button",{class:"btn-close",onClick:p},"×")]),e.createElementVNode("div",Ld,[e.createElementVNode("div",Rd,[e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":n[0]||(n[0]=u=>t.value=u),type:"text",placeholder:"搜索图元名称或ID..."},null,512),[[e.vModelText,t.value]])]),e.createElementVNode("div",Ud,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(c.value,u=>{var h,i;return e.openBlock(),e.createElementBlock("div",{key:u.id,class:e.normalizeClass(["element-item",{active:((h=a.value)==null?void 0:h.id)===u.id}]),onClick:g=>d(u)},[e.createElementVNode("div",Fd,e.toDisplayString(u.icon),1),e.createElementVNode("div",Gd,[e.createElementVNode("div",jd,e.toDisplayString(u.name),1),e.createElementVNode("div",Hd,e.toDisplayString(u.type),1)]),((i=a.value)==null?void 0:i.id)===u.id?(e.openBlock(),e.createElementBlock("div",qd," ✓ ")):e.createCommentVNode("",!0)],10,Wd)}),128)),c.value.length===0?(e.openBlock(),e.createElementBlock("div",Jd,[...n[3]||(n[3]=[e.createElementVNode("p",null,"未找到图元",-1),e.createElementVNode("p",{class:"empty-hint"},"请尝试其他搜索关键词",-1)])])):e.createCommentVNode("",!0)])]),e.createElementVNode("div",Yd,[e.createElementVNode("button",{class:"btn-secondary",onClick:p},"取消"),e.createElementVNode("button",{class:"btn-primary",disabled:!a.value,onClick:f}," 确定 ",8,Xd)])])])):e.createCommentVNode("",!0)}}),[["__scopeId","data-v-882704dd"]]),Kd={class:"node-config"},Qd={class:"config-group"},Zd={class:"element-selector"},ec={class:"config-group"},tc=["disabled"],oc=["value"],lc=P(e.defineComponent({__name:"GetPropertyConfig",props:{modelValue:{}},emits:["update:modelValue"],setup(s,{emit:l}){const o=s,r=l,t=e.reactive({elementId:o.modelValue.elementId||"",propertyName:o.modelValue.propertyName||""}),a=e.ref(""),c=e.ref(!1),d=e.ref([]),p=e.inject("canvasElementService"),f=e.computed(()=>{if(!t.elementId)return[];const h=d.value.find(i=>i.id===t.elementId);return(h==null?void 0:h.properties)||[]}),m=()=>{r("update:modelValue",{...t})},n=()=>{p&&(d.value=p.getElements()),c.value=!0},u=h=>{t.elementId=h.id,a.value=h.name,t.propertyName="",m()};return e.onMounted(()=>{if(p&&(d.value=p.getElements()),t.elementId){const h=d.value.find(i=>i.id===t.elementId);h&&(a.value=h.name)}}),(h,i)=>(e.openBlock(),e.createElementBlock(e.Fragment,null,[e.createElementVNode("div",Kd,[e.createElementVNode("div",Qd,[i[3]||(i[3]=e.createElementVNode("label",null,"图元选择",-1)),e.createElementVNode("div",Zd,[e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":i[0]||(i[0]=g=>a.value=g),type:"text",placeholder:"点击选择按钮从画布中选择图元",readonly:""},null,512),[[e.vModelText,a.value]]),e.createElementVNode("button",{class:"btn-select",onClick:n}," 选择图元 ")])]),e.createElementVNode("div",ec,[i[5]||(i[5]=e.createElementVNode("label",null,"属性选择",-1)),e.withDirectives(e.createElementVNode("select",{"onUpdate:modelValue":i[1]||(i[1]=g=>t.propertyName=g),onChange:m,disabled:!t.elementId},[i[4]||(i[4]=e.createElementVNode("option",{value:""},"请先选择图元",-1)),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(f.value,g=>(e.openBlock(),e.createElementBlock("option",{key:g.key,value:g.key},e.toDisplayString(g.label),9,oc))),128))],40,tc),[[e.vModelSelect,t.propertyName]])])]),e.createVNode(vt,{visible:c.value,elements:d.value,onClose:i[2]||(i[2]=g=>c.value=!1),onSelect:u},null,8,["visible","elements"])],64))}}),[["__scopeId","data-v-fa65eb56"]]),nc={class:"node-config"},ac={class:"config-group"},rc={class:"element-selector"},ic={class:"config-group"},sc=["disabled"],dc=["value"],cc={class:"config-group"},pc=P(e.defineComponent({__name:"SetPropertyConfig",props:{modelValue:{}},emits:["update:modelValue"],setup(s,{emit:l}){const o=s,r=l,t=e.reactive({elementId:o.modelValue.elementId||"",propertyName:o.modelValue.propertyName||"",value:o.modelValue.value||""}),a=e.ref(""),c=e.ref(!1),d=e.ref([]),p=e.inject("canvasElementService"),f=e.computed(()=>{if(!t.elementId)return[];const h=d.value.find(i=>i.id===t.elementId);return(h==null?void 0:h.properties)||[]}),m=()=>{r("update:modelValue",{...t})},n=()=>{p&&(d.value=p.getElements()),c.value=!0},u=h=>{t.elementId=h.id,a.value=h.name,t.propertyName="",m()};return e.onMounted(()=>{if(p&&(d.value=p.getElements()),t.elementId){const h=d.value.find(i=>i.id===t.elementId);h&&(a.value=h.name)}}),(h,i)=>(e.openBlock(),e.createElementBlock(e.Fragment,null,[e.createElementVNode("div",nc,[e.createElementVNode("div",ac,[i[4]||(i[4]=e.createElementVNode("label",null,"图元选择",-1)),e.createElementVNode("div",rc,[e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":i[0]||(i[0]=g=>a.value=g),type:"text",placeholder:"点击选择按钮从画布中选择图元",readonly:""},null,512),[[e.vModelText,a.value]]),e.createElementVNode("button",{class:"btn-select",onClick:n}," 选择图元 ")])]),e.createElementVNode("div",ic,[i[6]||(i[6]=e.createElementVNode("label",null,"属性选择",-1)),e.withDirectives(e.createElementVNode("select",{"onUpdate:modelValue":i[1]||(i[1]=g=>t.propertyName=g),onChange:m,disabled:!t.elementId},[i[5]||(i[5]=e.createElementVNode("option",{value:""},"请先选择图元",-1)),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(f.value,g=>(e.openBlock(),e.createElementBlock("option",{key:g.key,value:g.key},e.toDisplayString(g.label),9,dc))),128))],40,sc),[[e.vModelSelect,t.propertyName]])]),e.createElementVNode("div",cc,[i[7]||(i[7]=e.createElementVNode("label",null,"属性值",-1)),e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":i[2]||(i[2]=g=>t.value=g),type:"text",placeholder:"请输入属性值",onInput:m},null,544),[[e.vModelText,t.value]])])]),e.createVNode(vt,{visible:c.value,elements:d.value,onClose:i[3]||(i[3]=g=>c.value=!1),onSelect:u},null,8,["visible","elements"])],64))}}),[["__scopeId","data-v-42e029d4"]]),mc={class:"node-config"},fc={class:"config-group"},uc={class:"config-group"},gc={class:"branches-section"},hc={class:"branch-list"},yc={class:"branch-header"},bc={class:"branch-number"},kc=["onClick"],Ec={key:0,class:"branch-config"},Nc={class:"config-row"},Vc=["onUpdate:modelValue"],xc={key:0,class:"config-row"},wc=["onUpdate:modelValue"],$c={key:1,class:"config-row"},Cc=["onUpdate:modelValue","type"],_c={key:1,class:"default-branch-label"},vc=P(e.defineComponent({__name:"ConditionConfig",props:{modelValue:{}},emits:["update:modelValue"],setup(s,{emit:l}){const o=s,r=l,t=()=>`branch_${Date.now()}_${Math.random().toString(36).substr(2,9)}`,a=()=>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}],c=e.reactive({sourceNodeId:o.modelValue.sourceNodeId||"prev",dataType:o.modelValue.dataType||"boolean",branches:a()}),d=()=>{r("update:modelValue",{...c})},p=()=>{c.dataType==="boolean"?c.branches=[{id:t(),label:"True",value:!0},{id:t(),label:"False",value:!1,isDefault:!0}]:c.branches=[{id:t(),label:"分支1",operator:"eq",value:""},{id:t(),label:"默认",isDefault:!0}],d()},f=()=>{const n={id:t(),label:`分支${c.branches.length}`,operator:"eq",value:""},u=c.branches.findIndex(h=>h.isDefault);u>-1?c.branches.splice(u,0,n):c.branches.push(n),d()},m=n=>{c.branches.length>2&&(c.branches.splice(n,1),d())};return(n,u)=>(e.openBlock(),e.createElementBlock("div",mc,[e.createElementVNode("div",fc,[u[3]||(u[3]=e.createElementVNode("label",null,"数据来源节点",-1)),e.withDirectives(e.createElementVNode("select",{"onUpdate:modelValue":u[0]||(u[0]=h=>c.sourceNodeId=h),onChange:d},[...u[2]||(u[2]=[e.createElementVNode("option",{value:""},"请选择数据来源节点",-1),e.createElementVNode("option",{value:"prev"},"上一个节点",-1)])],544),[[e.vModelSelect,c.sourceNodeId]])]),e.createElementVNode("div",uc,[u[5]||(u[5]=e.createElementVNode("label",null,"数据类型",-1)),e.withDirectives(e.createElementVNode("select",{"onUpdate:modelValue":u[1]||(u[1]=h=>c.dataType=h),onChange:p},[...u[4]||(u[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,c.dataType]])]),e.createElementVNode("div",gc,[e.createElementVNode("div",{class:"section-header"},[u[6]||(u[6]=e.createElementVNode("label",null,"条件分支",-1)),e.createElementVNode("button",{class:"btn-add",onClick:f},"添加分支")]),e.createElementVNode("div",hc,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(c.branches,(h,i)=>(e.openBlock(),e.createElementBlock("div",{key:h.id,class:"branch-item"},[e.createElementVNode("div",yc,[e.createElementVNode("span",bc,"分支 "+e.toDisplayString(i+1),1),!h.isDefault&&c.branches&&c.branches.length>1?(e.openBlock(),e.createElementBlock("button",{key:0,class:"btn-remove",onClick:g=>m(i)},"×",8,kc)):e.createCommentVNode("",!0)]),h.isDefault?(e.openBlock(),e.createElementBlock("div",_c," 默认分支(其他情况) ")):(e.openBlock(),e.createElementBlock("div",Ec,[e.createElementVNode("div",Nc,[u[7]||(u[7]=e.createElementVNode("label",null,"分支标签",-1)),e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":g=>h.label=g,type:"text",placeholder:"如: >10, =A, True",onInput:d},null,40,Vc),[[e.vModelText,h.label]])]),c.dataType!=="boolean"?(e.openBlock(),e.createElementBlock("div",xc,[u[9]||(u[9]=e.createElementVNode("label",null,"运算符",-1)),e.withDirectives(e.createElementVNode("select",{"onUpdate:modelValue":g=>h.operator=g,onChange:d},[...u[8]||(u[8]=[e.createStaticVNode('<option value="eq" data-v-15975920>等于 (==)</option><option value="ne" data-v-15975920>不等于 (!=)</option><option value="gt" data-v-15975920>大于 (&gt;)</option><option value="gte" data-v-15975920>大于等于 (&gt;=)</option><option value="lt" data-v-15975920>小于 (&lt;)</option><option value="lte" data-v-15975920>小于等于 (&lt;=)</option><option value="contains" data-v-15975920>包含</option><option value="notContains" data-v-15975920>不包含</option>',8)])],40,wc),[[e.vModelSelect,h.operator]])])):e.createCommentVNode("",!0),c.dataType!=="boolean"?(e.openBlock(),e.createElementBlock("div",$c,[u[10]||(u[10]=e.createElementVNode("label",null,"比较值",-1)),e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":g=>h.value=g,type:c.dataType==="number"?"number":"text",placeholder:"请输入比较值",onInput:d},null,40,Cc),[[e.vModelDynamic,h.value]])])):e.createCommentVNode("",!0)]))]))),128))])])]))}}),[["__scopeId","data-v-15975920"]]),Bc={class:"node-config"},Sc={class:"config-group"},Dc={class:"config-group"},Ic={class:"config-group"},Tc={class:"config-group"},zc={class:"config-group"},Mc=P(e.defineComponent({__name:"HttpRequestConfig",props:{modelValue:{}},emits:["update:modelValue"],setup(s,{emit:l}){const o=s,r=l,t=e.reactive({url:o.modelValue.url||"",method:o.modelValue.method||"GET",headers:o.modelValue.headers||{},body:o.modelValue.body||"",outputVariable:o.modelValue.outputVariable||""}),a=e.ref(JSON.stringify(t.headers,null,2)),c=()=>{r("update:modelValue",{...t})},d=()=>{try{t.headers=JSON.parse(a.value),c()}catch{}};return e.watch(()=>o.modelValue.headers,p=>{p&&(a.value=JSON.stringify(p,null,2))}),(p,f)=>(e.openBlock(),e.createElementBlock("div",Bc,[e.createElementVNode("div",Sc,[f[5]||(f[5]=e.createElementVNode("label",null,"请求URL",-1)),e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":f[0]||(f[0]=m=>t.url=m),type:"text",placeholder:"请输入请求URL",onInput:c},null,544),[[e.vModelText,t.url]])]),e.createElementVNode("div",Dc,[f[7]||(f[7]=e.createElementVNode("label",null,"请求方法",-1)),e.withDirectives(e.createElementVNode("select",{"onUpdate:modelValue":f[1]||(f[1]=m=>t.method=m),onChange:c},[...f[6]||(f[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",Ic,[f[8]||(f[8]=e.createElementVNode("label",null,"请求头 (JSON格式)",-1)),e.withDirectives(e.createElementVNode("textarea",{"onUpdate:modelValue":f[2]||(f[2]=m=>a.value=m),rows:"3",placeholder:'{"Content-Type": "application/json"}',onInput:d},null,544),[[e.vModelText,a.value]])]),e.createElementVNode("div",Tc,[f[9]||(f[9]=e.createElementVNode("label",null,"请求体",-1)),e.withDirectives(e.createElementVNode("textarea",{"onUpdate:modelValue":f[3]||(f[3]=m=>t.body=m),rows:"4",placeholder:"请输入请求体内容",onInput:c},null,544),[[e.vModelText,t.body]])]),e.createElementVNode("div",zc,[f[10]||(f[10]=e.createElementVNode("label",null,"输出变量",-1)),e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":f[4]||(f[4]=m=>t.outputVariable=m),type:"text",placeholder:"请输入输出变量名",onInput:c},null,544),[[e.vModelText,t.outputVariable]])])]))}}),[["__scopeId","data-v-4c312eea"]]),Ac={class:"node-config"},Pc={class:"config-group"},Oc=P(e.defineComponent({__name:"CustomCodeConfig",props:{modelValue:{}},emits:["update:modelValue"],setup(s,{emit:l}){const o=s,r=l,t=e.reactive({code:o.modelValue.code||""}),a=()=>{r("update:modelValue",{...t})};return(c,d)=>(e.openBlock(),e.createElementBlock("div",Ac,[e.createElementVNode("div",Pc,[d[1]||(d[1]=e.createElementVNode("label",null,"JavaScript代码",-1)),e.withDirectives(e.createElementVNode("textarea",{"onUpdate:modelValue":d[0]||(d[0]=p=>t.code=p),rows:"10",placeholder:"请输入JavaScript代码",onInput:a},null,544),[[e.vModelText,t.code]])]),d[2]||(d[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"]]),Lc={class:"node-config"},Rc={class:"config-group"},Uc={class:"config-group"},Wc=P(e.defineComponent({__name:"TimerConfig",props:{modelValue:{}},emits:["update:modelValue"],setup(s,{emit:l}){const o=s,r=l,t=e.reactive({interval:o.modelValue.interval||1e3,unit:o.modelValue.unit||"ms"}),a=()=>{r("update:modelValue",{...t})};return(c,d)=>(e.openBlock(),e.createElementBlock("div",Lc,[e.createElementVNode("div",Rc,[d[2]||(d[2]=e.createElementVNode("label",null,"时间间隔",-1)),e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":d[0]||(d[0]=p=>t.interval=p),type:"number",min:"1",placeholder:"请输入时间间隔",onInput:a},null,544),[[e.vModelText,t.interval,void 0,{number:!0}]])]),e.createElementVNode("div",Uc,[d[4]||(d[4]=e.createElementVNode("label",null,"时间单位",-1)),e.withDirectives(e.createElementVNode("select",{"onUpdate:modelValue":d[1]||(d[1]=p=>t.unit=p),onChange:a},[...d[3]||(d[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"]]),Fc={class:"node-config"},Gc={class:"config-group"},jc=["value"],Hc={key:0,class:"timer-hint warning"},qc={key:1,class:"timer-hint"},Jc=P(e.defineComponent({__name:"ClearTimerConfig",props:{modelValue:{}},emits:["update:modelValue"],setup(s,{emit:l}){const o=s,r=l,t=e.reactive({timerId:o.modelValue.timerId||""}),a=e.ref([]),c=e.inject("getGraph"),d=()=>{if(!c)return[];const f=c();if(!f)return[];const m=f.getNodes(),n=[];return m.forEach(u=>{const h=u.getData();if((h==null?void 0:h.nodeType)==="timer"){const i=u.getAttrByPath("label/text")||"定时器";n.push({id:u.id,label:i})}}),n};e.onMounted(()=>{a.value=d()}),e.watch(()=>o.modelValue,()=>{a.value=d()},{deep:!0});const p=()=>{r("update:modelValue",{...t})};return(f,m)=>(e.openBlock(),e.createElementBlock("div",Fc,[e.createElementVNode("div",Gc,[m[2]||(m[2]=e.createElementVNode("label",null,"选择定时器节点",-1)),e.withDirectives(e.createElementVNode("select",{"onUpdate:modelValue":m[0]||(m[0]=n=>t.timerId=n),onChange:p},[m[1]||(m[1]=e.createElementVNode("option",{value:""},"请选择要清除的定时器",-1)),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(a.value,n=>(e.openBlock(),e.createElementBlock("option",{key:n.id,value:n.id},e.toDisplayString(n.label),9,jc))),128))],544),[[e.vModelSelect,t.timerId]])]),a.value.length===0?(e.openBlock(),e.createElementBlock("div",Hc,[...m[3]||(m[3]=[e.createElementVNode("p",null,"提示:当前流程中没有定时器节点",-1)])])):(e.openBlock(),e.createElementBlock("div",qc,[...m[4]||(m[4]=[e.createElementVNode("p",null,"提示:选择要清除的定时器节点",-1)])]))]))}}),[["__scopeId","data-v-d102fb63"]]),Yc={[ce.GET_PROPERTY]:lc,[ce.SET_PROPERTY]:pc,[ce.CONDITION]:vc,[ce.HTTP_REQUEST]:Mc,[ce.CUSTOM_CODE]:Oc,[ce.TIMER]:Wc,[ce.CLEAR_TIMER]:Jc};function Xc(s){return Yc[s]||null}const Kc={class:"property-panel"},Qc={key:0,class:"property-content"},Zc={class:"property-group"},ep=["value"],tp={class:"property-group"},op=["value"],lp={key:0,class:"divider"},np={key:1,class:"property-empty"},ap=P(e.defineComponent({__name:"PropertyPanel",props:{selectedCell:{}},emits:["update:label","update:config"],setup(s,{emit:l}){const o=s,r=l,t=()=>{var m,n,u;return((u=(n=(m=o.selectedCell)==null?void 0:m.cell)==null?void 0:n.model)==null?void 0:u.graph)||null};e.provide("getGraph",t);const a=e.ref({}),c=e.computed(()=>o.selectedCell?Xc(o.selectedCell.nodeType):null);e.watch(()=>o.selectedCell,m=>{if(m!=null&&m.cell){const n=m.cell.getData();a.value=(n==null?void 0:n.config)||{}}else a.value={}},{immediate:!0});const d=m=>{const n=m.target;r("update:label",n.value)},p=m=>{var n;if(a.value=m,(n=o.selectedCell)!=null&&n.cell){const u=o.selectedCell.cell.getData()||{};o.selectedCell.cell.setData({...u,config:m}),o.selectedCell.nodeType==="condition"&&m.branches&&f(m.branches)}r("update:config",m)},f=m=>{var U,v;if(!((U=o.selectedCell)!=null&&U.cell))return;const n=o.selectedCell.cell,u=(v=n.model)==null?void 0:v.graph;if(!u)return;const h=[];u.getConnectedEdges(n,{outgoing:!0}).forEach(S=>{const M=S.getSourcePortId(),te=S.getTargetCell(),ae=S.getTargetPortId();M&&te&&h.push({sourcePortId:M,targetCell:te,targetPortId:ae})});const g=h.length>0?h[0].targetCell:null,$=h.length>0?h[0].targetPortId:"port-in";n.getPorts().forEach(S=>{S.group==="out"&&n.removePort(S.id)});const x=30,k=60,y=Math.max(m.length,1),E=Math.max(k,y*x),N=n.size(),z=n.position(),F=E-N.height;F!==0&&n.position(z.x,z.y-F/2),n.resize(N.width,E),m.forEach((S,M)=>{n.addPort({id:`port-out-${M}`,group:"out",attrs:{circle:{r:5,magnet:!0,stroke:"#34d399",strokeWidth:2,fill:"#1e293b"},portLabel:{text:S.label||`分支${M+1}`,fontSize:10,fill:"#94a3b8"}}})}),setTimeout(()=>{g&&m.forEach((S,M)=>{u.addEdge({source:{cell:n,port:`port-out-${M}`},target:{cell:g,port:$},labels:[{attrs:{label:{text:S.label||`分支${M+1}`,fill:"#e2e8f0",fontSize:12},rect:{fill:"#334155",stroke:"#34d399",strokeWidth:1,rx:4,ry:4}},position:.5}]})})},100)};return(m,n)=>(e.openBlock(),e.createElementBlock("div",Kc,[n[4]||(n[4]=e.createElementVNode("h3",null,"属性配置",-1)),s.selectedCell?(e.openBlock(),e.createElementBlock("div",Qc,[e.createElementVNode("div",Zc,[n[1]||(n[1]=e.createElementVNode("label",null,"节点名称",-1)),e.createElementVNode("input",{value:s.selectedCell.label,type:"text",placeholder:"输入节点名称",onInput:d},null,40,ep)]),e.createElementVNode("div",tp,[n[2]||(n[2]=e.createElementVNode("label",null,"节点类型",-1)),e.createElementVNode("input",{value:s.selectedCell.nodeType,type:"text",readonly:"",disabled:""},null,8,op)]),c.value?(e.openBlock(),e.createElementBlock("div",lp)):e.createCommentVNode("",!0),c.value?(e.openBlock(),e.createBlock(e.resolveDynamicComponent(c.value),{key:1,modelValue:a.value,"onUpdate:modelValue":[n[0]||(n[0]=u=>a.value=u),p]},null,8,["modelValue"])):e.createCommentVNode("",!0)])):(e.openBlock(),e.createElementBlock("div",np,[...n[3]||(n[3]=[e.createElementVNode("div",{class:"empty-text"},"选择节点以配置属性",-1)])]))]))}}),[["__scopeId","data-v-8304acbc"]]),rp={class:"toolbar"},ip={class:"toolbar-right"},sp=P(e.defineComponent({__name:"WorkflowToolbar",props:{showClose:{type:Boolean}},emits:["clear","validate","save","close"],setup(s){return(l,o)=>(e.openBlock(),e.createElementBlock("div",rp,[o[5]||(o[5]=e.createElementVNode("div",{class:"toolbar-left"},[e.createElementVNode("h2",null,"流程编排")],-1)),e.createElementVNode("div",ip,[e.createElementVNode("button",{class:"btn-secondary",onClick:o[0]||(o[0]=r=>l.$emit("clear"))},"清空"),e.createElementVNode("button",{class:"btn-secondary",onClick:o[1]||(o[1]=r=>l.$emit("validate"))},"验证"),e.createElementVNode("button",{class:"btn-primary",onClick:o[2]||(o[2]=r=>l.$emit("save"))},"保存"),s.showClose?(e.openBlock(),e.createElementBlock("button",{key:0,class:"btn-close",onClick:o[3]||(o[3]=r=>l.$emit("close")),title:"关闭"},[...o[4]||(o[4]=[e.createElementVNode("span",{class:"close-icon"},"×",-1)])])):e.createCommentVNode("",!0)])]))}}),[["__scopeId","data-v-b3e0a4fc"]]),dp={class:"menu-header"},cp={class:"menu-list"},pp=["onClick"],mp={class:"menu-item-info"},fp={class:"menu-item-name"},up={class:"menu-item-desc"},gp=P(e.defineComponent({__name:"AddNodeMenu",props:{visible:{type:Boolean},position:{},nodeTypes:{}},emits:["close","select"],setup(s,{emit:l}){const o=s,r=l,t=e.computed(()=>o.nodeTypes.filter(c=>c.type!=="start"&&c.type!=="end")),a=c=>{r("select",c)};return(c,d)=>(e.openBlock(),e.createElementBlock("div",null,[s.visible?(e.openBlock(),e.createElementBlock("div",{key:0,class:"menu-overlay",onClick:d[0]||(d[0]=p=>c.$emit("close"))})):e.createCommentVNode("",!0),s.visible?(e.openBlock(),e.createElementBlock("div",{key:1,class:"add-node-menu",style:e.normalizeStyle({left:s.position.x+"px",top:s.position.y+"px"})},[e.createElementVNode("div",dp,[d[2]||(d[2]=e.createElementVNode("span",null,"选择节点类型",-1)),e.createElementVNode("button",{class:"btn-close",onClick:d[1]||(d[1]=p=>c.$emit("close"))},"×")]),e.createElementVNode("div",cp,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(t.value,p=>(e.openBlock(),e.createElementBlock("div",{key:p.type,class:"menu-item",onClick:f=>a(p)},[e.createElementVNode("div",{class:e.normalizeClass(["menu-item-icon",`node-icon-${p.type}`])},e.toDisplayString(p.icon),3),e.createElementVNode("div",mp,[e.createElementVNode("div",fp,e.toDisplayString(p.name),1),e.createElementVNode("div",up,e.toDisplayString(p.description),1)])],8,pp))),128))])],4)):e.createCommentVNode("",!0)]))}}),[["__scopeId","data-v-aa6fccf8"]]);class hp{constructor(){ke(this,"graph",null)}setGraph(l){this.graph=l}getElements(){return this.graph?this.graph.getNodes().map(o=>{const r=o.getData()||{},t=r.type||o.shape,a=he.getComponent(t),c=this.getElementProperties(o,a);return{id:o.id,name:r.componentName||o.getAttrByPath("label/text")||`图元_${o.id.slice(0,8)}`,type:(a==null?void 0:a.metadata.name)||t,icon:(a==null?void 0:a.metadata.icon)||"📦",properties:c}}):(console.warn("画布实例未初始化"),[])}getElementProperties(l,o){const r=[],t=new Set;return o!=null&&o.props&&o.props.forEach(a=>{const c=a.path.split("."),d=c[c.length-1];d&&!t.has(d)&&(r.push({key:d,label:a.label||d}),t.add(d))}),r}getElementById(l){return this.getElements().find(r=>r.id===l)||null}searchElements(l){const o=this.getElements(),r=l.toLowerCase();return o.filter(t=>t.name.toLowerCase().includes(r)||t.id.toLowerCase().includes(r)||t.type.toLowerCase().includes(r))}}const Bt=new hp,yp={class:"workflow-editor"},bp={class:"editor-main"},kp={class:"canvas-area"},Ep=P(e.defineComponent({__name:"WorkflowEditor",props:{scadaGraph:{default:null},showClose:{type:Boolean,default:!1}},emits:["close"],setup(s){const l=s,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"}]),r=e.ref();let t=null;l.scadaGraph&&Bt.setGraph(l.scadaGraph),e.provide("canvasElementService",Bt);const a=e.ref(null),c=e.ref(!1),d=e.ref({x:0,y:0});let p=null;const f=()=>{o.value.forEach(k=>{const y={inherit:"rect",width:150,height:60,markup:[{tagName:"rect",selector:"body"},{tagName:"text",selector:"icon"},{tagName:"text",selector:"label"}],attrs:{body:{strokeWidth:1,stroke:k.color,fill:"#ffffff",rx:6,ry:6},icon:{text:k.icon,fontSize:24,fill:k.color,refX:20,refY:"50%",textAnchor:"middle",textVerticalAnchor:"middle"},label:{text:k.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:k.type}};k.type==="start"?y.ports.items=[{id:"port-out",group:"out"}]:k.type==="end"?y.ports.items=[{id:"port-in",group:"in"}]:k.type==="condition"?y.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"}}]:y.ports.items=[{id:"port-in",group:"in"},{id:"port-out",group:"out"}],ee.Graph.registerNode(k.type,y,!0)})},m=()=>{if(!r.value)return;f(),t=new ee.Graph({container:r.value,width:r.value.clientWidth,height:r.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 ee.Shape.Edge({attrs:{line:{stroke:"#64748b",strokeWidth:3,targetMarker:{name:"block",width:12,height:8,fill:"#64748b"}}},zIndex:0})},validateConnection({targetMagnet:y}){return!!y}},highlighting:{magnetAvailable:{name:"stroke",args:{attrs:{fill:"#34d399",stroke:"#34d399"}}}}}),t.use(new Ke.Selection({enabled:!0,rubberband:!1,showNodeSelectionBox:!0,showEdgeSelectionBox:!0,multiple:!0,movable:!0,strict:!1}));const k=y=>{var E;if(console.log("键盘事件触发:",y.key,"selectedCell存在:",!!a.value),y.key==="Delete"||y.key==="Backspace"){if(!t){console.log("graph不存在,无法删除");return}if((E=a.value)!=null&&E.cell){y.preventDefault();const z=a.value.cell;console.log("删除选中的节点:",a.value.label);const F=t.getIncomingEdges(z),U=t.getOutgoingEdges(z);F&&F.length>0&&U&&U.length>0&&F.forEach(v=>{const S=v.getSourceCell(),M=v.getSourcePortId();U.forEach(te=>{const ae=te.getTargetCell(),ue=te.getTargetPortId();S&&ae&&t&&(t.addEdge({source:{cell:S,port:M},target:{cell:ae,port:ue}}),console.log("已连接前后节点"))})}),t.removeCells([z]),a.value=null,console.log("已删除节点");return}const N=t.getSelectedCells();console.log("选中的cells数量:",N.length,N),N.length?(y.preventDefault(),t.removeCells(N),console.log("已删除cells")):console.log("没有选中的cells")}};document.addEventListener("keydown",k),t.on("node:click",({node:y})=>{var z;const E=y.getAttrByPath("label/text")||"",N=((z=y.getData())==null?void 0:z.nodeType)||y.shape||"";a.value={label:E,nodeType:N,cell:y},console.log("节点已点击,保存到selectedCell:",E)}),t.on("blank:click",()=>{a.value=null,t&&t.cleanSelection()}),t.on("edge:mouseenter",({edge:y})=>{y.setAttrs({line:{stroke:"#10b981",strokeWidth:4}}),y.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:E,view:N})=>{p=N.cell,c.value=!0,d.value={x:E.clientX,y:E.clientY}}}},{name:"vertices"}])}),t.on("edge:mouseleave",({edge:y})=>{y.setAttrs({line:{stroke:"#64748b",strokeWidth:3}}),y.removeTools()}),t.on("edge:connected",({isNew:y,edge:E})=>{y&&E.setAttrs({line:{stroke:"#64748b",strokeWidth:3}})}),t.on("node:selected",({node:y})=>{y.toFront()}),t.on("edge:selected",({edge:y})=>{y.toFront()}),n()},n=()=>{if(!t)return;const k=t.addNode({shape:"start",x:100,y:200,label:"开始",data:{nodeType:"start"}}),y=t.addNode({shape:"end",x:500,y:200,label:"结束",data:{nodeType:"end"}});t.addEdge({source:{cell:k,port:"port-out"},target:{cell:y,port:"port-in"}})},u=k=>{var y;(y=a.value)!=null&&y.cell&&(a.value.label=k,a.value.cell.setAttrByPath("label/text",k))},h=k=>{if(!t||!p)return;const y=p.getSourceCell(),E=p.getTargetCell();if(!y||!E)return;const N=y.position(),z=E.position(),F=(N.x+z.x)/2,U=(N.y+z.y)/2,v=t.addNode({shape:k.type,x:F,y:U,label:k.name,data:{nodeType:k.type}});p.remove(),t.addEdge({source:{cell:y,port:"port-out"},target:{cell:v,port:"port-in"}}),k.type==="condition"?(t.addEdge({source:{cell:v,port:"port-out-0"},target:{cell:E,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:v,port:"port-out-1"},target:{cell:E,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:v,port:"port-out"},target:{cell:E,port:"port-in"}}),c.value=!1,p=null},i=()=>{t&&t.clearCells()},g=()=>{if(!t)return console.log("画布不存在"),{errors:["画布不存在"],warnings:[]};const k=[],y=[],E=t.getNodes(),N=E.filter(F=>{var U;return((U=F.getData())==null?void 0:U.nodeType)==="start"});return N.length===0?k.push("流程中缺少开始节点"):N.length>1&&y.push("流程中有多个开始节点"),E.filter(F=>{var U;return((U=F.getData())==null?void 0:U.nodeType)==="end"}).length===0&&y.push("流程中缺少结束节点"),E.forEach(F=>{const U=F.getData(),v=U==null?void 0:U.nodeType,S=(U==null?void 0:U.config)||{},M=F.getAttrByPath("label/text")||"未命名节点";(v==="getProperty"||v==="setProperty")&&(S.elementId||k.push(`节点「${M}」未配置图元`),S.propertyName||k.push(`节点「${M}」未配置属性`),v==="setProperty"&&!S.value&&y.push(`节点「${M}」未配置属性值`)),v==="httpRequest"&&(S.url||k.push(`节点「${M}」未配置请求URL`)),v==="condition"&&(!S.branches||S.branches.length===0)&&k.push(`节点「${M}」未配置条件分支`),v==="timer"&&(!S.interval||S.interval<=0)&&k.push(`节点「${M}」未配置有效的时间间隔`),v==="clearTimer"&&(S.timerId||k.push(`节点「${M}」未选择定时器`)),v==="customCode"&&(S.code||y.push(`节点「${M}」未编写代码`))}),E.forEach(F=>{var S;const U=(S=F.getData())==null?void 0:S.nodeType,v=F.getAttrByPath("label/text")||"未命名节点";if(U==="start"&&t){const M=t.getOutgoingEdges(F);(!M||M.length===0)&&k.push(`开始节点「${v}」没有连接到下一个节点`)}if(U==="end"&&t){const M=t.getOutgoingEdges(F);M&&M.length>0&&y.push(`结束节点「${v}」不应该有输出连线`)}if(U!=="start"&&U!=="end"&&t){const M=t.getIncomingEdges(F),te=t.getOutgoingEdges(F);(!M||M.length===0)&&y.push(`节点「${v}」没有输入连线`),U!=="clearTimer"&&(!te||te.length===0)&&y.push(`节点「${v}」没有输出连线`)}}),t&&E.forEach(F=>{var te;const U=t.getIncomingEdges(F),v=t.getOutgoingEdges(F),S=(te=F.getData())==null?void 0:te.nodeType,M=F.getAttrByPath("label/text")||"未命名节点";S!=="start"&&(!U||U.length===0)&&(!v||v.length===0)&&y.push(`节点「${M}」是孤立节点`)}),{errors:k,warnings:y}},$=()=>{const{errors:k,warnings:y}=g();if(k.length===0&&y.length===0)alert("✓ 流程验证通过!"),console.log("流程验证通过");else{let E="";k.length>0&&(E+=`错误:
27
- `+k.map(N=>" • "+N).join(`
28
- `)),y.length>0&&(E&&(E+=`
43
+ }`,class:"code-textarea code-textarea-full"},null,40,pE)]),e.createElementVNode("div",hE,[e.createElementVNode("div",mE,[d[7]||(d[7]=e.createElementVNode("label",null,"组件预览",-1)),e.createElementVNode("div",gE,[(f=n.value)!=null&&f.success?(e.openBlock(),e.createElementBlock("span",yE,"✓ 执行成功")):(m=n.value)!=null&&m.error?(e.openBlock(),e.createElementBlock("span",bE,"✗ 执行失败")):e.createCommentVNode("",!0)])]),e.createElementVNode("div",wE,[n.value?n.value.error?(e.openBlock(),e.createElementBlock("div",vE,[d[8]||(d[8]=e.createElementVNode("div",{class:"error-title"},"错误信息:",-1)),e.createElementVNode("div",kE,e.toDisplayString(n.value.error),1)])):(e.openBlock(),e.createElementBlock("div",_E,[e.createElementVNode("div",{ref_key:"previewContainer",ref:l,class:"node-preview"},null,512),n.value.logs.length>0?(e.openBlock(),e.createElementBlock("div",NE,[d[9]||(d[9]=e.createElementVNode("div",{class:"console-title"},"控制台输出:",-1)),e.createElementVNode("div",xE,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(n.value.logs,(h,p)=>(e.openBlock(),e.createElementBlock("div",{key:p,class:"log-item"},e.toDisplayString(h),1))),128))])])):e.createCommentVNode("",!0)])):(e.openBlock(),e.createElementBlock("div",EE,' 点击"测试执行"按钮查看组件预览效果 '))])])]),e.createElementVNode("div",SE,[e.createElementVNode("button",{class:"btn-cancel",onClick:d[2]||(d[2]=h=>c.$emit("close"))},"取消"),e.createElementVNode("button",{class:"btn-confirm",onClick:d[3]||(d[3]=h=>c.$emit("save"))},"确定")])])])}}}),[["__scopeId","data-v-add3567b"]]),CE={class:"dialog-container"},IE={class:"dialog-header"},AE={class:"dialog-body"},$E={key:0,class:"empty-state"},TE={key:1,class:"workflow-list"},BE=["onClick"],DE={class:"workflow-info"},PE={class:"workflow-name"},OE={class:"workflow-meta"},ME={class:"workflow-id"},RE={class:"workflow-date"},jE={class:"workflow-actions"},LE=["onClick"],UE={class:"dialog-footer"},FE=["disabled"],zE=Me(e.defineComponent({__name:"WorkflowSelectorDialog",emits:["close","select"],setup(u,{emit:r}){const t=r,l=e.ref([]),n=e.ref(null),o=()=>{try{const d=localStorage.getItem("saved-workflows");d&&(l.value=JSON.parse(d))}catch(d){console.error("加载流程列表失败:",d)}},i=d=>{n.value=d},a=d=>{console.log("预览流程:",d)},s=()=>{n.value&&t("select",n.value)},c=d=>new Date(d).toLocaleString("zh-CN",{year:"numeric",month:"2-digit",day:"2-digit",hour:"2-digit",minute:"2-digit"});return e.onMounted(()=>{o()}),(d,f)=>(e.openBlock(),e.createElementBlock("div",{class:"dialog-overlay",onClick:f[2]||(f[2]=e.withModifiers(m=>d.$emit("close"),["self"]))},[e.createElementVNode("div",CE,[e.createElementVNode("div",IE,[f[3]||(f[3]=e.createElementVNode("h3",null,"选择流程",-1)),e.createElementVNode("button",{class:"btn-close",onClick:f[0]||(f[0]=m=>d.$emit("close"))},"×")]),e.createElementVNode("div",AE,[l.value.length===0?(e.openBlock(),e.createElementBlock("div",$E,[...f[4]||(f[4]=[e.createElementVNode("p",null,"暂无已保存的流程",-1),e.createElementVNode("p",{class:"hint"},"请先在流程编辑器中创建并保存流程",-1)])])):(e.openBlock(),e.createElementBlock("div",TE,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(l.value,m=>{var h;return e.openBlock(),e.createElementBlock("div",{key:m.id,class:e.normalizeClass(["workflow-item",{selected:((h=n.value)==null?void 0:h.id)===m.id}]),onClick:p=>i(m)},[e.createElementVNode("div",DE,[e.createElementVNode("div",PE,e.toDisplayString(m.name),1),e.createElementVNode("div",OE,[e.createElementVNode("span",ME,"ID: "+e.toDisplayString(m.id),1),e.createElementVNode("span",RE,e.toDisplayString(c(m.createdAt)),1)])]),e.createElementVNode("div",jE,[e.createElementVNode("button",{class:"btn-icon",onClick:e.withModifiers(p=>a(m),["stop"]),title:"预览"}," 👁️ ",8,LE)])],10,BE)}),128))]))]),e.createElementVNode("div",UE,[e.createElementVNode("button",{class:"btn-secondary",onClick:f[1]||(f[1]=m=>d.$emit("close"))},"取消"),e.createElementVNode("button",{class:"btn-primary",disabled:!n.value,onClick:s}," 确定 ",8,FE)])])]))}}),[["__scopeId","data-v-c9a88e33"]]),WE=(u,r)=>{const t=r.split(".");let l=u;for(const n of t)if(l&&typeof l=="object"&&n in l)l=l[n];else return;return l},qE=(u,r,t)=>{const l=r.split(".");let n=u;for(let o=0;o<l.length-1;o++)n[l[o]]||(n[l[o]]={}),n=n[l[o]];n[l[l.length-1]]=t},GE=(u,r)=>{var o;const t=u.getData(),l=(o=t==null?void 0:t.props)==null?void 0:o.find(i=>i.key===r);if(!l||!l.path)return;const n=l.path.split(".");if(n[0]==="attrs"){const i=n.slice(1).join("/");return u.attr(i)}else if(n[0]==="data"){const i=n.slice(1).join(".");return WE(u.getData(),i)}},HE=(u,r,t)=>{var i;const l=u.getData(),n=(i=l==null?void 0:l.props)==null?void 0:i.find(a=>a.key===r);if(!n||!n.path)return console.warn(`未找到属性配置: ${r}`),!1;const o=n.path.split(".");if(o[0]==="attrs"){const a=o.slice(1).join("/");return u.setAttrByPath(a,t),console.log(`属性已更改: ${r} (${a}) = ${t}`),!0}else if(o[0]==="data"){const a=o.slice(1).join("."),s=u.getData()||{};return qE(s,a,t),u.setData(s),console.log(`数据已更改: ${r} (${a}) = ${t}`),!0}else return console.warn(`未知的属性路径类型: ${n.path}`),!1},ji=(u,r)=>{if(r.conditionType==="always")return!0;if(r.condition&&r.condition.attribute){const t=GE(u,r.condition.attribute),l=t===r.condition.value;return console.log(`条件检查: ${r.condition.attribute} = ${t}, 期望: ${r.condition.value}, 结果: ${l}`),l}return!1},KE=(u,r)=>{r!=null&&r.attributeGroups&&r.attributeGroups.forEach(t=>{const l=t.target==="current"?u:null;l&&HE(l,t.property,t.value)})},QE=(u,r,t)=>{if(t!=null&&t.code)try{new Function("node","event",t.code)(u,r)}catch(l){console.error("自定义代码执行失败:",l)}},YE=(u,r,t)=>{if(!(t!=null&&t.processId)||!(t!=null&&t.processData)){console.error("流程配置不完整:",t);return}try{console.log("开始执行流程:",t.processName||t.processId);let l={};if(t.processParams)try{l=JSON.parse(t.processParams)}catch(o){console.error("流程参数解析失败:",o)}console.log("流程数据:",t.processData),console.log("传入参数:",l);const n=new CustomEvent("workflow-execute",{detail:{processId:t.processId,processName:t.processName,processData:t.processData,params:l,triggerNode:u}});window.dispatchEvent(n)}catch(l){console.error("流程执行失败:",l)}},Li=(u,r)=>{if(r.action)switch(console.log("执行事件动作:",r.action,r.params),r.action){case"attributeChange":KE(u,r.params);break;case"customCode":QE(u,r,r.params);break;case"callProcess":YE(u,r,r.params);break;default:console.warn("未知的事件动作:",r.action)}},JE=(u,r)=>{const t=r.getData();!(t!=null&&t.events)||!Array.isArray(t.events)||t.events.forEach(l=>{const n=l.type;switch(n){case"click":case"dblclick":case"mouseenter":case"mouseleave":u.on(`node:${n}`,({node:o})=>{o.id===r.id&&(console.log(`触发 ${n} 事件:`,l),ji(o,l)&&Li(o,l))});break;case"change":u.on("node:change:attrs",({node:o})=>{o.id===r.id&&(console.log("检查 change 事件:",l),ji(o,l)&&(console.log("条件满足,触发 change 事件:",l),Li(o,l)))});break;case"input":u.on("node:change:data",({node:o})=>{o.id===r.id&&(console.log("触发 input 事件:",l),ji(o,l)&&Li(o,l))});break;case"focus":case"blur":console.warn(`事件类型 ${n} 在预览模式下不支持`);break;default:console.warn(`未知的事件类型: ${n}`)}})},ft={SCADA_EDITOR_DATA:"scada_editor_data"},lr=(u,r)=>{try{const t=JSON.stringify(r);return localStorage.setItem(u,t),!0}catch(t){return console.error(`保存到 localStorage 失败 [${u}]:`,t),!1}},Ui=u=>{try{const r=localStorage.getItem(u);return r?JSON.parse(r):null}catch(r){return console.error(`从 localStorage 读取失败 [${u}]:`,r),null}},ao=u=>{try{localStorage.removeItem(u)}catch(r){console.error(`从 localStorage 删除失败 [${u}]:`,r)}},XE=(u,r)=>{try{const t=JSON.stringify(u,null,2),l=new Blob([t],{type:"application/json;charset=utf-8"}),n=URL.createObjectURL(l),o=document.createElement("a");return o.href=n,o.download=`${r}.json`,o.click(),URL.revokeObjectURL(n),!0}catch(t){return console.error("导出 JSON 文件失败:",t),!1}},Fi=(u="")=>{const r=Date.now(),t=Math.random().toString(36).substring(2,11);return u?`${u}_${r}_${t}`:`${r}_${t}`},Jl=()=>Fi("evt"),ZE=()=>Fi("node"),lo=(u,r="YYYY-MM-DD HH:mm:ss")=>{const t=new Date(u),l=t.getFullYear(),n=String(t.getMonth()+1).padStart(2,"0"),o=String(t.getDate()).padStart(2,"0"),i=String(t.getHours()).padStart(2,"0"),a=String(t.getMinutes()).padStart(2,"0"),s=String(t.getSeconds()).padStart(2,"0");return r.replace("YYYY",String(l)).replace("MM",n).replace("DD",o).replace("HH",i).replace("mm",a).replace("ss",s)},co=()=>Date.now(),Xl=(u=50,r=50,t=400,l=300)=>({x:Math.random()*t+u,y:Math.random()*l+r}),Xe=(u,r="info",t=3e3)=>{const l=document.createElement("div");l.className=`scada-toast scada-toast-${r}`,l.textContent=u,Object.assign(l.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 o={success:{bg:"#10b981",text:"#fff"},error:{bg:"#ef4444",text:"#fff"},warning:{bg:"#f59e0b",text:"#fff"},info:{bg:"#3b82f6",text:"#fff"}}[r];l.style.backgroundColor=o.bg,l.style.color=o.text,document.body.appendChild(l),requestAnimationFrame(()=>{l.style.opacity="1"}),setTimeout(()=>{l.style.opacity="0",setTimeout(()=>{l.parentNode&&document.body.removeChild(l)},300)},t)};class ev{constructor(){Se(this,"graph",null)}setGraph(r){this.graph=r}getGraph(){return this.graph}zoomIn(){if(!this.graph)return;const r=je.getConfig().zoom.scale,t=Math.min(5,r+.1);je.setZoom(t)}zoomOut(){if(!this.graph)return;const r=je.getConfig().zoom.scale,t=Math.max(.1,r-.1);je.setZoom(t)}setZoom(r){if(!this.graph)return;const t=Math.max(.1,Math.min(5,r));je.setZoom(t)}clearAll(r){this.graph&&confirm("确定要清空画布吗?")&&(this.graph.clearCells(),r==null||r(),Xe("画布已清空","success"))}getSelectedNodes(){return this.graph?this.graph.getSelectedCells().filter(r=>r.isNode()):[]}validateSelection(r,t){const l=this.getSelectedNodes();return l.length<r?(Xe(t,"warning"),null):l}alignLeft(){const r=this.validateSelection(2,"请选择至少两个节点");if(!r)return;const t=Math.min(...r.map(l=>l.getPosition().x));r.forEach(l=>{l.setPosition({x:t,y:l.getPosition().y})})}alignCenter(){const r=this.validateSelection(2,"请选择至少两个节点");if(!r)return;const t=r.map(n=>n.getPosition().x+n.getSize().width/2),l=t.reduce((n,o)=>n+o,0)/t.length;r.forEach(n=>{const o=l-n.getSize().width/2;n.setPosition({x:o,y:n.getPosition().y})})}alignRight(){const r=this.validateSelection(2,"请选择至少两个节点");if(!r)return;const t=Math.max(...r.map(l=>l.getPosition().x+l.getSize().width));r.forEach(l=>{const n=t-l.getSize().width;l.setPosition({x:n,y:l.getPosition().y})})}alignTop(){const r=this.validateSelection(2,"请选择至少两个节点");if(!r)return;const t=Math.min(...r.map(l=>l.getPosition().y));r.forEach(l=>{l.setPosition({x:l.getPosition().x,y:t})})}alignMiddle(){const r=this.validateSelection(2,"请选择至少两个节点");if(!r)return;const t=r.map(n=>n.getPosition().y+n.getSize().height/2),l=t.reduce((n,o)=>n+o,0)/t.length;r.forEach(n=>{const o=l-n.getSize().height/2;n.setPosition({x:n.getPosition().x,y:o})})}alignBottom(){const r=this.validateSelection(2,"请选择至少两个节点");if(!r)return;const t=Math.max(...r.map(l=>l.getPosition().y+l.getSize().height));r.forEach(l=>{const n=t-l.getSize().height;l.setPosition({x:l.getPosition().x,y:n})})}distributeHorizontal(){const r=this.validateSelection(3,"请选择至少三个节点");if(!r)return;const t=r.sort((a,s)=>a.getPosition().x-s.getPosition().x),l=t[0],i=(t[t.length-1].getPosition().x-l.getPosition().x)/(t.length-1);t.forEach((a,s)=>{if(s===0||s===t.length-1)return;const c=l.getPosition().x+i*s;a.setPosition({x:c,y:a.getPosition().y})})}distributeVertical(){const r=this.validateSelection(3,"请选择至少三个节点");if(!r)return;const t=r.sort((a,s)=>a.getPosition().y-s.getPosition().y),l=t[0],i=(t[t.length-1].getPosition().y-l.getPosition().y)/(t.length-1);t.forEach((a,s)=>{if(s===0||s===t.length-1)return;const c=l.getPosition().y+i*s;a.setPosition({x:a.getPosition().x,y:c})})}selectAll(){this.graph&&this.graph.select(this.graph.getNodes())}clearSelection(){this.graph&&this.graph.unselect(this.graph.getSelectedCells())}calculateFitScale(r,t){const l=je.getConfig(),n=l.size.width,o=l.size.height,i=40,a=r-i,s=t-i,c=a/n,d=s/o;return Math.min(c,d,1)}}const pt=new ev;class tv{constructor(){Se(this,"animations",new Map)}startAnimation(r,t){if(!r||t.type==="none")return;this.stopAnimation(r.id);const l=r.id;let n=null;switch(t.type){case"blink":n=this.createBlinkAnimation(r,t);break;case"scale":n=this.createScaleAnimation(r,t);break;case"rotate":n=this.createRotateAnimation(r,t);break;case"float":n=this.createFloatAnimation(r,t);break;case"pulse":n=this.createPulseAnimation(r,t);break}n&&this.animations.set(l,n)}stopAnimation(r){const t=this.animations.get(r);t&&(t.stop&&t.stop(),t.intervalId&&clearInterval(t.intervalId),this.animations.delete(r))}createBlinkAnimation(r,t){const l=r.getAttrByPath("body/opacity")||1;let n=!0;const o=setInterval(()=>{n=!n,r.setAttrByPath("body/opacity",n?l:.2),t.loop||(clearInterval(o),r.setAttrByPath("body/opacity",l))},t.duration/2);return{intervalId:o,stop:()=>{clearInterval(o),r.setAttrByPath("body/opacity",l)}}}createScaleAnimation(r,t){const l=r.getSize();let n=!0;const o=.05;let i=1;const a=setInterval(()=>{n?(i+=o,i>=1.2&&(n=!1)):(i-=o,i<=.8&&(n=!0)),r.resize(l.width*i,l.height*i),!t.loop&&i>=.99&&i<=1.01&&(clearInterval(a),r.resize(l.width,l.height))},t.duration/20);return{intervalId:a,stop:()=>{clearInterval(a),r.resize(l.width,l.height)}}}createRotateAnimation(r,t){let l=0;const n=360/(t.duration/50),o=setInterval(()=>{l=(l+n)%360,r.rotate(l,{absolute:!0}),!t.loop&&l>=360&&(clearInterval(o),r.rotate(0,{absolute:!0}))},50);return{intervalId:o,stop:()=>{clearInterval(o),r.rotate(0,{absolute:!0})}}}createFloatAnimation(r,t){const l=r.position();let n=!0;const o=2;let i=l.y;const a=setInterval(()=>{n?(i-=o,i<=l.y-10&&(n=!1)):(i+=o,i>=l.y+10&&(n=!0)),r.position(l.x,i),!t.loop&&Math.abs(i-l.y)<1&&(clearInterval(a),r.position(l.x,l.y))},t.duration/40);return{intervalId:a,stop:()=>{clearInterval(a),r.position(l.x,l.y)}}}createPulseAnimation(r,t){const l=r.getAttrByPath("body/fill"),n=r.getAttrByPath("body/stroke");let o=0,i=!0;const a=setInterval(()=>{i?(o+=.1,o>=1&&(i=!1)):(o-=.1,o<=0&&(i=!0)),r.setAttrByPath("body/opacity",.5+o*.5),!t.loop&&o<=.05&&(clearInterval(a),r.setAttrByPath("body/fill",l),r.setAttrByPath("body/stroke",n),r.setAttrByPath("body/opacity",1))},t.duration/20);return{intervalId:a,stop:()=>{clearInterval(a),r.setAttrByPath("body/fill",l),r.setAttrByPath("body/stroke",n),r.setAttrByPath("body/opacity",1)}}}clearAll(){this.animations.forEach((r,t)=>{this.stopAnimation(t)}),this.animations.clear()}}const Mt=new tv;class rv{constructor(){Se(this,"graph",null);Se(this,"componentCounters",{})}setGraph(r){this.graph=r}generateComponentName(r,t){return this.componentCounters[r]||(this.componentCounters[r]=0),this.componentCounters[r]++,`${t}_${this.componentCounters[r]}`}addNode(r,t){var c,d,f,m;if(!this.graph)return null;const l=er.getComponent(r);if(!l)return console.error(`未找到组件配置: ${r}`),null;const n=this.generateComponentName(r,l.metadata.name),o={enabled:!1,type:"none",duration:1e3,loop:!0},i=t||Xl(50,50,400,300),a={x:i.x,y:i.y,shape:l.shape,width:l.width,height:l.height,label:l.label,attrs:l.attrs,ports:l.ports,data:{...l.data,componentType:r,componentName:n,props:l.props,animation:o,originalStroke:((d=(c=l.attrs)==null?void 0:c.body)==null?void 0:d.stroke)||"#2563eb",originalStrokeWidth:((m=(f=l.attrs)==null?void 0:f.body)==null?void 0:m.strokeWidth)||2}},s=this.graph.addNode(a);return console.log("[Node] 添加节点:",l.shape,s.id,a),s}updateNode(r,t){if(r&&(t.attrs&&Object.keys(t.attrs).forEach(l=>{const n=t.attrs[l];typeof n=="object"?Object.keys(n).forEach(o=>{r.attr(`${l}/${o}`,n[o])}):r.attr(l,n)}),t.position&&(typeof t.position.x=="number"&&typeof t.position.y=="number"?r.setPosition(t.position):console.error("position 数据格式错误:",t.position)),t.size&&(typeof t.size.width=="number"&&typeof t.size.height=="number"?r.setSize(t.size):console.error("size 数据格式错误:",t.size)),t.data)){const l={...t.data};delete l.position,delete l.size,r.setData(l)}}deleteNode(r){if(!this.graph)return!1;Mt.stopAnimation(r);try{return this.graph.removeNode(r),!0}catch(t){return console.error("删除节点失败:",t),!1}}selectNode(r){if(!this.graph)return!1;const t=this.graph.getCellById(r);return t?(this.graph.select(t),!0):!1}getNodeById(r){if(!this.graph)return null;const t=this.graph.getCellById(r);return!t||!t.isNode()?null:t}getAllNodes(){return this.graph?this.graph.getNodes().map(r=>({id:r.id,type:r.shape,position:r.getPosition(),size:r.getSize(),label:r.attr("label/text"),data:r.getData()})):[]}cloneNode(r,t={x:20,y:20}){if(!this.graph)return null;try{const l=r.clone();return l.translate(t.x,t.y),this.graph.addNode(l),l}catch(l){return console.error("复制节点失败:",l),null}}deleteNodes(r){if(!this.graph)return 0;let t=0;return r.forEach(l=>{this.deleteNode(l)&&t++}),t}bringToFront(r){const t=this.getNodeById(r);t&&t.toFront()}sendToBack(r){const t=this.getNodeById(r);t&&t.toBack()}}const cr=new rv;class ov{constructor(){Se(this,"graph",null)}setGraph(r){this.graph=r}applyEdgeAnimation(r,t){if(!r||typeof r.attr!="function"){console.warn("applyEdgeAnimation: edge 对象无效",r);return}if(!t||!t.enabled){r.attr("line/strokeDasharray",void 0),r.attr("circle",void 0),typeof r.stopTransition=="function"&&r.stopTransition("attrs/circle/atConnectionRatio");return}const l=t.duration||2e3;r.attr("circle",{r:4,atConnectionRatio:0,fill:{type:"radialGradient",stops:[{offset:"0%",color:"#FFF"},{offset:"100%",color:r.attr("line/stroke")||"#10b981"}]},stroke:r.attr("line/stroke")||"#10b981",strokeWidth:1});const n=()=>{r.attr("circle/atConnectionRatio",0,{silent:!0}),r.transition("attrs/circle/atConnectionRatio",1,{delay:0,duration:l,timing:"linear",complete:()=>{n()}})};n()}updateEdge(r,t){if(r){if(t.attrs){Object.keys(t.attrs).forEach(o=>{const i=t.attrs[o];typeof i=="object"?Object.keys(i).forEach(a=>{var s,c;r.attr(`${o}/${a}`,i[a]),(c=(s=r.data)==null?void 0:s.originalAttrs)!=null&&c[o]&&(r.data.originalAttrs[o][a]=i[a])}):r.attr(o,i)});const l=r.getAttrs(),n=Object.assign({},r.data,{originalAttrs:l});r.setData(n),r.attr("line/stroke","#3b82f6")}t.router&&r.setRouter(t.router),t.connector&&r.setConnector(t.connector),t.animation&&this.applyEdgeAnimation(r,t.animation),t.data&&r.setData(Object.assign({},r.data,t.data))}}deleteEdge(r){if(!this.graph)return!1;try{return this.graph.removeEdge(r),!0}catch(t){return console.error("删除边失败:",t),!1}}getEdgeById(r){if(!this.graph)return null;const t=this.graph.getCellById(r);return!t||!t.isEdge()?null:t}getAllEdges(){return this.graph?this.graph.getEdges().map(r=>({id:r.id,source:r.getSourceCellId(),target:r.getTargetCellId(),data:r.getData()})):[]}applySelectedStyle(r){if(!r)return;const t=r.getAttrs();r.data={...r.data,originalAttrs:t},r.attr("line/stroke","#3b82f6")}restoreOriginalStyle(r){var l,n;if(!r||!((l=r.data)!=null&&l.originalAttrs))return;const t=r.data.originalAttrs;r.attr("line/stroke",((n=t.line)==null?void 0:n.stroke)||"#10b981")}restoreAllEdgeAnimations(){this.graph&&this.graph.getEdges().forEach(r=>{var l;const t=r.getData();(l=t==null?void 0:t.animation)!=null&&l.enabled&&this.applyEdgeAnimation(r,t.animation)})}}const Er=new ov;class nv{constructor(){Se(this,"graph",null)}setGraph(r){this.graph=r}saveToLocal(){if(!this.graph)return!1;try{const r={cells:this.graph.toJSON().cells,dataSources:Ke.getAllDataSources().map(t=>({id:t.id,name:t.name,type:t.type,enabled:t.enabled,config:t.config}))};return lr(ft.SCADA_EDITOR_DATA,r),!0}catch(r){return console.error("保存画布数据失败:",r),!1}}loadFromLocal(r){var t;if(!this.graph)return!1;try{const l=Ui(ft.SCADA_EDITOR_DATA);if(!((t=l==null?void 0:l.cells)!=null&&t.length))return!1;const n=this.cleanCellsData(l.cells);return this.graph.fromJSON({cells:n}),r&&this.graph.getEdges().forEach(o=>{var a;const i=o.getData();(a=i==null?void 0:i.animation)!=null&&a.enabled&&r(o)}),!0}catch(l){return console.error("恢复画布数据失败,清空缓存:",l),ao(ft.SCADA_EDITOR_DATA),!1}}cleanCellsData(r){return r.map(t=>{var l;return t.position&&typeof t.position=="object"&&(typeof t.position.x!="number"||typeof t.position.y!="number")&&(t.position={x:100,y:100}),(t.shape==="edge"||t.shape==="animated-edge")&&(t.router==="manhattan"||((l=t.router)==null?void 0:l.name)==="manhattan")&&(t.router={name:"orth",args:{padding:10}}),t})}exportData(){if(!this.graph)return null;try{const r={version:"1.0.0",timestamp:lo(co()),config:{size:je.getConfig().size,background:je.getConfig().background,grid:je.getConfig().grid,guides:je.getConfig().guides,magnetism:je.getConfig().magnetism,zoom:je.getConfig().zoom},cells:this.graph.toJSON().cells,nodes:this.graph.getNodes().map(t=>({id:t.id,type:t.shape,position:t.getPosition(),size:t.getSize(),label:t.attr("label/text"),data:t.getData()})),edges:this.graph.getEdges().map(t=>({id:t.id,source:t.getSourceCellId(),target:t.getTargetCellId()})),dataSources:Ke.getAllDataSources().map(t=>({id:t.id,name:t.name,type:t.type,enabled:t.enabled,config:t.config})),workflows:[]};return r.workflows=this.collectReferencedWorkflows(),r}catch(r){return console.error("导出数据失败:",r),null}}collectReferencedWorkflows(){if(!this.graph)return[];const r=new Set;if(this.graph.getNodes().forEach(t=>{const l=t.getData();l!=null&&l.events&&Array.isArray(l.events)&&l.events.forEach(n=>{var o;n.action==="callProcess"&&((o=n.params)!=null&&o.processId)&&r.add(n.params.processId)})}),r.size===0)return[];try{const t=localStorage.getItem("saved-workflows");if(t)return JSON.parse(t).filter(n=>r.has(n.id))}catch(t){console.error("加载流程数据失败:",t)}return[]}importData(r,t){if(!this.graph)return!1;try{if(!r.cells)return Xe("无效的JSON文件格式","error"),!1;if(!confirm("导入将清空当前画布,是否继续?"))return!1;this.graph.clearCells(),this.graph.fromJSON({cells:r.cells}),t&&this.graph.getEdges().forEach(n=>{var i;const o=n.getData();(i=o==null?void 0:o.animation)!=null&&i.enabled&&t(n)}),r.config&&je.updateConfig(r.config),this.importDataSources(r.dataSources);const l=this.importWorkflows(r.workflows);return l.imported>0||l.updated>0?Xe(`导入成功 画布已加载,流程: 新增${l.imported}个,更新${l.updated}个`,"success"):Xe("导入成功","success"),!0}catch(l){return console.error("导入失败",l),Xe("导入失败,JSON格式错误","error"),!1}}importDataSources(r){!r||!Array.isArray(r)||(Ke.disconnectAll(),Ke.getAllDataSources().forEach(t=>{Ke.removeDataSource(t.id)}),r.forEach(t=>{const l={id:t.id,name:t.name,type:t.type,enabled:t.enabled,config:t.config,devices:[],status:{connected:!1}};Ke.addDataSource(l)}),console.log(`[CanvasDataHandler] 已导入 ${r.length} 个数据源`))}importWorkflows(r){if(!r||!Array.isArray(r)||r.length===0)return{imported:0,updated:0};try{const t=localStorage.getItem("saved-workflows"),l=t?JSON.parse(t):[];let n=0,o=0;return r.forEach(i=>{const a=l.findIndex(s=>s.id===i.id);a>=0?(l[a]={...i,updatedAt:Date.now()},o++):(l.push(i),n++)}),localStorage.setItem("saved-workflows",JSON.stringify(l)),{imported:n,updated:o}}catch(t){return console.error("导入流程数据失败:",t),Xe("画布导入成功, 但流程数据导入失败","warning"),{imported:0,updated:0}}}exportToFile(r){const t=this.exportData();if(!t)return null;try{const l=new Blob([JSON.stringify(t,null,2)],{type:"application/json"}),n=URL.createObjectURL(l),o=document.createElement("a"),i=r||`scada-export-${Date.now()}.json`;return o.href=n,o.download=i,o.click(),URL.revokeObjectURL(n),i}catch(l){return console.error("导出文件失败:",l),null}}clearCache(){ao(ft.SCADA_EDITOR_DATA)}getCanvasData(){return this.graph?{version:"1.0.0",timestamp:lo(co()),config:je.getConfig(),cells:this.graph.toJSON().cells,nodes:this.graph.getNodes().map(r=>({id:r.id,type:r.shape,position:r.getPosition(),size:r.getSize(),label:r.attr("label/text"),data:r.getData()})),edges:this.graph.getEdges().map(r=>({id:r.id,source:r.getSourceCellId(),target:r.getTargetCellId()}))}:null}}const It=new nv;class iv{constructor(){Se(this,"graph",null);Se(this,"dataCallbackRegistered",!1)}setGraph(r){this.graph=r}initDataBinding(){this.dataCallbackRegistered||(Ke.onData((r,t)=>{this.syncDataToNodes(r,t)}),this.dataCallbackRegistered=!0)}syncDataToNodes(r,t){if(!this.graph)return;this.graph.getNodes().forEach(n=>{const o=n.getData();!o||!o.dataBinding||o.dataBinding.dataSourceId===r&&o.dataBinding.deviceId===t.id&&this.updateNodeFromDeviceData(n,o,t)})}updateNodeFromDeviceData(r,t,l){if(!t.bindings||!Array.isArray(t.bindings))return;let n=!1;if(t.bindings.forEach(o=>{var d;if(!o.devicePointId)return;const i=o.devicePointId.split(":"),a=i.length===2?i[1]:o.devicePointId,s=(d=l.points)==null?void 0:d.find(f=>f.id===a);if(!s||s.value===void 0)return;let c=s.value;o.mapping&&(c=this.applyMapping(s.value,o.mapping)),o.targetProperty==="value"?(t.value=c,n=!0):(t[o.targetProperty]=c,n=!0)}),n){const o=JSON.parse(JSON.stringify(t));r.setData(o,{overwrite:!0}),r.trigger("change:data",{current:o,previous:t})}}applyMapping(r,t){if(!t||t.type==="direct")return r;switch(t.type){case"boolean":return r?t.trueValue??!0:t.falseValue??!1;case"range":if(t.rangeRules&&Array.isArray(t.rangeRules))for(const l of t.rangeRules){const n=Number(r);if(n>=l.min&&n<=l.max)return l.value}return r;case"enum":return t.enumMappings?t.enumMappings[String(r)]??r:r;default:return r}}updateDeviceData(r){!this.graph||!(r!=null&&r.devices)||r.devices.forEach(t=>{var l;(l=t.points)==null||l.forEach(n=>{this.graph.getNodes().forEach(o=>{const i=o.getData();i!=null&&i.bindings&&Object.entries(i.bindings).forEach(([a,s])=>{if(s.deviceId===t.id&&s.dataPoint===n.id){const c=n.value;if(a==="attrs/text/text")o.attr("text/text",c);else if(a==="attrs/body/fill")o.attr("body/fill",c);else{const d=a.split(".");let f=o;for(let h=0;h<d.length-1;h++)f=f[d[h]];const m=d[d.length-1];f&&m&&(f[m]=c)}}})})})})}getNodeBindings(r){if(!this.graph)return[];const t=this.graph.getCellById(r);if(!t||!t.isNode())return[];const l=t.getData();return(l==null?void 0:l.bindings)||[]}updateNodeBindings(r,t){if(!this.graph)return!1;const l=this.graph.getCellById(r);if(!l||!l.isNode())return!1;const n=l.getData();return l.setData({...n,bindings:t}),!0}}const Zl=new iv;class sv{getNodeMenuItems(){return[{key:"delete",label:"删除",icon:"❌",hotkey:"Delete"},{key:"copy",label:"复制",icon:"📋",hotkey:"Ctrl+C"},{key:"divider1",divider:!0},{key:"to-front",label:"置于顶层",icon:"⬆️"},{key:"to-back",label:"置于底层",icon:"⬇️"}]}getEdgeMenuItems(){return[{key:"delete",label:"删除",icon:"❌",hotkey:"Delete"},{key:"divider1",divider:!0},{key:"to-front",label:"置于顶层",icon:"⬆️"},{key:"to-back",label:"置于底层",icon:"⬇️"}]}getCanvasMenuItems(){return[{key:"paste",label:"粘贴",icon:"📋",hotkey:"Ctrl+V",disabled:!0},{key:"divider1",divider:!0},{key:"select-all",label:"全选",icon:"✅",hotkey:"Ctrl+A"},{key:"clear-all",label:"清空画布",icon:"🗑️"}]}getMenuItems(r){switch(r){case"node":return this.getNodeMenuItems();case"edge":return this.getEdgeMenuItems();case"canvas":return this.getCanvasMenuItems();default:return[]}}}const zi=new sv;class av{constructor(){Se(this,"graph",null);Se(this,"config",null);Se(this,"keydownHandler",null)}initialize(r,t){this.graph=r,this.config=t,this.registerSelectionEvents(),this.registerClickEvents(),this.registerChangeEvents(),this.registerContextMenuEvents(),this.registerKeyboardEvents()}registerSelectionEvents(){if(!this.graph||!this.config)return;const{selectedNode:r,selectedEdge:t,selectedNodesCount:l}=this.config;this.graph.on("selection:changed",({selected:n})=>{var i,a;const o=n?n.filter(s=>s.isNode()):[];if(l.value=o.length,n&&n.length>0){const s=n[0];if(s.isNode())r.value=s,t.value=null;else if(s.isEdge()){t.value=s,r.value=null;const c=s.getAttrs();s.data={...s.data,originalAttrs:c},s.attr("line/stroke","#3b82f6")}}else{if(t.value&&((i=t.value.data)!=null&&i.originalAttrs)){const s=t.value.data.originalAttrs;t.value.attr("line/stroke",((a=s.line)==null?void 0:a.stroke)||"#10b981")}r.value=null,t.value=null}})}registerClickEvents(){if(!this.graph||!this.config)return;const{selectedNode:r,selectedEdge:t}=this.config;this.graph.on("edge:click",({edge:l})=>{this.graph.select(l)}),this.graph.on("blank:click",()=>{t.value=null,r.value=null})}registerChangeEvents(){!this.graph||!this.config||(this.graph.on("node:change:position",()=>{}),this.graph.on("node:change:size",()=>{}),this.graph.on("node:change:data",({node:r})=>{const t=r.getData();if(t.animation)if(t.animation.enabled===!0){const l={type:t.animation.type||"none",duration:t.animation.duration||1e3,loop:t.animation.loop!==!1};Mt.startAnimation(r,l)}else Mt.stopAnimation(r.id)}),this.graph.on("edge:change:data",({edge:r})=>{var l;const t=r.getData();t!=null&&t.animation&&((l=this.config)!=null&&l.applyEdgeAnimation)&&this.config.applyEdgeAnimation(r,t.animation)}))}registerContextMenuEvents(){if(!this.graph||!this.config)return;const{contextMenu:r}=this.config;this.graph.on("cell:contextmenu",({e:t,cell:l})=>{t.preventDefault(),r.value.targetCell=l,r.value.position={x:t.clientX,y:t.clientY},l.isNode()?r.value.items=zi.getNodeMenuItems():l.isEdge()&&(r.value.items=zi.getEdgeMenuItems()),r.value.visible=!0}),this.graph.on("blank:contextmenu",({e:t})=>{t.preventDefault(),r.value.targetCell=null,r.value.position={x:t.clientX,y:t.clientY},r.value.items=zi.getCanvasMenuItems(),r.value.visible=!0})}registerKeyboardEvents(){if(!this.graph||!this.config)return;const{selectedNode:r,selectedEdge:t}=this.config,l=this.graph;this.keydownHandler=n=>{if(n.key==="Delete"&&l){if(r.value){const o=r.value.id;Mt.stopAnimation(o),l.removeNode(o),r.value=null}else if(t.value){const o=t.value.id;l.removeEdge(o),t.value=null}}},document.addEventListener("keydown",this.keydownHandler)}destroy(){this.keydownHandler&&(document.removeEventListener("keydown",this.keydownHandler),this.keydownHandler=null),this.graph=null,this.config=null}}const ec=new av;class lv{constructor(){Se(this,"graph",null);Se(this,"containerRef",null);Se(this,"calculateFitScale",null)}initialize(r,t,l){this.graph=r,this.containerRef=t,this.calculateFitScale=l}applyConfigChanges(){if(!this.graph)return;const r=je.getConfig();this.updateBackground(r.background),this.updateSizeAndScale(r.size,r.zoom.scale),this.updateGrid(r.grid),this.graph.translate(r.offset.x,r.offset.y)}updateBackground(r){this.graph&&(r.image?this.graph.drawBackground({color:r.color||"#1e293b",image:r.image,size:r.size||"cover",repeat:r.repeat||"no-repeat",position:"center"}):this.graph.drawBackground({color:r.color||"#1e293b"}))}updateSizeAndScale(r,t){var n;if(!this.graph||!this.containerRef)return;const l=(n=this.containerRef.value)==null?void 0:n.containerRef;if(l&&(this.graph.resize(r.width,r.height),l.style.width=`${r.width}px`,l.style.height=`${r.height}px`,this.calculateFitScale)){const o=this.calculateFitScale(),i=t>o?t:o;l.style.transform=`scale(${i})`,l.style.transformOrigin="center center"}}updateGrid(r){this.graph&&(r.enabled?(this.graph.drawGrid({type:r.type||"dot",args:{color:r.color||"#475569",thickness:1}}),this.graph.showGrid(),r.size&&this.graph.setGridSize(r.size)):this.graph.hideGrid())}destroy(){this.graph=null,this.containerRef=null,this.calculateFitScale=null}}const tc=new lv,cv=["title"],dv={key:1,class:"properties"},uv={key:2,class:"properties"},fv={class:"tabs"},pv={class:"tab-content"},hv={class:"tab-pane"},mv={class:"property-section"},gv={key:0,class:"empty-hint"},yv={class:"event-list"},bv={class:"tab-pane"},wv={class:"property-section"},Ev={key:0,class:"empty-hint"},vv={class:"event-list"},Wi=Me(e.defineComponent({__name:"PropertyPanel",props:{selectedNode:{},selectedEdge:{},deviceData:{},isCollapsed:{type:Boolean,default:!1}},emits:["updateNode","deleteNode","updateEdge","deleteEdge","update:collapsed"],setup(u,{emit:r}){const t=u,l=r,n=()=>{l("update:collapsed",!t.isCollapsed)},o=e.ref("basic"),i=e.ref([]),a=e.ref(new Set),s=e.ref([]),c=e.ref(new Set),d=e.computed(()=>{if(!t.selectedNode)return null;const B=t.selectedNode.getData(),P=B==null?void 0:B.dataBinding;if(!(P!=null&&P.dataSourceId)||!(P!=null&&P.deviceId))return null;const me=Ke.getDataSource(P.dataSourceId);if(!me)return null;const Ne=me.devices.find(xe=>xe.id===P.deviceId);return Ne?{devices:[{id:Ne.id,name:Ne.name,points:Ne.points||[]}]}:null}),f=e.computed(()=>{var P;if(!t.selectedNode)return;const B=t.selectedNode.getData();return(P=B==null?void 0:B.dataBinding)==null?void 0:P.deviceId}),m=e.computed(()=>{var B,P;if((P=(B=d.value)==null?void 0:B.devices)!=null&&P[0])return d.value.devices[0].name});e.watch(()=>t.selectedNode,B=>{var P,me;if((P=B==null?void 0:B.data)!=null&&P.events){const Ne=JSON.parse(JSON.stringify(B.data.events));Ne.forEach(xe=>{xe.id||(xe.id=F())}),i.value=Ne}else i.value=[];a.value.clear(),(me=B==null?void 0:B.data)!=null&&me.bindings?s.value=JSON.parse(JSON.stringify(B.data.bindings)):s.value=[],c.value.clear()},{immediate:!0});const h=e.ref(0),p=e.ref(0);let w=null,v={x:0,y:0},S={width:0,height:0};e.watch(()=>t.selectedNode,B=>{if(w&&(clearInterval(w),w=null),B){const P=B.getPosition(),me=B.getSize();P&&typeof P.x=="number"&&typeof P.y=="number"?v=P:(v={x:0,y:0},console.warn("节点位置数据异常:",P)),me&&typeof me.width=="number"&&typeof me.height=="number"?S=me:(S={width:0,height:0},console.warn("节点尺寸数据异常:",me)),w=setInterval(()=>{if(t.selectedNode){const Ne=t.selectedNode.getPosition(),xe=t.selectedNode.getSize();Ne&&typeof Ne.x=="number"&&typeof Ne.y=="number"&&(Ne.x!==v.x||Ne.y!==v.y)&&(v=Ne,h.value++),xe&&typeof xe.width=="number"&&typeof xe.height=="number"&&(xe.width!==S.width||xe.height!==S.height)&&(S=xe,p.value++)}},50)}}),e.onUnmounted(()=>{w&&clearInterval(w)});const y=e.computed(()=>{var P;return h.value,((P=t.selectedNode)==null?void 0:P.getPosition())||{x:0,y:0}}),k=e.computed(()=>{var P;return p.value,((P=t.selectedNode)==null?void 0:P.getSize())||{width:0,height:0}}),_=e.computed(()=>{var P;return((P=t.selectedNode)==null?void 0:P.getAttrs())||{}}),E=(B,P)=>{const me=Number(P.target.value),Ne=t.selectedNode.getPosition(),xe=B==="x"?{x:me,y:Ne.y}:{x:Ne.x,y:me};l("updateNode",{position:xe})},I=(B,P)=>{const me=Number(P.target.value),Ne=t.selectedNode.getSize(),xe=B==="width"?{width:me,height:Ne.height}:{width:Ne.width,height:me};l("updateNode",{size:xe})},x=B=>{const P=B.target.value;l("updateNode",{attrs:{text:{text:P},label:{text:P}}})},V=B=>{const P=B.target.value;l("updateNode",{attrs:{body:{fill:P}}})},$=B=>{const P=B.target.value;l("updateNode",{attrs:{body:{stroke:P}}})},C=B=>{const P=Number(B.target.value);l("updateNode",{attrs:{body:{strokeWidth:P}}})},D=B=>{const P=Number(B.target.value);l("updateNode",{attrs:{body:{opacity:P}}})},A=B=>{const P=B.target.value,me={...t.selectedNode.data,componentName:P};l("updateNode",{data:me})},U=(B,P)=>{if(!t.selectedNode)return;const me=B.split(".");if(me[0]==="attrs"){const Ne=me.slice(1).join("/");l("updateNode",{attrs:{[Ne]:P}})}else if(me[0]==="data"){const Ne=JSON.parse(JSON.stringify(t.selectedNode.data||{}));let xe=Ne;for(let De=1;De<me.length-1;De++){const Ge=me[De];xe[Ge]||(xe[Ge]={}),xe=xe[Ge]}xe[me[me.length-1]]=P,console.log("[PropertyPanel] 更新属性:",B,"=",P),console.log("[PropertyPanel] 节点类型:",t.selectedNode.shape),B==="data.presetId"&&t.selectedNode.shape==="echarts-vue"&&console.log("[PropertyPanel] 检测到预设切换,只更新 presetId"),l("updateNode",{data:Ne})}},H=B=>{if(!t.selectedNode)return;const P={...t.selectedNode.data,dataBinding:B};l("updateNode",{data:P})},F=Jl,ue=()=>{const B={id:F(),name:"",type:"click",conditionType:"always",action:"attributeChange",params:{}};i.value.push(B),ie()},ne=B=>{i.value.splice(B,1),ie()},oe=(B,P,me)=>{const Ne=me.target.value;i.value[B][P]=Ne,ie()},fe=(B,P,me)=>{const xe=me.target.value;i.value[B].condition||(i.value[B].condition={}),i.value[B].condition[P]=xe,ie()},J=(B,P,me)=>{const xe=me.target.value;i.value[B].params||(i.value[B].params={}),i.value[B].params[P]=xe,ie()},ie=()=>{i.value.forEach(P=>{P.id||(P.id=F())});const B={...t.selectedNode.data,events:i.value};l("updateNode",{data:B})},R=B=>{a.value.has(B)?a.value.delete(B):a.value.add(B)},Z=B=>a.value.has(B),ge=()=>{const B={devicePointId:"",targetProperty:"",enabled:!0};s.value.push(B),ee()},G=B=>{s.value.splice(B,1),ee()},Ve=(B,P,me)=>{const xe=me.target.value;s.value[B][P]=xe,ee()},ee=()=>{const B={...t.selectedNode.data,bindings:s.value};l("updateNode",{data:B})},q=B=>{c.value.has(B)?c.value.delete(B):c.value.add(B)},ce=B=>c.value.has(B),X=e.ref(!1),re=e.ref(-1),O=e.ref([]),te=B=>{var me;re.value=B;const P=i.value[B];(me=P.params)!=null&&me.attributeGroups&&Array.isArray(P.params.attributeGroups)?O.value=JSON.parse(JSON.stringify(P.params.attributeGroups)):O.value=[{target:"current",property:"",value:""}],X.value=!0},se=()=>{X.value=!1},j=()=>{O.value.push({target:"current",property:"",value:""})},K=B=>{O.value.splice(B,1)},ae=(B,P,me)=>{O.value[B][P]=me},he=()=>{for(const B of O.value)if(!B.property){alert("请为每组配置选择目标属性");return}i.value[re.value].params||(i.value[re.value].params={}),i.value[re.value].params.attributeGroups=JSON.parse(JSON.stringify(O.value)),ie(),se()},pe=e.ref(!1),ve=e.ref(""),Q=e.ref(-1),ye=B=>{var me;Q.value=B;const P=i.value[B];ve.value=((me=P.params)==null?void 0:me.code)||"",pe.value=!0},ke=()=>{pe.value=!1},de=()=>{i.value[Q.value].params||(i.value[Q.value].params={}),i.value[Q.value].params.code=ve.value,ie(),ke()},Ae=e.ref(!1),g=e.ref(-1),b=B=>{g.value=B,Ae.value=!0},N=()=>{Ae.value=!1},T=B=>{i.value[g.value].params||(i.value[g.value].params={});const P=i.value[g.value].params;P.processId=B.id,P.processName=B.name,P.processData=B.data,ie(),N()},L=()=>{var P;if(!t.selectedNode)return[];const B=[];return(P=t.selectedNode.data)!=null&&P.props&&Array.isArray(t.selectedNode.data.props)&&t.selectedNode.data.props.forEach(me=>{me.bindable!==!1&&B.push({key:me.key,label:me.label,type:me.type||"text"})}),B},Y=B=>{l("updateEdge",B)},le=()=>{l("deleteEdge")};return(B,P)=>(e.openBlock(),e.createElementBlock(e.Fragment,null,[e.createElementVNode("div",{class:e.normalizeClass(["property-panel",{collapsed:u.isCollapsed}])},[e.createElementVNode("button",{class:"collapse-btn",onClick:n,title:u.isCollapsed?"展开属性面板":"折叠属性面板"},[...P[4]||(P[4]=[e.createElementVNode("span",{class:"collapse-icon"},"▶",-1)])],8,cv),!u.selectedNode&&!u.selectedEdge?(e.openBlock(),e.createBlock(Eo,{key:0})):u.selectedEdge?(e.openBlock(),e.createElementBlock("div",dv,[P[5]||(P[5]=e.createElementVNode("h3",{class:"panel-title"},"连线属性",-1)),e.createVNode(Xb,{"selected-edge":u.selectedEdge,onUpdateEdge:Y,onDeleteEdge:le},null,8,["selected-edge"])])):u.selectedNode?(e.openBlock(),e.createElementBlock("div",uv,[P[11]||(P[11]=e.createElementVNode("h3",{class:"panel-title"},"节点属性",-1)),e.createElementVNode("div",fv,[e.createElementVNode("button",{class:e.normalizeClass(["tab-btn",{active:o.value==="basic"}]),onClick:P[0]||(P[0]=me=>o.value="basic")}," 基础 ",2),e.createElementVNode("button",{class:e.normalizeClass(["tab-btn",{active:o.value==="binding"}]),onClick:P[1]||(P[1]=me=>o.value="binding")}," 数据绑定 ",2),e.createElementVNode("button",{class:e.normalizeClass(["tab-btn",{active:o.value==="event"}]),onClick:P[2]||(P[2]=me=>o.value="event")}," 事件 ",2)]),e.createElementVNode("div",pv,[e.withDirectives(e.createVNode(vo,{"selected-node":u.selectedNode,"node-position":y.value,"node-size":k.value,"node-attrs":_.value,onUpdatePosition:E,onUpdateSize:I,onUpdateLabel:x,onUpdateFill:V,onUpdateStroke:$,onUpdateStrokeWidth:C,onUpdateOpacity:D,onUpdateComponentName:A,onUpdateDynamicProp:U},null,8,["selected-node","node-position","node-size","node-attrs"]),[[e.vShow,o.value==="basic"]]),e.withDirectives(e.createElementVNode("div",hv,[e.createVNode(vb,{"selected-node":u.selectedNode,onUpdateDataSource:H},null,8,["selected-node"]),P[8]||(P[8]=e.createElementVNode("div",{class:"divider"},null,-1)),e.createElementVNode("div",mv,[e.createElementVNode("div",{class:"section-header"},[P[6]||(P[6]=e.createElementVNode("h4",null,"点位映射",-1)),e.createElementVNode("button",{class:"btn-add",onClick:ge},"+ 添加映射")]),s.value.length===0?(e.openBlock(),e.createElementBlock("div",gv,[...P[7]||(P[7]=[e.createElementVNode("span",null,"暂无点位映射,请先选择设备后点击上方按钮添加",-1)])])):e.createCommentVNode("",!0),e.createElementVNode("div",yv,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(s.value,(me,Ne)=>(e.openBlock(),e.createBlock(Oi,{key:Ne,binding:me,index:Ne,"is-collapsed":ce(Ne),"node-properties":L(),"event-list":i.value,"device-data":d.value,"node-device-id":f.value,"node-device-name":m.value,onToggleCollapse:xe=>q(Ne),onRemove:xe=>G(Ne),onUpdateField:(xe,De)=>Ve(Ne,xe,De)},null,8,["binding","index","is-collapsed","node-properties","event-list","device-data","node-device-id","node-device-name","onToggleCollapse","onRemove","onUpdateField"]))),128))])])],512),[[e.vShow,o.value==="binding"]]),e.withDirectives(e.createElementVNode("div",bv,[e.createElementVNode("div",wv,[e.createElementVNode("div",{class:"section-header"},[P[9]||(P[9]=e.createElementVNode("h4",null,"节点事件",-1)),e.createElementVNode("button",{class:"btn-add",onClick:ue},"+ 添加事件")]),i.value.length===0?(e.openBlock(),e.createElementBlock("div",Ev,[...P[10]||(P[10]=[e.createElementVNode("span",null,"暂无事件,点击上方按钮添加",-1)])])):e.createCommentVNode("",!0),e.createElementVNode("div",vv,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(i.value,(me,Ne)=>(e.openBlock(),e.createBlock(Pi,{key:Ne,event:me,index:Ne,"is-collapsed":Z(Ne),"node-properties":L(),onToggleCollapse:xe=>R(Ne),onRemove:xe=>ne(Ne),onUpdateField:(xe,De)=>oe(Ne,xe,De),onUpdateCondition:(xe,De)=>fe(Ne,xe,De),onUpdateParams:(xe,De)=>J(Ne,xe,De),onOpenAttributeConfig:xe=>te(Ne),onOpenCustomCode:xe=>ye(Ne),onOpenWorkflowSelector:xe=>b(Ne)},null,8,["event","index","is-collapsed","node-properties","onToggleCollapse","onRemove","onUpdateField","onUpdateCondition","onUpdateParams","onOpenAttributeConfig","onOpenCustomCode","onOpenWorkflowSelector"]))),128))])])],512),[[e.vShow,o.value==="event"]])])])):e.createCommentVNode("",!0)],2),X.value?(e.openBlock(),e.createBlock(Mi,{key:0,"attribute-groups":O.value,"node-properties":L(),onClose:se,onSave:he,onAddGroup:j,onRemoveGroup:K,onUpdateGroup:ae},null,8,["attribute-groups","node-properties"])):e.createCommentVNode("",!0),pe.value?(e.openBlock(),e.createBlock(Ri,{key:1,code:ve.value,"onUpdate:code":P[3]||(P[3]=me=>ve.value=me),"selected-node":u.selectedNode,onClose:ke,onSave:de},null,8,["code","selected-node"])):e.createCommentVNode("",!0),Ae.value?(e.openBlock(),e.createBlock(zE,{key:2,onClose:N,onSelect:T})):e.createCommentVNode("",!0)],64))}}),[["__scopeId","data-v-dbee6e68"]]);function qi(u){const r=u.replace(/-/g,"+").replace(/_/g,"/"),t=r.length%4?"=".repeat(4-r.length%4):"",l=r+t,n=(typeof atob<"u"?atob:i=>Buffer.from(i,"base64").toString("binary"))(l),o=new Uint8Array(n.length);for(let i=0;i<n.length;i++)o[i]=n.charCodeAt(i);return o}function rc(u){const r=new ArrayBuffer(u.byteLength);return new Uint8Array(r).set(u),r}function kv(u){const r=u.replace("-----BEGIN PUBLIC KEY-----","").replace("-----END PUBLIC KEY-----","").replace(/\s+/g,""),t=(typeof atob<"u"?atob:n=>Buffer.from(n,"base64").toString("binary"))(r),l=new Uint8Array(t.length);for(let n=0;n<t.length;n++)l[n]=t.charCodeAt(n);return l.buffer}async function _v(u){const r=kv(u);return await crypto.subtle.importKey("spki",r,{name:"ECDSA",namedCurve:"P-256"},!1,["verify"])}async function Nv(u,r){try{const[t,l]=u.split(".");if(!t||!l)return!1;const n=await _v(r),o=qi(t),i=qi(l),a=rc(o),s=rc(i);return await crypto.subtle.verify({name:"ECDSA",hash:{name:"SHA-256"}},n,s,a)}catch{return!1}}async function xv(u,r){const t=await Nv(u,r);if(!t)return null;const l=u.split(".")[0],n=qi(l),o=new TextDecoder().decode(n),i=JSON.parse(o),a=i.expiryDate?new Date().getTime()<=new Date(i.expiryDate).getTime():!0;return{company:i.company||"未知",expiryDate:i.expiryDate,isValid:!!(t&&a)}}const Sv={key:0,class:"scada-footer"},Vv={key:1,class:"scada-footer"},Cv={class:"footer-content"},Iv={class:"footer-left"},Av={class:"copyright",style:{color:"#94a3b8 !important"}},$v={key:0,class:"divider",style:{color:"#475569 !important"}},Tv={key:1,class:"license",style:{color:"#94a3b8 !important"}},Bv={key:0,class:"footer-right"},Dv={class:"text",style:{color:"#94a3b8 !important"}},Pv={key:2,class:"scada-footer"},Ov={class:"footer-content"},Mv={class:"footer-left"},Rv={class:"authorized-text",style:{color:"#10b981 !important"}},jv={class:"footer-right"},Lv={key:0,class:"expiry-text",style:{color:"#94a3b8 !important"}},Uv={key:1,class:"expiry-text",style:{color:"#94a3b8 !important"}},Fv=Me(e.defineComponent({__name:"Footer",props:{authCode:{default:""},publicKeyPem:{default:void 0},customFooter:{default:void 0}},setup(u){const r=u,t=e.ref(null),l=e.ref(!1);e.watch(()=>[r.authCode,r.publicKeyPem],async()=>{if(!r.authCode||!r.publicKeyPem){l.value=!1,t.value=null;return}const o=await xv(r.authCode,r.publicKeyPem);l.value=!!(o!=null&&o.isValid),t.value=o||null},{immediate:!0});const n=e.computed(()=>l.value);return(o,i)=>{var a,s;return n.value?u.customFooter?(e.openBlock(),e.createElementBlock("footer",Vv,[e.createElementVNode("div",Cv,[e.createElementVNode("div",Iv,[e.createElementVNode("span",Av,e.toDisplayString(u.customFooter.copyright),1),u.customFooter.license?(e.openBlock(),e.createElementBlock("span",$v,"|")):e.createCommentVNode("",!0),u.customFooter.license?(e.openBlock(),e.createElementBlock("span",Tv,e.toDisplayString(u.customFooter.license),1)):e.createCommentVNode("",!0)]),u.customFooter.contact?(e.openBlock(),e.createElementBlock("div",Bv,[e.createElementVNode("span",Dv,e.toDisplayString(u.customFooter.contact),1)])):e.createCommentVNode("",!0)])])):(e.openBlock(),e.createElementBlock("footer",Pv,[e.createElementVNode("div",Ov,[e.createElementVNode("div",Mv,[i[1]||(i[1]=e.createElementVNode("span",{class:"authorized-icon"},"✅",-1)),e.createElementVNode("span",Rv,"已授权: "+e.toDisplayString(((a=t.value)==null?void 0:a.company)||"未知"),1)]),e.createElementVNode("div",jv,[(s=t.value)!=null&&s.expiryDate?(e.openBlock(),e.createElementBlock("span",Lv," 📅 有效期至: "+e.toDisplayString(t.value.expiryDate),1)):(e.openBlock(),e.createElementBlock("span",Uv," ∞ 永久授权 "))])])])):(e.openBlock(),e.createElementBlock("footer",Sv,[...i[0]||(i[0]=[e.createStaticVNode('<div class="footer-content" data-v-7fd5ce26><div class="footer-left" data-v-7fd5ce26><span class="copyright" style="color:#94a3b8 !important;" data-v-7fd5ce26>© 2025 leoncheng</span><span class="divider" style="color:#475569 !important;" data-v-7fd5ce26>|</span><span class="license" style="color:#94a3b8 !important;" data-v-7fd5ce26>仅供学习研究使用,禁止商业用途</span></div><div class="footer-right" data-v-7fd5ce26><div class="contact-item" data-v-7fd5ce26><span class="icon" data-v-7fd5ce26>📧</span><span class="text" style="color:#94a3b8 !important;" data-v-7fd5ce26>nywqs@outlook.com</span></div><span class="divider" style="color:#475569 !important;" data-v-7fd5ce26>|</span><div class="contact-item" data-v-7fd5ce26><span class="icon" data-v-7fd5ce26>📱</span><span class="text" style="color:#94a3b8 !important;" data-v-7fd5ce26>18637762001</span></div></div></div>',1)])]))}}}),[["__scopeId","data-v-7fd5ce26"]]);var Rt=(u=>(u.START="start",u.END="end",u.GET_PROPERTY="getProperty",u.SET_PROPERTY="setProperty",u.CONDITION="condition",u.HTTP_REQUEST="httpRequest",u.CUSTOM_CODE="customCode",u.TIMER="timer",u.CLEAR_TIMER="clearTimer",u))(Rt||{});const zv={class:"dialog-body"},Wv={class:"search-box"},qv={class:"element-list"},Gv=["onClick"],Hv={class:"element-icon"},Kv={class:"element-info"},Qv={class:"element-name"},Yv={class:"element-type"},Jv={key:0,class:"element-check"},Xv={key:0,class:"empty-state"},Zv={class:"dialog-footer"},ek=["disabled"],oc=Me(e.defineComponent({__name:"ElementSelector",props:{visible:{type:Boolean},elements:{default:()=>[]}},emits:["close","select"],setup(u,{emit:r}){const t=u,l=r,n=e.ref(""),o=e.ref(null),i=e.computed(()=>{if(!n.value)return t.elements;const d=n.value.toLowerCase();return t.elements.filter(f=>f.name.toLowerCase().includes(d)||f.id.toLowerCase().includes(d)||f.type.toLowerCase().includes(d))}),a=d=>{o.value=d},s=()=>{n.value="",o.value=null,l("close")},c=()=>{o.value&&(l("select",o.value),s())};return(d,f)=>u.visible?(e.openBlock(),e.createElementBlock("div",{key:0,class:"element-selector-overlay",onClick:s},[e.createElementVNode("div",{class:"element-selector-dialog",onClick:f[1]||(f[1]=e.withModifiers(()=>{},["stop"]))},[e.createElementVNode("div",{class:"dialog-header"},[f[2]||(f[2]=e.createElementVNode("h3",null,"选择图元",-1)),e.createElementVNode("button",{class:"btn-close",onClick:s},"×")]),e.createElementVNode("div",zv,[e.createElementVNode("div",Wv,[e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":f[0]||(f[0]=m=>n.value=m),type:"text",placeholder:"搜索图元名称或ID..."},null,512),[[e.vModelText,n.value]])]),e.createElementVNode("div",qv,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(i.value,m=>{var h,p;return e.openBlock(),e.createElementBlock("div",{key:m.id,class:e.normalizeClass(["element-item",{active:((h=o.value)==null?void 0:h.id)===m.id}]),onClick:w=>a(m)},[e.createElementVNode("div",Hv,e.toDisplayString(m.icon),1),e.createElementVNode("div",Kv,[e.createElementVNode("div",Qv,e.toDisplayString(m.name),1),e.createElementVNode("div",Yv,e.toDisplayString(m.type),1)]),((p=o.value)==null?void 0:p.id)===m.id?(e.openBlock(),e.createElementBlock("div",Jv," ✓ ")):e.createCommentVNode("",!0)],10,Gv)}),128)),i.value.length===0?(e.openBlock(),e.createElementBlock("div",Xv,[...f[3]||(f[3]=[e.createElementVNode("p",null,"未找到图元",-1),e.createElementVNode("p",{class:"empty-hint"},"请尝试其他搜索关键词",-1)])])):e.createCommentVNode("",!0)])]),e.createElementVNode("div",Zv,[e.createElementVNode("button",{class:"btn-secondary",onClick:s},"取消"),e.createElementVNode("button",{class:"btn-primary",disabled:!o.value,onClick:c}," 确定 ",8,ek)])])])):e.createCommentVNode("",!0)}}),[["__scopeId","data-v-882704dd"]]),tk={class:"node-config"},rk={class:"config-group"},ok={class:"element-selector"},nk={class:"config-group"},ik=["disabled"],sk=["value"],ak=Me(e.defineComponent({__name:"GetPropertyConfig",props:{modelValue:{}},emits:["update:modelValue"],setup(u,{emit:r}){const t=u,l=r,n=e.reactive({elementId:t.modelValue.elementId||"",propertyName:t.modelValue.propertyName||""}),o=e.ref(""),i=e.ref(!1),a=e.ref([]),s=e.inject("canvasElementService"),c=e.computed(()=>{if(!n.elementId)return[];const h=a.value.find(p=>p.id===n.elementId);return(h==null?void 0:h.properties)||[]}),d=()=>{l("update:modelValue",{...n})},f=()=>{s&&(a.value=s.getElements()),i.value=!0},m=h=>{n.elementId=h.id,o.value=h.name,n.propertyName="",d()};return e.onMounted(()=>{if(s&&(a.value=s.getElements()),n.elementId){const h=a.value.find(p=>p.id===n.elementId);h&&(o.value=h.name)}}),(h,p)=>(e.openBlock(),e.createElementBlock(e.Fragment,null,[e.createElementVNode("div",tk,[e.createElementVNode("div",rk,[p[3]||(p[3]=e.createElementVNode("label",null,"图元选择",-1)),e.createElementVNode("div",ok,[e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":p[0]||(p[0]=w=>o.value=w),type:"text",placeholder:"点击选择按钮从画布中选择图元",readonly:""},null,512),[[e.vModelText,o.value]]),e.createElementVNode("button",{class:"btn-select",onClick:f}," 选择图元 ")])]),e.createElementVNode("div",nk,[p[5]||(p[5]=e.createElementVNode("label",null,"属性选择",-1)),e.withDirectives(e.createElementVNode("select",{"onUpdate:modelValue":p[1]||(p[1]=w=>n.propertyName=w),onChange:d,disabled:!n.elementId},[p[4]||(p[4]=e.createElementVNode("option",{value:""},"请先选择图元",-1)),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(c.value,w=>(e.openBlock(),e.createElementBlock("option",{key:w.key,value:w.key},e.toDisplayString(w.label),9,sk))),128))],40,ik),[[e.vModelSelect,n.propertyName]])])]),e.createVNode(oc,{visible:i.value,elements:a.value,onClose:p[2]||(p[2]=w=>i.value=!1),onSelect:m},null,8,["visible","elements"])],64))}}),[["__scopeId","data-v-fa65eb56"]]),lk={class:"node-config"},ck={class:"config-group"},dk={class:"element-selector"},uk={class:"config-group"},fk=["disabled"],pk=["value"],hk={class:"config-group"},mk=Me(e.defineComponent({__name:"SetPropertyConfig",props:{modelValue:{}},emits:["update:modelValue"],setup(u,{emit:r}){const t=u,l=r,n=e.reactive({elementId:t.modelValue.elementId||"",propertyName:t.modelValue.propertyName||"",value:t.modelValue.value||""}),o=e.ref(""),i=e.ref(!1),a=e.ref([]),s=e.inject("canvasElementService"),c=e.computed(()=>{if(!n.elementId)return[];const h=a.value.find(p=>p.id===n.elementId);return(h==null?void 0:h.properties)||[]}),d=()=>{l("update:modelValue",{...n})},f=()=>{s&&(a.value=s.getElements()),i.value=!0},m=h=>{n.elementId=h.id,o.value=h.name,n.propertyName="",d()};return e.onMounted(()=>{if(s&&(a.value=s.getElements()),n.elementId){const h=a.value.find(p=>p.id===n.elementId);h&&(o.value=h.name)}}),(h,p)=>(e.openBlock(),e.createElementBlock(e.Fragment,null,[e.createElementVNode("div",lk,[e.createElementVNode("div",ck,[p[4]||(p[4]=e.createElementVNode("label",null,"图元选择",-1)),e.createElementVNode("div",dk,[e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":p[0]||(p[0]=w=>o.value=w),type:"text",placeholder:"点击选择按钮从画布中选择图元",readonly:""},null,512),[[e.vModelText,o.value]]),e.createElementVNode("button",{class:"btn-select",onClick:f}," 选择图元 ")])]),e.createElementVNode("div",uk,[p[6]||(p[6]=e.createElementVNode("label",null,"属性选择",-1)),e.withDirectives(e.createElementVNode("select",{"onUpdate:modelValue":p[1]||(p[1]=w=>n.propertyName=w),onChange:d,disabled:!n.elementId},[p[5]||(p[5]=e.createElementVNode("option",{value:""},"请先选择图元",-1)),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(c.value,w=>(e.openBlock(),e.createElementBlock("option",{key:w.key,value:w.key},e.toDisplayString(w.label),9,pk))),128))],40,fk),[[e.vModelSelect,n.propertyName]])]),e.createElementVNode("div",hk,[p[7]||(p[7]=e.createElementVNode("label",null,"属性值",-1)),e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":p[2]||(p[2]=w=>n.value=w),type:"text",placeholder:"请输入属性值",onInput:d},null,544),[[e.vModelText,n.value]])])]),e.createVNode(oc,{visible:i.value,elements:a.value,onClose:p[3]||(p[3]=w=>i.value=!1),onSelect:m},null,8,["visible","elements"])],64))}}),[["__scopeId","data-v-42e029d4"]]),gk={class:"node-config"},yk={class:"config-group"},bk={class:"config-group"},wk={class:"branches-section"},Ek={class:"branch-list"},vk={class:"branch-header"},kk={class:"branch-number"},_k=["onClick"],Nk={key:0,class:"branch-config"},xk={class:"config-row"},Sk=["onUpdate:modelValue"],Vk={key:0,class:"config-row"},Ck=["onUpdate:modelValue"],Ik={key:1,class:"config-row"},Ak=["onUpdate:modelValue","type"],$k={key:1,class:"default-branch-label"},Tk=Me(e.defineComponent({__name:"ConditionConfig",props:{modelValue:{}},emits:["update:modelValue"],setup(u,{emit:r}){const t=u,l=r,n=()=>`branch_${Date.now()}_${Math.random().toString(36).substr(2,9)}`,o=()=>t.modelValue.branches&&t.modelValue.branches.length>0?t.modelValue.branches:(t.modelValue.dataType||"boolean")==="boolean"?[{id:n(),label:"True",value:!0},{id:n(),label:"False",value:!1,isDefault:!0}]:[{id:n(),label:"分支1",operator:"eq",value:""},{id:n(),label:"默认",isDefault:!0}],i=e.reactive({sourceNodeId:t.modelValue.sourceNodeId||"prev",dataType:t.modelValue.dataType||"boolean",branches:o()}),a=()=>{l("update:modelValue",{...i})},s=()=>{i.dataType==="boolean"?i.branches=[{id:n(),label:"True",value:!0},{id:n(),label:"False",value:!1,isDefault:!0}]:i.branches=[{id:n(),label:"分支1",operator:"eq",value:""},{id:n(),label:"默认",isDefault:!0}],a()},c=()=>{const f={id:n(),label:`分支${i.branches.length}`,operator:"eq",value:""},m=i.branches.findIndex(h=>h.isDefault);m>-1?i.branches.splice(m,0,f):i.branches.push(f),a()},d=f=>{i.branches.length>2&&(i.branches.splice(f,1),a())};return(f,m)=>(e.openBlock(),e.createElementBlock("div",gk,[e.createElementVNode("div",yk,[m[3]||(m[3]=e.createElementVNode("label",null,"数据来源节点",-1)),e.withDirectives(e.createElementVNode("select",{"onUpdate:modelValue":m[0]||(m[0]=h=>i.sourceNodeId=h),onChange:a},[...m[2]||(m[2]=[e.createElementVNode("option",{value:""},"请选择数据来源节点",-1),e.createElementVNode("option",{value:"prev"},"上一个节点",-1)])],544),[[e.vModelSelect,i.sourceNodeId]])]),e.createElementVNode("div",bk,[m[5]||(m[5]=e.createElementVNode("label",null,"数据类型",-1)),e.withDirectives(e.createElementVNode("select",{"onUpdate:modelValue":m[1]||(m[1]=h=>i.dataType=h),onChange:s},[...m[4]||(m[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,i.dataType]])]),e.createElementVNode("div",wk,[e.createElementVNode("div",{class:"section-header"},[m[6]||(m[6]=e.createElementVNode("label",null,"条件分支",-1)),e.createElementVNode("button",{class:"btn-add",onClick:c},"添加分支")]),e.createElementVNode("div",Ek,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(i.branches,(h,p)=>(e.openBlock(),e.createElementBlock("div",{key:h.id,class:"branch-item"},[e.createElementVNode("div",vk,[e.createElementVNode("span",kk,"分支 "+e.toDisplayString(p+1),1),!h.isDefault&&i.branches&&i.branches.length>1?(e.openBlock(),e.createElementBlock("button",{key:0,class:"btn-remove",onClick:w=>d(p)},"×",8,_k)):e.createCommentVNode("",!0)]),h.isDefault?(e.openBlock(),e.createElementBlock("div",$k," 默认分支(其他情况) ")):(e.openBlock(),e.createElementBlock("div",Nk,[e.createElementVNode("div",xk,[m[7]||(m[7]=e.createElementVNode("label",null,"分支标签",-1)),e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":w=>h.label=w,type:"text",placeholder:"如: >10, =A, True",onInput:a},null,40,Sk),[[e.vModelText,h.label]])]),i.dataType!=="boolean"?(e.openBlock(),e.createElementBlock("div",Vk,[m[9]||(m[9]=e.createElementVNode("label",null,"运算符",-1)),e.withDirectives(e.createElementVNode("select",{"onUpdate:modelValue":w=>h.operator=w,onChange:a},[...m[8]||(m[8]=[e.createStaticVNode('<option value="eq" data-v-15975920>等于 (==)</option><option value="ne" data-v-15975920>不等于 (!=)</option><option value="gt" data-v-15975920>大于 (&gt;)</option><option value="gte" data-v-15975920>大于等于 (&gt;=)</option><option value="lt" data-v-15975920>小于 (&lt;)</option><option value="lte" data-v-15975920>小于等于 (&lt;=)</option><option value="contains" data-v-15975920>包含</option><option value="notContains" data-v-15975920>不包含</option>',8)])],40,Ck),[[e.vModelSelect,h.operator]])])):e.createCommentVNode("",!0),i.dataType!=="boolean"?(e.openBlock(),e.createElementBlock("div",Ik,[m[10]||(m[10]=e.createElementVNode("label",null,"比较值",-1)),e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":w=>h.value=w,type:i.dataType==="number"?"number":"text",placeholder:"请输入比较值",onInput:a},null,40,Ak),[[e.vModelDynamic,h.value]])])):e.createCommentVNode("",!0)]))]))),128))])])]))}}),[["__scopeId","data-v-15975920"]]),Bk={class:"node-config"},Dk={class:"config-group"},Pk={class:"config-group"},Ok={class:"config-group"},Mk={class:"config-group"},Rk={class:"config-group"},jk=Me(e.defineComponent({__name:"HttpRequestConfig",props:{modelValue:{}},emits:["update:modelValue"],setup(u,{emit:r}){const t=u,l=r,n=e.reactive({url:t.modelValue.url||"",method:t.modelValue.method||"GET",headers:t.modelValue.headers||{},body:t.modelValue.body||"",outputVariable:t.modelValue.outputVariable||""}),o=e.ref(JSON.stringify(n.headers,null,2)),i=()=>{l("update:modelValue",{...n})},a=()=>{try{n.headers=JSON.parse(o.value),i()}catch{}};return e.watch(()=>t.modelValue.headers,s=>{s&&(o.value=JSON.stringify(s,null,2))}),(s,c)=>(e.openBlock(),e.createElementBlock("div",Bk,[e.createElementVNode("div",Dk,[c[5]||(c[5]=e.createElementVNode("label",null,"请求URL",-1)),e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":c[0]||(c[0]=d=>n.url=d),type:"text",placeholder:"请输入请求URL",onInput:i},null,544),[[e.vModelText,n.url]])]),e.createElementVNode("div",Pk,[c[7]||(c[7]=e.createElementVNode("label",null,"请求方法",-1)),e.withDirectives(e.createElementVNode("select",{"onUpdate:modelValue":c[1]||(c[1]=d=>n.method=d),onChange:i},[...c[6]||(c[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,n.method]])]),e.createElementVNode("div",Ok,[c[8]||(c[8]=e.createElementVNode("label",null,"请求头 (JSON格式)",-1)),e.withDirectives(e.createElementVNode("textarea",{"onUpdate:modelValue":c[2]||(c[2]=d=>o.value=d),rows:"3",placeholder:'{"Content-Type": "application/json"}',onInput:a},null,544),[[e.vModelText,o.value]])]),e.createElementVNode("div",Mk,[c[9]||(c[9]=e.createElementVNode("label",null,"请求体",-1)),e.withDirectives(e.createElementVNode("textarea",{"onUpdate:modelValue":c[3]||(c[3]=d=>n.body=d),rows:"4",placeholder:"请输入请求体内容",onInput:i},null,544),[[e.vModelText,n.body]])]),e.createElementVNode("div",Rk,[c[10]||(c[10]=e.createElementVNode("label",null,"输出变量",-1)),e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":c[4]||(c[4]=d=>n.outputVariable=d),type:"text",placeholder:"请输入输出变量名",onInput:i},null,544),[[e.vModelText,n.outputVariable]])])]))}}),[["__scopeId","data-v-4c312eea"]]),Lk={class:"node-config"},Uk={class:"config-group"},Fk=Me(e.defineComponent({__name:"CustomCodeConfig",props:{modelValue:{}},emits:["update:modelValue"],setup(u,{emit:r}){const t=u,l=r,n=e.reactive({code:t.modelValue.code||""}),o=()=>{l("update:modelValue",{...n})};return(i,a)=>(e.openBlock(),e.createElementBlock("div",Lk,[e.createElementVNode("div",Uk,[a[1]||(a[1]=e.createElementVNode("label",null,"JavaScript代码",-1)),e.withDirectives(e.createElementVNode("textarea",{"onUpdate:modelValue":a[0]||(a[0]=s=>n.code=s),rows:"10",placeholder:"请输入JavaScript代码",onInput:o},null,544),[[e.vModelText,n.code]])]),a[2]||(a[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"]]),zk={class:"node-config"},Wk={class:"config-group"},qk={class:"config-group"},Gk=Me(e.defineComponent({__name:"TimerConfig",props:{modelValue:{}},emits:["update:modelValue"],setup(u,{emit:r}){const t=u,l=r,n=e.reactive({interval:t.modelValue.interval||1e3,unit:t.modelValue.unit||"ms"}),o=()=>{l("update:modelValue",{...n})};return(i,a)=>(e.openBlock(),e.createElementBlock("div",zk,[e.createElementVNode("div",Wk,[a[2]||(a[2]=e.createElementVNode("label",null,"时间间隔",-1)),e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":a[0]||(a[0]=s=>n.interval=s),type:"number",min:"1",placeholder:"请输入时间间隔",onInput:o},null,544),[[e.vModelText,n.interval,void 0,{number:!0}]])]),e.createElementVNode("div",qk,[a[4]||(a[4]=e.createElementVNode("label",null,"时间单位",-1)),e.withDirectives(e.createElementVNode("select",{"onUpdate:modelValue":a[1]||(a[1]=s=>n.unit=s),onChange:o},[...a[3]||(a[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,n.unit]])])]))}}),[["__scopeId","data-v-323381bc"]]),Hk={class:"node-config"},Kk={class:"config-group"},Qk=["value"],Yk={key:0,class:"timer-hint warning"},Jk={key:1,class:"timer-hint"},Xk=Me(e.defineComponent({__name:"ClearTimerConfig",props:{modelValue:{}},emits:["update:modelValue"],setup(u,{emit:r}){const t=u,l=r,n=e.reactive({timerId:t.modelValue.timerId||""}),o=e.ref([]),i=e.inject("getGraph"),a=()=>{if(!i)return[];const c=i();if(!c)return[];const d=c.getNodes(),f=[];return d.forEach(m=>{const h=m.getData();if((h==null?void 0:h.nodeType)==="timer"){const p=m.getAttrByPath("label/text")||"定时器";f.push({id:m.id,label:p})}}),f};e.onMounted(()=>{o.value=a()}),e.watch(()=>t.modelValue,()=>{o.value=a()},{deep:!0});const s=()=>{l("update:modelValue",{...n})};return(c,d)=>(e.openBlock(),e.createElementBlock("div",Hk,[e.createElementVNode("div",Kk,[d[2]||(d[2]=e.createElementVNode("label",null,"选择定时器节点",-1)),e.withDirectives(e.createElementVNode("select",{"onUpdate:modelValue":d[0]||(d[0]=f=>n.timerId=f),onChange:s},[d[1]||(d[1]=e.createElementVNode("option",{value:""},"请选择要清除的定时器",-1)),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(o.value,f=>(e.openBlock(),e.createElementBlock("option",{key:f.id,value:f.id},e.toDisplayString(f.label),9,Qk))),128))],544),[[e.vModelSelect,n.timerId]])]),o.value.length===0?(e.openBlock(),e.createElementBlock("div",Yk,[...d[3]||(d[3]=[e.createElementVNode("p",null,"提示:当前流程中没有定时器节点",-1)])])):(e.openBlock(),e.createElementBlock("div",Jk,[...d[4]||(d[4]=[e.createElementVNode("p",null,"提示:选择要清除的定时器节点",-1)])]))]))}}),[["__scopeId","data-v-d102fb63"]]),Zk={[Rt.GET_PROPERTY]:ak,[Rt.SET_PROPERTY]:mk,[Rt.CONDITION]:Tk,[Rt.HTTP_REQUEST]:jk,[Rt.CUSTOM_CODE]:Fk,[Rt.TIMER]:Gk,[Rt.CLEAR_TIMER]:Xk};function e2(u){return Zk[u]||null}const t2={class:"property-panel"},r2={key:0,class:"property-content"},o2={class:"property-group"},n2=["value"],i2={class:"property-group"},s2=["value"],a2={key:0,class:"divider"},l2={key:1,class:"property-empty"},c2=Me(e.defineComponent({__name:"PropertyPanel",props:{selectedCell:{}},emits:["update:label","update:config"],setup(u,{emit:r}){const t=u,l=r,n=()=>{var d,f,m;return((m=(f=(d=t.selectedCell)==null?void 0:d.cell)==null?void 0:f.model)==null?void 0:m.graph)||null};e.provide("getGraph",n);const o=e.ref({}),i=e.computed(()=>t.selectedCell?e2(t.selectedCell.nodeType):null);e.watch(()=>t.selectedCell,d=>{if(d!=null&&d.cell){const f=d.cell.getData();o.value=(f==null?void 0:f.config)||{}}else o.value={}},{immediate:!0});const a=d=>{const f=d.target;l("update:label",f.value)},s=d=>{var f;if(o.value=d,(f=t.selectedCell)!=null&&f.cell){const m=t.selectedCell.cell.getData()||{};t.selectedCell.cell.setData({...m,config:d}),t.selectedCell.nodeType==="condition"&&d.branches&&c(d.branches)}l("update:config",d)},c=d=>{var $,C;if(!(($=t.selectedCell)!=null&&$.cell))return;const f=t.selectedCell.cell,m=(C=f.model)==null?void 0:C.graph;if(!m)return;const h=[];m.getConnectedEdges(f,{outgoing:!0}).forEach(D=>{const A=D.getSourcePortId(),U=D.getTargetCell(),H=D.getTargetPortId();A&&U&&h.push({sourcePortId:A,targetCell:U,targetPortId:H})});const w=h.length>0?h[0].targetCell:null,v=h.length>0?h[0].targetPortId:"port-in";f.getPorts().forEach(D=>{D.group==="out"&&f.removePort(D.id)});const y=30,k=60,_=Math.max(d.length,1),E=Math.max(k,_*y),I=f.size(),x=f.position(),V=E-I.height;V!==0&&f.position(x.x,x.y-V/2),f.resize(I.width,E),d.forEach((D,A)=>{f.addPort({id:`port-out-${A}`,group:"out",attrs:{circle:{r:5,magnet:!0,stroke:"#34d399",strokeWidth:2,fill:"#1e293b"},portLabel:{text:D.label||`分支${A+1}`,fontSize:10,fill:"#94a3b8"}}})}),setTimeout(()=>{w&&d.forEach((D,A)=>{m.addEdge({source:{cell:f,port:`port-out-${A}`},target:{cell:w,port:v},labels:[{attrs:{label:{text:D.label||`分支${A+1}`,fill:"#e2e8f0",fontSize:12},rect:{fill:"#334155",stroke:"#34d399",strokeWidth:1,rx:4,ry:4}},position:.5}]})})},100)};return(d,f)=>(e.openBlock(),e.createElementBlock("div",t2,[f[4]||(f[4]=e.createElementVNode("h3",null,"属性配置",-1)),u.selectedCell?(e.openBlock(),e.createElementBlock("div",r2,[e.createElementVNode("div",o2,[f[1]||(f[1]=e.createElementVNode("label",null,"节点名称",-1)),e.createElementVNode("input",{value:u.selectedCell.label,type:"text",placeholder:"输入节点名称",onInput:a},null,40,n2)]),e.createElementVNode("div",i2,[f[2]||(f[2]=e.createElementVNode("label",null,"节点类型",-1)),e.createElementVNode("input",{value:u.selectedCell.nodeType,type:"text",readonly:"",disabled:""},null,8,s2)]),i.value?(e.openBlock(),e.createElementBlock("div",a2)):e.createCommentVNode("",!0),i.value?(e.openBlock(),e.createBlock(e.resolveDynamicComponent(i.value),{key:1,modelValue:o.value,"onUpdate:modelValue":[f[0]||(f[0]=m=>o.value=m),s]},null,8,["modelValue"])):e.createCommentVNode("",!0)])):(e.openBlock(),e.createElementBlock("div",l2,[...f[3]||(f[3]=[e.createElementVNode("div",{class:"empty-text"},"选择节点以配置属性",-1)])]))]))}}),[["__scopeId","data-v-8304acbc"]]),d2={class:"toolbar"},u2={class:"toolbar-right"},f2=Me(e.defineComponent({__name:"WorkflowToolbar",props:{showClose:{type:Boolean}},emits:["clear","validate","save","close"],setup(u){return(r,t)=>(e.openBlock(),e.createElementBlock("div",d2,[t[5]||(t[5]=e.createElementVNode("div",{class:"toolbar-left"},[e.createElementVNode("h2",null,"流程编排")],-1)),e.createElementVNode("div",u2,[e.createElementVNode("button",{class:"btn-secondary",onClick:t[0]||(t[0]=l=>r.$emit("clear"))},"清空"),e.createElementVNode("button",{class:"btn-secondary",onClick:t[1]||(t[1]=l=>r.$emit("validate"))},"验证"),e.createElementVNode("button",{class:"btn-primary",onClick:t[2]||(t[2]=l=>r.$emit("save"))},"保存"),u.showClose?(e.openBlock(),e.createElementBlock("button",{key:0,class:"btn-close",onClick:t[3]||(t[3]=l=>r.$emit("close")),title:"关闭"},[...t[4]||(t[4]=[e.createElementVNode("span",{class:"close-icon"},"×",-1)])])):e.createCommentVNode("",!0)])]))}}),[["__scopeId","data-v-b3e0a4fc"]]),p2={class:"menu-header"},h2={class:"menu-list"},m2=["onClick"],g2={class:"menu-item-info"},y2={class:"menu-item-name"},b2={class:"menu-item-desc"},w2=Me(e.defineComponent({__name:"AddNodeMenu",props:{visible:{type:Boolean},position:{},nodeTypes:{}},emits:["close","select"],setup(u,{emit:r}){const t=u,l=r,n=e.computed(()=>t.nodeTypes.filter(i=>i.type!=="start"&&i.type!=="end")),o=i=>{l("select",i)};return(i,a)=>(e.openBlock(),e.createElementBlock("div",null,[u.visible?(e.openBlock(),e.createElementBlock("div",{key:0,class:"menu-overlay",onClick:a[0]||(a[0]=s=>i.$emit("close"))})):e.createCommentVNode("",!0),u.visible?(e.openBlock(),e.createElementBlock("div",{key:1,class:"add-node-menu",style:e.normalizeStyle({left:u.position.x+"px",top:u.position.y+"px"})},[e.createElementVNode("div",p2,[a[2]||(a[2]=e.createElementVNode("span",null,"选择节点类型",-1)),e.createElementVNode("button",{class:"btn-close",onClick:a[1]||(a[1]=s=>i.$emit("close"))},"×")]),e.createElementVNode("div",h2,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(n.value,s=>(e.openBlock(),e.createElementBlock("div",{key:s.type,class:"menu-item",onClick:c=>o(s)},[e.createElementVNode("div",{class:e.normalizeClass(["menu-item-icon",`node-icon-${s.type}`])},e.toDisplayString(s.icon),3),e.createElementVNode("div",g2,[e.createElementVNode("div",y2,e.toDisplayString(s.name),1),e.createElementVNode("div",b2,e.toDisplayString(s.description),1)])],8,m2))),128))])],4)):e.createCommentVNode("",!0)]))}}),[["__scopeId","data-v-aa6fccf8"]]);class E2{constructor(){Se(this,"graph",null)}setGraph(r){this.graph=r}getElements(){return this.graph?this.graph.getNodes().map(t=>{const l=t.getData()||{},n=l.type||t.shape,o=er.getComponent(n),i=this.getElementProperties(t,o);return{id:t.id,name:l.componentName||t.getAttrByPath("label/text")||`图元_${t.id.slice(0,8)}`,type:(o==null?void 0:o.metadata.name)||n,icon:(o==null?void 0:o.metadata.icon)||"📦",properties:i}}):(console.warn("画布实例未初始化"),[])}getElementProperties(r,t){const l=[],n=new Set;return t!=null&&t.props&&t.props.forEach(o=>{const i=o.path.split("."),a=i[i.length-1];a&&!n.has(a)&&(l.push({key:a,label:o.label||a}),n.add(a))}),l}getElementById(r){return this.getElements().find(l=>l.id===r)||null}searchElements(r){const t=this.getElements(),l=r.toLowerCase();return t.filter(n=>n.name.toLowerCase().includes(l)||n.id.toLowerCase().includes(l)||n.type.toLowerCase().includes(l))}}const nc=new E2,v2={class:"workflow-editor"},k2={class:"editor-main"},_2={class:"canvas-area"},N2=Me(e.defineComponent({__name:"WorkflowEditor",props:{scadaGraph:{default:null},showClose:{type:Boolean,default:!1}},emits:["close"],setup(u){const r=u,t=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"}]),l=e.ref();let n=null;r.scadaGraph&&nc.setGraph(r.scadaGraph),e.provide("canvasElementService",nc);const o=e.ref(null),i=e.ref(!1),a=e.ref({x:0,y:0});let s=null;const c=()=>{t.value.forEach(k=>{const _={inherit:"rect",width:150,height:60,markup:[{tagName:"rect",selector:"body"},{tagName:"text",selector:"icon"},{tagName:"text",selector:"label"}],attrs:{body:{strokeWidth:1,stroke:k.color,fill:"#ffffff",rx:6,ry:6},icon:{text:k.icon,fontSize:24,fill:k.color,refX:20,refY:"50%",textAnchor:"middle",textVerticalAnchor:"middle"},label:{text:k.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:k.type}};k.type==="start"?_.ports.items=[{id:"port-out",group:"out"}]:k.type==="end"?_.ports.items=[{id:"port-in",group:"in"}]:k.type==="condition"?_.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"}}]:_.ports.items=[{id:"port-in",group:"in"},{id:"port-out",group:"out"}],Le.Graph.registerNode(k.type,_,!0)})},d=()=>{if(!l.value)return;c(),n=new Le.Graph({container:l.value,width:l.value.clientWidth,height:l.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 Le.Shape.Edge({attrs:{line:{stroke:"#64748b",strokeWidth:3,targetMarker:{name:"block",width:12,height:8,fill:"#64748b"}}},zIndex:0})},validateConnection({targetMagnet:_}){return!!_}},highlighting:{magnetAvailable:{name:"stroke",args:{attrs:{fill:"#34d399",stroke:"#34d399"}}}}}),n.use(new zt.Selection({enabled:!0,rubberband:!1,showNodeSelectionBox:!0,showEdgeSelectionBox:!0,multiple:!0,movable:!0,strict:!1}));const k=_=>{var E;if(console.log("键盘事件触发:",_.key,"selectedCell存在:",!!o.value),_.key==="Delete"||_.key==="Backspace"){if(!n){console.log("graph不存在,无法删除");return}if((E=o.value)!=null&&E.cell){_.preventDefault();const x=o.value.cell;console.log("删除选中的节点:",o.value.label);const V=n.getIncomingEdges(x),$=n.getOutgoingEdges(x);V&&V.length>0&&$&&$.length>0&&V.forEach(C=>{const D=C.getSourceCell(),A=C.getSourcePortId();$.forEach(U=>{const H=U.getTargetCell(),F=U.getTargetPortId();D&&H&&n&&(n.addEdge({source:{cell:D,port:A},target:{cell:H,port:F}}),console.log("已连接前后节点"))})}),n.removeCells([x]),o.value=null,console.log("已删除节点");return}const I=n.getSelectedCells();console.log("选中的cells数量:",I.length,I),I.length?(_.preventDefault(),n.removeCells(I),console.log("已删除cells")):console.log("没有选中的cells")}};document.addEventListener("keydown",k),n.on("node:click",({node:_})=>{var x;const E=_.getAttrByPath("label/text")||"",I=((x=_.getData())==null?void 0:x.nodeType)||_.shape||"";o.value={label:E,nodeType:I,cell:_},console.log("节点已点击,保存到selectedCell:",E)}),n.on("blank:click",()=>{o.value=null,n&&n.cleanSelection()}),n.on("edge:mouseenter",({edge:_})=>{_.setAttrs({line:{stroke:"#10b981",strokeWidth:4}}),_.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:E,view:I})=>{s=I.cell,i.value=!0,a.value={x:E.clientX,y:E.clientY}}}},{name:"vertices"}])}),n.on("edge:mouseleave",({edge:_})=>{_.setAttrs({line:{stroke:"#64748b",strokeWidth:3}}),_.removeTools()}),n.on("edge:connected",({isNew:_,edge:E})=>{_&&E.setAttrs({line:{stroke:"#64748b",strokeWidth:3}})}),n.on("node:selected",({node:_})=>{_.toFront()}),n.on("edge:selected",({edge:_})=>{_.toFront()}),f()},f=()=>{if(!n)return;const k=n.addNode({shape:"start",x:100,y:200,label:"开始",data:{nodeType:"start"}}),_=n.addNode({shape:"end",x:500,y:200,label:"结束",data:{nodeType:"end"}});n.addEdge({source:{cell:k,port:"port-out"},target:{cell:_,port:"port-in"}})},m=k=>{var _;(_=o.value)!=null&&_.cell&&(o.value.label=k,o.value.cell.setAttrByPath("label/text",k))},h=k=>{if(!n||!s)return;const _=s.getSourceCell(),E=s.getTargetCell();if(!_||!E)return;const I=_.position(),x=E.position(),V=(I.x+x.x)/2,$=(I.y+x.y)/2,C=n.addNode({shape:k.type,x:V,y:$,label:k.name,data:{nodeType:k.type}});s.remove(),n.addEdge({source:{cell:_,port:"port-out"},target:{cell:C,port:"port-in"}}),k.type==="condition"?(n.addEdge({source:{cell:C,port:"port-out-0"},target:{cell:E,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}]}),n.addEdge({source:{cell:C,port:"port-out-1"},target:{cell:E,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}]})):n.addEdge({source:{cell:C,port:"port-out"},target:{cell:E,port:"port-in"}}),i.value=!1,s=null},p=()=>{n&&n.clearCells()},w=()=>{if(!n)return console.log("画布不存在"),{errors:["画布不存在"],warnings:[]};const k=[],_=[],E=n.getNodes(),I=E.filter(V=>{var $;return(($=V.getData())==null?void 0:$.nodeType)==="start"});return I.length===0?k.push("流程中缺少开始节点"):I.length>1&&_.push("流程中有多个开始节点"),E.filter(V=>{var $;return(($=V.getData())==null?void 0:$.nodeType)==="end"}).length===0&&_.push("流程中缺少结束节点"),E.forEach(V=>{const $=V.getData(),C=$==null?void 0:$.nodeType,D=($==null?void 0:$.config)||{},A=V.getAttrByPath("label/text")||"未命名节点";(C==="getProperty"||C==="setProperty")&&(D.elementId||k.push(`节点「${A}」未配置图元`),D.propertyName||k.push(`节点「${A}」未配置属性`),C==="setProperty"&&!D.value&&_.push(`节点「${A}」未配置属性值`)),C==="httpRequest"&&(D.url||k.push(`节点「${A}」未配置请求URL`)),C==="condition"&&(!D.branches||D.branches.length===0)&&k.push(`节点「${A}」未配置条件分支`),C==="timer"&&(!D.interval||D.interval<=0)&&k.push(`节点「${A}」未配置有效的时间间隔`),C==="clearTimer"&&(D.timerId||k.push(`节点「${A}」未选择定时器`)),C==="customCode"&&(D.code||_.push(`节点「${A}」未编写代码`))}),E.forEach(V=>{var D;const $=(D=V.getData())==null?void 0:D.nodeType,C=V.getAttrByPath("label/text")||"未命名节点";if($==="start"&&n){const A=n.getOutgoingEdges(V);(!A||A.length===0)&&k.push(`开始节点「${C}」没有连接到下一个节点`)}if($==="end"&&n){const A=n.getOutgoingEdges(V);A&&A.length>0&&_.push(`结束节点「${C}」不应该有输出连线`)}if($!=="start"&&$!=="end"&&n){const A=n.getIncomingEdges(V),U=n.getOutgoingEdges(V);(!A||A.length===0)&&_.push(`节点「${C}」没有输入连线`),$!=="clearTimer"&&(!U||U.length===0)&&_.push(`节点「${C}」没有输出连线`)}}),n&&E.forEach(V=>{var U;const $=n.getIncomingEdges(V),C=n.getOutgoingEdges(V),D=(U=V.getData())==null?void 0:U.nodeType,A=V.getAttrByPath("label/text")||"未命名节点";D!=="start"&&(!$||$.length===0)&&(!C||C.length===0)&&_.push(`节点「${A}」是孤立节点`)}),{errors:k,warnings:_}},v=()=>{const{errors:k,warnings:_}=w();if(k.length===0&&_.length===0)alert("✓ 流程验证通过!"),console.log("流程验证通过");else{let E="";k.length>0&&(E+=`错误:
44
+ `+k.map(I=>" • "+I).join(`
45
+ `)),_.length>0&&(E&&(E+=`
29
46
 
30
47
  `),E+=`警告:
31
- `+y.map(N=>" • "+N).join(`
32
- `)),alert(E),console.log("验证结果:",{errors:k,warnings:y})}},D=()=>{if(!t)return;const{errors:k,warnings:y}=g();if(k.length>0){let S=`流程验证失败,无法保存!
48
+ `+_.map(I=>" • "+I).join(`
49
+ `)),alert(E),console.log("验证结果:",{errors:k,warnings:_})}},S=()=>{if(!n)return;const{errors:k,warnings:_}=w();if(k.length>0){let D=`流程验证失败,无法保存!
33
50
 
34
- `;S+=`错误:
35
- `+k.map(M=>" • "+M).join(`
36
- `),y.length>0&&(S+=`
51
+ `;D+=`错误:
52
+ `+k.map(A=>" • "+A).join(`
53
+ `),_.length>0&&(D+=`
37
54
 
38
55
  警告:
39
- `+y.map(M=>" • "+M).join(`
40
- `)),alert(S);return}if(y.length>0){let S=`流程存在以下警告:
56
+ `+_.map(A=>" • "+A).join(`
57
+ `)),alert(D);return}if(_.length>0){let D=`流程存在以下警告:
41
58
 
42
- `;if(S+=y.map(M=>" • "+M).join(`
43
- `),S+=`
59
+ `;if(D+=_.map(A=>" • "+A).join(`
60
+ `),D+=`
44
61
 
45
- 是否继续保存?`,!confirm(S))return}const E=prompt("请输入流程名称:","未命名流程");if(!E||!E.trim())return;const N=t.toJSON(),z=t.getNodes().map(S=>({id:S.id,shape:S.shape,position:S.getPosition(),size:S.getSize(),attrs:S.getAttrs(),data:S.getData()})),F=t.getEdges().map(S=>({id:S.id,source:S.getSourceCellId(),target:S.getTargetCellId(),attrs:S.getAttrs(),data:S.getData()})),v={id:"workflow_"+Date.now(),name:E.trim(),data:{...N,nodes:z,edges:F},createdAt:Date.now(),updatedAt:Date.now()};try{const S=localStorage.getItem("saved-workflows"),M=S?JSON.parse(S):[];M.push(v),localStorage.setItem("saved-workflows",JSON.stringify(M)),alert("✓ 流程保存成功!"),console.log("流程已保存:",v)}catch(S){console.error("保存流程失败:",S),alert("保存失败,请重试")}};e.onMounted(()=>{m(),window.addEventListener("resize",x)});const x=()=>{!t||!r.value||t.resize(r.value.clientWidth,r.value.clientHeight)};return e.onBeforeUnmount(()=>{window.removeEventListener("resize",x);const k=y=>{if(y.key==="Delete"||y.key==="Backspace"){if(!t)return;const E=t.getSelectedCells();E.length&&(y.preventDefault(),t.removeCells(E),a.value&&E.includes(a.value.cell)&&(a.value=null))}};document.removeEventListener("keydown",k),t&&t.dispose()}),(k,y)=>(e.openBlock(),e.createElementBlock("div",yp,[e.createVNode(sp,{"show-close":s.showClose,onClear:i,onValidate:$,onSave:D,onClose:y[0]||(y[0]=E=>k.$emit("close"))},null,8,["show-close"]),e.createElementVNode("div",bp,[e.createElementVNode("div",kp,[e.createElementVNode("div",{id:"workflow-container",ref_key:"containerRef",ref:r},null,512)]),e.createVNode(ap,{"selected-cell":a.value,"onUpdate:label":u},null,8,["selected-cell"])]),e.createVNode(gp,{visible:c.value,position:d.value,"node-types":o.value,onClose:y[1]||(y[1]=E=>c.value=!1),onSelect:h},null,8,["visible","position","node-types"])]))}}),[["__scopeId","data-v-649349a2"]]),Np={key:0,class:"workflow-dialog-overlay"},Vp={class:"workflow-dialog"},xp=P(e.defineComponent({__name:"WorkflowDialog",props:{visible:{type:Boolean},scadaGraph:{default:null}},emits:["update:visible","close"],setup(s,{emit:l}){const o=s,r=l;e.watch(()=>o.visible,c=>{c?document.body.style.overflow="hidden":document.body.style.overflow=""});const t=()=>{r("update:visible",!1),r("close")},a=c=>{c.key==="Escape"&&o.visible&&t()};return typeof window<"u"&&window.addEventListener("keydown",a),(c,d)=>s.visible?(e.openBlock(),e.createElementBlock("div",Np,[e.createElementVNode("div",Vp,[e.createVNode(Ep,{"scada-graph":s.scadaGraph,"show-close":!0,onClose:t},null,8,["scada-graph"])])])):e.createCommentVNode("",!0)}}),[["__scopeId","data-v-4e7f6ab7"]]),wp=P(e.defineComponent({__name:"EChartsGauge",props:{node:{}},setup(s){const l=s,o=e.ref();let r=null;const t=()=>l.node?l.node.getData?l.node.getData():l.node.data||{}:{},a=()=>{o.value&&(r&&r.dispose(),r=Qe.init(o.value),c())},c=()=>{if(!r)return;const d=t(),p=d.presetId||"basic",f=fo(p);console.log("[EChartsGauge] 预设ID:",p),console.log("[EChartsGauge] 预设配置:",f),console.log("[EChartsGauge] 节点数据:",d);const m={tooltip:{formatter:"{a} <br/>{b} : {c}%"},series:[{name:d.name||"Pressure",type:"gauge",data:[{value:d.value??50,name:d.title||"SCORE"}]}]};f&&f.config?(Object.assign(m.series[0],f.config),console.log("[EChartsGauge] 最终配置:",m)):console.warn("[EChartsGauge] 预设未找到或配置为空"),r.setOption(m,!0)};return e.watch(()=>{var d;return(d=l.node)==null?void 0:d.data},(d,p)=>{console.log("[EChartsGauge] data 变化:",d),console.log("[EChartsGauge] 旧数据:",p),c()},{deep:!0}),e.watch(()=>{var d,p;return(p=(d=l.node)==null?void 0:d.data)==null?void 0:p.presetId},(d,p)=>{console.log("[EChartsGauge] presetId 变化:",p,"->",d),d!==p&&c()}),e.watch(()=>{var d;return(d=l.node)==null?void 0:d.size},()=>{if(r&&l.node){const d=l.node.getSize?l.node.getSize():l.node.size||{width:200,height:200};r.resize({width:d.width,height:d.height})}},{deep:!0}),e.onMounted(()=>{setTimeout(()=>{a(),l.node&&typeof l.node.on=="function"&&l.node.on("change:data",({current:d})=>{console.log("[EChartsGauge] X6 data 变化事件:",d),c()})},100)}),e.onUnmounted(()=>{r&&(r.dispose(),r=null)}),(d,p)=>(e.openBlock(),e.createElementBlock("div",{ref_key:"chartRef",ref:o,class:"echarts-gauge-component",style:{width:"100%",height:"100%"}},null,512))}}),[["__scopeId","data-v-9a90f768"]]),$p=e.defineComponent({__name:"EChartsLine",props:{node:{}},setup(s){const l=s,o=e.ref();let r=null;const t=()=>l.node?l.node.getData?l.node.getData():l.node.data||{}:{},a=()=>{o.value&&(r=Qe.init(o.value),c())},c=()=>{if(!r)return;const d=t(),p=d.presetId||"basic",f=uo(p),m={title:{text:d.title||"数据趋势",left:"center",top:10,textStyle:{color:"#fff",fontSize:14}},tooltip:{trigger:"axis",backgroundColor:"rgba(0, 0, 0, 0.7)",borderColor:"#333",textStyle:{color:"#fff"}},grid:{left:"10%",right:"10%",top:"20%",bottom:"15%",containLabel:!0},xAxis:{type:"category",boundaryGap:!1,data:d.xAxisData||["Mon","Tue","Wed","Thu","Fri","Sat","Sun"],axisLine:{lineStyle:{color:"#999"}},axisLabel:{color:"#999"}},yAxis:{type:"value",axisLine:{lineStyle:{color:"#999"}},axisLabel:{color:"#999"},splitLine:{lineStyle:{color:"rgba(255, 255, 255, 0.1)"}}},series:[{name:d.seriesName||"Data",type:"line",data:d.seriesData||[120,200,150,80,70,110,130]}]};f&&f.config&&Object.assign(m.series[0],f.config),r.setOption(m,!0)};return e.onMounted(()=>{setTimeout(()=>{a(),l.node&&typeof l.node.on=="function"&&l.node.on("change:data",({current:d})=>{c()})},100)}),e.onUnmounted(()=>{r&&(r.dispose(),r=null)}),(d,p)=>(e.openBlock(),e.createElementBlock("div",{ref_key:"chartContainer",ref:o,style:{width:"100%",height:"100%"}},null,512))}}),Cp={class:"light-3d-container"},_p={viewBox:"0 0 100 100",xmlns:"http://www.w3.org/2000/svg"},vp=["id"],Bp=["stop-color"],Sp=["stop-color"],Dp=["stop-color"],Ip=["id"],Tp=["id"],zp=["id"],Mp=["flood-color"],Ap=["fill","filter"],Pp=["fill","filter"],Op=["opacity"],Lp={key:1,opacity:"0.8"},Rp=["fill"],Up=["fill"],Wp=["fill"],Fp=["fill"],Gp=["fill"],jp=P(e.defineComponent({__name:"Light3D",props:{node:{}},setup(s){const l=s,o=e.ref(`light-${Math.random().toString(36).substr(2,9)}`),r=()=>l.node?l.node.getData?l.node.getData():l.node.data||{}:{},t=e.ref(!1),a=e.ref("#fbbf24"),c=(p,f)=>{const m=p.replace("#",""),n=parseInt(m.substring(0,2),16),u=parseInt(m.substring(2,4),16),h=parseInt(m.substring(4,6),16),i=Math.max(0,Math.floor(n*(1-f))),g=Math.max(0,Math.floor(u*(1-f))),$=Math.max(0,Math.floor(h*(1-f)));return`#${i.toString(16).padStart(2,"0")}${g.toString(16).padStart(2,"0")}${$.toString(16).padStart(2,"0")}`},d=()=>{const p=r();t.value=p.state===!0||p.state==="on",a.value=p.color||"#fbbf24"};return e.watch(()=>l.node,()=>{d()},{deep:!0}),e.onMounted(()=>{d(),l.node&&typeof l.node.on=="function"&&l.node.on("change:data",()=>{d()})}),(p,f)=>(e.openBlock(),e.createElementBlock("div",Cp,[(e.openBlock(),e.createElementBlock("svg",_p,[e.createElementVNode("defs",null,[e.createElementVNode("radialGradient",{id:`bulb-gradient-${o.value}`,cx:"40%",cy:"30%"},[e.createElementVNode("stop",{offset:"0%","stop-color":t.value?"#fff9e6":"#e5e7eb"},null,8,Bp),e.createElementVNode("stop",{offset:"50%","stop-color":t.value?a.value:"#d1d5db"},null,8,Sp),e.createElementVNode("stop",{offset:"100%","stop-color":t.value?c(a.value,.3):"#9ca3af"},null,8,Dp)],8,vp),e.createElementVNode("linearGradient",{id:`base-gradient-${o.value}`,x1:"0%",y1:"0%",x2:"0%",y2:"100%"},[...f[0]||(f[0]=[e.createElementVNode("stop",{offset:"0%","stop-color":"#94a3b8"},null,-1),e.createElementVNode("stop",{offset:"50%","stop-color":"#64748b"},null,-1),e.createElementVNode("stop",{offset:"100%","stop-color":"#475569"},null,-1)])],8,Ip),e.createElementVNode("filter",{id:`glow-${o.value}`},[...f[1]||(f[1]=[e.createElementVNode("feGaussianBlur",{stdDeviation:"3",result:"coloredBlur"},null,-1),e.createElementVNode("feMerge",null,[e.createElementVNode("feMergeNode",{in:"coloredBlur"}),e.createElementVNode("feMergeNode",{in:"SourceGraphic"})],-1)])],8,Tp),e.createElementVNode("filter",{id:`outer-glow-${o.value}`},[f[2]||(f[2]=e.createElementVNode("feGaussianBlur",{stdDeviation:"5",result:"blur"},null,-1)),e.createElementVNode("feFlood",{"flood-color":a.value,"flood-opacity":"0.6",result:"color"},null,8,Mp),f[3]||(f[3]=e.createElementVNode("feComposite",{in:"color",in2:"blur",operator:"in",result:"glow"},null,-1)),f[4]||(f[4]=e.createElementVNode("feMerge",null,[e.createElementVNode("feMergeNode",{in:"glow"}),e.createElementVNode("feMergeNode",{in:"SourceGraphic"})],-1))],8,zp)]),t.value?(e.openBlock(),e.createElementBlock("circle",{key:0,cx:"50",cy:"35",r:"32",fill:a.value,opacity:"0.3",filter:`url(#outer-glow-${o.value})`},null,8,Ap)):e.createCommentVNode("",!0),e.createElementVNode("ellipse",{cx:"50",cy:"35",rx:"25",ry:"28",fill:`url(#bulb-gradient-${o.value})`,stroke:"#cbd5e1","stroke-width":"0.5",filter:t.value?`url(#glow-${o.value})`:"none"},null,8,Pp),e.createElementVNode("ellipse",{cx:"42",cy:"25",rx:"8",ry:"10",fill:"#ffffff",opacity:t.value?.7:.3},null,8,Op),t.value?(e.openBlock(),e.createElementBlock("g",Lp,[...f[5]||(f[5]=[e.createElementVNode("path",{d:"M 45 30 Q 47 35 45 40",stroke:"#ff9500","stroke-width":"1.5",fill:"none"},null,-1),e.createElementVNode("path",{d:"M 55 30 Q 53 35 55 40",stroke:"#ff9500","stroke-width":"1.5",fill:"none"},null,-1)])])):e.createCommentVNode("",!0),f[10]||(f[10]=e.createElementVNode("ellipse",{cx:"50",cy:"60",rx:"15",ry:"4",fill:"#94a3b8"},null,-1)),e.createElementVNode("g",null,[e.createElementVNode("rect",{x:"40",y:"63",width:"20",height:"3",fill:`url(#base-gradient-${o.value})`,rx:"1"},null,8,Rp),e.createElementVNode("rect",{x:"40",y:"67",width:"20",height:"3",fill:`url(#base-gradient-${o.value})`,rx:"1"},null,8,Up),e.createElementVNode("rect",{x:"40",y:"71",width:"20",height:"3",fill:`url(#base-gradient-${o.value})`,rx:"1"},null,8,Wp),e.createElementVNode("rect",{x:"40",y:"75",width:"20",height:"3",fill:`url(#base-gradient-${o.value})`,rx:"1"},null,8,Fp),f[6]||(f[6]=e.createElementVNode("rect",{x:"40",y:"66",width:"20",height:"1",fill:"#1e293b",opacity:"0.3"},null,-1)),f[7]||(f[7]=e.createElementVNode("rect",{x:"40",y:"70",width:"20",height:"1",fill:"#1e293b",opacity:"0.3"},null,-1)),f[8]||(f[8]=e.createElementVNode("rect",{x:"40",y:"74",width:"20",height:"1",fill:"#1e293b",opacity:"0.3"},null,-1)),f[9]||(f[9]=e.createElementVNode("rect",{x:"40",y:"78",width:"20",height:"1",fill:"#1e293b",opacity:"0.3"},null,-1))]),e.createElementVNode("ellipse",{cx:"50",cy:"80",rx:"12",ry:"5",fill:`url(#base-gradient-${o.value})`},null,8,Gp),f[11]||(f[11]=e.createElementVNode("ellipse",{cx:"50",cy:"83",rx:"8",ry:"3",fill:"#334155"},null,-1)),f[12]||(f[12]=e.createElementVNode("circle",{cx:"50",cy:"85",r:"2",fill:"#475569"},null,-1))])),e.createElementVNode("div",{class:e.normalizeClass(["status-text",{"is-on":t.value}])},e.toDisplayString(t.value?"开启":"关闭"),3)]))}}),[["__scopeId","data-v-7237b5fc"]]),Hp={class:"switch-3d-container"},qp={viewBox:"0 0 120 80",xmlns:"http://www.w3.org/2000/svg"},Jp=["id"],Yp=["id"],Xp=["id"],Kp=["id"],Qp=["fill"],Zp=["fill"],em=["fill"],tm=["transform"],om=["fill"],lm=["fill","filter"],nm=["opacity"],am=["fill","filter"],rm=["opacity"],im=P(e.defineComponent({__name:"Switch3D",props:{node:{}},setup(s){const l=s,o=e.ref(`switch-${Math.random().toString(36).substr(2,9)}`),r=()=>l.node?l.node.getData?l.node.getData():l.node.data||{}:{},t=e.ref(!1),a=e.computed(()=>t.value?72:48),c=()=>{const d=r();t.value=d.state===!0||d.state==="on"};return e.watch(()=>l.node,()=>{c()},{deep:!0}),e.onMounted(()=>{c(),l.node&&typeof l.node.on=="function"&&l.node.on("change:data",()=>{c()})}),(d,p)=>(e.openBlock(),e.createElementBlock("div",Hp,[(e.openBlock(),e.createElementBlock("svg",qp,[e.createElementVNode("defs",null,[e.createElementVNode("linearGradient",{id:`base-gradient-${o.value}`,x1:"0%",y1:"0%",x2:"0%",y2:"100%"},[...p[0]||(p[0]=[e.createElementVNode("stop",{offset:"0%","stop-color":"#475569"},null,-1),e.createElementVNode("stop",{offset:"50%","stop-color":"#334155"},null,-1),e.createElementVNode("stop",{offset:"100%","stop-color":"#1e293b"},null,-1)])],8,Jp),e.createElementVNode("linearGradient",{id:`track-gradient-${o.value}`,x1:"0%",y1:"0%",x2:"0%",y2:"100%"},[...p[1]||(p[1]=[e.createElementVNode("stop",{offset:"0%","stop-color":"#1e293b"},null,-1),e.createElementVNode("stop",{offset:"50%","stop-color":"#0f172a"},null,-1),e.createElementVNode("stop",{offset:"100%","stop-color":"#1e293b"},null,-1)])],8,Yp),e.createElementVNode("linearGradient",{id:`handle-gradient-${o.value}`,x1:"0%",y1:"0%",x2:"0%",y2:"100%"},[...p[2]||(p[2]=[e.createElementVNode("stop",{offset:"0%","stop-color":"#e2e8f0"},null,-1),e.createElementVNode("stop",{offset:"50%","stop-color":"#cbd5e1"},null,-1),e.createElementVNode("stop",{offset:"100%","stop-color":"#94a3b8"},null,-1)])],8,Xp),e.createElementVNode("filter",{id:`indicator-glow-${o.value}`},[...p[3]||(p[3]=[e.createElementVNode("feGaussianBlur",{stdDeviation:"3",result:"coloredBlur"},null,-1),e.createElementVNode("feMerge",null,[e.createElementVNode("feMergeNode",{in:"coloredBlur"}),e.createElementVNode("feMergeNode",{in:"SourceGraphic"})],-1)])],8,Kp)]),e.createElementVNode("rect",{x:"20",y:"25",width:"80",height:"50",rx:"8",fill:`url(#base-gradient-${o.value})`,stroke:"#0f172a","stroke-width":"1"},null,8,Qp),p[6]||(p[6]=e.createStaticVNode('<g data-v-09d0019e><circle cx="30" cy="35" r="3" fill="#0f172a" data-v-09d0019e></circle><circle cx="30" cy="35" r="1.5" fill="#475569" data-v-09d0019e></circle><line x1="28" y1="35" x2="32" y2="35" stroke="#1e293b" stroke-width="0.5" data-v-09d0019e></line><circle cx="90" cy="35" r="3" fill="#0f172a" data-v-09d0019e></circle><circle cx="90" cy="35" r="1.5" fill="#475569" data-v-09d0019e></circle><line x1="88" y1="35" x2="92" y2="35" stroke="#1e293b" stroke-width="0.5" data-v-09d0019e></line><circle cx="30" cy="65" r="3" fill="#0f172a" data-v-09d0019e></circle><circle cx="30" cy="65" r="1.5" fill="#475569" data-v-09d0019e></circle><line x1="28" y1="65" x2="32" y2="65" stroke="#1e293b" stroke-width="0.5" data-v-09d0019e></line><circle cx="90" cy="65" r="3" fill="#0f172a" data-v-09d0019e></circle><circle cx="90" cy="65" r="1.5" fill="#475569" data-v-09d0019e></circle><line x1="88" y1="65" x2="92" y2="65" stroke="#1e293b" stroke-width="0.5" data-v-09d0019e></line></g>',1)),e.createElementVNode("rect",{x:"40",y:"38",width:"40",height:"24",rx:"12",fill:`url(#track-gradient-${o.value})`,stroke:"#0f172a","stroke-width":"1"},null,8,Zp),p[7]||(p[7]=e.createElementVNode("text",{x:"48",y:"53","font-size":"8",fill:"#64748b","text-anchor":"middle","font-weight":"bold"},"OFF",-1)),e.createElementVNode("text",{x:"72",y:"53","font-size":"8",fill:t.value?"#22c55e":"#64748b","text-anchor":"middle","font-weight":"bold"},"ON",8,em),e.createElementVNode("g",{transform:`translate(${a.value}, 0)`,style:{transition:"transform 0.3s ease"}},[p[4]||(p[4]=e.createElementVNode("ellipse",{cx:"0",cy:"52",rx:"10",ry:"3",fill:"#000",opacity:"0.3"},null,-1)),e.createElementVNode("rect",{x:"-8",y:"40",width:"16",height:"20",rx:"8",fill:`url(#handle-gradient-${o.value})`,stroke:"#94a3b8","stroke-width":"1"},null,8,om),p[5]||(p[5]=e.createStaticVNode('<g opacity="0.3" data-v-09d0019e><line x1="-4" y1="43" x2="-4" y2="57" stroke="#64748b" stroke-width="0.5" data-v-09d0019e></line><line x1="0" y1="43" x2="0" y2="57" stroke="#64748b" stroke-width="0.5" data-v-09d0019e></line><line x1="4" y1="43" x2="4" y2="57" stroke="#64748b" stroke-width="0.5" data-v-09d0019e></line></g><rect x="-6" y="42" width="4" height="8" rx="2" fill="#ffffff" opacity="0.4" data-v-09d0019e></rect>',2))],8,tm),e.createElementVNode("g",null,[e.createElementVNode("circle",{cx:"35",cy:"50",r:"3",fill:t.value?"#334155":"#ef4444",filter:t.value?"none":`url(#indicator-glow-${o.value})`},null,8,lm),e.createElementVNode("circle",{cx:"35",cy:"50",r:"1.5",fill:"#ffffff",opacity:t.value?.1:.6},null,8,nm),e.createElementVNode("circle",{cx:"85",cy:"50",r:"3",fill:t.value?"#22c55e":"#334155",filter:t.value?`url(#indicator-glow-${o.value})`:"none"},null,8,am),e.createElementVNode("circle",{cx:"85",cy:"50",r:"1.5",fill:"#ffffff",opacity:t.value?.6:.1},null,8,rm)]),p[8]||(p[8]=e.createStaticVNode('<g data-v-09d0019e><rect x="15" y="47" width="8" height="6" rx="1" fill="#64748b" stroke="#475569" stroke-width="0.5" data-v-09d0019e></rect><circle cx="19" cy="50" r="1.5" fill="#94a3b8" data-v-09d0019e></circle><rect x="97" y="47" width="8" height="6" rx="1" fill="#64748b" stroke="#475569" stroke-width="0.5" data-v-09d0019e></rect><circle cx="101" cy="50" r="1.5" fill="#94a3b8" data-v-09d0019e></circle></g><rect x="50" y="67" width="20" height="6" rx="1" fill="#0f172a" opacity="0.7" data-v-09d0019e></rect><text x="60" y="71" font-size="3" fill="#64748b" text-anchor="middle" font-family="monospace" data-v-09d0019e>KCD1-101</text>',3))])),e.createElementVNode("div",{class:e.normalizeClass(["status-text",{"is-on":t.value}])},e.toDisplayString(t.value?"开启":"关闭"),3)]))}}),[["__scopeId","data-v-09d0019e"]]),sm={class:"motor-3d-container"},dm={viewBox:"0 0 120 100",xmlns:"http://www.w3.org/2000/svg"},cm=["id"],pm=["id"],mm=["id"],fm=["fill"],um=["fill"],gm=["fill"],hm=["transform"],ym=["fill","filter"],bm=["opacity"],km={x:"60",y:"61","font-size":"4",fill:"#cbd5e1","text-anchor":"middle","font-family":"monospace"},Em=P(e.defineComponent({__name:"Motor3D",props:{node:{}},setup(s){const l=s,o=e.ref(`motor-${Math.random().toString(36).substr(2,9)}`),r=()=>l.node?l.node.getData?l.node.getData():l.node.data||{}:{},t=e.ref(!1),a=e.ref(1500),c=e.ref(7.5),d=e.ref(0);let p=null;const f=()=>{if(t.value){const n=a.value/300;d.value=(d.value+n)%360}p=requestAnimationFrame(f)},m=()=>{const n=r();t.value=n.state==="running"||n.state===!0,a.value=n.speed||1500,c.value=n.power||7.5};return e.watch(()=>l.node,()=>{m()},{deep:!0}),e.onMounted(()=>{m(),t.value&&f(),l.node&&typeof l.node.on=="function"&&l.node.on("change:data",()=>{const n=t.value;m(),t.value&&!n?f():!t.value&&n&&p&&(cancelAnimationFrame(p),p=null)})}),e.onUnmounted(()=>{p&&cancelAnimationFrame(p)}),(n,u)=>(e.openBlock(),e.createElementBlock("div",sm,[(e.openBlock(),e.createElementBlock("svg",dm,[e.createElementVNode("defs",null,[e.createElementVNode("linearGradient",{id:`motor-body-${o.value}`,x1:"0%",y1:"0%",x2:"0%",y2:"100%"},[...u[0]||(u[0]=[e.createElementVNode("stop",{offset:"0%","stop-color":"#94a3b8"},null,-1),e.createElementVNode("stop",{offset:"50%","stop-color":"#64748b"},null,-1),e.createElementVNode("stop",{offset:"100%","stop-color":"#475569"},null,-1)])],8,cm),e.createElementVNode("linearGradient",{id:`shaft-gradient-${o.value}`,x1:"0%",y1:"0%",x2:"100%",y2:"0%"},[...u[1]||(u[1]=[e.createElementVNode("stop",{offset:"0%","stop-color":"#94a3b8"},null,-1),e.createElementVNode("stop",{offset:"50%","stop-color":"#cbd5e1"},null,-1),e.createElementVNode("stop",{offset:"100%","stop-color":"#64748b"},null,-1)])],8,pm),e.createElementVNode("filter",{id:`indicator-glow-${o.value}`},[...u[2]||(u[2]=[e.createElementVNode("feGaussianBlur",{stdDeviation:"2",result:"coloredBlur"},null,-1),e.createElementVNode("feMerge",null,[e.createElementVNode("feMergeNode",{in:"coloredBlur"}),e.createElementVNode("feMergeNode",{in:"SourceGraphic"})],-1)])],8,mm)]),e.createElementVNode("rect",{x:"20",y:"70",width:"80",height:"25",rx:"3",fill:`url(#motor-body-${o.value})`},null,8,fm),u[4]||(u[4]=e.createStaticVNode('<rect x="20" y="70" width="80" height="3" fill="#1e293b" opacity="0.3" data-v-14ee96e9></rect><circle cx="30" cy="82" r="3" fill="#334155" data-v-14ee96e9></circle><circle cx="30" cy="82" r="1.5" fill="#64748b" data-v-14ee96e9></circle><circle cx="90" cy="82" r="3" fill="#334155" data-v-14ee96e9></circle><circle cx="90" cy="82" r="1.5" fill="#64748b" data-v-14ee96e9></circle>',5)),e.createElementVNode("ellipse",{cx:"60",cy:"45",rx:"35",ry:"25",fill:`url(#motor-body-${o.value})`,stroke:"#334155","stroke-width":"1"},null,8,um),u[5]||(u[5]=e.createStaticVNode('<g opacity="0.3" data-v-14ee96e9><line x1="30" y1="30" x2="30" y2="60" stroke="#1e293b" stroke-width="1" data-v-14ee96e9></line><line x1="40" y1="25" x2="40" y2="65" stroke="#1e293b" stroke-width="1" data-v-14ee96e9></line><line x1="50" y1="22" x2="50" y2="68" stroke="#1e293b" stroke-width="1" data-v-14ee96e9></line><line x1="60" y1="20" x2="60" y2="70" stroke="#1e293b" stroke-width="1" data-v-14ee96e9></line><line x1="70" y1="22" x2="70" y2="68" stroke="#1e293b" stroke-width="1" data-v-14ee96e9></line><line x1="80" y1="25" x2="80" y2="65" stroke="#1e293b" stroke-width="1" data-v-14ee96e9></line><line x1="90" y1="30" x2="90" y2="60" stroke="#1e293b" stroke-width="1" data-v-14ee96e9></line></g><rect x="25" y="40" width="2" height="10" fill="#475569" opacity="0.6" data-v-14ee96e9></rect><rect x="30" y="38" width="2" height="14" fill="#475569" opacity="0.6" data-v-14ee96e9></rect><rect x="35" y="36" width="2" height="18" fill="#475569" opacity="0.6" data-v-14ee96e9></rect>',4)),e.createElementVNode("rect",{x:"95",y:"42",width:"20",height:"6",rx:"1",fill:`url(#shaft-gradient-${o.value})`,stroke:"#475569","stroke-width":"0.5"},null,8,gm),e.createElementVNode("g",{transform:`rotate(${d.value} 105 45)`},[...u[3]||(u[3]=[e.createStaticVNode('<g opacity="0.8" data-v-14ee96e9><rect x="103" y="40" width="4" height="10" rx="1" fill="#94a3b8" data-v-14ee96e9></rect><rect x="100" y="43" width="10" height="4" rx="1" fill="#94a3b8" data-v-14ee96e9></rect><line x1="102" y1="42" x2="108" y2="48" stroke="#94a3b8" stroke-width="3" stroke-linecap="round" data-v-14ee96e9></line><line x1="108" y1="42" x2="102" y2="48" stroke="#94a3b8" stroke-width="3" stroke-linecap="round" data-v-14ee96e9></line></g>',1)])],8,hm),u[6]||(u[6]=e.createStaticVNode('<circle cx="105" cy="45" r="3" fill="#334155" stroke="#64748b" stroke-width="1" data-v-14ee96e9></circle><rect x="45" y="15" width="15" height="10" rx="1" fill="#334155" stroke="#475569" stroke-width="0.5" data-v-14ee96e9></rect><circle cx="48" cy="20" r="1" fill="#dc2626" data-v-14ee96e9></circle><circle cx="52" cy="20" r="1" fill="#22c55e" data-v-14ee96e9></circle><circle cx="56" cy="20" r="1" fill="#3b82f6" data-v-14ee96e9></circle>',5)),e.createElementVNode("circle",{cx:"15",cy:"45",r:"4",fill:t.value?"#22c55e":"#ef4444",filter:t.value?`url(#indicator-glow-${o.value})`:"none"},null,8,ym),e.createElementVNode("circle",{cx:"15",cy:"45",r:"2",fill:"#ffffff",opacity:t.value?.6:.2},null,8,bm),u[7]||(u[7]=e.createElementVNode("rect",{x:"40",y:"55",width:"40",height:"8",rx:"1",fill:"#1e293b",opacity:"0.7"},null,-1)),e.createElementVNode("text",km,e.toDisplayString(c.value)+"kW "+e.toDisplayString(a.value)+"rpm ",1)])),e.createElementVNode("div",{class:e.normalizeClass(["status-text",{"is-running":t.value}])},e.toDisplayString(t.value?"运行中":"已停止"),3)]))}}),[["__scopeId","data-v-14ee96e9"]]),Nm={class:"valve-3d-container"},Vm={viewBox:"0 0 100 120",xmlns:"http://www.w3.org/2000/svg"},xm=["id"],wm=["id"],$m=["fill"],Cm=["fill"],_m=["fill"],vm=["fill"],Bm={transform:"translate(50, 60)"},Sm=["fill","transform"],Dm=["transform"],Im=["fill"],Tm=["fill"],zm={x:"12.5",y:"62","font-size":"6",fill:"#ffffff","text-anchor":"middle","font-weight":"bold"},Mm={x:"85",y:"62","font-size":"8",fill:"#cbd5e1","text-anchor":"middle","font-family":"monospace"},Am=P(e.defineComponent({__name:"Valve3D",props:{node:{}},setup(s){const l=s,o=e.ref(`valve-${Math.random().toString(36).substr(2,9)}`),r=()=>l.node?l.node.getData?l.node.getData():l.node.data||{}:{},t=e.ref(!1),a=e.ref(0),c=e.computed(()=>a.value/100*720),d=()=>{const p=r();t.value=p.state==="open"||p.state===!0,a.value=p.openness!==void 0?p.openness:t.value?100:0};return e.watch(()=>l.node,()=>{d()},{deep:!0}),e.onMounted(()=>{d(),l.node&&typeof l.node.on=="function"&&l.node.on("change:data",()=>{d()})}),(p,f)=>(e.openBlock(),e.createElementBlock("div",Nm,[(e.openBlock(),e.createElementBlock("svg",Vm,[e.createElementVNode("defs",null,[e.createElementVNode("linearGradient",{id:`valve-body-${o.value}`,x1:"0%",y1:"0%",x2:"100%",y2:"0%"},[...f[0]||(f[0]=[e.createElementVNode("stop",{offset:"0%","stop-color":"#64748b"},null,-1),e.createElementVNode("stop",{offset:"50%","stop-color":"#94a3b8"},null,-1),e.createElementVNode("stop",{offset:"100%","stop-color":"#64748b"},null,-1)])],8,xm),e.createElementVNode("linearGradient",{id:`handle-gradient-${o.value}`,x1:"0%",y1:"0%",x2:"0%",y2:"100%"},[...f[1]||(f[1]=[e.createElementVNode("stop",{offset:"0%","stop-color":"#ef4444"},null,-1),e.createElementVNode("stop",{offset:"50%","stop-color":"#dc2626"},null,-1),e.createElementVNode("stop",{offset:"100%","stop-color":"#b91c1c"},null,-1)])],8,wm)]),e.createElementVNode("rect",{x:"40",y:"85",width:"20",height:"30",fill:`url(#valve-body-${o.value})`,stroke:"#475569","stroke-width":"1"},null,8,$m),f[3]||(f[3]=e.createElementVNode("ellipse",{cx:"50",cy:"85",rx:"10",ry:"5",fill:"#94a3b8",stroke:"#475569","stroke-width":"1"},null,-1)),f[4]||(f[4]=e.createElementVNode("ellipse",{cx:"50",cy:"115",rx:"10",ry:"5",fill:"#64748b",stroke:"#475569","stroke-width":"1"},null,-1)),e.createElementVNode("ellipse",{cx:"50",cy:"60",rx:"25",ry:"15",fill:`url(#valve-body-${o.value})`,stroke:"#475569","stroke-width":"1"},null,8,Cm),e.createElementVNode("rect",{x:"25",y:"50",width:"50",height:"20",fill:`url(#valve-body-${o.value})`,stroke:"#475569","stroke-width":"1"},null,8,_m),f[5]||(f[5]=e.createStaticVNode('<ellipse cx="50" cy="50" rx="25" ry="15" fill="#94a3b8" stroke="#475569" stroke-width="1" data-v-9c6b9014></ellipse><g data-v-9c6b9014><circle cx="30" cy="55" r="2" fill="#334155" data-v-9c6b9014></circle><circle cx="30" cy="65" r="2" fill="#334155" data-v-9c6b9014></circle><circle cx="70" cy="55" r="2" fill="#334155" data-v-9c6b9014></circle><circle cx="70" cy="65" r="2" fill="#334155" data-v-9c6b9014></circle></g>',2)),e.createElementVNode("rect",{x:"40",y:"10",width:"20",height:"30",fill:`url(#valve-body-${o.value})`,stroke:"#475569","stroke-width":"1"},null,8,vm),f[6]||(f[6]=e.createElementVNode("ellipse",{cx:"50",cy:"10",rx:"10",ry:"5",fill:"#94a3b8",stroke:"#475569","stroke-width":"1"},null,-1)),f[7]||(f[7]=e.createElementVNode("ellipse",{cx:"50",cy:"40",rx:"10",ry:"5",fill:"#64748b",stroke:"#475569","stroke-width":"1"},null,-1)),e.createElementVNode("g",Bm,[e.createElementVNode("rect",{x:"-3",y:"-20",width:"6",height:"40",rx:"3",fill:t.value?"#22c55e":"#ef4444",transform:`rotate(${t.value?0:90})`,style:{transition:"transform 0.5s ease"}},null,8,Sm)]),f[8]||(f[8]=e.createElementVNode("rect",{x:"47",y:"40",width:"6",height:"40",rx:"1",fill:"#475569",stroke:"#334155","stroke-width":"0.5"},null,-1)),e.createElementVNode("g",{transform:`rotate(${c.value} 50 25)`,style:{transformOrigin:"50px 25px"}},[e.createElementVNode("circle",{cx:"50",cy:"25",r:"15",fill:`url(#handle-gradient-${o.value})`,stroke:"#991b1b","stroke-width":"1"},null,8,Im),f[2]||(f[2]=e.createStaticVNode('<circle cx="50" cy="25" r="12" fill="none" stroke="#7f1d1d" stroke-width="2" data-v-9c6b9014></circle><circle cx="50" cy="25" r="5" fill="#7f1d1d" data-v-9c6b9014></circle><line x1="50" y1="25" x2="50" y2="12" stroke="#7f1d1d" stroke-width="2" data-v-9c6b9014></line><line x1="50" y1="25" x2="50" y2="38" stroke="#7f1d1d" stroke-width="2" data-v-9c6b9014></line><line x1="50" y1="25" x2="37" y2="25" stroke="#7f1d1d" stroke-width="2" data-v-9c6b9014></line><line x1="50" y1="25" x2="63" y2="25" stroke="#7f1d1d" stroke-width="2" data-v-9c6b9014></line><rect x="63" y="23" width="8" height="4" rx="2" fill="#991b1b" data-v-9c6b9014></rect>',7))],8,Dm),e.createElementVNode("g",null,[e.createElementVNode("rect",{x:"5",y:"55",width:"15",height:"10",rx:"2",fill:t.value?"#22c55e":"#ef4444",opacity:"0.9"},null,8,Tm),e.createElementVNode("text",zm,e.toDisplayString(t.value?"ON":"OFF"),1)]),e.createElementVNode("text",Mm,e.toDisplayString(a.value)+"% ",1)])),e.createElementVNode("div",{class:e.normalizeClass(["status-text",{"is-open":t.value}])},e.toDisplayString(t.value?"开启":"关闭")+" - "+e.toDisplayString(a.value)+"% ",3)]))}}),[["__scopeId","data-v-9c6b9014"]]),Pm={class:"tank-3d-container"},Om={viewBox:"0 0 100 140",xmlns:"http://www.w3.org/2000/svg"},Lm=["id"],Rm=["id"],Um=["stop-color"],Wm=["stop-color"],Fm=["id"],Gm=["fill"],jm=["y","height","fill","filter"],Hm=["cy","fill"],qm=["fill"],Jm=["height"],Ym={x:"65",y:"38","font-size":"5",fill:"#22c55e","text-anchor":"middle"},Xm=["height"],Km={x:"50",y:"127","font-size":"6",fill:"#22c55e","text-anchor":"middle","font-family":"monospace"},Qm={class:"status-text"},Zm=P(e.defineComponent({__name:"Tank3D",props:{node:{}},setup(s){const l=s,o=e.ref(`tank-${Math.random().toString(36).substr(2,9)}`),r=()=>l.node?l.node.getData?l.node.getData():l.node.data||{}:{},t=e.ref(50),a=e.ref(100),c=e.ref(25),d=e.ref(101),p=e.ref("#3b82f6"),f=e.computed(()=>(t.value/100*a.value).toFixed(1)),m=e.computed(()=>90*t.value/100),n=e.computed(()=>110-m.value),u=()=>{const h=r();t.value=Math.max(0,Math.min(100,h.level||50)),a.value=h.capacity||100,c.value=h.temperature||25,d.value=h.pressure||101,p.value=h.liquidColor||"#3b82f6"};return e.watch(()=>l.node,()=>{u()},{deep:!0}),e.onMounted(()=>{u(),l.node&&typeof l.node.on=="function"&&l.node.on("change:data",()=>{u()})}),(h,i)=>(e.openBlock(),e.createElementBlock("div",Pm,[(e.openBlock(),e.createElementBlock("svg",Om,[e.createElementVNode("defs",null,[e.createElementVNode("linearGradient",{id:`tank-body-${o.value}`,x1:"0%",y1:"0%",x2:"100%",y2:"0%"},[...i[0]||(i[0]=[e.createElementVNode("stop",{offset:"0%","stop-color":"#64748b"},null,-1),e.createElementVNode("stop",{offset:"50%","stop-color":"#cbd5e1"},null,-1),e.createElementVNode("stop",{offset:"100%","stop-color":"#64748b"},null,-1)])],8,Lm),e.createElementVNode("linearGradient",{id:`liquid-${o.value}`,x1:"0%",y1:"0%",x2:"0%",y2:"100%"},[e.createElementVNode("stop",{offset:"0%","stop-color":p.value,"stop-opacity":"0.9"},null,8,Um),e.createElementVNode("stop",{offset:"100%","stop-color":p.value,"stop-opacity":"0.7"},null,8,Wm)],8,Rm),e.createElementVNode("filter",{id:`wave-${o.value}`},[...i[1]||(i[1]=[e.createElementVNode("feTurbulence",{type:"fractalNoise",baseFrequency:"0.02",numOctaves:"2",result:"turbulence"},null,-1),e.createElementVNode("feDisplacementMap",{in:"SourceGraphic",in2:"turbulence",scale:"2",xChannelSelector:"R",yChannelSelector:"G"},null,-1)])],8,Fm)]),i[2]||(i[2]=e.createElementVNode("ellipse",{cx:"50",cy:"20",rx:"30",ry:"8",fill:"#94a3b8",stroke:"#475569","stroke-width":"1"},null,-1)),i[3]||(i[3]=e.createElementVNode("ellipse",{cx:"50",cy:"20",rx:"25",ry:"6",fill:"#cbd5e1"},null,-1)),e.createElementVNode("rect",{x:"20",y:"20",width:"60",height:"90",fill:`url(#tank-body-${o.value})`,stroke:"#475569","stroke-width":"1"},null,8,Gm),i[4]||(i[4]=e.createStaticVNode('<g opacity="0.6" data-v-13c65d9d><line x1="15" y1="30" x2="20" y2="30" stroke="#94a3b8" stroke-width="1" data-v-13c65d9d></line><text x="12" y="32" font-size="5" fill="#94a3b8" text-anchor="end" data-v-13c65d9d>100%</text><line x1="15" y1="52.5" x2="20" y2="52.5" stroke="#94a3b8" stroke-width="1" data-v-13c65d9d></line><text x="12" y="54.5" font-size="5" fill="#94a3b8" text-anchor="end" data-v-13c65d9d>75%</text><line x1="15" y1="75" x2="20" y2="75" stroke="#94a3b8" stroke-width="1" data-v-13c65d9d></line><text x="12" y="77" font-size="5" fill="#94a3b8" text-anchor="end" data-v-13c65d9d>50%</text><line x1="15" y1="97.5" x2="20" y2="97.5" stroke="#94a3b8" stroke-width="1" data-v-13c65d9d></line><text x="12" y="99.5" font-size="5" fill="#94a3b8" text-anchor="end" data-v-13c65d9d>25%</text><line x1="15" y1="110" x2="20" y2="110" stroke="#94a3b8" stroke-width="1" data-v-13c65d9d></line><text x="12" y="112" font-size="5" fill="#94a3b8" text-anchor="end" data-v-13c65d9d>0%</text></g>',1)),e.createElementVNode("rect",{x:"20",y:n.value,width:"60",height:m.value,fill:`url(#liquid-${o.value})`,filter:`url(#wave-${o.value})`,opacity:"0.85"},null,8,jm),t.value>0?(e.openBlock(),e.createElementBlock("ellipse",{key:0,cx:"50",cy:n.value,rx:"30",ry:"5",fill:p.value,opacity:"0.6"},null,8,Hm)):e.createCommentVNode("",!0),e.createElementVNode("ellipse",{cx:"50",cy:"110",rx:"30",ry:"8",fill:`url(#tank-body-${o.value})`,stroke:"#475569","stroke-width":"1"},null,8,qm),i[5]||(i[5]=e.createStaticVNode('<g data-v-13c65d9d><rect x="23" y="110" width="4" height="15" fill="#475569" data-v-13c65d9d></rect><rect x="73" y="110" width="4" height="15" fill="#475569" data-v-13c65d9d></rect><rect x="20" y="123" width="10" height="3" rx="1" fill="#64748b" data-v-13c65d9d></rect><rect x="70" y="123" width="10" height="3" rx="1" fill="#64748b" data-v-13c65d9d></rect></g><rect x="45" y="12" width="10" height="8" rx="1" fill="#64748b" stroke="#475569" stroke-width="0.5" data-v-13c65d9d></rect><ellipse cx="50" cy="12" rx="5" ry="3" fill="#94a3b8" data-v-13c65d9d></ellipse><rect x="75" y="105" width="8" height="4" rx="1" fill="#64748b" stroke="#475569" stroke-width="0.5" data-v-13c65d9d></rect><rect x="82" y="30" width="6" height="80" rx="1" fill="#334155" opacity="0.7" data-v-13c65d9d></rect>',5)),e.createElementVNode("rect",{x:"84",y:"32",width:"2",height:76*(t.value/100),fill:"#22c55e"},null,8,Jm),i[6]||(i[6]=e.createElementVNode("circle",{cx:"65",cy:"35",r:"8",fill:"#1e293b",stroke:"#475569","stroke-width":"1"},null,-1)),e.createElementVNode("text",Ym,e.toDisplayString(d.value),1),i[7]||(i[7]=e.createElementVNode("text",{x:"65",y:"42","font-size":"3",fill:"#94a3b8","text-anchor":"middle"},"kPa",-1)),i[8]||(i[8]=e.createElementVNode("rect",{x:"32",y:"35",width:"4",height:"15",rx:"2",fill:"#1e293b",stroke:"#475569","stroke-width":"0.5"},null,-1)),e.createElementVNode("rect",{x:"33",y:"37",width:"2",height:c.value/10,fill:"#ef4444"},null,8,Xm),i[9]||(i[9]=e.createElementVNode("circle",{cx:"34",cy:"52",r:"2",fill:"#ef4444"},null,-1)),i[10]||(i[10]=e.createElementVNode("rect",{x:"25",y:"120",width:"50",height:"12",rx:"2",fill:"#1e293b",opacity:"0.9"},null,-1)),e.createElementVNode("text",Km,e.toDisplayString(t.value)+"% | "+e.toDisplayString(f.value)+"m³ ",1)])),e.createElementVNode("div",Qm," 液位: "+e.toDisplayString(t.value)+"% | 容量: "+e.toDisplayString(f.value)+"m³ ",1)]))}}),[["__scopeId","data-v-13c65d9d"]]),ef={class:"pump-3d-container"},tf={viewBox:"0 0 140 100",xmlns:"http://www.w3.org/2000/svg"},of=["id"],lf=["id"],nf=["id"],af={key:0,attributeName:"x1",values:"-100%;100%",dur:"1s",repeatCount:"indefinite"},rf={key:1,attributeName:"x2",values:"0%;200%",dur:"1s",repeatCount:"indefinite"},sf=["fill"],df=["fill"],cf=["fill"],pf=["fill"],mf=["transform"],ff=["fill"],uf={transform:"translate(100, 25)"},gf={x:"0",y:"2","font-size":"5",fill:"#22c55e","text-anchor":"middle"},hf={transform:"translate(115, 35)"},yf={x:"0",y:"1","font-size":"4",fill:"#3b82f6","text-anchor":"middle"},bf=["fill"],kf=["opacity"],Ef={x:"60",y:"68","font-size":"4",fill:"#cbd5e1","text-anchor":"middle","font-family":"monospace"},Nf=P(e.defineComponent({__name:"Pump3D",props:{node:{}},setup(s){const l=s,o=e.ref(`pump-${Math.random().toString(36).substr(2,9)}`),r=()=>l.node?l.node.getData?l.node.getData():l.node.data||{}:{},t=e.ref(!1),a=e.ref(2900),c=e.ref(5.5),d=e.ref(0),p=e.ref(0),f=e.ref(0);let m=null;const n=()=>{if(t.value){const h=a.value/360;f.value=(f.value+h)%360}m=requestAnimationFrame(n)},u=()=>{const h=r();t.value=h.state==="running"||h.state===!0,a.value=h.speed||2900,c.value=h.power||5.5,d.value=t.value?h.flowRate||15:0,p.value=t.value?(h.pressure||3.5).toFixed(1):0};return e.watch(()=>l.node,()=>{u()},{deep:!0}),e.onMounted(()=>{u(),t.value&&n(),l.node&&typeof l.node.on=="function"&&l.node.on("change:data",()=>{const h=t.value;u(),t.value&&!h?n():!t.value&&h&&m&&(cancelAnimationFrame(m),m=null)})}),e.onUnmounted(()=>{m&&cancelAnimationFrame(m)}),(h,i)=>(e.openBlock(),e.createElementBlock("div",ef,[(e.openBlock(),e.createElementBlock("svg",tf,[e.createElementVNode("defs",null,[e.createElementVNode("radialGradient",{id:`pump-body-${o.value}`,cx:"50%",cy:"50%"},[...i[0]||(i[0]=[e.createElementVNode("stop",{offset:"0%","stop-color":"#cbd5e1"},null,-1),e.createElementVNode("stop",{offset:"70%","stop-color":"#94a3b8"},null,-1),e.createElementVNode("stop",{offset:"100%","stop-color":"#64748b"},null,-1)])],8,of),e.createElementVNode("linearGradient",{id:`motor-gradient-${o.value}`,x1:"0%",y1:"0%",x2:"0%",y2:"100%"},[...i[1]||(i[1]=[e.createElementVNode("stop",{offset:"0%","stop-color":"#94a3b8"},null,-1),e.createElementVNode("stop",{offset:"50%","stop-color":"#64748b"},null,-1),e.createElementVNode("stop",{offset:"100%","stop-color":"#475569"},null,-1)])],8,lf),e.createElementVNode("linearGradient",{id:`flow-gradient-${o.value}`,x1:"0%",y1:"0%",x2:"100%",y2:"0%"},[i[2]||(i[2]=e.createElementVNode("stop",{offset:"0%","stop-color":"#3b82f6","stop-opacity":"0.3"},null,-1)),i[3]||(i[3]=e.createElementVNode("stop",{offset:"50%","stop-color":"#60a5fa","stop-opacity":"0.6"},null,-1)),i[4]||(i[4]=e.createElementVNode("stop",{offset:"100%","stop-color":"#3b82f6","stop-opacity":"0.3"},null,-1)),t.value?(e.openBlock(),e.createElementBlock("animate",af)):e.createCommentVNode("",!0),t.value?(e.openBlock(),e.createElementBlock("animate",rf)):e.createCommentVNode("",!0)],8,nf)]),e.createElementVNode("rect",{x:"30",y:"75",width:"60",height:"20",rx:"2",fill:`url(#motor-gradient-${o.value})`},null,8,sf),i[15]||(i[15]=e.createElementVNode("rect",{x:"30",y:"75",width:"60",height:"2",fill:"#1e293b",opacity:"0.4"},null,-1)),i[16]||(i[16]=e.createElementVNode("circle",{cx:"35",cy:"85",r:"2",fill:"#334155"},null,-1)),i[17]||(i[17]=e.createElementVNode("circle",{cx:"85",cy:"85",r:"2",fill:"#334155"},null,-1)),e.createElementVNode("ellipse",{cx:"60",cy:"50",rx:"28",ry:"25",fill:`url(#pump-body-${o.value})`,stroke:"#475569","stroke-width":"1.5"},null,8,df),i[18]||(i[18]=e.createElementVNode("g",null,[e.createElementVNode("circle",{cx:"40",cy:"40",r:"3",fill:"#334155"}),e.createElementVNode("circle",{cx:"40",cy:"60",r:"3",fill:"#334155"}),e.createElementVNode("circle",{cx:"80",cy:"40",r:"3",fill:"#334155"}),e.createElementVNode("circle",{cx:"80",cy:"60",r:"3",fill:"#334155"})],-1)),e.createElementVNode("g",null,[i[5]||(i[5]=e.createElementVNode("rect",{x:"5",y:"45",width:"28",height:"10",rx:"2",fill:"#64748b",stroke:"#475569","stroke-width":"1"},null,-1)),i[6]||(i[6]=e.createElementVNode("ellipse",{cx:"5",cy:"50",rx:"5",ry:"5",fill:"#94a3b8",stroke:"#475569","stroke-width":"1"},null,-1)),t.value?(e.openBlock(),e.createElementBlock("rect",{key:0,x:"5",y:"46",width:"28",height:"8",fill:`url(#flow-gradient-${o.value})`,opacity:"0.7"},null,8,cf)):e.createCommentVNode("",!0)]),e.createElementVNode("g",null,[i[7]||(i[7]=e.createElementVNode("rect",{x:"87",y:"45",width:"48",height:"10",rx:"2",fill:"#64748b",stroke:"#475569","stroke-width":"1"},null,-1)),i[8]||(i[8]=e.createElementVNode("ellipse",{cx:"135",cy:"50",rx:"5",ry:"5",fill:"#94a3b8",stroke:"#475569","stroke-width":"1"},null,-1)),t.value?(e.openBlock(),e.createElementBlock("rect",{key:0,x:"87",y:"46",width:"48",height:"8",fill:`url(#flow-gradient-${o.value})`,opacity:"0.7"},null,8,pf)):e.createCommentVNode("",!0)]),e.createElementVNode("g",{transform:`rotate(${f.value} 60 50)`},[...i[9]||(i[9]=[e.createStaticVNode('<circle cx="60" cy="50" r="15" fill="#475569" opacity="0.6" data-v-71be9db7></circle><path d="M 60 50 L 70 35 Q 75 40 70 50 Z" fill="#64748b" data-v-71be9db7></path><path d="M 60 50 L 75 50 Q 75 55 65 60 Z" fill="#64748b" data-v-71be9db7></path><path d="M 60 50 L 60 65 Q 55 65 50 60 Z" fill="#64748b" data-v-71be9db7></path><path d="M 60 50 L 45 50 Q 45 45 50 40 Z" fill="#64748b" data-v-71be9db7></path>',5)])],8,mf),i[19]||(i[19]=e.createElementVNode("circle",{cx:"60",cy:"50",r:"5",fill:"#334155",stroke:"#64748b","stroke-width":"1"},null,-1)),e.createElementVNode("rect",{x:"50",y:"20",width:"20",height:"10",rx:"2",fill:`url(#motor-gradient-${o.value})`,stroke:"#475569","stroke-width":"1"},null,8,ff),i[20]||(i[20]=e.createElementVNode("rect",{x:"58",y:"30",width:"4",height:"20",fill:"#475569"},null,-1)),e.createElementVNode("g",uf,[i[10]||(i[10]=e.createElementVNode("circle",{cx:"0",cy:"0",r:"10",fill:"#1e293b",stroke:"#475569","stroke-width":"1"},null,-1)),i[11]||(i[11]=e.createElementVNode("circle",{cx:"0",cy:"0",r:"8",fill:"none",stroke:"#64748b","stroke-width":"0.5"},null,-1)),e.createElementVNode("text",gf,e.toDisplayString(p.value),1),i[12]||(i[12]=e.createElementVNode("text",{x:"0",y:"6","font-size":"2.5",fill:"#94a3b8","text-anchor":"middle"},"bar",-1))]),e.createElementVNode("g",hf,[i[13]||(i[13]=e.createElementVNode("rect",{x:"-8",y:"-6",width:"16",height:"12",rx:"1",fill:"#1e293b",stroke:"#475569","stroke-width":"0.5"},null,-1)),e.createElementVNode("text",yf,e.toDisplayString(d.value),1),i[14]||(i[14]=e.createElementVNode("text",{x:"0",y:"4.5","font-size":"2",fill:"#94a3b8","text-anchor":"middle"},"m³/h",-1))]),e.createElementVNode("circle",{cx:"25",cy:"30",r:"4",fill:t.value?"#22c55e":"#ef4444"},null,8,bf),e.createElementVNode("circle",{cx:"25",cy:"30",r:"2",fill:"#ffffff",opacity:t.value?.6:.2},null,8,kf),i[21]||(i[21]=e.createElementVNode("rect",{x:"45",y:"62",width:"30",height:"8",rx:"1",fill:"#1e293b",opacity:"0.7"},null,-1)),e.createElementVNode("text",Ef,e.toDisplayString(c.value)+"kW "+e.toDisplayString(a.value)+"rpm ",1)])),e.createElementVNode("div",{class:e.normalizeClass(["status-text",{"is-running":t.value}])},e.toDisplayString(t.value?"运行中":"已停止")+" | "+e.toDisplayString(d.value)+"m³/h ",3)]))}}),[["__scopeId","data-v-71be9db7"]]),Vf={class:"conveyor-3d-container"},xf={viewBox:"0 0 200 80",xmlns:"http://www.w3.org/2000/svg"},wf=["id"],$f=["id"],Cf=["id"],_f=["fill","transform"],vf=["transform"],Bf=["fill","transform"],Sf=["transform"],Df=["fill"],If=["x1","x2"],Tf=["x","fill"],zf=["fill","opacity"],Mf={key:0,attributeName:"opacity",values:"1;0.4;1",dur:"1s",repeatCount:"indefinite"},Af={x:"100",y:"20","font-size":"10",fill:"#94a3b8","text-anchor":"middle","font-family":"monospace"},Pf=P(e.defineComponent({__name:"Conveyor3D",props:{node:{}},setup(s){const l=s,o=e.ref(`conveyor-${Math.random().toString(36).substr(2,9)}`),r=()=>l.node?l.node.getData?l.node.getData():l.node.data||{}:{},t=e.ref(!1),a=e.ref(10),c=e.ref("forward"),d=e.ref(0),p=e.ref(0),f=e.ref(30);let m=null;const n=()=>{if(t.value){const h=a.value/10,i=a.value/5;c.value==="forward"?(d.value=(d.value+h)%360,p.value=(p.value+i)%15,f.value=f.value+i,f.value>180&&(f.value=20)):(d.value=(d.value-h+360)%360,p.value=(p.value-i+15)%15,f.value=f.value-i,f.value<20&&(f.value=180))}m=requestAnimationFrame(n)},u=()=>{const h=r();t.value=h.state==="running"||h.state===!0,a.value=h.speed||10,c.value=h.direction||"forward"};return e.watch(()=>l.node,()=>{u()},{deep:!0}),e.onMounted(()=>{u(),n(),l.node&&typeof l.node.on=="function"&&l.node.on("change:data",()=>{u()})}),e.onUnmounted(()=>{m&&cancelAnimationFrame(m)}),(h,i)=>(e.openBlock(),e.createElementBlock("div",Vf,[(e.openBlock(),e.createElementBlock("svg",xf,[e.createElementVNode("defs",null,[e.createElementVNode("linearGradient",{id:`belt-gradient-${o.value}`,x1:"0%",y1:"0%",x2:"0%",y2:"100%"},[...i[0]||(i[0]=[e.createElementVNode("stop",{offset:"0%","stop-color":"#1e293b"},null,-1),e.createElementVNode("stop",{offset:"50%","stop-color":"#334155"},null,-1),e.createElementVNode("stop",{offset:"100%","stop-color":"#1e293b"},null,-1)])],8,wf),e.createElementVNode("radialGradient",{id:`roller-gradient-${o.value}`},[...i[1]||(i[1]=[e.createElementVNode("stop",{offset:"0%","stop-color":"#64748b"},null,-1),e.createElementVNode("stop",{offset:"70%","stop-color":"#475569"},null,-1),e.createElementVNode("stop",{offset:"100%","stop-color":"#334155"},null,-1)])],8,$f),e.createElementVNode("linearGradient",{id:`cargo-gradient-${o.value}`,x1:"0%",y1:"0%",x2:"100%",y2:"0%"},[...i[2]||(i[2]=[e.createElementVNode("stop",{offset:"0%","stop-color":"#3b82f6"},null,-1),e.createElementVNode("stop",{offset:"50%","stop-color":"#60a5fa"},null,-1),e.createElementVNode("stop",{offset:"100%","stop-color":"#3b82f6"},null,-1)])],8,Cf)]),i[3]||(i[3]=e.createElementVNode("rect",{x:"10",y:"45",width:"180",height:"25",rx:"3",fill:"#0f172a",stroke:"#475569","stroke-width":"1"},null,-1)),e.createElementVNode("circle",{cx:"25",cy:"50",r:"12",fill:`url(#roller-gradient-${o.value})`,stroke:"#1e293b","stroke-width":"2",transform:`rotate(${d.value}, 25, 50)`},null,8,_f),(e.openBlock(),e.createElementBlock(e.Fragment,null,e.renderList(8,g=>e.createElementVNode("g",{key:`left-${g}`},[e.createElementVNode("line",{x1:25,y1:38,x2:25,y2:42,stroke:"#1e293b","stroke-width":"1.5",transform:`rotate(${d.value+g*45}, 25, 50)`},null,8,vf)])),64)),e.createElementVNode("circle",{cx:"175",cy:"50",r:"12",fill:`url(#roller-gradient-${o.value})`,stroke:"#1e293b","stroke-width":"2",transform:`rotate(${d.value}, 175, 50)`},null,8,Bf),(e.openBlock(),e.createElementBlock(e.Fragment,null,e.renderList(8,g=>e.createElementVNode("g",{key:`right-${g}`},[e.createElementVNode("line",{x1:175,y1:38,x2:175,y2:42,stroke:"#1e293b","stroke-width":"1.5",transform:`rotate(${d.value+g*45}, 175, 50)`},null,8,Sf)])),64)),e.createElementVNode("rect",{x:"25",y:"38",width:"150",height:"24",fill:`url(#belt-gradient-${o.value})`},null,8,Df),(e.openBlock(),e.createElementBlock(e.Fragment,null,e.renderList(10,g=>e.createElementVNode("g",{key:`line-${g}`},[e.createElementVNode("line",{x1:25+g*15+p.value,y1:38,x2:25+g*15+p.value,y2:62,stroke:"#475569","stroke-width":"1.5",opacity:"0.5"},null,8,If)])),64)),t.value?(e.openBlock(),e.createElementBlock("rect",{key:0,x:f.value,y:"30",width:"30",height:"20",rx:"2",fill:`url(#cargo-gradient-${o.value})`,stroke:"#2563eb","stroke-width":"1",opacity:"0.9"},null,8,Tf)):e.createCommentVNode("",!0),i[4]||(i[4]=e.createStaticVNode('<g data-v-eb26bad8><rect x="20" y="68" width="4" height="8" fill="#475569" data-v-eb26bad8></rect><rect x="96" y="68" width="4" height="8" fill="#475569" data-v-eb26bad8></rect><rect x="172" y="68" width="4" height="8" fill="#475569" data-v-eb26bad8></rect><rect x="18" y="74" width="8" height="2" rx="1" fill="#64748b" data-v-eb26bad8></rect><rect x="94" y="74" width="8" height="2" rx="1" fill="#64748b" data-v-eb26bad8></rect><rect x="170" y="74" width="8" height="2" rx="1" fill="#64748b" data-v-eb26bad8></rect></g><rect x="180" y="52" width="15" height="18" rx="2" fill="#334155" stroke="#475569" stroke-width="1" data-v-eb26bad8></rect><circle cx="187.5" cy="61" r="3" fill="#64748b" data-v-eb26bad8></circle>',3)),e.createElementVNode("circle",{cx:"15",cy:"55",r:"3",fill:t.value?"#22c55e":"#ef4444",opacity:t.value?1:.5},[t.value?(e.openBlock(),e.createElementBlock("animate",Mf)):e.createCommentVNode("",!0)],8,zf),e.createElementVNode("text",Af,e.toDisplayString(a.value)+" m/min ",1)])),e.createElementVNode("div",{class:e.normalizeClass(["status-text",{"is-running":t.value}])},e.toDisplayString(t.value?"运行中":"停止")+" | "+e.toDisplayString(a.value)+" m/min ",3)]))}}),[["__scopeId","data-v-eb26bad8"]]),Of={class:"alarm-light-3d-container"},Lf={viewBox:"0 0 80 100",xmlns:"http://www.w3.org/2000/svg"},Rf=["id"],Uf=["stop-color"],Wf=["stop-color"],Ff=["stop-color"],Gf=["id"],jf=["stop-color"],Hf=["stop-color"],qf=["stop-color"],Jf=["id"],Yf=["fill","opacity"],Xf=["transform"],Kf=["fill","opacity"],Qf=["fill"],Zf=["fill"],e0=["fill"],t0=["fill"],o0={x:"40",y:"85","font-size":"4",fill:"#64748b","text-anchor":"middle","font-family":"Arial"},l0=P(e.defineComponent({__name:"AlarmLight3D",props:{node:{}},setup(s){const l=s,o=e.ref(`alarm-${Math.random().toString(36).substr(2,9)}`),r=()=>l.node?l.node.getData?l.node.getData():l.node.data||{}:{},t=e.ref(!1),a=e.ref("rotating"),c=e.ref("#ef4444"),d=e.ref(0),p=e.ref(.8);let f=null;const m=e.computed(()=>t.value?c.value:"#475569"),n=e.computed(()=>t.value?a.value==="rotating"?"旋转报警":a.value==="flashing"?"闪烁报警":"持续报警":"正常"),u=()=>{t.value?a.value==="rotating"?(d.value=(d.value+5)%360,p.value=.8):a.value==="flashing"?p.value=Math.abs(Math.sin(Date.now()/300)):p.value=.8:p.value=0,f=requestAnimationFrame(u)},h=()=>{const i=r();t.value=i.state==="active"||i.state===!0,a.value=i.mode||"rotating",c.value=i.color||"#ef4444"};return e.watch(()=>l.node,()=>{h()},{deep:!0}),e.onMounted(()=>{h(),u(),l.node&&typeof l.node.on=="function"&&l.node.on("change:data",()=>{h()})}),e.onUnmounted(()=>{f&&cancelAnimationFrame(f)}),(i,g)=>(e.openBlock(),e.createElementBlock("div",Of,[(e.openBlock(),e.createElementBlock("svg",Lf,[e.createElementVNode("defs",null,[e.createElementVNode("linearGradient",{id:`dome-gradient-${o.value}`,x1:"0%",y1:"0%",x2:"0%",y2:"100%"},[e.createElementVNode("stop",{offset:"0%","stop-color":m.value,"stop-opacity":"0.9"},null,8,Uf),e.createElementVNode("stop",{offset:"50%","stop-color":m.value,"stop-opacity":"0.7"},null,8,Wf),e.createElementVNode("stop",{offset:"100%","stop-color":m.value,"stop-opacity":"0.5"},null,8,Ff)],8,Rf),e.createElementVNode("radialGradient",{id:`glow-${o.value}`},[e.createElementVNode("stop",{offset:"0%","stop-color":m.value,"stop-opacity":"0.8"},null,8,jf),e.createElementVNode("stop",{offset:"50%","stop-color":m.value,"stop-opacity":"0.3"},null,8,Hf),e.createElementVNode("stop",{offset:"100%","stop-color":m.value,"stop-opacity":"0"},null,8,qf)],8,Gf),e.createElementVNode("linearGradient",{id:`base-gradient-${o.value}`,x1:"0%",y1:"0%",x2:"100%",y2:"0%"},[...g[0]||(g[0]=[e.createElementVNode("stop",{offset:"0%","stop-color":"#1e293b"},null,-1),e.createElementVNode("stop",{offset:"50%","stop-color":"#334155"},null,-1),e.createElementVNode("stop",{offset:"100%","stop-color":"#1e293b"},null,-1)])],8,Jf)]),t.value?(e.openBlock(),e.createElementBlock("circle",{key:0,cx:"40",cy:"35",r:"35",fill:`url(#glow-${o.value})`,opacity:p.value},null,8,Yf)):e.createCommentVNode("",!0),g[3]||(g[3]=e.createElementVNode("ellipse",{cx:"40",cy:"35",rx:"25",ry:"22",fill:"#1e293b",stroke:"#475569","stroke-width":"1.5",opacity:"0.3"},null,-1)),e.createElementVNode("g",{transform:`rotate(${d.value}, 40, 35)`},[e.createElementVNode("ellipse",{cx:"40",cy:"35",rx:"23",ry:"20",fill:`url(#dome-gradient-${o.value})`,opacity:t.value?1:.3},null,8,Kf),g[1]||(g[1]=e.createElementVNode("path",{d:"M 17,35 Q 40,25 63,35",stroke:"#ffffff","stroke-width":"1",fill:"none",opacity:"0.3"},null,-1)),g[2]||(g[2]=e.createElementVNode("path",{d:"M 17,35 Q 40,45 63,35",stroke:"#000000","stroke-width":"1",fill:"none",opacity:"0.2"},null,-1))],8,Xf),g[4]||(g[4]=e.createElementVNode("rect",{x:"35",y:"55",width:"10",height:"8",rx:"2",fill:"#334155",stroke:"#475569","stroke-width":"1"},null,-1)),e.createElementVNode("ellipse",{cx:"40",cy:"63",rx:"18",ry:"5",fill:`url(#base-gradient-${o.value})`,stroke:"#475569","stroke-width":"1"},null,8,Qf),e.createElementVNode("rect",{x:"22",y:"63",width:"36",height:"12",fill:`url(#base-gradient-${o.value})`,stroke:"#475569","stroke-width":"1"},null,8,Zf),e.createElementVNode("ellipse",{cx:"40",cy:"75",rx:"18",ry:"5",fill:`url(#base-gradient-${o.value})`,stroke:"#475569","stroke-width":"1"},null,8,e0),g[5]||(g[5]=e.createElementVNode("circle",{cx:"28",cy:"69",r:"2",fill:"#64748b",stroke:"#1e293b","stroke-width":"0.5"},null,-1)),g[6]||(g[6]=e.createElementVNode("circle",{cx:"52",cy:"69",r:"2",fill:"#64748b",stroke:"#1e293b","stroke-width":"0.5"},null,-1)),g[7]||(g[7]=e.createElementVNode("line",{x1:"27",y1:"68",x2:"29",y2:"70",stroke:"#1e293b","stroke-width":"0.5"},null,-1)),g[8]||(g[8]=e.createElementVNode("line",{x1:"51",y1:"68",x2:"53",y2:"70",stroke:"#1e293b","stroke-width":"0.5"},null,-1)),e.createElementVNode("circle",{cx:"40",cy:"69",r:"1.5",fill:t.value?"#22c55e":"#64748b"},null,8,t0),e.createElementVNode("text",o0," AL-"+e.toDisplayString(a.value.toUpperCase()),1)])),e.createElementVNode("div",{class:e.normalizeClass(["status-text",{"is-active":t.value}])},e.toDisplayString(n.value),3)]))}}),[["__scopeId","data-v-80aba40a"]]),n0={class:"temperature-sensor-3d-container"},a0={viewBox:"0 0 80 120",xmlns:"http://www.w3.org/2000/svg"},r0=["id"],i0=["id"],s0=["stop-color"],d0=["stop-color"],c0=["id"],p0=["stop-color"],m0=["stop-color"],f0=["fill"],u0=["y","height","fill"],g0=["fill"],h0=["fill"],y0=["fill","opacity"],b0={key:0,attributeName:"opacity",values:"1;0.3;1",dur:"0.8s",repeatCount:"indefinite"},k0=P(e.defineComponent({__name:"TemperatureSensor3D",props:{node:{}},setup(s){const l=s,o=e.ref(`temp-sensor-${Math.random().toString(36).substr(2,9)}`),r=()=>l.node?l.node.getData?l.node.getData():l.node.data||{}:{},t=e.ref(25),a=e.ref(100),c=e.ref(0),d=e.ref(80),p=e.ref(10),f=e.computed(()=>{const g=a.value-c.value;return Math.max(0,Math.min(1,(t.value-c.value)/g))*45}),m=e.computed(()=>65-f.value),n=e.computed(()=>t.value>=d.value?"#ef4444":t.value<=p.value?"#3b82f6":t.value>=60?"#f97316":t.value>=40?"#fbbf24":"#22c55e"),u=e.computed(()=>t.value>=d.value?"#ef4444":t.value<=p.value?"#3b82f6":"#22c55e"),h=e.computed(()=>t.value>=d.value||t.value<=p.value),i=()=>{const g=r();t.value=Math.round(g.temperature??25),a.value=g.maxTemp||100,c.value=g.minTemp||0,d.value=g.alarmHighLimit||80,p.value=g.alarmLowLimit||10};return e.watch(()=>l.node,()=>{i()},{deep:!0}),e.onMounted(()=>{i(),l.node&&typeof l.node.on=="function"&&l.node.on("change:data",()=>{i()})}),(g,$)=>(e.openBlock(),e.createElementBlock("div",n0,[(e.openBlock(),e.createElementBlock("svg",a0,[e.createElementVNode("defs",null,[e.createElementVNode("linearGradient",{id:`shell-gradient-${o.value}`,x1:"0%",y1:"0%",x2:"100%",y2:"0%"},[...$[0]||($[0]=[e.createElementVNode("stop",{offset:"0%","stop-color":"#64748b"},null,-1),e.createElementVNode("stop",{offset:"50%","stop-color":"#cbd5e1"},null,-1),e.createElementVNode("stop",{offset:"100%","stop-color":"#64748b"},null,-1)])],8,r0),e.createElementVNode("linearGradient",{id:`liquid-gradient-${o.value}`,x1:"0%",y1:"0%",x2:"0%",y2:"100%"},[e.createElementVNode("stop",{offset:"0%","stop-color":n.value},null,8,s0),e.createElementVNode("stop",{offset:"100%","stop-color":n.value,"stop-opacity":"0.7"},null,8,d0)],8,i0),e.createElementVNode("radialGradient",{id:`bulb-gradient-${o.value}`},[e.createElementVNode("stop",{offset:"0%","stop-color":n.value,"stop-opacity":"0.9"},null,8,p0),e.createElementVNode("stop",{offset:"70%","stop-color":n.value},null,8,m0),$[1]||($[1]=e.createElementVNode("stop",{offset:"100%","stop-color":"#991b1b"},null,-1))],8,c0)]),e.createElementVNode("rect",{x:"30",y:"15",width:"20",height:"60",rx:"10",fill:`url(#shell-gradient-${o.value})`,stroke:"#475569","stroke-width":"1.5"},null,8,f0),$[2]||($[2]=e.createStaticVNode('<rect x="35" y="20" width="10" height="50" rx="5" fill="#f8fafc" stroke="#cbd5e1" stroke-width="1" opacity="0.8" data-v-1b4c4bcc></rect><g opacity="0.6" data-v-1b4c4bcc><line x1="32" y1="25" x2="35" y2="25" stroke="#64748b" stroke-width="0.8" data-v-1b4c4bcc></line><text x="29" y="27" font-size="5" fill="#64748b" text-anchor="end" data-v-1b4c4bcc>100</text><line x1="32" y1="35" x2="35" y2="35" stroke="#64748b" stroke-width="0.8" data-v-1b4c4bcc></line><text x="29" y="37" font-size="5" fill="#64748b" text-anchor="end" data-v-1b4c4bcc>75</text><line x1="32" y1="45" x2="35" y2="45" stroke="#64748b" stroke-width="0.8" data-v-1b4c4bcc></line><text x="29" y="47" font-size="5" fill="#64748b" text-anchor="end" data-v-1b4c4bcc>50</text><line x1="32" y1="55" x2="35" y2="55" stroke="#64748b" stroke-width="0.8" data-v-1b4c4bcc></line><text x="29" y="57" font-size="5" fill="#64748b" text-anchor="end" data-v-1b4c4bcc>25</text><line x1="32" y1="65" x2="35" y2="65" stroke="#64748b" stroke-width="0.8" data-v-1b4c4bcc></line><text x="29" y="67" font-size="5" fill="#64748b" text-anchor="end" data-v-1b4c4bcc>0</text></g>',2)),e.createElementVNode("rect",{x:"37",y:m.value,width:"6",height:f.value,rx:"3",fill:`url(#liquid-gradient-${o.value})`},null,8,u0),e.createElementVNode("circle",{cx:"40",cy:"75",r:"10",fill:`url(#bulb-gradient-${o.value})`,stroke:"#991b1b","stroke-width":"1.5"},null,8,g0),$[3]||($[3]=e.createStaticVNode('<ellipse cx="37" cy="72" rx="3" ry="4" fill="#ffffff" opacity="0.4" data-v-1b4c4bcc></ellipse><path d="M 40,85 Q 45,90 45,95 L 45,105" stroke="#1e293b" stroke-width="3" fill="none" stroke-linecap="round" data-v-1b4c4bcc></path><path d="M 40,85 Q 35,90 35,95 L 35,105" stroke="#ef4444" stroke-width="3" fill="none" stroke-linecap="round" data-v-1b4c4bcc></path><rect x="32" y="103" width="6" height="8" rx="1" fill="#fbbf24" stroke="#b45309" stroke-width="0.5" data-v-1b4c4bcc></rect><rect x="42" y="103" width="6" height="8" rx="1" fill="#1e293b" stroke="#475569" stroke-width="0.5" data-v-1b4c4bcc></rect><rect x="50" y="35" width="25" height="18" rx="2" fill="#0f172a" stroke="#334155" stroke-width="1" data-v-1b4c4bcc></rect>',6)),e.createElementVNode("text",{x:"62.5",y:"47","font-size":"10",fill:u.value,"text-anchor":"middle","font-family":"monospace"},e.toDisplayString(t.value),9,h0),$[4]||($[4]=e.createElementVNode("text",{x:"62.5",y:"51","font-size":"4",fill:"#64748b","text-anchor":"middle"},"°C",-1)),e.createElementVNode("circle",{cx:"58",cy:"29",r:"2.5",fill:h.value?"#ef4444":"#64748b",opacity:h.value?1:.3},[h.value?(e.openBlock(),e.createElementBlock("animate",b0)):e.createCommentVNode("",!0)],8,y0),$[5]||($[5]=e.createElementVNode("text",{x:"40",y:"115","font-size":"5",fill:"#64748b","text-anchor":"middle","font-family":"Arial"}," PT100 ",-1))])),e.createElementVNode("div",{class:e.normalizeClass(["status-text",{"is-alarm":h.value}])},e.toDisplayString(t.value)+"°C "+e.toDisplayString(h.value?"- 超限":""),3)]))}}),[["__scopeId","data-v-1b4c4bcc"]]),E0={class:"cylinder-3d-container"},N0={viewBox:"0 0 60 140",xmlns:"http://www.w3.org/2000/svg"},V0=["id"],x0=["id"],w0=["id"],$0=["fill"],C0=["fill"],_0=["fill"],v0=["y","height","fill"],B0=["cy"],S0=["cy"],D0=["x","fill"],I0=["x","fill"],T0={x:"30",y:"125","font-size":"5",fill:"#64748b","text-anchor":"middle","font-family":"Arial"},z0={x:"30",y:"18","font-size":"8",fill:"#22c55e","text-anchor":"middle","font-family":"monospace"},M0=P(e.defineComponent({__name:"Cylinder3D",props:{node:{}},setup(s){const l=s,o=e.ref(`cylinder-${Math.random().toString(36).substr(2,9)}`),r=()=>l.node?l.node.getData?l.node.getData():l.node.data||{}:{},t=e.ref(0),a=e.ref(50),c=e.ref(200),d=e.ref("stop");let p=null,f=Date.now();const m=e.computed(()=>t.value>=a.value),n=e.computed(()=>t.value<=0),u=e.computed(()=>30+t.value/a.value*40),h=e.computed(()=>50-u.value),i=e.computed(()=>110-t.value/a.value*60),g=e.computed(()=>m.value?"伸出到位":n.value?"缩回到位":d.value==="extend"?"正在伸出":d.value==="retract"?"正在缩回":"停止"),$=e.computed(()=>m.value||n.value?"is-positioned":d.value!=="stop"?"is-moving":""),D=()=>{const k=Date.now(),y=(k-f)/1e3;f=k,d.value==="extend"&&t.value<a.value?t.value=Math.min(a.value,t.value+c.value*y):d.value==="retract"&&t.value>0&&(t.value=Math.max(0,t.value-c.value*y)),t.value=Math.round(t.value),p=requestAnimationFrame(D)},x=()=>{const k=r();d.value=k.action||"stop",a.value=k.stroke||50,c.value=k.speed||200,typeof k.position=="number"&&(t.value=Math.max(0,Math.min(a.value,k.position)))};return e.watch(()=>l.node,()=>{x()},{deep:!0}),e.onMounted(()=>{x(),f=Date.now(),D(),l.node&&typeof l.node.on=="function"&&l.node.on("change:data",()=>{x()})}),e.onUnmounted(()=>{p&&cancelAnimationFrame(p)}),(k,y)=>(e.openBlock(),e.createElementBlock("div",E0,[(e.openBlock(),e.createElementBlock("svg",N0,[e.createElementVNode("defs",null,[e.createElementVNode("linearGradient",{id:`cylinder-gradient-${o.value}`,x1:"0%",y1:"0%",x2:"100%",y2:"0%"},[...y[0]||(y[0]=[e.createElementVNode("stop",{offset:"0%","stop-color":"#475569"},null,-1),e.createElementVNode("stop",{offset:"30%","stop-color":"#94a3b8"},null,-1),e.createElementVNode("stop",{offset:"70%","stop-color":"#cbd5e1"},null,-1),e.createElementVNode("stop",{offset:"100%","stop-color":"#475569"},null,-1)])],8,V0),e.createElementVNode("linearGradient",{id:`rod-gradient-${o.value}`,x1:"0%",y1:"0%",x2:"100%",y2:"0%"},[...y[1]||(y[1]=[e.createElementVNode("stop",{offset:"0%","stop-color":"#64748b"},null,-1),e.createElementVNode("stop",{offset:"50%","stop-color":"#94a3b8"},null,-1),e.createElementVNode("stop",{offset:"100%","stop-color":"#64748b"},null,-1)])],8,x0),e.createElementVNode("radialGradient",{id:`cap-gradient-${o.value}`},[...y[2]||(y[2]=[e.createElementVNode("stop",{offset:"0%","stop-color":"#64748b"},null,-1),e.createElementVNode("stop",{offset:"70%","stop-color":"#475569"},null,-1),e.createElementVNode("stop",{offset:"100%","stop-color":"#334155"},null,-1)])],8,w0)]),e.createElementVNode("ellipse",{cx:"30",cy:"80",rx:"15",ry:"8",fill:`url(#cap-gradient-${o.value})`,stroke:"#1e293b","stroke-width":"1"},null,8,$0),e.createElementVNode("rect",{x:"15",y:"50",width:"30",height:"60",fill:`url(#cylinder-gradient-${o.value})`,stroke:"#334155","stroke-width":"1"},null,8,C0),y[3]||(y[3]=e.createStaticVNode('<g opacity="0.2" data-v-7429604c><line x1="15" y1="55" x2="45" y2="55" stroke="#1e293b" stroke-width="0.5" data-v-7429604c></line><line x1="15" y1="65" x2="45" y2="65" stroke="#1e293b" stroke-width="0.5" data-v-7429604c></line><line x1="15" y1="75" x2="45" y2="75" stroke="#1e293b" stroke-width="0.5" data-v-7429604c></line><line x1="15" y1="85" x2="45" y2="85" stroke="#1e293b" stroke-width="0.5" data-v-7429604c></line><line x1="15" y1="95" x2="45" y2="95" stroke="#1e293b" stroke-width="0.5" data-v-7429604c></line><line x1="15" y1="105" x2="45" y2="105" stroke="#1e293b" stroke-width="0.5" data-v-7429604c></line></g>',1)),e.createElementVNode("ellipse",{cx:"30",cy:"50",rx:"15",ry:"8",fill:`url(#cap-gradient-${o.value})`,stroke:"#1e293b","stroke-width":"1"},null,8,_0),e.createElementVNode("rect",{x:"26",y:h.value,width:"8",height:u.value,fill:`url(#rod-gradient-${o.value})`,stroke:"#475569","stroke-width":"0.5"},null,8,v0),e.createElementVNode("ellipse",{cx:"30",cy:h.value,rx:"4",ry:"2",fill:"#94a3b8",stroke:"#64748b","stroke-width":"0.5"},null,8,B0),e.createElementVNode("ellipse",{cx:"30",cy:i.value,rx:"13",ry:"6",fill:"#64748b",stroke:"#334155","stroke-width":"1"},null,8,S0),y[4]||(y[4]=e.createElementVNode("circle",{cx:"48",cy:"58",r:"3",fill:"#3b82f6",stroke:"#1e40af","stroke-width":"1"},null,-1)),y[5]||(y[5]=e.createElementVNode("text",{x:"55",y:"60","font-size":"6",fill:"#3b82f6","font-weight":"bold"},"A",-1)),y[6]||(y[6]=e.createElementVNode("circle",{cx:"48",cy:"102",r:"3",fill:"#ef4444",stroke:"#991b1b","stroke-width":"1"},null,-1)),y[7]||(y[7]=e.createElementVNode("text",{x:"55",y:"104","font-size":"6",fill:"#ef4444","font-weight":"bold"},"B",-1)),e.createElementVNode("rect",{x:m.value?48:50,y:"52",width:"6",height:"4",rx:"1",fill:m.value?"#22c55e":"#64748b",stroke:"#334155","stroke-width":"0.5"},null,8,D0),e.createElementVNode("rect",{x:n.value?48:50,y:"104",width:"6",height:"4",rx:"1",fill:n.value?"#22c55e":"#64748b",stroke:"#334155","stroke-width":"0.5"},null,8,I0),y[8]||(y[8]=e.createElementVNode("g",null,[e.createElementVNode("rect",{x:"5",y:"78",width:"8",height:"4",rx:"1",fill:"#334155"}),e.createElementVNode("circle",{cx:"7",cy:"80",r:"2",fill:"#64748b",stroke:"#1e293b","stroke-width":"0.5"}),e.createElementVNode("rect",{x:"47",y:"78",width:"8",height:"4",rx:"1",fill:"#334155"}),e.createElementVNode("circle",{cx:"53",cy:"80",r:"2",fill:"#64748b",stroke:"#1e293b","stroke-width":"0.5"})],-1)),e.createElementVNode("text",T0,e.toDisplayString(a.value)+"mm ",1),e.createElementVNode("text",z0,e.toDisplayString(t.value)+"mm ",1)])),e.createElementVNode("div",{class:e.normalizeClass(["status-text",$.value])},e.toDisplayString(g.value),3)]))}}),[["__scopeId","data-v-7429604c"]]),A0={class:"pipe-3d-container"},P0=["viewBox"],O0=["id"],L0=["id"],R0=["stop-color"],U0=["stop-color"],W0=["stop-color"],F0={key:0},G0=["y","width","height","fill"],j0=["y","width","height"],H0=["x","y","width","height","fill"],q0=["cy","rx","ry"],J0=["cx","cy","rx","ry"],Y0=["cy"],X0=["cy"],K0=["cx","cy"],Q0=["cx","cy"],Z0={key:1},eu=["x","width","height","fill"],tu=["x","width","height"],ou=["x","y","width","height","fill"],lu=["cx","rx","ry"],nu=["cx","cy","rx","ry"],au=["cx"],ru=["cx"],iu=["cx","cy"],su=["cx","cy"],du={key:2},cu=["id"],pu=["fill"],mu=["x1","y1","x2","y2","stroke","marker-end"],fu=["x1","y1","x2","y2","stroke","marker-end"],uu=P(e.defineComponent({__name:"Pipe3D",props:{node:{}},setup(s){const l=s,o=e.ref(`pipe-${Math.random().toString(36).substr(2,9)}`),r=()=>l.node?l.node.getData?l.node.getData():l.node.data||{}:{},t=e.ref(!1),a=e.ref(10),c=e.ref("horizontal"),d=e.ref("#3b82f6"),p=e.ref(40),f=e.ref(200),m=e.computed(()=>p.value/2),n=e.computed(()=>f.value),u=e.computed(()=>c.value==="horizontal"?`0 0 ${n.value} ${p.value+10}`:`0 0 ${p.value+10} ${n.value}`),h=e.computed(()=>(p.value+10)/2),i=e.computed(()=>(p.value+10)/2),g=e.ref(0);let $=null;const D=()=>{if(t.value){const k=a.value/5;g.value=(g.value+k)%n.value}$=requestAnimationFrame(D)},x=()=>{const k=r();t.value=k.state==="flowing"||k.state===!0,a.value=k.flowRate||10,c.value=k.direction||"horizontal",d.value=k.fluidColor||"#3b82f6",p.value=k.diameter||40,f.value=k.length||200};return e.watch(()=>l.node,()=>{x()},{deep:!0}),e.onMounted(()=>{x(),D(),l.node&&typeof l.node.on=="function"&&l.node.on("change:data",()=>{x()})}),e.onUnmounted(()=>{$&&cancelAnimationFrame($)}),(k,y)=>(e.openBlock(),e.createElementBlock("div",A0,[(e.openBlock(),e.createElementBlock("svg",{viewBox:u.value,xmlns:"http://www.w3.org/2000/svg"},[e.createElementVNode("defs",null,[e.createElementVNode("linearGradient",{id:`pipe-gradient-${o.value}`,x1:"0%",y1:"0%",x2:"100%",y2:"0%"},[...y[0]||(y[0]=[e.createElementVNode("stop",{offset:"0%","stop-color":"#475569"},null,-1),e.createElementVNode("stop",{offset:"30%","stop-color":"#94a3b8"},null,-1),e.createElementVNode("stop",{offset:"70%","stop-color":"#cbd5e1"},null,-1),e.createElementVNode("stop",{offset:"100%","stop-color":"#475569"},null,-1)])],8,O0),e.createElementVNode("linearGradient",{id:`flow-gradient-${o.value}`,x1:"0%",y1:"0%",x2:"100%",y2:"0%"},[e.createElementVNode("stop",{offset:"0%","stop-color":d.value,"stop-opacity":"0.3"},null,8,R0),e.createElementVNode("stop",{offset:"50%","stop-color":d.value,"stop-opacity":"0.8"},null,8,U0),e.createElementVNode("stop",{offset:"100%","stop-color":d.value,"stop-opacity":"0.3"},null,8,W0)],8,L0)]),c.value==="horizontal"?(e.openBlock(),e.createElementBlock("g",F0,[e.createElementVNode("rect",{x:"0",y:h.value-m.value,width:n.value,height:m.value*2,fill:`url(#pipe-gradient-${o.value})`,stroke:"#334155","stroke-width":"1"},null,8,G0),e.createElementVNode("rect",{x:"0",y:h.value-m.value+3,width:n.value,height:m.value*2-6,fill:"#0f172a"},null,8,j0),t.value?(e.openBlock(),e.createElementBlock("rect",{key:0,x:g.value,y:h.value-m.value+5,width:n.value/2,height:m.value*2-10,fill:`url(#flow-gradient-${o.value})`},null,8,H0)):e.createCommentVNode("",!0),e.createElementVNode("g",null,[e.createElementVNode("ellipse",{cx:0,cy:h.value,rx:m.value+2,ry:m.value+2,fill:"#64748b",stroke:"#334155","stroke-width":"1"},null,8,q0),e.createElementVNode("ellipse",{cx:n.value,cy:h.value,rx:m.value+2,ry:m.value+2,fill:"#64748b",stroke:"#334155","stroke-width":"1"},null,8,J0),e.createElementVNode("circle",{cx:0,cy:h.value-m.value-2,r:"1.5",fill:"#1e293b"},null,8,Y0),e.createElementVNode("circle",{cx:0,cy:h.value+m.value+2,r:"1.5",fill:"#1e293b"},null,8,X0),e.createElementVNode("circle",{cx:n.value,cy:h.value-m.value-2,r:"1.5",fill:"#1e293b"},null,8,K0),e.createElementVNode("circle",{cx:n.value,cy:h.value+m.value+2,r:"1.5",fill:"#1e293b"},null,8,Q0)])])):(e.openBlock(),e.createElementBlock("g",Z0,[e.createElementVNode("rect",{x:i.value-m.value,y:"0",width:m.value*2,height:n.value,fill:`url(#pipe-gradient-${o.value})`,stroke:"#334155","stroke-width":"1"},null,8,eu),e.createElementVNode("rect",{x:i.value-m.value+3,y:"0",width:m.value*2-6,height:n.value,fill:"#0f172a"},null,8,tu),t.value?(e.openBlock(),e.createElementBlock("rect",{key:0,x:i.value-m.value+5,y:g.value,width:m.value*2-10,height:n.value/2,fill:`url(#flow-gradient-${o.value})`},null,8,ou)):e.createCommentVNode("",!0),e.createElementVNode("g",null,[e.createElementVNode("ellipse",{cx:i.value,cy:0,rx:m.value+2,ry:m.value+2,fill:"#64748b",stroke:"#334155","stroke-width":"1"},null,8,lu),e.createElementVNode("ellipse",{cx:i.value,cy:n.value,rx:m.value+2,ry:m.value+2,fill:"#64748b",stroke:"#334155","stroke-width":"1"},null,8,nu),e.createElementVNode("circle",{cx:i.value-m.value-2,cy:0,r:"1.5",fill:"#1e293b"},null,8,au),e.createElementVNode("circle",{cx:i.value+m.value+2,cy:0,r:"1.5",fill:"#1e293b"},null,8,ru),e.createElementVNode("circle",{cx:i.value-m.value-2,cy:n.value,r:"1.5",fill:"#1e293b"},null,8,iu),e.createElementVNode("circle",{cx:i.value+m.value+2,cy:n.value,r:"1.5",fill:"#1e293b"},null,8,su)])])),t.value?(e.openBlock(),e.createElementBlock("g",du,[e.createElementVNode("defs",null,[e.createElementVNode("marker",{id:`arrow-${o.value}`,markerWidth:"10",markerHeight:"10",refX:"8",refY:"3",orient:"auto",markerUnits:"strokeWidth"},[e.createElementVNode("path",{d:"M0,0 L0,6 L9,3 z",fill:d.value},null,8,pu)],8,cu)]),c.value==="horizontal"?(e.openBlock(),e.createElementBlock("line",{key:0,x1:n.value/2-20,y1:h.value,x2:n.value/2+20,y2:h.value,stroke:d.value,"stroke-width":"2","marker-end":`url(#arrow-${o.value})`},null,8,mu)):(e.openBlock(),e.createElementBlock("line",{key:1,x1:i.value,y1:n.value/2-20,x2:i.value,y2:n.value/2+20,stroke:d.value,"stroke-width":"2","marker-end":`url(#arrow-${o.value})`},null,8,fu))])):e.createCommentVNode("",!0)],8,P0)),e.createElementVNode("div",{class:e.normalizeClass(["status-text",{"is-flowing":t.value}])},e.toDisplayString(t.value?"流动中":"停止")+" | "+e.toDisplayString(a.value)+" m³/h ",3)]))}}),[["__scopeId","data-v-5c3ec02f"]]),gu={class:"filter-3d-container"},hu={viewBox:"0 0 120 100",xmlns:"http://www.w3.org/2000/svg"},yu=["id"],bu=["id"],ku=["stop-color"],Eu=["stop-color"],Nu=["fill"],Vu=["fill"],xu={opacity:"0.5"},wu=["x1","x2"],$u=["y1","y2"],Cu=["y","height"],_u={transform:"translate(80, 30)"},vu=["fill"],Bu=["fill","opacity"],Su={key:0,attributeName:"opacity",values:"1;0.3;1",dur:"0.8s",repeatCount:"indefinite"},Du={x:"60",y:"95","font-size":"5",fill:"#64748b","text-anchor":"middle","font-family":"Arial"},Iu=P(e.defineComponent({__name:"Filter3D",props:{node:{}},setup(s){const l=s,o=e.ref(`filter-${Math.random().toString(36).substr(2,9)}`),r=()=>l.node?l.node.getData?l.node.getData():l.node.data||{}:{},t=e.ref(20),a=e.ref(5),c=e.ref(50),d=e.ref(70),p=e.computed(()=>t.value>=d.value?"#7f1d1d":t.value>=50?"#b45309":"#15803d"),f=e.computed(()=>t.value>=d.value?"#991b1b":t.value>=50?"#d97706":"#166534"),m=e.computed(()=>a.value>=15?"#ef4444":a.value>=10?"#f97316":"#22c55e"),n=e.computed(()=>t.value>=d.value),u=()=>{const h=r();t.value=Math.max(0,Math.min(100,h.clogLevel||20)),a.value=h.pressureDrop||5,c.value=h.diameter||50,d.value=h.alarmThreshold||70};return e.watch(()=>l.node,()=>{u()},{deep:!0}),e.onMounted(()=>{u(),l.node&&typeof l.node.on=="function"&&l.node.on("change:data",()=>{u()})}),(h,i)=>(e.openBlock(),e.createElementBlock("div",gu,[(e.openBlock(),e.createElementBlock("svg",hu,[e.createElementVNode("defs",null,[e.createElementVNode("linearGradient",{id:`shell-gradient-${o.value}`,x1:"0%",y1:"0%",x2:"100%",y2:"0%"},[...i[0]||(i[0]=[e.createElementVNode("stop",{offset:"0%","stop-color":"#475569"},null,-1),e.createElementVNode("stop",{offset:"50%","stop-color":"#94a3b8"},null,-1),e.createElementVNode("stop",{offset:"100%","stop-color":"#475569"},null,-1)])],8,yu),e.createElementVNode("linearGradient",{id:`filter-element-${o.value}`,x1:"0%",y1:"0%",x2:"0%",y2:"100%"},[e.createElementVNode("stop",{offset:"0%","stop-color":p.value},null,8,ku),e.createElementVNode("stop",{offset:"100%","stop-color":f.value},null,8,Eu)],8,bu)]),i[3]||(i[3]=e.createElementVNode("rect",{x:"0",y:"43",width:"25",height:"14",fill:"#64748b",stroke:"#334155","stroke-width":"1"},null,-1)),e.createElementVNode("rect",{x:"25",y:"20",width:"70",height:"60",rx:"5",fill:`url(#shell-gradient-${o.value})`,stroke:"#334155","stroke-width":"2"},null,8,Nu),i[4]||(i[4]=e.createElementVNode("ellipse",{cx:"60",cy:"50",rx:"15",ry:"20",fill:"#1e293b",stroke:"#64748b","stroke-width":"2",opacity:"0.7"},null,-1)),e.createElementVNode("g",null,[e.createElementVNode("rect",{x:"50",y:"30",width:"20",height:"40",rx:"2",fill:`url(#filter-element-${o.value})`,stroke:"#475569","stroke-width":"1"},null,8,Vu),e.createElementVNode("g",xu,[(e.openBlock(),e.createElementBlock(e.Fragment,null,e.renderList(8,g=>e.createElementVNode("line",{key:`v-${g}`,x1:50+g*2.5,y1:"30",x2:50+g*2.5,y2:"70",stroke:"#1e293b","stroke-width":"0.5"},null,8,wu)),64)),(e.openBlock(),e.createElementBlock(e.Fragment,null,e.renderList(8,g=>e.createElementVNode("line",{key:`h-${g}`,x1:"50",y1:30+g*5,x2:"70",y2:30+g*5,stroke:"#1e293b","stroke-width":"0.5"},null,8,$u)),64))]),e.createElementVNode("rect",{x:"52",y:70-t.value*.4,width:"16",height:t.value*.4,fill:"#ef4444",opacity:"0.6"},null,8,Cu)]),i[5]||(i[5]=e.createElementVNode("rect",{x:"95",y:"43",width:"25",height:"14",fill:"#64748b",stroke:"#334155","stroke-width":"1"},null,-1)),i[6]||(i[6]=e.createElementVNode("rect",{x:"55",y:"78",width:"10",height:"8",rx:"1",fill:"#334155",stroke:"#1e293b","stroke-width":"1"},null,-1)),i[7]||(i[7]=e.createElementVNode("path",{d:"M 57,86 L 60,90 L 63,86",stroke:"#64748b","stroke-width":"1.5",fill:"none"},null,-1)),e.createElementVNode("g",_u,[i[1]||(i[1]=e.createElementVNode("circle",{cx:"0",cy:"0",r:"12",fill:"#0f172a",stroke:"#475569","stroke-width":"1.5"},null,-1)),e.createElementVNode("text",{x:"0",y:"4","font-size":"7",fill:m.value,"text-anchor":"middle","font-family":"monospace"},e.toDisplayString(a.value),9,vu),i[2]||(i[2]=e.createElementVNode("text",{x:"0",y:"10","font-size":"3",fill:"#64748b","text-anchor":"middle"},"kPa",-1))]),e.createElementVNode("circle",{cx:"35",cy:"28",r:"3",fill:n.value?"#ef4444":"#64748b",opacity:n.value?1:.3},[n.value?(e.openBlock(),e.createElementBlock("animate",Su)):e.createCommentVNode("",!0)],8,Bu),e.createElementVNode("text",Du," FLT-"+e.toDisplayString(c.value),1)])),e.createElementVNode("div",{class:e.normalizeClass(["status-text",{"is-alarm":n.value}])}," 堵塞度: "+e.toDisplayString(t.value)+"% | 压差: "+e.toDisplayString(a.value)+" kPa ",3)]))}}),[["__scopeId","data-v-1bb1c80a"]]),Tu={class:"heat-exchanger-3d-container"},zu={viewBox:"0 0 140 120",xmlns:"http://www.w3.org/2000/svg"},Mu=["id"],Au=["id"],Pu=["id"],Ou=["fill"],Lu={opacity:"0.6"},Ru=["y1","y2"],Uu=["y","fill"],Wu=["y","fill"],Fu=["x","fill"],Gu=["x","fill"],ju={transform:"translate(70, 60)"},Hu=["fill"],qu={transform:"translate(95, 50)"},Ju={x:"0",y:"-1","font-size":"6",fill:"#ef4444","text-anchor":"middle"},Yu={x:"0",y:"6","font-size":"5",fill:"#f97316","text-anchor":"middle"},Xu={transform:"translate(45, 70)"},Ku={x:"0",y:"-1","font-size":"6",fill:"#3b82f6","text-anchor":"middle"},Qu={x:"0",y:"6","font-size":"5",fill:"#60a5fa","text-anchor":"middle"},Zu=["fill","opacity"],e1={key:0,attributeName:"opacity",values:"1;0.5;1",dur:"1.5s",repeatCount:"indefinite"},t1={x:"70",y:"115","font-size":"5",fill:"#64748b","text-anchor":"middle","font-family":"Arial"},o1=P(e.defineComponent({__name:"HeatExchanger3D",props:{node:{}},setup(s){const l=s,o=e.ref(`hex-${Math.random().toString(36).substr(2,9)}`),r=()=>l.node?l.node.getData?l.node.getData():l.node.data||{}:{},t=e.ref(!1),a=e.ref(80),c=e.ref(50),d=e.ref(20),p=e.ref(40),f=e.ref(10),m=e.computed(()=>{if(a.value<=c.value)return 0;const k=a.value-d.value,y=a.value-c.value,E=Math.round(y/k*100);return Math.max(0,Math.min(100,E))}),n=e.computed(()=>m.value>=80?"#22c55e":m.value>=60?"#fbbf24":m.value>=40?"#f97316":"#ef4444"),u=e.ref(0),h=e.ref(0),i=e.ref(0),g=e.ref(0);let $=null;const D=()=>{t.value&&(u.value=(u.value+.5)%20,h.value=(h.value+.5)%20,i.value=(i.value+.5)%20,g.value=(g.value+.5)%20),$=requestAnimationFrame(D)},x=()=>{const k=r();t.value=k.state==="working"||k.state===!0,a.value=k.hotTempIn||80,c.value=k.hotTempOut||50,d.value=k.coldTempIn||20,p.value=k.coldTempOut||40,f.value=k.heatTransferArea||10};return e.watch(()=>l.node,()=>{x()},{deep:!0}),e.onMounted(()=>{x(),D(),l.node&&typeof l.node.on=="function"&&l.node.on("change:data",()=>{x()})}),e.onUnmounted(()=>{$&&cancelAnimationFrame($)}),(k,y)=>(e.openBlock(),e.createElementBlock("div",Tu,[(e.openBlock(),e.createElementBlock("svg",zu,[e.createElementVNode("defs",null,[e.createElementVNode("linearGradient",{id:`shell-gradient-${o.value}`,x1:"0%",y1:"0%",x2:"100%",y2:"0%"},[...y[0]||(y[0]=[e.createElementVNode("stop",{offset:"0%","stop-color":"#475569"},null,-1),e.createElementVNode("stop",{offset:"50%","stop-color":"#94a3b8"},null,-1),e.createElementVNode("stop",{offset:"100%","stop-color":"#475569"},null,-1)])],8,Mu),e.createElementVNode("linearGradient",{id:`hot-fluid-${o.value}`,x1:"0%",y1:"0%",x2:"100%",y2:"0%"},[...y[1]||(y[1]=[e.createElementVNode("stop",{offset:"0%","stop-color":"#ef4444","stop-opacity":"0.3"},null,-1),e.createElementVNode("stop",{offset:"50%","stop-color":"#ef4444","stop-opacity":"0.7"},null,-1),e.createElementVNode("stop",{offset:"100%","stop-color":"#ef4444","stop-opacity":"0.3"},null,-1)])],8,Au),e.createElementVNode("linearGradient",{id:`cold-fluid-${o.value}`,x1:"0%",y1:"0%",x2:"100%",y2:"0%"},[...y[2]||(y[2]=[e.createElementVNode("stop",{offset:"0%","stop-color":"#3b82f6","stop-opacity":"0.3"},null,-1),e.createElementVNode("stop",{offset:"50%","stop-color":"#3b82f6","stop-opacity":"0.7"},null,-1),e.createElementVNode("stop",{offset:"100%","stop-color":"#3b82f6","stop-opacity":"0.3"},null,-1)])],8,Pu)]),e.createElementVNode("rect",{x:"20",y:"30",width:"100",height:"60",rx:"8",fill:`url(#shell-gradient-${o.value})`,stroke:"#334155","stroke-width":"2"},null,8,Ou),y[15]||(y[15]=e.createElementVNode("line",{x1:"70",y1:"30",x2:"70",y2:"90",stroke:"#64748b","stroke-width":"2"},null,-1)),e.createElementVNode("g",Lu,[(e.openBlock(),e.createElementBlock(e.Fragment,null,e.renderList(8,E=>e.createElementVNode("line",{key:`tube-${E}`,x1:"25",y1:35+E*7,x2:"115",y2:35+E*7,stroke:"#475569","stroke-width":"1.5"},null,8,Ru)),64))]),e.createElementVNode("g",null,[y[3]||(y[3]=e.createElementVNode("rect",{x:"60",y:"10",width:"20",height:"20",rx:"2",fill:"#64748b",stroke:"#334155","stroke-width":"1"},null,-1)),y[4]||(y[4]=e.createElementVNode("text",{x:"70",y:"23","font-size":"6",fill:"#ef4444","text-anchor":"middle","font-weight":"bold"},"H-IN",-1)),t.value?(e.openBlock(),e.createElementBlock("rect",{key:0,x:"65",y:10+u.value,width:"10",height:"8",fill:`url(#hot-fluid-${o.value})`},null,8,Uu)):e.createCommentVNode("",!0)]),e.createElementVNode("g",null,[y[5]||(y[5]=e.createElementVNode("rect",{x:"60",y:"90",width:"20",height:"20",rx:"2",fill:"#64748b",stroke:"#334155","stroke-width":"1"},null,-1)),y[6]||(y[6]=e.createElementVNode("text",{x:"70",y:"103","font-size":"6",fill:"#f97316","text-anchor":"middle","font-weight":"bold"},"H-OUT",-1)),t.value?(e.openBlock(),e.createElementBlock("rect",{key:0,x:"65",y:90+h.value,width:"10",height:"8",fill:`url(#hot-fluid-${o.value})`,opacity:"0.7"},null,8,Wu)):e.createCommentVNode("",!0)]),e.createElementVNode("g",null,[y[7]||(y[7]=e.createElementVNode("rect",{x:"0",y:"53",width:"20",height:"14",rx:"2",fill:"#64748b",stroke:"#334155","stroke-width":"1"},null,-1)),y[8]||(y[8]=e.createElementVNode("text",{x:"10",y:"62","font-size":"5",fill:"#3b82f6","text-anchor":"middle","font-weight":"bold"},"C-IN",-1)),t.value?(e.openBlock(),e.createElementBlock("rect",{key:0,x:i.value,y:"56",width:"8",height:"8",fill:`url(#cold-fluid-${o.value})`},null,8,Fu)):e.createCommentVNode("",!0)]),e.createElementVNode("g",null,[y[9]||(y[9]=e.createElementVNode("rect",{x:"120",y:"53",width:"20",height:"14",rx:"2",fill:"#64748b",stroke:"#334155","stroke-width":"1"},null,-1)),y[10]||(y[10]=e.createElementVNode("text",{x:"130",y:"62","font-size":"5",fill:"#60a5fa","text-anchor":"middle","font-weight":"bold"},"C-OUT",-1)),t.value?(e.openBlock(),e.createElementBlock("rect",{key:0,x:120+g.value,y:"56",width:"8",height:"8",fill:`url(#cold-fluid-${o.value})`,opacity:"0.7"},null,8,Gu)):e.createCommentVNode("",!0)]),e.createElementVNode("g",ju,[y[11]||(y[11]=e.createElementVNode("circle",{cx:"0",cy:"0",r:"15",fill:"#0f172a",stroke:"#475569","stroke-width":"2"},null,-1)),e.createElementVNode("text",{x:"0",y:"2","font-size":"10",fill:n.value,"text-anchor":"middle","font-family":"monospace","font-weight":"bold"},e.toDisplayString(m.value),9,Hu),y[12]||(y[12]=e.createElementVNode("text",{x:"0",y:"8","font-size":"4",fill:"#64748b","text-anchor":"middle"},"%",-1))]),e.createElementVNode("g",qu,[y[13]||(y[13]=e.createElementVNode("rect",{x:"-15",y:"-8",width:"30",height:"16",rx:"2",fill:"#1e293b",stroke:"#ef4444","stroke-width":"1"},null,-1)),e.createElementVNode("text",Ju,e.toDisplayString(a.value)+"°C",1),e.createElementVNode("text",Yu,"→"+e.toDisplayString(c.value)+"°C",1)]),e.createElementVNode("g",Xu,[y[14]||(y[14]=e.createElementVNode("rect",{x:"-15",y:"-8",width:"30",height:"16",rx:"2",fill:"#1e293b",stroke:"#3b82f6","stroke-width":"1"},null,-1)),e.createElementVNode("text",Ku,e.toDisplayString(d.value)+"°C",1),e.createElementVNode("text",Qu,"→"+e.toDisplayString(p.value)+"°C",1)]),e.createElementVNode("circle",{cx:"30",cy:"38",r:"3",fill:t.value?"#22c55e":"#64748b",opacity:t.value?1:.3},[t.value?(e.openBlock(),e.createElementBlock("animate",e1)):e.createCommentVNode("",!0)],8,Zu),e.createElementVNode("text",t1," HEX-"+e.toDisplayString(f.value)+"m² ",1)])),e.createElementVNode("div",{class:e.normalizeClass(["status-text",{"is-working":t.value}])},e.toDisplayString(t.value?"运行中":"停止")+" | 效率: "+e.toDisplayString(m.value)+"% ",3)]))}}),[["__scopeId","data-v-ed672204"]]),l1={class:"tee-3d-container"},n1={viewBox:"0 0 100 100",xmlns:"http://www.w3.org/2000/svg"},a1=["id"],r1=["id"],i1=["stop-color"],s1=["stop-color"],d1=["fill"],c1=["fill"],p1=["fill"],m1={key:0},f1=["fill"],u1=["x","fill"],g1=["x","fill"],h1=["y","fill"],y1=["y","fill"],b1={key:1},k1=["id"],E1=["fill"],N1=["stroke","marker-end"],V1=["stroke","marker-end"],x1=["stroke","marker-end"],w1={transform:"translate(50, 50)"},$1=["fill"],C1=P(e.defineComponent({__name:"Tee3D",props:{node:{}},setup(s){const l=s,o=e.ref(`tee-${Math.random().toString(36).substr(2,9)}`),r=()=>l.node?l.node.getData?l.node.getData():l.node.data||{}:{},t=e.ref(!1),a=e.ref("#3b82f6"),c=e.ref(!0),d=e.ref(!0),p=e.ref(0),f=e.ref(0),m=e.ref(0),n=e.ref(0);let u=null;const h=()=>{t.value&&(p.value=(p.value+1)%40,f.value=(f.value+1)%20,m.value=(m.value+1)%20,n.value=(n.value+1)%20),u=requestAnimationFrame(h)},i=()=>{const g=r();t.value=g.state==="flowing"||g.state===!0,a.value=g.fluidColor||"#3b82f6",c.value=g.topFlowEnabled!==!1,d.value=g.bottomFlowEnabled!==!1};return e.watch(()=>l.node,()=>{i()},{deep:!0}),e.onMounted(()=>{i(),h(),l.node&&typeof l.node.on=="function"&&l.node.on("change:data",()=>{i()})}),e.onUnmounted(()=>{u&&cancelAnimationFrame(u)}),(g,$)=>(e.openBlock(),e.createElementBlock("div",l1,[(e.openBlock(),e.createElementBlock("svg",n1,[e.createElementVNode("defs",null,[e.createElementVNode("linearGradient",{id:`pipe-gradient-${o.value}`,x1:"0%",y1:"0%",x2:"100%",y2:"0%"},[...$[0]||($[0]=[e.createElementVNode("stop",{offset:"0%","stop-color":"#475569"},null,-1),e.createElementVNode("stop",{offset:"50%","stop-color":"#94a3b8"},null,-1),e.createElementVNode("stop",{offset:"100%","stop-color":"#475569"},null,-1)])],8,a1),e.createElementVNode("radialGradient",{id:`flow-gradient-${o.value}`},[e.createElementVNode("stop",{offset:"0%","stop-color":a.value,"stop-opacity":"0.8"},null,8,i1),e.createElementVNode("stop",{offset:"100%","stop-color":a.value,"stop-opacity":"0.2"},null,8,s1)],8,r1)]),e.createElementVNode("rect",{x:"0",y:"40",width:"100",height:"20",fill:`url(#pipe-gradient-${o.value})`,stroke:"#334155","stroke-width":"1.5"},null,8,d1),e.createElementVNode("rect",{x:"40",y:"0",width:"20",height:"100",fill:`url(#pipe-gradient-${o.value})`,stroke:"#334155","stroke-width":"1.5"},null,8,c1),e.createElementVNode("circle",{cx:"50",cy:"50",r:"18",fill:`url(#pipe-gradient-${o.value})`,stroke:"#334155","stroke-width":"2"},null,8,p1),$[3]||($[3]=e.createElementVNode("rect",{x:"0",y:"43",width:"100",height:"14",fill:"#0f172a"},null,-1)),$[4]||($[4]=e.createElementVNode("rect",{x:"43",y:"0",width:"14",height:"100",fill:"#0f172a"},null,-1)),$[5]||($[5]=e.createElementVNode("circle",{cx:"50",cy:"50",r:"15",fill:"#0f172a"},null,-1)),t.value?(e.openBlock(),e.createElementBlock("g",m1,[e.createElementVNode("circle",{cx:"50",cy:"50",r:"12",fill:`url(#flow-gradient-${o.value})`},[...$[1]||($[1]=[e.createElementVNode("animate",{attributeName:"r",values:"8;14;8",dur:"1.5s",repeatCount:"indefinite"},null,-1)])],8,f1),e.createElementVNode("rect",{x:p.value,y:"45",width:"20",height:"10",fill:a.value,opacity:"0.6"},null,8,u1),e.createElementVNode("rect",{x:60+f.value,y:"45",width:"20",height:"10",fill:a.value,opacity:"0.4"},null,8,g1),e.createElementVNode("rect",{x:"45",y:m.value,width:"10",height:"20",fill:a.value,opacity:"0.4"},null,8,h1),e.createElementVNode("rect",{x:"45",y:60+n.value,width:"10",height:"20",fill:a.value,opacity:"0.4"},null,8,y1)])):e.createCommentVNode("",!0),$[6]||($[6]=e.createStaticVNode('<g data-v-cd328987><ellipse cx="0" cy="50" rx="3" ry="10" fill="#64748b" stroke="#334155" stroke-width="1" data-v-cd328987></ellipse><circle cx="0" cy="45" r="1" fill="#1e293b" data-v-cd328987></circle><circle cx="0" cy="55" r="1" fill="#1e293b" data-v-cd328987></circle><ellipse cx="100" cy="50" rx="3" ry="10" fill="#64748b" stroke="#334155" stroke-width="1" data-v-cd328987></ellipse><circle cx="100" cy="45" r="1" fill="#1e293b" data-v-cd328987></circle><circle cx="100" cy="55" r="1" fill="#1e293b" data-v-cd328987></circle><ellipse cx="50" cy="0" rx="10" ry="3" fill="#64748b" stroke="#334155" stroke-width="1" data-v-cd328987></ellipse><circle cx="45" cy="0" r="1" fill="#1e293b" data-v-cd328987></circle><circle cx="55" cy="0" r="1" fill="#1e293b" data-v-cd328987></circle><ellipse cx="50" cy="100" rx="10" ry="3" fill="#64748b" stroke="#334155" stroke-width="1" data-v-cd328987></ellipse><circle cx="45" cy="100" r="1" fill="#1e293b" data-v-cd328987></circle><circle cx="55" cy="100" r="1" fill="#1e293b" data-v-cd328987></circle></g>',1)),t.value?(e.openBlock(),e.createElementBlock("g",b1,[e.createElementVNode("defs",null,[e.createElementVNode("marker",{id:`arrow-${o.value}`,markerWidth:"8",markerHeight:"8",refX:"6",refY:"3",orient:"auto"},[e.createElementVNode("path",{d:"M0,0 L0,6 L6,3 z",fill:a.value},null,8,E1)],8,k1)]),e.createElementVNode("line",{x1:"20",y1:"50",x2:"35",y2:"50",stroke:a.value,"stroke-width":"2","marker-end":`url(#arrow-${o.value})`},null,8,N1),c.value?(e.openBlock(),e.createElementBlock("line",{key:0,x1:"50",y1:"35",x2:"50",y2:"20",stroke:a.value,"stroke-width":"2","marker-end":`url(#arrow-${o.value})`},null,8,V1)):e.createCommentVNode("",!0),d.value?(e.openBlock(),e.createElementBlock("line",{key:1,x1:"50",y1:"65",x2:"50",y2:"80",stroke:a.value,"stroke-width":"2","marker-end":`url(#arrow-${o.value})`},null,8,x1)):e.createCommentVNode("",!0)])):e.createCommentVNode("",!0),e.createElementVNode("g",w1,[$[2]||($[2]=e.createElementVNode("circle",{cx:"0",cy:"0",r:"6",fill:"#0f172a",stroke:"#475569","stroke-width":"1"},null,-1)),e.createElementVNode("circle",{cx:"0",cy:"0",r:"3",fill:t.value?"#22c55e":"#64748b"},null,8,$1)])])),e.createElementVNode("div",{class:e.normalizeClass(["status-text",{"is-flowing":t.value}])},e.toDisplayString(t.value?"流动中":"关闭"),3)]))}}),[["__scopeId","data-v-cd328987"]]);class _1{constructor(){ke(this,"animations",new Map)}startAnimation(l,o){if(!l||o.type==="none")return;this.stopAnimation(l.id);const r=l.id;let t=null;switch(o.type){case"blink":t=this.createBlinkAnimation(l,o);break;case"scale":t=this.createScaleAnimation(l,o);break;case"rotate":t=this.createRotateAnimation(l,o);break;case"float":t=this.createFloatAnimation(l,o);break;case"pulse":t=this.createPulseAnimation(l,o);break}t&&this.animations.set(r,t)}stopAnimation(l){const o=this.animations.get(l);o&&(o.stop&&o.stop(),o.intervalId&&clearInterval(o.intervalId),this.animations.delete(l))}createBlinkAnimation(l,o){const r=l.getAttrByPath("body/opacity")||1;let t=!0;const a=setInterval(()=>{t=!t,l.setAttrByPath("body/opacity",t?r:.2),o.loop||(clearInterval(a),l.setAttrByPath("body/opacity",r))},o.duration/2);return{intervalId:a,stop:()=>{clearInterval(a),l.setAttrByPath("body/opacity",r)}}}createScaleAnimation(l,o){const r=l.getSize();let t=!0;const a=.05;let c=1;const d=setInterval(()=>{t?(c+=a,c>=1.2&&(t=!1)):(c-=a,c<=.8&&(t=!0)),l.resize(r.width*c,r.height*c),!o.loop&&c>=.99&&c<=1.01&&(clearInterval(d),l.resize(r.width,r.height))},o.duration/20);return{intervalId:d,stop:()=>{clearInterval(d),l.resize(r.width,r.height)}}}createRotateAnimation(l,o){let r=0;const t=360/(o.duration/50),a=setInterval(()=>{r=(r+t)%360,l.rotate(r,{absolute:!0}),!o.loop&&r>=360&&(clearInterval(a),l.rotate(0,{absolute:!0}))},50);return{intervalId:a,stop:()=>{clearInterval(a),l.rotate(0,{absolute:!0})}}}createFloatAnimation(l,o){const r=l.position();let t=!0;const a=2;let c=r.y;const d=setInterval(()=>{t?(c-=a,c<=r.y-10&&(t=!1)):(c+=a,c>=r.y+10&&(t=!0)),l.position(r.x,c),!o.loop&&Math.abs(c-r.y)<1&&(clearInterval(d),l.position(r.x,r.y))},o.duration/40);return{intervalId:d,stop:()=>{clearInterval(d),l.position(r.x,r.y)}}}createPulseAnimation(l,o){const r=l.getAttrByPath("body/fill"),t=l.getAttrByPath("body/stroke");let a=0,c=!0;const d=setInterval(()=>{c?(a+=.1,a>=1&&(c=!1)):(a-=.1,a<=0&&(c=!0)),l.setAttrByPath("body/opacity",.5+a*.5),!o.loop&&a<=.05&&(clearInterval(d),l.setAttrByPath("body/fill",r),l.setAttrByPath("body/stroke",t),l.setAttrByPath("body/opacity",1))},o.duration/20);return{intervalId:d,stop:()=>{clearInterval(d),l.setAttrByPath("body/fill",r),l.setAttrByPath("body/stroke",t),l.setAttrByPath("body/opacity",1)}}}clearAll(){this.animations.forEach((l,o)=>{this.stopAnimation(o)}),this.animations.clear()}}const se=new _1,v1={class:"scada-layout","data-scada-theme":"dark"},B1={class:"scada-canvas-container"},St=P(e.defineComponent({name:"ScadaCanvas",inheritAttrs:!0,__name:"ScadaCanvas",props:{authCode:{default:""},customFooter:{default:void 0},previewMode:{type:Boolean,default:!1},onSave:{type:Function,default:void 0},deviceData:{default:()=>({})},dataSource:{default:()=>({})}},emits:["preview"],setup(s,{expose:l,emit:o}){const r=s,t=o,a=e.ref(null),c=e.ref(null),d=e.ref(null),p=e.ref(0),f=e.ref(null),m=e.ref(!1);let n=null;const u=()=>{var q,Z;const b=(Z=(q=a.value)==null?void 0:q.containerRef)==null?void 0:Z.parentElement;if(!b)return 1;const V=W.getConfig(),_=V.size.width,B=V.size.height,A=b.clientWidth,H=b.clientHeight,L=40,j=A-L,Y=H-L,X=j/_,O=Y/B;return Math.min(X,O,1)};e.onMounted(()=>{var Y,X;if(!((Y=a.value)!=null&&Y.containerRef))return;const b=W.getConfig();ee.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),ne({shape:"echarts-vue",width:300,height:300,component:wp,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"}]}}),ne({shape:"echarts-line-vue",width:400,height:300,component:$p,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"}]}}),ne({shape:"light-3d-vue",width:100,height:120,component:jp,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"}]}}),ne({shape:"switch-3d-vue",width:140,height:100,component:im,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"}]}}),ne({shape:"motor-3d-vue",width:140,height:110,component:Em,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"}]}}),ne({shape:"valve-3d-vue",width:100,height:140,component:Am,ports:{groups:{top:{position:"top",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"}}}},items:[{id:"port-top",group:"top"},{id:"port-bottom",group:"bottom"}]}}),ne({shape:"tank-3d-vue",width:120,height:160,component:Zm,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"}}}},items:[{id:"port-top",group:"top"},{id:"port-right",group:"right"},{id:"port-bottom",group:"bottom"}]}}),ne({shape:"pump-3d-vue",width:160,height:120,component:Nf,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"}]}}),ne({shape:"conveyor-3d-vue",width:220,height:100,component:Pf,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"}]}}),ne({shape:"alarm-light-3d-vue",width:100,height:120,component:l0,ports:{groups:{bottom:{position:"bottom",attrs:{circle:{r:4,magnet:!0,stroke:"#31d0c6",strokeWidth:2,fill:"#fff"}}}},items:[{id:"port-bottom",group:"bottom"}]}}),ne({shape:"temperature-sensor-3d-vue",width:100,height:140,component:k0,ports:{groups:{bottom:{position:"bottom",attrs:{circle:{r:4,magnet:!0,stroke:"#31d0c6",strokeWidth:2,fill:"#fff"}}}},items:[{id:"port-bottom",group:"bottom"}]}}),ne({shape:"cylinder-3d-vue",width:80,height:160,component:M0,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"}]}}),ne({shape:"pipe-3d-vue",width:220,height:60,component:uu,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"}]}}),ne({shape:"filter-3d-vue",width:140,height:120,component:Iu,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"}]}}),ne({shape:"heat-exchanger-3d-vue",width:160,height:140,component:o1,ports:{groups:{top:{position:"top",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"}}},right:{position:"right",attrs:{circle:{r:4,magnet:!0,stroke:"#31d0c6",strokeWidth:2,fill:"#fff"}}}},items:[{id:"port-top",group:"top"},{id:"port-bottom",group:"bottom"},{id:"port-left",group:"left"},{id:"port-right",group:"right"}]}}),ne({shape:"tee-3d-vue",width:120,height:120,component:C1,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"}}},top:{position:"top",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"}}}},items:[{id:"port-left",group:"left"},{id:"port-right",group:"right"},{id:"port-top",group:"top"},{id:"port-bottom",group:"bottom"}]}}),console.log("[Vue Shape] 所有3D仿真组件节点注册成功");const V=a.value.containerRef,_=b.size.width,B=b.size.height,A=O=>{V.style.width=`${_}px`,V.style.height=`${B}px`,V.style.transform=`scale(${O})`,V.style.transformOrigin="center center",W.updateByPath("zoom.scale",Number(O.toFixed(2)))},H=u();A(H);const L=()=>{const O=u();A(O)};if(window.addEventListener("resize",L),n=new ee.Graph({container:V,width:_,height:B,background:b.background.image?{color:b.background.color||"#1e293b",image:b.background.image,size:b.background.size||"cover",repeat:b.background.repeat||"no-repeat",position:"center"}:{color:b.background.color||"#1e293b"},grid:b.grid.enabled?{size:b.grid.size,visible:!0,type:b.grid.type||"dot",args:{color:b.grid.color||"#475569",thickness:1}}:!1,interacting:{nodeMovable:!r.previewMode},panning:{enabled:!0,modifiers:"shift"},mousewheel:{enabled:!0,modifiers:["ctrl","meta"]},connecting:{router:{name:"orth",args:{padding:10}},connector:{name:"rounded",args:{radius:8}},snap:b.magnetism.enabled?{radius:b.magnetism.threshold||10}:!1,allowBlank:!1,allowLoop:!1,allowNode:!1,allowEdge:!1,highlight:!0,createEdge(){return n.createEdge({shape:"animated-edge",zIndex:0})},validateConnection({targetMagnet:O}){return!!O}}}),r.previewMode||n.use(new Ke.Selection({enabled:!0,movable:!0,rubberband:!0,showNodeSelectionBox:!1,showEdgeSelectionBox:!1,multiple:!0,pointerEvents:"none"})),b.guides.enabled&&n.use(new zt.Snapline({enabled:!0,sharp:!0,clean:!0})),!r.previewMode){const O=Re(de.SCADA_EDITOR_DATA);if(((X=O==null?void 0:O.cells)==null?void 0:X.length)>0)try{const J=O.cells.map(q=>{var Z;return q.position&&typeof q.position=="object"&&(typeof q.position.x!="number"||typeof q.position.y!="number")&&(q.position={x:100,y:100}),(q.shape==="edge"||q.shape==="animated-edge")&&(q.router==="manhattan"||((Z=q.router)==null?void 0:Z.name)==="manhattan")&&(q.router={name:"orth",args:{padding:10}}),q});n.fromJSON({cells:J}),n.getEdges().forEach(q=>{var K;const Z=q.getData();(K=Z==null?void 0:Z.animation)!=null&&K.enabled&&y(q,Z.animation)})}catch(J){console.error("恢复画布数据失败,清空缓存:",J),sessionStorage.removeItem(de.SCADA_EDITOR_DATA)}}n.on("selection:changed",({selected:O})=>{var q,Z;const J=O?O.filter(K=>K.isNode()):[];if(p.value=J.length,O&&O.length>0){const K=O[0];if(K.isNode())c.value=K,d.value=null;else if(K.isEdge()){d.value=K,c.value=null;const ge=K.getAttrs();K.data={...K.data,originalAttrs:ge},K.attr("line/stroke","#3b82f6")}}else{if(d.value&&((q=d.value.data)!=null&&q.originalAttrs)){const K=d.value.data.originalAttrs;d.value.attr("line/stroke",((Z=K.line)==null?void 0:Z.stroke)||"#10b981")}c.value=null,d.value=null}}),n.on("edge:click",({edge:O})=>{n.select(O)}),n.on("blank:click",()=>{d.value=null,c.value=null}),n.on("node:change:position",()=>{}),n.on("node:change:size",()=>{}),n.on("node:change:data",({node:O})=>{const J=O.getData();if(J.animation)if(J.animation.enabled===!0){const q={type:J.animation.type||"none",duration:J.animation.duration||1e3,loop:J.animation.loop!==!1};se.startAnimation(O,q)}else se.stopAnimation(O.id)}),n.on("edge:change:data",({edge:O})=>{const J=O.getData();J!=null&&J.animation&&y(O,J.animation)});const j=O=>{if(O.key==="Delete"&&n){if(c.value){const J=c.value.id;se.stopAnimation(J),n.removeNode(J),c.value=null}else if(d.value){const J=d.value.id;n.removeEdge(J),d.value=null}}};document.addEventListener("keydown",j),e.onUnmounted(()=>{document.removeEventListener("keydown",j),window.removeEventListener("resize",L)})}),e.onUnmounted(()=>{if(n){se.clearAll();const b={cells:n.toJSON().cells};Le(de.SCADA_EDITOR_DATA,b),n.dispose()}}),e.watch(()=>W.getConfig(),b=>{var _;if(!n)return;b.background.image?n.drawBackground({color:b.background.color||"#1e293b",image:b.background.image,size:b.background.size||"cover",repeat:b.background.repeat||"no-repeat",position:"center"}):n.drawBackground({color:b.background.color||"#1e293b"});const V=(_=a.value)==null?void 0:_.containerRef;if(V){n.resize(b.size.width,b.size.height),V.style.width=`${b.size.width}px`,V.style.height=`${b.size.height}px`;const B=u(),A=b.zoom.scale>B?b.zoom.scale:B;V.style.transform=`scale(${A})`,V.style.transformOrigin="center center"}b.grid.enabled?(n.drawGrid({type:b.grid.type||"dot",args:{color:b.grid.color||"#475569",thickness:1}}),n.showGrid()):n.hideGrid(),b.grid.enabled&&b.grid.size&&n.setGridSize(b.grid.size),n.translate(b.offset.x,b.offset.y)},{deep:!0});const h=e.ref({}),i=(b,V)=>(h.value[b]||(h.value[b]=0),h.value[b]++,`${V}_${h.value[b]}`),g=b=>{var j,Y,X,O;if(!n)return;const V=he.getComponent(b);if(!V){console.error(`未找到组件配置: ${b}`);return}const _=i(b,V.metadata.name),B={enabled:!1,type:"none",duration:1e3,loop:!0},A=Ct(50,50,400,300),H={x:A.x,y:A.y,shape:V.shape,width:V.width,height:V.height,label:V.label,attrs:V.attrs,ports:V.ports,data:{...V.data,componentType:b,componentName:_,props:V.props,animation:B,originalStroke:((Y=(j=V.attrs)==null?void 0:j.body)==null?void 0:Y.stroke)||"#2563eb",originalStrokeWidth:((O=(X=V.attrs)==null?void 0:X.body)==null?void 0:O.strokeWidth)||2}},L=n.addNode(H);console.log("[Node] 添加节点:",V.shape,L.id,H),n.cleanSelection(),n.select(L)},$=b=>{if(c.value&&(b.attrs&&Object.keys(b.attrs).forEach(V=>{const _=b.attrs[V];typeof _=="object"?Object.keys(_).forEach(B=>{c.value.attr(`${V}/${B}`,_[B])}):c.value.attr(V,_)}),b.position&&(typeof b.position.x=="number"&&typeof b.position.y=="number"?c.value.setPosition(b.position):console.error("position 数据格式错误:",b.position)),b.size&&(typeof b.size.width=="number"&&typeof b.size.height=="number"?c.value.setSize(b.size):console.error("size 数据格式错误:",b.size)),b.data)){const V={...b.data};delete V.position,delete V.size,c.value.setData(V)}},D=()=>{if(!c.value||!n)return;const b=c.value.id;se.stopAnimation(b),n.removeNode(b),c.value=null},x=b=>{if(d.value){if(b.attrs){Object.keys(b.attrs).forEach(B=>{const A=b.attrs[B];typeof A=="object"?Object.keys(A).forEach(H=>{var L,j;d.value.attr(`${B}/${H}`,A[H]),(j=(L=d.value.data)==null?void 0:L.originalAttrs)!=null&&j[B]&&(d.value.data.originalAttrs[B][H]=A[H])}):d.value.attr(B,A)});const V=d.value.getAttrs(),_=Object.assign({},d.value.data,{originalAttrs:V});d.value.setData(_),d.value.attr("line/stroke","#3b82f6")}b.router&&d.value.setRouter(b.router),b.connector&&d.value.setConnector(b.connector),b.animation&&y(d.value,b.animation),b.data&&d.value.setData(Object.assign({},d.value.data,b.data))}},k=()=>{!d.value||!n||(n.removeEdge(d.value.id),d.value=null)},y=(b,V)=>{if(!b||typeof b.attr!="function"){console.warn("applyEdgeAnimation: edge 对象无效",b);return}if(!V||!V.enabled){b.attr("line/strokeDasharray",void 0),typeof b.removeAttr=="function"&&b.removeAttr("line/class"),b.attr("circle",void 0),typeof b.stopTransition=="function"&&b.stopTransition("attrs/circle/atConnectionRatio");return}const _=V.duration||2e3;b.attr("circle",{r:4,atConnectionRatio:0,fill:{type:"radialGradient",stops:[{offset:"0%",color:"#FFF"},{offset:"100%",color:b.attr("line/stroke")||"#10b981"}]},stroke:b.attr("line/stroke")||"#10b981",strokeWidth:1});const B=()=>{b.attr("circle/atConnectionRatio",0,{silent:!0}),b.transition("attrs/circle/atConnectionRatio",1,{delay:0,duration:_,timing:"linear",complete:()=>{B()}})};B()},E=()=>{n&&confirm("确定要清空画布吗?")&&(se.clearAll(),n.clearCells(),c.value=null,Ue(de.SCADA_EDITOR_DATA))},N=()=>{if(!n)return;const b=W.getConfig().zoom.scale,V=Math.min(5,b+.1);W.setZoom(V)},z=()=>{if(!n)return;const b=W.getConfig().zoom.scale,V=Math.max(.1,b-.1);W.setZoom(V)},F=()=>{if(!n)return;const b=n.getSelectedCells().filter(_=>_.isNode());if(b.length<2){Q("请选择至少两个节点","warning");return}const V=Math.min(...b.map(_=>_.getPosition().x));b.forEach(_=>{_.setPosition({x:V,y:_.getPosition().y})})},U=()=>{if(!n)return;const b=n.getSelectedCells().filter(B=>B.isNode());if(b.length<2){Q("请选择至少两个节点","warning");return}const V=b.map(B=>B.getPosition().x+B.getSize().width/2),_=V.reduce((B,A)=>B+A,0)/V.length;b.forEach(B=>{const A=_-B.getSize().width/2;B.setPosition({x:A,y:B.getPosition().y})})},v=()=>{if(!n)return;const b=n.getSelectedCells().filter(_=>_.isNode());if(b.length<2){Q("请选择至少两个节点","warning");return}const V=Math.max(...b.map(_=>_.getPosition().x+_.getSize().width));b.forEach(_=>{const B=V-_.getSize().width;_.setPosition({x:B,y:_.getPosition().y})})},S=()=>{if(!n)return;const b=n.getSelectedCells().filter(_=>_.isNode());if(b.length<2){Q("请选择至少两个节点","warning");return}const V=Math.min(...b.map(_=>_.getPosition().y));b.forEach(_=>{_.setPosition({x:_.getPosition().x,y:V})})},M=()=>{if(!n)return;const b=n.getSelectedCells().filter(B=>B.isNode());if(b.length<2){Q("请选择至少两个节点","warning");return}const V=b.map(B=>B.getPosition().y+B.getSize().height/2),_=V.reduce((B,A)=>B+A,0)/V.length;b.forEach(B=>{const A=_-B.getSize().height/2;B.setPosition({x:B.getPosition().x,y:A})})},te=()=>{if(!n)return;const b=n.getSelectedCells().filter(_=>_.isNode());if(b.length<2){Q("请选择至少两个节点","warning");return}const V=Math.max(...b.map(_=>_.getPosition().y+_.getSize().height));b.forEach(_=>{const B=V-_.getSize().height;_.setPosition({x:_.getPosition().x,y:B})})},ae=()=>{if(!n)return;const b=n.getSelectedCells().filter(L=>L.isNode());if(b.length<3){Q("请选择至少三个节点","warning");return}const V=b.sort((L,j)=>L.getPosition().x-j.getPosition().x),_=V[0],H=(V[V.length-1].getPosition().x-_.getPosition().x)/(V.length-1);V.forEach((L,j)=>{if(j===0||j===V.length-1)return;const Y=_.getPosition().x+H*j;L.setPosition({x:Y,y:L.getPosition().y})})},ue=()=>{if(!n)return;const b=n.getSelectedCells().filter(L=>L.isNode());if(b.length<3){Q("请选择至少三个节点","warning");return}const V=b.sort((L,j)=>L.getPosition().y-j.getPosition().y),_=V[0],H=(V[V.length-1].getPosition().y-_.getPosition().y)/(V.length-1);V.forEach((L,j)=>{if(j===0||j===V.length-1)return;const Y=_.getPosition().y+H*j;L.setPosition({x:L.getPosition().x,y:Y})})},Ne=async()=>{if(!n){Q("画布未初始化","error");return}try{if(console.log("[ScadaCanvas] handleSave 被调用"),console.log("[ScadaCanvas] props.onSave:",r.onSave),r.onSave){console.log("[ScadaCanvas] 调用自定义 onSave 回调");const H=r.onSave();H instanceof Promise&&await H,console.log("[ScadaCanvas] 自定义 onSave 回调执行完成");return}console.log("[ScadaCanvas] 没有自定义回调,执行默认下载");const b={version:"1.0.0",timestamp:new Date().toISOString(),config:{size:W.getConfig().size,background:W.getConfig().background,grid:W.getConfig().grid,guides:W.getConfig().guides,magnetism:W.getConfig().magnetism,zoom:W.getConfig().zoom},cells:n.toJSON().cells},V=new Blob([JSON.stringify(b,null,2)],{type:"application/json"}),_=URL.createObjectURL(V),B=document.createElement("a"),A=`scada-canvas-${new Date().getTime()}.json`;B.href=_,B.download=A,B.click(),URL.revokeObjectURL(_),Q("保存成功","success")}catch(b){console.error("保存失败",b),Q("保存失败,请查看控制台","error")}},re=()=>{f.value&&f.value.click()},qe=b=>{var A;const _=(A=b.target.files)==null?void 0:A[0];if(!_){Q("请选择文件","error");return}const B=new FileReader;B.onload=H=>{var L;try{const j=JSON.parse((L=H.target)==null?void 0:L.result);if(!j.cells){Q("无效的JSON文件格式","error");return}if(!confirm("导入将清空当前画布,是否继续?"))return;if(n){if(n.clearCells(),n.fromJSON({cells:j.cells}),n.getEdges().forEach(Y=>{var O;const X=Y.getData();(O=X==null?void 0:X.animation)!=null&&O.enabled&&y(Y,X.animation)}),j.config&&W.updateConfig(j.config),j.workflows&&Array.isArray(j.workflows)&&j.workflows.length>0)try{const Y=localStorage.getItem("saved-workflows"),X=Y?JSON.parse(Y):[];let O=0,J=0;j.workflows.forEach(q=>{const Z=X.findIndex(K=>K.id===q.id);Z>=0?(X[Z]={...q,updatedAt:Date.now()},J++):(X.push(q),O++)}),localStorage.setItem("saved-workflows",JSON.stringify(X)),Q(`导入成功 画布已加载,流程: 新增${O}个,更新${J}个`,"success")}catch(Y){console.error("导入流程数据失败:",Y),Q("画布导入成功, 但流程数据导入失败","warning")}else Q("导入成功","success");f.value&&(f.value.value="")}}catch(j){console.error("导入失败",j),Q("导入失败,JSON格式错误","error"),f.value&&(f.value.value="")}},B.readAsText(_)},Ve=()=>{if(console.log("🎬 [ScadaCanvas] handlePreview 被调用"),!n){console.error("⚠️ [ScadaCanvas] graph 不存在");return}const b={cells:n.toJSON().cells,config:{width:W.getConfig().size.width,height:W.getConfig().size.height,background:W.getConfig().background,grid:W.getConfig().grid}};Le(de.SCADA_PREVIEW_DATA,b),console.log("✅ [ScadaCanvas] 数据已保存到 sessionStorage"),console.log("📤 [ScadaCanvas] 即将触发 preview 事件"),t("preview"),console.log("✅ [ScadaCanvas] preview 事件已触发")},xe=()=>{m.value=!0},we=()=>{if(!n){Q("画布未初始化","error");return}try{const b={version:"1.0.0",timestamp:Fe(Ge()),config:{size:W.getConfig().size,background:W.getConfig().background,grid:W.getConfig().grid,guides:W.getConfig().guides,magnetism:W.getConfig().magnetism,zoom:W.getConfig().zoom},cells:n.toJSON().cells,nodes:n.getNodes().map(B=>({id:B.id,type:B.shape,position:B.getPosition(),size:B.getSize(),label:B.attr("label/text"),data:B.getData()})),edges:n.getEdges().map(B=>({id:B.id,source:B.getSourceCellId(),target:B.getTargetCellId()})),workflows:[]},V=new Set;if(n.getNodes().forEach(B=>{const A=B.getData();A!=null&&A.events&&Array.isArray(A.events)&&A.events.forEach(H=>{var L;H.action==="callProcess"&&((L=H.params)!=null&&L.processId)&&V.add(H.params.processId)})}),V.size>0)try{const B=localStorage.getItem("saved-workflows");if(B){const A=JSON.parse(B);b.workflows=A.filter(H=>V.has(H.id))}}catch(B){console.error("加载流程数据失败:",B)}const _=wt(b,"scada-export");Q(`已导出为 ${_}`,"success")}catch(b){console.error("导出失败",b),Q("导出失败,请查看控制台","error")}};return l({save:Ne,importFile:re,exportFile:we,preview:Ve,workflow:xe,zoomIn:N,zoomOut:z,clearAll:E,alignLeft:F,alignCenter:U,alignRight:v,alignTop:S,alignMiddle:M,alignBottom:te,distributeHorizontal:ae,distributeVertical:ue,addNode:g,updateNode:$,deleteNode:D,getSelectedNode:()=>c.value,selectNode:b=>{if(!n)return!1;const V=n.getCellById(b);return V?(n.select(V),!0):!1},clearSelection:()=>{n&&(n.unselect(n.getSelectedCells()),c.value=null)},getGraph:()=>n,getCanvasData:()=>n?{version:"1.0.0",timestamp:Fe(Ge()),config:W.getConfig(),cells:n.toJSON().cells,nodes:n.getNodes().map(b=>({id:b.id,type:b.shape,position:b.getPosition(),size:b.getSize(),label:b.attr("label/text"),data:b.getData()})),edges:n.getEdges().map(b=>({id:b.id,source:b.getSourceCellId(),target:b.getTargetCellId()}))}:null,loadCanvasData:b=>{if(!n)return!1;try{return n.clearCells(),n.fromJSON({cells:b.cells}),b.config&&W.updateConfig(b.config),n.getEdges().forEach(V=>{var B;const _=V.getData();(B=_==null?void 0:_.animation)!=null&&B.enabled&&y(V,_.animation)}),!0}catch(V){return console.error("加载画布数据失败:",V),!1}},getAllNodes:()=>n?n.getNodes().map(b=>({id:b.id,type:b.shape,position:b.getPosition(),size:b.getSize(),label:b.attr("label/text"),data:b.getData()})):[],getNodeById:b=>{if(!n)return null;const V=n.getCellById(b);if(!V||!V.isNode())return null;const _=V;return{id:_.id,type:_.shape,position:_.getPosition(),size:_.getSize(),label:_.attr("label/text"),data:_.getData()}},getConfigManager:()=>W,updateCanvasConfig:b=>{W.updateConfig(b)},setZoom:b=>{W.setZoom(b)},setCanvasSize:(b,V)=>{W.updateSize({width:b,height:V})},setBackgroundColor:b=>{W.updateBackground({color:b})},updateDeviceData:b=>{n&&(b!=null&&b.devices)&&b.devices.forEach(V=>{var _;(_=V.points)==null||_.forEach(B=>{n&&n.getNodes().forEach(A=>{const H=A.getData();H!=null&&H.bindings&&Object.entries(H.bindings).forEach(([L,j])=>{if(j.deviceId===V.id&&j.dataPoint===B.id){const Y=B.value;if(L==="attrs/text/text")A.attr("text/text",Y);else if(L==="attrs/body/fill")A.attr("body/fill",Y);else{const X=L.split(".");let O=A;for(let q=0;q<X.length-1;q++)O=O[X[q]];const J=X[X.length-1];O&&J&&(O[J]=Y)}}})})})})},getAnimationEngine:()=>se}),(b,V)=>(e.openBlock(),e.createElementBlock("div",v1,[r.previewMode?e.createCommentVNode("",!0):(e.openBlock(),e.createBlock(Ce,{key:0,"selected-nodes-count":p.value,onSave:Ne,onImport:re,onWorkflow:xe,onPreview:Ve,onExport:we,onZoomIn:N,onZoomOut:z,onClearAll:E,onAlignLeft:F,onAlignCenter:U,onAlignRight:v,onAlignTop:S,onAlignMiddle:M,onAlignBottom:te,onDistributeHorizontal:ae,onDistributeVertical:ue},null,8,["selected-nodes-count"])),r.previewMode?e.createCommentVNode("",!0):(e.openBlock(),e.createElementBlock("input",{key:1,ref_key:"fileInputRef",ref:f,type:"file",accept:".json",style:{display:"none"},onChange:qe},null,544)),e.createElementVNode("div",B1,[r.previewMode?e.createCommentVNode("",!0):(e.openBlock(),e.createBlock(Be,{key:0,onAddComponent:g})),e.createVNode(Io,{ref_key:"canvasAreaRef",ref:a},null,512),r.previewMode?e.createCommentVNode("",!0):(e.openBlock(),e.createBlock(je,{key:1,ref:"propertyPanelRef","selected-node":c.value,"selected-edge":d.value,"device-data":r.deviceData,onUpdateNode:$,onDeleteNode:D,onUpdateEdge:x,onDeleteEdge:k},null,8,["selected-node","selected-edge","device-data"]))]),e.createVNode(Od,{"auth-code":s.authCode,"custom-footer":s.customFooter},null,8,["auth-code","custom-footer"]),r.previewMode?e.createCommentVNode("",!0):(e.openBlock(),e.createBlock(xp,{key:2,visible:m.value,"onUpdate:visible":V[0]||(V[0]=_=>m.value=_),"scada-graph":e.unref(n),onClose:V[1]||(V[1]=_=>m.value=!1)},null,8,["visible","scada-graph"]))]))}}),[["__scopeId","data-v-95ec124f"]]),S1={class:"preview-container"},D1={class:"preview-canvas-wrapper"},I1=P(e.defineComponent({__name:"PreviewView",setup(s){const l=e.ref(null);let o=null;const r=()=>Re(de.SCADA_PREVIEW_DATA);return e.onMounted(()=>{var a,c,d,p;if(!l.value)return;const t=r();if(!t){console.error("没有找到预览数据");return}o=new ee.Graph({container:l.value,width:((a=t.config)==null?void 0:a.width)||1200,height:((c=t.config)==null?void 0:c.height)||800,background:((d=t.config)==null?void 0:d.background)||{color:"#1e293b"},grid:((p=t.config)==null?void 0:p.grid)||!1,interacting:{nodeMovable:!1,edgeMovable:!1,edgeLabelMovable:!1,arrowheadMovable:!1,vertexMovable:!1,vertexAddable:!1,vertexDeletable:!1},panning:!1,mousewheel:!1}),t.cells&&(o.fromJSON(t.cells),o.getNodes().forEach(m=>{xt(o,m);const n=m.getData();if(n&&n.animation&&n.animation.enabled===!0){const u={type:n.animation.type||"none",duration:n.animation.duration||1e3,loop:n.animation.loop!==!1};se.startAnimation(m,u)}})),console.log("预览模式已加载",t)}),e.onUnmounted(()=>{se.clearAll(),o&&o.dispose(),Ue(de.SCADA_PREVIEW_DATA)}),(t,a)=>(e.openBlock(),e.createElementBlock("div",S1,[e.createElementVNode("div",D1,[e.createElementVNode("div",{ref_key:"canvasContainer",ref:l,class:"preview-canvas"},null,512)])]))}}),[["__scopeId","data-v-9ad415d1"]]),T1={ScadaCanvas:St,PropertyPanel:je,Header:Ce,ComponentLibrary:Be,CanvasConfigPanel:Se,BindingCard:ze,EventCard:Ie,BasicPropertiesTab:De,AttributeConfigDialog:Me,CustomCodeDialog:Ae},Dt=s=>{Object.entries(T1).forEach(([l,o])=>{s.component(l,o)})},z1={install:Dt,version:"1.0.0"};I.AttributeConfigDialog=Me,I.BasicComponents=mo,I.BasicPropertiesTab=De,I.BindingCard=ze,I.CanvasConfigPanel=Se,I.ComponentLibrary=Be,I.CustomCodeDialog=Ae,I.DeviceStatus=me,I.DeviceType=fe,I.EventCard=Ie,I.Header=Ce,I.IoTComponents=go,I.PointAccessMode=le,I.PointDataType=oe,I.PreviewView=I1,I.PropertyPanel=je,I.STORAGE_KEYS=de,I.ScadaCanvas=St,I.animationEngine=se,I.canvasConfigItems=yo,I.canvasConfigManager=W,I.componentRegistry=he,I.default=z1,I.defaultCanvasConfig=ve,I.exportToJSON=wt,I.formatTimestamp=Fe,I.generateEventId=$t,I.generateNodeId=nd,I.generateUniqueId=We,I.getCurrentTimestamp=Ge,I.install=Dt,I.loadFromLocal=od,I.loadFromSession=Re,I.randomPosition=Ct,I.registerNodeEvents=xt,I.removeFromLocal=ld,I.removeFromSession=Ue,I.saveToLocal=td,I.saveToSession=Le,I.showMessage=Q,I.sizePresetMap=ye,Object.defineProperties(I,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}})});
62
+ 是否继续保存?`,!confirm(D))return}const E=prompt("请输入流程名称:","未命名流程");if(!E||!E.trim())return;const I=n.toJSON(),x=n.getNodes().map(D=>({id:D.id,shape:D.shape,position:D.getPosition(),size:D.getSize(),attrs:D.getAttrs(),data:D.getData()})),V=n.getEdges().map(D=>({id:D.id,source:D.getSourceCellId(),target:D.getTargetCellId(),attrs:D.getAttrs(),data:D.getData()})),C={id:"workflow_"+Date.now(),name:E.trim(),data:{...I,nodes:x,edges:V},createdAt:Date.now(),updatedAt:Date.now()};try{const D=localStorage.getItem("saved-workflows"),A=D?JSON.parse(D):[];A.push(C),localStorage.setItem("saved-workflows",JSON.stringify(A)),alert("✓ 流程保存成功!"),console.log("流程已保存:",C)}catch(D){console.error("保存流程失败:",D),alert("保存失败,请重试")}};e.onMounted(()=>{d(),window.addEventListener("resize",y)});const y=()=>{!n||!l.value||n.resize(l.value.clientWidth,l.value.clientHeight)};return e.onBeforeUnmount(()=>{window.removeEventListener("resize",y);const k=_=>{if(_.key==="Delete"||_.key==="Backspace"){if(!n)return;const E=n.getSelectedCells();E.length&&(_.preventDefault(),n.removeCells(E),o.value&&E.includes(o.value.cell)&&(o.value=null))}};document.removeEventListener("keydown",k),n&&n.dispose()}),(k,_)=>(e.openBlock(),e.createElementBlock("div",v2,[e.createVNode(f2,{"show-close":u.showClose,onClear:p,onValidate:v,onSave:S,onClose:_[0]||(_[0]=E=>k.$emit("close"))},null,8,["show-close"]),e.createElementVNode("div",k2,[e.createElementVNode("div",_2,[e.createElementVNode("div",{id:"workflow-container",ref_key:"containerRef",ref:l},null,512)]),e.createVNode(c2,{"selected-cell":o.value,"onUpdate:label":m},null,8,["selected-cell"])]),e.createVNode(w2,{visible:i.value,position:a.value,"node-types":t.value,onClose:_[1]||(_[1]=E=>i.value=!1),onSelect:h},null,8,["visible","position","node-types"])]))}}),[["__scopeId","data-v-649349a2"]]),x2={key:0,class:"workflow-dialog-overlay"},S2={class:"workflow-dialog"},V2=Me(e.defineComponent({__name:"WorkflowDialog",props:{visible:{type:Boolean},scadaGraph:{default:null}},emits:["update:visible","close"],setup(u,{emit:r}){const t=u,l=r;e.watch(()=>t.visible,i=>{i?document.body.style.overflow="hidden":document.body.style.overflow=""});const n=()=>{l("update:visible",!1),l("close")},o=i=>{i.key==="Escape"&&t.visible&&n()};return typeof window<"u"&&window.addEventListener("keydown",o),(i,a)=>u.visible?(e.openBlock(),e.createElementBlock("div",x2,[e.createElementVNode("div",S2,[e.createVNode(N2,{"scada-graph":u.scadaGraph,"show-close":!0,onClose:n},null,8,["scada-graph"])])])):e.createCommentVNode("",!0)}}),[["__scopeId","data-v-4e7f6ab7"]]),C2={class:"dialog-container"},I2={class:"dialog-body"},A2={class:"datasource-list-panel"},$2={class:"datasource-list"},T2={key:0,class:"empty-hint"},B2=["onClick"],D2={class:"datasource-header"},P2={class:"datasource-info"},O2={class:"datasource-name"},M2={class:"datasource-type"},R2=["title"],j2={class:"datasource-meta"},L2={class:"device-count"},U2={class:"datasource-detail-panel"},F2={key:0,class:"empty-state"},z2={key:1,class:"detail-content"},W2={class:"detail-header"},q2={class:"detail-actions"},G2={class:"detail-form"},H2={class:"form-section"},K2={class:"form-item"},Q2={class:"form-item"},Y2=["disabled"],J2={class:"form-item"},X2={class:"switch"},Z2={key:0,class:"form-section"},e_={class:"form-item"},t_={class:"form-item"},r_={class:"form-item"},o_={class:"form-item"},n_={class:"form-item"},i_={key:1,class:"form-section"},s_={class:"form-item"},a_={key:2,class:"form-section"},l_={class:"form-item"},c_={class:"form-item"},d_={class:"form-item"},u_={key:3,class:"form-section"},f_={class:"form-item"},p_={class:"form-item"},h_={key:4,class:"form-section"},m_={class:"device-list"},g_={class:"device-info"},y_={class:"device-name"},b_={class:"device-id"},w_={class:"point-count"},E_={key:5,class:"form-section"},v_={class:"status-info"},k_={class:"status-row"},__={key:0,class:"status-row"},N_={class:"status-value"},x_={key:1,class:"status-row error"},S_={class:"status-value"},V_=Me(e.defineComponent({__name:"DataSourceDialog",props:{dataSources:{}},emits:["close","save","delete","add"],setup(u,{emit:r}){const t=r,l=e.ref(null),n=e.ref(!1),o=e.ref({name:"",type:"MQTT",enabled:!0,config:{broker:"",topic:"",clientId:"",username:"",password:"",wsUrl:"",url:"",method:"GET",pollInterval:5e3,sseUrl:"",eventType:""}}),i=m=>{l.value=m,n.value=!1,o.value={name:m.name,type:m.type,enabled:m.enabled,config:{...m.config}}},a=()=>{l.value=null,n.value=!0,o.value={name:"",type:"MQTT",enabled:!0,config:{broker:"mqtt://broker.emqx.io",topic:"/devices/+/data",clientId:"scada_"+Date.now(),username:"",password:""}}},s=()=>{if(!o.value.name){alert("请输入数据源名称");return}n.value?(t("add",{name:o.value.name,type:o.value.type,enabled:o.value.enabled,config:o.value.config}),n.value=!1):l.value&&t("save",{...l.value,name:o.value.name,type:o.value.type,enabled:o.value.enabled,config:o.value.config})},c=()=>{l.value&&confirm(`确定要删除数据源"${l.value.name}"吗?`)&&(t("delete",l.value.id),l.value=null,n.value=!1)},d=()=>{t("close")},f=m=>new Date(m).toLocaleString("zh-CN");return(m,h)=>{var p;return e.openBlock(),e.createElementBlock("div",{class:"dialog-overlay",onClick:e.withModifiers(d,["self"])},[e.createElementVNode("div",C2,[e.createElementVNode("div",{class:"dialog-header"},[h[14]||(h[14]=e.createElementVNode("h3",null,"数据源管理",-1)),e.createElementVNode("button",{class:"btn-close",onClick:d},"✕")]),e.createElementVNode("div",I2,[e.createElementVNode("div",A2,[e.createElementVNode("div",{class:"panel-header"},[h[15]||(h[15]=e.createElementVNode("span",null,"数据源列表",-1)),e.createElementVNode("button",{class:"btn-add",onClick:a},"+ 添加")]),e.createElementVNode("div",$2,[u.dataSources.length===0?(e.openBlock(),e.createElementBlock("div",T2," 暂无数据源 ")):e.createCommentVNode("",!0),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(u.dataSources,w=>{var v,S,y;return e.openBlock(),e.createElementBlock("div",{key:w.id,class:e.normalizeClass(["datasource-item",{active:((v=l.value)==null?void 0:v.id)===w.id}]),onClick:k=>i(w)},[e.createElementVNode("div",D2,[e.createElementVNode("div",P2,[e.createElementVNode("span",O2,e.toDisplayString(w.name),1),e.createElementVNode("span",M2,e.toDisplayString(w.type),1)]),e.createElementVNode("span",{class:e.normalizeClass(["status-dot",(S=w.status)!=null&&S.connected?"connected":"disconnected"]),title:(y=w.status)!=null&&y.connected?"已连接":"未连接"},null,10,R2)]),e.createElementVNode("div",j2,[e.createElementVNode("span",L2,e.toDisplayString(w.devices.length)+" 个设备",1)])],10,B2)}),128))])]),e.createElementVNode("div",U2,[!l.value&&!n.value?(e.openBlock(),e.createElementBlock("div",F2,[...h[16]||(h[16]=[e.createElementVNode("p",null,"请选择左侧数据源查看详情",-1)])])):(e.openBlock(),e.createElementBlock("div",z2,[e.createElementVNode("div",W2,[e.createElementVNode("h4",null,e.toDisplayString(n.value?"新建数据源":"数据源详情"),1),e.createElementVNode("div",q2,[n.value?e.createCommentVNode("",!0):(e.openBlock(),e.createElementBlock("button",{key:0,class:"btn-secondary",onClick:c}," 删除 ")),e.createElementVNode("button",{class:"btn-primary",onClick:s},e.toDisplayString(n.value?"创建":"保存"),1)])]),e.createElementVNode("div",G2,[e.createElementVNode("div",H2,[h[22]||(h[22]=e.createElementVNode("h5",null,"基本信息",-1)),e.createElementVNode("div",K2,[h[17]||(h[17]=e.createElementVNode("label",null,"名称",-1)),e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":h[0]||(h[0]=w=>o.value.name=w),type:"text",placeholder:"例如:主机房 MQTT"},null,512),[[e.vModelText,o.value.name]])]),e.createElementVNode("div",Q2,[h[19]||(h[19]=e.createElementVNode("label",null,"类型",-1)),e.withDirectives(e.createElementVNode("select",{"onUpdate:modelValue":h[1]||(h[1]=w=>o.value.type=w),disabled:!n.value},[...h[18]||(h[18]=[e.createElementVNode("option",{value:"MQTT"},"MQTT",-1),e.createElementVNode("option",{value:"WebSocket"},"WebSocket",-1),e.createElementVNode("option",{value:"HTTP"},"HTTP",-1),e.createElementVNode("option",{value:"SSE"},"SSE",-1)])],8,Y2),[[e.vModelSelect,o.value.type]])]),e.createElementVNode("div",J2,[h[21]||(h[21]=e.createElementVNode("label",null,"启用",-1)),e.createElementVNode("label",X2,[e.withDirectives(e.createElementVNode("input",{type:"checkbox","onUpdate:modelValue":h[2]||(h[2]=w=>o.value.enabled=w)},null,512),[[e.vModelCheckbox,o.value.enabled]]),h[20]||(h[20]=e.createElementVNode("span",{class:"slider"},null,-1))])])]),o.value.type==="MQTT"?(e.openBlock(),e.createElementBlock("div",Z2,[h[29]||(h[29]=e.createElementVNode("h5",null,"MQTT 配置",-1)),e.createElementVNode("div",e_,[h[23]||(h[23]=e.createElementVNode("label",null,"Broker 地址",-1)),e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":h[3]||(h[3]=w=>o.value.config.broker=w),type:"text",placeholder:"mqtt://broker.emqx.io 或 ws://broker.emqx.io:8083/mqtt"},null,512),[[e.vModelText,o.value.config.broker]]),h[24]||(h[24]=e.createElementVNode("span",{class:"form-hint"},"💡 浏览器会自动转换为 WebSocket,EMQX 公共服务器使用 8083 端口",-1))]),e.createElementVNode("div",t_,[h[25]||(h[25]=e.createElementVNode("label",null,"订阅主题",-1)),e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":h[4]||(h[4]=w=>o.value.config.topic=w),type:"text",placeholder:"/devices/+/data"},null,512),[[e.vModelText,o.value.config.topic]])]),e.createElementVNode("div",r_,[h[26]||(h[26]=e.createElementVNode("label",null,"客户端 ID",-1)),e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":h[5]||(h[5]=w=>o.value.config.clientId=w),type:"text",placeholder:"自动生成"},null,512),[[e.vModelText,o.value.config.clientId]])]),e.createElementVNode("div",o_,[h[27]||(h[27]=e.createElementVNode("label",null,"用户名",-1)),e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":h[6]||(h[6]=w=>o.value.config.username=w),type:"text",placeholder:"可选"},null,512),[[e.vModelText,o.value.config.username]])]),e.createElementVNode("div",n_,[h[28]||(h[28]=e.createElementVNode("label",null,"密码",-1)),e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":h[7]||(h[7]=w=>o.value.config.password=w),type:"password",placeholder:"可选"},null,512),[[e.vModelText,o.value.config.password]])])])):e.createCommentVNode("",!0),o.value.type==="WebSocket"?(e.openBlock(),e.createElementBlock("div",i_,[h[31]||(h[31]=e.createElementVNode("h5",null,"WebSocket 配置",-1)),e.createElementVNode("div",s_,[h[30]||(h[30]=e.createElementVNode("label",null,"服务地址",-1)),e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":h[8]||(h[8]=w=>o.value.config.wsUrl=w),type:"text",placeholder:"ws://localhost:8080"},null,512),[[e.vModelText,o.value.config.wsUrl]])])])):e.createCommentVNode("",!0),o.value.type==="HTTP"?(e.openBlock(),e.createElementBlock("div",a_,[h[36]||(h[36]=e.createElementVNode("h5",null,"HTTP 配置",-1)),e.createElementVNode("div",l_,[h[32]||(h[32]=e.createElementVNode("label",null,"接口地址",-1)),e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":h[9]||(h[9]=w=>o.value.config.url=w),type:"text",placeholder:"https://api.example.com/data"},null,512),[[e.vModelText,o.value.config.url]])]),e.createElementVNode("div",c_,[h[34]||(h[34]=e.createElementVNode("label",null,"请求方法",-1)),e.withDirectives(e.createElementVNode("select",{"onUpdate:modelValue":h[10]||(h[10]=w=>o.value.config.method=w)},[...h[33]||(h[33]=[e.createElementVNode("option",{value:"GET"},"GET",-1),e.createElementVNode("option",{value:"POST"},"POST",-1)])],512),[[e.vModelSelect,o.value.config.method]])]),e.createElementVNode("div",d_,[h[35]||(h[35]=e.createElementVNode("label",null,"轮询间隔 (ms)",-1)),e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":h[11]||(h[11]=w=>o.value.config.pollInterval=w),type:"number",min:"1000",step:"1000"},null,512),[[e.vModelText,o.value.config.pollInterval,void 0,{number:!0}]])])])):e.createCommentVNode("",!0),o.value.type==="SSE"?(e.openBlock(),e.createElementBlock("div",u_,[h[39]||(h[39]=e.createElementVNode("h5",null,"SSE 配置",-1)),e.createElementVNode("div",f_,[h[37]||(h[37]=e.createElementVNode("label",null,"服务地址",-1)),e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":h[12]||(h[12]=w=>o.value.config.sseUrl=w),type:"text",placeholder:"https://api.example.com/events"},null,512),[[e.vModelText,o.value.config.sseUrl]])]),e.createElementVNode("div",p_,[h[38]||(h[38]=e.createElementVNode("label",null,"事件类型",-1)),e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":h[13]||(h[13]=w=>o.value.config.eventType=w),type:"text",placeholder:"留空表示所有事件"},null,512),[[e.vModelText,o.value.config.eventType]])])])):e.createCommentVNode("",!0),l.value&&l.value.devices.length>0?(e.openBlock(),e.createElementBlock("div",h_,[h[40]||(h[40]=e.createElementVNode("h5",null,"已接收设备",-1)),e.createElementVNode("div",m_,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(l.value.devices,w=>(e.openBlock(),e.createElementBlock("div",{key:w.id,class:"device-item"},[e.createElementVNode("div",g_,[e.createElementVNode("span",y_,e.toDisplayString(w.name),1),e.createElementVNode("span",b_,e.toDisplayString(w.id),1)]),e.createElementVNode("span",w_,e.toDisplayString(w.points.length)+" 个点位",1)]))),128))])])):e.createCommentVNode("",!0),(p=l.value)!=null&&p.status?(e.openBlock(),e.createElementBlock("div",E_,[h[44]||(h[44]=e.createElementVNode("h5",null,"连接状态",-1)),e.createElementVNode("div",v_,[e.createElementVNode("div",k_,[h[41]||(h[41]=e.createElementVNode("span",null,"状态:",-1)),e.createElementVNode("span",{class:e.normalizeClass(["status-badge",l.value.status.connected?"connected":"disconnected"])},e.toDisplayString(l.value.status.connected?"已连接":"未连接"),3)]),l.value.status.lastUpdate?(e.openBlock(),e.createElementBlock("div",__,[h[42]||(h[42]=e.createElementVNode("span",null,"最后更新:",-1)),e.createElementVNode("span",N_,e.toDisplayString(f(l.value.status.lastUpdate)),1)])):e.createCommentVNode("",!0),l.value.status.error?(e.openBlock(),e.createElementBlock("div",x_,[h[43]||(h[43]=e.createElementVNode("span",null,"错误:",-1)),e.createElementVNode("span",S_,e.toDisplayString(l.value.status.error),1)])):e.createCommentVNode("",!0)])])):e.createCommentVNode("",!0)])]))])])])])}}}),[["__scopeId","data-v-b12950a1"]]),C_=["onClick"],I_={key:0,class:"scada-menu-icon"},A_={class:"scada-menu-text"},$_={key:1,class:"scada-menu-hotkey"},T_=e.defineComponent({__name:"ContextMenu",props:{visible:{type:Boolean,default:!1},position:{default:()=>({x:0,y:0})},menuItems:{default:()=>[]}},emits:["update:visible","menu-click"],setup(u,{emit:r}){const t=u,l=r,n=e.ref(),o=e.computed(()=>({position:"fixed",left:t.position.x+"px",top:t.position.y+"px",zIndex:99999,background:"#1f1f1f",border:"1px solid #3c3c3c",borderRadius:"4px",boxShadow:"0 4px 12px rgba(0, 0, 0, 0.5)",minWidth:"180px",padding:"6px 0",userSelect:"none",pointerEvents:"auto",margin:"0",boxSizing:"border-box",color:"#fff",fontSize:"13px"})),i=d=>d.divider?{height:"1px",margin:"4px 8px",padding:"0",backgroundColor:"#3c3c3c",border:"none"}:{display:"flex",alignItems:"center",padding:"6px 12px",fontSize:"13px",color:d.disabled?"#666666":"#fff",cursor:d.disabled?"not-allowed":"pointer",margin:"0",border:"none",lineHeight:"1.2",minHeight:"28px",backgroundColor:"transparent"},a=d=>{var f;d.disabled||d.divider||(l("menu-click",d.key),(f=d.onClick)==null||f.call(d),l("update:visible",!1))},s=d=>{n.value&&!n.value.contains(d.target)&&l("update:visible",!1)},c=()=>{};return e.watch(()=>t.visible,d=>{d?(setTimeout(c,0),setTimeout(()=>{document.addEventListener("click",s,!0),document.addEventListener("contextmenu",s,!0)},50)):(document.removeEventListener("click",s,!0),document.removeEventListener("contextmenu",s,!0))}),e.onUnmounted(()=>{document.removeEventListener("click",s,!0),document.removeEventListener("contextmenu",s,!0)}),(d,f)=>(e.openBlock(),e.createBlock(e.Teleport,{to:"body"},[u.visible?(e.openBlock(),e.createElementBlock("div",{key:0,ref_key:"menuRef",ref:n,class:"scada-context-menu",style:e.normalizeStyle(o.value),onClick:f[0]||(f[0]=e.withModifiers(()=>{},["stop"])),onContextmenu:f[1]||(f[1]=e.withModifiers(()=>{},["prevent"]))},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(u.menuItems,m=>(e.openBlock(),e.createElementBlock("div",{key:m.key,class:e.normalizeClass(["scada-context-menu-item",{disabled:m.disabled,divider:m.divider}]),style:e.normalizeStyle(i(m)),onClick:h=>a(m)},[m.divider?e.createCommentVNode("",!0):(e.openBlock(),e.createElementBlock(e.Fragment,{key:0},[m.icon?(e.openBlock(),e.createElementBlock("span",I_,e.toDisplayString(m.icon),1)):e.createCommentVNode("",!0),e.createElementVNode("span",A_,e.toDisplayString(m.label),1),m.hotkey?(e.openBlock(),e.createElementBlock("span",$_,e.toDisplayString(m.hotkey),1)):e.createCommentVNode("",!0)],64))],14,C_))),128))],36)):e.createCommentVNode("",!0)]))}}),B_={class:"scada-layout","data-scada-theme":"dark"},D_={class:"scada-canvas-container"},ic=Me(e.defineComponent({name:"ScadaCanvas",inheritAttrs:!0,__name:"ScadaCanvas",props:{authCode:{default:""},customFooter:{default:void 0},previewMode:{type:Boolean,default:!1},onSave:{type:Function,default:void 0},deviceData:{default:()=>({})},dataSource:{default:()=>({})}},emits:["preview"],setup(u,{expose:r,emit:t}){const l=u,n=t,o=e.ref(null),i=e.ref(null),a=e.ref(null),s=e.ref(0),c=e.ref(null),d=e.ref(!1),f=e.ref(!1),m=e.ref(!1),h=e.ref(!1);let p=null;const w=e.ref({visible:!1,position:{x:0,y:0},items:[],targetCell:null}),v=e.ref([]),S=e.computed(()=>l.deviceData&&Object.keys(l.deviceData).length>0?l.deviceData:{devices:Ke.getAllDevices().map(te=>({...te.device,_dataSourceId:te.dataSourceId,_dataSourceName:te.dataSourceName}))}),y=()=>{var de,Ae;const O=(Ae=(de=o.value)==null?void 0:de.containerRef)==null?void 0:Ae.parentElement;if(!O)return 1;const te=je.getConfig(),se=te.size.width,j=te.size.height,K=O.clientWidth,ae=O.clientHeight,he=40,pe=K-he,ve=ae-he,Q=pe/se,ye=ve/j;return Math.min(Q,ye,1)};e.onMounted(()=>{var Q,ye;if(!((Q=o.value)!=null&&Q.containerRef))return;const O=je.getConfig(),te=()=>{const ke=window.innerWidth;ke<1024?(m.value=!0,h.value=!0):ke<1440&&(m.value=!0,h.value=!1)};te(),window.addEventListener("resize",te),Le.Graph.registerEdge("animated-edge",{inherit:"edge",markup:[{tagName:"path",selector:"line",attrs:{fill:"none"}},{tagName:"path",selector:"wrap",attrs:{fill:"none",stroke:"rgba(0,0,0,0)",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 se=er.getAllComponents();Object.values(se).forEach(ke=>{ke.component&&xc({shape:ke.shape,width:ke.width,height:ke.height,component:ke.component,ports:ke.ports})});const j=o.value.containerRef,K=O.size.width,ae=O.size.height,he=ke=>{j.style.width=`${K}px`,j.style.height=`${ae}px`,j.style.transform=`scale(${ke})`,j.style.transformOrigin="center center",je.updateByPath("zoom.scale",Number(ke.toFixed(2)))},pe=y();he(pe);const ve=()=>{const ke=y();he(ke)};if(window.addEventListener("resize",ve),p=new Le.Graph({container:j,width:K,height:ae,background:O.background.image?{color:O.background.color||"#1e293b",image:O.background.image,size:O.background.size||"cover",repeat:O.background.repeat||"no-repeat",position:"center"}:{color:O.background.color||"#1e293b"},grid:O.grid.enabled?{size:O.grid.size,visible:!0,type:O.grid.type||"dot",args:{color:O.grid.color||"#475569",thickness:1}}:!1,interacting:{nodeMovable:!l.previewMode},panning:{enabled:!0,modifiers:"shift"},mousewheel:{enabled:!0,modifiers:["ctrl","meta"]},connecting:{router:{name:"orth",args:{padding:10}},connector:{name:"rounded",args:{radius:8}},snap:O.magnetism.enabled?{radius:O.magnetism.threshold||10}:!1,allowBlank:!1,allowLoop:!1,allowNode:!1,allowEdge:!1,highlight:!0,createEdge(){return p.createEdge({shape:"animated-edge",zIndex:0})},validateConnection({targetMagnet:ke}){return!!ke}}}),l.previewMode||p.use(new zt.Selection({enabled:!0,movable:!0,rubberband:!0,showNodeSelectionBox:!1,showEdgeSelectionBox:!1,multiple:!0,pointerEvents:"none"})),O.guides.enabled&&p.use(new mo.Snapline({enabled:!0,sharp:!0,clean:!0})),pt.setGraph(p),cr.setGraph(p),Er.setGraph(p),It.setGraph(p),Zl.setGraph(p),Zl.initDataBinding(),tc.initialize(p,o,y),!l.previewMode){const ke=Ui(ft.SCADA_EDITOR_DATA);if(((ye=ke==null?void 0:ke.cells)==null?void 0:ye.length)>0)try{const de=ke.cells.map(Ae=>{var g;return Ae.position&&typeof Ae.position=="object"&&(typeof Ae.position.x!="number"||typeof Ae.position.y!="number")&&(Ae.position={x:100,y:100}),(Ae.shape==="edge"||Ae.shape==="animated-edge")&&(Ae.router==="manhattan"||((g=Ae.router)==null?void 0:g.name)==="manhattan")&&(Ae.router={name:"orth",args:{padding:10}}),Ae});p.fromJSON({cells:de}),p.getEdges().forEach(Ae=>{var b;const g=Ae.getData();(b=g==null?void 0:g.animation)!=null&&b.enabled&&$(Ae,g.animation)})}catch(de){console.error("恢复画布数据失败,清空缓存:",de),ao(ft.SCADA_EDITOR_DATA)}try{const de=localStorage.getItem("scada-data-sources");if(de){const Ae=JSON.parse(de);Array.isArray(Ae)&&Ae.length>0&&(Ae.forEach(g=>{const b={id:g.id,name:g.name,type:g.type,enabled:g.enabled,config:g.config,devices:[],status:{connected:!1}};Ke.addDataSource(b)}),setTimeout(()=>{v.value=Ke.getAllDataSources()},1500))}}catch(de){console.error("恢复数据源失败:",de)}}ec.initialize(p,{selectedNode:i,selectedEdge:a,selectedNodesCount:s,contextMenu:w,applyEdgeAnimation:$}),e.onUnmounted(()=>{ec.destroy(),window.removeEventListener("resize",ve),window.removeEventListener("resize",te)})}),e.onUnmounted(()=>{if(Ke.disconnectAll(),p){Mt.clearAll();const O={cells:p.toJSON().cells,dataSources:Ke.getAllDataSources().map(te=>({id:te.id,name:te.name,type:te.type,enabled:te.enabled,config:te.config}))};lr(ft.SCADA_EDITOR_DATA,O),p.dispose()}}),e.watch(()=>je.getConfig(),()=>tc.applyConfigChanges(),{deep:!0});const k=O=>{const te=cr.addNode(O);te&&p&&(p.cleanSelection(),p.select(te),lr(ft.SCADA_EDITOR_DATA,p.toJSON()))},_=O=>{i.value&&(cr.updateNode(i.value,O),p&&lr(ft.SCADA_EDITOR_DATA,p.toJSON()))},E=()=>{if(!i.value||!p)return;const O=i.value.id;cr.deleteNode(O),i.value=null,lr(ft.SCADA_EDITOR_DATA,p.toJSON())},I=O=>{a.value&&Er.updateEdge(a.value,O)},x=()=>{a.value&&(Er.deleteEdge(a.value.id),a.value=null)},V=O=>{var se,j;if(!p)return;const te=w.value.targetCell;switch(O){case"delete":te&&(te.isNode()?(cr.deleteNode(te.id),((se=i.value)==null?void 0:se.id)===te.id&&(i.value=null)):te.isEdge()&&(Er.deleteEdge(te.id),((j=a.value)==null?void 0:j.id)===te.id&&(a.value=null)),It.saveToLocal());break;case"copy":if(te!=null&&te.isNode()){const K=cr.cloneNode(te);K&&p&&(p.cleanSelection(),p.select(K),It.saveToLocal())}break;case"to-front":te&&(te.toFront(),It.saveToLocal());break;case"to-back":te&&(te.toBack(),It.saveToLocal());break;case"select-all":p.select(p.getNodes());break;case"clear-all":C();break}},$=(O,te)=>{Er.applyEdgeAnimation(O,te)},C=()=>{p&&confirm("确定要清空画布吗?")&&(Mt.clearAll(),p.clearCells(),i.value=null,It.clearCache(),Xe("画布已清空","success"))},D=()=>pt.zoomIn(),A=()=>pt.zoomOut(),U=()=>pt.alignLeft(),H=()=>pt.alignCenter(),F=()=>pt.alignRight(),ue=()=>pt.alignTop(),ne=()=>pt.alignMiddle(),oe=()=>pt.alignBottom(),fe=()=>pt.distributeHorizontal(),J=()=>pt.distributeVertical(),ie=async()=>{if(!p){Xe("画布未初始化","error");return}try{if(console.log("[ScadaCanvas] handleSave 被调用"),console.log("[ScadaCanvas] props.onSave:",l.onSave),l.onSave){console.log("[ScadaCanvas] 调用自定义 onSave 回调");const te=l.onSave();te instanceof Promise&&await te,console.log("[ScadaCanvas] 自定义 onSave 回调执行完成");return}console.log("[ScadaCanvas] 没有自定义回调,执行默认下载"),It.exportToFile(`scada-canvas-${new Date().getTime()}.json`)?Xe("保存成功","success"):Xe("保存失败","error")}catch(O){console.error("保存失败",O),Xe("保存失败,请查看控制台","error")}},R=()=>{c.value&&c.value.click()},Z=O=>{var K;const se=(K=O.target.files)==null?void 0:K[0];if(!se){Xe("请选择文件","error");return}const j=new FileReader;j.onload=ae=>{var he;try{const pe=JSON.parse((he=ae.target)==null?void 0:he.result);It.importData(pe,Q=>{var ke;const ye=Q.getData();(ke=ye==null?void 0:ye.animation)!=null&&ke.enabled&&$(Q,ye.animation)})&&(v.value=Ke.getAllDataSources()),c.value&&(c.value.value="")}catch(pe){console.error("导入失败",pe),Xe("导入失败,JSON格式错误","error"),c.value&&(c.value.value="")}},j.readAsText(se)},ge=()=>{if(!p){Xe("画布未初始化","error");return}n("preview")},G=()=>{d.value=!0},Ve=()=>{f.value=!0,v.value=Ke.getAllDataSources();const O=setInterval(()=>{if(!f.value){clearInterval(O);return}v.value=Ke.getAllDataSources()},1e3)},ee=()=>{try{const O=Ke.getAllDataSources().map(te=>({id:te.id,name:te.name,type:te.type,enabled:te.enabled,config:te.config}));localStorage.setItem("scada-data-sources",JSON.stringify(O)),console.log("[ScadaCanvas] 数据源配置已保存到 localStorage")}catch(O){console.error("保存数据源失败:",O)}},q=O=>{const te={id:"ds_"+Date.now(),...O,devices:[],status:{connected:!1}};console.log("[ScadaCanvas] 添加数据源:",te),Ke.addDataSource(te),setTimeout(()=>{v.value=Ke.getAllDataSources(),console.log("[ScadaCanvas] 数据源列表已更新:",v.value),ee()},1e3),Xe(`数据源 "${te.name}" 创建成功`,"success")},ce=O=>{Ke.updateDataSource(O.id,O),v.value=Ke.getAllDataSources(),ee(),Xe(`数据源 "${O.name}" 更新成功`,"success")},X=O=>{const te=Ke.getDataSource(O);Ke.removeDataSource(O),v.value=Ke.getAllDataSources(),ee(),Xe(`数据源 "${te==null?void 0:te.name}" 已删除`,"success")},re=()=>{if(!p){Xe("画布未初始化","error");return}try{const O=It.exportToFile("scada-export.json");O?Xe(`已导出为 ${O}`,"success"):Xe("导出失败","error")}catch(O){console.error("导出失败",O),Xe("导出失败,请查看控制台","error")}};return r({save:ie,importFile:R,exportFile:re,preview:ge,workflow:G,zoomIn:D,zoomOut:A,clearAll:C,alignLeft:U,alignCenter:H,alignRight:F,alignTop:ue,alignMiddle:ne,alignBottom:oe,distributeHorizontal:fe,distributeVertical:J,addNode:k,updateNode:_,deleteNode:E,getSelectedNode:()=>i.value,selectNode:O=>{if(!p)return!1;const te=p.getCellById(O);return te?(p.select(te),!0):!1},clearSelection:()=>{p&&(p.unselect(p.getSelectedCells()),i.value=null)},getGraph:()=>p,getCanvasData:()=>p?{version:"1.0.0",timestamp:lo(co()),config:je.getConfig(),cells:p.toJSON().cells,nodes:p.getNodes().map(O=>({id:O.id,type:O.shape,position:O.getPosition(),size:O.getSize(),label:O.attr("label/text"),data:O.getData()})),edges:p.getEdges().map(O=>({id:O.id,source:O.getSourceCellId(),target:O.getTargetCellId()}))}:null,loadCanvasData:O=>{if(!p)return!1;try{return p.clearCells(),p.fromJSON({cells:O.cells}),O.config&&je.updateConfig(O.config),p.getEdges().forEach(te=>{var j;const se=te.getData();(j=se==null?void 0:se.animation)!=null&&j.enabled&&$(te,se.animation)}),!0}catch(te){return console.error("加载画布数据失败:",te),!1}},getAllNodes:()=>p?p.getNodes().map(O=>({id:O.id,type:O.shape,position:O.getPosition(),size:O.getSize(),label:O.attr("label/text"),data:O.getData()})):[],getNodeById:O=>{if(!p)return null;const te=p.getCellById(O);if(!te||!te.isNode())return null;const se=te;return{id:se.id,type:se.shape,position:se.getPosition(),size:se.getSize(),label:se.attr("label/text"),data:se.getData()}},getConfigManager:()=>je,updateCanvasConfig:O=>{je.updateConfig(O)},setZoom:O=>{je.setZoom(O)},setCanvasSize:(O,te)=>{je.updateSize({width:O,height:te})},setBackgroundColor:O=>{je.updateBackground({color:O})},updateDeviceData:O=>{p&&(O!=null&&O.devices)&&O.devices.forEach(te=>{var se;(se=te.points)==null||se.forEach(j=>{p&&p.getNodes().forEach(K=>{const ae=K.getData();ae!=null&&ae.bindings&&Object.entries(ae.bindings).forEach(([he,pe])=>{if(pe.deviceId===te.id&&pe.dataPoint===j.id){const ve=j.value;if(he==="attrs/text/text")K.attr("text/text",ve);else if(he==="attrs/body/fill")K.attr("body/fill",ve);else{const Q=he.split(".");let ye=K;for(let de=0;de<Q.length-1;de++)ye=ye[Q[de]];const ke=Q[Q.length-1];ye&&ke&&(ye[ke]=ve)}}})})})})},getAnimationEngine:()=>Mt}),(O,te)=>(e.openBlock(),e.createElementBlock("div",B_,[l.previewMode?e.createCommentVNode("",!0):(e.openBlock(),e.createBlock(go,{key:0,"selected-nodes-count":s.value,onSave:ie,onImport:R,onWorkflow:G,onDataSource:Ve,onPreview:ge,onExport:re,onZoomIn:D,onZoomOut:A,onClearAll:C,onAlignLeft:U,onAlignCenter:H,onAlignRight:F,onAlignTop:ue,onAlignMiddle:ne,onAlignBottom:oe,onDistributeHorizontal:fe,onDistributeVertical:J},null,8,["selected-nodes-count"])),l.previewMode?e.createCommentVNode("",!0):(e.openBlock(),e.createElementBlock("input",{key:1,ref_key:"fileInputRef",ref:c,type:"file",accept:".json",style:{display:"none"},onChange:Z},null,544)),e.createElementVNode("div",D_,[l.previewMode?e.createCommentVNode("",!0):(e.openBlock(),e.createBlock(wo,{key:0,"is-collapsed":m.value,"onUpdate:collapsed":te[0]||(te[0]=se=>m.value=se),onAddComponent:k},null,8,["is-collapsed"])),e.createVNode(Em,{ref_key:"canvasAreaRef",ref:o},null,512),l.previewMode?e.createCommentVNode("",!0):(e.openBlock(),e.createBlock(Wi,{key:1,ref:"propertyPanelRef","selected-node":i.value,"selected-edge":a.value,"device-data":S.value,"is-collapsed":h.value,"onUpdate:collapsed":te[1]||(te[1]=se=>h.value=se),onUpdateNode:_,onDeleteNode:E,onUpdateEdge:I,onDeleteEdge:x},null,8,["selected-node","selected-edge","device-data","is-collapsed"]))]),e.createVNode(Fv,{"auth-code":u.authCode,"custom-footer":u.customFooter},null,8,["auth-code","custom-footer"]),l.previewMode?e.createCommentVNode("",!0):(e.openBlock(),e.createBlock(V2,{key:2,visible:d.value,"onUpdate:visible":te[2]||(te[2]=se=>d.value=se),"scada-graph":e.unref(p),onClose:te[3]||(te[3]=se=>d.value=!1)},null,8,["visible","scada-graph"])),f.value&&!l.previewMode?(e.openBlock(),e.createBlock(V_,{key:3,"data-sources":v.value,onClose:te[4]||(te[4]=se=>f.value=!1),onAdd:q,onSave:ce,onDelete:X},null,8,["data-sources"])):e.createCommentVNode("",!0),l.previewMode?e.createCommentVNode("",!0):(e.openBlock(),e.createBlock(T_,{key:4,visible:w.value.visible,"onUpdate:visible":te[5]||(te[5]=se=>w.value.visible=se),position:w.value.position,"menu-items":w.value.items,onMenuClick:V},null,8,["visible","position","menu-items"]))]))}}),[["__scopeId","data-v-83d94aca"]]);var sc=(u=>(u.BOOLEAN="boolean",u.NUMBER="number",u.STRING="string",u))(sc||{}),ac=(u=>(u.READ="read",u.WRITE="write",u.READ_WRITE="readWrite",u))(ac||{}),lc=(u=>(u.ONLINE="online",u.OFFLINE="offline",u.ERROR="error",u.MAINTENANCE="maintenance",u))(lc||{}),cc=(u=>(u.PLC="plc",u.SENSOR="sensor",u.ACTUATOR="actuator",u.METER="meter",u.CAMERA="camera",u.OTHER="other",u))(cc||{});const P_={ScadaCanvas:ic,PropertyPanel:Wi,Header:go,ComponentLibrary:wo,CanvasConfigPanel:Eo,BindingCard:Oi,EventCard:Pi,BasicPropertiesTab:vo,AttributeConfigDialog:Mi,CustomCodeDialog:Ri},dc=u=>{Object.entries(P_).forEach(([r,t])=>{u.component(r,t)})},O_={install:dc,version:"1.0.0"};$e.AttributeConfigDialog=Mi,$e.BasicComponents=td,$e.BasicPropertiesTab=vo,$e.BindingCard=Oi,$e.CanvasConfigPanel=Eo,$e.ComponentLibrary=wo,$e.CustomCodeDialog=Ri,$e.DeviceStatus=lc,$e.DeviceType=cc,$e.EventCard=Pi,$e.Header=go,$e.IoTComponents=om,$e.PointAccessMode=ac,$e.PointDataType=sc,$e.PropertyPanel=Wi,$e.STORAGE_KEYS=ft,$e.ScadaCanvas=ic,$e.animationEngine=Mt,$e.canvasConfigItems=im,$e.canvasConfigManager=je,$e.componentRegistry=er,$e.default=O_,$e.defaultCanvasConfig=bo,$e.exportToJSON=XE,$e.formatTimestamp=lo,$e.generateEventId=Jl,$e.generateNodeId=ZE,$e.generateUniqueId=Fi,$e.getCurrentTimestamp=co,$e.install=dc,$e.loadFromLocal=Ui,$e.randomPosition=Xl,$e.registerNodeEvents=JE,$e.removeFromLocal=ao,$e.saveToLocal=lr,$e.showMessage=Xe,$e.sizePresetMap=dr,Object.defineProperties($e,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}})});