@tuongaz/seeflow 0.1.51 → 0.1.53
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
|
@@ -7835,4 +7835,4 @@ For more information, see https://radix-ui.com/primitives/docs/components/${t.do
|
|
|
7835
7835
|
`))}function l(p,k,v,w){const g=v.enter("tableCell"),M=v.enter("phrasing"),x=v.containerPhrasing(p,{...w,before:i,after:i});return M(),g(),x}function c(p,k){return Lxe(p,{align:k,alignDelimiters:r,padding:n,stringLength:o})}function h(p,k,v){const w=p.children;let g=-1;const M=[],x=k.enter("table");for(;++g<w.length;)M[g]=d(w[g],k,v);return x(),M}function d(p,k,v){const w=p.children;let g=-1;const M=[],x=k.enter("tableRow");for(;++g<w.length;)M[g]=l(w[g],p,k,v);return x(),M}function f(p,k,v){let w=DQ.inlineCode(p,k,v);return v.stack.includes("tableCell")&&(w=w.replace(/\|/g,"\\$&")),w}}function fve(){return{exit:{taskListCheckValueChecked:UV,taskListCheckValueUnchecked:UV,paragraph:yve}}}function pve(){return{unsafe:[{atBreak:!0,character:"-",after:"[:|-]"}],handlers:{listItem:mve}}}function UV(e){const t=this.stack[this.stack.length-2];t.type,t.checked=e.type==="taskListCheckValueChecked"}function yve(e){const t=this.stack[this.stack.length-2];if(t&&t.type==="listItem"&&typeof t.checked=="boolean"){const n=this.stack[this.stack.length-1];n.type;const r=n.children[0];if(r&&r.type==="text"){const o=t.children;let i=-1,a;for(;++i<o.length;){const s=o[i];if(s.type==="paragraph"){a=s;break}}a===n&&(r.value=r.value.slice(1),r.value.length===0?n.children.shift():n.position&&r.position&&typeof r.position.start.offset=="number"&&(r.position.start.column++,r.position.start.offset++,n.position.start=Object.assign({},r.position.start)))}}this.exit(e)}function mve(e,t,n,r){const o=e.children[0],i=typeof e.checked=="boolean"&&o&&o.type==="paragraph",a="["+(e.checked?"x":" ")+"] ",s=n.createTracker(r);i&&s.move(a);let l=DQ.listItem(e,t,n,{...r,...s.current()});return i&&(l=l.replace(/^(?:[*+-]|\d+\.)([\r\n]| {1,3})/,c)),l;function c(h){return h+a}}function kve(){return[K5e(),mxe(),vxe(),ave(),fve()]}function gve(e){return{extensions:[X5e(),kxe(e),wxe(),hve(e),pve()]}}const xve={tokenize:Sve,partial:!0},_Q={tokenize:Lve,partial:!0},HQ={tokenize:Ive,partial:!0},FQ={tokenize:Eve,partial:!0},vve={tokenize:Ave,partial:!0},OQ={name:"wwwAutolink",tokenize:bve,previous:VQ},qQ={name:"protocolAutolink",tokenize:Cve,previous:BQ},Qo={name:"emailAutolink",tokenize:Mve,previous:$Q},wo={};function wve(){return{text:wo}}let la=48;for(;la<123;)wo[la]=Qo,la++,la===58?la=65:la===91&&(la=97);wo[43]=Qo;wo[45]=Qo;wo[46]=Qo;wo[95]=Qo;wo[72]=[Qo,qQ];wo[104]=[Qo,qQ];wo[87]=[Qo,OQ];wo[119]=[Qo,OQ];function Mve(e,t,n){const r=this;let o,i;return a;function a(d){return!JN(d)||!$Q.call(r,r.previous)||vH(r.events)?n(d):(e.enter("literalAutolink"),e.enter("literalAutolinkEmail"),s(d))}function s(d){return JN(d)?(e.consume(d),s):d===64?(e.consume(d),l):n(d)}function l(d){return d===46?e.check(vve,h,c)(d):d===45||d===95||tn(d)?(i=!0,e.consume(d),l):h(d)}function c(d){return e.consume(d),o=!0,l}function h(d){return i&&o&&cn(r.previous)?(e.exit("literalAutolinkEmail"),e.exit("literalAutolink"),t(d)):n(d)}}function bve(e,t,n){const r=this;return o;function o(a){return a!==87&&a!==119||!VQ.call(r,r.previous)||vH(r.events)?n(a):(e.enter("literalAutolink"),e.enter("literalAutolinkWww"),e.check(xve,e.attempt(_Q,e.attempt(HQ,i),n),n)(a))}function i(a){return e.exit("literalAutolinkWww"),e.exit("literalAutolink"),t(a)}}function Cve(e,t,n){const r=this;let o="",i=!1;return a;function a(d){return(d===72||d===104)&&BQ.call(r,r.previous)&&!vH(r.events)?(e.enter("literalAutolink"),e.enter("literalAutolinkHttp"),o+=String.fromCodePoint(d),e.consume(d),s):n(d)}function s(d){if(cn(d)&&o.length<5)return o+=String.fromCodePoint(d),e.consume(d),s;if(d===58){const f=o.toLowerCase();if(f==="http"||f==="https")return e.consume(d),l}return n(d)}function l(d){return d===47?(e.consume(d),i?c:(i=!0,l)):n(d)}function c(d){return d===null||xR(d)||ut(d)||i1(d)||Az(d)?n(d):e.attempt(_Q,e.attempt(HQ,h),n)(d)}function h(d){return e.exit("literalAutolinkHttp"),e.exit("literalAutolink"),t(d)}}function Sve(e,t,n){let r=0;return o;function o(a){return(a===87||a===119)&&r<3?(r++,e.consume(a),o):a===46&&r===3?(e.consume(a),i):n(a)}function i(a){return a===null?n(a):t(a)}}function Lve(e,t,n){let r,o,i;return a;function a(c){return c===46||c===95?e.check(FQ,l,s)(c):c===null||ut(c)||i1(c)||c!==45&&Az(c)?l(c):(i=!0,e.consume(c),a)}function s(c){return c===95?r=!0:(o=r,r=void 0),e.consume(c),a}function l(c){return o||r||!i?n(c):t(c)}}function Ive(e,t){let n=0,r=0;return o;function o(a){return a===40?(n++,e.consume(a),o):a===41&&r<n?i(a):a===33||a===34||a===38||a===39||a===41||a===42||a===44||a===46||a===58||a===59||a===60||a===63||a===93||a===95||a===126?e.check(FQ,t,i)(a):a===null||ut(a)||i1(a)?t(a):(e.consume(a),o)}function i(a){return a===41&&r++,e.consume(a),o}}function Eve(e,t,n){return r;function r(s){return s===33||s===34||s===39||s===41||s===42||s===44||s===46||s===58||s===59||s===63||s===95||s===126?(e.consume(s),r):s===38?(e.consume(s),i):s===93?(e.consume(s),o):s===60||s===null||ut(s)||i1(s)?t(s):n(s)}function o(s){return s===null||s===40||s===91||ut(s)||i1(s)?t(s):r(s)}function i(s){return cn(s)?a(s):n(s)}function a(s){return s===59?(e.consume(s),r):cn(s)?(e.consume(s),a):n(s)}}function Ave(e,t,n){return r;function r(i){return e.consume(i),o}function o(i){return tn(i)?n(i):t(i)}}function VQ(e){return e===null||e===40||e===42||e===95||e===91||e===93||e===126||ut(e)}function BQ(e){return!cn(e)}function $Q(e){return!(e===47||JN(e))}function JN(e){return e===43||e===45||e===46||e===95||tn(e)}function vH(e){let t=e.length,n=!1;for(;t--;){const r=e[t][1];if((r.type==="labelLink"||r.type==="labelImage")&&!r._balanced){n=!0;break}if(r._gfmAutolinkLiteralWalkedInto){n=!1;break}}return e.length>0&&!n&&(e[e.length-1][1]._gfmAutolinkLiteralWalkedInto=!0),n}const Pve={tokenize:Hve,partial:!0};function Rve(){return{document:{91:{name:"gfmFootnoteDefinition",tokenize:Nve,continuation:{tokenize:Dve},exit:_ve}},text:{91:{name:"gfmFootnoteCall",tokenize:Tve},93:{name:"gfmPotentialFootnoteCall",add:"after",tokenize:zve,resolveTo:jve}}}}function zve(e,t,n){const r=this;let o=r.events.length;const i=r.parser.gfmFootnotes||(r.parser.gfmFootnotes=[]);let a;for(;o--;){const l=r.events[o][1];if(l.type==="labelImage"){a=l;break}if(l.type==="gfmFootnoteCall"||l.type==="labelLink"||l.type==="label"||l.type==="image"||l.type==="link")break}return s;function s(l){if(!a||!a._balanced)return n(l);const c=Pr(r.sliceSerialize({start:a.end,end:r.now()}));return c.codePointAt(0)!==94||!i.includes(c.slice(1))?n(l):(e.enter("gfmFootnoteCallLabelMarker"),e.consume(l),e.exit("gfmFootnoteCallLabelMarker"),t(l))}}function jve(e,t){let n=e.length;for(;n--;)if(e[n][1].type==="labelImage"&&e[n][0]==="enter"){e[n][1];break}e[n+1][1].type="data",e[n+3][1].type="gfmFootnoteCallLabelMarker";const r={type:"gfmFootnoteCall",start:Object.assign({},e[n+3][1].start),end:Object.assign({},e[e.length-1][1].end)},o={type:"gfmFootnoteCallMarker",start:Object.assign({},e[n+3][1].end),end:Object.assign({},e[n+3][1].end)};o.end.column++,o.end.offset++,o.end._bufferIndex++;const i={type:"gfmFootnoteCallString",start:Object.assign({},o.end),end:Object.assign({},e[e.length-1][1].start)},a={type:"chunkString",contentType:"string",start:Object.assign({},i.start),end:Object.assign({},i.end)},s=[e[n+1],e[n+2],["enter",r,t],e[n+3],e[n+4],["enter",o,t],["exit",o,t],["enter",i,t],["enter",a,t],["exit",a,t],["exit",i,t],e[e.length-2],e[e.length-1],["exit",r,t]];return e.splice(n,e.length-n+1,...s),e}function Tve(e,t,n){const r=this,o=r.parser.gfmFootnotes||(r.parser.gfmFootnotes=[]);let i=0,a;return s;function s(d){return e.enter("gfmFootnoteCall"),e.enter("gfmFootnoteCallLabelMarker"),e.consume(d),e.exit("gfmFootnoteCallLabelMarker"),l}function l(d){return d!==94?n(d):(e.enter("gfmFootnoteCallMarker"),e.consume(d),e.exit("gfmFootnoteCallMarker"),e.enter("gfmFootnoteCallString"),e.enter("chunkString").contentType="string",c)}function c(d){if(i>999||d===93&&!a||d===null||d===91||ut(d))return n(d);if(d===93){e.exit("chunkString");const f=e.exit("gfmFootnoteCallString");return o.includes(Pr(r.sliceSerialize(f)))?(e.enter("gfmFootnoteCallLabelMarker"),e.consume(d),e.exit("gfmFootnoteCallLabelMarker"),e.exit("gfmFootnoteCall"),t):n(d)}return ut(d)||(a=!0),i++,e.consume(d),d===92?h:c}function h(d){return d===91||d===92||d===93?(e.consume(d),i++,c):c(d)}}function Nve(e,t,n){const r=this,o=r.parser.gfmFootnotes||(r.parser.gfmFootnotes=[]);let i,a=0,s;return l;function l(k){return e.enter("gfmFootnoteDefinition")._container=!0,e.enter("gfmFootnoteDefinitionLabel"),e.enter("gfmFootnoteDefinitionLabelMarker"),e.consume(k),e.exit("gfmFootnoteDefinitionLabelMarker"),c}function c(k){return k===94?(e.enter("gfmFootnoteDefinitionMarker"),e.consume(k),e.exit("gfmFootnoteDefinitionMarker"),e.enter("gfmFootnoteDefinitionLabelString"),e.enter("chunkString").contentType="string",h):n(k)}function h(k){if(a>999||k===93&&!s||k===null||k===91||ut(k))return n(k);if(k===93){e.exit("chunkString");const v=e.exit("gfmFootnoteDefinitionLabelString");return i=Pr(r.sliceSerialize(v)),e.enter("gfmFootnoteDefinitionLabelMarker"),e.consume(k),e.exit("gfmFootnoteDefinitionLabelMarker"),e.exit("gfmFootnoteDefinitionLabel"),f}return ut(k)||(s=!0),a++,e.consume(k),k===92?d:h}function d(k){return k===91||k===92||k===93?(e.consume(k),a++,h):h(k)}function f(k){return k===58?(e.enter("definitionMarker"),e.consume(k),e.exit("definitionMarker"),o.includes(i)||o.push(i),Xe(e,p,"gfmFootnoteDefinitionWhitespace")):n(k)}function p(k){return t(k)}}function Dve(e,t,n){return e.check(Gh,t,e.attempt(Pve,t,n))}function _ve(e){e.exit("gfmFootnoteDefinition")}function Hve(e,t,n){const r=this;return Xe(e,o,"gfmFootnoteDefinitionIndent",5);function o(i){const a=r.events[r.events.length-1];return a&&a[1].type==="gfmFootnoteDefinitionIndent"&&a[2].sliceSerialize(a[1],!0).length===4?t(i):n(i)}}function Fve(e){let n=(e||{}).singleTilde;const r={name:"strikethrough",tokenize:i,resolveAll:o};return n==null&&(n=!0),{text:{126:r},insideSpan:{null:[r]},attentionMarkers:{null:[126]}};function o(a,s){let l=-1;for(;++l<a.length;)if(a[l][0]==="enter"&&a[l][1].type==="strikethroughSequenceTemporary"&&a[l][1]._close){let c=l;for(;c--;)if(a[c][0]==="exit"&&a[c][1].type==="strikethroughSequenceTemporary"&&a[c][1]._open&&a[l][1].end.offset-a[l][1].start.offset===a[c][1].end.offset-a[c][1].start.offset){a[l][1].type="strikethroughSequence",a[c][1].type="strikethroughSequence";const h={type:"strikethrough",start:Object.assign({},a[c][1].start),end:Object.assign({},a[l][1].end)},d={type:"strikethroughText",start:Object.assign({},a[c][1].end),end:Object.assign({},a[l][1].start)},f=[["enter",h,s],["enter",a[c][1],s],["exit",a[c][1],s],["enter",d,s]],p=s.parser.constructs.insideSpan.null;p&&Gn(f,f.length,0,Pz(p,a.slice(c+1,l),s)),Gn(f,f.length,0,[["exit",d,s],["enter",a[l][1],s],["exit",a[l][1],s],["exit",h,s]]),Gn(a,c-1,l-c+3,f),l=c+f.length-2;break}}for(l=-1;++l<a.length;)a[l][1].type==="strikethroughSequenceTemporary"&&(a[l][1].type="data");return a}function i(a,s,l){const c=this.previous,h=this.events;let d=0;return f;function f(k){return c===126&&h[h.length-1][1].type!=="characterEscape"?l(k):(a.enter("strikethroughSequenceTemporary"),p(k))}function p(k){const v=Ou(c);if(k===126)return d>1?l(k):(a.consume(k),d++,p);if(d<2&&!n)return l(k);const w=a.exit("strikethroughSequenceTemporary"),g=Ou(k);return w._open=!g||g===2&&!!v,w._close=!v||v===2&&!!g,s(k)}}}class Ove{constructor(){this.map=[]}add(t,n,r){qve(this,t,n,r)}consume(t){if(this.map.sort(function(i,a){return i[0]-a[0]}),this.map.length===0)return;let n=this.map.length;const r=[];for(;n>0;)n-=1,r.push(t.slice(this.map[n][0]+this.map[n][1]),this.map[n][2]),t.length=this.map[n][0];r.push(t.slice()),t.length=0;let o=r.pop();for(;o;){for(const i of o)t.push(i);o=r.pop()}this.map.length=0}}function qve(e,t,n,r){let o=0;if(!(n===0&&r.length===0)){for(;o<e.map.length;){if(e.map[o][0]===t){e.map[o][1]+=n,e.map[o][2].push(...r);return}o+=1}e.map.push([t,n,r])}}function Vve(e,t){let n=!1;const r=[];for(;t<e.length;){const o=e[t];if(n){if(o[0]==="enter")o[1].type==="tableContent"&&r.push(e[t+1][1].type==="tableDelimiterMarker"?"left":"none");else if(o[1].type==="tableContent"){if(e[t-1][1].type==="tableDelimiterMarker"){const i=r.length-1;r[i]=r[i]==="left"?"center":"right"}}else if(o[1].type==="tableDelimiterRow")break}else o[0]==="enter"&&o[1].type==="tableDelimiterRow"&&(n=!0);t+=1}return r}function Bve(){return{flow:{null:{name:"table",tokenize:$ve,resolveAll:Uve}}}}function $ve(e,t,n){const r=this;let o=0,i=0,a;return s;function s(E){let z=r.events.length-1;for(;z>-1;){const R=r.events[z][1].type;if(R==="lineEnding"||R==="linePrefix")z--;else break}const A=z>-1?r.events[z][1].type:null,U=A==="tableHead"||A==="tableRow"?C:l;return U===C&&r.parser.lazy[r.now().line]?n(E):U(E)}function l(E){return e.enter("tableHead"),e.enter("tableRow"),c(E)}function c(E){return E===124||(a=!0,i+=1),h(E)}function h(E){return E===null?n(E):je(E)?i>1?(i=0,r.interrupt=!0,e.exit("tableRow"),e.enter("lineEnding"),e.consume(E),e.exit("lineEnding"),p):n(E):Ge(E)?Xe(e,h,"whitespace")(E):(i+=1,a&&(a=!1,o+=1),E===124?(e.enter("tableCellDivider"),e.consume(E),e.exit("tableCellDivider"),a=!0,h):(e.enter("data"),d(E)))}function d(E){return E===null||E===124||ut(E)?(e.exit("data"),h(E)):(e.consume(E),E===92?f:d)}function f(E){return E===92||E===124?(e.consume(E),d):d(E)}function p(E){return r.interrupt=!1,r.parser.lazy[r.now().line]?n(E):(e.enter("tableDelimiterRow"),a=!1,Ge(E)?Xe(e,k,"linePrefix",r.parser.constructs.disable.null.includes("codeIndented")?void 0:4)(E):k(E))}function k(E){return E===45||E===58?w(E):E===124?(a=!0,e.enter("tableCellDivider"),e.consume(E),e.exit("tableCellDivider"),v):S(E)}function v(E){return Ge(E)?Xe(e,w,"whitespace")(E):w(E)}function w(E){return E===58?(i+=1,a=!0,e.enter("tableDelimiterMarker"),e.consume(E),e.exit("tableDelimiterMarker"),g):E===45?(i+=1,g(E)):E===null||je(E)?b(E):S(E)}function g(E){return E===45?(e.enter("tableDelimiterFiller"),M(E)):S(E)}function M(E){return E===45?(e.consume(E),M):E===58?(a=!0,e.exit("tableDelimiterFiller"),e.enter("tableDelimiterMarker"),e.consume(E),e.exit("tableDelimiterMarker"),x):(e.exit("tableDelimiterFiller"),x(E))}function x(E){return Ge(E)?Xe(e,b,"whitespace")(E):b(E)}function b(E){return E===124?k(E):E===null||je(E)?!a||o!==i?S(E):(e.exit("tableDelimiterRow"),e.exit("tableHead"),t(E)):S(E)}function S(E){return n(E)}function C(E){return e.enter("tableRow"),L(E)}function L(E){return E===124?(e.enter("tableCellDivider"),e.consume(E),e.exit("tableCellDivider"),L):E===null||je(E)?(e.exit("tableRow"),t(E)):Ge(E)?Xe(e,L,"whitespace")(E):(e.enter("data"),P(E))}function P(E){return E===null||E===124||ut(E)?(e.exit("data"),L(E)):(e.consume(E),E===92?T:P)}function T(E){return E===92||E===124?(e.consume(E),P):P(E)}}function Uve(e,t){let n=-1,r=!0,o=0,i=[0,0,0,0],a=[0,0,0,0],s=!1,l=0,c,h,d;const f=new Ove;for(;++n<e.length;){const p=e[n],k=p[1];p[0]==="enter"?k.type==="tableHead"?(s=!1,l!==0&&(WV(f,t,l,c,h),h=void 0,l=0),c={type:"table",start:Object.assign({},k.start),end:Object.assign({},k.end)},f.add(n,0,[["enter",c,t]])):k.type==="tableRow"||k.type==="tableDelimiterRow"?(r=!0,d=void 0,i=[0,0,0,0],a=[0,n+1,0,0],s&&(s=!1,h={type:"tableBody",start:Object.assign({},k.start),end:Object.assign({},k.end)},f.add(n,0,[["enter",h,t]])),o=k.type==="tableDelimiterRow"?2:h?3:1):o&&(k.type==="data"||k.type==="tableDelimiterMarker"||k.type==="tableDelimiterFiller")?(r=!1,a[2]===0&&(i[1]!==0&&(a[0]=a[1],d=W0(f,t,i,o,void 0,d),i=[0,0,0,0]),a[2]=n)):k.type==="tableCellDivider"&&(r?r=!1:(i[1]!==0&&(a[0]=a[1],d=W0(f,t,i,o,void 0,d)),i=a,a=[i[1],n,0,0])):k.type==="tableHead"?(s=!0,l=n):k.type==="tableRow"||k.type==="tableDelimiterRow"?(l=n,i[1]!==0?(a[0]=a[1],d=W0(f,t,i,o,n,d)):a[1]!==0&&(d=W0(f,t,a,o,n,d)),o=0):o&&(k.type==="data"||k.type==="tableDelimiterMarker"||k.type==="tableDelimiterFiller")&&(a[3]=n)}for(l!==0&&WV(f,t,l,c,h),f.consume(t.events),n=-1;++n<t.events.length;){const p=t.events[n];p[0]==="enter"&&p[1].type==="table"&&(p[1]._align=Vve(t.events,n))}return e}function W0(e,t,n,r,o,i){const a=r===1?"tableHeader":r===2?"tableDelimiter":"tableData",s="tableContent";n[0]!==0&&(i.end=Object.assign({},N1(t.events,n[0])),e.add(n[0],0,[["exit",i,t]]));const l=N1(t.events,n[1]);if(i={type:a,start:Object.assign({},l),end:Object.assign({},l)},e.add(n[1],0,[["enter",i,t]]),n[2]!==0){const c=N1(t.events,n[2]),h=N1(t.events,n[3]),d={type:s,start:Object.assign({},c),end:Object.assign({},h)};if(e.add(n[2],0,[["enter",d,t]]),r!==2){const f=t.events[n[2]],p=t.events[n[3]];if(f[1].end=Object.assign({},p[1].end),f[1].type="chunkText",f[1].contentType="text",n[3]>n[2]+1){const k=n[2]+1,v=n[3]-n[2]-1;e.add(k,v,[])}}e.add(n[3]+1,0,[["exit",d,t]])}return o!==void 0&&(i.end=Object.assign({},N1(t.events,o)),e.add(o,0,[["exit",i,t]]),i=void 0),i}function WV(e,t,n,r,o){const i=[],a=N1(t.events,n);o&&(o.end=Object.assign({},a),i.push(["exit",o,t])),r.end=Object.assign({},a),i.push(["exit",r,t]),e.add(n+1,0,i)}function N1(e,t){const n=e[t],r=n[0]==="enter"?"start":"end";return n[1][r]}const Wve={name:"tasklistCheck",tokenize:Zve};function Gve(){return{text:{91:Wve}}}function Zve(e,t,n){const r=this;return o;function o(l){return r.previous!==null||!r._gfmTasklistFirstContentOfListItem?n(l):(e.enter("taskListCheck"),e.enter("taskListCheckMarker"),e.consume(l),e.exit("taskListCheckMarker"),i)}function i(l){return ut(l)?(e.enter("taskListCheckValueUnchecked"),e.consume(l),e.exit("taskListCheckValueUnchecked"),a):l===88||l===120?(e.enter("taskListCheckValueChecked"),e.consume(l),e.exit("taskListCheckValueChecked"),a):n(l)}function a(l){return l===93?(e.enter("taskListCheckMarker"),e.consume(l),e.exit("taskListCheckMarker"),e.exit("taskListCheck"),s):n(l)}function s(l){return je(l)?t(l):Ge(l)?e.check({tokenize:Kve},t,n)(l):n(l)}}function Kve(e,t,n){return Xe(e,r,"whitespace");function r(o){return o===null?n(o):t(o)}}function Xve(e){return eQ([wve(),Rve(),Fve(e),Bve(),Gve()])}const Yve={};function Qve(e){const t=this,n=e||Yve,r=t.data(),o=r.micromarkExtensions||(r.micromarkExtensions=[]),i=r.fromMarkdownExtensions||(r.fromMarkdownExtensions=[]),a=r.toMarkdownExtensions||(r.toMarkdownExtensions=[]);o.push(Xve(n)),i.push(kve()),a.push(gve(n))}function Jve({flowId:e,node:t,connector:n,adapter:r,onNameChange:o,onDescriptionChange:i,onDetailChange:a,onIconChange:s,statusReport:l,onClose:c}){const h=(t==null?void 0:t.type)==="shapeNode"&&t.data.shape==="text",d=(t==null?void 0:t.type)==="shapeNode"?t.data.shape:void 0,f=d==="ellipse"||d==="sticky",p=h?null:t,k=p!==null||n!==null,v=p&&"name"in p.data?p.data.name??"":"",w=(p==null?void 0:p.data.description)??"",g=(p==null?void 0:p.data.detail)??"",M=p!==null&&!f,x=p!==null&&(p.type==="playNode"||p.type==="stateNode"),b=x&&typeof s=="function",S=x&&p&&"icon"in p.data?p.data.icon??null:null,[C,L]=m.useState(()=>J1e()),P=E=>{E.preventDefault(),tue(C,E.clientX,{onWidth:L,onCommit:eue})},T={"--detail-panel-w":`${C}px`};return y.jsx(Rye,{open:k,modal:!1,onOpenChange:E=>{E||c()},children:y.jsxs(lY,{side:"right",className:"sf:w-full! sf:max-w-full! sf:overflow-y-auto sf:bg-card/94 sf:backdrop-blur-[14px] sf:border-border sf:shadow-[-12px_0_40px_-12px_rgba(0,0,0,0.6)] sf:sm:w-(--detail-panel-w)! sf:sm:max-w-(--detail-panel-w)!",style:T,"data-testid":"detail-panel",onEscapeKeyDown:E=>{var A;const z=document.activeElement;(A=z==null?void 0:z.getAttribute("data-testid"))!=null&&A.endsWith("-editor")&&E.preventDefault()},onInteractOutside:E=>{var U;const z=document.activeElement;(U=z==null?void 0:z.getAttribute("data-testid"))!=null&&U.endsWith("-editor")&&z.blur();const A=E.target;A!=null&&A.closest(".react-flow__resize-control")&&E.preventDefault(),A!=null&&A.closest("[data-radix-popper-content-wrapper]")&&E.preventDefault(),A!=null&&A.closest('[data-testid="canvas-style-strip"]')&&E.preventDefault(),A!=null&&A.closest(".react-flow__node")&&E.preventDefault(),A!=null&&A.closest(".react-flow__edge")&&E.preventDefault()},children:[y.jsx("div",{"aria-label":"Resize detail panel",onPointerDown:P,"data-testid":"detail-panel-resize-handle",className:"sf:absolute sf:inset-y-0 sf:left-0 sf:z-10 sf:hidden sf:w-1.5 sf:cursor-col-resize sf:bg-transparent sf:transition-colors sf:hover:bg-border sf:sm:block"}),p?y.jsxs("div",{className:"sf:flex sf:flex-col sf:gap-4",children:[y.jsxs("div",{className:"sf:-mx-6 sf:-mt-6 sf:flex sf:flex-col sf:border-b sf:border-border/60 sf:bg-card/60 sf:px-6 sf:pb-2.5 sf:pt-3 sf:pr-12",children:[M?y.jsx(bP,{"data-testid":"detail-panel-title",children:y.jsxs("div",{className:"sf:flex sf:items-center sf:gap-2",children:[b&&s?y.jsx(e3e,{nodeId:p.id,icon:S,onChange:s}):x&&S?y.jsx("span",{"data-testid":"detail-panel-icon-readonly","aria-hidden":!0,className:"sf:inline-flex sf:h-7 sf:w-7 sf:shrink-0 sf:items-center sf:justify-center sf:text-foreground/90",children:y.jsx(t1,{name:S,size:16})}):null,y.jsx("div",{className:"sf:min-w-0 sf:flex-1",children:y.jsx(rT,{nodeId:p.id,value:v,placeholder:"Name",multiline:!1,ariaLabel:"Name",testIdBase:"detail-panel-name",onSave:o,textClassName:"sf:text-lg sf:font-semibold sf:tracking-tight sf:text-foreground/95"})})]})}):y.jsx(bP,{"data-testid":"detail-panel-title",className:"sf:sr-only",children:p.id}),y.jsxs(_N,{className:"sf:sr-only",children:[p.id," · ",p.type]})]}),y.jsxs("div",{className:"sf:mt-0 sf:flex sf:flex-col sf:gap-3",children:[l?y.jsx(o3e,{report:l}):null,y.jsx(rT,{nodeId:p.id,value:w,placeholder:"Short description shown on the node body",multiline:!0,ariaLabel:"Description",testIdBase:"detail-panel-description",onSave:i,textClassName:"sf:text-[13px] sf:leading-relaxed sf:text-muted-foreground"}),y.jsx(rT,{nodeId:p.id,value:g,placeholder:"Long-form notes, context, anything…",multiline:!0,ariaLabel:"Detail",testIdBase:"detail-panel-detail",onSave:a,markdown:!0,textClassName:"sf:text-sm sf:leading-relaxed sf:text-foreground/90"}),p.type==="htmlNode"&&e?y.jsx(t3e,{adapter:r,nodeId:p.id,htmlPath:"view.html"}):null]})]}):n?y.jsxs("div",{className:"sf:flex sf:flex-col sf:gap-4",children:[y.jsxs("div",{className:"sf:-mx-6 sf:-mt-6 sf:flex sf:flex-col sf:border-b sf:border-border/60 sf:bg-card/60 sf:px-6 sf:pb-2.5 sf:pt-3 sf:pr-12",children:[y.jsx(bP,{"data-testid":"detail-panel-title",className:"sf:text-lg sf:font-semibold sf:tracking-tight sf:text-foreground/95",children:n.label??"Connector"}),y.jsxs(_N,{className:"sf:sr-only",children:[n.id," · ",n.kind]})]}),y.jsx("div",{className:"sf:mt-0 sf:flex sf:flex-col sf:gap-3",children:y.jsx(i3e,{connector:n})})]}):null]})})}function rT({nodeId:e,value:t,placeholder:n,multiline:r,ariaLabel:o,testIdBase:i,onSave:a,textClassName:s,markdown:l=!1}){const[c,h]=m.useState(!1),d=m.useRef(null),f=m.useRef(!1);m.useEffect(()=>{if(!c)return;const S=d.current;if(!S)return;S.textContent=t,S.focus();const C=window.getSelection();if(C){const L=document.createRange();L.selectNodeContents(S),L.collapse(!1),C.removeAllRanges(),C.addRange(L)}},[c,t]);const p=t==="";if(!a)return y.jsx("div",{"data-testid":i,"aria-label":o,className:ie("sf:w-full sf:rounded-md sf:px-2 sf:py-1.5 sf:text-sm",p?"sf:italic sf:text-muted-foreground/50":"text-foreground",!l&&"sf:whitespace-pre-wrap sf:wrap-break-word",s),children:p?n:l?y.jsx(GV,{value:t}):t});const k=()=>{var C;const S=((C=d.current)==null?void 0:C.textContent)??t;a(e,S),h(!1)},v=()=>{h(!1)},w=S=>{if(S.stopPropagation(),S.nativeEvent.stopPropagation(),S.key==="Escape"){S.preventDefault(),f.current=!0,v();return}if(S.key==="Enter"){if(S.preventDefault(),S.shiftKey||!r){k();return}document.execCommand("insertText",!1,`
|
|
7836
7836
|
`)}},g=S=>{S.preventDefault();const C=S.clipboardData.getData("text/plain");document.execCommand("insertText",!1,C)},M=S=>{},x=()=>{if(f.current){f.current=!1;return}k()},b=()=>{c||h(!0)};return y.jsx("div",{className:"relative","data-testid":i,"data-editing":c?"true":"false",children:c?y.jsx("div",{ref:d,contentEditable:"plaintext-only",suppressContentEditableWarning:!0,spellCheck:!1,tabIndex:0,onKeyDown:w,onPaste:g,onInput:M,onBlur:x,"data-testid":`${i}-editor`,className:ie("sf:block sf:w-full sf:whitespace-pre-wrap sf:wrap-break-word sf:rounded-md sf:px-2 sf:py-1.5 sf:text-sm sf:outline-hidden",s),role:"textbox","aria-multiline":r?"true":"false","aria-label":o}):y.jsx("button",{type:"button",onClick:b,"aria-label":`Edit ${o.toLowerCase()}`,className:ie("sf:block sf:w-full sf:cursor-text sf:rounded-md sf:px-2 sf:py-1.5 sf:text-left sf:text-sm sf:transition-colors sf:hover:bg-muted/50",p?"sf:italic sf:text-muted-foreground/50":"text-foreground",!l&&"sf:whitespace-pre-wrap sf:wrap-break-word",s),children:p?n:l?y.jsx(GV,{value:t}):t})})}function e3e({nodeId:e,icon:t,onChange:n}){const[r,o]=m.useState(!1);return y.jsx(uz,{open:r,onOpenChange:o,onPick:i=>{n(e,i),o(!1)},anchor:y.jsx("button",{type:"button","data-testid":"detail-panel-icon-trigger","aria-label":t?"Change icon":"Add icon","aria-pressed":r,className:ie("sf:inline-flex sf:h-7 sf:w-7 sf:shrink-0 sf:items-center sf:justify-center sf:rounded-md sf:text-foreground sf:transition-colors",t?"sf:hover:bg-muted":"sf:border sf:border-dashed sf:border-muted-foreground/40 sf:text-muted-foreground/60 sf:hover:border-muted-foreground sf:hover:text-foreground","sf:focus-visible:outline-hidden sf:focus-visible:ring-2 sf:focus-visible:ring-ring sf:focus-visible:ring-offset-1"),children:t?y.jsx(t1,{name:t,size:16,"aria-hidden":!0}):y.jsx(i2,{className:"sf:h-4 sf:w-4","aria-hidden":!0})})})}function t3e({adapter:e,nodeId:t,htmlPath:n}){const[r,o]=m.useState({kind:"idle"}),i=typeof(e==null?void 0:e.openFile)=="function",a=typeof(e==null?void 0:e.revealFile)=="function",s=`nodes/${t}/${n}`,l=async c=>{var h,d;o({kind:"pending"});try{c==="open"?await((h=e==null?void 0:e.openFile)==null?void 0:h.call(e,s)):await((d=e==null?void 0:e.revealFile)==null?void 0:d.call(e,s)),o({kind:"idle"})}catch(f){o({kind:"error",message:f instanceof Error?f.message:String(f)})}};return y.jsxs("div",{className:"sf:flex sf:flex-col sf:gap-2 sf:rounded-md sf:border sf:bg-card sf:px-3 sf:py-2 sf:text-xs","data-testid":"detail-panel-html-node",children:[y.jsxs("div",{className:"sf:flex sf:flex-col sf:gap-1",children:[y.jsx("span",{className:"sf:font-mono sf:text-[11px] sf:text-muted-foreground sf:uppercase sf:tracking-widest",children:"Path"}),y.jsx("code",{"data-testid":"detail-panel-html-path",className:"sf:block sf:break-all sf:rounded sf:bg-muted/40 sf:px-2 sf:py-1 sf:font-mono sf:text-[11px]",children:n})]}),i||a?y.jsxs("div",{className:"sf:flex sf:flex-wrap sf:items-center sf:gap-2",children:[i?y.jsxs(Nt,{type:"button",size:"sm",variant:"outline",className:"sf:h-7 sf:gap-1.5 sf:px-2",onClick:()=>{l("open")},disabled:r.kind==="pending","data-testid":"detail-panel-html-open","aria-label":"Open in editor",children:[y.jsx(u2,{className:"sf:h-3.5 sf:w-3.5"}),"Open in editor"]}):null,a?y.jsxs(Nt,{type:"button",size:"sm",variant:"outline",className:"sf:h-7 sf:gap-1.5 sf:px-2",onClick:()=>{l("reveal")},disabled:r.kind==="pending","data-testid":"detail-panel-html-reveal","aria-label":"Reveal in Finder/Explorer",children:[y.jsx(o2,{className:"sf:h-3.5 sf:w-3.5"}),"Reveal"]}):null]}):null,r.kind==="error"?y.jsx("div",{"data-testid":"detail-panel-html-status","data-status":r.kind,className:ie("sf:text-[11px] sf:text-destructive"),children:r.message??""}):null]})}function n3e(e,t){const n=Math.max(0,t-e);if(n<1e3)return"just now";const r=Math.floor(n/1e3);if(r<60)return`${r}s ago`;const o=Math.floor(r/60);if(o<60)return`${o}m ago`;const i=Math.floor(o/60);return i<24?`${i}h ago`:`${Math.floor(i/24)}d ago`}function r3e(e){if(e===null)return"null";if(e===void 0)return"undefined";if(typeof e=="string")return e;try{return JSON.stringify(e)}catch{return String(e)}}function o3e({report:e,now:t=Date.now()}){const n=e.data?Object.entries(e.data):[];return y.jsxs("section",{className:"sf:flex sf:flex-col sf:gap-2 sf:rounded-md sf:border sf:bg-card sf:px-3 sf:py-2 sf:text-xs","data-testid":"detail-panel-status","data-state":e.state,children:[y.jsxs("div",{className:"sf:flex sf:items-center sf:justify-between sf:gap-2",children:[y.jsx(QZ,{state:e.state,summary:e.summary,"data-testid":"detail-panel-status-badge"}),y.jsx("span",{className:"sf:shrink-0 sf:text-[10px] sf:text-muted-foreground","data-testid":"detail-panel-status-relative-time",children:`Last updated: ${n3e(e.ts,t)}`})]}),e.detail?y.jsx("div",{"data-testid":"detail-panel-status-detail",className:"sf:whitespace-pre-wrap sf:wrap-break-word sf:rounded sf:bg-muted/40 sf:px-2 sf:py-1 sf:text-[11px] sf:text-foreground",children:e.detail}):null,n.length>0?y.jsx("dl",{"data-testid":"detail-panel-status-data",className:"sf:grid sf:grid-cols-[auto_1fr] sf:gap-x-3 sf:gap-y-1 sf:text-[11px]",children:n.map(([r,o])=>y.jsxs("div",{className:"contents","data-testid":"detail-panel-status-data-row",children:[y.jsx("dt",{className:"sf:truncate sf:font-medium sf:text-muted-foreground",children:r}),y.jsx("dd",{className:"sf:break-all sf:font-mono sf:text-foreground",children:r3e(o)})]},r))}):null]})}function GV({value:e}){return y.jsx(F5e,{remarkPlugins:[Qve],components:{h1:({children:t})=>y.jsx("h1",{className:"sf:mb-1 sf:text-base sf:font-bold sf:leading-snug",children:t}),h2:({children:t})=>y.jsx("h2",{className:"sf:mb-1 sf:text-sm sf:font-semibold sf:leading-snug",children:t}),h3:({children:t})=>y.jsx("h3",{className:"sf:mb-0.5 sf:text-sm sf:font-medium sf:leading-snug",children:t}),p:({children:t})=>y.jsx("p",{className:"sf:mb-2 sf:last:mb-0 sf:leading-relaxed",children:t}),ul:({children:t})=>y.jsx("ul",{className:"sf:mb-2 sf:list-disc sf:pl-4 sf:last:mb-0",children:t}),ol:({children:t})=>y.jsx("ol",{className:"sf:mb-2 sf:list-decimal sf:pl-4 sf:last:mb-0",children:t}),li:({children:t})=>y.jsx("li",{className:"mb-0.5",children:t}),code:({children:t,className:n})=>(n==null?void 0:n.includes("language-"))?y.jsx("code",{className:"sf:block sf:overflow-x-auto sf:rounded sf:bg-muted/60 sf:px-2 sf:py-1 sf:font-mono sf:text-xs",children:t}):y.jsx("code",{className:"sf:rounded sf:bg-muted/60 sf:px-1 sf:py-0.5 sf:font-mono sf:text-xs",children:t}),pre:({children:t})=>y.jsx("pre",{className:"sf:mb-2 sf:last:mb-0",children:t}),blockquote:({children:t})=>y.jsx("blockquote",{className:"sf:mb-2 sf:border-l-2 sf:border-muted-foreground/30 sf:pl-3 sf:italic sf:text-muted-foreground sf:last:mb-0",children:t}),a:({href:t,children:n})=>y.jsx("a",{href:t,target:"_blank",rel:"noreferrer",className:"sf:text-primary sf:underline sf:underline-offset-2",children:n}),strong:({children:t})=>y.jsx("strong",{className:"font-semibold",children:t}),em:({children:t})=>y.jsx("em",{className:"italic",children:t}),hr:()=>y.jsx("hr",{className:"sf:my-2 sf:border-border"}),table:({children:t})=>y.jsx("div",{className:"sf:mb-2 sf:overflow-x-auto sf:last:mb-0",children:y.jsx("table",{className:"sf:w-full sf:border-collapse sf:text-xs",children:t})}),th:({children:t})=>y.jsx("th",{className:"sf:border sf:border-border sf:bg-muted/40 sf:px-2 sf:py-1 sf:text-left sf:font-medium",children:t}),td:({children:t})=>y.jsx("td",{className:"sf:border sf:border-border sf:px-2 sf:py-1",children:t})},children:e})}function i3e({connector:e}){return y.jsx("div",{className:"sf:rounded-md sf:border sf:bg-card sf:px-3 sf:py-2 sf:text-xs",children:y.jsxs("dl",{className:"divide-y",children:[y.jsx(Qr,{label:"Source",value:e.source}),y.jsx(Qr,{label:"Target",value:e.target}),y.jsx(Qr,{label:"Kind",value:e.kind}),e.label?y.jsx(Qr,{label:"Label",value:e.label}):null,e.style?y.jsx(Qr,{label:"Style",value:e.style}):null,e.color?y.jsx(Qr,{label:"Color",value:e.color}):null,e.direction?y.jsx(Qr,{label:"Direction",value:e.direction}):null,e.kind==="http"&&e.url?y.jsx(Qr,{label:"URL",value:`${e.method??"GET"} ${e.url}`}):null,e.kind==="event"?y.jsx(Qr,{label:"Event",value:e.eventName}):null,e.kind==="queue"?y.jsx(Qr,{label:"Queue",value:e.queueName}):null]})})}function Qr({label:e,value:t}){return y.jsxs("div",{className:"sf:flex sf:items-start sf:gap-3 sf:py-2 sf:first:pt-0 sf:last:pb-0",children:[y.jsx("dt",{className:"sf:w-20 sf:shrink-0 sf:font-medium sf:text-muted-foreground",children:e}),y.jsx("dd",{className:"sf:flex-1 sf:break-all sf:font-mono",children:t})]})}const a3e="https://seeflow.dev/embed",s3e=e=>`${a3e}/${encodeURIComponent(e)}`,l3e=e=>e.replace(/&/g,"&").replace(/"/g,""").replace(/</g,"<"),c3e=e=>[`<iframe src="${l3e(e)}"`,' width="100%"',' height="600"',' style="border:0"',' allow="fullscreen"',' loading="lazy"></iframe>'].join(`
|
|
7837
7837
|
`),u3e="Embed this canvas",d3e="Paste this iframe into any page to embed the canvas.",h3e="Copy snippet",f3e="Copied!",p3e="Press ⌘C to copy",y3e="Close",m3e=1500;function k3e({open:e,onOpenChange:t,projectId:n}){const r=c3e(s3e(n)),[o,i]=m.useState("idle"),a=m.useRef(null),s=m.useCallback(async()=>{try{await navigator.clipboard.writeText(r),i("copied"),setTimeout(()=>i("idle"),m3e)}catch{i("fallback");const l=a.current;l&&(l.focus(),l.select())}},[r]);return y.jsx(kz,{open:e,onOpenChange:t,children:y.jsxs(Nh,{"data-testid":"embed-dialog-content",children:[y.jsxs(Dh,{children:[y.jsx(_h,{children:u3e}),y.jsx(Hh,{children:d3e})]}),y.jsx("textarea",{ref:a,"data-testid":"embed-dialog-snippet",readOnly:!0,rows:7,value:r,spellCheck:!1,onFocus:l=>l.currentTarget.select(),className:"sf:w-full sf:resize-none sf:rounded-md sf:border sf:border-border sf:bg-background sf:p-3 sf:font-mono sf:text-xs sf:leading-relaxed sf:text-foreground sf:focus:outline-hidden sf:focus:ring-2 sf:focus:ring-ring"}),o==="fallback"?y.jsx("p",{"data-testid":"embed-dialog-fallback-hint",className:"sf:text-xs sf:text-muted-foreground",children:p3e}):null,y.jsxs(Hu,{children:[y.jsx(Nt,{variant:"outline","data-testid":"embed-dialog-close",onClick:()=>t(!1),children:y3e}),y.jsx(Nt,{"data-testid":"embed-dialog-copy",onClick:s,children:o==="copied"?f3e:h3e})]})]})})}const ZV="Share / download",g3e="Download PDF",x3e="Download PNG",v3e="Embed",w3e="Export to seeflow.dev";function M3e({mode:e,projectId:t,enableEmbed:n,onDownloadPdf:r,onDownloadPng:o,onExportToCloud:i,embedOpen:a,onEmbedOpenChange:s}){const[l,c]=m.useState(!1),[h,d]=m.useState(!1),[f,p]=m.useState(!1),k=a!==void 0,v=k?a:f,w=m.useCallback(L=>{k||p(L),s==null||s(L)},[k,s]),g=m.useCallback(()=>{!r||l||(c(!0),Promise.resolve(r()).finally(()=>c(!1)))},[r,l]),M=m.useCallback(()=>{!o||h||(d(!0),Promise.resolve(o()).finally(()=>d(!1)))},[o,h]),x=!!r,b=!!o,S=n&&typeof t=="string"&&t.length>0,C=e==="edit"&&!!i;return!x&&!b&&!S&&!C?null:y.jsxs(y.Fragment,{children:[y.jsxs(oye,{children:[y.jsx(iye,{asChild:!0,children:y.jsx("button",{type:"button","data-testid":"share-menu-trigger","aria-label":ZV,title:ZV,className:ie("sf:inline-flex sf:h-8 sf:w-8 sf:items-center sf:justify-center sf:rounded-md sf:border sf:border-border sf:bg-background/95 sf:text-muted-foreground sf:shadow-md sf:backdrop-blur-sm sf:transition-colors","sf:hover:bg-accent sf:hover:text-accent-foreground","sf:focus-visible:outline-hidden sf:focus-visible:ring-2 sf:focus-visible:ring-ring"),children:y.jsx(k2,{className:"sf:h-4 sf:w-4","aria-hidden":"true"})})}),y.jsxs(GX,{align:"end","data-testid":"share-menu-content",onCloseAutoFocus:L=>{L.preventDefault()},children:[x?y.jsxs(Fd,{"data-testid":"share-menu-pdf",disabled:l,onSelect:L=>{L.preventDefault(),g()},children:[l?y.jsx(Cr,{className:"sf:h-4 sf:w-4 sf:animate-spin","aria-hidden":"true"}):y.jsx(r2,{className:"sf:h-4 sf:w-4","aria-hidden":"true"}),y.jsx("span",{children:g3e})]}):null,b?y.jsxs(Fd,{"data-testid":"share-menu-png",disabled:h,onSelect:L=>{L.preventDefault(),M()},children:[h?y.jsx(Cr,{className:"sf:h-4 sf:w-4 sf:animate-spin","aria-hidden":"true"}):y.jsx(a2,{className:"sf:h-4 sf:w-4","aria-hidden":"true"}),y.jsx("span",{children:x3e})]}):null,S?y.jsxs(Fd,{"data-testid":"share-menu-embed",onSelect:L=>{L.preventDefault(),w(!0)},children:[y.jsx(au,{className:"sf:h-4 sf:w-4","aria-hidden":"true"}),y.jsx("span",{children:v3e})]}):null,C?y.jsxs(Fd,{"data-testid":"share-menu-export-cloud",onSelect:()=>{i==null||i()},children:[y.jsx(w2,{className:"sf:h-4 sf:w-4","aria-hidden":"true"}),y.jsx("span",{children:w3e})]}):null]})]}),S&&t?y.jsx(k3e,{open:v,onOpenChange:w,projectId:t}):null]})}function b3e({onRestartDemo:e}){const[t,n]=m.useState(!1),r=m.useCallback(()=>{t||(n(!0),Promise.resolve(e()).finally(()=>{n(!1)}))},[e,t]);return y.jsxs(Bh,{children:[y.jsx($h,{asChild:!0,children:y.jsx(Nt,{"data-testid":"header-restart-demo",type:"button",variant:"ghost",size:"icon","aria-label":"Restart demo",title:"Restart demo",disabled:t,onClick:r,className:"sf:h-8 sf:w-8",children:t?y.jsx(Cr,{className:"sf:h-4 sf:w-4 sf:animate-spin","aria-hidden":"true"}):y.jsx(f2,{className:"sf:h-4 sf:w-4","aria-hidden":"true"})})}),y.jsx(td,{side:"bottom",children:"Restart demo"})]})}const C3e=8;function S3e(e){let t=Number.POSITIVE_INFINITY,n=Number.POSITIVE_INFINITY,r=Number.NEGATIVE_INFINITY,o=Number.NEGATIVE_INFINITY,i=!1;for(const a of e){const s=a.data.width,l=a.data.height;s===void 0||l===void 0||(i=!0,a.position.x<t&&(t=a.position.x),a.position.y<n&&(n=a.position.y),a.position.x+s>r&&(r=a.position.x+s),a.position.y+l>o&&(o=a.position.y+l))}return i?{x:t,y:n,width:r-t,height:o-n}:null}function L3e(e){return e.length>=2}function I3e({selectedNodes:e,onMultiResize:t,paddingPx:n=C3e}){JR();const[r,o]=m.useState(null),[i,a]=m.useState(null);if(m.useRef(!1),m.useRef(null),!L3e(e))return null;const s=S3e(e);if(!s)return null;const l=i??s;return l.x-n,l.y-n,l.width+n*2,l.height+n*2,null}const KV=22,XV=11,YV=3,QV=2,oT=8,E3e={http:"solid",event:"dashed",queue:"dotted",default:"solid"},UQ=["default","slate","blue","green","amber","red","purple","pink"],G0=[{value:"solid",icon:gR,label:"Solid",testId:"style-tab-border-style-solid"},{value:"dashed",icon:oY,label:"Dashed",testId:"style-tab-border-style-dashed"},{value:"dotted",icon:iY,label:"Dotted",testId:"style-tab-border-style-dotted"}],JV=[{value:"solid",icon:gR,label:"Solid",testId:"style-tab-edge-style-solid"},{value:"dashed",icon:oY,label:"Dashed",testId:"style-tab-edge-style-dashed"},{value:"dotted",icon:iY,label:"Dotted",testId:"style-tab-edge-style-dotted"}],eB=[{value:"curve",icon:aY,label:"Curve",testId:"style-tab-edge-path-curve"},{value:"step",icon:Pye,label:"Zigzag",testId:"style-tab-edge-path-step"}],tB=[{value:"none",icon:l2,label:"None",testId:"style-tab-direction-none"},{value:"backward",icon:c2,label:"Backward",testId:"style-tab-direction-backward"},{value:"forward",icon:ru,label:"Forward",testId:"style-tab-direction-forward"},{value:"both",icon:Xd,label:"Both",testId:"style-tab-direction-both"}];function A3e({nodes:e,connectors:t,onStyleNode:n,onStyleNodePreview:r,onStyleNodes:o,onStyleNodesPreview:i,onStyleConnector:a,onStyleConnectorPreview:s,onRequestIconReplace:l}){const c=e.length>0,h=t.length>0;if(!c&&!h)return null;const d=c&&!h,f=!c&&h,p=e[0],k=t[0],v=e.filter(fe=>fe.type!=="iconNode"),w=v[0],g=d&&e.every(fe=>fe.type==="iconNode"),M=g?e.find(fe=>fe.type==="iconNode"):void 0,x=d&&e.every(fe=>fe.type==="imageNode"),b=d&&(p==null?void 0:p.type)==="shapeNode"&&p.data.shape==="text",S=(f?k==null?void 0:k.color:w==null?void 0:w.data.borderColor)??"default",C=(w==null?void 0:w.data.backgroundColor)??"default",L=(w==null?void 0:w.data.borderStyle)??"solid",P=k?k.style??E3e[k.kind]:"solid",T=(k==null?void 0:k.direction)??"forward",E=(k==null?void 0:k.path)??"curve",z=fe=>{for(const we of e)n(we.id,{borderColor:fe});for(const we of t)a(we.id,{color:fe})},A=fe=>{for(const we of e)n(we.id,{backgroundColor:fe})},U=fe=>{for(const we of e)n(we.id,{borderStyle:fe});for(const we of t)a(we.id,{style:fe})},R=fe=>{for(const we of e)n(we.id,{borderSize:fe});for(const we of t)a(we.id,{borderSize:fe})},V=fe=>{for(const we of e)r==null||r(we.id,{borderSize:fe});for(const we of t)s==null||s(we.id,{borderSize:fe})},O=fe=>{if(e.length>1&&o)o(e.map(we=>we.id),{fontSize:fe});else for(const we of e)n(we.id,{fontSize:fe})},B=fe=>{if(e.length>1&&i)i(e.map(we=>we.id),{fontSize:fe});else for(const we of e)r==null||r(we.id,{fontSize:fe})},D=v.length>1&&new Set(v.map(fe=>fe.data.fontSize??KV)).size>1,N=fe=>{if(e.length>1&&o)o(e.map(we=>we.id),{textColor:fe});else for(const we of e)n(we.id,{textColor:fe})},I=(w==null?void 0:w.data.textColor)??(b?(w==null?void 0:w.data.borderColor)??"default":"default"),W=fe=>{for(const we of t)a(we.id,{fontSize:fe})},H=fe=>{for(const we of t)s==null||s(we.id,{fontSize:fe})},j=t.length>1&&new Set(t.map(fe=>fe.fontSize??XV)).size>1,G=fe=>{for(const we of e)n(we.id,{cornerRadius:fe})},X=fe=>{for(const we of e)r==null||r(we.id,{cornerRadius:fe})},Y=v.length>1&&new Set(v.map(fe=>fe.data.cornerRadius??oT)).size>1,re=fe=>{for(const we of t)a(we.id,{path:fe})},ne=fe=>{for(const we of t)a(we.id,{direction:fe})},ae=fe=>{for(const we of e)n(we.id,{color:fe})},ve=(M==null?void 0:M.data.color)??"default",be=f?(k==null?void 0:k.borderSize)??QV:(w==null?void 0:w.data.borderSize)??YV,me=f?QV:YV,ge=f?"edge":"border",ee=f?"Connector color":b?"Color":"Border color",ke=f?"connector color":b?"color":"border color",Fe=f?"style-tab-edge-color-trigger":b?"style-tab-color-trigger":"style-tab-border-color-trigger",rt=f||b?"style-tab-color":"style-tab-border-color";if(g){const fe=!!l&&e.length===1&&!!M,we=()=>{M&&l&&l(M.id)};return y.jsx(L2,{delayDuration:300,children:y.jsxs("div",{"data-testid":"canvas-style-strip",className:"sf:pointer-events-auto sf:flex sf:flex-col sf:items-center sf:gap-1 sf:rounded-lg sf:border sf:border-border sf:bg-background/95 sf:p-1 sf:shadow-md sf:backdrop-blur",children:[y.jsx(nB,{testId:"style-strip-icon-color",tooltip:"Icon color",ariaLabel:"icon color",activeToken:ve,previewKind:"edge",tokenTestIdPrefix:"style-tab-icon-color",innerTestId:"style-tab-icon-color-trigger",onSelect:ae}),fe?y.jsxs(Bh,{children:[y.jsx($h,{asChild:!0,children:y.jsx("button",{type:"button","data-testid":"style-strip-change-icon","aria-label":"change icon",title:"Change icon",onClick:we,className:ie("sf:inline-flex sf:h-8 sf:w-8 sf:items-center sf:justify-center sf:rounded-md sf:text-muted-foreground sf:transition-colors sf:hover:bg-accent sf:hover:text-accent-foreground","sf:focus-visible:outline-hidden sf:focus-visible:ring-2 sf:focus-visible:ring-ring sf:focus-visible:ring-offset-1"),children:y.jsx(lu,{className:"sf:h-4 sf:w-4"})})}),y.jsx(td,{side:"right",className:"sf:px-2 sf:py-1 sf:text-xs",children:"Change icon"})]}):null]})})}if(x){const fe=e[0],we=(fe==null?void 0:fe.data.borderColor)??"default",Se=(fe==null?void 0:fe.data.borderStyle)??"solid",Oe=(fe==null?void 0:fe.data.borderWidth)??1,te=st=>{for(const Ne of e)n(Ne.id,{borderColor:st})},de=st=>{for(const Ne of e)n(Ne.id,{borderStyle:st})},Pe=st=>{for(const Ne of e)n(Ne.id,{borderWidth:st})},qe=st=>{for(const Ne of e)r==null||r(Ne.id,{borderWidth:st})},We=st=>{for(const Ne of e)n(Ne.id,{cornerRadius:st})},Rt=st=>{for(const Ne of e)r==null||r(Ne.id,{cornerRadius:st})};return y.jsx(L2,{delayDuration:300,children:y.jsxs("div",{"data-testid":"canvas-style-strip",className:"sf:pointer-events-auto sf:flex sf:flex-col sf:items-center sf:gap-1 sf:rounded-lg sf:border sf:border-border sf:bg-background/95 sf:p-1 sf:shadow-md sf:backdrop-blur",children:[y.jsx(nB,{testId:"style-strip-image-border-color",tooltip:"Border color",ariaLabel:"image border color",activeToken:we,previewKind:"border",tokenTestIdPrefix:"style-tab-image-border-color",innerTestId:"style-tab-image-border-color-trigger",onSelect:te}),y.jsx(jo,{testId:"style-strip-image-border-style",tooltip:"Border style",ariaLabel:"image border style",renderIcon:()=>{var Ne;const st=((Ne=G0.find(ot=>ot.value===Se))==null?void 0:Ne.icon)??gR;return y.jsx(st,{className:"sf:h-4 sf:w-4"})},children:y.jsx(Sd,{ariaLabel:"Border style",value:Se,onChange:de,options:G0})}),y.jsx(jo,{testId:"style-strip-image-border-width",tooltip:"Border width",ariaLabel:"image border width",renderIcon:()=>y.jsx("span",{className:"sf:font-mono sf:text-[10px] sf:tabular-nums",children:Oe}),children:y.jsx(Ed,{value:fe==null?void 0:fe.data.borderWidth,defaultValue:1,min:1,max:8,suffix:"px",onPreview:qe,onCommit:Pe,testId:"style-tab-image-border-width-slider"})}),y.jsx(jo,{testId:"style-strip-image-corner-radius",tooltip:"Corners",ariaLabel:"image corner radius",renderIcon:()=>y.jsx(su,{className:"sf:h-4 sf:w-4"}),children:y.jsx(Ed,{value:fe==null?void 0:fe.data.cornerRadius,defaultValue:oT,min:0,max:32,suffix:"px",onPreview:Rt,onCommit:We,testId:"style-tab-image-corner-radius-slider"})})]})})}const mt=d&&!b,ht=!b,le=!f,Q=()=>{if(f){const Se=Kd[S].edge;return y.jsx("span",{className:"sf:inline-block sf:h-5 sf:w-5 sf:rounded-full sf:ring-1 sf:ring-border",style:{backgroundColor:Se}})}const fe=Kd[S].border,we=Kd[C].background;return y.jsx("span",{className:"sf:inline-block sf:h-5 sf:w-5 sf:rounded-md sf:ring-1 sf:ring-border",style:{backgroundColor:we,border:`2px solid ${fe}`}})};return y.jsx(L2,{delayDuration:300,children:y.jsxs("div",{"data-testid":"canvas-style-strip",className:"sf:pointer-events-auto sf:flex sf:flex-col sf:items-center sf:gap-1 sf:rounded-lg sf:border sf:border-border sf:bg-background/95 sf:p-1 sf:shadow-md sf:backdrop-blur",children:[b?null:y.jsx(jo,{testId:"style-strip-colors",tooltip:"Colors",ariaLabel:"colors",renderIcon:Q,children:y.jsxs("div",{className:"sf:flex sf:w-56 sf:flex-col sf:gap-3",children:[y.jsx(A1,{label:ee,children:y.jsx(iT,{testId:"style-strip-border-color",activeToken:S,previewKind:ge,tokenTestIdPrefix:rt,innerTestId:Fe,ariaLabel:ke,onSelect:z})}),mt?y.jsx(A1,{label:"Fill",children:y.jsx(iT,{testId:"style-strip-fill",activeToken:C,previewKind:"background",tokenTestIdPrefix:"style-tab-background-color",innerTestId:"style-tab-background-color-trigger",ariaLabel:"fill",onSelect:A})}):null]})}),ht?y.jsx(jo,{testId:"style-strip-border",tooltip:f?"Connector":"Border",ariaLabel:f?"connector":"border",renderIcon:()=>{var we,Se;const fe=(f?(we=JV.find(Oe=>Oe.value===P))==null?void 0:we.icon:(Se=G0.find(Oe=>Oe.value===L))==null?void 0:Se.icon)??gR;return y.jsx(fe,{className:"sf:h-4 sf:w-4"})},children:y.jsxs("div",{className:"sf:flex sf:w-56 sf:flex-col sf:gap-3",children:[y.jsx(A1,{label:"Style",testId:"style-strip-border-style",children:f?y.jsx(Sd,{ariaLabel:"Connector style",value:P,onChange:fe=>U(fe),options:JV}):y.jsx(Sd,{ariaLabel:"Border style",value:L,onChange:fe=>U(fe),options:G0})}),y.jsx(A1,{label:"Width",testId:"style-strip-border-size",children:y.jsx(Ed,{value:be,defaultValue:me,min:1,max:8,suffix:"px",onPreview:V,onCommit:R,testId:f?"style-tab-stroke-width-slider":"style-tab-border-size-slider"})})]})}):null,c||f?y.jsx(jo,{testId:"style-strip-text",tooltip:"Text",ariaLabel:"text",renderIcon:()=>y.jsx(cu,{className:"sf:h-4 sf:w-4"}),children:y.jsxs("div",{className:"sf:flex sf:w-56 sf:flex-col sf:gap-3",children:[y.jsx(A1,{label:"Size",testId:f?"style-strip-connector-font-size":"style-strip-font-size",children:y.jsx(Ed,{value:f?k==null?void 0:k.fontSize:w==null?void 0:w.data.fontSize,defaultValue:f?XV:KV,min:f?8:10,max:32,suffix:"px",indeterminate:f?j:D,onPreview:f?H:B,onCommit:f?W:O,testId:f?"style-tab-connector-font-size-slider":"style-tab-font-size-slider"})}),le?y.jsx(A1,{label:"Color",children:y.jsx(iT,{testId:"style-strip-text-color",activeToken:I,previewKind:"edge",tokenTestIdPrefix:"style-tab-text-color",innerTestId:"style-tab-text-color-trigger",ariaLabel:"text color",onSelect:N})}):null]})}):null,c&&!b?y.jsx(jo,{testId:"style-strip-corner-radius",tooltip:"Corners",ariaLabel:"corner radius",renderIcon:()=>y.jsx(su,{className:"sf:h-4 sf:w-4"}),children:y.jsx(Ed,{value:w==null?void 0:w.data.cornerRadius,defaultValue:oT,min:0,max:32,suffix:"px",indeterminate:Y,onPreview:X,onCommit:G,testId:"style-tab-corner-radius-slider"})}):null,f?y.jsx(jo,{testId:"style-strip-path",tooltip:"Connector path",ariaLabel:"connector path",renderIcon:()=>{var we;const fe=((we=eB.find(Se=>Se.value===E))==null?void 0:we.icon)??aY;return y.jsx(fe,{className:"sf:h-4 sf:w-4"})},children:y.jsx(Sd,{ariaLabel:"Connector path",value:E,onChange:re,options:eB})}):null,f?y.jsx(jo,{testId:"style-strip-direction",tooltip:"Direction",ariaLabel:"direction",renderIcon:()=>{var we;const fe=((we=tB.find(Se=>Se.value===T))==null?void 0:we.icon)??ru;return y.jsx(fe,{className:"sf:h-4 sf:w-4"})},children:y.jsx(Sd,{ariaLabel:"Connector direction",value:T,onChange:ne,options:tB})}):null]})})}function WQ(e,t){const n=Kd[e];return t==="background"?{backgroundColor:n.background,borderColor:n.border}:t==="edge"?{backgroundColor:n.edge,borderColor:n.edge}:{borderColor:n.border,backgroundColor:n.background}}function P3e(e,t){const n=Kd[e];return t==="background"?{backgroundColor:n.background}:t==="edge"?{backgroundColor:n.edge}:{backgroundColor:n.border}}function nB({testId:e,tooltip:t,ariaLabel:n,activeToken:r,previewKind:o,tokenTestIdPrefix:i,innerTestId:a,onSelect:s}){const[l,c]=m.useState(!1),h=r==="default";return y.jsxs(Ju,{open:l,onOpenChange:c,children:[y.jsxs(Bh,{children:[y.jsx($h,{asChild:!0,children:y.jsx(Eh,{asChild:!0,children:y.jsx("button",{type:"button","data-testid":e,"data-active-token":r,"aria-label":`${n}: ${r}`,title:t,className:ie("sf:group sf:relative sf:inline-flex sf:h-8 sf:w-8 sf:items-center sf:justify-center sf:rounded-md sf:text-muted-foreground sf:transition-colors sf:hover:bg-accent sf:hover:text-accent-foreground","sf:focus-visible:outline-hidden sf:focus-visible:ring-2 sf:focus-visible:ring-ring sf:focus-visible:ring-offset-1"),children:y.jsx("span",{"data-testid":a,className:"sf:relative sf:h-5 sf:w-5 sf:rounded-full sf:ring-1 sf:ring-border",style:P3e(r,o),children:h?y.jsx("span",{"aria-hidden":"true",className:"sf:pointer-events-none sf:absolute sf:inset-0 sf:rounded-full",style:{backgroundImage:"linear-gradient(45deg, transparent 45%, currentColor 45%, currentColor 55%, transparent 55%)",color:"hsl(var(--muted-foreground))",opacity:.5}}):null})})})}),y.jsx(td,{side:"right",className:"sf:px-2 sf:py-1 sf:text-xs",children:t})]}),y.jsx(u1,{side:"right",align:"start",className:"sf:w-auto sf:p-2","data-testid":`${a}-popover`,children:y.jsx("div",{className:"sf:grid sf:grid-cols-4 sf:gap-1.5",children:UQ.map(d=>{const f=r===d;return y.jsx("button",{type:"button",onClick:()=>{s(d),c(!1)},"data-testid":`${i}-${d}`,"data-active":f,"aria-label":`${n} ${d}`,"aria-pressed":f,title:d,className:ie("sf:relative sf:flex sf:h-7 sf:w-7 sf:items-center sf:justify-center sf:rounded-full sf:border-2 sf:transition-all",f?"sf:ring-2 sf:ring-ring sf:ring-offset-2 sf:ring-offset-popover":"sf:hover:scale-110"),style:WQ(d,o),children:f?y.jsx(fo,{className:"sf:h-3 sf:w-3 sf:drop-shadow-sm",style:{color:"hsl(var(--foreground))"}}):null},d)})})})]})}function iT({testId:e,activeToken:t,previewKind:n,tokenTestIdPrefix:r,innerTestId:o,ariaLabel:i,onSelect:a}){return y.jsx("div",{"data-testid":e,"data-active-token":t,"data-inner-testid":o,className:"sf:grid sf:grid-cols-4 sf:gap-1.5",children:UQ.map(s=>{const l=t===s;return y.jsx("button",{type:"button",onClick:()=>a(s),"data-testid":`${r}-${s}`,"data-active":l,"aria-label":`${i} ${s}`,"aria-pressed":l,title:s,className:ie("sf:relative sf:flex sf:h-7 sf:w-7 sf:items-center sf:justify-center sf:rounded-full sf:border-2 sf:transition-all",l?"sf:ring-2 sf:ring-ring sf:ring-offset-2 sf:ring-offset-popover":"sf:hover:scale-110"),style:WQ(s,n),children:l?y.jsx(fo,{className:"sf:h-3 sf:w-3 sf:drop-shadow-sm",style:{color:"hsl(var(--foreground))"}}):null},s)})})}function A1({label:e,testId:t,children:n}){return y.jsxs("div",{className:"sf:flex sf:flex-col sf:gap-1.5","data-testid":t,children:[y.jsx("div",{className:"sf:text-[11px] sf:font-medium sf:uppercase sf:tracking-wide sf:text-muted-foreground",children:e}),n]})}function jo({testId:e,tooltip:t,ariaLabel:n,renderIcon:r,children:o}){const[i,a]=m.useState(!1);return y.jsxs(Ju,{open:i,onOpenChange:a,children:[y.jsxs(Bh,{children:[y.jsx($h,{asChild:!0,children:y.jsx(Eh,{asChild:!0,children:y.jsx("button",{type:"button","data-testid":e,"aria-label":n,title:t,className:ie("sf:inline-flex sf:h-8 sf:w-8 sf:items-center sf:justify-center sf:rounded-md sf:text-muted-foreground sf:transition-colors sf:hover:bg-accent sf:hover:text-accent-foreground","sf:focus-visible:outline-hidden sf:focus-visible:ring-2 sf:focus-visible:ring-ring sf:focus-visible:ring-offset-1"),children:r()})})}),y.jsx(td,{side:"right",className:"sf:px-2 sf:py-1 sf:text-xs",children:t})]}),y.jsx(u1,{side:"right",align:"start",className:"sf:w-auto sf:p-3",children:o})]})}function Ed({value:e,defaultValue:t,min:n,max:r,suffix:o,indeterminate:i,onPreview:a,onCommit:s,testId:l}){const c=e??t,[h,d]=m.useState(c),[f,p]=m.useState(!1);m.useEffect(()=>{d(c),p(!1)},[c]);const k=i&&!f;return y.jsxs("div",{className:"sf:flex sf:w-48 sf:items-center sf:gap-3",children:[y.jsx(SY,{min:n,max:r,step:1,value:[h],onValueChange:([v])=>{const w=v??n;d(w),p(!0),a==null||a(w)},onValueCommit:([v])=>s(v??n),"data-testid":l,"data-indeterminate":k?"true":void 0,className:ie("sf:flex-1",k&&"sf:opacity-60")}),y.jsx("span",{"data-testid":`${l}-value`,className:"sf:w-12 sf:shrink-0 sf:text-right sf:text-xs sf:tabular-nums sf:text-muted-foreground",children:k?"Mixed":y.jsxs(y.Fragment,{children:[h,o]})})]})}const R3e="modulepreload",z3e=function(e){return"/"+e},rB={},j3e=function(t,n,r){let o=Promise.resolve();if(n&&n.length>0){document.getElementsByTagName("link");const a=document.querySelector("meta[property=csp-nonce]"),s=(a==null?void 0:a.nonce)||(a==null?void 0:a.getAttribute("nonce"));o=Promise.allSettled(n.map(l=>{if(l=z3e(l),l in rB)return;rB[l]=!0;const c=l.endsWith(".css"),h=c?'[rel="stylesheet"]':"";if(document.querySelector(`link[href="${l}"]${h}`))return;const d=document.createElement("link");if(d.rel=c?"stylesheet":R3e,c||(d.as="script"),d.crossOrigin="",d.href=l,s&&d.setAttribute("nonce",s),document.head.appendChild(d),c)return new Promise((f,p)=>{d.addEventListener("load",f),d.addEventListener("error",()=>p(new Error(`Unable to preload CSS for ${l}`)))})}))}function i(a){const s=new Event("vite:preloadError",{cancelable:!0});if(s.payload=a,window.dispatchEvent(s),!s.defaultPrevented)throw a}return o.then(a=>{for(const s of a||[])s.status==="rejected"&&i(s.reason);return t().catch(i)})};function T3e(e,t){if(e.match(/^[a-z]+:\/\//i))return e;if(e.match(/^\/\//))return window.location.protocol+e;if(e.match(/^[a-z]+:/i))return e;const n=document.implementation.createHTMLDocument(),r=n.createElement("base"),o=n.createElement("a");return n.head.appendChild(r),n.body.appendChild(o),t&&(r.href=t),o.href=e,o.href}const N3e=(()=>{let e=0;const t=()=>`0000${(Math.random()*36**4<<0).toString(36)}`.slice(-4);return()=>(e+=1,`u${t()}${e}`)})();function Di(e){const t=[];for(let n=0,r=e.length;n<r;n++)t.push(e[n]);return t}let P1=null;function GQ(e={}){return P1||(e.includeStyleProperties?(P1=e.includeStyleProperties,P1):(P1=Di(window.getComputedStyle(document.documentElement)),P1))}function bR(e,t){const r=(e.ownerDocument.defaultView||window).getComputedStyle(e).getPropertyValue(t);return r?parseFloat(r.replace("px","")):0}function D3e(e){const t=bR(e,"border-left-width"),n=bR(e,"border-right-width");return e.clientWidth+t+n}function _3e(e){const t=bR(e,"border-top-width"),n=bR(e,"border-bottom-width");return e.clientHeight+t+n}function ZQ(e,t={}){const n=t.width||D3e(e),r=t.height||_3e(e);return{width:n,height:r}}function H3e(){let e,t;try{t=process}catch{}const n=t&&t.env?t.env.devicePixelRatio:null;return n&&(e=parseInt(n,10),Number.isNaN(e)&&(e=1)),e||window.devicePixelRatio||1}const _n=16384;function F3e(e){(e.width>_n||e.height>_n)&&(e.width>_n&&e.height>_n?e.width>e.height?(e.height*=_n/e.width,e.width=_n):(e.width*=_n/e.height,e.height=_n):e.width>_n?(e.height*=_n/e.width,e.width=_n):(e.width*=_n/e.height,e.height=_n))}function CR(e){return new Promise((t,n)=>{const r=new Image;r.onload=()=>{r.decode().then(()=>{requestAnimationFrame(()=>t(r))})},r.onerror=n,r.crossOrigin="anonymous",r.decoding="async",r.src=e})}async function O3e(e){return Promise.resolve().then(()=>new XMLSerializer().serializeToString(e)).then(encodeURIComponent).then(t=>`data:image/svg+xml;charset=utf-8,${t}`)}async function q3e(e,t,n){const r="http://www.w3.org/2000/svg",o=document.createElementNS(r,"svg"),i=document.createElementNS(r,"foreignObject");return o.setAttribute("width",`${t}`),o.setAttribute("height",`${n}`),o.setAttribute("viewBox",`0 0 ${t} ${n}`),i.setAttribute("width","100%"),i.setAttribute("height","100%"),i.setAttribute("x","0"),i.setAttribute("y","0"),i.setAttribute("externalResourcesRequired","true"),o.appendChild(i),i.appendChild(e),O3e(o)}const An=(e,t)=>{if(e instanceof t)return!0;const n=Object.getPrototypeOf(e);return n===null?!1:n.constructor.name===t.name||An(n,t)};function V3e(e){const t=e.getPropertyValue("content");return`${e.cssText} content: '${t.replace(/'|"/g,"")}';`}function B3e(e,t){return GQ(t).map(n=>{const r=e.getPropertyValue(n),o=e.getPropertyPriority(n);return`${n}: ${r}${o?" !important":""};`}).join(" ")}function $3e(e,t,n,r){const o=`.${e}:${t}`,i=n.cssText?V3e(n):B3e(n,r);return document.createTextNode(`${o}{${i}}`)}function oB(e,t,n,r){const o=window.getComputedStyle(e,n),i=o.getPropertyValue("content");if(i===""||i==="none")return;const a=N3e();try{t.className=`${t.className} ${a}`}catch{return}const s=document.createElement("style");s.appendChild($3e(a,n,o,r)),t.appendChild(s)}function U3e(e,t,n){oB(e,t,":before",n),oB(e,t,":after",n)}const iB="application/font-woff",aB="image/jpeg",W3e={woff:iB,woff2:iB,ttf:"application/font-truetype",eot:"application/vnd.ms-fontobject",png:"image/png",jpg:aB,jpeg:aB,gif:"image/gif",tiff:"image/tiff",svg:"image/svg+xml",webp:"image/webp"};function G3e(e){const t=/\.([^./]*?)$/g.exec(e);return t?t[1]:""}function wH(e){const t=G3e(e).toLowerCase();return W3e[t]||""}function Z3e(e){return e.split(/,/)[1]}function eD(e){return e.search(/^(data:)/)!==-1}function K3e(e,t){return`data:${t};base64,${e}`}async function KQ(e,t,n){const r=await fetch(e,t);if(r.status===404)throw new Error(`Resource "${r.url}" not found`);const o=await r.blob();return new Promise((i,a)=>{const s=new FileReader;s.onerror=a,s.onloadend=()=>{try{i(n({res:r,result:s.result}))}catch(l){a(l)}},s.readAsDataURL(o)})}const aT={};function X3e(e,t,n){let r=e.replace(/\?.*/,"");return n&&(r=e),/ttf|otf|eot|woff2?/i.test(r)&&(r=r.replace(/.*\//,"")),t?`[${t}]${r}`:r}async function MH(e,t,n){const r=X3e(e,t,n.includeQueryParams);if(aT[r]!=null)return aT[r];n.cacheBust&&(e+=(/\?/.test(e)?"&":"?")+new Date().getTime());let o;try{const i=await KQ(e,n.fetchRequestInit,({res:a,result:s})=>(t||(t=a.headers.get("Content-Type")||""),Z3e(s)));o=K3e(i,t)}catch(i){o=n.imagePlaceholder||"";let a=`Failed to fetch resource: ${e}`;i&&(a=typeof i=="string"?i:i.message),a&&console.warn(a)}return aT[r]=o,o}async function Y3e(e){const t=e.toDataURL();return t==="data:,"?e.cloneNode(!1):CR(t)}async function Q3e(e,t){if(e.currentSrc){const i=document.createElement("canvas"),a=i.getContext("2d");i.width=e.clientWidth,i.height=e.clientHeight,a==null||a.drawImage(e,0,0,i.width,i.height);const s=i.toDataURL();return CR(s)}const n=e.poster,r=wH(n),o=await MH(n,r,t);return CR(o)}async function J3e(e,t){var n;try{if(!((n=e==null?void 0:e.contentDocument)===null||n===void 0)&&n.body)return await Tz(e.contentDocument.body,t,!0)}catch{}return e.cloneNode(!1)}async function ewe(e,t){return An(e,HTMLCanvasElement)?Y3e(e):An(e,HTMLVideoElement)?Q3e(e,t):An(e,HTMLIFrameElement)?J3e(e,t):e.cloneNode(XQ(e))}const twe=e=>e.tagName!=null&&e.tagName.toUpperCase()==="SLOT",XQ=e=>e.tagName!=null&&e.tagName.toUpperCase()==="SVG";async function nwe(e,t,n){var r,o;if(XQ(t))return t;let i=[];return twe(e)&&e.assignedNodes?i=Di(e.assignedNodes()):An(e,HTMLIFrameElement)&&(!((r=e.contentDocument)===null||r===void 0)&&r.body)?i=Di(e.contentDocument.body.childNodes):i=Di(((o=e.shadowRoot)!==null&&o!==void 0?o:e).childNodes),i.length===0||An(e,HTMLVideoElement)||await i.reduce((a,s)=>a.then(()=>Tz(s,n)).then(l=>{l&&t.appendChild(l)}),Promise.resolve()),t}function rwe(e,t,n){const r=t.style;if(!r)return;const o=window.getComputedStyle(e);o.cssText?(r.cssText=o.cssText,r.transformOrigin=o.transformOrigin):GQ(n).forEach(i=>{let a=o.getPropertyValue(i);i==="font-size"&&a.endsWith("px")&&(a=`${Math.floor(parseFloat(a.substring(0,a.length-2)))-.1}px`),An(e,HTMLIFrameElement)&&i==="display"&&a==="inline"&&(a="block"),i==="d"&&t.getAttribute("d")&&(a=`path(${t.getAttribute("d")})`),r.setProperty(i,a,o.getPropertyPriority(i))})}function owe(e,t){An(e,HTMLTextAreaElement)&&(t.innerHTML=e.value),An(e,HTMLInputElement)&&t.setAttribute("value",e.value)}function iwe(e,t){if(An(e,HTMLSelectElement)){const n=t,r=Array.from(n.children).find(o=>e.value===o.getAttribute("value"));r&&r.setAttribute("selected","")}}function awe(e,t,n){return An(t,Element)&&(rwe(e,t,n),U3e(e,t,n),owe(e,t),iwe(e,t)),t}async function swe(e,t){const n=e.querySelectorAll?e.querySelectorAll("use"):[];if(n.length===0)return e;const r={};for(let i=0;i<n.length;i++){const s=n[i].getAttribute("xlink:href");if(s){const l=e.querySelector(s),c=document.querySelector(s);!l&&c&&!r[s]&&(r[s]=await Tz(c,t,!0))}}const o=Object.values(r);if(o.length){const i="http://www.w3.org/1999/xhtml",a=document.createElementNS(i,"svg");a.setAttribute("xmlns",i),a.style.position="absolute",a.style.width="0",a.style.height="0",a.style.overflow="hidden",a.style.display="none";const s=document.createElementNS(i,"defs");a.appendChild(s);for(let l=0;l<o.length;l++)s.appendChild(o[l]);e.appendChild(a)}return e}async function Tz(e,t,n){return!n&&t.filter&&!t.filter(e)?null:Promise.resolve(e).then(r=>ewe(r,t)).then(r=>nwe(e,r,t)).then(r=>awe(e,r,t)).then(r=>swe(r,t))}const YQ=/url\((['"]?)([^'"]+?)\1\)/g,lwe=/url\([^)]+\)\s*format\((["']?)([^"']+)\1\)/g,cwe=/src:\s*(?:url\([^)]+\)\s*format\([^)]+\)[,;]\s*)+/g;function uwe(e){const t=e.replace(/([.*+?^${}()|\[\]\/\\])/g,"\\$1");return new RegExp(`(url\\(['"]?)(${t})(['"]?\\))`,"g")}function dwe(e){const t=[];return e.replace(YQ,(n,r,o)=>(t.push(o),n)),t.filter(n=>!eD(n))}async function hwe(e,t,n,r,o){try{const i=n?T3e(t,n):t,a=wH(t);let s;return o||(s=await MH(i,a,r)),e.replace(uwe(t),`$1${s}$3`)}catch{}return e}function fwe(e,{preferredFontFormat:t}){return t?e.replace(cwe,n=>{for(;;){const[r,,o]=lwe.exec(n)||[];if(!o)return"";if(o===t)return`src: ${r};`}}):e}function QQ(e){return e.search(YQ)!==-1}async function JQ(e,t,n){if(!QQ(e))return e;const r=fwe(e,n);return dwe(r).reduce((i,a)=>i.then(s=>hwe(s,a,t,n)),Promise.resolve(r))}async function R1(e,t,n){var r;const o=(r=t.style)===null||r===void 0?void 0:r.getPropertyValue(e);if(o){const i=await JQ(o,null,n);return t.style.setProperty(e,i,t.style.getPropertyPriority(e)),!0}return!1}async function pwe(e,t){await R1("background",e,t)||await R1("background-image",e,t),await R1("mask",e,t)||await R1("-webkit-mask",e,t)||await R1("mask-image",e,t)||await R1("-webkit-mask-image",e,t)}async function ywe(e,t){const n=An(e,HTMLImageElement);if(!(n&&!eD(e.src))&&!(An(e,SVGImageElement)&&!eD(e.href.baseVal)))return;const r=n?e.src:e.href.baseVal,o=await MH(r,wH(r),t);await new Promise((i,a)=>{e.onload=i,e.onerror=t.onImageErrorHandler?(...l)=>{try{i(t.onImageErrorHandler(...l))}catch(c){a(c)}}:a;const s=e;s.decode&&(s.decode=i),s.loading==="lazy"&&(s.loading="eager"),n?(e.srcset="",e.src=o):e.href.baseVal=o})}async function mwe(e,t){const r=Di(e.childNodes).map(o=>eJ(o,t));await Promise.all(r).then(()=>e)}async function eJ(e,t){An(e,Element)&&(await pwe(e,t),await ywe(e,t),await mwe(e,t))}function kwe(e,t){const{style:n}=e;t.backgroundColor&&(n.backgroundColor=t.backgroundColor),t.width&&(n.width=`${t.width}px`),t.height&&(n.height=`${t.height}px`);const r=t.style;return r!=null&&Object.keys(r).forEach(o=>{n[o]=r[o]}),e}const sB={};async function lB(e){let t=sB[e];if(t!=null)return t;const r=await(await fetch(e)).text();return t={url:e,cssText:r},sB[e]=t,t}async function cB(e,t){let n=e.cssText;const r=/url\(["']?([^"')]+)["']?\)/g,i=(n.match(/url\([^)]+\)/g)||[]).map(async a=>{let s=a.replace(r,"$1");return s.startsWith("https://")||(s=new URL(s,e.url).href),KQ(s,t.fetchRequestInit,({result:l})=>(n=n.replace(a,`url(${l})`),[a,l]))});return Promise.all(i).then(()=>n)}function uB(e){if(e==null)return[];const t=[],n=/(\/\*[\s\S]*?\*\/)/gi;let r=e.replace(n,"");const o=new RegExp("((@.*?keyframes [\\s\\S]*?){([\\s\\S]*?}\\s*?)})","gi");for(;;){const l=o.exec(r);if(l===null)break;t.push(l[0])}r=r.replace(o,"");const i=/@import[\s\S]*?url\([^)]*\)[\s\S]*?;/gi,a="((\\s*?(?:\\/\\*[\\s\\S]*?\\*\\/)?\\s*?@media[\\s\\S]*?){([\\s\\S]*?)}\\s*?})|(([\\s\\S]*?){([\\s\\S]*?)})",s=new RegExp(a,"gi");for(;;){let l=i.exec(r);if(l===null){if(l=s.exec(r),l===null)break;i.lastIndex=s.lastIndex}else s.lastIndex=i.lastIndex;t.push(l[0])}return t}async function gwe(e,t){const n=[],r=[];return e.forEach(o=>{if("cssRules"in o)try{Di(o.cssRules||[]).forEach((i,a)=>{if(i.type===CSSRule.IMPORT_RULE){let s=a+1;const l=i.href,c=lB(l).then(h=>cB(h,t)).then(h=>uB(h).forEach(d=>{try{o.insertRule(d,d.startsWith("@import")?s+=1:o.cssRules.length)}catch(f){console.error("Error inserting rule from remote css",{rule:d,error:f})}})).catch(h=>{console.error("Error loading remote css",h.toString())});r.push(c)}})}catch(i){const a=e.find(s=>s.href==null)||document.styleSheets[0];o.href!=null&&r.push(lB(o.href).then(s=>cB(s,t)).then(s=>uB(s).forEach(l=>{a.insertRule(l,a.cssRules.length)})).catch(s=>{console.error("Error loading remote stylesheet",s)})),console.error("Error inlining remote css file",i)}}),Promise.all(r).then(()=>(e.forEach(o=>{if("cssRules"in o)try{Di(o.cssRules||[]).forEach(i=>{n.push(i)})}catch(i){console.error(`Error while reading CSS rules from ${o.href}`,i)}}),n))}function xwe(e){return e.filter(t=>t.type===CSSRule.FONT_FACE_RULE).filter(t=>QQ(t.style.getPropertyValue("src")))}async function vwe(e,t){if(e.ownerDocument==null)throw new Error("Provided element is not within a Document");const n=Di(e.ownerDocument.styleSheets),r=await gwe(n,t);return xwe(r)}function tJ(e){return e.trim().replace(/["']/g,"")}function wwe(e){const t=new Set;function n(r){(r.style.fontFamily||getComputedStyle(r).fontFamily).split(",").forEach(i=>{t.add(tJ(i))}),Array.from(r.children).forEach(i=>{i instanceof HTMLElement&&n(i)})}return n(e),t}async function Mwe(e,t){const n=await vwe(e,t),r=wwe(e);return(await Promise.all(n.filter(i=>r.has(tJ(i.style.fontFamily))).map(i=>{const a=i.parentStyleSheet?i.parentStyleSheet.href:null;return JQ(i.cssText,a,t)}))).join(`
|
|
7838
|
-
`)}async function bwe(e,t){const n=t.fontEmbedCSS!=null?t.fontEmbedCSS:t.skipFonts?null:await Mwe(e,t);if(n){const r=document.createElement("style"),o=document.createTextNode(n);r.appendChild(o),e.firstChild?e.insertBefore(r,e.firstChild):e.appendChild(r)}}async function Cwe(e,t={}){const{width:n,height:r}=ZQ(e,t),o=await Tz(e,t,!0);return await bwe(o,t),await eJ(o,t),kwe(o,t),await q3e(o,n,r)}async function Swe(e,t={}){const{width:n,height:r}=ZQ(e,t),o=await Cwe(e,t),i=await CR(o),a=document.createElement("canvas"),s=a.getContext("2d"),l=t.pixelRatio||H3e(),c=t.canvasWidth||n,h=t.canvasHeight||r;return a.width=c*l,a.height=h*l,t.skipAutoScale||F3e(a),a.style.width=`${c}`,a.style.height=`${h}`,t.backgroundColor&&(s.fillStyle=t.backgroundColor,s.fillRect(0,0,a.width,a.height)),s.drawImage(i,0,0,a.width,a.height),a}async function Lwe(e,t={}){return(await Swe(e,t)).toDataURL()}const Iwe=e=>e instanceof Element?!(e.classList.contains("react-flow__minimap")||e.classList.contains("react-flow__controls")||e.classList.contains("react-flow__panel")):!0,dB="#0a0a0c",Ewe=e=>{let t=e;for(;t&&!t.classList.contains("seeflow-canvas-root");)t=t.parentElement;if(!t)return dB;const n=getComputedStyle(t).getPropertyValue("--bg-canvas").trim();return n.length>0?n:dB},Awe=async e=>{const t=await Lwe(e,{cacheBust:!0,filter:Iwe,backgroundColor:Ewe(e)}),n=await new Promise((r,o)=>{const i=new Image;i.onload=()=>r({width:i.naturalWidth,height:i.naturalHeight}),i.onerror=()=>o(new Error("Failed to decode captured image")),i.src=t});return{dataUrl:t,...n}},Pwe=(e,t)=>{const n=document.createElement("a");n.href=e,n.download=t,n.rel="noopener",document.body.appendChild(n),n.click(),n.remove()},Rwe=e=>{const t=e.replace(/[^A-Za-z0-9_-]+/g,"-").replace(/^-+|-+$/g,"");return t.length>0?t.slice(0,80):"canvas"},hB=(e,t)=>`${Rwe(e??"canvas")}.${t}`,zwe=({projectId:e,getReactFlow:t})=>{const[n,r]=m.useState(null),o=m.useCallback(()=>r(null),[]),i=m.useCallback(async()=>{const c=t();if(!c)return null;const h=document.querySelector(".react-flow__viewport");if(!h)return null;const d=c.getViewport();try{return await c.fitView({duration:0,padding:.1}),await new Promise(f=>requestAnimationFrame(()=>f())),await Awe(h)}finally{c.setViewport(d,{duration:0})}},[t]),a=m.useCallback(async()=>{r(null);try{const c=await i();if(!c)return;Pwe(c.dataUrl,hB(e,"png"))}catch(c){r(c instanceof Error?c.message:String(c))}},[i,e]),s=m.useCallback(async()=>{r(null);try{const c=await i();if(!c)return;const{jsPDF:h}=await j3e(async()=>{const{jsPDF:p}=await import("./jspdf.es.min-D7KeFi-m.js").then(k=>k.j);return{jsPDF:p}},[]),d=c.width>c.height?"landscape":"portrait",f=new h({orientation:d,unit:"px",format:[c.width,c.height],hotfixes:["px_scaling"]});f.addImage(c.dataUrl,"PNG",0,0,c.width,c.height),f.save(hB(e,"pdf"))}catch(c){r(c instanceof Error?c.message:String(c))}},[i,e]),l=m.useCallback(async()=>{const c=await i();return c==null?void 0:c.dataUrl},[i]);return{exportPdf:s,exportPng:a,capturePreview:l,lastError:n,clearError:o}},jwe=12,Twe=1200;function Nwe(e,t={}){const n=t.idleMs??Twe;let r,o=null,i=null;const a=typeof requestAnimationFrame<"u",s=()=>{r!==void 0&&(clearTimeout(r),r=void 0)},l=()=>{i!==null&&typeof cancelAnimationFrame<"u"&&cancelAnimationFrame(i),i=null},c=()=>{if(i=null,!o)return;const{clientX:p,clientY:k}=o;o=null;const v=e.getBoundingClientRect();e.style.setProperty("--mx",`${p-v.left}px`),e.style.setProperty("--my",`${k-v.top}px`),e.dataset.active="true",s(),r=setTimeout(()=>{e.dataset.active="false",r=void 0},n)};return{onMove:p=>{if(o={clientX:p.clientX,clientY:p.clientY},!a){c();return}i===null&&(i=requestAnimationFrame(c))},onLeave:()=>{l(),o=null,s(),e.dataset.active="false"},dispose:()=>{l(),o=null,s()}}}function Dwe(){const e=m.useRef(null),t=_e(a=>a.transform,(a,s)=>a[0]===s[0]&&a[1]===s[1]&&a[2]===s[2]),[n,r,o]=t,i=jwe*o;return m.useEffect(()=>{var d;const a=e.current;if(!a)return;const s=(d=a.parentElement)==null?void 0:d.querySelector(".react-flow__pane");if(!s)return;const{onMove:l,onLeave:c,dispose:h}=Nwe(a);return s.addEventListener("mousemove",l,{passive:!0}),s.addEventListener("mouseleave",c,{passive:!0}),()=>{s.removeEventListener("mousemove",l),s.removeEventListener("mouseleave",c),h()}},[]),y.jsx("div",{ref:e,className:"glow-overlay","data-active":"false","data-testid":"canvas-glow-overlay",style:{backgroundPosition:`${n}px ${r}px`,backgroundSize:`${i}px ${i}px`}})}const _we={showToolbar:!0,showStyleStrip:!0,showDetailPanel:!0,showStatusBadges:!0,showResizeHandles:!0,showControls:!0,showShareMenu:!0,showRestart:!0,enableKeyboard:!0,enableContextMenu:!0,enableDragDrop:!0,enableImageDrop:!0,enableZoom:!0,enablePan:!0,enableSelection:!0,enableNodeMove:!0,enableEmbed:!1},Hwe={showToolbar:!1,showStyleStrip:!1,showDetailPanel:!1,showStatusBadges:!0,showResizeHandles:!1,showControls:!0,showShareMenu:!0,showRestart:!1,enableKeyboard:!1,enableContextMenu:!1,enableDragDrop:!1,enableImageDrop:!1,enableZoom:!0,enablePan:!0,enableSelection:!0,enableNodeMove:!0,enableEmbed:!1},Fwe={showToolbar:!1,showStyleStrip:!1,showDetailPanel:!1,showStatusBadges:!1,showResizeHandles:!1,showControls:!1,showShareMenu:!1,showRestart:!1,enableKeyboard:!1,enableContextMenu:!1,enableDragDrop:!1,enableImageDrop:!1,enableZoom:!1,enablePan:!1,enableSelection:!1,enableNodeMove:!1,enableEmbed:!1};function Owe(e){const t=e.mode==="edit"?_we:e.mode==="mini"?Fwe:Hwe;return{showToolbar:e.showToolbar??t.showToolbar,showStyleStrip:e.showStyleStrip??t.showStyleStrip,showDetailPanel:e.showDetailPanel??t.showDetailPanel,showStatusBadges:e.showStatusBadges??t.showStatusBadges,showResizeHandles:e.showResizeHandles??t.showResizeHandles,showControls:e.showControls??t.showControls,showShareMenu:e.showShareMenu??t.showShareMenu,showRestart:e.showRestart??t.showRestart,enableKeyboard:e.enableKeyboard??t.enableKeyboard,enableContextMenu:e.enableContextMenu??t.enableContextMenu,enableDragDrop:e.enableDragDrop??t.enableDragDrop,enableImageDrop:e.enableImageDrop??t.enableImageDrop,enableZoom:e.enableZoom??t.enableZoom,enablePan:e.enablePan??t.enablePan,enableSelection:e.enableSelection??t.enableSelection,enableNodeMove:e.enableNodeMove??t.enableNodeMove,enableEmbed:e.enableEmbed??t.enableEmbed}}const fB=40,Ad={padding:.15,duration:300,includeHiddenNodes:!1};function qwe(e){return e===void 0||e===!1?{onMount:!1,onExternalNodeChange:!1}:e===!0?{onMount:!0,onExternalNodeChange:!0}:{onMount:e.onMount??!0,onExternalNodeChange:e.onExternalNodeChange??!0}}const pB=e=>{if("clientX"in e)return{clientX:e.clientX,clientY:e.clientY};const t=e.changedTouches[0]??e.touches[0];return t?{clientX:t.clientX,clientY:t.clientY}:null},Vwe=(e,t)=>{var r;const n=document.elementsFromPoint(e,t);for(const o of n){const i=(r=o.closest)==null?void 0:r.call(o,".react-flow__node");if(i)return i}return null},nJ=15,sT=(e,t,n)=>{const r=Vwe(t,n);if(r)return r;if(!e)return null;let o=null,i=nJ;const a=e.querySelectorAll(".react-flow__node");for(const s of a){const l=s.getBoundingClientRect();if(l.width===0||l.height===0)continue;const c=Math.max(l.left-t,0,t-l.right),h=Math.max(l.top-n,0,n-l.bottom),d=Math.hypot(c,h);d<=i&&(o=s,i=d)}return o};function yB(e,t,n,r,o){if(e==="source"?(r==null?void 0:r.targetPin)!==void 0||(r==null?void 0:r.targetHandleAutoPicked)===!1:(r==null?void 0:r.sourcePin)!==void 0||(r==null?void 0:r.sourceHandleAutoPicked)===!1)return;const a=e==="source"?n:t,s=e==="source"?t:n,l=o(a),c=o(s);if(!l||!c)return;const h=l.measured.width??l.width??0,d=l.measured.height??l.height??0,f=c.measured.width??c.width??0,p=c.measured.height??c.height??0;if(h===0||d===0||f===0||p===0)return;const k={x:l.internals.positionAbsolute.x,y:l.internals.positionAbsolute.y,w:h,h:d},v={x:c.internals.positionAbsolute.x+f/2,y:c.internals.positionAbsolute.y+p/2};return rue(k,sR(k,v))}function Bwe(e,t,n,r){if(r===null)return"no-op";const o=e==="source"?t:n;return r===(e==="source"?n:t)?"self-loop":r===o?"pin-own":"reconnect-and-pin"}const $we=(e,t)=>{if(!t)return e;const n=t.data?{...e.data,...t.data}:e.data;return{...e,...t,data:n}},Uwe=(e,t)=>t?{...e,...t}:e,Wwe={playNode:f0e,stateNode:T0e,shapeNode:L0e,imageNode:nde,iconNode:pue,htmlNode:Yue},Gwe={editableEdge:_0e},Zwe={zIndex:0},Kwe=8,mB=(e,t)=>e?typeof e=="string"?`url('#${e}')`:`url('#${`${t?`${t}__`:""}${Object.keys(e).sort().map(o=>`${o}=${e[o]}`).join("&")}`}')`:void 0,Xwe=e=>function({fromX:n,fromY:r,toX:o,toY:i,fromPosition:a,toPosition:s,connectionLineStyle:l}){const c=_e(W=>e.current?W.edges.find(H=>H.reconnectable===!0)??null:null),h=c==null?void 0:c.data,d=_e(W=>{var j;const H=W.connection;return((j=H==null?void 0:H.fromHandle)==null?void 0:j.nodeId)??null}),f=_e(W=>c!=null&&c.source?W.nodeLookup.get(c.source)??null:null),p=_e(W=>c!=null&&c.target?W.nodeLookup.get(c.target)??null:null),k=_e(W=>d?W.nodeLookup.get(d)??null:null),v=(c==null?void 0:c.source)===d,w=c?v?f:p:k,g=v?p:f,M=v?h==null?void 0:h.sourcePin:h==null?void 0:h.targetPin,x=v?h==null?void 0:h.sourceHandleAutoPicked:h==null?void 0:h.targetHandleAutoPicked;let b=n,S=r,C=a;if(w){const W=w.measured.width??w.width??0,H=w.measured.height??w.height??0;if(W>0&&H>0){const j={x:w.internals.positionAbsolute.x,y:w.internals.positionAbsolute.y,w:W,h:H};let G=null;if(M)G=lR(j,M);else if(x!==!1&&g){const X=g.measured.width??g.width??0,Y=g.measured.height??g.height??0;if(X>0&&Y>0){const re={x:g.internals.positionAbsolute.x+X/2,y:g.internals.positionAbsolute.y+Y/2};G=sR(j,re)}}G&&(b=G.x,S=G.y,C=kB[G.side])}}const L=_e(W=>W.transform[2]),P=_e(W=>W.nodeLookup),T=_e(W=>{var H;return((H=W.connection.toHandle)==null?void 0:H.nodeId)??null});let E=o,z=i,A=s;if(L>0){const W=nJ/L,H=c?v?c.target:c.source:null;let j=null;if(T&&T!==H){const G=P.get(T)??null;G&&(j=G)}if(!j){let G=W;for(const X of P.values()){if(H&&X.id===H||w&&X.id===w.id)continue;const Y=X.measured.width??X.width??0,re=X.measured.height??X.height??0;if(Y===0||re===0)continue;const ne=X.internals.positionAbsolute.x,ae=X.internals.positionAbsolute.y,ve=Math.max(ne-o,0,o-(ne+Y)),be=Math.max(ae-i,0,i-(ae+re)),me=Math.hypot(ve,be);me<=G&&(G=me,j=X)}}if(!j&&c&&w){const G=w.measured.width??w.width??0,X=w.measured.height??w.height??0;if(G>0&&X>0){const Y=w.internals.positionAbsolute.x,re=w.internals.positionAbsolute.y,ne=Math.max(Y-o,0,o-(Y+G)),ae=Math.max(re-i,0,i-(re+X));Math.hypot(ne,ae)<=W&&(j=w)}}if(j){const G=j.measured.width??j.width??0,X=j.measured.height??j.height??0;if(G>0&&X>0){const Y=wN({x:j.internals.positionAbsolute.x,y:j.internals.positionAbsolute.y,w:G,h:X},{x:o,y:i}),re=lR({x:j.internals.positionAbsolute.x,y:j.internals.positionAbsolute.y,w:G,h:X},Y);E=re.x,z=re.y,A=kB[re.side]}}}const U=(h==null?void 0:h.path)==="step",[R]=U?nh({sourceX:b,sourceY:S,sourcePosition:C,targetX:E,targetY:z,targetPosition:A,borderRadius:Kwe}):KR({sourceX:b,sourceY:S,sourcePosition:C,targetX:E,targetY:z,targetPosition:A}),V=(c==null?void 0:c.style)??l??void 0,O=_e(W=>W.rfId),B=v?c==null?void 0:c.markerStart:c==null?void 0:c.markerEnd,D=v?c==null?void 0:c.markerEnd:c==null?void 0:c.markerStart,N=mB(B,O),I=mB(D,O);return y.jsx("path",{d:R,fill:"none",className:"react-flow__connection-path",style:V,markerStart:N,markerEnd:I})},kB={top:ye.Top,right:ye.Right,bottom:ye.Bottom,left:ye.Left};function Ywe({storeApiRef:e}){const t=yt();return m.useEffect(()=>(e.current=t,()=>{e.current===t&&(e.current=null)}),[t,e]),null}function Qwe({wrapperRef:e}){const t=_e(r=>r.transform[2]),n=e.current;return n&&n.style.setProperty("--rf-zoom",String(t)),null}const Jwe=new Set(["INPUT","TEXTAREA","SELECT"]),rJ=e=>e?Jwe.has(e.tagName)?!0:e instanceof HTMLElement&&e.isContentEditable:!1;function e6e(e){const{event:t,selectedNodeIds:n,hasClipboard:r,activeElement:o,onCopySelection:i,onPasteSelection:a}=e;if(!(t.metaKey||t.ctrlKey)||t.shiftKey||t.altKey)return!1;const s=t.key.toLowerCase();return s!=="c"&&s!=="v"||rJ(o)?!1:s==="c"?n.length===0||!i?!1:(t.preventDefault(),i([...n]),!0):!r||!a?!1:(t.preventDefault(),a(),!0)}const gB=(e,t)=>{var n;return((n=e==null?void 0:e[t])==null?void 0:n.status)??"idle"},t6e=(e,t)=>{var n;return(n=e==null?void 0:e[t])==null?void 0:n.status},n6e=(e,t)=>{var n,r;return((n=e==null?void 0:e[t])==null?void 0:n.status)==="error"?(r=e[t])==null?void 0:r.error:void 0};function r6e(e,t){var NH,DH;const{mode:n,adapter:r,projectId:o,fileBaseUrl:i,nodes:a,connectors:s,selectedNodeIds:l,selectedConnectorIds:c,onSelectionChange:h,runtime:d,onPlayNode:f,onNodePositionChange:p,onNodePositionsChange:k,onNodeResize:v,onNodeResizeEnd:w,onHtmlNodeFitToContent:g,onMultiResize:M,onNodeNameChange:x,onNodeDescriptionChange:b,onConnectorLabelChange:S,onCreateShapeNode:C,onCreateImageFromFile:L,onRetryImageUpload:P,onCreateHtmlNode:T,onCreateConnector:E,onReconnectConnector:z,onReorderNode:A,onDeleteNode:U,onCopyNode:R,onPasteAt:V,hasClipboard:O,onCopySelection:B,onPasteSelection:D,selectedNodes:N,selectedConnectors:I,onStyleNode:W,onStyleNodePreview:H,onStyleNodes:j,onStyleNodesPreview:G,onStyleConnector:X,onStyleConnectorPreview:Y,onRfInit:re,onTidy:ne,onNodeClick:ae,onConnectorClick:ve,onPaneClick:be,onCreateAndConnectFromPane:me,pendingEditNodeId:ge,iconPickerOpen:ee,onOpenIconPicker:ke,onCloseIconPicker:Fe,onPickIcon:rt,onRequestIconReplace:mt,onPinEndpoint:ht,onUnpinEndpoint:le,activeShape:Q,onSelectShape:fe,disableSidebar:we,statusReport:Se,onNameChange:Oe,onDescriptionChange:te,onDetailChange:de,onIconChange:Pe,autoFitView:qe,autoFitViewSignal:We,customIcons:Rt,onExportToCloud:st,onRestartDemo:Ne,showToolbar:ot,showStyleStrip:Jn,showDetailPanel:zt,showStatusBadges:zn,showResizeHandles:Kt,showControls:p1,showShareMenu:y1,showRestart:Jo,enableKeyboard:ei,enableContextMenu:_r,enableDragDrop:Ki,enableImageDrop:ti,enableZoom:fr,enablePan:Hr,enableSelection:pr,enableNodeMove:m1,enableEmbed:k1}=e,He=m.useMemo(()=>Owe({mode:n,showToolbar:ot,showStyleStrip:Jn,showDetailPanel:zt,showStatusBadges:zn,showResizeHandles:Kt,showControls:p1,showShareMenu:y1,showRestart:Jo,enableKeyboard:ei,enableContextMenu:_r,enableDragDrop:Ki,enableImageDrop:ti,enableZoom:fr,enablePan:Hr,enableSelection:pr,enableNodeMove:m1,enableEmbed:k1}),[n,ot,Jn,zt,zn,Kt,p1,y1,Jo,ei,_r,Ki,ti,fr,Hr,pr,m1,k1]),Mt=n==="edit",Fr=m.useRef(He);m.useEffect(()=>{Fr.current=He},[He]);const Or=qe??(n==="mini"?!0:void 0),jn=m.useMemo(()=>qwe(Or),[Or]),yr=d==null?void 0:d.runs,Mo=d==null?void 0:d.statuses,er=(NH=d==null?void 0:d.pendingOverrides)==null?void 0:NH.nodes,qr=(DH=d==null?void 0:d.pendingOverrides)==null?void 0:DH.connectors,an=m.useRef(null),jt=m.useRef(null),bo=m.useRef(!1),mr=m.useRef(!1),Xi=m.useRef(!1),Yi=m.useRef(jn);Yi.current=jn,m.useEffect(()=>{if(bo.current||!jn.onMount||a.length===0)return;const K=jt.current;K&&(K.fitView(Ad),bo.current=!0)},[a,jn.onMount]);const Co=m.useRef(null),Ct=Q,Qi=fe,Tn=m.useRef(new Map),ni=m.useCallback((K,J)=>(Tn.current.set(K,J),()=>{Tn.current.get(K)===J&&Tn.current.delete(K)}),[]),[tr,kr]=m.useState(!1),g1=m.useRef(!1);m.useEffect(()=>{g1.current=tr},[tr]);const Ji=m.useRef(!1),ea=m.useRef(!1),ri=m.useRef(!1),[mn,Vr]=m.useState(null),Br=m.useRef(null);m.useEffect(()=>{Br.current=mn},[mn]),m.useCallback(()=>{Vr(null)},[]);const x1=m.useMemo(()=>Xwe(ri),[]),So=m.useRef(null),nr=m.useRef(null),kn=m.useCallback(K=>{const J=an.current;if(!J){So.current=K;return}const se=So.current;if(se&&se!==K){const ce=J.querySelector(`.react-flow__node[data-id="${CSS.escape(se)}"]`);ce==null||ce.removeAttribute("data-connect-source")}if(K){const ce=J.querySelector(`.react-flow__node[data-id="${CSS.escape(K)}"]`);ce==null||ce.setAttribute("data-connect-source","true")}So.current=K},[]),sn=m.useCallback(K=>{const J=an.current,se=nr.current;if(se!==K){if(J&&se){const ce=J.querySelector(`.react-flow__node[data-id="${CSS.escape(se)}"]`);ce==null||ce.removeAttribute("data-connect-target")}if(J&&K){const ce=J.querySelector(`.react-flow__node[data-id="${CSS.escape(K)}"]`);ce==null||ce.setAttribute("data-connect-target","true")}nr.current=K}},[]),oi=m.useCallback(()=>{kn(null),sn(null)},[kn,sn]);m.useEffect(()=>{if(!tr){sn(null);return}let K=null,J=null;const se=()=>{K=null;const ue=J;if(J=null,!ue)return;const Re=sT(an.current,ue.clientX,ue.clientY),xe=(Re==null?void 0:Re.getAttribute("data-id"))??null;if(xe&&xe===So.current){sn(null);return}sn(xe)},ce=ue=>{J={clientX:ue.clientX,clientY:ue.clientY},K===null&&(K=requestAnimationFrame(se))};return document.addEventListener("pointermove",ce,{passive:!0}),()=>{document.removeEventListener("pointermove",ce),K!==null&&cancelAnimationFrame(K)}},[tr,sn]);const[rr,$r]=m.useState(null),[Ur,Lo]=m.useState(null),Je=m.useRef(null),Wr=m.useRef(null),Nn=m.useRef(null),Xt=m.useRef(!1);m.useEffect(()=>{Je.current=Ct},[Ct]);const Gr=m.useCallback(()=>{Qi(null),$r(null),Lo(null),Je.current=null,Wr.current=null,Nn.current=null,Xt.current=!1},[Qi]);m.useEffect(()=>{if(!He.enableKeyboard)return;const K=J=>{var ue,Re;if(J.key!=="Escape"||rJ(document.activeElement))return;if(Je.current){J.preventDefault(),Gr();return}if(g1.current){J.preventDefault(),Ji.current=!0,ea.current=!0;try{(ue=Co.current)==null||ue.getState().cancelConnection()}catch{}document.dispatchEvent(new MouseEvent("mouseup",{bubbles:!0,cancelable:!0,button:0})),kr(!1);return}if(Br.current){J.preventDefault(),Vr(null);return}const se=vn.current.size>0,ce=Po.current.size>0;(se||ce)&&(J.preventDefault(),(Re=Zr.current)==null||Re.call(Zr,[],[]))};return window.addEventListener("keydown",K),()=>window.removeEventListener("keydown",K)},[Gr,He.enableKeyboard]),m.useEffect(()=>{if(!He.enableKeyboard)return;const K=J=>{e6e({event:J,selectedNodeIds:l,hasClipboard:!!O,activeElement:document.activeElement,onCopySelection:B,onPasteSelection:D})};return window.addEventListener("keydown",K),()=>window.removeEventListener("keydown",K)},[l,O,B,D,He.enableKeyboard]);const v1=m.useCallback(K=>{var ce,ue;if(!Je.current)return;const J=K.target;if(!(J!=null&&J.classList.contains("react-flow__pane")))return;const se={x:K.clientX,y:K.clientY};Xt.current=!0,Wr.current=se,Nn.current=se,$r(se),Lo(se);try{(ue=(ce=K.currentTarget).setPointerCapture)==null||ue.call(ce,K.pointerId)}catch{}K.preventDefault(),K.stopPropagation()},[]),Dz=m.useCallback(K=>{if(!Xt.current)return;const J={x:K.clientX,y:K.clientY};Nn.current=J,Lo(J)},[]),Kh=m.useCallback(K=>{var Xr,dd;if(!Xt.current)return;Xt.current=!1;try{(dd=(Xr=K.currentTarget).releasePointerCapture)==null||dd.call(Xr,K.pointerId)}catch{}const J=Wr.current,se=Nn.current,ce=Je.current,ue=jt.current;if(Gr(),!J||!se||!ce||!ue)return;const Re=Math.min(J.x,se.x),xe=Math.min(J.y,se.y),Ee=Math.max(J.x,se.x),Ke=Math.max(J.y,se.y),et=Ee-Re,lt=Ke-xe,Te=ue.screenToFlowPosition({x:Re,y:xe}),wn=ue.screenToFlowPosition({x:Ee,y:Ke}),Kr=wn.x-Te.x,ct=wn.y-Te.y,Le=et<fB||lt<fB,Ft=Le?pR[ce].width:Kr,w1=Le?pR[ce].height:ct;C==null||C(ce,Te,{width:Ft,height:w1})},[Gr,C]),Io=m.useRef(!1),ta=m.useRef(!1),id=m.useRef(new Map),ii=m.useCallback(()=>{var K;mr.current&&(ta.current||Io.current||(mr.current=!1,(K=jt.current)==null||K.fitView(Ad)))},[]),ad=m.useCallback(K=>{ta.current=K,K||ii()},[ii]);m.useEffect(()=>{var K;if(!Xi.current){Xi.current=!0;return}if(Yi.current.onExternalNodeChange){if(ta.current||Io.current){mr.current=!0;return}(K=jt.current)==null||K.fitView(Ad)}},[We]);const sd=!!A||!!U||!!R||!!V||!!le,[F,q]=m.useState(null),[Z,$]=m.useState(!1),[_,oe]=m.useState(null),[Ae,Me]=m.useState(null),Ue=m.useRef(null),Ut=m.useRef(null);m.useEffect(()=>{if(!F)return;const K=Ut.current;if(!K)return;const J=new MouseEvent("contextmenu",{clientX:F.x,clientY:F.y,bubbles:!0,cancelable:!0,button:2,buttons:2});K.dispatchEvent(J)},[F]);const Eo=m.useCallback(K=>{const J=Ue.current;!J||!A||A(J,K)},[A]),Dn=m.useCallback(()=>{const K=Ue.current;!K||!U||U(K)},[U]),ze=m.useCallback(()=>{const K=Ue.current;!K||!R||R(K)},[R]),it=m.useCallback(()=>{const K=Ue.current;!K||!mt||mt(K)},[mt]);m.useCallback((K,J,se,ce,ue)=>{Fr.current.enableContextMenu&&(Ue.current=null,$(!1),oe(null),Me({connectorId:K,kind:J,pinned:se}),q({x:ce,y:ue}))},[]);const Yt=m.useCallback(()=>{const K=Ae;!K||!le||le(K.connectorId,K.kind)},[Ae,le]),gn=m.useCallback(()=>{if(!V)return;const K=F,J=jt.current;if(!K||!J)return;const se=J.screenToFlowPosition({x:K.x,y:K.y});V(se)},[F,V]),na=typeof navigator<"u"&&/Mac|iPhone|iPad|iPod/.test(navigator.platform||navigator.userAgent||""),_z=na?"⌘C":"Ctrl+C",ai=na?"⌘V":"Ctrl+V",De=m.useMemo(()=>new Set(l),[l]),Qe=m.useMemo(()=>new Set(c),[c]),Ht=m.useMemo(()=>{if(l.length<2)return[];const K=er,J=[];for(const se of l){const ce=a.find(Ee=>Ee.id===se);if(!ce)continue;const ue=K==null?void 0:K[se],Re=(ue==null?void 0:ue.data)??{},xe=ce.data;J.push({id:se,position:(ue==null?void 0:ue.position)??ce.position,data:{width:Re.width??xe.width,height:Re.height??xe.height}})}return J},[a,er,l]),xn=N??[],Ao=m.useMemo(()=>{const K=ue=>{const Re=Mt?void 0:id.current.get(ue.id),xe={id:ue.id,type:ue.type,position:Re??ue.position,data:{...ue.data,projectId:o,fileBaseUrl:i,onRetryUpload:P,status:t6e(yr,ue.id),errorMessage:n6e(yr,ue.id),statusReport:Mo==null?void 0:Mo[ue.id],onPlay:f,onResize:v,onResizeEnd:w,setResizing:ad,onFitToContent:ue.type==="htmlNode"?g:void 0,onNameChange:(()=>{if(Mt&&!(ue.type==="shapeNode"&&ue.data.shape==="ellipse"))return x})(),onDescriptionChange:(()=>{if(Mt){if(ue.type==="shapeNode"){const Ee=ue.data.shape;return Ee==="rectangle"||Ee==="ellipse"||Ee==="sticky"?b:void 0}if(!(ue.type==="imageNode"||ue.type==="iconNode"))return b}})(),onIconChange:(()=>{if(Mt&&!(ue.type!=="playNode"&&ue.type!=="stateNode"))return Pe})(),autoEditOnMount:ge===ue.id?!0:void 0},selected:De.has(ue.id)};return ue.data.width!==void 0&&(xe.width=ue.data.width),ue.data.height!==void 0&&(xe.height=ue.data.height),De.has(ue.id)||(xe.connectable=!1),xe},J=a.map(ue=>K($we(ue,er==null?void 0:er[ue.id]))),se=new Set(a.map(ue=>ue.id)),ce=[];if(er)for(const[ue,Re]of Object.entries(er)){if(se.has(ue))continue;const xe=Re;typeof xe.type!="string"||!xe.position||!xe.data||ce.push(K({...xe,id:ue}))}return[...J,...ce]},[o,i,a,De,yr,Mo,f,v,w,g,ad,er,x,b,Pe,P,ge,Mt]),[ra,ld]=m.useState(Ao);m.useEffect(()=>{Io.current||ta.current||ld(Ao)},[Ao]),m.useEffect(()=>{cd.current=ra},[ra]);const vn=m.useRef(De);m.useEffect(()=>{vn.current=De},[De]);const Zr=m.useRef(h);m.useEffect(()=>{Zr.current=h},[h]);const Po=m.useRef(Qe);m.useEffect(()=>{Po.current=Qe},[Qe]);const cd=m.useRef(Ao),oa=m.useRef(!1),Xh=m.useRef(new Set),Yh=m.useRef(new Set),Hz=m.useRef(new Set),Fz=m.useRef(new Set),si=m.useRef(null),vJ=m.useCallback(K=>{var ct;const J=oa.current?Hz.current:(ct=si.current)!=null&&ct.shift?si.current.nodeIds:null,se=J&&J.size>0?K.filter(Le=>Le.type!=="select"?!0:!(Le.selected===!1&&J.has(Le.id))):K,ce=new Set;for(const Le of se)Le.type==="select"&&ce.add(Le.id);const ue=vG(se,cd.current),Re=new Set;if(ta.current)for(const Le of se)Le.type==="dimensions"&&Re.add(Le.id);const xe=Re.size===0?ue:ue.map(Le=>!Re.has(Le.id)||Le.width===void 0&&Le.height===void 0?Le:{...Le,data:{...Le.data,...Le.width!==void 0?{width:Le.width}:{},...Le.height!==void 0?{height:Le.height}:{}}}),Ee=vn.current,Ke=oa.current||Ee.size===0?xe:xe.map(Le=>Ee.has(Le.id)&&!ce.has(Le.id)&&!Le.selected?{...Le,selected:!0}:Le);if(cd.current=Ke,ld(Ke),ce.size===0)return;if(oa.current){for(const Le of se)Le.type==="select"&&(Le.selected?Xh.current.add(Le.id):Xh.current.delete(Le.id));return}const et=Zr.current;if(!et)return;const lt=Ke.filter(Le=>Le.selected).map(Le=>Le.id),Te=vn.current;Te.size===lt.length&<.every(Le=>Te.has(Le))||(vn.current=new Set(lt),et(lt,[...Po.current]))},[]),Qh=m.useRef([]),wJ=m.useCallback(K=>{var lt;const J=oa.current?Fz.current:(lt=si.current)!=null&<.shift?si.current.edgeIds:null,se=J&&J.size>0?K.filter(Te=>Te.type!=="select"?!0:!(Te.selected===!1&&J.has(Te.id))):K,ce=new Set;for(const Te of se)Te.type==="select"&&ce.add(Te.id);if(ce.size===0)return;if(oa.current){for(const Te of se)Te.type==="select"&&(Te.selected?Yh.current.add(Te.id):Yh.current.delete(Te.id));return}const ue=Zr.current;if(!ue)return;const xe=wG(se,Qh.current).filter(Te=>Te.selected).map(Te=>Te.id),Ee=Po.current;Ee.size===xe.length&&xe.every(Te=>Ee.has(Te))||(Po.current=new Set(xe),ue([...vn.current],xe))},[]),MJ=m.useCallback(K=>{oa.current=!0;const J=si.current,se=(J==null?void 0:J.shift)??(K.shiftKey||K.metaKey||K.ctrlKey);Hz.current=se?new Set((J==null?void 0:J.nodeIds)??vn.current):new Set,Fz.current=se?new Set((J==null?void 0:J.edgeIds)??Po.current):new Set,Xh.current=new Set(Hz.current),Yh.current=new Set(Fz.current)},[]),bJ=m.useCallback(()=>{oa.current=!1,si.current=null;const K=Zr.current;if(!K)return;const J=[...Xh.current],se=new Set(J),ce=new Set(Yh.current);for(const Ke of Qh.current)se.has(Ke.source)&&se.has(Ke.target)&&ce.add(Ke.id);const ue=vn.current,Re=Po.current,xe=ue.size===se.size&&J.every(Ke=>ue.has(Ke)),Ee=Re.size===ce.size&&[...ce].every(Ke=>Re.has(Ke));xe&&Ee||(vn.current=new Set(J),Po.current=new Set(ce),K(J,[...ce]))},[]),CJ=m.useCallback(K=>{if(si.current=null,Je.current||K.button!==0)return;const J=K.target;J!=null&&J.classList.contains("react-flow__pane")&&(si.current={shift:K.shiftKey||K.metaKey||K.ctrlKey,nodeIds:new Set(vn.current),edgeIds:new Set(Po.current)})},[]),SJ=m.useCallback(K=>{if(!Fr.current.enableContextMenu||vn.current.size<2)return;const se=K.target;se!==Ut.current&&(se!=null&&se.closest(".seeflow-connector-endpoint-dot")||(K.preventDefault(),K.stopPropagation(),Ue.current=null,$(!0),oe(null),Me(null),q({x:K.clientX,y:K.clientY})))},[]),LJ=m.useCallback(K=>{const J=K.dataTransfer;if(!J)return;const se=J.types?Array.from(J.types):[],ce=se.includes("Files"),ue=se.includes(Kq),Re=ce&&!!L&&He.enableImageDrop,xe=ue&&!!T&&He.enableDragDrop;if(!(!Re&&!xe)){K.preventDefault();try{J.dropEffect="copy"}catch{}}},[L,T,He.enableImageDrop,He.enableDragDrop]),IJ=m.useCallback(K=>{const J=K.dataTransfer;if((J!=null&&J.types?Array.from(J.types):[]).includes(Kq)&&T&&He.enableDragDrop){K.preventDefault();const Re=jt.current;if(!Re)return;const xe=Re.screenToFlowPosition({x:K.clientX,y:K.clientY});T({position:xe});return}if(!L||!He.enableImageDrop)return;const ue={x:K.clientX,y:K.clientY};K.preventDefault(),$ne({dataTransfer:J,clientPos:ue,rfInstance:jt.current,computeDims:Une,dispatch:L})},[L,T,He.enableImageDrop,He.enableDragDrop]),LH=!!z,IH=Qe.size===1?[...Qe][0]:null,Oz=m.useMemo(()=>{const K=Ee=>{const Ke=gB(yr,Ee.source)==="running"||gB(yr,Ee.target)==="running",et=Qe.has(Ee.id),lt=Y1e(Ee,Ke,et);et&&(lt.selected=!0);const Te=LH&&Ee.id===IH,wn=Te?{...lt,reconnectable:!0}:lt;return{...wn,data:{...wn.data,onLabelChange:Mt?S:void 0,reconnectable:Te,registerEditHandle:ni}}},J=new Set(s.map(Ee=>Ee.id)),se=s.map(Ee=>K(Uwe(Ee,qr==null?void 0:qr[Ee.id]))),ce=[];if(qr)for(const[Ee,Ke]of Object.entries(qr)){if(J.has(Ee))continue;const et=Ke;typeof et.source!="string"||typeof et.target!="string"||typeof et.kind!="string"||ce.push(K({...et,id:Ee}))}const ue=[...se,...ce],Re=[],xe=[];for(const Ee of ue)Qe.has(Ee.id)?xe.push(Ee):Re.push(Ee);return[...Re,...xe]},[s,yr,Qe,IH,qr,S,LH,ni,Mt]);m.useEffect(()=>{Qh.current=Oz},[Oz]);const ud=e.adapter??null,EJ=m.useMemo(()=>{if(ud!=null&&ud.computeLayout)return async()=>{const K=jt.current,J=cd.current;if(J.length<2)return;const se=J.map(ct=>{var dd;const Le=(dd=K==null?void 0:K.getInternalNode(ct.id))==null?void 0:dd.measured,Ft=ct.data,w1=(Le==null?void 0:Le.width)??Ft.width??200,Xr=(Le==null?void 0:Le.height)??Ft.height??120;return{id:ct.id,type:ct.type,width:w1,height:Xr}}),ce=new Map;for(const ct of J)ce.set(ct.id,ct.position);const ue=Qh.current.map(ct=>({id:ct.id,source:ct.source,target:ct.target})),Re=ud.computeLayout;if(!Re)return;const xe=await Re(se,ue),Ee=new Map;for(const[ct,Le]of Object.entries(xe.nodes))Ee.set(ct,Le.position);let Ke=Number.POSITIVE_INFINITY,et=Number.POSITIVE_INFINITY,lt=Number.POSITIVE_INFINITY,Te=Number.POSITIVE_INFINITY;for(const ct of se){const Le=ce.get(ct.id);if(!Le)continue;Le.x<Ke&&(Ke=Le.x),Le.y<et&&(et=Le.y);const Ft=Ee.get(ct.id);Ft&&(Ft.x<lt&&(lt=Ft.x),Ft.y<Te&&(Te=Ft.y))}const wn=Number.isFinite(Ke)&&Number.isFinite(lt)?Ke-lt:0,Kr=Number.isFinite(et)&&Number.isFinite(Te)?et-Te:0;ld(ct=>ct.map(Le=>{const Ft=Ee.get(Le.id);return Ft?{...Le,position:{x:Ft.x+wn,y:Ft.y+Kr}}:Le}))}},[ud]),Jh=ne??(Mt?void 0:EJ),e0=m.useRef(!1),EH=m.useRef(null),AJ=m.useCallback(K=>{var Ee;if(!Mt||!E)return;const{source:J,target:se}=K;if(!J||!se||J===se)return;e0.current=!0;const ce=((Ee=EH.current)==null?void 0:Ee.nodeId)??null,ue=ce!==null&&ce===se&&ce!==J;E(ue?se:J,ue?J:se)},[E,Mt]),qz=m.useCallback(K=>{const J=se=>{if(!se)return!1;const ce=cd.current.find(ue=>ue.id===se);return ce?ce.type==="shapeNode"&&ce.data.shape==="text":!1};return!J(K.source)&&!J(K.target)},[]),PJ=m.useCallback((K,J)=>{var lt;kr(!1),oi();const se=e0.current;if(e0.current=!1,se||ri.current)return;if(Ji.current){Ji.current=!1;return}if(!E)return;const ce=(lt=J.fromNode)==null?void 0:lt.id,ue=J.fromHandle;if(!ce||!ue)return;const Re=pB(K);if(!Re)return;const xe=sT(an.current,Re.clientX,Re.clientY);if(!xe)return;const Ee=xe.getAttribute("data-id");if(!Ee||Ee===ce||!qz({source:ce,target:Ee,sourceHandle:null,targetHandle:null}))return;let Ke;const et=jt.current;if(et){const Te=et.getInternalNode(Ee);if(Te){const wn=Te.measured.width??Te.width??0,Kr=Te.measured.height??Te.height??0;if(wn>0&&Kr>0){const ct=et.screenToFlowPosition({x:Re.clientX,y:Re.clientY});Ke=wN({x:Te.internals.positionAbsolute.x,y:Te.internals.positionAbsolute.y,w:wn,h:Kr},ct)}}}E(ce,Ee,Ke?{targetPin:Ke}:void 0)},[E,oi,qz]),t0=m.useRef(!1),RJ=m.useCallback((K,J)=>{if(!z)return;const{source:se,target:ce,sourceHandle:ue,targetHandle:Re}=J;if(!se||!ce||se===ce)return;const xe={};if(se!==K.source&&(xe.source=se),ce!==K.target&&(xe.target=ce),typeof ue=="string"&&ue!==K.sourceHandle&&(xe.sourceHandle=ue),typeof Re=="string"&&Re!==K.targetHandle&&(xe.targetHandle=Re),xe.source===void 0&&xe.target===void 0&&xe.sourceHandle===void 0&&xe.targetHandle===void 0)return;(xe.source!==void 0||xe.sourceHandle!==void 0)&&(xe.sourceHandleAutoPicked=!1),(xe.target!==void 0||xe.targetHandle!==void 0)&&(xe.targetHandleAutoPicked=!1);const Ee=jt.current;if(!(xe.source===void 0&&xe.target===void 0)&&Ee){const et=xe.source!==void 0?"source":"target",lt=yB(et,K.source,K.target,K.data,Te=>Ee.getInternalNode(Te)??null);lt&&(et==="source"?xe.targetPin=lt:xe.sourcePin=lt)}t0.current=!0,z(K.id,xe)},[z]),zJ=m.useCallback((K,J,se,ce)=>{var w1;kr(!1),oi(),ri.current=!1;const ue=t0.current;if(t0.current=!1,ue)return;if(ea.current){ea.current=!1;return}if(!z)return;const Re=pB(K);let xe=((w1=ce.toNode)==null?void 0:w1.id)??null;if(!xe&&Re){const Xr=sT(an.current,Re.clientX,Re.clientY);xe=(Xr==null?void 0:Xr.getAttribute("data-id"))??null}const Ee=se==="source"?"target":"source",Ke=Bwe(Ee,J.source,J.target,xe);if(Ke==="no-op"||Ke==="self-loop"||!Re)return;const et=jt.current;if(!et)return;const lt=Ke==="pin-own"?Ee==="source"?J.source:J.target:xe,Te=et.getInternalNode(lt);if(!Te)return;const wn=Te.measured.width??Te.width??0,Kr=Te.measured.height??Te.height??0;if(wn===0||Kr===0)return;const ct=et.screenToFlowPosition({x:Re.clientX,y:Re.clientY}),Le=wN({x:Te.internals.positionAbsolute.x,y:Te.internals.positionAbsolute.y,w:wn,h:Kr},ct);if(Ke==="pin-own"){if(!ht)return;ht(J.id,Ee,Le);return}const Ft=yB(Ee,J.source,J.target,J.data,Xr=>et.getInternalNode(Xr)??null);Ee==="source"?z(J.id,{source:xe,sourceHandle:null,sourceHandleAutoPicked:!1,sourcePin:Le,...Ft?{targetPin:Ft}:{}}):z(J.id,{target:xe,targetHandle:null,targetHandleAutoPicked:!1,targetPin:Le,...Ft?{sourcePin:Ft}:{}})},[z,oi,ht]),ia=m.useMemo(()=>{var Ee;if(!rr||!Ur)return null;const K=(Ee=an.current)==null?void 0:Ee.getBoundingClientRect(),J=(K==null?void 0:K.left)??0,se=(K==null?void 0:K.top)??0,ce=Math.min(rr.x,Ur.x),ue=Math.min(rr.y,Ur.y),Re=Math.abs(Ur.x-rr.x),xe=Math.abs(Ur.y-rr.y);return{left:ce-J,top:ue-se,width:Re,height:xe}},[rr,Ur]),jJ=Ct?JZ(Ct):"",TJ=Ct?eK(Ct):void 0,NJ=Ct==="text",[AH,PH]=m.useState(!1),[DJ,n0]=m.useState(!1),[_J,RH]=m.useState(!1),li=zwe({projectId:o,getReactFlow:()=>jt.current});m.useImperativeHandle(t,()=>({exportPdf:li.exportPdf,exportPng:li.exportPng,openEmbedDialog:()=>RH(!0),capturePreview:li.capturePreview}),[li.exportPdf,li.exportPng,li.capturePreview]),m.useEffect(()=>{if(!He.enableKeyboard)return;const K=ce=>{if(!ce)return!1;const ue=ce.tagName;return ue==="INPUT"||ue==="TEXTAREA"||ue==="SELECT"?!0:ce instanceof HTMLElement&&ce.isContentEditable},J=ce=>{ce.code==="Space"&&(K(document.activeElement)||(ce.preventDefault(),PH(!0)))},se=ce=>{ce.code==="Space"&&(PH(!1),n0(!1))};return window.addEventListener("keydown",J),window.addEventListener("keyup",se),()=>{window.removeEventListener("keydown",J),window.removeEventListener("keyup",se)}},[He.enableKeyboard]);const r0=m.useCallback(K=>{if(K.length!==0){if(!Mt){const J=id.current;for(const se of K)J.set(se.id,{x:se.position.x,y:se.position.y});return}if(K.length===1){const J=K[0];J&&p&&p(J.id,{x:J.position.x,y:J.position.y});return}if(k){k(K.map(J=>({id:J.id,position:{x:J.position.x,y:J.position.y}})));return}if(p)for(const J of K)p(J.id,{x:J.position.x,y:J.position.y})}},[p,k,Mt]),HJ=m.useCallback((K,J,se)=>{Io.current=!1,r0(se),ii()},[r0,ii]),FJ=m.useCallback(()=>{Io.current=!0},[]),OJ=m.useCallback((K,J)=>{Io.current=!1,r0(J),ii()},[r0,ii]),qJ=m.useCallback((K,J)=>{ae==null||ae(J.id)},[ae]),VJ=m.useCallback(K=>{be==null||be()},[be]),BJ=m.useCallback((K,J)=>{ve==null||ve(J.id)},[ve]),zH=Ct?"crosshair":AH?DJ?"grabbing":"grab":void 0,jH=l[0],TH=c[0],$J=jH?a.find(K=>K.id===jH)??null:null,UJ=TH?s.find(K=>K.id===TH)??null:null,WJ=o??null,GJ=He.showDetailPanel&&!we,ZJ=m.useMemo(()=>({custom:Rt??{}}),[Rt]);return y.jsx(Bue,{value:ZJ,children:y.jsx("div",{"data-testid":"seeflow-canvas","data-mode":n,ref:an,className:"seeflow-canvas-root sf:relative sf:h-full sf:w-full",style:zH?{cursor:zH}:void 0,onPointerDownCapture:CJ,onPointerDown:K=>{AH&&n0(!0),v1(K)},onPointerMove:Dz,onPointerUp:K=>{n0(!1),Kh(K)},onPointerCancel:()=>{Xt.current=!1,Wr.current=null,Nn.current=null,$r(null),Lo(null),n0(!1)},onContextMenuCapture:SJ,onDragOver:LJ,onDrop:IJ,children:y.jsxs(Uhe,{containerRef:an,children:[y.jsxs(f1e,{nodes:ra,edges:Oz,onNodesChange:vJ,nodeTypes:Wwe,edgeTypes:Gwe,proOptions:{hideAttribution:!0},fitView:!0,minZoom:n==="mini"?.05:.5,nodesDraggable:(Mt?!!p:!0)&&!Ct&&He.enableNodeMove,nodesConnectable:Mt&&!!E&&!Ct,deleteKeyCode:Mt?["Backspace","Delete"]:null,zoomOnScroll:He.enableZoom,zoomOnPinch:He.enableZoom,className:tr?"seeflow-connecting":void 0,onConnect:Mt?AJ:void 0,isValidConnection:qz,onConnectStart:(K,J)=>{kr(!0),e0.current=!1,EH.current={nodeId:J.nodeId??null,handleType:J.handleType??null},kn(J.nodeId??null)},onConnectEnd:PJ,onReconnect:Mt&&z?RJ:void 0,onReconnectStart:(K,J,se)=>{kr(!0),t0.current=!1,ri.current=!0;const ce=se==="source"?J.source:J.target;kn(ce)},onReconnectEnd:zJ,connectionLineComponent:x1,connectionLineStyle:{strokeWidth:2},connectionRadius:32,reconnectRadius:10,edgesReconnectable:!1,elevateNodesOnSelect:!1,elementsSelectable:!Ct&&He.enableSelection,selectNodesOnDrag:!1,nodeClickDistance:5,selectionOnDrag:!Ct&&He.enableSelection,panOnDrag:Ct?!1:He.enablePan?[1,2]:!1,selectionMode:Eu.Partial,selectionKeyCode:null,multiSelectionKeyCode:Ct?null:["Meta","Shift"],panActivationKeyCode:Ct?null:"Space",onSelectionStart:MJ,onSelectionEnd:bJ,defaultEdgeOptions:Zwe,zoomOnDoubleClick:!1,onInit:K=>{jt.current=K;const J=an.current;J&&J.style.setProperty("--rf-zoom",String(K.getZoom())),J&&J.setAttribute("data-canvas-ready","true"),!bo.current&&jn.onMount&&a.length>0&&(K.fitView(Ad),bo.current=!0),re==null||re(K)},onMove:(K,J)=>{Br.current&&Vr(null);const se=an.current;se&&se.style.setProperty("--rf-zoom",String(J.zoom))},onEdgesChange:wJ,onNodeDragStart:()=>{Io.current=!0},onNodeDragStop:HJ,onSelectionDragStart:FJ,onSelectionDragStop:OJ,onNodeClick:qJ,onEdgeClick:BJ,onEdgeDoubleClick:(K,J)=>{var se;(se=Tn.current.get(J.id))==null||se()},onPaneClick:VJ,onNodeContextMenu:He.enableContextMenu&&sd?(K,J)=>{K.preventDefault(),Ue.current=J.id,$(!0),oe(J.type??null),Me(null),q({x:K.clientX,y:K.clientY})}:void 0,onPaneContextMenu:He.enableContextMenu&&V?K=>{K.preventDefault(),Ue.current=null,$(!1),oe(null),Me(null),q({x:K.clientX,y:K.clientY})}:void 0,children:[y.jsx(Ywe,{storeApiRef:Co}),y.jsx(Qwe,{wrapperRef:an}),y.jsx(b1e,{gap:12,size:.6}),n!=="mini"&&y.jsx(Dwe,{}),He.showControls?y.jsxs(P1e,{showInteractive:!1,showFitView:!1,children:[y.jsx(X1,{"data-testid":"controls-fit-view","aria-label":"Fit view",title:"Fit view",disabled:a.length===0,onClick:()=>{var K;(K=jt.current)==null||K.fitView(Ad)},children:y.jsx(iu,{className:"sf:h-3 sf:w-3","aria-hidden":"true"})}),y.jsx(X1,{"data-testid":"controls-tidy","aria-label":"Tidy layout (⌘⇧L)",title:"Tidy layout (⌘⇧L)",disabled:!Jh,onClick:()=>Jh==null?void 0:Jh(),children:y.jsx(s2,{className:"sf:h-3 sf:w-3","aria-hidden":"true"})})]}):null,He.showResizeHandles?y.jsx(I3e,{selectedNodes:Ht,onMultiResize:M}):null,He.showToolbar&&C||He.showStyleStrip&&W&&X?y.jsx(ju,{position:"top-left",children:y.jsxs("div",{className:"sf:flex sf:flex-col sf:gap-2",children:[He.showToolbar&&C?y.jsx(ame,{activeShape:Ct,onSelectShape:Qi,iconPickerOpen:ee??!1,onOpenIconPicker:ke,onCloseIconPicker:Fe,onPickIcon:rt}):null,He.showStyleStrip&&W&&X?y.jsx(A3e,{nodes:xn,connectors:I??[],onStyleNode:W,onStyleNodePreview:H,onStyleNodes:j,onStyleNodesPreview:G,onStyleConnector:X,onStyleConnectorPreview:Y,onRequestIconReplace:mt}):null]})}):null,He.showShareMenu||He.showRestart&&Ne?y.jsx(ju,{position:"top-right",children:y.jsxs("div",{className:"sf:flex sf:items-center sf:gap-1",children:[He.showRestart&&Ne?y.jsx(b3e,{onRestartDemo:Ne}):null,He.showShareMenu?y.jsx(M3e,{mode:n==="mini"?"view":n,projectId:o,enableEmbed:He.enableEmbed,onDownloadPdf:li.exportPdf,onDownloadPng:li.exportPng,onExportToCloud:st,embedOpen:_J,onEmbedOpenChange:RH}):null]})}):null]}),ia?y.jsx("div",{"data-testid":"canvas-draw-ghost","data-ghost-shape":Ct??void 0,"aria-hidden":!0,className:ie("sf:pointer-events-none sf:absolute sf:z-10",jJ,NJ?"sf:rounded-sm sf:border sf:border-dashed sf:border-muted-foreground/40":""),style:{...TJ,left:ia.left,top:ia.top,width:ia.width,height:ia.height},children:(()=>{const K=Ct?H_[Ct]:void 0;return K?y.jsx(K,{width:ia.width,height:ia.height,borderColor:tt(void 0,"node").borderColor,backgroundColor:mh,borderSize:M_}):null})()}):null,He.enableContextMenu&&sd?y.jsxs(Ppe,{onOpenChange:K=>{K||(q(null),Ue.current=null,oe(null),Me(null))},children:[y.jsx(Rpe,{asChild:!0,children:y.jsx("div",{ref:Ut,"data-testid":"node-context-menu-trigger","aria-hidden":!0,className:"sf:pointer-events-none sf:fixed",style:{left:(F==null?void 0:F.x)??0,top:(F==null?void 0:F.y)??0,width:0,height:0}})}),y.jsxs(TX,{"data-testid":"node-context-menu",children:[Ae!=null&&Ae.pinned&&le?y.jsx(to,{"data-testid":"connector-endpoint-context-menu-unpin",onSelect:Yt,children:"Unpin"}):null,Z&&R?y.jsxs(to,{"data-testid":"node-context-menu-copy",onSelect:ze,children:["Copy",y.jsx(TN,{children:_z})]}):null,V?y.jsxs(to,{"data-testid":"node-context-menu-paste",disabled:!O,onSelect:gn,children:["Paste",y.jsx(TN,{children:ai})]}):null,Z&&(R||V)&&(_==="iconNode"&&mt||A||U)?y.jsx(MP,{}):null,Z&&_==="iconNode"&&mt?y.jsx(to,{"data-testid":"node-context-menu-change-icon",onSelect:it,children:"Change icon"}):null,Z&&_==="iconNode"&&mt&&(A||U)?y.jsx(MP,{}):null,Z&&A?y.jsxs(y.Fragment,{children:[y.jsx(to,{"data-testid":"node-context-menu-to-front",onSelect:()=>Eo({op:"toFront"}),children:"Bring to front"}),y.jsx(to,{"data-testid":"node-context-menu-forward",onSelect:()=>Eo({op:"forward"}),children:"Bring forward"}),y.jsx(to,{"data-testid":"node-context-menu-backward",onSelect:()=>Eo({op:"backward"}),children:"Send backward"}),y.jsx(to,{"data-testid":"node-context-menu-to-back",onSelect:()=>Eo({op:"toBack"}),children:"Send to back"})]}):null,Z&&A&&U?y.jsx(MP,{}):null,Z&&U?y.jsx(to,{"data-testid":"node-context-menu-delete",onSelect:Dn,children:"Delete"}):null]})]}):null,me?y.jsxs(Ju,{open:!!mn,onOpenChange:K=>{K||Vr(null)},children:[y.jsx(Whe,{asChild:!0,children:y.jsx("div",{"data-testid":"drop-popover-anchor","aria-hidden":!0,className:"sf:pointer-events-none sf:fixed",style:{left:(mn==null?void 0:mn.clientX)??0,top:(mn==null?void 0:mn.clientY)??0,width:0,height:0}})}),y.jsx(u1,{"data-testid":"drop-popover",align:"start",side:"bottom",sideOffset:4,className:"sf:w-auto sf:p-1",onOpenAutoFocus:K=>{K.preventDefault()},children:y.jsx("div",{role:"menu","aria-label":"Create connected node",className:"sf:flex sf:flex-col sf:gap-0.5",children:ime.map(({shape:K,label:J,Icon:se})=>y.jsxs("button",{type:"button",role:"menuitem","data-testid":`drop-popover-shape-${K}`,onClick:()=>{const ce=mn;ce&&(me({sourceNodeId:ce.sourceNodeId,position:{x:ce.flowX,y:ce.flowY},shape:K}),Vr(null))},className:ie("sf:flex sf:items-center sf:gap-2 sf:rounded-sm sf:px-2 sf:py-1.5 sf:text-left sf:text-sm","sf:hover:bg-accent sf:hover:text-accent-foreground","sf:focus:bg-accent sf:focus:text-accent-foreground sf:focus:outline-hidden"),children:[y.jsx(se,{className:"sf:h-4 sf:w-4 sf:text-muted-foreground","aria-hidden":"true"}),y.jsx("span",{children:J})]},K))})})]}):null,GJ?y.jsx(Jve,{flowId:WJ,node:$J,connector:UJ,adapter:r??null,statusReport:Se,onNameChange:Oe,onDescriptionChange:te,onDetailChange:de,onIconChange:Pe,onClose:()=>{var K;(K=Zr.current)==null||K.call(Zr,[],[])}}):null]})})})}const o6e=m.forwardRef(r6e);function i6e({open:e,onOpenChange:t,onCreated:n}){const[r,o]=m.useState(""),[i,a]=m.useState(null),[s,l]=m.useState(!1);m.useEffect(()=>{e&&(o(""),a(null),l(!1))},[e]);const c=r.trim(),h=c.length>0&&!s,d=async f=>{if(f.preventDefault(),!!h){l(!0),a(null);try{const p=await Cne({name:c});n(p),t(!1)}catch(p){a(p instanceof Error?p.message:String(p)),l(!1)}}};return y.jsx(kz,{open:e,onOpenChange:t,children:y.jsxs(Nh,{className:"sm:max-w-md","data-testid":"create-project-dialog",onOpenAutoFocus:f=>{f.preventDefault();const p=document.querySelector('[data-testid="create-project-name-input"]');p==null||p.focus()},children:[y.jsxs(Dh,{children:[y.jsx(_h,{children:"Create new project"}),y.jsxs(Hh,{children:["The project will be created at ",y.jsx("code",{children:"~/.seeflow/<slug>"}),"."]})]}),y.jsxs("form",{onSubmit:d,className:"flex flex-col gap-4",children:[y.jsxs("label",{className:"flex flex-col gap-1.5 text-sm",children:[y.jsx("span",{className:"font-medium",children:"Project name"}),y.jsx("input",{type:"text",required:!0,autoComplete:"off",spellCheck:!1,value:r,onChange:f=>o(f.target.value),"data-testid":"create-project-name-input",className:"rounded-md border bg-background px-3 py-2 text-sm outline-hidden ring-offset-background focus:border-ring focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2"})]}),i?y.jsx("div",{role:"alert","data-testid":"create-project-error",className:"rounded-md border border-destructive/30 bg-destructive/10 px-3 py-2 text-sm text-destructive",children:i}):null,y.jsxs(Hu,{children:[y.jsx(Nt,{type:"button",variant:"ghost",onClick:()=>t(!1),disabled:s,children:"Cancel"}),y.jsx(Nt,{type:"submit",disabled:!h,"data-testid":"create-project-submit",children:s?"Creating…":"Create project"})]})]})]})})}const tD="seeflow:navigate",a6e=e=>(window.addEventListener("popstate",e),window.addEventListener(tD,e),()=>{window.removeEventListener("popstate",e),window.removeEventListener(tD,e)}),xB=()=>window.location.pathname,s6e=()=>m.useSyncExternalStore(a6e,xB,xB),qu=e=>{e!==window.location.pathname&&(window.history.pushState({},"",e),window.dispatchEvent(new Event(tD)))};function l6e({demos:e,currentSlug:t,onProjectCreated:n,onProjectUnregistered:r}){const[o,i]=m.useState(!1),[a,s]=m.useState(!1),[l,c]=m.useState(null),[h,d]=m.useState(!1),[f,p]=m.useState(null);m.useEffect(()=>{const x=b=>{b.key==="k"&&(b.metaKey||b.ctrlKey)&&(b.preventDefault(),i(S=>!S))};return document.addEventListener("keydown",x),()=>document.removeEventListener("keydown",x)},[]);const k=e.find(x=>x.slug===t),v=x=>{n==null||n(x),qu(`/d/${x.slug}`)},w=x=>{c(x),p(null)},g=()=>{h||(c(null),p(null))},M=async()=>{if(l){d(!0),p(null);try{await bne(l.id);const x=l.id;c(null),r==null||r(x)}catch(x){p(x instanceof Error?x.message:String(x))}finally{d(!1)}}};return y.jsxs(y.Fragment,{children:[y.jsxs(Ju,{open:o,onOpenChange:i,children:[y.jsx(Eh,{asChild:!0,children:y.jsxs(Nt,{type:"button",variant:"outline",size:"sm","aria-label":"Switch demo","aria-expanded":o,className:"gap-2","data-testid":"project-switcher-trigger",children:[y.jsx("span",{className:"max-w-[180px] truncate text-sm",children:(k==null?void 0:k.name)??"Select demo"}),y.jsx(RK,{children:"⌘K"}),y.jsx(Qd,{className:"h-3.5 w-3.5 opacity-60"})]})}),y.jsx(u1,{align:"end",sideOffset:6,className:"w-[320px] p-0","data-testid":"project-switcher-popover",children:y.jsxs(LK,{children:[y.jsx(IK,{placeholder:"Search demos..."}),y.jsxs(EK,{children:[y.jsx(AK,{children:"No demos."}),e.length>0?y.jsx(PN,{heading:"Demos",children:e.map(x=>y.jsxs(RN,{value:`${x.name} ${x.slug}`,onSelect:()=>{i(!1),qu(`/d/${x.slug}`)},className:"group flex items-center justify-between gap-2",children:[y.jsxs("div",{className:"flex min-w-0 flex-col items-start gap-0.5",children:[y.jsx("span",{className:"font-medium",children:x.name}),y.jsx("span",{className:"w-full truncate text-xs text-muted-foreground",children:x.repoPath})]}),y.jsx("button",{type:"button","aria-label":`Unregister ${x.name}`,className:"shrink-0 rounded p-0.5 opacity-0 transition-opacity hover:text-destructive group-hover:opacity-100 focus-visible:opacity-100 focus-visible:outline-hidden focus-visible:ring-1 focus-visible:ring-ring",onClick:b=>{b.stopPropagation(),i(!1),w(x)},children:y.jsx(v2,{className:"h-3.5 w-3.5"})})]},x.id))}):null,e.length>0?y.jsx(PK,{}):null,y.jsx(PN,{children:y.jsxs(RN,{value:"+ create new project",onSelect:()=>{i(!1),s(!0)},"data-testid":"project-switcher-create",className:"flex items-center gap-2 text-sm",children:[y.jsx(d2,{className:"h-4 w-4 opacity-70"}),y.jsx("span",{className:"font-medium",children:"Create new project"})]})})]})]})})]}),y.jsx(i6e,{open:a,onOpenChange:s,onCreated:v}),y.jsx(kz,{open:l!==null,onOpenChange:x=>{x||g()},children:y.jsxs(Nh,{className:"sm:max-w-md","data-testid":"unregister-project-dialog",children:[y.jsxs(Dh,{children:[y.jsx(_h,{children:"Unregister project?"}),y.jsxs(Hh,{children:["This removes ",y.jsx("strong",{children:l==null?void 0:l.name})," from SeeFlow. Your files at"," ",y.jsx("code",{className:"text-xs",children:l==null?void 0:l.repoPath})," will not be deleted."]})]}),f?y.jsx("div",{role:"alert","data-testid":"unregister-project-error",className:"rounded-md border border-destructive/30 bg-destructive/10 px-3 py-2 text-sm text-destructive",children:f}):null,y.jsxs(Hu,{children:[y.jsx(Nt,{type:"button",variant:"ghost",onClick:g,disabled:h,children:"Cancel"}),y.jsx(Nt,{type:"button",variant:"destructive",onClick:M,disabled:h,"data-testid":"unregister-project-confirm",children:h?"Unregistering…":"Unregister"})]})]})})]})}function c6e({demos:e,currentSlug:t,onProjectCreated:n,onProjectUnregistered:r}){return y.jsxs("header",{className:"relative flex h-14 shrink-0 items-center justify-between border-b border-border/60 bg-background/85 px-5 backdrop-blur-md shadow-[0_4px_12px_-6px_rgba(0,0,0,0.6)]",children:[y.jsxs("button",{type:"button",onClick:()=>qu("/"),className:"-ml-1.5 flex items-center gap-2 rounded-md px-1.5 py-1 text-base font-bold tracking-tight transition-colors hover:bg-muted/60",children:[y.jsx(b2,{size:18,strokeWidth:2.25,className:"text-emerald-400"}),"SeeFlow",y.jsxs("span",{className:"ml-1 text-[10px] font-normal tracking-normal text-muted-foreground/70",children:["v","0.1.51"]})]}),y.jsx("div",{className:"flex items-center gap-3",children:y.jsx(l6e,{demos:e,currentSlug:t,onProjectCreated:n,onProjectUnregistered:r})})]})}const u6e=e=>{const[t,n]=m.useState(null),[r,o]=m.useState(e!==null),[i,a]=m.useState(null),s=m.useCallback(()=>{e&&(o(!0),KU(e).then(c=>{n(c),a(null)}).catch(c=>{console.error("[useDemoData] failed",c),a(String(c))}).finally(()=>o(!1)))},[e]),l=m.useCallback(c=>{n(c),a(null)},[]);return m.useEffect(()=>{if(!e){n(null),o(!1);return}s()},[e,s]),{detail:t,loading:r,error:i,refresh:s,applyDetail:l}},d6e=()=>{const[e,t]=m.useState(null),[n,r]=m.useState(null),o=m.useCallback(()=>Mne().then(i=>{t(i),r(null)}).catch(i=>{console.error("[useDemos] failed",i),t([]),r(String(i))}),[]);return m.useEffect(()=>{o()},[o]),{demos:e,error:n,refresh:o}},h6e=5,f6e={"node:running":"running","node:done":"done","node:error":"error"},p6e=(e,t)=>{if(t.type==="reset")return{};const n=e[t.nodeId]??[],r=[t.entry,...n].slice(0,h6e);return{...e,[t.nodeId]:r}},y6e=e=>{const[t,n]=m.useReducer(p6e,{}),r=m.useRef(n);r.current=n,m.useEffect(()=>{r.current({type:"reset"})},[e]);const o=m.useCallback(a=>{const s=f6e[a.type];if(!s)return;const l=typeof a.nodeId=="string"?a.nodeId:null;if(!l)return;const c=typeof a.runId=="string"?a.runId:void 0,h=typeof a.ts=="number"?a.ts:Date.now();r.current({type:"append",nodeId:l,entry:{status:s,ts:h,runId:c}})},[]),i=m.useCallback(()=>{r.current({type:"reset"})},[]);return{events:t,apply:o,reset:i}},m6e=(e,t)=>{var n,r;switch(t.type){case"reset":return{};case"running":return{...e,[t.nodeId]:{status:"running",runId:t.runId,ts:t.ts??Date.now()}};case"done":return{...e,[t.nodeId]:{...e[t.nodeId],status:"done",runId:t.runId??((n=e[t.nodeId])==null?void 0:n.runId),responseStatus:t.responseStatus,body:t.body,ts:t.ts??Date.now()}};case"error":return{...e,[t.nodeId]:{...e[t.nodeId],status:"error",runId:t.runId??((r=e[t.nodeId])==null?void 0:r.runId),error:t.message,ts:t.ts??Date.now()}}}},k6e=e=>{const[t,n]=m.useReducer(m6e,{}),r=m.useRef(n);r.current=n,m.useEffect(()=>{r.current({type:"reset"})},[e]);const o=m.useCallback(a=>{const s=typeof a.nodeId=="string"?a.nodeId:null;if(!s)return;const l=typeof a.runId=="string"?a.runId:void 0;if(a.type==="node:running"){r.current({type:"running",nodeId:s,runId:l,ts:a.ts});return}if(a.type==="node:done"){const c=typeof a.status=="number"?a.status:void 0;r.current({type:"done",nodeId:s,runId:l,responseStatus:c,body:a.body,ts:a.ts});return}if(a.type==="node:error"){const c=typeof a.message=="string"?a.message:void 0;r.current({type:"error",nodeId:s,runId:l,message:c,ts:a.ts})}},[]),i=m.useCallback(()=>{r.current({type:"reset"})},[]);return{runs:t,apply:o,reset:i}},g6e=new Set(["ok","warn","error","pending"]),x6e=(e,t)=>{if(t.type!=="node:status")return e;const n=typeof t.nodeId=="string"?t.nodeId:null;if(!n||typeof t.state!="string"||!g6e.has(t.state))return e;const r=typeof t.summary=="string"?t.summary:void 0,o=typeof t.detail=="string"?t.detail:void 0,i=t.data&&typeof t.data=="object"&&!Array.isArray(t.data)?t.data:void 0,a=typeof t.ts=="number"?t.ts:Date.now();return{...e,[n]:{state:t.state,summary:r,detail:o,data:i,ts:a}}},v6e=(e,t)=>{switch(t.type){case"reset":return{};case"event":return x6e(e,t.event)}},w6e=e=>{const[t,n]=m.useReducer(v6e,{}),r=m.useRef(n);r.current=n,m.useEffect(()=>{r.current({type:"reset"})},[e]);const o=m.useCallback(a=>{r.current({type:"event",event:a})},[]),i=m.useCallback(()=>{r.current({type:"reset"})},[]);return{statusByNode:t,apply:o,reset:i}},M6e=(e={})=>{const[t,n]=m.useState(!1),{onRegistryReload:r,onHello:o}=e,i=m.useRef(r),a=m.useRef(o);return m.useEffect(()=>{i.current=r,a.current=o},[r,o]),m.useEffect(()=>{const s=new EventSource("/api/registry/events");return s.addEventListener("open",()=>n(!0)),s.addEventListener("error",()=>n(!1)),s.addEventListener("hello",()=>{var l;(l=a.current)==null||l.call(a)}),s.addEventListener("registry:reload",()=>{var l;(l=i.current)==null||l.call(i)}),()=>{s.close()}},[]),{connected:t}},b6e=(e,t={})=>{const[n,r]=m.useState(!1),{onHello:o,onFlowReload:i,onEvent:a}=t,s=m.useRef(o),l=m.useRef(i),c=m.useRef(a);return m.useEffect(()=>{s.current=o,l.current=i,c.current=a},[o,i,a]),m.useEffect(()=>{if(!e){r(!1);return}const h=`/api/events?flowId=${encodeURIComponent(e)}`,d=new EventSource(h);d.addEventListener("open",()=>r(!0)),d.addEventListener("error",()=>r(!1)),d.addEventListener("hello",()=>{var f;(f=s.current)==null||f.call(s)}),d.addEventListener("flow:reload",f=>{var v,w;const p=vB(f,"flow:reload");(v=c.current)==null||v.call(c,p);const k=C6e(p);k&&((w=l.current)==null||w.call(l,k))});for(const f of["node:running","node:done","node:error","node:status"])d.addEventListener(f,p=>{var k;(k=c.current)==null||k.call(c,vB(p,f))});return()=>{d.close()}},[e]),{connected:n}},vB=(e,t)=>{try{const n=JSON.parse(e.data);return{type:t,ts:Date.now(),...n}}catch{return{type:t,ts:Date.now()}}},C6e=e=>e.valid===!0&&e.flow&&typeof e.flow=="object"?{valid:!0,flow:e.flow}:e.valid===!1&&typeof e.error=="string"?{valid:!1,error:e.error}:null,oJ="seeflow:last-project",S6e=()=>{if(typeof window>"u")return null;try{return window.localStorage.getItem(oJ)}catch{return null}},wB=e=>{if(!(typeof window>"u"))try{window.localStorage.setItem(oJ,e)}catch{}},L6e=(e,t)=>{if(e.length===0)return null;if(e.length===1)return e[0]??null;if(t){const n=e.find(r=>r.id===t);if(n)return n}return null},MB=["File","Edit","View","Tools","Layout","Selection","Help"],iJ="seeflow:command-palette:recent",aJ=5,sJ=new Map(v_.map(e=>[e.id,e])),I6e=e=>typeof e=="string"&&sJ.has(e),bB=()=>{if(typeof window>"u")return[];try{const e=window.localStorage.getItem(iJ);if(!e)return[];const t=JSON.parse(e);return Array.isArray(t)?t.filter(I6e).slice(0,aJ):[]}catch{return[]}},E6e=e=>{if(!(typeof window>"u"))try{window.localStorage.setItem(iJ,JSON.stringify(e))}catch{}},CB=(e,t)=>e.enabled?e.enabled(t):!0,A6e=(e,t)=>t.length===0?!0:`${e.label} ${e.description??""}`.toLowerCase().includes(t);function P6e({open:e,onOpenChange:t,runCommand:n,ctx:r}){const[o,i]=m.useState(""),[a,s]=m.useState(0),[l,c]=m.useState(()=>bB()),h=m.useRef(null),d=m.useRef(null);m.useEffect(()=>{e&&(i(""),s(0),c(bB()))},[e]);const{groups:f,flat:p}=m.useMemo(()=>{const b=o.trim().toLowerCase();if(b.length===0){if(l.length===0)return{groups:[],flat:[]};const T=[];for(const z of l){const A=sJ.get(z);A&&T.push({cmd:A,enabled:CB(A,r)})}return{groups:[{category:"Recent",rows:T}],flat:T}}const S=new Map;for(const T of v_){if(!A6e(T,b))continue;const E={cmd:T,enabled:CB(T,r)},z=S.get(T.category);z?z.push(E):S.set(T.category,[E])}const L=[...MB.filter(T=>S.has(T)),...Array.from(S.keys()).filter(T=>!MB.includes(T))].map(T=>({category:T,rows:S.get(T)??[]})),P=L.flatMap(T=>T.rows);return{groups:L,flat:P}},[o,r,l]);m.useEffect(()=>{if(p.length===0){s(0);return}s(b=>{var C;let S=b;if(S>=p.length&&(S=0),!((C=p[S])!=null&&C.enabled)){const L=p.findIndex(P=>P.enabled);L!==-1&&(S=L)}return S})},[p]);const k=m.useCallback(b=>{p.length!==0&&s(S=>{var L;let C=S;for(let P=0;P<p.length;P++)if(C=(C+b+p.length)%p.length,(L=p[C])!=null&&L.enabled)return C;return S})},[p]),v=m.useCallback(b=>{c(S=>{const C=[b,...S.filter(L=>L!==b)].slice(0,aJ);return E6e(C),C})},[]),w=m.useCallback(b=>{const S=p[b];!S||!S.enabled||(v(S.cmd.id),n(S.cmd.id),t(!1))},[p,t,v,n]),g=m.useCallback(b=>{if(b.key==="ArrowDown"){b.preventDefault(),k(1);return}if(b.key==="ArrowUp"){b.preventDefault(),k(-1);return}b.key==="Enter"&&(b.preventDefault(),w(a))},[w,a,k]);m.useEffect(()=>{if(!e)return;const b=d.current;if(!b)return;const S=b.querySelector(`[data-command-row-index="${a}"]`);S&&typeof S.scrollIntoView=="function"&&S.scrollIntoView({block:"nearest"})},[a,e]);const x=o.trim().length>0;return y.jsx(hz,{open:e,onOpenChange:t,children:y.jsx(fz,{children:y.jsxs(ed,{className:ie("fixed left-0 right-0 top-[20%] z-50 mx-auto w-[480px] max-w-[90vw] border border-border bg-card shadow-lg duration-200","data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0","sm:rounded-lg"),"data-testid":"command-palette",onOpenAutoFocus:b=>{var S;b.preventDefault(),(S=h.current)==null||S.focus()},children:[y.jsx("div",{className:ie("border-b",p.length===0&&!x&&"border-b-0"),children:y.jsx("input",{ref:h,type:"text",value:o,onChange:b=>i(b.target.value),onKeyDown:g,placeholder:"Type a command…","data-testid":"command-palette-input","aria-label":"Search commands",autoComplete:"off",spellCheck:!1,className:"w-full bg-transparent px-4 py-3 text-sm outline-hidden placeholder:text-muted-foreground"})}),y.jsx("div",{ref:d,"data-testid":"command-palette-list","data-empty":p.length===0?"true":"false",className:ie("max-h-[50vh] overflow-y-auto",p.length>0?"py-1":"","seeflow-no-scrollbar"),children:p.length===0?x?y.jsxs("div",{"data-testid":"command-palette-empty",className:"px-4 py-6 text-center text-sm text-muted-foreground",children:['No commands match "',o,'"']}):null:(()=>{let b=-1;return f.map(S=>y.jsxs("div",{className:"py-1",children:[y.jsx("div",{className:"px-3 pb-1 pt-2 text-xs font-medium uppercase tracking-wide text-muted-foreground",children:S.category}),S.rows.map(C=>{b+=1;const L=b,P=L===a;return y.jsxs("button",{type:"button","data-testid":`command-palette-row-${C.cmd.id}`,"data-command-row-index":L,"data-highlighted":P?"true":"false","aria-disabled":C.enabled?void 0:!0,disabled:!C.enabled,onMouseEnter:()=>{C.enabled&&s(L)},onClick:()=>w(L),className:ie("flex w-full items-center justify-between gap-3 px-3 py-2 text-left text-sm outline-hidden",C.enabled?"cursor-pointer text-foreground hover:bg-muted":"cursor-not-allowed text-muted-foreground/50",P&&C.enabled?"bg-muted":""),children:[y.jsxs("div",{className:"flex min-w-0 flex-col",children:[y.jsx("span",{className:"truncate font-medium",children:C.cmd.label}),C.cmd.description?y.jsx("span",{className:"truncate text-xs text-muted-foreground",children:C.cmd.description}):null]}),C.cmd.shortcut?y.jsx("kbd",{"data-testid":`command-palette-shortcut-${C.cmd.id}`,className:"shrink-0 rounded border bg-muted px-1.5 py-0.5 font-mono text-[11px] text-muted-foreground",children:C.cmd.shortcut}):null]},C.cmd.id)})]},S.category))})()})]})})})}var rn=Uint8Array,$n=Uint16Array,bH=Int32Array,CH=new rn([0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0,0,0,0]),SH=new rn([0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13,0,0]),SB=new rn([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]),lJ=function(e,t){for(var n=new $n(31),r=0;r<31;++r)n[r]=t+=1<<e[r-1];for(var o=new bH(n[30]),r=1;r<30;++r)for(var i=n[r];i<n[r+1];++i)o[i]=i-n[r]<<5|r;return{b:n,r:o}},cJ=lJ(CH,2),R6e=cJ.b,nD=cJ.r;R6e[28]=258,nD[258]=28;var z6e=lJ(SH,0),LB=z6e.r,rD=new $n(32768);for(var xt=0;xt<32768;++xt){var yi=(xt&43690)>>1|(xt&21845)<<1;yi=(yi&52428)>>2|(yi&13107)<<2,yi=(yi&61680)>>4|(yi&3855)<<4,rD[xt]=((yi&65280)>>8|(yi&255)<<8)>>1}var P2=function(e,t,n){for(var r=e.length,o=0,i=new $n(t);o<r;++o)e[o]&&++i[e[o]-1];var a=new $n(t);for(o=1;o<t;++o)a[o]=a[o-1]+i[o-1]<<1;var s;if(n){s=new $n(1<<t);var l=15-t;for(o=0;o<r;++o)if(e[o])for(var c=o<<4|e[o],h=t-e[o],d=a[e[o]-1]++<<h,f=d|(1<<h)-1;d<=f;++d)s[rD[d]>>l]=c}else for(s=new $n(r),o=0;o<r;++o)e[o]&&(s[o]=rD[a[e[o]-1]++]>>15-e[o]);return s},a1=new rn(288);for(var xt=0;xt<144;++xt)a1[xt]=8;for(var xt=144;xt<256;++xt)a1[xt]=9;for(var xt=256;xt<280;++xt)a1[xt]=7;for(var xt=280;xt<288;++xt)a1[xt]=8;var SR=new rn(32);for(var xt=0;xt<32;++xt)SR[xt]=5;var j6e=P2(a1,9,0),T6e=P2(SR,5,0),uJ=function(e){return(e+7)/8|0},dJ=function(e,t,n){return(n==null||n>e.length)&&(n=e.length),new rn(e.subarray(t,n))},N6e=["unexpected EOF","invalid block type","invalid length/literal","invalid distance","stream finished","no stream handler",,"no callback","invalid UTF-8 data","extra field too long","date not in range 1980-2099","filename too long","stream finishing","invalid zip data"],Nz=function(e,t,n){var r=new Error(t||N6e[e]);if(r.code=e,Error.captureStackTrace&&Error.captureStackTrace(r,Nz),!n)throw r;return r},To=function(e,t,n){n<<=t&7;var r=t/8|0;e[r]|=n,e[r+1]|=n>>8},Pd=function(e,t,n){n<<=t&7;var r=t/8|0;e[r]|=n,e[r+1]|=n>>8,e[r+2]|=n>>16},lT=function(e,t){for(var n=[],r=0;r<e.length;++r)e[r]&&n.push({s:r,f:e[r]});var o=n.length,i=n.slice();if(!o)return{t:fJ,l:0};if(o==1){var a=new rn(n[0].s+1);return a[n[0].s]=1,{t:a,l:1}}n.sort(function(S,C){return S.f-C.f}),n.push({s:-1,f:25001});var s=n[0],l=n[1],c=0,h=1,d=2;for(n[0]={s:-1,f:s.f+l.f,l:s,r:l};h!=o-1;)s=n[n[c].f<n[d].f?c++:d++],l=n[c!=h&&n[c].f<n[d].f?c++:d++],n[h++]={s:-1,f:s.f+l.f,l:s,r:l};for(var f=i[0].s,r=1;r<o;++r)i[r].s>f&&(f=i[r].s);var p=new $n(f+1),k=oD(n[h-1],p,0);if(k>t){var r=0,v=0,w=k-t,g=1<<w;for(i.sort(function(C,L){return p[L.s]-p[C.s]||C.f-L.f});r<o;++r){var M=i[r].s;if(p[M]>t)v+=g-(1<<k-p[M]),p[M]=t;else break}for(v>>=w;v>0;){var x=i[r].s;p[x]<t?v-=1<<t-p[x]++-1:++r}for(;r>=0&&v;--r){var b=i[r].s;p[b]==t&&(--p[b],++v)}k=t}return{t:new rn(p),l:k}},oD=function(e,t,n){return e.s==-1?Math.max(oD(e.l,t,n+1),oD(e.r,t,n+1)):t[e.s]=n},IB=function(e){for(var t=e.length;t&&!e[--t];);for(var n=new $n(++t),r=0,o=e[0],i=1,a=function(l){n[r++]=l},s=1;s<=t;++s)if(e[s]==o&&s!=t)++i;else{if(!o&&i>2){for(;i>138;i-=138)a(32754);i>2&&(a(i>10?i-11<<5|28690:i-3<<5|12305),i=0)}else if(i>3){for(a(o),--i;i>6;i-=6)a(8304);i>2&&(a(i-3<<5|8208),i=0)}for(;i--;)a(o);i=1,o=e[s]}return{c:n.subarray(0,r),n:t}},Rd=function(e,t){for(var n=0,r=0;r<t.length;++r)n+=e[r]*t[r];return n},hJ=function(e,t,n){var r=n.length,o=uJ(t+2);e[o]=r&255,e[o+1]=r>>8,e[o+2]=e[o]^255,e[o+3]=e[o+1]^255;for(var i=0;i<r;++i)e[o+i+4]=n[i];return(o+4+r)*8},EB=function(e,t,n,r,o,i,a,s,l,c,h){To(t,h++,n),++o[256];for(var d=lT(o,15),f=d.t,p=d.l,k=lT(i,15),v=k.t,w=k.l,g=IB(f),M=g.c,x=g.n,b=IB(v),S=b.c,C=b.n,L=new $n(19),P=0;P<M.length;++P)++L[M[P]&31];for(var P=0;P<S.length;++P)++L[S[P]&31];for(var T=lT(L,7),E=T.t,z=T.l,A=19;A>4&&!E[SB[A-1]];--A);var U=c+5<<3,R=Rd(o,a1)+Rd(i,SR)+a,V=Rd(o,f)+Rd(i,v)+a+14+3*A+Rd(L,E)+2*L[16]+3*L[17]+7*L[18];if(l>=0&&U<=R&&U<=V)return hJ(t,h,e.subarray(l,l+c));var O,B,D,N;if(To(t,h,1+(V<R)),h+=2,V<R){O=P2(f,p,0),B=f,D=P2(v,w,0),N=v;var I=P2(E,z,0);To(t,h,x-257),To(t,h+5,C-1),To(t,h+10,A-4),h+=14;for(var P=0;P<A;++P)To(t,h+3*P,E[SB[P]]);h+=3*A;for(var W=[M,S],H=0;H<2;++H)for(var j=W[H],P=0;P<j.length;++P){var G=j[P]&31;To(t,h,I[G]),h+=E[G],G>15&&(To(t,h,j[P]>>5&127),h+=j[P]>>12)}}else O=j6e,B=a1,D=T6e,N=SR;for(var P=0;P<s;++P){var X=r[P];if(X>255){var G=X>>18&31;Pd(t,h,O[G+257]),h+=B[G+257],G>7&&(To(t,h,X>>23&31),h+=CH[G]);var Y=X&31;Pd(t,h,D[Y]),h+=N[Y],Y>3&&(Pd(t,h,X>>5&8191),h+=SH[Y])}else Pd(t,h,O[X]),h+=B[X]}return Pd(t,h,O[256]),h+B[256]},D6e=new bH([65540,131080,131088,131104,262176,1048704,1048832,2114560,2117632]),fJ=new rn(0),_6e=function(e,t,n,r,o,i){var a=i.z||e.length,s=new rn(r+a+5*(1+Math.ceil(a/7e3))+o),l=s.subarray(r,s.length-o),c=i.l,h=(i.r||0)&7;if(t){h&&(l[0]=i.r>>3);for(var d=D6e[t-1],f=d>>13,p=d&8191,k=(1<<n)-1,v=i.p||new $n(32768),w=i.h||new $n(k+1),g=Math.ceil(n/3),M=2*g,x=function(ee){return(e[ee]^e[ee+1]<<g^e[ee+2]<<M)&k},b=new bH(25e3),S=new $n(288),C=new $n(32),L=0,P=0,T=i.i||0,E=0,z=i.w||0,A=0;T+2<a;++T){var U=x(T),R=T&32767,V=w[U];if(v[R]=V,w[U]=R,z<=T){var O=a-T;if((L>7e3||E>24576)&&(O>423||!c)){h=EB(e,l,0,b,S,C,P,E,A,T-A,h),E=L=P=0,A=T;for(var B=0;B<286;++B)S[B]=0;for(var B=0;B<30;++B)C[B]=0}var D=2,N=0,I=p,W=R-V&32767;if(O>2&&U==x(T-W))for(var H=Math.min(f,O)-1,j=Math.min(32767,T),G=Math.min(258,O);W<=j&&--I&&R!=V;){if(e[T+D]==e[T+D-W]){for(var X=0;X<G&&e[T+X]==e[T+X-W];++X);if(X>D){if(D=X,N=W,X>H)break;for(var Y=Math.min(W,X-2),re=0,B=0;B<Y;++B){var ne=T-W+B&32767,ae=v[ne],ve=ne-ae&32767;ve>re&&(re=ve,V=ne)}}}R=V,V=v[R],W+=R-V&32767}if(N){b[E++]=268435456|nD[D]<<18|LB[N];var be=nD[D]&31,me=LB[N]&31;P+=CH[be]+SH[me],++S[257+be],++C[me],z=T+D,++L}else b[E++]=e[T],++S[e[T]]}}for(T=Math.max(T,z);T<a;++T)b[E++]=e[T],++S[e[T]];h=EB(e,l,c,b,S,C,P,E,A,T-A,h),c||(i.r=h&7|l[h/8|0]<<3,h-=7,i.h=w,i.p=v,i.i=T,i.w=z)}else{for(var T=i.w||0;T<a+c;T+=65535){var ge=T+65535;ge>=a&&(l[h/8|0]=c,ge=a),h=hJ(l,h+1,e.subarray(T,ge))}i.i=a}return dJ(s,0,r+uJ(h)+o)},H6e=function(){for(var e=new Int32Array(256),t=0;t<256;++t){for(var n=t,r=9;--r;)n=(n&1&&-306674912)^n>>>1;e[t]=n}return e}(),F6e=function(){var e=-1;return{p:function(t){for(var n=e,r=0;r<t.length;++r)n=H6e[n&255^t[r]]^n>>>8;e=n},d:function(){return~e}}},pJ=function(){var e=1,t=0;return{p:function(n){for(var r=e,o=t,i=n.length|0,a=0;a!=i;){for(var s=Math.min(a+2655,i);a<s;++a)o+=r+=n[a];r=(r&65535)+15*(r>>16),o=(o&65535)+15*(o>>16)}e=r,t=o},d:function(){return e%=65521,t%=65521,(e&255)<<24|(e&65280)<<8|(t&255)<<8|t>>8}}},yJ=function(e,t,n,r,o){if(!o&&(o={l:1},t.dictionary)){var i=t.dictionary.subarray(-32768),a=new rn(i.length+e.length);a.set(i),a.set(e,i.length),e=a,o.w=i.length}return _6e(e,t.level==null?6:t.level,t.mem==null?o.l?Math.ceil(Math.max(8,Math.min(13,Math.log(e.length)))*1.5):20:12+t.mem,n,r,o)},mJ=function(e,t){var n={};for(var r in e)n[r]=e[r];for(var r in t)n[r]=t[r];return n},Ot=function(e,t,n){for(;n;++t)e[t]=n,n>>>=8},O6e=function(e,t){var n=t.level,r=n==0?0:n<6?1:n==9?3:2;if(e[0]=120,e[1]=r<<6|(t.dictionary&&32),e[1]|=31-(e[0]<<8|e[1])%31,t.dictionary){var o=pJ();o.p(t.dictionary),Ot(e,2,o.d())}};function q6e(e,t){return yJ(e,t||{},0,0)}function R8e(e,t){t||(t={});var n=pJ();n.p(e);var r=yJ(e,t,t.dictionary?6:2,4);return O6e(r,t),Ot(r,r.length-4,n.d()),r}var kJ=function(e,t,n,r){for(var o in e){var i=e[o],a=t+o,s=r;Array.isArray(i)&&(s=mJ(r,i[1]),i=i[0]),i instanceof rn?n[a]=[i,s]:(n[a+="/"]=[new rn(0),s],kJ(i,a,n,r))}},AB=typeof TextEncoder<"u"&&new TextEncoder,V6e=typeof TextDecoder<"u"&&new TextDecoder,B6e=0;try{V6e.decode(fJ,{stream:!0}),B6e=1}catch{}function iD(e,t){var n;if(AB)return AB.encode(e);for(var r=e.length,o=new rn(e.length+(e.length>>1)),i=0,a=function(c){o[i++]=c},n=0;n<r;++n){if(i+5>o.length){var s=new rn(i+8+(r-n<<1));s.set(o),o=s}var l=e.charCodeAt(n);l<128||t?a(l):l<2048?(a(192|l>>6),a(128|l&63)):l>55295&&l<57344?(l=65536+(l&1047552)|e.charCodeAt(++n)&1023,a(240|l>>18),a(128|l>>12&63),a(128|l>>6&63),a(128|l&63)):(a(224|l>>12),a(128|l>>6&63),a(128|l&63))}return dJ(o,0,i)}var aD=function(e){var t=0;if(e)for(var n in e){var r=e[n].length;r>65535&&Nz(9),t+=r+4}return t},PB=function(e,t,n,r,o,i,a,s){var l=r.length,c=n.extra,h=s&&s.length,d=aD(c);Ot(e,t,a!=null?33639248:67324752),t+=4,a!=null&&(e[t++]=20,e[t++]=n.os),e[t]=20,t+=2,e[t++]=n.flag<<1|(i<0&&8),e[t++]=o&&8,e[t++]=n.compression&255,e[t++]=n.compression>>8;var f=new Date(n.mtime==null?Date.now():n.mtime),p=f.getFullYear()-1980;if((p<0||p>119)&&Nz(10),Ot(e,t,p<<25|f.getMonth()+1<<21|f.getDate()<<16|f.getHours()<<11|f.getMinutes()<<5|f.getSeconds()>>1),t+=4,i!=-1&&(Ot(e,t,n.crc),Ot(e,t+4,i<0?-i-2:i),Ot(e,t+8,n.size)),Ot(e,t+12,l),Ot(e,t+14,d),t+=16,a!=null&&(Ot(e,t,h),Ot(e,t+6,n.attrs),Ot(e,t+10,a),t+=14),e.set(r,t),t+=l,d)for(var k in c){var v=c[k],w=v.length;Ot(e,t,+k),Ot(e,t+2,w),e.set(v,t+4),t+=4+w}return h&&(e.set(s,t),t+=h),t},$6e=function(e,t,n,r,o){Ot(e,t,101010256),Ot(e,t+8,n),Ot(e,t+10,n),Ot(e,t+12,r),Ot(e,t+16,o)};function U6e(e,t){t||(t={});var n={},r=[];kJ(e,"",n,t);var o=0,i=0;for(var a in n){var s=n[a],l=s[0],c=s[1],h=c.level==0?0:8,d=iD(a),f=d.length,p=c.comment,k=p&&iD(p),v=k&&k.length,w=aD(c.extra);f>65535&&Nz(11);var g=h?q6e(l,c):l,M=g.length,x=F6e();x.p(l),r.push(mJ(c,{size:l.length,crc:x.d(),c:g,f:d,m:k,u:f!=a.length||k&&p.length!=v,o,compression:h})),o+=30+f+w+M,i+=76+2*(f+w)+(v||0)+M}for(var b=new rn(i+22),S=o,C=i-o,L=0;L<r.length;++L){var d=r[L];PB(b,d.o,d,d.f,d.u,d.c.length);var P=30+d.f.length+aD(d.extra);b.set(d.c,d.o+P),PB(b,o,d,d.f,d.u,d.c.length,d.o,d.m),o+=16+P+(d.m?d.m.length:0)}return $6e(b,o,r.length,C,S),b}const W6e="https://seeflow.dev/api";async function G6e(e,t,n,r,o){const i=await KU(e);if(!i.flow)throw new Error("Flow has no data");const a=i.flow,s=new Set,l=[];for(const k of a.nodes)k.type==="imageNode"&&k.data.path&&!s.has(k.data.path)&&(s.add(k.data.path),l.push(k.data.path));const h={[r==="link"?"flow.private.json":"flow.json"]:iD(JSON.stringify(a))};if(o){const k=o.split(",")[1];k&&(h["preview.png"]=Uint8Array.from(atob(k),v=>v.charCodeAt(0)))}for(const k of l){const v=await fetch(`/api/projects/${encodeURIComponent(e)}/files/${k}`);v.ok&&(h[`files/${k}`]=new Uint8Array(await v.arrayBuffer()))}const d=U6e(h),f=await fetch(`${W6e}/flows?email=${encodeURIComponent(t)}&name=${encodeURIComponent(n)}`,{method:"POST",headers:{"content-type":"application/zip"},body:d.buffer});if(!f.ok)throw new Error(`Export failed with status ${f.status}`);const p=await f.json();if(typeof p.url!="string")throw new Error("Invalid response from cloud API: missing url");return{shareUrl:p.url}}function Z6e(e){return m.useCallback((t,n,r,o)=>G6e(e,t,n,r,o),[e])}const RB="seeflow.export.email",zB="seeflow.export.name",jB="seeflow.export.visibility";function K6e({open:e,onOpenChange:t,projectId:n,onCapturePreview:r}){const[o,i]=m.useState(""),[a,s]=m.useState(""),[l,c]=m.useState("public"),[h,d]=m.useState({kind:"idle"}),[f,p]=m.useState(!1),k=Z6e(n);m.useEffect(()=>{e&&(i(localStorage.getItem(RB)??""),s(localStorage.getItem(zB)??""),c(localStorage.getItem(jB)??"public"),d({kind:"idle"}),p(!1))},[e]);const v=m.useCallback(async()=>{d({kind:"loading"});try{const x=await(r==null?void 0:r()),{shareUrl:b}=await k(o.trim(),a.trim(),l,x);localStorage.setItem(RB,o.trim()),localStorage.setItem(zB,a.trim()),localStorage.setItem(jB,l),d({kind:"done",shareUrl:b})}catch(x){d({kind:"error",message:x instanceof Error?x.message:String(x)})}},[k,o,a,l,r]),w=m.useCallback(async()=>{if(h.kind==="done")try{await navigator.clipboard.writeText(h.shareUrl),p(!0),setTimeout(()=>p(!1),2e3)}catch(x){console.error("Failed to copy to clipboard:",x)}},[h]),g=h.kind==="loading",M=o.trim().length>0&&a.trim().length>0;return y.jsx(kz,{open:e,onOpenChange:t,children:y.jsxs(Nh,{className:"sm:max-w-md","data-testid":"export-dialog",onOpenAutoFocus:x=>{x.preventDefault();const b=document.querySelector('[data-testid="export-email-input"]');b==null||b.focus()},children:[y.jsxs(Dh,{children:[y.jsx(_h,{children:"Export to seeflow.dev"}),y.jsx(Hh,{children:"Upload this diagram to the cloud and get a shareable link."})]}),h.kind!=="done"?y.jsxs(y.Fragment,{children:[y.jsxs("div",{className:"flex flex-col gap-4",children:[y.jsxs("label",{className:"flex flex-col gap-1.5 text-sm",children:[y.jsx("span",{className:"font-medium",children:"Email"}),y.jsx("input",{type:"email",required:!0,autoComplete:"email",value:o,onChange:x=>i(x.target.value),disabled:g,"data-testid":"export-email-input",className:"rounded-md border bg-background px-3 py-2 text-sm outline-hidden ring-offset-background focus:border-ring focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50"}),y.jsx("span",{className:"text-xs text-muted-foreground",children:"We'll use this to let you manage your flows in the future."})]}),y.jsxs("label",{className:"flex flex-col gap-1.5 text-sm",children:[y.jsx("span",{className:"font-medium",children:"Flow Name"}),y.jsx("input",{type:"text",required:!0,value:a,onChange:x=>s(x.target.value),disabled:g,"data-testid":"export-name-input",className:"rounded-md border bg-background px-3 py-2 text-sm outline-hidden ring-offset-background focus:border-ring focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50"})]}),y.jsxs("label",{className:"flex flex-col gap-1.5 text-sm",children:[y.jsx("span",{className:"font-medium",children:"Visibility"}),y.jsxs("select",{value:l,onChange:x=>c(x.target.value),disabled:g,"data-testid":"export-visibility-select",className:"rounded-md border bg-background px-3 py-2 text-sm outline-hidden ring-offset-background focus:border-ring focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50",children:[y.jsx("option",{value:"public",children:"Public — anyone can discover it"}),y.jsx("option",{value:"link",children:"Anyone with the link"})]})]}),h.kind==="error"?y.jsx("div",{role:"alert","data-testid":"export-error",className:"rounded-md border border-destructive/30 bg-destructive/10 px-3 py-2 text-sm text-destructive",children:h.message}):null]}),y.jsx(Hu,{children:h.kind==="error"?y.jsxs(y.Fragment,{children:[y.jsx(Nt,{type:"button",variant:"ghost",onClick:()=>t(!1),"data-testid":"export-cancel",children:"Cancel"}),y.jsx(Nt,{type:"button",onClick:()=>d({kind:"idle"}),"data-testid":"export-retry",children:"Try again"})]}):y.jsxs(y.Fragment,{children:[y.jsx(Nt,{type:"button",variant:"ghost",onClick:()=>t(!1),disabled:g,"data-testid":"export-cancel",children:"Cancel"}),y.jsx(Nt,{type:"button",onClick:v,disabled:g||!M,"data-testid":"export-submit",children:g?y.jsxs(y.Fragment,{children:[y.jsx(Cr,{className:"h-4 w-4 animate-spin","aria-hidden":"true"}),y.jsx("span",{children:"Uploading…"})]}):"Export"})]})})]}):y.jsxs(y.Fragment,{children:[y.jsxs("div",{className:"flex flex-col gap-3",children:[y.jsx("p",{className:"text-sm text-muted-foreground",children:"Your diagram is live. Share this link:"}),y.jsxs("div",{className:"flex gap-2",children:[y.jsx("input",{type:"text",readOnly:!0,value:h.shareUrl,"data-testid":"export-share-url",className:"min-w-0 flex-1 rounded-md border bg-muted px-3 py-2 text-sm outline-hidden"}),y.jsx(Nt,{type:"button",variant:"outline",size:"icon",onClick:w,"aria-label":"Copy link","data-testid":"export-copy",children:f?y.jsx(fo,{className:"h-4 w-4","aria-hidden":"true"}):y.jsx(ou,{className:"h-4 w-4","aria-hidden":"true"})}),y.jsx(Nt,{type:"button",variant:"outline",size:"icon",onClick:()=>window.open(h.shareUrl,"_blank"),"aria-label":"View in new tab","data-testid":"export-view",children:y.jsx(n2,{className:"h-4 w-4","aria-hidden":"true"})})]})]}),y.jsx(Hu,{children:y.jsx(Nt,{type:"button",onClick:()=>t(!1),"data-testid":"export-done",children:"Done"})})]})]})})}const X6e=(e,t)=>{if(e.has(t))return e;const n=new Set(e);return n.add(t),n},Y6e=(e,t)=>{if(t.length===0)return e;let n=!1;const r=new Set(e);for(const o of t)r.has(o)||(r.add(o),n=!0);return n?r:e},Q6e=(e,t)=>{if(!e.has(t))return e;const n=new Set(e);return n.delete(t),n},J6e=(e,t)=>{if(t.length===0)return e;let n=!1;const r=new Set(e);for(const o of t)r.has(o)&&(r.delete(o),n=!0);return n?r:e},e8e=(e,t)=>{if(e.size===0)return e;const n=new Set(t.map(i=>i.id));let r=!1;const o=new Set(e);for(const i of o)n.has(i)||(o.delete(i),r=!0);return r?o:e},TB=()=>{const[e,t]=m.useState(()=>new Set),n=m.useCallback(l=>{t(c=>X6e(c,l))},[]),r=m.useCallback(l=>{t(c=>Y6e(c,l))},[]),o=m.useCallback(l=>{t(c=>Q6e(c,l))},[]),i=m.useCallback(l=>{t(c=>J6e(c,l))},[]),a=m.useCallback(l=>{t(c=>e8e(c,l))},[]),s=m.useCallback(()=>t(new Set),[]);return{ids:e,mark:n,markMany:r,unmark:o,unmarkMany:i,pruneAgainst:a,reset:s}},t8e=(e,t)=>e===t?!0:e==null||t==null||typeof e!=typeof t||typeof e!="object"?!1:JSON.stringify(e)===JSON.stringify(t),n8e=(e,t,n)=>({...e,[t]:{...e[t],...n}}),r8e=(e,t)=>{if(!(t in e))return e;const n={...e};return delete n[t],n},o8e=(e,t)=>{const n=Object.entries(e);if(n.length===0)return e;const r=new Map(t.map(a=>[a.id,a]));let o=!1;const i={...e};for(const[a,s]of n){const l=r.get(a);if(!l)continue;const c={};let h=!1;for(const d of Object.keys(s))t8e(s[d],l[d])?o=!0:(c[d]=s[d],h=!0);h?i[a]=c:(o=!0,delete i[a])}return o?i:e},NB=()=>{const[e,t]=m.useState({}),n=m.useCallback((a,s)=>{t(l=>n8e(l,a,s))},[]),r=m.useCallback(a=>{t(s=>r8e(s,a))},[]),o=m.useCallback(a=>{t(s=>o8e(s,a))},[]),i=m.useCallback(()=>t({}),[]);return{overrides:e,setOverride:n,dropOverride:r,pruneAgainst:o,reset:i}},i8e=500,a8e=500,s8e={stack:[],cursor:0},l8e=(e,t,n)=>{const r=Date.now(),o=i8e,i=a8e,{stack:a,cursor:s}=e;if(t.coalesceKey&&s>0){const h=a[s-1];if(h&&h.coalesceKey===t.coalesceKey&&r-h.capturedAt<=i){const d=a.slice(0,s);return d[s-1]={...h,do:t.do,capturedAt:r},{stack:d,cursor:s}}}const l=a.slice(0,s);l.push({...t,capturedAt:r});let c=s+1;for(;l.length>o;)l.shift(),c-=1;return c<0&&(c=0),{stack:l,cursor:c}},c8e=e=>e.cursor===0?{state:e,entry:void 0}:{state:{...e,cursor:e.cursor-1},entry:e.stack[e.cursor-1]},u8e=e=>e.cursor===e.stack.length?{state:e,entry:void 0}:{state:{...e,cursor:e.cursor+1},entry:e.stack[e.cursor]},d8e=()=>({stack:[],cursor:0}),h8e=e=>{if(e.cursor===0)return e;const t=e.stack.slice();return t.splice(e.cursor-1,1),{stack:t,cursor:e.cursor-1}},f8e=(e,t)=>t.state,p8e=()=>{const[e,t]=m.useReducer(f8e,s8e),n=m.useRef(e);n.current=e;const r=m.useRef(Promise.resolve()),o=m.useRef(0),i=m.useCallback(p=>{p!==n.current&&(n.current=p,t({type:"replace",state:p}))},[]),a=m.useCallback(p=>{const k={do:p.do,undo:p.undo,coalesceKey:p.coalesceKey,capturedAt:p.capturedAt??Date.now()};i(l8e(n.current,k))},[i]),s=m.useCallback(()=>{o.current=Date.now();const p=r.current.then(()=>{const k=c8e(n.current);if(k.entry)return i(k.state),{entry:k.entry}});return r.current=p.then(()=>{},()=>{}),p},[i]),l=m.useCallback(()=>{o.current=Date.now();const p=r.current.then(()=>{const k=u8e(n.current);if(k.entry)return i(k.state),{entry:k.entry}});return r.current=p.then(()=>{},()=>{}),p},[i]),c=m.useCallback(()=>{i(d8e())},[i]),h=m.useCallback(()=>{i(h8e(n.current))},[i]),d=m.useCallback(()=>{o.current=Date.now()},[]),f=m.useCallback(()=>o.current,[]);return{push:a,undo:s,redo:l,clear:c,dropTop:h,canUndo:e.cursor>0,canRedo:e.cursor<e.stack.length,markMutation:d,lastMutationAt:f}};function y8e({nodes:e,connectors:t,flowPos:n,nodeIdGen:r,connectorIdGen:o,defaultOffset:i={x:24,y:24}}){const a=new Map;for(const p of e)a.set(p.id,r(p.id));let s=Number.POSITIVE_INFINITY,l=Number.POSITIVE_INFINITY;for(const p of e)p.position.x<s&&(s=p.position.x),p.position.y<l&&(l=p.position.y);Number.isFinite(s)||(s=0),Number.isFinite(l)||(l=0);const c=n?n.x-s:i.x,h=n?n.y-l:i.y,d=e.map(p=>{const k=a.get(p.id);if(k===void 0)throw new Error(`paste id missing for ${p.id}`);return{...p,id:k,position:{x:p.position.x+c,y:p.position.y+h}}}),f=t.map(p=>{const k=o(p.id);return{...p,id:k,source:a.get(p.source)??p.source,target:a.get(p.target)??p.target}});return{newNodes:d,newConnectors:f,idMap:a}}const m8e=e=>({type:"imageNode",position:e.position,data:{path:"",alt:e.originalFilename,width:e.dims.width,height:e.dims.height,_uploading:!0}}),k8e=e=>({type:"imageNode",data:gJ(e)}),g8e=e=>({type:"imageNode",position:e.position,data:{path:"",alt:e.originalFilename,width:e.dims.width,height:e.dims.height,_uploadError:e.message}}),gJ=e=>({...zue(e.path,e.dims,e.lastUsed),alt:e.originalFilename}),x8e=async(e,t)=>{const{nodeId:n,flowId:r,file:o,originalFilename:i,position:a,dims:s,lastUsed:l}=e;t.rememberRetry(n,{file:o,originalFilename:i,position:a,dims:s}),t.setOverride(n,m8e({position:a,dims:s,originalFilename:i}));let c;try{c=(await t.upload(r,n,o,i)).path}catch(p){const k=p instanceof Error?p.message:String(p);throw t.setOverride(n,g8e({position:a,dims:s,originalFilename:i,message:k})),p}t.setOverride(n,k8e({path:c,dims:s,originalFilename:i,lastUsed:l}));const h=gJ({path:c,dims:s,originalFilename:i,lastUsed:l}),d={id:n,type:"imageNode",position:a,data:h},{id:f}=await t.createNode(r,d);t.forgetRetry(n),t.pushUndo&&t.pushUndo({do:async()=>{await t.createNode(r,{...d,id:f})},undo:async()=>{await t.deleteNode(r,f)}})},v8e="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789",w8e=248;function No(e=10){let t="";const n=new Uint8Array(e*2);for(;t.length<e;){crypto.getRandomValues(n);for(let r=0;r<n.length&&t.length<e;r++){const o=n[r];o<w8e&&(t+=v8e[o%62])}}return t}const M8e=new Set(["INPUT","TEXTAREA","SELECT"]),xr=e=>e?M8e.has(e.tagName)?!0:e instanceof HTMLElement&&e.isContentEditable:!1,b8e=(e,t,n)=>{const r=e.indexOf(t);if(r<0)return null;const o=e.length,i=[...e];switch(n.op){case"forward":{if(r>=o-1)return null;const a=i[r],s=i[r+1];return a===void 0||s===void 0?null:(i[r]=s,i[r+1]=a,i)}case"backward":{if(r<=0)return null;const a=i[r],s=i[r-1];return a===void 0||s===void 0?null:(i[r]=s,i[r-1]=a,i)}case"toFront":{if(r===o-1)return null;const[a]=i.splice(r,1);return a===void 0?null:(i.push(a),i)}case"toBack":{if(r===0)return null;const[a]=i.splice(r,1);return a===void 0?null:(i.unshift(a),i)}case"toIndex":{const a=Math.min(Math.max(n.index,0),o-1);if(a===r)return null;const[s]=i.splice(r,1);return s===void 0?null:(i.splice(a,0,s),i)}}};function C8e({slug:e,demos:t,detail:n,loading:r,runs:o,nodeEvents:i,statusByNode:a,onPlayNode:s,onRestartDemo:l}){var ad,sd;const c=t.find(F=>F.slug===e),[h,d]=m.useState([]),[f,p]=m.useState([]),[k,v]=m.useState(null),w=m.useRef(h),g=m.useRef(f);m.useEffect(()=>{w.current=h},[h]),m.useEffect(()=>{g.current=f},[f]);const M=m.useRef(null),x=m.useRef(null),b=m.useRef(null),S=NB(),C=NB(),L=TB(),P=TB(),[T,E]=m.useState(null),[z,A]=m.useState(null),[U,R]=m.useState(null),V=m.useRef(null);m.useEffect(()=>{V.current=U},[U]);const[O,B]=m.useState(!1),[D,N]=m.useState(0),I=m.useRef(null),W=m.useRef(null),H=m.useCallback(F=>{W.current=F},[]),j=p8e(),{push:G,dropTop:X,markMutation:Y,clear:re,lastMutationAt:ne}=j,{reset:ae}=S,{reset:ve}=C,{reset:be}=L,{reset:me}=P;m.useEffect(()=>{d([]),p([]),v(null),ae(),ve(),be(),me(),E(null),A(null),Br.current=null,So(!1),mr.current.clear(),j.clear()},[n==null?void 0:n.id]);const ge=m.useCallback((F,q)=>{d(F),p(q)},[]),ee=(ad=n==null?void 0:n.flow)==null?void 0:ad.nodes,ke=(sd=n==null?void 0:n.flow)==null?void 0:sd.connectors,{pruneAgainst:Fe}=S,{pruneAgainst:rt}=C,{pruneAgainst:mt}=L,{pruneAgainst:ht}=P;m.useEffect(()=>{ee&&(Fe(ee),mt(ee)),Date.now()-ne()>2e3&&re()},[ee,Fe,mt,ne,re]),m.useEffect(()=>{if(!ee)return;const F=I.current,q=new Set(ee.map(oe=>oe.id));if(I.current=q,F===null)return;const Z=S.overrides,$=L.ids;let _=!1;for(const oe of q)if(!F.has(oe)&&!(oe in Z)){_=!0;break}if(!_){for(const oe of F)if(!q.has(oe)&&!$.has(oe)){_=!0;break}}_&&N(oe=>oe+1)},[ee]),m.useEffect(()=>{ke&&(rt(ke),ht(ke)),Date.now()-ne()>2e3&&re()},[ke,rt,ht,ne,re]),m.useEffect(()=>{if(!(!ee||!T)&&ee.length===T.length){for(let F=0;F<ee.length;F++){const q=ee[F],Z=T[F];if(!q||q.id!==Z)return}E(null)}},[ee,T]);const le=(n==null?void 0:n.id)??null,Q=m.useMemo(()=>le?jue({baseUrl:"",flowId:le}):null,[le]),[fe,we]=m.useState(!1),{setOverride:Se,dropOverride:Oe}=S,te=m.useRef(S.overrides);m.useEffect(()=>{te.current=S.overrides},[S.overrides]);const de=m.useCallback((F,q)=>{var $;if(!le||!Q)return;const Z=($=ee==null?void 0:ee.find(_=>_.id===F))==null?void 0:$.position;Se(F,{position:q}),A(null),Y(),Z&&G({do:async()=>{await Q.updateNodePosition(F,q)},undo:async()=>{await Q.updateNodePosition(F,Z)},coalesceKey:`node:${F}:position`}),Q.updateNodePosition(F,q).catch(_=>{Oe(F),Z&&X(),A(_ instanceof Error?_.message:String(_)),console.error("updateNodePosition failed",_)})},[le,Q,ee,Se,Oe,G,X,Y]),Pe=m.useCallback(F=>{if(!le||!Q||F.length===0)return;const q=te.current,Z=F.map($=>{var Ae;const _=ee==null?void 0:ee.find(Me=>Me.id===$.id);if(!_)return null;const oe=((Ae=q[$.id])==null?void 0:Ae.position)??_.position;return{id:$.id,prev:oe,next:$.position}}).filter($=>$!==null);if(Z.length!==0){for(const $ of Z)Se($.id,{position:$.next});A(null),Y(),G({do:async()=>{await Promise.allSettled(Z.map($=>Q.updateNodePosition($.id,$.next)))},undo:async()=>{await Promise.allSettled(Z.map($=>Q.updateNodePosition($.id,$.prev)))}}),Promise.all(Z.map(async $=>{try{return await Q.updateNodePosition($.id,$.next),null}catch(_){return Oe($.id),_ instanceof Error?_.message:String(_)}})).then($=>{const _=$.find(oe=>oe!==null);_&&A(_)})}},[le,Q,ee,Se,Oe,G,Y]),qe=m.useCallback((F,q)=>{Se(F,{position:{x:q.x,y:q.y},data:{width:q.width,height:q.height}})},[Se]),We=m.useCallback((F,q)=>{if(!le||!Q)return;const Z=ee==null?void 0:ee.find(oe=>oe.id===F),$=Z?{width:Z.data.width,height:Z.data.height,position:{x:Z.position.x,y:Z.position.y}}:void 0,_={width:q.width,height:q.height,position:{x:q.x,y:q.y}};Se(F,{position:_.position,data:{width:_.width,height:_.height}}),A(null),Y(),$&&G({do:async()=>{await Q.updateNode(F,_)},undo:async()=>{await Q.updateNode(F,$)},coalesceKey:`node:${F}:resize`}),Q.updateNode(F,_).catch(oe=>{Oe(F),$&&X(),A(oe instanceof Error?oe.message:String(oe)),console.error("updateNode resize failed",oe)})},[le,Q,ee,Se,Oe,G,X,Y]),Rt=m.useCallback(F=>{if(!le||!Q)return;const q=ee==null?void 0:ee.find(_=>_.id===F);if(!q)return;const Z={autoSize:q.data.autoSize,width:q.data.width,height:q.data.height},$={autoSize:!0};Se(F,{data:{autoSize:!0,width:void 0,height:void 0}}),A(null),Y(),G({do:async()=>{await Q.updateNode(F,$)},undo:async()=>{await Q.updateNode(F,Z)},coalesceKey:`node:${F}:fit-to-content`}),Q.updateNode(F,$).catch(_=>{Oe(F),X(),A(_ instanceof Error?_.message:String(_)),console.error("updateNode (fit-to-content) failed",_)})},[le,Q,ee,Se,Oe,G,X,Y]),st=m.useCallback(F=>{if(!le||!Q||F.length===0)return;const q=[];for(const $ of F){const _=ee==null?void 0:ee.find(Ue=>Ue.id===$.id);if(!_)continue;const oe=_.data,Ae={position:{x:_.position.x,y:_.position.y}};oe.width!==void 0&&(Ae.width=oe.width),oe.height!==void 0&&(Ae.height=oe.height);const Me={position:$.position};$.width!==void 0&&(Me.width=$.width),$.height!==void 0&&(Me.height=$.height),q.push({id:$.id,prev:Ae,next:Me})}if(q.length===0)return;for(const $ of q){const _={};$.next.width!==void 0&&(_.width=$.next.width),$.next.height!==void 0&&(_.height=$.next.height),Se($.id,{position:$.next.position,...Object.keys(_).length>0?{data:_}:{}})}A(null),Y();const Z=q.map($=>$.id).sort();G({do:async()=>{await Promise.allSettled(q.map($=>Q.updateNode($.id,$.next)))},undo:async()=>{await Promise.allSettled(q.map($=>Q.updateNode($.id,$.prev)))},coalesceKey:`multi:resize:${Z.join(",")}`}),Promise.all(q.map(async $=>{try{return await Q.updateNode($.id,$.next),null}catch(_){return Oe($.id),_ instanceof Error?_.message:String(_)}})).then($=>{const _=$.find(oe=>oe!==null);_&&A(_)})},[le,Q,ee,Se,Oe,G,Y]),{setOverride:Ne,dropOverride:ot}=C,Jn=m.useCallback((F,q)=>{Se(F,{data:q})},[Se]),zt=m.useCallback((F,q)=>{for(const Z of F)Se(Z,{data:q})},[Se]),zn=m.useCallback((F,q)=>{Ne(F,q)},[Ne]),Kt=m.useCallback((F,q)=>{if(!le||!Q)return;aq(aa,q);const Z=ee==null?void 0:ee.find(_=>_.id===F);let $=null;if(Z){$={};const _=Z.data;for(const oe of Object.keys(q))$[oe]=_[oe]}if(Se(F,{data:q}),A(null),Y(),$){const _=$;G({do:async()=>{await Q.updateNode(F,q)},undo:async()=>{await Q.updateNode(F,_)},coalesceKey:`node:${F}:style`})}Q.updateNode(F,q).catch(_=>{Oe(F),$&&X(),A(_ instanceof Error?_.message:String(_)),console.error("updateNode style failed",_)})},[le,Q,ee,Se,Oe,G,X,Y]),p1=m.useCallback((F,q)=>{if(!le||!Q||F.length===0)return;aq(aa,q);const Z=F.map($=>{const _=ee==null?void 0:ee.find(Me=>Me.id===$);if(!_)return null;const oe=_.data,Ae={};for(const Me of Object.keys(q))Ae[Me]=oe[Me];return{id:$,prev:Ae}}).filter($=>$!==null);if(Z.length!==0){for(const $ of Z)Se($.id,{data:q});A(null),Y(),G({do:async()=>{await Promise.allSettled(Z.map($=>Q.updateNode($.id,q)))},undo:async()=>{await Promise.allSettled(Z.map($=>Q.updateNode($.id,$.prev)))}}),Promise.all(Z.map(async $=>{try{return await Q.updateNode($.id,q),null}catch(_){return Oe($.id),_ instanceof Error?_.message:String(_)}})).then($=>{const _=$.find(oe=>oe!==null);_&&A(_)})}},[le,Q,ee,Se,Oe,G,Y]),y1=m.useCallback((F,q)=>{if(!le||!Q)return;Iue(aa,q);const Z=ke==null?void 0:ke.find(_=>_.id===F);let $=null;if(Z){$={};const _=Z;for(const oe of Object.keys(q))$[oe]=_[oe]}if(Ne(F,q),A(null),Y(),$){const _=$;G({do:async()=>{await Q.updateConnector(F,q)},undo:async()=>{await Q.updateConnector(F,_)},coalesceKey:`connector:${F}:style`})}Q.updateConnector(F,q).catch(_=>{ot(F),$&&X(),A(_ instanceof Error?_.message:String(_)),console.error("updateConnector failed",_)})},[le,Q,ke,Ne,ot,G,X,Y]),{mark:Jo,markMany:ei,unmark:_r,unmarkMany:Ki}=L,{mark:ti,markMany:fr,unmark:Hr,unmarkMany:pr}=P,m1=m.useCallback(F=>{if(!le||!Q)return;const q=ee==null?void 0:ee.find(Me=>Me.id===F);if(!q)return;const Z=(ke??[]).filter(Me=>Me.source===F||Me.target===F),$=Z.map(Me=>Me.id),_=new Set($);A(null),Jo(F),$.length>0&&fr($),d(Me=>Me.filter(Ue=>Ue!==F)),p(Me=>Me.filter(Ue=>!_.has(Ue))),Y();const oe=q,Ae=Z;G({do:async()=>{Jo(F),$.length>0&&fr($),await Q.deleteNode(F)},undo:async()=>{_r(F),$.length>0&&pr($),await Q.createNode({id:oe.id,type:oe.type,position:oe.position,data:oe.data});for(const Me of Ae)await Q.createConnector({...Me,id:Me.id})}}),Q.deleteNode(F).catch(Me=>{_r(F),$.length>0&&pr($),X(),A(Me instanceof Error?Me.message:String(Me)),console.error("deleteNode failed",Me)})},[le,Q,ee,ke,Jo,fr,_r,pr,G,X,Y]),k1=m.useCallback((F,q)=>{if(!le||!Q||!ee)return;const Z=T??ee.map(oe=>oe.id),$=b8e(Z,F,q);if(!$)return;const _=Z.indexOf(F);E($),A(null),Y(),G({do:async()=>{await Q.reorderNode(F,q)},undo:async()=>{await Q.reorderNode(F,{op:"toIndex",index:_})}}),Q.reorderNode(F,q).catch(oe=>{E(null),X(),A(oe instanceof Error?oe.message:String(oe)),console.error("reorderNode failed",oe)})},[le,Q,ee,T,G,X,Y]);m.useCallback(F=>{if(!le||!Q)return;const q=ke==null?void 0:ke.find($=>$.id===F);if(!q)return;A(null),ti(F),p($=>$.filter(_=>_!==F)),Y();const Z=q;G({do:async()=>{ti(F),await Q.deleteConnector(F)},undo:async()=>{Hr(F),await Q.createConnector({...Z,id:Z.id})}}),Q.deleteConnector(F).catch($=>{Hr(F),X(),A($ instanceof Error?$.message:String($)),console.error("deleteConnector failed",$)})},[le,Q,ke,ti,Hr,G,X,Y]);const He=m.useCallback((F,q)=>{if(!le||!Q||F.length===0&&q.length===0)return;const Z=new Set(F),$=F.map(ze=>ee==null?void 0:ee.find(it=>it.id===ze)).filter(ze=>!!ze),_=(ke??[]).filter(ze=>Z.has(ze.source)||Z.has(ze.target)),oe=new Set(_.map(ze=>ze.id)),Ae=q.map(ze=>ke==null?void 0:ke.find(it=>it.id===ze)).filter(ze=>!!ze).filter(ze=>!oe.has(ze.id));if($.length===0&&_.length===0&&Ae.length===0)return;A(null);const Me=$.map(ze=>ze.id),Ue=[..._.map(ze=>ze.id),...Ae.map(ze=>ze.id)];Me.length>0&&ei(Me),Ue.length>0&&fr(Ue);const Ut=$;d(ze=>ze.filter(it=>!Z.has(it)));const Eo=new Set(Ae.map(ze=>ze.id));p(ze=>ze.filter(it=>!Eo.has(it)&&!oe.has(it))),Y(),G({do:async()=>{Me.length>0&&ei(Me),Ue.length>0&&fr(Ue);for(const ze of Ut)await Q.deleteNode(ze.id).catch(()=>{});await Promise.allSettled(Ae.map(ze=>Q.deleteConnector(ze.id)))},undo:async()=>{Me.length>0&&Ki(Me),Ue.length>0&&pr(Ue);for(let ze=Ut.length-1;ze>=0;ze--){const it=Ut[ze];it&&await Q.createNode({id:it.id,type:it.type,position:it.position,data:it.data})}for(const ze of[..._,...Ae])await Q.createConnector({...ze,id:ze.id})}});const Dn=new Map;for(const ze of $)Dn.set(ze.id,_.filter(it=>it.source===ze.id||it.target===ze.id).map(it=>it.id));(async()=>{const ze=[];for(const Yt of Ut)try{await Q.deleteNode(Yt.id)}catch(gn){_r(Yt.id);const na=Dn.get(Yt.id)??[];na.length>0&&pr(na),ze.push(gn instanceof Error?gn.message:String(gn))}const it=await Promise.all(Ae.map(async Yt=>{try{return await Q.deleteConnector(Yt.id),null}catch(gn){return Hr(Yt.id),gn instanceof Error?gn.message:String(gn)}}));for(const Yt of it)Yt!==null&&ze.push(Yt);ze.length>0&&ze[0]!==void 0&&A(ze[0])})()},[le,Q,ee,ke,ei,fr,_r,Ki,Hr,pr,G,Y]);m.useEffect(()=>{M.current=He},[He]),m.useEffect(()=>{const F=q=>{if(q.key!=="Delete"&&q.key!=="Backspace"||xr(document.activeElement)||document.querySelector('[data-testid="inline-edit-input"]'))return;const Z=w.current,$=g.current;Z.length===0&&$.length===0||(q.preventDefault(),He(Z,$))};return window.addEventListener("keydown",F),()=>window.removeEventListener("keydown",F)},[He]);const{undo:Mt,redo:Fr,canUndo:Or,canRedo:jn}=j;m.useEffect(()=>{const F=async q=>{if((q.metaKey||q.ctrlKey)&&q.key.toLowerCase()==="z"&&!xr(document.activeElement)){if(q.preventDefault(),q.shiftKey){if(!jn)return;try{const Z=await Fr();Z!=null&&Z.entry&&await Z.entry.do()}catch(Z){A(Z instanceof Error?Z.message:String(Z)),console.error("redo failed",Z)}return}if(Or)try{const Z=await Mt();Z!=null&&Z.entry&&await Z.entry.undo()}catch(Z){A(Z instanceof Error?Z.message:String(Z)),console.error("undo failed",Z)}}};return window.addEventListener("keydown",F),()=>window.removeEventListener("keydown",F)},[Mt,Fr,Or,jn]);const yr=m.useCallback((F,q)=>{if(!le||!Q)return;const Z=ee==null?void 0:ee.find(oe=>oe.id===F),_=(Z&&"name"in Z.data?Z.data.name:void 0)??"";Se(F,{data:{name:q}}),A(null),Y(),Z&&G({do:async()=>{await Q.updateNode(F,{name:q})},undo:async()=>{await Q.updateNode(F,{name:_})},coalesceKey:`node:${F}:name`}),Q.updateNode(F,{name:q}).catch(oe=>{Z&&X(),A(oe instanceof Error?oe.message:String(oe)),console.error("updateNode name failed",oe)})},[le,Q,ee,Se,G,X,Y]),Mo=m.useCallback((F,q)=>{if(!le||!Q)return;const Z=ee==null?void 0:ee.find(_=>_.id===F);if(!Z)return;const $=Z.data.description??"";Se(F,{data:{description:q}}),A(null),Y(),G({do:async()=>{await Q.updateNode(F,{description:q})},undo:async()=>{await Q.updateNode(F,{description:$})},coalesceKey:`node:${F}:description`}),Q.updateNode(F,{description:q}).catch(_=>{X(),A(_ instanceof Error?_.message:String(_)),console.error("updateNode description failed",_)})},[le,Q,ee,Se,G,X,Y]),er=m.useCallback((F,q)=>{if(!le||!Q)return;const Z=ee==null?void 0:ee.find(_=>_.id===F);if(!Z)return;const $=Z.data.detail??"";Se(F,{data:{detail:q}}),A(null),Y(),G({do:async()=>{await Q.updateNode(F,{detail:q})},undo:async()=>{await Q.updateNode(F,{detail:$})},coalesceKey:`node:${F}:detail`}),Q.updateNode(F,{detail:q}).catch(_=>{X(),A(_ instanceof Error?_.message:String(_)),console.error("updateNode detail failed",_)})},[le,Q,ee,Se,G,X,Y]),qr=m.useCallback((F,q)=>{if(!le||!Q)return;const Z=ee==null?void 0:ee.find(_=>_.id===F);if(!Z)return;const $="icon"in Z.data?Z.data.icon??null:null;Se(F,{data:{icon:q??void 0}}),A(null),Y(),G({do:async()=>{await Q.updateNode(F,{icon:q})},undo:async()=>{await Q.updateNode(F,{icon:$})},coalesceKey:`node:${F}:icon`}),Q.updateNode(F,{icon:q}).catch(_=>{X(),A(_ instanceof Error?_.message:String(_)),console.error("updateNode icon failed",_)})},[le,Q,ee,Se,G,X,Y]),an=m.useCallback((F,q,Z)=>{if(!le||!Q)return;A(null);const $=`node-${No()}`,_=lq(F,Z,P0(aa).node),oe={id:$,type:"shapeNode",position:q,data:_};Se($,{id:$,type:"shapeNode",position:q,data:_}),Y(),Q.createNode(oe).then(({id:Me})=>{G({do:async()=>{await Q.createNode({...oe,id:Me})},undo:async()=>{await Q.deleteNode(Me)}})}).catch(Me=>{Oe($),A(Me instanceof Error?Me.message:String(Me)),console.error("createNode failed",Me)})},[le,Q,Se,Oe,G,Y]),jt=m.useCallback((F,q)=>{if(!le||!Q)return;A(null);const Z=`node-${No()}`,$={icon:F,width:Tu.width,height:Tu.height},_={id:Z,type:"iconNode",position:q,data:$};Se(Z,{id:Z,type:"iconNode",position:q,data:$}),d([Z]),Y(),Q.createNode(_).then(({id:Ae})=>{G({do:async()=>{await Q.createNode({..._,id:Ae})},undo:async()=>{await Q.deleteNode(Ae)}})}).catch(Ae=>{Oe(Z),A(Ae instanceof Error?Ae.message:String(Ae)),console.error("createNode (icon) failed",Ae)})},[le,Q,Se,Oe,G,Y]),bo=m.useCallback(F=>{if(!le||!Q)return;A(null);const q=`node-${No()}`,Z={id:q,type:"htmlNode",position:F.position,data:{}},$={id:q,type:"htmlNode",position:F.position,data:{}};Se(q,$),d([q]),Y(),Q.createNode(Z).then(({id:_})=>{G({do:async()=>{await Q.createNode({...Z,id:_})},undo:async()=>{await Q.deleteNode(_)}})}).catch(_=>{Oe(q),A(_ instanceof Error?_.message:String(_)),console.error("createNode (htmlNode) failed",_)})},[le,Q,Se,Oe,G,Y]),mr=m.useRef(new Map),Xi=m.useCallback((F,q)=>{mr.current.set(F,q)},[]),Yi=m.useCallback(F=>{mr.current.delete(F)},[]),Co=m.useCallback(F=>{!le||!Q||(A(null),Y(),x8e({...F,flowId:le,lastUsed:P0(aa).node},{upload:(q,Z,$,_)=>Q.uploadImage(Z,$,_),createNode:async(q,Z)=>{const{id:$}=await Q.createNode(Z);return{id:$}},deleteNode:async(q,Z)=>(await Q.deleteNode(Z),{ok:!0}),setOverride:Se,pushUndo:G,rememberRetry:Xi,forgetRetry:Yi}).catch(q=>{console.error("image-upload-flow failed",q)}))},[le,Q,Se,G,Y,Xi,Yi]),Ct=m.useCallback(F=>{if(!le||!Q)return;const q=`node-${No()}`;Co({nodeId:q,...F})},[le,Q,Co]),Qi=m.useCallback(F=>{const q=mr.current.get(F);q&&Co({nodeId:F,...q})},[Co]),[Tn,ni]=m.useState({open:!1,mode:"insert"}),tr=m.useCallback((F,q)=>{ni({open:!0,mode:F,nodeId:q})},[]),kr=m.useCallback(()=>{ni(F=>({...F,open:!1}))},[]),g1=m.useCallback(()=>{tr("insert")},[tr]),Ji=m.useCallback(F=>tr("replace",F),[tr]),ea=m.useCallback(F=>{if(kue(F),Tn.mode==="replace"&&Tn.nodeId){if(le&&Q){const q=Tn.nodeId,Z=ee==null?void 0:ee.find(_=>_.id===q),$=(Z==null?void 0:Z.type)==="iconNode"?Z.data.icon:void 0;if(Se(q,{data:{icon:F}}),A(null),Y(),$!==void 0){const _=$;G({do:async()=>{await Q.updateNode(q,{icon:F})},undo:async()=>{await Q.updateNode(q,{icon:_})},coalesceKey:`node:${q}:icon`})}Q.updateNode(q,{icon:F}).catch(_=>{Oe(q),$!==void 0&&X(),A(_ instanceof Error?_.message:String(_)),console.error("updateNode (icon replace) failed",_)})}}else{const q=W.current;if(q&&le){const Z=yue(q,{width:window.innerWidth,height:window.innerHeight});jt(F,Z)}}kr()},[Tn.mode,Tn.nodeId,le,Q,ee,Se,Oe,G,X,Y,jt,kr]),ri=m.useCallback((F,q)=>{if(!le||!Q)return;const Z=ke==null?void 0:ke.find(_=>_.id===F),$=Z==null?void 0:Z.label;Ne(F,{label:q}),A(null),Y(),Z&&G({do:async()=>{await Q.updateConnector(F,{label:q})},undo:async()=>{await Q.updateConnector(F,{label:$})},coalesceKey:`connector:${F}:label`}),Q.updateConnector(F,{label:q}).catch(_=>{Z&&X(),A(_ instanceof Error?_.message:String(_)),console.error("updateConnector label failed",_)})},[le,Q,ke,Ne,G,X,Y]),mn=m.useCallback((F,q,Z)=>{if(!le||!Q)return;const $=`conn-${No()}`,_=Z==null?void 0:Z.targetPin,oe=P0(aa).connector,Ae={id:$,source:F,target:q,sourceHandleAutoPicked:!0,targetHandleAutoPicked:!0,..._?{targetPin:_}:{},...oe,kind:"default"},Me={id:$,source:F,target:q,sourceHandleAutoPicked:!0,targetHandleAutoPicked:!0,..._?{targetPin:_}:{},...oe,kind:"default"};Ne($,Ae),A(null),Y(),Q.createConnector(Me).then(({id:Ue})=>{G({do:async()=>{await Q.createConnector({...Me,id:Ue})},undo:async()=>{await Q.deleteConnector(Ue)}})}).catch(Ue=>{ot($),A(Ue instanceof Error?Ue.message:String(Ue)),console.error("createConnector failed",Ue)})},[le,Q,Ne,ot,G,Y]),Vr=m.useCallback(({sourceNodeId:F,position:q,shape:Z})=>{if(!le||!Q)return;A(null);const $=`node-${No()}`,_=`conn-${No()}`,oe=pR[Z],Ae=P0(aa),Me=lq(Z,oe,Ae.node),Ue={id:$,type:"shapeNode",position:q,data:Me},Ut={id:_,source:F,target:$,sourceHandleAutoPicked:!0,targetHandleAutoPicked:!0,...Ae.connector,kind:"default"};Se($,{id:$,type:"shapeNode",position:q,data:Me}),Ne(_,Ut),v($),Y(),(async()=>{try{await Q.createNode(Ue),await Q.createConnector(Ut),G({do:async()=>{await Q.createNode(Ue),await Q.createConnector(Ut)},undo:async()=>{ot(_),Oe($),await Q.deleteConnector(_).catch(()=>{}),await Q.deleteNode($).catch(()=>{})}})}catch(Dn){Oe($),ot(_),A(Dn instanceof Error?Dn.message:String(Dn)),console.error("createAndConnectFromPane failed",Dn)}})()},[le,Q,Se,Oe,Ne,ot,G,Y]),Br=m.useRef(null),[x1,So]=m.useState(!1),nr=m.useCallback(F=>{if(!ee)return;const q=new Set(F),Z=ee.filter(_=>q.has(_.id));if(Z.length===0)return;const $=(ke??[]).filter(_=>q.has(_.source)&&q.has(_.target));Br.current=JSON.parse(JSON.stringify({nodes:Z,connectors:$})),So(!0)},[ee,ke]),kn=m.useCallback(F=>{if(!le||!Q)return;const q=Br.current;if(!q||q.nodes.length===0)return;const{newNodes:Z,newConnectors:$}=y8e({nodes:q.nodes,connectors:q.connectors,flowPos:F,nodeIdGen:()=>`node-${No()}`,connectorIdGen:()=>`conn-${No()}`});for(const _ of Z)Se(_.id,_);for(const _ of $)Ne(_.id,_);d(Z.map(_=>_.id)),p($.map(_=>_.id)),A(null),Y(),(async()=>{try{for(const _ of Z)await Q.createNode({id:_.id,type:_.type,position:_.position,data:_.data});for(const _ of $)await Q.createConnector(_);G({do:async()=>{for(const _ of Z)await Q.createNode({id:_.id,type:_.type,position:_.position,data:_.data});for(const _ of $)await Q.createConnector(_)},undo:async()=>{await Promise.allSettled($.map(_=>Q.deleteConnector(_.id))),await Promise.allSettled(Z.map(_=>Q.deleteNode(_.id)))}})}catch(_){for(const oe of Z)Oe(oe.id);for(const oe of $)ot(oe.id);A(_ instanceof Error?_.message:String(_)),console.error("paste failed",_)}})()},[le,Q,Se,Oe,Ne,ot,Y,G]);m.useEffect(()=>{const F=q=>{const Z=Sue({event:q,isEditableActive:xr(document.activeElement),hasNodes:!!ee&&ee.length>0,hasConnectors:!!ke&&ke.length>0,selectedIds:w.current,hasClipboard:!!Br.current});if(Z.type!=="noop"&&!(Z.type==="copy"||Z.type==="paste")){if(q.preventDefault(),Z.type==="selectAll"){d((ee??[]).map($=>$.id)),p((ke??[]).map($=>$.id));return}nr([...Z.ids]),kn(null)}};return window.addEventListener("keydown",F),()=>window.removeEventListener("keydown",F)},[ee,ke,nr,kn]),m.useEffect(()=>{const F=q=>{const Z=Mue(q);if(!Z||xr(document.activeElement))return;const $=w.current;if($.length===0)return;const _=S.overrides,oe=(ee??[]).map(Me=>{var Ut;const Ue=((Ut=_[Me.id])==null?void 0:Ut.position)??Me.position;return{id:Me.id,position:Ue}}),Ae=Cue(Z,$,oe);if(Ae.length!==0)if(q.preventDefault(),Ae.length===1){const Me=Ae[0];Me&&de(Me.id,Me.position)}else Pe(Ae)};return window.addEventListener("keydown",F),()=>window.removeEventListener("keydown",F)},[ee,S.overrides,de,Pe]),m.useEffect(()=>{const F=q=>{const Z=bue(q);if(!Z||xr(document.activeElement))return;q.preventDefault();const $=W.current;$&&(Z==="fit"?$.fitView({padding:.2,duration:200}):Z==="in"?$.zoomIn({duration:150}):$.zoomOut({duration:150}))};return window.addEventListener("keydown",F),()=>window.removeEventListener("keydown",F)},[]);const sn=m.useCallback(async F=>{if(!le||!Q||!ee||!Q.computeLayout)return;const q=S.overrides,Z=W.current,$=F==="selection"?new Set(w.current):null,_=$?ee.filter(De=>$.has(De.id)):ee;if(_.length<2)return;const oe=new Set(_.map(De=>De.id)),Ae=(ke??[]).filter(De=>oe.has(De.source)&&oe.has(De.target)),Me=new Map,Ue=_.map(De=>{var vn;const Qe=((vn=q[De.id])==null?void 0:vn.position)??De.position;Me.set(De.id,Qe);const Ht=Z==null?void 0:Z.getInternalNode(De.id),xn=Ht==null?void 0:Ht.measured,Ao=De.data,ra=(xn==null?void 0:xn.width)??Ao.width??200,ld=(xn==null?void 0:xn.height)??Ao.height??120;return{id:De.id,type:De.type,width:ra,height:ld}}),Ut=Ae.map(De=>({id:De.id,source:De.source,target:De.target})),Eo=await Q.computeLayout(Ue,Ut),Dn=new Map;for(const[De,Qe]of Object.entries(Eo.nodes))Dn.set(De,Qe.position);let ze=Number.POSITIVE_INFINITY,it=Number.POSITIVE_INFINITY,Yt=Number.POSITIVE_INFINITY,gn=Number.POSITIVE_INFINITY;for(const De of Ue){const Qe=Me.get(De.id);if(!Qe)continue;Qe.x<ze&&(ze=Qe.x),Qe.y<it&&(it=Qe.y);const Ht=Dn.get(De.id);Ht&&(Ht.x<Yt&&(Yt=Ht.x),Ht.y<gn&&(gn=Ht.y))}const na=Number.isFinite(ze)&&Number.isFinite(Yt)?ze-Yt:0,_z=Number.isFinite(it)&&Number.isFinite(gn)?it-gn:0,ai=[];for(const De of Ue){const Qe=Me.get(De.id),Ht=Dn.get(De.id);if(!Qe||!Ht)continue;const xn={x:Ht.x+na,y:Ht.y+_z},Ao=xn.x-Qe.x,ra=xn.y-Qe.y;Math.abs(Ao)<1&&Math.abs(ra)<1||ai.push({id:De.id,prev:Qe,next:xn})}if(ai.length!==0){A(null);for(const De of ai)Se(De.id,{position:De.next});Y(),G({do:async()=>{await Promise.allSettled(ai.map(De=>Q.updateNodePosition(De.id,De.next)))},undo:async()=>{await Promise.allSettled(ai.map(De=>Q.updateNodePosition(De.id,De.prev)))}}),Promise.all(ai.map(async De=>{try{return await Q.updateNodePosition(De.id,De.next),null}catch(Qe){return Oe(De.id),Qe instanceof Error?Qe.message:String(Qe)}})).then(De=>{const Qe=De.filter(xn=>xn!==null),Ht=Qe[0];Ht&&(A(Qe.length===1?Ht:`${Qe.length} node updates failed (first: ${Ht})`),console.error("Tidy: some updateNodePosition calls failed",Qe))})}},[le,Q,ee,ke,S.overrides,Se,Oe,G,Y]);m.useEffect(()=>{const F=q=>{if(!(q.metaKey||q.ctrlKey)||!q.shiftKey||q.altKey||q.key.toLowerCase()!=="l"||xr(document.activeElement))return;q.preventDefault();const Z=w.current.length>0?"selection":"all";sn(Z)};return window.addEventListener("keydown",F),()=>window.removeEventListener("keydown",F)},[sn]);const oi=m.useCallback(()=>{const F=w.current.length>0?"selection":"all";sn(F)},[sn]);m.useEffect(()=>{const F=q=>{if(xr(document.activeElement)||document.querySelector('[data-testid="inline-edit-input"]'))return;const Z=Lue(q);if(Z===null)return;const $=Z==="select"?null:Z;if(V.current===$){R(null);return}R($)};return window.addEventListener("keydown",F),()=>window.removeEventListener("keydown",F)},[]),m.useEffect(()=>{const F=q=>{q.key==="Escape"&&(xr(document.activeElement)||document.querySelector('[data-testid="inline-edit-input"]')||(w.current.length>0&&d([]),g.current.length>0&&p([]),V.current!==null&&R(null)))};return window.addEventListener("keydown",F),()=>window.removeEventListener("keydown",F)},[]),m.useEffect(()=>{const F=q=>{if(q.key.toLowerCase()!=="f"||q.metaKey||q.ctrlKey||q.shiftKey||q.altKey||xr(document.activeElement)||document.querySelector('[data-testid="inline-edit-input"]'))return;const Z=w.current;if(Z.length===0)return;const $=W.current;$&&$.fitView({nodes:Z.map(_=>({id:_})),padding:.2,duration:200})};return window.addEventListener("keydown",F),()=>window.removeEventListener("keydown",F)},[]),m.useEffect(()=>{const F=q=>{if(q.key!=="1"||q.metaKey||q.ctrlKey||q.shiftKey||q.altKey||xr(document.activeElement)||document.querySelector('[data-testid="inline-edit-input"]'))return;const Z=W.current;if(!Z)return;const{x:$,y:_}=Z.getViewport();Z.setViewport({x:$,y:_,zoom:1},{duration:150})};return window.addEventListener("keydown",F),()=>window.removeEventListener("keydown",F)},[]);const rr=m.useCallback(F=>{var q,Z,$;switch(F){case"tool.select":R(null);return;case"tool.rectangle":R("rectangle");return;case"tool.ellipse":R("ellipse");return;case"tool.text":R("text");return;case"tool.sticky":R("sticky");return;case"tool.database":R("database");return;case"edit.undo":{if(!Or)return;(async()=>{try{const _=await Mt();_!=null&&_.entry&&await _.entry.undo()}catch(_){A(_ instanceof Error?_.message:String(_)),console.error("undo failed",_)}})();return}case"edit.redo":{if(!jn)return;(async()=>{try{const _=await Fr();_!=null&&_.entry&&await _.entry.do()}catch(_){A(_ instanceof Error?_.message:String(_)),console.error("redo failed",_)}})();return}case"edit.copy":{const _=w.current;if(_.length===0)return;nr([..._]);return}case"edit.paste":kn(null);return;case"edit.duplicate":{const _=w.current;if(_.length===0)return;nr([..._]),kn(null);return}case"edit.delete":{const _=w.current,oe=g.current;if(_.length===0&&oe.length===0)return;He([..._],[...oe]);return}case"edit.selectAll":d((ee??[]).map(_=>_.id)),p((ke??[]).map(_=>_.id));return;case"view.fit":{const _=W.current;if(!_)return;_.fitView({padding:.2,duration:200});return}case"view.zoomIn":{const _=W.current;if(!_)return;_.zoomIn({duration:150});return}case"view.zoomOut":{const _=W.current;if(!_)return;_.zoomOut({duration:150});return}case"view.zoom100":{const _=W.current;if(!_)return;const{x:oe,y:Ae}=_.getViewport();_.setViewport({x:oe,y:Ae,zoom:1},{duration:150});return}case"view.zoomToSelection":{const _=w.current;if(_.length===0)return;const oe=W.current;if(!oe)return;oe.fitView({nodes:_.map(Ae=>({id:Ae})),padding:.2,duration:200});return}case"layout.tidy":{const _=w.current.length>0?"selection":"all";sn(_);return}case"selection.deselect":w.current.length>0&&d([]),g.current.length>0&&p([]),V.current!==null&&R(null);return;case"help.commandPalette":B(!0);return;case"export.pdf":{(q=b.current)==null||q.exportPdf();return}case"export.png":{(Z=b.current)==null||Z.exportPng();return}case"session.reset":{($=x.current)==null||$.call(x);return}}},[Or,jn,Mt,Fr,nr,kn,He,ee,ke,sn]);m.useEffect(()=>{const F=q=>{(q.metaKey||q.ctrlKey)&&(q.shiftKey||q.altKey||q.key.toLowerCase()==="p"&&(q.preventDefault(),!xr(document.activeElement)&&rr("help.commandPalette")))};return window.addEventListener("keydown",F),()=>window.removeEventListener("keydown",F)},[rr]),m.useEffect(()=>{x.current=l??null},[l]);const $r=m.useCallback((F,q)=>{if(!le||!Q)return;const Z=ke==null?void 0:ke.find(oe=>oe.id===F),$=Z?{source:Z.source,target:Z.target,sourceHandle:Z.sourceHandle,targetHandle:Z.targetHandle,sourceHandleAutoPicked:Z.sourceHandleAutoPicked,targetHandleAutoPicked:Z.targetHandleAutoPicked,sourcePin:Z.sourcePin??null,targetPin:Z.targetPin??null}:null,_={...q.source!==void 0?{source:q.source}:{},...q.target!==void 0?{target:q.target}:{},...q.sourceHandle!==void 0?{sourceHandle:q.sourceHandle===null?void 0:q.sourceHandle}:{},...q.targetHandle!==void 0?{targetHandle:q.targetHandle===null?void 0:q.targetHandle}:{},...q.sourceHandleAutoPicked!==void 0?{sourceHandleAutoPicked:q.sourceHandleAutoPicked}:{},...q.targetHandleAutoPicked!==void 0?{targetHandleAutoPicked:q.targetHandleAutoPicked}:{},...q.sourcePin!==void 0?{sourcePin:q.sourcePin===null?void 0:q.sourcePin}:{},...q.targetPin!==void 0?{targetPin:q.targetPin===null?void 0:q.targetPin}:{}};if(Ne(F,_),A(null),Y(),$){const oe=$;G({do:async()=>{await Q.updateConnector(F,q)},undo:async()=>{await Q.updateConnector(F,oe)},coalesceKey:`connector:${F}:reconnect`})}Q.updateConnector(F,q).catch(oe=>{ot(F),$&&X(),A(oe instanceof Error?oe.message:String(oe)),console.error("updateConnector reconnect failed",oe)})},[le,Q,ke,Ne,ot,G,X,Y]),Ur=m.useCallback((F,q,Z)=>{if(!le||!Q)return;const $=ke==null?void 0:ke.find(Ae=>Ae.id===F),_=$?q==="source"?$.sourcePin:$.targetPin:void 0,oe=q==="source"?"sourcePin":"targetPin";if(Ne(F,{[oe]:Z}),A(null),Y(),$){const Ae={[oe]:_??null};G({do:async()=>{await Q.updateConnector(F,{[oe]:Z})},undo:async()=>{await Q.updateConnector(F,Ae)},coalesceKey:`connector:${F}:${oe}`})}Q.updateConnector(F,{[oe]:Z}).catch(Ae=>{ot(F),$&&X(),A(Ae instanceof Error?Ae.message:String(Ae)),console.error("updateConnector pin failed",Ae)})},[le,Q,ke,Ne,ot,G,X,Y]),Lo=m.useCallback((F,q)=>{if(!le||!Q)return;const Z=ke==null?void 0:ke.find(oe=>oe.id===F),$=Z?q==="source"?Z.sourcePin:Z.targetPin:void 0;if(!$)return;const _=q==="source"?"sourcePin":"targetPin";Ne(F,{[_]:void 0}),A(null),Y(),G({do:async()=>{await Q.updateConnector(F,{[_]:null})},undo:async()=>{await Q.updateConnector(F,{[_]:$})}}),Q.updateConnector(F,{[_]:null}).catch(oe=>{ot(F),X(),A(oe instanceof Error?oe.message:String(oe)),console.error("updateConnector unpin failed",oe)})},[le,Q,ke,Ne,ot,G,X,Y]),Je=n==null?void 0:n.flow,Wr=S.overrides,Nn=C.overrides,Xt=L.ids,Gr=P.ids,v1=m.useMemo(()=>{if(!Je||h.length===0)return[];const F=new Map(Je.nodes.map(Z=>[Z.id,Z])),q=[];for(const Z of h){const $=F.get(Z);if(!$)continue;const _=Wr[Z];if(!_){q.push($);continue}const oe=_.data?{...$.data,..._.data}:$.data;q.push({...$,..._,data:oe})}return q},[Je,h,Wr]),Dz=m.useMemo(()=>{if(!Je||f.length===0)return[];const F=new Map(Je.connectors.map(Z=>[Z.id,Z])),q=[];for(const Z of f){const $=F.get(Z);if(!$)continue;const _=Nn[Z];q.push(_?{...$,..._}:$)}return q},[Je,f,Nn]),Kh=m.useMemo(()=>{if(!Je)return null;if(!T)return Je.nodes;const F=new Map(Je.nodes.map($=>[$.id,$])),q=[],Z=new Set;for(const $ of T){const _=F.get($);_&&(q.push(_),Z.add($))}for(const $ of Je.nodes)Z.has($.id)||q.push($);return q},[Je,T]),Io=m.useMemo(()=>{const F=Kh??(Je==null?void 0:Je.nodes)??null;return F?Xt.size===0?F:F.filter(q=>!Xt.has(q.id)):null},[Kh,Je,Xt]),ta=m.useMemo(()=>{const F=(Je==null?void 0:Je.connectors)??null;return F?Gr.size===0&&Xt.size===0?F:F.filter(q=>!Gr.has(q.id)&&!Xt.has(q.source)&&!Xt.has(q.target)):null},[Je,Gr,Xt]);if(!c)return y.jsxs("div",{className:"flex h-full w-full flex-col items-center justify-center gap-2 bg-background p-6 text-center",children:[y.jsxs("p",{className:"text-sm font-medium",children:["Unknown demo: ",e]}),y.jsx("p",{className:"text-xs text-muted-foreground",children:"The slug may have been removed. Re-register from the project repo to bring it back."})]});if(r&&!n)return y.jsx("div",{className:"flex h-full w-full items-center justify-center text-sm text-muted-foreground",children:"Loading demo…"});const id=h[0],ii=id?a[id]:void 0;return y.jsxs("div",{className:"relative h-full w-full",children:[n&&!n.valid?y.jsxs("div",{"data-testid":"demo-error-banner",className:"absolute inset-x-0 top-0 z-10 border-b border-rose-500/40 bg-rose-50 px-4 py-2 text-xs text-rose-900 shadow-xs dark:bg-rose-950/40 dark:text-rose-100",children:[y.jsx("span",{className:"font-medium uppercase tracking-wide",children:"Invalid demo: "}),y.jsx("span",{className:"font-mono",children:n.error})]}):null,Je&&Q?y.jsx(o6e,{ref:b,mode:"edit",adapter:Q,projectId:le??void 0,enableEmbed:!1,onExportToCloud:le?()=>we(!0):void 0,onRestartDemo:l,nodes:Io??Je.nodes,connectors:ta??Je.connectors,selectedNodeIds:h,selectedConnectorIds:f,onSelectionChange:ge,runtime:{runs:o,statuses:a,pendingOverrides:{nodes:Wr,connectors:Nn}},onPlayNode:s,onNodePositionChange:de,onNodePositionsChange:Pe,onNodeResize:qe,onNodeResizeEnd:We,onHtmlNodeFitToContent:Rt,onMultiResize:st,onNodeNameChange:yr,onNodeDescriptionChange:Mo,onConnectorLabelChange:ri,onCreateShapeNode:an,onCreateImageFromFile:le?Ct:void 0,onRetryImageUpload:le?Qi:void 0,onCreateHtmlNode:le?bo:void 0,iconPickerOpen:Tn.open,onOpenIconPicker:le?g1:void 0,onCloseIconPicker:le?kr:void 0,onPickIcon:le?ea:void 0,onRequestIconReplace:le?Ji:void 0,onCreateConnector:mn,onReconnectConnector:$r,onPinEndpoint:le?Ur:void 0,onUnpinEndpoint:le?Lo:void 0,onReorderNode:k1,onDeleteNode:m1,onCopyNode:F=>nr([F]),onPasteAt:kn,onCopySelection:le?nr:void 0,onPasteSelection:le?()=>kn(null):void 0,hasClipboard:x1,selectedNodes:v1,selectedConnectors:Dz,onStyleNode:Kt,onStyleNodePreview:Jn,onStyleNodes:p1,onStyleNodesPreview:zt,onStyleConnector:y1,onStyleConnectorPreview:zn,onRfInit:H,onTidy:ee?oi:void 0,onCreateAndConnectFromPane:Vr,pendingEditNodeId:k,activeShape:U,onSelectShape:R,statusReport:ii,onNameChange:yr,onDescriptionChange:Mo,onDetailChange:er,onIconChange:qr,autoFitView:!0,autoFitViewSignal:D}):y.jsx("div",{className:"flex h-full w-full items-center justify-center text-sm text-muted-foreground",children:"No demo data yet."}),z?y.jsxs("div",{"data-testid":"edit-error-banner",className:"absolute inset-x-0 bottom-4 z-20 mx-auto w-fit max-w-[80%] rounded-md border border-rose-500/50 bg-rose-50 px-3 py-2 text-xs text-rose-900 shadow-md dark:bg-rose-950/60 dark:text-rose-100",children:[y.jsx("span",{className:"font-medium",children:"Couldn't save change: "}),y.jsx("span",{className:"font-mono",children:z}),y.jsx("button",{type:"button",className:"ml-3 underline underline-offset-2",onClick:()=>A(null),children:"Dismiss"})]}):null,y.jsx(P6e,{open:O,onOpenChange:B,runCommand:rr,ctx:{hasSelection:h.length>0||f.length>0,canUndo:Or,canRedo:jn,hasClipboard:x1,canExportDemo:!!le,canResetSession:!!l}}),le?y.jsx(K6e,{open:fe,onOpenChange:we,projectId:le,onCapturePreview:()=>{var F;return((F=b.current)==null?void 0:F.capturePreview())??Promise.resolve(void 0)}}):null]})}const DB="npx seeflow register --path .";function S8e(){const[e,t]=m.useState(!1),n=async()=>{try{await navigator.clipboard.writeText(DB),t(!0),setTimeout(()=>t(!1),1200)}catch(r){console.error("[empty-state] copy failed",r)}};return y.jsx("div",{"data-testid":"seeflow-empty-state",className:"flex h-full w-full items-center justify-center bg-background p-6",children:y.jsxs("div",{className:"flex max-w-lg flex-col items-center gap-6 text-center",children:[y.jsx("div",{className:"flex h-12 w-12 items-center justify-center rounded-full bg-muted",children:y.jsx(x2,{className:"h-6 w-6 text-muted-foreground"})}),y.jsxs("div",{className:"space-y-2",children:[y.jsx("h1",{className:"text-2xl font-semibold tracking-tight text-foreground",children:"No demos registered yet"}),y.jsxs("p",{className:"text-sm text-muted-foreground",children:["Point SeeFlow at any folder containing a"," ",y.jsx("code",{className:"rounded bg-muted px-1.5 py-0.5 text-xs",children:".seeflow/flow.json"})," file and it'll appear here."]})]}),y.jsxs("div",{className:"flex w-full items-center gap-2 rounded-md border border-border bg-card px-3 py-2 font-mono text-sm",children:[y.jsx("span",{className:"text-muted-foreground select-none",children:"$"}),y.jsx("code",{className:"flex-1 truncate text-left",children:DB}),y.jsx(Nt,{type:"button",variant:"ghost",size:"sm",onClick:n,"aria-label":"Copy register command",children:e?y.jsx(fo,{className:"h-4 w-4"}):y.jsx(ou,{className:"h-4 w-4"})})]})]})})}function L8e({demos:e}){return e.length===0?y.jsx(S8e,{}):y.jsx("div",{className:"flex h-full w-full items-start justify-center overflow-y-auto bg-background p-8",children:y.jsxs("div",{"data-testid":"studio-home-picker",className:"flex w-full max-w-2xl flex-col gap-6 pt-8",children:[y.jsxs("div",{className:"space-y-1",children:[y.jsx("h1",{className:"text-2xl font-semibold tracking-tight",children:"Open a demo"}),y.jsxs("p",{className:"text-sm text-muted-foreground",children:[e.length," demos registered — pick one to load its canvas."]})]}),y.jsx("ul",{className:"flex flex-col gap-2",children:e.map(t=>y.jsx("li",{children:y.jsxs("button",{type:"button",onClick:()=>qu(`/d/${t.slug}`),"data-testid":`studio-home-demo-${t.slug}`,className:"flex w-full flex-col items-start gap-0.5 rounded-lg border border-border bg-card px-4 py-3 text-left transition-colors hover:border-input",style:{boxShadow:"var(--shadow-card)"},children:[y.jsx("span",{className:"text-sm font-medium",children:t.name}),y.jsx("span",{className:"truncate text-xs text-muted-foreground",children:t.repoPath})]})},t.id))})]})})}const I8e=e=>{if(!e.startsWith("/d/"))return null;const t=e.slice(3);return t.length>0?decodeURIComponent(t):null};function E8e(){const e=s6e(),{demos:t,refresh:n}=d6e(),r=I8e(e);M6e({onRegistryReload:n});const o=r?(t??[]).find(P=>P.slug===r):void 0,i=(o==null?void 0:o.id)??null,{detail:a,loading:s,refresh:l,applyDetail:c}=u6e(i),{runs:h,apply:d}=k6e(i),{events:f,apply:p}=y6e(i),{statusByNode:k,apply:v,reset:w}=w6e(i),g=m.useCallback(()=>{w(),l(),n()},[l,n,w]),M=m.useCallback(P=>{if(!i||!o)return;const T={id:i,slug:o.slug,filePath:""},E=P.valid?{...T,name:P.flow.name??o.name,flow:P.flow,valid:!0,error:null}:{...T,name:o.name,flow:null,valid:!1,error:P.error};c(E)},[i,o,c]),x=m.useCallback(P=>{d(P),p(P),v(P)},[d,p,v]);b6e(i,{onHello:g,onFlowReload:M,onEvent:x});const b=m.useCallback(async()=>{if(i)try{await Sne(i)}catch(P){console.error("Failed to restart demo:",P)}},[i]),S=m.useCallback(P=>{wB(P.id),n()},[n]),C=m.useCallback(async P=>{await n(),i===P&&qu("/")},[n,i]);m.useEffect(()=>{if(e!=="/"||t===null)return;const P=L6e(t,S6e());P&&qu(`/d/${P.slug}`)},[e,t]),m.useEffect(()=>{o&&wB(o.id)},[o]);const L=m.useCallback(P=>{i&&Lne(i,P).catch(T=>{d({type:"node:error",nodeId:P,message:T instanceof Error?T.message:String(T),ts:Date.now()})})},[i,d]);return t===null?y.jsx("div",{className:"flex h-full w-full items-center justify-center bg-background text-sm text-muted-foreground",children:"Loading…"}):y.jsx(L2,{delayDuration:150,children:y.jsxs("div",{className:"flex h-full w-full flex-col bg-background text-foreground",children:[y.jsx(c6e,{demos:t,currentSlug:r??void 0,onProjectCreated:S,onProjectUnregistered:C}),y.jsx("main",{className:"min-h-0 flex-1",children:r?y.jsx(C8e,{slug:r,demos:t,detail:a,loading:s,runs:h,nodeEvents:f,statusByNode:k,onPlayNode:L,onRestartDemo:i?b:void 0}):y.jsx(L8e,{demos:t})})]})})}const xJ=document.getElementById("root");if(!xJ)throw new Error("Root element #root not found");cT.createRoot(xJ).render(y.jsx(oo.StrictMode,{children:y.jsx(E8e,{})}));export{j3e as _,LP as c,uh as g,R8e as z};
|
|
7838
|
+
`)}async function bwe(e,t){const n=t.fontEmbedCSS!=null?t.fontEmbedCSS:t.skipFonts?null:await Mwe(e,t);if(n){const r=document.createElement("style"),o=document.createTextNode(n);r.appendChild(o),e.firstChild?e.insertBefore(r,e.firstChild):e.appendChild(r)}}async function Cwe(e,t={}){const{width:n,height:r}=ZQ(e,t),o=await Tz(e,t,!0);return await bwe(o,t),await eJ(o,t),kwe(o,t),await q3e(o,n,r)}async function Swe(e,t={}){const{width:n,height:r}=ZQ(e,t),o=await Cwe(e,t),i=await CR(o),a=document.createElement("canvas"),s=a.getContext("2d"),l=t.pixelRatio||H3e(),c=t.canvasWidth||n,h=t.canvasHeight||r;return a.width=c*l,a.height=h*l,t.skipAutoScale||F3e(a),a.style.width=`${c}`,a.style.height=`${h}`,t.backgroundColor&&(s.fillStyle=t.backgroundColor,s.fillRect(0,0,a.width,a.height)),s.drawImage(i,0,0,a.width,a.height),a}async function Lwe(e,t={}){return(await Swe(e,t)).toDataURL()}const Iwe=e=>e instanceof Element?!(e.classList.contains("react-flow__minimap")||e.classList.contains("react-flow__controls")||e.classList.contains("react-flow__panel")):!0,dB="#0a0a0c",Ewe=e=>{let t=e;for(;t&&!t.classList.contains("seeflow-canvas-root");)t=t.parentElement;if(!t)return dB;const n=getComputedStyle(t).getPropertyValue("--bg-canvas").trim();return n.length>0?n:dB},Awe=async e=>{const t=await Lwe(e,{cacheBust:!0,filter:Iwe,backgroundColor:Ewe(e)}),n=await new Promise((r,o)=>{const i=new Image;i.onload=()=>r({width:i.naturalWidth,height:i.naturalHeight}),i.onerror=()=>o(new Error("Failed to decode captured image")),i.src=t});return{dataUrl:t,...n}},Pwe=(e,t)=>{const n=document.createElement("a");n.href=e,n.download=t,n.rel="noopener",document.body.appendChild(n),n.click(),n.remove()},Rwe=e=>{const t=e.replace(/[^A-Za-z0-9_-]+/g,"-").replace(/^-+|-+$/g,"");return t.length>0?t.slice(0,80):"canvas"},hB=(e,t)=>`${Rwe(e??"canvas")}.${t}`,zwe=({projectId:e,getReactFlow:t})=>{const[n,r]=m.useState(null),o=m.useCallback(()=>r(null),[]),i=m.useCallback(async()=>{const c=t();if(!c)return null;const h=document.querySelector(".react-flow__viewport");if(!h)return null;const d=c.getViewport();try{return await c.fitView({duration:0,padding:.1}),await new Promise(f=>requestAnimationFrame(()=>f())),await Awe(h)}finally{c.setViewport(d,{duration:0})}},[t]),a=m.useCallback(async()=>{r(null);try{const c=await i();if(!c)return;Pwe(c.dataUrl,hB(e,"png"))}catch(c){r(c instanceof Error?c.message:String(c))}},[i,e]),s=m.useCallback(async()=>{r(null);try{const c=await i();if(!c)return;const{jsPDF:h}=await j3e(async()=>{const{jsPDF:p}=await import("./jspdf.es.min-B5fW8sRe.js").then(k=>k.j);return{jsPDF:p}},[]),d=c.width>c.height?"landscape":"portrait",f=new h({orientation:d,unit:"px",format:[c.width,c.height],hotfixes:["px_scaling"]});f.addImage(c.dataUrl,"PNG",0,0,c.width,c.height),f.save(hB(e,"pdf"))}catch(c){r(c instanceof Error?c.message:String(c))}},[i,e]),l=m.useCallback(async()=>{const c=await i();return c==null?void 0:c.dataUrl},[i]);return{exportPdf:s,exportPng:a,capturePreview:l,lastError:n,clearError:o}},jwe=12,Twe=1200;function Nwe(e,t={}){const n=t.idleMs??Twe;let r,o=null,i=null;const a=typeof requestAnimationFrame<"u",s=()=>{r!==void 0&&(clearTimeout(r),r=void 0)},l=()=>{i!==null&&typeof cancelAnimationFrame<"u"&&cancelAnimationFrame(i),i=null},c=()=>{if(i=null,!o)return;const{clientX:p,clientY:k}=o;o=null;const v=e.getBoundingClientRect();e.style.setProperty("--mx",`${p-v.left}px`),e.style.setProperty("--my",`${k-v.top}px`),e.dataset.active="true",s(),r=setTimeout(()=>{e.dataset.active="false",r=void 0},n)};return{onMove:p=>{if(o={clientX:p.clientX,clientY:p.clientY},!a){c();return}i===null&&(i=requestAnimationFrame(c))},onLeave:()=>{l(),o=null,s(),e.dataset.active="false"},dispose:()=>{l(),o=null,s()}}}function Dwe(){const e=m.useRef(null),t=_e(a=>a.transform,(a,s)=>a[0]===s[0]&&a[1]===s[1]&&a[2]===s[2]),[n,r,o]=t,i=jwe*o;return m.useEffect(()=>{var d;const a=e.current;if(!a)return;const s=(d=a.parentElement)==null?void 0:d.querySelector(".react-flow__pane");if(!s)return;const{onMove:l,onLeave:c,dispose:h}=Nwe(a);return s.addEventListener("mousemove",l,{passive:!0}),s.addEventListener("mouseleave",c,{passive:!0}),()=>{s.removeEventListener("mousemove",l),s.removeEventListener("mouseleave",c),h()}},[]),y.jsx("div",{ref:e,className:"glow-overlay","data-active":"false","data-testid":"canvas-glow-overlay",style:{backgroundPosition:`${n}px ${r}px`,backgroundSize:`${i}px ${i}px`}})}const _we={showToolbar:!0,showStyleStrip:!0,showDetailPanel:!0,showStatusBadges:!0,showResizeHandles:!0,showControls:!0,showShareMenu:!0,showRestart:!0,enableKeyboard:!0,enableContextMenu:!0,enableDragDrop:!0,enableImageDrop:!0,enableZoom:!0,enablePan:!0,enableSelection:!0,enableNodeMove:!0,enableEmbed:!1},Hwe={showToolbar:!1,showStyleStrip:!1,showDetailPanel:!1,showStatusBadges:!0,showResizeHandles:!1,showControls:!0,showShareMenu:!0,showRestart:!1,enableKeyboard:!1,enableContextMenu:!1,enableDragDrop:!1,enableImageDrop:!1,enableZoom:!0,enablePan:!0,enableSelection:!0,enableNodeMove:!0,enableEmbed:!1},Fwe={showToolbar:!1,showStyleStrip:!1,showDetailPanel:!1,showStatusBadges:!1,showResizeHandles:!1,showControls:!1,showShareMenu:!1,showRestart:!1,enableKeyboard:!1,enableContextMenu:!1,enableDragDrop:!1,enableImageDrop:!1,enableZoom:!1,enablePan:!1,enableSelection:!1,enableNodeMove:!1,enableEmbed:!1};function Owe(e){const t=e.mode==="edit"?_we:e.mode==="mini"?Fwe:Hwe;return{showToolbar:e.showToolbar??t.showToolbar,showStyleStrip:e.showStyleStrip??t.showStyleStrip,showDetailPanel:e.showDetailPanel??t.showDetailPanel,showStatusBadges:e.showStatusBadges??t.showStatusBadges,showResizeHandles:e.showResizeHandles??t.showResizeHandles,showControls:e.showControls??t.showControls,showShareMenu:e.showShareMenu??t.showShareMenu,showRestart:e.showRestart??t.showRestart,enableKeyboard:e.enableKeyboard??t.enableKeyboard,enableContextMenu:e.enableContextMenu??t.enableContextMenu,enableDragDrop:e.enableDragDrop??t.enableDragDrop,enableImageDrop:e.enableImageDrop??t.enableImageDrop,enableZoom:e.enableZoom??t.enableZoom,enablePan:e.enablePan??t.enablePan,enableSelection:e.enableSelection??t.enableSelection,enableNodeMove:e.enableNodeMove??t.enableNodeMove,enableEmbed:e.enableEmbed??t.enableEmbed}}const fB=40,Ad={padding:.15,duration:300,includeHiddenNodes:!1};function qwe(e){return e===void 0||e===!1?{onMount:!1,onExternalNodeChange:!1}:e===!0?{onMount:!0,onExternalNodeChange:!0}:{onMount:e.onMount??!0,onExternalNodeChange:e.onExternalNodeChange??!0}}const pB=e=>{if("clientX"in e)return{clientX:e.clientX,clientY:e.clientY};const t=e.changedTouches[0]??e.touches[0];return t?{clientX:t.clientX,clientY:t.clientY}:null},Vwe=(e,t)=>{var r;const n=document.elementsFromPoint(e,t);for(const o of n){const i=(r=o.closest)==null?void 0:r.call(o,".react-flow__node");if(i)return i}return null},nJ=15,sT=(e,t,n)=>{const r=Vwe(t,n);if(r)return r;if(!e)return null;let o=null,i=nJ;const a=e.querySelectorAll(".react-flow__node");for(const s of a){const l=s.getBoundingClientRect();if(l.width===0||l.height===0)continue;const c=Math.max(l.left-t,0,t-l.right),h=Math.max(l.top-n,0,n-l.bottom),d=Math.hypot(c,h);d<=i&&(o=s,i=d)}return o};function yB(e,t,n,r,o){if(e==="source"?(r==null?void 0:r.targetPin)!==void 0||(r==null?void 0:r.targetHandleAutoPicked)===!1:(r==null?void 0:r.sourcePin)!==void 0||(r==null?void 0:r.sourceHandleAutoPicked)===!1)return;const a=e==="source"?n:t,s=e==="source"?t:n,l=o(a),c=o(s);if(!l||!c)return;const h=l.measured.width??l.width??0,d=l.measured.height??l.height??0,f=c.measured.width??c.width??0,p=c.measured.height??c.height??0;if(h===0||d===0||f===0||p===0)return;const k={x:l.internals.positionAbsolute.x,y:l.internals.positionAbsolute.y,w:h,h:d},v={x:c.internals.positionAbsolute.x+f/2,y:c.internals.positionAbsolute.y+p/2};return rue(k,sR(k,v))}function Bwe(e,t,n,r){if(r===null)return"no-op";const o=e==="source"?t:n;return r===(e==="source"?n:t)?"self-loop":r===o?"pin-own":"reconnect-and-pin"}const $we=(e,t)=>{if(!t)return e;const n=t.data?{...e.data,...t.data}:e.data;return{...e,...t,data:n}},Uwe=(e,t)=>t?{...e,...t}:e,Wwe={playNode:f0e,stateNode:T0e,shapeNode:L0e,imageNode:nde,iconNode:pue,htmlNode:Yue},Gwe={editableEdge:_0e},Zwe={zIndex:0},Kwe=8,mB=(e,t)=>e?typeof e=="string"?`url('#${e}')`:`url('#${`${t?`${t}__`:""}${Object.keys(e).sort().map(o=>`${o}=${e[o]}`).join("&")}`}')`:void 0,Xwe=e=>function({fromX:n,fromY:r,toX:o,toY:i,fromPosition:a,toPosition:s,connectionLineStyle:l}){const c=_e(W=>e.current?W.edges.find(H=>H.reconnectable===!0)??null:null),h=c==null?void 0:c.data,d=_e(W=>{var j;const H=W.connection;return((j=H==null?void 0:H.fromHandle)==null?void 0:j.nodeId)??null}),f=_e(W=>c!=null&&c.source?W.nodeLookup.get(c.source)??null:null),p=_e(W=>c!=null&&c.target?W.nodeLookup.get(c.target)??null:null),k=_e(W=>d?W.nodeLookup.get(d)??null:null),v=(c==null?void 0:c.source)===d,w=c?v?f:p:k,g=v?p:f,M=v?h==null?void 0:h.sourcePin:h==null?void 0:h.targetPin,x=v?h==null?void 0:h.sourceHandleAutoPicked:h==null?void 0:h.targetHandleAutoPicked;let b=n,S=r,C=a;if(w){const W=w.measured.width??w.width??0,H=w.measured.height??w.height??0;if(W>0&&H>0){const j={x:w.internals.positionAbsolute.x,y:w.internals.positionAbsolute.y,w:W,h:H};let G=null;if(M)G=lR(j,M);else if(x!==!1&&g){const X=g.measured.width??g.width??0,Y=g.measured.height??g.height??0;if(X>0&&Y>0){const re={x:g.internals.positionAbsolute.x+X/2,y:g.internals.positionAbsolute.y+Y/2};G=sR(j,re)}}G&&(b=G.x,S=G.y,C=kB[G.side])}}const L=_e(W=>W.transform[2]),P=_e(W=>W.nodeLookup),T=_e(W=>{var H;return((H=W.connection.toHandle)==null?void 0:H.nodeId)??null});let E=o,z=i,A=s;if(L>0){const W=nJ/L,H=c?v?c.target:c.source:null;let j=null;if(T&&T!==H){const G=P.get(T)??null;G&&(j=G)}if(!j){let G=W;for(const X of P.values()){if(H&&X.id===H||w&&X.id===w.id)continue;const Y=X.measured.width??X.width??0,re=X.measured.height??X.height??0;if(Y===0||re===0)continue;const ne=X.internals.positionAbsolute.x,ae=X.internals.positionAbsolute.y,ve=Math.max(ne-o,0,o-(ne+Y)),be=Math.max(ae-i,0,i-(ae+re)),me=Math.hypot(ve,be);me<=G&&(G=me,j=X)}}if(!j&&c&&w){const G=w.measured.width??w.width??0,X=w.measured.height??w.height??0;if(G>0&&X>0){const Y=w.internals.positionAbsolute.x,re=w.internals.positionAbsolute.y,ne=Math.max(Y-o,0,o-(Y+G)),ae=Math.max(re-i,0,i-(re+X));Math.hypot(ne,ae)<=W&&(j=w)}}if(j){const G=j.measured.width??j.width??0,X=j.measured.height??j.height??0;if(G>0&&X>0){const Y=wN({x:j.internals.positionAbsolute.x,y:j.internals.positionAbsolute.y,w:G,h:X},{x:o,y:i}),re=lR({x:j.internals.positionAbsolute.x,y:j.internals.positionAbsolute.y,w:G,h:X},Y);E=re.x,z=re.y,A=kB[re.side]}}}const U=(h==null?void 0:h.path)==="step",[R]=U?nh({sourceX:b,sourceY:S,sourcePosition:C,targetX:E,targetY:z,targetPosition:A,borderRadius:Kwe}):KR({sourceX:b,sourceY:S,sourcePosition:C,targetX:E,targetY:z,targetPosition:A}),V=(c==null?void 0:c.style)??l??void 0,O=_e(W=>W.rfId),B=v?c==null?void 0:c.markerStart:c==null?void 0:c.markerEnd,D=v?c==null?void 0:c.markerEnd:c==null?void 0:c.markerStart,N=mB(B,O),I=mB(D,O);return y.jsx("path",{d:R,fill:"none",className:"react-flow__connection-path",style:V,markerStart:N,markerEnd:I})},kB={top:ye.Top,right:ye.Right,bottom:ye.Bottom,left:ye.Left};function Ywe({storeApiRef:e}){const t=yt();return m.useEffect(()=>(e.current=t,()=>{e.current===t&&(e.current=null)}),[t,e]),null}function Qwe({wrapperRef:e}){const t=_e(r=>r.transform[2]),n=e.current;return n&&n.style.setProperty("--rf-zoom",String(t)),null}const Jwe=new Set(["INPUT","TEXTAREA","SELECT"]),rJ=e=>e?Jwe.has(e.tagName)?!0:e instanceof HTMLElement&&e.isContentEditable:!1;function e6e(e){const{event:t,selectedNodeIds:n,hasClipboard:r,activeElement:o,onCopySelection:i,onPasteSelection:a}=e;if(!(t.metaKey||t.ctrlKey)||t.shiftKey||t.altKey)return!1;const s=t.key.toLowerCase();return s!=="c"&&s!=="v"||rJ(o)?!1:s==="c"?n.length===0||!i?!1:(t.preventDefault(),i([...n]),!0):!r||!a?!1:(t.preventDefault(),a(),!0)}const gB=(e,t)=>{var n;return((n=e==null?void 0:e[t])==null?void 0:n.status)??"idle"},t6e=(e,t)=>{var n;return(n=e==null?void 0:e[t])==null?void 0:n.status},n6e=(e,t)=>{var n,r;return((n=e==null?void 0:e[t])==null?void 0:n.status)==="error"?(r=e[t])==null?void 0:r.error:void 0};function r6e(e,t){var NH,DH;const{mode:n,adapter:r,projectId:o,fileBaseUrl:i,nodes:a,connectors:s,selectedNodeIds:l,selectedConnectorIds:c,onSelectionChange:h,runtime:d,onPlayNode:f,onNodePositionChange:p,onNodePositionsChange:k,onNodeResize:v,onNodeResizeEnd:w,onHtmlNodeFitToContent:g,onMultiResize:M,onNodeNameChange:x,onNodeDescriptionChange:b,onConnectorLabelChange:S,onCreateShapeNode:C,onCreateImageFromFile:L,onRetryImageUpload:P,onCreateHtmlNode:T,onCreateConnector:E,onReconnectConnector:z,onReorderNode:A,onDeleteNode:U,onCopyNode:R,onPasteAt:V,hasClipboard:O,onCopySelection:B,onPasteSelection:D,selectedNodes:N,selectedConnectors:I,onStyleNode:W,onStyleNodePreview:H,onStyleNodes:j,onStyleNodesPreview:G,onStyleConnector:X,onStyleConnectorPreview:Y,onRfInit:re,onTidy:ne,onNodeClick:ae,onConnectorClick:ve,onPaneClick:be,onCreateAndConnectFromPane:me,pendingEditNodeId:ge,iconPickerOpen:ee,onOpenIconPicker:ke,onCloseIconPicker:Fe,onPickIcon:rt,onRequestIconReplace:mt,onPinEndpoint:ht,onUnpinEndpoint:le,activeShape:Q,onSelectShape:fe,disableSidebar:we,statusReport:Se,onNameChange:Oe,onDescriptionChange:te,onDetailChange:de,onIconChange:Pe,autoFitView:qe,autoFitViewSignal:We,customIcons:Rt,onExportToCloud:st,onRestartDemo:Ne,showToolbar:ot,showStyleStrip:Jn,showDetailPanel:zt,showStatusBadges:zn,showResizeHandles:Kt,showControls:p1,showShareMenu:y1,showRestart:Jo,enableKeyboard:ei,enableContextMenu:_r,enableDragDrop:Ki,enableImageDrop:ti,enableZoom:fr,enablePan:Hr,enableSelection:pr,enableNodeMove:m1,enableEmbed:k1}=e,He=m.useMemo(()=>Owe({mode:n,showToolbar:ot,showStyleStrip:Jn,showDetailPanel:zt,showStatusBadges:zn,showResizeHandles:Kt,showControls:p1,showShareMenu:y1,showRestart:Jo,enableKeyboard:ei,enableContextMenu:_r,enableDragDrop:Ki,enableImageDrop:ti,enableZoom:fr,enablePan:Hr,enableSelection:pr,enableNodeMove:m1,enableEmbed:k1}),[n,ot,Jn,zt,zn,Kt,p1,y1,Jo,ei,_r,Ki,ti,fr,Hr,pr,m1,k1]),Mt=n==="edit",Fr=m.useRef(He);m.useEffect(()=>{Fr.current=He},[He]);const Or=qe??(n==="mini"?!0:void 0),jn=m.useMemo(()=>qwe(Or),[Or]),yr=d==null?void 0:d.runs,Mo=d==null?void 0:d.statuses,er=(NH=d==null?void 0:d.pendingOverrides)==null?void 0:NH.nodes,qr=(DH=d==null?void 0:d.pendingOverrides)==null?void 0:DH.connectors,an=m.useRef(null),jt=m.useRef(null),bo=m.useRef(!1),mr=m.useRef(!1),Xi=m.useRef(!1),Yi=m.useRef(jn);Yi.current=jn,m.useEffect(()=>{if(bo.current||!jn.onMount||a.length===0)return;const K=jt.current;K&&(K.fitView(Ad),bo.current=!0)},[a,jn.onMount]);const Co=m.useRef(null),Ct=Q,Qi=fe,Tn=m.useRef(new Map),ni=m.useCallback((K,J)=>(Tn.current.set(K,J),()=>{Tn.current.get(K)===J&&Tn.current.delete(K)}),[]),[tr,kr]=m.useState(!1),g1=m.useRef(!1);m.useEffect(()=>{g1.current=tr},[tr]);const Ji=m.useRef(!1),ea=m.useRef(!1),ri=m.useRef(!1),[mn,Vr]=m.useState(null),Br=m.useRef(null);m.useEffect(()=>{Br.current=mn},[mn]),m.useCallback(()=>{Vr(null)},[]);const x1=m.useMemo(()=>Xwe(ri),[]),So=m.useRef(null),nr=m.useRef(null),kn=m.useCallback(K=>{const J=an.current;if(!J){So.current=K;return}const se=So.current;if(se&&se!==K){const ce=J.querySelector(`.react-flow__node[data-id="${CSS.escape(se)}"]`);ce==null||ce.removeAttribute("data-connect-source")}if(K){const ce=J.querySelector(`.react-flow__node[data-id="${CSS.escape(K)}"]`);ce==null||ce.setAttribute("data-connect-source","true")}So.current=K},[]),sn=m.useCallback(K=>{const J=an.current,se=nr.current;if(se!==K){if(J&&se){const ce=J.querySelector(`.react-flow__node[data-id="${CSS.escape(se)}"]`);ce==null||ce.removeAttribute("data-connect-target")}if(J&&K){const ce=J.querySelector(`.react-flow__node[data-id="${CSS.escape(K)}"]`);ce==null||ce.setAttribute("data-connect-target","true")}nr.current=K}},[]),oi=m.useCallback(()=>{kn(null),sn(null)},[kn,sn]);m.useEffect(()=>{if(!tr){sn(null);return}let K=null,J=null;const se=()=>{K=null;const ue=J;if(J=null,!ue)return;const Re=sT(an.current,ue.clientX,ue.clientY),xe=(Re==null?void 0:Re.getAttribute("data-id"))??null;if(xe&&xe===So.current){sn(null);return}sn(xe)},ce=ue=>{J={clientX:ue.clientX,clientY:ue.clientY},K===null&&(K=requestAnimationFrame(se))};return document.addEventListener("pointermove",ce,{passive:!0}),()=>{document.removeEventListener("pointermove",ce),K!==null&&cancelAnimationFrame(K)}},[tr,sn]);const[rr,$r]=m.useState(null),[Ur,Lo]=m.useState(null),Je=m.useRef(null),Wr=m.useRef(null),Nn=m.useRef(null),Xt=m.useRef(!1);m.useEffect(()=>{Je.current=Ct},[Ct]);const Gr=m.useCallback(()=>{Qi(null),$r(null),Lo(null),Je.current=null,Wr.current=null,Nn.current=null,Xt.current=!1},[Qi]);m.useEffect(()=>{if(!He.enableKeyboard)return;const K=J=>{var ue,Re;if(J.key!=="Escape"||rJ(document.activeElement))return;if(Je.current){J.preventDefault(),Gr();return}if(g1.current){J.preventDefault(),Ji.current=!0,ea.current=!0;try{(ue=Co.current)==null||ue.getState().cancelConnection()}catch{}document.dispatchEvent(new MouseEvent("mouseup",{bubbles:!0,cancelable:!0,button:0})),kr(!1);return}if(Br.current){J.preventDefault(),Vr(null);return}const se=vn.current.size>0,ce=Po.current.size>0;(se||ce)&&(J.preventDefault(),(Re=Zr.current)==null||Re.call(Zr,[],[]))};return window.addEventListener("keydown",K),()=>window.removeEventListener("keydown",K)},[Gr,He.enableKeyboard]),m.useEffect(()=>{if(!He.enableKeyboard)return;const K=J=>{e6e({event:J,selectedNodeIds:l,hasClipboard:!!O,activeElement:document.activeElement,onCopySelection:B,onPasteSelection:D})};return window.addEventListener("keydown",K),()=>window.removeEventListener("keydown",K)},[l,O,B,D,He.enableKeyboard]);const v1=m.useCallback(K=>{var ce,ue;if(!Je.current)return;const J=K.target;if(!(J!=null&&J.classList.contains("react-flow__pane")))return;const se={x:K.clientX,y:K.clientY};Xt.current=!0,Wr.current=se,Nn.current=se,$r(se),Lo(se);try{(ue=(ce=K.currentTarget).setPointerCapture)==null||ue.call(ce,K.pointerId)}catch{}K.preventDefault(),K.stopPropagation()},[]),Dz=m.useCallback(K=>{if(!Xt.current)return;const J={x:K.clientX,y:K.clientY};Nn.current=J,Lo(J)},[]),Kh=m.useCallback(K=>{var Xr,dd;if(!Xt.current)return;Xt.current=!1;try{(dd=(Xr=K.currentTarget).releasePointerCapture)==null||dd.call(Xr,K.pointerId)}catch{}const J=Wr.current,se=Nn.current,ce=Je.current,ue=jt.current;if(Gr(),!J||!se||!ce||!ue)return;const Re=Math.min(J.x,se.x),xe=Math.min(J.y,se.y),Ee=Math.max(J.x,se.x),Ke=Math.max(J.y,se.y),et=Ee-Re,lt=Ke-xe,Te=ue.screenToFlowPosition({x:Re,y:xe}),wn=ue.screenToFlowPosition({x:Ee,y:Ke}),Kr=wn.x-Te.x,ct=wn.y-Te.y,Le=et<fB||lt<fB,Ft=Le?pR[ce].width:Kr,w1=Le?pR[ce].height:ct;C==null||C(ce,Te,{width:Ft,height:w1})},[Gr,C]),Io=m.useRef(!1),ta=m.useRef(!1),id=m.useRef(new Map),ii=m.useCallback(()=>{var K;mr.current&&(ta.current||Io.current||(mr.current=!1,(K=jt.current)==null||K.fitView(Ad)))},[]),ad=m.useCallback(K=>{ta.current=K,K||ii()},[ii]);m.useEffect(()=>{var K;if(!Xi.current){Xi.current=!0;return}if(Yi.current.onExternalNodeChange){if(ta.current||Io.current){mr.current=!0;return}(K=jt.current)==null||K.fitView(Ad)}},[We]);const sd=!!A||!!U||!!R||!!V||!!le,[F,q]=m.useState(null),[Z,$]=m.useState(!1),[_,oe]=m.useState(null),[Ae,Me]=m.useState(null),Ue=m.useRef(null),Ut=m.useRef(null);m.useEffect(()=>{if(!F)return;const K=Ut.current;if(!K)return;const J=new MouseEvent("contextmenu",{clientX:F.x,clientY:F.y,bubbles:!0,cancelable:!0,button:2,buttons:2});K.dispatchEvent(J)},[F]);const Eo=m.useCallback(K=>{const J=Ue.current;!J||!A||A(J,K)},[A]),Dn=m.useCallback(()=>{const K=Ue.current;!K||!U||U(K)},[U]),ze=m.useCallback(()=>{const K=Ue.current;!K||!R||R(K)},[R]),it=m.useCallback(()=>{const K=Ue.current;!K||!mt||mt(K)},[mt]);m.useCallback((K,J,se,ce,ue)=>{Fr.current.enableContextMenu&&(Ue.current=null,$(!1),oe(null),Me({connectorId:K,kind:J,pinned:se}),q({x:ce,y:ue}))},[]);const Yt=m.useCallback(()=>{const K=Ae;!K||!le||le(K.connectorId,K.kind)},[Ae,le]),gn=m.useCallback(()=>{if(!V)return;const K=F,J=jt.current;if(!K||!J)return;const se=J.screenToFlowPosition({x:K.x,y:K.y});V(se)},[F,V]),na=typeof navigator<"u"&&/Mac|iPhone|iPad|iPod/.test(navigator.platform||navigator.userAgent||""),_z=na?"⌘C":"Ctrl+C",ai=na?"⌘V":"Ctrl+V",De=m.useMemo(()=>new Set(l),[l]),Qe=m.useMemo(()=>new Set(c),[c]),Ht=m.useMemo(()=>{if(l.length<2)return[];const K=er,J=[];for(const se of l){const ce=a.find(Ee=>Ee.id===se);if(!ce)continue;const ue=K==null?void 0:K[se],Re=(ue==null?void 0:ue.data)??{},xe=ce.data;J.push({id:se,position:(ue==null?void 0:ue.position)??ce.position,data:{width:Re.width??xe.width,height:Re.height??xe.height}})}return J},[a,er,l]),xn=N??[],Ao=m.useMemo(()=>{const K=ue=>{const Re=Mt?void 0:id.current.get(ue.id),xe={id:ue.id,type:ue.type,position:Re??ue.position,data:{...ue.data,projectId:o,fileBaseUrl:i,onRetryUpload:P,status:t6e(yr,ue.id),errorMessage:n6e(yr,ue.id),statusReport:Mo==null?void 0:Mo[ue.id],onPlay:f,onResize:v,onResizeEnd:w,setResizing:ad,onFitToContent:ue.type==="htmlNode"?g:void 0,onNameChange:(()=>{if(Mt&&!(ue.type==="shapeNode"&&ue.data.shape==="ellipse"))return x})(),onDescriptionChange:(()=>{if(Mt){if(ue.type==="shapeNode"){const Ee=ue.data.shape;return Ee==="rectangle"||Ee==="ellipse"||Ee==="sticky"?b:void 0}if(!(ue.type==="imageNode"||ue.type==="iconNode"))return b}})(),onIconChange:(()=>{if(Mt&&!(ue.type!=="playNode"&&ue.type!=="stateNode"))return Pe})(),autoEditOnMount:ge===ue.id?!0:void 0},selected:De.has(ue.id)};return ue.data.width!==void 0&&(xe.width=ue.data.width),ue.data.height!==void 0&&(xe.height=ue.data.height),De.has(ue.id)||(xe.connectable=!1),xe},J=a.map(ue=>K($we(ue,er==null?void 0:er[ue.id]))),se=new Set(a.map(ue=>ue.id)),ce=[];if(er)for(const[ue,Re]of Object.entries(er)){if(se.has(ue))continue;const xe=Re;typeof xe.type!="string"||!xe.position||!xe.data||ce.push(K({...xe,id:ue}))}return[...J,...ce]},[o,i,a,De,yr,Mo,f,v,w,g,ad,er,x,b,Pe,P,ge,Mt]),[ra,ld]=m.useState(Ao);m.useEffect(()=>{Io.current||ta.current||ld(Ao)},[Ao]),m.useEffect(()=>{cd.current=ra},[ra]);const vn=m.useRef(De);m.useEffect(()=>{vn.current=De},[De]);const Zr=m.useRef(h);m.useEffect(()=>{Zr.current=h},[h]);const Po=m.useRef(Qe);m.useEffect(()=>{Po.current=Qe},[Qe]);const cd=m.useRef(Ao),oa=m.useRef(!1),Xh=m.useRef(new Set),Yh=m.useRef(new Set),Hz=m.useRef(new Set),Fz=m.useRef(new Set),si=m.useRef(null),vJ=m.useCallback(K=>{var ct;const J=oa.current?Hz.current:(ct=si.current)!=null&&ct.shift?si.current.nodeIds:null,se=J&&J.size>0?K.filter(Le=>Le.type!=="select"?!0:!(Le.selected===!1&&J.has(Le.id))):K,ce=new Set;for(const Le of se)Le.type==="select"&&ce.add(Le.id);const ue=vG(se,cd.current),Re=new Set;if(ta.current)for(const Le of se)Le.type==="dimensions"&&Re.add(Le.id);const xe=Re.size===0?ue:ue.map(Le=>!Re.has(Le.id)||Le.width===void 0&&Le.height===void 0?Le:{...Le,data:{...Le.data,...Le.width!==void 0?{width:Le.width}:{},...Le.height!==void 0?{height:Le.height}:{}}}),Ee=vn.current,Ke=oa.current||Ee.size===0?xe:xe.map(Le=>Ee.has(Le.id)&&!ce.has(Le.id)&&!Le.selected?{...Le,selected:!0}:Le);if(cd.current=Ke,ld(Ke),ce.size===0)return;if(oa.current){for(const Le of se)Le.type==="select"&&(Le.selected?Xh.current.add(Le.id):Xh.current.delete(Le.id));return}const et=Zr.current;if(!et)return;const lt=Ke.filter(Le=>Le.selected).map(Le=>Le.id),Te=vn.current;Te.size===lt.length&<.every(Le=>Te.has(Le))||(vn.current=new Set(lt),et(lt,[...Po.current]))},[]),Qh=m.useRef([]),wJ=m.useCallback(K=>{var lt;const J=oa.current?Fz.current:(lt=si.current)!=null&<.shift?si.current.edgeIds:null,se=J&&J.size>0?K.filter(Te=>Te.type!=="select"?!0:!(Te.selected===!1&&J.has(Te.id))):K,ce=new Set;for(const Te of se)Te.type==="select"&&ce.add(Te.id);if(ce.size===0)return;if(oa.current){for(const Te of se)Te.type==="select"&&(Te.selected?Yh.current.add(Te.id):Yh.current.delete(Te.id));return}const ue=Zr.current;if(!ue)return;const xe=wG(se,Qh.current).filter(Te=>Te.selected).map(Te=>Te.id),Ee=Po.current;Ee.size===xe.length&&xe.every(Te=>Ee.has(Te))||(Po.current=new Set(xe),ue([...vn.current],xe))},[]),MJ=m.useCallback(K=>{oa.current=!0;const J=si.current,se=(J==null?void 0:J.shift)??(K.shiftKey||K.metaKey||K.ctrlKey);Hz.current=se?new Set((J==null?void 0:J.nodeIds)??vn.current):new Set,Fz.current=se?new Set((J==null?void 0:J.edgeIds)??Po.current):new Set,Xh.current=new Set(Hz.current),Yh.current=new Set(Fz.current)},[]),bJ=m.useCallback(()=>{oa.current=!1,si.current=null;const K=Zr.current;if(!K)return;const J=[...Xh.current],se=new Set(J),ce=new Set(Yh.current);for(const Ke of Qh.current)se.has(Ke.source)&&se.has(Ke.target)&&ce.add(Ke.id);const ue=vn.current,Re=Po.current,xe=ue.size===se.size&&J.every(Ke=>ue.has(Ke)),Ee=Re.size===ce.size&&[...ce].every(Ke=>Re.has(Ke));xe&&Ee||(vn.current=new Set(J),Po.current=new Set(ce),K(J,[...ce]))},[]),CJ=m.useCallback(K=>{if(si.current=null,Je.current||K.button!==0)return;const J=K.target;J!=null&&J.classList.contains("react-flow__pane")&&(si.current={shift:K.shiftKey||K.metaKey||K.ctrlKey,nodeIds:new Set(vn.current),edgeIds:new Set(Po.current)})},[]),SJ=m.useCallback(K=>{if(!Fr.current.enableContextMenu||vn.current.size<2)return;const se=K.target;se!==Ut.current&&(se!=null&&se.closest(".seeflow-connector-endpoint-dot")||(K.preventDefault(),K.stopPropagation(),Ue.current=null,$(!0),oe(null),Me(null),q({x:K.clientX,y:K.clientY})))},[]),LJ=m.useCallback(K=>{const J=K.dataTransfer;if(!J)return;const se=J.types?Array.from(J.types):[],ce=se.includes("Files"),ue=se.includes(Kq),Re=ce&&!!L&&He.enableImageDrop,xe=ue&&!!T&&He.enableDragDrop;if(!(!Re&&!xe)){K.preventDefault();try{J.dropEffect="copy"}catch{}}},[L,T,He.enableImageDrop,He.enableDragDrop]),IJ=m.useCallback(K=>{const J=K.dataTransfer;if((J!=null&&J.types?Array.from(J.types):[]).includes(Kq)&&T&&He.enableDragDrop){K.preventDefault();const Re=jt.current;if(!Re)return;const xe=Re.screenToFlowPosition({x:K.clientX,y:K.clientY});T({position:xe});return}if(!L||!He.enableImageDrop)return;const ue={x:K.clientX,y:K.clientY};K.preventDefault(),$ne({dataTransfer:J,clientPos:ue,rfInstance:jt.current,computeDims:Une,dispatch:L})},[L,T,He.enableImageDrop,He.enableDragDrop]),LH=!!z,IH=Qe.size===1?[...Qe][0]:null,Oz=m.useMemo(()=>{const K=Ee=>{const Ke=gB(yr,Ee.source)==="running"||gB(yr,Ee.target)==="running",et=Qe.has(Ee.id),lt=Y1e(Ee,Ke,et);et&&(lt.selected=!0);const Te=LH&&Ee.id===IH,wn=Te?{...lt,reconnectable:!0}:lt;return{...wn,data:{...wn.data,onLabelChange:Mt?S:void 0,reconnectable:Te,registerEditHandle:ni}}},J=new Set(s.map(Ee=>Ee.id)),se=s.map(Ee=>K(Uwe(Ee,qr==null?void 0:qr[Ee.id]))),ce=[];if(qr)for(const[Ee,Ke]of Object.entries(qr)){if(J.has(Ee))continue;const et=Ke;typeof et.source!="string"||typeof et.target!="string"||typeof et.kind!="string"||ce.push(K({...et,id:Ee}))}const ue=[...se,...ce],Re=[],xe=[];for(const Ee of ue)Qe.has(Ee.id)?xe.push(Ee):Re.push(Ee);return[...Re,...xe]},[s,yr,Qe,IH,qr,S,LH,ni,Mt]);m.useEffect(()=>{Qh.current=Oz},[Oz]);const ud=e.adapter??null,EJ=m.useMemo(()=>{if(ud!=null&&ud.computeLayout)return async()=>{const K=jt.current,J=cd.current;if(J.length<2)return;const se=J.map(ct=>{var dd;const Le=(dd=K==null?void 0:K.getInternalNode(ct.id))==null?void 0:dd.measured,Ft=ct.data,w1=(Le==null?void 0:Le.width)??Ft.width??200,Xr=(Le==null?void 0:Le.height)??Ft.height??120;return{id:ct.id,type:ct.type,width:w1,height:Xr}}),ce=new Map;for(const ct of J)ce.set(ct.id,ct.position);const ue=Qh.current.map(ct=>({id:ct.id,source:ct.source,target:ct.target})),Re=ud.computeLayout;if(!Re)return;const xe=await Re(se,ue),Ee=new Map;for(const[ct,Le]of Object.entries(xe.nodes))Ee.set(ct,Le.position);let Ke=Number.POSITIVE_INFINITY,et=Number.POSITIVE_INFINITY,lt=Number.POSITIVE_INFINITY,Te=Number.POSITIVE_INFINITY;for(const ct of se){const Le=ce.get(ct.id);if(!Le)continue;Le.x<Ke&&(Ke=Le.x),Le.y<et&&(et=Le.y);const Ft=Ee.get(ct.id);Ft&&(Ft.x<lt&&(lt=Ft.x),Ft.y<Te&&(Te=Ft.y))}const wn=Number.isFinite(Ke)&&Number.isFinite(lt)?Ke-lt:0,Kr=Number.isFinite(et)&&Number.isFinite(Te)?et-Te:0;ld(ct=>ct.map(Le=>{const Ft=Ee.get(Le.id);return Ft?{...Le,position:{x:Ft.x+wn,y:Ft.y+Kr}}:Le}))}},[ud]),Jh=ne??(Mt?void 0:EJ),e0=m.useRef(!1),EH=m.useRef(null),AJ=m.useCallback(K=>{var Ee;if(!Mt||!E)return;const{source:J,target:se}=K;if(!J||!se||J===se)return;e0.current=!0;const ce=((Ee=EH.current)==null?void 0:Ee.nodeId)??null,ue=ce!==null&&ce===se&&ce!==J;E(ue?se:J,ue?J:se)},[E,Mt]),qz=m.useCallback(K=>{const J=se=>{if(!se)return!1;const ce=cd.current.find(ue=>ue.id===se);return ce?ce.type==="shapeNode"&&ce.data.shape==="text":!1};return!J(K.source)&&!J(K.target)},[]),PJ=m.useCallback((K,J)=>{var lt;kr(!1),oi();const se=e0.current;if(e0.current=!1,se||ri.current)return;if(Ji.current){Ji.current=!1;return}if(!E)return;const ce=(lt=J.fromNode)==null?void 0:lt.id,ue=J.fromHandle;if(!ce||!ue)return;const Re=pB(K);if(!Re)return;const xe=sT(an.current,Re.clientX,Re.clientY);if(!xe)return;const Ee=xe.getAttribute("data-id");if(!Ee||Ee===ce||!qz({source:ce,target:Ee,sourceHandle:null,targetHandle:null}))return;let Ke;const et=jt.current;if(et){const Te=et.getInternalNode(Ee);if(Te){const wn=Te.measured.width??Te.width??0,Kr=Te.measured.height??Te.height??0;if(wn>0&&Kr>0){const ct=et.screenToFlowPosition({x:Re.clientX,y:Re.clientY});Ke=wN({x:Te.internals.positionAbsolute.x,y:Te.internals.positionAbsolute.y,w:wn,h:Kr},ct)}}}E(ce,Ee,Ke?{targetPin:Ke}:void 0)},[E,oi,qz]),t0=m.useRef(!1),RJ=m.useCallback((K,J)=>{if(!z)return;const{source:se,target:ce,sourceHandle:ue,targetHandle:Re}=J;if(!se||!ce||se===ce)return;const xe={};if(se!==K.source&&(xe.source=se),ce!==K.target&&(xe.target=ce),typeof ue=="string"&&ue!==K.sourceHandle&&(xe.sourceHandle=ue),typeof Re=="string"&&Re!==K.targetHandle&&(xe.targetHandle=Re),xe.source===void 0&&xe.target===void 0&&xe.sourceHandle===void 0&&xe.targetHandle===void 0)return;(xe.source!==void 0||xe.sourceHandle!==void 0)&&(xe.sourceHandleAutoPicked=!1),(xe.target!==void 0||xe.targetHandle!==void 0)&&(xe.targetHandleAutoPicked=!1);const Ee=jt.current;if(!(xe.source===void 0&&xe.target===void 0)&&Ee){const et=xe.source!==void 0?"source":"target",lt=yB(et,K.source,K.target,K.data,Te=>Ee.getInternalNode(Te)??null);lt&&(et==="source"?xe.targetPin=lt:xe.sourcePin=lt)}t0.current=!0,z(K.id,xe)},[z]),zJ=m.useCallback((K,J,se,ce)=>{var w1;kr(!1),oi(),ri.current=!1;const ue=t0.current;if(t0.current=!1,ue)return;if(ea.current){ea.current=!1;return}if(!z)return;const Re=pB(K);let xe=((w1=ce.toNode)==null?void 0:w1.id)??null;if(!xe&&Re){const Xr=sT(an.current,Re.clientX,Re.clientY);xe=(Xr==null?void 0:Xr.getAttribute("data-id"))??null}const Ee=se==="source"?"target":"source",Ke=Bwe(Ee,J.source,J.target,xe);if(Ke==="no-op"||Ke==="self-loop"||!Re)return;const et=jt.current;if(!et)return;const lt=Ke==="pin-own"?Ee==="source"?J.source:J.target:xe,Te=et.getInternalNode(lt);if(!Te)return;const wn=Te.measured.width??Te.width??0,Kr=Te.measured.height??Te.height??0;if(wn===0||Kr===0)return;const ct=et.screenToFlowPosition({x:Re.clientX,y:Re.clientY}),Le=wN({x:Te.internals.positionAbsolute.x,y:Te.internals.positionAbsolute.y,w:wn,h:Kr},ct);if(Ke==="pin-own"){if(!ht)return;ht(J.id,Ee,Le);return}const Ft=yB(Ee,J.source,J.target,J.data,Xr=>et.getInternalNode(Xr)??null);Ee==="source"?z(J.id,{source:xe,sourceHandle:null,sourceHandleAutoPicked:!1,sourcePin:Le,...Ft?{targetPin:Ft}:{}}):z(J.id,{target:xe,targetHandle:null,targetHandleAutoPicked:!1,targetPin:Le,...Ft?{sourcePin:Ft}:{}})},[z,oi,ht]),ia=m.useMemo(()=>{var Ee;if(!rr||!Ur)return null;const K=(Ee=an.current)==null?void 0:Ee.getBoundingClientRect(),J=(K==null?void 0:K.left)??0,se=(K==null?void 0:K.top)??0,ce=Math.min(rr.x,Ur.x),ue=Math.min(rr.y,Ur.y),Re=Math.abs(Ur.x-rr.x),xe=Math.abs(Ur.y-rr.y);return{left:ce-J,top:ue-se,width:Re,height:xe}},[rr,Ur]),jJ=Ct?JZ(Ct):"",TJ=Ct?eK(Ct):void 0,NJ=Ct==="text",[AH,PH]=m.useState(!1),[DJ,n0]=m.useState(!1),[_J,RH]=m.useState(!1),li=zwe({projectId:o,getReactFlow:()=>jt.current});m.useImperativeHandle(t,()=>({exportPdf:li.exportPdf,exportPng:li.exportPng,openEmbedDialog:()=>RH(!0),capturePreview:li.capturePreview}),[li.exportPdf,li.exportPng,li.capturePreview]),m.useEffect(()=>{if(!He.enableKeyboard)return;const K=ce=>{if(!ce)return!1;const ue=ce.tagName;return ue==="INPUT"||ue==="TEXTAREA"||ue==="SELECT"?!0:ce instanceof HTMLElement&&ce.isContentEditable},J=ce=>{ce.code==="Space"&&(K(document.activeElement)||(ce.preventDefault(),PH(!0)))},se=ce=>{ce.code==="Space"&&(PH(!1),n0(!1))};return window.addEventListener("keydown",J),window.addEventListener("keyup",se),()=>{window.removeEventListener("keydown",J),window.removeEventListener("keyup",se)}},[He.enableKeyboard]);const r0=m.useCallback(K=>{if(K.length!==0){if(!Mt){const J=id.current;for(const se of K)J.set(se.id,{x:se.position.x,y:se.position.y});return}if(K.length===1){const J=K[0];J&&p&&p(J.id,{x:J.position.x,y:J.position.y});return}if(k){k(K.map(J=>({id:J.id,position:{x:J.position.x,y:J.position.y}})));return}if(p)for(const J of K)p(J.id,{x:J.position.x,y:J.position.y})}},[p,k,Mt]),HJ=m.useCallback((K,J,se)=>{Io.current=!1,r0(se),ii()},[r0,ii]),FJ=m.useCallback(()=>{Io.current=!0},[]),OJ=m.useCallback((K,J)=>{Io.current=!1,r0(J),ii()},[r0,ii]),qJ=m.useCallback((K,J)=>{ae==null||ae(J.id)},[ae]),VJ=m.useCallback(K=>{be==null||be()},[be]),BJ=m.useCallback((K,J)=>{ve==null||ve(J.id)},[ve]),zH=Ct?"crosshair":AH?DJ?"grabbing":"grab":void 0,jH=l[0],TH=c[0],$J=jH?a.find(K=>K.id===jH)??null:null,UJ=TH?s.find(K=>K.id===TH)??null:null,WJ=o??null,GJ=He.showDetailPanel&&!we,ZJ=m.useMemo(()=>({custom:Rt??{}}),[Rt]);return y.jsx(Bue,{value:ZJ,children:y.jsx("div",{"data-testid":"seeflow-canvas","data-mode":n,ref:an,className:"seeflow-canvas-root sf:relative sf:h-full sf:w-full",style:zH?{cursor:zH}:void 0,onPointerDownCapture:CJ,onPointerDown:K=>{AH&&n0(!0),v1(K)},onPointerMove:Dz,onPointerUp:K=>{n0(!1),Kh(K)},onPointerCancel:()=>{Xt.current=!1,Wr.current=null,Nn.current=null,$r(null),Lo(null),n0(!1)},onContextMenuCapture:SJ,onDragOver:LJ,onDrop:IJ,children:y.jsxs(Uhe,{containerRef:an,children:[y.jsxs(f1e,{nodes:ra,edges:Oz,onNodesChange:vJ,nodeTypes:Wwe,edgeTypes:Gwe,proOptions:{hideAttribution:!0},fitView:!0,minZoom:n==="mini"?.05:.5,nodesDraggable:(Mt?!!p:!0)&&!Ct&&He.enableNodeMove,nodesConnectable:Mt&&!!E&&!Ct,deleteKeyCode:Mt?["Backspace","Delete"]:null,zoomOnScroll:He.enableZoom,zoomOnPinch:He.enableZoom,className:tr?"seeflow-connecting":void 0,onConnect:Mt?AJ:void 0,isValidConnection:qz,onConnectStart:(K,J)=>{kr(!0),e0.current=!1,EH.current={nodeId:J.nodeId??null,handleType:J.handleType??null},kn(J.nodeId??null)},onConnectEnd:PJ,onReconnect:Mt&&z?RJ:void 0,onReconnectStart:(K,J,se)=>{kr(!0),t0.current=!1,ri.current=!0;const ce=se==="source"?J.source:J.target;kn(ce)},onReconnectEnd:zJ,connectionLineComponent:x1,connectionLineStyle:{strokeWidth:2},connectionRadius:32,reconnectRadius:10,edgesReconnectable:!1,elevateNodesOnSelect:!1,elementsSelectable:!Ct&&He.enableSelection,selectNodesOnDrag:!1,nodeClickDistance:5,selectionOnDrag:!Ct&&He.enableSelection,panOnDrag:Ct?!1:He.enablePan?[1,2]:!1,selectionMode:Eu.Partial,selectionKeyCode:null,multiSelectionKeyCode:Ct?null:["Meta","Shift"],panActivationKeyCode:Ct?null:"Space",onSelectionStart:MJ,onSelectionEnd:bJ,defaultEdgeOptions:Zwe,zoomOnDoubleClick:!1,onInit:K=>{jt.current=K;const J=an.current;J&&J.style.setProperty("--rf-zoom",String(K.getZoom())),J&&J.setAttribute("data-canvas-ready","true"),!bo.current&&jn.onMount&&a.length>0&&(K.fitView(Ad),bo.current=!0),re==null||re(K)},onMove:(K,J)=>{Br.current&&Vr(null);const se=an.current;se&&se.style.setProperty("--rf-zoom",String(J.zoom))},onEdgesChange:wJ,onNodeDragStart:()=>{Io.current=!0},onNodeDragStop:HJ,onSelectionDragStart:FJ,onSelectionDragStop:OJ,onNodeClick:qJ,onEdgeClick:BJ,onEdgeDoubleClick:(K,J)=>{var se;(se=Tn.current.get(J.id))==null||se()},onPaneClick:VJ,onNodeContextMenu:He.enableContextMenu&&sd?(K,J)=>{K.preventDefault(),Ue.current=J.id,$(!0),oe(J.type??null),Me(null),q({x:K.clientX,y:K.clientY})}:void 0,onPaneContextMenu:He.enableContextMenu&&V?K=>{K.preventDefault(),Ue.current=null,$(!1),oe(null),Me(null),q({x:K.clientX,y:K.clientY})}:void 0,children:[y.jsx(Ywe,{storeApiRef:Co}),y.jsx(Qwe,{wrapperRef:an}),y.jsx(b1e,{gap:12,size:.6}),n!=="mini"&&y.jsx(Dwe,{}),He.showControls?y.jsxs(P1e,{showInteractive:!1,showFitView:!1,children:[y.jsx(X1,{"data-testid":"controls-fit-view","aria-label":"Fit view",title:"Fit view",disabled:a.length===0,onClick:()=>{var K;(K=jt.current)==null||K.fitView(Ad)},children:y.jsx(iu,{className:"sf:h-3 sf:w-3","aria-hidden":"true"})}),y.jsx(X1,{"data-testid":"controls-tidy","aria-label":"Tidy layout (⌘⇧L)",title:"Tidy layout (⌘⇧L)",disabled:!Jh,onClick:()=>Jh==null?void 0:Jh(),children:y.jsx(s2,{className:"sf:h-3 sf:w-3","aria-hidden":"true"})})]}):null,He.showResizeHandles?y.jsx(I3e,{selectedNodes:Ht,onMultiResize:M}):null,He.showToolbar&&C||He.showStyleStrip&&W&&X?y.jsx(ju,{position:"top-left",children:y.jsxs("div",{className:"sf:flex sf:flex-col sf:gap-2",children:[He.showToolbar&&C?y.jsx(ame,{activeShape:Ct,onSelectShape:Qi,iconPickerOpen:ee??!1,onOpenIconPicker:ke,onCloseIconPicker:Fe,onPickIcon:rt}):null,He.showStyleStrip&&W&&X?y.jsx(A3e,{nodes:xn,connectors:I??[],onStyleNode:W,onStyleNodePreview:H,onStyleNodes:j,onStyleNodesPreview:G,onStyleConnector:X,onStyleConnectorPreview:Y,onRequestIconReplace:mt}):null]})}):null,He.showShareMenu||He.showRestart&&Ne?y.jsx(ju,{position:"top-right",children:y.jsxs("div",{className:"sf:flex sf:items-center sf:gap-1",children:[He.showRestart&&Ne?y.jsx(b3e,{onRestartDemo:Ne}):null,He.showShareMenu?y.jsx(M3e,{mode:n==="mini"?"view":n,projectId:o,enableEmbed:He.enableEmbed,onDownloadPdf:li.exportPdf,onDownloadPng:li.exportPng,onExportToCloud:st,embedOpen:_J,onEmbedOpenChange:RH}):null]})}):null]}),ia?y.jsx("div",{"data-testid":"canvas-draw-ghost","data-ghost-shape":Ct??void 0,"aria-hidden":!0,className:ie("sf:pointer-events-none sf:absolute sf:z-10",jJ,NJ?"sf:rounded-sm sf:border sf:border-dashed sf:border-muted-foreground/40":""),style:{...TJ,left:ia.left,top:ia.top,width:ia.width,height:ia.height},children:(()=>{const K=Ct?H_[Ct]:void 0;return K?y.jsx(K,{width:ia.width,height:ia.height,borderColor:tt(void 0,"node").borderColor,backgroundColor:mh,borderSize:M_}):null})()}):null,He.enableContextMenu&&sd?y.jsxs(Ppe,{onOpenChange:K=>{K||(q(null),Ue.current=null,oe(null),Me(null))},children:[y.jsx(Rpe,{asChild:!0,children:y.jsx("div",{ref:Ut,"data-testid":"node-context-menu-trigger","aria-hidden":!0,className:"sf:pointer-events-none sf:fixed",style:{left:(F==null?void 0:F.x)??0,top:(F==null?void 0:F.y)??0,width:0,height:0}})}),y.jsxs(TX,{"data-testid":"node-context-menu",children:[Ae!=null&&Ae.pinned&&le?y.jsx(to,{"data-testid":"connector-endpoint-context-menu-unpin",onSelect:Yt,children:"Unpin"}):null,Z&&R?y.jsxs(to,{"data-testid":"node-context-menu-copy",onSelect:ze,children:["Copy",y.jsx(TN,{children:_z})]}):null,V?y.jsxs(to,{"data-testid":"node-context-menu-paste",disabled:!O,onSelect:gn,children:["Paste",y.jsx(TN,{children:ai})]}):null,Z&&(R||V)&&(_==="iconNode"&&mt||A||U)?y.jsx(MP,{}):null,Z&&_==="iconNode"&&mt?y.jsx(to,{"data-testid":"node-context-menu-change-icon",onSelect:it,children:"Change icon"}):null,Z&&_==="iconNode"&&mt&&(A||U)?y.jsx(MP,{}):null,Z&&A?y.jsxs(y.Fragment,{children:[y.jsx(to,{"data-testid":"node-context-menu-to-front",onSelect:()=>Eo({op:"toFront"}),children:"Bring to front"}),y.jsx(to,{"data-testid":"node-context-menu-forward",onSelect:()=>Eo({op:"forward"}),children:"Bring forward"}),y.jsx(to,{"data-testid":"node-context-menu-backward",onSelect:()=>Eo({op:"backward"}),children:"Send backward"}),y.jsx(to,{"data-testid":"node-context-menu-to-back",onSelect:()=>Eo({op:"toBack"}),children:"Send to back"})]}):null,Z&&A&&U?y.jsx(MP,{}):null,Z&&U?y.jsx(to,{"data-testid":"node-context-menu-delete",onSelect:Dn,children:"Delete"}):null]})]}):null,me?y.jsxs(Ju,{open:!!mn,onOpenChange:K=>{K||Vr(null)},children:[y.jsx(Whe,{asChild:!0,children:y.jsx("div",{"data-testid":"drop-popover-anchor","aria-hidden":!0,className:"sf:pointer-events-none sf:fixed",style:{left:(mn==null?void 0:mn.clientX)??0,top:(mn==null?void 0:mn.clientY)??0,width:0,height:0}})}),y.jsx(u1,{"data-testid":"drop-popover",align:"start",side:"bottom",sideOffset:4,className:"sf:w-auto sf:p-1",onOpenAutoFocus:K=>{K.preventDefault()},children:y.jsx("div",{role:"menu","aria-label":"Create connected node",className:"sf:flex sf:flex-col sf:gap-0.5",children:ime.map(({shape:K,label:J,Icon:se})=>y.jsxs("button",{type:"button",role:"menuitem","data-testid":`drop-popover-shape-${K}`,onClick:()=>{const ce=mn;ce&&(me({sourceNodeId:ce.sourceNodeId,position:{x:ce.flowX,y:ce.flowY},shape:K}),Vr(null))},className:ie("sf:flex sf:items-center sf:gap-2 sf:rounded-sm sf:px-2 sf:py-1.5 sf:text-left sf:text-sm","sf:hover:bg-accent sf:hover:text-accent-foreground","sf:focus:bg-accent sf:focus:text-accent-foreground sf:focus:outline-hidden"),children:[y.jsx(se,{className:"sf:h-4 sf:w-4 sf:text-muted-foreground","aria-hidden":"true"}),y.jsx("span",{children:J})]},K))})})]}):null,GJ?y.jsx(Jve,{flowId:WJ,node:$J,connector:UJ,adapter:r??null,statusReport:Se,onNameChange:Oe,onDescriptionChange:te,onDetailChange:de,onIconChange:Pe,onClose:()=>{var K;(K=Zr.current)==null||K.call(Zr,[],[])}}):null]})})})}const o6e=m.forwardRef(r6e);function i6e({open:e,onOpenChange:t,onCreated:n}){const[r,o]=m.useState(""),[i,a]=m.useState(null),[s,l]=m.useState(!1);m.useEffect(()=>{e&&(o(""),a(null),l(!1))},[e]);const c=r.trim(),h=c.length>0&&!s,d=async f=>{if(f.preventDefault(),!!h){l(!0),a(null);try{const p=await Cne({name:c});n(p),t(!1)}catch(p){a(p instanceof Error?p.message:String(p)),l(!1)}}};return y.jsx(kz,{open:e,onOpenChange:t,children:y.jsxs(Nh,{className:"sm:max-w-md","data-testid":"create-project-dialog",onOpenAutoFocus:f=>{f.preventDefault();const p=document.querySelector('[data-testid="create-project-name-input"]');p==null||p.focus()},children:[y.jsxs(Dh,{children:[y.jsx(_h,{children:"Create new project"}),y.jsxs(Hh,{children:["The project will be created at ",y.jsx("code",{children:"~/.seeflow/<slug>"}),"."]})]}),y.jsxs("form",{onSubmit:d,className:"flex flex-col gap-4",children:[y.jsxs("label",{className:"flex flex-col gap-1.5 text-sm",children:[y.jsx("span",{className:"font-medium",children:"Project name"}),y.jsx("input",{type:"text",required:!0,autoComplete:"off",spellCheck:!1,value:r,onChange:f=>o(f.target.value),"data-testid":"create-project-name-input",className:"rounded-md border bg-background px-3 py-2 text-sm outline-hidden ring-offset-background focus:border-ring focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2"})]}),i?y.jsx("div",{role:"alert","data-testid":"create-project-error",className:"rounded-md border border-destructive/30 bg-destructive/10 px-3 py-2 text-sm text-destructive",children:i}):null,y.jsxs(Hu,{children:[y.jsx(Nt,{type:"button",variant:"ghost",onClick:()=>t(!1),disabled:s,children:"Cancel"}),y.jsx(Nt,{type:"submit",disabled:!h,"data-testid":"create-project-submit",children:s?"Creating…":"Create project"})]})]})]})})}const tD="seeflow:navigate",a6e=e=>(window.addEventListener("popstate",e),window.addEventListener(tD,e),()=>{window.removeEventListener("popstate",e),window.removeEventListener(tD,e)}),xB=()=>window.location.pathname,s6e=()=>m.useSyncExternalStore(a6e,xB,xB),qu=e=>{e!==window.location.pathname&&(window.history.pushState({},"",e),window.dispatchEvent(new Event(tD)))};function l6e({demos:e,currentSlug:t,onProjectCreated:n,onProjectUnregistered:r}){const[o,i]=m.useState(!1),[a,s]=m.useState(!1),[l,c]=m.useState(null),[h,d]=m.useState(!1),[f,p]=m.useState(null);m.useEffect(()=>{const x=b=>{b.key==="k"&&(b.metaKey||b.ctrlKey)&&(b.preventDefault(),i(S=>!S))};return document.addEventListener("keydown",x),()=>document.removeEventListener("keydown",x)},[]);const k=e.find(x=>x.slug===t),v=x=>{n==null||n(x),qu(`/d/${x.slug}`)},w=x=>{c(x),p(null)},g=()=>{h||(c(null),p(null))},M=async()=>{if(l){d(!0),p(null);try{await bne(l.id);const x=l.id;c(null),r==null||r(x)}catch(x){p(x instanceof Error?x.message:String(x))}finally{d(!1)}}};return y.jsxs(y.Fragment,{children:[y.jsxs(Ju,{open:o,onOpenChange:i,children:[y.jsx(Eh,{asChild:!0,children:y.jsxs(Nt,{type:"button",variant:"outline",size:"sm","aria-label":"Switch demo","aria-expanded":o,className:"gap-2","data-testid":"project-switcher-trigger",children:[y.jsx("span",{className:"max-w-[180px] truncate text-sm",children:(k==null?void 0:k.name)??"Select demo"}),y.jsx(RK,{children:"⌘K"}),y.jsx(Qd,{className:"h-3.5 w-3.5 opacity-60"})]})}),y.jsx(u1,{align:"end",sideOffset:6,className:"w-[320px] p-0","data-testid":"project-switcher-popover",children:y.jsxs(LK,{children:[y.jsx(IK,{placeholder:"Search demos..."}),y.jsxs(EK,{children:[y.jsx(AK,{children:"No demos."}),e.length>0?y.jsx(PN,{heading:"Demos",children:e.map(x=>y.jsxs(RN,{value:`${x.name} ${x.slug}`,onSelect:()=>{i(!1),qu(`/d/${x.slug}`)},className:"group flex items-center justify-between gap-2",children:[y.jsxs("div",{className:"flex min-w-0 flex-col items-start gap-0.5",children:[y.jsx("span",{className:"font-medium",children:x.name}),y.jsx("span",{className:"w-full truncate text-xs text-muted-foreground",children:x.repoPath})]}),y.jsx("button",{type:"button","aria-label":`Unregister ${x.name}`,className:"shrink-0 rounded p-0.5 opacity-0 transition-opacity hover:text-destructive group-hover:opacity-100 focus-visible:opacity-100 focus-visible:outline-hidden focus-visible:ring-1 focus-visible:ring-ring",onClick:b=>{b.stopPropagation(),i(!1),w(x)},children:y.jsx(v2,{className:"h-3.5 w-3.5"})})]},x.id))}):null,e.length>0?y.jsx(PK,{}):null,y.jsx(PN,{children:y.jsxs(RN,{value:"+ create new project",onSelect:()=>{i(!1),s(!0)},"data-testid":"project-switcher-create",className:"flex items-center gap-2 text-sm",children:[y.jsx(d2,{className:"h-4 w-4 opacity-70"}),y.jsx("span",{className:"font-medium",children:"Create new project"})]})})]})]})})]}),y.jsx(i6e,{open:a,onOpenChange:s,onCreated:v}),y.jsx(kz,{open:l!==null,onOpenChange:x=>{x||g()},children:y.jsxs(Nh,{className:"sm:max-w-md","data-testid":"unregister-project-dialog",children:[y.jsxs(Dh,{children:[y.jsx(_h,{children:"Unregister project?"}),y.jsxs(Hh,{children:["This removes ",y.jsx("strong",{children:l==null?void 0:l.name})," from SeeFlow. Your files at"," ",y.jsx("code",{className:"text-xs",children:l==null?void 0:l.repoPath})," will not be deleted."]})]}),f?y.jsx("div",{role:"alert","data-testid":"unregister-project-error",className:"rounded-md border border-destructive/30 bg-destructive/10 px-3 py-2 text-sm text-destructive",children:f}):null,y.jsxs(Hu,{children:[y.jsx(Nt,{type:"button",variant:"ghost",onClick:g,disabled:h,children:"Cancel"}),y.jsx(Nt,{type:"button",variant:"destructive",onClick:M,disabled:h,"data-testid":"unregister-project-confirm",children:h?"Unregistering…":"Unregister"})]})]})})]})}function c6e({demos:e,currentSlug:t,onProjectCreated:n,onProjectUnregistered:r}){return y.jsxs("header",{className:"relative flex h-14 shrink-0 items-center justify-between border-b border-border/60 bg-background/85 px-5 backdrop-blur-md shadow-[0_4px_12px_-6px_rgba(0,0,0,0.6)]",children:[y.jsxs("button",{type:"button",onClick:()=>qu("/"),className:"-ml-1.5 flex items-center gap-2 rounded-md px-1.5 py-1 text-base font-bold tracking-tight transition-colors hover:bg-muted/60",children:[y.jsx(b2,{size:18,strokeWidth:2.25,className:"text-emerald-400"}),"SeeFlow",y.jsxs("span",{className:"ml-1 text-[10px] font-normal tracking-normal text-muted-foreground/70",children:["v","0.1.53"]})]}),y.jsx("div",{className:"flex items-center gap-3",children:y.jsx(l6e,{demos:e,currentSlug:t,onProjectCreated:n,onProjectUnregistered:r})})]})}const u6e=e=>{const[t,n]=m.useState(null),[r,o]=m.useState(e!==null),[i,a]=m.useState(null),s=m.useCallback(()=>{e&&(o(!0),KU(e).then(c=>{n(c),a(null)}).catch(c=>{console.error("[useDemoData] failed",c),a(String(c))}).finally(()=>o(!1)))},[e]),l=m.useCallback(c=>{n(c),a(null)},[]);return m.useEffect(()=>{if(!e){n(null),o(!1);return}s()},[e,s]),{detail:t,loading:r,error:i,refresh:s,applyDetail:l}},d6e=()=>{const[e,t]=m.useState(null),[n,r]=m.useState(null),o=m.useCallback(()=>Mne().then(i=>{t(i),r(null)}).catch(i=>{console.error("[useDemos] failed",i),t([]),r(String(i))}),[]);return m.useEffect(()=>{o()},[o]),{demos:e,error:n,refresh:o}},h6e=5,f6e={"node:running":"running","node:done":"done","node:error":"error"},p6e=(e,t)=>{if(t.type==="reset")return{};const n=e[t.nodeId]??[],r=[t.entry,...n].slice(0,h6e);return{...e,[t.nodeId]:r}},y6e=e=>{const[t,n]=m.useReducer(p6e,{}),r=m.useRef(n);r.current=n,m.useEffect(()=>{r.current({type:"reset"})},[e]);const o=m.useCallback(a=>{const s=f6e[a.type];if(!s)return;const l=typeof a.nodeId=="string"?a.nodeId:null;if(!l)return;const c=typeof a.runId=="string"?a.runId:void 0,h=typeof a.ts=="number"?a.ts:Date.now();r.current({type:"append",nodeId:l,entry:{status:s,ts:h,runId:c}})},[]),i=m.useCallback(()=>{r.current({type:"reset"})},[]);return{events:t,apply:o,reset:i}},m6e=(e,t)=>{var n,r;switch(t.type){case"reset":return{};case"running":return{...e,[t.nodeId]:{status:"running",runId:t.runId,ts:t.ts??Date.now()}};case"done":return{...e,[t.nodeId]:{...e[t.nodeId],status:"done",runId:t.runId??((n=e[t.nodeId])==null?void 0:n.runId),responseStatus:t.responseStatus,body:t.body,ts:t.ts??Date.now()}};case"error":return{...e,[t.nodeId]:{...e[t.nodeId],status:"error",runId:t.runId??((r=e[t.nodeId])==null?void 0:r.runId),error:t.message,ts:t.ts??Date.now()}}}},k6e=e=>{const[t,n]=m.useReducer(m6e,{}),r=m.useRef(n);r.current=n,m.useEffect(()=>{r.current({type:"reset"})},[e]);const o=m.useCallback(a=>{const s=typeof a.nodeId=="string"?a.nodeId:null;if(!s)return;const l=typeof a.runId=="string"?a.runId:void 0;if(a.type==="node:running"){r.current({type:"running",nodeId:s,runId:l,ts:a.ts});return}if(a.type==="node:done"){const c=typeof a.status=="number"?a.status:void 0;r.current({type:"done",nodeId:s,runId:l,responseStatus:c,body:a.body,ts:a.ts});return}if(a.type==="node:error"){const c=typeof a.message=="string"?a.message:void 0;r.current({type:"error",nodeId:s,runId:l,message:c,ts:a.ts})}},[]),i=m.useCallback(()=>{r.current({type:"reset"})},[]);return{runs:t,apply:o,reset:i}},g6e=new Set(["ok","warn","error","pending"]),x6e=(e,t)=>{if(t.type!=="node:status")return e;const n=typeof t.nodeId=="string"?t.nodeId:null;if(!n||typeof t.state!="string"||!g6e.has(t.state))return e;const r=typeof t.summary=="string"?t.summary:void 0,o=typeof t.detail=="string"?t.detail:void 0,i=t.data&&typeof t.data=="object"&&!Array.isArray(t.data)?t.data:void 0,a=typeof t.ts=="number"?t.ts:Date.now();return{...e,[n]:{state:t.state,summary:r,detail:o,data:i,ts:a}}},v6e=(e,t)=>{switch(t.type){case"reset":return{};case"event":return x6e(e,t.event)}},w6e=e=>{const[t,n]=m.useReducer(v6e,{}),r=m.useRef(n);r.current=n,m.useEffect(()=>{r.current({type:"reset"})},[e]);const o=m.useCallback(a=>{r.current({type:"event",event:a})},[]),i=m.useCallback(()=>{r.current({type:"reset"})},[]);return{statusByNode:t,apply:o,reset:i}},M6e=(e={})=>{const[t,n]=m.useState(!1),{onRegistryReload:r,onHello:o}=e,i=m.useRef(r),a=m.useRef(o);return m.useEffect(()=>{i.current=r,a.current=o},[r,o]),m.useEffect(()=>{const s=new EventSource("/api/registry/events");return s.addEventListener("open",()=>n(!0)),s.addEventListener("error",()=>n(!1)),s.addEventListener("hello",()=>{var l;(l=a.current)==null||l.call(a)}),s.addEventListener("registry:reload",()=>{var l;(l=i.current)==null||l.call(i)}),()=>{s.close()}},[]),{connected:t}},b6e=(e,t={})=>{const[n,r]=m.useState(!1),{onHello:o,onFlowReload:i,onEvent:a}=t,s=m.useRef(o),l=m.useRef(i),c=m.useRef(a);return m.useEffect(()=>{s.current=o,l.current=i,c.current=a},[o,i,a]),m.useEffect(()=>{if(!e){r(!1);return}const h=`/api/events?flowId=${encodeURIComponent(e)}`,d=new EventSource(h);d.addEventListener("open",()=>r(!0)),d.addEventListener("error",()=>r(!1)),d.addEventListener("hello",()=>{var f;(f=s.current)==null||f.call(s)}),d.addEventListener("flow:reload",f=>{var v,w;const p=vB(f,"flow:reload");(v=c.current)==null||v.call(c,p);const k=C6e(p);k&&((w=l.current)==null||w.call(l,k))});for(const f of["node:running","node:done","node:error","node:status"])d.addEventListener(f,p=>{var k;(k=c.current)==null||k.call(c,vB(p,f))});return()=>{d.close()}},[e]),{connected:n}},vB=(e,t)=>{try{const n=JSON.parse(e.data);return{type:t,ts:Date.now(),...n}}catch{return{type:t,ts:Date.now()}}},C6e=e=>e.valid===!0&&e.flow&&typeof e.flow=="object"?{valid:!0,flow:e.flow}:e.valid===!1&&typeof e.error=="string"?{valid:!1,error:e.error}:null,oJ="seeflow:last-project",S6e=()=>{if(typeof window>"u")return null;try{return window.localStorage.getItem(oJ)}catch{return null}},wB=e=>{if(!(typeof window>"u"))try{window.localStorage.setItem(oJ,e)}catch{}},L6e=(e,t)=>{if(e.length===0)return null;if(e.length===1)return e[0]??null;if(t){const n=e.find(r=>r.id===t);if(n)return n}return null},MB=["File","Edit","View","Tools","Layout","Selection","Help"],iJ="seeflow:command-palette:recent",aJ=5,sJ=new Map(v_.map(e=>[e.id,e])),I6e=e=>typeof e=="string"&&sJ.has(e),bB=()=>{if(typeof window>"u")return[];try{const e=window.localStorage.getItem(iJ);if(!e)return[];const t=JSON.parse(e);return Array.isArray(t)?t.filter(I6e).slice(0,aJ):[]}catch{return[]}},E6e=e=>{if(!(typeof window>"u"))try{window.localStorage.setItem(iJ,JSON.stringify(e))}catch{}},CB=(e,t)=>e.enabled?e.enabled(t):!0,A6e=(e,t)=>t.length===0?!0:`${e.label} ${e.description??""}`.toLowerCase().includes(t);function P6e({open:e,onOpenChange:t,runCommand:n,ctx:r}){const[o,i]=m.useState(""),[a,s]=m.useState(0),[l,c]=m.useState(()=>bB()),h=m.useRef(null),d=m.useRef(null);m.useEffect(()=>{e&&(i(""),s(0),c(bB()))},[e]);const{groups:f,flat:p}=m.useMemo(()=>{const b=o.trim().toLowerCase();if(b.length===0){if(l.length===0)return{groups:[],flat:[]};const T=[];for(const z of l){const A=sJ.get(z);A&&T.push({cmd:A,enabled:CB(A,r)})}return{groups:[{category:"Recent",rows:T}],flat:T}}const S=new Map;for(const T of v_){if(!A6e(T,b))continue;const E={cmd:T,enabled:CB(T,r)},z=S.get(T.category);z?z.push(E):S.set(T.category,[E])}const L=[...MB.filter(T=>S.has(T)),...Array.from(S.keys()).filter(T=>!MB.includes(T))].map(T=>({category:T,rows:S.get(T)??[]})),P=L.flatMap(T=>T.rows);return{groups:L,flat:P}},[o,r,l]);m.useEffect(()=>{if(p.length===0){s(0);return}s(b=>{var C;let S=b;if(S>=p.length&&(S=0),!((C=p[S])!=null&&C.enabled)){const L=p.findIndex(P=>P.enabled);L!==-1&&(S=L)}return S})},[p]);const k=m.useCallback(b=>{p.length!==0&&s(S=>{var L;let C=S;for(let P=0;P<p.length;P++)if(C=(C+b+p.length)%p.length,(L=p[C])!=null&&L.enabled)return C;return S})},[p]),v=m.useCallback(b=>{c(S=>{const C=[b,...S.filter(L=>L!==b)].slice(0,aJ);return E6e(C),C})},[]),w=m.useCallback(b=>{const S=p[b];!S||!S.enabled||(v(S.cmd.id),n(S.cmd.id),t(!1))},[p,t,v,n]),g=m.useCallback(b=>{if(b.key==="ArrowDown"){b.preventDefault(),k(1);return}if(b.key==="ArrowUp"){b.preventDefault(),k(-1);return}b.key==="Enter"&&(b.preventDefault(),w(a))},[w,a,k]);m.useEffect(()=>{if(!e)return;const b=d.current;if(!b)return;const S=b.querySelector(`[data-command-row-index="${a}"]`);S&&typeof S.scrollIntoView=="function"&&S.scrollIntoView({block:"nearest"})},[a,e]);const x=o.trim().length>0;return y.jsx(hz,{open:e,onOpenChange:t,children:y.jsx(fz,{children:y.jsxs(ed,{className:ie("fixed left-0 right-0 top-[20%] z-50 mx-auto w-[480px] max-w-[90vw] border border-border bg-card shadow-lg duration-200","data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0","sm:rounded-lg"),"data-testid":"command-palette",onOpenAutoFocus:b=>{var S;b.preventDefault(),(S=h.current)==null||S.focus()},children:[y.jsx("div",{className:ie("border-b",p.length===0&&!x&&"border-b-0"),children:y.jsx("input",{ref:h,type:"text",value:o,onChange:b=>i(b.target.value),onKeyDown:g,placeholder:"Type a command…","data-testid":"command-palette-input","aria-label":"Search commands",autoComplete:"off",spellCheck:!1,className:"w-full bg-transparent px-4 py-3 text-sm outline-hidden placeholder:text-muted-foreground"})}),y.jsx("div",{ref:d,"data-testid":"command-palette-list","data-empty":p.length===0?"true":"false",className:ie("max-h-[50vh] overflow-y-auto",p.length>0?"py-1":"","seeflow-no-scrollbar"),children:p.length===0?x?y.jsxs("div",{"data-testid":"command-palette-empty",className:"px-4 py-6 text-center text-sm text-muted-foreground",children:['No commands match "',o,'"']}):null:(()=>{let b=-1;return f.map(S=>y.jsxs("div",{className:"py-1",children:[y.jsx("div",{className:"px-3 pb-1 pt-2 text-xs font-medium uppercase tracking-wide text-muted-foreground",children:S.category}),S.rows.map(C=>{b+=1;const L=b,P=L===a;return y.jsxs("button",{type:"button","data-testid":`command-palette-row-${C.cmd.id}`,"data-command-row-index":L,"data-highlighted":P?"true":"false","aria-disabled":C.enabled?void 0:!0,disabled:!C.enabled,onMouseEnter:()=>{C.enabled&&s(L)},onClick:()=>w(L),className:ie("flex w-full items-center justify-between gap-3 px-3 py-2 text-left text-sm outline-hidden",C.enabled?"cursor-pointer text-foreground hover:bg-muted":"cursor-not-allowed text-muted-foreground/50",P&&C.enabled?"bg-muted":""),children:[y.jsxs("div",{className:"flex min-w-0 flex-col",children:[y.jsx("span",{className:"truncate font-medium",children:C.cmd.label}),C.cmd.description?y.jsx("span",{className:"truncate text-xs text-muted-foreground",children:C.cmd.description}):null]}),C.cmd.shortcut?y.jsx("kbd",{"data-testid":`command-palette-shortcut-${C.cmd.id}`,className:"shrink-0 rounded border bg-muted px-1.5 py-0.5 font-mono text-[11px] text-muted-foreground",children:C.cmd.shortcut}):null]},C.cmd.id)})]},S.category))})()})]})})})}var rn=Uint8Array,$n=Uint16Array,bH=Int32Array,CH=new rn([0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0,0,0,0]),SH=new rn([0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13,0,0]),SB=new rn([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]),lJ=function(e,t){for(var n=new $n(31),r=0;r<31;++r)n[r]=t+=1<<e[r-1];for(var o=new bH(n[30]),r=1;r<30;++r)for(var i=n[r];i<n[r+1];++i)o[i]=i-n[r]<<5|r;return{b:n,r:o}},cJ=lJ(CH,2),R6e=cJ.b,nD=cJ.r;R6e[28]=258,nD[258]=28;var z6e=lJ(SH,0),LB=z6e.r,rD=new $n(32768);for(var xt=0;xt<32768;++xt){var yi=(xt&43690)>>1|(xt&21845)<<1;yi=(yi&52428)>>2|(yi&13107)<<2,yi=(yi&61680)>>4|(yi&3855)<<4,rD[xt]=((yi&65280)>>8|(yi&255)<<8)>>1}var P2=function(e,t,n){for(var r=e.length,o=0,i=new $n(t);o<r;++o)e[o]&&++i[e[o]-1];var a=new $n(t);for(o=1;o<t;++o)a[o]=a[o-1]+i[o-1]<<1;var s;if(n){s=new $n(1<<t);var l=15-t;for(o=0;o<r;++o)if(e[o])for(var c=o<<4|e[o],h=t-e[o],d=a[e[o]-1]++<<h,f=d|(1<<h)-1;d<=f;++d)s[rD[d]>>l]=c}else for(s=new $n(r),o=0;o<r;++o)e[o]&&(s[o]=rD[a[e[o]-1]++]>>15-e[o]);return s},a1=new rn(288);for(var xt=0;xt<144;++xt)a1[xt]=8;for(var xt=144;xt<256;++xt)a1[xt]=9;for(var xt=256;xt<280;++xt)a1[xt]=7;for(var xt=280;xt<288;++xt)a1[xt]=8;var SR=new rn(32);for(var xt=0;xt<32;++xt)SR[xt]=5;var j6e=P2(a1,9,0),T6e=P2(SR,5,0),uJ=function(e){return(e+7)/8|0},dJ=function(e,t,n){return(n==null||n>e.length)&&(n=e.length),new rn(e.subarray(t,n))},N6e=["unexpected EOF","invalid block type","invalid length/literal","invalid distance","stream finished","no stream handler",,"no callback","invalid UTF-8 data","extra field too long","date not in range 1980-2099","filename too long","stream finishing","invalid zip data"],Nz=function(e,t,n){var r=new Error(t||N6e[e]);if(r.code=e,Error.captureStackTrace&&Error.captureStackTrace(r,Nz),!n)throw r;return r},To=function(e,t,n){n<<=t&7;var r=t/8|0;e[r]|=n,e[r+1]|=n>>8},Pd=function(e,t,n){n<<=t&7;var r=t/8|0;e[r]|=n,e[r+1]|=n>>8,e[r+2]|=n>>16},lT=function(e,t){for(var n=[],r=0;r<e.length;++r)e[r]&&n.push({s:r,f:e[r]});var o=n.length,i=n.slice();if(!o)return{t:fJ,l:0};if(o==1){var a=new rn(n[0].s+1);return a[n[0].s]=1,{t:a,l:1}}n.sort(function(S,C){return S.f-C.f}),n.push({s:-1,f:25001});var s=n[0],l=n[1],c=0,h=1,d=2;for(n[0]={s:-1,f:s.f+l.f,l:s,r:l};h!=o-1;)s=n[n[c].f<n[d].f?c++:d++],l=n[c!=h&&n[c].f<n[d].f?c++:d++],n[h++]={s:-1,f:s.f+l.f,l:s,r:l};for(var f=i[0].s,r=1;r<o;++r)i[r].s>f&&(f=i[r].s);var p=new $n(f+1),k=oD(n[h-1],p,0);if(k>t){var r=0,v=0,w=k-t,g=1<<w;for(i.sort(function(C,L){return p[L.s]-p[C.s]||C.f-L.f});r<o;++r){var M=i[r].s;if(p[M]>t)v+=g-(1<<k-p[M]),p[M]=t;else break}for(v>>=w;v>0;){var x=i[r].s;p[x]<t?v-=1<<t-p[x]++-1:++r}for(;r>=0&&v;--r){var b=i[r].s;p[b]==t&&(--p[b],++v)}k=t}return{t:new rn(p),l:k}},oD=function(e,t,n){return e.s==-1?Math.max(oD(e.l,t,n+1),oD(e.r,t,n+1)):t[e.s]=n},IB=function(e){for(var t=e.length;t&&!e[--t];);for(var n=new $n(++t),r=0,o=e[0],i=1,a=function(l){n[r++]=l},s=1;s<=t;++s)if(e[s]==o&&s!=t)++i;else{if(!o&&i>2){for(;i>138;i-=138)a(32754);i>2&&(a(i>10?i-11<<5|28690:i-3<<5|12305),i=0)}else if(i>3){for(a(o),--i;i>6;i-=6)a(8304);i>2&&(a(i-3<<5|8208),i=0)}for(;i--;)a(o);i=1,o=e[s]}return{c:n.subarray(0,r),n:t}},Rd=function(e,t){for(var n=0,r=0;r<t.length;++r)n+=e[r]*t[r];return n},hJ=function(e,t,n){var r=n.length,o=uJ(t+2);e[o]=r&255,e[o+1]=r>>8,e[o+2]=e[o]^255,e[o+3]=e[o+1]^255;for(var i=0;i<r;++i)e[o+i+4]=n[i];return(o+4+r)*8},EB=function(e,t,n,r,o,i,a,s,l,c,h){To(t,h++,n),++o[256];for(var d=lT(o,15),f=d.t,p=d.l,k=lT(i,15),v=k.t,w=k.l,g=IB(f),M=g.c,x=g.n,b=IB(v),S=b.c,C=b.n,L=new $n(19),P=0;P<M.length;++P)++L[M[P]&31];for(var P=0;P<S.length;++P)++L[S[P]&31];for(var T=lT(L,7),E=T.t,z=T.l,A=19;A>4&&!E[SB[A-1]];--A);var U=c+5<<3,R=Rd(o,a1)+Rd(i,SR)+a,V=Rd(o,f)+Rd(i,v)+a+14+3*A+Rd(L,E)+2*L[16]+3*L[17]+7*L[18];if(l>=0&&U<=R&&U<=V)return hJ(t,h,e.subarray(l,l+c));var O,B,D,N;if(To(t,h,1+(V<R)),h+=2,V<R){O=P2(f,p,0),B=f,D=P2(v,w,0),N=v;var I=P2(E,z,0);To(t,h,x-257),To(t,h+5,C-1),To(t,h+10,A-4),h+=14;for(var P=0;P<A;++P)To(t,h+3*P,E[SB[P]]);h+=3*A;for(var W=[M,S],H=0;H<2;++H)for(var j=W[H],P=0;P<j.length;++P){var G=j[P]&31;To(t,h,I[G]),h+=E[G],G>15&&(To(t,h,j[P]>>5&127),h+=j[P]>>12)}}else O=j6e,B=a1,D=T6e,N=SR;for(var P=0;P<s;++P){var X=r[P];if(X>255){var G=X>>18&31;Pd(t,h,O[G+257]),h+=B[G+257],G>7&&(To(t,h,X>>23&31),h+=CH[G]);var Y=X&31;Pd(t,h,D[Y]),h+=N[Y],Y>3&&(Pd(t,h,X>>5&8191),h+=SH[Y])}else Pd(t,h,O[X]),h+=B[X]}return Pd(t,h,O[256]),h+B[256]},D6e=new bH([65540,131080,131088,131104,262176,1048704,1048832,2114560,2117632]),fJ=new rn(0),_6e=function(e,t,n,r,o,i){var a=i.z||e.length,s=new rn(r+a+5*(1+Math.ceil(a/7e3))+o),l=s.subarray(r,s.length-o),c=i.l,h=(i.r||0)&7;if(t){h&&(l[0]=i.r>>3);for(var d=D6e[t-1],f=d>>13,p=d&8191,k=(1<<n)-1,v=i.p||new $n(32768),w=i.h||new $n(k+1),g=Math.ceil(n/3),M=2*g,x=function(ee){return(e[ee]^e[ee+1]<<g^e[ee+2]<<M)&k},b=new bH(25e3),S=new $n(288),C=new $n(32),L=0,P=0,T=i.i||0,E=0,z=i.w||0,A=0;T+2<a;++T){var U=x(T),R=T&32767,V=w[U];if(v[R]=V,w[U]=R,z<=T){var O=a-T;if((L>7e3||E>24576)&&(O>423||!c)){h=EB(e,l,0,b,S,C,P,E,A,T-A,h),E=L=P=0,A=T;for(var B=0;B<286;++B)S[B]=0;for(var B=0;B<30;++B)C[B]=0}var D=2,N=0,I=p,W=R-V&32767;if(O>2&&U==x(T-W))for(var H=Math.min(f,O)-1,j=Math.min(32767,T),G=Math.min(258,O);W<=j&&--I&&R!=V;){if(e[T+D]==e[T+D-W]){for(var X=0;X<G&&e[T+X]==e[T+X-W];++X);if(X>D){if(D=X,N=W,X>H)break;for(var Y=Math.min(W,X-2),re=0,B=0;B<Y;++B){var ne=T-W+B&32767,ae=v[ne],ve=ne-ae&32767;ve>re&&(re=ve,V=ne)}}}R=V,V=v[R],W+=R-V&32767}if(N){b[E++]=268435456|nD[D]<<18|LB[N];var be=nD[D]&31,me=LB[N]&31;P+=CH[be]+SH[me],++S[257+be],++C[me],z=T+D,++L}else b[E++]=e[T],++S[e[T]]}}for(T=Math.max(T,z);T<a;++T)b[E++]=e[T],++S[e[T]];h=EB(e,l,c,b,S,C,P,E,A,T-A,h),c||(i.r=h&7|l[h/8|0]<<3,h-=7,i.h=w,i.p=v,i.i=T,i.w=z)}else{for(var T=i.w||0;T<a+c;T+=65535){var ge=T+65535;ge>=a&&(l[h/8|0]=c,ge=a),h=hJ(l,h+1,e.subarray(T,ge))}i.i=a}return dJ(s,0,r+uJ(h)+o)},H6e=function(){for(var e=new Int32Array(256),t=0;t<256;++t){for(var n=t,r=9;--r;)n=(n&1&&-306674912)^n>>>1;e[t]=n}return e}(),F6e=function(){var e=-1;return{p:function(t){for(var n=e,r=0;r<t.length;++r)n=H6e[n&255^t[r]]^n>>>8;e=n},d:function(){return~e}}},pJ=function(){var e=1,t=0;return{p:function(n){for(var r=e,o=t,i=n.length|0,a=0;a!=i;){for(var s=Math.min(a+2655,i);a<s;++a)o+=r+=n[a];r=(r&65535)+15*(r>>16),o=(o&65535)+15*(o>>16)}e=r,t=o},d:function(){return e%=65521,t%=65521,(e&255)<<24|(e&65280)<<8|(t&255)<<8|t>>8}}},yJ=function(e,t,n,r,o){if(!o&&(o={l:1},t.dictionary)){var i=t.dictionary.subarray(-32768),a=new rn(i.length+e.length);a.set(i),a.set(e,i.length),e=a,o.w=i.length}return _6e(e,t.level==null?6:t.level,t.mem==null?o.l?Math.ceil(Math.max(8,Math.min(13,Math.log(e.length)))*1.5):20:12+t.mem,n,r,o)},mJ=function(e,t){var n={};for(var r in e)n[r]=e[r];for(var r in t)n[r]=t[r];return n},Ot=function(e,t,n){for(;n;++t)e[t]=n,n>>>=8},O6e=function(e,t){var n=t.level,r=n==0?0:n<6?1:n==9?3:2;if(e[0]=120,e[1]=r<<6|(t.dictionary&&32),e[1]|=31-(e[0]<<8|e[1])%31,t.dictionary){var o=pJ();o.p(t.dictionary),Ot(e,2,o.d())}};function q6e(e,t){return yJ(e,t||{},0,0)}function R8e(e,t){t||(t={});var n=pJ();n.p(e);var r=yJ(e,t,t.dictionary?6:2,4);return O6e(r,t),Ot(r,r.length-4,n.d()),r}var kJ=function(e,t,n,r){for(var o in e){var i=e[o],a=t+o,s=r;Array.isArray(i)&&(s=mJ(r,i[1]),i=i[0]),i instanceof rn?n[a]=[i,s]:(n[a+="/"]=[new rn(0),s],kJ(i,a,n,r))}},AB=typeof TextEncoder<"u"&&new TextEncoder,V6e=typeof TextDecoder<"u"&&new TextDecoder,B6e=0;try{V6e.decode(fJ,{stream:!0}),B6e=1}catch{}function iD(e,t){var n;if(AB)return AB.encode(e);for(var r=e.length,o=new rn(e.length+(e.length>>1)),i=0,a=function(c){o[i++]=c},n=0;n<r;++n){if(i+5>o.length){var s=new rn(i+8+(r-n<<1));s.set(o),o=s}var l=e.charCodeAt(n);l<128||t?a(l):l<2048?(a(192|l>>6),a(128|l&63)):l>55295&&l<57344?(l=65536+(l&1047552)|e.charCodeAt(++n)&1023,a(240|l>>18),a(128|l>>12&63),a(128|l>>6&63),a(128|l&63)):(a(224|l>>12),a(128|l>>6&63),a(128|l&63))}return dJ(o,0,i)}var aD=function(e){var t=0;if(e)for(var n in e){var r=e[n].length;r>65535&&Nz(9),t+=r+4}return t},PB=function(e,t,n,r,o,i,a,s){var l=r.length,c=n.extra,h=s&&s.length,d=aD(c);Ot(e,t,a!=null?33639248:67324752),t+=4,a!=null&&(e[t++]=20,e[t++]=n.os),e[t]=20,t+=2,e[t++]=n.flag<<1|(i<0&&8),e[t++]=o&&8,e[t++]=n.compression&255,e[t++]=n.compression>>8;var f=new Date(n.mtime==null?Date.now():n.mtime),p=f.getFullYear()-1980;if((p<0||p>119)&&Nz(10),Ot(e,t,p<<25|f.getMonth()+1<<21|f.getDate()<<16|f.getHours()<<11|f.getMinutes()<<5|f.getSeconds()>>1),t+=4,i!=-1&&(Ot(e,t,n.crc),Ot(e,t+4,i<0?-i-2:i),Ot(e,t+8,n.size)),Ot(e,t+12,l),Ot(e,t+14,d),t+=16,a!=null&&(Ot(e,t,h),Ot(e,t+6,n.attrs),Ot(e,t+10,a),t+=14),e.set(r,t),t+=l,d)for(var k in c){var v=c[k],w=v.length;Ot(e,t,+k),Ot(e,t+2,w),e.set(v,t+4),t+=4+w}return h&&(e.set(s,t),t+=h),t},$6e=function(e,t,n,r,o){Ot(e,t,101010256),Ot(e,t+8,n),Ot(e,t+10,n),Ot(e,t+12,r),Ot(e,t+16,o)};function U6e(e,t){t||(t={});var n={},r=[];kJ(e,"",n,t);var o=0,i=0;for(var a in n){var s=n[a],l=s[0],c=s[1],h=c.level==0?0:8,d=iD(a),f=d.length,p=c.comment,k=p&&iD(p),v=k&&k.length,w=aD(c.extra);f>65535&&Nz(11);var g=h?q6e(l,c):l,M=g.length,x=F6e();x.p(l),r.push(mJ(c,{size:l.length,crc:x.d(),c:g,f:d,m:k,u:f!=a.length||k&&p.length!=v,o,compression:h})),o+=30+f+w+M,i+=76+2*(f+w)+(v||0)+M}for(var b=new rn(i+22),S=o,C=i-o,L=0;L<r.length;++L){var d=r[L];PB(b,d.o,d,d.f,d.u,d.c.length);var P=30+d.f.length+aD(d.extra);b.set(d.c,d.o+P),PB(b,o,d,d.f,d.u,d.c.length,d.o,d.m),o+=16+P+(d.m?d.m.length:0)}return $6e(b,o,r.length,C,S),b}const W6e="https://seeflow.dev/api";async function G6e(e,t,n,r,o){const i=await KU(e);if(!i.flow)throw new Error("Flow has no data");const a=i.flow,s=new Set,l=[];for(const k of a.nodes)k.type==="imageNode"&&k.data.path&&!s.has(k.data.path)&&(s.add(k.data.path),l.push(k.data.path));const h={[r==="link"?"flow.private.json":"flow.json"]:iD(JSON.stringify(a))};if(o){const k=o.split(",")[1];k&&(h["preview.png"]=Uint8Array.from(atob(k),v=>v.charCodeAt(0)))}for(const k of l){const v=await fetch(`/api/projects/${encodeURIComponent(e)}/files/${k}`);v.ok&&(h[`files/${k}`]=new Uint8Array(await v.arrayBuffer()))}const d=U6e(h),f=await fetch(`${W6e}/flows?email=${encodeURIComponent(t)}&name=${encodeURIComponent(n)}`,{method:"POST",headers:{"content-type":"application/zip"},body:d.buffer});if(!f.ok)throw new Error(`Export failed with status ${f.status}`);const p=await f.json();if(typeof p.url!="string")throw new Error("Invalid response from cloud API: missing url");return{shareUrl:p.url}}function Z6e(e){return m.useCallback((t,n,r,o)=>G6e(e,t,n,r,o),[e])}const RB="seeflow.export.email",zB="seeflow.export.name",jB="seeflow.export.visibility";function K6e({open:e,onOpenChange:t,projectId:n,onCapturePreview:r}){const[o,i]=m.useState(""),[a,s]=m.useState(""),[l,c]=m.useState("public"),[h,d]=m.useState({kind:"idle"}),[f,p]=m.useState(!1),k=Z6e(n);m.useEffect(()=>{e&&(i(localStorage.getItem(RB)??""),s(localStorage.getItem(zB)??""),c(localStorage.getItem(jB)??"public"),d({kind:"idle"}),p(!1))},[e]);const v=m.useCallback(async()=>{d({kind:"loading"});try{const x=await(r==null?void 0:r()),{shareUrl:b}=await k(o.trim(),a.trim(),l,x);localStorage.setItem(RB,o.trim()),localStorage.setItem(zB,a.trim()),localStorage.setItem(jB,l),d({kind:"done",shareUrl:b})}catch(x){d({kind:"error",message:x instanceof Error?x.message:String(x)})}},[k,o,a,l,r]),w=m.useCallback(async()=>{if(h.kind==="done")try{await navigator.clipboard.writeText(h.shareUrl),p(!0),setTimeout(()=>p(!1),2e3)}catch(x){console.error("Failed to copy to clipboard:",x)}},[h]),g=h.kind==="loading",M=o.trim().length>0&&a.trim().length>0;return y.jsx(kz,{open:e,onOpenChange:t,children:y.jsxs(Nh,{className:"sm:max-w-md","data-testid":"export-dialog",onOpenAutoFocus:x=>{x.preventDefault();const b=document.querySelector('[data-testid="export-email-input"]');b==null||b.focus()},children:[y.jsxs(Dh,{children:[y.jsx(_h,{children:"Export to seeflow.dev"}),y.jsx(Hh,{children:"Upload this diagram to the cloud and get a shareable link."})]}),h.kind!=="done"?y.jsxs(y.Fragment,{children:[y.jsxs("div",{className:"flex flex-col gap-4",children:[y.jsxs("label",{className:"flex flex-col gap-1.5 text-sm",children:[y.jsx("span",{className:"font-medium",children:"Email"}),y.jsx("input",{type:"email",required:!0,autoComplete:"email",value:o,onChange:x=>i(x.target.value),disabled:g,"data-testid":"export-email-input",className:"rounded-md border bg-background px-3 py-2 text-sm outline-hidden ring-offset-background focus:border-ring focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50"}),y.jsx("span",{className:"text-xs text-muted-foreground",children:"We'll use this to let you manage your flows in the future."})]}),y.jsxs("label",{className:"flex flex-col gap-1.5 text-sm",children:[y.jsx("span",{className:"font-medium",children:"Flow Name"}),y.jsx("input",{type:"text",required:!0,value:a,onChange:x=>s(x.target.value),disabled:g,"data-testid":"export-name-input",className:"rounded-md border bg-background px-3 py-2 text-sm outline-hidden ring-offset-background focus:border-ring focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50"})]}),y.jsxs("label",{className:"flex flex-col gap-1.5 text-sm",children:[y.jsx("span",{className:"font-medium",children:"Visibility"}),y.jsxs("select",{value:l,onChange:x=>c(x.target.value),disabled:g,"data-testid":"export-visibility-select",className:"rounded-md border bg-background px-3 py-2 text-sm outline-hidden ring-offset-background focus:border-ring focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50",children:[y.jsx("option",{value:"public",children:"Public — anyone can discover it"}),y.jsx("option",{value:"link",children:"Anyone with the link"})]})]}),h.kind==="error"?y.jsx("div",{role:"alert","data-testid":"export-error",className:"rounded-md border border-destructive/30 bg-destructive/10 px-3 py-2 text-sm text-destructive",children:h.message}):null]}),y.jsx(Hu,{children:h.kind==="error"?y.jsxs(y.Fragment,{children:[y.jsx(Nt,{type:"button",variant:"ghost",onClick:()=>t(!1),"data-testid":"export-cancel",children:"Cancel"}),y.jsx(Nt,{type:"button",onClick:()=>d({kind:"idle"}),"data-testid":"export-retry",children:"Try again"})]}):y.jsxs(y.Fragment,{children:[y.jsx(Nt,{type:"button",variant:"ghost",onClick:()=>t(!1),disabled:g,"data-testid":"export-cancel",children:"Cancel"}),y.jsx(Nt,{type:"button",onClick:v,disabled:g||!M,"data-testid":"export-submit",children:g?y.jsxs(y.Fragment,{children:[y.jsx(Cr,{className:"h-4 w-4 animate-spin","aria-hidden":"true"}),y.jsx("span",{children:"Uploading…"})]}):"Export"})]})})]}):y.jsxs(y.Fragment,{children:[y.jsxs("div",{className:"flex flex-col gap-3",children:[y.jsx("p",{className:"text-sm text-muted-foreground",children:"Your diagram is live. Share this link:"}),y.jsxs("div",{className:"flex gap-2",children:[y.jsx("input",{type:"text",readOnly:!0,value:h.shareUrl,"data-testid":"export-share-url",className:"min-w-0 flex-1 rounded-md border bg-muted px-3 py-2 text-sm outline-hidden"}),y.jsx(Nt,{type:"button",variant:"outline",size:"icon",onClick:w,"aria-label":"Copy link","data-testid":"export-copy",children:f?y.jsx(fo,{className:"h-4 w-4","aria-hidden":"true"}):y.jsx(ou,{className:"h-4 w-4","aria-hidden":"true"})}),y.jsx(Nt,{type:"button",variant:"outline",size:"icon",onClick:()=>window.open(h.shareUrl,"_blank"),"aria-label":"View in new tab","data-testid":"export-view",children:y.jsx(n2,{className:"h-4 w-4","aria-hidden":"true"})})]})]}),y.jsx(Hu,{children:y.jsx(Nt,{type:"button",onClick:()=>t(!1),"data-testid":"export-done",children:"Done"})})]})]})})}const X6e=(e,t)=>{if(e.has(t))return e;const n=new Set(e);return n.add(t),n},Y6e=(e,t)=>{if(t.length===0)return e;let n=!1;const r=new Set(e);for(const o of t)r.has(o)||(r.add(o),n=!0);return n?r:e},Q6e=(e,t)=>{if(!e.has(t))return e;const n=new Set(e);return n.delete(t),n},J6e=(e,t)=>{if(t.length===0)return e;let n=!1;const r=new Set(e);for(const o of t)r.has(o)&&(r.delete(o),n=!0);return n?r:e},e8e=(e,t)=>{if(e.size===0)return e;const n=new Set(t.map(i=>i.id));let r=!1;const o=new Set(e);for(const i of o)n.has(i)||(o.delete(i),r=!0);return r?o:e},TB=()=>{const[e,t]=m.useState(()=>new Set),n=m.useCallback(l=>{t(c=>X6e(c,l))},[]),r=m.useCallback(l=>{t(c=>Y6e(c,l))},[]),o=m.useCallback(l=>{t(c=>Q6e(c,l))},[]),i=m.useCallback(l=>{t(c=>J6e(c,l))},[]),a=m.useCallback(l=>{t(c=>e8e(c,l))},[]),s=m.useCallback(()=>t(new Set),[]);return{ids:e,mark:n,markMany:r,unmark:o,unmarkMany:i,pruneAgainst:a,reset:s}},t8e=(e,t)=>e===t?!0:e==null||t==null||typeof e!=typeof t||typeof e!="object"?!1:JSON.stringify(e)===JSON.stringify(t),n8e=(e,t,n)=>({...e,[t]:{...e[t],...n}}),r8e=(e,t)=>{if(!(t in e))return e;const n={...e};return delete n[t],n},o8e=(e,t)=>{const n=Object.entries(e);if(n.length===0)return e;const r=new Map(t.map(a=>[a.id,a]));let o=!1;const i={...e};for(const[a,s]of n){const l=r.get(a);if(!l)continue;const c={};let h=!1;for(const d of Object.keys(s))t8e(s[d],l[d])?o=!0:(c[d]=s[d],h=!0);h?i[a]=c:(o=!0,delete i[a])}return o?i:e},NB=()=>{const[e,t]=m.useState({}),n=m.useCallback((a,s)=>{t(l=>n8e(l,a,s))},[]),r=m.useCallback(a=>{t(s=>r8e(s,a))},[]),o=m.useCallback(a=>{t(s=>o8e(s,a))},[]),i=m.useCallback(()=>t({}),[]);return{overrides:e,setOverride:n,dropOverride:r,pruneAgainst:o,reset:i}},i8e=500,a8e=500,s8e={stack:[],cursor:0},l8e=(e,t,n)=>{const r=Date.now(),o=i8e,i=a8e,{stack:a,cursor:s}=e;if(t.coalesceKey&&s>0){const h=a[s-1];if(h&&h.coalesceKey===t.coalesceKey&&r-h.capturedAt<=i){const d=a.slice(0,s);return d[s-1]={...h,do:t.do,capturedAt:r},{stack:d,cursor:s}}}const l=a.slice(0,s);l.push({...t,capturedAt:r});let c=s+1;for(;l.length>o;)l.shift(),c-=1;return c<0&&(c=0),{stack:l,cursor:c}},c8e=e=>e.cursor===0?{state:e,entry:void 0}:{state:{...e,cursor:e.cursor-1},entry:e.stack[e.cursor-1]},u8e=e=>e.cursor===e.stack.length?{state:e,entry:void 0}:{state:{...e,cursor:e.cursor+1},entry:e.stack[e.cursor]},d8e=()=>({stack:[],cursor:0}),h8e=e=>{if(e.cursor===0)return e;const t=e.stack.slice();return t.splice(e.cursor-1,1),{stack:t,cursor:e.cursor-1}},f8e=(e,t)=>t.state,p8e=()=>{const[e,t]=m.useReducer(f8e,s8e),n=m.useRef(e);n.current=e;const r=m.useRef(Promise.resolve()),o=m.useRef(0),i=m.useCallback(p=>{p!==n.current&&(n.current=p,t({type:"replace",state:p}))},[]),a=m.useCallback(p=>{const k={do:p.do,undo:p.undo,coalesceKey:p.coalesceKey,capturedAt:p.capturedAt??Date.now()};i(l8e(n.current,k))},[i]),s=m.useCallback(()=>{o.current=Date.now();const p=r.current.then(()=>{const k=c8e(n.current);if(k.entry)return i(k.state),{entry:k.entry}});return r.current=p.then(()=>{},()=>{}),p},[i]),l=m.useCallback(()=>{o.current=Date.now();const p=r.current.then(()=>{const k=u8e(n.current);if(k.entry)return i(k.state),{entry:k.entry}});return r.current=p.then(()=>{},()=>{}),p},[i]),c=m.useCallback(()=>{i(d8e())},[i]),h=m.useCallback(()=>{i(h8e(n.current))},[i]),d=m.useCallback(()=>{o.current=Date.now()},[]),f=m.useCallback(()=>o.current,[]);return{push:a,undo:s,redo:l,clear:c,dropTop:h,canUndo:e.cursor>0,canRedo:e.cursor<e.stack.length,markMutation:d,lastMutationAt:f}};function y8e({nodes:e,connectors:t,flowPos:n,nodeIdGen:r,connectorIdGen:o,defaultOffset:i={x:24,y:24}}){const a=new Map;for(const p of e)a.set(p.id,r(p.id));let s=Number.POSITIVE_INFINITY,l=Number.POSITIVE_INFINITY;for(const p of e)p.position.x<s&&(s=p.position.x),p.position.y<l&&(l=p.position.y);Number.isFinite(s)||(s=0),Number.isFinite(l)||(l=0);const c=n?n.x-s:i.x,h=n?n.y-l:i.y,d=e.map(p=>{const k=a.get(p.id);if(k===void 0)throw new Error(`paste id missing for ${p.id}`);return{...p,id:k,position:{x:p.position.x+c,y:p.position.y+h}}}),f=t.map(p=>{const k=o(p.id);return{...p,id:k,source:a.get(p.source)??p.source,target:a.get(p.target)??p.target}});return{newNodes:d,newConnectors:f,idMap:a}}const m8e=e=>({type:"imageNode",position:e.position,data:{path:"",alt:e.originalFilename,width:e.dims.width,height:e.dims.height,_uploading:!0}}),k8e=e=>({type:"imageNode",data:gJ(e)}),g8e=e=>({type:"imageNode",position:e.position,data:{path:"",alt:e.originalFilename,width:e.dims.width,height:e.dims.height,_uploadError:e.message}}),gJ=e=>({...zue(e.path,e.dims,e.lastUsed),alt:e.originalFilename}),x8e=async(e,t)=>{const{nodeId:n,flowId:r,file:o,originalFilename:i,position:a,dims:s,lastUsed:l}=e;t.rememberRetry(n,{file:o,originalFilename:i,position:a,dims:s}),t.setOverride(n,m8e({position:a,dims:s,originalFilename:i}));let c;try{c=(await t.upload(r,n,o,i)).path}catch(p){const k=p instanceof Error?p.message:String(p);throw t.setOverride(n,g8e({position:a,dims:s,originalFilename:i,message:k})),p}t.setOverride(n,k8e({path:c,dims:s,originalFilename:i,lastUsed:l}));const h=gJ({path:c,dims:s,originalFilename:i,lastUsed:l}),d={id:n,type:"imageNode",position:a,data:h},{id:f}=await t.createNode(r,d);t.forgetRetry(n),t.pushUndo&&t.pushUndo({do:async()=>{await t.createNode(r,{...d,id:f})},undo:async()=>{await t.deleteNode(r,f)}})},v8e="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789",w8e=248;function No(e=10){let t="";const n=new Uint8Array(e*2);for(;t.length<e;){crypto.getRandomValues(n);for(let r=0;r<n.length&&t.length<e;r++){const o=n[r];o<w8e&&(t+=v8e[o%62])}}return t}const M8e=new Set(["INPUT","TEXTAREA","SELECT"]),xr=e=>e?M8e.has(e.tagName)?!0:e instanceof HTMLElement&&e.isContentEditable:!1,b8e=(e,t,n)=>{const r=e.indexOf(t);if(r<0)return null;const o=e.length,i=[...e];switch(n.op){case"forward":{if(r>=o-1)return null;const a=i[r],s=i[r+1];return a===void 0||s===void 0?null:(i[r]=s,i[r+1]=a,i)}case"backward":{if(r<=0)return null;const a=i[r],s=i[r-1];return a===void 0||s===void 0?null:(i[r]=s,i[r-1]=a,i)}case"toFront":{if(r===o-1)return null;const[a]=i.splice(r,1);return a===void 0?null:(i.push(a),i)}case"toBack":{if(r===0)return null;const[a]=i.splice(r,1);return a===void 0?null:(i.unshift(a),i)}case"toIndex":{const a=Math.min(Math.max(n.index,0),o-1);if(a===r)return null;const[s]=i.splice(r,1);return s===void 0?null:(i.splice(a,0,s),i)}}};function C8e({slug:e,demos:t,detail:n,loading:r,runs:o,nodeEvents:i,statusByNode:a,onPlayNode:s,onRestartDemo:l}){var ad,sd;const c=t.find(F=>F.slug===e),[h,d]=m.useState([]),[f,p]=m.useState([]),[k,v]=m.useState(null),w=m.useRef(h),g=m.useRef(f);m.useEffect(()=>{w.current=h},[h]),m.useEffect(()=>{g.current=f},[f]);const M=m.useRef(null),x=m.useRef(null),b=m.useRef(null),S=NB(),C=NB(),L=TB(),P=TB(),[T,E]=m.useState(null),[z,A]=m.useState(null),[U,R]=m.useState(null),V=m.useRef(null);m.useEffect(()=>{V.current=U},[U]);const[O,B]=m.useState(!1),[D,N]=m.useState(0),I=m.useRef(null),W=m.useRef(null),H=m.useCallback(F=>{W.current=F},[]),j=p8e(),{push:G,dropTop:X,markMutation:Y,clear:re,lastMutationAt:ne}=j,{reset:ae}=S,{reset:ve}=C,{reset:be}=L,{reset:me}=P;m.useEffect(()=>{d([]),p([]),v(null),ae(),ve(),be(),me(),E(null),A(null),Br.current=null,So(!1),mr.current.clear(),j.clear()},[n==null?void 0:n.id]);const ge=m.useCallback((F,q)=>{d(F),p(q)},[]),ee=(ad=n==null?void 0:n.flow)==null?void 0:ad.nodes,ke=(sd=n==null?void 0:n.flow)==null?void 0:sd.connectors,{pruneAgainst:Fe}=S,{pruneAgainst:rt}=C,{pruneAgainst:mt}=L,{pruneAgainst:ht}=P;m.useEffect(()=>{ee&&(Fe(ee),mt(ee)),Date.now()-ne()>2e3&&re()},[ee,Fe,mt,ne,re]),m.useEffect(()=>{if(!ee)return;const F=I.current,q=new Set(ee.map(oe=>oe.id));if(I.current=q,F===null)return;const Z=S.overrides,$=L.ids;let _=!1;for(const oe of q)if(!F.has(oe)&&!(oe in Z)){_=!0;break}if(!_){for(const oe of F)if(!q.has(oe)&&!$.has(oe)){_=!0;break}}_&&N(oe=>oe+1)},[ee]),m.useEffect(()=>{ke&&(rt(ke),ht(ke)),Date.now()-ne()>2e3&&re()},[ke,rt,ht,ne,re]),m.useEffect(()=>{if(!(!ee||!T)&&ee.length===T.length){for(let F=0;F<ee.length;F++){const q=ee[F],Z=T[F];if(!q||q.id!==Z)return}E(null)}},[ee,T]);const le=(n==null?void 0:n.id)??null,Q=m.useMemo(()=>le?jue({baseUrl:"",flowId:le}):null,[le]),[fe,we]=m.useState(!1),{setOverride:Se,dropOverride:Oe}=S,te=m.useRef(S.overrides);m.useEffect(()=>{te.current=S.overrides},[S.overrides]);const de=m.useCallback((F,q)=>{var $;if(!le||!Q)return;const Z=($=ee==null?void 0:ee.find(_=>_.id===F))==null?void 0:$.position;Se(F,{position:q}),A(null),Y(),Z&&G({do:async()=>{await Q.updateNodePosition(F,q)},undo:async()=>{await Q.updateNodePosition(F,Z)},coalesceKey:`node:${F}:position`}),Q.updateNodePosition(F,q).catch(_=>{Oe(F),Z&&X(),A(_ instanceof Error?_.message:String(_)),console.error("updateNodePosition failed",_)})},[le,Q,ee,Se,Oe,G,X,Y]),Pe=m.useCallback(F=>{if(!le||!Q||F.length===0)return;const q=te.current,Z=F.map($=>{var Ae;const _=ee==null?void 0:ee.find(Me=>Me.id===$.id);if(!_)return null;const oe=((Ae=q[$.id])==null?void 0:Ae.position)??_.position;return{id:$.id,prev:oe,next:$.position}}).filter($=>$!==null);if(Z.length!==0){for(const $ of Z)Se($.id,{position:$.next});A(null),Y(),G({do:async()=>{await Promise.allSettled(Z.map($=>Q.updateNodePosition($.id,$.next)))},undo:async()=>{await Promise.allSettled(Z.map($=>Q.updateNodePosition($.id,$.prev)))}}),Promise.all(Z.map(async $=>{try{return await Q.updateNodePosition($.id,$.next),null}catch(_){return Oe($.id),_ instanceof Error?_.message:String(_)}})).then($=>{const _=$.find(oe=>oe!==null);_&&A(_)})}},[le,Q,ee,Se,Oe,G,Y]),qe=m.useCallback((F,q)=>{Se(F,{position:{x:q.x,y:q.y},data:{width:q.width,height:q.height}})},[Se]),We=m.useCallback((F,q)=>{if(!le||!Q)return;const Z=ee==null?void 0:ee.find(oe=>oe.id===F),$=Z?{width:Z.data.width,height:Z.data.height,position:{x:Z.position.x,y:Z.position.y}}:void 0,_={width:q.width,height:q.height,position:{x:q.x,y:q.y}};Se(F,{position:_.position,data:{width:_.width,height:_.height}}),A(null),Y(),$&&G({do:async()=>{await Q.updateNode(F,_)},undo:async()=>{await Q.updateNode(F,$)},coalesceKey:`node:${F}:resize`}),Q.updateNode(F,_).catch(oe=>{Oe(F),$&&X(),A(oe instanceof Error?oe.message:String(oe)),console.error("updateNode resize failed",oe)})},[le,Q,ee,Se,Oe,G,X,Y]),Rt=m.useCallback(F=>{if(!le||!Q)return;const q=ee==null?void 0:ee.find(_=>_.id===F);if(!q)return;const Z={autoSize:q.data.autoSize,width:q.data.width,height:q.data.height},$={autoSize:!0};Se(F,{data:{autoSize:!0,width:void 0,height:void 0}}),A(null),Y(),G({do:async()=>{await Q.updateNode(F,$)},undo:async()=>{await Q.updateNode(F,Z)},coalesceKey:`node:${F}:fit-to-content`}),Q.updateNode(F,$).catch(_=>{Oe(F),X(),A(_ instanceof Error?_.message:String(_)),console.error("updateNode (fit-to-content) failed",_)})},[le,Q,ee,Se,Oe,G,X,Y]),st=m.useCallback(F=>{if(!le||!Q||F.length===0)return;const q=[];for(const $ of F){const _=ee==null?void 0:ee.find(Ue=>Ue.id===$.id);if(!_)continue;const oe=_.data,Ae={position:{x:_.position.x,y:_.position.y}};oe.width!==void 0&&(Ae.width=oe.width),oe.height!==void 0&&(Ae.height=oe.height);const Me={position:$.position};$.width!==void 0&&(Me.width=$.width),$.height!==void 0&&(Me.height=$.height),q.push({id:$.id,prev:Ae,next:Me})}if(q.length===0)return;for(const $ of q){const _={};$.next.width!==void 0&&(_.width=$.next.width),$.next.height!==void 0&&(_.height=$.next.height),Se($.id,{position:$.next.position,...Object.keys(_).length>0?{data:_}:{}})}A(null),Y();const Z=q.map($=>$.id).sort();G({do:async()=>{await Promise.allSettled(q.map($=>Q.updateNode($.id,$.next)))},undo:async()=>{await Promise.allSettled(q.map($=>Q.updateNode($.id,$.prev)))},coalesceKey:`multi:resize:${Z.join(",")}`}),Promise.all(q.map(async $=>{try{return await Q.updateNode($.id,$.next),null}catch(_){return Oe($.id),_ instanceof Error?_.message:String(_)}})).then($=>{const _=$.find(oe=>oe!==null);_&&A(_)})},[le,Q,ee,Se,Oe,G,Y]),{setOverride:Ne,dropOverride:ot}=C,Jn=m.useCallback((F,q)=>{Se(F,{data:q})},[Se]),zt=m.useCallback((F,q)=>{for(const Z of F)Se(Z,{data:q})},[Se]),zn=m.useCallback((F,q)=>{Ne(F,q)},[Ne]),Kt=m.useCallback((F,q)=>{if(!le||!Q)return;aq(aa,q);const Z=ee==null?void 0:ee.find(_=>_.id===F);let $=null;if(Z){$={};const _=Z.data;for(const oe of Object.keys(q))$[oe]=_[oe]}if(Se(F,{data:q}),A(null),Y(),$){const _=$;G({do:async()=>{await Q.updateNode(F,q)},undo:async()=>{await Q.updateNode(F,_)},coalesceKey:`node:${F}:style`})}Q.updateNode(F,q).catch(_=>{Oe(F),$&&X(),A(_ instanceof Error?_.message:String(_)),console.error("updateNode style failed",_)})},[le,Q,ee,Se,Oe,G,X,Y]),p1=m.useCallback((F,q)=>{if(!le||!Q||F.length===0)return;aq(aa,q);const Z=F.map($=>{const _=ee==null?void 0:ee.find(Me=>Me.id===$);if(!_)return null;const oe=_.data,Ae={};for(const Me of Object.keys(q))Ae[Me]=oe[Me];return{id:$,prev:Ae}}).filter($=>$!==null);if(Z.length!==0){for(const $ of Z)Se($.id,{data:q});A(null),Y(),G({do:async()=>{await Promise.allSettled(Z.map($=>Q.updateNode($.id,q)))},undo:async()=>{await Promise.allSettled(Z.map($=>Q.updateNode($.id,$.prev)))}}),Promise.all(Z.map(async $=>{try{return await Q.updateNode($.id,q),null}catch(_){return Oe($.id),_ instanceof Error?_.message:String(_)}})).then($=>{const _=$.find(oe=>oe!==null);_&&A(_)})}},[le,Q,ee,Se,Oe,G,Y]),y1=m.useCallback((F,q)=>{if(!le||!Q)return;Iue(aa,q);const Z=ke==null?void 0:ke.find(_=>_.id===F);let $=null;if(Z){$={};const _=Z;for(const oe of Object.keys(q))$[oe]=_[oe]}if(Ne(F,q),A(null),Y(),$){const _=$;G({do:async()=>{await Q.updateConnector(F,q)},undo:async()=>{await Q.updateConnector(F,_)},coalesceKey:`connector:${F}:style`})}Q.updateConnector(F,q).catch(_=>{ot(F),$&&X(),A(_ instanceof Error?_.message:String(_)),console.error("updateConnector failed",_)})},[le,Q,ke,Ne,ot,G,X,Y]),{mark:Jo,markMany:ei,unmark:_r,unmarkMany:Ki}=L,{mark:ti,markMany:fr,unmark:Hr,unmarkMany:pr}=P,m1=m.useCallback(F=>{if(!le||!Q)return;const q=ee==null?void 0:ee.find(Me=>Me.id===F);if(!q)return;const Z=(ke??[]).filter(Me=>Me.source===F||Me.target===F),$=Z.map(Me=>Me.id),_=new Set($);A(null),Jo(F),$.length>0&&fr($),d(Me=>Me.filter(Ue=>Ue!==F)),p(Me=>Me.filter(Ue=>!_.has(Ue))),Y();const oe=q,Ae=Z;G({do:async()=>{Jo(F),$.length>0&&fr($),await Q.deleteNode(F)},undo:async()=>{_r(F),$.length>0&&pr($),await Q.createNode({id:oe.id,type:oe.type,position:oe.position,data:oe.data});for(const Me of Ae)await Q.createConnector({...Me,id:Me.id})}}),Q.deleteNode(F).catch(Me=>{_r(F),$.length>0&&pr($),X(),A(Me instanceof Error?Me.message:String(Me)),console.error("deleteNode failed",Me)})},[le,Q,ee,ke,Jo,fr,_r,pr,G,X,Y]),k1=m.useCallback((F,q)=>{if(!le||!Q||!ee)return;const Z=T??ee.map(oe=>oe.id),$=b8e(Z,F,q);if(!$)return;const _=Z.indexOf(F);E($),A(null),Y(),G({do:async()=>{await Q.reorderNode(F,q)},undo:async()=>{await Q.reorderNode(F,{op:"toIndex",index:_})}}),Q.reorderNode(F,q).catch(oe=>{E(null),X(),A(oe instanceof Error?oe.message:String(oe)),console.error("reorderNode failed",oe)})},[le,Q,ee,T,G,X,Y]);m.useCallback(F=>{if(!le||!Q)return;const q=ke==null?void 0:ke.find($=>$.id===F);if(!q)return;A(null),ti(F),p($=>$.filter(_=>_!==F)),Y();const Z=q;G({do:async()=>{ti(F),await Q.deleteConnector(F)},undo:async()=>{Hr(F),await Q.createConnector({...Z,id:Z.id})}}),Q.deleteConnector(F).catch($=>{Hr(F),X(),A($ instanceof Error?$.message:String($)),console.error("deleteConnector failed",$)})},[le,Q,ke,ti,Hr,G,X,Y]);const He=m.useCallback((F,q)=>{if(!le||!Q||F.length===0&&q.length===0)return;const Z=new Set(F),$=F.map(ze=>ee==null?void 0:ee.find(it=>it.id===ze)).filter(ze=>!!ze),_=(ke??[]).filter(ze=>Z.has(ze.source)||Z.has(ze.target)),oe=new Set(_.map(ze=>ze.id)),Ae=q.map(ze=>ke==null?void 0:ke.find(it=>it.id===ze)).filter(ze=>!!ze).filter(ze=>!oe.has(ze.id));if($.length===0&&_.length===0&&Ae.length===0)return;A(null);const Me=$.map(ze=>ze.id),Ue=[..._.map(ze=>ze.id),...Ae.map(ze=>ze.id)];Me.length>0&&ei(Me),Ue.length>0&&fr(Ue);const Ut=$;d(ze=>ze.filter(it=>!Z.has(it)));const Eo=new Set(Ae.map(ze=>ze.id));p(ze=>ze.filter(it=>!Eo.has(it)&&!oe.has(it))),Y(),G({do:async()=>{Me.length>0&&ei(Me),Ue.length>0&&fr(Ue);for(const ze of Ut)await Q.deleteNode(ze.id).catch(()=>{});await Promise.allSettled(Ae.map(ze=>Q.deleteConnector(ze.id)))},undo:async()=>{Me.length>0&&Ki(Me),Ue.length>0&&pr(Ue);for(let ze=Ut.length-1;ze>=0;ze--){const it=Ut[ze];it&&await Q.createNode({id:it.id,type:it.type,position:it.position,data:it.data})}for(const ze of[..._,...Ae])await Q.createConnector({...ze,id:ze.id})}});const Dn=new Map;for(const ze of $)Dn.set(ze.id,_.filter(it=>it.source===ze.id||it.target===ze.id).map(it=>it.id));(async()=>{const ze=[];for(const Yt of Ut)try{await Q.deleteNode(Yt.id)}catch(gn){_r(Yt.id);const na=Dn.get(Yt.id)??[];na.length>0&&pr(na),ze.push(gn instanceof Error?gn.message:String(gn))}const it=await Promise.all(Ae.map(async Yt=>{try{return await Q.deleteConnector(Yt.id),null}catch(gn){return Hr(Yt.id),gn instanceof Error?gn.message:String(gn)}}));for(const Yt of it)Yt!==null&&ze.push(Yt);ze.length>0&&ze[0]!==void 0&&A(ze[0])})()},[le,Q,ee,ke,ei,fr,_r,Ki,Hr,pr,G,Y]);m.useEffect(()=>{M.current=He},[He]),m.useEffect(()=>{const F=q=>{if(q.key!=="Delete"&&q.key!=="Backspace"||xr(document.activeElement)||document.querySelector('[data-testid="inline-edit-input"]'))return;const Z=w.current,$=g.current;Z.length===0&&$.length===0||(q.preventDefault(),He(Z,$))};return window.addEventListener("keydown",F),()=>window.removeEventListener("keydown",F)},[He]);const{undo:Mt,redo:Fr,canUndo:Or,canRedo:jn}=j;m.useEffect(()=>{const F=async q=>{if((q.metaKey||q.ctrlKey)&&q.key.toLowerCase()==="z"&&!xr(document.activeElement)){if(q.preventDefault(),q.shiftKey){if(!jn)return;try{const Z=await Fr();Z!=null&&Z.entry&&await Z.entry.do()}catch(Z){A(Z instanceof Error?Z.message:String(Z)),console.error("redo failed",Z)}return}if(Or)try{const Z=await Mt();Z!=null&&Z.entry&&await Z.entry.undo()}catch(Z){A(Z instanceof Error?Z.message:String(Z)),console.error("undo failed",Z)}}};return window.addEventListener("keydown",F),()=>window.removeEventListener("keydown",F)},[Mt,Fr,Or,jn]);const yr=m.useCallback((F,q)=>{if(!le||!Q)return;const Z=ee==null?void 0:ee.find(oe=>oe.id===F),_=(Z&&"name"in Z.data?Z.data.name:void 0)??"";Se(F,{data:{name:q}}),A(null),Y(),Z&&G({do:async()=>{await Q.updateNode(F,{name:q})},undo:async()=>{await Q.updateNode(F,{name:_})},coalesceKey:`node:${F}:name`}),Q.updateNode(F,{name:q}).catch(oe=>{Z&&X(),A(oe instanceof Error?oe.message:String(oe)),console.error("updateNode name failed",oe)})},[le,Q,ee,Se,G,X,Y]),Mo=m.useCallback((F,q)=>{if(!le||!Q)return;const Z=ee==null?void 0:ee.find(_=>_.id===F);if(!Z)return;const $=Z.data.description??"";Se(F,{data:{description:q}}),A(null),Y(),G({do:async()=>{await Q.updateNode(F,{description:q})},undo:async()=>{await Q.updateNode(F,{description:$})},coalesceKey:`node:${F}:description`}),Q.updateNode(F,{description:q}).catch(_=>{X(),A(_ instanceof Error?_.message:String(_)),console.error("updateNode description failed",_)})},[le,Q,ee,Se,G,X,Y]),er=m.useCallback((F,q)=>{if(!le||!Q)return;const Z=ee==null?void 0:ee.find(_=>_.id===F);if(!Z)return;const $=Z.data.detail??"";Se(F,{data:{detail:q}}),A(null),Y(),G({do:async()=>{await Q.updateNode(F,{detail:q})},undo:async()=>{await Q.updateNode(F,{detail:$})},coalesceKey:`node:${F}:detail`}),Q.updateNode(F,{detail:q}).catch(_=>{X(),A(_ instanceof Error?_.message:String(_)),console.error("updateNode detail failed",_)})},[le,Q,ee,Se,G,X,Y]),qr=m.useCallback((F,q)=>{if(!le||!Q)return;const Z=ee==null?void 0:ee.find(_=>_.id===F);if(!Z)return;const $="icon"in Z.data?Z.data.icon??null:null;Se(F,{data:{icon:q??void 0}}),A(null),Y(),G({do:async()=>{await Q.updateNode(F,{icon:q})},undo:async()=>{await Q.updateNode(F,{icon:$})},coalesceKey:`node:${F}:icon`}),Q.updateNode(F,{icon:q}).catch(_=>{X(),A(_ instanceof Error?_.message:String(_)),console.error("updateNode icon failed",_)})},[le,Q,ee,Se,G,X,Y]),an=m.useCallback((F,q,Z)=>{if(!le||!Q)return;A(null);const $=`node-${No()}`,_=lq(F,Z,P0(aa).node),oe={id:$,type:"shapeNode",position:q,data:_};Se($,{id:$,type:"shapeNode",position:q,data:_}),Y(),Q.createNode(oe).then(({id:Me})=>{G({do:async()=>{await Q.createNode({...oe,id:Me})},undo:async()=>{await Q.deleteNode(Me)}})}).catch(Me=>{Oe($),A(Me instanceof Error?Me.message:String(Me)),console.error("createNode failed",Me)})},[le,Q,Se,Oe,G,Y]),jt=m.useCallback((F,q)=>{if(!le||!Q)return;A(null);const Z=`node-${No()}`,$={icon:F,width:Tu.width,height:Tu.height},_={id:Z,type:"iconNode",position:q,data:$};Se(Z,{id:Z,type:"iconNode",position:q,data:$}),d([Z]),Y(),Q.createNode(_).then(({id:Ae})=>{G({do:async()=>{await Q.createNode({..._,id:Ae})},undo:async()=>{await Q.deleteNode(Ae)}})}).catch(Ae=>{Oe(Z),A(Ae instanceof Error?Ae.message:String(Ae)),console.error("createNode (icon) failed",Ae)})},[le,Q,Se,Oe,G,Y]),bo=m.useCallback(F=>{if(!le||!Q)return;A(null);const q=`node-${No()}`,Z={id:q,type:"htmlNode",position:F.position,data:{}},$={id:q,type:"htmlNode",position:F.position,data:{}};Se(q,$),d([q]),Y(),Q.createNode(Z).then(({id:_})=>{G({do:async()=>{await Q.createNode({...Z,id:_})},undo:async()=>{await Q.deleteNode(_)}})}).catch(_=>{Oe(q),A(_ instanceof Error?_.message:String(_)),console.error("createNode (htmlNode) failed",_)})},[le,Q,Se,Oe,G,Y]),mr=m.useRef(new Map),Xi=m.useCallback((F,q)=>{mr.current.set(F,q)},[]),Yi=m.useCallback(F=>{mr.current.delete(F)},[]),Co=m.useCallback(F=>{!le||!Q||(A(null),Y(),x8e({...F,flowId:le,lastUsed:P0(aa).node},{upload:(q,Z,$,_)=>Q.uploadImage(Z,$,_),createNode:async(q,Z)=>{const{id:$}=await Q.createNode(Z);return{id:$}},deleteNode:async(q,Z)=>(await Q.deleteNode(Z),{ok:!0}),setOverride:Se,pushUndo:G,rememberRetry:Xi,forgetRetry:Yi}).catch(q=>{console.error("image-upload-flow failed",q)}))},[le,Q,Se,G,Y,Xi,Yi]),Ct=m.useCallback(F=>{if(!le||!Q)return;const q=`node-${No()}`;Co({nodeId:q,...F})},[le,Q,Co]),Qi=m.useCallback(F=>{const q=mr.current.get(F);q&&Co({nodeId:F,...q})},[Co]),[Tn,ni]=m.useState({open:!1,mode:"insert"}),tr=m.useCallback((F,q)=>{ni({open:!0,mode:F,nodeId:q})},[]),kr=m.useCallback(()=>{ni(F=>({...F,open:!1}))},[]),g1=m.useCallback(()=>{tr("insert")},[tr]),Ji=m.useCallback(F=>tr("replace",F),[tr]),ea=m.useCallback(F=>{if(kue(F),Tn.mode==="replace"&&Tn.nodeId){if(le&&Q){const q=Tn.nodeId,Z=ee==null?void 0:ee.find(_=>_.id===q),$=(Z==null?void 0:Z.type)==="iconNode"?Z.data.icon:void 0;if(Se(q,{data:{icon:F}}),A(null),Y(),$!==void 0){const _=$;G({do:async()=>{await Q.updateNode(q,{icon:F})},undo:async()=>{await Q.updateNode(q,{icon:_})},coalesceKey:`node:${q}:icon`})}Q.updateNode(q,{icon:F}).catch(_=>{Oe(q),$!==void 0&&X(),A(_ instanceof Error?_.message:String(_)),console.error("updateNode (icon replace) failed",_)})}}else{const q=W.current;if(q&&le){const Z=yue(q,{width:window.innerWidth,height:window.innerHeight});jt(F,Z)}}kr()},[Tn.mode,Tn.nodeId,le,Q,ee,Se,Oe,G,X,Y,jt,kr]),ri=m.useCallback((F,q)=>{if(!le||!Q)return;const Z=ke==null?void 0:ke.find(_=>_.id===F),$=Z==null?void 0:Z.label;Ne(F,{label:q}),A(null),Y(),Z&&G({do:async()=>{await Q.updateConnector(F,{label:q})},undo:async()=>{await Q.updateConnector(F,{label:$})},coalesceKey:`connector:${F}:label`}),Q.updateConnector(F,{label:q}).catch(_=>{Z&&X(),A(_ instanceof Error?_.message:String(_)),console.error("updateConnector label failed",_)})},[le,Q,ke,Ne,G,X,Y]),mn=m.useCallback((F,q,Z)=>{if(!le||!Q)return;const $=`conn-${No()}`,_=Z==null?void 0:Z.targetPin,oe=P0(aa).connector,Ae={id:$,source:F,target:q,sourceHandleAutoPicked:!0,targetHandleAutoPicked:!0,..._?{targetPin:_}:{},...oe,kind:"default"},Me={id:$,source:F,target:q,sourceHandleAutoPicked:!0,targetHandleAutoPicked:!0,..._?{targetPin:_}:{},...oe,kind:"default"};Ne($,Ae),A(null),Y(),Q.createConnector(Me).then(({id:Ue})=>{G({do:async()=>{await Q.createConnector({...Me,id:Ue})},undo:async()=>{await Q.deleteConnector(Ue)}})}).catch(Ue=>{ot($),A(Ue instanceof Error?Ue.message:String(Ue)),console.error("createConnector failed",Ue)})},[le,Q,Ne,ot,G,Y]),Vr=m.useCallback(({sourceNodeId:F,position:q,shape:Z})=>{if(!le||!Q)return;A(null);const $=`node-${No()}`,_=`conn-${No()}`,oe=pR[Z],Ae=P0(aa),Me=lq(Z,oe,Ae.node),Ue={id:$,type:"shapeNode",position:q,data:Me},Ut={id:_,source:F,target:$,sourceHandleAutoPicked:!0,targetHandleAutoPicked:!0,...Ae.connector,kind:"default"};Se($,{id:$,type:"shapeNode",position:q,data:Me}),Ne(_,Ut),v($),Y(),(async()=>{try{await Q.createNode(Ue),await Q.createConnector(Ut),G({do:async()=>{await Q.createNode(Ue),await Q.createConnector(Ut)},undo:async()=>{ot(_),Oe($),await Q.deleteConnector(_).catch(()=>{}),await Q.deleteNode($).catch(()=>{})}})}catch(Dn){Oe($),ot(_),A(Dn instanceof Error?Dn.message:String(Dn)),console.error("createAndConnectFromPane failed",Dn)}})()},[le,Q,Se,Oe,Ne,ot,G,Y]),Br=m.useRef(null),[x1,So]=m.useState(!1),nr=m.useCallback(F=>{if(!ee)return;const q=new Set(F),Z=ee.filter(_=>q.has(_.id));if(Z.length===0)return;const $=(ke??[]).filter(_=>q.has(_.source)&&q.has(_.target));Br.current=JSON.parse(JSON.stringify({nodes:Z,connectors:$})),So(!0)},[ee,ke]),kn=m.useCallback(F=>{if(!le||!Q)return;const q=Br.current;if(!q||q.nodes.length===0)return;const{newNodes:Z,newConnectors:$}=y8e({nodes:q.nodes,connectors:q.connectors,flowPos:F,nodeIdGen:()=>`node-${No()}`,connectorIdGen:()=>`conn-${No()}`});for(const _ of Z)Se(_.id,_);for(const _ of $)Ne(_.id,_);d(Z.map(_=>_.id)),p($.map(_=>_.id)),A(null),Y(),(async()=>{try{for(const _ of Z)await Q.createNode({id:_.id,type:_.type,position:_.position,data:_.data});for(const _ of $)await Q.createConnector(_);G({do:async()=>{for(const _ of Z)await Q.createNode({id:_.id,type:_.type,position:_.position,data:_.data});for(const _ of $)await Q.createConnector(_)},undo:async()=>{await Promise.allSettled($.map(_=>Q.deleteConnector(_.id))),await Promise.allSettled(Z.map(_=>Q.deleteNode(_.id)))}})}catch(_){for(const oe of Z)Oe(oe.id);for(const oe of $)ot(oe.id);A(_ instanceof Error?_.message:String(_)),console.error("paste failed",_)}})()},[le,Q,Se,Oe,Ne,ot,Y,G]);m.useEffect(()=>{const F=q=>{const Z=Sue({event:q,isEditableActive:xr(document.activeElement),hasNodes:!!ee&&ee.length>0,hasConnectors:!!ke&&ke.length>0,selectedIds:w.current,hasClipboard:!!Br.current});if(Z.type!=="noop"&&!(Z.type==="copy"||Z.type==="paste")){if(q.preventDefault(),Z.type==="selectAll"){d((ee??[]).map($=>$.id)),p((ke??[]).map($=>$.id));return}nr([...Z.ids]),kn(null)}};return window.addEventListener("keydown",F),()=>window.removeEventListener("keydown",F)},[ee,ke,nr,kn]),m.useEffect(()=>{const F=q=>{const Z=Mue(q);if(!Z||xr(document.activeElement))return;const $=w.current;if($.length===0)return;const _=S.overrides,oe=(ee??[]).map(Me=>{var Ut;const Ue=((Ut=_[Me.id])==null?void 0:Ut.position)??Me.position;return{id:Me.id,position:Ue}}),Ae=Cue(Z,$,oe);if(Ae.length!==0)if(q.preventDefault(),Ae.length===1){const Me=Ae[0];Me&&de(Me.id,Me.position)}else Pe(Ae)};return window.addEventListener("keydown",F),()=>window.removeEventListener("keydown",F)},[ee,S.overrides,de,Pe]),m.useEffect(()=>{const F=q=>{const Z=bue(q);if(!Z||xr(document.activeElement))return;q.preventDefault();const $=W.current;$&&(Z==="fit"?$.fitView({padding:.2,duration:200}):Z==="in"?$.zoomIn({duration:150}):$.zoomOut({duration:150}))};return window.addEventListener("keydown",F),()=>window.removeEventListener("keydown",F)},[]);const sn=m.useCallback(async F=>{if(!le||!Q||!ee||!Q.computeLayout)return;const q=S.overrides,Z=W.current,$=F==="selection"?new Set(w.current):null,_=$?ee.filter(De=>$.has(De.id)):ee;if(_.length<2)return;const oe=new Set(_.map(De=>De.id)),Ae=(ke??[]).filter(De=>oe.has(De.source)&&oe.has(De.target)),Me=new Map,Ue=_.map(De=>{var vn;const Qe=((vn=q[De.id])==null?void 0:vn.position)??De.position;Me.set(De.id,Qe);const Ht=Z==null?void 0:Z.getInternalNode(De.id),xn=Ht==null?void 0:Ht.measured,Ao=De.data,ra=(xn==null?void 0:xn.width)??Ao.width??200,ld=(xn==null?void 0:xn.height)??Ao.height??120;return{id:De.id,type:De.type,width:ra,height:ld}}),Ut=Ae.map(De=>({id:De.id,source:De.source,target:De.target})),Eo=await Q.computeLayout(Ue,Ut),Dn=new Map;for(const[De,Qe]of Object.entries(Eo.nodes))Dn.set(De,Qe.position);let ze=Number.POSITIVE_INFINITY,it=Number.POSITIVE_INFINITY,Yt=Number.POSITIVE_INFINITY,gn=Number.POSITIVE_INFINITY;for(const De of Ue){const Qe=Me.get(De.id);if(!Qe)continue;Qe.x<ze&&(ze=Qe.x),Qe.y<it&&(it=Qe.y);const Ht=Dn.get(De.id);Ht&&(Ht.x<Yt&&(Yt=Ht.x),Ht.y<gn&&(gn=Ht.y))}const na=Number.isFinite(ze)&&Number.isFinite(Yt)?ze-Yt:0,_z=Number.isFinite(it)&&Number.isFinite(gn)?it-gn:0,ai=[];for(const De of Ue){const Qe=Me.get(De.id),Ht=Dn.get(De.id);if(!Qe||!Ht)continue;const xn={x:Ht.x+na,y:Ht.y+_z},Ao=xn.x-Qe.x,ra=xn.y-Qe.y;Math.abs(Ao)<1&&Math.abs(ra)<1||ai.push({id:De.id,prev:Qe,next:xn})}if(ai.length!==0){A(null);for(const De of ai)Se(De.id,{position:De.next});Y(),G({do:async()=>{await Promise.allSettled(ai.map(De=>Q.updateNodePosition(De.id,De.next)))},undo:async()=>{await Promise.allSettled(ai.map(De=>Q.updateNodePosition(De.id,De.prev)))}}),Promise.all(ai.map(async De=>{try{return await Q.updateNodePosition(De.id,De.next),null}catch(Qe){return Oe(De.id),Qe instanceof Error?Qe.message:String(Qe)}})).then(De=>{const Qe=De.filter(xn=>xn!==null),Ht=Qe[0];Ht&&(A(Qe.length===1?Ht:`${Qe.length} node updates failed (first: ${Ht})`),console.error("Tidy: some updateNodePosition calls failed",Qe))})}},[le,Q,ee,ke,S.overrides,Se,Oe,G,Y]);m.useEffect(()=>{const F=q=>{if(!(q.metaKey||q.ctrlKey)||!q.shiftKey||q.altKey||q.key.toLowerCase()!=="l"||xr(document.activeElement))return;q.preventDefault();const Z=w.current.length>0?"selection":"all";sn(Z)};return window.addEventListener("keydown",F),()=>window.removeEventListener("keydown",F)},[sn]);const oi=m.useCallback(()=>{const F=w.current.length>0?"selection":"all";sn(F)},[sn]);m.useEffect(()=>{const F=q=>{if(xr(document.activeElement)||document.querySelector('[data-testid="inline-edit-input"]'))return;const Z=Lue(q);if(Z===null)return;const $=Z==="select"?null:Z;if(V.current===$){R(null);return}R($)};return window.addEventListener("keydown",F),()=>window.removeEventListener("keydown",F)},[]),m.useEffect(()=>{const F=q=>{q.key==="Escape"&&(xr(document.activeElement)||document.querySelector('[data-testid="inline-edit-input"]')||(w.current.length>0&&d([]),g.current.length>0&&p([]),V.current!==null&&R(null)))};return window.addEventListener("keydown",F),()=>window.removeEventListener("keydown",F)},[]),m.useEffect(()=>{const F=q=>{if(q.key.toLowerCase()!=="f"||q.metaKey||q.ctrlKey||q.shiftKey||q.altKey||xr(document.activeElement)||document.querySelector('[data-testid="inline-edit-input"]'))return;const Z=w.current;if(Z.length===0)return;const $=W.current;$&&$.fitView({nodes:Z.map(_=>({id:_})),padding:.2,duration:200})};return window.addEventListener("keydown",F),()=>window.removeEventListener("keydown",F)},[]),m.useEffect(()=>{const F=q=>{if(q.key!=="1"||q.metaKey||q.ctrlKey||q.shiftKey||q.altKey||xr(document.activeElement)||document.querySelector('[data-testid="inline-edit-input"]'))return;const Z=W.current;if(!Z)return;const{x:$,y:_}=Z.getViewport();Z.setViewport({x:$,y:_,zoom:1},{duration:150})};return window.addEventListener("keydown",F),()=>window.removeEventListener("keydown",F)},[]);const rr=m.useCallback(F=>{var q,Z,$;switch(F){case"tool.select":R(null);return;case"tool.rectangle":R("rectangle");return;case"tool.ellipse":R("ellipse");return;case"tool.text":R("text");return;case"tool.sticky":R("sticky");return;case"tool.database":R("database");return;case"edit.undo":{if(!Or)return;(async()=>{try{const _=await Mt();_!=null&&_.entry&&await _.entry.undo()}catch(_){A(_ instanceof Error?_.message:String(_)),console.error("undo failed",_)}})();return}case"edit.redo":{if(!jn)return;(async()=>{try{const _=await Fr();_!=null&&_.entry&&await _.entry.do()}catch(_){A(_ instanceof Error?_.message:String(_)),console.error("redo failed",_)}})();return}case"edit.copy":{const _=w.current;if(_.length===0)return;nr([..._]);return}case"edit.paste":kn(null);return;case"edit.duplicate":{const _=w.current;if(_.length===0)return;nr([..._]),kn(null);return}case"edit.delete":{const _=w.current,oe=g.current;if(_.length===0&&oe.length===0)return;He([..._],[...oe]);return}case"edit.selectAll":d((ee??[]).map(_=>_.id)),p((ke??[]).map(_=>_.id));return;case"view.fit":{const _=W.current;if(!_)return;_.fitView({padding:.2,duration:200});return}case"view.zoomIn":{const _=W.current;if(!_)return;_.zoomIn({duration:150});return}case"view.zoomOut":{const _=W.current;if(!_)return;_.zoomOut({duration:150});return}case"view.zoom100":{const _=W.current;if(!_)return;const{x:oe,y:Ae}=_.getViewport();_.setViewport({x:oe,y:Ae,zoom:1},{duration:150});return}case"view.zoomToSelection":{const _=w.current;if(_.length===0)return;const oe=W.current;if(!oe)return;oe.fitView({nodes:_.map(Ae=>({id:Ae})),padding:.2,duration:200});return}case"layout.tidy":{const _=w.current.length>0?"selection":"all";sn(_);return}case"selection.deselect":w.current.length>0&&d([]),g.current.length>0&&p([]),V.current!==null&&R(null);return;case"help.commandPalette":B(!0);return;case"export.pdf":{(q=b.current)==null||q.exportPdf();return}case"export.png":{(Z=b.current)==null||Z.exportPng();return}case"session.reset":{($=x.current)==null||$.call(x);return}}},[Or,jn,Mt,Fr,nr,kn,He,ee,ke,sn]);m.useEffect(()=>{const F=q=>{(q.metaKey||q.ctrlKey)&&(q.shiftKey||q.altKey||q.key.toLowerCase()==="p"&&(q.preventDefault(),!xr(document.activeElement)&&rr("help.commandPalette")))};return window.addEventListener("keydown",F),()=>window.removeEventListener("keydown",F)},[rr]),m.useEffect(()=>{x.current=l??null},[l]);const $r=m.useCallback((F,q)=>{if(!le||!Q)return;const Z=ke==null?void 0:ke.find(oe=>oe.id===F),$=Z?{source:Z.source,target:Z.target,sourceHandle:Z.sourceHandle,targetHandle:Z.targetHandle,sourceHandleAutoPicked:Z.sourceHandleAutoPicked,targetHandleAutoPicked:Z.targetHandleAutoPicked,sourcePin:Z.sourcePin??null,targetPin:Z.targetPin??null}:null,_={...q.source!==void 0?{source:q.source}:{},...q.target!==void 0?{target:q.target}:{},...q.sourceHandle!==void 0?{sourceHandle:q.sourceHandle===null?void 0:q.sourceHandle}:{},...q.targetHandle!==void 0?{targetHandle:q.targetHandle===null?void 0:q.targetHandle}:{},...q.sourceHandleAutoPicked!==void 0?{sourceHandleAutoPicked:q.sourceHandleAutoPicked}:{},...q.targetHandleAutoPicked!==void 0?{targetHandleAutoPicked:q.targetHandleAutoPicked}:{},...q.sourcePin!==void 0?{sourcePin:q.sourcePin===null?void 0:q.sourcePin}:{},...q.targetPin!==void 0?{targetPin:q.targetPin===null?void 0:q.targetPin}:{}};if(Ne(F,_),A(null),Y(),$){const oe=$;G({do:async()=>{await Q.updateConnector(F,q)},undo:async()=>{await Q.updateConnector(F,oe)},coalesceKey:`connector:${F}:reconnect`})}Q.updateConnector(F,q).catch(oe=>{ot(F),$&&X(),A(oe instanceof Error?oe.message:String(oe)),console.error("updateConnector reconnect failed",oe)})},[le,Q,ke,Ne,ot,G,X,Y]),Ur=m.useCallback((F,q,Z)=>{if(!le||!Q)return;const $=ke==null?void 0:ke.find(Ae=>Ae.id===F),_=$?q==="source"?$.sourcePin:$.targetPin:void 0,oe=q==="source"?"sourcePin":"targetPin";if(Ne(F,{[oe]:Z}),A(null),Y(),$){const Ae={[oe]:_??null};G({do:async()=>{await Q.updateConnector(F,{[oe]:Z})},undo:async()=>{await Q.updateConnector(F,Ae)},coalesceKey:`connector:${F}:${oe}`})}Q.updateConnector(F,{[oe]:Z}).catch(Ae=>{ot(F),$&&X(),A(Ae instanceof Error?Ae.message:String(Ae)),console.error("updateConnector pin failed",Ae)})},[le,Q,ke,Ne,ot,G,X,Y]),Lo=m.useCallback((F,q)=>{if(!le||!Q)return;const Z=ke==null?void 0:ke.find(oe=>oe.id===F),$=Z?q==="source"?Z.sourcePin:Z.targetPin:void 0;if(!$)return;const _=q==="source"?"sourcePin":"targetPin";Ne(F,{[_]:void 0}),A(null),Y(),G({do:async()=>{await Q.updateConnector(F,{[_]:null})},undo:async()=>{await Q.updateConnector(F,{[_]:$})}}),Q.updateConnector(F,{[_]:null}).catch(oe=>{ot(F),X(),A(oe instanceof Error?oe.message:String(oe)),console.error("updateConnector unpin failed",oe)})},[le,Q,ke,Ne,ot,G,X,Y]),Je=n==null?void 0:n.flow,Wr=S.overrides,Nn=C.overrides,Xt=L.ids,Gr=P.ids,v1=m.useMemo(()=>{if(!Je||h.length===0)return[];const F=new Map(Je.nodes.map(Z=>[Z.id,Z])),q=[];for(const Z of h){const $=F.get(Z);if(!$)continue;const _=Wr[Z];if(!_){q.push($);continue}const oe=_.data?{...$.data,..._.data}:$.data;q.push({...$,..._,data:oe})}return q},[Je,h,Wr]),Dz=m.useMemo(()=>{if(!Je||f.length===0)return[];const F=new Map(Je.connectors.map(Z=>[Z.id,Z])),q=[];for(const Z of f){const $=F.get(Z);if(!$)continue;const _=Nn[Z];q.push(_?{...$,..._}:$)}return q},[Je,f,Nn]),Kh=m.useMemo(()=>{if(!Je)return null;if(!T)return Je.nodes;const F=new Map(Je.nodes.map($=>[$.id,$])),q=[],Z=new Set;for(const $ of T){const _=F.get($);_&&(q.push(_),Z.add($))}for(const $ of Je.nodes)Z.has($.id)||q.push($);return q},[Je,T]),Io=m.useMemo(()=>{const F=Kh??(Je==null?void 0:Je.nodes)??null;return F?Xt.size===0?F:F.filter(q=>!Xt.has(q.id)):null},[Kh,Je,Xt]),ta=m.useMemo(()=>{const F=(Je==null?void 0:Je.connectors)??null;return F?Gr.size===0&&Xt.size===0?F:F.filter(q=>!Gr.has(q.id)&&!Xt.has(q.source)&&!Xt.has(q.target)):null},[Je,Gr,Xt]);if(!c)return y.jsxs("div",{className:"flex h-full w-full flex-col items-center justify-center gap-2 bg-background p-6 text-center",children:[y.jsxs("p",{className:"text-sm font-medium",children:["Unknown demo: ",e]}),y.jsx("p",{className:"text-xs text-muted-foreground",children:"The slug may have been removed. Re-register from the project repo to bring it back."})]});if(r&&!n)return y.jsx("div",{className:"flex h-full w-full items-center justify-center text-sm text-muted-foreground",children:"Loading demo…"});const id=h[0],ii=id?a[id]:void 0;return y.jsxs("div",{className:"relative h-full w-full",children:[n&&!n.valid?y.jsxs("div",{"data-testid":"demo-error-banner",className:"absolute inset-x-0 top-0 z-10 border-b border-rose-500/40 bg-rose-50 px-4 py-2 text-xs text-rose-900 shadow-xs dark:bg-rose-950/40 dark:text-rose-100",children:[y.jsx("span",{className:"font-medium uppercase tracking-wide",children:"Invalid demo: "}),y.jsx("span",{className:"font-mono",children:n.error})]}):null,Je&&Q?y.jsx(o6e,{ref:b,mode:"edit",adapter:Q,projectId:le??void 0,enableEmbed:!1,onExportToCloud:le?()=>we(!0):void 0,onRestartDemo:l,nodes:Io??Je.nodes,connectors:ta??Je.connectors,selectedNodeIds:h,selectedConnectorIds:f,onSelectionChange:ge,runtime:{runs:o,statuses:a,pendingOverrides:{nodes:Wr,connectors:Nn}},onPlayNode:s,onNodePositionChange:de,onNodePositionsChange:Pe,onNodeResize:qe,onNodeResizeEnd:We,onHtmlNodeFitToContent:Rt,onMultiResize:st,onNodeNameChange:yr,onNodeDescriptionChange:Mo,onConnectorLabelChange:ri,onCreateShapeNode:an,onCreateImageFromFile:le?Ct:void 0,onRetryImageUpload:le?Qi:void 0,onCreateHtmlNode:le?bo:void 0,iconPickerOpen:Tn.open,onOpenIconPicker:le?g1:void 0,onCloseIconPicker:le?kr:void 0,onPickIcon:le?ea:void 0,onRequestIconReplace:le?Ji:void 0,onCreateConnector:mn,onReconnectConnector:$r,onPinEndpoint:le?Ur:void 0,onUnpinEndpoint:le?Lo:void 0,onReorderNode:k1,onDeleteNode:m1,onCopyNode:F=>nr([F]),onPasteAt:kn,onCopySelection:le?nr:void 0,onPasteSelection:le?()=>kn(null):void 0,hasClipboard:x1,selectedNodes:v1,selectedConnectors:Dz,onStyleNode:Kt,onStyleNodePreview:Jn,onStyleNodes:p1,onStyleNodesPreview:zt,onStyleConnector:y1,onStyleConnectorPreview:zn,onRfInit:H,onTidy:ee?oi:void 0,onCreateAndConnectFromPane:Vr,pendingEditNodeId:k,activeShape:U,onSelectShape:R,statusReport:ii,onNameChange:yr,onDescriptionChange:Mo,onDetailChange:er,onIconChange:qr,autoFitView:!0,autoFitViewSignal:D}):y.jsx("div",{className:"flex h-full w-full items-center justify-center text-sm text-muted-foreground",children:"No demo data yet."}),z?y.jsxs("div",{"data-testid":"edit-error-banner",className:"absolute inset-x-0 bottom-4 z-20 mx-auto w-fit max-w-[80%] rounded-md border border-rose-500/50 bg-rose-50 px-3 py-2 text-xs text-rose-900 shadow-md dark:bg-rose-950/60 dark:text-rose-100",children:[y.jsx("span",{className:"font-medium",children:"Couldn't save change: "}),y.jsx("span",{className:"font-mono",children:z}),y.jsx("button",{type:"button",className:"ml-3 underline underline-offset-2",onClick:()=>A(null),children:"Dismiss"})]}):null,y.jsx(P6e,{open:O,onOpenChange:B,runCommand:rr,ctx:{hasSelection:h.length>0||f.length>0,canUndo:Or,canRedo:jn,hasClipboard:x1,canExportDemo:!!le,canResetSession:!!l}}),le?y.jsx(K6e,{open:fe,onOpenChange:we,projectId:le,onCapturePreview:()=>{var F;return((F=b.current)==null?void 0:F.capturePreview())??Promise.resolve(void 0)}}):null]})}const DB="npx seeflow register --path .";function S8e(){const[e,t]=m.useState(!1),n=async()=>{try{await navigator.clipboard.writeText(DB),t(!0),setTimeout(()=>t(!1),1200)}catch(r){console.error("[empty-state] copy failed",r)}};return y.jsx("div",{"data-testid":"seeflow-empty-state",className:"flex h-full w-full items-center justify-center bg-background p-6",children:y.jsxs("div",{className:"flex max-w-lg flex-col items-center gap-6 text-center",children:[y.jsx("div",{className:"flex h-12 w-12 items-center justify-center rounded-full bg-muted",children:y.jsx(x2,{className:"h-6 w-6 text-muted-foreground"})}),y.jsxs("div",{className:"space-y-2",children:[y.jsx("h1",{className:"text-2xl font-semibold tracking-tight text-foreground",children:"No demos registered yet"}),y.jsxs("p",{className:"text-sm text-muted-foreground",children:["Point SeeFlow at any folder containing a"," ",y.jsx("code",{className:"rounded bg-muted px-1.5 py-0.5 text-xs",children:".seeflow/flow.json"})," file and it'll appear here."]})]}),y.jsxs("div",{className:"flex w-full items-center gap-2 rounded-md border border-border bg-card px-3 py-2 font-mono text-sm",children:[y.jsx("span",{className:"text-muted-foreground select-none",children:"$"}),y.jsx("code",{className:"flex-1 truncate text-left",children:DB}),y.jsx(Nt,{type:"button",variant:"ghost",size:"sm",onClick:n,"aria-label":"Copy register command",children:e?y.jsx(fo,{className:"h-4 w-4"}):y.jsx(ou,{className:"h-4 w-4"})})]})]})})}function L8e({demos:e}){return e.length===0?y.jsx(S8e,{}):y.jsx("div",{className:"flex h-full w-full items-start justify-center overflow-y-auto bg-background p-8",children:y.jsxs("div",{"data-testid":"studio-home-picker",className:"flex w-full max-w-2xl flex-col gap-6 pt-8",children:[y.jsxs("div",{className:"space-y-1",children:[y.jsx("h1",{className:"text-2xl font-semibold tracking-tight",children:"Open a demo"}),y.jsxs("p",{className:"text-sm text-muted-foreground",children:[e.length," demos registered — pick one to load its canvas."]})]}),y.jsx("ul",{className:"flex flex-col gap-2",children:e.map(t=>y.jsx("li",{children:y.jsxs("button",{type:"button",onClick:()=>qu(`/d/${t.slug}`),"data-testid":`studio-home-demo-${t.slug}`,className:"flex w-full flex-col items-start gap-0.5 rounded-lg border border-border bg-card px-4 py-3 text-left transition-colors hover:border-input",style:{boxShadow:"var(--shadow-card)"},children:[y.jsx("span",{className:"text-sm font-medium",children:t.name}),y.jsx("span",{className:"truncate text-xs text-muted-foreground",children:t.repoPath})]})},t.id))})]})})}const I8e=e=>{if(!e.startsWith("/d/"))return null;const t=e.slice(3);return t.length>0?decodeURIComponent(t):null};function E8e(){const e=s6e(),{demos:t,refresh:n}=d6e(),r=I8e(e);M6e({onRegistryReload:n});const o=r?(t??[]).find(P=>P.slug===r):void 0,i=(o==null?void 0:o.id)??null,{detail:a,loading:s,refresh:l,applyDetail:c}=u6e(i),{runs:h,apply:d}=k6e(i),{events:f,apply:p}=y6e(i),{statusByNode:k,apply:v,reset:w}=w6e(i),g=m.useCallback(()=>{w(),l(),n()},[l,n,w]),M=m.useCallback(P=>{if(!i||!o)return;const T={id:i,slug:o.slug,filePath:""},E=P.valid?{...T,name:P.flow.name??o.name,flow:P.flow,valid:!0,error:null}:{...T,name:o.name,flow:null,valid:!1,error:P.error};c(E)},[i,o,c]),x=m.useCallback(P=>{d(P),p(P),v(P)},[d,p,v]);b6e(i,{onHello:g,onFlowReload:M,onEvent:x});const b=m.useCallback(async()=>{if(i)try{await Sne(i)}catch(P){console.error("Failed to restart demo:",P)}},[i]),S=m.useCallback(P=>{wB(P.id),n()},[n]),C=m.useCallback(async P=>{await n(),i===P&&qu("/")},[n,i]);m.useEffect(()=>{if(e!=="/"||t===null)return;const P=L6e(t,S6e());P&&qu(`/d/${P.slug}`)},[e,t]),m.useEffect(()=>{o&&wB(o.id)},[o]);const L=m.useCallback(P=>{i&&Lne(i,P).catch(T=>{d({type:"node:error",nodeId:P,message:T instanceof Error?T.message:String(T),ts:Date.now()})})},[i,d]);return t===null?y.jsx("div",{className:"flex h-full w-full items-center justify-center bg-background text-sm text-muted-foreground",children:"Loading…"}):y.jsx(L2,{delayDuration:150,children:y.jsxs("div",{className:"flex h-full w-full flex-col bg-background text-foreground",children:[y.jsx(c6e,{demos:t,currentSlug:r??void 0,onProjectCreated:S,onProjectUnregistered:C}),y.jsx("main",{className:"min-h-0 flex-1",children:r?y.jsx(C8e,{slug:r,demos:t,detail:a,loading:s,runs:h,nodeEvents:f,statusByNode:k,onPlayNode:L,onRestartDemo:i?b:void 0}):y.jsx(L8e,{demos:t})})]})})}const xJ=document.getElementById("root");if(!xJ)throw new Error("Root element #root not found");cT.createRoot(xJ).render(y.jsx(oo.StrictMode,{children:y.jsx(E8e,{})}));export{j3e as _,LP as c,uh as g,R8e as z};
|