Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

@n8n_io/n8n-demo-component

Package Overview
Dependencies
Maintainers
3
Versions
16
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@n8n_io/n8n-demo-component - npm Package Compare versions

Comparing version 1.0.10 to 1.0.12

docs-src/examples/click-to-interact.md

34

docs/n8n-demo.bundled.js

@@ -60,8 +60,9 @@ /**

id="int_iframe"
></iframe>`,i=!this.interactive&&(this.insideIframe||this.isMobileView),s=O`<div
class="${st({overlay:!0,overlay__hidden:!i})}"
></iframe>`,i=this.interactive?"":O`<div
class="overlay"
@click="${this.onOverlayClick}"
?hidden="${!(this.insideIframe||this.isMobileView)}"
>
<button>Click to explore</button>
</div>`;return O`<div class="canvas-container">${s}${t}</div>`}render(){const t="true"===this.frame&&this.showPreview&&!this.error;return O`
</div>`;return O`<div class="canvas-container">${i}${t}</div>`}render(){const t="true"===this.frame&&this.showPreview&&!this.error;return O`
<div

@@ -72,14 +73,6 @@ class="${st({embedded_workflow:!0,frame:t})}"

>
<div
class=${st({embedded_tip_error:!0})}
?hidden=${this.showPreview||this.error}
>
<button class="code_toggle" @click=${this.toggleView}>
Show workflow
</button>
</div>
${this.showPreview||this.error?"":`<div\n class=${st({embedded_tip_error:!0})}\n ?hidden=${this.showPreview||this.error}\n >\n <button class="code_toggle" @click=${this.toggleView}>\n Show workflow\n </button>\n </div>`}
${this.renderIframe()}
<div
${this.error?O`<div
class=${st({embedded_tip_error:!0,embedded_tip_error_with_code:this.showCode})}
?hidden=${!this.error}
>

@@ -91,6 +84,5 @@ Could not load workflow preview. You can still

and paste it into n8n
</div>
<div
</div>`:""}
${t?O`<div
class=${st({embedded_tip:!0,embedded_tip_with_code:this.showCode})}
?hidden=${!t}
>

@@ -102,4 +94,4 @@ 💡 Double-click a node to see its settings, or paste

into n8n to import it
</div>
<div class="workflow_json" ?hidden=${!this.showCode}>
</div>`:""}
${this.showCode?O`<div class="workflow_json">
<div class="copy_button" @click=${this.copyClipboard}>

@@ -112,3 +104,3 @@ ${this.copyText}

>
</div>
</div>`:""}
</div>

@@ -184,6 +176,2 @@ `}};nt.styles=((t,...s)=>{const o=1===t.length?t[0]:s.reduce(((i,s,e)=>i+(t=>{if(!0===t._$cssResult$)return t.cssText;if("number"==typeof t)return t;throw Error("Value passed to 'css' function must be a 'css' function result: "+t+". Use 'unsafeCSS' to pass non-literal values, but take care to ensure page security.")})(s)+t[e+1]),t[0]);return new e(o,i)})`

.overlay__hidden {
display: none;
}
.canvas-container {

@@ -190,0 +178,0 @@ height: var(--n8n-workflow-min-height, 300px);

@@ -17,3 +17,3 @@ /**

*/
var v;u.finalized=!0,u.elementProperties=new Map,u.elementStyles=[],u.shadowRootOptions={mode:"open"},null==l||l({ReactiveElement:u}),(null!==(n=globalThis.reactiveElementVersions)&&void 0!==n?n:globalThis.reactiveElementVersions=[]).push("1.2.1");const f=globalThis.trustedTypes,p=f?f.createPolicy("lit-html",{createHTML:t=>t}):void 0,w=`lit$${(Math.random()+"").slice(9)}$`,m="?"+w,b=`<${m}>`,g=document,_=(t="")=>g.createComment(t),y=t=>null===t||"object"!=typeof t&&"function"!=typeof t,$=Array.isArray,k=/<(?:(!--|\/[^a-zA-Z])|(\/?[a-zA-Z][^>\s]*)|(\/?$))/g,S=/-->/g,x=/>/g,C=/>|[ \n \r](?:([^\s"'>=/]+)([ \n \r]*=[ \n \r]*(?:[^ \n \r"'`<>=]|("|')|))|$)/g,A=/'/g,M=/"/g,E=/^(?:script|style|textarea)$/i,N=(t=>(i,...s)=>({_$litType$:t,strings:i,values:s}))(1),O=Symbol.for("lit-noChange"),T=Symbol.for("lit-nothing"),j=new WeakMap,U=g.createTreeWalker(g,129,null,!1),z=(t,i)=>{const s=t.length-1,e=[];let o,n=2===i?"<svg>":"",r=k;for(let i=0;i<s;i++){const s=t[i];let h,l,d=-1,a=0;for(;a<s.length&&(r.lastIndex=a,l=r.exec(s),null!==l);)a=r.lastIndex,r===k?"!--"===l[1]?r=S:void 0!==l[1]?r=x:void 0!==l[2]?(E.test(l[2])&&(o=RegExp("</"+l[2],"g")),r=C):void 0!==l[3]&&(r=C):r===C?">"===l[0]?(r=null!=o?o:k,d=-1):void 0===l[1]?d=-2:(d=r.lastIndex-l[2].length,h=l[1],r=void 0===l[3]?C:'"'===l[3]?M:A):r===M||r===A?r=C:r===S||r===x?r=k:(r=C,o=void 0);const c=r===C&&t[i+1].startsWith("/>")?" ":"";n+=r===k?s+b:d>=0?(e.push(h),s.slice(0,d)+"$lit$"+s.slice(d)+w+c):s+w+(-2===d?(e.push(void 0),i):c)}const h=n+(t[s]||"<?>")+(2===i?"</svg>":"");if(!Array.isArray(t)||!t.hasOwnProperty("raw"))throw Error("invalid template strings array");return[void 0!==p?p.createHTML(h):h,e]};class R{constructor({strings:t,_$litType$:i},s){let e;this.parts=[];let o=0,n=0;const r=t.length-1,h=this.parts,[l,d]=z(t,i);if(this.el=R.createElement(l,s),U.currentNode=this.el.content,2===i){const t=this.el.content,i=t.firstChild;i.remove(),t.append(...i.childNodes)}for(;null!==(e=U.nextNode())&&h.length<r;){if(1===e.nodeType){if(e.hasAttributes()){const t=[];for(const i of e.getAttributeNames())if(i.endsWith("$lit$")||i.startsWith(w)){const s=d[n++];if(t.push(i),void 0!==s){const t=e.getAttribute(s.toLowerCase()+"$lit$").split(w),i=/([.?@])?(.*)/.exec(s);h.push({type:1,index:o,name:i[2],strings:t,ctor:"."===i[1]?P:"?"===i[1]?B:"@"===i[1]?H:L})}else h.push({type:6,index:o})}for(const i of t)e.removeAttribute(i)}if(E.test(e.tagName)){const t=e.textContent.split(w),i=t.length-1;if(i>0){e.textContent=f?f.emptyScript:"";for(let s=0;s<i;s++)e.append(t[s],_()),U.nextNode(),h.push({type:2,index:++o});e.append(t[i],_())}}}else if(8===e.nodeType)if(e.data===m)h.push({type:2,index:o});else{let t=-1;for(;-1!==(t=e.data.indexOf(w,t+1));)h.push({type:7,index:o}),t+=w.length-1}o++}}static createElement(t,i){const s=g.createElement("template");return s.innerHTML=t,s}}function I(t,i,s=t,e){var o,n,r,h;if(i===O)return i;let l=void 0!==e?null===(o=s._$Cl)||void 0===o?void 0:o[e]:s._$Cu;const d=y(i)?void 0:i._$litDirective$;return(null==l?void 0:l.constructor)!==d&&(null===(n=null==l?void 0:l._$AO)||void 0===n||n.call(l,!1),void 0===d?l=void 0:(l=new d(t),l._$AT(t,s,e)),void 0!==e?(null!==(r=(h=s)._$Cl)&&void 0!==r?r:h._$Cl=[])[e]=l:s._$Cu=l),void 0!==l&&(i=I(t,l._$AS(t,i.values),l,e)),i}class J{constructor(t,i){this.v=[],this._$AN=void 0,this._$AD=t,this._$AM=i}get parentNode(){return this._$AM.parentNode}get _$AU(){return this._$AM._$AU}p(t){var i;const{el:{content:s},parts:e}=this._$AD,o=(null!==(i=null==t?void 0:t.creationScope)&&void 0!==i?i:g).importNode(s,!0);U.currentNode=o;let n=U.nextNode(),r=0,h=0,l=e[0];for(;void 0!==l;){if(r===l.index){let i;2===l.type?i=new D(n,n.nextSibling,this,t):1===l.type?i=new l.ctor(n,l.name,l.strings,this,t):6===l.type&&(i=new W(n,this,t)),this.v.push(i),l=e[++h]}r!==(null==l?void 0:l.index)&&(n=U.nextNode(),r++)}return o}m(t){let i=0;for(const s of this.v)void 0!==s&&(void 0!==s.strings?(s._$AI(t,s,i),i+=s.strings.length-2):s._$AI(t[i])),i++}}class D{constructor(t,i,s,e){var o;this.type=2,this._$AH=T,this._$AN=void 0,this._$AA=t,this._$AB=i,this._$AM=s,this.options=e,this._$Cg=null===(o=null==e?void 0:e.isConnected)||void 0===o||o}get _$AU(){var t,i;return null!==(i=null===(t=this._$AM)||void 0===t?void 0:t._$AU)&&void 0!==i?i:this._$Cg}get parentNode(){let t=this._$AA.parentNode;const i=this._$AM;return void 0!==i&&11===t.nodeType&&(t=i.parentNode),t}get startNode(){return this._$AA}get endNode(){return this._$AB}_$AI(t,i=this){t=I(this,t,i),y(t)?t===T||null==t||""===t?(this._$AH!==T&&this._$AR(),this._$AH=T):t!==this._$AH&&t!==O&&this.$(t):void 0!==t._$litType$?this.T(t):void 0!==t.nodeType?this.S(t):(t=>{var i;return $(t)||"function"==typeof(null===(i=t)||void 0===i?void 0:i[Symbol.iterator])})(t)?this.A(t):this.$(t)}M(t,i=this._$AB){return this._$AA.parentNode.insertBefore(t,i)}S(t){this._$AH!==t&&(this._$AR(),this._$AH=this.M(t))}$(t){this._$AH!==T&&y(this._$AH)?this._$AA.nextSibling.data=t:this.S(g.createTextNode(t)),this._$AH=t}T(t){var i;const{values:s,_$litType$:e}=t,o="number"==typeof e?this._$AC(t):(void 0===e.el&&(e.el=R.createElement(e.h,this.options)),e);if((null===(i=this._$AH)||void 0===i?void 0:i._$AD)===o)this._$AH.m(s);else{const t=new J(o,this),i=t.p(this.options);t.m(s),this.S(i),this._$AH=t}}_$AC(t){let i=j.get(t.strings);return void 0===i&&j.set(t.strings,i=new R(t)),i}A(t){$(this._$AH)||(this._$AH=[],this._$AR());const i=this._$AH;let s,e=0;for(const o of t)e===i.length?i.push(s=new D(this.M(_()),this.M(_()),this,this.options)):s=i[e],s._$AI(o),e++;e<i.length&&(this._$AR(s&&s._$AB.nextSibling,e),i.length=e)}_$AR(t=this._$AA.nextSibling,i){var s;for(null===(s=this._$AP)||void 0===s||s.call(this,!1,!0,i);t&&t!==this._$AB;){const i=t.nextSibling;t.remove(),t=i}}setConnected(t){var i;void 0===this._$AM&&(this._$Cg=t,null===(i=this._$AP)||void 0===i||i.call(this,t))}}class L{constructor(t,i,s,e,o){this.type=1,this._$AH=T,this._$AN=void 0,this.element=t,this.name=i,this._$AM=e,this.options=o,s.length>2||""!==s[0]||""!==s[1]?(this._$AH=Array(s.length-1).fill(new String),this.strings=s):this._$AH=T}get tagName(){return this.element.tagName}get _$AU(){return this._$AM._$AU}_$AI(t,i=this,s,e){const o=this.strings;let n=!1;if(void 0===o)t=I(this,t,i,0),n=!y(t)||t!==this._$AH&&t!==O,n&&(this._$AH=t);else{const e=t;let r,h;for(t=o[0],r=0;r<o.length-1;r++)h=I(this,e[s+r],i,r),h===O&&(h=this._$AH[r]),n||(n=!y(h)||h!==this._$AH[r]),h===T?t=T:t!==T&&(t+=(null!=h?h:"")+o[r+1]),this._$AH[r]=h}n&&!e&&this.k(t)}k(t){t===T?this.element.removeAttribute(this.name):this.element.setAttribute(this.name,null!=t?t:"")}}class P extends L{constructor(){super(...arguments),this.type=3}k(t){this.element[this.name]=t===T?void 0:t}}const V=f?f.emptyScript:"";class B extends L{constructor(){super(...arguments),this.type=4}k(t){t&&t!==T?this.element.setAttribute(this.name,V):this.element.removeAttribute(this.name)}}class H extends L{constructor(t,i,s,e,o){super(t,i,s,e,o),this.type=5}_$AI(t,i=this){var s;if((t=null!==(s=I(this,t,i,0))&&void 0!==s?s:T)===O)return;const e=this._$AH,o=t===T&&e!==T||t.capture!==e.capture||t.once!==e.once||t.passive!==e.passive,n=t!==T&&(e===T||o);o&&this.element.removeEventListener(this.name,this,e),n&&this.element.addEventListener(this.name,this,t),this._$AH=t}handleEvent(t){var i,s;"function"==typeof this._$AH?this._$AH.call(null!==(s=null===(i=this.options)||void 0===i?void 0:i.host)&&void 0!==s?s:this.element,t):this._$AH.handleEvent(t)}}class W{constructor(t,i,s){this.element=t,this.type=6,this._$AN=void 0,this._$AM=i,this.options=s}get _$AU(){return this._$AM._$AU}_$AI(t){I(this,t)}}const K=window.litHtmlPolyfillSupport;
var v;u.finalized=!0,u.elementProperties=new Map,u.elementStyles=[],u.shadowRootOptions={mode:"open"},null==l||l({ReactiveElement:u}),(null!==(n=globalThis.reactiveElementVersions)&&void 0!==n?n:globalThis.reactiveElementVersions=[]).push("1.2.1");const p=globalThis.trustedTypes,f=p?p.createPolicy("lit-html",{createHTML:t=>t}):void 0,w=`lit$${(Math.random()+"").slice(9)}$`,b="?"+w,m=`<${b}>`,g=document,y=(t="")=>g.createComment(t),_=t=>null===t||"object"!=typeof t&&"function"!=typeof t,k=Array.isArray,$=/<(?:(!--|\/[^a-zA-Z])|(\/?[a-zA-Z][^>\s]*)|(\/?$))/g,S=/-->/g,x=/>/g,C=/>|[ \n \r](?:([^\s"'>=/]+)([ \n \r]*=[ \n \r]*(?:[^ \n \r"'`<>=]|("|')|))|$)/g,A=/'/g,M=/"/g,E=/^(?:script|style|textarea)$/i,O=(t=>(i,...s)=>({_$litType$:t,strings:i,values:s}))(1),N=Symbol.for("lit-noChange"),T=Symbol.for("lit-nothing"),j=new WeakMap,U=g.createTreeWalker(g,129,null,!1),z=(t,i)=>{const s=t.length-1,e=[];let o,n=2===i?"<svg>":"",r=$;for(let i=0;i<s;i++){const s=t[i];let h,l,d=-1,a=0;for(;a<s.length&&(r.lastIndex=a,l=r.exec(s),null!==l);)a=r.lastIndex,r===$?"!--"===l[1]?r=S:void 0!==l[1]?r=x:void 0!==l[2]?(E.test(l[2])&&(o=RegExp("</"+l[2],"g")),r=C):void 0!==l[3]&&(r=C):r===C?">"===l[0]?(r=null!=o?o:$,d=-1):void 0===l[1]?d=-2:(d=r.lastIndex-l[2].length,h=l[1],r=void 0===l[3]?C:'"'===l[3]?M:A):r===M||r===A?r=C:r===S||r===x?r=$:(r=C,o=void 0);const c=r===C&&t[i+1].startsWith("/>")?" ":"";n+=r===$?s+m:d>=0?(e.push(h),s.slice(0,d)+"$lit$"+s.slice(d)+w+c):s+w+(-2===d?(e.push(void 0),i):c)}const h=n+(t[s]||"<?>")+(2===i?"</svg>":"");if(!Array.isArray(t)||!t.hasOwnProperty("raw"))throw Error("invalid template strings array");return[void 0!==f?f.createHTML(h):h,e]};class R{constructor({strings:t,_$litType$:i},s){let e;this.parts=[];let o=0,n=0;const r=t.length-1,h=this.parts,[l,d]=z(t,i);if(this.el=R.createElement(l,s),U.currentNode=this.el.content,2===i){const t=this.el.content,i=t.firstChild;i.remove(),t.append(...i.childNodes)}for(;null!==(e=U.nextNode())&&h.length<r;){if(1===e.nodeType){if(e.hasAttributes()){const t=[];for(const i of e.getAttributeNames())if(i.endsWith("$lit$")||i.startsWith(w)){const s=d[n++];if(t.push(i),void 0!==s){const t=e.getAttribute(s.toLowerCase()+"$lit$").split(w),i=/([.?@])?(.*)/.exec(s);h.push({type:1,index:o,name:i[2],strings:t,ctor:"."===i[1]?V:"?"===i[1]?B:"@"===i[1]?H:L})}else h.push({type:6,index:o})}for(const i of t)e.removeAttribute(i)}if(E.test(e.tagName)){const t=e.textContent.split(w),i=t.length-1;if(i>0){e.textContent=p?p.emptyScript:"";for(let s=0;s<i;s++)e.append(t[s],y()),U.nextNode(),h.push({type:2,index:++o});e.append(t[i],y())}}}else if(8===e.nodeType)if(e.data===b)h.push({type:2,index:o});else{let t=-1;for(;-1!==(t=e.data.indexOf(w,t+1));)h.push({type:7,index:o}),t+=w.length-1}o++}}static createElement(t,i){const s=g.createElement("template");return s.innerHTML=t,s}}function I(t,i,s=t,e){var o,n,r,h;if(i===N)return i;let l=void 0!==e?null===(o=s._$Cl)||void 0===o?void 0:o[e]:s._$Cu;const d=_(i)?void 0:i._$litDirective$;return(null==l?void 0:l.constructor)!==d&&(null===(n=null==l?void 0:l._$AO)||void 0===n||n.call(l,!1),void 0===d?l=void 0:(l=new d(t),l._$AT(t,s,e)),void 0!==e?(null!==(r=(h=s)._$Cl)&&void 0!==r?r:h._$Cl=[])[e]=l:s._$Cu=l),void 0!==l&&(i=I(t,l._$AS(t,i.values),l,e)),i}class J{constructor(t,i){this.v=[],this._$AN=void 0,this._$AD=t,this._$AM=i}get parentNode(){return this._$AM.parentNode}get _$AU(){return this._$AM._$AU}p(t){var i;const{el:{content:s},parts:e}=this._$AD,o=(null!==(i=null==t?void 0:t.creationScope)&&void 0!==i?i:g).importNode(s,!0);U.currentNode=o;let n=U.nextNode(),r=0,h=0,l=e[0];for(;void 0!==l;){if(r===l.index){let i;2===l.type?i=new D(n,n.nextSibling,this,t):1===l.type?i=new l.ctor(n,l.name,l.strings,this,t):6===l.type&&(i=new W(n,this,t)),this.v.push(i),l=e[++h]}r!==(null==l?void 0:l.index)&&(n=U.nextNode(),r++)}return o}m(t){let i=0;for(const s of this.v)void 0!==s&&(void 0!==s.strings?(s._$AI(t,s,i),i+=s.strings.length-2):s._$AI(t[i])),i++}}class D{constructor(t,i,s,e){var o;this.type=2,this._$AH=T,this._$AN=void 0,this._$AA=t,this._$AB=i,this._$AM=s,this.options=e,this._$Cg=null===(o=null==e?void 0:e.isConnected)||void 0===o||o}get _$AU(){var t,i;return null!==(i=null===(t=this._$AM)||void 0===t?void 0:t._$AU)&&void 0!==i?i:this._$Cg}get parentNode(){let t=this._$AA.parentNode;const i=this._$AM;return void 0!==i&&11===t.nodeType&&(t=i.parentNode),t}get startNode(){return this._$AA}get endNode(){return this._$AB}_$AI(t,i=this){t=I(this,t,i),_(t)?t===T||null==t||""===t?(this._$AH!==T&&this._$AR(),this._$AH=T):t!==this._$AH&&t!==N&&this.$(t):void 0!==t._$litType$?this.T(t):void 0!==t.nodeType?this.S(t):(t=>{var i;return k(t)||"function"==typeof(null===(i=t)||void 0===i?void 0:i[Symbol.iterator])})(t)?this.A(t):this.$(t)}M(t,i=this._$AB){return this._$AA.parentNode.insertBefore(t,i)}S(t){this._$AH!==t&&(this._$AR(),this._$AH=this.M(t))}$(t){this._$AH!==T&&_(this._$AH)?this._$AA.nextSibling.data=t:this.S(g.createTextNode(t)),this._$AH=t}T(t){var i;const{values:s,_$litType$:e}=t,o="number"==typeof e?this._$AC(t):(void 0===e.el&&(e.el=R.createElement(e.h,this.options)),e);if((null===(i=this._$AH)||void 0===i?void 0:i._$AD)===o)this._$AH.m(s);else{const t=new J(o,this),i=t.p(this.options);t.m(s),this.S(i),this._$AH=t}}_$AC(t){let i=j.get(t.strings);return void 0===i&&j.set(t.strings,i=new R(t)),i}A(t){k(this._$AH)||(this._$AH=[],this._$AR());const i=this._$AH;let s,e=0;for(const o of t)e===i.length?i.push(s=new D(this.M(y()),this.M(y()),this,this.options)):s=i[e],s._$AI(o),e++;e<i.length&&(this._$AR(s&&s._$AB.nextSibling,e),i.length=e)}_$AR(t=this._$AA.nextSibling,i){var s;for(null===(s=this._$AP)||void 0===s||s.call(this,!1,!0,i);t&&t!==this._$AB;){const i=t.nextSibling;t.remove(),t=i}}setConnected(t){var i;void 0===this._$AM&&(this._$Cg=t,null===(i=this._$AP)||void 0===i||i.call(this,t))}}class L{constructor(t,i,s,e,o){this.type=1,this._$AH=T,this._$AN=void 0,this.element=t,this.name=i,this._$AM=e,this.options=o,s.length>2||""!==s[0]||""!==s[1]?(this._$AH=Array(s.length-1).fill(new String),this.strings=s):this._$AH=T}get tagName(){return this.element.tagName}get _$AU(){return this._$AM._$AU}_$AI(t,i=this,s,e){const o=this.strings;let n=!1;if(void 0===o)t=I(this,t,i,0),n=!_(t)||t!==this._$AH&&t!==N,n&&(this._$AH=t);else{const e=t;let r,h;for(t=o[0],r=0;r<o.length-1;r++)h=I(this,e[s+r],i,r),h===N&&(h=this._$AH[r]),n||(n=!_(h)||h!==this._$AH[r]),h===T?t=T:t!==T&&(t+=(null!=h?h:"")+o[r+1]),this._$AH[r]=h}n&&!e&&this.k(t)}k(t){t===T?this.element.removeAttribute(this.name):this.element.setAttribute(this.name,null!=t?t:"")}}class V extends L{constructor(){super(...arguments),this.type=3}k(t){this.element[this.name]=t===T?void 0:t}}const P=p?p.emptyScript:"";class B extends L{constructor(){super(...arguments),this.type=4}k(t){t&&t!==T?this.element.setAttribute(this.name,P):this.element.removeAttribute(this.name)}}class H extends L{constructor(t,i,s,e,o){super(t,i,s,e,o),this.type=5}_$AI(t,i=this){var s;if((t=null!==(s=I(this,t,i,0))&&void 0!==s?s:T)===N)return;const e=this._$AH,o=t===T&&e!==T||t.capture!==e.capture||t.once!==e.once||t.passive!==e.passive,n=t!==T&&(e===T||o);o&&this.element.removeEventListener(this.name,this,e),n&&this.element.addEventListener(this.name,this,t),this._$AH=t}handleEvent(t){var i,s;"function"==typeof this._$AH?this._$AH.call(null!==(s=null===(i=this.options)||void 0===i?void 0:i.host)&&void 0!==s?s:this.element,t):this._$AH.handleEvent(t)}}class W{constructor(t,i,s){this.element=t,this.type=6,this._$AN=void 0,this._$AM=i,this.options=s}get _$AU(){return this._$AM._$AU}_$AI(t){I(this,t)}}const K=window.litHtmlPolyfillSupport;
/**

@@ -24,3 +24,3 @@ * @license

*/
var Z,q;null==K||K(R,D),(null!==(v=globalThis.litHtmlVersions)&&void 0!==v?v:globalThis.litHtmlVersions=[]).push("2.1.2");class F extends u{constructor(){super(...arguments),this.renderOptions={host:this},this._$Dt=void 0}createRenderRoot(){var t,i;const s=super.createRenderRoot();return null!==(t=(i=this.renderOptions).renderBefore)&&void 0!==t||(i.renderBefore=s.firstChild),s}update(t){const i=this.render();this.hasUpdated||(this.renderOptions.isConnected=this.isConnected),super.update(t),this._$Dt=((t,i,s)=>{var e,o;const n=null!==(e=null==s?void 0:s.renderBefore)&&void 0!==e?e:i;let r=n._$litPart$;if(void 0===r){const t=null!==(o=null==s?void 0:s.renderBefore)&&void 0!==o?o:null;n._$litPart$=r=new D(i.insertBefore(_(),t),t,void 0,null!=s?s:{})}return r._$AI(t),r})(i,this.renderRoot,this.renderOptions)}connectedCallback(){var t;super.connectedCallback(),null===(t=this._$Dt)||void 0===t||t.setConnected(!0)}disconnectedCallback(){var t;super.disconnectedCallback(),null===(t=this._$Dt)||void 0===t||t.setConnected(!1)}render(){return O}}F.finalized=!0,F._$litElement$=!0,null===(Z=globalThis.litElementHydrateSupport)||void 0===Z||Z.call(globalThis,{LitElement:F});const Y=globalThis.litElementPolyfillSupport;null==Y||Y({LitElement:F}),(null!==(q=globalThis.litElementVersions)&&void 0!==q?q:globalThis.litElementVersions=[]).push("3.1.2");
var Z,q;null==K||K(R,D),(null!==(v=globalThis.litHtmlVersions)&&void 0!==v?v:globalThis.litHtmlVersions=[]).push("2.1.2");class Y extends u{constructor(){super(...arguments),this.renderOptions={host:this},this._$Dt=void 0}createRenderRoot(){var t,i;const s=super.createRenderRoot();return null!==(t=(i=this.renderOptions).renderBefore)&&void 0!==t||(i.renderBefore=s.firstChild),s}update(t){const i=this.render();this.hasUpdated||(this.renderOptions.isConnected=this.isConnected),super.update(t),this._$Dt=((t,i,s)=>{var e,o;const n=null!==(e=null==s?void 0:s.renderBefore)&&void 0!==e?e:i;let r=n._$litPart$;if(void 0===r){const t=null!==(o=null==s?void 0:s.renderBefore)&&void 0!==o?o:null;n._$litPart$=r=new D(i.insertBefore(y(),t),t,void 0,null!=s?s:{})}return r._$AI(t),r})(i,this.renderRoot,this.renderOptions)}connectedCallback(){var t;super.connectedCallback(),null===(t=this._$Dt)||void 0===t||t.setConnected(!0)}disconnectedCallback(){var t;super.disconnectedCallback(),null===(t=this._$Dt)||void 0===t||t.setConnected(!1)}render(){return N}}Y.finalized=!0,Y._$litElement$=!0,null===(Z=globalThis.litElementHydrateSupport)||void 0===Z||Z.call(globalThis,{LitElement:Y});const F=globalThis.litElementPolyfillSupport;null==F||F({LitElement:Y}),(null!==(q=globalThis.litElementVersions)&&void 0!==q?q:globalThis.litElementVersions=[]).push("3.1.2");
/**

@@ -58,7 +58,13 @@ * @license

*/
const st=(t=>(...i)=>({_$litDirective$:t,values:i}))(class extends class{constructor(t){}get _$AU(){return this._$AM._$AU}_$AT(t,i,s){this._$Ct=t,this._$AM=i,this._$Ci=s}_$AS(t,i){return this.update(t,i)}update(t,i){return this.render(...i)}}{constructor(t){var i;if(super(t),t.type!==it||"class"!==t.name||(null===(i=t.strings)||void 0===i?void 0:i.length)>2)throw Error("`classMap()` can only be used in the `class` attribute and must be the only part in the attribute.")}render(t){return" "+Object.keys(t).filter((i=>t[i])).join(" ")+" "}update(t,[i]){var s,e;if(void 0===this.st){this.st=new Set,void 0!==t.strings&&(this.et=new Set(t.strings.join(" ").split(/\s/).filter((t=>""!==t))));for(const t in i)i[t]&&!(null===(s=this.et)||void 0===s?void 0:s.has(t))&&this.st.add(t);return this.render(i)}const o=t.element.classList;this.st.forEach((t=>{t in i||(o.remove(t),this.st.delete(t))}));for(const t in i){const s=!!i[t];s===this.st.has(t)||(null===(e=this.et)||void 0===e?void 0:e.has(t))||(s?(o.add(t),this.st.add(t)):(o.remove(t),this.st.delete(t)))}return O}});var et=function(t,i,s,e){for(var o,n=arguments.length,r=n<3?i:null===e?e=Object.getOwnPropertyDescriptor(i,s):e,h=t.length-1;h>=0;h--)(o=t[h])&&(r=(n<3?o(r):n>3?o(i,s,r):o(i,s))||r);return n>3&&r&&Object.defineProperty(i,s,r),r};function ot(t){try{JSON.parse(t)}catch(t){return!1}return!0}let nt=class extends F{constructor(){super(...arguments),this.workflow="{}",this.frame=!1,this.src="https://n8n-preview-service.internal.n8n.cloud/workflows/demo",this.collapseForMobile=!0,this.showCode=!1,this.showPreview=!0,this.fullscreen=!1,this.insideIframe=!1,this.copyText="Copy",this.mobileDevice=!1,this.error=!1,this.scrollX=0,this.scrollY=0,this.receiveMessage=({data:t,source:i})=>{const s=this.shadowRoot.getElementById("int_iframe");if(ot(t)&&s.contentWindow===i){const i=JSON.parse(t);"n8nReady"===i.command?this.loadWorkflow():"openNDV"===i.command?this.fullscreen=!0:"closeNDV"===i.command?this.fullscreen=!1:"error"===i.command&&(this.error=!0,this.showPreview=!1)}},this.onDocumentScroll=()=>{!this.insideIframe||"ontouchstart"in window||navigator.maxTouchPoints||window.scrollTo(this.scrollX,this.scrollY)}}loadWorkflow(){try{const t=JSON.parse(this.workflow);if(!t)throw new Error("Missing workflow");if(!t.nodes||!Array.isArray(t.nodes))throw new Error("Must have an array of nodes");const i=this.shadowRoot.getElementById("int_iframe");i.contentWindow&&i.contentWindow.postMessage(JSON.stringify({command:"openWorkflow",workflow:t}),"*")}catch{this.error=!0,this.showPreview=!1}}toggleCode(){this.showCode=!this.showCode}onMouseEnter(){this.insideIframe=!0,this.scrollX=window.scrollX,this.scrollY=window.scrollY}onMouseLeave(){this.insideIframe=!1}copyClipboard(){navigator.clipboard.writeText(this.workflow),this.copyText="Copied",setTimeout((()=>{this.copyText="Copy"}),1500)}toggleView(){this.mobileDevice=!1,this.showPreview=!0}renderIframe(){return this.showPreview?N`<iframe
class=${st({embedded_workflow_iframe_node_view:this.fullscreen,embedded_workflow_iframe:!this.fullscreen})}
src=${this.src}
id="int_iframe"
></iframe>`:N``}connectedCallback(){super.connectedCallback(),this.workflow=decodeURIComponent(this.workflow),this.collapseForMobile&&window.matchMedia("only screen and (max-width: 760px)").matches&&(this.mobileDevice=!0,this.showPreview=!1),window.addEventListener("message",this.receiveMessage),document.addEventListener("scroll",this.onDocumentScroll)}disconnectedCallback(){window.removeEventListener("message",this.receiveMessage),document.removeEventListener("scroll",this.onDocumentScroll),super.disconnectedCallback()}render(){const t=this.frame&&!this.mobileDevice&&!this.error;return N`
const st=(t=>(...i)=>({_$litDirective$:t,values:i}))(class extends class{constructor(t){}get _$AU(){return this._$AM._$AU}_$AT(t,i,s){this._$Ct=t,this._$AM=i,this._$Ci=s}_$AS(t,i){return this.update(t,i)}update(t,i){return this.render(...i)}}{constructor(t){var i;if(super(t),t.type!==it||"class"!==t.name||(null===(i=t.strings)||void 0===i?void 0:i.length)>2)throw Error("`classMap()` can only be used in the `class` attribute and must be the only part in the attribute.")}render(t){return" "+Object.keys(t).filter((i=>t[i])).join(" ")+" "}update(t,[i]){var s,e;if(void 0===this.st){this.st=new Set,void 0!==t.strings&&(this.et=new Set(t.strings.join(" ").split(/\s/).filter((t=>""!==t))));for(const t in i)i[t]&&!(null===(s=this.et)||void 0===s?void 0:s.has(t))&&this.st.add(t);return this.render(i)}const o=t.element.classList;this.st.forEach((t=>{t in i||(o.remove(t),this.st.delete(t))}));for(const t in i){const s=!!i[t];s===this.st.has(t)||(null===(e=this.et)||void 0===e?void 0:e.has(t))||(s?(o.add(t),this.st.add(t)):(o.remove(t),this.st.delete(t)))}return N}});var et=function(t,i,s,e){for(var o,n=arguments.length,r=n<3?i:null===e?e=Object.getOwnPropertyDescriptor(i,s):e,h=t.length-1;h>=0;h--)(o=t[h])&&(r=(n<3?o(r):n>3?o(i,s,r):o(i,s))||r);return n>3&&r&&Object.defineProperty(i,s,r),r};function ot(t){try{JSON.parse(t)}catch(t){return!1}return!0}let nt=class extends Y{constructor(){super(...arguments),this.workflow="{}",this.frame="false",this.src="https://n8n-preview-service.internal.n8n.cloud/workflows/demo",this.collapseformobile="true",this.clicktointeract="false",this.showCode=!1,this.showPreview=!0,this.fullscreen=!1,this.insideIframe=!1,this.copyText="Copy",this.isMobileView=!1,this.error=!1,this.interactive=!0,this.scrollX=0,this.scrollY=0,this.receiveMessage=({data:t,source:i})=>{const s=this.shadowRoot.getElementById("int_iframe");if(ot(t)&&s.contentWindow===i){const i=JSON.parse(t);"n8nReady"===i.command?this.loadWorkflow():"openNDV"===i.command?this.fullscreen=!0:"closeNDV"===i.command?this.fullscreen=!1:"error"===i.command&&(this.error=!0,this.showPreview=!1)}},this.onDocumentScroll=()=>{this.interactive&&this.insideIframe&&!("ontouchstart"in window)&&!navigator.maxTouchPoints&&window.scrollTo(this.scrollX,this.scrollY)}}connectedCallback(){super.connectedCallback(),this.workflow=decodeURIComponent(this.workflow),"true"===this.clicktointeract&&(this.interactive=!1),window.matchMedia("only screen and (max-width: 760px)").matches&&(this.isMobileView=!0),"true"===this.collapseformobile&&this.isMobileView&&(this.showPreview=!1),window.addEventListener("message",this.receiveMessage),document.addEventListener("scroll",this.onDocumentScroll)}disconnectedCallback(){window.removeEventListener("message",this.receiveMessage),document.removeEventListener("scroll",this.onDocumentScroll),super.disconnectedCallback()}loadWorkflow(){try{const t=JSON.parse(this.workflow);if(!t)throw new Error("Missing workflow");if(!t.nodes||!Array.isArray(t.nodes))throw new Error("Must have an array of nodes");const i=this.shadowRoot.getElementById("int_iframe");i.contentWindow&&i.contentWindow.postMessage(JSON.stringify({command:"openWorkflow",workflow:t}),"*")}catch{this.error=!0}}toggleCode(){this.showCode=!this.showCode}onMouseEnter(){this.insideIframe=!0,this.scrollX=window.scrollX,this.scrollY=window.scrollY}onMouseLeave(){this.insideIframe=!1}onOverlayClick(){this.interactive=!0}copyClipboard(){navigator.clipboard.writeText(this.workflow),this.copyText="Copied",setTimeout((()=>{this.copyText="Copy"}),1500)}toggleView(){this.showPreview=!0}renderIframe(){if(!this.showPreview||this.error)return O``;const t=O`<iframe
class=${st({embedded_workflow_iframe_node_view:this.fullscreen,embedded_workflow_iframe:!this.fullscreen,non_interactive:!this.interactive})}
src=${this.src}
id="int_iframe"
></iframe>`,i=this.interactive?"":O`<div
class="overlay"
@click="${this.onOverlayClick}"
?hidden="${!(this.insideIframe||this.isMobileView)}"
>
<button>Click to explore</button>
</div>`;return O`<div class="canvas-container">${i}${t}</div>`}render(){const t="true"===this.frame&&this.showPreview&&!this.error;return O`
<div

@@ -69,19 +75,65 @@ class="${st({embedded_workflow:!0,frame:t})}"

>
<div class=${st({embedded_tip_error:!0})} ?hidden=${!this.mobileDevice}>
<button class='code_toggle' @click=${this.toggleView}>Show workflow</button>
</div>
${this.showPreview||this.error?"":O`<div
class=${st({embedded_tip_error:!0})}
?hidden=${this.showPreview||this.error}
>
<button class="code_toggle" @click=${this.toggleView}>
Show workflow
</button>
</div>`}
${this.renderIframe()}
<div class=${st({embedded_tip_error:!0,embedded_tip_error_with_code:this.showCode})} ?hidden=${!this.error}>
Could not load workflow preview. You can still <button class='code_toggle' @click=${this.toggleCode}>view the code</button> and paste it into n8n
</div>
<div class=${st({embedded_tip:!0,embedded_tip_with_code:this.showCode})} ?hidden=${!t}>
💡 Double-click a node to see its settings, or paste <button class='code_toggle' @click=${this.toggleCode}>this workflow's code</button> into n8n to import it
</div>
<div class="workflow_json" ?hidden=${!this.showCode}>
<div class="copy_button" @click=${this.copyClipboard}>${this.copyText}</div>
<pre class="json_renderer" id="json">${ot(this.workflow)?JSON.stringify(JSON.parse(this.workflow),void 0,2):"Invalid JSON"}
</pre>
</div>
${this.error?O`<div
class=${st({embedded_tip_error:!0,embedded_tip_error_with_code:this.showCode})}
>
Could not load workflow preview. You can still
<button class="code_toggle" @click=${this.toggleCode}>
view the code
</button>
and paste it into n8n
</div>`:""}
${t?O`<div
class=${st({embedded_tip:!0,embedded_tip_with_code:this.showCode})}
>
💡 Double-click a node to see its settings, or paste
<button class="code_toggle" @click=${this.toggleCode}>
this workflow's code
</button>
into n8n to import it
</div>`:""}
${this.showCode?O`<div class="workflow_json">
<div class="copy_button" @click=${this.copyClipboard}>
${this.copyText}
</div>
<pre class="json_renderer" id="json">
${ot(this.workflow)?JSON.stringify(JSON.parse(this.workflow),void 0,2):"Invalid JSON"}
</pre
>
</div>`:""}
</div>
`}};nt.styles=((t,...s)=>{const o=1===t.length?t[0]:s.reduce(((i,s,e)=>i+(t=>{if(!0===t._$cssResult$)return t.cssText;if("number"==typeof t)return t;throw Error("Value passed to 'css' function must be a 'css' function result: "+t+". Use 'unsafeCSS' to pass non-literal values, but take care to ensure page security.")})(s)+t[e+1]),t[0]);return new e(o,i)})`
:host {
--n8n-color-primary-h: 6.9;
--n8n-color-primary-s: 100%;
--n8n-color-primary-l: 67.6%;
--n8n-color-primary: hsl(
var(--n8n-color-primary-h),
var(--n8n-color-primary-s),
var(--n8n-color-primary-l)
);
}
*,
*::before,
*::after {
box-sizing: border-box;
}
button {
outline: none;
text-decoration: none;
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
-webkit-appearance: none;
}
.workflow_json {

@@ -93,6 +145,44 @@ height: 300px;

word-wrap: normal;
font-family: "Lucida Console", "Liberation Mono", "DejaVu Sans Mono", "Bitstream Vera Sans Mono", "Courier New", monospace;
font-family: 'Lucida Console', 'Liberation Mono', 'DejaVu Sans Mono',
'Bitstream Vera Sans Mono', 'Courier New', monospace;
font-size: 1.2em;
color: hsl(0, 0%, 20%);
}
.overlay {
height: 100%;
width: 100%;
position: absolute;
top: 0;
left: 0;
background: var(--n8n-overlay-background, hsla(232, 48%, 12%, 0.1));
display: flex;
align-items: center;
justify-content: center;
}
.overlay > button {
padding: 20px 40px;
border-radius: 8px;
font-weight: 600;
font-size: 18px;
line-height: 24px;
border: var(--n8n-overlay-border, none);
background-color: var(
--n8n-overlay-background-color,
var(--n8n-color-primary)
);
color: var(--n8n-interact-button-color, white);
}
.overlay > button:hover {
filter: brightness(85%);
cursor: pointer;
}
.canvas-container {
height: var(--n8n-workflow-min-height, 300px);
position: relative;
}
.embedded_workflow.frame {

@@ -102,2 +192,3 @@ padding: 10px;

}
.embedded_workflow .embedded_tip_error {

@@ -108,5 +199,7 @@ color: hsl(0, 0%, 40%);

}
.embedded_workflow .embedded_tip_error_with_code {
margin-bottom: 10px;
}
.embedded_workflow .embedded_tip {

@@ -118,2 +211,3 @@ margin-top: 7px;

}
.embedded_workflow .embedded_tip_with_code {

@@ -123,2 +217,3 @@ margin-top: 7px;

}
.embedded_workflow_iframe {

@@ -130,2 +225,3 @@ width: 100%;

}
.embedded_workflow_iframe_node_view {

@@ -139,16 +235,17 @@ position: fixed;

}
.code_toggle {
background: none;
border: none;
outline: none;
padding: 0px;
margin: -1px;
cursor: pointer;
color: hsl( 6.9, 100%, 67.6% );
font-size: 1.0em;
text-decoration: none;
color: var(--n8n-color-primary);
font-size: 1em;
}
.copy_button {
display: none; /* Hide button */
}
.workflow_json:hover .copy_button {

@@ -161,3 +258,3 @@ display: block;

padding: 5px;
font-family: "Arial", "sans-serif";
font-family: 'Arial', 'sans-serif';
font-size: 0.8em;

@@ -168,2 +265,6 @@ color: #646464;

}
`,et([Q({type:String})],nt.prototype,"workflow",void 0),et([Q({type:Boolean})],nt.prototype,"frame",void 0),et([Q({type:String})],nt.prototype,"src",void 0),et([Q({type:Boolean})],nt.prototype,"collapseForMobile",void 0),et([X()],nt.prototype,"showCode",void 0),et([X()],nt.prototype,"showPreview",void 0),et([X()],nt.prototype,"fullscreen",void 0),et([X()],nt.prototype,"insideIframe",void 0),et([X()],nt.prototype,"copyText",void 0),et([X()],nt.prototype,"mobileDevice",void 0),et([X()],nt.prototype,"error",void 0),nt=et([(t=>i=>"function"==typeof i?((t,i)=>(window.customElements.define(t,i),i))(t,i):((t,i)=>{const{kind:s,elements:e}=i;return{kind:s,elements:e,finisher(i){window.customElements.define(t,i)}}})(t,i))("n8n-demo")],nt);export{nt as N8NDemo};
.non_interactive {
pointer-events: none;
}
`,et([Q({type:String})],nt.prototype,"workflow",void 0),et([Q({type:String})],nt.prototype,"frame",void 0),et([Q({type:String})],nt.prototype,"src",void 0),et([Q({type:String})],nt.prototype,"collapseformobile",void 0),et([Q({type:String})],nt.prototype,"clicktointeract",void 0),et([X()],nt.prototype,"showCode",void 0),et([X()],nt.prototype,"showPreview",void 0),et([X()],nt.prototype,"fullscreen",void 0),et([X()],nt.prototype,"insideIframe",void 0),et([X()],nt.prototype,"copyText",void 0),et([X()],nt.prototype,"isMobileView",void 0),et([X()],nt.prototype,"error",void 0),et([X()],nt.prototype,"interactive",void 0),nt=et([(t=>i=>"function"==typeof i?((t,i)=>(window.customElements.define(t,i),i))(t,i):((t,i)=>{const{kind:s,elements:e}=i;return{kind:s,elements:e,finisher(i){window.customElements.define(t,i)}}})(t,i))("n8n-demo")],nt);export{nt as N8NDemo};

@@ -146,9 +146,9 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {

></iframe>`;
const showOverlay = !this.interactive && (this.insideIframe || this.isMobileView);
const overlay = html `<div
class="${classMap({ overlay: true, overlay__hidden: !showOverlay })}"
const overlay = !this.interactive ? html `<div
class="overlay"
@click="${this.onOverlayClick}"
?hidden="${!(this.insideIframe || this.isMobileView)}"
>
<button>Click to explore</button>
</div>`;
</div>` : '';
return html `<div class="canvas-container">${overlay}${canvas}</div>`;

@@ -167,3 +167,3 @@ }

>
<div
${!this.showPreview && !this.error ? html `<div
class=${classMap({

@@ -177,5 +177,5 @@ embedded_tip_error: true,

</button>
</div>
</div>` : ''}
${this.renderIframe()}
<div
${this.error ? html `<div
class=${classMap({

@@ -185,3 +185,2 @@ embedded_tip_error: true,

})}
?hidden=${!this.error}
>

@@ -193,4 +192,4 @@ Could not load workflow preview. You can still

and paste it into n8n
</div>
<div
</div>` : ''}
${showFrame ? html `<div
class=${classMap({

@@ -200,3 +199,2 @@ embedded_tip: true,

})}
?hidden=${!showFrame}
>

@@ -208,4 +206,4 @@ 💡 Double-click a node to see its settings, or paste

into n8n to import it
</div>
<div class="workflow_json" ?hidden=${!this.showCode}>
</div>` : ''}
${this.showCode ? html `<div class="workflow_json">
<div class="copy_button" @click=${this.copyClipboard}>

@@ -220,3 +218,3 @@ ${this.copyText}

>
</div>
</div>` : ''}
</div>

@@ -295,6 +293,2 @@ `;

.overlay__hidden {
display: none;
}
.canvas-container {

@@ -301,0 +295,0 @@ height: var(--n8n-workflow-min-height, 300px);

{
"name": "@n8n_io/n8n-demo-component",
"version": "1.0.10",
"version": "1.0.12",
"description": "web component for workflow previews",

@@ -9,3 +9,3 @@ "main": "n8n-demo.js",

"scripts": {
"build": "tsc",
"build": "tsc; rollup -c",
"build:watch": "tsc --watch",

@@ -12,0 +12,0 @@ "clean": "rimraf n8n-demo.{d.ts,d.ts.map,js,js.map} test/n8n-demo.{d.ts,d.ts.map,js,js.map} test/n8n-demo_test.{d.ts,d.ts.map,js,js.map}",

@@ -243,6 +243,2 @@ import {LitElement, html, css} from 'lit';

.overlay__hidden {
display: none;
}
.canvas-container {

@@ -344,10 +340,9 @@ height: var(--n8n-workflow-min-height, 300px);

const showOverlay =
!this.interactive && (this.insideIframe || this.isMobileView);
const overlay = html`<div
class="${classMap({overlay: true, overlay__hidden: !showOverlay})}"
const overlay = !this.interactive ? html`<div
class="overlay"
@click="${this.onOverlayClick}"
?hidden="${!(this.insideIframe || this.isMobileView)}"
>
<button>Click to explore</button>
</div>`;
</div>`: '';

@@ -368,3 +363,3 @@ return html`<div class="canvas-container">${overlay}${canvas}</div>`;

>
<div
${!this.showPreview && !this.error ? html`<div
class=${classMap({

@@ -378,5 +373,5 @@ embedded_tip_error: true,

</button>
</div>
</div>`: ''}
${this.renderIframe()}
<div
${this.error ? html`<div
class=${classMap({

@@ -386,3 +381,2 @@ embedded_tip_error: true,

})}
?hidden=${!this.error}
>

@@ -394,4 +388,5 @@ Could not load workflow preview. You can still

and paste it into n8n
</div>
<div
</div>`: ''
}
${showFrame ? html`<div
class=${classMap({

@@ -401,3 +396,2 @@ embedded_tip: true,

})}
?hidden=${!showFrame}
>

@@ -409,4 +403,4 @@ 💡 Double-click a node to see its settings, or paste

into n8n to import it
</div>
<div class="workflow_json" ?hidden=${!this.showCode}>
</div>`: ''}
${this.showCode? html`<div class="workflow_json">
<div class="copy_button" @click=${this.copyClipboard}>

@@ -421,3 +415,3 @@ ${this.copyText}

>
</div>
</div>`: ''}
</div>

@@ -424,0 +418,0 @@ `;

@@ -17,25 +17,118 @@ import {N8NDemo} from '../n8n-demo.js';

`
<h1>Hello, World!</h1>
<button part="button">Click Count: 0</button>
<slot></slot>
`
<div class="embedded_workflow">
<div class="canvas-container">
<iframe
class="embedded_workflow_iframe"
id="int_iframe"
src="https://n8n-preview-service.internal.n8n.cloud/workflows/demo"
>
</iframe>
</div>
</div>
`
);
});
test('renders with a set name', async () => {
const el = await fixture(html`<n8n-demo name="Test"></n8n-demo>`);
test('renders with overlay and non-interactive canvas', async () => {
const el = await fixture(
html`<n8n-demo clicktointeract="true"></n8n-demo>`
);
assert.shadowDom.equal(
el,
`
<h1>Hello, Test!</h1>
<button part="button">Click Count: 0</button>
<slot></slot>
`
<div class="embedded_workflow">
<div class="canvas-container">
<div
class="overlay"
hidden=""
>
<button>
Click to explore
</button>
</div>
<iframe
class="embedded_workflow_iframe non_interactive"
id="int_iframe"
src="https://n8n-preview-service.internal.n8n.cloud/workflows/demo"
>
</iframe>
</div>
</div>
`
);
});
test('handles a click', async () => {
const el = (await fixture(html`<n8n-demo></n8n-demo>`)) as N8NDemo;
const button = el.shadowRoot!.querySelector('button')!;
button.click();
test('renders with frame', async () => {
const el = await fixture(html`<n8n-demo frame="true"></n8n-demo>`);
assert.shadowDom.equal(
el,
`
<div class="embedded_workflow frame">
<div class="canvas-container">
<iframe
class="embedded_workflow_iframe"
id="int_iframe"
src="https://n8n-preview-service.internal.n8n.cloud/workflows/demo"
>
</iframe>
</div>
<div class="embedded_tip">
💡 Double-click a node to see its settings, or paste
<button class="code_toggle">
this workflow's code
</button>
into n8n to import it
</div>
</div>
`
);
});
test('renders with frame, overlay and non-interactive canvas', async () => {
const el = await fixture(
html`<n8n-demo frame="true" clicktointeract="true"></n8n-demo>`
);
assert.shadowDom.equal(
el,
`
<div class="embedded_workflow frame">
<div class="canvas-container">
<div
class="overlay"
hidden=""
>
<button>
Click to explore
</button>
</div>
<iframe
class="embedded_workflow_iframe non_interactive"
id="int_iframe"
src="https://n8n-preview-service.internal.n8n.cloud/workflows/demo"
>
</iframe>
</div>
<div class="embedded_tip">
💡 Double-click a node to see its settings, or paste
<button class="code_toggle">
this workflow's code
</button>
into n8n to import it
</div>
</div>
`
);
});
test('expands json on click', async () => {
const el = (await fixture(
html`<n8n-demo
workflow="%7B%22nodes%22%3A%20%5B%5D%7D"
frame="true"
></n8n-demo>`
)) as N8NDemo;
const button = el.shadowRoot!.querySelector('.embedded_tip > button')!;
if (button instanceof HTMLElement) {
button.click();
}
await el.updateComplete;

@@ -45,14 +138,135 @@ assert.shadowDom.equal(

`
<h1>Hello, World!</h1>
<button part="button">Click Count: 1</button>
<slot></slot>
`
<div class="embedded_workflow frame">
<div class="canvas-container">
<iframe
class="embedded_workflow_iframe"
id="int_iframe"
src="https://n8n-preview-service.internal.n8n.cloud/workflows/demo"
>
</iframe>
</div>
<div class="embedded_tip embedded_tip_with_code">
💡 Double-click a node to see its settings, or paste
<button class="code_toggle">
this workflow's code
</button>
into n8n to import it
</div>
<div class="workflow_json">
<div class="copy_button">
Copy
</div>
<pre
class="json_renderer"
id="json"
>
{
"nodes": []
}
</pre>
</div>
</div>
`
);
});
test('styling applied', async () => {
const el = (await fixture(html`<n8n-demo></n8n-demo>`)) as N8NDemo;
test('handles invalid json when expanding', async () => {
const el = (await fixture(
html`<n8n-demo workflow="invalid" frame="true"></n8n-demo>`
)) as N8NDemo;
const button = el.shadowRoot!.querySelector('.embedded_tip > button')!;
if (button instanceof HTMLElement) {
button.click();
}
await el.updateComplete;
assert.equal(getComputedStyle(el).paddingTop, '16px');
assert.shadowDom.equal(
el,
`
<div class="embedded_workflow frame">
<div class="canvas-container">
<iframe
class="embedded_workflow_iframe"
id="int_iframe"
src="https://n8n-preview-service.internal.n8n.cloud/workflows/demo"
>
</iframe>
</div>
<div class="embedded_tip embedded_tip_with_code">
💡 Double-click a node to see its settings, or paste
<button class="code_toggle">
this workflow's code
</button>
into n8n to import it
</div>
<div class="workflow_json">
<div class="copy_button">
Copy
</div>
<pre
class="json_renderer"
id="json"
>
Invalid JSON
</pre>
</div>
</div>
`
);
});
test('canvas is interactive after click ', async () => {
const el = (await fixture(
html`<n8n-demo clicktointeract="true"></n8n-demo>`
)) as N8NDemo;
assert.shadowDom.equal(
el,
`
<div class="embedded_workflow">
<div class="canvas-container">
<div
class="overlay"
hidden=""
>
<button>
Click to explore
</button>
</div>
<iframe
class="embedded_workflow_iframe non_interactive"
id="int_iframe"
src="https://n8n-preview-service.internal.n8n.cloud/workflows/demo"
>
</iframe>
</div>
</div>
`
);
const button = el.shadowRoot!.querySelector('.overlay > button')!;
if (button instanceof HTMLElement) {
button.click();
}
await el.updateComplete;
assert.shadowDom.equal(
el,
`
<div class="embedded_workflow">
<div class="canvas-container">
<iframe
class="embedded_workflow_iframe"
id="int_iframe"
src="https://n8n-preview-service.internal.n8n.cloud/workflows/demo"
>
</iframe>
</div>
</div>
`
);
});
// test('styling applied', async () => {
// const el = (await fixture(html`<n8n-demo></n8n-demo>`)) as N8NDemo;
// await el.updateComplete;
// assert.equal(getComputedStyle(el).paddingTop, '16px');
// });
});

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc