Files
git d519139615 new file: monitoring/node-red/data/.config.nodes.json
new file:   monitoring/node-red/data/.config.runtime.json
	new file:   monitoring/node-red/data/.config.runtime.json.backup
	new file:   monitoring/node-red/data/.config.users.json
	new file:   monitoring/node-red/data/.config.users.json.backup
	new file:   monitoring/node-red/data/.flows.json.backup
	new file:   monitoring/node-red/data/.flows_cred.json.backup
	new file:   monitoring/node-red/data/.npm/_cacache/content-v2/sha512/b0/47/c1458664fa9b6a08e9035110b523127a96bd7285d19472dc702f5dc498b927412b0ecd3273708fbf9d61754520599ac0b0e11f3e4c4d4ac784e78d7d97fe
	new file:   monitoring/node-red/data/.npm/_cacache/content-v2/sha512/c2/c2/b64870ea5c5a42b5772106f51123cf684d3c8381de10ccc07d01168d111d0a1ab79ee26fda320b3027c76cfc856119f7b440845a83c9f22d7d731643e62f
	new file:   monitoring/node-red/data/.npm/_cacache/index-v5/15/a4/2638498d877ec2c8c3d88cb9c08d7867c52d3fceb6fc64cc5abde73b01a9
	new file:   monitoring/node-red/data/.npm/_cacache/index-v5/48/03/b8903b717bbc1ad41b3f37148db48f54e0828c1aef870973f6672895d689
	new file:   monitoring/node-red/data/.npm/_logs/2026-04-05T01_36_15_515Z-debug-0.log
	new file:   monitoring/node-red/data/context/00b02bbd01c91485/flow.json
	new file:   monitoring/node-red/data/context/global/global.json
	new file:   monitoring/node-red/data/flows.json
	new file:   monitoring/node-red/data/flows_cred.json
	new file:   monitoring/node-red/data/node_modules/.package-lock.json
	new file:   monitoring/node-red/data/node_modules/node-red-debugger/CHANGELOG.md
	new file:   monitoring/node-red/data/node_modules/node-red-debugger/LICENSE
	new file:   monitoring/node-red/data/node_modules/node-red-debugger/README.md
	new file:   monitoring/node-red/data/node_modules/node-red-debugger/dist/flow-debugger.html
	new file:   monitoring/node-red/data/node_modules/node-red-debugger/dist/flow-debugger.js
	new file:   monitoring/node-red/data/node_modules/node-red-debugger/dist/flow-debugger.js.map
	new file:   monitoring/node-red/data/node_modules/node-red-debugger/dist/lib/MessageQueue.js
	new file:   monitoring/node-red/data/node_modules/node-red-debugger/dist/lib/MessageQueue.js.map
	new file:   monitoring/node-red/data/node_modules/node-red-debugger/dist/lib/debugger.js
	new file:   monitoring/node-red/data/node_modules/node-red-debugger/dist/lib/debugger.js.map
	new file:   monitoring/node-red/data/node_modules/node-red-debugger/dist/lib/location.js
	new file:   monitoring/node-red/data/node_modules/node-red-debugger/dist/lib/location.js.map
	new file:   monitoring/node-red/data/node_modules/node-red-debugger/dist/lib/types.js
	new file:   monitoring/node-red/data/node_modules/node-red-debugger/dist/lib/types.js.map
	new file:   monitoring/node-red/data/node_modules/node-red-debugger/dist/locales/en-US/flow-debugger.json
	new file:   monitoring/node-red/data/node_modules/node-red-debugger/dist/locales/ja/flow-debugger.json
	new file:   monitoring/node-red/data/node_modules/node-red-debugger/dist/nr-types.js
	new file:   monitoring/node-red/data/node_modules/node-red-debugger/dist/nr-types.js.map
	new file:   monitoring/node-red/data/node_modules/node-red-debugger/package.json
	new file:   monitoring/node-red/data/node_modules/node-red-debugger/resources/style.css
	new file:   monitoring/node-red/data/package-lock.json
	new file:   monitoring/node-red/data/package.json
	new file:   monitoring/node-red/data/settings.js
	new file:   monitoring/node-red/data/test-container.sh
	new file:   monitoring/node-red/data/test-container.sh.old
	new file:   monitoring/node-red/data/webhook.json
