From e9ef9eb5aee86fbb01bb0029239942714ec6f72e Mon Sep 17 00:00:00 2001 From: koaning Date: Tue, 24 Mar 2026 14:52:01 +0100 Subject: [PATCH 1/4] we need a new paint widget --- examples/zooming.py | 162 ++++++++++++++++++++++++++++++++++++ js/paint/widget.tsx | 47 +++++------ wigglystuff/paint.py | 21 +++-- wigglystuff/static/paint.js | 10 +-- 4 files changed, 202 insertions(+), 38 deletions(-) create mode 100644 examples/zooming.py diff --git a/examples/zooming.py b/examples/zooming.py new file mode 100644 index 00000000..4021b412 --- /dev/null +++ b/examples/zooming.py @@ -0,0 +1,162 @@ +# /// script +# dependencies = [ +# "marimo", +# "mohtml==0.1.11", +# "numpy==2.4.3", +# "pillow==12.1.1", +# "scipy==1.17.1", +# "wigglystuff==0.2.40", +# ] +# requires-python = ">=3.12" +# /// + +import marimo + +__generated_with = "0.21.1" +app = marimo.App(width="columns", sql_output="polars") + + +@app.cell +def _(): + import marimo as mo + import numpy as np + import io + from PIL import Image, ImageDraw + from scipy.ndimage import map_coordinates + + return Image, ImageDraw, io, map_coordinates, mo, np + + +@app.cell +def _(Image, ImageDraw, io): + def get_source_image(file_list): + # Check if a file was actually uploaded + if file_list: + try: + # upload.value is a list of marimo.ui.file.File objects + # .contents contains the raw bytes + return Image.open(io.BytesIO(file_list[0].contents)).convert("RGB") + except Exception as e: + return None + + # Fallback Placeholder: A "Frame" to make alignment obvious + img = Image.new("RGB", (600, 600), "#fdfcf0") + draw = ImageDraw.Draw(img) + # Outer black border + draw.rectangle([0, 0, 599, 599], outline="black", width=30) + # Inner red border (The "Target" for the loop) + draw.rectangle([200, 200, 400, 400], outline="#e74c3c", width=15) + draw.text((260, 40), "OUTER", fill="black") + draw.text((265, 220), "INNER", fill="#e74c3c") + return img + + return (get_source_image,) + + +@app.cell +def _(mo): + upload = mo.ui.file(kind="button", label="Upload Screenshot") + c_re = mo.ui.slider(0.1, 7.0, step=0.01, value=1.0, label="Scale ($c_{re}$)") + c_im = mo.ui.slider(-7.0, 7.0, step=0.01, value=0.0, label="Twist ($c_{im}$)") + zoom = mo.ui.slider(0.0, 10.0, step=0.01, value=0.0, label="Zoom Depth") + view_mode = mo.ui.radio(["Spiral Space", "Log Space"], value="Spiral Space", label="View") + return c_im, c_re, upload, view_mode, zoom + + +@app.cell +def _(): + from wigglystuff import Paint + + return (Paint,) + + +@app.cell +def _(Image, map_coordinates, mo, np): + @mo.cache + def apply_droste(img, cr, ci, z_shift, mode): + # Convert image to numpy array for math + arr = np.array(img) + h, w, _ = arr.shape + + # Generate pixel grid in normalized coordinates [-1, 1] + y, x = np.indices((h, w)) + u, v = (x - w / 2) / (w / 2), (y - h / 2) / (h / 2) + + # 1. Map to Log-Polar Space (The Top-Middle Image in the video) + # r_log is ln(radius), theta is the angle + r_log = 0.5 * np.log(u**2 + v**2 + 1e-9) + theta = np.arctan2(v, u) + + # Add the Zoom Shift (traveling through the log-radius) + r_log += z_shift * 2.0 + + # 2. Apply Linear Transformation: f(z) = c * z + # This creates the spiral/scaling effect + z_real = cr * r_log - ci * theta + z_imag = ci * r_log + cr * theta + + if mode == "Log Space": + # Visualize the repeating grid + map_x = (z_real * (w / 4)) % w + map_y = (z_imag / (2 * np.pi) * h) % h + else: + # 3. Map back to Cartesian with Periodic Tiling + # Modulo on log-radius creates the infinite nesting + # We use % 1.0 to snap back to the outer frame once we hit the inner + r_final = np.exp(z_real % 1.0) + theta_final = z_imag + + map_x = (r_final * np.cos(theta_final) + 1) / 2 * w + map_y = (r_final * np.sin(theta_final) + 1) / 2 * h + + # 4. Resample pixels using interpolation for all 3 RGB channels + output_channels = [] + for i in range(3): + ch = map_coordinates(arr[..., i], [map_y % h, map_x % w], order=1) + output_channels.append(ch) + + return Image.fromarray(np.stack(output_channels, axis=-1)) + + return (apply_droste,) + + +@app.cell +def _(apply_droste, c_im, c_re, mo, paint, upload, view_mode, zoom): + src_img = paint.get_pil() + res_img = apply_droste(src_img, c_re.value, c_im.value, zoom.value, view_mode.value) + + mo.md( + f""" + # 3Blue1Brown Droste Simulator + {upload}""" + ) + return res_img, src_img + + +@app.cell +def _(Paint, get_source_image, mo, upload): + _src_img = get_source_image(upload.value) + paint = mo.ui.anywidget(Paint(init_image=_src_img)) + paint + return (paint,) + + +@app.cell +def _(c_im, c_re, mo, view_mode, zoom): + mo.hstack([c_re, c_im, zoom, view_mode], justify="start") + return + + +@app.cell +def _(mo, res_img, src_img): + mo.hstack([src_img, res_img], justify="start") + return + + +@app.cell +def _(): + return + + +if __name__ == "__main__": + app.run() diff --git a/js/paint/widget.tsx b/js/paint/widget.tsx index 490f5b73..298cd519 100644 --- a/js/paint/widget.tsx +++ b/js/paint/widget.tsx @@ -30,6 +30,7 @@ const colors = [ // Constants for canvas settings const MAX_CANVAS_DIMENSION = 4096; // Most browsers support up to 4096x4096 + function Component() { const drawingCanvasRef = useRef(null); const containerRef = useRef(null); @@ -96,29 +97,23 @@ function Component() { let newWidth = container.clientWidth; let newHeight = container.clientHeight; - - // If we have an original image, use its dimensions to maintain aspect ratio - // and prevent scaling distortion - if (originalImageRef.current) { - // For images, we want to maintain the original dimensions - // Width can be responsive to container, but height should match image proportions + + // When an image is loaded, fit the canvas to the image's aspect ratio + // so there's no dead space around it. + // Use base64 (model state) rather than originalImageRef which may not be set yet on mount. + const imageData = originalImageRef.current || base64; + if (imageData) { const img = new Image(); img.onload = () => { - const imageAspectRatio = img.width / img.height; - const containerAspectRatio = newWidth / newHeight; - - // Preserve original image dimensions - don't scale the image - // Instead, adjust canvas to accommodate the image - newWidth = Math.min(newWidth, img.width); - newHeight = img.height; - - if (syncCanvasSizes(newWidth, newHeight)) { - setCanvasSize({ width: newWidth, height: newHeight }); + const scale = Math.min(newWidth / img.width, newHeight / img.height); + const fitWidth = Math.round(img.width * scale); + const fitHeight = Math.round(img.height * scale); + if (syncCanvasSizes(fitWidth, fitHeight)) { + setCanvasSize({ width: fitWidth, height: fitHeight }); } }; - img.src = `data:image/png;base64,${originalImageRef.current}`; + img.src = `data:image/png;base64,${imageData}`; } else { - // No original image, use container dimensions as before if (syncCanvasSizes(newWidth, newHeight)) { setCanvasSize({ width: newWidth, height: newHeight }); } @@ -290,9 +285,9 @@ function Component() { img.onload = () => { drawingContext.clearRect(0, 0, canvas.width, canvas.height); - // Draw image at original size (no scaling) - preserve image dimensions - drawingContext.drawImage(img, 0, 0, img.width, img.height); - + // Draw image to fill the canvas (canvas is already fitted to image aspect ratio) + drawingContext.drawImage(img, 0, 0, canvas.width, canvas.height); + lastLoadedBase64Ref.current = base64; isLoadingInitialImageRef.current = false; }; @@ -501,8 +496,8 @@ function Component() { const img = new Image(); img.onload = () => { - // Draw image at original size (no scaling) - drawingContext.drawImage(img, 0, 0, img.width, img.height); + // Draw image to fill the canvas (canvas is already fitted to image aspect ratio) + drawingContext.drawImage(img, 0, 0, drawingCanvas.width, drawingCanvas.height); // Clear loading flag isLoadingInitialImageRef.current = false; // Trigger export after restoring @@ -534,15 +529,15 @@ function Component() { {/* Canvas area */} -
+
{/* Drawing canvas */} 0.01: + warnings.warn( + f"Specified dimensions ({width}x{height}) have a different aspect ratio " + f"than the image ({image_width}x{image_height}). Image will be scaled to fit." + ) + elif user_provided_width: + self.width = width + self.height = int(width / aspect_ratio) + elif user_provided_height: self.height = height self.width = int(height * aspect_ratio) else: diff --git a/wigglystuff/static/paint.js b/wigglystuff/static/paint.js index 0a2020f1..c4e1c640 100644 --- a/wigglystuff/static/paint.js +++ b/wigglystuff/static/paint.js @@ -1,12 +1,12 @@ -var yd=Object.create;var pf=Object.defineProperty;var rd=Object.getOwnPropertyDescriptor;var md=Object.getOwnPropertyNames;var gd=Object.getPrototypeOf,Sd=Object.prototype.hasOwnProperty;var Ut=(l,t)=>()=>(t||l((t={exports:{}}).exports,t),t.exports);var bd=(l,t,u,a)=>{if(t&&typeof t=="object"||typeof t=="function")for(let e of md(t))!Sd.call(l,e)&&e!==u&&pf(l,e,{get:()=>t[e],enumerable:!(a=rd(t,e))||a.enumerable});return l};var Fn=(l,t,u)=>(u=l!=null?yd(gd(l)):{},bd(t||!l||!l.__esModule?pf(u,"default",{value:l,enumerable:!0}):u,l));var jf=Ut(H=>{"use strict";var Pn=Symbol.for("react.transitional.element"),Ed=Symbol.for("react.portal"),Td=Symbol.for("react.fragment"),zd=Symbol.for("react.strict_mode"),Ad=Symbol.for("react.profiler"),Md=Symbol.for("react.consumer"),Od=Symbol.for("react.context"),Dd=Symbol.for("react.forward_ref"),_d=Symbol.for("react.suspense"),Ud=Symbol.for("react.memo"),Cf=Symbol.for("react.lazy"),Nf=Symbol.iterator;function Hd(l){return l===null||typeof l!="object"?null:(l=Nf&&l[Nf]||l["@@iterator"],typeof l=="function"?l:null)}var xf={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},Xf=Object.assign,Gf={};function _u(l,t,u){this.props=l,this.context=t,this.refs=Gf,this.updater=u||xf}_u.prototype.isReactComponent={};_u.prototype.setState=function(l,t){if(typeof l!="object"&&typeof l!="function"&&l!=null)throw Error("takes an object of state variables to update or a function which returns an object of state variables.");this.updater.enqueueSetState(this,l,t,"setState")};_u.prototype.forceUpdate=function(l){this.updater.enqueueForceUpdate(this,l,"forceUpdate")};function Qf(){}Qf.prototype=_u.prototype;function In(l,t,u){this.props=l,this.context=t,this.refs=Gf,this.updater=u||xf}var lc=In.prototype=new Qf;lc.constructor=In;Xf(lc,_u.prototype);lc.isPureReactComponent=!0;var Rf=Array.isArray,k={H:null,A:null,T:null,S:null},Zf=Object.prototype.hasOwnProperty;function tc(l,t,u,a,e,n){return u=n.ref,{$$typeof:Pn,type:l,key:t,ref:u!==void 0?u:null,props:n}}function pd(l,t){return tc(l.type,t,void 0,void 0,void 0,l.props)}function uc(l){return typeof l=="object"&&l!==null&&l.$$typeof===Pn}function Nd(l){var t={"=":"=0",":":"=2"};return"$"+l.replace(/[=:]/g,function(u){return t[u]})}var Bf=/\/+/g;function $n(l,t){return typeof l=="object"&&l!==null&&l.key!=null?Nd(""+l.key):t.toString(36)}function qf(){}function Rd(l){switch(l.status){case"fulfilled":return l.value;case"rejected":throw l.reason;default:switch(typeof l.status=="string"?l.then(qf,qf):(l.status="pending",l.then(function(t){l.status==="pending"&&(l.status="fulfilled",l.value=t)},function(t){l.status==="pending"&&(l.status="rejected",l.reason=t)})),l.status){case"fulfilled":return l.value;case"rejected":throw l.reason}}throw l}function Du(l,t,u,a,e){var n=typeof l;(n==="undefined"||n==="boolean")&&(l=null);var c=!1;if(l===null)c=!0;else switch(n){case"bigint":case"string":case"number":c=!0;break;case"object":switch(l.$$typeof){case Pn:case Ed:c=!0;break;case Cf:return c=l._init,Du(c(l._payload),t,u,a,e)}}if(c)return e=e(l),c=a===""?"."+$n(l,0):a,Rf(e)?(u="",c!=null&&(u=c.replace(Bf,"$&/")+"/"),Du(e,t,u,"",function(o){return o})):e!=null&&(uc(e)&&(e=pd(e,u+(e.key==null||l&&l.key===e.key?"":(""+e.key).replace(Bf,"$&/")+"/")+c)),t.push(e)),1;c=0;var i=a===""?".":a+":";if(Rf(l))for(var f=0;f{"use strict";Lf.exports=jf()});var If=Ut(G=>{"use strict";function cc(l,t){var u=l.length;l.push(t);l:for(;0>>1,e=l[a];if(0>>1;aze(i,u))fze(o,i)?(l[a]=o,l[f]=u,a=f):(l[a]=i,l[c]=u,a=c);else if(fze(o,u))l[a]=o,l[f]=u,a=f;else break l}}return t}function ze(l,t){var u=l.sortIndex-t.sortIndex;return u!==0?u:l.id-t.id}G.unstable_now=void 0;typeof performance=="object"&&typeof performance.now=="function"?(Vf=performance,G.unstable_now=function(){return Vf.now()}):(ac=Date,Kf=ac.now(),G.unstable_now=function(){return ac.now()-Kf});var Vf,ac,Kf,lt=[],Ht=[],Yd=1,Yl=null,ml=3,Oe=!1,tu=!1,ma=!1,Wf=typeof setTimeout=="function"?setTimeout:null,kf=typeof clearTimeout=="function"?clearTimeout:null,wf=typeof setImmediate<"u"?setImmediate:null;function Ae(l){for(var t=kl(Ht);t!==null;){if(t.callback===null)Me(Ht);else if(t.startTime<=l)Me(Ht),t.sortIndex=t.expirationTime,cc(lt,t);else break;t=kl(Ht)}}function ic(l){if(ma=!1,Ae(l),!tu)if(kl(lt)!==null)tu=!0,fc();else{var t=kl(Ht);t!==null&&sc(ic,t.startTime-l)}}var De=!1,ga=-1,Ff=5,$f=-1;function Pf(){return!(G.unstable_now()-$fl&&Pf());){var a=Yl.callback;if(typeof a=="function"){Yl.callback=null,ml=Yl.priorityLevel;var e=a(Yl.expirationTime<=l);if(l=G.unstable_now(),typeof e=="function"){Yl.callback=e,Ae(l),t=!0;break t}Yl===kl(lt)&&Me(lt),Ae(l)}else Me(lt);Yl=kl(lt)}if(Yl!==null)t=!0;else{var n=kl(Ht);n!==null&&sc(ic,n.startTime-l),t=!1}}break l}finally{Yl=null,ml=u,Oe=!1}t=void 0}}finally{t?ra():De=!1}}}var ra;typeof wf=="function"?ra=function(){wf(ec)}:typeof MessageChannel<"u"?(nc=new MessageChannel,Jf=nc.port2,nc.port1.onmessage=ec,ra=function(){Jf.postMessage(null)}):ra=function(){Wf(ec,0)};var nc,Jf;function fc(){De||(De=!0,ra())}function sc(l,t){ga=Wf(function(){l(G.unstable_now())},t)}G.unstable_IdlePriority=5;G.unstable_ImmediatePriority=1;G.unstable_LowPriority=4;G.unstable_NormalPriority=3;G.unstable_Profiling=null;G.unstable_UserBlockingPriority=2;G.unstable_cancelCallback=function(l){l.callback=null};G.unstable_continueExecution=function(){tu||Oe||(tu=!0,fc())};G.unstable_forceFrameRate=function(l){0>l||125a?(l.sortIndex=u,cc(Ht,l),kl(lt)===null&&l===kl(Ht)&&(ma?(kf(ga),ga=-1):ma=!0,sc(ic,u-a))):(l.sortIndex=e,cc(lt,l),tu||Oe||(tu=!0,fc())),l};G.unstable_shouldYield=Pf;G.unstable_wrapCallback=function(l){var t=ml;return function(){var u=ml;ml=t;try{return l.apply(this,arguments)}finally{ml=u}}}});var t0=Ut((zy,l0)=>{"use strict";l0.exports=If()});var a0=Ut(Tl=>{"use strict";var Cd=ya();function u0(l){var t="https://react.dev/errors/"+l;if(1{"use strict";function e0(){if(!(typeof __REACT_DEVTOOLS_GLOBAL_HOOK__>"u"||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!="function"))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(e0)}catch(l){console.error(l)}}e0(),n0.exports=a0()});var ud=Ut(Jn=>{"use strict";var fl=t0(),Os=ya(),Gd=c0();function g(l){var t="https://react.dev/errors/"+l;if(1()=>(t||l((t={exports:{}}).exports,t),t.exports);var zd=(l,t,u,a)=>{if(t&&typeof t=="object"||typeof t=="function")for(let e of bd(t))!Td.call(l,e)&&e!==u&&Bf(l,e,{get:()=>t[e],enumerable:!(a=Sd(t,e))||a.enumerable});return l};var Fn=(l,t,u)=>(u=l!=null?gd(Ed(l)):{},zd(t||!l||!l.__esModule?Bf(u,"default",{value:l,enumerable:!0}):u,l));var Kf=Ht(H=>{"use strict";var Pn=Symbol.for("react.transitional.element"),Ad=Symbol.for("react.portal"),Md=Symbol.for("react.fragment"),Od=Symbol.for("react.strict_mode"),Dd=Symbol.for("react.profiler"),_d=Symbol.for("react.consumer"),Ud=Symbol.for("react.context"),Hd=Symbol.for("react.forward_ref"),pd=Symbol.for("react.suspense"),Nd=Symbol.for("react.memo"),Gf=Symbol.for("react.lazy"),qf=Symbol.iterator;function Rd(l){return l===null||typeof l!="object"?null:(l=qf&&l[qf]||l["@@iterator"],typeof l=="function"?l:null)}var Qf={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},Zf=Object.assign,jf={};function Uu(l,t,u){this.props=l,this.context=t,this.refs=jf,this.updater=u||Qf}Uu.prototype.isReactComponent={};Uu.prototype.setState=function(l,t){if(typeof l!="object"&&typeof l!="function"&&l!=null)throw Error("takes an object of state variables to update or a function which returns an object of state variables.");this.updater.enqueueSetState(this,l,t,"setState")};Uu.prototype.forceUpdate=function(l){this.updater.enqueueForceUpdate(this,l,"forceUpdate")};function Lf(){}Lf.prototype=Uu.prototype;function In(l,t,u){this.props=l,this.context=t,this.refs=jf,this.updater=u||Qf}var lc=In.prototype=new Lf;lc.constructor=In;Zf(lc,Uu.prototype);lc.isPureReactComponent=!0;var Yf=Array.isArray,k={H:null,A:null,T:null,S:null},Vf=Object.prototype.hasOwnProperty;function tc(l,t,u,a,e,n){return u=n.ref,{$$typeof:Pn,type:l,key:t,ref:u!==void 0?u:null,props:n}}function Bd(l,t){return tc(l.type,t,void 0,void 0,void 0,l.props)}function uc(l){return typeof l=="object"&&l!==null&&l.$$typeof===Pn}function qd(l){var t={"=":"=0",":":"=2"};return"$"+l.replace(/[=:]/g,function(u){return t[u]})}var xf=/\/+/g;function $n(l,t){return typeof l=="object"&&l!==null&&l.key!=null?qd(""+l.key):t.toString(36)}function Cf(){}function Yd(l){switch(l.status){case"fulfilled":return l.value;case"rejected":throw l.reason;default:switch(typeof l.status=="string"?l.then(Cf,Cf):(l.status="pending",l.then(function(t){l.status==="pending"&&(l.status="fulfilled",l.value=t)},function(t){l.status==="pending"&&(l.status="rejected",l.reason=t)})),l.status){case"fulfilled":return l.value;case"rejected":throw l.reason}}throw l}function _u(l,t,u,a,e){var n=typeof l;(n==="undefined"||n==="boolean")&&(l=null);var c=!1;if(l===null)c=!0;else switch(n){case"bigint":case"string":case"number":c=!0;break;case"object":switch(l.$$typeof){case Pn:case Ad:c=!0;break;case Gf:return c=l._init,_u(c(l._payload),t,u,a,e)}}if(c)return e=e(l),c=a===""?"."+$n(l,0):a,Yf(e)?(u="",c!=null&&(u=c.replace(xf,"$&/")+"/"),_u(e,t,u,"",function(o){return o})):e!=null&&(uc(e)&&(e=Bd(e,u+(e.key==null||l&&l.key===e.key?"":(""+e.key).replace(xf,"$&/")+"/")+c)),t.push(e)),1;c=0;var i=a===""?".":a+":";if(Yf(l))for(var f=0;f{"use strict";wf.exports=Kf()});var u0=Ht(G=>{"use strict";function cc(l,t){var u=l.length;l.push(t);l:for(;0>>1,e=l[a];if(0>>1;aze(i,u))fze(o,i)?(l[a]=o,l[f]=u,a=f):(l[a]=i,l[c]=u,a=c);else if(fze(o,u))l[a]=o,l[f]=u,a=f;else break l}}return t}function ze(l,t){var u=l.sortIndex-t.sortIndex;return u!==0?u:l.id-t.id}G.unstable_now=void 0;typeof performance=="object"&&typeof performance.now=="function"?(Jf=performance,G.unstable_now=function(){return Jf.now()}):(ac=Date,Wf=ac.now(),G.unstable_now=function(){return ac.now()-Wf});var Jf,ac,Wf,tt=[],pt=[],Xd=1,Yl=null,yl=3,Oe=!1,uu=!1,ga=!1,$f=typeof setTimeout=="function"?setTimeout:null,Pf=typeof clearTimeout=="function"?clearTimeout:null,kf=typeof setImmediate<"u"?setImmediate:null;function Ae(l){for(var t=kl(pt);t!==null;){if(t.callback===null)Me(pt);else if(t.startTime<=l)Me(pt),t.sortIndex=t.expirationTime,cc(tt,t);else break;t=kl(pt)}}function ic(l){if(ga=!1,Ae(l),!uu)if(kl(tt)!==null)uu=!0,fc();else{var t=kl(pt);t!==null&&sc(ic,t.startTime-l)}}var De=!1,Sa=-1,If=5,l0=-1;function t0(){return!(G.unstable_now()-l0l&&t0());){var a=Yl.callback;if(typeof a=="function"){Yl.callback=null,yl=Yl.priorityLevel;var e=a(Yl.expirationTime<=l);if(l=G.unstable_now(),typeof e=="function"){Yl.callback=e,Ae(l),t=!0;break t}Yl===kl(tt)&&Me(tt),Ae(l)}else Me(tt);Yl=kl(tt)}if(Yl!==null)t=!0;else{var n=kl(pt);n!==null&&sc(ic,n.startTime-l),t=!1}}break l}finally{Yl=null,yl=u,Oe=!1}t=void 0}}finally{t?ma():De=!1}}}var ma;typeof kf=="function"?ma=function(){kf(ec)}:typeof MessageChannel<"u"?(nc=new MessageChannel,Ff=nc.port2,nc.port1.onmessage=ec,ma=function(){Ff.postMessage(null)}):ma=function(){$f(ec,0)};var nc,Ff;function fc(){De||(De=!0,ma())}function sc(l,t){Sa=$f(function(){l(G.unstable_now())},t)}G.unstable_IdlePriority=5;G.unstable_ImmediatePriority=1;G.unstable_LowPriority=4;G.unstable_NormalPriority=3;G.unstable_Profiling=null;G.unstable_UserBlockingPriority=2;G.unstable_cancelCallback=function(l){l.callback=null};G.unstable_continueExecution=function(){uu||Oe||(uu=!0,fc())};G.unstable_forceFrameRate=function(l){0>l||125a?(l.sortIndex=u,cc(pt,l),kl(tt)===null&&l===kl(pt)&&(ga?(Pf(Sa),Sa=-1):ga=!0,sc(ic,u-a))):(l.sortIndex=e,cc(tt,l),uu||Oe||(uu=!0,fc())),l};G.unstable_shouldYield=t0;G.unstable_wrapCallback=function(l){var t=yl;return function(){var u=yl;yl=t;try{return l.apply(this,arguments)}finally{yl=u}}}});var e0=Ht((My,a0)=>{"use strict";a0.exports=u0()});var c0=Ht(El=>{"use strict";var Gd=ra();function n0(l){var t="https://react.dev/errors/"+l;if(1{"use strict";function i0(){if(!(typeof __REACT_DEVTOOLS_GLOBAL_HOOK__>"u"||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!="function"))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(i0)}catch(l){console.error(l)}}i0(),f0.exports=c0()});var nd=Ht(Jn=>{"use strict";var cl=e0(),Us=ra(),jd=s0();function g(l){var t="https://react.dev/errors/"+l;if(1)":-1e||f[a]!==o[e]){var r=` -`+f[a].replace(" at new "," at ");return l.displayName&&r.includes("")&&(r=r.replace("",l.displayName)),r}while(1<=a&&0<=e);break}}}finally{dc=!1,Error.prepareStackTrace=u}return(u=l?l.displayName||l.name:"")?Ua(u):""}function Vd(l){switch(l.tag){case 26:case 27:case 5:return Ua(l.type);case 16:return Ua("Lazy");case 13:return Ua("Suspense");case 19:return Ua("SuspenseList");case 0:case 15:return l=vc(l.type,!1),l;case 11:return l=vc(l.type.render,!1),l;case 1:return l=vc(l.type,!0),l;default:return""}}function s0(l){try{var t="";do t+=Vd(l),l=l.return;while(l);return t}catch(u){return` +`+f[a].replace(" at new "," at ");return l.displayName&&r.includes("")&&(r=r.replace("",l.displayName)),r}while(1<=a&&0<=e);break}}}finally{dc=!1,Error.prepareStackTrace=u}return(u=l?l.displayName||l.name:"")?Ha(u):""}function Jd(l){switch(l.tag){case 26:case 27:case 5:return Ha(l.type);case 16:return Ha("Lazy");case 13:return Ha("Suspense");case 19:return Ha("SuspenseList");case 0:case 15:return l=vc(l.type,!1),l;case 11:return l=vc(l.type.render,!1),l;case 1:return l=vc(l.type,!0),l;default:return""}}function v0(l){try{var t="";do t+=Jd(l),l=l.return;while(l);return t}catch(u){return` Error generating stack: `+u.message+` -`+u.stack}}function fa(l){var t=l,u=l;if(l.alternate)for(;t.return;)t=t.return;else{l=t;do t=l,(t.flags&4098)!==0&&(u=t.return),l=t.return;while(l)}return t.tag===3?u:null}function ps(l){if(l.tag===13){var t=l.memoizedState;if(t===null&&(l=l.alternate,l!==null&&(t=l.memoizedState)),t!==null)return t.dehydrated}return null}function o0(l){if(fa(l)!==l)throw Error(g(188))}function Kd(l){var t=l.alternate;if(!t){if(t=fa(l),t===null)throw Error(g(188));return t!==l?null:l}for(var u=l,a=t;;){var e=u.return;if(e===null)break;var n=e.alternate;if(n===null){if(a=e.return,a!==null){u=a;continue}break}if(e.child===n.child){for(n=e.child;n;){if(n===u)return o0(e),l;if(n===a)return o0(e),t;n=n.sibling}throw Error(g(188))}if(u.return!==a.return)u=e,a=n;else{for(var c=!1,i=e.child;i;){if(i===u){c=!0,u=e,a=n;break}if(i===a){c=!0,a=e,u=n;break}i=i.sibling}if(!c){for(i=n.child;i;){if(i===u){c=!0,u=n,a=e;break}if(i===a){c=!0,a=n,u=e;break}i=i.sibling}if(!c)throw Error(g(189))}}if(u.alternate!==a)throw Error(g(190))}if(u.tag!==3)throw Error(g(188));return u.stateNode.current===u?l:t}function Ns(l){var t=l.tag;if(t===5||t===26||t===27||t===6)return l;for(l=l.child;l!==null;){if(t=Ns(l),t!==null)return t;l=l.sibling}return null}var Ha=Array.isArray,K=Gd.__DOM_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE,fu={pending:!1,data:null,method:null,action:null},Kc=[],Yu=-1;function it(l){return{current:l}}function vl(l){0>Yu||(l.current=Kc[Yu],Kc[Yu]=null,Yu--)}function W(l,t){Yu++,Kc[Yu]=l.current,l.current=t}var at=it(null),Ja=it(null),Zt=it(null),en=it(null);function nn(l,t){switch(W(Zt,t),W(Ja,l),W(at,null),l=t.nodeType,l){case 9:case 11:t=(t=t.documentElement)&&(t=t.namespaceURI)?vs(t):0;break;default:if(l=l===8?t.parentNode:t,t=l.tagName,l=l.namespaceURI)l=vs(l),t=Vo(l,t);else switch(t){case"svg":t=1;break;case"math":t=2;break;default:t=0}}vl(at),W(at,t)}function Iu(){vl(at),vl(Ja),vl(Zt)}function wc(l){l.memoizedState!==null&&W(en,l);var t=at.current,u=Vo(t,l.type);t!==u&&(W(Ja,l),W(at,u))}function cn(l){Ja.current===l&&(vl(at),vl(Ja)),en.current===l&&(vl(en),ee._currentValue=fu)}var Jc=Object.prototype.hasOwnProperty,Ci=fl.unstable_scheduleCallback,hc=fl.unstable_cancelCallback,wd=fl.unstable_shouldYield,Jd=fl.unstable_requestPaint,et=fl.unstable_now,Wd=fl.unstable_getCurrentPriorityLevel,Rs=fl.unstable_ImmediatePriority,Bs=fl.unstable_UserBlockingPriority,fn=fl.unstable_NormalPriority,kd=fl.unstable_LowPriority,qs=fl.unstable_IdlePriority,Fd=fl.log,$d=fl.unstable_setDisableYieldValue,fe=null,Nl=null;function Pd(l){if(Nl&&typeof Nl.onCommitFiberRoot=="function")try{Nl.onCommitFiberRoot(fe,l,void 0,(l.current.flags&128)===128)}catch{}}function Gt(l){if(typeof Fd=="function"&&$d(l),Nl&&typeof Nl.setStrictMode=="function")try{Nl.setStrictMode(fe,l)}catch{}}var Rl=Math.clz32?Math.clz32:tv,Id=Math.log,lv=Math.LN2;function tv(l){return l>>>=0,l===0?32:31-(Id(l)/lv|0)|0}var He=128,pe=4194304;function au(l){var t=l&42;if(t!==0)return t;switch(l&-l){case 1:return 1;case 2:return 2;case 4:return 4;case 8:return 8;case 16:return 16;case 32:return 32;case 64:return 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:return l&4194176;case 4194304:case 8388608:case 16777216:case 33554432:return l&62914560;case 67108864:return 67108864;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 0;default:return l}}function Bn(l,t){var u=l.pendingLanes;if(u===0)return 0;var a=0,e=l.suspendedLanes,n=l.pingedLanes,c=l.warmLanes;l=l.finishedLanes!==0;var i=u&134217727;return i!==0?(u=i&~e,u!==0?a=au(u):(n&=i,n!==0?a=au(n):l||(c=i&~c,c!==0&&(a=au(c))))):(i=u&~e,i!==0?a=au(i):n!==0?a=au(n):l||(c=u&~c,c!==0&&(a=au(c)))),a===0?0:t!==0&&t!==a&&(t&e)===0&&(e=a&-a,c=t&-t,e>=c||e===32&&(c&4194176)!==0)?t:a}function se(l,t){return(l.pendingLanes&~(l.suspendedLanes&~l.pingedLanes)&t)===0}function uv(l,t){switch(l){case 1:case 2:case 4:case 8:return t+250;case 16:case 32: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:return t+5e3;case 4194304:case 8388608:case 16777216:case 33554432:return-1;case 67108864:case 134217728:case 268435456:case 536870912:case 1073741824:return-1;default:return-1}}function Ys(){var l=He;return He<<=1,(He&4194176)===0&&(He=128),l}function Cs(){var l=pe;return pe<<=1,(pe&62914560)===0&&(pe=4194304),l}function yc(l){for(var t=[],u=0;31>u;u++)t.push(l);return t}function oe(l,t){l.pendingLanes|=t,t!==268435456&&(l.suspendedLanes=0,l.pingedLanes=0,l.warmLanes=0)}function av(l,t,u,a,e,n){var c=l.pendingLanes;l.pendingLanes=u,l.suspendedLanes=0,l.pingedLanes=0,l.warmLanes=0,l.expiredLanes&=u,l.entangledLanes&=u,l.errorRecoveryDisabledLanes&=u,l.shellSuspendCounter=0;var i=l.entanglements,f=l.expirationTimes,o=l.hiddenUpdates;for(u=c&~u;0"u"||typeof window.document>"u"||typeof window.document.createElement>"u"),iv=RegExp("^[:A-Z_a-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD][:A-Z_a-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD\\-.0-9\\u00B7\\u0300-\\u036F\\u203F-\\u2040]*$"),v0={},h0={};function fv(l){return Jc.call(h0,l)?!0:Jc.call(v0,l)?!1:iv.test(l)?h0[l]=!0:(v0[l]=!0,!1)}function we(l,t,u){if(fv(t))if(u===null)l.removeAttribute(t);else{switch(typeof u){case"undefined":case"function":case"symbol":l.removeAttribute(t);return;case"boolean":var a=t.toLowerCase().slice(0,5);if(a!=="data-"&&a!=="aria-"){l.removeAttribute(t);return}}l.setAttribute(t,""+u)}}function Ne(l,t,u){if(u===null)l.removeAttribute(t);else{switch(typeof u){case"undefined":case"function":case"symbol":case"boolean":l.removeAttribute(t);return}l.setAttribute(t,""+u)}}function ot(l,t,u,a){if(a===null)l.removeAttribute(u);else{switch(typeof a){case"undefined":case"function":case"symbol":case"boolean":l.removeAttribute(u);return}l.setAttributeNS(t,u,""+a)}}function Gl(l){switch(typeof l){case"bigint":case"boolean":case"number":case"string":case"undefined":return l;case"object":return l;default:return""}}function Ls(l){var t=l.type;return(l=l.nodeName)&&l.toLowerCase()==="input"&&(t==="checkbox"||t==="radio")}function sv(l){var t=Ls(l)?"checked":"value",u=Object.getOwnPropertyDescriptor(l.constructor.prototype,t),a=""+l[t];if(!l.hasOwnProperty(t)&&typeof u<"u"&&typeof u.get=="function"&&typeof u.set=="function"){var e=u.get,n=u.set;return Object.defineProperty(l,t,{configurable:!0,get:function(){return e.call(this)},set:function(c){a=""+c,n.call(this,c)}}),Object.defineProperty(l,t,{enumerable:u.enumerable}),{getValue:function(){return a},setValue:function(c){a=""+c},stopTracking:function(){l._valueTracker=null,delete l[t]}}}}function sn(l){l._valueTracker||(l._valueTracker=sv(l))}function Vs(l){if(!l)return!1;var t=l._valueTracker;if(!t)return!0;var u=t.getValue(),a="";return l&&(a=Ls(l)?l.checked?"true":"false":l.value),l=a,l!==u?(t.setValue(l),!0):!1}function on(l){if(l=l||(typeof document<"u"?document:void 0),typeof l>"u")return null;try{return l.activeElement||l.body}catch{return l.body}}var ov=/[\n"\\]/g;function jl(l){return l.replace(ov,function(t){return"\\"+t.charCodeAt(0).toString(16)+" "})}function kc(l,t,u,a,e,n,c,i){l.name="",c!=null&&typeof c!="function"&&typeof c!="symbol"&&typeof c!="boolean"?l.type=c:l.removeAttribute("type"),t!=null?c==="number"?(t===0&&l.value===""||l.value!=t)&&(l.value=""+Gl(t)):l.value!==""+Gl(t)&&(l.value=""+Gl(t)):c!=="submit"&&c!=="reset"||l.removeAttribute("value"),t!=null?Fc(l,c,Gl(t)):u!=null?Fc(l,c,Gl(u)):a!=null&&l.removeAttribute("value"),e==null&&n!=null&&(l.defaultChecked=!!n),e!=null&&(l.checked=e&&typeof e!="function"&&typeof e!="symbol"),i!=null&&typeof i!="function"&&typeof i!="symbol"&&typeof i!="boolean"?l.name=""+Gl(i):l.removeAttribute("name")}function Ks(l,t,u,a,e,n,c,i){if(n!=null&&typeof n!="function"&&typeof n!="symbol"&&typeof n!="boolean"&&(l.type=n),t!=null||u!=null){if(!(n!=="submit"&&n!=="reset"||t!=null))return;u=u!=null?""+Gl(u):"",t=t!=null?""+Gl(t):u,i||t===l.value||(l.value=t),l.defaultValue=t}a=a??e,a=typeof a!="function"&&typeof a!="symbol"&&!!a,l.checked=i?l.checked:!!a,l.defaultChecked=!!a,c!=null&&typeof c!="function"&&typeof c!="symbol"&&typeof c!="boolean"&&(l.name=c)}function Fc(l,t,u){t==="number"&&on(l.ownerDocument)===l||l.defaultValue===""+u||(l.defaultValue=""+u)}function wu(l,t,u,a){if(l=l.options,t){t={};for(var e=0;e=Ra),E0=" ",T0=!1;function Ps(l,t){switch(l){case"keyup":return Xv.indexOf(t.keyCode)!==-1;case"keydown":return t.keyCode!==229;case"keypress":case"mousedown":case"focusout":return!0;default:return!1}}function Is(l){return l=l.detail,typeof l=="object"&&"data"in l?l.data:null}var xu=!1;function Qv(l,t){switch(l){case"compositionend":return Is(t);case"keypress":return t.which!==32?null:(T0=!0,E0);case"textInput":return l=t.data,l===E0&&T0?null:l;default:return null}}function Zv(l,t){if(xu)return l==="compositionend"||!ji&&Ps(l,t)?(l=Fs(),We=Qi=Qt=null,xu=!1,l):null;switch(l){case"paste":return null;case"keypress":if(!(t.ctrlKey||t.altKey||t.metaKey)||t.ctrlKey&&t.altKey){if(t.char&&1=t)return{node:u,offset:t-l};l=a}l:{for(;u;){if(u.nextSibling){u=u.nextSibling;break l}u=u.parentNode}u=void 0}u=O0(u)}}function a1(l,t){return l&&t?l===t?!0:l&&l.nodeType===3?!1:t&&t.nodeType===3?a1(l,t.parentNode):"contains"in l?l.contains(t):l.compareDocumentPosition?!!(l.compareDocumentPosition(t)&16):!1:!1}function e1(l){l=l!=null&&l.ownerDocument!=null&&l.ownerDocument.defaultView!=null?l.ownerDocument.defaultView:window;for(var t=on(l.document);t instanceof l.HTMLIFrameElement;){try{var u=typeof t.contentWindow.location.href=="string"}catch{u=!1}if(u)l=t.contentWindow;else break;t=on(l.document)}return t}function Li(l){var t=l&&l.nodeName&&l.nodeName.toLowerCase();return t&&(t==="input"&&(l.type==="text"||l.type==="search"||l.type==="tel"||l.type==="url"||l.type==="password")||t==="textarea"||l.contentEditable==="true")}function kv(l,t){var u=e1(t);t=l.focusedElem;var a=l.selectionRange;if(u!==t&&t&&t.ownerDocument&&a1(t.ownerDocument.documentElement,t)){if(a!==null&&Li(t)){if(l=a.start,u=a.end,u===void 0&&(u=l),"selectionStart"in t)t.selectionStart=l,t.selectionEnd=Math.min(u,t.value.length);else if(u=(l=t.ownerDocument||document)&&l.defaultView||window,u.getSelection){u=u.getSelection();var e=t.textContent.length,n=Math.min(a.start,e);a=a.end===void 0?n:Math.min(a.end,e),!u.extend&&n>a&&(e=a,a=n,n=e),e=D0(t,n);var c=D0(t,a);e&&c&&(u.rangeCount!==1||u.anchorNode!==e.node||u.anchorOffset!==e.offset||u.focusNode!==c.node||u.focusOffset!==c.offset)&&(l=l.createRange(),l.setStart(e.node,e.offset),u.removeAllRanges(),n>a?(u.addRange(l),u.extend(c.node,c.offset)):(l.setEnd(c.node,c.offset),u.addRange(l)))}}for(l=[],u=t;u=u.parentNode;)u.nodeType===1&&l.push({element:u,left:u.scrollLeft,top:u.scrollTop});for(typeof t.focus=="function"&&t.focus(),t=0;t=document.documentMode,Xu=null,Ic=null,qa=null,li=!1;function _0(l,t,u){var a=u.window===u?u.document:u.nodeType===9?u:u.ownerDocument;li||Xu==null||Xu!==on(a)||(a=Xu,"selectionStart"in a&&Li(a)?a={start:a.selectionStart,end:a.selectionEnd}:(a=(a.ownerDocument&&a.ownerDocument.defaultView||window).getSelection(),a={anchorNode:a.anchorNode,anchorOffset:a.anchorOffset,focusNode:a.focusNode,focusOffset:a.focusOffset}),qa&&$a(qa,a)||(qa=a,a=Dn(Ic,"onSelect"),0>=c,e-=c,St=1<<32-Rl(t)+e|u<M?(Z=A,A=null):Z=A.sibling;var N=h(d,A,v[M],m);if(N===null){A===null&&(A=Z);break}l&&A&&N.alternate===null&&t(d,A),s=n(N,s,M),_===null?E=N:_.sibling=N,_=N,A=Z}if(M===v.length)return u(d,A),C&&eu(d,M),E;if(A===null){for(;MM?(Z=A,A=null):Z=A.sibling;var Wl=h(d,A,N.value,m);if(Wl===null){A===null&&(A=Z);break}l&&A&&Wl.alternate===null&&t(d,A),s=n(Wl,s,M),_===null?E=Wl:_.sibling=Wl,_=Wl,A=Z}if(N.done)return u(d,A),C&&eu(d,M),E;if(A===null){for(;!N.done;M++,N=v.next())N=S(d,N.value,m),N!==null&&(s=n(N,s,M),_===null?E=N:_.sibling=N,_=N);return C&&eu(d,M),E}for(A=a(A);!N.done;M++,N=v.next())N=y(A,d,M,N.value,m),N!==null&&(l&&N.alternate!==null&&A.delete(N.key===null?M:N.key),s=n(N,s,M),_===null?E=N:_.sibling=N,_=N);return l&&A.forEach(function(Ou){return t(d,Ou)}),C&&eu(d,M),E}function J(d,s,v,m){if(typeof v=="object"&&v!==null&&v.type===qu&&v.key===null&&(v=v.props.children),typeof v=="object"&&v!==null){switch(v.$$typeof){case Ue:l:{for(var E=v.key;s!==null;){if(s.key===E){if(E=v.type,E===qu){if(s.tag===7){u(d,s.sibling),m=e(s,v.props.children),m.return=d,d=m;break l}}else if(s.elementType===E||typeof E=="object"&&E!==null&&E.$$typeof===Bt&&q0(E)===s.type){u(d,s.sibling),m=e(s,v.props),za(m,v),m.return=d,d=m;break l}u(d,s);break}else t(d,s);s=s.sibling}v.type===qu?(m=du(v.props.children,d.mode,m,v.key),m.return=d,d=m):(m=ln(v.type,v.key,v.props,null,d.mode,m),za(m,v),m.return=d,d=m)}return c(d);case _a:l:{for(E=v.key;s!==null;){if(s.key===E)if(s.tag===4&&s.stateNode.containerInfo===v.containerInfo&&s.stateNode.implementation===v.implementation){u(d,s.sibling),m=e(s,v.children||[]),m.return=d,d=m;break l}else{u(d,s);break}else t(d,s);s=s.sibling}m=Bc(v,d.mode,m),m.return=d,d=m}return c(d);case Bt:return E=v._init,v=E(v._payload),J(d,s,v,m)}if(Ha(v))return T(d,s,v,m);if(ba(v)){if(E=ba(v),typeof E!="function")throw Error(g(150));return v=E.call(v),D(d,s,v,m)}if(typeof v.then=="function")return J(d,s,Ce(v),m);if(v.$$typeof===gt)return J(d,s,Xe(d,v),m);xe(d,v)}return typeof v=="string"&&v!==""||typeof v=="number"||typeof v=="bigint"?(v=""+v,s!==null&&s.tag===6?(u(d,s.sibling),m=e(s,v),m.return=d,d=m):(u(d,s),m=Rc(v,d.mode,m),m.return=d,d=m),c(d)):u(d,s)}return function(d,s,v,m){try{Ia=0;var E=J(d,s,v,m);return Wu=null,E}catch(A){if(A===Ya)throw A;var _=Vl(29,A,null,d.mode);return _.lanes=m,_.return=d,_}finally{}}}var ru=r1(!0),m1=r1(!1),ua=it(null),yn=it(0);function Y0(l,t){l=Dt,W(yn,l),W(ua,t),Dt=l|t.baseLanes}function ai(){W(yn,Dt),W(ua,ua.current)}function Wi(){Dt=yn.current,vl(ua),vl(yn)}var wl=it(null),nt=null;function Yt(l){var t=l.alternate;W(il,il.current&1),W(wl,l),nt===null&&(t===null||ua.current!==null||t.memoizedState!==null)&&(nt=l)}function g1(l){if(l.tag===22){if(W(il,il.current),W(wl,l),nt===null){var t=l.alternate;t!==null&&t.memoizedState!==null&&(nt=l)}}else Ct(l)}function Ct(){W(il,il.current),W(wl,wl.current)}function Et(l){vl(wl),nt===l&&(nt=null),vl(il)}var il=it(0);function rn(l){for(var t=l;t!==null;){if(t.tag===13){var u=t.memoizedState;if(u!==null&&(u=u.dehydrated,u===null||u.data==="$?"||u.data==="$!"))return t}else if(t.tag===19&&t.memoizedProps.revealOrder!==void 0){if((t.flags&128)!==0)return t}else if(t.child!==null){t.child.return=t,t=t.child;continue}if(t===l)break;for(;t.sibling===null;){if(t.return===null||t.return===l)return null;t=t.return}t.sibling.return=t.return,t=t.sibling}return null}var lh=typeof AbortController<"u"?AbortController:function(){var l=[],t=this.signal={aborted:!1,addEventListener:function(u,a){l.push(a)}};this.abort=function(){t.aborted=!0,l.forEach(function(u){return u()})}},th=fl.unstable_scheduleCallback,uh=fl.unstable_NormalPriority,cl={$$typeof:gt,Consumer:null,Provider:null,_currentValue:null,_currentValue2:null,_threadCount:0};function ki(){return{controller:new lh,data:new Map,refCount:0}}function he(l){l.refCount--,l.refCount===0&&th(uh,function(){l.controller.abort()})}var xa=null,ei=0,aa=0,ku=null;function ah(l,t){if(xa===null){var u=xa=[];ei=0,aa=bf(),ku={status:"pending",value:void 0,then:function(a){u.push(a)}}}return ei++,t.then(C0,C0),t}function C0(){if(--ei===0&&xa!==null){ku!==null&&(ku.status="fulfilled");var l=xa;xa=null,aa=0,ku=null;for(var t=0;tn?n:8;var c=U.T,i={};U.T=i,sf(l,!1,t,u);try{var f=e(),o=U.S;if(o!==null&&o(i,f),f!==null&&typeof f=="object"&&typeof f.then=="function"){var r=eh(f,a);Xa(l,t,r,Bl(l))}else Xa(l,t,a,Bl(l))}catch(S){Xa(l,t,{then:function(){},status:"rejected",reason:S},Bl())}finally{K.p=n,U.T=c}}function sh(){}function ii(l,t,u,a){if(l.tag!==5)throw Error(g(476));var e=V1(l).queue;L1(l,e,t,fu,u===null?sh:function(){return K1(l),u(a)})}function V1(l){var t=l.memoizedState;if(t!==null)return t;t={memoizedState:fu,baseState:fu,baseQueue:null,queue:{pending:null,lanes:0,dispatch:null,lastRenderedReducer:Mt,lastRenderedState:fu},next:null};var u={};return t.next={memoizedState:u,baseState:u,baseQueue:null,queue:{pending:null,lanes:0,dispatch:null,lastRenderedReducer:Mt,lastRenderedState:u},next:null},l.memoizedState=t,l=l.alternate,l!==null&&(l.memoizedState=t),t}function K1(l){var t=V1(l).next.queue;Xa(l,t,{},Bl())}function ff(){return Sl(ee)}function w1(){return al().memoizedState}function J1(){return al().memoizedState}function oh(l){for(var t=l.return;t!==null;){switch(t.tag){case 24:case 3:var u=Bl();l=jt(u);var a=Lt(t,l,u);a!==null&&(Al(a,t,u),Qa(a,t,u)),t={cache:ki()},l.payload=t;return}t=t.return}}function dh(l,t,u){var a=Bl();u={lane:a,revertLane:0,action:u,hasEagerState:!1,eagerState:null,next:null},jn(l)?k1(t,u):(u=Ki(l,t,u,a),u!==null&&(Al(u,l,a),F1(u,t,a)))}function W1(l,t,u){var a=Bl();Xa(l,t,u,a)}function Xa(l,t,u,a){var e={lane:a,revertLane:0,action:u,hasEagerState:!1,eagerState:null,next:null};if(jn(l))k1(t,e);else{var n=l.alternate;if(l.lanes===0&&(n===null||n.lanes===0)&&(n=t.lastRenderedReducer,n!==null))try{var c=t.lastRenderedState,i=n(c,u);if(e.hasEagerState=!0,e.eagerState=i,ql(i,c))return Xn(l,t,e,0),L===null&&xn(),!1}catch{}finally{}if(u=Ki(l,t,e,a),u!==null)return Al(u,l,a),F1(u,t,a),!0}return!1}function sf(l,t,u,a){if(a={lane:2,revertLane:bf(),action:a,hasEagerState:!1,eagerState:null,next:null},jn(l)){if(t)throw Error(g(479))}else t=Ki(l,u,a,2),t!==null&&Al(t,l,2)}function jn(l){var t=l.alternate;return l===p||t!==null&&t===p}function k1(l,t){Fu=mn=!0;var u=l.pending;u===null?t.next=t:(t.next=u.next,u.next=t),l.pending=t}function F1(l,t,u){if((u&4194176)!==0){var a=t.lanes;a&=l.pendingLanes,u|=a,t.lanes=u,Xs(l,u)}}var ct={readContext:Sl,use:Qn,useCallback:ll,useContext:ll,useEffect:ll,useImperativeHandle:ll,useLayoutEffect:ll,useInsertionEffect:ll,useMemo:ll,useReducer:ll,useRef:ll,useState:ll,useDebugValue:ll,useDeferredValue:ll,useTransition:ll,useSyncExternalStore:ll,useId:ll};ct.useCacheRefresh=ll;ct.useMemoCache=ll;ct.useHostTransitionStatus=ll;ct.useFormState=ll;ct.useActionState=ll;ct.useOptimistic=ll;var zu={readContext:Sl,use:Qn,useCallback:function(l,t){return Ml().memoizedState=[l,t===void 0?null:t],l},useContext:Sl,useEffect:Q0,useImperativeHandle:function(l,t,u){u=u!=null?u.concat([l]):null,Pe(4194308,4,X1.bind(null,t,l),u)},useLayoutEffect:function(l,t){return Pe(4194308,4,l,t)},useInsertionEffect:function(l,t){Pe(4,2,l,t)},useMemo:function(l,t){var u=Ml();t=t===void 0?null:t;var a=l();if(mu){Gt(!0);try{l()}finally{Gt(!1)}}return u.memoizedState=[a,t],a},useReducer:function(l,t,u){var a=Ml();if(u!==void 0){var e=u(t);if(mu){Gt(!0);try{u(t)}finally{Gt(!1)}}}else e=t;return a.memoizedState=a.baseState=e,l={pending:null,lanes:0,dispatch:null,lastRenderedReducer:l,lastRenderedState:e},a.queue=l,l=l.dispatch=dh.bind(null,p,l),[a.memoizedState,l]},useRef:function(l){var t=Ml();return l={current:l},t.memoizedState=l},useState:function(l){l=ni(l);var t=l.queue,u=W1.bind(null,p,t);return t.dispatch=u,[l.memoizedState,u]},useDebugValue:nf,useDeferredValue:function(l,t){var u=Ml();return cf(u,l,t)},useTransition:function(){var l=ni(!1);return l=L1.bind(null,p,l.queue,!0,!1),Ml().memoizedState=l,[!1,l]},useSyncExternalStore:function(l,t,u){var a=p,e=Ml();if(C){if(u===void 0)throw Error(g(407));u=u()}else{if(u=t(),L===null)throw Error(g(349));(Y&60)!==0||z1(a,t,u)}e.memoizedState=u;var n={value:u,getSnapshot:t};return e.queue=n,Q0(M1.bind(null,a,n,l),[l]),a.flags|=2048,ea(9,A1.bind(null,a,n,u,t),{destroy:void 0},null),u},useId:function(){var l=Ml(),t=L.identifierPrefix;if(C){var u=bt,a=St;u=(a&~(1<<32-Rl(a)-1)).toString(32)+u,t=":"+t+"R"+u,u=gn++,0 title"))),rl(n,a,u),n[gl]=l,ol(n),a=n;break l;case"link":var c=Ss("link","href",e).get(a+(u.href||""));if(c){for(var i=0;i<\/script>",l=l.removeChild(l.firstChild);break;case"select":l=typeof a.is=="string"?e.createElement("select",{is:a.is}):e.createElement("select"),a.multiple?l.multiple=!0:a.size&&(l.size=a.size);break;default:l=typeof a.is=="string"?e.createElement(u,{is:a.is}):e.createElement(u)}}l[gl]=t,l[Ol]=a;l:for(e=t.child;e!==null;){if(e.tag===5||e.tag===6)l.appendChild(e.stateNode);else if(e.tag!==4&&e.tag!==27&&e.child!==null){e.child.return=e,e=e.child;continue}if(e===t)break l;for(;e.sibling===null;){if(e.return===null||e.return===t)break l;e=e.return}e.sibling.return=e.return,e=e.sibling}t.stateNode=l;l:switch(rl(l,u,a),u){case"button":case"input":case"select":case"textarea":l=!!a.autoFocus;break l;case"img":l=!0;break l;default:l=!1}l&&ht(t)}}return F(t),t.flags&=-16777217,null;case 6:if(l&&t.stateNode!=null)l.memoizedProps!==a&&ht(t);else{if(typeof a!="string"&&t.stateNode===null)throw Error(g(166));if(l=Zt.current,Ta(t)){if(l=t.stateNode,u=t.memoizedProps,a=null,e=zl,e!==null)switch(e.tag){case 27:case 5:a=e.memoizedProps}l[gl]=t,l=!!(l.nodeValue===u||a!==null&&a.suppressHydrationWarning===!0||Lo(l.nodeValue,u)),l||yu(t)}else l=_n(l).createTextNode(a),l[gl]=t,t.stateNode=l}return F(t),null;case 13:if(a=t.memoizedState,l===null||l.memoizedState!==null&&l.memoizedState.dehydrated!==null){if(e=Ta(t),a!==null&&a.dehydrated!==null){if(l===null){if(!e)throw Error(g(318));if(e=t.memoizedState,e=e!==null?e.dehydrated:null,!e)throw Error(g(317));e[gl]=t}else ve(),(t.flags&128)===0&&(t.memoizedState=null),t.flags|=4;F(t),e=!1}else $l!==null&&(Ai($l),$l=null),e=!0;if(!e)return t.flags&256?(Et(t),t):(Et(t),null)}if(Et(t),(t.flags&128)!==0)return t.lanes=u,t;if(u=a!==null,l=l!==null&&l.memoizedState!==null,u){a=t.child,e=null,a.alternate!==null&&a.alternate.memoizedState!==null&&a.alternate.memoizedState.cachePool!==null&&(e=a.alternate.memoizedState.cachePool.pool);var n=null;a.memoizedState!==null&&a.memoizedState.cachePool!==null&&(n=a.memoizedState.cachePool.pool),n!==e&&(a.flags|=2048)}return u!==l&&u&&(t.child.flags|=8192),Ge(t,t.updateQueue),F(t),null;case 4:return Iu(),l===null&&Ef(t.stateNode.containerInfo),F(t),null;case 10:return zt(t.type),F(t),null;case 19:if(vl(il),e=t.memoizedState,e===null)return F(t),null;if(a=(t.flags&128)!==0,n=e.rendering,n===null)if(a)Ma(e,!1);else{if(I!==0||l!==null&&(l.flags&128)!==0)for(l=t.child;l!==null;){if(n=rn(l),n!==null){for(t.flags|=128,Ma(e,!1),l=n.updateQueue,t.updateQueue=l,Ge(t,l),t.subtreeFlags=0,l=u,u=t.child;u!==null;)_o(u,l),u=u.sibling;return W(il,il.current&1|2),t.child}l=l.sibling}e.tail!==null&&et()>zn&&(t.flags|=128,a=!0,Ma(e,!1),t.lanes=4194304)}else{if(!a)if(l=rn(n),l!==null){if(t.flags|=128,a=!0,l=l.updateQueue,t.updateQueue=l,Ge(t,l),Ma(e,!0),e.tail===null&&e.tailMode==="hidden"&&!n.alternate&&!C)return F(t),null}else 2*et()-e.renderingStartTime>zn&&u!==536870912&&(t.flags|=128,a=!0,Ma(e,!1),t.lanes=4194304);e.isBackwards?(n.sibling=t.child,t.child=n):(l=e.last,l!==null?l.sibling=n:t.child=n,e.last=n)}return e.tail!==null?(t=e.tail,e.rendering=t,e.tail=t.sibling,e.renderingStartTime=et(),t.sibling=null,l=il.current,W(il,a?l&1|2:l&1),t):(F(t),null);case 22:case 23:return Et(t),Wi(),a=t.memoizedState!==null,l!==null?l.memoizedState!==null!==a&&(t.flags|=8192):a&&(t.flags|=8192),a?(u&536870912)!==0&&(t.flags&128)===0&&(F(t),t.subtreeFlags&6&&(t.flags|=8192)):F(t),u=t.updateQueue,u!==null&&Ge(t,u.retryQueue),u=null,l!==null&&l.memoizedState!==null&&l.memoizedState.cachePool!==null&&(u=l.memoizedState.cachePool.pool),a=null,t.memoizedState!==null&&t.memoizedState.cachePool!==null&&(a=t.memoizedState.cachePool.pool),a!==u&&(t.flags|=2048),l!==null&&vl(ou),null;case 24:return u=null,l!==null&&(u=l.memoizedState.cache),t.memoizedState.cache!==u&&(t.flags|=2048),zt(cl),F(t),null;case 25:return null}throw Error(g(156,t.tag))}function Sh(l,t){switch(Ji(t),t.tag){case 1:return l=t.flags,l&65536?(t.flags=l&-65537|128,t):null;case 3:return zt(cl),Iu(),l=t.flags,(l&65536)!==0&&(l&128)===0?(t.flags=l&-65537|128,t):null;case 26:case 27:case 5:return cn(t),null;case 13:if(Et(t),l=t.memoizedState,l!==null&&l.dehydrated!==null){if(t.alternate===null)throw Error(g(340));ve()}return l=t.flags,l&65536?(t.flags=l&-65537|128,t):null;case 19:return vl(il),null;case 4:return Iu(),null;case 10:return zt(t.type),null;case 22:case 23:return Et(t),Wi(),l!==null&&vl(ou),l=t.flags,l&65536?(t.flags=l&-65537|128,t):null;case 24:return zt(cl),null;case 25:return null;default:return null}}function Ho(l,t){switch(Ji(t),t.tag){case 3:zt(cl),Iu();break;case 26:case 27:case 5:cn(t);break;case 4:Iu();break;case 13:Et(t);break;case 19:vl(il);break;case 10:zt(t.type);break;case 22:case 23:Et(t),Wi(),l!==null&&vl(ou);break;case 24:zt(cl)}}var bh={getCacheForType:function(l){var t=Sl(cl),u=t.data.get(l);return u===void 0&&(u=l(),t.data.set(l,u)),u}},Eh=typeof WeakMap=="function"?WeakMap:Map,$=0,L=null,R=null,Y=0,j=0,Hl=null,rt=!1,da=!1,rf=!1,Dt=0,I=0,Pt=0,vu=0,mf=0,Kl=0,na=0,Va=null,ut=null,bi=!1,gf=0,zn=1/0,An=null,Kt=null,Qe=!1,nu=null,Ka=0,Ei=0,Ti=null,wa=0,zi=null;function Bl(){if(($&2)!==0&&Y!==0)return Y&-Y;if(U.T!==null){var l=aa;return l!==0?l:bf()}return Qs()}function po(){Kl===0&&(Kl=(Y&536870912)===0||C?Ys():536870912);var l=wl.current;return l!==null&&(l.flags|=32),Kl}function Al(l,t,u){(l===L&&j===2||l.cancelPendingCommit!==null)&&(ca(l,0),mt(l,Y,Kl,!1)),oe(l,u),(($&2)===0||l!==L)&&(l===L&&(($&2)===0&&(vu|=u),I===4&&mt(l,Y,Kl,!1)),ft(l))}function No(l,t,u){if(($&6)!==0)throw Error(g(327));var a=!u&&(t&60)===0&&(t&l.expiredLanes)===0||se(l,t),e=a?Ah(l,t):qc(l,t,!0),n=a;do{if(e===0){da&&!a&&mt(l,t,0,!1);break}else if(e===6)mt(l,t,0,!rt);else{if(u=l.current.alternate,n&&!Th(u)){e=qc(l,t,!1),n=!1;continue}if(e===2){if(n=t,l.errorRecoveryDisabledLanes&n)var c=0;else c=l.pendingLanes&-536870913,c=c!==0?c:c&536870912?536870912:0;if(c!==0){t=c;l:{var i=l;e=Va;var f=i.current.memoizedState.isDehydrated;if(f&&(ca(i,c).flags|=256),c=qc(i,c,!1),c!==2){if(rf&&!f){i.errorRecoveryDisabledLanes|=n,vu|=n,e=4;break l}n=ut,ut=e,n!==null&&Ai(n)}e=c}if(n=!1,e!==2)continue}}if(e===1){ca(l,0),mt(l,t,0,!0);break}l:{switch(a=l,e){case 0:case 1:throw Error(g(345));case 4:if((t&4194176)===t){mt(a,t,Kl,!rt);break l}break;case 2:ut=null;break;case 3:case 5:break;default:throw Error(g(329))}if(a.finishedWork=u,a.finishedLanes=t,(t&62914560)===t&&(n=gf+300-et(),10u?32:u,U.T=null,nu===null)var n=!1;else{u=Ti,Ti=null;var c=nu,i=Ka;if(nu=null,Ka=0,($&6)!==0)throw Error(g(331));var f=$;if($|=4,Oo(c.current),zo(c,c.current,i,u),$=f,ge(0,!1),Nl&&typeof Nl.onPostCommitFiberRoot=="function")try{Nl.onPostCommitFiberRoot(fe,c)}catch{}n=!0}return n}finally{K.p=e,U.T=a,xo(l,t)}}return!1}function es(l,t,u){t=Ll(u,t),t=si(l.stateNode,t,2),l=Lt(l,t,2),l!==null&&(oe(l,2),ft(l))}function Q(l,t,u){if(l.tag===3)es(l,l,u);else for(;t!==null;){if(t.tag===3){es(t,l,u);break}else if(t.tag===1){var a=t.stateNode;if(typeof t.type.getDerivedStateFromError=="function"||typeof a.componentDidCatch=="function"&&(Kt===null||!Kt.has(a))){l=Ll(u,l),u=lo(2),a=Lt(t,u,2),a!==null&&(to(u,a,t,l),oe(a,2),ft(a));break}}t=t.return}}function Yc(l,t,u){var a=l.pingCache;if(a===null){a=l.pingCache=new Eh;var e=new Set;a.set(t,e)}else e=a.get(t),e===void 0&&(e=new Set,a.set(t,e));e.has(u)||(rf=!0,e.add(u),l=Dh.bind(null,l,t,u),t.then(l,l))}function Dh(l,t,u){var a=l.pingCache;a!==null&&a.delete(t),l.pingedLanes|=l.suspendedLanes&u,l.warmLanes&=~u,L===l&&(Y&u)===u&&(I===4||I===3&&(Y&62914560)===Y&&300>et()-gf?($&2)===0&&ca(l,0):mf|=u,na===Y&&(na=0)),ft(l)}function Xo(l,t){t===0&&(t=Cs()),l=kt(l,t),l!==null&&(oe(l,t),ft(l))}function _h(l){var t=l.memoizedState,u=0;t!==null&&(u=t.retryLane),Xo(l,u)}function Uh(l,t){var u=0;switch(l.tag){case 13:var a=l.stateNode,e=l.memoizedState;e!==null&&(u=e.retryLane);break;case 19:a=l.stateNode;break;case 22:a=l.stateNode._retryCache;break;default:throw Error(g(314))}a!==null&&a.delete(t),Xo(l,u)}function Hh(l,t){return Ci(l,t)}var Mn=null,Bu=null,Oi=!1,On=!1,Cc=!1,hu=0;function ft(l){l!==Bu&&l.next===null&&(Bu===null?Mn=Bu=l:Bu=Bu.next=l),On=!0,Oi||(Oi=!0,Nh(ph))}function ge(l,t){if(!Cc&&On){Cc=!0;do for(var u=!1,a=Mn;a!==null;){if(!t)if(l!==0){var e=a.pendingLanes;if(e===0)var n=0;else{var c=a.suspendedLanes,i=a.pingedLanes;n=(1<<31-Rl(42|l)+1)-1,n&=e&~(c&~i),n=n&201326677?n&201326677|1:n?n|2:0}n!==0&&(u=!0,ns(a,n))}else n=Y,n=Bn(a,a===L?n:0),(n&3)===0||se(a,n)||(u=!0,ns(a,n));a=a.next}while(u);Cc=!1}}function ph(){On=Oi=!1;var l=0;hu!==0&&(xh()&&(l=hu),hu=0);for(var t=et(),u=null,a=Mn;a!==null;){var e=a.next,n=Go(a,t);n===0?(a.next=null,u===null?Mn=e:u.next=e,e===null&&(Bu=u)):(u=a,(l!==0||(n&3)!==0)&&(On=!0)),a=e}ge(l,!1)}function Go(l,t){for(var u=l.suspendedLanes,a=l.pingedLanes,e=l.expirationTimes,n=l.pendingLanes&-62914561;0"u"?null:document;function Jo(l,t,u){var a=va;if(a&&typeof t=="string"&&t){var e=jl(t);e='link[rel="'+l+'"][href="'+e+'"]',typeof u=="string"&&(e+='[crossorigin="'+u+'"]'),rs.has(e)||(rs.add(e),l={rel:l,crossOrigin:u,href:t},a.querySelector(e)===null&&(t=a.createElement("link"),rl(t,"link",l),ol(t),a.head.appendChild(t)))}}function Kh(l){_t.D(l),Jo("dns-prefetch",l,null)}function wh(l,t){_t.C(l,t),Jo("preconnect",l,t)}function Jh(l,t,u){_t.L(l,t,u);var a=va;if(a&&l&&t){var e='link[rel="preload"][as="'+jl(t)+'"]';t==="image"&&u&&u.imageSrcSet?(e+='[imagesrcset="'+jl(u.imageSrcSet)+'"]',typeof u.imageSizes=="string"&&(e+='[imagesizes="'+jl(u.imageSizes)+'"]')):e+='[href="'+jl(l)+'"]';var n=e;switch(t){case"style":n=ia(l);break;case"script":n=ha(l)}Jl.has(n)||(l=w({rel:"preload",href:t==="image"&&u&&u.imageSrcSet?void 0:l,as:t},u),Jl.set(n,l),a.querySelector(e)!==null||t==="style"&&a.querySelector(Se(n))||t==="script"&&a.querySelector(be(n))||(t=a.createElement("link"),rl(t,"link",l),ol(t),a.head.appendChild(t)))}}function Wh(l,t){_t.m(l,t);var u=va;if(u&&l){var a=t&&typeof t.as=="string"?t.as:"script",e='link[rel="modulepreload"][as="'+jl(a)+'"][href="'+jl(l)+'"]',n=e;switch(a){case"audioworklet":case"paintworklet":case"serviceworker":case"sharedworker":case"worker":case"script":n=ha(l)}if(!Jl.has(n)&&(l=w({rel:"modulepreload",href:l},t),Jl.set(n,l),u.querySelector(e)===null)){switch(a){case"audioworklet":case"paintworklet":case"serviceworker":case"sharedworker":case"worker":case"script":if(u.querySelector(be(n)))return}a=u.createElement("link"),rl(a,"link",l),ol(a),u.head.appendChild(a)}}}function kh(l,t,u){_t.S(l,t,u);var a=va;if(a&&l){var e=Ku(a).hoistableStyles,n=ia(l);t=t||"default";var c=e.get(n);if(!c){var i={loading:0,preload:null};if(c=a.querySelector(Se(n)))i.loading=5;else{l=w({rel:"stylesheet",href:l,"data-precedence":t},u),(u=Jl.get(n))&&Tf(l,u);var f=c=a.createElement("link");ol(f),rl(f,"link",l),f._p=new Promise(function(o,r){f.onload=o,f.onerror=r}),f.addEventListener("load",function(){i.loading|=1}),f.addEventListener("error",function(){i.loading|=2}),i.loading|=4,tn(c,t,a)}c={type:"stylesheet",instance:c,count:1,state:i},e.set(n,c)}}}function Fh(l,t){_t.X(l,t);var u=va;if(u&&l){var a=Ku(u).hoistableScripts,e=ha(l),n=a.get(e);n||(n=u.querySelector(be(e)),n||(l=w({src:l,async:!0},t),(t=Jl.get(e))&&zf(l,t),n=u.createElement("script"),ol(n),rl(n,"link",l),u.head.appendChild(n)),n={type:"script",instance:n,count:1,state:null},a.set(e,n))}}function $h(l,t){_t.M(l,t);var u=va;if(u&&l){var a=Ku(u).hoistableScripts,e=ha(l),n=a.get(e);n||(n=u.querySelector(be(e)),n||(l=w({src:l,async:!0,type:"module"},t),(t=Jl.get(e))&&zf(l,t),n=u.createElement("script"),ol(n),rl(n,"link",l),u.head.appendChild(n)),n={type:"script",instance:n,count:1,state:null},a.set(e,n))}}function ms(l,t,u,a){var e=(e=Zt.current)?Un(e):null;if(!e)throw Error(g(446));switch(l){case"meta":case"title":return null;case"style":return typeof u.precedence=="string"&&typeof u.href=="string"?(t=ia(u.href),u=Ku(e).hoistableStyles,a=u.get(t),a||(a={type:"style",instance:null,count:0,state:null},u.set(t,a)),a):{type:"void",instance:null,count:0,state:null};case"link":if(u.rel==="stylesheet"&&typeof u.href=="string"&&typeof u.precedence=="string"){l=ia(u.href);var n=Ku(e).hoistableStyles,c=n.get(l);if(c||(e=e.ownerDocument||e,c={type:"stylesheet",instance:null,count:0,state:{loading:0,preload:null}},n.set(l,c),(n=e.querySelector(Se(l)))&&!n._p&&(c.instance=n,c.state.loading=5),Jl.has(l)||(u={rel:"preload",as:"style",href:u.href,crossOrigin:u.crossOrigin,integrity:u.integrity,media:u.media,hrefLang:u.hrefLang,referrerPolicy:u.referrerPolicy},Jl.set(l,u),n||Ph(e,l,u,c.state))),t&&a===null)throw Error(g(528,""));return c}if(t&&a!==null)throw Error(g(529,""));return null;case"script":return t=u.async,u=u.src,typeof u=="string"&&t&&typeof t!="function"&&typeof t!="symbol"?(t=ha(u),u=Ku(e).hoistableScripts,a=u.get(t),a||(a={type:"script",instance:null,count:0,state:null},u.set(t,a)),a):{type:"void",instance:null,count:0,state:null};default:throw Error(g(444,l))}}function ia(l){return'href="'+jl(l)+'"'}function Se(l){return'link[rel="stylesheet"]['+l+"]"}function Wo(l){return w({},l,{"data-precedence":l.precedence,precedence:null})}function Ph(l,t,u,a){l.querySelector('link[rel="preload"][as="style"]['+t+"]")?a.loading=1:(t=l.createElement("link"),a.preload=t,t.addEventListener("load",function(){return a.loading|=1}),t.addEventListener("error",function(){return a.loading|=2}),rl(t,"link",u),ol(t),l.head.appendChild(t))}function ha(l){return'[src="'+jl(l)+'"]'}function be(l){return"script[async]"+l}function gs(l,t,u){if(t.count++,t.instance===null)switch(t.type){case"style":var a=l.querySelector('style[data-href~="'+jl(u.href)+'"]');if(a)return t.instance=a,ol(a),a;var e=w({},u,{"data-href":u.href,"data-precedence":u.precedence,href:null,precedence:null});return a=(l.ownerDocument||l).createElement("style"),ol(a),rl(a,"style",e),tn(a,u.precedence,l),t.instance=a;case"stylesheet":e=ia(u.href);var n=l.querySelector(Se(e));if(n)return t.state.loading|=4,t.instance=n,ol(n),n;a=Wo(u),(e=Jl.get(e))&&Tf(a,e),n=(l.ownerDocument||l).createElement("link"),ol(n);var c=n;return c._p=new Promise(function(i,f){c.onload=i,c.onerror=f}),rl(n,"link",a),t.state.loading|=4,tn(n,u.precedence,l),t.instance=n;case"script":return n=ha(u.src),(e=l.querySelector(be(n)))?(t.instance=e,ol(e),e):(a=u,(e=Jl.get(n))&&(a=w({},u),zf(a,e)),l=l.ownerDocument||l,e=l.createElement("script"),ol(e),rl(e,"link",a),l.head.appendChild(e),t.instance=e);case"void":return null;default:throw Error(g(443,t.type))}else t.type==="stylesheet"&&(t.state.loading&4)===0&&(a=t.instance,t.state.loading|=4,tn(a,u.precedence,l));return t.instance}function tn(l,t,u){for(var a=u.querySelectorAll('link[rel="stylesheet"][data-precedence],style[data-precedence]'),e=a.length?a[a.length-1]:null,n=e,c=0;c title"):null)}function Ih(l,t,u){if(u===1||t.itemProp!=null)return!1;switch(l){case"meta":case"title":return!0;case"style":if(typeof t.precedence!="string"||typeof t.href!="string"||t.href==="")break;return!0;case"link":if(typeof t.rel!="string"||typeof t.href!="string"||t.href===""||t.onLoad||t.onError)break;switch(t.rel){case"stylesheet":return l=t.disabled,typeof t.precedence=="string"&&l==null;default:return!0}case"script":if(t.async&&typeof t.async!="function"&&typeof t.async!="symbol"&&!t.onLoad&&!t.onError&&t.src&&typeof t.src=="string")return!0}return!1}function ko(l){return!(l.type==="stylesheet"&&(l.state.loading&3)===0)}var ae=null;function ly(){}function ty(l,t,u){if(ae===null)throw Error(g(475));var a=ae;if(t.type==="stylesheet"&&(typeof u.media!="string"||matchMedia(u.media).matches!==!1)&&(t.state.loading&4)===0){if(t.instance===null){var e=ia(u.href),n=l.querySelector(Se(e));if(n){l=n._p,l!==null&&typeof l=="object"&&typeof l.then=="function"&&(a.count++,a=Hn.bind(a),l.then(a,a)),t.state.loading|=4,t.instance=n,ol(n);return}n=l.ownerDocument||l,u=Wo(u),(e=Jl.get(e))&&Tf(u,e),n=n.createElement("link"),ol(n);var c=n;c._p=new Promise(function(i,f){c.onload=i,c.onerror=f}),rl(n,"link",u),t.instance=n}a.stylesheets===null&&(a.stylesheets=new Map),a.stylesheets.set(t,l),(l=t.state.preload)&&(t.state.loading&3)===0&&(a.count++,t=Hn.bind(a),l.addEventListener("load",t),l.addEventListener("error",t))}}function uy(){if(ae===null)throw Error(g(475));var l=ae;return l.stylesheets&&l.count===0&&Ni(l,l.stylesheets),0{"use strict";function ad(){if(!(typeof __REACT_DEVTOOLS_GLOBAL_HOOK__>"u"||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!="function"))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(ad)}catch(l){console.error(l)}}ad(),ed.exports=ud()});var _l=Fn(ya(),1),cd=Fn(nd(),1),id=_l.createContext(null);function dy(){let l=_l.useContext(id);if(!l)throw new Error("RenderContext not found");return l}function vy(){return dy().model}function Wn(l){let t=vy(),[u,a]=_l.useState(t.get(l));return _l.useEffect(()=>{let e=()=>a(t.get(l));return t.on(`change:${l}`,e),()=>t.off(`change:${l}`,e)},[t,l]),[u,e=>{t.set(l,e),t.save_changes()}]}function fd(l){return({el:t,model:u,experimental:a})=>{let e=cd.createRoot(t);return e.render(_l.createElement(_l.StrictMode,null,_l.createElement(id.Provider,{value:{model:u,experimental:a}},_l.createElement(l)))),()=>e.unmount()}}var b=Fn(ya()),st=b.default.forwardRef(({className:l="",variant:t="default",...u},a)=>b.default.createElement("button",{ref:a,className:`inline-flex items-center justify-center rounded-md text-sm font-medium focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 ${{default:"bg-gray-200 active:bg-gray-300",ghost:"active:bg-gray-100/50"}[t]} ${l}`,...u}));st.displayName="Button";var hy=["#000000","#FFFFFF","#C0C0C0","#FF0000","#FFFF00","#00FF00","#00FFFF","#0000FF","#FF00FF","#FFFF80","#00FF80","#80FFFF","#8080FF","#FF0080"],yy=4096;function ry(){let l=(0,b.useRef)(null),t=(0,b.useRef)(null),[u,a]=(0,b.useState)(!1),[e,n]=(0,b.useState)("#000000"),[c,i]=(0,b.useState)("brush"),[f,o]=(0,b.useState)({x:0,y:0}),[r,S]=(0,b.useState)(!1),[h,y]=(0,b.useState)(null),[T,D]=Wn("base64"),[J,d]=Wn("height"),[s,v]=Wn("store_background"),[m,E]=(0,b.useState)({width:0,height:0}),_=()=>l.current?.getContext("2d"),A=(z,B)=>{let O=_();if(!O)return!1;let V=Math.min(1,yy/Math.max(z,B)),el=Math.floor(z*V),bl=Math.floor(B*V);try{let nl=l.current?.toDataURL();if(l.current.width=el,l.current.height=bl,nl){let Ee=new Image;Ee.onload=()=>{O.drawImage(Ee,0,0)},Ee.src=nl}return!0}catch(nl){return console.error("Failed to resize canvases:",nl),y("Failed to resize canvas. Try reducing the window size."),!1}};(0,b.useEffect)(()=>{let z,B=()=>{let V=l.current?.parentElement;if(!V)return;let el=V.clientWidth,bl=V.clientHeight;if(N.current){let nl=new Image;nl.onload=()=>{let Ee=nl.width/nl.height,gy=el/bl;el=Math.min(el,nl.width),bl=nl.height,A(el,bl)&&E({width:el,height:bl})},nl.src=`data:image/png;base64,${N.current}`}else A(el,bl)&&E({width:el,height:bl})},O=()=>{clearTimeout(z),z=setTimeout(B,250)};return window.addEventListener("resize",O),B(),()=>{window.removeEventListener("resize",O),clearTimeout(z)}},[]),(0,b.useEffect)(()=>{let z=l.current;if(!z)return;let B=el=>{el.preventDefault();let bl=el.touches[0],nl=z.getBoundingClientRect();_f(bl.clientX-nl.left,bl.clientY-nl.top)},O=el=>{el.preventDefault();let bl=el.touches[0],nl=z.getBoundingClientRect();Uf(bl.clientX-nl.left,bl.clientY-nl.top)},V=el=>{el.preventDefault(),kn()};return z.addEventListener("touchstart",B),z.addEventListener("touchmove",O),z.addEventListener("touchend",V),()=>{z.removeEventListener("touchstart",B),z.removeEventListener("touchmove",O),z.removeEventListener("touchend",V)}},[]);let M=(0,b.useRef)(""),Z=(0,b.useRef)(!1),N=(0,b.useRef)(""),[Wl,Ou]=(0,b.useState)(0);(0,b.useEffect)(()=>{N.current=T},[]);let _f=(z,B)=>{let O=_();if(O)try{O.beginPath(),O.moveTo(z,B),a(!0)}catch(V){console.error("Failed to start drawing:",V),y("Failed to start drawing. Try refreshing the page.")}},Uf=(z,B)=>{if(!u)return;let O=_();if(O)try{O.lineTo(z,B),c==="eraser"?(O.save(),O.globalCompositeOperation="destination-out",O.strokeStyle="#000000",O.lineWidth=20,O.lineCap="round",O.stroke(),O.restore()):(O.strokeStyle=e,O.lineWidth=c==="marker"?8:2,O.lineCap="round",O.stroke())}catch(V){console.error("Failed to draw:",V),y("Failed to draw. Try refreshing the page."),a(!1)}},kn=()=>{if(u){try{Ou(z=>z+1)}catch(z){console.error("Failed to complete drawing:",z),y("Failed to complete drawing. Try refreshing the page.")}a(!1)}};(0,b.useEffect)(()=>{let z=_();if(!z||!l.current||!T)return;if(T===M.current){let V=l.current;if(V&&V.width>0&&V.height>0)try{if(z.getImageData(0,0,V.width,V.height).data.some(nl=>nl!==0))return}catch{}}let B=l.current;if(B.width===0||B.height===0)return;Z.current=!0;let O=new Image;O.onload=()=>{z.clearRect(0,0,B.width,B.height),z.drawImage(O,0,0,O.width,O.height),M.current=T,Z.current=!1},O.onerror=V=>{console.error("Failed to load image:",V),Z.current=!1},O.src=`data:image/png;base64,${T}`},[T,m.width,m.height]),(0,b.useEffect)(()=>{if(!l.current||Wl===0||Z.current)return;let z=document.createElement("canvas");z.width=l.current.width,z.height=l.current.height;let B=z.getContext("2d",{alpha:!0});if(B){B.clearRect(0,0,z.width,z.height),s&&(B.fillStyle="#FFFFFF",B.fillRect(0,0,z.width,z.height)),B.globalCompositeOperation="source-over",B.drawImage(l.current,0,0);try{let O=z.toDataURL("image/png");D(O.split(",")[1])}catch(O){console.error("Failed to export canvas:",O),y("Failed to export canvas. Try refreshing the page.")}}},[s,m,Wl]);let sd=z=>{let B=z.currentTarget.getBoundingClientRect();_f(z.clientX-B.left,z.clientY-B.top)},od=z=>{let B=z.currentTarget.getBoundingClientRect();Uf(z.clientX-B.left,z.clientY-B.top)},dd=z=>{S(!0),o({x:z.clientX-(t.current?.offsetLeft||0),y:z.clientY-(t.current?.offsetTop||0)})},vd=z=>{if(r){let B=z.clientX-f.x,O=z.clientY-f.y;t.current&&(t.current.style.left=`${B}px`,t.current.style.top=`${O}px`)}},Hf=()=>{S(!1)},hd=()=>b.default.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",width:"24",height:"24",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round"},b.default.createElement("rect",{x:"3",y:"3",width:"18",height:"18",rx:"2",ry:"2"}),b.default.createElement("rect",{x:"7",y:"7",width:"10",height:"10",rx:"1",ry:"1",fill:"currentColor",fillOpacity:"0.2"}));return b.default.createElement("div",{className:"bg-teal-600 w-full overflow-hidden",style:{height:`${J}px`}},h&&b.default.createElement("div",{className:"absolute top-0 left-0 right-0 bg-red-500 text-white p-2 text-center"},h,b.default.createElement("button",{className:"ml-2 underline",onClick:()=>y(null)},"Dismiss")),b.default.createElement("div",{ref:t,className:"absolute bg-white border-2 border-gray-200 shadow-md flex flex-col",style:{width:"90%",height:"90%",left:"50%",top:"50%",transform:"translate(-50%, -50%)",minWidth:"400px",minHeight:"300px"}},b.default.createElement("div",{className:"bg-blue-900 text-white px-2 py-1 flex justify-between items-center cursor-move",onMouseDown:dd,onMouseMove:vd,onMouseUp:Hf,onMouseLeave:Hf},b.default.createElement("span",{className:"text-white"},"untitled - Paint"),b.default.createElement("div",{className:"flex gap-1"},b.default.createElement(st,{variant:"ghost",className:"h-5 w-5 p-0 min-w-0 text-white hover:bg-blue-700"},"_"),b.default.createElement(st,{variant:"ghost",className:"h-5 w-5 p-0 min-w-0 text-white hover:bg-blue-700"},"\u25A1"),b.default.createElement(st,{variant:"ghost",className:"h-5 w-5 p-0 min-w-0 text-white hover:bg-blue-700"},"\xD7"))),b.default.createElement("div",{className:"bg-gray-300 px-2 py-1 text-sm text-black"},b.default.createElement("span",{className:"mr-4 text-black"},"File"),b.default.createElement("span",{className:"mr-4 text-black"},"Edit"),b.default.createElement("span",{className:"mr-4 text-black"},"View"),b.default.createElement("span",{className:"mr-4 text-black"},"Image"),b.default.createElement("span",{className:"mr-4 text-black"},"Options"),b.default.createElement("span",{className:"text-black"},"Help")),b.default.createElement("div",{className:"flex flex-1 min-h-0"},b.default.createElement("div",{className:"w-8 bg-gray-300 p-0.5 border-r border-gray-400"},b.default.createElement(st,{variant:"ghost",className:`w-7 h-7 p-0 min-w-0 mb-0.5 ${c==="brush"?"bg-gray-300 border border-gray-400 shadow-inner":""}`,onClick:()=>i("brush"),title:"Brush"},b.default.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",className:"w-5 h-5 text-black"},b.default.createElement("path",{d:"M17 3a2.85 2.83 0 1 1 4 4L7.5 20.5 2 22l1.5-5.5L17 3z"}))),b.default.createElement(st,{variant:"ghost",className:`w-7 h-7 p-0 min-w-0 mb-0.5 ${c==="marker"?"bg-gray-300 border border-gray-400 shadow-inner":""}`,onClick:()=>i("marker"),title:"Thick Marker"},b.default.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"4",strokeLinecap:"round",strokeLinejoin:"round",className:"w-5 h-5 text-black"},b.default.createElement("path",{d:"M17 3a2.85 2.83 0 1 1 4 4L7.5 20.5 2 22l1.5-5.5L17 3z"}))),b.default.createElement(st,{variant:"ghost",className:`w-7 h-7 p-0 min-w-0 mb-0.5 ${c==="eraser"?"bg-gray-300 border border-gray-400 shadow-inner":""}`,onClick:()=>i("eraser"),title:"Eraser"},b.default.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",className:"w-6 h-6 text-black"},b.default.createElement("path",{d:"M7 21h10"}),b.default.createElement("path",{d:"M5.5 13.5L13 6c.83-.83 2.17-.83 3 0l2 2c.83.83.83 2.17 0 3l-7.5 7.5c-.83.83-2.17.83-3 0l-2-2c-.83-.83-.83-2.17 0-3z"}))),b.default.createElement("div",{className:"w-7 h-0.5 bg-gray-400 my-1"}),b.default.createElement(st,{variant:"ghost",className:`w-7 h-7 p-0 min-w-0 mb-0.5 ${s?"bg-gray-300 border border-gray-400 shadow-inner":""}`,onClick:()=>v(!s),title:"Store White Background"},b.default.createElement(hd,null)),b.default.createElement("div",{className:"w-7 h-0.5 bg-gray-400 my-1"}),b.default.createElement(st,{variant:"ghost",className:"w-7 h-7 p-0 min-w-0 mb-0.5",onClick:()=>{let z=l.current;if(z){let B=z.getContext("2d");if(B)if(B.clearRect(0,0,z.width,z.height),N.current){Z.current=!0;let O=new Image;O.onload=()=>{B.drawImage(O,0,0,O.width,O.height),Z.current=!1,Ou(V=>V+1)},O.onerror=()=>{Z.current=!1,Ou(V=>V+1)},O.src=`data:image/png;base64,${N.current}`}else Ou(O=>O+1)}},title:"Clear Canvas"},b.default.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",className:"w-5 h-5 text-black"},b.default.createElement("path",{d:"M3 12a9 9 0 0 1 9-9 9.75 9.75 0 0 1 6.74 2.74L21 8"}),b.default.createElement("path",{d:"M21 3v5h-5"}),b.default.createElement("path",{d:"M21 12a9 9 0 0 1-9 9 9.75 9.75 0 0 1-6.74-2.74L3 16"}),b.default.createElement("path",{d:"M8 16H3v5"})))),b.default.createElement("div",{className:"flex-grow overflow-hidden border border-gray-400 relative"},b.default.createElement("canvas",{ref:l,width:m.width,height:m.height,style:{width:"100%",height:"100%",background:"transparent"},onMouseDown:sd,onMouseMove:od,onMouseUp:kn,onMouseLeave:kn}))),b.default.createElement("div",{className:"flex bg-gray-300 p-1 border-t border-gray-400"},b.default.createElement("div",{className:"flex flex-wrap gap-1"},hy.map(z=>b.default.createElement(st,{key:z,variant:"ghost",className:`w-6 h-6 p-0 min-w-0 ${e===z?"ring-1 ring-gray-600":""}`,style:{backgroundColor:z},onClick:()=>n(z)})))),b.default.createElement("div",{className:"bg-gray-300 px-2 py-1 text-xs border-t border-gray-400 text-black"},"For Help, click Help Topics on the Help Menu.")))}var my=fd(ry),Hy={render:my};export{Hy as default}; +`+u.stack}}function sa(l){var t=l,u=l;if(l.alternate)for(;t.return;)t=t.return;else{l=t;do t=l,(t.flags&4098)!==0&&(u=t.return),l=t.return;while(l)}return t.tag===3?u:null}function Bs(l){if(l.tag===13){var t=l.memoizedState;if(t===null&&(l=l.alternate,l!==null&&(t=l.memoizedState)),t!==null)return t.dehydrated}return null}function h0(l){if(sa(l)!==l)throw Error(g(188))}function Wd(l){var t=l.alternate;if(!t){if(t=sa(l),t===null)throw Error(g(188));return t!==l?null:l}for(var u=l,a=t;;){var e=u.return;if(e===null)break;var n=e.alternate;if(n===null){if(a=e.return,a!==null){u=a;continue}break}if(e.child===n.child){for(n=e.child;n;){if(n===u)return h0(e),l;if(n===a)return h0(e),t;n=n.sibling}throw Error(g(188))}if(u.return!==a.return)u=e,a=n;else{for(var c=!1,i=e.child;i;){if(i===u){c=!0,u=e,a=n;break}if(i===a){c=!0,a=e,u=n;break}i=i.sibling}if(!c){for(i=n.child;i;){if(i===u){c=!0,u=n,a=e;break}if(i===a){c=!0,a=n,u=e;break}i=i.sibling}if(!c)throw Error(g(189))}}if(u.alternate!==a)throw Error(g(190))}if(u.tag!==3)throw Error(g(188));return u.stateNode.current===u?l:t}function qs(l){var t=l.tag;if(t===5||t===26||t===27||t===6)return l;for(l=l.child;l!==null;){if(t=qs(l),t!==null)return t;l=l.sibling}return null}var pa=Array.isArray,K=jd.__DOM_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE,su={pending:!1,data:null,method:null,action:null},Kc=[],xu=-1;function ft(l){return{current:l}}function ol(l){0>xu||(l.current=Kc[xu],Kc[xu]=null,xu--)}function W(l,t){xu++,Kc[xu]=l.current,l.current=t}var et=ft(null),Wa=ft(null),jt=ft(null),en=ft(null);function nn(l,t){switch(W(jt,t),W(Wa,l),W(et,null),l=t.nodeType,l){case 9:case 11:t=(t=t.documentElement)&&(t=t.namespaceURI)?rs(t):0;break;default:if(l=l===8?t.parentNode:t,t=l.tagName,l=l.namespaceURI)l=rs(l),t=Jo(l,t);else switch(t){case"svg":t=1;break;case"math":t=2;break;default:t=0}}ol(et),W(et,t)}function la(){ol(et),ol(Wa),ol(jt)}function wc(l){l.memoizedState!==null&&W(en,l);var t=et.current,u=Jo(t,l.type);t!==u&&(W(Wa,l),W(et,u))}function cn(l){Wa.current===l&&(ol(et),ol(Wa)),en.current===l&&(ol(en),ne._currentValue=su)}var Jc=Object.prototype.hasOwnProperty,xi=cl.unstable_scheduleCallback,hc=cl.unstable_cancelCallback,kd=cl.unstable_shouldYield,Fd=cl.unstable_requestPaint,nt=cl.unstable_now,$d=cl.unstable_getCurrentPriorityLevel,Ys=cl.unstable_ImmediatePriority,xs=cl.unstable_UserBlockingPriority,fn=cl.unstable_NormalPriority,Pd=cl.unstable_LowPriority,Cs=cl.unstable_IdlePriority,Id=cl.log,lv=cl.unstable_setDisableYieldValue,se=null,pl=null;function tv(l){if(pl&&typeof pl.onCommitFiberRoot=="function")try{pl.onCommitFiberRoot(se,l,void 0,(l.current.flags&128)===128)}catch{}}function Qt(l){if(typeof Id=="function"&&lv(l),pl&&typeof pl.setStrictMode=="function")try{pl.setStrictMode(se,l)}catch{}}var Nl=Math.clz32?Math.clz32:ev,uv=Math.log,av=Math.LN2;function ev(l){return l>>>=0,l===0?32:31-(uv(l)/av|0)|0}var He=128,pe=4194304;function eu(l){var t=l&42;if(t!==0)return t;switch(l&-l){case 1:return 1;case 2:return 2;case 4:return 4;case 8:return 8;case 16:return 16;case 32:return 32;case 64:return 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:return l&4194176;case 4194304:case 8388608:case 16777216:case 33554432:return l&62914560;case 67108864:return 67108864;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 0;default:return l}}function Bn(l,t){var u=l.pendingLanes;if(u===0)return 0;var a=0,e=l.suspendedLanes,n=l.pingedLanes,c=l.warmLanes;l=l.finishedLanes!==0;var i=u&134217727;return i!==0?(u=i&~e,u!==0?a=eu(u):(n&=i,n!==0?a=eu(n):l||(c=i&~c,c!==0&&(a=eu(c))))):(i=u&~e,i!==0?a=eu(i):n!==0?a=eu(n):l||(c=u&~c,c!==0&&(a=eu(c)))),a===0?0:t!==0&&t!==a&&(t&e)===0&&(e=a&-a,c=t&-t,e>=c||e===32&&(c&4194176)!==0)?t:a}function oe(l,t){return(l.pendingLanes&~(l.suspendedLanes&~l.pingedLanes)&t)===0}function nv(l,t){switch(l){case 1:case 2:case 4:case 8:return t+250;case 16:case 32: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:return t+5e3;case 4194304:case 8388608:case 16777216:case 33554432:return-1;case 67108864:case 134217728:case 268435456:case 536870912:case 1073741824:return-1;default:return-1}}function Xs(){var l=He;return He<<=1,(He&4194176)===0&&(He=128),l}function Gs(){var l=pe;return pe<<=1,(pe&62914560)===0&&(pe=4194304),l}function yc(l){for(var t=[],u=0;31>u;u++)t.push(l);return t}function de(l,t){l.pendingLanes|=t,t!==268435456&&(l.suspendedLanes=0,l.pingedLanes=0,l.warmLanes=0)}function cv(l,t,u,a,e,n){var c=l.pendingLanes;l.pendingLanes=u,l.suspendedLanes=0,l.pingedLanes=0,l.warmLanes=0,l.expiredLanes&=u,l.entangledLanes&=u,l.errorRecoveryDisabledLanes&=u,l.shellSuspendCounter=0;var i=l.entanglements,f=l.expirationTimes,o=l.hiddenUpdates;for(u=c&~u;0"u"||typeof window.document>"u"||typeof window.document.createElement>"u"),ov=RegExp("^[:A-Z_a-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD][:A-Z_a-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD\\-.0-9\\u00B7\\u0300-\\u036F\\u203F-\\u2040]*$"),r0={},m0={};function dv(l){return Jc.call(m0,l)?!0:Jc.call(r0,l)?!1:ov.test(l)?m0[l]=!0:(r0[l]=!0,!1)}function we(l,t,u){if(dv(t))if(u===null)l.removeAttribute(t);else{switch(typeof u){case"undefined":case"function":case"symbol":l.removeAttribute(t);return;case"boolean":var a=t.toLowerCase().slice(0,5);if(a!=="data-"&&a!=="aria-"){l.removeAttribute(t);return}}l.setAttribute(t,""+u)}}function Ne(l,t,u){if(u===null)l.removeAttribute(t);else{switch(typeof u){case"undefined":case"function":case"symbol":case"boolean":l.removeAttribute(t);return}l.setAttribute(t,""+u)}}function dt(l,t,u,a){if(a===null)l.removeAttribute(u);else{switch(typeof a){case"undefined":case"function":case"symbol":case"boolean":l.removeAttribute(u);return}l.setAttributeNS(t,u,""+a)}}function Gl(l){switch(typeof l){case"bigint":case"boolean":case"number":case"string":case"undefined":return l;case"object":return l;default:return""}}function ws(l){var t=l.type;return(l=l.nodeName)&&l.toLowerCase()==="input"&&(t==="checkbox"||t==="radio")}function vv(l){var t=ws(l)?"checked":"value",u=Object.getOwnPropertyDescriptor(l.constructor.prototype,t),a=""+l[t];if(!l.hasOwnProperty(t)&&typeof u<"u"&&typeof u.get=="function"&&typeof u.set=="function"){var e=u.get,n=u.set;return Object.defineProperty(l,t,{configurable:!0,get:function(){return e.call(this)},set:function(c){a=""+c,n.call(this,c)}}),Object.defineProperty(l,t,{enumerable:u.enumerable}),{getValue:function(){return a},setValue:function(c){a=""+c},stopTracking:function(){l._valueTracker=null,delete l[t]}}}}function sn(l){l._valueTracker||(l._valueTracker=vv(l))}function Js(l){if(!l)return!1;var t=l._valueTracker;if(!t)return!0;var u=t.getValue(),a="";return l&&(a=ws(l)?l.checked?"true":"false":l.value),l=a,l!==u?(t.setValue(l),!0):!1}function on(l){if(l=l||(typeof document<"u"?document:void 0),typeof l>"u")return null;try{return l.activeElement||l.body}catch{return l.body}}var hv=/[\n"\\]/g;function jl(l){return l.replace(hv,function(t){return"\\"+t.charCodeAt(0).toString(16)+" "})}function kc(l,t,u,a,e,n,c,i){l.name="",c!=null&&typeof c!="function"&&typeof c!="symbol"&&typeof c!="boolean"?l.type=c:l.removeAttribute("type"),t!=null?c==="number"?(t===0&&l.value===""||l.value!=t)&&(l.value=""+Gl(t)):l.value!==""+Gl(t)&&(l.value=""+Gl(t)):c!=="submit"&&c!=="reset"||l.removeAttribute("value"),t!=null?Fc(l,c,Gl(t)):u!=null?Fc(l,c,Gl(u)):a!=null&&l.removeAttribute("value"),e==null&&n!=null&&(l.defaultChecked=!!n),e!=null&&(l.checked=e&&typeof e!="function"&&typeof e!="symbol"),i!=null&&typeof i!="function"&&typeof i!="symbol"&&typeof i!="boolean"?l.name=""+Gl(i):l.removeAttribute("name")}function Ws(l,t,u,a,e,n,c,i){if(n!=null&&typeof n!="function"&&typeof n!="symbol"&&typeof n!="boolean"&&(l.type=n),t!=null||u!=null){if(!(n!=="submit"&&n!=="reset"||t!=null))return;u=u!=null?""+Gl(u):"",t=t!=null?""+Gl(t):u,i||t===l.value||(l.value=t),l.defaultValue=t}a=a??e,a=typeof a!="function"&&typeof a!="symbol"&&!!a,l.checked=i?l.checked:!!a,l.defaultChecked=!!a,c!=null&&typeof c!="function"&&typeof c!="symbol"&&typeof c!="boolean"&&(l.name=c)}function Fc(l,t,u){t==="number"&&on(l.ownerDocument)===l||l.defaultValue===""+u||(l.defaultValue=""+u)}function Ju(l,t,u,a){if(l=l.options,t){t={};for(var e=0;e=Ba),A0=" ",M0=!1;function t1(l,t){switch(l){case"keyup":return Zv.indexOf(t.keyCode)!==-1;case"keydown":return t.keyCode!==229;case"keypress":case"mousedown":case"focusout":return!0;default:return!1}}function u1(l){return l=l.detail,typeof l=="object"&&"data"in l?l.data:null}var Xu=!1;function Lv(l,t){switch(l){case"compositionend":return u1(t);case"keypress":return t.which!==32?null:(M0=!0,A0);case"textInput":return l=t.data,l===A0&&M0?null:l;default:return null}}function Vv(l,t){if(Xu)return l==="compositionend"||!ji&&t1(l,t)?(l=Is(),We=Qi=Zt=null,Xu=!1,l):null;switch(l){case"paste":return null;case"keypress":if(!(t.ctrlKey||t.altKey||t.metaKey)||t.ctrlKey&&t.altKey){if(t.char&&1=t)return{node:u,offset:t-l};l=a}l:{for(;u;){if(u.nextSibling){u=u.nextSibling;break l}u=u.parentNode}u=void 0}u=U0(u)}}function c1(l,t){return l&&t?l===t?!0:l&&l.nodeType===3?!1:t&&t.nodeType===3?c1(l,t.parentNode):"contains"in l?l.contains(t):l.compareDocumentPosition?!!(l.compareDocumentPosition(t)&16):!1:!1}function i1(l){l=l!=null&&l.ownerDocument!=null&&l.ownerDocument.defaultView!=null?l.ownerDocument.defaultView:window;for(var t=on(l.document);t instanceof l.HTMLIFrameElement;){try{var u=typeof t.contentWindow.location.href=="string"}catch{u=!1}if(u)l=t.contentWindow;else break;t=on(l.document)}return t}function Li(l){var t=l&&l.nodeName&&l.nodeName.toLowerCase();return t&&(t==="input"&&(l.type==="text"||l.type==="search"||l.type==="tel"||l.type==="url"||l.type==="password")||t==="textarea"||l.contentEditable==="true")}function Pv(l,t){var u=i1(t);t=l.focusedElem;var a=l.selectionRange;if(u!==t&&t&&t.ownerDocument&&c1(t.ownerDocument.documentElement,t)){if(a!==null&&Li(t)){if(l=a.start,u=a.end,u===void 0&&(u=l),"selectionStart"in t)t.selectionStart=l,t.selectionEnd=Math.min(u,t.value.length);else if(u=(l=t.ownerDocument||document)&&l.defaultView||window,u.getSelection){u=u.getSelection();var e=t.textContent.length,n=Math.min(a.start,e);a=a.end===void 0?n:Math.min(a.end,e),!u.extend&&n>a&&(e=a,a=n,n=e),e=H0(t,n);var c=H0(t,a);e&&c&&(u.rangeCount!==1||u.anchorNode!==e.node||u.anchorOffset!==e.offset||u.focusNode!==c.node||u.focusOffset!==c.offset)&&(l=l.createRange(),l.setStart(e.node,e.offset),u.removeAllRanges(),n>a?(u.addRange(l),u.extend(c.node,c.offset)):(l.setEnd(c.node,c.offset),u.addRange(l)))}}for(l=[],u=t;u=u.parentNode;)u.nodeType===1&&l.push({element:u,left:u.scrollLeft,top:u.scrollTop});for(typeof t.focus=="function"&&t.focus(),t=0;t=document.documentMode,Gu=null,Ic=null,Ya=null,li=!1;function p0(l,t,u){var a=u.window===u?u.document:u.nodeType===9?u:u.ownerDocument;li||Gu==null||Gu!==on(a)||(a=Gu,"selectionStart"in a&&Li(a)?a={start:a.selectionStart,end:a.selectionEnd}:(a=(a.ownerDocument&&a.ownerDocument.defaultView||window).getSelection(),a={anchorNode:a.anchorNode,anchorOffset:a.anchorOffset,focusNode:a.focusNode,focusOffset:a.focusOffset}),Ya&&Pa(Ya,a)||(Ya=a,a=Dn(Ic,"onSelect"),0>=c,e-=c,bt=1<<32-Nl(t)+e|u<M?(Z=A,A=null):Z=A.sibling;var R=h(d,A,v[M],m);if(R===null){A===null&&(A=Z);break}l&&A&&R.alternate===null&&t(d,A),s=n(R,s,M),_===null?T=R:_.sibling=R,_=R,A=Z}if(M===v.length)return u(d,A),x&&nu(d,M),T;if(A===null){for(;MM?(Z=A,A=null):Z=A.sibling;var Wl=h(d,A,R.value,m);if(Wl===null){A===null&&(A=Z);break}l&&A&&Wl.alternate===null&&t(d,A),s=n(Wl,s,M),_===null?T=Wl:_.sibling=Wl,_=Wl,A=Z}if(R.done)return u(d,A),x&&nu(d,M),T;if(A===null){for(;!R.done;M++,R=v.next())R=S(d,R.value,m),R!==null&&(s=n(R,s,M),_===null?T=R:_.sibling=R,_=R);return x&&nu(d,M),T}for(A=a(A);!R.done;M++,R=v.next())R=y(A,d,M,R.value,m),R!==null&&(l&&R.alternate!==null&&A.delete(R.key===null?M:R.key),s=n(R,s,M),_===null?T=R:_.sibling=R,_=R);return l&&A.forEach(function(Du){return t(d,Du)}),x&&nu(d,M),T}function J(d,s,v,m){if(typeof v=="object"&&v!==null&&v.type===Yu&&v.key===null&&(v=v.props.children),typeof v=="object"&&v!==null){switch(v.$$typeof){case Ue:l:{for(var T=v.key;s!==null;){if(s.key===T){if(T=v.type,T===Yu){if(s.tag===7){u(d,s.sibling),m=e(s,v.props.children),m.return=d,d=m;break l}}else if(s.elementType===T||typeof T=="object"&&T!==null&&T.$$typeof===qt&&C0(T)===s.type){u(d,s.sibling),m=e(s,v.props),Aa(m,v),m.return=d,d=m;break l}u(d,s);break}else t(d,s);s=s.sibling}v.type===Yu?(m=vu(v.props.children,d.mode,m,v.key),m.return=d,d=m):(m=ln(v.type,v.key,v.props,null,d.mode,m),Aa(m,v),m.return=d,d=m)}return c(d);case Ua:l:{for(T=v.key;s!==null;){if(s.key===T)if(s.tag===4&&s.stateNode.containerInfo===v.containerInfo&&s.stateNode.implementation===v.implementation){u(d,s.sibling),m=e(s,v.children||[]),m.return=d,d=m;break l}else{u(d,s);break}else t(d,s);s=s.sibling}m=Bc(v,d.mode,m),m.return=d,d=m}return c(d);case qt:return T=v._init,v=T(v._payload),J(d,s,v,m)}if(pa(v))return E(d,s,v,m);if(Ea(v)){if(T=Ea(v),typeof T!="function")throw Error(g(150));return v=T.call(v),O(d,s,v,m)}if(typeof v.then=="function")return J(d,s,xe(v),m);if(v.$$typeof===St)return J(d,s,Xe(d,v),m);Ce(d,v)}return typeof v=="string"&&v!==""||typeof v=="number"||typeof v=="bigint"?(v=""+v,s!==null&&s.tag===6?(u(d,s.sibling),m=e(s,v),m.return=d,d=m):(u(d,s),m=Rc(v,d.mode,m),m.return=d,d=m),c(d)):u(d,s)}return function(d,s,v,m){try{le=0;var T=J(d,s,v,m);return ku=null,T}catch(A){if(A===xa)throw A;var _=Vl(29,A,null,d.mode);return _.lanes=m,_.return=d,_}finally{}}}var mu=S1(!0),b1=S1(!1),aa=ft(null),yn=ft(0);function X0(l,t){l=_t,W(yn,l),W(aa,t),_t=l|t.baseLanes}function ai(){W(yn,_t),W(aa,aa.current)}function Wi(){_t=yn.current,ol(aa),ol(yn)}var wl=ft(null),ct=null;function xt(l){var t=l.alternate;W(nl,nl.current&1),W(wl,l),ct===null&&(t===null||aa.current!==null||t.memoizedState!==null)&&(ct=l)}function E1(l){if(l.tag===22){if(W(nl,nl.current),W(wl,l),ct===null){var t=l.alternate;t!==null&&t.memoizedState!==null&&(ct=l)}}else Ct(l)}function Ct(){W(nl,nl.current),W(wl,wl.current)}function Tt(l){ol(wl),ct===l&&(ct=null),ol(nl)}var nl=ft(0);function rn(l){for(var t=l;t!==null;){if(t.tag===13){var u=t.memoizedState;if(u!==null&&(u=u.dehydrated,u===null||u.data==="$?"||u.data==="$!"))return t}else if(t.tag===19&&t.memoizedProps.revealOrder!==void 0){if((t.flags&128)!==0)return t}else if(t.child!==null){t.child.return=t,t=t.child;continue}if(t===l)break;for(;t.sibling===null;){if(t.return===null||t.return===l)return null;t=t.return}t.sibling.return=t.return,t=t.sibling}return null}var ah=typeof AbortController<"u"?AbortController:function(){var l=[],t=this.signal={aborted:!1,addEventListener:function(u,a){l.push(a)}};this.abort=function(){t.aborted=!0,l.forEach(function(u){return u()})}},eh=cl.unstable_scheduleCallback,nh=cl.unstable_NormalPriority,el={$$typeof:St,Consumer:null,Provider:null,_currentValue:null,_currentValue2:null,_threadCount:0};function ki(){return{controller:new ah,data:new Map,refCount:0}}function ye(l){l.refCount--,l.refCount===0&&eh(nh,function(){l.controller.abort()})}var Xa=null,ei=0,ea=0,Fu=null;function ch(l,t){if(Xa===null){var u=Xa=[];ei=0,ea=bf(),Fu={status:"pending",value:void 0,then:function(a){u.push(a)}}}return ei++,t.then(G0,G0),t}function G0(){if(--ei===0&&Xa!==null){Fu!==null&&(Fu.status="fulfilled");var l=Xa;Xa=null,ea=0,Fu=null;for(var t=0;tn?n:8;var c=U.T,i={};U.T=i,sf(l,!1,t,u);try{var f=e(),o=U.S;if(o!==null&&o(i,f),f!==null&&typeof f=="object"&&typeof f.then=="function"){var r=ih(f,a);Ga(l,t,r,Rl(l))}else Ga(l,t,a,Rl(l))}catch(S){Ga(l,t,{then:function(){},status:"rejected",reason:S},Rl())}finally{K.p=n,U.T=c}}function vh(){}function ii(l,t,u,a){if(l.tag!==5)throw Error(g(476));var e=J1(l).queue;w1(l,e,t,su,u===null?vh:function(){return W1(l),u(a)})}function J1(l){var t=l.memoizedState;if(t!==null)return t;t={memoizedState:su,baseState:su,baseQueue:null,queue:{pending:null,lanes:0,dispatch:null,lastRenderedReducer:Ot,lastRenderedState:su},next:null};var u={};return t.next={memoizedState:u,baseState:u,baseQueue:null,queue:{pending:null,lanes:0,dispatch:null,lastRenderedReducer:Ot,lastRenderedState:u},next:null},l.memoizedState=t,l=l.alternate,l!==null&&(l.memoizedState=t),t}function W1(l){var t=J1(l).next.queue;Ga(l,t,{},Rl())}function ff(){return ml(ne)}function k1(){return al().memoizedState}function F1(){return al().memoizedState}function hh(l){for(var t=l.return;t!==null;){switch(t.tag){case 24:case 3:var u=Rl();l=Lt(u);var a=Vt(t,l,u);a!==null&&(zl(a,t,u),Za(a,t,u)),t={cache:ki()},l.payload=t;return}t=t.return}}function yh(l,t,u){var a=Rl();u={lane:a,revertLane:0,action:u,hasEagerState:!1,eagerState:null,next:null},jn(l)?P1(t,u):(u=Ki(l,t,u,a),u!==null&&(zl(u,l,a),I1(u,t,a)))}function $1(l,t,u){var a=Rl();Ga(l,t,u,a)}function Ga(l,t,u,a){var e={lane:a,revertLane:0,action:u,hasEagerState:!1,eagerState:null,next:null};if(jn(l))P1(t,e);else{var n=l.alternate;if(l.lanes===0&&(n===null||n.lanes===0)&&(n=t.lastRenderedReducer,n!==null))try{var c=t.lastRenderedState,i=n(c,u);if(e.hasEagerState=!0,e.eagerState=i,Bl(i,c))return Xn(l,t,e,0),L===null&&Cn(),!1}catch{}finally{}if(u=Ki(l,t,e,a),u!==null)return zl(u,l,a),I1(u,t,a),!0}return!1}function sf(l,t,u,a){if(a={lane:2,revertLane:bf(),action:a,hasEagerState:!1,eagerState:null,next:null},jn(l)){if(t)throw Error(g(479))}else t=Ki(l,u,a,2),t!==null&&zl(t,l,2)}function jn(l){var t=l.alternate;return l===p||t!==null&&t===p}function P1(l,t){$u=mn=!0;var u=l.pending;u===null?t.next=t:(t.next=u.next,u.next=t),l.pending=t}function I1(l,t,u){if((u&4194176)!==0){var a=t.lanes;a&=l.pendingLanes,u|=a,t.lanes=u,Zs(l,u)}}var it={readContext:ml,use:Qn,useCallback:ll,useContext:ll,useEffect:ll,useImperativeHandle:ll,useLayoutEffect:ll,useInsertionEffect:ll,useMemo:ll,useReducer:ll,useRef:ll,useState:ll,useDebugValue:ll,useDeferredValue:ll,useTransition:ll,useSyncExternalStore:ll,useId:ll};it.useCacheRefresh=ll;it.useMemoCache=ll;it.useHostTransitionStatus=ll;it.useFormState=ll;it.useActionState=ll;it.useOptimistic=ll;var Au={readContext:ml,use:Qn,useCallback:function(l,t){return Al().memoizedState=[l,t===void 0?null:t],l},useContext:ml,useEffect:L0,useImperativeHandle:function(l,t,u){u=u!=null?u.concat([l]):null,Pe(4194308,4,Z1.bind(null,t,l),u)},useLayoutEffect:function(l,t){return Pe(4194308,4,l,t)},useInsertionEffect:function(l,t){Pe(4,2,l,t)},useMemo:function(l,t){var u=Al();t=t===void 0?null:t;var a=l();if(gu){Qt(!0);try{l()}finally{Qt(!1)}}return u.memoizedState=[a,t],a},useReducer:function(l,t,u){var a=Al();if(u!==void 0){var e=u(t);if(gu){Qt(!0);try{u(t)}finally{Qt(!1)}}}else e=t;return a.memoizedState=a.baseState=e,l={pending:null,lanes:0,dispatch:null,lastRenderedReducer:l,lastRenderedState:e},a.queue=l,l=l.dispatch=yh.bind(null,p,l),[a.memoizedState,l]},useRef:function(l){var t=Al();return l={current:l},t.memoizedState=l},useState:function(l){l=ni(l);var t=l.queue,u=$1.bind(null,p,t);return t.dispatch=u,[l.memoizedState,u]},useDebugValue:nf,useDeferredValue:function(l,t){var u=Al();return cf(u,l,t)},useTransition:function(){var l=ni(!1);return l=w1.bind(null,p,l.queue,!0,!1),Al().memoizedState=l,[!1,l]},useSyncExternalStore:function(l,t,u){var a=p,e=Al();if(x){if(u===void 0)throw Error(g(407));u=u()}else{if(u=t(),L===null)throw Error(g(349));(Y&60)!==0||O1(a,t,u)}e.memoizedState=u;var n={value:u,getSnapshot:t};return e.queue=n,L0(_1.bind(null,a,n,l),[l]),a.flags|=2048,na(9,D1.bind(null,a,n,u,t),{destroy:void 0},null),u},useId:function(){var l=Al(),t=L.identifierPrefix;if(x){var u=Et,a=bt;u=(a&~(1<<32-Nl(a)-1)).toString(32)+u,t=":"+t+"R"+u,u=gn++,0 title"))),hl(n,a,u),n[rl]=l,fl(n),a=n;break l;case"link":var c=Ts("link","href",e).get(a+(u.href||""));if(c){for(var i=0;i<\/script>",l=l.removeChild(l.firstChild);break;case"select":l=typeof a.is=="string"?e.createElement("select",{is:a.is}):e.createElement("select"),a.multiple?l.multiple=!0:a.size&&(l.size=a.size);break;default:l=typeof a.is=="string"?e.createElement(u,{is:a.is}):e.createElement(u)}}l[rl]=t,l[Ml]=a;l:for(e=t.child;e!==null;){if(e.tag===5||e.tag===6)l.appendChild(e.stateNode);else if(e.tag!==4&&e.tag!==27&&e.child!==null){e.child.return=e,e=e.child;continue}if(e===t)break l;for(;e.sibling===null;){if(e.return===null||e.return===t)break l;e=e.return}e.sibling.return=e.return,e=e.sibling}t.stateNode=l;l:switch(hl(l,u,a),u){case"button":case"input":case"select":case"textarea":l=!!a.autoFocus;break l;case"img":l=!0;break l;default:l=!1}l&&yt(t)}}return F(t),t.flags&=-16777217,null;case 6:if(l&&t.stateNode!=null)l.memoizedProps!==a&&yt(t);else{if(typeof a!="string"&&t.stateNode===null)throw Error(g(166));if(l=jt.current,za(t)){if(l=t.stateNode,u=t.memoizedProps,a=null,e=Tl,e!==null)switch(e.tag){case 27:case 5:a=e.memoizedProps}l[rl]=t,l=!!(l.nodeValue===u||a!==null&&a.suppressHydrationWarning===!0||wo(l.nodeValue,u)),l||ru(t)}else l=_n(l).createTextNode(a),l[rl]=t,t.stateNode=l}return F(t),null;case 13:if(a=t.memoizedState,l===null||l.memoizedState!==null&&l.memoizedState.dehydrated!==null){if(e=za(t),a!==null&&a.dehydrated!==null){if(l===null){if(!e)throw Error(g(318));if(e=t.memoizedState,e=e!==null?e.dehydrated:null,!e)throw Error(g(317));e[rl]=t}else he(),(t.flags&128)===0&&(t.memoizedState=null),t.flags|=4;F(t),e=!1}else $l!==null&&(Ai($l),$l=null),e=!0;if(!e)return t.flags&256?(Tt(t),t):(Tt(t),null)}if(Tt(t),(t.flags&128)!==0)return t.lanes=u,t;if(u=a!==null,l=l!==null&&l.memoizedState!==null,u){a=t.child,e=null,a.alternate!==null&&a.alternate.memoizedState!==null&&a.alternate.memoizedState.cachePool!==null&&(e=a.alternate.memoizedState.cachePool.pool);var n=null;a.memoizedState!==null&&a.memoizedState.cachePool!==null&&(n=a.memoizedState.cachePool.pool),n!==e&&(a.flags|=2048)}return u!==l&&u&&(t.child.flags|=8192),Ge(t,t.updateQueue),F(t),null;case 4:return la(),l===null&&Ef(t.stateNode.containerInfo),F(t),null;case 10:return At(t.type),F(t),null;case 19:if(ol(nl),e=t.memoizedState,e===null)return F(t),null;if(a=(t.flags&128)!==0,n=e.rendering,n===null)if(a)Oa(e,!1);else{if(I!==0||l!==null&&(l.flags&128)!==0)for(l=t.child;l!==null;){if(n=rn(l),n!==null){for(t.flags|=128,Oa(e,!1),l=n.updateQueue,t.updateQueue=l,Ge(t,l),t.subtreeFlags=0,l=u,u=t.child;u!==null;)po(u,l),u=u.sibling;return W(nl,nl.current&1|2),t.child}l=l.sibling}e.tail!==null&&nt()>zn&&(t.flags|=128,a=!0,Oa(e,!1),t.lanes=4194304)}else{if(!a)if(l=rn(n),l!==null){if(t.flags|=128,a=!0,l=l.updateQueue,t.updateQueue=l,Ge(t,l),Oa(e,!0),e.tail===null&&e.tailMode==="hidden"&&!n.alternate&&!x)return F(t),null}else 2*nt()-e.renderingStartTime>zn&&u!==536870912&&(t.flags|=128,a=!0,Oa(e,!1),t.lanes=4194304);e.isBackwards?(n.sibling=t.child,t.child=n):(l=e.last,l!==null?l.sibling=n:t.child=n,e.last=n)}return e.tail!==null?(t=e.tail,e.rendering=t,e.tail=t.sibling,e.renderingStartTime=nt(),t.sibling=null,l=nl.current,W(nl,a?l&1|2:l&1),t):(F(t),null);case 22:case 23:return Tt(t),Wi(),a=t.memoizedState!==null,l!==null?l.memoizedState!==null!==a&&(t.flags|=8192):a&&(t.flags|=8192),a?(u&536870912)!==0&&(t.flags&128)===0&&(F(t),t.subtreeFlags&6&&(t.flags|=8192)):F(t),u=t.updateQueue,u!==null&&Ge(t,u.retryQueue),u=null,l!==null&&l.memoizedState!==null&&l.memoizedState.cachePool!==null&&(u=l.memoizedState.cachePool.pool),a=null,t.memoizedState!==null&&t.memoizedState.cachePool!==null&&(a=t.memoizedState.cachePool.pool),a!==u&&(t.flags|=2048),l!==null&&ol(du),null;case 24:return u=null,l!==null&&(u=l.memoizedState.cache),t.memoizedState.cache!==u&&(t.flags|=2048),At(el),F(t),null;case 25:return null}throw Error(g(156,t.tag))}function Th(l,t){switch(Ji(t),t.tag){case 1:return l=t.flags,l&65536?(t.flags=l&-65537|128,t):null;case 3:return At(el),la(),l=t.flags,(l&65536)!==0&&(l&128)===0?(t.flags=l&-65537|128,t):null;case 26:case 27:case 5:return cn(t),null;case 13:if(Tt(t),l=t.memoizedState,l!==null&&l.dehydrated!==null){if(t.alternate===null)throw Error(g(340));he()}return l=t.flags,l&65536?(t.flags=l&-65537|128,t):null;case 19:return ol(nl),null;case 4:return la(),null;case 10:return At(t.type),null;case 22:case 23:return Tt(t),Wi(),l!==null&&ol(du),l=t.flags,l&65536?(t.flags=l&-65537|128,t):null;case 24:return At(el),null;case 25:return null;default:return null}}function Ro(l,t){switch(Ji(t),t.tag){case 3:At(el),la();break;case 26:case 27:case 5:cn(t);break;case 4:la();break;case 13:Tt(t);break;case 19:ol(nl);break;case 10:At(t.type);break;case 22:case 23:Tt(t),Wi(),l!==null&&ol(du);break;case 24:At(el)}}var zh={getCacheForType:function(l){var t=ml(el),u=t.data.get(l);return u===void 0&&(u=l(),t.data.set(l,u)),u}},Ah=typeof WeakMap=="function"?WeakMap:Map,$=0,L=null,B=null,Y=0,j=0,Ul=null,mt=!1,va=!1,rf=!1,_t=0,I=0,It=0,hu=0,mf=0,Kl=0,ca=0,Ka=null,at=null,bi=!1,gf=0,zn=1/0,An=null,wt=null,Qe=!1,cu=null,wa=0,Ei=0,Ti=null,Ja=0,zi=null;function Rl(){if(($&2)!==0&&Y!==0)return Y&-Y;if(U.T!==null){var l=ea;return l!==0?l:bf()}return Ls()}function Bo(){Kl===0&&(Kl=(Y&536870912)===0||x?Xs():536870912);var l=wl.current;return l!==null&&(l.flags|=32),Kl}function zl(l,t,u){(l===L&&j===2||l.cancelPendingCommit!==null)&&(ia(l,0),gt(l,Y,Kl,!1)),de(l,u),(($&2)===0||l!==L)&&(l===L&&(($&2)===0&&(hu|=u),I===4&>(l,Y,Kl,!1)),st(l))}function qo(l,t,u){if(($&6)!==0)throw Error(g(327));var a=!u&&(t&60)===0&&(t&l.expiredLanes)===0||oe(l,t),e=a?Dh(l,t):qc(l,t,!0),n=a;do{if(e===0){va&&!a&>(l,t,0,!1);break}else if(e===6)gt(l,t,0,!mt);else{if(u=l.current.alternate,n&&!Mh(u)){e=qc(l,t,!1),n=!1;continue}if(e===2){if(n=t,l.errorRecoveryDisabledLanes&n)var c=0;else c=l.pendingLanes&-536870913,c=c!==0?c:c&536870912?536870912:0;if(c!==0){t=c;l:{var i=l;e=Ka;var f=i.current.memoizedState.isDehydrated;if(f&&(ia(i,c).flags|=256),c=qc(i,c,!1),c!==2){if(rf&&!f){i.errorRecoveryDisabledLanes|=n,hu|=n,e=4;break l}n=at,at=e,n!==null&&Ai(n)}e=c}if(n=!1,e!==2)continue}}if(e===1){ia(l,0),gt(l,t,0,!0);break}l:{switch(a=l,e){case 0:case 1:throw Error(g(345));case 4:if((t&4194176)===t){gt(a,t,Kl,!mt);break l}break;case 2:at=null;break;case 3:case 5:break;default:throw Error(g(329))}if(a.finishedWork=u,a.finishedLanes=t,(t&62914560)===t&&(n=gf+300-nt(),10u?32:u,U.T=null,cu===null)var n=!1;else{u=Ti,Ti=null;var c=cu,i=wa;if(cu=null,wa=0,($&6)!==0)throw Error(g(331));var f=$;if($|=4,Uo(c.current),Oo(c,c.current,i,u),$=f,Se(0,!1),pl&&typeof pl.onPostCommitFiberRoot=="function")try{pl.onPostCommitFiberRoot(se,c)}catch{}n=!0}return n}finally{K.p=e,U.T=a,Qo(l,t)}}return!1}function is(l,t,u){t=Ll(u,t),t=si(l.stateNode,t,2),l=Vt(l,t,2),l!==null&&(de(l,2),st(l))}function Q(l,t,u){if(l.tag===3)is(l,l,u);else for(;t!==null;){if(t.tag===3){is(t,l,u);break}else if(t.tag===1){var a=t.stateNode;if(typeof t.type.getDerivedStateFromError=="function"||typeof a.componentDidCatch=="function"&&(wt===null||!wt.has(a))){l=Ll(u,l),u=ao(2),a=Vt(t,u,2),a!==null&&(eo(u,a,t,l),de(a,2),st(a));break}}t=t.return}}function Yc(l,t,u){var a=l.pingCache;if(a===null){a=l.pingCache=new Ah;var e=new Set;a.set(t,e)}else e=a.get(t),e===void 0&&(e=new Set,a.set(t,e));e.has(u)||(rf=!0,e.add(u),l=Hh.bind(null,l,t,u),t.then(l,l))}function Hh(l,t,u){var a=l.pingCache;a!==null&&a.delete(t),l.pingedLanes|=l.suspendedLanes&u,l.warmLanes&=~u,L===l&&(Y&u)===u&&(I===4||I===3&&(Y&62914560)===Y&&300>nt()-gf?($&2)===0&&ia(l,0):mf|=u,ca===Y&&(ca=0)),st(l)}function Zo(l,t){t===0&&(t=Gs()),l=Ft(l,t),l!==null&&(de(l,t),st(l))}function ph(l){var t=l.memoizedState,u=0;t!==null&&(u=t.retryLane),Zo(l,u)}function Nh(l,t){var u=0;switch(l.tag){case 13:var a=l.stateNode,e=l.memoizedState;e!==null&&(u=e.retryLane);break;case 19:a=l.stateNode;break;case 22:a=l.stateNode._retryCache;break;default:throw Error(g(314))}a!==null&&a.delete(t),Zo(l,u)}function Rh(l,t){return xi(l,t)}var Mn=null,qu=null,Oi=!1,On=!1,xc=!1,yu=0;function st(l){l!==qu&&l.next===null&&(qu===null?Mn=qu=l:qu=qu.next=l),On=!0,Oi||(Oi=!0,qh(Bh))}function Se(l,t){if(!xc&&On){xc=!0;do for(var u=!1,a=Mn;a!==null;){if(!t)if(l!==0){var e=a.pendingLanes;if(e===0)var n=0;else{var c=a.suspendedLanes,i=a.pingedLanes;n=(1<<31-Nl(42|l)+1)-1,n&=e&~(c&~i),n=n&201326677?n&201326677|1:n?n|2:0}n!==0&&(u=!0,fs(a,n))}else n=Y,n=Bn(a,a===L?n:0),(n&3)===0||oe(a,n)||(u=!0,fs(a,n));a=a.next}while(u);xc=!1}}function Bh(){On=Oi=!1;var l=0;yu!==0&&(Qh()&&(l=yu),yu=0);for(var t=nt(),u=null,a=Mn;a!==null;){var e=a.next,n=jo(a,t);n===0?(a.next=null,u===null?Mn=e:u.next=e,e===null&&(qu=u)):(u=a,(l!==0||(n&3)!==0)&&(On=!0)),a=e}Se(l,!1)}function jo(l,t){for(var u=l.suspendedLanes,a=l.pingedLanes,e=l.expirationTimes,n=l.pendingLanes&-62914561;0"u"?null:document;function Fo(l,t,u){var a=ha;if(a&&typeof t=="string"&&t){var e=jl(t);e='link[rel="'+l+'"][href="'+e+'"]',typeof u=="string"&&(e+='[crossorigin="'+u+'"]'),Ss.has(e)||(Ss.add(e),l={rel:l,crossOrigin:u,href:t},a.querySelector(e)===null&&(t=a.createElement("link"),hl(t,"link",l),fl(t),a.head.appendChild(t)))}}function Wh(l){Ut.D(l),Fo("dns-prefetch",l,null)}function kh(l,t){Ut.C(l,t),Fo("preconnect",l,t)}function Fh(l,t,u){Ut.L(l,t,u);var a=ha;if(a&&l&&t){var e='link[rel="preload"][as="'+jl(t)+'"]';t==="image"&&u&&u.imageSrcSet?(e+='[imagesrcset="'+jl(u.imageSrcSet)+'"]',typeof u.imageSizes=="string"&&(e+='[imagesizes="'+jl(u.imageSizes)+'"]')):e+='[href="'+jl(l)+'"]';var n=e;switch(t){case"style":n=fa(l);break;case"script":n=ya(l)}Jl.has(n)||(l=w({rel:"preload",href:t==="image"&&u&&u.imageSrcSet?void 0:l,as:t},u),Jl.set(n,l),a.querySelector(e)!==null||t==="style"&&a.querySelector(be(n))||t==="script"&&a.querySelector(Ee(n))||(t=a.createElement("link"),hl(t,"link",l),fl(t),a.head.appendChild(t)))}}function $h(l,t){Ut.m(l,t);var u=ha;if(u&&l){var a=t&&typeof t.as=="string"?t.as:"script",e='link[rel="modulepreload"][as="'+jl(a)+'"][href="'+jl(l)+'"]',n=e;switch(a){case"audioworklet":case"paintworklet":case"serviceworker":case"sharedworker":case"worker":case"script":n=ya(l)}if(!Jl.has(n)&&(l=w({rel:"modulepreload",href:l},t),Jl.set(n,l),u.querySelector(e)===null)){switch(a){case"audioworklet":case"paintworklet":case"serviceworker":case"sharedworker":case"worker":case"script":if(u.querySelector(Ee(n)))return}a=u.createElement("link"),hl(a,"link",l),fl(a),u.head.appendChild(a)}}}function Ph(l,t,u){Ut.S(l,t,u);var a=ha;if(a&&l){var e=wu(a).hoistableStyles,n=fa(l);t=t||"default";var c=e.get(n);if(!c){var i={loading:0,preload:null};if(c=a.querySelector(be(n)))i.loading=5;else{l=w({rel:"stylesheet",href:l,"data-precedence":t},u),(u=Jl.get(n))&&Tf(l,u);var f=c=a.createElement("link");fl(f),hl(f,"link",l),f._p=new Promise(function(o,r){f.onload=o,f.onerror=r}),f.addEventListener("load",function(){i.loading|=1}),f.addEventListener("error",function(){i.loading|=2}),i.loading|=4,tn(c,t,a)}c={type:"stylesheet",instance:c,count:1,state:i},e.set(n,c)}}}function Ih(l,t){Ut.X(l,t);var u=ha;if(u&&l){var a=wu(u).hoistableScripts,e=ya(l),n=a.get(e);n||(n=u.querySelector(Ee(e)),n||(l=w({src:l,async:!0},t),(t=Jl.get(e))&&zf(l,t),n=u.createElement("script"),fl(n),hl(n,"link",l),u.head.appendChild(n)),n={type:"script",instance:n,count:1,state:null},a.set(e,n))}}function ly(l,t){Ut.M(l,t);var u=ha;if(u&&l){var a=wu(u).hoistableScripts,e=ya(l),n=a.get(e);n||(n=u.querySelector(Ee(e)),n||(l=w({src:l,async:!0,type:"module"},t),(t=Jl.get(e))&&zf(l,t),n=u.createElement("script"),fl(n),hl(n,"link",l),u.head.appendChild(n)),n={type:"script",instance:n,count:1,state:null},a.set(e,n))}}function bs(l,t,u,a){var e=(e=jt.current)?Un(e):null;if(!e)throw Error(g(446));switch(l){case"meta":case"title":return null;case"style":return typeof u.precedence=="string"&&typeof u.href=="string"?(t=fa(u.href),u=wu(e).hoistableStyles,a=u.get(t),a||(a={type:"style",instance:null,count:0,state:null},u.set(t,a)),a):{type:"void",instance:null,count:0,state:null};case"link":if(u.rel==="stylesheet"&&typeof u.href=="string"&&typeof u.precedence=="string"){l=fa(u.href);var n=wu(e).hoistableStyles,c=n.get(l);if(c||(e=e.ownerDocument||e,c={type:"stylesheet",instance:null,count:0,state:{loading:0,preload:null}},n.set(l,c),(n=e.querySelector(be(l)))&&!n._p&&(c.instance=n,c.state.loading=5),Jl.has(l)||(u={rel:"preload",as:"style",href:u.href,crossOrigin:u.crossOrigin,integrity:u.integrity,media:u.media,hrefLang:u.hrefLang,referrerPolicy:u.referrerPolicy},Jl.set(l,u),n||ty(e,l,u,c.state))),t&&a===null)throw Error(g(528,""));return c}if(t&&a!==null)throw Error(g(529,""));return null;case"script":return t=u.async,u=u.src,typeof u=="string"&&t&&typeof t!="function"&&typeof t!="symbol"?(t=ya(u),u=wu(e).hoistableScripts,a=u.get(t),a||(a={type:"script",instance:null,count:0,state:null},u.set(t,a)),a):{type:"void",instance:null,count:0,state:null};default:throw Error(g(444,l))}}function fa(l){return'href="'+jl(l)+'"'}function be(l){return'link[rel="stylesheet"]['+l+"]"}function $o(l){return w({},l,{"data-precedence":l.precedence,precedence:null})}function ty(l,t,u,a){l.querySelector('link[rel="preload"][as="style"]['+t+"]")?a.loading=1:(t=l.createElement("link"),a.preload=t,t.addEventListener("load",function(){return a.loading|=1}),t.addEventListener("error",function(){return a.loading|=2}),hl(t,"link",u),fl(t),l.head.appendChild(t))}function ya(l){return'[src="'+jl(l)+'"]'}function Ee(l){return"script[async]"+l}function Es(l,t,u){if(t.count++,t.instance===null)switch(t.type){case"style":var a=l.querySelector('style[data-href~="'+jl(u.href)+'"]');if(a)return t.instance=a,fl(a),a;var e=w({},u,{"data-href":u.href,"data-precedence":u.precedence,href:null,precedence:null});return a=(l.ownerDocument||l).createElement("style"),fl(a),hl(a,"style",e),tn(a,u.precedence,l),t.instance=a;case"stylesheet":e=fa(u.href);var n=l.querySelector(be(e));if(n)return t.state.loading|=4,t.instance=n,fl(n),n;a=$o(u),(e=Jl.get(e))&&Tf(a,e),n=(l.ownerDocument||l).createElement("link"),fl(n);var c=n;return c._p=new Promise(function(i,f){c.onload=i,c.onerror=f}),hl(n,"link",a),t.state.loading|=4,tn(n,u.precedence,l),t.instance=n;case"script":return n=ya(u.src),(e=l.querySelector(Ee(n)))?(t.instance=e,fl(e),e):(a=u,(e=Jl.get(n))&&(a=w({},u),zf(a,e)),l=l.ownerDocument||l,e=l.createElement("script"),fl(e),hl(e,"link",a),l.head.appendChild(e),t.instance=e);case"void":return null;default:throw Error(g(443,t.type))}else t.type==="stylesheet"&&(t.state.loading&4)===0&&(a=t.instance,t.state.loading|=4,tn(a,u.precedence,l));return t.instance}function tn(l,t,u){for(var a=u.querySelectorAll('link[rel="stylesheet"][data-precedence],style[data-precedence]'),e=a.length?a[a.length-1]:null,n=e,c=0;c title"):null)}function uy(l,t,u){if(u===1||t.itemProp!=null)return!1;switch(l){case"meta":case"title":return!0;case"style":if(typeof t.precedence!="string"||typeof t.href!="string"||t.href==="")break;return!0;case"link":if(typeof t.rel!="string"||typeof t.href!="string"||t.href===""||t.onLoad||t.onError)break;switch(t.rel){case"stylesheet":return l=t.disabled,typeof t.precedence=="string"&&l==null;default:return!0}case"script":if(t.async&&typeof t.async!="function"&&typeof t.async!="symbol"&&!t.onLoad&&!t.onError&&t.src&&typeof t.src=="string")return!0}return!1}function Po(l){return!(l.type==="stylesheet"&&(l.state.loading&3)===0)}var ee=null;function ay(){}function ey(l,t,u){if(ee===null)throw Error(g(475));var a=ee;if(t.type==="stylesheet"&&(typeof u.media!="string"||matchMedia(u.media).matches!==!1)&&(t.state.loading&4)===0){if(t.instance===null){var e=fa(u.href),n=l.querySelector(be(e));if(n){l=n._p,l!==null&&typeof l=="object"&&typeof l.then=="function"&&(a.count++,a=Hn.bind(a),l.then(a,a)),t.state.loading|=4,t.instance=n,fl(n);return}n=l.ownerDocument||l,u=$o(u),(e=Jl.get(e))&&Tf(u,e),n=n.createElement("link"),fl(n);var c=n;c._p=new Promise(function(i,f){c.onload=i,c.onerror=f}),hl(n,"link",u),t.instance=n}a.stylesheets===null&&(a.stylesheets=new Map),a.stylesheets.set(t,l),(l=t.state.preload)&&(t.state.loading&3)===0&&(a.count++,t=Hn.bind(a),l.addEventListener("load",t),l.addEventListener("error",t))}}function ny(){if(ee===null)throw Error(g(475));var l=ee;return l.stylesheets&&l.count===0&&Ni(l,l.stylesheets),0{"use strict";function cd(){if(!(typeof __REACT_DEVTOOLS_GLOBAL_HOOK__>"u"||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!="function"))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(cd)}catch(l){console.error(l)}}cd(),id.exports=nd()});var Dl=Fn(ra(),1),sd=Fn(fd(),1),od=Dl.createContext(null);function yy(){let l=Dl.useContext(od);if(!l)throw new Error("RenderContext not found");return l}function ry(){return yy().model}function Wn(l){let t=ry(),[u,a]=Dl.useState(t.get(l));return Dl.useEffect(()=>{let e=()=>a(t.get(l));return t.on(`change:${l}`,e),()=>t.off(`change:${l}`,e)},[t,l]),[u,e=>{t.set(l,e),t.save_changes()}]}function dd(l){return({el:t,model:u,experimental:a})=>{let e=sd.createRoot(t);return e.render(Dl.createElement(Dl.StrictMode,null,Dl.createElement(od.Provider,{value:{model:u,experimental:a}},Dl.createElement(l)))),()=>e.unmount()}}var b=Fn(ra()),ot=b.default.forwardRef(({className:l="",variant:t="default",...u},a)=>b.default.createElement("button",{ref:a,className:`inline-flex items-center justify-center rounded-md text-sm font-medium focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 ${{default:"bg-gray-200 active:bg-gray-300",ghost:"active:bg-gray-100/50"}[t]} ${l}`,...u}));ot.displayName="Button";var my=["#000000","#FFFFFF","#C0C0C0","#FF0000","#FFFF00","#00FF00","#00FFFF","#0000FF","#FF00FF","#FFFF80","#00FF80","#80FFFF","#8080FF","#FF0080"],gy=4096;function Sy(){let l=(0,b.useRef)(null),t=(0,b.useRef)(null),[u,a]=(0,b.useState)(!1),[e,n]=(0,b.useState)("#000000"),[c,i]=(0,b.useState)("brush"),[f,o]=(0,b.useState)({x:0,y:0}),[r,S]=(0,b.useState)(!1),[h,y]=(0,b.useState)(null),[E,O]=Wn("base64"),[J,d]=Wn("height"),[s,v]=Wn("store_background"),[m,T]=(0,b.useState)({width:0,height:0}),_=()=>l.current?.getContext("2d"),A=(z,N)=>{let D=_();if(!D)return!1;let V=Math.min(1,gy/Math.max(z,N)),gl=Math.floor(z*V),ql=Math.floor(N*V);try{let Sl=l.current?.toDataURL();if(l.current.width=gl,l.current.height=ql,Sl){let lt=new Image;lt.onload=()=>{D.drawImage(lt,0,0)},lt.src=Sl}return!0}catch(Sl){return console.error("Failed to resize canvases:",Sl),y("Failed to resize canvas. Try reducing the window size."),!1}};(0,b.useEffect)(()=>{let z,N=()=>{let V=l.current?.parentElement;if(!V)return;let gl=V.clientWidth,ql=V.clientHeight,Sl=R.current||E;if(Sl){let lt=new Image;lt.onload=()=>{let pf=Math.min(gl/lt.width,ql/lt.height),Nf=Math.round(lt.width*pf),Rf=Math.round(lt.height*pf);A(Nf,Rf)&&T({width:Nf,height:Rf})},lt.src=`data:image/png;base64,${Sl}`}else A(gl,ql)&&T({width:gl,height:ql})},D=()=>{clearTimeout(z),z=setTimeout(N,250)};return window.addEventListener("resize",D),N(),()=>{window.removeEventListener("resize",D),clearTimeout(z)}},[]),(0,b.useEffect)(()=>{let z=l.current;if(!z)return;let N=gl=>{gl.preventDefault();let ql=gl.touches[0],Sl=z.getBoundingClientRect();_f(ql.clientX-Sl.left,ql.clientY-Sl.top)},D=gl=>{gl.preventDefault();let ql=gl.touches[0],Sl=z.getBoundingClientRect();Uf(ql.clientX-Sl.left,ql.clientY-Sl.top)},V=gl=>{gl.preventDefault(),kn()};return z.addEventListener("touchstart",N),z.addEventListener("touchmove",D),z.addEventListener("touchend",V),()=>{z.removeEventListener("touchstart",N),z.removeEventListener("touchmove",D),z.removeEventListener("touchend",V)}},[]);let M=(0,b.useRef)(""),Z=(0,b.useRef)(!1),R=(0,b.useRef)(""),[Wl,Du]=(0,b.useState)(0);(0,b.useEffect)(()=>{R.current=E},[]);let _f=(z,N)=>{let D=_();if(D)try{D.beginPath(),D.moveTo(z,N),a(!0)}catch(V){console.error("Failed to start drawing:",V),y("Failed to start drawing. Try refreshing the page.")}},Uf=(z,N)=>{if(!u)return;let D=_();if(D)try{D.lineTo(z,N),c==="eraser"?(D.save(),D.globalCompositeOperation="destination-out",D.strokeStyle="#000000",D.lineWidth=20,D.lineCap="round",D.stroke(),D.restore()):(D.strokeStyle=e,D.lineWidth=c==="marker"?8:2,D.lineCap="round",D.stroke())}catch(V){console.error("Failed to draw:",V),y("Failed to draw. Try refreshing the page."),a(!1)}},kn=()=>{if(u){try{Du(z=>z+1)}catch(z){console.error("Failed to complete drawing:",z),y("Failed to complete drawing. Try refreshing the page.")}a(!1)}};(0,b.useEffect)(()=>{let z=_();if(!z||!l.current||!E)return;if(E===M.current){let V=l.current;if(V&&V.width>0&&V.height>0)try{if(z.getImageData(0,0,V.width,V.height).data.some(Sl=>Sl!==0))return}catch{}}let N=l.current;if(N.width===0||N.height===0)return;Z.current=!0;let D=new Image;D.onload=()=>{z.clearRect(0,0,N.width,N.height),z.drawImage(D,0,0,N.width,N.height),M.current=E,Z.current=!1},D.onerror=V=>{console.error("Failed to load image:",V),Z.current=!1},D.src=`data:image/png;base64,${E}`},[E,m.width,m.height]),(0,b.useEffect)(()=>{if(!l.current||Wl===0||Z.current)return;let z=document.createElement("canvas");z.width=l.current.width,z.height=l.current.height;let N=z.getContext("2d",{alpha:!0});if(N){N.clearRect(0,0,z.width,z.height),s&&(N.fillStyle="#FFFFFF",N.fillRect(0,0,z.width,z.height)),N.globalCompositeOperation="source-over",N.drawImage(l.current,0,0);try{let D=z.toDataURL("image/png");O(D.split(",")[1])}catch(D){console.error("Failed to export canvas:",D),y("Failed to export canvas. Try refreshing the page.")}}},[s,m,Wl]);let vd=z=>{let N=z.currentTarget.getBoundingClientRect();_f(z.clientX-N.left,z.clientY-N.top)},hd=z=>{let N=z.currentTarget.getBoundingClientRect();Uf(z.clientX-N.left,z.clientY-N.top)},yd=z=>{S(!0),o({x:z.clientX-(t.current?.offsetLeft||0),y:z.clientY-(t.current?.offsetTop||0)})},rd=z=>{if(r){let N=z.clientX-f.x,D=z.clientY-f.y;t.current&&(t.current.style.left=`${N}px`,t.current.style.top=`${D}px`)}},Hf=()=>{S(!1)},md=()=>b.default.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",width:"24",height:"24",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round"},b.default.createElement("rect",{x:"3",y:"3",width:"18",height:"18",rx:"2",ry:"2"}),b.default.createElement("rect",{x:"7",y:"7",width:"10",height:"10",rx:"1",ry:"1",fill:"currentColor",fillOpacity:"0.2"}));return b.default.createElement("div",{className:"bg-teal-600 w-full overflow-hidden",style:{height:`${J}px`}},h&&b.default.createElement("div",{className:"absolute top-0 left-0 right-0 bg-red-500 text-white p-2 text-center"},h,b.default.createElement("button",{className:"ml-2 underline",onClick:()=>y(null)},"Dismiss")),b.default.createElement("div",{ref:t,className:"absolute bg-white border-2 border-gray-200 shadow-md flex flex-col",style:{width:"90%",height:"90%",left:"50%",top:"50%",transform:"translate(-50%, -50%)",minWidth:"400px",minHeight:"300px"}},b.default.createElement("div",{className:"bg-blue-900 text-white px-2 py-1 flex justify-between items-center cursor-move",onMouseDown:yd,onMouseMove:rd,onMouseUp:Hf,onMouseLeave:Hf},b.default.createElement("span",{className:"text-white"},"untitled - Paint"),b.default.createElement("div",{className:"flex gap-1"},b.default.createElement(ot,{variant:"ghost",className:"h-5 w-5 p-0 min-w-0 text-white hover:bg-blue-700"},"_"),b.default.createElement(ot,{variant:"ghost",className:"h-5 w-5 p-0 min-w-0 text-white hover:bg-blue-700"},"\u25A1"),b.default.createElement(ot,{variant:"ghost",className:"h-5 w-5 p-0 min-w-0 text-white hover:bg-blue-700"},"\xD7"))),b.default.createElement("div",{className:"bg-gray-300 px-2 py-1 text-sm text-black"},b.default.createElement("span",{className:"mr-4 text-black"},"File"),b.default.createElement("span",{className:"mr-4 text-black"},"Edit"),b.default.createElement("span",{className:"mr-4 text-black"},"View"),b.default.createElement("span",{className:"mr-4 text-black"},"Image"),b.default.createElement("span",{className:"mr-4 text-black"},"Options"),b.default.createElement("span",{className:"text-black"},"Help")),b.default.createElement("div",{className:"flex flex-1 min-h-0"},b.default.createElement("div",{className:"w-8 bg-gray-300 p-0.5 border-r border-gray-400"},b.default.createElement(ot,{variant:"ghost",className:`w-7 h-7 p-0 min-w-0 mb-0.5 ${c==="brush"?"bg-gray-300 border border-gray-400 shadow-inner":""}`,onClick:()=>i("brush"),title:"Brush"},b.default.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",className:"w-5 h-5 text-black"},b.default.createElement("path",{d:"M17 3a2.85 2.83 0 1 1 4 4L7.5 20.5 2 22l1.5-5.5L17 3z"}))),b.default.createElement(ot,{variant:"ghost",className:`w-7 h-7 p-0 min-w-0 mb-0.5 ${c==="marker"?"bg-gray-300 border border-gray-400 shadow-inner":""}`,onClick:()=>i("marker"),title:"Thick Marker"},b.default.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"4",strokeLinecap:"round",strokeLinejoin:"round",className:"w-5 h-5 text-black"},b.default.createElement("path",{d:"M17 3a2.85 2.83 0 1 1 4 4L7.5 20.5 2 22l1.5-5.5L17 3z"}))),b.default.createElement(ot,{variant:"ghost",className:`w-7 h-7 p-0 min-w-0 mb-0.5 ${c==="eraser"?"bg-gray-300 border border-gray-400 shadow-inner":""}`,onClick:()=>i("eraser"),title:"Eraser"},b.default.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",className:"w-6 h-6 text-black"},b.default.createElement("path",{d:"M7 21h10"}),b.default.createElement("path",{d:"M5.5 13.5L13 6c.83-.83 2.17-.83 3 0l2 2c.83.83.83 2.17 0 3l-7.5 7.5c-.83.83-2.17.83-3 0l-2-2c-.83-.83-.83-2.17 0-3z"}))),b.default.createElement("div",{className:"w-7 h-0.5 bg-gray-400 my-1"}),b.default.createElement(ot,{variant:"ghost",className:`w-7 h-7 p-0 min-w-0 mb-0.5 ${s?"bg-gray-300 border border-gray-400 shadow-inner":""}`,onClick:()=>v(!s),title:"Store White Background"},b.default.createElement(md,null)),b.default.createElement("div",{className:"w-7 h-0.5 bg-gray-400 my-1"}),b.default.createElement(ot,{variant:"ghost",className:"w-7 h-7 p-0 min-w-0 mb-0.5",onClick:()=>{let z=l.current;if(z){let N=z.getContext("2d");if(N)if(N.clearRect(0,0,z.width,z.height),R.current){Z.current=!0;let D=new Image;D.onload=()=>{N.drawImage(D,0,0,z.width,z.height),Z.current=!1,Du(V=>V+1)},D.onerror=()=>{Z.current=!1,Du(V=>V+1)},D.src=`data:image/png;base64,${R.current}`}else Du(D=>D+1)}},title:"Clear Canvas"},b.default.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",className:"w-5 h-5 text-black"},b.default.createElement("path",{d:"M3 12a9 9 0 0 1 9-9 9.75 9.75 0 0 1 6.74 2.74L21 8"}),b.default.createElement("path",{d:"M21 3v5h-5"}),b.default.createElement("path",{d:"M21 12a9 9 0 0 1-9 9 9.75 9.75 0 0 1-6.74-2.74L3 16"}),b.default.createElement("path",{d:"M8 16H3v5"})))),b.default.createElement("div",{className:"flex-grow overflow-hidden border border-gray-400 relative flex items-center justify-center"},b.default.createElement("canvas",{ref:l,width:m.width,height:m.height,style:{maxWidth:"100%",maxHeight:"100%",background:"transparent"},onMouseDown:vd,onMouseMove:hd,onMouseUp:kn,onMouseLeave:kn}))),b.default.createElement("div",{className:"flex bg-gray-300 p-1 border-t border-gray-400"},b.default.createElement("div",{className:"flex flex-wrap gap-1"},my.map(z=>b.default.createElement(ot,{key:z,variant:"ghost",className:`w-6 h-6 p-0 min-w-0 ${e===z?"ring-1 ring-gray-600":""}`,style:{backgroundColor:z},onClick:()=>n(z)})))),b.default.createElement("div",{className:"bg-gray-300 px-2 py-1 text-xs border-t border-gray-400 text-black"},"For Help, click Help Topics on the Help Menu.")))}var by=dd(Sy),Ny={render:by};export{Ny as default}; /*! Bundled license information: react/cjs/react.production.js: From 0fc52ff36f1c5d8b0d3f19d281b5ee9b3f33ed01 Mon Sep 17 00:00:00 2001 From: koaning Date: Tue, 24 Mar 2026 15:36:43 +0100 Subject: [PATCH 2/4] Fix Paint widget ignoring width/height and init_image resolution mismatch The canvas was sizing itself by measuring the DOM container, which in marimo expands to fill the full cell output width. Now the canvas uses the width and height traitlets directly as its buffer dimensions. Also resizes init_image to match target dimensions before encoding to base64, so get_pil() returns the correct resolution immediately instead of only after the first stroke triggers a canvas export. Co-Authored-By: Claude Opus 4.6 --- CHANGELOG.md | 7 + js/paint/styles.css | 135 +++- js/paint/widget.tsx | 723 +++++++-------------- wigglystuff/paint.py | 9 +- wigglystuff/static/paint.css | 1192 +++------------------------------- wigglystuff/static/paint.js | 14 +- 6 files changed, 486 insertions(+), 1594 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 18f48dd9..991704fc 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,13 @@ All notable changes to this project will be documented in this file. ## [Unreleased] +### Changed +- `Paint` widget redesigned: replaced MS Paint window chrome with a minimal toolbar (brush, marker, eraser, undo, clear, color picker). Dropped Tailwind CSS dependency in favor of scoped CSS variables with dark mode support. + +### Fixed +- `Paint` canvas now respects the `width` and `height` traitlets instead of expanding to fill the host container. +- `Paint` with `init_image` now resizes the image to match target dimensions upfront, so `get_pil()` returns the correct resolution before the first stroke. + ## [0.2.40] - 2026-03-24 ### Added diff --git a/js/paint/styles.css b/js/paint/styles.css index bd6213e1..1dd27e9f 100644 --- a/js/paint/styles.css +++ b/js/paint/styles.css @@ -1,3 +1,132 @@ -@tailwind base; -@tailwind components; -@tailwind utilities; \ No newline at end of file +.paint-container { + color-scheme: light dark; + --paint-bg: #ffffff; + --paint-text: #111827; + --paint-border: #d1d5db; + --paint-toolbar-bg: #f9fafb; + --paint-btn-bg: #ffffff; + --paint-btn-hover: #f3f4f6; + --paint-btn-active: #e5e7eb; + --paint-focus-ring: 0 0 0 2px rgba(59, 130, 246, 0.5); + --paint-shadow: rgba(0, 0, 0, 0.1); +} + +:where(.dark, .dark-theme, [data-theme="dark"]) .paint-container { + --paint-bg: #1f2937; + --paint-text: #f9fafb; + --paint-border: #4b5563; + --paint-toolbar-bg: #111827; + --paint-btn-bg: #374151; + --paint-btn-hover: #4b5563; + --paint-btn-active: #6b7280; + --paint-focus-ring: 0 0 0 2px rgba(96, 165, 250, 0.6); + --paint-shadow: rgba(0, 0, 0, 0.5); +} + +.paint-container { + font-family: ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif; + box-sizing: border-box; + border: 1px solid var(--paint-border); + border-radius: 0.5rem; + overflow: hidden; + background-color: var(--paint-bg); + color: var(--paint-text); + display: flex; + flex-direction: column; +} + +.paint-toolbar { + display: flex; + align-items: center; + gap: 0.25rem; + padding: 0.375rem 0.5rem; + background-color: var(--paint-toolbar-bg); + border-bottom: 1px solid var(--paint-border); + flex-shrink: 0; +} + +.paint-tool-group, +.paint-action-group { + display: flex; + align-items: center; + gap: 0.25rem; +} + +.paint-toolbar button { + display: inline-flex; + align-items: center; + justify-content: center; + width: 2rem; + height: 2rem; + padding: 0; + border: 1px solid transparent; + border-radius: 0.375rem; + background-color: transparent; + color: var(--paint-text); + cursor: pointer; + transition: background-color 0.15s ease, border-color 0.15s ease; +} + +.paint-toolbar button:hover { + background-color: var(--paint-btn-hover); + border-color: var(--paint-border); +} + +.paint-toolbar button:focus { + outline: none; + box-shadow: var(--paint-focus-ring); +} + +.paint-toolbar button:active { + background-color: var(--paint-btn-active); +} + +.paint-toolbar button.active { + background-color: var(--paint-btn-active); + border-color: var(--paint-border); + box-shadow: inset 0 1px 2px var(--paint-shadow); +} + +.paint-toolbar button:disabled { + opacity: 0.35; + pointer-events: none; +} + +.paint-toolbar button svg { + width: 18px; + height: 18px; +} + +.paint-divider { + width: 1px; + height: 1.5rem; + background-color: var(--paint-border); + margin: 0 0.25rem; + flex-shrink: 0; +} + +.paint-toolbar input[type="color"] { + width: 2rem; + height: 2rem; + padding: 0.125rem; + border: 1px solid var(--paint-border); + border-radius: 0.375rem; + background-color: var(--paint-btn-bg); + cursor: pointer; +} + +.paint-toolbar input[type="color"]:focus { + outline: none; + box-shadow: var(--paint-focus-ring); +} + +.paint-canvas-area { + overflow: hidden; + background-color: var(--paint-bg); +} + +.paint-canvas-area canvas { + display: block; + cursor: crosshair; + box-shadow: 0 0 0 1px var(--paint-border); +} diff --git a/js/paint/widget.tsx b/js/paint/widget.tsx index 298cd519..439ac7d7 100644 --- a/js/paint/widget.tsx +++ b/js/paint/widget.tsx @@ -1,572 +1,309 @@ import { createRender, useModelState } from "@anywidget/react"; import React, { useRef, useState, useEffect } from 'react'; -const Button = React.forwardRef< - HTMLButtonElement, - React.ButtonHTMLAttributes & { - variant?: 'default' | 'ghost' - } ->(({ className = '', variant = 'default', ...props }, ref) => { - const baseStyles = 'inline-flex items-center justify-center rounded-md text-sm font-medium focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50'; - const variantStyles = { - default: 'bg-gray-200 active:bg-gray-300', - ghost: 'active:bg-gray-100/50' - }; - - return ( - + + -
- )} -
- {/* Title bar */} -
- untitled - Paint -
- - - -
- {/* Menu bar */} -
- File - Edit - View - Image - Options - Help -
+
- {/* Main content area */} -
- {/* Left toolbar */} -
- - - -
- -
- -
- - {/* Canvas area */} -
- {/* Drawing canvas */} - -
+
+ +
- {/* Bottom color picker */} -
-
- {colors.map((c) => ( -
-
+
- {/* Status bar */} -
- For Help, click Help Topics on the Help Menu. -
+ setColor(e.target.value)} + title="Color" + /> +
+ +
+
); diff --git a/wigglystuff/paint.py b/wigglystuff/paint.py index 2d2488d0..4a12adc5 100644 --- a/wigglystuff/paint.py +++ b/wigglystuff/paint.py @@ -1,4 +1,4 @@ -"""Paint widget ported from the mopaint project.""" +"""Minimal drawing canvas widget with PIL helpers.""" from __future__ import annotations @@ -81,7 +81,7 @@ def input_to_pil(input_data: Union[str, Path, "Image.Image", bytes, None]): class Paint(anywidget.AnyWidget): - """Notebook-friendly paint widget with MS Paint style tools and PIL helpers. + """Notebook-friendly drawing canvas with brush, marker, eraser, undo, and PIL helpers. Examples: ```python @@ -138,6 +138,11 @@ def __init__(self, height: int = DEFAULT_HEIGHT, width: int = DEFAULT_WIDTH, sto self.width = image_width self.height = image_height + if (self.width, self.height) != pil_image.size: + from PIL import Image as _PILImage + pil_image = pil_image.resize( + (self.width, self.height), _PILImage.LANCZOS + ) encoded = pil_to_base64(pil_image).split(",")[1] self.base64 = encoded else: diff --git a/wigglystuff/static/paint.css b/wigglystuff/static/paint.css index a2dd2de6..1dd27e9f 100644 --- a/wigglystuff/static/paint.css +++ b/wigglystuff/static/paint.css @@ -1,1118 +1,132 @@ -*, ::before, ::after { - --tw-border-spacing-x: 0; - --tw-border-spacing-y: 0; - --tw-translate-x: 0; - --tw-translate-y: 0; - --tw-rotate: 0; - --tw-skew-x: 0; - --tw-skew-y: 0; - --tw-scale-x: 1; - --tw-scale-y: 1; - --tw-pan-x: ; - --tw-pan-y: ; - --tw-pinch-zoom: ; - --tw-scroll-snap-strictness: proximity; - --tw-gradient-from-position: ; - --tw-gradient-via-position: ; - --tw-gradient-to-position: ; - --tw-ordinal: ; - --tw-slashed-zero: ; - --tw-numeric-figure: ; - --tw-numeric-spacing: ; - --tw-numeric-fraction: ; - --tw-ring-inset: ; - --tw-ring-offset-width: 0px; - --tw-ring-offset-color: #fff; - --tw-ring-color: rgb(59 130 246 / 0.5); - --tw-ring-offset-shadow: 0 0 #0000; - --tw-ring-shadow: 0 0 #0000; - --tw-shadow: 0 0 #0000; - --tw-shadow-colored: 0 0 #0000; - --tw-blur: ; - --tw-brightness: ; - --tw-contrast: ; - --tw-grayscale: ; - --tw-hue-rotate: ; - --tw-invert: ; - --tw-saturate: ; - --tw-sepia: ; - --tw-drop-shadow: ; - --tw-backdrop-blur: ; - --tw-backdrop-brightness: ; - --tw-backdrop-contrast: ; - --tw-backdrop-grayscale: ; - --tw-backdrop-hue-rotate: ; - --tw-backdrop-invert: ; - --tw-backdrop-opacity: ; - --tw-backdrop-saturate: ; - --tw-backdrop-sepia: ; - --tw-contain-size: ; - --tw-contain-layout: ; - --tw-contain-paint: ; - --tw-contain-style: ; +.paint-container { + color-scheme: light dark; + --paint-bg: #ffffff; + --paint-text: #111827; + --paint-border: #d1d5db; + --paint-toolbar-bg: #f9fafb; + --paint-btn-bg: #ffffff; + --paint-btn-hover: #f3f4f6; + --paint-btn-active: #e5e7eb; + --paint-focus-ring: 0 0 0 2px rgba(59, 130, 246, 0.5); + --paint-shadow: rgba(0, 0, 0, 0.1); +} + +:where(.dark, .dark-theme, [data-theme="dark"]) .paint-container { + --paint-bg: #1f2937; + --paint-text: #f9fafb; + --paint-border: #4b5563; + --paint-toolbar-bg: #111827; + --paint-btn-bg: #374151; + --paint-btn-hover: #4b5563; + --paint-btn-active: #6b7280; + --paint-focus-ring: 0 0 0 2px rgba(96, 165, 250, 0.6); + --paint-shadow: rgba(0, 0, 0, 0.5); +} + +.paint-container { + font-family: ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif; + box-sizing: border-box; + border: 1px solid var(--paint-border); + border-radius: 0.5rem; + overflow: hidden; + background-color: var(--paint-bg); + color: var(--paint-text); + display: flex; + flex-direction: column; } -::backdrop { - --tw-border-spacing-x: 0; - --tw-border-spacing-y: 0; - --tw-translate-x: 0; - --tw-translate-y: 0; - --tw-rotate: 0; - --tw-skew-x: 0; - --tw-skew-y: 0; - --tw-scale-x: 1; - --tw-scale-y: 1; - --tw-pan-x: ; - --tw-pan-y: ; - --tw-pinch-zoom: ; - --tw-scroll-snap-strictness: proximity; - --tw-gradient-from-position: ; - --tw-gradient-via-position: ; - --tw-gradient-to-position: ; - --tw-ordinal: ; - --tw-slashed-zero: ; - --tw-numeric-figure: ; - --tw-numeric-spacing: ; - --tw-numeric-fraction: ; - --tw-ring-inset: ; - --tw-ring-offset-width: 0px; - --tw-ring-offset-color: #fff; - --tw-ring-color: rgb(59 130 246 / 0.5); - --tw-ring-offset-shadow: 0 0 #0000; - --tw-ring-shadow: 0 0 #0000; - --tw-shadow: 0 0 #0000; - --tw-shadow-colored: 0 0 #0000; - --tw-blur: ; - --tw-brightness: ; - --tw-contrast: ; - --tw-grayscale: ; - --tw-hue-rotate: ; - --tw-invert: ; - --tw-saturate: ; - --tw-sepia: ; - --tw-drop-shadow: ; - --tw-backdrop-blur: ; - --tw-backdrop-brightness: ; - --tw-backdrop-contrast: ; - --tw-backdrop-grayscale: ; - --tw-backdrop-hue-rotate: ; - --tw-backdrop-invert: ; - --tw-backdrop-opacity: ; - --tw-backdrop-saturate: ; - --tw-backdrop-sepia: ; - --tw-contain-size: ; - --tw-contain-layout: ; - --tw-contain-paint: ; - --tw-contain-style: ; +.paint-toolbar { + display: flex; + align-items: center; + gap: 0.25rem; + padding: 0.375rem 0.5rem; + background-color: var(--paint-toolbar-bg); + border-bottom: 1px solid var(--paint-border); + flex-shrink: 0; } -/* -! tailwindcss v3.4.18 | MIT License | https://tailwindcss.com -*/ - -/* -1. Prevent padding and border from affecting element width. (https://github.com/mozdevs/cssremedy/issues/4) -2. Allow adding a border to an element by just adding a border-width. (https://github.com/tailwindcss/tailwindcss/pull/116) -*/ - -*, -::before, -::after { - box-sizing: border-box; - /* 1 */ - border-width: 0; - /* 2 */ - border-style: solid; - /* 2 */ - border-color: #e5e7eb; - /* 2 */ -} - -::before, -::after { - --tw-content: ''; -} - -/* -1. Use a consistent sensible line-height in all browsers. -2. Prevent adjustments of font size after orientation changes in iOS. -3. Use a more readable tab size. -4. Use the user's configured `sans` font-family by default. -5. Use the user's configured `sans` font-feature-settings by default. -6. Use the user's configured `sans` font-variation-settings by default. -7. Disable tap highlights on iOS -*/ - -html, -:host { - line-height: 1.5; - /* 1 */ - -webkit-text-size-adjust: 100%; - /* 2 */ - -moz-tab-size: 4; - /* 3 */ - -o-tab-size: 4; - tab-size: 4; - /* 3 */ - font-family: ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; - /* 4 */ - font-feature-settings: normal; - /* 5 */ - font-variation-settings: normal; - /* 6 */ - -webkit-tap-highlight-color: transparent; - /* 7 */ -} - -/* -1. Remove the margin in all browsers. -2. Inherit line-height from `html` so users can set them as a class directly on the `html` element. -*/ - -body { - margin: 0; - /* 1 */ - line-height: inherit; - /* 2 */ -} - -/* -1. Add the correct height in Firefox. -2. Correct the inheritance of border color in Firefox. (https://bugzilla.mozilla.org/show_bug.cgi?id=190655) -3. Ensure horizontal rules are visible by default. -*/ - -hr { - height: 0; - /* 1 */ - color: inherit; - /* 2 */ - border-top-width: 1px; - /* 3 */ -} - -/* -Add the correct text decoration in Chrome, Edge, and Safari. -*/ - -abbr:where([title]) { - -webkit-text-decoration: underline dotted; - text-decoration: underline dotted; -} - -/* -Remove the default font size and weight for headings. -*/ - -h1, -h2, -h3, -h4, -h5, -h6 { - font-size: inherit; - font-weight: inherit; -} - -/* -Reset links to optimize for opt-in styling instead of opt-out. -*/ - -a { - color: inherit; - text-decoration: inherit; -} - -/* -Add the correct font weight in Edge and Safari. -*/ - -b, -strong { - font-weight: bolder; -} - -/* -1. Use the user's configured `mono` font-family by default. -2. Use the user's configured `mono` font-feature-settings by default. -3. Use the user's configured `mono` font-variation-settings by default. -4. Correct the odd `em` font sizing in all browsers. -*/ - -code, -kbd, -samp, -pre { - font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace; - /* 1 */ - font-feature-settings: normal; - /* 2 */ - font-variation-settings: normal; - /* 3 */ - font-size: 1em; - /* 4 */ -} - -/* -Add the correct font size in all browsers. -*/ - -small { - font-size: 80%; -} - -/* -Prevent `sub` and `sup` elements from affecting the line height in all browsers. -*/ - -sub, -sup { - font-size: 75%; - line-height: 0; - position: relative; - vertical-align: baseline; -} - -sub { - bottom: -0.25em; -} - -sup { - top: -0.5em; -} - -/* -1. Remove text indentation from table contents in Chrome and Safari. (https://bugs.chromium.org/p/chromium/issues/detail?id=999088, https://bugs.webkit.org/show_bug.cgi?id=201297) -2. Correct table border color inheritance in all Chrome and Safari. (https://bugs.chromium.org/p/chromium/issues/detail?id=935729, https://bugs.webkit.org/show_bug.cgi?id=195016) -3. Remove gaps between table borders by default. -*/ - -table { - text-indent: 0; - /* 1 */ - border-color: inherit; - /* 2 */ - border-collapse: collapse; - /* 3 */ -} - -/* -1. Change the font styles in all browsers. -2. Remove the margin in Firefox and Safari. -3. Remove default padding in all browsers. -*/ - -button, -input, -optgroup, -select, -textarea { - font-family: inherit; - /* 1 */ - font-feature-settings: inherit; - /* 1 */ - font-variation-settings: inherit; - /* 1 */ - font-size: 100%; - /* 1 */ - font-weight: inherit; - /* 1 */ - line-height: inherit; - /* 1 */ - letter-spacing: inherit; - /* 1 */ - color: inherit; - /* 1 */ - margin: 0; - /* 2 */ - padding: 0; - /* 3 */ -} - -/* -Remove the inheritance of text transform in Edge and Firefox. -*/ - -button, -select { - text-transform: none; -} - -/* -1. Correct the inability to style clickable types in iOS and Safari. -2. Remove default button styles. -*/ - -button, -input:where([type='button']), -input:where([type='reset']), -input:where([type='submit']) { - -webkit-appearance: button; - /* 1 */ - background-color: transparent; - /* 2 */ - background-image: none; - /* 2 */ -} - -/* -Use the modern Firefox focus style for all focusable elements. -*/ - -:-moz-focusring { - outline: auto; -} - -/* -Remove the additional `:invalid` styles in Firefox. (https://github.com/mozilla/gecko-dev/blob/2f9eacd9d3d995c937b4251a5557d95d494c9be1/layout/style/res/forms.css#L728-L737) -*/ - -:-moz-ui-invalid { - box-shadow: none; -} - -/* -Add the correct vertical alignment in Chrome and Firefox. -*/ - -progress { - vertical-align: baseline; -} - -/* -Correct the cursor style of increment and decrement buttons in Safari. -*/ - -::-webkit-inner-spin-button, -::-webkit-outer-spin-button { - height: auto; -} - -/* -1. Correct the odd appearance in Chrome and Safari. -2. Correct the outline style in Safari. -*/ - -[type='search'] { - -webkit-appearance: textfield; - /* 1 */ - outline-offset: -2px; - /* 2 */ -} - -/* -Remove the inner padding in Chrome and Safari on macOS. -*/ - -::-webkit-search-decoration { - -webkit-appearance: none; -} - -/* -1. Correct the inability to style clickable types in iOS and Safari. -2. Change font properties to `inherit` in Safari. -*/ - -::-webkit-file-upload-button { - -webkit-appearance: button; - /* 1 */ - font: inherit; - /* 2 */ -} - -/* -Add the correct display in Chrome and Safari. -*/ - -summary { - display: list-item; +.paint-tool-group, +.paint-action-group { + display: flex; + align-items: center; + gap: 0.25rem; } -/* -Removes the default spacing and border for appropriate elements. -*/ - -blockquote, -dl, -dd, -h1, -h2, -h3, -h4, -h5, -h6, -hr, -figure, -p, -pre { - margin: 0; -} - -fieldset { - margin: 0; - padding: 0; -} - -legend { - padding: 0; -} - -ol, -ul, -menu { - list-style: none; - margin: 0; - padding: 0; -} - -/* -Reset default styling for dialogs. -*/ - -dialog { - padding: 0; -} - -/* -Prevent resizing textareas horizontally by default. -*/ - -textarea { - resize: vertical; -} - -/* -1. Reset the default placeholder opacity in Firefox. (https://github.com/tailwindlabs/tailwindcss/issues/3300) -2. Set the default placeholder color to the user's configured gray 400 color. -*/ - -input::-moz-placeholder, textarea::-moz-placeholder { - opacity: 1; - /* 1 */ - color: #9ca3af; - /* 2 */ -} - -input::placeholder, -textarea::placeholder { - opacity: 1; - /* 1 */ - color: #9ca3af; - /* 2 */ -} - -/* -Set the default cursor for buttons. -*/ - -button, -[role="button"] { - cursor: pointer; -} - -/* -Make sure disabled buttons don't get the pointer cursor. -*/ - -:disabled { - cursor: default; -} - -/* -1. Make replaced elements `display: block` by default. (https://github.com/mozdevs/cssremedy/issues/14) -2. Add `vertical-align: middle` to align replaced elements more sensibly by default. (https://github.com/jensimmons/cssremedy/issues/14#issuecomment-634934210) - This can trigger a poorly considered lint error in some tools but is included by design. -*/ - -img, -svg, -video, -canvas, -audio, -iframe, -embed, -object { - display: block; - /* 1 */ - vertical-align: middle; - /* 2 */ -} - -/* -Constrain images and videos to the parent width and preserve their intrinsic aspect ratio. (https://github.com/mozdevs/cssremedy/issues/14) -*/ - -img, -video { - max-width: 100%; - height: auto; -} - -/* Make elements with the HTML hidden attribute stay hidden by default */ - -[hidden]:where(:not([hidden="until-found"])) { - display: none; -} - -[type='text'],input:where(:not([type])),[type='email'],[type='url'],[type='password'],[type='number'],[type='date'],[type='datetime-local'],[type='month'],[type='search'],[type='tel'],[type='time'],[type='week'],[multiple],textarea,select { - -webkit-appearance: none; - -moz-appearance: none; - appearance: none; - background-color: #fff; - border-color: #6b7280; - border-width: 1px; - border-radius: 0px; - padding-top: 0.5rem; - padding-right: 0.75rem; - padding-bottom: 0.5rem; - padding-left: 0.75rem; - font-size: 1rem; - line-height: 1.5rem; - --tw-shadow: 0 0 #0000; -} - -[type='text']:focus, input:where(:not([type])):focus, [type='email']:focus, [type='url']:focus, [type='password']:focus, [type='number']:focus, [type='date']:focus, [type='datetime-local']:focus, [type='month']:focus, [type='search']:focus, [type='tel']:focus, [type='time']:focus, [type='week']:focus, [multiple]:focus, textarea:focus, select:focus { - outline: 2px solid transparent; - outline-offset: 2px; - --tw-ring-inset: var(--tw-empty,/*!*/ /*!*/); - --tw-ring-offset-width: 0px; - --tw-ring-offset-color: #fff; - --tw-ring-color: #2563eb; - --tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color); - --tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color); - box-shadow: var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow); - border-color: #2563eb; +.paint-toolbar button { + display: inline-flex; + align-items: center; + justify-content: center; + width: 2rem; + height: 2rem; + padding: 0; + border: 1px solid transparent; + border-radius: 0.375rem; + background-color: transparent; + color: var(--paint-text); + cursor: pointer; + transition: background-color 0.15s ease, border-color 0.15s ease; } -input::-moz-placeholder, textarea::-moz-placeholder { - color: #6b7280; - opacity: 1; +.paint-toolbar button:hover { + background-color: var(--paint-btn-hover); + border-color: var(--paint-border); } -input::placeholder,textarea::placeholder { - color: #6b7280; - opacity: 1; +.paint-toolbar button:focus { + outline: none; + box-shadow: var(--paint-focus-ring); } -::-webkit-datetime-edit-fields-wrapper { - padding: 0; +.paint-toolbar button:active { + background-color: var(--paint-btn-active); } -::-webkit-date-and-time-value { - min-height: 1.5em; - text-align: inherit; +.paint-toolbar button.active { + background-color: var(--paint-btn-active); + border-color: var(--paint-border); + box-shadow: inset 0 1px 2px var(--paint-shadow); } -::-webkit-datetime-edit { - display: inline-flex; +.paint-toolbar button:disabled { + opacity: 0.35; + pointer-events: none; } -::-webkit-datetime-edit,::-webkit-datetime-edit-year-field,::-webkit-datetime-edit-month-field,::-webkit-datetime-edit-day-field,::-webkit-datetime-edit-hour-field,::-webkit-datetime-edit-minute-field,::-webkit-datetime-edit-second-field,::-webkit-datetime-edit-millisecond-field,::-webkit-datetime-edit-meridiem-field { - padding-top: 0; - padding-bottom: 0; +.paint-toolbar button svg { + width: 18px; + height: 18px; } -select { - background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 20 20'%3e%3cpath stroke='%236b7280' stroke-linecap='round' stroke-linejoin='round' stroke-width='1.5' d='M6 8l4 4 4-4'/%3e%3c/svg%3e"); - background-position: right 0.5rem center; - background-repeat: no-repeat; - background-size: 1.5em 1.5em; - padding-right: 2.5rem; - -webkit-print-color-adjust: exact; - print-color-adjust: exact; +.paint-divider { + width: 1px; + height: 1.5rem; + background-color: var(--paint-border); + margin: 0 0.25rem; + flex-shrink: 0; } -[multiple],[size]:where(select:not([size="1"])) { - background-image: initial; - background-position: initial; - background-repeat: unset; - background-size: initial; - padding-right: 0.75rem; - -webkit-print-color-adjust: unset; - print-color-adjust: unset; +.paint-toolbar input[type="color"] { + width: 2rem; + height: 2rem; + padding: 0.125rem; + border: 1px solid var(--paint-border); + border-radius: 0.375rem; + background-color: var(--paint-btn-bg); + cursor: pointer; } -[type='checkbox'],[type='radio'] { - -webkit-appearance: none; - -moz-appearance: none; - appearance: none; - padding: 0; - -webkit-print-color-adjust: exact; - print-color-adjust: exact; - display: inline-block; - vertical-align: middle; - background-origin: border-box; - -webkit-user-select: none; - -moz-user-select: none; - user-select: none; - flex-shrink: 0; - height: 1rem; - width: 1rem; - color: #2563eb; - background-color: #fff; - border-color: #6b7280; - border-width: 1px; - --tw-shadow: 0 0 #0000; +.paint-toolbar input[type="color"]:focus { + outline: none; + box-shadow: var(--paint-focus-ring); } -[type='checkbox'] { - border-radius: 0px; +.paint-canvas-area { + overflow: hidden; + background-color: var(--paint-bg); } -[type='radio'] { - border-radius: 100%; -} - -[type='checkbox']:focus,[type='radio']:focus { - outline: 2px solid transparent; - outline-offset: 2px; - --tw-ring-inset: var(--tw-empty,/*!*/ /*!*/); - --tw-ring-offset-width: 2px; - --tw-ring-offset-color: #fff; - --tw-ring-color: #2563eb; - --tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color); - --tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color); - box-shadow: var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow); -} - -[type='checkbox']:checked,[type='radio']:checked { - border-color: transparent; - background-color: currentColor; - background-size: 100% 100%; - background-position: center; - background-repeat: no-repeat; -} - -[type='checkbox']:checked { - background-image: url("data:image/svg+xml,%3csvg viewBox='0 0 16 16' fill='white' xmlns='http://www.w3.org/2000/svg'%3e%3cpath d='M12.207 4.793a1 1 0 010 1.414l-5 5a1 1 0 01-1.414 0l-2-2a1 1 0 011.414-1.414L6.5 9.086l4.293-4.293a1 1 0 011.414 0z'/%3e%3c/svg%3e"); -} - -@media (forced-colors: active) { - [type='checkbox']:checked { - -webkit-appearance: auto; - -moz-appearance: auto; - appearance: auto; - } -} - -[type='radio']:checked { - background-image: url("data:image/svg+xml,%3csvg viewBox='0 0 16 16' fill='white' xmlns='http://www.w3.org/2000/svg'%3e%3ccircle cx='8' cy='8' r='3'/%3e%3c/svg%3e"); -} - -@media (forced-colors: active) { - [type='radio']:checked { - -webkit-appearance: auto; - -moz-appearance: auto; - appearance: auto; - } -} - -[type='checkbox']:checked:hover,[type='checkbox']:checked:focus,[type='radio']:checked:hover,[type='radio']:checked:focus { - border-color: transparent; - background-color: currentColor; -} - -[type='checkbox']:indeterminate { - background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 16 16'%3e%3cpath stroke='white' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M4 8h8'/%3e%3c/svg%3e"); - border-color: transparent; - background-color: currentColor; - background-size: 100% 100%; - background-position: center; - background-repeat: no-repeat; -} - -@media (forced-colors: active) { - [type='checkbox']:indeterminate { - -webkit-appearance: auto; - -moz-appearance: auto; - appearance: auto; - } -} - -[type='checkbox']:indeterminate:hover,[type='checkbox']:indeterminate:focus { - border-color: transparent; - background-color: currentColor; -} - -[type='file'] { - background: unset; - border-color: inherit; - border-width: 0; - border-radius: 0; - padding: 0; - font-size: unset; - line-height: inherit; -} - -[type='file']:focus { - outline: 1px solid ButtonText; - outline: 1px auto -webkit-focus-ring-color; -} - -.\!container { - width: 100% !important; -} - -.container { - width: 100%; -} - -@media (min-width: 640px) { - .\!container { - max-width: 640px !important; - } - - .container { - max-width: 640px; - } -} - -@media (min-width: 768px) { - .\!container { - max-width: 768px !important; - } - - .container { - max-width: 768px; - } -} - -@media (min-width: 1024px) { - .\!container { - max-width: 1024px !important; - } - - .container { - max-width: 1024px; - } +.paint-canvas-area canvas { + display: block; + cursor: crosshair; + box-shadow: 0 0 0 1px var(--paint-border); } - -@media (min-width: 1280px) { - .\!container { - max-width: 1280px !important; - } - - .container { - max-width: 1280px; - } -} - -@media (min-width: 1536px) { - .\!container { - max-width: 1536px !important; - } - - .container { - max-width: 1536px; - } -} - -.absolute { - position: absolute; -} - -.relative { - position: relative; -} - -.left-0 { - left: 0px; -} - -.right-0 { - right: 0px; -} - -.top-0 { - top: 0px; -} - -.my-1 { - margin-top: 0.25rem; - margin-bottom: 0.25rem; -} - -.mb-0\.5 { - margin-bottom: 0.125rem; -} - -.ml-2 { - margin-left: 0.5rem; -} - -.mr-4 { - margin-right: 1rem; -} - -.flex { - display: flex; -} - -.inline-flex { - display: inline-flex; -} - -.h-0\.5 { - height: 0.125rem; -} - -.h-5 { - height: 1.25rem; -} - -.h-6 { - height: 1.5rem; -} - -.h-7 { - height: 1.75rem; -} - -.min-h-0 { - min-height: 0px; -} - -.w-5 { - width: 1.25rem; -} - -.w-6 { - width: 1.5rem; -} - -.w-7 { - width: 1.75rem; -} - -.w-8 { - width: 2rem; -} - -.w-full { - width: 100%; -} - -.min-w-0 { - min-width: 0px; -} - -.flex-1 { - flex: 1 1 0%; -} - -.flex-grow { - flex-grow: 1; -} - -.transform { - transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y)); -} - -.cursor-move { - cursor: move; -} - -.resize { - resize: both; -} - -.flex-col { - flex-direction: column; -} - -.flex-wrap { - flex-wrap: wrap; -} - -.items-center { - align-items: center; -} - -.justify-center { - justify-content: center; -} - -.justify-between { - justify-content: space-between; -} - -.gap-1 { - gap: 0.25rem; -} - -.overflow-hidden { - overflow: hidden; -} - -.rounded-md { - border-radius: 0.375rem; -} - -.border { - border-width: 1px; -} - -.border-2 { - border-width: 2px; -} - -.border-r { - border-right-width: 1px; -} - -.border-t { - border-top-width: 1px; -} - -.border-gray-200 { - --tw-border-opacity: 1; - border-color: rgb(229 231 235 / var(--tw-border-opacity, 1)); -} - -.border-gray-400 { - --tw-border-opacity: 1; - border-color: rgb(156 163 175 / var(--tw-border-opacity, 1)); -} - -.bg-blue-900 { - --tw-bg-opacity: 1; - background-color: rgb(30 58 138 / var(--tw-bg-opacity, 1)); -} - -.bg-gray-200 { - --tw-bg-opacity: 1; - background-color: rgb(229 231 235 / var(--tw-bg-opacity, 1)); -} - -.bg-gray-300 { - --tw-bg-opacity: 1; - background-color: rgb(209 213 219 / var(--tw-bg-opacity, 1)); -} - -.bg-gray-400 { - --tw-bg-opacity: 1; - background-color: rgb(156 163 175 / var(--tw-bg-opacity, 1)); -} - -.bg-red-500 { - --tw-bg-opacity: 1; - background-color: rgb(239 68 68 / var(--tw-bg-opacity, 1)); -} - -.bg-teal-600 { - --tw-bg-opacity: 1; - background-color: rgb(13 148 136 / var(--tw-bg-opacity, 1)); -} - -.bg-white { - --tw-bg-opacity: 1; - background-color: rgb(255 255 255 / var(--tw-bg-opacity, 1)); -} - -.p-0 { - padding: 0px; -} - -.p-0\.5 { - padding: 0.125rem; -} - -.p-1 { - padding: 0.25rem; -} - -.p-2 { - padding: 0.5rem; -} - -.px-2 { - padding-left: 0.5rem; - padding-right: 0.5rem; -} - -.py-1 { - padding-top: 0.25rem; - padding-bottom: 0.25rem; -} - -.text-center { - text-align: center; -} - -.text-sm { - font-size: 0.875rem; - line-height: 1.25rem; -} - -.text-xs { - font-size: 0.75rem; - line-height: 1rem; -} - -.font-medium { - font-weight: 500; -} - -.text-black { - --tw-text-opacity: 1; - color: rgb(0 0 0 / var(--tw-text-opacity, 1)); -} - -.text-white { - --tw-text-opacity: 1; - color: rgb(255 255 255 / var(--tw-text-opacity, 1)); -} - -.underline { - text-decoration-line: underline; -} - -.shadow-inner { - --tw-shadow: inset 0 2px 4px 0 rgb(0 0 0 / 0.05); - --tw-shadow-colored: inset 0 2px 4px 0 var(--tw-shadow-color); - box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow); -} - -.shadow-md { - --tw-shadow: 0 4px 6px -1px rgb(0 0 0 / 0.1), 0 2px 4px -2px rgb(0 0 0 / 0.1); - --tw-shadow-colored: 0 4px 6px -1px var(--tw-shadow-color), 0 2px 4px -2px var(--tw-shadow-color); - box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow); -} - -.ring-1 { - --tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color); - --tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color); - box-shadow: var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow, 0 0 #0000); -} - -.ring-gray-600 { - --tw-ring-opacity: 1; - --tw-ring-color: rgb(75 85 99 / var(--tw-ring-opacity, 1)); -} - -.hover\:bg-blue-700:hover { - --tw-bg-opacity: 1; - background-color: rgb(29 78 216 / var(--tw-bg-opacity, 1)); -} - -.focus-visible\:outline-none:focus-visible { - outline: 2px solid transparent; - outline-offset: 2px; -} - -.active\:bg-gray-100\/50:active { - background-color: rgb(243 244 246 / 0.5); -} - -.active\:bg-gray-300:active { - --tw-bg-opacity: 1; - background-color: rgb(209 213 219 / var(--tw-bg-opacity, 1)); -} - -.disabled\:pointer-events-none:disabled { - pointer-events: none; -} - -.disabled\:opacity-50:disabled { - opacity: 0.5; -} \ No newline at end of file diff --git a/wigglystuff/static/paint.js b/wigglystuff/static/paint.js index c4e1c640..31eb737f 100644 --- a/wigglystuff/static/paint.js +++ b/wigglystuff/static/paint.js @@ -1,12 +1,12 @@ -var gd=Object.create;var Bf=Object.defineProperty;var Sd=Object.getOwnPropertyDescriptor;var bd=Object.getOwnPropertyNames;var Ed=Object.getPrototypeOf,Td=Object.prototype.hasOwnProperty;var Ht=(l,t)=>()=>(t||l((t={exports:{}}).exports,t),t.exports);var zd=(l,t,u,a)=>{if(t&&typeof t=="object"||typeof t=="function")for(let e of bd(t))!Td.call(l,e)&&e!==u&&Bf(l,e,{get:()=>t[e],enumerable:!(a=Sd(t,e))||a.enumerable});return l};var Fn=(l,t,u)=>(u=l!=null?gd(Ed(l)):{},zd(t||!l||!l.__esModule?Bf(u,"default",{value:l,enumerable:!0}):u,l));var Kf=Ht(H=>{"use strict";var Pn=Symbol.for("react.transitional.element"),Ad=Symbol.for("react.portal"),Md=Symbol.for("react.fragment"),Od=Symbol.for("react.strict_mode"),Dd=Symbol.for("react.profiler"),_d=Symbol.for("react.consumer"),Ud=Symbol.for("react.context"),Hd=Symbol.for("react.forward_ref"),pd=Symbol.for("react.suspense"),Nd=Symbol.for("react.memo"),Gf=Symbol.for("react.lazy"),qf=Symbol.iterator;function Rd(l){return l===null||typeof l!="object"?null:(l=qf&&l[qf]||l["@@iterator"],typeof l=="function"?l:null)}var Qf={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},Zf=Object.assign,jf={};function Uu(l,t,u){this.props=l,this.context=t,this.refs=jf,this.updater=u||Qf}Uu.prototype.isReactComponent={};Uu.prototype.setState=function(l,t){if(typeof l!="object"&&typeof l!="function"&&l!=null)throw Error("takes an object of state variables to update or a function which returns an object of state variables.");this.updater.enqueueSetState(this,l,t,"setState")};Uu.prototype.forceUpdate=function(l){this.updater.enqueueForceUpdate(this,l,"forceUpdate")};function Lf(){}Lf.prototype=Uu.prototype;function In(l,t,u){this.props=l,this.context=t,this.refs=jf,this.updater=u||Qf}var lc=In.prototype=new Lf;lc.constructor=In;Zf(lc,Uu.prototype);lc.isPureReactComponent=!0;var Yf=Array.isArray,k={H:null,A:null,T:null,S:null},Vf=Object.prototype.hasOwnProperty;function tc(l,t,u,a,e,n){return u=n.ref,{$$typeof:Pn,type:l,key:t,ref:u!==void 0?u:null,props:n}}function Bd(l,t){return tc(l.type,t,void 0,void 0,void 0,l.props)}function uc(l){return typeof l=="object"&&l!==null&&l.$$typeof===Pn}function qd(l){var t={"=":"=0",":":"=2"};return"$"+l.replace(/[=:]/g,function(u){return t[u]})}var xf=/\/+/g;function $n(l,t){return typeof l=="object"&&l!==null&&l.key!=null?qd(""+l.key):t.toString(36)}function Cf(){}function Yd(l){switch(l.status){case"fulfilled":return l.value;case"rejected":throw l.reason;default:switch(typeof l.status=="string"?l.then(Cf,Cf):(l.status="pending",l.then(function(t){l.status==="pending"&&(l.status="fulfilled",l.value=t)},function(t){l.status==="pending"&&(l.status="rejected",l.reason=t)})),l.status){case"fulfilled":return l.value;case"rejected":throw l.reason}}throw l}function _u(l,t,u,a,e){var n=typeof l;(n==="undefined"||n==="boolean")&&(l=null);var c=!1;if(l===null)c=!0;else switch(n){case"bigint":case"string":case"number":c=!0;break;case"object":switch(l.$$typeof){case Pn:case Ad:c=!0;break;case Gf:return c=l._init,_u(c(l._payload),t,u,a,e)}}if(c)return e=e(l),c=a===""?"."+$n(l,0):a,Yf(e)?(u="",c!=null&&(u=c.replace(xf,"$&/")+"/"),_u(e,t,u,"",function(o){return o})):e!=null&&(uc(e)&&(e=Bd(e,u+(e.key==null||l&&l.key===e.key?"":(""+e.key).replace(xf,"$&/")+"/")+c)),t.push(e)),1;c=0;var i=a===""?".":a+":";if(Yf(l))for(var f=0;f{"use strict";wf.exports=Kf()});var u0=Ht(G=>{"use strict";function cc(l,t){var u=l.length;l.push(t);l:for(;0>>1,e=l[a];if(0>>1;aze(i,u))fze(o,i)?(l[a]=o,l[f]=u,a=f):(l[a]=i,l[c]=u,a=c);else if(fze(o,u))l[a]=o,l[f]=u,a=f;else break l}}return t}function ze(l,t){var u=l.sortIndex-t.sortIndex;return u!==0?u:l.id-t.id}G.unstable_now=void 0;typeof performance=="object"&&typeof performance.now=="function"?(Jf=performance,G.unstable_now=function(){return Jf.now()}):(ac=Date,Wf=ac.now(),G.unstable_now=function(){return ac.now()-Wf});var Jf,ac,Wf,tt=[],pt=[],Xd=1,Yl=null,yl=3,Oe=!1,uu=!1,ga=!1,$f=typeof setTimeout=="function"?setTimeout:null,Pf=typeof clearTimeout=="function"?clearTimeout:null,kf=typeof setImmediate<"u"?setImmediate:null;function Ae(l){for(var t=kl(pt);t!==null;){if(t.callback===null)Me(pt);else if(t.startTime<=l)Me(pt),t.sortIndex=t.expirationTime,cc(tt,t);else break;t=kl(pt)}}function ic(l){if(ga=!1,Ae(l),!uu)if(kl(tt)!==null)uu=!0,fc();else{var t=kl(pt);t!==null&&sc(ic,t.startTime-l)}}var De=!1,Sa=-1,If=5,l0=-1;function t0(){return!(G.unstable_now()-l0l&&t0());){var a=Yl.callback;if(typeof a=="function"){Yl.callback=null,yl=Yl.priorityLevel;var e=a(Yl.expirationTime<=l);if(l=G.unstable_now(),typeof e=="function"){Yl.callback=e,Ae(l),t=!0;break t}Yl===kl(tt)&&Me(tt),Ae(l)}else Me(tt);Yl=kl(tt)}if(Yl!==null)t=!0;else{var n=kl(pt);n!==null&&sc(ic,n.startTime-l),t=!1}}break l}finally{Yl=null,yl=u,Oe=!1}t=void 0}}finally{t?ma():De=!1}}}var ma;typeof kf=="function"?ma=function(){kf(ec)}:typeof MessageChannel<"u"?(nc=new MessageChannel,Ff=nc.port2,nc.port1.onmessage=ec,ma=function(){Ff.postMessage(null)}):ma=function(){$f(ec,0)};var nc,Ff;function fc(){De||(De=!0,ma())}function sc(l,t){Sa=$f(function(){l(G.unstable_now())},t)}G.unstable_IdlePriority=5;G.unstable_ImmediatePriority=1;G.unstable_LowPriority=4;G.unstable_NormalPriority=3;G.unstable_Profiling=null;G.unstable_UserBlockingPriority=2;G.unstable_cancelCallback=function(l){l.callback=null};G.unstable_continueExecution=function(){uu||Oe||(uu=!0,fc())};G.unstable_forceFrameRate=function(l){0>l||125a?(l.sortIndex=u,cc(pt,l),kl(tt)===null&&l===kl(pt)&&(ga?(Pf(Sa),Sa=-1):ga=!0,sc(ic,u-a))):(l.sortIndex=e,cc(tt,l),uu||Oe||(uu=!0,fc())),l};G.unstable_shouldYield=t0;G.unstable_wrapCallback=function(l){var t=yl;return function(){var u=yl;yl=t;try{return l.apply(this,arguments)}finally{yl=u}}}});var e0=Ht((My,a0)=>{"use strict";a0.exports=u0()});var c0=Ht(El=>{"use strict";var Gd=ra();function n0(l){var t="https://react.dev/errors/"+l;if(1{"use strict";function i0(){if(!(typeof __REACT_DEVTOOLS_GLOBAL_HOOK__>"u"||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!="function"))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(i0)}catch(l){console.error(l)}}i0(),f0.exports=c0()});var nd=Ht(Jn=>{"use strict";var cl=e0(),Us=ra(),jd=s0();function g(l){var t="https://react.dev/errors/"+l;if(1()=>(t||l((t={exports:{}}).exports,t),t.exports);var id=(l,t,u,a)=>{if(t&&typeof t=="object"||typeof t=="function")for(let e of nd(t))!fd.call(l,e)&&e!==u&&Oi(l,e,{get:()=>t[e],enumerable:!(a=ed(t,e))||a.enumerable});return l};var wn=(l,t,u)=>(u=l!=null?ad(cd(l)):{},id(t||!l||!l.__esModule?Oi(u,"default",{value:l,enumerable:!0}):u,l));var Xi=Mt(U=>{"use strict";var kn=Symbol.for("react.transitional.element"),sd=Symbol.for("react.portal"),vd=Symbol.for("react.fragment"),dd=Symbol.for("react.strict_mode"),hd=Symbol.for("react.profiler"),od=Symbol.for("react.consumer"),yd=Symbol.for("react.context"),md=Symbol.for("react.forward_ref"),gd=Symbol.for("react.suspense"),rd=Symbol.for("react.memo"),Ri=Symbol.for("react.lazy"),Mi=Symbol.iterator;function Sd(l){return l===null||typeof l!="object"?null:(l=Mi&&l[Mi]||l["@@iterator"],typeof l=="function"?l:null)}var pi={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},Ni=Object.assign,qi={};function Au(l,t,u){this.props=l,this.context=t,this.refs=qi,this.updater=u||pi}Au.prototype.isReactComponent={};Au.prototype.setState=function(l,t){if(typeof l!="object"&&typeof l!="function"&&l!=null)throw Error("takes an object of state variables to update or a function which returns an object of state variables.");this.updater.enqueueSetState(this,l,t,"setState")};Au.prototype.forceUpdate=function(l){this.updater.enqueueForceUpdate(this,l,"forceUpdate")};function Bi(){}Bi.prototype=Au.prototype;function $n(l,t,u){this.props=l,this.context=t,this.refs=qi,this.updater=u||pi}var Fn=$n.prototype=new Bi;Fn.constructor=$n;Ni(Fn,Au.prototype);Fn.isPureReactComponent=!0;var Di=Array.isArray,w={H:null,A:null,T:null,S:null},Yi=Object.prototype.hasOwnProperty;function Pn(l,t,u,a,e,n){return u=n.ref,{$$typeof:kn,type:l,key:t,ref:u!==void 0?u:null,props:n}}function bd(l,t){return Pn(l.type,t,void 0,void 0,void 0,l.props)}function In(l){return typeof l=="object"&&l!==null&&l.$$typeof===kn}function Ed(l){var t={"=":"=0",":":"=2"};return"$"+l.replace(/[=:]/g,function(u){return t[u]})}var _i=/\/+/g;function Wn(l,t){return typeof l=="object"&&l!==null&&l.key!=null?Ed(""+l.key):t.toString(36)}function Ui(){}function Td(l){switch(l.status){case"fulfilled":return l.value;case"rejected":throw l.reason;default:switch(typeof l.status=="string"?l.then(Ui,Ui):(l.status="pending",l.then(function(t){l.status==="pending"&&(l.status="fulfilled",l.value=t)},function(t){l.status==="pending"&&(l.status="rejected",l.reason=t)})),l.status){case"fulfilled":return l.value;case"rejected":throw l.reason}}throw l}function zu(l,t,u,a,e){var n=typeof l;(n==="undefined"||n==="boolean")&&(l=null);var c=!1;if(l===null)c=!0;else switch(n){case"bigint":case"string":case"number":c=!0;break;case"object":switch(l.$$typeof){case kn:case sd:c=!0;break;case Ri:return c=l._init,zu(c(l._payload),t,u,a,e)}}if(c)return e=e(l),c=a===""?"."+Wn(l,0):a,Di(e)?(u="",c!=null&&(u=c.replace(_i,"$&/")+"/"),zu(e,t,u,"",function(s){return s})):e!=null&&(In(e)&&(e=bd(e,u+(e.key==null||l&&l.key===e.key?"":(""+e.key).replace(_i,"$&/")+"/")+c)),t.push(e)),1;c=0;var f=a===""?".":a+":";if(Di(l))for(var i=0;i{"use strict";Ci.exports=Xi()});var wi=Mt(Z=>{"use strict";function ac(l,t){var u=l.length;l.push(t);l:for(;0>>1,e=l[a];if(0>>1;aEe(f,u))iEe(s,f)?(l[a]=s,l[i]=u,a=i):(l[a]=f,l[c]=u,a=c);else if(iEe(s,u))l[a]=s,l[i]=u,a=i;else break l}}return t}function Ee(l,t){var u=l.sortIndex-t.sortIndex;return u!==0?u:l.id-t.id}Z.unstable_now=void 0;typeof performance=="object"&&typeof performance.now=="function"?(Gi=performance,Z.unstable_now=function(){return Gi.now()}):(lc=Date,Qi=lc.now(),Z.unstable_now=function(){return lc.now()-Qi});var Gi,lc,Qi,Fl=[],Dt=[],Od=1,Nl=null,ol=3,Ae=!1,Pt=!1,ya=!1,ji=typeof setTimeout=="function"?setTimeout:null,Vi=typeof clearTimeout=="function"?clearTimeout:null,Zi=typeof setImmediate<"u"?setImmediate:null;function Te(l){for(var t=Kl(Dt);t!==null;){if(t.callback===null)ze(Dt);else if(t.startTime<=l)ze(Dt),t.sortIndex=t.expirationTime,ac(Fl,t);else break;t=Kl(Dt)}}function ec(l){if(ya=!1,Te(l),!Pt)if(Kl(Fl)!==null)Pt=!0,nc();else{var t=Kl(Dt);t!==null&&cc(ec,t.startTime-l)}}var Oe=!1,ma=-1,Li=5,Ki=-1;function Ji(){return!(Z.unstable_now()-Kil&&Ji());){var a=Nl.callback;if(typeof a=="function"){Nl.callback=null,ol=Nl.priorityLevel;var e=a(Nl.expirationTime<=l);if(l=Z.unstable_now(),typeof e=="function"){Nl.callback=e,Te(l),t=!0;break t}Nl===Kl(Fl)&&ze(Fl),Te(l)}else ze(Fl);Nl=Kl(Fl)}if(Nl!==null)t=!0;else{var n=Kl(Dt);n!==null&&cc(ec,n.startTime-l),t=!1}}break l}finally{Nl=null,ol=u,Ae=!1}t=void 0}}finally{t?oa():Oe=!1}}}var oa;typeof Zi=="function"?oa=function(){Zi(tc)}:typeof MessageChannel<"u"?(uc=new MessageChannel,xi=uc.port2,uc.port1.onmessage=tc,oa=function(){xi.postMessage(null)}):oa=function(){ji(tc,0)};var uc,xi;function nc(){Oe||(Oe=!0,oa())}function cc(l,t){ma=ji(function(){l(Z.unstable_now())},t)}Z.unstable_IdlePriority=5;Z.unstable_ImmediatePriority=1;Z.unstable_LowPriority=4;Z.unstable_NormalPriority=3;Z.unstable_Profiling=null;Z.unstable_UserBlockingPriority=2;Z.unstable_cancelCallback=function(l){l.callback=null};Z.unstable_continueExecution=function(){Pt||Ae||(Pt=!0,nc())};Z.unstable_forceFrameRate=function(l){0>l||125a?(l.sortIndex=u,ac(Dt,l),Kl(Fl)===null&&l===Kl(Dt)&&(ya?(Vi(ma),ma=-1):ya=!0,cc(ec,u-a))):(l.sortIndex=e,ac(Fl,l),Pt||Ae||(Pt=!0,nc())),l};Z.unstable_shouldYield=Ji;Z.unstable_wrapCallback=function(l){var t=ol;return function(){var u=ol;ol=t;try{return l.apply(this,arguments)}finally{ol=u}}}});var ki=Mt((vy,Wi)=>{"use strict";Wi.exports=wi()});var Fi=Mt(rl=>{"use strict";var Md=ha();function $i(l){var t="https://react.dev/errors/"+l;if(1{"use strict";function Pi(){if(!(typeof __REACT_DEVTOOLS_GLOBAL_HOOK__>"u"||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!="function"))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(Pi)}catch(l){console.error(l)}}Pi(),Ii.exports=Fi()});var kv=Mt(Kn=>{"use strict";var nl=ki(),b1=ha(),Ud=l0();function r(l){var t="https://react.dev/errors/"+l;if(1)":-1e||f[a]!==o[e]){var r=` -`+f[a].replace(" at new "," at ");return l.displayName&&r.includes("")&&(r=r.replace("",l.displayName)),r}while(1<=a&&0<=e);break}}}finally{dc=!1,Error.prepareStackTrace=u}return(u=l?l.displayName||l.name:"")?Ha(u):""}function Jd(l){switch(l.tag){case 26:case 27:case 5:return Ha(l.type);case 16:return Ha("Lazy");case 13:return Ha("Suspense");case 19:return Ha("SuspenseList");case 0:case 15:return l=vc(l.type,!1),l;case 11:return l=vc(l.type.render,!1),l;case 1:return l=vc(l.type,!0),l;default:return""}}function v0(l){try{var t="";do t+=Jd(l),l=l.return;while(l);return t}catch(u){return` +`+fc+l+u0}var ic=!1;function sc(l,t){if(!l||ic)return"";ic=!0;var u=Error.prepareStackTrace;Error.prepareStackTrace=void 0;try{var a={DetermineComponentFrameRoot:function(){try{if(t){var S=function(){throw Error()};if(Object.defineProperty(S.prototype,"props",{set:function(){throw Error()}}),typeof Reflect=="object"&&Reflect.construct){try{Reflect.construct(S,[])}catch(m){var o=m}Reflect.construct(l,[],S)}else{try{S.call()}catch(m){o=m}l.call(S.prototype)}}else{try{throw Error()}catch(m){o=m}(S=l())&&typeof S.catch=="function"&&S.catch(function(){})}}catch(m){if(m&&o&&typeof m.stack=="string")return[m.stack,o.stack]}return[null,null]}};a.DetermineComponentFrameRoot.displayName="DetermineComponentFrameRoot";var e=Object.getOwnPropertyDescriptor(a.DetermineComponentFrameRoot,"name");e&&e.configurable&&Object.defineProperty(a.DetermineComponentFrameRoot,"name",{value:"DetermineComponentFrameRoot"});var n=a.DetermineComponentFrameRoot(),c=n[0],f=n[1];if(c&&f){var i=c.split(` +`),s=f.split(` +`);for(e=a=0;ae||i[a]!==s[e]){var y=` +`+i[a].replace(" at new "," at ");return l.displayName&&y.includes("")&&(y=y.replace("",l.displayName)),y}while(1<=a&&0<=e);break}}}finally{ic=!1,Error.prepareStackTrace=u}return(u=l?l.displayName||l.name:"")?Da(u):""}function qd(l){switch(l.tag){case 26:case 27:case 5:return Da(l.type);case 16:return Da("Lazy");case 13:return Da("Suspense");case 19:return Da("SuspenseList");case 0:case 15:return l=sc(l.type,!1),l;case 11:return l=sc(l.type.render,!1),l;case 1:return l=sc(l.type,!0),l;default:return""}}function a0(l){try{var t="";do t+=qd(l),l=l.return;while(l);return t}catch(u){return` Error generating stack: `+u.message+` -`+u.stack}}function sa(l){var t=l,u=l;if(l.alternate)for(;t.return;)t=t.return;else{l=t;do t=l,(t.flags&4098)!==0&&(u=t.return),l=t.return;while(l)}return t.tag===3?u:null}function Bs(l){if(l.tag===13){var t=l.memoizedState;if(t===null&&(l=l.alternate,l!==null&&(t=l.memoizedState)),t!==null)return t.dehydrated}return null}function h0(l){if(sa(l)!==l)throw Error(g(188))}function Wd(l){var t=l.alternate;if(!t){if(t=sa(l),t===null)throw Error(g(188));return t!==l?null:l}for(var u=l,a=t;;){var e=u.return;if(e===null)break;var n=e.alternate;if(n===null){if(a=e.return,a!==null){u=a;continue}break}if(e.child===n.child){for(n=e.child;n;){if(n===u)return h0(e),l;if(n===a)return h0(e),t;n=n.sibling}throw Error(g(188))}if(u.return!==a.return)u=e,a=n;else{for(var c=!1,i=e.child;i;){if(i===u){c=!0,u=e,a=n;break}if(i===a){c=!0,a=e,u=n;break}i=i.sibling}if(!c){for(i=n.child;i;){if(i===u){c=!0,u=n,a=e;break}if(i===a){c=!0,a=n,u=e;break}i=i.sibling}if(!c)throw Error(g(189))}}if(u.alternate!==a)throw Error(g(190))}if(u.tag!==3)throw Error(g(188));return u.stateNode.current===u?l:t}function qs(l){var t=l.tag;if(t===5||t===26||t===27||t===6)return l;for(l=l.child;l!==null;){if(t=qs(l),t!==null)return t;l=l.sibling}return null}var pa=Array.isArray,K=jd.__DOM_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE,su={pending:!1,data:null,method:null,action:null},Kc=[],xu=-1;function ft(l){return{current:l}}function ol(l){0>xu||(l.current=Kc[xu],Kc[xu]=null,xu--)}function W(l,t){xu++,Kc[xu]=l.current,l.current=t}var et=ft(null),Wa=ft(null),jt=ft(null),en=ft(null);function nn(l,t){switch(W(jt,t),W(Wa,l),W(et,null),l=t.nodeType,l){case 9:case 11:t=(t=t.documentElement)&&(t=t.namespaceURI)?rs(t):0;break;default:if(l=l===8?t.parentNode:t,t=l.tagName,l=l.namespaceURI)l=rs(l),t=Jo(l,t);else switch(t){case"svg":t=1;break;case"math":t=2;break;default:t=0}}ol(et),W(et,t)}function la(){ol(et),ol(Wa),ol(jt)}function wc(l){l.memoizedState!==null&&W(en,l);var t=et.current,u=Jo(t,l.type);t!==u&&(W(Wa,l),W(et,u))}function cn(l){Wa.current===l&&(ol(et),ol(Wa)),en.current===l&&(ol(en),ne._currentValue=su)}var Jc=Object.prototype.hasOwnProperty,xi=cl.unstable_scheduleCallback,hc=cl.unstable_cancelCallback,kd=cl.unstable_shouldYield,Fd=cl.unstable_requestPaint,nt=cl.unstable_now,$d=cl.unstable_getCurrentPriorityLevel,Ys=cl.unstable_ImmediatePriority,xs=cl.unstable_UserBlockingPriority,fn=cl.unstable_NormalPriority,Pd=cl.unstable_LowPriority,Cs=cl.unstable_IdlePriority,Id=cl.log,lv=cl.unstable_setDisableYieldValue,se=null,pl=null;function tv(l){if(pl&&typeof pl.onCommitFiberRoot=="function")try{pl.onCommitFiberRoot(se,l,void 0,(l.current.flags&128)===128)}catch{}}function Qt(l){if(typeof Id=="function"&&lv(l),pl&&typeof pl.setStrictMode=="function")try{pl.setStrictMode(se,l)}catch{}}var Nl=Math.clz32?Math.clz32:ev,uv=Math.log,av=Math.LN2;function ev(l){return l>>>=0,l===0?32:31-(uv(l)/av|0)|0}var He=128,pe=4194304;function eu(l){var t=l&42;if(t!==0)return t;switch(l&-l){case 1:return 1;case 2:return 2;case 4:return 4;case 8:return 8;case 16:return 16;case 32:return 32;case 64:return 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:return l&4194176;case 4194304:case 8388608:case 16777216:case 33554432:return l&62914560;case 67108864:return 67108864;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 0;default:return l}}function Bn(l,t){var u=l.pendingLanes;if(u===0)return 0;var a=0,e=l.suspendedLanes,n=l.pingedLanes,c=l.warmLanes;l=l.finishedLanes!==0;var i=u&134217727;return i!==0?(u=i&~e,u!==0?a=eu(u):(n&=i,n!==0?a=eu(n):l||(c=i&~c,c!==0&&(a=eu(c))))):(i=u&~e,i!==0?a=eu(i):n!==0?a=eu(n):l||(c=u&~c,c!==0&&(a=eu(c)))),a===0?0:t!==0&&t!==a&&(t&e)===0&&(e=a&-a,c=t&-t,e>=c||e===32&&(c&4194176)!==0)?t:a}function oe(l,t){return(l.pendingLanes&~(l.suspendedLanes&~l.pingedLanes)&t)===0}function nv(l,t){switch(l){case 1:case 2:case 4:case 8:return t+250;case 16:case 32: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:return t+5e3;case 4194304:case 8388608:case 16777216:case 33554432:return-1;case 67108864:case 134217728:case 268435456:case 536870912:case 1073741824:return-1;default:return-1}}function Xs(){var l=He;return He<<=1,(He&4194176)===0&&(He=128),l}function Gs(){var l=pe;return pe<<=1,(pe&62914560)===0&&(pe=4194304),l}function yc(l){for(var t=[],u=0;31>u;u++)t.push(l);return t}function de(l,t){l.pendingLanes|=t,t!==268435456&&(l.suspendedLanes=0,l.pingedLanes=0,l.warmLanes=0)}function cv(l,t,u,a,e,n){var c=l.pendingLanes;l.pendingLanes=u,l.suspendedLanes=0,l.pingedLanes=0,l.warmLanes=0,l.expiredLanes&=u,l.entangledLanes&=u,l.errorRecoveryDisabledLanes&=u,l.shellSuspendCounter=0;var i=l.entanglements,f=l.expirationTimes,o=l.hiddenUpdates;for(u=c&~u;0"u"||typeof window.document>"u"||typeof window.document.createElement>"u"),ov=RegExp("^[:A-Z_a-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD][:A-Z_a-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD\\-.0-9\\u00B7\\u0300-\\u036F\\u203F-\\u2040]*$"),r0={},m0={};function dv(l){return Jc.call(m0,l)?!0:Jc.call(r0,l)?!1:ov.test(l)?m0[l]=!0:(r0[l]=!0,!1)}function we(l,t,u){if(dv(t))if(u===null)l.removeAttribute(t);else{switch(typeof u){case"undefined":case"function":case"symbol":l.removeAttribute(t);return;case"boolean":var a=t.toLowerCase().slice(0,5);if(a!=="data-"&&a!=="aria-"){l.removeAttribute(t);return}}l.setAttribute(t,""+u)}}function Ne(l,t,u){if(u===null)l.removeAttribute(t);else{switch(typeof u){case"undefined":case"function":case"symbol":case"boolean":l.removeAttribute(t);return}l.setAttribute(t,""+u)}}function dt(l,t,u,a){if(a===null)l.removeAttribute(u);else{switch(typeof a){case"undefined":case"function":case"symbol":case"boolean":l.removeAttribute(u);return}l.setAttributeNS(t,u,""+a)}}function Gl(l){switch(typeof l){case"bigint":case"boolean":case"number":case"string":case"undefined":return l;case"object":return l;default:return""}}function ws(l){var t=l.type;return(l=l.nodeName)&&l.toLowerCase()==="input"&&(t==="checkbox"||t==="radio")}function vv(l){var t=ws(l)?"checked":"value",u=Object.getOwnPropertyDescriptor(l.constructor.prototype,t),a=""+l[t];if(!l.hasOwnProperty(t)&&typeof u<"u"&&typeof u.get=="function"&&typeof u.set=="function"){var e=u.get,n=u.set;return Object.defineProperty(l,t,{configurable:!0,get:function(){return e.call(this)},set:function(c){a=""+c,n.call(this,c)}}),Object.defineProperty(l,t,{enumerable:u.enumerable}),{getValue:function(){return a},setValue:function(c){a=""+c},stopTracking:function(){l._valueTracker=null,delete l[t]}}}}function sn(l){l._valueTracker||(l._valueTracker=vv(l))}function Js(l){if(!l)return!1;var t=l._valueTracker;if(!t)return!0;var u=t.getValue(),a="";return l&&(a=ws(l)?l.checked?"true":"false":l.value),l=a,l!==u?(t.setValue(l),!0):!1}function on(l){if(l=l||(typeof document<"u"?document:void 0),typeof l>"u")return null;try{return l.activeElement||l.body}catch{return l.body}}var hv=/[\n"\\]/g;function jl(l){return l.replace(hv,function(t){return"\\"+t.charCodeAt(0).toString(16)+" "})}function kc(l,t,u,a,e,n,c,i){l.name="",c!=null&&typeof c!="function"&&typeof c!="symbol"&&typeof c!="boolean"?l.type=c:l.removeAttribute("type"),t!=null?c==="number"?(t===0&&l.value===""||l.value!=t)&&(l.value=""+Gl(t)):l.value!==""+Gl(t)&&(l.value=""+Gl(t)):c!=="submit"&&c!=="reset"||l.removeAttribute("value"),t!=null?Fc(l,c,Gl(t)):u!=null?Fc(l,c,Gl(u)):a!=null&&l.removeAttribute("value"),e==null&&n!=null&&(l.defaultChecked=!!n),e!=null&&(l.checked=e&&typeof e!="function"&&typeof e!="symbol"),i!=null&&typeof i!="function"&&typeof i!="symbol"&&typeof i!="boolean"?l.name=""+Gl(i):l.removeAttribute("name")}function Ws(l,t,u,a,e,n,c,i){if(n!=null&&typeof n!="function"&&typeof n!="symbol"&&typeof n!="boolean"&&(l.type=n),t!=null||u!=null){if(!(n!=="submit"&&n!=="reset"||t!=null))return;u=u!=null?""+Gl(u):"",t=t!=null?""+Gl(t):u,i||t===l.value||(l.value=t),l.defaultValue=t}a=a??e,a=typeof a!="function"&&typeof a!="symbol"&&!!a,l.checked=i?l.checked:!!a,l.defaultChecked=!!a,c!=null&&typeof c!="function"&&typeof c!="symbol"&&typeof c!="boolean"&&(l.name=c)}function Fc(l,t,u){t==="number"&&on(l.ownerDocument)===l||l.defaultValue===""+u||(l.defaultValue=""+u)}function Ju(l,t,u,a){if(l=l.options,t){t={};for(var e=0;e=Ba),A0=" ",M0=!1;function t1(l,t){switch(l){case"keyup":return Zv.indexOf(t.keyCode)!==-1;case"keydown":return t.keyCode!==229;case"keypress":case"mousedown":case"focusout":return!0;default:return!1}}function u1(l){return l=l.detail,typeof l=="object"&&"data"in l?l.data:null}var Xu=!1;function Lv(l,t){switch(l){case"compositionend":return u1(t);case"keypress":return t.which!==32?null:(M0=!0,A0);case"textInput":return l=t.data,l===A0&&M0?null:l;default:return null}}function Vv(l,t){if(Xu)return l==="compositionend"||!ji&&t1(l,t)?(l=Is(),We=Qi=Zt=null,Xu=!1,l):null;switch(l){case"paste":return null;case"keypress":if(!(t.ctrlKey||t.altKey||t.metaKey)||t.ctrlKey&&t.altKey){if(t.char&&1=t)return{node:u,offset:t-l};l=a}l:{for(;u;){if(u.nextSibling){u=u.nextSibling;break l}u=u.parentNode}u=void 0}u=U0(u)}}function c1(l,t){return l&&t?l===t?!0:l&&l.nodeType===3?!1:t&&t.nodeType===3?c1(l,t.parentNode):"contains"in l?l.contains(t):l.compareDocumentPosition?!!(l.compareDocumentPosition(t)&16):!1:!1}function i1(l){l=l!=null&&l.ownerDocument!=null&&l.ownerDocument.defaultView!=null?l.ownerDocument.defaultView:window;for(var t=on(l.document);t instanceof l.HTMLIFrameElement;){try{var u=typeof t.contentWindow.location.href=="string"}catch{u=!1}if(u)l=t.contentWindow;else break;t=on(l.document)}return t}function Li(l){var t=l&&l.nodeName&&l.nodeName.toLowerCase();return t&&(t==="input"&&(l.type==="text"||l.type==="search"||l.type==="tel"||l.type==="url"||l.type==="password")||t==="textarea"||l.contentEditable==="true")}function Pv(l,t){var u=i1(t);t=l.focusedElem;var a=l.selectionRange;if(u!==t&&t&&t.ownerDocument&&c1(t.ownerDocument.documentElement,t)){if(a!==null&&Li(t)){if(l=a.start,u=a.end,u===void 0&&(u=l),"selectionStart"in t)t.selectionStart=l,t.selectionEnd=Math.min(u,t.value.length);else if(u=(l=t.ownerDocument||document)&&l.defaultView||window,u.getSelection){u=u.getSelection();var e=t.textContent.length,n=Math.min(a.start,e);a=a.end===void 0?n:Math.min(a.end,e),!u.extend&&n>a&&(e=a,a=n,n=e),e=H0(t,n);var c=H0(t,a);e&&c&&(u.rangeCount!==1||u.anchorNode!==e.node||u.anchorOffset!==e.offset||u.focusNode!==c.node||u.focusOffset!==c.offset)&&(l=l.createRange(),l.setStart(e.node,e.offset),u.removeAllRanges(),n>a?(u.addRange(l),u.extend(c.node,c.offset)):(l.setEnd(c.node,c.offset),u.addRange(l)))}}for(l=[],u=t;u=u.parentNode;)u.nodeType===1&&l.push({element:u,left:u.scrollLeft,top:u.scrollTop});for(typeof t.focus=="function"&&t.focus(),t=0;t=document.documentMode,Gu=null,Ic=null,Ya=null,li=!1;function p0(l,t,u){var a=u.window===u?u.document:u.nodeType===9?u:u.ownerDocument;li||Gu==null||Gu!==on(a)||(a=Gu,"selectionStart"in a&&Li(a)?a={start:a.selectionStart,end:a.selectionEnd}:(a=(a.ownerDocument&&a.ownerDocument.defaultView||window).getSelection(),a={anchorNode:a.anchorNode,anchorOffset:a.anchorOffset,focusNode:a.focusNode,focusOffset:a.focusOffset}),Ya&&Pa(Ya,a)||(Ya=a,a=Dn(Ic,"onSelect"),0>=c,e-=c,bt=1<<32-Nl(t)+e|u<M?(Z=A,A=null):Z=A.sibling;var R=h(d,A,v[M],m);if(R===null){A===null&&(A=Z);break}l&&A&&R.alternate===null&&t(d,A),s=n(R,s,M),_===null?T=R:_.sibling=R,_=R,A=Z}if(M===v.length)return u(d,A),x&&nu(d,M),T;if(A===null){for(;MM?(Z=A,A=null):Z=A.sibling;var Wl=h(d,A,R.value,m);if(Wl===null){A===null&&(A=Z);break}l&&A&&Wl.alternate===null&&t(d,A),s=n(Wl,s,M),_===null?T=Wl:_.sibling=Wl,_=Wl,A=Z}if(R.done)return u(d,A),x&&nu(d,M),T;if(A===null){for(;!R.done;M++,R=v.next())R=S(d,R.value,m),R!==null&&(s=n(R,s,M),_===null?T=R:_.sibling=R,_=R);return x&&nu(d,M),T}for(A=a(A);!R.done;M++,R=v.next())R=y(A,d,M,R.value,m),R!==null&&(l&&R.alternate!==null&&A.delete(R.key===null?M:R.key),s=n(R,s,M),_===null?T=R:_.sibling=R,_=R);return l&&A.forEach(function(Du){return t(d,Du)}),x&&nu(d,M),T}function J(d,s,v,m){if(typeof v=="object"&&v!==null&&v.type===Yu&&v.key===null&&(v=v.props.children),typeof v=="object"&&v!==null){switch(v.$$typeof){case Ue:l:{for(var T=v.key;s!==null;){if(s.key===T){if(T=v.type,T===Yu){if(s.tag===7){u(d,s.sibling),m=e(s,v.props.children),m.return=d,d=m;break l}}else if(s.elementType===T||typeof T=="object"&&T!==null&&T.$$typeof===qt&&C0(T)===s.type){u(d,s.sibling),m=e(s,v.props),Aa(m,v),m.return=d,d=m;break l}u(d,s);break}else t(d,s);s=s.sibling}v.type===Yu?(m=vu(v.props.children,d.mode,m,v.key),m.return=d,d=m):(m=ln(v.type,v.key,v.props,null,d.mode,m),Aa(m,v),m.return=d,d=m)}return c(d);case Ua:l:{for(T=v.key;s!==null;){if(s.key===T)if(s.tag===4&&s.stateNode.containerInfo===v.containerInfo&&s.stateNode.implementation===v.implementation){u(d,s.sibling),m=e(s,v.children||[]),m.return=d,d=m;break l}else{u(d,s);break}else t(d,s);s=s.sibling}m=Bc(v,d.mode,m),m.return=d,d=m}return c(d);case qt:return T=v._init,v=T(v._payload),J(d,s,v,m)}if(pa(v))return E(d,s,v,m);if(Ea(v)){if(T=Ea(v),typeof T!="function")throw Error(g(150));return v=T.call(v),O(d,s,v,m)}if(typeof v.then=="function")return J(d,s,xe(v),m);if(v.$$typeof===St)return J(d,s,Xe(d,v),m);Ce(d,v)}return typeof v=="string"&&v!==""||typeof v=="number"||typeof v=="bigint"?(v=""+v,s!==null&&s.tag===6?(u(d,s.sibling),m=e(s,v),m.return=d,d=m):(u(d,s),m=Rc(v,d.mode,m),m.return=d,d=m),c(d)):u(d,s)}return function(d,s,v,m){try{le=0;var T=J(d,s,v,m);return ku=null,T}catch(A){if(A===xa)throw A;var _=Vl(29,A,null,d.mode);return _.lanes=m,_.return=d,_}finally{}}}var mu=S1(!0),b1=S1(!1),aa=ft(null),yn=ft(0);function X0(l,t){l=_t,W(yn,l),W(aa,t),_t=l|t.baseLanes}function ai(){W(yn,_t),W(aa,aa.current)}function Wi(){_t=yn.current,ol(aa),ol(yn)}var wl=ft(null),ct=null;function xt(l){var t=l.alternate;W(nl,nl.current&1),W(wl,l),ct===null&&(t===null||aa.current!==null||t.memoizedState!==null)&&(ct=l)}function E1(l){if(l.tag===22){if(W(nl,nl.current),W(wl,l),ct===null){var t=l.alternate;t!==null&&t.memoizedState!==null&&(ct=l)}}else Ct(l)}function Ct(){W(nl,nl.current),W(wl,wl.current)}function Tt(l){ol(wl),ct===l&&(ct=null),ol(nl)}var nl=ft(0);function rn(l){for(var t=l;t!==null;){if(t.tag===13){var u=t.memoizedState;if(u!==null&&(u=u.dehydrated,u===null||u.data==="$?"||u.data==="$!"))return t}else if(t.tag===19&&t.memoizedProps.revealOrder!==void 0){if((t.flags&128)!==0)return t}else if(t.child!==null){t.child.return=t,t=t.child;continue}if(t===l)break;for(;t.sibling===null;){if(t.return===null||t.return===l)return null;t=t.return}t.sibling.return=t.return,t=t.sibling}return null}var ah=typeof AbortController<"u"?AbortController:function(){var l=[],t=this.signal={aborted:!1,addEventListener:function(u,a){l.push(a)}};this.abort=function(){t.aborted=!0,l.forEach(function(u){return u()})}},eh=cl.unstable_scheduleCallback,nh=cl.unstable_NormalPriority,el={$$typeof:St,Consumer:null,Provider:null,_currentValue:null,_currentValue2:null,_threadCount:0};function ki(){return{controller:new ah,data:new Map,refCount:0}}function ye(l){l.refCount--,l.refCount===0&&eh(nh,function(){l.controller.abort()})}var Xa=null,ei=0,ea=0,Fu=null;function ch(l,t){if(Xa===null){var u=Xa=[];ei=0,ea=bf(),Fu={status:"pending",value:void 0,then:function(a){u.push(a)}}}return ei++,t.then(G0,G0),t}function G0(){if(--ei===0&&Xa!==null){Fu!==null&&(Fu.status="fulfilled");var l=Xa;Xa=null,ea=0,Fu=null;for(var t=0;tn?n:8;var c=U.T,i={};U.T=i,sf(l,!1,t,u);try{var f=e(),o=U.S;if(o!==null&&o(i,f),f!==null&&typeof f=="object"&&typeof f.then=="function"){var r=ih(f,a);Ga(l,t,r,Rl(l))}else Ga(l,t,a,Rl(l))}catch(S){Ga(l,t,{then:function(){},status:"rejected",reason:S},Rl())}finally{K.p=n,U.T=c}}function vh(){}function ii(l,t,u,a){if(l.tag!==5)throw Error(g(476));var e=J1(l).queue;w1(l,e,t,su,u===null?vh:function(){return W1(l),u(a)})}function J1(l){var t=l.memoizedState;if(t!==null)return t;t={memoizedState:su,baseState:su,baseQueue:null,queue:{pending:null,lanes:0,dispatch:null,lastRenderedReducer:Ot,lastRenderedState:su},next:null};var u={};return t.next={memoizedState:u,baseState:u,baseQueue:null,queue:{pending:null,lanes:0,dispatch:null,lastRenderedReducer:Ot,lastRenderedState:u},next:null},l.memoizedState=t,l=l.alternate,l!==null&&(l.memoizedState=t),t}function W1(l){var t=J1(l).next.queue;Ga(l,t,{},Rl())}function ff(){return ml(ne)}function k1(){return al().memoizedState}function F1(){return al().memoizedState}function hh(l){for(var t=l.return;t!==null;){switch(t.tag){case 24:case 3:var u=Rl();l=Lt(u);var a=Vt(t,l,u);a!==null&&(zl(a,t,u),Za(a,t,u)),t={cache:ki()},l.payload=t;return}t=t.return}}function yh(l,t,u){var a=Rl();u={lane:a,revertLane:0,action:u,hasEagerState:!1,eagerState:null,next:null},jn(l)?P1(t,u):(u=Ki(l,t,u,a),u!==null&&(zl(u,l,a),I1(u,t,a)))}function $1(l,t,u){var a=Rl();Ga(l,t,u,a)}function Ga(l,t,u,a){var e={lane:a,revertLane:0,action:u,hasEagerState:!1,eagerState:null,next:null};if(jn(l))P1(t,e);else{var n=l.alternate;if(l.lanes===0&&(n===null||n.lanes===0)&&(n=t.lastRenderedReducer,n!==null))try{var c=t.lastRenderedState,i=n(c,u);if(e.hasEagerState=!0,e.eagerState=i,Bl(i,c))return Xn(l,t,e,0),L===null&&Cn(),!1}catch{}finally{}if(u=Ki(l,t,e,a),u!==null)return zl(u,l,a),I1(u,t,a),!0}return!1}function sf(l,t,u,a){if(a={lane:2,revertLane:bf(),action:a,hasEagerState:!1,eagerState:null,next:null},jn(l)){if(t)throw Error(g(479))}else t=Ki(l,u,a,2),t!==null&&zl(t,l,2)}function jn(l){var t=l.alternate;return l===p||t!==null&&t===p}function P1(l,t){$u=mn=!0;var u=l.pending;u===null?t.next=t:(t.next=u.next,u.next=t),l.pending=t}function I1(l,t,u){if((u&4194176)!==0){var a=t.lanes;a&=l.pendingLanes,u|=a,t.lanes=u,Zs(l,u)}}var it={readContext:ml,use:Qn,useCallback:ll,useContext:ll,useEffect:ll,useImperativeHandle:ll,useLayoutEffect:ll,useInsertionEffect:ll,useMemo:ll,useReducer:ll,useRef:ll,useState:ll,useDebugValue:ll,useDeferredValue:ll,useTransition:ll,useSyncExternalStore:ll,useId:ll};it.useCacheRefresh=ll;it.useMemoCache=ll;it.useHostTransitionStatus=ll;it.useFormState=ll;it.useActionState=ll;it.useOptimistic=ll;var Au={readContext:ml,use:Qn,useCallback:function(l,t){return Al().memoizedState=[l,t===void 0?null:t],l},useContext:ml,useEffect:L0,useImperativeHandle:function(l,t,u){u=u!=null?u.concat([l]):null,Pe(4194308,4,Z1.bind(null,t,l),u)},useLayoutEffect:function(l,t){return Pe(4194308,4,l,t)},useInsertionEffect:function(l,t){Pe(4,2,l,t)},useMemo:function(l,t){var u=Al();t=t===void 0?null:t;var a=l();if(gu){Qt(!0);try{l()}finally{Qt(!1)}}return u.memoizedState=[a,t],a},useReducer:function(l,t,u){var a=Al();if(u!==void 0){var e=u(t);if(gu){Qt(!0);try{u(t)}finally{Qt(!1)}}}else e=t;return a.memoizedState=a.baseState=e,l={pending:null,lanes:0,dispatch:null,lastRenderedReducer:l,lastRenderedState:e},a.queue=l,l=l.dispatch=yh.bind(null,p,l),[a.memoizedState,l]},useRef:function(l){var t=Al();return l={current:l},t.memoizedState=l},useState:function(l){l=ni(l);var t=l.queue,u=$1.bind(null,p,t);return t.dispatch=u,[l.memoizedState,u]},useDebugValue:nf,useDeferredValue:function(l,t){var u=Al();return cf(u,l,t)},useTransition:function(){var l=ni(!1);return l=w1.bind(null,p,l.queue,!0,!1),Al().memoizedState=l,[!1,l]},useSyncExternalStore:function(l,t,u){var a=p,e=Al();if(x){if(u===void 0)throw Error(g(407));u=u()}else{if(u=t(),L===null)throw Error(g(349));(Y&60)!==0||O1(a,t,u)}e.memoizedState=u;var n={value:u,getSnapshot:t};return e.queue=n,L0(_1.bind(null,a,n,l),[l]),a.flags|=2048,na(9,D1.bind(null,a,n,u,t),{destroy:void 0},null),u},useId:function(){var l=Al(),t=L.identifierPrefix;if(x){var u=Et,a=bt;u=(a&~(1<<32-Nl(a)-1)).toString(32)+u,t=":"+t+"R"+u,u=gn++,0 title"))),hl(n,a,u),n[rl]=l,fl(n),a=n;break l;case"link":var c=Ts("link","href",e).get(a+(u.href||""));if(c){for(var i=0;i<\/script>",l=l.removeChild(l.firstChild);break;case"select":l=typeof a.is=="string"?e.createElement("select",{is:a.is}):e.createElement("select"),a.multiple?l.multiple=!0:a.size&&(l.size=a.size);break;default:l=typeof a.is=="string"?e.createElement(u,{is:a.is}):e.createElement(u)}}l[rl]=t,l[Ml]=a;l:for(e=t.child;e!==null;){if(e.tag===5||e.tag===6)l.appendChild(e.stateNode);else if(e.tag!==4&&e.tag!==27&&e.child!==null){e.child.return=e,e=e.child;continue}if(e===t)break l;for(;e.sibling===null;){if(e.return===null||e.return===t)break l;e=e.return}e.sibling.return=e.return,e=e.sibling}t.stateNode=l;l:switch(hl(l,u,a),u){case"button":case"input":case"select":case"textarea":l=!!a.autoFocus;break l;case"img":l=!0;break l;default:l=!1}l&&yt(t)}}return F(t),t.flags&=-16777217,null;case 6:if(l&&t.stateNode!=null)l.memoizedProps!==a&&yt(t);else{if(typeof a!="string"&&t.stateNode===null)throw Error(g(166));if(l=jt.current,za(t)){if(l=t.stateNode,u=t.memoizedProps,a=null,e=Tl,e!==null)switch(e.tag){case 27:case 5:a=e.memoizedProps}l[rl]=t,l=!!(l.nodeValue===u||a!==null&&a.suppressHydrationWarning===!0||wo(l.nodeValue,u)),l||ru(t)}else l=_n(l).createTextNode(a),l[rl]=t,t.stateNode=l}return F(t),null;case 13:if(a=t.memoizedState,l===null||l.memoizedState!==null&&l.memoizedState.dehydrated!==null){if(e=za(t),a!==null&&a.dehydrated!==null){if(l===null){if(!e)throw Error(g(318));if(e=t.memoizedState,e=e!==null?e.dehydrated:null,!e)throw Error(g(317));e[rl]=t}else he(),(t.flags&128)===0&&(t.memoizedState=null),t.flags|=4;F(t),e=!1}else $l!==null&&(Ai($l),$l=null),e=!0;if(!e)return t.flags&256?(Tt(t),t):(Tt(t),null)}if(Tt(t),(t.flags&128)!==0)return t.lanes=u,t;if(u=a!==null,l=l!==null&&l.memoizedState!==null,u){a=t.child,e=null,a.alternate!==null&&a.alternate.memoizedState!==null&&a.alternate.memoizedState.cachePool!==null&&(e=a.alternate.memoizedState.cachePool.pool);var n=null;a.memoizedState!==null&&a.memoizedState.cachePool!==null&&(n=a.memoizedState.cachePool.pool),n!==e&&(a.flags|=2048)}return u!==l&&u&&(t.child.flags|=8192),Ge(t,t.updateQueue),F(t),null;case 4:return la(),l===null&&Ef(t.stateNode.containerInfo),F(t),null;case 10:return At(t.type),F(t),null;case 19:if(ol(nl),e=t.memoizedState,e===null)return F(t),null;if(a=(t.flags&128)!==0,n=e.rendering,n===null)if(a)Oa(e,!1);else{if(I!==0||l!==null&&(l.flags&128)!==0)for(l=t.child;l!==null;){if(n=rn(l),n!==null){for(t.flags|=128,Oa(e,!1),l=n.updateQueue,t.updateQueue=l,Ge(t,l),t.subtreeFlags=0,l=u,u=t.child;u!==null;)po(u,l),u=u.sibling;return W(nl,nl.current&1|2),t.child}l=l.sibling}e.tail!==null&&nt()>zn&&(t.flags|=128,a=!0,Oa(e,!1),t.lanes=4194304)}else{if(!a)if(l=rn(n),l!==null){if(t.flags|=128,a=!0,l=l.updateQueue,t.updateQueue=l,Ge(t,l),Oa(e,!0),e.tail===null&&e.tailMode==="hidden"&&!n.alternate&&!x)return F(t),null}else 2*nt()-e.renderingStartTime>zn&&u!==536870912&&(t.flags|=128,a=!0,Oa(e,!1),t.lanes=4194304);e.isBackwards?(n.sibling=t.child,t.child=n):(l=e.last,l!==null?l.sibling=n:t.child=n,e.last=n)}return e.tail!==null?(t=e.tail,e.rendering=t,e.tail=t.sibling,e.renderingStartTime=nt(),t.sibling=null,l=nl.current,W(nl,a?l&1|2:l&1),t):(F(t),null);case 22:case 23:return Tt(t),Wi(),a=t.memoizedState!==null,l!==null?l.memoizedState!==null!==a&&(t.flags|=8192):a&&(t.flags|=8192),a?(u&536870912)!==0&&(t.flags&128)===0&&(F(t),t.subtreeFlags&6&&(t.flags|=8192)):F(t),u=t.updateQueue,u!==null&&Ge(t,u.retryQueue),u=null,l!==null&&l.memoizedState!==null&&l.memoizedState.cachePool!==null&&(u=l.memoizedState.cachePool.pool),a=null,t.memoizedState!==null&&t.memoizedState.cachePool!==null&&(a=t.memoizedState.cachePool.pool),a!==u&&(t.flags|=2048),l!==null&&ol(du),null;case 24:return u=null,l!==null&&(u=l.memoizedState.cache),t.memoizedState.cache!==u&&(t.flags|=2048),At(el),F(t),null;case 25:return null}throw Error(g(156,t.tag))}function Th(l,t){switch(Ji(t),t.tag){case 1:return l=t.flags,l&65536?(t.flags=l&-65537|128,t):null;case 3:return At(el),la(),l=t.flags,(l&65536)!==0&&(l&128)===0?(t.flags=l&-65537|128,t):null;case 26:case 27:case 5:return cn(t),null;case 13:if(Tt(t),l=t.memoizedState,l!==null&&l.dehydrated!==null){if(t.alternate===null)throw Error(g(340));he()}return l=t.flags,l&65536?(t.flags=l&-65537|128,t):null;case 19:return ol(nl),null;case 4:return la(),null;case 10:return At(t.type),null;case 22:case 23:return Tt(t),Wi(),l!==null&&ol(du),l=t.flags,l&65536?(t.flags=l&-65537|128,t):null;case 24:return At(el),null;case 25:return null;default:return null}}function Ro(l,t){switch(Ji(t),t.tag){case 3:At(el),la();break;case 26:case 27:case 5:cn(t);break;case 4:la();break;case 13:Tt(t);break;case 19:ol(nl);break;case 10:At(t.type);break;case 22:case 23:Tt(t),Wi(),l!==null&&ol(du);break;case 24:At(el)}}var zh={getCacheForType:function(l){var t=ml(el),u=t.data.get(l);return u===void 0&&(u=l(),t.data.set(l,u)),u}},Ah=typeof WeakMap=="function"?WeakMap:Map,$=0,L=null,B=null,Y=0,j=0,Ul=null,mt=!1,va=!1,rf=!1,_t=0,I=0,It=0,hu=0,mf=0,Kl=0,ca=0,Ka=null,at=null,bi=!1,gf=0,zn=1/0,An=null,wt=null,Qe=!1,cu=null,wa=0,Ei=0,Ti=null,Ja=0,zi=null;function Rl(){if(($&2)!==0&&Y!==0)return Y&-Y;if(U.T!==null){var l=ea;return l!==0?l:bf()}return Ls()}function Bo(){Kl===0&&(Kl=(Y&536870912)===0||x?Xs():536870912);var l=wl.current;return l!==null&&(l.flags|=32),Kl}function zl(l,t,u){(l===L&&j===2||l.cancelPendingCommit!==null)&&(ia(l,0),gt(l,Y,Kl,!1)),de(l,u),(($&2)===0||l!==L)&&(l===L&&(($&2)===0&&(hu|=u),I===4&>(l,Y,Kl,!1)),st(l))}function qo(l,t,u){if(($&6)!==0)throw Error(g(327));var a=!u&&(t&60)===0&&(t&l.expiredLanes)===0||oe(l,t),e=a?Dh(l,t):qc(l,t,!0),n=a;do{if(e===0){va&&!a&>(l,t,0,!1);break}else if(e===6)gt(l,t,0,!mt);else{if(u=l.current.alternate,n&&!Mh(u)){e=qc(l,t,!1),n=!1;continue}if(e===2){if(n=t,l.errorRecoveryDisabledLanes&n)var c=0;else c=l.pendingLanes&-536870913,c=c!==0?c:c&536870912?536870912:0;if(c!==0){t=c;l:{var i=l;e=Ka;var f=i.current.memoizedState.isDehydrated;if(f&&(ia(i,c).flags|=256),c=qc(i,c,!1),c!==2){if(rf&&!f){i.errorRecoveryDisabledLanes|=n,hu|=n,e=4;break l}n=at,at=e,n!==null&&Ai(n)}e=c}if(n=!1,e!==2)continue}}if(e===1){ia(l,0),gt(l,t,0,!0);break}l:{switch(a=l,e){case 0:case 1:throw Error(g(345));case 4:if((t&4194176)===t){gt(a,t,Kl,!mt);break l}break;case 2:at=null;break;case 3:case 5:break;default:throw Error(g(329))}if(a.finishedWork=u,a.finishedLanes=t,(t&62914560)===t&&(n=gf+300-nt(),10u?32:u,U.T=null,cu===null)var n=!1;else{u=Ti,Ti=null;var c=cu,i=wa;if(cu=null,wa=0,($&6)!==0)throw Error(g(331));var f=$;if($|=4,Uo(c.current),Oo(c,c.current,i,u),$=f,Se(0,!1),pl&&typeof pl.onPostCommitFiberRoot=="function")try{pl.onPostCommitFiberRoot(se,c)}catch{}n=!0}return n}finally{K.p=e,U.T=a,Qo(l,t)}}return!1}function is(l,t,u){t=Ll(u,t),t=si(l.stateNode,t,2),l=Vt(l,t,2),l!==null&&(de(l,2),st(l))}function Q(l,t,u){if(l.tag===3)is(l,l,u);else for(;t!==null;){if(t.tag===3){is(t,l,u);break}else if(t.tag===1){var a=t.stateNode;if(typeof t.type.getDerivedStateFromError=="function"||typeof a.componentDidCatch=="function"&&(wt===null||!wt.has(a))){l=Ll(u,l),u=ao(2),a=Vt(t,u,2),a!==null&&(eo(u,a,t,l),de(a,2),st(a));break}}t=t.return}}function Yc(l,t,u){var a=l.pingCache;if(a===null){a=l.pingCache=new Ah;var e=new Set;a.set(t,e)}else e=a.get(t),e===void 0&&(e=new Set,a.set(t,e));e.has(u)||(rf=!0,e.add(u),l=Hh.bind(null,l,t,u),t.then(l,l))}function Hh(l,t,u){var a=l.pingCache;a!==null&&a.delete(t),l.pingedLanes|=l.suspendedLanes&u,l.warmLanes&=~u,L===l&&(Y&u)===u&&(I===4||I===3&&(Y&62914560)===Y&&300>nt()-gf?($&2)===0&&ia(l,0):mf|=u,ca===Y&&(ca=0)),st(l)}function Zo(l,t){t===0&&(t=Gs()),l=Ft(l,t),l!==null&&(de(l,t),st(l))}function ph(l){var t=l.memoizedState,u=0;t!==null&&(u=t.retryLane),Zo(l,u)}function Nh(l,t){var u=0;switch(l.tag){case 13:var a=l.stateNode,e=l.memoizedState;e!==null&&(u=e.retryLane);break;case 19:a=l.stateNode;break;case 22:a=l.stateNode._retryCache;break;default:throw Error(g(314))}a!==null&&a.delete(t),Zo(l,u)}function Rh(l,t){return xi(l,t)}var Mn=null,qu=null,Oi=!1,On=!1,xc=!1,yu=0;function st(l){l!==qu&&l.next===null&&(qu===null?Mn=qu=l:qu=qu.next=l),On=!0,Oi||(Oi=!0,qh(Bh))}function Se(l,t){if(!xc&&On){xc=!0;do for(var u=!1,a=Mn;a!==null;){if(!t)if(l!==0){var e=a.pendingLanes;if(e===0)var n=0;else{var c=a.suspendedLanes,i=a.pingedLanes;n=(1<<31-Nl(42|l)+1)-1,n&=e&~(c&~i),n=n&201326677?n&201326677|1:n?n|2:0}n!==0&&(u=!0,fs(a,n))}else n=Y,n=Bn(a,a===L?n:0),(n&3)===0||oe(a,n)||(u=!0,fs(a,n));a=a.next}while(u);xc=!1}}function Bh(){On=Oi=!1;var l=0;yu!==0&&(Qh()&&(l=yu),yu=0);for(var t=nt(),u=null,a=Mn;a!==null;){var e=a.next,n=jo(a,t);n===0?(a.next=null,u===null?Mn=e:u.next=e,e===null&&(qu=u)):(u=a,(l!==0||(n&3)!==0)&&(On=!0)),a=e}Se(l,!1)}function jo(l,t){for(var u=l.suspendedLanes,a=l.pingedLanes,e=l.expirationTimes,n=l.pendingLanes&-62914561;0"u"?null:document;function Fo(l,t,u){var a=ha;if(a&&typeof t=="string"&&t){var e=jl(t);e='link[rel="'+l+'"][href="'+e+'"]',typeof u=="string"&&(e+='[crossorigin="'+u+'"]'),Ss.has(e)||(Ss.add(e),l={rel:l,crossOrigin:u,href:t},a.querySelector(e)===null&&(t=a.createElement("link"),hl(t,"link",l),fl(t),a.head.appendChild(t)))}}function Wh(l){Ut.D(l),Fo("dns-prefetch",l,null)}function kh(l,t){Ut.C(l,t),Fo("preconnect",l,t)}function Fh(l,t,u){Ut.L(l,t,u);var a=ha;if(a&&l&&t){var e='link[rel="preload"][as="'+jl(t)+'"]';t==="image"&&u&&u.imageSrcSet?(e+='[imagesrcset="'+jl(u.imageSrcSet)+'"]',typeof u.imageSizes=="string"&&(e+='[imagesizes="'+jl(u.imageSizes)+'"]')):e+='[href="'+jl(l)+'"]';var n=e;switch(t){case"style":n=fa(l);break;case"script":n=ya(l)}Jl.has(n)||(l=w({rel:"preload",href:t==="image"&&u&&u.imageSrcSet?void 0:l,as:t},u),Jl.set(n,l),a.querySelector(e)!==null||t==="style"&&a.querySelector(be(n))||t==="script"&&a.querySelector(Ee(n))||(t=a.createElement("link"),hl(t,"link",l),fl(t),a.head.appendChild(t)))}}function $h(l,t){Ut.m(l,t);var u=ha;if(u&&l){var a=t&&typeof t.as=="string"?t.as:"script",e='link[rel="modulepreload"][as="'+jl(a)+'"][href="'+jl(l)+'"]',n=e;switch(a){case"audioworklet":case"paintworklet":case"serviceworker":case"sharedworker":case"worker":case"script":n=ya(l)}if(!Jl.has(n)&&(l=w({rel:"modulepreload",href:l},t),Jl.set(n,l),u.querySelector(e)===null)){switch(a){case"audioworklet":case"paintworklet":case"serviceworker":case"sharedworker":case"worker":case"script":if(u.querySelector(Ee(n)))return}a=u.createElement("link"),hl(a,"link",l),fl(a),u.head.appendChild(a)}}}function Ph(l,t,u){Ut.S(l,t,u);var a=ha;if(a&&l){var e=wu(a).hoistableStyles,n=fa(l);t=t||"default";var c=e.get(n);if(!c){var i={loading:0,preload:null};if(c=a.querySelector(be(n)))i.loading=5;else{l=w({rel:"stylesheet",href:l,"data-precedence":t},u),(u=Jl.get(n))&&Tf(l,u);var f=c=a.createElement("link");fl(f),hl(f,"link",l),f._p=new Promise(function(o,r){f.onload=o,f.onerror=r}),f.addEventListener("load",function(){i.loading|=1}),f.addEventListener("error",function(){i.loading|=2}),i.loading|=4,tn(c,t,a)}c={type:"stylesheet",instance:c,count:1,state:i},e.set(n,c)}}}function Ih(l,t){Ut.X(l,t);var u=ha;if(u&&l){var a=wu(u).hoistableScripts,e=ya(l),n=a.get(e);n||(n=u.querySelector(Ee(e)),n||(l=w({src:l,async:!0},t),(t=Jl.get(e))&&zf(l,t),n=u.createElement("script"),fl(n),hl(n,"link",l),u.head.appendChild(n)),n={type:"script",instance:n,count:1,state:null},a.set(e,n))}}function ly(l,t){Ut.M(l,t);var u=ha;if(u&&l){var a=wu(u).hoistableScripts,e=ya(l),n=a.get(e);n||(n=u.querySelector(Ee(e)),n||(l=w({src:l,async:!0,type:"module"},t),(t=Jl.get(e))&&zf(l,t),n=u.createElement("script"),fl(n),hl(n,"link",l),u.head.appendChild(n)),n={type:"script",instance:n,count:1,state:null},a.set(e,n))}}function bs(l,t,u,a){var e=(e=jt.current)?Un(e):null;if(!e)throw Error(g(446));switch(l){case"meta":case"title":return null;case"style":return typeof u.precedence=="string"&&typeof u.href=="string"?(t=fa(u.href),u=wu(e).hoistableStyles,a=u.get(t),a||(a={type:"style",instance:null,count:0,state:null},u.set(t,a)),a):{type:"void",instance:null,count:0,state:null};case"link":if(u.rel==="stylesheet"&&typeof u.href=="string"&&typeof u.precedence=="string"){l=fa(u.href);var n=wu(e).hoistableStyles,c=n.get(l);if(c||(e=e.ownerDocument||e,c={type:"stylesheet",instance:null,count:0,state:{loading:0,preload:null}},n.set(l,c),(n=e.querySelector(be(l)))&&!n._p&&(c.instance=n,c.state.loading=5),Jl.has(l)||(u={rel:"preload",as:"style",href:u.href,crossOrigin:u.crossOrigin,integrity:u.integrity,media:u.media,hrefLang:u.hrefLang,referrerPolicy:u.referrerPolicy},Jl.set(l,u),n||ty(e,l,u,c.state))),t&&a===null)throw Error(g(528,""));return c}if(t&&a!==null)throw Error(g(529,""));return null;case"script":return t=u.async,u=u.src,typeof u=="string"&&t&&typeof t!="function"&&typeof t!="symbol"?(t=ya(u),u=wu(e).hoistableScripts,a=u.get(t),a||(a={type:"script",instance:null,count:0,state:null},u.set(t,a)),a):{type:"void",instance:null,count:0,state:null};default:throw Error(g(444,l))}}function fa(l){return'href="'+jl(l)+'"'}function be(l){return'link[rel="stylesheet"]['+l+"]"}function $o(l){return w({},l,{"data-precedence":l.precedence,precedence:null})}function ty(l,t,u,a){l.querySelector('link[rel="preload"][as="style"]['+t+"]")?a.loading=1:(t=l.createElement("link"),a.preload=t,t.addEventListener("load",function(){return a.loading|=1}),t.addEventListener("error",function(){return a.loading|=2}),hl(t,"link",u),fl(t),l.head.appendChild(t))}function ya(l){return'[src="'+jl(l)+'"]'}function Ee(l){return"script[async]"+l}function Es(l,t,u){if(t.count++,t.instance===null)switch(t.type){case"style":var a=l.querySelector('style[data-href~="'+jl(u.href)+'"]');if(a)return t.instance=a,fl(a),a;var e=w({},u,{"data-href":u.href,"data-precedence":u.precedence,href:null,precedence:null});return a=(l.ownerDocument||l).createElement("style"),fl(a),hl(a,"style",e),tn(a,u.precedence,l),t.instance=a;case"stylesheet":e=fa(u.href);var n=l.querySelector(be(e));if(n)return t.state.loading|=4,t.instance=n,fl(n),n;a=$o(u),(e=Jl.get(e))&&Tf(a,e),n=(l.ownerDocument||l).createElement("link"),fl(n);var c=n;return c._p=new Promise(function(i,f){c.onload=i,c.onerror=f}),hl(n,"link",a),t.state.loading|=4,tn(n,u.precedence,l),t.instance=n;case"script":return n=ya(u.src),(e=l.querySelector(Ee(n)))?(t.instance=e,fl(e),e):(a=u,(e=Jl.get(n))&&(a=w({},u),zf(a,e)),l=l.ownerDocument||l,e=l.createElement("script"),fl(e),hl(e,"link",a),l.head.appendChild(e),t.instance=e);case"void":return null;default:throw Error(g(443,t.type))}else t.type==="stylesheet"&&(t.state.loading&4)===0&&(a=t.instance,t.state.loading|=4,tn(a,u.precedence,l));return t.instance}function tn(l,t,u){for(var a=u.querySelectorAll('link[rel="stylesheet"][data-precedence],style[data-precedence]'),e=a.length?a[a.length-1]:null,n=e,c=0;c title"):null)}function uy(l,t,u){if(u===1||t.itemProp!=null)return!1;switch(l){case"meta":case"title":return!0;case"style":if(typeof t.precedence!="string"||typeof t.href!="string"||t.href==="")break;return!0;case"link":if(typeof t.rel!="string"||typeof t.href!="string"||t.href===""||t.onLoad||t.onError)break;switch(t.rel){case"stylesheet":return l=t.disabled,typeof t.precedence=="string"&&l==null;default:return!0}case"script":if(t.async&&typeof t.async!="function"&&typeof t.async!="symbol"&&!t.onLoad&&!t.onError&&t.src&&typeof t.src=="string")return!0}return!1}function Po(l){return!(l.type==="stylesheet"&&(l.state.loading&3)===0)}var ee=null;function ay(){}function ey(l,t,u){if(ee===null)throw Error(g(475));var a=ee;if(t.type==="stylesheet"&&(typeof u.media!="string"||matchMedia(u.media).matches!==!1)&&(t.state.loading&4)===0){if(t.instance===null){var e=fa(u.href),n=l.querySelector(be(e));if(n){l=n._p,l!==null&&typeof l=="object"&&typeof l.then=="function"&&(a.count++,a=Hn.bind(a),l.then(a,a)),t.state.loading|=4,t.instance=n,fl(n);return}n=l.ownerDocument||l,u=$o(u),(e=Jl.get(e))&&Tf(u,e),n=n.createElement("link"),fl(n);var c=n;c._p=new Promise(function(i,f){c.onload=i,c.onerror=f}),hl(n,"link",u),t.instance=n}a.stylesheets===null&&(a.stylesheets=new Map),a.stylesheets.set(t,l),(l=t.state.preload)&&(t.state.loading&3)===0&&(a.count++,t=Hn.bind(a),l.addEventListener("load",t),l.addEventListener("error",t))}}function ny(){if(ee===null)throw Error(g(475));var l=ee;return l.stylesheets&&l.count===0&&Ni(l,l.stylesheets),0{"use strict";function cd(){if(!(typeof __REACT_DEVTOOLS_GLOBAL_HOOK__>"u"||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!="function"))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(cd)}catch(l){console.error(l)}}cd(),id.exports=nd()});var Dl=Fn(ra(),1),sd=Fn(fd(),1),od=Dl.createContext(null);function yy(){let l=Dl.useContext(od);if(!l)throw new Error("RenderContext not found");return l}function ry(){return yy().model}function Wn(l){let t=ry(),[u,a]=Dl.useState(t.get(l));return Dl.useEffect(()=>{let e=()=>a(t.get(l));return t.on(`change:${l}`,e),()=>t.off(`change:${l}`,e)},[t,l]),[u,e=>{t.set(l,e),t.save_changes()}]}function dd(l){return({el:t,model:u,experimental:a})=>{let e=sd.createRoot(t);return e.render(Dl.createElement(Dl.StrictMode,null,Dl.createElement(od.Provider,{value:{model:u,experimental:a}},Dl.createElement(l)))),()=>e.unmount()}}var b=Fn(ra()),ot=b.default.forwardRef(({className:l="",variant:t="default",...u},a)=>b.default.createElement("button",{ref:a,className:`inline-flex items-center justify-center rounded-md text-sm font-medium focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 ${{default:"bg-gray-200 active:bg-gray-300",ghost:"active:bg-gray-100/50"}[t]} ${l}`,...u}));ot.displayName="Button";var my=["#000000","#FFFFFF","#C0C0C0","#FF0000","#FFFF00","#00FF00","#00FFFF","#0000FF","#FF00FF","#FFFF80","#00FF80","#80FFFF","#8080FF","#FF0080"],gy=4096;function Sy(){let l=(0,b.useRef)(null),t=(0,b.useRef)(null),[u,a]=(0,b.useState)(!1),[e,n]=(0,b.useState)("#000000"),[c,i]=(0,b.useState)("brush"),[f,o]=(0,b.useState)({x:0,y:0}),[r,S]=(0,b.useState)(!1),[h,y]=(0,b.useState)(null),[E,O]=Wn("base64"),[J,d]=Wn("height"),[s,v]=Wn("store_background"),[m,T]=(0,b.useState)({width:0,height:0}),_=()=>l.current?.getContext("2d"),A=(z,N)=>{let D=_();if(!D)return!1;let V=Math.min(1,gy/Math.max(z,N)),gl=Math.floor(z*V),ql=Math.floor(N*V);try{let Sl=l.current?.toDataURL();if(l.current.width=gl,l.current.height=ql,Sl){let lt=new Image;lt.onload=()=>{D.drawImage(lt,0,0)},lt.src=Sl}return!0}catch(Sl){return console.error("Failed to resize canvases:",Sl),y("Failed to resize canvas. Try reducing the window size."),!1}};(0,b.useEffect)(()=>{let z,N=()=>{let V=l.current?.parentElement;if(!V)return;let gl=V.clientWidth,ql=V.clientHeight,Sl=R.current||E;if(Sl){let lt=new Image;lt.onload=()=>{let pf=Math.min(gl/lt.width,ql/lt.height),Nf=Math.round(lt.width*pf),Rf=Math.round(lt.height*pf);A(Nf,Rf)&&T({width:Nf,height:Rf})},lt.src=`data:image/png;base64,${Sl}`}else A(gl,ql)&&T({width:gl,height:ql})},D=()=>{clearTimeout(z),z=setTimeout(N,250)};return window.addEventListener("resize",D),N(),()=>{window.removeEventListener("resize",D),clearTimeout(z)}},[]),(0,b.useEffect)(()=>{let z=l.current;if(!z)return;let N=gl=>{gl.preventDefault();let ql=gl.touches[0],Sl=z.getBoundingClientRect();_f(ql.clientX-Sl.left,ql.clientY-Sl.top)},D=gl=>{gl.preventDefault();let ql=gl.touches[0],Sl=z.getBoundingClientRect();Uf(ql.clientX-Sl.left,ql.clientY-Sl.top)},V=gl=>{gl.preventDefault(),kn()};return z.addEventListener("touchstart",N),z.addEventListener("touchmove",D),z.addEventListener("touchend",V),()=>{z.removeEventListener("touchstart",N),z.removeEventListener("touchmove",D),z.removeEventListener("touchend",V)}},[]);let M=(0,b.useRef)(""),Z=(0,b.useRef)(!1),R=(0,b.useRef)(""),[Wl,Du]=(0,b.useState)(0);(0,b.useEffect)(()=>{R.current=E},[]);let _f=(z,N)=>{let D=_();if(D)try{D.beginPath(),D.moveTo(z,N),a(!0)}catch(V){console.error("Failed to start drawing:",V),y("Failed to start drawing. Try refreshing the page.")}},Uf=(z,N)=>{if(!u)return;let D=_();if(D)try{D.lineTo(z,N),c==="eraser"?(D.save(),D.globalCompositeOperation="destination-out",D.strokeStyle="#000000",D.lineWidth=20,D.lineCap="round",D.stroke(),D.restore()):(D.strokeStyle=e,D.lineWidth=c==="marker"?8:2,D.lineCap="round",D.stroke())}catch(V){console.error("Failed to draw:",V),y("Failed to draw. Try refreshing the page."),a(!1)}},kn=()=>{if(u){try{Du(z=>z+1)}catch(z){console.error("Failed to complete drawing:",z),y("Failed to complete drawing. Try refreshing the page.")}a(!1)}};(0,b.useEffect)(()=>{let z=_();if(!z||!l.current||!E)return;if(E===M.current){let V=l.current;if(V&&V.width>0&&V.height>0)try{if(z.getImageData(0,0,V.width,V.height).data.some(Sl=>Sl!==0))return}catch{}}let N=l.current;if(N.width===0||N.height===0)return;Z.current=!0;let D=new Image;D.onload=()=>{z.clearRect(0,0,N.width,N.height),z.drawImage(D,0,0,N.width,N.height),M.current=E,Z.current=!1},D.onerror=V=>{console.error("Failed to load image:",V),Z.current=!1},D.src=`data:image/png;base64,${E}`},[E,m.width,m.height]),(0,b.useEffect)(()=>{if(!l.current||Wl===0||Z.current)return;let z=document.createElement("canvas");z.width=l.current.width,z.height=l.current.height;let N=z.getContext("2d",{alpha:!0});if(N){N.clearRect(0,0,z.width,z.height),s&&(N.fillStyle="#FFFFFF",N.fillRect(0,0,z.width,z.height)),N.globalCompositeOperation="source-over",N.drawImage(l.current,0,0);try{let D=z.toDataURL("image/png");O(D.split(",")[1])}catch(D){console.error("Failed to export canvas:",D),y("Failed to export canvas. Try refreshing the page.")}}},[s,m,Wl]);let vd=z=>{let N=z.currentTarget.getBoundingClientRect();_f(z.clientX-N.left,z.clientY-N.top)},hd=z=>{let N=z.currentTarget.getBoundingClientRect();Uf(z.clientX-N.left,z.clientY-N.top)},yd=z=>{S(!0),o({x:z.clientX-(t.current?.offsetLeft||0),y:z.clientY-(t.current?.offsetTop||0)})},rd=z=>{if(r){let N=z.clientX-f.x,D=z.clientY-f.y;t.current&&(t.current.style.left=`${N}px`,t.current.style.top=`${D}px`)}},Hf=()=>{S(!1)},md=()=>b.default.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",width:"24",height:"24",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round"},b.default.createElement("rect",{x:"3",y:"3",width:"18",height:"18",rx:"2",ry:"2"}),b.default.createElement("rect",{x:"7",y:"7",width:"10",height:"10",rx:"1",ry:"1",fill:"currentColor",fillOpacity:"0.2"}));return b.default.createElement("div",{className:"bg-teal-600 w-full overflow-hidden",style:{height:`${J}px`}},h&&b.default.createElement("div",{className:"absolute top-0 left-0 right-0 bg-red-500 text-white p-2 text-center"},h,b.default.createElement("button",{className:"ml-2 underline",onClick:()=>y(null)},"Dismiss")),b.default.createElement("div",{ref:t,className:"absolute bg-white border-2 border-gray-200 shadow-md flex flex-col",style:{width:"90%",height:"90%",left:"50%",top:"50%",transform:"translate(-50%, -50%)",minWidth:"400px",minHeight:"300px"}},b.default.createElement("div",{className:"bg-blue-900 text-white px-2 py-1 flex justify-between items-center cursor-move",onMouseDown:yd,onMouseMove:rd,onMouseUp:Hf,onMouseLeave:Hf},b.default.createElement("span",{className:"text-white"},"untitled - Paint"),b.default.createElement("div",{className:"flex gap-1"},b.default.createElement(ot,{variant:"ghost",className:"h-5 w-5 p-0 min-w-0 text-white hover:bg-blue-700"},"_"),b.default.createElement(ot,{variant:"ghost",className:"h-5 w-5 p-0 min-w-0 text-white hover:bg-blue-700"},"\u25A1"),b.default.createElement(ot,{variant:"ghost",className:"h-5 w-5 p-0 min-w-0 text-white hover:bg-blue-700"},"\xD7"))),b.default.createElement("div",{className:"bg-gray-300 px-2 py-1 text-sm text-black"},b.default.createElement("span",{className:"mr-4 text-black"},"File"),b.default.createElement("span",{className:"mr-4 text-black"},"Edit"),b.default.createElement("span",{className:"mr-4 text-black"},"View"),b.default.createElement("span",{className:"mr-4 text-black"},"Image"),b.default.createElement("span",{className:"mr-4 text-black"},"Options"),b.default.createElement("span",{className:"text-black"},"Help")),b.default.createElement("div",{className:"flex flex-1 min-h-0"},b.default.createElement("div",{className:"w-8 bg-gray-300 p-0.5 border-r border-gray-400"},b.default.createElement(ot,{variant:"ghost",className:`w-7 h-7 p-0 min-w-0 mb-0.5 ${c==="brush"?"bg-gray-300 border border-gray-400 shadow-inner":""}`,onClick:()=>i("brush"),title:"Brush"},b.default.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",className:"w-5 h-5 text-black"},b.default.createElement("path",{d:"M17 3a2.85 2.83 0 1 1 4 4L7.5 20.5 2 22l1.5-5.5L17 3z"}))),b.default.createElement(ot,{variant:"ghost",className:`w-7 h-7 p-0 min-w-0 mb-0.5 ${c==="marker"?"bg-gray-300 border border-gray-400 shadow-inner":""}`,onClick:()=>i("marker"),title:"Thick Marker"},b.default.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"4",strokeLinecap:"round",strokeLinejoin:"round",className:"w-5 h-5 text-black"},b.default.createElement("path",{d:"M17 3a2.85 2.83 0 1 1 4 4L7.5 20.5 2 22l1.5-5.5L17 3z"}))),b.default.createElement(ot,{variant:"ghost",className:`w-7 h-7 p-0 min-w-0 mb-0.5 ${c==="eraser"?"bg-gray-300 border border-gray-400 shadow-inner":""}`,onClick:()=>i("eraser"),title:"Eraser"},b.default.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",className:"w-6 h-6 text-black"},b.default.createElement("path",{d:"M7 21h10"}),b.default.createElement("path",{d:"M5.5 13.5L13 6c.83-.83 2.17-.83 3 0l2 2c.83.83.83 2.17 0 3l-7.5 7.5c-.83.83-2.17.83-3 0l-2-2c-.83-.83-.83-2.17 0-3z"}))),b.default.createElement("div",{className:"w-7 h-0.5 bg-gray-400 my-1"}),b.default.createElement(ot,{variant:"ghost",className:`w-7 h-7 p-0 min-w-0 mb-0.5 ${s?"bg-gray-300 border border-gray-400 shadow-inner":""}`,onClick:()=>v(!s),title:"Store White Background"},b.default.createElement(md,null)),b.default.createElement("div",{className:"w-7 h-0.5 bg-gray-400 my-1"}),b.default.createElement(ot,{variant:"ghost",className:"w-7 h-7 p-0 min-w-0 mb-0.5",onClick:()=>{let z=l.current;if(z){let N=z.getContext("2d");if(N)if(N.clearRect(0,0,z.width,z.height),R.current){Z.current=!0;let D=new Image;D.onload=()=>{N.drawImage(D,0,0,z.width,z.height),Z.current=!1,Du(V=>V+1)},D.onerror=()=>{Z.current=!1,Du(V=>V+1)},D.src=`data:image/png;base64,${R.current}`}else Du(D=>D+1)}},title:"Clear Canvas"},b.default.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",className:"w-5 h-5 text-black"},b.default.createElement("path",{d:"M3 12a9 9 0 0 1 9-9 9.75 9.75 0 0 1 6.74 2.74L21 8"}),b.default.createElement("path",{d:"M21 3v5h-5"}),b.default.createElement("path",{d:"M21 12a9 9 0 0 1-9 9 9.75 9.75 0 0 1-6.74-2.74L3 16"}),b.default.createElement("path",{d:"M8 16H3v5"})))),b.default.createElement("div",{className:"flex-grow overflow-hidden border border-gray-400 relative flex items-center justify-center"},b.default.createElement("canvas",{ref:l,width:m.width,height:m.height,style:{maxWidth:"100%",maxHeight:"100%",background:"transparent"},onMouseDown:vd,onMouseMove:hd,onMouseUp:kn,onMouseLeave:kn}))),b.default.createElement("div",{className:"flex bg-gray-300 p-1 border-t border-gray-400"},b.default.createElement("div",{className:"flex flex-wrap gap-1"},my.map(z=>b.default.createElement(ot,{key:z,variant:"ghost",className:`w-6 h-6 p-0 min-w-0 ${e===z?"ring-1 ring-gray-600":""}`,style:{backgroundColor:z},onClick:()=>n(z)})))),b.default.createElement("div",{className:"bg-gray-300 px-2 py-1 text-xs border-t border-gray-400 text-black"},"For Help, click Help Topics on the Help Menu.")))}var by=dd(Sy),Ny={render:by};export{Ny as default}; +`+u.stack}}function ea(l){var t=l,u=l;if(l.alternate)for(;t.return;)t=t.return;else{l=t;do t=l,(t.flags&4098)!==0&&(u=t.return),l=t.return;while(l)}return t.tag===3?u:null}function O1(l){if(l.tag===13){var t=l.memoizedState;if(t===null&&(l=l.alternate,l!==null&&(t=l.memoizedState)),t!==null)return t.dehydrated}return null}function e0(l){if(ea(l)!==l)throw Error(r(188))}function Bd(l){var t=l.alternate;if(!t){if(t=ea(l),t===null)throw Error(r(188));return t!==l?null:l}for(var u=l,a=t;;){var e=u.return;if(e===null)break;var n=e.alternate;if(n===null){if(a=e.return,a!==null){u=a;continue}break}if(e.child===n.child){for(n=e.child;n;){if(n===u)return e0(e),l;if(n===a)return e0(e),t;n=n.sibling}throw Error(r(188))}if(u.return!==a.return)u=e,a=n;else{for(var c=!1,f=e.child;f;){if(f===u){c=!0,u=e,a=n;break}if(f===a){c=!0,a=e,u=n;break}f=f.sibling}if(!c){for(f=n.child;f;){if(f===u){c=!0,u=n,a=e;break}if(f===a){c=!0,a=n,u=e;break}f=f.sibling}if(!c)throw Error(r(189))}}if(u.alternate!==a)throw Error(r(190))}if(u.tag!==3)throw Error(r(188));return u.stateNode.current===u?l:t}function M1(l){var t=l.tag;if(t===5||t===26||t===27||t===6)return l;for(l=l.child;l!==null;){if(t=M1(l),t!==null)return t;l=l.sibling}return null}var _a=Array.isArray,L=Ud.__DOM_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE,nu={pending:!1,data:null,method:null,action:null},jc=[],pu=-1;function et(l){return{current:l}}function sl(l){0>pu||(l.current=jc[pu],jc[pu]=null,pu--)}function J(l,t){pu++,jc[pu]=l.current,l.current=t}var lt=et(null),Ka=et(null),Gt=et(null),un=et(null);function an(l,t){switch(J(Gt,t),J(Ka,l),J(lt,null),l=t.nodeType,l){case 9:case 11:t=(t=t.documentElement)&&(t=t.namespaceURI)?c1(t):0;break;default:if(l=l===8?t.parentNode:t,t=l.tagName,l=l.namespaceURI)l=c1(l),t=Cv(l,t);else switch(t){case"svg":t=1;break;case"math":t=2;break;default:t=0}}sl(lt),J(lt,t)}function ku(){sl(lt),sl(Ka),sl(Gt)}function Vc(l){l.memoizedState!==null&&J(un,l);var t=lt.current,u=Cv(t,l.type);t!==u&&(J(Ka,l),J(lt,u))}function en(l){Ka.current===l&&(sl(lt),sl(Ka)),un.current===l&&(sl(un),ue._currentValue=nu)}var Lc=Object.prototype.hasOwnProperty,Bf=nl.unstable_scheduleCallback,vc=nl.unstable_cancelCallback,Yd=nl.unstable_shouldYield,Xd=nl.unstable_requestPaint,tt=nl.unstable_now,Cd=nl.unstable_getCurrentPriorityLevel,D1=nl.unstable_ImmediatePriority,_1=nl.unstable_UserBlockingPriority,nn=nl.unstable_NormalPriority,Gd=nl.unstable_LowPriority,U1=nl.unstable_IdlePriority,Qd=nl.log,Zd=nl.unstable_setDisableYieldValue,ce=null,Ul=null;function xd(l){if(Ul&&typeof Ul.onCommitFiberRoot=="function")try{Ul.onCommitFiberRoot(ce,l,void 0,(l.current.flags&128)===128)}catch{}}function Xt(l){if(typeof Qd=="function"&&Zd(l),Ul&&typeof Ul.setStrictMode=="function")try{Ul.setStrictMode(ce,l)}catch{}}var Hl=Math.clz32?Math.clz32:Ld,jd=Math.log,Vd=Math.LN2;function Ld(l){return l>>>=0,l===0?32:31-(jd(l)/Vd|0)|0}var _e=128,Ue=4194304;function lu(l){var t=l&42;if(t!==0)return t;switch(l&-l){case 1:return 1;case 2:return 2;case 4:return 4;case 8:return 8;case 16:return 16;case 32:return 32;case 64:return 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:return l&4194176;case 4194304:case 8388608:case 16777216:case 33554432:return l&62914560;case 67108864:return 67108864;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 0;default:return l}}function pn(l,t){var u=l.pendingLanes;if(u===0)return 0;var a=0,e=l.suspendedLanes,n=l.pingedLanes,c=l.warmLanes;l=l.finishedLanes!==0;var f=u&134217727;return f!==0?(u=f&~e,u!==0?a=lu(u):(n&=f,n!==0?a=lu(n):l||(c=f&~c,c!==0&&(a=lu(c))))):(f=u&~e,f!==0?a=lu(f):n!==0?a=lu(n):l||(c=u&~c,c!==0&&(a=lu(c)))),a===0?0:t!==0&&t!==a&&(t&e)===0&&(e=a&-a,c=t&-t,e>=c||e===32&&(c&4194176)!==0)?t:a}function fe(l,t){return(l.pendingLanes&~(l.suspendedLanes&~l.pingedLanes)&t)===0}function Kd(l,t){switch(l){case 1:case 2:case 4:case 8:return t+250;case 16:case 32: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:return t+5e3;case 4194304:case 8388608:case 16777216:case 33554432:return-1;case 67108864:case 134217728:case 268435456:case 536870912:case 1073741824:return-1;default:return-1}}function H1(){var l=_e;return _e<<=1,(_e&4194176)===0&&(_e=128),l}function R1(){var l=Ue;return Ue<<=1,(Ue&62914560)===0&&(Ue=4194304),l}function dc(l){for(var t=[],u=0;31>u;u++)t.push(l);return t}function ie(l,t){l.pendingLanes|=t,t!==268435456&&(l.suspendedLanes=0,l.pingedLanes=0,l.warmLanes=0)}function Jd(l,t,u,a,e,n){var c=l.pendingLanes;l.pendingLanes=u,l.suspendedLanes=0,l.pingedLanes=0,l.warmLanes=0,l.expiredLanes&=u,l.entangledLanes&=u,l.errorRecoveryDisabledLanes&=u,l.shellSuspendCounter=0;var f=l.entanglements,i=l.expirationTimes,s=l.hiddenUpdates;for(u=c&~u;0"u"||typeof window.document>"u"||typeof window.document.createElement>"u"),$d=RegExp("^[:A-Z_a-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD][:A-Z_a-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD\\-.0-9\\u00B7\\u0300-\\u036F\\u203F-\\u2040]*$"),c0={},f0={};function Fd(l){return Lc.call(f0,l)?!0:Lc.call(c0,l)?!1:$d.test(l)?f0[l]=!0:(c0[l]=!0,!1)}function Le(l,t,u){if(Fd(t))if(u===null)l.removeAttribute(t);else{switch(typeof u){case"undefined":case"function":case"symbol":l.removeAttribute(t);return;case"boolean":var a=t.toLowerCase().slice(0,5);if(a!=="data-"&&a!=="aria-"){l.removeAttribute(t);return}}l.setAttribute(t,""+u)}}function He(l,t,u){if(u===null)l.removeAttribute(t);else{switch(typeof u){case"undefined":case"function":case"symbol":case"boolean":l.removeAttribute(t);return}l.setAttribute(t,""+u)}}function ft(l,t,u,a){if(a===null)l.removeAttribute(u);else{switch(typeof a){case"undefined":case"function":case"symbol":case"boolean":l.removeAttribute(u);return}l.setAttributeNS(t,u,""+a)}}function Xl(l){switch(typeof l){case"bigint":case"boolean":case"number":case"string":case"undefined":return l;case"object":return l;default:return""}}function C1(l){var t=l.type;return(l=l.nodeName)&&l.toLowerCase()==="input"&&(t==="checkbox"||t==="radio")}function Pd(l){var t=C1(l)?"checked":"value",u=Object.getOwnPropertyDescriptor(l.constructor.prototype,t),a=""+l[t];if(!l.hasOwnProperty(t)&&typeof u<"u"&&typeof u.get=="function"&&typeof u.set=="function"){var e=u.get,n=u.set;return Object.defineProperty(l,t,{configurable:!0,get:function(){return e.call(this)},set:function(c){a=""+c,n.call(this,c)}}),Object.defineProperty(l,t,{enumerable:u.enumerable}),{getValue:function(){return a},setValue:function(c){a=""+c},stopTracking:function(){l._valueTracker=null,delete l[t]}}}}function cn(l){l._valueTracker||(l._valueTracker=Pd(l))}function G1(l){if(!l)return!1;var t=l._valueTracker;if(!t)return!0;var u=t.getValue(),a="";return l&&(a=C1(l)?l.checked?"true":"false":l.value),l=a,l!==u?(t.setValue(l),!0):!1}function fn(l){if(l=l||(typeof document<"u"?document:void 0),typeof l>"u")return null;try{return l.activeElement||l.body}catch{return l.body}}var Id=/[\n"\\]/g;function Ql(l){return l.replace(Id,function(t){return"\\"+t.charCodeAt(0).toString(16)+" "})}function Jc(l,t,u,a,e,n,c,f){l.name="",c!=null&&typeof c!="function"&&typeof c!="symbol"&&typeof c!="boolean"?l.type=c:l.removeAttribute("type"),t!=null?c==="number"?(t===0&&l.value===""||l.value!=t)&&(l.value=""+Xl(t)):l.value!==""+Xl(t)&&(l.value=""+Xl(t)):c!=="submit"&&c!=="reset"||l.removeAttribute("value"),t!=null?wc(l,c,Xl(t)):u!=null?wc(l,c,Xl(u)):a!=null&&l.removeAttribute("value"),e==null&&n!=null&&(l.defaultChecked=!!n),e!=null&&(l.checked=e&&typeof e!="function"&&typeof e!="symbol"),f!=null&&typeof f!="function"&&typeof f!="symbol"&&typeof f!="boolean"?l.name=""+Xl(f):l.removeAttribute("name")}function Q1(l,t,u,a,e,n,c,f){if(n!=null&&typeof n!="function"&&typeof n!="symbol"&&typeof n!="boolean"&&(l.type=n),t!=null||u!=null){if(!(n!=="submit"&&n!=="reset"||t!=null))return;u=u!=null?""+Xl(u):"",t=t!=null?""+Xl(t):u,f||t===l.value||(l.value=t),l.defaultValue=t}a=a??e,a=typeof a!="function"&&typeof a!="symbol"&&!!a,l.checked=f?l.checked:!!a,l.defaultChecked=!!a,c!=null&&typeof c!="function"&&typeof c!="symbol"&&typeof c!="boolean"&&(l.name=c)}function wc(l,t,u){t==="number"&&fn(l.ownerDocument)===l||l.defaultValue===""+u||(l.defaultValue=""+u)}function ju(l,t,u,a){if(l=l.options,t){t={};for(var e=0;e=Ra),y0=" ",m0=!1;function J1(l,t){switch(l){case"keyup":return _h.indexOf(t.keyCode)!==-1;case"keydown":return t.keyCode!==229;case"keypress":case"mousedown":case"focusout":return!0;default:return!1}}function w1(l){return l=l.detail,typeof l=="object"&&"data"in l?l.data:null}var qu=!1;function Hh(l,t){switch(l){case"compositionend":return w1(t);case"keypress":return t.which!==32?null:(m0=!0,y0);case"textInput":return l=t.data,l===y0&&m0?null:l;default:return null}}function Rh(l,t){if(qu)return l==="compositionend"||!Zf&&J1(l,t)?(l=L1(),Je=Gf=Ct=null,qu=!1,l):null;switch(l){case"paste":return null;case"keypress":if(!(t.ctrlKey||t.altKey||t.metaKey)||t.ctrlKey&&t.altKey){if(t.char&&1=t)return{node:u,offset:t-l};l=a}l:{for(;u;){if(u.nextSibling){u=u.nextSibling;break l}u=u.parentNode}u=void 0}u=b0(u)}}function F1(l,t){return l&&t?l===t?!0:l&&l.nodeType===3?!1:t&&t.nodeType===3?F1(l,t.parentNode):"contains"in l?l.contains(t):l.compareDocumentPosition?!!(l.compareDocumentPosition(t)&16):!1:!1}function P1(l){l=l!=null&&l.ownerDocument!=null&&l.ownerDocument.defaultView!=null?l.ownerDocument.defaultView:window;for(var t=fn(l.document);t instanceof l.HTMLIFrameElement;){try{var u=typeof t.contentWindow.location.href=="string"}catch{u=!1}if(u)l=t.contentWindow;else break;t=fn(l.document)}return t}function xf(l){var t=l&&l.nodeName&&l.nodeName.toLowerCase();return t&&(t==="input"&&(l.type==="text"||l.type==="search"||l.type==="tel"||l.type==="url"||l.type==="password")||t==="textarea"||l.contentEditable==="true")}function Gh(l,t){var u=P1(t);t=l.focusedElem;var a=l.selectionRange;if(u!==t&&t&&t.ownerDocument&&F1(t.ownerDocument.documentElement,t)){if(a!==null&&xf(t)){if(l=a.start,u=a.end,u===void 0&&(u=l),"selectionStart"in t)t.selectionStart=l,t.selectionEnd=Math.min(u,t.value.length);else if(u=(l=t.ownerDocument||document)&&l.defaultView||window,u.getSelection){u=u.getSelection();var e=t.textContent.length,n=Math.min(a.start,e);a=a.end===void 0?n:Math.min(a.end,e),!u.extend&&n>a&&(e=a,a=n,n=e),e=E0(t,n);var c=E0(t,a);e&&c&&(u.rangeCount!==1||u.anchorNode!==e.node||u.anchorOffset!==e.offset||u.focusNode!==c.node||u.focusOffset!==c.offset)&&(l=l.createRange(),l.setStart(e.node,e.offset),u.removeAllRanges(),n>a?(u.addRange(l),u.extend(c.node,c.offset)):(l.setEnd(c.node,c.offset),u.addRange(l)))}}for(l=[],u=t;u=u.parentNode;)u.nodeType===1&&l.push({element:u,left:u.scrollLeft,top:u.scrollTop});for(typeof t.focus=="function"&&t.focus(),t=0;t=document.documentMode,Bu=null,$c=null,Na=null,Fc=!1;function T0(l,t,u){var a=u.window===u?u.document:u.nodeType===9?u:u.ownerDocument;Fc||Bu==null||Bu!==fn(a)||(a=Bu,"selectionStart"in a&&xf(a)?a={start:a.selectionStart,end:a.selectionEnd}:(a=(a.ownerDocument&&a.ownerDocument.defaultView||window).getSelection(),a={anchorNode:a.anchorNode,anchorOffset:a.anchorOffset,focusNode:a.focusNode,focusOffset:a.focusOffset}),Na&&ka(Na,a)||(Na=a,a=On($c,"onSelect"),0>=c,e-=c,mt=1<<32-Hl(t)+e|u<z?(P=T,T=null):P=T.sibling;var q=o(d,T,h[z],g);if(q===null){T===null&&(T=P);break}l&&T&&q.alternate===null&&t(d,T),v=n(q,v,z),_===null?E=q:_.sibling=q,_=q,T=P}if(z===h.length)return u(d,T),X&&tu(d,z),E;if(T===null){for(;zz?(P=T,T=null):P=T.sibling;var $l=o(d,T,q.value,g);if($l===null){T===null&&(T=P);break}l&&T&&$l.alternate===null&&t(d,T),v=n($l,v,z),_===null?E=$l:_.sibling=$l,_=$l,T=P}if(q.done)return u(d,T),X&&tu(d,z),E;if(T===null){for(;!q.done;z++,q=h.next())q=S(d,q.value,g),q!==null&&(v=n(q,v,z),_===null?E=q:_.sibling=q,_=q);return X&&tu(d,z),E}for(T=a(T);!q.done;z++,q=h.next())q=m(T,d,z,q.value,g),q!==null&&(l&&q.alternate!==null&&T.delete(q.key===null?z:q.key),v=n(q,v,z),_===null?E=q:_.sibling=q,_=q);return l&&T.forEach(function(Jn){return t(d,Jn)}),X&&tu(d,z),E}function C(d,v,h,g){if(typeof h=="object"&&h!==null&&h.type===Ru&&h.key===null&&(h=h.props.children),typeof h=="object"&&h!==null){switch(h.$$typeof){case De:l:{for(var E=h.key;v!==null;){if(v.key===E){if(E=h.type,E===Ru){if(v.tag===7){u(d,v.sibling),g=e(v,h.props.children),g.return=d,d=g;break l}}else if(v.elementType===E||typeof E=="object"&&E!==null&&E.$$typeof===Rt&&U0(E)===v.type){u(d,v.sibling),g=e(v,h.props),Ea(g,h),g.return=d,d=g;break l}u(d,v);break}else t(d,v);v=v.sibling}h.type===Ru?(g=iu(h.props.children,d.mode,g,h.key),g.return=d,d=g):(g=Pe(h.type,h.key,h.props,null,d.mode,g),Ea(g,h),g.return=d,d=g)}return c(d);case Ma:l:{for(E=h.key;v!==null;){if(v.key===E)if(v.tag===4&&v.stateNode.containerInfo===h.containerInfo&&v.stateNode.implementation===h.implementation){u(d,v.sibling),g=e(v,h.children||[]),g.return=d,d=g;break l}else{u(d,v);break}else t(d,v);v=v.sibling}g=Rc(h,d.mode,g),g.return=d,d=g}return c(d);case Rt:return E=h._init,h=E(h._payload),C(d,v,h,g)}if(_a(h))return b(d,v,h,g);if(ra(h)){if(E=ra(h),typeof E!="function")throw Error(r(150));return h=E.call(h),M(d,v,h,g)}if(typeof h.then=="function")return C(d,v,Be(h),g);if(h.$$typeof===yt)return C(d,v,Xe(d,h),g);Ye(d,h)}return typeof h=="string"&&h!==""||typeof h=="number"||typeof h=="bigint"?(h=""+h,v!==null&&v.tag===6?(u(d,v.sibling),g=e(v,h),g.return=d,d=g):(u(d,v),g=Hc(h,d.mode,g),g.return=d,d=g),c(d)):u(d,v)}return function(d,v,h,g){try{Fa=0;var E=C(d,v,h,g);return Lu=null,E}catch(T){if(T===qa)throw T;var _=xl(29,T,null,d.mode);return _.lanes=g,_.return=d,_}finally{}}}var hu=ss(!0),vs=ss(!1),Pu=et(null),hn=et(0);function H0(l,t){l=At,J(hn,l),J(Pu,t),At=l|t.baseLanes}function lf(){J(hn,At),J(Pu,Pu.current)}function Jf(){At=hn.current,sl(Pu),sl(hn)}var Vl=et(null),ut=null;function Nt(l){var t=l.alternate;J(el,el.current&1),J(Vl,l),ut===null&&(t===null||Pu.current!==null||t.memoizedState!==null)&&(ut=l)}function ds(l){if(l.tag===22){if(J(el,el.current),J(Vl,l),ut===null){var t=l.alternate;t!==null&&t.memoizedState!==null&&(ut=l)}}else qt(l)}function qt(){J(el,el.current),J(Vl,Vl.current)}function rt(l){sl(Vl),ut===l&&(ut=null),sl(el)}var el=et(0);function on(l){for(var t=l;t!==null;){if(t.tag===13){var u=t.memoizedState;if(u!==null&&(u=u.dehydrated,u===null||u.data==="$?"||u.data==="$!"))return t}else if(t.tag===19&&t.memoizedProps.revealOrder!==void 0){if((t.flags&128)!==0)return t}else if(t.child!==null){t.child.return=t,t=t.child;continue}if(t===l)break;for(;t.sibling===null;){if(t.return===null||t.return===l)return null;t=t.return}t.sibling.return=t.return,t=t.sibling}return null}var Vh=typeof AbortController<"u"?AbortController:function(){var l=[],t=this.signal={aborted:!1,addEventListener:function(u,a){l.push(a)}};this.abort=function(){t.aborted=!0,l.forEach(function(u){return u()})}},Lh=nl.unstable_scheduleCallback,Kh=nl.unstable_NormalPriority,al={$$typeof:yt,Consumer:null,Provider:null,_currentValue:null,_currentValue2:null,_threadCount:0};function wf(){return{controller:new Vh,data:new Map,refCount:0}}function de(l){l.refCount--,l.refCount===0&&Lh(Kh,function(){l.controller.abort()})}var Ya=null,tf=0,Iu=0,Ku=null;function Jh(l,t){if(Ya===null){var u=Ya=[];tf=0,Iu=gi(),Ku={status:"pending",value:void 0,then:function(a){u.push(a)}}}return tf++,t.then(R0,R0),t}function R0(){if(--tf===0&&Ya!==null){Ku!==null&&(Ku.status="fulfilled");var l=Ya;Ya=null,Iu=0,Ku=null;for(var t=0;tn?n:8;var c=D.T,f={};D.T=f,ci(l,!1,t,u);try{var i=e(),s=D.S;if(s!==null&&s(f,i),i!==null&&typeof i=="object"&&typeof i.then=="function"){var y=wh(i,a);Xa(l,t,y,Rl(l))}else Xa(l,t,a,Rl(l))}catch(S){Xa(l,t,{then:function(){},status:"rejected",reason:S},Rl())}finally{L.p=n,D.T=c}}function Ph(){}function ef(l,t,u,a){if(l.tag!==5)throw Error(r(476));var e=Gs(l).queue;Cs(l,e,t,nu,u===null?Ph:function(){return Qs(l),u(a)})}function Gs(l){var t=l.memoizedState;if(t!==null)return t;t={memoizedState:nu,baseState:nu,baseQueue:null,queue:{pending:null,lanes:0,dispatch:null,lastRenderedReducer:Tt,lastRenderedState:nu},next:null};var u={};return t.next={memoizedState:u,baseState:u,baseQueue:null,queue:{pending:null,lanes:0,dispatch:null,lastRenderedReducer:Tt,lastRenderedState:u},next:null},l.memoizedState=t,l=l.alternate,l!==null&&(l.memoizedState=t),t}function Qs(l){var t=Gs(l).next.queue;Xa(l,t,{},Rl())}function ni(){return ml(ue)}function Zs(){return ul().memoizedState}function xs(){return ul().memoizedState}function Ih(l){for(var t=l.return;t!==null;){switch(t.tag){case 24:case 3:var u=Rl();l=Qt(u);var a=Zt(t,l,u);a!==null&&(bl(a,t,u),Ga(a,t,u)),t={cache:wf()},l.payload=t;return}t=t.return}}function lo(l,t,u){var a=Rl();u={lane:a,revertLane:0,action:u,hasEagerState:!1,eagerState:null,next:null},Zn(l)?Vs(t,u):(u=Vf(l,t,u,a),u!==null&&(bl(u,l,a),Ls(u,t,a)))}function js(l,t,u){var a=Rl();Xa(l,t,u,a)}function Xa(l,t,u,a){var e={lane:a,revertLane:0,action:u,hasEagerState:!1,eagerState:null,next:null};if(Zn(l))Vs(t,e);else{var n=l.alternate;if(l.lanes===0&&(n===null||n.lanes===0)&&(n=t.lastRenderedReducer,n!==null))try{var c=t.lastRenderedState,f=n(c,u);if(e.hasEagerState=!0,e.eagerState=f,pl(f,c))return Xn(l,t,e,0),V===null&&Yn(),!1}catch{}finally{}if(u=Vf(l,t,e,a),u!==null)return bl(u,l,a),Ls(u,t,a),!0}return!1}function ci(l,t,u,a){if(a={lane:2,revertLane:gi(),action:a,hasEagerState:!1,eagerState:null,next:null},Zn(l)){if(t)throw Error(r(479))}else t=Vf(l,u,a,2),t!==null&&bl(t,l,2)}function Zn(l){var t=l.alternate;return l===R||t!==null&&t===R}function Vs(l,t){Ju=yn=!0;var u=l.pending;u===null?t.next=t:(t.next=u.next,u.next=t),l.pending=t}function Ls(l,t,u){if((u&4194176)!==0){var a=t.lanes;a&=l.pendingLanes,u|=a,t.lanes=u,N1(l,u)}}var at={readContext:ml,use:Gn,useCallback:I,useContext:I,useEffect:I,useImperativeHandle:I,useLayoutEffect:I,useInsertionEffect:I,useMemo:I,useReducer:I,useRef:I,useState:I,useDebugValue:I,useDeferredValue:I,useTransition:I,useSyncExternalStore:I,useId:I};at.useCacheRefresh=I;at.useMemoCache=I;at.useHostTransitionStatus=I;at.useFormState=I;at.useActionState=I;at.useOptimistic=I;var bu={readContext:ml,use:Gn,useCallback:function(l,t){return Tl().memoizedState=[l,t===void 0?null:t],l},useContext:ml,useEffect:B0,useImperativeHandle:function(l,t,u){u=u!=null?u.concat([l]):null,$e(4194308,4,Ns.bind(null,t,l),u)},useLayoutEffect:function(l,t){return $e(4194308,4,l,t)},useInsertionEffect:function(l,t){$e(4,2,l,t)},useMemo:function(l,t){var u=Tl();t=t===void 0?null:t;var a=l();if(ou){Xt(!0);try{l()}finally{Xt(!1)}}return u.memoizedState=[a,t],a},useReducer:function(l,t,u){var a=Tl();if(u!==void 0){var e=u(t);if(ou){Xt(!0);try{u(t)}finally{Xt(!1)}}}else e=t;return a.memoizedState=a.baseState=e,l={pending:null,lanes:0,dispatch:null,lastRenderedReducer:l,lastRenderedState:e},a.queue=l,l=l.dispatch=lo.bind(null,R,l),[a.memoizedState,l]},useRef:function(l){var t=Tl();return l={current:l},t.memoizedState=l},useState:function(l){l=uf(l);var t=l.queue,u=js.bind(null,R,t);return t.dispatch=u,[l.memoizedState,u]},useDebugValue:ai,useDeferredValue:function(l,t){var u=Tl();return ei(u,l,t)},useTransition:function(){var l=uf(!1);return l=Cs.bind(null,R,l.queue,!0,!1),Tl().memoizedState=l,[!1,l]},useSyncExternalStore:function(l,t,u){var a=R,e=Tl();if(X){if(u===void 0)throw Error(r(407));u=u()}else{if(u=t(),V===null)throw Error(r(349));(Y&60)!==0||gs(a,t,u)}e.memoizedState=u;var n={value:u,getSnapshot:t};return e.queue=n,B0(Ss.bind(null,a,n,l),[l]),a.flags|=2048,la(9,rs.bind(null,a,n,u,t),{destroy:void 0},null),u},useId:function(){var l=Tl(),t=V.identifierPrefix;if(X){var u=gt,a=mt;u=(a&~(1<<32-Hl(a)-1)).toString(32)+u,t=":"+t+"R"+u,u=mn++,0 title"))),hl(n,a,u),n[yl]=l,fl(n),a=n;break l;case"link":var c=h1("link","href",e).get(a+(u.href||""));if(c){for(var f=0;f<\/script>",l=l.removeChild(l.firstChild);break;case"select":l=typeof a.is=="string"?e.createElement("select",{is:a.is}):e.createElement("select"),a.multiple?l.multiple=!0:a.size&&(l.size=a.size);break;default:l=typeof a.is=="string"?e.createElement(u,{is:a.is}):e.createElement(u)}}l[yl]=t,l[zl]=a;l:for(e=t.child;e!==null;){if(e.tag===5||e.tag===6)l.appendChild(e.stateNode);else if(e.tag!==4&&e.tag!==27&&e.child!==null){e.child.return=e,e=e.child;continue}if(e===t)break l;for(;e.sibling===null;){if(e.return===null||e.return===t)break l;e=e.return}e.sibling.return=e.return,e=e.sibling}t.stateNode=l;l:switch(hl(l,u,a),u){case"button":case"input":case"select":case"textarea":l=!!a.autoFocus;break l;case"img":l=!0;break l;default:l=!1}l&&vt(t)}}return W(t),t.flags&=-16777217,null;case 6:if(l&&t.stateNode!=null)l.memoizedProps!==a&&vt(t);else{if(typeof a!="string"&&t.stateNode===null)throw Error(r(166));if(l=Gt.current,ba(t)){if(l=t.stateNode,u=t.memoizedProps,a=null,e=Sl,e!==null)switch(e.tag){case 27:case 5:a=e.memoizedProps}l[yl]=t,l=!!(l.nodeValue===u||a!==null&&a.suppressHydrationWarning===!0||Xv(l.nodeValue,u)),l||du(t)}else l=Mn(l).createTextNode(a),l[yl]=t,t.stateNode=l}return W(t),null;case 13:if(a=t.memoizedState,l===null||l.memoizedState!==null&&l.memoizedState.dehydrated!==null){if(e=ba(t),a!==null&&a.dehydrated!==null){if(l===null){if(!e)throw Error(r(318));if(e=t.memoizedState,e=e!==null?e.dehydrated:null,!e)throw Error(r(317));e[yl]=t}else ve(),(t.flags&128)===0&&(t.memoizedState=null),t.flags|=4;W(t),e=!1}else wl!==null&&(Tf(wl),wl=null),e=!0;if(!e)return t.flags&256?(rt(t),t):(rt(t),null)}if(rt(t),(t.flags&128)!==0)return t.lanes=u,t;if(u=a!==null,l=l!==null&&l.memoizedState!==null,u){a=t.child,e=null,a.alternate!==null&&a.alternate.memoizedState!==null&&a.alternate.memoizedState.cachePool!==null&&(e=a.alternate.memoizedState.cachePool.pool);var n=null;a.memoizedState!==null&&a.memoizedState.cachePool!==null&&(n=a.memoizedState.cachePool.pool),n!==e&&(a.flags|=2048)}return u!==l&&u&&(t.child.flags|=8192),Ce(t,t.updateQueue),W(t),null;case 4:return ku(),l===null&&ri(t.stateNode.containerInfo),W(t),null;case 10:return bt(t.type),W(t),null;case 19:if(sl(el),e=t.memoizedState,e===null)return W(t),null;if(a=(t.flags&128)!==0,n=e.rendering,n===null)if(a)za(e,!1);else{if(F!==0||l!==null&&(l.flags&128)!==0)for(l=t.child;l!==null;){if(n=on(l),n!==null){for(t.flags|=128,za(e,!1),l=n.updateQueue,t.updateQueue=l,Ce(t,l),t.subtreeFlags=0,l=u,u=t.child;u!==null;)Ev(u,l),u=u.sibling;return J(el,el.current&1|2),t.child}l=l.sibling}e.tail!==null&&tt()>En&&(t.flags|=128,a=!0,za(e,!1),t.lanes=4194304)}else{if(!a)if(l=on(n),l!==null){if(t.flags|=128,a=!0,l=l.updateQueue,t.updateQueue=l,Ce(t,l),za(e,!0),e.tail===null&&e.tailMode==="hidden"&&!n.alternate&&!X)return W(t),null}else 2*tt()-e.renderingStartTime>En&&u!==536870912&&(t.flags|=128,a=!0,za(e,!1),t.lanes=4194304);e.isBackwards?(n.sibling=t.child,t.child=n):(l=e.last,l!==null?l.sibling=n:t.child=n,e.last=n)}return e.tail!==null?(t=e.tail,e.rendering=t,e.tail=t.sibling,e.renderingStartTime=tt(),t.sibling=null,l=el.current,J(el,a?l&1|2:l&1),t):(W(t),null);case 22:case 23:return rt(t),Jf(),a=t.memoizedState!==null,l!==null?l.memoizedState!==null!==a&&(t.flags|=8192):a&&(t.flags|=8192),a?(u&536870912)!==0&&(t.flags&128)===0&&(W(t),t.subtreeFlags&6&&(t.flags|=8192)):W(t),u=t.updateQueue,u!==null&&Ce(t,u.retryQueue),u=null,l!==null&&l.memoizedState!==null&&l.memoizedState.cachePool!==null&&(u=l.memoizedState.cachePool.pool),a=null,t.memoizedState!==null&&t.memoizedState.cachePool!==null&&(a=t.memoizedState.cachePool.pool),a!==u&&(t.flags|=2048),l!==null&&sl(fu),null;case 24:return u=null,l!==null&&(u=l.memoizedState.cache),t.memoizedState.cache!==u&&(t.flags|=2048),bt(al),W(t),null;case 25:return null}throw Error(r(156,t.tag))}function fo(l,t){switch(Kf(t),t.tag){case 1:return l=t.flags,l&65536?(t.flags=l&-65537|128,t):null;case 3:return bt(al),ku(),l=t.flags,(l&65536)!==0&&(l&128)===0?(t.flags=l&-65537|128,t):null;case 26:case 27:case 5:return en(t),null;case 13:if(rt(t),l=t.memoizedState,l!==null&&l.dehydrated!==null){if(t.alternate===null)throw Error(r(340));ve()}return l=t.flags,l&65536?(t.flags=l&-65537|128,t):null;case 19:return sl(el),null;case 4:return ku(),null;case 10:return bt(t.type),null;case 22:case 23:return rt(t),Jf(),l!==null&&sl(fu),l=t.flags,l&65536?(t.flags=l&-65537|128,t):null;case 24:return bt(al),null;case 25:return null;default:return null}}function zv(l,t){switch(Kf(t),t.tag){case 3:bt(al),ku();break;case 26:case 27:case 5:en(t);break;case 4:ku();break;case 13:rt(t);break;case 19:sl(el);break;case 10:bt(t.type);break;case 22:case 23:rt(t),Jf(),l!==null&&sl(fu);break;case 24:bt(al)}}var io={getCacheForType:function(l){var t=ml(al),u=t.data.get(l);return u===void 0&&(u=l(),t.data.set(l,u)),u}},so=typeof WeakMap=="function"?WeakMap:Map,k=0,V=null,N=null,Y=0,j=0,Dl=null,ht=!1,fa=!1,hi=!1,At=0,F=0,kt=0,su=0,oi=0,jl=0,ta=0,ja=null,Il=null,rf=!1,yi=0,En=1/0,Tn=null,jt=null,Ge=!1,uu=null,Va=0,Sf=0,bf=null,La=0,Ef=null;function Rl(){if((k&2)!==0&&Y!==0)return Y&-Y;if(D.T!==null){var l=Iu;return l!==0?l:gi()}return B1()}function Av(){jl===0&&(jl=(Y&536870912)===0||X?H1():536870912);var l=Vl.current;return l!==null&&(l.flags|=32),jl}function bl(l,t,u){(l===V&&j===2||l.cancelPendingCommit!==null)&&(ua(l,0),ot(l,Y,jl,!1)),ie(l,u),((k&2)===0||l!==V)&&(l===V&&((k&2)===0&&(su|=u),F===4&&ot(l,Y,jl,!1)),nt(l))}function Ov(l,t,u){if((k&6)!==0)throw Error(r(327));var a=!u&&(t&60)===0&&(t&l.expiredLanes)===0||fe(l,t),e=a?oo(l,t):pc(l,t,!0),n=a;do{if(e===0){fa&&!a&&ot(l,t,0,!1);break}else if(e===6)ot(l,t,0,!ht);else{if(u=l.current.alternate,n&&!vo(u)){e=pc(l,t,!1),n=!1;continue}if(e===2){if(n=t,l.errorRecoveryDisabledLanes&n)var c=0;else c=l.pendingLanes&-536870913,c=c!==0?c:c&536870912?536870912:0;if(c!==0){t=c;l:{var f=l;e=ja;var i=f.current.memoizedState.isDehydrated;if(i&&(ua(f,c).flags|=256),c=pc(f,c,!1),c!==2){if(hi&&!i){f.errorRecoveryDisabledLanes|=n,su|=n,e=4;break l}n=Il,Il=e,n!==null&&Tf(n)}e=c}if(n=!1,e!==2)continue}}if(e===1){ua(l,0),ot(l,t,0,!0);break}l:{switch(a=l,e){case 0:case 1:throw Error(r(345));case 4:if((t&4194176)===t){ot(a,t,jl,!ht);break l}break;case 2:Il=null;break;case 3:case 5:break;default:throw Error(r(329))}if(a.finishedWork=u,a.finishedLanes=t,(t&62914560)===t&&(n=yi+300-tt(),10u?32:u,D.T=null,uu===null)var n=!1;else{u=bf,bf=null;var c=uu,f=Va;if(uu=null,Va=0,(k&6)!==0)throw Error(r(331));var i=k;if(k|=4,Sv(c.current),mv(c,c.current,f,u),k=i,me(0,!1),Ul&&typeof Ul.onPostCommitFiberRoot=="function")try{Ul.onPostCommitFiberRoot(ce,c)}catch{}n=!0}return n}finally{L.p=e,D.T=a,Rv(l,t)}}return!1}function P0(l,t,u){t=Zl(u,t),t=cf(l.stateNode,t,2),l=Zt(l,t,2),l!==null&&(ie(l,2),nt(l))}function x(l,t,u){if(l.tag===3)P0(l,l,u);else for(;t!==null;){if(t.tag===3){P0(t,l,u);break}else if(t.tag===1){var a=t.stateNode;if(typeof t.type.getDerivedStateFromError=="function"||typeof a.componentDidCatch=="function"&&(jt===null||!jt.has(a))){l=Zl(u,l),u=Ws(2),a=Zt(t,u,2),a!==null&&(ks(u,a,t,l),ie(a,2),nt(a));break}}t=t.return}}function Nc(l,t,u){var a=l.pingCache;if(a===null){a=l.pingCache=new so;var e=new Set;a.set(t,e)}else e=a.get(t),e===void 0&&(e=new Set,a.set(t,e));e.has(u)||(hi=!0,e.add(u),l=go.bind(null,l,t,u),t.then(l,l))}function go(l,t,u){var a=l.pingCache;a!==null&&a.delete(t),l.pingedLanes|=l.suspendedLanes&u,l.warmLanes&=~u,V===l&&(Y&u)===u&&(F===4||F===3&&(Y&62914560)===Y&&300>tt()-yi?(k&2)===0&&ua(l,0):oi|=u,ta===Y&&(ta=0)),nt(l)}function pv(l,t){t===0&&(t=R1()),l=Jt(l,t),l!==null&&(ie(l,t),nt(l))}function ro(l){var t=l.memoizedState,u=0;t!==null&&(u=t.retryLane),pv(l,u)}function So(l,t){var u=0;switch(l.tag){case 13:var a=l.stateNode,e=l.memoizedState;e!==null&&(u=e.retryLane);break;case 19:a=l.stateNode;break;case 22:a=l.stateNode._retryCache;break;default:throw Error(r(314))}a!==null&&a.delete(t),pv(l,u)}function bo(l,t){return Bf(l,t)}var zn=null,Hu=null,Af=!1,An=!1,qc=!1,vu=0;function nt(l){l!==Hu&&l.next===null&&(Hu===null?zn=Hu=l:Hu=Hu.next=l),An=!0,Af||(Af=!0,To(Eo))}function me(l,t){if(!qc&&An){qc=!0;do for(var u=!1,a=zn;a!==null;){if(!t)if(l!==0){var e=a.pendingLanes;if(e===0)var n=0;else{var c=a.suspendedLanes,f=a.pingedLanes;n=(1<<31-Hl(42|l)+1)-1,n&=e&~(c&~f),n=n&201326677?n&201326677|1:n?n|2:0}n!==0&&(u=!0,I0(a,n))}else n=Y,n=pn(a,a===V?n:0),(n&3)===0||fe(a,n)||(u=!0,I0(a,n));a=a.next}while(u);qc=!1}}function Eo(){An=Af=!1;var l=0;vu!==0&&(_o()&&(l=vu),vu=0);for(var t=tt(),u=null,a=zn;a!==null;){var e=a.next,n=Nv(a,t);n===0?(a.next=null,u===null?zn=e:u.next=e,e===null&&(Hu=u)):(u=a,(l!==0||(n&3)!==0)&&(An=!0)),a=e}me(l,!1)}function Nv(l,t){for(var u=l.suspendedLanes,a=l.pingedLanes,e=l.expirationTimes,n=l.pendingLanes&-62914561;0"u"?null:document;function Zv(l,t,u){var a=ia;if(a&&typeof t=="string"&&t){var e=Ql(t);e='link[rel="'+l+'"][href="'+e+'"]',typeof u=="string"&&(e+='[crossorigin="'+u+'"]'),s1.has(e)||(s1.add(e),l={rel:l,crossOrigin:u,href:t},a.querySelector(e)===null&&(t=a.createElement("link"),hl(t,"link",l),fl(t),a.head.appendChild(t)))}}function Yo(l){Ot.D(l),Zv("dns-prefetch",l,null)}function Xo(l,t){Ot.C(l,t),Zv("preconnect",l,t)}function Co(l,t,u){Ot.L(l,t,u);var a=ia;if(a&&l&&t){var e='link[rel="preload"][as="'+Ql(t)+'"]';t==="image"&&u&&u.imageSrcSet?(e+='[imagesrcset="'+Ql(u.imageSrcSet)+'"]',typeof u.imageSizes=="string"&&(e+='[imagesizes="'+Ql(u.imageSizes)+'"]')):e+='[href="'+Ql(l)+'"]';var n=e;switch(t){case"style":n=aa(l);break;case"script":n=sa(l)}Ll.has(n)||(l=K({rel:"preload",href:t==="image"&&u&&u.imageSrcSet?void 0:l,as:t},u),Ll.set(n,l),a.querySelector(e)!==null||t==="style"&&a.querySelector(ge(n))||t==="script"&&a.querySelector(re(n))||(t=a.createElement("link"),hl(t,"link",l),fl(t),a.head.appendChild(t)))}}function Go(l,t){Ot.m(l,t);var u=ia;if(u&&l){var a=t&&typeof t.as=="string"?t.as:"script",e='link[rel="modulepreload"][as="'+Ql(a)+'"][href="'+Ql(l)+'"]',n=e;switch(a){case"audioworklet":case"paintworklet":case"serviceworker":case"sharedworker":case"worker":case"script":n=sa(l)}if(!Ll.has(n)&&(l=K({rel:"modulepreload",href:l},t),Ll.set(n,l),u.querySelector(e)===null)){switch(a){case"audioworklet":case"paintworklet":case"serviceworker":case"sharedworker":case"worker":case"script":if(u.querySelector(re(n)))return}a=u.createElement("link"),hl(a,"link",l),fl(a),u.head.appendChild(a)}}}function Qo(l,t,u){Ot.S(l,t,u);var a=ia;if(a&&l){var e=xu(a).hoistableStyles,n=aa(l);t=t||"default";var c=e.get(n);if(!c){var f={loading:0,preload:null};if(c=a.querySelector(ge(n)))f.loading=5;else{l=K({rel:"stylesheet",href:l,"data-precedence":t},u),(u=Ll.get(n))&&Si(l,u);var i=c=a.createElement("link");fl(i),hl(i,"link",l),i._p=new Promise(function(s,y){i.onload=s,i.onerror=y}),i.addEventListener("load",function(){f.loading|=1}),i.addEventListener("error",function(){f.loading|=2}),f.loading|=4,Ie(c,t,a)}c={type:"stylesheet",instance:c,count:1,state:f},e.set(n,c)}}}function Zo(l,t){Ot.X(l,t);var u=ia;if(u&&l){var a=xu(u).hoistableScripts,e=sa(l),n=a.get(e);n||(n=u.querySelector(re(e)),n||(l=K({src:l,async:!0},t),(t=Ll.get(e))&&bi(l,t),n=u.createElement("script"),fl(n),hl(n,"link",l),u.head.appendChild(n)),n={type:"script",instance:n,count:1,state:null},a.set(e,n))}}function xo(l,t){Ot.M(l,t);var u=ia;if(u&&l){var a=xu(u).hoistableScripts,e=sa(l),n=a.get(e);n||(n=u.querySelector(re(e)),n||(l=K({src:l,async:!0,type:"module"},t),(t=Ll.get(e))&&bi(l,t),n=u.createElement("script"),fl(n),hl(n,"link",l),u.head.appendChild(n)),n={type:"script",instance:n,count:1,state:null},a.set(e,n))}}function v1(l,t,u,a){var e=(e=Gt.current)?Dn(e):null;if(!e)throw Error(r(446));switch(l){case"meta":case"title":return null;case"style":return typeof u.precedence=="string"&&typeof u.href=="string"?(t=aa(u.href),u=xu(e).hoistableStyles,a=u.get(t),a||(a={type:"style",instance:null,count:0,state:null},u.set(t,a)),a):{type:"void",instance:null,count:0,state:null};case"link":if(u.rel==="stylesheet"&&typeof u.href=="string"&&typeof u.precedence=="string"){l=aa(u.href);var n=xu(e).hoistableStyles,c=n.get(l);if(c||(e=e.ownerDocument||e,c={type:"stylesheet",instance:null,count:0,state:{loading:0,preload:null}},n.set(l,c),(n=e.querySelector(ge(l)))&&!n._p&&(c.instance=n,c.state.loading=5),Ll.has(l)||(u={rel:"preload",as:"style",href:u.href,crossOrigin:u.crossOrigin,integrity:u.integrity,media:u.media,hrefLang:u.hrefLang,referrerPolicy:u.referrerPolicy},Ll.set(l,u),n||jo(e,l,u,c.state))),t&&a===null)throw Error(r(528,""));return c}if(t&&a!==null)throw Error(r(529,""));return null;case"script":return t=u.async,u=u.src,typeof u=="string"&&t&&typeof t!="function"&&typeof t!="symbol"?(t=sa(u),u=xu(e).hoistableScripts,a=u.get(t),a||(a={type:"script",instance:null,count:0,state:null},u.set(t,a)),a):{type:"void",instance:null,count:0,state:null};default:throw Error(r(444,l))}}function aa(l){return'href="'+Ql(l)+'"'}function ge(l){return'link[rel="stylesheet"]['+l+"]"}function xv(l){return K({},l,{"data-precedence":l.precedence,precedence:null})}function jo(l,t,u,a){l.querySelector('link[rel="preload"][as="style"]['+t+"]")?a.loading=1:(t=l.createElement("link"),a.preload=t,t.addEventListener("load",function(){return a.loading|=1}),t.addEventListener("error",function(){return a.loading|=2}),hl(t,"link",u),fl(t),l.head.appendChild(t))}function sa(l){return'[src="'+Ql(l)+'"]'}function re(l){return"script[async]"+l}function d1(l,t,u){if(t.count++,t.instance===null)switch(t.type){case"style":var a=l.querySelector('style[data-href~="'+Ql(u.href)+'"]');if(a)return t.instance=a,fl(a),a;var e=K({},u,{"data-href":u.href,"data-precedence":u.precedence,href:null,precedence:null});return a=(l.ownerDocument||l).createElement("style"),fl(a),hl(a,"style",e),Ie(a,u.precedence,l),t.instance=a;case"stylesheet":e=aa(u.href);var n=l.querySelector(ge(e));if(n)return t.state.loading|=4,t.instance=n,fl(n),n;a=xv(u),(e=Ll.get(e))&&Si(a,e),n=(l.ownerDocument||l).createElement("link"),fl(n);var c=n;return c._p=new Promise(function(f,i){c.onload=f,c.onerror=i}),hl(n,"link",a),t.state.loading|=4,Ie(n,u.precedence,l),t.instance=n;case"script":return n=sa(u.src),(e=l.querySelector(re(n)))?(t.instance=e,fl(e),e):(a=u,(e=Ll.get(n))&&(a=K({},u),bi(a,e)),l=l.ownerDocument||l,e=l.createElement("script"),fl(e),hl(e,"link",a),l.head.appendChild(e),t.instance=e);case"void":return null;default:throw Error(r(443,t.type))}else t.type==="stylesheet"&&(t.state.loading&4)===0&&(a=t.instance,t.state.loading|=4,Ie(a,u.precedence,l));return t.instance}function Ie(l,t,u){for(var a=u.querySelectorAll('link[rel="stylesheet"][data-precedence],style[data-precedence]'),e=a.length?a[a.length-1]:null,n=e,c=0;c title"):null)}function Vo(l,t,u){if(u===1||t.itemProp!=null)return!1;switch(l){case"meta":case"title":return!0;case"style":if(typeof t.precedence!="string"||typeof t.href!="string"||t.href==="")break;return!0;case"link":if(typeof t.rel!="string"||typeof t.href!="string"||t.href===""||t.onLoad||t.onError)break;switch(t.rel){case"stylesheet":return l=t.disabled,typeof t.precedence=="string"&&l==null;default:return!0}case"script":if(t.async&&typeof t.async!="function"&&typeof t.async!="symbol"&&!t.onLoad&&!t.onError&&t.src&&typeof t.src=="string")return!0}return!1}function jv(l){return!(l.type==="stylesheet"&&(l.state.loading&3)===0)}var te=null;function Lo(){}function Ko(l,t,u){if(te===null)throw Error(r(475));var a=te;if(t.type==="stylesheet"&&(typeof u.media!="string"||matchMedia(u.media).matches!==!1)&&(t.state.loading&4)===0){if(t.instance===null){var e=aa(u.href),n=l.querySelector(ge(e));if(n){l=n._p,l!==null&&typeof l=="object"&&typeof l.then=="function"&&(a.count++,a=_n.bind(a),l.then(a,a)),t.state.loading|=4,t.instance=n,fl(n);return}n=l.ownerDocument||l,u=xv(u),(e=Ll.get(e))&&Si(u,e),n=n.createElement("link"),fl(n);var c=n;c._p=new Promise(function(f,i){c.onload=f,c.onerror=i}),hl(n,"link",u),t.instance=n}a.stylesheets===null&&(a.stylesheets=new Map),a.stylesheets.set(t,l),(l=t.state.preload)&&(t.state.loading&3)===0&&(a.count++,t=_n.bind(a),l.addEventListener("load",t),l.addEventListener("error",t))}}function Jo(){if(te===null)throw Error(r(475));var l=te;return l.stylesheets&&l.count===0&&Hf(l,l.stylesheets),0{"use strict";function $v(){if(!(typeof __REACT_DEVTOOLS_GLOBAL_HOOK__>"u"||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!="function"))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE($v)}catch(l){console.error(l)}}$v(),Fv.exports=kv()});var Ol=wn(ha(),1),Iv=wn(Pv(),1),ld=Ol.createContext(null);function ty(){let l=Ol.useContext(ld);if(!l)throw new Error("RenderContext not found");return l}function uy(){return ty().model}function Se(l){let t=uy(),[u,a]=Ol.useState(t.get(l));return Ol.useEffect(()=>{let e=()=>a(t.get(l));return t.on(`change:${l}`,e),()=>t.off(`change:${l}`,e)},[t,l]),[u,e=>{t.set(l,e),t.save_changes()}]}function td(l){return({el:t,model:u,experimental:a})=>{let e=Iv.createRoot(t);return e.render(Ol.createElement(Ol.StrictMode,null,Ol.createElement(ld.Provider,{value:{model:u,experimental:a}},Ol.createElement(l)))),()=>e.unmount()}}var A=wn(ha()),ay=20;function ey(){let l=(0,A.useRef)(null),[t,u]=(0,A.useState)(!1),[a,e]=(0,A.useState)("#000000"),[n,c]=(0,A.useState)("brush"),[f,i]=Se("base64"),[s]=Se("height"),[y]=Se("width"),[S]=Se("store_background"),o=(0,A.useRef)(""),m=(0,A.useRef)(""),b=(0,A.useRef)(!1),[M,C]=(0,A.useState)(0),d=(0,A.useRef)([]),[v,h]=(0,A.useState)(0);(0,A.useEffect)(()=>{o.current=f},[]);let g=()=>l.current?.getContext("2d")??null;(0,A.useEffect)(()=>{d.current=[],h(0)},[y,s]),(0,A.useEffect)(()=>{let O=l.current;if(!O)return;let p=ct=>{ct.preventDefault();let va=ct.touches[0],da=O.getBoundingClientRect();z(va.clientX-da.left,va.clientY-da.top)},H=ct=>{ct.preventDefault();let va=ct.touches[0],da=O.getBoundingClientRect();P(va.clientX-da.left,va.clientY-da.top)},El=ct=>{ct.preventDefault(),q()};return O.addEventListener("touchstart",p,{passive:!1}),O.addEventListener("touchmove",H,{passive:!1}),O.addEventListener("touchend",El,{passive:!1}),()=>{O.removeEventListener("touchstart",p),O.removeEventListener("touchmove",H),O.removeEventListener("touchend",El)}},[]),(0,A.useEffect)(()=>{let O=g();if(!O||!l.current||!f||y===0||s===0)return;if(f===m.current){let H=l.current;if(H.width>0&&H.height>0)try{if(O.getImageData(0,0,H.width,H.height).data.some(ct=>ct!==0))return}catch{}}b.current=!0;let p=new Image;p.onload=()=>{O.clearRect(0,0,l.current.width,l.current.height),O.drawImage(p,0,0,l.current.width,l.current.height),m.current=f,b.current=!1},p.onerror=()=>{b.current=!1},p.src=`data:image/png;base64,${f}`},[f,y,s]),(0,A.useEffect)(()=>{if(!l.current||M===0||b.current)return;let O=document.createElement("canvas");O.width=l.current.width,O.height=l.current.height;let p=O.getContext("2d",{alpha:!0});if(p){p.clearRect(0,0,O.width,O.height),S&&(p.fillStyle="#FFFFFF",p.fillRect(0,0,O.width,O.height)),p.globalCompositeOperation="source-over",p.drawImage(l.current,0,0);try{let H=O.toDataURL("image/png");i(H.split(",")[1])}catch{}}},[S,y,s,M]);let E=()=>{let O=g(),p=l.current;if(!O||!p||p.width===0||p.height===0)return;let H=O.getImageData(0,0,p.width,p.height),El=d.current;El.length>=ay&&El.shift(),El.push(H),h(El.length)},_=()=>{let O=g(),p=l.current;if(!O||!p)return;let H=d.current.pop();H&&(O.putImageData(H,0,0),h(d.current.length),C(El=>El+1))},T=()=>{let O=g(),p=l.current;if(!(!O||!p))if(E(),O.clearRect(0,0,p.width,p.height),o.current){b.current=!0;let H=new Image;H.onload=()=>{O.drawImage(H,0,0,p.width,p.height),b.current=!1,C(El=>El+1)},H.onerror=()=>{b.current=!1,C(El=>El+1)},H.src=`data:image/png;base64,${o.current}`}else C(H=>H+1)},z=(O,p)=>{let H=g();H&&(E(),H.beginPath(),H.moveTo(O,p),u(!0))},P=(O,p)=>{if(!t)return;let H=g();H&&(H.lineTo(O,p),n==="eraser"?(H.save(),H.globalCompositeOperation="destination-out",H.strokeStyle="#000000",H.lineWidth=20,H.lineCap="round",H.stroke(),H.restore()):(H.strokeStyle=a,H.lineWidth=n==="marker"?8:2,H.lineCap="round",H.stroke()))},q=()=>{t&&(C(O=>O+1),u(!1))},$l=O=>{let p=O.currentTarget.getBoundingClientRect();z(O.clientX-p.left,O.clientY-p.top)},Jn=O=>{let p=O.currentTarget.getBoundingClientRect();P(O.clientX-p.left,O.clientY-p.top)},ud=S?"#ffffff":"repeating-conic-gradient(#d0d0d0 0% 25%, #f0f0f0 0% 50%) 0 0 / 16px 16px";return A.default.createElement("div",{className:"paint-container",style:{width:`${y}px`}},A.default.createElement("div",{className:"paint-toolbar"},A.default.createElement("div",{className:"paint-tool-group"},A.default.createElement("button",{className:n==="brush"?"active":"",onClick:()=>c("brush"),title:"Brush (thin)"},A.default.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round"},A.default.createElement("path",{d:"m21.174 6.812-3.524-3.524-2.197 2.197 3.524 3.524z"}),A.default.createElement("path",{d:"m14.264 6.674-8.884 8.886a1.5 1.5 0 0 0-.398.725L3.5 22.5l6.215-1.482a1.5 1.5 0 0 0 .725-.398l8.884-8.886"}))),A.default.createElement("button",{className:n==="marker"?"active":"",onClick:()=>c("marker"),title:"Marker (thick)"},A.default.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round"},A.default.createElement("path",{d:"M15.707 4.293a1 1 0 0 1 1.414 0l2.586 2.586a1 1 0 0 1 0 1.414L8.414 19.586a2 2 0 0 1-.829.525l-5.085 1.695 1.695-5.085a2 2 0 0 1 .525-.829z"}),A.default.createElement("path",{d:"m13 6 5 5"}))),A.default.createElement("button",{className:n==="eraser"?"active":"",onClick:()=>c("eraser"),title:"Eraser"},A.default.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round"},A.default.createElement("path",{d:"m7 21-4.3-4.3c-1-1-1-2.5 0-3.4l9.6-9.6c1-1 2.5-1 3.4 0l5.6 5.6c1 1 1 2.5 0 3.4L13 21"}),A.default.createElement("path",{d:"M22 21H7"}),A.default.createElement("path",{d:"m5 11 9 9"})))),A.default.createElement("div",{className:"paint-divider"}),A.default.createElement("div",{className:"paint-action-group"},A.default.createElement("button",{onClick:_,disabled:v===0,title:"Undo"},A.default.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round"},A.default.createElement("path",{d:"M3 7v6h6"}),A.default.createElement("path",{d:"M21 17a9 9 0 0 0-9-9 9 9 0 0 0-6 2.3L3 13"}))),A.default.createElement("button",{onClick:T,title:"Clear"},A.default.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round"},A.default.createElement("path",{d:"M3 6h18"}),A.default.createElement("path",{d:"M19 6v14c0 1-1 2-2 2H7c-1 0-2-1-2-2V6"}),A.default.createElement("path",{d:"M8 6V4c0-1 1-2 2-2h4c1 0 2 1 2 2v2"})))),A.default.createElement("div",{className:"paint-divider"}),A.default.createElement("input",{type:"color",value:a,onChange:O=>e(O.target.value),title:"Color"})),A.default.createElement("div",{className:"paint-canvas-area",style:{background:ud}},A.default.createElement("canvas",{ref:l,width:y,height:s,onMouseDown:$l,onMouseMove:Jn,onMouseUp:q,onMouseLeave:q})))}var ny=td(ey),ry={render:ny};export{ry as default}; /*! Bundled license information: react/cjs/react.production.js: From 066d33ec4e0d8483760bf9312ba2fb153e5b9396 Mon Sep 17 00:00:00 2001 From: koaning Date: Tue, 24 Mar 2026 15:46:57 +0100 Subject: [PATCH 3/4] Update Makefile, paint demo, and zooming example for new Paint widget Drop tailwindcss from the js-paint build target (now just copies CSS). Update paint demo with new examples (transparent mode, annotation). Adjust zooming example slider ranges and formatting. Co-Authored-By: Claude Opus 4.6 --- Makefile | 2 +- demos/paint.py | 63 ++++++++++++++++++++++++++------------------- examples/zooming.py | 10 +++---- 3 files changed, 41 insertions(+), 34 deletions(-) diff --git a/Makefile b/Makefile index 1d65e32e..52179f2d 100644 --- a/Makefile +++ b/Makefile @@ -46,7 +46,7 @@ js-driver-tour: ./esbuild --bundle --format=esm --loader:.css=text --outfile=wigglystuff/static/driver-tour.js js/driver-tour/widget.js js-paint: - ./node_modules/.bin/tailwindcss -i ./js/paint/styles.css -o ./wigglystuff/static/paint.css + cp js/paint/styles.css wigglystuff/static/paint.css ./node_modules/.bin/esbuild js/paint/widget.tsx --bundle --format=esm --outfile=wigglystuff/static/paint.js --minify js-pulsar-chart: diff --git a/demos/paint.py b/demos/paint.py index 4141aa96..c3392b39 100644 --- a/demos/paint.py +++ b/demos/paint.py @@ -3,41 +3,30 @@ # dependencies = [ # "marimo", # "mohtml", -# "wigglystuff==0.2.37", +# "wigglystuff==0.2.40", # ] # /// + import marimo -__generated_with = "0.17.8" -app = marimo.App(width="medium", sql_output="polars") +__generated_with = "0.21.1" +app = marimo.App(width="medium") @app.cell def _(): import marimo as mo - from mohtml import div, img, tailwind_css + from mohtml import div, img from wigglystuff import Paint - tailwind_css() return Paint, div, img, mo @app.cell def _(Paint, mo): - widget = mo.ui.anywidget(Paint(height=550)) - return (widget,) - - -@app.cell -def _(widget): + widget = mo.ui.anywidget(Paint(height=400, width=400)) widget - return - - -@app.cell -def _(div, img, widget): - div(img(src=widget.get_base64()), klass="bg-gray-200 p-4") - return + return (widget,) @app.cell @@ -48,31 +37,51 @@ def _(widget): @app.cell(hide_code=True) def _(mo): - mo.md(r""" - You can also draw over existing images with this library, this can be useful when interacting with multimodal LLMs. + mo.md(""" + You can also draw over existing images. This is handy when annotating images for multimodal LLMs. """) return @app.cell def _(Paint, mo): - redraw_widget = mo.ui.anywidget( + annotate = mo.ui.anywidget( Paint( - init_image="https://marimo.io/_next/image?url=%2Fimages%2Fblog%2F8%2Fthumbnail.png&w=1920&q=75" + init_image="https://picsum.photos/id/237/300/200", + height=300, ) ) - return (redraw_widget,) + annotate + return (annotate,) @app.cell -def _(redraw_widget): - redraw_widget +def _(annotate): + annotate.get_pil() + return + + +@app.cell(hide_code=True) +def _(mo): + mo.md(""" + Set `store_background=False` for transparent PNG output. The checkerboard in the canvas indicates transparency. + """) return @app.cell -def _(redraw_widget): - redraw_widget.get_pil() +def _(Paint, mo): + transparent = mo.ui.anywidget(Paint(height=250, width=300, store_background=False)) + transparent + return (transparent,) + + +@app.cell +def _(div, img, transparent): + div( + img(src=transparent.get_base64()), + style="background: repeating-conic-gradient(#d0d0d0 0% 25%, #f0f0f0 0% 50%) 0 0 / 16px 16px; padding: 16px; border-radius: 8px; display: inline-block;", + ) return diff --git a/examples/zooming.py b/examples/zooming.py index 4021b412..e0a96eaf 100644 --- a/examples/zooming.py +++ b/examples/zooming.py @@ -56,8 +56,8 @@ def get_source_image(file_list): @app.cell def _(mo): upload = mo.ui.file(kind="button", label="Upload Screenshot") - c_re = mo.ui.slider(0.1, 7.0, step=0.01, value=1.0, label="Scale ($c_{re}$)") - c_im = mo.ui.slider(-7.0, 7.0, step=0.01, value=0.0, label="Twist ($c_{im}$)") + c_re = mo.ui.slider(-7, 7.0, step=0.01, value=1.0, label="Scale ($c_{re}$)") + c_im = mo.ui.slider(-70.0, 70.0, step=0.01, value=0.0, label="Twist ($c_{im}$)") zoom = mo.ui.slider(0.0, 10.0, step=0.01, value=0.0, label="Zoom Depth") view_mode = mo.ui.radio(["Spiral Space", "Log Space"], value="Spiral Space", label="View") return c_im, c_re, upload, view_mode, zoom @@ -125,11 +125,9 @@ def _(apply_droste, c_im, c_re, mo, paint, upload, view_mode, zoom): src_img = paint.get_pil() res_img = apply_droste(src_img, c_re.value, c_im.value, zoom.value, view_mode.value) - mo.md( - f""" + mo.md(f""" # 3Blue1Brown Droste Simulator - {upload}""" - ) + {upload}""") return res_img, src_img From 06aff726f7b509ee172e8460a06224e51df1665a Mon Sep 17 00:00:00 2001 From: koaning Date: Tue, 24 Mar 2026 16:05:30 +0100 Subject: [PATCH 4/4] Bump version to 0.3.0 and seed empty canvas with transparent PNG Breaking release: Paint widget redesign (new toolbar, dropped Tailwind). Empty canvases now start with a valid transparent PNG in base64 instead of an empty string, so dimensions are always available from the start. Co-Authored-By: Claude Opus 4.6 --- CHANGELOG.md | 2 +- pyproject.toml | 2 +- uv.lock | 2 +- wigglystuff/paint.py | 8 ++++++-- 4 files changed, 9 insertions(+), 5 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 991704fc..417e5466 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,7 +2,7 @@ All notable changes to this project will be documented in this file. -## [Unreleased] +## [0.3.0] - 2026-03-24 ### Changed - `Paint` widget redesigned: replaced MS Paint window chrome with a minimal toolbar (brush, marker, eraser, undo, clear, color picker). Dropped Tailwind CSS dependency in favor of scoped CSS variables with dark mode support. diff --git a/pyproject.toml b/pyproject.toml index de896650..95bf118b 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [project] name = "wigglystuff" -version = "0.2.40" +version = "0.3.0" description = "Collection of Anywidget Widgets" readme = "README.md" requires-python = ">=3.10" diff --git a/uv.lock b/uv.lock index 40e76bdc..49a0c269 100644 --- a/uv.lock +++ b/uv.lock @@ -4153,7 +4153,7 @@ wheels = [ [[package]] name = "wigglystuff" -version = "0.2.40" +version = "0.3.0" source = { editable = "." } dependencies = [ { name = "anywidget" }, diff --git a/wigglystuff/paint.py b/wigglystuff/paint.py index 4a12adc5..dd971e8f 100644 --- a/wigglystuff/paint.py +++ b/wigglystuff/paint.py @@ -148,11 +148,15 @@ def __init__(self, height: int = DEFAULT_HEIGHT, width: int = DEFAULT_WIDTH, sto else: self.width = width self.height = height - self.base64 = "" + self.base64 = pil_to_base64( + create_empty_image(width, height, (0, 0, 0, 0)) + ).split(",")[1] else: self.width = width self.height = height - self.base64 = "" + self.base64 = pil_to_base64( + create_empty_image(width, height, (0, 0, 0, 0)) + ).split(",")[1] self.store_background = store_background