From 11f216deb5df2222de2a1b5d034ae9fe77e2d490 Mon Sep 17 00:00:00 2001 From: zombieyang Date: Sun, 8 Jun 2025 22:01:40 +0800 Subject: [PATCH] 1.8.5 --- changelog.md | 5 ++++- javascript/sdppp-comfy.js | 4 ++-- package.json | 2 +- plugins/photoshop/dist/photoshop-internal.js | 6 +++--- plugins/photoshop/manifest.json | 4 ++-- pyproject.toml | 2 +- static/sd-ppp_PS.ccx | Bin 527124 -> 527199 bytes 7 files changed, 13 insertions(+), 10 deletions(-) diff --git a/changelog.md b/changelog.md index f7721fb..5e2c631 100644 --- a/changelog.md +++ b/changelog.md @@ -1,3 +1,7 @@ +## [1.8.5] - 2025-06-08 +* fix: style error causing last textfield be hidden. +* feature: support layer prefix setting in properties panel of `SendImagesToPS` node. + ## [1.8.4] - 2025-05-31 * fix: error when queuePrompt #167 * fix: Get/send slow in some cases @@ -6,7 +10,6 @@ * optimization: add status bar tips * feature: open mask edit for LoadImage in left sidebar - ## [1.8.3] - 2025-05-18 * fix: The slider widget not worked well. * fix: When running with xN, only the last previewed image will be sent. diff --git a/javascript/sdppp-comfy.js b/javascript/sdppp-comfy.js index 0247895..aec7e9e 100644 --- a/javascript/sdppp-comfy.js +++ b/javascript/sdppp-comfy.js @@ -8,14 +8,14 @@ Error generating stack: `+i.message+` `+i.stack}return{value:e,source:t,stack:o,digest:null}}function rb(e,t,r){return{value:e,source:null,stack:r??null,digest:t??null}}function Lb(e,t){try{console.error(t.value)}catch(r){setTimeout(function(){throw r})}}var gz=typeof WeakMap=="function"?WeakMap:Map;function gT(e,t,r){r=ma(-1,r),r.tag=3,r.payload={element:null};var n=t.value;return r.callback=function(){bg||(bg=!0,Kb=n),Lb(e,t)},r}function hT(e,t,r){r=ma(-1,r),r.tag=3;var n=e.type.getDerivedStateFromError;if(typeof n=="function"){var o=t.value;r.payload=function(){return n(o)},r.callback=function(){Lb(e,t)}}var i=e.stateNode;return i!==null&&typeof i.componentDidCatch=="function"&&(r.callback=function(){Lb(e,t),typeof n!="function"&&(us===null?us=new Set([this]):us.add(this));var a=t.stack;this.componentDidCatch(t.value,{componentStack:a!==null?a:""})}),r}function __(e,t,r){var n=e.pingCache;if(n===null){n=e.pingCache=new gz;var o=new Set;n.set(t,o)}else o=n.get(t),o===void 0&&(o=new Set,n.set(t,o));o.has(r)||(o.add(r),e=Tz.bind(null,e,t,r),t.then(e,e))}function P_(e){do{var t;if((t=e.tag===13)&&(t=e.memoizedState,t=t!==null?t.dehydrated!==null:!0),t)return e;e=e.return}while(e!==null);return null}function T_(e,t,r,n,o){return(e.mode&1)===0?(e===t?e.flags|=65536:(e.flags|=128,r.flags|=131072,r.flags&=-52805,r.tag===1&&(r.alternate===null?r.tag=17:(t=ma(-1,1),t.tag=2,cs(r,t,1))),r.lanes|=1),e):(e.flags|=65536,e.lanes=o,e)}var hz=xa.ReactCurrentOwner,Jn=!1;function Vn(e,t,r,n){t.child=e===null?UP(t,null,r,n):Bc(t,e.child,r,n)}function N_(e,t,r,n,o){r=r.render;var i=t.ref;return Mc(t,o),n=OS(e,t,r,n,i,o),r=_S(),e!==null&&!Jn?(t.updateQueue=e.updateQueue,t.flags&=-2053,e.lanes&=~o,ya(e,t,o)):(yr&&r&&mS(t),t.flags|=1,Vn(e,t,n,o),t.child)}function I_(e,t,r,n,o){if(e===null){var i=r.type;return typeof i=="function"&&!FS(i)&&i.defaultProps===void 0&&r.compare===null&&r.defaultProps===void 0?(t.tag=15,t.type=i,vT(e,t,i,n,o)):(e=Zm(r.type,null,n,t,t.mode,o),e.ref=t.ref,e.return=t,t.child=e)}if(i=e.child,(e.lanes&o)===0){var a=i.memoizedProps;if(r=r.compare,r=r!==null?r:Qf,r(a,n)&&e.ref===t.ref)return ya(e,t,o)}return t.flags|=1,e=ds(i,n),e.ref=t.ref,e.return=t,t.child=e}function vT(e,t,r,n,o){if(e!==null){var i=e.memoizedProps;if(Qf(i,n)&&e.ref===t.ref)if(Jn=!1,t.pendingProps=n=i,(e.lanes&o)!==0)(e.flags&131072)!==0&&(Jn=!0);else return t.lanes=e.lanes,ya(e,t,o)}return zb(e,t,r,n,o)}function yT(e,t,r){var n=t.pendingProps,o=n.children,i=e!==null?e.memoizedState:null;if(n.mode==="hidden")if((t.mode&1)===0)t.memoizedState={baseLanes:0,cachePool:null,transitions:null},er(Ic,go),go|=r;else{if((r&1073741824)===0)return e=i!==null?i.baseLanes|r:r,t.lanes=t.childLanes=1073741824,t.memoizedState={baseLanes:e,cachePool:null,transitions:null},t.updateQueue=null,er(Ic,go),go|=e,null;t.memoizedState={baseLanes:0,cachePool:null,transitions:null},n=i!==null?i.baseLanes:r,er(Ic,go),go|=n}else i!==null?(n=i.baseLanes|r,t.memoizedState=null):n=r,er(Ic,go),go|=n;return Vn(e,t,o,r),t.child}function xT(e,t){var r=t.ref;(e===null&&r!==null||e!==null&&e.ref!==r)&&(t.flags|=512,t.flags|=2097152)}function zb(e,t,r,n,o){var i=eo(r)?ml:Pn.current;return i=zc(t,i),Mc(t,o),r=OS(e,t,r,n,i,o),n=_S(),e!==null&&!Jn?(t.updateQueue=e.updateQueue,t.flags&=-2053,e.lanes&=~o,ya(e,t,o)):(yr&&n&&mS(t),t.flags|=1,Vn(e,t,r,o),t.child)}function $_(e,t,r,n,o){if(eo(r)){var i=!0;ug(t)}else i=!1;if(Mc(t,o),t.stateNode===null)Ym(e,t),mT(t,r,n),Fb(t,r,n,o),n=!0;else if(e===null){var a=t.stateNode,s=t.memoizedProps;a.props=s;var l=a.context,c=r.contextType;typeof c=="object"&&c!==null?c=Wo(c):(c=eo(r)?ml:Pn.current,c=zc(t,c));var u=r.getDerivedStateFromProps,f=typeof u=="function"||typeof a.getSnapshotBeforeUpdate=="function";f||typeof a.UNSAFE_componentWillReceiveProps!="function"&&typeof a.componentWillReceiveProps!="function"||(s!==n||l!==c)&&O_(t,a,n,c),es=!1;var p=t.memoizedState;a.state=p,gg(t,n,a,o),l=t.memoizedState,s!==n||p!==l||Zn.current||es?(typeof u=="function"&&(Mb(t,r,u,n),l=t.memoizedState),(s=es||R_(t,r,s,n,p,l,c))?(f||typeof a.UNSAFE_componentWillMount!="function"&&typeof a.componentWillMount!="function"||(typeof a.componentWillMount=="function"&&a.componentWillMount(),typeof a.UNSAFE_componentWillMount=="function"&&a.UNSAFE_componentWillMount()),typeof a.componentDidMount=="function"&&(t.flags|=4194308)):(typeof a.componentDidMount=="function"&&(t.flags|=4194308),t.memoizedProps=n,t.memoizedState=l),a.props=n,a.state=l,a.context=c,n=s):(typeof a.componentDidMount=="function"&&(t.flags|=4194308),n=!1)}else{a=t.stateNode,GP(e,t),s=t.memoizedProps,c=t.type===t.elementType?s:di(t.type,s),a.props=c,f=t.pendingProps,p=a.context,l=r.contextType,typeof l=="object"&&l!==null?l=Wo(l):(l=eo(r)?ml:Pn.current,l=zc(t,l));var g=r.getDerivedStateFromProps;(u=typeof g=="function"||typeof a.getSnapshotBeforeUpdate=="function")||typeof a.UNSAFE_componentWillReceiveProps!="function"&&typeof a.componentWillReceiveProps!="function"||(s!==f||p!==l)&&O_(t,a,n,l),es=!1,p=t.memoizedState,a.state=p,gg(t,n,a,o);var h=t.memoizedState;s!==f||p!==h||Zn.current||es?(typeof g=="function"&&(Mb(t,r,g,n),h=t.memoizedState),(c=es||R_(t,r,c,n,p,h,l)||!1)?(u||typeof a.UNSAFE_componentWillUpdate!="function"&&typeof a.componentWillUpdate!="function"||(typeof a.componentWillUpdate=="function"&&a.componentWillUpdate(n,h,l),typeof a.UNSAFE_componentWillUpdate=="function"&&a.UNSAFE_componentWillUpdate(n,h,l)),typeof a.componentDidUpdate=="function"&&(t.flags|=4),typeof a.getSnapshotBeforeUpdate=="function"&&(t.flags|=1024)):(typeof a.componentDidUpdate!="function"||s===e.memoizedProps&&p===e.memoizedState||(t.flags|=4),typeof a.getSnapshotBeforeUpdate!="function"||s===e.memoizedProps&&p===e.memoizedState||(t.flags|=1024),t.memoizedProps=n,t.memoizedState=h),a.props=n,a.state=h,a.context=l,n=c):(typeof a.componentDidUpdate!="function"||s===e.memoizedProps&&p===e.memoizedState||(t.flags|=4),typeof a.getSnapshotBeforeUpdate!="function"||s===e.memoizedProps&&p===e.memoizedState||(t.flags|=1024),n=!1)}return Wb(e,t,r,n,i,o)}function Wb(e,t,r,n,o,i){xT(e,t);var a=(t.flags&128)!==0;if(!n&&!a)return o&&v_(t,r,!1),ya(e,t,i);n=t.stateNode,hz.current=t;var s=a&&typeof r.getDerivedStateFromError!="function"?null:n.render();return t.flags|=1,e!==null&&a?(t.child=Bc(t,e.child,null,i),t.child=Bc(t,null,s,i)):Vn(e,t,s,i),t.memoizedState=n.state,o&&v_(t,r,!0),t.child}function bT(e){var t=e.stateNode;t.pendingContext?h_(e,t.pendingContext,t.pendingContext!==t.context):t.context&&h_(e,t.context,!1),CS(e,t.containerInfo)}function D_(e,t,r,n,o){return Wc(),hS(o),t.flags|=256,Vn(e,t,r,n),t.child}var Bb={dehydrated:null,treeContext:null,retryLane:0};function jb(e){return{baseLanes:e,cachePool:null,transitions:null}}function ST(e,t,r){var n=t.pendingProps,o=Cr.current,i=!1,a=(t.flags&128)!==0,s;if((s=a)||(s=e!==null&&e.memoizedState===null?!1:(o&2)!==0),s?(i=!0,t.flags&=-129):(e===null||e.memoizedState!==null)&&(o|=1),er(Cr,o&1),e===null)return Ab(t),e=t.memoizedState,e!==null&&(e=e.dehydrated,e!==null)?((t.mode&1)===0?t.lanes=1:e.data==="$!"?t.lanes=8:t.lanes=1073741824,null):(a=n.children,e=n.fallback,i?(n=t.mode,i=t.child,a={mode:"hidden",children:a},(n&1)===0&&i!==null?(i.childLanes=0,i.pendingProps=a):i=Ag(a,n,0,null),e=pl(e,n,r,null),i.return=t,e.return=t,i.sibling=e,t.child=i,t.child.memoizedState=jb(r),t.memoizedState=Bb,e):NS(t,a));if(o=e.memoizedState,o!==null&&(s=o.dehydrated,s!==null))return vz(e,t,a,n,s,o,r);if(i){i=n.fallback,a=t.mode,o=e.child,s=o.sibling;var l={mode:"hidden",children:n.children};return(a&1)===0&&t.child!==o?(n=t.child,n.childLanes=0,n.pendingProps=l,t.deletions=null):(n=ds(o,l),n.subtreeFlags=o.subtreeFlags&14680064),s!==null?i=ds(s,i):(i=pl(i,a,r,null),i.flags|=2),i.return=t,n.return=t,n.sibling=i,t.child=n,n=i,i=t.child,a=e.child.memoizedState,a=a===null?jb(r):{baseLanes:a.baseLanes|r,cachePool:null,transitions:a.transitions},i.memoizedState=a,i.childLanes=e.childLanes&~r,t.memoizedState=Bb,n}return i=e.child,e=i.sibling,n=ds(i,{mode:"visible",children:n.children}),(t.mode&1)===0&&(n.lanes=r),n.return=t,n.sibling=null,e!==null&&(r=t.deletions,r===null?(t.deletions=[e],t.flags|=16):r.push(e)),t.child=n,t.memoizedState=null,n}function NS(e,t){return t=Ag({mode:"visible",children:t},e.mode,0,null),t.return=e,e.child=t}function Bm(e,t,r,n){return n!==null&&hS(n),Bc(t,e.child,null,r),e=NS(t,t.pendingProps.children),e.flags|=2,t.memoizedState=null,e}function vz(e,t,r,n,o,i,a){if(r)return t.flags&256?(t.flags&=-257,n=rb(Error(ge(422))),Bm(e,t,a,n)):t.memoizedState!==null?(t.child=e.child,t.flags|=128,null):(i=n.fallback,o=t.mode,n=Ag({mode:"visible",children:n.children},o,0,null),i=pl(i,o,a,null),i.flags|=2,n.return=t,i.return=t,n.sibling=i,t.child=n,(t.mode&1)!==0&&Bc(t,e.child,null,a),t.child.memoizedState=jb(a),t.memoizedState=Bb,i);if((t.mode&1)===0)return Bm(e,t,a,null);if(o.data==="$!"){if(n=o.nextSibling&&o.nextSibling.dataset,n)var s=n.dgst;return n=s,i=Error(ge(419)),n=rb(i,n,void 0),Bm(e,t,a,n)}if(s=(a&e.childLanes)!==0,Jn||s){if(n=an,n!==null){switch(a&-a){case 4:o=2;break;case 16:o=8;break;case 64:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:case 4194304:case 8388608:case 16777216:case 33554432:case 67108864:o=32;break;case 536870912:o=268435456;break;default:o=0}o=(o&(n.suspendedLanes|a))!==0?0:o,o!==0&&o!==i.retryLane&&(i.retryLane=o,va(e,o),hi(n,e,o,-1))}return MS(),n=rb(Error(ge(421))),Bm(e,t,a,n)}return o.data==="$?"?(t.flags|=128,t.child=e.child,t=Nz.bind(null,e),o._reactRetry=t,null):(e=i.treeContext,ho=ls(o.nextSibling),vo=t,yr=!0,mi=null,e!==null&&(Mo[Fo++]=da,Mo[Fo++]=pa,Mo[Fo++]=gl,da=e.id,pa=e.overflow,gl=t),t=NS(t,n.children),t.flags|=4096,t)}function A_(e,t,r){e.lanes|=t;var n=e.alternate;n!==null&&(n.lanes|=t),kb(e.return,t,r)}function nb(e,t,r,n,o){var i=e.memoizedState;i===null?e.memoizedState={isBackwards:t,rendering:null,renderingStartTime:0,last:n,tail:r,tailMode:o}:(i.isBackwards=t,i.rendering=null,i.renderingStartTime=0,i.last=n,i.tail=r,i.tailMode=o)}function CT(e,t,r){var n=t.pendingProps,o=n.revealOrder,i=n.tail;if(Vn(e,t,n.children,r),n=Cr.current,(n&2)!==0)n=n&1|2,t.flags|=128;else{if(e!==null&&(e.flags&128)!==0)e:for(e=t.child;e!==null;){if(e.tag===13)e.memoizedState!==null&&A_(e,r,t);else if(e.tag===19)A_(e,r,t);else if(e.child!==null){e.child.return=e,e=e.child;continue}if(e===t)break e;for(;e.sibling===null;){if(e.return===null||e.return===t)break e;e=e.return}e.sibling.return=e.return,e=e.sibling}n&=1}if(er(Cr,n),(t.mode&1)===0)t.memoizedState=null;else switch(o){case"forwards":for(r=t.child,o=null;r!==null;)e=r.alternate,e!==null&&hg(e)===null&&(o=r),r=r.sibling;r=o,r===null?(o=t.child,t.child=null):(o=r.sibling,r.sibling=null),nb(t,!1,o,r,i);break;case"backwards":for(r=null,o=t.child,t.child=null;o!==null;){if(e=o.alternate,e!==null&&hg(e)===null){t.child=o;break}e=o.sibling,o.sibling=r,r=o,o=e}nb(t,!0,r,null,i);break;case"together":nb(t,!1,null,null,void 0);break;default:t.memoizedState=null}return t.child}function Ym(e,t){(t.mode&1)===0&&e!==null&&(e.alternate=null,t.alternate=null,t.flags|=2)}function ya(e,t,r){if(e!==null&&(t.dependencies=e.dependencies),vl|=t.lanes,(r&t.childLanes)===0)return null;if(e!==null&&t.child!==e.child)throw Error(ge(153));if(t.child!==null){for(e=t.child,r=ds(e,e.pendingProps),t.child=r,r.return=t;e.sibling!==null;)e=e.sibling,r=r.sibling=ds(e,e.pendingProps),r.return=t;r.sibling=null}return t.child}function yz(e,t,r){switch(t.tag){case 3:bT(t),Wc();break;case 5:KP(t);break;case 1:eo(t.type)&&ug(t);break;case 4:CS(t,t.stateNode.containerInfo);break;case 10:var n=t.type._context,o=t.memoizedProps.value;er(pg,n._currentValue),n._currentValue=o;break;case 13:if(n=t.memoizedState,n!==null)return n.dehydrated!==null?(er(Cr,Cr.current&1),t.flags|=128,null):(r&t.child.childLanes)!==0?ST(e,t,r):(er(Cr,Cr.current&1),e=ya(e,t,r),e!==null?e.sibling:null);er(Cr,Cr.current&1);break;case 19:if(n=(r&t.childLanes)!==0,(e.flags&128)!==0){if(n)return CT(e,t,r);t.flags|=128}if(o=t.memoizedState,o!==null&&(o.rendering=null,o.tail=null,o.lastEffect=null),er(Cr,Cr.current),n)break;return null;case 22:case 23:return t.lanes=0,yT(e,t,r)}return ya(e,t,r)}var wT,Vb,ET,RT;wT=function(e,t){for(var r=t.child;r!==null;){if(r.tag===5||r.tag===6)e.appendChild(r.stateNode);else if(r.tag!==4&&r.child!==null){r.child.return=r,r=r.child;continue}if(r===t)break;for(;r.sibling===null;){if(r.return===null||r.return===t)return;r=r.return}r.sibling.return=r.return,r=r.sibling}};Vb=function(){};ET=function(e,t,r,n){var o=e.memoizedProps;if(o!==n){e=t.stateNode,fl(ji.current);var i=null;switch(r){case"input":o=fb(e,o),n=fb(e,n),i=[];break;case"select":o=Er({},o,{value:void 0}),n=Er({},n,{value:void 0}),i=[];break;case"textarea":o=mb(e,o),n=mb(e,n),i=[];break;default:typeof o.onClick!="function"&&typeof n.onClick=="function"&&(e.onclick=lg)}hb(r,n);var a;r=null;for(c in o)if(!n.hasOwnProperty(c)&&o.hasOwnProperty(c)&&o[c]!=null)if(c==="style"){var s=o[c];for(a in s)s.hasOwnProperty(a)&&(r||(r={}),r[a]="")}else c!=="dangerouslySetInnerHTML"&&c!=="children"&&c!=="suppressContentEditableWarning"&&c!=="suppressHydrationWarning"&&c!=="autoFocus"&&(Hf.hasOwnProperty(c)?i||(i=[]):(i=i||[]).push(c,null));for(c in n){var l=n[c];if(s=o?.[c],n.hasOwnProperty(c)&&l!==s&&(l!=null||s!=null))if(c==="style")if(s){for(a in s)!s.hasOwnProperty(a)||l&&l.hasOwnProperty(a)||(r||(r={}),r[a]="");for(a in l)l.hasOwnProperty(a)&&s[a]!==l[a]&&(r||(r={}),r[a]=l[a])}else r||(i||(i=[]),i.push(c,r)),r=l;else c==="dangerouslySetInnerHTML"?(l=l?l.__html:void 0,s=s?s.__html:void 0,l!=null&&s!==l&&(i=i||[]).push(c,l)):c==="children"?typeof l!="string"&&typeof l!="number"||(i=i||[]).push(c,""+l):c!=="suppressContentEditableWarning"&&c!=="suppressHydrationWarning"&&(Hf.hasOwnProperty(c)?(l!=null&&c==="onScroll"&&or("scroll",e),i||s===l||(i=[])):(i=i||[]).push(c,l))}r&&(i=i||[]).push("style",r);var c=i;(t.updateQueue=c)&&(t.flags|=4)}};RT=function(e,t,r,n){r!==n&&(t.flags|=4)};function Pf(e,t){if(!yr)switch(e.tailMode){case"hidden":t=e.tail;for(var r=null;t!==null;)t.alternate!==null&&(r=t),t=t.sibling;r===null?e.tail=null:r.sibling=null;break;case"collapsed":r=e.tail;for(var n=null;r!==null;)r.alternate!==null&&(n=r),r=r.sibling;n===null?t||e.tail===null?e.tail=null:e.tail.sibling=null:n.sibling=null}}function On(e){var t=e.alternate!==null&&e.alternate.child===e.child,r=0,n=0;if(t)for(var o=e.child;o!==null;)r|=o.lanes|o.childLanes,n|=o.subtreeFlags&14680064,n|=o.flags&14680064,o.return=e,o=o.sibling;else for(o=e.child;o!==null;)r|=o.lanes|o.childLanes,n|=o.subtreeFlags,n|=o.flags,o.return=e,o=o.sibling;return e.subtreeFlags|=n,e.childLanes=r,t}function xz(e,t,r){var n=t.pendingProps;switch(gS(t),t.tag){case 2:case 16:case 15:case 0:case 11:case 7:case 8:case 12:case 9:case 14:return On(t),null;case 1:return eo(t.type)&&cg(),On(t),null;case 3:return n=t.stateNode,jc(),ir(Zn),ir(Pn),ES(),n.pendingContext&&(n.context=n.pendingContext,n.pendingContext=null),(e===null||e.child===null)&&(zm(t)?t.flags|=4:e===null||e.memoizedState.isDehydrated&&(t.flags&256)===0||(t.flags|=1024,mi!==null&&(Qb(mi),mi=null))),Vb(e,t),On(t),null;case 5:wS(t);var o=fl(rd.current);if(r=t.type,e!==null&&t.stateNode!=null)ET(e,t,r,n,o),e.ref!==t.ref&&(t.flags|=512,t.flags|=2097152);else{if(!n){if(t.stateNode===null)throw Error(ge(166));return On(t),null}if(e=fl(ji.current),zm(t)){n=t.stateNode,r=t.type;var i=t.memoizedProps;switch(n[Wi]=t,n[ed]=i,e=(t.mode&1)!==0,r){case"dialog":or("cancel",n),or("close",n);break;case"iframe":case"object":case"embed":or("load",n);break;case"video":case"audio":for(o=0;o<\/script>",e=e.removeChild(e.firstChild)):typeof n.is=="string"?e=a.createElement(r,{is:n.is}):(e=a.createElement(r),r==="select"&&(a=e,n.multiple?a.multiple=!0:n.size&&(a.size=n.size))):e=a.createElementNS(e,r),e[Wi]=t,e[ed]=n,wT(e,t,!1,!1),t.stateNode=e;e:{switch(a=vb(r,n),r){case"dialog":or("cancel",e),or("close",e),o=n;break;case"iframe":case"object":case"embed":or("load",e),o=n;break;case"video":case"audio":for(o=0;oHc&&(t.flags|=128,n=!0,Pf(i,!1),t.lanes=4194304)}else{if(!n)if(e=hg(a),e!==null){if(t.flags|=128,n=!0,r=e.updateQueue,r!==null&&(t.updateQueue=r,t.flags|=4),Pf(i,!0),i.tail===null&&i.tailMode==="hidden"&&!a.alternate&&!yr)return On(t),null}else 2*Fr()-i.renderingStartTime>Hc&&r!==1073741824&&(t.flags|=128,n=!0,Pf(i,!1),t.lanes=4194304);i.isBackwards?(a.sibling=t.child,t.child=a):(r=i.last,r!==null?r.sibling=a:t.child=a,i.last=a)}return i.tail!==null?(t=i.tail,i.rendering=t,i.tail=t.sibling,i.renderingStartTime=Fr(),t.sibling=null,r=Cr.current,er(Cr,n?r&1|2:r&1),t):(On(t),null);case 22:case 23:return kS(),n=t.memoizedState!==null,e!==null&&e.memoizedState!==null!==n&&(t.flags|=8192),n&&(t.mode&1)!==0?(go&1073741824)!==0&&(On(t),t.subtreeFlags&6&&(t.flags|=8192)):On(t),null;case 24:return null;case 25:return null}throw Error(ge(156,t.tag))}function bz(e,t){switch(gS(t),t.tag){case 1:return eo(t.type)&&cg(),e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 3:return jc(),ir(Zn),ir(Pn),ES(),e=t.flags,(e&65536)!==0&&(e&128)===0?(t.flags=e&-65537|128,t):null;case 5:return wS(t),null;case 13:if(ir(Cr),e=t.memoizedState,e!==null&&e.dehydrated!==null){if(t.alternate===null)throw Error(ge(340));Wc()}return e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 19:return ir(Cr),null;case 4:return jc(),null;case 10:return xS(t.type._context),null;case 22:case 23:return kS(),null;case 24:return null;default:return null}}var jm=!1,_n=!1,Sz=typeof WeakSet=="function"?WeakSet:Set,qe=null;function Nc(e,t){var r=e.ref;if(r!==null)if(typeof r=="function")try{r(null)}catch(n){Nr(e,t,n)}else r.current=null}function Hb(e,t,r){try{r()}catch(n){Nr(e,t,n)}}var k_=!1;function Cz(e,t){if(_b=ig,e=NP(),pS(e)){if("selectionStart"in e)var r={start:e.selectionStart,end:e.selectionEnd};else e:{r=(r=e.ownerDocument)&&r.defaultView||window;var n=r.getSelection&&r.getSelection();if(n&&n.rangeCount!==0){r=n.anchorNode;var o=n.anchorOffset,i=n.focusNode;n=n.focusOffset;try{r.nodeType,i.nodeType}catch{r=null;break e}var a=0,s=-1,l=-1,c=0,u=0,f=e,p=null;t:for(;;){for(var g;f!==r||o!==0&&f.nodeType!==3||(s=a+o),f!==i||n!==0&&f.nodeType!==3||(l=a+n),f.nodeType===3&&(a+=f.nodeValue.length),(g=f.firstChild)!==null;)p=f,f=g;for(;;){if(f===e)break t;if(p===r&&++c===o&&(s=a),p===i&&++u===n&&(l=a),(g=f.nextSibling)!==null)break;f=p,p=f.parentNode}f=g}r=s===-1||l===-1?null:{start:s,end:l}}else r=null}r=r||{start:0,end:0}}else r=null;for(Pb={focusedElem:e,selectionRange:r},ig=!1,qe=t;qe!==null;)if(t=qe,e=t.child,(t.subtreeFlags&1028)!==0&&e!==null)e.return=t,qe=e;else for(;qe!==null;){t=qe;try{var h=t.alternate;if((t.flags&1024)!==0)switch(t.tag){case 0:case 11:case 15:break;case 1:if(h!==null){var v=h.memoizedProps,y=h.memoizedState,m=t.stateNode,d=m.getSnapshotBeforeUpdate(t.elementType===t.type?v:di(t.type,v),y);m.__reactInternalSnapshotBeforeUpdate=d}break;case 3:var x=t.stateNode.containerInfo;x.nodeType===1?x.textContent="":x.nodeType===9&&x.documentElement&&x.removeChild(x.documentElement);break;case 5:case 6:case 4:case 17:break;default:throw Error(ge(163))}}catch(b){Nr(t,t.return,b)}if(e=t.sibling,e!==null){e.return=t.return,qe=e;break}qe=t.return}return h=k_,k_=!1,h}function Bf(e,t,r){var n=t.updateQueue;if(n=n!==null?n.lastEffect:null,n!==null){var o=n=n.next;do{if((o.tag&e)===e){var i=o.destroy;o.destroy=void 0,i!==void 0&&Hb(t,r,i)}o=o.next}while(o!==n)}}function $g(e,t){if(t=t.updateQueue,t=t!==null?t.lastEffect:null,t!==null){var r=t=t.next;do{if((r.tag&e)===e){var n=r.create;r.destroy=n()}r=r.next}while(r!==t)}}function Ub(e){var t=e.ref;if(t!==null){var r=e.stateNode;switch(e.tag){case 5:e=r;break;default:e=r}typeof t=="function"?t(e):t.current=e}}function OT(e){var t=e.alternate;t!==null&&(e.alternate=null,OT(t)),e.child=null,e.deletions=null,e.sibling=null,e.tag===5&&(t=e.stateNode,t!==null&&(delete t[Wi],delete t[ed],delete t[Ib],delete t[oz],delete t[iz])),e.stateNode=null,e.return=null,e.dependencies=null,e.memoizedProps=null,e.memoizedState=null,e.pendingProps=null,e.stateNode=null,e.updateQueue=null}function _T(e){return e.tag===5||e.tag===3||e.tag===4}function M_(e){e:for(;;){for(;e.sibling===null;){if(e.return===null||_T(e.return))return null;e=e.return}for(e.sibling.return=e.return,e=e.sibling;e.tag!==5&&e.tag!==6&&e.tag!==18;){if(e.flags&2||e.child===null||e.tag===4)continue e;e.child.return=e,e=e.child}if(!(e.flags&2))return e.stateNode}}function qb(e,t,r){var n=e.tag;if(n===5||n===6)e=e.stateNode,t?r.nodeType===8?r.parentNode.insertBefore(e,t):r.insertBefore(e,t):(r.nodeType===8?(t=r.parentNode,t.insertBefore(e,r)):(t=r,t.appendChild(e)),r=r._reactRootContainer,r!=null||t.onclick!==null||(t.onclick=lg));else if(n!==4&&(e=e.child,e!==null))for(qb(e,t,r),e=e.sibling;e!==null;)qb(e,t,r),e=e.sibling}function Gb(e,t,r){var n=e.tag;if(n===5||n===6)e=e.stateNode,t?r.insertBefore(e,t):r.appendChild(e);else if(n!==4&&(e=e.child,e!==null))for(Gb(e,t,r),e=e.sibling;e!==null;)Gb(e,t,r),e=e.sibling}var gn=null,pi=!1;function Ja(e,t,r){for(r=r.child;r!==null;)PT(e,t,r),r=r.sibling}function PT(e,t,r){if(Bi&&typeof Bi.onCommitFiberUnmount=="function")try{Bi.onCommitFiberUnmount(Eg,r)}catch{}switch(r.tag){case 5:_n||Nc(r,t);case 6:var n=gn,o=pi;gn=null,Ja(e,t,r),gn=n,pi=o,gn!==null&&(pi?(e=gn,r=r.stateNode,e.nodeType===8?e.parentNode.removeChild(r):e.removeChild(r)):gn.removeChild(r.stateNode));break;case 18:gn!==null&&(pi?(e=gn,r=r.stateNode,e.nodeType===8?Yx(e.parentNode,r):e.nodeType===1&&Yx(e,r),Xf(e)):Yx(gn,r.stateNode));break;case 4:n=gn,o=pi,gn=r.stateNode.containerInfo,pi=!0,Ja(e,t,r),gn=n,pi=o;break;case 0:case 11:case 14:case 15:if(!_n&&(n=r.updateQueue,n!==null&&(n=n.lastEffect,n!==null))){o=n=n.next;do{var i=o,a=i.destroy;i=i.tag,a!==void 0&&((i&2)!==0||(i&4)!==0)&&Hb(r,t,a),o=o.next}while(o!==n)}Ja(e,t,r);break;case 1:if(!_n&&(Nc(r,t),n=r.stateNode,typeof n.componentWillUnmount=="function"))try{n.props=r.memoizedProps,n.state=r.memoizedState,n.componentWillUnmount()}catch(s){Nr(r,t,s)}Ja(e,t,r);break;case 21:Ja(e,t,r);break;case 22:r.mode&1?(_n=(n=_n)||r.memoizedState!==null,Ja(e,t,r),_n=n):Ja(e,t,r);break;default:Ja(e,t,r)}}function F_(e){var t=e.updateQueue;if(t!==null){e.updateQueue=null;var r=e.stateNode;r===null&&(r=e.stateNode=new Sz),t.forEach(function(n){var o=Iz.bind(null,e,n);r.has(n)||(r.add(n),n.then(o,o))})}}function fi(e,t){var r=t.deletions;if(r!==null)for(var n=0;no&&(o=a),n&=~i}if(n=o,n=Fr()-n,n=(120>n?120:480>n?480:1080>n?1080:1920>n?1920:3e3>n?3e3:4320>n?4320:1960*Ez(n/1960))-n,10e?16:e,os===null)var n=!1;else{if(e=os,os=null,Sg=0,($t&6)!==0)throw Error(ge(331));var o=$t;for($t|=4,qe=e.current;qe!==null;){var i=qe,a=i.child;if((qe.flags&16)!==0){var s=i.deletions;if(s!==null){for(var l=0;lFr()-DS?dl(e,0):$S|=r),to(e,t)}function MT(e,t){t===0&&((e.mode&1)===0?t=1:(t=Tm,Tm<<=1,(Tm&130023424)===0&&(Tm=4194304)));var r=Hn();e=va(e,t),e!==null&&(sd(e,t,r),to(e,r))}function Nz(e){var t=e.memoizedState,r=0;t!==null&&(r=t.retryLane),MT(e,r)}function Iz(e,t){var r=0;switch(e.tag){case 13:var n=e.stateNode,o=e.memoizedState;o!==null&&(r=o.retryLane);break;case 19:n=e.stateNode;break;default:throw Error(ge(314))}n!==null&&n.delete(t),MT(e,r)}var FT;FT=function(e,t,r){if(e!==null)if(e.memoizedProps!==t.pendingProps||Zn.current)Jn=!0;else{if((e.lanes&r)===0&&(t.flags&128)===0)return Jn=!1,yz(e,t,r);Jn=(e.flags&131072)!==0}else Jn=!1,yr&&(t.flags&1048576)!==0&&BP(t,dg,t.index);switch(t.lanes=0,t.tag){case 2:var n=t.type;Ym(e,t),e=t.pendingProps;var o=zc(t,Pn.current);Mc(t,r),o=OS(null,t,n,e,o,r);var i=_S();return t.flags|=1,typeof o=="object"&&o!==null&&typeof o.render=="function"&&o.$$typeof===void 0?(t.tag=1,t.memoizedState=null,t.updateQueue=null,eo(n)?(i=!0,ug(t)):i=!1,t.memoizedState=o.state!==null&&o.state!==void 0?o.state:null,SS(t),o.updater=Ig,t.stateNode=o,o._reactInternals=t,Fb(t,n,e,r),t=Wb(null,t,n,!0,i,r)):(t.tag=0,yr&&i&&mS(t),Vn(null,t,o,r),t=t.child),t;case 16:n=t.elementType;e:{switch(Ym(e,t),e=t.pendingProps,o=n._init,n=o(n._payload),t.type=n,o=t.tag=Dz(n),e=di(n,e),o){case 0:t=zb(null,t,n,e,r);break e;case 1:t=$_(null,t,n,e,r);break e;case 11:t=N_(null,t,n,e,r);break e;case 14:t=I_(null,t,n,di(n.type,e),r);break e}throw Error(ge(306,n,""))}return t;case 0:return n=t.type,o=t.pendingProps,o=t.elementType===n?o:di(n,o),zb(e,t,n,o,r);case 1:return n=t.type,o=t.pendingProps,o=t.elementType===n?o:di(n,o),$_(e,t,n,o,r);case 3:e:{if(bT(t),e===null)throw Error(ge(387));n=t.pendingProps,i=t.memoizedState,o=i.element,GP(e,t),gg(t,n,null,r);var a=t.memoizedState;if(n=a.element,i.isDehydrated)if(i={element:n,isDehydrated:!1,cache:a.cache,pendingSuspenseBoundaries:a.pendingSuspenseBoundaries,transitions:a.transitions},t.updateQueue.baseState=i,t.memoizedState=i,t.flags&256){o=Vc(Error(ge(423)),t),t=D_(e,t,n,r,o);break e}else if(n!==o){o=Vc(Error(ge(424)),t),t=D_(e,t,n,r,o);break e}else for(ho=ls(t.stateNode.containerInfo.firstChild),vo=t,yr=!0,mi=null,r=UP(t,null,n,r),t.child=r;r;)r.flags=r.flags&-3|4096,r=r.sibling;else{if(Wc(),n===o){t=ya(e,t,r);break e}Vn(e,t,n,r)}t=t.child}return t;case 5:return KP(t),e===null&&Ab(t),n=t.type,o=t.pendingProps,i=e!==null?e.memoizedProps:null,a=o.children,Tb(n,o)?a=null:i!==null&&Tb(n,i)&&(t.flags|=32),xT(e,t),Vn(e,t,a,r),t.child;case 6:return e===null&&Ab(t),null;case 13:return ST(e,t,r);case 4:return CS(t,t.stateNode.containerInfo),n=t.pendingProps,e===null?t.child=Bc(t,null,n,r):Vn(e,t,n,r),t.child;case 11:return n=t.type,o=t.pendingProps,o=t.elementType===n?o:di(n,o),N_(e,t,n,o,r);case 7:return Vn(e,t,t.pendingProps,r),t.child;case 8:return Vn(e,t,t.pendingProps.children,r),t.child;case 12:return Vn(e,t,t.pendingProps.children,r),t.child;case 10:e:{if(n=t.type._context,o=t.pendingProps,i=t.memoizedProps,a=o.value,er(pg,n._currentValue),n._currentValue=a,i!==null)if(vi(i.value,a)){if(i.children===o.children&&!Zn.current){t=ya(e,t,r);break e}}else for(i=t.child,i!==null&&(i.return=t);i!==null;){var s=i.dependencies;if(s!==null){a=i.child;for(var l=s.firstContext;l!==null;){if(l.context===n){if(i.tag===1){l=ma(-1,r&-r),l.tag=2;var c=i.updateQueue;if(c!==null){c=c.shared;var u=c.pending;u===null?l.next=l:(l.next=u.next,u.next=l),c.pending=l}}i.lanes|=r,l=i.alternate,l!==null&&(l.lanes|=r),kb(i.return,r,t),s.lanes|=r;break}l=l.next}}else if(i.tag===10)a=i.type===t.type?null:i.child;else if(i.tag===18){if(a=i.return,a===null)throw Error(ge(341));a.lanes|=r,s=a.alternate,s!==null&&(s.lanes|=r),kb(a,r,t),a=i.sibling}else a=i.child;if(a!==null)a.return=i;else for(a=i;a!==null;){if(a===t){a=null;break}if(i=a.sibling,i!==null){i.return=a.return,a=i;break}a=a.return}i=a}Vn(e,t,o.children,r),t=t.child}return t;case 9:return o=t.type,n=t.pendingProps.children,Mc(t,r),o=Wo(o),n=n(o),t.flags|=1,Vn(e,t,n,r),t.child;case 14:return n=t.type,o=di(n,t.pendingProps),o=di(n.type,o),I_(e,t,n,o,r);case 15:return vT(e,t,t.type,t.pendingProps,r);case 17:return n=t.type,o=t.pendingProps,o=t.elementType===n?o:di(n,o),Ym(e,t),t.tag=1,eo(n)?(e=!0,ug(t)):e=!1,Mc(t,r),mT(t,n,o),Fb(t,n,o,r),Wb(null,t,n,!0,e,r);case 19:return CT(e,t,r);case 22:return yT(e,t,r)}throw Error(ge(156,t.tag))};function LT(e,t){return fP(e,t)}function $z(e,t,r,n){this.tag=e,this.key=r,this.sibling=this.child=this.return=this.stateNode=this.type=this.elementType=null,this.index=0,this.ref=null,this.pendingProps=t,this.dependencies=this.memoizedState=this.updateQueue=this.memoizedProps=null,this.mode=n,this.subtreeFlags=this.flags=0,this.deletions=null,this.childLanes=this.lanes=0,this.alternate=null}function Lo(e,t,r,n){return new $z(e,t,r,n)}function FS(e){return e=e.prototype,!(!e||!e.isReactComponent)}function Dz(e){if(typeof e=="function")return FS(e)?1:0;if(e!=null){if(e=e.$$typeof,e===rS)return 11;if(e===nS)return 14}return 2}function ds(e,t){var r=e.alternate;return r===null?(r=Lo(e.tag,t,e.key,e.mode),r.elementType=e.elementType,r.type=e.type,r.stateNode=e.stateNode,r.alternate=e,e.alternate=r):(r.pendingProps=t,r.type=e.type,r.flags=0,r.subtreeFlags=0,r.deletions=null),r.flags=e.flags&14680064,r.childLanes=e.childLanes,r.lanes=e.lanes,r.child=e.child,r.memoizedProps=e.memoizedProps,r.memoizedState=e.memoizedState,r.updateQueue=e.updateQueue,t=e.dependencies,r.dependencies=t===null?null:{lanes:t.lanes,firstContext:t.firstContext},r.sibling=e.sibling,r.index=e.index,r.ref=e.ref,r}function Zm(e,t,r,n,o,i){var a=2;if(n=e,typeof e=="function")FS(e)&&(a=1);else if(typeof e=="string")a=5;else e:switch(e){case Sc:return pl(r.children,o,i,t);case tS:a=8,o|=8;break;case sb:return e=Lo(12,r,t,o|2),e.elementType=sb,e.lanes=i,e;case lb:return e=Lo(13,r,t,o),e.elementType=lb,e.lanes=i,e;case cb:return e=Lo(19,r,t,o),e.elementType=cb,e.lanes=i,e;case K_:return Ag(r,o,i,t);default:if(typeof e=="object"&&e!==null)switch(e.$$typeof){case q_:a=10;break e;case G_:a=9;break e;case rS:a=11;break e;case nS:a=14;break e;case Za:a=16,n=null;break e}throw Error(ge(130,e==null?e:typeof e,""))}return t=Lo(a,r,t,o),t.elementType=e,t.type=n,t.lanes=i,t}function pl(e,t,r,n){return e=Lo(7,e,n,t),e.lanes=r,e}function Ag(e,t,r,n){return e=Lo(22,e,n,t),e.elementType=K_,e.lanes=r,e.stateNode={isHidden:!1},e}function ob(e,t,r){return e=Lo(6,e,null,t),e.lanes=r,e}function ib(e,t,r){return t=Lo(4,e.children!==null?e.children:[],e.key,t),t.lanes=r,t.stateNode={containerInfo:e.containerInfo,pendingChildren:null,implementation:e.implementation},t}function Az(e,t,r,n,o){this.tag=t,this.containerInfo=e,this.finishedWork=this.pingCache=this.current=this.pendingChildren=null,this.timeoutHandle=-1,this.callbackNode=this.pendingContext=this.context=null,this.callbackPriority=0,this.eventTimes=jx(0),this.expirationTimes=jx(-1),this.entangledLanes=this.finishedLanes=this.mutableReadLanes=this.expiredLanes=this.pingedLanes=this.suspendedLanes=this.pendingLanes=0,this.entanglements=jx(0),this.identifierPrefix=n,this.onRecoverableError=o,this.mutableSourceEagerHydrationData=null}function LS(e,t,r,n,o,i,a,s,l){return e=new Az(e,t,r,s,l),t===1?(t=1,i===!0&&(t|=8)):t=0,i=Lo(3,null,null,t),e.current=i,i.stateNode=e,i.memoizedState={element:n,isDehydrated:r,cache:null,transitions:null,pendingSuspenseBoundaries:null},SS(i),e}function kz(e,t,r){var n=3{"use strict";function VT(){if(!(typeof __REACT_DEVTOOLS_GLOBAL_HOOK__>"u"||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!="function"))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(VT)}catch(e){console.error(e)}}VT(),HT.exports=jT()});var qT=$o(jS=>{"use strict";var UT=Vi();jS.createRoot=UT.createRoot,jS.hydrateRoot=UT.hydrateRoot;var PJ});var Ne=$o((IJ,zg)=>{"use strict";(function(){"use strict";var e={}.hasOwnProperty;function t(){for(var o="",i=0;i{"use strict";var US=Symbol.for("react.element"),qS=Symbol.for("react.portal"),jg=Symbol.for("react.fragment"),Vg=Symbol.for("react.strict_mode"),Hg=Symbol.for("react.profiler"),Ug=Symbol.for("react.provider"),qg=Symbol.for("react.context"),Kz=Symbol.for("react.server_context"),Gg=Symbol.for("react.forward_ref"),Kg=Symbol.for("react.suspense"),Xg=Symbol.for("react.suspense_list"),Yg=Symbol.for("react.memo"),Qg=Symbol.for("react.lazy"),Xz=Symbol.for("react.offscreen"),tN;tN=Symbol.for("react.module.reference");function jo(e){if(typeof e=="object"&&e!==null){var t=e.$$typeof;switch(t){case US:switch(e=e.type,e){case jg:case Hg:case Vg:case Kg:case Xg:return e;default:switch(e=e&&e.$$typeof,e){case Kz:case qg:case Gg:case Qg:case Yg:case Ug:return e;default:return t}}case qS:return t}}}Ht.ContextConsumer=qg;Ht.ContextProvider=Ug;Ht.Element=US;Ht.ForwardRef=Gg;Ht.Fragment=jg;Ht.Lazy=Qg;Ht.Memo=Yg;Ht.Portal=qS;Ht.Profiler=Hg;Ht.StrictMode=Vg;Ht.Suspense=Kg;Ht.SuspenseList=Xg;Ht.isAsyncMode=function(){return!1};Ht.isConcurrentMode=function(){return!1};Ht.isContextConsumer=function(e){return jo(e)===qg};Ht.isContextProvider=function(e){return jo(e)===Ug};Ht.isElement=function(e){return typeof e=="object"&&e!==null&&e.$$typeof===US};Ht.isForwardRef=function(e){return jo(e)===Gg};Ht.isFragment=function(e){return jo(e)===jg};Ht.isLazy=function(e){return jo(e)===Qg};Ht.isMemo=function(e){return jo(e)===Yg};Ht.isPortal=function(e){return jo(e)===qS};Ht.isProfiler=function(e){return jo(e)===Hg};Ht.isStrictMode=function(e){return jo(e)===Vg};Ht.isSuspense=function(e){return jo(e)===Kg};Ht.isSuspenseList=function(e){return jo(e)===Xg};Ht.isValidElementType=function(e){return typeof e=="string"||typeof e=="function"||e===jg||e===Hg||e===Vg||e===Kg||e===Xg||e===Xz||typeof e=="object"&&e!==null&&(e.$$typeof===Qg||e.$$typeof===Yg||e.$$typeof===Ug||e.$$typeof===qg||e.$$typeof===Gg||e.$$typeof===tN||e.getModuleId!==void 0)};Ht.typeOf=jo});var oN=$o((QJ,nN)=>{"use strict";nN.exports=rN()});var v3=$o(_0=>{"use strict";var CG=$(),wG=Symbol.for("react.element"),EG=Symbol.for("react.fragment"),RG=Object.prototype.hasOwnProperty,OG=CG.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner,_G={key:!0,ref:!0,__self:!0,__source:!0};function h3(e,t,r){var n,o={},i=null,a=null;r!==void 0&&(i=""+r),t.key!==void 0&&(i=""+t.key),t.ref!==void 0&&(a=t.ref);for(n in t)RG.call(t,n)&&!_G.hasOwnProperty(n)&&(o[n]=t[n]);if(e&&e.defaultProps)for(n in t=e.defaultProps,t)o[n]===void 0&&(o[n]=t[n]);return{$$typeof:wG,type:e,key:i,ref:a,props:o,_owner:OG.current}}_0.Fragment=EG;_0.jsx=h3;_0.jsxs=h3});var Or=$o((Yke,y3)=>{"use strict";y3.exports=v3()});var G0={"SDPPP Get Document":"Get Document","SDPPP Get Layer By ID":"Get Layer","SDPPP Get Linked Layers":"Get Linked Layers","SDPPP Get Layers In Group":"Get Layers In Group","SDPPP Get Text From Layer":"Get Text From Layer","SDPPP Parse Layer Info":"Parse Layer Info","SDPPP Get Selection":"Get Selection","SDPPP Get Image From Photoshop":"Get Image From Photoshop","SDPPP Send Images To Photoshop":"Send Images To Photoshop","SDPPP Select Layer And Run PS Action":"Select Layer And Run PS Action"};var K0={"### Active Document ###":"### \u5F53\u524D\u6587\u6863 ###","### The Canvas ###":"### \u6574\u4E2A\u753B\u5E03 ###","### New Layer ###":"### \u65B0\u56FE\u5C42 ###","### Selected Layer ###":"### \u6240\u9009\u56FE\u5C42 ###","### Keep Size or Fit Canvas ###":"### \u4FDD\u6301\u5C3A\u5BF8\u6216\u9002\u5E94\u753B\u5E03 ###",_SDPPP_PSD_:"_SDPPP_PSD_","Save and run immediately":"\u4FDD\u5B58\u5E76\u7ACB\u5373\u6267\u884C",Close:"\u5173\u95ED","Select a {0}":"\u9009\u62E9\u4E00\u4E2A {0}","How to use .ccx file":"\u5982\u4F55\u4F7F\u7528 .ccx \u6587\u4EF6","1. If you have installed Adobe Creative Cloud":"1. \u5982\u679C\u4F60\u5DF2\u7ECF\u5B89\u88C5\u4E86 Adobe Creative Cloud","Just double click the .ccx file, it will install the plugin automatically":"\u53CC\u51FB .ccx \u6587\u4EF6\uFF0C\u5B83\u4F1A\u81EA\u52A8\u5B89\u88C5","2. If you don't have Adobe Creative Cloud":"2. \u5982\u679C\u4F60\u6CA1\u6709 Adobe Creative Cloud","Rename .ccx to .zip and extract it into ":"\u5C06 .ccx \u91CD\u547D\u540D\u4E3A .zip \u5E76\u89E3\u538B\u5230",or:"\u6216","Photoshop directory":"Photoshop \u5B89\u88C5\u76EE\u5F55","Cannot connect multiple different document widgets with same value":"\u4E0D\u80FD\u8FDE\u63A5\u591A\u4E2A\u5177\u6709\u76F8\u540C\u503C\u7684\u6587\u6863\u5C0F\u90E8\u4EF6","You can only have one SDPPP Settings node in a workflow":"\u4E00\u4E2A\u5DE5\u4F5C\u6D41\u4E2D\u53EA\u80FD\u6709\u4E00\u4E2A SDPPP Settings \u8282\u70B9","convert widget {0} failed:":"\u63A7\u4EF6{0}\u8F6C\u6362\u5931\u8D25\uFF1A","hidden webview load failed: {0}, please select a browser page to continue":"\u5185\u7F6E webview \u52A0\u8F7D\u5931\u8D25: {0}\uFF0C\u8BF7\u9009\u62E9\u4E00\u4E2A\u6D4F\u89C8\u5668\u9875\u9762\u7EE7\u7EED","SDPPP Get Document":"\u83B7\u53D6\u6587\u6863(GetDocument)","SDPPP Get Layer By ID":"\u83B7\u53D6\u56FE\u5C42(GetLayer)","SDPPP Get Linked Layers":"\u83B7\u53D6\u94FE\u63A5\u56FE\u5C42(GetLinkedLayers)","SDPPP Get Layers In Group":"\u83B7\u53D6\u7EC4\u4E2D\u56FE\u5C42(GetLayersInGroup)","SDPPP Get Text From Layer":"\u83B7\u53D6\u56FE\u5C42\u6587\u672C(GetTextFromLayer)","SDPPP Parse Layer Info":"\u89E3\u6790\u56FE\u5C42\u4FE1\u606F(ParseLayerInfo)","SDPPP Get Selection":"\u83B7\u53D6\u9009\u533A(GetSelection)","SDPPP Get Image From Photoshop":"\u4ECEPS\u83B7\u53D6\u56FE\u50CF(GetImageFromPhotoshop)","SDPPP Send Images To Photoshop":"\u53D1\u9001\u56FE\u50CF\u5230PS(SendImagesToPhotoshop)","SDPPP Send Text To Layer":"\u53D1\u9001\u6587\u672C\u5230\u56FE\u5C42(SendTextToLayer)","SDPPP Select Layer And Run PS Action":"\u9009\u4E2D\u56FE\u5C42\u5E76\u8FD0\u884CPS Action(RunPhotoshopAction)","download PS plugin (.ccx)":"\u4E0B\u8F7D Photoshop \u63D2\u4EF6 (.ccx)","current ComfyUI pageid: {0}":"\u5F53\u524D ComfyUI \u9875\u9762ID: {0}","current A1111 pageid: {0}":"\u5F53\u524D A1111 \u9875\u9762ID: {0}","document linked":"\u6587\u6863\u53C2\u6570\u5DF2\u94FE\u63A5","layer linked":"\u56FE\u5C42\u53C2\u6570\u5DF2\u94FE\u63A5","bound linked":"\u8303\u56F4\u53C2\u6570\u5DF2\u94FE\u63A5",document:"\u6587\u6863",Document:"\u6587\u6863",DOCUMENT:"\u6587\u6863",document_name:"\u6587\u6863\u540D\u5B57id",layer_nameid:"\u56FE\u5C42\u540D\u5B57id",layer_name:"\u56FE\u5C42\u540D\u5B57",layer_info:"\u56FE\u5C42\u4FE1\u606F",bound_top:"\u8303\u56F4\u4E0A\u8FB9\u8DDD",bound_left:"\u8303\u56F4\u5DE6\u8FB9\u8DDD",bound_width:"\u8303\u56F4\u5BBD\u5EA6",bound_height:"\u8303\u56F4\u9AD8\u5EA6",center_x:"\u4E2D\u5FC3\u70B9x",center_y:"\u4E2D\u5FC3\u70B9y",opacity:"\u900F\u660E\u5EA6",layer:"\u56FE\u5C42",layer_or_group:"\u56FE\u5C42(\u6216\u7EC4)",Layer_or_group:"\u56FE\u5C42(\u6216\u7EC4)",bound:"\u8303\u56F4",bounds:"\u8303\u56F4","bounds [optional]":"\u8303\u56F4[\u53EF\u9009]",boundary:"\u8303\u56F4",Boundary:"\u8303\u56F4",canvas_boundary:"\u753B\u5E03\u8303\u56F4",canvas_bound:"\u753B\u5E03\u8303\u56F4",layer_boundary:"\u56FE\u5C42\u8303\u56F4",layer_bound:"\u56FE\u5C42\u8303\u56F4","Photoshop Disconnected!":"Photoshop \u672A\u8FDE\u63A5\uFF01",rgb_out:"RGB\u8F93\u51FA",alpha_out:"Alpha\u8F93\u51FA",images:"\u56FE\u50CF",text:"\u6587\u672C",ID_mode:"\u7CBE\u786EID\u6A21\u5F0F",name_mode:"\u540D\u5B57\u5339\u914D\u6A21\u5F0F",select:"\u9009\u62E9","document boundary":"\u6587\u6863\u8303\u56F4","layer boundary":"\u56FE\u5C42\u8303\u56F4","selection boundary":"\u9009\u4E2D\u8303\u56F4","save .psd to this workflow":"\u4FDD\u5B58.psd\u5230\u8FD9\u4E2A\u5DE5\u4F5C\u6D41","extract saved .psd to Photoshop":"\u63D0\u53D6\u4FDD\u5B58\u7684.psd\u5230Photoshop","sample .psd":"\u793A\u4F8B.psd",mask:"\u906E\u7F69",name:"\u540D\u79F0",quality:"\u56FE\u50CF\u8D28\u91CF",action_set:"\u52A8\u4F5C\u7EC4",action:"\u52A8\u4F5C",Runner:"\u8FD0\u884C\u8F7D\u4F53","PS Webview":"PS \u5185\u7F6E\u7F51\u9875","Browser {0}":"\u6D4F\u89C8\u5668\u9875\u9762 {0}",timeout:"\u8D85\u65F6","Loading...":"\u52A0\u8F7D\u4E2D...","--multi-user Not Login!":"--multi-user\u5DF2\u6FC0\u6D3B\uFF0C\u4F46\u672A\u767B\u5F55\uFF01",Logout:"\u767B\u51FA","User: ":"\u7528\u6237: ",connect:"\u8FDE\u63A5",connected:"\u5DF2\u8FDE\u63A5",disconnect:"\u65AD\u5F00",disconnected:"\u5DF2\u65AD\u5F00\u8FDE\u63A5","reconnecting...":"\u91CD\u8FDE\u4E2D...",connecting:"\u8FDE\u63A5\u4E2D",webpages:"\u7F51\u9875\u5217\u8868",workflows:"\u5DE5\u4F5C\u6D41",workflow:"\u5DE5\u4F5C\u6D41","auto run page [{0}] after change..":"\u66F4\u6539\u540E\u81EA\u52A8\u8FD0\u884C\u9875\u9762 {0}..","auto run workflow [{0}] after change..":"\u66F4\u6539\u540E\u81EA\u52A8\u8FD0\u884C\u5DE5\u4F5C\u6D41 {0}..","auto run workflow after change..":"\u66F4\u6539\u540E\u81EA\u52A8\u8FD0\u884C\u5DE5\u4F5C\u6D41..",selection_only:"\u4EC5\u9009\u533A","Queue:":"\u961F\u5217:","Set As:":"\u8BBE\u7F6E\u4E3A:","Error {0}... please contact me via Discord/Github":"\u51FA\u73B0\u9519\u8BEF {0}...\uFF0C\u8BF7\u901A\u8FC7 QQ/Github \u8054\u7CFB\u6211","Webview initialize failed. Please report to me via Discord/Github with your ComfyURL, Operate System":"Webview \u521D\u59CB\u5316\u5931\u8D25\uFF0C\u8BF7\u901A\u8FC7 QQ/Github \u8054\u7CFB\u6211\u5E76\u9644\u4E0A\u4F60\u7684Comfy\u5730\u5740\u3001\u64CD\u4F5C\u7CFB\u7EDF","ComfyUI with --multi-user is only available for sponsors":'\u5E26"--multi-user"\u7684ComfyUI\u4EC5\u5BF9\u8D5E\u52A9\u8005\u5F00\u653E',"Workflow Runner is loading...":"\u8FD0\u884C\u8F7D\u4F53\u5C1A\u5728\u52A0\u8F7D...","(Page ID: {0})Queue: {1}":"(\u9875\u9762ID: {0}) \u961F\u5217\u957F\u5EA6 {1}","no suitable node to control in this workflow":"\u8FD9\u4E2A\u5DE5\u4F5C\u6D41\u4E2D\u6CA1\u6709\u80FD\u63A7\u5236\u7684\u8282\u70B9",Save:"\u4FDD\u5B58",Edit:"\u7F16\u8F91","Edit in ComfyUI":"\u5728 ComfyUI \u4E2D\u7F16\u8F91","using browser page [{0}] for workflow running":"\u6B63\u63A5\u7BA1\u7F51\u9875 [{0}] \u8FD0\u884C\u5DE5\u4F5C\u6D41","workflow running by hidden webview":"\u5DE5\u4F5C\u6D41\u5728\u9690\u85CF\u7684webview\u4E2D\u8FD0\u884C","Lock Image":"\u9501\u5B9A\u56FE\u50CF","Unlock Image":"\u89E3\u9501\u56FE\u50CF","search...":"\u641C\u7D22...","disabled when running in browser page":"\u63A5\u7BA1\u7F51\u9875\u65F6\u4E0D\u53EF\u7528","only supported in Photoshop":"\u4EC5\u5728 Photoshop \u4E2D\u652F\u6301",Login:"\u767B\u5F55","Invitation Code":"\u9080\u8BF7\u7801",Username:"\u7528\u6237\u540D",Password:"\u5BC6\u7801","Please input invitation code":"\u8BF7\u8F93\u5165\u9080\u8BF7\u7801","Please input username":"\u8BF7\u8F93\u5165\u7528\u6237\u540D","Please input password":"\u8BF7\u8F93\u5165\u5BC6\u7801","Open more ComfyUI pages to see more options here":"\u6253\u5F00\u66F4\u591A ComfyUI \u9875\u9762\u4EE5\u67E5\u770B\u66F4\u591A\u9009\u9879","Comfy multi-user: ":"Comfy \u591A\u7528\u6237: ","Not Login":"\u672A\u767B\u5F55","Comfy API-Key: ":"Comfy API-Key: ","Login/Auth":"\u767B\u5F55/\u8BA4\u8BC1","Logged in by email/password":"\u5DF2\u901A\u8FC7\u90AE\u7BB1/\u5BC6\u7801\u767B\u5F55","Set API Key":"\u8BBE\u7F6E API Key","Please input API key (will reload Runner)":"\u8BF7\u8F93\u5165 API Key (\u4F1A\u91CD\u542F\u8FD0\u884C\u8F7D\u4F53)","### Active Workflow ###":"### \u5F53\u524D\u5DE5\u4F5C\u6D41 ###","### Example SDXL ###":"### \u793A\u4F8BSDXL\u5DE5\u4F5C\u6D41 ###","Open ComfyUI in the browser to see more options":"\u5728\u6D4F\u89C8\u5668\u4E2D\u6253\u5F00 ComfyUI \u4EE5\u5F97\u5230\u66F4\u591A\u9009\u9879","Webview load timeout, please switch to a different runner":"Webview \u52A0\u8F7D\u8D85\u65F6\uFF0C\u8BF7\u5207\u6362\u5230\u5176\u4ED6\u8FD0\u884C\u8F7D\u4F53","Save workflow to ComfyUI":"\u4FDD\u5B58\u5DE5\u4F5C\u6D41\u5230 ComfyUI","Reload workflow":"\u91CD\u65B0\u52A0\u8F7D\u5DE5\u4F5C\u6D41","Stop and cancel all":"\u505C\u6B62\u5E76\u53D6\u6D88\u6240\u6709","Start auto running after change":"\u66F4\u6539\u540E\u81EA\u52A8\u8FD0\u884C","Stop auto run":"\u505C\u6B62\u81EA\u52A8\u8FD0\u884C","Run workflow":"\u8FD0\u884C\u5DE5\u4F5C\u6D41","Run workflow xN":"\u8FD0\u884C\u5DE5\u4F5C\u6D41N\u6B21","502: Maybe the server is not running":"502: \u670D\u52A1\u5668\u53EF\u80FD\u672A\u8FD0\u884C","404: Maybe SDPPP is not installed or failed to run in ComfyUI":"404: \u53EF\u80FD\u5728ComfyUI\u4E2DSDPPP\u672A\u5B89\u88C5\u6216\u8FD0\u884C\u5931\u8D25","{0}. reconnecting...":"{0}. \u91CD\u8FDE\u4E2D...","disconnected to {0} failed {1}":"\u65AD\u5F00\u8FDE\u63A5 {0} \u9519\u8BEF {1}","version mismatch, please reinstall PS plugin":"\u7248\u672C\u4E0D\u5339\u914D\uFF0C\u8BF7\u91CD\u65B0\u5B89\u88C5 PS \u63D2\u4EF6","instance type not recognized":"\u672A\u8BC6\u522B\u7684\u8F6F\u4EF6\u7C7B\u578B","Error: {0}":"\u9519\u8BEF: {0}","Verification Error":"\u9A8C\u8BC1\u9519\u8BEF","document {0} not found":"\u627E\u4E0D\u5230\u6587\u6863: {0}",'only layer kind "TEXT" is supported, invalid layer: {0}':"\u4E0D\u652F\u6301\u975E\u6587\u672C\u56FE\u5C42: {0}","create layer failed":"\u521B\u5EFA\u56FE\u5C42\u5931\u8D25","layer not found {0}":"\u627E\u4E0D\u5230\u56FE\u5C42: {0}","no linked layer for {0}":"\u6CA1\u6709\u94FE\u63A5\u56FE\u5C42: {0}","layer {0} is not a group":"\u56FE\u5C42 {0} \u4E0D\u662F\u4E00\u4E2A\u7EC4","no layer in group {0}":"\u7EC4 {0} \u4E2D\u6CA1\u6709\u56FE\u5C42","layer not found: {0}":"\u627E\u4E0D\u5230\u56FE\u5C42: {0}","No upload_name":"\u4E0A\u4F20\u63A5\u53E3\u8FD4\u56DE\u4E86\u5931\u8D25","get pixel of {0} failed":"\u83B7\u53D6\u50CF\u7D20\u5931\u8D25: {0}","merge group failed":"\u5408\u5E76\u7EC4\u5931\u8D25","invalid name: {0}":"\u975E\u6CD5\u7684\u540D\u79F0: {0}","get_layer_info: layer_identify required":"get_layer_info: \u9700\u8981 layer_identify","invalid action: {0}":"\u65E0\u6548\u7684\u64CD\u4F5C: {0}","create document failed":"\u521B\u5EFA\u6587\u6863\u5931\u8D25","create document for preview":"\u521B\u5EFA\u9884\u89C8\u6587\u6863","resize document for preview":"\u8C03\u6574\u9884\u89C8\u6587\u6863\u5C3A\u5BF8","no first related layer in {0}":"\u7EC4 {0} \u4E2D\u6CA1\u6709\u7B2C\u4E00\u4E2A\u76F8\u5173\u56FE\u5C42","imageDataError: data length is not multiple of width * height":"\u56FE\u50CF\u6570\u636E\u6709\u8BEF: \u6570\u636E\u957F\u5EA6\u4E0D\u662F\u5BBD\u5EA6 * \u9AD8\u5EA6\u7684\u500D\u6570","imageDataError: originComponents must be 1 or 3":"\u56FE\u50CF\u6570\u636E\u6709\u8BEF: originComponents \u5FC5\u987B\u662F 1 \u6216 3","unexpected connection lost, please try to reconnect":"\u610F\u5916\u65AD\u5F00\u8FDE\u63A5\uFF0C\u8BF7\u5C1D\u8BD5\u91CD\u65B0\u8FDE\u63A5","Workflow list is empty, please save a workflow by Comfy's lastest UI":"\u5DE5\u4F5C\u6D41\u5217\u8868\u4E3A\u7A7A\uFF0C\u8BF7\u5728Comfy\u7684\u65B0\u7248UI\u4E2D\u4FDD\u5B58\u4E00\u4E2A\u5DE5\u4F5C\u6D41","No opened ComfyUI pages":"\u6CA1\u6709\u5DF2\u6253\u5F00\u7684ComfyUI\u9875\u9762","comfyAPI is not initialized, maybe comfyUI is too old":"\u65E0\u6CD5\u83B7\u53D6 ComfyAPI\uFF0C\u53EF\u80FD ComfyUI \u7248\u672C\u592A\u65E7","unsupported channel counts: {0}":"\u4E0D\u652F\u6301\u7684\u901A\u9053\u6570: {0}","Timeout, Maybe the URL is wrong":"\u8D85\u65F6\uFF0C\u53EF\u80FD comfy\u5730\u5740 \u586B\u5199\u9519\u8BEF","Workflow list loading failed: {0}":"\u5DE5\u4F5C\u6D41\u5217\u8868\u52A0\u8F7D\u5931\u8D25: {0}","Please register a user in ComfyUI":"\u8BF7\u5728 ComfyUI \u4E2D\u6CE8\u518C\u4E00\u4E2A\u7528\u6237","GetSelection need Photoshop version 25+":"GetSelection \u9700\u8981 Photoshop 25+ \u7248\u672C","Action {0} not found":"Action {0} \u672A\u627E\u5230","Action set {0} not found":"ActionSet {0} \u672A\u627E\u5230","{0} cannot be used in Photoshop Action Node":"{0} \u4E0D\u80FD\u5728 Photoshop Action \u8282\u70B9\u4E2D\u4F7F\u7528","Group layers":"\u56FE\u5C42\u7EC4","Show All Groups":"\u663E\u793A\u6240\u6709\u7EC4","create document for sent images":"\u7ED9\u53D1\u9001\u7684\u56FE\u7247\u521B\u5EFA\u6587\u6863","show sent images":"\u663E\u793A\u53D1\u9001\u7684\u56FE\u7247","fallback show sent images":"\u53D6\u6D88\u663E\u793A\u53D1\u9001\u7684\u56FE\u7247","get content of layer {0}":"\u83B7\u53D6\u56FE\u5C42 {0} \u7684\u5185\u5BB9","fallback get content of layer {0}":"\u53D6\u6D88\u83B7\u53D6\u56FE\u5C42 {0} \u7684\u5185\u5BB9","get layer info":"\u83B7\u53D6\u56FE\u5C42\u4FE1\u606F","sdppp extract PSD":"sdppp \u5BFC\u5165 PSD","sdppp get PSD":"sdppp \u83B7\u53D6 PSD","set text to layer":"\u8BBE\u7F6E\u56FE\u5C42\u7684\u6587\u672C","run Photoshop Action":"sdppp \u8FD0\u884C Photoshop Action","select layer":"sdppp \u9009\u4E2D\u56FE\u5C42","{0} wants to extract a PSD file to Photoshop, are you sure?":"{0} \u60F3\u8981\u91CA\u653E\u4E00\u4E2A.psd\u6587\u4EF6\u5230Photoshop\uFF0C\u786E\u5B9A\u5417\uFF1F","should sdppp refuse extracting PSD to Photoshop in this session anymore?":"\u662F\u5426\u8981\u8BA9 sdppp \u62D2\u7EDD\u672C\u6B21PS\u4F1A\u8BDD\u518D\u6B21\u63A5\u53D7.psd\u91CA\u653E\u8BF7\u6C42\uFF1F","Wide Mode":"\u5BBD\u5C4F\u6A21\u5F0F","Quick Set":"\u5FEB\u901F\u8BBE\u7F6E","Selected Layer":"\u9009\u4E2D\u56FE\u5C42","Selected Layer (invert)":"\u9009\u4E2D\u56FE\u5C42(\u53CD\u5411)",Canvas:"\u753B\u5E03",Selection:"\u9009\u533A",Manual:"\u624B\u52A8\u6A21\u5F0F",Auto:"\u81EA\u52A8\u6A21\u5F0F","This plugin is based on sd-ppp":"\u672C\u63D2\u4EF6\u57FA\u4E8Esd-ppp\u5F00\u53D1","And follows its open source license:":"\u5E76\u9075\u5FAA\u5176\u5F00\u6E90\u534F\u8BAE\uFF1A",Cloud:"\u4E91\u7AEF\u63A8\u8350",Sponsors:"\u8D5E\u52A9","waiting...":"\u865A\u4F4D\u4EE5\u5F85",Links:"\u53CB\u60C5\u94FE\u63A5",Community:"\u793E\u533A","LICENSE:":"\u8BB8\u53EF\u8BC1\uFF1A","Official Site":"\u5B98\u65B9\u7F51\u7AD9",upload:"\u4E0A\u4F20","Simplify Workflow":"\u7B80\u5316\u5DE5\u4F5C\u6D41",Photoshop:"Photoshop","Photoshop plugin settings":"Photoshop \u63D2\u4EF6\u8BBE\u7F6E","Photoshop plugin":"Photoshop \u63D2\u4EF6","SDPPP Settings/Misc":"SDPPP \u8BBE\u7F6E/\u6742\u9879","Sample .PSD for this workflow:":"\u793A\u4F8B.PSD","Download Example .PSD":"\u4E0B\u8F7D\u793A\u4F8B.PSD","Maximum Image Size (px):":"\u6700\u5927\u56FE\u50CF\u5C3A\u5BF8(px)",Download:"\u4E0B\u8F7D",Upload:"\u4E0A\u4F20",Reset:"\u91CD\u7F6E",Refresh:"\u5237\u65B0","Comfy URL (You can copy it to connect ComfyUI in the plugin):":"Comfy\u5730\u5740(\u4F60\u53EF\u4EE5\u590D\u5236\u5B83\u5230\u63D2\u4EF6\u4E2D\u8FDE\u63A5ComfyUI):","use slider for number widget:":"\u6570\u5B57\u63A7\u4EF6\u4F7F\u7528\u6ED1\u5757","Photoshop is not connected":"Photoshop \u672A\u8FDE\u63A5","select...":"\u8BF7\u9009\u62E9","click to edit":"\u70B9\u51FB\u7F16\u8F91","ComfyManager not found, cannot reboot":"Comfy Manager\u672A\u5B89\u88C5\uFF0C\u65E0\u6CD5\u91CD\u542F","Failed to reboot ComfyUI":"\u91CD\u542FComfyUI\u5931\u8D25"};var xR=typeof U0<"u"?U0:void 0,X0="en";typeof navigator<"u"&&navigator.language?X0=navigator.language=="zh-CN"?"zhcn":"en":xR&&(X0=xR("uxp").host.uiLocale.startsWith("zh")?"zhcn":"en");function me(e,...t){let r=X0=="zhcn"?K0[e]:e in G0?G0[e]:e;if(!r)throw new Error(`i18n key not found: ${e}`);return r.replace(/{(\d+)}/g,function(n,o){return typeof t[o]<"u"?t[o]:n})}function Zs(e,t){return e==t||K0[e]==t}var Xt=class e{static SPECIAL_DOCUMENT_CURRENT="### Active Document ###";static is_SPECIAL_DOCUMENT_CURRENT(t){return Zs(this.SPECIAL_DOCUMENT_CURRENT,t)}static get_SPECIAL_DOCUMENT_CURRENT(){return me(this.SPECIAL_DOCUMENT_CURRENT)}static SPECIAL_LAYER_KEEP_SIZE="### Keep Size or Fit Canvas ###";static is_SPECIAL_LAYER_FIT(t){return Zs(this.SPECIAL_LAYER_KEEP_SIZE,t)}static get_SPECIAL_LAYER_FIT(){return me(this.SPECIAL_LAYER_KEEP_SIZE)}static SPECIAL_LAYER_USE_CANVAS="### The Canvas ###";static is_SPECIAL_LAYER_USE_CANVAS(t){return Zs(this.SPECIAL_LAYER_USE_CANVAS,t)}static get_SPECIAL_LAYER_USE_CANVAS(){return me(this.SPECIAL_LAYER_USE_CANVAS)}static SPECIAL_LAYER_NEW_LAYER="### New Layer ###";static is_SPECIAL_LAYER_NEW_LAYER(t){return Zs(this.SPECIAL_LAYER_NEW_LAYER,t)}static get_SPECIAL_LAYER_NEW_LAYER(){return me(this.SPECIAL_LAYER_NEW_LAYER)}static SPECIAL_LAYER_SELECTED_LAYER="### Selected Layer ###";static is_SPECIAL_LAYER_SELECTED_LAYER(t){return Zs(this.SPECIAL_LAYER_SELECTED_LAYER,t)}static get_SPECIAL_LAYER_SELECTED_LAYER(){return me(this.SPECIAL_LAYER_SELECTED_LAYER)}static SPECIAL_LAYER_PREVIEW_DOCUMENT="_SDPPP_PSD_";static is_SPECIAL_LAYER_PREVIEW_DOCUMENT(t){return Zs(this.SPECIAL_LAYER_PREVIEW_DOCUMENT,t)}static get_SPECIAL_LAYER_PREVIEW_DOCUMENT(){return me(this.SPECIAL_LAYER_PREVIEW_DOCUMENT)}static getSpecialDocumentCurrent(){return me(e.SPECIAL_DOCUMENT_CURRENT)}static getSpecialLayerForGet(){return[me(e.SPECIAL_LAYER_USE_CANVAS),me(e.SPECIAL_LAYER_SELECTED_LAYER)]}static getSpecialLayerForSend(){return[me(e.SPECIAL_LAYER_NEW_LAYER),me(e.SPECIAL_LAYER_SELECTED_LAYER)]}static getSpecialDocumentForPreview(){return me(e.SPECIAL_LAYER_PREVIEW_DOCUMENT)}static fixI18n(t){return this.is_SPECIAL_DOCUMENT_CURRENT(t)?this.SPECIAL_DOCUMENT_CURRENT:this.is_SPECIAL_LAYER_NEW_LAYER(t)?this.SPECIAL_LAYER_NEW_LAYER:this.is_SPECIAL_LAYER_PREVIEW_DOCUMENT(t)?this.SPECIAL_LAYER_PREVIEW_DOCUMENT:this.is_SPECIAL_LAYER_USE_CANVAS(t)?this.SPECIAL_LAYER_USE_CANVAS:this.is_SPECIAL_LAYER_SELECTED_LAYER(t)?this.SPECIAL_LAYER_SELECTED_LAYER:t}};var Y0={};q0(Y0,{JsonPatchError:()=>Tr,_areEquals:()=>nf,applyOperation:()=>el,applyPatch:()=>sc,applyReducer:()=>V4,deepClone:()=>B4,getValueByPointer:()=>tl,validate:()=>SR,validator:()=>Lp});var z4=function(){var e=function(t,r){return e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(n,o){n.__proto__=o}||function(n,o){for(var i in o)o.hasOwnProperty(i)&&(n[i]=o[i])},e(t,r)};return function(t,r){e(t,r);function n(){this.constructor=t}t.prototype=r===null?Object.create(r):(n.prototype=r.prototype,new n)}}(),W4=Object.prototype.hasOwnProperty;function kp(e,t){return W4.call(e,t)}function Mp(e){if(Array.isArray(e)){for(var t=new Array(e.length),r=0;r=48&&n<=57){t++;continue}return!1}return!0}function Ai(e){return e.indexOf("/")===-1&&e.indexOf("~")===-1?e:e.replace(/~/g,"~0").replace(/\//g,"~1")}function tf(e){return e.replace(/~1/g,"/").replace(/~0/g,"~")}function Ap(e){if(e===void 0)return!0;if(e){if(Array.isArray(e)){for(var t=0,r=e.length;t0&&l[u-1]=="constructor"))throw new TypeError("JSON-Patch: modifying `__proto__` or `constructor/prototype` prop is banned for security reasons, if this was on purpose, please set `banPrototypeModifications` flag false and pass it to this function. More info in fast-json-patch README");if(r&&p===void 0&&(c[g]===void 0?p=l.slice(0,u).join("/"):u==f-1&&(p=t.path),p!==void 0&&h(t,0,e,p)),u++,Array.isArray(c)){if(g==="-")g=c.length;else{if(r&&!Fp(g))throw new Tr("Expected an unsigned base-10 integer value, making the new referenced value the array element with the zero-based index","OPERATION_PATH_ILLEGAL_ARRAY_INDEX",i,t,e);Fp(g)&&(g=~~g)}if(u>=f){if(r&&t.op==="add"&&g>c.length)throw new Tr("The specified index MUST NOT be greater than the number of elements in the array","OPERATION_VALUE_OUT_OF_BOUNDS",i,t,e);var a=j4[t.op].call(t,c,g,e);if(a.test===!1)throw new Tr("Test operation failed","TEST_OPERATION_FAILED",i,t,e);return a}}else if(u>=f){var a=ac[t.op].call(t,c,g,e);if(a.test===!1)throw new Tr("Test operation failed","TEST_OPERATION_FAILED",i,t,e);return a}if(c=c[g],r&&u0)throw new Tr('Operation `path` property must start with "/"',"OPERATION_PATH_INVALID",t,e,r);if((e.op==="move"||e.op==="copy")&&typeof e.from!="string")throw new Tr("Operation `from` property is not present (applicable in `move` and `copy` operations)","OPERATION_FROM_REQUIRED",t,e,r);if((e.op==="add"||e.op==="replace"||e.op==="test")&&e.value===void 0)throw new Tr("Operation `value` property is not present (applicable in `add`, `replace` and `test` operations)","OPERATION_VALUE_REQUIRED",t,e,r);if((e.op==="add"||e.op==="replace"||e.op==="test")&&Ap(e.value))throw new Tr("Operation `value` property is not present (applicable in `add`, `replace` and `test` operations)","OPERATION_VALUE_CANNOT_CONTAIN_UNDEFINED",t,e,r);if(r){if(e.op=="add"){var o=e.path.split("/").length,i=n.split("/").length;if(o!==i+1&&o!==i)throw new Tr("Cannot perform an `add` operation at the desired path","OPERATION_PATH_CANNOT_ADD",t,e,r)}else if(e.op==="replace"||e.op==="remove"||e.op==="_get"){if(e.path!==n)throw new Tr("Cannot perform the operation at a path that does not exist","OPERATION_PATH_UNRESOLVABLE",t,e,r)}else if(e.op==="move"||e.op==="copy"){var a={op:"_get",path:e.from,value:void 0},s=SR([a],r);if(s&&s.name==="OPERATION_PATH_UNRESOLVABLE")throw new Tr("Cannot perform the operation from a path that does not exist","OPERATION_FROM_UNRESOLVABLE",t,e,r)}}}else throw new Tr("Operation `op` property is not one of operations defined in RFC-6902","OPERATION_OP_INVALID",t,e,r)}function SR(e,t,r){try{if(!Array.isArray(e))throw new Tr("Patch sequence must be an array","SEQUENCE_NOT_AN_ARRAY");if(t)sc(Pr(t),Pr(e),r||!0);else{r=r||Lp;for(var n=0;nzp,generate:()=>Q0,observe:()=>Y4,unobserve:()=>X4});var J0=new WeakMap,H4=function(){function e(t){this.observers=new Map,this.obj=t}return e}(),U4=function(){function e(t,r){this.callback=t,this.observer=r}return e}();function q4(e){return J0.get(e)}function G4(e,t){return e.observers.get(t)}function K4(e,t){e.observers.delete(t.callback)}function X4(e,t){t.unobserve()}function Y4(e,t){var r=[],n,o=q4(e);if(!o)o=new H4(e),J0.set(e,o);else{var i=G4(o,t);n=i&&i.observer}if(n)return n;if(n={},o.value=Pr(e),t){n.callback=t,n.next=null;var a=function(){Q0(n)},s=function(){clearTimeout(n.next),n.next=setTimeout(a)};typeof window<"u"&&(window.addEventListener("mouseup",s),window.addEventListener("keyup",s),window.addEventListener("mousedown",s),window.addEventListener("keydown",s),window.addEventListener("change",s))}return n.patches=r,n.object=e,n.unobserve=function(){Q0(n),clearTimeout(n.next),K4(o,n),typeof window<"u"&&(window.removeEventListener("mouseup",s),window.removeEventListener("keyup",s),window.removeEventListener("mousedown",s),window.removeEventListener("keydown",s),window.removeEventListener("change",s))},o.observers.set(t,new U4(t,n)),n}function Q0(e,t){t===void 0&&(t=!1);var r=J0.get(e.object);Z0(r.value,e.object,e.patches,"",t),e.patches.length&&sc(r.value,e.patches);var n=e.patches;return n.length>0&&(e.patches=[],e.callback&&e.callback(n)),n}function Z0(e,t,r,n,o){if(t!==e){typeof t.toJSON=="function"&&(t=t.toJSON());for(var i=Mp(t),a=Mp(e),s=!1,l=!1,c=a.length-1;c>=0;c--){var u=a[c],f=e[u];if(kp(t,u)&&!(t[u]===void 0&&f!==void 0&&Array.isArray(t)===!1)){var p=t[u];typeof f=="object"&&f!=null&&typeof p=="object"&&p!=null&&Array.isArray(f)===Array.isArray(p)?Z0(f,p,r,n+"/"+Ai(u),o):f!==p&&(s=!0,o&&r.push({op:"test",path:n+"/"+Ai(u),value:Pr(f)}),r.push({op:"replace",path:n+"/"+Ai(u),value:Pr(p)}))}else Array.isArray(e)===Array.isArray(t)?(o&&r.push({op:"test",path:n+"/"+Ai(u),value:Pr(f)}),r.push({op:"remove",path:n+"/"+Ai(u)}),l=!0):(o&&r.push({op:"test",path:n,value:e}),r.push({op:"replace",path:n,value:t}),s=!0)}if(!(!l&&i.length==a.length))for(var c=0;cn!=t)}dispatch(t,r){let n=new Map;t.forEach(o=>{this.subscribers.forEach(([i,a])=>{o.path.startsWith(i)&&!n.has(i)&&n.set(i,JSON.stringify(i==="/"?r:tl(r,i)))})}),n.forEach((o,i)=>{let a=i==="/"?this._data:tl(this._data,i);o!==JSON.stringify(a)&&this.subscribers.filter(([s,l])=>s===i).forEach(([s,l])=>{let c={};try{c=l(a,JSON.parse(o||{}))}catch(u){console.error(u.stack||u.message||u)}c instanceof Promise&&c.catch(u=>{console.error(u.stack||u.message||u)})})})}};function nr(e,t,r){return e.constructor[Wp]||(e.constructor[Wp]=[]),e.constructor[Wp].push(t),{value:function(...n){let o=Pr(this._data);r.value.apply(this,n);let i=zp(o,this._data);i.length!=0&&(this._mutationRecords.push(...i),this._version+=i.length,this.dispatch(i,o))}}}var rl=class extends tx{constructor(t){super(Object.assign({sid:"",ssid:""},t||{}))}setSID(t){this._data.sid=t,this._data.ssid=t.slice(0,4)}};Qt([nr],rl.prototype,"setSID",1);var rn=class extends rl{constructor(t,r){super(t||{title:"",webviewFromSid:location.search.match(/webview_fromsid=([^&]+)/)?.[1]||"",progress:0,lastError:"",queueSize:0,executingNodeTitle:"",widgetTableStructure:{widgetTablePath:"",widgetTablePersisted:!1,widgetTableID:"",nodes:{},groups:{},nodeIndexes:[],extraOptions:{}},widgetTableValue:{},widgetTableErrors:{},useSliderForNumberWidget:!1,hasPSDNodes:!1,comfyUserToken:"",comfyOrgLoggedIn:!1,comfyOrgAPIKey:""}),this._version=r||0}setWebviewFromSid(t){this._data.webviewFromSid=t}setTitle(t){this._data.title=t}setProgress(t){this._data.progress=t}setLastError(t){this._data.lastError=t}setQueueSize(t){this._data.queueSize=t}setExecutingNodeTitle(t){this._data.executingNodeTitle=t}setWidgetTableStructure(t){this._data.widgetTableStructure=JSON.parse(JSON.stringify(t))}setWidgetTableValue(t){this._data.widgetTableValue=JSON.parse(JSON.stringify(t))}setWidgetTableErrors(t){this._data.widgetTableErrors=JSON.parse(JSON.stringify(t))}setHasPSDNodes(t){this._data.hasPSDNodes=t}setComfyUserToken(t){this._data.comfyUserToken=t}setComfyOrgLoggedIn(t){this._data.comfyOrgLoggedIn=t}setComfyOrgAPIKey(t){this._data.comfyOrgAPIKey=t}setUseSliderForNumberWidget(t){this._data.useSliderForNumberWidget=t}};Qt([nr],rn.prototype,"setWebviewFromSid",1),Qt([nr],rn.prototype,"setTitle",1),Qt([nr],rn.prototype,"setProgress",1),Qt([nr],rn.prototype,"setLastError",1),Qt([nr],rn.prototype,"setQueueSize",1),Qt([nr],rn.prototype,"setExecutingNodeTitle",1),Qt([nr],rn.prototype,"setWidgetTableStructure",1),Qt([nr],rn.prototype,"setWidgetTableValue",1),Qt([nr],rn.prototype,"setWidgetTableErrors",1),Qt([nr],rn.prototype,"setHasPSDNodes",1),Qt([nr],rn.prototype,"setComfyUserToken",1),Qt([nr],rn.prototype,"setComfyOrgLoggedIn",1),Qt([nr],rn.prototype,"setComfyOrgAPIKey",1),Qt([nr],rn.prototype,"setUseSliderForNumberWidget",1);var Do=class extends rl{constructor(t,r){super(t||{uname:"",comfyUserToken:"",isLocal:!1,activeDocumentID:0,documents:{},actions:[],canvasStateID:0,selectionStateID:"",historyStateID:0}),this._version=r||0}setIsLocal(t){this._data.isLocal=t}setUName(t){this._data.uname="PS_"+t}setDocument(t,r){this._data.activeDocumentID=t,this._data.documents=r}setCanvasStateID(t){this._data.canvasStateID=t}setSelectionStateID(t){this._data.selectionStateID=t}setHistoryStateID(t){this._data.historyStateID=t}setComfyUserToken(t){this._data.comfyUserToken=t}setActions(t){this._data.actions=t}};Qt([nr],Do.prototype,"setIsLocal",1),Qt([nr],Do.prototype,"setUName",1),Qt([nr],Do.prototype,"setDocument",1),Qt([nr],Do.prototype,"setCanvasStateID",1),Qt([nr],Do.prototype,"setSelectionStateID",1),Qt([nr],Do.prototype,"setHistoryStateID",1),Qt([nr],Do.prototype,"setComfyUserToken",1),Qt([nr],Do.prototype,"setActions",1);var Bp=class{storeMap=new Map;storeCount(){return this.storeMap.size}getStore(t){return this.storeMap.get(t)}getAllStore(){return Object.fromEntries(this.storeMap.entries())}subscribers=[];subscribersWithoutKey=new WeakMap;subscribe(t,r){this.subscribers.push([t,r]);let n={};this.subscribersWithoutKey.set(r,n),this.storeMap.forEach((o,i)=>{n[i]=r.bind(this,i),o.subscribe(t,n[i])})}unsubscribe(t){this.subscribers=this.subscribers.filter(([n,o])=>o!=t);let r=this.subscribersWithoutKey.get(t);r&&this.storeMap.forEach((n,o)=>{n.unsubscribe(r[o])})}addStore(t,r,n){let o=this.createStore(r,n);this.storeMap.set(t,o),this.subscribers.forEach(([i,a])=>{let s=this.subscribersWithoutKey.get(a);s||(s={},this.subscribersWithoutKey.set(a,s)),s[t]=a.bind(this,t),o.subscribe(i,s[t]),i=="/"&&a(t,r,null)})}removeStore(t){let r=this.storeMap.get(t);r&&(this.subscribers.forEach(([n,o])=>{let i=this.subscribersWithoutKey.get(o);i&&(r.unsubscribe(i[t]),n=="/"&&o(t,null,r.data))}),this.storeMap.delete(t))}sync(t){if(t instanceof Array){let r=Array.from(this.storeMap.keys()),n=t.filter(i=>!r.includes(i)),o=r.filter(i=>!t.includes(i));n.forEach(i=>this.addStore(i,{},0)),o.forEach(i=>this.removeStore(i))}else{Array.from(this.storeMap.keys()).filter(n=>!Object.keys(t).includes(n)).forEach(n=>this.removeStore(n));for(let n in t){let{data:o,version:i}=t[n];this.storeMap.has(n)?this.storeMap.get(n)?.sync(o,i):this.addStore(n,o,i)}}}};var mt=window.comfyAPI.app.app,$K=window.comfyAPI.ui.$el,nn=window.comfyAPI.api.api;var rx=class extends Bp{createStore(t,r){return new Do(t,r)}getStoreByName(t){for(let r of this.storeMap.values())if(r.data.uname===t)return r}getAllPhotoshopDocumentData(){let t={};return this.storeMap.forEach(r=>{t[r.data.uname]={sid:r.data.sid,activeDocumentID:r.data.activeDocumentID,documents:r.data.documents}}),t}},zn=new rx,Xe=new rn;if(window.uxpHost){let e=t=>{if(t.data.action!=="webview-connect"||!t.data.payload.webviewFromSid)return console.log(t);t.data.payload.webviewFromSid=t.data.payload.webviewFromSid,Xe.setWebviewFromSid(t.data.payload.webviewFromSid),window.removeEventListener("message",e)};window.addEventListener("message",e),window.uxpHost.postMessage({from:"sdppp-webview",action:"webview-connect"},"*")}function wR(){document.title!==Xe.data.title&&Xe.setTitle(document.title),"user"in mt.extensionManager&&Xe.setComfyOrgLoggedIn(mt.extensionManager.user.isLoggedIn),requestAnimationFrame(wR)}requestAnimationFrame(wR);var CR=!1;async function ER(){if(CR)return Promise.resolve();nn.user&&Xe.setComfyUserToken(nn.user);let e=await nn.getSetting("sdppp.useSliderForNumberWidget");e&&Xe.setUseSliderForNumberWidget(e),CR=!0}function Q4(e){let t=e.split(" (id:");return{name:t[0],id:parseInt(t[1].slice(0,-1))}}function jp(e){return Q4(e)}globalThis.sdpppX=globalThis.sdpppX||{};var ia=globalThis.sdpppX;var ki=class{static makeDocumentDataOptions(t){let r=t.data,n=[`${Xt.getSpecialDocumentCurrent()}`];return Object.keys(r.documents).forEach(o=>{let i=r.documents[o];n.push(i.identify)}),n}static findDocumentData(t,r){let n=Xt.is_SPECIAL_DOCUMENT_CURRENT(r)?t.data.activeDocumentID:jp(r).id;return t.data.documents[n]}static makeLayerOptions(t,r){return r.concat(t.layers.map(o=>o.identify))}static getLayerDirtyID(t,r){return t.layers.find(o=>o.identify===r)?.dirtyID||0}static getCanvasDirtyID(t){return t.canvasDirtyID||0}static getSelectionDirtyID(t){return t.selectionDirtyID||0}};function nx(){let e=zn.getAllStore(),t=[];return Object.values(e).forEach(r=>{if(nn.user&&nn.user!=r.data.comfyUserToken)return;let n=ki.makeDocumentDataOptions(r).map(o=>ox(o,r.data.uname));t.push(...n)}),t}function RR(e,t){let r=[""],n=lc(e);if(!n)return[];let o=ki.makeLayerOptions(n.documentData,t);return r.push(...o),r}function OR(){return nn.user?Object.values(zn.getAllStore()).filter(e=>nn.user==e.data.comfyUserToken).length>0:zn.storeCount()}function ox(e,t){return`${t}/${e}`}function lc(e){if(!e||!e.split||e.indexOf("/")==-1)return null;let t=zn.getAllPhotoshopDocumentData(),[r,n]=e.split("/");if(n||(n=r,r=Object.keys(t)[0]),!t[r])return null;let o=Xt.is_SPECIAL_DOCUMENT_CURRENT(n)?t[r].activeDocumentID:jp(n).id;if(t[r]?.documents[o]){let i=t[r].documents[o];return{instance_id:t[r].sid,identify:n,documentData:i}}return null}var J4=function(e){let t=mt.graph.links;return Array.isArray(t)?t.find(n=>n&&n.origin_id==e):t.get(e)};function ix(e){let t=mt.graph.nodes,r=t.find(i=>e.id==i.id);if(!r)return null;let n=[];if(o(r,n),n.length>2){let i=n[0].widgets[0].value;if(!n.map(a=>a.widgets[0].value).every(a=>a==i))throw new Error(me("Cannot connect multiple different document widgets with same value"))}return n?.[0]||null;function o(i,a){if(i.type=="SDPPP Get Document")return a.push(i),i;if(i.inputs.length==0)return null;for(let s of i.inputs)if(s.link){let l=J4(s.link);if(!l)continue;let c=t.find(f=>f.id==l.origin_id);if(!c)continue;let u=o(c,a);if(u)return u}return null}}ia.findDocumentNodeRecursive=ix;var Vp=class{flushing=Promise.resolve();newFlushPending=!1;constructor(t){this.doFlush=t,this.pause()}doFlush;runFlush(){this.newFlushPending||(this.newFlushPending=!0,this.flushing=this.flushing.then(async()=>{await new Promise(t=>requestAnimationFrame(t)),this.newFlushPending=!1,await this.doFlush()}))}pause(){this.flushing=this.flushing.then(t=>new Promise(r=>{this.resume=r})).then(()=>{this.resume=()=>{}})}resume=()=>{}};function _R(e,t){return function(r){return class extends r{constructor(n){super(n),this.socket.on("store_request",(i,a)=>{a({data:e.data,version:e.version})});let o=new Vp(async()=>{let{operations:i,fromVersion:a,toVersion:s}=e.flush();await new Promise(l=>{let c=!1;setTimeout(()=>{c||(console.warn("flush timeout"),l())},5e3),this.socket.emit("store_flush",{operations:i,fromVersion:a},u=>{c=!0,l(),u?.error?console.error("flush error",u.error):e.flushDone(s)})})});e.subscribe("/",()=>{o.runFlush()}),this.socket.on("disconnect",()=>{o.pause()}),this.socket.on("connect",()=>{e.setSID(this.socket.id||""),requestAnimationFrame(()=>{this.socket.emit("sdppp_init",{type:t,data:e.data,version:e.version})})}),this.socket.on("sdppp_inited",i=>{o.resume()})}}}}function PR(e,t){return function(r){return class extends r{constructor(n){super(n),this.socket.on("store_flush",o=>{if(o.type!==t)return;let i=e.getStore(o.sid);if(i)i.patchVersionAcceptable(o.fromVersion)?i.patchData(o.operations):(console.warn("patch version not acceptable from",o.fromVersion,"current version is",i.version),this.socket.emit("store_request",{type:t},a=>{e.sync(a)}));else return this.socket.emit("store_request",{sid:o.sid},a=>{e.addStore(a.sid,a.data,a.version)})}),this.socket.on("store_remove",o=>{e.removeStore(o.sid)}),this.socket.on("sdppp_inited",o=>{this.socket.emit("store_request",{type:t},i=>{e.sync(i)})})}}}}var ci=Object.create(null);ci.open="0";ci.close="1";ci.ping="2";ci.pong="3";ci.message="4";ci.upgrade="5";ci.noop="6";var of=Object.create(null);Object.keys(ci).forEach(e=>{of[ci[e]]=e});var af={type:"error",data:"parser error"};var IR=typeof Blob=="function"||typeof Blob<"u"&&Object.prototype.toString.call(Blob)==="[object BlobConstructor]",$R=typeof ArrayBuffer=="function",DR=e=>typeof ArrayBuffer.isView=="function"?ArrayBuffer.isView(e):e&&e.buffer instanceof ArrayBuffer,sf=({type:e,data:t},r,n)=>IR&&t instanceof Blob?r?n(t):TR(t,n):$R&&(t instanceof ArrayBuffer||DR(t))?r?n(t):TR(new Blob([t]),n):n(ci[e]+(t||"")),TR=(e,t)=>{let r=new FileReader;return r.onload=function(){let n=r.result.split(",")[1];t("b"+(n||""))},r.readAsDataURL(e)};function NR(e){return e instanceof Uint8Array?e:e instanceof ArrayBuffer?new Uint8Array(e):new Uint8Array(e.buffer,e.byteOffset,e.byteLength)}var ax;function AR(e,t){if(IR&&e.data instanceof Blob)return e.data.arrayBuffer().then(NR).then(t);if($R&&(e.data instanceof ArrayBuffer||DR(e.data)))return t(NR(e.data));sf(e,!1,r=>{ax||(ax=new TextEncoder),t(ax.encode(r))})}var kR="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",lf=typeof Uint8Array>"u"?[]:new Uint8Array(256);for(let e=0;e{let t=e.length*.75,r=e.length,n,o=0,i,a,s,l;e[e.length-1]==="="&&(t--,e[e.length-2]==="="&&t--);let c=new ArrayBuffer(t),u=new Uint8Array(c);for(n=0;n>4,u[o++]=(a&15)<<4|s>>2,u[o++]=(s&3)<<6|l&63;return c};var Z4=typeof ArrayBuffer=="function",cf=(e,t)=>{if(typeof e!="string")return{type:"message",data:FR(e,t)};let r=e.charAt(0);return r==="b"?{type:"message",data:e5(e.substring(1),t)}:of[r]?e.length>1?{type:of[r],data:e.substring(1)}:{type:of[r]}:af},e5=(e,t)=>{if(Z4){let r=MR(e);return FR(r,t)}else return{base64:!0,data:e}},FR=(e,t)=>{switch(t){case"blob":return e instanceof Blob?e:new Blob([e]);case"arraybuffer":default:return e instanceof ArrayBuffer?e:e.buffer}};var LR="",zR=(e,t)=>{let r=e.length,n=new Array(r),o=0;e.forEach((i,a)=>{sf(i,!1,s=>{n[a]=s,++o===r&&t(n.join(LR))})})},WR=(e,t)=>{let r=e.split(LR),n=[];for(let o=0;o{let n=r.length,o;if(n<126)o=new Uint8Array(1),new DataView(o.buffer).setUint8(0,n);else if(n<65536){o=new Uint8Array(3);let i=new DataView(o.buffer);i.setUint8(0,126),i.setUint16(1,n)}else{o=new Uint8Array(9);let i=new DataView(o.buffer);i.setUint8(0,127),i.setBigUint64(1,BigInt(n))}e.data&&typeof e.data!="string"&&(o[0]|=128),t.enqueue(o),t.enqueue(r)})}})}var sx;function Hp(e){return e.reduce((t,r)=>t+r.length,0)}function Up(e,t){if(e[0].length===t)return e.shift();let r=new Uint8Array(t),n=0;for(let o=0;oMath.pow(2,21)-1){s.enqueue(af);break}o=u*Math.pow(2,32)+c.getUint32(4),n=3}else{if(Hp(r)e){s.enqueue(af);break}}}})}var lx=4;function Jt(e){if(e)return t5(e)}function t5(e){for(var t in Jt.prototype)e[t]=Jt.prototype[t];return e}Jt.prototype.on=Jt.prototype.addEventListener=function(e,t){return this._callbacks=this._callbacks||{},(this._callbacks["$"+e]=this._callbacks["$"+e]||[]).push(t),this};Jt.prototype.once=function(e,t){function r(){this.off(e,r),t.apply(this,arguments)}return r.fn=t,this.on(e,r),this};Jt.prototype.off=Jt.prototype.removeListener=Jt.prototype.removeAllListeners=Jt.prototype.removeEventListener=function(e,t){if(this._callbacks=this._callbacks||{},arguments.length==0)return this._callbacks={},this;var r=this._callbacks["$"+e];if(!r)return this;if(arguments.length==1)return delete this._callbacks["$"+e],this;for(var n,o=0;oPromise.resolve().then(t):(t,r)=>r(t,0),Wn=typeof self<"u"?self:typeof window<"u"?window:Function("return this")(),VR="arraybuffer";function qp(e,...t){return t.reduce((r,n)=>(e.hasOwnProperty(n)&&(r[n]=e[n]),r),{})}var r5=Wn.setTimeout,n5=Wn.clearTimeout;function sa(e,t){t.useNativeTimers?(e.setTimeoutFn=r5.bind(Wn),e.clearTimeoutFn=n5.bind(Wn)):(e.setTimeoutFn=Wn.setTimeout.bind(Wn),e.clearTimeoutFn=Wn.clearTimeout.bind(Wn))}var o5=1.33;function HR(e){return typeof e=="string"?i5(e):Math.ceil((e.byteLength||e.size)*o5)}function i5(e){let t=0,r=0;for(let n=0,o=e.length;n=57344?r+=3:(n++,r+=4);return r}function Gp(){return Date.now().toString(36).substring(3)+Math.random().toString(36).substring(2,5)}function UR(e){let t="";for(let r in e)e.hasOwnProperty(r)&&(t.length&&(t+="&"),t+=encodeURIComponent(r)+"="+encodeURIComponent(e[r]));return t}function qR(e){let t={},r=e.split("&");for(let n=0,o=r.length;n{this.readyState="paused",t()};if(this._polling||!this.writable){let n=0;this._polling&&(n++,this.once("pollComplete",function(){--n||r()})),this.writable||(n++,this.once("drain",function(){--n||r()}))}else r()}_poll(){this._polling=!0,this.doPoll(),this.emitReserved("poll")}onData(t){let r=n=>{if(this.readyState==="opening"&&n.type==="open"&&this.onOpen(),n.type==="close")return this.onClose({description:"transport closed by the server"}),!1;this.onPacket(n)};WR(t,this.socket.binaryType).forEach(r),this.readyState!=="closed"&&(this._polling=!1,this.emitReserved("pollComplete"),this.readyState==="open"&&this._poll())}doClose(){let t=()=>{this.write([{type:"close"}])};this.readyState==="open"?t():this.once("open",t)}write(t){this.writable=!1,zR(t,r=>{this.doWrite(r,()=>{this.writable=!0,this.emitReserved("drain")})})}uri(){let t=this.opts.secure?"https":"http",r=this.query||{};return this.opts.timestampRequests!==!1&&(r[this.opts.timestampParam]=Gp()),!this.supportsBinary&&!r.sid&&(r.b64=1),this.createUri(t,r)}};var GR=!1;try{GR=typeof XMLHttpRequest<"u"&&"withCredentials"in new XMLHttpRequest}catch{}var KR=GR;function a5(){}var cx=class extends uf{constructor(t){if(super(t),typeof location<"u"){let r=location.protocol==="https:",n=location.port;n||(n=r?"443":"80"),this.xd=typeof location<"u"&&t.hostname!==location.hostname||n!==t.port}}doWrite(t,r){let n=this.request({method:"POST",data:t});n.on("success",r),n.on("error",(o,i)=>{this.onError("xhr post error",o,i)})}doPoll(){let t=this.request();t.on("data",this.onData.bind(this)),t.on("error",(r,n)=>{this.onError("xhr poll error",r,n)}),this.pollXhr=t}},qa=class e extends Jt{constructor(t,r,n){super(),this.createRequest=t,sa(this,n),this._opts=n,this._method=n.method||"GET",this._uri=r,this._data=n.data!==void 0?n.data:null,this._create()}_create(){var t;let r=qp(this._opts,"agent","pfx","key","passphrase","cert","ca","ciphers","rejectUnauthorized","autoUnref");r.xdomain=!!this._opts.xd;let n=this._xhr=this.createRequest(r);try{n.open(this._method,this._uri,!0);try{if(this._opts.extraHeaders){n.setDisableHeaderCheck&&n.setDisableHeaderCheck(!0);for(let o in this._opts.extraHeaders)this._opts.extraHeaders.hasOwnProperty(o)&&n.setRequestHeader(o,this._opts.extraHeaders[o])}}catch{}if(this._method==="POST")try{n.setRequestHeader("Content-type","text/plain;charset=UTF-8")}catch{}try{n.setRequestHeader("Accept","*/*")}catch{}(t=this._opts.cookieJar)===null||t===void 0||t.addCookies(n),"withCredentials"in n&&(n.withCredentials=this._opts.withCredentials),this._opts.requestTimeout&&(n.timeout=this._opts.requestTimeout),n.onreadystatechange=()=>{var o;n.readyState===3&&((o=this._opts.cookieJar)===null||o===void 0||o.parseCookies(n.getResponseHeader("set-cookie"))),n.readyState===4&&(n.status===200||n.status===1223?this._onLoad():this.setTimeoutFn(()=>{this._onError(typeof n.status=="number"?n.status:0)},0))},n.send(this._data)}catch(o){this.setTimeoutFn(()=>{this._onError(o)},0);return}typeof document<"u"&&(this._index=e.requestsCount++,e.requests[this._index]=this)}_onError(t){this.emitReserved("error",t,this._xhr),this._cleanup(!0)}_cleanup(t){if(!(typeof this._xhr>"u"||this._xhr===null)){if(this._xhr.onreadystatechange=a5,t)try{this._xhr.abort()}catch{}typeof document<"u"&&delete e.requests[this._index],this._xhr=null}}_onLoad(){let t=this._xhr.responseText;t!==null&&(this.emitReserved("data",t),this.emitReserved("success"),this._cleanup())}abort(){this._cleanup()}};qa.requestsCount=0;qa.requests={};if(typeof document<"u"){if(typeof attachEvent=="function")attachEvent("onunload",XR);else if(typeof addEventListener=="function"){let e="onpagehide"in Wn?"pagehide":"unload";addEventListener(e,XR,!1)}}function XR(){for(let e in qa.requests)qa.requests.hasOwnProperty(e)&&qa.requests[e].abort()}var s5=function(){let e=YR({xdomain:!1});return e&&e.responseType!==null}(),Ga=class extends cx{constructor(t){super(t);let r=t&&t.forceBase64;this.supportsBinary=s5&&!r}request(t={}){return Object.assign(t,{xd:this.xd},this.opts),new qa(YR,this.uri(),t)}};function YR(e){let t=e.xdomain;try{if(typeof XMLHttpRequest<"u"&&(!t||KR))return new XMLHttpRequest}catch{}if(!t)try{return new Wn[["Active"].concat("Object").join("X")]("Microsoft.XMLHTTP")}catch{}}var QR=typeof navigator<"u"&&typeof navigator.product=="string"&&navigator.product.toLowerCase()==="reactnative",fx=class extends la{get name(){return"websocket"}doOpen(){let t=this.uri(),r=this.opts.protocols,n=QR?{}:qp(this.opts,"agent","perMessageDeflate","pfx","key","passphrase","cert","ca","ciphers","rejectUnauthorized","localAddress","protocolVersion","origin","maxPayload","family","checkServerIdentity");this.opts.extraHeaders&&(n.headers=this.opts.extraHeaders);try{this.ws=this.createSocket(t,r,n)}catch(o){return this.emitReserved("error",o)}this.ws.binaryType=this.socket.binaryType,this.addEventListeners()}addEventListeners(){this.ws.onopen=()=>{this.opts.autoUnref&&this.ws._socket.unref(),this.onOpen()},this.ws.onclose=t=>this.onClose({description:"websocket connection closed",context:t}),this.ws.onmessage=t=>this.onData(t.data),this.ws.onerror=t=>this.onError("websocket error",t)}write(t){this.writable=!1;for(let r=0;r{try{this.doWrite(n,i)}catch{}o&&aa(()=>{this.writable=!0,this.emitReserved("drain")},this.setTimeoutFn)})}}doClose(){typeof this.ws<"u"&&(this.ws.onerror=()=>{},this.ws.close(),this.ws=null)}uri(){let t=this.opts.secure?"wss":"ws",r=this.query||{};return this.opts.timestampRequests&&(r[this.opts.timestampParam]=Gp()),this.supportsBinary||(r.b64=1),this.createUri(t,r)}},ux=Wn.WebSocket||Wn.MozWebSocket,Ka=class extends fx{createSocket(t,r,n){return QR?new ux(t,r,n):r?new ux(t,r):new ux(t)}doWrite(t,r){this.ws.send(r)}};var cc=class extends la{get name(){return"webtransport"}doOpen(){try{this._transport=new WebTransport(this.createUri("https"),this.opts.transportOptions[this.name])}catch(t){return this.emitReserved("error",t)}this._transport.closed.then(()=>{this.onClose()}).catch(t=>{this.onError("webtransport error",t)}),this._transport.ready.then(()=>{this._transport.createBidirectionalStream().then(t=>{let r=jR(Number.MAX_SAFE_INTEGER,this.socket.binaryType),n=t.readable.pipeThrough(r).getReader(),o=BR();o.readable.pipeTo(t.writable),this._writer=o.writable.getWriter();let i=()=>{n.read().then(({done:s,value:l})=>{s||(this.onPacket(l),i())}).catch(s=>{})};i();let a={type:"open"};this.query.sid&&(a.data=`{"sid":"${this.query.sid}"}`),this._writer.write(a).then(()=>this.onOpen())})})}write(t){this.writable=!1;for(let r=0;r{o&&aa(()=>{this.writable=!0,this.emitReserved("drain")},this.setTimeoutFn)})}}doClose(){var t;(t=this._transport)===null||t===void 0||t.close()}};var dx={websocket:Ka,webtransport:cc,polling:Ga};var l5=/^(?:(?![^:@\/?#]+:[^:@\/]*@)(http|https|ws|wss):\/\/)?((?:(([^:@\/?#]*)(?::([^:@\/?#]*))?)?@)?((?:[a-f0-9]{0,4}:){2,7}[a-f0-9]{0,4}|[^:\/?#]*)(?::(\d*))?)(((\/(?:[^?#](?![^?#\/]*\.[^?#\/.]+(?:[?#]|$)))*\/?)?([^?#\/]*))(?:\?([^#]*))?(?:#(.*))?)/,c5=["source","protocol","authority","userInfo","user","password","host","port","relative","path","directory","file","query","anchor"];function uc(e){if(e.length>8e3)throw"URI too long";let t=e,r=e.indexOf("["),n=e.indexOf("]");r!=-1&&n!=-1&&(e=e.substring(0,r)+e.substring(r,n).replace(/:/g,";")+e.substring(n,e.length));let o=l5.exec(e||""),i={},a=14;for(;a--;)i[c5[a]]=o[a]||"";return r!=-1&&n!=-1&&(i.source=t,i.host=i.host.substring(1,i.host.length-1).replace(/;/g,":"),i.authority=i.authority.replace("[","").replace("]","").replace(/;/g,":"),i.ipv6uri=!0),i.pathNames=u5(i,i.path),i.queryKey=f5(i,i.query),i}function u5(e,t){let r=/\/{2,9}/g,n=t.replace(r,"/").split("/");return(t.slice(0,1)=="/"||t.length===0)&&n.splice(0,1),t.slice(-1)=="/"&&n.splice(n.length-1,1),n}function f5(e,t){let r={};return t.replace(/(?:^|&)([^&=]*)=?([^&]*)/g,function(n,o,i){o&&(r[o]=i)}),r}var px=typeof addEventListener=="function"&&typeof removeEventListener=="function",Xp=[];px&&addEventListener("offline",()=>{Xp.forEach(e=>e())},!1);var nl=class e extends Jt{constructor(t,r){if(super(),this.binaryType=VR,this.writeBuffer=[],this._prevBufferLen=0,this._pingInterval=-1,this._pingTimeout=-1,this._maxPayload=-1,this._pingTimeoutTime=1/0,t&&typeof t=="object"&&(r=t,t=null),t){let n=uc(t);r.hostname=n.host,r.secure=n.protocol==="https"||n.protocol==="wss",r.port=n.port,n.query&&(r.query=n.query)}else r.host&&(r.hostname=uc(r.host).host);sa(this,r),this.secure=r.secure!=null?r.secure:typeof location<"u"&&location.protocol==="https:",r.hostname&&!r.port&&(r.port=this.secure?"443":"80"),this.hostname=r.hostname||(typeof location<"u"?location.hostname:"localhost"),this.port=r.port||(typeof location<"u"&&location.port?location.port:this.secure?"443":"80"),this.transports=[],this._transportsByName={},r.transports.forEach(n=>{let o=n.prototype.name;this.transports.push(o),this._transportsByName[o]=n}),this.opts=Object.assign({path:"/engine.io",agent:!1,withCredentials:!1,upgrade:!0,timestampParam:"t",rememberUpgrade:!1,addTrailingSlash:!0,rejectUnauthorized:!0,perMessageDeflate:{threshold:1024},transportOptions:{},closeOnBeforeunload:!1},r),this.opts.path=this.opts.path.replace(/\/$/,"")+(this.opts.addTrailingSlash?"/":""),typeof this.opts.query=="string"&&(this.opts.query=qR(this.opts.query)),px&&(this.opts.closeOnBeforeunload&&(this._beforeunloadEventListener=()=>{this.transport&&(this.transport.removeAllListeners(),this.transport.close())},addEventListener("beforeunload",this._beforeunloadEventListener,!1)),this.hostname!=="localhost"&&(this._offlineEventListener=()=>{this._onClose("transport close",{description:"network connection lost"})},Xp.push(this._offlineEventListener))),this.opts.withCredentials&&(this._cookieJar=void 0),this._open()}createTransport(t){let r=Object.assign({},this.opts.query);r.EIO=lx,r.transport=t,this.id&&(r.sid=this.id);let n=Object.assign({},this.opts,{query:r,socket:this,hostname:this.hostname,secure:this.secure,port:this.port},this.opts.transportOptions[t]);return new this._transportsByName[t](n)}_open(){if(this.transports.length===0){this.setTimeoutFn(()=>{this.emitReserved("error","No transports available")},0);return}let t=this.opts.rememberUpgrade&&e.priorWebsocketSuccess&&this.transports.indexOf("websocket")!==-1?"websocket":this.transports[0];this.readyState="opening";let r=this.createTransport(t);r.open(),this.setTransport(r)}setTransport(t){this.transport&&this.transport.removeAllListeners(),this.transport=t,t.on("drain",this._onDrain.bind(this)).on("packet",this._onPacket.bind(this)).on("error",this._onError.bind(this)).on("close",r=>this._onClose("transport close",r))}onOpen(){this.readyState="open",e.priorWebsocketSuccess=this.transport.name==="websocket",this.emitReserved("open"),this.flush()}_onPacket(t){if(this.readyState==="opening"||this.readyState==="open"||this.readyState==="closing")switch(this.emitReserved("packet",t),this.emitReserved("heartbeat"),t.type){case"open":this.onHandshake(JSON.parse(t.data));break;case"ping":this._sendPacket("pong"),this.emitReserved("ping"),this.emitReserved("pong"),this._resetPingTimeout();break;case"error":let r=new Error("server error");r.code=t.data,this._onError(r);break;case"message":this.emitReserved("data",t.data),this.emitReserved("message",t.data);break}}onHandshake(t){this.emitReserved("handshake",t),this.id=t.sid,this.transport.query.sid=t.sid,this._pingInterval=t.pingInterval,this._pingTimeout=t.pingTimeout,this._maxPayload=t.maxPayload,this.onOpen(),this.readyState!=="closed"&&this._resetPingTimeout()}_resetPingTimeout(){this.clearTimeoutFn(this._pingTimeoutTimer);let t=this._pingInterval+this._pingTimeout;this._pingTimeoutTime=Date.now()+t,this._pingTimeoutTimer=this.setTimeoutFn(()=>{this._onClose("ping timeout")},t),this.opts.autoUnref&&this._pingTimeoutTimer.unref()}_onDrain(){this.writeBuffer.splice(0,this._prevBufferLen),this._prevBufferLen=0,this.writeBuffer.length===0?this.emitReserved("drain"):this.flush()}flush(){if(this.readyState!=="closed"&&this.transport.writable&&!this.upgrading&&this.writeBuffer.length){let t=this._getWritablePackets();this.transport.send(t),this._prevBufferLen=t.length,this.emitReserved("flush")}}_getWritablePackets(){if(!(this._maxPayload&&this.transport.name==="polling"&&this.writeBuffer.length>1))return this.writeBuffer;let r=1;for(let n=0;n0&&r>this._maxPayload)return this.writeBuffer.slice(0,n);r+=2}return this.writeBuffer}_hasPingExpired(){if(!this._pingTimeoutTime)return!0;let t=Date.now()>this._pingTimeoutTime;return t&&(this._pingTimeoutTime=0,aa(()=>{this._onClose("ping timeout")},this.setTimeoutFn)),t}write(t,r,n){return this._sendPacket("message",t,r,n),this}send(t,r,n){return this._sendPacket("message",t,r,n),this}_sendPacket(t,r,n,o){if(typeof r=="function"&&(o=r,r=void 0),typeof n=="function"&&(o=n,n=null),this.readyState==="closing"||this.readyState==="closed")return;n=n||{},n.compress=n.compress!==!1;let i={type:t,data:r,options:n};this.emitReserved("packetCreate",i),this.writeBuffer.push(i),o&&this.once("flush",o),this.flush()}close(){let t=()=>{this._onClose("forced close"),this.transport.close()},r=()=>{this.off("upgrade",r),this.off("upgradeError",r),t()},n=()=>{this.once("upgrade",r),this.once("upgradeError",r)};return(this.readyState==="opening"||this.readyState==="open")&&(this.readyState="closing",this.writeBuffer.length?this.once("drain",()=>{this.upgrading?n():t()}):this.upgrading?n():t()),this}_onError(t){if(e.priorWebsocketSuccess=!1,this.opts.tryAllTransports&&this.transports.length>1&&this.readyState==="opening")return this.transports.shift(),this._open();this.emitReserved("error",t),this._onClose("transport error",t)}_onClose(t,r){if(this.readyState==="opening"||this.readyState==="open"||this.readyState==="closing"){if(this.clearTimeoutFn(this._pingTimeoutTimer),this.transport.removeAllListeners("close"),this.transport.close(),this.transport.removeAllListeners(),px&&(this._beforeunloadEventListener&&removeEventListener("beforeunload",this._beforeunloadEventListener,!1),this._offlineEventListener)){let n=Xp.indexOf(this._offlineEventListener);n!==-1&&Xp.splice(n,1)}this.readyState="closed",this.id=null,this.emitReserved("close",t,r),this.writeBuffer=[],this._prevBufferLen=0}}};nl.protocol=lx;var Yp=class extends nl{constructor(){super(...arguments),this._upgrades=[]}onOpen(){if(super.onOpen(),this.readyState==="open"&&this.opts.upgrade)for(let t=0;t{n||(r.send([{type:"ping",data:"probe"}]),r.once("packet",f=>{if(!n)if(f.type==="pong"&&f.data==="probe"){if(this.upgrading=!0,this.emitReserved("upgrading",r),!r)return;nl.priorWebsocketSuccess=r.name==="websocket",this.transport.pause(()=>{n||this.readyState!=="closed"&&(u(),this.setTransport(r),r.send([{type:"upgrade"}]),this.emitReserved("upgrade",r),r=null,this.upgrading=!1,this.flush())})}else{let p=new Error("probe error");p.transport=r.name,this.emitReserved("upgradeError",p)}}))};function i(){n||(n=!0,u(),r.close(),r=null)}let a=f=>{let p=new Error("probe error: "+f);p.transport=r.name,i(),this.emitReserved("upgradeError",p)};function s(){a("transport closed")}function l(){a("socket closed")}function c(f){r&&f.name!==r.name&&i()}let u=()=>{r.removeListener("open",o),r.removeListener("error",a),r.removeListener("close",s),this.off("close",l),this.off("upgrading",c)};r.once("open",o),r.once("error",a),r.once("close",s),this.once("close",l),this.once("upgrading",c),this._upgrades.indexOf("webtransport")!==-1&&t!=="webtransport"?this.setTimeoutFn(()=>{n||r.open()},200):r.open()}onHandshake(t){this._upgrades=this._filterUpgrades(t.upgrades),super.onHandshake(t)}_filterUpgrades(t){let r=[];for(let n=0;ndx[o]).filter(o=>!!o)),super(t,n)}};var cY=fc.protocol;function JR(e,t="",r){let n=e;r=r||typeof location<"u"&&location,e==null&&(e=r.protocol+"//"+r.host),typeof e=="string"&&(e.charAt(0)==="/"&&(e.charAt(1)==="/"?e=r.protocol+e:e=r.host+e),/^(https?|wss?):\/\//.test(e)||(typeof r<"u"?e=r.protocol+"//"+e:e="https://"+e),n=uc(e)),n.port||(/^(http|ws)$/.test(n.protocol)?n.port="80":/^(http|ws)s$/.test(n.protocol)&&(n.port="443")),n.path=n.path||"/";let i=n.host.indexOf(":")!==-1?"["+n.host+"]":n.host;return n.id=n.protocol+"://"+i+":"+n.port+t,n.href=n.protocol+"://"+i+(r&&r.port===n.port?"":":"+n.port),n}var xx={};q0(xx,{Decoder:()=>vx,Encoder:()=>hx,PacketType:()=>Rt,protocol:()=>nO});var p5=typeof ArrayBuffer=="function",m5=e=>typeof ArrayBuffer.isView=="function"?ArrayBuffer.isView(e):e.buffer instanceof ArrayBuffer,ZR=Object.prototype.toString,g5=typeof Blob=="function"||typeof Blob<"u"&&ZR.call(Blob)==="[object BlobConstructor]",h5=typeof File=="function"||typeof File<"u"&&ZR.call(File)==="[object FileConstructor]";function df(e){return p5&&(e instanceof ArrayBuffer||m5(e))||g5&&e instanceof Blob||h5&&e instanceof File}function ff(e,t){if(!e||typeof e!="object")return!1;if(Array.isArray(e)){for(let r=0,n=e.length;r=0&&e.num{delete this.acks[t];for(let s=0;s{this.io.clearTimeoutFn(i),r.apply(this,s)};a.withError=!0,this.acks[t]=a}emitWithAck(t,...r){return new Promise((n,o)=>{let i=(a,s)=>a?o(a):n(s);i.withError=!0,r.push(i),this.emit(t,...r)})}_addToQueue(t){let r;typeof t[t.length-1]=="function"&&(r=t.pop());let n={id:this._queueSeq++,tryCount:0,pending:!1,args:t,flags:Object.assign({fromQueue:!0},this.flags)};t.push((o,...i)=>n!==this._queue[0]?void 0:(o!==null?n.tryCount>this._opts.retries&&(this._queue.shift(),r&&r(o)):(this._queue.shift(),r&&r(null,...i)),n.pending=!1,this._drainQueue())),this._queue.push(n),this._drainQueue()}_drainQueue(t=!1){if(!this.connected||this._queue.length===0)return;let r=this._queue[0];r.pending&&!t||(r.pending=!0,r.tryCount++,this.flags=r.flags,this.emit.apply(this,r.args))}packet(t){t.nsp=this.nsp,this.io._packet(t)}onopen(){typeof this.auth=="function"?this.auth(t=>{this._sendConnectPacket(t)}):this._sendConnectPacket(this.auth)}_sendConnectPacket(t){this.packet({type:Rt.CONNECT,data:this._pid?Object.assign({pid:this._pid,offset:this._lastOffset},t):t})}onerror(t){this.connected||this.emitReserved("connect_error",t)}onclose(t,r){this.connected=!1,delete this.id,this.emitReserved("disconnect",t,r),this._clearAcks()}_clearAcks(){Object.keys(this.acks).forEach(t=>{if(!this.sendBuffer.some(n=>String(n.id)===t)){let n=this.acks[t];delete this.acks[t],n.withError&&n.call(this,new Error("socket has been disconnected"))}})}onpacket(t){if(t.nsp===this.nsp)switch(t.type){case Rt.CONNECT:t.data&&t.data.sid?this.onconnect(t.data.sid,t.data.pid):this.emitReserved("connect_error",new Error("It seems you are trying to reach a Socket.IO server in v2.x with a v3.x client, but they are not compatible (more information here: https://socket.io/docs/v3/migrating-from-2-x-to-3-0/)"));break;case Rt.EVENT:case Rt.BINARY_EVENT:this.onevent(t);break;case Rt.ACK:case Rt.BINARY_ACK:this.onack(t);break;case Rt.DISCONNECT:this.ondisconnect();break;case Rt.CONNECT_ERROR:this.destroy();let n=new Error(t.data.message);n.data=t.data.data,this.emitReserved("connect_error",n);break}}onevent(t){let r=t.data||[];t.id!=null&&r.push(this.ack(t.id)),this.connected?this.emitEvent(r):this.receiveBuffer.push(Object.freeze(r))}emitEvent(t){if(this._anyListeners&&this._anyListeners.length){let r=this._anyListeners.slice();for(let n of r)n.apply(this,t)}super.emit.apply(this,t),this._pid&&t.length&&typeof t[t.length-1]=="string"&&(this._lastOffset=t[t.length-1])}ack(t){let r=this,n=!1;return function(...o){n||(n=!0,r.packet({type:Rt.ACK,id:t,data:o}))}}onack(t){let r=this.acks[t.id];typeof r=="function"&&(delete this.acks[t.id],r.withError&&t.data.unshift(null),r.apply(this,t.data))}onconnect(t,r){this.id=t,this.recovered=r&&this._pid===r,this._pid=r,this.connected=!0,this.emitBuffered(),this.emitReserved("connect"),this._drainQueue(!0)}emitBuffered(){this.receiveBuffer.forEach(t=>this.emitEvent(t)),this.receiveBuffer=[],this.sendBuffer.forEach(t=>{this.notifyOutgoingListeners(t),this.packet(t)}),this.sendBuffer=[]}ondisconnect(){this.destroy(),this.onclose("io server disconnect")}destroy(){this.subs&&(this.subs.forEach(t=>t()),this.subs=void 0),this.io._destroy(this)}disconnect(){return this.connected&&this.packet({type:Rt.DISCONNECT}),this.destroy(),this.connected&&this.onclose("io client disconnect"),this}close(){return this.disconnect()}compress(t){return this.flags.compress=t,this}get volatile(){return this.flags.volatile=!0,this}timeout(t){return this.flags.timeout=t,this}onAny(t){return this._anyListeners=this._anyListeners||[],this._anyListeners.push(t),this}prependAny(t){return this._anyListeners=this._anyListeners||[],this._anyListeners.unshift(t),this}offAny(t){if(!this._anyListeners)return this;if(t){let r=this._anyListeners;for(let n=0;n0&&e.jitter<=1?e.jitter:0,this.attempts=0}ol.prototype.duration=function(){var e=this.ms*Math.pow(this.factor,this.attempts++);if(this.jitter){var t=Math.random(),r=Math.floor(t*this.jitter*e);e=(Math.floor(t*10)&1)==0?e-r:e+r}return Math.min(e,this.max)|0};ol.prototype.reset=function(){this.attempts=0};ol.prototype.setMin=function(e){this.ms=e};ol.prototype.setMax=function(e){this.max=e};ol.prototype.setJitter=function(e){this.jitter=e};var pc=class extends Jt{constructor(t,r){var n;super(),this.nsps={},this.subs=[],t&&typeof t=="object"&&(r=t,t=void 0),r=r||{},r.path=r.path||"/socket.io",this.opts=r,sa(this,r),this.reconnection(r.reconnection!==!1),this.reconnectionAttempts(r.reconnectionAttempts||1/0),this.reconnectionDelay(r.reconnectionDelay||1e3),this.reconnectionDelayMax(r.reconnectionDelayMax||5e3),this.randomizationFactor((n=r.randomizationFactor)!==null&&n!==void 0?n:.5),this.backoff=new ol({min:this.reconnectionDelay(),max:this.reconnectionDelayMax(),jitter:this.randomizationFactor()}),this.timeout(r.timeout==null?2e4:r.timeout),this._readyState="closed",this.uri=t;let o=r.parser||xx;this.encoder=new o.Encoder,this.decoder=new o.Decoder,this._autoConnect=r.autoConnect!==!1,this._autoConnect&&this.open()}reconnection(t){return arguments.length?(this._reconnection=!!t,t||(this.skipReconnect=!0),this):this._reconnection}reconnectionAttempts(t){return t===void 0?this._reconnectionAttempts:(this._reconnectionAttempts=t,this)}reconnectionDelay(t){var r;return t===void 0?this._reconnectionDelay:(this._reconnectionDelay=t,(r=this.backoff)===null||r===void 0||r.setMin(t),this)}randomizationFactor(t){var r;return t===void 0?this._randomizationFactor:(this._randomizationFactor=t,(r=this.backoff)===null||r===void 0||r.setJitter(t),this)}reconnectionDelayMax(t){var r;return t===void 0?this._reconnectionDelayMax:(this._reconnectionDelayMax=t,(r=this.backoff)===null||r===void 0||r.setMax(t),this)}timeout(t){return arguments.length?(this._timeout=t,this):this._timeout}maybeReconnectOnOpen(){!this._reconnecting&&this._reconnection&&this.backoff.attempts===0&&this.reconnect()}open(t){if(~this._readyState.indexOf("open"))return this;this.engine=new fc(this.uri,this.opts);let r=this.engine,n=this;this._readyState="opening",this.skipReconnect=!1;let o=mo(r,"open",function(){n.onopen(),t&&t()}),i=s=>{this.cleanup(),this._readyState="closed",this.emitReserved("error",s),t?t(s):this.maybeReconnectOnOpen()},a=mo(r,"error",i);if(this._timeout!==!1){let s=this._timeout,l=this.setTimeoutFn(()=>{o(),i(new Error("timeout")),r.close()},s);this.opts.autoUnref&&l.unref(),this.subs.push(()=>{this.clearTimeoutFn(l)})}return this.subs.push(o),this.subs.push(a),this}connect(t){return this.open(t)}onopen(){this.cleanup(),this._readyState="open",this.emitReserved("open");let t=this.engine;this.subs.push(mo(t,"ping",this.onping.bind(this)),mo(t,"data",this.ondata.bind(this)),mo(t,"error",this.onerror.bind(this)),mo(t,"close",this.onclose.bind(this)),mo(this.decoder,"decoded",this.ondecoded.bind(this)))}onping(){this.emitReserved("ping")}ondata(t){try{this.decoder.add(t)}catch(r){this.onclose("parse error",r)}}ondecoded(t){aa(()=>{this.emitReserved("packet",t)},this.setTimeoutFn)}onerror(t){this.emitReserved("error",t)}socket(t,r){let n=this.nsps[t];return n?this._autoConnect&&!n.active&&n.connect():(n=new dc(this,t,r),this.nsps[t]=n),n}_destroy(t){let r=Object.keys(this.nsps);for(let n of r)if(this.nsps[n].active)return;this._close()}_packet(t){let r=this.encoder.encode(t);for(let n=0;nt()),this.subs.length=0,this.decoder.destroy()}_close(){this.skipReconnect=!0,this._reconnecting=!1,this.onclose("forced close")}disconnect(){return this._close()}onclose(t,r){var n;this.cleanup(),(n=this.engine)===null||n===void 0||n.close(),this.backoff.reset(),this._readyState="closed",this.emitReserved("close",t,r),this._reconnection&&!this.skipReconnect&&this.reconnect()}reconnect(){if(this._reconnecting||this.skipReconnect)return this;let t=this;if(this.backoff.attempts>=this._reconnectionAttempts)this.backoff.reset(),this.emitReserved("reconnect_failed"),this._reconnecting=!1;else{let r=this.backoff.duration();this._reconnecting=!0;let n=this.setTimeoutFn(()=>{t.skipReconnect||(this.emitReserved("reconnect_attempt",t.backoff.attempts),!t.skipReconnect&&t.open(o=>{o?(t._reconnecting=!1,t.reconnect(),this.emitReserved("reconnect_error",o)):t.onreconnect()}))},r);this.opts.autoUnref&&n.unref(),this.subs.push(()=>{this.clearTimeoutFn(n)})}}onreconnect(){let t=this.backoff.attempts;this._reconnecting=!1,this.backoff.reset(),this.emitReserved("reconnect",t)}};var pf={};function mf(e,t){typeof e=="object"&&(t=e,e=void 0),t=t||{};let r=JR(e,t.path||"/socket.io"),n=r.source,o=r.id,i=r.path,a=pf[o]&&i in pf[o].nsps,s=t.forceNew||t["force new connection"]||t.multiplex===!1||a,l;return s?l=new pc(n,t):(pf[o]||(pf[o]=new pc(n,t)),l=pf[o]),r.query&&!t.query&&(t.query=r.queryKey),l.socket(r.path,t)}Object.assign(mf,{Manager:pc,Socket:dc,io:mf,connect:mf});var oO=`504 `;var Qp=oO.trim();var bx=class{socket;constructor(t){let r="/"+[t.split("/").slice(3).filter(n=>n).join("/"),"sd-ppp/"].filter(n=>n).join("/");t=t.split("/").slice(0,3).join("/"),this.socket=mf(t,{transports:["websocket"],path:r,query:{api_level:Qp},rejectUnauthorized:!1,autoConnect:!1}),this.socket.on("connect",()=>{this.socket.io.engine.binaryType="blob"})}get id(){return this.socket.id}connect(){this.socket.connect()}close(){this.socket.close()}};function iO(...e){return e.reduce((t,r)=>r(t),bx)}function aO(e){return class extends e{constructor(t){super(t),this.socket.on("F_photoshop",(r,n)=>{try{r.action=="extractPSD"&&mt.graph.nodes.forEach(o=>{o.type=="SDPPP Get Document"&&this.extractPSD(o,r.params.from_sid,"")}),n({})}catch(o){n({error:o instanceof Error?o.message:o?.toString()||"unknown error"})}})}async importPSDDataURLFromPhotoshop(t,r,n){let o=await new Promise((a,s)=>{this.socket.emit("B_photoshop",{action:"psd",sid:t,params:{action:"get",fromSSID:n,document_identify:r}},l=>{a(l.data)})});var i=new FileReader;return i.readAsDataURL(o),new Promise(a=>{i.onloadend=function(){var s=i.result;a(s)}})}async exportPSDDataURLToPhotoshop(t,r,n,o){let i=await fetch(n).then(a=>a.arrayBuffer());await new Promise((a,s)=>{this.socket.emit("B_photoshop",{action:"psd",sid:t,params:{action:"extract",fromSSID:o,document_identify:r,data:i}},l=>{a(l)})})}async sendImage(t,r){return new Promise((n,o)=>{this.socket.emit("B_photoshop",{action:"sendImages",sid:t,params:r},i=>{i&&i.error?o(new Error(i.error)):n(i)})})}async getSpecialIdentifierValue(t,r){return new Promise((n,o)=>{this.socket.emit("B_photoshop",{action:"getSpecialIdentifierValue",sid:t,params:r},i=>{i&&i.error?o(new Error(i.error)):n(i)})})}async extractPSD(t,r,n){t.properties.psd&&await this.exportPSDDataURLToPhotoshop(r,n,t.properties.psd,this.socket.id||"??").then(async()=>{await new Promise(o=>setTimeout(o,300)),globalThis.app.canvas.draw(!0,!0)}).catch(console.error)}}}var sO={last_node_id:0,last_link_id:0,nodes:[],links:[],groups:[],config:{},extra:{},version:.4};var Xa=[];ia.widgetable=ia.widgetable||{};ia.widgetable.add=function(e,t){typeof t=="function"?Xa.push([e,{formatter:t,setter:null}]):Xa.push([e,t])};function Zp(e,t,r){let n=Xa.find(([s])=>s=="__DEFAULT__"),o=Xa.find(([s])=>Sx(s,e.type))||n,i=!1;if(o){let s=o[1].setter;s&&(i=!!s(e,t,r))}i||(e.widgets[t].value=r,e.widgets[t].callback?.(r)),(mt.workflowManager||mt.extensionManager.workflow).activeWorkflow?.changeTracker.checkState()}function gf(e){let t={},r=Xa.find(([n])=>n=="__DEFAULT__");return e.nodes.forEach(n=>{if(!n.widgets||n.widgets.length==0)return;let o=Xa.find(([i])=>Sx(i,n.type))||r;if(o){let i=o[1].formatter(n);i&&(t[n.id]=i.widgets.map(a=>a.value))}}),t}function em(e,t){if(!e)return{widgetTableID:"",widgetTablePath:"",widgetTablePersisted:!1,groups:{},nodes:{},nodeIndexes:[],extraOptions:{useSliderForNumberWidget:Xe.data.useSliderForNumberWidget}};let r=e.groups.map(o=>(o.recomputeInsideNodes(),{id:o.id,name:o.title,color:o.color,nodeIDs:o.nodes.map(i=>i.id)})),n=e.nodes.map(o=>{if(o.mode!=0)return;let i=Jp(o);if(!i||i.startsWith(".")||!o.widgets||o.widgets.length==0)return;let a=Xa.find(([u])=>Sx(u,o.type));if(a)try{let u=a[1].formatter(o);if(u)return u.id=o.id,u.uiWeightSum=u.widgets.reduce((f,p)=>f+(p.uiWeight||12),0),u}catch(u){return{id:o.id,title:i,uiWeightSum:12,widgets:[{outputType:"error",value:me("convert widget {0} failed:",a[0])+(u.message||u||"")+(u?.stack||"")}]}}if(!i.startsWith("#"))return null;let s=o.widgets,l=Xa.find(([u])=>u=="__DEFAULT__");if(l){let u=l[1].formatter(o);if(u)return Object.assign(u,{uiWeightSum:u.widgets.reduce((f,p)=>f+(p.uiWeight||12),0)})}let c={id:o.id,title:i,widgets:s.map(u=>({name:u.label||u.name,outputType:u.type||"string",value:u.value,options:u.options}))};return Object.assign(c,{uiWeightSum:c.widgets.reduce((u,f)=>u+(f.uiWeight||12),0)})}).filter(Boolean).sort((o,i)=>{let a=Jp(o),s=Jp(i);return a=a.startsWith("#")?a.slice(1).trim():a.trim(),s=s.startsWith("#")?s.slice(1).trim():s.trim(),a.localeCompare(s)});return{widgetTablePath:t.activeState.extra.sdppp_workflow_alias||t.path,widgetTablePersisted:t.isPersisted,widgetTableID:t.activeState.id,groups:r,nodes:n.reduce((o,i)=>(o[i.id]=i,o),{}),nodeIndexes:n.map(o=>o.id),extraOptions:{useSliderForNumberWidget:Xe.data.useSliderForNumberWidget}}}function Sx(e,t){let r=e.replace(/[.+^${}()|[\]\\]/g,"\\$&").replace(/\*/g,".*").replace(/\?/g,".");return new RegExp(`^${r}$`).test(t)}function Jp(e,t=""){let r=t||e.title||"";return e.setProperty&&(r.startsWith("#")||r.startsWith("."))?e.setProperty("sdppp_widgetable_title",r):r=e.properties?.sdppp_widgetable_title||r,r}ia.getNodeTitle=Jp;var b5=new Map,il=b5;function cO(e){return class extends e{workflowManager;constructor(t){super(t),this.workflowManager=mt.workflowManager||mt.extensionManager.workflow,this.socket.on("F_workflow",async(r,n)=>{if(r.action=="open"||r.action=="save"||r.action=="list"||r.action=="setWidgetValue"||r.action=="run"||r.action=="setNodeTitle"||r.action=="logout"||r.action=="interrupt"||r.action=="clearQueue"||r.action=="reboot"||r.action=="setComfyOrgAPIKey")try{let o=await this[r.action](r.params);n(o||{})}catch(o){n({error:o.stack||o.message||o})}else n({error:"Invalid action"})})}async logout(){this.socket.disconnect(),document.querySelector(".pi-sign-out").parentElement.click()}async run(t){Cx||S5();let r=t.size,n=!1,o="",i={};try{tm=[];let s=await mt.queuePrompt(1,r);tm.forEach(l=>{if(!n)if(l.error)n=!0,i=a(l.error.response.node_errors),Object.assign(i,{"-1":l.error.response.error.message});else{let c=l.result.prompt_id;il.set(c,t.from_sid)}})}catch(s){n=!0,i={"-1":s.message||s.stack||s.toString()}}n&&(o?Xe.setLastError(o):Xe.setWidgetTableErrors(i));function a(s){let l={};return Object.keys(s).forEach(c=>{let u=c.split(":")[0],f=mt.graph.nodes.find(p=>p.id==u);l[u]=`[${f?.title||u}]`+s[c].errors.map(JSON.stringify).join(` -`)}),l}}async list(t){let n=this.workflowManager.workflows.map(o=>o.path.replace("workflows/",""));try{let o=new Headers,i=localStorage.getItem("Comfy.userId");i&&o.set("comfy-user",i);let a=await fetch("./api/userdata/workflows%2F.index.json",{headers:o}),s=[];a.ok&&(s=(await a.json()).favorites.map(c=>c.replace("workflows/",""))),n.sort((l,c)=>{let u=s.includes(l),f=s.includes(c);return u&&!f?-1:!u&&f?1:l.localeCompare(c)})}catch(o){console.warn("Error fetching favorites, returning unsorted workflows:",o)}return{workflows:n,error:""}}setWidgetValue(t){t.values.forEach(({nodeID:r,widgetIndex:n,value:o})=>{let i=mt.graph.nodes.find(a=>a.id==r);!i||o==i.widgets[n].value||Zp(i,n,o)})}async open(t){let{workflow_path:r}=t;try{Xe.setLastError(""),Xe.setWidgetTableErrors({}),r.startsWith("sdppp://")?await this.openSDPPPWorkflow(t):await this.openComfyWorkflow(t)}catch(n){throw n}}async openSDPPPWorkflow(t){let r=t.workflow_path.replace("sdppp://",""),n=await fetch("/sd-ppp-static/sdppp-workflows/"+r).then(o=>o.json());n.extra.sdppp_workflow_alias=t.workflow_path,await mt.loadGraphData(n)}async openComfyWorkflow(t){let{workflow_path:r,from_sid:n,reset:o}=t,i=this.workflowManager.workflows.find(a=>a.fullFilename===r||a.path===r||a.path==="workflows/"+r);(i.isOpen||this.workflowManager.isOpen?.(i))&&!o||(this.workflowManager.openWorkflows.length===1?await mt.loadGraphData(sO):await lO(this.workflowManager,this.workflowManager.openWorkflows[0]==i?this.workflowManager.openWorkflows[1]:this.workflowManager.openWorkflows[0]),await this.workflowManager.closeWorkflow(i,!1),await new Promise(a=>requestAnimationFrame(a)),await lO(this.workflowManager,i),await new Promise(a=>setTimeout(a,500)),Xe.data.widgetTableStructure&&await this.socket.emit("B_workflow",{action:"getStoredWidgetValue",sid:n,params:{widgetTableID:Xe.data.widgetTableStructure.widgetTableID,widgetTablePath:Xe.data.widgetTableStructure.widgetTablePath,widgetTablePersisted:Xe.data.widgetTableStructure.widgetTablePersisted}},a=>{this.setWidgetValue(a)}))}async save(t){let{workflow_path:r,from_sid:n}=t,o=this.workflowManager.workflows.find(i=>i.fullFilename===r||i.path===r||i.path==="workflows/"+r);if(!o)throw new Error("Workflow not found");this.workflowManager.activeWorkflow?.id!=o.id&&this.open({workflow_path:r,from_sid:n,reset:!1}),o.changeTracker.checkState(),await this.workflowManager.saveWorkflow(o)}setNodeTitle(t){let{node_id:r,title:n}=t,o=mt.graph.nodes.find(i=>i.id==r);if(!o)throw new Error("Node not found");o.title=n,o.setProperty("sdppp_widgetable_title",n)}async interrupt(t){await mt.api.interrupt()}async clearQueue(t){await mt.api.clearItems("queue")}async reboot(t){let r=await fetch("./api/manager/reboot");return r.status==404?{error:me("ComfyManager not found, cannot reboot"),success:!1}:r.status==200?{success:!0}:{error:me("Failed to reboot ComfyUI")+r.statusText,success:!1}}async setComfyOrgAPIKey(t){let{api_key:r}=t;localStorage.setItem("comfy_api_key",r),location.reload()}}}async function lO(e,t){mt.workflowManager==e?await t.load():(await e.openWorkflow(t),await mt.loadGraphData(JSON.parse(JSON.stringify(t.activeState)),!0,!0,t,{}))}var Cx=!1,tm=[];function S5(){if(Cx)return;let e=nn.queuePrompt;nn.queuePrompt=async(...t)=>{try{let r=await e.call(nn,...t);return tm.push({error:null,result:r}),r}catch(r){throw tm.push({error:r,result:null}),r}},Cx=!0}var Bn=class e extends iO(_R(Xe,"comfy"),PR(zn,"photoshop"),aO,cO){static instance;constructor(){super(location.href.split("?")[0].split("#")[0]),e.instance=this}};function rm(e){return e.replace(/^workflows\//,"").replace(/\.json$/,"").split("://").pop()}var nm=class{widget;node;originLabel="";indexInNode=0;constructor(t,r){this.widget=r,this.node=t,this.indexInNode=t.widgets.indexOf(r);let n=this;r.callback=function(...o){n.widget!=this&&(n.widget=n.node.widgets[n.indexInNode]=this),n._callbacks.forEach(i=>i(...o))},this.originLabel=r.label}_callbacks=[];onChange(t){this._callbacks.push(t)}removeOnChange(t){this._callbacks.splice(this._callbacks.indexOf(t),1)}},om=class extends nm{lockMode(t,r){if(t){if(this.widget.type=="button")return;this.widget.type="button",this.widget.value="",this.widget.label=r}else{if(this.widget.type=="combo")return;this.widget.type="combo",this.widget.value="",this.widget.label=this.originLabel}}},Ya=class e extends om{getPSStore(){if(!this.widget.value||this.widget.value.indexOf("/")==-1)return null;let[t]=this.widget.value.split("/");return zn.getStoreByName(t)?.data||null}static create(t,r){let n=nx(),o=t.size.slice(0),i=t.addWidget("combo",r,n[0]||"",()=>{},{forceInput:!0,values:nx});return i.serializeValue=async()=>{let a=lc(i.value);if(!a)return JSON.stringify({instance_id:me("document {0} not found",i.value),identify:"",dirtyID:0});let s=a.identify;return Xt.is_SPECIAL_DOCUMENT_CURRENT(s)&&(s=(await Bn.instance.getSpecialIdentifierValue(a.instance_id,{identifier:s})).value),JSON.stringify({instance_id:a.instance_id,identify:s,canvasDirtyID:a.documentData.canvasDirtyID,selectionDirtyID:a.documentData.selectionDirtyID})},t.size=[o[0],Math.max(o[1],t.size[1])],new e(t,i)}static link(t,r){if(r.type=="combo")return new e(t,r);let n=e.create(t,r.name),o=t.widgets.indexOf(r);return t.widgets[o]=t.widgets.pop(),n}constructor(t,r){super(t,r),this.onChange(n=>{if(!isNaN(+n))r.value=Object.keys(r.options.values)[+n];else if(typeof n=="string"){let o=n.split("/");Xt.is_SPECIAL_DOCUMENT_CURRENT(o[1])&&(r.value=o[0]+"/"+Xt.getSpecialDocumentCurrent())}})}update(){fO(this.widget,this.widget.options.values,!0)}selectConcreteDocument(){if(Xt.is_SPECIAL_DOCUMENT_CURRENT(this.widget.value)){let[t]=this.widget.value.split("/"),r=zn.getStoreByName(t);if(!r)return console.warn(`store ${t} not found`);this.widget.value=ox(r.data.documents[r.data.activeDocumentID].identify,t)}}},mc=class e extends om{documentWidgetByLinked=null;extraOptions;constructor(t,r,n){super(t,r),this.extraOptions=n.extraOptions,this.update=this.update.bind(this),this.onChange(o=>{this.node.setProperty("layerWidgetDetail"+this.indexInNode,this.currentOptionsDetail[Object.values(this.currentOptions).indexOf(this.widget.value)]),typeof o=="string"&&(o=Xt.fixI18n(o))}),r.serializeValue=async()=>{let o=this.documentWidgetByLinked;if(!o)return JSON.stringify({identify:r.value,dirtyID:0});let i=lc(o.widget.value);if(!i)return JSON.stringify({identify:r.value,dirtyID:0});let a=r.value;Xt.is_SPECIAL_LAYER_SELECTED_LAYER(a)&&(a=(await Bn.instance.getSpecialIdentifierValue(i.instance_id,{identifier:a})).value);let s=0;return Xt.is_SPECIAL_LAYER_NEW_LAYER(a)||Xt.is_SPECIAL_LAYER_USE_CANVAS(a)?s=ki.getCanvasDirtyID(i.documentData):s=ki.getLayerDirtyID(i.documentData,a),JSON.stringify({identify:a,dirtyID:s})}}static link(t,r,n){if(r.type=="combo")return new e(t,r,n);let o=e.create(t,r.name,n),i=t.widgets.indexOf(r);return t.widgets[i]=t.widgets.pop(),o}linkDocumentWidget(t){this.documentWidgetByLinked&&t?.removeOnChange(this.update),this.documentWidgetByLinked=t,this.documentWidgetByLinked&&this.documentWidgetByLinked.onChange(this.update)}update(){let t=this.documentWidgetByLinked;this.updateOptions(t)}currentOptions=[];currentOptionsDetail=[];updateOptions(t){if(this.currentOptions=this.extraOptions.slice(0),this.currentOptionsDetail=new Array(this.currentOptions.length).fill({id:0,name:"",identify:"",level:0,fullPath:""}),t&&t.widget.value){let r=lc(t.widget.value);if(!r)return;r.documentData.layers.map(n=>{this.currentOptions.push(n.identify),this.currentOptionsDetail.push(n)})}if(this.widget.options.values=this.currentOptions,Object.values(this.currentOptions).indexOf(this.widget.value)==-1){let r=this.node.properties["layerWidgetDetail"+this.indexInNode];if(r){let n=this.currentOptionsDetail.findIndex(o=>o.fullPath==r.fullPath);if(n!=-1){this.widget.value=this.currentOptions[n];return}}}}static create(t,r,n){let o=t.size.slice(0),i=t.addWidget("combo",r,n.extraOptions[0]||"",()=>{},{forceInput:!0,values:n.extraOptions});return t.size=[o[0],Math.max(o[1],t.size[1])],new e(t,i,{extraOptions:n.extraOptions})}},C5={extraOptions:[],documentWidgetInNode:null},hf=class e extends mc{documentWidgetInNode;constructor(t,r,n=C5){super(t,r,n),this.documentWidgetInNode=n.documentWidgetInNode,this.onChange(()=>{(this.documentWidgetInNode||this.documentWidgetByLinked)?.selectConcreteDocument()}),r.serializeValue=async()=>{let o=this.documentWidgetInNode||this.documentWidgetByLinked;if(!o)return JSON.stringify({identify:r.value,dirtyID:0});let i=lc(o.widget.value);if(!i)return JSON.stringify({identify:r.value,dirtyID:0});let a=r.value;Xt.is_SPECIAL_LAYER_SELECTED_LAYER(a)&&(a=(await Bn.instance.getSpecialIdentifierValue(i.instance_id,{identifier:a})).value);let s=0;return Xt.is_SPECIAL_LAYER_NEW_LAYER(a)||Xt.is_SPECIAL_LAYER_USE_CANVAS(a)?s=ki.getCanvasDirtyID(i.documentData):s=ki.getLayerDirtyID(i.documentData,a),JSON.stringify({identify:a,dirtyID:s})},this.documentWidgetInNode?.onChange(this.update)}update(){let t=this.documentWidgetInNode||this.documentWidgetByLinked;t?.widget.value&&(this.widget.options.values=RR(t.widget.value,this.extraOptions),fO(this.widget,this.widget.options.values))}static create(t,r,n){let o=t.size.slice(0),i=t.addWidget("combo",r,n.extraOptions[0]||"",()=>{},{forceInput:!0,values:n.extraOptions});return t.size=[o[0],Math.max(o[1],t.size[1])],new e(t,i,{documentWidgetInNode:n.documentWidgetInNode,extraOptions:n.extraOptions})}},uO=0,gc=class extends nm{constructor(t,r){if(!r){let n=t.size.slice(0);r=t.addWidget("button","sdppp","",()=>{}),t.size=[n[0],Math.max(n[1],t.size[1])],r.serializeValue=async()=>{let o={lastOpenedWorkflow:rm(Xe.data.widgetTableStructure.widgetTablePath)},i=ix(t);if(i?.widgets[0]){let a=await i.widgets[0].serializeValue();try{o.document=JSON.parse(a),o.isLocal=zn.getStore(o.document.instance_id)?.data.isLocal||!1}catch{return""}}return JSON.stringify(o)}}super(t,r),this.onChange(()=>{zn.storeCount()==0&&Date.now()-uO>3e3&&(uO=Date.now(),location.href="/sd-ppp-static/sd-ppp_PS.ccx?_="+Date.now(),setTimeout(()=>{app.ui.dialog.show(`

o.path.replace("workflows/",""));try{let o=new Headers,i=localStorage.getItem("Comfy.userId");i&&o.set("comfy-user",i);let a=await fetch("./api/userdata/workflows%2F.index.json",{headers:o}),s=[];a.ok&&(s=(await a.json()).favorites.map(c=>c.replace("workflows/",""))),n.sort((l,c)=>{let u=s.includes(l),f=s.includes(c);return u&&!f?-1:!u&&f?1:l.localeCompare(c)})}catch(o){console.warn("Error fetching favorites, returning unsorted workflows:",o)}return{workflows:n,error:""}}setWidgetValue(t){t.values.forEach(({nodeID:r,widgetIndex:n,value:o})=>{let i=mt.graph.nodes.find(a=>a.id==r);!i||o==i.widgets[n].value||Zp(i,n,o)})}async open(t){let{workflow_path:r}=t;try{Xe.setLastError(""),Xe.setWidgetTableErrors({}),r.startsWith("sdppp://")?await this.openSDPPPWorkflow(t):await this.openComfyWorkflow(t)}catch(n){throw n}}async openSDPPPWorkflow(t){let r=t.workflow_path.replace("sdppp://",""),n=await fetch("/sd-ppp-static/sdppp-workflows/"+r).then(o=>o.json());n.extra.sdppp_workflow_alias=t.workflow_path,await mt.loadGraphData(n)}async openComfyWorkflow(t){let{workflow_path:r,from_sid:n,reset:o}=t,i=this.workflowManager.workflows.find(a=>a.fullFilename===r||a.path===r||a.path==="workflows/"+r);(i.isOpen||this.workflowManager.isOpen?.(i))&&!o||(this.workflowManager.openWorkflows.length===1?await mt.loadGraphData(sO):await lO(this.workflowManager,this.workflowManager.openWorkflows[0]==i?this.workflowManager.openWorkflows[1]:this.workflowManager.openWorkflows[0]),await this.workflowManager.closeWorkflow(i,!1),await new Promise(a=>requestAnimationFrame(a)),await lO(this.workflowManager,i),await new Promise(a=>setTimeout(a,500)),Xe.data.widgetTableStructure&&await this.socket.emit("B_workflow",{action:"getStoredWidgetValue",sid:n,params:{widgetTableID:Xe.data.widgetTableStructure.widgetTableID,widgetTablePath:Xe.data.widgetTableStructure.widgetTablePath,widgetTablePersisted:Xe.data.widgetTableStructure.widgetTablePersisted}},a=>{this.setWidgetValue(a)}))}async save(t){let{workflow_path:r,from_sid:n}=t,o=this.workflowManager.workflows.find(i=>i.fullFilename===r||i.path===r||i.path==="workflows/"+r);if(!o)throw new Error("Workflow not found");this.workflowManager.activeWorkflow?.id!=o.id&&this.open({workflow_path:r,from_sid:n,reset:!1}),o.changeTracker.checkState(),await this.workflowManager.saveWorkflow(o)}setNodeTitle(t){let{node_id:r,title:n}=t,o=mt.graph.nodes.find(i=>i.id==r);if(!o)throw new Error("Node not found");o.title=n,o.setProperty("sdppp_widgetable_title",n)}async interrupt(t){await mt.api.interrupt()}async clearQueue(t){await mt.api.clearItems("queue")}async reboot(t){let r=await fetch("./api/manager/reboot");return r.status==404?{error:me("ComfyManager not found, cannot reboot"),success:!1}:r.status==200?{success:!0}:{error:me("Failed to reboot ComfyUI")+r.statusText,success:!1}}async setComfyOrgAPIKey(t){let{api_key:r}=t;localStorage.setItem("comfy_api_key",r),location.reload()}}}async function lO(e,t){mt.workflowManager==e?await t.load():(await e.openWorkflow(t),await mt.loadGraphData(JSON.parse(JSON.stringify(t.activeState)),!0,!0,t,{}))}var Cx=!1,tm=[];function S5(){if(Cx)return;let e=nn.queuePrompt;nn.queuePrompt=async(...t)=>{try{let r=await e.call(nn,...t);return tm.push({error:null,result:r}),r}catch(r){throw tm.push({error:r,result:null}),r}},Cx=!0}var Bn=class e extends iO(_R(Xe,"comfy"),PR(zn,"photoshop"),aO,cO){static instance;constructor(){super(location.href.split("?")[0].split("#")[0]),e.instance=this}};function rm(e){return e.replace(/^workflows\//,"").replace(/\.json$/,"").split("://").pop()}var nm=class{widget;node;originLabel="";indexInNode=0;constructor(t,r){this.widget=r,this.node=t,this.indexInNode=t.widgets.indexOf(r);let n=this;r.callback=function(...o){n.widget!=this&&(n.widget=n.node.widgets[n.indexInNode]=this),n._callbacks.forEach(i=>i(...o))},this.originLabel=r.label}_callbacks=[];onChange(t){this._callbacks.push(t)}removeOnChange(t){this._callbacks.splice(this._callbacks.indexOf(t),1)}},om=class extends nm{lockMode(t,r){if(t){if(this.widget.type=="button")return;this.widget.type="button",this.widget.value="",this.widget.label=r}else{if(this.widget.type=="combo")return;this.widget.type="combo",this.widget.value="",this.widget.label=this.originLabel}}},Ya=class e extends om{getPSStore(){if(!this.widget.value||this.widget.value.indexOf("/")==-1)return null;let[t]=this.widget.value.split("/");return zn.getStoreByName(t)?.data||null}static create(t,r){let n=nx(),o=t.size.slice(0),i=t.addWidget("combo",r,n[0]||"",()=>{},{forceInput:!0,values:nx});return i.serializeValue=async()=>{let a=lc(i.value);if(!a)return JSON.stringify({instance_id:me("document {0} not found",i.value),identify:"",canvasDirtyID:0,selectionDirtyID:0});if(i.type=="button")return JSON.stringify({instance_id:"",identify:"",canvasDirtyID:0,selectionDirtyID:0});let s=a.identify;return Xt.is_SPECIAL_DOCUMENT_CURRENT(s)&&(s=(await Bn.instance.getSpecialIdentifierValue(a.instance_id,{identifier:s})).value),JSON.stringify({instance_id:a.instance_id,identify:s,canvasDirtyID:a.documentData.canvasDirtyID,selectionDirtyID:a.documentData.selectionDirtyID})},t.size=[o[0],Math.max(o[1],t.size[1])],new e(t,i)}static link(t,r){if(r.type=="combo")return new e(t,r);let n=e.create(t,r.name),o=t.widgets.indexOf(r);return t.widgets[o]=t.widgets.pop(),n}constructor(t,r){super(t,r),this.onChange(n=>{if(!isNaN(+n))r.value=Object.keys(r.options.values)[+n];else if(typeof n=="string"){let o=n.split("/");Xt.is_SPECIAL_DOCUMENT_CURRENT(o[1])&&(r.value=o[0]+"/"+Xt.getSpecialDocumentCurrent())}})}update(){fO(this.widget,this.widget.options.values,!0)}selectConcreteDocument(){if(Xt.is_SPECIAL_DOCUMENT_CURRENT(this.widget.value)){let[t]=this.widget.value.split("/"),r=zn.getStoreByName(t);if(!r)return console.warn(`store ${t} not found`);this.widget.value=ox(r.data.documents[r.data.activeDocumentID].identify,t)}}},mc=class e extends om{documentWidgetByLinked=null;extraOptions;constructor(t,r,n){super(t,r),this.extraOptions=n.extraOptions,this.update=this.update.bind(this),this.onChange(o=>{this.node.setProperty("layerWidgetDetail"+this.indexInNode,this.currentOptionsDetail[Object.values(this.currentOptions).indexOf(this.widget.value)]),typeof o=="string"&&(o=Xt.fixI18n(o))}),r.serializeValue=async()=>{if(r.type=="button")return JSON.stringify({identify:r.value,dirtyID:0});let o=this.documentWidgetByLinked;if(!o)return JSON.stringify({identify:r.value,dirtyID:0});let i=lc(o.widget.value);if(!i)return JSON.stringify({identify:r.value,dirtyID:0});let a=r.value;Xt.is_SPECIAL_LAYER_SELECTED_LAYER(a)&&(a=(await Bn.instance.getSpecialIdentifierValue(i.instance_id,{identifier:a})).value);let s=0;return Xt.is_SPECIAL_LAYER_NEW_LAYER(a)||Xt.is_SPECIAL_LAYER_USE_CANVAS(a)?s=ki.getCanvasDirtyID(i.documentData):s=ki.getLayerDirtyID(i.documentData,a),JSON.stringify({identify:a,dirtyID:s})}}static link(t,r,n){if(r.type=="combo")return new e(t,r,n);let o=e.create(t,r.name,n),i=t.widgets.indexOf(r);return t.widgets[i]=t.widgets.pop(),o}linkDocumentWidget(t){this.documentWidgetByLinked&&t?.removeOnChange(this.update),this.documentWidgetByLinked=t,this.documentWidgetByLinked&&this.documentWidgetByLinked.onChange(this.update)}update(){let t=this.documentWidgetByLinked;this.updateOptions(t)}currentOptions=[];currentOptionsDetail=[];updateOptions(t){if(this.currentOptions=this.extraOptions.slice(0),this.currentOptionsDetail=new Array(this.currentOptions.length).fill({id:0,name:"",identify:"",level:0,fullPath:""}),t&&t.widget.value){let r=lc(t.widget.value);if(!r)return;r.documentData.layers.map(n=>{this.currentOptions.push(n.identify),this.currentOptionsDetail.push(n)})}if(this.widget.options.values=this.currentOptions,Object.values(this.currentOptions).indexOf(this.widget.value)==-1){let r=this.node.properties["layerWidgetDetail"+this.indexInNode];if(r){let n=this.currentOptionsDetail.findIndex(o=>o.fullPath==r.fullPath);if(n!=-1){this.widget.value=this.currentOptions[n];return}}}}static create(t,r,n){let o=t.size.slice(0),i=t.addWidget("combo",r,n.extraOptions[0]||"",()=>{},{forceInput:!0,values:n.extraOptions});return t.size=[o[0],Math.max(o[1],t.size[1])],new e(t,i,{extraOptions:n.extraOptions})}},C5={extraOptions:[],documentWidgetInNode:null},hf=class e extends mc{documentWidgetInNode;constructor(t,r,n=C5){super(t,r,n),this.documentWidgetInNode=n.documentWidgetInNode,this.onChange(()=>{(this.documentWidgetInNode||this.documentWidgetByLinked)?.selectConcreteDocument()}),r.serializeValue=async()=>{let o=this.documentWidgetInNode||this.documentWidgetByLinked;if(!o)return JSON.stringify({identify:r.value,dirtyID:0});let i=lc(o.widget.value);if(!i)return JSON.stringify({identify:r.value,dirtyID:0});let a=r.value;Xt.is_SPECIAL_LAYER_SELECTED_LAYER(a)&&(a=(await Bn.instance.getSpecialIdentifierValue(i.instance_id,{identifier:a})).value);let s=0;return Xt.is_SPECIAL_LAYER_NEW_LAYER(a)||Xt.is_SPECIAL_LAYER_USE_CANVAS(a)?s=ki.getCanvasDirtyID(i.documentData):s=ki.getLayerDirtyID(i.documentData,a),JSON.stringify({identify:a,dirtyID:s})},this.documentWidgetInNode?.onChange(this.update)}update(){let t=this.documentWidgetInNode||this.documentWidgetByLinked;t?.widget.value&&(this.widget.options.values=RR(t.widget.value,this.extraOptions),fO(this.widget,this.widget.options.values))}static create(t,r,n){let o=t.size.slice(0),i=t.addWidget("combo",r,n.extraOptions[0]||"",()=>{},{forceInput:!0,values:n.extraOptions});return t.size=[o[0],Math.max(o[1],t.size[1])],new e(t,i,{documentWidgetInNode:n.documentWidgetInNode,extraOptions:n.extraOptions})}},uO=0,gc=class extends nm{constructor(t,r){if(!r){let n=t.size.slice(0);r=t.addWidget("button","sdppp","",()=>{}),t.size=[n[0],Math.max(n[1],t.size[1])],r.serializeValue=async()=>{let o={lastOpenedWorkflow:t.properties.sdppp_send_prefix||rm(Xe.data.widgetTableStructure.widgetTablePath)},i=ix(t);if(i?.widgets[0]){let a=await i.widgets[0].serializeValue();try{o.document=JSON.parse(a),o.isLocal=zn.getStore(o.document.instance_id)?.data.isLocal||!1}catch{return""}}return JSON.stringify(o)}}super(t,r),this.onChange(()=>{zn.storeCount()==0&&Date.now()-uO>3e3&&(uO=Date.now(),location.href="/sd-ppp-static/sd-ppp_PS.ccx?_="+Date.now(),setTimeout(()=>{app.ui.dialog.show(`

${me("How to use .ccx file")}

${me("1. If you have installed Adobe Creative Cloud")}

${me("Just double click the .ccx file, it will install the plugin automatically")}

${me("2. If you don't have Adobe Creative Cloud")}

${me("Rename .ccx to .zip and extract it into ")}[${me("Photoshop directory")}]/Plug-ins ${me("or")} [${me("Photoshop directory")}]/Plug-ins/Generator

- `)},300))})}update(){this.widget.label=zn.storeCount()>0&&Bn.instance.id?me("current ComfyUI pageid: {0}",Bn.instance.id.slice(0,4)):me("download PS plugin (.ccx)")}documentWidgetByLinked=null;linkDocumentWidget(t){this.documentWidgetByLinked=t}};function fO(e,t,r=!1){t instanceof Function&&(t=t()),e.value||(e.value=t[0]),t.indexOf(e.value)==-1&&r&&(e.value=t[0])}var ca=class e{static nodeMap=new WeakMap;static registerNodeType(t,r,n){n.prehandleNodeType&&n.prehandleNodeType(t.nodeData||r);let o=t.prototype.onAdded,i=t.prototype.onRemoved;t.prototype.onAdded=async function(...s){o&&await o.call(this,...s);let l=new n(this);e.nodeMap.set(this,l),await l.update()},t.prototype.onRemoved=async function(...s){i&&await i.call(this,...s);let l=e.nodeMap.get(this);e.nodeMap.delete(this),l?.onDestroy()},t.prototype.onDrawForeground=async function(s){let l=e.nodeMap.get(this);l?.onDrawForeground(s),await l?.update()},t.prototype.onConfigure=async function(...s){let l=e.nodeMap.get(this);l?.onConfigure(s[0]),await l?.update()};let a=t.prototype.onConnectionsChange;t.prototype.onConnectionsChange=async function(s,l,c,u){let f=e.nodeMap.get(this);return s==1&&(f?.inputConnectionChange(l,c&&u),await f?.update()),s==2&&f?.outputConnectionChange(l,c),a?.apply(this,arguments)}}node;constructor(t){this.node=t}inputConnectionChange(t,r){}outputConnectionChange(t,r){}onDrawForeground(t){}onDestroy(){}onConfigure(t){this.node.setProperty("sdppp-version",Qp)}};var Mi=class extends ca{downloadWidget;constructor(t){super(t),this.downloadWidget||(this.downloadWidget=new gc(this.node))}onConfigure(t){super.onConfigure(t)}onDrawForeground(t){this.node.flags.collapsed||OR()||(t.save(),t.fillStyle="rgba(255, 0, 0, 0.2)",t.fillRect(0,0,this.node.size[0],this.node.size[1]),t.fillStyle="white",t.textAlign="center",t.fillText(me("Photoshop Disconnected!"),this.node.size[0]/2,5),t.restore())}async update(){this.downloadWidget?.update()}};var im=class{node;inputIndex;get index(){return this.inputIndex}constructor(t,r){this.node=t,this.inputIndex=r}update(){}connected=!1},vf=class extends im{get documentWidget(){return dO(this.node,this.node.inputs[this.inputIndex])?.documentWidget||null}},yf=class extends im{get documentWidget(){return dO(this.node,this.node.inputs[this.inputIndex])?.documentWidget||null}};function dO(e,t){if(!e.graph.links[t.link])return null;let r=e.graph.links[t.link].origin_id,n=e.graph.getNodeById(r);for(;n.type=="Reroute";)r=e.graph.links[n.inputs[0].link].origin_id,n=e.graph.getNodeById(r);return ca.nodeMap.get(n)}var Ao=class extends Mi{get documentWidget(){let t=this.inputs.find(r=>r.connected&&(r instanceof vf||r instanceof yf));return t?t.documentWidget:this.sdpppWidgets.find(r=>r instanceof Ya)}inputs=[];sdpppWidgets=[];constructor(t){super(t);let r=null;for(let n=0;n{if(!t.label)try{t.label=me(t.name)}catch{t.label=t.name}}),this.sdpppWidgets?.forEach(t=>{t.update()}),this.inputs?.forEach(t=>{t.update()}),super.update()}inputConnectionChange(t,r){super.inputConnectionChange(t,r),this.inputs.forEach(n=>{if(n.index==t){n.connected=r;let o=this.documentWidget;this.downloadWidget&&this.downloadWidget.linkDocumentWidget(o),this.sdpppWidgets.forEach(i=>{(i instanceof mc||i instanceof gc)&&i.linkDocumentWidget(o)})}})}};var am=class extends Ao{get documentWidget(){return this.inputs[0]?.documentWidget}async update(){super.update(),this.node.inputs.forEach(t=>t.label=me(t.name)),this.node.outputs.forEach(t=>t.label=me(t.name))}},hc=class extends Ao{async update(){super.update(),this.node.inputs.forEach(t=>t.label=me(t.name)),this.node.outputs.forEach(t=>t.label=me(t.name))}},sm=class extends Ao{async update(){super.update(),this.node.inputs.forEach(t=>t.label=me(t.name)),this.node.outputs.forEach(t=>t.label=me(t.name))}},lm=class extends Ao{get documentWidget(){return this.inputs[0]?.documentWidget}async update(){super.update(),this.node.inputs.forEach(t=>t.label=me(t.name)),this.node.outputs.forEach(t=>t.label=me(t.name)),this.node.widgets[0].label=me(this.node.widgets[0].name)}},cm=class extends Ao{get documentWidget(){return this.inputs[0]?.documentWidget}async update(){super.update(),this.node.inputs.forEach(t=>t.label=me(t.name)),this.node.outputs.forEach(t=>t.label=me(t.name)),this.node.widgets[0].label=me(this.node.widgets[0].name)}},um=class extends Mi{async update(){super.update(),this.node.inputs[0].label=me(this.node.inputs[0].name),this.node.inputs[1].label=me(this.node.inputs[1].name),this.node.outputs[0]&&(this.node.outputs[0].label=me(this.node.outputs[0].name))}},fm=class extends Mi{static prehandleNodeType(t){t.input.optional.document&&delete t.input.optional.document}async update(){super.update(),this.node.inputs[0].label=me(this.node.inputs[0].name),this.node.outputs[0]&&(this.node.outputs[0].label=me(this.node.outputs[0].name))}},dm=class extends Ao{get documentWidget(){return this.sdpppWidgets[0]}psdWidget;extractPSD(t,r){this.node.properties.psd&&Bn.instance.exportPSDDataURLToPhotoshop(t,r,this.node.properties.psd,Xe.data.ssid).then(async()=>{await new Promise(n=>setTimeout(n,300)),globalThis.app.canvas.draw(!0,!0)}).catch(console.error)}constructor(t){super(t),this.psdWidget=t.addWidget("button","","",()=>{if(!this.documentWidget.widget.value)return;let r=zn.getAllPhotoshopDocumentData(),[n,o]=this.documentWidget.widget.value.split("/");this.node.properties.psd?this.extractPSD(r[n].sid,o):Bn.instance.importPSDDataURLFromPhotoshop(r[n].sid,o,Xe.data.ssid).then(i=>{this.node.setProperty("psd",i)})},{})}async update(){super.update(),this.node.outputs.forEach(t=>t.label=me(t.name)),this.node.properties.psd?(Xe.setHasPSDNodes(!0),this.psdWidget.label=me("extract saved .psd to Photoshop")):(Xe.setHasPSDNodes(!1),this.psdWidget.label=me("save .psd to this workflow"))}},pm=class extends Ao{async update(){super.update(),this.node.inputs.forEach(r=>r.label=me(r.name)),this.node.outputs.forEach(r=>r.label=me(r.name));let t=[];if(this.documentWidget){let r=this.documentWidget.getPSStore();r&&(t=r.actions)}this.node.widgets[0].options.values=t,this.node.constructor.nodeData.input.required.action[0]=t}};var mm=class extends Mi{static prehandleNodeType(t){t.input.optional.document&&delete t.input.optional.document}documentWidget;layerWidget;constructor(t){let r=Ya.create(t,"document"),n=hf.create(t,"layer_or_group",{documentWidgetInNode:r,extraOptions:Xt.getSpecialLayerForGet()});super(t),this.documentWidget=r,this.layerWidget=n,this.node.widgets[0].name=="quality"?(this.node.widgets[1]=r.widget,this.node.widgets[2]=n.widget):(this.node.widgets[0]=r.widget,this.node.widgets[1]=n.widget)}onConfigure(t){if(t.properties["sdppp-version"])if(+t.properties["sdppp-version"]<=410){if(this.node.widgets[0].value===!0||this.node.widgets[0].value==="true"){let r=comfyAPI.app.app.addNodeOnGraph(hm["SDPPP Get Selection"],{pos:this.node.pos});new hc(r),this.node.outputs[0].links?.length?comfyAPI.app.app.addNodeOnGraph(hm.JoinImageWithAlpha,{pos:[this.node.pos[0]+r.size[0]+10,this.node.pos[1]-20]}):r.size=this.node.size,comfyAPI.app.app.graph.remove(this.node)}this.node.widgets[0].value=t.widgets_values[1],this.node.widgets[1].value=t.widgets_values[2]}else+t.properties["sdppp-version"]<504&&this.node.widgets[0].name=="quality"&&(this.node.widgets[0].value=100,this.node.widgets[1].value=t.widgets_values[0],this.node.widgets[2].value=t.widgets_values[1]);super.onConfigure(t)}async update(){this.documentWidget.lockMode(this.layerLinked,me("document linked")),this.layerWidget.lockMode(this.layerLinked,me("layer linked")),this.documentWidget.update(),this.layerWidget.update(),super.update(),this.node.widgets.forEach(t=>{if(!t.label)try{t.label=me(t.name)}catch{}}),this.node.inputs.forEach(t=>{if(!t.label)try{t.label=me(t.name)}catch{}}),this.node.outputs.forEach(t=>{if(!t.label)try{t.label=me(t.name)}catch{}})}layerLinked=!1;inputConnectionChange(t,r){super.inputConnectionChange(t,r),t==0&&(this.layerLinked=r)}},gm=class extends Mi{static prehandleNodeType(t){t.input.optional.document&&delete t.input.optional.document}documentWidget;layerWidget;constructor(t){let r=Ya.create(t,"document"),n=hf.create(t,"layer_or_group",{documentWidgetInNode:r,extraOptions:Xt.getSpecialLayerForSend()});super(t),this.documentWidget=r,this.layerWidget=n}async update(){this.documentWidget?.lockMode(this.layerLinked,me("document linked")),this.layerWidget?.lockMode(this.layerLinked,me("layer linked")),this.documentWidget.update(),this.layerWidget.update(),super.update(),this.node.widgets[0].label||(this.node.widgets[0].label=me(this.node.widgets[0].name)),this.node.widgets[1].label||(this.node.widgets[1].label=me(this.node.widgets[1].name)),this.node.inputs[0].label=me(this.node.inputs[0].name),this.node.inputs[1].label=me(this.node.inputs[1].name),this.node.inputs[2].label=me(this.node.inputs[2].name),this.node.outputs[0].label=me(this.node.outputs[0].name)}layerLinked=!1;inputConnectionChange(t,r){super.inputConnectionChange(t,r),t==1&&(this.layerLinked=r)}};var wx={"Get Image From Photoshop Layer":mm,"Send Images To Photoshop":gm,"SDPPP Send Text To Layer":um,"SDPPP Get Text From Layer":fm,"SDPPP Parse Layer Info":sm,"SDPPP Get Linked Layers":cm,"SDPPP Get Layers In Group":lm,"SDPPP Get Layer By ID":am,"SDPPP Get Document":dm,"SDPPP Get Selection":hc,"SDPPP Select Layer And Run PS Action":pm},hm={};function pO(e,t){let r=e.comfyClass||t.name;if(hm[r]=t,r in wx)e.title=me(t.display_name),t.display_name=me(t.display_name),ca.registerNodeType(e,t,wx[r]);else if(r.startsWith("workflow")&&comfyAPI.groupNode.GroupNodeHandler.getGroupData(e)){let n=comfyAPI.groupNode.GroupNodeHandler.getGroupData(e),o=!1;n.nodeData.nodes.forEach((i,a)=>{i.type in wx&&(o=!0)}),o&&ca.registerNodeType(e,t,Ao)}else return}var dR=E(qT(),1),pR=E($(),1);var GT=`#sdppp-popup-root { + `)},300))})}update(){this.widget.label=zn.storeCount()>0&&Bn.instance.id?me("current ComfyUI pageid: {0}",Bn.instance.id.slice(0,4)):me("download PS plugin (.ccx)")}documentWidgetByLinked=null;linkDocumentWidget(t){this.documentWidgetByLinked=t}};function fO(e,t,r=!1){t instanceof Function&&(t=t()),e.value||(e.value=t[0]),t.indexOf(e.value)==-1&&r&&(e.value=t[0])}var ca=class e{static nodeMap=new WeakMap;static registerNodeType(t,r,n){n.prehandleNodeType&&n.prehandleNodeType(t.nodeData||r);let o=t.prototype.onAdded,i=t.prototype.onRemoved;t.prototype.onAdded=async function(...s){o&&await o.call(this,...s);let l=new n(this);e.nodeMap.set(this,l),await l.update()},t.prototype.onRemoved=async function(...s){i&&await i.call(this,...s);let l=e.nodeMap.get(this);e.nodeMap.delete(this),l?.onDestroy()},t.prototype.onDrawForeground=async function(s){let l=e.nodeMap.get(this);l?.onDrawForeground(s),await l?.update()},t.prototype.onConfigure=async function(...s){let l=e.nodeMap.get(this);l?.onConfigure(s[0]),await l?.update()};let a=t.prototype.onConnectionsChange;t.prototype.onConnectionsChange=async function(s,l,c,u){let f=e.nodeMap.get(this);return s==1&&(f?.inputConnectionChange(l,c&&u),await f?.update()),s==2&&f?.outputConnectionChange(l,c),a?.apply(this,arguments)}}node;constructor(t){this.node=t}inputConnectionChange(t,r){}outputConnectionChange(t,r){}onDrawForeground(t){}onDestroy(){}onConfigure(t){this.node.setProperty("sdppp-version",Qp)}};var Mi=class extends ca{downloadWidget;constructor(t){super(t),this.downloadWidget||(this.downloadWidget=new gc(this.node))}onConfigure(t){super.onConfigure(t)}onDrawForeground(t){this.node.flags.collapsed||OR()||(t.save(),t.fillStyle="rgba(255, 0, 0, 0.2)",t.fillRect(0,0,this.node.size[0],this.node.size[1]),t.fillStyle="white",t.textAlign="center",t.fillText(me("Photoshop Disconnected!"),this.node.size[0]/2,5),t.restore())}async update(){this.downloadWidget?.update()}};var im=class{node;inputIndex;get index(){return this.inputIndex}constructor(t,r){this.node=t,this.inputIndex=r}update(){}connected=!1},vf=class extends im{get documentWidget(){return dO(this.node,this.node.inputs[this.inputIndex])?.documentWidget||null}},yf=class extends im{get documentWidget(){return dO(this.node,this.node.inputs[this.inputIndex])?.documentWidget||null}};function dO(e,t){if(!e.graph.links[t.link])return null;let r=e.graph.links[t.link].origin_id,n=e.graph.getNodeById(r);for(;n.type=="Reroute";)r=e.graph.links[n.inputs[0].link].origin_id,n=e.graph.getNodeById(r);return ca.nodeMap.get(n)}var Ao=class extends Mi{get documentWidget(){let t=this.inputs.find(r=>r.connected&&(r instanceof vf||r instanceof yf));return t?t.documentWidget:this.sdpppWidgets.find(r=>r instanceof Ya)}inputs=[];sdpppWidgets=[];constructor(t){super(t);let r=null;for(let n=0;n{if(!t.label)try{t.label=me(t.name)}catch{t.label=t.name}}),this.sdpppWidgets?.forEach(t=>{t.update()}),this.inputs?.forEach(t=>{t.update()}),super.update()}inputConnectionChange(t,r){super.inputConnectionChange(t,r),this.inputs.forEach(n=>{if(n.index==t){n.connected=r;let o=this.documentWidget;this.downloadWidget&&this.downloadWidget.linkDocumentWidget(o),this.sdpppWidgets.forEach(i=>{(i instanceof mc||i instanceof gc)&&i.linkDocumentWidget(o)})}})}};var am=class extends Ao{get documentWidget(){return this.inputs[0]?.documentWidget}async update(){super.update(),this.node.inputs.forEach(t=>t.label=me(t.name)),this.node.outputs.forEach(t=>t.label=me(t.name))}},hc=class extends Ao{async update(){super.update(),this.node.inputs.forEach(t=>t.label=me(t.name)),this.node.outputs.forEach(t=>t.label=me(t.name))}},sm=class extends Ao{async update(){super.update(),this.node.inputs.forEach(t=>t.label=me(t.name)),this.node.outputs.forEach(t=>t.label=me(t.name))}},lm=class extends Ao{get documentWidget(){return this.inputs[0]?.documentWidget}async update(){super.update(),this.node.inputs.forEach(t=>t.label=me(t.name)),this.node.outputs.forEach(t=>t.label=me(t.name)),this.node.widgets[0].label=me(this.node.widgets[0].name)}},cm=class extends Ao{get documentWidget(){return this.inputs[0]?.documentWidget}async update(){super.update(),this.node.inputs.forEach(t=>t.label=me(t.name)),this.node.outputs.forEach(t=>t.label=me(t.name)),this.node.widgets[0].label=me(this.node.widgets[0].name)}},um=class extends Mi{async update(){super.update(),this.node.inputs[0].label=me(this.node.inputs[0].name),this.node.inputs[1].label=me(this.node.inputs[1].name),this.node.outputs[0]&&(this.node.outputs[0].label=me(this.node.outputs[0].name))}},fm=class extends Mi{static prehandleNodeType(t){t.input.optional.document&&delete t.input.optional.document}async update(){super.update(),this.node.inputs[0].label=me(this.node.inputs[0].name),this.node.outputs[0]&&(this.node.outputs[0].label=me(this.node.outputs[0].name))}},dm=class extends Ao{get documentWidget(){return this.sdpppWidgets[0]}psdWidget;extractPSD(t,r){this.node.properties.psd&&Bn.instance.exportPSDDataURLToPhotoshop(t,r,this.node.properties.psd,Xe.data.ssid).then(async()=>{await new Promise(n=>setTimeout(n,300)),globalThis.app.canvas.draw(!0,!0)}).catch(console.error)}constructor(t){super(t),this.psdWidget=t.addWidget("button","","",()=>{if(!this.documentWidget.widget.value)return;let r=zn.getAllPhotoshopDocumentData(),[n,o]=this.documentWidget.widget.value.split("/");this.node.properties.psd?this.extractPSD(r[n].sid,o):Bn.instance.importPSDDataURLFromPhotoshop(r[n].sid,o,Xe.data.ssid).then(i=>{this.node.setProperty("psd",i)})},{})}async update(){super.update(),this.node.outputs.forEach(t=>t.label=me(t.name)),this.node.properties.psd?(Xe.setHasPSDNodes(!0),this.psdWidget.label=me("extract saved .psd to Photoshop")):(Xe.setHasPSDNodes(!1),this.psdWidget.label=me("save .psd to this workflow"))}},pm=class extends Ao{async update(){super.update(),this.node.inputs.forEach(r=>r.label=me(r.name)),this.node.outputs.forEach(r=>r.label=me(r.name));let t=[];if(this.documentWidget){let r=this.documentWidget.getPSStore();r&&(t=r.actions)}this.node.widgets[0].options.values=t,this.node.constructor.nodeData.input.required.action[0]=t}};var mm=class extends Mi{static prehandleNodeType(t){t.input.optional.document&&delete t.input.optional.document}documentWidget;layerWidget;constructor(t){let r=Ya.create(t,"document"),n=hf.create(t,"layer_or_group",{documentWidgetInNode:r,extraOptions:Xt.getSpecialLayerForGet()});super(t),this.documentWidget=r,this.layerWidget=n,this.node.widgets[0].name=="quality"?(this.node.widgets[1]=r.widget,this.node.widgets[2]=n.widget):(this.node.widgets[0]=r.widget,this.node.widgets[1]=n.widget)}onConfigure(t){if(t.properties["sdppp-version"])if(+t.properties["sdppp-version"]<=410){if(this.node.widgets[0].value===!0||this.node.widgets[0].value==="true"){let r=comfyAPI.app.app.addNodeOnGraph(hm["SDPPP Get Selection"],{pos:this.node.pos});new hc(r),this.node.outputs[0].links?.length?comfyAPI.app.app.addNodeOnGraph(hm.JoinImageWithAlpha,{pos:[this.node.pos[0]+r.size[0]+10,this.node.pos[1]-20]}):r.size=this.node.size,comfyAPI.app.app.graph.remove(this.node)}this.node.widgets[0].value=t.widgets_values[1],this.node.widgets[1].value=t.widgets_values[2]}else+t.properties["sdppp-version"]<504&&this.node.widgets[0].name=="quality"&&(this.node.widgets[0].value=100,this.node.widgets[1].value=t.widgets_values[0],this.node.widgets[2].value=t.widgets_values[1]);super.onConfigure(t)}async update(){this.documentWidget.lockMode(this.layerLinked,me("document linked")),this.layerWidget.lockMode(this.layerLinked,me("layer linked")),this.documentWidget.update(),this.layerWidget.update(),super.update(),this.node.widgets.forEach(t=>{if(!t.label)try{t.label=me(t.name)}catch{}}),this.node.inputs.forEach(t=>{if(!t.label)try{t.label=me(t.name)}catch{}}),this.node.outputs.forEach(t=>{if(!t.label)try{t.label=me(t.name)}catch{}})}layerLinked=!1;inputConnectionChange(t,r){super.inputConnectionChange(t,r),t==0&&(this.layerLinked=r)}},gm=class extends Mi{static prehandleNodeType(t){t.input.optional.document&&delete t.input.optional.document}documentWidget;layerWidget;constructor(t){let r=Ya.create(t,"document"),n=hf.create(t,"layer_or_group",{documentWidgetInNode:r,extraOptions:Xt.getSpecialLayerForSend()});super(t),this.documentWidget=r,this.layerWidget=n}async update(){this.documentWidget?.lockMode(this.layerLinked,me("document linked")),this.layerWidget?.lockMode(this.layerLinked,me("layer linked")),this.documentWidget.update(),this.layerWidget.update(),super.update(),this.node.widgets[0].label||(this.node.widgets[0].label=me(this.node.widgets[0].name)),this.node.widgets[1].label||(this.node.widgets[1].label=me(this.node.widgets[1].name)),this.node.inputs[0].label=me(this.node.inputs[0].name),this.node.inputs[1].label=me(this.node.inputs[1].name),this.node.inputs[2].label=me(this.node.inputs[2].name),this.node.outputs[0].label=me(this.node.outputs[0].name)}layerLinked=!1;inputConnectionChange(t,r){super.inputConnectionChange(t,r),t==1&&(this.layerLinked=r)}onConfigure(t){"sdppp_send_prefix"in t.properties||this.node.setProperty("sdppp_send_prefix",""),super.onConfigure(t)}};var wx={"Get Image From Photoshop Layer":mm,"Send Images To Photoshop":gm,"SDPPP Send Text To Layer":um,"SDPPP Get Text From Layer":fm,"SDPPP Parse Layer Info":sm,"SDPPP Get Linked Layers":cm,"SDPPP Get Layers In Group":lm,"SDPPP Get Layer By ID":am,"SDPPP Get Document":dm,"SDPPP Get Selection":hc,"SDPPP Select Layer And Run PS Action":pm},hm={};function pO(e,t){let r=e.comfyClass||t.name;if(hm[r]=t,r in wx)e.title=me(t.display_name),t.display_name=me(t.display_name),ca.registerNodeType(e,t,wx[r]);else if(r.startsWith("workflow")&&comfyAPI.groupNode.GroupNodeHandler.getGroupData(e)){let n=comfyAPI.groupNode.GroupNodeHandler.getGroupData(e),o=!1;n.nodeData.nodes.forEach((i,a)=>{i.type in wx&&(o=!0)}),o&&ca.registerNodeType(e,t,Ao)}else return}var dR=E(qT(),1),pR=E($(),1);var GT=`#sdppp-popup-root { width: 100%; height: 100%; position: absolute; diff --git a/package.json b/package.json index 44f34e4..e97968b 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "sdppp", - "version": "1.8.4", + "version": "1.8.5", "type": "module", "scripts": { "watch": "nodemon -w typescripts -e mjs,js,jsx,mts,ts,tsx,json,css,html -x node typescripts/src/build/index.build.ts", diff --git a/plugins/photoshop/dist/photoshop-internal.js b/plugins/photoshop/dist/photoshop-internal.js index 8343aa6..3f13de9 100644 --- a/plugins/photoshop/dist/photoshop-internal.js +++ b/plugins/photoshop/dist/photoshop-internal.js @@ -1,6 +1,6 @@ -"use strict";(()=>{var qi=Object.create;var Ht=Object.defineProperty;var Ro=Object.getOwnPropertyDescriptor;var Qi=Object.getOwnPropertyNames;var Gi=Object.getPrototypeOf,Ki=Object.prototype.hasOwnProperty;var N=(e=>typeof require<"u"?require:typeof Proxy<"u"?new Proxy(e,{get:(t,r)=>(typeof require<"u"?require:t)[r]}):e)(function(e){if(typeof require<"u")return require.apply(this,arguments);throw Error('Dynamic require of "'+e+'" is not supported')});var Ye=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports),Vr=(e,t)=>{for(var r in t)Ht(e,r,{get:t[r],enumerable:!0})},Hi=(e,t,r,o)=>{if(t&&typeof t=="object"||typeof t=="function")for(let n of Qi(t))!Ki.call(e,n)&&n!==r&&Ht(e,n,{get:()=>t[n],enumerable:!(o=Ro(t,n))||o.enumerable});return e};var b=(e,t,r)=>(r=e!=null?qi(Gi(e)):{},Hi(t||!e||!e.__esModule?Ht(r,"default",{value:e,enumerable:!0}):r,e));var x=(e,t,r,o)=>{for(var n=o>1?void 0:o?Ro(t,r):t,i=e.length-1,s;i>=0;i--)(s=e[i])&&(n=(o?s(t,r,n):s(n))||n);return o&&n&&Ht(t,r,n),n};var E=Ye((Ka,Go)=>{"use strict";Go.exports=window.React});var Xo=Ye((nc,Jo)=>{"use strict";var ut=1e3,lt=ut*60,dt=lt*60,tt=dt*24,fs=tt*7,ps=tt*365.25;Jo.exports=function(e,t){t=t||{};var r=typeof e;if(r==="string"&&e.length>0)return ms(e);if(r==="number"&&isFinite(e))return t.long?gs(e):hs(e);throw new Error("val is not a non-empty string or a valid number. val="+JSON.stringify(e))};function ms(e){if(e=String(e),!(e.length>100)){var t=/^(-?(?:\d+)?\.?\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)?$/i.exec(e);if(t){var r=parseFloat(t[1]),o=(t[2]||"ms").toLowerCase();switch(o){case"years":case"year":case"yrs":case"yr":case"y":return r*ps;case"weeks":case"week":case"w":return r*fs;case"days":case"day":case"d":return r*tt;case"hours":case"hour":case"hrs":case"hr":case"h":return r*dt;case"minutes":case"minute":case"mins":case"min":case"m":return r*lt;case"seconds":case"second":case"secs":case"sec":case"s":return r*ut;case"milliseconds":case"millisecond":case"msecs":case"msec":case"ms":return r;default:return}}}}function hs(e){var t=Math.abs(e);return t>=tt?Math.round(e/tt)+"d":t>=dt?Math.round(e/dt)+"h":t>=lt?Math.round(e/lt)+"m":t>=ut?Math.round(e/ut)+"s":e+"ms"}function gs(e){var t=Math.abs(e);return t>=tt?ir(e,t,tt,"day"):t>=dt?ir(e,t,dt,"hour"):t>=lt?ir(e,t,lt,"minute"):t>=ut?ir(e,t,ut,"second"):e+" ms"}function ir(e,t,r,o){var n=t>=r*1.5;return Math.round(e/r)+" "+o+(n?"s":"")}});var en=Ye((ic,Zo)=>{"use strict";function ys(e){r.debug=r,r.default=r,r.coerce=c,r.disable=s,r.enable=n,r.enabled=a,r.humanize=Xo(),r.destroy=p,Object.keys(e).forEach(d=>{r[d]=e[d]}),r.names=[],r.skips=[],r.formatters={};function t(d){let u=0;for(let g=0;g{if(be==="%%")return"%";I++;let k=r.formatters[ie];if(typeof k=="function"){let G=y[I];be=k.call(v,G),y.splice(I,1),I--}return be}),r.formatArgs.call(v,y),(v.log||r.log).apply(v,y)}return m.namespace=d,m.useColors=r.useColors(),m.color=r.selectColor(d),m.extend=o,m.destroy=r.destroy,Object.defineProperty(m,"enabled",{enumerable:!0,configurable:!1,get:()=>g!==null?g:(l!==r.namespaces&&(l=r.namespaces,f=r.enabled(d)),f),set:y=>{g=y}}),typeof r.init=="function"&&r.init(m),m}function o(d,u){let g=r(this.namespace+(typeof u>"u"?":":u)+d);return g.log=this.log,g}function n(d){r.save(d),r.namespaces=d,r.names=[],r.skips=[];let u=(typeof d=="string"?d:"").trim().replace(" ",",").split(",").filter(Boolean);for(let g of u)g[0]==="-"?r.skips.push(g.slice(1)):r.names.push(g)}function i(d,u){let g=0,l=0,f=-1,m=0;for(;g"-"+u)].join(",");return r.enable(""),d}function a(d){for(let u of r.skips)if(i(d,u))return!1;for(let u of r.names)if(i(d,u))return!0;return!1}function c(d){return d instanceof Error?d.stack||d.message:d}function p(){console.warn("Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.")}return r.enable(r.load()),r}Zo.exports=ys});var ar=Ye((se,sr)=>{"use strict";se.formatArgs=vs;se.save=bs;se.load=Ss;se.useColors=ws;se.storage=Ps();se.destroy=(()=>{let e=!1;return()=>{e||(e=!0,console.warn("Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`."))}})();se.colors=["#0000CC","#0000FF","#0033CC","#0033FF","#0066CC","#0066FF","#0099CC","#0099FF","#00CC00","#00CC33","#00CC66","#00CC99","#00CCCC","#00CCFF","#3300CC","#3300FF","#3333CC","#3333FF","#3366CC","#3366FF","#3399CC","#3399FF","#33CC00","#33CC33","#33CC66","#33CC99","#33CCCC","#33CCFF","#6600CC","#6600FF","#6633CC","#6633FF","#66CC00","#66CC33","#9900CC","#9900FF","#9933CC","#9933FF","#99CC00","#99CC33","#CC0000","#CC0033","#CC0066","#CC0099","#CC00CC","#CC00FF","#CC3300","#CC3333","#CC3366","#CC3399","#CC33CC","#CC33FF","#CC6600","#CC6633","#CC9900","#CC9933","#CCCC00","#CCCC33","#FF0000","#FF0033","#FF0066","#FF0099","#FF00CC","#FF00FF","#FF3300","#FF3333","#FF3366","#FF3399","#FF33CC","#FF33FF","#FF6600","#FF6633","#FF9900","#FF9933","#FFCC00","#FFCC33"];function ws(){if(typeof window<"u"&&window.process&&(window.process.type==="renderer"||window.process.__nwjs))return!0;if(typeof navigator<"u"&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/(edge|trident)\/(\d+)/))return!1;let e;return typeof document<"u"&&document.documentElement&&document.documentElement.style&&document.documentElement.style.WebkitAppearance||typeof window<"u"&&window.console&&(window.console.firebug||window.console.exception&&window.console.table)||typeof navigator<"u"&&navigator.userAgent&&(e=navigator.userAgent.toLowerCase().match(/firefox\/(\d+)/))&&parseInt(e[1],10)>=31||typeof navigator<"u"&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/applewebkit\/(\d+)/)}function vs(e){if(e[0]=(this.useColors?"%c":"")+this.namespace+(this.useColors?" %c":" ")+e[0]+(this.useColors?"%c ":" ")+"+"+sr.exports.humanize(this.diff),!this.useColors)return;let t="color: "+this.color;e.splice(1,0,t,"color: inherit");let r=0,o=0;e[0].replace(/%[a-zA-Z%]/g,n=>{n!=="%%"&&(r++,n==="%c"&&(o=r))}),e.splice(o,0,t)}se.log=console.debug||console.log||(()=>{});function bs(e){try{e?se.storage.setItem("debug",e):se.storage.removeItem("debug")}catch{}}function Ss(){let e;try{e=se.storage.getItem("debug")}catch{}return!e&&typeof process<"u"&&"env"in process&&(e=process.env.DEBUG),e}function Ps(){try{return localStorage}catch{}}sr.exports=en()(se);var{formatters:Ds}=sr.exports;Ds.j=function(e){try{return JSON.stringify(e)}catch(t){return"[UnexpectedJSONParseError]: "+t.message}}});var S=Ye((ac,on)=>{"use strict";on.exports=window.ReactJSXRuntime});var ln=Ye((dc,un)=>{"use strict";un.exports=window.socketIO});var xt=Ye((Lc,yn)=>{"use strict";yn.exports=window.Jimp});var To={};Vr(To,{Auths:()=>Mi,Promote:()=>Bi,SDPPP:()=>Oi,SDPPPProvider:()=>si,useAgentState:()=>Lr,useSDPPPComfyCaller:()=>oe,useSDPPPContext:()=>We,useSDPPPWebpageList:()=>Ar,useSDPPPWorkflowList:()=>ai});var R=N("photoshop");var Ee=N("photoshop"),Yi=N("uxp");var qr={"SDPPP Get Document":"Get Document","SDPPP Get Layer By ID":"Get Layer","SDPPP Get Linked Layers":"Get Linked Layers","SDPPP Get Layers In Group":"Get Layers In Group","SDPPP Get Text From Layer":"Get Text From Layer","SDPPP Parse Layer Info":"Parse Layer Info","SDPPP Get Selection":"Get Selection","SDPPP Get Image From Photoshop":"Get Image From Photoshop","SDPPP Send Images To Photoshop":"Send Images To Photoshop","SDPPP Select Layer And Run PS Action":"Select Layer And Run PS Action"};var Qr={"### Active Document ###":"### \u5F53\u524D\u6587\u6863 ###","### The Canvas ###":"### \u6574\u4E2A\u753B\u5E03 ###","### New Layer ###":"### \u65B0\u56FE\u5C42 ###","### Selected Layer ###":"### \u6240\u9009\u56FE\u5C42 ###","### Keep Size or Fit Canvas ###":"### \u4FDD\u6301\u5C3A\u5BF8\u6216\u9002\u5E94\u753B\u5E03 ###",_SDPPP_PSD_:"_SDPPP_PSD_","Save and run immediately":"\u4FDD\u5B58\u5E76\u7ACB\u5373\u6267\u884C",Close:"\u5173\u95ED","Select a {0}":"\u9009\u62E9\u4E00\u4E2A {0}","How to use .ccx file":"\u5982\u4F55\u4F7F\u7528 .ccx \u6587\u4EF6","1. If you have installed Adobe Creative Cloud":"1. \u5982\u679C\u4F60\u5DF2\u7ECF\u5B89\u88C5\u4E86 Adobe Creative Cloud","Just double click the .ccx file, it will install the plugin automatically":"\u53CC\u51FB .ccx \u6587\u4EF6\uFF0C\u5B83\u4F1A\u81EA\u52A8\u5B89\u88C5","2. If you don't have Adobe Creative Cloud":"2. \u5982\u679C\u4F60\u6CA1\u6709 Adobe Creative Cloud","Rename .ccx to .zip and extract it into ":"\u5C06 .ccx \u91CD\u547D\u540D\u4E3A .zip \u5E76\u89E3\u538B\u5230",or:"\u6216","Photoshop directory":"Photoshop \u5B89\u88C5\u76EE\u5F55","Cannot connect multiple different document widgets with same value":"\u4E0D\u80FD\u8FDE\u63A5\u591A\u4E2A\u5177\u6709\u76F8\u540C\u503C\u7684\u6587\u6863\u5C0F\u90E8\u4EF6","You can only have one SDPPP Settings node in a workflow":"\u4E00\u4E2A\u5DE5\u4F5C\u6D41\u4E2D\u53EA\u80FD\u6709\u4E00\u4E2A SDPPP Settings \u8282\u70B9","convert widget {0} failed:":"\u63A7\u4EF6{0}\u8F6C\u6362\u5931\u8D25\uFF1A","hidden webview load failed: {0}, please select a browser page to continue":"\u5185\u7F6E webview \u52A0\u8F7D\u5931\u8D25: {0}\uFF0C\u8BF7\u9009\u62E9\u4E00\u4E2A\u6D4F\u89C8\u5668\u9875\u9762\u7EE7\u7EED","SDPPP Get Document":"\u83B7\u53D6\u6587\u6863(GetDocument)","SDPPP Get Layer By ID":"\u83B7\u53D6\u56FE\u5C42(GetLayer)","SDPPP Get Linked Layers":"\u83B7\u53D6\u94FE\u63A5\u56FE\u5C42(GetLinkedLayers)","SDPPP Get Layers In Group":"\u83B7\u53D6\u7EC4\u4E2D\u56FE\u5C42(GetLayersInGroup)","SDPPP Get Text From Layer":"\u83B7\u53D6\u56FE\u5C42\u6587\u672C(GetTextFromLayer)","SDPPP Parse Layer Info":"\u89E3\u6790\u56FE\u5C42\u4FE1\u606F(ParseLayerInfo)","SDPPP Get Selection":"\u83B7\u53D6\u9009\u533A(GetSelection)","SDPPP Get Image From Photoshop":"\u4ECEPS\u83B7\u53D6\u56FE\u50CF(GetImageFromPhotoshop)","SDPPP Send Images To Photoshop":"\u53D1\u9001\u56FE\u50CF\u5230PS(SendImagesToPhotoshop)","SDPPP Send Text To Layer":"\u53D1\u9001\u6587\u672C\u5230\u56FE\u5C42(SendTextToLayer)","SDPPP Select Layer And Run PS Action":"\u9009\u4E2D\u56FE\u5C42\u5E76\u8FD0\u884CPS Action(RunPhotoshopAction)","download PS plugin (.ccx)":"\u4E0B\u8F7D Photoshop \u63D2\u4EF6 (.ccx)","current ComfyUI pageid: {0}":"\u5F53\u524D ComfyUI \u9875\u9762ID: {0}","current A1111 pageid: {0}":"\u5F53\u524D A1111 \u9875\u9762ID: {0}","document linked":"\u6587\u6863\u53C2\u6570\u5DF2\u94FE\u63A5","layer linked":"\u56FE\u5C42\u53C2\u6570\u5DF2\u94FE\u63A5","bound linked":"\u8303\u56F4\u53C2\u6570\u5DF2\u94FE\u63A5",document:"\u6587\u6863",Document:"\u6587\u6863",DOCUMENT:"\u6587\u6863",document_name:"\u6587\u6863\u540D\u5B57id",layer_nameid:"\u56FE\u5C42\u540D\u5B57id",layer_name:"\u56FE\u5C42\u540D\u5B57",layer_info:"\u56FE\u5C42\u4FE1\u606F",bound_top:"\u8303\u56F4\u4E0A\u8FB9\u8DDD",bound_left:"\u8303\u56F4\u5DE6\u8FB9\u8DDD",bound_width:"\u8303\u56F4\u5BBD\u5EA6",bound_height:"\u8303\u56F4\u9AD8\u5EA6",center_x:"\u4E2D\u5FC3\u70B9x",center_y:"\u4E2D\u5FC3\u70B9y",opacity:"\u900F\u660E\u5EA6",layer:"\u56FE\u5C42",layer_or_group:"\u56FE\u5C42(\u6216\u7EC4)",Layer_or_group:"\u56FE\u5C42(\u6216\u7EC4)",bound:"\u8303\u56F4",bounds:"\u8303\u56F4","bounds [optional]":"\u8303\u56F4[\u53EF\u9009]",boundary:"\u8303\u56F4",Boundary:"\u8303\u56F4",canvas_boundary:"\u753B\u5E03\u8303\u56F4",canvas_bound:"\u753B\u5E03\u8303\u56F4",layer_boundary:"\u56FE\u5C42\u8303\u56F4",layer_bound:"\u56FE\u5C42\u8303\u56F4","Photoshop Disconnected!":"Photoshop \u672A\u8FDE\u63A5\uFF01",rgb_out:"RGB\u8F93\u51FA",alpha_out:"Alpha\u8F93\u51FA",images:"\u56FE\u50CF",text:"\u6587\u672C",ID_mode:"\u7CBE\u786EID\u6A21\u5F0F",name_mode:"\u540D\u5B57\u5339\u914D\u6A21\u5F0F",select:"\u9009\u62E9","document boundary":"\u6587\u6863\u8303\u56F4","layer boundary":"\u56FE\u5C42\u8303\u56F4","selection boundary":"\u9009\u4E2D\u8303\u56F4","save .psd to this workflow":"\u4FDD\u5B58.psd\u5230\u8FD9\u4E2A\u5DE5\u4F5C\u6D41","extract saved .psd to Photoshop":"\u63D0\u53D6\u4FDD\u5B58\u7684.psd\u5230Photoshop","sample .psd":"\u793A\u4F8B.psd",mask:"\u906E\u7F69",name:"\u540D\u79F0",quality:"\u56FE\u50CF\u8D28\u91CF",action_set:"\u52A8\u4F5C\u7EC4",action:"\u52A8\u4F5C",Runner:"\u8FD0\u884C\u8F7D\u4F53","PS Webview":"PS \u5185\u7F6E\u7F51\u9875","Browser {0}":"\u6D4F\u89C8\u5668\u9875\u9762 {0}",timeout:"\u8D85\u65F6","Loading...":"\u52A0\u8F7D\u4E2D...","--multi-user Not Login!":"--multi-user\u5DF2\u6FC0\u6D3B\uFF0C\u4F46\u672A\u767B\u5F55\uFF01",Logout:"\u767B\u51FA","User: ":"\u7528\u6237: ",connect:"\u8FDE\u63A5",connected:"\u5DF2\u8FDE\u63A5",disconnect:"\u65AD\u5F00",disconnected:"\u5DF2\u65AD\u5F00\u8FDE\u63A5","reconnecting...":"\u91CD\u8FDE\u4E2D...",connecting:"\u8FDE\u63A5\u4E2D",webpages:"\u7F51\u9875\u5217\u8868",workflows:"\u5DE5\u4F5C\u6D41",workflow:"\u5DE5\u4F5C\u6D41","auto run page [{0}] after change..":"\u66F4\u6539\u540E\u81EA\u52A8\u8FD0\u884C\u9875\u9762 {0}..","auto run workflow [{0}] after change..":"\u66F4\u6539\u540E\u81EA\u52A8\u8FD0\u884C\u5DE5\u4F5C\u6D41 {0}..","auto run workflow after change..":"\u66F4\u6539\u540E\u81EA\u52A8\u8FD0\u884C\u5DE5\u4F5C\u6D41..",selection_only:"\u4EC5\u9009\u533A","Queue:":"\u961F\u5217:","Set As:":"\u8BBE\u7F6E\u4E3A:","Error {0}... please contact me via Discord/Github":"\u51FA\u73B0\u9519\u8BEF {0}...\uFF0C\u8BF7\u901A\u8FC7 QQ/Github \u8054\u7CFB\u6211","Webview initialize failed. Please report to me via Discord/Github with your ComfyURL, Operate System":"Webview \u521D\u59CB\u5316\u5931\u8D25\uFF0C\u8BF7\u901A\u8FC7 QQ/Github \u8054\u7CFB\u6211\u5E76\u9644\u4E0A\u4F60\u7684Comfy\u5730\u5740\u3001\u64CD\u4F5C\u7CFB\u7EDF","ComfyUI with --multi-user is only available for sponsors":'\u5E26"--multi-user"\u7684ComfyUI\u4EC5\u5BF9\u8D5E\u52A9\u8005\u5F00\u653E',"Workflow Runner is loading...":"\u8FD0\u884C\u8F7D\u4F53\u5C1A\u5728\u52A0\u8F7D...","(Page ID: {0})Queue: {1}":"(\u9875\u9762ID: {0}) \u961F\u5217\u957F\u5EA6 {1}","no suitable node to control in this workflow":"\u8FD9\u4E2A\u5DE5\u4F5C\u6D41\u4E2D\u6CA1\u6709\u80FD\u63A7\u5236\u7684\u8282\u70B9",Save:"\u4FDD\u5B58",Edit:"\u7F16\u8F91","Edit in ComfyUI":"\u5728 ComfyUI \u4E2D\u7F16\u8F91","using browser page [{0}] for workflow running":"\u6B63\u63A5\u7BA1\u7F51\u9875 [{0}] \u8FD0\u884C\u5DE5\u4F5C\u6D41","workflow running by hidden webview":"\u5DE5\u4F5C\u6D41\u5728\u9690\u85CF\u7684webview\u4E2D\u8FD0\u884C","Lock Image":"\u9501\u5B9A\u56FE\u50CF","Unlock Image":"\u89E3\u9501\u56FE\u50CF","search...":"\u641C\u7D22...","disabled when running in browser page":"\u63A5\u7BA1\u7F51\u9875\u65F6\u4E0D\u53EF\u7528","only supported in Photoshop":"\u4EC5\u5728 Photoshop \u4E2D\u652F\u6301",Login:"\u767B\u5F55","Invitation Code":"\u9080\u8BF7\u7801",Username:"\u7528\u6237\u540D",Password:"\u5BC6\u7801","Please input invitation code":"\u8BF7\u8F93\u5165\u9080\u8BF7\u7801","Please input username":"\u8BF7\u8F93\u5165\u7528\u6237\u540D","Please input password":"\u8BF7\u8F93\u5165\u5BC6\u7801","Open more ComfyUI pages to see more options here":"\u6253\u5F00\u66F4\u591A ComfyUI \u9875\u9762\u4EE5\u67E5\u770B\u66F4\u591A\u9009\u9879","Comfy multi-user: ":"Comfy \u591A\u7528\u6237: ","Not Login":"\u672A\u767B\u5F55","Comfy API-Key: ":"Comfy API-Key: ","Login/Auth":"\u767B\u5F55/\u8BA4\u8BC1","Logged in by email/password":"\u5DF2\u901A\u8FC7\u90AE\u7BB1/\u5BC6\u7801\u767B\u5F55","Set API Key":"\u8BBE\u7F6E API Key","Please input API key (will reload Runner)":"\u8BF7\u8F93\u5165 API Key (\u4F1A\u91CD\u542F\u8FD0\u884C\u8F7D\u4F53)","### Active Workflow ###":"### \u5F53\u524D\u5DE5\u4F5C\u6D41 ###","### Example SDXL ###":"### \u793A\u4F8BSDXL\u5DE5\u4F5C\u6D41 ###","Open ComfyUI in the browser to see more options":"\u5728\u6D4F\u89C8\u5668\u4E2D\u6253\u5F00 ComfyUI \u4EE5\u5F97\u5230\u66F4\u591A\u9009\u9879","Webview load timeout, please switch to a different runner":"Webview \u52A0\u8F7D\u8D85\u65F6\uFF0C\u8BF7\u5207\u6362\u5230\u5176\u4ED6\u8FD0\u884C\u8F7D\u4F53","Save workflow to ComfyUI":"\u4FDD\u5B58\u5DE5\u4F5C\u6D41\u5230 ComfyUI","Reload workflow":"\u91CD\u65B0\u52A0\u8F7D\u5DE5\u4F5C\u6D41","Stop and cancel all":"\u505C\u6B62\u5E76\u53D6\u6D88\u6240\u6709","Start auto running after change":"\u66F4\u6539\u540E\u81EA\u52A8\u8FD0\u884C","Stop auto run":"\u505C\u6B62\u81EA\u52A8\u8FD0\u884C","Run workflow":"\u8FD0\u884C\u5DE5\u4F5C\u6D41","Run workflow xN":"\u8FD0\u884C\u5DE5\u4F5C\u6D41N\u6B21","502: Maybe the server is not running":"502: \u670D\u52A1\u5668\u53EF\u80FD\u672A\u8FD0\u884C","404: Maybe SDPPP is not installed or failed to run in ComfyUI":"404: \u53EF\u80FD\u5728ComfyUI\u4E2DSDPPP\u672A\u5B89\u88C5\u6216\u8FD0\u884C\u5931\u8D25","{0}. reconnecting...":"{0}. \u91CD\u8FDE\u4E2D...","disconnected to {0} failed {1}":"\u65AD\u5F00\u8FDE\u63A5 {0} \u9519\u8BEF {1}","version mismatch, please reinstall PS plugin":"\u7248\u672C\u4E0D\u5339\u914D\uFF0C\u8BF7\u91CD\u65B0\u5B89\u88C5 PS \u63D2\u4EF6","instance type not recognized":"\u672A\u8BC6\u522B\u7684\u8F6F\u4EF6\u7C7B\u578B","Error: {0}":"\u9519\u8BEF: {0}","Verification Error":"\u9A8C\u8BC1\u9519\u8BEF","document {0} not found":"\u627E\u4E0D\u5230\u6587\u6863: {0}",'only layer kind "TEXT" is supported, invalid layer: {0}':"\u4E0D\u652F\u6301\u975E\u6587\u672C\u56FE\u5C42: {0}","create layer failed":"\u521B\u5EFA\u56FE\u5C42\u5931\u8D25","layer not found {0}":"\u627E\u4E0D\u5230\u56FE\u5C42: {0}","no linked layer for {0}":"\u6CA1\u6709\u94FE\u63A5\u56FE\u5C42: {0}","layer {0} is not a group":"\u56FE\u5C42 {0} \u4E0D\u662F\u4E00\u4E2A\u7EC4","no layer in group {0}":"\u7EC4 {0} \u4E2D\u6CA1\u6709\u56FE\u5C42","layer not found: {0}":"\u627E\u4E0D\u5230\u56FE\u5C42: {0}","No upload_name":"\u4E0A\u4F20\u63A5\u53E3\u8FD4\u56DE\u4E86\u5931\u8D25","get pixel of {0} failed":"\u83B7\u53D6\u50CF\u7D20\u5931\u8D25: {0}","merge group failed":"\u5408\u5E76\u7EC4\u5931\u8D25","invalid name: {0}":"\u975E\u6CD5\u7684\u540D\u79F0: {0}","get_layer_info: layer_identify required":"get_layer_info: \u9700\u8981 layer_identify","invalid action: {0}":"\u65E0\u6548\u7684\u64CD\u4F5C: {0}","create document failed":"\u521B\u5EFA\u6587\u6863\u5931\u8D25","create document for preview":"\u521B\u5EFA\u9884\u89C8\u6587\u6863","resize document for preview":"\u8C03\u6574\u9884\u89C8\u6587\u6863\u5C3A\u5BF8","no first related layer in {0}":"\u7EC4 {0} \u4E2D\u6CA1\u6709\u7B2C\u4E00\u4E2A\u76F8\u5173\u56FE\u5C42","imageDataError: data length is not multiple of width * height":"\u56FE\u50CF\u6570\u636E\u6709\u8BEF: \u6570\u636E\u957F\u5EA6\u4E0D\u662F\u5BBD\u5EA6 * \u9AD8\u5EA6\u7684\u500D\u6570","imageDataError: originComponents must be 1 or 3":"\u56FE\u50CF\u6570\u636E\u6709\u8BEF: originComponents \u5FC5\u987B\u662F 1 \u6216 3","unexpected connection lost, please try to reconnect":"\u610F\u5916\u65AD\u5F00\u8FDE\u63A5\uFF0C\u8BF7\u5C1D\u8BD5\u91CD\u65B0\u8FDE\u63A5","Workflow list is empty, please save a workflow by Comfy's lastest UI":"\u5DE5\u4F5C\u6D41\u5217\u8868\u4E3A\u7A7A\uFF0C\u8BF7\u5728Comfy\u7684\u65B0\u7248UI\u4E2D\u4FDD\u5B58\u4E00\u4E2A\u5DE5\u4F5C\u6D41","No opened ComfyUI pages":"\u6CA1\u6709\u5DF2\u6253\u5F00\u7684ComfyUI\u9875\u9762","comfyAPI is not initialized, maybe comfyUI is too old":"\u65E0\u6CD5\u83B7\u53D6 ComfyAPI\uFF0C\u53EF\u80FD ComfyUI \u7248\u672C\u592A\u65E7","unsupported channel counts: {0}":"\u4E0D\u652F\u6301\u7684\u901A\u9053\u6570: {0}","Timeout, Maybe the URL is wrong":"\u8D85\u65F6\uFF0C\u53EF\u80FD comfy\u5730\u5740 \u586B\u5199\u9519\u8BEF","Workflow list loading failed: {0}":"\u5DE5\u4F5C\u6D41\u5217\u8868\u52A0\u8F7D\u5931\u8D25: {0}","Please register a user in ComfyUI":"\u8BF7\u5728 ComfyUI \u4E2D\u6CE8\u518C\u4E00\u4E2A\u7528\u6237","GetSelection need Photoshop version 25+":"GetSelection \u9700\u8981 Photoshop 25+ \u7248\u672C","Action {0} not found":"Action {0} \u672A\u627E\u5230","Action set {0} not found":"ActionSet {0} \u672A\u627E\u5230","{0} cannot be used in Photoshop Action Node":"{0} \u4E0D\u80FD\u5728 Photoshop Action \u8282\u70B9\u4E2D\u4F7F\u7528","Group layers":"\u56FE\u5C42\u7EC4","Show All Groups":"\u663E\u793A\u6240\u6709\u7EC4","create document for sent images":"\u7ED9\u53D1\u9001\u7684\u56FE\u7247\u521B\u5EFA\u6587\u6863","show sent images":"\u663E\u793A\u53D1\u9001\u7684\u56FE\u7247","fallback show sent images":"\u53D6\u6D88\u663E\u793A\u53D1\u9001\u7684\u56FE\u7247","get content of layer {0}":"\u83B7\u53D6\u56FE\u5C42 {0} \u7684\u5185\u5BB9","fallback get content of layer {0}":"\u53D6\u6D88\u83B7\u53D6\u56FE\u5C42 {0} \u7684\u5185\u5BB9","get layer info":"\u83B7\u53D6\u56FE\u5C42\u4FE1\u606F","sdppp extract PSD":"sdppp \u5BFC\u5165 PSD","sdppp get PSD":"sdppp \u83B7\u53D6 PSD","set text to layer":"\u8BBE\u7F6E\u56FE\u5C42\u7684\u6587\u672C","run Photoshop Action":"sdppp \u8FD0\u884C Photoshop Action","select layer":"sdppp \u9009\u4E2D\u56FE\u5C42","{0} wants to extract a PSD file to Photoshop, are you sure?":"{0} \u60F3\u8981\u91CA\u653E\u4E00\u4E2A.psd\u6587\u4EF6\u5230Photoshop\uFF0C\u786E\u5B9A\u5417\uFF1F","should sdppp refuse extracting PSD to Photoshop in this session anymore?":"\u662F\u5426\u8981\u8BA9 sdppp \u62D2\u7EDD\u672C\u6B21PS\u4F1A\u8BDD\u518D\u6B21\u63A5\u53D7.psd\u91CA\u653E\u8BF7\u6C42\uFF1F","Wide Mode":"\u5BBD\u5C4F\u6A21\u5F0F","Quick Set":"\u5FEB\u901F\u8BBE\u7F6E","Selected Layer":"\u9009\u4E2D\u56FE\u5C42","Selected Layer (invert)":"\u9009\u4E2D\u56FE\u5C42(\u53CD\u5411)",Canvas:"\u753B\u5E03",Selection:"\u9009\u533A",Manual:"\u624B\u52A8\u6A21\u5F0F",Auto:"\u81EA\u52A8\u6A21\u5F0F","This plugin is based on sd-ppp":"\u672C\u63D2\u4EF6\u57FA\u4E8Esd-ppp\u5F00\u53D1","And follows its open source license:":"\u5E76\u9075\u5FAA\u5176\u5F00\u6E90\u534F\u8BAE\uFF1A",Cloud:"\u4E91\u7AEF\u63A8\u8350",Sponsors:"\u8D5E\u52A9","waiting...":"\u865A\u4F4D\u4EE5\u5F85",Links:"\u53CB\u60C5\u94FE\u63A5",Community:"\u793E\u533A","LICENSE:":"\u8BB8\u53EF\u8BC1\uFF1A","Official Site":"\u5B98\u65B9\u7F51\u7AD9",upload:"\u4E0A\u4F20","Simplify Workflow":"\u7B80\u5316\u5DE5\u4F5C\u6D41",Photoshop:"Photoshop","Photoshop plugin settings":"Photoshop \u63D2\u4EF6\u8BBE\u7F6E","Photoshop plugin":"Photoshop \u63D2\u4EF6","SDPPP Settings/Misc":"SDPPP \u8BBE\u7F6E/\u6742\u9879","Sample .PSD for this workflow:":"\u793A\u4F8B.PSD","Download Example .PSD":"\u4E0B\u8F7D\u793A\u4F8B.PSD","Maximum Image Size (px):":"\u6700\u5927\u56FE\u50CF\u5C3A\u5BF8(px)",Download:"\u4E0B\u8F7D",Upload:"\u4E0A\u4F20",Reset:"\u91CD\u7F6E",Refresh:"\u5237\u65B0","Comfy URL (You can copy it to connect ComfyUI in the plugin):":"Comfy\u5730\u5740(\u4F60\u53EF\u4EE5\u590D\u5236\u5B83\u5230\u63D2\u4EF6\u4E2D\u8FDE\u63A5ComfyUI):","use slider for number widget:":"\u6570\u5B57\u63A7\u4EF6\u4F7F\u7528\u6ED1\u5757","Photoshop is not connected":"Photoshop \u672A\u8FDE\u63A5","select...":"\u8BF7\u9009\u62E9","click to edit":"\u70B9\u51FB\u7F16\u8F91","ComfyManager not found, cannot reboot":"Comfy Manager\u672A\u5B89\u88C5\uFF0C\u65E0\u6CD5\u91CD\u542F","Failed to reboot ComfyUI":"\u91CD\u542FComfyUI\u5931\u8D25"};var No=typeof N<"u"?N:void 0,zt="en";typeof navigator<"u"&&navigator.language?zt=navigator.language=="zh-CN"?"zhcn":"en":No&&(zt=No("uxp").host.uiLocale.startsWith("zh")?"zhcn":"en");function h(e,...t){let r=zt=="zhcn"?Qr[e]:e in qr?qr[e]:e;if(!r)throw new Error(`i18n key not found: ${e}`);return r.replace(/{(\d+)}/g,function(o,n){return typeof t[n]<"u"?t[n]:o})}function $e(e,t){return e==t||Qr[e]==t}function je(){return zt}var C=class e{static SPECIAL_DOCUMENT_CURRENT="### Active Document ###";static is_SPECIAL_DOCUMENT_CURRENT(t){return $e(this.SPECIAL_DOCUMENT_CURRENT,t)}static get_SPECIAL_DOCUMENT_CURRENT(){return h(this.SPECIAL_DOCUMENT_CURRENT)}static SPECIAL_LAYER_KEEP_SIZE="### Keep Size or Fit Canvas ###";static is_SPECIAL_LAYER_FIT(t){return $e(this.SPECIAL_LAYER_KEEP_SIZE,t)}static get_SPECIAL_LAYER_FIT(){return h(this.SPECIAL_LAYER_KEEP_SIZE)}static SPECIAL_LAYER_USE_CANVAS="### The Canvas ###";static is_SPECIAL_LAYER_USE_CANVAS(t){return $e(this.SPECIAL_LAYER_USE_CANVAS,t)}static get_SPECIAL_LAYER_USE_CANVAS(){return h(this.SPECIAL_LAYER_USE_CANVAS)}static SPECIAL_LAYER_NEW_LAYER="### New Layer ###";static is_SPECIAL_LAYER_NEW_LAYER(t){return $e(this.SPECIAL_LAYER_NEW_LAYER,t)}static get_SPECIAL_LAYER_NEW_LAYER(){return h(this.SPECIAL_LAYER_NEW_LAYER)}static SPECIAL_LAYER_SELECTED_LAYER="### Selected Layer ###";static is_SPECIAL_LAYER_SELECTED_LAYER(t){return $e(this.SPECIAL_LAYER_SELECTED_LAYER,t)}static get_SPECIAL_LAYER_SELECTED_LAYER(){return h(this.SPECIAL_LAYER_SELECTED_LAYER)}static SPECIAL_LAYER_PREVIEW_DOCUMENT="_SDPPP_PSD_";static is_SPECIAL_LAYER_PREVIEW_DOCUMENT(t){return $e(this.SPECIAL_LAYER_PREVIEW_DOCUMENT,t)}static get_SPECIAL_LAYER_PREVIEW_DOCUMENT(){return h(this.SPECIAL_LAYER_PREVIEW_DOCUMENT)}static getSpecialDocumentCurrent(){return h(e.SPECIAL_DOCUMENT_CURRENT)}static getSpecialLayerForGet(){return[h(e.SPECIAL_LAYER_USE_CANVAS),h(e.SPECIAL_LAYER_SELECTED_LAYER)]}static getSpecialLayerForSend(){return[h(e.SPECIAL_LAYER_NEW_LAYER),h(e.SPECIAL_LAYER_SELECTED_LAYER)]}static getSpecialDocumentForPreview(){return h(e.SPECIAL_LAYER_PREVIEW_DOCUMENT)}static fixI18n(t){return this.is_SPECIAL_DOCUMENT_CURRENT(t)?this.SPECIAL_DOCUMENT_CURRENT:this.is_SPECIAL_LAYER_NEW_LAYER(t)?this.SPECIAL_LAYER_NEW_LAYER:this.is_SPECIAL_LAYER_PREVIEW_DOCUMENT(t)?this.SPECIAL_LAYER_PREVIEW_DOCUMENT:this.is_SPECIAL_LAYER_USE_CANVAS(t)?this.SPECIAL_LAYER_USE_CANVAS:this.is_SPECIAL_LAYER_SELECTED_LAYER(t)?this.SPECIAL_LAYER_SELECTED_LAYER:t}};function De(e,t,r=0){return"-".repeat(r)+`${t} (id:${e})`}function Ie(e,t){return`${t} (id:${e})`}function zi(e){let t=e.split(" (id:");return{name:t[0],id:parseInt(t[1].slice(0,-1))}}function Oo(e){return zi(e)}function Je(){let e=Ee.app.activeDocument?.activeLayers?.[0];return e?De(e.id,e.name):C.get_SPECIAL_LAYER_USE_CANVAS()}function Wo(e,t,r,o,n){let i=r.left,s=r.top,a=r.right,c=r.bottom,p=a-i,d=c-s,u=o.left,g=o.top,l=o.right,f=o.bottom,m=l-u,y=f-g,v=Math.max(i,u),w=Math.max(s,g),P=Math.min(a,l),I=Math.min(c,f),j=P-v,be=I-w,ie=m*y*n;if(t.length!==ie)throw new Error(`toImageDataArray.length(${t.length}) !== toLength(${ie})`);let k=j*be*n;if(e.length!==k)throw new Error(`fromImageDataArray.length(${e.length}) !== fromLength(${k})`);for(let G=0;G=i&&ze=s&&Gt0?e.activeLayers[0].id:0:C.is_SPECIAL_LAYER_NEW_LAYER(t)?-2:Mo(t)}function Gr(e,t=0,r=""){return e?.layers?e.layers.reduce((o,n)=>{let i=t==0?`/${n.name}`:`${r}/${n.name}`;return o.push({layer:n,path:i,level:t}),o.concat(Gr(n,t+1,i))},[]):[]}function pe(e,t){if(!e.layers)return null;for(let r=0;rt.id==$i(e)))||null}function Uo(e,t){return{name:t.name,opacity:t.opacity/100,boundary:{left:t.bounds?.left||0,top:t.bounds?.top||0,right:e.width-(t.bounds?.right||0),bottom:e.height-(t.bounds?.bottom||0),width:t.bounds?.width||0,height:t.bounds?.height||0},isGroup:t.kind==Ee.constants.LayerKind.GROUP}}function Fo(){let e=localStorage.getItem("sdppp_uid");return(!e||e.length!=3)&&(e=Ct(3),localStorage.setItem("sdppp_uid",e)),e}function Ct(e){let t="",r="abcdefghijklmnopqrstuvwxyz0123456789",o=r.length,n=0;for(;n{o[i]=r.bind(this,i),n.subscribe(t,o[i])})}unsubscribe(t){this.subscribers=this.subscribers.filter(([o,n])=>n!=t);let r=this.subscribersWithoutKey.get(t);r&&this.storeMap.forEach((o,n)=>{o.unsubscribe(r[n])})}addStore(t,r,o){let n=this.createStore(r,o);this.storeMap.set(t,n),this.subscribers.forEach(([i,s])=>{let a=this.subscribersWithoutKey.get(s);a||(a={},this.subscribersWithoutKey.set(s,a)),a[t]=s.bind(this,t),n.subscribe(i,a[t]),i=="/"&&s(t,r,null)})}removeStore(t){let r=this.storeMap.get(t);r&&(this.subscribers.forEach(([o,n])=>{let i=this.subscribersWithoutKey.get(n);i&&(r.unsubscribe(i[t]),o=="/"&&n(t,null,r.data))}),this.storeMap.delete(t))}sync(t){if(t instanceof Array){let r=Array.from(this.storeMap.keys()),o=t.filter(i=>!r.includes(i)),n=r.filter(i=>!t.includes(i));o.forEach(i=>this.addStore(i,{},0)),n.forEach(i=>this.removeStore(i))}else{Array.from(this.storeMap.keys()).filter(o=>!Object.keys(t).includes(o)).forEach(o=>this.removeStore(o));for(let o in t){let{data:n,version:i}=t[o];this.storeMap.has(o)?this.storeMap.get(o)?.sync(n,i):this.addStore(o,n,i)}}}};var Kr={};Vr(Kr,{JsonPatchError:()=>M,_areEquals:()=>At,applyOperation:()=>Xe,applyPatch:()=>at,applyReducer:()=>ts,deepClone:()=>Zi,getValueByPointer:()=>Ze,validate:()=>Vo,validator:()=>er});var Ji=function(){var e=function(t,r){return e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(o,n){o.__proto__=n}||function(o,n){for(var i in n)n.hasOwnProperty(i)&&(o[i]=n[i])},e(t,r)};return function(t,r){e(t,r);function o(){this.constructor=t}t.prototype=r===null?Object.create(r):(o.prototype=r.prototype,new o)}}(),Xi=Object.prototype.hasOwnProperty;function Jt(e,t){return Xi.call(e,t)}function Xt(e){if(Array.isArray(e)){for(var t=new Array(e.length),r=0;r=48&&o<=57){t++;continue}return!1}return!0}function Ce(e){return e.indexOf("/")===-1&&e.indexOf("~")===-1?e:e.replace(/~/g,"~0").replace(/\//g,"~1")}function It(e){return e.replace(/~1/g,"/").replace(/~0/g,"~")}function jt(e){if(e===void 0)return!0;if(e){if(Array.isArray(e)){for(var t=0,r=e.length;t0&&c[d-1]=="constructor"))throw new TypeError("JSON-Patch: modifying `__proto__` or `constructor/prototype` prop is banned for security reasons, if this was on purpose, please set `banPrototypeModifications` flag false and pass it to this function. More info in fast-json-patch README");if(r&&g===void 0&&(p[l]===void 0?g=c.slice(0,d).join("/"):d==u-1&&(g=t.path),g!==void 0&&f(t,0,e,g)),d++,Array.isArray(p)){if(l==="-")l=p.length;else{if(r&&!Zt(l))throw new M("Expected an unsigned base-10 integer value, making the new referenced value the array element with the zero-based index","OPERATION_PATH_ILLEGAL_ARRAY_INDEX",i,t,e);Zt(l)&&(l=~~l)}if(d>=u){if(r&&t.op==="add"&&l>p.length)throw new M("The specified index MUST NOT be greater than the number of elements in the array","OPERATION_VALUE_OUT_OF_BOUNDS",i,t,e);var s=es[t.op].call(t,p,l,e);if(s.test===!1)throw new M("Test operation failed","TEST_OPERATION_FAILED",i,t,e);return s}}else if(d>=u){var s=st[t.op].call(t,p,l,e);if(s.test===!1)throw new M("Test operation failed","TEST_OPERATION_FAILED",i,t,e);return s}if(p=p[l],r&&d0)throw new M('Operation `path` property must start with "/"',"OPERATION_PATH_INVALID",t,e,r);if((e.op==="move"||e.op==="copy")&&typeof e.from!="string")throw new M("Operation `from` property is not present (applicable in `move` and `copy` operations)","OPERATION_FROM_REQUIRED",t,e,r);if((e.op==="add"||e.op==="replace"||e.op==="test")&&e.value===void 0)throw new M("Operation `value` property is not present (applicable in `add`, `replace` and `test` operations)","OPERATION_VALUE_REQUIRED",t,e,r);if((e.op==="add"||e.op==="replace"||e.op==="test")&&jt(e.value))throw new M("Operation `value` property is not present (applicable in `add`, `replace` and `test` operations)","OPERATION_VALUE_CANNOT_CONTAIN_UNDEFINED",t,e,r);if(r){if(e.op=="add"){var n=e.path.split("/").length,i=o.split("/").length;if(n!==i+1&&n!==i)throw new M("Cannot perform an `add` operation at the desired path","OPERATION_PATH_CANNOT_ADD",t,e,r)}else if(e.op==="replace"||e.op==="remove"||e.op==="_get"){if(e.path!==o)throw new M("Cannot perform the operation at a path that does not exist","OPERATION_PATH_UNRESOLVABLE",t,e,r)}else if(e.op==="move"||e.op==="copy"){var s={op:"_get",path:e.from,value:void 0},a=Vo([s],r);if(a&&a.name==="OPERATION_PATH_UNRESOLVABLE")throw new M("Cannot perform the operation from a path that does not exist","OPERATION_FROM_UNRESOLVABLE",t,e,r)}}}else throw new M("Operation `op` property is not one of operations defined in RFC-6902","OPERATION_OP_INVALID",t,e,r)}function Vo(e,t,r){try{if(!Array.isArray(e))throw new M("Patch sequence must be an array","SEQUENCE_NOT_AN_ARRAY");if(t)at(W(t),W(e),r||!0);else{r=r||er;for(var o=0;otr,generate:()=>Hr,observe:()=>cs,unobserve:()=>as});var zr=new WeakMap,rs=function(){function e(t){this.observers=new Map,this.obj=t}return e}(),os=function(){function e(t,r){this.callback=t,this.observer=r}return e}();function ns(e){return zr.get(e)}function is(e,t){return e.observers.get(t)}function ss(e,t){e.observers.delete(t.callback)}function as(e,t){t.unobserve()}function cs(e,t){var r=[],o,n=ns(e);if(!n)n=new rs(e),zr.set(e,n);else{var i=is(n,t);o=i&&i.observer}if(o)return o;if(o={},n.value=W(e),t){o.callback=t,o.next=null;var s=function(){Hr(o)},a=function(){clearTimeout(o.next),o.next=setTimeout(s)};typeof window<"u"&&(window.addEventListener("mouseup",a),window.addEventListener("keyup",a),window.addEventListener("mousedown",a),window.addEventListener("keydown",a),window.addEventListener("change",a))}return o.patches=r,o.object=e,o.unobserve=function(){Hr(o),clearTimeout(o.next),ss(n,o),typeof window<"u"&&(window.removeEventListener("mouseup",a),window.removeEventListener("keyup",a),window.removeEventListener("mousedown",a),window.removeEventListener("keydown",a),window.removeEventListener("change",a))},n.observers.set(t,new os(t,o)),o}function Hr(e,t){t===void 0&&(t=!1);var r=zr.get(e.object);Yr(r.value,e.object,e.patches,"",t),e.patches.length&&at(r.value,e.patches);var o=e.patches;return o.length>0&&(e.patches=[],e.callback&&e.callback(o)),o}function Yr(e,t,r,o,n){if(t!==e){typeof t.toJSON=="function"&&(t=t.toJSON());for(var i=Xt(t),s=Xt(e),a=!1,c=!1,p=s.length-1;p>=0;p--){var d=s[p],u=e[d];if(Jt(t,d)&&!(t[d]===void 0&&u!==void 0&&Array.isArray(t)===!1)){var g=t[d];typeof u=="object"&&u!=null&&typeof g=="object"&&g!=null&&Array.isArray(u)===Array.isArray(g)?Yr(u,g,r,o+"/"+Ce(d),n):u!==g&&(a=!0,n&&r.push({op:"test",path:o+"/"+Ce(d),value:W(u)}),r.push({op:"replace",path:o+"/"+Ce(d),value:W(g)}))}else Array.isArray(e)===Array.isArray(t)?(n&&r.push({op:"test",path:o+"/"+Ce(d),value:W(u)}),r.push({op:"remove",path:o+"/"+Ce(d)}),c=!0):(n&&r.push({op:"test",path:o,value:e}),r.push({op:"replace",path:o,value:t}),a=!0)}if(!(!c&&i.length==s.length))for(var p=0;po!=t)}dispatch(t,r){let o=new Map;t.forEach(n=>{this.subscribers.forEach(([i,s])=>{n.path.startsWith(i)&&!o.has(i)&&o.set(i,JSON.stringify(i==="/"?r:Ze(r,i)))})}),o.forEach((n,i)=>{let s=i==="/"?this._data:Ze(this._data,i);n!==JSON.stringify(s)&&this.subscribers.filter(([a,c])=>a===i).forEach(([a,c])=>{let p={};try{p=c(s,JSON.parse(n||{}))}catch(d){console.error(d.stack||d.message||d)}p instanceof Promise&&p.catch(d=>{console.error(d.stack||d.message||d)})})})}};function T(e,t,r){return e.constructor[rr]||(e.constructor[rr]=[]),e.constructor[rr].push(t),{value:function(...o){let n=W(this._data);r.value.apply(this,o);let i=tr(n,this._data);i.length!=0&&(this._mutationRecords.push(...i),this._version+=i.length,this.dispatch(i,n))}}}var et=class extends jr{constructor(t){super(Object.assign({sid:"",ssid:""},t||{}))}setSID(t){this._data.sid=t,this._data.ssid=t.slice(0,4)}};x([T],et.prototype,"setSID",1);var me=class extends et{constructor(t,r){super(t||{uname:"",comfyUserToken:"",isLocal:!1,activeDocumentID:0,documents:{},actions:[],canvasStateID:0,selectionStateID:"",historyStateID:0}),this._version=r||0}setIsLocal(t){this._data.isLocal=t}setUName(t){this._data.uname="PS_"+t}setDocument(t,r){this._data.activeDocumentID=t,this._data.documents=r}setCanvasStateID(t){this._data.canvasStateID=t}setSelectionStateID(t){this._data.selectionStateID=t}setHistoryStateID(t){this._data.historyStateID=t}setComfyUserToken(t){this._data.comfyUserToken=t}setActions(t){this._data.actions=t}};x([T],me.prototype,"setIsLocal",1),x([T],me.prototype,"setUName",1),x([T],me.prototype,"setDocument",1),x([T],me.prototype,"setCanvasStateID",1),x([T],me.prototype,"setSelectionStateID",1),x([T],me.prototype,"setHistoryStateID",1),x([T],me.prototype,"setComfyUserToken",1),x([T],me.prototype,"setActions",1);var K=class extends et{constructor(t,r){super(t||{title:"",webviewFromSid:location.search.match(/webview_fromsid=([^&]+)/)?.[1]||"",progress:0,lastError:"",queueSize:0,executingNodeTitle:"",widgetTableStructure:{widgetTablePath:"",widgetTablePersisted:!1,widgetTableID:"",nodes:{},groups:{},nodeIndexes:[],extraOptions:{}},widgetTableValue:{},widgetTableErrors:{},useSliderForNumberWidget:!1,hasPSDNodes:!1,comfyUserToken:"",comfyOrgLoggedIn:!1,comfyOrgAPIKey:""}),this._version=r||0}setWebviewFromSid(t){this._data.webviewFromSid=t}setTitle(t){this._data.title=t}setProgress(t){this._data.progress=t}setLastError(t){this._data.lastError=t}setQueueSize(t){this._data.queueSize=t}setExecutingNodeTitle(t){this._data.executingNodeTitle=t}setWidgetTableStructure(t){this._data.widgetTableStructure=JSON.parse(JSON.stringify(t))}setWidgetTableValue(t){this._data.widgetTableValue=JSON.parse(JSON.stringify(t))}setWidgetTableErrors(t){this._data.widgetTableErrors=JSON.parse(JSON.stringify(t))}setHasPSDNodes(t){this._data.hasPSDNodes=t}setComfyUserToken(t){this._data.comfyUserToken=t}setComfyOrgLoggedIn(t){this._data.comfyOrgLoggedIn=t}setComfyOrgAPIKey(t){this._data.comfyOrgAPIKey=t}setUseSliderForNumberWidget(t){this._data.useSliderForNumberWidget=t}};x([T],K.prototype,"setWebviewFromSid",1),x([T],K.prototype,"setTitle",1),x([T],K.prototype,"setProgress",1),x([T],K.prototype,"setLastError",1),x([T],K.prototype,"setQueueSize",1),x([T],K.prototype,"setExecutingNodeTitle",1),x([T],K.prototype,"setWidgetTableStructure",1),x([T],K.prototype,"setWidgetTableValue",1),x([T],K.prototype,"setWidgetTableErrors",1),x([T],K.prototype,"setHasPSDNodes",1),x([T],K.prototype,"setComfyUserToken",1),x([T],K.prototype,"setComfyOrgLoggedIn",1),x([T],K.prototype,"setComfyOrgAPIKey",1),x([T],K.prototype,"setUseSliderForNumberWidget",1);var Jr=class extends $t{createStore(t,r){return new K(t,r)}},O=new Jr,D=new me;var qo=e=>{let t,r=new Set,o=(p,d)=>{let u=typeof p=="function"?p(t):p;if(!Object.is(u,t)){let g=t;t=d??(typeof u!="object"||u===null)?u:Object.assign({},t,u),r.forEach(l=>l(t,g))}},n=()=>t,a={setState:o,getState:n,getInitialState:()=>c,subscribe:p=>(r.add(p),()=>r.delete(p))},c=t=e(o,n,a);return a},Qo=e=>e?qo(e):qo;var Xr=b(E(),1);var us=e=>e;function ls(e,t=us){let r=Xr.default.useSyncExternalStore(e.subscribe,()=>t(e.getState()),()=>t(e.getInitialState()));return Xr.default.useDebugValue(r),r}var Ko=e=>{let t=Qo(e),r=o=>ls(t,o);return Object.assign(r,t),r},Ho=e=>e?Ko(e):Ko;var Ae=N("photoshop");var z=Ho((e,t)=>({canvasDirtyID:0,selectionDirtyID:0,layerDirtyIDs:new Map,documentCache:{},incrementCanvasDirtyID:()=>{e(r=>({canvasDirtyID:r.canvasDirtyID+1})),Zr()},incrementLayerDirtyID:r=>{e(o=>{let n=o.layerDirtyIDs.get(r)||0,i=new Map(o.layerDirtyIDs);return i.set(r,n+1),{layerDirtyIDs:i}}),Zr()},incrementSelectionDirtyID:()=>{e(r=>({selectionDirtyID:r.selectionDirtyID+1})),Zr()},setDocuments:r=>{e({documentCache:r}),Ae.app.activeDocument&&D.setDocument(Ae.app.activeDocument.id,JSON.parse(JSON.stringify(r)))},clearCanvasDirtyID:()=>{e({canvasDirtyID:0})},clearLayerDirtyIDs:()=>{e({layerDirtyIDs:new Map})},clearSelectionDirtyID:()=>{e({selectionDirtyID:0})}}));function Zr(){if(!Ae.app.activeDocument)return;let e=z.getState().documentCache[Ae.app.activeDocument.id];if(e){let t={...e,dirtyID:z.getState().canvasDirtyID,layers:e.layers.map(r=>{let o=z.getState().layerDirtyIDs.get(r.id);return o!==void 0?{...r,dirtyID:o}:r})};z.setState(r=>({documentCache:{...r.documentCache,[Ae.app.activeDocument.id]:t}})),D.setDocument(Ae.app.activeDocument.id,z.getState().documentCache)}}function ct(){try{if(!Ae.app.activeDocument)return;let e=Ae.app.documents.reduce((t,r)=>{let o=Gr(r).map(n=>{let i=n.layer.id;return{level:n.level,id:i,name:n.layer.name,identify:De(i,n.layer.name,n.level),fullPath:n.path,dirtyID:z.getState().layerDirtyIDs.get(i)||0}});return t[r.id]={name:r.name,id:r.id,identify:Ie(r.id,r.name),layers:o,canvasDirtyID:z.getState().canvasDirtyID,selectionDirtyID:z.getState().selectionDirtyID},t},{});z.getState().setDocuments(e)}catch(e){console.error(e)}}function or(){z.getState().incrementCanvasDirtyID()}function Re(e){Array.isArray(e)?e.forEach(t=>{z.getState().incrementLayerDirtyID(t)}):z.getState().incrementLayerDirtyID(e)}function zo(){z.getState().clearCanvasDirtyID(),z.getState().clearLayerDirtyIDs(),ct()}function eo(){z.getState().incrementSelectionDirtyID()}(async()=>{D.setUName(Fo()),ct()})().catch(console.error);R.action.addNotificationListener(["historyStateChanged"],e=>{ds(),(e.commandID==5004||e.commandID==5002)&&(_t(),Re(R.app.activeDocument?.activeLayers.map(t=>t.id)))});R.action.addNotificationListener(["toolModalStateChanged"],(e,t,...r)=>{t.state._value=="exit"&&t.kind._value=="paint"&&(_t(),Re(R.app.activeDocument?.activeLayers.map(o=>o.id)))});R.action.addNotificationListener(["modalStateChanged"],(e,t)=>{t.state._value=="exit"&&(_t(),Re(R.app.activeDocument?.activeLayers.map(r=>r.id)))});R.action.addNotificationListener(["show","hide","transform","fill","crop"],()=>{_t(),Re(R.app.activeDocument?.activeLayers.map(e=>e.id))});R.action.addNotificationListener(["delete","move","copyToLayer"],()=>{ct(),_t(),Re(R.app.activeDocument?.activeLayers.map(e=>e.id))});R.action.addNotificationListener(["newDocument","open","close","make","modalJavaScriptScopeExit"],()=>ct());function _t(){let e=R.app.activeDocument?.historyStates;e&&D.setCanvasStateID(e[e.length-1].id),or()}function ds(){let e=R.app.activeDocument?.historyStates;e&&D.setHistoryStateID(e[e.length-1].id)}function Yo(){D.setSelectionStateID($o+"_"+Lt+"_"+nr)}var Lt=R.app.activeDocument?.id,nr=R.app.activeDocument?.activeLayers.map(e=>e.id).join(","),$o=0;R.action.addNotificationListener(["set"],(e,t)=>{t._target[0]._property=="selection"&&($o++,Yo(),eo())});function jo(){let e=R.app.activeDocument?.activeLayers.map(r=>r.id).join(",");Lt!=R.app.activeDocument?.id&&zo();let t=[];R.app.actionTree.forEach(r=>{r.actions.forEach(o=>{t.push(r.name+"/"+o.name)})}),(D.data.actions.length!=t.length||D.data.actions.some((r,o)=>r!=t[o]))&&D.setActions(t),Lt!=R.app.activeDocument?.id||nr!=e?(Lt=R.app.activeDocument?.id,nr=e,Yo(),eo()):(Lt=R.app.activeDocument?.id,nr=e),requestAnimationFrame(jo)}requestAnimationFrame(jo);setInterval(()=>ct(),5e3);globalThis.sdpppX=globalThis.sdpppX||{};var H=globalThis.sdpppX;var tn=b(ar(),1),rn=[];H.getLogs=()=>rn;localStorage.setItem("debug","sdppp:*");tn.debug.log=(...e)=>{rn.push(e.join(" "))};var wt=b(E(),1);var U=b(E(),1);var _=b(E(),1);var cn=b(S(),1),sn=(0,_.createContext)(null);function an({children:e}){let t=Cs();return(0,_.useEffect)(()=>{window.addEventListener("message",o=>{o.data.action==="webview-connect"&&o.source?.postMessage({action:"webview-connect",payload:{webviewFromSid:D.data.sid}})});let r="";O.subscribe("/",(o,n,i)=>{n?.webviewFromSid==D.data.sid&&(t.setWebviewAgentSID(n?.sid),r||(r=n?.sid)),!n&&i.webviewFromSid==D.data.sid&&t.setWebviewAgentSID(r)})},[]),(0,cn.jsx)(sn.Provider,{value:{webviewAgentSID:t.webviewAgentSID,prevWebviewAgentSID:t.prevWebviewAgentSID,setWebviewAgentSID:t.setWebviewAgentSID,toggleWebviewDialog:t.toggleWebviewDialog,setSrc:t.setSrc,resetWebview:t.resetWebview,timeoutError:t.timeoutError,loadError:t.loadError},children:e})}function J(){let e=(0,_.useContext)(sn);if(!e)throw new Error("useSDPPPWebview must be used within a SDPPPWebviewProvider");return e}function Cs(){let[e,t]=(0,_.useState)(null),[r,o]=(0,_.useState)(null),[n,i]=(0,_.useState)(null),[s,a]=(0,_.useState)(!1),[c,p]=(0,_.useState)(""),[d,u]=(0,_.useState)(""),[g,l]=(0,_.useState)(""),[f,m]=(0,_.useState)(!1),[y,v]=(0,_.useState)(!1),w=(0,_.useRef)(null),[P,I]=(0,_.useState)(!1);(0,_.useEffect)(()=>{let G=()=>{a(!1),u(g),ie()};return n?.addEventListener("close",G),()=>{n?.removeEventListener("close",G)}},[n,g,u,a]),(0,_.useEffect)(()=>{l(d)},[d]),(0,_.useEffect)(()=>{Is(i,o);let G=nn();return t(G),w.current&&clearTimeout(w.current),m(!1),v(!1),w.current=setTimeout(()=>{m(!0)},5e3),G.addEventListener("loadstop",()=>{v(!0)}),G.addEventListener("loaderror",()=>{I(!0)}),()=>{w.current&&clearTimeout(w.current),n?.parentElement?.removeChild(n)}},[]);let[j,be]=(0,_.useState)("");(0,_.useEffect)(()=>{c&&(be(c),j===c?ie():(e?.setAttribute("src",c),r?.setAttribute("src",c)))},[c]);let ie=(0,_.useCallback)(()=>{e?.parentElement?.removeChild(e),a(!1),n?.close();let G=nn();t(G);let ze=c;p(""),be(""),setTimeout(()=>{p(ze)},300)},[e,c]),k=(0,_.useCallback)(()=>{s?(n?.close(),a(!1)):(n?.show(),a(!0))},[n,s]);return{dialogShowing:s,toggleWebviewDialog:k,setSrc:p,webviewAgentSID:d,setWebviewAgentSID:u,prevWebviewAgentSID:g,setPrevWebviewAgentSID:l,resetWebview:ie,anyWebviewLoaded:y,timeoutError:(0,_.useMemo)(()=>f&&!y,[f,y]),loadError:P}}function Is(e,t){let r=document.createElement("dialog");r.className="sdppp-webview",r.style.padding="0",r.style.margin="0",r.style.width="1024px",r.style.height="768px",document.body.appendChild(r),e(r);let o=document.createElement("webview");return o.style.position="relative",o.style.width="1024px",o.style.height="768px",r.appendChild(o),t(o),r}var Le=null;function nn(){Le||(Le=document.createElement("div"),Le.style.position="absolute",Le.style.width="100px",Le.style.height="100px",Le.style.right="0",Le.style.bottom="-10000px",document.body.appendChild(Le));let e=document.createElement("webview");return e.style.width="100px",e.style.height="100px",Le?.appendChild(e),e}var pn=b(ln(),1);var dn=`504 -`;var fn=dn.trim();var to=class{socket;constructor(t){let r="/"+[t.split("/").slice(3).filter(o=>o).join("/"),"sd-ppp/"].filter(o=>o).join("/");t=t.split("/").slice(0,3).join("/"),this.socket=(0,pn.io)(t,{transports:["websocket"],path:r,query:{api_level:fn},rejectUnauthorized:!1,autoConnect:!1}),this.socket.on("connect",()=>{this.socket.io.engine.binaryType="blob"})}get id(){return this.socket.id}connect(){this.socket.connect()}close(){this.socket.close()}};function mn(...e){return e.reduce((t,r)=>r(t),to)}var cr=class{flushing=Promise.resolve();newFlushPending=!1;constructor(t){this.doFlush=t,this.pause()}doFlush;runFlush(){this.newFlushPending||(this.newFlushPending=!0,this.flushing=this.flushing.then(async()=>{await new Promise(t=>requestAnimationFrame(t)),this.newFlushPending=!1,await this.doFlush()}))}pause(){this.flushing=this.flushing.then(t=>new Promise(r=>{this.resume=r})).then(()=>{this.resume=()=>{}})}resume=()=>{}};function hn(e,t){return function(r){return class extends r{constructor(o){super(o),this.socket.on("store_request",(i,s)=>{s({data:e.data,version:e.version})});let n=new cr(async()=>{let{operations:i,fromVersion:s,toVersion:a}=e.flush();await new Promise(c=>{let p=!1;setTimeout(()=>{p||(console.warn("flush timeout"),c())},5e3),this.socket.emit("store_flush",{operations:i,fromVersion:s},d=>{p=!0,c(),d?.error?console.error("flush error",d.error):e.flushDone(a)})})});e.subscribe("/",()=>{n.runFlush()}),this.socket.on("disconnect",()=>{n.pause()}),this.socket.on("connect",()=>{e.setSID(this.socket.id||""),requestAnimationFrame(()=>{this.socket.emit("sdppp_init",{type:t,data:e.data,version:e.version})})}),this.socket.on("sdppp_inited",i=>{n.resume()})}}}}function gn(e,t){return function(r){return class extends r{constructor(o){super(o),this.socket.on("store_flush",n=>{if(n.type!==t)return;let i=e.getStore(n.sid);if(i)i.patchVersionAcceptable(n.fromVersion)?i.patchData(n.operations):(console.warn("patch version not acceptable from",n.fromVersion,"current version is",i.version),this.socket.emit("store_request",{type:t},s=>{e.sync(s)}));else return this.socket.emit("store_request",{sid:n.sid},s=>{e.addStore(s.sid,s.data,s.version)})}),this.socket.on("store_remove",n=>{e.removeStore(n.sid)}),this.socket.on("sdppp_inited",n=>{this.socket.emit("store_request",{type:t},i=>{e.sync(i)})})}}}}async function ro(e){let t=e.document_identify,r=F(t);if(!r)throw new Error(h("document {0} not found",t));let o=r.selection,n=o&&o.bounds?{left:o.bounds.left,top:o.bounds.top,right:r.width-o.bounds.right,bottom:r.height-o.bounds.bottom,width:o.bounds.width,height:o.bounds.height}:null,i={left:0,top:0,right:0,bottom:0,width:r.width,height:r.height};return{document_boundary:i,selection_boundary:n||i}}var Tt=N("photoshop");var _e=N("photoshop"),oo=class{promise;restore;constructor(){this.restore=()=>{},this.promise=new Promise(t=>{this.restore=t})}add(t){this.promise.then(t)}};_e.core.setExecutionMode({enableErrorStacktraces:!0});var kt=Promise.resolve();async function B(e,t){let r=t.dontRecoverSelection||!1,o=new oo,n=!1,i=[],s=[],a=t.commandName;r||(_e.app.activeDocument.activeLayers.forEach(u=>i.push(u)),t.document&&_e.app.activeDocument.id!=t.document.id&&t.document.activeLayers.forEach(u=>i.push(u)),s=i.map(u=>u.visible),o.add(()=>{i.forEach(u=>{u.selected||(u.selected=!0,n=!0)}),t.document==_e.app.activeDocument&&i.forEach((u,g)=>{u.visible=s[g]})}));let c=null;kt=kt.catch(u=>u).then(()=>new Promise(u=>{g();function g(){_e.core.isModal()?requestAnimationFrame(g):u()}})).then(()=>_e.core.executeAsModal(async function(u,...g){c=t.document?await u.hostControl.suspendHistory({documentID:t.document.id,name:a}):null,o.add(async()=>{await new Promise(requestAnimationFrame),n||c&&u.hostControl.resumeHistory(c)});try{let l=await e(o,u,...g);return o.restore(!0),l}catch(l){throw o.restore(!1),l}},{commandName:a,interactive:!0}));let p=null,d=null;try{await kt}catch(u){d=u}if(n&&(kt=_e.core.executeAsModal(async u=>{i.forEach((g,l)=>{g.visible=s[l]}),c&&u.hostControl.resumeHistory(c)},{commandName:a,interactive:!0}),await kt),d)throw d;return p}var ft=b(xt(),1),wn=b(ar(),1),As=(0,wn.default)("sdppp:getImage");function Ls(e,t){for(let r=0,o=e.length/4;r{i.dispose()}),{dataFromAPI:s,width:i.width,height:i.height}}async function xs(e,t,r){if(!t)return null;let o={documentID:e.id,sourceBounds:r,layerID:t.id},n=null;try{n=await Tt.imaging.getLayerMask(o)}catch(a){return console.warn(a),null}let i=n.imageData;if(!i)return null;let s=await i.getData({});return Promise.resolve().then(()=>{i.dispose()}),{dataFromAPI:s,width:i.width,height:i.height}}async function vn(e){let t=e.document_identify,r=F(t);if(!r)throw new Error(h("document {0} not found",t));let o=e.layer_identify,n=te(r,o);if(As("getJimpImage",o),e.boundary&&e.boundary.right+e.boundary.left+e.boundary.bottom+e.boundary.top+e.boundary.width+e.boundary.height!=r.width+r.height)throw new Error("The boundary is not for this document");let i=e.boundary?{left:e.boundary.left,top:e.boundary.top,right:r.width-e.boundary.right,bottom:r.height-e.boundary.bottom,width:e.boundary.width,height:e.boundary.height}:{left:0,top:0,right:r.width,bottom:r.height,width:r.width,height:r.height},s={pixelData:null,width:0,height:0},a=null,c,p,d={left:0,top:0,right:r.width,bottom:r.height},u=!1;if(await B(async f=>{let[m,y]=await Yt(r,n);y&&(a=m),a!=null&&f.add(()=>{a.delete()}),[c,p]=await Promise.all([ks(r,m,i),xs(r,m,i)]),d=m?.bounds??d,u=!1,m?u=m.transparentPixelsLocked:C.is_SPECIAL_LAYER_USE_CANVAS(o)&&(u=r.layers.every(v=>v.transparentPixelsLocked))},{commandName:h("get content of layer {0}",o),document:r}),!c)throw new Error(h("get pixel of {0} failed",o));c=ur(c),u&&(c=_s(c)),s.pixelData=lr(c,d,i);let g=null;return p&&(p=ur(p),g=lr(p,d,i,1)),s.pixelData=Ls(s.pixelData,g),s.width=i.width,s.height=i.height,new ft.Jimp({data:Buffer.from(s.pixelData),width:i.width,height:i.height})}async function bn(e){let t=await vn(e),r=t.bitmap.width,o=t.bitmap.height,n=new Uint8Array(r*o);for(let a=0;a{let i=null,s=e.layer_identify,a=!1;if(e.layer_identify){s=e.layer_identify;let c=te(r,s);if(C.is_SPECIAL_LAYER_USE_CANVAS(s))return o={name:"",opacity:1,boundary:{left:0,right:0,top:0,bottom:0,width:r.width,height:r.height},isGroup:!0,identify:s},o;[i,a]=await Yt(r,c),n.add(()=>{i&&a&&i.delete()})}if(!i)throw new Error(h("layer not found: {0}",e.layer_identify));o=Object.assign({isGroup:a,identify:s||""},Uo(r,i))},{commandName:h("get layer info"),document:r}),o}var fr=N("photoshop");async function no(e,t,r){let o=e.select||"all",n=e.document_identify,i=F(n);if(!i)throw new Error(h("document {0} not found",n));let s=e.layer_identifies,a=await Promise.all(s.map(async p=>{let d=te(i,p);if(C.is_SPECIAL_LAYER_USE_CANVAS(p))throw new Error(h("layer not found: {0}",p));let u=pe(i,d);if(!u)throw new Error(h("layer not found {0}",p));r(u);let g=t(u);if(o==="first"&&g.length===0)throw new Error(h("no first related layer in {0}",p));let l=g.filter((f,m)=>o==="first"?m===0:o==="text"?f.kind===fr.constants.LayerKind.TEXT:o==="image"?f.kind===fr.constants.LayerKind.NORMAL:!0).map(f=>De(f.id,f.name));return{layer_identifies:l,layer_infos:await Promise.all(l.map(f=>Rt({document_identify:n,layer_identify:f})))}})),c={layer_identifies:[],layer_boundaries:[],layer_infos:[]};return a.forEach(({layer_identifies:p,layer_infos:d})=>{c.layer_identifies.push(...p),c.layer_boundaries.push(...d.map(u=>u.boundary)),c.layer_infos.push(...d)}),c}async function io(e){return no(e,t=>t.layers||[],t=>{if(t.kind!=fr.constants.LayerKind.GROUP)throw new Error(h("layer {0} is not a group",t.name));if(!t.layers)throw new Error(h("layer {0} is not a group",t.name))})}async function so(e){return no(e,t=>t.linkedLayers||[],t=>{if(!t.linkedLayers)throw new Error(h("no linked layer for {0}",t.name))})}var Sn=N("photoshop"),Pn=N("uxp");async function Ts(e,t){let r={documentID:e.id,sourceBounds:t},n=(await Sn.imaging.getSelection(r)).imageData,i=await n.getData({});return Promise.resolve().then(()=>{n.dispose()}),{dataFromAPI:i,width:n.width,height:n.height}}async function Nt(e){let t=e.document_identify,r=F(t);if(!r)throw new Error(h("document {0} not found",t));let o=parseInt(Pn.host.version.split(".")[0]);if(!isNaN(o)&&o<25)throw new Error(h("GetSelection need Photoshop version 25+"));let n=e.boundary?{left:e.boundary.left,top:e.boundary.top,right:r.width-e.boundary.right,bottom:r.height-e.boundary.bottom,width:e.boundary.width,height:e.boundary.height}:{left:0,top:0,right:r.width,bottom:r.height,width:r.width,height:r.height};if(!r.selection?.bounds){let s=new Uint8Array(n.width*n.height);return s.fill(255),{blob:s,width:n.width,height:n.height}}let i=null;return await B(async s=>{let a=await Ts(r,n);a=ur(a);let c=r.selection.bounds||{left:0,top:0,right:r.width,bottom:r.height};i=a&&lr(a,c,n,1)},{document:r,commandName:"SDPPP getSelection"}),{blob:i,width:n.width,height:n.height}}var he=N("photoshop");async function ao(e){let{identifier:t}=e;if(C.is_SPECIAL_DOCUMENT_CURRENT(t)){if(!he.app.activeDocument){if(e.width&&e.height){let r=await Rs(e.width,e.height);if(r)return{value:Ie(r.id,r.name)}}throw new Error(h("document {0} not found",t))}return{value:Ie(he.app.activeDocument.id,he.app.activeDocument.name)}}else if(C.is_SPECIAL_LAYER_SELECTED_LAYER(t)){if(!he.app.activeDocument)return{error:h("document {0} not found","current")};let r=he.app.activeDocument.activeLayers[0];return r?{value:De(r.id,r.name)}:{error:h("layer not found {0}",t)}}}async function Rs(e,t){if(he.app.activeDocument)return he.app.activeDocument;let r=null;return await B(async()=>{r=await he.app.createDocument({width:e,height:t,resolution:72,mode:he.constants.NewDocumentMode.RGB,fill:he.constants.DocumentFill.TRANSPARENT})},{document:null,commandName:h("create document for sent images")}),r}var Dn=N("photoshop");async function co(e){let t=e.document_identify,r=F(t);if(!r)throw new Error(h("document {0} not found",t));let o=e.layer_identify,n=te(r,o),i={text:""},s=pe(r,n);if(!s||s.kind!=Dn.constants.LayerKind.TEXT)throw new Error(h('only layer kind "TEXT" is supported, invalid layer: {0}',o));return i.text=s.textItem.contents,{text:i.text}}var ae=N("photoshop"),pt=N("uxp");var pr=0,Cn=0,Ns=5e3;async function uo(e){let t=e.document_identify,r=t?F(t):null;if(e.action==="get"){let o;return await B(async function(n){if(r||(r=await Os()),!r)throw new Error(h("create document failed"));r=await r.duplicate(),n.add(async()=>{r?.close()});let s=await(await pt.storage.localFileSystem.getTemporaryFolder()).createEntry("sdppp.psd",{overwrite:!0});await r.saveAs.psd(s,{maximizeCompatibility:!1,typename:"PhotoshopSaveOptions"}),o=await s.read({format:pt.storage.formats.binary})},{commandName:h("sdppp get PSD"),document:r}),o?{data:o}:{error:"save Document failed"}}else if(e.action==="extract"){if(Date.now()-Cn2||!confirm(h("{0} wants to extract a PSD file to Photoshop, are you sure?",e.fromSSID))){pr++,pr==3&&(confirm(h("should sdppp refuse extracting PSD to Photoshop in this session anymore?"))||pr--);return}Cn=Date.now();let o=e.data;await B(async function(){if(r||(r=await ae.app.createDocument({width:512,height:512,resolution:72,mode:ae.constants.NewDocumentMode.RGB,fill:ae.constants.DocumentFill.TRANSPARENT})),!r)throw new Error(h("document {0} not found",t));ae.app.activeDocument=r,r.selection?.deselect();let n=await o.arrayBuffer(),s=await(await pt.storage.localFileSystem.getTemporaryFolder()).createEntry("sdppp.psd",{overwrite:!0});await s.write(n,{format:pt.storage.formats.binary});let a=pt.storage.localFileSystem.createSessionToken(s),c=await r.createLayer(ae.constants.LayerKind.NORMAL,{name:"sdppp"});if(!c)throw new Error(h("create layer failed"));c.move(r.layers[0],ae.constants.ElementPlacement.PLACEBEFORE),await ae.action.batchPlay([{_obj:"placeEvent",null:{_kind:"local",_path:a},freeTransformCenterState:{_enum:"quadCenterState",_value:"QCSAverage"},offset:{_obj:"offset",horizontal:{_unit:"pixelsUnit",_value:0},vertical:{_unit:"pixelsUnit",_value:0}}},{_obj:"placedLayerConvertToLayers"},{_obj:"ungroupLayersEvent",_target:[{_enum:"ordinal",_ref:"layer"}]}],{synchronousExecution:!0})},{commandName:h("sdppp extract PSD"),document:r,dontRecoverSelection:!0})}else throw new Error(h("invalid action: {0}",e.action))}async function Os(){return await ae.app.createDocument({width:512,height:512,resolution:72,mode:ae.constants.NewDocumentMode.RGB,fill:ae.constants.DocumentFill.TRANSPARENT})}var mr=N("photoshop");async function lo(e){let{action:t}=e,{document_identify:r,layer_identify:o}=e,[n,i]=t.split("/")||[],s=mr.app.actionTree.find(g=>g.name===n);if(!s)throw new Error(h("Action set {0} not found",n));let a=s.actions.find(g=>g.name===i);if(!a)throw new Error(h("Action {0} not found",i));let c=F(r);if(!c)throw new Error(h("document {0} not found",r));let p=c,d=te(p,o),u=pe(p,d);return u&&await B(async()=>{p.activeLayers.forEach(g=>{g.selected=!1}),u.selected=!0},{commandName:h("select layer"),dontRecoverSelection:!0,document:mr.app.activeDocument}),await B(async()=>{await a.play()},{commandName:h("run Photoshop Action"),document:mr.app.activeDocument}),{result:{success:!0}}}var hr=b(xt(),1),ce=N("photoshop");async function Ws(e,t){let r=ce.app.documents.find(o=>o.name==C.getSpecialDocumentForPreview());if(r)return(r.width{await r.resizeCanvas(Math.max(r.width,e),Math.max(r.height,t))},{document:null,commandName:h("resize document for preview")}),r;{let o=null;return await B(async()=>{o=await ce.app.createDocument({width:e,height:t,resolution:72,mode:ce.constants.NewDocumentMode.RGB,fill:ce.constants.DocumentFill.TRANSPARENT,name:C.getSpecialDocumentForPreview()})},{document:null,commandName:h("create document for preview")}),o}}var In=0;async function fo(e){In++;let t=e.image_blobs?.length?e.image_blobs:null,r=e.image_urls?.length?e.image_urls:null,o=e.document_identify,n=e.layer_identifies,i=(await Promise.all((r||t||[]).map(async(l,f)=>{if(r)return await hr.Jimp.read(r[f]);if(t){if("pngData"in t[f])return await hr.Jimp.read(await t[f].pngData.arrayBuffer());{let m=t[f].buffer,y=m instanceof Blob?await m.arrayBuffer():m;return new hr.Jimp({data:Buffer.from(y),width:t[f].width,height:t[f].height})}}}))).filter(l=>l),s=F(o);if(C.is_SPECIAL_LAYER_PREVIEW_DOCUMENT(o)&&(s=await Ws(i[0].bitmap.width,i[0].bitmap.height)),!s)throw new Error(h("document {0} not found",o));let a=s,c=i.map((l,f)=>{if(e.boundaries&&e.boundaries[f])return{width:e.boundaries[f].width,height:e.boundaries[f].height,top:e.boundaries[f].top,left:e.boundaries[f].left};let m=1;return(l.bitmap.height>a.height||l.bitmap.width>a.width)&&(m=Math.min(a.height/l.bitmap.height,a.width/l.bitmap.width)),{width:l.bitmap.width*m,height:l.bitmap.height*m,top:(a.height-l.bitmap.height*m)/2,left:(a.width-l.bitmap.width*m)/2,bottom:(a.height-l.bitmap.height*m)/2,right:(a.width-l.bitmap.width*m)/2}});i.forEach((l,f)=>{let m=c[f];if(l.bitmap.width!=m.width||l.bitmap.height!=m.height){let y={w:m.width,h:m.height};l.resize(y)}});let p=await Promise.all(i.map(async l=>{let f=l.bitmap.data;if(a.bitsPerChannel=="bitDepth16"){let y=new Uint16Array(f.length);for(let v=0;v{let f=null;u=await Promise.all(i.map(async(m,y)=>{let v=n.length==1?n[0]:n[y];if(!C.is_SPECIAL_LAYER_NEW_LAYER(v)){let w=te(a,v);f=pe(a,w)}if(f&&f.kind!=ce.constants.LayerKind.GROUP)return f;{let w=e.new_layer_name||"SDPPP Images";typeof H.handleSendLayerName=="function"&&(w=await H.handleSendLayerName(w));let P=await a.createLayer(ce.constants.LayerKind.NORMAL,{name:`${w} ${In}${i.length>1?`_${y+1}`:""}`});if(!P)throw new Error(h("create layer failed"));return d.push(P),f?P.move(f,ce.constants.ElementPlacement.PLACEINSIDE):P.move(a.layers[0],ce.constants.ElementPlacement.PLACEBEFORE),P}})),d.length&&l.add(m=>{m?d.forEach((y,v)=>{y.selected=!1}):d.forEach(y=>y.delete())}),await Promise.all(u.map(async(m,y)=>{await ce.imaging.putPixels({documentID:a.id,layerID:m.id,replace:!1,imageData:p[y],targetBounds:c[y]})})),Re(u.map(m=>m.id)),or()},{commandName:h("show sent images"),document:a});let g=z.getState();return{layers:u.map(l=>({identify:De(l.id,l.name),dirtyID:g.layerDirtyIDs.get(l.id)||0}))}}var En=N("photoshop");async function po(e){let t=e.document_identify,r=F(t);if(!r)throw new Error(h("document {0} not found",t));let o=e.layer_identify,n=te(r,o),i=pe(r,n);if(!i||i.kind!=En.constants.LayerKind.TEXT)throw new Error(h('only layer kind "TEXT" is supported, invalid layer: {0}',o));let s=!1;return await B(async()=>{console.log(e.text),i.textItem.contents=e.text,s=!0},{document:r,commandName:h("set text to layer")}),{success:s}}function An(e){return class extends e{constructor(t){super(t),this.socket.on("B_photoshop",async(r,o)=>{let{action:n,params:i}=r,s;try{console.log("B_photoshop start",n);let a=Date.now();n==="psd"?s=await uo(i):n==="getImage"?s=await dr(i):n==="sendImages"?s=await fo(i):n==="getSelection"?s=await Nt(i):n==="getText"?s=await co(i):n==="sendText"?s=await po(i):n==="getLayerInfo"?s=await Rt(i):n==="getDocumentInfo"?s=await ro(i):n==="getLinkedLayers"?s=await so(i):n==="getLayersInGroup"?s=await io(i):n==="runPhotoshopActionOnLayer"?s=await lo(i):n==="getSpecialIdentifierValue"&&(s=await ao(i));let c=Date.now();console.log("B_photoshop end",n,c-a)}catch(a){console.error(a),o({error:a.stack||a.message||a});return}o(s)})}async callForPSDExtract(t,r){return new Promise((o,n)=>{this.socket.emit("F_photoshop",{action:"extractPSD",sid:t,params:{from_sid:r.from_sid}},i=>{if(i.error)return n(new Error(i.error));o(i)})})}async uploadImage(t,r){return new Promise((o,n)=>{this.socket.emit("F_photoshop",{action:"uploadImage",sid:t,params:r},i=>{if(i.error)return n(new Error(i.error));o(i)})})}}}function Ln(e){return class extends e{constructor(t){super(t),this.socket.on("B_workflow",(r,o)=>{if(r.action=="getStoredWidgetValue"){let{widgetTableID:n,widgetTablePath:i,widgetTablePersisted:s}=r.params,a=`${n}_${i}_${s}`,c=Ms(a),p=[];c&&Object.keys(c||{}).forEach(d=>{Object.keys(c[d]||{}).forEach(u=>{p.push({nodeID:d,widgetIndex:u,value:c[d][u].value,outputType:c[d][u].outputType})})}),o({values:p})}})}async setNodeTitle(t,r,o){await new Promise((n,i)=>{this.socket.emit("F_workflow",{action:"setNodeTitle",sid:t,params:{node_id:r,title:o}},s=>{if(s?.error)return i(new Error(s.error));n(s)})})}async pageInstanceRun(t,r,o=1){await new Promise((n,i)=>{this.socket.emit("F_workflow",{action:"run",sid:t,params:{size:o,from_sid:r}},s=>{if(s?.error)return i(new Error(s.error));n(s)})})}async setWidgetValue(t,r){t&&await new Promise((o,n)=>{this.socket.emit("F_workflow",{action:"setWidgetValue",sid:t.data.sid,params:r},i=>{if(i?.error)return n(new Error(i.error));o(i)})})}async openWorkflow(t,r){t&&await new Promise((o,n)=>{this.socket.emit("F_workflow",{action:"open",sid:t.data.sid,params:r},i=>{if(i?.error)return n(new Error(i.error));o(i)})})}async saveWorkflow(t,r){t&&await new Promise((o,n)=>{this.socket.emit("F_workflow",{action:"save",sid:t.data.sid,params:r},i=>{if(i?.error)return n(new Error(i.error));o(i)})})}async listWorkflows(t,r){return t?await new Promise((o,n)=>{this.socket.emit("F_workflow",{action:"list",sid:t.data.sid,params:r},i=>{o(i)})}):{workflows:[],error:"Workflow agent not found"}}async logout(t){t&&await new Promise((r,o)=>{this.socket.emit("F_workflow",{action:"logout",sid:t.data.sid},n=>{if(n?.error)return o(new Error(n.error));r(n)})})}async interrupt(t){await new Promise((r,o)=>{this.socket.emit("F_workflow",{action:"interrupt",sid:t},n=>{r(n)})})}async clearQueue(t){await new Promise((r,o)=>{this.socket.emit("F_workflow",{action:"clearQueue",sid:t},n=>{r(n)})})}async reboot(t){return await new Promise((r,o)=>{this.socket.emit("F_workflow",{action:"reboot",sid:t},n=>{r(n)})})}async setComfyOrgAPIKey(t,r){return await new Promise((o,n)=>{this.socket.emit("F_workflow",{action:"setComfyOrgAPIKey",sid:t,params:{api_key:r}},i=>{o(i)})})}}}function Ms(e){let t=localStorage.getItem(`widgetValue_${e}`);return t?JSON.parse(t):null}var gr=class extends mn(hn(D,"photoshop"),gn(O,"comfy"),Ln,An){constructor(t,{setConnectState:r,setLastErrorMessage:o,setBackendURL:n,setComfyMultiUser:i}){super(t);let s=()=>{this.socket.active&&this.socket.connected?r("connected"):this.socket.active?r("connecting"):r("disconnected"),requestAnimationFrame(s)};requestAnimationFrame(s),this.socket.on("connect_error",async a=>{if(this.socket.active){let c=a.message;try{let p=new AbortController,d=setTimeout(()=>p.abort(),1500),u=await fetch((t+this.socket._opts.path).replace(/(?{n(t),a.multi_user&&i(a.multi_user)}),this.socket.on("disconnect",(...a)=>{i(!1),D.setComfyUserToken("")})}};var _n=b(ar(),1),Tn=b(S(),1),Us=(0,_n.debug)("sdppp:internal"),yr="http://127.0.0.1:8188",kn=(0,U.createContext)(null);function xn({children:e}){let{setSrc:t,webviewAgentSID:r,prevWebviewAgentSID:o}=J(),[n,i]=(0,U.useState)("disconnected"),[s,a]=(0,U.useState)(""),[c,p]=(0,U.useState)(localStorage.getItem("backendURL")||yr),[d,u]=(0,U.useState)(null),[g,l]=(0,U.useState)(""),[f,m]=(0,U.useState)(!1),[y,v]=(0,U.useState)(null),[w,P]=(0,U.useState)([]);function I(k){p(k.split("?")[0].split("#")[0].trim())}(0,U.useEffect)(()=>{localStorage.setItem("backendURL",c)},[c]),(0,U.useEffect)(()=>{if(n==="connected"){a(""),t(`${c}`);let k=!!(c.includes("localhost")||c.match(/\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}/));Us("setBackendURL:",c,"src:",k),D.setIsLocal(k)}else t(""),l("")},[n]);function j(){if(n==="connected"||n==="connecting")y&&(y.close(),v(null));else try{let k=y;y||(k=new gr(c||yr,{setConnectState:i,setLastErrorMessage:a,setBackendURL:I,setComfyMultiUser:m}),v(k)),k.connect()}catch(k){a(k.stack||k.message||k)}}(0,U.useEffect)(()=>{let k=(G,ze,Gt)=>{g&&(!ze&&G==g||!(g in O.getAllStore()))&&l("")};return O.subscribe("/",k),()=>{O.unsubscribe(k)}},[g]),(0,U.useEffect)(()=>{!g&&r&&l(r)},[g,r]),(0,U.useEffect)(()=>{r&&(!g||g==o)&&l(r)},[r,o,g,l]);let[be,ie]=(0,U.useState)(null);return(0,U.useEffect)(()=>{ie(g?O.getAllStore()[g]:null)},[g]),(0,Tn.jsx)(kn.Provider,{value:{socket:y,backendURL:c,setBackendURL:I,connectState:n,doConnectOrDisconnect:j,lastErrorMessage:s,setLastErrorMessage:a,autoRunning:d,setAutoRunning:u,comfyMultiUser:f,setComfyMultiUser:m,workflowAgent:be,workflowAgentSID:g,setWorkflowAgentSID:l,beforeWorkflowRunHooks:w,setBeforeWorkflowRunHooks:P},children:e})}function A(){let e=(0,U.useContext)(kn);if(!e)throw new Error("useSDPPPInternalContext must be used within a SDPPPInternalContextProvider");return e}var Rn=b(E(),1);var Nn=b(S(),1),rt=class extends Rn.default.Component{state={hasError:!1,errorMessage:""};constructor(t){super(t)}static getDerivedStateFromError(t){return{hasError:!0,errorMessage:t.toString()}}componentDidCatch(t,r){console.log(t,r)}render(){return this.state.hasError?(0,Nn.jsx)("p",{className:"list-error-label",children:h("Error {0}... please contact me via Discord/Github",this.state.errorMessage)}):this.props.children}};var Ne=class{constructor(){this.listeners=new Set,this.subscribe=this.subscribe.bind(this)}subscribe(e){return this.listeners.add(e),this.onSubscribe(),()=>{this.listeners.delete(e),this.onUnsubscribe()}}hasListeners(){return this.listeners.size>0}onSubscribe(){}onUnsubscribe(){}};var Oe=typeof window>"u"||"Deno"in globalThis;function re(){}function Mn(e,t){return typeof e=="function"?e(t):e}function Un(e){return typeof e=="number"&&e>=0&&e!==1/0}function Fn(e,t){return Math.max(e+(t||0)-Date.now(),0)}function ho(e,t){return typeof e=="function"?e(t):e}function Bn(e,t){return typeof e=="function"?e(t):e}function go(e,t){let{type:r="all",exact:o,fetchStatus:n,predicate:i,queryKey:s,stale:a}=e;if(s){if(o){if(t.queryHash!==Ot(s,t.options))return!1}else if(!ht(t.queryKey,s))return!1}if(r!=="all"){let c=t.isActive();if(r==="active"&&!c||r==="inactive"&&c)return!1}return!(typeof a=="boolean"&&t.isStale()!==a||n&&n!==t.state.fetchStatus||i&&!i(t))}function yo(e,t){let{exact:r,status:o,predicate:n,mutationKey:i}=e;if(i){if(!t.options.mutationKey)return!1;if(r){if(mt(t.options.mutationKey)!==mt(i))return!1}else if(!ht(t.options.mutationKey,i))return!1}return!(o&&t.state.status!==o||n&&!n(t))}function Ot(e,t){return(t?.queryKeyHashFn||mt)(e)}function mt(e){return JSON.stringify(e,(t,r)=>mo(r)?Object.keys(r).sort().reduce((o,n)=>(o[n]=r[n],o),{}):r)}function ht(e,t){return e===t?!0:typeof e!=typeof t?!1:e&&t&&typeof e=="object"&&typeof t=="object"?Object.keys(t).every(r=>ht(e[r],t[r])):!1}function Vn(e,t){if(e===t)return e;let r=On(e)&&On(t);if(r||mo(e)&&mo(t)){let o=r?e:Object.keys(e),n=o.length,i=r?t:Object.keys(t),s=i.length,a=r?[]:{},c=0;for(let p=0;p{setTimeout(t,e)})}function Qn(e,t,r){return typeof r.structuralSharing=="function"?r.structuralSharing(e,t):r.structuralSharing!==!1?Vn(e,t):t}function Gn(e,t,r=0){let o=[...e,t];return r&&o.length>r?o.slice(1):o}function Kn(e,t,r=0){let o=[t,...e];return r&&o.length>r?o.slice(0,-1):o}var Wt=Symbol();function wr(e,t){return!e.queryFn&&t?.initialPromise?()=>t.initialPromise:!e.queryFn||e.queryFn===Wt?()=>Promise.reject(new Error(`Missing queryFn: '${e.queryHash}'`)):e.queryFn}var Fs=class extends Ne{#e;#t;#r;constructor(){super(),this.#r=e=>{if(!Oe&&window.addEventListener){let t=()=>e();return window.addEventListener("visibilitychange",t,!1),()=>{window.removeEventListener("visibilitychange",t)}}}}onSubscribe(){this.#t||this.setEventListener(this.#r)}onUnsubscribe(){this.hasListeners()||(this.#t?.(),this.#t=void 0)}setEventListener(e){this.#r=e,this.#t?.(),this.#t=e(t=>{typeof t=="boolean"?this.setFocused(t):this.onFocus()})}setFocused(e){this.#e!==e&&(this.#e=e,this.onFocus())}onFocus(){let e=this.isFocused();this.listeners.forEach(t=>{t(e)})}isFocused(){return typeof this.#e=="boolean"?this.#e:globalThis.document?.visibilityState!=="hidden"}},vr=new Fs;var Bs=class extends Ne{#e=!0;#t;#r;constructor(){super(),this.#r=e=>{if(!Oe&&window.addEventListener){let t=()=>e(!0),r=()=>e(!1);return window.addEventListener("online",t,!1),window.addEventListener("offline",r,!1),()=>{window.removeEventListener("online",t),window.removeEventListener("offline",r)}}}}onSubscribe(){this.#t||this.setEventListener(this.#r)}onUnsubscribe(){this.hasListeners()||(this.#t?.(),this.#t=void 0)}setEventListener(e){this.#r=e,this.#t?.(),this.#t=e(this.setOnline.bind(this))}setOnline(e){this.#e!==e&&(this.#e=e,this.listeners.forEach(r=>{r(e)}))}isOnline(){return this.#e}},gt=new Bs;function Hn(){let e,t,r=new Promise((n,i)=>{e=n,t=i});r.status="pending",r.catch(()=>{});function o(n){Object.assign(r,n),delete r.resolve,delete r.reject}return r.resolve=n=>{o({status:"fulfilled",value:n}),e(n)},r.reject=n=>{o({status:"rejected",reason:n}),t(n)},r}function Vs(e){return Math.min(1e3*2**e,3e4)}function wo(e){return(e??"online")==="online"?gt.isOnline():!0}var zn=class extends Error{constructor(e){super("CancelledError"),this.revert=e?.revert,this.silent=e?.silent}};function br(e){return e instanceof zn}function Sr(e){let t=!1,r=0,o=!1,n,i=Hn(),s=m=>{o||(g(new zn(m)),e.abort?.())},a=()=>{t=!0},c=()=>{t=!1},p=()=>vr.isFocused()&&(e.networkMode==="always"||gt.isOnline())&&e.canRun(),d=()=>wo(e.networkMode)&&e.canRun(),u=m=>{o||(o=!0,e.onSuccess?.(m),n?.(),i.resolve(m))},g=m=>{o||(o=!0,e.onError?.(m),n?.(),i.reject(m))},l=()=>new Promise(m=>{n=y=>{(o||p())&&m(y)},e.onPause?.()}).then(()=>{n=void 0,o||e.onContinue?.()}),f=()=>{if(o)return;let m,y=r===0?e.initialPromise:void 0;try{m=y??e.fn()}catch(v){m=Promise.reject(v)}Promise.resolve(m).then(u).catch(v=>{if(o)return;let w=e.retry??(Oe?0:3),P=e.retryDelay??Vs,I=typeof P=="function"?P(r,v):P,j=w===!0||typeof w=="number"&&rp()?void 0:l()).then(()=>{t?g(v):f()})})};return{promise:i,cancel:s,continue:()=>(n?.(),i),cancelRetry:a,continueRetry:c,canStart:d,start:()=>(d()?f():l().then(f),i)}}var qs=e=>setTimeout(e,0);function Qs(){let e=[],t=0,r=a=>{a()},o=a=>{a()},n=qs,i=a=>{t?e.push(a):n(()=>{r(a)})},s=()=>{let a=e;e=[],a.length&&n(()=>{o(()=>{a.forEach(c=>{r(c)})})})};return{batch:a=>{let c;t++;try{c=a()}finally{t--,t||s()}return c},batchCalls:a=>(...c)=>{i(()=>{a(...c)})},schedule:i,setNotifyFunction:a=>{r=a},setBatchNotifyFunction:a=>{o=a},setScheduler:a=>{n=a}}}var V=Qs();var Pr=class{#e;destroy(){this.clearGcTimeout()}scheduleGc(){this.clearGcTimeout(),Un(this.gcTime)&&(this.#e=setTimeout(()=>{this.optionalRemove()},this.gcTime))}updateGcTime(e){this.gcTime=Math.max(this.gcTime||0,e??(Oe?1/0:5*60*1e3))}clearGcTimeout(){this.#e&&(clearTimeout(this.#e),this.#e=void 0)}};var Yn=class extends Pr{#e;#t;#r;#n;#o;#s;#a;constructor(e){super(),this.#a=!1,this.#s=e.defaultOptions,this.setOptions(e.options),this.observers=[],this.#n=e.client,this.#r=this.#n.getQueryCache(),this.queryKey=e.queryKey,this.queryHash=e.queryHash,this.#e=Ks(this.options),this.state=e.state??this.#e,this.scheduleGc()}get meta(){return this.options.meta}get promise(){return this.#o?.promise}setOptions(e){this.options={...this.#s,...e},this.updateGcTime(this.options.gcTime)}optionalRemove(){!this.observers.length&&this.state.fetchStatus==="idle"&&this.#r.remove(this)}setData(e,t){let r=Qn(this.state.data,e,this.options);return this.#i({data:r,type:"success",dataUpdatedAt:t?.updatedAt,manual:t?.manual}),r}setState(e,t){this.#i({type:"setState",state:e,setStateOptions:t})}cancel(e){let t=this.#o?.promise;return this.#o?.cancel(e),t?t.then(re).catch(re):Promise.resolve()}destroy(){super.destroy(),this.cancel({silent:!0})}reset(){this.destroy(),this.setState(this.#e)}isActive(){return this.observers.some(e=>Bn(e.options.enabled,this)!==!1)}isDisabled(){return this.getObserversCount()>0?!this.isActive():this.options.queryFn===Wt||this.state.dataUpdateCount+this.state.errorUpdateCount===0}isStale(){return this.state.isInvalidated?!0:this.getObserversCount()>0?this.observers.some(e=>e.getCurrentResult().isStale):this.state.data===void 0}isStaleByTime(e=0){return this.state.isInvalidated||this.state.data===void 0||!Fn(this.state.dataUpdatedAt,e)}onFocus(){this.observers.find(t=>t.shouldFetchOnWindowFocus())?.refetch({cancelRefetch:!1}),this.#o?.continue()}onOnline(){this.observers.find(t=>t.shouldFetchOnReconnect())?.refetch({cancelRefetch:!1}),this.#o?.continue()}addObserver(e){this.observers.includes(e)||(this.observers.push(e),this.clearGcTimeout(),this.#r.notify({type:"observerAdded",query:this,observer:e}))}removeObserver(e){this.observers.includes(e)&&(this.observers=this.observers.filter(t=>t!==e),this.observers.length||(this.#o&&(this.#a?this.#o.cancel({revert:!0}):this.#o.cancelRetry()),this.scheduleGc()),this.#r.notify({type:"observerRemoved",query:this,observer:e}))}getObserversCount(){return this.observers.length}invalidate(){this.state.isInvalidated||this.#i({type:"invalidate"})}fetch(e,t){if(this.state.fetchStatus!=="idle"){if(this.state.data!==void 0&&t?.cancelRefetch)this.cancel({silent:!0});else if(this.#o)return this.#o.continueRetry(),this.#o.promise}if(e&&this.setOptions(e),!this.options.queryFn){let a=this.observers.find(c=>c.options.queryFn);a&&this.setOptions(a.options)}let r=new AbortController,o=a=>{Object.defineProperty(a,"signal",{enumerable:!0,get:()=>(this.#a=!0,r.signal)})},n=()=>{let a=wr(this.options,t),c={client:this.#n,queryKey:this.queryKey,meta:this.meta};return o(c),this.#a=!1,this.options.persister?this.options.persister(a,c,this):a(c)},i={fetchOptions:t,options:this.options,queryKey:this.queryKey,client:this.#n,state:this.state,fetchFn:n};o(i),this.options.behavior?.onFetch(i,this),this.#t=this.state,(this.state.fetchStatus==="idle"||this.state.fetchMeta!==i.fetchOptions?.meta)&&this.#i({type:"fetch",meta:i.fetchOptions?.meta});let s=a=>{br(a)&&a.silent||this.#i({type:"error",error:a}),br(a)||(this.#r.config.onError?.(a,this),this.#r.config.onSettled?.(this.state.data,a,this)),this.scheduleGc()};return this.#o=Sr({initialPromise:t?.initialPromise,fn:i.fetchFn,abort:r.abort.bind(r),onSuccess:a=>{if(a===void 0){s(new Error(`${this.queryHash} data is undefined`));return}try{this.setData(a)}catch(c){s(c);return}this.#r.config.onSuccess?.(a,this),this.#r.config.onSettled?.(a,this.state.error,this),this.scheduleGc()},onError:s,onFail:(a,c)=>{this.#i({type:"failed",failureCount:a,error:c})},onPause:()=>{this.#i({type:"pause"})},onContinue:()=>{this.#i({type:"continue"})},retry:i.options.retry,retryDelay:i.options.retryDelay,networkMode:i.options.networkMode,canRun:()=>!0}),this.#o.start()}#i(e){let t=r=>{switch(e.type){case"failed":return{...r,fetchFailureCount:e.failureCount,fetchFailureReason:e.error};case"pause":return{...r,fetchStatus:"paused"};case"continue":return{...r,fetchStatus:"fetching"};case"fetch":return{...r,...Gs(r.data,this.options),fetchMeta:e.meta??null};case"success":return{...r,data:e.data,dataUpdateCount:r.dataUpdateCount+1,dataUpdatedAt:e.dataUpdatedAt??Date.now(),error:null,isInvalidated:!1,status:"success",...!e.manual&&{fetchStatus:"idle",fetchFailureCount:0,fetchFailureReason:null}};case"error":let o=e.error;return br(o)&&o.revert&&this.#t?{...this.#t,fetchStatus:"idle"}:{...r,error:o,errorUpdateCount:r.errorUpdateCount+1,errorUpdatedAt:Date.now(),fetchFailureCount:r.fetchFailureCount+1,fetchFailureReason:o,fetchStatus:"idle",status:"error"};case"invalidate":return{...r,isInvalidated:!0};case"setState":return{...r,...e.state}}};this.state=t(this.state),V.batch(()=>{this.observers.forEach(r=>{r.onQueryUpdate()}),this.#r.notify({query:this,type:"updated",action:e})})}};function Gs(e,t){return{fetchFailureCount:0,fetchFailureReason:null,fetchStatus:wo(t.networkMode)?"fetching":"paused",...e===void 0&&{error:null,status:"pending"}}}function Ks(e){let t=typeof e.initialData=="function"?e.initialData():e.initialData,r=t!==void 0,o=r?typeof e.initialDataUpdatedAt=="function"?e.initialDataUpdatedAt():e.initialDataUpdatedAt:0;return{data:t,dataUpdateCount:0,dataUpdatedAt:r?o??Date.now():0,error:null,errorUpdateCount:0,errorUpdatedAt:0,fetchFailureCount:0,fetchFailureReason:null,fetchMeta:null,isInvalidated:!1,status:r?"success":"pending",fetchStatus:"idle"}}var $n=class extends Ne{constructor(e={}){super(),this.config=e,this.#e=new Map}#e;build(e,t,r){let o=t.queryKey,n=t.queryHash??Ot(o,t),i=this.get(n);return i||(i=new Yn({client:e,queryKey:o,queryHash:n,options:e.defaultQueryOptions(t),state:r,defaultOptions:e.getQueryDefaults(o)}),this.add(i)),i}add(e){this.#e.has(e.queryHash)||(this.#e.set(e.queryHash,e),this.notify({type:"added",query:e}))}remove(e){let t=this.#e.get(e.queryHash);t&&(e.destroy(),t===e&&this.#e.delete(e.queryHash),this.notify({type:"removed",query:e}))}clear(){V.batch(()=>{this.getAll().forEach(e=>{this.remove(e)})})}get(e){return this.#e.get(e)}getAll(){return[...this.#e.values()]}find(e){let t={exact:!0,...e};return this.getAll().find(r=>go(t,r))}findAll(e={}){let t=this.getAll();return Object.keys(e).length>0?t.filter(r=>go(e,r)):t}notify(e){V.batch(()=>{this.listeners.forEach(t=>{t(e)})})}onFocus(){V.batch(()=>{this.getAll().forEach(e=>{e.onFocus()})})}onOnline(){V.batch(()=>{this.getAll().forEach(e=>{e.onOnline()})})}};var jn=class extends Pr{#e;#t;#r;constructor(e){super(),this.mutationId=e.mutationId,this.#t=e.mutationCache,this.#e=[],this.state=e.state||Hs(),this.setOptions(e.options),this.scheduleGc()}setOptions(e){this.options=e,this.updateGcTime(this.options.gcTime)}get meta(){return this.options.meta}addObserver(e){this.#e.includes(e)||(this.#e.push(e),this.clearGcTimeout(),this.#t.notify({type:"observerAdded",mutation:this,observer:e}))}removeObserver(e){this.#e=this.#e.filter(t=>t!==e),this.scheduleGc(),this.#t.notify({type:"observerRemoved",mutation:this,observer:e})}optionalRemove(){this.#e.length||(this.state.status==="pending"?this.scheduleGc():this.#t.remove(this))}continue(){return this.#r?.continue()??this.execute(this.state.variables)}async execute(e){this.#r=Sr({fn:()=>this.options.mutationFn?this.options.mutationFn(e):Promise.reject(new Error("No mutationFn found")),onFail:(o,n)=>{this.#n({type:"failed",failureCount:o,error:n})},onPause:()=>{this.#n({type:"pause"})},onContinue:()=>{this.#n({type:"continue"})},retry:this.options.retry??0,retryDelay:this.options.retryDelay,networkMode:this.options.networkMode,canRun:()=>this.#t.canRun(this)});let t=this.state.status==="pending",r=!this.#r.canStart();try{if(!t){this.#n({type:"pending",variables:e,isPaused:r}),await this.#t.config.onMutate?.(e,this);let n=await this.options.onMutate?.(e);n!==this.state.context&&this.#n({type:"pending",context:n,variables:e,isPaused:r})}let o=await this.#r.start();return await this.#t.config.onSuccess?.(o,e,this.state.context,this),await this.options.onSuccess?.(o,e,this.state.context),await this.#t.config.onSettled?.(o,null,this.state.variables,this.state.context,this),await this.options.onSettled?.(o,null,e,this.state.context),this.#n({type:"success",data:o}),o}catch(o){try{throw await this.#t.config.onError?.(o,e,this.state.context,this),await this.options.onError?.(o,e,this.state.context),await this.#t.config.onSettled?.(void 0,o,this.state.variables,this.state.context,this),await this.options.onSettled?.(void 0,o,e,this.state.context),o}finally{this.#n({type:"error",error:o})}}finally{this.#t.runNext(this)}}#n(e){let t=r=>{switch(e.type){case"failed":return{...r,failureCount:e.failureCount,failureReason:e.error};case"pause":return{...r,isPaused:!0};case"continue":return{...r,isPaused:!1};case"pending":return{...r,context:e.context,data:void 0,failureCount:0,failureReason:null,error:null,isPaused:e.isPaused,status:"pending",variables:e.variables,submittedAt:Date.now()};case"success":return{...r,data:e.data,failureCount:0,failureReason:null,error:null,status:"success",isPaused:!1};case"error":return{...r,data:void 0,error:e.error,failureCount:r.failureCount+1,failureReason:e.error,isPaused:!1,status:"error"}}};this.state=t(this.state),V.batch(()=>{this.#e.forEach(r=>{r.onMutationUpdate(e)}),this.#t.notify({mutation:this,type:"updated",action:e})})}};function Hs(){return{context:void 0,data:void 0,error:null,failureCount:0,failureReason:null,isPaused:!1,status:"idle",variables:void 0,submittedAt:0}}var Jn=class extends Ne{constructor(e={}){super(),this.config=e,this.#e=new Set,this.#t=new Map,this.#r=0}#e;#t;#r;build(e,t,r){let o=new jn({mutationCache:this,mutationId:++this.#r,options:e.defaultMutationOptions(t),state:r});return this.add(o),o}add(e){this.#e.add(e);let t=Dr(e);if(typeof t=="string"){let r=this.#t.get(t);r?r.push(e):this.#t.set(t,[e])}this.notify({type:"added",mutation:e})}remove(e){if(this.#e.delete(e)){let t=Dr(e);if(typeof t=="string"){let r=this.#t.get(t);if(r)if(r.length>1){let o=r.indexOf(e);o!==-1&&r.splice(o,1)}else r[0]===e&&this.#t.delete(t)}}this.notify({type:"removed",mutation:e})}canRun(e){let t=Dr(e);if(typeof t=="string"){let o=this.#t.get(t)?.find(n=>n.state.status==="pending");return!o||o===e}else return!0}runNext(e){let t=Dr(e);return typeof t=="string"?this.#t.get(t)?.find(o=>o!==e&&o.state.isPaused)?.continue()??Promise.resolve():Promise.resolve()}clear(){V.batch(()=>{this.#e.forEach(e=>{this.notify({type:"removed",mutation:e})}),this.#e.clear(),this.#t.clear()})}getAll(){return Array.from(this.#e)}find(e){let t={exact:!0,...e};return this.getAll().find(r=>yo(t,r))}findAll(e={}){return this.getAll().filter(t=>yo(e,t))}notify(e){V.batch(()=>{this.listeners.forEach(t=>{t(e)})})}resumePausedMutations(){let e=this.getAll().filter(t=>t.state.isPaused);return V.batch(()=>Promise.all(e.map(t=>t.continue().catch(re))))}};function Dr(e){return e.options.scope?.id}function vo(e){return{onFetch:(t,r)=>{let o=t.options,n=t.fetchOptions?.meta?.fetchMore?.direction,i=t.state.data?.pages||[],s=t.state.data?.pageParams||[],a={pages:[],pageParams:[]},c=0,p=async()=>{let d=!1,u=f=>{Object.defineProperty(f,"signal",{enumerable:!0,get:()=>(t.signal.aborted?d=!0:t.signal.addEventListener("abort",()=>{d=!0}),t.signal)})},g=wr(t.options,t.fetchOptions),l=async(f,m,y)=>{if(d)return Promise.reject();if(m==null&&f.pages.length)return Promise.resolve(f);let v={client:t.client,queryKey:t.queryKey,pageParam:m,direction:y?"backward":"forward",meta:t.options.meta};u(v);let w=await g(v),{maxPages:P}=t.options,I=y?Kn:Gn;return{pages:I(f.pages,w,P),pageParams:I(f.pageParams,m,P)}};if(n&&i.length){let f=n==="backward",m=f?zs:Xn,y={pages:i,pageParams:s},v=m(o,y);a=await l(y,v,f)}else{let f=e??i.length;do{let m=c===0?s[0]??o.initialPageParam:Xn(o,a);if(c>0&&m==null)break;a=await l(a,m),c++}while(ct.options.persister?.(p,{client:t.client,queryKey:t.queryKey,meta:t.options.meta,signal:t.signal},r):t.fetchFn=p}}}function Xn(e,{pages:t,pageParams:r}){let o=t.length-1;return t.length>0?e.getNextPageParam(t[o],t,r[o],r):void 0}function zs(e,{pages:t,pageParams:r}){return t.length>0?e.getPreviousPageParam?.(t[0],t,r[0],r):void 0}var bo=class{#e;#t;#r;#n;#o;#s;#a;#i;constructor(e={}){this.#e=e.queryCache||new $n,this.#t=e.mutationCache||new Jn,this.#r=e.defaultOptions||{},this.#n=new Map,this.#o=new Map,this.#s=0}mount(){this.#s++,this.#s===1&&(this.#a=vr.subscribe(async e=>{e&&(await this.resumePausedMutations(),this.#e.onFocus())}),this.#i=gt.subscribe(async e=>{e&&(await this.resumePausedMutations(),this.#e.onOnline())}))}unmount(){this.#s--,this.#s===0&&(this.#a?.(),this.#a=void 0,this.#i?.(),this.#i=void 0)}isFetching(e){return this.#e.findAll({...e,fetchStatus:"fetching"}).length}isMutating(e){return this.#t.findAll({...e,status:"pending"}).length}getQueryData(e){let t=this.defaultQueryOptions({queryKey:e});return this.#e.get(t.queryHash)?.state.data}ensureQueryData(e){let t=this.defaultQueryOptions(e),r=this.#e.build(this,t),o=r.state.data;return o===void 0?this.fetchQuery(e):(e.revalidateIfStale&&r.isStaleByTime(ho(t.staleTime,r))&&this.prefetchQuery(t),Promise.resolve(o))}getQueriesData(e){return this.#e.findAll(e).map(({queryKey:t,state:r})=>{let o=r.data;return[t,o]})}setQueryData(e,t,r){let o=this.defaultQueryOptions({queryKey:e}),i=this.#e.get(o.queryHash)?.state.data,s=Mn(t,i);if(s!==void 0)return this.#e.build(this,o).setData(s,{...r,manual:!0})}setQueriesData(e,t,r){return V.batch(()=>this.#e.findAll(e).map(({queryKey:o})=>[o,this.setQueryData(o,t,r)]))}getQueryState(e){let t=this.defaultQueryOptions({queryKey:e});return this.#e.get(t.queryHash)?.state}removeQueries(e){let t=this.#e;V.batch(()=>{t.findAll(e).forEach(r=>{t.remove(r)})})}resetQueries(e,t){let r=this.#e;return V.batch(()=>(r.findAll(e).forEach(o=>{o.reset()}),this.refetchQueries({type:"active",...e},t)))}cancelQueries(e,t={}){let r={revert:!0,...t},o=V.batch(()=>this.#e.findAll(e).map(n=>n.cancel(r)));return Promise.all(o).then(re).catch(re)}invalidateQueries(e,t={}){return V.batch(()=>(this.#e.findAll(e).forEach(r=>{r.invalidate()}),e?.refetchType==="none"?Promise.resolve():this.refetchQueries({...e,type:e?.refetchType??e?.type??"active"},t)))}refetchQueries(e,t={}){let r={...t,cancelRefetch:t.cancelRefetch??!0},o=V.batch(()=>this.#e.findAll(e).filter(n=>!n.isDisabled()).map(n=>{let i=n.fetch(void 0,r);return r.throwOnError||(i=i.catch(re)),n.state.fetchStatus==="paused"?Promise.resolve():i}));return Promise.all(o).then(re)}fetchQuery(e){let t=this.defaultQueryOptions(e);t.retry===void 0&&(t.retry=!1);let r=this.#e.build(this,t);return r.isStaleByTime(ho(t.staleTime,r))?r.fetch(t):Promise.resolve(r.state.data)}prefetchQuery(e){return this.fetchQuery(e).then(re).catch(re)}fetchInfiniteQuery(e){return e.behavior=vo(e.pages),this.fetchQuery(e)}prefetchInfiniteQuery(e){return this.fetchInfiniteQuery(e).then(re).catch(re)}ensureInfiniteQueryData(e){return e.behavior=vo(e.pages),this.ensureQueryData(e)}resumePausedMutations(){return gt.isOnline()?this.#t.resumePausedMutations():Promise.resolve()}getQueryCache(){return this.#e}getMutationCache(){return this.#t}getDefaultOptions(){return this.#r}setDefaultOptions(e){this.#r=e}setQueryDefaults(e,t){this.#n.set(mt(e),{queryKey:e,defaultOptions:t})}getQueryDefaults(e){let t=[...this.#n.values()],r={};return t.forEach(o=>{ht(e,o.queryKey)&&Object.assign(r,o.defaultOptions)}),r}setMutationDefaults(e,t){this.#o.set(mt(e),{mutationKey:e,defaultOptions:t})}getMutationDefaults(e){let t=[...this.#o.values()],r={};return t.forEach(o=>{ht(e,o.mutationKey)&&Object.assign(r,o.defaultOptions)}),r}defaultQueryOptions(e){if(e._defaulted)return e;let t={...this.#r.queries,...this.getQueryDefaults(e.queryKey),...e,_defaulted:!0};return t.queryHash||(t.queryHash=Ot(t.queryKey,t)),t.refetchOnReconnect===void 0&&(t.refetchOnReconnect=t.networkMode!=="always"),t.throwOnError===void 0&&(t.throwOnError=!!t.suspense),!t.networkMode&&t.persister&&(t.networkMode="offlineFirst"),t.queryFn===Wt&&(t.enabled=!1),t}defaultMutationOptions(e){return e?._defaulted?e:{...this.#r.mutations,...e?.mutationKey&&this.getMutationDefaults(e.mutationKey),...e,_defaulted:!0}}clear(){this.#e.clear(),this.#t.clear()}};var Mt=b(E(),1),Zn=b(S(),1),ei=Mt.createContext(void 0);var So=({client:e,children:t})=>(Mt.useEffect(()=>(e.mount(),()=>{e.unmount()}),[e]),(0,Zn.jsx)(ei.Provider,{value:e,children:t}));var Me=b(E(),1);var X=b(E(),1);var Cr=b(E(),1);function ti(){let{workflowAgent:e,socket:t}=A();return{setWidgetValue:(0,Cr.useCallback)(async(o,n,i)=>{if(!e)throw new Error("workflowAgent not found");await t?.setWidgetValue(e,{values:[{nodeID:o,widgetIndex:n,value:i}]});let s=e.data.widgetTableStructure.widgetTableID,a=e.data.widgetTableStructure.widgetTablePath,c=e.data.widgetTableStructure.widgetTablePersisted,p=`${s}_${a}_${c}`,d=e.data.widgetTableStructure.nodes[o].widgets[n].outputType;Ys(p,o,n,i,d)},[e,t])}}function yt(){let{beforeWorkflowRunHooks:e,setBeforeWorkflowRunHooks:t}=A(),r=(0,Cr.useCallback)(n=>(t(i=>[...i,n]),()=>{t(i=>i.filter(a=>a!==n))}),[t]),o=(0,Cr.useCallback)(async()=>{for(let n=0;n{await e?.setComfyOrgAPIKey(t,v)},[e,t]),n=(0,X.useCallback)(async(v,w)=>{let P=O.getStore(v);if(!P)throw new Error("workflowAgent not found");try{await e?.openWorkflow(P,{workflow_path:w,sdpppID:H.sdpppID,sdpppToken:localStorage.getItem("token")||"",from_sid:D.data.sid,reset:!0})}catch(I){console.error(I)}},[e]),i=(0,X.useCallback)(async v=>{let w=O.getStore(v);if(!w||!w.data.widgetTableStructure.widgetTablePath)throw new Error("workflow not found");if(!w.data.widgetTableStructure.widgetTablePersisted)throw new Error("workflow is not savable");await n(v,w.data.widgetTableStructure.widgetTablePath)},[n]),s=(0,X.useCallback)((v,w=1)=>{e?.pageInstanceRun(v,D.data.sid,w)},[e]),a=(0,X.useCallback)(async v=>{let w=O.getStore(v);if(!w)throw new Error("workflowAgent not found");if(!w.data.widgetTableStructure.widgetTablePath)throw new Error("workflow not found");w.data.widgetTableStructure.widgetTablePath.indexOf("://")===-1&&await e?.saveWorkflow(w,{workflow_path:w.data.widgetTableStructure.widgetTablePath,from_sid:D.data.sid})},[e]),c=(0,X.useCallback)(async v=>{await e?.callForPSDExtract(v,{from_sid:D.data.sid})},[e]),p=(0,X.useCallback)(async v=>{let w=O.getStore(v);if(!w)throw new Error("workflowAgent not found");await e?.logout(w)},[e]),d=(0,X.useCallback)(async(v,w)=>await e?.uploadImage(D.data.sid,{image:v,filename:w,overwrite:!0}),[e]);globalThis.sdppp_action_run=async(v,{workflowPath:w})=>{w?l(w):g()};let u=(0,X.useCallback)(async(v,w=1)=>{!v&&!t||(await r(),await s(v||t,w))},[s,t,r]),g=(0,X.useCallback)(async(v,w=1)=>{await u(v||t,w),Po.action.recordAction?.({name:"sdppp_run",methodName:"sdppp_action_run"},{})},[u]),l=(0,X.useCallback)(async(v,w,P=1)=>{!w&&!t||(await n(w||t,v),u(w||t,P),Po.action.recordAction?.({name:"sdppp_run_"+v,methodName:"sdppp_action_run"},{workflowPath:v}))},[n,g,t]),f=(0,X.useCallback)(async()=>{t&&await e?.interrupt(t)},[e,t]),m=(0,X.useCallback)(async()=>{t&&await e?.clearQueue(t)},[e,t]),y=(0,X.useCallback)(async()=>{if(t)return await e?.reboot(t)},[e,t]);return{openWorkflow:n,reopenWorkflow:i,saveWorkflow:a,runPage:g,runWorkflow:l,callForPSDExtract:c,logout:p,uploadImage:d,interrupt:f,clearQueue:m,reboot:y,setComfyOrgAPIKey:o}}function Ir(){let[e,t]=(0,Me.useState)(!1),[r,o]=(0,Me.useState)(!1),n=(0,Me.useRef)(null),{autoRunning:i,workflowAgent:s}=A(),{runWorkflow:a,runPage:c}=oe();return(0,Me.useEffect)(()=>{if(i&&e&&!r){if(t(!1),i.type=="workflow")s&&!s.data.executingNodeTitle&&(a(i.value,s.data.sid,1),n.current=setTimeout(()=>{o(!1)},1e3));else if(i.type=="page"){let p=O.getStore(i.value);p&&!p.data.executingNodeTitle&&(o(!0),c(i.value),n.current=setTimeout(()=>{o(!1)},1e3))}}},[e,r,i,s,a,c]),(0,Me.useEffect)(()=>()=>{n.current&&clearTimeout(n.current)},[]),{setShouldTriggerLivePainting:t}}var ue=b(E(),1);var ni=b(S(),1),$s=15e3,ri=(0,ue.createContext)({});function oi({children:e,loginAppID:t,loginStyle:r,loginBannerTop:o,loginBannerBottom:n}){let[i,s]=(0,ue.useState)(!t),[a,c]=(0,ue.useState)(!1),p=(0,ue.useCallback)(async(f,m="sdppp123456")=>{try{let y=await fetch("https://api.authing.cn/api/v3/signin",{method:"POST",headers:{"Content-Type":"application/json","x-authing-app-id":t,"x-authing-sdk-version":"web:3.0.0"},body:JSON.stringify({connection:"PASSWORD",passwordPayload:{username:f,password:m}})}),v=await y.json();if(y.ok){if(v.statusCode===200)return{success:!0,token:v.data.access_token};if(v.statusCode===403)return{success:!1,message:h("Verification Error")}}else return{success:!1,message:JSON.stringify(v)}}catch(y){return{success:!1,message:y.toString()}}return{success:!1,message:"\u767B\u5F55\u5931\u8D25"}},[]),d=(0,ue.useCallback)(async f=>{if(!f)throw new Error("Token is required");let m="access_token",y="https://api.authing.cn/oidc/token/introspection",v=`token=${encodeURIComponent(f)}&token_type_hint=${encodeURIComponent(m)}&client_id=${encodeURIComponent(t)}`;try{let w=await fetch(y,{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded"},body:v});if(!w.ok)throw new Error(`Verification failed with status: ${w.status}`);return await w.json()}catch(w){throw console.error("Token verification error:",w),w}},[]),u=(0,ue.useCallback)(async f=>{try{let y=await(await fetch("https://api.authing.cn/api/v3/get-profile",{method:"GET",headers:{Authorization:`Bearer ${f}`,"x-authing-app-id":t}})).json();return y.statusCode===200?{data:y.data,success:!0}:{message:y.message,success:!1}}catch(m){return{success:!1,message:m}}},[]);async function g(f,m="sdppp123456"){let y=await p(f,m);if(y.success){let v=await u(y.token);v.success&&(localStorage.setItem("token",y.token),localStorage.setItem("lastLogin",new Date(v.data.lastLogin).getTime().toString()),s(!0))}return y}async function l(f){if(!localStorage.getItem("lastLogin"))return!1;if((await d(f)).active){let y=await u(f);if(y.success){let v=new Date(y.data.lastLogin).getTime().toString(),w=localStorage.getItem("lastLogin");return v===w}else return!1}return!1}return(0,ue.useEffect)(()=>{if(i){if(t){let f=setInterval(()=>{let m=localStorage.getItem("token");m&&l(m).then(y=>{y||s(!1)})},$s);return()=>{clearInterval(f)}}}else{let f=localStorage.getItem("token");if(!f)return;l(f).then(m=>{m&&s(!0)})}},[i]),(0,ni.jsx)(ri.Provider,{value:{hasAuthingLogin:!!t,loginStyle:r||"none",loginBannerBottom:n||null,loginBannerTop:o||null,isLogin:i,loggedInUsername:i&&localStorage.getItem("last-username")||"",logout:()=>{localStorage.removeItem("token"),s(!1),c(!1)},login:g,setIsTrialing:c,isTrialing:a},children:e})}function ne(){let e=(0,ue.useContext)(ri);if(!e)throw new Error("useSDPPPLogin must be used within a SDPPPLoginProvider");return e}var Ue=b(S(),1),ii=(0,wt.createContext)({});function si({children:e,loginAppID:t,loginStyle:r,loginBannerTop:o,loginBannerBottom:n}){let i=new bo;return(0,Ue.jsx)(So,{client:i,children:(0,Ue.jsx)(rt,{children:(0,Ue.jsx)(an,{children:(0,Ue.jsx)(oi,{loginAppID:t,loginStyle:r,loginBannerTop:o,loginBannerBottom:n,children:(0,Ue.jsx)(xn,{children:(0,Ue.jsx)(js,{children:e})})})})})})}function We(){let e=(0,wt.useContext)(ii);if(!e)throw new Error("SDPPPExternalContext not found");return e}function js({children:e}){let t=J(),r=A(),{logout:o,isLogin:n}=ne();H.registerTestCase&&(globalThis.sdppp_debugPhotoshopInternalContext=r,globalThis.sdppp_debugPhotoshopWebviewContext=t);let{toggleWebviewDialog:i,webviewAgentSID:s}=t,{autoRunning:a,setAutoRunning:c,workflowAgent:p,setWorkflowAgentSID:d,doConnectOrDisconnect:u,lastErrorMessage:g}=r,{setShouldTriggerLivePainting:l}=Ir();return(0,wt.useEffect)(()=>{let f=()=>{l(!0)};return D.subscribe("/canvasStateID",f),()=>{D.unsubscribe(f)}},[l]),(0,Ue.jsx)(ii.Provider,{value:{logout:o,isLogin:n,connectOrDisconnect:u,lastConnectErrorMessage:g,setAutoRunning:c,autoRunning:a,photoshopSID:D.data.sid,webviewAgentSID:s,workflowAgentSID:p?.data.sid||"",setWorkflowAgentSID:d,toggleWebviewDialog:i},children:e})}var Er=b(E(),1);var vt=b(E(),1);function ge(e,t){let[r,o]=(0,vt.useState)(e?{...e.data}:null),[n,i]=(0,vt.useState)(e?{...e.data}:null),s=Array.isArray(t)?t:[t];return(0,vt.useEffect)(()=>{e&&o({...e.data})},[e]),(0,vt.useEffect)(()=>{if(!e)return;let a=s.map(c=>{let p=()=>{i(r),o(e.data)};return e.subscribe(c,p),p});return()=>{a.forEach(c=>{e.unsubscribe(c)})}},[e,t]),{state:r||null,prevState:n||null}}function Ar(){let[e,t]=(0,Er.useState)({}),{state:r}=ge(D,"/comfyUserToken"),o=r?.comfyUserToken;return(0,Er.useEffect)(()=>{let n=!1,i=(s,a,c)=>{n||t(p=>{let d={...p};return a==null?delete d[s]:d[s]=a,d})};return O.subscribe("/",i),()=>{n=!0,O.unsubscribe(i)}},[]),{pageInstances:Object.entries(e).map(([n,i])=>({sid:n,ssid:n.slice(0,4),title:i.title,lastError:i.lastError,isWebview:!!i.webviewFromSid,isCurrentUser:!i.comfyUserToken||i.comfyUserToken==o})).filter(n=>!n.isWebview&&(!o||n.isCurrentUser))}}var ye=b(E(),1);function Js(e){let{state:t}=ge(D,["/comfyUserToken"]),{socket:r,workflowAgentSID:o}=A(),[n,i]=(0,ye.useState)({}),[s,a]=(0,ye.useState)(!1),[c,p]=(0,ye.useState)(null),d=(0,ye.useCallback)(async u=>{if(!u&&!o){i({});return}a(!0);let g=O.getStore(u||o);try{let l=await r?.listWorkflows(g||null,{listMode:H.listMode,sdpppID:H.sdpppID,sdpppToken:localStorage.getItem("token")||""})||{workflows:[],error:"Empty workflow list"};if(l.error){p(new Error(l.error)),a(!1);return}a(!1),p(null),i(l.workflows.reduce((f,m)=>(f[m]={path:m,content:null,error:""},f),{}))}catch(l){a(!1),p(l)}},[r,o]);return(0,ye.useEffect)(()=>{e&&d()},[e]),(0,ye.useEffect)(()=>{t?.comfyUserToken&&d()},[t]),{data:n,isLoading:s,error:c,refetch:d}}function ai(){let{backendURL:e,comfyMultiUser:t}=A(),{workflowAgentSID:r}=We(),[o,n]=(0,ye.useState)(!0),[i,s]=(0,ye.useState)(""),{data:a,isLoading:c,error:p,refetch:d}=Js(e);(0,ye.useEffect)(()=>{if(r)d(),n(!1);else{n(!0);let l=setTimeout(()=>{n(!1)},4e3);return()=>clearTimeout(l)}},[r]);let u=[];if(!c&&!p&&a){let l=[],f=[];Object.keys(a).forEach(m=>{if(m.startsWith(i)){let y=m.slice(i.length).split("://").pop();y&&(y.indexOf("/")==-1?l.push(m):f.push(m.slice(0,m.lastIndexOf("/")+1)))}}),u=[...f.sort((m,y)=>m.localeCompare(y)).map(m=>({path:m,isDir:!0})),...l.map(m=>({path:m,isDir:!1}))].filter((m,y,v)=>v.findIndex(w=>w.path==m.path)===y)}let g="";return p&&(g=p.message),u.length||(g=h("Workflow list is empty, please save a workflow by Comfy's lastest UI")),p&&(g=h("Workflow list loading failed: {0}",p.message)),c&&(g="Loading"),r||(g=h("Workflow Runner is loading...")),{workflows:a,isLoadingWorkflows:c,workflowsError:g,refetchWorkflows:d,afterPropsUpdate4s:o,currentViewingDirectory:i,setCurrentViewingDirectory:s,showingList:u}}function Lr(e){let t=e?O.getStore(e):null,{state:r}=ge(t||null,["/"]);return!r||!e?{sid:"",ssid:"",title:"",lastError:"",isWebview:!1,progress:0,executingNodeTitle:"",queueSize:0}:{sid:e,ssid:r.ssid,title:r.title,lastError:r.lastError,isWebview:!!r.webviewFromSid,progress:r.progress,executingNodeTitle:r.executingNodeTitle,queueSize:r.queueSize}}var pi=b(E(),1);var Fe=b(E(),1);var ci={LICENSE:{name:"BSD3-Clause",url:{en:"https://github.com/zombieyang/sd-ppp/blob/main/LICENSE",zhcn:"https://gitee.com/zombieyang/sd-ppp/blob/main/LICENSE"}},sponsors:[{name:"\u56DB\u559CAI",url:"https://v.douyin.com/hD2X7S717uw/"},{name:"\u82BD\u9EA6AI&\u5218\u9510",url:"https://v.douyin.com/cw4ba7Vn5-w/"},{name:"\u6C90\u6C90AI",url:"https://v.douyin.com/k6yKDEcVgP8/"},{name:"\u68A8\u68A8AI",url:"https://v.douyin.com/55KuUbZVGCM/"}],links:[{name:"\u732B\u54AA\u8001\u5E08Reimagined",url:"https://www.xiaohongshu.com/user/profile/59f1fcc411be101aba7f048f"},{name:"\u6765\u771F\u7684",url:"https://space.bilibili.com/590784254"},{name:"\u54D1\u72D7Egao",url:"https://space.bilibili.com/284721975"}],community:{en:[{name:"Github",url:"https://github.com/zombieyang/sd-ppp"},{name:"Discord",url:"https://discord.gg/9HeGjDvEmn"},{name:"Youtube",url:"https://www.youtube.com/@Github-Zombeeyang/videos"}],zhcn:[{name:"Github",url:"https://github.com/zombieyang/sd-ppp"},{name:"QQ\u9891\u9053",url:"https://pd.qq.com/s/5m42umo28"},{name:"Bilibili",url:"https://space.bilibili.com/44908313"}]},cloud:{en:[],zhcn:[{name:"\u6668\u7FBD\u667A\u4E91",url:"https://www.chenyu.cn/console/login?invitationCode=BUD913",icon:"icons/chenyu.ico",color:"var(--uxp-host-text-color-secondary)"},{name:"\u4ED9\u5BAB\u4E91",url:"https://www.xiangongyun.com/register/NWF5AH",icon:"https://www.xiangongyun.com/favicon.ico",color:"var(--uxp-host-text-color-secondary)"},{name:"Cephalon",url:"https://cephalon.cloud/share/register-landing?invite_id=m95SDj",icon:"icons/cephalon.ico",color:"var(--uxp-host-text-color-secondary)"}]}};var Do=ci,fi="sponsorData",ui={GITEE:"https://gitee.com/zombieyang/sd-ppp/raw/main/sponsors.json",GITHUB:"https://raw.githubusercontent.com/zombieyang/sd-ppp/refs/heads/main/sponsors.json"},Zs=5e3;function Co(){try{let e=localStorage.getItem(fi);if(e)return JSON.parse(e)}catch(e){console.warn("Failed to parse sponsor data from localStorage:",e)}return null}function li(e){try{localStorage.setItem(fi,JSON.stringify(e))}catch(t){console.warn("Failed to save sponsor data to localStorage:",t)}}function kr(e){try{if(!e||typeof e!="object")return console.warn("Invalid sponsor data: not an object"),!1;if(!e.LICENSE||typeof e.LICENSE!="object")return console.warn("Invalid sponsor data: LICENSE is not an object"),!1;if(!e.LICENSE.name)return console.warn("Invalid sponsor data: LICENSE.name is missing"),!1;if(!e.LICENSE.url||typeof e.LICENSE.url!="object")return console.warn("Invalid sponsor data: LICENSE.url is not an object"),!1;if(!e.LICENSE.url.en)return console.warn("Invalid sponsor data: LICENSE.url.en is missing"),!1;if(!e.LICENSE.url.zhcn)return console.warn("Invalid sponsor data: LICENSE.url.zhcn is missing"),!1;if(!Array.isArray(e.sponsors))return console.warn("Invalid sponsor data: sponsors is not an array"),!1;if(!Array.isArray(e.links))return console.warn("Invalid sponsor data: links is not an array"),!1;if(!e.community||typeof e.community!="object")return console.warn("Invalid sponsor data: community is not an object"),!1;if(!Array.isArray(e.community.en)||!Array.isArray(e.community.zhcn))return console.warn("Invalid sponsor data: community.en or community.zhcn is not an array"),!1;if(!e.cloud||typeof e.cloud!="object")return console.warn("Invalid sponsor data: cloud is not an object"),!1;if(!Array.isArray(e.cloud.en)||!Array.isArray(e.cloud.zhcn))return console.warn("Invalid sponsor data: cloud.en or cloud.zhcn is not an array"),!1;for(let t of e.cloud.zhcn)if(!t.name||!t.url||!t.icon||!t.color)return console.warn("Invalid sponsor data: cloud.zhcn item missing required properties"),!1;return!0}catch(t){return console.warn("Error validating sponsor data:",t),!1}}async function di(e){try{let t=await fetch(e);if(!t.ok)throw new Error(`Fetch failed with status: ${t.status}`);let r=await t.json();return kr(r)?r:null}catch(t){return console.warn(`Failed to fetch from ${e}:`,t),null}}var _r=null;function xr(){let[e,t]=Fe.default.useState(!0);if(!_r){let s=Co();_r=new Promise(a=>{let c=!1;di(ui.GITEE).then(p=>{!c&&p&&(c=!0,li(p),a(p),t(!1))}),di(ui.GITHUB).then(p=>{!c&&p&&(c=!0,li(p),a(p),t(!1))}),setTimeout(()=>{c||(c=!0,s&&kr(s)?(a(s),t(!1)):(console.warn("Using default data as fallback"),a(Do),t(!1)))},Zs)})}let[r,o]=Fe.default.useState(()=>{let s=Co();return s&&kr(s)?s:Do});Fe.default.useEffect(()=>{_r&&_r.then(s=>{o(s)}).catch(s=>{console.error("Error in useSponsor:",s);let a=Co();o(a&&kr(a)?a:Do)})},[]);let[n,i]=(0,Fe.useState)(!0);return(0,Fe.useEffect)(()=>{n&&!e&&i(e)},[e]),{data:r,isLoading:n}}var L=b(S(),1);function mi(){let{loginStyle:e}=ne(),{data:t}=xr(),r=(0,pi.useMemo)(()=>t.community[je()=="zhcn"?"zhcn":"en"],[t]);return(0,L.jsxs)("div",{className:"about-card",style:{position:"relative"},children:[e==="none"?(0,L.jsxs)(L.Fragment,{children:[(0,L.jsx)("div",{className:"about-card-sections about-card-title",children:(0,L.jsxs)("a",{href:t.LICENSE.url[je()=="zhcn"?"zhcn":"en"],children:[h("LICENSE:")," ",t.LICENSE.name]})}),(0,L.jsx)("sp-divider",{}),(0,L.jsx)("h2",{children:h("Sponsors")}),(0,L.jsx)("div",{className:"about-card-sections about-card-sponsors",children:t.sponsors.map(o=>(0,L.jsx)("a",{href:o.url,children:o.name},o.name))}),(0,L.jsx)("sp-divider",{}),(0,L.jsx)("h2",{children:h("Links")}),(0,L.jsx)("div",{className:"about-card-sections about-card-friends-links",children:t.links.map(o=>(0,L.jsx)("a",{href:o.url,children:o.name},o.name))}),(0,L.jsx)("sp-divider",{}),(0,L.jsxs)("h2",{children:["SD-PPP ",h("Community")]})]}):(0,L.jsxs)(L.Fragment,{children:[(0,L.jsx)("div",{className:"about-card-sections about-card-title",children:(0,L.jsx)("h4",{children:h("This plugin is based on sd-ppp")})}),(0,L.jsx)("div",{className:"about-card-sections about-card-title",children:(0,L.jsx)("h6",{children:h("And follows its open source license:")})}),(0,L.jsx)("div",{className:"about-card-sections about-card-title",children:(0,L.jsx)("a",{href:"https://github.com/zombieyang/sd-ppp/blob/main/LICENSE",children:"LICENSE: BSD3-Clause"})})]}),(0,L.jsx)("div",{className:"about-card-sections about-card-links",children:r.map(o=>(0,L.jsx)("a",{href:o.url,children:o.name},o.name))}),(0,L.jsx)("sp-divider",{}),t.site&&(0,L.jsx)("h1",{children:(0,L.jsx)("a",{href:t.site[je()=="zhcn"?"zhcn":"en"].url,children:t.site[je()=="zhcn"?"zhcn":"en"].name})})]})}var Se=b(E(),1);var hi=b(E(),1),bt=b(S(),1),Ut=class extends hi.default.Component{render(){let t=this.props.size||1;return(0,bt.jsx)("div",{slot:"icon",className:"sdppp-icon",onClick:this.props.onClick,children:(0,bt.jsxs)("svg",{width:20*t,height:20*t,viewBox:"0 0 14 14",fill:"none",xmlns:"http://www.w3.org/2000/svg",children:[(0,bt.jsx)("path",{d:"M5.586 5.586A2 2 0 018.862 7.73a.5.5 0 10.931.365 3 3 0 10-1.697 1.697.5.5 0 10-.365-.93 2 2 0 01-2.145-3.277z",fill:"currentColor"}),(0,bt.jsx)("path",{fillRule:"evenodd",clipRule:"evenodd",d:"M.939 6.527c.127.128.19.297.185.464a.635.635 0 01-.185.465L0 8.395a7.099 7.099 0 001.067 2.572h1.32c.182 0 .345.076.46.197a.635.635 0 01.198.46v1.317A7.097 7.097 0 005.602 14l.94-.94a.634.634 0 01.45-.186H7.021c.163 0 .326.061.45.186l.939.938a7.098 7.098 0 002.547-1.057V11.61c0-.181.075-.344.197-.46a.634.634 0 01.46-.197h1.33c.507-.76.871-1.622 1.056-2.55l-.946-.946a.635.635 0 01-.186-.465.635.635 0 01.186-.464l.943-.944a7.099 7.099 0 00-1.044-2.522h-1.34a.635.635 0 01-.46-.197.635.635 0 01-.196-.46V1.057A7.096 7.096 0 008.413.002l-.942.942a.634.634 0 01-.45.186H6.992a.634.634 0 01-.45-.186L5.598 0a7.097 7.097 0 00-2.553 1.058v1.33c0 .182-.076.345-.197.46a.635.635 0 01-.46.198h-1.33A7.098 7.098 0 00.003 5.591l.936.936zm.707 1.636c.324-.324.482-.752.479-1.172a1.634 1.634 0 00-.48-1.171l-.538-.539c.126-.433.299-.847.513-1.235h.768c.459 0 .873-.19 1.167-.49.3-.295.49-.708.49-1.167v-.77c.39-.215.807-.388 1.243-.515l.547.547c.32.32.742.48 1.157.48l.015-.001h.014c.415 0 .836-.158 1.157-.479l.545-.544c.433.126.846.299 1.234.512v.784c0 .46.19.874.49 1.168.294.3.708.49 1.167.49h.776c.209.382.378.788.502 1.213l-.545.546a1.635 1.635 0 00-.48 1.17c-.003.421.155.849.48 1.173l.549.55c-.126.434-.3.85-.513 1.239h-.77c-.458 0-.872.19-1.166.49-.3.294-.49.708-.49 1.167v.77a6.09 6.09 0 01-1.238.514l-.54-.54a1.636 1.636 0 00-1.158-.48H6.992c-.415 0-.837.159-1.157.48l-.543.543a6.091 6.091 0 01-1.247-.516v-.756c0-.459-.19-.873-.49-1.167-.294-.3-.708-.49-1.167-.49h-.761a6.094 6.094 0 01-.523-1.262l.542-.542z",fill:"currentColor"})]})})}};var Ft=b(S(),1);function gi(){let{loggedInUsername:e,logout:t}=ne();return(0,Ft.jsxs)("div",{className:"login-block",children:[(0,Ft.jsxs)("div",{className:"api-key-title",children:[H.\u63D2\u4EF6\u540D\u5B57," ID: ",e||"\u672A\u767B\u5F55"]}),(0,Ft.jsx)("div",{className:"logout-btn action-button",onClick:()=>{t()},children:e?h("Logout"):h("Login")})]})}var Tr=b(E(),1);var ke=b(S(),1);function Rr(e){let{state:t}=ge(D,["/comfyUserToken"]),{logout:r}=oe(),{workflowAgentSID:o,workflowAgent:n,comfyMultiUser:i}=A(),{resetWebview:s}=J(),[a,c]=(0,Tr.useState)(!1);if((0,Tr.useEffect)(()=>{if(!n){D.setComfyUserToken("");return}let u=(g,l)=>{let f=t?.comfyUserToken;D.setComfyUserToken(g),f==""&&a&&(s(),c(!1))};return n.subscribe("/comfyUserToken",u),u(n.data.comfyUserToken,""),()=>{n&&n.unsubscribe(u)}},[n,a,s]),!i)return null;if(!H.enableMU&&i)return(0,ke.jsxs)("div",{className:"login-block",children:[(0,ke.jsx)("div",{className:"login-title",children:h("Comfy multi-user: ")}),(0,ke.jsx)("div",{children:h("ComfyUI with --multi-user is only available for sponsors")})]});let p=n&&t?.comfyUserToken,d=t?.comfyUserToken?.split("_")[0]||"";return(0,ke.jsxs)("div",{className:"login-block",children:[(0,ke.jsx)("div",{className:`login-title${p?"":" login-title-secondary"}`,children:h("Comfy multi-user: ")+(p?d:"")}),p?(0,ke.jsx)("div",{className:"logout-btn action-button",onClick:()=>{r(o),c(!1)},children:h("Logout")}):(0,ke.jsx)("div",{className:"logout-btn action-button",onClick:()=>{c(!0),e.onRequestLogin?.()},children:h("Not Login")})]})}var Be=b(S(),1);function Nr(){let{workflowAgent:e}=A(),{state:t}=ge(e,["/comfyOrgAPIKey","/comfyOrgLoggedIn"]),{setComfyOrgAPIKey:r}=oe();return t?t.comfyOrgLoggedIn&&!t.comfyOrgAPIKey?(0,Be.jsxs)("div",{className:"login-block",children:[(0,Be.jsx)("div",{className:"api-key-title",children:"ComfyOrg API Key"}),(0,Be.jsx)("div",{children:h("Logged in by email/password")})]}):(0,Be.jsxs)("div",{className:"login-block",children:[(0,Be.jsx)("div",{className:"api-key-title",children:"ComfyOrg API Key"}),(0,Be.jsx)("div",{className:"logout-btn action-button",onClick:()=>{let o=prompt(h("Please input API key (will reload Runner)"));o&&r(o)},children:h("Set API Key")})]}):null}var Or=b(S(),1),ea=({pageInstance:e})=>{let{autoRunning:t,workflowAgentSID:r,setWorkflowAgentSID:o}=A(),n=r==e.sid,i=t?.value==e.sid;return(0,Or.jsx)("div",{className:`agent-list-item${n?" selected":""}${n||i?" checked":""}`,onClick:()=>o(n?"":e.sid),children:(0,Or.jsxs)("span",{children:["\u25CF [",e.ssid,"] ",e.title]})})},yi=ea;var we=b(S(),1),wi=()=>{let{workflowAgentSID:e,setWorkflowAgentSID:t,backendURL:r}=A(),{webviewAgentSID:o}=J(),{pageInstances:n}=Ar(),{timeoutError:i}=J();return(0,we.jsxs)(we.Fragment,{children:[i?(0,we.jsx)("div",{className:"client-panel-title",children:h("Webview load timeout, please switch to a different runner")}):(0,we.jsxs)("div",{className:"client-panel-title",children:[h("Runner")," (",r,")"]}),(0,we.jsx)("sp-label",{children:h("Open ComfyUI in the browser to see more options")}),(0,we.jsxs)("div",{className:"agent-list",children:[(0,we.jsx)("div",{className:`agent-list-item${e==o?" selected":""}`,onClick:()=>t(o),children:(0,we.jsxs)("span",{children:["\u25CF ",h("PS Webview")]})}),n.map(s=>(0,we.jsx)(yi,{pageInstance:s},s.sid))]})]})};var xe=b(S(),1);function vi({onRequestLogin:e}){let{timeoutError:t}=J(),{hasAuthingLogin:r}=ne();return(0,xe.jsxs)("div",{className:"client-panel",children:[(!r||t)&&(0,xe.jsx)(wi,{}),(0,xe.jsxs)("div",{className:"app-login-container",children:[(0,xe.jsx)("div",{className:"client-panel-title",children:h("Login/Auth")}),r&&(0,xe.jsx)(gi,{}),(0,xe.jsx)(Rr,{onRequestLogin:e}),(0,xe.jsx)(Nr,{})]})]})}var Q=b(S(),1);function bi(){let{backendURL:e,setBackendURL:t,connectState:r,doConnectOrDisconnect:o}=A(),n=r==="connected"||r==="connecting"?{disabled:!0}:{};(0,Se.useEffect)(()=>{e&&r==="disconnected"&&setTimeout(()=>{o()},1e3)},[]);let i=(0,Se.useRef)(!1);return(0,Se.useEffect)(()=>()=>{i.current=!0},[]),(0,Se.useEffect)(()=>()=>{r==="connected"&&i.current&&o()},[r]),(0,Q.jsxs)(Q.Fragment,{children:[r==="connected"?(0,Q.jsx)(ta,{}):(0,Q.jsx)("sp-textfield",{id:"url-bar",label:"backendURL",onInput:s=>{t(s.currentTarget.value)},...n,value:e||"",placeholder:yr}),(0,Q.jsx)("sp-action-button",{id:"connect-btn",onClick:()=>{o()},children:r!=="disconnected"?"\u2297":"\u2192"})]})}function ta(){let[e,t]=(0,Se.useState)(""),[r,o]=(0,Se.useState)(""),{workflowAgentSID:n}=We(),{comfyMultiUser:i}=A(),{webviewAgentSID:s,timeoutError:a,loadError:c,toggleWebviewDialog:p}=J(),d=(0,Se.useRef)(null),{ssid:u,lastError:g,progress:l,executingNodeTitle:f,queueSize:m}=Lr(n),{loggedInUsername:y,hasAuthingLogin:v,isLogin:w}=ne(),P=n&&m?`(${m})`:"";(0,Se.useEffect)(()=>{n?n&&(f?t(`(${l}% - ${f}...)`):(t(""),o(""))):i&&!D.data.comfyUserToken?t(h("--multi-user Not Login!")):(a||c)&&o(h("Error: {0}",c||h("timeout")))},[n,g,l,f,a,c,i]);let I="";return s==n?I=h("PS Webview"):n&&u?I=h("Browser {0}",u):I=h("Loading..."),(0,Q.jsxs)("div",{className:"connect-configuration",onClick:()=>{d.current?.show()},children:[(0,Q.jsx)("dialog",{ref:d,style:{margin:"0",width:"480px",height:"540px",padding:"8px"},onClick:j=>{j.stopPropagation()},children:(0,Q.jsx)(vi,{onRequestLogin:async()=>{d.current?.close(),await new Promise(j=>setTimeout(j,300)),p()}})}),(0,Q.jsxs)("div",{className:"connect-config-content",children:[v?(0,Q.jsxs)("span",{children:["\u7528\u6237\u540D\uFF1A",w?y:"\u672A\u767B\u5F55"]}):(0,Q.jsxs)("span",{children:["\u23F5 ",h("Runner"),": ",I," ",P]}),r&&(0,Q.jsx)("span",{className:"connect-config-error",children:r}),!r&&e&&(0,Q.jsx)("span",{className:"connect-config-message",children:e})]}),(0,Q.jsx)("div",{className:"connect-config-actions",children:(0,Q.jsx)(Ut,{size:.8})}),l?(0,Q.jsx)("div",{className:"connect-config-progress",style:{width:`${l}%`}}):""]})}var Di=b(E(),1);var Ve=class{static makeDocumentDataOptions(t){let r=t.data,o=[`${C.getSpecialDocumentCurrent()}`];return Object.keys(r.documents).forEach(n=>{let i=r.documents[n];o.push(i.identify)}),o}static findDocumentData(t,r){let o=C.is_SPECIAL_DOCUMENT_CURRENT(r)?t.data.activeDocumentID:Oo(r).id;return t.data.documents[o]}static makeLayerOptions(t,r){return r.concat(t.layers.map(n=>n.identify))}static getLayerDirtyID(t,r){return t.layers.find(n=>n.identify===r)?.dirtyID||0}static getCanvasDirtyID(t){return t.canvasDirtyID||0}static getSelectionDirtyID(t){return t.selectionDirtyID||0}};var Pi=b(E(),1);var Si=b(E(),1);function Pe(e){return e=e||12,{flex:`${e} 0 calc(${e/12*100}% - 10px)`,maxWidth:"100%"}}var St=class extends Pi.Component{computeUIWeightCSS(t){return Pe(t)}};var ot=b(S(),1),qe=class extends St{state={filter:""};handleSelectUpdate=(t,r)=>{this.props.onSelectUpdate(t,r),this.setState({filter:""})};render(){let{options:t,value:r,name:o}=this.props;return(0,ot.jsxs)("div",{style:{display:"flex",alignItems:"center",...this.computeUIWeightCSS(this.props.uiWeight)},children:[o&&(0,ot.jsx)("sp-label",{style:{flex:1},children:o}),(0,ot.jsx)("sp-picker",{class:"sdppp-dropdown-widget",size:"s",style:this.props.name?{flex:2}:{width:"100%"},children:(0,ot.jsx)("sp-menu",{slot:"options",children:t.map((n,i)=>this.state.filter&&!n.includes(this.state.filter)?"":(0,ot.jsx)("sp-menu-item",{...Wr(n)===Wr(r)?{selected:!0}:{},onClick:()=>this.handleSelectUpdate(n,i),children:Wr(n)},Wr(n)))})})]})}};function Wr(e){return typeof e=="string"?e:e.content}var Ci=b(S(),1),Mr=class e extends Di.default.Component{state={options:Ve.makeDocumentDataOptions(D)};constructor(t){super(t),D.subscribe("/documents",this.updateOptions)}updateOptions=()=>{let t=Ve.makeDocumentDataOptions(D);this.setState({options:t})};componentwillUnmount(){D.unsubscribe(this.updateOptions)}static getValueIfIsValidOptionOrCurrent(t,r){return!r||r.includes(t)?t:C.getSpecialDocumentCurrent()}static getDerivedStateFromProps(t,r){let o=t.value;if(o){let n=o.split("/"),i=e.getValueIfIsValidOptionOrCurrent(n.slice(1).join("/"),r.options);return C.is_SPECIAL_DOCUMENT_CURRENT(i)?o=C.getSpecialDocumentCurrent():o=i,n[0]!=D.data.uname&&t.onSelectUpdate(D.data.uname+"/"+o,0),Object.assign(r,{value:o})}return null}render(){let t=e.getValueIfIsValidOptionOrCurrent(this.props.value,this.state.options);return(0,Ci.jsx)(qe,{uiWeight:this.props.uiWeight,options:this.state.options,onSelectUpdate:(r,o)=>{this.props.onSelectUpdate(D.data.uname+"/"+r,o)},value:t})}};var Ei=b(E(),1);var Ii=b(S(),1);function ve(e){return(0,Ii.jsx)("a",{onClick:e.onClick,children:e.label})}var Te=b(S(),1),Qe=class extends Ei.default.Component{state={options:[]};constructor(t){super(t),D.subscribe("/documents",this.updataOptionsAfterDocumentChange)}componentwillUnmount(){D.unsubscribe(this.updataOptionsAfterDocumentChange)}componentDidMount(){this.updateOptions(this.props.documentValue||C.getSpecialDocumentCurrent())}shouldComponentUpdate(t,r){return t.documentValue!=this.props.documentValue&&t.documentValue&&this.updateOptions(t.documentValue),!0}updataOptionsAfterDocumentChange=()=>{this.updateOptions(this.props.documentValue||C.getSpecialDocumentCurrent())};updateOptions=t=>{t=t||this.props.documentValue||C.getSpecialDocumentCurrent();let r=Ve.findDocumentData(D,t);if(!r){this.setState({options:[]});return}let o=Ve.makeLayerOptions(r,C.getSpecialLayerForGet());this.setState({options:o})};render(){let t=this.props.value;if(t)try{t=h(t)}catch{}return(0,Te.jsxs)("div",{className:"sdppp-layer-widget",style:Pe(this.props.uiWeight),children:[(0,Te.jsx)("div",{className:"sdppp-layer-widget-dropdown",children:(0,Te.jsx)(qe,{uiWeight:12,options:this.state.options,onSelectUpdate:this.props.onSelectUpdate,value:t})}),(0,Te.jsxs)("div",{className:"sdppp-layer-widget-quick-set",children:[(0,Te.jsxs)("sp-label",{children:[h("Quick Set"),":"]}),(0,Te.jsx)(ve,{onClick:async()=>{let r=Je();this.props.onSelectUpdate(r,this.state.options.indexOf(r))},label:h("Selected Layer")}),(0,Te.jsx)(ve,{onClick:async()=>{this.props.onSelectUpdate(C.get_SPECIAL_LAYER_USE_CANVAS(),this.state.options.indexOf(C.get_SPECIAL_LAYER_USE_CANVAS()))},label:h("Canvas")})]})]})}};var qt=b(xt(),1),Pt=N("photoshop"),fe=b(E(),1);var Io=b(xt(),1),Ur=N("photoshop"),de=b(E(),1);var Bt=b(S(),1);function Vt({mode:e,setMode:t}){let r=o=>{t(o)};return(0,Bt.jsxs)("div",{className:"widget-mode-selection",children:[(0,Bt.jsx)("button",{className:`widget-mode-selection-button ${e==="manual"?"selected":""}`,onClick:()=>r("manual"),children:h("Manual")}),(0,Bt.jsx)("button",{className:`widget-mode-selection-button ${e==="auto"?"selected":""}`,onClick:()=>r("auto"),children:h("Auto")})]})}var le=b(S(),1);function Ai(e){let[t,r]=(0,de.useState)(""),[o,n]=(0,de.useState)(""),[i,s]=(0,de.useState)("manual"),[a,c]=(0,de.useState)(!1),[p,d]=(0,de.useState)(null),{backendURL:u}=A(),{uploadImage:g}=oe(),{addBeforeWorkflowRunHook:l}=yt(),f=(0,de.useRef)(null),m=(0,de.useCallback)(async()=>{if(i==="manual"&&!a&&p){await e.onValueChange(p);return}try{if(i==="auto"&&await v(t),f.current){let w=await f.current.getBuffer(Io.JimpMime.jpeg),P=await g(w,Ct(6)+".jpeg");P?.name&&(d(P.subfolder+"/"+P.name),c(!1),await e.onValueChange(P.subfolder+"/"+P.name))}}catch(w){console.error(w)}},[i,a,p,e.onValueChange]);(0,de.useEffect)(()=>{let P=l(m);return()=>{P()}},[m]);let y=o;if(!y&&(p||e.value)){let w=p||e.value,P=w.split("/").slice(0,-1).join("/");y=u+(u.endsWith("/")?"":"/")+`api/view?filename=${w}&type=input&subfolder=${P}&rand=`+Math.random()}let v=(0,de.useCallback)(async w=>{let P=await Eo(w);if(!P)return;f.current=P;let I=await ra(P);r(w),n(I),c(!0)},[]);return(0,le.jsxs)("div",{className:"image-widget",children:[(0,le.jsx)("div",{className:"image-widget-left",children:(0,le.jsx)("img",{src:y,className:"image-widget-image"+(y?"":" image-widget-image-empty")})}),(0,le.jsxs)("div",{className:"image-widget-right",children:[(0,le.jsx)(Vt,{mode:i,setMode:s}),i==="manual"&&(0,le.jsxs)("div",{className:"image-widget-more-quickset",children:[(0,le.jsx)("sp-label",{children:h("Set As:")}),(0,le.jsx)(ve,{onClick:()=>{v(Je())},label:h("Selected Layer")}),(0,le.jsx)(ve,{onClick:()=>{v(C.get_SPECIAL_LAYER_USE_CANVAS())},label:h("Canvas")})]}),i=="auto"&&(0,le.jsx)("div",{className:"image-widget-layer-widget-container",children:(0,le.jsx)(Qe,{onSelectUpdate:v,uiWeight:10,value:t})})]})]})}async function Eo(e){if(!Ur.app.activeDocument)return null;try{return await dr.getJimpImage({document_identify:Ie(Ur.app.activeDocument.id,Ur.app.activeDocument.name),layer_identify:e})}catch(t){throw console.error(t),t}}async function ra(e){let t=100/Math.max(e.width,e.height);return e=e.clone(),e.scale(t),await e.getBase64(Io.JimpMime.jpeg)}var Z=b(S(),1);function _i(e){let[t,r]=(0,fe.useState)(""),[o,n]=(0,fe.useState)(""),[i,s]=(0,fe.useState)("manual"),[a,c]=(0,fe.useState)(!1),[p,d]=(0,fe.useState)(null),{backendURL:u}=A(),{uploadImage:g}=oe(),{addBeforeWorkflowRunHook:l}=yt(),f=(0,fe.useRef)(null),m=(0,fe.useCallback)(async()=>{if(i==="manual"&&!a&&p){await e.onValueChange(p);return}try{if(i==="auto"&&await v(t),f.current){let w=await f.current.getBuffer(qt.JimpMime.png),P=await g(w,Ct(6)+".png");P?.name&&(d(P.subfolder+"/"+P.name),c(!1),await e.onValueChange(P.subfolder+"/"+P.name))}}catch(w){console.error(w)}},[i,a,p,e.onValueChange]);(0,fe.useEffect)(()=>{let w=l(m);return()=>{w()}},[m]);let y=o;if(!y&&(p||e.value)){let w=p||e.value,P=w.split("/").slice(0,-1).join("/");y=u+(u.endsWith("/")?"":"/")+`api/view?filename=${w}&type=input&subfolder=${P}&rand=`+Math.random()}let v=(0,fe.useCallback)(async(w,P=!1)=>{let I=await Eo(w);if(!I)return;P&&I.scan(0,0,I.bitmap.width,I.bitmap.height,function(be,ie,k){I.bitmap.data[k+3]=255-I.bitmap.data[k+3]}),f.current=I;let j=await Li(I);r(w),n(j),c(!0)},[]);return(0,Z.jsxs)("div",{className:"image-widget",children:[(0,Z.jsx)("div",{className:"image-widget-left",children:(0,Z.jsx)("img",{src:y,className:"image-widget-image"+(y?"":" image-widget-image-empty")})}),(0,Z.jsxs)("div",{className:"image-widget-right",children:[(0,Z.jsx)(Vt,{mode:i,setMode:w=>{s(w)}}),i==="manual"&&(0,Z.jsxs)("div",{className:"image-widget-more-quickset",children:[(0,Z.jsx)("sp-label",{children:h("Set As:")}),(0,Z.jsx)(ve,{onClick:()=>{v(Je(),!1)},label:h("Selected Layer")}),(0,Z.jsx)(ve,{onClick:async()=>{v(Je(),!0)},label:h("Selected Layer (invert)")}),(0,Z.jsx)(ve,{onClick:()=>{v(C.get_SPECIAL_LAYER_USE_CANVAS())},label:h("Canvas")}),(0,Z.jsx)(ve,{onClick:async()=>{let w=await oa();if(!w)return;f.current=w;let P=await Li(w);r(""),n(P),c(!0)},label:h("Selection")})]}),i==="auto"&&(0,Z.jsx)("div",{className:"image-widget-layer-widget-container",children:(0,Z.jsx)(Qe,{onSelectUpdate:w=>{v(w,!1)},uiWeight:12,value:t})})]})]})}async function oa(){if(!Pt.app.activeDocument)return null;try{let e=await Nt({document_identify:Ie(Pt.app.activeDocument.id,Pt.app.activeDocument.name),boundary:{left:0,top:0,right:0,bottom:0,width:Pt.app.activeDocument.width,height:Pt.app.activeDocument.height}});if(!e?.blob)return null;let t=e.blob,r=new Uint8Array(t.length*4);for(let o=0;oe.nodeIndexes.map(g=>{let l=e.nodes[g],f=(w,P,I)=>w.keepRender?P.outputType==="error"?(w.result.push((0,$.jsx)("span",{className:"list-error-label",children:t[l.id][I]})),w):(o?.(w,l,P,I),w):w,m=Object.values(e.groups).find(w=>w.nodeIDs.includes(l.id)),y=m?.color||"rgba(127, 127, 127, .4)";if(s&&m?.id!==s)return null;let v=l.uiWeightSum<=8&&l.widgets.length==1&&(l.widgets[0].outputType!=="number"||!e.extraOptions?.useSliderForNumberWidget);return(0,$.jsxs)("div",{className:"workflow-edit-field",children:[(0,$.jsx)("div",{className:"workflow-edit-field-title",title:l.title,style:{...Pe(v?4:12),borderColor:y},children:i?i(l.title,l):(0,$.jsx)("span",{children:l.title})}),l.widgets.reduce(f,{keepRender:!0,result:[]}).result.map((w,P)=>(0,$.jsx)(Ao,{children:w},P)),r[l.id]?(0,$.jsx)("span",{className:"list-error-label",children:r[l.id]}):""]},l.id)}).filter(Boolean),[e,t,r,o,n,i,s]),[p,d]=(0,nt.useMemo)(()=>[Object.keys(r).filter(g=>e.nodes[parseInt(g)]),Object.keys(r).filter(g=>!e.nodes[parseInt(g)])],[r,e]),u=null;return d.length>0?u=(0,$.jsx)("span",{className:"list-error-label",children:r[+d[0]]}):p.length>0&&(u=(0,$.jsx)("span",{className:"list-error-label",children:r[+p[0]]})),(0,$.jsxs)($.Fragment,{children:[u,Object.keys(e.nodes).length?"":(0,$.jsx)("span",{className:"list-error-label",children:h("no suitable node to control in this workflow")}),(0,$.jsx)("div",{className:"workflow-edit-content",children:c})]})}var Ao=class extends nt.default.Component{constructor(t){super(t),this.state={hasError:!1,error:null}}componentDidCatch(t,r){this.setState({hasError:!0,error:t})}render(){return this.state.hasError?(0,$.jsx)("span",{className:"list-error-label",children:this.state.error?.stack||this.state.error?.message||this.state.error?.toString()}):this.props.children}};var Ke=b(E(),1);var Ge=b(S(),1),ki=e=>{let{inputMin:t,inputMax:r,inputStep:o,value:n=0,onValueChange:i,name:s,uiWeight:a,extraOptions:c}=e,[p,d]=(0,Ke.useState)(+n.toFixed(3));(0,Ke.useEffect)(()=>{d(+n.toFixed(3))},[n]);let u=(0,Ke.useCallback)(m=>{let y=+m.target.value;d(+y.toFixed(3))},[]),g=(0,Ke.useCallback)(()=>{i(p)},[p,i]),l=(0,Ke.useCallback)(m=>{let y=+m.target.value;d(+y.toFixed(3)),i(+y.toFixed(3))},[p,i]);return!((r-t)/o>1e3)&&a&&a>=1&&c?.useSliderForNumberWidget?(0,Ge.jsxs)("div",{style:{...Pe(a),display:"flex",alignItems:"center"},children:[(0,Ge.jsx)("sp-slider",{style:{width:"60%"},min:t,max:r,step:o,value:p,onInput:l,"show-value":"false",class:"sdppp-slider"}),(0,Ge.jsx)("sp-textfield",{style:{width:"40%"},onInput:u,onBlur:g,value:p})]}):(0,Ge.jsxs)("div",{style:{...Pe(a),display:"flex",alignItems:"center"},children:[s&&(0,Ge.jsx)("sp-label",{style:{flex:"1"},children:s}),(0,Ge.jsx)("sp-textfield",{style:s?{flex:"2"}:{width:"100%"},onInput:u,onBlur:g,value:p})]})};var Y=b(E(),1);var Dt=b(S(),1);function xi(e){let t=Y.default.useRef(null),[r,o]=(0,Y.useState)(0),[n,i]=(0,Y.useState)(e.value??""),[s,a]=(0,Y.useState)(!1);return(0,Y.useEffect)(()=>{s||i(e.value??"")},[e.value]),(0,Y.useEffect)(()=>{let c=setInterval(()=>{if(t.current){let p=t.current.offsetHeight;p!==r&&o(p)}},16);return()=>clearInterval(c)},[r]),(0,Dt.jsxs)("div",{className:"widget-container",style:{...Pe(e.uiWeight),position:"relative",height:Math.max(55,r)},children:[(0,Dt.jsx)(na,{textAreaValue:n,setTextAreaValue:i,editing:s,setEditing:a,onValueChange:e.onValueChange,hiddenDivHeight:r}),(0,Dt.jsx)("p",{ref:t,style:{fontSize:14,visibility:"hidden",whiteSpace:"pre-line"},children:n})]})}function na({textAreaValue:e,onValueChange:t,editing:r,setEditing:o,setTextAreaValue:n,hiddenDivHeight:i}){let[s,a]=(0,Y.useState)(0),c=(0,Y.useCallback)(l=>{let f=l.target.value;t(f),n(f)},[t,n]),p=(0,Y.useCallback)(()=>{o(!0)},[o]),d=(0,Y.useCallback)(()=>{let l={textfieldRerender:s,editing:!1};s==2&&(l.textfieldRerender=1),a(l.textfieldRerender),o(l.editing)},[s,a,o]),[u,g]=(0,Y.useState)(i);return(0,Y.useEffect)(()=>{i!=u&&(a(r?2:1),g(i))},[i]),(0,Y.useEffect)(()=>{s==1&&Promise.resolve().then(async()=>{await new Promise(requestAnimationFrame),a(0)})},[s]),s==1?"":(0,Dt.jsx)("sp-textarea",{style:{position:"absolute",height:"100%",width:"100%",top:0,left:0},value:e,onInput:c,onFocus:p,onBlur:d})}var _o=b(S(),1),Fr=class extends St{onInput=t=>{let r=!!t.target.value;this.setState({value:r}),this.props.onValueChange(r)};render(){let t=this.props.value?{checked:!0}:{};return H.checkboxStyle==="div"?(0,_o.jsx)("div",{style:{...this.computeUIWeightCSS(this.props.uiWeight)},className:(t.checked?"active":"")+" sdppp-checkbox",onClick:r=>{this.props.onValueChange(!this.props.value)},children:this.props.name||""}):(0,_o.jsx)("sp-checkbox",{label:this.props.name||"",style:{...this.computeUIWeightCSS(this.props.uiWeight)},onInput:r=>{this.props.onValueChange(r.target.checked)},...t,children:this.props.name||""})}};function Ti(e){return e.replace(/^workflows\//,"").replace(/\.json$/,"").split("://").pop()}var ee=b(S(),1);function Ri(){let{callForPSDExtract:e}=oe(),{workflowAgent:t}=A(),{setWidgetValue:r}=ti(),{setShouldTriggerLivePainting:o}=Ir(),{state:n}=ge(t,["/widgetTableValue","/widgetTableStructure","/widgetTableErrors"]),i=!!t?.data.hasPSDNodes,s=(0,ko.useCallback)(async(u,g,l,f)=>{await r(u,g,l),o(!0)},[r,o]),a=n?.widgetTableStructure,c=n?.widgetTableValue,p=n?.widgetTableErrors,d=(0,ko.useCallback)((u,g,l,f)=>{if(l.outputType=="PS_DOCUMENT")return u.result.push((0,ee.jsx)(Mr,{uiWeight:l.uiWeight||12,value:c?.[g.id]?.[f]||"",onSelectUpdate:m=>{s(g.id,f,m,g)},extraOptions:a?.extraOptions},f)),!0;if(l.outputType=="PS_LAYER"){let m=l.options?.documentNodeID||0,y=c?.[m]?.[0]||"";return u.result.push((0,ee.jsx)(Qe,{uiWeight:l.uiWeight||12,value:c?.[g.id]?.[f]||"",documentValue:y?y.split("/").pop():"",onSelectUpdate:v=>{s(g.id,f,v,g)},extraOptions:a?.extraOptions},f)),!0}else{if(l.outputType=="IMAGE_PATH")return u.result.push((0,ee.jsx)(Ai,{uiWeight:l.uiWeight||12,value:c?.[g.id]?.[f]||"",onValueChange:async m=>{await s(g.id,f,m,g)},extraOptions:a?.extraOptions},f)),!0;if(l.outputType=="MASK_PATH")return u.result.push((0,ee.jsx)(_i,{uiWeight:l.uiWeight||12,value:c?.[g.id]?.[f]||"",onValueChange:async m=>{await s(g.id,f,m,g)},extraOptions:a?.extraOptions},f)),!0;if(l.outputType==="number"){let m=l.options?.min??0,y=l.options?.max??100,v=l.options?.step??1;u.result.push((0,ee.jsx)(ki,{uiWeight:l.uiWeight||12,name:l.name,inputMin:m,inputMax:y,inputStep:v,value:parseFloat(c?.[g.id]?.[f]||"0"),onValueChange:w=>{s(g.id,f,w,g)},extraOptions:a?.extraOptions},f))}else if(l.outputType==="combo")u.result.push((0,ee.jsx)(qe,{uiWeight:l.uiWeight||12,name:l.name,options:l.options?.values||[],onSelectUpdate:m=>{s(g.id,f,m,g)},value:c?.[g.id]?.[f]||"",extraOptions:a?.extraOptions},f));else if(l.outputType==="toggle")u.result.push((0,ee.jsx)(Fr,{uiWeight:l.uiWeight||12,name:l.name,value:c?.[g.id]?.[f]||"",onValueChange:m=>{s(g.id,f,m,g)},extraOptions:a?.extraOptions},f));else{let m=c?.[g.id]?.[f]||"";u.result.push((0,ee.jsx)(xi,{uiWeight:l.uiWeight||12,value:typeof m=="string"?m:JSON.stringify(m),onValueChange:y=>{s(g.id,f,y,g)},extraOptions:a?.extraOptions},f))}}return!1},[r,c]);return a?(0,ee.jsxs)("div",{className:"workflow-edit",children:[(0,ee.jsxs)("div",{className:"workflow-edit-title",children:[a.widgetTablePath&&(0,ee.jsx)("sp-label",{style:{fontWeight:"bold"},children:Ti(a.widgetTablePath)}),i?(0,ee.jsx)("a",{onClick:()=>{e(t?.data.sid||"").catch(u=>{alert(u.message)})},children:">"+h("sample .psd")}):""]}),(0,ee.jsx)(Lo,{widgetTableStructure:a,widgetTableValue:c||{},widgetTableErrors:p||{},onWidgetChange:s,onWidgetRender:d})]}):null}var Br=b(E(),1);var q=b(S(),1);function Ni(){let{login:e,loginStyle:t,loginBannerTop:r,loginBannerBottom:o,setIsTrialing:n}=ne(),[i,s]=(0,Br.useState)(localStorage.getItem("last-username")||""),[a,c]=(0,Br.useState)(""),[p,d]=(0,Br.useState)("");return(0,q.jsxs)("div",{className:"login-container",children:[r,(0,q.jsx)("div",{className:"login-container-login",children:(0,q.jsxs)("div",{className:"login-form",children:[t==="invitation"?(0,q.jsxs)("div",{className:"login-form-item",children:[(0,q.jsx)("label",{htmlFor:"username",children:h("Invitation Code")}),(0,q.jsx)("sp-textfield",{type:"text",id:"username",placeholder:h("Please input invitation code"),value:i,onInput:u=>s(u.target.value)})]}):(0,q.jsxs)(q.Fragment,{children:[(0,q.jsxs)("div",{className:"login-form-item",children:[(0,q.jsx)("label",{htmlFor:"username",children:h("Username")}),(0,q.jsx)("sp-textfield",{type:"text",id:"username",placeholder:h("Please input username"),value:i,onInput:u=>s(u.target.value)})]}),(0,q.jsxs)("div",{className:"login-form-item",children:[(0,q.jsx)("label",{htmlFor:"password",children:h("Password")}),(0,q.jsx)("sp-textfield",{type:"password",id:"password",placeholder:h("Please input password"),value:a,onInput:u=>c(u.target.value)})]})]}),(0,q.jsx)("div",{className:"login-error-message",children:p}),(0,q.jsx)("button",{className:"login-button",onClick:async()=>{let u=await e(i,a);u.success?(d(""),localStorage.setItem("last-username",i)):d(u.message)},children:h("Login")}),t==="trialable-password"&&(0,q.jsx)("a",{className:"trial-button",onClick:()=>n(!0),children:"\u6E38\u5BA2\u8BD5\u7528"})]})}),o]})}var He=b(S(),1);function Oi({renderContent:e}){let{connectState:t}=A(),{isLogin:r,isTrialing:o}=ne();return(0,He.jsxs)("div",{className:"sdppp-container",style:t!=="connected"?{height:"100vh"}:{},children:[(0,He.jsx)(rt,{children:r||o?e(t,bi,Ri):(0,He.jsx)(Ni,{})}),t!="connected"&&(0,He.jsx)(mi,{}),o&&(0,He.jsx)("div",{className:"sdppp-trial-tips",children:(0,He.jsx)("span",{children:"\u6E38\u5BA2\u8BD5\u7528\u4E2D\uFF0C\u767B\u9646\u89E3\u9501\u66F4\u591A\u529F\u80FD"})})]})}var Wi=b(E(),1);var it=b(S(),1);function Mi(){let e=A(),{toggleWebviewDialog:t}=J(),r=(0,Wi.useCallback)(()=>{t()},[t]);return(0,it.jsx)("div",{className:"auths-bar",children:(0,it.jsx)("div",{className:"identifier-bar",children:(0,it.jsxs)("div",{className:"identifier-bar-left",children:[(0,it.jsx)(Nr,{}),e.comfyMultiUser&&(0,it.jsx)(Rr,{onRequestLogin:r})]})})})}var Qt=b(E(),1),Ui=b(E(),1),Fi=N("uxp"),xo=b(S(),1);function Bi(){let e=document.getElementById("color_computer")?.style.color||"#777",{data:t,isLoading:r}=xr(),o=(0,Qt.useRef)(null),[n,i]=(0,Qt.useState)(!1),[s,a]=(0,Qt.useState)(!1);if((0,Ui.useEffect)(()=>{o.current&&(r||s||(a(!0),o.current.addEventListener("loadstop",d=>{d.target.postMessage({action:"init",payload:{color:e,cloud:p}})}),o.current.addEventListener("loaderror",d=>{i(!0)}),o.current.addEventListener("message",d=>{let u=d.message;if(!u)return;let g=JSON.parse(u);g.action==="open"&&Fi.shell.openExternal(g.payload.url)})))},[o,r]),r||n)return(0,xo.jsx)("div",{style:{height:"8px"}});let c="./promote.html?color="+e,p=t.cloud[je()=="zhcn"?"zhcn":"en"];return p.length==0?null:(0,xo.jsx)("webview",{ref:o,className:"promote-webview",style:{width:"100%",height:"24px"},src:c})}Object.assign(globalThis,{SDPPPInternal:To});})(); +"use strict";(()=>{var qi=Object.create;var Ht=Object.defineProperty;var Ro=Object.getOwnPropertyDescriptor;var Qi=Object.getOwnPropertyNames;var Gi=Object.getPrototypeOf,Ki=Object.prototype.hasOwnProperty;var N=(e=>typeof require<"u"?require:typeof Proxy<"u"?new Proxy(e,{get:(t,r)=>(typeof require<"u"?require:t)[r]}):e)(function(e){if(typeof require<"u")return require.apply(this,arguments);throw Error('Dynamic require of "'+e+'" is not supported')});var Ye=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports),Vr=(e,t)=>{for(var r in t)Ht(e,r,{get:t[r],enumerable:!0})},Hi=(e,t,r,o)=>{if(t&&typeof t=="object"||typeof t=="function")for(let n of Qi(t))!Ki.call(e,n)&&n!==r&&Ht(e,n,{get:()=>t[n],enumerable:!(o=Ro(t,n))||o.enumerable});return e};var b=(e,t,r)=>(r=e!=null?qi(Gi(e)):{},Hi(t||!e||!e.__esModule?Ht(r,"default",{value:e,enumerable:!0}):r,e));var x=(e,t,r,o)=>{for(var n=o>1?void 0:o?Ro(t,r):t,i=e.length-1,s;i>=0;i--)(s=e[i])&&(n=(o?s(t,r,n):s(n))||n);return o&&n&&Ht(t,r,n),n};var E=Ye((Ka,Go)=>{"use strict";Go.exports=window.React});var Xo=Ye((nc,Jo)=>{"use strict";var ut=1e3,lt=ut*60,dt=lt*60,tt=dt*24,fs=tt*7,ps=tt*365.25;Jo.exports=function(e,t){t=t||{};var r=typeof e;if(r==="string"&&e.length>0)return ms(e);if(r==="number"&&isFinite(e))return t.long?gs(e):hs(e);throw new Error("val is not a non-empty string or a valid number. val="+JSON.stringify(e))};function ms(e){if(e=String(e),!(e.length>100)){var t=/^(-?(?:\d+)?\.?\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)?$/i.exec(e);if(t){var r=parseFloat(t[1]),o=(t[2]||"ms").toLowerCase();switch(o){case"years":case"year":case"yrs":case"yr":case"y":return r*ps;case"weeks":case"week":case"w":return r*fs;case"days":case"day":case"d":return r*tt;case"hours":case"hour":case"hrs":case"hr":case"h":return r*dt;case"minutes":case"minute":case"mins":case"min":case"m":return r*lt;case"seconds":case"second":case"secs":case"sec":case"s":return r*ut;case"milliseconds":case"millisecond":case"msecs":case"msec":case"ms":return r;default:return}}}}function hs(e){var t=Math.abs(e);return t>=tt?Math.round(e/tt)+"d":t>=dt?Math.round(e/dt)+"h":t>=lt?Math.round(e/lt)+"m":t>=ut?Math.round(e/ut)+"s":e+"ms"}function gs(e){var t=Math.abs(e);return t>=tt?ir(e,t,tt,"day"):t>=dt?ir(e,t,dt,"hour"):t>=lt?ir(e,t,lt,"minute"):t>=ut?ir(e,t,ut,"second"):e+" ms"}function ir(e,t,r,o){var n=t>=r*1.5;return Math.round(e/r)+" "+o+(n?"s":"")}});var en=Ye((ic,Zo)=>{"use strict";function ys(e){r.debug=r,r.default=r,r.coerce=c,r.disable=s,r.enable=n,r.enabled=a,r.humanize=Xo(),r.destroy=p,Object.keys(e).forEach(d=>{r[d]=e[d]}),r.names=[],r.skips=[],r.formatters={};function t(d){let u=0;for(let g=0;g{if(be==="%%")return"%";I++;let k=r.formatters[ie];if(typeof k=="function"){let Q=y[I];be=k.call(v,Q),y.splice(I,1),I--}return be}),r.formatArgs.call(v,y),(v.log||r.log).apply(v,y)}return m.namespace=d,m.useColors=r.useColors(),m.color=r.selectColor(d),m.extend=o,m.destroy=r.destroy,Object.defineProperty(m,"enabled",{enumerable:!0,configurable:!1,get:()=>g!==null?g:(l!==r.namespaces&&(l=r.namespaces,f=r.enabled(d)),f),set:y=>{g=y}}),typeof r.init=="function"&&r.init(m),m}function o(d,u){let g=r(this.namespace+(typeof u>"u"?":":u)+d);return g.log=this.log,g}function n(d){r.save(d),r.namespaces=d,r.names=[],r.skips=[];let u=(typeof d=="string"?d:"").trim().replace(" ",",").split(",").filter(Boolean);for(let g of u)g[0]==="-"?r.skips.push(g.slice(1)):r.names.push(g)}function i(d,u){let g=0,l=0,f=-1,m=0;for(;g"-"+u)].join(",");return r.enable(""),d}function a(d){for(let u of r.skips)if(i(d,u))return!1;for(let u of r.names)if(i(d,u))return!0;return!1}function c(d){return d instanceof Error?d.stack||d.message:d}function p(){console.warn("Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.")}return r.enable(r.load()),r}Zo.exports=ys});var ar=Ye((se,sr)=>{"use strict";se.formatArgs=vs;se.save=bs;se.load=Ss;se.useColors=ws;se.storage=Ps();se.destroy=(()=>{let e=!1;return()=>{e||(e=!0,console.warn("Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`."))}})();se.colors=["#0000CC","#0000FF","#0033CC","#0033FF","#0066CC","#0066FF","#0099CC","#0099FF","#00CC00","#00CC33","#00CC66","#00CC99","#00CCCC","#00CCFF","#3300CC","#3300FF","#3333CC","#3333FF","#3366CC","#3366FF","#3399CC","#3399FF","#33CC00","#33CC33","#33CC66","#33CC99","#33CCCC","#33CCFF","#6600CC","#6600FF","#6633CC","#6633FF","#66CC00","#66CC33","#9900CC","#9900FF","#9933CC","#9933FF","#99CC00","#99CC33","#CC0000","#CC0033","#CC0066","#CC0099","#CC00CC","#CC00FF","#CC3300","#CC3333","#CC3366","#CC3399","#CC33CC","#CC33FF","#CC6600","#CC6633","#CC9900","#CC9933","#CCCC00","#CCCC33","#FF0000","#FF0033","#FF0066","#FF0099","#FF00CC","#FF00FF","#FF3300","#FF3333","#FF3366","#FF3399","#FF33CC","#FF33FF","#FF6600","#FF6633","#FF9900","#FF9933","#FFCC00","#FFCC33"];function ws(){if(typeof window<"u"&&window.process&&(window.process.type==="renderer"||window.process.__nwjs))return!0;if(typeof navigator<"u"&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/(edge|trident)\/(\d+)/))return!1;let e;return typeof document<"u"&&document.documentElement&&document.documentElement.style&&document.documentElement.style.WebkitAppearance||typeof window<"u"&&window.console&&(window.console.firebug||window.console.exception&&window.console.table)||typeof navigator<"u"&&navigator.userAgent&&(e=navigator.userAgent.toLowerCase().match(/firefox\/(\d+)/))&&parseInt(e[1],10)>=31||typeof navigator<"u"&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/applewebkit\/(\d+)/)}function vs(e){if(e[0]=(this.useColors?"%c":"")+this.namespace+(this.useColors?" %c":" ")+e[0]+(this.useColors?"%c ":" ")+"+"+sr.exports.humanize(this.diff),!this.useColors)return;let t="color: "+this.color;e.splice(1,0,t,"color: inherit");let r=0,o=0;e[0].replace(/%[a-zA-Z%]/g,n=>{n!=="%%"&&(r++,n==="%c"&&(o=r))}),e.splice(o,0,t)}se.log=console.debug||console.log||(()=>{});function bs(e){try{e?se.storage.setItem("debug",e):se.storage.removeItem("debug")}catch{}}function Ss(){let e;try{e=se.storage.getItem("debug")}catch{}return!e&&typeof process<"u"&&"env"in process&&(e=process.env.DEBUG),e}function Ps(){try{return localStorage}catch{}}sr.exports=en()(se);var{formatters:Ds}=sr.exports;Ds.j=function(e){try{return JSON.stringify(e)}catch(t){return"[UnexpectedJSONParseError]: "+t.message}}});var S=Ye((ac,on)=>{"use strict";on.exports=window.ReactJSXRuntime});var ln=Ye((dc,un)=>{"use strict";un.exports=window.socketIO});var xt=Ye((Lc,yn)=>{"use strict";yn.exports=window.Jimp});var To={};Vr(To,{Auths:()=>Mi,Promote:()=>Bi,SDPPP:()=>Oi,SDPPPProvider:()=>si,useAgentState:()=>Lr,useSDPPPComfyCaller:()=>oe,useSDPPPContext:()=>Me,useSDPPPWebpageList:()=>Ar,useSDPPPWorkflowList:()=>ai});var R=N("photoshop");var Le=N("photoshop"),Yi=N("uxp");var qr={"SDPPP Get Document":"Get Document","SDPPP Get Layer By ID":"Get Layer","SDPPP Get Linked Layers":"Get Linked Layers","SDPPP Get Layers In Group":"Get Layers In Group","SDPPP Get Text From Layer":"Get Text From Layer","SDPPP Parse Layer Info":"Parse Layer Info","SDPPP Get Selection":"Get Selection","SDPPP Get Image From Photoshop":"Get Image From Photoshop","SDPPP Send Images To Photoshop":"Send Images To Photoshop","SDPPP Select Layer And Run PS Action":"Select Layer And Run PS Action"};var Qr={"### Active Document ###":"### \u5F53\u524D\u6587\u6863 ###","### The Canvas ###":"### \u6574\u4E2A\u753B\u5E03 ###","### New Layer ###":"### \u65B0\u56FE\u5C42 ###","### Selected Layer ###":"### \u6240\u9009\u56FE\u5C42 ###","### Keep Size or Fit Canvas ###":"### \u4FDD\u6301\u5C3A\u5BF8\u6216\u9002\u5E94\u753B\u5E03 ###",_SDPPP_PSD_:"_SDPPP_PSD_","Save and run immediately":"\u4FDD\u5B58\u5E76\u7ACB\u5373\u6267\u884C",Close:"\u5173\u95ED","Select a {0}":"\u9009\u62E9\u4E00\u4E2A {0}","How to use .ccx file":"\u5982\u4F55\u4F7F\u7528 .ccx \u6587\u4EF6","1. If you have installed Adobe Creative Cloud":"1. \u5982\u679C\u4F60\u5DF2\u7ECF\u5B89\u88C5\u4E86 Adobe Creative Cloud","Just double click the .ccx file, it will install the plugin automatically":"\u53CC\u51FB .ccx \u6587\u4EF6\uFF0C\u5B83\u4F1A\u81EA\u52A8\u5B89\u88C5","2. If you don't have Adobe Creative Cloud":"2. \u5982\u679C\u4F60\u6CA1\u6709 Adobe Creative Cloud","Rename .ccx to .zip and extract it into ":"\u5C06 .ccx \u91CD\u547D\u540D\u4E3A .zip \u5E76\u89E3\u538B\u5230",or:"\u6216","Photoshop directory":"Photoshop \u5B89\u88C5\u76EE\u5F55","Cannot connect multiple different document widgets with same value":"\u4E0D\u80FD\u8FDE\u63A5\u591A\u4E2A\u5177\u6709\u76F8\u540C\u503C\u7684\u6587\u6863\u5C0F\u90E8\u4EF6","You can only have one SDPPP Settings node in a workflow":"\u4E00\u4E2A\u5DE5\u4F5C\u6D41\u4E2D\u53EA\u80FD\u6709\u4E00\u4E2A SDPPP Settings \u8282\u70B9","convert widget {0} failed:":"\u63A7\u4EF6{0}\u8F6C\u6362\u5931\u8D25\uFF1A","hidden webview load failed: {0}, please select a browser page to continue":"\u5185\u7F6E webview \u52A0\u8F7D\u5931\u8D25: {0}\uFF0C\u8BF7\u9009\u62E9\u4E00\u4E2A\u6D4F\u89C8\u5668\u9875\u9762\u7EE7\u7EED","SDPPP Get Document":"\u83B7\u53D6\u6587\u6863(GetDocument)","SDPPP Get Layer By ID":"\u83B7\u53D6\u56FE\u5C42(GetLayer)","SDPPP Get Linked Layers":"\u83B7\u53D6\u94FE\u63A5\u56FE\u5C42(GetLinkedLayers)","SDPPP Get Layers In Group":"\u83B7\u53D6\u7EC4\u4E2D\u56FE\u5C42(GetLayersInGroup)","SDPPP Get Text From Layer":"\u83B7\u53D6\u56FE\u5C42\u6587\u672C(GetTextFromLayer)","SDPPP Parse Layer Info":"\u89E3\u6790\u56FE\u5C42\u4FE1\u606F(ParseLayerInfo)","SDPPP Get Selection":"\u83B7\u53D6\u9009\u533A(GetSelection)","SDPPP Get Image From Photoshop":"\u4ECEPS\u83B7\u53D6\u56FE\u50CF(GetImageFromPhotoshop)","SDPPP Send Images To Photoshop":"\u53D1\u9001\u56FE\u50CF\u5230PS(SendImagesToPhotoshop)","SDPPP Send Text To Layer":"\u53D1\u9001\u6587\u672C\u5230\u56FE\u5C42(SendTextToLayer)","SDPPP Select Layer And Run PS Action":"\u9009\u4E2D\u56FE\u5C42\u5E76\u8FD0\u884CPS Action(RunPhotoshopAction)","download PS plugin (.ccx)":"\u4E0B\u8F7D Photoshop \u63D2\u4EF6 (.ccx)","current ComfyUI pageid: {0}":"\u5F53\u524D ComfyUI \u9875\u9762ID: {0}","current A1111 pageid: {0}":"\u5F53\u524D A1111 \u9875\u9762ID: {0}","document linked":"\u6587\u6863\u53C2\u6570\u5DF2\u94FE\u63A5","layer linked":"\u56FE\u5C42\u53C2\u6570\u5DF2\u94FE\u63A5","bound linked":"\u8303\u56F4\u53C2\u6570\u5DF2\u94FE\u63A5",document:"\u6587\u6863",Document:"\u6587\u6863",DOCUMENT:"\u6587\u6863",document_name:"\u6587\u6863\u540D\u5B57id",layer_nameid:"\u56FE\u5C42\u540D\u5B57id",layer_name:"\u56FE\u5C42\u540D\u5B57",layer_info:"\u56FE\u5C42\u4FE1\u606F",bound_top:"\u8303\u56F4\u4E0A\u8FB9\u8DDD",bound_left:"\u8303\u56F4\u5DE6\u8FB9\u8DDD",bound_width:"\u8303\u56F4\u5BBD\u5EA6",bound_height:"\u8303\u56F4\u9AD8\u5EA6",center_x:"\u4E2D\u5FC3\u70B9x",center_y:"\u4E2D\u5FC3\u70B9y",opacity:"\u900F\u660E\u5EA6",layer:"\u56FE\u5C42",layer_or_group:"\u56FE\u5C42(\u6216\u7EC4)",Layer_or_group:"\u56FE\u5C42(\u6216\u7EC4)",bound:"\u8303\u56F4",bounds:"\u8303\u56F4","bounds [optional]":"\u8303\u56F4[\u53EF\u9009]",boundary:"\u8303\u56F4",Boundary:"\u8303\u56F4",canvas_boundary:"\u753B\u5E03\u8303\u56F4",canvas_bound:"\u753B\u5E03\u8303\u56F4",layer_boundary:"\u56FE\u5C42\u8303\u56F4",layer_bound:"\u56FE\u5C42\u8303\u56F4","Photoshop Disconnected!":"Photoshop \u672A\u8FDE\u63A5\uFF01",rgb_out:"RGB\u8F93\u51FA",alpha_out:"Alpha\u8F93\u51FA",images:"\u56FE\u50CF",text:"\u6587\u672C",ID_mode:"\u7CBE\u786EID\u6A21\u5F0F",name_mode:"\u540D\u5B57\u5339\u914D\u6A21\u5F0F",select:"\u9009\u62E9","document boundary":"\u6587\u6863\u8303\u56F4","layer boundary":"\u56FE\u5C42\u8303\u56F4","selection boundary":"\u9009\u4E2D\u8303\u56F4","save .psd to this workflow":"\u4FDD\u5B58.psd\u5230\u8FD9\u4E2A\u5DE5\u4F5C\u6D41","extract saved .psd to Photoshop":"\u63D0\u53D6\u4FDD\u5B58\u7684.psd\u5230Photoshop","sample .psd":"\u793A\u4F8B.psd",mask:"\u906E\u7F69",name:"\u540D\u79F0",quality:"\u56FE\u50CF\u8D28\u91CF",action_set:"\u52A8\u4F5C\u7EC4",action:"\u52A8\u4F5C",Runner:"\u8FD0\u884C\u8F7D\u4F53","PS Webview":"PS \u5185\u7F6E\u7F51\u9875","Browser {0}":"\u6D4F\u89C8\u5668\u9875\u9762 {0}",timeout:"\u8D85\u65F6","Loading...":"\u52A0\u8F7D\u4E2D...","--multi-user Not Login!":"--multi-user\u5DF2\u6FC0\u6D3B\uFF0C\u4F46\u672A\u767B\u5F55\uFF01",Logout:"\u767B\u51FA","User: ":"\u7528\u6237: ",connect:"\u8FDE\u63A5",connected:"\u5DF2\u8FDE\u63A5",disconnect:"\u65AD\u5F00",disconnected:"\u5DF2\u65AD\u5F00\u8FDE\u63A5","reconnecting...":"\u91CD\u8FDE\u4E2D...",connecting:"\u8FDE\u63A5\u4E2D",webpages:"\u7F51\u9875\u5217\u8868",workflows:"\u5DE5\u4F5C\u6D41",workflow:"\u5DE5\u4F5C\u6D41","auto run page [{0}] after change..":"\u66F4\u6539\u540E\u81EA\u52A8\u8FD0\u884C\u9875\u9762 {0}..","auto run workflow [{0}] after change..":"\u66F4\u6539\u540E\u81EA\u52A8\u8FD0\u884C\u5DE5\u4F5C\u6D41 {0}..","auto run workflow after change..":"\u66F4\u6539\u540E\u81EA\u52A8\u8FD0\u884C\u5DE5\u4F5C\u6D41..",selection_only:"\u4EC5\u9009\u533A","Queue:":"\u961F\u5217:","Set As:":"\u8BBE\u7F6E\u4E3A:","Error {0}... please contact me via Discord/Github":"\u51FA\u73B0\u9519\u8BEF {0}...\uFF0C\u8BF7\u901A\u8FC7 QQ/Github \u8054\u7CFB\u6211","Webview initialize failed. Please report to me via Discord/Github with your ComfyURL, Operate System":"Webview \u521D\u59CB\u5316\u5931\u8D25\uFF0C\u8BF7\u901A\u8FC7 QQ/Github \u8054\u7CFB\u6211\u5E76\u9644\u4E0A\u4F60\u7684Comfy\u5730\u5740\u3001\u64CD\u4F5C\u7CFB\u7EDF","ComfyUI with --multi-user is only available for sponsors":'\u5E26"--multi-user"\u7684ComfyUI\u4EC5\u5BF9\u8D5E\u52A9\u8005\u5F00\u653E',"Workflow Runner is loading...":"\u8FD0\u884C\u8F7D\u4F53\u5C1A\u5728\u52A0\u8F7D...","(Page ID: {0})Queue: {1}":"(\u9875\u9762ID: {0}) \u961F\u5217\u957F\u5EA6 {1}","no suitable node to control in this workflow":"\u8FD9\u4E2A\u5DE5\u4F5C\u6D41\u4E2D\u6CA1\u6709\u80FD\u63A7\u5236\u7684\u8282\u70B9",Save:"\u4FDD\u5B58",Edit:"\u7F16\u8F91","Edit in ComfyUI":"\u5728 ComfyUI \u4E2D\u7F16\u8F91","using browser page [{0}] for workflow running":"\u6B63\u63A5\u7BA1\u7F51\u9875 [{0}] \u8FD0\u884C\u5DE5\u4F5C\u6D41","workflow running by hidden webview":"\u5DE5\u4F5C\u6D41\u5728\u9690\u85CF\u7684webview\u4E2D\u8FD0\u884C","Lock Image":"\u9501\u5B9A\u56FE\u50CF","Unlock Image":"\u89E3\u9501\u56FE\u50CF","search...":"\u641C\u7D22...","disabled when running in browser page":"\u63A5\u7BA1\u7F51\u9875\u65F6\u4E0D\u53EF\u7528","only supported in Photoshop":"\u4EC5\u5728 Photoshop \u4E2D\u652F\u6301",Login:"\u767B\u5F55","Invitation Code":"\u9080\u8BF7\u7801",Username:"\u7528\u6237\u540D",Password:"\u5BC6\u7801","Please input invitation code":"\u8BF7\u8F93\u5165\u9080\u8BF7\u7801","Please input username":"\u8BF7\u8F93\u5165\u7528\u6237\u540D","Please input password":"\u8BF7\u8F93\u5165\u5BC6\u7801","Open more ComfyUI pages to see more options here":"\u6253\u5F00\u66F4\u591A ComfyUI \u9875\u9762\u4EE5\u67E5\u770B\u66F4\u591A\u9009\u9879","Comfy multi-user: ":"Comfy \u591A\u7528\u6237: ","Not Login":"\u672A\u767B\u5F55","Comfy API-Key: ":"Comfy API-Key: ","Login/Auth":"\u767B\u5F55/\u8BA4\u8BC1","Logged in by email/password":"\u5DF2\u901A\u8FC7\u90AE\u7BB1/\u5BC6\u7801\u767B\u5F55","Set API Key":"\u8BBE\u7F6E API Key","Please input API key (will reload Runner)":"\u8BF7\u8F93\u5165 API Key (\u4F1A\u91CD\u542F\u8FD0\u884C\u8F7D\u4F53)","### Active Workflow ###":"### \u5F53\u524D\u5DE5\u4F5C\u6D41 ###","### Example SDXL ###":"### \u793A\u4F8BSDXL\u5DE5\u4F5C\u6D41 ###","Open ComfyUI in the browser to see more options":"\u5728\u6D4F\u89C8\u5668\u4E2D\u6253\u5F00 ComfyUI \u4EE5\u5F97\u5230\u66F4\u591A\u9009\u9879","Webview load timeout, please switch to a different runner":"Webview \u52A0\u8F7D\u8D85\u65F6\uFF0C\u8BF7\u5207\u6362\u5230\u5176\u4ED6\u8FD0\u884C\u8F7D\u4F53","Save workflow to ComfyUI":"\u4FDD\u5B58\u5DE5\u4F5C\u6D41\u5230 ComfyUI","Reload workflow":"\u91CD\u65B0\u52A0\u8F7D\u5DE5\u4F5C\u6D41","Stop and cancel all":"\u505C\u6B62\u5E76\u53D6\u6D88\u6240\u6709","Start auto running after change":"\u66F4\u6539\u540E\u81EA\u52A8\u8FD0\u884C","Stop auto run":"\u505C\u6B62\u81EA\u52A8\u8FD0\u884C","Run workflow":"\u8FD0\u884C\u5DE5\u4F5C\u6D41","Run workflow xN":"\u8FD0\u884C\u5DE5\u4F5C\u6D41N\u6B21","502: Maybe the server is not running":"502: \u670D\u52A1\u5668\u53EF\u80FD\u672A\u8FD0\u884C","404: Maybe SDPPP is not installed or failed to run in ComfyUI":"404: \u53EF\u80FD\u5728ComfyUI\u4E2DSDPPP\u672A\u5B89\u88C5\u6216\u8FD0\u884C\u5931\u8D25","{0}. reconnecting...":"{0}. \u91CD\u8FDE\u4E2D...","disconnected to {0} failed {1}":"\u65AD\u5F00\u8FDE\u63A5 {0} \u9519\u8BEF {1}","version mismatch, please reinstall PS plugin":"\u7248\u672C\u4E0D\u5339\u914D\uFF0C\u8BF7\u91CD\u65B0\u5B89\u88C5 PS \u63D2\u4EF6","instance type not recognized":"\u672A\u8BC6\u522B\u7684\u8F6F\u4EF6\u7C7B\u578B","Error: {0}":"\u9519\u8BEF: {0}","Verification Error":"\u9A8C\u8BC1\u9519\u8BEF","document {0} not found":"\u627E\u4E0D\u5230\u6587\u6863: {0}",'only layer kind "TEXT" is supported, invalid layer: {0}':"\u4E0D\u652F\u6301\u975E\u6587\u672C\u56FE\u5C42: {0}","create layer failed":"\u521B\u5EFA\u56FE\u5C42\u5931\u8D25","layer not found {0}":"\u627E\u4E0D\u5230\u56FE\u5C42: {0}","no linked layer for {0}":"\u6CA1\u6709\u94FE\u63A5\u56FE\u5C42: {0}","layer {0} is not a group":"\u56FE\u5C42 {0} \u4E0D\u662F\u4E00\u4E2A\u7EC4","no layer in group {0}":"\u7EC4 {0} \u4E2D\u6CA1\u6709\u56FE\u5C42","layer not found: {0}":"\u627E\u4E0D\u5230\u56FE\u5C42: {0}","No upload_name":"\u4E0A\u4F20\u63A5\u53E3\u8FD4\u56DE\u4E86\u5931\u8D25","get pixel of {0} failed":"\u83B7\u53D6\u50CF\u7D20\u5931\u8D25: {0}","merge group failed":"\u5408\u5E76\u7EC4\u5931\u8D25","invalid name: {0}":"\u975E\u6CD5\u7684\u540D\u79F0: {0}","get_layer_info: layer_identify required":"get_layer_info: \u9700\u8981 layer_identify","invalid action: {0}":"\u65E0\u6548\u7684\u64CD\u4F5C: {0}","create document failed":"\u521B\u5EFA\u6587\u6863\u5931\u8D25","create document for preview":"\u521B\u5EFA\u9884\u89C8\u6587\u6863","resize document for preview":"\u8C03\u6574\u9884\u89C8\u6587\u6863\u5C3A\u5BF8","no first related layer in {0}":"\u7EC4 {0} \u4E2D\u6CA1\u6709\u7B2C\u4E00\u4E2A\u76F8\u5173\u56FE\u5C42","imageDataError: data length is not multiple of width * height":"\u56FE\u50CF\u6570\u636E\u6709\u8BEF: \u6570\u636E\u957F\u5EA6\u4E0D\u662F\u5BBD\u5EA6 * \u9AD8\u5EA6\u7684\u500D\u6570","imageDataError: originComponents must be 1 or 3":"\u56FE\u50CF\u6570\u636E\u6709\u8BEF: originComponents \u5FC5\u987B\u662F 1 \u6216 3","unexpected connection lost, please try to reconnect":"\u610F\u5916\u65AD\u5F00\u8FDE\u63A5\uFF0C\u8BF7\u5C1D\u8BD5\u91CD\u65B0\u8FDE\u63A5","Workflow list is empty, please save a workflow by Comfy's lastest UI":"\u5DE5\u4F5C\u6D41\u5217\u8868\u4E3A\u7A7A\uFF0C\u8BF7\u5728Comfy\u7684\u65B0\u7248UI\u4E2D\u4FDD\u5B58\u4E00\u4E2A\u5DE5\u4F5C\u6D41","No opened ComfyUI pages":"\u6CA1\u6709\u5DF2\u6253\u5F00\u7684ComfyUI\u9875\u9762","comfyAPI is not initialized, maybe comfyUI is too old":"\u65E0\u6CD5\u83B7\u53D6 ComfyAPI\uFF0C\u53EF\u80FD ComfyUI \u7248\u672C\u592A\u65E7","unsupported channel counts: {0}":"\u4E0D\u652F\u6301\u7684\u901A\u9053\u6570: {0}","Timeout, Maybe the URL is wrong":"\u8D85\u65F6\uFF0C\u53EF\u80FD comfy\u5730\u5740 \u586B\u5199\u9519\u8BEF","Workflow list loading failed: {0}":"\u5DE5\u4F5C\u6D41\u5217\u8868\u52A0\u8F7D\u5931\u8D25: {0}","Please register a user in ComfyUI":"\u8BF7\u5728 ComfyUI \u4E2D\u6CE8\u518C\u4E00\u4E2A\u7528\u6237","GetSelection need Photoshop version 25+":"GetSelection \u9700\u8981 Photoshop 25+ \u7248\u672C","Action {0} not found":"Action {0} \u672A\u627E\u5230","Action set {0} not found":"ActionSet {0} \u672A\u627E\u5230","{0} cannot be used in Photoshop Action Node":"{0} \u4E0D\u80FD\u5728 Photoshop Action \u8282\u70B9\u4E2D\u4F7F\u7528","Group layers":"\u56FE\u5C42\u7EC4","Show All Groups":"\u663E\u793A\u6240\u6709\u7EC4","create document for sent images":"\u7ED9\u53D1\u9001\u7684\u56FE\u7247\u521B\u5EFA\u6587\u6863","show sent images":"\u663E\u793A\u53D1\u9001\u7684\u56FE\u7247","fallback show sent images":"\u53D6\u6D88\u663E\u793A\u53D1\u9001\u7684\u56FE\u7247","get content of layer {0}":"\u83B7\u53D6\u56FE\u5C42 {0} \u7684\u5185\u5BB9","fallback get content of layer {0}":"\u53D6\u6D88\u83B7\u53D6\u56FE\u5C42 {0} \u7684\u5185\u5BB9","get layer info":"\u83B7\u53D6\u56FE\u5C42\u4FE1\u606F","sdppp extract PSD":"sdppp \u5BFC\u5165 PSD","sdppp get PSD":"sdppp \u83B7\u53D6 PSD","set text to layer":"\u8BBE\u7F6E\u56FE\u5C42\u7684\u6587\u672C","run Photoshop Action":"sdppp \u8FD0\u884C Photoshop Action","select layer":"sdppp \u9009\u4E2D\u56FE\u5C42","{0} wants to extract a PSD file to Photoshop, are you sure?":"{0} \u60F3\u8981\u91CA\u653E\u4E00\u4E2A.psd\u6587\u4EF6\u5230Photoshop\uFF0C\u786E\u5B9A\u5417\uFF1F","should sdppp refuse extracting PSD to Photoshop in this session anymore?":"\u662F\u5426\u8981\u8BA9 sdppp \u62D2\u7EDD\u672C\u6B21PS\u4F1A\u8BDD\u518D\u6B21\u63A5\u53D7.psd\u91CA\u653E\u8BF7\u6C42\uFF1F","Wide Mode":"\u5BBD\u5C4F\u6A21\u5F0F","Quick Set":"\u5FEB\u901F\u8BBE\u7F6E","Selected Layer":"\u9009\u4E2D\u56FE\u5C42","Selected Layer (invert)":"\u9009\u4E2D\u56FE\u5C42(\u53CD\u5411)",Canvas:"\u753B\u5E03",Selection:"\u9009\u533A",Manual:"\u624B\u52A8\u6A21\u5F0F",Auto:"\u81EA\u52A8\u6A21\u5F0F","This plugin is based on sd-ppp":"\u672C\u63D2\u4EF6\u57FA\u4E8Esd-ppp\u5F00\u53D1","And follows its open source license:":"\u5E76\u9075\u5FAA\u5176\u5F00\u6E90\u534F\u8BAE\uFF1A",Cloud:"\u4E91\u7AEF\u63A8\u8350",Sponsors:"\u8D5E\u52A9","waiting...":"\u865A\u4F4D\u4EE5\u5F85",Links:"\u53CB\u60C5\u94FE\u63A5",Community:"\u793E\u533A","LICENSE:":"\u8BB8\u53EF\u8BC1\uFF1A","Official Site":"\u5B98\u65B9\u7F51\u7AD9",upload:"\u4E0A\u4F20","Simplify Workflow":"\u7B80\u5316\u5DE5\u4F5C\u6D41",Photoshop:"Photoshop","Photoshop plugin settings":"Photoshop \u63D2\u4EF6\u8BBE\u7F6E","Photoshop plugin":"Photoshop \u63D2\u4EF6","SDPPP Settings/Misc":"SDPPP \u8BBE\u7F6E/\u6742\u9879","Sample .PSD for this workflow:":"\u793A\u4F8B.PSD","Download Example .PSD":"\u4E0B\u8F7D\u793A\u4F8B.PSD","Maximum Image Size (px):":"\u6700\u5927\u56FE\u50CF\u5C3A\u5BF8(px)",Download:"\u4E0B\u8F7D",Upload:"\u4E0A\u4F20",Reset:"\u91CD\u7F6E",Refresh:"\u5237\u65B0","Comfy URL (You can copy it to connect ComfyUI in the plugin):":"Comfy\u5730\u5740(\u4F60\u53EF\u4EE5\u590D\u5236\u5B83\u5230\u63D2\u4EF6\u4E2D\u8FDE\u63A5ComfyUI):","use slider for number widget:":"\u6570\u5B57\u63A7\u4EF6\u4F7F\u7528\u6ED1\u5757","Photoshop is not connected":"Photoshop \u672A\u8FDE\u63A5","select...":"\u8BF7\u9009\u62E9","click to edit":"\u70B9\u51FB\u7F16\u8F91","ComfyManager not found, cannot reboot":"Comfy Manager\u672A\u5B89\u88C5\uFF0C\u65E0\u6CD5\u91CD\u542F","Failed to reboot ComfyUI":"\u91CD\u542FComfyUI\u5931\u8D25"};var No=typeof N<"u"?N:void 0,zt="en";typeof navigator<"u"&&navigator.language?zt=navigator.language=="zh-CN"?"zhcn":"en":No&&(zt=No("uxp").host.uiLocale.startsWith("zh")?"zhcn":"en");function h(e,...t){let r=zt=="zhcn"?Qr[e]:e in qr?qr[e]:e;if(!r)throw new Error(`i18n key not found: ${e}`);return r.replace(/{(\d+)}/g,function(o,n){return typeof t[n]<"u"?t[n]:o})}function $e(e,t){return e==t||Qr[e]==t}function je(){return zt}var C=class e{static SPECIAL_DOCUMENT_CURRENT="### Active Document ###";static is_SPECIAL_DOCUMENT_CURRENT(t){return $e(this.SPECIAL_DOCUMENT_CURRENT,t)}static get_SPECIAL_DOCUMENT_CURRENT(){return h(this.SPECIAL_DOCUMENT_CURRENT)}static SPECIAL_LAYER_KEEP_SIZE="### Keep Size or Fit Canvas ###";static is_SPECIAL_LAYER_FIT(t){return $e(this.SPECIAL_LAYER_KEEP_SIZE,t)}static get_SPECIAL_LAYER_FIT(){return h(this.SPECIAL_LAYER_KEEP_SIZE)}static SPECIAL_LAYER_USE_CANVAS="### The Canvas ###";static is_SPECIAL_LAYER_USE_CANVAS(t){return $e(this.SPECIAL_LAYER_USE_CANVAS,t)}static get_SPECIAL_LAYER_USE_CANVAS(){return h(this.SPECIAL_LAYER_USE_CANVAS)}static SPECIAL_LAYER_NEW_LAYER="### New Layer ###";static is_SPECIAL_LAYER_NEW_LAYER(t){return $e(this.SPECIAL_LAYER_NEW_LAYER,t)}static get_SPECIAL_LAYER_NEW_LAYER(){return h(this.SPECIAL_LAYER_NEW_LAYER)}static SPECIAL_LAYER_SELECTED_LAYER="### Selected Layer ###";static is_SPECIAL_LAYER_SELECTED_LAYER(t){return $e(this.SPECIAL_LAYER_SELECTED_LAYER,t)}static get_SPECIAL_LAYER_SELECTED_LAYER(){return h(this.SPECIAL_LAYER_SELECTED_LAYER)}static SPECIAL_LAYER_PREVIEW_DOCUMENT="_SDPPP_PSD_";static is_SPECIAL_LAYER_PREVIEW_DOCUMENT(t){return $e(this.SPECIAL_LAYER_PREVIEW_DOCUMENT,t)}static get_SPECIAL_LAYER_PREVIEW_DOCUMENT(){return h(this.SPECIAL_LAYER_PREVIEW_DOCUMENT)}static getSpecialDocumentCurrent(){return h(e.SPECIAL_DOCUMENT_CURRENT)}static getSpecialLayerForGet(){return[h(e.SPECIAL_LAYER_USE_CANVAS),h(e.SPECIAL_LAYER_SELECTED_LAYER)]}static getSpecialLayerForSend(){return[h(e.SPECIAL_LAYER_NEW_LAYER),h(e.SPECIAL_LAYER_SELECTED_LAYER)]}static getSpecialDocumentForPreview(){return h(e.SPECIAL_LAYER_PREVIEW_DOCUMENT)}static fixI18n(t){return this.is_SPECIAL_DOCUMENT_CURRENT(t)?this.SPECIAL_DOCUMENT_CURRENT:this.is_SPECIAL_LAYER_NEW_LAYER(t)?this.SPECIAL_LAYER_NEW_LAYER:this.is_SPECIAL_LAYER_PREVIEW_DOCUMENT(t)?this.SPECIAL_LAYER_PREVIEW_DOCUMENT:this.is_SPECIAL_LAYER_USE_CANVAS(t)?this.SPECIAL_LAYER_USE_CANVAS:this.is_SPECIAL_LAYER_SELECTED_LAYER(t)?this.SPECIAL_LAYER_SELECTED_LAYER:t}};function Ce(e,t,r=0){return"-".repeat(r)+`${t} (id:${e})`}function Ae(e,t){return`${t} (id:${e})`}function zi(e){let t=e.split(" (id:");return{name:t[0],id:parseInt(t[1].slice(0,-1))}}function Oo(e){return zi(e)}function Je(){let e=Le.app.activeDocument?.activeLayers?.[0];return e?Ce(e.id,e.name):C.get_SPECIAL_LAYER_USE_CANVAS()}function Wo(e,t,r,o,n){let i=r.left,s=r.top,a=r.right,c=r.bottom,p=a-i,d=c-s,u=o.left,g=o.top,l=o.right,f=o.bottom,m=l-u,y=f-g,v=Math.max(i,u),w=Math.max(s,g),P=Math.min(a,l),I=Math.min(c,f),j=P-v,be=I-w,ie=m*y*n;if(t.length!==ie)throw new Error(`toImageDataArray.length(${t.length}) !== toLength(${ie})`);let k=j*be*n;if(e.length!==k)throw new Error(`fromImageDataArray.length(${e.length}) !== fromLength(${k})`);for(let Q=0;Q=i&&De=s&&Gt0?e.activeLayers[0].id:0:C.is_SPECIAL_LAYER_NEW_LAYER(t)?-2:Mo(t)}function Gr(e,t=0,r=""){return e?.layers?e.layers.reduce((o,n)=>{let i=t==0?`/${n.name}`:`${r}/${n.name}`;return o.push({layer:n,path:i,level:t}),o.concat(Gr(n,t+1,i))},[]):[]}function pe(e,t){if(!e.layers)return null;for(let r=0;rt.id==$i(e)))||null}function Uo(e,t){return{name:t.name,opacity:t.opacity/100,boundary:{left:t.bounds?.left||0,top:t.bounds?.top||0,right:e.width-(t.bounds?.right||0),bottom:e.height-(t.bounds?.bottom||0),width:t.bounds?.width||0,height:t.bounds?.height||0},isGroup:t.kind==Le.constants.LayerKind.GROUP}}function Fo(){let e=localStorage.getItem("sdppp_uid");return(!e||e.length!=3)&&(e=Ct(3),localStorage.setItem("sdppp_uid",e)),e}function Ct(e){let t="",r="abcdefghijklmnopqrstuvwxyz0123456789",o=r.length,n=0;for(;n{o[i]=r.bind(this,i),n.subscribe(t,o[i])})}unsubscribe(t){this.subscribers=this.subscribers.filter(([o,n])=>n!=t);let r=this.subscribersWithoutKey.get(t);r&&this.storeMap.forEach((o,n)=>{o.unsubscribe(r[n])})}addStore(t,r,o){let n=this.createStore(r,o);this.storeMap.set(t,n),this.subscribers.forEach(([i,s])=>{let a=this.subscribersWithoutKey.get(s);a||(a={},this.subscribersWithoutKey.set(s,a)),a[t]=s.bind(this,t),n.subscribe(i,a[t]),i=="/"&&s(t,r,null)})}removeStore(t){let r=this.storeMap.get(t);r&&(this.subscribers.forEach(([o,n])=>{let i=this.subscribersWithoutKey.get(n);i&&(r.unsubscribe(i[t]),o=="/"&&n(t,null,r.data))}),this.storeMap.delete(t))}sync(t){if(t instanceof Array){let r=Array.from(this.storeMap.keys()),o=t.filter(i=>!r.includes(i)),n=r.filter(i=>!t.includes(i));o.forEach(i=>this.addStore(i,{},0)),n.forEach(i=>this.removeStore(i))}else{Array.from(this.storeMap.keys()).filter(o=>!Object.keys(t).includes(o)).forEach(o=>this.removeStore(o));for(let o in t){let{data:n,version:i}=t[o];this.storeMap.has(o)?this.storeMap.get(o)?.sync(n,i):this.addStore(o,n,i)}}}};var Kr={};Vr(Kr,{JsonPatchError:()=>M,_areEquals:()=>At,applyOperation:()=>Xe,applyPatch:()=>at,applyReducer:()=>ts,deepClone:()=>Zi,getValueByPointer:()=>Ze,validate:()=>Vo,validator:()=>er});var Ji=function(){var e=function(t,r){return e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(o,n){o.__proto__=n}||function(o,n){for(var i in n)n.hasOwnProperty(i)&&(o[i]=n[i])},e(t,r)};return function(t,r){e(t,r);function o(){this.constructor=t}t.prototype=r===null?Object.create(r):(o.prototype=r.prototype,new o)}}(),Xi=Object.prototype.hasOwnProperty;function Jt(e,t){return Xi.call(e,t)}function Xt(e){if(Array.isArray(e)){for(var t=new Array(e.length),r=0;r=48&&o<=57){t++;continue}return!1}return!0}function Ie(e){return e.indexOf("/")===-1&&e.indexOf("~")===-1?e:e.replace(/~/g,"~0").replace(/\//g,"~1")}function It(e){return e.replace(/~1/g,"/").replace(/~0/g,"~")}function jt(e){if(e===void 0)return!0;if(e){if(Array.isArray(e)){for(var t=0,r=e.length;t0&&c[d-1]=="constructor"))throw new TypeError("JSON-Patch: modifying `__proto__` or `constructor/prototype` prop is banned for security reasons, if this was on purpose, please set `banPrototypeModifications` flag false and pass it to this function. More info in fast-json-patch README");if(r&&g===void 0&&(p[l]===void 0?g=c.slice(0,d).join("/"):d==u-1&&(g=t.path),g!==void 0&&f(t,0,e,g)),d++,Array.isArray(p)){if(l==="-")l=p.length;else{if(r&&!Zt(l))throw new M("Expected an unsigned base-10 integer value, making the new referenced value the array element with the zero-based index","OPERATION_PATH_ILLEGAL_ARRAY_INDEX",i,t,e);Zt(l)&&(l=~~l)}if(d>=u){if(r&&t.op==="add"&&l>p.length)throw new M("The specified index MUST NOT be greater than the number of elements in the array","OPERATION_VALUE_OUT_OF_BOUNDS",i,t,e);var s=es[t.op].call(t,p,l,e);if(s.test===!1)throw new M("Test operation failed","TEST_OPERATION_FAILED",i,t,e);return s}}else if(d>=u){var s=st[t.op].call(t,p,l,e);if(s.test===!1)throw new M("Test operation failed","TEST_OPERATION_FAILED",i,t,e);return s}if(p=p[l],r&&d0)throw new M('Operation `path` property must start with "/"',"OPERATION_PATH_INVALID",t,e,r);if((e.op==="move"||e.op==="copy")&&typeof e.from!="string")throw new M("Operation `from` property is not present (applicable in `move` and `copy` operations)","OPERATION_FROM_REQUIRED",t,e,r);if((e.op==="add"||e.op==="replace"||e.op==="test")&&e.value===void 0)throw new M("Operation `value` property is not present (applicable in `add`, `replace` and `test` operations)","OPERATION_VALUE_REQUIRED",t,e,r);if((e.op==="add"||e.op==="replace"||e.op==="test")&&jt(e.value))throw new M("Operation `value` property is not present (applicable in `add`, `replace` and `test` operations)","OPERATION_VALUE_CANNOT_CONTAIN_UNDEFINED",t,e,r);if(r){if(e.op=="add"){var n=e.path.split("/").length,i=o.split("/").length;if(n!==i+1&&n!==i)throw new M("Cannot perform an `add` operation at the desired path","OPERATION_PATH_CANNOT_ADD",t,e,r)}else if(e.op==="replace"||e.op==="remove"||e.op==="_get"){if(e.path!==o)throw new M("Cannot perform the operation at a path that does not exist","OPERATION_PATH_UNRESOLVABLE",t,e,r)}else if(e.op==="move"||e.op==="copy"){var s={op:"_get",path:e.from,value:void 0},a=Vo([s],r);if(a&&a.name==="OPERATION_PATH_UNRESOLVABLE")throw new M("Cannot perform the operation from a path that does not exist","OPERATION_FROM_UNRESOLVABLE",t,e,r)}}}else throw new M("Operation `op` property is not one of operations defined in RFC-6902","OPERATION_OP_INVALID",t,e,r)}function Vo(e,t,r){try{if(!Array.isArray(e))throw new M("Patch sequence must be an array","SEQUENCE_NOT_AN_ARRAY");if(t)at(W(t),W(e),r||!0);else{r=r||er;for(var o=0;otr,generate:()=>Hr,observe:()=>cs,unobserve:()=>as});var zr=new WeakMap,rs=function(){function e(t){this.observers=new Map,this.obj=t}return e}(),os=function(){function e(t,r){this.callback=t,this.observer=r}return e}();function ns(e){return zr.get(e)}function is(e,t){return e.observers.get(t)}function ss(e,t){e.observers.delete(t.callback)}function as(e,t){t.unobserve()}function cs(e,t){var r=[],o,n=ns(e);if(!n)n=new rs(e),zr.set(e,n);else{var i=is(n,t);o=i&&i.observer}if(o)return o;if(o={},n.value=W(e),t){o.callback=t,o.next=null;var s=function(){Hr(o)},a=function(){clearTimeout(o.next),o.next=setTimeout(s)};typeof window<"u"&&(window.addEventListener("mouseup",a),window.addEventListener("keyup",a),window.addEventListener("mousedown",a),window.addEventListener("keydown",a),window.addEventListener("change",a))}return o.patches=r,o.object=e,o.unobserve=function(){Hr(o),clearTimeout(o.next),ss(n,o),typeof window<"u"&&(window.removeEventListener("mouseup",a),window.removeEventListener("keyup",a),window.removeEventListener("mousedown",a),window.removeEventListener("keydown",a),window.removeEventListener("change",a))},n.observers.set(t,new os(t,o)),o}function Hr(e,t){t===void 0&&(t=!1);var r=zr.get(e.object);Yr(r.value,e.object,e.patches,"",t),e.patches.length&&at(r.value,e.patches);var o=e.patches;return o.length>0&&(e.patches=[],e.callback&&e.callback(o)),o}function Yr(e,t,r,o,n){if(t!==e){typeof t.toJSON=="function"&&(t=t.toJSON());for(var i=Xt(t),s=Xt(e),a=!1,c=!1,p=s.length-1;p>=0;p--){var d=s[p],u=e[d];if(Jt(t,d)&&!(t[d]===void 0&&u!==void 0&&Array.isArray(t)===!1)){var g=t[d];typeof u=="object"&&u!=null&&typeof g=="object"&&g!=null&&Array.isArray(u)===Array.isArray(g)?Yr(u,g,r,o+"/"+Ie(d),n):u!==g&&(a=!0,n&&r.push({op:"test",path:o+"/"+Ie(d),value:W(u)}),r.push({op:"replace",path:o+"/"+Ie(d),value:W(g)}))}else Array.isArray(e)===Array.isArray(t)?(n&&r.push({op:"test",path:o+"/"+Ie(d),value:W(u)}),r.push({op:"remove",path:o+"/"+Ie(d)}),c=!0):(n&&r.push({op:"test",path:o,value:e}),r.push({op:"replace",path:o,value:t}),a=!0)}if(!(!c&&i.length==s.length))for(var p=0;po!=t)}dispatch(t,r){let o=new Map;t.forEach(n=>{this.subscribers.forEach(([i,s])=>{n.path.startsWith(i)&&!o.has(i)&&o.set(i,JSON.stringify(i==="/"?r:Ze(r,i)))})}),o.forEach((n,i)=>{let s=i==="/"?this._data:Ze(this._data,i);n!==JSON.stringify(s)&&this.subscribers.filter(([a,c])=>a===i).forEach(([a,c])=>{let p={};try{p=c(s,JSON.parse(n||{}))}catch(d){console.error(d.stack||d.message||d)}p instanceof Promise&&p.catch(d=>{console.error(d.stack||d.message||d)})})})}};function T(e,t,r){return e.constructor[rr]||(e.constructor[rr]=[]),e.constructor[rr].push(t),{value:function(...o){let n=W(this._data);r.value.apply(this,o);let i=tr(n,this._data);i.length!=0&&(this._mutationRecords.push(...i),this._version+=i.length,this.dispatch(i,n))}}}var et=class extends jr{constructor(t){super(Object.assign({sid:"",ssid:""},t||{}))}setSID(t){this._data.sid=t,this._data.ssid=t.slice(0,4)}};x([T],et.prototype,"setSID",1);var me=class extends et{constructor(t,r){super(t||{uname:"",comfyUserToken:"",isLocal:!1,activeDocumentID:0,documents:{},actions:[],canvasStateID:0,selectionStateID:"",historyStateID:0}),this._version=r||0}setIsLocal(t){this._data.isLocal=t}setUName(t){this._data.uname="PS_"+t}setDocument(t,r){this._data.activeDocumentID=t,this._data.documents=r}setCanvasStateID(t){this._data.canvasStateID=t}setSelectionStateID(t){this._data.selectionStateID=t}setHistoryStateID(t){this._data.historyStateID=t}setComfyUserToken(t){this._data.comfyUserToken=t}setActions(t){this._data.actions=t}};x([T],me.prototype,"setIsLocal",1),x([T],me.prototype,"setUName",1),x([T],me.prototype,"setDocument",1),x([T],me.prototype,"setCanvasStateID",1),x([T],me.prototype,"setSelectionStateID",1),x([T],me.prototype,"setHistoryStateID",1),x([T],me.prototype,"setComfyUserToken",1),x([T],me.prototype,"setActions",1);var K=class extends et{constructor(t,r){super(t||{title:"",webviewFromSid:location.search.match(/webview_fromsid=([^&]+)/)?.[1]||"",progress:0,lastError:"",queueSize:0,executingNodeTitle:"",widgetTableStructure:{widgetTablePath:"",widgetTablePersisted:!1,widgetTableID:"",nodes:{},groups:{},nodeIndexes:[],extraOptions:{}},widgetTableValue:{},widgetTableErrors:{},useSliderForNumberWidget:!1,hasPSDNodes:!1,comfyUserToken:"",comfyOrgLoggedIn:!1,comfyOrgAPIKey:""}),this._version=r||0}setWebviewFromSid(t){this._data.webviewFromSid=t}setTitle(t){this._data.title=t}setProgress(t){this._data.progress=t}setLastError(t){this._data.lastError=t}setQueueSize(t){this._data.queueSize=t}setExecutingNodeTitle(t){this._data.executingNodeTitle=t}setWidgetTableStructure(t){this._data.widgetTableStructure=JSON.parse(JSON.stringify(t))}setWidgetTableValue(t){this._data.widgetTableValue=JSON.parse(JSON.stringify(t))}setWidgetTableErrors(t){this._data.widgetTableErrors=JSON.parse(JSON.stringify(t))}setHasPSDNodes(t){this._data.hasPSDNodes=t}setComfyUserToken(t){this._data.comfyUserToken=t}setComfyOrgLoggedIn(t){this._data.comfyOrgLoggedIn=t}setComfyOrgAPIKey(t){this._data.comfyOrgAPIKey=t}setUseSliderForNumberWidget(t){this._data.useSliderForNumberWidget=t}};x([T],K.prototype,"setWebviewFromSid",1),x([T],K.prototype,"setTitle",1),x([T],K.prototype,"setProgress",1),x([T],K.prototype,"setLastError",1),x([T],K.prototype,"setQueueSize",1),x([T],K.prototype,"setExecutingNodeTitle",1),x([T],K.prototype,"setWidgetTableStructure",1),x([T],K.prototype,"setWidgetTableValue",1),x([T],K.prototype,"setWidgetTableErrors",1),x([T],K.prototype,"setHasPSDNodes",1),x([T],K.prototype,"setComfyUserToken",1),x([T],K.prototype,"setComfyOrgLoggedIn",1),x([T],K.prototype,"setComfyOrgAPIKey",1),x([T],K.prototype,"setUseSliderForNumberWidget",1);var Jr=class extends $t{createStore(t,r){return new K(t,r)}},O=new Jr,D=new me;var qo=e=>{let t,r=new Set,o=(p,d)=>{let u=typeof p=="function"?p(t):p;if(!Object.is(u,t)){let g=t;t=d??(typeof u!="object"||u===null)?u:Object.assign({},t,u),r.forEach(l=>l(t,g))}},n=()=>t,a={setState:o,getState:n,getInitialState:()=>c,subscribe:p=>(r.add(p),()=>r.delete(p))},c=t=e(o,n,a);return a},Qo=e=>e?qo(e):qo;var Xr=b(E(),1);var us=e=>e;function ls(e,t=us){let r=Xr.default.useSyncExternalStore(e.subscribe,()=>t(e.getState()),()=>t(e.getInitialState()));return Xr.default.useDebugValue(r),r}var Ko=e=>{let t=Qo(e),r=o=>ls(t,o);return Object.assign(r,t),r},Ho=e=>e?Ko(e):Ko;var _e=N("photoshop");var z=Ho((e,t)=>({canvasDirtyID:0,selectionDirtyID:0,layerDirtyIDs:new Map,documentCache:{},incrementCanvasDirtyID:()=>{e(r=>({canvasDirtyID:r.canvasDirtyID+1})),Zr()},incrementLayerDirtyID:r=>{e(o=>{let n=o.layerDirtyIDs.get(r)||0,i=new Map(o.layerDirtyIDs);return i.set(r,n+1),{layerDirtyIDs:i}}),Zr()},incrementSelectionDirtyID:()=>{e(r=>({selectionDirtyID:r.selectionDirtyID+1})),Zr()},setDocuments:r=>{e({documentCache:r}),_e.app.activeDocument&&D.setDocument(_e.app.activeDocument.id,JSON.parse(JSON.stringify(r)))},clearCanvasDirtyID:()=>{e({canvasDirtyID:0})},clearLayerDirtyIDs:()=>{e({layerDirtyIDs:new Map})},clearSelectionDirtyID:()=>{e({selectionDirtyID:0})}}));function Zr(){if(!_e.app.activeDocument)return;let e=z.getState().documentCache[_e.app.activeDocument.id];if(e){let t={...e,dirtyID:z.getState().canvasDirtyID,layers:e.layers.map(r=>{let o=z.getState().layerDirtyIDs.get(r.id);return o!==void 0?{...r,dirtyID:o}:r})};z.setState(r=>({documentCache:{...r.documentCache,[_e.app.activeDocument.id]:t}})),D.setDocument(_e.app.activeDocument.id,z.getState().documentCache)}}function ct(){try{if(!_e.app.activeDocument)return;let e=_e.app.documents.reduce((t,r)=>{let o=Gr(r).map(n=>{let i=n.layer.id;return{level:n.level,id:i,name:n.layer.name,identify:Ce(i,n.layer.name,n.level),fullPath:n.path,dirtyID:z.getState().layerDirtyIDs.get(i)||0}});return t[r.id]={name:r.name,id:r.id,identify:Ae(r.id,r.name),layers:o,canvasDirtyID:z.getState().canvasDirtyID,selectionDirtyID:z.getState().selectionDirtyID},t},{});z.getState().setDocuments(e)}catch(e){console.error(e)}}function or(){z.getState().incrementCanvasDirtyID()}function Ne(e){Array.isArray(e)?e.forEach(t=>{z.getState().incrementLayerDirtyID(t)}):z.getState().incrementLayerDirtyID(e)}function zo(){z.getState().clearCanvasDirtyID(),z.getState().clearLayerDirtyIDs(),ct()}function eo(){z.getState().incrementSelectionDirtyID()}(async()=>{D.setUName(Fo()),ct()})().catch(console.error);R.action.addNotificationListener(["historyStateChanged"],e=>{ds(),(e.commandID==5004||e.commandID==5002)&&(_t(),Ne(R.app.activeDocument?.activeLayers.map(t=>t.id)))});R.action.addNotificationListener(["toolModalStateChanged"],(e,t,...r)=>{t.state._value=="exit"&&t.kind._value=="paint"&&(_t(),Ne(R.app.activeDocument?.activeLayers.map(o=>o.id)))});R.action.addNotificationListener(["modalStateChanged"],(e,t)=>{t.state._value=="exit"&&(_t(),Ne(R.app.activeDocument?.activeLayers.map(r=>r.id)))});R.action.addNotificationListener(["show","hide","transform","fill","crop"],()=>{_t(),Ne(R.app.activeDocument?.activeLayers.map(e=>e.id))});R.action.addNotificationListener(["delete","move","copyToLayer"],()=>{ct(),_t(),Ne(R.app.activeDocument?.activeLayers.map(e=>e.id))});R.action.addNotificationListener(["newDocument","open","close","make","modalJavaScriptScopeExit"],()=>ct());function _t(){let e=R.app.activeDocument?.historyStates;e&&D.setCanvasStateID(e[e.length-1].id),or()}function ds(){let e=R.app.activeDocument?.historyStates;e&&D.setHistoryStateID(e[e.length-1].id)}function Yo(){D.setSelectionStateID($o+"_"+Lt+"_"+nr)}var Lt=R.app.activeDocument?.id,nr=R.app.activeDocument?.activeLayers.map(e=>e.id).join(","),$o=0;R.action.addNotificationListener(["set"],(e,t)=>{t._target[0]._property=="selection"&&($o++,Yo(),eo())});function jo(){let e=R.app.activeDocument?.activeLayers.map(r=>r.id).join(",");Lt!=R.app.activeDocument?.id&&zo();let t=[];R.app.actionTree.forEach(r=>{r.actions.forEach(o=>{t.push(r.name+"/"+o.name)})}),(D.data.actions.length!=t.length||D.data.actions.some((r,o)=>r!=t[o]))&&D.setActions(t),Lt!=R.app.activeDocument?.id||nr!=e?(Lt=R.app.activeDocument?.id,nr=e,Yo(),eo()):(Lt=R.app.activeDocument?.id,nr=e),requestAnimationFrame(jo)}requestAnimationFrame(jo);setInterval(()=>ct(),5e3);globalThis.sdpppX=globalThis.sdpppX||{};var H=globalThis.sdpppX;var tn=b(ar(),1),rn=[];H.getLogs=()=>rn;localStorage.setItem("debug","sdppp:*");tn.debug.log=(...e)=>{rn.push(e.join(" "))};var wt=b(E(),1);var U=b(E(),1);var _=b(E(),1);var cn=b(S(),1),sn=(0,_.createContext)(null);function an({children:e}){let t=Cs();return(0,_.useEffect)(()=>{window.addEventListener("message",o=>{o.data.action==="webview-connect"&&o.source?.postMessage({action:"webview-connect",payload:{webviewFromSid:D.data.sid}})});let r="";O.subscribe("/",(o,n,i)=>{n?.webviewFromSid==D.data.sid&&(t.setWebviewAgentSID(n?.sid),r||(r=n?.sid)),!n&&i.webviewFromSid==D.data.sid&&t.setWebviewAgentSID(r)})},[]),(0,cn.jsx)(sn.Provider,{value:{webviewAgentSID:t.webviewAgentSID,prevWebviewAgentSID:t.prevWebviewAgentSID,setWebviewAgentSID:t.setWebviewAgentSID,toggleWebviewDialog:t.toggleWebviewDialog,setSrc:t.setSrc,resetWebview:t.resetWebview,timeoutError:t.timeoutError,loadError:t.loadError},children:e})}function J(){let e=(0,_.useContext)(sn);if(!e)throw new Error("useSDPPPWebview must be used within a SDPPPWebviewProvider");return e}function Cs(){let[e,t]=(0,_.useState)(null),[r,o]=(0,_.useState)(null),[n,i]=(0,_.useState)(null),[s,a]=(0,_.useState)(!1),[c,p]=(0,_.useState)(""),[d,u]=(0,_.useState)(""),[g,l]=(0,_.useState)(""),[f,m]=(0,_.useState)(!1),[y,v]=(0,_.useState)(!1),w=(0,_.useRef)(null),[P,I]=(0,_.useState)("");(0,_.useEffect)(()=>{let Q=()=>{a(!1),u(g),ie()};return n?.addEventListener("close",Q),()=>{n?.removeEventListener("close",Q)}},[n,g,u,a]),(0,_.useEffect)(()=>{l(d)},[d]),(0,_.useEffect)(()=>{Is(i,o);let Q=nn();return t(Q),w.current&&clearTimeout(w.current),m(!1),v(!1),w.current=setTimeout(()=>{m(!0)},5e3),Q.addEventListener("loadstop",()=>{v(!0)}),Q.addEventListener("loaderror",De=>{I(De.message||De.type)}),Q.addEventListener("loadstart",()=>{I("")}),()=>{w.current&&clearTimeout(w.current),n?.parentElement?.removeChild(n)}},[]);let[j,be]=(0,_.useState)("");(0,_.useEffect)(()=>{c&&(be(c),j===c?ie():(e?.setAttribute("src",c),r?.setAttribute("src",c)))},[c]);let ie=(0,_.useCallback)(()=>{e?.parentElement?.removeChild(e),a(!1),n?.close();let Q=nn();t(Q);let De=c;p(""),be(""),setTimeout(()=>{p(De)},300)},[e,c]),k=(0,_.useCallback)(()=>{s?(n?.close(),a(!1)):(n?.show(),a(!0))},[n,s]);return{dialogShowing:s,toggleWebviewDialog:k,setSrc:p,webviewAgentSID:d,setWebviewAgentSID:u,prevWebviewAgentSID:g,setPrevWebviewAgentSID:l,resetWebview:ie,anyWebviewLoaded:y,timeoutError:(0,_.useMemo)(()=>f&&!y,[f,y]),loadError:P}}function Is(e,t){let r=document.createElement("dialog");r.className="sdppp-webview",r.style.padding="0",r.style.margin="0",r.style.width="1024px",r.style.height="768px",document.body.appendChild(r),e(r);let o=document.createElement("webview");return o.style.position="relative",o.style.width="1024px",o.style.height="768px",r.appendChild(o),t(o),r}var ke=null;function nn(){ke||(ke=document.createElement("div"),ke.style.position="absolute",ke.style.width="100px",ke.style.height="100px",ke.style.right="0",ke.style.bottom="-10000px",document.body.appendChild(ke));let e=document.createElement("webview");return e.style.width="100px",e.style.height="100px",ke?.appendChild(e),e}var pn=b(ln(),1);var dn=`504 +`;var fn=dn.trim();var to=class{socket;constructor(t){let r="/"+[t.split("/").slice(3).filter(o=>o).join("/"),"sd-ppp/"].filter(o=>o).join("/");t=t.split("/").slice(0,3).join("/"),this.socket=(0,pn.io)(t,{transports:["websocket"],path:r,query:{api_level:fn},rejectUnauthorized:!1,autoConnect:!1}),this.socket.on("connect",()=>{this.socket.io.engine.binaryType="blob"})}get id(){return this.socket.id}connect(){this.socket.connect()}close(){this.socket.close()}};function mn(...e){return e.reduce((t,r)=>r(t),to)}var cr=class{flushing=Promise.resolve();newFlushPending=!1;constructor(t){this.doFlush=t,this.pause()}doFlush;runFlush(){this.newFlushPending||(this.newFlushPending=!0,this.flushing=this.flushing.then(async()=>{await new Promise(t=>requestAnimationFrame(t)),this.newFlushPending=!1,await this.doFlush()}))}pause(){this.flushing=this.flushing.then(t=>new Promise(r=>{this.resume=r})).then(()=>{this.resume=()=>{}})}resume=()=>{}};function hn(e,t){return function(r){return class extends r{constructor(o){super(o),this.socket.on("store_request",(i,s)=>{s({data:e.data,version:e.version})});let n=new cr(async()=>{let{operations:i,fromVersion:s,toVersion:a}=e.flush();await new Promise(c=>{let p=!1;setTimeout(()=>{p||(console.warn("flush timeout"),c())},5e3),this.socket.emit("store_flush",{operations:i,fromVersion:s},d=>{p=!0,c(),d?.error?console.error("flush error",d.error):e.flushDone(a)})})});e.subscribe("/",()=>{n.runFlush()}),this.socket.on("disconnect",()=>{n.pause()}),this.socket.on("connect",()=>{e.setSID(this.socket.id||""),requestAnimationFrame(()=>{this.socket.emit("sdppp_init",{type:t,data:e.data,version:e.version})})}),this.socket.on("sdppp_inited",i=>{n.resume()})}}}}function gn(e,t){return function(r){return class extends r{constructor(o){super(o),this.socket.on("store_flush",n=>{if(n.type!==t)return;let i=e.getStore(n.sid);if(i)i.patchVersionAcceptable(n.fromVersion)?i.patchData(n.operations):(console.warn("patch version not acceptable from",n.fromVersion,"current version is",i.version),this.socket.emit("store_request",{type:t},s=>{e.sync(s)}));else return this.socket.emit("store_request",{sid:n.sid},s=>{e.addStore(s.sid,s.data,s.version)})}),this.socket.on("store_remove",n=>{e.removeStore(n.sid)}),this.socket.on("sdppp_inited",n=>{this.socket.emit("store_request",{type:t},i=>{e.sync(i)})})}}}}async function ro(e){let t=e.document_identify,r=F(t);if(!r)throw new Error(h("document {0} not found",t));let o=r.selection,n=o&&o.bounds?{left:o.bounds.left,top:o.bounds.top,right:r.width-o.bounds.right,bottom:r.height-o.bounds.bottom,width:o.bounds.width,height:o.bounds.height}:null,i={left:0,top:0,right:0,bottom:0,width:r.width,height:r.height};return{document_boundary:i,selection_boundary:n||i}}var Tt=N("photoshop");var xe=N("photoshop"),oo=class{promise;restore;constructor(){this.restore=()=>{},this.promise=new Promise(t=>{this.restore=t})}add(t){this.promise.then(t)}};xe.core.setExecutionMode({enableErrorStacktraces:!0});var kt=Promise.resolve();async function B(e,t){let r=t.dontRecoverSelection||!1,o=new oo,n=!1,i=[],s=[],a=t.commandName;r||(xe.app.activeDocument.activeLayers.forEach(u=>i.push(u)),t.document&&xe.app.activeDocument.id!=t.document.id&&t.document.activeLayers.forEach(u=>i.push(u)),s=i.map(u=>u.visible),o.add(()=>{i.forEach(u=>{u.selected||(u.selected=!0,n=!0)}),t.document==xe.app.activeDocument&&i.forEach((u,g)=>{u.visible=s[g]})}));let c=null;kt=kt.catch(u=>u).then(()=>new Promise(u=>{g();function g(){xe.core.isModal()?requestAnimationFrame(g):u()}})).then(()=>xe.core.executeAsModal(async function(u,...g){c=t.document?await u.hostControl.suspendHistory({documentID:t.document.id,name:a}):null,o.add(async()=>{await new Promise(requestAnimationFrame),n||c&&u.hostControl.resumeHistory(c)});try{let l=await e(o,u,...g);return o.restore(!0),l}catch(l){throw o.restore(!1),l}},{commandName:a,interactive:!0}));let p=null,d=null;try{await kt}catch(u){d=u}if(n&&(kt=xe.core.executeAsModal(async u=>{i.forEach((g,l)=>{g.visible=s[l]}),c&&u.hostControl.resumeHistory(c)},{commandName:a,interactive:!0}),await kt),d)throw d;return p}var ft=b(xt(),1),wn=b(ar(),1),As=(0,wn.default)("sdppp:getImage");function Ls(e,t){for(let r=0,o=e.length/4;r{i.dispose()}),{dataFromAPI:s,width:i.width,height:i.height}}async function xs(e,t,r){if(!t)return null;let o={documentID:e.id,sourceBounds:r,layerID:t.id},n=null;try{n=await Tt.imaging.getLayerMask(o)}catch(a){return console.warn(a),null}let i=n.imageData;if(!i)return null;let s=await i.getData({});return Promise.resolve().then(()=>{i.dispose()}),{dataFromAPI:s,width:i.width,height:i.height}}async function vn(e){let t=e.document_identify,r=F(t);if(!r)throw new Error(h("document {0} not found",t));let o=e.layer_identify,n=te(r,o);if(As("getJimpImage",o),e.boundary&&e.boundary.right+e.boundary.left+e.boundary.bottom+e.boundary.top+e.boundary.width+e.boundary.height!=r.width+r.height)throw new Error("The boundary is not for this document");let i=e.boundary?{left:e.boundary.left,top:e.boundary.top,right:r.width-e.boundary.right,bottom:r.height-e.boundary.bottom,width:e.boundary.width,height:e.boundary.height}:{left:0,top:0,right:r.width,bottom:r.height,width:r.width,height:r.height},s={pixelData:null,width:0,height:0},a=null,c,p,d={left:0,top:0,right:r.width,bottom:r.height},u=!1;if(await B(async f=>{let[m,y]=await Yt(r,n);y&&(a=m),a!=null&&f.add(()=>{a.delete()}),[c,p]=await Promise.all([ks(r,m,i),xs(r,m,i)]),d=m?.bounds??d,u=!1,m?u=m.transparentPixelsLocked:C.is_SPECIAL_LAYER_USE_CANVAS(o)&&(u=r.layers.every(v=>v.transparentPixelsLocked))},{commandName:h("get content of layer {0}",o),document:r}),!c)throw new Error(h("get pixel of {0} failed",o));c=ur(c),u&&(c=_s(c)),s.pixelData=lr(c,d,i);let g=null;return p&&(p=ur(p),g=lr(p,d,i,1)),s.pixelData=Ls(s.pixelData,g),s.width=i.width,s.height=i.height,new ft.Jimp({data:Buffer.from(s.pixelData),width:i.width,height:i.height})}async function bn(e){let t=await vn(e),r=t.bitmap.width,o=t.bitmap.height,n=new Uint8Array(r*o);for(let a=0;a{let i=null,s=e.layer_identify,a=!1;if(e.layer_identify){s=e.layer_identify;let c=te(r,s);if(C.is_SPECIAL_LAYER_USE_CANVAS(s))return o={name:"",opacity:1,boundary:{left:0,right:0,top:0,bottom:0,width:r.width,height:r.height},isGroup:!0,identify:s},o;[i,a]=await Yt(r,c),n.add(()=>{i&&a&&i.delete()})}if(!i)throw new Error(h("layer not found: {0}",e.layer_identify));o=Object.assign({isGroup:a,identify:s||""},Uo(r,i))},{commandName:h("get layer info"),document:r}),o}var fr=N("photoshop");async function no(e,t,r){let o=e.select||"all",n=e.document_identify,i=F(n);if(!i)throw new Error(h("document {0} not found",n));let s=e.layer_identifies,a=await Promise.all(s.map(async p=>{let d=te(i,p);if(C.is_SPECIAL_LAYER_USE_CANVAS(p))throw new Error(h("layer not found: {0}",p));let u=pe(i,d);if(!u)throw new Error(h("layer not found {0}",p));r(u);let g=t(u);if(o==="first"&&g.length===0)throw new Error(h("no first related layer in {0}",p));let l=g.filter((f,m)=>o==="first"?m===0:o==="text"?f.kind===fr.constants.LayerKind.TEXT:o==="image"?f.kind===fr.constants.LayerKind.NORMAL:!0).map(f=>Ce(f.id,f.name));return{layer_identifies:l,layer_infos:await Promise.all(l.map(f=>Rt({document_identify:n,layer_identify:f})))}})),c={layer_identifies:[],layer_boundaries:[],layer_infos:[]};return a.forEach(({layer_identifies:p,layer_infos:d})=>{c.layer_identifies.push(...p),c.layer_boundaries.push(...d.map(u=>u.boundary)),c.layer_infos.push(...d)}),c}async function io(e){return no(e,t=>t.layers||[],t=>{if(t.kind!=fr.constants.LayerKind.GROUP)throw new Error(h("layer {0} is not a group",t.name));if(!t.layers)throw new Error(h("layer {0} is not a group",t.name))})}async function so(e){return no(e,t=>t.linkedLayers||[],t=>{if(!t.linkedLayers)throw new Error(h("no linked layer for {0}",t.name))})}var Sn=N("photoshop"),Pn=N("uxp");async function Ts(e,t){let r={documentID:e.id,sourceBounds:t},n=(await Sn.imaging.getSelection(r)).imageData,i=await n.getData({});return Promise.resolve().then(()=>{n.dispose()}),{dataFromAPI:i,width:n.width,height:n.height}}async function Nt(e){let t=e.document_identify,r=F(t);if(!r)throw new Error(h("document {0} not found",t));let o=parseInt(Pn.host.version.split(".")[0]);if(!isNaN(o)&&o<25)throw new Error(h("GetSelection need Photoshop version 25+"));let n=e.boundary?{left:e.boundary.left,top:e.boundary.top,right:r.width-e.boundary.right,bottom:r.height-e.boundary.bottom,width:e.boundary.width,height:e.boundary.height}:{left:0,top:0,right:r.width,bottom:r.height,width:r.width,height:r.height};if(!r.selection?.bounds){let s=new Uint8Array(n.width*n.height);return s.fill(255),{blob:s,width:n.width,height:n.height}}let i=null;return await B(async s=>{let a=await Ts(r,n);a=ur(a);let c=r.selection.bounds||{left:0,top:0,right:r.width,bottom:r.height};i=a&&lr(a,c,n,1)},{document:r,commandName:"SDPPP getSelection"}),{blob:i,width:n.width,height:n.height}}var he=N("photoshop");async function ao(e){let{identifier:t}=e;if(C.is_SPECIAL_DOCUMENT_CURRENT(t)){if(!he.app.activeDocument){if(e.width&&e.height){let r=await Rs(e.width,e.height);if(r)return{value:Ae(r.id,r.name)}}throw new Error(h("document {0} not found",t))}return{value:Ae(he.app.activeDocument.id,he.app.activeDocument.name)}}else if(C.is_SPECIAL_LAYER_SELECTED_LAYER(t)){if(!he.app.activeDocument)return{error:h("document {0} not found","current")};let r=he.app.activeDocument.activeLayers[0];return r?{value:Ce(r.id,r.name)}:{error:h("layer not found {0}",t)}}}async function Rs(e,t){if(he.app.activeDocument)return he.app.activeDocument;let r=null;return await B(async()=>{r=await he.app.createDocument({width:e,height:t,resolution:72,mode:he.constants.NewDocumentMode.RGB,fill:he.constants.DocumentFill.TRANSPARENT})},{document:null,commandName:h("create document for sent images")}),r}var Dn=N("photoshop");async function co(e){let t=e.document_identify,r=F(t);if(!r)throw new Error(h("document {0} not found",t));let o=e.layer_identify,n=te(r,o),i={text:""},s=pe(r,n);if(!s||s.kind!=Dn.constants.LayerKind.TEXT)throw new Error(h('only layer kind "TEXT" is supported, invalid layer: {0}',o));return i.text=s.textItem.contents,{text:i.text}}var ae=N("photoshop"),pt=N("uxp");var pr=0,Cn=0,Ns=5e3;async function uo(e){let t=e.document_identify,r=t?F(t):null;if(e.action==="get"){let o;return await B(async function(n){if(r||(r=await Os()),!r)throw new Error(h("create document failed"));r=await r.duplicate(),n.add(async()=>{r?.close()});let s=await(await pt.storage.localFileSystem.getTemporaryFolder()).createEntry("sdppp.psd",{overwrite:!0});await r.saveAs.psd(s,{maximizeCompatibility:!1,typename:"PhotoshopSaveOptions"}),o=await s.read({format:pt.storage.formats.binary})},{commandName:h("sdppp get PSD"),document:r}),o?{data:o}:{error:"save Document failed"}}else if(e.action==="extract"){if(Date.now()-Cn2||!confirm(h("{0} wants to extract a PSD file to Photoshop, are you sure?",e.fromSSID))){pr++,pr==3&&(confirm(h("should sdppp refuse extracting PSD to Photoshop in this session anymore?"))||pr--);return}Cn=Date.now();let o=e.data;await B(async function(){if(r||(r=await ae.app.createDocument({width:512,height:512,resolution:72,mode:ae.constants.NewDocumentMode.RGB,fill:ae.constants.DocumentFill.TRANSPARENT})),!r)throw new Error(h("document {0} not found",t));ae.app.activeDocument=r,r.selection?.deselect();let n=await o.arrayBuffer(),s=await(await pt.storage.localFileSystem.getTemporaryFolder()).createEntry("sdppp.psd",{overwrite:!0});await s.write(n,{format:pt.storage.formats.binary});let a=pt.storage.localFileSystem.createSessionToken(s),c=await r.createLayer(ae.constants.LayerKind.NORMAL,{name:"sdppp"});if(!c)throw new Error(h("create layer failed"));c.move(r.layers[0],ae.constants.ElementPlacement.PLACEBEFORE),await ae.action.batchPlay([{_obj:"placeEvent",null:{_kind:"local",_path:a},freeTransformCenterState:{_enum:"quadCenterState",_value:"QCSAverage"},offset:{_obj:"offset",horizontal:{_unit:"pixelsUnit",_value:0},vertical:{_unit:"pixelsUnit",_value:0}}},{_obj:"placedLayerConvertToLayers"},{_obj:"ungroupLayersEvent",_target:[{_enum:"ordinal",_ref:"layer"}]}],{synchronousExecution:!0})},{commandName:h("sdppp extract PSD"),document:r,dontRecoverSelection:!0})}else throw new Error(h("invalid action: {0}",e.action))}async function Os(){return await ae.app.createDocument({width:512,height:512,resolution:72,mode:ae.constants.NewDocumentMode.RGB,fill:ae.constants.DocumentFill.TRANSPARENT})}var mr=N("photoshop");async function lo(e){let{action:t}=e,{document_identify:r,layer_identify:o}=e,[n,i]=t.split("/")||[],s=mr.app.actionTree.find(g=>g.name===n);if(!s)throw new Error(h("Action set {0} not found",n));let a=s.actions.find(g=>g.name===i);if(!a)throw new Error(h("Action {0} not found",i));let c=F(r);if(!c)throw new Error(h("document {0} not found",r));let p=c,d=te(p,o),u=pe(p,d);return u&&await B(async()=>{p.activeLayers.forEach(g=>{g.selected=!1}),u.selected=!0},{commandName:h("select layer"),dontRecoverSelection:!0,document:mr.app.activeDocument}),await B(async()=>{await a.play()},{commandName:h("run Photoshop Action"),document:mr.app.activeDocument}),{result:{success:!0}}}var hr=b(xt(),1),ce=N("photoshop");async function Ws(e,t){let r=ce.app.documents.find(o=>o.name==C.getSpecialDocumentForPreview());if(r)return(r.width{await r.resizeCanvas(Math.max(r.width,e),Math.max(r.height,t))},{document:null,commandName:h("resize document for preview")}),r;{let o=null;return await B(async()=>{o=await ce.app.createDocument({width:e,height:t,resolution:72,mode:ce.constants.NewDocumentMode.RGB,fill:ce.constants.DocumentFill.TRANSPARENT,name:C.getSpecialDocumentForPreview()})},{document:null,commandName:h("create document for preview")}),o}}var In=0;async function fo(e){In++;let t=e.image_blobs?.length?e.image_blobs:null,r=e.image_urls?.length?e.image_urls:null,o=e.document_identify,n=e.layer_identifies,i=(await Promise.all((r||t||[]).map(async(l,f)=>{if(r)return await hr.Jimp.read(r[f]);if(t){if("pngData"in t[f])return await hr.Jimp.read(await t[f].pngData.arrayBuffer());{let m=t[f].buffer,y=m instanceof Blob?await m.arrayBuffer():m;return new hr.Jimp({data:Buffer.from(y),width:t[f].width,height:t[f].height})}}}))).filter(l=>l),s=F(o);if(C.is_SPECIAL_LAYER_PREVIEW_DOCUMENT(o)&&(s=await Ws(i[0].bitmap.width,i[0].bitmap.height)),!s)throw new Error(h("document {0} not found",o));let a=s,c=i.map((l,f)=>{if(e.boundaries&&e.boundaries[f])return{width:e.boundaries[f].width,height:e.boundaries[f].height,top:e.boundaries[f].top,left:e.boundaries[f].left};let m=1;return(l.bitmap.height>a.height||l.bitmap.width>a.width)&&(m=Math.min(a.height/l.bitmap.height,a.width/l.bitmap.width)),{width:l.bitmap.width*m,height:l.bitmap.height*m,top:(a.height-l.bitmap.height*m)/2,left:(a.width-l.bitmap.width*m)/2,bottom:(a.height-l.bitmap.height*m)/2,right:(a.width-l.bitmap.width*m)/2}});i.forEach((l,f)=>{let m=c[f];if(l.bitmap.width!=m.width||l.bitmap.height!=m.height){let y={w:m.width,h:m.height};l.resize(y)}});let p=await Promise.all(i.map(async l=>{let f=l.bitmap.data;if(a.bitsPerChannel=="bitDepth16"){let y=new Uint16Array(f.length);for(let v=0;v{let f=null;u=await Promise.all(i.map(async(m,y)=>{let v=n.length==1?n[0]:n[y];if(!C.is_SPECIAL_LAYER_NEW_LAYER(v)){let w=te(a,v);f=pe(a,w)}if(f&&f.kind!=ce.constants.LayerKind.GROUP)return f;{let w=e.new_layer_name||"SDPPP Images";typeof H.handleSendLayerName=="function"&&(w=await H.handleSendLayerName(w));let P=await a.createLayer(ce.constants.LayerKind.NORMAL,{name:`${w} ${In}${i.length>1?`_${y+1}`:""}`});if(!P)throw new Error(h("create layer failed"));return d.push(P),f?P.move(f,ce.constants.ElementPlacement.PLACEINSIDE):P.move(a.layers[0],ce.constants.ElementPlacement.PLACEBEFORE),P}})),d.length&&l.add(m=>{m?d.forEach((y,v)=>{y.selected=!1}):d.forEach(y=>y.delete())}),await Promise.all(u.map(async(m,y)=>{await ce.imaging.putPixels({documentID:a.id,layerID:m.id,replace:!1,imageData:p[y],targetBounds:c[y]})})),Ne(u.map(m=>m.id)),or()},{commandName:h("show sent images"),document:a});let g=z.getState();return{layers:u.map(l=>({identify:Ce(l.id,l.name),dirtyID:g.layerDirtyIDs.get(l.id)||0}))}}var En=N("photoshop");async function po(e){let t=e.document_identify,r=F(t);if(!r)throw new Error(h("document {0} not found",t));let o=e.layer_identify,n=te(r,o),i=pe(r,n);if(!i||i.kind!=En.constants.LayerKind.TEXT)throw new Error(h('only layer kind "TEXT" is supported, invalid layer: {0}',o));let s=!1;return await B(async()=>{console.log(e.text),i.textItem.contents=e.text,s=!0},{document:r,commandName:h("set text to layer")}),{success:s}}function An(e){return class extends e{constructor(t){super(t),this.socket.on("B_photoshop",async(r,o)=>{let{action:n,params:i}=r,s;try{console.log("B_photoshop start",n);let a=Date.now();n==="psd"?s=await uo(i):n==="getImage"?s=await dr(i):n==="sendImages"?s=await fo(i):n==="getSelection"?s=await Nt(i):n==="getText"?s=await co(i):n==="sendText"?s=await po(i):n==="getLayerInfo"?s=await Rt(i):n==="getDocumentInfo"?s=await ro(i):n==="getLinkedLayers"?s=await so(i):n==="getLayersInGroup"?s=await io(i):n==="runPhotoshopActionOnLayer"?s=await lo(i):n==="getSpecialIdentifierValue"&&(s=await ao(i));let c=Date.now();console.log("B_photoshop end",n,c-a)}catch(a){console.error(a),o({error:a.stack||a.message||a});return}o(s)})}async callForPSDExtract(t,r){return new Promise((o,n)=>{this.socket.emit("F_photoshop",{action:"extractPSD",sid:t,params:{from_sid:r.from_sid}},i=>{if(i.error)return n(new Error(i.error));o(i)})})}async uploadImage(t,r){return new Promise((o,n)=>{this.socket.emit("F_photoshop",{action:"uploadImage",sid:t,params:r},i=>{if(i.error)return n(new Error(i.error));o(i)})})}}}function Ln(e){return class extends e{constructor(t){super(t),this.socket.on("B_workflow",(r,o)=>{if(r.action=="getStoredWidgetValue"){let{widgetTableID:n,widgetTablePath:i,widgetTablePersisted:s}=r.params,a=`${n}_${i}_${s}`,c=Ms(a),p=[];c&&Object.keys(c||{}).forEach(d=>{Object.keys(c[d]||{}).forEach(u=>{p.push({nodeID:d,widgetIndex:u,value:c[d][u].value,outputType:c[d][u].outputType})})}),o({values:p})}})}async setNodeTitle(t,r,o){await new Promise((n,i)=>{this.socket.emit("F_workflow",{action:"setNodeTitle",sid:t,params:{node_id:r,title:o}},s=>{if(s?.error)return i(new Error(s.error));n(s)})})}async pageInstanceRun(t,r,o=1){await new Promise((n,i)=>{this.socket.emit("F_workflow",{action:"run",sid:t,params:{size:o,from_sid:r}},s=>{if(s?.error)return i(new Error(s.error));n(s)})})}async setWidgetValue(t,r){t&&await new Promise((o,n)=>{this.socket.emit("F_workflow",{action:"setWidgetValue",sid:t.data.sid,params:r},i=>{if(i?.error)return n(new Error(i.error));o(i)})})}async openWorkflow(t,r){t&&await new Promise((o,n)=>{this.socket.emit("F_workflow",{action:"open",sid:t.data.sid,params:r},i=>{if(i?.error)return n(new Error(i.error));o(i)})})}async saveWorkflow(t,r){t&&await new Promise((o,n)=>{this.socket.emit("F_workflow",{action:"save",sid:t.data.sid,params:r},i=>{if(i?.error)return n(new Error(i.error));o(i)})})}async listWorkflows(t,r){return t?await new Promise((o,n)=>{this.socket.emit("F_workflow",{action:"list",sid:t.data.sid,params:r},i=>{o(i)})}):{workflows:[],error:"Workflow agent not found"}}async logout(t){t&&await new Promise((r,o)=>{this.socket.emit("F_workflow",{action:"logout",sid:t.data.sid},n=>{if(n?.error)return o(new Error(n.error));r(n)})})}async interrupt(t){await new Promise((r,o)=>{this.socket.emit("F_workflow",{action:"interrupt",sid:t},n=>{r(n)})})}async clearQueue(t){await new Promise((r,o)=>{this.socket.emit("F_workflow",{action:"clearQueue",sid:t},n=>{r(n)})})}async reboot(t){return await new Promise((r,o)=>{this.socket.emit("F_workflow",{action:"reboot",sid:t},n=>{r(n)})})}async setComfyOrgAPIKey(t,r){return await new Promise((o,n)=>{this.socket.emit("F_workflow",{action:"setComfyOrgAPIKey",sid:t,params:{api_key:r}},i=>{o(i)})})}}}function Ms(e){let t=localStorage.getItem(`widgetValue_${e}`);return t?JSON.parse(t):null}var gr=class extends mn(hn(D,"photoshop"),gn(O,"comfy"),Ln,An){constructor(t,{setConnectState:r,setLastErrorMessage:o,setBackendURL:n,setComfyMultiUser:i}){super(t);let s=()=>{this.socket.active&&this.socket.connected?r("connected"):this.socket.active?r("connecting"):r("disconnected"),requestAnimationFrame(s)};requestAnimationFrame(s),this.socket.on("connect_error",async a=>{if(this.socket.active){let c=a.message;try{let p=new AbortController,d=setTimeout(()=>p.abort(),1500),u=await fetch((t+this.socket._opts.path).replace(/(?{n(t),a.multi_user&&i(a.multi_user)}),this.socket.on("disconnect",(...a)=>{i(!1),D.setComfyUserToken("")})}};var _n=b(ar(),1),Tn=b(S(),1),Us=(0,_n.debug)("sdppp:internal"),yr="http://127.0.0.1:8188",kn=(0,U.createContext)(null);function xn({children:e}){let{setSrc:t,webviewAgentSID:r,prevWebviewAgentSID:o}=J(),[n,i]=(0,U.useState)("disconnected"),[s,a]=(0,U.useState)(""),[c,p]=(0,U.useState)(localStorage.getItem("backendURL")||yr),[d,u]=(0,U.useState)(null),[g,l]=(0,U.useState)(""),[f,m]=(0,U.useState)(!1),[y,v]=(0,U.useState)(null),[w,P]=(0,U.useState)([]);function I(k){p(k.split("?")[0].split("#")[0].trim())}(0,U.useEffect)(()=>{localStorage.setItem("backendURL",c)},[c]),(0,U.useEffect)(()=>{if(n==="connected"){a(""),t(`${c}`);let k=!!(c.includes("localhost")||c.match(/\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}/));Us("setBackendURL:",c,"src:",k),D.setIsLocal(k)}else t(""),l("")},[n]);function j(){if(n==="connected"||n==="connecting")y&&(y.close(),v(null));else try{let k=y;y||(k=new gr(c||yr,{setConnectState:i,setLastErrorMessage:a,setBackendURL:I,setComfyMultiUser:m}),v(k)),k.connect()}catch(k){a(k.stack||k.message||k)}}(0,U.useEffect)(()=>{let k=(Q,De,Gt)=>{g&&(!De&&Q==g||!(g in O.getAllStore()))&&l("")};return O.subscribe("/",k),()=>{O.unsubscribe(k)}},[g]),(0,U.useEffect)(()=>{!g&&r&&l(r)},[g,r]),(0,U.useEffect)(()=>{r&&(!g||g==o)&&l(r)},[r,o,g,l]);let[be,ie]=(0,U.useState)(null);return(0,U.useEffect)(()=>{ie(g?O.getAllStore()[g]:null)},[g]),(0,Tn.jsx)(kn.Provider,{value:{socket:y,backendURL:c,setBackendURL:I,connectState:n,doConnectOrDisconnect:j,lastErrorMessage:s,setLastErrorMessage:a,autoRunning:d,setAutoRunning:u,comfyMultiUser:f,setComfyMultiUser:m,workflowAgent:be,workflowAgentSID:g,setWorkflowAgentSID:l,beforeWorkflowRunHooks:w,setBeforeWorkflowRunHooks:P},children:e})}function A(){let e=(0,U.useContext)(kn);if(!e)throw new Error("useSDPPPInternalContext must be used within a SDPPPInternalContextProvider");return e}var Rn=b(E(),1);var Nn=b(S(),1),rt=class extends Rn.default.Component{state={hasError:!1,errorMessage:""};constructor(t){super(t)}static getDerivedStateFromError(t){return{hasError:!0,errorMessage:t.toString()}}componentDidCatch(t,r){console.log(t,r)}render(){return this.state.hasError?(0,Nn.jsx)("p",{className:"list-error-label",children:h("Error {0}... please contact me via Discord/Github",this.state.errorMessage)}):this.props.children}};var Oe=class{constructor(){this.listeners=new Set,this.subscribe=this.subscribe.bind(this)}subscribe(e){return this.listeners.add(e),this.onSubscribe(),()=>{this.listeners.delete(e),this.onUnsubscribe()}}hasListeners(){return this.listeners.size>0}onSubscribe(){}onUnsubscribe(){}};var We=typeof window>"u"||"Deno"in globalThis;function re(){}function Mn(e,t){return typeof e=="function"?e(t):e}function Un(e){return typeof e=="number"&&e>=0&&e!==1/0}function Fn(e,t){return Math.max(e+(t||0)-Date.now(),0)}function ho(e,t){return typeof e=="function"?e(t):e}function Bn(e,t){return typeof e=="function"?e(t):e}function go(e,t){let{type:r="all",exact:o,fetchStatus:n,predicate:i,queryKey:s,stale:a}=e;if(s){if(o){if(t.queryHash!==Ot(s,t.options))return!1}else if(!ht(t.queryKey,s))return!1}if(r!=="all"){let c=t.isActive();if(r==="active"&&!c||r==="inactive"&&c)return!1}return!(typeof a=="boolean"&&t.isStale()!==a||n&&n!==t.state.fetchStatus||i&&!i(t))}function yo(e,t){let{exact:r,status:o,predicate:n,mutationKey:i}=e;if(i){if(!t.options.mutationKey)return!1;if(r){if(mt(t.options.mutationKey)!==mt(i))return!1}else if(!ht(t.options.mutationKey,i))return!1}return!(o&&t.state.status!==o||n&&!n(t))}function Ot(e,t){return(t?.queryKeyHashFn||mt)(e)}function mt(e){return JSON.stringify(e,(t,r)=>mo(r)?Object.keys(r).sort().reduce((o,n)=>(o[n]=r[n],o),{}):r)}function ht(e,t){return e===t?!0:typeof e!=typeof t?!1:e&&t&&typeof e=="object"&&typeof t=="object"?Object.keys(t).every(r=>ht(e[r],t[r])):!1}function Vn(e,t){if(e===t)return e;let r=On(e)&&On(t);if(r||mo(e)&&mo(t)){let o=r?e:Object.keys(e),n=o.length,i=r?t:Object.keys(t),s=i.length,a=r?[]:{},c=0;for(let p=0;p{setTimeout(t,e)})}function Qn(e,t,r){return typeof r.structuralSharing=="function"?r.structuralSharing(e,t):r.structuralSharing!==!1?Vn(e,t):t}function Gn(e,t,r=0){let o=[...e,t];return r&&o.length>r?o.slice(1):o}function Kn(e,t,r=0){let o=[t,...e];return r&&o.length>r?o.slice(0,-1):o}var Wt=Symbol();function wr(e,t){return!e.queryFn&&t?.initialPromise?()=>t.initialPromise:!e.queryFn||e.queryFn===Wt?()=>Promise.reject(new Error(`Missing queryFn: '${e.queryHash}'`)):e.queryFn}var Fs=class extends Oe{#e;#t;#r;constructor(){super(),this.#r=e=>{if(!We&&window.addEventListener){let t=()=>e();return window.addEventListener("visibilitychange",t,!1),()=>{window.removeEventListener("visibilitychange",t)}}}}onSubscribe(){this.#t||this.setEventListener(this.#r)}onUnsubscribe(){this.hasListeners()||(this.#t?.(),this.#t=void 0)}setEventListener(e){this.#r=e,this.#t?.(),this.#t=e(t=>{typeof t=="boolean"?this.setFocused(t):this.onFocus()})}setFocused(e){this.#e!==e&&(this.#e=e,this.onFocus())}onFocus(){let e=this.isFocused();this.listeners.forEach(t=>{t(e)})}isFocused(){return typeof this.#e=="boolean"?this.#e:globalThis.document?.visibilityState!=="hidden"}},vr=new Fs;var Bs=class extends Oe{#e=!0;#t;#r;constructor(){super(),this.#r=e=>{if(!We&&window.addEventListener){let t=()=>e(!0),r=()=>e(!1);return window.addEventListener("online",t,!1),window.addEventListener("offline",r,!1),()=>{window.removeEventListener("online",t),window.removeEventListener("offline",r)}}}}onSubscribe(){this.#t||this.setEventListener(this.#r)}onUnsubscribe(){this.hasListeners()||(this.#t?.(),this.#t=void 0)}setEventListener(e){this.#r=e,this.#t?.(),this.#t=e(this.setOnline.bind(this))}setOnline(e){this.#e!==e&&(this.#e=e,this.listeners.forEach(r=>{r(e)}))}isOnline(){return this.#e}},gt=new Bs;function Hn(){let e,t,r=new Promise((n,i)=>{e=n,t=i});r.status="pending",r.catch(()=>{});function o(n){Object.assign(r,n),delete r.resolve,delete r.reject}return r.resolve=n=>{o({status:"fulfilled",value:n}),e(n)},r.reject=n=>{o({status:"rejected",reason:n}),t(n)},r}function Vs(e){return Math.min(1e3*2**e,3e4)}function wo(e){return(e??"online")==="online"?gt.isOnline():!0}var zn=class extends Error{constructor(e){super("CancelledError"),this.revert=e?.revert,this.silent=e?.silent}};function br(e){return e instanceof zn}function Sr(e){let t=!1,r=0,o=!1,n,i=Hn(),s=m=>{o||(g(new zn(m)),e.abort?.())},a=()=>{t=!0},c=()=>{t=!1},p=()=>vr.isFocused()&&(e.networkMode==="always"||gt.isOnline())&&e.canRun(),d=()=>wo(e.networkMode)&&e.canRun(),u=m=>{o||(o=!0,e.onSuccess?.(m),n?.(),i.resolve(m))},g=m=>{o||(o=!0,e.onError?.(m),n?.(),i.reject(m))},l=()=>new Promise(m=>{n=y=>{(o||p())&&m(y)},e.onPause?.()}).then(()=>{n=void 0,o||e.onContinue?.()}),f=()=>{if(o)return;let m,y=r===0?e.initialPromise:void 0;try{m=y??e.fn()}catch(v){m=Promise.reject(v)}Promise.resolve(m).then(u).catch(v=>{if(o)return;let w=e.retry??(We?0:3),P=e.retryDelay??Vs,I=typeof P=="function"?P(r,v):P,j=w===!0||typeof w=="number"&&rp()?void 0:l()).then(()=>{t?g(v):f()})})};return{promise:i,cancel:s,continue:()=>(n?.(),i),cancelRetry:a,continueRetry:c,canStart:d,start:()=>(d()?f():l().then(f),i)}}var qs=e=>setTimeout(e,0);function Qs(){let e=[],t=0,r=a=>{a()},o=a=>{a()},n=qs,i=a=>{t?e.push(a):n(()=>{r(a)})},s=()=>{let a=e;e=[],a.length&&n(()=>{o(()=>{a.forEach(c=>{r(c)})})})};return{batch:a=>{let c;t++;try{c=a()}finally{t--,t||s()}return c},batchCalls:a=>(...c)=>{i(()=>{a(...c)})},schedule:i,setNotifyFunction:a=>{r=a},setBatchNotifyFunction:a=>{o=a},setScheduler:a=>{n=a}}}var V=Qs();var Pr=class{#e;destroy(){this.clearGcTimeout()}scheduleGc(){this.clearGcTimeout(),Un(this.gcTime)&&(this.#e=setTimeout(()=>{this.optionalRemove()},this.gcTime))}updateGcTime(e){this.gcTime=Math.max(this.gcTime||0,e??(We?1/0:5*60*1e3))}clearGcTimeout(){this.#e&&(clearTimeout(this.#e),this.#e=void 0)}};var Yn=class extends Pr{#e;#t;#r;#n;#o;#s;#a;constructor(e){super(),this.#a=!1,this.#s=e.defaultOptions,this.setOptions(e.options),this.observers=[],this.#n=e.client,this.#r=this.#n.getQueryCache(),this.queryKey=e.queryKey,this.queryHash=e.queryHash,this.#e=Ks(this.options),this.state=e.state??this.#e,this.scheduleGc()}get meta(){return this.options.meta}get promise(){return this.#o?.promise}setOptions(e){this.options={...this.#s,...e},this.updateGcTime(this.options.gcTime)}optionalRemove(){!this.observers.length&&this.state.fetchStatus==="idle"&&this.#r.remove(this)}setData(e,t){let r=Qn(this.state.data,e,this.options);return this.#i({data:r,type:"success",dataUpdatedAt:t?.updatedAt,manual:t?.manual}),r}setState(e,t){this.#i({type:"setState",state:e,setStateOptions:t})}cancel(e){let t=this.#o?.promise;return this.#o?.cancel(e),t?t.then(re).catch(re):Promise.resolve()}destroy(){super.destroy(),this.cancel({silent:!0})}reset(){this.destroy(),this.setState(this.#e)}isActive(){return this.observers.some(e=>Bn(e.options.enabled,this)!==!1)}isDisabled(){return this.getObserversCount()>0?!this.isActive():this.options.queryFn===Wt||this.state.dataUpdateCount+this.state.errorUpdateCount===0}isStale(){return this.state.isInvalidated?!0:this.getObserversCount()>0?this.observers.some(e=>e.getCurrentResult().isStale):this.state.data===void 0}isStaleByTime(e=0){return this.state.isInvalidated||this.state.data===void 0||!Fn(this.state.dataUpdatedAt,e)}onFocus(){this.observers.find(t=>t.shouldFetchOnWindowFocus())?.refetch({cancelRefetch:!1}),this.#o?.continue()}onOnline(){this.observers.find(t=>t.shouldFetchOnReconnect())?.refetch({cancelRefetch:!1}),this.#o?.continue()}addObserver(e){this.observers.includes(e)||(this.observers.push(e),this.clearGcTimeout(),this.#r.notify({type:"observerAdded",query:this,observer:e}))}removeObserver(e){this.observers.includes(e)&&(this.observers=this.observers.filter(t=>t!==e),this.observers.length||(this.#o&&(this.#a?this.#o.cancel({revert:!0}):this.#o.cancelRetry()),this.scheduleGc()),this.#r.notify({type:"observerRemoved",query:this,observer:e}))}getObserversCount(){return this.observers.length}invalidate(){this.state.isInvalidated||this.#i({type:"invalidate"})}fetch(e,t){if(this.state.fetchStatus!=="idle"){if(this.state.data!==void 0&&t?.cancelRefetch)this.cancel({silent:!0});else if(this.#o)return this.#o.continueRetry(),this.#o.promise}if(e&&this.setOptions(e),!this.options.queryFn){let a=this.observers.find(c=>c.options.queryFn);a&&this.setOptions(a.options)}let r=new AbortController,o=a=>{Object.defineProperty(a,"signal",{enumerable:!0,get:()=>(this.#a=!0,r.signal)})},n=()=>{let a=wr(this.options,t),c={client:this.#n,queryKey:this.queryKey,meta:this.meta};return o(c),this.#a=!1,this.options.persister?this.options.persister(a,c,this):a(c)},i={fetchOptions:t,options:this.options,queryKey:this.queryKey,client:this.#n,state:this.state,fetchFn:n};o(i),this.options.behavior?.onFetch(i,this),this.#t=this.state,(this.state.fetchStatus==="idle"||this.state.fetchMeta!==i.fetchOptions?.meta)&&this.#i({type:"fetch",meta:i.fetchOptions?.meta});let s=a=>{br(a)&&a.silent||this.#i({type:"error",error:a}),br(a)||(this.#r.config.onError?.(a,this),this.#r.config.onSettled?.(this.state.data,a,this)),this.scheduleGc()};return this.#o=Sr({initialPromise:t?.initialPromise,fn:i.fetchFn,abort:r.abort.bind(r),onSuccess:a=>{if(a===void 0){s(new Error(`${this.queryHash} data is undefined`));return}try{this.setData(a)}catch(c){s(c);return}this.#r.config.onSuccess?.(a,this),this.#r.config.onSettled?.(a,this.state.error,this),this.scheduleGc()},onError:s,onFail:(a,c)=>{this.#i({type:"failed",failureCount:a,error:c})},onPause:()=>{this.#i({type:"pause"})},onContinue:()=>{this.#i({type:"continue"})},retry:i.options.retry,retryDelay:i.options.retryDelay,networkMode:i.options.networkMode,canRun:()=>!0}),this.#o.start()}#i(e){let t=r=>{switch(e.type){case"failed":return{...r,fetchFailureCount:e.failureCount,fetchFailureReason:e.error};case"pause":return{...r,fetchStatus:"paused"};case"continue":return{...r,fetchStatus:"fetching"};case"fetch":return{...r,...Gs(r.data,this.options),fetchMeta:e.meta??null};case"success":return{...r,data:e.data,dataUpdateCount:r.dataUpdateCount+1,dataUpdatedAt:e.dataUpdatedAt??Date.now(),error:null,isInvalidated:!1,status:"success",...!e.manual&&{fetchStatus:"idle",fetchFailureCount:0,fetchFailureReason:null}};case"error":let o=e.error;return br(o)&&o.revert&&this.#t?{...this.#t,fetchStatus:"idle"}:{...r,error:o,errorUpdateCount:r.errorUpdateCount+1,errorUpdatedAt:Date.now(),fetchFailureCount:r.fetchFailureCount+1,fetchFailureReason:o,fetchStatus:"idle",status:"error"};case"invalidate":return{...r,isInvalidated:!0};case"setState":return{...r,...e.state}}};this.state=t(this.state),V.batch(()=>{this.observers.forEach(r=>{r.onQueryUpdate()}),this.#r.notify({query:this,type:"updated",action:e})})}};function Gs(e,t){return{fetchFailureCount:0,fetchFailureReason:null,fetchStatus:wo(t.networkMode)?"fetching":"paused",...e===void 0&&{error:null,status:"pending"}}}function Ks(e){let t=typeof e.initialData=="function"?e.initialData():e.initialData,r=t!==void 0,o=r?typeof e.initialDataUpdatedAt=="function"?e.initialDataUpdatedAt():e.initialDataUpdatedAt:0;return{data:t,dataUpdateCount:0,dataUpdatedAt:r?o??Date.now():0,error:null,errorUpdateCount:0,errorUpdatedAt:0,fetchFailureCount:0,fetchFailureReason:null,fetchMeta:null,isInvalidated:!1,status:r?"success":"pending",fetchStatus:"idle"}}var $n=class extends Oe{constructor(e={}){super(),this.config=e,this.#e=new Map}#e;build(e,t,r){let o=t.queryKey,n=t.queryHash??Ot(o,t),i=this.get(n);return i||(i=new Yn({client:e,queryKey:o,queryHash:n,options:e.defaultQueryOptions(t),state:r,defaultOptions:e.getQueryDefaults(o)}),this.add(i)),i}add(e){this.#e.has(e.queryHash)||(this.#e.set(e.queryHash,e),this.notify({type:"added",query:e}))}remove(e){let t=this.#e.get(e.queryHash);t&&(e.destroy(),t===e&&this.#e.delete(e.queryHash),this.notify({type:"removed",query:e}))}clear(){V.batch(()=>{this.getAll().forEach(e=>{this.remove(e)})})}get(e){return this.#e.get(e)}getAll(){return[...this.#e.values()]}find(e){let t={exact:!0,...e};return this.getAll().find(r=>go(t,r))}findAll(e={}){let t=this.getAll();return Object.keys(e).length>0?t.filter(r=>go(e,r)):t}notify(e){V.batch(()=>{this.listeners.forEach(t=>{t(e)})})}onFocus(){V.batch(()=>{this.getAll().forEach(e=>{e.onFocus()})})}onOnline(){V.batch(()=>{this.getAll().forEach(e=>{e.onOnline()})})}};var jn=class extends Pr{#e;#t;#r;constructor(e){super(),this.mutationId=e.mutationId,this.#t=e.mutationCache,this.#e=[],this.state=e.state||Hs(),this.setOptions(e.options),this.scheduleGc()}setOptions(e){this.options=e,this.updateGcTime(this.options.gcTime)}get meta(){return this.options.meta}addObserver(e){this.#e.includes(e)||(this.#e.push(e),this.clearGcTimeout(),this.#t.notify({type:"observerAdded",mutation:this,observer:e}))}removeObserver(e){this.#e=this.#e.filter(t=>t!==e),this.scheduleGc(),this.#t.notify({type:"observerRemoved",mutation:this,observer:e})}optionalRemove(){this.#e.length||(this.state.status==="pending"?this.scheduleGc():this.#t.remove(this))}continue(){return this.#r?.continue()??this.execute(this.state.variables)}async execute(e){this.#r=Sr({fn:()=>this.options.mutationFn?this.options.mutationFn(e):Promise.reject(new Error("No mutationFn found")),onFail:(o,n)=>{this.#n({type:"failed",failureCount:o,error:n})},onPause:()=>{this.#n({type:"pause"})},onContinue:()=>{this.#n({type:"continue"})},retry:this.options.retry??0,retryDelay:this.options.retryDelay,networkMode:this.options.networkMode,canRun:()=>this.#t.canRun(this)});let t=this.state.status==="pending",r=!this.#r.canStart();try{if(!t){this.#n({type:"pending",variables:e,isPaused:r}),await this.#t.config.onMutate?.(e,this);let n=await this.options.onMutate?.(e);n!==this.state.context&&this.#n({type:"pending",context:n,variables:e,isPaused:r})}let o=await this.#r.start();return await this.#t.config.onSuccess?.(o,e,this.state.context,this),await this.options.onSuccess?.(o,e,this.state.context),await this.#t.config.onSettled?.(o,null,this.state.variables,this.state.context,this),await this.options.onSettled?.(o,null,e,this.state.context),this.#n({type:"success",data:o}),o}catch(o){try{throw await this.#t.config.onError?.(o,e,this.state.context,this),await this.options.onError?.(o,e,this.state.context),await this.#t.config.onSettled?.(void 0,o,this.state.variables,this.state.context,this),await this.options.onSettled?.(void 0,o,e,this.state.context),o}finally{this.#n({type:"error",error:o})}}finally{this.#t.runNext(this)}}#n(e){let t=r=>{switch(e.type){case"failed":return{...r,failureCount:e.failureCount,failureReason:e.error};case"pause":return{...r,isPaused:!0};case"continue":return{...r,isPaused:!1};case"pending":return{...r,context:e.context,data:void 0,failureCount:0,failureReason:null,error:null,isPaused:e.isPaused,status:"pending",variables:e.variables,submittedAt:Date.now()};case"success":return{...r,data:e.data,failureCount:0,failureReason:null,error:null,status:"success",isPaused:!1};case"error":return{...r,data:void 0,error:e.error,failureCount:r.failureCount+1,failureReason:e.error,isPaused:!1,status:"error"}}};this.state=t(this.state),V.batch(()=>{this.#e.forEach(r=>{r.onMutationUpdate(e)}),this.#t.notify({mutation:this,type:"updated",action:e})})}};function Hs(){return{context:void 0,data:void 0,error:null,failureCount:0,failureReason:null,isPaused:!1,status:"idle",variables:void 0,submittedAt:0}}var Jn=class extends Oe{constructor(e={}){super(),this.config=e,this.#e=new Set,this.#t=new Map,this.#r=0}#e;#t;#r;build(e,t,r){let o=new jn({mutationCache:this,mutationId:++this.#r,options:e.defaultMutationOptions(t),state:r});return this.add(o),o}add(e){this.#e.add(e);let t=Dr(e);if(typeof t=="string"){let r=this.#t.get(t);r?r.push(e):this.#t.set(t,[e])}this.notify({type:"added",mutation:e})}remove(e){if(this.#e.delete(e)){let t=Dr(e);if(typeof t=="string"){let r=this.#t.get(t);if(r)if(r.length>1){let o=r.indexOf(e);o!==-1&&r.splice(o,1)}else r[0]===e&&this.#t.delete(t)}}this.notify({type:"removed",mutation:e})}canRun(e){let t=Dr(e);if(typeof t=="string"){let o=this.#t.get(t)?.find(n=>n.state.status==="pending");return!o||o===e}else return!0}runNext(e){let t=Dr(e);return typeof t=="string"?this.#t.get(t)?.find(o=>o!==e&&o.state.isPaused)?.continue()??Promise.resolve():Promise.resolve()}clear(){V.batch(()=>{this.#e.forEach(e=>{this.notify({type:"removed",mutation:e})}),this.#e.clear(),this.#t.clear()})}getAll(){return Array.from(this.#e)}find(e){let t={exact:!0,...e};return this.getAll().find(r=>yo(t,r))}findAll(e={}){return this.getAll().filter(t=>yo(e,t))}notify(e){V.batch(()=>{this.listeners.forEach(t=>{t(e)})})}resumePausedMutations(){let e=this.getAll().filter(t=>t.state.isPaused);return V.batch(()=>Promise.all(e.map(t=>t.continue().catch(re))))}};function Dr(e){return e.options.scope?.id}function vo(e){return{onFetch:(t,r)=>{let o=t.options,n=t.fetchOptions?.meta?.fetchMore?.direction,i=t.state.data?.pages||[],s=t.state.data?.pageParams||[],a={pages:[],pageParams:[]},c=0,p=async()=>{let d=!1,u=f=>{Object.defineProperty(f,"signal",{enumerable:!0,get:()=>(t.signal.aborted?d=!0:t.signal.addEventListener("abort",()=>{d=!0}),t.signal)})},g=wr(t.options,t.fetchOptions),l=async(f,m,y)=>{if(d)return Promise.reject();if(m==null&&f.pages.length)return Promise.resolve(f);let v={client:t.client,queryKey:t.queryKey,pageParam:m,direction:y?"backward":"forward",meta:t.options.meta};u(v);let w=await g(v),{maxPages:P}=t.options,I=y?Kn:Gn;return{pages:I(f.pages,w,P),pageParams:I(f.pageParams,m,P)}};if(n&&i.length){let f=n==="backward",m=f?zs:Xn,y={pages:i,pageParams:s},v=m(o,y);a=await l(y,v,f)}else{let f=e??i.length;do{let m=c===0?s[0]??o.initialPageParam:Xn(o,a);if(c>0&&m==null)break;a=await l(a,m),c++}while(ct.options.persister?.(p,{client:t.client,queryKey:t.queryKey,meta:t.options.meta,signal:t.signal},r):t.fetchFn=p}}}function Xn(e,{pages:t,pageParams:r}){let o=t.length-1;return t.length>0?e.getNextPageParam(t[o],t,r[o],r):void 0}function zs(e,{pages:t,pageParams:r}){return t.length>0?e.getPreviousPageParam?.(t[0],t,r[0],r):void 0}var bo=class{#e;#t;#r;#n;#o;#s;#a;#i;constructor(e={}){this.#e=e.queryCache||new $n,this.#t=e.mutationCache||new Jn,this.#r=e.defaultOptions||{},this.#n=new Map,this.#o=new Map,this.#s=0}mount(){this.#s++,this.#s===1&&(this.#a=vr.subscribe(async e=>{e&&(await this.resumePausedMutations(),this.#e.onFocus())}),this.#i=gt.subscribe(async e=>{e&&(await this.resumePausedMutations(),this.#e.onOnline())}))}unmount(){this.#s--,this.#s===0&&(this.#a?.(),this.#a=void 0,this.#i?.(),this.#i=void 0)}isFetching(e){return this.#e.findAll({...e,fetchStatus:"fetching"}).length}isMutating(e){return this.#t.findAll({...e,status:"pending"}).length}getQueryData(e){let t=this.defaultQueryOptions({queryKey:e});return this.#e.get(t.queryHash)?.state.data}ensureQueryData(e){let t=this.defaultQueryOptions(e),r=this.#e.build(this,t),o=r.state.data;return o===void 0?this.fetchQuery(e):(e.revalidateIfStale&&r.isStaleByTime(ho(t.staleTime,r))&&this.prefetchQuery(t),Promise.resolve(o))}getQueriesData(e){return this.#e.findAll(e).map(({queryKey:t,state:r})=>{let o=r.data;return[t,o]})}setQueryData(e,t,r){let o=this.defaultQueryOptions({queryKey:e}),i=this.#e.get(o.queryHash)?.state.data,s=Mn(t,i);if(s!==void 0)return this.#e.build(this,o).setData(s,{...r,manual:!0})}setQueriesData(e,t,r){return V.batch(()=>this.#e.findAll(e).map(({queryKey:o})=>[o,this.setQueryData(o,t,r)]))}getQueryState(e){let t=this.defaultQueryOptions({queryKey:e});return this.#e.get(t.queryHash)?.state}removeQueries(e){let t=this.#e;V.batch(()=>{t.findAll(e).forEach(r=>{t.remove(r)})})}resetQueries(e,t){let r=this.#e;return V.batch(()=>(r.findAll(e).forEach(o=>{o.reset()}),this.refetchQueries({type:"active",...e},t)))}cancelQueries(e,t={}){let r={revert:!0,...t},o=V.batch(()=>this.#e.findAll(e).map(n=>n.cancel(r)));return Promise.all(o).then(re).catch(re)}invalidateQueries(e,t={}){return V.batch(()=>(this.#e.findAll(e).forEach(r=>{r.invalidate()}),e?.refetchType==="none"?Promise.resolve():this.refetchQueries({...e,type:e?.refetchType??e?.type??"active"},t)))}refetchQueries(e,t={}){let r={...t,cancelRefetch:t.cancelRefetch??!0},o=V.batch(()=>this.#e.findAll(e).filter(n=>!n.isDisabled()).map(n=>{let i=n.fetch(void 0,r);return r.throwOnError||(i=i.catch(re)),n.state.fetchStatus==="paused"?Promise.resolve():i}));return Promise.all(o).then(re)}fetchQuery(e){let t=this.defaultQueryOptions(e);t.retry===void 0&&(t.retry=!1);let r=this.#e.build(this,t);return r.isStaleByTime(ho(t.staleTime,r))?r.fetch(t):Promise.resolve(r.state.data)}prefetchQuery(e){return this.fetchQuery(e).then(re).catch(re)}fetchInfiniteQuery(e){return e.behavior=vo(e.pages),this.fetchQuery(e)}prefetchInfiniteQuery(e){return this.fetchInfiniteQuery(e).then(re).catch(re)}ensureInfiniteQueryData(e){return e.behavior=vo(e.pages),this.ensureQueryData(e)}resumePausedMutations(){return gt.isOnline()?this.#t.resumePausedMutations():Promise.resolve()}getQueryCache(){return this.#e}getMutationCache(){return this.#t}getDefaultOptions(){return this.#r}setDefaultOptions(e){this.#r=e}setQueryDefaults(e,t){this.#n.set(mt(e),{queryKey:e,defaultOptions:t})}getQueryDefaults(e){let t=[...this.#n.values()],r={};return t.forEach(o=>{ht(e,o.queryKey)&&Object.assign(r,o.defaultOptions)}),r}setMutationDefaults(e,t){this.#o.set(mt(e),{mutationKey:e,defaultOptions:t})}getMutationDefaults(e){let t=[...this.#o.values()],r={};return t.forEach(o=>{ht(e,o.mutationKey)&&Object.assign(r,o.defaultOptions)}),r}defaultQueryOptions(e){if(e._defaulted)return e;let t={...this.#r.queries,...this.getQueryDefaults(e.queryKey),...e,_defaulted:!0};return t.queryHash||(t.queryHash=Ot(t.queryKey,t)),t.refetchOnReconnect===void 0&&(t.refetchOnReconnect=t.networkMode!=="always"),t.throwOnError===void 0&&(t.throwOnError=!!t.suspense),!t.networkMode&&t.persister&&(t.networkMode="offlineFirst"),t.queryFn===Wt&&(t.enabled=!1),t}defaultMutationOptions(e){return e?._defaulted?e:{...this.#r.mutations,...e?.mutationKey&&this.getMutationDefaults(e.mutationKey),...e,_defaulted:!0}}clear(){this.#e.clear(),this.#t.clear()}};var Mt=b(E(),1),Zn=b(S(),1),ei=Mt.createContext(void 0);var So=({client:e,children:t})=>(Mt.useEffect(()=>(e.mount(),()=>{e.unmount()}),[e]),(0,Zn.jsx)(ei.Provider,{value:e,children:t}));var Ue=b(E(),1);var X=b(E(),1);var Cr=b(E(),1);function ti(){let{workflowAgent:e,socket:t}=A();return{setWidgetValue:(0,Cr.useCallback)(async(o,n,i)=>{if(!e)throw new Error("workflowAgent not found");await t?.setWidgetValue(e,{values:[{nodeID:o,widgetIndex:n,value:i}]});let s=e.data.widgetTableStructure.widgetTableID,a=e.data.widgetTableStructure.widgetTablePath,c=e.data.widgetTableStructure.widgetTablePersisted,p=`${s}_${a}_${c}`,d=e.data.widgetTableStructure.nodes[o].widgets[n].outputType;Ys(p,o,n,i,d)},[e,t])}}function yt(){let{beforeWorkflowRunHooks:e,setBeforeWorkflowRunHooks:t}=A(),r=(0,Cr.useCallback)(n=>(t(i=>[...i,n]),()=>{t(i=>i.filter(a=>a!==n))}),[t]),o=(0,Cr.useCallback)(async()=>{for(let n=0;n{await e?.setComfyOrgAPIKey(t,v)},[e,t]),n=(0,X.useCallback)(async(v,w)=>{let P=O.getStore(v);if(!P)throw new Error("workflowAgent not found");try{await e?.openWorkflow(P,{workflow_path:w,sdpppID:H.sdpppID,sdpppToken:localStorage.getItem("token")||"",from_sid:D.data.sid,reset:!0})}catch(I){console.error(I)}},[e]),i=(0,X.useCallback)(async v=>{let w=O.getStore(v);if(!w||!w.data.widgetTableStructure.widgetTablePath)throw new Error("workflow not found");if(!w.data.widgetTableStructure.widgetTablePersisted)throw new Error("workflow is not savable");await n(v,w.data.widgetTableStructure.widgetTablePath)},[n]),s=(0,X.useCallback)((v,w=1)=>{e?.pageInstanceRun(v,D.data.sid,w)},[e]),a=(0,X.useCallback)(async v=>{let w=O.getStore(v);if(!w)throw new Error("workflowAgent not found");if(!w.data.widgetTableStructure.widgetTablePath)throw new Error("workflow not found");w.data.widgetTableStructure.widgetTablePath.indexOf("://")===-1&&await e?.saveWorkflow(w,{workflow_path:w.data.widgetTableStructure.widgetTablePath,from_sid:D.data.sid})},[e]),c=(0,X.useCallback)(async v=>{await e?.callForPSDExtract(v,{from_sid:D.data.sid})},[e]),p=(0,X.useCallback)(async v=>{let w=O.getStore(v);if(!w)throw new Error("workflowAgent not found");await e?.logout(w)},[e]),d=(0,X.useCallback)(async(v,w)=>await e?.uploadImage(D.data.sid,{image:v,filename:w,overwrite:!0}),[e]);globalThis.sdppp_action_run=async(v,{workflowPath:w})=>{w?l(w):g()};let u=(0,X.useCallback)(async(v,w=1)=>{!v&&!t||(await r(),await s(v||t,w))},[s,t,r]),g=(0,X.useCallback)(async(v,w=1)=>{await u(v||t,w),Po.action.recordAction?.({name:"sdppp_run",methodName:"sdppp_action_run"},{})},[u]),l=(0,X.useCallback)(async(v,w,P=1)=>{!w&&!t||(await n(w||t,v),u(w||t,P),Po.action.recordAction?.({name:"sdppp_run_"+v,methodName:"sdppp_action_run"},{workflowPath:v}))},[n,g,t]),f=(0,X.useCallback)(async()=>{t&&await e?.interrupt(t)},[e,t]),m=(0,X.useCallback)(async()=>{t&&await e?.clearQueue(t)},[e,t]),y=(0,X.useCallback)(async()=>{if(t)return await e?.reboot(t)},[e,t]);return{openWorkflow:n,reopenWorkflow:i,saveWorkflow:a,runPage:g,runWorkflow:l,callForPSDExtract:c,logout:p,uploadImage:d,interrupt:f,clearQueue:m,reboot:y,setComfyOrgAPIKey:o}}function Ir(){let[e,t]=(0,Ue.useState)(!1),[r,o]=(0,Ue.useState)(!1),n=(0,Ue.useRef)(null),{autoRunning:i,workflowAgent:s}=A(),{runWorkflow:a,runPage:c}=oe();return(0,Ue.useEffect)(()=>{if(i&&e&&!r){if(t(!1),i.type=="workflow")s&&!s.data.executingNodeTitle&&(a(i.value,s.data.sid,1),n.current=setTimeout(()=>{o(!1)},1e3));else if(i.type=="page"){let p=O.getStore(i.value);p&&!p.data.executingNodeTitle&&(o(!0),c(i.value),n.current=setTimeout(()=>{o(!1)},1e3))}}},[e,r,i,s,a,c]),(0,Ue.useEffect)(()=>()=>{n.current&&clearTimeout(n.current)},[]),{setShouldTriggerLivePainting:t}}var ue=b(E(),1);var ni=b(S(),1),$s=15e3,ri=(0,ue.createContext)({});function oi({children:e,loginAppID:t,loginStyle:r,loginBannerTop:o,loginBannerBottom:n}){let[i,s]=(0,ue.useState)(!t),[a,c]=(0,ue.useState)(!1),p=(0,ue.useCallback)(async(f,m="sdppp123456")=>{try{let y=await fetch("https://api.authing.cn/api/v3/signin",{method:"POST",headers:{"Content-Type":"application/json","x-authing-app-id":t,"x-authing-sdk-version":"web:3.0.0"},body:JSON.stringify({connection:"PASSWORD",passwordPayload:{username:f,password:m}})}),v=await y.json();if(y.ok){if(v.statusCode===200)return{success:!0,token:v.data.access_token};if(v.statusCode===403)return{success:!1,message:h("Verification Error")}}else return{success:!1,message:JSON.stringify(v)}}catch(y){return{success:!1,message:y.toString()}}return{success:!1,message:"\u767B\u5F55\u5931\u8D25"}},[]),d=(0,ue.useCallback)(async f=>{if(!f)throw new Error("Token is required");let m="access_token",y="https://api.authing.cn/oidc/token/introspection",v=`token=${encodeURIComponent(f)}&token_type_hint=${encodeURIComponent(m)}&client_id=${encodeURIComponent(t)}`;try{let w=await fetch(y,{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded"},body:v});if(!w.ok)throw new Error(`Verification failed with status: ${w.status}`);return await w.json()}catch(w){throw console.error("Token verification error:",w),w}},[]),u=(0,ue.useCallback)(async f=>{try{let y=await(await fetch("https://api.authing.cn/api/v3/get-profile",{method:"GET",headers:{Authorization:`Bearer ${f}`,"x-authing-app-id":t}})).json();return y.statusCode===200?{data:y.data,success:!0}:{message:y.message,success:!1}}catch(m){return{success:!1,message:m}}},[]);async function g(f,m="sdppp123456"){let y=await p(f,m);if(y.success){let v=await u(y.token);v.success&&(localStorage.setItem("token",y.token),localStorage.setItem("lastLogin",new Date(v.data.lastLogin).getTime().toString()),s(!0))}return y}async function l(f){if(!localStorage.getItem("lastLogin"))return!1;if((await d(f)).active){let y=await u(f);if(y.success){let v=new Date(y.data.lastLogin).getTime().toString(),w=localStorage.getItem("lastLogin");return v===w}else return!1}return!1}return(0,ue.useEffect)(()=>{if(i){if(t){let f=setInterval(()=>{let m=localStorage.getItem("token");m&&l(m).then(y=>{y||s(!1)})},$s);return()=>{clearInterval(f)}}}else{let f=localStorage.getItem("token");if(!f)return;l(f).then(m=>{m&&s(!0)})}},[i]),(0,ni.jsx)(ri.Provider,{value:{hasAuthingLogin:!!t,loginStyle:r||"none",loginBannerBottom:n||null,loginBannerTop:o||null,isLogin:i,loggedInUsername:i&&localStorage.getItem("last-username")||"",logout:()=>{localStorage.removeItem("token"),s(!1),c(!1)},login:g,setIsTrialing:c,isTrialing:a},children:e})}function ne(){let e=(0,ue.useContext)(ri);if(!e)throw new Error("useSDPPPLogin must be used within a SDPPPLoginProvider");return e}var Fe=b(S(),1),ii=(0,wt.createContext)({});function si({children:e,loginAppID:t,loginStyle:r,loginBannerTop:o,loginBannerBottom:n}){let i=new bo;return(0,Fe.jsx)(So,{client:i,children:(0,Fe.jsx)(rt,{children:(0,Fe.jsx)(an,{children:(0,Fe.jsx)(oi,{loginAppID:t,loginStyle:r,loginBannerTop:o,loginBannerBottom:n,children:(0,Fe.jsx)(xn,{children:(0,Fe.jsx)(js,{children:e})})})})})})}function Me(){let e=(0,wt.useContext)(ii);if(!e)throw new Error("SDPPPExternalContext not found");return e}function js({children:e}){let t=J(),r=A(),{logout:o,isLogin:n}=ne();H.registerTestCase&&(globalThis.sdppp_debugPhotoshopInternalContext=r,globalThis.sdppp_debugPhotoshopWebviewContext=t);let{toggleWebviewDialog:i,webviewAgentSID:s}=t,{autoRunning:a,setAutoRunning:c,workflowAgent:p,setWorkflowAgentSID:d,doConnectOrDisconnect:u,lastErrorMessage:g}=r,{setShouldTriggerLivePainting:l}=Ir();return(0,wt.useEffect)(()=>{let f=()=>{l(!0)};return D.subscribe("/canvasStateID",f),()=>{D.unsubscribe(f)}},[l]),(0,Fe.jsx)(ii.Provider,{value:{logout:o,isLogin:n,connectOrDisconnect:u,lastConnectErrorMessage:g,setAutoRunning:c,autoRunning:a,photoshopSID:D.data.sid,webviewAgentSID:s,workflowAgentSID:p?.data.sid||"",setWorkflowAgentSID:d,toggleWebviewDialog:i},children:e})}var Er=b(E(),1);var vt=b(E(),1);function ge(e,t){let[r,o]=(0,vt.useState)(e?{...e.data}:null),[n,i]=(0,vt.useState)(e?{...e.data}:null),s=Array.isArray(t)?t:[t];return(0,vt.useEffect)(()=>{e&&o({...e.data})},[e]),(0,vt.useEffect)(()=>{if(!e)return;let a=s.map(c=>{let p=()=>{i(r),o(e.data)};return e.subscribe(c,p),p});return()=>{a.forEach(c=>{e.unsubscribe(c)})}},[e,t]),{state:r||null,prevState:n||null}}function Ar(){let[e,t]=(0,Er.useState)({}),{state:r}=ge(D,"/comfyUserToken"),o=r?.comfyUserToken;return(0,Er.useEffect)(()=>{let n=!1,i=(s,a,c)=>{n||t(p=>{let d={...p};return a==null?delete d[s]:d[s]=a,d})};return O.subscribe("/",i),()=>{n=!0,O.unsubscribe(i)}},[]),{pageInstances:Object.entries(e).map(([n,i])=>({sid:n,ssid:n.slice(0,4),title:i.title,lastError:i.lastError,isWebview:!!i.webviewFromSid,isCurrentUser:!i.comfyUserToken||i.comfyUserToken==o})).filter(n=>!n.isWebview&&(!o||n.isCurrentUser))}}var ye=b(E(),1);function Js(e){let{state:t}=ge(D,["/comfyUserToken"]),{socket:r,workflowAgentSID:o}=A(),[n,i]=(0,ye.useState)({}),[s,a]=(0,ye.useState)(!1),[c,p]=(0,ye.useState)(null),d=(0,ye.useCallback)(async u=>{if(!u&&!o){i({});return}a(!0);let g=O.getStore(u||o);try{let l=await r?.listWorkflows(g||null,{listMode:H.listMode,sdpppID:H.sdpppID,sdpppToken:localStorage.getItem("token")||""})||{workflows:[],error:"Empty workflow list"};if(l.error){p(new Error(l.error)),a(!1);return}a(!1),p(null),i(l.workflows.reduce((f,m)=>(f[m]={path:m,content:null,error:""},f),{}))}catch(l){a(!1),p(l)}},[r,o]);return(0,ye.useEffect)(()=>{e&&d()},[e]),(0,ye.useEffect)(()=>{t?.comfyUserToken&&d()},[t]),{data:n,isLoading:s,error:c,refetch:d}}function ai(){let{backendURL:e,comfyMultiUser:t}=A(),{workflowAgentSID:r}=Me(),[o,n]=(0,ye.useState)(!0),[i,s]=(0,ye.useState)(""),{data:a,isLoading:c,error:p,refetch:d}=Js(e);(0,ye.useEffect)(()=>{if(r)d(),n(!1);else{n(!0);let l=setTimeout(()=>{n(!1)},4e3);return()=>clearTimeout(l)}},[r]);let u=[];if(!c&&!p&&a){let l=[],f=[];Object.keys(a).forEach(m=>{if(m.startsWith(i)){let y=m.slice(i.length).split("://").pop();y&&(y.indexOf("/")==-1?l.push(m):f.push(m.slice(0,m.lastIndexOf("/")+1)))}}),u=[...f.sort((m,y)=>m.localeCompare(y)).map(m=>({path:m,isDir:!0})),...l.map(m=>({path:m,isDir:!1}))].filter((m,y,v)=>v.findIndex(w=>w.path==m.path)===y)}let g="";return p&&(g=p.message),u.length||(g=h("Workflow list is empty, please save a workflow by Comfy's lastest UI")),p&&(g=h("Workflow list loading failed: {0}",p.message)),c&&(g="Loading"),r||(g=h("Workflow Runner is loading...")),{workflows:a,isLoadingWorkflows:c,workflowsError:g,refetchWorkflows:d,afterPropsUpdate4s:o,currentViewingDirectory:i,setCurrentViewingDirectory:s,showingList:u}}function Lr(e){let t=e?O.getStore(e):null,{state:r}=ge(t||null,["/"]);return!r||!e?{sid:"",ssid:"",title:"",lastError:"",isWebview:!1,progress:0,executingNodeTitle:"",queueSize:0}:{sid:e,ssid:r.ssid,title:r.title,lastError:r.lastError,isWebview:!!r.webviewFromSid,progress:r.progress,executingNodeTitle:r.executingNodeTitle,queueSize:r.queueSize}}var pi=b(E(),1);var Be=b(E(),1);var ci={site:{en:{name:"Github",url:"https://github.com/zombieyang/sd-ppp"},zhcn:{name:">> SD-PPP \u5B98\u65B9\u7AD9",url:"https://sdppp.zombee.tech/"}},LICENSE:{name:"BSD3-Clause",url:{en:"https://github.com/zombieyang/sd-ppp/blob/main/LICENSE",zhcn:"https://gitee.com/zombieyang/sd-ppp/blob/main/LICENSE"}},sponsors:[{name:"\u56DB\u559CAI",url:"https://v.douyin.com/hD2X7S717uw/"},{name:"\u82BD\u9EA6AI&\u5218\u9510",url:"https://v.douyin.com/cw4ba7Vn5-w/"},{name:"\u6C90\u6C90AI",url:"https://v.douyin.com/k6yKDEcVgP8/"},{name:"\u68A8\u68A8AI",url:"https://v.douyin.com/55KuUbZVGCM/"}],links:[{name:"\u732B\u54AA\u8001\u5E08Reimagined",url:"https://www.xiaohongshu.com/user/profile/59f1fcc411be101aba7f048f"},{name:"\u6765\u771F\u7684",url:"https://space.bilibili.com/590784254"},{name:"\u54D1\u72D7Egao",url:"https://space.bilibili.com/284721975"}],community:{en:[{name:"Github",url:"https://github.com/zombieyang/sd-ppp"},{name:"Discord",url:"https://discord.gg/9HeGjDvEmn"},{name:"Youtube",url:"https://www.youtube.com/@Github-Zombeeyang/videos"}],zhcn:[{name:"Github",url:"https://github.com/zombieyang/sd-ppp"},{name:"QQ\u9891\u9053",url:"https://pd.qq.com/s/5m42umo28"},{name:"Bilibili",url:"https://space.bilibili.com/44908313"}]},cloud:{en:[],zhcn:[{name:"\u6668\u7FBD\u667A\u4E91",url:"https://www.chenyu.cn/console/login?invitationCode=BUD913",icon:"icons/chenyu.ico",color:"var(--uxp-host-text-color-secondary)"},{name:"\u4ED9\u5BAB\u4E91",url:"https://www.xiangongyun.com/register/NWF5AH",icon:"https://www.xiangongyun.com/favicon.ico",color:"var(--uxp-host-text-color-secondary)"},{name:"Cephalon",url:"https://cephalon.cloud/share/register-landing?invite_id=m95SDj",icon:"icons/cephalon.ico",color:"var(--uxp-host-text-color-secondary)"}]}};var Do=ci,fi="sponsorData",ui={GITEE:"https://gitee.com/zombieyang/sd-ppp/raw/main/sponsors.json",GITHUB:"https://raw.githubusercontent.com/zombieyang/sd-ppp/refs/heads/main/sponsors.json"},Zs=5e3;function Co(){try{let e=localStorage.getItem(fi);if(e)return JSON.parse(e)}catch(e){console.warn("Failed to parse sponsor data from localStorage:",e)}return null}function li(e){try{localStorage.setItem(fi,JSON.stringify(e))}catch(t){console.warn("Failed to save sponsor data to localStorage:",t)}}function kr(e){try{if(!e||typeof e!="object")return console.warn("Invalid sponsor data: not an object"),!1;if(!e.LICENSE||typeof e.LICENSE!="object")return console.warn("Invalid sponsor data: LICENSE is not an object"),!1;if(!e.LICENSE.name)return console.warn("Invalid sponsor data: LICENSE.name is missing"),!1;if(!e.LICENSE.url||typeof e.LICENSE.url!="object")return console.warn("Invalid sponsor data: LICENSE.url is not an object"),!1;if(!e.LICENSE.url.en)return console.warn("Invalid sponsor data: LICENSE.url.en is missing"),!1;if(!e.LICENSE.url.zhcn)return console.warn("Invalid sponsor data: LICENSE.url.zhcn is missing"),!1;if(!Array.isArray(e.sponsors))return console.warn("Invalid sponsor data: sponsors is not an array"),!1;if(!Array.isArray(e.links))return console.warn("Invalid sponsor data: links is not an array"),!1;if(!e.community||typeof e.community!="object")return console.warn("Invalid sponsor data: community is not an object"),!1;if(!Array.isArray(e.community.en)||!Array.isArray(e.community.zhcn))return console.warn("Invalid sponsor data: community.en or community.zhcn is not an array"),!1;if(!e.cloud||typeof e.cloud!="object")return console.warn("Invalid sponsor data: cloud is not an object"),!1;if(!Array.isArray(e.cloud.en)||!Array.isArray(e.cloud.zhcn))return console.warn("Invalid sponsor data: cloud.en or cloud.zhcn is not an array"),!1;for(let t of e.cloud.zhcn)if(!t.name||!t.url||!t.icon||!t.color)return console.warn("Invalid sponsor data: cloud.zhcn item missing required properties"),!1;return!0}catch(t){return console.warn("Error validating sponsor data:",t),!1}}async function di(e){try{let t=await fetch(e);if(!t.ok)throw new Error(`Fetch failed with status: ${t.status}`);let r=await t.json();return kr(r)?r:null}catch(t){return console.warn(`Failed to fetch from ${e}:`,t),null}}var _r=null;function xr(){let[e,t]=Be.default.useState(!0);if(!_r){let s=Co();_r=new Promise(a=>{let c=!1;di(ui.GITEE).then(p=>{!c&&p&&(c=!0,li(p),a(p),t(!1))}),di(ui.GITHUB).then(p=>{!c&&p&&(c=!0,li(p),a(p),t(!1))}),setTimeout(()=>{c||(c=!0,s&&kr(s)?(a(s),t(!1)):(console.warn("Using default data as fallback"),a(Do),t(!1)))},Zs)})}let[r,o]=Be.default.useState(()=>{let s=Co();return s&&kr(s)?s:Do});Be.default.useEffect(()=>{_r&&_r.then(s=>{o(s)}).catch(s=>{console.error("Error in useSponsor:",s);let a=Co();o(a&&kr(a)?a:Do)})},[]);let[n,i]=(0,Be.useState)(!0);return(0,Be.useEffect)(()=>{n&&!e&&i(e)},[e]),{data:r,isLoading:n}}var L=b(S(),1);function mi(){let{loginStyle:e}=ne(),{data:t}=xr(),r=(0,pi.useMemo)(()=>t.community[je()=="zhcn"?"zhcn":"en"],[t]);return(0,L.jsxs)("div",{className:"about-card",style:{position:"relative"},children:[e==="none"?(0,L.jsxs)(L.Fragment,{children:[(0,L.jsx)("div",{className:"about-card-sections about-card-title",children:(0,L.jsxs)("a",{href:t.LICENSE.url[je()=="zhcn"?"zhcn":"en"],children:[h("LICENSE:")," ",t.LICENSE.name]})}),(0,L.jsx)("sp-divider",{}),(0,L.jsx)("h2",{children:h("Sponsors")}),(0,L.jsx)("div",{className:"about-card-sections about-card-sponsors",children:t.sponsors.map(o=>(0,L.jsx)("a",{href:o.url,children:o.name},o.name))}),(0,L.jsx)("sp-divider",{}),(0,L.jsx)("h2",{children:h("Links")}),(0,L.jsx)("div",{className:"about-card-sections about-card-friends-links",children:t.links.map(o=>(0,L.jsx)("a",{href:o.url,children:o.name},o.name))}),(0,L.jsx)("sp-divider",{}),(0,L.jsxs)("h2",{children:["SD-PPP ",h("Community")]})]}):(0,L.jsxs)(L.Fragment,{children:[(0,L.jsx)("div",{className:"about-card-sections about-card-title",children:(0,L.jsx)("h4",{children:h("This plugin is based on sd-ppp")})}),(0,L.jsx)("div",{className:"about-card-sections about-card-title",children:(0,L.jsx)("h6",{children:h("And follows its open source license:")})}),(0,L.jsx)("div",{className:"about-card-sections about-card-title",children:(0,L.jsx)("a",{href:"https://github.com/zombieyang/sd-ppp/blob/main/LICENSE",children:"LICENSE: BSD3-Clause"})})]}),(0,L.jsx)("div",{className:"about-card-sections about-card-links",children:r.map(o=>(0,L.jsx)("a",{href:o.url,children:o.name},o.name))}),(0,L.jsx)("sp-divider",{}),t.site&&(0,L.jsx)("h1",{children:(0,L.jsx)("a",{href:t.site[je()=="zhcn"?"zhcn":"en"].url,children:t.site[je()=="zhcn"?"zhcn":"en"].name})})]})}var Se=b(E(),1);var hi=b(E(),1),bt=b(S(),1),Ut=class extends hi.default.Component{render(){let t=this.props.size||1;return(0,bt.jsx)("div",{slot:"icon",className:"sdppp-icon",onClick:this.props.onClick,children:(0,bt.jsxs)("svg",{width:20*t,height:20*t,viewBox:"0 0 14 14",fill:"none",xmlns:"http://www.w3.org/2000/svg",children:[(0,bt.jsx)("path",{d:"M5.586 5.586A2 2 0 018.862 7.73a.5.5 0 10.931.365 3 3 0 10-1.697 1.697.5.5 0 10-.365-.93 2 2 0 01-2.145-3.277z",fill:"currentColor"}),(0,bt.jsx)("path",{fillRule:"evenodd",clipRule:"evenodd",d:"M.939 6.527c.127.128.19.297.185.464a.635.635 0 01-.185.465L0 8.395a7.099 7.099 0 001.067 2.572h1.32c.182 0 .345.076.46.197a.635.635 0 01.198.46v1.317A7.097 7.097 0 005.602 14l.94-.94a.634.634 0 01.45-.186H7.021c.163 0 .326.061.45.186l.939.938a7.098 7.098 0 002.547-1.057V11.61c0-.181.075-.344.197-.46a.634.634 0 01.46-.197h1.33c.507-.76.871-1.622 1.056-2.55l-.946-.946a.635.635 0 01-.186-.465.635.635 0 01.186-.464l.943-.944a7.099 7.099 0 00-1.044-2.522h-1.34a.635.635 0 01-.46-.197.635.635 0 01-.196-.46V1.057A7.096 7.096 0 008.413.002l-.942.942a.634.634 0 01-.45.186H6.992a.634.634 0 01-.45-.186L5.598 0a7.097 7.097 0 00-2.553 1.058v1.33c0 .182-.076.345-.197.46a.635.635 0 01-.46.198h-1.33A7.098 7.098 0 00.003 5.591l.936.936zm.707 1.636c.324-.324.482-.752.479-1.172a1.634 1.634 0 00-.48-1.171l-.538-.539c.126-.433.299-.847.513-1.235h.768c.459 0 .873-.19 1.167-.49.3-.295.49-.708.49-1.167v-.77c.39-.215.807-.388 1.243-.515l.547.547c.32.32.742.48 1.157.48l.015-.001h.014c.415 0 .836-.158 1.157-.479l.545-.544c.433.126.846.299 1.234.512v.784c0 .46.19.874.49 1.168.294.3.708.49 1.167.49h.776c.209.382.378.788.502 1.213l-.545.546a1.635 1.635 0 00-.48 1.17c-.003.421.155.849.48 1.173l.549.55c-.126.434-.3.85-.513 1.239h-.77c-.458 0-.872.19-1.166.49-.3.294-.49.708-.49 1.167v.77a6.09 6.09 0 01-1.238.514l-.54-.54a1.636 1.636 0 00-1.158-.48H6.992c-.415 0-.837.159-1.157.48l-.543.543a6.091 6.091 0 01-1.247-.516v-.756c0-.459-.19-.873-.49-1.167-.294-.3-.708-.49-1.167-.49h-.761a6.094 6.094 0 01-.523-1.262l.542-.542z",fill:"currentColor"})]})})}};var Ft=b(S(),1);function gi(){let{loggedInUsername:e,logout:t}=ne();return(0,Ft.jsxs)("div",{className:"login-block",children:[(0,Ft.jsxs)("div",{className:"api-key-title",children:[H.\u63D2\u4EF6\u540D\u5B57," ID: ",e||"\u672A\u767B\u5F55"]}),(0,Ft.jsx)("div",{className:"logout-btn action-button",onClick:()=>{t()},children:e?h("Logout"):h("Login")})]})}var Tr=b(E(),1);var Te=b(S(),1);function Rr(e){let{state:t}=ge(D,["/comfyUserToken"]),{logout:r}=oe(),{workflowAgentSID:o,workflowAgent:n,comfyMultiUser:i}=A(),{resetWebview:s}=J(),[a,c]=(0,Tr.useState)(!1);if((0,Tr.useEffect)(()=>{if(!n){D.setComfyUserToken("");return}let u=(g,l)=>{let f=t?.comfyUserToken;D.setComfyUserToken(g),f==""&&a&&(s(),c(!1))};return n.subscribe("/comfyUserToken",u),u(n.data.comfyUserToken,""),()=>{n&&n.unsubscribe(u)}},[n,a,s]),!i)return null;if(!H.enableMU&&i)return(0,Te.jsxs)("div",{className:"login-block",children:[(0,Te.jsx)("div",{className:"login-title",children:h("Comfy multi-user: ")}),(0,Te.jsx)("div",{children:h("ComfyUI with --multi-user is only available for sponsors")})]});let p=n&&t?.comfyUserToken,d=t?.comfyUserToken?.split("_")[0]||"";return(0,Te.jsxs)("div",{className:"login-block",children:[(0,Te.jsx)("div",{className:`login-title${p?"":" login-title-secondary"}`,children:h("Comfy multi-user: ")+(p?d:"")}),p?(0,Te.jsx)("div",{className:"logout-btn action-button",onClick:()=>{r(o),c(!1)},children:h("Logout")}):(0,Te.jsx)("div",{className:"logout-btn action-button",onClick:()=>{c(!0),e.onRequestLogin?.()},children:h("Not Login")})]})}var Ve=b(S(),1);function Nr(){let{workflowAgent:e}=A(),{state:t}=ge(e,["/comfyOrgAPIKey","/comfyOrgLoggedIn"]),{setComfyOrgAPIKey:r}=oe();return t?t.comfyOrgLoggedIn&&!t.comfyOrgAPIKey?(0,Ve.jsxs)("div",{className:"login-block",children:[(0,Ve.jsx)("div",{className:"api-key-title",children:"ComfyOrg API Key"}),(0,Ve.jsx)("div",{children:h("Logged in by email/password")})]}):(0,Ve.jsxs)("div",{className:"login-block",children:[(0,Ve.jsx)("div",{className:"api-key-title",children:"ComfyOrg API Key"}),(0,Ve.jsx)("div",{className:"logout-btn action-button",onClick:()=>{let o=prompt(h("Please input API key (will reload Runner)"));o&&r(o)},children:h("Set API Key")})]}):null}var Or=b(S(),1),ea=({pageInstance:e})=>{let{autoRunning:t,workflowAgentSID:r,setWorkflowAgentSID:o}=A(),n=r==e.sid,i=t?.value==e.sid;return(0,Or.jsx)("div",{className:`agent-list-item${n?" selected":""}${n||i?" checked":""}`,onClick:()=>o(n?"":e.sid),children:(0,Or.jsxs)("span",{children:["\u25CF [",e.ssid,"] ",e.title]})})},yi=ea;var we=b(S(),1),wi=()=>{let{workflowAgentSID:e,setWorkflowAgentSID:t,backendURL:r}=A(),{webviewAgentSID:o}=J(),{pageInstances:n}=Ar(),{timeoutError:i}=J();return(0,we.jsxs)(we.Fragment,{children:[i?(0,we.jsx)("div",{className:"client-panel-title",children:h("Webview load timeout, please switch to a different runner")}):(0,we.jsxs)("div",{className:"client-panel-title",children:[h("Runner")," (",r,")"]}),(0,we.jsx)("sp-label",{children:h("Open ComfyUI in the browser to see more options")}),(0,we.jsxs)("div",{className:"agent-list",children:[(0,we.jsx)("div",{className:`agent-list-item${e==o?" selected":""}`,onClick:()=>t(o),children:(0,we.jsxs)("span",{children:["\u25CF ",h("PS Webview")]})}),n.map(s=>(0,we.jsx)(yi,{pageInstance:s},s.sid))]})]})};var Ee=b(S(),1);function vi({onRequestLogin:e}){let{timeoutError:t}=J(),{hasAuthingLogin:r}=ne();return(0,Ee.jsxs)("div",{className:"client-panel",children:[(!r||t)&&(0,Ee.jsx)(wi,{}),(0,Ee.jsxs)("div",{className:"app-login-container",children:[(0,Ee.jsx)("div",{className:"client-panel-title",children:h("Login/Auth")}),r&&(0,Ee.jsx)(gi,{}),(0,Ee.jsx)(Rr,{onRequestLogin:e}),(0,Ee.jsx)(Nr,{}),(0,Ee.jsxs)("sp-label",{children:["photoshop id: ",D.data.uname]})]})]})}var G=b(S(),1);function bi(){let{backendURL:e,setBackendURL:t,connectState:r,doConnectOrDisconnect:o}=A(),n=r==="connected"||r==="connecting"?{disabled:!0}:{};(0,Se.useEffect)(()=>{e&&r==="disconnected"&&setTimeout(()=>{o()},1e3)},[]);let i=(0,Se.useRef)(!1);return(0,Se.useEffect)(()=>()=>{i.current=!0},[]),(0,Se.useEffect)(()=>()=>{r==="connected"&&i.current&&o()},[r]),(0,G.jsxs)(G.Fragment,{children:[r==="connected"?(0,G.jsx)(ta,{}):(0,G.jsx)("sp-textfield",{id:"url-bar",label:"backendURL",onInput:s=>{t(s.currentTarget.value)},...n,value:e||"",placeholder:yr}),(0,G.jsx)("sp-action-button",{id:"connect-btn",onClick:()=>{o()},children:r!=="disconnected"?"\u2297":"\u2192"})]})}function ta(){let[e,t]=(0,Se.useState)(""),[r,o]=(0,Se.useState)(""),{workflowAgentSID:n}=Me(),{comfyMultiUser:i}=A(),{webviewAgentSID:s,timeoutError:a,loadError:c,toggleWebviewDialog:p}=J(),d=(0,Se.useRef)(null),{ssid:u,lastError:g,progress:l,executingNodeTitle:f,queueSize:m}=Lr(n),{loggedInUsername:y,hasAuthingLogin:v,isLogin:w}=ne(),P=n&&m?`(${m})`:"";(0,Se.useEffect)(()=>{n?n&&(f?t(`(${l}% - ${f}...)`):(t(""),o(""))):i&&!D.data.comfyUserToken?t(h("--multi-user Not Login!")):(a||c)&&o(h("Error: {0}",c||h("timeout")))},[n,g,l,f,a,c,i]);let I="";return s==n?I=h("PS Webview"):n&&u?I=h("Browser {0}",u):I=h("Loading..."),(0,G.jsxs)("div",{className:"connect-configuration",onClick:()=>{d.current?.show()},children:[(0,G.jsx)("dialog",{ref:d,style:{margin:"0",width:"480px",height:"540px",padding:"8px"},onClick:j=>{j.stopPropagation()},children:(0,G.jsx)(vi,{onRequestLogin:async()=>{d.current?.close(),await new Promise(j=>setTimeout(j,300)),p()}})}),(0,G.jsxs)("div",{className:"connect-config-content",children:[v?(0,G.jsxs)("span",{children:["\u7528\u6237\u540D\uFF1A",w?y:"\u672A\u767B\u5F55"]}):(0,G.jsxs)("span",{children:["\u23F5 ",h("Runner"),": ",I," ",P]}),r&&(0,G.jsx)("span",{className:"connect-config-error",children:r}),!r&&e&&(0,G.jsx)("span",{className:"connect-config-message",children:e})]}),(0,G.jsx)("div",{className:"connect-config-actions",children:(0,G.jsx)(Ut,{size:.8})}),l?(0,G.jsx)("div",{className:"connect-config-progress",style:{width:`${l}%`}}):""]})}var Di=b(E(),1);var qe=class{static makeDocumentDataOptions(t){let r=t.data,o=[`${C.getSpecialDocumentCurrent()}`];return Object.keys(r.documents).forEach(n=>{let i=r.documents[n];o.push(i.identify)}),o}static findDocumentData(t,r){let o=C.is_SPECIAL_DOCUMENT_CURRENT(r)?t.data.activeDocumentID:Oo(r).id;return t.data.documents[o]}static makeLayerOptions(t,r){return r.concat(t.layers.map(n=>n.identify))}static getLayerDirtyID(t,r){return t.layers.find(n=>n.identify===r)?.dirtyID||0}static getCanvasDirtyID(t){return t.canvasDirtyID||0}static getSelectionDirtyID(t){return t.selectionDirtyID||0}};var Pi=b(E(),1);var Si=b(E(),1);function Pe(e){return e=e||12,{flex:`${e} 0 calc(${e/12*100}% - 10px)`,maxWidth:"100%"}}var St=class extends Pi.Component{computeUIWeightCSS(t){return Pe(t)}};var ot=b(S(),1),Qe=class extends St{state={filter:""};handleSelectUpdate=(t,r)=>{this.props.onSelectUpdate(t,r),this.setState({filter:""})};render(){let{options:t,value:r,name:o}=this.props;return(0,ot.jsxs)("div",{style:{display:"flex",alignItems:"center",...this.computeUIWeightCSS(this.props.uiWeight)},children:[o&&(0,ot.jsx)("sp-label",{style:{flex:1},children:o}),(0,ot.jsx)("sp-picker",{class:"sdppp-dropdown-widget",size:"s",style:this.props.name?{flex:2}:{width:"100%"},children:(0,ot.jsx)("sp-menu",{slot:"options",children:t.map((n,i)=>this.state.filter&&!n.includes(this.state.filter)?"":(0,ot.jsx)("sp-menu-item",{...Wr(n)===Wr(r)?{selected:!0}:{},onClick:()=>this.handleSelectUpdate(n,i),children:Wr(n)},Wr(n)))})})]})}};function Wr(e){return typeof e=="string"?e:e.content}var Ci=b(S(),1),Mr=class e extends Di.default.Component{state={options:qe.makeDocumentDataOptions(D)};constructor(t){super(t),D.subscribe("/documents",this.updateOptions)}updateOptions=()=>{let t=qe.makeDocumentDataOptions(D);this.setState({options:t})};componentwillUnmount(){D.unsubscribe(this.updateOptions)}static getValueIfIsValidOptionOrCurrent(t,r){return!r||r.includes(t)?t:C.getSpecialDocumentCurrent()}static getDerivedStateFromProps(t,r){let o=t.value;if(o){let n=o.split("/"),i=e.getValueIfIsValidOptionOrCurrent(n.slice(1).join("/"),r.options);return C.is_SPECIAL_DOCUMENT_CURRENT(i)?o=C.getSpecialDocumentCurrent():o=i,n[0]!=D.data.uname&&t.onSelectUpdate(D.data.uname+"/"+o,0),Object.assign(r,{value:o})}return null}render(){let t=e.getValueIfIsValidOptionOrCurrent(this.props.value,this.state.options);return(0,Ci.jsx)(Qe,{uiWeight:this.props.uiWeight,options:this.state.options,onSelectUpdate:(r,o)=>{this.props.onSelectUpdate(D.data.uname+"/"+r,o)},value:t})}};var Ei=b(E(),1);var Ii=b(S(),1);function ve(e){return(0,Ii.jsx)("a",{onClick:e.onClick,children:e.label})}var Re=b(S(),1),Ge=class extends Ei.default.Component{state={options:[]};constructor(t){super(t),D.subscribe("/documents",this.updataOptionsAfterDocumentChange)}componentwillUnmount(){D.unsubscribe(this.updataOptionsAfterDocumentChange)}componentDidMount(){this.updateOptions(this.props.documentValue||C.getSpecialDocumentCurrent())}shouldComponentUpdate(t,r){return t.documentValue!=this.props.documentValue&&t.documentValue&&this.updateOptions(t.documentValue),!0}updataOptionsAfterDocumentChange=()=>{this.updateOptions(this.props.documentValue||C.getSpecialDocumentCurrent())};updateOptions=t=>{t=t||this.props.documentValue||C.getSpecialDocumentCurrent();let r=qe.findDocumentData(D,t);if(!r){this.setState({options:[]});return}let o=qe.makeLayerOptions(r,C.getSpecialLayerForGet());this.setState({options:o})};render(){let t=this.props.value;if(t)try{t=h(t)}catch{}return(0,Re.jsxs)("div",{className:"sdppp-layer-widget",style:Pe(this.props.uiWeight),children:[(0,Re.jsx)("div",{className:"sdppp-layer-widget-dropdown",children:(0,Re.jsx)(Qe,{uiWeight:12,options:this.state.options,onSelectUpdate:this.props.onSelectUpdate,value:t})}),(0,Re.jsxs)("div",{className:"sdppp-layer-widget-quick-set",children:[(0,Re.jsxs)("sp-label",{children:[h("Quick Set"),":"]}),(0,Re.jsx)(ve,{onClick:async()=>{let r=Je();this.props.onSelectUpdate(r,this.state.options.indexOf(r))},label:h("Selected Layer")}),(0,Re.jsx)(ve,{onClick:async()=>{this.props.onSelectUpdate(C.get_SPECIAL_LAYER_USE_CANVAS(),this.state.options.indexOf(C.get_SPECIAL_LAYER_USE_CANVAS()))},label:h("Canvas")})]})]})}};var qt=b(xt(),1),Pt=N("photoshop"),fe=b(E(),1);var Io=b(xt(),1),Ur=N("photoshop"),de=b(E(),1);var Bt=b(S(),1);function Vt({mode:e,setMode:t}){let r=o=>{t(o)};return(0,Bt.jsxs)("div",{className:"widget-mode-selection",children:[(0,Bt.jsx)("button",{className:`widget-mode-selection-button ${e==="manual"?"selected":""}`,onClick:()=>r("manual"),children:h("Manual")}),(0,Bt.jsx)("button",{className:`widget-mode-selection-button ${e==="auto"?"selected":""}`,onClick:()=>r("auto"),children:h("Auto")})]})}var le=b(S(),1);function Ai(e){let[t,r]=(0,de.useState)(""),[o,n]=(0,de.useState)(""),[i,s]=(0,de.useState)("manual"),[a,c]=(0,de.useState)(!1),[p,d]=(0,de.useState)(null),{backendURL:u}=A(),{uploadImage:g}=oe(),{addBeforeWorkflowRunHook:l}=yt(),f=(0,de.useRef)(null),m=(0,de.useCallback)(async()=>{if(i==="manual"&&!a&&p){await e.onValueChange(p);return}try{if(i==="auto"&&await v(t),f.current){let w=await f.current.getBuffer(Io.JimpMime.jpeg),P=await g(w,Ct(6)+".jpeg");P?.name&&(d(P.subfolder+"/"+P.name),c(!1),await e.onValueChange(P.subfolder+"/"+P.name))}}catch(w){console.error(w)}},[i,a,p,e.onValueChange]);(0,de.useEffect)(()=>{let P=l(m);return()=>{P()}},[m]);let y=o;if(!y&&(p||e.value)){let w=p||e.value,P=w.split("/").slice(0,-1).join("/");y=u+(u.endsWith("/")?"":"/")+`api/view?filename=${w}&type=input&subfolder=${P}&rand=`+Math.random()}let v=(0,de.useCallback)(async w=>{let P=await Eo(w);if(!P)return;f.current=P;let I=await ra(P);r(w),n(I),c(!0)},[]);return(0,le.jsxs)("div",{className:"image-widget",children:[(0,le.jsx)("div",{className:"image-widget-left",children:(0,le.jsx)("img",{src:y,className:"image-widget-image"+(y?"":" image-widget-image-empty")})}),(0,le.jsxs)("div",{className:"image-widget-right",children:[(0,le.jsx)(Vt,{mode:i,setMode:s}),i==="manual"&&(0,le.jsxs)("div",{className:"image-widget-more-quickset",children:[(0,le.jsx)("sp-label",{children:h("Set As:")}),(0,le.jsx)(ve,{onClick:()=>{v(Je())},label:h("Selected Layer")}),(0,le.jsx)(ve,{onClick:()=>{v(C.get_SPECIAL_LAYER_USE_CANVAS())},label:h("Canvas")})]}),i=="auto"&&(0,le.jsx)("div",{className:"image-widget-layer-widget-container",children:(0,le.jsx)(Ge,{onSelectUpdate:v,uiWeight:10,value:t})})]})]})}async function Eo(e){if(!Ur.app.activeDocument)return null;try{return await dr.getJimpImage({document_identify:Ae(Ur.app.activeDocument.id,Ur.app.activeDocument.name),layer_identify:e})}catch(t){throw console.error(t),t}}async function ra(e){let t=100/Math.max(e.width,e.height);return e=e.clone(),e.scale(t),await e.getBase64(Io.JimpMime.jpeg)}var Z=b(S(),1);function _i(e){let[t,r]=(0,fe.useState)(""),[o,n]=(0,fe.useState)(""),[i,s]=(0,fe.useState)("manual"),[a,c]=(0,fe.useState)(!1),[p,d]=(0,fe.useState)(null),{backendURL:u}=A(),{uploadImage:g}=oe(),{addBeforeWorkflowRunHook:l}=yt(),f=(0,fe.useRef)(null),m=(0,fe.useCallback)(async()=>{if(i==="manual"&&!a&&p){await e.onValueChange(p);return}try{if(i==="auto"&&await v(t),f.current){let w=await f.current.getBuffer(qt.JimpMime.png),P=await g(w,Ct(6)+".png");P?.name&&(d(P.subfolder+"/"+P.name),c(!1),await e.onValueChange(P.subfolder+"/"+P.name))}}catch(w){console.error(w)}},[i,a,p,e.onValueChange]);(0,fe.useEffect)(()=>{let w=l(m);return()=>{w()}},[m]);let y=o;if(!y&&(p||e.value)){let w=p||e.value,P=w.split("/").slice(0,-1).join("/");y=u+(u.endsWith("/")?"":"/")+`api/view?filename=${w}&type=input&subfolder=${P}&rand=`+Math.random()}let v=(0,fe.useCallback)(async(w,P=!1)=>{let I=await Eo(w);if(!I)return;P&&I.scan(0,0,I.bitmap.width,I.bitmap.height,function(be,ie,k){I.bitmap.data[k+3]=255-I.bitmap.data[k+3]}),f.current=I;let j=await Li(I);r(w),n(j),c(!0)},[]);return(0,Z.jsxs)("div",{className:"image-widget",children:[(0,Z.jsx)("div",{className:"image-widget-left",children:(0,Z.jsx)("img",{src:y,className:"image-widget-image"+(y?"":" image-widget-image-empty")})}),(0,Z.jsxs)("div",{className:"image-widget-right",children:[(0,Z.jsx)(Vt,{mode:i,setMode:w=>{s(w)}}),i==="manual"&&(0,Z.jsxs)("div",{className:"image-widget-more-quickset",children:[(0,Z.jsx)("sp-label",{children:h("Set As:")}),(0,Z.jsx)(ve,{onClick:()=>{v(Je(),!1)},label:h("Selected Layer")}),(0,Z.jsx)(ve,{onClick:async()=>{v(Je(),!0)},label:h("Selected Layer (invert)")}),(0,Z.jsx)(ve,{onClick:()=>{v(C.get_SPECIAL_LAYER_USE_CANVAS())},label:h("Canvas")}),(0,Z.jsx)(ve,{onClick:async()=>{let w=await oa();if(!w)return;f.current=w;let P=await Li(w);r(""),n(P),c(!0)},label:h("Selection")})]}),i==="auto"&&(0,Z.jsx)("div",{className:"image-widget-layer-widget-container",children:(0,Z.jsx)(Ge,{onSelectUpdate:w=>{v(w,!1)},uiWeight:12,value:t})})]})]})}async function oa(){if(!Pt.app.activeDocument)return null;try{let e=await Nt({document_identify:Ae(Pt.app.activeDocument.id,Pt.app.activeDocument.name),boundary:{left:0,top:0,right:0,bottom:0,width:Pt.app.activeDocument.width,height:Pt.app.activeDocument.height}});if(!e?.blob)return null;let t=e.blob,r=new Uint8Array(t.length*4);for(let o=0;oe.nodeIndexes.map(g=>{let l=e.nodes[g],f=(w,P,I)=>w.keepRender?P.outputType==="error"?(w.result.push((0,$.jsx)("span",{className:"list-error-label",children:t[l.id][I]})),w):(o?.(w,l,P,I),w):w,m=Object.values(e.groups).find(w=>w.nodeIDs.includes(l.id)),y=m?.color||"rgba(127, 127, 127, .4)";if(s&&m?.id!==s)return null;let v=l.uiWeightSum<=8&&l.widgets.length==1&&(l.widgets[0].outputType!=="number"||!e.extraOptions?.useSliderForNumberWidget);return(0,$.jsxs)("div",{className:"workflow-edit-field",children:[(0,$.jsx)("div",{className:"workflow-edit-field-title",title:l.title,style:{...Pe(v?4:12),borderColor:y},children:i?i(l.title,l):(0,$.jsx)("span",{children:l.title})}),l.widgets.reduce(f,{keepRender:!0,result:[]}).result.map((w,P)=>(0,$.jsx)(Ao,{children:w},P)),r[l.id]?(0,$.jsx)("span",{className:"list-error-label",children:r[l.id]}):""]},l.id)}).filter(Boolean),[e,t,r,o,n,i,s]),[p,d]=(0,nt.useMemo)(()=>[Object.keys(r).filter(g=>e.nodes[parseInt(g)]),Object.keys(r).filter(g=>!e.nodes[parseInt(g)])],[r,e]),u=null;return d.length>0?u=(0,$.jsx)("span",{className:"list-error-label",children:r[+d[0]]}):p.length>0&&(u=(0,$.jsx)("span",{className:"list-error-label",children:r[+p[0]]})),(0,$.jsxs)($.Fragment,{children:[u,Object.keys(e.nodes).length?"":(0,$.jsx)("span",{className:"list-error-label",children:h("no suitable node to control in this workflow")}),(0,$.jsx)("div",{className:"workflow-edit-content",children:c})]})}var Ao=class extends nt.default.Component{constructor(t){super(t),this.state={hasError:!1,error:null}}componentDidCatch(t,r){this.setState({hasError:!0,error:t})}render(){return this.state.hasError?(0,$.jsx)("span",{className:"list-error-label",children:this.state.error?.stack||this.state.error?.message||this.state.error?.toString()}):this.props.children}};var He=b(E(),1);var Ke=b(S(),1),ki=e=>{let{inputMin:t,inputMax:r,inputStep:o,value:n=0,onValueChange:i,name:s,uiWeight:a,extraOptions:c}=e,[p,d]=(0,He.useState)(+n.toFixed(3));(0,He.useEffect)(()=>{d(+n.toFixed(3))},[n]);let u=(0,He.useCallback)(m=>{let y=+m.target.value;d(+y.toFixed(3))},[]),g=(0,He.useCallback)(()=>{i(p)},[p,i]),l=(0,He.useCallback)(m=>{let y=+m.target.value;d(+y.toFixed(3)),i(+y.toFixed(3))},[p,i]);return!((r-t)/o>1e3)&&a&&a>=1&&c?.useSliderForNumberWidget?(0,Ke.jsxs)("div",{style:{...Pe(a),display:"flex",alignItems:"center"},children:[(0,Ke.jsx)("sp-slider",{style:{width:"60%"},min:t,max:r,step:o,value:p,onInput:l,"show-value":"false",class:"sdppp-slider"}),(0,Ke.jsx)("sp-textfield",{style:{width:"40%"},onInput:u,onBlur:g,value:p})]}):(0,Ke.jsxs)("div",{style:{...Pe(a),display:"flex",alignItems:"center"},children:[s&&(0,Ke.jsx)("sp-label",{style:{flex:"1"},children:s}),(0,Ke.jsx)("sp-textfield",{style:s?{flex:"2"}:{width:"100%"},onInput:u,onBlur:g,value:p})]})};var Y=b(E(),1);var Dt=b(S(),1);function xi(e){let t=Y.default.useRef(null),[r,o]=(0,Y.useState)(0),[n,i]=(0,Y.useState)(e.value??""),[s,a]=(0,Y.useState)(!1);return(0,Y.useEffect)(()=>{s||i(e.value??"")},[e.value]),(0,Y.useEffect)(()=>{let c=setInterval(()=>{if(t.current){let p=t.current.offsetHeight;p!==r&&o(p)}},16);return()=>clearInterval(c)},[r]),(0,Dt.jsxs)("div",{className:"widget-container",style:{...Pe(e.uiWeight),position:"relative",height:Math.max(55,r)},children:[(0,Dt.jsx)(na,{textAreaValue:n,setTextAreaValue:i,editing:s,setEditing:a,onValueChange:e.onValueChange,hiddenDivHeight:r}),(0,Dt.jsx)("p",{ref:t,style:{fontSize:14,visibility:"hidden",whiteSpace:"pre-line"},children:n})]})}function na({textAreaValue:e,onValueChange:t,editing:r,setEditing:o,setTextAreaValue:n,hiddenDivHeight:i}){let[s,a]=(0,Y.useState)(0),c=(0,Y.useCallback)(l=>{let f=l.target.value;t(f),n(f)},[t,n]),p=(0,Y.useCallback)(()=>{o(!0)},[o]),d=(0,Y.useCallback)(()=>{let l={textfieldRerender:s,editing:!1};s==2&&(l.textfieldRerender=1),a(l.textfieldRerender),o(l.editing)},[s,a,o]),[u,g]=(0,Y.useState)(i);return(0,Y.useEffect)(()=>{i!=u&&(a(r?2:1),g(i))},[i]),(0,Y.useEffect)(()=>{s==1&&Promise.resolve().then(async()=>{await new Promise(requestAnimationFrame),a(0)})},[s]),s==1?"":(0,Dt.jsx)("sp-textarea",{style:{position:"absolute",height:"100%",width:"100%",top:0,left:0},value:e,onInput:c,onFocus:p,onBlur:d})}var _o=b(S(),1),Fr=class extends St{onInput=t=>{let r=!!t.target.value;this.setState({value:r}),this.props.onValueChange(r)};render(){let t=this.props.value?{checked:!0}:{};return H.checkboxStyle==="div"?(0,_o.jsx)("div",{style:{...this.computeUIWeightCSS(this.props.uiWeight)},className:(t.checked?"active":"")+" sdppp-checkbox",onClick:r=>{this.props.onValueChange(!this.props.value)},children:this.props.name||""}):(0,_o.jsx)("sp-checkbox",{label:this.props.name||"",style:{...this.computeUIWeightCSS(this.props.uiWeight)},onInput:r=>{this.props.onValueChange(r.target.checked)},...t,children:this.props.name||""})}};function Ti(e){return e.replace(/^workflows\//,"").replace(/\.json$/,"").split("://").pop()}var ee=b(S(),1);function Ri(){let{callForPSDExtract:e}=oe(),{workflowAgent:t}=A(),{setWidgetValue:r}=ti(),{setShouldTriggerLivePainting:o}=Ir(),{state:n}=ge(t,["/widgetTableValue","/widgetTableStructure","/widgetTableErrors"]),i=!!t?.data.hasPSDNodes,s=(0,ko.useCallback)(async(u,g,l,f)=>{await r(u,g,l),o(!0)},[r,o]),a=n?.widgetTableStructure,c=n?.widgetTableValue,p=n?.widgetTableErrors,d=(0,ko.useCallback)((u,g,l,f)=>{if(l.outputType=="PS_DOCUMENT")return u.result.push((0,ee.jsx)(Mr,{uiWeight:l.uiWeight||12,value:c?.[g.id]?.[f]||"",onSelectUpdate:m=>{s(g.id,f,m,g)},extraOptions:a?.extraOptions},f)),!0;if(l.outputType=="PS_LAYER"){let m=l.options?.documentNodeID||0,y=c?.[m]?.[0]||"";return u.result.push((0,ee.jsx)(Ge,{uiWeight:l.uiWeight||12,value:c?.[g.id]?.[f]||"",documentValue:y?y.split("/").pop():"",onSelectUpdate:v=>{s(g.id,f,v,g)},extraOptions:a?.extraOptions},f)),!0}else{if(l.outputType=="IMAGE_PATH")return u.result.push((0,ee.jsx)(Ai,{uiWeight:l.uiWeight||12,value:c?.[g.id]?.[f]||"",onValueChange:async m=>{await s(g.id,f,m,g)},extraOptions:a?.extraOptions},f)),!0;if(l.outputType=="MASK_PATH")return u.result.push((0,ee.jsx)(_i,{uiWeight:l.uiWeight||12,value:c?.[g.id]?.[f]||"",onValueChange:async m=>{await s(g.id,f,m,g)},extraOptions:a?.extraOptions},f)),!0;if(l.outputType==="number"){let m=l.options?.min??0,y=l.options?.max??100,v=l.options?.step??1;u.result.push((0,ee.jsx)(ki,{uiWeight:l.uiWeight||12,name:l.name,inputMin:m,inputMax:y,inputStep:v,value:parseFloat(c?.[g.id]?.[f]||"0"),onValueChange:w=>{s(g.id,f,w,g)},extraOptions:a?.extraOptions},f))}else if(l.outputType==="combo")u.result.push((0,ee.jsx)(Qe,{uiWeight:l.uiWeight||12,name:l.name,options:l.options?.values||[],onSelectUpdate:m=>{s(g.id,f,m,g)},value:c?.[g.id]?.[f]||"",extraOptions:a?.extraOptions},f));else if(l.outputType==="toggle")u.result.push((0,ee.jsx)(Fr,{uiWeight:l.uiWeight||12,name:l.name,value:c?.[g.id]?.[f]||"",onValueChange:m=>{s(g.id,f,m,g)},extraOptions:a?.extraOptions},f));else{let m=c?.[g.id]?.[f]||"";u.result.push((0,ee.jsx)(xi,{uiWeight:l.uiWeight||12,value:typeof m=="string"?m:JSON.stringify(m),onValueChange:y=>{s(g.id,f,y,g)},extraOptions:a?.extraOptions},f))}}return!1},[r,c]);return a?(0,ee.jsxs)("div",{className:"workflow-edit",children:[(0,ee.jsxs)("div",{className:"workflow-edit-title",children:[a.widgetTablePath&&(0,ee.jsx)("sp-label",{style:{fontWeight:"bold"},children:Ti(a.widgetTablePath)}),i?(0,ee.jsx)("a",{onClick:()=>{e(t?.data.sid||"").catch(u=>{alert(u.message)})},children:">"+h("sample .psd")}):""]}),(0,ee.jsx)(Lo,{widgetTableStructure:a,widgetTableValue:c||{},widgetTableErrors:p||{},onWidgetChange:s,onWidgetRender:d})]}):null}var Br=b(E(),1);var q=b(S(),1);function Ni(){let{login:e,loginStyle:t,loginBannerTop:r,loginBannerBottom:o,setIsTrialing:n}=ne(),[i,s]=(0,Br.useState)(localStorage.getItem("last-username")||""),[a,c]=(0,Br.useState)(""),[p,d]=(0,Br.useState)("");return(0,q.jsxs)("div",{className:"login-container",children:[r,(0,q.jsx)("div",{className:"login-container-login",children:(0,q.jsxs)("div",{className:"login-form",children:[t==="invitation"?(0,q.jsxs)("div",{className:"login-form-item",children:[(0,q.jsx)("label",{htmlFor:"username",children:h("Invitation Code")}),(0,q.jsx)("sp-textfield",{type:"text",id:"username",placeholder:h("Please input invitation code"),value:i,onInput:u=>s(u.target.value)})]}):(0,q.jsxs)(q.Fragment,{children:[(0,q.jsxs)("div",{className:"login-form-item",children:[(0,q.jsx)("label",{htmlFor:"username",children:h("Username")}),(0,q.jsx)("sp-textfield",{type:"text",id:"username",placeholder:h("Please input username"),value:i,onInput:u=>s(u.target.value)})]}),(0,q.jsxs)("div",{className:"login-form-item",children:[(0,q.jsx)("label",{htmlFor:"password",children:h("Password")}),(0,q.jsx)("sp-textfield",{type:"password",id:"password",placeholder:h("Please input password"),value:a,onInput:u=>c(u.target.value)})]})]}),(0,q.jsx)("div",{className:"login-error-message",children:p}),(0,q.jsx)("button",{className:"login-button",onClick:async()=>{let u=await e(i,a);u.success?(d(""),localStorage.setItem("last-username",i)):d(u.message)},children:h("Login")}),t==="trialable-password"&&(0,q.jsx)("a",{className:"trial-button",onClick:()=>n(!0),children:"\u6E38\u5BA2\u8BD5\u7528"})]})}),o]})}var ze=b(S(),1);function Oi({renderContent:e}){let{connectState:t}=A(),{isLogin:r,isTrialing:o}=ne();return(0,ze.jsxs)("div",{className:"sdppp-container",style:t!=="connected"?{height:"100vh"}:{},children:[(0,ze.jsx)(rt,{children:r||o?e(t,bi,Ri):(0,ze.jsx)(Ni,{})}),t!="connected"&&(0,ze.jsx)(mi,{}),o&&(0,ze.jsx)("div",{className:"sdppp-trial-tips",children:(0,ze.jsx)("span",{children:"\u6E38\u5BA2\u8BD5\u7528\u4E2D\uFF0C\u767B\u9646\u89E3\u9501\u66F4\u591A\u529F\u80FD"})})]})}var Wi=b(E(),1);var it=b(S(),1);function Mi(){let e=A(),{toggleWebviewDialog:t}=J(),r=(0,Wi.useCallback)(()=>{t()},[t]);return(0,it.jsx)("div",{className:"auths-bar",children:(0,it.jsx)("div",{className:"identifier-bar",children:(0,it.jsxs)("div",{className:"identifier-bar-left",children:[(0,it.jsx)(Nr,{}),e.comfyMultiUser&&(0,it.jsx)(Rr,{onRequestLogin:r})]})})})}var Qt=b(E(),1),Ui=b(E(),1),Fi=N("uxp"),xo=b(S(),1);function Bi(){let e=document.getElementById("color_computer")?.style.color||"#777",{data:t,isLoading:r}=xr(),o=(0,Qt.useRef)(null),[n,i]=(0,Qt.useState)(!1),[s,a]=(0,Qt.useState)(!1);if((0,Ui.useEffect)(()=>{o.current&&(r||s||(a(!0),o.current.addEventListener("loadstop",d=>{d.target.postMessage({action:"init",payload:{color:e,cloud:p}})}),o.current.addEventListener("loaderror",d=>{i(!0)}),o.current.addEventListener("message",d=>{let u=d.message;if(!u)return;let g=JSON.parse(u);g.action==="open"&&Fi.shell.openExternal(g.payload.url)})))},[o,r]),r||n)return(0,xo.jsx)("div",{style:{height:"8px"}});let c="./promote.html?color="+e,p=t.cloud[je()=="zhcn"?"zhcn":"en"];return p.length==0?null:(0,xo.jsx)("webview",{ref:o,className:"promote-webview",style:{width:"100%",height:"24px"},src:c})}Object.assign(globalThis,{SDPPPInternal:To});})(); /*! Bundled license information: fast-json-patch/module/helpers.mjs: diff --git a/plugins/photoshop/manifest.json b/plugins/photoshop/manifest.json index 1b2aef5..6ae494e 100644 --- a/plugins/photoshop/manifest.json +++ b/plugins/photoshop/manifest.json @@ -1,7 +1,7 @@ { "id": "sd-ppp", "name": "SD-PPP", - "version": "1.8.4", + "version": "1.8.5", "main": "index.html", "manifestVersion": 5, "host": { @@ -38,7 +38,7 @@ "type": "panel", "id": "sdppp-connect", "label": { - "default": "SD-PPP 1.8.4" + "default": "SD-PPP 1.8.5" }, "minimumSize": { "width": 300, diff --git a/pyproject.toml b/pyproject.toml index 39c553a..43a31b6 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,7 +1,7 @@ [project] name = "sd-ppp" description = "getting/sending picture from/to Photoshop with a simple connection. Make Photoshop become the workspace of your ComfyUI." -version = "1.8.4" +version = "1.8.5" license = { file = "LICENSE" } [project.urls] diff --git a/static/sd-ppp_PS.ccx b/static/sd-ppp_PS.ccx index 1190f978323291d023f834aae8059f04e9acd581..667a4f6d3d4887b3cf77c70575a295160fbdd661 100644 GIT binary patch delta 42828 zcmYIvQ*@wBux*@7Y}?kvHYT>6%*5sdUu@g9?M!Ujwr$=2ocnNk^?uo1RZm^$wRR^a z6K^LIBPhy%L%@Rk&w?o)ibKGKj@=hAFU1s(W5fmjA4Z1!f0;5&@j6##c<>*^LkVT@ zc+heGXGK~&l5he~37wN7ZVnnK9)N)mf`I_~AHet2Sf^vt;R9dp;KR=-lE3G7MN!?DU8dQH) z*$lS_vGT85qkfoG4B=?7-HQyZq9UF^PW1(42w%wxAL9oj>q{MbV&nv582N4fz=S4* zRt)hVyqQY4k8ZM;J#;k(rK`#TUp2&?Vtv$gbMD{?02q_kCbXu*YYQ0A74k|VXkq@G z9X_KZHfEJw7808yOr?8Rjll8XqhjG@)FZjNQA}y~?1ozpRP~G&0>s=iH%iv6C0%J< zy*SYE3QP^p{(Rn3GarPvAUhMVbu9WA%;muNO!}dyuVD5BnB-mdIYU5x0WTu+dD~5G z?FFALKtjiJGhO`R$1G`&D}fxb^y3)iKJRf-1xg+zjlX{fy6v60X4HGrEP1LbEkhY* zDQ{Gxy$rG=v1L5DoEzmM=kH7;ld2`{F*zQi$b)w=VQ{-I8}dy^~p{`#bcL*chLJxx@{%50B0oEpvAP7*oZj-UY9aSkA0DkIE22& zebOF_{JlVXk`s47H_$X$oIVmoT&rECstHfd!5P9y`}q1^#aO5IK-K#0g1hg){eXu; zo`Z-QMzv&PtDc={RhQYWv^aeZ0*fepI0o%%Tt#T-K-8~yEY{Dz(c5l14M93 zT!f|e8yR6NGM6ApqUPI)$^RqH{9_j&NhT{?ESmoB$dj1-`NWl-NhJQih@JmA9EnTa zkxJ|#)7mTl2`rp~k@om+Q;Xi`H?b9Z%(CLnb!uZZh93>iOT#=a#|~L!p~Sb|YMw_b z`X#)Rl0S<}T>%lX8*Y3{JYLD-<-Tb4S(kE&@6Hu}$6CtjTPGH{u2wyJDcP1HAYgxRmuNR*y*vE!y7v=(10O zJ)zP7F9>Cjia1s$=C3AuvOB-3xp<>Q|2&L;{c+Uuae0hZtgh9-+$3Kx&)iF%jHkK3 zx*5nY8?#QT>lf5N#rcluBzpAqJEA~D#YZFcuUm>fRMt?RG1j9@iGIVjd(<0H)Wdll zy(y>@2N*dagtz--bZhn>DR8uUSnzTf$eI^!c`m%z&fN10bq-Ynzpn`JZN`y)-g;FTgIGnR*Ews^~! zb7j~Xkw?ED;e>zMGyKCjjz!KL&FerP%xu>64%pM5G38P)7A@7Ofy!JF zKHau>_~%svnU-!8B(UysDezz3i0#C@1zhsR?#V$)i(!fg^o9S4eS5(Xb5^ztg=16% zGjN05C^i$X6yj{~Fl6Es%&CR`~Z0xP7gc&|~iU)8NE;{lJjTyr_%4h>J~B zu}B!mz_U5X#Rmx`VbdbK8$i3> zBA*@7X+;)Qb0)@6Bg{gb^aK!W9!A%=2xwXRR4w{mpm;2_rP$RVpQVf~Glz!O1OJTI zFQ7J0+~RoNv%E-OGH^H7r3dV3o_gadaK{RYBo*b%SKxb{k{n`Ao0ZQ)a!K2|CF^Li z^0gIuOy~8+q0>MZ1wF48`D3vw0e_$Uu&?4BTx}nk+P_7JyWih%vc5Lmwo#sv4{bR> zpjqt?WtQ+c@oqfqxjy2X(z7_cT(uEM9YPO&PDp_Z{(GE_=qQnMtn1&C4!Dz13F@5tjvNFdN0^EfeR78p1 zCJu${lVsN^RgigtKiFnR@=|whk?umf2Vd>(-|NO{R8LKXXz({Y_&QaJQg&KaslMd$I{r*w}LdjW2Nw`o#hrjCzs*NsNEe^r7CtEA-0naBUBt z`ee>LwC~pLJ^^|qaMqZOd6;@#uPWr3B@AsTn_JPEcgiOiW)f%_2x$D8y<;8wtr+tu zYhRj3^6xdN*sgCQU zuhsPBkb}*gW$2VNLJWq#*>96>!nJN>nBoQ>UWYVj+t{|yUGr@o+CxsF)V+jbX!_PZ zFr{%@OeX)2X}F)~Y%+%!!OdEq!)!>?5C}_FzvCMzS=8;nNPx$~`WsOo^QEqL-<)A{ z#N_u$ARWYm%!`?~uMv`)ZINZIdR=k_EB>swW#3TMu2I&F`8QN>EMKr{qqBHRGiWgG}Qj}*3&4_Sc=RLQ2$g@j_odtg(!TceFH>1p5qII3SK3t{57IL?rT0IFyy@yT1DvDu`jN_m_=d!)|g8JOE zU{*58k>_1!jiqtX(Ao9tz|SgxF2cO0$Q_4Kk`Y=v&n5jrfX_3@PFeyFOw(Gp2vKfuJ zP}4uXJRs#?5_E7#lOI8wVAB@P2IZ`_=Aodn0k{~(jNDOdg@<)dc}4*(N=KJ$mI(3o zFLs^U=jF}CKfMsY9d5=I3XpPIZndW{IEZ4Rd0luFAmqFK0$<%lbIV`;3JbT z321R;2%@fCBJrl%f>8$cZ;WOLaoX^ikF5EmFxBK}>x(iqKTzdqR*b_+7cG`YHJY=k zEQ+kT^0lQKL6%l)|IO@u1AV^y1cYUds|Zy|=4~n?w-#D=9tc-s7+XYM{MYj8WQ9_G zMdnntKxXj;}iDBw5>zt6W4w164HQd;*!ERZU*(#M7xQ z#496#lL=zcF^`*N?6xM@^NXVzlx%Auv$8c`HKc>f5Z{(%q`8hKDp{qh`KG{B8>q{Y z&B9pwbD4Q2pZm+8+D7f~#pR|MuHnxJrs0;quU@p0xO(=z!kfoDUa@6VEQtgMeHAuf z3mxfKd}9TI@>GNBhb{cfFuR?B5#)KBgUhHP`%^#iGJ|rqMhcoG76RRh`e6;4I!v%n zzNS8;DB>IeFgcHq-(vO|3YeXJf&e&ccd4*OHgZk3eob{6qBD5igphbmE*_BE!vvd0 z_M(Oeh5d3Y;bGb{{abHIpO{}MAh>$YAOp-aXb5Y>8RdqVx@oac>x%z@^rh?HdHSzI zFT!45p-z*l>v^&Em~A*5B11**={$$tcP;%{jAnMiol1d$3lhoH{#zrNZJlk`3U3h` zaUVc9bxyWw_L2<%jpOGo-PghFB#Po7#!n(nWVkoZK1Seywoukbyqh4cQOP-j_F=;N zAhJ?eTjZ#}cz&is&+)*agE0ZuXP&jMt#e8xhxZ$GOd&RgA_bZTon-Y?`hrwO1L