Backticks in Markdown & Node-RED flows

The three backticks notation in Markdown is heavily used by developers to share code snippets, configuration examples or other code-related information.

```
this is code
```

becomes this:

this is code

Backticks can also be given language specifications to do syntax highlighting:

```js
flowdata.forEach(function (obj) {
    if (obj.type == "subflow") {
        /* prefix subflow since this is the type of the node that uses this subflow - makes lookup simpler */
        subflows["subflow:" + obj.id] = obj;
    }
});
```

becomes this

 flowdata.forEach(function (obj) {
    if (obj.type == "subflow") {
        /* prefix subflow since this is the type of the node that uses this subflow - makes lookup simpler */
        subflows["subflow:" + obj.id] = obj;
    }
 });

See GitHub for more details on language specification with backticks. What GitHub also does is image replacement of backticks. This page demonstrates image replacement for Node-RED flows.json (when I write flows.json I mean the json representation of a Node-RED flow - be it one node or many modes), the following examples are all the same, first codeblock uses just backticks and the second (the image) is generated by using a language specification with the backticks, something like:

```noderedjson
<flows.json or flow snippet or just one node>
```

The language noderedjson codeblock is then replaced by a on-the-fly-frontend-only-generated (no server involved) SVG, i.e., an image of the flow.

Motivation

Why did I do this?

To raise awareness of Node-RED. Having compared Jupyter to Node-RED, I realised that one thing Jupyter does is to have previews of their notebooks on GitHub (and everywhere else where notebooks are hosted). Doing some analogical thinking, I thought why does not Node-RED have this feature? As there was nothing, I decided to roll my own.

The following examples attempt to show what I mean. Goal is also to develop this library to the point where GitHub might be convinced to integrate it into its collection of image generating plugins. That would make the spread of Node-RED flow examples simpler (IMHO) since flows would be visualised to improve understandablility compared to a (sometimes very) long JSON string.

The library is not complete and there are many features still required. The codebase is maintained in Node-RED but eventually will be hosted on GitHub for easier collaboration.

What is missing?

Lots.

The flows.json (i.e., the json representation of a Node-RED flow) does not provide everything that one needs to display the flow as it would in the Node-RED editor. Labels can be functions meaning that labelling of nodes can be dynamic, something this plugin can not know. Node colours are hardcoded in the packages not in the flows.json, so this plugin has a list of hardcoded colours for knonwn nodes.

Node images are not included since, again, these are defined in the respective node packages and included by the editor at load-time but not stored in the flows.json, i.e., the json defintion of nodes.

Outputs and input decorations are slightly different from the Node-RED editor. When viewing a static image of a Node-RED and not having had any experience with Node-RED, one cannot be sure in which direction data flows. Each line is the flow of data but from where to where? Having used Node-RED, the answer is obvious: from left to right, i.e., the left side of a node is the input and the right side the output of data. But is this clear?

No, for someone who can not even imagine how “data flows” between nodes, the direction is unclear. So I decided to use triangles as indication for the direction of data flow. Input “decorators” point into the node to indicate that data is flowing into the node. The output decorators put away from the node to indicate data is flowing out of the node.

This will hopefully make it easier to understand what is meant by flow-based programming: lines should the data flow, nodes do the computation.

Rendering Options

The basic language provided in the codeblock is noderedjson which attempts to be as close to the original editor design as possible. However options can be appended to the base language:

Naming of these options are with reference to the defaults, hence no-gridlines since the defaults are with gridlines, but with-arrows as the defaults have no arrows.

These options can be mixed and matched at will, for example, noderedjson-with-arrows-with-gridlines-with-zoom is the same as noderedjson-with-gridlines-with-zoom-with-arrows.

All examples in this page are with noderedjson-with-arrows except for the last two which are with noderedjson-with-arrows-with-zoom.


Example 1: Testing Embeddation

First the json string containing the flow:

[{"id":"548238136ca436ac","type":"link in","z":"652104ea8724facc","name":"[blog] embedded-flow.html","links":[],"x":538,"y":482,"wires":[["6c47c59cbbbecdf5"]]},{"id":"6c47c59cbbbecdf5","type":"BlogPageInfo","z":"652104ea8724facc","name":"","image":"","summary":"Can I generate html directly without using markdown markup?","title":"This is a test of something new","publishedAt":"2023-06-25T11:22","updatedAt":"2023-06-25T11:22","incRss":false,"incSitemap":false,"incIndex":false,"shrLinkedIn":false,"reloadOnEdit":false,"redirectToNode":false,"redirectNodeId":"status-404","redirectStatusCode":"301","x":734.7143707275391,"y":482,"wires":[["64c749a71e14498a"]]},{"id":"99a631acf3d6c5bf","type":"link out","z":"652104ea8724facc","name":"link out 80","mode":"return","links":[],"x":1580.0002040863037,"y":475.4285936355591,"wires":[]},{"id":"b360b1072d4d72fa","type":"switch","z":"652104ea8724facc","name":"has _linkSource - is this a link-call action","property":"_linkSource","propertyType":"msg","rules":[{"t":"nnull"},{"t":"else"}],"checkall":"true","repair":false,"outputs":2,"x":1289.8573913574219,"y":481.8571538925171,"wires":[["99a631acf3d6c5bf"],[]]},{"id":"64c749a71e14498a","type":"template","z":"652104ea8724facc","name":"v1","field":"payload","fieldType":"msg","format":"javascript","syntax":"mustache","template":"","output":"str","x":970.4287910461426,"y":482,"wires":[["b360b1072d4d72fa"]]},{"id":"f0de398e3cfa056a","type":"link in","z":"652104ea8724facc","name":"[blog] embedded-flow-v2.html","links":[],"x":538,"y":541.5714330673218,"wires":[["b116c37cd891a5e7"]]},{"id":"b116c37cd891a5e7","type":"BlogPageInfo","z":"652104ea8724facc","name":"","image":"","summary":"Can I generate html directly without using markdown markup?","title":"This is a test of something new","publishedAt":"2023-06-25T11:22","updatedAt":"2023-06-25T11:22","incRss":false,"incSitemap":false,"incIndex":false,"shrLinkedIn":false,"reloadOnEdit":false,"redirectToNode":false,"redirectNodeId":"status-404","redirectStatusCode":"301","x":744.7143707275391,"y":541.5714330673218,"wires":[["861c435f7685cf55"]]},{"id":"861c435f7685cf55","type":"template","z":"652104ea8724facc","name":"v2","field":"payload","fieldType":"msg","format":"javascript","syntax":"mustache","template":"","output":"str","x":970.4287910461426,"y":541.5714330673218,"wires":[["b360b1072d4d72fa"]]},{"id":"951cf6e2f214b95b","type":"template","z":"652104ea8724facc","name":"v3","field":"payload","fieldType":"msg","format":"javascript","syntax":"mustache","template":"","output":"str","x":970.4287910461426,"y":597.2857732772827,"wires":[["b360b1072d4d72fa"]]},{"id":"7885fd1e6f944103","type":"link in","z":"652104ea8724facc","name":"[blog] embedded-flow-v3.html","links":[],"x":538,"y":597.2857732772827,"wires":[["382f5f013b6f9a3b"]]},{"id":"382f5f013b6f9a3b","type":"BlogPageInfo","z":"652104ea8724facc","name":"","image":"","summary":"Can I generate html directly without using markdown markup?","title":"This is a test of something new","publishedAt":"2023-06-25T11:22","updatedAt":"2023-06-25T11:22","incRss":false,"incSitemap":false,"incIndex":false,"shrLinkedIn":false,"reloadOnEdit":false,"redirectToNode":false,"redirectNodeId":"status-404","redirectStatusCode":"301","x":744.7143707275391,"y":597.2857732772827,"wires":[["951cf6e2f214b95b"]]},{"id":"7b05f3f671073181","type":"template","z":"652104ea8724facc","name":"v4","field":"payload","fieldType":"msg","format":"html","syntax":"mustache","template":"","output":"str","x":970.4287910461426,"y":662.2857732772827,"wires":[["b360b1072d4d72fa"]]},{"id":"3952279c3016c957","type":"link in","z":"652104ea8724facc","name":"[blog] embedded-flow-v4.html","links":[],"x":538,"y":662.2857732772827,"wires":[["295d018b67f438b9"]]},{"id":"295d018b67f438b9","type":"BlogPageInfo","z":"652104ea8724facc","name":"","image":"","summary":"Can I generate html directly without using markdown markup?","title":"This is a test of something new","publishedAt":"2023-06-25T11:22","updatedAt":"2023-06-25T11:22","incRss":false,"incSitemap":false,"incIndex":false,"shrLinkedIn":false,"reloadOnEdit":false,"redirectToNode":false,"redirectNodeId":"status-404","redirectStatusCode":"301","x":744.7143707275391,"y":662.2857732772827,"wires":[["7b05f3f671073181"]]},{"id":"747018dc4b0adf33","type":"template","z":"652104ea8724facc","name":"v5","field":"payload","fieldType":"msg","format":"javascript","syntax":"mustache","template":"","output":"str","x":975.571418762207,"y":724.7143468856812,"wires":[["b360b1072d4d72fa"]]},{"id":"317130644c24a056","type":"link in","z":"652104ea8724facc","name":"[blog] embedded-flow-v5.html","links":[],"x":543.1426277160645,"y":724.7143468856812,"wires":[["afca478f73a8601e"]]},{"id":"afca478f73a8601e","type":"BlogPageInfo","z":"652104ea8724facc","name":"","image":"","summary":"Can I generate html directly without using markdown markup?","title":"This is a test of something new","publishedAt":"2023-06-25T11:22","updatedAt":"2023-06-25T11:22","incRss":false,"incSitemap":false,"incIndex":false,"shrLinkedIn":false,"reloadOnEdit":false,"redirectToNode":false,"redirectNodeId":"status-404","redirectStatusCode":"301","x":749.8569984436035,"y":724.7143468856812,"wires":[["747018dc4b0adf33"]]}]

This is the same codeblock but with language noderedjson:

[{"id":"548238136ca436ac","type":"link in","z":"652104ea8724facc","name":"[blog] embedded-flow.html","links":[],"x":538,"y":482,"wires":[["6c47c59cbbbecdf5"]]},{"id":"6c47c59cbbbecdf5","type":"BlogPageInfo","z":"652104ea8724facc","name":"","image":"","summary":"Can I generate html directly without using markdown markup?","title":"This is a test of something new","publishedAt":"2023-06-25T11:22","updatedAt":"2023-06-25T11:22","incRss":false,"incSitemap":false,"incIndex":false,"shrLinkedIn":false,"reloadOnEdit":false,"redirectToNode":false,"redirectNodeId":"status-404","redirectStatusCode":"301","x":734.7143707275391,"y":482,"wires":[["64c749a71e14498a"]]},{"id":"99a631acf3d6c5bf","type":"link out","z":"652104ea8724facc","name":"link out 80","mode":"return","links":[],"x":1580.0002040863037,"y":475.4285936355591,"wires":[]},{"id":"b360b1072d4d72fa","type":"switch","z":"652104ea8724facc","name":"has _linkSource - is this a link-call action","property":"_linkSource","propertyType":"msg","rules":[{"t":"nnull"},{"t":"else"}],"checkall":"true","repair":false,"outputs":2,"x":1289.8573913574219,"y":481.8571538925171,"wires":[["99a631acf3d6c5bf"],[]]},{"id":"64c749a71e14498a","type":"template","z":"652104ea8724facc","name":"v1","field":"payload","fieldType":"msg","format":"javascript","syntax":"mustache","template":"","output":"str","x":970.4287910461426,"y":482,"wires":[["b360b1072d4d72fa"]]},{"id":"f0de398e3cfa056a","type":"link in","z":"652104ea8724facc","name":"[blog] embedded-flow-v2.html","links":[],"x":538,"y":541.5714330673218,"wires":[["b116c37cd891a5e7"]]},{"id":"b116c37cd891a5e7","type":"BlogPageInfo","z":"652104ea8724facc","name":"","image":"","summary":"Can I generate html directly without using markdown markup?","title":"This is a test of something new","publishedAt":"2023-06-25T11:22","updatedAt":"2023-06-25T11:22","incRss":false,"incSitemap":false,"incIndex":false,"shrLinkedIn":false,"reloadOnEdit":false,"redirectToNode":false,"redirectNodeId":"status-404","redirectStatusCode":"301","x":744.7143707275391,"y":541.5714330673218,"wires":[["861c435f7685cf55"]]},{"id":"861c435f7685cf55","type":"template","z":"652104ea8724facc","name":"v2","field":"payload","fieldType":"msg","format":"javascript","syntax":"mustache","template":"","output":"str","x":970.4287910461426,"y":541.5714330673218,"wires":[["b360b1072d4d72fa"]]},{"id":"951cf6e2f214b95b","type":"template","z":"652104ea8724facc","name":"v3","field":"payload","fieldType":"msg","format":"javascript","syntax":"mustache","template":"","output":"str","x":970.4287910461426,"y":597.2857732772827,"wires":[["b360b1072d4d72fa"]]},{"id":"7885fd1e6f944103","type":"link in","z":"652104ea8724facc","name":"[blog] embedded-flow-v3.html","links":[],"x":538,"y":597.2857732772827,"wires":[["382f5f013b6f9a3b"]]},{"id":"382f5f013b6f9a3b","type":"BlogPageInfo","z":"652104ea8724facc","name":"","image":"","summary":"Can I generate html directly without using markdown markup?","title":"This is a test of something new","publishedAt":"2023-06-25T11:22","updatedAt":"2023-06-25T11:22","incRss":false,"incSitemap":false,"incIndex":false,"shrLinkedIn":false,"reloadOnEdit":false,"redirectToNode":false,"redirectNodeId":"status-404","redirectStatusCode":"301","x":744.7143707275391,"y":597.2857732772827,"wires":[["951cf6e2f214b95b"]]},{"id":"7b05f3f671073181","type":"template","z":"652104ea8724facc","name":"v4","field":"payload","fieldType":"msg","format":"html","syntax":"mustache","template":"","output":"str","x":970.4287910461426,"y":662.2857732772827,"wires":[["b360b1072d4d72fa"]]},{"id":"3952279c3016c957","type":"link in","z":"652104ea8724facc","name":"[blog] embedded-flow-v4.html","links":[],"x":538,"y":662.2857732772827,"wires":[["295d018b67f438b9"]]},{"id":"295d018b67f438b9","type":"BlogPageInfo","z":"652104ea8724facc","name":"","image":"","summary":"Can I generate html directly without using markdown markup?","title":"This is a test of something new","publishedAt":"2023-06-25T11:22","updatedAt":"2023-06-25T11:22","incRss":false,"incSitemap":false,"incIndex":false,"shrLinkedIn":false,"reloadOnEdit":false,"redirectToNode":false,"redirectNodeId":"status-404","redirectStatusCode":"301","x":744.7143707275391,"y":662.2857732772827,"wires":[["7b05f3f671073181"]]},{"id":"747018dc4b0adf33","type":"template","z":"652104ea8724facc","name":"v5","field":"payload","fieldType":"msg","format":"javascript","syntax":"mustache","template":"","output":"str","x":975.571418762207,"y":724.7143468856812,"wires":[["b360b1072d4d72fa"]]},{"id":"317130644c24a056","type":"link in","z":"652104ea8724facc","name":"[blog] embedded-flow-v5.html","links":[],"x":543.1426277160645,"y":724.7143468856812,"wires":[["afca478f73a8601e"]]},{"id":"afca478f73a8601e","type":"BlogPageInfo","z":"652104ea8724facc","name":"","image":"","summary":"Can I generate html directly without using markdown markup?","title":"This is a test of something new","publishedAt":"2023-06-25T11:22","updatedAt":"2023-06-25T11:22","incRss":false,"incSitemap":false,"incIndex":false,"shrLinkedIn":false,"reloadOnEdit":false,"redirectToNode":false,"redirectNodeId":"status-404","redirectStatusCode":"301","x":749.8569984436035,"y":724.7143468856812,"wires":[["747018dc4b0adf33"]]}]

That flow is part of the embeddation testing and shows how various page requires (http requests) are handled. Five different versions of this code.

Example 2: Backup flow

This is the backup flow for flows! I use it to maintain backups of my Node-RED flows:

[{"id":"d598829cba783cad","type":"GetFlows","z":"f13d3b083d5cc429","name":"","flowVersion":"v1","useAuthentication":false,"apiUsername":"","apiUsernameType":"env","apiPassword":"","apiPasswordType":"env","x":349,"y":301,"wires":[["ddce7325bdba57d8"]]},{"id":"c507dd73478a26af","type":"inject","z":"f13d3b083d5cc429","name":"","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"7200","crontab":"","once":false,"onceDelay":0.1,"topic":"","payload":"","payloadType":"date","x":199,"y":181,"wires":[["d598829cba783cad"]]},{"id":"67b77f304303cb27","type":"http request","z":"f13d3b083d5cc429","name":"send off to backup server","method":"POST","ret":"txt","paytoqs":"ignore","url":"","tls":"","persist":false,"proxy":"","insecureHTTPParser":false,"authType":"","senderr":false,"headers":[],"x":1119,"y":181,"wires":[[]]},{"id":"ddce7325bdba57d8","type":"change","z":"f13d3b083d5cc429","name":"setup payload for zip node","rules":[{"t":"set","p":"_p","pt":"msg","to":"[]","tot":"json"},{"t":"set","p":"_p[0]","pt":"msg","to":"{ \"filename\": \"openmindmap_flows.json\", \"payload\": \"\" }","tot":"json"},{"t":"set","p":"_p[0].payload","pt":"msg","to":"payload","tot":"msg"},{"t":"set","p":"token","pt":"msg","to":"BACKUP_ZIP_TOKEN","tot":"env"},{"t":"set","p":"_p[1]","pt":"msg","to":"{ \"filename\": \"token.txt\", \"payload\": \"\" & token & \"\" }","tot":"jsonata"},{"t":"set","p":"payload","pt":"msg","to":"_p","tot":"msg"},{"t":"set","p":"url","pt":"msg","to":"BACKUP_ENDPOINT","tot":"env"}],"action":"","property":"","from":"","to":"","reg":false,"x":549,"y":401,"wires":[["1f879c968f033a26"]]},{"id":"1f879c968f033a26","type":"zip","z":"f13d3b083d5cc429","name":"","mode":"compress","filename":"backup.zip","compressionlevel":"9","outasstring":false,"x":769,"y":401,"wires":[["53808fa58e1aa543"]]},{"id":"53808fa58e1aa543","type":"base64","z":"f13d3b083d5cc429","name":"","action":"","property":"payload","x":929,"y":301,"wires":[["67b77f304303cb27"]]}]

the visualised flow:

[{"id":"d598829cba783cad","type":"GetFlows","z":"f13d3b083d5cc429","name":"","flowVersion":"v1","useAuthentication":false,"apiUsername":"","apiUsernameType":"env","apiPassword":"","apiPasswordType":"env","x":349,"y":301,"wires":[["ddce7325bdba57d8"]]},{"id":"c507dd73478a26af","type":"inject","z":"f13d3b083d5cc429","name":"","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"7200","crontab":"","once":false,"onceDelay":0.1,"topic":"","payload":"","payloadType":"date","x":199,"y":181,"wires":[["d598829cba783cad"]]},{"id":"67b77f304303cb27","type":"http request","z":"f13d3b083d5cc429","name":"send off to backup server","method":"POST","ret":"txt","paytoqs":"ignore","url":"","tls":"","persist":false,"proxy":"","insecureHTTPParser":false,"authType":"","senderr":false,"headers":[],"x":1119,"y":181,"wires":[[]]},{"id":"ddce7325bdba57d8","type":"change","z":"f13d3b083d5cc429","name":"setup payload for zip node","rules":[{"t":"set","p":"_p","pt":"msg","to":"[]","tot":"json"},{"t":"set","p":"_p[0]","pt":"msg","to":"{ \"filename\": \"openmindmap_flows.json\", \"payload\": \"\" }","tot":"json"},{"t":"set","p":"_p[0].payload","pt":"msg","to":"payload","tot":"msg"},{"t":"set","p":"token","pt":"msg","to":"BACKUP_ZIP_TOKEN","tot":"env"},{"t":"set","p":"_p[1]","pt":"msg","to":"{ \"filename\": \"token.txt\", \"payload\": \"\" & token & \"\" }","tot":"jsonata"},{"t":"set","p":"payload","pt":"msg","to":"_p","tot":"msg"},{"t":"set","p":"url","pt":"msg","to":"BACKUP_ENDPOINT","tot":"env"}],"action":"","property":"","from":"","to":"","reg":false,"x":549,"y":401,"wires":[["1f879c968f033a26"]]},{"id":"1f879c968f033a26","type":"zip","z":"f13d3b083d5cc429","name":"","mode":"compress","filename":"backup.zip","compressionlevel":"9","outasstring":false,"x":769,"y":401,"wires":[["53808fa58e1aa543"]]},{"id":"53808fa58e1aa543","type":"base64","z":"f13d3b083d5cc429","name":"","action":"","property":"payload","x":929,"y":301,"wires":[["67b77f304303cb27"]]}]

Example 3: Group with name

Groups can be used in Node-RED to cluster different nodes that work together, the plugin can visual groups aswell.

As json:

