@n8n_io/n8n-demo-component
Advanced tools
Comparing version 1.0.10 to 1.0.12
@@ -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
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
New author
Supply chain riskA new npm collaborator published a version of the package for the first time. New collaborators are usually benign additions to a project, but do indicate a change to the security surface area of a package.
Found 1 instance in 1 package
3605565
99
6232
0