2026-04-13 05:36:20 +10:00

3 lines
21 KiB
HTML

<link rel="stylesheet" href="resources/node-red-debugger/style.css">
<script type="text/javascript">!function(){var z;function B(){RED.sidebar.show("flow-debugger")}RED.view.annotations?RED.plugins.registerPlugin("node-red-debugger",{onadd:function(){function c(e){var t=/^(.*?)\/([^\/\[]+)\[(i|o)\]\[(\d+)\]$/.exec(e),o=RED.nodes.node(t[2]);return{location:e,z:o?o.z:null,path:t[1],id:t[2],portType:"i"===t[3]?"input":"output",portIndex:t[4]}}function d(e,t){h[e.id]=h[e.id]||{input:{},output:{}},h[e.id][e.portType][e.portIndex]!==t&&(h[e.id][e.portType][e.portIndex]=t,!v[e.id]||(e=v[e.id][e.portType][e.portIndex])&&(e.pulse(),0<t?(e.el.classList.add("hasMessages"),t<100?(e.label.classList.remove("small"),e.label.textContent=t):(e.label.classList.add("small"),e.label.textContent=t<1e3?t:"999+")):(e.el.classList.remove("hasMessages"),e.label.textContent="")))}function e(o){if(b[o.id]&&b[o.id].forEach(function(e){var t=RED.utils.createNodeIcon(o,!0);e.listLabel.replaceWith(t),e.listLabel=t}),f[o.id])for(var e in f[o.id]){var t;f[o.id].hasOwnProperty(e)&&(t=RED.utils.createNodeIcon(o,!0),f[o.id][e].listLabel.replaceWith(t),f[o.id][e].listLabel=t)}(u.has("*")||u.has(o.id))&&(o._debugger_paused=!0)}function o(e){var t,o,a,n;if(s=e,u=new Set(e.pausedLocations||[]),s.paused=0<u.size,p!==e.enabled&&(m=!0,E.prop("checked",!!e.enabled).trigger("change"),m=!1),0<u.size?P():l&&O(),e.breakpoints&&(t=Object.keys(r),o={},a={},n={},e.breakpoints.forEach(function(e){var t;r.hasOwnProperty(e.id)?(t=r[e.id]).active!==e.active?(n[e.id]=e,t.setActive(e.active,!0)):a[e.id]=e:(T.editableList("addItem",e),o[e.id]=e)}),t.filter(function(e){return!a[e]&&!n[e]}).forEach(function(e){T.editableList("removeItem",r[e])})),e.queues)for(var i in e.queues)e.queues.hasOwnProperty(i)&&d(c(i),e.queues[i].depth)}function g(e,t){e={url:"flow-debugger/"+e,type:"POST",error:function(e,t,o){console.log(e,t,o)}};t&&(e.contentType="application/json",e.data=JSON.stringify(t)),$.ajax(e)}var s,l,r={},b={},f={},v={},h={},w={},u=new Set,p=!1,m=!1;z=$("<div>").addClass("red-ui-flow-debugger disabled").css({position:"relative",height:"100%"});var t=$("<div></div>");RED.sidebar.addTab({id:"flow-debugger",label:RED._("node-red-debugger/flow-debugger:label.debuggerShort"),name:RED._("node-red-debugger/flow-debugger:label.debugger"),iconClass:"fa fa-flask",content:z,toolbar:t,enableOnEdit:!0,action:"core:show-flow-debugger-tab"});var a=$("<div>",{class:"red-ui-sidebar-header"}).appendTo(z),n=$("<span>").css({"flex-grow":1,"text-align":"left"}).appendTo(a),t=$("<span>",{class:"red-ui-flow-debugger-toolbar"}).appendTo(a),a=$("<span>",{class:"button-group"}).appendTo(t),t=$("<span>",{class:"button-group"}).appendTo(t),E=$('<input type="checkbox"/>').appendTo(n).toggleButton({enabledIcon:"fa-toggle-on",disabledIcon:"fa-toggle-off",baseClass:"red-ui-sidebar-header-button"}).on("change",function(){p=this.checked,m?z.toggleClass("disabled",!p):$.ajax({url:"flow-debugger",contentType:"application/json",type:"PUT",data:JSON.stringify({enabled:p}),success:function(e){z.toggleClass("disabled",!p)},error:function(e,t,o){console.log(e,t,o)}}),p?(RED.hooks.add("viewAddPort.flow-debugger",function(e){M(e.node,e.portType,e.portIndex,e.port)}),RED.hooks.add("viewRemovePort.flow-debugger",function(e){delete v[e.node.id][e.portType][e.portIndex]}),RED.hooks.add("viewRemoveNode.flow-debugger",function(e){delete v[e.node.id]}),RED.view.annotations.register("red-ui-flow-debugger-paused",{type:"badge",class:"red-ui-flow-debugger-annotation-paused",show:"_debugger_paused",element:function(){var e=document.createElementNS("http://www.w3.org/2000/svg","g");e.setAttribute("transform","translate(0,-2)");var t=document.createElementNS("http://www.w3.org/2000/svg","rect");t.setAttribute("rx",2),t.setAttribute("width",12),t.setAttribute("height",12),t.setAttribute("fill","white"),t.setAttribute("stroke-width","1");var o=document.createElementNS("http://www.w3.org/2000/svg","path");return o.setAttribute("d","M 4 2 v 8 M 8 2 v 8"),o.setAttribute("stroke-width","3"),e.appendChild(t),e.appendChild(o),e}}),q(".red-ui-flow-port-output"),q(".red-ui-flow-port-input")):(T.editableList("empty"),N.editableList("empty"),RED.hooks.remove("*.flow-debugger"),$(".red-ui-flow-debugger-port-overlay").each(function(){var e=$(this).parent()[0];e.removeEventListener("mouseenter",e.__breakpoint__.onenter),e.removeEventListener("mouseleave",e.__breakpoint__.onleave),$(this).remove()}),r={},b={},v={},h={},w={},RED.view.annotations.unregister("red-ui-flow-debugger-paused"))}),n=$('<button type="button" class="red-ui-sidebar-header-button red-ui-flow-debugger-btn-pauseresume"><i class="fa fa-pause"/></button>').appendTo(a).on("click",function(e){s.paused?g("resume"):g("pause")});RED.popover.tooltip(n,function(){return RED._("node-red-debugger/flow-debugger:label."+(s.paused?"resume":"pause"))});a=$('<button type="button" disabled class="red-ui-sidebar-header-button red-ui-flow-debugger-btn-step"><i class="fa fa-step-forward"/></button>').appendTo(a).on("click",function(e){g("step")});RED.popover.tooltip(a,RED._("node-red-debugger/flow-debugger:label.step"));var i=!1,D=$('<button class="red-ui-sidebar-header-button" style="min-width: 30px"><i class="fa fa-cog"></i></button>').appendTo(t).on("click",function(e){e.preventDefault(),e.stopPropagation(),i?(i=!1,D.find("i").removeClass("fa-close").addClass("fa-cog"),y.hide(!1)):(D.find("i").removeClass("fa-cog").addClass("fa-close"),e=s.config.breakpointAction||"pause-all",R.find('input[value="'+e+'"]').attr("checked",!0),y.show({offset:[D.outerWidth(),11],align:"left",target:D,dispose:!1,closeButton:D,onclose:function(){D.find("i").removeClass("fa-close").addClass("fa-cog"),i=!1}}),i=!0,R.find(":focusable").eq(0).focus())});RED.popover.tooltip(D,RED._("node-red-debugger/flow-debugger:label.settings"));var R=$('<div class="red-ui-flow-debugger-settings"></div>').css({padding:"8px"});$('<div data-i18n="node-red-debugger/flow-debugger:label.breakpointAction.label"></div>').appendTo(R),$('<label><input type="radio" class="red-ui-sidebar-header-button-toggle" name="red-ui-flow-debugger-pause-option" value="pause-all"><span data-i18n="node-red-debugger/flow-debugger:label.breakpointAction.pause-all"></span></label>').appendTo(R),$('<label><input type="radio" class="red-ui-sidebar-header-button-toggle" name="red-ui-flow-debugger-pause-option" value="pause-bp"><span data-i18n="node-red-debugger/flow-debugger:label.breakpointAction.pause-bp"></span></label>').appendTo(R),R.i18n(),R.find('input[type="radio"]').on("change",function(e){$.ajax({url:"flow-debugger",contentType:"application/json",type:"PUT",data:JSON.stringify({config:{breakpointAction:this.value}}),success:function(e){},error:function(e,t,o){console.log(e,t,o)}})}),R.on("mouseleave",function(){i=!1,D.find("i").removeClass("fa-close").addClass("fa-cog"),y.hide(!1)});var y=RED.popover.panel(R),a=$("<div>",{class:"red-ui-flow-debugger-stack"}).css({height:"100%"}).appendTo(z),t=RED.stack.create({container:a}),a=t.add({title:RED._("node-red-debugger/flow-debugger:label.breakpoints"),collapsible:!0});a.expand(),a.content.css({height:"100%"});var T=$("<ol>",{class:"red-ui-flow-debugger-breakpoint-list"}).appendTo(a.content).editableList({addButton:!1,removable:!0,removeItem:function(e){delete r[e.id],e.annotation&&(e.annotation.el.classList.remove("active"),e.annotation.el.classList.remove("inactive"),delete e.annotation.breakpoint),$.ajax({url:"flow-debugger/breakpoints/"+e.id,type:"DELETE",error:function(e,t,o){console.log(e,t,o)}})},addItem:function(a,e,n){r[n.id]=n,b[n.location.id]=b[n.location.id]||[],b[n.location.id].push(n),(n.listItem=a).addClass("red-ui-flow-debugger-breakpoint"),a.addClass("red-ui-flow-debugger-breakpoint-"+("i"===n.location.portType?"input":"output"));var i=$('<input type="checkbox">').prop("checked",n.active).appendTo(a).on("change",function(){n.setActive(this.checked)});a.toggleClass("active",n.active),n.setActive=function(e,t){var o;n.active=e,a.toggleClass("active",e),i.prop("checked",e),!v[n.location.id]||(o=v[n.location.id]["i"===n.location.portType?"input":"output"][n.location.portIndex])&&(o.el.classList.toggle("active",e),o.el.classList.toggle("inactive",!e)),t||$.ajax({url:"flow-debugger/breakpoints/"+n.id,contentType:"application/json",data:JSON.stringify({active:e}),type:"PUT",error:function(e,t,o){console.log(e,t,o)}})},!v[n.location.id]||(o=v[n.location.id]["i"===n.location.portType?"input":"output"][n.location.portIndex])&&(((o.breakpoint=n).annotation=o).el.classList.toggle("active",n.active),o.el.classList.toggle("inactive",!n.active));var t=RED.nodes.node(n.location.id),o=$('<a href="#"></a>').appendTo(a).on("click",function(e){e.preventDefault(),e.stopPropagation(),RED.view.reveal(n.location.id)});n.listLabel=(t?RED.utils.createNodeIcon(t,!0):$("<span>").text(n.location.id)).appendTo(o);t="i"===n.location.portType?RED._("node-red-debugger/flow-debugger:label.input"):RED._("node-red-debugger/flow-debugger:label.output")+" "+(n.location.portIndex+1);RED.popover.tooltip(o,t),a.on("mouseenter",function(){var e;!v[n.location.id]||(e=v[n.location.id]["i"===n.location.portType?"input":"output"][n.location.portIndex])&&e.highlight(!0)}).on("mouseleave",function(){var e;!v[n.location.id]||(e=v[n.location.id]["i"===n.location.portType?"input":"output"][n.location.portIndex])&&e.highlight(!1)})}}),a=t.add({title:RED._("node-red-debugger/flow-debugger:label.messages"),collapsible:!0});a.expand(),a.content.css({height:"100%"});var t=$('<div style="float: right"></div>').appendTo(a.header),k=!1,_=$('<button class="red-ui-button red-ui-button-small"><i class="fa fa-filter"></i></button>').css({"min-width":"22px"}).appendTo(t).on("click",function(e){e.preventDefault(),e.stopPropagation(),k?(k=!1,_.find("i").removeClass("fa-close").addClass("fa-filter"),I.hide(!1)):(C.find('input[value="'+A+'"]').attr("checked",!0),_.find("i").removeClass("fa-filter").addClass("fa-close"),I.show({offset:[_.outerWidth(),2],align:"left",target:_,dispose:!1,closeButton:_,onclose:function(){_.find("i").removeClass("fa-close").addClass("fa-filter"),k=!1}}),k=!0)}),x=$('<span style="margin-left: 3px"></span>').text(RED._("node-red-debugger/flow-debugger:label.filter.all")).appendTo(_);RED.popover.tooltip(_,RED._("node-red-debugger/flow-debugger:label.filter.label"));var C=$('<div class="red-ui-flow-debugger-settings"></div>').css({padding:"8px"});$('<label><input type="radio" class="red-ui-sidebar-header-button-toggle" name="red-ui-flow-debugger-message-filter-option" value="all"><span data-i18n="node-red-debugger/flow-debugger:label.filter.all"></span></label>').appendTo(C),$('<label><input type="radio" class="red-ui-sidebar-header-button-toggle" name="red-ui-flow-debugger-message-filter-option" value="flow"><span data-i18n="node-red-debugger/flow-debugger:label.filter.flow"></span></label>').appendTo(C),C.i18n(),C.find('input[type="radio"]').on("change",function(e){x.text(RED._("node-red-debugger/flow-debugger:label.filter."+this.value)),A=this.value,N.editableList("filter"),k=!1,_.find("i").removeClass("fa-close").addClass("fa-filter"),I.hide(!1)});var L,I=RED.popover.panel(C),A="all",N=$("<ol>",{class:"red-ui-flow-debugger-message-list"}).appendTo(a.content).editableList({addButton:!1,filter:function(e){return e._visible="all"===A||e.location.z===RED.workspaces.active(),e._visible},removeItem:function(e){var t,o=e.location;!v[o.id]||(t=v[o.id][o.portType][o.portIndex])&&t.highlight(!1),delete w[e.id],delete f[o.id][e.id],j()},addItem:function(e,t,n){var i=(w[n.id]=n).location;f[i.id]=f[i.id]||{};var o=(f[i.id][n.id]=n).destination?c(n.destination):null;e.addClass("red-ui-flow-debugger-message"),e.on("mouseenter",function(e){var t;!v[i.id]||(t=v[i.id][i.portType][i.portIndex])&&t.highlight(!0)}).on("mouseleave",function(e){var t;!v[i.id]||(t=v[i.id][i.portType][i.portIndex])&&t.highlight(!1)});var d=$('<div class="red-ui-debug-msg-meta"></div>').appendTo(e),a=$("<span></span>").appendTo(e),s=i.path.split("/");s.shift(),s[s.length-1]!==i.id&&s.push(i.id),s.forEach(function(o,e){var t=$('<a href="#"></a>').css({display:"flex","align-items":"center","margin-top":Math.max(-10,-2*(s.length-1-e))+"px","margin-left":-8*e+"px"}).appendTo(d).on("click",function(e){e.preventDefault(),RED.view.reveal(o)}),a=RED.nodes.node(o);n.listLabel=a?RED.utils.createNodeIcon(a,e===s.length-1).appendTo(t).addClass("red-ui-node-icon-small"):$("<span>").addClass("red-ui-node-label").text(o).appendTo(t),e===s.length-1&&$("<span>").addClass("red-ui-node-label").text("["+i.portType+("output"===i.portType?" "+(parseInt(i.portIndex)+1):"")+"]").css("margin-left","5px").appendTo(t),t.on("mouseenter",function(e){var t=RED.nodes.node(o);t&&(t.highlighted=!0,t.dirty=!0),RED.view.redraw()}).on("mouseleave",function(e){var t=RED.nodes.node(o);t&&(t.highlighted=!1,t.dirty=!0),RED.view.redraw()})}),o&&(l=$('<a href="#"><span class="red-ui-node-label">[ <i class="fa fa-angle-right"></i></span> </a>').addClass("red-ui-node-label").css("margin-left","20px").appendTo(d).on("click",function(e){e.preventDefault(),RED.view.reveal(o.id)}),$("<span>").addClass("red-ui-node-label").text(o.id.substring(0,6)+"... ]").appendTo(l),l.on("mouseenter",function(e){var t=RED.nodes.node(o.id);t&&(t.highlighted=!0,t.dirty=!0),RED.view.redraw()}).on("mouseleave",function(e){var t=RED.nodes.node(o.id);t&&(t.highlighted=!1,t.dirty=!0),RED.view.redraw()}));var e=$('<span class="red-ui-flow-debugger-msg-tools button-group"></span>').appendTo(d),l=$('<button class="red-ui-button red-ui-button-small"><i class="fa fa-step-forward"></i></button>').appendTo(e),r=RED.popover.tooltip(l,RED._("node-red-debugger/flow-debugger:label.stepMessage"));l.on("click",function(e){e.preventDefault(),e.stopPropagation(),g("step",{message:n.id}),N.editableList("removeItem",n),r.close()});var u,e=$('<button class="red-ui-button red-ui-button-small"><i class="fa fa-trash"></i></button>').appendTo(e),p=RED.popover.tooltip(e,RED._("node-red-debugger/flow-debugger:label.deleteMessage"));e.on("click",function(e){e.preventDefault(),e.stopPropagation(),$.ajax({url:"flow-debugger/messages/"+n.id,type:"DELETE",error:function(e,t,o){console.log(e,t,o)}}),p.close()}),n.messageRow=a,n.loaded=!1,10<N.editableList("length")&&(u=!1,a.addClass("red-ui-flow-debugger-message-load"),$('<a href="#">').text("show message").appendTo(a).on("click",function(e){e.preventDefault(),u||(u=!0,S(n))})),j()}});function j(){p&&(L=L||setTimeout(function(){L=null;var o=0;N.editableList("items").each(function(e){var t=$(this).data("data");t._visible&&o++,o<=10&&(t.loaded||S(t))})},100))}function S(t){$.ajax({url:"flow-debugger/messages/"+t.id,type:"GET",success:function(e){t.loaded=!0,function(e,t){e.messageRow.empty(),e.messageRow.addClass("red-ui-debug-msg-payload").removeClass("red-ui-flow-debugger-message-load");t=RED.utils.decodeObject(t.msg.msg,t.msg.format),e=$('<span class="red-ui-debug-msg-payload"></span>').appendTo(e.messageRow);RED.utils.createObjectElement(t,{sourceId:!0,path:"",key:null}).appendTo(e)}(t,e)},error:function(e,t,o){console.log(e,t,o)}})}function P(){var e,t,o;$("#red-ui-workspace").addClass("red-ui-flow-debugger-paused"),$(".red-ui-flow-debugger-btn-pauseresume i").removeClass("fa-pause").addClass("fa-play"),$(".red-ui-flow-debugger-btn-step").prop("disabled",null),l||(e=$('<p class="red-ui-flow-debugger-notification">'),$("<span>").text(RED._("node-red-debugger/flow-debugger:label.paused")).appendTo(e),o=$("<span>",{class:"red-ui-flow-debugger-toolbar button-group"}).appendTo(e),t=$('<button type="button" class="red-ui-button red-ui-button-small red-ui-flow-debugger-btn-pauseresume"><i class="fa fa-play"/></button>').appendTo(o).on("click",function(e){g("resume")}),RED.popover.tooltip(t,RED._("node-red-debugger/flow-debugger:label.resume")),o=$('<button type="button" class="red-ui-button red-ui-button-small"><i class="fa fa-step-forward"/></button>').appendTo(o).on("click",function(e){g("step")}),RED.popover.tooltip(o,RED._("node-red-debugger/flow-debugger:label.step")),l=RED.notify(e,{fixed:!0}));var a=u.has("*");RED.nodes.eachNode(function(e){e._debugger_paused=a||u.has(e.id)}),RED.view.redraw()}function O(){l&&(l.close(),l=null),u.clear(),$(".red-ui-flow-debugger-btn-pauseresume i").removeClass("fa-play").addClass("fa-pause"),$(".red-ui-flow-debugger-btn-step").prop("disabled",!0),s.paused=!1,RED.nodes.eachNode(function(e){delete e._debugger_paused}),RED.view.redraw()}function q(e){$(e).each(function(){M(this.__port__.__data__,0===this.__port__.__portType__?"output":"input",this.__port__.__portIndex__,this)})}function M(t,o,a,e){if(!("link in"===t.type&&"input"===o||"link out"===t.type&&"output"===o)){var n=document.createElementNS("http://www.w3.org/2000/svg","g");n.setAttribute("class","red-ui-flow-debugger-port-overlay");var i,d,s=document.createElementNS("http://www.w3.org/2000/svg","path");s.setAttribute("d","M -12 -6.5 h 24 q 4 0 4 4 v 5 q 0 4 -4 4 h -24 q -4 0 -4 -4 v -5 q 0 -4 4 -4 z"),s.setAttribute("class","red-ui-flow-debugger-port-overlay-background");var l=document.createElementNS("http://www.w3.org/2000/svg","g");"input"===o?l.setAttribute("transform","translate(-4.5,5)"):l.setAttribute("transform","translate(14.5,5)"),l.appendChild(s),n.appendChild(l);var r=document.createElementNS("http://www.w3.org/2000/svg","text");r.setAttribute("class","red-ui-flow-debugger-port-overlay-label"),r.setAttribute("x","input"===o?-1:26),r.setAttribute("y",9.5),n.appendChild(r),v[t.id]=v[t.id]||{input:{},output:{}},v[t.id][o][a]={el:n,label:r,pulse:function(){var e;i?(e=i.cloneNode(!0),i.remove(),l.appendChild(e),i=e):((i=s.cloneNode(!0)).classList.add("red-ui-flow-debugger-port-overlay-pulse"),l.appendChild(i))},highlight:function(e){!!d!==e&&(d?(d.remove(),d=null):((d=s.cloneNode(!0)).setAttribute("class","red-ui-flow-debugger-port-overlay-highlight"),l.appendChild(d)))}};var u=v[t.id][o][a];if(b[t.id])for(var p=0,c=b[t.id].length;p<c;p++){var g=b[t.id][p];if(g.location.portType===o[0]&&g.location.portIndex===a){n.classList.toggle("active",g.active),n.classList.toggle("inactive",!g.active),(u.breakpoint=g).annotation=u;break}}e.insertBefore(n,e.children[0]),e.__breakpoint__={onenter:function(){RED.view.state()===RED.state.DEFAULT&&(u.breakpoint||n.classList.add("pending")),u.breakpoint&&u.breakpoint.listItem.parent().addClass("highlight")},onleave:function(){n.classList.remove("pending"),u.breakpoint&&(u.breakpoint.listItem.parent().removeClass("highlight"),u.pendingRemoval&&(delete u.pendingRemoval,T.editableList("removeItem",u.breakpoint)))}},e.addEventListener("mouseenter",e.__breakpoint__.onenter),e.addEventListener("mouseleave",e.__breakpoint__.onleave),n.addEventListener("click",function(){var e;u.breakpoint?u.breakpoint.active?u.breakpoint.setActive(!u.breakpoint.active):u.pendingRemoval?(n.classList.remove("pending"),u.breakpoint.listItem.parent().removeClass("pending"),delete u.pendingRemoval,u.breakpoint.setActive(!0)):(n.classList.add("pending"),u.breakpoint.listItem.parent().addClass("pending"),u.pendingRemoval=!0):(n.classList.remove("pending"),e=!!RED.nodes.subflow(t.z),$.ajax({url:"flow-debugger/breakpoints",contentType:"application/json",data:JSON.stringify({id:t.id,path:e?"*":t.z,portType:o[0],portIndex:a}),type:"POST",success:function(e){T.editableList("addItem",e)},error:function(e,t,o){console.log(e,t,o)}}))}),h[t.id]&&(0<(e=h[t.id][o][a])?(n.classList.add("hasMessages"),r.textContent=e):(n.classList.remove("hasMessages"),r.textContent=""))}}RED.events.on("workspace:change",function(){"flow"===A&&(N.editableList("filter"),j())}),RED.events.on("nodes:add",e),RED.events.on("nodes:remove",function(e){b[e.id]&&b[e.id].forEach(function(e){T.editableList("removeItem",e)}),delete b[e.id],delete h[e.id]}),RED.events.on("nodes:change",e),RED.comms.subscribe("flow-debugger/connected",function(e,t){$.ajax({url:"flow-debugger",type:"GET",success:function(e){o(e)},error:function(e,t,o){console.log(e,t,o)}}),$.ajax({url:"flow-debugger/messages",type:"GET",success:function(e){N.editableList("empty"),e.forEach(function(e){N.editableList("addItem",{id:e.id,location:c(e.location),msg:e.msg})})},error:function(e,t,o){console.log(e,t,o)}})}),RED.comms.subscribe("flow-debugger/state",function(e,t){o(t)}),RED.comms.subscribe("flow-debugger/paused",function(e,t){t.pausedLocations?u=new Set(t.pausedLocations):(u.clear(),u.add("*")),s.paused=0<u.size,P()}),RED.comms.subscribe("flow-debugger/resumed",O),RED.comms.subscribe("flow-debugger/messageQueued",function(e,t){t.location=c(t.location),d(t.location,t.depth),N.editableList("addItem",{id:t.id,location:t.location,msg:t.msg,destination:t.destination})}),RED.comms.subscribe("flow-debugger/messageDispatched",function(e,t){t.location=c(t.location),d(t.location,t.depth);t=w[t.id];t&&N.editableList("removeItem",t)}),RED.actions.add("flow-debugger:show-debugger-tab",B),RED.actions.add("flow-debugger:pause-flows",function(){g("pause")}),RED.actions.add("flow-debugger:resume-flows",function(){g("resume")}),RED.actions.add("flow-debugger:step-flows",function(){g("step")}),RED.actions.add("flow-debugger:enable-debugger",function(){E.prop("checked",!0).trigger("change")}),RED.actions.add("flow-debugger:disable-debugger",function(){E.prop("checked",!1).trigger("change")})}}):RED.notify("Flow Debugger requires Node-RED 2.0.0-beta.2 or later")}()</script>