[{"id":"e2ec7bbe752d60b0","type":"BlogDetails","z":"184fd5793b8d906c","name":"Open Mind Map Blog Configuration","authorName":"Gregorius Rippenstein","authorEmail":"gregorius@rippenstein.art","authorUrl":"https://gregorius.rippenstein.art","blogUrl":"https://blog.openmindmap.org","blogPathPrefix":"/blog","blogTitle":"Open Mind Map Blog","blogSubtitle":"Global mind-map for a global world.","blogCopyrightOwner":"Open Mind-Map Org.","x":818,"y":906.5,"wires":[["85a8755de2d6ae5c"]]},{"id":"1956265f7f508d04","type":"group","z":"184fd5793b8d906c","name":"ensure correct domain","style":{"label":true,"fill":"#bfc7d7","fill-opacity":"0.71","color":"#000000"},"nodes":["26b099616f74f352","42795f82c29b8583","1f0ea79587166fdd","6f6d63b5fa995b5c","1d1325b68a7cac1e","cdaeb49728432c46"],"x":163,"y":136,"w":877,"h":189.5},{"id":"26b099616f74f352","type":"switch","z":"184fd5793b8d906c","g":"1956265f7f508d04","name":"check hostname","property":"req.hostname","propertyType":"msg","rules":[{"t":"eq","v":"blog.openmindmap.org","vt":"str"},{"t":"eq","v":"demo.openmindmap.org","vt":"str"},{"t":"else"}],"checkall":"false","repair":false,"outputs":3,"x":533,"y":184.5,"wires":[["e2ec7bbe752d60b0"],["1f0ea79587166fdd"],["6f6d63b5fa995b5c"]]},{"id":"42795f82c29b8583","type":"http in","z":"184fd5793b8d906c","g":"1956265f7f508d04","name":"","url":"/","method":"get","upload":false,"swaggerDoc":"","x":239,"y":184.5,"wires":[["26b099616f74f352"]]},{"id":"1f0ea79587166fdd","type":"http response","z":"184fd5793b8d906c","g":"1956265f7f508d04","name":"redirect if demo.omm.org","statusCode":"301","headers":{"Location":"/omm"},"x":887,"y":185.5,"wires":[]},{"id":"6f6d63b5fa995b5c","type":"http response","z":"184fd5793b8d906c","g":"1956265f7f508d04","name":"NOT FOUND everything else","statusCode":"404","headers":{},"x":894,"y":227.5,"wires":[]},{"id":"1d1325b68a7cac1e","type":"http in","z":"184fd5793b8d906c","g":"1956265f7f508d04","name":"","url":"/blog/:name","method":"get","upload":false,"swaggerDoc":"","x":269,"y":232.5,"wires":[["26b099616f74f352"]]},{"id":"cdaeb49728432c46","type":"http in","z":"184fd5793b8d906c","g":"1956265f7f508d04","name":"","url":"/:name","method":"get","upload":false,"swaggerDoc":"","x":259,"y":284.5,"wires":[["26b099616f74f352"]]},{"id":"95389d39f5c53d23","type":"group","z":"184fd5793b8d906c","name":"map path to blog content","style":{"label":true,"stroke":"#000000","color":"#000000"},"nodes":["85c463f82c547140","32bb06dfab9a9529","85a8755de2d6ae5c","7fa818203cac5402","71c533e01539c3d3","180d18e4931a5ace","0d6c29c07f300c15","f4781993f9dc4130","b41e2620ed591a2d","a4bf3e5ac7c74343","5d0edf716dc5c6b5"],"x":1182,"y":790.5,"w":2129,"h":264},{"id":"85c463f82c547140","type":"template","z":"184fd5793b8d906c","g":"95389d39f5c53d23","name":"HTML Layout","field":"payload","fieldType":"msg","format":"handlebars","syntax":"mustache","template":"","output":"str","x":3035,"y":1013.5,"wires":[["32bb06dfab9a9529"]]},{"id":"32bb06dfab9a9529","type":"http response","z":"184fd5793b8d906c","g":"95389d39f5c53d23","name":"","statusCode":"200","headers":{},"x":3225,"y":932.5,"wires":[]},{"id":"85a8755de2d6ae5c","type":"switch","z":"184fd5793b8d906c","g":"95389d39f5c53d23","name":"Path handling","property":"req.params.name","propertyType":"msg","rules":[{"t":"eq","v":"apple-touch-icon.png","vt":"str"},{"t":"eq","v":"favicon.ico","vt":"str"},{"t":"eq","v":"sitemap.xml","vt":"str"},{"t":"eq","v":"feed.xml","vt":"str"},{"t":"eq","v":"rss.xml","vt":"str"},{"t":"eq","v":"index","vt":"str"},{"t":"eq","v":"blog","vt":"str"},{"t":"nnull"},{"t":"else"}],"checkall":"false","repair":false,"outputs":9,"x":1288,"y":906.5,"wires":[[],[],[],[],[],["7fa818203cac5402"],["0d6c29c07f300c15"],["7fa818203cac5402"],["0d6c29c07f300c15"]]},{"id":"7fa818203cac5402","type":"change","z":"184fd5793b8d906c","g":"95389d39f5c53d23","name":"set page target: \"[blog] <name>\"","rules":[{"t":"set","p":"target","pt":"msg","to":"\"[blog] \" & msg.req.params.name","tot":"jsonata"}],"action":"","property":"","from":"","to":"","reg":false,"x":1638,"y":886.5,"wires":[["71c533e01539c3d3"]]},{"id":"71c533e01539c3d3","type":"link call","z":"184fd5793b8d906c","g":"95389d39f5c53d23","name":"generate page content","links":[],"linkType":"dynamic","timeout":"5","x":1941,"y":951.5,"wires":[["f4781993f9dc4130"]]},{"id":"180d18e4931a5ace","type":"markdown","z":"184fd5793b8d906c","g":"95389d39f5c53d23","name":"Markdown to HTML","x":2794,"y":1013.5,"wires":[["85c463f82c547140"]]},{"id":"0d6c29c07f300c15","type":"change","z":"184fd5793b8d906c","g":"95389d39f5c53d23","name":"target: \"[blog] index\"","rules":[{"t":"set","p":"target","pt":"msg","to":"[blog] index","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":1598,"y":951.5,"wires":[["71c533e01539c3d3"]]},{"id":"f4781993f9dc4130","type":"switch","z":"184fd5793b8d906c","g":"95389d39f5c53d23","name":"ignore redirects","property":"statusCode","propertyType":"msg","rules":[{"t":"eq","v":"301","vt":"num"},{"t":"eq","v":"302","vt":"num"},{"t":"else"}],"checkall":"false","repair":false,"outputs":3,"x":2152,"y":951.5,"wires":[[],[],["b41e2620ed591a2d"]]},{"id":"b41e2620ed591a2d","type":"switch","z":"184fd5793b8d906c","g":"95389d39f5c53d23","name":"path extension is '.html'?","property":"page.path","propertyType":"msg","rules":[{"t":"regex","v":"\\.html$","vt":"str","case":true},{"t":"else"}],"checkall":"false","repair":false,"outputs":2,"x":2524,"y":831.5,"wires":[["32bb06dfab9a9529"],["a4bf3e5ac7c74343"]]},{"id":"a4bf3e5ac7c74343","type":"switch","z":"184fd5793b8d906c","g":"95389d39f5c53d23","name":"is msg.htmlcontent set?","property":"htmlcontent","propertyType":"msg","rules":[{"t":"nnull"},{"t":"else"}],"checkall":"false","repair":false,"outputs":2,"x":2526,"y":935.5,"wires":[["5d0edf716dc5c6b5"],["180d18e4931a5ace"]]},{"id":"5d0edf716dc5c6b5","type":"change","z":"184fd5793b8d906c","g":"95389d39f5c53d23","name":"","rules":[{"t":"set","p":"payload","pt":"msg","to":"htmlcontent","tot":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":2863,"y":929.5,"wires":[["32bb06dfab9a9529"]]}]

as visualisation:

[{"id":"e2ec7bbe752d60b0","type":"BlogDetails","z":"184fd5793b8d906c","name":"Open Mind Map Blog Configuration","authorName":"Gregorius Rippenstein","authorEmail":"gregorius@rippenstein.art","authorUrl":"https://gregorius.rippenstein.art","blogUrl":"https://blog.openmindmap.org","blogPathPrefix":"/blog","blogTitle":"Open Mind Map Blog","blogSubtitle":"Global mind-map for a global world.","blogCopyrightOwner":"Open Mind-Map Org.","x":818,"y":906.5,"wires":[["85a8755de2d6ae5c"]]},{"id":"1956265f7f508d04","type":"group","z":"184fd5793b8d906c","name":"ensure correct domain","style":{"label":true,"fill":"#bfc7d7","fill-opacity":"0.71","color":"#000000"},"nodes":["26b099616f74f352","42795f82c29b8583","1f0ea79587166fdd","6f6d63b5fa995b5c","1d1325b68a7cac1e","cdaeb49728432c46"],"x":163,"y":136,"w":877,"h":189.5},{"id":"26b099616f74f352","type":"switch","z":"184fd5793b8d906c","g":"1956265f7f508d04","name":"check hostname","property":"req.hostname","propertyType":"msg","rules":[{"t":"eq","v":"blog.openmindmap.org","vt":"str"},{"t":"eq","v":"demo.openmindmap.org","vt":"str"},{"t":"else"}],"checkall":"false","repair":false,"outputs":3,"x":533,"y":184.5,"wires":[["e2ec7bbe752d60b0"],["1f0ea79587166fdd"],["6f6d63b5fa995b5c"]]},{"id":"42795f82c29b8583","type":"http in","z":"184fd5793b8d906c","g":"1956265f7f508d04","name":"","url":"/","method":"get","upload":false,"swaggerDoc":"","x":239,"y":184.5,"wires":[["26b099616f74f352"]]},{"id":"1f0ea79587166fdd","type":"http response","z":"184fd5793b8d906c","g":"1956265f7f508d04","name":"redirect if demo.omm.org","statusCode":"301","headers":{"Location":"/omm"},"x":887,"y":185.5,"wires":[]},{"id":"6f6d63b5fa995b5c","type":"http response","z":"184fd5793b8d906c","g":"1956265f7f508d04","name":"NOT FOUND everything else","statusCode":"404","headers":{},"x":894,"y":227.5,"wires":[]},{"id":"1d1325b68a7cac1e","type":"http in","z":"184fd5793b8d906c","g":"1956265f7f508d04","name":"","url":"/blog/:name","method":"get","upload":false,"swaggerDoc":"","x":269,"y":232.5,"wires":[["26b099616f74f352"]]},{"id":"cdaeb49728432c46","type":"http in","z":"184fd5793b8d906c","g":"1956265f7f508d04","name":"","url":"/:name","method":"get","upload":false,"swaggerDoc":"","x":259,"y":284.5,"wires":[["26b099616f74f352"]]},{"id":"95389d39f5c53d23","type":"group","z":"184fd5793b8d906c","name":"map path to blog content","style":{"label":true,"stroke":"#000000","color":"#000000"},"nodes":["85c463f82c547140","32bb06dfab9a9529","85a8755de2d6ae5c","7fa818203cac5402","71c533e01539c3d3","180d18e4931a5ace","0d6c29c07f300c15","f4781993f9dc4130","b41e2620ed591a2d","a4bf3e5ac7c74343","5d0edf716dc5c6b5"],"x":1182,"y":790.5,"w":2129,"h":264},{"id":"85c463f82c547140","type":"template","z":"184fd5793b8d906c","g":"95389d39f5c53d23","name":"HTML Layout","field":"payload","fieldType":"msg","format":"handlebars","syntax":"mustache","template":"","output":"str","x":3035,"y":1013.5,"wires":[["32bb06dfab9a9529"]]},{"id":"32bb06dfab9a9529","type":"http response","z":"184fd5793b8d906c","g":"95389d39f5c53d23","name":"","statusCode":"200","headers":{},"x":3225,"y":932.5,"wires":[]},{"id":"85a8755de2d6ae5c","type":"switch","z":"184fd5793b8d906c","g":"95389d39f5c53d23","name":"Path handling","property":"req.params.name","propertyType":"msg","rules":[{"t":"eq","v":"apple-touch-icon.png","vt":"str"},{"t":"eq","v":"favicon.ico","vt":"str"},{"t":"eq","v":"sitemap.xml","vt":"str"},{"t":"eq","v":"feed.xml","vt":"str"},{"t":"eq","v":"rss.xml","vt":"str"},{"t":"eq","v":"index","vt":"str"},{"t":"eq","v":"blog","vt":"str"},{"t":"nnull"},{"t":"else"}],"checkall":"false","repair":false,"outputs":9,"x":1288,"y":906.5,"wires":[[],[],[],[],[],["7fa818203cac5402"],["0d6c29c07f300c15"],["7fa818203cac5402"],["0d6c29c07f300c15"]]},{"id":"7fa818203cac5402","type":"change","z":"184fd5793b8d906c","g":"95389d39f5c53d23","name":"set page target: \"[blog] <name>\"","rules":[{"t":"set","p":"target","pt":"msg","to":"\"[blog] \" & msg.req.params.name","tot":"jsonata"}],"action":"","property":"","from":"","to":"","reg":false,"x":1638,"y":886.5,"wires":[["71c533e01539c3d3"]]},{"id":"71c533e01539c3d3","type":"link call","z":"184fd5793b8d906c","g":"95389d39f5c53d23","name":"generate page content","links":[],"linkType":"dynamic","timeout":"5","x":1941,"y":951.5,"wires":[["f4781993f9dc4130"]]},{"id":"180d18e4931a5ace","type":"markdown","z":"184fd5793b8d906c","g":"95389d39f5c53d23","name":"Markdown to HTML","x":2794,"y":1013.5,"wires":[["85c463f82c547140"]]},{"id":"0d6c29c07f300c15","type":"change","z":"184fd5793b8d906c","g":"95389d39f5c53d23","name":"target: \"[blog] index\"","rules":[{"t":"set","p":"target","pt":"msg","to":"[blog] index","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":1598,"y":951.5,"wires":[["71c533e01539c3d3"]]},{"id":"f4781993f9dc4130","type":"switch","z":"184fd5793b8d906c","g":"95389d39f5c53d23","name":"ignore redirects","property":"statusCode","propertyType":"msg","rules":[{"t":"eq","v":"301","vt":"num"},{"t":"eq","v":"302","vt":"num"},{"t":"else"}],"checkall":"false","repair":false,"outputs":3,"x":2152,"y":951.5,"wires":[[],[],["b41e2620ed591a2d"]]},{"id":"b41e2620ed591a2d","type":"switch","z":"184fd5793b8d906c","g":"95389d39f5c53d23","name":"path extension is '.html'?","property":"page.path","propertyType":"msg","rules":[{"t":"regex","v":"\\.html$","vt":"str","case":true},{"t":"else"}],"checkall":"false","repair":false,"outputs":2,"x":2524,"y":831.5,"wires":[["32bb06dfab9a9529"],["a4bf3e5ac7c74343"]]},{"id":"a4bf3e5ac7c74343","type":"switch","z":"184fd5793b8d906c","g":"95389d39f5c53d23","name":"is msg.htmlcontent set?","property":"htmlcontent","propertyType":"msg","rules":[{"t":"nnull"},{"t":"else"}],"checkall":"false","repair":false,"outputs":2,"x":2526,"y":935.5,"wires":[["5d0edf716dc5c6b5"],["180d18e4931a5ace"]]},{"id":"5d0edf716dc5c6b5","type":"change","z":"184fd5793b8d906c","g":"95389d39f5c53d23","name":"","rules":[{"t":"set","p":"payload","pt":"msg","to":"htmlcontent","tot":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":2863,"y":929.5,"wires":[["32bb06dfab9a9529"]]}]

This is the hostname filter on my blog, this blog having been created in Node-RED.

Example 4: Location is not important

Nodes are generated where they are located in the flow editor, their json representation has coordinates that are based on a 5000px by 5000px editor page. Therefore this plugin moves everything that makes the flow to the top left hand corner so no scrolling is necessary.

[{"id":"523327924cdb577e","type":"link in","z":"3b1289d7ccf9cb0f","name":"[blog] codeblock-test","links":[],"x":317,"y":1265,"wires":[["4195651c394926ef"]]},{"id":"4195651c394926ef","type":"BlogPageInfo","z":"3b1289d7ccf9cb0f","name":"","image":"","summary":"CaN I replace codeblocks with images?","title":"Testingt he inclusion and replacement of codeblocks","publishedAt":"2023-06-25T11:22","updatedAt":"2023-06-25T11:22","incRss":false,"incSitemap":false,"incIndex":false,"shrLinkedIn":false,"reloadOnEdit":false,"redirectToNode":false,"redirectNodeId":"status-404","redirectStatusCode":"301","x":433.71435546875,"y":1353,"wires":[["a5aca26d804cccd1"]]},{"id":"a5aca26d804cccd1","type":"template","z":"3b1289d7ccf9cb0f","name":"flow example 1","field":"flowexample1","fieldType":"msg","format":"handlebars","syntax":"mustache","template":"[{\"id\":\"39b83ec3d1b780d6\",\"type\":\"link in\",\"z\":\"3b1289d7ccf9cb0f\",\"name\":\"[blog] embedded-flow.html\",\"links\":[],\"x\":139.42858123779297,\"y\":118.28565311431885,\"wires\":[[\"2d3b78db024dd988\"]]},{\"id\":\"2d3b78db024dd988\",\"type\":\"BlogPageInfo\",\"z\":\"3b1289d7ccf9cb0f\",\"name\":\"\",\"image\":\"\",\"summary\":\"Can I generate html directly without using markdown markup?\",\"title\":\"This is a test of something new\",\"publishedAt\":\"2023-06-25T11:22\",\"updatedAt\":\"2023-06-25T11:22\",\"incRss\":false,\"incSitemap\":false,\"incIndex\":false,\"shrLinkedIn\":false,\"reloadOnEdit\":false,\"redirectToNode\":false,\"redirectNodeId\":\"status-404\",\"redirectStatusCode\":\"301\",\"x\":336.14295196533203,\"y\":118.28565311431885,\"wires\":[[\"df6327f923a1ae3a\"]]},{\"id\":\"c9469bc8f43477f8\",\"type\":\"link out\",\"z\":\"3b1289d7ccf9cb0f\",\"name\":\"link out 80\",\"mode\":\"return\",\"links\":[],\"x\":1181.4287853240967,\"y\":111.71424674987793,\"wires\":[]},{\"id\":\"8a027a1eec82ec7c\",\"type\":\"switch\",\"z\":\"3b1289d7ccf9cb0f\",\"name\":\"has _linkSource - is this a link-call action\",\"property\":\"_linkSource\",\"propertyType\":\"msg\",\"rules\":[{\"t\":\"nnull\"},{\"t\":\"else\"}],\"checkall\":\"true\",\"repair\":false,\"outputs\":2,\"x\":891.2859725952148,\"y\":118.14280700683594,\"wires\":[[\"c9469bc8f43477f8\"],[]]},{\"id\":\"df6327f923a1ae3a\",\"type\":\"template\",\"z\":\"3b1289d7ccf9cb0f\",\"name\":\"v1\",\"field\":\"payload\",\"fieldType\":\"msg\",\"format\":\"javascript\",\"syntax\":\"mustache\",\"template\":\"<!DOCTYPE html>\\n<html lang=\\\"en\\\">\\n  <head>\\n    <meta charset=\\\"UTF-8\\\">\\n    <meta http-equiv=\\\"X-UA-Compatible\\\" content=\\\"IE=edge\\\">\\n    <meta name=\\\"viewport\\\" content=\\\"width=device-width, initial-scale=1\\\">\\n\\n    <title>Flow Embeddation</title>\\n\\n    <link rel=\\\"alternate\\\" type=\\\"application/rss+xml\\\" href=\\\"/feed.xml\\\" title=\\\"Subscribe to Blog Open Mind Map Org\\\">\\n    <link rel=\\\"sitemap\\\" type=\\\"application/xml\\\" title=\\\"Sitemap\\\" href=\\\"/sitemap.xml\\\">\\n\\n    <link rel=\\\"apple-touch-icon\\\" sizes=\\\"180x180\\\" href=\\\"/f/i/apple-touch-icon.png\\\">\\n    <link rel=\\\"icon\\\" type=\\\"image/png\\\" sizes=\\\"32x32\\\" href=\\\"/f/i/favicon-32x32.png\\\">\\n    <link rel=\\\"icon\\\" type=\\\"image/png\\\" sizes=\\\"16x16\\\" href=\\\"/f/i/favicon-16x16.png\\\">\\n    <link rel=\\\"manifest\\\" href=\\\"/f/site.webmanifest\\\">\\n\\n                        <script src=\\\"/content/jquery-3.7.0.min.js\\\" integrity=\\\"sha512-3gJwYpMe3QewGELv8k/BX9vcqhryRdzRMxVfq6ngyWXwo03GFEzjsUm8Q7RZcHPHksttq7/GFoxjCVUjkjvPdw==\\\" crossorigin=\\\"anonymous\\\" referrerpolicy=\\\"no-referrer\\\"></script>\\n  </head>\\n\\n  <body>\\n    <a href=\\\"https://demo.openmindmap.org/omm/#flow/6c8ce462533a1da4\\\">Original Flow</a>, <a href=\\\"https://demo.openmindmap.org/omm/#flow/3b1289d7ccf9cb0f/n/df6327f923a1ae3a/edit\\\">Codebase</a>. <a href=\\\"https://blog.openmindmap.org/blog/embedded-flow-v2.html\\\">Version 2 with text</a>.\\n    <div id='svgcontainer' style=\\\"transform: scale(0.5,0.5) translate(-2500px,-2500px) ; top: 30; left: 0; position: absolute;\\\">\\n      <svg id=\\\"svgelem\\\" width=\\\"5000\\\" height=\\\"5000\\\" viewBox=\\\"0 0 5000 5000\\\" pointer-events=\\\"all\\\" style=\\\"cursor: crosshair; touch-action: none;\\\" version=\\\"1.1\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\">\\n        <g id='flowWires'></g>\\n        <g id='flowNodes'></g>\\n      </svg>\\n    </div>\\n  </body>\\n\\n\\n  <script>\\n    var flowId = \\\"6c8ce462533a1da4\\\";\\n    \\n    function getNode(n, v) {\\n          var elm = document.createElementNS(\\\"http://www.w3.org/2000/svg\\\", n);\\n          for (var p in v) {  elm.setAttributeNS(null, p, v[p]); }\\n        return elm;\\n    }\\n    $(function(){\\n      $.ajax({\\n        dataType: \\\"json\\\",\\n        url: \\\"https://demo.openmindmap.org/omm/flows\\\",\\n        method: 'get',\\n        success: function(flowdata) { \\n              var nodes = {};\\n              var wires = {};\\n\\n          var svgObj = $('#flowNodes');\\n          \\n          flowdata.forEach( function(obj) {\\n            if ( obj.z == flowId ) {\\n              switch (obj.type) {\\n                case \\\"junction\\\":\\n                  $(svgObj).append(getNode('rect', { x: obj.x, y: obj.y, rx: 2, ry: 2, fill: 'black', stroke: 'red', width: '10', height: '10', \\\"stroke-width\\\": 2}));\\n                  break;\\n                default: \\n                  $(svgObj).append(getNode('rect', { x: obj.x, y: obj.y, rx: 5, ry: 5, fill: \\\"rgb(243, 181, 103)\\\", stroke: 'grey', width: '120', height: '30', \\\"stroke-width\\\": 2 }));\\n                  break;\\n              }\\n              nodes[obj.id] = obj;\\n            } \\n          });\\n\\n          svgObj = $('#flowWires');\\n          for ( var ndeId in nodes) {\\n            var nde = nodes[ndeId];\\n\\n            ((nde.wires || [[]])[0] || []).forEach( function(otherNodeId){\\n              var otherNode = nodes[otherNodeId];\\n              if ( otherNode ) {\\n                $(svgObj).append(getNode('line', { \\n                    x1: nde.x + (nde.type != \\\"junction\\\" ? 120 : 5), \\n                    y1: nde.y + (nde.type == \\\"junction\\\" ? 5 : 15), \\n                    x2: otherNode.x + (otherNode.type == \\\"junction\\\" ? 5 : 0), \\n                    y2: otherNode.y + (otherNode.type == \\\"junction\\\" ? 5 : 15), \\n                    stroke: 'grey', \\n                    \\\"stroke-width\\\": 4 \\n                }));\\n              }\\n            })\\n          }\\n        }\\n      });\\n    });\\n  </script>\\n</html>\\n\\n\\n\\n\\n\\n\",\"output\":\"str\",\"x\":571.8573722839355,\"y\":118.28565311431885,\"wires\":[[\"8a027a1eec82ec7c\"]]},{\"id\":\"f8739da5f7a011bd\",\"type\":\"link in\",\"z\":\"3b1289d7ccf9cb0f\",\"name\":\"[blog] embedded-flow-v2.html\",\"links\":[],\"x\":139.42858123779297,\"y\":177.85708618164062,\"wires\":[[\"8e4814da5150c7dc\"]]},{\"id\":\"8e4814da5150c7dc\",\"type\":\"BlogPageInfo\",\"z\":\"3b1289d7ccf9cb0f\",\"name\":\"\",\"image\":\"\",\"summary\":\"Can I generate html directly without using markdown markup?\",\"title\":\"This is a test of something new\",\"publishedAt\":\"2023-06-25T11:22\",\"updatedAt\":\"2023-06-25T11:22\",\"incRss\":false,\"incSitemap\":false,\"incIndex\":false,\"shrLinkedIn\":false,\"reloadOnEdit\":false,\"redirectToNode\":false,\"redirectNodeId\":\"status-404\",\"redirectStatusCode\":\"301\",\"x\":346.14295196533203,\"y\":177.85708618164062,\"wires\":[[\"b9c96684fe8c6510\"]]},{\"id\":\"b9c96684fe8c6510\",\"type\":\"template\",\"z\":\"3b1289d7ccf9cb0f\",\"name\":\"v2\",\"field\":\"payload\",\"fieldType\":\"msg\",\"format\":\"javascript\",\"syntax\":\"mustache\",\"template\":\"<!DOCTYPE html>\\n<html lang=\\\"en\\\">\\n  <head>\\n    <meta charset=\\\"UTF-8\\\">\\n    <meta http-equiv=\\\"X-UA-Compatible\\\" content=\\\"IE=edge\\\">\\n    <meta name=\\\"viewport\\\" content=\\\"width=device-width, initial-scale=1\\\">\\n\\n    <title>Flow Embeddation</title>\\n\\n    <link rel=\\\"alternate\\\" type=\\\"application/rss+xml\\\" href=\\\"/feed.xml\\\" title=\\\"Subscribe to Blog Open Mind Map Org\\\">\\n    <link rel=\\\"sitemap\\\" type=\\\"application/xml\\\" title=\\\"Sitemap\\\" href=\\\"/sitemap.xml\\\">\\n\\n    <link rel=\\\"apple-touch-icon\\\" sizes=\\\"180x180\\\" href=\\\"/f/i/apple-touch-icon.png\\\">\\n    <link rel=\\\"icon\\\" type=\\\"image/png\\\" sizes=\\\"32x32\\\" href=\\\"/f/i/favicon-32x32.png\\\">\\n    <link rel=\\\"icon\\\" type=\\\"image/png\\\" sizes=\\\"16x16\\\" href=\\\"/f/i/favicon-16x16.png\\\">\\n    <link rel=\\\"manifest\\\" href=\\\"/f/site.webmanifest\\\">\\n\\n                        <script src=\\\"/content/jquery-3.7.0.min.js\\\" integrity=\\\"sha512-3gJwYpMe3QewGELv8k/BX9vcqhryRdzRMxVfq6ngyWXwo03GFEzjsUm8Q7RZcHPHksttq7/GFoxjCVUjkjvPdw==\\\" crossorigin=\\\"anonymous\\\" referrerpolicy=\\\"no-referrer\\\"></script>\\n  </head>\\n\\n  <body>\\n    <div id='svgcontainer' style=\\\"transform: scale(0.5,0.5) translate(-2500px,-2500px) ; top: 0; left: 0; position: absolute;\\\">\\n      <svg id=\\\"svgelem\\\" width=\\\"5000\\\" height=\\\"5000\\\" viewBox=\\\"0 0 5000 5000\\\" pointer-events=\\\"all\\\" style=\\\"cursor: crosshair; touch-action: none;\\\" version=\\\"1.1\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\">\\n        <!-- these two groups ensure that the nodes are always above the wires, see the structure of the SVG in the editor. -->\\n        <g id='flowWires'></g>\\n        <g id='flowNodes'></g>\\n      </svg>\\n    </div>\\n  </body>\\n\\n\\n  <script>\\n    var flowId = \\\"6c8ce462533a1da4\\\";\\n    \\n    function getNode(n, v) {\\n          var elm = document.createElementNS(\\\"http://www.w3.org/2000/svg\\\", n);\\n          for (var p in v) {  elm.setAttributeNS(null, p, v[p]); }\\n        return elm;\\n    }\\n    $(function(){\\n      $.ajax({\\n        dataType: \\\"json\\\",\\n        url: \\\"https://demo.openmindmap.org/omm/flows\\\",\\n        method: 'get',\\n        success: function(flowdata) { \\n              var nodes = {};\\n              var wires = {};\\n\\n          var svgObj = $('#flowNodes');\\n          \\n          flowdata.forEach( function(obj) {\\n            if ( obj.z == flowId ) {\\n              switch (obj.type) {\\n                case \\\"junction\\\":\\n                  \\n                  $(svgObj).append(getNode('rect', { x: obj.x, y: obj.y, rx: 2, ry: 2, fill: 'black', stroke: 'red', width: '10', height: '10', \\\"stroke-width\\\": 2}));\\n                  break;\\n\\n                default: \\n\\n                  var grpText = document.createElementNS(\\\"http://www.w3.org/2000/svg\\\", 'g');\\n                  var grpTextId = \\\"grpTxt\\\" + Math.random().toString().substring(2);\\n\\n                  grpText.setAttributeNS(null, \\\"id\\\", grpTextId);\\n                  grpText.setAttributeNS(null, \\\"transform\\\", \\\"translate(38,20)\\\");\\n\\n                  var textElem = document.createElementNS(\\\"http://www.w3.org/2000/svg\\\", 'text');\\n\\n                  var elemTextId = \\\"elmTxt\\\" + Math.random().toString().substring(2);\\n                  textElem.setAttributeNS(null, \\\"id\\\", elemTextId);\\n                  textElem.textContent = obj.name || obj.info || obj.text || obj.type;\\n                  \\n                  grpText.appendChild( textElem )\\n\\n                  var grpId = \\\"grp\\\" + Math.random().toString().substring(2);\\n                  $(svgObj).append(getNode('g', { id: grpId,  }));\\n                  var grpObj = $('#' + grpId);\\n\\n                  $(grpObj).append(grpText);\\n\\n                  var txtBBox = document.getElementById(elemTextId).getBBox();\\n                  var txtWidth = txtBBox.width;\\n                  var txtHeight = txtBBox.height;\\n                  var rectWidth = 120;\\n                  var rectHeight = 30;\\n\\n                  if ((txtWidth + 38) > (rectWidth-10) ) {\\n                    rectWidth = (txtWidth + 38) + 10;\\n                    obj._realX = (obj.x - (rectWidth - 120));\\n                  }\\n\\n                  if (txtHeight > rectHeight) {\\n                    rectHeight = txtHeight + 5;\\n                  }\\n\\n                  $(grpObj).prepend(getNode('rect', { rx: 5, ry: 5, fill: \\\"rgb(243, 181, 103)\\\", stroke: 'grey', width: rectWidth, height: rectHeight, \\\"stroke-width\\\": 2 }));\\n                  $(grpObj).attr(\\\"transform\\\", \\\"translate(\\\" + (obj._realX || obj.x) + \\\",\\\" + obj.y + \\\")\\\");\\n                  break;\\n              }\\n              nodes[obj.id] = obj;\\n            } \\n          });\\n\\n          svgObj = $('#flowWires');\\n\\n          for ( var ndeId in nodes) {\\n            var nde = nodes[ndeId];\\n\\n            ((nde.wires || [[]])[0] || []).forEach( function(otherNodeId){\\n              var otherNode = nodes[otherNodeId];\\n              if ( otherNode ) {\\n\\n                var startX = nde.x + (nde.type == \\\"junction\\\" ? 5 : 120);\\n                var startY = nde.y + (nde.type == \\\"junction\\\" ? 5 : 15); /* TODO: this magic 15 should be half the height of the rectangle */\\n                var endX = (otherNode._realX || otherNode.x) + (otherNode.type == \\\"junction\\\" ? 5 : 0);\\n                var endY = otherNode.y + (otherNode.type == \\\"junction\\\" ? 5 : 15);\\n\\n                /*\\n                $(svgObj).append(getNode('path', { \\n                  d: \\\"M \\\" + startX + \\\" \\\" + startY + \\\" C \\\",\\n                  stroke: 'grey',\\n                  \\\"stroke-width\\\": 4 \\n                });\\n                */\\n                $(svgObj).append(getNode('line', { \\n                    x1: nde.x + (nde.type == \\\"junction\\\" ? 5 : 120), \\n                    y1: nde.y + (nde.type == \\\"junction\\\" ? 5 : 15), \\n                    x2: (otherNode._realX || otherNode.x) + (otherNode.type == \\\"junction\\\" ? 5 : 0), \\n                    y2: otherNode.y + (otherNode.type == \\\"junction\\\" ? 5 : 15), \\n                    stroke: 'grey', \\n                    \\\"stroke-width\\\": 4 \\n                }));\\n              }\\n            })\\n          }\\n        }\\n      });\\n    });\\n  </script>\\n\\n  {{#page.reload}}\\n<script>\\n    var socket = undefined;\\n\\nfunction initSocket() {\\n  // Connection opened\\n  socket = new WebSocket(\\\"wss://blog.openmindmap.org/cmds\\\");\\n\\n  socket.onclose = function() {\\n    initSocket();\\n  };\\n\\n  // Listen for messages\\n  socket.addEventListener(\\\"message\\\", (event) => {\\n    if ( event.data == \\\"reload\\\") {\\n      window.location.reload();\\n    }\\n  });\\n};\\n\\ndocument.addEventListener(\\\"DOMContentLoaded\\\", initSocket );\\n</script>\\n\\n{{/page.reload}}\\n</html>\\n\\n\\n\\n\\n\\n\",\"output\":\"str\",\"x\":571.8573722839355,\"y\":177.85708618164062,\"wires\":[[\"8a027a1eec82ec7c\"]]},{\"id\":\"a23b3d9747beea6e\",\"type\":\"template\",\"z\":\"3b1289d7ccf9cb0f\",\"name\":\"v3\",\"field\":\"payload\",\"fieldType\":\"msg\",\"format\":\"javascript\",\"syntax\":\"mustache\",\"template\":\"<!DOCTYPE html>\\n<html lang=\\\"en\\\">\\n  <head>\\n    <meta charset=\\\"UTF-8\\\">\\n    <meta http-equiv=\\\"X-UA-Compatible\\\" content=\\\"IE=edge\\\">\\n    <meta name=\\\"viewport\\\" content=\\\"width=device-width, initial-scale=1\\\">\\n\\n    <title>Flow Embeddation</title>\\n\\n    <link rel=\\\"alternate\\\" type=\\\"application/rss+xml\\\" href=\\\"/feed.xml\\\" title=\\\"Subscribe to Blog Open Mind Map Org\\\">\\n    <link rel=\\\"sitemap\\\" type=\\\"application/xml\\\" title=\\\"Sitemap\\\" href=\\\"/sitemap.xml\\\">\\n\\n    <link rel=\\\"apple-touch-icon\\\" sizes=\\\"180x180\\\" href=\\\"/f/i/apple-touch-icon.png\\\">\\n    <link rel=\\\"icon\\\" type=\\\"image/png\\\" sizes=\\\"32x32\\\" href=\\\"/f/i/favicon-32x32.png\\\">\\n    <link rel=\\\"icon\\\" type=\\\"image/png\\\" sizes=\\\"16x16\\\" href=\\\"/f/i/favicon-16x16.png\\\">\\n    <link rel=\\\"manifest\\\" href=\\\"/f/site.webmanifest\\\">\\n\\n    <script src=\\\"/content/jquery-3.7.0.min.js\\\" integrity=\\\"sha512-3gJwYpMe3QewGELv8k/BX9vcqhryRdzRMxVfq6ngyWXwo03GFEzjsUm8Q7RZcHPHksttq7/GFoxjCVUjkjvPdw==\\\" crossorigin=\\\"anonymous\\\" referrerpolicy=\\\"no-referrer\\\"></script>\\n    <script src=\\\"/embed/helpers.js\\\" crossorigin=\\\"anonymous\\\" referrerpolicy=\\\"no-referrer\\\"></script>\\n  </head>\\n\\n  <body>\\n    <select id=\\\"flowSelector\\\"></select> == <a id=\\\"flowLinkToOriginal\\\" target=_blank href=\\\"\\\">Link to Original</a>\\n\\n    <div id='svgcontainer' style=\\\"transform: scale(0.5,0.5) translate(-2500px,-2500px) ; top: 50; left: 0; position: absolute;\\\">\\n      <svg id=\\\"svgelem\\\" width=\\\"5000\\\" height=\\\"5000\\\" viewBox=\\\"0 0 5000 5000\\\" pointer-events=\\\"all\\\" style=\\\"cursor: crosshair; touch-action: none;\\\" version=\\\"1.1\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\">\\n        <!-- Use group elems to ensure that layering of shapes is correct, i.e. nodes always over links -->\\n        <g id='flowGroups'></g>\\n        <g id='flowWires'></g>\\n        <g id='flowNodes'></g>\\n      </svg>\\n    </div>\\n  </body>\\n\\n\\n  <script>\\n\\n\\n    $(function(){\\n      $('#flowSelector').on( 'change', onChangeSelector);\\n      $('#flowLinkToOriginal').attr( 'href', \\\"https://demo.openmindmap.org/omm/#flow/\\\" + flowId);\\n      \\n      $.ajax({\\n        dataType: \\\"json\\\",\\n        url: \\\"https://demo.openmindmap.org/omm/flows\\\",\\n        method: 'get',\\n        success: function(flowdata) { \\n          flowData = flowdata;\\n          fillFlowSelector( flowId, flowdata);\\n          renderFlow(flowId, flowdata);\\n        }\\n      });\\n    });\\n  </script>\\n\\n{{ #page.reload }}\\n  <!-- debug aid: reload page when I deploy Node-RED - don't need to explicitly reload any changes -->\\n<script>\\n    var socket = undefined;\\n\\nfunction initSocket() {\\n  // Connection opened\\n  socket = new WebSocket(\\\"wss://blog.openmindmap.org/cmds\\\");\\n\\n  socket.onclose = function() {\\n    initSocket();\\n  };\\n\\n  // Listen for messages\\n  socket.addEventListener(\\\"message\\\", (event) => {\\n    if ( event.data == \\\"reload\\\") {\\n      window.location.reload();\\n    }\\n  });\\n};\\n\\ndocument.addEventListener(\\\"DOMContentLoaded\\\", initSocket );\\n</script>\\n{{ /page.reload }}\\n\\n</html>\\n\\n\\n\\n\\n\\n\",\"output\":\"str\",\"x\":571.8573722839355,\"y\":233.57142639160156,\"wires\":[[\"8a027a1eec82ec7c\"]]},{\"id\":\"4333204273c7c806\",\"type\":\"link in\",\"z\":\"3b1289d7ccf9cb0f\",\"name\":\"[blog] embedded-flow-v3.html\",\"links\":[],\"x\":139.42858123779297,\"y\":233.57142639160156,\"wires\":[[\"2a7c6ae2a9995a51\"]]},{\"id\":\"2a7c6ae2a9995a51\",\"type\":\"BlogPageInfo\",\"z\":\"3b1289d7ccf9cb0f\",\"name\":\"\",\"image\":\"\",\"summary\":\"Can I generate html directly without using markdown markup?\",\"title\":\"This is a test of something new\",\"publishedAt\":\"2023-06-25T11:22\",\"updatedAt\":\"2023-06-25T11:22\",\"incRss\":false,\"incSitemap\":false,\"incIndex\":false,\"shrLinkedIn\":false,\"reloadOnEdit\":false,\"redirectToNode\":false,\"redirectNodeId\":\"status-404\",\"redirectStatusCode\":\"301\",\"x\":346.14295196533203,\"y\":233.57142639160156,\"wires\":[[\"a23b3d9747beea6e\"]]},{\"id\":\"5adccb35363b1881\",\"type\":\"template\",\"z\":\"3b1289d7ccf9cb0f\",\"name\":\"v4\",\"field\":\"payload\",\"fieldType\":\"msg\",\"format\":\"html\",\"syntax\":\"mustache\",\"template\":\"<!DOCTYPE html>\\n<html lang=\\\"en\\\">\\n  <head>\\n    <meta charset=\\\"UTF-8\\\">\\n    <meta http-equiv=\\\"X-UA-Compatible\\\" content=\\\"IE=edge\\\">\\n    <meta name=\\\"viewport\\\" content=\\\"width=device-width, initial-scale=1\\\">\\n\\n    <title>Flow Embeddation</title>\\n\\n    <link rel=\\\"alternate\\\" type=\\\"application/rss+xml\\\" href=\\\"/feed.xml\\\" title=\\\"Subscribe to Blog Open Mind Map Org\\\">\\n    <link rel=\\\"sitemap\\\" type=\\\"application/xml\\\" title=\\\"Sitemap\\\" href=\\\"/sitemap.xml\\\">\\n\\n    <link rel=\\\"apple-touch-icon\\\" sizes=\\\"180x180\\\" href=\\\"/f/i/apple-touch-icon.png\\\">\\n    <link rel=\\\"icon\\\" type=\\\"image/png\\\" sizes=\\\"32x32\\\" href=\\\"/f/i/favicon-32x32.png\\\">\\n    <link rel=\\\"icon\\\" type=\\\"image/png\\\" sizes=\\\"16x16\\\" href=\\\"/f/i/favicon-16x16.png\\\">\\n    <link rel=\\\"manifest\\\" href=\\\"/f/site.webmanifest\\\">\\n\\n    <script src=\\\"/content/jquery-3.7.0.min.js\\\" integrity=\\\"sha512-3gJwYpMe3QewGELv8k/BX9vcqhryRdzRMxVfq6ngyWXwo03GFEzjsUm8Q7RZcHPHksttq7/GFoxjCVUjkjvPdw==\\\" crossorigin=\\\"anonymous\\\" referrerpolicy=\\\"no-referrer\\\"></script>\\n    <script src=\\\"/embed/helpers-v4.js\\\" crossorigin=\\\"anonymous\\\" referrerpolicy=\\\"no-referrer\\\"></script>\\n  </head>\\n\\n  <body>\\n    <select id=\\\"flowSelector\\\"></select> == <a id=\\\"flowLinkToOriginal\\\" target=_blank href=\\\"\\\">Link to Original</a>\\n\\n    <div id='svgcontainer' \\n         style=\\\"transform: scale(0.5,0.5) translate(-2500px,-2500px) ; top: 50px; left: 10px; position: absolute; overflow: scroll; display: block;\\\">\\n      <svg id=\\\"svgelem\\\" width=\\\"5000\\\" height=\\\"5000\\\" viewBox=\\\"0 0 5000 5000\\\" pointer-events=\\\"all\\\" style=\\\"cursor: crosshair;\\\" version=\\\"1.1\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\">\\n        <!-- Use group elems to ensure that layering of shapes is correct, i.e. nodes always over links -->\\n        <g id='flowGroups'></g>\\n        <g id='flowWires'></g>\\n        <g id='flowNodes'></g>\\n      </svg>\\n    </div>\\n  </body>\\n\\n\\n  <script>\\n\\n\\n    $(function(){\\n      $('#flowSelector').on( 'change', onChangeSelector);\\n      $('#flowLinkToOriginal').attr( 'href', \\\"https://demo.openmindmap.org/omm/#flow/\\\" + flowId);\\n      \\n      $.ajax({\\n        dataType: \\\"json\\\",\\n        url: \\\"https://demo.openmindmap.org/omm/flows\\\",\\n        method: 'get',\\n        success: function(flowdata) { \\n          flowData = flowdata;\\n          fillFlowSelector( flowId, flowdata);\\n          renderFlow(flowId, flowdata);\\n        }\\n      });\\n    });\\n  </script>\\n\\n                      {{ #page.reload }}\\n                      <!-- debug aid: reload page when I deploy Node-RED - don't need to explicitly reload any changes -->\\n                      <script>\\n                        var socket = undefined;\\n                      \\n                                              function initSocket() {\\n                                                // Connection opened\\n                                                socket = new WebSocket(\\\"wss://blog.openmindmap.org/cmds\\\");\\n                      \\n                                              socket.onclose = function() {\\n                                                initSocket();\\n                        };\\n                      \\n                        // Listen for messages\\n                        socket.addEventListener(\\\"message\\\", (event) => {\\n                          if ( event.data == \\\"reload\\\") {\\n                                                window.location.reload();\\n                          }\\n                        });\\n                      };\\n                      \\n                                              document.addEventListener(\\\"DOMContentLoaded\\\", initSocket );\\n                      </script>\\n                      {{/ page.reload}}\\n</html>\\n\\n\\n\\n\\n\\n\",\"output\":\"str\",\"x\":571.8573722839355,\"y\":298.57142639160156,\"wires\":[[\"8a027a1eec82ec7c\"]]},{\"id\":\"bb373e24e578d9d8\",\"type\":\"link in\",\"z\":\"3b1289d7ccf9cb0f\",\"name\":\"[blog] embedded-flow-v4.html\",\"links\":[],\"x\":139.42858123779297,\"y\":298.57142639160156,\"wires\":[[\"d96afef150addb88\"]]},{\"id\":\"d96afef150addb88\",\"type\":\"BlogPageInfo\",\"z\":\"3b1289d7ccf9cb0f\",\"name\":\"\",\"image\":\"\",\"summary\":\"Can I generate html directly without using markdown markup?\",\"title\":\"This is a test of something new\",\"publishedAt\":\"2023-06-25T11:22\",\"updatedAt\":\"2023-06-25T11:22\",\"incRss\":false,\"incSitemap\":false,\"incIndex\":false,\"shrLinkedIn\":false,\"reloadOnEdit\":false,\"redirectToNode\":false,\"redirectNodeId\":\"status-404\",\"redirectStatusCode\":\"301\",\"x\":346.14295196533203,\"y\":298.57142639160156,\"wires\":[[\"5adccb35363b1881\"]]},{\"id\":\"510c57da02cb23e8\",\"type\":\"template\",\"z\":\"3b1289d7ccf9cb0f\",\"name\":\"v5\",\"field\":\"payload\",\"fieldType\":\"msg\",\"format\":\"javascript\",\"syntax\":\"mustache\",\"template\":\"<!DOCTYPE html>\\n<html lang=\\\"en\\\">\\n  <head>\\n    <meta charset=\\\"UTF-8\\\">\\n    <meta http-equiv=\\\"X-UA-Compatible\\\" content=\\\"IE=edge\\\">\\n    <meta name=\\\"viewport\\\" content=\\\"width=device-width, initial-scale=1\\\">\\n\\n    <title>Flow Embeddation</title>\\n\\n    <link rel=\\\"alternate\\\" type=\\\"application/rss+xml\\\" href=\\\"/feed.xml\\\" title=\\\"Subscribe to Blog Open Mind Map Org\\\">\\n    <link rel=\\\"sitemap\\\" type=\\\"application/xml\\\" title=\\\"Sitemap\\\" href=\\\"/sitemap.xml\\\">\\n\\n    <link rel=\\\"apple-touch-icon\\\" sizes=\\\"180x180\\\" href=\\\"/f/i/apple-touch-icon.png\\\">\\n    <link rel=\\\"icon\\\" type=\\\"image/png\\\" sizes=\\\"32x32\\\" href=\\\"/f/i/favicon-32x32.png\\\">\\n    <link rel=\\\"icon\\\" type=\\\"image/png\\\" sizes=\\\"16x16\\\" href=\\\"/f/i/favicon-16x16.png\\\">\\n    <link rel=\\\"manifest\\\" href=\\\"/f/site.webmanifest\\\">\\n\\n    <script src=\\\"/content/jquery-3.7.0.min.js\\\" integrity=\\\"sha512-3gJwYpMe3QewGELv8k/BX9vcqhryRdzRMxVfq6ngyWXwo03GFEzjsUm8Q7RZcHPHksttq7/GFoxjCVUjkjvPdw==\\\" crossorigin=\\\"anonymous\\\" referrerpolicy=\\\"no-referrer\\\"></script>\\n    <script src=\\\"/embed/helpers-v5.js\\\" crossorigin=\\\"anonymous\\\" referrerpolicy=\\\"no-referrer\\\"></script>\\n    <link rel=\\\"stylesheet\\\" href=\\\"/embed/helpers.css\\\">\\n  </head>\\n\\n  <body>\\n    <select id=\\\"flowSelector\\\"></select> == <a id=\\\"flowLinkToOriginal\\\" target=_blank href=\\\"\\\">Link to Original</a>\\n\\n    <div id='svgcontainer' \\n         style=\\\"transform: scale(0.5,0.5) translate(-2500px,-2500px) ; top: 50px; left: 10px; position: absolute; overflow: scroll; display: block;\\\">\\n      <svg id=\\\"svgelem\\\" width=\\\"5000\\\" height=\\\"5000\\\" viewBox=\\\"0 0 5000 5000\\\" pointer-events=\\\"all\\\" style=\\\"cursor: crosshair;\\\" version=\\\"1.1\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\">\\n        <!-- Use group elems to ensure that layering of shapes is correct, i.e. nodes always over links -->\\n        <g id='flowGroups'></g>\\n        <g id='flowWires'></g>\\n        <g id='flowNodes'></g>\\n      </svg>\\n    </div>\\n  </body>\\n\\n\\n  <script>\\n\\n\\n    $(function(){\\n      $('#flowSelector').on( 'change', onChangeSelector);\\n      $('#flowLinkToOriginal').attr( 'href', \\\"https://demo.openmindmap.org/omm/#flow/\\\" + flowId);\\n      \\n      $.ajax({\\n        dataType: \\\"json\\\",\\n        url: \\\"https://demo.openmindmap.org/omm/flows\\\",\\n        method: 'get',\\n        success: function(flowdata) { \\n          flowData = flowdata;\\n          fillFlowSelector( flowId, flowdata);\\n          renderFlow(flowId, flowdata);\\n        }\\n      });\\n    });\\n  </script>\\n\\n\\n{{#page.reload}}\\n  <!-- debug aid: reload page when I deploy Node-RED - don't need to explicitly reload any changes -->\\n<script>\\n    var socket = undefined;\\n\\nfunction initSocket() {\\n  // Connection opened\\n  socket = new WebSocket(\\\"wss://blog.openmindmap.org/cmds\\\");\\n\\n  socket.onclose = function() {\\n    initSocket();\\n  };\\n\\n  // Listen for messages\\n  socket.addEventListener(\\\"message\\\", (event) => {\\n    if ( event.data == \\\"reload\\\") {\\n      window.location.reload();\\n    }\\n  });\\n};\\n\\ndocument.addEventListener(\\\"DOMContentLoaded\\\", initSocket );\\n</script>\\n{{/page.reload}}\\n\\n</html>\\n\\n\\n\\n\\n\\n\",\"output\":\"str\",\"x\":577,\"y\":361,\"wires\":[[\"8a027a1eec82ec7c\"]]},{\"id\":\"f0b074190c1ab98f\",\"type\":\"link in\",\"z\":\"3b1289d7ccf9cb0f\",\"name\":\"[blog] embedded-flow-v5.html\",\"links\":[],\"x\":144.57120895385742,\"y\":361,\"wires\":[[\"43528dd3046696bf\"]]},{\"id\":\"43528dd3046696bf\",\"type\":\"BlogPageInfo\",\"z\":\"3b1289d7ccf9cb0f\",\"name\":\"\",\"image\":\"\",\"summary\":\"Can I generate html directly without using markdown markup?\",\"title\":\"This is a test of something new\",\"publishedAt\":\"2023-06-25T11:22\",\"updatedAt\":\"2023-06-25T11:22\",\"incRss\":false,\"incSitemap\":false,\"incIndex\":false,\"shrLinkedIn\":false,\"reloadOnEdit\":false,\"redirectToNode\":false,\"redirectNodeId\":\"status-404\",\"redirectStatusCode\":\"301\",\"x\":351.2855796813965,\"y\":361,\"wires\":[[\"510c57da02cb23e8\"]]}]","output":"str","x":557,"y":1023,"wires":[["543a3c0420b92eff"]]},{"id":"543a3c0420b92eff","type":"template","z":"3b1289d7ccf9cb0f","name":"flowexample2","field":"flowexample2","fieldType":"msg","format":"handlebars","syntax":"mustache","template":"[{\"id\":\"d598829cba783cad\",\"type\":\"GetFlows\",\"z\":\"f13d3b083d5cc429\",\"name\":\"\",\"flowVersion\":\"v1\",\"useAuthentication\":false,\"apiUsername\":\"\",\"apiUsernameType\":\"env\",\"apiPassword\":\"\",\"apiPasswordType\":\"env\",\"x\":349,\"y\":301,\"wires\":[[\"ddce7325bdba57d8\"]]},{\"id\":\"c507dd73478a26af\",\"type\":\"inject\",\"z\":\"f13d3b083d5cc429\",\"name\":\"\",\"props\":[{\"p\":\"payload\"},{\"p\":\"topic\",\"vt\":\"str\"}],\"repeat\":\"7200\",\"crontab\":\"\",\"once\":false,\"onceDelay\":0.1,\"topic\":\"\",\"payload\":\"\",\"payloadType\":\"date\",\"x\":199,\"y\":181,\"wires\":[[\"d598829cba783cad\"]]},{\"id\":\"67b77f304303cb27\",\"type\":\"http request\",\"z\":\"f13d3b083d5cc429\",\"name\":\"send off to backup server\",\"method\":\"POST\",\"ret\":\"txt\",\"paytoqs\":\"ignore\",\"url\":\"\",\"tls\":\"\",\"persist\":false,\"proxy\":\"\",\"insecureHTTPParser\":false,\"authType\":\"\",\"senderr\":false,\"headers\":[],\"x\":1119,\"y\":181,\"wires\":[[]]},{\"id\":\"ddce7325bdba57d8\",\"type\":\"change\",\"z\":\"f13d3b083d5cc429\",\"name\":\"setup payload for zip node\",\"rules\":[{\"t\":\"set\",\"p\":\"_p\",\"pt\":\"msg\",\"to\":\"[]\",\"tot\":\"json\"},{\"t\":\"set\",\"p\":\"_p[0]\",\"pt\":\"msg\",\"to\":\"{ \\\"filename\\\": \\\"openmindmap_flows.json\\\", \\\"payload\\\": \\\"\\\" }\",\"tot\":\"json\"},{\"t\":\"set\",\"p\":\"_p[0].payload\",\"pt\":\"msg\",\"to\":\"payload\",\"tot\":\"msg\"},{\"t\":\"set\",\"p\":\"token\",\"pt\":\"msg\",\"to\":\"BACKUP_ZIP_TOKEN\",\"tot\":\"env\"},{\"t\":\"set\",\"p\":\"_p[1]\",\"pt\":\"msg\",\"to\":\"{ \\\"filename\\\": \\\"token.txt\\\", \\\"payload\\\": \\\"\\\" & token & \\\"\\\" }\",\"tot\":\"jsonata\"},{\"t\":\"set\",\"p\":\"payload\",\"pt\":\"msg\",\"to\":\"_p\",\"tot\":\"msg\"},{\"t\":\"set\",\"p\":\"url\",\"pt\":\"msg\",\"to\":\"BACKUP_ENDPOINT\",\"tot\":\"env\"}],\"action\":\"\",\"property\":\"\",\"from\":\"\",\"to\":\"\",\"reg\":false,\"x\":549,\"y\":401,\"wires\":[[\"1f879c968f033a26\"]]},{\"id\":\"1f879c968f033a26\",\"type\":\"zip\",\"z\":\"f13d3b083d5cc429\",\"name\":\"\",\"mode\":\"compress\",\"filename\":\"backup.zip\",\"compressionlevel\":\"9\",\"outasstring\":false,\"x\":769,\"y\":401,\"wires\":[[\"53808fa58e1aa543\"]]},{\"id\":\"53808fa58e1aa543\",\"type\":\"base64\",\"z\":\"f13d3b083d5cc429\",\"name\":\"\",\"action\":\"\",\"property\":\"payload\",\"x\":929,\"y\":301,\"wires\":[[\"67b77f304303cb27\"]]}]","output":"str","x":664,"y":1081,"wires":[["3a2a8775f9c823ea"]]},{"id":"3a2a8775f9c823ea","type":"template","z":"3b1289d7ccf9cb0f","name":"flowexample3","field":"flowexample3","fieldType":"msg","format":"handlebars","syntax":"mustache","template":"[{\"id\":\"ef8e132ea7cfb169\",\"type\":\"group\",\"z\":\"1f980ab215b3d38b\",\"name\":\"ensure correct domain\",\"style\":{\"label\":true,\"fill\":\"#bfc7d7\",\"fill-opacity\":\"0.71\",\"color\":\"#000000\"},\"nodes\":[\"74524fd544d06041\",\"e43251341bcee72a\",\"a2974608d980c146\",\"9d78a06220c7c8d8\",\"a43ab9aa8a80e60a\",\"b6e61b1f9f246701\"],\"x\":23,\"y\":103.5,\"w\":877,\"h\":189.5},{\"id\":\"74524fd544d06041\",\"type\":\"switch\",\"z\":\"1f980ab215b3d38b\",\"g\":\"ef8e132ea7cfb169\",\"name\":\"check hostname\",\"property\":\"req.hostname\",\"propertyType\":\"msg\",\"rules\":[{\"t\":\"eq\",\"v\":\"blog.openmindmap.org\",\"vt\":\"str\"},{\"t\":\"eq\",\"v\":\"demo.openmindmap.org\",\"vt\":\"str\"},{\"t\":\"else\"}],\"checkall\":\"false\",\"repair\":false,\"outputs\":3,\"x\":393,\"y\":152,\"wires\":[[\"11368594c2effb54\"],[\"a2974608d980c146\"],[\"9d78a06220c7c8d8\"]]},{\"id\":\"e43251341bcee72a\",\"type\":\"http in\",\"z\":\"1f980ab215b3d38b\",\"g\":\"ef8e132ea7cfb169\",\"name\":\"\",\"url\":\"/\",\"method\":\"get\",\"upload\":false,\"swaggerDoc\":\"\",\"x\":99,\"y\":152,\"wires\":[[\"74524fd544d06041\"]]},{\"id\":\"a2974608d980c146\",\"type\":\"http response\",\"z\":\"1f980ab215b3d38b\",\"g\":\"ef8e132ea7cfb169\",\"name\":\"redirect if demo.omm.org\",\"statusCode\":\"301\",\"headers\":{\"Location\":\"/omm\"},\"x\":747,\"y\":153,\"wires\":[]},{\"id\":\"9d78a06220c7c8d8\",\"type\":\"http response\",\"z\":\"1f980ab215b3d38b\",\"g\":\"ef8e132ea7cfb169\",\"name\":\"NOT FOUND everything else\",\"statusCode\":\"404\",\"headers\":{},\"x\":754,\"y\":195,\"wires\":[]},{\"id\":\"a43ab9aa8a80e60a\",\"type\":\"http in\",\"z\":\"1f980ab215b3d38b\",\"g\":\"ef8e132ea7cfb169\",\"name\":\"\",\"url\":\"/blog/:name\",\"method\":\"get\",\"upload\":false,\"swaggerDoc\":\"\",\"x\":129,\"y\":200,\"wires\":[[\"74524fd544d06041\"]]},{\"id\":\"b6e61b1f9f246701\",\"type\":\"http in\",\"z\":\"1f980ab215b3d38b\",\"g\":\"ef8e132ea7cfb169\",\"name\":\"\",\"url\":\"/:name\",\"method\":\"get\",\"upload\":false,\"swaggerDoc\":\"\",\"x\":119,\"y\":252,\"wires\":[[\"74524fd544d06041\"]]}]","output":"str","x":748,"y":1143,"wires":[["968121829ec13f89"]]},{"id":"968121829ec13f89","type":"template","z":"3b1289d7ccf9cb0f","name":"flowexample4","field":"flowexample4","fieldType":"msg","format":"handlebars","syntax":"mustache","template":"","output":"str","x":840,"y":1200,"wires":[["af750fbb1cba639d"]]}]

image:

[{"id":"523327924cdb577e","type":"link in","z":"3b1289d7ccf9cb0f","name":"[blog] codeblock-test","links":[],"x":317,"y":1265,"wires":[["4195651c394926ef"]]},{"id":"4195651c394926ef","type":"BlogPageInfo","z":"3b1289d7ccf9cb0f","name":"","image":"","summary":"CaN I replace codeblocks with images?","title":"Testingt he inclusion and replacement of codeblocks","publishedAt":"2023-06-25T11:22","updatedAt":"2023-06-25T11:22","incRss":false,"incSitemap":false,"incIndex":false,"shrLinkedIn":false,"reloadOnEdit":false,"redirectToNode":false,"redirectNodeId":"status-404","redirectStatusCode":"301","x":433.71435546875,"y":1353,"wires":[["a5aca26d804cccd1"]]},{"id":"a5aca26d804cccd1","type":"template","z":"3b1289d7ccf9cb0f","name":"flow example 1","field":"flowexample1","fieldType":"msg","format":"handlebars","syntax":"mustache","template":"[{\"id\":\"39b83ec3d1b780d6\",\"type\":\"link in\",\"z\":\"3b1289d7ccf9cb0f\",\"name\":\"[blog] embedded-flow.html\",\"links\":[],\"x\":139.42858123779297,\"y\":118.28565311431885,\"wires\":[[\"2d3b78db024dd988\"]]},{\"id\":\"2d3b78db024dd988\",\"type\":\"BlogPageInfo\",\"z\":\"3b1289d7ccf9cb0f\",\"name\":\"\",\"image\":\"\",\"summary\":\"Can I generate html directly without using markdown markup?\",\"title\":\"This is a test of something new\",\"publishedAt\":\"2023-06-25T11:22\",\"updatedAt\":\"2023-06-25T11:22\",\"incRss\":false,\"incSitemap\":false,\"incIndex\":false,\"shrLinkedIn\":false,\"reloadOnEdit\":false,\"redirectToNode\":false,\"redirectNodeId\":\"status-404\",\"redirectStatusCode\":\"301\",\"x\":336.14295196533203,\"y\":118.28565311431885,\"wires\":[[\"df6327f923a1ae3a\"]]},{\"id\":\"c9469bc8f43477f8\",\"type\":\"link out\",\"z\":\"3b1289d7ccf9cb0f\",\"name\":\"link out 80\",\"mode\":\"return\",\"links\":[],\"x\":1181.4287853240967,\"y\":111.71424674987793,\"wires\":[]},{\"id\":\"8a027a1eec82ec7c\",\"type\":\"switch\",\"z\":\"3b1289d7ccf9cb0f\",\"name\":\"has _linkSource - is this a link-call action\",\"property\":\"_linkSource\",\"propertyType\":\"msg\",\"rules\":[{\"t\":\"nnull\"},{\"t\":\"else\"}],\"checkall\":\"true\",\"repair\":false,\"outputs\":2,\"x\":891.2859725952148,\"y\":118.14280700683594,\"wires\":[[\"c9469bc8f43477f8\"],[]]},{\"id\":\"df6327f923a1ae3a\",\"type\":\"template\",\"z\":\"3b1289d7ccf9cb0f\",\"name\":\"v1\",\"field\":\"payload\",\"fieldType\":\"msg\",\"format\":\"javascript\",\"syntax\":\"mustache\",\"template\":\"<!DOCTYPE html>\\n<html lang=\\\"en\\\">\\n  <head>\\n    <meta charset=\\\"UTF-8\\\">\\n    <meta http-equiv=\\\"X-UA-Compatible\\\" content=\\\"IE=edge\\\">\\n    <meta name=\\\"viewport\\\" content=\\\"width=device-width, initial-scale=1\\\">\\n\\n    <title>Flow Embeddation</title>\\n\\n    <link rel=\\\"alternate\\\" type=\\\"application/rss+xml\\\" href=\\\"/feed.xml\\\" title=\\\"Subscribe to Blog Open Mind Map Org\\\">\\n    <link rel=\\\"sitemap\\\" type=\\\"application/xml\\\" title=\\\"Sitemap\\\" href=\\\"/sitemap.xml\\\">\\n\\n    <link rel=\\\"apple-touch-icon\\\" sizes=\\\"180x180\\\" href=\\\"/f/i/apple-touch-icon.png\\\">\\n    <link rel=\\\"icon\\\" type=\\\"image/png\\\" sizes=\\\"32x32\\\" href=\\\"/f/i/favicon-32x32.png\\\">\\n    <link rel=\\\"icon\\\" type=\\\"image/png\\\" sizes=\\\"16x16\\\" href=\\\"/f/i/favicon-16x16.png\\\">\\n    <link rel=\\\"manifest\\\" href=\\\"/f/site.webmanifest\\\">\\n\\n                        <script src=\\\"/content/jquery-3.7.0.min.js\\\" integrity=\\\"sha512-3gJwYpMe3QewGELv8k/BX9vcqhryRdzRMxVfq6ngyWXwo03GFEzjsUm8Q7RZcHPHksttq7/GFoxjCVUjkjvPdw==\\\" crossorigin=\\\"anonymous\\\" referrerpolicy=\\\"no-referrer\\\"></script>\\n  </head>\\n\\n  <body>\\n    <a href=\\\"https://demo.openmindmap.org/omm/#flow/6c8ce462533a1da4\\\">Original Flow</a>, <a href=\\\"https://demo.openmindmap.org/omm/#flow/3b1289d7ccf9cb0f/n/df6327f923a1ae3a/edit\\\">Codebase</a>. <a href=\\\"https://blog.openmindmap.org/blog/embedded-flow-v2.html\\\">Version 2 with text</a>.\\n    <div id='svgcontainer' style=\\\"transform: scale(0.5,0.5) translate(-2500px,-2500px) ; top: 30; left: 0; position: absolute;\\\">\\n      <svg id=\\\"svgelem\\\" width=\\\"5000\\\" height=\\\"5000\\\" viewBox=\\\"0 0 5000 5000\\\" pointer-events=\\\"all\\\" style=\\\"cursor: crosshair; touch-action: none;\\\" version=\\\"1.1\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\">\\n        <g id='flowWires'></g>\\n        <g id='flowNodes'></g>\\n      </svg>\\n    </div>\\n  </body>\\n\\n\\n  <script>\\n    var flowId = \\\"6c8ce462533a1da4\\\";\\n    \\n    function getNode(n, v) {\\n          var elm = document.createElementNS(\\\"http://www.w3.org/2000/svg\\\", n);\\n          for (var p in v) {  elm.setAttributeNS(null, p, v[p]); }\\n        return elm;\\n    }\\n    $(function(){\\n      $.ajax({\\n        dataType: \\\"json\\\",\\n        url: \\\"https://demo.openmindmap.org/omm/flows\\\",\\n        method: 'get',\\n        success: function(flowdata) { \\n              var nodes = {};\\n              var wires = {};\\n\\n          var svgObj = $('#flowNodes');\\n          \\n          flowdata.forEach( function(obj) {\\n            if ( obj.z == flowId ) {\\n              switch (obj.type) {\\n                case \\\"junction\\\":\\n                  $(svgObj).append(getNode('rect', { x: obj.x, y: obj.y, rx: 2, ry: 2, fill: 'black', stroke: 'red', width: '10', height: '10', \\\"stroke-width\\\": 2}));\\n                  break;\\n                default: \\n                  $(svgObj).append(getNode('rect', { x: obj.x, y: obj.y, rx: 5, ry: 5, fill: \\\"rgb(243, 181, 103)\\\", stroke: 'grey', width: '120', height: '30', \\\"stroke-width\\\": 2 }));\\n                  break;\\n              }\\n              nodes[obj.id] = obj;\\n            } \\n          });\\n\\n          svgObj = $('#flowWires');\\n          for ( var ndeId in nodes) {\\n            var nde = nodes[ndeId];\\n\\n            ((nde.wires || [[]])[0] || []).forEach( function(otherNodeId){\\n              var otherNode = nodes[otherNodeId];\\n              if ( otherNode ) {\\n                $(svgObj).append(getNode('line', { \\n                    x1: nde.x + (nde.type != \\\"junction\\\" ? 120 : 5), \\n                    y1: nde.y + (nde.type == \\\"junction\\\" ? 5 : 15), \\n                    x2: otherNode.x + (otherNode.type == \\\"junction\\\" ? 5 : 0), \\n                    y2: otherNode.y + (otherNode.type == \\\"junction\\\" ? 5 : 15), \\n                    stroke: 'grey', \\n                    \\\"stroke-width\\\": 4 \\n                }));\\n              }\\n            })\\n          }\\n        }\\n      });\\n    });\\n  </script>\\n</html>\\n\\n\\n\\n\\n\\n\",\"output\":\"str\",\"x\":571.8573722839355,\"y\":118.28565311431885,\"wires\":[[\"8a027a1eec82ec7c\"]]},{\"id\":\"f8739da5f7a011bd\",\"type\":\"link in\",\"z\":\"3b1289d7ccf9cb0f\",\"name\":\"[blog] embedded-flow-v2.html\",\"links\":[],\"x\":139.42858123779297,\"y\":177.85708618164062,\"wires\":[[\"8e4814da5150c7dc\"]]},{\"id\":\"8e4814da5150c7dc\",\"type\":\"BlogPageInfo\",\"z\":\"3b1289d7ccf9cb0f\",\"name\":\"\",\"image\":\"\",\"summary\":\"Can I generate html directly without using markdown markup?\",\"title\":\"This is a test of something new\",\"publishedAt\":\"2023-06-25T11:22\",\"updatedAt\":\"2023-06-25T11:22\",\"incRss\":false,\"incSitemap\":false,\"incIndex\":false,\"shrLinkedIn\":false,\"reloadOnEdit\":false,\"redirectToNode\":false,\"redirectNodeId\":\"status-404\",\"redirectStatusCode\":\"301\",\"x\":346.14295196533203,\"y\":177.85708618164062,\"wires\":[[\"b9c96684fe8c6510\"]]},{\"id\":\"b9c96684fe8c6510\",\"type\":\"template\",\"z\":\"3b1289d7ccf9cb0f\",\"name\":\"v2\",\"field\":\"payload\",\"fieldType\":\"msg\",\"format\":\"javascript\",\"syntax\":\"mustache\",\"template\":\"<!DOCTYPE html>\\n<html lang=\\\"en\\\">\\n  <head>\\n    <meta charset=\\\"UTF-8\\\">\\n    <meta http-equiv=\\\"X-UA-Compatible\\\" content=\\\"IE=edge\\\">\\n    <meta name=\\\"viewport\\\" content=\\\"width=device-width, initial-scale=1\\\">\\n\\n    <title>Flow Embeddation</title>\\n\\n    <link rel=\\\"alternate\\\" type=\\\"application/rss+xml\\\" href=\\\"/feed.xml\\\" title=\\\"Subscribe to Blog Open Mind Map Org\\\">\\n    <link rel=\\\"sitemap\\\" type=\\\"application/xml\\\" title=\\\"Sitemap\\\" href=\\\"/sitemap.xml\\\">\\n\\n    <link rel=\\\"apple-touch-icon\\\" sizes=\\\"180x180\\\" href=\\\"/f/i/apple-touch-icon.png\\\">\\n    <link rel=\\\"icon\\\" type=\\\"image/png\\\" sizes=\\\"32x32\\\" href=\\\"/f/i/favicon-32x32.png\\\">\\n    <link rel=\\\"icon\\\" type=\\\"image/png\\\" sizes=\\\"16x16\\\" href=\\\"/f/i/favicon-16x16.png\\\">\\n    <link rel=\\\"manifest\\\" href=\\\"/f/site.webmanifest\\\">\\n\\n                        <script src=\\\"/content/jquery-3.7.0.min.js\\\" integrity=\\\"sha512-3gJwYpMe3QewGELv8k/BX9vcqhryRdzRMxVfq6ngyWXwo03GFEzjsUm8Q7RZcHPHksttq7/GFoxjCVUjkjvPdw==\\\" crossorigin=\\\"anonymous\\\" referrerpolicy=\\\"no-referrer\\\"></script>\\n  </head>\\n\\n  <body>\\n    <div id='svgcontainer' style=\\\"transform: scale(0.5,0.5) translate(-2500px,-2500px) ; top: 0; left: 0; position: absolute;\\\">\\n      <svg id=\\\"svgelem\\\" width=\\\"5000\\\" height=\\\"5000\\\" viewBox=\\\"0 0 5000 5000\\\" pointer-events=\\\"all\\\" style=\\\"cursor: crosshair; touch-action: none;\\\" version=\\\"1.1\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\">\\n        <!-- these two groups ensure that the nodes are always above the wires, see the structure of the SVG in the editor. -->\\n        <g id='flowWires'></g>\\n        <g id='flowNodes'></g>\\n      </svg>\\n    </div>\\n  </body>\\n\\n\\n  <script>\\n    var flowId = \\\"6c8ce462533a1da4\\\";\\n    \\n    function getNode(n, v) {\\n          var elm = document.createElementNS(\\\"http://www.w3.org/2000/svg\\\", n);\\n          for (var p in v) {  elm.setAttributeNS(null, p, v[p]); }\\n        return elm;\\n    }\\n    $(function(){\\n      $.ajax({\\n        dataType: \\\"json\\\",\\n        url: \\\"https://demo.openmindmap.org/omm/flows\\\",\\n        method: 'get',\\n        success: function(flowdata) { \\n              var nodes = {};\\n              var wires = {};\\n\\n          var svgObj = $('#flowNodes');\\n          \\n          flowdata.forEach( function(obj) {\\n            if ( obj.z == flowId ) {\\n              switch (obj.type) {\\n                case \\\"junction\\\":\\n                  \\n                  $(svgObj).append(getNode('rect', { x: obj.x, y: obj.y, rx: 2, ry: 2, fill: 'black', stroke: 'red', width: '10', height: '10', \\\"stroke-width\\\": 2}));\\n                  break;\\n\\n                default: \\n\\n                  var grpText = document.createElementNS(\\\"http://www.w3.org/2000/svg\\\", 'g');\\n                  var grpTextId = \\\"grpTxt\\\" + Math.random().toString().substring(2);\\n\\n                  grpText.setAttributeNS(null, \\\"id\\\", grpTextId);\\n                  grpText.setAttributeNS(null, \\\"transform\\\", \\\"translate(38,20)\\\");\\n\\n                  var textElem = document.createElementNS(\\\"http://www.w3.org/2000/svg\\\", 'text');\\n\\n                  var elemTextId = \\\"elmTxt\\\" + Math.random().toString().substring(2);\\n                  textElem.setAttributeNS(null, \\\"id\\\", elemTextId);\\n                  textElem.textContent = obj.name || obj.info || obj.text || obj.type;\\n                  \\n                  grpText.appendChild( textElem )\\n\\n                  var grpId = \\\"grp\\\" + Math.random().toString().substring(2);\\n                  $(svgObj).append(getNode('g', { id: grpId,  }));\\n                  var grpObj = $('#' + grpId);\\n\\n                  $(grpObj).append(grpText);\\n\\n                  var txtBBox = document.getElementById(elemTextId).getBBox();\\n                  var txtWidth = txtBBox.width;\\n                  var txtHeight = txtBBox.height;\\n                  var rectWidth = 120;\\n                  var rectHeight = 30;\\n\\n                  if ((txtWidth + 38) > (rectWidth-10) ) {\\n                    rectWidth = (txtWidth + 38) + 10;\\n                    obj._realX = (obj.x - (rectWidth - 120));\\n                  }\\n\\n                  if (txtHeight > rectHeight) {\\n                    rectHeight = txtHeight + 5;\\n                  }\\n\\n                  $(grpObj).prepend(getNode('rect', { rx: 5, ry: 5, fill: \\\"rgb(243, 181, 103)\\\", stroke: 'grey', width: rectWidth, height: rectHeight, \\\"stroke-width\\\": 2 }));\\n                  $(grpObj).attr(\\\"transform\\\", \\\"translate(\\\" + (obj._realX || obj.x) + \\\",\\\" + obj.y + \\\")\\\");\\n                  break;\\n              }\\n              nodes[obj.id] = obj;\\n            } \\n          });\\n\\n          svgObj = $('#flowWires');\\n\\n          for ( var ndeId in nodes) {\\n            var nde = nodes[ndeId];\\n\\n            ((nde.wires || [[]])[0] || []).forEach( function(otherNodeId){\\n              var otherNode = nodes[otherNodeId];\\n              if ( otherNode ) {\\n\\n                var startX = nde.x + (nde.type == \\\"junction\\\" ? 5 : 120);\\n                var startY = nde.y + (nde.type == \\\"junction\\\" ? 5 : 15); /* TODO: this magic 15 should be half the height of the rectangle */\\n                var endX = (otherNode._realX || otherNode.x) + (otherNode.type == \\\"junction\\\" ? 5 : 0);\\n                var endY = otherNode.y + (otherNode.type == \\\"junction\\\" ? 5 : 15);\\n\\n                /*\\n                $(svgObj).append(getNode('path', { \\n                  d: \\\"M \\\" + startX + \\\" \\\" + startY + \\\" C \\\",\\n                  stroke: 'grey',\\n                  \\\"stroke-width\\\": 4 \\n                });\\n                */\\n                $(svgObj).append(getNode('line', { \\n                    x1: nde.x + (nde.type == \\\"junction\\\" ? 5 : 120), \\n                    y1: nde.y + (nde.type == \\\"junction\\\" ? 5 : 15), \\n                    x2: (otherNode._realX || otherNode.x) + (otherNode.type == \\\"junction\\\" ? 5 : 0), \\n                    y2: otherNode.y + (otherNode.type == \\\"junction\\\" ? 5 : 15), \\n                    stroke: 'grey', \\n                    \\\"stroke-width\\\": 4 \\n                }));\\n              }\\n            })\\n          }\\n        }\\n      });\\n    });\\n  </script>\\n\\n  {{#page.reload}}\\n<script>\\n    var socket = undefined;\\n\\nfunction initSocket() {\\n  // Connection opened\\n  socket = new WebSocket(\\\"wss://blog.openmindmap.org/cmds\\\");\\n\\n  socket.onclose = function() {\\n    initSocket();\\n  };\\n\\n  // Listen for messages\\n  socket.addEventListener(\\\"message\\\", (event) => {\\n    if ( event.data == \\\"reload\\\") {\\n      window.location.reload();\\n    }\\n  });\\n};\\n\\ndocument.addEventListener(\\\"DOMContentLoaded\\\", initSocket );\\n</script>\\n\\n{{/page.reload}}\\n</html>\\n\\n\\n\\n\\n\\n\",\"output\":\"str\",\"x\":571.8573722839355,\"y\":177.85708618164062,\"wires\":[[\"8a027a1eec82ec7c\"]]},{\"id\":\"a23b3d9747beea6e\",\"type\":\"template\",\"z\":\"3b1289d7ccf9cb0f\",\"name\":\"v3\",\"field\":\"payload\",\"fieldType\":\"msg\",\"format\":\"javascript\",\"syntax\":\"mustache\",\"template\":\"<!DOCTYPE html>\\n<html lang=\\\"en\\\">\\n  <head>\\n    <meta charset=\\\"UTF-8\\\">\\n    <meta http-equiv=\\\"X-UA-Compatible\\\" content=\\\"IE=edge\\\">\\n    <meta name=\\\"viewport\\\" content=\\\"width=device-width, initial-scale=1\\\">\\n\\n    <title>Flow Embeddation</title>\\n\\n    <link rel=\\\"alternate\\\" type=\\\"application/rss+xml\\\" href=\\\"/feed.xml\\\" title=\\\"Subscribe to Blog Open Mind Map Org\\\">\\n    <link rel=\\\"sitemap\\\" type=\\\"application/xml\\\" title=\\\"Sitemap\\\" href=\\\"/sitemap.xml\\\">\\n\\n    <link rel=\\\"apple-touch-icon\\\" sizes=\\\"180x180\\\" href=\\\"/f/i/apple-touch-icon.png\\\">\\n    <link rel=\\\"icon\\\" type=\\\"image/png\\\" sizes=\\\"32x32\\\" href=\\\"/f/i/favicon-32x32.png\\\">\\n    <link rel=\\\"icon\\\" type=\\\"image/png\\\" sizes=\\\"16x16\\\" href=\\\"/f/i/favicon-16x16.png\\\">\\n    <link rel=\\\"manifest\\\" href=\\\"/f/site.webmanifest\\\">\\n\\n    <script src=\\\"/content/jquery-3.7.0.min.js\\\" integrity=\\\"sha512-3gJwYpMe3QewGELv8k/BX9vcqhryRdzRMxVfq6ngyWXwo03GFEzjsUm8Q7RZcHPHksttq7/GFoxjCVUjkjvPdw==\\\" crossorigin=\\\"anonymous\\\" referrerpolicy=\\\"no-referrer\\\"></script>\\n    <script src=\\\"/embed/helpers.js\\\" crossorigin=\\\"anonymous\\\" referrerpolicy=\\\"no-referrer\\\"></script>\\n  </head>\\n\\n  <body>\\n    <select id=\\\"flowSelector\\\"></select> == <a id=\\\"flowLinkToOriginal\\\" target=_blank href=\\\"\\\">Link to Original</a>\\n\\n    <div id='svgcontainer' style=\\\"transform: scale(0.5,0.5) translate(-2500px,-2500px) ; top: 50; left: 0; position: absolute;\\\">\\n      <svg id=\\\"svgelem\\\" width=\\\"5000\\\" height=\\\"5000\\\" viewBox=\\\"0 0 5000 5000\\\" pointer-events=\\\"all\\\" style=\\\"cursor: crosshair; touch-action: none;\\\" version=\\\"1.1\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\">\\n        <!-- Use group elems to ensure that layering of shapes is correct, i.e. nodes always over links -->\\n        <g id='flowGroups'></g>\\n        <g id='flowWires'></g>\\n        <g id='flowNodes'></g>\\n      </svg>\\n    </div>\\n  </body>\\n\\n\\n  <script>\\n\\n\\n    $(function(){\\n      $('#flowSelector').on( 'change', onChangeSelector);\\n      $('#flowLinkToOriginal').attr( 'href', \\\"https://demo.openmindmap.org/omm/#flow/\\\" + flowId);\\n      \\n      $.ajax({\\n        dataType: \\\"json\\\",\\n        url: \\\"https://demo.openmindmap.org/omm/flows\\\",\\n        method: 'get',\\n        success: function(flowdata) { \\n          flowData = flowdata;\\n          fillFlowSelector( flowId, flowdata);\\n          renderFlow(flowId, flowdata);\\n        }\\n      });\\n    });\\n  </script>\\n\\n{{ #page.reload }}\\n  <!-- debug aid: reload page when I deploy Node-RED - don't need to explicitly reload any changes -->\\n<script>\\n    var socket = undefined;\\n\\nfunction initSocket() {\\n  // Connection opened\\n  socket = new WebSocket(\\\"wss://blog.openmindmap.org/cmds\\\");\\n\\n  socket.onclose = function() {\\n    initSocket();\\n  };\\n\\n  // Listen for messages\\n  socket.addEventListener(\\\"message\\\", (event) => {\\n    if ( event.data == \\\"reload\\\") {\\n      window.location.reload();\\n    }\\n  });\\n};\\n\\ndocument.addEventListener(\\\"DOMContentLoaded\\\", initSocket );\\n</script>\\n{{ /page.reload }}\\n\\n</html>\\n\\n\\n\\n\\n\\n\",\"output\":\"str\",\"x\":571.8573722839355,\"y\":233.57142639160156,\"wires\":[[\"8a027a1eec82ec7c\"]]},{\"id\":\"4333204273c7c806\",\"type\":\"link in\",\"z\":\"3b1289d7ccf9cb0f\",\"name\":\"[blog] embedded-flow-v3.html\",\"links\":[],\"x\":139.42858123779297,\"y\":233.57142639160156,\"wires\":[[\"2a7c6ae2a9995a51\"]]},{\"id\":\"2a7c6ae2a9995a51\",\"type\":\"BlogPageInfo\",\"z\":\"3b1289d7ccf9cb0f\",\"name\":\"\",\"image\":\"\",\"summary\":\"Can I generate html directly without using markdown markup?\",\"title\":\"This is a test of something new\",\"publishedAt\":\"2023-06-25T11:22\",\"updatedAt\":\"2023-06-25T11:22\",\"incRss\":false,\"incSitemap\":false,\"incIndex\":false,\"shrLinkedIn\":false,\"reloadOnEdit\":false,\"redirectToNode\":false,\"redirectNodeId\":\"status-404\",\"redirectStatusCode\":\"301\",\"x\":346.14295196533203,\"y\":233.57142639160156,\"wires\":[[\"a23b3d9747beea6e\"]]},{\"id\":\"5adccb35363b1881\",\"type\":\"template\",\"z\":\"3b1289d7ccf9cb0f\",\"name\":\"v4\",\"field\":\"payload\",\"fieldType\":\"msg\",\"format\":\"html\",\"syntax\":\"mustache\",\"template\":\"<!DOCTYPE html>\\n<html lang=\\\"en\\\">\\n  <head>\\n    <meta charset=\\\"UTF-8\\\">\\n    <meta http-equiv=\\\"X-UA-Compatible\\\" content=\\\"IE=edge\\\">\\n    <meta name=\\\"viewport\\\" content=\\\"width=device-width, initial-scale=1\\\">\\n\\n    <title>Flow Embeddation</title>\\n\\n    <link rel=\\\"alternate\\\" type=\\\"application/rss+xml\\\" href=\\\"/feed.xml\\\" title=\\\"Subscribe to Blog Open Mind Map Org\\\">\\n    <link rel=\\\"sitemap\\\" type=\\\"application/xml\\\" title=\\\"Sitemap\\\" href=\\\"/sitemap.xml\\\">\\n\\n    <link rel=\\\"apple-touch-icon\\\" sizes=\\\"180x180\\\" href=\\\"/f/i/apple-touch-icon.png\\\">\\n    <link rel=\\\"icon\\\" type=\\\"image/png\\\" sizes=\\\"32x32\\\" href=\\\"/f/i/favicon-32x32.png\\\">\\n    <link rel=\\\"icon\\\" type=\\\"image/png\\\" sizes=\\\"16x16\\\" href=\\\"/f/i/favicon-16x16.png\\\">\\n    <link rel=\\\"manifest\\\" href=\\\"/f/site.webmanifest\\\">\\n\\n    <script src=\\\"/content/jquery-3.7.0.min.js\\\" integrity=\\\"sha512-3gJwYpMe3QewGELv8k/BX9vcqhryRdzRMxVfq6ngyWXwo03GFEzjsUm8Q7RZcHPHksttq7/GFoxjCVUjkjvPdw==\\\" crossorigin=\\\"anonymous\\\" referrerpolicy=\\\"no-referrer\\\"></script>\\n    <script src=\\\"/embed/helpers-v4.js\\\" crossorigin=\\\"anonymous\\\" referrerpolicy=\\\"no-referrer\\\"></script>\\n  </head>\\n\\n  <body>\\n    <select id=\\\"flowSelector\\\"></select> == <a id=\\\"flowLinkToOriginal\\\" target=_blank href=\\\"\\\">Link to Original</a>\\n\\n    <div id='svgcontainer' \\n         style=\\\"transform: scale(0.5,0.5) translate(-2500px,-2500px) ; top: 50px; left: 10px; position: absolute; overflow: scroll; display: block;\\\">\\n      <svg id=\\\"svgelem\\\" width=\\\"5000\\\" height=\\\"5000\\\" viewBox=\\\"0 0 5000 5000\\\" pointer-events=\\\"all\\\" style=\\\"cursor: crosshair;\\\" version=\\\"1.1\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\">\\n        <!-- Use group elems to ensure that layering of shapes is correct, i.e. nodes always over links -->\\n        <g id='flowGroups'></g>\\n        <g id='flowWires'></g>\\n        <g id='flowNodes'></g>\\n      </svg>\\n    </div>\\n  </body>\\n\\n\\n  <script>\\n\\n\\n    $(function(){\\n      $('#flowSelector').on( 'change', onChangeSelector);\\n      $('#flowLinkToOriginal').attr( 'href', \\\"https://demo.openmindmap.org/omm/#flow/\\\" + flowId);\\n      \\n      $.ajax({\\n        dataType: \\\"json\\\",\\n        url: \\\"https://demo.openmindmap.org/omm/flows\\\",\\n        method: 'get',\\n        success: function(flowdata) { \\n          flowData = flowdata;\\n          fillFlowSelector( flowId, flowdata);\\n          renderFlow(flowId, flowdata);\\n        }\\n      });\\n    });\\n  </script>\\n\\n                      {{ #page.reload }}\\n                      <!-- debug aid: reload page when I deploy Node-RED - don't need to explicitly reload any changes -->\\n                      <script>\\n                        var socket = undefined;\\n                      \\n                                              function initSocket() {\\n                                                // Connection opened\\n                                                socket = new WebSocket(\\\"wss://blog.openmindmap.org/cmds\\\");\\n                      \\n                                              socket.onclose = function() {\\n                                                initSocket();\\n                        };\\n                      \\n                        // Listen for messages\\n                        socket.addEventListener(\\\"message\\\", (event) => {\\n                          if ( event.data == \\\"reload\\\") {\\n                                                window.location.reload();\\n                          }\\n                        });\\n                      };\\n                      \\n                                              document.addEventListener(\\\"DOMContentLoaded\\\", initSocket );\\n                      </script>\\n                      {{/ page.reload}}\\n</html>\\n\\n\\n\\n\\n\\n\",\"output\":\"str\",\"x\":571.8573722839355,\"y\":298.57142639160156,\"wires\":[[\"8a027a1eec82ec7c\"]]},{\"id\":\"bb373e24e578d9d8\",\"type\":\"link in\",\"z\":\"3b1289d7ccf9cb0f\",\"name\":\"[blog] embedded-flow-v4.html\",\"links\":[],\"x\":139.42858123779297,\"y\":298.57142639160156,\"wires\":[[\"d96afef150addb88\"]]},{\"id\":\"d96afef150addb88\",\"type\":\"BlogPageInfo\",\"z\":\"3b1289d7ccf9cb0f\",\"name\":\"\",\"image\":\"\",\"summary\":\"Can I generate html directly without using markdown markup?\",\"title\":\"This is a test of something new\",\"publishedAt\":\"2023-06-25T11:22\",\"updatedAt\":\"2023-06-25T11:22\",\"incRss\":false,\"incSitemap\":false,\"incIndex\":false,\"shrLinkedIn\":false,\"reloadOnEdit\":false,\"redirectToNode\":false,\"redirectNodeId\":\"status-404\",\"redirectStatusCode\":\"301\",\"x\":346.14295196533203,\"y\":298.57142639160156,\"wires\":[[\"5adccb35363b1881\"]]},{\"id\":\"510c57da02cb23e8\",\"type\":\"template\",\"z\":\"3b1289d7ccf9cb0f\",\"name\":\"v5\",\"field\":\"payload\",\"fieldType\":\"msg\",\"format\":\"javascript\",\"syntax\":\"mustache\",\"template\":\"<!DOCTYPE html>\\n<html lang=\\\"en\\\">\\n  <head>\\n    <meta charset=\\\"UTF-8\\\">\\n    <meta http-equiv=\\\"X-UA-Compatible\\\" content=\\\"IE=edge\\\">\\n    <meta name=\\\"viewport\\\" content=\\\"width=device-width, initial-scale=1\\\">\\n\\n    <title>Flow Embeddation</title>\\n\\n    <link rel=\\\"alternate\\\" type=\\\"application/rss+xml\\\" href=\\\"/feed.xml\\\" title=\\\"Subscribe to Blog Open Mind Map Org\\\">\\n    <link rel=\\\"sitemap\\\" type=\\\"application/xml\\\" title=\\\"Sitemap\\\" href=\\\"/sitemap.xml\\\">\\n\\n    <link rel=\\\"apple-touch-icon\\\" sizes=\\\"180x180\\\" href=\\\"/f/i/apple-touch-icon.png\\\">\\n    <link rel=\\\"icon\\\" type=\\\"image/png\\\" sizes=\\\"32x32\\\" href=\\\"/f/i/favicon-32x32.png\\\">\\n    <link rel=\\\"icon\\\" type=\\\"image/png\\\" sizes=\\\"16x16\\\" href=\\\"/f/i/favicon-16x16.png\\\">\\n    <link rel=\\\"manifest\\\" href=\\\"/f/site.webmanifest\\\">\\n\\n    <script src=\\\"/content/jquery-3.7.0.min.js\\\" integrity=\\\"sha512-3gJwYpMe3QewGELv8k/BX9vcqhryRdzRMxVfq6ngyWXwo03GFEzjsUm8Q7RZcHPHksttq7/GFoxjCVUjkjvPdw==\\\" crossorigin=\\\"anonymous\\\" referrerpolicy=\\\"no-referrer\\\"></script>\\n    <script src=\\\"/embed/helpers-v5.js\\\" crossorigin=\\\"anonymous\\\" referrerpolicy=\\\"no-referrer\\\"></script>\\n    <link rel=\\\"stylesheet\\\" href=\\\"/embed/helpers.css\\\">\\n  </head>\\n\\n  <body>\\n    <select id=\\\"flowSelector\\\"></select> == <a id=\\\"flowLinkToOriginal\\\" target=_blank href=\\\"\\\">Link to Original</a>\\n\\n    <div id='svgcontainer' \\n         style=\\\"transform: scale(0.5,0.5) translate(-2500px,-2500px) ; top: 50px; left: 10px; position: absolute; overflow: scroll; display: block;\\\">\\n      <svg id=\\\"svgelem\\\" width=\\\"5000\\\" height=\\\"5000\\\" viewBox=\\\"0 0 5000 5000\\\" pointer-events=\\\"all\\\" style=\\\"cursor: crosshair;\\\" version=\\\"1.1\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\">\\n        <!-- Use group elems to ensure that layering of shapes is correct, i.e. nodes always over links -->\\n        <g id='flowGroups'></g>\\n        <g id='flowWires'></g>\\n        <g id='flowNodes'></g>\\n      </svg>\\n    </div>\\n  </body>\\n\\n\\n  <script>\\n\\n\\n    $(function(){\\n      $('#flowSelector').on( 'change', onChangeSelector);\\n      $('#flowLinkToOriginal').attr( 'href', \\\"https://demo.openmindmap.org/omm/#flow/\\\" + flowId);\\n      \\n      $.ajax({\\n        dataType: \\\"json\\\",\\n        url: \\\"https://demo.openmindmap.org/omm/flows\\\",\\n        method: 'get',\\n        success: function(flowdata) { \\n          flowData = flowdata;\\n          fillFlowSelector( flowId, flowdata);\\n          renderFlow(flowId, flowdata);\\n        }\\n      });\\n    });\\n  </script>\\n\\n\\n{{#page.reload}}\\n  <!-- debug aid: reload page when I deploy Node-RED - don't need to explicitly reload any changes -->\\n<script>\\n    var socket = undefined;\\n\\nfunction initSocket() {\\n  // Connection opened\\n  socket = new WebSocket(\\\"wss://blog.openmindmap.org/cmds\\\");\\n\\n  socket.onclose = function() {\\n    initSocket();\\n  };\\n\\n  // Listen for messages\\n  socket.addEventListener(\\\"message\\\", (event) => {\\n    if ( event.data == \\\"reload\\\") {\\n      window.location.reload();\\n    }\\n  });\\n};\\n\\ndocument.addEventListener(\\\"DOMContentLoaded\\\", initSocket );\\n</script>\\n{{/page.reload}}\\n\\n</html>\\n\\n\\n\\n\\n\\n\",\"output\":\"str\",\"x\":577,\"y\":361,\"wires\":[[\"8a027a1eec82ec7c\"]]},{\"id\":\"f0b074190c1ab98f\",\"type\":\"link in\",\"z\":\"3b1289d7ccf9cb0f\",\"name\":\"[blog] embedded-flow-v5.html\",\"links\":[],\"x\":144.57120895385742,\"y\":361,\"wires\":[[\"43528dd3046696bf\"]]},{\"id\":\"43528dd3046696bf\",\"type\":\"BlogPageInfo\",\"z\":\"3b1289d7ccf9cb0f\",\"name\":\"\",\"image\":\"\",\"summary\":\"Can I generate html directly without using markdown markup?\",\"title\":\"This is a test of something new\",\"publishedAt\":\"2023-06-25T11:22\",\"updatedAt\":\"2023-06-25T11:22\",\"incRss\":false,\"incSitemap\":false,\"incIndex\":false,\"shrLinkedIn\":false,\"reloadOnEdit\":false,\"redirectToNode\":false,\"redirectNodeId\":\"status-404\",\"redirectStatusCode\":\"301\",\"x\":351.2855796813965,\"y\":361,\"wires\":[[\"510c57da02cb23e8\"]]}]","output":"str","x":557,"y":1023,"wires":[["543a3c0420b92eff"]]},{"id":"543a3c0420b92eff","type":"template","z":"3b1289d7ccf9cb0f","name":"flowexample2","field":"flowexample2","fieldType":"msg","format":"handlebars","syntax":"mustache","template":"[{\"id\":\"d598829cba783cad\",\"type\":\"GetFlows\",\"z\":\"f13d3b083d5cc429\",\"name\":\"\",\"flowVersion\":\"v1\",\"useAuthentication\":false,\"apiUsername\":\"\",\"apiUsernameType\":\"env\",\"apiPassword\":\"\",\"apiPasswordType\":\"env\",\"x\":349,\"y\":301,\"wires\":[[\"ddce7325bdba57d8\"]]},{\"id\":\"c507dd73478a26af\",\"type\":\"inject\",\"z\":\"f13d3b083d5cc429\",\"name\":\"\",\"props\":[{\"p\":\"payload\"},{\"p\":\"topic\",\"vt\":\"str\"}],\"repeat\":\"7200\",\"crontab\":\"\",\"once\":false,\"onceDelay\":0.1,\"topic\":\"\",\"payload\":\"\",\"payloadType\":\"date\",\"x\":199,\"y\":181,\"wires\":[[\"d598829cba783cad\"]]},{\"id\":\"67b77f304303cb27\",\"type\":\"http request\",\"z\":\"f13d3b083d5cc429\",\"name\":\"send off to backup server\",\"method\":\"POST\",\"ret\":\"txt\",\"paytoqs\":\"ignore\",\"url\":\"\",\"tls\":\"\",\"persist\":false,\"proxy\":\"\",\"insecureHTTPParser\":false,\"authType\":\"\",\"senderr\":false,\"headers\":[],\"x\":1119,\"y\":181,\"wires\":[[]]},{\"id\":\"ddce7325bdba57d8\",\"type\":\"change\",\"z\":\"f13d3b083d5cc429\",\"name\":\"setup payload for zip node\",\"rules\":[{\"t\":\"set\",\"p\":\"_p\",\"pt\":\"msg\",\"to\":\"[]\",\"tot\":\"json\"},{\"t\":\"set\",\"p\":\"_p[0]\",\"pt\":\"msg\",\"to\":\"{ \\\"filename\\\": \\\"openmindmap_flows.json\\\", \\\"payload\\\": \\\"\\\" }\",\"tot\":\"json\"},{\"t\":\"set\",\"p\":\"_p[0].payload\",\"pt\":\"msg\",\"to\":\"payload\",\"tot\":\"msg\"},{\"t\":\"set\",\"p\":\"token\",\"pt\":\"msg\",\"to\":\"BACKUP_ZIP_TOKEN\",\"tot\":\"env\"},{\"t\":\"set\",\"p\":\"_p[1]\",\"pt\":\"msg\",\"to\":\"{ \\\"filename\\\": \\\"token.txt\\\", \\\"payload\\\": \\\"\\\" & token & \\\"\\\" }\",\"tot\":\"jsonata\"},{\"t\":\"set\",\"p\":\"payload\",\"pt\":\"msg\",\"to\":\"_p\",\"tot\":\"msg\"},{\"t\":\"set\",\"p\":\"url\",\"pt\":\"msg\",\"to\":\"BACKUP_ENDPOINT\",\"tot\":\"env\"}],\"action\":\"\",\"property\":\"\",\"from\":\"\",\"to\":\"\",\"reg\":false,\"x\":549,\"y\":401,\"wires\":[[\"1f879c968f033a26\"]]},{\"id\":\"1f879c968f033a26\",\"type\":\"zip\",\"z\":\"f13d3b083d5cc429\",\"name\":\"\",\"mode\":\"compress\",\"filename\":\"backup.zip\",\"compressionlevel\":\"9\",\"outasstring\":false,\"x\":769,\"y\":401,\"wires\":[[\"53808fa58e1aa543\"]]},{\"id\":\"53808fa58e1aa543\",\"type\":\"base64\",\"z\":\"f13d3b083d5cc429\",\"name\":\"\",\"action\":\"\",\"property\":\"payload\",\"x\":929,\"y\":301,\"wires\":[[\"67b77f304303cb27\"]]}]","output":"str","x":664,"y":1081,"wires":[["3a2a8775f9c823ea"]]},{"id":"3a2a8775f9c823ea","type":"template","z":"3b1289d7ccf9cb0f","name":"flowexample3","field":"flowexample3","fieldType":"msg","format":"handlebars","syntax":"mustache","template":"[{\"id\":\"ef8e132ea7cfb169\",\"type\":\"group\",\"z\":\"1f980ab215b3d38b\",\"name\":\"ensure correct domain\",\"style\":{\"label\":true,\"fill\":\"#bfc7d7\",\"fill-opacity\":\"0.71\",\"color\":\"#000000\"},\"nodes\":[\"74524fd544d06041\",\"e43251341bcee72a\",\"a2974608d980c146\",\"9d78a06220c7c8d8\",\"a43ab9aa8a80e60a\",\"b6e61b1f9f246701\"],\"x\":23,\"y\":103.5,\"w\":877,\"h\":189.5},{\"id\":\"74524fd544d06041\",\"type\":\"switch\",\"z\":\"1f980ab215b3d38b\",\"g\":\"ef8e132ea7cfb169\",\"name\":\"check hostname\",\"property\":\"req.hostname\",\"propertyType\":\"msg\",\"rules\":[{\"t\":\"eq\",\"v\":\"blog.openmindmap.org\",\"vt\":\"str\"},{\"t\":\"eq\",\"v\":\"demo.openmindmap.org\",\"vt\":\"str\"},{\"t\":\"else\"}],\"checkall\":\"false\",\"repair\":false,\"outputs\":3,\"x\":393,\"y\":152,\"wires\":[[\"11368594c2effb54\"],[\"a2974608d980c146\"],[\"9d78a06220c7c8d8\"]]},{\"id\":\"e43251341bcee72a\",\"type\":\"http in\",\"z\":\"1f980ab215b3d38b\",\"g\":\"ef8e132ea7cfb169\",\"name\":\"\",\"url\":\"/\",\"method\":\"get\",\"upload\":false,\"swaggerDoc\":\"\",\"x\":99,\"y\":152,\"wires\":[[\"74524fd544d06041\"]]},{\"id\":\"a2974608d980c146\",\"type\":\"http response\",\"z\":\"1f980ab215b3d38b\",\"g\":\"ef8e132ea7cfb169\",\"name\":\"redirect if demo.omm.org\",\"statusCode\":\"301\",\"headers\":{\"Location\":\"/omm\"},\"x\":747,\"y\":153,\"wires\":[]},{\"id\":\"9d78a06220c7c8d8\",\"type\":\"http response\",\"z\":\"1f980ab215b3d38b\",\"g\":\"ef8e132ea7cfb169\",\"name\":\"NOT FOUND everything else\",\"statusCode\":\"404\",\"headers\":{},\"x\":754,\"y\":195,\"wires\":[]},{\"id\":\"a43ab9aa8a80e60a\",\"type\":\"http in\",\"z\":\"1f980ab215b3d38b\",\"g\":\"ef8e132ea7cfb169\",\"name\":\"\",\"url\":\"/blog/:name\",\"method\":\"get\",\"upload\":false,\"swaggerDoc\":\"\",\"x\":129,\"y\":200,\"wires\":[[\"74524fd544d06041\"]]},{\"id\":\"b6e61b1f9f246701\",\"type\":\"http in\",\"z\":\"1f980ab215b3d38b\",\"g\":\"ef8e132ea7cfb169\",\"name\":\"\",\"url\":\"/:name\",\"method\":\"get\",\"upload\":false,\"swaggerDoc\":\"\",\"x\":119,\"y\":252,\"wires\":[[\"74524fd544d06041\"]]}]","output":"str","x":748,"y":1143,"wires":[["968121829ec13f89"]]},{"id":"968121829ec13f89","type":"template","z":"3b1289d7ccf9cb0f","name":"flowexample4","field":"flowexample4","fieldType":"msg","format":"handlebars","syntax":"mustache","template":"","output":"str","x":840,"y":1200,"wires":[["af750fbb1cba639d"]]}]

Example 5: Turtles all the way down

This is the flow that generates this page.

[{"id":"e3e278445b7bcb21","type":"subflow","name":"BlogPageEndsHere","info":"","category":"","in":[{"x":132,"y":215,"wires":[{"id":"b2f270b15349b67c"}]}],"out":[],"env":[],"meta":{},"color":"#ddeeff","icon":"font-awesome/fa-hand-stop-o"},{"id":"627f98bbc0ea4f8b","type":"link out","z":"e3e278445b7bcb21","name":"link out 77","mode":"return","links":[],"x":1328,"y":306,"wires":[]},{"id":"408189fb7a17ba8b","type":"switch","z":"e3e278445b7bcb21","name":"has _linkSource - is this a link-call action","property":"_linkSource","propertyType":"msg","rules":[{"t":"nnull"},{"t":"else"}],"checkall":"true","repair":false,"outputs":2,"x":1002,"y":403,"wires":[["627f98bbc0ea4f8b"],[]]},{"id":"2a2cc4ef4e7704b4","type":"template","z":"e3e278445b7bcb21","name":"","field":"payload","fieldType":"msg","format":"handlebars","syntax":"mustache","template":"","output":"str","x":545,"y":632,"wires":[["408189fb7a17ba8b"]]},{"id":"693c46a206c026a4","type":"change","z":"e3e278445b7bcb21","name":"","rules":[{"t":"set","p":"template","pt":"msg","to":"payload","tot":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":474,"y":510,"wires":[["2a2cc4ef4e7704b4"]]},{"id":"b2f270b15349b67c","type":"switch","z":"e3e278445b7bcb21","name":"","property":"page.noderedjson","propertyType":"msg","rules":[{"t":"true"},{"t":"else"}],"checkall":"false","repair":false,"outputs":2,"x":374,"y":408,"wires":[["408189fb7a17ba8b"],["693c46a206c026a4"]]},{"id":"f161221e2ee84846","type":"BlogPageInfo","z":"e88020583c022170","name":"","image":"1687952972847_Screen_Shot_2023-06-28_at_13.48.43.png","summary":"Codeblocks are one thing but images are further a thousand Json files. Show me your flow!","title":"Replacing Node-RED flow codeblocks with flow images.","publishedAt":"2023-06-28T11:22","updatedAt":"2023-06-28T11:22","incRss":true,"incSitemap":true,"incIndex":true,"shrLinkedIn":true,"supportNodeRedJson":true,"reloadOnEdit":false,"redirectToNode":false,"redirectNodeId":"status-404","redirectStatusCode":"301","x":374.71435546875,"y":1339,"wires":[["49c3561cfc3bf8b3"]]},{"id":"e0bcd8d7b8245c21","type":"link in","z":"e88020583c022170","name":"[blog] backticks-in-markdown-and-node-red","links":[],"x":204,"y":1389,"wires":[["f161221e2ee84846"]]},{"id":"49c3561cfc3bf8b3","type":"template","z":"e88020583c022170","name":"flow example 1","field":"flowexample1","fieldType":"msg","format":"handlebars","syntax":"plain","template":"","output":"str","x":660,"y":1425,"wires":[["724cc1e0b9b56983"]]},{"id":"f9ea3058dc703eee","type":"BlogPageInfo","z":"e88020583c022170","name":"","image":"","summary":"Can I replace codeblocks of flows.json with images?","title":"Testing the inclusion and replacement of codeblocks","publishedAt":"2023-06-25T11:22","updatedAt":"2023-06-25T11:22","incRss":false,"incSitemap":false,"incIndex":false,"shrLinkedIn":false,"supportNodeRedJson":true,"reloadOnEdit":false,"redirectToNode":false,"redirectNodeId":"status-404","redirectStatusCode":"301","x":403.71435546875,"y":1478,"wires":[["49c3561cfc3bf8b3"]]},{"id":"724cc1e0b9b56983","type":"template","z":"e88020583c022170","name":"flowexample2","field":"flowexample2","fieldType":"msg","format":"handlebars","syntax":"plain","template":"","output":"str","x":857,"y":1370,"wires":[["d8b85c4b0a441b4d"]]},{"id":"8b702bc007cf0e3e","type":"link in","z":"e88020583c022170","name":"[blog] codeblock-test","links":[],"x":204,"y":1424,"wires":[["f9ea3058dc703eee"]]},{"id":"d8b85c4b0a441b4d","type":"template","z":"e88020583c022170","name":"flowexample3","field":"flowexample3","fieldType":"msg","format":"handlebars","syntax":"plain","template":"","output":"str","x":1029,"y":1433,"wires":[["23f9f3582f3172b6"]]},{"id":"23f9f3582f3172b6","type":"template","z":"e88020583c022170","name":"flowexample4","field":"flowexample4","fieldType":"msg","format":"handlebars","syntax":"plain","template":"","output":"str","x":1235,"y":1378,"wires":[["22e594991d0092af"]]},{"id":"22e594991d0092af","type":"template","z":"e88020583c022170","name":"flowexample5","field":"flowexample5","fieldType":"msg","format":"handlebars","syntax":"plain","template":"","output":"str","x":1411,"y":1443,"wires":[["8ffa9d87efff1d51"]]},{"id":"8ffa9d87efff1d51","type":"template","z":"e88020583c022170","name":"flowexample6","field":"flowexample6","fieldType":"msg","format":"handlebars","syntax":"plain","template":"","output":"str","x":1592,"y":1385,"wires":[["7c3cbb557ff5b93d"]]},{"id":"7c3cbb557ff5b93d","type":"template","z":"e88020583c022170","name":"flowexample7","field":"flowexample7","fieldType":"msg","format":"handlebars","syntax":"plain","template":"","output":"str","x":1740,"y":1443,"wires":[["d9667d3144e93adb"]]},{"id":"d9667d3144e93adb","type":"template","z":"e88020583c022170","name":".md page","field":"payload","fieldType":"msg","format":"markdown","syntax":"mustache","template":"","output":"str","x":1092,"y":1737,"wires":[["d3f10882a0773e9b"]]},{"id":"d3f10882a0773e9b","type":"subflow:e3e278445b7bcb21","z":"e88020583c022170","name":"","x":1089,"y":1797,"wires":[]}]

Visualised:

[{"id":"e3e278445b7bcb21","type":"subflow","name":"BlogPageEndsHere","info":"","category":"","in":[{"x":132,"y":215,"wires":[{"id":"b2f270b15349b67c"}]}],"out":[],"env":[],"meta":{},"color":"#ddeeff","icon":"font-awesome/fa-hand-stop-o"},{"id":"627f98bbc0ea4f8b","type":"link out","z":"e3e278445b7bcb21","name":"link out 77","mode":"return","links":[],"x":1328,"y":306,"wires":[]},{"id":"408189fb7a17ba8b","type":"switch","z":"e3e278445b7bcb21","name":"has _linkSource - is this a link-call action","property":"_linkSource","propertyType":"msg","rules":[{"t":"nnull"},{"t":"else"}],"checkall":"true","repair":false,"outputs":2,"x":1002,"y":403,"wires":[["627f98bbc0ea4f8b"],[]]},{"id":"2a2cc4ef4e7704b4","type":"template","z":"e3e278445b7bcb21","name":"","field":"payload","fieldType":"msg","format":"handlebars","syntax":"mustache","template":"","output":"str","x":545,"y":632,"wires":[["408189fb7a17ba8b"]]},{"id":"693c46a206c026a4","type":"change","z":"e3e278445b7bcb21","name":"","rules":[{"t":"set","p":"template","pt":"msg","to":"payload","tot":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":474,"y":510,"wires":[["2a2cc4ef4e7704b4"]]},{"id":"b2f270b15349b67c","type":"switch","z":"e3e278445b7bcb21","name":"","property":"page.noderedjson","propertyType":"msg","rules":[{"t":"true"},{"t":"else"}],"checkall":"false","repair":false,"outputs":2,"x":374,"y":408,"wires":[["408189fb7a17ba8b"],["693c46a206c026a4"]]},{"id":"f161221e2ee84846","type":"BlogPageInfo","z":"e88020583c022170","name":"","image":"1687952972847_Screen_Shot_2023-06-28_at_13.48.43.png","summary":"Codeblocks are one thing but images are further a thousand Json files. Show me your flow!","title":"Replacing Node-RED flow codeblocks with flow images.","publishedAt":"2023-06-28T11:22","updatedAt":"2023-06-28T11:22","incRss":true,"incSitemap":true,"incIndex":true,"shrLinkedIn":true,"supportNodeRedJson":true,"reloadOnEdit":false,"redirectToNode":false,"redirectNodeId":"status-404","redirectStatusCode":"301","x":374.71435546875,"y":1339,"wires":[["49c3561cfc3bf8b3"]]},{"id":"e0bcd8d7b8245c21","type":"link in","z":"e88020583c022170","name":"[blog] backticks-in-markdown-and-node-red","links":[],"x":204,"y":1389,"wires":[["f161221e2ee84846"]]},{"id":"49c3561cfc3bf8b3","type":"template","z":"e88020583c022170","name":"flow example 1","field":"flowexample1","fieldType":"msg","format":"handlebars","syntax":"plain","template":"","output":"str","x":660,"y":1425,"wires":[["724cc1e0b9b56983"]]},{"id":"f9ea3058dc703eee","type":"BlogPageInfo","z":"e88020583c022170","name":"","image":"","summary":"Can I replace codeblocks of flows.json with images?","title":"Testing the inclusion and replacement of codeblocks","publishedAt":"2023-06-25T11:22","updatedAt":"2023-06-25T11:22","incRss":false,"incSitemap":false,"incIndex":false,"shrLinkedIn":false,"supportNodeRedJson":true,"reloadOnEdit":false,"redirectToNode":false,"redirectNodeId":"status-404","redirectStatusCode":"301","x":403.71435546875,"y":1478,"wires":[["49c3561cfc3bf8b3"]]},{"id":"724cc1e0b9b56983","type":"template","z":"e88020583c022170","name":"flowexample2","field":"flowexample2","fieldType":"msg","format":"handlebars","syntax":"plain","template":"","output":"str","x":857,"y":1370,"wires":[["d8b85c4b0a441b4d"]]},{"id":"8b702bc007cf0e3e","type":"link in","z":"e88020583c022170","name":"[blog] codeblock-test","links":[],"x":204,"y":1424,"wires":[["f9ea3058dc703eee"]]},{"id":"d8b85c4b0a441b4d","type":"template","z":"e88020583c022170","name":"flowexample3","field":"flowexample3","fieldType":"msg","format":"handlebars","syntax":"plain","template":"","output":"str","x":1029,"y":1433,"wires":[["23f9f3582f3172b6"]]},{"id":"23f9f3582f3172b6","type":"template","z":"e88020583c022170","name":"flowexample4","field":"flowexample4","fieldType":"msg","format":"handlebars","syntax":"plain","template":"","output":"str","x":1235,"y":1378,"wires":[["22e594991d0092af"]]},{"id":"22e594991d0092af","type":"template","z":"e88020583c022170","name":"flowexample5","field":"flowexample5","fieldType":"msg","format":"handlebars","syntax":"plain","template":"","output":"str","x":1411,"y":1443,"wires":[["8ffa9d87efff1d51"]]},{"id":"8ffa9d87efff1d51","type":"template","z":"e88020583c022170","name":"flowexample6","field":"flowexample6","fieldType":"msg","format":"handlebars","syntax":"plain","template":"","output":"str","x":1592,"y":1385,"wires":[["7c3cbb557ff5b93d"]]},{"id":"7c3cbb557ff5b93d","type":"template","z":"e88020583c022170","name":"flowexample7","field":"flowexample7","fieldType":"msg","format":"handlebars","syntax":"plain","template":"","output":"str","x":1740,"y":1443,"wires":[["d9667d3144e93adb"]]},{"id":"d9667d3144e93adb","type":"template","z":"e88020583c022170","name":".md page","field":"payload","fieldType":"msg","format":"markdown","syntax":"mustache","template":"","output":"str","x":1092,"y":1737,"wires":[["d3f10882a0773e9b"]]},{"id":"d3f10882a0773e9b","type":"subflow:e3e278445b7bcb21","z":"e88020583c022170","name":"","x":1089,"y":1797,"wires":[]}]

For more examples, there is also a testing page. Select the flow to be viewed using the dropdown.

Example 6: Spaghetti code is also possible

This is the example 5 but how not to do it.

[{"id":"e3e278445b7bcb21","type":"subflow","name":"BlogPageEndsHere","info":"","category":"","in":[{"x":132,"y":215,"wires":[{"id":"b2f270b15349b67c"}]}],"out":[],"env":[],"meta":{},"color":"#ddeeff","icon":"font-awesome/fa-hand-stop-o"},{"id":"627f98bbc0ea4f8b","type":"link out","z":"e3e278445b7bcb21","name":"link out 77","mode":"return","links":[],"x":1328,"y":306,"wires":[]},{"id":"408189fb7a17ba8b","type":"switch","z":"e3e278445b7bcb21","name":"has _linkSource - is this a link-call action","property":"_linkSource","propertyType":"msg","rules":[{"t":"nnull"},{"t":"else"}],"checkall":"true","repair":false,"outputs":2,"x":1002,"y":403,"wires":[["627f98bbc0ea4f8b"],[]]},{"id":"2a2cc4ef4e7704b4","type":"template","z":"e3e278445b7bcb21","name":"","field":"payload","fieldType":"msg","format":"handlebars","syntax":"mustache","template":"","output":"str","x":545,"y":632,"wires":[["408189fb7a17ba8b"]]},{"id":"693c46a206c026a4","type":"change","z":"e3e278445b7bcb21","name":"","rules":[{"t":"set","p":"template","pt":"msg","to":"payload","tot":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":474,"y":510,"wires":[["2a2cc4ef4e7704b4"]]},{"id":"b2f270b15349b67c","type":"switch","z":"e3e278445b7bcb21","name":"","property":"page.noderedjson","propertyType":"msg","rules":[{"t":"true"},{"t":"else"}],"checkall":"false","repair":false,"outputs":2,"x":374,"y":408,"wires":[["408189fb7a17ba8b"],["693c46a206c026a4"]]},{"id":"82a04eeec5d1ec39","type":"link in","z":"04fab8edd0e8f2df","name":"[blog] backticks-in-markdown-and-node-red","links":[],"x":434,"y":292,"wires":[["cc439de6514717e7"]]},{"id":"cc439de6514717e7","type":"BlogPageInfo","z":"04fab8edd0e8f2df","name":"","image":"1687952972847_Screen_Shot_2023-06-28_at_13.48.43.png","summary":"Codeblocks are one thing but images are further a thousand Json files. Show me your flow!","title":"Replacing Node-RED flow codeblocks with flow images.","publishedAt":"2023-06-28T11:22","updatedAt":"2023-06-28T11:22","incRss":true,"incSitemap":true,"incIndex":true,"shrLinkedIn":true,"supportNodeRedJson":true,"reloadOnEdit":false,"redirectToNode":false,"redirectNodeId":"status-404","redirectStatusCode":"301","x":1075.71435546875,"y":448,"wires":[["be61a774e4c6d75e"]]},{"id":"be61a774e4c6d75e","type":"template","z":"04fab8edd0e8f2df","name":"flow example 1","field":"flowexample1","fieldType":"msg","format":"handlebars","syntax":"plain","template":"","output":"str","x":998,"y":563,"wires":[["db01f2dab4fa12ab"]]},{"id":"ac8306319a302f0c","type":"BlogPageInfo","z":"04fab8edd0e8f2df","name":"","image":"","summary":"Can I replace codeblocks of flows.json with images?","title":"Testing the inclusion and replacement of codeblocks","publishedAt":"2023-06-25T11:22","updatedAt":"2023-06-25T11:22","incRss":false,"incSitemap":false,"incIndex":false,"shrLinkedIn":false,"supportNodeRedJson":true,"reloadOnEdit":false,"redirectToNode":false,"redirectNodeId":"status-404","redirectStatusCode":"301","x":1077.71435546875,"y":544,"wires":[["be61a774e4c6d75e"]]},{"id":"db01f2dab4fa12ab","type":"template","z":"04fab8edd0e8f2df","name":"flowexample2","field":"flowexample2","fieldType":"msg","format":"handlebars","syntax":"plain","template":"","output":"str","x":991,"y":467,"wires":[["440887f5bfa191c9"]]},{"id":"24767f8be515eebe","type":"link in","z":"04fab8edd0e8f2df","name":"[blog] codeblock-test","links":[],"x":432,"y":336,"wires":[["ac8306319a302f0c"]]},{"id":"440887f5bfa191c9","type":"template","z":"04fab8edd0e8f2df","name":"flowexample3","field":"flowexample3","fieldType":"msg","format":"handlebars","syntax":"plain","template":"","output":"str","x":1218,"y":534,"wires":[["03989336aea86433"]]},{"id":"03989336aea86433","type":"template","z":"04fab8edd0e8f2df","name":"flowexample4","field":"flowexample4","fieldType":"msg","format":"handlebars","syntax":"plain","template":"","output":"str","x":1151,"y":491,"wires":[["01dae03d9ec9694f"]]},{"id":"01dae03d9ec9694f","type":"template","z":"04fab8edd0e8f2df","name":"flowexample5","field":"flowexample5","fieldType":"msg","format":"handlebars","syntax":"plain","template":"","output":"str","x":1043,"y":507,"wires":[["33bfba9a9fcd9e58"]]},{"id":"33bfba9a9fcd9e58","type":"template","z":"04fab8edd0e8f2df","name":"flowexample6","field":"flowexample6","fieldType":"msg","format":"handlebars","syntax":"plain","template":"","output":"str","x":1205,"y":472,"wires":[["930cf2c0b7cbc504"]]},{"id":"930cf2c0b7cbc504","type":"template","z":"04fab8edd0e8f2df","name":".md page","field":"payload","fieldType":"msg","format":"markdown","syntax":"mustache","template":"","output":"str","x":1158,"y":550,"wires":[["e6cc075cbd12d4ef"]]},{"id":"e6cc075cbd12d4ef","type":"subflow:e3e278445b7bcb21","z":"04fab8edd0e8f2df","name":"","x":1645,"y":425,"wires":[]}]

Visualised:

[{"id":"e3e278445b7bcb21","type":"subflow","name":"BlogPageEndsHere","info":"","category":"","in":[{"x":132,"y":215,"wires":[{"id":"b2f270b15349b67c"}]}],"out":[],"env":[],"meta":{},"color":"#ddeeff","icon":"font-awesome/fa-hand-stop-o"},{"id":"627f98bbc0ea4f8b","type":"link out","z":"e3e278445b7bcb21","name":"link out 77","mode":"return","links":[],"x":1328,"y":306,"wires":[]},{"id":"408189fb7a17ba8b","type":"switch","z":"e3e278445b7bcb21","name":"has _linkSource - is this a link-call action","property":"_linkSource","propertyType":"msg","rules":[{"t":"nnull"},{"t":"else"}],"checkall":"true","repair":false,"outputs":2,"x":1002,"y":403,"wires":[["627f98bbc0ea4f8b"],[]]},{"id":"2a2cc4ef4e7704b4","type":"template","z":"e3e278445b7bcb21","name":"","field":"payload","fieldType":"msg","format":"handlebars","syntax":"mustache","template":"","output":"str","x":545,"y":632,"wires":[["408189fb7a17ba8b"]]},{"id":"693c46a206c026a4","type":"change","z":"e3e278445b7bcb21","name":"","rules":[{"t":"set","p":"template","pt":"msg","to":"payload","tot":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":474,"y":510,"wires":[["2a2cc4ef4e7704b4"]]},{"id":"b2f270b15349b67c","type":"switch","z":"e3e278445b7bcb21","name":"","property":"page.noderedjson","propertyType":"msg","rules":[{"t":"true"},{"t":"else"}],"checkall":"false","repair":false,"outputs":2,"x":374,"y":408,"wires":[["408189fb7a17ba8b"],["693c46a206c026a4"]]},{"id":"82a04eeec5d1ec39","type":"link in","z":"04fab8edd0e8f2df","name":"[blog] backticks-in-markdown-and-node-red","links":[],"x":434,"y":292,"wires":[["cc439de6514717e7"]]},{"id":"cc439de6514717e7","type":"BlogPageInfo","z":"04fab8edd0e8f2df","name":"","image":"1687952972847_Screen_Shot_2023-06-28_at_13.48.43.png","summary":"Codeblocks are one thing but images are further a thousand Json files. Show me your flow!","title":"Replacing Node-RED flow codeblocks with flow images.","publishedAt":"2023-06-28T11:22","updatedAt":"2023-06-28T11:22","incRss":true,"incSitemap":true,"incIndex":true,"shrLinkedIn":true,"supportNodeRedJson":true,"reloadOnEdit":false,"redirectToNode":false,"redirectNodeId":"status-404","redirectStatusCode":"301","x":1075.71435546875,"y":448,"wires":[["be61a774e4c6d75e"]]},{"id":"be61a774e4c6d75e","type":"template","z":"04fab8edd0e8f2df","name":"flow example 1","field":"flowexample1","fieldType":"msg","format":"handlebars","syntax":"plain","template":"","output":"str","x":998,"y":563,"wires":[["db01f2dab4fa12ab"]]},{"id":"ac8306319a302f0c","type":"BlogPageInfo","z":"04fab8edd0e8f2df","name":"","image":"","summary":"Can I replace codeblocks of flows.json with images?","title":"Testing the inclusion and replacement of codeblocks","publishedAt":"2023-06-25T11:22","updatedAt":"2023-06-25T11:22","incRss":false,"incSitemap":false,"incIndex":false,"shrLinkedIn":false,"supportNodeRedJson":true,"reloadOnEdit":false,"redirectToNode":false,"redirectNodeId":"status-404","redirectStatusCode":"301","x":1077.71435546875,"y":544,"wires":[["be61a774e4c6d75e"]]},{"id":"db01f2dab4fa12ab","type":"template","z":"04fab8edd0e8f2df","name":"flowexample2","field":"flowexample2","fieldType":"msg","format":"handlebars","syntax":"plain","template":"","output":"str","x":991,"y":467,"wires":[["440887f5bfa191c9"]]},{"id":"24767f8be515eebe","type":"link in","z":"04fab8edd0e8f2df","name":"[blog] codeblock-test","links":[],"x":432,"y":336,"wires":[["ac8306319a302f0c"]]},{"id":"440887f5bfa191c9","type":"template","z":"04fab8edd0e8f2df","name":"flowexample3","field":"flowexample3","fieldType":"msg","format":"handlebars","syntax":"plain","template":"","output":"str","x":1218,"y":534,"wires":[["03989336aea86433"]]},{"id":"03989336aea86433","type":"template","z":"04fab8edd0e8f2df","name":"flowexample4","field":"flowexample4","fieldType":"msg","format":"handlebars","syntax":"plain","template":"","output":"str","x":1151,"y":491,"wires":[["01dae03d9ec9694f"]]},{"id":"01dae03d9ec9694f","type":"template","z":"04fab8edd0e8f2df","name":"flowexample5","field":"flowexample5","fieldType":"msg","format":"handlebars","syntax":"plain","template":"","output":"str","x":1043,"y":507,"wires":[["33bfba9a9fcd9e58"]]},{"id":"33bfba9a9fcd9e58","type":"template","z":"04fab8edd0e8f2df","name":"flowexample6","field":"flowexample6","fieldType":"msg","format":"handlebars","syntax":"plain","template":"","output":"str","x":1205,"y":472,"wires":[["930cf2c0b7cbc504"]]},{"id":"930cf2c0b7cbc504","type":"template","z":"04fab8edd0e8f2df","name":".md page","field":"payload","fieldType":"msg","format":"markdown","syntax":"mustache","template":"","output":"str","x":1158,"y":550,"wires":[["e6cc075cbd12d4ef"]]},{"id":"e6cc075cbd12d4ef","type":"subflow:e3e278445b7bcb21","z":"04fab8edd0e8f2df","name":"","x":1645,"y":425,"wires":[]}]
[{"id":"e327754ca3e8bc71","type":"link out","z":"9c4c290bdd06d11d","name":"link out 84","mode":"link","links":["1f4e2a6d2636ab7e"],"x":782,"y":2197,"wires":[]},{"id":"1f4e2a6d2636ab7e","type":"link in","z":"9c4c290bdd06d11d","name":"link in 1","links":["e327754ca3e8bc71"],"x":1112,"y":2084,"wires":[["44ae31d84b57d1b3"]]},{"id":"44ae31d84b57d1b3","type":"debug","z":"9c4c290bdd06d11d","name":"debug 18","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"false","statusVal":"","statusType":"auto","x":1392,"y":2085,"wires":[]},{"id":"834a5e401e497f56","type":"inject","z":"9c4c290bdd06d11d","name":"","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"","payload":"","payloadType":"date","x":591,"y":2197,"wires":[["e327754ca3e8bc71"]]}]

Visualised:

[{"id":"e327754ca3e8bc71","type":"link out","z":"9c4c290bdd06d11d","name":"link out 84","mode":"link","links":["1f4e2a6d2636ab7e"],"x":782,"y":2197,"wires":[]},{"id":"1f4e2a6d2636ab7e","type":"link in","z":"9c4c290bdd06d11d","name":"link in 1","links":["e327754ca3e8bc71"],"x":1112,"y":2084,"wires":[["44ae31d84b57d1b3"]]},{"id":"44ae31d84b57d1b3","type":"debug","z":"9c4c290bdd06d11d","name":"debug 18","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"false","statusVal":"","statusType":"auto","x":1392,"y":2085,"wires":[]},{"id":"834a5e401e497f56","type":"inject","z":"9c4c290bdd06d11d","name":"","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"","payload":"","payloadType":"date","x":591,"y":2197,"wires":[["e327754ca3e8bc71"]]}]

Source - Markdown

The markdown code that generated this page or view page source to see the original before the images are rendered into the page.

The entire codebase is contained in an Node-RED instance which isn’t the best way to encourage collaboration. The code is licensed under the json.org license with an additional curse for evil-doers.

If you want to add this your page, add the following in the head tag (in the HTML template into which the Markdown is rendered):

<script src="https://blog.openmindmap.org/content/jquery-3.7.0.min.js" integrity="sha512-3gJwYpMe3QewGELv8k/BX9vcqhryRdzRMxVfq6ngyWXwo03GFEzjsUm8Q7RZcHPHksttq7/GFoxjCVUjkjvPdw==" crossorigin="anonymous" referrerpolicy="no-referrer"></script>
<script src="https://blog.openmindmap.org/embed/flowviewer.js" crossorigin="anonymous" referrerpolicy="no-referrer"></script>
<link rel="stylesheet" href="https://blog.openmindmap.org/embed/flowviewer.css">

and somewhere at the bottom of your pages body tag:

<script>
    $(function(){
      replaceCodeBlocksWithNodeRedFlowImages();
    });
</script>

All those details are liable to change but I will attempt to keep the various versions online.

Source - HTML

This is the source for this page.

<html lang="en">
  <head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1">

    <title>Node-RED Flow plugin html example</title>

    <script src="https://unpkg.com/d3/dist/d3.min.js" crossorigin="anonymous" referrerpolicy="no-referrer"></script>
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.7.0/jquery.min.js" integrity="sha512-3gJwYpMe3QewGELv8k/BX9vcqhryRdzRMxVfq6ngyWXwo03GFEzjsUm8Q7RZcHPHksttq7/GFoxjCVUjkjvPdw==" crossorigin="anonymous" referrerpolicy="no-referrer"></script>
    <script src="https://cdn.openmindmap.org/embed/flowviewer.js" crossorigin="anonymous" referrerpolicy="no-referrer"></script>
    <link rel="stylesheet" href="https://cdn.openmindmap.org/embed/flowviewer.css">
  </head>

  <body>
    <h3>Example 1: Classic <code>noderedjson</code> language</h3>
<pre><code class="language-noderedjson">[{&quot;id&quot;:&quot;548238136ca436ac&quot;,&quot;type&quot;:&quot;link in&quot;,&quot;z&quot;:&quot;652104ea8724facc&quot;,&quot;name&quot;:&quot;[blog] embedded-flow.html&quot;,&quot;links&quot;:[],&quot;x&quot;:538,&quot;y&quot;:482,&quot;wires&quot;:[[&quot;6c47c59cbbbecdf5&quot;]]},{&quot;id&quot;:&quot;6c47c59cbbbecdf5&quot;,&quot;type&quot;:&quot;BlogPageInfo&quot;,&quot;z&quot;:&quot;652104ea8724facc&quot;,&quot;name&quot;:&quot;&quot;,&quot;image&quot;:&quot;&quot;,&quot;summary&quot;:&quot;Can I generate html directly without using markdown markup?&quot;,&quot;title&quot;:&quot;This is a test of something new&quot;,&quot;publishedAt&quot;:&quot;2023-06-25T11:22&quot;,&quot;updatedAt&quot;:&quot;2023-06-25T11:22&quot;,&quot;incRss&quot;:false,&quot;incSitemap&quot;:false,&quot;incIndex&quot;:false,&quot;shrLinkedIn&quot;:false,&quot;reloadOnEdit&quot;:false,&quot;redirectToNode&quot;:false,&quot;redirectNodeId&quot;:&quot;status-404&quot;,&quot;redirectStatusCode&quot;:&quot;301&quot;,&quot;x&quot;:734.7143707275391,&quot;y&quot;:482,&quot;wires&quot;:[[&quot;64c749a71e14498a&quot;]]},{&quot;id&quot;:&quot;99a631acf3d6c5bf&quot;,&quot;type&quot;:&quot;link out&quot;,&quot;z&quot;:&quot;652104ea8724facc&quot;,&quot;name&quot;:&quot;link out 80&quot;,&quot;mode&quot;:&quot;return&quot;,&quot;links&quot;:[],&quot;x&quot;:1580.0002040863037,&quot;y&quot;:475.4285936355591,&quot;wires&quot;:[]},{&quot;id&quot;:&quot;b360b1072d4d72fa&quot;,&quot;type&quot;:&quot;switch&quot;,&quot;z&quot;:&quot;652104ea8724facc&quot;,&quot;name&quot;:&quot;has _linkSource - is this a link-call action&quot;,&quot;property&quot;:&quot;_linkSource&quot;,&quot;propertyType&quot;:&quot;msg&quot;,&quot;rules&quot;:[{&quot;t&quot;:&quot;nnull&quot;},{&quot;t&quot;:&quot;else&quot;}],&quot;checkall&quot;:&quot;true&quot;,&quot;repair&quot;:false,&quot;outputs&quot;:2,&quot;x&quot;:1289.8573913574219,&quot;y&quot;:481.8571538925171,&quot;wires&quot;:[[&quot;99a631acf3d6c5bf&quot;],[]]},{&quot;id&quot;:&quot;64c749a71e14498a&quot;,&quot;type&quot;:&quot;template&quot;,&quot;z&quot;:&quot;652104ea8724facc&quot;,&quot;name&quot;:&quot;v1&quot;,&quot;field&quot;:&quot;payload&quot;,&quot;fieldType&quot;:&quot;msg&quot;,&quot;format&quot;:&quot;javascript&quot;,&quot;syntax&quot;:&quot;mustache&quot;,&quot;template&quot;:&quot;&quot;,&quot;output&quot;:&quot;str&quot;,&quot;x&quot;:970.4287910461426,&quot;y&quot;:482,&quot;wires&quot;:[[&quot;b360b1072d4d72fa&quot;]]},{&quot;id&quot;:&quot;f0de398e3cfa056a&quot;,&quot;type&quot;:&quot;link in&quot;,&quot;z&quot;:&quot;652104ea8724facc&quot;,&quot;name&quot;:&quot;[blog] embedded-flow-v2.html&quot;,&quot;links&quot;:[],&quot;x&quot;:538,&quot;y&quot;:541.5714330673218,&quot;wires&quot;:[[&quot;b116c37cd891a5e7&quot;]]},{&quot;id&quot;:&quot;b116c37cd891a5e7&quot;,&quot;type&quot;:&quot;BlogPageInfo&quot;,&quot;z&quot;:&quot;652104ea8724facc&quot;,&quot;name&quot;:&quot;&quot;,&quot;image&quot;:&quot;&quot;,&quot;summary&quot;:&quot;Can I generate html directly without using markdown markup?&quot;,&quot;title&quot;:&quot;This is a test of something new&quot;,&quot;publishedAt&quot;:&quot;2023-06-25T11:22&quot;,&quot;updatedAt&quot;:&quot;2023-06-25T11:22&quot;,&quot;incRss&quot;:false,&quot;incSitemap&quot;:false,&quot;incIndex&quot;:false,&quot;shrLinkedIn&quot;:false,&quot;reloadOnEdit&quot;:false,&quot;redirectToNode&quot;:false,&quot;redirectNodeId&quot;:&quot;status-404&quot;,&quot;redirectStatusCode&quot;:&quot;301&quot;,&quot;x&quot;:744.7143707275391,&quot;y&quot;:541.5714330673218,&quot;wires&quot;:[[&quot;861c435f7685cf55&quot;]]},{&quot;id&quot;:&quot;861c435f7685cf55&quot;,&quot;type&quot;:&quot;template&quot;,&quot;z&quot;:&quot;652104ea8724facc&quot;,&quot;name&quot;:&quot;v2&quot;,&quot;field&quot;:&quot;payload&quot;,&quot;fieldType&quot;:&quot;msg&quot;,&quot;format&quot;:&quot;javascript&quot;,&quot;syntax&quot;:&quot;mustache&quot;,&quot;template&quot;:&quot;&quot;,&quot;output&quot;:&quot;str&quot;,&quot;x&quot;:970.4287910461426,&quot;y&quot;:541.5714330673218,&quot;wires&quot;:[[&quot;b360b1072d4d72fa&quot;]]},{&quot;id&quot;:&quot;951cf6e2f214b95b&quot;,&quot;type&quot;:&quot;template&quot;,&quot;z&quot;:&quot;652104ea8724facc&quot;,&quot;name&quot;:&quot;v3&quot;,&quot;field&quot;:&quot;payload&quot;,&quot;fieldType&quot;:&quot;msg&quot;,&quot;format&quot;:&quot;javascript&quot;,&quot;syntax&quot;:&quot;mustache&quot;,&quot;template&quot;:&quot;&quot;,&quot;output&quot;:&quot;str&quot;,&quot;x&quot;:970.4287910461426,&quot;y&quot;:597.2857732772827,&quot;wires&quot;:[[&quot;b360b1072d4d72fa&quot;]]},{&quot;id&quot;:&quot;7885fd1e6f944103&quot;,&quot;type&quot;:&quot;link in&quot;,&quot;z&quot;:&quot;652104ea8724facc&quot;,&quot;name&quot;:&quot;[blog] embedded-flow-v3.html&quot;,&quot;links&quot;:[],&quot;x&quot;:538,&quot;y&quot;:597.2857732772827,&quot;wires&quot;:[[&quot;382f5f013b6f9a3b&quot;]]},{&quot;id&quot;:&quot;382f5f013b6f9a3b&quot;,&quot;type&quot;:&quot;BlogPageInfo&quot;,&quot;z&quot;:&quot;652104ea8724facc&quot;,&quot;name&quot;:&quot;&quot;,&quot;image&quot;:&quot;&quot;,&quot;summary&quot;:&quot;Can I generate html directly without using markdown markup?&quot;,&quot;title&quot;:&quot;This is a test of something new&quot;,&quot;publishedAt&quot;:&quot;2023-06-25T11:22&quot;,&quot;updatedAt&quot;:&quot;2023-06-25T11:22&quot;,&quot;incRss&quot;:false,&quot;incSitemap&quot;:false,&quot;incIndex&quot;:false,&quot;shrLinkedIn&quot;:false,&quot;reloadOnEdit&quot;:false,&quot;redirectToNode&quot;:false,&quot;redirectNodeId&quot;:&quot;status-404&quot;,&quot;redirectStatusCode&quot;:&quot;301&quot;,&quot;x&quot;:744.7143707275391,&quot;y&quot;:597.2857732772827,&quot;wires&quot;:[[&quot;951cf6e2f214b95b&quot;]]},{&quot;id&quot;:&quot;7b05f3f671073181&quot;,&quot;type&quot;:&quot;template&quot;,&quot;z&quot;:&quot;652104ea8724facc&quot;,&quot;name&quot;:&quot;v4&quot;,&quot;field&quot;:&quot;payload&quot;,&quot;fieldType&quot;:&quot;msg&quot;,&quot;format&quot;:&quot;html&quot;,&quot;syntax&quot;:&quot;mustache&quot;,&quot;template&quot;:&quot;&quot;,&quot;output&quot;:&quot;str&quot;,&quot;x&quot;:970.4287910461426,&quot;y&quot;:662.2857732772827,&quot;wires&quot;:[[&quot;b360b1072d4d72fa&quot;]]},{&quot;id&quot;:&quot;3952279c3016c957&quot;,&quot;type&quot;:&quot;link in&quot;,&quot;z&quot;:&quot;652104ea8724facc&quot;,&quot;name&quot;:&quot;[blog] embedded-flow-v4.html&quot;,&quot;links&quot;:[],&quot;x&quot;:538,&quot;y&quot;:662.2857732772827,&quot;wires&quot;:[[&quot;295d018b67f438b9&quot;]]},{&quot;id&quot;:&quot;295d018b67f438b9&quot;,&quot;type&quot;:&quot;BlogPageInfo&quot;,&quot;z&quot;:&quot;652104ea8724facc&quot;,&quot;name&quot;:&quot;&quot;,&quot;image&quot;:&quot;&quot;,&quot;summary&quot;:&quot;Can I generate html directly without using markdown markup?&quot;,&quot;title&quot;:&quot;This is a test of something new&quot;,&quot;publishedAt&quot;:&quot;2023-06-25T11:22&quot;,&quot;updatedAt&quot;:&quot;2023-06-25T11:22&quot;,&quot;incRss&quot;:false,&quot;incSitemap&quot;:false,&quot;incIndex&quot;:false,&quot;shrLinkedIn&quot;:false,&quot;reloadOnEdit&quot;:false,&quot;redirectToNode&quot;:false,&quot;redirectNodeId&quot;:&quot;status-404&quot;,&quot;redirectStatusCode&quot;:&quot;301&quot;,&quot;x&quot;:744.7143707275391,&quot;y&quot;:662.2857732772827,&quot;wires&quot;:[[&quot;7b05f3f671073181&quot;]]},{&quot;id&quot;:&quot;747018dc4b0adf33&quot;,&quot;type&quot;:&quot;template&quot;,&quot;z&quot;:&quot;652104ea8724facc&quot;,&quot;name&quot;:&quot;v5&quot;,&quot;field&quot;:&quot;payload&quot;,&quot;fieldType&quot;:&quot;msg&quot;,&quot;format&quot;:&quot;javascript&quot;,&quot;syntax&quot;:&quot;mustache&quot;,&quot;template&quot;:&quot;&quot;,&quot;output&quot;:&quot;str&quot;,&quot;x&quot;:975.571418762207,&quot;y&quot;:724.7143468856812,&quot;wires&quot;:[[&quot;b360b1072d4d72fa&quot;]]},{&quot;id&quot;:&quot;317130644c24a056&quot;,&quot;type&quot;:&quot;link in&quot;,&quot;z&quot;:&quot;652104ea8724facc&quot;,&quot;name&quot;:&quot;[blog] embedded-flow-v5.html&quot;,&quot;links&quot;:[],&quot;x&quot;:543.1426277160645,&quot;y&quot;:724.7143468856812,&quot;wires&quot;:[[&quot;afca478f73a8601e&quot;]]},{&quot;id&quot;:&quot;afca478f73a8601e&quot;,&quot;type&quot;:&quot;BlogPageInfo&quot;,&quot;z&quot;:&quot;652104ea8724facc&quot;,&quot;name&quot;:&quot;&quot;,&quot;image&quot;:&quot;&quot;,&quot;summary&quot;:&quot;Can I generate html directly without using markdown markup?&quot;,&quot;title&quot;:&quot;This is a test of something new&quot;,&quot;publishedAt&quot;:&quot;2023-06-25T11:22&quot;,&quot;updatedAt&quot;:&quot;2023-06-25T11:22&quot;,&quot;incRss&quot;:false,&quot;incSitemap&quot;:false,&quot;incIndex&quot;:false,&quot;shrLinkedIn&quot;:false,&quot;reloadOnEdit&quot;:false,&quot;redirectToNode&quot;:false,&quot;redirectNodeId&quot;:&quot;status-404&quot;,&quot;redirectStatusCode&quot;:&quot;301&quot;,&quot;x&quot;:749.8569984436035,&quot;y&quot;:724.7143468856812,&quot;wires&quot;:[[&quot;747018dc4b0adf33&quot;]]}]
</code></pre>
<hr>
<h3>Example 2: Language <code>noderedjson-with-arrows</code></h3>
<p>Arrows only on the inputs, outputs remain rectangles.</p>
<pre><code class="language-noderedjson-with-arrows">[{&quot;id&quot;:&quot;d598829cba783cad&quot;,&quot;type&quot;:&quot;GetFlows&quot;,&quot;z&quot;:&quot;f13d3b083d5cc429&quot;,&quot;name&quot;:&quot;&quot;,&quot;flowVersion&quot;:&quot;v1&quot;,&quot;useAuthentication&quot;:false,&quot;apiUsername&quot;:&quot;&quot;,&quot;apiUsernameType&quot;:&quot;env&quot;,&quot;apiPassword&quot;:&quot;&quot;,&quot;apiPasswordType&quot;:&quot;env&quot;,&quot;x&quot;:349,&quot;y&quot;:301,&quot;wires&quot;:[[&quot;ddce7325bdba57d8&quot;]]},{&quot;id&quot;:&quot;c507dd73478a26af&quot;,&quot;type&quot;:&quot;inject&quot;,&quot;z&quot;:&quot;f13d3b083d5cc429&quot;,&quot;name&quot;:&quot;&quot;,&quot;props&quot;:[{&quot;p&quot;:&quot;payload&quot;},{&quot;p&quot;:&quot;topic&quot;,&quot;vt&quot;:&quot;str&quot;}],&quot;repeat&quot;:&quot;7200&quot;,&quot;crontab&quot;:&quot;&quot;,&quot;once&quot;:false,&quot;onceDelay&quot;:0.1,&quot;topic&quot;:&quot;&quot;,&quot;payload&quot;:&quot;&quot;,&quot;payloadType&quot;:&quot;date&quot;,&quot;x&quot;:199,&quot;y&quot;:181,&quot;wires&quot;:[[&quot;d598829cba783cad&quot;]]},{&quot;id&quot;:&quot;67b77f304303cb27&quot;,&quot;type&quot;:&quot;http request&quot;,&quot;z&quot;:&quot;f13d3b083d5cc429&quot;,&quot;name&quot;:&quot;send off to backup server&quot;,&quot;method&quot;:&quot;POST&quot;,&quot;ret&quot;:&quot;txt&quot;,&quot;paytoqs&quot;:&quot;ignore&quot;,&quot;url&quot;:&quot;&quot;,&quot;tls&quot;:&quot;&quot;,&quot;persist&quot;:false,&quot;proxy&quot;:&quot;&quot;,&quot;insecureHTTPParser&quot;:false,&quot;authType&quot;:&quot;&quot;,&quot;senderr&quot;:false,&quot;headers&quot;:[],&quot;x&quot;:1119,&quot;y&quot;:181,&quot;wires&quot;:[[]]},{&quot;id&quot;:&quot;ddce7325bdba57d8&quot;,&quot;type&quot;:&quot;change&quot;,&quot;z&quot;:&quot;f13d3b083d5cc429&quot;,&quot;name&quot;:&quot;setup payload for zip node&quot;,&quot;rules&quot;:[{&quot;t&quot;:&quot;set&quot;,&quot;p&quot;:&quot;_p&quot;,&quot;pt&quot;:&quot;msg&quot;,&quot;to&quot;:&quot;[]&quot;,&quot;tot&quot;:&quot;json&quot;},{&quot;t&quot;:&quot;set&quot;,&quot;p&quot;:&quot;_p[0]&quot;,&quot;pt&quot;:&quot;msg&quot;,&quot;to&quot;:&quot;{ \&quot;filename\&quot;: \&quot;openmindmap_flows.json\&quot;, \&quot;payload\&quot;: \&quot;\&quot; }&quot;,&quot;tot&quot;:&quot;json&quot;},{&quot;t&quot;:&quot;set&quot;,&quot;p&quot;:&quot;_p[0].payload&quot;,&quot;pt&quot;:&quot;msg&quot;,&quot;to&quot;:&quot;payload&quot;,&quot;tot&quot;:&quot;msg&quot;},{&quot;t&quot;:&quot;set&quot;,&quot;p&quot;:&quot;token&quot;,&quot;pt&quot;:&quot;msg&quot;,&quot;to&quot;:&quot;BACKUP_ZIP_TOKEN&quot;,&quot;tot&quot;:&quot;env&quot;},{&quot;t&quot;:&quot;set&quot;,&quot;p&quot;:&quot;_p[1]&quot;,&quot;pt&quot;:&quot;msg&quot;,&quot;to&quot;:&quot;{ \&quot;filename\&quot;: \&quot;token.txt\&quot;, \&quot;payload\&quot;: \&quot;\&quot; &amp; token &amp; \&quot;\&quot; }&quot;,&quot;tot&quot;:&quot;jsonata&quot;},{&quot;t&quot;:&quot;set&quot;,&quot;p&quot;:&quot;payload&quot;,&quot;pt&quot;:&quot;msg&quot;,&quot;to&quot;:&quot;_p&quot;,&quot;tot&quot;:&quot;msg&quot;},{&quot;t&quot;:&quot;set&quot;,&quot;p&quot;:&quot;url&quot;,&quot;pt&quot;:&quot;msg&quot;,&quot;to&quot;:&quot;BACKUP_ENDPOINT&quot;,&quot;tot&quot;:&quot;env&quot;}],&quot;action&quot;:&quot;&quot;,&quot;property&quot;:&quot;&quot;,&quot;from&quot;:&quot;&quot;,&quot;to&quot;:&quot;&quot;,&quot;reg&quot;:false,&quot;x&quot;:549,&quot;y&quot;:401,&quot;wires&quot;:[[&quot;1f879c968f033a26&quot;]]},{&quot;id&quot;:&quot;1f879c968f033a26&quot;,&quot;type&quot;:&quot;zip&quot;,&quot;z&quot;:&quot;f13d3b083d5cc429&quot;,&quot;name&quot;:&quot;&quot;,&quot;mode&quot;:&quot;compress&quot;,&quot;filename&quot;:&quot;backup.zip&quot;,&quot;compressionlevel&quot;:&quot;9&quot;,&quot;outasstring&quot;:false,&quot;x&quot;:769,&quot;y&quot;:401,&quot;wires&quot;:[[&quot;53808fa58e1aa543&quot;]]},{&quot;id&quot;:&quot;53808fa58e1aa543&quot;,&quot;type&quot;:&quot;base64&quot;,&quot;z&quot;:&quot;f13d3b083d5cc429&quot;,&quot;name&quot;:&quot;&quot;,&quot;action&quot;:&quot;&quot;,&quot;property&quot;:&quot;payload&quot;,&quot;x&quot;:929,&quot;y&quot;:301,&quot;wires&quot;:[[&quot;67b77f304303cb27&quot;]]}]
</code></pre>
<hr>
<h3>Example 3: Language <code>noderedjson-no-gridlines</code></h3>
<pre><code class="language-noderedjson-no-gridlines">[{&quot;id&quot;:&quot;e2ec7bbe752d60b0&quot;,&quot;type&quot;:&quot;BlogDetails&quot;,&quot;z&quot;:&quot;184fd5793b8d906c&quot;,&quot;name&quot;:&quot;Open Mind Map Blog Configuration&quot;,&quot;authorName&quot;:&quot;Gregorius Rippenstein&quot;,&quot;authorEmail&quot;:&quot;gregorius@rippenstein.art&quot;,&quot;authorUrl&quot;:&quot;https://gregorius.rippenstein.art&quot;,&quot;blogUrl&quot;:&quot;https://blog.openmindmap.org&quot;,&quot;blogPathPrefix&quot;:&quot;/blog&quot;,&quot;blogTitle&quot;:&quot;Open Mind Map Blog&quot;,&quot;blogSubtitle&quot;:&quot;Global mind-map for a global world.&quot;,&quot;blogCopyrightOwner&quot;:&quot;Open Mind-Map Org.&quot;,&quot;x&quot;:818,&quot;y&quot;:906.5,&quot;wires&quot;:[[&quot;85a8755de2d6ae5c&quot;]]},{&quot;id&quot;:&quot;1956265f7f508d04&quot;,&quot;type&quot;:&quot;group&quot;,&quot;z&quot;:&quot;184fd5793b8d906c&quot;,&quot;name&quot;:&quot;ensure correct domain&quot;,&quot;style&quot;:{&quot;label&quot;:true,&quot;fill&quot;:&quot;#bfc7d7&quot;,&quot;fill-opacity&quot;:&quot;0.71&quot;,&quot;color&quot;:&quot;#000000&quot;},&quot;nodes&quot;:[&quot;26b099616f74f352&quot;,&quot;42795f82c29b8583&quot;,&quot;1f0ea79587166fdd&quot;,&quot;6f6d63b5fa995b5c&quot;,&quot;1d1325b68a7cac1e&quot;,&quot;cdaeb49728432c46&quot;],&quot;x&quot;:163,&quot;y&quot;:136,&quot;w&quot;:877,&quot;h&quot;:189.5},{&quot;id&quot;:&quot;26b099616f74f352&quot;,&quot;type&quot;:&quot;switch&quot;,&quot;z&quot;:&quot;184fd5793b8d906c&quot;,&quot;g&quot;:&quot;1956265f7f508d04&quot;,&quot;name&quot;:&quot;check hostname&quot;,&quot;property&quot;:&quot;req.hostname&quot;,&quot;propertyType&quot;:&quot;msg&quot;,&quot;rules&quot;:[{&quot;t&quot;:&quot;eq&quot;,&quot;v&quot;:&quot;blog.openmindmap.org&quot;,&quot;vt&quot;:&quot;str&quot;},{&quot;t&quot;:&quot;eq&quot;,&quot;v&quot;:&quot;demo.openmindmap.org&quot;,&quot;vt&quot;:&quot;str&quot;},{&quot;t&quot;:&quot;else&quot;}],&quot;checkall&quot;:&quot;false&quot;,&quot;repair&quot;:false,&quot;outputs&quot;:3,&quot;x&quot;:533,&quot;y&quot;:184.5,&quot;wires&quot;:[[&quot;e2ec7bbe752d60b0&quot;],[&quot;1f0ea79587166fdd&quot;],[&quot;6f6d63b5fa995b5c&quot;]]},{&quot;id&quot;:&quot;42795f82c29b8583&quot;,&quot;type&quot;:&quot;http in&quot;,&quot;z&quot;:&quot;184fd5793b8d906c&quot;,&quot;g&quot;:&quot;1956265f7f508d04&quot;,&quot;name&quot;:&quot;&quot;,&quot;url&quot;:&quot;/&quot;,&quot;method&quot;:&quot;get&quot;,&quot;upload&quot;:false,&quot;swaggerDoc&quot;:&quot;&quot;,&quot;x&quot;:239,&quot;y&quot;:184.5,&quot;wires&quot;:[[&quot;26b099616f74f352&quot;]]},{&quot;id&quot;:&quot;1f0ea79587166fdd&quot;,&quot;type&quot;:&quot;http response&quot;,&quot;z&quot;:&quot;184fd5793b8d906c&quot;,&quot;g&quot;:&quot;1956265f7f508d04&quot;,&quot;name&quot;:&quot;redirect if demo.omm.org&quot;,&quot;statusCode&quot;:&quot;301&quot;,&quot;headers&quot;:{&quot;Location&quot;:&quot;/omm&quot;},&quot;x&quot;:887,&quot;y&quot;:185.5,&quot;wires&quot;:[]},{&quot;id&quot;:&quot;6f6d63b5fa995b5c&quot;,&quot;type&quot;:&quot;http response&quot;,&quot;z&quot;:&quot;184fd5793b8d906c&quot;,&quot;g&quot;:&quot;1956265f7f508d04&quot;,&quot;name&quot;:&quot;NOT FOUND everything else&quot;,&quot;statusCode&quot;:&quot;404&quot;,&quot;headers&quot;:{},&quot;x&quot;:894,&quot;y&quot;:227.5,&quot;wires&quot;:[]},{&quot;id&quot;:&quot;1d1325b68a7cac1e&quot;,&quot;type&quot;:&quot;http in&quot;,&quot;z&quot;:&quot;184fd5793b8d906c&quot;,&quot;g&quot;:&quot;1956265f7f508d04&quot;,&quot;name&quot;:&quot;&quot;,&quot;url&quot;:&quot;/blog/:name&quot;,&quot;method&quot;:&quot;get&quot;,&quot;upload&quot;:false,&quot;swaggerDoc&quot;:&quot;&quot;,&quot;x&quot;:269,&quot;y&quot;:232.5,&quot;wires&quot;:[[&quot;26b099616f74f352&quot;]]},{&quot;id&quot;:&quot;cdaeb49728432c46&quot;,&quot;type&quot;:&quot;http in&quot;,&quot;z&quot;:&quot;184fd5793b8d906c&quot;,&quot;g&quot;:&quot;1956265f7f508d04&quot;,&quot;name&quot;:&quot;&quot;,&quot;url&quot;:&quot;/:name&quot;,&quot;method&quot;:&quot;get&quot;,&quot;upload&quot;:false,&quot;swaggerDoc&quot;:&quot;&quot;,&quot;x&quot;:259,&quot;y&quot;:284.5,&quot;wires&quot;:[[&quot;26b099616f74f352&quot;]]},{&quot;id&quot;:&quot;95389d39f5c53d23&quot;,&quot;type&quot;:&quot;group&quot;,&quot;z&quot;:&quot;184fd5793b8d906c&quot;,&quot;name&quot;:&quot;map path to blog content&quot;,&quot;style&quot;:{&quot;label&quot;:true,&quot;stroke&quot;:&quot;#000000&quot;,&quot;color&quot;:&quot;#000000&quot;},&quot;nodes&quot;:[&quot;85c463f82c547140&quot;,&quot;32bb06dfab9a9529&quot;,&quot;85a8755de2d6ae5c&quot;,&quot;7fa818203cac5402&quot;,&quot;71c533e01539c3d3&quot;,&quot;180d18e4931a5ace&quot;,&quot;0d6c29c07f300c15&quot;,&quot;f4781993f9dc4130&quot;,&quot;b41e2620ed591a2d&quot;,&quot;a4bf3e5ac7c74343&quot;,&quot;5d0edf716dc5c6b5&quot;],&quot;x&quot;:1182,&quot;y&quot;:790.5,&quot;w&quot;:2129,&quot;h&quot;:264},{&quot;id&quot;:&quot;85c463f82c547140&quot;,&quot;type&quot;:&quot;template&quot;,&quot;z&quot;:&quot;184fd5793b8d906c&quot;,&quot;g&quot;:&quot;95389d39f5c53d23&quot;,&quot;name&quot;:&quot;HTML Layout&quot;,&quot;field&quot;:&quot;payload&quot;,&quot;fieldType&quot;:&quot;msg&quot;,&quot;format&quot;:&quot;handlebars&quot;,&quot;syntax&quot;:&quot;mustache&quot;,&quot;template&quot;:&quot;&quot;,&quot;output&quot;:&quot;str&quot;,&quot;x&quot;:3035,&quot;y&quot;:1013.5,&quot;wires&quot;:[[&quot;32bb06dfab9a9529&quot;]]},{&quot;id&quot;:&quot;32bb06dfab9a9529&quot;,&quot;type&quot;:&quot;http response&quot;,&quot;z&quot;:&quot;184fd5793b8d906c&quot;,&quot;g&quot;:&quot;95389d39f5c53d23&quot;,&quot;name&quot;:&quot;&quot;,&quot;statusCode&quot;:&quot;200&quot;,&quot;headers&quot;:{},&quot;x&quot;:3225,&quot;y&quot;:932.5,&quot;wires&quot;:[]},{&quot;id&quot;:&quot;85a8755de2d6ae5c&quot;,&quot;type&quot;:&quot;switch&quot;,&quot;z&quot;:&quot;184fd5793b8d906c&quot;,&quot;g&quot;:&quot;95389d39f5c53d23&quot;,&quot;name&quot;:&quot;Path handling&quot;,&quot;property&quot;:&quot;req.params.name&quot;,&quot;propertyType&quot;:&quot;msg&quot;,&quot;rules&quot;:[{&quot;t&quot;:&quot;eq&quot;,&quot;v&quot;:&quot;apple-touch-icon.png&quot;,&quot;vt&quot;:&quot;str&quot;},{&quot;t&quot;:&quot;eq&quot;,&quot;v&quot;:&quot;favicon.ico&quot;,&quot;vt&quot;:&quot;str&quot;},{&quot;t&quot;:&quot;eq&quot;,&quot;v&quot;:&quot;sitemap.xml&quot;,&quot;vt&quot;:&quot;str&quot;},{&quot;t&quot;:&quot;eq&quot;,&quot;v&quot;:&quot;feed.xml&quot;,&quot;vt&quot;:&quot;str&quot;},{&quot;t&quot;:&quot;eq&quot;,&quot;v&quot;:&quot;rss.xml&quot;,&quot;vt&quot;:&quot;str&quot;},{&quot;t&quot;:&quot;eq&quot;,&quot;v&quot;:&quot;index&quot;,&quot;vt&quot;:&quot;str&quot;},{&quot;t&quot;:&quot;eq&quot;,&quot;v&quot;:&quot;blog&quot;,&quot;vt&quot;:&quot;str&quot;},{&quot;t&quot;:&quot;nnull&quot;},{&quot;t&quot;:&quot;else&quot;}],&quot;checkall&quot;:&quot;false&quot;,&quot;repair&quot;:false,&quot;outputs&quot;:9,&quot;x&quot;:1288,&quot;y&quot;:906.5,&quot;wires&quot;:[[],[],[],[],[],[&quot;7fa818203cac5402&quot;],[&quot;0d6c29c07f300c15&quot;],[&quot;7fa818203cac5402&quot;],[&quot;0d6c29c07f300c15&quot;]]},{&quot;id&quot;:&quot;7fa818203cac5402&quot;,&quot;type&quot;:&quot;change&quot;,&quot;z&quot;:&quot;184fd5793b8d906c&quot;,&quot;g&quot;:&quot;95389d39f5c53d23&quot;,&quot;name&quot;:&quot;set page target: \&quot;[blog] &lt;name&gt;\&quot;&quot;,&quot;rules&quot;:[{&quot;t&quot;:&quot;set&quot;,&quot;p&quot;:&quot;target&quot;,&quot;pt&quot;:&quot;msg&quot;,&quot;to&quot;:&quot;\&quot;[blog] \&quot; &amp; msg.req.params.name&quot;,&quot;tot&quot;:&quot;jsonata&quot;}],&quot;action&quot;:&quot;&quot;,&quot;property&quot;:&quot;&quot;,&quot;from&quot;:&quot;&quot;,&quot;to&quot;:&quot;&quot;,&quot;reg&quot;:false,&quot;x&quot;:1638,&quot;y&quot;:886.5,&quot;wires&quot;:[[&quot;71c533e01539c3d3&quot;]]},{&quot;id&quot;:&quot;71c533e01539c3d3&quot;,&quot;type&quot;:&quot;link call&quot;,&quot;z&quot;:&quot;184fd5793b8d906c&quot;,&quot;g&quot;:&quot;95389d39f5c53d23&quot;,&quot;name&quot;:&quot;generate page content&quot;,&quot;links&quot;:[],&quot;linkType&quot;:&quot;dynamic&quot;,&quot;timeout&quot;:&quot;5&quot;,&quot;x&quot;:1941,&quot;y&quot;:951.5,&quot;wires&quot;:[[&quot;f4781993f9dc4130&quot;]]},{&quot;id&quot;:&quot;180d18e4931a5ace&quot;,&quot;type&quot;:&quot;markdown&quot;,&quot;z&quot;:&quot;184fd5793b8d906c&quot;,&quot;g&quot;:&quot;95389d39f5c53d23&quot;,&quot;name&quot;:&quot;Markdown to HTML&quot;,&quot;x&quot;:2794,&quot;y&quot;:1013.5,&quot;wires&quot;:[[&quot;85c463f82c547140&quot;]]},{&quot;id&quot;:&quot;0d6c29c07f300c15&quot;,&quot;type&quot;:&quot;change&quot;,&quot;z&quot;:&quot;184fd5793b8d906c&quot;,&quot;g&quot;:&quot;95389d39f5c53d23&quot;,&quot;name&quot;:&quot;target: \&quot;[blog] index\&quot;&quot;,&quot;rules&quot;:[{&quot;t&quot;:&quot;set&quot;,&quot;p&quot;:&quot;target&quot;,&quot;pt&quot;:&quot;msg&quot;,&quot;to&quot;:&quot;[blog] index&quot;,&quot;tot&quot;:&quot;str&quot;}],&quot;action&quot;:&quot;&quot;,&quot;property&quot;:&quot;&quot;,&quot;from&quot;:&quot;&quot;,&quot;to&quot;:&quot;&quot;,&quot;reg&quot;:false,&quot;x&quot;:1598,&quot;y&quot;:951.5,&quot;wires&quot;:[[&quot;71c533e01539c3d3&quot;]]},{&quot;id&quot;:&quot;f4781993f9dc4130&quot;,&quot;type&quot;:&quot;switch&quot;,&quot;z&quot;:&quot;184fd5793b8d906c&quot;,&quot;g&quot;:&quot;95389d39f5c53d23&quot;,&quot;name&quot;:&quot;ignore redirects&quot;,&quot;property&quot;:&quot;statusCode&quot;,&quot;propertyType&quot;:&quot;msg&quot;,&quot;rules&quot;:[{&quot;t&quot;:&quot;eq&quot;,&quot;v&quot;:&quot;301&quot;,&quot;vt&quot;:&quot;num&quot;},{&quot;t&quot;:&quot;eq&quot;,&quot;v&quot;:&quot;302&quot;,&quot;vt&quot;:&quot;num&quot;},{&quot;t&quot;:&quot;else&quot;}],&quot;checkall&quot;:&quot;false&quot;,&quot;repair&quot;:false,&quot;outputs&quot;:3,&quot;x&quot;:2152,&quot;y&quot;:951.5,&quot;wires&quot;:[[],[],[&quot;b41e2620ed591a2d&quot;]]},{&quot;id&quot;:&quot;b41e2620ed591a2d&quot;,&quot;type&quot;:&quot;switch&quot;,&quot;z&quot;:&quot;184fd5793b8d906c&quot;,&quot;g&quot;:&quot;95389d39f5c53d23&quot;,&quot;name&quot;:&quot;path extension is '.html'?&quot;,&quot;property&quot;:&quot;page.path&quot;,&quot;propertyType&quot;:&quot;msg&quot;,&quot;rules&quot;:[{&quot;t&quot;:&quot;regex&quot;,&quot;v&quot;:&quot;\\.html$&quot;,&quot;vt&quot;:&quot;str&quot;,&quot;case&quot;:true},{&quot;t&quot;:&quot;else&quot;}],&quot;checkall&quot;:&quot;false&quot;,&quot;repair&quot;:false,&quot;outputs&quot;:2,&quot;x&quot;:2524,&quot;y&quot;:831.5,&quot;wires&quot;:[[&quot;32bb06dfab9a9529&quot;],[&quot;a4bf3e5ac7c74343&quot;]]},{&quot;id&quot;:&quot;a4bf3e5ac7c74343&quot;,&quot;type&quot;:&quot;switch&quot;,&quot;z&quot;:&quot;184fd5793b8d906c&quot;,&quot;g&quot;:&quot;95389d39f5c53d23&quot;,&quot;name&quot;:&quot;is msg.htmlcontent set?&quot;,&quot;property&quot;:&quot;htmlcontent&quot;,&quot;propertyType&quot;:&quot;msg&quot;,&quot;rules&quot;:[{&quot;t&quot;:&quot;nnull&quot;},{&quot;t&quot;:&quot;else&quot;}],&quot;checkall&quot;:&quot;false&quot;,&quot;repair&quot;:false,&quot;outputs&quot;:2,&quot;x&quot;:2526,&quot;y&quot;:935.5,&quot;wires&quot;:[[&quot;5d0edf716dc5c6b5&quot;],[&quot;180d18e4931a5ace&quot;]]},{&quot;id&quot;:&quot;5d0edf716dc5c6b5&quot;,&quot;type&quot;:&quot;change&quot;,&quot;z&quot;:&quot;184fd5793b8d906c&quot;,&quot;g&quot;:&quot;95389d39f5c53d23&quot;,&quot;name&quot;:&quot;&quot;,&quot;rules&quot;:[{&quot;t&quot;:&quot;set&quot;,&quot;p&quot;:&quot;payload&quot;,&quot;pt&quot;:&quot;msg&quot;,&quot;to&quot;:&quot;htmlcontent&quot;,&quot;tot&quot;:&quot;msg&quot;}],&quot;action&quot;:&quot;&quot;,&quot;property&quot;:&quot;&quot;,&quot;from&quot;:&quot;&quot;,&quot;to&quot;:&quot;&quot;,&quot;reg&quot;:false,&quot;x&quot;:2863,&quot;y&quot;:929.5,&quot;wires&quot;:[[&quot;32bb06dfab9a9529&quot;]]}]
</code></pre>
<hr>
<h3>Example 4: The Xmas tree with <code>noderedjson-no-gridlines-with-arrows</code></h3>
<pre><code class="language-noderedjson-no-gridlines-with-arrows">[{&quot;id&quot;:&quot;ae0d5b956a3f28e6&quot;,&quot;type&quot;:&quot;BlogPageInfo&quot;,&quot;z&quot;:&quot;4c24fa4e7dcf38ec&quot;,&quot;name&quot;:&quot;&quot;,&quot;image&quot;:&quot;&quot;,&quot;summary&quot;:&quot;Can I generate html directly without using markdown markup?&quot;,&quot;title&quot;:&quot;This is a test of something new&quot;,&quot;publishedAt&quot;:&quot;2023-06-25T11:22&quot;,&quot;updatedAt&quot;:&quot;2023-06-25T11:22&quot;,&quot;incRss&quot;:false,&quot;incSitemap&quot;:false,&quot;incIndex&quot;:false,&quot;shrLinkedIn&quot;:false,&quot;supportNodeRedJson&quot;:false,&quot;reloadOnEdit&quot;:true,&quot;redirectToNode&quot;:false,&quot;redirectNodeId&quot;:&quot;status-404&quot;,&quot;redirectStatusCode&quot;:&quot;301&quot;,&quot;x&quot;:1049,&quot;y&quot;:559,&quot;wires&quot;:[[&quot;2d22995c9f1f1b29&quot;]]},{&quot;id&quot;:&quot;cbce591869d45063&quot;,&quot;type&quot;:&quot;link in&quot;,&quot;z&quot;:&quot;4c24fa4e7dcf38ec&quot;,&quot;name&quot;:&quot;[blog] embedded-flow-v10.html&quot;,&quot;links&quot;:[],&quot;x&quot;:1146.28564453125,&quot;y&quot;:641,&quot;wires&quot;:[[&quot;ae0d5b956a3f28e6&quot;]]},{&quot;id&quot;:&quot;2d22995c9f1f1b29&quot;,&quot;type&quot;:&quot;template&quot;,&quot;z&quot;:&quot;4c24fa4e7dcf38ec&quot;,&quot;name&quot;:&quot;v10&quot;,&quot;field&quot;:&quot;payload&quot;,&quot;fieldType&quot;:&quot;msg&quot;,&quot;format&quot;:&quot;javascript&quot;,&quot;syntax&quot;:&quot;mustache&quot;,&quot;template&quot;:&quot;&quot;,&quot;output&quot;:&quot;str&quot;,&quot;x&quot;:1298.71435546875,&quot;y&quot;:609,&quot;wires&quot;:[[&quot;abac4f329e6a820d&quot;]]},{&quot;id&quot;:&quot;abac4f329e6a820d&quot;,&quot;type&quot;:&quot;switch&quot;,&quot;z&quot;:&quot;4c24fa4e7dcf38ec&quot;,&quot;name&quot;:&quot;has _linkSource - is this a link-call action&quot;,&quot;property&quot;:&quot;_linkSource&quot;,&quot;propertyType&quot;:&quot;msg&quot;,&quot;rules&quot;:[{&quot;t&quot;:&quot;nnull&quot;},{&quot;t&quot;:&quot;else&quot;}],&quot;checkall&quot;:&quot;true&quot;,&quot;repair&quot;:false,&quot;outputs&quot;:2,&quot;x&quot;:553.0003051757812,&quot;y&quot;:816.142822265625,&quot;wires&quot;:[[&quot;09b45bafaa67147a&quot;],[]]},{&quot;id&quot;:&quot;503aa7f4da56542d&quot;,&quot;type&quot;:&quot;template&quot;,&quot;z&quot;:&quot;4c24fa4e7dcf38ec&quot;,&quot;name&quot;:&quot;v11&quot;,&quot;field&quot;:&quot;payload&quot;,&quot;fieldType&quot;:&quot;msg&quot;,&quot;format&quot;:&quot;javascript&quot;,&quot;syntax&quot;:&quot;mustache&quot;,&quot;template&quot;:&quot;&quot;,&quot;output&quot;:&quot;str&quot;,&quot;x&quot;:578.7144203186035,&quot;y&quot;:728,&quot;wires&quot;:[[&quot;abac4f329e6a820d&quot;]]},{&quot;id&quot;:&quot;09b45bafaa67147a&quot;,&quot;type&quot;:&quot;link out&quot;,&quot;z&quot;:&quot;4c24fa4e7dcf38ec&quot;,&quot;name&quot;:&quot;link out 82&quot;,&quot;mode&quot;:&quot;return&quot;,&quot;links&quot;:[],&quot;x&quot;:1136.14306640625,&quot;y&quot;:818.7142333984375,&quot;wires&quot;:[]},{&quot;id&quot;:&quot;cd925fa7a351451a&quot;,&quot;type&quot;:&quot;markdown&quot;,&quot;z&quot;:&quot;4c24fa4e7dcf38ec&quot;,&quot;name&quot;:&quot;&quot;,&quot;x&quot;:772.7144203186035,&quot;y&quot;:594,&quot;wires&quot;:[[&quot;503aa7f4da56542d&quot;]]},{&quot;id&quot;:&quot;8d7a34aac2739180&quot;,&quot;type&quot;:&quot;template&quot;,&quot;z&quot;:&quot;4c24fa4e7dcf38ec&quot;,&quot;name&quot;:&quot;.md page&quot;,&quot;field&quot;:&quot;payload&quot;,&quot;fieldType&quot;:&quot;msg&quot;,&quot;format&quot;:&quot;markdown&quot;,&quot;syntax&quot;:&quot;mustache&quot;,&quot;template&quot;:&quot;&quot;,&quot;output&quot;:&quot;str&quot;,&quot;x&quot;:965.7144203186035,&quot;y&quot;:405,&quot;wires&quot;:[[&quot;cd925fa7a351451a&quot;]]},{&quot;id&quot;:&quot;c639b3e6dd4092a2&quot;,&quot;type&quot;:&quot;template&quot;,&quot;z&quot;:&quot;4c24fa4e7dcf38ec&quot;,&quot;name&quot;:&quot;flowexample7&quot;,&quot;field&quot;:&quot;flowexample7&quot;,&quot;fieldType&quot;:&quot;msg&quot;,&quot;format&quot;:&quot;handlebars&quot;,&quot;syntax&quot;:&quot;plain&quot;,&quot;template&quot;:&quot;&quot;,&quot;output&quot;:&quot;str&quot;,&quot;x&quot;:1185.7144203186035,&quot;y&quot;:156,&quot;wires&quot;:[[&quot;8d7a34aac2739180&quot;]]},{&quot;id&quot;:&quot;40562872bcf9e779&quot;,&quot;type&quot;:&quot;template&quot;,&quot;z&quot;:&quot;4c24fa4e7dcf38ec&quot;,&quot;name&quot;:&quot;flowexample6&quot;,&quot;field&quot;:&quot;flowexample6&quot;,&quot;fieldType&quot;:&quot;msg&quot;,&quot;format&quot;:&quot;handlebars&quot;,&quot;syntax&quot;:&quot;plain&quot;,&quot;template&quot;:&quot;&quot;,&quot;output&quot;:&quot;str&quot;,&quot;x&quot;:1424.7144203186035,&quot;y&quot;:402,&quot;wires&quot;:[[&quot;c639b3e6dd4092a2&quot;]]},{&quot;id&quot;:&quot;23dc5d86e4ae09f7&quot;,&quot;type&quot;:&quot;template&quot;,&quot;z&quot;:&quot;4c24fa4e7dcf38ec&quot;,&quot;name&quot;:&quot;flowexample5&quot;,&quot;field&quot;:&quot;flowexample5&quot;,&quot;fieldType&quot;:&quot;msg&quot;,&quot;format&quot;:&quot;handlebars&quot;,&quot;syntax&quot;:&quot;plain&quot;,&quot;template&quot;:&quot;&quot;,&quot;output&quot;:&quot;str&quot;,&quot;x&quot;:1633.7144203186035,&quot;y&quot;:606,&quot;wires&quot;:[[&quot;40562872bcf9e779&quot;]]},{&quot;id&quot;:&quot;309d9661aa3ca436&quot;,&quot;type&quot;:&quot;template&quot;,&quot;z&quot;:&quot;4c24fa4e7dcf38ec&quot;,&quot;name&quot;:&quot;flowexample4&quot;,&quot;field&quot;:&quot;flowexample4&quot;,&quot;fieldType&quot;:&quot;msg&quot;,&quot;format&quot;:&quot;handlebars&quot;,&quot;syntax&quot;:&quot;plain&quot;,&quot;template&quot;:&quot;&quot;,&quot;output&quot;:&quot;str&quot;,&quot;x&quot;:1814.7144203186035,&quot;y&quot;:804,&quot;wires&quot;:[[&quot;23dc5d86e4ae09f7&quot;]]},{&quot;id&quot;:&quot;88644f9859d30ff0&quot;,&quot;type&quot;:&quot;template&quot;,&quot;z&quot;:&quot;4c24fa4e7dcf38ec&quot;,&quot;name&quot;:&quot;flowexample3&quot;,&quot;field&quot;:&quot;flowexample3&quot;,&quot;fieldType&quot;:&quot;msg&quot;,&quot;format&quot;:&quot;handlebars&quot;,&quot;syntax&quot;:&quot;plain&quot;,&quot;template&quot;:&quot;&quot;,&quot;output&quot;:&quot;str&quot;,&quot;x&quot;:1346.7144203186035,&quot;y&quot;:811,&quot;wires&quot;:[[&quot;309d9661aa3ca436&quot;]]},{&quot;id&quot;:&quot;18c0c665820d9a21&quot;,&quot;type&quot;:&quot;template&quot;,&quot;z&quot;:&quot;4c24fa4e7dcf38ec&quot;,&quot;name&quot;:&quot;flowexample2&quot;,&quot;field&quot;:&quot;flowexample2&quot;,&quot;fieldType&quot;:&quot;msg&quot;,&quot;format&quot;:&quot;handlebars&quot;,&quot;syntax&quot;:&quot;plain&quot;,&quot;template&quot;:&quot;&quot;,&quot;output&quot;:&quot;str&quot;,&quot;x&quot;:1115.7144775390625,&quot;y&quot;:952,&quot;wires&quot;:[[&quot;88644f9859d30ff0&quot;]]},{&quot;id&quot;:&quot;8cd8ed44f82b06bf&quot;,&quot;type&quot;:&quot;template&quot;,&quot;z&quot;:&quot;4c24fa4e7dcf38ec&quot;,&quot;name&quot;:&quot;flow example 1&quot;,&quot;field&quot;:&quot;flowexample1&quot;,&quot;fieldType&quot;:&quot;msg&quot;,&quot;format&quot;:&quot;handlebars&quot;,&quot;syntax&quot;:&quot;plain&quot;,&quot;template&quot;:&quot;&quot;,&quot;output&quot;:&quot;str&quot;,&quot;x&quot;:894.71435546875,&quot;y&quot;:819,&quot;wires&quot;:[[&quot;18c0c665820d9a21&quot;]]},{&quot;id&quot;:&quot;2294edbbc0bcfa16&quot;,&quot;type&quot;:&quot;BlogPageInfo&quot;,&quot;z&quot;:&quot;4c24fa4e7dcf38ec&quot;,&quot;name&quot;:&quot;&quot;,&quot;image&quot;:&quot;&quot;,&quot;summary&quot;:&quot;Can I generate html directly without using markdown markup?&quot;,&quot;title&quot;:&quot;This is a test of something new&quot;,&quot;publishedAt&quot;:&quot;2023-06-25T11:22&quot;,&quot;updatedAt&quot;:&quot;2023-06-25T11:22&quot;,&quot;incRss&quot;:false,&quot;incSitemap&quot;:false,&quot;incIndex&quot;:false,&quot;shrLinkedIn&quot;:false,&quot;supportNodeRedJson&quot;:false,&quot;reloadOnEdit&quot;:true,&quot;redirectToNode&quot;:false,&quot;redirectNodeId&quot;:&quot;status-404&quot;,&quot;redirectStatusCode&quot;:&quot;301&quot;,&quot;x&quot;:1371,&quot;y&quot;:559,&quot;wires&quot;:[[&quot;8cd8ed44f82b06bf&quot;]]},{&quot;id&quot;:&quot;48e808c24ffc7e1d&quot;,&quot;type&quot;:&quot;link in&quot;,&quot;z&quot;:&quot;4c24fa4e7dcf38ec&quot;,&quot;name&quot;:&quot;[blog] embedded-flow-v11.html&quot;,&quot;links&quot;:[],&quot;x&quot;:1122.28564453125,&quot;y&quot;:484,&quot;wires&quot;:[[&quot;2294edbbc0bcfa16&quot;]]}]
</code></pre>
<hr>
<h3>Example 5: Language: <code>noderedjson-no-images</code></h3>
<pre><code class="language-noderedjson-no-images">[{&quot;id&quot;:&quot;e3e278445b7bcb21&quot;,&quot;type&quot;:&quot;subflow&quot;,&quot;name&quot;:&quot;BlogPageEndsHere&quot;,&quot;info&quot;:&quot;&quot;,&quot;category&quot;:&quot;&quot;,&quot;in&quot;:[{&quot;x&quot;:132,&quot;y&quot;:215,&quot;wires&quot;:[{&quot;id&quot;:&quot;b2f270b15349b67c&quot;}]}],&quot;out&quot;:[],&quot;env&quot;:[],&quot;meta&quot;:{},&quot;color&quot;:&quot;#ddeeff&quot;,&quot;icon&quot;:&quot;font-awesome/fa-hand-stop-o&quot;},{&quot;id&quot;:&quot;627f98bbc0ea4f8b&quot;,&quot;type&quot;:&quot;link out&quot;,&quot;z&quot;:&quot;e3e278445b7bcb21&quot;,&quot;name&quot;:&quot;link out 77&quot;,&quot;mode&quot;:&quot;return&quot;,&quot;links&quot;:[],&quot;x&quot;:1328,&quot;y&quot;:306,&quot;wires&quot;:[]},{&quot;id&quot;:&quot;408189fb7a17ba8b&quot;,&quot;type&quot;:&quot;switch&quot;,&quot;z&quot;:&quot;e3e278445b7bcb21&quot;,&quot;name&quot;:&quot;has _linkSource - is this a link-call action&quot;,&quot;property&quot;:&quot;_linkSource&quot;,&quot;propertyType&quot;:&quot;msg&quot;,&quot;rules&quot;:[{&quot;t&quot;:&quot;nnull&quot;},{&quot;t&quot;:&quot;else&quot;}],&quot;checkall&quot;:&quot;true&quot;,&quot;repair&quot;:false,&quot;outputs&quot;:2,&quot;x&quot;:1002,&quot;y&quot;:403,&quot;wires&quot;:[[&quot;627f98bbc0ea4f8b&quot;],[]]},{&quot;id&quot;:&quot;2a2cc4ef4e7704b4&quot;,&quot;type&quot;:&quot;template&quot;,&quot;z&quot;:&quot;e3e278445b7bcb21&quot;,&quot;name&quot;:&quot;&quot;,&quot;field&quot;:&quot;payload&quot;,&quot;fieldType&quot;:&quot;msg&quot;,&quot;format&quot;:&quot;handlebars&quot;,&quot;syntax&quot;:&quot;mustache&quot;,&quot;template&quot;:&quot;&quot;,&quot;output&quot;:&quot;str&quot;,&quot;x&quot;:545,&quot;y&quot;:632,&quot;wires&quot;:[[&quot;408189fb7a17ba8b&quot;]]},{&quot;id&quot;:&quot;693c46a206c026a4&quot;,&quot;type&quot;:&quot;change&quot;,&quot;z&quot;:&quot;e3e278445b7bcb21&quot;,&quot;name&quot;:&quot;&quot;,&quot;rules&quot;:[{&quot;t&quot;:&quot;set&quot;,&quot;p&quot;:&quot;template&quot;,&quot;pt&quot;:&quot;msg&quot;,&quot;to&quot;:&quot;payload&quot;,&quot;tot&quot;:&quot;msg&quot;}],&quot;action&quot;:&quot;&quot;,&quot;property&quot;:&quot;&quot;,&quot;from&quot;:&quot;&quot;,&quot;to&quot;:&quot;&quot;,&quot;reg&quot;:false,&quot;x&quot;:474,&quot;y&quot;:510,&quot;wires&quot;:[[&quot;2a2cc4ef4e7704b4&quot;]]},{&quot;id&quot;:&quot;b2f270b15349b67c&quot;,&quot;type&quot;:&quot;switch&quot;,&quot;z&quot;:&quot;e3e278445b7bcb21&quot;,&quot;name&quot;:&quot;&quot;,&quot;property&quot;:&quot;page.noderedjson&quot;,&quot;propertyType&quot;:&quot;msg&quot;,&quot;rules&quot;:[{&quot;t&quot;:&quot;true&quot;},{&quot;t&quot;:&quot;else&quot;}],&quot;checkall&quot;:&quot;false&quot;,&quot;repair&quot;:false,&quot;outputs&quot;:2,&quot;x&quot;:374,&quot;y&quot;:408,&quot;wires&quot;:[[&quot;408189fb7a17ba8b&quot;],[&quot;693c46a206c026a4&quot;]]},{&quot;id&quot;:&quot;f161221e2ee84846&quot;,&quot;type&quot;:&quot;BlogPageInfo&quot;,&quot;z&quot;:&quot;e88020583c022170&quot;,&quot;name&quot;:&quot;&quot;,&quot;image&quot;:&quot;1687952972847_Screen_Shot_2023-06-28_at_13.48.43.png&quot;,&quot;summary&quot;:&quot;Codeblocks are one thing but images are further a thousand Json files. Show me your flow!&quot;,&quot;title&quot;:&quot;Replacing Node-RED flow codeblocks with flow images.&quot;,&quot;publishedAt&quot;:&quot;2023-06-28T11:22&quot;,&quot;updatedAt&quot;:&quot;2023-06-28T11:22&quot;,&quot;incRss&quot;:true,&quot;incSitemap&quot;:true,&quot;incIndex&quot;:true,&quot;shrLinkedIn&quot;:true,&quot;supportNodeRedJson&quot;:true,&quot;reloadOnEdit&quot;:false,&quot;redirectToNode&quot;:false,&quot;redirectNodeId&quot;:&quot;status-404&quot;,&quot;redirectStatusCode&quot;:&quot;301&quot;,&quot;x&quot;:374.71435546875,&quot;y&quot;:1339,&quot;wires&quot;:[[&quot;49c3561cfc3bf8b3&quot;]]},{&quot;id&quot;:&quot;e0bcd8d7b8245c21&quot;,&quot;type&quot;:&quot;link in&quot;,&quot;z&quot;:&quot;e88020583c022170&quot;,&quot;name&quot;:&quot;[blog] backticks-in-markdown-and-node-red&quot;,&quot;links&quot;:[],&quot;x&quot;:204,&quot;y&quot;:1389,&quot;wires&quot;:[[&quot;f161221e2ee84846&quot;]]},{&quot;id&quot;:&quot;49c3561cfc3bf8b3&quot;,&quot;type&quot;:&quot;template&quot;,&quot;z&quot;:&quot;e88020583c022170&quot;,&quot;name&quot;:&quot;flow example 1&quot;,&quot;field&quot;:&quot;flowexample1&quot;,&quot;fieldType&quot;:&quot;msg&quot;,&quot;format&quot;:&quot;handlebars&quot;,&quot;syntax&quot;:&quot;plain&quot;,&quot;template&quot;:&quot;&quot;,&quot;output&quot;:&quot;str&quot;,&quot;x&quot;:660,&quot;y&quot;:1425,&quot;wires&quot;:[[&quot;724cc1e0b9b56983&quot;]]},{&quot;id&quot;:&quot;f9ea3058dc703eee&quot;,&quot;type&quot;:&quot;BlogPageInfo&quot;,&quot;z&quot;:&quot;e88020583c022170&quot;,&quot;name&quot;:&quot;&quot;,&quot;image&quot;:&quot;&quot;,&quot;summary&quot;:&quot;Can I replace codeblocks of flows.json with images?&quot;,&quot;title&quot;:&quot;Testing the inclusion and replacement of codeblocks&quot;,&quot;publishedAt&quot;:&quot;2023-06-25T11:22&quot;,&quot;updatedAt&quot;:&quot;2023-06-25T11:22&quot;,&quot;incRss&quot;:false,&quot;incSitemap&quot;:false,&quot;incIndex&quot;:false,&quot;shrLinkedIn&quot;:false,&quot;supportNodeRedJson&quot;:true,&quot;reloadOnEdit&quot;:false,&quot;redirectToNode&quot;:false,&quot;redirectNodeId&quot;:&quot;status-404&quot;,&quot;redirectStatusCode&quot;:&quot;301&quot;,&quot;x&quot;:403.71435546875,&quot;y&quot;:1478,&quot;wires&quot;:[[&quot;49c3561cfc3bf8b3&quot;]]},{&quot;id&quot;:&quot;724cc1e0b9b56983&quot;,&quot;type&quot;:&quot;template&quot;,&quot;z&quot;:&quot;e88020583c022170&quot;,&quot;name&quot;:&quot;flowexample2&quot;,&quot;field&quot;:&quot;flowexample2&quot;,&quot;fieldType&quot;:&quot;msg&quot;,&quot;format&quot;:&quot;handlebars&quot;,&quot;syntax&quot;:&quot;plain&quot;,&quot;template&quot;:&quot;&quot;,&quot;output&quot;:&quot;str&quot;,&quot;x&quot;:857,&quot;y&quot;:1370,&quot;wires&quot;:[[&quot;d8b85c4b0a441b4d&quot;]]},{&quot;id&quot;:&quot;8b702bc007cf0e3e&quot;,&quot;type&quot;:&quot;link in&quot;,&quot;z&quot;:&quot;e88020583c022170&quot;,&quot;name&quot;:&quot;[blog] codeblock-test&quot;,&quot;links&quot;:[],&quot;x&quot;:204,&quot;y&quot;:1424,&quot;wires&quot;:[[&quot;f9ea3058dc703eee&quot;]]},{&quot;id&quot;:&quot;d8b85c4b0a441b4d&quot;,&quot;type&quot;:&quot;template&quot;,&quot;z&quot;:&quot;e88020583c022170&quot;,&quot;name&quot;:&quot;flowexample3&quot;,&quot;field&quot;:&quot;flowexample3&quot;,&quot;fieldType&quot;:&quot;msg&quot;,&quot;format&quot;:&quot;handlebars&quot;,&quot;syntax&quot;:&quot;plain&quot;,&quot;template&quot;:&quot;&quot;,&quot;output&quot;:&quot;str&quot;,&quot;x&quot;:1029,&quot;y&quot;:1433,&quot;wires&quot;:[[&quot;23f9f3582f3172b6&quot;]]},{&quot;id&quot;:&quot;23f9f3582f3172b6&quot;,&quot;type&quot;:&quot;template&quot;,&quot;z&quot;:&quot;e88020583c022170&quot;,&quot;name&quot;:&quot;flowexample4&quot;,&quot;field&quot;:&quot;flowexample4&quot;,&quot;fieldType&quot;:&quot;msg&quot;,&quot;format&quot;:&quot;handlebars&quot;,&quot;syntax&quot;:&quot;plain&quot;,&quot;template&quot;:&quot;&quot;,&quot;output&quot;:&quot;str&quot;,&quot;x&quot;:1235,&quot;y&quot;:1378,&quot;wires&quot;:[[&quot;22e594991d0092af&quot;]]},{&quot;id&quot;:&quot;22e594991d0092af&quot;,&quot;type&quot;:&quot;template&quot;,&quot;z&quot;:&quot;e88020583c022170&quot;,&quot;name&quot;:&quot;flowexample5&quot;,&quot;field&quot;:&quot;flowexample5&quot;,&quot;fieldType&quot;:&quot;msg&quot;,&quot;format&quot;:&quot;handlebars&quot;,&quot;syntax&quot;:&quot;plain&quot;,&quot;template&quot;:&quot;&quot;,&quot;output&quot;:&quot;str&quot;,&quot;x&quot;:1411,&quot;y&quot;:1443,&quot;wires&quot;:[[&quot;8ffa9d87efff1d51&quot;]]},{&quot;id&quot;:&quot;8ffa9d87efff1d51&quot;,&quot;type&quot;:&quot;template&quot;,&quot;z&quot;:&quot;e88020583c022170&quot;,&quot;name&quot;:&quot;flowexample6&quot;,&quot;field&quot;:&quot;flowexample6&quot;,&quot;fieldType&quot;:&quot;msg&quot;,&quot;format&quot;:&quot;handlebars&quot;,&quot;syntax&quot;:&quot;plain&quot;,&quot;template&quot;:&quot;&quot;,&quot;output&quot;:&quot;str&quot;,&quot;x&quot;:1592,&quot;y&quot;:1385,&quot;wires&quot;:[[&quot;7c3cbb557ff5b93d&quot;]]},{&quot;id&quot;:&quot;7c3cbb557ff5b93d&quot;,&quot;type&quot;:&quot;template&quot;,&quot;z&quot;:&quot;e88020583c022170&quot;,&quot;name&quot;:&quot;flowexample7&quot;,&quot;field&quot;:&quot;flowexample7&quot;,&quot;fieldType&quot;:&quot;msg&quot;,&quot;format&quot;:&quot;handlebars&quot;,&quot;syntax&quot;:&quot;plain&quot;,&quot;template&quot;:&quot;&quot;,&quot;output&quot;:&quot;str&quot;,&quot;x&quot;:1740,&quot;y&quot;:1443,&quot;wires&quot;:[[&quot;d9667d3144e93adb&quot;]]},{&quot;id&quot;:&quot;d9667d3144e93adb&quot;,&quot;type&quot;:&quot;template&quot;,&quot;z&quot;:&quot;e88020583c022170&quot;,&quot;name&quot;:&quot;.md page&quot;,&quot;field&quot;:&quot;payload&quot;,&quot;fieldType&quot;:&quot;msg&quot;,&quot;format&quot;:&quot;markdown&quot;,&quot;syntax&quot;:&quot;mustache&quot;,&quot;template&quot;:&quot;&quot;,&quot;output&quot;:&quot;str&quot;,&quot;x&quot;:1092,&quot;y&quot;:1737,&quot;wires&quot;:[[&quot;d3f10882a0773e9b&quot;]]},{&quot;id&quot;:&quot;d3f10882a0773e9b&quot;,&quot;type&quot;:&quot;subflow:e3e278445b7bcb21&quot;,&quot;z&quot;:&quot;e88020583c022170&quot;,&quot;name&quot;:&quot;&quot;,&quot;x&quot;:1089,&quot;y&quot;:1797,&quot;wires&quot;:[]}]
</code></pre>
<hr>
<h3>Example 6: Language: <code>noderedjson-no-images-with-arrows-no-gridlines</code></h3>
<pre><code class="language-noderedjson-no-images-with-arrows-no-gridlines">[{&quot;id&quot;:&quot;3287a0ac2d2a237b&quot;,&quot;type&quot;:&quot;link in&quot;,&quot;z&quot;:&quot;fa990486a351d7f4&quot;,&quot;name&quot;:&quot;[blog] embedded-flow.html&quot;,&quot;links&quot;:[],&quot;x&quot;:197,&quot;y&quot;:107,&quot;wires&quot;:[[&quot;0771f05ddd5c7e3e&quot;]]},{&quot;id&quot;:&quot;0771f05ddd5c7e3e&quot;,&quot;type&quot;:&quot;BlogPageInfo&quot;,&quot;z&quot;:&quot;fa990486a351d7f4&quot;,&quot;name&quot;:&quot;&quot;,&quot;image&quot;:&quot;&quot;,&quot;summary&quot;:&quot;Can I generate html directly without using markdown markup?&quot;,&quot;title&quot;:&quot;This is a test of something new&quot;,&quot;publishedAt&quot;:&quot;2023-06-25T11:22&quot;,&quot;updatedAt&quot;:&quot;2023-06-25T11:22&quot;,&quot;incRss&quot;:false,&quot;incSitemap&quot;:false,&quot;incIndex&quot;:false,&quot;shrLinkedIn&quot;:false,&quot;reloadOnEdit&quot;:false,&quot;redirectToNode&quot;:false,&quot;redirectNodeId&quot;:&quot;status-404&quot;,&quot;redirectStatusCode&quot;:&quot;301&quot;,&quot;x&quot;:393.71437072753906,&quot;y&quot;:107,&quot;wires&quot;:[[&quot;f9b99c65087dc03e&quot;]]},{&quot;id&quot;:&quot;996205845bf2ce3f&quot;,&quot;type&quot;:&quot;link out&quot;,&quot;z&quot;:&quot;fa990486a351d7f4&quot;,&quot;name&quot;:&quot;link out 80&quot;,&quot;mode&quot;:&quot;return&quot;,&quot;links&quot;:[],&quot;x&quot;:1239.0002040863037,&quot;y&quot;:100.42859363555908,&quot;wires&quot;:[]},{&quot;id&quot;:&quot;714495cf05a320bf&quot;,&quot;type&quot;:&quot;switch&quot;,&quot;z&quot;:&quot;fa990486a351d7f4&quot;,&quot;name&quot;:&quot;has _linkSource - is this a link-call action&quot;,&quot;property&quot;:&quot;_linkSource&quot;,&quot;propertyType&quot;:&quot;msg&quot;,&quot;rules&quot;:[{&quot;t&quot;:&quot;nnull&quot;},{&quot;t&quot;:&quot;else&quot;}],&quot;checkall&quot;:&quot;true&quot;,&quot;repair&quot;:false,&quot;outputs&quot;:2,&quot;x&quot;:948.8573913574219,&quot;y&quot;:106.85715389251709,&quot;wires&quot;:[[&quot;996205845bf2ce3f&quot;],[]]},{&quot;id&quot;:&quot;f9b99c65087dc03e&quot;,&quot;type&quot;:&quot;template&quot;,&quot;z&quot;:&quot;fa990486a351d7f4&quot;,&quot;name&quot;:&quot;v1&quot;,&quot;field&quot;:&quot;payload&quot;,&quot;fieldType&quot;:&quot;msg&quot;,&quot;format&quot;:&quot;javascript&quot;,&quot;syntax&quot;:&quot;mustache&quot;,&quot;template&quot;:&quot;&quot;,&quot;output&quot;:&quot;str&quot;,&quot;x&quot;:629.4287910461426,&quot;y&quot;:107,&quot;wires&quot;:[[&quot;714495cf05a320bf&quot;]]},{&quot;id&quot;:&quot;b6b29c169ced0dc4&quot;,&quot;type&quot;:&quot;link in&quot;,&quot;z&quot;:&quot;fa990486a351d7f4&quot;,&quot;name&quot;:&quot;[blog] embedded-flow-v2.html&quot;,&quot;links&quot;:[],&quot;x&quot;:197,&quot;y&quot;:166.57143306732178,&quot;wires&quot;:[[&quot;755725b937fd9621&quot;]]},{&quot;id&quot;:&quot;755725b937fd9621&quot;,&quot;type&quot;:&quot;BlogPageInfo&quot;,&quot;z&quot;:&quot;fa990486a351d7f4&quot;,&quot;name&quot;:&quot;&quot;,&quot;image&quot;:&quot;&quot;,&quot;summary&quot;:&quot;Can I generate html directly without using markdown markup?&quot;,&quot;title&quot;:&quot;This is a test of something new&quot;,&quot;publishedAt&quot;:&quot;2023-06-25T11:22&quot;,&quot;updatedAt&quot;:&quot;2023-06-25T11:22&quot;,&quot;incRss&quot;:false,&quot;incSitemap&quot;:false,&quot;incIndex&quot;:false,&quot;shrLinkedIn&quot;:false,&quot;reloadOnEdit&quot;:false,&quot;redirectToNode&quot;:false,&quot;redirectNodeId&quot;:&quot;status-404&quot;,&quot;redirectStatusCode&quot;:&quot;301&quot;,&quot;x&quot;:403.71437072753906,&quot;y&quot;:166.57143306732178,&quot;wires&quot;:[[&quot;eb04b257022ae729&quot;]]},{&quot;id&quot;:&quot;eb04b257022ae729&quot;,&quot;type&quot;:&quot;template&quot;,&quot;z&quot;:&quot;fa990486a351d7f4&quot;,&quot;name&quot;:&quot;v2&quot;,&quot;field&quot;:&quot;payload&quot;,&quot;fieldType&quot;:&quot;msg&quot;,&quot;format&quot;:&quot;javascript&quot;,&quot;syntax&quot;:&quot;mustache&quot;,&quot;template&quot;:&quot;&quot;,&quot;output&quot;:&quot;str&quot;,&quot;x&quot;:629.4287910461426,&quot;y&quot;:166.57143306732178,&quot;wires&quot;:[[&quot;714495cf05a320bf&quot;]]},{&quot;id&quot;:&quot;b03d9f123a9903ca&quot;,&quot;type&quot;:&quot;template&quot;,&quot;z&quot;:&quot;fa990486a351d7f4&quot;,&quot;name&quot;:&quot;v3&quot;,&quot;field&quot;:&quot;payload&quot;,&quot;fieldType&quot;:&quot;msg&quot;,&quot;format&quot;:&quot;javascript&quot;,&quot;syntax&quot;:&quot;mustache&quot;,&quot;template&quot;:&quot;&quot;,&quot;output&quot;:&quot;str&quot;,&quot;x&quot;:629.4287910461426,&quot;y&quot;:222.28577327728271,&quot;wires&quot;:[[&quot;714495cf05a320bf&quot;]]},{&quot;id&quot;:&quot;f660e24f4f9d210d&quot;,&quot;type&quot;:&quot;link in&quot;,&quot;z&quot;:&quot;fa990486a351d7f4&quot;,&quot;name&quot;:&quot;[blog] embedded-flow-v3.html&quot;,&quot;links&quot;:[],&quot;x&quot;:197,&quot;y&quot;:222.28577327728271,&quot;wires&quot;:[[&quot;ae8f25da7d7893fc&quot;]]},{&quot;id&quot;:&quot;ae8f25da7d7893fc&quot;,&quot;type&quot;:&quot;BlogPageInfo&quot;,&quot;z&quot;:&quot;fa990486a351d7f4&quot;,&quot;name&quot;:&quot;&quot;,&quot;image&quot;:&quot;&quot;,&quot;summary&quot;:&quot;Can I generate html directly without using markdown markup?&quot;,&quot;title&quot;:&quot;This is a test of something new&quot;,&quot;publishedAt&quot;:&quot;2023-06-25T11:22&quot;,&quot;updatedAt&quot;:&quot;2023-06-25T11:22&quot;,&quot;incRss&quot;:false,&quot;incSitemap&quot;:false,&quot;incIndex&quot;:false,&quot;shrLinkedIn&quot;:false,&quot;reloadOnEdit&quot;:false,&quot;redirectToNode&quot;:false,&quot;redirectNodeId&quot;:&quot;status-404&quot;,&quot;redirectStatusCode&quot;:&quot;301&quot;,&quot;x&quot;:403.71437072753906,&quot;y&quot;:222.28577327728271,&quot;wires&quot;:[[&quot;b03d9f123a9903ca&quot;]]},{&quot;id&quot;:&quot;f0cec8e4f35dbc99&quot;,&quot;type&quot;:&quot;http in&quot;,&quot;z&quot;:&quot;fa990486a351d7f4&quot;,&quot;name&quot;:&quot;&quot;,&quot;url&quot;:&quot;/embed/helpers.js&quot;,&quot;method&quot;:&quot;get&quot;,&quot;upload&quot;:false,&quot;swaggerDoc&quot;:&quot;&quot;,&quot;x&quot;:533.571418762207,&quot;y&quot;:877.7143468856812,&quot;wires&quot;:[[&quot;dd80e50a71271b27&quot;]]},{&quot;id&quot;:&quot;d5631179afc237dc&quot;,&quot;type&quot;:&quot;http response&quot;,&quot;z&quot;:&quot;fa990486a351d7f4&quot;,&quot;name&quot;:&quot;js&quot;,&quot;statusCode&quot;:&quot;&quot;,&quot;headers&quot;:{&quot;content-type&quot;:&quot;application/javascript; charset=utf-8&quot;},&quot;x&quot;:1879.571418762207,&quot;y&quot;:878.7143468856812,&quot;wires&quot;:[]},{&quot;id&quot;:&quot;dd80e50a71271b27&quot;,&quot;type&quot;:&quot;template&quot;,&quot;z&quot;:&quot;fa990486a351d7f4&quot;,&quot;name&quot;:&quot;&quot;,&quot;field&quot;:&quot;payload&quot;,&quot;fieldType&quot;:&quot;msg&quot;,&quot;format&quot;:&quot;javascript&quot;,&quot;syntax&quot;:&quot;mustache&quot;,&quot;template&quot;:&quot;&quot;,&quot;output&quot;:&quot;str&quot;,&quot;x&quot;:1703.571418762207,&quot;y&quot;:878.7143468856812,&quot;wires&quot;:[[&quot;d5631179afc237dc&quot;]]},{&quot;id&quot;:&quot;ac22dd3a10ca8a7a&quot;,&quot;type&quot;:&quot;template&quot;,&quot;z&quot;:&quot;fa990486a351d7f4&quot;,&quot;name&quot;:&quot;complete js content&quot;,&quot;field&quot;:&quot;payload&quot;,&quot;fieldType&quot;:&quot;msg&quot;,&quot;format&quot;:&quot;javascript&quot;,&quot;syntax&quot;:&quot;mustache&quot;,&quot;template&quot;:&quot;&quot;,&quot;output&quot;:&quot;str&quot;,&quot;x&quot;:1555.571418762207,&quot;y&quot;:1097.7143468856812,&quot;wires&quot;:[[&quot;d5631179afc237dc&quot;]]},{&quot;id&quot;:&quot;e1e9d52f873f0f5b&quot;,&quot;type&quot;:&quot;template&quot;,&quot;z&quot;:&quot;fa990486a351d7f4&quot;,&quot;name&quot;:&quot;jsColoursByType&quot;,&quot;field&quot;:&quot;jsColoursByType&quot;,&quot;fieldType&quot;:&quot;msg&quot;,&quot;format&quot;:&quot;javascript&quot;,&quot;syntax&quot;:&quot;mustache&quot;,&quot;template&quot;:&quot;&quot;,&quot;output&quot;:&quot;str&quot;,&quot;x&quot;:855.571418762207,&quot;y&quot;:941.7143468856812,&quot;wires&quot;:[[&quot;36cee437c1931ff7&quot;]]},{&quot;id&quot;:&quot;f9a2c229e54e7c1a&quot;,&quot;type&quot;:&quot;http in&quot;,&quot;z&quot;:&quot;fa990486a351d7f4&quot;,&quot;name&quot;:&quot;&quot;,&quot;url&quot;:&quot;/embed/helpers-v4.js&quot;,&quot;method&quot;:&quot;get&quot;,&quot;upload&quot;:false,&quot;swaggerDoc&quot;:&quot;&quot;,&quot;x&quot;:543.571418762207,&quot;y&quot;:942.7143468856812,&quot;wires&quot;:[[&quot;e1e9d52f873f0f5b&quot;]]},{&quot;id&quot;:&quot;36cee437c1931ff7&quot;,&quot;type&quot;:&quot;template&quot;,&quot;z&quot;:&quot;fa990486a351d7f4&quot;,&quot;name&quot;:&quot;jsUtilsGetNodeSelector&quot;,&quot;field&quot;:&quot;jsUtilsGetNodeSelector&quot;,&quot;fieldType&quot;:&quot;msg&quot;,&quot;format&quot;:&quot;javascript&quot;,&quot;syntax&quot;:&quot;mustache&quot;,&quot;template&quot;:&quot;&quot;,&quot;output&quot;:&quot;str&quot;,&quot;x&quot;:875.571418762207,&quot;y&quot;:981.7143468856812,&quot;wires&quot;:[[&quot;b101d34ec03a821c&quot;]]},{&quot;id&quot;:&quot;b101d34ec03a821c&quot;,&quot;type&quot;:&quot;template&quot;,&quot;z&quot;:&quot;fa990486a351d7f4&quot;,&quot;name&quot;:&quot;jsGenerateLinkPath&quot;,&quot;field&quot;:&quot;jsGenerateLinkPath&quot;,&quot;fieldType&quot;:&quot;msg&quot;,&quot;format&quot;:&quot;javascript&quot;,&quot;syntax&quot;:&quot;mustache&quot;,&quot;template&quot;:&quot;&quot;,&quot;output&quot;:&quot;str&quot;,&quot;x&quot;:855.571418762207,&quot;y&quot;:1021.7143468856812,&quot;wires&quot;:[[&quot;75fb6789236f48df&quot;]]},{&quot;id&quot;:&quot;d6db970006d87875&quot;,&quot;type&quot;:&quot;template&quot;,&quot;z&quot;:&quot;fa990486a351d7f4&quot;,&quot;name&quot;:&quot;jsRenderFlow - v4&quot;,&quot;field&quot;:&quot;jsRenderFlow&quot;,&quot;fieldType&quot;:&quot;msg&quot;,&quot;format&quot;:&quot;javascript&quot;,&quot;syntax&quot;:&quot;mustache&quot;,&quot;template&quot;:&quot;&quot;,&quot;output&quot;:&quot;str&quot;,&quot;x&quot;:1269.571418762207,&quot;y&quot;:1048.7143468856812,&quot;wires&quot;:[[&quot;ac22dd3a10ca8a7a&quot;]]},{&quot;id&quot;:&quot;66af842428cf1829&quot;,&quot;type&quot;:&quot;template&quot;,&quot;z&quot;:&quot;fa990486a351d7f4&quot;,&quot;name&quot;:&quot;v4&quot;,&quot;field&quot;:&quot;payload&quot;,&quot;fieldType&quot;:&quot;msg&quot;,&quot;format&quot;:&quot;html&quot;,&quot;syntax&quot;:&quot;mustache&quot;,&quot;template&quot;:&quot;&quot;,&quot;output&quot;:&quot;str&quot;,&quot;x&quot;:629.4287910461426,&quot;y&quot;:287.2857732772827,&quot;wires&quot;:[[&quot;714495cf05a320bf&quot;]]},{&quot;id&quot;:&quot;859109e5f2acb4e2&quot;,&quot;type&quot;:&quot;link in&quot;,&quot;z&quot;:&quot;fa990486a351d7f4&quot;,&quot;name&quot;:&quot;[blog] embedded-flow-v4.html&quot;,&quot;links&quot;:[],&quot;x&quot;:197,&quot;y&quot;:287.2857732772827,&quot;wires&quot;:[[&quot;b3b58ff6a8dede2a&quot;]]},{&quot;id&quot;:&quot;b3b58ff6a8dede2a&quot;,&quot;type&quot;:&quot;BlogPageInfo&quot;,&quot;z&quot;:&quot;fa990486a351d7f4&quot;,&quot;name&quot;:&quot;&quot;,&quot;image&quot;:&quot;&quot;,&quot;summary&quot;:&quot;Can I generate html directly without using markdown markup?&quot;,&quot;title&quot;:&quot;This is a test of something new&quot;,&quot;publishedAt&quot;:&quot;2023-06-25T11:22&quot;,&quot;updatedAt&quot;:&quot;2023-06-25T11:22&quot;,&quot;incRss&quot;:false,&quot;incSitemap&quot;:false,&quot;incIndex&quot;:false,&quot;shrLinkedIn&quot;:false,&quot;reloadOnEdit&quot;:false,&quot;redirectToNode&quot;:false,&quot;redirectNodeId&quot;:&quot;status-404&quot;,&quot;redirectStatusCode&quot;:&quot;301&quot;,&quot;x&quot;:403.71437072753906,&quot;y&quot;:287.2857732772827,&quot;wires&quot;:[[&quot;66af842428cf1829&quot;]]},{&quot;id&quot;:&quot;75fb6789236f48df&quot;,&quot;type&quot;:&quot;template&quot;,&quot;z&quot;:&quot;fa990486a351d7f4&quot;,&quot;name&quot;:&quot;jsLabelUtils&quot;,&quot;field&quot;:&quot;jsLabelUtils&quot;,&quot;fieldType&quot;:&quot;msg&quot;,&quot;format&quot;:&quot;javascript&quot;,&quot;syntax&quot;:&quot;mustache&quot;,&quot;template&quot;:&quot;&quot;,&quot;output&quot;:&quot;str&quot;,&quot;x&quot;:834.571418762207,&quot;y&quot;:1063.7143468856812,&quot;wires&quot;:[[&quot;ee74e71603896290&quot;]]},{&quot;id&quot;:&quot;f68eb4ac92f2416b&quot;,&quot;type&quot;:&quot;http in&quot;,&quot;z&quot;:&quot;fa990486a351d7f4&quot;,&quot;name&quot;:&quot;&quot;,&quot;url&quot;:&quot;/embed/helpers-v5.js&quot;,&quot;method&quot;:&quot;get&quot;,&quot;upload&quot;:false,&quot;swaggerDoc&quot;:&quot;&quot;,&quot;x&quot;:543.571418762207,&quot;y&quot;:1000.7143468856812,&quot;wires&quot;:[[&quot;e1e9d52f873f0f5b&quot;]]},{&quot;id&quot;:&quot;ee74e71603896290&quot;,&quot;type&quot;:&quot;switch&quot;,&quot;z&quot;:&quot;fa990486a351d7f4&quot;,&quot;name&quot;:&quot;&quot;,&quot;property&quot;:&quot;req.route.path&quot;,&quot;propertyType&quot;:&quot;msg&quot;,&quot;rules&quot;:[{&quot;t&quot;:&quot;regex&quot;,&quot;v&quot;:&quot;v4\\.js$&quot;,&quot;vt&quot;:&quot;str&quot;,&quot;case&quot;:false},{&quot;t&quot;:&quot;regex&quot;,&quot;v&quot;:&quot;v5\\.js$&quot;,&quot;vt&quot;:&quot;str&quot;,&quot;case&quot;:false},{&quot;t&quot;:&quot;regex&quot;,&quot;v&quot;:&quot;v6\\.js$&quot;,&quot;vt&quot;:&quot;str&quot;,&quot;case&quot;:false},{&quot;t&quot;:&quot;regex&quot;,&quot;v&quot;:&quot;v7\\.js$&quot;,&quot;vt&quot;:&quot;str&quot;,&quot;case&quot;:false},{&quot;t&quot;:&quot;regex&quot;,&quot;v&quot;:&quot;v8\\.js$&quot;,&quot;vt&quot;:&quot;str&quot;,&quot;case&quot;:false},{&quot;t&quot;:&quot;regex&quot;,&quot;v&quot;:&quot;v9\\.js$&quot;,&quot;vt&quot;:&quot;str&quot;,&quot;case&quot;:false}],&quot;checkall&quot;:&quot;false&quot;,&quot;repair&quot;:false,&quot;outputs&quot;:6,&quot;x&quot;:1029.571418762207,&quot;y&quot;:1127.7143468856812,&quot;wires&quot;:[[&quot;d6db970006d87875&quot;],[&quot;f6adde966139457a&quot;],[&quot;4e28f7e5936ef6d7&quot;],[&quot;6088b6915f67e507&quot;],[&quot;abd4a979676a9088&quot;],[&quot;6088b6915f67e507&quot;]]},{&quot;id&quot;:&quot;092c9e55a4787172&quot;,&quot;type&quot;:&quot;template&quot;,&quot;z&quot;:&quot;fa990486a351d7f4&quot;,&quot;name&quot;:&quot;v5&quot;,&quot;field&quot;:&quot;payload&quot;,&quot;fieldType&quot;:&quot;msg&quot;,&quot;format&quot;:&quot;javascript&quot;,&quot;syntax&quot;:&quot;mustache&quot;,&quot;template&quot;:&quot;&quot;,&quot;output&quot;:&quot;str&quot;,&quot;x&quot;:634.571418762207,&quot;y&quot;:349.71434688568115,&quot;wires&quot;:[[&quot;714495cf05a320bf&quot;]]},{&quot;id&quot;:&quot;f360b35c4b1460d8&quot;,&quot;type&quot;:&quot;link in&quot;,&quot;z&quot;:&quot;fa990486a351d7f4&quot;,&quot;name&quot;:&quot;[blog] embedded-flow-v5.html&quot;,&quot;links&quot;:[],&quot;x&quot;:202.14262771606445,&quot;y&quot;:349.71434688568115,&quot;wires&quot;:[[&quot;af62934ece609c34&quot;]]},{&quot;id&quot;:&quot;af62934ece609c34&quot;,&quot;type&quot;:&quot;BlogPageInfo&quot;,&quot;z&quot;:&quot;fa990486a351d7f4&quot;,&quot;name&quot;:&quot;&quot;,&quot;image&quot;:&quot;&quot;,&quot;summary&quot;:&quot;Can I generate html directly without using markdown markup?&quot;,&quot;title&quot;:&quot;This is a test of something new&quot;,&quot;publishedAt&quot;:&quot;2023-06-25T11:22&quot;,&quot;updatedAt&quot;:&quot;2023-06-25T11:22&quot;,&quot;incRss&quot;:false,&quot;incSitemap&quot;:false,&quot;incIndex&quot;:false,&quot;shrLinkedIn&quot;:false,&quot;reloadOnEdit&quot;:false,&quot;redirectToNode&quot;:false,&quot;redirectNodeId&quot;:&quot;status-404&quot;,&quot;redirectStatusCode&quot;:&quot;301&quot;,&quot;x&quot;:408.8569984436035,&quot;y&quot;:349.71434688568115,&quot;wires&quot;:[[&quot;092c9e55a4787172&quot;]]},{&quot;id&quot;:&quot;f6adde966139457a&quot;,&quot;type&quot;:&quot;template&quot;,&quot;z&quot;:&quot;fa990486a351d7f4&quot;,&quot;name&quot;:&quot;jsRenderFlow - v5&quot;,&quot;field&quot;:&quot;jsRenderFlow&quot;,&quot;fieldType&quot;:&quot;msg&quot;,&quot;format&quot;:&quot;javascript&quot;,&quot;syntax&quot;:&quot;mustache&quot;,&quot;template&quot;:&quot;&quot;,&quot;output&quot;:&quot;str&quot;,&quot;x&quot;:1270.571418762207,&quot;y&quot;:1099.7143468856812,&quot;wires&quot;:[[&quot;ac22dd3a10ca8a7a&quot;]]},{&quot;id&quot;:&quot;7be8ff2bc6dfd549&quot;,&quot;type&quot;:&quot;http in&quot;,&quot;z&quot;:&quot;fa990486a351d7f4&quot;,&quot;name&quot;:&quot;&quot;,&quot;url&quot;:&quot;/embed/helpers.css&quot;,&quot;method&quot;:&quot;get&quot;,&quot;upload&quot;:false,&quot;swaggerDoc&quot;:&quot;&quot;,&quot;x&quot;:543.571418762207,&quot;y&quot;:812.7143468856812,&quot;wires&quot;:[[&quot;16ec47cfaf4f5426&quot;]]},{&quot;id&quot;:&quot;ad579a790a31d908&quot;,&quot;type&quot;:&quot;http response&quot;,&quot;z&quot;:&quot;fa990486a351d7f4&quot;,&quot;name&quot;:&quot;css&quot;,&quot;statusCode&quot;:&quot;200&quot;,&quot;headers&quot;:{&quot;content-type&quot;:&quot;text/css&quot;},&quot;x&quot;:1044.571418762207,&quot;y&quot;:812.7143468856812,&quot;wires&quot;:[]},{&quot;id&quot;:&quot;16ec47cfaf4f5426&quot;,&quot;type&quot;:&quot;template&quot;,&quot;z&quot;:&quot;fa990486a351d7f4&quot;,&quot;name&quot;:&quot;basic styling&quot;,&quot;field&quot;:&quot;payload&quot;,&quot;fieldType&quot;:&quot;msg&quot;,&quot;format&quot;:&quot;css&quot;,&quot;syntax&quot;:&quot;mustache&quot;,&quot;template&quot;:&quot;&quot;,&quot;output&quot;:&quot;str&quot;,&quot;x&quot;:840.571418762207,&quot;y&quot;:812.7143468856812,&quot;wires&quot;:[[&quot;ad579a790a31d908&quot;]]},{&quot;id&quot;:&quot;4f0b969b37876989&quot;,&quot;type&quot;:&quot;link in&quot;,&quot;z&quot;:&quot;fa990486a351d7f4&quot;,&quot;name&quot;:&quot;[blog] codeblock-test&quot;,&quot;links&quot;:[],&quot;x&quot;:266.57141876220703,&quot;y&quot;:1639.7143468856812,&quot;wires&quot;:[[&quot;ea637b2ce7e48ce9&quot;]]},{&quot;id&quot;:&quot;ea637b2ce7e48ce9&quot;,&quot;type&quot;:&quot;BlogPageInfo&quot;,&quot;z&quot;:&quot;fa990486a351d7f4&quot;,&quot;name&quot;:&quot;&quot;,&quot;image&quot;:&quot;&quot;,&quot;summary&quot;:&quot;Can I replace codeblocks of flows.json with images?&quot;,&quot;title&quot;:&quot;Testing the inclusion and replacement of codeblocks&quot;,&quot;publishedAt&quot;:&quot;2023-06-25T11:22&quot;,&quot;updatedAt&quot;:&quot;2023-06-25T11:22&quot;,&quot;incRss&quot;:false,&quot;incSitemap&quot;:false,&quot;incIndex&quot;:false,&quot;shrLinkedIn&quot;:true,&quot;supportNodeRedJson&quot;:true,&quot;reloadOnEdit&quot;:false,&quot;redirectToNode&quot;:false,&quot;redirectNodeId&quot;:&quot;status-404&quot;,&quot;redirectStatusCode&quot;:&quot;301&quot;,&quot;x&quot;:509.28577423095703,&quot;y&quot;:1639.7143468856812,&quot;wires&quot;:[[&quot;097d04d398ea4c66&quot;]]},{&quot;id&quot;:&quot;a943b1f59b6f617b&quot;,&quot;type&quot;:&quot;http in&quot;,&quot;z&quot;:&quot;fa990486a351d7f4&quot;,&quot;name&quot;:&quot;&quot;,&quot;url&quot;:&quot;/embed/helpers-v6.js&quot;,&quot;method&quot;:&quot;get&quot;,&quot;upload&quot;:false,&quot;swaggerDoc&quot;:&quot;&quot;,&quot;x&quot;:544.571418762207,&quot;y&quot;:1071.7143468856812,&quot;wires&quot;:[[&quot;e1e9d52f873f0f5b&quot;]]},{&quot;id&quot;:&quot;4e28f7e5936ef6d7&quot;,&quot;type&quot;:&quot;template&quot;,&quot;z&quot;:&quot;fa990486a351d7f4&quot;,&quot;name&quot;:&quot;jsRenderFlow - v6&quot;,&quot;field&quot;:&quot;jsRenderFlow&quot;,&quot;fieldType&quot;:&quot;msg&quot;,&quot;format&quot;:&quot;javascript&quot;,&quot;syntax&quot;:&quot;mustache&quot;,&quot;template&quot;:&quot;&quot;,&quot;output&quot;:&quot;str&quot;,&quot;x&quot;:1271.571418762207,&quot;y&quot;:1160.7143468856812,&quot;wires&quot;:[[&quot;c37952730d57c5a4&quot;]]},{&quot;id&quot;:&quot;c37952730d57c5a4&quot;,&quot;type&quot;:&quot;template&quot;,&quot;z&quot;:&quot;fa990486a351d7f4&quot;,&quot;name&quot;:&quot;complete js content&quot;,&quot;field&quot;:&quot;payload&quot;,&quot;fieldType&quot;:&quot;msg&quot;,&quot;format&quot;:&quot;javascript&quot;,&quot;syntax&quot;:&quot;mustache&quot;,&quot;template&quot;:&quot;&quot;,&quot;output&quot;:&quot;str&quot;,&quot;x&quot;:1563.571418762207,&quot;y&quot;:1214.7143468856812,&quot;wires&quot;:[[&quot;d5631179afc237dc&quot;]]},{&quot;id&quot;:&quot;d5525ca53c469c75&quot;,&quot;type&quot;:&quot;http in&quot;,&quot;z&quot;:&quot;fa990486a351d7f4&quot;,&quot;name&quot;:&quot;&quot;,&quot;url&quot;:&quot;/embed/helpers-v7.js&quot;,&quot;method&quot;:&quot;get&quot;,&quot;upload&quot;:false,&quot;swaggerDoc&quot;:&quot;&quot;,&quot;x&quot;:548.571418762207,&quot;y&quot;:1134.7143468856812,&quot;wires&quot;:[[&quot;e1e9d52f873f0f5b&quot;]]},{&quot;id&quot;:&quot;a631368aa97d4e8b&quot;,&quot;type&quot;:&quot;link out&quot;,&quot;z&quot;:&quot;fa990486a351d7f4&quot;,&quot;name&quot;:&quot;link out 83&quot;,&quot;mode&quot;:&quot;return&quot;,&quot;links&quot;:[],&quot;x&quot;:2214.571418762207,&quot;y&quot;:1682.7143468856812,&quot;wires&quot;:[]},{&quot;id&quot;:&quot;bc9a57e1232b6afa&quot;,&quot;type&quot;:&quot;switch&quot;,&quot;z&quot;:&quot;fa990486a351d7f4&quot;,&quot;name&quot;:&quot;has _linkSource - is this a link-call action&quot;,&quot;property&quot;:&quot;_linkSource&quot;,&quot;propertyType&quot;:&quot;msg&quot;,&quot;rules&quot;:[{&quot;t&quot;:&quot;nnull&quot;},{&quot;t&quot;:&quot;else&quot;}],&quot;checkall&quot;:&quot;true&quot;,&quot;repair&quot;:false,&quot;outputs&quot;:2,&quot;x&quot;:1859.428596496582,&quot;y&quot;:1689.1429357528687,&quot;wires&quot;:[[&quot;a631368aa97d4e8b&quot;],[]]},{&quot;id&quot;:&quot;a3cbccaeff13d666&quot;,&quot;type&quot;:&quot;template&quot;,&quot;z&quot;:&quot;fa990486a351d7f4&quot;,&quot;name&quot;:&quot;.md page&quot;,&quot;field&quot;:&quot;payload&quot;,&quot;fieldType&quot;:&quot;msg&quot;,&quot;format&quot;:&quot;markdown&quot;,&quot;syntax&quot;:&quot;mustache&quot;,&quot;template&quot;:&quot;&quot;,&quot;output&quot;:&quot;str&quot;,&quot;x&quot;:1572.571418762207,&quot;y&quot;:1689.7143468856812,&quot;wires&quot;:[[&quot;bc9a57e1232b6afa&quot;]]},{&quot;id&quot;:&quot;097d04d398ea4c66&quot;,&quot;type&quot;:&quot;template&quot;,&quot;z&quot;:&quot;fa990486a351d7f4&quot;,&quot;name&quot;:&quot;flow example 1&quot;,&quot;field&quot;:&quot;flowexample1&quot;,&quot;fieldType&quot;:&quot;msg&quot;,&quot;format&quot;:&quot;handlebars&quot;,&quot;syntax&quot;:&quot;plain&quot;,&quot;template&quot;:&quot;&quot;,&quot;output&quot;:&quot;str&quot;,&quot;x&quot;:763.571418762207,&quot;y&quot;:1692.7143468856812,&quot;wires&quot;:[[&quot;e18f0e6a54e39f22&quot;]]},{&quot;id&quot;:&quot;e18f0e6a54e39f22&quot;,&quot;type&quot;:&quot;template&quot;,&quot;z&quot;:&quot;fa990486a351d7f4&quot;,&quot;name&quot;:&quot;flowexample2&quot;,&quot;field&quot;:&quot;flowexample2&quot;,&quot;fieldType&quot;:&quot;msg&quot;,&quot;format&quot;:&quot;handlebars&quot;,&quot;syntax&quot;:&quot;plain&quot;,&quot;template&quot;:&quot;&quot;,&quot;output&quot;:&quot;str&quot;,&quot;x&quot;:918.571418762207,&quot;y&quot;:1776.7143468856812,&quot;wires&quot;:[[&quot;4f84f6937ef60497&quot;]]},{&quot;id&quot;:&quot;4f84f6937ef60497&quot;,&quot;type&quot;:&quot;template&quot;,&quot;z&quot;:&quot;fa990486a351d7f4&quot;,&quot;name&quot;:&quot;flowexample3&quot;,&quot;field&quot;:&quot;flowexample3&quot;,&quot;fieldType&quot;:&quot;msg&quot;,&quot;format&quot;:&quot;handlebars&quot;,&quot;syntax&quot;:&quot;plain&quot;,&quot;template&quot;:&quot;&quot;,&quot;output&quot;:&quot;str&quot;,&quot;x&quot;:1059.571418762207,&quot;y&quot;:1849.7143468856812,&quot;wires&quot;:[[&quot;0a0ba7ec8625eb0b&quot;]]},{&quot;id&quot;:&quot;0a0ba7ec8625eb0b&quot;,&quot;type&quot;:&quot;template&quot;,&quot;z&quot;:&quot;fa990486a351d7f4&quot;,&quot;name&quot;:&quot;flowexample4&quot;,&quot;field&quot;:&quot;flowexample4&quot;,&quot;fieldType&quot;:&quot;msg&quot;,&quot;format&quot;:&quot;handlebars&quot;,&quot;syntax&quot;:&quot;plain&quot;,&quot;template&quot;:&quot;&quot;,&quot;output&quot;:&quot;str&quot;,&quot;x&quot;:1241.571418762207,&quot;y&quot;:1925.7143468856812,&quot;wires&quot;:[[&quot;bd91742d746c4d5b&quot;]]},{&quot;id&quot;:&quot;3ae3d00f0bda7482&quot;,&quot;type&quot;:&quot;template&quot;,&quot;z&quot;:&quot;fa990486a351d7f4&quot;,&quot;name&quot;:&quot;jsRenderFlow - v7&quot;,&quot;field&quot;:&quot;jsRenderFlow&quot;,&quot;fieldType&quot;:&quot;msg&quot;,&quot;format&quot;:&quot;javascript&quot;,&quot;syntax&quot;:&quot;mustache&quot;,&quot;template&quot;:&quot;&quot;,&quot;output&quot;:&quot;str&quot;,&quot;x&quot;:1268.571418762207,&quot;y&quot;:1214.7143468856812,&quot;wires&quot;:[[&quot;c37952730d57c5a4&quot;]]},{&quot;id&quot;:&quot;bd91742d746c4d5b&quot;,&quot;type&quot;:&quot;template&quot;,&quot;z&quot;:&quot;fa990486a351d7f4&quot;,&quot;name&quot;:&quot;flowexample5&quot;,&quot;field&quot;:&quot;flowexample5&quot;,&quot;fieldType&quot;:&quot;msg&quot;,&quot;format&quot;:&quot;handlebars&quot;,&quot;syntax&quot;:&quot;plain&quot;,&quot;template&quot;:&quot;&quot;,&quot;output&quot;:&quot;str&quot;,&quot;x&quot;:1425.571418762207,&quot;y&quot;:1994.7143468856812,&quot;wires&quot;:[[&quot;a3cbccaeff13d666&quot;]]},{&quot;id&quot;:&quot;cd12a091665dd5f2&quot;,&quot;type&quot;:&quot;link in&quot;,&quot;z&quot;:&quot;fa990486a351d7f4&quot;,&quot;name&quot;:&quot;[blog] backticks-in-markdown-and-node-red&quot;,&quot;links&quot;:[],&quot;x&quot;:180.57141876220703,&quot;y&quot;:1725.7143468856812,&quot;wires&quot;:[[&quot;8da95fc4288b26d9&quot;]]},{&quot;id&quot;:&quot;8da95fc4288b26d9&quot;,&quot;type&quot;:&quot;BlogPageInfo&quot;,&quot;z&quot;:&quot;fa990486a351d7f4&quot;,&quot;name&quot;:&quot;&quot;,&quot;image&quot;:&quot;1687952972847_Screen_Shot_2023-06-28_at_13.48.43.png&quot;,&quot;summary&quot;:&quot;Codeblocks are one thing but images are further a thousand Json files. Show me your flow!&quot;,&quot;title&quot;:&quot;Replacing Node-RED flow codeblocks with flow images.&quot;,&quot;publishedAt&quot;:&quot;2023-06-28T11:22&quot;,&quot;updatedAt&quot;:&quot;2023-06-28T11:22&quot;,&quot;incRss&quot;:true,&quot;incSitemap&quot;:true,&quot;incIndex&quot;:true,&quot;shrLinkedIn&quot;:true,&quot;supportNodeRedJson&quot;:true,&quot;reloadOnEdit&quot;:true,&quot;redirectToNode&quot;:false,&quot;redirectNodeId&quot;:&quot;status-404&quot;,&quot;redirectStatusCode&quot;:&quot;301&quot;,&quot;x&quot;:412.28577423095703,&quot;y&quot;:1725.7143468856812,&quot;wires&quot;:[[&quot;097d04d398ea4c66&quot;]]},{&quot;id&quot;:&quot;abd4a979676a9088&quot;,&quot;type&quot;:&quot;template&quot;,&quot;z&quot;:&quot;fa990486a351d7f4&quot;,&quot;name&quot;:&quot;jsRenderFlow - v8&quot;,&quot;field&quot;:&quot;jsRenderFlow&quot;,&quot;fieldType&quot;:&quot;msg&quot;,&quot;format&quot;:&quot;javascript&quot;,&quot;syntax&quot;:&quot;mustache&quot;,&quot;template&quot;:&quot;&quot;,&quot;output&quot;:&quot;str&quot;,&quot;x&quot;:1269.571418762207,&quot;y&quot;:1265.7143468856812,&quot;wires&quot;:[[&quot;c37952730d57c5a4&quot;]]},{&quot;id&quot;:&quot;18f2cbabeac6fdf8&quot;,&quot;type&quot;:&quot;http in&quot;,&quot;z&quot;:&quot;fa990486a351d7f4&quot;,&quot;name&quot;:&quot;&quot;,&quot;url&quot;:&quot;/embed/helpers-v8.js&quot;,&quot;method&quot;:&quot;get&quot;,&quot;upload&quot;:false,&quot;swaggerDoc&quot;:&quot;&quot;,&quot;x&quot;:547.571418762207,&quot;y&quot;:1227.7143468856812,&quot;wires&quot;:[[&quot;e1e9d52f873f0f5b&quot;]]},{&quot;id&quot;:&quot;f6a192d1d1cd8646&quot;,&quot;type&quot;:&quot;template&quot;,&quot;z&quot;:&quot;fa990486a351d7f4&quot;,&quot;name&quot;:&quot;v8&quot;,&quot;field&quot;:&quot;payload&quot;,&quot;fieldType&quot;:&quot;msg&quot;,&quot;format&quot;:&quot;javascript&quot;,&quot;syntax&quot;:&quot;mustache&quot;,&quot;template&quot;:&quot;&quot;,&quot;output&quot;:&quot;str&quot;,&quot;x&quot;:637.571418762207,&quot;y&quot;:418.71434688568115,&quot;wires&quot;:[[&quot;714495cf05a320bf&quot;]]},{&quot;id&quot;:&quot;e177926e2c030177&quot;,&quot;type&quot;:&quot;link in&quot;,&quot;z&quot;:&quot;fa990486a351d7f4&quot;,&quot;name&quot;:&quot;[blog] embedded-flow-v8.html&quot;,&quot;links&quot;:[],&quot;x&quot;:205.14262771606445,&quot;y&quot;:418.71434688568115,&quot;wires&quot;:[[&quot;f92265840d383980&quot;]]},{&quot;id&quot;:&quot;f92265840d383980&quot;,&quot;type&quot;:&quot;BlogPageInfo&quot;,&quot;z&quot;:&quot;fa990486a351d7f4&quot;,&quot;name&quot;:&quot;&quot;,&quot;image&quot;:&quot;&quot;,&quot;summary&quot;:&quot;Can I generate html directly without using markdown markup?&quot;,&quot;title&quot;:&quot;This is a test of something new&quot;,&quot;publishedAt&quot;:&quot;2023-06-25T11:22&quot;,&quot;updatedAt&quot;:&quot;2023-06-25T11:22&quot;,&quot;incRss&quot;:false,&quot;incSitemap&quot;:false,&quot;incIndex&quot;:false,&quot;shrLinkedIn&quot;:false,&quot;supportNodeRedJson&quot;:false,&quot;reloadOnEdit&quot;:false,&quot;redirectToNode&quot;:false,&quot;redirectNodeId&quot;:&quot;status-404&quot;,&quot;redirectStatusCode&quot;:&quot;301&quot;,&quot;x&quot;:411.8569984436035,&quot;y&quot;:418.71434688568115,&quot;wires&quot;:[[&quot;f6a192d1d1cd8646&quot;]]},{&quot;id&quot;:&quot;6088b6915f67e507&quot;,&quot;type&quot;:&quot;template&quot;,&quot;z&quot;:&quot;fa990486a351d7f4&quot;,&quot;name&quot;:&quot;jsRenderFlow - v9&quot;,&quot;field&quot;:&quot;jsRenderFlow&quot;,&quot;fieldType&quot;:&quot;msg&quot;,&quot;format&quot;:&quot;javascript&quot;,&quot;syntax&quot;:&quot;mustache&quot;,&quot;template&quot;:&quot;&quot;,&quot;output&quot;:&quot;str&quot;,&quot;x&quot;:1267.571418762207,&quot;y&quot;:1318.7143468856812,&quot;wires&quot;:[[&quot;c37952730d57c5a4&quot;]]},{&quot;id&quot;:&quot;a0ce6ff5b4194687&quot;,&quot;type&quot;:&quot;http in&quot;,&quot;z&quot;:&quot;fa990486a351d7f4&quot;,&quot;name&quot;:&quot;&quot;,&quot;url&quot;:&quot;/embed/helpers-v9.js&quot;,&quot;method&quot;:&quot;get&quot;,&quot;upload&quot;:false,&quot;swaggerDoc&quot;:&quot;&quot;,&quot;x&quot;:537.571418762207,&quot;y&quot;:1297.7143468856812,&quot;wires&quot;:[[&quot;e1e9d52f873f0f5b&quot;]]},{&quot;id&quot;:&quot;5529c827c2ddd554&quot;,&quot;type&quot;:&quot;template&quot;,&quot;z&quot;:&quot;fa990486a351d7f4&quot;,&quot;name&quot;:&quot;v9&quot;,&quot;field&quot;:&quot;payload&quot;,&quot;fieldType&quot;:&quot;msg&quot;,&quot;format&quot;:&quot;javascript&quot;,&quot;syntax&quot;:&quot;mustache&quot;,&quot;template&quot;:&quot;&quot;,&quot;output&quot;:&quot;str&quot;,&quot;x&quot;:630.571418762207,&quot;y&quot;:496.71434688568115,&quot;wires&quot;:[[&quot;714495cf05a320bf&quot;]]},{&quot;id&quot;:&quot;a96e7d5a3f2a3b3f&quot;,&quot;type&quot;:&quot;link in&quot;,&quot;z&quot;:&quot;fa990486a351d7f4&quot;,&quot;name&quot;:&quot;[blog] embedded-flow-v9.html&quot;,&quot;links&quot;:[],&quot;x&quot;:198.14262771606445,&quot;y&quot;:496.71434688568115,&quot;wires&quot;:[[&quot;c70cc9c6437dc797&quot;]]},{&quot;id&quot;:&quot;c70cc9c6437dc797&quot;,&quot;type&quot;:&quot;BlogPageInfo&quot;,&quot;z&quot;:&quot;fa990486a351d7f4&quot;,&quot;name&quot;:&quot;&quot;,&quot;image&quot;:&quot;&quot;,&quot;summary&quot;:&quot;Can I generate html directly without using markdown markup?&quot;,&quot;title&quot;:&quot;This is a test of something new&quot;,&quot;publishedAt&quot;:&quot;2023-06-25T11:22&quot;,&quot;updatedAt&quot;:&quot;2023-06-25T11:22&quot;,&quot;incRss&quot;:false,&quot;incSitemap&quot;:false,&quot;incIndex&quot;:false,&quot;shrLinkedIn&quot;:false,&quot;supportNodeRedJson&quot;:false,&quot;reloadOnEdit&quot;:true,&quot;redirectToNode&quot;:false,&quot;redirectNodeId&quot;:&quot;status-404&quot;,&quot;redirectStatusCode&quot;:&quot;301&quot;,&quot;x&quot;:414.8569984436035,&quot;y&quot;:496.71434688568115,&quot;wires&quot;:[[&quot;5529c827c2ddd554&quot;]]}]
</code></pre>
<hr>
<h3>Example 7: Spaghetti flow</h3>
<pre><code class="language-noderedjson">[{&quot;id&quot;:&quot;e3e278445b7bcb21&quot;,&quot;type&quot;:&quot;subflow&quot;,&quot;name&quot;:&quot;BlogPageEndsHere&quot;,&quot;info&quot;:&quot;&quot;,&quot;category&quot;:&quot;&quot;,&quot;in&quot;:[{&quot;x&quot;:132,&quot;y&quot;:215,&quot;wires&quot;:[{&quot;id&quot;:&quot;b2f270b15349b67c&quot;}]}],&quot;out&quot;:[],&quot;env&quot;:[],&quot;meta&quot;:{},&quot;color&quot;:&quot;#ddeeff&quot;,&quot;icon&quot;:&quot;font-awesome/fa-hand-stop-o&quot;},{&quot;id&quot;:&quot;627f98bbc0ea4f8b&quot;,&quot;type&quot;:&quot;link out&quot;,&quot;z&quot;:&quot;e3e278445b7bcb21&quot;,&quot;name&quot;:&quot;link out 77&quot;,&quot;mode&quot;:&quot;return&quot;,&quot;links&quot;:[],&quot;x&quot;:1328,&quot;y&quot;:306,&quot;wires&quot;:[]},{&quot;id&quot;:&quot;408189fb7a17ba8b&quot;,&quot;type&quot;:&quot;switch&quot;,&quot;z&quot;:&quot;e3e278445b7bcb21&quot;,&quot;name&quot;:&quot;has _linkSource - is this a link-call action&quot;,&quot;property&quot;:&quot;_linkSource&quot;,&quot;propertyType&quot;:&quot;msg&quot;,&quot;rules&quot;:[{&quot;t&quot;:&quot;nnull&quot;},{&quot;t&quot;:&quot;else&quot;}],&quot;checkall&quot;:&quot;true&quot;,&quot;repair&quot;:false,&quot;outputs&quot;:2,&quot;x&quot;:1002,&quot;y&quot;:403,&quot;wires&quot;:[[&quot;627f98bbc0ea4f8b&quot;],[]]},{&quot;id&quot;:&quot;2a2cc4ef4e7704b4&quot;,&quot;type&quot;:&quot;template&quot;,&quot;z&quot;:&quot;e3e278445b7bcb21&quot;,&quot;name&quot;:&quot;&quot;,&quot;field&quot;:&quot;payload&quot;,&quot;fieldType&quot;:&quot;msg&quot;,&quot;format&quot;:&quot;handlebars&quot;,&quot;syntax&quot;:&quot;mustache&quot;,&quot;template&quot;:&quot;&quot;,&quot;output&quot;:&quot;str&quot;,&quot;x&quot;:545,&quot;y&quot;:632,&quot;wires&quot;:[[&quot;408189fb7a17ba8b&quot;]]},{&quot;id&quot;:&quot;693c46a206c026a4&quot;,&quot;type&quot;:&quot;change&quot;,&quot;z&quot;:&quot;e3e278445b7bcb21&quot;,&quot;name&quot;:&quot;&quot;,&quot;rules&quot;:[{&quot;t&quot;:&quot;set&quot;,&quot;p&quot;:&quot;template&quot;,&quot;pt&quot;:&quot;msg&quot;,&quot;to&quot;:&quot;payload&quot;,&quot;tot&quot;:&quot;msg&quot;}],&quot;action&quot;:&quot;&quot;,&quot;property&quot;:&quot;&quot;,&quot;from&quot;:&quot;&quot;,&quot;to&quot;:&quot;&quot;,&quot;reg&quot;:false,&quot;x&quot;:474,&quot;y&quot;:510,&quot;wires&quot;:[[&quot;2a2cc4ef4e7704b4&quot;]]},{&quot;id&quot;:&quot;b2f270b15349b67c&quot;,&quot;type&quot;:&quot;switch&quot;,&quot;z&quot;:&quot;e3e278445b7bcb21&quot;,&quot;name&quot;:&quot;&quot;,&quot;property&quot;:&quot;page.noderedjson&quot;,&quot;propertyType&quot;:&quot;msg&quot;,&quot;rules&quot;:[{&quot;t&quot;:&quot;true&quot;},{&quot;t&quot;:&quot;else&quot;}],&quot;checkall&quot;:&quot;false&quot;,&quot;repair&quot;:false,&quot;outputs&quot;:2,&quot;x&quot;:374,&quot;y&quot;:408,&quot;wires&quot;:[[&quot;408189fb7a17ba8b&quot;],[&quot;693c46a206c026a4&quot;]]},{&quot;id&quot;:&quot;82a04eeec5d1ec39&quot;,&quot;type&quot;:&quot;link in&quot;,&quot;z&quot;:&quot;04fab8edd0e8f2df&quot;,&quot;name&quot;:&quot;[blog] backticks-in-markdown-and-node-red&quot;,&quot;links&quot;:[],&quot;x&quot;:434,&quot;y&quot;:292,&quot;wires&quot;:[[&quot;cc439de6514717e7&quot;]]},{&quot;id&quot;:&quot;cc439de6514717e7&quot;,&quot;type&quot;:&quot;BlogPageInfo&quot;,&quot;z&quot;:&quot;04fab8edd0e8f2df&quot;,&quot;name&quot;:&quot;&quot;,&quot;image&quot;:&quot;1687952972847_Screen_Shot_2023-06-28_at_13.48.43.png&quot;,&quot;summary&quot;:&quot;Codeblocks are one thing but images are further a thousand Json files. Show me your flow!&quot;,&quot;title&quot;:&quot;Replacing Node-RED flow codeblocks with flow images.&quot;,&quot;publishedAt&quot;:&quot;2023-06-28T11:22&quot;,&quot;updatedAt&quot;:&quot;2023-06-28T11:22&quot;,&quot;incRss&quot;:true,&quot;incSitemap&quot;:true,&quot;incIndex&quot;:true,&quot;shrLinkedIn&quot;:true,&quot;supportNodeRedJson&quot;:true,&quot;reloadOnEdit&quot;:false,&quot;redirectToNode&quot;:false,&quot;redirectNodeId&quot;:&quot;status-404&quot;,&quot;redirectStatusCode&quot;:&quot;301&quot;,&quot;x&quot;:1075.71435546875,&quot;y&quot;:448,&quot;wires&quot;:[[&quot;be61a774e4c6d75e&quot;]]},{&quot;id&quot;:&quot;be61a774e4c6d75e&quot;,&quot;type&quot;:&quot;template&quot;,&quot;z&quot;:&quot;04fab8edd0e8f2df&quot;,&quot;name&quot;:&quot;flow example 1&quot;,&quot;field&quot;:&quot;flowexample1&quot;,&quot;fieldType&quot;:&quot;msg&quot;,&quot;format&quot;:&quot;handlebars&quot;,&quot;syntax&quot;:&quot;plain&quot;,&quot;template&quot;:&quot;&quot;,&quot;output&quot;:&quot;str&quot;,&quot;x&quot;:998,&quot;y&quot;:563,&quot;wires&quot;:[[&quot;db01f2dab4fa12ab&quot;]]},{&quot;id&quot;:&quot;ac8306319a302f0c&quot;,&quot;type&quot;:&quot;BlogPageInfo&quot;,&quot;z&quot;:&quot;04fab8edd0e8f2df&quot;,&quot;name&quot;:&quot;&quot;,&quot;image&quot;:&quot;&quot;,&quot;summary&quot;:&quot;Can I replace codeblocks of flows.json with images?&quot;,&quot;title&quot;:&quot;Testing the inclusion and replacement of codeblocks&quot;,&quot;publishedAt&quot;:&quot;2023-06-25T11:22&quot;,&quot;updatedAt&quot;:&quot;2023-06-25T11:22&quot;,&quot;incRss&quot;:false,&quot;incSitemap&quot;:false,&quot;incIndex&quot;:false,&quot;shrLinkedIn&quot;:false,&quot;supportNodeRedJson&quot;:true,&quot;reloadOnEdit&quot;:false,&quot;redirectToNode&quot;:false,&quot;redirectNodeId&quot;:&quot;status-404&quot;,&quot;redirectStatusCode&quot;:&quot;301&quot;,&quot;x&quot;:1077.71435546875,&quot;y&quot;:544,&quot;wires&quot;:[[&quot;be61a774e4c6d75e&quot;]]},{&quot;id&quot;:&quot;db01f2dab4fa12ab&quot;,&quot;type&quot;:&quot;template&quot;,&quot;z&quot;:&quot;04fab8edd0e8f2df&quot;,&quot;name&quot;:&quot;flowexample2&quot;,&quot;field&quot;:&quot;flowexample2&quot;,&quot;fieldType&quot;:&quot;msg&quot;,&quot;format&quot;:&quot;handlebars&quot;,&quot;syntax&quot;:&quot;plain&quot;,&quot;template&quot;:&quot;&quot;,&quot;output&quot;:&quot;str&quot;,&quot;x&quot;:991,&quot;y&quot;:467,&quot;wires&quot;:[[&quot;440887f5bfa191c9&quot;]]},{&quot;id&quot;:&quot;24767f8be515eebe&quot;,&quot;type&quot;:&quot;link in&quot;,&quot;z&quot;:&quot;04fab8edd0e8f2df&quot;,&quot;name&quot;:&quot;[blog] codeblock-test&quot;,&quot;links&quot;:[],&quot;x&quot;:432,&quot;y&quot;:336,&quot;wires&quot;:[[&quot;ac8306319a302f0c&quot;]]},{&quot;id&quot;:&quot;440887f5bfa191c9&quot;,&quot;type&quot;:&quot;template&quot;,&quot;z&quot;:&quot;04fab8edd0e8f2df&quot;,&quot;name&quot;:&quot;flowexample3&quot;,&quot;field&quot;:&quot;flowexample3&quot;,&quot;fieldType&quot;:&quot;msg&quot;,&quot;format&quot;:&quot;handlebars&quot;,&quot;syntax&quot;:&quot;plain&quot;,&quot;template&quot;:&quot;&quot;,&quot;output&quot;:&quot;str&quot;,&quot;x&quot;:1218,&quot;y&quot;:534,&quot;wires&quot;:[[&quot;03989336aea86433&quot;]]},{&quot;id&quot;:&quot;03989336aea86433&quot;,&quot;type&quot;:&quot;template&quot;,&quot;z&quot;:&quot;04fab8edd0e8f2df&quot;,&quot;name&quot;:&quot;flowexample4&quot;,&quot;field&quot;:&quot;flowexample4&quot;,&quot;fieldType&quot;:&quot;msg&quot;,&quot;format&quot;:&quot;handlebars&quot;,&quot;syntax&quot;:&quot;plain&quot;,&quot;template&quot;:&quot;&quot;,&quot;output&quot;:&quot;str&quot;,&quot;x&quot;:1151,&quot;y&quot;:491,&quot;wires&quot;:[[&quot;01dae03d9ec9694f&quot;]]},{&quot;id&quot;:&quot;01dae03d9ec9694f&quot;,&quot;type&quot;:&quot;template&quot;,&quot;z&quot;:&quot;04fab8edd0e8f2df&quot;,&quot;name&quot;:&quot;flowexample5&quot;,&quot;field&quot;:&quot;flowexample5&quot;,&quot;fieldType&quot;:&quot;msg&quot;,&quot;format&quot;:&quot;handlebars&quot;,&quot;syntax&quot;:&quot;plain&quot;,&quot;template&quot;:&quot;&quot;,&quot;output&quot;:&quot;str&quot;,&quot;x&quot;:1043,&quot;y&quot;:507,&quot;wires&quot;:[[&quot;33bfba9a9fcd9e58&quot;]]},{&quot;id&quot;:&quot;33bfba9a9fcd9e58&quot;,&quot;type&quot;:&quot;template&quot;,&quot;z&quot;:&quot;04fab8edd0e8f2df&quot;,&quot;name&quot;:&quot;flowexample6&quot;,&quot;field&quot;:&quot;flowexample6&quot;,&quot;fieldType&quot;:&quot;msg&quot;,&quot;format&quot;:&quot;handlebars&quot;,&quot;syntax&quot;:&quot;plain&quot;,&quot;template&quot;:&quot;&quot;,&quot;output&quot;:&quot;str&quot;,&quot;x&quot;:1205,&quot;y&quot;:472,&quot;wires&quot;:[[&quot;930cf2c0b7cbc504&quot;]]},{&quot;id&quot;:&quot;930cf2c0b7cbc504&quot;,&quot;type&quot;:&quot;template&quot;,&quot;z&quot;:&quot;04fab8edd0e8f2df&quot;,&quot;name&quot;:&quot;.md page&quot;,&quot;field&quot;:&quot;payload&quot;,&quot;fieldType&quot;:&quot;msg&quot;,&quot;format&quot;:&quot;markdown&quot;,&quot;syntax&quot;:&quot;mustache&quot;,&quot;template&quot;:&quot;&quot;,&quot;output&quot;:&quot;str&quot;,&quot;x&quot;:1158,&quot;y&quot;:550,&quot;wires&quot;:[[&quot;e6cc075cbd12d4ef&quot;]]},{&quot;id&quot;:&quot;e6cc075cbd12d4ef&quot;,&quot;type&quot;:&quot;subflow:e3e278445b7bcb21&quot;,&quot;z&quot;:&quot;04fab8edd0e8f2df&quot;,&quot;name&quot;:&quot;&quot;,&quot;x&quot;:1645,&quot;y&quot;:425,&quot;wires&quot;:[]}]
</code></pre>
<hr>

  </body>


  <script>
    $(function(){
      replaceCodeBlocksWithNodeRedFlowImages();
    });
    window.addEventListener('load', function () {
        setTimeout( function(){
          var svgs = d3.selectAll(".svg-container-noderedjson svg");
          svgs.each(function() {
            var svg = d3.select(this);
            
            svg.html("<g>" + svg.html() + "</g>");
            var inner = svg.select("g");
            var zoom = d3.zoom().on("zoom", function(event) {
              inner.attr("transform", event.transform);
            });
            svg.call(zoom);
          });
        }, 500);
      });
  </script>
</html>

Outlook

I also imagine using this to have a visual comparison between flow versions. At the moment, to compare two different versions of a flow, one has to compare the json files or use the inbuilt comparison tool in Node-RED. This tool does a two side-by-side comparing each attribute of every node. This includes the X,Y coordinates.

This I find too complex. I would like to have a visual-based comparison between flow versions, how this will work - no idea! (Update: a first attempt of this can be found at FlowHub which is an attempt at visual code sharing with visual comparison.)

One final example

Visualisation of the flow that generates this page and the javascript code for this page.

Merry Xmas code

UPDATE: Don’t use -with-zoom

Don’t use the -with-zoom option instead use the d3 library. In your html document, in the header:

<head>

  <script src="https://unpkg.com/d3/dist/d3.min.js" crossorigin="anonymous" referrerpolicy="no-referrer"></script>

</head>

Somewhere else, at the bottom of the body element:

<body>

<script>
      window.addEventListener('load', function () {
        setTimeout( function(){
          var svgs = d3.selectAll(".svg-container-noderedjson svg");
          svgs.each(function() {
            var svg = d3.select(this);
            
            svg.html("<g>" + svg.html() + "</g>");
            var inner = svg.select("g");
            var zoom = d3.zoom().on("zoom", function(event) {
              inner.attr("transform", event.transform);
            });
            svg.call(zoom);
          });
        }, 500);
      });
</script>

</body>

Taken from here and from there to this issue.

Last updated: 2023-09-30T08:47:04.358Z

Comments powered by giscus

The author is available for Node-RED development and consultancy.