@gjsify/example-gtk-adwaita-storybook 0.64.10 → 0.64.12-next.279
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/gjs.js +11 -11
- package/package.json +7 -6
package/dist/gjs.js
CHANGED
|
@@ -6,9 +6,9 @@ if(globalThis.__gjsifyBundleUrl??=import.meta.url,Symbol.dispose||(Symbol.dispos
|
|
|
6
6
|
`).slice(1).join(`
|
|
7
7
|
`)||``;this._write(`stderr`,`Trace:`,...e,`
|
|
8
8
|
`+t)}profile(e){}profileEnd(e){}timeStamp(e){}};const v=new Console,log=(...e)=>v.log(...e),info=(...e)=>v.info(...e),debug=(...e)=>v.debug(...e),warn=(...e)=>v.warn(...e),error=(...e)=>v.error(...e),dir=(e,t)=>v.dir(e,t),dirxml=(...e)=>v.dirxml(...e),table=(e,t)=>v.table(e,t),clear=()=>v.clear(),assert=(e,...t)=>v.assert(e,...t),trace=(...e)=>v.trace(...e),time=e=>v.time(e),timeEnd=e=>v.timeEnd(e),timeLog=(e,...t)=>v.timeLog(e,...t),count=e=>v.count(e),countReset=e=>v.countReset(e),group=(...e)=>v.group(...e),groupCollapsed=(...e)=>v.groupCollapsed(...e),groupEnd=()=>v.groupEnd(),profile=e=>{},profileEnd=e=>{},timeStamp=e=>{},y={log,info,debug,warn,error,dir,dirxml,table,time,timeEnd,timeLog,trace,assert,clear,count,countReset,group,groupCollapsed,groupEnd,profile,profileEnd,timeStamp},b=__name(e=>{Promise.resolve().then(e)},`queueMicrotask`);function isWindowsPath(e){return/^[A-Za-z]:[\\/]/.test(e)||e.startsWith(`\\\\`)}function lastPathSeparatorIndex(e){let t=e.lastIndexOf(`/`);return isWindowsPath(e)?Math.max(t,e.lastIndexOf(`\\`)):t}const ee={amp:`&`,lt:`<`,gt:`>`,quot:`"`,apos:`'`};function decodeXmlEntities(e){return e.includes(`&`)?e.replace(/&(#[Xx][0-9A-Fa-f]+|#[0-9]+|[A-Za-z][A-Za-z0-9]*);/g,(e,t)=>{if(t.charAt(0)!==`#`)return ee[t]??e;let n=t.charAt(1)===`x`||t.charAt(1)===`X`,r=Number.parseInt(n?t.slice(2):t.slice(1),n?16:10);return!Number.isFinite(r)||r<1||r>1114111||r>=55296&&r<=57343?e:String.fromCodePoint(r)}):e}function findTagEnd(e,t){let n=``;for(let r=t+1;r<e.length;r++){let t=e.charAt(r);if(n)t===n&&(n=``);else if(t===`"`||t===`'`)n=t;else if(t===`>`)return r}return-1}const te=/([^\s=/<>]+)\s*=\s*(?:"([^"]*)"|'([^']*)')/g;function parseAttributes(e){let t={};te.lastIndex=0;let n=te.exec(e);for(;n!==null;)n[1]in t||(t[n[1]]=decodeXmlEntities(n[2]??n[3]??``)),n=te.exec(e);return t}function scanXml(e){let t=[],pushText=e=>{t.push({kind:`text`,text:decodeXmlEntities(e)})},n=0;for(;n<e.length;){let r=e.indexOf(`<`,n);if(r<0){pushText(e.slice(n));break}if(r>n&&pushText(e.slice(n,r)),e.startsWith(`<!--`,r)){let t=e.indexOf(`-->`,r+4);n=t<0?e.length:t+3;continue}if(e.startsWith(`<![CDATA[`,r)){let i=e.indexOf(`]]>`,r+9);t.push({kind:`text`,text:e.slice(r+9,i<0?e.length:i)}),n=i<0?e.length:i+3;continue}if(e.startsWith(`<?`,r)){let t=e.indexOf(`?>`,r+2);n=t<0?e.length:t+2;continue}if(e.startsWith(`<!`,r)){let t=e.indexOf(`>`,r+2);n=t<0?e.length:t+1;continue}let i=findTagEnd(e,r);if(i<0){pushText(e.slice(r));break}let o=e.slice(r+1,i);if(n=i+1,o.charAt(0)===`/`){let e=o.slice(1).trim();e!==``&&t.push({kind:`close`,name:e});continue}let s=o,c=!1;s.endsWith(`/`)&&(c=!0,s=s.slice(0,-1));let l=/^([^\s/<>]+)/.exec(s);if(l===null)continue;let u=l[1];t.push({kind:`open`,name:u,attributes:parseAttributes(s.slice(u.length)),selfClosing:c})}return t}function mapSysname(e){let t=e.trim();switch(t){case`Linux`:return`linux`;case`Darwin`:return`darwin`;case`FreeBSD`:return`freebsd`;case`OpenBSD`:return`openbsd`;case`NetBSD`:return`netbsd`;case`SunOS`:return`sunos`;case`AIX`:return`aix`;case`Haiku`:return`haiku`;default:return/^CYGWIN/i.test(t)?`cygwin`:/^(MINGW|MSYS|Windows)/i.test(t)?`win32`:void 0}}function mapMachine(e){let t=e.trim().toLowerCase();switch(t){case`x86_64`:case`amd64`:return`x64`;case`aarch64`:case`arm64`:return`arm64`;case`i386`:case`i486`:case`i586`:case`i686`:return`ia32`;case`ppc64le`:case`ppc64`:return`ppc64`;case`s390x`:return`s390x`;case`riscv64`:return`riscv64`;case`loongarch64`:return`loong64`;case`mipsel`:return`mipsel`;case`mips`:return`mips`;default:return t.startsWith(`arm`)?`arm`:void 0}}const{toString:ne}=Object.prototype;function classOf(e){return ne.call(e).slice(8,-1)}function throwDataCloneError(e){let t=globalThis.DOMException;if(typeof t==`function`)throw new t(e,`DataCloneError`);let n=Error(e);throw n.name=`DataCloneError`,n}const re={Error,EvalError,RangeError,ReferenceError,SyntaxError,TypeError,URIError},ie=new Set([`Int8Array`,`Uint8Array`,`Uint8ClampedArray`,`Int16Array`,`Uint16Array`,`Int32Array`,`Uint32Array`,`Float32Array`,`Float64Array`,`BigInt64Array`,`BigUint64Array`]);function internalClone(e,t,n){if(e==null)return e;let r=typeof e;if(r===`boolean`||r===`number`||r===`string`||r===`bigint`)return e;r===`symbol`&&throwDataCloneError(`Symbol cannot be cloned`),r===`function`&&throwDataCloneError(`Function cannot be cloned`);let i=e;if(t.has(i))return t.get(i);let o=classOf(i);if(o===`Date`)return new Date(i.getTime());if(o===`RegExp`)return new RegExp(i.source,i.flags);if(o===`Boolean`||o===`Number`||o===`String`)return Object(i.valueOf());if(o===`BigInt`)return Object(BigInt.prototype.valueOf.call(i));if(i instanceof Error){let e=i,r=e.constructor?.name,o=new(r&&re[r]||re[e.name]||Error)(e.message);return o.name=e.name,`cause`in e&&Object.defineProperty(o,"cause",{value:internalClone(e.cause,t,n),writable:!0,enumerable:!1,configurable:!0}),o}if(o===`DOMException`){let e=globalThis.DOMException;if(typeof e==`function`){let t=i;return new e(t.message,t.name)}}if(o===`ArrayBuffer`){let e=i;if(n&&n.transferred.has(e)){let r=n.transferred.get(e);return t.set(i,r),r}(e.detached===!0||e.byteLength===0&&e.detached)&&throwDataCloneError(`ArrayBuffer is detached and cannot be cloned`);let r=e.slice(0);return t.set(i,r),r}if(o===`SharedArrayBuffer`||i&&typeof i==`object`&&i.constructor?.name===`SharedBuffer`)return i;if(o===`DataView`){let e=i,r=n?.viewSnapshots.get(i),o=internalClone(e.buffer,t,n),s=r?r.byteOffset:e.byteOffset,c=r?r.byteLength:e.byteLength,l=new DataView(o,s,c);return t.set(i,l),l}if(ie.has(o)){let e=i,r=n?.viewSnapshots.get(i),o=internalClone(e.buffer,t,n),s=e.constructor,c=new s(o,r?r.byteOffset:e.byteOffset,r?r.length:e.length);return t.set(i,c),c}if(o===`Map`){let e=new Map;t.set(i,e);for(let[r,o]of i)e.set(internalClone(r,t,n),internalClone(o,t,n));return e}if(o===`Set`){let e=new Set;t.set(i,e);for(let r of i)e.add(internalClone(r,t,n));return e}{let e=globalThis,t=e.Blob,n=e.File;if(typeof n==`function`&&i instanceof n){let e=i;return new n([i],e.name,{type:e.type,lastModified:e.lastModified})}if(typeof t==`function`&&i instanceof t)return new t([i],{type:i.type})}if(i instanceof WeakMap&&throwDataCloneError(`WeakMap cannot be cloned`),i instanceof WeakSet&&throwDataCloneError(`WeakSet cannot be cloned`),i instanceof WeakRef&&throwDataCloneError(`WeakRef cannot be cloned`),typeof globalThis.Promise==`function`&&i instanceof Promise&&throwDataCloneError(`Promise cannot be cloned`),o===`Array`){let e=i,r=[];t.set(i,r);for(let i=0;i<e.length;i++)i in e&&(r[i]=internalClone(e[i],t,n));return r}if(o===`Object`||typeof i==`object`){let e={};t.set(i,e);for(let r of Object.keys(i))e[r]=internalClone(i[r],t,n);return e}throwDataCloneError(`${o} cannot be cloned`)}function structuredClone$1(e,t){let n=t?.transfer;if(!n||n.length===0)return internalClone(e,new Map);let r=new Set;for(let e of n)if(classOf(e)===`ArrayBuffer`){let t=e;t.detached===!0&&throwDataCloneError(`ArrayBuffer in transfer list is detached`),r.add(t)}let i=new Map;r.size>0&&snapshotViewsBackedByTransferredBuffers(e,r,i,new Set);let o=new Map;for(let e of r){let t=e;typeof t.transfer!=`function`&&throwDataCloneError(`ArrayBuffer.prototype.transfer() not available — runtime is not SM140+`),o.set(e,t.transfer())}return internalClone(e,new Map,{transferred:o,viewSnapshots:i})}__name(structuredClone$1,`structuredClone`);function snapshotViewsBackedByTransferredBuffers(e,t,n,r){if(typeof e!=`object`||!e)return;let i=e;if(r.has(i))return;r.add(i);let o=classOf(i);if(o===`DataView`){let e=i;t.has(e.buffer)&&n.set(i,{byteOffset:e.byteOffset,length:0,byteLength:e.byteLength});return}if(ie.has(o)){let e=i;t.has(e.buffer)&&n.set(i,{byteOffset:e.byteOffset,length:e.length,byteLength:e.byteLength});return}if(Array.isArray(i)){for(let e=0;e<i.length;e++)e in i&&snapshotViewsBackedByTransferredBuffers(i[e],t,n,r);return}if(o===`Map`){for(let[e,o]of i)snapshotViewsBackedByTransferredBuffers(e,t,n,r),snapshotViewsBackedByTransferredBuffers(o,t,n,r);return}if(o===`Set`){for(let e of i)snapshotViewsBackedByTransferredBuffers(e,t,n,r);return}if(o===`Object`)for(let e of Object.keys(i))snapshotViewsBackedByTransferredBuffers(i[e],t,n,r)}function hostGlib(){try{return globalThis.imports?.gi?.GLib}catch{return}}function readText(e,t){try{let[n,r]=e.file_get_contents(t);return!n||!r?null:new TextDecoder().decode(r)}catch{return null}}function shellOut(e,t){try{let[n,r]=e.spawn_command_line_sync(t);if(!n||!r)return null;let i=new TextDecoder().decode(r).trim();return i.length>0?i:null}catch{return null}}function hasProcfs(){let e=hostGlib();if(!e)return!1;try{return e.file_test(`/proc/self/status`,16)}catch{return!1}}let x=null;function hostPid(){if(x!==null)return x>0?x:void 0;let e=hostGlib();if(!e)return;let t=0,n=hasProcfs()?readText(e,`/proc/self/stat`):null;if(n)t=parseInt(n,10);else{let n=shellOut(e,`sh -c 'echo $PPID'`);n&&(t=parseInt(n,10))}return x=Number.isInteger(t)&&t>0?t:0,x>0?x:void 0}function hostPpid(){let e=hostGlib();if(!e)return;let t=hasProcfs()?readText(e,`/proc/self/status`):null;if(t){let e=/PPid:\s+(\d+)/.exec(t);if(e){let t=parseInt(e[1],10);return Number.isInteger(t)?t:void 0}}let n=hostPid();if(n===void 0)return;let r=shellOut(e,`ps -o ppid= -p ${n}`);if(!r)return;let i=parseInt(r,10);return Number.isInteger(i)?i:void 0}function hostExecPath(){let e=hostGlib();if(e){if(hasProcfs())try{let t=e.file_read_link(`/proc/self/exe`);if(t)return t}catch{}try{let t=e.get_prgname();if(t){let n=e.find_program_in_path(t);if(n)return n}}catch{return}}}function readProcessMemory(){let e=hostGlib();if(!e)return null;let t=hasProcfs()?readText(e,`/proc/self/status`):null;if(t){let e=new Map;for(let n of t.split(`
|
|
9
|
-
`)){let t=/^(\w+):\s+(\d+)(\s+kB)?/.exec(n);t&&e.set(t[1],parseInt(t[2],10)*(t[3]?1024:1))}if(e.size>0)return{virtual:e.get(`VmSize`)??0,resident:e.get(`VmRSS`)??0,data:e.get(`VmData`)??0,peak:e.get(`VmPeak`)??0}}let n=shellOut(e,`sh -c 'ps -o rss=,vsz= -p $PPID'`);if(!n)return null;let r=/^(\d+)\s+(\d+)$/.exec(n);return r?{virtual:parseInt(r[2],10)*1024,resident:parseInt(r[1],10)*1024,data:0,peak:0}:null}let S=null,ae=!1,oe=!1;function glib(){let e=globalThis;if(typeof e.process?.versions?.gjs==`string`||e.process===void 0)return e.imports?.gi?.GLib}function arm(e){oe||(oe=!0,e.runAsync().catch(()=>{}))}function ensureMainLoop(){return createLoop()}function createLoop(){let e=glib();if(e)return ae?S:(S=new e.MainLoop(null,!1),ae=!0,e.main_depth()===0&&arm(S),S)}function quitMainLoop(){S&&=(S.quit(),ae=!1,oe=!1,null)}function hostGi(){return globalThis.imports?.gi}function directoryOf(e){return/^(.*)[\\/][^\\/]*$/.exec(e)?.[1]}function colocateNativeLibrary(e,t=hostGi()){try{let n=t?.GIRepository?.Repository?.dup_default?.(),r=n?.get_typelib_path(e),i=r?directoryOf(r):void 0;return!n||!i?!1:(n.prepend_library_path(i),!0)}catch{return!1}}function probeNativeLibrary(e,t=hostGi()){try{let n=t?.GIRepository?.Repository?.dup_default?.(),r=n?.get_typelib_path(e);if(!t||!n||!r)return null;let i=firstSymbol(n,e);if(!i||(t.GModule?.module_error(),i.info.get_typelib().symbol(i.name)[0]))return null;let o=directoryOf(r)??`.`,s=r.includes(`\\`)&&!r.includes(`/`)?`\\`:`/`;for(let c of n.get_shared_libraries(e)??[]){let n=`${o}${s}${c}`,l=t.GLib?.file_test(n,t.GLib.FileTest.EXISTS)?n:c,u=loaderError(t,e,r,l,i.name);if(u!==void 0)return{namespace:e,library:l,reason:u,missingDependency:missingLibraryDependency(u,l)}}let c=(n.get_shared_libraries(e)??[]).join(`, `)||`(none named)`;return{namespace:e,library:c,reason:`symbol ${i.name} not found in ${c}, and the loader reported no error`}}catch{return null}}function firstSymbol(e,t){let n=e.get_n_infos(t),r=null;for(let i=0;i<n;i++){let n=e.get_info(t,i),o=n.get_type_init_function_name?.();if(o)return{info:n,name:o};let s=n.get_symbol?.();s&&!r&&(r={info:n,name:s})}return r}function loaderError(e,t,n,r,i){let{GIRepository:o,GLib:s,GModule:c}=e;if(!o?.Repository||!o.Typelib||!s||!c)return;let[,l]=s.file_get_contents(n),u=new TextEncoder().encode(`${r}\0`),d=new Uint8Array(l.length+u.length);d.set(l),d.set(u,l.length);let f=new DataView(d.buffer);f.setUint32(40,d.length,!0),f.setUint32(52,l.length,!0);let p=new o.Repository,m=firstSymbol(p,p.load_typelib(o.Typelib.new_from_bytes(new s.Bytes(d)),0));if(m&&(c.module_error(),!m.info.get_typelib().symbol(i)[0]))return c.module_error()??`${t}: ${r} could not be opened (the loader reported no error)`}function missingLibraryDependency(e,t){let n=/Library not loaded: (\S+)/.exec(e)?.[1]??/Error loading shared library ([^\s:]+): .*\(needed by /.exec(e)?.[1]??/(?:^|\s)([^\s:]+): cannot open shared object file/.exec(e)?.[1];if(!n)return;let r=n.replace(/^.*[\\/]/,``);if(!(t&&r===t.replace(/^.*[\\/]/,``)))return r}var NativeLibraryLoadError=class extends Error{failure;constructor(e,t){let n=e.missingDependency?`It needs ${e.missingDependency}, which the loader could not find: not installed, or not on its search path.`:`The loader could not open it.`;super(`${e.namespace}: the native library ${e.library} could not be loaded. ${n}\nLoader: ${e.reason.trim()}\n`+(t??"`gjsify system-check` lists the system libraries the installed @gjsify packages need, with the install command for this host.")),this.name=`NativeLibraryLoadError`,this.failure=e}};function openNativeLibrary(e,t=hostGi()){colocateNativeLibrary(e,t);let n=probeNativeLibrary(e,t);return n?new NativeLibraryLoadError(n):null}function loadOptionalNativeModule(e,t,n=hostGi()){if(!n)return{module:null,error:Error(`${e}: imports.gi is not available (not running on GJS)`)};try{let r=n[e];if(!r)return{module:null,error:Error(`${e}: typelib not found`)};let i=openNativeLibrary(e,n);if(i)return y.debug(i.message),{module:null,error:i};for(let e of t)r[e];return{module:r,error:null}}catch(e){return{module:null,error:e instanceof Error?e:Error(String(e))}}}registerGlobal(`Blob`,p),registerGlobal(`File`,m);const C=`ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/`,se=new Uint8Array(256);for(let e=0;e<64;e++)se[C.charCodeAt(e)]=e;function btoaPolyfill(e){if(typeof globalThis.btoa==`function`)return globalThis.btoa(e);let t=``,n=0;for(;n+2<e.length;n+=3){let r=e.charCodeAt(n)<<16|e.charCodeAt(n+1)<<8|e.charCodeAt(n+2);t+=C[r>>18&63]+C[r>>12&63]+C[r>>6&63]+C[r&63]}if(n+1===e.length){let r=e.charCodeAt(n)<<16;t+=C[r>>18&63]+C[r>>12&63]+`==`}else if(n+2===e.length){let r=e.charCodeAt(n)<<16|e.charCodeAt(n+1)<<8;t+=C[r>>18&63]+C[r>>12&63]+C[r>>6&63]+`=`}return t}function base64Decode(e){let t=e.replace(/[=\s]/g,``),n=new Uint8Array(t.length*3>>2),r=0,i=0,o=0;for(let e=0;e<t.length;e++)r=r<<6|se[t.charCodeAt(e)],i+=6,i>=8&&(i-=8,n[o++]=r>>i&255);return n.subarray(0,o)}function base64Encode(e){let t=``,n=e.length;for(let r=0;r<n;r+=3){let i=e[r],o=r+1<n?e[r+1]:0,s=r+2<n?e[r+2]:0;t+=C[i>>2],t+=C[(i&3)<<4|o>>4],t+=r+1<n?C[(o&15)<<2|s>>6]:`=`,t+=r+2<n?C[s&63]:`=`}return t}const ce=[`utf8`,`ascii`,`latin1`,`binary`,`base64`,`base64url`,`hex`,`ucs2`,`utf16le`];function normalizeEncoding(e){if(!e||e===`utf8`||e===`utf-8`)return`utf8`;switch((``+e).toLowerCase().replace(/-/g,``)){case`utf8`:return`utf8`;case`ascii`:return`ascii`;case`latin1`:case`binary`:return`latin1`;case`base64`:return`base64`;case`base64url`:return`base64url`;case`hex`:return`hex`;case`ucs2`:case`utf16le`:return`utf16le`;default:return`utf8`}}function checkEncoding(e){let t=(``+e).toLowerCase().replace(/-/g,``);if(!ce.includes(t))throw TypeError(`Unknown encoding: ${e}`)}let le,ue;const textEncoder=()=>le??=new TextEncoder,textDecoder=()=>ue??=new TextDecoder;function encodeString(e,t){switch(t){case`utf8`:return textEncoder().encode(e);case`ascii`:{let t=new Uint8Array(e.length);for(let n=0;n<e.length;n++)t[n]=e.charCodeAt(n)&127;return t}case`latin1`:{let t=new Uint8Array(e.length);for(let n=0;n<e.length;n++)t[n]=e.charCodeAt(n)&255;return t}case`base64`:return base64Decode(e.replace(/-/g,`+`).replace(/_/g,`/`));case`base64url`:return encodeString(e.replace(/-/g,`+`).replace(/_/g,`/`),`base64`);case`hex`:{let t=e.length>>>1,n=new Uint8Array(t);for(let r=0;r<t;r++){let t=parseInt(e[r*2],16),i=parseInt(e[r*2+1],16);if(Number.isNaN(t)||Number.isNaN(i))break;n[r]=t<<4|i}return n}case`utf16le`:{let t=new Uint8Array(e.length*2);for(let n=0;n<e.length;n++){let r=e.charCodeAt(n);t[n*2]=r&255,t[n*2+1]=r>>8&255}return t}default:return textEncoder().encode(e)}}function decodeString(e,t,n,r){let i=n!==void 0||r!==void 0?e.subarray(n??0,r??e.length):e;switch(t){case`utf8`:return textDecoder().decode(i);case`ascii`:{let e=``;for(let t=0;t<i.length;t++)e+=String.fromCharCode(i[t]&127);return e}case`latin1`:{let e=``;for(let t=0;t<i.length;t++)e+=String.fromCharCode(i[t]);return e}case`base64`:{let e=``;for(let t=0;t<i.length;t++)e+=String.fromCharCode(i[t]);return btoaPolyfill(e)}case`base64url`:return decodeString(i,`base64`).replace(/\+/g,`-`).replace(/\//g,`_`).replace(/=+$/,``);case`hex`:{let e=``;for(let t=0;t<i.length;t++)e+=i[t].toString(16).padStart(2,`0`);return e}case`utf16le`:{let e=``;for(let t=0;t+1<i.length;t+=2)e+=String.fromCharCode(i[t]|i[t+1]<<8);return e}default:return textDecoder().decode(i)}}function checkOffset(e,t,n){if(e+t>n)throw RangeError(`Attempt to access memory outside buffer bounds`)}const de=typeof SharedArrayBuffer<`u`;var fe=class Buffer extends Uint8Array{static _isBuffer=!0;static alloc(e,t,n){if(typeof e!=`number`)throw TypeError(`The "size" argument must be of type number. Received type ${typeof e}`);if(e<0)throw RangeError(`The value "${e}" is invalid for option "size"`);let r=new Buffer(e);return t!==void 0&&t!==0&&r.fill(t,0,e,n),r}static allocUnsafe(e){if(typeof e!=`number`)throw TypeError(`The "size" argument must be of type number. Received type ${typeof e}`);return new Buffer(e)}static allocUnsafeSlow(e){return Buffer.allocUnsafe(e)}static from(e,t,n){if(typeof e==`string`){let n=normalizeEncoding(t);if(t&&typeof t==`string`){let e=(``+t).toLowerCase().replace(/-/g,``);[`utf8`,`ascii`,`latin1`,`binary`,`base64`,`base64url`,`hex`,`ucs2`,`utf16le`,``].includes(e)||checkEncoding(t)}let r=encodeString(e,n);return new Buffer(r.buffer,r.byteOffset,r.byteLength)}if(ArrayBuffer.isView(e)){let t=new Buffer(e.buffer,e.byteOffset,e.byteLength),n=new Buffer(t.length);return n.set(t),n}if(e instanceof ArrayBuffer){let r=t||0,i=n===void 0?e.byteLength-r:n;return new Buffer(e,r,i)}if(de&&e instanceof SharedArrayBuffer){let r=t||0,i=n===void 0?e.byteLength-r:n;return new Buffer(new Uint8Array(e,r,i))}if(typeof e==`object`&&e&&typeof e.viewBytes==`function`&&typeof e.byteLength==`number`&&e.constructor?.name===`SharedBuffer`){let r=e,i=t||0,o=n===void 0?r.byteLength-i:n,s=r.viewBytes(i,o);return new Buffer(s.buffer,s.byteOffset,s.byteLength)}if(Array.isArray(e)){let t=new Buffer(e.length);for(let n=0;n<e.length;n++)t[n]=e[n]&255;return t}throw TypeError(`The first argument must be of type string or an instance of Buffer, ArrayBuffer, or Array`)}static isBuffer(e){return e instanceof Buffer}static isEncoding(e){if(typeof e!=`string`)return!1;let t=e.toLowerCase().replace(/-/g,``);return[`utf8`,`ascii`,`latin1`,`binary`,`base64`,`base64url`,`hex`,`ucs2`,`utf16le`].includes(t)}static byteLength(e,t){if(typeof e!=`string`){if(ArrayBuffer.isView(e)||e instanceof ArrayBuffer||de&&e instanceof SharedArrayBuffer)return e.byteLength;throw TypeError(`The "string" argument must be one of type string, Buffer, or ArrayBuffer`)}switch(normalizeEncoding(t)){case`utf8`:return new TextEncoder().encode(e).byteLength;case`ascii`:case`latin1`:return e.length;case`base64`:case`base64url`:{let t=e.length;for(;t>0&&(e[t-1]===`=`||e[t-1]===` `);)t--;return t*3>>>2}case`hex`:return e.length>>>1;case`utf16le`:return e.length*2;default:return new TextEncoder().encode(e).byteLength}}static compare(e,t){if(!(e instanceof Uint8Array)||!(t instanceof Uint8Array))throw TypeError(`Arguments must be Buffers or Uint8Arrays`);let n=Math.min(e.length,t.length);for(let r=0;r<n;r++){if(e[r]<t[r])return-1;if(e[r]>t[r])return 1}return e.length<t.length?-1:+(e.length>t.length)}static concat(e,t){if(e.length===0)return Buffer.alloc(0);if(t===void 0){t=0;for(let n=0;n<e.length;n++)t+=e[n].length}let n=Buffer.alloc(t),r=0;for(let i=0;i<e.length;i++){let o=e[i],s=Math.min(o.length,t-r);s<=0||(n.set(o.subarray(0,s),r),r+=s)}return n}static poolSize=65536;toString(e,t,n){let r=normalizeEncoding(e);return decodeString(this,r,t,n)}toJSON(){return{type:`Buffer`,data:Array.from(this)}}equals(e){if(!(e instanceof Uint8Array))throw TypeError(`Argument must be a Buffer or Uint8Array`);if(this.length!==e.length)return!1;for(let t=0;t<this.length;t++)if(this[t]!==e[t])return!1;return!0}compare(e,t,n,r,i){if(!(e instanceof Uint8Array))throw TypeError(`Argument must be a Buffer or Uint8Array`);let o=r!==void 0||i!==void 0?this.subarray(r??0,i??this.length):this,s=t!==void 0||n!==void 0?e.subarray(t??0,n??e.length):e;return Buffer.compare(o,s)}copy(e,t=0,n=0,r){let i=r??this.length,o=Math.min(i-n,e.length-t);return o<=0?0:(e.set(this.subarray(n,n+o),t),o)}slice(e,t){let n=e??0,r=t??this.length,i=super.subarray(n,r);return new Buffer(i.buffer,i.byteOffset,i.byteLength)}subarray(e,t){let n=super.subarray(e,t);return new Buffer(n.buffer,n.byteOffset,n.byteLength)}write(e,t,n,r){t??=0;let i=encodeString(e,normalizeEncoding(r||(typeof n==`string`?n:void 0))),o=n!==void 0&&typeof n==`number`?Math.min(n,this.length-t):this.length-t,s=Math.min(i.length,o);return this.set(i.subarray(0,s),t),s}fill(e,t,n,r){let i=t??0,o=n??this.length;if(typeof e==`number`)super.fill(e&255,i,o);else if(typeof e==`string`){let t=encodeString(e,normalizeEncoding(r));if(t.length===0)super.fill(0,i,o);else if(t.length===1)super.fill(t[0],i,o);else for(let e=i;e<o;e++)this[e]=t[(e-i)%t.length]}else if(e instanceof Uint8Array)if(e.length===0)super.fill(0,i,o);else for(let t=i;t<o;t++)this[t]=e[(t-i)%e.length];return this}indexOf(e,t,n){if(typeof e==`number`)return super.indexOf(e&255,t);let r=typeof e==`string`?encodeString(e,normalizeEncoding(n)):e,i=t??0;outer:for(let e=i;e<=this.length-r.length;e++){for(let t=0;t<r.length;t++)if(this[e+t]!==r[t])continue outer;return e}return-1}lastIndexOf(e,t,n){if(typeof e==`number`)return t===void 0?super.lastIndexOf(e&255):super.lastIndexOf(e&255,t);let r=typeof e==`string`?encodeString(e,normalizeEncoding(n)):e,i=t===void 0?this.length-r.length:Math.min(t,this.length-r.length);outer:for(let e=i;e>=0;e--){for(let t=0;t<r.length;t++)if(this[e+t]!==r[t])continue outer;return e}return-1}includes(e,t,n){return this.indexOf(e,t,n)!==-1}readUInt8(e=0){return checkOffset(e,1,this.length),this[e]}readUInt16BE(e=0){return checkOffset(e,2,this.length),this[e]<<8|this[e+1]}readUInt16LE(e=0){return checkOffset(e,2,this.length),this[e]|this[e+1]<<8}readUInt32BE(e=0){return checkOffset(e,4,this.length),this[e]*16777216+(this[e+1]<<16|this[e+2]<<8|this[e+3])}readUInt32LE(e=0){return checkOffset(e,4,this.length),this[e+3]*16777216+(this[e+2]<<16|this[e+1]<<8|this[e])>>>0}readInt8(e=0){return checkOffset(e,1,this.length),this[e]|(this[e]&128?4294967040:0)}readInt16BE(e=0){checkOffset(e,2,this.length);let t=this[e]<<8|this[e+1];return t&32768?t|4294901760:t}readInt16LE(e=0){checkOffset(e,2,this.length);let t=this[e]|this[e+1]<<8;return t&32768?t|4294901760:t}readInt32BE(e=0){return checkOffset(e,4,this.length),this[e]<<24|this[e+1]<<16|this[e+2]<<8|this[e+3]}readInt32LE(e=0){return checkOffset(e,4,this.length),this[e]|this[e+1]<<8|this[e+2]<<16|this[e+3]<<24}readFloatBE(e=0){return checkOffset(e,4,this.length),new DataView(this.buffer,this.byteOffset+e,4).getFloat32(0,!1)}readFloatLE(e=0){return checkOffset(e,4,this.length),new DataView(this.buffer,this.byteOffset+e,4).getFloat32(0,!0)}readDoubleBE(e=0){return checkOffset(e,8,this.length),new DataView(this.buffer,this.byteOffset+e,8).getFloat64(0,!1)}readDoubleLE(e=0){return checkOffset(e,8,this.length),new DataView(this.buffer,this.byteOffset+e,8).getFloat64(0,!0)}readBigInt64BE(e=0){return checkOffset(e,8,this.length),new DataView(this.buffer,this.byteOffset+e,8).getBigInt64(0,!1)}readBigInt64LE(e=0){return checkOffset(e,8,this.length),new DataView(this.buffer,this.byteOffset+e,8).getBigInt64(0,!0)}readBigUInt64BE(e=0){return checkOffset(e,8,this.length),new DataView(this.buffer,this.byteOffset+e,8).getBigUint64(0,!1)}readBigUInt64LE(e=0){return checkOffset(e,8,this.length),new DataView(this.buffer,this.byteOffset+e,8).getBigUint64(0,!0)}readUIntBE(e,t){checkOffset(e,t,this.length);let n=0;for(let r=0;r<t;r++)n=n*256+this[e+r];return n}readUIntLE(e,t){checkOffset(e,t,this.length);let n=0,r=1;for(let i=0;i<t;i++)n+=this[e+i]*r,r*=256;return n}readIntBE(e,t){checkOffset(e,t,this.length);let n=0;for(let r=0;r<t;r++)n=n*256+this[e+r];return n>=2**(8*t-1)&&(n-=2**(8*t)),n}readIntLE(e,t){checkOffset(e,t,this.length);let n=0,r=1;for(let i=0;i<t;i++)n+=this[e+i]*r,r*=256;return n>=2**(8*t-1)&&(n-=2**(8*t)),n}writeUInt8(e,t=0){return checkOffset(t,1,this.length),this[t]=e&255,t+1}writeUInt16BE(e,t=0){return checkOffset(t,2,this.length),this[t]=e>>>8&255,this[t+1]=e&255,t+2}writeUInt16LE(e,t=0){return checkOffset(t,2,this.length),this[t]=e&255,this[t+1]=e>>>8&255,t+2}writeUInt32BE(e,t=0){return checkOffset(t,4,this.length),this[t]=e>>>24&255,this[t+1]=e>>>16&255,this[t+2]=e>>>8&255,this[t+3]=e&255,t+4}writeUInt32LE(e,t=0){return checkOffset(t,4,this.length),this[t]=e&255,this[t+1]=e>>>8&255,this[t+2]=e>>>16&255,this[t+3]=e>>>24&255,t+4}writeInt8(e,t=0){return checkOffset(t,1,this.length),e<0&&(e=255+e+1),this[t]=e&255,t+1}writeInt16BE(e,t=0){return checkOffset(t,2,this.length),this[t]=e>>>8&255,this[t+1]=e&255,t+2}writeInt16LE(e,t=0){return checkOffset(t,2,this.length),this[t]=e&255,this[t+1]=e>>>8&255,t+2}writeInt32BE(e,t=0){return checkOffset(t,4,this.length),this[t]=e>>>24&255,this[t+1]=e>>>16&255,this[t+2]=e>>>8&255,this[t+3]=e&255,t+4}writeInt32LE(e,t=0){return checkOffset(t,4,this.length),this[t]=e&255,this[t+1]=e>>>8&255,this[t+2]=e>>>16&255,this[t+3]=e>>>24&255,t+4}writeFloatBE(e,t=0){return checkOffset(t,4,this.length),new DataView(this.buffer,this.byteOffset+t,4).setFloat32(0,e,!1),t+4}writeFloatLE(e,t=0){return checkOffset(t,4,this.length),new DataView(this.buffer,this.byteOffset+t,4).setFloat32(0,e,!0),t+4}writeDoubleBE(e,t=0){return checkOffset(t,8,this.length),new DataView(this.buffer,this.byteOffset+t,8).setFloat64(0,e,!1),t+8}writeDoubleLE(e,t=0){return checkOffset(t,8,this.length),new DataView(this.buffer,this.byteOffset+t,8).setFloat64(0,e,!0),t+8}writeBigInt64BE(e,t=0){return checkOffset(t,8,this.length),new DataView(this.buffer,this.byteOffset+t,8).setBigInt64(0,e,!1),t+8}writeBigInt64LE(e,t=0){return checkOffset(t,8,this.length),new DataView(this.buffer,this.byteOffset+t,8).setBigInt64(0,e,!0),t+8}writeBigUInt64BE(e,t=0){return checkOffset(t,8,this.length),new DataView(this.buffer,this.byteOffset+t,8).setBigUint64(0,e,!1),t+8}writeBigUInt64LE(e,t=0){return checkOffset(t,8,this.length),new DataView(this.buffer,this.byteOffset+t,8).setBigUint64(0,e,!0),t+8}readUint8(e=0){return this.readUInt8(e)}readUint16BE(e=0){return this.readUInt16BE(e)}readUint16LE(e=0){return this.readUInt16LE(e)}readUint32BE(e=0){return this.readUInt32BE(e)}readUint32LE(e=0){return this.readUInt32LE(e)}readUintBE(e,t){return this.readUIntBE(e,t)}readUintLE(e,t){return this.readUIntLE(e,t)}readBigUint64BE(e=0){return this.readBigUInt64BE(e)}readBigUint64LE(e=0){return this.readBigUInt64LE(e)}writeUint8(e,t=0){return this.writeUInt8(e,t)}writeUint16BE(e,t=0){return this.writeUInt16BE(e,t)}writeUint16LE(e,t=0){return this.writeUInt16LE(e,t)}writeUint32BE(e,t=0){return this.writeUInt32BE(e,t)}writeUint32LE(e,t=0){return this.writeUInt32LE(e,t)}writeBigUint64BE(e,t=0){return this.writeBigUInt64BE(e,t)}writeBigUint64LE(e,t=0){return this.writeBigUInt64LE(e,t)}swap16(){let e=this.length;if(e%2!=0)throw RangeError(`Buffer size must be a multiple of 16-bits`);for(let t=0;t<e;t+=2){let e=this[t];this[t]=this[t+1],this[t+1]=e}return this}swap32(){let e=this.length;if(e%4!=0)throw RangeError(`Buffer size must be a multiple of 32-bits`);for(let t=0;t<e;t+=4){let e=this[t],n=this[t+1];this[t]=this[t+3],this[t+1]=this[t+2],this[t+2]=n,this[t+3]=e}return this}swap64(){let e=this.length;if(e%8!=0)throw RangeError(`Buffer size must be a multiple of 64-bits`);for(let t=0;t<e;t+=8){let e=this[t],n=this[t+1],r=this[t+2],i=this[t+3];this[t]=this[t+7],this[t+1]=this[t+6],this[t+2]=this[t+5],this[t+3]=this[t+4],this[t+4]=i,this[t+5]=r,this[t+6]=n,this[t+7]=e}return this}};`Buffer`in globalThis||Object.defineProperty(globalThis,"Buffer",{value:fe,enumerable:!1,writable:!0,configurable:!0});var w=e;typeof globalThis.btoa!=`function`&&Object.defineProperty(globalThis,"btoa",{value:function btoa(e){let t=new Uint8Array(e.length);for(let n=0;n<e.length;n++)t[n]=e.charCodeAt(n)&255;return w.base64_encode(t)},enumerable:!0,writable:!0,configurable:!0}),typeof globalThis.atob!=`function`&&Object.defineProperty(globalThis,"atob",{value:function atob(e){let t=w.base64_decode(e),n=``;for(let e=0;e<t.length;e++)n+=String.fromCharCode(t[e]);return n},enumerable:!0,writable:!0,configurable:!0}),typeof queueMicrotask!=`function`&&Object.defineProperty(globalThis,"queueMicrotask",{value:b,enumerable:!0,writable:!0,configurable:!0});function getGjsGlobal(){return globalThis}function getGioNamespace(){let e=getGjsGlobal().imports?.gi;if(!e)return null;let t=null;try{t=e.GioUnix??null}catch{}if(!t)try{t=e.Gio??null}catch{}return t}function getMonotonicTime(){try{let e=getGjsGlobal().imports?.gi?.GLib;if(e?.get_monotonic_time)return BigInt(e.get_monotonic_time())*1000n}catch{}return typeof performance?.now==`function`?BigInt(Math.round(performance.now()*1e6)):BigInt(Date.now())*1000000n}const pe=getMonotonicTime();function hrtime(e){let t=getMonotonicTime()-pe,n=Number(t/1000000000n),r=Number(t%1000000000n);if(e){let t=n-e[0],i=r-e[1];return i<0&&(t--,i+=1e9),[t,i]}return[n,r]}function hrtimeBigint(){return getMonotonicTime()-pe}let T;function probeUname(){if(T!==void 0)return T;T=null;try{let e=getGjsGlobal().imports?.gi?.GLib;if(!e)return T;let t=e.spawn_sync,n=e.SpawnFlags?.SEARCH_PATH;if(!t||n===void 0)return T;let[r,i]=t(null,[`uname`,`-sm`],null,n,null);if(!r||!i)return T;let o=new TextDecoder().decode(i).trim().split(/\s+/);if(o.length<2)return T;let s=mapSysname(o[0]),c=mapMachine(o[o.length-1]);if(!s||!c)return T;T={platform:s,arch:c}}catch{}return T}function detectGjsVersion(){try{let e=getGjsGlobal().imports?.system;if(e?.version!==void 0){let t=Number(e.version);return`${Math.floor(t/1e4)}.${Math.floor(t%1e4/100)}.${t%100}`}}catch{}}function detectNodeVersion(){if(typeof globalThis.process?.versions?.node==`string`)return globalThis.process.versions.node}function detectVersionInfo(){if(detectNodeVersion())return{version:globalThis.process.version,versions:{...globalThis.process.versions},title:globalThis.process?.title||`node`};let e=detectGjsVersion(),t={node:`20.0.0`};return e&&(t.gjs=e),{version:`v20.0.0`,versions:t,title:`gjs`}}function detectPpid(){let e=runtimeProcess();return e&&typeof e.ppid==`number`?e.ppid:hostPpid()??0}function runtimeProcess(){let e=globalThis.process;return typeof e?.release?.name==`string`?e:void 0}function onGjs(){try{return getGjsGlobal().imports?.gi!==void 0}catch{return!1}}function detectPlatform(){let e=runtimeProcess();if(e)return e.platform;if(onGjs()){let e=probeUname();if(e)return e.platform}return`linux`}function detectArch(){let e=runtimeProcess();if(e)return e.arch;if(onGjs()){let e=probeUname();if(e)return e.arch}return`x64`}function getPid(){let e=runtimeProcess();return e&&typeof e.pid==`number`?e.pid:hostPid()??0}function getEnvProxy(){if(typeof globalThis.process?.env==`object`)return globalThis.process.env;try{let e=getGjsGlobal().imports?.gi?.GLib;if(e)return new Proxy({},{get(t,n){if(typeof n==`string`)return e.getenv(n)??void 0},set(t,n,r){return typeof n==`string`?(e.setenv(n,String(r),!0),!0):!1},deleteProperty(t,n){return typeof n==`string`?(e.unsetenv(n),!0):!1},has(t,n){return typeof n==`string`?e.getenv(n)!==null:!1},ownKeys(t){return e.listenv()},getOwnPropertyDescriptor(t,n){if(typeof n!=`string`)return;let r=e.getenv(n);if(r!==null)return{configurable:!0,enumerable:!0,writable:!0,value:r}}})}catch{}return{}}function getArgv(){if(globalThis.process?.argv!==void 0)return globalThis.process.argv;try{let e=getGjsGlobal().imports?.system;if(e?.programArgs)return[`gjs`,e.programInvocationName||``,...e.programArgs]}catch{}return[`gjs`]}function getExecPath(){let e=globalThis.process;return!isGjsHost()&&typeof e?.execPath==`string`?e.execPath:hostExecPath()??`/usr/bin/gjs`}function isGjsHost(){try{return getGjsGlobal().imports?.gi!==void 0}catch{return!1}}function getCwd(){try{let e=getGjsGlobal().imports?.gi?.GLib;if(e?.get_current_dir)return e.get_current_dir()}catch{}return`/`}function chdir(e){let t=getGjsGlobal().imports?.gi?.GLib;try{if(t?.chdir){if(!t.file_test(e,16)){let t=Error(`ENOENT: no such file or directory, chdir '${e}'`);throw t.code=`ENOENT`,t.syscall=`chdir`,t.path=e,t}t.chdir(e);return}}catch(e){if(e&&typeof e==`object`&&e.code===`ENOENT`)throw e}if(!t){let t=globalThis.process;if(t&&typeof t.chdir==`function`){t.chdir(e);return}}throw Error(`process.chdir() is not supported in this environment`)}function getExecArgv(){if(!isGjsHost()){let e=globalThis.process;return Array.isArray(e?.execArgv)?e.execArgv:[]}try{let e=getGjsGlobal().imports?.gi?.GLib;if(e?.file_get_contents){let[,t]=e.file_get_contents(`/proc/self/cmdline`);if(t){let e=t instanceof Uint8Array?t:new Uint8Array(t),n=new TextDecoder().decode(e).split(`\0`).filter(e=>e.length>0),r=[];for(let e=1;e<n.length&&n[e].startsWith(`-`);e++)r.push(n[e]);return r}}}catch{}return[]}function exitProcess(e){let t=getGjsGlobal().imports,n=t?.gi?.GLib,r=t?.system,i=n?.idle_add,o=n?.SOURCE_REMOVE,s=n?.PRIORITY_DEFAULT,c=n?.MainContext;if(r?.exit&&i&&typeof s==`number`&&typeof o==`boolean`&&typeof c?.default==`function`){i(s,()=>(r.exit(e),o));let t=c.default();for(;;)t.iteration(!0)}try{r?.exit&&r.exit(e)}catch{}let l=globalThis.process;throw l&&typeof l.exit==`function`&&l.exit(e),Error(`process.exit(${e})`)}function isGjs(){return getGjsGlobal().imports?.gi?.GLib!==void 0}function classifyKillFailure(e){if(/No such process/i.test(e))return`ESRCH`;if(/Operation not permitted/i.test(e))return`EPERM`}function killPid(e,t){let n=getGjsGlobal().imports?.gi?.GLib;if(n){let r=typeof t==`number`?String(t):t||`SIGTERM`,i=[`kill`,r.startsWith(`SIG`)?`-${r.slice(3)}`:`-${r}`,`--`,String(e)],o=n.environ_setenv(n.get_environ(),`LC_ALL`,`C`,!0),[,,s,c]=n.spawn_sync(null,i,o,4,null),l=!1;try{l=n.spawn_check_wait_status(c)}catch{l=!1}if(l)return!0;let u=s?new TextDecoder().decode(s).trim():``,d=classifyKillFailure(u),f=Error(d?`kill ${d}`:`kill failed${u?`: ${u}`:``}`);throw d&&(f.code=d,f.errno=d===`ESRCH`?-3:-1,f.syscall=`kill`),f}let r=globalThis.process;if(r&&typeof r.kill==`function`)return r.kill(e,t);throw Error(`process.kill() is not supported in this environment`)}function memoryUsage(){let e=readProcessMemory();if(e)return{rss:e.resident,heapTotal:e.resident,heapUsed:e.resident,external:0,arrayBuffers:0};if(!isGjs()){let e=globalThis.process;if(e&&typeof e.memoryUsage==`function`)return e.memoryUsage()}return{rss:0,heapTotal:0,heapUsed:0,external:0,arrayBuffers:0}}function cpuUsage(e){if(!isGjs()){let t=globalThis.process;if(t&&typeof t.cpuUsage==`function`)return t.cpuUsage(e)}return{user:0,system:0}}function readUmask(){try{let e=getGjsGlobal().imports?.gi?.GLib;if(e){let[t,n]=e.file_get_contents(`/proc/self/status`);if(t){let e=/^Umask:\s*([0-7]+)/m.exec(new TextDecoder().decode(n));if(e)return parseInt(e[1],8)}}}catch{}return 18}const me={SIGHUP:1,SIGINT:2,SIGTERM:15},he=new Map;function resolveSignalAdd(){let e=getGjsGlobal().imports?.gi;if(!e)return null;for(let[t,n]of[[`GLibUnix`,`signal_add`],[`GLib`,`unix_signal_add`]])try{let r=e[t]?.[n];if(typeof r==`function`)return r}catch{}return null}function isDeliverableSignal(e){return typeof e==`string`&&e in me}function armSignal(e,t){if(he.has(e))return;let n=me[e],r=resolveSignalAdd(),i=getGjsGlobal().imports?.gi?.GLib;if(n===void 0||r===null||!i)return;let o=i.PRIORITY_DEFAULT,s=r(o,n,()=>(t(e),!0));he.set(e,s)}function disarmSignal(e){let t=he.get(e);if(t===void 0)return;he.delete(e);let n=getGjsGlobal().imports?.gi?.GLib;n&&typeof n.source_remove==`function`&&n.source_remove(t)}const ge=Symbol.for(`@gjsify/terminal-native:raw-mode-claims`),_e=globalThis,ve=_e[ge]??=new Map;function claimRawMode(e,t){ve.set(e,t)}function releaseRawMode(e){ve.delete(e)}function noteRawMode(e,t,n){let r=n(t);return t?r&&claimRawMode(e,()=>{n(!1)}):releaseRawMode(e),r}function restoreClaimedRawModes(){let e=[...ve.entries()];ve.clear();let t=0,n;for(let[,r]of e)try{r(),t+=1}catch(e){n??=e}if(n!==void 0)throw n;return t}const ye=loadOptionalNativeModule(`GjsifyTerminal`,[`Terminal`,`ResizeWatcher`]).module,be=ye;function callableModule(){if(!ye)return null;try{return ye.Terminal.is_tty(2),ye}catch{return null}}function nativeIsTty(e){try{return callableModule()?.Terminal.is_tty(e)??null}catch{return null}}function nativeTerminalSize(e){try{let[t,n,r]=callableModule()?.Terminal.get_size(e)??[!1,0,0];return!t||r<=0?null:{rows:n,columns:r}}catch{return null}}function nativeSetRawMode(e,t){try{return callableModule()?.Terminal.set_raw_mode(e,t)??null}catch{return null}}const E=Symbol(`kCapture`),xe=Symbol.for(`nodejs.rejection`);function onceWrapper(){let{target:e,type:t,listener:n}=this;return this.wrapperFn&&e.removeListener(t,this.wrapperFn),n.apply(e,Array.from(arguments))}function _onceWrap(e,t,n){let r={target:e,type:t,listener:n,wrapperFn:void 0},i=onceWrapper.bind(r);return r.wrapperFn=i,i.listener=n,i}function arrayClone(e){switch(e.length){case 0:return[];case 1:return[e[0]];case 2:return[e[0],e[1]];case 3:return[e[0],e[1],e[2]];default:return e.slice()}}function checkListener(e){if(typeof e!=`function`)throw TypeError(`The "listener" argument must be of type Function. Received type `+typeof e)}function validateNumber(e,t){if(typeof e!=`number`||e!==e)throw TypeError(`The "${t}" argument must be of type number. Received type ${typeof e}`)}function spliceOne(e,t){for(;t+1<e.length;t++)e[t]=e[t+1];e.pop()}var D=class EventEmitter{static defaultMaxListeners=10;static errorMonitor=Symbol(`events.errorMonitor`);static captureRejectionSymbol=xe;static _captureRejections=!1;static get captureRejections(){return EventEmitter._captureRejections}static set captureRejections(e){if(typeof e!=`boolean`)throw TypeError(`The "captureRejections" argument must be of type boolean.`);EventEmitter._captureRejections=e}_events;_eventsCount;_maxListeners;[E];constructor(e){this._events=Object.create(null),this._eventsCount=0,this._maxListeners=void 0,this[E]=e?.captureRejections??EventEmitter._captureRejections}setMaxListeners(e){if(validateNumber(e,`n`),e<0)throw RangeError(`The value of "n" is out of range. It must be a non-negative number. Received `+e);return this._maxListeners=e,this}getMaxListeners(){return this._maxListeners??EventEmitter.defaultMaxListeners}emit(e,...t){let n=this._events,r=e===`error`;if(n!==void 0)r&&n[EventEmitter.errorMonitor]!==void 0&&this.emit(EventEmitter.errorMonitor,...t),r&&=n.error===void 0;else if(!r)return!1;if(r){let e;if(e=t.length>0?t[0]:Error(`Unhandled error.`),e instanceof Error)throw e;let n=Error(`Unhandled error. (`+e+`)`);throw n.context=e,n}let i=n[e];if(i===void 0)return!1;if(typeof i==`function`){let n=i.apply(this,t);n!=null&&this[E]&&this._addCatch(n,e,t)}else{let n=arrayClone(i),r=n.length;for(let i=0;i<r;++i){let r=n[i].apply(this,t);r!=null&&this[E]&&this._addCatch(r,e,t)}}return!0}_addCatch(e,t,n){typeof e?.then==`function`&&e.then(void 0,e=>{let r=this[xe];if(typeof r==`function`)r.call(this,e,t,...n);else{let t=this[E];try{this[E]=!1,this.emit(`error`,e)}finally{this[E]=t}}})}addListener(e,t){return this._addListener(e,t,!1)}on(e,t){return this._addListener(e,t,!1)}prependListener(e,t){return this._addListener(e,t,!0)}_addListener(e,t,n){checkListener(t);let r=this._events;r===void 0?(r=this._events=Object.create(null),this._eventsCount=0):r.newListener!==void 0&&(this.emit(`newListener`,e,t.listener??t),r=this._events);let i=r[e];i===void 0?(r[e]=t,++this._eventsCount):typeof i==`function`?r[e]=n?[t,i]:[i,t]:n?i.unshift(t):i.push(t);let o=this.getMaxListeners();if(o>0){let t=typeof r[e]==`function`?1:r[e].length;if(t>o&&!r[e].warned){typeof r[e]!=`function`&&(r[e].warned=!0);let n=Error(`Possible EventEmitter memory leak detected. ${t} ${String(e)} listeners added to [${this.constructor.name}]. Use emitter.setMaxListeners() to increase limit`);n.name=`MaxListenersExceededWarning`,y.warn(n.message)}}return this}once(e,t){return checkListener(t),this.on(e,_onceWrap(this,e,t)),this}prependOnceListener(e,t){return checkListener(t),this.prependListener(e,_onceWrap(this,e,t)),this}removeListener(e,t){checkListener(t);let n=this._events;if(n===void 0)return this;let r=n[e];if(r===void 0)return this;if(r===t||r.listener===t)--this._eventsCount===0?this._events=Object.create(null):(delete n[e],n.removeListener&&this.emit(`removeListener`,e,r.listener??t));else if(typeof r!=`function`){let i=-1;for(let e=r.length-1;e>=0;e--)if(r[e]===t||r[e].listener===t){i=e;break}if(i<0)return this;i===0?r.shift():spliceOne(r,i),r.length===1&&(n[e]=r[0]),n.removeListener!==void 0&&this.emit(`removeListener`,e,t.listener??t)}return this}off(e,t){return this.removeListener(e,t)}removeAllListeners(e){let t=this._events;if(t===void 0)return this;if(t.removeListener===void 0)return arguments.length===0?(this._events=Object.create(null),this._eventsCount=0):t[e]!==void 0&&(--this._eventsCount===0?this._events=Object.create(null):delete t[e]),this;if(arguments.length===0){let e=Object.keys(t);for(let t=0;t<e.length;++t){let n=e[t];n!==`removeListener`&&this.removeAllListeners(n)}return this.removeAllListeners(`removeListener`),this._events=Object.create(null),this._eventsCount=0,this}let n=t[e];if(typeof n==`function`)this.removeListener(e,n);else if(n!==void 0)for(let t=n.length-1;t>=0;t--)this.removeListener(e,n[t]);return this}listeners(e){let t=this._events;if(t===void 0)return[];let n=t[e];return n===void 0?[]:typeof n==`function`?[n.listener??n]:unwrapListeners(n)}rawListeners(e){let t=this._events;if(t===void 0)return[];let n=t[e];return n===void 0?[]:typeof n==`function`?[n]:arrayClone(n)}listenerCount(e){let t=this._events;if(t===void 0)return 0;let n=t[e];return n===void 0?0:typeof n==`function`?1:n.length}eventNames(){return(this._eventsCount??0)>0?Reflect.ownKeys(this._events):[]}static once(e,t,n){return new Promise((r,i)=>{let o=n?.signal;if(o?.aborted){i(createAbortError$1(o));return}if(typeof e.addEventListener==`function`){let n=e,handler=(...e)=>{o&&o.removeEventListener(`abort`,abortHandler),r(e)},errorHandler=e=>{o&&o.removeEventListener(`abort`,abortHandler),n.removeEventListener(`error`,errorHandler),i(e)},abortHandler=()=>{n.removeEventListener(t,handler),n.removeEventListener(`error`,errorHandler),i(createAbortError$1(o))};n.addEventListener(t,handler,{once:!0}),t!==`error`&&n.addEventListener(`error`,errorHandler,{once:!0}),o&&o.addEventListener(`abort`,abortHandler,{once:!0});return}let s=e,eventHandler=(...e)=>{o&&o.removeEventListener(`abort`,abortHandler),errorHandler!==void 0&&s.removeListener(`error`,errorHandler),r(e)},errorHandler;t!==`error`&&(errorHandler=e=>{s.removeListener(t,eventHandler),o&&o.removeEventListener(`abort`,abortHandler),i(e)},s.once(`error`,errorHandler)),s.once(t,eventHandler);let abortHandler=()=>{s.removeListener(t,eventHandler),errorHandler&&s.removeListener(`error`,errorHandler),i(createAbortError$1(o))};o&&o.addEventListener(`abort`,abortHandler,{once:!0})})}static on(e,t,n){let r=n?.signal;if(r?.aborted)throw createAbortError$1(r);let i=n?.highWaterMark??2**53-1,o=n?.lowWaterMark??1;validateNumber(i,`highWaterMark`),validateNumber(o,`lowWaterMark`);let s=[],c=[],l=null,u=!1,d=!1,eventHandler=(...t)=>{if(c.length>0){let{resolve:e}=c.shift();e({value:t,done:!1})}else s.push(t),s.length>=i&&!d&&(d=!0,typeof e.pause==`function`&&e.pause())},errorHandler=e=>{if(l=e,c.length>0){let{reject:t}=c.shift();t(e)}f.return()},abortHandler=()=>{errorHandler(createAbortError$1(r))};e.on(t,eventHandler),t!==`error`&&e.on(`error`,errorHandler),r&&r.addEventListener(`abort`,abortHandler,{once:!0});let cleanup=()=>{e.removeListener(t,eventHandler),e.removeListener(`error`,errorHandler),r&&r.removeEventListener(`abort`,abortHandler),u=!0;for(let{resolve:e}of c)e({value:void 0,done:!0});c.length=0,s.length=0},f={next(){if(s.length>0){let t=s.shift();return d&&s.length<o&&(d=!1,typeof e.resume==`function`&&e.resume()),Promise.resolve({value:t,done:!1})}if(l){let e=Promise.reject(l);return l=null,e}return u?Promise.resolve({value:void 0,done:!0}):new Promise((e,t)=>{c.push({resolve:e,reject:t})})},return(){return cleanup(),Promise.resolve({value:void 0,done:!0})},throw(e){return u||(l=e,cleanup()),Promise.reject(e)},[Symbol.asyncIterator](){return this}};return f}static listenerCount(e,t){return e.listenerCount(t)}static getEventListeners(e,t){return typeof e.listeners==`function`?e.listeners(t):[]}static setMaxListeners(e,...t){if(validateNumber(e,`n`),e<0)throw RangeError(`The value of "n" is out of range.`);if(t.length===0)EventEmitter.defaultMaxListeners=e;else for(let n of t)typeof n.setMaxListeners==`function`&&n.setMaxListeners(e)}static getMaxListeners(e){return typeof e.getMaxListeners==`function`?e.getMaxListeners():EventEmitter.defaultMaxListeners}static addAbortListener(e,t){e.aborted&&Promise.resolve().then(()=>t());let handler=()=>t();return e.addEventListener(`abort`,handler,{once:!0}),{[Symbol.dispose](){e.removeEventListener(`abort`,handler)}}}};D.EventEmitter=D;for(let e of[`setMaxListeners`,`getMaxListeners`,`emit`,`addListener`,`on`,`prependListener`,`once`,`prependOnceListener`,`removeListener`,`off`,`removeAllListeners`,`listeners`,`rawListeners`,`listenerCount`,`eventNames`]){let t=D.prototype[e];typeof t==`function`&&Object.defineProperty(D.prototype,e,{enumerable:!0,configurable:!0,writable:!0,value:t})}Object.defineProperty(D.prototype,"_events",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(D.prototype,"_eventsCount",{enumerable:!0,configurable:!0,writable:!0,value:0}),Object.defineProperty(D.prototype,"_maxListeners",{enumerable:!0,configurable:!0,writable:!0,value:void 0});function unwrapListeners(e){let t=Array.from({length:e.length});for(let n=0;n<t.length;++n)t[n]=e[n].listener??e[n];return t}function createAbortError$1(e){let t=Error(`The operation was aborted`);return t.name=`AbortError`,t.code=`ABORT_ERR`,e?.reason&&(t.cause=e.reason),t}__name(createAbortError$1,`createAbortError`);const O=makeCallable(D);O.EventEmitter=O,O.captureRejectionSymbol,O.errorMonitor,O.defaultMaxListeners,O.setMaxListeners,O.getMaxListeners,O.once,O.on,O.getEventListeners,O.listenerCount,O.addAbortListener;function normalizeAndValidateEncoding(e){return e&&checkEncoding(e),normalizeEncoding(e)}function utf8DecodeMaximalSubpart(e,t,n){let r=``,i=t;for(;i<n;){let t=e[i];if(t<=127){r+=String.fromCharCode(t),i++;continue}if(t>=194&&t<=223){i+1<n&&e[i+1]>=128&&e[i+1]<=191?(r+=String.fromCharCode((t&31)<<6|e[i+1]&63),i+=2):(r+=`�`,i++);continue}if(t>=224&&t<=239){let o,s;if(t===224?(o=160,s=191):t===237?(o=128,s=159):(o=128,s=191),i+1>=n){r+=`�`,i++;continue}let c=e[i+1];if(c<o||c>s){r+=`�`,i++;continue}if(i+2>=n){r+=`�`,i+=2;continue}let l=e[i+2];if(l<128||l>191){r+=`�`,i+=2;continue}let u=(t&15)<<12|(c&63)<<6|l&63;r+=String.fromCharCode(u),i+=3;continue}if(t>=240&&t<=244){let o,s;if(t===240?(o=144,s=191):t===244?(o=128,s=143):(o=128,s=191),i+1>=n){r+=`�`,i++;continue}let c=e[i+1];if(c<o||c>s){r+=`�`,i++;continue}if(i+2>=n){r+=`�`,i+=2;continue}let l=e[i+2];if(l<128||l>191){r+=`�`,i+=2;continue}if(i+3>=n){r+=`�`,i+=3;continue}let u=e[i+3];if(u<128||u>191){r+=`�`,i+=3;continue}let d=(t&7)<<18|(c&63)<<12|(l&63)<<6|u&63;r+=String.fromCharCode(55296+(d-65536>>10),56320+(d-65536&1023)),i+=4;continue}r+=`�`,i++}return r}function utf8CharLength(e){return e&128?e>=194&&e<=223?2:e>=224&&e<=239?3:e>=240&&e<=244?4:0:1}function isValidContinuation(e,t,n,r){if(n===1){if(t===3)return e===224?r>=160&&r<=191:e===237?r>=128&&r<=159:r>=128&&r<=191;if(t===4)return e===240?r>=144&&r<=191:e===244?r>=128&&r<=143:r>=128&&r<=191}return r>=128&&r<=191}const Se=function StringDecoder(e){this.encoding=normalizeAndValidateEncoding(e),this._lastNeed=0,this._lastTotal=0,this._lastLeadByte=0,this.encoding===`utf8`||this.encoding===`utf16le`?this._lastChar=new Uint8Array(4):this.encoding===`base64`?this._lastChar=new Uint8Array(3):this._lastChar=new Uint8Array};Se.prototype.write=function write(e){if(e.length===0)return``;switch(this.encoding){case`utf8`:return writeUtf8(this,e);case`utf16le`:return writeUtf16le(this,e);case`base64`:return writeBase64(this,e);case`ascii`:return decodeAscii(e);case`latin1`:return decodeLatin1(e);case`hex`:return decodeHex(e);default:return decodeAscii(e)}},Se.prototype.end=function end(e){let t=``;if(e&&e.length>0&&(t=this.write(e)),this.encoding===`utf8`&&this._lastNeed>0)t+=`�`,this._lastNeed=0,this._lastTotal=0;else if(this.encoding===`utf16le`&&this._lastNeed>0){let e=this._lastTotal-this._lastNeed;for(let n=0;n+1<e;n+=2)t+=String.fromCharCode(this._lastChar[n]|this._lastChar[n+1]<<8);this._lastNeed=0,this._lastTotal=0}else if(this.encoding===`base64`&&this._lastNeed>0){let e=this._lastChar.subarray(0,this._lastTotal-this._lastNeed);t+=base64Encode(e),this._lastNeed=0,this._lastTotal=0}return t};function writeUtf8(e,t){let n=0,r=``;if(e._lastNeed>0){for(;n<t.length&&e._lastNeed>0;){let i=t[n],o=e._lastTotal-e._lastNeed;if(isValidContinuation(e._lastLeadByte,e._lastTotal,o,i))e._lastChar[o]=i,e._lastNeed--,n++;else{r+=`�`,e._lastNeed=0,e._lastTotal=0,e._lastLeadByte=0;break}}if(e._lastNeed===0&&e._lastTotal>0&&(r+=utf8DecodeMaximalSubpart(e._lastChar,0,e._lastTotal),e._lastTotal=0,e._lastLeadByte=0),e._lastNeed>0)return r}let i=t.length;for(let r=0;r<Math.min(4,t.length-n);r++){let o=t.length-1-r;if(o<n)break;let s=t[o];if((s&192)!=128){let n=utf8CharLength(s);if(n>0&&s>=128){let r=t.length-o;if(r<n){let c=!0;for(let e=1;e<r;e++)if(!isValidContinuation(s,n,e,t[o+e])){c=!1;break}if(c){i=o;for(let n=0;n<r;n++)e._lastChar[n]=t[o+n];e._lastNeed=n-r,e._lastTotal=n,e._lastLeadByte=s}}}break}}return i>n&&(r+=utf8DecodeMaximalSubpart(t,n,i)),r}function writeUtf16le(e,t){let n=``,r=0;if(e._lastNeed>0){let i=e._lastTotal-e._lastNeed,o=Math.min(e._lastNeed,t.length);for(let n=0;n<o;n++)e._lastChar[i+n]=t[n];if(e._lastNeed-=o,r=o,e._lastNeed>0)return``;let s=e._lastTotal,c=0;for(;c+1<s;){let i=e._lastChar[c]|e._lastChar[c+1]<<8;if(c+=2,i>=55296&&i<=56319){if(c+1<s){let t=e._lastChar[c]|e._lastChar[c+1]<<8;if(t>=56320&&t<=57343){n+=String.fromCharCode(i,t),c+=2;continue}}if(r+1<t.length){let e=t[r]|t[r+1]<<8;if(e>=56320&&e<=57343){n+=String.fromCharCode(i,e),r+=2;continue}}else if(r>=t.length)return e._lastChar[0]=e._lastChar[c-2],e._lastChar[1]=e._lastChar[c-1],e._lastNeed=2,e._lastTotal=4,n}n+=String.fromCharCode(i)}e._lastTotal=0}for(;r+1<t.length;){let i=t[r]|t[r+1]<<8;if(r+=2,i>=55296&&i<=56319)if(r+1<t.length){let e=t[r]|t[r+1]<<8;if(e>=56320&&e<=57343){n+=String.fromCharCode(i,e),r+=2;continue}}else if(r<t.length)return n+=String.fromCharCode(i),e._lastChar[0]=t[r],e._lastNeed=1,e._lastTotal=2,n;else return e._lastChar[0]=t[r-2],e._lastChar[1]=t[r-1],e._lastNeed=2,e._lastTotal=4,n;n+=String.fromCharCode(i)}return r<t.length&&(e._lastChar[0]=t[r],e._lastNeed=1,e._lastTotal=2),n}function writeBase64(e,t){let n=0;if(e._lastNeed>0){let r=Math.min(e._lastNeed,t.length);for(let n=0;n<r;n++)e._lastChar[e._lastTotal-e._lastNeed+n]=t[n],e._lastNeed--;if(n=r,e._lastNeed>0)return``}let r=t.length-n,i=r-r%3,o=``;e._lastTotal>0&&e._lastNeed===0&&(o+=base64Encode(e._lastChar.subarray(0,e._lastTotal)),e._lastTotal=0),i>0&&(o+=base64Encode(t.subarray(n,n+i)));let s=r-i;if(s>0){for(let r=0;r<s;r++)e._lastChar[r]=t[n+i+r];e._lastNeed=3-s,e._lastTotal=3}return o}function decodeAscii(e){let t=``;for(let n=0;n<e.length;n++)t+=String.fromCharCode(e[n]&127);return t}function decodeLatin1(e){let t=``;for(let n=0;n<e.length;n++)t+=String.fromCharCode(e[n]);return t}function decodeHex(e){let t=``;for(let n=0;n<e.length;n++)t+=e[n].toString(16).padStart(2,`0`);return t}const Ce=new TextEncoder;var ProcessWriteStream=class extends O{fd;writable=!0;_outGio=null;constructor(e){super(),this.fd=e;let t=getGioNamespace();if(t){let e=t.UnixOutputStream??t.OutputStream;if(e)try{this._outGio=e.new(this.fd,!1)}catch{}}}write(e){if(this._outGio)try{let t=typeof e==`string`?Ce.encode(e):e;return this._outGio.write_all(t,null),!0}catch{}return this.fd===2?y.error(e):y.log(e),!0}get isTTY(){let e=nativeIsTty(this.fd);if(e!==null)return e;try{let e=getGjsGlobal().imports?.gi?.GLib;if(e)return!!e.log_writer_supports_color(this.fd)}catch{}return!1}get columns(){let e=nativeTerminalSize(this.fd);if(e)return e.columns;try{let e=getGjsGlobal().imports?.gi?.GLib;if(e){let t=parseInt(e.getenv(`COLUMNS`)??`0`,10);if(t>0)return t}}catch{}return 80}end(){}destroy(){}get rows(){let e=nativeTerminalSize(this.fd);if(e)return e.rows;try{let e=getGjsGlobal().imports?.gi?.GLib;if(e){let t=parseInt(e.getenv(`LINES`)??`0`,10);if(t>0)return t}}catch{}return 24}},ProcessReadStream=class extends O{fd;isRaw=!1;_gio=null;_stdinGio=null;_reading=!1;_flowing=!1;_mainLoopHeld=!1;_pendingRead=!1;_decoder=null;constructor(e){super(),this.fd=e,this._gio=getGioNamespace()}get isTTY(){return nativeIsTty(this.fd)??!1}setRawMode(e){return noteRawMode(this.fd,e,e=>nativeSetRawMode(this.fd,e)===!0)?(this.isRaw=e,this):(noteRawMode(this.fd,e,e=>this._setRawModeViaStty(e)),this.isRaw=e,this)}_setRawModeViaStty(e){try{let t=globalThis.imports?.gi,n=t?.Gio??t?.Gio;if(!n)return!1;let r=n.SubprocessFlags?.STDIN_INHERIT??2,i=e?[`stty`,`-icanon`,`-echo`,`-icrnl`,`-isig`,`min`,`1`,`time`,`0`]:[`stty`,`icanon`,`echo`,`icrnl`,`isig`],o=new n.SubprocessLauncher({flags:r}).spawnv(i);return o.wait(null),o.get_successful()}catch{return!1}}setEncoding(e){return this._decoder=new Se(e),this}_pushData(e){if(this._decoder){let t=this._decoder.write(e);t.length>0&&this.emit(`data`,t)}else this.emit(`data`,e)}on(e,t){let n=e===`data`&&this.listenerCount(`data`)===0;return super.on(e,t),n&&e===`data`&&this.resume(),this}addListener(e,t){return this.on(e,t)}once(e,t){return super.once(e,t),this}removeListener(e,t){return super.removeListener(e,t),e===`data`&&this.listenerCount(`data`)===0&&this.pause(),this}off(e,t){return this.removeListener(e,t)}removeAllListeners(e){let t=e===void 0||e===`data`?this.listenerCount(`data`)>0:!1;return super.removeAllListeners(e),t&&this.listenerCount(`data`)===0&&this.pause(),this}resume(){return this._flowing=!0,this._gio&&this.fd===0&&!this._reading&&this._startReading(),this}pause(){if(this._flowing=!1,this._reading=!1,this._mainLoopHeld){this._mainLoopHeld=!1;let e=globalThis.imports?.gi,t=e?.GLib??e?.GLib;t?.idle_add?t.idle_add(300,()=>(this._mainLoopHeld||quitMainLoop(),!1)):quitMainLoop()}return this}read(){return null}_startReading(){if(!this._gio||this._reading)return;if(this._pendingRead){this._reading=!0,this._mainLoopHeld||(this._mainLoopHeld=!0,ensureMainLoop());return}if(this._reading=!0,this._mainLoopHeld||(this._mainLoopHeld=!0,ensureMainLoop()),!this._stdinGio){let e=this._gio.UnixInputStream??this._gio.InputStream;if(!e){this._reading=!1;return}try{this._stdinGio=e.new(this.fd,!1)}catch{this._reading=!1;return}}let loop=()=>{if(!this._reading){this._pendingRead=!1;return}this._pendingRead=!0,this._stdinGio.read_bytes_async(4096,0,null,(e,t)=>{this._pendingRead=!1;try{let n=e.read_bytes_finish(t)?.get_data?.()??null;if(n&&n.byteLength>0)this._pushData(Buffer.from(n));else if(n!==null&&n.byteLength===0){if(this._reading=!1,this._decoder){let e=this._decoder.end();e.length>0&&this.emit(`data`,e)}this.emit(`end`);return}}catch{this._reading=!1;return}this._reading&&loop()})};loop()}};const we=Date.now();function defineLazy(e,t,n){Object.defineProperty(e,t,{configurable:!0,enumerable:!0,get(){let r=n();return Object.defineProperty(e,t,{value:r,configurable:!0,enumerable:!0,writable:!1}),r}})}var Process=class extends O{platform;arch;env;argv;argv0;execPath;pid;ppid;version;versions;title;execArgv;config;exitCode;constructor(){super(),this.on(`exit`,()=>{try{restoreClaimedRawModes()}catch(e){y.error(`@gjsify/process: raw mode could not be restored:`,e)}}),defineLazy(this,`platform`,detectPlatform),defineLazy(this,`arch`,detectArch),this.env=getEnvProxy(),this.argv=getArgv(),this.argv0=this.argv[0]||`gjs`,this.execPath=getExecPath(),this.execArgv=getExecArgv(),this.config=globalThis.process?.config??{target_defaults:{},variables:{}},this.pid=getPid(),this.ppid=detectPpid();let e=detectVersionInfo();this.version=e.version,this.versions=e.versions,this.title=e.title,this.on(`newListener`,e=>{isDeliverableSignal(e)&&armSignal(e,e=>this.emit(e,e))}),this.on(`removeListener`,e=>{isDeliverableSignal(e)&&this.listenerCount(e)===0&&disarmSignal(e)})}cwd(){return getCwd()}chdir(e){chdir(e)}kill(e,t){return killPid(e,t)}exit(e){return this.exitCode=e??this.exitCode??0,this.emit(`exit`,this.exitCode),exitProcess(this.exitCode)}nextTick(e,...t){typeof queueMicrotask==`function`?queueMicrotask(()=>e(...t)):Promise.resolve().then(()=>e(...t))}hrtime(e){return hrtime(e)}uptime(){return(Date.now()-we)/1e3}memoryUsage(){return memoryUsage()}cpuUsage(e){return cpuUsage(e)}stdout=new ProcessWriteStream(1);stderr=new ProcessWriteStream(2);stdin=new ProcessReadStream(0);abort(){this.exit(1)}umask(e){let t=readUmask();return e!==void 0&&!this._umaskWarned&&(this._umaskWarned=!0,this.emitWarning(`process.umask(0${e.toString(8)}) cannot change the file-creation mask under GJS — there is no umask(2) binding, so the mask is UNCHANGED. Pass an explicit \`mode\` to open/mkdir/writeFile instead; the kernel applies it atomically at creation.`,`UnsupportedWarning`)),t}_umaskWarned=!1;emitWarning(e,t){y.warn(typeof e==`string`?`(${t||`Warning`}): ${e}`:e.message)}};Process.prototype.hrtime.bigint=function(){return hrtimeBigint()};const k=new Process;if(be)try{let e=new be.ResizeWatcher;e.connect(`resized`,(e,t,n)=>{k.stdout.emit(`resize`),k.stderr.emit(`resize`)}),e.start()}catch{}k.platform,k.arch,k.env,k.argv,k.argv0,k.execPath,k.pid,k.ppid,k.version,k.versions,k.cwd.bind(k),k.chdir.bind(k),k.exit.bind(k),k.nextTick.bind(k),Object.assign(k.hrtime.bind(k),{bigint:hrtimeBigint}),k.uptime.bind(k),k.memoryUsage.bind(k),k.cpuUsage.bind(k),k.kill.bind(k),k.abort.bind(k),k.umask.bind(k),k.emitWarning.bind(k),k.execArgv,k.config,k.stdout,k.stderr,k.stdin,typeof Promise.withResolvers!=`function`&&(Promise.withResolvers=function(){let e,t;return{promise:new Promise((n,r)=>{e=n,t=r}),resolve:e,reject:t}}),initErrorV8Methods(Error),`global`in globalThis||Object.defineProperty(globalThis,"global",{value:globalThis,writable:!1,enumerable:!1,configurable:!0}),Object.defineProperty(globalThis,"process",{value:k,enumerable:!1,writable:!0,configurable:!0}),typeof globalThis.structuredClone!=`function`&&Object.defineProperty(globalThis,"structuredClone",{value:structuredClone$1,enumerable:!0,writable:!0,configurable:!0});function getGLib(){return globalThis.imports?.gi?.GLib}const Te=getGLib()!==void 0;function reportTimerThrow(e,t){try{e.log_default_handler(`gjsify-timers`,e.LogLevelFlags.LEVEL_WARNING,`Uncaught exception in a timer callback: ${String(t)}\n${t?.stack??``}`,null)}catch{}}var GjsifyTimeout=class{_id=null;_refed=!0;_callback;_delay;_args;_repeat;constructor(e,t,n,r){this._callback=e,this._delay=t,this._args=n,this._repeat=r,this._schedule()}_schedule(){let e=getGLib();if(!e)return;let t=e.timeout_add.bind(e);this._id=t(e.PRIORITY_DEFAULT,this._delay,()=>{try{this._callback.apply(globalThis,this._args)}catch(t){reportTimerThrow(e,t),globalThis.__gjsify_worker_context?.crash(t)}return this._repeat?e.SOURCE_CONTINUE:(this._id=null,e.SOURCE_REMOVE)})}unref(){return this._refed=!1,this}ref(){return this._refed=!0,this}hasRef(){return this._refed}refresh(){return this._cancel(),this._schedule(),this}_cancel(){this._id!==null&&(getGLib()?.Source.remove(this._id),this._id=null)}close(){return this._cancel(),this}[Symbol.toPrimitive](){return this._id}[Symbol.dispose](){this._cancel()}};function removeById(e){e instanceof GjsifyTimeout||typeof e==`object`&&e&&`_cancel`in e?e._cancel():typeof e==`object`&&e&&typeof e.close==`function`?e.close():typeof e==`number`&&getGLib()?.Source.remove(e)}if(Te){let setT=(e,t=0,...n)=>new GjsifyTimeout(e,Math.max(0,t|0),n,!1),setI=(e,t=0,...n)=>new GjsifyTimeout(e,Math.max(0,t|0),n,!0),e=globalThis;e.setTimeout=setT,e.clearTimeout=removeById,e.setInterval=setI,e.clearInterval=removeById}function setImmediate(e,...t){return setTimeout(e,0,...t)}function clearImmediate(e){clearTimeout(e)}`setImmediate`in globalThis||Object.defineProperty(globalThis,"setImmediate",{value:setImmediate,enumerable:!0,writable:!0,configurable:!0}),`clearImmediate`in globalThis||Object.defineProperty(globalThis,"clearImmediate",{value:clearImmediate,enumerable:!0,writable:!0,configurable:!0});var Ee=Object.defineProperty,__exportAll=(e,t)=>{let n={};for(var r in e)Ee(n,r,{get:e[r],enumerable:!0});return t||Ee(n,Symbol.toStringTag,{value:`Module`}),n};function assertPath(e){if(typeof e!=`string`)throw TypeError(`The "path" argument must be of type string. Received type `+typeof e)}function isPosixPathSeparator(e){return e===47}function isPathSeparator(e){return e===47||e===92}function isWindowsDeviceRoot(e){return e>=65&&e<=90||e>=97&&e<=122}function normalizeString(e,t,n,r){let i=``,o=0,s=-1,c=0,l;for(let u=0;u<=e.length;++u){if(u<e.length)l=e.charCodeAt(u);else if(r(l))break;else l=47;if(r(l)){if(!(s===u-1||c===1))if(s!==u-1&&c===2){if(i.length<2||o!==2||i.charCodeAt(i.length-1)!==46||i.charCodeAt(i.length-2)!==46){if(i.length>2){let e=i.lastIndexOf(n);e===-1?(i=``,o=0):(i=i.slice(0,e),o=i.length-1-i.lastIndexOf(n)),s=u,c=0;continue}else if(i.length===2||i.length===1){i=``,o=0,s=u,c=0;continue}}t&&(i.length>0?i+=`${n}..`:i=`..`,o=2)}else i.length>0?i+=n+e.slice(s+1,u):i=e.slice(s+1,u),o=u-s-1;s=u,c=0}else l===46&&c!==-1?++c:c=-1}return i}function _format(e,t){if(typeof t!=`object`||!t)throw TypeError(`The "pathObject" argument must be of type Object. Received type `+typeof t);let n=t,r=n.dir||n.root,i=n.base||(n.name||``)+formatExt(n.ext);return r?r===n.root?r+i:r+e+i:i}function formatExt(e){return e?`${e[0]===`.`?``:`.`}${e}`:``}var De=__exportAll({basename:()=>basename$1,delimiter:()=>`:`,dirname:()=>dirname$1,extname:()=>extname$1,format:()=>format$1,isAbsolute:()=>isAbsolute$1,join:()=>join$1,normalize:()=>normalize$1,parse:()=>parse$1,relative:()=>relative$1,resolve:()=>resolve$1,sep:()=>`/`,toNamespacedPath:()=>toNamespacedPath$1});function posixCwd(){if(typeof globalThis.process?.cwd==`function`)return globalThis.process.cwd();try{let e=globalThis.imports?.gi?.GLib;if(e?.get_current_dir)return e.get_current_dir()}catch{}return`/`}function resolve$1(...e){let t=``,n=!1;for(let r=e.length-1;r>=-1&&!n;r--){let i;if(r>=0){if(i=e[r],assertPath(i),i.length===0)continue}else i=posixCwd();t=`${i}/${t}`,n=i.charCodeAt(0)===47}return t=normalizeString(t,!n,`/`,isPosixPathSeparator),n?t.length>0?`/${t}`:`/`:t.length>0?t:`.`}__name(resolve$1,`resolve`);function normalize$1(e){if(assertPath(e),e.length===0)return`.`;let t=e.charCodeAt(0)===47,n=e.charCodeAt(e.length-1)===47,r=normalizeString(e,!t,`/`,isPosixPathSeparator);return r.length===0&&!t&&(r=`.`),r.length>0&&n&&(r+=`/`),t?`/${r}`:r}__name(normalize$1,`normalize`);function isAbsolute$1(e){return assertPath(e),e.length>0&&e.charCodeAt(0)===47}__name(isAbsolute$1,`isAbsolute`);function join$1(...e){if(e.length===0)return`.`;let t;for(let n=0;n<e.length;++n){let r=e[n];assertPath(r),r.length>0&&(t===void 0?t=r:t+=`/${r}`)}return t===void 0?`.`:normalize$1(t)}__name(join$1,`join`);function relative$1(e,t){if(assertPath(e),assertPath(t),e===t||(e=resolve$1(e),t=resolve$1(t),e===t))return``;let n=e.length,r=n-1,i=1,o=t.length-i,s=r<o?r:o,c=-1,l=0;for(;l<=s;++l){if(l===s){if(o>s){if(t.charCodeAt(i+l)===47)return t.slice(i+l+1);if(l===0)return t.slice(i+l)}else r>s&&(e.charCodeAt(1+l)===47?c=l:l===0&&(c=0));break}let n=e.charCodeAt(1+l);if(n!==t.charCodeAt(i+l))break;n===47&&(c=l)}let u=``;for(l=1+c+1;l<=n;++l)(l===n||e.charCodeAt(l)===47)&&(u.length===0?u+=`..`:u+=`/..`);return u.length>0?u+t.slice(i+c):(i+=c,t.charCodeAt(i)===47&&++i,t.slice(i))}__name(relative$1,`relative`);function toNamespacedPath$1(e){return e}__name(toNamespacedPath$1,`toNamespacedPath`);function dirname$1(e){if(assertPath(e),e.length===0)return`.`;let t=e.charCodeAt(0)===47,n=-1,r=!0;for(let t=e.length-1;t>=1;--t)if(e.charCodeAt(t)===47){if(!r){n=t;break}}else r=!1;return n===-1?t?`/`:`.`:t&&n===1?`//`:e.slice(0,n)}__name(dirname$1,`dirname`);function basename$1(e,t){t!==void 0&&assertPath(t),assertPath(e);let n=0,r=-1,i=!0;if(t!==void 0&&t.length>0&&t.length<=e.length){if(t.length===e.length&&t===e)return``;let o=t.length-1,s=-1;for(let c=e.length-1;c>=0;--c){let l=e.charCodeAt(c);if(l===47){if(!i){n=c+1;break}}else s===-1&&(i=!1,s=c+1),o>=0&&(l===t.charCodeAt(o)?--o===-1&&(r=c):(o=-1,r=s))}return n===r?r=s:r===-1&&(r=e.length),e.slice(n,r)}else{for(let t=e.length-1;t>=0;--t)if(e.charCodeAt(t)===47){if(!i){n=t+1;break}}else r===-1&&(i=!1,r=t+1);return r===-1?``:e.slice(n,r)}}__name(basename$1,`basename`);function extname$1(e){assertPath(e);let t=-1,n=0,r=-1,i=!0,o=0;for(let s=e.length-1;s>=0;--s){let c=e.charCodeAt(s);if(c===47){if(!i){n=s+1;break}continue}r===-1&&(i=!1,r=s+1),c===46?t===-1?t=s:o!==1&&(o=1):t!==-1&&(o=-1)}return t===-1||r===-1||o===0||o===1&&t===r-1&&t===n+1?``:e.slice(t,r)}__name(extname$1,`extname`);function format$1(e){if(typeof e!=`object`||!e)throw TypeError(`The "pathObject" argument must be of type Object. Received type `+typeof e);return _format(`/`,e)}__name(format$1,`format`);function parse$1(e){assertPath(e);let t={root:``,dir:``,base:``,ext:``,name:``};if(e.length===0)return t;let n=e.charCodeAt(0)===47,r;n?(t.root=`/`,r=1):r=0;let i=-1,o=0,s=-1,c=!0,l=e.length-1,u=0;for(;l>=r;--l){let t=e.charCodeAt(l);if(t===47){if(!c){o=l+1;break}continue}s===-1&&(c=!1,s=l+1),t===46?i===-1?i=l:u!==1&&(u=1):i!==-1&&(u=-1)}return i===-1||s===-1||u===0||u===1&&i===s-1&&i===o+1?s!==-1&&(o===0&&n?t.base=t.name=e.slice(1,s):t.base=t.name=e.slice(o,s)):(o===0&&n?(t.name=e.slice(1,i),t.base=e.slice(1,s)):(t.name=e.slice(o,i),t.base=e.slice(o,s)),t.ext=e.slice(i,s)),o>0?t.dir=e.slice(0,o-1):n&&(t.dir=`/`),t}__name(parse$1,`parse`);var Oe=__exportAll({basename:()=>basename,delimiter:()=>`;`,dirname:()=>dirname,extname:()=>extname,format:()=>format,isAbsolute:()=>isAbsolute,join:()=>join,normalize:()=>normalize,parse:()=>parse,relative:()=>relative,resolve:()=>resolve,sep:()=>`\\`,toNamespacedPath:()=>toNamespacedPath});function cwd(){return typeof globalThis.process?.cwd==`function`?globalThis.process.cwd():`/`}function resolve(...e){let t=``,n=``,r=!1;for(let i=e.length-1;i>=-1;i--){let o;if(i>=0){if(o=e[i],assertPath(o),o.length===0)continue}else t.length===0?o=cwd():(o=globalThis.process?.env?.[`=${t}`]||cwd(),o.slice(0,2).toLowerCase()!==t.toLowerCase()&&o.charCodeAt(2)===92&&(o=`${t}\\`));let s=o.length,c=0,l=``,u=!1,d=o.charCodeAt(0);if(s===1)isPathSeparator(d)&&(c=1,u=!0);else if(isPathSeparator(d))if(u=!0,isPathSeparator(o.charCodeAt(1))){let e=matchUncRoot(o);e&&(l=e.device,c=e.rootEnd)}else c=1;else isWindowsDeviceRoot(d)&&o.charCodeAt(1)===58&&(l=o.slice(0,2),c=2,s>2&&isPathSeparator(o.charCodeAt(2))&&(u=!0,c=3));if(l.length>0)if(t.length>0){if(l.toLowerCase()!==t.toLowerCase())continue}else t=l;if(r){if(t.length>0)break}else if(n=`${o.slice(c)}\\${n}`,r=u,u&&t.length>0)break}return n=normalizeString(n,!r,`\\`,isPathSeparator),r?`${t}\\${n}`:`${t}${n}`||`.`}function matchUncRoot(e){let t=e.length,n=2,r=n;for(;n<t&&!isPathSeparator(e.charCodeAt(n));)n++;if(n>=t||n===r)return;let i=e.slice(r,n);for(r=n;n<t&&isPathSeparator(e.charCodeAt(n));)n++;if(!(n>=t||n===r)){for(r=n;n<t&&!isPathSeparator(e.charCodeAt(n));)n++;return i===`.`||i===`?`?{device:`\\\\${i}`,rootEnd:4,shareOnly:!1}:{device:`\\\\${i}\\${e.slice(r,n)}`,rootEnd:n,shareOnly:n===t}}}function normalize(e){assertPath(e);let t=e.length;if(t===0)return`.`;let n=e.charCodeAt(0);if(t===1)return isPosixPathSeparator(n)?`\\`:e;let r=0,i,o=!1;if(isPathSeparator(n))if(o=!0,isPathSeparator(e.charCodeAt(1))){let t=matchUncRoot(e);if(t?.shareOnly)return`${t.device}\\`;if(t&&(i=t.device,r=t.rootEnd,i.length===3)){let t=e.slice(4,e.indexOf(`:`)+1);isWindowsReservedName(t,t.length-1)&&(i=`\\\\?\\${t}`,r=4+t.length)}}else r=1;else{let s=e.indexOf(`:`);s>0&&(isWindowsDeviceRoot(n)&&s===1?(i=e.slice(0,2),r=2,t>2&&isPathSeparator(e.charCodeAt(2))&&(o=!0,r=3)):isWindowsReservedName(e,s)&&(i=e.slice(0,s+1),r=s+1))}let s=r<t?normalizeString(e.slice(r),!o,`\\`,isPathSeparator):``;if(s.length===0&&!o&&(s=`.`),s.length>0&&isPathSeparator(e.charCodeAt(t-1))&&(s+=`\\`),!o&&i===void 0&&e.includes(`:`)){if(s.length>=2&&isWindowsDeviceRoot(s.charCodeAt(0))&&s.charCodeAt(1)===58)return`.\\${s}`;let n=e.indexOf(`:`);do if(n===t-1||isPathSeparator(e.charCodeAt(n+1)))return`.\\${s}`;while((n=e.indexOf(`:`,n+1))!==-1)}return isWindowsReservedName(e,e.indexOf(`:`))?`.\\${i??``}${s}`:i===void 0?o?`\\${s}`:s:o?`${i}\\${s}`:`${i}${s}`}const ke=new Set([`CON`,`PRN`,`AUX`,`NUL`,...[`1`,`2`,`3`,`4`,`5`,`6`,`7`,`8`,`9`,`¹`,`²`,`³`].flatMap(e=>[`COM${e}`,`LPT${e}`])]);function isWindowsReservedName(e,t){return ke.has(e.slice(0,t).toUpperCase())}function isAbsolute(e){assertPath(e);let t=e.length;if(t===0)return!1;let n=e.charCodeAt(0);return!!(isPathSeparator(n)||isWindowsDeviceRoot(n)&&t>2&&e.charCodeAt(1)===58&&isPathSeparator(e.charCodeAt(2)))}function join(...e){if(e.length===0)return`.`;let t,n;for(let r=0;r<e.length;++r){let i=e[r];assertPath(i),i.length>0&&(t===void 0?t=n=i:t+=`\\${i}`)}if(t===void 0)return`.`;let r=!0,i=0;if(isPathSeparator(n.charCodeAt(0))){++i;let e=n.length;e>1&&isPathSeparator(n.charCodeAt(1))&&(++i,e>2&&(isPathSeparator(n.charCodeAt(2))?++i:r=!1))}if(r){for(;i<t.length&&isPathSeparator(t.charCodeAt(i));++i);i>=2&&(t=`\\${t.slice(i)}`)}return t.split(/\\+/).some(e=>{let t=e.indexOf(`:`);return t!==-1&&isWindowsReservedName(e,t)})?t.replace(/\//g,`\\`):normalize(t)}function relative(e,t){if(assertPath(e),assertPath(t),e===t)return``;let n=resolve(e),r=resolve(t);if(n===r||(e=n.toLowerCase(),t=r.toLowerCase(),e===t))return``;let i=0;for(;i<e.length&&e.charCodeAt(i)===92;++i);let o=e.length;for(;o-1>i&&e.charCodeAt(o-1)===92;--o);let s=o-i,c=0;for(;c<t.length&&t.charCodeAt(c)===92;++c);let l=t.length;for(;l-1>c&&t.charCodeAt(l-1)===92;--l);let u=l-c,d=s<u?s:u,f=-1,p=0;for(;p<=d;++p){if(p===d){if(u>d){if(t.charCodeAt(c+p)===92)return r.slice(c+p+1);if(p===2)return r.slice(c+p)}s>d&&(e.charCodeAt(i+p)===92?f=p:p===2&&(f=3));break}let n=e.charCodeAt(i+p);if(n!==t.charCodeAt(c+p))break;n===92&&(f=p)}if(p!==d&&f===-1)return r;let m=``;for(f===-1&&(f=0),p=i+f+1;p<=o;++p)(p===o||e.charCodeAt(p)===92)&&(m.length===0?m+=`..`:m+=`\\..`);return m.length>0?m+r.slice(c+f,l):(c+=f,r.charCodeAt(c)===92&&++c,r.slice(c,l))}function toNamespacedPath(e){if(typeof e!=`string`||e.length===0)return e;let t=resolve(e);if(t.length<=2)return e;if(t.charCodeAt(0)===92){if(t.charCodeAt(1)===92){let e=t.charCodeAt(2);if(e!==63&&e!==46)return`\\\\?\\UNC\\${t.slice(2)}`}}else if(isWindowsDeviceRoot(t.charCodeAt(0))&&t.charCodeAt(1)===58&&t.charCodeAt(2)===92)return`\\\\?\\${t}`;return t}function dirname(e){assertPath(e);let t=e.length;if(t===0)return`.`;let n=-1,r=-1,i=!0,o=0,s=e.charCodeAt(0);if(t>1)if(isPathSeparator(s)){if(n=o=1,isPathSeparator(e.charCodeAt(1))){let r=2,i=r;for(;r<t&&!isPathSeparator(e.charCodeAt(r));++r);if(r<t&&r!==i){for(i=r;r<t&&isPathSeparator(e.charCodeAt(r));++r);if(r<t&&r!==i){for(i=r;r<t&&!isPathSeparator(e.charCodeAt(r));++r);if(r===t)return e;r!==i&&(n=o=r+1)}}}}else isWindowsDeviceRoot(s)&&e.charCodeAt(1)===58&&(n=o=2,t>2&&isPathSeparator(e.charCodeAt(2))&&(n=o=3));else if(isPathSeparator(s))return e;for(let n=t-1;n>=o;--n)if(isPathSeparator(e.charCodeAt(n))){if(!i){r=n;break}}else i=!1;if(r===-1){if(n===-1)return`.`;r=n}return e.slice(0,r)}function basename(e,t){t!==void 0&&assertPath(t),assertPath(e);let n=0,r=-1,i=!0;if(e.length>=2&&isWindowsDeviceRoot(e.charCodeAt(0))&&e.charCodeAt(1)===58&&(n=2),t!==void 0&&t.length>0&&t.length<=e.length){if(t.length===e.length&&t===e)return``;let o=t.length-1,s=-1;for(let c=e.length-1;c>=n;--c){let l=e.charCodeAt(c);if(isPathSeparator(l)){if(!i){n=c+1;break}}else s===-1&&(i=!1,s=c+1),o>=0&&(l===t.charCodeAt(o)?--o===-1&&(r=c):(o=-1,r=s))}return n===r?r=s:r===-1&&(r=e.length),e.slice(n,r)}else{for(let t=e.length-1;t>=n;--t)if(isPathSeparator(e.charCodeAt(t))){if(!i){n=t+1;break}}else r===-1&&(i=!1,r=t+1);return r===-1?``:e.slice(n,r)}}function extname(e){assertPath(e);let t=0,n=-1,r=0,i=-1,o=!0,s=0;e.length>=2&&e.charCodeAt(1)===58&&isWindowsDeviceRoot(e.charCodeAt(0))&&(t=r=2);for(let c=e.length-1;c>=t;--c){let t=e.charCodeAt(c);if(isPathSeparator(t)){if(!o){r=c+1;break}continue}i===-1&&(o=!1,i=c+1),t===46?n===-1?n=c:s!==1&&(s=1):n!==-1&&(s=-1)}return n===-1||i===-1||s===0||s===1&&n===i-1&&n===r+1?``:e.slice(n,i)}function format(e){if(typeof e!=`object`||!e)throw TypeError(`The "pathObject" argument must be of type Object. Received type `+typeof e);return _format(`\\`,e)}function parse(e){assertPath(e);let t={root:``,dir:``,base:``,ext:``,name:``};if(e.length===0)return t;let n=e.length,r=0,i=e.charCodeAt(0);if(n>1)if(isPathSeparator(i)){if(r=1,isPathSeparator(e.charCodeAt(1))){let t=2,i=t;for(;t<n&&!isPathSeparator(e.charCodeAt(t));++t);if(t<n&&t!==i){for(i=t;t<n&&isPathSeparator(e.charCodeAt(t));++t);if(t<n&&t!==i){for(i=t;t<n&&!isPathSeparator(e.charCodeAt(t));++t);t===n?r=t:t!==i&&(r=t+1)}}}}else isWindowsDeviceRoot(i)&&e.charCodeAt(1)===58&&(r=2,n>2&&isPathSeparator(e.charCodeAt(2))&&(r=3));else if(isPathSeparator(i))return t.root=t.dir=e,t;r>0&&(t.root=e.slice(0,r));let o=-1,s=r,c=-1,l=!0,u=e.length-1,d=0;for(;u>=r;--u){if(i=e.charCodeAt(u),isPathSeparator(i)){if(!l){s=u+1;break}continue}c===-1&&(l=!1,c=u+1),i===46?o===-1?o=u:d!==1&&(d=1):o!==-1&&(d=-1)}return o===-1||c===-1||d===0||d===1&&o===c-1&&o===s+1?c!==-1&&(t.base=t.name=e.slice(s,c)):(t.name=e.slice(s,o),t.base=e.slice(s,c),t.ext=e.slice(o,c)),s>0&&s!==r?t.dir=e.slice(0,s-1):t.dir=t.root,t}function selectFlavour(e){return e===`win32`?Oe:De}const A=selectFlavour(hostOs()),{resolve:Ae,normalize:je,isAbsolute:Me,join:Ne,relative:Pe,toNamespacedPath:Fe,dirname:Ie,basename:Le,extname:Re,format:ze,parse:Be,sep:Ve,delimiter:He}=A;A.resolve,A.normalize,A.isAbsolute,A.join,A.relative,A.toNamespacedPath,A.dirname,A.basename,A.extname,A.format,A.parse,A.sep,A.delimiter;const Ue=w.UriFlags.HAS_PASSWORD|w.UriFlags.ENCODED|w.UriFlags.SCHEME_NORMALIZE,j=new WeakMap;var We=class URLSearchParams{_entries=[];constructor(e){if(e)if(typeof e==`string`)this._entries=parseFormUrlencoded(e.startsWith(`?`)?e.slice(1):e);else if(Array.isArray(e))for(let[t,n]of e)this._entries.push([String(t),String(n)]);else if(e instanceof URLSearchParams)this._entries=e._entries.map(([e,t])=>[e,t]);else for(let t of Object.keys(e))this._entries.push([t,String(e[t])])}get(e){for(let[t,n]of this._entries)if(t===e)return n;return null}getAll(e){return this._entries.filter(([t])=>t===e).map(([,e])=>e)}set(e,t){let n=!1;if(this._entries=this._entries.filter(([t])=>t===e?n?!1:(n=!0,!0):!0),n){for(let n=0;n<this._entries.length;n++)if(this._entries[n][0]===e){this._entries[n][1]=t;break}}else this._entries.push([e,t]);j.get(this)?.()}has(e,t){return t===void 0?this._entries.some(([t])=>t===e):this._entries.some(([n,r])=>n===e&&r===t)}delete(e,t){this._entries=t===void 0?this._entries.filter(([t])=>t!==e):this._entries.filter(([n,r])=>!(n===e&&r===t)),j.get(this)?.()}append(e,t){this._entries.push([e,t]),j.get(this)?.()}sort(){this._entries.sort((e,t)=>e[0]<t[0]?-1:+(e[0]>t[0])),j.get(this)?.()}toString(){return this._entries.map(([e,t])=>encodeComponent(e)+`=`+encodeComponent(t)).join(`&`)}forEach(e){for(let[t,n]of this._entries)e(n,t,this)}*entries(){yield*this._entries}*keys(){for(let[e]of this._entries)yield e}*values(){for(let[,e]of this._entries)yield e}[Symbol.iterator](){return this.entries()}get size(){return this._entries.length}};function parseFormUrlencoded(e){let t=[];if(!e)return t;for(let n of e.split(`&`)){if(n===``)continue;let e=n.indexOf(`=`);e===-1?t.push([decodeComponent(n),``]):t.push([decodeComponent(n.slice(0,e)),decodeComponent(n.slice(e+1))])}return t}function decodeComponent(e){try{return decodeURIComponent(e.replace(/\+/g,` `))}catch{return e}}function percentEncodeUtf8(e){let t=``;for(let n of new TextEncoder().encode(e))t+=`%${n.toString(16).toUpperCase().padStart(2,`0`)}`;return t}function encodeComponent(e){let t=``;for(let n of e)n===` `?t+=`+`:/^[A-Za-z0-9*\-._]$/.test(n)?t+=n:t+=percentEncodeUtf8(n);return t}const Ge=new Map([[`ftp`,21],[`file`,null],[`http`,80],[`https`,443],[`ws`,80],[`wss`,443]]);function isSpecialScheme(e){return Ge.has(e)}function defaultPort(e){return Ge.get(e)??null}const Ke='"#/:;<=>?@[\\]^`{|}';function percentEncode(e,t){let n=``;for(let r of e){let e=r.codePointAt(0);n+=e<=32||e>126||t.includes(r)?percentEncodeUtf8(r):r}return n}function encodeQuery(e,t){return percentEncode(e,t?`"#<>'`:`"#<>`)}const M=/[\t\n\r]/g;function isSchemeChar(e){return e>=`a`&&e<=`z`||e>=`A`&&e<=`Z`||e>=`0`&&e<=`9`||e===`+`||e===`-`||e===`.`}function isAsciiDigit(e){return e!==void 0&&e>=`0`&&e<=`9`}function isHexDigit(e){return e!==void 0&&/^[0-9A-Fa-f]$/.test(e)}function digitPrefix(e){let t=``;for(let n of e){if(!isAsciiDigit(n))break;t+=n}return t}const qe=new Set([`\0`,` `,`
|
|
10
|
-
`,`\r`,` `,`#`,`/`,`:`,`<`,`>`,`?`,`@`,`[`,`\\`,`]`,`^`,`|`]);function hasForbiddenDomainCodePoint(e){for(let t of e){let e=t.codePointAt(0);if(e<=31||e===127||t===`%`||qe.has(t))return!0}return!1}function parseIPv6(e){let t=[0,0,0,0,0,0,0,0],n=0,r=null,i=0,at=()=>e[i];if(at()===`:`){if(e[i+1]!==`:`)return;i+=2,n++,r=n}for(;i<e.length;){if(n===8)return;if(at()===`:`){if(r!==null)return;i++,n++,r=n;continue}let o=0,s=0;for(;s<4&&isHexDigit(at());)o=o*16+Number.parseInt(at(),16),i++,s++;if(at()===`.`){if(s===0||(i-=s,n>6))return;let r=0;for(;i<e.length;){let e=null;if(r>0)if(at()===`.`&&r<4)i++;else return;if(!isAsciiDigit(at()))return;for(;isAsciiDigit(at());){let t=Number(at());if(e===null)e=t;else if(e===0)return;else e=e*10+t;if(e>255)return;i++}t[n]=t[n]*256+e,r++,(r===2||r===4)&&n++}if(r!==4)return;break}if(at()===`:`){if(i++,i>=e.length)return}else if(i<e.length)return;t[n]=o,n++}if(r!==null){let e=n-r;for(n=7;n!==0&&e>0;){let i=t[r+e-1];t[r+e-1]=t[n],t[n]=i,n--,e--}}else if(n!==8)return;return serializeIPv6(t)}function serializeIPv6(e){let t=null,n=1,r=-1,i=0;for(let o=0;o<8;o++){if(e[o]!==0){r=-1,i=0;continue}r===-1&&(r=o),i++,i>n&&(n=i,t=r)}let o=``,s=!1;for(let n=0;n<8;n++)if(!(s&&e[n]===0)){if(s=!1,t===n){o+=n===0?`::`:`:`,s=!0;continue}o+=e[n].toString(16),n!==7&&(o+=`:`)}return o}function parseHost(e,t){if(e.startsWith(`[`)){if(!e.endsWith(`]`))return;let t=parseIPv6(e.slice(1,-1));return t===void 0?void 0:`[${t}]`}if(t){for(let t of e)if(qe.has(t))return;return percentEncode(e,``)}if(!hasForbiddenDomainCodePoint(e))return e.toLowerCase()}function parseHostSetterValue(e,t,n,r,i){let o=e.replace(M,``),s=isSpecialScheme(t);if(t===`file`){let e=o.length;for(let t=0;t<o.length;t++){let n=o[t];if(n===`/`||n===`\\`||n===`?`||n===`#`){e=t;break}}let t=o.slice(0,e);if(t===``)return{host:``};let n=parseHost(t,!1);return n===void 0?void 0:{host:n===`localhost`?``:n}}let c=!1,l=``;for(let e=0;e<o.length;e++){let n=o[e];if(n===`:`&&!c){if(l===``||i)return;let n=parseHost(l,!s);if(n===void 0)return;let r=digitPrefix(o.slice(e+1));if(r===``)return{host:n};let c=Number(r);return c>65535?{host:n}:{host:n,port:c===defaultPort(t)?null:c}}if(n===`/`||n===`?`||n===`#`||s&&n===`\\`)break;n===`[`?c=!0:n===`]`&&(c=!1),l+=n}if(l===``&&(s||n||r))return;let u=parseHost(l,!s);return u===void 0?void 0:{host:u}}function isDoubleDotSegment(e){let t=e.toLowerCase();return t===`..`||t===`.%2e`||t===`%2e.`||t===`%2e%2e`}function isSingleDotSegment(e){let t=e.toLowerCase();return t===`.`||t===`%2e`}function parsePathSetterValue(e,t,n){let r=e.replace(M,``);if(t&&(r=r.replace(/\\/g,`/`)),r===``)return t||n?`/`:``;let i=[],o=(r.startsWith(`/`)?r.slice(1):r).split(`/`);for(let e=0;e<o.length;e++){let t=o[e],n=e===o.length-1;isDoubleDotSegment(t)?(i.pop(),n&&i.push(``)):isSingleDotSegment(t)?n&&i.push(``):i.push(percentEncode(t,'"#<>?^`{}'))}return`/`+i.join(`/`)}function bracketIPv6Host(e){return e.includes(`:`)&&!e.startsWith(`[`)?`[${e}]`:e}var Je=class URL{#e;#t;#n;#r;#i;#a;#o;#s;#c;#l;constructor(e,t){let n=e instanceof URL?e.href:String(e),r;try{if(t!==void 0){let e=t instanceof URL?t.href:String(t);r=w.Uri.parse(e,Ue).parse_relative(n,Ue)}else r=w.Uri.parse(n,Ue)}catch{throw TypeError(`Invalid URL: ${n}`)}if(!r)throw TypeError(`Invalid URL: ${n}`);this.#e=r.get_scheme();let i=isSpecialScheme(this.#e);this.#t=r.get_user()??``,this.#n=r.get_password()??``;let o=r.get_host(),s=o===null?null:bracketIPv6Host(o.toLowerCase());this.#r=s===null?i?``:null:this.#e===`file`&&s===`localhost`?``:s;let c=r.get_port();this.#i=c===-1||c===defaultPort(this.#e)?null:c,this.#a=r.get_path()??``,i&&this.#a===``&&(this.#a=`/`),this.#o=this.#r===null&&!this.#a.startsWith(`/`),this.#r===null&&!this.#o&&this.#a.startsWith(`/.//`)&&(this.#a=this.#a.slice(2)),this.#s=r.get_fragment()??null,this.#l=r.get_query()??null,this.#c=new We,this.#c._entries=parseFormUrlencoded(this.#l??``),j.set(this.#c,()=>{let e=this.#c.toString();this.#l=e===``?null:e})}get protocol(){return this.#e+`:`}set protocol(e){let t=String(e).replace(M,``)+`:`;if(!/^[A-Za-z]/.test(t))return;let n=``;for(let e of t){if(e===`:`)break;if(!isSchemeChar(e))return;n+=e.toLowerCase()}isSpecialScheme(this.#e)===isSpecialScheme(n)&&(n===`file`&&(this.#t!==``||this.#n!==``||this.#i!==null)||this.#e===`file`&&(this.#r===null||this.#r===``)||(this.#e=n,this.#i!==null&&this.#i===defaultPort(n)&&(this.#i=null)))}get hostname(){return this.#r??``}set hostname(e){if(this.#o)return;let t=parseHostSetterValue(String(e),this.#e,this.#t!==``||this.#n!==``,this.#i!==null,!0);t!==void 0&&(this.#r=t.host)}get port(){return this.#i===null?``:String(this.#i)}set port(e){if(this.#u())return;let t=String(e);if(t===``){this.#i=null;return}let n=digitPrefix(t.replace(M,``));if(n===``)return;let r=Number(n);r>65535||(this.#i=r===defaultPort(this.#e)?null:r)}get host(){let e=this.hostname,t=this.port;return t?`${e}:${t}`:e}set host(e){if(this.#o)return;let t=parseHostSetterValue(String(e),this.#e,this.#t!==``||this.#n!==``,this.#i!==null,!1);t!==void 0&&(this.#r=t.host,t.port!==void 0&&(this.#i=t.port))}get pathname(){return this.#a}set pathname(e){this.#o||(this.#a=parsePathSetterValue(String(e),isSpecialScheme(this.#e),this.#r===null))}get search(){return this.#l?`?`+this.#l:``}set search(e){let t=String(e);if(t===``){this.#l=null,this.#c._entries=[];return}let n=(t.startsWith(`?`)?t.slice(1):t).replace(M,``);this.#l=encodeQuery(n,isSpecialScheme(this.#e)),this.#c._entries=parseFormUrlencoded(n)}get hash(){return this.#s?`#`+this.#s:``}set hash(e){let t=String(e);if(t===``){this.#s=null;return}let n=(t.startsWith(`#`)?t.slice(1):t).replace(M,``);this.#s=percentEncode(n,'"<>`')}get origin(){return isSpecialScheme(this.#e)&&this.#e!==`file`?`${this.protocol}//${this.host}`:`null`}get username(){return this.#t}set username(e){this.#u()||(this.#t=percentEncode(String(e),Ke))}get password(){return this.#n}set password(e){this.#u()||(this.#n=percentEncode(String(e),Ke))}#u(){return this.#r===null||this.#r===``||this.#e===`file`}get href(){let e=this.#e+`:`;return this.#r===null?!this.#o&&this.#a.startsWith(`//`)&&(e+=`/.`):(e+=`//`,(this.#t!==``||this.#n!==``)&&(e+=this.#t,this.#n!==``&&(e+=`:`+this.#n),e+=`@`),e+=this.#r,this.#i!==null&&(e+=`:`+this.#i)),e+=this.#a,e+=this.#l===null?``:`?${this.#l}`,e+=this.#s===null?``:`#${this.#s}`,e}set href(e){let t=new URL(String(e));this.#e=t.#e,this.#t=t.#t,this.#n=t.#n,this.#r=t.#r,this.#i=t.#i,this.#a=t.#a,this.#o=t.#o,this.#l=t.#l,this.#s=t.#s,this.#c._entries=parseFormUrlencoded(this.#l??``)}get searchParams(){return this.#c}toString(){return this.href}toJSON(){return this.href}static _objectURLPaths=new Map;static _objectURLCounter=0;static createObjectURL(e){let t=e?._tmpPath;if(typeof t==`string`&&t.length>0){let e=`file://${t}`;return URL._objectURLPaths.set(e,t),e}return`file:///dev/null`}static revokeObjectURL(e){let t=URL._objectURLPaths.get(e);t&&(w.unlink(t),URL._objectURLPaths.delete(e))}};typeof globalThis.URL!=`function`&&Object.defineProperty(globalThis,"URL",{value:Je,enumerable:!1,writable:!0,configurable:!0}),typeof globalThis.URLSearchParams!=`function`&&Object.defineProperty(globalThis,"URLSearchParams",{value:We,enumerable:!1,writable:!0,configurable:!0});let Ye;if(globalThis.performance)Ye=globalThis.performance;else{let e,_now;try{let t=globalThis.imports?.gi?.GLib;if(!t)throw Error(`GJS imports.gi.GLib not available`);e=t.get_monotonic_time(),_now=()=>(t.get_monotonic_time()-e)/1e3}catch{let t=Date.now();e=0,_now=()=>Date.now()-t}let t=[],n=Date.now()-_now();Ye={timeOrigin:n,now:_now,mark(e){let n={name:e,entryType:`mark`,startTime:_now(),duration:0};return t.push(n),n},measure(e,n,r){let i=0,o=_now();if(n){let e=t.find(e=>e.entryType===`mark`&&e.name===n);e&&(i=e.startTime)}if(r){let e=t.find(e=>e.entryType===`mark`&&e.name===r);e&&(o=e.startTime)}let s={name:e,entryType:`measure`,startTime:i,duration:o-i};return t.push(s),s},getEntries(){return[...t]},getEntriesByName(e){return t.filter(t=>t.name===e)},getEntriesByType(e){return t.filter(t=>t.entryType===e)},clearMarks(e){for(let n=t.length-1;n>=0;n--)t[n].entryType===`mark`&&(!e||t[n].name===e)&&t.splice(n,1)},clearMeasures(e){for(let n=t.length-1;n>=0;n--)t[n].entryType===`measure`&&(!e||t[n].name===e)&&t.splice(n,1)},clearResourceTimings(){},setResourceTimingBufferSize(){},toJSON(){return{timeOrigin:n}}}}var PerformanceObserverStub=class{_callback;constructor(e){this._callback=e}observe(e){}disconnect(){}takeRecords(){return[]}};const N=globalThis,Xe=N.PerformanceObserver||PerformanceObserverStub;N.PerformanceEntry,N.PerformanceObserverEntryList,N.PerformanceMark,N.PerformanceMeasure;const Ze=globalThis;globalThis.performance===void 0&&(Ze.performance=Ye),typeof Ze.PerformanceObserver!=`function`&&(Ze.PerformanceObserver=Xe);const Qe={IndexSizeError:1,HierarchyRequestError:3,WrongDocumentError:4,InvalidCharacterError:5,NoModificationAllowedError:7,NotFoundError:8,NotSupportedError:9,InUseAttributeError:10,InvalidStateError:11,SyntaxError:12,InvalidModificationError:13,NamespaceError:14,InvalidAccessError:15,TypeMismatchError:17,SecurityError:18,NetworkError:19,AbortError:20,URLMismatchError:21,QuotaExceededError:22,TimeoutError:23,InvalidNodeTypeError:24,DataCloneError:25};var _DOMExceptionPolyfill=class extends Error{code;constructor(e,t){super(e),this.name=t||`Error`,this.code=Object.hasOwn(Qe,this.name)?Qe[this.name]:0}};const $e=globalThis.DOMException??_DOMExceptionPolyfill,et=Symbol(`type`),tt=Symbol(`bubbles`),nt=Symbol(`cancelable`),rt=Symbol(`composed`),it=Symbol(`target`),P=Symbol(`currentTarget`),ot=Symbol(`eventPhase`),st=Symbol(`defaultPrevented`),ct=Symbol(`isTrusted`),lt=Symbol(`timeStamp`),ut=Symbol(`stop`),dt=Symbol(`immediateStop`),ft=Symbol(`dispatching`),pt=Symbol(`inPassiveListener`);var Event=class{[et];[tt];[nt];[rt];[it]=null;[P]=null;[ot]=0;[st]=!1;[ct]=!1;[lt];[ut]=!1;[dt]=!1;[ft]=!1;[pt]=!1;get type(){return this[et]}get bubbles(){return this[tt]}get cancelable(){return this[nt]}get composed(){return this[rt]}get target(){return this[it]}get currentTarget(){return this[P]}get eventPhase(){return this[ot]}get defaultPrevented(){return this[st]}get timeStamp(){return this[lt]}get cancelBubble(){return this[ut]}set cancelBubble(e){e&&this.stopPropagation()}get returnValue(){return!this[st]}set returnValue(e){e||this.preventDefault()}get srcElement(){return this[it]}static NONE=0;static CAPTURING_PHASE=1;static AT_TARGET=2;static BUBBLING_PHASE=3;get[Symbol.toStringTag](){return`Event`}constructor(e,t){this[et]=e,this[tt]=t?.bubbles??!1,this[nt]=t?.cancelable??!1,this[rt]=t?.composed??!1,this[lt]=Date.now(),Object.defineProperty(this,"isTrusted",{get:()=>this[ct],enumerable:!0,configurable:!1})}composedPath(){return this[P]?[this[P]]:[]}preventDefault(){this[nt]&&!this[pt]&&(this[st]=!0)}stopPropagation(){this[ut]=!0}stopImmediatePropagation(){this[ut]=!0,this[dt]=!0}},EventTarget=class{#e=new Map;get[Symbol.toStringTag](){return`EventTarget`}addEventListener(e,t,n){if(t===null)return;let r=typeof n==`boolean`?n:n?.capture??!1,i=typeof n==`object`?n?.once??!1:!1,o=typeof n==`object`?n?.passive??!1:!1,s=this.#e.get(e);s||(s=[],this.#e.set(e,s));for(let e of s)if(e.listener===t&&e.capture===r)return;let c={listener:t,capture:r,once:i,passive:o,removed:!1};s.push(c),typeof n==`object`&&n?.signal&&n.signal.addEventListener(`abort`,()=>{this.removeEventListener(e,t,{capture:r})},{once:!0})}removeEventListener(e,t,n){if(t===null)return;let r=typeof n==`boolean`?n:n?.capture??!1,i=this.#e.get(e);if(!i)return;let o=i.findIndex(e=>e.listener===t&&e.capture===r);o!==-1&&(i[o].removed=!0,i.splice(o,1),i.length===0&&this.#e.delete(e))}dispatchEvent(e){let t=e;if(t[ft])throw new $e(`The event is already being dispatched.`,`InvalidStateError`);t[ft]=!0,t[it]=this,t[P]=this,t[ot]=Event.AT_TARGET;try{let n=this.#e.get(e.type);if(n){let r=[...n];for(let n of r)if(!n.removed){if(t[dt]||t[ut])break;n.once&&this.removeEventListener(e.type,n.listener,{capture:n.capture});try{n.passive&&(t[pt]=!0),typeof n.listener==`function`?n.listener.call(this,e):typeof n.listener.handleEvent==`function`&&n.listener.handleEvent.call(n.listener,e)}catch(e){reportListenerException(e)}finally{t[pt]=!1}}}}finally{t[ot]=Event.NONE,t[P]=null,t[ft]=!1}return!e.defaultPrevented}};function reportListenerException(e){try{let t=globalThis;if(typeof t.reportError==`function`)t.reportError(e);else if(e instanceof Error){let t=`${e.name}: ${e.message}`;y.error(e.stack?`${t}\n${e.stack}`:t)}else y.error(String(e))}catch{}}for(let[e,t]of[[`NONE`,0],[`CAPTURING_PHASE`,1],[`AT_TARGET`,2],[`BUBBLING_PHASE`,3]])Object.defineProperty(Event.prototype,e,{value:t,writable:!1,enumerable:!0,configurable:!1}),Object.defineProperty(Event,e,{value:t,writable:!1,enumerable:!0,configurable:!1});const F=Symbol(`abort`),I=Symbol(`internal`);var mt=class AbortSignal extends EventTarget{#e=!1;#t=void 0;onabort=null;constructor(e){if(super(),e!==I)throw TypeError(`Illegal constructor.`)}get aborted(){if(!(this instanceof AbortSignal))throw TypeError(`'get aborted' called on an object that is not a valid instance of AbortSignal.`);return this.#e}get reason(){return this.#t}get[Symbol.toStringTag](){return`AbortSignal`}throwIfAborted(){if(this.#e)throw this.#t}[F](e){if(this.#e)return;this.#e=!0,this.#t=e??new $e(`The operation was aborted.`,`AbortError`);let t=new Event(`abort`);typeof this.onabort==`function`&&this.onabort.call(this,t),this.dispatchEvent(t)}static abort(e){let t=new AbortSignal(I);return t[F](e),t}static timeout(e){let t=new AbortSignal(I);return setTimeout(()=>{t[F](new $e(`The operation timed out.`,`TimeoutError`))},e),t}static any(e){let t=new AbortSignal(I);for(let n of e)if(n.aborted)return t[F](n.reason),t;let onAbort=()=>{if(!t.aborted){let n=e.find(e=>e.aborted);t[F](n?.reason)}};for(let t of e)t.addEventListener(`abort`,onAbort,{once:!0});return t}},ht=class AbortController{signal;constructor(){this.signal=new mt(I)}get[Symbol.toStringTag](){return`AbortController`}abort(e){if(!(this instanceof AbortController))throw TypeError(`'abort' called on an object that is not a valid instance of AbortController.`);this.signal[F](e)}};const gt=globalThis;globalThis.AbortController===void 0&&(gt.AbortController=ht),globalThis.AbortSignal===void 0&&(gt.AbortSignal=mt);const _t=globalThis;globalThis.DOMException===void 0&&(_t.DOMException=$e);const L=Symbol(`kState`),R=Symbol(`kType`);function isBrandCheck(e){return t=>typeof t==`object`&&!!t&&t[L]!==void 0&&t[R]===e}function dequeueValue(e){let t=e[L].queue.shift();if(t===void 0)throw Error(`dequeueValue called on an empty queue`);let{value:n,size:r}=t;return e[L].queueTotalSize=Math.max(0,e[L].queueTotalSize-r),n}function resetQueue(e){e[L].queue=[],e[L].queueTotalSize=0}function peekQueueValue(e){return e[L].queue[0].value}function enqueueValueWithSize(e,t,n){if(n=+n,typeof n!=`number`||n<0||Number.isNaN(n)||n===1/0)throw RangeError(`Invalid size: ${n}`);e[L].queue.push({value:t,size:n}),e[L].queueTotalSize+=n}function extractHighWaterMark(e,t){if(e===void 0)return t;if(e=+e,typeof e!=`number`||Number.isNaN(e)||e<0)throw RangeError(`Invalid highWaterMark: ${e}`);return e}function extractSizeAlgorithm(e){if(e===void 0)return()=>1;if(typeof e!=`function`)throw TypeError(`strategy.size must be a function`);return e}function transferArrayBuffer(e){return typeof ArrayBuffer.prototype.transfer==`function`?e.transfer():e.slice(0)}function isDetachedBuffer(e){if(typeof SharedArrayBuffer<`u`&&e instanceof SharedArrayBuffer||e.byteLength!==0)return!1;try{return e.slice(0,0),!1}catch{return!0}}function typedArrayConstructorByTag(e){switch(e){case`Int8Array`:return Int8Array;case`Uint8Array`:return Uint8Array;case`Uint8ClampedArray`:return Uint8ClampedArray;case`Int16Array`:return Int16Array;case`Uint16Array`:return Uint16Array;case`Int32Array`:return Int32Array;case`Uint32Array`:return Uint32Array;case`Float32Array`:return Float32Array;case`Float64Array`:return Float64Array;case`BigInt64Array`:return typeof BigInt64Array<`u`?BigInt64Array:void 0;case`BigUint64Array`:return typeof BigUint64Array<`u`?BigUint64Array:void 0;default:return}}function elementSizeByTag(e){switch(e){case`Int8Array`:case`Uint8Array`:case`Uint8ClampedArray`:return 1;case`Int16Array`:case`Uint16Array`:return 2;case`Int32Array`:case`Uint32Array`:case`Float32Array`:return 4;case`Float64Array`:case`BigInt64Array`:case`BigUint64Array`:return 8;default:return 1}}function setPromiseHandled(e){e.then(()=>{},()=>{})}function createPromiseCallback(e,t,n){if(typeof t!=`function`)throw TypeError(`${e} must be a function`);return async(...e)=>t.call(n,...e)}async function nonOpFlush(){}function nonOpStart(){}async function nonOpPull(){}async function nonOpCancel(){}async function nonOpWrite(){}const vt={__proto__:Object.getPrototypeOf(Object.getPrototypeOf(async function*(){}).prototype),next:void 0,return:void 0};function createAsyncFromSyncIterator(e){let t={[Symbol.iterator]:()=>e.iterator},n=(async function*(){return yield*t})();return{iterator:n,nextMethod:n.next,done:!1}}function getIterator(e,t=`sync`,n){if(n===void 0)if(t===`async`){if(n=e[Symbol.asyncIterator],n==null){let t=e[Symbol.iterator];if(t===void 0)throw TypeError(`Object is not iterable`);return createAsyncFromSyncIterator(getIterator(e,`sync`,t))}}else n=e[Symbol.iterator];if(n===void 0)throw TypeError(`Object is not iterable`);let r=n.call(e);if(typeof r!=`object`||!r)throw TypeError(`The iterator method must return an object`);return{iterator:r,nextMethod:r.next,done:!1}}function iteratorNext(e,t){let n;if(n=t===void 0?e.nextMethod.call(e.iterator):e.nextMethod.call(e.iterator,t),typeof n!=`object`||!n)throw TypeError(`The iterator.next() method must return an object`);return n}const yt=typeof globalThis.AbortController==`function`?globalThis.AbortController:class AbortControllerShim{signal={aborted:!1,reason:void 0,addEventListener(){},removeEventListener(){}};abort(e){this.signal.aborted=!0,this.signal.reason=e}},bt=Symbol(`kAbort`),xt=Symbol(`kCloseSentinel`),St=Symbol(`kError`),Ct=Symbol(`kSkipThrow`);var WritableStream=class{[R]=`WritableStream`;[L];constructor(e={},t={}){if(e!=null&&typeof e!=`object`)throw TypeError(`sink must be an object`);if(t!=null&&typeof t!=`object`)throw TypeError(`strategy must be an object`);let n=e?.type;if(n!==void 0)throw RangeError(`Invalid type: ${n}`);this[L]=createWritableStreamState();let r=extractSizeAlgorithm(t?.size),i=extractHighWaterMark(t?.highWaterMark,1);setupWritableStreamDefaultControllerFromSink(this,e,i,r)}get locked(){if(!z(this))throw TypeError(`Invalid this`);return isWritableStreamLocked(this)}abort(e){return z(this)?isWritableStreamLocked(this)?Promise.reject(TypeError(`WritableStream is locked`)):writableStreamAbort(this,e):Promise.reject(TypeError(`Invalid this`))}close(){return z(this)?isWritableStreamLocked(this)?Promise.reject(TypeError(`WritableStream is locked`)):writableStreamCloseQueuedOrInFlight(this)?Promise.reject(TypeError(`Failure closing WritableStream`)):writableStreamClose(this):Promise.reject(TypeError(`Invalid this`))}getWriter(){if(!z(this))throw TypeError(`Invalid this`);return new WritableStreamDefaultWriter(this)}get[Symbol.toStringTag](){return`WritableStream`}},WritableStreamDefaultWriter=class{[R]=`WritableStreamDefaultWriter`;[L];constructor(e){if(!z(e))throw TypeError(`Expected a WritableStream`);this[L]={stream:void 0,close:{promise:void 0,resolve:void 0,reject:void 0},ready:{promise:void 0,resolve:void 0,reject:void 0}},setupWritableStreamDefaultWriter(this,e)}get closed(){return B(this)?this[L].close.promise:Promise.reject(TypeError(`Invalid this`))}get desiredSize(){if(!B(this))throw TypeError(`Invalid this`);if(this[L].stream===void 0)throw TypeError(`Writer is not bound to a WritableStream`);return writableStreamDefaultWriterGetDesiredSize(this)}get ready(){return B(this)?this[L].ready.promise:Promise.reject(TypeError(`Invalid this`))}abort(e){return B(this)?this[L].stream===void 0?Promise.reject(TypeError(`Writer is not bound to a WritableStream`)):writableStreamDefaultWriterAbort(this,e):Promise.reject(TypeError(`Invalid this`))}close(){if(!B(this))return Promise.reject(TypeError(`Invalid this`));let{stream:e}=this[L];return e===void 0?Promise.reject(TypeError(`Writer is not bound to a WritableStream`)):writableStreamCloseQueuedOrInFlight(e)?Promise.reject(TypeError(`Failure to close WritableStream`)):writableStreamDefaultWriterClose(this)}releaseLock(){if(!B(this))throw TypeError(`Invalid this`);let{stream:e}=this[L];e!==void 0&&writableStreamDefaultWriterRelease(this)}write(e){return B(this)?this[L].stream===void 0?Promise.reject(TypeError(`Writer is not bound to a WritableStream`)):writableStreamDefaultWriterWrite(this,e):Promise.reject(TypeError(`Invalid this`))}get[Symbol.toStringTag](){return`WritableStreamDefaultWriter`}},WritableStreamDefaultController=class{[R]=`WritableStreamDefaultController`;[L];constructor(e){if(e!==Ct)throw TypeError(`Illegal constructor`)}[bt](e){let t=this[L].abortAlgorithm(e);return writableStreamDefaultControllerClearAlgorithms(this),t}[St](){resetQueue(this)}get signal(){if(!wt(this))throw TypeError(`Invalid this`);return this[L].abortController.signal}error(e){if(!wt(this))throw TypeError(`Invalid this`);this[L].stream[L].state===`writable`&&writableStreamDefaultControllerError(this,e)}get[Symbol.toStringTag](){return`WritableStreamDefaultController`}};const z=isBrandCheck(`WritableStream`),B=isBrandCheck(`WritableStreamDefaultWriter`),wt=isBrandCheck(`WritableStreamDefaultController`);function createEmptyPromiseRecord(){return{promise:void 0,resolve:void 0,reject:void 0}}function createWritableStreamState(){return{close:Promise.withResolvers(),closeRequest:createEmptyPromiseRecord(),inFlightWriteRequest:createEmptyPromiseRecord(),inFlightCloseRequest:createEmptyPromiseRecord(),pendingAbortRequest:{abort:createEmptyPromiseRecord(),reason:void 0,wasAlreadyErroring:!1},backpressure:!1,controller:void 0,state:`writable`,storedError:void 0,writeRequests:[],writer:void 0}}function isWritableStreamLocked(e){return e[L].writer!==void 0}function setupWritableStreamDefaultWriter(e,t){if(isWritableStreamLocked(t))throw TypeError(`WritableStream is locked`);switch(e[L].stream=t,t[L].writer=e,t[L].state){case`writable`:!writableStreamCloseQueuedOrInFlight(t)&&t[L].backpressure?e[L].ready=Promise.withResolvers():e[L].ready={promise:Promise.resolve(),resolve:void 0,reject:void 0},e[L].close=Promise.withResolvers();break;case`erroring`:e[L].ready={promise:Promise.reject(t[L].storedError),resolve:void 0,reject:void 0},setPromiseHandled(e[L].ready.promise),e[L].close=Promise.withResolvers();break;case`closed`:e[L].ready={promise:Promise.resolve(),resolve:void 0,reject:void 0},e[L].close={promise:Promise.resolve(),resolve:void 0,reject:void 0};break;default:e[L].ready={promise:Promise.reject(t[L].storedError),resolve:void 0,reject:void 0},e[L].close={promise:Promise.reject(t[L].storedError),resolve:void 0,reject:void 0},setPromiseHandled(e[L].ready.promise),setPromiseHandled(e[L].close.promise)}}function writableStreamAbort(e,t){let{state:n,controller:r}=e[L];if(n===`closed`||n===`errored`)return Promise.resolve();if(r[L].abortController.abort(t),e[L].pendingAbortRequest.abort.promise!==void 0)return e[L].pendingAbortRequest.abort.promise;let i=!1;n===`erroring`&&(i=!0,t=void 0);let o=Promise.withResolvers();return e[L].pendingAbortRequest={abort:o,reason:t,wasAlreadyErroring:i},i||writableStreamStartErroring(e,t),o.promise}function writableStreamClose(e){let{state:t,writer:n,backpressure:r,controller:i}=e[L];if(t===`closed`||t===`errored`)return Promise.reject(TypeError(`WritableStream is closed`));e[L].closeRequest=Promise.withResolvers();let{promise:o}=e[L].closeRequest;return n!==void 0&&r&&t===`writable`&&n[L].ready.resolve?.(),writableStreamDefaultControllerClose(i),o}function writableStreamUpdateBackpressure(e,t){let{writer:n}=e[L];n!==void 0&&e[L].backpressure!==t&&(t?n[L].ready=Promise.withResolvers():n[L].ready.resolve?.()),e[L].backpressure=t}function writableStreamStartErroring(e,t){let{controller:n,writer:r}=e[L];e[L].state=`erroring`,e[L].storedError=t,r!==void 0&&writableStreamDefaultWriterEnsureReadyPromiseRejected(r,t),!writableStreamHasOperationMarkedInFlight(e)&&n[L].started&&writableStreamFinishErroring(e)}function writableStreamRejectCloseAndClosedPromiseIfNeeded(e){e[L].closeRequest.promise!==void 0&&(e[L].closeRequest.reject?.(e[L].storedError),e[L].closeRequest={promise:void 0,resolve:void 0,reject:void 0}),setPromiseHandled(e[L].close.promise),e[L].close.reject?.(e[L].storedError);let{writer:t}=e[L];t!==void 0&&(setPromiseHandled(t[L].close.promise),t[L].close.reject?.(e[L].storedError))}function writableStreamMarkFirstWriteRequestInFlight(e){let t=e[L].writeRequests.shift();e[L].inFlightWriteRequest=t}function writableStreamMarkCloseRequestInFlight(e){e[L].inFlightCloseRequest=e[L].closeRequest,e[L].closeRequest={promise:void 0,resolve:void 0,reject:void 0}}function writableStreamHasOperationMarkedInFlight(e){return e[L].inFlightWriteRequest.promise!==void 0||e[L].inFlightCloseRequest.promise!==void 0}function writableStreamFinishInFlightWriteWithError(e,t){e[L].inFlightWriteRequest.reject?.(t),e[L].inFlightWriteRequest={promise:void 0,resolve:void 0,reject:void 0},writableStreamDealWithRejection(e,t)}function writableStreamFinishInFlightWrite(e){e[L].inFlightWriteRequest.resolve?.(),e[L].inFlightWriteRequest={promise:void 0,resolve:void 0,reject:void 0}}function writableStreamFinishInFlightCloseWithError(e,t){e[L].inFlightCloseRequest.reject?.(t),e[L].inFlightCloseRequest={promise:void 0,resolve:void 0,reject:void 0},e[L].pendingAbortRequest.abort.promise!==void 0&&(e[L].pendingAbortRequest.abort.reject?.(t),e[L].pendingAbortRequest={abort:{promise:void 0,resolve:void 0,reject:void 0},reason:void 0,wasAlreadyErroring:!1}),writableStreamDealWithRejection(e,t)}function writableStreamFinishInFlightClose(e){e[L].inFlightCloseRequest.resolve?.(),e[L].inFlightCloseRequest={promise:void 0,resolve:void 0,reject:void 0},e[L].state===`erroring`&&(e[L].storedError=void 0,e[L].pendingAbortRequest.abort.promise!==void 0&&(e[L].pendingAbortRequest.abort.resolve?.(),e[L].pendingAbortRequest={abort:{promise:void 0,resolve:void 0,reject:void 0},reason:void 0,wasAlreadyErroring:!1})),e[L].state=`closed`,e[L].writer!==void 0&&e[L].writer[L].close.resolve?.(),e[L].close.resolve?.()}function writableStreamFinishErroring(e){e[L].state=`errored`,e[L].controller[St]();let t=e[L].storedError;for(let n of e[L].writeRequests)n.reject?.(t);if(e[L].writeRequests=[],e[L].pendingAbortRequest.abort.promise===void 0){writableStreamRejectCloseAndClosedPromiseIfNeeded(e);return}let n=e[L].pendingAbortRequest;if(e[L].pendingAbortRequest={abort:{promise:void 0,resolve:void 0,reject:void 0},reason:void 0,wasAlreadyErroring:!1},n.wasAlreadyErroring){n.abort.reject?.(t),writableStreamRejectCloseAndClosedPromiseIfNeeded(e);return}e[L].controller[bt](n.reason).then(()=>{n.abort.resolve?.(),writableStreamRejectCloseAndClosedPromiseIfNeeded(e)},t=>{n.abort.reject?.(t),writableStreamRejectCloseAndClosedPromiseIfNeeded(e)})}function writableStreamDealWithRejection(e,t){if(e[L].state===`writable`){writableStreamStartErroring(e,t);return}writableStreamFinishErroring(e)}function writableStreamCloseQueuedOrInFlight(e){return e[L].closeRequest.promise!==void 0||e[L].inFlightCloseRequest.promise!==void 0}function writableStreamAddWriteRequest(e){let{promise:t,resolve:n,reject:r}=Promise.withResolvers();return e[L].writeRequests.push({promise:t,resolve:n,reject:r}),t}function writableStreamDefaultWriterWrite(e,t){let{stream:n}=e[L],{controller:r}=n[L],i=writableStreamDefaultControllerGetChunkSize(r,t);if(n!==e[L].stream)return Promise.reject(TypeError(`Mismatched WritableStreams`));let{state:o}=n[L];if(o===`errored`)return Promise.reject(n[L].storedError);if(writableStreamCloseQueuedOrInFlight(n)||o===`closed`)return Promise.reject(TypeError(`WritableStream is closed`));if(o===`erroring`)return Promise.reject(n[L].storedError);let s=writableStreamAddWriteRequest(n);return writableStreamDefaultControllerWrite(r,t,i),s}function writableStreamDefaultWriterRelease(e){let{stream:t}=e[L],n=TypeError(`Writer has been released`);writableStreamDefaultWriterEnsureReadyPromiseRejected(e,n),writableStreamDefaultWriterEnsureClosedPromiseRejected(e,n),t[L].writer=void 0,e[L].stream=void 0}function writableStreamDefaultWriterGetDesiredSize(e){let{stream:t}=e[L];switch(t[L].state){case`errored`:case`erroring`:return null;case`closed`:return 0}return writableStreamDefaultControllerGetDesiredSize(t[L].controller)}function writableStreamDefaultWriterEnsureReadyPromiseRejected(e,t){e[L].ready.reject?(e[L].ready.reject(t),e[L].ready.resolve=void 0,e[L].ready.reject=void 0):e[L].ready={promise:Promise.reject(t),resolve:void 0,reject:void 0},setPromiseHandled(e[L].ready.promise)}function writableStreamDefaultWriterEnsureClosedPromiseRejected(e,t){e[L].close.reject?(e[L].close.reject(t),e[L].close.resolve=void 0,e[L].close.reject=void 0):e[L].close={promise:Promise.reject(t),resolve:void 0,reject:void 0},setPromiseHandled(e[L].close.promise)}function writableStreamDefaultWriterCloseWithErrorPropagation(e){let{stream:t}=e[L],{state:n}=t[L];return writableStreamCloseQueuedOrInFlight(t)||n===`closed`?Promise.resolve():n===`errored`?Promise.reject(t[L].storedError):writableStreamDefaultWriterClose(e)}function writableStreamDefaultWriterClose(e){return writableStreamClose(e[L].stream)}function writableStreamDefaultWriterAbort(e,t){return writableStreamAbort(e[L].stream,t)}function writableStreamDefaultControllerWrite(e,t,n){try{enqueueValueWithSize(e,t,n)}catch(t){writableStreamDefaultControllerErrorIfNeeded(e,t);return}let{stream:r}=e[L];!writableStreamCloseQueuedOrInFlight(r)&&r[L].state===`writable`&&writableStreamUpdateBackpressure(r,writableStreamDefaultControllerGetBackpressure(e)),writableStreamDefaultControllerAdvanceQueueIfNeeded(e)}function writableStreamDefaultControllerProcessWrite(e,t){let{stream:n,writeAlgorithm:r}=e[L];writableStreamMarkFirstWriteRequestInFlight(n),r(t,e).then(()=>{writableStreamFinishInFlightWrite(n);let{state:t}=n[L];dequeueValue(e),!writableStreamCloseQueuedOrInFlight(n)&&t===`writable`&&writableStreamUpdateBackpressure(n,writableStreamDefaultControllerGetBackpressure(e)),writableStreamDefaultControllerAdvanceQueueIfNeeded(e)},t=>{n[L].state===`writable`&&writableStreamDefaultControllerClearAlgorithms(e),writableStreamFinishInFlightWriteWithError(n,t)})}function writableStreamDefaultControllerProcessClose(e){let{closeAlgorithm:t,stream:n}=e[L];writableStreamMarkCloseRequestInFlight(n),dequeueValue(e);let r=t();writableStreamDefaultControllerClearAlgorithms(e),r.then(()=>writableStreamFinishInFlightClose(n),e=>writableStreamFinishInFlightCloseWithError(n,e))}function writableStreamDefaultControllerGetDesiredSize(e){return e[L].highWaterMark-e[L].queueTotalSize}function writableStreamDefaultControllerGetChunkSize(e,t){let{sizeAlgorithm:n}=e[L];if(n===void 0)return 1;try{return n(t)}catch(t){return writableStreamDefaultControllerErrorIfNeeded(e,t),1}}function writableStreamDefaultControllerErrorIfNeeded(e,t){e[L].stream[L].state===`writable`&&writableStreamDefaultControllerError(e,t)}function writableStreamDefaultControllerError(e,t){writableStreamDefaultControllerClearAlgorithms(e),writableStreamStartErroring(e[L].stream,t)}function writableStreamDefaultControllerClose(e){enqueueValueWithSize(e,xt,0),writableStreamDefaultControllerAdvanceQueueIfNeeded(e)}function writableStreamDefaultControllerClearAlgorithms(e){e[L].writeAlgorithm=void 0,e[L].closeAlgorithm=void 0,e[L].abortAlgorithm=void 0,e[L].sizeAlgorithm=void 0}function writableStreamDefaultControllerGetBackpressure(e){return writableStreamDefaultControllerGetDesiredSize(e)<=0}function writableStreamDefaultControllerAdvanceQueueIfNeeded(e){let{queue:t,started:n,stream:r}=e[L];if(!n||r[L].inFlightWriteRequest.promise!==void 0)return;if(r[L].state===`erroring`){writableStreamFinishErroring(r);return}if(!t.length)return;let i=peekQueueValue(e);i===xt?writableStreamDefaultControllerProcessClose(e):writableStreamDefaultControllerProcessWrite(e,i)}function setupWritableStreamDefaultControllerFromSink(e,t,n,r){let i=new WritableStreamDefaultController(Ct),o=t?.start,s=t?.write,c=t?.close,l=t?.abort;setupWritableStreamDefaultController(e,i,o?o.bind(t,i):nonOpStart,s?createPromiseCallback(`sink.write`,s,t):nonOpWrite,c?createPromiseCallback(`sink.close`,c,t):nonOpCancel,l?createPromiseCallback(`sink.abort`,l,t):nonOpCancel,n,r)}function setupWritableStreamDefaultController(e,t,n,r,i,o,s,c){t[L]={abortAlgorithm:o,closeAlgorithm:i,highWaterMark:s,queue:[],queueTotalSize:0,abortController:new yt,sizeAlgorithm:c,started:!1,stream:e,writeAlgorithm:r},e[L].controller=t,writableStreamUpdateBackpressure(e,writableStreamDefaultControllerGetBackpressure(t));let l=n();new Promise(e=>e(l)).then(()=>{t[L].started=!0,writableStreamDefaultControllerAdvanceQueueIfNeeded(t)},n=>{t[L].started=!0,writableStreamDealWithRejection(e,n)})}function createWritableStream(e,t,n,r,i=1,o=()=>1){let s=Object.create(WritableStream.prototype);return s[R]=`WritableStream`,s[L]=createWritableStreamState(),setupWritableStreamDefaultController(s,new WritableStreamDefaultController(Ct),e,t,n,r,i,o),s}const Tt=Symbol(`kCancel`),V=Symbol(`kClose`),H=Symbol(`kChunk`),U=Symbol(`kError`),Et=Symbol(`kPull`),Dt=Symbol(`kRelease`),W=Symbol(`kSkipThrow`);let Ot,kt;function lazyReadableReleasedError(){return Ot||(Ot=TypeError(`Reader released`),Ot)}function lazyReadableReleasingError(){return kt||(kt=TypeError(`Releasing reader`),kt)}function createAbortError(){if(typeof globalThis.DOMException==`function`)return new DOMException(`The operation was aborted`,`AbortError`);let e=Error(`The operation was aborted`);return e.name=`AbortError`,e}function createReadableStreamState(){return{disturbed:!1,reader:void 0,state:`readable`,storedError:void 0,controller:void 0,closedPromise:Promise.withResolvers()}}var ReadableStream$1=class{static{__name(this,`ReadableStream`)}[R]=`ReadableStream`;[L];constructor(e={},t={}){if(e!=null&&typeof e!=`object`)throw TypeError(`source must be an object`);if(t!=null&&typeof t!=`object`)throw TypeError(`strategy must be an object`);this[L]=createReadableStreamState();let n=t?.size,r=t?.highWaterMark,i=e?.type;if(i!==void 0){if(`${i}`==`bytes`){if(n!==void 0)throw RangeError(`strategy.size must not be set for a byte stream`);setupReadableByteStreamControllerFromSource(this,e,extractHighWaterMark(r,0));return}throw RangeError(`Invalid type: ${i}`)}setupReadableStreamDefaultControllerFromSource(this,e,extractHighWaterMark(r,1),extractSizeAlgorithm(n))}get locked(){if(!G(this))throw TypeError(`Invalid this`);return isReadableStreamLocked(this)}static from(e){return readableStreamFromIterable(e)}cancel(e=void 0){return G(this)?isReadableStreamLocked(this)?Promise.reject(TypeError(`ReadableStream is locked`)):readableStreamCancel(this,e):Promise.reject(TypeError(`Invalid this`))}getReader(e={}){if(!G(this))throw TypeError(`Invalid this`);if(e!=null&&typeof e!=`object`)throw TypeError(`options must be an object`);let t=e?.mode;if(t===void 0)return new ReadableStreamDefaultReader(this);if(`${t}`==`byob`)return new ReadableStreamBYOBReader(this);throw RangeError(`Invalid mode: ${t}`)}pipeThrough(e,t={}){if(!G(this))throw TypeError(`Invalid this`);let n=e?.readable;if(!G(n))throw TypeError(`transform.readable must be a ReadableStream`);let r=e?.writable;if(!z(r))throw TypeError(`transform.writable must be a WritableStream`);if(t!=null&&typeof t!=`object`)throw TypeError(`options must be an object`);let i=t?.preventAbort,o=t?.preventCancel,s=t?.preventClose,c=t?.signal;if(c!==void 0&&!(c instanceof Object&&`aborted`in c))throw TypeError(`options.signal must be an AbortSignal`);if(isReadableStreamLocked(this))throw TypeError(`The ReadableStream is locked`);if(isWritableStreamLocked(r))throw TypeError(`The WritableStream is locked`);return setPromiseHandled(readableStreamPipeTo(this,r,!!s,!!i,!!o,c)),n}pipeTo(e,t={}){try{if(!G(this))throw TypeError(`Invalid this`);if(!z(e))throw TypeError(`destination must be a WritableStream`);if(t!=null&&typeof t!=`object`)throw TypeError(`options must be an object`);let n=t?.preventAbort,r=t?.preventCancel,i=t?.preventClose,o=t?.signal;if(o!==void 0&&!(o instanceof Object&&`aborted`in o))throw TypeError(`options.signal must be an AbortSignal`);if(isReadableStreamLocked(this))throw TypeError(`The ReadableStream is locked`);if(isWritableStreamLocked(e))throw TypeError(`The WritableStream is locked`);return readableStreamPipeTo(this,e,!!i,!!n,!!r,o)}catch(e){return Promise.reject(e)}}tee(){if(!G(this))throw TypeError(`Invalid this`);let e=this[L].controller;return K(e)?readableByteStreamTee(this):readableStreamDefaultTee(this,!1)}values(e={}){if(!G(this))throw TypeError(`Invalid this`);if(e!=null&&typeof e!=`object`)throw TypeError(`options must be an object`);let t=!!e?.preventCancel,n=new ReadableStreamDefaultReader(this),r={done:!1,current:void 0},i=!1;function nextSteps(){if(r.done)return Promise.resolve({done:!0,value:void 0});if(n[L].stream===void 0)return Promise.reject(TypeError(`The reader is not bound to a ReadableStream`));let{promise:e,resolve:t,reject:i}=Promise.withResolvers();return readableStreamDefaultReaderRead(n,{[H](e){r.current=void 0,t({value:e,done:!1})},[V](){r.current=void 0,r.done=!0,readableStreamReaderGenericRelease(n),t({done:!0,value:void 0})},[U](e){r.current=void 0,r.done=!0,readableStreamReaderGenericRelease(n),i(e)}}),e}async function returnSteps(e){if(r.done)return{done:!0,value:e};if(r.done=!0,n[L].stream===void 0)throw TypeError(`The reader is not bound to a ReadableStream`);if(!t){let t=readableStreamReaderGenericCancel(n,e);return readableStreamReaderGenericRelease(n),await t,{done:!0,value:e}}return readableStreamReaderGenericRelease(n),{done:!0,value:e}}return Object.setPrototypeOf({next(){return i||=(r.current=Promise.resolve(),!0),r.current=r.current===void 0?nextSteps():r.current.then(nextSteps,nextSteps),r.current},return(e){return i=!0,r.current=r.current===void 0?returnSteps(e):r.current.then(()=>returnSteps(e),()=>returnSteps(e)),r.current},[Symbol.asyncIterator](){return this}},vt)}[Symbol.asyncIterator](){return this.values()}get[Symbol.toStringTag](){return`ReadableStream`}},DefaultReadRequest=class{[L];constructor(){this[L]=Promise.withResolvers()}[H](e){this[L].resolve?.({value:e,done:!1})}[V](){this[L].resolve?.({value:void 0,done:!0})}[U](e){this[L].reject?.(e)}get promise(){return this[L].promise}},ReadableStreamDefaultReader=class{[R]=`ReadableStreamDefaultReader`;[L];constructor(e){if(!G(e))throw TypeError(`Expected a ReadableStream`);this[L]={readRequests:[],readIntoRequests:[],stream:void 0,close:{promise:void 0,resolve:void 0,reject:void 0}},setupReadableStreamDefaultReader(this,e)}read(){if(!jt(this))return Promise.reject(TypeError(`Invalid this`));if(this[L].stream===void 0)return Promise.reject(TypeError(`The reader is not attached to a stream`));let e=this[L].stream,t=e[L].controller;if(e[L].state===`readable`&&At(t)&&t[L].queue.length>0){e[L].disturbed=!0;let n=dequeueValue(t);return t[L].closeRequested&&!t[L].queue.length?(readableStreamDefaultControllerClearAlgorithms(t),readableStreamClose(e)):readableStreamDefaultControllerCallPullIfNeeded(t),Promise.resolve({value:n,done:!1})}let n=new DefaultReadRequest;return readableStreamDefaultReaderRead(this,n),n.promise}releaseLock(){if(!jt(this))throw TypeError(`Invalid this`);this[L].stream!==void 0&&readableStreamDefaultReaderRelease(this)}get closed(){return jt(this)?this[L].close.promise:Promise.reject(TypeError(`Invalid this`))}cancel(e=void 0){return jt(this)?this[L].stream===void 0?Promise.reject(TypeError(`The reader is not attached to a stream`)):readableStreamReaderGenericCancel(this,e):Promise.reject(TypeError(`Invalid this`))}get[Symbol.toStringTag](){return`ReadableStreamDefaultReader`}},ReadableStreamDefaultController=class{[R]=`ReadableStreamDefaultController`;[L];constructor(e){if(e!==W)throw TypeError(`Illegal constructor`)}get desiredSize(){return readableStreamDefaultControllerGetDesiredSize(this)}close(){if(!readableStreamDefaultControllerCanCloseOrEnqueue(this))throw TypeError(`Controller is already closed`);readableStreamDefaultControllerClose(this)}enqueue(e=void 0){if(!readableStreamDefaultControllerCanCloseOrEnqueue(this))throw TypeError(`Controller is already closed`);readableStreamDefaultControllerEnqueue(this,e)}error(e=void 0){readableStreamDefaultControllerError(this,e)}[Tt](e){return readableStreamDefaultControllerCancelSteps(this,e)}[Et](e){readableStreamDefaultControllerPullSteps(this,e)}[Dt](){}get[Symbol.toStringTag](){return`ReadableStreamDefaultController`}};const G=isBrandCheck(`ReadableStream`),At=isBrandCheck(`ReadableStreamDefaultController`),jt=isBrandCheck(`ReadableStreamDefaultReader`);function isReadableStreamLocked(e){return e[L].reader!==void 0}function readableStreamCancel(e,t){switch(e[L].disturbed=!0,e[L].state){case`closed`:return Promise.resolve();case`errored`:return Promise.reject(e[L].storedError)}readableStreamClose(e);let n=e[L].reader;if(n!==void 0&&readableStreamHasBYOBReader(e)){let e=n[L].readIntoRequests;n[L].readIntoRequests=[];for(let t=0;t<e.length;t++)e[t][V](void 0)}return e[L].controller[Tt](t).then(()=>{})}function readableStreamClose(e){e[L].state=`closed`,e[L].closedPromise.resolve();let{reader:t}=e[L];if(t!==void 0&&(t[L].close.resolve?.(),readableStreamHasDefaultReader(e))){for(let e=0;e<t[L].readRequests.length;e++)t[L].readRequests[e][V]();t[L].readRequests=[]}}function readableStreamError(e,t){e[L].state=`errored`,e[L].storedError=t,setPromiseHandled(e[L].closedPromise.promise),e[L].closedPromise.reject(t);let{reader:n}=e[L];if(n!==void 0){if(setPromiseHandled(n[L].close.promise),n[L].close.reject?.(t),readableStreamHasDefaultReader(e)){for(let e=0;e<n[L].readRequests.length;e++)n[L].readRequests[e][U](t);n[L].readRequests=[]}else if(readableStreamHasBYOBReader(e)){for(let e=0;e<n[L].readIntoRequests.length;e++)n[L].readIntoRequests[e][U](t);n[L].readIntoRequests=[]}}}function readableStreamHasDefaultReader(e){let{reader:t}=e[L];return t===void 0?!1:t[L]!==void 0&&t[R]===`ReadableStreamDefaultReader`}function readableStreamGetNumReadRequests(e){return e[L].reader[L].readRequests.length}function readableStreamFulfillReadRequest(e,t,n){let{reader:r}=e[L],i=r[L].readRequests.shift();n?i[V]():i[H](t)}function readableStreamAddReadRequest(e,t){e[L].reader[L].readRequests.push(t)}function readableStreamReaderGenericCancel(e,t){let{stream:n}=e[L];return readableStreamCancel(n,t)}function readableStreamReaderGenericInitialize(e,t){switch(e[L].stream=t,t[L].reader=e,t[L].state){case`readable`:e[L].close=Promise.withResolvers();break;case`closed`:e[L].close={promise:Promise.resolve(),resolve:void 0,reject:void 0};break;case`errored`:e[L].close={promise:Promise.reject(t[L].storedError),resolve:void 0,reject:void 0},setPromiseHandled(e[L].close.promise);break}}function readableStreamReaderGenericRelease(e){let{stream:t}=e[L],n=lazyReadableReleasedError();t[L].state===`readable`?e[L].close.reject?.(n):e[L].close={promise:Promise.reject(n),resolve:void 0,reject:void 0},setPromiseHandled(e[L].close.promise),t[L].controller[Dt](),t[L].reader=void 0,e[L].stream=void 0}function readableStreamDefaultReaderRelease(e){readableStreamReaderGenericRelease(e),readableStreamDefaultReaderErrorReadRequests(e,lazyReadableReleasingError())}function readableStreamDefaultReaderErrorReadRequests(e,t){for(let n=0;n<e[L].readRequests.length;++n)e[L].readRequests[n][U](t);e[L].readRequests=[]}function readableStreamDefaultReaderRead(e,t){let{stream:n}=e[L];switch(n[L].disturbed=!0,n[L].state){case`closed`:t[V]();break;case`errored`:t[U](n[L].storedError);break;case`readable`:n[L].controller[Et](t);break}}function setupReadableStreamDefaultReader(e,t){if(isReadableStreamLocked(t))throw TypeError(`ReadableStream is locked`);readableStreamReaderGenericInitialize(e,t),e[L].readRequests=[]}function readableStreamDefaultControllerClose(e){readableStreamDefaultControllerCanCloseOrEnqueue(e)&&(e[L].closeRequested=!0,e[L].queue.length||(readableStreamDefaultControllerClearAlgorithms(e),readableStreamClose(e[L].stream)))}function readableStreamDefaultControllerEnqueue(e,t){if(!readableStreamDefaultControllerCanCloseOrEnqueue(e))return;let{stream:n}=e[L];if(isReadableStreamLocked(n)&&readableStreamGetNumReadRequests(n))readableStreamFulfillReadRequest(n,t,!1);else try{enqueueValueWithSize(e,t,e[L].sizeAlgorithm(t))}catch(t){throw readableStreamDefaultControllerError(e,t),t}readableStreamDefaultControllerCallPullIfNeeded(e)}function readableStreamDefaultControllerCanCloseOrEnqueue(e){let{stream:t}=e[L];return!e[L].closeRequested&&t[L].state===`readable`}function readableStreamDefaultControllerGetDesiredSize(e){let{stream:t,highWaterMark:n,queueTotalSize:r}=e[L];switch(t[L].state){case`errored`:return null;case`closed`:return 0;default:return n-r}}function readableStreamDefaultControllerHasBackpressure(e){return!readableStreamDefaultControllerShouldCallPull(e)}function readableStreamDefaultControllerShouldCallPull(e){let{stream:t}=e[L];if(!readableStreamDefaultControllerCanCloseOrEnqueue(e)||!e[L].started)return!1;if(isReadableStreamLocked(t)&&readableStreamGetNumReadRequests(t))return!0;let n=readableStreamDefaultControllerGetDesiredSize(e);return n!==null&&n>0}function readableStreamDefaultControllerCallPullIfNeeded(e){if(readableStreamDefaultControllerShouldCallPull(e)){if(e[L].pulling){e[L].pullAgain=!0;return}e[L].pulling=!0,e[L].pullAlgorithm(e).then(()=>{e[L].pulling=!1,e[L].pullAgain&&(e[L].pullAgain=!1,readableStreamDefaultControllerCallPullIfNeeded(e))},t=>readableStreamDefaultControllerError(e,t))}}function readableStreamDefaultControllerClearAlgorithms(e){e[L].pullAlgorithm=void 0,e[L].cancelAlgorithm=void 0,e[L].sizeAlgorithm=void 0}function readableStreamDefaultControllerError(e,t){let{stream:n}=e[L];n[L].state===`readable`&&(resetQueue(e),readableStreamDefaultControllerClearAlgorithms(e),readableStreamError(n,t))}function readableStreamDefaultControllerCancelSteps(e,t){resetQueue(e);let n=e[L].cancelAlgorithm?.(t)??Promise.resolve();return readableStreamDefaultControllerClearAlgorithms(e),n}function readableStreamDefaultControllerPullSteps(e,t){let{stream:n,queue:r}=e[L];if(r.length){let i=dequeueValue(e);e[L].closeRequested&&!r.length?(readableStreamDefaultControllerClearAlgorithms(e),readableStreamClose(n)):readableStreamDefaultControllerCallPullIfNeeded(e),t[H](i);return}readableStreamAddReadRequest(n,t),readableStreamDefaultControllerCallPullIfNeeded(e)}function setupReadableStreamDefaultController(e,t,n,r,i,o,s){t[L]={cancelAlgorithm:i,closeRequested:!1,highWaterMark:o,pullAgain:!1,pullAlgorithm:r,pulling:!1,queue:[],queueTotalSize:0,started:!1,sizeAlgorithm:s,stream:e},e[L].controller=t;let c=n();new Promise(e=>e(c)).then(()=>{t[L].started=!0,readableStreamDefaultControllerCallPullIfNeeded(t)},e=>readableStreamDefaultControllerError(t,e))}function setupReadableStreamDefaultControllerFromSource(e,t,n,r){let i=new ReadableStreamDefaultController(W),o=t?.start,s=t?.pull,c=t?.cancel;setupReadableStreamDefaultController(e,i,o?o.bind(t,i):nonOpStart,s?createPromiseCallback(`source.pull`,s,t):nonOpPull,c?createPromiseCallback(`source.cancel`,c,t):nonOpCancel,n,r)}function createReadableStream(e,t,n,r=1,i=()=>1){let o=Object.create(ReadableStream$1.prototype);return o[R]=`ReadableStream`,o[L]=createReadableStreamState(),setupReadableStreamDefaultController(o,new ReadableStreamDefaultController(W),e,t,n,r,i),o}function readableStreamFromIterable(e){let t,n=getIterator(e,`async`),r=nonOpStart;async function pullAlgorithm(){let e=iteratorNext(n);return Promise.resolve(e).then(e=>{if(typeof e!=`object`||!e)throw TypeError(`The promise returned by the iterator.next() method must fulfill with an object`);e.done?readableStreamDefaultControllerClose(t[L].controller):readableStreamDefaultControllerEnqueue(t[L].controller,e.value)})}async function cancelAlgorithm(e){let t=n.iterator,r=t.return;if(r===void 0)return Promise.resolve();let i=r.call(t,e);return Promise.resolve(i).then(e=>{if(typeof e!=`object`||!e)throw TypeError(`The promise returned by the iterator.return() method must fulfill with an object`)})}return t=createReadableStream(r,pullAlgorithm,cancelAlgorithm,0),t}function readableStreamPipeTo(e,t,n,r,i,o){let s,c;try{s=new ReadableStreamDefaultReader(e),c=new WritableStreamDefaultWriter(t)}catch(e){return Promise.reject(e)}e[L].disturbed=!0;let l=!1,{promise:u,resolve:d,reject:f}=Promise.withResolvers(),p={currentWrite:Promise.resolve()},m;function finalize(e,t){writableStreamDefaultWriterRelease(c),readableStreamReaderGenericRelease(s),o!==void 0&&m&&(o.removeEventListener(`abort`,m),m=void 0),e?f(t):d()}async function waitForCurrentWrite(){let e=p.currentWrite;await e,e!==p.currentWrite&&await waitForCurrentWrite()}function shutdownWithAnAction(e,n,r){if(l)return;if(l=!0,t[L].state===`writable`&&!writableStreamCloseQueuedOrInFlight(t)){waitForCurrentWrite().then(complete,e=>finalize(!0,e));return}complete();function complete(){e().then(()=>finalize(!!n,r),e=>finalize(!0,e))}}function shutdown(e,n){if(!l){if(l=!0,t[L].state===`writable`&&!writableStreamCloseQueuedOrInFlight(t)){waitForCurrentWrite().then(()=>finalize(!!e,n),e=>finalize(!0,e));return}finalize(!!e,n)}}function abortAlgorithm(){let n;n=o.reason&&o.reason.name===`AbortError`?createAbortError():o.reason;let s=[];r||s.push(()=>t[L].state===`writable`?writableStreamAbort(t,n):Promise.resolve()),i||s.push(()=>e[L].state===`readable`?readableStreamCancel(e,n):Promise.resolve()),shutdownWithAnAction(()=>Promise.all(s.map(e=>e())).then(()=>void 0),!0,n)}function watchErrored(e,t,n){e[L].state===`errored`?n(e[L].storedError):t.then(void 0,n)}function watchClosed(e,t,n){e[L].state===`closed`?n():t.then(n,()=>{})}class PipeToReadRequest{[H](e){b(()=>{p.currentWrite=writableStreamDefaultWriterWrite(c,e),setPromiseHandled(p.currentWrite),h.resolve(!1)})}[V](){h.resolve(!0)}[U](e){h.reject(e)}}let h={resolve:null,reject:null};async function step(){if(l||t[L].backpressure&&(await c[L].ready.promise,l))return!0;let n=e[L].controller;if(e[L].state===`readable`&&At(n)&&n[L].queue.length>0){for(;n[L].queue.length>0;){if(l)return!0;let r=dequeueValue(n);if(n[L].closeRequested&&!n[L].queue.length&&(readableStreamDefaultControllerClearAlgorithms(n),readableStreamClose(e)),p.currentWrite=writableStreamDefaultWriterWrite(c,r),setPromiseHandled(p.currentWrite),t[L].backpressure||t[L].state!==`writable`||writableStreamCloseQueuedOrInFlight(t))break}return readableStreamDefaultControllerCallPullIfNeeded(n),e[L].state===`closed`}let{promise:r,resolve:i,reject:o}=Promise.withResolvers();return h={resolve:i,reject:o},readableStreamDefaultReaderRead(s,new PipeToReadRequest),r}async function run(){for(;!await step(););}if(o!==void 0){if(o.aborted)return abortAlgorithm(),u;m=abortAlgorithm,o.addEventListener(`abort`,m,{once:!0})}if(setPromiseHandled(run()),watchErrored(e,s[L].close.promise,e=>{if(!r)return shutdownWithAnAction(()=>writableStreamAbort(t,e),!0,e);shutdown(!0,e)}),watchErrored(t,c[L].close.promise,t=>{if(!i)return shutdownWithAnAction(()=>readableStreamCancel(e,t),!0,t);shutdown(!0,t)}),watchClosed(e,s[L].close.promise,()=>{if(!n)return shutdownWithAnAction(()=>writableStreamDefaultWriterCloseWithErrorPropagation(c));shutdown()}),writableStreamCloseQueuedOrInFlight(t)||t[L].state===`closed`){let t=TypeError(`Destination WritableStream is closed`);i?shutdown(!0,t):shutdownWithAnAction(()=>readableStreamCancel(e,t),!0,t)}return u}function readableStreamDefaultTee(e,t){let n=new ReadableStreamDefaultReader(e),r=!1,i=!1,o=!1,s,c,l,u,d=Promise.withResolvers();async function pullAlgorithm(){r||(r=!0,readableStreamDefaultReaderRead(n,{[H](e){b(()=>{r=!1;let n=e,s=e;if(!o&&t)try{s=structuredClone(s)}catch{}i||readableStreamDefaultControllerEnqueue(l[L].controller,n),o||readableStreamDefaultControllerEnqueue(u[L].controller,s)})},[V](){b(()=>{r=!1,i||readableStreamDefaultControllerClose(l[L].controller),o||readableStreamDefaultControllerClose(u[L].controller),(!i||!o)&&d.resolve(void 0)})},[U](){r=!1}}))}function cancel1Algorithm(t){if(i=!0,s=t,o){let t=[s,c];d.resolve(readableStreamCancel(e,t))}return d.promise}function cancel2Algorithm(t){if(o=!0,c=t,i){let t=[s,c];d.resolve(readableStreamCancel(e,t))}return d.promise}return l=createReadableStream(nonOpStart,pullAlgorithm,cancel1Algorithm),u=createReadableStream(nonOpStart,pullAlgorithm,cancel2Algorithm),n[L].close.promise.then(void 0,e=>{readableStreamDefaultControllerError(l[L].controller,e),readableStreamDefaultControllerError(u[L].controller,e),(!i||!o)&&d.resolve(void 0)}),[l,u]}var BYOBReadIntoRequest=class{[L];constructor(){this[L]=Promise.withResolvers()}[H](e){this[L].resolve?.({value:e,done:!1})}[V](e){this[L].resolve?.({value:e,done:!0})}[U](e){this[L].reject?.(e)}get promise(){return this[L].promise}},ReadableStreamBYOBReader=class{[R]=`ReadableStreamBYOBReader`;[L];constructor(e){if(!G(e))throw TypeError(`Expected a ReadableStream`);this[L]={readRequests:[],readIntoRequests:[],stream:void 0,close:{promise:void 0,resolve:void 0,reject:void 0}},setupReadableStreamBYOBReader(this,e)}read(e,t={}){if(!Mt(this))return Promise.reject(TypeError(`Invalid this`));if(typeof e!=`object`||!e||!ArrayBuffer.isView(e))return Promise.reject(TypeError(`view must be an ArrayBufferView`));let n=e.buffer,r=e.byteLength;if(r===0)return Promise.reject(TypeError(`view must have non-zero byteLength`));if(n.byteLength===0)return isDetachedBuffer(n)?Promise.reject(TypeError(`view's buffer has been detached`)):Promise.reject(TypeError(`view's buffer must have non-zero byteLength`));let i=t?.min??1;if(typeof i!=`number`||i<1||!Number.isInteger(i)||Number.isNaN(i))return Promise.reject(TypeError(`options.min must be a positive integer`));let o=e[Symbol.toStringTag];if(o!==void 0&&o!==`DataView`){if(i>e.length)return Promise.reject(RangeError(`options.min must be smaller or equal to view size`))}else if(i>r)return Promise.reject(RangeError(`options.min must be smaller or equal to view size`));if(this[L].stream===void 0)return Promise.reject(TypeError(`Reader has no associated stream`));let s=new BYOBReadIntoRequest;return readableStreamBYOBReaderRead(this,e,i,s),s.promise}releaseLock(){if(!Mt(this))throw TypeError(`Invalid this`);this[L].stream!==void 0&&readableStreamBYOBReaderRelease(this)}get closed(){return Mt(this)?this[L].close.promise:Promise.reject(TypeError(`Invalid this`))}cancel(e=void 0){return Mt(this)?this[L].stream===void 0?Promise.reject(TypeError(`Reader has no associated stream`)):readableStreamReaderGenericCancel(this,e):Promise.reject(TypeError(`Invalid this`))}get[Symbol.toStringTag](){return`ReadableStreamBYOBReader`}},ReadableStreamBYOBRequest=class{[R]=`ReadableStreamBYOBRequest`;[L];constructor(e){if(e!==W)throw TypeError(`Illegal constructor`)}get view(){if(!Nt(this))throw TypeError(`Invalid this`);return this[L].view}respond(e){if(!Nt(this))throw TypeError(`Invalid this`);if(this[L].controller===void 0)throw TypeError(`BYOB request has been invalidated`);if(e=+e,!Number.isInteger(e)||e<0||!Number.isFinite(e))throw RangeError(`bytesWritten must be a non-negative integer`);let t=this[L].view;if(isDetachedBuffer(t.buffer))throw TypeError(`The BYOB request's buffer has been detached`);readableByteStreamControllerRespond(this[L].controller,e)}respondWithNewView(e){if(!Nt(this))throw TypeError(`Invalid this`);if(this[L].controller===void 0)throw TypeError(`BYOB request has been invalidated`);if(typeof e!=`object`||!e||!ArrayBuffer.isView(e))throw TypeError(`view must be an ArrayBufferView`);if(isDetachedBuffer(e.buffer))throw TypeError(`The given view's buffer has been detached`);readableByteStreamControllerRespondWithNewView(this[L].controller,e)}get[Symbol.toStringTag](){return`ReadableStreamBYOBRequest`}},ReadableByteStreamController=class{[R]=`ReadableByteStreamController`;[L];constructor(e){if(e!==W)throw TypeError(`Illegal constructor`)}get byobRequest(){if(!K(this))throw TypeError(`Invalid this`);return readableByteStreamControllerGetBYOBRequest(this)}get desiredSize(){if(!K(this))throw TypeError(`Invalid this`);return readableByteStreamControllerGetDesiredSize(this)}close(){if(!K(this))throw TypeError(`Invalid this`);if(this[L].closeRequested)throw TypeError(`Close already requested`);if(this[L].stream[L].state!==`readable`)throw TypeError(`Stream is not in a readable state`);readableByteStreamControllerClose(this)}enqueue(e){if(!K(this))throw TypeError(`Invalid this`);if(typeof e!=`object`||!e||!ArrayBuffer.isView(e))throw TypeError(`chunk must be an ArrayBufferView`);if(e.byteLength===0)throw TypeError(`chunk length must be non-zero`);if(e.buffer.byteLength===0)throw TypeError(`chunk's buffer length must be non-zero`);if(this[L].closeRequested)throw TypeError(`Cannot enqueue after close has been requested`);if(this[L].stream[L].state!==`readable`)throw TypeError(`Stream is not in a readable state`);readableByteStreamControllerEnqueue(this,e)}error(e=void 0){if(!K(this))throw TypeError(`Invalid this`);readableByteStreamControllerError(this,e)}[Tt](e){return readableByteStreamControllerCancelSteps(this,e)}[Et](e){readableByteStreamControllerPullSteps(this,e)}[Dt](){if(this[L].pendingPullIntos.length>0){let e=this[L].pendingPullIntos[0];e.readerType=`none`,this[L].pendingPullIntos=[e]}}get[Symbol.toStringTag](){return`ReadableByteStreamController`}};const K=isBrandCheck(`ReadableByteStreamController`),Mt=isBrandCheck(`ReadableStreamBYOBReader`),Nt=isBrandCheck(`ReadableStreamBYOBRequest`);function readableStreamHasBYOBReader(e){let{reader:t}=e[L];return t===void 0?!1:t[L]!==void 0&&t[R]===`ReadableStreamBYOBReader`}function readableStreamGetNumReadIntoRequests(e){return e[L].reader[L].readIntoRequests.length}function readableStreamAddReadIntoRequest(e,t){e[L].reader[L].readIntoRequests.push(t)}function readableStreamFulfillReadIntoRequest(e,t,n){let{reader:r}=e[L],i=r[L].readIntoRequests.shift();n?i[V](t):i[H](t)}function setupReadableStreamBYOBReader(e,t){if(isReadableStreamLocked(t))throw TypeError(`ReadableStream is locked`);if(!K(t[L].controller))throw TypeError(`Cannot use a BYOB reader with a non-byte stream`);readableStreamReaderGenericInitialize(e,t),e[L].readIntoRequests=[]}function readableStreamBYOBReaderRead(e,t,n,r){let{stream:i}=e[L];i[L].disturbed=!0,i[L].state===`errored`?r[U](i[L].storedError):readableByteStreamControllerPullInto(i[L].controller,t,n,r)}function readableStreamBYOBReaderRelease(e){readableStreamReaderGenericRelease(e);let t=TypeError(`Reader was released`);for(let n=0;n<e[L].readIntoRequests.length;n++)e[L].readIntoRequests[n][U](t);e[L].readIntoRequests=[]}function readableByteStreamControllerClearAlgorithms(e){e[L].pullAlgorithm=void 0,e[L].cancelAlgorithm=void 0}function readableByteStreamControllerClearPendingPullIntos(e){readableByteStreamControllerInvalidateBYOBRequest(e),e[L].pendingPullIntos=[]}function readableByteStreamControllerInvalidateBYOBRequest(e){let t=e[L].byobRequest;t!=null&&(t[L].controller=void 0,t[L].view=null,e[L].byobRequest=null)}function readableByteStreamControllerError(e,t){let{stream:n}=e[L];n[L].state===`readable`&&(readableByteStreamControllerClearPendingPullIntos(e),resetQueue(e),readableByteStreamControllerClearAlgorithms(e),readableStreamError(n,t))}function readableByteStreamControllerGetDesiredSize(e){let t=e[L].stream[L].state;return t===`errored`?null:t===`closed`?0:e[L].highWaterMark-e[L].queueTotalSize}function readableByteStreamControllerShouldCallPull(e){let{stream:t}=e[L];if(t[L].state!==`readable`||e[L].closeRequested||!e[L].started)return!1;if(readableStreamHasDefaultReader(t)&&readableStreamGetNumReadRequests(t)>0||readableStreamHasBYOBReader(t)&&readableStreamGetNumReadIntoRequests(t)>0)return!0;let n=readableByteStreamControllerGetDesiredSize(e);return n!==null&&n>0}function readableByteStreamControllerCallPullIfNeeded(e){if(readableByteStreamControllerShouldCallPull(e)){if(e[L].pulling){e[L].pullAgain=!0;return}e[L].pulling=!0,e[L].pullAlgorithm(e).then(()=>{e[L].pulling=!1,e[L].pullAgain&&(e[L].pullAgain=!1,readableByteStreamControllerCallPullIfNeeded(e))},t=>readableByteStreamControllerError(e,t))}}function readableByteStreamControllerHandleQueueDrain(e){e[L].queueTotalSize===0&&e[L].closeRequested?(readableByteStreamControllerClearAlgorithms(e),readableStreamClose(e[L].stream)):readableByteStreamControllerCallPullIfNeeded(e)}function readableByteStreamControllerEnqueueChunkToQueue(e,t,n,r){e[L].queue.push({buffer:t,byteOffset:n,byteLength:r}),e[L].queueTotalSize+=r}function readableByteStreamControllerEnqueueClonedChunkToQueue(e,t,n,r){let i;try{i=t.slice(n,n+r)}catch(t){readableByteStreamControllerError(e,t);return}readableByteStreamControllerEnqueueChunkToQueue(e,i,0,r)}function readableByteStreamControllerEnqueueDetachedPullIntoToQueue(e,t){t.bytesFilled>0&&readableByteStreamControllerEnqueueClonedChunkToQueue(e,t.buffer,t.byteOffset,t.bytesFilled),readableByteStreamControllerShiftPendingPullInto(e)}function readableByteStreamControllerShiftPendingPullInto(e){return e[L].pendingPullIntos.shift()}function readableByteStreamControllerFillHeadPullIntoDescriptor(e,t,n){n.bytesFilled+=t}function readableByteStreamControllerConvertPullIntoDescriptor(e){let t=e.bytesFilled,n=e.elementSize,r=transferArrayBuffer(e.buffer);return e.buffer=r,new e.viewConstructor(r,e.byteOffset,t/n)}function readableByteStreamControllerCommitPullIntoDescriptor(e,t){let n=!1;e[L].state===`closed`&&(n=!0);let r=readableByteStreamControllerConvertPullIntoDescriptor(t);t.readerType==="default"?readableStreamFulfillReadRequest(e,r,n):readableStreamFulfillReadIntoRequest(e,r,n)}function readableByteStreamControllerFillPullIntoDescriptorFromQueue(e,t){let n=Math.min(e[L].queueTotalSize,t.byteLength-t.bytesFilled),r=t.bytesFilled+n,i=n,o=!1,s=r-r%t.elementSize;s>=t.minimumFill&&(i=s-t.bytesFilled,o=!0);let c=e[L].queue;for(;i>0;){let n=c[0],r=Math.min(i,n.byteLength),o=t.byteOffset+t.bytesFilled,s=new Uint8Array(t.buffer,o,r),l=new Uint8Array(n.buffer,n.byteOffset,r);s.set(l),n.byteLength===r?c.shift():(n.byteOffset+=r,n.byteLength-=r),e[L].queueTotalSize-=r,readableByteStreamControllerFillHeadPullIntoDescriptor(e,r,t),i-=r}return o}function readableByteStreamControllerFillReadRequestFromQueue(e,t){let n=e[L].queue.shift();e[L].queueTotalSize-=n.byteLength,readableByteStreamControllerHandleQueueDrain(e);let r=new Uint8Array(n.buffer,n.byteOffset,n.byteLength);t[H](r)}function readableByteStreamControllerProcessReadRequestsUsingQueue(e){let t=e[L].stream[L].reader;for(;t[L].readRequests.length!==0;){if(e[L].queueTotalSize===0)return;readableByteStreamControllerFillReadRequestFromQueue(e,t[L].readRequests.shift())}}function readableByteStreamControllerProcessPullIntoDescriptorsUsingQueue(e){for(;e[L].pendingPullIntos.length!==0;){if(e[L].queueTotalSize===0)return;let t=e[L].pendingPullIntos[0];readableByteStreamControllerFillPullIntoDescriptorFromQueue(e,t)&&(readableByteStreamControllerShiftPendingPullInto(e),readableByteStreamControllerCommitPullIntoDescriptor(e[L].stream,t))}}function readableByteStreamControllerGetBYOBRequest(e){if(e[L].byobRequest===null&&e[L].pendingPullIntos.length!==0){let t=e[L].pendingPullIntos[0],n=new Uint8Array(t.buffer,t.byteOffset+t.bytesFilled,t.byteLength-t.bytesFilled),r=new ReadableStreamBYOBRequest(W);r[L]={controller:e,view:n},e[L].byobRequest=r}return e[L].byobRequest}function readableByteStreamControllerEnqueue(e,t){let{stream:n}=e[L];if(e[L].closeRequested||n[L].state!==`readable`)return;let r=t.buffer,i=t.byteLength,o=t.byteOffset;if(isDetachedBuffer(r))throw TypeError(`chunk's buffer is detached`);let s=transferArrayBuffer(r);if(e[L].pendingPullIntos.length!==0){let t=e[L].pendingPullIntos[0];if(isDetachedBuffer(t.buffer))throw TypeError(`BYOB request's buffer has been detached`);readableByteStreamControllerInvalidateBYOBRequest(e),t.buffer=transferArrayBuffer(t.buffer),t.readerType===`none`&&readableByteStreamControllerEnqueueDetachedPullIntoToQueue(e,t)}readableStreamHasDefaultReader(n)?(readableByteStreamControllerProcessReadRequestsUsingQueue(e),readableStreamGetNumReadRequests(n)===0?readableByteStreamControllerEnqueueChunkToQueue(e,s,o,i):(e[L].pendingPullIntos.length!==0&&readableByteStreamControllerShiftPendingPullInto(e),readableStreamFulfillReadRequest(n,new Uint8Array(s,o,i),!1))):readableStreamHasBYOBReader(n)?(readableByteStreamControllerEnqueueChunkToQueue(e,s,o,i),readableByteStreamControllerProcessPullIntoDescriptorsUsingQueue(e)):readableByteStreamControllerEnqueueChunkToQueue(e,s,o,i),readableByteStreamControllerCallPullIfNeeded(e)}function readableByteStreamControllerClose(e){let{stream:t}=e[L];if(!(e[L].closeRequested||t[L].state!==`readable`)){if(e[L].queueTotalSize>0){e[L].closeRequested=!0;return}if(e[L].pendingPullIntos.length!==0){let t=e[L].pendingPullIntos[0];if(t.bytesFilled%t.elementSize!==0){let t=TypeError(`Insufficient bytes to fill elements in the given buffer`);throw readableByteStreamControllerError(e,t),t}}readableByteStreamControllerClearAlgorithms(e),readableStreamClose(t)}}function readableByteStreamControllerPullInto(e,t,n,r){let i=e[L].stream,o=t[Symbol.toStringTag],s,c;if(o===void 0||o===`DataView`)s=DataView,c=1;else{let e=typedArrayConstructorByTag(o);if(!e){r[U](TypeError(`Unsupported typed array: ${o}`));return}s=e,c=elementSizeByTag(o)}let l=t.buffer,u=t.byteLength,d=t.byteOffset,f=n*c,p;try{p=transferArrayBuffer(l)}catch(e){r[U](e);return}let m={buffer:p,bufferByteLength:p.byteLength,byteOffset:d,byteLength:u,bytesFilled:0,minimumFill:f,elementSize:c,viewConstructor:s,readerType:`byob`};if(e[L].pendingPullIntos.length!==0){e[L].pendingPullIntos.push(m),readableStreamAddReadIntoRequest(i,r);return}if(i[L].state===`closed`){let e=new s(m.buffer,m.byteOffset,0);r[V](e);return}if(e[L].queueTotalSize>0){if(readableByteStreamControllerFillPullIntoDescriptorFromQueue(e,m)){let t=readableByteStreamControllerConvertPullIntoDescriptor(m);readableByteStreamControllerHandleQueueDrain(e),r[H](t);return}if(e[L].closeRequested){let t=TypeError(`Insufficient bytes to fill elements in the given buffer`);readableByteStreamControllerError(e,t),r[U](t);return}}e[L].pendingPullIntos.push(m),readableStreamAddReadIntoRequest(i,r),readableByteStreamControllerCallPullIfNeeded(e)}function readableByteStreamControllerRespond(e,t){let n=e[L].pendingPullIntos[0];if(e[L].stream[L].state===`closed`){if(t!==0)throw TypeError(`bytesWritten must be 0 when calling respond() on a closed stream`)}else{if(t===0)throw TypeError(`bytesWritten must be greater than 0 when calling respond() on a readable stream`);if(n.bytesFilled+t>n.byteLength)throw RangeError(`bytesWritten out of range`)}n.buffer=transferArrayBuffer(n.buffer),readableByteStreamControllerRespondInternal(e,t)}function readableByteStreamControllerRespondWithNewView(e,t){let n=e[L].pendingPullIntos[0],r=e[L].stream[L].state,i=t.byteLength,o=t.byteOffset,s=t.buffer;if(r===`closed`){if(i!==0)throw TypeError(`view's length must be 0 when calling respondWithNewView() on a closed stream`)}else if(i===0)throw TypeError(`view's length must be greater than 0 when calling respondWithNewView() on a readable stream`);if(n.byteOffset+n.bytesFilled!==o)throw RangeError(`The region specified by view does not match byobRequest`);if(n.bufferByteLength!==s.byteLength)throw RangeError(`The buffer of view has different capacity than byobRequest`);if(n.bytesFilled+i>n.byteLength)throw RangeError(`The region specified by view is larger than byobRequest`);n.buffer=transferArrayBuffer(s),readableByteStreamControllerRespondInternal(e,i)}function readableByteStreamControllerRespondInternal(e,t){let n=e[L].pendingPullIntos[0];readableByteStreamControllerInvalidateBYOBRequest(e),e[L].stream[L].state===`closed`?readableByteStreamControllerRespondInClosedState(e,n):readableByteStreamControllerRespondInReadableState(e,t,n),readableByteStreamControllerCallPullIfNeeded(e)}function readableByteStreamControllerRespondInClosedState(e,t){t.readerType===`none`&&readableByteStreamControllerShiftPendingPullInto(e);let n=e[L].stream;if(readableStreamHasBYOBReader(n))for(;readableStreamGetNumReadIntoRequests(n)>0;)readableByteStreamControllerCommitPullIntoDescriptor(n,readableByteStreamControllerShiftPendingPullInto(e))}function readableByteStreamControllerRespondInReadableState(e,t,n){if(readableByteStreamControllerFillHeadPullIntoDescriptor(e,t,n),n.readerType===`none`){readableByteStreamControllerEnqueueDetachedPullIntoToQueue(e,n),readableByteStreamControllerProcessPullIntoDescriptorsUsingQueue(e);return}if(n.bytesFilled<n.minimumFill)return;readableByteStreamControllerShiftPendingPullInto(e);let r=n.bytesFilled%n.elementSize;if(r>0){let t=n.byteOffset+n.bytesFilled;readableByteStreamControllerEnqueueClonedChunkToQueue(e,n.buffer,t-r,r)}n.bytesFilled-=r,readableByteStreamControllerCommitPullIntoDescriptor(e[L].stream,n),readableByteStreamControllerProcessPullIntoDescriptorsUsingQueue(e)}function readableByteStreamControllerCancelSteps(e,t){readableByteStreamControllerClearPendingPullIntos(e),resetQueue(e);let n=e[L].cancelAlgorithm?.(t)??Promise.resolve();return readableByteStreamControllerClearAlgorithms(e),n}function readableByteStreamControllerPullSteps(e,t){let n=e[L].stream;if(e[L].queueTotalSize>0){readableByteStreamControllerFillReadRequestFromQueue(e,t);return}let r=e[L].autoAllocateChunkSize;if(r!==void 0){let n;try{n=new ArrayBuffer(r)}catch(e){t[U](e);return}let i={buffer:n,bufferByteLength:r,byteOffset:0,byteLength:r,bytesFilled:0,minimumFill:1,elementSize:1,viewConstructor:Uint8Array,readerType:`default`};e[L].pendingPullIntos.push(i)}readableStreamAddReadRequest(n,t),readableByteStreamControllerCallPullIfNeeded(e)}function setupReadableByteStreamController(e,t,n,r,i,o,s){t[L]={cancelAlgorithm:i,closeRequested:!1,highWaterMark:o,pullAgain:!1,pullAlgorithm:r,pulling:!1,queue:[],queueTotalSize:0,started:!1,stream:e,byobRequest:null,pendingPullIntos:[],autoAllocateChunkSize:s},e[L].controller=t;let c=n();new Promise(e=>e(c)).then(()=>{t[L].started=!0,readableByteStreamControllerCallPullIfNeeded(t)},e=>readableByteStreamControllerError(t,e))}function setupReadableByteStreamControllerFromSource(e,t,n){let r=new ReadableByteStreamController(W),i=t?.start,o=t?.pull,s=t?.cancel,c=t?.autoAllocateChunkSize;if(c!==void 0&&(c===0||!Number.isInteger(c)||c<0))throw TypeError(`autoAllocateChunkSize must be a positive integer`);setupReadableByteStreamController(e,r,i?i.bind(t,r):nonOpStart,o?createPromiseCallback(`source.pull`,o,t):nonOpPull,s?createPromiseCallback(`source.cancel`,s,t):nonOpCancel,n,c)}function readableByteStreamTee(e){let t=new ReadableStreamDefaultReader(e),n=!1,r=!1,i=!1,o,s,c=Promise.withResolvers(),l,u,d,f;function pullAlgorithm(){return n?Promise.resolve():(n=!0,t.read().then(e=>{if(n=!1,e.done){r||d.close(),i||f.close();return}let t=e.value,o=new Uint8Array(t.buffer.slice(t.byteOffset,t.byteOffset+t.byteLength));r||d.enqueue(o),i||f.enqueue(new Uint8Array(o))},()=>{}),Promise.resolve())}return l=new ReadableStream$1({type:`bytes`,pull:pullAlgorithm,cancel(t){if(r=!0,o=t,i){let t=readableStreamCancel(e,[o,s]);return c.resolve(),t}return c.promise}}),u=new ReadableStream$1({type:`bytes`,pull:pullAlgorithm,cancel(t){if(i=!0,s=t,r){let t=readableStreamCancel(e,[o,s]);return c.resolve(),t}return c.promise}}),d=l[L].controller,f=u[L].controller,t.closed.catch(e=>{d.error(e),f.error(e),(!r||!i)&&c.resolve()}),[l,u]}const Pt=Symbol(`kSkipThrow`);var TransformStream=class{[R]=`TransformStream`;[L];constructor(e={},t={},n={}){if(e!=null&&typeof e!=`object`)throw TypeError(`transformer must be an object`);if(t!=null&&typeof t!=`object`)throw TypeError(`writableStrategy must be an object`);if(n!=null&&typeof n!=`object`)throw TypeError(`readableStrategy must be an object`);let r=e?.readableType,i=e?.writableType,o=e?.start;if(r!==void 0)throw RangeError(`Invalid readableType: ${r}`);if(i!==void 0)throw RangeError(`Invalid writableType: ${i}`);let s=extractHighWaterMark(n?.highWaterMark,0),c=extractSizeAlgorithm(n?.size),l=extractHighWaterMark(t?.highWaterMark,1),u=extractSizeAlgorithm(t?.size),d=Promise.withResolvers();initializeTransformStream(this,d,l,u,s,c),setupTransformStreamDefaultControllerFromTransformer(this,e),o===void 0?d.resolve():d.resolve(o.call(e,this[L].controller))}get readable(){if(!Ft(this))throw TypeError(`Invalid this`);return this[L].readable}get writable(){if(!Ft(this))throw TypeError(`Invalid this`);return this[L].writable}get[Symbol.toStringTag](){return`TransformStream`}},TransformStreamDefaultController=class{[R]=`TransformStreamDefaultController`;[L];constructor(e){if(e!==Pt)throw TypeError(`Illegal constructor`)}get desiredSize(){if(!It(this))throw TypeError(`Invalid this`);let{stream:e}=this[L],{readable:t}=e[L],n=t[L].controller;return readableStreamDefaultControllerGetDesiredSize(n)}enqueue(e){if(!It(this))throw TypeError(`Invalid this`);transformStreamDefaultControllerEnqueue(this,e)}error(e){if(!It(this))throw TypeError(`Invalid this`);transformStreamDefaultControllerError(this,e)}terminate(){if(!It(this))throw TypeError(`Invalid this`);transformStreamDefaultControllerTerminate(this)}get[Symbol.toStringTag](){return`TransformStreamDefaultController`}};const Ft=isBrandCheck(`TransformStream`),It=isBrandCheck(`TransformStreamDefaultController`);async function defaultTransformAlgorithm(e,t){transformStreamDefaultControllerEnqueue(t,e)}function initializeTransformStream(e,t,n,r,i,o){let startAlgorithm=()=>t.promise,s=createWritableStream(startAlgorithm,t=>transformStreamDefaultSinkWriteAlgorithm(e,t),()=>transformStreamDefaultSinkCloseAlgorithm(e),t=>transformStreamDefaultSinkAbortAlgorithm(e,t),n,r);e[L]={readable:createReadableStream(startAlgorithm,()=>transformStreamDefaultSourcePullAlgorithm(e),t=>transformStreamDefaultSourceCancelAlgorithm(e,t),i,o),writable:s,controller:void 0,backpressure:void 0,backpressureChange:{promise:void 0,resolve:void 0,reject:void 0}},transformStreamSetBackpressure(e,!0)}function transformStreamError(e,t){let{readable:n}=e[L];readableStreamDefaultControllerError(n[L].controller,t),transformStreamErrorWritableAndUnblockWrite(e,t)}function transformStreamErrorWritableAndUnblockWrite(e,t){let{controller:n,writable:r}=e[L];transformStreamDefaultControllerClearAlgorithms(n),writableStreamDefaultControllerErrorIfNeeded(r[L].controller,t),transformStreamUnblockWrite(e)}function transformStreamUnblockWrite(e){e[L].backpressure&&transformStreamSetBackpressure(e,!1)}function transformStreamSetBackpressure(e,t){e[L].backpressureChange.promise!==void 0&&e[L].backpressureChange.resolve?.(),e[L].backpressureChange=Promise.withResolvers(),e[L].backpressure=t}function setupTransformStreamDefaultController(e,t,n,r,i){t[L]={stream:e,transformAlgorithm:n,flushAlgorithm:r,cancelAlgorithm:i,finishPromise:void 0},e[L].controller=t}function setupTransformStreamDefaultControllerFromTransformer(e,t){let n=new TransformStreamDefaultController(Pt),r=t?.transform,i=t?.flush,o=t?.cancel;setupTransformStreamDefaultController(e,n,r?createPromiseCallback(`transformer.transform`,r,t):defaultTransformAlgorithm,i?createPromiseCallback(`transformer.flush`,i,t):nonOpFlush,o?createPromiseCallback(`transformer.cancel`,o,t):nonOpCancel)}function transformStreamDefaultControllerClearAlgorithms(e){e[L].transformAlgorithm=void 0,e[L].flushAlgorithm=void 0,e[L].cancelAlgorithm=void 0}function transformStreamDefaultControllerEnqueue(e,t){let{stream:n}=e[L],{readable:r}=n[L],i=r[L].controller;if(!readableStreamDefaultControllerCanCloseOrEnqueue(i))throw TypeError(`Unable to enqueue`);try{readableStreamDefaultControllerEnqueue(i,t)}catch(e){throw transformStreamErrorWritableAndUnblockWrite(n,e),r[L].storedError}readableStreamDefaultControllerHasBackpressure(i)!==n[L].backpressure&&transformStreamSetBackpressure(n,!0)}function transformStreamDefaultControllerError(e,t){transformStreamError(e[L].stream,t)}async function transformStreamDefaultControllerPerformTransform(e,t){try{let n=e[L].transformAlgorithm;if(n===void 0)return;await n(t,e)}catch(t){throw transformStreamError(e[L].stream,t),t}}function transformStreamDefaultControllerTerminate(e){let{stream:t}=e[L],{readable:n}=t[L];readableStreamDefaultControllerClose(n[L].controller),transformStreamErrorWritableAndUnblockWrite(t,TypeError(`TransformStream has been terminated`))}function transformStreamDefaultSinkWriteAlgorithm(e,t){let{controller:n}=e[L];return e[L].backpressure?e[L].backpressureChange.promise.then(()=>{let{writable:r}=e[L];if(r[L].state===`erroring`)throw r[L].storedError;return transformStreamDefaultControllerPerformTransform(n,t)}):transformStreamDefaultControllerPerformTransform(n,t)}async function transformStreamDefaultSinkAbortAlgorithm(e,t){let{controller:n,readable:r}=e[L];if(n[L].finishPromise!==void 0)return n[L].finishPromise;let{promise:i,resolve:o,reject:s}=Promise.withResolvers();n[L].finishPromise=i;let c=n[L].cancelAlgorithm(t);return transformStreamDefaultControllerClearAlgorithms(n),c.then(()=>{r[L].state===`errored`?s(r[L].storedError):(readableStreamDefaultControllerError(r[L].controller,t),o())},e=>{readableStreamDefaultControllerError(r[L].controller,e),s(e)}),n[L].finishPromise}function transformStreamDefaultSinkCloseAlgorithm(e){let{readable:t,controller:n}=e[L];if(n[L].finishPromise!==void 0)return n[L].finishPromise;let{promise:r,resolve:i,reject:o}=Promise.withResolvers();n[L].finishPromise=r;let s=n[L].flushAlgorithm(n);return transformStreamDefaultControllerClearAlgorithms(n),s.then(()=>{t[L].state===`errored`?o(t[L].storedError):(readableStreamDefaultControllerClose(t[L].controller),i())},e=>{readableStreamDefaultControllerError(t[L].controller,e),o(e)}),n[L].finishPromise}function transformStreamDefaultSourcePullAlgorithm(e){return transformStreamSetBackpressure(e,!1),e[L].backpressureChange.promise}function transformStreamDefaultSourceCancelAlgorithm(e,t){let{controller:n,writable:r}=e[L];if(n[L].finishPromise!==void 0)return n[L].finishPromise;let{promise:i,resolve:o,reject:s}=Promise.withResolvers();n[L].finishPromise=i;let c=n[L].cancelAlgorithm(t);return transformStreamDefaultControllerClearAlgorithms(n),c.then(()=>{r[L].state===`errored`?s(r[L].storedError):(writableStreamDefaultControllerErrorIfNeeded(r[L].controller,t),transformStreamUnblockWrite(e),o())},t=>{writableStreamDefaultControllerErrorIfNeeded(r[L].controller,t),transformStreamUnblockWrite(e),s(t)}),n[L].finishPromise}const Lt=Object.defineProperty(e=>e.byteLength,"name",{value:`size`}),Rt=Object.defineProperty(()=>1,"name",{value:`size`});var ByteLengthQueuingStrategy=class{#e;constructor(e){if(typeof e!=`object`||!e)throw TypeError(`init must be an object`);if(e.highWaterMark===void 0)throw TypeError(`init.highWaterMark is required`);this.#e=+e.highWaterMark}get highWaterMark(){return this.#e}get size(){return Lt}get[Symbol.toStringTag](){return`ByteLengthQueuingStrategy`}},CountQueuingStrategy=class{#e;constructor(e){if(typeof e!=`object`||!e)throw TypeError(`init must be an object`);if(e.highWaterMark===void 0)throw TypeError(`init.highWaterMark is required`);this.#e=+e.highWaterMark}get highWaterMark(){return this.#e}get size(){return Rt}get[Symbol.toStringTag](){return`CountQueuingStrategy`}},TextEncoderStream=class{#e=null;#t=new TextEncoder;#n;constructor(){this.#n=new TransformStream({transform:(e,t)=>{if(e=String(e),e===``)return;this.#e!==null&&(e=this.#e+e);let n=e.charCodeAt(e.length-1);55296<=n&&n<=56319?(this.#e=e.slice(-1),e=e.slice(0,-1)):this.#e=null,e&&t.enqueue(this.#t.encode(e))},flush:e=>{this.#e!==null&&e.enqueue(new Uint8Array([239,191,189]))}})}get encoding(){return`utf-8`}get readable(){return this.#n.readable}get writable(){return this.#n.writable}};function hasStreamingSupport(){try{return new TextDecoder().decode(new Uint8Array([195]),{stream:!0}),!0}catch{return!1}}const zt=hasStreamingSupport();function incompleteUtf8Tail(e){let t=e.length;if(t===0)return 0;for(let n=1;n<=Math.min(3,t);n++){let r=e[t-n];if(!(r&128))return 0;if((r&192)!=128){let e;if((r&224)==192)e=2;else if((r&240)==224)e=3;else if((r&248)==240)e=4;else return 0;return n<e?n:0}}return 0}var TextDecoderStream=class{#e;#t;constructor(e,t){if(this.#e=new TextDecoder(e,t),zt)this.#t=new TransformStream({transform:(e,t)=>{let n=toUint8Array(e),r=this.#e.decode(n,{stream:!0});r&&t.enqueue(r)},flush:e=>{let t=this.#e.decode();t&&e.enqueue(t)},cancel:()=>{this.#e.decode()}});else{let e=new Uint8Array;this.#t=new TransformStream({transform:(t,n)=>{let r=toUint8Array(t),i;e.length>0?(i=new Uint8Array(e.length+r.length),i.set(e,0),i.set(r,e.length)):i=r;let o=incompleteUtf8Tail(i),s;if(o>0?(s=i.slice(0,i.length-o),e=i.slice(i.length-o)):(s=i,e=new Uint8Array),s.length>0){let e=this.#e.decode(s);e&&n.enqueue(e)}},flush:t=>{if(e.length>0){let n=this.#e.decode(e);n&&t.enqueue(n),e=new Uint8Array}},cancel:()=>{e=new Uint8Array}})}}get encoding(){return this.#e.encoding}get fatal(){return this.#e.fatal}get ignoreBOM(){return this.#e.ignoreBOM}get readable(){return this.#t.readable}get writable(){return this.#t.writable}};function toUint8Array(e){if(e instanceof Uint8Array)return e;if(e instanceof ArrayBuffer)return new Uint8Array(e);if(ArrayBuffer.isView(e))return new Uint8Array(e.buffer,e.byteOffset,e.byteLength);throw TypeError(`chunk must be a BufferSource`)}function isNativeStreamUsable$3(e,t){try{return typeof e==`function`?typeof e.prototype?.[t]==`function`:!1}catch{return!1}}__name(isNativeStreamUsable$3,`isNativeStreamUsable`);const Bt=isNativeStreamUsable$3(globalThis.ReadableStream,`getReader`)?globalThis.ReadableStream:ReadableStream$1,Vt=isNativeStreamUsable$3(globalThis.WritableStream,`getWriter`)?globalThis.WritableStream:WritableStream,Ht=isNativeStreamUsable$3(globalThis.TransformStream,`readable`)?globalThis.TransformStream:TransformStream,Ut=typeof globalThis.ByteLengthQueuingStrategy==`function`?globalThis.ByteLengthQueuingStrategy:ByteLengthQueuingStrategy,Wt=typeof globalThis.CountQueuingStrategy==`function`?globalThis.CountQueuingStrategy:CountQueuingStrategy,Gt=typeof globalThis.TextEncoderStream==`function`?globalThis.TextEncoderStream:TextEncoderStream,Kt=typeof globalThis.TextDecoderStream==`function`?globalThis.TextDecoderStream:TextDecoderStream,qt=globalThis;globalThis.ByteLengthQueuingStrategy===void 0&&(qt.ByteLengthQueuingStrategy=Ut),globalThis.CountQueuingStrategy===void 0&&(qt.CountQueuingStrategy=Wt);const q=globalThis;function isNativeStreamUsable$2(e,t){try{return typeof e==`function`?typeof e.prototype?.[t]==`function`:!1}catch{return!1}}__name(isNativeStreamUsable$2,`isNativeStreamUsable`),isNativeStreamUsable$2(globalThis.ReadableStream,`getReader`)||(q.ReadableStream=Bt),q.ReadableStreamBYOBReader===void 0&&(q.ReadableStreamBYOBReader=ReadableStreamBYOBReader),q.ReadableStreamBYOBRequest===void 0&&(q.ReadableStreamBYOBRequest=ReadableStreamBYOBRequest),q.ReadableByteStreamController===void 0&&(q.ReadableByteStreamController=ReadableByteStreamController),q.ReadableStreamDefaultController===void 0&&(q.ReadableStreamDefaultController=ReadableStreamDefaultController),q.ReadableStreamDefaultReader===void 0&&(q.ReadableStreamDefaultReader=ReadableStreamDefaultReader);const Jt=globalThis;globalThis.TextEncoderStream===void 0&&(Jt.TextEncoderStream=Gt),globalThis.TextDecoderStream===void 0&&(Jt.TextDecoderStream=Kt);function isNativeStreamUsable$1(e,t){try{return typeof e==`function`?typeof e.prototype?.[t]==`function`:!1}catch{return!1}}if(__name(isNativeStreamUsable$1,`isNativeStreamUsable`),!isNativeStreamUsable$1(globalThis.TransformStream,`readable`)){let e=globalThis;e.TransformStream=Ht}function isNativeStreamUsable(e,t){try{return typeof e==`function`?typeof e.prototype?.[t]==`function`:!1}catch{return!1}}if(!isNativeStreamUsable(globalThis.WritableStream,`getWriter`)){let e=globalThis;e.WritableStream=Vt}const Yt=[`Overview`,`Presentation`,`Boxed Lists`,`Controls`,`Buttons`,`Text`,`Drawing`,`Media`,`Layout`,`Windows`,`View Switching`,`Navigation`,`Feedback`];function orderCategories(e){let t=new Map(Yt.map((e,t)=>[e,t])),n=[...e].filter(e=>t.has(e));n.sort((e,n)=>t.get(e)-t.get(n));let r=e.filter(e=>!t.has(e));return[...n,...r]}var StoryRegistry=class{constructor(){this.modules=[]}registerStory(e){if(!e||!Array.isArray(e.stories)){y.warn(`Invalid story module provided to registerStory`);return}this.modules.push(e)}registerStories(e){if(!Array.isArray(e)){y.warn(`Invalid story modules array provided to registerStories`);return}let t=e.filter(e=>e&&Array.isArray(e.stories));this.modules.push(...t)}getStories(){return[...this.modules]}createStoryInstances(){for(let e of this.modules)this.instantiateStoriesForModule(e);return[...this.modules]}instantiateStoriesForModule(e){e.instances=[];let t=e.decorators??[];for(let n of e.stories)try{let r=new n,build=()=>{typeof r.initialize==`function`&&r.initialize()};t.reduceRight((e,t)=>()=>t(e,r),build)(),e.instances.push(r)}catch(e){y.error(`Failed to instantiate story: ${n.name||`Unknown`}`,e)}}},StorybookController=class{constructor(e,t){this._registry=new StoryRegistry,this._activeStory=null,this._unsubArgs=null,this._view=e,this._buildControls=t}mount(e,t=!0){this._registry.registerStories(e);let n=this._registry.createStoryInstances(),r=this._groupByCategory(n);if(this._view.renderSidebar(r,e=>this.select(e)),t){let e=r[0]?.stories[0]?.instance??null;e&&this.select(e)}}select(e){this._view.setPreviewTitle(`${e.meta.title} — ${e.story}`),this._view.showPreview(e),this._view.markSelected(e.meta.title),this._wireControls(e),this._activeStory=e}_wireControls(e){this._unsubArgs&&=(this._unsubArgs(),null);let t=this._buildControls(e),n=t.map(e=>e.refresh);this._view.renderControls(t),this._unsubArgs=e.onArgsChanged(e=>{for(let t of n)t(e)})}_groupByCategory(e){let t=new Map;for(let n of e)for(let e of n.instances??[]){let n=e.meta.title.split(`/`),r=n[0],i=n.length>1?n[1]:e.meta.title;t.has(r)||t.set(r,[]),t.get(r).push({instance:e,name:i||`Unnamed`})}return orderCategories([...t.keys()]).map(e=>({category:e,stories:t.get(e)}))}get activeStory(){return this._activeStory}listStories(){return this._registry.getStories().flatMap(e=>(e.instances??[]).map(e=>({title:e.meta.title,story:e.story,category:e.meta.title.split(`/`)[0],controls:e.meta.controls??[]})))}openStoryByTitle(e){let t=this._findByTitle(e);return t?(this.select(t),!0):!1}getCurrentStory(){let e=this._activeStory;return e?{title:e.meta.title,story:e.story,args:e.args}:null}setActiveArg(e,t){let n=this._activeStory;return n?(n.setArg(e,t),!0):!1}_findByTitle(e){for(let t of this._registry.getStories())for(let n of t.instances??[])if(n.meta.title===e)return n;return null}};let J=function(e){return e.TEXT=`text`,e.NUMBER=`number`,e.BOOLEAN=`boolean`,e.SELECT=`select`,e.RANGE=`range`,e.COLOR=`color`,e}({});function isStoryModule(e){return typeof e==`object`&&!!e&&Array.isArray(e.stories)}function argsFromControls(e=[]){let t={};for(let n of e)t[n.name]=defaultFor(n);return t}function defaultFor(e){if(e.defaultValue!==void 0)return e.defaultValue;switch(e.type){case`text`:return``;case`color`:return`#000000`;case`boolean`:return!1;case`number`:case`range`:return e.min??0;case`select`:return e.options[0]?.value??null;default:return null}}function controlLabel(e){return e.label||e.name}function bindControl(e,t,n){let r=t.name,i=t.description;switch(t.type){case J.TEXT:{let o=n.text(controlLabel(t),i),s=e.args[r];return o.set(typeof s==`string`?s:``),o.onChange(t=>e.setArg(r,t)),{view:o.node,refresh:e=>{let t=typeof e[r]==`string`?e[r]:``;o.get()!==t&&o.set(t)}}}case J.COLOR:{let o=n.color(controlLabel(t),i),s=e.args[r];return o.set(typeof s==`string`?s:`#000000`),o.onChange(t=>e.setArg(r,t)),{view:o.node,refresh:e=>{let t=typeof e[r]==`string`?e[r]:`#000000`;o.get()!==t&&o.set(t)}}}case J.BOOLEAN:{let o=n.boolean(controlLabel(t),i);return o.set(!!e.args[r]),o.onChange(t=>e.setArg(r,t)),{view:o.node,refresh:e=>{let t=!!e[r];o.get()!==t&&o.set(t)}}}case J.NUMBER:{let i=n.number(t),o=e.args[r];return i.set(typeof o==`number`?o:t.min??0),i.onChange(t=>e.setArg(r,t)),{view:i.node,refresh:e=>{let t=typeof e[r]==`number`?e[r]:0;i.get()!==t&&i.set(t)}}}case J.RANGE:{let i=n.range(t),o=e.args[r],s=typeof o==`number`?o:t.min??0;return i.set(s),i.onChange(t=>e.setArg(r,t)),{view:i.node,refresh:e=>{let t=typeof e[r]==`number`?e[r]:s;i.get()!==t&&i.set(t)}}}case J.SELECT:{let i=t.options;if(!i?.length)return y.warn(`SELECT control "${r}" has no options`),null;let o=n.select(t),s=e.args[r],c=Math.max(0,i.findIndex(e=>e.value===s));return o.set(c),o.onChange(t=>{t>=0&&t<i.length&&e.setArg(r,i[t].value)}),{view:o.node,refresh:e=>{let t=e[r],n=i.findIndex(e=>e.value===t);n>=0&&o.get()!==n&&o.set(n)}}}default:return y.warn(`Unsupported control type: ${t.type}`),null}}function buildStorybookDevtoolsExtension(e){let currentStory=()=>e.getCurrentStory();return{methods:[{name:`ListStories`,kind:`read-only`,handler:(()=>JSON.stringify(e.listStories(),null,2))},{name:`GetCurrentStory`,kind:`read-only`,handler:(()=>JSON.stringify(currentStory(),null,2))},{name:`OpenStory`,kind:`mutating`,handler:(t=>e.openStoryByTitle(t))},{name:`SetStoryArg`,kind:`mutating`,handler:((t,n)=>e.setActiveArg(t,n?JSON.parse(n):null))},{name:`GetStoryArgs`,kind:`read-only`,handler:(()=>JSON.stringify(currentStory()?.args??{},null,2))}],contributeStatus:()=>{let t=currentStory(),n=e.listStories();return{storybook:{currentStory:t?{title:t.title,story:t.story}:null,storyCount:n.length}}}}}function collectStoryModules$1(e){let t=[];for(let n of e)if(!(!n||typeof n!=`object`))for(let e of Object.values(n))isStoryModule(e)&&t.push(e);return t}__name(collectStoryModules$1,`collectStoryModules`);var StoryViewBase=class{constructor(){this._listeners=new Set}initBase(e,t,n){this._meta=e,this._story=t,this._args=argsFromControls(e.controls),this._chrome=this.createChrome(e,n),this.refreshChromeText()}get meta(){return this._meta}get story(){return this._story}get args(){return this._args}get root(){return this._chrome.root}set args(e){this._args!==e&&(this._args=e,this.updateArgs(e),this.emitArgs(e))}emitArgs(e){for(let t of this._listeners)t(e)}onArgsChanged(e){return this._listeners.add(e),()=>{this._listeners.delete(e)}}setArg(e,t){this.args={...this._args,[e]:t}}initialize(){}updateArgs(e){}teardown(){}addContent(e){this._chrome.hasStage&&this._chrome.setStageContent(e)}refreshChromeText(){let e=this._story?`${this._meta.title} — ${this._story}`:this._meta.title;this._chrome.setChromeText(e,this._meta.description??``)}};const Xt=[`system`,`light`,`dark`];var StorybookSettings=class{constructor(e=()=>!1){this._colorScheme=`system`,this._accentMode=`system`,this._accent=`blue`,this._listeners=new Set,this._systemDark=e}get colorScheme(){return this._colorScheme}set colorScheme(e){!Xt.includes(e)||e===this._colorScheme||(this._colorScheme=e,this._notify())}get accentMode(){return this._accentMode}set accentMode(e){e!==this._accentMode&&(this._accentMode=e,this._notify())}get accent(){return this._accent}set accent(e){e!==this._accent&&(this._accent=e,this._notify())}get resolvedAccent(){return this._accentMode===`custom`?this._accent:null}get resolvedDark(){return this._colorScheme===`dark`?!0:this._colorScheme===`light`?!1:this._systemDark()}get state(){return{colorScheme:this._colorScheme,accentMode:this._accentMode,accent:this._accent}}subscribe(e){return this._listeners.add(e),()=>{this._listeners.delete(e)}}systemChanged(){this._colorScheme===`system`&&this._notify()}_notify(){let e=this.state;for(let t of[...this._listeners])try{t(e)}catch{}}};const Zt={ListStories:`<method name="ListStories"><arg type="s" direction="out" name="stories_json"/></method>`,GetCurrentStory:`<method name="GetCurrentStory"><arg type="s" direction="out" name="story_json"/></method>`,OpenStory:`<method name="OpenStory"><arg type="s" direction="in" name="title"/><arg type="b" direction="out" name="opened"/></method>`,SetStoryArg:`<method name="SetStoryArg"><arg type="s" direction="in" name="name"/><arg type="s" direction="in" name="value_json"/><arg type="b" direction="out" name="applied"/></method>`,GetStoryArgs:`<method name="GetStoryArgs"><arg type="s" direction="out" name="args_json"/></method>`};function storybookDevtoolsExtension(e){let t=buildStorybookDevtoolsExtension(e.controller),n=[],r={},i={};for(let e of t.methods){let t=Zt[e.name];t&&n.push(t),r[e.name]=e.handler,i[e.name]=e.kind}return{methodsXml:n,handlers:r,methodKinds:i,contributeStatus:t.contributeStatus}}function variantKindFor(e,t){switch(e){case`s`:case`b`:case`i`:case`u`:case`d`:return e}if(typeof t==`string`)return`s`;if(typeof t==`boolean`)return`b`;if(typeof t==`number`)return Number.isInteger(t)?`i`:`d`;throw Error(`Cannot build a GLib.Variant from ${typeof t}`)}function buildVariant(t,n){switch(variantKindFor(t?.dup_string()??null,n)){case`s`:return e.Variant.new_string(String(n));case`b`:return e.Variant.new_boolean(!!n);case`i`:return e.Variant.new_int32(Number(n));case`u`:return e.Variant.new_uint32(Number(n));case`d`:return e.Variant.new_double(Number(n))}}function describeActions(e){return e?e.list_actions().sort((e,t)=>e.localeCompare(t)).map(t=>({name:t,enabled:e.get_action_enabled(t),parameterType:e.get_action_parameter_type(t)?.dup_string()??null,stateType:e.get_action_state_type(t)?.dup_string()??null})):[]}function activateAction(e,t,n){let r=e.get_action_parameter_type(t),i=n==null?null:buildVariant(r,n);e.activate_action(t,i)}function changeActionState(e,t,n){e.change_action_state(t,buildVariant(e.get_action_state_type(t),n))}const Qt=new Map;function swapCss(e,r){let i=t.Display.get_default();if(!i)return!1;let o=Qt.get(e);return o||(o=new n.CssProvider,n.StyleContext.add_provider_for_display(i,o,n.STYLE_PROVIDER_PRIORITY_USER+1),Qt.set(e,o)),o.load_from_string(r),!0}function dumpCss(){return{providers:[...Qt.keys()]}}const $t=`org.gjsify.Devtools`;function formatDbusErrorMessage(e,t){return`${e}: ${t}`}const en={GetStatus:`read-only`,Screenshot:`read-only`,ScreenshotScaled:`read-only`,ListActions:`read-only`,ActivateAction:`mutating`,ChangeActionState:`mutating`,PresentWindow:`read-only`,ResizeWindow:`mutating`,ListToplevels:`read-only`,DumpTree:`read-only`,GetProperty:`read-only`,GetFocused:`read-only`,FindWidget:`read-only`,SendKey:`mutating`,ActivateWidget:`mutating`,DumpGSettings:`read-only`,DumpCss:`read-only`,SwapCss:`mutating`};function sanitizeInstanceId(e){let t=e.toLowerCase().replace(/[^a-z0-9]/g,``);return/^[a-z]/.test(t)?t:`i${t||`0`}`}function appIdToObjectPath(e){return`/${e.replace(/\./g,`/`).replace(/-/g,`_`)}`}function resolveBusAddress(e,t){let n=appIdToObjectPath(e),r=t&&t!=="default"?sanitizeInstanceId(t):`default`;return r==="default"?{busName:e,objectPath:`${n}/devtools`,instance:`default`}:{busName:`${e}.${r}`,objectPath:`${n}/${r}/devtools`,instance:r}}const Y=`GJSIFY_DEVTOOLS_ADDRESS`;function isDevtoolsEnabledValue(e){if(e==null)return!1;let t=e.toLowerCase();return t!==``&&t!==`0`&&t!==`false`}function devtoolsAddressFilePath(e,t,n){let{busName:r}=resolveBusAddress(t,n);return`${e}/gjsify-devtools/${r}.address`}function buildDevtoolsIfaceXml(e=[]){return`<node>
|
|
11
|
-
<interface name="${
|
|
9
|
+
`)){let t=/^(\w+):\s+(\d+)(\s+kB)?/.exec(n);t&&e.set(t[1],parseInt(t[2],10)*(t[3]?1024:1))}if(e.size>0)return{virtual:e.get(`VmSize`)??0,resident:e.get(`VmRSS`)??0,data:e.get(`VmData`)??0,peak:e.get(`VmPeak`)??0}}let n=shellOut(e,`sh -c 'ps -o rss=,vsz= -p $PPID'`);if(!n)return null;let r=/^(\d+)\s+(\d+)$/.exec(n);return r?{virtual:parseInt(r[2],10)*1024,resident:parseInt(r[1],10)*1024,data:0,peak:0}:null}let S=null,ae=!1,oe=!1,se=0,ce=!1,C=0,le=!1;function glib(){let e=globalThis;if(typeof e.process?.versions?.gjs==`string`||e.process===void 0)return e.imports?.gi?.GLib}function arm(e){oe||(oe=!0,e.runAsync().catch(()=>{}))}function ensureMainLoop(){return ce=!1,createLoop()}function createLoop(){let e=glib();if(e)return ae?S:(S=new e.MainLoop(null,!1),ae=!0,e.main_depth()===0&&arm(S),S)}function trackTimer(){C+=1}function untrackTimer(){C!==0&&(--C,C===0&&drainIfIdle())}function drainIfIdle(){if(se!==0||!S||!ce)return;let e=S;if(!oe){quitMainLoop();return}if(C===0){if(!e.is_running()){awaitEntrySettle(e);return}exitParked()}}function awaitEntrySettle(e){let t=glib();!t||le||(le=!0,t.timeout_add(t.PRIORITY_DEFAULT,20,()=>S!==e||se!==0||C!==0?(le=!1,t.SOURCE_REMOVE):e.is_running()?(le=!1,exitParked(),t.SOURCE_REMOVE):t.SOURCE_CONTINUE))}function exitParked(){quitMainLoop();let e=globalThis.process;if(typeof e?.exit!=`function`)return;let t=e.exitCode??0,n=glib();n?n.timeout_add(n.PRIORITY_DEFAULT,0,()=>(e.exit(t),n.SOURCE_REMOVE)):e.exit(t)}function quitMainLoop(){S&&(S.quit(),ae=!1,oe=!1,S=null,se=0,ce=!1)}function hostGi(){return globalThis.imports?.gi}function directoryOf(e){return/^(.*)[\\/][^\\/]*$/.exec(e)?.[1]}function colocateNativeLibrary(e,t=hostGi()){try{let n=t?.GIRepository?.Repository?.dup_default?.(),r=n?.get_typelib_path(e),i=r?directoryOf(r):void 0;return!n||!i?!1:(n.prepend_library_path(i),!0)}catch{return!1}}function probeNativeLibrary(e,t=hostGi()){try{let n=t?.GIRepository?.Repository?.dup_default?.(),r=n?.get_typelib_path(e);if(!t||!n||!r)return null;let i=firstSymbol(n,e);if(!i||(t.GModule?.module_error(),i.info.get_typelib().symbol(i.name)[0]))return null;let o=directoryOf(r)??`.`,s=r.includes(`\\`)&&!r.includes(`/`)?`\\`:`/`;for(let c of n.get_shared_libraries(e)??[]){let n=`${o}${s}${c}`,l=t.GLib?.file_test(n,t.GLib.FileTest.EXISTS)?n:c,u=loaderError(t,e,r,l,i.name);if(u!==void 0)return{namespace:e,library:l,reason:u,missingDependency:missingLibraryDependency(u,l)}}let c=(n.get_shared_libraries(e)??[]).join(`, `)||`(none named)`;return{namespace:e,library:c,reason:`symbol ${i.name} not found in ${c}, and the loader reported no error`}}catch{return null}}function firstSymbol(e,t){let n=e.get_n_infos(t),r=null;for(let i=0;i<n;i++){let n=e.get_info(t,i),o=n.get_type_init_function_name?.();if(o)return{info:n,name:o};let s=n.get_symbol?.();s&&!r&&(r={info:n,name:s})}return r}function loaderError(e,t,n,r,i){let{GIRepository:o,GLib:s,GModule:c}=e;if(!o?.Repository||!o.Typelib||!s||!c)return;let[,l]=s.file_get_contents(n),u=new TextEncoder().encode(`${r}\0`),d=new Uint8Array(l.length+u.length);d.set(l),d.set(u,l.length);let f=new DataView(d.buffer);f.setUint32(40,d.length,!0),f.setUint32(52,l.length,!0);let p=new o.Repository,m=firstSymbol(p,p.load_typelib(o.Typelib.new_from_bytes(new s.Bytes(d)),0));if(m&&(c.module_error(),!m.info.get_typelib().symbol(i)[0]))return c.module_error()??`${t}: ${r} could not be opened (the loader reported no error)`}function missingLibraryDependency(e,t){let n=/Library not loaded: (\S+)/.exec(e)?.[1]??/Error loading shared library ([^\s:]+): .*\(needed by /.exec(e)?.[1]??/(?:^|\s)([^\s:]+): cannot open shared object file/.exec(e)?.[1];if(!n)return;let r=n.replace(/^.*[\\/]/,``);if(!(t&&r===t.replace(/^.*[\\/]/,``)))return r}var NativeLibraryLoadError=class extends Error{failure;constructor(e,t){let n=e.missingDependency?`It needs ${e.missingDependency}, which the loader could not find: not installed, or not on its search path.`:`The loader could not open it.`;super(`${e.namespace}: the native library ${e.library} could not be loaded. ${n}\nLoader: ${e.reason.trim()}\n`+(t??"`gjsify system-check` lists the system libraries the installed @gjsify packages need, with the install command for this host.")),this.name=`NativeLibraryLoadError`,this.failure=e}};function openNativeLibrary(e,t=hostGi()){colocateNativeLibrary(e,t);let n=probeNativeLibrary(e,t);return n?new NativeLibraryLoadError(n):null}function loadOptionalNativeModule(e,t,n=hostGi()){if(!n)return{module:null,error:Error(`${e}: imports.gi is not available (not running on GJS)`)};try{let r=n[e];if(!r)return{module:null,error:Error(`${e}: typelib not found`)};let i=openNativeLibrary(e,n);if(i)return y.debug(i.message),{module:null,error:i};for(let e of t)r[e];return{module:r,error:null}}catch(e){return{module:null,error:e instanceof Error?e:Error(String(e))}}}registerGlobal(`Blob`,p),registerGlobal(`File`,m);const w=`ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/`,ue=new Uint8Array(256);for(let e=0;e<64;e++)ue[w.charCodeAt(e)]=e;function btoaPolyfill(e){if(typeof globalThis.btoa==`function`)return globalThis.btoa(e);let t=``,n=0;for(;n+2<e.length;n+=3){let r=e.charCodeAt(n)<<16|e.charCodeAt(n+1)<<8|e.charCodeAt(n+2);t+=w[r>>18&63]+w[r>>12&63]+w[r>>6&63]+w[r&63]}if(n+1===e.length){let r=e.charCodeAt(n)<<16;t+=w[r>>18&63]+w[r>>12&63]+`==`}else if(n+2===e.length){let r=e.charCodeAt(n)<<16|e.charCodeAt(n+1)<<8;t+=w[r>>18&63]+w[r>>12&63]+w[r>>6&63]+`=`}return t}function base64Decode(e){let t=e.replace(/[=\s]/g,``),n=new Uint8Array(t.length*3>>2),r=0,i=0,o=0;for(let e=0;e<t.length;e++)r=r<<6|ue[t.charCodeAt(e)],i+=6,i>=8&&(i-=8,n[o++]=r>>i&255);return n.subarray(0,o)}function base64Encode(e){let t=``,n=e.length;for(let r=0;r<n;r+=3){let i=e[r],o=r+1<n?e[r+1]:0,s=r+2<n?e[r+2]:0;t+=w[i>>2],t+=w[(i&3)<<4|o>>4],t+=r+1<n?w[(o&15)<<2|s>>6]:`=`,t+=r+2<n?w[s&63]:`=`}return t}const de=[`utf8`,`ascii`,`latin1`,`binary`,`base64`,`base64url`,`hex`,`ucs2`,`utf16le`];function normalizeEncoding(e){if(!e||e===`utf8`||e===`utf-8`)return`utf8`;switch((``+e).toLowerCase().replace(/-/g,``)){case`utf8`:return`utf8`;case`ascii`:return`ascii`;case`latin1`:case`binary`:return`latin1`;case`base64`:return`base64`;case`base64url`:return`base64url`;case`hex`:return`hex`;case`ucs2`:case`utf16le`:return`utf16le`;default:return`utf8`}}function checkEncoding(e){let t=(``+e).toLowerCase().replace(/-/g,``);if(!de.includes(t))throw TypeError(`Unknown encoding: ${e}`)}let fe,pe;const textEncoder=()=>fe??=new TextEncoder,textDecoder=()=>pe??=new TextDecoder;function encodeString(e,t){switch(t){case`utf8`:return textEncoder().encode(e);case`ascii`:{let t=new Uint8Array(e.length);for(let n=0;n<e.length;n++)t[n]=e.charCodeAt(n)&127;return t}case`latin1`:{let t=new Uint8Array(e.length);for(let n=0;n<e.length;n++)t[n]=e.charCodeAt(n)&255;return t}case`base64`:return base64Decode(e.replace(/-/g,`+`).replace(/_/g,`/`));case`base64url`:return encodeString(e.replace(/-/g,`+`).replace(/_/g,`/`),`base64`);case`hex`:{let t=e.length>>>1,n=new Uint8Array(t);for(let r=0;r<t;r++){let t=parseInt(e[r*2],16),i=parseInt(e[r*2+1],16);if(Number.isNaN(t)||Number.isNaN(i))break;n[r]=t<<4|i}return n}case`utf16le`:{let t=new Uint8Array(e.length*2);for(let n=0;n<e.length;n++){let r=e.charCodeAt(n);t[n*2]=r&255,t[n*2+1]=r>>8&255}return t}default:return textEncoder().encode(e)}}function decodeString(e,t,n,r){let i=n!==void 0||r!==void 0?e.subarray(n??0,r??e.length):e;switch(t){case`utf8`:return textDecoder().decode(i);case`ascii`:{let e=``;for(let t=0;t<i.length;t++)e+=String.fromCharCode(i[t]&127);return e}case`latin1`:{let e=``;for(let t=0;t<i.length;t++)e+=String.fromCharCode(i[t]);return e}case`base64`:{let e=``;for(let t=0;t<i.length;t++)e+=String.fromCharCode(i[t]);return btoaPolyfill(e)}case`base64url`:return decodeString(i,`base64`).replace(/\+/g,`-`).replace(/\//g,`_`).replace(/=+$/,``);case`hex`:{let e=``;for(let t=0;t<i.length;t++)e+=i[t].toString(16).padStart(2,`0`);return e}case`utf16le`:{let e=``;for(let t=0;t+1<i.length;t+=2)e+=String.fromCharCode(i[t]|i[t+1]<<8);return e}default:return textDecoder().decode(i)}}function checkOffset(e,t,n){if(e+t>n)throw RangeError(`Attempt to access memory outside buffer bounds`)}const me=typeof SharedArrayBuffer<`u`;var he=class Buffer extends Uint8Array{static _isBuffer=!0;static alloc(e,t,n){if(typeof e!=`number`)throw TypeError(`The "size" argument must be of type number. Received type ${typeof e}`);if(e<0)throw RangeError(`The value "${e}" is invalid for option "size"`);let r=new Buffer(e);return t!==void 0&&t!==0&&r.fill(t,0,e,n),r}static allocUnsafe(e){if(typeof e!=`number`)throw TypeError(`The "size" argument must be of type number. Received type ${typeof e}`);return new Buffer(e)}static allocUnsafeSlow(e){return Buffer.allocUnsafe(e)}static from(e,t,n){if(typeof e==`string`){let n=normalizeEncoding(t);if(t&&typeof t==`string`){let e=(``+t).toLowerCase().replace(/-/g,``);[`utf8`,`ascii`,`latin1`,`binary`,`base64`,`base64url`,`hex`,`ucs2`,`utf16le`,``].includes(e)||checkEncoding(t)}let r=encodeString(e,n);return new Buffer(r.buffer,r.byteOffset,r.byteLength)}if(ArrayBuffer.isView(e)){let t=new Buffer(e.buffer,e.byteOffset,e.byteLength),n=new Buffer(t.length);return n.set(t),n}if(e instanceof ArrayBuffer){let r=t||0,i=n===void 0?e.byteLength-r:n;return new Buffer(e,r,i)}if(me&&e instanceof SharedArrayBuffer){let r=t||0,i=n===void 0?e.byteLength-r:n;return new Buffer(new Uint8Array(e,r,i))}if(typeof e==`object`&&e&&typeof e.viewBytes==`function`&&typeof e.byteLength==`number`&&e.constructor?.name===`SharedBuffer`){let r=e,i=t||0,o=n===void 0?r.byteLength-i:n,s=r.viewBytes(i,o);return new Buffer(s.buffer,s.byteOffset,s.byteLength)}if(Array.isArray(e)){let t=new Buffer(e.length);for(let n=0;n<e.length;n++)t[n]=e[n]&255;return t}throw TypeError(`The first argument must be of type string or an instance of Buffer, ArrayBuffer, or Array`)}static isBuffer(e){return e instanceof Buffer}static isEncoding(e){if(typeof e!=`string`)return!1;let t=e.toLowerCase().replace(/-/g,``);return[`utf8`,`ascii`,`latin1`,`binary`,`base64`,`base64url`,`hex`,`ucs2`,`utf16le`].includes(t)}static byteLength(e,t){if(typeof e!=`string`){if(ArrayBuffer.isView(e)||e instanceof ArrayBuffer||me&&e instanceof SharedArrayBuffer)return e.byteLength;throw TypeError(`The "string" argument must be one of type string, Buffer, or ArrayBuffer`)}switch(normalizeEncoding(t)){case`utf8`:return new TextEncoder().encode(e).byteLength;case`ascii`:case`latin1`:return e.length;case`base64`:case`base64url`:{let t=e.length;for(;t>0&&(e[t-1]===`=`||e[t-1]===` `);)t--;return t*3>>>2}case`hex`:return e.length>>>1;case`utf16le`:return e.length*2;default:return new TextEncoder().encode(e).byteLength}}static compare(e,t){if(!(e instanceof Uint8Array)||!(t instanceof Uint8Array))throw TypeError(`Arguments must be Buffers or Uint8Arrays`);let n=Math.min(e.length,t.length);for(let r=0;r<n;r++){if(e[r]<t[r])return-1;if(e[r]>t[r])return 1}return e.length<t.length?-1:+(e.length>t.length)}static concat(e,t){if(e.length===0)return Buffer.alloc(0);if(t===void 0){t=0;for(let n=0;n<e.length;n++)t+=e[n].length}let n=Buffer.alloc(t),r=0;for(let i=0;i<e.length;i++){let o=e[i],s=Math.min(o.length,t-r);s<=0||(n.set(o.subarray(0,s),r),r+=s)}return n}static poolSize=65536;toString(e,t,n){let r=normalizeEncoding(e);return decodeString(this,r,t,n)}toJSON(){return{type:`Buffer`,data:Array.from(this)}}equals(e){if(!(e instanceof Uint8Array))throw TypeError(`Argument must be a Buffer or Uint8Array`);if(this.length!==e.length)return!1;for(let t=0;t<this.length;t++)if(this[t]!==e[t])return!1;return!0}compare(e,t,n,r,i){if(!(e instanceof Uint8Array))throw TypeError(`Argument must be a Buffer or Uint8Array`);let o=r!==void 0||i!==void 0?this.subarray(r??0,i??this.length):this,s=t!==void 0||n!==void 0?e.subarray(t??0,n??e.length):e;return Buffer.compare(o,s)}copy(e,t=0,n=0,r){let i=r??this.length,o=Math.min(i-n,e.length-t);return o<=0?0:(e.set(this.subarray(n,n+o),t),o)}slice(e,t){let n=e??0,r=t??this.length,i=super.subarray(n,r);return new Buffer(i.buffer,i.byteOffset,i.byteLength)}subarray(e,t){let n=super.subarray(e,t);return new Buffer(n.buffer,n.byteOffset,n.byteLength)}write(e,t,n,r){t??=0;let i=encodeString(e,normalizeEncoding(r||(typeof n==`string`?n:void 0))),o=n!==void 0&&typeof n==`number`?Math.min(n,this.length-t):this.length-t,s=Math.min(i.length,o);return this.set(i.subarray(0,s),t),s}fill(e,t,n,r){let i=t??0,o=n??this.length;if(typeof e==`number`)super.fill(e&255,i,o);else if(typeof e==`string`){let t=encodeString(e,normalizeEncoding(r));if(t.length===0)super.fill(0,i,o);else if(t.length===1)super.fill(t[0],i,o);else for(let e=i;e<o;e++)this[e]=t[(e-i)%t.length]}else if(e instanceof Uint8Array)if(e.length===0)super.fill(0,i,o);else for(let t=i;t<o;t++)this[t]=e[(t-i)%e.length];return this}indexOf(e,t,n){if(typeof e==`number`)return super.indexOf(e&255,t);let r=typeof e==`string`?encodeString(e,normalizeEncoding(n)):e,i=t??0;outer:for(let e=i;e<=this.length-r.length;e++){for(let t=0;t<r.length;t++)if(this[e+t]!==r[t])continue outer;return e}return-1}lastIndexOf(e,t,n){if(typeof e==`number`)return t===void 0?super.lastIndexOf(e&255):super.lastIndexOf(e&255,t);let r=typeof e==`string`?encodeString(e,normalizeEncoding(n)):e,i=t===void 0?this.length-r.length:Math.min(t,this.length-r.length);outer:for(let e=i;e>=0;e--){for(let t=0;t<r.length;t++)if(this[e+t]!==r[t])continue outer;return e}return-1}includes(e,t,n){return this.indexOf(e,t,n)!==-1}readUInt8(e=0){return checkOffset(e,1,this.length),this[e]}readUInt16BE(e=0){return checkOffset(e,2,this.length),this[e]<<8|this[e+1]}readUInt16LE(e=0){return checkOffset(e,2,this.length),this[e]|this[e+1]<<8}readUInt32BE(e=0){return checkOffset(e,4,this.length),this[e]*16777216+(this[e+1]<<16|this[e+2]<<8|this[e+3])}readUInt32LE(e=0){return checkOffset(e,4,this.length),this[e+3]*16777216+(this[e+2]<<16|this[e+1]<<8|this[e])>>>0}readInt8(e=0){return checkOffset(e,1,this.length),this[e]|(this[e]&128?4294967040:0)}readInt16BE(e=0){checkOffset(e,2,this.length);let t=this[e]<<8|this[e+1];return t&32768?t|4294901760:t}readInt16LE(e=0){checkOffset(e,2,this.length);let t=this[e]|this[e+1]<<8;return t&32768?t|4294901760:t}readInt32BE(e=0){return checkOffset(e,4,this.length),this[e]<<24|this[e+1]<<16|this[e+2]<<8|this[e+3]}readInt32LE(e=0){return checkOffset(e,4,this.length),this[e]|this[e+1]<<8|this[e+2]<<16|this[e+3]<<24}readFloatBE(e=0){return checkOffset(e,4,this.length),new DataView(this.buffer,this.byteOffset+e,4).getFloat32(0,!1)}readFloatLE(e=0){return checkOffset(e,4,this.length),new DataView(this.buffer,this.byteOffset+e,4).getFloat32(0,!0)}readDoubleBE(e=0){return checkOffset(e,8,this.length),new DataView(this.buffer,this.byteOffset+e,8).getFloat64(0,!1)}readDoubleLE(e=0){return checkOffset(e,8,this.length),new DataView(this.buffer,this.byteOffset+e,8).getFloat64(0,!0)}readBigInt64BE(e=0){return checkOffset(e,8,this.length),new DataView(this.buffer,this.byteOffset+e,8).getBigInt64(0,!1)}readBigInt64LE(e=0){return checkOffset(e,8,this.length),new DataView(this.buffer,this.byteOffset+e,8).getBigInt64(0,!0)}readBigUInt64BE(e=0){return checkOffset(e,8,this.length),new DataView(this.buffer,this.byteOffset+e,8).getBigUint64(0,!1)}readBigUInt64LE(e=0){return checkOffset(e,8,this.length),new DataView(this.buffer,this.byteOffset+e,8).getBigUint64(0,!0)}readUIntBE(e,t){checkOffset(e,t,this.length);let n=0;for(let r=0;r<t;r++)n=n*256+this[e+r];return n}readUIntLE(e,t){checkOffset(e,t,this.length);let n=0,r=1;for(let i=0;i<t;i++)n+=this[e+i]*r,r*=256;return n}readIntBE(e,t){checkOffset(e,t,this.length);let n=0;for(let r=0;r<t;r++)n=n*256+this[e+r];return n>=2**(8*t-1)&&(n-=2**(8*t)),n}readIntLE(e,t){checkOffset(e,t,this.length);let n=0,r=1;for(let i=0;i<t;i++)n+=this[e+i]*r,r*=256;return n>=2**(8*t-1)&&(n-=2**(8*t)),n}writeUInt8(e,t=0){return checkOffset(t,1,this.length),this[t]=e&255,t+1}writeUInt16BE(e,t=0){return checkOffset(t,2,this.length),this[t]=e>>>8&255,this[t+1]=e&255,t+2}writeUInt16LE(e,t=0){return checkOffset(t,2,this.length),this[t]=e&255,this[t+1]=e>>>8&255,t+2}writeUInt32BE(e,t=0){return checkOffset(t,4,this.length),this[t]=e>>>24&255,this[t+1]=e>>>16&255,this[t+2]=e>>>8&255,this[t+3]=e&255,t+4}writeUInt32LE(e,t=0){return checkOffset(t,4,this.length),this[t]=e&255,this[t+1]=e>>>8&255,this[t+2]=e>>>16&255,this[t+3]=e>>>24&255,t+4}writeInt8(e,t=0){return checkOffset(t,1,this.length),e<0&&(e=255+e+1),this[t]=e&255,t+1}writeInt16BE(e,t=0){return checkOffset(t,2,this.length),this[t]=e>>>8&255,this[t+1]=e&255,t+2}writeInt16LE(e,t=0){return checkOffset(t,2,this.length),this[t]=e&255,this[t+1]=e>>>8&255,t+2}writeInt32BE(e,t=0){return checkOffset(t,4,this.length),this[t]=e>>>24&255,this[t+1]=e>>>16&255,this[t+2]=e>>>8&255,this[t+3]=e&255,t+4}writeInt32LE(e,t=0){return checkOffset(t,4,this.length),this[t]=e&255,this[t+1]=e>>>8&255,this[t+2]=e>>>16&255,this[t+3]=e>>>24&255,t+4}writeFloatBE(e,t=0){return checkOffset(t,4,this.length),new DataView(this.buffer,this.byteOffset+t,4).setFloat32(0,e,!1),t+4}writeFloatLE(e,t=0){return checkOffset(t,4,this.length),new DataView(this.buffer,this.byteOffset+t,4).setFloat32(0,e,!0),t+4}writeDoubleBE(e,t=0){return checkOffset(t,8,this.length),new DataView(this.buffer,this.byteOffset+t,8).setFloat64(0,e,!1),t+8}writeDoubleLE(e,t=0){return checkOffset(t,8,this.length),new DataView(this.buffer,this.byteOffset+t,8).setFloat64(0,e,!0),t+8}writeBigInt64BE(e,t=0){return checkOffset(t,8,this.length),new DataView(this.buffer,this.byteOffset+t,8).setBigInt64(0,e,!1),t+8}writeBigInt64LE(e,t=0){return checkOffset(t,8,this.length),new DataView(this.buffer,this.byteOffset+t,8).setBigInt64(0,e,!0),t+8}writeBigUInt64BE(e,t=0){return checkOffset(t,8,this.length),new DataView(this.buffer,this.byteOffset+t,8).setBigUint64(0,e,!1),t+8}writeBigUInt64LE(e,t=0){return checkOffset(t,8,this.length),new DataView(this.buffer,this.byteOffset+t,8).setBigUint64(0,e,!0),t+8}readUint8(e=0){return this.readUInt8(e)}readUint16BE(e=0){return this.readUInt16BE(e)}readUint16LE(e=0){return this.readUInt16LE(e)}readUint32BE(e=0){return this.readUInt32BE(e)}readUint32LE(e=0){return this.readUInt32LE(e)}readUintBE(e,t){return this.readUIntBE(e,t)}readUintLE(e,t){return this.readUIntLE(e,t)}readBigUint64BE(e=0){return this.readBigUInt64BE(e)}readBigUint64LE(e=0){return this.readBigUInt64LE(e)}writeUint8(e,t=0){return this.writeUInt8(e,t)}writeUint16BE(e,t=0){return this.writeUInt16BE(e,t)}writeUint16LE(e,t=0){return this.writeUInt16LE(e,t)}writeUint32BE(e,t=0){return this.writeUInt32BE(e,t)}writeUint32LE(e,t=0){return this.writeUInt32LE(e,t)}writeBigUint64BE(e,t=0){return this.writeBigUInt64BE(e,t)}writeBigUint64LE(e,t=0){return this.writeBigUInt64LE(e,t)}swap16(){let e=this.length;if(e%2!=0)throw RangeError(`Buffer size must be a multiple of 16-bits`);for(let t=0;t<e;t+=2){let e=this[t];this[t]=this[t+1],this[t+1]=e}return this}swap32(){let e=this.length;if(e%4!=0)throw RangeError(`Buffer size must be a multiple of 32-bits`);for(let t=0;t<e;t+=4){let e=this[t],n=this[t+1];this[t]=this[t+3],this[t+1]=this[t+2],this[t+2]=n,this[t+3]=e}return this}swap64(){let e=this.length;if(e%8!=0)throw RangeError(`Buffer size must be a multiple of 64-bits`);for(let t=0;t<e;t+=8){let e=this[t],n=this[t+1],r=this[t+2],i=this[t+3];this[t]=this[t+7],this[t+1]=this[t+6],this[t+2]=this[t+5],this[t+3]=this[t+4],this[t+4]=i,this[t+5]=r,this[t+6]=n,this[t+7]=e}return this}};`Buffer`in globalThis||Object.defineProperty(globalThis,"Buffer",{value:he,enumerable:!1,writable:!0,configurable:!0});var T=e;typeof globalThis.btoa!=`function`&&Object.defineProperty(globalThis,"btoa",{value:function btoa(e){let t=new Uint8Array(e.length);for(let n=0;n<e.length;n++)t[n]=e.charCodeAt(n)&255;return T.base64_encode(t)},enumerable:!0,writable:!0,configurable:!0}),typeof globalThis.atob!=`function`&&Object.defineProperty(globalThis,"atob",{value:function atob(e){let t=T.base64_decode(e),n=``;for(let e=0;e<t.length;e++)n+=String.fromCharCode(t[e]);return n},enumerable:!0,writable:!0,configurable:!0}),typeof queueMicrotask!=`function`&&Object.defineProperty(globalThis,"queueMicrotask",{value:b,enumerable:!0,writable:!0,configurable:!0});function getGjsGlobal(){return globalThis}function getGioNamespace(){let e=getGjsGlobal().imports?.gi;if(!e)return null;let t=null;try{t=e.GioUnix??null}catch{}if(!t)try{t=e.Gio??null}catch{}return t}function getMonotonicTime(){try{let e=getGjsGlobal().imports?.gi?.GLib;if(e?.get_monotonic_time)return BigInt(e.get_monotonic_time())*1000n}catch{}return typeof performance?.now==`function`?BigInt(Math.round(performance.now()*1e6)):BigInt(Date.now())*1000000n}const ge=getMonotonicTime();function hrtime(e){let t=getMonotonicTime()-ge,n=Number(t/1000000000n),r=Number(t%1000000000n);if(e){let t=n-e[0],i=r-e[1];return i<0&&(t--,i+=1e9),[t,i]}return[n,r]}function hrtimeBigint(){return getMonotonicTime()-ge}let E;function probeUname(){if(E!==void 0)return E;E=null;try{let e=getGjsGlobal().imports?.gi?.GLib;if(!e)return E;let t=e.spawn_sync,n=e.SpawnFlags?.SEARCH_PATH;if(!t||n===void 0)return E;let[r,i]=t(null,[`uname`,`-sm`],null,n,null);if(!r||!i)return E;let o=new TextDecoder().decode(i).trim().split(/\s+/);if(o.length<2)return E;let s=mapSysname(o[0]),c=mapMachine(o[o.length-1]);if(!s||!c)return E;E={platform:s,arch:c}}catch{}return E}function detectGjsVersion(){try{let e=getGjsGlobal().imports?.system;if(e?.version!==void 0){let t=Number(e.version);return`${Math.floor(t/1e4)}.${Math.floor(t%1e4/100)}.${t%100}`}}catch{}}function detectNodeVersion(){if(typeof globalThis.process?.versions?.node==`string`)return globalThis.process.versions.node}function detectVersionInfo(){if(detectNodeVersion())return{version:globalThis.process.version,versions:{...globalThis.process.versions},title:globalThis.process?.title||`node`};let e=detectGjsVersion(),t={node:`20.0.0`};return e&&(t.gjs=e),{version:`v20.0.0`,versions:t,title:`gjs`}}function detectPpid(){let e=runtimeProcess();return e&&typeof e.ppid==`number`?e.ppid:hostPpid()??0}function runtimeProcess(){let e=globalThis.process;return typeof e?.release?.name==`string`?e:void 0}function onGjs(){try{return getGjsGlobal().imports?.gi!==void 0}catch{return!1}}function detectPlatform(){let e=runtimeProcess();if(e)return e.platform;if(onGjs()){let e=probeUname();if(e)return e.platform}return`linux`}function detectArch(){let e=runtimeProcess();if(e)return e.arch;if(onGjs()){let e=probeUname();if(e)return e.arch}return`x64`}function getPid(){let e=runtimeProcess();return e&&typeof e.pid==`number`?e.pid:hostPid()??0}function getEnvProxy(){if(typeof globalThis.process?.env==`object`)return globalThis.process.env;try{let e=getGjsGlobal().imports?.gi?.GLib;if(e)return new Proxy({},{get(t,n){if(typeof n==`string`)return e.getenv(n)??void 0},set(t,n,r){return typeof n==`string`?(e.setenv(n,String(r),!0),!0):!1},deleteProperty(t,n){return typeof n==`string`?(e.unsetenv(n),!0):!1},has(t,n){return typeof n==`string`?e.getenv(n)!==null:!1},ownKeys(t){return e.listenv()},getOwnPropertyDescriptor(t,n){if(typeof n!=`string`)return;let r=e.getenv(n);if(r!==null)return{configurable:!0,enumerable:!0,writable:!0,value:r}}})}catch{}return{}}function getArgv(){if(globalThis.process?.argv!==void 0)return globalThis.process.argv;try{let e=getGjsGlobal().imports?.system;if(e?.programArgs)return[`gjs`,e.programInvocationName||``,...e.programArgs]}catch{}return[`gjs`]}function getExecPath(){let e=globalThis.process;return!isGjsHost()&&typeof e?.execPath==`string`?e.execPath:hostExecPath()??`/usr/bin/gjs`}function isGjsHost(){try{return getGjsGlobal().imports?.gi!==void 0}catch{return!1}}function getCwd(){try{let e=getGjsGlobal().imports?.gi?.GLib;if(e?.get_current_dir)return e.get_current_dir()}catch{}return`/`}function chdir(e){let t=getGjsGlobal().imports?.gi?.GLib;try{if(t?.chdir){if(!t.file_test(e,16)){let t=Error(`ENOENT: no such file or directory, chdir '${e}'`);throw t.code=`ENOENT`,t.syscall=`chdir`,t.path=e,t}t.chdir(e);return}}catch(e){if(e&&typeof e==`object`&&e.code===`ENOENT`)throw e}if(!t){let t=globalThis.process;if(t&&typeof t.chdir==`function`){t.chdir(e);return}}throw Error(`process.chdir() is not supported in this environment`)}function getExecArgv(){if(!isGjsHost()){let e=globalThis.process;return Array.isArray(e?.execArgv)?e.execArgv:[]}try{let e=getGjsGlobal().imports?.gi?.GLib;if(e?.file_get_contents){let[,t]=e.file_get_contents(`/proc/self/cmdline`);if(t){let e=t instanceof Uint8Array?t:new Uint8Array(t),n=new TextDecoder().decode(e).split(`\0`).filter(e=>e.length>0),r=[];for(let e=1;e<n.length&&n[e].startsWith(`-`);e++)r.push(n[e]);return r}}}catch{}return[]}function exitProcess(e){let t=getGjsGlobal().imports,n=t?.gi?.GLib,r=t?.system,i=n?.idle_add,o=n?.SOURCE_REMOVE,s=n?.PRIORITY_DEFAULT,c=n?.MainContext;if(r?.exit&&i&&typeof s==`number`&&typeof o==`boolean`&&typeof c?.default==`function`){i(s,()=>(r.exit(e),o));let t=c.default();for(;;)t.iteration(!0)}try{r?.exit&&r.exit(e)}catch{}let l=globalThis.process;throw l&&typeof l.exit==`function`&&l.exit(e),Error(`process.exit(${e})`)}function isGjs(){return getGjsGlobal().imports?.gi?.GLib!==void 0}function classifyKillFailure(e){if(/No such process/i.test(e))return`ESRCH`;if(/Operation not permitted/i.test(e))return`EPERM`}function killPid(e,t){let n=getGjsGlobal().imports?.gi?.GLib;if(n){let r=typeof t==`number`?String(t):t||`SIGTERM`,i=[`kill`,r.startsWith(`SIG`)?`-${r.slice(3)}`:`-${r}`,`--`,String(e)],o=n.environ_setenv(n.get_environ(),`LC_ALL`,`C`,!0),[,,s,c]=n.spawn_sync(null,i,o,4,null),l=!1;try{l=n.spawn_check_wait_status(c)}catch{l=!1}if(l)return!0;let u=s?new TextDecoder().decode(s).trim():``,d=classifyKillFailure(u),f=Error(d?`kill ${d}`:`kill failed${u?`: ${u}`:``}`);throw d&&(f.code=d,f.errno=d===`ESRCH`?-3:-1,f.syscall=`kill`),f}let r=globalThis.process;if(r&&typeof r.kill==`function`)return r.kill(e,t);throw Error(`process.kill() is not supported in this environment`)}function memoryUsage(){let e=readProcessMemory();if(e)return{rss:e.resident,heapTotal:e.resident,heapUsed:e.resident,external:0,arrayBuffers:0};if(!isGjs()){let e=globalThis.process;if(e&&typeof e.memoryUsage==`function`)return e.memoryUsage()}return{rss:0,heapTotal:0,heapUsed:0,external:0,arrayBuffers:0}}function cpuUsage(e){if(!isGjs()){let t=globalThis.process;if(t&&typeof t.cpuUsage==`function`)return t.cpuUsage(e)}return{user:0,system:0}}function readUmask(){try{let e=getGjsGlobal().imports?.gi?.GLib;if(e){let[t,n]=e.file_get_contents(`/proc/self/status`);if(t){let e=/^Umask:\s*([0-7]+)/m.exec(new TextDecoder().decode(n));if(e)return parseInt(e[1],8)}}}catch{}return 18}const _e={SIGHUP:1,SIGINT:2,SIGTERM:15},ve=new Map;function resolveSignalAdd(){let e=getGjsGlobal().imports?.gi;if(!e)return null;for(let[t,n]of[[`GLibUnix`,`signal_add`],[`GLib`,`unix_signal_add`]])try{let r=e[t]?.[n];if(typeof r==`function`)return r}catch{}return null}function isDeliverableSignal(e){return typeof e==`string`&&e in _e}function armSignal(e,t){if(ve.has(e))return;let n=_e[e],r=resolveSignalAdd(),i=getGjsGlobal().imports?.gi?.GLib;if(n===void 0||r===null||!i)return;let o=i.PRIORITY_DEFAULT,s=r(o,n,()=>(t(e),!0));ve.set(e,s)}function disarmSignal(e){let t=ve.get(e);if(t===void 0)return;ve.delete(e);let n=getGjsGlobal().imports?.gi?.GLib;n&&typeof n.source_remove==`function`&&n.source_remove(t)}const ye=Symbol.for(`@gjsify/terminal-native:raw-mode-claims`),be=globalThis,xe=be[ye]??=new Map;function claimRawMode(e,t){xe.set(e,t)}function releaseRawMode(e){xe.delete(e)}function noteRawMode(e,t,n){let r=n(t);return t?r&&claimRawMode(e,()=>{n(!1)}):releaseRawMode(e),r}function restoreClaimedRawModes(){let e=[...xe.entries()];xe.clear();let t=0,n;for(let[,r]of e)try{r(),t+=1}catch(e){n??=e}if(n!==void 0)throw n;return t}const Se=loadOptionalNativeModule(`GjsifyTerminal`,[`Terminal`,`ResizeWatcher`]).module,Ce=Se;function callableModule(){if(!Se)return null;try{return Se.Terminal.is_tty(2),Se}catch{return null}}function nativeIsTty(e){try{return callableModule()?.Terminal.is_tty(e)??null}catch{return null}}function nativeTerminalSize(e){try{let[t,n,r]=callableModule()?.Terminal.get_size(e)??[!1,0,0];return!t||r<=0?null:{rows:n,columns:r}}catch{return null}}function nativeSetRawMode(e,t){try{return callableModule()?.Terminal.set_raw_mode(e,t)??null}catch{return null}}const D=Symbol(`kCapture`),we=Symbol.for(`nodejs.rejection`);function onceWrapper(){let{target:e,type:t,listener:n}=this;return this.wrapperFn&&e.removeListener(t,this.wrapperFn),n.apply(e,Array.from(arguments))}function _onceWrap(e,t,n){let r={target:e,type:t,listener:n,wrapperFn:void 0},i=onceWrapper.bind(r);return r.wrapperFn=i,i.listener=n,i}function arrayClone(e){switch(e.length){case 0:return[];case 1:return[e[0]];case 2:return[e[0],e[1]];case 3:return[e[0],e[1],e[2]];default:return e.slice()}}function checkListener(e){if(typeof e!=`function`)throw TypeError(`The "listener" argument must be of type Function. Received type `+typeof e)}function validateNumber(e,t){if(typeof e!=`number`||e!==e)throw TypeError(`The "${t}" argument must be of type number. Received type ${typeof e}`)}function spliceOne(e,t){for(;t+1<e.length;t++)e[t]=e[t+1];e.pop()}var O=class EventEmitter{static defaultMaxListeners=10;static errorMonitor=Symbol(`events.errorMonitor`);static captureRejectionSymbol=we;static _captureRejections=!1;static get captureRejections(){return EventEmitter._captureRejections}static set captureRejections(e){if(typeof e!=`boolean`)throw TypeError(`The "captureRejections" argument must be of type boolean.`);EventEmitter._captureRejections=e}_events;_eventsCount;_maxListeners;[D];constructor(e){this._events=Object.create(null),this._eventsCount=0,this._maxListeners=void 0,this[D]=e?.captureRejections??EventEmitter._captureRejections}setMaxListeners(e){if(validateNumber(e,`n`),e<0)throw RangeError(`The value of "n" is out of range. It must be a non-negative number. Received `+e);return this._maxListeners=e,this}getMaxListeners(){return this._maxListeners??EventEmitter.defaultMaxListeners}emit(e,...t){let n=this._events,r=e===`error`;if(n!==void 0)r&&n[EventEmitter.errorMonitor]!==void 0&&this.emit(EventEmitter.errorMonitor,...t),r&&=n.error===void 0;else if(!r)return!1;if(r){let e;if(e=t.length>0?t[0]:Error(`Unhandled error.`),e instanceof Error)throw e;let n=Error(`Unhandled error. (`+e+`)`);throw n.context=e,n}let i=n[e];if(i===void 0)return!1;if(typeof i==`function`){let n=i.apply(this,t);n!=null&&this[D]&&this._addCatch(n,e,t)}else{let n=arrayClone(i),r=n.length;for(let i=0;i<r;++i){let r=n[i].apply(this,t);r!=null&&this[D]&&this._addCatch(r,e,t)}}return!0}_addCatch(e,t,n){typeof e?.then==`function`&&e.then(void 0,e=>{let r=this[we];if(typeof r==`function`)r.call(this,e,t,...n);else{let t=this[D];try{this[D]=!1,this.emit(`error`,e)}finally{this[D]=t}}})}addListener(e,t){return this._addListener(e,t,!1)}on(e,t){return this._addListener(e,t,!1)}prependListener(e,t){return this._addListener(e,t,!0)}_addListener(e,t,n){checkListener(t);let r=this._events;r===void 0?(r=this._events=Object.create(null),this._eventsCount=0):r.newListener!==void 0&&(this.emit(`newListener`,e,t.listener??t),r=this._events);let i=r[e];i===void 0?(r[e]=t,++this._eventsCount):typeof i==`function`?r[e]=n?[t,i]:[i,t]:n?i.unshift(t):i.push(t);let o=this.getMaxListeners();if(o>0){let t=typeof r[e]==`function`?1:r[e].length;if(t>o&&!r[e].warned){typeof r[e]!=`function`&&(r[e].warned=!0);let n=Error(`Possible EventEmitter memory leak detected. ${t} ${String(e)} listeners added to [${this.constructor.name}]. Use emitter.setMaxListeners() to increase limit`);n.name=`MaxListenersExceededWarning`,y.warn(n.message)}}return this}once(e,t){return checkListener(t),this.on(e,_onceWrap(this,e,t)),this}prependOnceListener(e,t){return checkListener(t),this.prependListener(e,_onceWrap(this,e,t)),this}removeListener(e,t){checkListener(t);let n=this._events;if(n===void 0)return this;let r=n[e];if(r===void 0)return this;if(r===t||r.listener===t)--this._eventsCount===0?this._events=Object.create(null):(delete n[e],n.removeListener&&this.emit(`removeListener`,e,r.listener??t));else if(typeof r!=`function`){let i=-1;for(let e=r.length-1;e>=0;e--)if(r[e]===t||r[e].listener===t){i=e;break}if(i<0)return this;i===0?r.shift():spliceOne(r,i),r.length===1&&(n[e]=r[0]),n.removeListener!==void 0&&this.emit(`removeListener`,e,t.listener??t)}return this}off(e,t){return this.removeListener(e,t)}removeAllListeners(e){let t=this._events;if(t===void 0)return this;if(t.removeListener===void 0)return arguments.length===0?(this._events=Object.create(null),this._eventsCount=0):t[e]!==void 0&&(--this._eventsCount===0?this._events=Object.create(null):delete t[e]),this;if(arguments.length===0){let e=Object.keys(t);for(let t=0;t<e.length;++t){let n=e[t];n!==`removeListener`&&this.removeAllListeners(n)}return this.removeAllListeners(`removeListener`),this._events=Object.create(null),this._eventsCount=0,this}let n=t[e];if(typeof n==`function`)this.removeListener(e,n);else if(n!==void 0)for(let t=n.length-1;t>=0;t--)this.removeListener(e,n[t]);return this}listeners(e){let t=this._events;if(t===void 0)return[];let n=t[e];return n===void 0?[]:typeof n==`function`?[n.listener??n]:unwrapListeners(n)}rawListeners(e){let t=this._events;if(t===void 0)return[];let n=t[e];return n===void 0?[]:typeof n==`function`?[n]:arrayClone(n)}listenerCount(e){let t=this._events;if(t===void 0)return 0;let n=t[e];return n===void 0?0:typeof n==`function`?1:n.length}eventNames(){return(this._eventsCount??0)>0?Reflect.ownKeys(this._events):[]}static once(e,t,n){return new Promise((r,i)=>{let o=n?.signal;if(o?.aborted){i(createAbortError$1(o));return}if(typeof e.addEventListener==`function`){let n=e,handler=(...e)=>{o&&o.removeEventListener(`abort`,abortHandler),r(e)},errorHandler=e=>{o&&o.removeEventListener(`abort`,abortHandler),n.removeEventListener(`error`,errorHandler),i(e)},abortHandler=()=>{n.removeEventListener(t,handler),n.removeEventListener(`error`,errorHandler),i(createAbortError$1(o))};n.addEventListener(t,handler,{once:!0}),t!==`error`&&n.addEventListener(`error`,errorHandler,{once:!0}),o&&o.addEventListener(`abort`,abortHandler,{once:!0});return}let s=e,eventHandler=(...e)=>{o&&o.removeEventListener(`abort`,abortHandler),errorHandler!==void 0&&s.removeListener(`error`,errorHandler),r(e)},errorHandler;t!==`error`&&(errorHandler=e=>{s.removeListener(t,eventHandler),o&&o.removeEventListener(`abort`,abortHandler),i(e)},s.once(`error`,errorHandler)),s.once(t,eventHandler);let abortHandler=()=>{s.removeListener(t,eventHandler),errorHandler&&s.removeListener(`error`,errorHandler),i(createAbortError$1(o))};o&&o.addEventListener(`abort`,abortHandler,{once:!0})})}static on(e,t,n){let r=n?.signal;if(r?.aborted)throw createAbortError$1(r);let i=n?.highWaterMark??2**53-1,o=n?.lowWaterMark??1;validateNumber(i,`highWaterMark`),validateNumber(o,`lowWaterMark`);let s=[],c=[],l=null,u=!1,d=!1,eventHandler=(...t)=>{if(c.length>0){let{resolve:e}=c.shift();e({value:t,done:!1})}else s.push(t),s.length>=i&&!d&&(d=!0,typeof e.pause==`function`&&e.pause())},errorHandler=e=>{if(l=e,c.length>0){let{reject:t}=c.shift();t(e)}f.return()},abortHandler=()=>{errorHandler(createAbortError$1(r))};e.on(t,eventHandler),t!==`error`&&e.on(`error`,errorHandler),r&&r.addEventListener(`abort`,abortHandler,{once:!0});let cleanup=()=>{e.removeListener(t,eventHandler),e.removeListener(`error`,errorHandler),r&&r.removeEventListener(`abort`,abortHandler),u=!0;for(let{resolve:e}of c)e({value:void 0,done:!0});c.length=0,s.length=0},f={next(){if(s.length>0){let t=s.shift();return d&&s.length<o&&(d=!1,typeof e.resume==`function`&&e.resume()),Promise.resolve({value:t,done:!1})}if(l){let e=Promise.reject(l);return l=null,e}return u?Promise.resolve({value:void 0,done:!0}):new Promise((e,t)=>{c.push({resolve:e,reject:t})})},return(){return cleanup(),Promise.resolve({value:void 0,done:!0})},throw(e){return u||(l=e,cleanup()),Promise.reject(e)},[Symbol.asyncIterator](){return this}};return f}static listenerCount(e,t){return e.listenerCount(t)}static getEventListeners(e,t){return typeof e.listeners==`function`?e.listeners(t):[]}static setMaxListeners(e,...t){if(validateNumber(e,`n`),e<0)throw RangeError(`The value of "n" is out of range.`);if(t.length===0)EventEmitter.defaultMaxListeners=e;else for(let n of t)typeof n.setMaxListeners==`function`&&n.setMaxListeners(e)}static getMaxListeners(e){return typeof e.getMaxListeners==`function`?e.getMaxListeners():EventEmitter.defaultMaxListeners}static addAbortListener(e,t){e.aborted&&Promise.resolve().then(()=>t());let handler=()=>t();return e.addEventListener(`abort`,handler,{once:!0}),{[Symbol.dispose](){e.removeEventListener(`abort`,handler)}}}};O.EventEmitter=O;for(let e of[`setMaxListeners`,`getMaxListeners`,`emit`,`addListener`,`on`,`prependListener`,`once`,`prependOnceListener`,`removeListener`,`off`,`removeAllListeners`,`listeners`,`rawListeners`,`listenerCount`,`eventNames`]){let t=O.prototype[e];typeof t==`function`&&Object.defineProperty(O.prototype,e,{enumerable:!0,configurable:!0,writable:!0,value:t})}Object.defineProperty(O.prototype,"_events",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(O.prototype,"_eventsCount",{enumerable:!0,configurable:!0,writable:!0,value:0}),Object.defineProperty(O.prototype,"_maxListeners",{enumerable:!0,configurable:!0,writable:!0,value:void 0});function unwrapListeners(e){let t=Array.from({length:e.length});for(let n=0;n<t.length;++n)t[n]=e[n].listener??e[n];return t}function createAbortError$1(e){let t=Error(`The operation was aborted`);return t.name=`AbortError`,t.code=`ABORT_ERR`,e?.reason&&(t.cause=e.reason),t}__name(createAbortError$1,`createAbortError`);const k=makeCallable(O);k.EventEmitter=k,k.captureRejectionSymbol,k.errorMonitor,k.defaultMaxListeners,k.setMaxListeners,k.getMaxListeners,k.once,k.on,k.getEventListeners,k.listenerCount,k.addAbortListener;function normalizeAndValidateEncoding(e){return e&&checkEncoding(e),normalizeEncoding(e)}function utf8DecodeMaximalSubpart(e,t,n){let r=``,i=t;for(;i<n;){let t=e[i];if(t<=127){r+=String.fromCharCode(t),i++;continue}if(t>=194&&t<=223){i+1<n&&e[i+1]>=128&&e[i+1]<=191?(r+=String.fromCharCode((t&31)<<6|e[i+1]&63),i+=2):(r+=`�`,i++);continue}if(t>=224&&t<=239){let o,s;if(t===224?(o=160,s=191):t===237?(o=128,s=159):(o=128,s=191),i+1>=n){r+=`�`,i++;continue}let c=e[i+1];if(c<o||c>s){r+=`�`,i++;continue}if(i+2>=n){r+=`�`,i+=2;continue}let l=e[i+2];if(l<128||l>191){r+=`�`,i+=2;continue}let u=(t&15)<<12|(c&63)<<6|l&63;r+=String.fromCharCode(u),i+=3;continue}if(t>=240&&t<=244){let o,s;if(t===240?(o=144,s=191):t===244?(o=128,s=143):(o=128,s=191),i+1>=n){r+=`�`,i++;continue}let c=e[i+1];if(c<o||c>s){r+=`�`,i++;continue}if(i+2>=n){r+=`�`,i+=2;continue}let l=e[i+2];if(l<128||l>191){r+=`�`,i+=2;continue}if(i+3>=n){r+=`�`,i+=3;continue}let u=e[i+3];if(u<128||u>191){r+=`�`,i+=3;continue}let d=(t&7)<<18|(c&63)<<12|(l&63)<<6|u&63;r+=String.fromCharCode(55296+(d-65536>>10),56320+(d-65536&1023)),i+=4;continue}r+=`�`,i++}return r}function utf8CharLength(e){return e&128?e>=194&&e<=223?2:e>=224&&e<=239?3:e>=240&&e<=244?4:0:1}function isValidContinuation(e,t,n,r){if(n===1){if(t===3)return e===224?r>=160&&r<=191:e===237?r>=128&&r<=159:r>=128&&r<=191;if(t===4)return e===240?r>=144&&r<=191:e===244?r>=128&&r<=143:r>=128&&r<=191}return r>=128&&r<=191}const Te=function StringDecoder(e){this.encoding=normalizeAndValidateEncoding(e),this._lastNeed=0,this._lastTotal=0,this._lastLeadByte=0,this.encoding===`utf8`||this.encoding===`utf16le`?this._lastChar=new Uint8Array(4):this.encoding===`base64`?this._lastChar=new Uint8Array(3):this._lastChar=new Uint8Array};Te.prototype.write=function write(e){if(e.length===0)return``;switch(this.encoding){case`utf8`:return writeUtf8(this,e);case`utf16le`:return writeUtf16le(this,e);case`base64`:return writeBase64(this,e);case`ascii`:return decodeAscii(e);case`latin1`:return decodeLatin1(e);case`hex`:return decodeHex(e);default:return decodeAscii(e)}},Te.prototype.end=function end(e){let t=``;if(e&&e.length>0&&(t=this.write(e)),this.encoding===`utf8`&&this._lastNeed>0)t+=`�`,this._lastNeed=0,this._lastTotal=0;else if(this.encoding===`utf16le`&&this._lastNeed>0){let e=this._lastTotal-this._lastNeed;for(let n=0;n+1<e;n+=2)t+=String.fromCharCode(this._lastChar[n]|this._lastChar[n+1]<<8);this._lastNeed=0,this._lastTotal=0}else if(this.encoding===`base64`&&this._lastNeed>0){let e=this._lastChar.subarray(0,this._lastTotal-this._lastNeed);t+=base64Encode(e),this._lastNeed=0,this._lastTotal=0}return t};function writeUtf8(e,t){let n=0,r=``;if(e._lastNeed>0){for(;n<t.length&&e._lastNeed>0;){let i=t[n],o=e._lastTotal-e._lastNeed;if(isValidContinuation(e._lastLeadByte,e._lastTotal,o,i))e._lastChar[o]=i,e._lastNeed--,n++;else{r+=`�`,e._lastNeed=0,e._lastTotal=0,e._lastLeadByte=0;break}}if(e._lastNeed===0&&e._lastTotal>0&&(r+=utf8DecodeMaximalSubpart(e._lastChar,0,e._lastTotal),e._lastTotal=0,e._lastLeadByte=0),e._lastNeed>0)return r}let i=t.length;for(let r=0;r<Math.min(4,t.length-n);r++){let o=t.length-1-r;if(o<n)break;let s=t[o];if((s&192)!=128){let n=utf8CharLength(s);if(n>0&&s>=128){let r=t.length-o;if(r<n){let c=!0;for(let e=1;e<r;e++)if(!isValidContinuation(s,n,e,t[o+e])){c=!1;break}if(c){i=o;for(let n=0;n<r;n++)e._lastChar[n]=t[o+n];e._lastNeed=n-r,e._lastTotal=n,e._lastLeadByte=s}}}break}}return i>n&&(r+=utf8DecodeMaximalSubpart(t,n,i)),r}function writeUtf16le(e,t){let n=``,r=0;if(e._lastNeed>0){let i=e._lastTotal-e._lastNeed,o=Math.min(e._lastNeed,t.length);for(let n=0;n<o;n++)e._lastChar[i+n]=t[n];if(e._lastNeed-=o,r=o,e._lastNeed>0)return``;let s=e._lastTotal,c=0;for(;c+1<s;){let i=e._lastChar[c]|e._lastChar[c+1]<<8;if(c+=2,i>=55296&&i<=56319){if(c+1<s){let t=e._lastChar[c]|e._lastChar[c+1]<<8;if(t>=56320&&t<=57343){n+=String.fromCharCode(i,t),c+=2;continue}}if(r+1<t.length){let e=t[r]|t[r+1]<<8;if(e>=56320&&e<=57343){n+=String.fromCharCode(i,e),r+=2;continue}}else if(r>=t.length)return e._lastChar[0]=e._lastChar[c-2],e._lastChar[1]=e._lastChar[c-1],e._lastNeed=2,e._lastTotal=4,n}n+=String.fromCharCode(i)}e._lastTotal=0}for(;r+1<t.length;){let i=t[r]|t[r+1]<<8;if(r+=2,i>=55296&&i<=56319)if(r+1<t.length){let e=t[r]|t[r+1]<<8;if(e>=56320&&e<=57343){n+=String.fromCharCode(i,e),r+=2;continue}}else if(r<t.length)return n+=String.fromCharCode(i),e._lastChar[0]=t[r],e._lastNeed=1,e._lastTotal=2,n;else return e._lastChar[0]=t[r-2],e._lastChar[1]=t[r-1],e._lastNeed=2,e._lastTotal=4,n;n+=String.fromCharCode(i)}return r<t.length&&(e._lastChar[0]=t[r],e._lastNeed=1,e._lastTotal=2),n}function writeBase64(e,t){let n=0;if(e._lastNeed>0){let r=Math.min(e._lastNeed,t.length);for(let n=0;n<r;n++)e._lastChar[e._lastTotal-e._lastNeed+n]=t[n],e._lastNeed--;if(n=r,e._lastNeed>0)return``}let r=t.length-n,i=r-r%3,o=``;e._lastTotal>0&&e._lastNeed===0&&(o+=base64Encode(e._lastChar.subarray(0,e._lastTotal)),e._lastTotal=0),i>0&&(o+=base64Encode(t.subarray(n,n+i)));let s=r-i;if(s>0){for(let r=0;r<s;r++)e._lastChar[r]=t[n+i+r];e._lastNeed=3-s,e._lastTotal=3}return o}function decodeAscii(e){let t=``;for(let n=0;n<e.length;n++)t+=String.fromCharCode(e[n]&127);return t}function decodeLatin1(e){let t=``;for(let n=0;n<e.length;n++)t+=String.fromCharCode(e[n]);return t}function decodeHex(e){let t=``;for(let n=0;n<e.length;n++)t+=e[n].toString(16).padStart(2,`0`);return t}const Ee=new TextEncoder;var ProcessWriteStream=class extends k{fd;writable=!0;_outGio=null;constructor(e){super(),this.fd=e;let t=getGioNamespace();if(t){let e=t.UnixOutputStream??t.OutputStream;if(e)try{this._outGio=e.new(this.fd,!1)}catch{}}}write(e){if(this._outGio)try{let t=typeof e==`string`?Ee.encode(e):e;return this._outGio.write_all(t,null),!0}catch{}return this.fd===2?y.error(e):y.log(e),!0}get isTTY(){let e=nativeIsTty(this.fd);if(e!==null)return e;try{let e=getGjsGlobal().imports?.gi?.GLib;if(e)return!!e.log_writer_supports_color(this.fd)}catch{}return!1}get columns(){let e=nativeTerminalSize(this.fd);if(e)return e.columns;try{let e=getGjsGlobal().imports?.gi?.GLib;if(e){let t=parseInt(e.getenv(`COLUMNS`)??`0`,10);if(t>0)return t}}catch{}return 80}end(){}destroy(){}get rows(){let e=nativeTerminalSize(this.fd);if(e)return e.rows;try{let e=getGjsGlobal().imports?.gi?.GLib;if(e){let t=parseInt(e.getenv(`LINES`)??`0`,10);if(t>0)return t}}catch{}return 24}},ProcessReadStream=class extends k{fd;isRaw=!1;_gio=null;_stdinGio=null;_reading=!1;_flowing=!1;_mainLoopHeld=!1;_pendingRead=!1;_decoder=null;constructor(e){super(),this.fd=e,this._gio=getGioNamespace()}get isTTY(){return nativeIsTty(this.fd)??!1}setRawMode(e){return noteRawMode(this.fd,e,e=>nativeSetRawMode(this.fd,e)===!0)?(this.isRaw=e,this):(noteRawMode(this.fd,e,e=>this._setRawModeViaStty(e)),this.isRaw=e,this)}_setRawModeViaStty(e){try{let t=globalThis.imports?.gi,n=t?.Gio??t?.Gio;if(!n)return!1;let r=n.SubprocessFlags?.STDIN_INHERIT??2,i=e?[`stty`,`-icanon`,`-echo`,`-icrnl`,`-isig`,`min`,`1`,`time`,`0`]:[`stty`,`icanon`,`echo`,`icrnl`,`isig`],o=new n.SubprocessLauncher({flags:r}).spawnv(i);return o.wait(null),o.get_successful()}catch{return!1}}setEncoding(e){return this._decoder=new Te(e),this}_pushData(e){if(this._decoder){let t=this._decoder.write(e);t.length>0&&this.emit(`data`,t)}else this.emit(`data`,e)}on(e,t){let n=e===`data`&&this.listenerCount(`data`)===0;return super.on(e,t),n&&e===`data`&&this.resume(),this}addListener(e,t){return this.on(e,t)}once(e,t){return super.once(e,t),this}removeListener(e,t){return super.removeListener(e,t),e===`data`&&this.listenerCount(`data`)===0&&this.pause(),this}off(e,t){return this.removeListener(e,t)}removeAllListeners(e){let t=e===void 0||e===`data`?this.listenerCount(`data`)>0:!1;return super.removeAllListeners(e),t&&this.listenerCount(`data`)===0&&this.pause(),this}resume(){return this._flowing=!0,this._gio&&this.fd===0&&!this._reading&&this._startReading(),this}pause(){if(this._flowing=!1,this._reading=!1,this._mainLoopHeld){this._mainLoopHeld=!1;let e=globalThis.imports?.gi,t=e?.GLib??e?.GLib;t?.idle_add?t.idle_add(300,()=>(this._mainLoopHeld||quitMainLoop(),!1)):quitMainLoop()}return this}read(){return null}[Symbol.asyncIterator](){let e=[],t=!1,n=null,r=null,notify=()=>{let e=r;r=null,e?.()},onData=t=>{e.push(t),notify()},onEnd=()=>{t=!0,notify()},onError=e=>{n=e instanceof Error?e:Error(String(e)),notify()},stop=()=>{this.off(`data`,onData),this.off(`end`,onEnd),this.off(`error`,onError)};return this.on(`error`,onError),this.on(`end`,onEnd),this.on(`data`,onData),{next:async()=>{for(;;){if(e.length>0)return{value:e.shift(),done:!1};if(n)throw stop(),n;if(t)return stop(),{value:void 0,done:!0};await new Promise(e=>{r=e})}},return:async()=>(stop(),{value:void 0,done:!0}),[Symbol.asyncIterator](){return this}}}_startReading(){if(!this._gio||this._reading)return;if(this._pendingRead){this._reading=!0,this._mainLoopHeld||(this._mainLoopHeld=!0,ensureMainLoop());return}if(this._reading=!0,this._mainLoopHeld||(this._mainLoopHeld=!0,ensureMainLoop()),!this._stdinGio){let e=this._gio.UnixInputStream??this._gio.InputStream;if(!e){this._reading=!1;return}try{this._stdinGio=e.new(this.fd,!1)}catch{this._reading=!1;return}}let loop=()=>{if(!this._reading){this._pendingRead=!1;return}this._pendingRead=!0,this._stdinGio.read_bytes_async(4096,0,null,(e,t)=>{this._pendingRead=!1;try{let n=e.read_bytes_finish(t)?.get_data?.()??null;if(n&&n.byteLength>0)this._pushData(Buffer.from(n));else if(n!==null&&n.byteLength===0){if(this._reading=!1,this._decoder){let e=this._decoder.end();e.length>0&&this.emit(`data`,e)}this.emit(`end`);return}}catch{this._reading=!1;return}this._reading&&loop()})};loop()}};const De=Date.now();function defineLazy(e,t,n){Object.defineProperty(e,t,{configurable:!0,enumerable:!0,get(){let r=n();return Object.defineProperty(e,t,{value:r,configurable:!0,enumerable:!0,writable:!1}),r}})}var Process=class extends k{platform;arch;env;argv;argv0;execPath;pid;ppid;version;versions;title;execArgv;config;exitCode;constructor(){super(),this.on(`exit`,()=>{try{restoreClaimedRawModes()}catch(e){y.error(`@gjsify/process: raw mode could not be restored:`,e)}}),defineLazy(this,`platform`,detectPlatform),defineLazy(this,`arch`,detectArch),this.env=getEnvProxy(),this.argv=getArgv(),this.argv0=this.argv[0]||`gjs`,this.execPath=getExecPath(),this.execArgv=getExecArgv(),this.config=globalThis.process?.config??{target_defaults:{},variables:{}},this.pid=getPid(),this.ppid=detectPpid();let e=detectVersionInfo();this.version=e.version,this.versions=e.versions,this.title=e.title,this.on(`newListener`,e=>{isDeliverableSignal(e)&&armSignal(e,e=>this.emit(e,e))}),this.on(`removeListener`,e=>{isDeliverableSignal(e)&&this.listenerCount(e)===0&&disarmSignal(e)})}cwd(){return getCwd()}chdir(e){chdir(e)}kill(e,t){return killPid(e,t)}exit(e){return this.exitCode=e??this.exitCode??0,this.emit(`exit`,this.exitCode),exitProcess(this.exitCode)}nextTick(e,...t){typeof queueMicrotask==`function`?queueMicrotask(()=>e(...t)):Promise.resolve().then(()=>e(...t))}hrtime(e){return hrtime(e)}uptime(){return(Date.now()-De)/1e3}memoryUsage(){return memoryUsage()}cpuUsage(e){return cpuUsage(e)}stdout=new ProcessWriteStream(1);stderr=new ProcessWriteStream(2);stdin=new ProcessReadStream(0);abort(){this.exit(1)}umask(e){let t=readUmask();return e!==void 0&&!this._umaskWarned&&(this._umaskWarned=!0,this.emitWarning(`process.umask(0${e.toString(8)}) cannot change the file-creation mask under GJS — there is no umask(2) binding, so the mask is UNCHANGED. Pass an explicit \`mode\` to open/mkdir/writeFile instead; the kernel applies it atomically at creation.`,`UnsupportedWarning`)),t}_umaskWarned=!1;emitWarning(e,t){y.warn(typeof e==`string`?`(${t||`Warning`}): ${e}`:e.message)}};Process.prototype.hrtime.bigint=function(){return hrtimeBigint()};const A=new Process;if(Ce)try{let e=new Ce.ResizeWatcher;e.connect(`resized`,(e,t,n)=>{A.stdout.emit(`resize`),A.stderr.emit(`resize`)}),e.start()}catch{}A.platform,A.arch,A.env,A.argv,A.argv0,A.execPath,A.pid,A.ppid,A.version,A.versions,A.cwd.bind(A),A.chdir.bind(A),A.exit.bind(A),A.nextTick.bind(A),Object.assign(A.hrtime.bind(A),{bigint:hrtimeBigint}),A.uptime.bind(A),A.memoryUsage.bind(A),A.cpuUsage.bind(A),A.kill.bind(A),A.abort.bind(A),A.umask.bind(A),A.emitWarning.bind(A),A.execArgv,A.config,A.stdout,A.stderr,A.stdin,typeof Promise.withResolvers!=`function`&&(Promise.withResolvers=function(){let e,t;return{promise:new Promise((n,r)=>{e=n,t=r}),resolve:e,reject:t}}),initErrorV8Methods(Error),`global`in globalThis||Object.defineProperty(globalThis,"global",{value:globalThis,writable:!1,enumerable:!1,configurable:!0}),Object.defineProperty(globalThis,"process",{value:A,enumerable:!1,writable:!0,configurable:!0}),typeof globalThis.structuredClone!=`function`&&Object.defineProperty(globalThis,"structuredClone",{value:structuredClone$1,enumerable:!0,writable:!0,configurable:!0});function getGLib(){return globalThis.imports?.gi?.GLib}const Oe=getGLib()!==void 0;function reportTimerThrow(e,t){try{e.log_default_handler(`gjsify-timers`,e.LogLevelFlags.LEVEL_WARNING,`Uncaught exception in a timer callback: ${String(t)}\n${t?.stack??``}`,null)}catch{}}var GjsifyTimeout=class{_id=null;_refed=!0;_tracked=!1;_callback;_delay;_args;_repeat;constructor(e,t,n,r){this._callback=e,this._delay=t,this._args=n,this._repeat=r,this._schedule()}_schedule(){let e=getGLib();if(!e)return;let t=e.timeout_add.bind(e);this._track(),this._id=t(e.PRIORITY_DEFAULT,this._delay,()=>{try{this._callback.apply(globalThis,this._args)}catch(t){reportTimerThrow(e,t),globalThis.__gjsify_worker_context?.crash(t)}return this._repeat?e.SOURCE_CONTINUE:(this._id=null,this._untrack(),e.SOURCE_REMOVE)})}unref(){return this._refed=!1,this._untrack(),this}ref(){return this._refed=!0,this._id!==null&&this._track(),this}_track(){this._tracked||!this._refed||(this._tracked=!0,trackTimer())}_untrack(){this._tracked&&(this._tracked=!1,untrackTimer())}hasRef(){return this._refed}refresh(){return this._cancel(),this._schedule(),this}_cancel(){this._id!==null&&(getGLib()?.Source.remove(this._id),this._id=null,this._untrack())}close(){return this._cancel(),this}[Symbol.toPrimitive](){return this._id}[Symbol.dispose](){this._cancel()}};function removeById(e){e instanceof GjsifyTimeout||typeof e==`object`&&e&&`_cancel`in e?e._cancel():typeof e==`object`&&e&&typeof e.close==`function`?e.close():typeof e==`number`&&getGLib()?.Source.remove(e)}if(Oe){let setT=(e,t=0,...n)=>new GjsifyTimeout(e,Math.max(0,t|0),n,!1),setI=(e,t=0,...n)=>new GjsifyTimeout(e,Math.max(0,t|0),n,!0),e=globalThis;e.setTimeout=setT,e.clearTimeout=removeById,e.setInterval=setI,e.clearInterval=removeById}function setImmediate(e,...t){return setTimeout(e,0,...t)}function clearImmediate(e){clearTimeout(e)}`setImmediate`in globalThis||Object.defineProperty(globalThis,"setImmediate",{value:setImmediate,enumerable:!0,writable:!0,configurable:!0}),`clearImmediate`in globalThis||Object.defineProperty(globalThis,"clearImmediate",{value:clearImmediate,enumerable:!0,writable:!0,configurable:!0});var ke=Object.defineProperty,__exportAll=(e,t)=>{let n={};for(var r in e)ke(n,r,{get:e[r],enumerable:!0});return t||ke(n,Symbol.toStringTag,{value:`Module`}),n};function assertPath(e){if(typeof e!=`string`)throw TypeError(`The "path" argument must be of type string. Received type `+typeof e)}function isPosixPathSeparator(e){return e===47}function isPathSeparator(e){return e===47||e===92}function isWindowsDeviceRoot(e){return e>=65&&e<=90||e>=97&&e<=122}function normalizeString(e,t,n,r){let i=``,o=0,s=-1,c=0,l;for(let u=0;u<=e.length;++u){if(u<e.length)l=e.charCodeAt(u);else if(r(l))break;else l=47;if(r(l)){if(!(s===u-1||c===1))if(s!==u-1&&c===2){if(i.length<2||o!==2||i.charCodeAt(i.length-1)!==46||i.charCodeAt(i.length-2)!==46){if(i.length>2){let e=i.lastIndexOf(n);e===-1?(i=``,o=0):(i=i.slice(0,e),o=i.length-1-i.lastIndexOf(n)),s=u,c=0;continue}else if(i.length===2||i.length===1){i=``,o=0,s=u,c=0;continue}}t&&(i.length>0?i+=`${n}..`:i=`..`,o=2)}else i.length>0?i+=n+e.slice(s+1,u):i=e.slice(s+1,u),o=u-s-1;s=u,c=0}else l===46&&c!==-1?++c:c=-1}return i}function _format(e,t){if(typeof t!=`object`||!t)throw TypeError(`The "pathObject" argument must be of type Object. Received type `+typeof t);let n=t,r=n.dir||n.root,i=n.base||(n.name||``)+formatExt(n.ext);return r?r===n.root?r+i:r+e+i:i}function formatExt(e){return e?`${e[0]===`.`?``:`.`}${e}`:``}var Ae=__exportAll({basename:()=>basename$1,delimiter:()=>`:`,dirname:()=>dirname$1,extname:()=>extname$1,format:()=>format$1,isAbsolute:()=>isAbsolute$1,join:()=>join$1,normalize:()=>normalize$1,parse:()=>parse$1,relative:()=>relative$1,resolve:()=>resolve$1,sep:()=>`/`,toNamespacedPath:()=>toNamespacedPath$1});function posixCwd(){if(typeof globalThis.process?.cwd==`function`)return globalThis.process.cwd();try{let e=globalThis.imports?.gi?.GLib;if(e?.get_current_dir)return e.get_current_dir()}catch{}return`/`}function resolve$1(...e){let t=``,n=!1;for(let r=e.length-1;r>=-1&&!n;r--){let i;if(r>=0){if(i=e[r],assertPath(i),i.length===0)continue}else i=posixCwd();t=`${i}/${t}`,n=i.charCodeAt(0)===47}return t=normalizeString(t,!n,`/`,isPosixPathSeparator),n?t.length>0?`/${t}`:`/`:t.length>0?t:`.`}__name(resolve$1,`resolve`);function normalize$1(e){if(assertPath(e),e.length===0)return`.`;let t=e.charCodeAt(0)===47,n=e.charCodeAt(e.length-1)===47,r=normalizeString(e,!t,`/`,isPosixPathSeparator);return r.length===0&&!t&&(r=`.`),r.length>0&&n&&(r+=`/`),t?`/${r}`:r}__name(normalize$1,`normalize`);function isAbsolute$1(e){return assertPath(e),e.length>0&&e.charCodeAt(0)===47}__name(isAbsolute$1,`isAbsolute`);function join$1(...e){if(e.length===0)return`.`;let t;for(let n=0;n<e.length;++n){let r=e[n];assertPath(r),r.length>0&&(t===void 0?t=r:t+=`/${r}`)}return t===void 0?`.`:normalize$1(t)}__name(join$1,`join`);function relative$1(e,t){if(assertPath(e),assertPath(t),e===t||(e=resolve$1(e),t=resolve$1(t),e===t))return``;let n=e.length,r=n-1,i=1,o=t.length-i,s=r<o?r:o,c=-1,l=0;for(;l<=s;++l){if(l===s){if(o>s){if(t.charCodeAt(i+l)===47)return t.slice(i+l+1);if(l===0)return t.slice(i+l)}else r>s&&(e.charCodeAt(1+l)===47?c=l:l===0&&(c=0));break}let n=e.charCodeAt(1+l);if(n!==t.charCodeAt(i+l))break;n===47&&(c=l)}let u=``;for(l=1+c+1;l<=n;++l)(l===n||e.charCodeAt(l)===47)&&(u.length===0?u+=`..`:u+=`/..`);return u.length>0?u+t.slice(i+c):(i+=c,t.charCodeAt(i)===47&&++i,t.slice(i))}__name(relative$1,`relative`);function toNamespacedPath$1(e){return e}__name(toNamespacedPath$1,`toNamespacedPath`);function dirname$1(e){if(assertPath(e),e.length===0)return`.`;let t=e.charCodeAt(0)===47,n=-1,r=!0;for(let t=e.length-1;t>=1;--t)if(e.charCodeAt(t)===47){if(!r){n=t;break}}else r=!1;return n===-1?t?`/`:`.`:t&&n===1?`//`:e.slice(0,n)}__name(dirname$1,`dirname`);function basename$1(e,t){t!==void 0&&assertPath(t),assertPath(e);let n=0,r=-1,i=!0;if(t!==void 0&&t.length>0&&t.length<=e.length){if(t.length===e.length&&t===e)return``;let o=t.length-1,s=-1;for(let c=e.length-1;c>=0;--c){let l=e.charCodeAt(c);if(l===47){if(!i){n=c+1;break}}else s===-1&&(i=!1,s=c+1),o>=0&&(l===t.charCodeAt(o)?--o===-1&&(r=c):(o=-1,r=s))}return n===r?r=s:r===-1&&(r=e.length),e.slice(n,r)}else{for(let t=e.length-1;t>=0;--t)if(e.charCodeAt(t)===47){if(!i){n=t+1;break}}else r===-1&&(i=!1,r=t+1);return r===-1?``:e.slice(n,r)}}__name(basename$1,`basename`);function extname$1(e){assertPath(e);let t=-1,n=0,r=-1,i=!0,o=0;for(let s=e.length-1;s>=0;--s){let c=e.charCodeAt(s);if(c===47){if(!i){n=s+1;break}continue}r===-1&&(i=!1,r=s+1),c===46?t===-1?t=s:o!==1&&(o=1):t!==-1&&(o=-1)}return t===-1||r===-1||o===0||o===1&&t===r-1&&t===n+1?``:e.slice(t,r)}__name(extname$1,`extname`);function format$1(e){if(typeof e!=`object`||!e)throw TypeError(`The "pathObject" argument must be of type Object. Received type `+typeof e);return _format(`/`,e)}__name(format$1,`format`);function parse$1(e){assertPath(e);let t={root:``,dir:``,base:``,ext:``,name:``};if(e.length===0)return t;let n=e.charCodeAt(0)===47,r;n?(t.root=`/`,r=1):r=0;let i=-1,o=0,s=-1,c=!0,l=e.length-1,u=0;for(;l>=r;--l){let t=e.charCodeAt(l);if(t===47){if(!c){o=l+1;break}continue}s===-1&&(c=!1,s=l+1),t===46?i===-1?i=l:u!==1&&(u=1):i!==-1&&(u=-1)}return i===-1||s===-1||u===0||u===1&&i===s-1&&i===o+1?s!==-1&&(o===0&&n?t.base=t.name=e.slice(1,s):t.base=t.name=e.slice(o,s)):(o===0&&n?(t.name=e.slice(1,i),t.base=e.slice(1,s)):(t.name=e.slice(o,i),t.base=e.slice(o,s)),t.ext=e.slice(i,s)),o>0?t.dir=e.slice(0,o-1):n&&(t.dir=`/`),t}__name(parse$1,`parse`);var je=__exportAll({basename:()=>basename,delimiter:()=>`;`,dirname:()=>dirname,extname:()=>extname,format:()=>format,isAbsolute:()=>isAbsolute,join:()=>join,normalize:()=>normalize,parse:()=>parse,relative:()=>relative,resolve:()=>resolve,sep:()=>`\\`,toNamespacedPath:()=>toNamespacedPath});function cwd(){return typeof globalThis.process?.cwd==`function`?globalThis.process.cwd():`/`}function resolve(...e){let t=``,n=``,r=!1;for(let i=e.length-1;i>=-1;i--){let o;if(i>=0){if(o=e[i],assertPath(o),o.length===0)continue}else t.length===0?o=cwd():(o=globalThis.process?.env?.[`=${t}`]||cwd(),o.slice(0,2).toLowerCase()!==t.toLowerCase()&&o.charCodeAt(2)===92&&(o=`${t}\\`));let s=o.length,c=0,l=``,u=!1,d=o.charCodeAt(0);if(s===1)isPathSeparator(d)&&(c=1,u=!0);else if(isPathSeparator(d))if(u=!0,isPathSeparator(o.charCodeAt(1))){let e=matchUncRoot(o);e&&(l=e.device,c=e.rootEnd)}else c=1;else isWindowsDeviceRoot(d)&&o.charCodeAt(1)===58&&(l=o.slice(0,2),c=2,s>2&&isPathSeparator(o.charCodeAt(2))&&(u=!0,c=3));if(l.length>0)if(t.length>0){if(l.toLowerCase()!==t.toLowerCase())continue}else t=l;if(r){if(t.length>0)break}else if(n=`${o.slice(c)}\\${n}`,r=u,u&&t.length>0)break}return n=normalizeString(n,!r,`\\`,isPathSeparator),r?`${t}\\${n}`:`${t}${n}`||`.`}function matchUncRoot(e){let t=e.length,n=2,r=n;for(;n<t&&!isPathSeparator(e.charCodeAt(n));)n++;if(n>=t||n===r)return;let i=e.slice(r,n);for(r=n;n<t&&isPathSeparator(e.charCodeAt(n));)n++;if(!(n>=t||n===r)){for(r=n;n<t&&!isPathSeparator(e.charCodeAt(n));)n++;return i===`.`||i===`?`?{device:`\\\\${i}`,rootEnd:4,shareOnly:!1}:{device:`\\\\${i}\\${e.slice(r,n)}`,rootEnd:n,shareOnly:n===t}}}function normalize(e){assertPath(e);let t=e.length;if(t===0)return`.`;let n=e.charCodeAt(0);if(t===1)return isPosixPathSeparator(n)?`\\`:e;let r=0,i,o=!1;if(isPathSeparator(n))if(o=!0,isPathSeparator(e.charCodeAt(1))){let t=matchUncRoot(e);if(t?.shareOnly)return`${t.device}\\`;if(t&&(i=t.device,r=t.rootEnd,i.length===3)){let t=e.slice(4,e.indexOf(`:`)+1);isWindowsReservedName(t,t.length-1)&&(i=`\\\\?\\${t}`,r=4+t.length)}}else r=1;else{let s=e.indexOf(`:`);s>0&&(isWindowsDeviceRoot(n)&&s===1?(i=e.slice(0,2),r=2,t>2&&isPathSeparator(e.charCodeAt(2))&&(o=!0,r=3)):isWindowsReservedName(e,s)&&(i=e.slice(0,s+1),r=s+1))}let s=r<t?normalizeString(e.slice(r),!o,`\\`,isPathSeparator):``;if(s.length===0&&!o&&(s=`.`),s.length>0&&isPathSeparator(e.charCodeAt(t-1))&&(s+=`\\`),!o&&i===void 0&&e.includes(`:`)){if(s.length>=2&&isWindowsDeviceRoot(s.charCodeAt(0))&&s.charCodeAt(1)===58)return`.\\${s}`;let n=e.indexOf(`:`);do if(n===t-1||isPathSeparator(e.charCodeAt(n+1)))return`.\\${s}`;while((n=e.indexOf(`:`,n+1))!==-1)}return isWindowsReservedName(e,e.indexOf(`:`))?`.\\${i??``}${s}`:i===void 0?o?`\\${s}`:s:o?`${i}\\${s}`:`${i}${s}`}const Me=new Set([`CON`,`PRN`,`AUX`,`NUL`,...[`1`,`2`,`3`,`4`,`5`,`6`,`7`,`8`,`9`,`¹`,`²`,`³`].flatMap(e=>[`COM${e}`,`LPT${e}`])]);function isWindowsReservedName(e,t){return Me.has(e.slice(0,t).toUpperCase())}function isAbsolute(e){assertPath(e);let t=e.length;if(t===0)return!1;let n=e.charCodeAt(0);return!!(isPathSeparator(n)||isWindowsDeviceRoot(n)&&t>2&&e.charCodeAt(1)===58&&isPathSeparator(e.charCodeAt(2)))}function join(...e){if(e.length===0)return`.`;let t,n;for(let r=0;r<e.length;++r){let i=e[r];assertPath(i),i.length>0&&(t===void 0?t=n=i:t+=`\\${i}`)}if(t===void 0)return`.`;let r=!0,i=0;if(isPathSeparator(n.charCodeAt(0))){++i;let e=n.length;e>1&&isPathSeparator(n.charCodeAt(1))&&(++i,e>2&&(isPathSeparator(n.charCodeAt(2))?++i:r=!1))}if(r){for(;i<t.length&&isPathSeparator(t.charCodeAt(i));++i);i>=2&&(t=`\\${t.slice(i)}`)}return t.split(/\\+/).some(e=>{let t=e.indexOf(`:`);return t!==-1&&isWindowsReservedName(e,t)})?t.replace(/\//g,`\\`):normalize(t)}function relative(e,t){if(assertPath(e),assertPath(t),e===t)return``;let n=resolve(e),r=resolve(t);if(n===r||(e=n.toLowerCase(),t=r.toLowerCase(),e===t))return``;let i=0;for(;i<e.length&&e.charCodeAt(i)===92;++i);let o=e.length;for(;o-1>i&&e.charCodeAt(o-1)===92;--o);let s=o-i,c=0;for(;c<t.length&&t.charCodeAt(c)===92;++c);let l=t.length;for(;l-1>c&&t.charCodeAt(l-1)===92;--l);let u=l-c,d=s<u?s:u,f=-1,p=0;for(;p<=d;++p){if(p===d){if(u>d){if(t.charCodeAt(c+p)===92)return r.slice(c+p+1);if(p===2)return r.slice(c+p)}s>d&&(e.charCodeAt(i+p)===92?f=p:p===2&&(f=3));break}let n=e.charCodeAt(i+p);if(n!==t.charCodeAt(c+p))break;n===92&&(f=p)}if(p!==d&&f===-1)return r;let m=``;for(f===-1&&(f=0),p=i+f+1;p<=o;++p)(p===o||e.charCodeAt(p)===92)&&(m.length===0?m+=`..`:m+=`\\..`);return m.length>0?m+r.slice(c+f,l):(c+=f,r.charCodeAt(c)===92&&++c,r.slice(c,l))}function toNamespacedPath(e){if(typeof e!=`string`||e.length===0)return e;let t=resolve(e);if(t.length<=2)return e;if(t.charCodeAt(0)===92){if(t.charCodeAt(1)===92){let e=t.charCodeAt(2);if(e!==63&&e!==46)return`\\\\?\\UNC\\${t.slice(2)}`}}else if(isWindowsDeviceRoot(t.charCodeAt(0))&&t.charCodeAt(1)===58&&t.charCodeAt(2)===92)return`\\\\?\\${t}`;return t}function dirname(e){assertPath(e);let t=e.length;if(t===0)return`.`;let n=-1,r=-1,i=!0,o=0,s=e.charCodeAt(0);if(t>1)if(isPathSeparator(s)){if(n=o=1,isPathSeparator(e.charCodeAt(1))){let r=2,i=r;for(;r<t&&!isPathSeparator(e.charCodeAt(r));++r);if(r<t&&r!==i){for(i=r;r<t&&isPathSeparator(e.charCodeAt(r));++r);if(r<t&&r!==i){for(i=r;r<t&&!isPathSeparator(e.charCodeAt(r));++r);if(r===t)return e;r!==i&&(n=o=r+1)}}}}else isWindowsDeviceRoot(s)&&e.charCodeAt(1)===58&&(n=o=2,t>2&&isPathSeparator(e.charCodeAt(2))&&(n=o=3));else if(isPathSeparator(s))return e;for(let n=t-1;n>=o;--n)if(isPathSeparator(e.charCodeAt(n))){if(!i){r=n;break}}else i=!1;if(r===-1){if(n===-1)return`.`;r=n}return e.slice(0,r)}function basename(e,t){t!==void 0&&assertPath(t),assertPath(e);let n=0,r=-1,i=!0;if(e.length>=2&&isWindowsDeviceRoot(e.charCodeAt(0))&&e.charCodeAt(1)===58&&(n=2),t!==void 0&&t.length>0&&t.length<=e.length){if(t.length===e.length&&t===e)return``;let o=t.length-1,s=-1;for(let c=e.length-1;c>=n;--c){let l=e.charCodeAt(c);if(isPathSeparator(l)){if(!i){n=c+1;break}}else s===-1&&(i=!1,s=c+1),o>=0&&(l===t.charCodeAt(o)?--o===-1&&(r=c):(o=-1,r=s))}return n===r?r=s:r===-1&&(r=e.length),e.slice(n,r)}else{for(let t=e.length-1;t>=n;--t)if(isPathSeparator(e.charCodeAt(t))){if(!i){n=t+1;break}}else r===-1&&(i=!1,r=t+1);return r===-1?``:e.slice(n,r)}}function extname(e){assertPath(e);let t=0,n=-1,r=0,i=-1,o=!0,s=0;e.length>=2&&e.charCodeAt(1)===58&&isWindowsDeviceRoot(e.charCodeAt(0))&&(t=r=2);for(let c=e.length-1;c>=t;--c){let t=e.charCodeAt(c);if(isPathSeparator(t)){if(!o){r=c+1;break}continue}i===-1&&(o=!1,i=c+1),t===46?n===-1?n=c:s!==1&&(s=1):n!==-1&&(s=-1)}return n===-1||i===-1||s===0||s===1&&n===i-1&&n===r+1?``:e.slice(n,i)}function format(e){if(typeof e!=`object`||!e)throw TypeError(`The "pathObject" argument must be of type Object. Received type `+typeof e);return _format(`\\`,e)}function parse(e){assertPath(e);let t={root:``,dir:``,base:``,ext:``,name:``};if(e.length===0)return t;let n=e.length,r=0,i=e.charCodeAt(0);if(n>1)if(isPathSeparator(i)){if(r=1,isPathSeparator(e.charCodeAt(1))){let t=2,i=t;for(;t<n&&!isPathSeparator(e.charCodeAt(t));++t);if(t<n&&t!==i){for(i=t;t<n&&isPathSeparator(e.charCodeAt(t));++t);if(t<n&&t!==i){for(i=t;t<n&&!isPathSeparator(e.charCodeAt(t));++t);t===n?r=t:t!==i&&(r=t+1)}}}}else isWindowsDeviceRoot(i)&&e.charCodeAt(1)===58&&(r=2,n>2&&isPathSeparator(e.charCodeAt(2))&&(r=3));else if(isPathSeparator(i))return t.root=t.dir=e,t;r>0&&(t.root=e.slice(0,r));let o=-1,s=r,c=-1,l=!0,u=e.length-1,d=0;for(;u>=r;--u){if(i=e.charCodeAt(u),isPathSeparator(i)){if(!l){s=u+1;break}continue}c===-1&&(l=!1,c=u+1),i===46?o===-1?o=u:d!==1&&(d=1):o!==-1&&(d=-1)}return o===-1||c===-1||d===0||d===1&&o===c-1&&o===s+1?c!==-1&&(t.base=t.name=e.slice(s,c)):(t.name=e.slice(s,o),t.base=e.slice(s,c),t.ext=e.slice(o,c)),s>0&&s!==r?t.dir=e.slice(0,s-1):t.dir=t.root,t}function selectFlavour(e){return e===`win32`?je:Ae}const j=selectFlavour(hostOs()),{resolve:Ne,normalize:Pe,isAbsolute:Fe,join:Ie,relative:Le,toNamespacedPath:Re,dirname:ze,basename:Be,extname:Ve,format:He,parse:Ue,sep:We,delimiter:Ge}=j;j.resolve,j.normalize,j.isAbsolute,j.join,j.relative,j.toNamespacedPath,j.dirname,j.basename,j.extname,j.format,j.parse,j.sep,j.delimiter;const Ke=T.UriFlags.HAS_PASSWORD|T.UriFlags.ENCODED|T.UriFlags.SCHEME_NORMALIZE,M=new WeakMap;var qe=class URLSearchParams{_entries=[];constructor(e){if(e)if(typeof e==`string`)this._entries=parseFormUrlencoded(e.startsWith(`?`)?e.slice(1):e);else if(Array.isArray(e))for(let[t,n]of e)this._entries.push([String(t),String(n)]);else if(e instanceof URLSearchParams)this._entries=e._entries.map(([e,t])=>[e,t]);else for(let t of Object.keys(e))this._entries.push([t,String(e[t])])}get(e){for(let[t,n]of this._entries)if(t===e)return n;return null}getAll(e){return this._entries.filter(([t])=>t===e).map(([,e])=>e)}set(e,t){let n=!1;if(this._entries=this._entries.filter(([t])=>t===e?n?!1:(n=!0,!0):!0),n){for(let n=0;n<this._entries.length;n++)if(this._entries[n][0]===e){this._entries[n][1]=t;break}}else this._entries.push([e,t]);M.get(this)?.()}has(e,t){return t===void 0?this._entries.some(([t])=>t===e):this._entries.some(([n,r])=>n===e&&r===t)}delete(e,t){this._entries=t===void 0?this._entries.filter(([t])=>t!==e):this._entries.filter(([n,r])=>!(n===e&&r===t)),M.get(this)?.()}append(e,t){this._entries.push([e,t]),M.get(this)?.()}sort(){this._entries.sort((e,t)=>e[0]<t[0]?-1:+(e[0]>t[0])),M.get(this)?.()}toString(){return this._entries.map(([e,t])=>encodeComponent(e)+`=`+encodeComponent(t)).join(`&`)}forEach(e){for(let[t,n]of this._entries)e(n,t,this)}*entries(){yield*this._entries}*keys(){for(let[e]of this._entries)yield e}*values(){for(let[,e]of this._entries)yield e}[Symbol.iterator](){return this.entries()}get size(){return this._entries.length}};function parseFormUrlencoded(e){let t=[];if(!e)return t;for(let n of e.split(`&`)){if(n===``)continue;let e=n.indexOf(`=`);e===-1?t.push([decodeComponent(n),``]):t.push([decodeComponent(n.slice(0,e)),decodeComponent(n.slice(e+1))])}return t}function decodeComponent(e){try{return decodeURIComponent(e.replace(/\+/g,` `))}catch{return e}}function percentEncodeUtf8(e){let t=``;for(let n of new TextEncoder().encode(e))t+=`%${n.toString(16).toUpperCase().padStart(2,`0`)}`;return t}function encodeComponent(e){let t=``;for(let n of e)n===` `?t+=`+`:/^[A-Za-z0-9*\-._]$/.test(n)?t+=n:t+=percentEncodeUtf8(n);return t}const Je=new Map([[`ftp`,21],[`file`,null],[`http`,80],[`https`,443],[`ws`,80],[`wss`,443]]);function isSpecialScheme(e){return Je.has(e)}function defaultPort(e){return Je.get(e)??null}const Ye='"#/:;<=>?@[\\]^`{|}';function percentEncode(e,t){let n=``;for(let r of e){let e=r.codePointAt(0);n+=e<=32||e>126||t.includes(r)?percentEncodeUtf8(r):r}return n}function encodeQuery(e,t){return percentEncode(e,t?`"#<>'`:`"#<>`)}const N=/[\t\n\r]/g;function isSchemeChar(e){return e>=`a`&&e<=`z`||e>=`A`&&e<=`Z`||e>=`0`&&e<=`9`||e===`+`||e===`-`||e===`.`}function isAsciiDigit(e){return e!==void 0&&e>=`0`&&e<=`9`}function isHexDigit(e){return e!==void 0&&/^[0-9A-Fa-f]$/.test(e)}function digitPrefix(e){let t=``;for(let n of e){if(!isAsciiDigit(n))break;t+=n}return t}const Xe=new Set([`\0`,` `,`
|
|
10
|
+
`,`\r`,` `,`#`,`/`,`:`,`<`,`>`,`?`,`@`,`[`,`\\`,`]`,`^`,`|`]);function hasForbiddenDomainCodePoint(e){for(let t of e){let e=t.codePointAt(0);if(e<=31||e===127||t===`%`||Xe.has(t))return!0}return!1}function parseIPv6(e){let t=[0,0,0,0,0,0,0,0],n=0,r=null,i=0,at=()=>e[i];if(at()===`:`){if(e[i+1]!==`:`)return;i+=2,n++,r=n}for(;i<e.length;){if(n===8)return;if(at()===`:`){if(r!==null)return;i++,n++,r=n;continue}let o=0,s=0;for(;s<4&&isHexDigit(at());)o=o*16+Number.parseInt(at(),16),i++,s++;if(at()===`.`){if(s===0||(i-=s,n>6))return;let r=0;for(;i<e.length;){let e=null;if(r>0)if(at()===`.`&&r<4)i++;else return;if(!isAsciiDigit(at()))return;for(;isAsciiDigit(at());){let t=Number(at());if(e===null)e=t;else if(e===0)return;else e=e*10+t;if(e>255)return;i++}t[n]=t[n]*256+e,r++,(r===2||r===4)&&n++}if(r!==4)return;break}if(at()===`:`){if(i++,i>=e.length)return}else if(i<e.length)return;t[n]=o,n++}if(r!==null){let e=n-r;for(n=7;n!==0&&e>0;){let i=t[r+e-1];t[r+e-1]=t[n],t[n]=i,n--,e--}}else if(n!==8)return;return serializeIPv6(t)}function serializeIPv6(e){let t=null,n=1,r=-1,i=0;for(let o=0;o<8;o++){if(e[o]!==0){r=-1,i=0;continue}r===-1&&(r=o),i++,i>n&&(n=i,t=r)}let o=``,s=!1;for(let n=0;n<8;n++)if(!(s&&e[n]===0)){if(s=!1,t===n){o+=n===0?`::`:`:`,s=!0;continue}o+=e[n].toString(16),n!==7&&(o+=`:`)}return o}function parseHost(e,t){if(e.startsWith(`[`)){if(!e.endsWith(`]`))return;let t=parseIPv6(e.slice(1,-1));return t===void 0?void 0:`[${t}]`}if(t){for(let t of e)if(Xe.has(t))return;return percentEncode(e,``)}if(!hasForbiddenDomainCodePoint(e))return e.toLowerCase()}function parseHostSetterValue(e,t,n,r,i){let o=e.replace(N,``),s=isSpecialScheme(t);if(t===`file`){let e=o.length;for(let t=0;t<o.length;t++){let n=o[t];if(n===`/`||n===`\\`||n===`?`||n===`#`){e=t;break}}let t=o.slice(0,e);if(t===``)return{host:``};let n=parseHost(t,!1);return n===void 0?void 0:{host:n===`localhost`?``:n}}let c=!1,l=``;for(let e=0;e<o.length;e++){let n=o[e];if(n===`:`&&!c){if(l===``||i)return;let n=parseHost(l,!s);if(n===void 0)return;let r=digitPrefix(o.slice(e+1));if(r===``)return{host:n};let c=Number(r);return c>65535?{host:n}:{host:n,port:c===defaultPort(t)?null:c}}if(n===`/`||n===`?`||n===`#`||s&&n===`\\`)break;n===`[`?c=!0:n===`]`&&(c=!1),l+=n}if(l===``&&(s||n||r))return;let u=parseHost(l,!s);return u===void 0?void 0:{host:u}}function isDoubleDotSegment(e){let t=e.toLowerCase();return t===`..`||t===`.%2e`||t===`%2e.`||t===`%2e%2e`}function isSingleDotSegment(e){let t=e.toLowerCase();return t===`.`||t===`%2e`}function parsePathSetterValue(e,t,n){let r=e.replace(N,``);if(t&&(r=r.replace(/\\/g,`/`)),r===``)return t||n?`/`:``;let i=[],o=(r.startsWith(`/`)?r.slice(1):r).split(`/`);for(let e=0;e<o.length;e++){let t=o[e],n=e===o.length-1;isDoubleDotSegment(t)?(i.pop(),n&&i.push(``)):isSingleDotSegment(t)?n&&i.push(``):i.push(percentEncode(t,'"#<>?^`{}'))}return`/`+i.join(`/`)}function bracketIPv6Host(e){return e.includes(`:`)&&!e.startsWith(`[`)?`[${e}]`:e}var Ze=class URL{#e;#t;#n;#r;#i;#a;#o;#s;#c;#l;constructor(e,t){let n=e instanceof URL?e.href:String(e),r;try{if(t!==void 0){let e=t instanceof URL?t.href:String(t);r=T.Uri.parse(e,Ke).parse_relative(n,Ke)}else r=T.Uri.parse(n,Ke)}catch{throw TypeError(`Invalid URL: ${n}`)}if(!r)throw TypeError(`Invalid URL: ${n}`);this.#e=r.get_scheme();let i=isSpecialScheme(this.#e);this.#t=r.get_user()??``,this.#n=r.get_password()??``;let o=r.get_host(),s=o===null?null:bracketIPv6Host(o.toLowerCase());this.#r=s===null?i?``:null:this.#e===`file`&&s===`localhost`?``:s;let c=r.get_port();this.#i=c===-1||c===defaultPort(this.#e)?null:c,this.#a=r.get_path()??``,i&&this.#a===``&&(this.#a=`/`),this.#o=this.#r===null&&!this.#a.startsWith(`/`),this.#r===null&&!this.#o&&this.#a.startsWith(`/.//`)&&(this.#a=this.#a.slice(2)),this.#s=r.get_fragment()??null,this.#l=r.get_query()??null,this.#c=new qe,this.#c._entries=parseFormUrlencoded(this.#l??``),M.set(this.#c,()=>{let e=this.#c.toString();this.#l=e===``?null:e})}get protocol(){return this.#e+`:`}set protocol(e){let t=String(e).replace(N,``)+`:`;if(!/^[A-Za-z]/.test(t))return;let n=``;for(let e of t){if(e===`:`)break;if(!isSchemeChar(e))return;n+=e.toLowerCase()}isSpecialScheme(this.#e)===isSpecialScheme(n)&&(n===`file`&&(this.#t!==``||this.#n!==``||this.#i!==null)||this.#e===`file`&&(this.#r===null||this.#r===``)||(this.#e=n,this.#i!==null&&this.#i===defaultPort(n)&&(this.#i=null)))}get hostname(){return this.#r??``}set hostname(e){if(this.#o)return;let t=parseHostSetterValue(String(e),this.#e,this.#t!==``||this.#n!==``,this.#i!==null,!0);t!==void 0&&(this.#r=t.host)}get port(){return this.#i===null?``:String(this.#i)}set port(e){if(this.#u())return;let t=String(e);if(t===``){this.#i=null;return}let n=digitPrefix(t.replace(N,``));if(n===``)return;let r=Number(n);r>65535||(this.#i=r===defaultPort(this.#e)?null:r)}get host(){let e=this.hostname,t=this.port;return t?`${e}:${t}`:e}set host(e){if(this.#o)return;let t=parseHostSetterValue(String(e),this.#e,this.#t!==``||this.#n!==``,this.#i!==null,!1);t!==void 0&&(this.#r=t.host,t.port!==void 0&&(this.#i=t.port))}get pathname(){return this.#a}set pathname(e){this.#o||(this.#a=parsePathSetterValue(String(e),isSpecialScheme(this.#e),this.#r===null))}get search(){return this.#l?`?`+this.#l:``}set search(e){let t=String(e);if(t===``){this.#l=null,this.#c._entries=[];return}let n=(t.startsWith(`?`)?t.slice(1):t).replace(N,``);this.#l=encodeQuery(n,isSpecialScheme(this.#e)),this.#c._entries=parseFormUrlencoded(n)}get hash(){return this.#s?`#`+this.#s:``}set hash(e){let t=String(e);if(t===``){this.#s=null;return}let n=(t.startsWith(`#`)?t.slice(1):t).replace(N,``);this.#s=percentEncode(n,'"<>`')}get origin(){return isSpecialScheme(this.#e)&&this.#e!==`file`?`${this.protocol}//${this.host}`:`null`}get username(){return this.#t}set username(e){this.#u()||(this.#t=percentEncode(String(e),Ye))}get password(){return this.#n}set password(e){this.#u()||(this.#n=percentEncode(String(e),Ye))}#u(){return this.#r===null||this.#r===``||this.#e===`file`}get href(){let e=this.#e+`:`;return this.#r===null?!this.#o&&this.#a.startsWith(`//`)&&(e+=`/.`):(e+=`//`,(this.#t!==``||this.#n!==``)&&(e+=this.#t,this.#n!==``&&(e+=`:`+this.#n),e+=`@`),e+=this.#r,this.#i!==null&&(e+=`:`+this.#i)),e+=this.#a,e+=this.#l===null?``:`?${this.#l}`,e+=this.#s===null?``:`#${this.#s}`,e}set href(e){let t=new URL(String(e));this.#e=t.#e,this.#t=t.#t,this.#n=t.#n,this.#r=t.#r,this.#i=t.#i,this.#a=t.#a,this.#o=t.#o,this.#l=t.#l,this.#s=t.#s,this.#c._entries=parseFormUrlencoded(this.#l??``)}get searchParams(){return this.#c}toString(){return this.href}toJSON(){return this.href}static _objectURLPaths=new Map;static _objectURLCounter=0;static createObjectURL(e){let t=e?._tmpPath;if(typeof t==`string`&&t.length>0){let e=`file://${t}`;return URL._objectURLPaths.set(e,t),e}return`file:///dev/null`}static revokeObjectURL(e){let t=URL._objectURLPaths.get(e);t&&(T.unlink(t),URL._objectURLPaths.delete(e))}};typeof globalThis.URL!=`function`&&Object.defineProperty(globalThis,"URL",{value:Ze,enumerable:!1,writable:!0,configurable:!0}),typeof globalThis.URLSearchParams!=`function`&&Object.defineProperty(globalThis,"URLSearchParams",{value:qe,enumerable:!1,writable:!0,configurable:!0});let Qe;if(globalThis.performance)Qe=globalThis.performance;else{let e,_now;try{let t=globalThis.imports?.gi?.GLib;if(!t)throw Error(`GJS imports.gi.GLib not available`);e=t.get_monotonic_time(),_now=()=>(t.get_monotonic_time()-e)/1e3}catch{let t=Date.now();e=0,_now=()=>Date.now()-t}let t=[],n=Date.now()-_now();Qe={timeOrigin:n,now:_now,mark(e){let n={name:e,entryType:`mark`,startTime:_now(),duration:0};return t.push(n),n},measure(e,n,r){let i=0,o=_now();if(n){let e=t.find(e=>e.entryType===`mark`&&e.name===n);e&&(i=e.startTime)}if(r){let e=t.find(e=>e.entryType===`mark`&&e.name===r);e&&(o=e.startTime)}let s={name:e,entryType:`measure`,startTime:i,duration:o-i};return t.push(s),s},getEntries(){return[...t]},getEntriesByName(e){return t.filter(t=>t.name===e)},getEntriesByType(e){return t.filter(t=>t.entryType===e)},clearMarks(e){for(let n=t.length-1;n>=0;n--)t[n].entryType===`mark`&&(!e||t[n].name===e)&&t.splice(n,1)},clearMeasures(e){for(let n=t.length-1;n>=0;n--)t[n].entryType===`measure`&&(!e||t[n].name===e)&&t.splice(n,1)},clearResourceTimings(){},setResourceTimingBufferSize(){},toJSON(){return{timeOrigin:n}}}}var PerformanceObserverStub=class{_callback;constructor(e){this._callback=e}observe(e){}disconnect(){}takeRecords(){return[]}};const $e=globalThis,et=$e.PerformanceObserver||PerformanceObserverStub;$e.PerformanceEntry,$e.PerformanceObserverEntryList,$e.PerformanceMark,$e.PerformanceMeasure;const tt=globalThis;globalThis.performance===void 0&&(tt.performance=Qe),typeof tt.PerformanceObserver!=`function`&&(tt.PerformanceObserver=et);const nt={IndexSizeError:1,HierarchyRequestError:3,WrongDocumentError:4,InvalidCharacterError:5,NoModificationAllowedError:7,NotFoundError:8,NotSupportedError:9,InUseAttributeError:10,InvalidStateError:11,SyntaxError:12,InvalidModificationError:13,NamespaceError:14,InvalidAccessError:15,TypeMismatchError:17,SecurityError:18,NetworkError:19,AbortError:20,URLMismatchError:21,QuotaExceededError:22,TimeoutError:23,InvalidNodeTypeError:24,DataCloneError:25};var _DOMExceptionPolyfill=class extends Error{code;constructor(e,t){super(e),this.name=t||`Error`,this.code=Object.hasOwn(nt,this.name)?nt[this.name]:0}};const rt=globalThis.DOMException??_DOMExceptionPolyfill,it=Symbol(`type`),ot=Symbol(`bubbles`),st=Symbol(`cancelable`),ct=Symbol(`composed`),lt=Symbol(`target`),P=Symbol(`currentTarget`),ut=Symbol(`eventPhase`),dt=Symbol(`defaultPrevented`),ft=Symbol(`isTrusted`),pt=Symbol(`timeStamp`),F=Symbol(`stop`),mt=Symbol(`immediateStop`),ht=Symbol(`dispatching`),gt=Symbol(`inPassiveListener`);var Event=class{[it];[ot];[st];[ct];[lt]=null;[P]=null;[ut]=0;[dt]=!1;[ft]=!1;[pt];[F]=!1;[mt]=!1;[ht]=!1;[gt]=!1;get type(){return this[it]}get bubbles(){return this[ot]}get cancelable(){return this[st]}get composed(){return this[ct]}get target(){return this[lt]}get currentTarget(){return this[P]}get eventPhase(){return this[ut]}get defaultPrevented(){return this[dt]}get timeStamp(){return this[pt]}get cancelBubble(){return this[F]}set cancelBubble(e){e&&this.stopPropagation()}get returnValue(){return!this[dt]}set returnValue(e){e||this.preventDefault()}get srcElement(){return this[lt]}static NONE=0;static CAPTURING_PHASE=1;static AT_TARGET=2;static BUBBLING_PHASE=3;get[Symbol.toStringTag](){return`Event`}constructor(e,t){this[it]=e,this[ot]=t?.bubbles??!1,this[st]=t?.cancelable??!1,this[ct]=t?.composed??!1,this[pt]=Date.now(),Object.defineProperty(this,"isTrusted",{get:()=>this[ft],enumerable:!0,configurable:!1})}composedPath(){return this[P]?[this[P]]:[]}preventDefault(){this[st]&&!this[gt]&&(this[dt]=!0)}stopPropagation(){this[F]=!0}stopImmediatePropagation(){this[F]=!0,this[mt]=!0}},EventTarget=class{#e=new Map;get[Symbol.toStringTag](){return`EventTarget`}addEventListener(e,t,n){if(t===null)return;let r=typeof n==`boolean`?n:n?.capture??!1,i=typeof n==`object`?n?.once??!1:!1,o=typeof n==`object`?n?.passive??!1:!1,s=this.#e.get(e);s||(s=[],this.#e.set(e,s));for(let e of s)if(e.listener===t&&e.capture===r)return;let c={listener:t,capture:r,once:i,passive:o,removed:!1};s.push(c),typeof n==`object`&&n?.signal&&n.signal.addEventListener(`abort`,()=>{this.removeEventListener(e,t,{capture:r})},{once:!0})}removeEventListener(e,t,n){if(t===null)return;let r=typeof n==`boolean`?n:n?.capture??!1,i=this.#e.get(e);if(!i)return;let o=i.findIndex(e=>e.listener===t&&e.capture===r);o!==-1&&(i[o].removed=!0,i.splice(o,1),i.length===0&&this.#e.delete(e))}dispatchEvent(e){let t=e;if(t[ht])throw new rt(`The event is already being dispatched.`,`InvalidStateError`);t[ht]=!0,t[lt]=this,t[P]=this,t[ut]=Event.AT_TARGET;try{let n=this.#e.get(e.type);if(n){let r=[...n];for(let n of r)if(!n.removed){if(t[mt]||t[F])break;n.once&&this.removeEventListener(e.type,n.listener,{capture:n.capture});try{n.passive&&(t[gt]=!0),typeof n.listener==`function`?n.listener.call(this,e):typeof n.listener.handleEvent==`function`&&n.listener.handleEvent.call(n.listener,e)}catch(e){reportListenerException(e)}finally{t[gt]=!1}}}}finally{t[ut]=Event.NONE,t[P]=null,t[ht]=!1}return!e.defaultPrevented}};function reportListenerException(e){try{let t=globalThis;if(typeof t.reportError==`function`)t.reportError(e);else if(e instanceof Error){let t=`${e.name}: ${e.message}`;y.error(e.stack?`${t}\n${e.stack}`:t)}else y.error(String(e))}catch{}}for(let[e,t]of[[`NONE`,0],[`CAPTURING_PHASE`,1],[`AT_TARGET`,2],[`BUBBLING_PHASE`,3]])Object.defineProperty(Event.prototype,e,{value:t,writable:!1,enumerable:!0,configurable:!1}),Object.defineProperty(Event,e,{value:t,writable:!1,enumerable:!0,configurable:!1});const I=Symbol(`abort`),L=Symbol(`internal`);var _t=class AbortSignal extends EventTarget{#e=!1;#t=void 0;onabort=null;constructor(e){if(super(),e!==L)throw TypeError(`Illegal constructor.`)}get aborted(){if(!(this instanceof AbortSignal))throw TypeError(`'get aborted' called on an object that is not a valid instance of AbortSignal.`);return this.#e}get reason(){return this.#t}get[Symbol.toStringTag](){return`AbortSignal`}throwIfAborted(){if(this.#e)throw this.#t}[I](e){if(this.#e)return;this.#e=!0,this.#t=e??new rt(`The operation was aborted.`,`AbortError`);let t=new Event(`abort`);typeof this.onabort==`function`&&this.onabort.call(this,t),this.dispatchEvent(t)}static abort(e){let t=new AbortSignal(L);return t[I](e),t}static timeout(e){let t=new AbortSignal(L);return setTimeout(()=>{t[I](new rt(`The operation timed out.`,`TimeoutError`))},e),t}static any(e){let t=new AbortSignal(L);for(let n of e)if(n.aborted)return t[I](n.reason),t;let onAbort=()=>{if(!t.aborted){let n=e.find(e=>e.aborted);t[I](n?.reason)}};for(let t of e)t.addEventListener(`abort`,onAbort,{once:!0});return t}},vt=class AbortController{signal;constructor(){this.signal=new _t(L)}get[Symbol.toStringTag](){return`AbortController`}abort(e){if(!(this instanceof AbortController))throw TypeError(`'abort' called on an object that is not a valid instance of AbortController.`);this.signal[I](e)}};const yt=globalThis;globalThis.AbortController===void 0&&(yt.AbortController=vt),globalThis.AbortSignal===void 0&&(yt.AbortSignal=_t);const bt=globalThis;globalThis.DOMException===void 0&&(bt.DOMException=rt);const R=Symbol(`kState`),z=Symbol(`kType`);function isBrandCheck(e){return t=>typeof t==`object`&&!!t&&t[R]!==void 0&&t[z]===e}function dequeueValue(e){let t=e[R].queue.shift();if(t===void 0)throw Error(`dequeueValue called on an empty queue`);let{value:n,size:r}=t;return e[R].queueTotalSize=Math.max(0,e[R].queueTotalSize-r),n}function resetQueue(e){e[R].queue=[],e[R].queueTotalSize=0}function peekQueueValue(e){return e[R].queue[0].value}function enqueueValueWithSize(e,t,n){if(n=+n,typeof n!=`number`||n<0||Number.isNaN(n)||n===1/0)throw RangeError(`Invalid size: ${n}`);e[R].queue.push({value:t,size:n}),e[R].queueTotalSize+=n}function extractHighWaterMark(e,t){if(e===void 0)return t;if(e=+e,typeof e!=`number`||Number.isNaN(e)||e<0)throw RangeError(`Invalid highWaterMark: ${e}`);return e}function extractSizeAlgorithm(e){if(e===void 0)return()=>1;if(typeof e!=`function`)throw TypeError(`strategy.size must be a function`);return e}function transferArrayBuffer(e){return typeof ArrayBuffer.prototype.transfer==`function`?e.transfer():e.slice(0)}function isDetachedBuffer(e){if(typeof SharedArrayBuffer<`u`&&e instanceof SharedArrayBuffer||e.byteLength!==0)return!1;try{return e.slice(0,0),!1}catch{return!0}}function typedArrayConstructorByTag(e){switch(e){case`Int8Array`:return Int8Array;case`Uint8Array`:return Uint8Array;case`Uint8ClampedArray`:return Uint8ClampedArray;case`Int16Array`:return Int16Array;case`Uint16Array`:return Uint16Array;case`Int32Array`:return Int32Array;case`Uint32Array`:return Uint32Array;case`Float32Array`:return Float32Array;case`Float64Array`:return Float64Array;case`BigInt64Array`:return typeof BigInt64Array<`u`?BigInt64Array:void 0;case`BigUint64Array`:return typeof BigUint64Array<`u`?BigUint64Array:void 0;default:return}}function elementSizeByTag(e){switch(e){case`Int8Array`:case`Uint8Array`:case`Uint8ClampedArray`:return 1;case`Int16Array`:case`Uint16Array`:return 2;case`Int32Array`:case`Uint32Array`:case`Float32Array`:return 4;case`Float64Array`:case`BigInt64Array`:case`BigUint64Array`:return 8;default:return 1}}function setPromiseHandled(e){e.then(()=>{},()=>{})}function createPromiseCallback(e,t,n){if(typeof t!=`function`)throw TypeError(`${e} must be a function`);return async(...e)=>t.call(n,...e)}async function nonOpFlush(){}function nonOpStart(){}async function nonOpPull(){}async function nonOpCancel(){}async function nonOpWrite(){}const xt={__proto__:Object.getPrototypeOf(Object.getPrototypeOf(async function*(){}).prototype),next:void 0,return:void 0};function createAsyncFromSyncIterator(e){let t={[Symbol.iterator]:()=>e.iterator},n=(async function*(){return yield*t})();return{iterator:n,nextMethod:n.next,done:!1}}function getIterator(e,t=`sync`,n){if(n===void 0)if(t===`async`){if(n=e[Symbol.asyncIterator],n==null){let t=e[Symbol.iterator];if(t===void 0)throw TypeError(`Object is not iterable`);return createAsyncFromSyncIterator(getIterator(e,`sync`,t))}}else n=e[Symbol.iterator];if(n===void 0)throw TypeError(`Object is not iterable`);let r=n.call(e);if(typeof r!=`object`||!r)throw TypeError(`The iterator method must return an object`);return{iterator:r,nextMethod:r.next,done:!1}}function iteratorNext(e,t){let n;if(n=t===void 0?e.nextMethod.call(e.iterator):e.nextMethod.call(e.iterator,t),typeof n!=`object`||!n)throw TypeError(`The iterator.next() method must return an object`);return n}const St=typeof globalThis.AbortController==`function`?globalThis.AbortController:class AbortControllerShim{signal={aborted:!1,reason:void 0,addEventListener(){},removeEventListener(){}};abort(e){this.signal.aborted=!0,this.signal.reason=e}},Ct=Symbol(`kAbort`),wt=Symbol(`kCloseSentinel`),Tt=Symbol(`kError`),Et=Symbol(`kSkipThrow`);var WritableStream=class{[z]=`WritableStream`;[R];constructor(e={},t={}){if(e!=null&&typeof e!=`object`)throw TypeError(`sink must be an object`);if(t!=null&&typeof t!=`object`)throw TypeError(`strategy must be an object`);let n=e?.type;if(n!==void 0)throw RangeError(`Invalid type: ${n}`);this[R]=createWritableStreamState();let r=extractSizeAlgorithm(t?.size),i=extractHighWaterMark(t?.highWaterMark,1);setupWritableStreamDefaultControllerFromSink(this,e,i,r)}get locked(){if(!B(this))throw TypeError(`Invalid this`);return isWritableStreamLocked(this)}abort(e){return B(this)?isWritableStreamLocked(this)?Promise.reject(TypeError(`WritableStream is locked`)):writableStreamAbort(this,e):Promise.reject(TypeError(`Invalid this`))}close(){return B(this)?isWritableStreamLocked(this)?Promise.reject(TypeError(`WritableStream is locked`)):writableStreamCloseQueuedOrInFlight(this)?Promise.reject(TypeError(`Failure closing WritableStream`)):writableStreamClose(this):Promise.reject(TypeError(`Invalid this`))}getWriter(){if(!B(this))throw TypeError(`Invalid this`);return new WritableStreamDefaultWriter(this)}get[Symbol.toStringTag](){return`WritableStream`}},WritableStreamDefaultWriter=class{[z]=`WritableStreamDefaultWriter`;[R];constructor(e){if(!B(e))throw TypeError(`Expected a WritableStream`);this[R]={stream:void 0,close:{promise:void 0,resolve:void 0,reject:void 0},ready:{promise:void 0,resolve:void 0,reject:void 0}},setupWritableStreamDefaultWriter(this,e)}get closed(){return V(this)?this[R].close.promise:Promise.reject(TypeError(`Invalid this`))}get desiredSize(){if(!V(this))throw TypeError(`Invalid this`);if(this[R].stream===void 0)throw TypeError(`Writer is not bound to a WritableStream`);return writableStreamDefaultWriterGetDesiredSize(this)}get ready(){return V(this)?this[R].ready.promise:Promise.reject(TypeError(`Invalid this`))}abort(e){return V(this)?this[R].stream===void 0?Promise.reject(TypeError(`Writer is not bound to a WritableStream`)):writableStreamDefaultWriterAbort(this,e):Promise.reject(TypeError(`Invalid this`))}close(){if(!V(this))return Promise.reject(TypeError(`Invalid this`));let{stream:e}=this[R];return e===void 0?Promise.reject(TypeError(`Writer is not bound to a WritableStream`)):writableStreamCloseQueuedOrInFlight(e)?Promise.reject(TypeError(`Failure to close WritableStream`)):writableStreamDefaultWriterClose(this)}releaseLock(){if(!V(this))throw TypeError(`Invalid this`);let{stream:e}=this[R];e!==void 0&&writableStreamDefaultWriterRelease(this)}write(e){return V(this)?this[R].stream===void 0?Promise.reject(TypeError(`Writer is not bound to a WritableStream`)):writableStreamDefaultWriterWrite(this,e):Promise.reject(TypeError(`Invalid this`))}get[Symbol.toStringTag](){return`WritableStreamDefaultWriter`}},WritableStreamDefaultController=class{[z]=`WritableStreamDefaultController`;[R];constructor(e){if(e!==Et)throw TypeError(`Illegal constructor`)}[Ct](e){let t=this[R].abortAlgorithm(e);return writableStreamDefaultControllerClearAlgorithms(this),t}[Tt](){resetQueue(this)}get signal(){if(!Dt(this))throw TypeError(`Invalid this`);return this[R].abortController.signal}error(e){if(!Dt(this))throw TypeError(`Invalid this`);this[R].stream[R].state===`writable`&&writableStreamDefaultControllerError(this,e)}get[Symbol.toStringTag](){return`WritableStreamDefaultController`}};const B=isBrandCheck(`WritableStream`),V=isBrandCheck(`WritableStreamDefaultWriter`),Dt=isBrandCheck(`WritableStreamDefaultController`);function createEmptyPromiseRecord(){return{promise:void 0,resolve:void 0,reject:void 0}}function createWritableStreamState(){return{close:Promise.withResolvers(),closeRequest:createEmptyPromiseRecord(),inFlightWriteRequest:createEmptyPromiseRecord(),inFlightCloseRequest:createEmptyPromiseRecord(),pendingAbortRequest:{abort:createEmptyPromiseRecord(),reason:void 0,wasAlreadyErroring:!1},backpressure:!1,controller:void 0,state:`writable`,storedError:void 0,writeRequests:[],writer:void 0}}function isWritableStreamLocked(e){return e[R].writer!==void 0}function setupWritableStreamDefaultWriter(e,t){if(isWritableStreamLocked(t))throw TypeError(`WritableStream is locked`);switch(e[R].stream=t,t[R].writer=e,t[R].state){case`writable`:!writableStreamCloseQueuedOrInFlight(t)&&t[R].backpressure?e[R].ready=Promise.withResolvers():e[R].ready={promise:Promise.resolve(),resolve:void 0,reject:void 0},e[R].close=Promise.withResolvers();break;case`erroring`:e[R].ready={promise:Promise.reject(t[R].storedError),resolve:void 0,reject:void 0},setPromiseHandled(e[R].ready.promise),e[R].close=Promise.withResolvers();break;case`closed`:e[R].ready={promise:Promise.resolve(),resolve:void 0,reject:void 0},e[R].close={promise:Promise.resolve(),resolve:void 0,reject:void 0};break;default:e[R].ready={promise:Promise.reject(t[R].storedError),resolve:void 0,reject:void 0},e[R].close={promise:Promise.reject(t[R].storedError),resolve:void 0,reject:void 0},setPromiseHandled(e[R].ready.promise),setPromiseHandled(e[R].close.promise)}}function writableStreamAbort(e,t){let{state:n,controller:r}=e[R];if(n===`closed`||n===`errored`)return Promise.resolve();if(r[R].abortController.abort(t),e[R].pendingAbortRequest.abort.promise!==void 0)return e[R].pendingAbortRequest.abort.promise;let i=!1;n===`erroring`&&(i=!0,t=void 0);let o=Promise.withResolvers();return e[R].pendingAbortRequest={abort:o,reason:t,wasAlreadyErroring:i},i||writableStreamStartErroring(e,t),o.promise}function writableStreamClose(e){let{state:t,writer:n,backpressure:r,controller:i}=e[R];if(t===`closed`||t===`errored`)return Promise.reject(TypeError(`WritableStream is closed`));e[R].closeRequest=Promise.withResolvers();let{promise:o}=e[R].closeRequest;return n!==void 0&&r&&t===`writable`&&n[R].ready.resolve?.(),writableStreamDefaultControllerClose(i),o}function writableStreamUpdateBackpressure(e,t){let{writer:n}=e[R];n!==void 0&&e[R].backpressure!==t&&(t?n[R].ready=Promise.withResolvers():n[R].ready.resolve?.()),e[R].backpressure=t}function writableStreamStartErroring(e,t){let{controller:n,writer:r}=e[R];e[R].state=`erroring`,e[R].storedError=t,r!==void 0&&writableStreamDefaultWriterEnsureReadyPromiseRejected(r,t),!writableStreamHasOperationMarkedInFlight(e)&&n[R].started&&writableStreamFinishErroring(e)}function writableStreamRejectCloseAndClosedPromiseIfNeeded(e){e[R].closeRequest.promise!==void 0&&(e[R].closeRequest.reject?.(e[R].storedError),e[R].closeRequest={promise:void 0,resolve:void 0,reject:void 0}),setPromiseHandled(e[R].close.promise),e[R].close.reject?.(e[R].storedError);let{writer:t}=e[R];t!==void 0&&(setPromiseHandled(t[R].close.promise),t[R].close.reject?.(e[R].storedError))}function writableStreamMarkFirstWriteRequestInFlight(e){let t=e[R].writeRequests.shift();e[R].inFlightWriteRequest=t}function writableStreamMarkCloseRequestInFlight(e){e[R].inFlightCloseRequest=e[R].closeRequest,e[R].closeRequest={promise:void 0,resolve:void 0,reject:void 0}}function writableStreamHasOperationMarkedInFlight(e){return e[R].inFlightWriteRequest.promise!==void 0||e[R].inFlightCloseRequest.promise!==void 0}function writableStreamFinishInFlightWriteWithError(e,t){e[R].inFlightWriteRequest.reject?.(t),e[R].inFlightWriteRequest={promise:void 0,resolve:void 0,reject:void 0},writableStreamDealWithRejection(e,t)}function writableStreamFinishInFlightWrite(e){e[R].inFlightWriteRequest.resolve?.(),e[R].inFlightWriteRequest={promise:void 0,resolve:void 0,reject:void 0}}function writableStreamFinishInFlightCloseWithError(e,t){e[R].inFlightCloseRequest.reject?.(t),e[R].inFlightCloseRequest={promise:void 0,resolve:void 0,reject:void 0},e[R].pendingAbortRequest.abort.promise!==void 0&&(e[R].pendingAbortRequest.abort.reject?.(t),e[R].pendingAbortRequest={abort:{promise:void 0,resolve:void 0,reject:void 0},reason:void 0,wasAlreadyErroring:!1}),writableStreamDealWithRejection(e,t)}function writableStreamFinishInFlightClose(e){e[R].inFlightCloseRequest.resolve?.(),e[R].inFlightCloseRequest={promise:void 0,resolve:void 0,reject:void 0},e[R].state===`erroring`&&(e[R].storedError=void 0,e[R].pendingAbortRequest.abort.promise!==void 0&&(e[R].pendingAbortRequest.abort.resolve?.(),e[R].pendingAbortRequest={abort:{promise:void 0,resolve:void 0,reject:void 0},reason:void 0,wasAlreadyErroring:!1})),e[R].state=`closed`,e[R].writer!==void 0&&e[R].writer[R].close.resolve?.(),e[R].close.resolve?.()}function writableStreamFinishErroring(e){e[R].state=`errored`,e[R].controller[Tt]();let t=e[R].storedError;for(let n of e[R].writeRequests)n.reject?.(t);if(e[R].writeRequests=[],e[R].pendingAbortRequest.abort.promise===void 0){writableStreamRejectCloseAndClosedPromiseIfNeeded(e);return}let n=e[R].pendingAbortRequest;if(e[R].pendingAbortRequest={abort:{promise:void 0,resolve:void 0,reject:void 0},reason:void 0,wasAlreadyErroring:!1},n.wasAlreadyErroring){n.abort.reject?.(t),writableStreamRejectCloseAndClosedPromiseIfNeeded(e);return}e[R].controller[Ct](n.reason).then(()=>{n.abort.resolve?.(),writableStreamRejectCloseAndClosedPromiseIfNeeded(e)},t=>{n.abort.reject?.(t),writableStreamRejectCloseAndClosedPromiseIfNeeded(e)})}function writableStreamDealWithRejection(e,t){if(e[R].state===`writable`){writableStreamStartErroring(e,t);return}writableStreamFinishErroring(e)}function writableStreamCloseQueuedOrInFlight(e){return e[R].closeRequest.promise!==void 0||e[R].inFlightCloseRequest.promise!==void 0}function writableStreamAddWriteRequest(e){let{promise:t,resolve:n,reject:r}=Promise.withResolvers();return e[R].writeRequests.push({promise:t,resolve:n,reject:r}),t}function writableStreamDefaultWriterWrite(e,t){let{stream:n}=e[R],{controller:r}=n[R],i=writableStreamDefaultControllerGetChunkSize(r,t);if(n!==e[R].stream)return Promise.reject(TypeError(`Mismatched WritableStreams`));let{state:o}=n[R];if(o===`errored`)return Promise.reject(n[R].storedError);if(writableStreamCloseQueuedOrInFlight(n)||o===`closed`)return Promise.reject(TypeError(`WritableStream is closed`));if(o===`erroring`)return Promise.reject(n[R].storedError);let s=writableStreamAddWriteRequest(n);return writableStreamDefaultControllerWrite(r,t,i),s}function writableStreamDefaultWriterRelease(e){let{stream:t}=e[R],n=TypeError(`Writer has been released`);writableStreamDefaultWriterEnsureReadyPromiseRejected(e,n),writableStreamDefaultWriterEnsureClosedPromiseRejected(e,n),t[R].writer=void 0,e[R].stream=void 0}function writableStreamDefaultWriterGetDesiredSize(e){let{stream:t}=e[R];switch(t[R].state){case`errored`:case`erroring`:return null;case`closed`:return 0}return writableStreamDefaultControllerGetDesiredSize(t[R].controller)}function writableStreamDefaultWriterEnsureReadyPromiseRejected(e,t){e[R].ready.reject?(e[R].ready.reject(t),e[R].ready.resolve=void 0,e[R].ready.reject=void 0):e[R].ready={promise:Promise.reject(t),resolve:void 0,reject:void 0},setPromiseHandled(e[R].ready.promise)}function writableStreamDefaultWriterEnsureClosedPromiseRejected(e,t){e[R].close.reject?(e[R].close.reject(t),e[R].close.resolve=void 0,e[R].close.reject=void 0):e[R].close={promise:Promise.reject(t),resolve:void 0,reject:void 0},setPromiseHandled(e[R].close.promise)}function writableStreamDefaultWriterCloseWithErrorPropagation(e){let{stream:t}=e[R],{state:n}=t[R];return writableStreamCloseQueuedOrInFlight(t)||n===`closed`?Promise.resolve():n===`errored`?Promise.reject(t[R].storedError):writableStreamDefaultWriterClose(e)}function writableStreamDefaultWriterClose(e){return writableStreamClose(e[R].stream)}function writableStreamDefaultWriterAbort(e,t){return writableStreamAbort(e[R].stream,t)}function writableStreamDefaultControllerWrite(e,t,n){try{enqueueValueWithSize(e,t,n)}catch(t){writableStreamDefaultControllerErrorIfNeeded(e,t);return}let{stream:r}=e[R];!writableStreamCloseQueuedOrInFlight(r)&&r[R].state===`writable`&&writableStreamUpdateBackpressure(r,writableStreamDefaultControllerGetBackpressure(e)),writableStreamDefaultControllerAdvanceQueueIfNeeded(e)}function writableStreamDefaultControllerProcessWrite(e,t){let{stream:n,writeAlgorithm:r}=e[R];writableStreamMarkFirstWriteRequestInFlight(n),r(t,e).then(()=>{writableStreamFinishInFlightWrite(n);let{state:t}=n[R];dequeueValue(e),!writableStreamCloseQueuedOrInFlight(n)&&t===`writable`&&writableStreamUpdateBackpressure(n,writableStreamDefaultControllerGetBackpressure(e)),writableStreamDefaultControllerAdvanceQueueIfNeeded(e)},t=>{n[R].state===`writable`&&writableStreamDefaultControllerClearAlgorithms(e),writableStreamFinishInFlightWriteWithError(n,t)})}function writableStreamDefaultControllerProcessClose(e){let{closeAlgorithm:t,stream:n}=e[R];writableStreamMarkCloseRequestInFlight(n),dequeueValue(e);let r=t();writableStreamDefaultControllerClearAlgorithms(e),r.then(()=>writableStreamFinishInFlightClose(n),e=>writableStreamFinishInFlightCloseWithError(n,e))}function writableStreamDefaultControllerGetDesiredSize(e){return e[R].highWaterMark-e[R].queueTotalSize}function writableStreamDefaultControllerGetChunkSize(e,t){let{sizeAlgorithm:n}=e[R];if(n===void 0)return 1;try{return n(t)}catch(t){return writableStreamDefaultControllerErrorIfNeeded(e,t),1}}function writableStreamDefaultControllerErrorIfNeeded(e,t){e[R].stream[R].state===`writable`&&writableStreamDefaultControllerError(e,t)}function writableStreamDefaultControllerError(e,t){writableStreamDefaultControllerClearAlgorithms(e),writableStreamStartErroring(e[R].stream,t)}function writableStreamDefaultControllerClose(e){enqueueValueWithSize(e,wt,0),writableStreamDefaultControllerAdvanceQueueIfNeeded(e)}function writableStreamDefaultControllerClearAlgorithms(e){e[R].writeAlgorithm=void 0,e[R].closeAlgorithm=void 0,e[R].abortAlgorithm=void 0,e[R].sizeAlgorithm=void 0}function writableStreamDefaultControllerGetBackpressure(e){return writableStreamDefaultControllerGetDesiredSize(e)<=0}function writableStreamDefaultControllerAdvanceQueueIfNeeded(e){let{queue:t,started:n,stream:r}=e[R];if(!n||r[R].inFlightWriteRequest.promise!==void 0)return;if(r[R].state===`erroring`){writableStreamFinishErroring(r);return}if(!t.length)return;let i=peekQueueValue(e);i===wt?writableStreamDefaultControllerProcessClose(e):writableStreamDefaultControllerProcessWrite(e,i)}function setupWritableStreamDefaultControllerFromSink(e,t,n,r){let i=new WritableStreamDefaultController(Et),o=t?.start,s=t?.write,c=t?.close,l=t?.abort;setupWritableStreamDefaultController(e,i,o?o.bind(t,i):nonOpStart,s?createPromiseCallback(`sink.write`,s,t):nonOpWrite,c?createPromiseCallback(`sink.close`,c,t):nonOpCancel,l?createPromiseCallback(`sink.abort`,l,t):nonOpCancel,n,r)}function setupWritableStreamDefaultController(e,t,n,r,i,o,s,c){t[R]={abortAlgorithm:o,closeAlgorithm:i,highWaterMark:s,queue:[],queueTotalSize:0,abortController:new St,sizeAlgorithm:c,started:!1,stream:e,writeAlgorithm:r},e[R].controller=t,writableStreamUpdateBackpressure(e,writableStreamDefaultControllerGetBackpressure(t));let l=n();new Promise(e=>e(l)).then(()=>{t[R].started=!0,writableStreamDefaultControllerAdvanceQueueIfNeeded(t)},n=>{t[R].started=!0,writableStreamDealWithRejection(e,n)})}function createWritableStream(e,t,n,r,i=1,o=()=>1){let s=Object.create(WritableStream.prototype);return s[z]=`WritableStream`,s[R]=createWritableStreamState(),setupWritableStreamDefaultController(s,new WritableStreamDefaultController(Et),e,t,n,r,i,o),s}const Ot=Symbol(`kCancel`),H=Symbol(`kClose`),U=Symbol(`kChunk`),W=Symbol(`kError`),kt=Symbol(`kPull`),At=Symbol(`kRelease`),G=Symbol(`kSkipThrow`);let jt,Mt;function lazyReadableReleasedError(){return jt||(jt=TypeError(`Reader released`),jt)}function lazyReadableReleasingError(){return Mt||(Mt=TypeError(`Releasing reader`),Mt)}function createAbortError(){if(typeof globalThis.DOMException==`function`)return new DOMException(`The operation was aborted`,`AbortError`);let e=Error(`The operation was aborted`);return e.name=`AbortError`,e}function createReadableStreamState(){return{disturbed:!1,reader:void 0,state:`readable`,storedError:void 0,controller:void 0,closedPromise:Promise.withResolvers()}}var ReadableStream$1=class{static{__name(this,`ReadableStream`)}[z]=`ReadableStream`;[R];constructor(e={},t={}){if(e!=null&&typeof e!=`object`)throw TypeError(`source must be an object`);if(t!=null&&typeof t!=`object`)throw TypeError(`strategy must be an object`);this[R]=createReadableStreamState();let n=t?.size,r=t?.highWaterMark,i=e?.type;if(i!==void 0){if(`${i}`==`bytes`){if(n!==void 0)throw RangeError(`strategy.size must not be set for a byte stream`);setupReadableByteStreamControllerFromSource(this,e,extractHighWaterMark(r,0));return}throw RangeError(`Invalid type: ${i}`)}setupReadableStreamDefaultControllerFromSource(this,e,extractHighWaterMark(r,1),extractSizeAlgorithm(n))}get locked(){if(!K(this))throw TypeError(`Invalid this`);return isReadableStreamLocked(this)}static from(e){return readableStreamFromIterable(e)}cancel(e=void 0){return K(this)?isReadableStreamLocked(this)?Promise.reject(TypeError(`ReadableStream is locked`)):readableStreamCancel(this,e):Promise.reject(TypeError(`Invalid this`))}getReader(e={}){if(!K(this))throw TypeError(`Invalid this`);if(e!=null&&typeof e!=`object`)throw TypeError(`options must be an object`);let t=e?.mode;if(t===void 0)return new ReadableStreamDefaultReader(this);if(`${t}`==`byob`)return new ReadableStreamBYOBReader(this);throw RangeError(`Invalid mode: ${t}`)}pipeThrough(e,t={}){if(!K(this))throw TypeError(`Invalid this`);let n=e?.readable;if(!K(n))throw TypeError(`transform.readable must be a ReadableStream`);let r=e?.writable;if(!B(r))throw TypeError(`transform.writable must be a WritableStream`);if(t!=null&&typeof t!=`object`)throw TypeError(`options must be an object`);let i=t?.preventAbort,o=t?.preventCancel,s=t?.preventClose,c=t?.signal;if(c!==void 0&&!(c instanceof Object&&`aborted`in c))throw TypeError(`options.signal must be an AbortSignal`);if(isReadableStreamLocked(this))throw TypeError(`The ReadableStream is locked`);if(isWritableStreamLocked(r))throw TypeError(`The WritableStream is locked`);return setPromiseHandled(readableStreamPipeTo(this,r,!!s,!!i,!!o,c)),n}pipeTo(e,t={}){try{if(!K(this))throw TypeError(`Invalid this`);if(!B(e))throw TypeError(`destination must be a WritableStream`);if(t!=null&&typeof t!=`object`)throw TypeError(`options must be an object`);let n=t?.preventAbort,r=t?.preventCancel,i=t?.preventClose,o=t?.signal;if(o!==void 0&&!(o instanceof Object&&`aborted`in o))throw TypeError(`options.signal must be an AbortSignal`);if(isReadableStreamLocked(this))throw TypeError(`The ReadableStream is locked`);if(isWritableStreamLocked(e))throw TypeError(`The WritableStream is locked`);return readableStreamPipeTo(this,e,!!i,!!n,!!r,o)}catch(e){return Promise.reject(e)}}tee(){if(!K(this))throw TypeError(`Invalid this`);let e=this[R].controller;return q(e)?readableByteStreamTee(this):readableStreamDefaultTee(this,!1)}values(e={}){if(!K(this))throw TypeError(`Invalid this`);if(e!=null&&typeof e!=`object`)throw TypeError(`options must be an object`);let t=!!e?.preventCancel,n=new ReadableStreamDefaultReader(this),r={done:!1,current:void 0},i=!1;function nextSteps(){if(r.done)return Promise.resolve({done:!0,value:void 0});if(n[R].stream===void 0)return Promise.reject(TypeError(`The reader is not bound to a ReadableStream`));let{promise:e,resolve:t,reject:i}=Promise.withResolvers();return readableStreamDefaultReaderRead(n,{[U](e){r.current=void 0,t({value:e,done:!1})},[H](){r.current=void 0,r.done=!0,readableStreamReaderGenericRelease(n),t({done:!0,value:void 0})},[W](e){r.current=void 0,r.done=!0,readableStreamReaderGenericRelease(n),i(e)}}),e}async function returnSteps(e){if(r.done)return{done:!0,value:e};if(r.done=!0,n[R].stream===void 0)throw TypeError(`The reader is not bound to a ReadableStream`);if(!t){let t=readableStreamReaderGenericCancel(n,e);return readableStreamReaderGenericRelease(n),await t,{done:!0,value:e}}return readableStreamReaderGenericRelease(n),{done:!0,value:e}}return Object.setPrototypeOf({next(){return i||=(r.current=Promise.resolve(),!0),r.current=r.current===void 0?nextSteps():r.current.then(nextSteps,nextSteps),r.current},return(e){return i=!0,r.current=r.current===void 0?returnSteps(e):r.current.then(()=>returnSteps(e),()=>returnSteps(e)),r.current},[Symbol.asyncIterator](){return this}},xt)}[Symbol.asyncIterator](){return this.values()}get[Symbol.toStringTag](){return`ReadableStream`}},DefaultReadRequest=class{[R];constructor(){this[R]=Promise.withResolvers()}[U](e){this[R].resolve?.({value:e,done:!1})}[H](){this[R].resolve?.({value:void 0,done:!0})}[W](e){this[R].reject?.(e)}get promise(){return this[R].promise}},ReadableStreamDefaultReader=class{[z]=`ReadableStreamDefaultReader`;[R];constructor(e){if(!K(e))throw TypeError(`Expected a ReadableStream`);this[R]={readRequests:[],readIntoRequests:[],stream:void 0,close:{promise:void 0,resolve:void 0,reject:void 0}},setupReadableStreamDefaultReader(this,e)}read(){if(!Pt(this))return Promise.reject(TypeError(`Invalid this`));if(this[R].stream===void 0)return Promise.reject(TypeError(`The reader is not attached to a stream`));let e=this[R].stream,t=e[R].controller;if(e[R].state===`readable`&&Nt(t)&&t[R].queue.length>0){e[R].disturbed=!0;let n=dequeueValue(t);return t[R].closeRequested&&!t[R].queue.length?(readableStreamDefaultControllerClearAlgorithms(t),readableStreamClose(e)):readableStreamDefaultControllerCallPullIfNeeded(t),Promise.resolve({value:n,done:!1})}let n=new DefaultReadRequest;return readableStreamDefaultReaderRead(this,n),n.promise}releaseLock(){if(!Pt(this))throw TypeError(`Invalid this`);this[R].stream!==void 0&&readableStreamDefaultReaderRelease(this)}get closed(){return Pt(this)?this[R].close.promise:Promise.reject(TypeError(`Invalid this`))}cancel(e=void 0){return Pt(this)?this[R].stream===void 0?Promise.reject(TypeError(`The reader is not attached to a stream`)):readableStreamReaderGenericCancel(this,e):Promise.reject(TypeError(`Invalid this`))}get[Symbol.toStringTag](){return`ReadableStreamDefaultReader`}},ReadableStreamDefaultController=class{[z]=`ReadableStreamDefaultController`;[R];constructor(e){if(e!==G)throw TypeError(`Illegal constructor`)}get desiredSize(){return readableStreamDefaultControllerGetDesiredSize(this)}close(){if(!readableStreamDefaultControllerCanCloseOrEnqueue(this))throw TypeError(`Controller is already closed`);readableStreamDefaultControllerClose(this)}enqueue(e=void 0){if(!readableStreamDefaultControllerCanCloseOrEnqueue(this))throw TypeError(`Controller is already closed`);readableStreamDefaultControllerEnqueue(this,e)}error(e=void 0){readableStreamDefaultControllerError(this,e)}[Ot](e){return readableStreamDefaultControllerCancelSteps(this,e)}[kt](e){readableStreamDefaultControllerPullSteps(this,e)}[At](){}get[Symbol.toStringTag](){return`ReadableStreamDefaultController`}};const K=isBrandCheck(`ReadableStream`),Nt=isBrandCheck(`ReadableStreamDefaultController`),Pt=isBrandCheck(`ReadableStreamDefaultReader`);function isReadableStreamLocked(e){return e[R].reader!==void 0}function readableStreamCancel(e,t){switch(e[R].disturbed=!0,e[R].state){case`closed`:return Promise.resolve();case`errored`:return Promise.reject(e[R].storedError)}readableStreamClose(e);let n=e[R].reader;if(n!==void 0&&readableStreamHasBYOBReader(e)){let e=n[R].readIntoRequests;n[R].readIntoRequests=[];for(let t=0;t<e.length;t++)e[t][H](void 0)}return e[R].controller[Ot](t).then(()=>{})}function readableStreamClose(e){e[R].state=`closed`,e[R].closedPromise.resolve();let{reader:t}=e[R];if(t!==void 0&&(t[R].close.resolve?.(),readableStreamHasDefaultReader(e))){for(let e=0;e<t[R].readRequests.length;e++)t[R].readRequests[e][H]();t[R].readRequests=[]}}function readableStreamError(e,t){e[R].state=`errored`,e[R].storedError=t,setPromiseHandled(e[R].closedPromise.promise),e[R].closedPromise.reject(t);let{reader:n}=e[R];if(n!==void 0){if(setPromiseHandled(n[R].close.promise),n[R].close.reject?.(t),readableStreamHasDefaultReader(e)){for(let e=0;e<n[R].readRequests.length;e++)n[R].readRequests[e][W](t);n[R].readRequests=[]}else if(readableStreamHasBYOBReader(e)){for(let e=0;e<n[R].readIntoRequests.length;e++)n[R].readIntoRequests[e][W](t);n[R].readIntoRequests=[]}}}function readableStreamHasDefaultReader(e){let{reader:t}=e[R];return t===void 0?!1:t[R]!==void 0&&t[z]===`ReadableStreamDefaultReader`}function readableStreamGetNumReadRequests(e){return e[R].reader[R].readRequests.length}function readableStreamFulfillReadRequest(e,t,n){let{reader:r}=e[R],i=r[R].readRequests.shift();n?i[H]():i[U](t)}function readableStreamAddReadRequest(e,t){e[R].reader[R].readRequests.push(t)}function readableStreamReaderGenericCancel(e,t){let{stream:n}=e[R];return readableStreamCancel(n,t)}function readableStreamReaderGenericInitialize(e,t){switch(e[R].stream=t,t[R].reader=e,t[R].state){case`readable`:e[R].close=Promise.withResolvers();break;case`closed`:e[R].close={promise:Promise.resolve(),resolve:void 0,reject:void 0};break;case`errored`:e[R].close={promise:Promise.reject(t[R].storedError),resolve:void 0,reject:void 0},setPromiseHandled(e[R].close.promise);break}}function readableStreamReaderGenericRelease(e){let{stream:t}=e[R],n=lazyReadableReleasedError();t[R].state===`readable`?e[R].close.reject?.(n):e[R].close={promise:Promise.reject(n),resolve:void 0,reject:void 0},setPromiseHandled(e[R].close.promise),t[R].controller[At](),t[R].reader=void 0,e[R].stream=void 0}function readableStreamDefaultReaderRelease(e){readableStreamReaderGenericRelease(e),readableStreamDefaultReaderErrorReadRequests(e,lazyReadableReleasingError())}function readableStreamDefaultReaderErrorReadRequests(e,t){for(let n=0;n<e[R].readRequests.length;++n)e[R].readRequests[n][W](t);e[R].readRequests=[]}function readableStreamDefaultReaderRead(e,t){let{stream:n}=e[R];switch(n[R].disturbed=!0,n[R].state){case`closed`:t[H]();break;case`errored`:t[W](n[R].storedError);break;case`readable`:n[R].controller[kt](t);break}}function setupReadableStreamDefaultReader(e,t){if(isReadableStreamLocked(t))throw TypeError(`ReadableStream is locked`);readableStreamReaderGenericInitialize(e,t),e[R].readRequests=[]}function readableStreamDefaultControllerClose(e){readableStreamDefaultControllerCanCloseOrEnqueue(e)&&(e[R].closeRequested=!0,e[R].queue.length||(readableStreamDefaultControllerClearAlgorithms(e),readableStreamClose(e[R].stream)))}function readableStreamDefaultControllerEnqueue(e,t){if(!readableStreamDefaultControllerCanCloseOrEnqueue(e))return;let{stream:n}=e[R];if(isReadableStreamLocked(n)&&readableStreamGetNumReadRequests(n))readableStreamFulfillReadRequest(n,t,!1);else try{enqueueValueWithSize(e,t,e[R].sizeAlgorithm(t))}catch(t){throw readableStreamDefaultControllerError(e,t),t}readableStreamDefaultControllerCallPullIfNeeded(e)}function readableStreamDefaultControllerCanCloseOrEnqueue(e){let{stream:t}=e[R];return!e[R].closeRequested&&t[R].state===`readable`}function readableStreamDefaultControllerGetDesiredSize(e){let{stream:t,highWaterMark:n,queueTotalSize:r}=e[R];switch(t[R].state){case`errored`:return null;case`closed`:return 0;default:return n-r}}function readableStreamDefaultControllerHasBackpressure(e){return!readableStreamDefaultControllerShouldCallPull(e)}function readableStreamDefaultControllerShouldCallPull(e){let{stream:t}=e[R];if(!readableStreamDefaultControllerCanCloseOrEnqueue(e)||!e[R].started)return!1;if(isReadableStreamLocked(t)&&readableStreamGetNumReadRequests(t))return!0;let n=readableStreamDefaultControllerGetDesiredSize(e);return n!==null&&n>0}function readableStreamDefaultControllerCallPullIfNeeded(e){if(readableStreamDefaultControllerShouldCallPull(e)){if(e[R].pulling){e[R].pullAgain=!0;return}e[R].pulling=!0,e[R].pullAlgorithm(e).then(()=>{e[R].pulling=!1,e[R].pullAgain&&(e[R].pullAgain=!1,readableStreamDefaultControllerCallPullIfNeeded(e))},t=>readableStreamDefaultControllerError(e,t))}}function readableStreamDefaultControllerClearAlgorithms(e){e[R].pullAlgorithm=void 0,e[R].cancelAlgorithm=void 0,e[R].sizeAlgorithm=void 0}function readableStreamDefaultControllerError(e,t){let{stream:n}=e[R];n[R].state===`readable`&&(resetQueue(e),readableStreamDefaultControllerClearAlgorithms(e),readableStreamError(n,t))}function readableStreamDefaultControllerCancelSteps(e,t){resetQueue(e);let n=e[R].cancelAlgorithm?.(t)??Promise.resolve();return readableStreamDefaultControllerClearAlgorithms(e),n}function readableStreamDefaultControllerPullSteps(e,t){let{stream:n,queue:r}=e[R];if(r.length){let i=dequeueValue(e);e[R].closeRequested&&!r.length?(readableStreamDefaultControllerClearAlgorithms(e),readableStreamClose(n)):readableStreamDefaultControllerCallPullIfNeeded(e),t[U](i);return}readableStreamAddReadRequest(n,t),readableStreamDefaultControllerCallPullIfNeeded(e)}function setupReadableStreamDefaultController(e,t,n,r,i,o,s){t[R]={cancelAlgorithm:i,closeRequested:!1,highWaterMark:o,pullAgain:!1,pullAlgorithm:r,pulling:!1,queue:[],queueTotalSize:0,started:!1,sizeAlgorithm:s,stream:e},e[R].controller=t;let c=n();new Promise(e=>e(c)).then(()=>{t[R].started=!0,readableStreamDefaultControllerCallPullIfNeeded(t)},e=>readableStreamDefaultControllerError(t,e))}function setupReadableStreamDefaultControllerFromSource(e,t,n,r){let i=new ReadableStreamDefaultController(G),o=t?.start,s=t?.pull,c=t?.cancel;setupReadableStreamDefaultController(e,i,o?o.bind(t,i):nonOpStart,s?createPromiseCallback(`source.pull`,s,t):nonOpPull,c?createPromiseCallback(`source.cancel`,c,t):nonOpCancel,n,r)}function createReadableStream(e,t,n,r=1,i=()=>1){let o=Object.create(ReadableStream$1.prototype);return o[z]=`ReadableStream`,o[R]=createReadableStreamState(),setupReadableStreamDefaultController(o,new ReadableStreamDefaultController(G),e,t,n,r,i),o}function readableStreamFromIterable(e){let t,n=getIterator(e,`async`),r=nonOpStart;async function pullAlgorithm(){let e=iteratorNext(n);return Promise.resolve(e).then(e=>{if(typeof e!=`object`||!e)throw TypeError(`The promise returned by the iterator.next() method must fulfill with an object`);e.done?readableStreamDefaultControllerClose(t[R].controller):readableStreamDefaultControllerEnqueue(t[R].controller,e.value)})}async function cancelAlgorithm(e){let t=n.iterator,r=t.return;if(r===void 0)return Promise.resolve();let i=r.call(t,e);return Promise.resolve(i).then(e=>{if(typeof e!=`object`||!e)throw TypeError(`The promise returned by the iterator.return() method must fulfill with an object`)})}return t=createReadableStream(r,pullAlgorithm,cancelAlgorithm,0),t}function readableStreamPipeTo(e,t,n,r,i,o){let s,c;try{s=new ReadableStreamDefaultReader(e),c=new WritableStreamDefaultWriter(t)}catch(e){return Promise.reject(e)}e[R].disturbed=!0;let l=!1,{promise:u,resolve:d,reject:f}=Promise.withResolvers(),p={currentWrite:Promise.resolve()},m;function finalize(e,t){writableStreamDefaultWriterRelease(c),readableStreamReaderGenericRelease(s),o!==void 0&&m&&(o.removeEventListener(`abort`,m),m=void 0),e?f(t):d()}async function waitForCurrentWrite(){let e=p.currentWrite;await e,e!==p.currentWrite&&await waitForCurrentWrite()}function shutdownWithAnAction(e,n,r){if(l)return;if(l=!0,t[R].state===`writable`&&!writableStreamCloseQueuedOrInFlight(t)){waitForCurrentWrite().then(complete,e=>finalize(!0,e));return}complete();function complete(){e().then(()=>finalize(!!n,r),e=>finalize(!0,e))}}function shutdown(e,n){if(!l){if(l=!0,t[R].state===`writable`&&!writableStreamCloseQueuedOrInFlight(t)){waitForCurrentWrite().then(()=>finalize(!!e,n),e=>finalize(!0,e));return}finalize(!!e,n)}}function abortAlgorithm(){let n;n=o.reason&&o.reason.name===`AbortError`?createAbortError():o.reason;let s=[];r||s.push(()=>t[R].state===`writable`?writableStreamAbort(t,n):Promise.resolve()),i||s.push(()=>e[R].state===`readable`?readableStreamCancel(e,n):Promise.resolve()),shutdownWithAnAction(()=>Promise.all(s.map(e=>e())).then(()=>void 0),!0,n)}function watchErrored(e,t,n){e[R].state===`errored`?n(e[R].storedError):t.then(void 0,n)}function watchClosed(e,t,n){e[R].state===`closed`?n():t.then(n,()=>{})}class PipeToReadRequest{[U](e){b(()=>{p.currentWrite=writableStreamDefaultWriterWrite(c,e),setPromiseHandled(p.currentWrite),h.resolve(!1)})}[H](){h.resolve(!0)}[W](e){h.reject(e)}}let h={resolve:null,reject:null};async function step(){if(l||t[R].backpressure&&(await c[R].ready.promise,l))return!0;let n=e[R].controller;if(e[R].state===`readable`&&Nt(n)&&n[R].queue.length>0){for(;n[R].queue.length>0;){if(l)return!0;let r=dequeueValue(n);if(n[R].closeRequested&&!n[R].queue.length&&(readableStreamDefaultControllerClearAlgorithms(n),readableStreamClose(e)),p.currentWrite=writableStreamDefaultWriterWrite(c,r),setPromiseHandled(p.currentWrite),t[R].backpressure||t[R].state!==`writable`||writableStreamCloseQueuedOrInFlight(t))break}return readableStreamDefaultControllerCallPullIfNeeded(n),e[R].state===`closed`}let{promise:r,resolve:i,reject:o}=Promise.withResolvers();return h={resolve:i,reject:o},readableStreamDefaultReaderRead(s,new PipeToReadRequest),r}async function run(){for(;!await step(););}if(o!==void 0){if(o.aborted)return abortAlgorithm(),u;m=abortAlgorithm,o.addEventListener(`abort`,m,{once:!0})}if(setPromiseHandled(run()),watchErrored(e,s[R].close.promise,e=>{if(!r)return shutdownWithAnAction(()=>writableStreamAbort(t,e),!0,e);shutdown(!0,e)}),watchErrored(t,c[R].close.promise,t=>{if(!i)return shutdownWithAnAction(()=>readableStreamCancel(e,t),!0,t);shutdown(!0,t)}),watchClosed(e,s[R].close.promise,()=>{if(!n)return shutdownWithAnAction(()=>writableStreamDefaultWriterCloseWithErrorPropagation(c));shutdown()}),writableStreamCloseQueuedOrInFlight(t)||t[R].state===`closed`){let t=TypeError(`Destination WritableStream is closed`);i?shutdown(!0,t):shutdownWithAnAction(()=>readableStreamCancel(e,t),!0,t)}return u}function readableStreamDefaultTee(e,t){let n=new ReadableStreamDefaultReader(e),r=!1,i=!1,o=!1,s,c,l,u,d=Promise.withResolvers();async function pullAlgorithm(){r||(r=!0,readableStreamDefaultReaderRead(n,{[U](e){b(()=>{r=!1;let n=e,s=e;if(!o&&t)try{s=structuredClone(s)}catch{}i||readableStreamDefaultControllerEnqueue(l[R].controller,n),o||readableStreamDefaultControllerEnqueue(u[R].controller,s)})},[H](){b(()=>{r=!1,i||readableStreamDefaultControllerClose(l[R].controller),o||readableStreamDefaultControllerClose(u[R].controller),(!i||!o)&&d.resolve(void 0)})},[W](){r=!1}}))}function cancel1Algorithm(t){if(i=!0,s=t,o){let t=[s,c];d.resolve(readableStreamCancel(e,t))}return d.promise}function cancel2Algorithm(t){if(o=!0,c=t,i){let t=[s,c];d.resolve(readableStreamCancel(e,t))}return d.promise}return l=createReadableStream(nonOpStart,pullAlgorithm,cancel1Algorithm),u=createReadableStream(nonOpStart,pullAlgorithm,cancel2Algorithm),n[R].close.promise.then(void 0,e=>{readableStreamDefaultControllerError(l[R].controller,e),readableStreamDefaultControllerError(u[R].controller,e),(!i||!o)&&d.resolve(void 0)}),[l,u]}var BYOBReadIntoRequest=class{[R];constructor(){this[R]=Promise.withResolvers()}[U](e){this[R].resolve?.({value:e,done:!1})}[H](e){this[R].resolve?.({value:e,done:!0})}[W](e){this[R].reject?.(e)}get promise(){return this[R].promise}},ReadableStreamBYOBReader=class{[z]=`ReadableStreamBYOBReader`;[R];constructor(e){if(!K(e))throw TypeError(`Expected a ReadableStream`);this[R]={readRequests:[],readIntoRequests:[],stream:void 0,close:{promise:void 0,resolve:void 0,reject:void 0}},setupReadableStreamBYOBReader(this,e)}read(e,t={}){if(!Ft(this))return Promise.reject(TypeError(`Invalid this`));if(typeof e!=`object`||!e||!ArrayBuffer.isView(e))return Promise.reject(TypeError(`view must be an ArrayBufferView`));let n=e.buffer,r=e.byteLength;if(r===0)return Promise.reject(TypeError(`view must have non-zero byteLength`));if(n.byteLength===0)return isDetachedBuffer(n)?Promise.reject(TypeError(`view's buffer has been detached`)):Promise.reject(TypeError(`view's buffer must have non-zero byteLength`));let i=t?.min??1;if(typeof i!=`number`||i<1||!Number.isInteger(i)||Number.isNaN(i))return Promise.reject(TypeError(`options.min must be a positive integer`));let o=e[Symbol.toStringTag];if(o!==void 0&&o!==`DataView`){if(i>e.length)return Promise.reject(RangeError(`options.min must be smaller or equal to view size`))}else if(i>r)return Promise.reject(RangeError(`options.min must be smaller or equal to view size`));if(this[R].stream===void 0)return Promise.reject(TypeError(`Reader has no associated stream`));let s=new BYOBReadIntoRequest;return readableStreamBYOBReaderRead(this,e,i,s),s.promise}releaseLock(){if(!Ft(this))throw TypeError(`Invalid this`);this[R].stream!==void 0&&readableStreamBYOBReaderRelease(this)}get closed(){return Ft(this)?this[R].close.promise:Promise.reject(TypeError(`Invalid this`))}cancel(e=void 0){return Ft(this)?this[R].stream===void 0?Promise.reject(TypeError(`Reader has no associated stream`)):readableStreamReaderGenericCancel(this,e):Promise.reject(TypeError(`Invalid this`))}get[Symbol.toStringTag](){return`ReadableStreamBYOBReader`}},ReadableStreamBYOBRequest=class{[z]=`ReadableStreamBYOBRequest`;[R];constructor(e){if(e!==G)throw TypeError(`Illegal constructor`)}get view(){if(!It(this))throw TypeError(`Invalid this`);return this[R].view}respond(e){if(!It(this))throw TypeError(`Invalid this`);if(this[R].controller===void 0)throw TypeError(`BYOB request has been invalidated`);if(e=+e,!Number.isInteger(e)||e<0||!Number.isFinite(e))throw RangeError(`bytesWritten must be a non-negative integer`);let t=this[R].view;if(isDetachedBuffer(t.buffer))throw TypeError(`The BYOB request's buffer has been detached`);readableByteStreamControllerRespond(this[R].controller,e)}respondWithNewView(e){if(!It(this))throw TypeError(`Invalid this`);if(this[R].controller===void 0)throw TypeError(`BYOB request has been invalidated`);if(typeof e!=`object`||!e||!ArrayBuffer.isView(e))throw TypeError(`view must be an ArrayBufferView`);if(isDetachedBuffer(e.buffer))throw TypeError(`The given view's buffer has been detached`);readableByteStreamControllerRespondWithNewView(this[R].controller,e)}get[Symbol.toStringTag](){return`ReadableStreamBYOBRequest`}},ReadableByteStreamController=class{[z]=`ReadableByteStreamController`;[R];constructor(e){if(e!==G)throw TypeError(`Illegal constructor`)}get byobRequest(){if(!q(this))throw TypeError(`Invalid this`);return readableByteStreamControllerGetBYOBRequest(this)}get desiredSize(){if(!q(this))throw TypeError(`Invalid this`);return readableByteStreamControllerGetDesiredSize(this)}close(){if(!q(this))throw TypeError(`Invalid this`);if(this[R].closeRequested)throw TypeError(`Close already requested`);if(this[R].stream[R].state!==`readable`)throw TypeError(`Stream is not in a readable state`);readableByteStreamControllerClose(this)}enqueue(e){if(!q(this))throw TypeError(`Invalid this`);if(typeof e!=`object`||!e||!ArrayBuffer.isView(e))throw TypeError(`chunk must be an ArrayBufferView`);if(e.byteLength===0)throw TypeError(`chunk length must be non-zero`);if(e.buffer.byteLength===0)throw TypeError(`chunk's buffer length must be non-zero`);if(this[R].closeRequested)throw TypeError(`Cannot enqueue after close has been requested`);if(this[R].stream[R].state!==`readable`)throw TypeError(`Stream is not in a readable state`);readableByteStreamControllerEnqueue(this,e)}error(e=void 0){if(!q(this))throw TypeError(`Invalid this`);readableByteStreamControllerError(this,e)}[Ot](e){return readableByteStreamControllerCancelSteps(this,e)}[kt](e){readableByteStreamControllerPullSteps(this,e)}[At](){if(this[R].pendingPullIntos.length>0){let e=this[R].pendingPullIntos[0];e.readerType=`none`,this[R].pendingPullIntos=[e]}}get[Symbol.toStringTag](){return`ReadableByteStreamController`}};const q=isBrandCheck(`ReadableByteStreamController`),Ft=isBrandCheck(`ReadableStreamBYOBReader`),It=isBrandCheck(`ReadableStreamBYOBRequest`);function readableStreamHasBYOBReader(e){let{reader:t}=e[R];return t===void 0?!1:t[R]!==void 0&&t[z]===`ReadableStreamBYOBReader`}function readableStreamGetNumReadIntoRequests(e){return e[R].reader[R].readIntoRequests.length}function readableStreamAddReadIntoRequest(e,t){e[R].reader[R].readIntoRequests.push(t)}function readableStreamFulfillReadIntoRequest(e,t,n){let{reader:r}=e[R],i=r[R].readIntoRequests.shift();n?i[H](t):i[U](t)}function setupReadableStreamBYOBReader(e,t){if(isReadableStreamLocked(t))throw TypeError(`ReadableStream is locked`);if(!q(t[R].controller))throw TypeError(`Cannot use a BYOB reader with a non-byte stream`);readableStreamReaderGenericInitialize(e,t),e[R].readIntoRequests=[]}function readableStreamBYOBReaderRead(e,t,n,r){let{stream:i}=e[R];i[R].disturbed=!0,i[R].state===`errored`?r[W](i[R].storedError):readableByteStreamControllerPullInto(i[R].controller,t,n,r)}function readableStreamBYOBReaderRelease(e){readableStreamReaderGenericRelease(e);let t=TypeError(`Reader was released`);for(let n=0;n<e[R].readIntoRequests.length;n++)e[R].readIntoRequests[n][W](t);e[R].readIntoRequests=[]}function readableByteStreamControllerClearAlgorithms(e){e[R].pullAlgorithm=void 0,e[R].cancelAlgorithm=void 0}function readableByteStreamControllerClearPendingPullIntos(e){readableByteStreamControllerInvalidateBYOBRequest(e),e[R].pendingPullIntos=[]}function readableByteStreamControllerInvalidateBYOBRequest(e){let t=e[R].byobRequest;t!=null&&(t[R].controller=void 0,t[R].view=null,e[R].byobRequest=null)}function readableByteStreamControllerError(e,t){let{stream:n}=e[R];n[R].state===`readable`&&(readableByteStreamControllerClearPendingPullIntos(e),resetQueue(e),readableByteStreamControllerClearAlgorithms(e),readableStreamError(n,t))}function readableByteStreamControllerGetDesiredSize(e){let t=e[R].stream[R].state;return t===`errored`?null:t===`closed`?0:e[R].highWaterMark-e[R].queueTotalSize}function readableByteStreamControllerShouldCallPull(e){let{stream:t}=e[R];if(t[R].state!==`readable`||e[R].closeRequested||!e[R].started)return!1;if(readableStreamHasDefaultReader(t)&&readableStreamGetNumReadRequests(t)>0||readableStreamHasBYOBReader(t)&&readableStreamGetNumReadIntoRequests(t)>0)return!0;let n=readableByteStreamControllerGetDesiredSize(e);return n!==null&&n>0}function readableByteStreamControllerCallPullIfNeeded(e){if(readableByteStreamControllerShouldCallPull(e)){if(e[R].pulling){e[R].pullAgain=!0;return}e[R].pulling=!0,e[R].pullAlgorithm(e).then(()=>{e[R].pulling=!1,e[R].pullAgain&&(e[R].pullAgain=!1,readableByteStreamControllerCallPullIfNeeded(e))},t=>readableByteStreamControllerError(e,t))}}function readableByteStreamControllerHandleQueueDrain(e){e[R].queueTotalSize===0&&e[R].closeRequested?(readableByteStreamControllerClearAlgorithms(e),readableStreamClose(e[R].stream)):readableByteStreamControllerCallPullIfNeeded(e)}function readableByteStreamControllerEnqueueChunkToQueue(e,t,n,r){e[R].queue.push({buffer:t,byteOffset:n,byteLength:r}),e[R].queueTotalSize+=r}function readableByteStreamControllerEnqueueClonedChunkToQueue(e,t,n,r){let i;try{i=t.slice(n,n+r)}catch(t){readableByteStreamControllerError(e,t);return}readableByteStreamControllerEnqueueChunkToQueue(e,i,0,r)}function readableByteStreamControllerEnqueueDetachedPullIntoToQueue(e,t){t.bytesFilled>0&&readableByteStreamControllerEnqueueClonedChunkToQueue(e,t.buffer,t.byteOffset,t.bytesFilled),readableByteStreamControllerShiftPendingPullInto(e)}function readableByteStreamControllerShiftPendingPullInto(e){return e[R].pendingPullIntos.shift()}function readableByteStreamControllerFillHeadPullIntoDescriptor(e,t,n){n.bytesFilled+=t}function readableByteStreamControllerConvertPullIntoDescriptor(e){let t=e.bytesFilled,n=e.elementSize,r=transferArrayBuffer(e.buffer);return e.buffer=r,new e.viewConstructor(r,e.byteOffset,t/n)}function readableByteStreamControllerCommitPullIntoDescriptor(e,t){let n=!1;e[R].state===`closed`&&(n=!0);let r=readableByteStreamControllerConvertPullIntoDescriptor(t);t.readerType==="default"?readableStreamFulfillReadRequest(e,r,n):readableStreamFulfillReadIntoRequest(e,r,n)}function readableByteStreamControllerFillPullIntoDescriptorFromQueue(e,t){let n=Math.min(e[R].queueTotalSize,t.byteLength-t.bytesFilled),r=t.bytesFilled+n,i=n,o=!1,s=r-r%t.elementSize;s>=t.minimumFill&&(i=s-t.bytesFilled,o=!0);let c=e[R].queue;for(;i>0;){let n=c[0],r=Math.min(i,n.byteLength),o=t.byteOffset+t.bytesFilled,s=new Uint8Array(t.buffer,o,r),l=new Uint8Array(n.buffer,n.byteOffset,r);s.set(l),n.byteLength===r?c.shift():(n.byteOffset+=r,n.byteLength-=r),e[R].queueTotalSize-=r,readableByteStreamControllerFillHeadPullIntoDescriptor(e,r,t),i-=r}return o}function readableByteStreamControllerFillReadRequestFromQueue(e,t){let n=e[R].queue.shift();e[R].queueTotalSize-=n.byteLength,readableByteStreamControllerHandleQueueDrain(e);let r=new Uint8Array(n.buffer,n.byteOffset,n.byteLength);t[U](r)}function readableByteStreamControllerProcessReadRequestsUsingQueue(e){let t=e[R].stream[R].reader;for(;t[R].readRequests.length!==0;){if(e[R].queueTotalSize===0)return;readableByteStreamControllerFillReadRequestFromQueue(e,t[R].readRequests.shift())}}function readableByteStreamControllerProcessPullIntoDescriptorsUsingQueue(e){for(;e[R].pendingPullIntos.length!==0;){if(e[R].queueTotalSize===0)return;let t=e[R].pendingPullIntos[0];readableByteStreamControllerFillPullIntoDescriptorFromQueue(e,t)&&(readableByteStreamControllerShiftPendingPullInto(e),readableByteStreamControllerCommitPullIntoDescriptor(e[R].stream,t))}}function readableByteStreamControllerGetBYOBRequest(e){if(e[R].byobRequest===null&&e[R].pendingPullIntos.length!==0){let t=e[R].pendingPullIntos[0],n=new Uint8Array(t.buffer,t.byteOffset+t.bytesFilled,t.byteLength-t.bytesFilled),r=new ReadableStreamBYOBRequest(G);r[R]={controller:e,view:n},e[R].byobRequest=r}return e[R].byobRequest}function readableByteStreamControllerEnqueue(e,t){let{stream:n}=e[R];if(e[R].closeRequested||n[R].state!==`readable`)return;let r=t.buffer,i=t.byteLength,o=t.byteOffset;if(isDetachedBuffer(r))throw TypeError(`chunk's buffer is detached`);let s=transferArrayBuffer(r);if(e[R].pendingPullIntos.length!==0){let t=e[R].pendingPullIntos[0];if(isDetachedBuffer(t.buffer))throw TypeError(`BYOB request's buffer has been detached`);readableByteStreamControllerInvalidateBYOBRequest(e),t.buffer=transferArrayBuffer(t.buffer),t.readerType===`none`&&readableByteStreamControllerEnqueueDetachedPullIntoToQueue(e,t)}readableStreamHasDefaultReader(n)?(readableByteStreamControllerProcessReadRequestsUsingQueue(e),readableStreamGetNumReadRequests(n)===0?readableByteStreamControllerEnqueueChunkToQueue(e,s,o,i):(e[R].pendingPullIntos.length!==0&&readableByteStreamControllerShiftPendingPullInto(e),readableStreamFulfillReadRequest(n,new Uint8Array(s,o,i),!1))):readableStreamHasBYOBReader(n)?(readableByteStreamControllerEnqueueChunkToQueue(e,s,o,i),readableByteStreamControllerProcessPullIntoDescriptorsUsingQueue(e)):readableByteStreamControllerEnqueueChunkToQueue(e,s,o,i),readableByteStreamControllerCallPullIfNeeded(e)}function readableByteStreamControllerClose(e){let{stream:t}=e[R];if(!(e[R].closeRequested||t[R].state!==`readable`)){if(e[R].queueTotalSize>0){e[R].closeRequested=!0;return}if(e[R].pendingPullIntos.length!==0){let t=e[R].pendingPullIntos[0];if(t.bytesFilled%t.elementSize!==0){let t=TypeError(`Insufficient bytes to fill elements in the given buffer`);throw readableByteStreamControllerError(e,t),t}}readableByteStreamControllerClearAlgorithms(e),readableStreamClose(t)}}function readableByteStreamControllerPullInto(e,t,n,r){let i=e[R].stream,o=t[Symbol.toStringTag],s,c;if(o===void 0||o===`DataView`)s=DataView,c=1;else{let e=typedArrayConstructorByTag(o);if(!e){r[W](TypeError(`Unsupported typed array: ${o}`));return}s=e,c=elementSizeByTag(o)}let l=t.buffer,u=t.byteLength,d=t.byteOffset,f=n*c,p;try{p=transferArrayBuffer(l)}catch(e){r[W](e);return}let m={buffer:p,bufferByteLength:p.byteLength,byteOffset:d,byteLength:u,bytesFilled:0,minimumFill:f,elementSize:c,viewConstructor:s,readerType:`byob`};if(e[R].pendingPullIntos.length!==0){e[R].pendingPullIntos.push(m),readableStreamAddReadIntoRequest(i,r);return}if(i[R].state===`closed`){let e=new s(m.buffer,m.byteOffset,0);r[H](e);return}if(e[R].queueTotalSize>0){if(readableByteStreamControllerFillPullIntoDescriptorFromQueue(e,m)){let t=readableByteStreamControllerConvertPullIntoDescriptor(m);readableByteStreamControllerHandleQueueDrain(e),r[U](t);return}if(e[R].closeRequested){let t=TypeError(`Insufficient bytes to fill elements in the given buffer`);readableByteStreamControllerError(e,t),r[W](t);return}}e[R].pendingPullIntos.push(m),readableStreamAddReadIntoRequest(i,r),readableByteStreamControllerCallPullIfNeeded(e)}function readableByteStreamControllerRespond(e,t){let n=e[R].pendingPullIntos[0];if(e[R].stream[R].state===`closed`){if(t!==0)throw TypeError(`bytesWritten must be 0 when calling respond() on a closed stream`)}else{if(t===0)throw TypeError(`bytesWritten must be greater than 0 when calling respond() on a readable stream`);if(n.bytesFilled+t>n.byteLength)throw RangeError(`bytesWritten out of range`)}n.buffer=transferArrayBuffer(n.buffer),readableByteStreamControllerRespondInternal(e,t)}function readableByteStreamControllerRespondWithNewView(e,t){let n=e[R].pendingPullIntos[0],r=e[R].stream[R].state,i=t.byteLength,o=t.byteOffset,s=t.buffer;if(r===`closed`){if(i!==0)throw TypeError(`view's length must be 0 when calling respondWithNewView() on a closed stream`)}else if(i===0)throw TypeError(`view's length must be greater than 0 when calling respondWithNewView() on a readable stream`);if(n.byteOffset+n.bytesFilled!==o)throw RangeError(`The region specified by view does not match byobRequest`);if(n.bufferByteLength!==s.byteLength)throw RangeError(`The buffer of view has different capacity than byobRequest`);if(n.bytesFilled+i>n.byteLength)throw RangeError(`The region specified by view is larger than byobRequest`);n.buffer=transferArrayBuffer(s),readableByteStreamControllerRespondInternal(e,i)}function readableByteStreamControllerRespondInternal(e,t){let n=e[R].pendingPullIntos[0];readableByteStreamControllerInvalidateBYOBRequest(e),e[R].stream[R].state===`closed`?readableByteStreamControllerRespondInClosedState(e,n):readableByteStreamControllerRespondInReadableState(e,t,n),readableByteStreamControllerCallPullIfNeeded(e)}function readableByteStreamControllerRespondInClosedState(e,t){t.readerType===`none`&&readableByteStreamControllerShiftPendingPullInto(e);let n=e[R].stream;if(readableStreamHasBYOBReader(n))for(;readableStreamGetNumReadIntoRequests(n)>0;)readableByteStreamControllerCommitPullIntoDescriptor(n,readableByteStreamControllerShiftPendingPullInto(e))}function readableByteStreamControllerRespondInReadableState(e,t,n){if(readableByteStreamControllerFillHeadPullIntoDescriptor(e,t,n),n.readerType===`none`){readableByteStreamControllerEnqueueDetachedPullIntoToQueue(e,n),readableByteStreamControllerProcessPullIntoDescriptorsUsingQueue(e);return}if(n.bytesFilled<n.minimumFill)return;readableByteStreamControllerShiftPendingPullInto(e);let r=n.bytesFilled%n.elementSize;if(r>0){let t=n.byteOffset+n.bytesFilled;readableByteStreamControllerEnqueueClonedChunkToQueue(e,n.buffer,t-r,r)}n.bytesFilled-=r,readableByteStreamControllerCommitPullIntoDescriptor(e[R].stream,n),readableByteStreamControllerProcessPullIntoDescriptorsUsingQueue(e)}function readableByteStreamControllerCancelSteps(e,t){readableByteStreamControllerClearPendingPullIntos(e),resetQueue(e);let n=e[R].cancelAlgorithm?.(t)??Promise.resolve();return readableByteStreamControllerClearAlgorithms(e),n}function readableByteStreamControllerPullSteps(e,t){let n=e[R].stream;if(e[R].queueTotalSize>0){readableByteStreamControllerFillReadRequestFromQueue(e,t);return}let r=e[R].autoAllocateChunkSize;if(r!==void 0){let n;try{n=new ArrayBuffer(r)}catch(e){t[W](e);return}let i={buffer:n,bufferByteLength:r,byteOffset:0,byteLength:r,bytesFilled:0,minimumFill:1,elementSize:1,viewConstructor:Uint8Array,readerType:`default`};e[R].pendingPullIntos.push(i)}readableStreamAddReadRequest(n,t),readableByteStreamControllerCallPullIfNeeded(e)}function setupReadableByteStreamController(e,t,n,r,i,o,s){t[R]={cancelAlgorithm:i,closeRequested:!1,highWaterMark:o,pullAgain:!1,pullAlgorithm:r,pulling:!1,queue:[],queueTotalSize:0,started:!1,stream:e,byobRequest:null,pendingPullIntos:[],autoAllocateChunkSize:s},e[R].controller=t;let c=n();new Promise(e=>e(c)).then(()=>{t[R].started=!0,readableByteStreamControllerCallPullIfNeeded(t)},e=>readableByteStreamControllerError(t,e))}function setupReadableByteStreamControllerFromSource(e,t,n){let r=new ReadableByteStreamController(G),i=t?.start,o=t?.pull,s=t?.cancel,c=t?.autoAllocateChunkSize;if(c!==void 0&&(c===0||!Number.isInteger(c)||c<0))throw TypeError(`autoAllocateChunkSize must be a positive integer`);setupReadableByteStreamController(e,r,i?i.bind(t,r):nonOpStart,o?createPromiseCallback(`source.pull`,o,t):nonOpPull,s?createPromiseCallback(`source.cancel`,s,t):nonOpCancel,n,c)}function readableByteStreamTee(e){let t=new ReadableStreamDefaultReader(e),n=!1,r=!1,i=!1,o,s,c=Promise.withResolvers(),l,u,d,f;function pullAlgorithm(){return n?Promise.resolve():(n=!0,t.read().then(e=>{if(n=!1,e.done){r||d.close(),i||f.close();return}let t=e.value,o=new Uint8Array(t.buffer.slice(t.byteOffset,t.byteOffset+t.byteLength));r||d.enqueue(o),i||f.enqueue(new Uint8Array(o))},()=>{}),Promise.resolve())}return l=new ReadableStream$1({type:`bytes`,pull:pullAlgorithm,cancel(t){if(r=!0,o=t,i){let t=readableStreamCancel(e,[o,s]);return c.resolve(),t}return c.promise}}),u=new ReadableStream$1({type:`bytes`,pull:pullAlgorithm,cancel(t){if(i=!0,s=t,r){let t=readableStreamCancel(e,[o,s]);return c.resolve(),t}return c.promise}}),d=l[R].controller,f=u[R].controller,t.closed.catch(e=>{d.error(e),f.error(e),(!r||!i)&&c.resolve()}),[l,u]}const Lt=Symbol(`kSkipThrow`);var TransformStream=class{[z]=`TransformStream`;[R];constructor(e={},t={},n={}){if(e!=null&&typeof e!=`object`)throw TypeError(`transformer must be an object`);if(t!=null&&typeof t!=`object`)throw TypeError(`writableStrategy must be an object`);if(n!=null&&typeof n!=`object`)throw TypeError(`readableStrategy must be an object`);let r=e?.readableType,i=e?.writableType,o=e?.start;if(r!==void 0)throw RangeError(`Invalid readableType: ${r}`);if(i!==void 0)throw RangeError(`Invalid writableType: ${i}`);let s=extractHighWaterMark(n?.highWaterMark,0),c=extractSizeAlgorithm(n?.size),l=extractHighWaterMark(t?.highWaterMark,1),u=extractSizeAlgorithm(t?.size),d=Promise.withResolvers();initializeTransformStream(this,d,l,u,s,c),setupTransformStreamDefaultControllerFromTransformer(this,e),o===void 0?d.resolve():d.resolve(o.call(e,this[R].controller))}get readable(){if(!Rt(this))throw TypeError(`Invalid this`);return this[R].readable}get writable(){if(!Rt(this))throw TypeError(`Invalid this`);return this[R].writable}get[Symbol.toStringTag](){return`TransformStream`}},TransformStreamDefaultController=class{[z]=`TransformStreamDefaultController`;[R];constructor(e){if(e!==Lt)throw TypeError(`Illegal constructor`)}get desiredSize(){if(!zt(this))throw TypeError(`Invalid this`);let{stream:e}=this[R],{readable:t}=e[R],n=t[R].controller;return readableStreamDefaultControllerGetDesiredSize(n)}enqueue(e){if(!zt(this))throw TypeError(`Invalid this`);transformStreamDefaultControllerEnqueue(this,e)}error(e){if(!zt(this))throw TypeError(`Invalid this`);transformStreamDefaultControllerError(this,e)}terminate(){if(!zt(this))throw TypeError(`Invalid this`);transformStreamDefaultControllerTerminate(this)}get[Symbol.toStringTag](){return`TransformStreamDefaultController`}};const Rt=isBrandCheck(`TransformStream`),zt=isBrandCheck(`TransformStreamDefaultController`);async function defaultTransformAlgorithm(e,t){transformStreamDefaultControllerEnqueue(t,e)}function initializeTransformStream(e,t,n,r,i,o){let startAlgorithm=()=>t.promise,s=createWritableStream(startAlgorithm,t=>transformStreamDefaultSinkWriteAlgorithm(e,t),()=>transformStreamDefaultSinkCloseAlgorithm(e),t=>transformStreamDefaultSinkAbortAlgorithm(e,t),n,r);e[R]={readable:createReadableStream(startAlgorithm,()=>transformStreamDefaultSourcePullAlgorithm(e),t=>transformStreamDefaultSourceCancelAlgorithm(e,t),i,o),writable:s,controller:void 0,backpressure:void 0,backpressureChange:{promise:void 0,resolve:void 0,reject:void 0}},transformStreamSetBackpressure(e,!0)}function transformStreamError(e,t){let{readable:n}=e[R];readableStreamDefaultControllerError(n[R].controller,t),transformStreamErrorWritableAndUnblockWrite(e,t)}function transformStreamErrorWritableAndUnblockWrite(e,t){let{controller:n,writable:r}=e[R];transformStreamDefaultControllerClearAlgorithms(n),writableStreamDefaultControllerErrorIfNeeded(r[R].controller,t),transformStreamUnblockWrite(e)}function transformStreamUnblockWrite(e){e[R].backpressure&&transformStreamSetBackpressure(e,!1)}function transformStreamSetBackpressure(e,t){e[R].backpressureChange.promise!==void 0&&e[R].backpressureChange.resolve?.(),e[R].backpressureChange=Promise.withResolvers(),e[R].backpressure=t}function setupTransformStreamDefaultController(e,t,n,r,i){t[R]={stream:e,transformAlgorithm:n,flushAlgorithm:r,cancelAlgorithm:i,finishPromise:void 0},e[R].controller=t}function setupTransformStreamDefaultControllerFromTransformer(e,t){let n=new TransformStreamDefaultController(Lt),r=t?.transform,i=t?.flush,o=t?.cancel;setupTransformStreamDefaultController(e,n,r?createPromiseCallback(`transformer.transform`,r,t):defaultTransformAlgorithm,i?createPromiseCallback(`transformer.flush`,i,t):nonOpFlush,o?createPromiseCallback(`transformer.cancel`,o,t):nonOpCancel)}function transformStreamDefaultControllerClearAlgorithms(e){e[R].transformAlgorithm=void 0,e[R].flushAlgorithm=void 0,e[R].cancelAlgorithm=void 0}function transformStreamDefaultControllerEnqueue(e,t){let{stream:n}=e[R],{readable:r}=n[R],i=r[R].controller;if(!readableStreamDefaultControllerCanCloseOrEnqueue(i))throw TypeError(`Unable to enqueue`);try{readableStreamDefaultControllerEnqueue(i,t)}catch(e){throw transformStreamErrorWritableAndUnblockWrite(n,e),r[R].storedError}readableStreamDefaultControllerHasBackpressure(i)!==n[R].backpressure&&transformStreamSetBackpressure(n,!0)}function transformStreamDefaultControllerError(e,t){transformStreamError(e[R].stream,t)}async function transformStreamDefaultControllerPerformTransform(e,t){try{let n=e[R].transformAlgorithm;if(n===void 0)return;await n(t,e)}catch(t){throw transformStreamError(e[R].stream,t),t}}function transformStreamDefaultControllerTerminate(e){let{stream:t}=e[R],{readable:n}=t[R];readableStreamDefaultControllerClose(n[R].controller),transformStreamErrorWritableAndUnblockWrite(t,TypeError(`TransformStream has been terminated`))}function transformStreamDefaultSinkWriteAlgorithm(e,t){let{controller:n}=e[R];return e[R].backpressure?e[R].backpressureChange.promise.then(()=>{let{writable:r}=e[R];if(r[R].state===`erroring`)throw r[R].storedError;return transformStreamDefaultControllerPerformTransform(n,t)}):transformStreamDefaultControllerPerformTransform(n,t)}async function transformStreamDefaultSinkAbortAlgorithm(e,t){let{controller:n,readable:r}=e[R];if(n[R].finishPromise!==void 0)return n[R].finishPromise;let{promise:i,resolve:o,reject:s}=Promise.withResolvers();n[R].finishPromise=i;let c=n[R].cancelAlgorithm(t);return transformStreamDefaultControllerClearAlgorithms(n),c.then(()=>{r[R].state===`errored`?s(r[R].storedError):(readableStreamDefaultControllerError(r[R].controller,t),o())},e=>{readableStreamDefaultControllerError(r[R].controller,e),s(e)}),n[R].finishPromise}function transformStreamDefaultSinkCloseAlgorithm(e){let{readable:t,controller:n}=e[R];if(n[R].finishPromise!==void 0)return n[R].finishPromise;let{promise:r,resolve:i,reject:o}=Promise.withResolvers();n[R].finishPromise=r;let s=n[R].flushAlgorithm(n);return transformStreamDefaultControllerClearAlgorithms(n),s.then(()=>{t[R].state===`errored`?o(t[R].storedError):(readableStreamDefaultControllerClose(t[R].controller),i())},e=>{readableStreamDefaultControllerError(t[R].controller,e),o(e)}),n[R].finishPromise}function transformStreamDefaultSourcePullAlgorithm(e){return transformStreamSetBackpressure(e,!1),e[R].backpressureChange.promise}function transformStreamDefaultSourceCancelAlgorithm(e,t){let{controller:n,writable:r}=e[R];if(n[R].finishPromise!==void 0)return n[R].finishPromise;let{promise:i,resolve:o,reject:s}=Promise.withResolvers();n[R].finishPromise=i;let c=n[R].cancelAlgorithm(t);return transformStreamDefaultControllerClearAlgorithms(n),c.then(()=>{r[R].state===`errored`?s(r[R].storedError):(writableStreamDefaultControllerErrorIfNeeded(r[R].controller,t),transformStreamUnblockWrite(e),o())},t=>{writableStreamDefaultControllerErrorIfNeeded(r[R].controller,t),transformStreamUnblockWrite(e),s(t)}),n[R].finishPromise}const Bt=Object.defineProperty(e=>e.byteLength,"name",{value:`size`}),Vt=Object.defineProperty(()=>1,"name",{value:`size`});var ByteLengthQueuingStrategy=class{#e;constructor(e){if(typeof e!=`object`||!e)throw TypeError(`init must be an object`);if(e.highWaterMark===void 0)throw TypeError(`init.highWaterMark is required`);this.#e=+e.highWaterMark}get highWaterMark(){return this.#e}get size(){return Bt}get[Symbol.toStringTag](){return`ByteLengthQueuingStrategy`}},CountQueuingStrategy=class{#e;constructor(e){if(typeof e!=`object`||!e)throw TypeError(`init must be an object`);if(e.highWaterMark===void 0)throw TypeError(`init.highWaterMark is required`);this.#e=+e.highWaterMark}get highWaterMark(){return this.#e}get size(){return Vt}get[Symbol.toStringTag](){return`CountQueuingStrategy`}},TextEncoderStream=class{#e=null;#t=new TextEncoder;#n;constructor(){this.#n=new TransformStream({transform:(e,t)=>{if(e=String(e),e===``)return;this.#e!==null&&(e=this.#e+e);let n=e.charCodeAt(e.length-1);55296<=n&&n<=56319?(this.#e=e.slice(-1),e=e.slice(0,-1)):this.#e=null,e&&t.enqueue(this.#t.encode(e))},flush:e=>{this.#e!==null&&e.enqueue(new Uint8Array([239,191,189]))}})}get encoding(){return`utf-8`}get readable(){return this.#n.readable}get writable(){return this.#n.writable}};function hasStreamingSupport(){try{return new TextDecoder().decode(new Uint8Array([195]),{stream:!0}),!0}catch{return!1}}const Ht=hasStreamingSupport();function incompleteUtf8Tail(e){let t=e.length;if(t===0)return 0;for(let n=1;n<=Math.min(3,t);n++){let r=e[t-n];if(!(r&128))return 0;if((r&192)!=128){let e;if((r&224)==192)e=2;else if((r&240)==224)e=3;else if((r&248)==240)e=4;else return 0;return n<e?n:0}}return 0}var TextDecoderStream=class{#e;#t;constructor(e,t){if(this.#e=new TextDecoder(e,t),Ht)this.#t=new TransformStream({transform:(e,t)=>{let n=toUint8Array(e),r=this.#e.decode(n,{stream:!0});r&&t.enqueue(r)},flush:e=>{let t=this.#e.decode();t&&e.enqueue(t)},cancel:()=>{this.#e.decode()}});else{let e=new Uint8Array;this.#t=new TransformStream({transform:(t,n)=>{let r=toUint8Array(t),i;e.length>0?(i=new Uint8Array(e.length+r.length),i.set(e,0),i.set(r,e.length)):i=r;let o=incompleteUtf8Tail(i),s;if(o>0?(s=i.slice(0,i.length-o),e=i.slice(i.length-o)):(s=i,e=new Uint8Array),s.length>0){let e=this.#e.decode(s);e&&n.enqueue(e)}},flush:t=>{if(e.length>0){let n=this.#e.decode(e);n&&t.enqueue(n),e=new Uint8Array}},cancel:()=>{e=new Uint8Array}})}}get encoding(){return this.#e.encoding}get fatal(){return this.#e.fatal}get ignoreBOM(){return this.#e.ignoreBOM}get readable(){return this.#t.readable}get writable(){return this.#t.writable}};function toUint8Array(e){if(e instanceof Uint8Array)return e;if(e instanceof ArrayBuffer)return new Uint8Array(e);if(ArrayBuffer.isView(e))return new Uint8Array(e.buffer,e.byteOffset,e.byteLength);throw TypeError(`chunk must be a BufferSource`)}function isNativeStreamUsable$3(e,t){try{return typeof e==`function`?typeof e.prototype?.[t]==`function`:!1}catch{return!1}}__name(isNativeStreamUsable$3,`isNativeStreamUsable`);const Ut=isNativeStreamUsable$3(globalThis.ReadableStream,`getReader`)?globalThis.ReadableStream:ReadableStream$1,Wt=isNativeStreamUsable$3(globalThis.WritableStream,`getWriter`)?globalThis.WritableStream:WritableStream,Gt=isNativeStreamUsable$3(globalThis.TransformStream,`readable`)?globalThis.TransformStream:TransformStream,Kt=typeof globalThis.ByteLengthQueuingStrategy==`function`?globalThis.ByteLengthQueuingStrategy:ByteLengthQueuingStrategy,qt=typeof globalThis.CountQueuingStrategy==`function`?globalThis.CountQueuingStrategy:CountQueuingStrategy,Jt=typeof globalThis.TextEncoderStream==`function`?globalThis.TextEncoderStream:TextEncoderStream,Yt=typeof globalThis.TextDecoderStream==`function`?globalThis.TextDecoderStream:TextDecoderStream,Xt=globalThis;globalThis.ByteLengthQueuingStrategy===void 0&&(Xt.ByteLengthQueuingStrategy=Kt),globalThis.CountQueuingStrategy===void 0&&(Xt.CountQueuingStrategy=qt);const J=globalThis;function isNativeStreamUsable$2(e,t){try{return typeof e==`function`?typeof e.prototype?.[t]==`function`:!1}catch{return!1}}__name(isNativeStreamUsable$2,`isNativeStreamUsable`),isNativeStreamUsable$2(globalThis.ReadableStream,`getReader`)||(J.ReadableStream=Ut),J.ReadableStreamBYOBReader===void 0&&(J.ReadableStreamBYOBReader=ReadableStreamBYOBReader),J.ReadableStreamBYOBRequest===void 0&&(J.ReadableStreamBYOBRequest=ReadableStreamBYOBRequest),J.ReadableByteStreamController===void 0&&(J.ReadableByteStreamController=ReadableByteStreamController),J.ReadableStreamDefaultController===void 0&&(J.ReadableStreamDefaultController=ReadableStreamDefaultController),J.ReadableStreamDefaultReader===void 0&&(J.ReadableStreamDefaultReader=ReadableStreamDefaultReader);const Zt=globalThis;globalThis.TextEncoderStream===void 0&&(Zt.TextEncoderStream=Jt),globalThis.TextDecoderStream===void 0&&(Zt.TextDecoderStream=Yt);function isNativeStreamUsable$1(e,t){try{return typeof e==`function`?typeof e.prototype?.[t]==`function`:!1}catch{return!1}}if(__name(isNativeStreamUsable$1,`isNativeStreamUsable`),!isNativeStreamUsable$1(globalThis.TransformStream,`readable`)){let e=globalThis;e.TransformStream=Gt}function isNativeStreamUsable(e,t){try{return typeof e==`function`?typeof e.prototype?.[t]==`function`:!1}catch{return!1}}if(!isNativeStreamUsable(globalThis.WritableStream,`getWriter`)){let e=globalThis;e.WritableStream=Wt}const Qt=[`Overview`,`Presentation`,`Boxed Lists`,`Controls`,`Buttons`,`Text`,`Drawing`,`Media`,`Layout`,`Windows`,`View Switching`,`Navigation`,`Feedback`];function orderCategories(e){let t=new Map(Qt.map((e,t)=>[e,t])),n=[...e].filter(e=>t.has(e));n.sort((e,n)=>t.get(e)-t.get(n));let r=e.filter(e=>!t.has(e));return[...n,...r]}var StoryRegistry=class{constructor(){this.modules=[]}registerStory(e){if(!e||!Array.isArray(e.stories)){y.warn(`Invalid story module provided to registerStory`);return}this.modules.push(e)}registerStories(e){if(!Array.isArray(e)){y.warn(`Invalid story modules array provided to registerStories`);return}let t=e.filter(e=>e&&Array.isArray(e.stories));this.modules.push(...t)}getStories(){return[...this.modules]}createStoryInstances(){for(let e of this.modules)this.instantiateStoriesForModule(e);return[...this.modules]}instantiateStoriesForModule(e){e.instances=[];let t=e.decorators??[];for(let n of e.stories)try{let r=new n,build=()=>{typeof r.initialize==`function`&&r.initialize()};t.reduceRight((e,t)=>()=>t(e,r),build)(),e.instances.push(r)}catch(e){y.error(`Failed to instantiate story: ${n.name||`Unknown`}`,e)}}},StorybookController=class{constructor(e,t){this._registry=new StoryRegistry,this._activeStory=null,this._unsubArgs=null,this._view=e,this._buildControls=t}mount(e,t=!0){this._registry.registerStories(e);let n=this._registry.createStoryInstances(),r=this._groupByCategory(n);if(this._view.renderSidebar(r,e=>this.select(e)),t){let e=r[0]?.stories[0]?.instance??null;e&&this.select(e)}}select(e){this._view.setPreviewTitle(`${e.meta.title} — ${e.story}`),this._view.showPreview(e),this._view.markSelected(e.meta.title),this._wireControls(e),this._activeStory=e}_wireControls(e){this._unsubArgs&&=(this._unsubArgs(),null);let t=this._buildControls(e),n=t.map(e=>e.refresh);this._view.renderControls(t),this._unsubArgs=e.onArgsChanged(e=>{for(let t of n)t(e)})}_groupByCategory(e){let t=new Map;for(let n of e)for(let e of n.instances??[]){let n=e.meta.title.split(`/`),r=n[0],i=n.length>1?n[1]:e.meta.title;t.has(r)||t.set(r,[]),t.get(r).push({instance:e,name:i||`Unnamed`})}return orderCategories([...t.keys()]).map(e=>({category:e,stories:t.get(e)}))}get activeStory(){return this._activeStory}listStories(){return this._registry.getStories().flatMap(e=>(e.instances??[]).map(e=>({title:e.meta.title,story:e.story,category:e.meta.title.split(`/`)[0],controls:e.meta.controls??[]})))}openStoryByTitle(e){let t=this._findByTitle(e);return t?(this.select(t),!0):!1}getCurrentStory(){let e=this._activeStory;return e?{title:e.meta.title,story:e.story,args:e.args}:null}setActiveArg(e,t){let n=this._activeStory;return n?(n.setArg(e,t),!0):!1}_findByTitle(e){for(let t of this._registry.getStories())for(let n of t.instances??[])if(n.meta.title===e)return n;return null}};let Y=function(e){return e.TEXT=`text`,e.NUMBER=`number`,e.BOOLEAN=`boolean`,e.SELECT=`select`,e.RANGE=`range`,e.COLOR=`color`,e}({});function isStoryModule(e){return typeof e==`object`&&!!e&&Array.isArray(e.stories)}function argsFromControls(e=[]){let t={};for(let n of e)t[n.name]=defaultFor(n);return t}function defaultFor(e){if(e.defaultValue!==void 0)return e.defaultValue;switch(e.type){case`text`:return``;case`color`:return`#000000`;case`boolean`:return!1;case`number`:case`range`:return e.min??0;case`select`:return e.options[0]?.value??null;default:return null}}function controlLabel(e){return e.label||e.name}function bindControl(e,t,n){let r=t.name,i=t.description;switch(t.type){case Y.TEXT:{let o=n.text(controlLabel(t),i),s=e.args[r];return o.set(typeof s==`string`?s:``),o.onChange(t=>e.setArg(r,t)),{view:o.node,refresh:e=>{let t=typeof e[r]==`string`?e[r]:``;o.get()!==t&&o.set(t)}}}case Y.COLOR:{let o=n.color(controlLabel(t),i),s=e.args[r];return o.set(typeof s==`string`?s:`#000000`),o.onChange(t=>e.setArg(r,t)),{view:o.node,refresh:e=>{let t=typeof e[r]==`string`?e[r]:`#000000`;o.get()!==t&&o.set(t)}}}case Y.BOOLEAN:{let o=n.boolean(controlLabel(t),i);return o.set(!!e.args[r]),o.onChange(t=>e.setArg(r,t)),{view:o.node,refresh:e=>{let t=!!e[r];o.get()!==t&&o.set(t)}}}case Y.NUMBER:{let i=n.number(t),o=e.args[r];return i.set(typeof o==`number`?o:t.min??0),i.onChange(t=>e.setArg(r,t)),{view:i.node,refresh:e=>{let t=typeof e[r]==`number`?e[r]:0;i.get()!==t&&i.set(t)}}}case Y.RANGE:{let i=n.range(t),o=e.args[r],s=typeof o==`number`?o:t.min??0;return i.set(s),i.onChange(t=>e.setArg(r,t)),{view:i.node,refresh:e=>{let t=typeof e[r]==`number`?e[r]:s;i.get()!==t&&i.set(t)}}}case Y.SELECT:{let i=t.options;if(!i?.length)return y.warn(`SELECT control "${r}" has no options`),null;let o=n.select(t),s=e.args[r],c=Math.max(0,i.findIndex(e=>e.value===s));return o.set(c),o.onChange(t=>{t>=0&&t<i.length&&e.setArg(r,i[t].value)}),{view:o.node,refresh:e=>{let t=e[r],n=i.findIndex(e=>e.value===t);n>=0&&o.get()!==n&&o.set(n)}}}default:return y.warn(`Unsupported control type: ${t.type}`),null}}function buildStorybookDevtoolsExtension(e){let currentStory=()=>e.getCurrentStory();return{methods:[{name:`ListStories`,kind:`read-only`,handler:(()=>JSON.stringify(e.listStories(),null,2))},{name:`GetCurrentStory`,kind:`read-only`,handler:(()=>JSON.stringify(currentStory(),null,2))},{name:`OpenStory`,kind:`mutating`,handler:(t=>e.openStoryByTitle(t))},{name:`SetStoryArg`,kind:`mutating`,handler:((t,n)=>e.setActiveArg(t,n?JSON.parse(n):null))},{name:`GetStoryArgs`,kind:`read-only`,handler:(()=>JSON.stringify(currentStory()?.args??{},null,2))}],contributeStatus:()=>{let t=currentStory(),n=e.listStories();return{storybook:{currentStory:t?{title:t.title,story:t.story}:null,storyCount:n.length}}}}}function collectStoryModules$1(e){let t=[];for(let n of e)if(!(!n||typeof n!=`object`))for(let e of Object.values(n))isStoryModule(e)&&t.push(e);return t}__name(collectStoryModules$1,`collectStoryModules`);var StoryViewBase=class{constructor(){this._listeners=new Set}initBase(e,t,n){this._meta=e,this._story=t,this._args=argsFromControls(e.controls),this._chrome=this.createChrome(e,n),this.refreshChromeText()}get meta(){return this._meta}get story(){return this._story}get args(){return this._args}get root(){return this._chrome.root}set args(e){this._args!==e&&(this._args=e,this.updateArgs(e),this.emitArgs(e))}emitArgs(e){for(let t of this._listeners)t(e)}onArgsChanged(e){return this._listeners.add(e),()=>{this._listeners.delete(e)}}setArg(e,t){this.args={...this._args,[e]:t}}initialize(){}updateArgs(e){}teardown(){}addContent(e){this._chrome.hasStage&&this._chrome.setStageContent(e)}refreshChromeText(){let e=this._story?`${this._meta.title} — ${this._story}`:this._meta.title;this._chrome.setChromeText(e,this._meta.description??``)}};const $t=[`system`,`light`,`dark`];var StorybookSettings=class{constructor(e=()=>!1){this._colorScheme=`system`,this._accentMode=`system`,this._accent=`blue`,this._listeners=new Set,this._systemDark=e}get colorScheme(){return this._colorScheme}set colorScheme(e){!$t.includes(e)||e===this._colorScheme||(this._colorScheme=e,this._notify())}get accentMode(){return this._accentMode}set accentMode(e){e!==this._accentMode&&(this._accentMode=e,this._notify())}get accent(){return this._accent}set accent(e){e!==this._accent&&(this._accent=e,this._notify())}get resolvedAccent(){return this._accentMode===`custom`?this._accent:null}get resolvedDark(){return this._colorScheme===`dark`?!0:this._colorScheme===`light`?!1:this._systemDark()}get state(){return{colorScheme:this._colorScheme,accentMode:this._accentMode,accent:this._accent}}subscribe(e){return this._listeners.add(e),()=>{this._listeners.delete(e)}}systemChanged(){this._colorScheme===`system`&&this._notify()}_notify(){let e=this.state;for(let t of[...this._listeners])try{t(e)}catch{}}};const en={ListStories:`<method name="ListStories"><arg type="s" direction="out" name="stories_json"/></method>`,GetCurrentStory:`<method name="GetCurrentStory"><arg type="s" direction="out" name="story_json"/></method>`,OpenStory:`<method name="OpenStory"><arg type="s" direction="in" name="title"/><arg type="b" direction="out" name="opened"/></method>`,SetStoryArg:`<method name="SetStoryArg"><arg type="s" direction="in" name="name"/><arg type="s" direction="in" name="value_json"/><arg type="b" direction="out" name="applied"/></method>`,GetStoryArgs:`<method name="GetStoryArgs"><arg type="s" direction="out" name="args_json"/></method>`};function storybookDevtoolsExtension(e){let t=buildStorybookDevtoolsExtension(e.controller),n=[],r={},i={};for(let e of t.methods){let t=en[e.name];t&&n.push(t),r[e.name]=e.handler,i[e.name]=e.kind}return{methodsXml:n,handlers:r,methodKinds:i,contributeStatus:t.contributeStatus}}function variantKindFor(e,t){switch(e){case`s`:case`b`:case`i`:case`u`:case`d`:return e}if(typeof t==`string`)return`s`;if(typeof t==`boolean`)return`b`;if(typeof t==`number`)return Number.isInteger(t)?`i`:`d`;throw Error(`Cannot build a GLib.Variant from ${typeof t}`)}function buildVariant(t,n){switch(variantKindFor(t?.dup_string()??null,n)){case`s`:return e.Variant.new_string(String(n));case`b`:return e.Variant.new_boolean(!!n);case`i`:return e.Variant.new_int32(Number(n));case`u`:return e.Variant.new_uint32(Number(n));case`d`:return e.Variant.new_double(Number(n))}}function describeActions(e){return e?e.list_actions().sort((e,t)=>e.localeCompare(t)).map(t=>({name:t,enabled:e.get_action_enabled(t),parameterType:e.get_action_parameter_type(t)?.dup_string()??null,stateType:e.get_action_state_type(t)?.dup_string()??null})):[]}function activateAction(e,t,n){let r=e.get_action_parameter_type(t),i=n==null?null:buildVariant(r,n);e.activate_action(t,i)}function changeActionState(e,t,n){e.change_action_state(t,buildVariant(e.get_action_state_type(t),n))}const tn=new Map;function swapCss(e,r){let i=t.Display.get_default();if(!i)return!1;let o=tn.get(e);return o||(o=new n.CssProvider,n.StyleContext.add_provider_for_display(i,o,n.STYLE_PROVIDER_PRIORITY_USER+1),tn.set(e,o)),o.load_from_string(r),!0}function dumpCss(){return{providers:[...tn.keys()]}}const nn=`org.gjsify.Devtools`;function formatDbusErrorMessage(e,t){return`${e}: ${t}`}const rn={GetStatus:`read-only`,Screenshot:`read-only`,ScreenshotScaled:`read-only`,ListActions:`read-only`,ActivateAction:`mutating`,ChangeActionState:`mutating`,PresentWindow:`read-only`,ResizeWindow:`mutating`,ListToplevels:`read-only`,DumpTree:`read-only`,GetProperty:`read-only`,GetFocused:`read-only`,FindWidget:`read-only`,SendKey:`mutating`,ActivateWidget:`mutating`,DumpGSettings:`read-only`,DumpCss:`read-only`,SwapCss:`mutating`};function sanitizeInstanceId(e){let t=e.toLowerCase().replace(/[^a-z0-9]/g,``);return/^[a-z]/.test(t)?t:`i${t||`0`}`}function appIdToObjectPath(e){return`/${e.replace(/\./g,`/`).replace(/-/g,`_`)}`}function resolveBusAddress(e,t){let n=appIdToObjectPath(e),r=t&&t!=="default"?sanitizeInstanceId(t):`default`;return r==="default"?{busName:e,objectPath:`${n}/devtools`,instance:`default`}:{busName:`${e}.${r}`,objectPath:`${n}/${r}/devtools`,instance:r}}const X=`GJSIFY_DEVTOOLS_ADDRESS`;function isDevtoolsEnabledValue(e){if(e==null)return!1;let t=e.toLowerCase();return t!==``&&t!==`0`&&t!==`false`}function devtoolsAddressFilePath(e,t,n){let{busName:r}=resolveBusAddress(t,n);return`${e}/gjsify-devtools/${r}.address`}function buildDevtoolsIfaceXml(e=[]){return`<node>
|
|
11
|
+
<interface name="${nn}">
|
|
12
12
|
<method name="GetStatus">
|
|
13
13
|
<arg type="s" direction="out" name="status_json"/>
|
|
14
14
|
</method>
|
|
@@ -84,7 +84,7 @@ if(globalThis.__gjsifyBundleUrl??=import.meta.url,Symbol.dispose||(Symbol.dispos
|
|
|
84
84
|
</method>${e.length>0?`\n${e.join(`
|
|
85
85
|
`)}`:``}
|
|
86
86
|
</interface>
|
|
87
|
-
</node>`}function isWin32(){return e.DIR_SEPARATOR===92}function defaultListenAddress(){return isWin32()?`nonce-tcp:host=127.0.0.1`:`unix:tmpdir=${e.get_tmp_dir()}`}var DevtoolsPeerServerError=class extends Error{constructor(e,t,n,r){super(e),this.address=t,this.reason=n,this.name=`DevtoolsPeerServerError`,this.cause=r}};function isAddressInUse(t){return t instanceof e.Error&&t.matches(r.io_error_quark(),r.IOErrorEnum.ADDRESS_IN_USE)}function unixSocketPath(e){if(!e.startsWith(`unix:`))return null;for(let t of e.slice(5).split(`,`)){let e=t.indexOf(`=`);if(!(e<0||t.slice(0,e)!==`path`))try{return decodeURIComponent(t.slice(e+1))}catch{return null}}return null}function inspectExistingSocket(e){try{if((r.File.new_for_path(e).query_info(`unix::mode`,r.FileQueryInfoFlags.NONE,null).get_attribute_uint32(`unix::mode`)&61440)!=49152)return`not-a-socket`}catch{return`not-a-socket`}let t=new r.SocketClient;t.set_timeout(2);let n;try{n=t.connect(r.UnixSocketAddress.new(e),null)}catch{return`dead`}return n.close(null),`live`}function clearReclaimableSocket(t){let n=unixSocketPath(t);if(!n||!e.file_test(n,e.FileTest.EXISTS))return;let i=inspectExistingSocket(n);if(i===`live`)throw new DevtoolsPeerServerError(`cannot listen on ${t}: another process is already listening there. Stop it, or point ${Y} (or options.address) at a different socket — GJSIFY_DEVTOOLS_INSTANCE=<label> lets two devtools-enabled apps run side by side.`,t,`address-in-use`);if(i===`not-a-socket`)throw new DevtoolsPeerServerError(`cannot listen on ${t}: ${n} already exists and is not a socket, so it will NOT be removed. Point ${Y} (or options.address) at a free path.`,t,`occupied-by-other-file`);try{r.File.new_for_path(n).delete(null)}catch(e){throw new DevtoolsPeerServerError(`cannot listen on ${t}: ${n} is a socket nothing listens on, but removing it failed (${e}). Delete it by hand, or point ${Y} at a free path.`,t,`address-in-use`,e)}y.log(`[gjsify-devtools] reclaimed the stale socket ${n}: nothing was listening on it (an abnormal exit — Ctrl-C, SIGKILL, a crash — leaves the inode behind).`)}function flagsForAddress(e){return e.startsWith(`tcp:`)||e.startsWith(`nonce-tcp:`)?r.DBusServerFlags.NONE:r.DBusServerFlags.AUTHENTICATION_REQUIRE_SAME_USER}function startDevtoolsPeerServer(e,t,n){let i=n&&n!==``?n:defaultListenAddress();clearReclaimableSocket(i);let o;try{o=r.DBusServer.new_sync(i,flagsForAddress(i),r.dbus_generate_guid(),null,null)}catch(e){let t=isAddressInUse(e);throw new DevtoolsPeerServerError(t?`cannot listen on ${i}: the address is already in use (${e}). Stop whatever holds it, or point ${Y} (or options.address) at a different address.`:`cannot listen on ${i}: ${e}. Check the address form — \`unix:path=/tmp/app.sock\`, \`unix:tmpdir=/tmp\` or \`nonce-tcp:host=127.0.0.1\`.`,i,t?`address-in-use`:`listen-failed`,e)}let s=new Set;o.connect(`new-connection`,(n,r)=>(s.add(r),r.connect(`closed`,()=>{e.unexport(r),s.delete(r)}),e.export(r,t),!0)),o.start();let c=!1;return{address:o.get_client_address(),objectPath:t,get connectionCount(){return s.size},stop(){if(!c){c=!0,o.stop();for(let t of s)e.unexport(t),!t.is_closed()&&t.close(null,(e,t)=>{try{e.close_finish(t)}catch{}});s.clear()}}}}function writeDevtoolsAddressFile(t,n){try{if(e.mkdir_with_parents(e.path_get_dirname(t),448),!e.file_set_contents(t,`${n}\n`))return null}catch(e){return y.error(`[gjsify-devtools] could not publish the peer address to ${t}: ${e}`),null}try{r.File.new_for_path(t).set_attribute_uint32(`unix::mode`,384,r.FileQueryInfoFlags.NONE,null)}catch(e){y.error(`[gjsify-devtools] could not restrict ${t} to the current user: ${e}`)}return t}function removeDevtoolsAddressFile(e){try{r.File.new_for_path(e).delete(null)}catch{}}function defaultCaptureScale(e){let t=e.get_scale_factor?.();return typeof t==`number`&&t>0?t:1}function captureWidget(e,t={}){let r=e.get_native()?.get_renderer();if(!r)return{png:null,blocker:`no-renderer`};let o=e.get_width(),s=e.get_height();if(o<=0||s<=0)return{png:null,blocker:`zero-size`};let c=t.scale&&t.scale>0?t.scale:defaultCaptureScale(e),l=n.WidgetPaintable.new(e),u=n.Snapshot.new();c!==1&&u.scale(c,c),l.snapshot(u,o,s);let d=u.to_node();if(!d)return{png:null,blocker:`empty-snapshot`};let f=new i.Rect;f.init(0,0,o*c,s*c);let p=r.render_texture(d,f).save_to_png_bytes().get_data();return p?{png:new Uint8Array(p)}:{png:null,blocker:`empty-png`}}function captureWidgetPng(e,t={}){return captureWidget(e,t).png}function dumpGSettings(e){let t=r.SettingsSchemaSource.get_default()?.lookup(e,!0);if(!t)throw Error(formatDbusErrorMessage(`not-found`,`GSettings schema '${e}' is not installed`));let n=new r.Settings({settings_schema:t}),i={};for(let e of t.list_keys())i[e]=n.get_value(e).recursiveUnpack();return i}function parseWidgetPath(e){let t=e.split(`/`).filter(e=>e.length>0);if(t.length===0)return null;let n=t[0].match(/^toplevel:(\d+)$/);if(!n)return null;let r=[];for(let e of t.slice(1)){let t=e.match(/^child:(\d+)$/);if(!t)return null;r.push(Number(t[1]))}return{toplevel:Number(n[1]),children:r}}function buildWidgetPath(e,t){return[`toplevel:${e}`,...t.map(e=>`child:${e}`)].join(`/`)}function widgetType(e){return gtypeName(e)??`GtkWidget`}function gtypeName(e){let t=e;return typeof t?.$typeName==`string`&&t.$typeName.length>0?t.$typeName:t?.constructor?.$gtype?.name??null}function widgetIsA(e,t){let n=gtypeName(e);if(n===null||!t)return!1;if(n===t)return!0;let r=o.type_from_name(n),i=o.type_from_name(t);return!r||!i?!1:o.type_is_a(r,i)}function activateWidget(e){let t=e,n=typeof t.get_parent==`function`?t.get_parent():null,r=!!n&&widgetIsA(n,`GtkListBox`);if(!(r&&widgetIsA(e,`GtkListBoxRow`))&&typeof t.activate==`function`&&t.activate()===!0)return!0;if(r){let t=n,r=!1;return typeof t.select_row==`function`&&(t.select_row(e),r=!0),typeof t.emit==`function`&&(t.emit(`row-activated`,e),r=!0),r}return!1}function sendKeyToWidget(e,t,n){let r=e.observe_controllers(),i=!1;for(let e=0;e<r.get_n_items();e++){let o=r.get_item(e);widgetIsA(o,`GtkEventControllerKey`)&&(o.emit(`key-pressed`,t,0,n),i=!0)}return i}function nthChild(e,t){let n=e.get_first_child(),r=0;for(;n&&r<t;)n=n.get_next_sibling(),r++;return r===t?n:null}function listToplevels(){let e=n.Window.get_toplevels(),t=e.get_n_items(),r=[];for(let n=0;n<t;n++){let t=e.get_item(n);t&&r.push({path:`toplevel:${n}`,type:widgetType(t),title:t.get_title?.()??null,mapped:t.get_mapped(),focused:t.is_active??!1})}return r}function resolveWidgetPath(e){let t=parseWidgetPath(e);if(!t)return null;let r=n.Window.get_toplevels().get_item(t.toplevel);if(!r)return null;for(let e of t.children)if(r=nthChild(r,e),!r)return null;return r}function parseWidgetSelector(e){let t=e.indexOf(`:`),n=(t<0?e:e.slice(0,t)).trim(),r=(t<0?``:e.slice(t+1)).trim();return!n&&!r?null:{type:n,cssClass:r}}function findWidgetPath(e,t,n){let r={path:null};return walkForSelector(e,t,n,r)??r.path}function walkForSelector(e,t,n,r){if(!e.get_visible()||!e.get_mapped())return null;if(!t.cssClass||e.get_css_classes().includes(t.cssClass)){if(!t.type||widgetType(e)===t.type)return n;r.path===null&&widgetIsA(e,t.type)&&(r.path=n)}let i=e.get_first_child(),o=0;for(;i;){let e=walkForSelector(i,t,`${n}/child:${o}`,r);if(e)return e;i=i.get_next_sibling(),o++}return null}function geometryOf(e){if(!e.get_mapped())return;let t=e.get_allocation(),r=t.width+e.get_margin_start()+e.get_margin_end(),i=t.height+e.get_margin_top()+e.get_margin_bottom(),[o,s]=e.measure(n.Orientation.HORIZONTAL,-1),c=r>0?Math.max(r,o):-1,[l,u]=e.measure(n.Orientation.VERTICAL,c),d={width:r,height:i,widthRequest:[o,s],heightRequest:[l,u]};return(r<o||i<l)&&(d.short=!0),d}function dumpTree(e,t,n){let r={path:n,type:widgetType(e),name:e.get_name()||null,cssClasses:e.get_css_classes(),mapped:e.get_mapped(),visible:e.get_visible(),children:[]},i=geometryOf(e);if(i!==void 0&&(r.geometry=i),t<=0)return e.get_first_child()&&(r.truncated=!0),r;let o=e.get_first_child(),s=0;for(;o;)r.children.push(dumpTree(o,t-1,`${n}/child:${s}`)),o=o.get_next_sibling(),s++;return r}function jsonSafe(e){let t=typeof e;return e==null||t===`string`||t===`number`||t===`boolean`?e??null:`[${t}]`}function getWidgetProperty(e,t){let n=e,r=t.replace(/-/g,`_`),i=t.replace(/[-_]([a-z])/g,(e,t)=>t.toUpperCase());for(let e of[t,r,i])if(e in n)return jsonSafe(n[e])}function childIndex(e,t){let n=e.get_first_child(),r=0;for(;n;){if(n===t)return r;n=n.get_next_sibling(),r++}return-1}function pathOfWidget(e){let t=[],r=e,i=r.get_parent();for(;i;){let e=childIndex(i,r);if(e<0)return null;t.unshift(e),r=i,i=r.get_parent()}let o=n.Window.get_toplevels(),s=o.get_n_items();for(let e=0;e<s;e++)if(o.get_item(e)===r)return buildWidgetPath(e,t);return null}function isActiveWindowScope(e){return!e||e===`window`||e===`active`}function frameDelay(t){return new Promise(n=>{e.timeout_add(e.PRIORITY_DEFAULT,t,()=>(n(),e.SOURCE_REMOVE))})}async function captureWidgetWhenRenderable(e,t={},n=12,r=50){let i=null;for(let o=0;o<n;o++){let n=captureWidget(e,t);if(n.png)return{png:n.png,blocker:null};i=n.blocker,await frameDelay(r)}let o=captureWidget(e,t);return{png:o.png,blocker:o.png?null:o.blocker??i}}var DevtoolsService=class{constructor(e,t){this._app=e,this._options=t,this._exported=new Map,this._peer=null,this._addressFile=null,this._kinds=new Map,this._extensions=t.extend??[];for(let[e,t]of Object.entries(en))this._kinds.set(e,t);for(let e of this._extensions){for(let[t,n]of Object.entries(e.methodKinds))this._kinds.set(t,n);for(let[t,n]of Object.entries(e.handlers)){let e=n;this[t]=(...n)=>(this._guard(t),e(...n))}}}export(e,t){if(this._exported.has(e))return;let n=buildDevtoolsIfaceXml(this._extensions.flatMap(e=>e.methodsXml??[])),i=r.DBusExportedObject.wrapJSObject(n,this);i.export(e,t),this._exported.set(e,i)}unexport(e){if(e){this._exported.get(e)?.unexport(),this._exported.delete(e);return}for(let e of this._exported.values())e.unexport();this._exported.clear(),this._peer?.stop(),this._peer=null,this._addressFile&&=(removeDevtoolsAddressFile(this._addressFile),null)}attachPeerServer(e,t){this._peer=e,this._addressFile=t??null}get peerAddress(){return this._peer?.address??null}get addressFile(){return this._addressFile}GetStatus(){let e=this._app.get_active_window(),t={appId:this._app.get_application_id()??`unknown`,instance:this._options.instance??`default`,activeWindow:e?{id:e.get_name()||`window`,title:e.get_title()??``,mapped:e.get_mapped()}:null,toplevelCount:n.Window.get_toplevels().get_n_items(),focusedWidget:null,paused:this._isPaused()};for(let e of this._extensions){let n=e.contributeStatus?.();n&&Object.assign(t,n)}return JSON.stringify(t)}async ScreenshotAsync(t,n){try{let r=typeof t?.[0]==`string`?t[0]:``,i=await this._captureScopePng(r);n.return_value(new e.Variant(`(ay)`,[i]))}catch(e){n.return_dbus_error(`org.gjsify.Devtools.Error.Screenshot`,e instanceof Error?e.message:String(e))}}async ScreenshotScaledAsync(t,n){try{let r=typeof t?.[0]==`string`?t[0]:``,i=typeof t?.[1]==`number`?t[1]:0,o=await this._captureScopePng(r,i>0?{scale:i}:{});n.return_value(new e.Variant(`(ay)`,[o]))}catch(e){n.return_dbus_error(`org.gjsify.Devtools.Error.Screenshot`,e instanceof Error?e.message:String(e))}}async _captureScopePng(e,t={}){let r=this._resolveRootWidget(e);if(!r){if(isActiveWindowScope(e))return new Uint8Array;throw Error(formatDbusErrorMessage(`not-found`,`no widget at '${e}'`))}let i=captureWidget(r.widget,t);if(i.png)return i.png;let o=r.widget.get_root();o instanceof n.Window&&o.present();let s=await captureWidgetWhenRenderable(r.widget,t);return s.png?s.png:(y.warn(`[devtools] Screenshot('${e}') has no image: ${s.blocker??`unknown`} after 12 tries. Empty bytes follow.`),new Uint8Array)}ListActions(){let e={app:describeActions(this._actionGroup(`app`)),win:describeActions(this._actionGroup(`win`))};return JSON.stringify(e)}ActivateAction(e,t,n){this._guard(`ActivateAction`);let r=this._scope(e);activateAction(this._requireGroup(r,t),t,this._parseValue(n))}ChangeActionState(e,t,n){this._guard(`ChangeActionState`);let r=this._scope(e);changeActionState(this._requireGroup(r,t),t,this._parseValue(n))}PresentWindow(){this._app.get_active_window()?.present()}ResizeWindow(e,t){this._guard(`ResizeWindow`);let n=this._app.get_active_window();if(!n)throw Error(formatDbusErrorMessage(`unavailable`,`no active window to resize`));let r=Math.max(1,Math.round(e)),i=Math.max(1,Math.round(t));return n.is_maximized()&&n.unmaximize(),n.is_fullscreen()&&n.unfullscreen(),n.set_default_size(r,i),[r,i]}ListToplevels(){return JSON.stringify(listToplevels())}DumpTree(e,t){let n=this._resolveRootWidget(e);if(!n)throw Error(formatDbusErrorMessage(`not-found`,`no widget at '${e||`active window`}'`));return JSON.stringify(dumpTree(n.widget,t>0?t:40,n.path))}GetProperty(e,t){let n=this._resolveRootWidget(e);if(!n)throw Error(formatDbusErrorMessage(`not-found`,`no widget at '${e}'`));let r=getWidgetProperty(n.widget,t);if(r===void 0)throw Error(formatDbusErrorMessage(`not-found`,`widget has no property '${t}'`));return JSON.stringify(r)}GetFocused(){let e=this._app.get_active_window(),t=e?e.get_focus():null;return JSON.stringify(t?{path:pathOfWidget(t),name:t.get_name()||null,type:widgetType(t)}:null)}ActivateWidget(e){this._guard(`ActivateWidget`);let t=this._resolveRootWidget(e);if(!t)throw Error(formatDbusErrorMessage(`not-found`,`no widget at '${e}'`));return activateWidget(t.widget)}FindWidget(e){let t=parseWidgetSelector(e);if(!t)throw Error(formatDbusErrorMessage(`invalid-params`,`empty selector '${e}'`));let n=this._resolveRootWidget(``);return n?findWidgetPath(n.widget,t,n.path)??``:``}SendKey(e,t){this._guard(`SendKey`);let[r,i,o]=n.accelerator_parse(e);if(!r)throw Error(formatDbusErrorMessage(`invalid-params`,`cannot parse accelerator '${e}'`));let s;if(s=t?this._resolveRootWidget(t)?.widget??null:this._app.get_active_window()?.get_focus()??null,!s)throw Error(formatDbusErrorMessage(`not-found`,`no widget at '${t||`focus`}'`));return sendKeyToWidget(s,i,o??0)}DumpGSettings(e){return JSON.stringify(dumpGSettings(e))}DumpCss(){return JSON.stringify(dumpCss())}SwapCss(e,t){return this._guard(`SwapCss`),swapCss(e,t)}_resolveRootWidget(e){if(isActiveWindowScope(e)){let e=this._app.get_active_window();return e?{widget:e,path:pathOfWidget(e)??`toplevel:0`}:null}let t=resolveWidgetPath(e);return t?{widget:t,path:e}:null}_isPaused(){return this._options.paused?.()??!1}_guard(e){let t=this._kinds.get(e);if(!t)throw Error(formatDbusErrorMessage(`internal`,`unclassified devtools method '${e}'`));if(t===`mutating`&&this._isPaused())throw Error(formatDbusErrorMessage(`paused`,`${e} rejected — external control is paused. Read-only methods keep working.`))}_scope(e){return e===`app`?`app`:`win`}_actionGroup(e){if(e===`app`)return this._app;if(this._options.winActionGroup)return this._options.winActionGroup;let t=this._app.get_active_window();return t instanceof n.ApplicationWindow?t:null}_requireGroup(e,t){let n=this._actionGroup(e);if(!n)throw Error(formatDbusErrorMessage(`unavailable`,`no '${e}' action group`));if(!n.has_action(t))throw Error(formatDbusErrorMessage(`not-found`,`unknown action ${e}.${t}`));return n}_parseValue(e){if(!e||e===`null`)return null;try{return JSON.parse(e)}catch{throw Error(formatDbusErrorMessage(`invalid-params`,`value_json is not valid JSON: ${e}`))}}};const tn=`DBUS_SESSION_BUS_ADDRESS`,nn=new Set;function envEnabled(){return isDevtoolsEnabledValue(e.getenv(`GJSIFY_DEVTOOLS`))}function envValue(t){let n=e.getenv(t);return n&&n!==``?n:null}function sessionBusUsable(){if(!envValue(tn))return!1;try{return r.bus_get_sync(r.BusType.SESSION,null),!0}catch{return!1}}function chooseDevtoolsTransport(e){return e.requestedAddress?{kind:`peer`,address:e.requestedAddress,reason:`requested`}:e.hasAppConnection?{kind:`session-bus`}:e.sessionBusUsable?{kind:`unregistered`}:{kind:`peer`,address:null,reason:`no-session-bus`}}function describeMissingConnection(e,t){return e?t?`[gjsify-devtools] the session bus answers but this application is not registered on it yet — call installDevtools() from the GtkApplication "startup" handler (the bus connection and object path exist only after registration).`:`[gjsify-devtools] ${tn} is set (${e}) but no bus answers there — using the bus-less peer transport instead. On macOS this is the usual state: Homebrew's dbus listens on launchd, so the advertised address only works while that socket is live.`:`[gjsify-devtools] this machine has no session bus (${tn} is unset) — using the bus-less peer transport instead. Point the bridge at the address below, or set ${Y} on both the app and \`gjsify debug\` to pin it yourself.`}function installDevtools(e,t={}){if(!(t.enabled??envEnabled()))return null;let n=t.instance??envValue(`GJSIFY_DEVTOOLS_INSTANCE`)??void 0,r=new DevtoolsService(e,{...t,instance:n});try{return exportDevtools(e,r,t,n)}catch(e){return r.unexport(),y.error(`[gjsify-devtools] devtools stayed OFF, the app is unaffected — ${describeInstallFailure(e)}`),null}}function describeInstallFailure(e){return e instanceof DevtoolsPeerServerError||e instanceof Error?e.message:String(e)}function exportDevtools(t,n,r,i){let o=t.get_is_registered(),s=o?t.get_dbus_connection():null,c=o?t.get_dbus_object_path():null,l=envValue(tn),u=!!(s&&c),d=u||sessionBusUsable(),f=chooseDevtoolsTransport({requestedAddress:r.address??envValue(Y),hasAppConnection:u,sessionBusUsable:d}),p=t.get_application_id()??`unknown`,m=`${c??appIdToObjectPath(p)}/devtools`;if((f.kind===`unregistered`||f.kind===`peer`&&f.reason===`no-session-bus`)&&y.error(describeMissingConnection(l,d)),f.kind===`session-bus`&&s)n.export(s,m),y.log(`[gjsify-devtools] exported ${$t} at ${m} (dest ${p})`);else if(f.kind===`peer`){let r=startDevtoolsPeerServer(n,m,f.address??void 0),o=writeDevtoolsAddressFile(devtoolsAddressFilePath(e.get_user_runtime_dir(),p,i),r.address);n.attachPeerServer(r,o),y.log(`[gjsify-devtools] exported ${$t} at ${m} (peer address ${r.address}${o?`, published to ${o}`:``})`),o&&t.connect(`shutdown`,()=>removeDevtoolsAddressFile(o))}return nn.add(n),n}const rn=`&(?![a-zA-Z][a-zA-Z0-9]*;|#\\d+;|#x[0-9a-fA-F]+;)|<(?![a-zA-Z/!?])`;RegExp(rn),RegExp(rn,`g`);const an=[`AdwNavigationSplitView`,`GtkListBox`,`AdwOverlaySplitView`];function probeEnabled(){let t=e.getenv(`GJSIFY_STORYBOOK_PROBE`);if(t==null)return!1;let n=t.toLowerCase();return n!==``&&n!==`0`&&n!==`false`}const on=5e3;function exitIfNotDrained(){if(typeof process>`u`||typeof process.exit!=`function`)return;let e=setTimeout(()=>{y.error(`STORYBOOK PROBE: host still alive ${on}ms after quit(), exiting`),process.exit(process.exitCode??0)},on);typeof e==`object`&&typeof e.unref==`function`&&e.unref()}function collectTypes(e,t){t.add(e.type);for(let n of e.children)collectTypes(n,t)}function installStorybookProbe(t,n,r={}){let i=r.requireChrome??an,o=r.out??e.getenv(`GJSIFY_STORYBOOK_PROBE_OUT`)??void 0,s=r.timeoutMs??8e3,c=r.storyWidget??e.getenv(`GJSIFY_STORYBOOK_PROBE_STORY_WIDGET`)??void 0,l=n.controller.listStories(),u=[...new Set(l.map(e=>e.category))],d=r.story??e.getenv(`GJSIFY_STORYBOOK_PROBE_STORY`)??l[0]?.title,f=d?n.openStoryByTitle(d):!1,p=n.activeStory,m=new Set;collectTypes(dumpTree(n,60,`toplevel:0`),m);let h=i.filter(e=>!m.has(e)),g=new Set;p&&collectTypes(dumpTree(p,60,`story`),g);let _=g.size,v=c?g.has(c):null,finish=n=>{let r=JSON.stringify(n);if(n.ok)y.log(`STORYBOOK PROBE: PASS ${r}`);else{y.error(`STORYBOOK PROBE: FAIL ${r}`);try{typeof process<`u`&&(process.exitCode=1)}catch{}}if(o)try{e.file_set_contents(o,JSON.stringify(n,null,2))}catch{}t.quit(),exitIfNotDrained()},b=0;e.timeout_add(e.PRIORITY_DEFAULT,100,()=>{b+=100;let t=captureWidgetPng(n),r=n.get_width()>0&&n.get_height()>0;if(!t&&!(b>=s))return e.SOURCE_CONTINUE;let o=p?captureWidgetPng(p):null,m=l.length>=1&&u.length>=1&&h.length===0&&f&&p!=null&&_>1,y;return l.length<1?y=`no stories registered`:u.length<1?y=`no categories`:h.length>0?y=`chrome missing: ${h.join(`, `)}`:!f||p==null?y=`could not open story: ${d??`(none)`}`:_<=1&&(y=`opened story rendered an empty subtree`),m&&c&&!g.has(c)&&(m=!1,y=`story widget ${c} not found in the opened story subtree`),m&&r&&(!t||t.length===0)&&(m=!1,y=`window realized (${n.get_width()}x${n.get_height()}) but the GSK capture was empty`),finish({ok:m,reason:y,stories:l.length,categories:u,opened:f,activeStory:p?p.meta.title:null,requiredChrome:i,missingChrome:h,storySubtreeWidgets:_,storyWidgetPresent:v,windowRealized:r,windowPngBytes:t?t.length:0,storyPngBytes:o?o.length:0}),e.SOURCE_REMOVE})}const sn=[`blue`,`teal`,`green`,`yellow`,`orange`,`red`,`pink`,`purple`,`slate`],cn={blue:`#3584e4`,teal:`#2190a4`,green:`#3a944a`,yellow:`#c88800`,orange:`#ed5b00`,red:`#e62d42`,pink:`#d56199`,purple:`#9141ac`,slate:`#6f8396`};function parseHex(e){let t=/^#([0-9a-f]{6})$/i.exec(e.trim());if(!t)return null;let n=Number.parseInt(t[1],16);return[(n>>16&255)/255,(n>>8&255)/255,(n&255)/255]}function toHex(e,t,n){let channel=e=>Math.round(Math.min(1,Math.max(0,e))*255).toString(16).padStart(2,`0`);return`#${channel(e)}${channel(t)}${channel(n)}`}const toLinear=e=>e<=.04045?e/12.92:((e+.055)/1.055)**2.4,fromLinear=e=>e<=.0031308?e*12.92:1.055*e**(1/2.4)-.055;function linearToOklab(e,t,n){let r=Math.cbrt(.4122214708*e+.5363325363*t+.0514459929*n),i=Math.cbrt(.2119034982*e+.6806995451*t+.1073969566*n),o=Math.cbrt(.0883024619*e+.2817188376*t+.6299787005*n);return[.2104542553*r+.793617785*i-.0040720468*o,1.9779984951*r-2.428592205*i+.4505937099*o,.0259040371*r+.7827717662*i-.808675766*o]}function oklabToLinear(e,t,n){let r=(e+.3963377774*t+.2158037573*n)**3,i=(e-.1055613458*t-.0638541728*n)**3,o=(e-.0894841775*t-1.291485548*n)**3;return[4.0767416621*r-3.3077115913*i+.2309699292*o,-1.2684380046*r+2.6097574011*i-.3413193965*o,-.0041960863*r-.7034186147*i+1.707614701*o]}function adwaitaStandaloneColor(e,t){let n=parseHex(e);if(!n)return e;let[r,i,o]=linearToOklab(toLinear(n[0]),toLinear(n[1]),toLinear(n[2])),[s,c,l]=oklabToLinear(t?Math.max(r,.85):Math.min(r,.5),i,o);return toHex(fromLinear(s),fromLinear(c),fromLinear(l))}function adwaitaAccentBgColor(e){return cn[e]}function adwaitaAccentColor(e,t){return adwaitaStandaloneColor(cn[e],t)}const ln={system:`Follow system`,light:`Light`,dark:`Dark`},un={blue:`Blue`,teal:`Teal`,green:`Green`,yellow:`Yellow`,orange:`Orange`,red:`Red`,pink:`Pink`,purple:`Purple`,slate:`Slate`};var StorybookAppearance=class{constructor(){this._provider=null,this._applying=!1,this._styleManager=s.StyleManager.get_default(),this.settings=new StorybookSettings(()=>this._styleManager.get_dark()),this.settings.subscribe(e=>this._apply(e)),this._styleManager.connect(`notify::dark`,()=>this.settings.systemChanged()),this._apply(this.settings.state)}_apply(e){if(!this._applying){this._applying=!0;try{this._styleManager.set_color_scheme(e.colorScheme===`light`?s.ColorScheme.FORCE_LIGHT:e.colorScheme===`dark`?s.ColorScheme.FORCE_DARK:s.ColorScheme.DEFAULT),this._applyAccent(this.settings.resolvedAccent)}finally{this._applying=!1}}}_applyAccent(e){let r=t.Display.get_default();if(!r)return;if(!this._provider){if(!e)return;this._provider=new n.CssProvider,n.StyleContext.add_provider_for_display(r,this._provider,n.STYLE_PROVIDER_PRIORITY_APPLICATION)}if(!e){this._provider.load_from_string(``);return}let i=adwaitaAccentBgColor(e),o=adwaitaAccentColor(e,this.settings.resolvedDark);this._provider.load_from_string(`:root { --accent-bg-color: ${i}; --accent-color: ${o}; }`)}};function buildSwatch(e,t,r){let i=new n.CheckButton({tooltip_text:t,halign:n.Align.CENTER,valign:n.Align.CENTER,focus_on_click:!1});for(let t of e)i.add_css_class(t);return i.update_property([n.AccessibleProperty.LABEL],[t]),r&&i.set_group(r),i}function buildSwatchCard(e=!1){let t=new s.WrapBox({align:.5,child_spacing:8,line_spacing:8,margin_top:12,margin_bottom:12,margin_start:12,margin_end:12}),n=new s.Bin({child:t,hexpand:!0});return n.add_css_class(`card`),e&&n.add_css_class(`storybook-card-attached`),{card:n,row:t}}function buildAppearanceDialog(e){let t=e.settings,r=new s.PreferencesPage,i=new s.PreferencesGroup({title:`Style`}),{card:o,row:c}=buildSwatchCard(),l=null,u=new Map;for(let e of Xt){let n=buildSwatch([`storybook-swatch`,`storybook-scheme-swatch`,`storybook-scheme-${e}`],ln[e],l);l??=n,n.set_active(t.colorScheme===e),n.connect(`toggled`,()=>{n.get_active()&&(t.colorScheme=e)}),u.set(e,n),c.append(n)}i.add(o),r.add(i);let d=new s.PreferencesGroup({title:`Accent colour`});d.add_css_class(`storybook-attached-group`);let f=new s.SwitchRow({title:`Use a custom accent colour`,subtitle:`Off follows the desktop, which owns the accent`,active:t.accentMode===`custom`});d.add(f);let{card:p,row:m}=buildSwatchCard(!0),h=null,g=new Map;for(let e of sn){let r=buildSwatch([`storybook-swatch`],un[e],h);h??=r,r.set_active(t.accent===e);let i=new n.CssProvider;i.load_from_string(`checkbutton { background-color: ${adwaitaAccentBgColor(e)}; }`),r.get_style_context().add_provider(i,n.STYLE_PROVIDER_PRIORITY_APPLICATION),r.connect(`toggled`,()=>{r.get_active()&&(t.accent=e)}),g.set(e,r),m.append(r)}m.set_sensitive(t.accentMode===`custom`),f.connect(`notify::active`,()=>{t.accentMode=f.get_active()?`custom`:`system`}),d.add(p),r.add(d),t.subscribe(e=>{let t=u.get(e.colorScheme);t&&!t.get_active()&&t.set_active(!0);let n=g.get(e.accent);n&&!n.get_active()&&n.set_active(!0);let r=e.accentMode===`custom`;f.get_active()!==r&&f.set_active(r),m.set_sensitive(r)});let _=new s.PreferencesDialog({title:`Appearance`});return _.add(r),_}function adwControlWidgetFactory(){return{text(e,t){let n=new s.EntryRow({title:e});t&&n.set_tooltip_text(t);let r=null;return n.connect(`changed`,()=>r?.(n.get_text())),{node:n,get:()=>n.get_text(),set:e=>n.set_text(e),onChange:e=>{r=e}}},boolean(e,t){let n=new s.SwitchRow({title:e,subtitle:t??``}),r=null;return n.connect(`notify::active`,()=>r?.(n.get_active())),{node:n,get:()=>n.get_active(),set:e=>n.set_active(e),onChange:e=>{r=e}}},number(e){let t=s.SpinRow.new_with_range(e.min??0,e.max??100,e.step??1);t.set_title(e.label||e.name),e.description&&t.set_subtitle(e.description);let n=null;return t.connect(`changed`,()=>n?.(t.get_value())),{node:t,get:()=>t.get_value(),set:e=>t.set_value(e),onChange:e=>{n=e}}},range(e){return buildRangeWidget(e)},select(e){return buildSelectWidget(e)},color(e,t){return buildColorWidget(e,t)}}}function buildRangeWidget(e){let t=e.min??0,r=e.max??100,i=e.step??1,o=typeof e.min==`number`?e.min:0,s=Number.isInteger(i)&&Number.isInteger(o),c=new n.Adjustment({lower:t,upper:r,step_increment:i,value:o});c.step_increment=i;let l=new n.ListBoxRow({selectable:!1,activatable:!1});l.add_css_class(`story-range-row`);let u=new n.Box({orientation:n.Orientation.VERTICAL,spacing:6,margin_top:12,margin_bottom:12,margin_start:12,margin_end:12}),d=new n.Box({orientation:n.Orientation.HORIZONTAL,spacing:12}),f=new n.Label({label:e.label||e.name,halign:n.Align.START,hexpand:!0,ellipsize:3});f.add_css_class(`heading`);let formatValue=e=>s?String(Math.round(e)):e.toFixed(2),p=new n.Label({label:formatValue(o),halign:n.Align.END});if(p.add_css_class(`numeric`),p.add_css_class(`dim-label`),d.append(f),d.append(p),u.append(d),e.description){let t=new n.Label({label:e.description,halign:n.Align.START,xalign:0,wrap:!0,max_width_chars:32});t.add_css_class(`caption`),t.add_css_class(`dim-label`),u.append(t)}let m=new n.Scale({orientation:n.Orientation.HORIZONTAL,adjustment:c,draw_value:!1,hexpand:!0}),h=null,g=!1;return m.connect(`value-changed`,()=>{if(g)return;let e=m.get_value();if(s){let t=Math.round(e);if(t!==e){m.set_value(t);return}e=t}p.set_label(formatValue(e)),h?.(e)}),u.append(m),l.set_child(u),{node:l,get:()=>m.get_value(),set:e=>{g=!0,m.set_value(e),g=!1,p.set_label(formatValue(e))},onChange:e=>{h=e}}}function buildSelectWidget(e){let t=e.options??[],r=n.StringList.new(t.map(e=>e.label)),i=new s.ComboRow({title:e.label||e.name,subtitle:e.description??``,model:r}),o=null;return i.connect(`notify::selected`,()=>o?.(i.get_selected())),{node:i,get:()=>i.get_selected(),set:e=>i.set_selected(e),onChange:e=>{o=e}}}function buildColorWidget(e,r){let i=new s.ActionRow({title:e,subtitle:r??``}),o=new n.ColorDialogButton({dialog:new n.ColorDialog({title:e}),valign:n.Align.CENTER});i.add_suffix(o),i.set_activatable_widget(o);let channel=e=>Math.round(Math.max(0,Math.min(1,e))*255).toString(16).padStart(2,`0`),rgbaToHex=e=>`#${channel(e.red)}${channel(e.green)}${channel(e.blue)}`,c=null,l=!1;return o.connect(`notify::rgba`,()=>{l||c?.(rgbaToHex(o.get_rgba()))}),{node:i,get:()=>rgbaToHex(o.get_rgba()),set:e=>{let n=new t.RGBA;n.parse(e)&&(l=!0,o.set_rgba(n),l=!1)},onChange:e=>{c=e}}}var dn=class StorybookWindow extends s.ApplicationWindow{static{o.registerClass({GTypeName:`StorybookWindow`,Template:`<?xml version="1.0" encoding="UTF-8"?>
|
|
87
|
+
</node>`}function isWin32(){return e.DIR_SEPARATOR===92}function defaultListenAddress(){return isWin32()?`nonce-tcp:host=127.0.0.1`:`unix:tmpdir=${e.get_tmp_dir()}`}var DevtoolsPeerServerError=class extends Error{constructor(e,t,n,r){super(e),this.address=t,this.reason=n,this.name=`DevtoolsPeerServerError`,this.cause=r}};function isAddressInUse(t){return t instanceof e.Error&&t.matches(r.io_error_quark(),r.IOErrorEnum.ADDRESS_IN_USE)}function unixSocketPath(e){if(!e.startsWith(`unix:`))return null;for(let t of e.slice(5).split(`,`)){let e=t.indexOf(`=`);if(!(e<0||t.slice(0,e)!==`path`))try{return decodeURIComponent(t.slice(e+1))}catch{return null}}return null}function inspectExistingSocket(e){try{if((r.File.new_for_path(e).query_info(`unix::mode`,r.FileQueryInfoFlags.NONE,null).get_attribute_uint32(`unix::mode`)&61440)!=49152)return`not-a-socket`}catch{return`not-a-socket`}let t=new r.SocketClient;t.set_timeout(2);let n;try{n=t.connect(r.UnixSocketAddress.new(e),null)}catch{return`dead`}return n.close(null),`live`}function clearReclaimableSocket(t){let n=unixSocketPath(t);if(!n||!e.file_test(n,e.FileTest.EXISTS))return;let i=inspectExistingSocket(n);if(i===`live`)throw new DevtoolsPeerServerError(`cannot listen on ${t}: another process is already listening there. Stop it, or point ${X} (or options.address) at a different socket — GJSIFY_DEVTOOLS_INSTANCE=<label> lets two devtools-enabled apps run side by side.`,t,`address-in-use`);if(i===`not-a-socket`)throw new DevtoolsPeerServerError(`cannot listen on ${t}: ${n} already exists and is not a socket, so it will NOT be removed. Point ${X} (or options.address) at a free path.`,t,`occupied-by-other-file`);try{r.File.new_for_path(n).delete(null)}catch(e){throw new DevtoolsPeerServerError(`cannot listen on ${t}: ${n} is a socket nothing listens on, but removing it failed (${e}). Delete it by hand, or point ${X} at a free path.`,t,`address-in-use`,e)}y.log(`[gjsify-devtools] reclaimed the stale socket ${n}: nothing was listening on it (an abnormal exit — Ctrl-C, SIGKILL, a crash — leaves the inode behind).`)}function flagsForAddress(e){return e.startsWith(`tcp:`)||e.startsWith(`nonce-tcp:`)?r.DBusServerFlags.NONE:r.DBusServerFlags.AUTHENTICATION_REQUIRE_SAME_USER}function startDevtoolsPeerServer(e,t,n){let i=n&&n!==``?n:defaultListenAddress();clearReclaimableSocket(i);let o;try{o=r.DBusServer.new_sync(i,flagsForAddress(i),r.dbus_generate_guid(),null,null)}catch(e){let t=isAddressInUse(e);throw new DevtoolsPeerServerError(t?`cannot listen on ${i}: the address is already in use (${e}). Stop whatever holds it, or point ${X} (or options.address) at a different address.`:`cannot listen on ${i}: ${e}. Check the address form — \`unix:path=/tmp/app.sock\`, \`unix:tmpdir=/tmp\` or \`nonce-tcp:host=127.0.0.1\`.`,i,t?`address-in-use`:`listen-failed`,e)}let s=new Set;o.connect(`new-connection`,(n,r)=>(s.add(r),r.connect(`closed`,()=>{e.unexport(r),s.delete(r)}),e.export(r,t),!0)),o.start();let c=!1;return{address:o.get_client_address(),objectPath:t,get connectionCount(){return s.size},stop(){if(!c){c=!0,o.stop();for(let t of s)e.unexport(t),!t.is_closed()&&t.close(null,(e,t)=>{try{e.close_finish(t)}catch{}});s.clear()}}}}function writeDevtoolsAddressFile(t,n){try{if(e.mkdir_with_parents(e.path_get_dirname(t),448),!e.file_set_contents(t,`${n}\n`))return null}catch(e){return y.error(`[gjsify-devtools] could not publish the peer address to ${t}: ${e}`),null}try{r.File.new_for_path(t).set_attribute_uint32(`unix::mode`,384,r.FileQueryInfoFlags.NONE,null)}catch(e){y.error(`[gjsify-devtools] could not restrict ${t} to the current user: ${e}`)}return t}function removeDevtoolsAddressFile(e){try{r.File.new_for_path(e).delete(null)}catch{}}function defaultCaptureScale(e){let t=e.get_scale_factor?.();return typeof t==`number`&&t>0?t:1}function captureWidget(e,t={}){let r=e.get_native()?.get_renderer();if(!r)return{png:null,blocker:`no-renderer`};let o=e.get_width(),s=e.get_height();if(o<=0||s<=0)return{png:null,blocker:`zero-size`};let c=t.scale&&t.scale>0?t.scale:defaultCaptureScale(e),l=n.WidgetPaintable.new(e),u=n.Snapshot.new();c!==1&&u.scale(c,c),l.snapshot(u,o,s);let d=u.to_node();if(!d)return{png:null,blocker:`empty-snapshot`};let f=new i.Rect;f.init(0,0,o*c,s*c);let p=r.render_texture(d,f).save_to_png_bytes().get_data();return p?{png:new Uint8Array(p)}:{png:null,blocker:`empty-png`}}function captureWidgetPng(e,t={}){return captureWidget(e,t).png}function dumpGSettings(e){let t=r.SettingsSchemaSource.get_default()?.lookup(e,!0);if(!t)throw Error(formatDbusErrorMessage(`not-found`,`GSettings schema '${e}' is not installed`));let n=new r.Settings({settings_schema:t}),i={};for(let e of t.list_keys())i[e]=n.get_value(e).recursiveUnpack();return i}function parseWidgetPath(e){let t=e.split(`/`).filter(e=>e.length>0);if(t.length===0)return null;let n=t[0].match(/^toplevel:(\d+)$/);if(!n)return null;let r=[];for(let e of t.slice(1)){let t=e.match(/^child:(\d+)$/);if(!t)return null;r.push(Number(t[1]))}return{toplevel:Number(n[1]),children:r}}function buildWidgetPath(e,t){return[`toplevel:${e}`,...t.map(e=>`child:${e}`)].join(`/`)}function widgetType(e){return gtypeName(e)??`GtkWidget`}function gtypeName(e){let t=e;return typeof t?.$typeName==`string`&&t.$typeName.length>0?t.$typeName:t?.constructor?.$gtype?.name??null}function widgetIsA(e,t){let n=gtypeName(e);if(n===null||!t)return!1;if(n===t)return!0;let r=o.type_from_name(n),i=o.type_from_name(t);return!r||!i?!1:o.type_is_a(r,i)}function activateWidget(e){let t=e,n=typeof t.get_parent==`function`?t.get_parent():null,r=!!n&&widgetIsA(n,`GtkListBox`);if(!(r&&widgetIsA(e,`GtkListBoxRow`))&&typeof t.activate==`function`&&t.activate()===!0)return!0;if(r){let t=n,r=!1;return typeof t.select_row==`function`&&(t.select_row(e),r=!0),typeof t.emit==`function`&&(t.emit(`row-activated`,e),r=!0),r}return!1}function sendKeyToWidget(e,t,n){let r=e.observe_controllers(),i=!1;for(let e=0;e<r.get_n_items();e++){let o=r.get_item(e);widgetIsA(o,`GtkEventControllerKey`)&&(o.emit(`key-pressed`,t,0,n),i=!0)}return i}function nthChild(e,t){let n=e.get_first_child(),r=0;for(;n&&r<t;)n=n.get_next_sibling(),r++;return r===t?n:null}function listToplevels(){let e=n.Window.get_toplevels(),t=e.get_n_items(),r=[];for(let n=0;n<t;n++){let t=e.get_item(n);t&&r.push({path:`toplevel:${n}`,type:widgetType(t),title:t.get_title?.()??null,mapped:t.get_mapped(),focused:t.is_active??!1})}return r}function resolveWidgetPath(e){let t=parseWidgetPath(e);if(!t)return null;let r=n.Window.get_toplevels().get_item(t.toplevel);if(!r)return null;for(let e of t.children)if(r=nthChild(r,e),!r)return null;return r}function parseWidgetSelector(e){let t=e.indexOf(`:`),n=(t<0?e:e.slice(0,t)).trim(),r=(t<0?``:e.slice(t+1)).trim();return!n&&!r?null:{type:n,cssClass:r}}function findWidgetPath(e,t,n){let r={path:null};return walkForSelector(e,t,n,r)??r.path}function walkForSelector(e,t,n,r){if(!e.get_visible()||!e.get_mapped())return null;if(!t.cssClass||e.get_css_classes().includes(t.cssClass)){if(!t.type||widgetType(e)===t.type)return n;r.path===null&&widgetIsA(e,t.type)&&(r.path=n)}let i=e.get_first_child(),o=0;for(;i;){let e=walkForSelector(i,t,`${n}/child:${o}`,r);if(e)return e;i=i.get_next_sibling(),o++}return null}function geometryOf(e){if(!e.get_mapped())return;let t=e.get_allocation(),r=t.width+e.get_margin_start()+e.get_margin_end(),i=t.height+e.get_margin_top()+e.get_margin_bottom(),[o,s]=e.measure(n.Orientation.HORIZONTAL,-1),c=r>0?Math.max(r,o):-1,[l,u]=e.measure(n.Orientation.VERTICAL,c),d={width:r,height:i,widthRequest:[o,s],heightRequest:[l,u]};return(r<o||i<l)&&(d.short=!0),d}function dumpTree(e,t,n){let r={path:n,type:widgetType(e),name:e.get_name()||null,cssClasses:e.get_css_classes(),mapped:e.get_mapped(),visible:e.get_visible(),children:[]},i=geometryOf(e);if(i!==void 0&&(r.geometry=i),t<=0)return e.get_first_child()&&(r.truncated=!0),r;let o=e.get_first_child(),s=0;for(;o;)r.children.push(dumpTree(o,t-1,`${n}/child:${s}`)),o=o.get_next_sibling(),s++;return r}function jsonSafe(e){let t=typeof e;return e==null||t===`string`||t===`number`||t===`boolean`?e??null:`[${t}]`}function getWidgetProperty(e,t){let n=e,r=t.replace(/-/g,`_`),i=t.replace(/[-_]([a-z])/g,(e,t)=>t.toUpperCase());for(let e of[t,r,i])if(e in n)return jsonSafe(n[e])}function childIndex(e,t){let n=e.get_first_child(),r=0;for(;n;){if(n===t)return r;n=n.get_next_sibling(),r++}return-1}function pathOfWidget(e){let t=[],r=e,i=r.get_parent();for(;i;){let e=childIndex(i,r);if(e<0)return null;t.unshift(e),r=i,i=r.get_parent()}let o=n.Window.get_toplevels(),s=o.get_n_items();for(let e=0;e<s;e++)if(o.get_item(e)===r)return buildWidgetPath(e,t);return null}function isActiveWindowScope(e){return!e||e===`window`||e===`active`}function frameDelay(t){return new Promise(n=>{e.timeout_add(e.PRIORITY_DEFAULT,t,()=>(n(),e.SOURCE_REMOVE))})}async function captureWidgetWhenRenderable(e,t={},n=12,r=50){let i=null;for(let o=0;o<n;o++){let n=captureWidget(e,t);if(n.png)return{png:n.png,blocker:null};i=n.blocker,await frameDelay(r)}let o=captureWidget(e,t);return{png:o.png,blocker:o.png?null:o.blocker??i}}var DevtoolsService=class{constructor(e,t){this._app=e,this._options=t,this._exported=new Map,this._peer=null,this._addressFile=null,this._kinds=new Map,this._extensions=t.extend??[];for(let[e,t]of Object.entries(rn))this._kinds.set(e,t);for(let e of this._extensions){for(let[t,n]of Object.entries(e.methodKinds))this._kinds.set(t,n);for(let[t,n]of Object.entries(e.handlers)){let e=n;this[t]=(...n)=>(this._guard(t),e(...n))}}}export(e,t){if(this._exported.has(e))return;let n=buildDevtoolsIfaceXml(this._extensions.flatMap(e=>e.methodsXml??[])),i=r.DBusExportedObject.wrapJSObject(n,this);i.export(e,t),this._exported.set(e,i)}unexport(e){if(e){this._exported.get(e)?.unexport(),this._exported.delete(e);return}for(let e of this._exported.values())e.unexport();this._exported.clear(),this._peer?.stop(),this._peer=null,this._addressFile&&=(removeDevtoolsAddressFile(this._addressFile),null)}attachPeerServer(e,t){this._peer=e,this._addressFile=t??null}get peerAddress(){return this._peer?.address??null}get addressFile(){return this._addressFile}GetStatus(){let e=this._app.get_active_window(),t={appId:this._app.get_application_id()??`unknown`,instance:this._options.instance??`default`,activeWindow:e?{id:e.get_name()||`window`,title:e.get_title()??``,mapped:e.get_mapped()}:null,toplevelCount:n.Window.get_toplevels().get_n_items(),focusedWidget:null,paused:this._isPaused()};for(let e of this._extensions){let n=e.contributeStatus?.();n&&Object.assign(t,n)}return JSON.stringify(t)}async ScreenshotAsync(t,n){try{let r=typeof t?.[0]==`string`?t[0]:``,i=await this._captureScopePng(r);n.return_value(new e.Variant(`(ay)`,[i]))}catch(e){n.return_dbus_error(`org.gjsify.Devtools.Error.Screenshot`,e instanceof Error?e.message:String(e))}}async ScreenshotScaledAsync(t,n){try{let r=typeof t?.[0]==`string`?t[0]:``,i=typeof t?.[1]==`number`?t[1]:0,o=await this._captureScopePng(r,i>0?{scale:i}:{});n.return_value(new e.Variant(`(ay)`,[o]))}catch(e){n.return_dbus_error(`org.gjsify.Devtools.Error.Screenshot`,e instanceof Error?e.message:String(e))}}async _captureScopePng(e,t={}){let r=this._resolveRootWidget(e);if(!r){if(isActiveWindowScope(e))return new Uint8Array;throw Error(formatDbusErrorMessage(`not-found`,`no widget at '${e}'`))}let i=captureWidget(r.widget,t);if(i.png)return i.png;let o=r.widget.get_root();o instanceof n.Window&&o.present();let s=await captureWidgetWhenRenderable(r.widget,t);return s.png?s.png:(y.warn(`[devtools] Screenshot('${e}') has no image: ${s.blocker??`unknown`} after 12 tries. Empty bytes follow.`),new Uint8Array)}ListActions(){let e={app:describeActions(this._actionGroup(`app`)),win:describeActions(this._actionGroup(`win`))};return JSON.stringify(e)}ActivateAction(e,t,n){this._guard(`ActivateAction`);let r=this._scope(e);activateAction(this._requireGroup(r,t),t,this._parseValue(n))}ChangeActionState(e,t,n){this._guard(`ChangeActionState`);let r=this._scope(e);changeActionState(this._requireGroup(r,t),t,this._parseValue(n))}PresentWindow(){this._app.get_active_window()?.present()}ResizeWindow(e,t){this._guard(`ResizeWindow`);let n=this._app.get_active_window();if(!n)throw Error(formatDbusErrorMessage(`unavailable`,`no active window to resize`));let r=Math.max(1,Math.round(e)),i=Math.max(1,Math.round(t));return n.is_maximized()&&n.unmaximize(),n.is_fullscreen()&&n.unfullscreen(),n.set_default_size(r,i),[r,i]}ListToplevels(){return JSON.stringify(listToplevels())}DumpTree(e,t){let n=this._resolveRootWidget(e);if(!n)throw Error(formatDbusErrorMessage(`not-found`,`no widget at '${e||`active window`}'`));return JSON.stringify(dumpTree(n.widget,t>0?t:40,n.path))}GetProperty(e,t){let n=this._resolveRootWidget(e);if(!n)throw Error(formatDbusErrorMessage(`not-found`,`no widget at '${e}'`));let r=getWidgetProperty(n.widget,t);if(r===void 0)throw Error(formatDbusErrorMessage(`not-found`,`widget has no property '${t}'`));return JSON.stringify(r)}GetFocused(){let e=this._app.get_active_window(),t=e?e.get_focus():null;return JSON.stringify(t?{path:pathOfWidget(t),name:t.get_name()||null,type:widgetType(t)}:null)}ActivateWidget(e){this._guard(`ActivateWidget`);let t=this._resolveRootWidget(e);if(!t)throw Error(formatDbusErrorMessage(`not-found`,`no widget at '${e}'`));return activateWidget(t.widget)}FindWidget(e){let t=parseWidgetSelector(e);if(!t)throw Error(formatDbusErrorMessage(`invalid-params`,`empty selector '${e}'`));let n=this._resolveRootWidget(``);return n?findWidgetPath(n.widget,t,n.path)??``:``}SendKey(e,t){this._guard(`SendKey`);let[r,i,o]=n.accelerator_parse(e);if(!r)throw Error(formatDbusErrorMessage(`invalid-params`,`cannot parse accelerator '${e}'`));let s;if(s=t?this._resolveRootWidget(t)?.widget??null:this._app.get_active_window()?.get_focus()??null,!s)throw Error(formatDbusErrorMessage(`not-found`,`no widget at '${t||`focus`}'`));return sendKeyToWidget(s,i,o??0)}DumpGSettings(e){return JSON.stringify(dumpGSettings(e))}DumpCss(){return JSON.stringify(dumpCss())}SwapCss(e,t){return this._guard(`SwapCss`),swapCss(e,t)}_resolveRootWidget(e){if(isActiveWindowScope(e)){let e=this._app.get_active_window();return e?{widget:e,path:pathOfWidget(e)??`toplevel:0`}:null}let t=resolveWidgetPath(e);return t?{widget:t,path:e}:null}_isPaused(){return this._options.paused?.()??!1}_guard(e){let t=this._kinds.get(e);if(!t)throw Error(formatDbusErrorMessage(`internal`,`unclassified devtools method '${e}'`));if(t===`mutating`&&this._isPaused())throw Error(formatDbusErrorMessage(`paused`,`${e} rejected — external control is paused. Read-only methods keep working.`))}_scope(e){return e===`app`?`app`:`win`}_actionGroup(e){if(e===`app`)return this._app;if(this._options.winActionGroup)return this._options.winActionGroup;let t=this._app.get_active_window();return t instanceof n.ApplicationWindow?t:null}_requireGroup(e,t){let n=this._actionGroup(e);if(!n)throw Error(formatDbusErrorMessage(`unavailable`,`no '${e}' action group`));if(!n.has_action(t))throw Error(formatDbusErrorMessage(`not-found`,`unknown action ${e}.${t}`));return n}_parseValue(e){if(!e||e===`null`)return null;try{return JSON.parse(e)}catch{throw Error(formatDbusErrorMessage(`invalid-params`,`value_json is not valid JSON: ${e}`))}}};const an=`DBUS_SESSION_BUS_ADDRESS`,on=new Set;function envEnabled(){return isDevtoolsEnabledValue(e.getenv(`GJSIFY_DEVTOOLS`))}function envValue(t){let n=e.getenv(t);return n&&n!==``?n:null}function sessionBusUsable(){if(!envValue(an))return!1;try{return r.bus_get_sync(r.BusType.SESSION,null),!0}catch{return!1}}function chooseDevtoolsTransport(e){return e.requestedAddress?{kind:`peer`,address:e.requestedAddress,reason:`requested`}:e.hasAppConnection?{kind:`session-bus`}:e.sessionBusUsable?{kind:`unregistered`}:{kind:`peer`,address:null,reason:`no-session-bus`}}function describeMissingConnection(e,t){return e?t?`[gjsify-devtools] the session bus answers but this application is not registered on it yet — call installDevtools() from the GtkApplication "startup" handler (the bus connection and object path exist only after registration).`:`[gjsify-devtools] ${an} is set (${e}) but no bus answers there — using the bus-less peer transport instead. On macOS this is the usual state: Homebrew's dbus listens on launchd, so the advertised address only works while that socket is live.`:`[gjsify-devtools] this machine has no session bus (${an} is unset) — using the bus-less peer transport instead. Point the bridge at the address below, or set ${X} on both the app and \`gjsify debug\` to pin it yourself.`}function installDevtools(e,t={}){if(!(t.enabled??envEnabled()))return null;let n=t.instance??envValue(`GJSIFY_DEVTOOLS_INSTANCE`)??void 0,r=new DevtoolsService(e,{...t,instance:n});try{return exportDevtools(e,r,t,n)}catch(e){return r.unexport(),y.error(`[gjsify-devtools] devtools stayed OFF, the app is unaffected — ${describeInstallFailure(e)}`),null}}function describeInstallFailure(e){return e instanceof DevtoolsPeerServerError||e instanceof Error?e.message:String(e)}function exportDevtools(t,n,r,i){let o=t.get_is_registered(),s=o?t.get_dbus_connection():null,c=o?t.get_dbus_object_path():null,l=envValue(an),u=!!(s&&c),d=u||sessionBusUsable(),f=chooseDevtoolsTransport({requestedAddress:r.address??envValue(X),hasAppConnection:u,sessionBusUsable:d}),p=t.get_application_id()??`unknown`,m=`${c??appIdToObjectPath(p)}/devtools`;if((f.kind===`unregistered`||f.kind===`peer`&&f.reason===`no-session-bus`)&&y.error(describeMissingConnection(l,d)),f.kind===`session-bus`&&s)n.export(s,m),y.log(`[gjsify-devtools] exported ${nn} at ${m} (dest ${p})`);else if(f.kind===`peer`){let r=startDevtoolsPeerServer(n,m,f.address??void 0),o=writeDevtoolsAddressFile(devtoolsAddressFilePath(e.get_user_runtime_dir(),p,i),r.address);n.attachPeerServer(r,o),y.log(`[gjsify-devtools] exported ${nn} at ${m} (peer address ${r.address}${o?`, published to ${o}`:``})`),o&&t.connect(`shutdown`,()=>removeDevtoolsAddressFile(o))}return on.add(n),n}const sn=`&(?![a-zA-Z][a-zA-Z0-9]*;|#\\d+;|#x[0-9a-fA-F]+;)|<(?![a-zA-Z/!?])`;RegExp(sn),RegExp(sn,`g`);const cn=[`AdwNavigationSplitView`,`GtkListBox`,`AdwOverlaySplitView`];function probeEnabled(){let t=e.getenv(`GJSIFY_STORYBOOK_PROBE`);if(t==null)return!1;let n=t.toLowerCase();return n!==``&&n!==`0`&&n!==`false`}const ln=5e3;function exitIfNotDrained(){if(typeof process>`u`||typeof process.exit!=`function`)return;let e=setTimeout(()=>{y.error(`STORYBOOK PROBE: host still alive ${ln}ms after quit(), exiting`),process.exit(process.exitCode??0)},ln);typeof e==`object`&&typeof e.unref==`function`&&e.unref()}function collectTypes(e,t){t.add(e.type);for(let n of e.children)collectTypes(n,t)}function installStorybookProbe(t,n,r={}){let i=r.requireChrome??cn,o=r.out??e.getenv(`GJSIFY_STORYBOOK_PROBE_OUT`)??void 0,s=r.timeoutMs??8e3,c=r.storyWidget??e.getenv(`GJSIFY_STORYBOOK_PROBE_STORY_WIDGET`)??void 0,l=n.controller.listStories(),u=[...new Set(l.map(e=>e.category))],d=r.story??e.getenv(`GJSIFY_STORYBOOK_PROBE_STORY`)??l[0]?.title,f=d?n.openStoryByTitle(d):!1,p=n.activeStory,m=new Set;collectTypes(dumpTree(n,60,`toplevel:0`),m);let h=i.filter(e=>!m.has(e)),g=new Set;p&&collectTypes(dumpTree(p,60,`story`),g);let _=g.size,v=c?g.has(c):null,finish=n=>{let r=JSON.stringify(n);if(n.ok)y.log(`STORYBOOK PROBE: PASS ${r}`);else{y.error(`STORYBOOK PROBE: FAIL ${r}`);try{typeof process<`u`&&(process.exitCode=1)}catch{}}if(o)try{e.file_set_contents(o,JSON.stringify(n,null,2))}catch{}t.quit(),exitIfNotDrained()},b=0;e.timeout_add(e.PRIORITY_DEFAULT,100,()=>{b+=100;let t=captureWidgetPng(n),r=n.get_width()>0&&n.get_height()>0;if(!t&&!(b>=s))return e.SOURCE_CONTINUE;let o=p?captureWidgetPng(p):null,m=l.length>=1&&u.length>=1&&h.length===0&&f&&p!=null&&_>1,y;return l.length<1?y=`no stories registered`:u.length<1?y=`no categories`:h.length>0?y=`chrome missing: ${h.join(`, `)}`:!f||p==null?y=`could not open story: ${d??`(none)`}`:_<=1&&(y=`opened story rendered an empty subtree`),m&&c&&!g.has(c)&&(m=!1,y=`story widget ${c} not found in the opened story subtree`),m&&r&&(!t||t.length===0)&&(m=!1,y=`window realized (${n.get_width()}x${n.get_height()}) but the GSK capture was empty`),finish({ok:m,reason:y,stories:l.length,categories:u,opened:f,activeStory:p?p.meta.title:null,requiredChrome:i,missingChrome:h,storySubtreeWidgets:_,storyWidgetPresent:v,windowRealized:r,windowPngBytes:t?t.length:0,storyPngBytes:o?o.length:0}),e.SOURCE_REMOVE})}const un=[`blue`,`teal`,`green`,`yellow`,`orange`,`red`,`pink`,`purple`,`slate`],dn={blue:`#3584e4`,teal:`#2190a4`,green:`#3a944a`,yellow:`#c88800`,orange:`#ed5b00`,red:`#e62d42`,pink:`#d56199`,purple:`#9141ac`,slate:`#6f8396`};function parseHex(e){let t=/^#([0-9a-f]{6})$/i.exec(e.trim());if(!t)return null;let n=Number.parseInt(t[1],16);return[(n>>16&255)/255,(n>>8&255)/255,(n&255)/255]}function toHex(e,t,n){let channel=e=>Math.round(Math.min(1,Math.max(0,e))*255).toString(16).padStart(2,`0`);return`#${channel(e)}${channel(t)}${channel(n)}`}const toLinear=e=>e<=.04045?e/12.92:((e+.055)/1.055)**2.4,fromLinear=e=>e<=.0031308?e*12.92:1.055*e**(1/2.4)-.055;function linearToOklab(e,t,n){let r=Math.cbrt(.4122214708*e+.5363325363*t+.0514459929*n),i=Math.cbrt(.2119034982*e+.6806995451*t+.1073969566*n),o=Math.cbrt(.0883024619*e+.2817188376*t+.6299787005*n);return[.2104542553*r+.793617785*i-.0040720468*o,1.9779984951*r-2.428592205*i+.4505937099*o,.0259040371*r+.7827717662*i-.808675766*o]}function oklabToLinear(e,t,n){let r=(e+.3963377774*t+.2158037573*n)**3,i=(e-.1055613458*t-.0638541728*n)**3,o=(e-.0894841775*t-1.291485548*n)**3;return[4.0767416621*r-3.3077115913*i+.2309699292*o,-1.2684380046*r+2.6097574011*i-.3413193965*o,-.0041960863*r-.7034186147*i+1.707614701*o]}function adwaitaStandaloneColor(e,t){let n=parseHex(e);if(!n)return e;let[r,i,o]=linearToOklab(toLinear(n[0]),toLinear(n[1]),toLinear(n[2])),[s,c,l]=oklabToLinear(t?Math.max(r,.85):Math.min(r,.5),i,o);return toHex(fromLinear(s),fromLinear(c),fromLinear(l))}function adwaitaAccentBgColor(e){return dn[e]}function adwaitaAccentColor(e,t){return adwaitaStandaloneColor(dn[e],t)}const fn={system:`Follow system`,light:`Light`,dark:`Dark`},pn={blue:`Blue`,teal:`Teal`,green:`Green`,yellow:`Yellow`,orange:`Orange`,red:`Red`,pink:`Pink`,purple:`Purple`,slate:`Slate`};var StorybookAppearance=class{constructor(){this._provider=null,this._applying=!1,this._styleManager=s.StyleManager.get_default(),this.settings=new StorybookSettings(()=>this._styleManager.get_dark()),this.settings.subscribe(e=>this._apply(e)),this._styleManager.connect(`notify::dark`,()=>this.settings.systemChanged()),this._apply(this.settings.state)}_apply(e){if(!this._applying){this._applying=!0;try{this._styleManager.set_color_scheme(e.colorScheme===`light`?s.ColorScheme.FORCE_LIGHT:e.colorScheme===`dark`?s.ColorScheme.FORCE_DARK:s.ColorScheme.DEFAULT),this._applyAccent(this.settings.resolvedAccent)}finally{this._applying=!1}}}_applyAccent(e){let r=t.Display.get_default();if(!r)return;if(!this._provider){if(!e)return;this._provider=new n.CssProvider,n.StyleContext.add_provider_for_display(r,this._provider,n.STYLE_PROVIDER_PRIORITY_APPLICATION)}if(!e){this._provider.load_from_string(``);return}let i=adwaitaAccentBgColor(e),o=adwaitaAccentColor(e,this.settings.resolvedDark);this._provider.load_from_string(`:root { --accent-bg-color: ${i}; --accent-color: ${o}; }`)}};function buildSwatch(e,t,r){let i=new n.CheckButton({tooltip_text:t,halign:n.Align.CENTER,valign:n.Align.CENTER,focus_on_click:!1});for(let t of e)i.add_css_class(t);return i.update_property([n.AccessibleProperty.LABEL],[t]),r&&i.set_group(r),i}function buildSwatchCard(e=!1){let t=new s.WrapBox({align:.5,child_spacing:8,line_spacing:8,margin_top:12,margin_bottom:12,margin_start:12,margin_end:12}),n=new s.Bin({child:t,hexpand:!0});return n.add_css_class(`card`),e&&n.add_css_class(`storybook-card-attached`),{card:n,row:t}}function buildAppearanceDialog(e){let t=e.settings,r=new s.PreferencesPage,i=new s.PreferencesGroup({title:`Style`}),{card:o,row:c}=buildSwatchCard(),l=null,u=new Map;for(let e of $t){let n=buildSwatch([`storybook-swatch`,`storybook-scheme-swatch`,`storybook-scheme-${e}`],fn[e],l);l??=n,n.set_active(t.colorScheme===e),n.connect(`toggled`,()=>{n.get_active()&&(t.colorScheme=e)}),u.set(e,n),c.append(n)}i.add(o),r.add(i);let d=new s.PreferencesGroup({title:`Accent colour`});d.add_css_class(`storybook-attached-group`);let f=new s.SwitchRow({title:`Use a custom accent colour`,subtitle:`Off follows the desktop, which owns the accent`,active:t.accentMode===`custom`});d.add(f);let{card:p,row:m}=buildSwatchCard(!0),h=null,g=new Map;for(let e of un){let r=buildSwatch([`storybook-swatch`],pn[e],h);h??=r,r.set_active(t.accent===e);let i=new n.CssProvider;i.load_from_string(`checkbutton { background-color: ${adwaitaAccentBgColor(e)}; }`),r.get_style_context().add_provider(i,n.STYLE_PROVIDER_PRIORITY_APPLICATION),r.connect(`toggled`,()=>{r.get_active()&&(t.accent=e)}),g.set(e,r),m.append(r)}m.set_sensitive(t.accentMode===`custom`),f.connect(`notify::active`,()=>{t.accentMode=f.get_active()?`custom`:`system`}),d.add(p),r.add(d),t.subscribe(e=>{let t=u.get(e.colorScheme);t&&!t.get_active()&&t.set_active(!0);let n=g.get(e.accent);n&&!n.get_active()&&n.set_active(!0);let r=e.accentMode===`custom`;f.get_active()!==r&&f.set_active(r),m.set_sensitive(r)});let _=new s.PreferencesDialog({title:`Appearance`});return _.add(r),_}function adwControlWidgetFactory(){return{text(e,t){let n=new s.EntryRow({title:e});t&&n.set_tooltip_text(t);let r=null;return n.connect(`changed`,()=>r?.(n.get_text())),{node:n,get:()=>n.get_text(),set:e=>n.set_text(e),onChange:e=>{r=e}}},boolean(e,t){let n=new s.SwitchRow({title:e,subtitle:t??``}),r=null;return n.connect(`notify::active`,()=>r?.(n.get_active())),{node:n,get:()=>n.get_active(),set:e=>n.set_active(e),onChange:e=>{r=e}}},number(e){let t=s.SpinRow.new_with_range(e.min??0,e.max??100,e.step??1);t.set_title(e.label||e.name),e.description&&t.set_subtitle(e.description);let n=null;return t.connect(`changed`,()=>n?.(t.get_value())),{node:t,get:()=>t.get_value(),set:e=>t.set_value(e),onChange:e=>{n=e}}},range(e){return buildRangeWidget(e)},select(e){return buildSelectWidget(e)},color(e,t){return buildColorWidget(e,t)}}}function buildRangeWidget(e){let t=e.min??0,r=e.max??100,i=e.step??1,o=typeof e.min==`number`?e.min:0,s=Number.isInteger(i)&&Number.isInteger(o),c=new n.Adjustment({lower:t,upper:r,step_increment:i,value:o});c.step_increment=i;let l=new n.ListBoxRow({selectable:!1,activatable:!1});l.add_css_class(`story-range-row`);let u=new n.Box({orientation:n.Orientation.VERTICAL,spacing:6,margin_top:12,margin_bottom:12,margin_start:12,margin_end:12}),d=new n.Box({orientation:n.Orientation.HORIZONTAL,spacing:12}),f=new n.Label({label:e.label||e.name,halign:n.Align.START,hexpand:!0,ellipsize:3});f.add_css_class(`heading`);let formatValue=e=>s?String(Math.round(e)):e.toFixed(2),p=new n.Label({label:formatValue(o),halign:n.Align.END});if(p.add_css_class(`numeric`),p.add_css_class(`dim-label`),d.append(f),d.append(p),u.append(d),e.description){let t=new n.Label({label:e.description,halign:n.Align.START,xalign:0,wrap:!0,max_width_chars:32});t.add_css_class(`caption`),t.add_css_class(`dim-label`),u.append(t)}let m=new n.Scale({orientation:n.Orientation.HORIZONTAL,adjustment:c,draw_value:!1,hexpand:!0}),h=null,g=!1;return m.connect(`value-changed`,()=>{if(g)return;let e=m.get_value();if(s){let t=Math.round(e);if(t!==e){m.set_value(t);return}e=t}p.set_label(formatValue(e)),h?.(e)}),u.append(m),l.set_child(u),{node:l,get:()=>m.get_value(),set:e=>{g=!0,m.set_value(e),g=!1,p.set_label(formatValue(e))},onChange:e=>{h=e}}}function buildSelectWidget(e){let t=e.options??[],r=n.StringList.new(t.map(e=>e.label)),i=new s.ComboRow({title:e.label||e.name,subtitle:e.description??``,model:r}),o=null;return i.connect(`notify::selected`,()=>o?.(i.get_selected())),{node:i,get:()=>i.get_selected(),set:e=>i.set_selected(e),onChange:e=>{o=e}}}function buildColorWidget(e,r){let i=new s.ActionRow({title:e,subtitle:r??``}),o=new n.ColorDialogButton({dialog:new n.ColorDialog({title:e}),valign:n.Align.CENTER});i.add_suffix(o),i.set_activatable_widget(o);let channel=e=>Math.round(Math.max(0,Math.min(1,e))*255).toString(16).padStart(2,`0`),rgbaToHex=e=>`#${channel(e.red)}${channel(e.green)}${channel(e.blue)}`,c=null,l=!1;return o.connect(`notify::rgba`,()=>{l||c?.(rgbaToHex(o.get_rgba()))}),{node:i,get:()=>rgbaToHex(o.get_rgba()),set:e=>{let n=new t.RGBA;n.parse(e)&&(l=!0,o.set_rgba(n),l=!1)},onChange:e=>{c=e}}}var mn=class StorybookWindow extends s.ApplicationWindow{static{o.registerClass({GTypeName:`StorybookWindow`,Template:`<?xml version="1.0" encoding="UTF-8"?>
|
|
88
88
|
<!--
|
|
89
89
|
DO NOT EDIT!
|
|
90
90
|
This file was @generated by blueprint-compiler. Instead, edit the
|
|
@@ -224,7 +224,7 @@ corresponding .blp file and regenerate this file with blueprint-compiler.
|
|
|
224
224
|
</child>
|
|
225
225
|
</template>
|
|
226
226
|
</interface>
|
|
227
|
-
`,InternalChildren:[`sidebar_list`,`content_area`,`control_panel`,`preview_title`,`show_controls_button`,`controls_split_view`,`main_split_view`]},StorybookWindow)}constructor(e){super(e),this._appearance=new StorybookAppearance,this._controlRows=[],this._rowByTitle=new Map,this._onSelect=null,this._suppressSelect=!1,this._controller=new StorybookController(this,e=>this._buildControls(e))}_onRowSelected(e,t){if(this._suppressSelect||!t)return;let n=t;n.storyWidget&&this._onSelect?.(n.storyWidget)}get controller(){return this._controller}_buildControls(e){let t=e.meta.controls;if(!Array.isArray(t))return[];let n=adwControlWidgetFactory(),r=[];for(let i of t){if(!i?.name||!i?.type){y.warn(`Invalid control configuration:`,i);continue}let t=bindControl(e,i,n);t&&r.push(t)}return r}_onAppearanceClicked(){buildAppearanceDialog(this._appearance).present(this)}_onToggleControls(e){this._controls_split_view.set_show_sidebar(e.get_active())}populateSidebar(e){this._controller.mount(e,!0)}renderSidebar(e,t){this._onSelect=t,this._suppressSelect=!0,this._clearSidebar(),this._rowByTitle.clear();for(let t of e){this._addCategoryToSidebar(t.category);for(let{instance:e,name:n}of t.stories)this._addStoryToSidebar(e,n)}this._suppressSelect=!1}markSelected(e){let t=this._rowByTitle.get(e);t&&this._sidebar_list.get_selected_row()!==t&&(this._suppressSelect=!0,this._sidebar_list.select_row(t),this._suppressSelect=!1)}setPreviewTitle(e){this._preview_title.set_title(e)}showPreview(e){this._content_area.set_child(e),this._main_split_view.get_collapsed()&&this._main_split_view.set_show_content(!0)}renderControls(e){this._clearControlPanel();for(let t of e){let e=t.view;e instanceof s.PreferencesRow&&e.set_use_markup(!1),this._control_panel.add(e),this._controlRows.push(e)}this._show_controls_button.set_active(!0)}_clearSidebar(){let e=this._sidebar_list.get_first_child();for(;e;){let t=e.get_next_sibling();e.unparent(),e=t}}_addCategoryToSidebar(e){let t=new n.ListBoxRow({selectable:!1}),r=new n.Label({label:e,halign:n.Align.START,margin_top:10,margin_bottom:4,margin_start:12,margin_end:12});r.add_css_class(`heading`),r.add_css_class(`dim-label`),t.set_child(r),this._sidebar_list.append(t)}_addStoryToSidebar(e,t){let r=new n.ListBoxRow,i=new n.Label({label:t||`Unnamed Story`,halign:n.Align.START,margin_start:20,margin_top:6,margin_bottom:6});r.set_child(i),this._sidebar_list.append(r),r.storyWidget=e,this._rowByTitle.set(e.meta.title,r)}_clearControlPanel(){for(let e of this._controlRows)this._control_panel.remove(e);this._controlRows=[]}get activeStory(){return this._controller.activeStory}openStoryByTitle(e){return this._controller.openStoryByTitle(e)}setActiveArg(e,t){return this._controller.setActiveArg(e,t)}};o.type_ensure(
|
|
227
|
+
`,InternalChildren:[`sidebar_list`,`content_area`,`control_panel`,`preview_title`,`show_controls_button`,`controls_split_view`,`main_split_view`]},StorybookWindow)}constructor(e){super(e),this._appearance=new StorybookAppearance,this._controlRows=[],this._rowByTitle=new Map,this._onSelect=null,this._suppressSelect=!1,this._controller=new StorybookController(this,e=>this._buildControls(e))}_onRowSelected(e,t){if(this._suppressSelect||!t)return;let n=t;n.storyWidget&&this._onSelect?.(n.storyWidget)}get controller(){return this._controller}_buildControls(e){let t=e.meta.controls;if(!Array.isArray(t))return[];let n=adwControlWidgetFactory(),r=[];for(let i of t){if(!i?.name||!i?.type){y.warn(`Invalid control configuration:`,i);continue}let t=bindControl(e,i,n);t&&r.push(t)}return r}_onAppearanceClicked(){buildAppearanceDialog(this._appearance).present(this)}_onToggleControls(e){this._controls_split_view.set_show_sidebar(e.get_active())}populateSidebar(e){this._controller.mount(e,!0)}renderSidebar(e,t){this._onSelect=t,this._suppressSelect=!0,this._clearSidebar(),this._rowByTitle.clear();for(let t of e){this._addCategoryToSidebar(t.category);for(let{instance:e,name:n}of t.stories)this._addStoryToSidebar(e,n)}this._suppressSelect=!1}markSelected(e){let t=this._rowByTitle.get(e);t&&this._sidebar_list.get_selected_row()!==t&&(this._suppressSelect=!0,this._sidebar_list.select_row(t),this._suppressSelect=!1)}setPreviewTitle(e){this._preview_title.set_title(e)}showPreview(e){this._content_area.set_child(e),this._main_split_view.get_collapsed()&&this._main_split_view.set_show_content(!0)}renderControls(e){this._clearControlPanel();for(let t of e){let e=t.view;e instanceof s.PreferencesRow&&e.set_use_markup(!1),this._control_panel.add(e),this._controlRows.push(e)}this._show_controls_button.set_active(!0)}_clearSidebar(){let e=this._sidebar_list.get_first_child();for(;e;){let t=e.get_next_sibling();e.unparent(),e=t}}_addCategoryToSidebar(e){let t=new n.ListBoxRow({selectable:!1}),r=new n.Label({label:e,halign:n.Align.START,margin_top:10,margin_bottom:4,margin_start:12,margin_end:12});r.add_css_class(`heading`),r.add_css_class(`dim-label`),t.set_child(r),this._sidebar_list.append(t)}_addStoryToSidebar(e,t){let r=new n.ListBoxRow,i=new n.Label({label:t||`Unnamed Story`,halign:n.Align.START,margin_start:20,margin_top:6,margin_bottom:6});r.set_child(i),this._sidebar_list.append(r),r.storyWidget=e,this._rowByTitle.set(e.meta.title,r)}_clearControlPanel(){for(let e of this._controlRows)this._control_panel.remove(e);this._controlRows=[]}get activeStory(){return this._controller.activeStory}openStoryByTitle(e){return this._controller.openStoryByTitle(e)}setActiveArg(e,t){return this._controller.setActiveArg(e,t)}};o.type_ensure(mn.$gtype);var hn=class StorybookApplication extends s.Application{static{o.registerClass({GTypeName:`StorybookApplication`},StorybookApplication)}constructor(e){super({application_id:e.applicationId,flags:r.ApplicationFlags.DEFAULT_FLAGS}),this._window=null,this._options=e,this.connect(`startup`,()=>this._initStyles()),this.connect(`activate`,()=>this._onActivate())}_initStyles(){let e=new n.CssProvider;e.load_from_string(`
|
|
228
228
|
/* Appearance dialog — round swatches with a selection ring, the shape GNOME's own
|
|
229
229
|
appearance switcher uses. Adapted from Learn6502's theme-mode-selector.css and
|
|
230
230
|
accent-color-selector.css (JumpLink/easy6502, MIT).
|
|
@@ -344,10 +344,10 @@ corresponding .blp file and regenerate this file with blueprint-compiler.
|
|
|
344
344
|
.story-stage {
|
|
345
345
|
padding: 18px;
|
|
346
346
|
}
|
|
347
|
-
\n${this._options.css??``}`);let r=t.Display.get_default();if(!r){y.error(`No display found`);return}n.StyleContext.add_provider_for_display(r,e,n.STYLE_PROVIDER_PRIORITY_APPLICATION)}_onActivate(){if(!this._window){this._window=new
|
|
348
|
-
`||n===` `||n===` `){if(r)continue;e+=` `,r=!0;continue}e+=n,r=!1}n+=escapeMarkup(e)}}return n}function parseDescription(e,t,n){let r=new Map,bucketFor=(e,t)=>{if(localeScore(n,e)===0&&e!==`C`)return null;let i=r.get(e);return i===void 0&&(i=[],r.set(e,i),t!==void 0&&i.push(`<${t}>\n`)),i};for(let n of childElements(e,t.start,t.end))if(n.name===`p`)bucketFor(lang(n))?.push(`<p>${inlineMarkup(e,n)}</p>\n`);else if(n.name===`ul`||n.name===`ol`){for(let e of r.values())e.push(`<${n.name}>\n`);for(let t of childElements(e,n.start,n.end))t.name===`li`&&bucketFor(lang(t),n.name)?.push(`<li>${inlineMarkup(e,t)}</li>\n`);for(let e of r.values())e.push(`</${n.name}>\n`)}let i=r.get(`C`),o=0;for(let[e,t]of r){let r=localeScore(n,e);r>o&&(o=r,i=t)}return i===void 0?null:i.join(``)}function parseAppdata(e,t={}){let n=t.locale??`C`,r=scanXml(e),i=childElements(r,0,r.length).find(e=>e.name===`component`||e.name===`application`);if(i===void 0)return{...pn};let o={...pn},s={value:null,score:0},c={value:null,score:0},l=[],u=null;for(let e of childElements(r,i.start,i.end))switch(e.name){case`id`:o.applicationId===null&&(o.applicationId=elementText(r,e));break;case`name`:considerTranslatable(s,e,elementText(r,e),localeScore(n,lang(e)));break;case`developer`:for(let t of childElements(r,e.start,e.end)){if(t.name!==`name`)continue;let e=localeScore(n,lang(t))+1024;e>c.score&&(lang(t)===`C`||e>1024)&&(c.score=e,c.value=elementText(r,t))}break;case`developer_name`:considerTranslatable(c,e,elementText(r,e),localeScore(n,lang(e)));break;case`url`:{let t=elementText(r,e);e.attributes.type===`homepage`?o.website=t:e.attributes.type===`bugtracker`?o.issueUrl=t:e.attributes.type===`help`&&(o.supportUrl=t);break}case`launchable`:e.attributes.type===`desktop-id`&&l.push(elementText(r,e));break;case`project_license`:o.license===null&&(o.license=elementText(r,e));break;case`releases`:u===null&&(u=e);break;default:break}if(o.applicationName=s.value,o.developerName=c.value,u!==null){let e=childElements(r,u.start,u.end).filter(e=>e.name===`release`);o.version=e[0]?.attributes.version??null;let i=t.releaseNotesVersion;if(i!==void 0&&i!==``){let t=e.find(e=>e.attributes.version===i),s=t&&childElements(r,t.start,t.end).find(e=>e.name===`description`);s&&(o.releaseNotes=parseDescription(r,s,n))}}o.applicationId!==null&&o.applicationId.endsWith(`.desktop`)&&(l.includes(`${o.applicationId}.desktop`)||(o.applicationId=o.applicationId.slice(0,-8)));for(let e of Object.keys(o))o[e]===``&&(o[e]=null);return o}const mn={"GPL-2.0-or-later":n.License.GPL_2_0,"GPL-3.0-or-later":n.License.GPL_3_0,"LGPL-2.1-or-later":n.License.LGPL_2_1,"LGPL-3.0-or-later":n.License.LGPL_3_0,"BSD-2-Clause":n.License.BSD,MIT:n.License.MIT_X11,"Artistic-2.0":n.License.ARTISTIC,"GPL-2.0-only":n.License.GPL_2_0_ONLY,"GPL-3.0-only":n.License.GPL_3_0_ONLY,"LGPL-2.1-only":n.License.LGPL_2_1_ONLY,"LGPL-3.0-only":n.License.LGPL_3_0_ONLY,"AGPL-3.0-or-later":n.License.AGPL_3_0,"AGPL-3.0-only":n.License.AGPL_3_0_ONLY,"BSD-3-Clause":n.License.BSD_3,"Apache-2.0":n.License.APACHE_2_0,"MPL-2.0":n.License.MPL_2_0,"0BSD":n.License[`0BSD`],"GPL-2.0":n.License.GPL_2_0_ONLY,"GPL-3.0":n.License.GPL_3_0_ONLY};function licenseTypeFor(e){return mn[e]??n.License.CUSTOM}function hasAppdataConstructor(e=s){try{return typeof e?.AboutDialog?.new_from_appdata==`function`}catch{return!1}}function applyAppdataFields(e,t,n){return t.applicationId!==null&&(e.applicationIcon=t.applicationId),t.applicationName!==null&&(e.applicationName=t.applicationName),t.developerName!==null&&(e.developerName=t.developerName),t.website!==null&&(e.website=t.website),t.supportUrl!==null&&(e.supportUrl=t.supportUrl),t.issueUrl!==null&&(e.issueUrl=t.issueUrl),t.license!==null&&(e.licenseType=licenseTypeFor(t.license)),n!==void 0&&n!==``&&(e.releaseNotesVersion=n),t.releaseNotes!==null&&(e.releaseNotes=t.releaseNotes),t.version!==null&&(e.version=t.version),e}function buildAboutDialogFromAppdata(t,n={}){let r=parseAppdata(t,{locale:n.locale??appdataLocale(e.get_language_names(),{LANG:e.getenv(`LANG`)??void 0}),releaseNotesVersion:n.releaseNotesVersion});return applyAppdataFields(new s.AboutDialog,r,n.releaseNotesVersion)}function resourceExists(e){try{return r.resources_get_info(e,r.ResourceLookupFlags.NONE),!0}catch{return!1}}function readResource(e){try{let t=r.resources_lookup_data(e,r.ResourceLookupFlags.NONE);return new TextDecoder().decode(t.toArray())}catch{return null}}function readFile(t){try{let[n,r]=e.file_get_contents(t);return n?new TextDecoder().decode(r):null}catch{return null}}let hn=!1;function createAboutDialog(e={}){let{appdataResource:t,appdataPath:n,releaseNotesVersion:r}=e,i=t!==void 0&&resourceExists(t),o;if(!e.forceParsedAppdata&&i&&hasAppdataConstructor())o=s.AboutDialog.new_from_appdata(t,r??``);else{let c=(i?readResource(t):null)??(n===void 0?null:readFile(n));c===null?(y.error(`@gjsify/adwaita-app: no AppStream metainfo found for the About dialog; looked at resource ${t??`(none given)`} and file ${n??`(none given)`}`),o=new s.AboutDialog):(!hn&&!e.forceParsedAppdata&&i&&(hn=!0,y.log(`@gjsify/adwaita-app: Adw.AboutDialog.new_from_appdata is not in this GTK runtime (expected on Windows — gjsify/gjsify#1662); building the About dialog from the AppStream metainfo directly.`)),o=buildAboutDialogFromAppdata(c,{releaseNotesVersion:r}))}return e.applicationIcon!==void 0&&(o.applicationIcon=e.applicationIcon),e.version!==void 0&&(o.version=e.version),o}function applyAboutLinks(e,t){for(let n of t??[])n.title&&n.url&&e.add_link(n.title,n.url)}function resolveIconDir(e={}){let t=nonEmpty(e.iconDir)??nonEmpty(e.env?.GJSIFY_ICON_DIR);if(t!==void 0)return t;if(!(e.startDir===void 0||e.isDirectory===void 0))return searchUp(e.startDir,e.isDirectory)}function bundleDirFromUrl(e){if(e===void 0||!e.startsWith(`file://`))return;let t=decodeURIComponent(new URL(e).pathname),n=lastPathSeparatorIndex(t);if(!(n<0))return n===0?`/`:t.slice(0,n)}function searchUp(e,t){let n=e;for(let e=0;e<6;e++){let e=`${n===`/`?``:n}/data/icons`;if(t(e))return e;let r=lastPathSeparatorIndex(n);if(r<=0){if(n===`/`)break;n=`/`}else n=n.slice(0,r)}}function nonEmpty(e){if(e===void 0)return;let t=e.trim();return t===``?void 0:t}`application-x-executable.audio-volume-high.audio-volume-low.audio-volume-medium.audio-volume-muted.avatar-default.camera-photo.contact-new.dialog-error.dialog-warning.document-edit.document-open.document-save.edit-clear.edit-copy.edit-find.emblem-system.emoji-activities.emoji-body.emoji-flags.emoji-food.emoji-nature.emoji-objects.emoji-people.emoji-recent.emoji-symbols.emoji-travel.face-smile.folder.folder-documents.folder-download.folder-music.go-down.go-home.go-next.go-previous.go-up.image-missing.list-add.list-remove.mail-reply-sender.mail-send.mail-unread.media-eject.media-playback-pause.media-playback-start.media-playlist-repeat.network-wireless.open-menu.pan-down.pan-end.pan-end-rtl.preferences-system.printer.send-to.sidebar-show.starred.system-search.user-trash.value-decrease.value-increase.view-conceal.view-grid.view-list.view-more.view-paged.view-refresh.view-reveal.window-close.window-maximize.window-minimize.window-restore`.split(`.`);let Z=null;function registerBundledIconResource(){if(Z)return Z;let t=e.base64_decode(`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`);return Z=r.Resource.new_from_data(new e.Bytes(t)),r.resources_register(Z),Z}function addBundledIconsToTheme(e){registerBundledIconResource(),e.add_resource_path(`/eu/jumplink/gjsify/adwaita-app/icons`)}function installBundledIconTheme(e={}){let r=e.prefer??`fallback`;if(r===`host`)return!1;let i=e.display===void 0?t.Display.get_default():e.display;return i?(addBundledIconsToTheme(n.IconTheme.get_for_display(i)),r===`bundled`&&n.Settings.get_for_display(i).set_property(`gtk-icon-theme-name`,`gjsify-adwaita-bundled`),!0):!1}function addAppIconDir(t,n,r={}){if(t.has_icon(n))return!1;let i=resolveIconDir({iconDir:r.iconDir,env:{GJSIFY_ICON_DIR:e.getenv(`GJSIFY_ICON_DIR`)??void 0},startDir:r.startDir??bundleDirFromUrl(import.meta.url),isDirectory:t=>e.file_test(t,e.FileTest.IS_DIR)});return i===void 0?!1:(t.add_search_path(i),!0)}var gn=class AdwaitaApp extends s.Application{static{o.registerClass({GTypeName:`GjsifyAdwaitaApp`},AdwaitaApp)}constructor(e){super({application_id:e.applicationId,flags:e.flags??r.ApplicationFlags.DEFAULT_FLAGS}),this._window=null,this._options=e,this._initActions(),this.connect(`startup`,()=>this._onStartup()),this.connect(`activate`,()=>this._onActivate())}_initActions(){if(this._options.quitAction!==!1){let e=new r.SimpleAction({name:`quit`});e.connect(`activate`,()=>this.quit()),this.add_action(e),this.set_accels_for_action(`app.quit`,[`<primary>q`])}if(this._options.about||this._options.aboutAppdata){let e=new r.SimpleAction({name:`about`});e.connect(`activate`,()=>this._showAbout()),this.add_action(e)}}_onStartup(){this._installBundledIcons(),this._installAppIcon(),this._options.css&&this._loadCss(this._options.css),this._installDevtools(),this._options.onStartup?.(this)}_installBundledIcons(){let e=this._options.bundledIcons;e!==!1&&installBundledIconTheme(typeof e==`object`?e:{})}_installAppIcon(){let e=t.Display.get_default();e&&addAppIconDir(n.IconTheme.get_for_display(e),this._options.about?.applicationIcon??this._options.applicationId,{iconDir:this._options.iconDir})}_loadCss(e){let r=t.Display.get_default();if(!r){y.error(`@gjsify/adwaita-app: no default display; CSS not applied`);return}let i=new n.CssProvider;i.load_from_string(e),n.StyleContext.add_provider_for_display(r,i,n.STYLE_PROVIDER_PRIORITY_APPLICATION)}_installDevtools(){let e=this._options.devtools;if(e===!1)return;let t=typeof e==`object`?e:{enabled:e||void 0};installDevtools(this,t)}_onActivate(){this._window||=this._options.createWindow(this),this._window.present()}_showAbout(){let e=this._options.aboutAppdata;if(e){createAboutDialog(e).present(this.get_active_window());return}let t=this._options.about;if(!t)return;let n=new s.AboutDialog({application_name:t.applicationName,application_icon:t.applicationIcon??this._options.applicationId});t.version&&(n.version=t.version),t.developerName&&(n.developer_name=t.developerName),t.website&&(n.website=t.website),t.issueUrl&&(n.issue_url=t.issueUrl),t.license&&(n.license=t.license),t.comments&&(n.comments=t.comments),t.copyright&&(n.copyright=t.copyright),t.developers?.length&&n.set_developers(t.developers),applyAboutLinks(n,t.links),n.present(this.get_active_window())}};async function runApplication(e,t){let n=!1;try{e.register(null),n=e.get_is_remote()}catch{n=!1}let r=await e.runAsync(t);return n&&y.error(`${e.applicationId??`This application`} is already running — brought the existing instance to the front instead of opening a second window.`),r}o.type_ensure(gn.$gtype);var _n=class LoadingStack extends n.Stack{static{o.registerClass({GTypeName:`GjsifyLoadingStack`},LoadingStack)}constructor(e={}){super(e);let t=new n.Box({orientation:n.Orientation.VERTICAL,halign:n.Align.CENTER,valign:n.Align.CENTER,hexpand:!0,vexpand:!0});t.append(new s.Spinner),this.add_named(t,`loading`),this._content=new s.Bin({hexpand:!0,vexpand:!0}),this.add_named(this._content,`content`),this._error=new s.StatusPage({iconName:`dialog-error-symbolic`,title:`Something went wrong`}),this.add_named(this._error,`error`),this.set_visible_child_name(`loading`)}setContent(e){this._content.set_child(e)}setError(e,t){this._error.set_title(e),this._error.set_description(t??``)}showLoading(){this.set_visible_child_name(`loading`)}showContent(){this.set_visible_child_name(`content`)}showError(){this.set_visible_child_name(`error`)}};o.type_ensure(_n.$gtype);async function runStorybook(e){return runApplication(new fn(e),[c.programInvocationName,...c.programArgs])}const vn={title:`Buttons/Button Content`,description:`Adw.ButtonContent — pairs a symbolic icon with a label inside a Gtk.Button.`,controls:[{name:`label`,label:`Label`,type:J.TEXT,defaultValue:`Download`},{name:`iconName`,label:`Icon`,type:J.SELECT,options:[{label:`Download`,value:`folder-download-symbolic`},{label:`Add`,value:`list-add-symbolic`},{label:`Send`,value:`mail-send-symbolic`},{label:`Star`,value:`starred-symbolic`}],defaultValue:`folder-download-symbolic`},{name:`canShrink`,label:`Can shrink`,type:J.BOOLEAN,defaultValue:!1}]};var yn=__exportAll$1({ButtonContentStories:()=>xn,ButtonContentStory:()=>bn}),bn=class ButtonContentStory extends X{_content=null;_button=null;static{o.registerClass({GTypeName:`AdwStorybookButtonContent`},ButtonContentStory)}constructor(){super(X.fromMeta(ButtonContentStory.getMetadata(),`Default`))}static getMetadata(){return{...vn,component:s.ButtonContent.$gtype}}initialize(){this._content=new s.ButtonContent({label:this.args.label,iconName:this.args.iconName,canShrink:this.args.canShrink}),this._button=new n.Button({child:this._content}),this._button.add_css_class(`suggested-action`),this._button.add_css_class(`pill`),this.addContent(this._button)}updateArgs(e){this._content&&(this._content.label=this.args.label,this._content.iconName=this.args.iconName,this._content.canShrink=this.args.canShrink)}};o.type_ensure(bn.$gtype);const xn={stories:[bn]},Sn={title:`Buttons/Button Styles`,description:`Buttons with Adwaita style classes: .pill, .circular, .suggested-action, .destructive-action, .flat.`,controls:[{name:`label`,label:`Demo label`,type:J.TEXT,defaultValue:`Click me`},{name:`style`,label:`Demo style`,type:J.SELECT,options:[{label:`Pill`,value:`pill`},{label:`Circular (icon)`,value:`circular`},{label:`Suggested`,value:`suggested-action`},{label:`Destructive`,value:`destructive-action`},{label:`Flat`,value:`flat`}],defaultValue:`suggested-action`}]};var Cn=__exportAll$1({ButtonStylesStories:()=>En,ButtonStylesStory:()=>Tn});const wn=[`pill`,`circular`,`suggested-action`,`destructive-action`,`flat`];var Tn=class ButtonStylesStory extends X{_demo=null;static{o.registerClass({GTypeName:`AdwStorybookButtonStyles`},ButtonStylesStory)}constructor(){super(X.fromMeta(ButtonStylesStory.getMetadata(),`Default`))}static getMetadata(){return{...Sn,component:n.Button.$gtype}}initialize(){let e=new s.WrapBox({childSpacing:12,lineSpacing:12,halign:n.Align.CENTER}),t=new n.Button({label:`Pill`});t.add_css_class(`pill`),e.append(t);let r=new n.Button({iconName:`list-add-symbolic`});r.add_css_class(`circular`),e.append(r);let i=new n.Button({label:`Suggested`});i.add_css_class(`suggested-action`),e.append(i);let o=new n.Button({label:`Delete`});o.add_css_class(`destructive-action`),e.append(o);let c=new n.Button({label:`Flat`});c.add_css_class(`flat`),e.append(c),this._demo=new n.Button({label:this.args.label}),this._applyStyle(this.args.style),e.append(this._demo),this.addContent(e)}_applyStyle(e){if(this._demo){for(let e of wn)this._demo.remove_css_class(e);this._demo.add_css_class(e)}}updateArgs(e){this._demo&&(this._demo.label=this.args.label,this._applyStyle(this.args.style))}};o.type_ensure(Tn.$gtype);const En={stories:[Tn]},Dn={title:`Buttons/Color Dialog Button`,description:`Gtk.ColorDialogButton — a button that shows a colour and opens a chooser for it. It is insensitive until a dialog is set, and the swatch announces the channel percentages.`,controls:[{name:`rgba`,label:`Colour`,type:J.TEXT,defaultValue:`#3584e4`},{name:`title`,label:`Dialog title`,type:J.TEXT,defaultValue:`Choose a colour`}]};var On=__exportAll$1({ColorDialogButtonStories:()=>An,ColorDialogButtonStory:()=>kn}),kn=class ColorDialogButtonStory extends X{_button=null;static{o.registerClass({GTypeName:`AdwStorybookColorDialogButton`},ColorDialogButtonStory)}constructor(){super(X.fromMeta(ColorDialogButtonStory.getMetadata(),`Default`))}static getMetadata(){return{...Dn,component:n.ColorDialogButton.$gtype}}initialize(){this._button=new n.ColorDialogButton({halign:n.Align.CENTER}),this._button.dialog=new n.ColorDialog,this._apply(),this.addContent(this._button)}updateArgs(e){this._apply()}_apply(){if(!this._button)return;let e=new t.RGBA;e.parse(this.args.rgba)&&(this._button.rgba=e),this._button.dialog.title=this.args.title||``}};o.type_ensure(kn.$gtype);const An={stories:[kn]},jn={title:`Buttons/Font Dialog Button`,description:`Gtk.FontDialogButton — a button that shows a font and opens a chooser for it. At level family the label is the family alone; from font up it is family plus size, and the size box appears.`,controls:[{name:`fontDesc`,label:`Font`,type:J.TEXT,defaultValue:`Sans Bold 12`},{name:`level`,label:`Level`,type:J.SELECT,options:[{label:`Family`,value:`family`},{label:`Face`,value:`face`},{label:`Font`,value:`font`},{label:`Features`,value:`features`}],defaultValue:`font`},{name:`useFont`,label:`Draw in the font`,type:J.BOOLEAN,defaultValue:!0},{name:`useSize`,label:`Draw in the size`,type:J.BOOLEAN,defaultValue:!0}]};var Mn=__exportAll$1({FontDialogButtonStories:()=>Pn,FontDialogButtonStory:()=>Nn}),Nn=class FontDialogButtonStory extends X{_button=null;static{o.registerClass({GTypeName:`AdwStorybookFontDialogButton`},FontDialogButtonStory)}constructor(){super(X.fromMeta(FontDialogButtonStory.getMetadata(),`Default`))}static getMetadata(){return{...jn,component:n.FontDialogButton.$gtype}}initialize(){this._button=new n.FontDialogButton({halign:n.Align.CENTER}),this._button.dialog=new n.FontDialog,this._apply(),this.addContent(this._button)}updateArgs(e){this._apply()}_apply(){if(!this._button)return;this._button.level=this.args.level;let e=l.FontDescription.from_string(this.args.fontDesc);e!==null&&(this._button.fontDesc=e),this._button.useFont=this.args.useFont,this._button.useSize=this.args.useSize}};o.type_ensure(Nn.$gtype);const Pn={stories:[Nn]},Fn={title:`Buttons/Link Button`,description:`Gtk.LinkButton — a button that follows a URI. It is a Gtk.Button with a uri and a visited state: clicking launches the URI and marks the link visited, and pointing it somewhere new un-visits it.`,controls:[{name:`label`,label:`Label`,type:J.TEXT,defaultValue:`GNOME`},{name:`uri`,label:`URI`,type:J.TEXT,defaultValue:`https://gnome.org`},{name:`visited`,label:`Visited`,type:J.BOOLEAN,defaultValue:!1}]};var In=__exportAll$1({LinkButtonStories:()=>Rn,LinkButtonStory:()=>Ln}),Ln=class LinkButtonStory extends X{_button=null;static{o.registerClass({GTypeName:`AdwStorybookLinkButton`},LinkButtonStory)}constructor(){super(X.fromMeta(LinkButtonStory.getMetadata(),`Default`))}static getMetadata(){return{...Fn,component:n.LinkButton.$gtype}}initialize(){this._button=new n.LinkButton({halign:n.Align.CENTER}),this._apply(),this.addContent(this._button)}updateArgs(e){this._apply()}_apply(){if(!this._button)return;let e=this.args.label;this._button.label=e,this._button.uri=this.args.uri,this._button.visited=this.args.visited}};o.type_ensure(Ln.$gtype);const Rn={stories:[Ln]},zn=[`Save as…`,`Export`,`Print`],Bn={title:`Buttons/Menu Button`,description:`Gtk.MenuButton — a button whose only action is to open a menu. Where a Split Button has a primary action beside its arrow, this one has none: every choice lives in the popover.`,controls:[{name:`iconName`,label:`Icon`,type:J.SELECT,options:[{label:`Hamburger`,value:`open-menu-symbolic`},{label:`More`,value:`view-more-symbolic`},{label:`Open`,value:`document-open-symbolic`}],defaultValue:`open-menu-symbolic`},{name:`menuTitle`,label:`Menu title`,type:J.TEXT,defaultValue:`Document`}]};var Vn=__exportAll$1({MenuButtonStories:()=>Un,MenuButtonStory:()=>Hn}),Hn=class MenuButtonStory extends X{_widget=null;static{o.registerClass({GTypeName:`AdwStorybookMenuButton`},MenuButtonStory)}constructor(){super(X.fromMeta(MenuButtonStory.getMetadata(),`Default`))}static getMetadata(){return{...Bn,component:n.MenuButton.$gtype}}initialize(){this._widget=new n.MenuButton({halign:n.Align.CENTER}),this._apply(),this.addContent(this._widget)}updateArgs(e){this._apply()}_buildMenu(e){let t=new r.Menu;for(let e of zn)t.append(e,`app.${e.toLowerCase().replace(/[^a-z]+/g,`-`)}`);let n=new r.Menu;return n.append_section(e.length>0?e:null,t),n}_apply(){this._widget&&(this._widget.iconName=this.args.iconName,this._widget.menuModel=this._buildMenu(this.args.menuTitle))}};o.type_ensure(Hn.$gtype);const Un={stories:[Hn]},Wn=[`audio-volume-muted-symbolic`,`audio-volume-low-symbolic`,`audio-volume-high-symbolic`],Gn={title:`Buttons/Scale Button`,description:`Gtk.ScaleButton — a button whose press opens a scale. The icon follows the value: no list draws image-missing, one name is used throughout, two split the range, three put the first at the bottom and the second at the top and share the interior, five spread it.`,controls:[{name:`value`,label:`Value`,type:J.NUMBER,defaultValue:70},{name:`orientation`,label:`Orientation`,type:J.SELECT,options:[{label:`Vertical`,value:`vertical`},{label:`Horizontal`,value:`horizontal`}],defaultValue:`vertical`},{name:`hasFrame`,label:`Has frame`,type:J.BOOLEAN,defaultValue:!1}]};var Kn=__exportAll$1({ScaleButtonStories:()=>Jn,ScaleButtonStory:()=>qn}),qn=class ScaleButtonStory extends X{_button=null;static{o.registerClass({GTypeName:`AdwStorybookScaleButton`},ScaleButtonStory)}constructor(){super(X.fromMeta(ScaleButtonStory.getMetadata(),`Default`))}static getMetadata(){return{...Gn,component:n.ScaleButton.$gtype}}initialize(){this._button=new n.ScaleButton({halign:n.Align.CENTER}),this._button.icons=Wn,this._apply(),this.addContent(this._button)}updateArgs(e){this._apply()}_apply(){this._button&&(this._button.orientation=this.args.orientation===`horizontal`?n.Orientation.HORIZONTAL:n.Orientation.VERTICAL,this._button.hasFrame=this.args.hasFrame,this._button.value=this.args.value)}};o.type_ensure(qn.$gtype);const Jn={stories:[qn]},Yn={title:`Buttons/Split Button`,description:`Adw.SplitButton — a primary action button paired with a dropdown menu of related actions.`,controls:[{name:`label`,label:`Label`,type:J.TEXT,defaultValue:`Save`},{name:`iconName`,label:`Icon`,type:J.SELECT,options:[{label:`None`,value:``},{label:`Save`,value:`document-save-symbolic`},{label:`Send`,value:`mail-send-symbolic`},{label:`Add`,value:`list-add-symbolic`}],defaultValue:`document-save-symbolic`}]},Xn={title:`Buttons/Split Button Flat`,description:`Adw.SplitButton with the .flat style class, as used inside header bars and toolbars.`,controls:[{name:`label`,label:`Label`,type:J.TEXT,defaultValue:`Reply`},{name:`iconName`,label:`Icon`,type:J.SELECT,options:[{label:`None`,value:``},{label:`Reply`,value:`mail-reply-sender-symbolic`},{label:`Edit`,value:`document-edit-symbolic`},{label:`Open`,value:`document-open-symbolic`}],defaultValue:`mail-reply-sender-symbolic`}]};var Zn=__exportAll$1({SplitButtonFlatStory:()=>$n,SplitButtonStories:()=>er,SplitButtonStory:()=>Qn});function buildMenu(){let e=new r.Menu;return e.append(`Save as…`,`app.save-as`),e.append(`Export`,`app.export`),e.append(`Print`,`app.print`),e}var Qn=class SplitButtonStory extends X{_widget=null;static{o.registerClass({GTypeName:`AdwStorybookSplitButton`},SplitButtonStory)}constructor(){super(X.fromMeta(SplitButtonStory.getMetadata(),`Default`))}static getMetadata(){return{...Yn,component:s.SplitButton.$gtype}}initialize(){this._widget=new s.SplitButton({label:this.args.label,menuModel:buildMenu()});let e=this.args.iconName;e&&(this._widget.iconName=e),this.addContent(this._widget)}updateArgs(e){if(!this._widget)return;let t=this.args.iconName;t?this._widget.iconName=t:this._widget.label=this.args.label}};o.type_ensure(Qn.$gtype);var $n=class SplitButtonFlatStory extends X{_widget=null;static{o.registerClass({GTypeName:`AdwStorybookSplitButtonFlat`},SplitButtonFlatStory)}constructor(){super(X.fromMeta(SplitButtonFlatStory.getMetadata(),`Default`))}static getMetadata(){return{...Xn,component:s.SplitButton.$gtype}}initialize(){this._widget=new s.SplitButton({label:this.args.label,menuModel:buildMenu()}),this._widget.add_css_class(`flat`);let e=this.args.iconName;e&&(this._widget.iconName=e),this.addContent(this._widget)}updateArgs(e){if(!this._widget)return;let t=this.args.iconName;t?this._widget.iconName=t:this._widget.label=this.args.label}};o.type_ensure($n.$gtype);const er={stories:[Qn,$n]},tr={title:`Buttons/Toggle Button`,description:`Gtk.ToggleButton — a button that stays pressed. It is a Gtk.Button with one more property, active, so every button style class applies; Adw.ToggleGroup is the linked, single-choice form of it.`,controls:[{name:`label`,label:`Label`,type:J.TEXT,defaultValue:`Mute`},{name:`active`,label:`Active`,type:J.BOOLEAN,defaultValue:!1},{name:`flat`,label:`Flat`,type:J.BOOLEAN,defaultValue:!1}]};var nr=__exportAll$1({ToggleButtonStories:()=>ir,ToggleButtonStory:()=>rr}),rr=class ToggleButtonStory extends X{_button=null;static{o.registerClass({GTypeName:`AdwStorybookToggleButton`},ToggleButtonStory)}constructor(){super(X.fromMeta(ToggleButtonStory.getMetadata(),`Default`))}static getMetadata(){return{...tr,component:n.ToggleButton.$gtype}}initialize(){this._button=new n.ToggleButton({halign:n.Align.CENTER}),this._apply(),this.addContent(this._button)}updateArgs(e){this._apply()}_apply(){this._button&&(this._button.label=this.args.label,this._button.active=this.args.active,this.args.flat?this._button.add_css_class(`flat`):this._button.remove_css_class(`flat`))}};o.type_ensure(rr.$gtype);const ir={stories:[rr]},ar={title:`Buttons/Toggle Group`,description:`Adw.ToggleGroup — a linked group of Adw.Toggle buttons where exactly one is active.`,controls:[{name:`active`,label:`Active toggle`,type:J.SELECT,options:[{label:`List`,value:0},{label:`Grid`,value:1},{label:`Columns`,value:2}],defaultValue:0},{name:`style`,label:`Style`,type:J.SELECT,options:[{label:`Default`,value:`default`},{label:`Flat`,value:`flat`},{label:`Round`,value:`round`}],defaultValue:`default`}]};var or=__exportAll$1({ToggleGroupStories:()=>lr,ToggleGroupStory:()=>cr});const sr=[`flat`,`round`];var cr=class ToggleGroupStory extends X{_toggleGroup=null;static{o.registerClass({GTypeName:`AdwStorybookToggleGroup`},ToggleGroupStory)}constructor(){super(X.fromMeta(ToggleGroupStory.getMetadata(),`Default`))}static getMetadata(){return{...ar,component:s.ToggleGroup.$gtype}}initialize(){this._toggleGroup=new s.ToggleGroup,this._toggleGroup.add(new s.Toggle({label:`List`,iconName:`view-list-symbolic`})),this._toggleGroup.add(new s.Toggle({label:`Grid`,iconName:`view-grid-symbolic`})),this._toggleGroup.add(new s.Toggle({label:`Columns`,iconName:`view-columns-symbolic`})),this._toggleGroup.active=this.args.active,this._applyStyle(this.args.style),this.addContent(this._toggleGroup)}_applyStyle(e){if(this._toggleGroup){for(let e of sr)this._toggleGroup.remove_css_class(e);e!=="default"&&this._toggleGroup.add_css_class(e)}}updateArgs(e){this._toggleGroup&&(this._toggleGroup.active=this.args.active,this._applyStyle(this.args.style))}};o.type_ensure(cr.$gtype);const lr={stories:[cr]},ur={title:`Controls/Check Button`,description:`Gtk.CheckButton — a label beside an indicator, with a third "in between" state for a selection that is only partly made. The browser element spells the two states checked and indeterminate, the words the Adwaita stylesheet selects on; the grouped, single-choice form is Adw.Radio.`,controls:[{name:`label`,label:`Label`,type:J.TEXT,defaultValue:`Enable networking`},{name:`checked`,label:`Checked`,type:J.BOOLEAN,defaultValue:!0},{name:`indeterminate`,label:`Indeterminate`,type:J.BOOLEAN,defaultValue:!1},{name:`disabled`,label:`Disabled`,type:J.BOOLEAN,defaultValue:!1}]};var dr=__exportAll$1({CheckButtonStories:()=>pr,CheckButtonStory:()=>fr}),fr=class CheckButtonStory extends X{_box=null;_button=null;static{o.registerClass({GTypeName:`AdwStorybookCheckButton`},CheckButtonStory)}constructor(){super(X.fromMeta(CheckButtonStory.getMetadata(),`Default`))}static getMetadata(){return{...ur,component:n.CheckButton.$gtype}}initialize(){this._button=new n.CheckButton,this._box=new n.Box({orientation:n.Orientation.VERTICAL,spacing:12,halign:n.Align.CENTER}),this._box.append(this._button),this._apply(),this.addContent(this._box)}updateArgs(e){this._apply()}_apply(){this._button&&(this._button.label=this.args.label,this._button.active=this.args.checked,this._button.inconsistent=this.args.indeterminate,this._button.sensitive=!this.args.disabled)}};o.type_ensure(fr.$gtype);const pr={stories:[fr]},mr=[`Automatic`,`Always`,`Never`,`When busy`],hr={title:`Controls/Drop Down`,description:`Gtk.DropDown — pick one value from a list. The button shows the selection; the list opens in a popover. Adw.ComboRow is the same choice presented as a boxed-list row.`,controls:[{name:`selected`,label:`Selected`,type:J.SELECT,options:mr.map((e,t)=>({label:e,value:t})),defaultValue:0},{name:`enableSearch`,label:`Search field`,type:J.BOOLEAN,defaultValue:!1}]};var gr=__exportAll$1({DropDownStories:()=>vr,DropDownStory:()=>_r}),_r=class DropDownStory extends X{_dropDown=null;static{o.registerClass({GTypeName:`AdwStorybookDropDown`},DropDownStory)}constructor(){super(X.fromMeta(DropDownStory.getMetadata(),`Default`))}static getMetadata(){return{...hr,component:n.DropDown.$gtype}}initialize(){this._dropDown=n.DropDown.new_from_strings([...mr]),this._dropDown.expression=n.PropertyExpression.new(n.StringObject.$gtype,null,`string`),this._dropDown.halign=n.Align.CENTER,this._apply(),this.addContent(this._dropDown)}updateArgs(e){this._apply()}_apply(){this._dropDown&&(this._dropDown.selected=this.args.selected,this._dropDown.enableSearch=this.args.enableSearch)}};o.type_ensure(_r.$gtype);const vr={stories:[_r]},yr={title:`Controls/Entry`,description:`Gtk.Entry — a single-line text field. Libadwaita ships no AdwEntry; the Adwaita look is the GTK entry styled by the stylesheet, which is why the row variants (Entry Row, Password Entry Row) are the widgets with an Adw prefix.`,controls:[{name:`text`,label:`Text`,type:J.TEXT,defaultValue:``},{name:`placeholder`,label:`Placeholder`,type:J.TEXT,defaultValue:`Search files…`},{name:`editable`,label:`Editable`,type:J.BOOLEAN,defaultValue:!0}]};var br=__exportAll$1({EntryStories:()=>Sr,EntryStory:()=>xr}),xr=class EntryStory extends X{_entry=null;static{o.registerClass({GTypeName:`AdwStorybookEntry`},EntryStory)}constructor(){super(X.fromMeta(EntryStory.getMetadata(),`Default`))}static getMetadata(){return{...yr,component:n.Entry.$gtype}}initialize(){this._entry=new n.Entry({widthRequest:280,halign:n.Align.CENTER}),this._apply(),this.addContent(this._entry)}updateArgs(e){this._apply()}_apply(){this._entry&&(this._entry.text=this.args.text,this._entry.placeholderText=this.args.placeholder,this._entry.editable=this.args.editable)}};o.type_ensure(xr.$gtype);const Sr={stories:[xr]},Cr={title:`Controls/Spinner (GTK)`,description:`Gtk.Spinner — GTK's own busy indicator: a faint ring with a quarter arc turning around it, sized by its allocation. Adw.Spinner is the libadwaita replacement and looks different; under reduced motion GTK swaps this one for a static hourglass, which Adw.Spinner deliberately does not do.`,controls:[{name:`size`,label:`Size (px)`,type:J.RANGE,min:16,max:64,step:4,defaultValue:32},{name:`spinning`,label:`Spinning`,type:J.BOOLEAN,defaultValue:!0},{name:`disabled`,label:`Disabled`,type:J.BOOLEAN,defaultValue:!1}]};var wr=__exportAll$1({GtkSpinnerStories:()=>Er,GtkSpinnerStory:()=>Tr}),Tr=class GtkSpinnerStory extends X{_spinner=null;static{o.registerClass({GTypeName:`AdwStorybookGtkSpinner`},GtkSpinnerStory)}constructor(){super(X.fromMeta(GtkSpinnerStory.getMetadata(),`Default`))}static getMetadata(){return{...Cr,component:n.Spinner.$gtype}}initialize(){this._spinner=new n.Spinner({halign:n.Align.CENTER,valign:n.Align.CENTER}),this._apply(),this.addContent(this._spinner)}updateArgs(e){this._apply()}_apply(){if(!this._spinner)return;let e=this.args.size;this._spinner.widthRequest=e,this._spinner.heightRequest=e,this.args.spinning?this._spinner.start():this._spinner.stop(),this._spinner.sensitive=!this.args.disabled}};o.type_ensure(Tr.$gtype);const Er={stories:[Tr]},Dr={title:`Controls/Level Bar`,description:"Gtk.LevelBar — how full something is, over an interval that need not be 0…1: a password strength meter, a battery. `mode` decides one filled level or one block per unit, and the block takes a class from the nearest OFFSET (low, high, full by default), which is how libadwaita colours it and how an application adds a colour of its own.",controls:[{name:`value`,label:`Value`,type:J.RANGE,min:0,max:1,step:.05,defaultValue:.8},{name:`maxValue`,label:`Max value`,type:J.RANGE,min:1,max:5,step:1,defaultValue:5},{name:`mode`,label:`Mode`,type:J.SELECT,options:[{label:`Continuous`,value:`continuous`},{label:`Discrete`,value:`discrete`}],defaultValue:`continuous`},{name:`orientation`,label:`Orientation`,type:J.SELECT,options:[{label:`Horizontal`,value:`horizontal`},{label:`Vertical`,value:`vertical`}],defaultValue:`horizontal`},{name:`inverted`,label:`Inverted`,type:J.BOOLEAN,defaultValue:!1}]};var Or=__exportAll$1({LevelBarStories:()=>Ar,LevelBarStory:()=>kr}),kr=class LevelBarStory extends X{_box=null;_bar=null;static{o.registerClass({GTypeName:`AdwStorybookLevelBar`},LevelBarStory)}constructor(){super(X.fromMeta(LevelBarStory.getMetadata(),`Default`))}static getMetadata(){return{...Dr,component:n.LevelBar.$gtype}}initialize(){this._bar=new n.LevelBar,this._box=new n.Box({halign:n.Align.CENTER,valign:n.Align.CENTER}),this._box.append(this._bar),this._apply(),this.addContent(this._box)}updateArgs(e){this._apply()}_apply(){if(!this._bar)return;let e=this.args.orientation===`vertical`;this._bar.orientation=e?n.Orientation.VERTICAL:n.Orientation.HORIZONTAL,this._bar.widthRequest=e?0:200,this._bar.heightRequest=e?120:0,this._bar.max_value=this.args.maxValue,this._bar.mode=this.args.mode===`discrete`?n.LevelBarMode.DISCRETE:n.LevelBarMode.CONTINUOUS,this._bar.value=this.args.value,this._bar.inverted=this.args.inverted}};o.type_ensure(kr.$gtype);const Ar={stories:[kr]},jr={title:`Controls/Password Entry`,description:`Gtk.PasswordEntry — a field for a secret: masked, no copy, a Caps Lock warning while it has focus, and show-peek-icon for a button that reveals it for one look. Adw.PasswordEntryRow is the boxed-list row built on it. Press the peek button, or Caps Lock on the keyboard, to see both states.`,controls:[{name:`showPeekIcon`,label:`Show peek icon`,type:J.BOOLEAN,defaultValue:!0},{name:`placeholderText`,label:`Placeholder`,type:J.TEXT,defaultValue:`Password`},{name:`disabled`,label:`Disabled`,type:J.BOOLEAN,defaultValue:!1}]};var Mr=__exportAll$1({PasswordEntryStories:()=>Pr,PasswordEntryStory:()=>Nr}),Nr=class PasswordEntryStory extends X{_entry=null;static{o.registerClass({GTypeName:`AdwStorybookPasswordEntry`},PasswordEntryStory)}constructor(){super(X.fromMeta(PasswordEntryStory.getMetadata(),`Default`))}static getMetadata(){return{...jr,component:n.PasswordEntry.$gtype}}initialize(){this._entry=new n.PasswordEntry({showPeekIcon:!0,widthRequest:240,halign:n.Align.CENTER}),this._apply(),this.addContent(this._entry)}updateArgs(e){this._apply()}_apply(){this._entry&&(this._entry.show_peek_icon=this.args.showPeekIcon,this._entry.placeholder_text=this.args.placeholderText,this._entry.sensitive=!this.args.disabled)}};o.type_ensure(Nr.$gtype);const Pr={stories:[Nr]},Fr={title:`Controls/Progress Bar`,description:"Gtk.ProgressBar — how much of a long operation is done. `fraction` is 0…1, `pulsing` is the indeterminate mode where the app knows it is busy but not how far along it is, and `osd` is libadwaita's hairline variant for under a header bar. Adw.Spinner is the size-less sibling.",controls:[{name:`fraction`,label:`Fraction`,type:J.RANGE,min:0,max:1,step:.05,defaultValue:.4},{name:`pulsing`,label:`Pulsing (indeterminate)`,type:J.BOOLEAN,defaultValue:!1},{name:`showText`,label:`Show text`,type:J.BOOLEAN,defaultValue:!0},{name:`inverted`,label:`Inverted`,type:J.BOOLEAN,defaultValue:!1},{name:`osd`,label:`OSD (hairline)`,type:J.BOOLEAN,defaultValue:!1}]};var Ir=__exportAll$1({ProgressBarStories:()=>Rr,ProgressBarStory:()=>Lr}),Lr=class ProgressBarStory extends X{_box=null;_bar=null;static{o.registerClass({GTypeName:`AdwStorybookProgressBar`},ProgressBarStory)}constructor(){super(X.fromMeta(ProgressBarStory.getMetadata(),`Default`))}static getMetadata(){return{...Fr,component:n.ProgressBar.$gtype}}initialize(){this._bar=new n.ProgressBar,this._box=new n.Box({spacing:12,halign:n.Align.CENTER}),this._box.append(this._bar),this._apply(),this.addContent(this._box)}updateArgs(e){this._apply()}_apply(){this._bar&&(this.args.pulsing?this._bar.pulse():this._bar.set_fraction(this.args.fraction),this._bar.show_text=this.args.showText,this._bar.inverted=this.args.inverted,this.args.osd?this._bar.add_css_class(`osd`):this._bar.remove_css_class(`osd`))}};o.type_ensure(Lr.$gtype);const Rr={stories:[Lr]},zr={title:`Controls/Scale`,description:`Gtk.Scale — a slider. Gtk.Scale extends Gtk.Range, which is abstract: the range itself has no tag, its adjustment, value, inverted and fill level are this widget’s properties. draw-value shows the number beside the knob at the value-pos you name, and the .value style class dims it.`,controls:[{name:`orientation`,label:`Orientation`,type:J.SELECT,options:[{label:`Horizontal`,value:`horizontal`},{label:`Vertical`,value:`vertical`}],defaultValue:`horizontal`},{name:`valuePos`,label:`Value position`,type:J.SELECT,options:[{label:`Top`,value:`top`},{label:`Bottom`,value:`bottom`},{label:`Left`,value:`left`},{label:`Right`,value:`right`}],defaultValue:`top`},{name:`drawValue`,label:`Draw value`,type:J.BOOLEAN,defaultValue:!0},{name:`digits`,label:`Digits`,type:J.NUMBER,defaultValue:0},{name:`inverted`,label:`Inverted`,type:J.BOOLEAN,defaultValue:!1},{name:`hasOrigin`,label:`Has origin`,type:J.BOOLEAN,defaultValue:!0},{name:`value`,label:`Value`,type:J.NUMBER,defaultValue:40}]};var Br=__exportAll$1({ScaleStories:()=>Hr,ScaleStory:()=>Vr}),Vr=class ScaleStory extends X{_scale=null;_adjustment=null;static{o.registerClass({GTypeName:`AdwStorybookScale`},ScaleStory)}constructor(){super(X.fromMeta(ScaleStory.getMetadata(),`Default`))}static getMetadata(){return{...zr,component:n.Scale.$gtype}}initialize(){this._adjustment=new n.Adjustment({value:40,lower:0,upper:100,stepIncrement:1,pageIncrement:10}),this._scale=new n.Scale({adjustment:this._adjustment,digits:0,drawValue:!0,widthRequest:260,valign:n.Align.CENTER}),this._apply(),this.addContent(this._scale)}updateArgs(e){this._apply()}_apply(){if(!this._scale||!this._adjustment)return;this._scale.orientation=this.args.orientation===`vertical`?n.Orientation.VERTICAL:n.Orientation.HORIZONTAL;let e={top:n.PositionType.TOP,bottom:n.PositionType.BOTTOM,left:n.PositionType.LEFT,right:n.PositionType.RIGHT};this._scale.value_pos=e[this.args.valuePos]??n.PositionType.TOP,this._scale.draw_value=this.args.drawValue,this._scale.digits=this.args.digits,this._scale.inverted=this.args.inverted,this._scale.has_origin=this.args.hasOrigin,this._adjustment.set_value(this.args.value)}};o.type_ensure(Vr.$gtype);const Hr={stories:[Vr]},Ur={title:`Controls/Search Entry`,description:`Gtk.SearchEntry — a field for typing a query. A search glyph leads while it is empty and a clear button follows once it is not, and search-changed waits out search-delay so a filter is not driven by every keystroke. Escape is stop-search, Ctrl+G is next-match.`,controls:[{name:`searchDelay`,label:`Search delay (ms)`,type:J.NUMBER,defaultValue:150},{name:`placeholderText`,label:`Placeholder`,type:J.TEXT,defaultValue:`Search…`},{name:`disabled`,label:`Disabled`,type:J.BOOLEAN,defaultValue:!1}]};var Wr=__exportAll$1({SearchEntryStories:()=>Kr,SearchEntryStory:()=>Gr}),Gr=class SearchEntryStory extends X{_entry=null;_label=null;_handler=0;static{o.registerClass({GTypeName:`AdwStorybookSearchEntry`},SearchEntryStory)}constructor(){super(X.fromMeta(SearchEntryStory.getMetadata(),`Default`))}static getMetadata(){return{...Ur,component:n.SearchEntry.$gtype}}initialize(){this._entry=new n.SearchEntry({widthRequest:260,halign:n.Align.CENTER}),this._label=new n.Label({label:`search-changed has not fired yet`}),this._handler=this._entry.connect(`search-changed`,()=>{this._label&&(this._label.label=`search-changed: "${this._entry?.text??``}"`)}),this._apply();let e=new n.Box({orientation:n.Orientation.VERTICAL,spacing:12});e.append(this._entry),e.append(this._label),this.addContent(e)}updateArgs(e){this._apply()}_apply(){this._entry&&(this._entry.search_delay=this.args.searchDelay,this._entry.placeholder_text=this.args.placeholderText,this._entry.sensitive=!this.args.disabled)}};o.type_ensure(Gr.$gtype);const Kr={stories:[Gr]},qr={title:`Controls/Spin Button`,description:`Gtk.SpinButton — a number field with an arrow either side of it. The range is a Gtk.Adjustment, the typed value is clamped into it (or left alone, under update-policy if-valid), and numeric refuses anything that is not a number. Adw.SpinRow is the boxed-list row that wraps this same widget.`,controls:[{name:`orientation`,label:`Orientation`,type:J.SELECT,options:[{label:`Horizontal`,value:`horizontal`},{label:`Vertical`,value:`vertical`}],defaultValue:`horizontal`},{name:`digits`,label:`Digits`,type:J.NUMBER,defaultValue:0},{name:`numeric`,label:`Numeric`,type:J.BOOLEAN,defaultValue:!1},{name:`snapToTicks`,label:`Snap to ticks`,type:J.BOOLEAN,defaultValue:!1},{name:`wrap`,label:`Wrap`,type:J.BOOLEAN,defaultValue:!1},{name:`updatePolicy`,label:`Update policy`,type:J.SELECT,options:[{label:`Always`,value:`always`},{label:`If valid`,value:`if-valid`}],defaultValue:`always`},{name:`value`,label:`Value`,type:J.NUMBER,defaultValue:5}]};var Jr=__exportAll$1({SpinButtonStories:()=>Xr,SpinButtonStory:()=>Yr}),Yr=class SpinButtonStory extends X{_spin=null;_adjustment=null;static{o.registerClass({GTypeName:`AdwStorybookSpinButton`},SpinButtonStory)}constructor(){super(X.fromMeta(SpinButtonStory.getMetadata(),`Default`))}static getMetadata(){return{...qr,component:n.SpinButton.$gtype}}initialize(){this._adjustment=new n.Adjustment({value:5,lower:0,upper:10,stepIncrement:1,pageIncrement:2}),this._spin=new n.SpinButton({adjustment:this._adjustment,digits:0,halign:n.Align.CENTER}),this._apply(),this.addContent(this._spin)}updateArgs(e){this._apply()}_apply(){!this._spin||!this._adjustment||(this._spin.orientation=this.args.orientation===`vertical`?n.Orientation.VERTICAL:n.Orientation.HORIZONTAL,this._spin.digits=this.args.digits,this._spin.numeric=this.args.numeric,this._spin.snap_to_ticks=this.args.snapToTicks,this._spin.wrap=this.args.wrap,this._spin.update_policy=this.args.updatePolicy===`if-valid`?n.SpinButtonUpdatePolicy.IF_VALID:n.SpinButtonUpdatePolicy.ALWAYS,this._adjustment.set_value(this.args.value))}};o.type_ensure(Yr.$gtype);const Xr={stories:[Yr]},Zr={title:`Controls/Switch`,description:`Gtk.Switch — a light switch with two states that are NOT the same thing: active is where the user put it, state is what the switched thing currently is, which is how a change that takes a while looks like a pending one. Adw.SwitchRow is the same control with a title beside it.`,controls:[{name:`active`,label:`Active`,type:J.BOOLEAN,defaultValue:!0},{name:`state`,label:`State (the backend)`,type:J.BOOLEAN,defaultValue:!0},{name:`disabled`,label:`Disabled`,type:J.BOOLEAN,defaultValue:!1}]};var Qr=__exportAll$1({SwitchStories:()=>ei,SwitchStory:()=>$r}),$r=class SwitchStory extends X{_switch=null;static{o.registerClass({GTypeName:`AdwStorybookSwitch`},SwitchStory)}constructor(){super(X.fromMeta(SwitchStory.getMetadata(),`Default`))}static getMetadata(){return{...Zr,component:n.Switch.$gtype}}initialize(){this._switch=new n.Switch({halign:n.Align.CENTER}),this._apply(),this.addContent(this._switch)}updateArgs(e){this._apply()}_apply(){this._switch&&(this._switch.active=this.args.active,this._switch.state=this.args.state,this._switch.sensitive=!this.args.disabled)}};o.type_ensure($r.$gtype);const ei={stories:[$r]},ti={title:`Drawing/Drag Icon`,description:"Gtk.DragIcon — the widget that follows the pointer while a drag is in flight, and is destroyed with the drag. No application builds one: `get_for_drag` returns the icon a drag is using, and the drag source sets its child. What it takes as that child is the interesting part, because `create_widget_for_value` answers for six kinds of value and a drag source that offers a string gets a label and one that offers a colour gets a swatch. A drag icon takes no input at all, which is the C's own note: 'drag icons do not allow user input'.",controls:[{name:`value`,label:`Value being dragged`,type:J.SELECT,options:[{label:`A string (a Gtk.Label)`,value:`string`},{label:`A GdkRGBA (a colour swatch)`,value:`rgba`},{label:`A content provider only (no icon)`,value:`none`}],defaultValue:`string`},{name:`actions`,label:`Drag actions`,type:J.SELECT,options:[{label:`Copy`,value:`copy`},{label:`Move`,value:`move`}],defaultValue:`copy`}]};var ni=__exportAll$1({DragIconStories:()=>ii,DragIconStory:()=>ri}),ri=class DragIconStory extends X{_row=null;_source=null;_hint=null;static{o.registerClass({GTypeName:`AdwStorybookDragIcon`},DragIconStory)}constructor(){super(X.fromMeta(DragIconStory.getMetadata(),`Default`))}static getMetadata(){return{...ti,component:n.DragIcon.$gtype}}initialize(){let e=new n.Box({orientation:n.Orientation.VERTICAL,spacing:12,halign:n.Align.CENTER,valign:n.Align.CENTER});this._hint=new n.Label({label:`Drag the row and watch the pointer`}),this._hint.add_css_class(`dim-label`),this._row=new n.Box({orientation:n.Orientation.HORIZONTAL,spacing:12,cssClasses:[`card`]}),this._row.append(this._buildLabel()),this._source=n.DragSource.new(),this._source.actions=this.args.actions===`move`?t.DragAction.MOVE:t.DragAction.COPY,this._source.connect(`prepare`,()=>this._contentProvider()),this._source.connect(`drag-begin`,(e,t)=>this._setIcon(t)),this._row.add_controller(this._source),this._apply(),e.append(this._hint),e.append(this._row),this.addContent(e)}updateArgs(e){this._source!==null&&(this._source.actions=this.args.actions===`move`?t.DragAction.MOVE:t.DragAction.COPY,this._apply())}_value(){switch(this.args.value){case`rgba`:return{red:.25,green:.55,blue:.95,alpha:1};case`none`:return null;default:return`Report.odt`}}_contentProvider(){let e=this._value();return e===null?null:t.ContentProvider.new_for_value(e)}_setIcon(e){let t=this._value(),r=n.DragIcon.get_for_drag(e),i=t===null?null:n.DragIcon.create_widget_for_value(t);r.set_child(i)}_buildLabel(){return new n.Label({label:`Report.odt`,cssClasses:[`heading`]})}_apply(){this._hint!==null&&(this._hint.label=this.args.value===`none`?`Drag the row — no icon, because the value has no widget to show`:`Drag the row and watch the pointer`)}};o.type_ensure(ri.$gtype);const ii={stories:[ri]},ai={title:`Drawing/Drawing Area`,description:"Gtk.DrawingArea — a blank widget that owns a size and a callback and nothing else: whatever you see is what `set_draw_func` painted. `content-width` and `content-height` are the MINIMUM and natural size at once, so a parent can hand the area more room but never less; at 0 the area has no intrinsic size at all and fills whatever it is given.",controls:[{name:`contentWidth`,label:`Content width`,type:J.RANGE,min:0,max:320,step:16,defaultValue:160},{name:`contentHeight`,label:`Content height`,type:J.RANGE,min:0,max:320,step:16,defaultValue:120},{name:`shape`,label:`Shape`,type:J.SELECT,options:[{label:`Circle`,value:`circle`},{label:`Grid`,value:`grid`},{label:`Crosshair`,value:`crosshair`}],defaultValue:`circle`}]};var oi=__exportAll$1({DrawingAreaStories:()=>ci,DrawingAreaStory:()=>si}),si=class DrawingAreaStory extends X{_box=null;_area=null;static{o.registerClass({GTypeName:`AdwStorybookDrawingArea`},DrawingAreaStory)}constructor(){super(X.fromMeta(DrawingAreaStory.getMetadata(),`Default`))}static getMetadata(){return{...ai,component:n.DrawingArea.$gtype}}initialize(){this._area=new n.DrawingArea,this._area.set_draw_func((e,t,n,r)=>{let i=e.get_color();switch(t.setSourceRGBA(i.red,i.green,i.blue,i.alpha),t.rectangle(0,0,n,r),t.fill(),t.setSourceRGBA(1-i.red,1-i.green,1-i.blue,i.alpha),this.args.shape){case`grid`:for(let e=0;e<n;e+=16)t.rectangle(e,0,8,r),t.fill();break;case`crosshair`:t.rectangle(n/2-1,0,2,r),t.rectangle(0,r/2-1,n,2),t.fill();break;default:t.arc(n/2,r/2,Math.min(n,r)/2,0,2*Math.PI),t.fill();break}}),this._box=new n.Box({halign:n.Align.CENTER,valign:n.Align.CENTER}),this._box.append(this._area),this._apply(),this.addContent(this._box)}updateArgs(e){this._area?.queue_draw(),this._apply()}_apply(){this._area&&(this._area.content_width=this.args.contentWidth,this._area.content_height=this.args.contentHeight)}};o.type_ensure(si.$gtype);const ci={stories:[si]},li={title:`Drawing/GL Area`,description:"Gtk.GLArea — a widget whose contents are drawn on a GPU. GTK emits `::resize` before the first `::render` and the render flag is cleared AFTER the signal, so a handler may queue another frame with `queue_render()`. Here the replica is a `<canvas>` with a real WebGL context: the browser has no desktop GL, so `api` always reports the ES flavour it was given.",controls:[{name:`autoRender`,label:`Auto render`,type:J.BOOLEAN,defaultValue:!0},{name:`hasDepthBuffer`,label:`Depth buffer`,type:J.BOOLEAN,defaultValue:!1},{name:`allowedApis`,label:`Allowed APIs`,type:J.SELECT,options:[{label:`GL and GLES (default)`,value:`gl gles`},{label:`GLES only`,value:`gles`},{label:`GL only`,value:`gl`}],defaultValue:`gl gles`},{name:`spinning`,label:`Spin the triangle`,type:J.BOOLEAN,defaultValue:!0}]};var ui=__exportAll$1({GLAreaStories:()=>fi,GLAreaStory:()=>di}),di=class GLAreaStory extends X{_area=null;_readout=null;_box=null;_tick=0;_renders=0;_viewport=`—`;static{o.registerClass({GTypeName:`AdwStorybookGLArea`},GLAreaStory)}constructor(){super(X.fromMeta(GLAreaStory.getMetadata(),`Default`))}static getMetadata(){return{...li,component:n.GLArea.$gtype}}initialize(){this._area=new n.GLArea({widthRequest:240,heightRequest:160}),this._readout=new n.Label({label:`—`}),this._readout.add_css_class(`dimmed`),this._area.connect(`resize`,(e,t,n)=>{this._viewport=`${t} × ${n}`,this._refresh()}),this._area.connect(`render`,()=>{this._renders+=1,this._refresh()}),this._box=new n.Box({orientation:n.Orientation.VERTICAL,spacing:6}),this._box.append(this._area),this._box.append(this._readout),this._apply(),this.addContent(this._box)}updateArgs(e){this._stop(),this._apply(),this._start()}_apply(){this._area&&(this._area.allowed_apis=this.args.allowedApis===`gles`?t.GLAPI.GLES:t.GLAPI.GL|t.GLAPI.GLES,this._area.auto_render=this.args.autoRender,this._area.has_depth_buffer=this.args.hasDepthBuffer)}_start(){!this._area||!this.args.spinning||(this._tick=e.timeout_add(e.PRIORITY_DEFAULT,33,()=>(this._area?.queue_render(),e.SOURCE_CONTINUE)))}_stop(){this._tick!==0&&(e.source_remove(this._tick),this._tick=0)}_refresh(){this._readout&&(this._readout.label=`viewport ${this._viewport} device px · ${this._renders} renders`)}};o.type_ensure(di.$gtype);const fi={stories:[di]},pi={title:`Drawing/Graphics Offload`,description:"Gtk.GraphicsOffload — a wrapper that asks the compositor to take its ONE child as it is, which is worth doing for content that changes every frame. `enabled` says whether it is attempted, and `black-background` paints the letterbox bars. The passthrough itself is the platform's: no browser API hands a surface to a compositor, so the replica carries the enum, the black rectangle and the bin layout, and says plainly which part is missing.",controls:[{name:`enabled`,label:`Enabled`,type:J.SELECT,options:[{label:`Enabled (default)`,value:`enabled`},{label:`Disabled`,value:`disabled`}],defaultValue:`enabled`},{name:`blackBackground`,label:`Black background`,type:J.BOOLEAN,defaultValue:!1},{name:`child`,label:`Child`,type:J.SELECT,options:[{label:`Label`,value:`label`},{label:`Image`,value:`image`},{label:`Row of labels`,value:`box`}],defaultValue:`image`}]};var mi=__exportAll$1({GraphicsOffloadStories:()=>gi,GraphicsOffloadStory:()=>hi}),hi=class GraphicsOffloadStory extends X{_offload=null;_box=null;static{o.registerClass({GTypeName:`AdwStorybookGraphicsOffload`},GraphicsOffloadStory)}constructor(){super(X.fromMeta(GraphicsOffloadStory.getMetadata(),`Default`))}static getMetadata(){return{...pi,component:n.GraphicsOffload.$gtype}}initialize(){this._offload=new n.GraphicsOffload({widthRequest:280,heightRequest:96}),this._offload.enabled=+(this.args.enabled===`disabled`),this._offload.black_background=this.args.blackBackground,this._box=new n.Box({halign:n.Align.CENTER,valign:n.Align.CENTER}),this._box.append(this._offload),this._applyChild(),this.addContent(this._box)}updateArgs(e){this._offload&&(this._offload.enabled=+(this.args.enabled===`disabled`),this._offload.black_background=this.args.blackBackground,this._applyChild())}_applyChild(){if(!this._offload)return;let e;switch(this.args.child){case`label`:e=new n.Label({label:`The child of an offloaded layer`});break;case`box`:{let t=new n.Box({orientation:n.Orientation.HORIZONTAL,spacing:12});for(let e of[`One`,`Two`,`Three`])t.append(new n.Label({label:e}));e=new n.CenterBox,e.set_center_widget(t);break}default:e=new n.Image({iconName:`camera-photo-symbolic`,pixelSize:48});break}this._offload.child=e}};o.type_ensure(hi.$gtype);const gi={stories:[hi]},_i={title:`Feedback/About Dialog`,description:`Adw.AboutDialog — the standard Adwaita about window with application name, version, credits and license.`,controls:[{name:`applicationName`,label:`Application name`,type:J.TEXT,defaultValue:`Adwaita Storybook`},{name:`version`,label:`Version`,type:J.TEXT,defaultValue:`0.11.0`}]};var vi=__exportAll$1({AboutDialogStories:()=>bi,AboutDialogStory:()=>yi}),yi=class AboutDialogStory extends X{_button=null;static{o.registerClass({GTypeName:`AdwStorybookAboutDialog`},AboutDialogStory)}constructor(){super(X.fromMeta(AboutDialogStory.getMetadata(),`Default`))}static getMetadata(){return{..._i,component:s.AboutDialog.$gtype}}initialize(){this._button=new n.Button({label:`Show dialog`,halign:n.Align.CENTER,valign:n.Align.CENTER}),this._button.add_css_class(`pill`),this._button.add_css_class(`suggested-action`),this._button.connect(`clicked`,()=>this._present()),this.addContent(this._button)}_present(){new s.AboutDialog({applicationName:this.args.applicationName,applicationIcon:`application-x-executable-symbolic`,developerName:`A GJSify Project`,version:this.args.version,comments:`A live catalogue of native GTK and Adwaita widgets, rendered under GJS.`,website:`https://github.com/gjsify/gjsify`,issueUrl:`https://github.com/gjsify/gjsify/issues`,licenseType:n.License.MIT_X11,developers:[`Ada Lovelace`,`Grace Hopper`],designers:[`Margaret Hamilton`],copyright:`© 2026 The GJSify Project`}).present(this)}updateArgs(e){}};o.type_ensure(yi.$gtype);const bi={stories:[yi]},xi={title:`Feedback/Alert Dialog`,description:`Adw.AlertDialog — a modal dialog with a heading, body text and responses, including a destructive action.`,controls:[{name:`heading`,label:`Heading`,type:J.TEXT,defaultValue:`Delete Project?`},{name:`body`,label:`Body`,type:J.TEXT,defaultValue:`This will permanently remove the project and all of its files. This action cannot be undone.`}]};var Si=__exportAll$1({AlertDialogStories:()=>wi,AlertDialogStory:()=>Ci}),Ci=class AlertDialogStory extends X{_button=null;static{o.registerClass({GTypeName:`AdwStorybookAlertDialog`},AlertDialogStory)}constructor(){super(X.fromMeta(AlertDialogStory.getMetadata(),`Default`))}static getMetadata(){return{...xi,component:s.AlertDialog.$gtype}}initialize(){this._button=new n.Button({label:`Show dialog`,halign:n.Align.CENTER,valign:n.Align.CENTER}),this._button.add_css_class(`pill`),this._button.add_css_class(`suggested-action`),this._button.connect(`clicked`,()=>this._present()),this.addContent(this._button)}_present(){let e=new s.AlertDialog({heading:this.args.heading,body:this.args.body});e.add_response(`cancel`,`Cancel`),e.add_response(`delete`,`Delete`),e.set_response_appearance(`delete`,s.ResponseAppearance.DESTRUCTIVE),e.set_default_response(`cancel`),e.set_close_response(`cancel`),e.present(this)}updateArgs(e){}};o.type_ensure(Ci.$gtype);const wi={stories:[Ci]},Ti={title:`Feedback/Dialog`,description:`Adw.Dialog — the generic dialog: arbitrary content over a scrim, anchored as a floating card on a wide window and as a bottom sheet on a narrow one.`,controls:[{name:`title`,label:`Title`,type:J.TEXT,defaultValue:`Preferences`},{name:`presentation`,label:`Presentation`,type:J.SELECT,options:[{label:`Auto`,value:`auto`},{label:`Floating`,value:`floating`},{label:`Bottom sheet`,value:`bottom-sheet`}],defaultValue:`auto`}]};var Ei=__exportAll$1({DialogStories:()=>ki,DialogStory:()=>Oi});const Di={auto:s.DialogPresentationMode.AUTO,floating:s.DialogPresentationMode.FLOATING,"bottom-sheet":s.DialogPresentationMode.BOTTOM_SHEET};var Oi=class DialogStory extends X{_button=null;static{o.registerClass({GTypeName:`AdwStorybookDialog`},DialogStory)}constructor(){super(X.fromMeta(DialogStory.getMetadata(),`Default`))}static getMetadata(){return{...Ti,component:s.Dialog.$gtype}}initialize(){this._button=new n.Button({label:`Show dialog`,halign:n.Align.CENTER,valign:n.Align.CENTER}),this._button.add_css_class(`pill`),this._button.add_css_class(`suggested-action`),this._button.connect(`clicked`,()=>this._present()),this.addContent(this._button)}_present(){let e=new s.PreferencesGroup({title:`Appearance`});e.add(new s.SwitchRow({title:`Dark style`,subtitle:`Use a dark colour scheme`,active:!0}));let t=new s.PreferencesPage({title:`General`});t.add(e),new s.Dialog({title:this.args.title,child:t,presentation_mode:Di[this.args.presentation]}).present(this)}updateArgs(e){}};o.type_ensure(Oi.$gtype);const ki={stories:[Oi]},Ai={title:`Feedback/Emoji Chooser`,description:`Gtk.EmojiChooser — the popover a text widget opens to insert an emoji: a search entry over nine named sections, a toolbar that follows the scroll position, and an emoji-picked signal.`,controls:[{name:`search`,label:`Search`,type:J.TEXT,defaultValue:`smile`}]};var ji=__exportAll$1({EmojiChooserStories:()=>Ni,EmojiChooserStory:()=>Mi}),Mi=class EmojiChooserStory extends X{_button=null;_entry=null;_chooser=null;static{o.registerClass({GTypeName:`AdwStorybookEmojiChooser`},EmojiChooserStory)}constructor(){super(X.fromMeta(EmojiChooserStory.getMetadata(),`Default`))}static getMetadata(){return{...Ai,component:n.EmojiChooser.$gtype}}initialize(){this._entry=new n.Entry({placeholderText:`Type a message…`,halign:n.Align.CENTER}),this._entry.add_css_class(`card`),this._entry.hexpand=!0,this._chooser=n.EmojiChooser.new(),this._chooser.connect(`emoji-picked`,(e,t)=>{this._entry!==null&&this._entry.set_text(this._entry.get_text()+t)}),this._button=new n.Button({iconName:`face-smile-symbolic`,tooltipText:`Insert an emoji`,valign:n.Align.CENTER}),this._button.add_css_class(`flat`),this._button.add_css_class(`circular`),this._chooser.set_parent(this._button);let e=new n.Box({orientation:n.Orientation.HORIZONTAL,spacing:6});e.append(this._button),e.append(this._entry);let t=new n.Box({orientation:n.Orientation.VERTICAL,spacing:12,halign:n.Align.CENTER,valign:n.Align.CENTER});t.append(e),this.addContent(t),this._applySearch(this.args.search)}_searchEntry(){let e=this._chooser?.get_first_child()??null;for(;e!==null;){if(e instanceof n.SearchEntry)return e;e=e.get_first_child()}return null}_applySearch(e){this._searchEntry()?.set_text(e)}updateArgs(e){typeof e.search==`string`&&this._applySearch(e.search)}};o.type_ensure(Mi.$gtype);const Ni={stories:[Mi]},Pi={title:`Feedback/GTK About Dialog`,description:`Gtk.AboutDialog — GTK's own about window: a dialog-size logo over the program name, with the Credits, License and System pages behind a stack switcher. NOT Adw.AboutDialog, which is a navigation view of preference rows.`,controls:[{name:`programName`,label:`Program name`,type:J.TEXT,defaultValue:`Calculator`},{name:`version`,label:`Version`,type:J.TEXT,defaultValue:`48.1`},{name:`licenseType`,label:`License type`,type:J.SELECT,options:[{label:`Unknown`,value:`unknown`},{label:`Custom`,value:`custom`},{label:`GPL 3.0`,value:`gpl-3-0`},{label:`MIT`,value:`mit-x11`},{label:`BSD 3-Clause`,value:`bsd-3`},{label:`Apache 2.0`,value:`apache-2-0`},{label:`0BSD`,value:`0bsd`}],defaultValue:`gpl-3-0`},{name:`withCredits`,label:`With credits`,type:J.BOOLEAN,defaultValue:!0}]};var Fi=__exportAll$1({GtkAboutDialogStories:()=>Ri,GtkAboutDialogStory:()=>Li});const Ii={unknown:n.License.UNKNOWN,custom:n.License.CUSTOM,"gpl-3-0":n.License.GPL_3_0,"mit-x11":n.License.MIT_X11,"bsd-3":n.License.BSD_3,"apache-2-0":n.License.APACHE_2_0,"0bsd":n.License[`0BSD`]};var Li=class GtkAboutDialogStory extends X{_button=null;static{o.registerClass({GTypeName:`AdwStorybookGtkAboutDialog`},GtkAboutDialogStory)}constructor(){super(X.fromMeta(GtkAboutDialogStory.getMetadata(),`Default`))}static getMetadata(){return{...Pi,component:n.AboutDialog.$gtype}}initialize(){this._button=new n.Button({label:`Show dialog`,halign:n.Align.CENTER,valign:n.Align.CENTER}),this._button.add_css_class(`pill`),this._button.add_css_class(`suggested-action`),this._button.connect(`clicked`,()=>this._present()),this.addContent(this._button)}_present(){let e=new n.AboutDialog({programName:this.args.programName,version:this.args.version,logoIconName:`application-x-executable-symbolic`,comments:`An arithmetic calculator for the GNOME desktop.`,website:`https://gitlab.gnome.org/World/gnome-calculator`,websiteLabel:`GNOME Calculator`,copyright:`© 2026 The GNOME Project`,systemInformation:`GTK 4.24.0
|
|
347
|
+
\n${this._options.css??``}`);let r=t.Display.get_default();if(!r){y.error(`No display found`);return}n.StyleContext.add_provider_for_display(r,e,n.STYLE_PROVIDER_PRIORITY_APPLICATION)}_onActivate(){if(!this._window){this._window=new mn({application:this}),this._options.title&&this._window.set_title(this._options.title);try{this._window.populateSidebar(this._options.stories)}catch(e){y.error(`Failed to create story instances:`,e)}installDevtools(this,{enabled:this._options.devtools||void 0,extend:[storybookDevtoolsExtension(this._window)]}),probeEnabled()&&installStorybookProbe(this,this._window,this._options.probe)}this._window.present()}};o.type_ensure(hn.$gtype);function collectStoryModules(e){return collectStoryModules$1(e)}function buildGtkChrome(t){let r=new s.PreferencesPage,i=new s.PreferencesGroup,o=new n.Box({orientation:n.Orientation.VERTICAL,halign:n.Align.CENTER,valign:n.Align.CENTER,margin_top:12,margin_bottom:12,spacing:12,hexpand:!0});return o.add_css_class(`story-stage`),i.add(o),r.add(i),t.set_child(r),{root:t,hasStage:!0,setStageContent(e){let t=o.get_first_child();for(;t;)t.unparent(),t=o.get_first_child();o.append(e)},setChromeText(t,n){i.set_title(e.markup_escape_text(t,-1)),i.set_description(e.markup_escape_text(n,-1))}}}var StoryCore=class extends StoryViewBase{constructor(e,t,n){super(),this._widget=e,this.initBase(t,n)}createChrome(e){return buildGtkChrome(this._widget)}initialize(){this._widget.initialize()}updateArgs(e){this._widget.updateArgs(e)}teardown(){this._widget.teardown()}emitArgs(e){super.emitArgs(e),this._widget.notify(`args`)}},Z=class StoryWidget extends s.Bin{static{o.registerClass({GTypeName:`StoryWidget`,Properties:{meta:o.ParamSpec.object(`meta`,`Meta`,`Story metadata`,o.ParamFlags.READWRITE,o.Object),story:o.ParamSpec.string(`story`,`Story Name`,`Story name`,o.ParamFlags.READWRITE,``),args:o.ParamSpec.object(`args`,`Args`,`Story arguments`,o.ParamFlags.READWRITE,o.Object)}},StoryWidget)}constructor(e,t={}){super(t),this._core=new StoryCore(this,e.meta,e.story)}static fromMeta(e,t){return{meta:e,story:t,args:argsFromControls(e.controls)}}get meta(){return this._core.meta}get story(){return this._core.story}get args(){return this._core.args}set args(e){this._core.args=e}onArgsChanged(e){return this._core.onArgsChanged(e)}setArg(e,t){this._core.setArg(e,t)}initialize(){}updateArgs(e){}teardown(){}addContent(e){this._core.addContent(e)}};o.type_ensure(Z.$gtype);const gn={applicationId:null,applicationName:null,developerName:null,version:null,website:null,supportUrl:null,issueUrl:null,license:null,releaseNotes:null};function localeScore(e,t){let n=0;for(let r=0;;r++){let i=r<e.length?e.charAt(r):`\0`,o=r<t.length?t.charAt(r):`\0`;if((i===`-`||i===`\0`)&&(o===`-`||o===`\0`)&&n++,i===`\0`||o===`\0`)break;if(i!==o)return 0}return n}function appdataLocale(e,t={}){let n,r=e[0];r!==void 0&&!r.includes(`_`)&&t.LANG!==void 0&&t.LANG.includes(`_`)&&(n=t.LANG),n=n??r??`C`,n.endsWith(`.UTF-8`)&&(n=n.slice(0,-6));let i=``,o=n.indexOf(`@`);if(o>=0){let e=n.slice(o);e.startsWith(`@cyrillic`)?i=`-Cyrl`:e.startsWith(`@devanagari`)?i=`-Deva`:e.startsWith(`@latin`)?i=`-Latn`:e.startsWith(`@shaw`)?i=`-Shaw`:e.startsWith(`@euro`)||(i=`-euro`),n=n.slice(0,o)}return n.replace(/_/g,`-`)+i}function childElements(e,t,n){let r=[],i=t;for(;i<n;){let t=e[i];if(t.kind!==`open`){i+=1;continue}let o=t;if(o.selfClosing){r.push({name:o.name,attributes:o.attributes,start:i+1,end:i+1}),i+=1;continue}let s=1,c=i+1;for(;c<n&&s>0;){let t=e[c];t.kind===`open`?t.selfClosing||(s+=1):t.kind===`close`&&--s,c+=1}let l=s===0?c-1:n;r.push({name:o.name,attributes:o.attributes,start:i+1,end:l}),i=s===0?c:n}return r}function elementText(e,t){let n=0,r=``;for(let i=t.start;i<t.end;i++){let t=e[i];t.kind===`open`?t.selfClosing||(n+=1):t.kind===`close`?--n:n===0&&(r+=t.text)}return r.trim()}const lang=e=>e.attributes[`xml:lang`]??`C`;function considerTranslatable(e,t,n,r){(e.value===null&&lang(t)===`C`||r>e.score)&&(e.score=r,e.value=n)}function escapeMarkup(e){return e.replace(/&/g,`&`).replace(/</g,`<`).replace(/>/g,`>`).replace(/'/g,`'`).replace(/"/g,`"`)}function inlineMarkup(e,t){let n=``,r=!0,i=0,o=0;for(let s=t.start;s<t.end;s++){let t=e[s];if(t.kind===`open`){let e=t,r=!e.selfClosing;if(r&&(o+=1),i>0)continue;e.name===`em`||e.name===`code`?n+=`<${e.name}>`:r&&(i=o)}else if(t.kind===`close`)i>0&&o===i?i=0:i===0&&(t.name===`em`||t.name===`code`)&&(n+=`</${t.name}>`),--o;else if(i===0){let e=``;for(let n of t.text){if(n===`
|
|
348
|
+
`||n===` `||n===` `){if(r)continue;e+=` `,r=!0;continue}e+=n,r=!1}n+=escapeMarkup(e)}}return n}function parseDescription(e,t,n){let r=new Map,bucketFor=(e,t)=>{if(localeScore(n,e)===0&&e!==`C`)return null;let i=r.get(e);return i===void 0&&(i=[],r.set(e,i),t!==void 0&&i.push(`<${t}>\n`)),i};for(let n of childElements(e,t.start,t.end))if(n.name===`p`)bucketFor(lang(n))?.push(`<p>${inlineMarkup(e,n)}</p>\n`);else if(n.name===`ul`||n.name===`ol`){for(let e of r.values())e.push(`<${n.name}>\n`);for(let t of childElements(e,n.start,n.end))t.name===`li`&&bucketFor(lang(t),n.name)?.push(`<li>${inlineMarkup(e,t)}</li>\n`);for(let e of r.values())e.push(`</${n.name}>\n`)}let i=r.get(`C`),o=0;for(let[e,t]of r){let r=localeScore(n,e);r>o&&(o=r,i=t)}return i===void 0?null:i.join(``)}function parseAppdata(e,t={}){let n=t.locale??`C`,r=scanXml(e),i=childElements(r,0,r.length).find(e=>e.name===`component`||e.name===`application`);if(i===void 0)return{...gn};let o={...gn},s={value:null,score:0},c={value:null,score:0},l=[],u=null;for(let e of childElements(r,i.start,i.end))switch(e.name){case`id`:o.applicationId===null&&(o.applicationId=elementText(r,e));break;case`name`:considerTranslatable(s,e,elementText(r,e),localeScore(n,lang(e)));break;case`developer`:for(let t of childElements(r,e.start,e.end)){if(t.name!==`name`)continue;let e=localeScore(n,lang(t))+1024;e>c.score&&(lang(t)===`C`||e>1024)&&(c.score=e,c.value=elementText(r,t))}break;case`developer_name`:considerTranslatable(c,e,elementText(r,e),localeScore(n,lang(e)));break;case`url`:{let t=elementText(r,e);e.attributes.type===`homepage`?o.website=t:e.attributes.type===`bugtracker`?o.issueUrl=t:e.attributes.type===`help`&&(o.supportUrl=t);break}case`launchable`:e.attributes.type===`desktop-id`&&l.push(elementText(r,e));break;case`project_license`:o.license===null&&(o.license=elementText(r,e));break;case`releases`:u===null&&(u=e);break;default:break}if(o.applicationName=s.value,o.developerName=c.value,u!==null){let e=childElements(r,u.start,u.end).filter(e=>e.name===`release`);o.version=e[0]?.attributes.version??null;let i=t.releaseNotesVersion;if(i!==void 0&&i!==``){let t=e.find(e=>e.attributes.version===i),s=t&&childElements(r,t.start,t.end).find(e=>e.name===`description`);s&&(o.releaseNotes=parseDescription(r,s,n))}}o.applicationId!==null&&o.applicationId.endsWith(`.desktop`)&&(l.includes(`${o.applicationId}.desktop`)||(o.applicationId=o.applicationId.slice(0,-8)));for(let e of Object.keys(o))o[e]===``&&(o[e]=null);return o}const _n={"GPL-2.0-or-later":n.License.GPL_2_0,"GPL-3.0-or-later":n.License.GPL_3_0,"LGPL-2.1-or-later":n.License.LGPL_2_1,"LGPL-3.0-or-later":n.License.LGPL_3_0,"BSD-2-Clause":n.License.BSD,MIT:n.License.MIT_X11,"Artistic-2.0":n.License.ARTISTIC,"GPL-2.0-only":n.License.GPL_2_0_ONLY,"GPL-3.0-only":n.License.GPL_3_0_ONLY,"LGPL-2.1-only":n.License.LGPL_2_1_ONLY,"LGPL-3.0-only":n.License.LGPL_3_0_ONLY,"AGPL-3.0-or-later":n.License.AGPL_3_0,"AGPL-3.0-only":n.License.AGPL_3_0_ONLY,"BSD-3-Clause":n.License.BSD_3,"Apache-2.0":n.License.APACHE_2_0,"MPL-2.0":n.License.MPL_2_0,"0BSD":n.License[`0BSD`],"GPL-2.0":n.License.GPL_2_0_ONLY,"GPL-3.0":n.License.GPL_3_0_ONLY};function licenseTypeFor(e){return _n[e]??n.License.CUSTOM}function hasAppdataConstructor(e=s){try{return typeof e?.AboutDialog?.new_from_appdata==`function`}catch{return!1}}function applyAppdataFields(e,t,n){return t.applicationId!==null&&(e.applicationIcon=t.applicationId),t.applicationName!==null&&(e.applicationName=t.applicationName),t.developerName!==null&&(e.developerName=t.developerName),t.website!==null&&(e.website=t.website),t.supportUrl!==null&&(e.supportUrl=t.supportUrl),t.issueUrl!==null&&(e.issueUrl=t.issueUrl),t.license!==null&&(e.licenseType=licenseTypeFor(t.license)),n!==void 0&&n!==``&&(e.releaseNotesVersion=n),t.releaseNotes!==null&&(e.releaseNotes=t.releaseNotes),t.version!==null&&(e.version=t.version),e}function buildAboutDialogFromAppdata(t,n={}){let r=parseAppdata(t,{locale:n.locale??appdataLocale(e.get_language_names(),{LANG:e.getenv(`LANG`)??void 0}),releaseNotesVersion:n.releaseNotesVersion});return applyAppdataFields(new s.AboutDialog,r,n.releaseNotesVersion)}function resourceExists(e){try{return r.resources_get_info(e,r.ResourceLookupFlags.NONE),!0}catch{return!1}}function readResource(e){try{let t=r.resources_lookup_data(e,r.ResourceLookupFlags.NONE);return new TextDecoder().decode(t.toArray())}catch{return null}}function readFile(t){try{let[n,r]=e.file_get_contents(t);return n?new TextDecoder().decode(r):null}catch{return null}}let vn=!1;function createAboutDialog(e={}){let{appdataResource:t,appdataPath:n,releaseNotesVersion:r}=e,i=t!==void 0&&resourceExists(t),o;if(!e.forceParsedAppdata&&i&&hasAppdataConstructor())o=s.AboutDialog.new_from_appdata(t,r??``);else{let c=(i?readResource(t):null)??(n===void 0?null:readFile(n));c===null?(y.error(`@gjsify/adwaita-app: no AppStream metainfo found for the About dialog; looked at resource ${t??`(none given)`} and file ${n??`(none given)`}`),o=new s.AboutDialog):(!vn&&!e.forceParsedAppdata&&i&&(vn=!0,y.log(`@gjsify/adwaita-app: Adw.AboutDialog.new_from_appdata is not in this GTK runtime (expected on Windows — gjsify/gjsify#1662); building the About dialog from the AppStream metainfo directly.`)),o=buildAboutDialogFromAppdata(c,{releaseNotesVersion:r}))}return e.applicationIcon!==void 0&&(o.applicationIcon=e.applicationIcon),e.version!==void 0&&(o.version=e.version),o}function applyAboutLinks(e,t){for(let n of t??[])n.title&&n.url&&e.add_link(n.title,n.url)}function resolveIconDir(e={}){let t=nonEmpty(e.iconDir)??nonEmpty(e.env?.GJSIFY_ICON_DIR);if(t!==void 0)return t;if(!(e.startDir===void 0||e.isDirectory===void 0))return searchUp(e.startDir,e.isDirectory)}function bundleDirFromUrl(e){if(e===void 0||!e.startsWith(`file://`))return;let t=decodeURIComponent(new URL(e).pathname),n=lastPathSeparatorIndex(t);if(!(n<0))return n===0?`/`:t.slice(0,n)}function searchUp(e,t){let n=e;for(let e=0;e<6;e++){let e=`${n===`/`?``:n}/data/icons`;if(t(e))return e;let r=lastPathSeparatorIndex(n);if(r<=0){if(n===`/`)break;n=`/`}else n=n.slice(0,r)}}function nonEmpty(e){if(e===void 0)return;let t=e.trim();return t===``?void 0:t}`application-x-executable.audio-volume-high.audio-volume-low.audio-volume-medium.audio-volume-muted.avatar-default.camera-photo.contact-new.dialog-error.dialog-warning.document-edit.document-open.document-save.edit-clear.edit-copy.edit-find.emblem-system.emoji-activities.emoji-body.emoji-flags.emoji-food.emoji-nature.emoji-objects.emoji-people.emoji-recent.emoji-symbols.emoji-travel.face-smile.folder.folder-documents.folder-download.folder-music.go-down.go-home.go-next.go-previous.go-up.image-missing.list-add.list-remove.mail-reply-sender.mail-send.mail-unread.media-eject.media-playback-pause.media-playback-start.media-playlist-repeat.network-wireless.open-menu.pan-down.pan-end.pan-end-rtl.preferences-system.printer.send-to.sidebar-show.starred.system-search.user-trash.value-decrease.value-increase.view-conceal.view-grid.view-list.view-more.view-paged.view-refresh.view-reveal.window-close.window-maximize.window-minimize.window-restore`.split(`.`);let yn=null;function registerBundledIconResource(){if(yn)return yn;let t=e.base64_decode(`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`);return yn=r.Resource.new_from_data(new e.Bytes(t)),r.resources_register(yn),yn}function addBundledIconsToTheme(e){registerBundledIconResource(),e.add_resource_path(`/eu/jumplink/gjsify/adwaita-app/icons`)}function installBundledIconTheme(e={}){let r=e.prefer??`fallback`;if(r===`host`)return!1;let i=e.display===void 0?t.Display.get_default():e.display;return i?(addBundledIconsToTheme(n.IconTheme.get_for_display(i)),r===`bundled`&&n.Settings.get_for_display(i).set_property(`gtk-icon-theme-name`,`gjsify-adwaita-bundled`),!0):!1}function addAppIconDir(t,n,r={}){if(t.has_icon(n))return!1;let i=resolveIconDir({iconDir:r.iconDir,env:{GJSIFY_ICON_DIR:e.getenv(`GJSIFY_ICON_DIR`)??void 0},startDir:r.startDir??bundleDirFromUrl(import.meta.url),isDirectory:t=>e.file_test(t,e.FileTest.IS_DIR)});return i===void 0?!1:(t.add_search_path(i),!0)}var bn=class AdwaitaApp extends s.Application{static{o.registerClass({GTypeName:`GjsifyAdwaitaApp`},AdwaitaApp)}constructor(e){super({application_id:e.applicationId,flags:e.flags??r.ApplicationFlags.DEFAULT_FLAGS}),this._window=null,this._options=e,this._initActions(),this.connect(`startup`,()=>this._onStartup()),this.connect(`activate`,()=>this._onActivate())}_initActions(){if(this._options.quitAction!==!1){let e=new r.SimpleAction({name:`quit`});e.connect(`activate`,()=>this.quit()),this.add_action(e),this.set_accels_for_action(`app.quit`,[`<primary>q`])}if(this._options.about||this._options.aboutAppdata){let e=new r.SimpleAction({name:`about`});e.connect(`activate`,()=>this._showAbout()),this.add_action(e)}}_onStartup(){this._installBundledIcons(),this._installAppIcon(),this._options.css&&this._loadCss(this._options.css),this._installDevtools(),this._options.onStartup?.(this)}_installBundledIcons(){let e=this._options.bundledIcons;e!==!1&&installBundledIconTheme(typeof e==`object`?e:{})}_installAppIcon(){let e=t.Display.get_default();e&&addAppIconDir(n.IconTheme.get_for_display(e),this._options.about?.applicationIcon??this._options.applicationId,{iconDir:this._options.iconDir})}_loadCss(e){let r=t.Display.get_default();if(!r){y.error(`@gjsify/adwaita-app: no default display; CSS not applied`);return}let i=new n.CssProvider;i.load_from_string(e),n.StyleContext.add_provider_for_display(r,i,n.STYLE_PROVIDER_PRIORITY_APPLICATION)}_installDevtools(){let e=this._options.devtools;if(e===!1)return;let t=typeof e==`object`?e:{enabled:e||void 0};installDevtools(this,t)}_onActivate(){this._window||=this._options.createWindow(this),this._window.present()}_showAbout(){let e=this._options.aboutAppdata;if(e){createAboutDialog(e).present(this.get_active_window());return}let t=this._options.about;if(!t)return;let n=new s.AboutDialog({application_name:t.applicationName,application_icon:t.applicationIcon??this._options.applicationId});t.version&&(n.version=t.version),t.developerName&&(n.developer_name=t.developerName),t.website&&(n.website=t.website),t.issueUrl&&(n.issue_url=t.issueUrl),t.license&&(n.license=t.license),t.comments&&(n.comments=t.comments),t.copyright&&(n.copyright=t.copyright),t.developers?.length&&n.set_developers(t.developers),applyAboutLinks(n,t.links),n.present(this.get_active_window())}};async function runApplication(e,t){let n=!1;try{e.register(null),n=e.get_is_remote()}catch{n=!1}let r=await e.runAsync(t);return n&&y.error(`${e.applicationId??`This application`} is already running — brought the existing instance to the front instead of opening a second window.`),r}o.type_ensure(bn.$gtype);var xn=class LoadingStack extends n.Stack{static{o.registerClass({GTypeName:`GjsifyLoadingStack`},LoadingStack)}constructor(e={}){super(e);let t=new n.Box({orientation:n.Orientation.VERTICAL,halign:n.Align.CENTER,valign:n.Align.CENTER,hexpand:!0,vexpand:!0});t.append(new s.Spinner),this.add_named(t,`loading`),this._content=new s.Bin({hexpand:!0,vexpand:!0}),this.add_named(this._content,`content`),this._error=new s.StatusPage({iconName:`dialog-error-symbolic`,title:`Something went wrong`}),this.add_named(this._error,`error`),this.set_visible_child_name(`loading`)}setContent(e){this._content.set_child(e)}setError(e,t){this._error.set_title(e),this._error.set_description(t??``)}showLoading(){this.set_visible_child_name(`loading`)}showContent(){this.set_visible_child_name(`content`)}showError(){this.set_visible_child_name(`error`)}};o.type_ensure(xn.$gtype);async function runStorybook(e){return runApplication(new hn(e),[c.programInvocationName,...c.programArgs])}const Sn={title:`Buttons/Button Content`,description:`Adw.ButtonContent — pairs a symbolic icon with a label inside a Gtk.Button.`,controls:[{name:`label`,label:`Label`,type:Y.TEXT,defaultValue:`Download`},{name:`iconName`,label:`Icon`,type:Y.SELECT,options:[{label:`Download`,value:`folder-download-symbolic`},{label:`Add`,value:`list-add-symbolic`},{label:`Send`,value:`mail-send-symbolic`},{label:`Star`,value:`starred-symbolic`}],defaultValue:`folder-download-symbolic`},{name:`canShrink`,label:`Can shrink`,type:Y.BOOLEAN,defaultValue:!1}]};var Cn=__exportAll$1({ButtonContentStories:()=>Tn,ButtonContentStory:()=>wn}),wn=class ButtonContentStory extends Z{_content=null;_button=null;static{o.registerClass({GTypeName:`AdwStorybookButtonContent`},ButtonContentStory)}constructor(){super(Z.fromMeta(ButtonContentStory.getMetadata(),`Default`))}static getMetadata(){return{...Sn,component:s.ButtonContent.$gtype}}initialize(){this._content=new s.ButtonContent({label:this.args.label,iconName:this.args.iconName,canShrink:this.args.canShrink}),this._button=new n.Button({child:this._content}),this._button.add_css_class(`suggested-action`),this._button.add_css_class(`pill`),this.addContent(this._button)}updateArgs(e){this._content&&(this._content.label=this.args.label,this._content.iconName=this.args.iconName,this._content.canShrink=this.args.canShrink)}};o.type_ensure(wn.$gtype);const Tn={stories:[wn]},En={title:`Buttons/Button Styles`,description:`Buttons with Adwaita style classes: .pill, .circular, .suggested-action, .destructive-action, .flat.`,controls:[{name:`label`,label:`Demo label`,type:Y.TEXT,defaultValue:`Click me`},{name:`style`,label:`Demo style`,type:Y.SELECT,options:[{label:`Pill`,value:`pill`},{label:`Circular (icon)`,value:`circular`},{label:`Suggested`,value:`suggested-action`},{label:`Destructive`,value:`destructive-action`},{label:`Flat`,value:`flat`}],defaultValue:`suggested-action`}]};var Dn=__exportAll$1({ButtonStylesStories:()=>An,ButtonStylesStory:()=>kn});const On=[`pill`,`circular`,`suggested-action`,`destructive-action`,`flat`];var kn=class ButtonStylesStory extends Z{_demo=null;static{o.registerClass({GTypeName:`AdwStorybookButtonStyles`},ButtonStylesStory)}constructor(){super(Z.fromMeta(ButtonStylesStory.getMetadata(),`Default`))}static getMetadata(){return{...En,component:n.Button.$gtype}}initialize(){let e=new s.WrapBox({childSpacing:12,lineSpacing:12,halign:n.Align.CENTER}),t=new n.Button({label:`Pill`});t.add_css_class(`pill`),e.append(t);let r=new n.Button({iconName:`list-add-symbolic`});r.add_css_class(`circular`),e.append(r);let i=new n.Button({label:`Suggested`});i.add_css_class(`suggested-action`),e.append(i);let o=new n.Button({label:`Delete`});o.add_css_class(`destructive-action`),e.append(o);let c=new n.Button({label:`Flat`});c.add_css_class(`flat`),e.append(c),this._demo=new n.Button({label:this.args.label}),this._applyStyle(this.args.style),e.append(this._demo),this.addContent(e)}_applyStyle(e){if(this._demo){for(let e of On)this._demo.remove_css_class(e);this._demo.add_css_class(e)}}updateArgs(e){this._demo&&(this._demo.label=this.args.label,this._applyStyle(this.args.style))}};o.type_ensure(kn.$gtype);const An={stories:[kn]},jn={title:`Buttons/Color Dialog Button`,description:`Gtk.ColorDialogButton — a button that shows a colour and opens a chooser for it. It is insensitive until a dialog is set, and the swatch announces the channel percentages.`,controls:[{name:`rgba`,label:`Colour`,type:Y.TEXT,defaultValue:`#3584e4`},{name:`title`,label:`Dialog title`,type:Y.TEXT,defaultValue:`Choose a colour`}]};var Mn=__exportAll$1({ColorDialogButtonStories:()=>Pn,ColorDialogButtonStory:()=>Nn}),Nn=class ColorDialogButtonStory extends Z{_button=null;static{o.registerClass({GTypeName:`AdwStorybookColorDialogButton`},ColorDialogButtonStory)}constructor(){super(Z.fromMeta(ColorDialogButtonStory.getMetadata(),`Default`))}static getMetadata(){return{...jn,component:n.ColorDialogButton.$gtype}}initialize(){this._button=new n.ColorDialogButton({halign:n.Align.CENTER}),this._button.dialog=new n.ColorDialog,this._apply(),this.addContent(this._button)}updateArgs(e){this._apply()}_apply(){if(!this._button)return;let e=new t.RGBA;e.parse(this.args.rgba)&&(this._button.rgba=e),this._button.dialog.title=this.args.title||``}};o.type_ensure(Nn.$gtype);const Pn={stories:[Nn]},Fn={title:`Buttons/Font Dialog Button`,description:`Gtk.FontDialogButton — a button that shows a font and opens a chooser for it. At level family the label is the family alone; from font up it is family plus size, and the size box appears.`,controls:[{name:`fontDesc`,label:`Font`,type:Y.TEXT,defaultValue:`Sans Bold 12`},{name:`level`,label:`Level`,type:Y.SELECT,options:[{label:`Family`,value:`family`},{label:`Face`,value:`face`},{label:`Font`,value:`font`},{label:`Features`,value:`features`}],defaultValue:`font`},{name:`useFont`,label:`Draw in the font`,type:Y.BOOLEAN,defaultValue:!0},{name:`useSize`,label:`Draw in the size`,type:Y.BOOLEAN,defaultValue:!0}]};var In=__exportAll$1({FontDialogButtonStories:()=>Rn,FontDialogButtonStory:()=>Ln}),Ln=class FontDialogButtonStory extends Z{_button=null;static{o.registerClass({GTypeName:`AdwStorybookFontDialogButton`},FontDialogButtonStory)}constructor(){super(Z.fromMeta(FontDialogButtonStory.getMetadata(),`Default`))}static getMetadata(){return{...Fn,component:n.FontDialogButton.$gtype}}initialize(){this._button=new n.FontDialogButton({halign:n.Align.CENTER}),this._button.dialog=new n.FontDialog,this._apply(),this.addContent(this._button)}updateArgs(e){this._apply()}_apply(){if(!this._button)return;this._button.level=this.args.level;let e=l.FontDescription.from_string(this.args.fontDesc);e!==null&&(this._button.fontDesc=e),this._button.useFont=this.args.useFont,this._button.useSize=this.args.useSize}};o.type_ensure(Ln.$gtype);const Rn={stories:[Ln]},zn={title:`Buttons/Link Button`,description:`Gtk.LinkButton — a button that follows a URI. It is a Gtk.Button with a uri and a visited state: clicking launches the URI and marks the link visited, and pointing it somewhere new un-visits it.`,controls:[{name:`label`,label:`Label`,type:Y.TEXT,defaultValue:`GNOME`},{name:`uri`,label:`URI`,type:Y.TEXT,defaultValue:`https://gnome.org`},{name:`visited`,label:`Visited`,type:Y.BOOLEAN,defaultValue:!1}]};var Bn=__exportAll$1({LinkButtonStories:()=>Hn,LinkButtonStory:()=>Vn}),Vn=class LinkButtonStory extends Z{_button=null;static{o.registerClass({GTypeName:`AdwStorybookLinkButton`},LinkButtonStory)}constructor(){super(Z.fromMeta(LinkButtonStory.getMetadata(),`Default`))}static getMetadata(){return{...zn,component:n.LinkButton.$gtype}}initialize(){this._button=new n.LinkButton({halign:n.Align.CENTER}),this._apply(),this.addContent(this._button)}updateArgs(e){this._apply()}_apply(){if(!this._button)return;let e=this.args.label;this._button.label=e,this._button.uri=this.args.uri,this._button.visited=this.args.visited}};o.type_ensure(Vn.$gtype);const Hn={stories:[Vn]},Un=[`Save as…`,`Export`,`Print`],Wn={title:`Buttons/Menu Button`,description:`Gtk.MenuButton — a button whose only action is to open a menu. Where a Split Button has a primary action beside its arrow, this one has none: every choice lives in the popover.`,controls:[{name:`iconName`,label:`Icon`,type:Y.SELECT,options:[{label:`Hamburger`,value:`open-menu-symbolic`},{label:`More`,value:`view-more-symbolic`},{label:`Open`,value:`document-open-symbolic`}],defaultValue:`open-menu-symbolic`},{name:`menuTitle`,label:`Menu title`,type:Y.TEXT,defaultValue:`Document`}]};var Gn=__exportAll$1({MenuButtonStories:()=>qn,MenuButtonStory:()=>Kn}),Kn=class MenuButtonStory extends Z{_widget=null;static{o.registerClass({GTypeName:`AdwStorybookMenuButton`},MenuButtonStory)}constructor(){super(Z.fromMeta(MenuButtonStory.getMetadata(),`Default`))}static getMetadata(){return{...Wn,component:n.MenuButton.$gtype}}initialize(){this._widget=new n.MenuButton({halign:n.Align.CENTER}),this._apply(),this.addContent(this._widget)}updateArgs(e){this._apply()}_buildMenu(e){let t=new r.Menu;for(let e of Un)t.append(e,`app.${e.toLowerCase().replace(/[^a-z]+/g,`-`)}`);let n=new r.Menu;return n.append_section(e.length>0?e:null,t),n}_apply(){this._widget&&(this._widget.iconName=this.args.iconName,this._widget.menuModel=this._buildMenu(this.args.menuTitle))}};o.type_ensure(Kn.$gtype);const qn={stories:[Kn]},Jn=[`audio-volume-muted-symbolic`,`audio-volume-low-symbolic`,`audio-volume-high-symbolic`],Yn={title:`Buttons/Scale Button`,description:`Gtk.ScaleButton — a button whose press opens a scale. The icon follows the value: no list draws image-missing, one name is used throughout, two split the range, three put the first at the bottom and the second at the top and share the interior, five spread it.`,controls:[{name:`value`,label:`Value`,type:Y.NUMBER,defaultValue:70},{name:`orientation`,label:`Orientation`,type:Y.SELECT,options:[{label:`Vertical`,value:`vertical`},{label:`Horizontal`,value:`horizontal`}],defaultValue:`vertical`},{name:`hasFrame`,label:`Has frame`,type:Y.BOOLEAN,defaultValue:!1}]};var Xn=__exportAll$1({ScaleButtonStories:()=>Qn,ScaleButtonStory:()=>Zn}),Zn=class ScaleButtonStory extends Z{_button=null;static{o.registerClass({GTypeName:`AdwStorybookScaleButton`},ScaleButtonStory)}constructor(){super(Z.fromMeta(ScaleButtonStory.getMetadata(),`Default`))}static getMetadata(){return{...Yn,component:n.ScaleButton.$gtype}}initialize(){this._button=new n.ScaleButton({halign:n.Align.CENTER}),this._button.icons=Jn,this._apply(),this.addContent(this._button)}updateArgs(e){this._apply()}_apply(){this._button&&(this._button.orientation=this.args.orientation===`horizontal`?n.Orientation.HORIZONTAL:n.Orientation.VERTICAL,this._button.hasFrame=this.args.hasFrame,this._button.value=this.args.value)}};o.type_ensure(Zn.$gtype);const Qn={stories:[Zn]},$n={title:`Buttons/Split Button`,description:`Adw.SplitButton — a primary action button paired with a dropdown menu of related actions.`,controls:[{name:`label`,label:`Label`,type:Y.TEXT,defaultValue:`Save`},{name:`iconName`,label:`Icon`,type:Y.SELECT,options:[{label:`None`,value:``},{label:`Save`,value:`document-save-symbolic`},{label:`Send`,value:`mail-send-symbolic`},{label:`Add`,value:`list-add-symbolic`}],defaultValue:`document-save-symbolic`}]},er={title:`Buttons/Split Button Flat`,description:`Adw.SplitButton with the .flat style class, as used inside header bars and toolbars.`,controls:[{name:`label`,label:`Label`,type:Y.TEXT,defaultValue:`Reply`},{name:`iconName`,label:`Icon`,type:Y.SELECT,options:[{label:`None`,value:``},{label:`Reply`,value:`mail-reply-sender-symbolic`},{label:`Edit`,value:`document-edit-symbolic`},{label:`Open`,value:`document-open-symbolic`}],defaultValue:`mail-reply-sender-symbolic`}]};var tr=__exportAll$1({SplitButtonFlatStory:()=>rr,SplitButtonStories:()=>ir,SplitButtonStory:()=>nr});function buildMenu(){let e=new r.Menu;return e.append(`Save as…`,`app.save-as`),e.append(`Export`,`app.export`),e.append(`Print`,`app.print`),e}var nr=class SplitButtonStory extends Z{_widget=null;static{o.registerClass({GTypeName:`AdwStorybookSplitButton`},SplitButtonStory)}constructor(){super(Z.fromMeta(SplitButtonStory.getMetadata(),`Default`))}static getMetadata(){return{...$n,component:s.SplitButton.$gtype}}initialize(){this._widget=new s.SplitButton({label:this.args.label,menuModel:buildMenu()});let e=this.args.iconName;e&&(this._widget.iconName=e),this.addContent(this._widget)}updateArgs(e){if(!this._widget)return;let t=this.args.iconName;t?this._widget.iconName=t:this._widget.label=this.args.label}};o.type_ensure(nr.$gtype);var rr=class SplitButtonFlatStory extends Z{_widget=null;static{o.registerClass({GTypeName:`AdwStorybookSplitButtonFlat`},SplitButtonFlatStory)}constructor(){super(Z.fromMeta(SplitButtonFlatStory.getMetadata(),`Default`))}static getMetadata(){return{...er,component:s.SplitButton.$gtype}}initialize(){this._widget=new s.SplitButton({label:this.args.label,menuModel:buildMenu()}),this._widget.add_css_class(`flat`);let e=this.args.iconName;e&&(this._widget.iconName=e),this.addContent(this._widget)}updateArgs(e){if(!this._widget)return;let t=this.args.iconName;t?this._widget.iconName=t:this._widget.label=this.args.label}};o.type_ensure(rr.$gtype);const ir={stories:[nr,rr]},ar={title:`Buttons/Toggle Button`,description:`Gtk.ToggleButton — a button that stays pressed. It is a Gtk.Button with one more property, active, so every button style class applies; Adw.ToggleGroup is the linked, single-choice form of it.`,controls:[{name:`label`,label:`Label`,type:Y.TEXT,defaultValue:`Mute`},{name:`active`,label:`Active`,type:Y.BOOLEAN,defaultValue:!1},{name:`flat`,label:`Flat`,type:Y.BOOLEAN,defaultValue:!1}]};var or=__exportAll$1({ToggleButtonStories:()=>cr,ToggleButtonStory:()=>sr}),sr=class ToggleButtonStory extends Z{_button=null;static{o.registerClass({GTypeName:`AdwStorybookToggleButton`},ToggleButtonStory)}constructor(){super(Z.fromMeta(ToggleButtonStory.getMetadata(),`Default`))}static getMetadata(){return{...ar,component:n.ToggleButton.$gtype}}initialize(){this._button=new n.ToggleButton({halign:n.Align.CENTER}),this._apply(),this.addContent(this._button)}updateArgs(e){this._apply()}_apply(){this._button&&(this._button.label=this.args.label,this._button.active=this.args.active,this.args.flat?this._button.add_css_class(`flat`):this._button.remove_css_class(`flat`))}};o.type_ensure(sr.$gtype);const cr={stories:[sr]},lr={title:`Buttons/Toggle Group`,description:`Adw.ToggleGroup — a linked group of Adw.Toggle buttons where exactly one is active.`,controls:[{name:`active`,label:`Active toggle`,type:Y.SELECT,options:[{label:`List`,value:0},{label:`Grid`,value:1},{label:`Columns`,value:2}],defaultValue:0},{name:`style`,label:`Style`,type:Y.SELECT,options:[{label:`Default`,value:`default`},{label:`Flat`,value:`flat`},{label:`Round`,value:`round`}],defaultValue:`default`}]};var ur=__exportAll$1({ToggleGroupStories:()=>pr,ToggleGroupStory:()=>fr});const dr=[`flat`,`round`];var fr=class ToggleGroupStory extends Z{_toggleGroup=null;static{o.registerClass({GTypeName:`AdwStorybookToggleGroup`},ToggleGroupStory)}constructor(){super(Z.fromMeta(ToggleGroupStory.getMetadata(),`Default`))}static getMetadata(){return{...lr,component:s.ToggleGroup.$gtype}}initialize(){this._toggleGroup=new s.ToggleGroup,this._toggleGroup.add(new s.Toggle({label:`List`,iconName:`view-list-symbolic`})),this._toggleGroup.add(new s.Toggle({label:`Grid`,iconName:`view-grid-symbolic`})),this._toggleGroup.add(new s.Toggle({label:`Columns`,iconName:`view-columns-symbolic`})),this._toggleGroup.active=this.args.active,this._applyStyle(this.args.style),this.addContent(this._toggleGroup)}_applyStyle(e){if(this._toggleGroup){for(let e of dr)this._toggleGroup.remove_css_class(e);e!=="default"&&this._toggleGroup.add_css_class(e)}}updateArgs(e){this._toggleGroup&&(this._toggleGroup.active=this.args.active,this._applyStyle(this.args.style))}};o.type_ensure(fr.$gtype);const pr={stories:[fr]},mr={title:`Controls/Check Button`,description:`Gtk.CheckButton — a label beside an indicator, with a third "in between" state for a selection that is only partly made. The browser element spells the two states checked and indeterminate, the words the Adwaita stylesheet selects on; the grouped, single-choice form is Adw.Radio.`,controls:[{name:`label`,label:`Label`,type:Y.TEXT,defaultValue:`Enable networking`},{name:`checked`,label:`Checked`,type:Y.BOOLEAN,defaultValue:!0},{name:`indeterminate`,label:`Indeterminate`,type:Y.BOOLEAN,defaultValue:!1},{name:`disabled`,label:`Disabled`,type:Y.BOOLEAN,defaultValue:!1}]};var hr=__exportAll$1({CheckButtonStories:()=>_r,CheckButtonStory:()=>gr}),gr=class CheckButtonStory extends Z{_box=null;_button=null;static{o.registerClass({GTypeName:`AdwStorybookCheckButton`},CheckButtonStory)}constructor(){super(Z.fromMeta(CheckButtonStory.getMetadata(),`Default`))}static getMetadata(){return{...mr,component:n.CheckButton.$gtype}}initialize(){this._button=new n.CheckButton,this._box=new n.Box({orientation:n.Orientation.VERTICAL,spacing:12,halign:n.Align.CENTER}),this._box.append(this._button),this._apply(),this.addContent(this._box)}updateArgs(e){this._apply()}_apply(){this._button&&(this._button.label=this.args.label,this._button.active=this.args.checked,this._button.inconsistent=this.args.indeterminate,this._button.sensitive=!this.args.disabled)}};o.type_ensure(gr.$gtype);const _r={stories:[gr]},vr=[`Automatic`,`Always`,`Never`,`When busy`],yr={title:`Controls/Drop Down`,description:`Gtk.DropDown — pick one value from a list. The button shows the selection; the list opens in a popover. Adw.ComboRow is the same choice presented as a boxed-list row.`,controls:[{name:`selected`,label:`Selected`,type:Y.SELECT,options:vr.map((e,t)=>({label:e,value:t})),defaultValue:0},{name:`enableSearch`,label:`Search field`,type:Y.BOOLEAN,defaultValue:!1}]};var br=__exportAll$1({DropDownStories:()=>Sr,DropDownStory:()=>xr}),xr=class DropDownStory extends Z{_dropDown=null;static{o.registerClass({GTypeName:`AdwStorybookDropDown`},DropDownStory)}constructor(){super(Z.fromMeta(DropDownStory.getMetadata(),`Default`))}static getMetadata(){return{...yr,component:n.DropDown.$gtype}}initialize(){this._dropDown=n.DropDown.new_from_strings([...vr]),this._dropDown.expression=n.PropertyExpression.new(n.StringObject.$gtype,null,`string`),this._dropDown.halign=n.Align.CENTER,this._apply(),this.addContent(this._dropDown)}updateArgs(e){this._apply()}_apply(){this._dropDown&&(this._dropDown.selected=this.args.selected,this._dropDown.enableSearch=this.args.enableSearch)}};o.type_ensure(xr.$gtype);const Sr={stories:[xr]},Cr={title:`Controls/Entry`,description:`Gtk.Entry — a single-line text field. Libadwaita ships no AdwEntry; the Adwaita look is the GTK entry styled by the stylesheet, which is why the row variants (Entry Row, Password Entry Row) are the widgets with an Adw prefix.`,controls:[{name:`text`,label:`Text`,type:Y.TEXT,defaultValue:``},{name:`placeholder`,label:`Placeholder`,type:Y.TEXT,defaultValue:`Search files…`},{name:`editable`,label:`Editable`,type:Y.BOOLEAN,defaultValue:!0}]};var wr=__exportAll$1({EntryStories:()=>Er,EntryStory:()=>Tr}),Tr=class EntryStory extends Z{_entry=null;static{o.registerClass({GTypeName:`AdwStorybookEntry`},EntryStory)}constructor(){super(Z.fromMeta(EntryStory.getMetadata(),`Default`))}static getMetadata(){return{...Cr,component:n.Entry.$gtype}}initialize(){this._entry=new n.Entry({widthRequest:280,halign:n.Align.CENTER}),this._apply(),this.addContent(this._entry)}updateArgs(e){this._apply()}_apply(){this._entry&&(this._entry.text=this.args.text,this._entry.placeholderText=this.args.placeholder,this._entry.editable=this.args.editable)}};o.type_ensure(Tr.$gtype);const Er={stories:[Tr]},Dr={title:`Controls/Spinner (GTK)`,description:`Gtk.Spinner — GTK's own busy indicator: a faint ring with a quarter arc turning around it, sized by its allocation. Adw.Spinner is the libadwaita replacement and looks different; under reduced motion GTK swaps this one for a static hourglass, which Adw.Spinner deliberately does not do.`,controls:[{name:`size`,label:`Size (px)`,type:Y.RANGE,min:16,max:64,step:4,defaultValue:32},{name:`spinning`,label:`Spinning`,type:Y.BOOLEAN,defaultValue:!0},{name:`disabled`,label:`Disabled`,type:Y.BOOLEAN,defaultValue:!1}]};var Or=__exportAll$1({GtkSpinnerStories:()=>Ar,GtkSpinnerStory:()=>kr}),kr=class GtkSpinnerStory extends Z{_spinner=null;static{o.registerClass({GTypeName:`AdwStorybookGtkSpinner`},GtkSpinnerStory)}constructor(){super(Z.fromMeta(GtkSpinnerStory.getMetadata(),`Default`))}static getMetadata(){return{...Dr,component:n.Spinner.$gtype}}initialize(){this._spinner=new n.Spinner({halign:n.Align.CENTER,valign:n.Align.CENTER}),this._apply(),this.addContent(this._spinner)}updateArgs(e){this._apply()}_apply(){if(!this._spinner)return;let e=this.args.size;this._spinner.widthRequest=e,this._spinner.heightRequest=e,this.args.spinning?this._spinner.start():this._spinner.stop(),this._spinner.sensitive=!this.args.disabled}};o.type_ensure(kr.$gtype);const Ar={stories:[kr]},jr={title:`Controls/Level Bar`,description:"Gtk.LevelBar — how full something is, over an interval that need not be 0…1: a password strength meter, a battery. `mode` decides one filled level or one block per unit, and the block takes a class from the nearest OFFSET (low, high, full by default), which is how libadwaita colours it and how an application adds a colour of its own.",controls:[{name:`value`,label:`Value`,type:Y.RANGE,min:0,max:1,step:.05,defaultValue:.8},{name:`maxValue`,label:`Max value`,type:Y.RANGE,min:1,max:5,step:1,defaultValue:5},{name:`mode`,label:`Mode`,type:Y.SELECT,options:[{label:`Continuous`,value:`continuous`},{label:`Discrete`,value:`discrete`}],defaultValue:`continuous`},{name:`orientation`,label:`Orientation`,type:Y.SELECT,options:[{label:`Horizontal`,value:`horizontal`},{label:`Vertical`,value:`vertical`}],defaultValue:`horizontal`},{name:`inverted`,label:`Inverted`,type:Y.BOOLEAN,defaultValue:!1}]};var Mr=__exportAll$1({LevelBarStories:()=>Pr,LevelBarStory:()=>Nr}),Nr=class LevelBarStory extends Z{_box=null;_bar=null;static{o.registerClass({GTypeName:`AdwStorybookLevelBar`},LevelBarStory)}constructor(){super(Z.fromMeta(LevelBarStory.getMetadata(),`Default`))}static getMetadata(){return{...jr,component:n.LevelBar.$gtype}}initialize(){this._bar=new n.LevelBar,this._box=new n.Box({halign:n.Align.CENTER,valign:n.Align.CENTER}),this._box.append(this._bar),this._apply(),this.addContent(this._box)}updateArgs(e){this._apply()}_apply(){if(!this._bar)return;let e=this.args.orientation===`vertical`;this._bar.orientation=e?n.Orientation.VERTICAL:n.Orientation.HORIZONTAL,this._bar.widthRequest=e?0:200,this._bar.heightRequest=e?120:0,this._bar.max_value=this.args.maxValue,this._bar.mode=this.args.mode===`discrete`?n.LevelBarMode.DISCRETE:n.LevelBarMode.CONTINUOUS,this._bar.value=this.args.value,this._bar.inverted=this.args.inverted}};o.type_ensure(Nr.$gtype);const Pr={stories:[Nr]},Fr={title:`Controls/Password Entry`,description:`Gtk.PasswordEntry — a field for a secret: masked, no copy, a Caps Lock warning while it has focus, and show-peek-icon for a button that reveals it for one look. Adw.PasswordEntryRow is the boxed-list row built on it. Press the peek button, or Caps Lock on the keyboard, to see both states.`,controls:[{name:`showPeekIcon`,label:`Show peek icon`,type:Y.BOOLEAN,defaultValue:!0},{name:`placeholderText`,label:`Placeholder`,type:Y.TEXT,defaultValue:`Password`},{name:`disabled`,label:`Disabled`,type:Y.BOOLEAN,defaultValue:!1}]};var Ir=__exportAll$1({PasswordEntryStories:()=>Rr,PasswordEntryStory:()=>Lr}),Lr=class PasswordEntryStory extends Z{_entry=null;static{o.registerClass({GTypeName:`AdwStorybookPasswordEntry`},PasswordEntryStory)}constructor(){super(Z.fromMeta(PasswordEntryStory.getMetadata(),`Default`))}static getMetadata(){return{...Fr,component:n.PasswordEntry.$gtype}}initialize(){this._entry=new n.PasswordEntry({showPeekIcon:!0,widthRequest:240,halign:n.Align.CENTER}),this._apply(),this.addContent(this._entry)}updateArgs(e){this._apply()}_apply(){this._entry&&(this._entry.show_peek_icon=this.args.showPeekIcon,this._entry.placeholder_text=this.args.placeholderText,this._entry.sensitive=!this.args.disabled)}};o.type_ensure(Lr.$gtype);const Rr={stories:[Lr]},zr={title:`Controls/Progress Bar`,description:"Gtk.ProgressBar — how much of a long operation is done. `fraction` is 0…1, `pulsing` is the indeterminate mode where the app knows it is busy but not how far along it is, and `osd` is libadwaita's hairline variant for under a header bar. Adw.Spinner is the size-less sibling.",controls:[{name:`fraction`,label:`Fraction`,type:Y.RANGE,min:0,max:1,step:.05,defaultValue:.4},{name:`pulsing`,label:`Pulsing (indeterminate)`,type:Y.BOOLEAN,defaultValue:!1},{name:`showText`,label:`Show text`,type:Y.BOOLEAN,defaultValue:!0},{name:`inverted`,label:`Inverted`,type:Y.BOOLEAN,defaultValue:!1},{name:`osd`,label:`OSD (hairline)`,type:Y.BOOLEAN,defaultValue:!1}]};var Br=__exportAll$1({ProgressBarStories:()=>Hr,ProgressBarStory:()=>Vr}),Vr=class ProgressBarStory extends Z{_box=null;_bar=null;static{o.registerClass({GTypeName:`AdwStorybookProgressBar`},ProgressBarStory)}constructor(){super(Z.fromMeta(ProgressBarStory.getMetadata(),`Default`))}static getMetadata(){return{...zr,component:n.ProgressBar.$gtype}}initialize(){this._bar=new n.ProgressBar,this._box=new n.Box({spacing:12,halign:n.Align.CENTER}),this._box.append(this._bar),this._apply(),this.addContent(this._box)}updateArgs(e){this._apply()}_apply(){this._bar&&(this.args.pulsing?this._bar.pulse():this._bar.set_fraction(this.args.fraction),this._bar.show_text=this.args.showText,this._bar.inverted=this.args.inverted,this.args.osd?this._bar.add_css_class(`osd`):this._bar.remove_css_class(`osd`))}};o.type_ensure(Vr.$gtype);const Hr={stories:[Vr]},Ur={title:`Controls/Scale`,description:`Gtk.Scale — a slider. Gtk.Scale extends Gtk.Range, which is abstract: the range itself has no tag, its adjustment, value, inverted and fill level are this widget’s properties. draw-value shows the number beside the knob at the value-pos you name, and the .value style class dims it.`,controls:[{name:`orientation`,label:`Orientation`,type:Y.SELECT,options:[{label:`Horizontal`,value:`horizontal`},{label:`Vertical`,value:`vertical`}],defaultValue:`horizontal`},{name:`valuePos`,label:`Value position`,type:Y.SELECT,options:[{label:`Top`,value:`top`},{label:`Bottom`,value:`bottom`},{label:`Left`,value:`left`},{label:`Right`,value:`right`}],defaultValue:`top`},{name:`drawValue`,label:`Draw value`,type:Y.BOOLEAN,defaultValue:!0},{name:`digits`,label:`Digits`,type:Y.NUMBER,defaultValue:0},{name:`inverted`,label:`Inverted`,type:Y.BOOLEAN,defaultValue:!1},{name:`hasOrigin`,label:`Has origin`,type:Y.BOOLEAN,defaultValue:!0},{name:`value`,label:`Value`,type:Y.NUMBER,defaultValue:40}]};var Wr=__exportAll$1({ScaleStories:()=>Kr,ScaleStory:()=>Gr}),Gr=class ScaleStory extends Z{_scale=null;_adjustment=null;static{o.registerClass({GTypeName:`AdwStorybookScale`},ScaleStory)}constructor(){super(Z.fromMeta(ScaleStory.getMetadata(),`Default`))}static getMetadata(){return{...Ur,component:n.Scale.$gtype}}initialize(){this._adjustment=new n.Adjustment({value:40,lower:0,upper:100,stepIncrement:1,pageIncrement:10}),this._scale=new n.Scale({adjustment:this._adjustment,digits:0,drawValue:!0,widthRequest:260,valign:n.Align.CENTER}),this._apply(),this.addContent(this._scale)}updateArgs(e){this._apply()}_apply(){if(!this._scale||!this._adjustment)return;this._scale.orientation=this.args.orientation===`vertical`?n.Orientation.VERTICAL:n.Orientation.HORIZONTAL;let e={top:n.PositionType.TOP,bottom:n.PositionType.BOTTOM,left:n.PositionType.LEFT,right:n.PositionType.RIGHT};this._scale.value_pos=e[this.args.valuePos]??n.PositionType.TOP,this._scale.draw_value=this.args.drawValue,this._scale.digits=this.args.digits,this._scale.inverted=this.args.inverted,this._scale.has_origin=this.args.hasOrigin,this._adjustment.set_value(this.args.value)}};o.type_ensure(Gr.$gtype);const Kr={stories:[Gr]},qr={title:`Controls/Search Entry`,description:`Gtk.SearchEntry — a field for typing a query. A search glyph leads while it is empty and a clear button follows once it is not, and search-changed waits out search-delay so a filter is not driven by every keystroke. Escape is stop-search, Ctrl+G is next-match.`,controls:[{name:`searchDelay`,label:`Search delay (ms)`,type:Y.NUMBER,defaultValue:150},{name:`placeholderText`,label:`Placeholder`,type:Y.TEXT,defaultValue:`Search…`},{name:`disabled`,label:`Disabled`,type:Y.BOOLEAN,defaultValue:!1}]};var Jr=__exportAll$1({SearchEntryStories:()=>Xr,SearchEntryStory:()=>Yr}),Yr=class SearchEntryStory extends Z{_entry=null;_label=null;_handler=0;static{o.registerClass({GTypeName:`AdwStorybookSearchEntry`},SearchEntryStory)}constructor(){super(Z.fromMeta(SearchEntryStory.getMetadata(),`Default`))}static getMetadata(){return{...qr,component:n.SearchEntry.$gtype}}initialize(){this._entry=new n.SearchEntry({widthRequest:260,halign:n.Align.CENTER}),this._label=new n.Label({label:`search-changed has not fired yet`}),this._handler=this._entry.connect(`search-changed`,()=>{this._label&&(this._label.label=`search-changed: "${this._entry?.text??``}"`)}),this._apply();let e=new n.Box({orientation:n.Orientation.VERTICAL,spacing:12});e.append(this._entry),e.append(this._label),this.addContent(e)}updateArgs(e){this._apply()}_apply(){this._entry&&(this._entry.search_delay=this.args.searchDelay,this._entry.placeholder_text=this.args.placeholderText,this._entry.sensitive=!this.args.disabled)}};o.type_ensure(Yr.$gtype);const Xr={stories:[Yr]},Zr={title:`Controls/Spin Button`,description:`Gtk.SpinButton — a number field with an arrow either side of it. The range is a Gtk.Adjustment, the typed value is clamped into it (or left alone, under update-policy if-valid), and numeric refuses anything that is not a number. Adw.SpinRow is the boxed-list row that wraps this same widget.`,controls:[{name:`orientation`,label:`Orientation`,type:Y.SELECT,options:[{label:`Horizontal`,value:`horizontal`},{label:`Vertical`,value:`vertical`}],defaultValue:`horizontal`},{name:`digits`,label:`Digits`,type:Y.NUMBER,defaultValue:0},{name:`numeric`,label:`Numeric`,type:Y.BOOLEAN,defaultValue:!1},{name:`snapToTicks`,label:`Snap to ticks`,type:Y.BOOLEAN,defaultValue:!1},{name:`wrap`,label:`Wrap`,type:Y.BOOLEAN,defaultValue:!1},{name:`updatePolicy`,label:`Update policy`,type:Y.SELECT,options:[{label:`Always`,value:`always`},{label:`If valid`,value:`if-valid`}],defaultValue:`always`},{name:`value`,label:`Value`,type:Y.NUMBER,defaultValue:5}]};var Qr=__exportAll$1({SpinButtonStories:()=>ei,SpinButtonStory:()=>$r}),$r=class SpinButtonStory extends Z{_spin=null;_adjustment=null;static{o.registerClass({GTypeName:`AdwStorybookSpinButton`},SpinButtonStory)}constructor(){super(Z.fromMeta(SpinButtonStory.getMetadata(),`Default`))}static getMetadata(){return{...Zr,component:n.SpinButton.$gtype}}initialize(){this._adjustment=new n.Adjustment({value:5,lower:0,upper:10,stepIncrement:1,pageIncrement:2}),this._spin=new n.SpinButton({adjustment:this._adjustment,digits:0,halign:n.Align.CENTER}),this._apply(),this.addContent(this._spin)}updateArgs(e){this._apply()}_apply(){!this._spin||!this._adjustment||(this._spin.orientation=this.args.orientation===`vertical`?n.Orientation.VERTICAL:n.Orientation.HORIZONTAL,this._spin.digits=this.args.digits,this._spin.numeric=this.args.numeric,this._spin.snap_to_ticks=this.args.snapToTicks,this._spin.wrap=this.args.wrap,this._spin.update_policy=this.args.updatePolicy===`if-valid`?n.SpinButtonUpdatePolicy.IF_VALID:n.SpinButtonUpdatePolicy.ALWAYS,this._adjustment.set_value(this.args.value))}};o.type_ensure($r.$gtype);const ei={stories:[$r]},ti={title:`Controls/Switch`,description:`Gtk.Switch — a light switch with two states that are NOT the same thing: active is where the user put it, state is what the switched thing currently is, which is how a change that takes a while looks like a pending one. Adw.SwitchRow is the same control with a title beside it.`,controls:[{name:`active`,label:`Active`,type:Y.BOOLEAN,defaultValue:!0},{name:`state`,label:`State (the backend)`,type:Y.BOOLEAN,defaultValue:!0},{name:`disabled`,label:`Disabled`,type:Y.BOOLEAN,defaultValue:!1}]};var ni=__exportAll$1({SwitchStories:()=>ii,SwitchStory:()=>ri}),ri=class SwitchStory extends Z{_switch=null;static{o.registerClass({GTypeName:`AdwStorybookSwitch`},SwitchStory)}constructor(){super(Z.fromMeta(SwitchStory.getMetadata(),`Default`))}static getMetadata(){return{...ti,component:n.Switch.$gtype}}initialize(){this._switch=new n.Switch({halign:n.Align.CENTER}),this._apply(),this.addContent(this._switch)}updateArgs(e){this._apply()}_apply(){this._switch&&(this._switch.active=this.args.active,this._switch.state=this.args.state,this._switch.sensitive=!this.args.disabled)}};o.type_ensure(ri.$gtype);const ii={stories:[ri]},ai={title:`Drawing/Drag Icon`,description:"Gtk.DragIcon — the widget that follows the pointer while a drag is in flight, and is destroyed with the drag. No application builds one: `get_for_drag` returns the icon a drag is using, and the drag source sets its child. What it takes as that child is the interesting part, because `create_widget_for_value` answers for six kinds of value and a drag source that offers a string gets a label and one that offers a colour gets a swatch. A drag icon takes no input at all, which is the C's own note: 'drag icons do not allow user input'.",controls:[{name:`value`,label:`Value being dragged`,type:Y.SELECT,options:[{label:`A string (a Gtk.Label)`,value:`string`},{label:`A GdkRGBA (a colour swatch)`,value:`rgba`},{label:`A content provider only (no icon)`,value:`none`}],defaultValue:`string`},{name:`actions`,label:`Drag actions`,type:Y.SELECT,options:[{label:`Copy`,value:`copy`},{label:`Move`,value:`move`}],defaultValue:`copy`}]};var oi=__exportAll$1({DragIconStories:()=>ci,DragIconStory:()=>si}),si=class DragIconStory extends Z{_row=null;_source=null;_hint=null;static{o.registerClass({GTypeName:`AdwStorybookDragIcon`},DragIconStory)}constructor(){super(Z.fromMeta(DragIconStory.getMetadata(),`Default`))}static getMetadata(){return{...ai,component:n.DragIcon.$gtype}}initialize(){let e=new n.Box({orientation:n.Orientation.VERTICAL,spacing:12,halign:n.Align.CENTER,valign:n.Align.CENTER});this._hint=new n.Label({label:`Drag the row and watch the pointer`}),this._hint.add_css_class(`dim-label`),this._row=new n.Box({orientation:n.Orientation.HORIZONTAL,spacing:12,cssClasses:[`card`]}),this._row.append(this._buildLabel()),this._source=n.DragSource.new(),this._source.actions=this.args.actions===`move`?t.DragAction.MOVE:t.DragAction.COPY,this._source.connect(`prepare`,()=>this._contentProvider()),this._source.connect(`drag-begin`,(e,t)=>this._setIcon(t)),this._row.add_controller(this._source),this._apply(),e.append(this._hint),e.append(this._row),this.addContent(e)}updateArgs(e){this._source!==null&&(this._source.actions=this.args.actions===`move`?t.DragAction.MOVE:t.DragAction.COPY,this._apply())}_value(){switch(this.args.value){case`rgba`:return{red:.25,green:.55,blue:.95,alpha:1};case`none`:return null;default:return`Report.odt`}}_contentProvider(){let e=this._value();return e===null?null:t.ContentProvider.new_for_value(e)}_setIcon(e){let t=this._value(),r=n.DragIcon.get_for_drag(e),i=t===null?null:n.DragIcon.create_widget_for_value(t);r.set_child(i)}_buildLabel(){return new n.Label({label:`Report.odt`,cssClasses:[`heading`]})}_apply(){this._hint!==null&&(this._hint.label=this.args.value===`none`?`Drag the row — no icon, because the value has no widget to show`:`Drag the row and watch the pointer`)}};o.type_ensure(si.$gtype);const ci={stories:[si]},li={title:`Drawing/Drawing Area`,description:"Gtk.DrawingArea — a blank widget that owns a size and a callback and nothing else: whatever you see is what `set_draw_func` painted. `content-width` and `content-height` are the MINIMUM and natural size at once, so a parent can hand the area more room but never less; at 0 the area has no intrinsic size at all and fills whatever it is given.",controls:[{name:`contentWidth`,label:`Content width`,type:Y.RANGE,min:0,max:320,step:16,defaultValue:160},{name:`contentHeight`,label:`Content height`,type:Y.RANGE,min:0,max:320,step:16,defaultValue:120},{name:`shape`,label:`Shape`,type:Y.SELECT,options:[{label:`Circle`,value:`circle`},{label:`Grid`,value:`grid`},{label:`Crosshair`,value:`crosshair`}],defaultValue:`circle`}]};var ui=__exportAll$1({DrawingAreaStories:()=>fi,DrawingAreaStory:()=>di}),di=class DrawingAreaStory extends Z{_box=null;_area=null;static{o.registerClass({GTypeName:`AdwStorybookDrawingArea`},DrawingAreaStory)}constructor(){super(Z.fromMeta(DrawingAreaStory.getMetadata(),`Default`))}static getMetadata(){return{...li,component:n.DrawingArea.$gtype}}initialize(){this._area=new n.DrawingArea,this._area.set_draw_func((e,t,n,r)=>{let i=e.get_color();switch(t.setSourceRGBA(i.red,i.green,i.blue,i.alpha),t.rectangle(0,0,n,r),t.fill(),t.setSourceRGBA(1-i.red,1-i.green,1-i.blue,i.alpha),this.args.shape){case`grid`:for(let e=0;e<n;e+=16)t.rectangle(e,0,8,r),t.fill();break;case`crosshair`:t.rectangle(n/2-1,0,2,r),t.rectangle(0,r/2-1,n,2),t.fill();break;default:t.arc(n/2,r/2,Math.min(n,r)/2,0,2*Math.PI),t.fill();break}}),this._box=new n.Box({halign:n.Align.CENTER,valign:n.Align.CENTER}),this._box.append(this._area),this._apply(),this.addContent(this._box)}updateArgs(e){this._area?.queue_draw(),this._apply()}_apply(){this._area&&(this._area.content_width=this.args.contentWidth,this._area.content_height=this.args.contentHeight)}};o.type_ensure(di.$gtype);const fi={stories:[di]},pi={title:`Drawing/GL Area`,description:"Gtk.GLArea — a widget whose contents are drawn on a GPU. GTK emits `::resize` before the first `::render` and the render flag is cleared AFTER the signal, so a handler may queue another frame with `queue_render()`. Here the replica is a `<canvas>` with a real WebGL context: the browser has no desktop GL, so `api` always reports the ES flavour it was given.",controls:[{name:`autoRender`,label:`Auto render`,type:Y.BOOLEAN,defaultValue:!0},{name:`hasDepthBuffer`,label:`Depth buffer`,type:Y.BOOLEAN,defaultValue:!1},{name:`allowedApis`,label:`Allowed APIs`,type:Y.SELECT,options:[{label:`GL and GLES (default)`,value:`gl gles`},{label:`GLES only`,value:`gles`},{label:`GL only`,value:`gl`}],defaultValue:`gl gles`},{name:`spinning`,label:`Spin the triangle`,type:Y.BOOLEAN,defaultValue:!0}]};var mi=__exportAll$1({GLAreaStories:()=>gi,GLAreaStory:()=>hi}),hi=class GLAreaStory extends Z{_area=null;_readout=null;_box=null;_tick=0;_renders=0;_viewport=`—`;static{o.registerClass({GTypeName:`AdwStorybookGLArea`},GLAreaStory)}constructor(){super(Z.fromMeta(GLAreaStory.getMetadata(),`Default`))}static getMetadata(){return{...pi,component:n.GLArea.$gtype}}initialize(){this._area=new n.GLArea({widthRequest:240,heightRequest:160}),this._readout=new n.Label({label:`—`}),this._readout.add_css_class(`dimmed`),this._area.connect(`resize`,(e,t,n)=>{this._viewport=`${t} × ${n}`,this._refresh()}),this._area.connect(`render`,()=>{this._renders+=1,this._refresh()}),this._box=new n.Box({orientation:n.Orientation.VERTICAL,spacing:6}),this._box.append(this._area),this._box.append(this._readout),this._apply(),this.addContent(this._box)}updateArgs(e){this._stop(),this._apply(),this._start()}_apply(){this._area&&(this._area.allowed_apis=this.args.allowedApis===`gles`?t.GLAPI.GLES:t.GLAPI.GL|t.GLAPI.GLES,this._area.auto_render=this.args.autoRender,this._area.has_depth_buffer=this.args.hasDepthBuffer)}_start(){!this._area||!this.args.spinning||(this._tick=e.timeout_add(e.PRIORITY_DEFAULT,33,()=>(this._area?.queue_render(),e.SOURCE_CONTINUE)))}_stop(){this._tick!==0&&(e.source_remove(this._tick),this._tick=0)}_refresh(){this._readout&&(this._readout.label=`viewport ${this._viewport} device px · ${this._renders} renders`)}};o.type_ensure(hi.$gtype);const gi={stories:[hi]},_i={title:`Drawing/Graphics Offload`,description:"Gtk.GraphicsOffload — a wrapper that asks the compositor to take its ONE child as it is, which is worth doing for content that changes every frame. `enabled` says whether it is attempted, and `black-background` paints the letterbox bars. The passthrough itself is the platform's: no browser API hands a surface to a compositor, so the replica carries the enum, the black rectangle and the bin layout, and says plainly which part is missing.",controls:[{name:`enabled`,label:`Enabled`,type:Y.SELECT,options:[{label:`Enabled (default)`,value:`enabled`},{label:`Disabled`,value:`disabled`}],defaultValue:`enabled`},{name:`blackBackground`,label:`Black background`,type:Y.BOOLEAN,defaultValue:!1},{name:`child`,label:`Child`,type:Y.SELECT,options:[{label:`Label`,value:`label`},{label:`Image`,value:`image`},{label:`Row of labels`,value:`box`}],defaultValue:`image`}]};var vi=__exportAll$1({GraphicsOffloadStories:()=>bi,GraphicsOffloadStory:()=>yi}),yi=class GraphicsOffloadStory extends Z{_offload=null;_box=null;static{o.registerClass({GTypeName:`AdwStorybookGraphicsOffload`},GraphicsOffloadStory)}constructor(){super(Z.fromMeta(GraphicsOffloadStory.getMetadata(),`Default`))}static getMetadata(){return{..._i,component:n.GraphicsOffload.$gtype}}initialize(){this._offload=new n.GraphicsOffload({widthRequest:280,heightRequest:96}),this._offload.enabled=+(this.args.enabled===`disabled`),this._offload.black_background=this.args.blackBackground,this._box=new n.Box({halign:n.Align.CENTER,valign:n.Align.CENTER}),this._box.append(this._offload),this._applyChild(),this.addContent(this._box)}updateArgs(e){this._offload&&(this._offload.enabled=+(this.args.enabled===`disabled`),this._offload.black_background=this.args.blackBackground,this._applyChild())}_applyChild(){if(!this._offload)return;let e;switch(this.args.child){case`label`:e=new n.Label({label:`The child of an offloaded layer`});break;case`box`:{let t=new n.Box({orientation:n.Orientation.HORIZONTAL,spacing:12});for(let e of[`One`,`Two`,`Three`])t.append(new n.Label({label:e}));e=new n.CenterBox,e.set_center_widget(t);break}default:e=new n.Image({iconName:`camera-photo-symbolic`,pixelSize:48});break}this._offload.child=e}};o.type_ensure(yi.$gtype);const bi={stories:[yi]},xi={title:`Feedback/About Dialog`,description:`Adw.AboutDialog — the standard Adwaita about window with application name, version, credits and license.`,controls:[{name:`applicationName`,label:`Application name`,type:Y.TEXT,defaultValue:`Adwaita Storybook`},{name:`version`,label:`Version`,type:Y.TEXT,defaultValue:`0.11.0`}]};var Si=__exportAll$1({AboutDialogStories:()=>wi,AboutDialogStory:()=>Ci}),Ci=class AboutDialogStory extends Z{_button=null;static{o.registerClass({GTypeName:`AdwStorybookAboutDialog`},AboutDialogStory)}constructor(){super(Z.fromMeta(AboutDialogStory.getMetadata(),`Default`))}static getMetadata(){return{...xi,component:s.AboutDialog.$gtype}}initialize(){this._button=new n.Button({label:`Show dialog`,halign:n.Align.CENTER,valign:n.Align.CENTER}),this._button.add_css_class(`pill`),this._button.add_css_class(`suggested-action`),this._button.connect(`clicked`,()=>this._present()),this.addContent(this._button)}_present(){new s.AboutDialog({applicationName:this.args.applicationName,applicationIcon:`application-x-executable-symbolic`,developerName:`A GJSify Project`,version:this.args.version,comments:`A live catalogue of native GTK and Adwaita widgets, rendered under GJS.`,website:`https://github.com/gjsify/gjsify`,issueUrl:`https://github.com/gjsify/gjsify/issues`,licenseType:n.License.MIT_X11,developers:[`Ada Lovelace`,`Grace Hopper`],designers:[`Margaret Hamilton`],copyright:`© 2026 The GJSify Project`}).present(this)}updateArgs(e){}};o.type_ensure(Ci.$gtype);const wi={stories:[Ci]},Ti={title:`Feedback/Alert Dialog`,description:`Adw.AlertDialog — a modal dialog with a heading, body text and responses, including a destructive action.`,controls:[{name:`heading`,label:`Heading`,type:Y.TEXT,defaultValue:`Delete Project?`},{name:`body`,label:`Body`,type:Y.TEXT,defaultValue:`This will permanently remove the project and all of its files. This action cannot be undone.`}]};var Ei=__exportAll$1({AlertDialogStories:()=>Oi,AlertDialogStory:()=>Di}),Di=class AlertDialogStory extends Z{_button=null;static{o.registerClass({GTypeName:`AdwStorybookAlertDialog`},AlertDialogStory)}constructor(){super(Z.fromMeta(AlertDialogStory.getMetadata(),`Default`))}static getMetadata(){return{...Ti,component:s.AlertDialog.$gtype}}initialize(){this._button=new n.Button({label:`Show dialog`,halign:n.Align.CENTER,valign:n.Align.CENTER}),this._button.add_css_class(`pill`),this._button.add_css_class(`suggested-action`),this._button.connect(`clicked`,()=>this._present()),this.addContent(this._button)}_present(){let e=new s.AlertDialog({heading:this.args.heading,body:this.args.body});e.add_response(`cancel`,`Cancel`),e.add_response(`delete`,`Delete`),e.set_response_appearance(`delete`,s.ResponseAppearance.DESTRUCTIVE),e.set_default_response(`cancel`),e.set_close_response(`cancel`),e.present(this)}updateArgs(e){}};o.type_ensure(Di.$gtype);const Oi={stories:[Di]},ki={title:`Feedback/Dialog`,description:`Adw.Dialog — the generic dialog: arbitrary content over a scrim, anchored as a floating card on a wide window and as a bottom sheet on a narrow one.`,controls:[{name:`title`,label:`Title`,type:Y.TEXT,defaultValue:`Preferences`},{name:`presentation`,label:`Presentation`,type:Y.SELECT,options:[{label:`Auto`,value:`auto`},{label:`Floating`,value:`floating`},{label:`Bottom sheet`,value:`bottom-sheet`}],defaultValue:`auto`}]};var Ai=__exportAll$1({DialogStories:()=>Ni,DialogStory:()=>Mi});const ji={auto:s.DialogPresentationMode.AUTO,floating:s.DialogPresentationMode.FLOATING,"bottom-sheet":s.DialogPresentationMode.BOTTOM_SHEET};var Mi=class DialogStory extends Z{_button=null;static{o.registerClass({GTypeName:`AdwStorybookDialog`},DialogStory)}constructor(){super(Z.fromMeta(DialogStory.getMetadata(),`Default`))}static getMetadata(){return{...ki,component:s.Dialog.$gtype}}initialize(){this._button=new n.Button({label:`Show dialog`,halign:n.Align.CENTER,valign:n.Align.CENTER}),this._button.add_css_class(`pill`),this._button.add_css_class(`suggested-action`),this._button.connect(`clicked`,()=>this._present()),this.addContent(this._button)}_present(){let e=new s.PreferencesGroup({title:`Appearance`});e.add(new s.SwitchRow({title:`Dark style`,subtitle:`Use a dark colour scheme`,active:!0}));let t=new s.PreferencesPage({title:`General`});t.add(e),new s.Dialog({title:this.args.title,child:t,presentation_mode:ji[this.args.presentation]}).present(this)}updateArgs(e){}};o.type_ensure(Mi.$gtype);const Ni={stories:[Mi]},Pi={title:`Feedback/Emoji Chooser`,description:`Gtk.EmojiChooser — the popover a text widget opens to insert an emoji: a search entry over nine named sections, a toolbar that follows the scroll position, and an emoji-picked signal.`,controls:[{name:`search`,label:`Search`,type:Y.TEXT,defaultValue:`smile`}]};var Fi=__exportAll$1({EmojiChooserStories:()=>Li,EmojiChooserStory:()=>Ii}),Ii=class EmojiChooserStory extends Z{_button=null;_entry=null;_chooser=null;static{o.registerClass({GTypeName:`AdwStorybookEmojiChooser`},EmojiChooserStory)}constructor(){super(Z.fromMeta(EmojiChooserStory.getMetadata(),`Default`))}static getMetadata(){return{...Pi,component:n.EmojiChooser.$gtype}}initialize(){this._entry=new n.Entry({placeholderText:`Type a message…`,halign:n.Align.CENTER}),this._entry.add_css_class(`card`),this._entry.hexpand=!0,this._chooser=n.EmojiChooser.new(),this._chooser.connect(`emoji-picked`,(e,t)=>{this._entry!==null&&this._entry.set_text(this._entry.get_text()+t)}),this._button=new n.Button({iconName:`face-smile-symbolic`,tooltipText:`Insert an emoji`,valign:n.Align.CENTER}),this._button.add_css_class(`flat`),this._button.add_css_class(`circular`),this._chooser.set_parent(this._button);let e=new n.Box({orientation:n.Orientation.HORIZONTAL,spacing:6});e.append(this._button),e.append(this._entry);let t=new n.Box({orientation:n.Orientation.VERTICAL,spacing:12,halign:n.Align.CENTER,valign:n.Align.CENTER});t.append(e),this.addContent(t),this._applySearch(this.args.search)}_searchEntry(){let e=this._chooser?.get_first_child()??null;for(;e!==null;){if(e instanceof n.SearchEntry)return e;e=e.get_first_child()}return null}_applySearch(e){this._searchEntry()?.set_text(e)}updateArgs(e){typeof e.search==`string`&&this._applySearch(e.search)}};o.type_ensure(Ii.$gtype);const Li={stories:[Ii]},Ri={title:`Feedback/GTK About Dialog`,description:`Gtk.AboutDialog — GTK's own about window: a dialog-size logo over the program name, with the Credits, License and System pages behind a stack switcher. NOT Adw.AboutDialog, which is a navigation view of preference rows.`,controls:[{name:`programName`,label:`Program name`,type:Y.TEXT,defaultValue:`Calculator`},{name:`version`,label:`Version`,type:Y.TEXT,defaultValue:`48.1`},{name:`licenseType`,label:`License type`,type:Y.SELECT,options:[{label:`Unknown`,value:`unknown`},{label:`Custom`,value:`custom`},{label:`GPL 3.0`,value:`gpl-3-0`},{label:`MIT`,value:`mit-x11`},{label:`BSD 3-Clause`,value:`bsd-3`},{label:`Apache 2.0`,value:`apache-2-0`},{label:`0BSD`,value:`0bsd`}],defaultValue:`gpl-3-0`},{name:`withCredits`,label:`With credits`,type:Y.BOOLEAN,defaultValue:!0}]};var zi=__exportAll$1({GtkAboutDialogStories:()=>Hi,GtkAboutDialogStory:()=>Vi});const Bi={unknown:n.License.UNKNOWN,custom:n.License.CUSTOM,"gpl-3-0":n.License.GPL_3_0,"mit-x11":n.License.MIT_X11,"bsd-3":n.License.BSD_3,"apache-2-0":n.License.APACHE_2_0,"0bsd":n.License[`0BSD`]};var Vi=class GtkAboutDialogStory extends Z{_button=null;static{o.registerClass({GTypeName:`AdwStorybookGtkAboutDialog`},GtkAboutDialogStory)}constructor(){super(Z.fromMeta(GtkAboutDialogStory.getMetadata(),`Default`))}static getMetadata(){return{...Ri,component:n.AboutDialog.$gtype}}initialize(){this._button=new n.Button({label:`Show dialog`,halign:n.Align.CENTER,valign:n.Align.CENTER}),this._button.add_css_class(`pill`),this._button.add_css_class(`suggested-action`),this._button.connect(`clicked`,()=>this._present()),this.addContent(this._button)}_present(){let e=new n.AboutDialog({programName:this.args.programName,version:this.args.version,logoIconName:`application-x-executable-symbolic`,comments:`An arithmetic calculator for the GNOME desktop.`,website:`https://gitlab.gnome.org/World/gnome-calculator`,websiteLabel:`GNOME Calculator`,copyright:`© 2026 The GNOME Project`,systemInformation:`GTK 4.24.0
|
|
349
349
|
glibc 2.42
|
|
350
|
-
Built with meson 1.6`}),t=
|
|
351
|
-
Katherine Johnson`),e.add_credit_section(`Reviewed by`,[`Tony Hoare <tony@example.org>`])),e.present()}updateArgs(e){}};o.type_ensure(Li.$gtype);const Ri={stories:[Li]},zi={title:`Feedback/Page Setup Dialog`,description:`Gtk.PageSetupUnixDialog — the page setup dialog Unix platforms have instead of a native one: a printer and a paper size, the chosen sheet's size and margins, and four orientation buttons.`,controls:[{name:`paperSize`,label:`Paper size`,type:J.SELECT,options:[{label:`US Letter`,value:`na_letter`},{label:`US Legal`,value:`na_legal`},{label:`A4`,value:`iso_a4`},{label:`A5`,value:`iso_a5`},{label:`B5`,value:`iso_b5`},{label:`A3`,value:`iso_a3`}],defaultValue:`iso_a4`},{name:`orientation`,label:`Orientation`,type:J.SELECT,options:[{label:`Portrait`,value:`portrait`},{label:`Landscape`,value:`landscape`},{label:`Reverse portrait`,value:`reverse-portrait`},{label:`Reverse landscape`,value:`reverse-landscape`}],defaultValue:`landscape`}]};var Bi=__exportAll$1({PageSetupUnixDialogStories:()=>Wi,PageSetupUnixDialogStory:()=>Hi});const Vi={portrait:n.PageOrientation.PORTRAIT,landscape:n.PageOrientation.LANDSCAPE,"reverse-portrait":n.PageOrientation.REVERSE_PORTRAIT,"reverse-landscape":n.PageOrientation.REVERSE_LANDSCAPE};var Hi=class PageSetupUnixDialogStory extends X{_button=null;static{o.registerClass({GTypeName:`AdwStorybookPageSetupUnixDialog`},PageSetupUnixDialogStory)}constructor(){super(X.fromMeta(PageSetupUnixDialogStory.getMetadata(),`Default`))}static getMetadata(){return{...zi,component:n.PageSetupUnixDialog.$gtype}}initialize(){this._button=new n.Button({label:`Page Setup…`,halign:n.Align.CENTER,valign:n.Align.CENTER}),this._button.add_css_class(`pill`),this._button.add_css_class(`suggested-action`),this._button.connect(`clicked`,()=>this._present()),this.addContent(this._button)}_present(){let e=n.PageSetupUnixDialog.new(`Page Setup`,null),t=new n.PageSetup;t.set_paper_size_and_default_margins(n.PaperSize.new(this.args.paperSize)),t.set_orientation(Vi[this.args.orientation]??n.PageOrientation.PORTRAIT),e.set_page_setup(t),e.present()}updateArgs(e){}};const Ui=`PageSetupUnixDialog`in n;Ui&&o.type_ensure(Hi.$gtype);const Wi={stories:[Hi].filter(()=>Ui)},Gi={title:`Feedback/Preferences Dialog`,description:`Adw.PreferencesDialog — a preferences window with a page, a group and a handful of boxed-list rows.`,controls:[{name:`pageTitle`,label:`Page title`,type:J.TEXT,defaultValue:`General`},{name:`groupTitle`,label:`Group title`,type:J.TEXT,defaultValue:`Appearance`}]};var Ki=__exportAll$1({PreferencesDialogStories:()=>Ji,PreferencesDialogStory:()=>qi}),qi=class PreferencesDialogStory extends X{_button=null;static{o.registerClass({GTypeName:`AdwStorybookPreferencesDialog`},PreferencesDialogStory)}constructor(){super(X.fromMeta(PreferencesDialogStory.getMetadata(),`Default`))}static getMetadata(){return{...Gi,component:s.PreferencesDialog.$gtype}}initialize(){this._button=new n.Button({label:`Show dialog`,halign:n.Align.CENTER,valign:n.Align.CENTER}),this._button.add_css_class(`pill`),this._button.add_css_class(`suggested-action`),this._button.connect(`clicked`,()=>this._present()),this.addContent(this._button)}_present(){let e=new s.PreferencesDialog,t=new s.PreferencesPage({title:this.args.pageTitle,iconName:`preferences-system-symbolic`}),r=new s.PreferencesGroup({title:this.args.groupTitle,description:`Control how the application looks and behaves.`});r.add(new s.SwitchRow({title:`Dark style`,subtitle:`Use a dark colour scheme`,active:!0})),r.add(new s.ComboRow({title:`Accent colour`,model:new n.StringList({strings:[`Blue`,`Teal`,`Green`,`Orange`,`Purple`]}),selected:0})),r.add(new s.SpinRow({title:`Font size`,adjustment:new n.Adjustment({lower:8,upper:24,value:12,stepIncrement:1,pageIncrement:4})})),t.add(r),e.add(t),e.present(this)}updateArgs(e){}};o.type_ensure(qi.$gtype);const Ji={stories:[qi]},Yi={title:`Feedback/Print Dialog`,description:`Gtk.PrintUnixDialog — the Unix print dialog: seven notebook pages over a printer list, a Range and a Copies group on General, the sheet preview on Page Setup, and the Preview / Cancel / Print action area.`,controls:[{name:`capabilities`,label:`Capabilities`,type:J.TEXT,defaultValue:`copies|collate|reverse|scale|preview|page-set`},{name:`range`,label:`Range`,type:J.SELECT,options:[{label:`All Pages`,value:`all`},{label:`Current Page`,value:`current`},{label:`Selection`,value:`selection`},{label:`Pages`,value:`pages`}],defaultValue:`all`},{name:`copies`,label:`Copies`,type:J.NUMBER,defaultValue:2}]};var Xi=__exportAll$1({PrintUnixDialogStories:()=>$i,PrintUnixDialogStory:()=>Zi});const capabilities=()=>({collate:n.PrintCapabilities.COLLATE,copies:n.PrintCapabilities.COPIES,"generate-pdf":n.PrintCapabilities.GENERATE_PDF,"generate-ps":n.PrintCapabilities.GENERATE_PS,"number-up":n.PrintCapabilities.NUMBER_UP,"number-up-layout":n.PrintCapabilities.NUMBER_UP_LAYOUT,"page-set":n.PrintCapabilities.PAGE_SET,preview:n.PrintCapabilities.PREVIEW,reverse:n.PrintCapabilities.REVERSE,scale:n.PrintCapabilities.SCALE});var Zi=class PrintUnixDialogStory extends X{_button=null;static{o.registerClass({GTypeName:`AdwStorybookPrintUnixDialog`},PrintUnixDialogStory)}constructor(){super(X.fromMeta(PrintUnixDialogStory.getMetadata(),`Default`))}static getMetadata(){return{...Yi,component:n.PrintUnixDialog.$gtype}}initialize(){this._button=new n.Button({label:`Print…`,halign:n.Align.CENTER,valign:n.Align.CENTER}),this._button.add_css_class(`pill`),this._button.add_css_class(`suggested-action`),this._button.connect(`clicked`,()=>this._present()),this.addContent(this._button)}_present(){let e=n.PrintUnixDialog.new(`Print`,null),t=capabilities(),r=String(this.args.capabilities).split(`|`).map(e=>t[e.trim()]??0).reduce((e,t)=>e|t,0);e.set_manual_capabilities(r),e.set_current_page(2),e.set_support_selection(!0),e.set_has_selection(!0);let i=new n.PrintSettings;i.set_n_copies(Number(this.args.copies)),i.set_collate(this.args.range===`all`),i.set_print_pages(this.args.range===`current`?n.PrintPages.CURRENT:n.PrintPages.ALL),e.set_settings(i),e.present()}updateArgs(e){}};const Qi=`PrintUnixDialog`in n;Qi&&o.type_ensure(Zi.$gtype);const $i={stories:[Zi].filter(()=>Qi)},ea={title:`Feedback/Shortcuts Dialog`,description:`Adw.ShortcutsDialog — the window that lists an application’s keyboard shortcuts, one titled section at a time.`,controls:[{name:`title`,label:`Title`,type:J.TEXT,defaultValue:`Keyboard Shortcuts`}]};var ta=__exportAll$1({ShortcutsDialogStories:()=>ra,ShortcutsDialogStory:()=>na}),na=class ShortcutsDialogStory extends X{_button=null;static{o.registerClass({GTypeName:`AdwStorybookShortcutsDialog`},ShortcutsDialogStory)}constructor(){super(X.fromMeta(ShortcutsDialogStory.getMetadata(),`Default`))}static getMetadata(){return{...ea,component:s.ShortcutsDialog.$gtype}}initialize(){this._button=new n.Button({label:`Show dialog`,halign:n.Align.CENTER,valign:n.Align.CENTER}),this._button.add_css_class(`pill`),this._button.add_css_class(`suggested-action`),this._button.connect(`clicked`,()=>this._present()),this.addContent(this._button)}_present(){let e=new s.ShortcutsSection({title:`General`});e.add(new s.ShortcutsItem({title:`Open Menu`,accelerator:`F10`})),e.add(new s.ShortcutsItem({title:`Preferences`,action_name:`app.preferences`})),e.add(new s.ShortcutsItem({title:`Quit`,accelerator:`<Control>q`}));let t=new s.ShortcutsSection;t.add(new s.ShortcutsItem({title:`Move Tab Left`,accelerator:`<Shift><Control>Page_Up`,direction:n.TextDirection.LTR})),t.add(new s.ShortcutsItem({title:`Move Tab Left`,accelerator:`<Shift><Control>Page_Up`,direction:n.TextDirection.RTL}));let r=new s.ShortcutsDialog({title:this.args.title});r.add(e),r.add(t),r.present(this)}updateArgs(e){}};o.type_ensure(na.$gtype);const ra={stories:[na]},ia={title:`Feedback/Toast`,description:`Adw.Toast — a transient notification, with an optional action button, shown over an Adw.ToastOverlay.`,controls:[{name:`title`,label:`Toast text`,type:J.TEXT,defaultValue:`File moved to Trash`},{name:`timeout`,label:`Timeout (s)`,type:J.NUMBER,min:0,max:10,step:1,defaultValue:3},{name:`hasButton`,label:`Action button`,type:J.BOOLEAN,defaultValue:!0},{name:`buttonLabel`,label:`Button label`,type:J.TEXT,defaultValue:`Undo`}]};var aa=__exportAll$1({ToastStories:()=>sa,ToastStory:()=>oa}),oa=class ToastStory extends X{_overlay=null;static{o.registerClass({GTypeName:`AdwStorybookToast`},ToastStory)}constructor(){super(X.fromMeta(ToastStory.getMetadata(),`Default`))}static getMetadata(){return{...ia,component:s.Toast.$gtype}}initialize(){let e=new n.Button({label:`Show toast`,halign:n.Align.CENTER,valign:n.Align.CENTER});e.add_css_class(`pill`),e.add_css_class(`suggested-action`),e.connect(`clicked`,()=>this._showToast()),this._overlay=new s.ToastOverlay({child:e,widthRequest:360,heightRequest:220}),this.addContent(this._overlay)}_showToast(){if(!this._overlay)return;let e=new s.Toast({title:this.args.title,timeout:this.args.timeout});this.args.hasButton&&(e.buttonLabel=this.args.buttonLabel),this._overlay.add_toast(e)}updateArgs(e){}};o.type_ensure(oa.$gtype);const sa={stories:[oa]},ca={title:`Layout/Application Window`,description:`Adw.ApplicationWindow — an Adw.Window that belongs to a GtkApplication, plus that application’s menubar.`,controls:[{name:`title`,label:`Title`,type:J.TEXT,defaultValue:`Text Editor`},{name:`subtitle`,label:`Subtitle`,type:J.TEXT,defaultValue:`notes.md`},{name:`showMenubar`,label:`Show menubar`,type:J.BOOLEAN,defaultValue:!0}]};var la=__exportAll$1({ApplicationWindowStories:()=>da,ApplicationWindowStory:()=>ua}),ua=class ApplicationWindowStory extends X{_window=null;_title=null;_toolbarView=null;_menubar=null;static{o.registerClass({GTypeName:`AdwStorybookApplicationWindow`},ApplicationWindowStory)}constructor(){super(X.fromMeta(ApplicationWindowStory.getMetadata(),`Default`))}static getMetadata(){return{...ca,component:s.ApplicationWindow.$gtype}}initialize(){this._title=new s.WindowTitle({title:this.args.title,subtitle:this.args.subtitle});let e=new s.HeaderBar({titleWidget:this._title,widthRequest:460}),t=new n.Button({iconName:`go-previous-symbolic`});t.add_css_class(`flat`),e.pack_start(t),this._toolbarView=new s.ToolbarView,this._toolbarView.add_top_bar(e),this._toolbarView.content=new s.StatusPage({title:`Your Library`,description:`Content sits between the toolbars and scrolls independently of them.`});let i=new r.Menu,o=new r.Menu;o.append(`New Window`,`app.new-window`),o.append(`Quit`,`app.quit`),i.append_section(null,o);let c=new r.Menu;c.append(`Keyboard Shortcuts`,`app.shortcuts`),c.append(`About`,`app.about`),i.append_section(null,c),this._menubar=new n.PopoverMenuBar({menu_model:i}),this.args.showMenubar&&this._toolbarView.add_top_bar(this._menubar),this._window=new s.ApplicationWindow({content:this._toolbarView,show_menubar:this.args.showMenubar}),this._window.set_default_size(460,260),this.addContent(this._window)}updateArgs(e){if(!this._title||!this._window||!this._toolbarView||!this._menubar)return;this._title.title=this.args.title,this._title.subtitle=this.args.subtitle,this._window.show_menubar=this.args.showMenubar;let t=this.args.showMenubar;t&&this._menubar.get_parent()===null&&this._toolbarView.add_top_bar(this._menubar),!t&&this._menubar.get_parent()!==null&&this._toolbarView.remove(this._menubar)}};o.type_ensure(ua.$gtype);const da={stories:[ua]},fa={title:`Layout/Aspect Frame`,description:`Gtk.AspectFrame — one child, given a width/height ratio and a place in the space left over. obey-child is TRUE by default and takes the ratio from the child itself, so the story starts with it FALSE or the ratio control would be inert.`,controls:[{name:`ratio`,label:`Ratio`,type:J.RANGE,min:.5,max:3,step:.25,defaultValue:2},{name:`xalign`,label:`Xalign`,type:J.RANGE,min:0,max:1,step:.5,defaultValue:.5},{name:`yalign`,label:`Yalign`,type:J.RANGE,min:0,max:1,step:.5,defaultValue:.5},{name:`obeyChild`,label:`Obey child`,type:J.BOOLEAN,defaultValue:!1}]};var pa=__exportAll$1({AspectFrameStories:()=>ha,AspectFrameStory:()=>ma}),ma=class AspectFrameStory extends X{_frame=null;static{o.registerClass({GTypeName:`AdwStorybookAspectFrame`},AspectFrameStory)}constructor(){super(X.fromMeta(AspectFrameStory.getMetadata(),`Default`))}static getMetadata(){return{...fa,component:n.AspectFrame.$gtype}}initialize(){this._frame=new n.AspectFrame({hexpand:!0,valign:n.Align.CENTER,width_request:320,height_request:180});let e=new n.Label({label:`The frame gives this child the ratio above, and puts it where xalign and yalign say.`});e.set_margin_top(12),e.set_margin_bottom(12),e.set_margin_start(12),e.set_margin_end(12),e.set_vexpand(!0),this._frame.set_child(e),this._apply(),this.addContent(this._frame)}updateArgs(e){this._apply()}_apply(){this._frame&&(this._frame.ratio=this.args.ratio,this._frame.xalign=this.args.xalign,this._frame.yalign=this.args.yalign,this._frame.obeyChild=this.args.obeyChild)}};o.type_ensure(ma.$gtype);const ha={stories:[ma]},ga={title:`Layout/Bin`,description:`Adw.Bin — a widget with exactly one child. It draws nothing of its own and gives the child its whole allocation; setting a new child replaces the old one.`,controls:[{name:`label`,label:`Child label`,type:J.TEXT,defaultValue:`The one child of this bin.`},{name:`swap`,label:`Replace the child`,type:J.BOOLEAN,defaultValue:!1}]};var _a=__exportAll$1({BinStories:()=>ya,BinStory:()=>va}),va=class BinStory extends X{_bin=null;static{o.registerClass({GTypeName:`AdwStorybookBin`},BinStory)}constructor(){super(X.fromMeta(BinStory.getMetadata(),`Default`))}static getMetadata(){return{...ga,component:s.Bin.$gtype}}initialize(){this._bin=new s.Bin({widthRequest:320}),this._apply(),this.addContent(this._bin)}updateArgs(e){this._apply()}_apply(){if(!this._bin)return;let e=this.args.swap,t=new n.Label({label:e?`The first child was replaced, not stacked.`:this.args.label,wrap:!0,marginTop:18,marginBottom:18,marginStart:18,marginEnd:18}),r=new n.Box;r.add_css_class(`card`),r.append(t),this._bin.child=r}};o.type_ensure(va.$gtype);const ya={stories:[va]},ba={title:`Layout/Breakpoint Bin`,description:`Adw.BreakpointBin gives breakpoints a home without a window: its one child rearranges itself at a size threshold, and the bin applies the LAST breakpoint whose condition holds. Resize the stage to see it.`,controls:[{name:`condition`,label:`Condition`,type:J.SELECT,options:[{label:`max-width: 480px`,value:`max-width: 480px`},{label:`max-width: 320px`,value:`max-width: 320px`},{label:`max-height: 200px`,value:`max-height: 200px`}],defaultValue:`max-width: 480px`},{name:`narrowLabel`,label:`Narrow label`,type:J.TEXT,defaultValue:`Narrow`},{name:`wideLabel`,label:`Wide label`,type:J.TEXT,defaultValue:`Wide`}]};var xa=__exportAll$1({BreakpointBinStories:()=>Ca,BreakpointBinStory:()=>Sa}),Sa=class BreakpointBinStory extends X{_bin=null;_label=null;_breakpoint=null;static{o.registerClass({GTypeName:`AdwStorybookBreakpointBin`},BreakpointBinStory)}constructor(){super(X.fromMeta(BreakpointBinStory.getMetadata(),`Default`))}static getMetadata(){return{...ba,component:s.BreakpointBin.$gtype}}initialize(){this._label=new n.Label({label:this.args.wideLabel,ellipsize:3}),this._label.add_css_class(`title-1`),this._bin=new s.BreakpointBin,this._bin.set_size_request(150,60),this._bin.set_child(this._label),this._apply(),this.addContent(this._bin)}updateArgs(e){this._apply()}_apply(){if(!this._bin||!this._label)return;let e=s.BreakpointCondition.parse(this.args.condition);e!==null&&(this._breakpoint!==null&&this._bin.remove_breakpoint(this._breakpoint),this._breakpoint=s.Breakpoint.new(e),this._breakpoint.add_setter(this._label,`label`,this.args.narrowLabel),this._bin.add_breakpoint(this._breakpoint),this._label.label=this.args.wideLabel)}};o.type_ensure(Sa.$gtype);const Ca={stories:[Sa]},wa={title:`Layout/Center Box`,description:`Gtk.CenterBox — three widgets, pinned to the start, the centre and the end, with the space between them going to whichever child can grow. shrink-center-last decides who gives up space first.`,controls:[{name:`shrinkCenterLast`,label:`Shrink center last`,type:J.BOOLEAN,defaultValue:!0},{name:`baselinePosition`,label:`Baseline position`,type:J.SELECT,options:[{label:`Top`,value:`top`},{label:`Center`,value:`center`},{label:`Bottom`,value:`bottom`}],defaultValue:`center`}]};var Ta=__exportAll$1({CenterBoxStories:()=>Oa,CenterBoxStory:()=>Da});const Ea={top:n.BaselinePosition.TOP,center:n.BaselinePosition.CENTER,bottom:n.BaselinePosition.BOTTOM};var Da=class CenterBoxStory extends X{_box=null;static{o.registerClass({GTypeName:`AdwStorybookCenterBox`},CenterBoxStory)}constructor(){super(X.fromMeta(CenterBoxStory.getMetadata(),`Default`))}static getMetadata(){return{...wa,component:n.CenterBox.$gtype}}initialize(){this._box=new n.CenterBox({margin_top:12,margin_bottom:12,margin_start:12,margin_end:12}),this._box.set_start_widget(new n.Label({label:`Start`,hexpand:!1})),this._box.set_center_widget(new n.Label({label:`Centre`,hexpand:!0})),this._box.set_end_widget(new n.Label({label:`End`,hexpand:!1})),this._apply(),this.addContent(this._box)}updateArgs(e){this._apply()}_apply(){this._box&&(this._box.shrinkCenterLast=this.args.shrinkCenterLast,this._box.baselinePosition=Ea[this.args.baselinePosition])}};o.type_ensure(Da.$gtype);const Oa={stories:[Da]},ka={title:`Layout/Clamp Scrollable`,description:`Adw.ClampScrollable — a clamp whose child scrolls. The scrollbar stays at the edge of the window while the content is held at a maximum width.`,controls:[{name:`maximumSize`,label:`Maximum size`,type:J.RANGE,min:200,max:600,step:10,defaultValue:400},{name:`tighteningThreshold`,label:`Tightening threshold`,type:J.RANGE,min:100,max:600,step:10,defaultValue:300}]};var Aa=__exportAll$1({ClampScrollableStories:()=>Na,ClampScrollableStory:()=>Ma});const ja=Array.from({length:24},(e,t)=>`Line ${t+1}: held at the clamp's width while it scrolls.`);var Ma=class ClampScrollableStory extends X{_clamp=null;static{o.registerClass({GTypeName:`AdwStorybookClampScrollable`},ClampScrollableStory)}constructor(){super(X.fromMeta(ClampScrollableStory.getMetadata(),`Default`))}static getMetadata(){return{...ka,component:s.ClampScrollable.$gtype}}initialize(){let e=new n.TextView({editable:!1,cursorVisible:!1,topMargin:12,bottomMargin:12});e.buffer.set_text(ja.join(`
|
|
352
|
-
`),-1),this._clamp=new s.ClampScrollable({maximumSize:this.args.maximumSize,tighteningThreshold:this.args.tighteningThreshold,child:e});let t=new n.ScrolledWindow({child:this._clamp,widthRequest:640,heightRequest:240});this.addContent(t)}updateArgs(e){this._clamp&&(this._clamp.maximumSize=this.args.maximumSize,this._clamp.tighteningThreshold=this.args.tighteningThreshold)}};o.type_ensure(Ma.$gtype);const Na={stories:[Ma]},Pa={title:`Layout/Clamp`,description:`Adw.Clamp limits its child to a maximum width and centres it, tightening the layout as space shrinks.`,controls:[{name:`maximumSize`,label:`Maximum size`,type:J.RANGE,min:200,max:600,step:10,defaultValue:400},{name:`tighteningThreshold`,label:`Tightening threshold`,type:J.RANGE,min:100,max:600,step:10,defaultValue:300}]};var Fa=__exportAll$1({ClampStories:()=>La,ClampStory:()=>Ia}),Ia=class ClampStory extends X{_clamp=null;static{o.registerClass({GTypeName:`AdwStorybookClamp`},ClampStory)}constructor(){super(X.fromMeta(ClampStory.getMetadata(),`Default`))}static getMetadata(){return{...Pa,component:s.Clamp.$gtype}}initialize(){let e=new n.Box({orientation:n.Orientation.HORIZONTAL,widthRequest:520});e.add_css_class(`card`);let t=new n.Label({label:`This content is clamped — it stops growing past the maximum size and stays centred.`,wrap:!0,xalign:0,hexpand:!0,marginTop:18,marginBottom:18,marginStart:18,marginEnd:18});e.append(t),this._clamp=new s.Clamp({maximumSize:this.args.maximumSize,tighteningThreshold:this.args.tighteningThreshold,child:e}),this.addContent(this._clamp)}updateArgs(e){this._clamp&&(this._clamp.maximumSize=this.args.maximumSize,this._clamp.tighteningThreshold=this.args.tighteningThreshold)}};o.type_ensure(Ia.$gtype);const La={stories:[Ia]},Ra={title:`Layout/Expander`,description:"Gtk.Expander — a title the user clicks to reveal the child below it. The arrow is its own CSS node and `:checked` is set on THAT node, not on the widget, which is what libadwaita's _expanders.scss keys the glyph swap on. `use-underline` marks a mnemonic with `_`, and Alt+that character activates the expander.",controls:[{name:`expanded`,label:`Expanded`,type:J.BOOLEAN,defaultValue:!1},{name:`useUnderline`,label:`Label marks a mnemonic`,type:J.BOOLEAN,defaultValue:!1},{name:`label`,label:`Label`,type:J.TEXT,defaultValue:`_More options`},{name:`resizeToplevel`,label:`Resize the toplevel`,type:J.BOOLEAN,defaultValue:!1}]};var za=__exportAll$1({ExpanderStories:()=>Va,ExpanderStory:()=>Ba}),Ba=class ExpanderStory extends X{_expander=null;static{o.registerClass({GTypeName:`AdwStorybookExpander`},ExpanderStory)}constructor(){super(X.fromMeta(ExpanderStory.getMetadata(),`Default`))}static getMetadata(){return{...Ra,component:n.Expander.$gtype}}initialize(){let e=new n.Box({orientation:n.Orientation.VERTICAL,spacing:6,margin_top:12,margin_bottom:12,margin_start:12,margin_end:12});for(let t of[`Notifications`,`Sound`,`Network`])e.append(new n.Label({label:t}));this._expander=new n.Expander,this._expander.set_child(e),this._apply(),this.addContent(this._expander)}updateArgs(e){this._apply()}_apply(){this._expander&&(this._expander.use_underline=this.args.useUnderline,this._expander.label=String(this.args.label),this._expander.resize_toplevel=this.args.resizeToplevel,this._expander.expanded=this.args.expanded)}};o.type_ensure(Ba.$gtype);const Va={stories:[Ba]},Ha={title:`Layout/Fixed`,description:`Gtk.Fixed — children at pixel positions, which is the whole of its API: it declares no property of its own. The two offsets are the arguments of gtk_fixed_put().`,controls:[{name:`offsetX`,label:`Offset x`,type:J.RANGE,min:0,max:80,step:4,defaultValue:24},{name:`offsetY`,label:`Offset y`,type:J.RANGE,min:0,max:80,step:4,defaultValue:16}]};var Ua=__exportAll$1({FixedStories:()=>Ga,FixedStory:()=>Wa}),Wa=class FixedStory extends X{_fixed=null;_first=null;_second=null;static{o.registerClass({GTypeName:`AdwStorybookFixed`},FixedStory)}constructor(){super(X.fromMeta(FixedStory.getMetadata(),`Default`))}static getMetadata(){return{...Ha,component:n.Fixed.$gtype}}initialize(){this._fixed=new n.Fixed,this._first=new n.Label({label:`at (x, y)`}),this._second=new n.Label({label:`at (x + 96, y + 40)`}),this._fixed.put(this._first,0,0),this._fixed.put(this._second,0,0),this._apply(),this.addContent(this._fixed)}updateArgs(e){this._apply()}_apply(){if(!this._fixed||!this._first||!this._second)return;let e=this.args.offsetX,t=this.args.offsetY;this._fixed.move(this._first,e,t),this._fixed.move(this._second,e+96,t+40)}};o.type_ensure(Wa.$gtype);const Ga={stories:[Wa]},Ka={title:`Layout/Frame`,description:`Gtk.Frame — a 1px border with a label embedded in its top edge. GTK draws the label as its own widget above the child, and label-xalign says where across the frame it sits.`,controls:[{name:`label`,label:`Label`,type:J.TEXT,defaultValue:`Details`},{name:`labelXalign`,label:`Label xalign`,type:J.RANGE,defaultValue:0,min:0,max:1,step:.5}]};var qa=__exportAll$1({FrameStories:()=>Ya,FrameStory:()=>Ja}),Ja=class FrameStory extends X{_frame=null;static{o.registerClass({GTypeName:`AdwStorybookFrame`},FrameStory)}constructor(){super(X.fromMeta(FrameStory.getMetadata(),`Default`))}static getMetadata(){return{...Ka,component:n.Frame.$gtype}}initialize(){this._frame=new n.Frame({halign:n.Align.CENTER});let e=new n.Label({label:`A framed region: the label sits in the top edge of the border.`});e.set_margin_top(12),e.set_margin_bottom(12),e.set_margin_start(12),e.set_margin_end(12),this._frame.set_child(e),this._apply(),this.addContent(this._frame)}updateArgs(e){this._apply()}_apply(){this._frame&&(this._frame.label=this.args.label,this._frame.set_label_align(this.args.labelXalign))}};o.type_ensure(Ja.$gtype);const Ya={stories:[Ja]},Xa={title:`Layout/Grid`,description:`Gtk.Grid — a table of cells sized by what is in them, filled row by row. The two spacings are the gap between lines, the two homogeneous flags make every line the same, and a vertical grid attaches down the rows instead of across the columns.`,controls:[{name:`columnSpacing`,label:`Column spacing`,type:J.RANGE,min:0,max:36,step:2,defaultValue:12},{name:`rowSpacing`,label:`Row spacing`,type:J.RANGE,min:0,max:36,step:2,defaultValue:12},{name:`columnHomogeneous`,label:`Column homogeneous`,type:J.BOOLEAN,defaultValue:!1},{name:`rowHomogeneous`,label:`Row homogeneous`,type:J.BOOLEAN,defaultValue:!1},{name:`orientation`,label:`Orientation`,type:J.SELECT,options:[{label:`Horizontal`,value:`horizontal`},{label:`Vertical`,value:`vertical`}],defaultValue:`horizontal`}]};var Za=__exportAll$1({GridStories:()=>$a,GridStory:()=>Qa}),Qa=class GridStory extends X{_grid=null;_cells=[];_orientation=null;static{o.registerClass({GTypeName:`AdwStorybookGrid`},GridStory)}constructor(){super(X.fromMeta(GridStory.getMetadata(),`Default`))}static getMetadata(){return{...Xa,component:n.Grid.$gtype}}initialize(){this._grid=new n.Grid({hexpand:!0,margin_top:12,margin_bottom:12,margin_start:12,margin_end:12});for(let e of[`Name`,`Value`,`Unit`,`editable`]){let t=new n.Label({label:e,hexpand:!0});t.set_margin_top(6),t.set_margin_bottom(6),t.set_margin_start(6),t.set_margin_end(6),this._cells.push(t)}this._attach(),this._apply(),this.addContent(this._grid)}updateArgs(e){this._apply()}_attach(){if(this._grid)for(let e of this._cells)this._grid.attach(e,-1,-1,1,1)}_apply(){if(!this._grid)return;let e=this.args.orientation===`vertical`?n.Orientation.VERTICAL:n.Orientation.HORIZONTAL;if(this._grid.columnSpacing=this.args.columnSpacing,this._grid.rowSpacing=this.args.rowSpacing,this._grid.columnHomogeneous=this.args.columnHomogeneous,this._grid.rowHomogeneous=this.args.rowHomogeneous,this._orientation!==null&&this._orientation!==e){for(let e of this._cells)this._grid.remove(e);this._attach()}this._grid.orientation=e,this._orientation=e}};o.type_ensure(Qa.$gtype);const $a={stories:[Qa]},eo={title:`Layout/Header Bar`,description:`Adw.HeaderBar hosts a custom title widget with start and end controls — the standard top chrome of an Adwaita window.`,controls:[{name:`title`,label:`Title`,type:J.TEXT,defaultValue:`Text Editor`},{name:`subtitle`,label:`Subtitle`,type:J.TEXT,defaultValue:`notes.md`},{name:`showTitle`,label:`Show title`,type:J.BOOLEAN,defaultValue:!0}]};var to=__exportAll$1({HeaderBarStories:()=>ro,HeaderBarStory:()=>no}),no=class HeaderBarStory extends X{_headerBar=null;_title=null;static{o.registerClass({GTypeName:`AdwStorybookHeaderBar`},HeaderBarStory)}constructor(){super(X.fromMeta(HeaderBarStory.getMetadata(),`Default`))}static getMetadata(){return{...eo,component:s.HeaderBar.$gtype}}initialize(){this._title=new s.WindowTitle({title:this.args.title,subtitle:this.args.subtitle}),this._headerBar=new s.HeaderBar({titleWidget:this._title,showTitle:this.args.showTitle,widthRequest:460});let e=new n.Button({iconName:`go-previous-symbolic`});e.add_css_class(`flat`),this._headerBar.pack_start(e);let t=new r.Menu;t.append(`New Window`,`app.new-window`),t.append(`Preferences`,`app.preferences`),t.append(`About`,`app.about`);let i=new n.MenuButton({iconName:`open-menu-symbolic`,menuModel:t});i.add_css_class(`flat`),this._headerBar.pack_end(i),this.addContent(this._headerBar)}updateArgs(e){!this._headerBar||!this._title||(this._title.title=this.args.title,this._title.subtitle=this.args.subtitle,this._headerBar.showTitle=this.args.showTitle)}};o.type_ensure(no.$gtype);const ro={stories:[no]},io={title:`Layout/Layout Slot`,description:`Adw.LayoutSlot is the named hole a layout of an Adw.MultiLayoutView leaves for a child: it takes the child whose id matches, and its visible property follows that child's. On its own it is a bin, which is what this story shows.`,controls:[{name:`label`,label:`Child title`,type:J.TEXT,defaultValue:`Inbox`},{name:`visible`,label:`Child visible`,type:J.BOOLEAN,defaultValue:!0}]};var ao=__exportAll$1({LayoutSlotStories:()=>so,LayoutSlotStory:()=>oo}),oo=class LayoutSlotStory extends X{_view=null;_slot=null;_child=null;static{o.registerClass({GTypeName:`AdwStorybookLayoutSlot`},LayoutSlotStory)}constructor(){super(X.fromMeta(LayoutSlotStory.getMetadata(),`Default`))}static getMetadata(){return{...io,component:s.LayoutSlot.$gtype}}initialize(){this._slot=s.LayoutSlot.new(`primary`),this._child=new s.NavigationPage({title:this.args.label,tag:`primary`,child:new n.Label({label:`The child the view inserted here.`})}),this._view=new s.MultiLayoutView;let e=s.Layout.new(this._slot);e.name=`only`,this._view.add_layout(e),this._view.set_child(`primary`,this._child),this._apply(),this.addContent(this._view)}updateArgs(e){this._apply()}_apply(){this._child&&(this._child.title=this.args.label,this._child.visible=this.args.visible)}};o.type_ensure(oo.$gtype);const so={stories:[oo]},co={title:`Layout/Multi Layout View`,description:`Adw.MultiLayoutView holds one set of children and several arrangements of them: each child has an id, each layout has slots with ids, and switching layouts re-inserts every child into the slot of the SAME id.`,controls:[{name:`layoutName`,label:`Layout`,type:J.SELECT,options:[{label:`wide (split)`,value:`wide`},{label:`narrow (stacked)`,value:`narrow`}],defaultValue:`wide`},{name:`showDetails`,label:`Show the details pane`,type:J.BOOLEAN,defaultValue:!0}]};var lo=__exportAll$1({MultiLayoutViewStories:()=>mo,MultiLayoutViewStory:()=>po});const uo=`primary`,fo=`secondary`;function page(e){let t=new n.ListBox({selectionMode:n.SelectionMode.NONE});for(let[n,r]of e)t.append(new s.ActionRow({title:n,subtitle:r}));return t}function slotPage(e){return new s.NavigationPage({title:e,child:s.LayoutSlot.new(e),tag:e})}function arrangement(e){let t=new s.NavigationSplitView({collapsed:e,minSidebarWidth:160});return t.sidebar=slotPage(fo),t.content=slotPage(uo),t.set_size_request(420,220),t}var po=class MultiLayoutViewStory extends X{_view=null;_details=null;static{o.registerClass({GTypeName:`AdwStorybookMultiLayoutView`},MultiLayoutViewStory)}constructor(){super(X.fromMeta(MultiLayoutViewStory.getMetadata(),`Default`))}static getMetadata(){return{...co,component:s.MultiLayoutView.$gtype}}initialize(){this._details=page([[`From`,`Adwaita List`],[`Subject`,`Resizing the window`]]),this._view=new s.MultiLayoutView;let e=s.Layout.new(arrangement(!1));e.name=`wide`,this._view.add_layout(e);let t=s.Layout.new(arrangement(!0));t.name=`narrow`,this._view.add_layout(t),this._view.set_child(uo,page([[`General`,`12 unread`],[`Starred`,`3 threads`]])),this._view.set_child(fo,this._details),this._apply(),this.addContent(this._view)}updateArgs(e){this._apply()}_apply(){!this._view||!this._details||(this._details.visible=this.args.showDetails,this._view.layout_name=this.args.layoutName)}};o.type_ensure(po.$gtype);const mo={stories:[po]},ho={title:`Layout/Overlay`,description:`Gtk.Overlay — widgets stacked on top of one main child. The main child sizes the overlay; every other child is placed by its own halign/valign, which is what gtk_overlay_get_child_position reads and nothing else. Libadwaita ships no Adw.Overlay and gives the node no rule of its own — the .left/.right/.top/.bottom classes it puts on an edge-aligned child are the whole published contract.`,controls:[{name:`halign`,label:`Overlay halign`,type:J.SELECT,options:[{label:`Fill (the default)`,value:`fill`},{label:`Start`,value:`start`},{label:`Center`,value:`center`},{label:`End`,value:`end`}],defaultValue:`end`},{name:`valign`,label:`Overlay valign`,type:J.SELECT,options:[{label:`Fill (the default)`,value:`fill`},{label:`Start`,value:`start`},{label:`Center`,value:`center`},{label:`End`,value:`end`}],defaultValue:`end`},{name:`showLabel`,label:`Label the overlay`,type:J.BOOLEAN,defaultValue:!0}]};var go=__exportAll$1({OverlayStories:()=>yo,OverlayStory:()=>vo});const _o={start:n.Align.START,center:n.Align.CENTER,end:n.Align.END};var vo=class OverlayStory extends X{_overlay=null;_main=null;_badge=null;static{o.registerClass({GTypeName:`AdwStorybookOverlay`},OverlayStory)}constructor(){super(X.fromMeta(OverlayStory.getMetadata(),`Default`))}static getMetadata(){return{...ho,component:n.Overlay.$gtype}}initialize(){this._main=new n.Frame({width_request:260,height_request:160,margin_top:12,margin_bottom:12});let e=new n.Label({label:`Main child — its size is the overlay`});e.add_css_class(`dim-label`),this._main.set_child(e),this._badge=new n.Box({valign:n.Align.END,halign:n.Align.END}),this._badge.set_css_classes([`osd`,`flat`]),this._badge.append(new n.Label({label:`2`})),this._overlay=new n.Overlay,this._overlay.set_child(this._main),this._overlay.add_overlay(this._badge),this._apply(),this.addContent(this._overlay)}updateArgs(e){this._apply()}_apply(){if(!this._badge)return;let e=_o[String(this.args.halign)],t=_o[String(this.args.valign)];e===void 0?this._badge.halign=n.Align.FILL:this._badge.halign=e,t===void 0?this._badge.valign=n.Align.FILL:this._badge.valign=t,this._badge.visible=this.args.showLabel}};o.type_ensure(vo.$gtype);const yo={stories:[vo]},bo={title:`Layout/Paned`,description:"Gtk.Paned — two children either side of a divider the user drags. With both children resizable and no position set, GTK divides the paned in PROPORTION TO THE TWO SIZE REQUESTS rather than in half, and it draws the divider as the `separator` node a GtkPanedHandle carries. Libadwaita styles that node in _paned.scss: 1px, 5px when `wide-handle`, with the rule as an inset shadow rather than a fill.",controls:[{name:`orientation`,label:`Orientation`,type:J.SELECT,options:[{label:`Horizontal`,value:`horizontal`},{label:`Vertical`,value:`vertical`}],defaultValue:`horizontal`},{name:`wideHandle`,label:`Wide handle`,type:J.BOOLEAN,defaultValue:!1},{name:`resizeStartChild`,label:`Resize the first child`,type:J.BOOLEAN,defaultValue:!0},{name:`resizeEndChild`,label:`Resize the second child`,type:J.BOOLEAN,defaultValue:!0},{name:`shrinkStartChild`,label:`The first child may shrink`,type:J.BOOLEAN,defaultValue:!0},{name:`position`,label:`Position (0 = derive)`,type:J.NUMBER,min:-1,max:400,step:1,defaultValue:-1}]};var xo=__exportAll$1({PanedStories:()=>Co,PanedStory:()=>So});function pane(e,t){let r=new n.Box({orientation:n.Orientation.VERTICAL,spacing:4,margin_top:12,margin_bottom:12,margin_start:12,margin_end:12});r.append(new n.Label({label:e}));let i=new n.Label({label:`${t}px of size request`});return i.add_css_class(`dim-label`),r.append(i),r}var So=class PanedStory extends X{_paned=null;static{o.registerClass({GTypeName:`AdwStorybookPaned`},PanedStory)}constructor(){super(X.fromMeta(PanedStory.getMetadata(),`Default`))}static getMetadata(){return{...bo,component:n.Paned.$gtype}}initialize(){this._paned=new n.Paned({orientation:n.Orientation.HORIZONTAL}),this._paned.set_start_child(pane(`First child`,100)),this._paned.set_end_child(pane(`Second child`,300)),this._paned.set_size_request(400,140),this._apply(),this.addContent(this._paned)}updateArgs(e){this._apply()}_apply(){this._paned&&(this._paned.orientation=this.args.orientation===`vertical`?n.Orientation.VERTICAL:n.Orientation.HORIZONTAL,this._paned.wide_handle=this.args.wideHandle,this._paned.resize_start_child=this.args.resizeStartChild,this._paned.resize_end_child=this.args.resizeEndChild,this._paned.shrink_start_child=this.args.shrinkStartChild,this._paned.position=Number(this.args.position))}};o.type_ensure(So.$gtype);const Co={stories:[So]},wo=[{label:`Cut`},{label:`Copy`},{label:`Paste`},{label:`Delete`,accel:`<Shift>Delete`}],To={title:`Layout/Popover Bin`,description:'Gtk.PopoverBin — GTK 4.22’s one-child container with a popover, for the place where "any part of this window can offer a menu" is the answer. `menu-model` builds the popover for you, and `handle-input` is what turns a right click or a long press into a popup — a plain click still reaches the child.',controls:[{name:`handleInput`,label:`Right click / long press opens`,type:J.BOOLEAN,defaultValue:!0}]};var Eo=__exportAll$1({PopoverBinStories:()=>Oo,PopoverBinStory:()=>Do}),Do=class PopoverBinStory extends X{_bin=null;_list=null;static{o.registerClass({GTypeName:`AdwStorybookPopoverBin`},PopoverBinStory)}constructor(){super(X.fromMeta(PopoverBinStory.getMetadata(),`Default`))}static getMetadata(){return{...To,component:n.PopoverBin.$gtype}}initialize(){this._list=new n.ListBox({selectionMode:n.SelectionMode.SINGLE});for(let e of[`Documents`,`Downloads`,`Pictures`])this._list.append(new n.ListBoxRow({child:new n.Label({label:e})}));this._bin=new n.PopoverBin({child:this._list}),this._apply(),this.addContent(this._bin)}updateArgs(e){this._apply()}_buildMenu(){let e=new r.Menu;for(let t of wo)e.append(t.label,`app.${t.label.toLowerCase().replace(/[^a-z0-9]+/g,`-`)}`);return e}_apply(){this._bin&&(this._bin.menuModel=this._buildMenu(),this._bin.handleInput=this.args.handleInput)}};o.type_ensure(Do.$gtype);const Oo={stories:[Do]},ko=[{label:`New Window`,accel:`<Control>N`},{section:[{label:`Cut`},{label:`Copy`},{label:`Paste`}],label:`Edit`},{label:`Open With`,submenu:[{label:`Text Editor`},{label:`Web Browser`},{label:`Terminal`}]}],Ao={title:`Layout/Popover Menu`,description:"Gtk.PopoverMenu — a Gtk.Popover whose contents are a menu model instead of a child widget. A submenu swaps the page of the ONE surface rather than opening a second popup beside it, which is why the open page is a named one (`visible-submenu`).",controls:[{name:`menuTitle`,label:`Heading`,type:J.TEXT,defaultValue:`Document`},{name:`position`,label:`Position`,type:J.SELECT,options:[{label:`Bottom`,value:`bottom`},{label:`Top`,value:`top`},{label:`Start`,value:`start`},{label:`End`,value:`end`}],defaultValue:`bottom`},{name:`align`,label:`Align`,type:J.SELECT,options:[{label:`Start`,value:`start`},{label:`End`,value:`end`}],defaultValue:`start`},{name:`autohide`,label:`Dismiss on outside click`,type:J.BOOLEAN,defaultValue:!0}]};var jo=__exportAll$1({PopoverMenuStories:()=>No,PopoverMenuStory:()=>Mo});const actionOf=e=>`app.${e.toLowerCase().replace(/[^a-z0-9]+/g,`-`)}`;var Mo=class PopoverMenuStory extends X{_anchor=null;_popover=null;static{o.registerClass({GTypeName:`AdwStorybookPopoverMenu`},PopoverMenuStory)}constructor(){super(X.fromMeta(PopoverMenuStory.getMetadata(),`Default`))}static getMetadata(){return{...Ao,component:n.PopoverMenu.$gtype}}initialize(){this._anchor=new n.Button({label:`Open menu`,halign:n.Align.CENTER}),this._apply(),this.addContent(this._anchor)}updateArgs(e){this._apply()}_buildMenu(e){let t=new r.Menu,n=[];for(let e of ko){if(`submenu`in e){let n=new r.Menu;for(let t of e.submenu)n.append(t.label,actionOf(t.label));t.append_submenu(e.label,n);continue}if(`section`in e){let n=new r.Menu;for(let t of e.section)n.append(t.label,actionOf(t.label));t.append_section(`Edit`,n);continue}n.push(e.label)}if(e.length>0){let i=new r.Menu;for(let e of n)i.append(e,actionOf(e));t.append_section(e,i)}else for(let e of n)t.append(e,actionOf(e));return t}_apply(){if(!this._anchor)return;let e=this._popover;this._popover=n.PopoverMenu.new_from_model(this._buildMenu(this.args.menuTitle)),this._popover.set_parent(this._anchor),e?.unparent();let t={bottom:n.PositionType.BOTTOM,top:n.PositionType.TOP,start:n.PositionType.LEFT,end:n.PositionType.RIGHT};this._popover.position=t[this.args.position]??n.PositionType.BOTTOM,this._anchor&&(this._anchor.halign=this.args.align===`end`?n.Align.END:n.Align.START),this._popover.autohide=this.args.autohide}};o.type_ensure(Mo.$gtype);const No={stories:[Mo]},Po={title:`Layout/Popover`,description:"Gtk.Popover — the bubble-like surface. No model and no menu: it holds whatever widget you put in it, and everything here is about WHERE it appears and WHEN it goes away. `autohide` off is entry completion: the list follows the typing and the caret never leaves.",controls:[{name:`position`,label:`Position`,type:J.SELECT,options:[{label:`Bottom`,value:`bottom`},{label:`Top`,value:`top`},{label:`Start`,value:`start`},{label:`End`,value:`end`}],defaultValue:`bottom`},{name:`align`,label:`Align`,type:J.SELECT,options:[{label:`Start`,value:`start`},{label:`End`,value:`end`}],defaultValue:`start`},{name:`autohide`,label:`Dismiss on outside click`,type:J.BOOLEAN,defaultValue:!0}]};var Fo=__exportAll$1({PopoverStories:()=>Lo,PopoverStory:()=>Io}),Io=class PopoverStory extends X{_anchor=null;_popover=null;static{o.registerClass({GTypeName:`AdwStorybookPopover`},PopoverStory)}constructor(){super(X.fromMeta(PopoverStory.getMetadata(),`Default`))}static getMetadata(){return{...Po,component:n.Popover.$gtype}}initialize(){let e=new n.Box({orientation:n.Orientation.VERTICAL,spacing:6});e.append(new n.Label({label:`Anything you like`})),e.append(new n.Label({label:`in here`})),this._anchor=new n.Button({label:`Show popover`,halign:n.Align.CENTER}),this._popover=new n.Popover({child:e}),this._popover.set_parent(this._anchor),this._apply(),this.addContent(this._anchor)}updateArgs(e){this._apply()}_apply(){if(!this._popover)return;let e={bottom:n.PositionType.BOTTOM,top:n.PositionType.TOP,start:n.PositionType.LEFT,end:n.PositionType.RIGHT};this._popover.position=e[this.args.position]??n.PositionType.BOTTOM,this._anchor&&(this._anchor.halign=this.args.align===`end`?n.Align.END:n.Align.START),this._popover.autohide=this.args.autohide}};o.type_ensure(Io.$gtype);const Lo={stories:[Io]},Ro={title:`Layout/Revealer`,description:`Gtk.Revealer — shows and hides its child with an animation. The transition is one of fourteen nicks and it is not only an opacity change: a slide scales the box along one axis while allocating the child at its UNSCALED size, and a swing folds it in with sin (π · pos / 2). Libadwaita styles no revealer node of its own, so everything here is GTK behaviour the browser element ports.`,controls:[{name:`transitionType`,label:`Transition`,type:J.SELECT,options:[{label:`Slide down (the default)`,value:`slide-down`},{label:`Slide up`,value:`slide-up`},{label:`Slide left`,value:`slide-left`},{label:`Slide right`,value:`slide-right`},{label:`Crossfade`,value:`crossfade`},{label:`Fade + slide down`,value:`fade-slide-down`},{label:`Swing down (fold)`,value:`swing-down`},{label:`Swing right (fold)`,value:`swing-right`},{label:`None`,value:`none`}],defaultValue:`slide-down`},{name:`transitionDuration`,label:`Duration (ms)`,type:J.RANGE,min:0,max:800,step:50,defaultValue:250},{name:`revealChild`,label:`Reveal`,type:J.BOOLEAN,defaultValue:!0}]};var zo=__exportAll$1({RevealerStories:()=>Ho,RevealerStory:()=>Vo});const Bo={none:n.RevealerTransitionType.NONE,crossfade:n.RevealerTransitionType.CROSSFADE,"slide-right":n.RevealerTransitionType.SLIDE_RIGHT,"slide-left":n.RevealerTransitionType.SLIDE_LEFT,"slide-up":n.RevealerTransitionType.SLIDE_UP,"slide-down":n.RevealerTransitionType.SLIDE_DOWN,"swing-right":n.RevealerTransitionType.SWING_RIGHT,"swing-left":n.RevealerTransitionType.SWING_LEFT,"swing-up":n.RevealerTransitionType.SWING_UP,"swing-down":n.RevealerTransitionType.SWING_DOWN,"fade-slide-right":n.RevealerTransitionType.FADE_SLIDE_RIGHT,"fade-slide-left":n.RevealerTransitionType.FADE_SLIDE_LEFT,"fade-slide-up":n.RevealerTransitionType.FADE_SLIDE_UP,"fade-slide-down":n.RevealerTransitionType.FADE_SLIDE_DOWN};var Vo=class RevealerStory extends X{_revealer=null;static{o.registerClass({GTypeName:`AdwStorybookRevealer`},RevealerStory)}constructor(){super(X.fromMeta(RevealerStory.getMetadata(),`Default`))}static getMetadata(){return{...Ro,component:n.Revealer.$gtype}}initialize(){let e=new n.Box({orientation:n.Orientation.VERTICAL,spacing:6,margin_top:12,margin_bottom:12,margin_start:12,margin_end:12});e.append(new n.Label({label:`The revealed child`}));let t=new n.Label({label:`Drag the controls to change the transition`});t.add_css_class(`dim-label`),e.append(t),this._revealer=new n.Revealer,this._revealer.set_child(e),this._apply(),this.addContent(this._revealer)}updateArgs(e){this._apply()}_apply(){this._revealer&&(this._revealer.transition_type=Bo[String(this.args.transitionType)],this._revealer.transition_duration=Number(this.args.transitionDuration),this._revealer.reveal_child=this.args.revealChild)}};o.type_ensure(Vo.$gtype);const Ho={stories:[Vo]},Uo={title:`Layout/Scrollbar`,description:`Gtk.Scrollbar — a trough and a slider, positioned by a GtkAdjustment. The slider is page_size over the whole range long and sits at the position over the SCROLLABLE range, which is why the two numbers it is made of do not share a denominator.`,controls:[{name:`orientation`,label:`Orientation`,type:J.SELECT,options:[{label:`Horizontal`,value:`horizontal`},{label:`Vertical`,value:`vertical`}],defaultValue:`vertical`},{name:`upper`,label:`Adjustment upper`,type:J.NUMBER,defaultValue:400},{name:`pageSize`,label:`Adjustment page size`,type:J.NUMBER,defaultValue:120},{name:`value`,label:`Adjustment value`,type:J.NUMBER,defaultValue:80}]};var Wo=__exportAll$1({ScrollbarStories:()=>Ko,ScrollbarStory:()=>Go}),Go=class ScrollbarStory extends X{_scrollbar=null;static{o.registerClass({GTypeName:`AdwStorybookScrollbar`},ScrollbarStory)}constructor(){super(X.fromMeta(ScrollbarStory.getMetadata(),`Default`))}static getMetadata(){return{...Uo,component:n.Scrollbar.$gtype}}initialize(){this._scrollbar=new n.Scrollbar({adjustment:new n.Adjustment({step_increment:10,page_increment:80})}),this._apply(),this.addContent(this._scrollbar)}updateArgs(e){this._apply()}_apply(){let e=this._scrollbar;if(!e)return;e.orientation=this.args.orientation===`horizontal`?n.Orientation.HORIZONTAL:n.Orientation.VERTICAL;let t=e.get_adjustment();t&&t.configure(Number(this.args.value),0,Number(this.args.upper),t.step_increment,t.page_increment,Number(this.args.pageSize))}};o.type_ensure(Go.$gtype);const Ko={stories:[Go]},qo={title:`Layout/ScrolledWindow`,description:`Gtk.ScrolledWindow — one child, two adjustments, and a scrollbar per edge that can actually scroll. The policies decide whether a bar appears, window-placement which edge it takes, and overlay-scrolling turns the bars into the auto-hiding indicators GNOME draws over the content.`,controls:[{name:`hPolicy`,label:`Horizontal policy`,type:J.SELECT,options:[{label:`Automatic`,value:`automatic`},{label:`Always`,value:`always`},{label:`Never`,value:`never`}],defaultValue:`automatic`},{name:`vPolicy`,label:`Vertical policy`,type:J.SELECT,options:[{label:`Automatic`,value:`automatic`},{label:`Always`,value:`always`},{label:`Never`,value:`never`}],defaultValue:`automatic`},{name:`placement`,label:`Window placement`,type:J.SELECT,options:[{label:`Top left`,value:`top-left`},{label:`Top right`,value:`top-right`},{label:`Bottom left`,value:`bottom-left`},{label:`Bottom right`,value:`bottom-right`}],defaultValue:`top-left`},{name:`frame`,label:`Frame`,type:J.BOOLEAN,defaultValue:!1},{name:`overlayScrolling`,label:`Overlay scrolling`,type:J.BOOLEAN,defaultValue:!0}]};var Jo=__exportAll$1({ScrolledWindowStories:()=>Qo,ScrolledWindowStory:()=>Zo});const Yo={automatic:n.PolicyType.AUTOMATIC,always:n.PolicyType.ALWAYS,never:n.PolicyType.NEVER},Xo={"top-left":n.CornerType.TOP_LEFT,"top-right":n.CornerType.TOP_RIGHT,"bottom-left":n.CornerType.BOTTOM_LEFT,"bottom-right":n.CornerType.BOTTOM_RIGHT};var Zo=class ScrolledWindowStory extends X{_window=null;static{o.registerClass({GTypeName:`AdwStorybookScrolledWindow`},ScrolledWindowStory)}constructor(){super(X.fromMeta(ScrolledWindowStory.getMetadata(),`Default`))}static getMetadata(){return{...qo,component:n.ScrolledWindow.$gtype}}initialize(){let e=new n.Box({orientation:n.Orientation.VERTICAL,spacing:8});for(let t=1;t<=16;t++)e.append(new n.Label({label:`Row ${t}`}));this._window=new n.ScrolledWindow({child:e,min_content_height:240,halign:n.Align.CENTER}),this._apply(),this.addContent(this._window)}updateArgs(e){this._apply()}_apply(){let e=this._window;e&&(e.set_policy(Yo[this.args.hPolicy]??n.PolicyType.AUTOMATIC,Yo[this.args.vPolicy]??n.PolicyType.AUTOMATIC),e.set_placement(Xo[this.args.placement]??n.CornerType.TOP_LEFT),e.has_frame=this.args.frame,e.set_overlay_scrolling(this.args.overlayScrolling))}};o.type_ensure(Zo.$gtype);const Qo={stories:[Zo]},$o={title:`Layout/Separator`,description:`Gtk.Separator — a one-pixel rule between two groups of widgets. Libadwaita ships no Adw.Separator; it only styles the GTK one, and the .spacer style class turns the rule into an empty 12px gap.`,controls:[{name:`orientation`,label:`Orientation`,type:J.SELECT,options:[{label:`Horizontal`,value:`horizontal`},{label:`Vertical`,value:`vertical`}],defaultValue:`horizontal`},{name:`spacer`,label:`Spacer (draws nothing)`,type:J.BOOLEAN,defaultValue:!1}]};var es=__exportAll$1({SeparatorStories:()=>ns,SeparatorStory:()=>ts}),ts=class SeparatorStory extends X{_box=null;_separator=null;static{o.registerClass({GTypeName:`AdwStorybookSeparator`},SeparatorStory)}constructor(){super(X.fromMeta(SeparatorStory.getMetadata(),`Default`))}static getMetadata(){return{...$o,component:n.Separator.$gtype}}initialize(){this._separator=new n.Separator,this._box=new n.Box({spacing:12,halign:n.Align.CENTER}),this._box.append(new n.Label({label:`Above`})),this._box.append(this._separator),this._box.append(new n.Label({label:`Below`})),this._apply(),this.addContent(this._box)}updateArgs(e){this._apply()}_apply(){if(!this._box||!this._separator)return;let e=this.args.orientation===`vertical`;this._separator.orientation=e?n.Orientation.VERTICAL:n.Orientation.HORIZONTAL,this._box.orientation=e?n.Orientation.HORIZONTAL:n.Orientation.VERTICAL,this.args.spacer?this._separator.add_css_class(`spacer`):this._separator.remove_css_class(`spacer`)}};o.type_ensure(ts.$gtype);const ns={stories:[ts]},rs={title:`Layout/Toolbar View`,description:`Adw.ToolbarView pins a top header bar and a bottom toolbar around its content, each independently revealable.`,controls:[{name:`revealTopBars`,label:`Reveal top bars`,type:J.BOOLEAN,defaultValue:!0},{name:`revealBottomBars`,label:`Reveal bottom bars`,type:J.BOOLEAN,defaultValue:!0}]};var is=__exportAll$1({ToolbarViewStories:()=>os,ToolbarViewStory:()=>as}),as=class ToolbarViewStory extends X{_view=null;static{o.registerClass({GTypeName:`AdwStorybookToolbarView`},ToolbarViewStory)}constructor(){super(X.fromMeta(ToolbarViewStory.getMetadata(),`Default`))}static getMetadata(){return{...rs,component:s.ToolbarView.$gtype}}initialize(){this._view=new s.ToolbarView({widthRequest:460,heightRequest:320,revealTopBars:this.args.revealTopBars,revealBottomBars:this.args.revealBottomBars});let e=new s.HeaderBar({titleWidget:new s.WindowTitle({title:`Documents`,subtitle:`12 items`})});this._view.add_top_bar(e);let t=new s.StatusPage({iconName:`folder-documents-symbolic`,title:`Your library`,description:`Content sits between the toolbars and scrolls independently of them.`});this._view.content=t;let r=new n.ActionBar,i=new n.Button({iconName:`list-add-symbolic`});i.add_css_class(`flat`);let o=new n.Button({iconName:`list-remove-symbolic`});o.add_css_class(`flat`),r.pack_start(i),r.pack_start(o),r.set_center_widget(new n.Label({label:`Selection: none`}));let c=new n.Button({iconName:`send-to-symbolic`});c.add_css_class(`flat`),r.pack_end(c),this._view.add_bottom_bar(r),this.addContent(this._view)}updateArgs(e){this._view&&(this._view.revealTopBars=this.args.revealTopBars,this._view.revealBottomBars=this.args.revealBottomBars)}};o.type_ensure(as.$gtype);const os={stories:[as]},ss={title:`Layout/Viewport`,description:`Gtk.Viewport — scrollability for a widget that has none of its own. It has one property, scroll-to-focus: whether a widget that takes the focus is scrolled into view. It is also what a Gtk.ScrolledWindow puts its child in.`,controls:[{name:`scrollToFocus`,label:`Scroll to focus`,type:J.BOOLEAN,defaultValue:!0}]};var cs=__exportAll$1({ViewportStories:()=>us,ViewportStory:()=>ls}),ls=class ViewportStory extends X{_viewport=null;static{o.registerClass({GTypeName:`AdwStorybookViewport`},ViewportStory)}constructor(){super(X.fromMeta(ViewportStory.getMetadata(),`Default`))}static getMetadata(){return{...ss,component:n.Viewport.$gtype}}initialize(){let e=new n.Box({orientation:n.Orientation.VERTICAL,spacing:8});for(let t=1;t<=16;t++)e.append(new n.Label({label:`Row ${t}`}));e.append(new n.Button({label:`Focus me`,halign:n.Align.START})),this._viewport=new n.Viewport({child:e,halign:n.Align.CENTER}),this._apply(),this.addContent(this._viewport)}updateArgs(e){this._apply()}_apply(){this._viewport&&this._viewport.set_scroll_to_focus(this.args.scrollToFocus)}};o.type_ensure(ls.$gtype);const us={stories:[ls]},ds={title:`Layout/Window`,description:`Adw.Window — a freeform window with no titlebar area. Use Adw.ToolbarView with Adw.HeaderBar for the top chrome.`,controls:[{name:`title`,label:`Title`,type:J.TEXT,defaultValue:`Text Editor`},{name:`subtitle`,label:`Subtitle`,type:J.TEXT,defaultValue:`notes.md`}]};var fs=__exportAll$1({WindowStories:()=>ms,WindowStory:()=>ps}),ps=class WindowStory extends X{_window=null;_title=null;static{o.registerClass({GTypeName:`AdwStorybookWindow`},WindowStory)}constructor(){super(X.fromMeta(WindowStory.getMetadata(),`Default`))}static getMetadata(){return{...ds,component:s.Window.$gtype}}initialize(){this._title=new s.WindowTitle({title:this.args.title,subtitle:this.args.subtitle});let e=new s.HeaderBar({titleWidget:this._title,widthRequest:460}),t=new n.Button({iconName:`go-previous-symbolic`});t.add_css_class(`flat`),e.pack_start(t);let r=new n.MenuButton({iconName:`open-menu-symbolic`});r.add_css_class(`flat`),e.pack_end(r);let i=new s.ToolbarView;i.add_top_bar(e),i.content=new s.StatusPage({title:`Your Library`,description:`Content sits between the toolbars and scrolls independently of them.`}),this._window=new s.Window({content:i}),this.addContent(this._window)}updateArgs(e){this._title&&(this._title.title=this.args.title,this._title.subtitle=this.args.subtitle)}};o.type_ensure(ps.$gtype);const ms={stories:[ps]},hs={title:`Layout/Wrap Box`,description:`Adw.WrapBox flows its children horizontally and wraps them onto new lines when they run out of room.`,controls:[{name:`childSpacing`,label:`Child spacing`,type:J.RANGE,min:0,max:36,step:1,defaultValue:8},{name:`lineSpacing`,label:`Line spacing`,type:J.RANGE,min:0,max:36,step:1,defaultValue:8}]};var gs=__exportAll$1({WrapBoxStories:()=>vs,WrapBoxStory:()=>_s}),_s=class WrapBoxStory extends X{_wrap=null;static{o.registerClass({GTypeName:`AdwStorybookWrapBox`},WrapBoxStory)}constructor(){super(X.fromMeta(WrapBoxStory.getMetadata(),`Default`))}static getMetadata(){return{...hs,component:s.WrapBox.$gtype}}initialize(){this._wrap=new s.WrapBox({childSpacing:this.args.childSpacing,lineSpacing:this.args.lineSpacing,widthRequest:460});for(let e of[`Design`,`Adwaita`,`GNOME`,`GTK`,`TypeScript`,`Storybook`,`Wrapping`,`Layout`]){let t=new n.Button({label:e});t.add_css_class(`pill`),this._wrap.append(t)}this.addContent(this._wrap)}updateArgs(e){this._wrap&&(this._wrap.childSpacing=this.args.childSpacing,this._wrap.lineSpacing=this.args.lineSpacing)}};o.type_ensure(_s.$gtype);const vs={stories:[_s]},ys={title:`Media/Image`,description:`Gtk.Image — a symbolic icon, drawn as a CSS-masked box in the surrounding text colour. It takes a NAME, not a file: a name the icon theme cannot resolve draws the missing-image glyph, which is exactly what GTK draws for it. That is why <gtk-picture> is a separate widget — an icon sized by the theme and an image fitted to a box are two different jobs.`,controls:[{name:`iconName`,label:`Icon name`,type:J.TEXT,defaultValue:`avatar-default-symbolic`},{name:`size`,label:`Size (px)`,type:J.RANGE,min:16,max:96,step:8,defaultValue:48},{name:`disabled`,label:`Disabled`,type:J.BOOLEAN,defaultValue:!1}]};var bs=__exportAll$1({ImageStories:()=>Ss,ImageStory:()=>xs}),xs=class ImageStory extends X{_image=null;static{o.registerClass({GTypeName:`AdwStorybookImage`},ImageStory)}constructor(){super(X.fromMeta(ImageStory.getMetadata(),`Default`))}static getMetadata(){return{...ys,component:n.Image.$gtype}}initialize(){this._image=new n.Image({halign:n.Align.CENTER,valign:n.Align.CENTER}),this._apply(),this.addContent(this._image)}updateArgs(e){this._apply()}_apply(){this._image&&(this._image.icon_size=this.args.size,this._image.icon_name=this.args.iconName,this._image.sensitive=!this.args.disabled)}};o.type_ensure(xs.$gtype);const Ss={stories:[xs]},Cs={title:`Media/Inscription`,description:`Gtk.Inscription — text laid out to a size in CHARACTERS and LINES rather than to a size in pixels. It is the widget for text whose extent should be the same everywhere, so it never measures its own content: min-chars/nat-chars and min-lines/nat-lines ARE its size request.`,controls:[{name:`text`,label:`Text`,type:J.TEXT,defaultValue:`Inscription`},{name:`minChars`,label:`Min chars`,type:J.RANGE,min:0,max:40,step:1,defaultValue:3},{name:`natChars`,label:`Nat chars`,type:J.RANGE,min:0,max:40,step:1,defaultValue:0},{name:`minLines`,label:`Min lines`,type:J.RANGE,min:0,max:6,step:1,defaultValue:1},{name:`natLines`,label:`Nat lines`,type:J.RANGE,min:0,max:6,step:1,defaultValue:0},{name:`wrapMode`,label:`Wrap mode`,type:J.SELECT,options:[{label:`Word`,value:`word`},{label:`Char`,value:`char`},{label:`Word-char (default)`,value:`word-char`}],defaultValue:`word-char`},{name:`textOverflow`,label:`Text overflow`,type:J.SELECT,options:[{label:`Clip (default)`,value:`clip`},{label:`Ellipsize start`,value:`ellipsize-start`},{label:`Ellipsize middle`,value:`ellipsize-middle`},{label:`Ellipsize end`,value:`ellipsize-end`}],defaultValue:`clip`},{name:`xalign`,label:`X align`,type:J.RANGE,min:0,max:1,step:.05,defaultValue:0},{name:`yalign`,label:`Y align`,type:J.RANGE,min:0,max:1,step:.05,defaultValue:.5}]};var ws=__exportAll$1({InscriptionStories:()=>Es,InscriptionStory:()=>Ts}),Ts=class InscriptionStory extends X{_inscription=null;_frame=null;static{o.registerClass({GTypeName:`AdwStorybookInscription`},InscriptionStory)}constructor(){super(X.fromMeta(InscriptionStory.getMetadata(),`Default`))}static getMetadata(){return{...Cs,component:n.Inscription.$gtype}}initialize(){this._inscription=new n.Inscription,this._frame=new n.Frame({child:this._inscription,halign:n.Align.CENTER}),this._apply(),this.addContent(this._frame)}updateArgs(e){this._apply()}_apply(){!this._inscription||!this._frame||(this._inscription.min_chars=this.args.minChars,this._inscription.nat_chars=this.args.natChars,this._inscription.min_lines=this.args.minLines,this._inscription.nat_lines=this.args.natLines,this._inscription.text=this.args.text,this._inscription.wrap_mode=this.args.wrapMode,this._inscription.text_overflow=this.args.textOverflow,this._inscription.xalign=this.args.xalign,this._inscription.yalign=this.args.yalign,this._frame.width_request=320,this._frame.height_request=160)}};o.type_ensure(Ts.$gtype);const Es={stories:[Ts]},Ds={title:`Media/Media Controls`,description:"Gtk.MediaControls — the transport bar: play, position, duration, volume. It owns no playback at all (its one property is an object, `media-stream`), and the bar is INSENSITIVE until a stream is attached. Note which label shows what: the position label shows the elapsed time and the one beside it shows what REMAINS, negatively.",controls:[{name:`sensitive`,label:`Sensitive`,type:J.BOOLEAN,defaultValue:!0}]};var Os=__exportAll$1({MediaControlsStories:()=>As,MediaControlsStory:()=>ks}),ks=class MediaControlsStory extends X{_controls=null;static{o.registerClass({GTypeName:`AdwStorybookMediaControls`},MediaControlsStory)}constructor(){super(X.fromMeta(MediaControlsStory.getMetadata(),`Default`))}static getMetadata(){return{...Ds,component:n.MediaControls.$gtype}}initialize(){this._controls=new n.MediaControls,this._controls.add_css_class(`osd`),this._controls.add_css_class(`bottom`),this._apply(),this.addContent(this._controls)}updateArgs(e){this._apply()}_apply(){this._controls&&(this._controls.sensitive=this.args.sensitive)}};o.type_ensure(ks.$gtype);const As={stories:[ks]},js={title:`Media/Picture`,description:"Gtk.Picture — an image fitted to the box it is given, not sized by itself. `content-fit` picks one of the four fit modes (contain, cover, fill, scale-down), `can-shrink` decides whether it may be smaller than its content, and `alternative-text` is what a screen reader hears.",controls:[{name:`contentFit`,label:`Content fit`,type:J.SELECT,options:[{label:`Contain`,value:`contain`},{label:`Cover`,value:`cover`},{label:`Fill`,value:`fill`},{label:`Scale down`,value:`scale-down`}],defaultValue:`contain`},{name:`canShrink`,label:`Can shrink`,type:J.BOOLEAN,defaultValue:!0},{name:`alternativeText`,label:`Alternative text`,type:J.TEXT,defaultValue:`A tangerine`},{name:`isolateContents`,label:`Isolate contents`,type:J.BOOLEAN,defaultValue:!0},{name:`keepAspectRatio`,label:`Keep aspect ratio (deprecated)`,type:J.BOOLEAN,defaultValue:!0},{name:`width`,label:`Width (px)`,type:J.RANGE,min:64,max:320,step:16,defaultValue:240}]};var Ms=__exportAll$1({PictureStories:()=>Ps,PictureStory:()=>Ns});function makePaintable(){let n=320*4,r=new Uint8Array(n*180);for(let e=0;e<180;e++){let t=e<180/2?48:144;for(let i=0;i<320;i++){let o=e*n+i*4;r[o]=t,r[o+1]=i<320/2?64:192,r[o+2]=160,r[o+3]=255}}return t.MemoryTexture.new(320,180,t.MemoryFormat.R8G8B8A8,e.Bytes.new(r),n)}var Ns=class PictureStory extends X{_picture=null;static{o.registerClass({GTypeName:`AdwStorybookPicture`},PictureStory)}constructor(){super(X.fromMeta(PictureStory.getMetadata(),`Default`))}static getMetadata(){return{...js,component:n.Picture.$gtype}}initialize(){this._picture=new n.Picture({paintable:makePaintable(),halign:n.Align.CENTER,valign:n.Align.CENTER}),this._apply(),this.addContent(this._picture)}updateArgs(e){this._apply()}_apply(){if(!this._picture)return;let e=this.args.width;this._picture.set_size_request(e,Math.round(e*2/3)),this.args.keepAspectRatio&&(this._picture.keep_aspect_ratio=!0),this._picture.content_fit=this.args.contentFit,this._picture.can_shrink=this.args.canShrink,this._picture.alternative_text=this.args.alternativeText,this._picture.isolate_contents=this.args.isolateContents}};o.type_ensure(Ns.$gtype);const Ps={stories:[Ns]},Fs={title:`Media/Video`,description:`Gtk.Video — a play surface with an overlay icon and a controls bar that hides itself three seconds after you stop moving the pointer. The overlay icon is a four-way choice — no stream, error, ended, or ready — and it is only VISIBLE while the video is stopped; there is no pause glyph over the frames.`,controls:[{name:`autoplay`,label:`Autoplay`,type:J.BOOLEAN,defaultValue:!1},{name:`loop`,label:`Loop`,type:J.BOOLEAN,defaultValue:!0},{name:`graphicsOffload`,label:`Graphics offload`,type:J.BOOLEAN,defaultValue:!1},{name:`width`,label:`Width (px)`,type:J.RANGE,min:160,max:480,step:40,defaultValue:320}]};var Is=__exportAll$1({VideoStories:()=>Rs,VideoStory:()=>Ls}),Ls=class VideoStory extends X{_video=null;static{o.registerClass({GTypeName:`AdwStorybookVideo`},VideoStory)}constructor(){super(X.fromMeta(VideoStory.getMetadata(),`Default`))}static getMetadata(){return{...Fs,component:n.Video.$gtype}}initialize(){this._video=new n.Video({halign:n.Align.CENTER,valign:n.Align.CENTER}),this._apply(),this.addContent(this._video)}updateArgs(e){this._apply()}_apply(){if(!this._video)return;let e=this.args.width;this._video.set_size_request(e,Math.round(e*9/16)),this._video.autoplay=this.args.autoplay,this._video.loop=this.args.loop,this._video.graphics_offload=this.args.graphicsOffload?n.GraphicsOffloadEnabled.ENABLED:n.GraphicsOffloadEnabled.DISABLED}};o.type_ensure(Ls.$gtype);const Rs={stories:[Ls]},zs={title:`Navigation/Bottom Sheet`,description:`Adw.BottomSheet — a sheet that slides up over the content. Toggle "Open" to reveal it.`,controls:[{name:`open`,label:`Open`,type:J.BOOLEAN,defaultValue:!0},{name:`modal`,label:`Modal`,type:J.BOOLEAN,defaultValue:!0},{name:`canClose`,label:`Can close`,type:J.BOOLEAN,defaultValue:!0}]};var Bs=__exportAll$1({BottomSheetStories:()=>Hs,BottomSheetStory:()=>Vs}),Vs=class BottomSheetStory extends X{_sheet=null;static{o.registerClass({GTypeName:`AdwStorybookBottomSheet`},BottomSheetStory)}constructor(){super(X.fromMeta(BottomSheetStory.getMetadata(),`Default`))}static getMetadata(){return{...zs,component:s.BottomSheet.$gtype}}buildContent(){let e=new n.Button({label:`Toggle sheet`,halign:n.Align.CENTER,valign:n.Align.CENTER,vexpand:!0});return e.add_css_class(`pill`),e.add_css_class(`suggested-action`),e.connect(`clicked`,()=>{this._sheet&&(this._sheet.open=!this._sheet.open)}),e}buildSheet(){let e=new n.Box({orientation:n.Orientation.VERTICAL,spacing:12,marginTop:18,marginBottom:24,marginStart:18,marginEnd:18});e.append(new n.Label({label:`Share track`,halign:n.Align.START,cssClasses:[`title-2`]}));let t=new s.PreferencesGroup;for(let[e,r]of[[`Copy link`,`edit-copy-symbolic`],[`Send to a friend`,`mail-send-symbolic`],[`Add to playlist`,`list-add-symbolic`]]){let i=new s.ActionRow({title:e});i.add_prefix(new n.Image({iconName:r})),i.activatable=!0,t.add(i)}return e.append(t),e}initialize(){this._sheet=new s.BottomSheet({content:this.buildContent(),sheet:this.buildSheet(),open:this.args.open,modal:this.args.modal,canClose:this.args.canClose,widthRequest:480,heightRequest:340}),this.addContent(this._sheet)}updateArgs(e){this._sheet&&(this._sheet.open=this.args.open,this._sheet.modal=this.args.modal,this._sheet.canClose=this.args.canClose)}};o.type_ensure(Vs.$gtype);const Hs={stories:[Vs]},Us={title:`Navigation/Navigation Split View`,description:`Adw.NavigationSplitView — a resizable sidebar beside a content pane. When collapsed it folds into a navigation stack.`,controls:[{name:`showContent`,label:`Show content`,type:J.BOOLEAN,defaultValue:!0},{name:`collapsed`,label:`Collapsed`,type:J.BOOLEAN,defaultValue:!1}]};var Ws=__exportAll$1({NavigationSplitViewStories:()=>Ks,NavigationSplitViewStory:()=>Gs}),Gs=class NavigationSplitViewStory extends X{_view=null;static{o.registerClass({GTypeName:`AdwStorybookNavigationSplitView`},NavigationSplitViewStory)}constructor(){super(X.fromMeta(NavigationSplitViewStory.getMetadata(),`Default`))}static getMetadata(){return{...Us,component:s.NavigationSplitView.$gtype}}buildSidebar(){let e=new s.PreferencesGroup;for(let[t,r,i]of[[`All Mail`,`128 messages`,`mail-unread-symbolic`],[`Starred`,`6 messages`,`starred-symbolic`],[`Drafts`,`2 messages`,`document-edit-symbolic`],[`Archive`,`512 messages`,`folder-symbolic`]]){let o=new s.ActionRow({title:t,subtitle:r});o.add_prefix(new n.Image({iconName:i})),o.activatable=!0,e.add(o)}let t=new s.ToolbarView;return t.add_top_bar(new s.HeaderBar),t.content=e,new s.NavigationPage({title:`Mailboxes`,child:t})}buildContent(){let e=new s.StatusPage({iconName:`mail-unread-symbolic`,title:`All Mail`,description:`Select a conversation from the list to read it here.`,vexpand:!0}),t=new s.ToolbarView;return t.add_top_bar(new s.HeaderBar),t.content=e,new s.NavigationPage({title:`All Mail`,child:t})}initialize(){this._view=new s.NavigationSplitView({sidebar:this.buildSidebar(),content:this.buildContent(),showContent:this.args.showContent,collapsed:this.args.collapsed,widthRequest:480,heightRequest:340}),this.addContent(this._view)}updateArgs(e){this._view&&(this._view.showContent=this.args.showContent,this._view.collapsed=this.args.collapsed)}};o.type_ensure(Gs.$gtype);const Ks={stories:[Gs]},qs={title:`Navigation/Navigation View`,description:`Adw.NavigationView — a navigation stack. The root page pushes a detail page, which gets an automatic back button.`,controls:[{name:`rootTitle`,label:`Root title`,type:J.TEXT,defaultValue:`Contacts`},{name:`detailTitle`,label:`Detail title`,type:J.TEXT,defaultValue:`Ada Lovelace`},{name:`animateTransitions`,label:`Animate transitions`,type:J.BOOLEAN,defaultValue:!0}]};var Js=__exportAll$1({NavigationViewStories:()=>Xs,NavigationViewStory:()=>Ys}),Ys=class NavigationViewStory extends X{_view=null;static{o.registerClass({GTypeName:`AdwStorybookNavigationView`},NavigationViewStory)}constructor(){super(X.fromMeta(NavigationViewStory.getMetadata(),`Default`))}static getMetadata(){return{...qs,component:s.NavigationView.$gtype}}buildPage(e,t){let n=new s.ToolbarView;return n.add_top_bar(new s.HeaderBar),n.content=t,new s.NavigationPage({title:e,child:n})}initialize(){this._view=new s.NavigationView({animateTransitions:this.args.animateTransitions,widthRequest:480,heightRequest:340});let e=this.buildPage(this.args.detailTitle,new s.StatusPage({iconName:`avatar-default-symbolic`,title:this.args.detailTitle,description:`Mathematician and writer, the first computer programmer.`,vexpand:!0})),t=new n.Button({label:`Open contact`,halign:n.Align.CENTER,valign:n.Align.CENTER,vexpand:!0});t.add_css_class(`pill`),t.add_css_class(`suggested-action`),t.connect(`clicked`,()=>{this._view?.push(e)});let r=this.buildPage(this.args.rootTitle,t);this._view.add(r),this._view.add(e),this.addContent(this._view)}updateArgs(e){this._view&&(this._view.animateTransitions=this.args.animateTransitions)}};o.type_ensure(Ys.$gtype);const Xs={stories:[Ys]},Zs={title:`Navigation/Overlay Split View`,description:`Adw.OverlaySplitView — a sidebar shown beside the content, or overlaid on top of it when collapsed.`,controls:[{name:`showSidebar`,label:`Show sidebar`,type:J.BOOLEAN,defaultValue:!0},{name:`collapsed`,label:`Collapsed`,type:J.BOOLEAN,defaultValue:!1}]};var Qs=__exportAll$1({OverlaySplitViewStories:()=>ec,OverlaySplitViewStory:()=>$s}),$s=class OverlaySplitViewStory extends X{_view=null;static{o.registerClass({GTypeName:`AdwStorybookOverlaySplitView`},OverlaySplitViewStory)}constructor(){super(X.fromMeta(OverlaySplitViewStory.getMetadata(),`Default`))}static getMetadata(){return{...Zs,component:s.OverlaySplitView.$gtype}}buildSidebar(){let e=new s.PreferencesGroup;for(let[t,r]of[[`Home`,`go-home-symbolic`],[`Discover`,`system-search-symbolic`],[`Library`,`folder-music-symbolic`],[`Settings`,`emblem-system-symbolic`]]){let i=new s.ActionRow({title:t});i.add_prefix(new n.Image({iconName:r})),i.activatable=!0,e.add(i)}let t=new s.ToolbarView;return t.add_top_bar(new s.HeaderBar({showTitle:!1})),t.content=e,t.add_css_class(`sidebar`),t}buildContent(){let e=new s.StatusPage({iconName:`folder-music-symbolic`,title:`Your Library`,description:`Toggle the sidebar to browse sections. Collapse it to overlay the content.`,vexpand:!0}),t=new s.ToolbarView;return t.add_top_bar(new s.HeaderBar),t.content=e,t}initialize(){this._view=new s.OverlaySplitView({sidebar:this.buildSidebar(),content:this.buildContent(),showSidebar:this.args.showSidebar,collapsed:this.args.collapsed,widthRequest:480,heightRequest:340}),this.addContent(this._view)}updateArgs(e){this._view&&(this._view.showSidebar=this.args.showSidebar,this._view.collapsed=this.args.collapsed)}};o.type_ensure($s.$gtype);const ec={stories:[$s]},tc=[{label:`File`,submenu:[{label:`New Window`,accel:`<Control>N`},{label:`New Tab`,accel:`<Control><Shift>N`},{label:`Open…`,accel:`<Control>O`}]},{label:`Edit`,submenu:[{label:`Undo`,accel:`<Control>Z`},{label:`Redo`,accel:`<Control>Y`}]},{label:`View`,submenu:[{label:`Zoom In`,accel:`<Control>plus`},{label:`Zoom Out`}]},{label:`Help`,submenu:[{label:`Keyboard Shortcuts`},{label:`About`}]}],nc={title:`Navigation/Popover Menu Bar`,description:`Gtk.PopoverMenuBar — a horizontal bar of items that pop up menus when clicked. Clicking an item OPENS its menu; hovering only SELECTS, and the item lights up (.active) exactly while its menu is up. Left and Right walk the bar and wrap.`,controls:[{name:`position`,label:`Menu position`,type:J.SELECT,options:[{label:`Below`,value:`bottom`},{label:`Above`,value:`top`}],defaultValue:`bottom`},{name:`showLast`,label:`Include Help`,type:J.BOOLEAN,defaultValue:!0}]};var rc=__exportAll$1({PopoverMenuBarStories:()=>ac,PopoverMenuBarStory:()=>ic}),ic=class PopoverMenuBarStory extends X{_bar=null;static{o.registerClass({GTypeName:`AdwStorybookPopoverMenuBar`},PopoverMenuBarStory)}constructor(){super(X.fromMeta(PopoverMenuBarStory.getMetadata(),`Default`))}static getMetadata(){return{...nc,component:n.PopoverMenuBar.$gtype}}initialize(){this._bar=n.PopoverMenuBar.new_from_model(this._buildMenu()),this._bar.halign=n.Align.START,this._apply(),this.addContent(this._bar)}updateArgs(e){this._apply()}_buildMenu(){let e=new r.Menu,t=this.args.showLast===!1?tc.slice(0,3):tc;for(let n of t){let t=new r.Menu;for(let e of n.submenu)t.append(e.label,`app.${e.label.toLowerCase().replace(/[^a-z0-9]+/g,`-`)}`);e.append_submenu(n.label,t)}return e}_apply(){if(!this._bar)return;let e=this.args.position===`top`;for(let t=this._bar.get_first_child();t!==null;t=t.get_next_sibling())t.get_first_child()?.set_position(e?n.PositionType.TOP:n.PositionType.BOTTOM)}};o.type_ensure(ic.$gtype);const ac={stories:[ic]},oc={title:`Navigation/Sidebar`,description:`Adw.Sidebar — a selectable list of Adw.SidebarItem grouped into sections. Selecting an item updates the content.`,controls:[{name:`mode`,label:`Mode`,type:J.SELECT,options:[{label:`Sidebar`,value:`sidebar`},{label:`Page`,value:`page`}],defaultValue:`sidebar`},{name:`selected`,label:`Selected index`,type:J.NUMBER,min:0,max:3,step:1,defaultValue:0}]};var sc=__exportAll$1({SidebarStories:()=>lc,SidebarStory:()=>cc}),cc=class SidebarStory extends X{_sidebar=null;_status=null;static{o.registerClass({GTypeName:`AdwStorybookSidebar`},SidebarStory)}constructor(){super(X.fromMeta(SidebarStory.getMetadata(),`Default`))}static getMetadata(){return{...oc,component:s.Sidebar.$gtype}}items=[{title:`Inbox`,subtitle:`3 unread`,icon:`mail-unread-symbolic`},{title:`Starred`,subtitle:`Favourites`,icon:`starred-symbolic`},{title:`Sent`,subtitle:`Outgoing mail`,icon:`mail-send-symbolic`},{title:`Archive`,subtitle:`Older mail`,icon:`folder-symbolic`}];modeFromArg(e){return e===`page`?s.SidebarMode.PAGE:s.SidebarMode.SIDEBAR}syncContent(){if(!this._sidebar||!this._status)return;let e=this.items[this._sidebar.selected]??this.items[0];this._status.title=e.title,this._status.iconName=e.icon,this._status.description=e.subtitle}initialize(){let e=new s.SidebarSection({title:`Mailboxes`});for(let t of this.items)e.append(new s.SidebarItem({title:t.title,subtitle:t.subtitle,iconName:t.icon}));this._sidebar=new s.Sidebar({mode:this.modeFromArg(this.args.mode),selected:this.args.selected,widthRequest:220}),this._sidebar.append(e),this._sidebar.connect(`notify::selected`,()=>this.syncContent()),this._status=new s.StatusPage({hexpand:!0,vexpand:!0});let t=new n.Box({orientation:n.Orientation.HORIZONTAL,widthRequest:480,heightRequest:340});t.append(this._sidebar),t.append(new n.Separator({orientation:n.Orientation.VERTICAL})),t.append(this._status),this.syncContent(),this.addContent(t)}updateArgs(e){this._sidebar&&(this._sidebar.mode=this.modeFromArg(this.args.mode),this._sidebar.selected=this.args.selected,this.syncContent())}};o.type_ensure(cc.$gtype);const lc={stories:[cc]},uc=[{title:`Sync`,kind:`switch`,active:!0},{title:`Export`,kind:`action`}],dc=[`Blue`,`Teal`,`Green`,`Orange`],fc={appearance:`Appearance`,account:`Account`,shortcuts:`Shortcuts`,actions:`Actions`},Q={bannerTitle:`You have unsaved changes`,bannerButton:`Save`,darkMode:`Dark mode`,darkModeSubtitle:`Use the dark Adwaita palette`,notifications:`Notifications`,notificationsSubtitle:`Show toasts for events`,accentColor:`Accent color`,name:`Name`,nameValue:`Ada Lovelace`,email:`Email`,emailValue:`ada@example.com`,devices:`Devices`,advanced:`Advanced`,advancedSubtitle:`More options`,save:`Save changes`,delete:`Delete account`},$={value:3,lower:1,upper:10,step:1},pc=[{title:`Copy`,accelerator:`<Control>C`},{title:`Select all`,accelerator:`<Shift><Control>a`},{title:`Switch tab`,accelerator:`<Alt>1...9`}],mc={title:`Overview/Widgets`,description:`Many widgets at once, the way an app composes them: a banner, preference groups of rows, an expander, buttons and shortcut labels. Use it to judge spacing, alignment and the theme as a whole rather than one widget in isolation.`,controls:[{name:`revealed`,label:`Show banner`,type:J.BOOLEAN,description:`Adw.Banner:revealed — animates in and out`,defaultValue:!0}]};var hc=__exportAll$1({OverviewWidgetsStories:()=>_c,OverviewWidgetsStory:()=>gc}),gc=class OverviewWidgetsStory extends X{_banner=null;static{o.registerClass({GTypeName:`AdwStorybookOverviewWidgets`},OverviewWidgetsStory)}constructor(){super(X.fromMeta(OverviewWidgetsStory.getMetadata(),`Default`))}static getMetadata(){return mc}initialize(){let e=new n.Box({orientation:n.Orientation.VERTICAL,hexpand:!0});this._banner=new s.Banner({title:Q.bannerTitle,button_label:Q.bannerButton,revealed:this.args.revealed}),e.append(this._banner);let t=new s.PreferencesPage({hexpand:!0}),r=new s.PreferencesGroup({title:fc.appearance});r.add(new s.SwitchRow({title:Q.darkMode,subtitle:Q.darkModeSubtitle,active:!1})),r.add(new s.SwitchRow({title:Q.notifications,subtitle:Q.notificationsSubtitle,active:!0})),r.add(new s.ComboRow({title:Q.accentColor,model:n.StringList.new([...dc]),selected:0})),t.add(r);let i=new s.PreferencesGroup({title:fc.account}),o=new s.EntryRow({title:Q.name});o.set_text(Q.nameValue),i.add(o);let c=new s.EntryRow({title:Q.email});c.set_text(Q.emailValue),i.add(c);let l=new s.SpinRow({title:Q.devices,adjustment:new n.Adjustment({value:$.value,lower:$.lower,upper:$.upper,step_increment:$.step,page_increment:$.step})});l.set_value($.value),i.add(l);let u=new s.ExpanderRow({title:Q.advanced,subtitle:Q.advancedSubtitle,expanded:!0});for(let e of uc)u.add_row(e.kind===`switch`?new s.SwitchRow({title:e.title,active:e.active??!1}):new s.ActionRow({title:e.title}));i.add(u),t.add(i);let d=new s.PreferencesGroup({title:fc.shortcuts});for(let e of pc){let t=new s.ActionRow({title:e.title});t.add_suffix(new s.ShortcutLabel({accelerator:e.accelerator,valign:n.Align.CENTER})),d.add(t)}t.add(d);let f=new s.PreferencesGroup({title:fc.actions}),p=new n.Box({orientation:n.Orientation.HORIZONTAL,spacing:12,homogeneous:!0,margin_top:6,margin_bottom:6}),m=new n.Button({label:Q.save});m.add_css_class(`suggested-action`),p.append(m);let h=new n.Button({label:Q.delete});h.add_css_class(`destructive-action`),p.append(h),f.add(p),t.add(f),e.append(t),this.addContent(e)}updateArgs(e){this._banner?.set_revealed(this.args.revealed)}};o.type_ensure(gc.$gtype);const _c={stories:[gc]},vc={title:`Presentation/Avatar`,description:`A circular avatar that derives initials (and a colour) from a name, or shows a symbolic icon.`,controls:[{name:`text`,label:`Name`,type:J.TEXT,defaultValue:`Ada Lovelace`},{name:`size`,label:`Size`,type:J.RANGE,min:24,max:160,step:8,defaultValue:96},{name:`showInitials`,label:`Show initials`,type:J.BOOLEAN,defaultValue:!0},{name:`iconName`,label:`Fallback icon`,type:J.SELECT,options:[{label:`Person`,value:`avatar-default-symbolic`},{label:`Contact`,value:`contact-new-symbolic`},{label:`Camera`,value:`camera-photo-symbolic`}],defaultValue:`avatar-default-symbolic`}]};var yc=__exportAll$1({AvatarStories:()=>xc,AvatarStory:()=>bc}),bc=class AvatarStory extends X{_avatar=null;static{o.registerClass({GTypeName:`AdwStorybookAvatar`},AvatarStory)}constructor(){super(X.fromMeta(AvatarStory.getMetadata(),`Default`))}static getMetadata(){return{...vc,component:s.Avatar.$gtype}}initialize(){this._avatar=new s.Avatar({size:this.args.size,text:this.args.text,showInitials:this.args.showInitials,iconName:this.args.iconName}),this.addContent(this._avatar)}updateArgs(e){this._avatar&&(this._avatar.size=this.args.size,this._avatar.text=this.args.text,this._avatar.showInitials=this.args.showInitials,this._avatar.iconName=this.args.iconName)}};o.type_ensure(bc.$gtype);const xc={stories:[bc]},Sc={title:`Presentation/Banner`,description:`Adw.Banner — a full-width strip carrying a status message and an optional action button.`,controls:[{name:`title`,label:`Title`,type:J.TEXT,defaultValue:`Metered connection — updates paused`},{name:`buttonLabel`,label:`Button label`,type:J.TEXT,defaultValue:`Resume`},{name:`revealed`,label:`Revealed`,type:J.BOOLEAN,defaultValue:!0},{name:`useMarkup`,label:`Use markup`,type:J.BOOLEAN,defaultValue:!1}]};var Cc=__exportAll$1({BannerStories:()=>Tc,BannerStory:()=>wc}),wc=class BannerStory extends X{_banner=null;static{o.registerClass({GTypeName:`AdwStorybookBanner`},BannerStory)}constructor(){super(X.fromMeta(BannerStory.getMetadata(),`Default`))}static getMetadata(){return{...Sc,component:s.Banner.$gtype}}initialize(){this._banner=new s.Banner({title:this.args.title,buttonLabel:this.args.buttonLabel,revealed:this.args.revealed,useMarkup:this.args.useMarkup});let e=new n.Box({orientation:n.Orientation.VERTICAL,widthRequest:460});e.append(this._banner),this.addContent(e)}updateArgs(e){this._banner&&(this._banner.title=this.args.title,this._banner.buttonLabel=this.args.buttonLabel,this._banner.revealed=this.args.revealed,this._banner.useMarkup=this.args.useMarkup)}};o.type_ensure(wc.$gtype);const Tc={stories:[wc]},Ec=[14,25],Dc={title:`Presentation/Calendar`,description:`Gtk.Calendar — a six-by-seven month grid with four navigation arrows. The arrows clamp the way g_date_time_add_months does, so paging from the 31st lands on the 28th, and a marked day is a day NUMBER of the shown month, so it survives a month that has no such day.`,controls:[{name:`showHeading`,label:`Heading`,type:J.BOOLEAN,defaultValue:!0},{name:`showDayNames`,label:`Day names`,type:J.BOOLEAN,defaultValue:!0},{name:`showWeekNumbers`,label:`Week numbers`,type:J.BOOLEAN,defaultValue:!0}]};var Oc=__exportAll$1({CalendarStories:()=>Ac,CalendarStory:()=>kc}),kc=class CalendarStory extends X{_calendar=null;_marked=!1;static{o.registerClass({GTypeName:`AdwStorybookCalendar`},CalendarStory)}constructor(){super(X.fromMeta(CalendarStory.getMetadata(),`Default`))}static getMetadata(){return{...Dc,component:n.Calendar.$gtype}}initialize(){this._calendar=new n.Calendar({hexpand:!1}),this._calendar.date=parseIso(`2026-10-02`),this._apply(),this.addContent(this._calendar)}updateArgs(e){this._apply()}_apply(){if(this._calendar){this._calendar.show_heading=this.args.showHeading,this._calendar.show_day_names=this.args.showDayNames,this._calendar.show_week_numbers=this.args.showWeekNumbers,this._marked&&this._calendar.clear_marks();for(let e of Ec)this._calendar.mark_day(e);this._marked=!0}}};function parseIso(t){let[n,r,i]=t.split(`-`).map(Number);return e.DateTime.new_local(n,r,i,0,0,0)}o.type_ensure(kc.$gtype);const Ac={stories:[kc]},jc=[{value:`de`,label:`German`},{value:`fr`,label:`French`},{value:`nl`,label:`Dutch`},{value:`pt`,label:`Portuguese`}],Mc={title:`Presentation/Column View`,description:`Gtk.ColumnView — a list view with a header and one cell per column. Clicking a sortable header sets the sort and inverts it on the next click; the view itself reorders nothing.`,controls:[{name:`showRowSeparators`,label:`Row separators`,type:J.BOOLEAN,defaultValue:!0},{name:`showColumnSeparators`,label:`Column separators`,type:J.BOOLEAN,defaultValue:!1},{name:`reorderable`,label:`Drag columns to reorder`,type:J.BOOLEAN,defaultValue:!1}]};var Nc=__exportAll$1({ColumnViewStories:()=>Fc,ColumnViewStory:()=>Pc}),Pc=class ColumnViewStory extends X{_view=null;static{o.registerClass({GTypeName:`AdwStorybookColumnView`},ColumnViewStory)}constructor(){super(X.fromMeta(ColumnViewStory.getMetadata(),`Default`))}static getMetadata(){return{...Mc,component:n.ColumnView.$gtype}}initialize(){let e=n.StringList.new(jc.map(e=>e.label));this._view=new n.ColumnView({model:n.SingleSelection.new(e),vexpand:!0}),this._view.append_column(this._column(`Name`,e=>e.label)),this._view.append_column(this._column(`Code`,e=>e.value));let t=new n.ScrolledWindow({child:this._view,heightRequest:200,hexpand:!0});this._apply(),this.addContent(t)}updateArgs(e){this._apply()}_apply(){this._view&&(this._view.showRowSeparators=this.args.showRowSeparators,this._view.showColumnSeparators=this.args.showColumnSeparators,this._view.reorderable=this.args.reorderable)}_column(e,t){let r=new n.SignalListItemFactory;return r.connect(`setup`,(e,t)=>{t.child=new n.Label({xalign:0})}),r.connect(`bind`,(e,n)=>{let r=n,i=r.child,o=r.item.string,s=jc.find(e=>e.label===o);i.label=s===void 0?o:t(s)}),new n.ColumnViewColumn({title:e,factory:r,expand:!0})}};o.type_ensure(Pc.$gtype);const Fc={stories:[Pc]},Ic=[`Red`,`Orange`,`Yellow`,`Green`,`Blue`,`Purple`,`Teal`,`Grey`],Lc={title:`Presentation/Flow Box`,description:`Gtk.FlowBox — the same selectable rows a list box holds, reflowed into as many per line as the width fits. HORIZONTAL is the default here, unlike every GtkOrientable list base; the arrows move by visual position, so the cross-line key lands in the same column of the next line.`,controls:[{name:`selectionMode`,label:`Selection`,type:J.SELECT,options:[{label:`Single`,value:`single`},{label:`Multiple`,value:`multiple`},{label:`Browse`,value:`browse`},{label:`None`,value:`none`}],defaultValue:`multiple`},{name:`orientation`,label:`Orientation`,type:J.SELECT,options:[{label:`Horizontal`,value:`horizontal`},{label:`Vertical`,value:`vertical`}],defaultValue:`horizontal`},{name:`maxChildrenPerLine`,label:`Max children per line`,type:J.NUMBER,defaultValue:3},{name:`homogeneous`,label:`Homogeneous`,type:J.BOOLEAN,defaultValue:!1},{name:`rowSpacing`,label:`Row spacing`,type:J.NUMBER,defaultValue:6}]};var Rc=__exportAll$1({FlowBoxStories:()=>Bc,FlowBoxStory:()=>zc}),zc=class FlowBoxStory extends X{_box=null;static{o.registerClass({GTypeName:`AdwStorybookFlowBox`},FlowBoxStory)}constructor(){super(X.fromMeta(FlowBoxStory.getMetadata(),`Default`))}static getMetadata(){return{...Lc,component:n.FlowBox.$gtype}}initialize(){this._box=new n.FlowBox({hexpand:!0,vexpand:!0});for(let e of Ic)this._box.append(new n.FlowBoxChild({child:new n.Label({label:e})}));this._apply(),this.addContent(this._box)}updateArgs(e){this._apply()}_apply(){this._box&&(this._box.selection_mode=this._selectionMode(),this._box.orientation=this.args.orientation===`vertical`?n.Orientation.VERTICAL:n.Orientation.HORIZONTAL,this._box.max_children_per_line=Math.max(1,Math.trunc(this.args.maxChildrenPerLine)),this._box.homogeneous=this.args.homogeneous,this._box.row_spacing=Math.max(0,Math.trunc(this.args.rowSpacing)))}_selectionMode(){switch(this.args.selectionMode){case`single`:return n.SelectionMode.SINGLE;case`browse`:return n.SelectionMode.BROWSE;case`none`:return n.SelectionMode.NONE;default:return n.SelectionMode.MULTIPLE}}};o.type_ensure(zc.$gtype);const Bc={stories:[zc]},Vc=[`Documents`,`Downloads`,`Music`,`Pictures`,`Videos`],Hc=[{label:`Single`,value:`single`},{label:`Multiple`,value:`multiple`},{label:`None`,value:`none`}],Uc={title:`Presentation/List View`,description:`Gtk.ListView — one row per item of a list model, each built by a factory. The model is the portable list (ADR 0046); which Gtk.SelectionModel would have wrapped it is the selection mode.`,controls:[{name:`selectionMode`,label:`Selection`,type:J.SELECT,options:Hc,defaultValue:`single`},{name:`showSeparators`,label:`Separators`,type:J.BOOLEAN,defaultValue:!0},{name:`singleClickActivate`,label:`Activate on single click`,type:J.BOOLEAN,defaultValue:!1}]},Wc=[`January`,`February`,`March`,`April`,`May`,`June`,`July`,`August`],Gc={title:`Presentation/Grid View`,description:`Gtk.GridView — the same model and factory as a list view, reflowed into as many equal columns as the width fits, between min-columns and max-columns.`,controls:[{name:`maxColumns`,label:`Max columns`,type:J.NUMBER,defaultValue:4},{name:`minColumns`,label:`Min columns`,type:J.NUMBER,defaultValue:1},{name:`selectionMode`,label:`Selection`,type:J.SELECT,options:Hc,defaultValue:`single`}]};var Kc=__exportAll$1({GridViewStories:()=>Jc,GridViewStory:()=>qc}),qc=class GridViewStory extends X{_view=null;_model=null;static{o.registerClass({GTypeName:`AdwStorybookGridView`},GridViewStory)}constructor(){super(X.fromMeta(GridViewStory.getMetadata(),`Default`))}static getMetadata(){return{...Gc,component:n.GridView.$gtype}}initialize(){this._model=n.StringList.new([...Wc]);let e=new n.SignalListItemFactory;e.connect(`setup`,(e,t)=>{t.child=new n.Label({xalign:.5})}),e.connect(`bind`,(e,t)=>{let n=t,r=n.child;r.label=n.item.string}),this._view=new n.GridView({factory:e,vexpand:!0});let t=new n.ScrolledWindow({child:this._view,heightRequest:200,hexpand:!0});this._apply(),this.addContent(t)}updateArgs(e){this._apply()}_apply(){!this._view||!this._model||(this._view.model=this.args.selectionMode===`multiple`?n.MultiSelection.new(this._model):this.args.selectionMode===`none`?n.NoSelection.new(this._model):n.SingleSelection.new(this._model),this._view.minColumns=Math.max(1,this.args.minColumns),this._view.maxColumns=Math.max(this._view.minColumns,this.args.maxColumns))}};o.type_ensure(qc.$gtype);const Jc={stories:[qc]},Yc=[`Documents`,`Downloads`,`Music`,`Pictures`,`Videos`],Xc={title:`Presentation/List Box`,description:`Gtk.ListBox — one row per child you append, with GTK’s four selection modes. Ctrl toggles and Shift extends from the anchor the last Shift-click left behind; activate-on-single-click defaults to TRUE here, unlike Gtk.ListView’s single-click-activate.`,controls:[{name:`selectionMode`,label:`Selection`,type:J.SELECT,options:[{label:`Single`,value:`single`},{label:`Multiple`,value:`multiple`},{label:`Browse`,value:`browse`},{label:`None`,value:`none`}],defaultValue:`single`},{name:`showSeparators`,label:`Separators`,type:J.BOOLEAN,defaultValue:!0},{name:`activateOnSingleClick`,label:`Activate on single click`,type:J.BOOLEAN,defaultValue:!0},{name:`tabBehavior`,label:`Tab behaviour`,type:J.SELECT,options:[{label:`All`,value:`all`},{label:`Item`,value:`item`},{label:`Cell`,value:`cell`}],defaultValue:`all`}]};var Zc=__exportAll$1({ListBoxStories:()=>$c,ListBoxStory:()=>Qc}),Qc=class ListBoxStory extends X{_box=null;static{o.registerClass({GTypeName:`AdwStorybookListBox`},ListBoxStory)}constructor(){super(X.fromMeta(ListBoxStory.getMetadata(),`Default`))}static getMetadata(){return{...Xc,component:n.ListBox.$gtype}}initialize(){this._box=new n.ListBox({hexpand:!0});for(let e of Yc)this._box.append(new n.ListBoxRow({child:new n.Label({label:e,xalign:0})}));this._apply();let e=new n.ScrolledWindow({child:this._box,heightRequest:200});this.addContent(e)}updateArgs(e){this._apply()}_apply(){this._box&&(this._box.selection_mode=this._selectionMode(),this._box.show_separators=this.args.showSeparators,this._box.activate_on_single_click=this.args.activateOnSingleClick,this._box.tab_behavior=this.args.tabBehavior)}_selectionMode(){switch(this.args.selectionMode){case`multiple`:return n.SelectionMode.MULTIPLE;case`browse`:return n.SelectionMode.BROWSE;case`none`:return n.SelectionMode.NONE;default:return n.SelectionMode.SINGLE}}};o.type_ensure(Qc.$gtype);const $c={stories:[Qc]};var el=__exportAll$1({ListViewStories:()=>nl,ListViewStory:()=>tl}),tl=class ListViewStory extends X{_view=null;_model=null;static{o.registerClass({GTypeName:`AdwStorybookListView`},ListViewStory)}constructor(){super(X.fromMeta(ListViewStory.getMetadata(),`Default`))}static getMetadata(){return{...Uc,component:n.ListView.$gtype}}initialize(){this._model=n.StringList.new([...Vc]);let e=new n.SignalListItemFactory;e.connect(`setup`,(e,t)=>{t.child=new n.Label({xalign:0})}),e.connect(`bind`,(e,t)=>{let n=t,r=n.child;r.label=n.item.string}),this._view=new n.ListView({factory:e,vexpand:!0});let t=new n.ScrolledWindow({child:this._view,heightRequest:200,hexpand:!0});this._apply(),this.addContent(t)}updateArgs(e){this._apply()}_apply(){!this._view||!this._model||(this._view.model=this._selectionModel(this._model),this._view.showSeparators=this.args.showSeparators,this._view.singleClickActivate=this.args.singleClickActivate)}_selectionModel(e){switch(this.args.selectionMode){case`multiple`:return n.MultiSelection.new(e);case`none`:return n.NoSelection.new(e);default:return n.SingleSelection.new(e)}}};o.type_ensure(tl.$gtype);const nl={stories:[tl]},rl=[{label:`Single`,accelerator:`<Control>C`},{label:`Modifier order`,accelerator:`<Shift><Control>a`},{label:`Alternatives`,accelerator:`<Shift>A Home`},{label:`Range`,accelerator:`<Alt>1...9`},{label:`In sequence`,accelerator:`<Control>C+<Control>X`},{label:`Together`,accelerator:`Control_L&Control_R`},{label:`Nested`,accelerator:`<Alt>1...9 <Alt>0`},{label:`Unset`,accelerator:``}],il={title:`Presentation/Shortcut Label`,description:`Adw.ShortcutLabel — an accelerator drawn as keycaps. The four grammar levels: alternatives (space), a range (...), pressed in sequence (+), and pressed together (&).`,controls:[{name:`accelerator`,label:`Accelerator`,type:J.SELECT,options:[{label:`Ctrl+C`,value:`<Control>C`},{label:`Modifier order (Shift+Ctrl+A)`,value:`<Shift><Control>a`},{label:`Alternatives (Shift+A / Home)`,value:`<Shift>A Home`},{label:`Range (Alt+1…9)`,value:`<Alt>1...9`},{label:`In sequence (Ctrl+C → Ctrl+X)`,value:`<Control>C+<Control>X`},{label:`Together (Ctrl L + Ctrl R)`,value:`Control_L&Control_R`},{label:`Nested (Alt+1…9 / Alt+0)`,value:`<Alt>1...9 <Alt>0`},{label:`Glyph key (Ctrl+Space)`,value:`<Control>space`},{label:`Arrow key (Left)`,value:`Left`},{label:`Unset — shows the placeholder`,value:``}],defaultValue:`<Control>C`},{name:`disabledText`,label:`Placeholder`,type:J.TEXT,defaultValue:`Disabled`}]},al={title:`Presentation/Shortcut Label (All Levels)`,description:`Every Adw.ShortcutLabel grammar level at once: alternatives (space), a range (...), pressed in sequence (+), pressed together (&) — plus GTK's fixed keycap order and the disabled placeholder.`,controls:[{name:`disabledText`,label:`Placeholder`,type:J.TEXT,defaultValue:`Disabled`}]};var ol=__exportAll$1({ShortcutLabelLevelsStory:()=>cl,ShortcutLabelStories:()=>ll,ShortcutLabelStory:()=>sl}),sl=class ShortcutLabelStory extends X{_widget=null;static{o.registerClass({GTypeName:`AdwStorybookShortcutLabel`},ShortcutLabelStory)}constructor(){super(X.fromMeta(ShortcutLabelStory.getMetadata(),`Default`))}static getMetadata(){return{...il,component:s.ShortcutLabel.$gtype}}initialize(){this._widget=new s.ShortcutLabel({accelerator:this.args.accelerator,disabledText:this.args.disabledText,halign:n.Align.CENTER,valign:n.Align.CENTER}),this.addContent(this._widget)}updateArgs(e){this._widget&&(this._widget.disabledText=this.args.disabledText,this._widget.accelerator=this.args.accelerator)}};o.type_ensure(sl.$gtype);var cl=class ShortcutLabelLevelsStory extends X{_widgets=[];static{o.registerClass({GTypeName:`AdwStorybookShortcutLabelLevels`},ShortcutLabelLevelsStory)}constructor(){super(X.fromMeta(ShortcutLabelLevelsStory.getMetadata(),`Default`))}static getMetadata(){return{...al,component:s.ShortcutLabel.$gtype}}initialize(){let e=new n.Grid({row_spacing:12,column_spacing:24});for(let[t,r]of rl.entries()){let i=new n.Label({label:r.label,halign:n.Align.START});i.add_css_class(`dimmed`),e.attach(i,0,t,1,1);let o=new s.ShortcutLabel({accelerator:r.accelerator,disabledText:this.args.disabledText,halign:n.Align.END,hexpand:!0});e.attach(o,1,t,1,1),this._widgets.push(o)}this.addContent(e)}updateArgs(e){for(let e of this._widgets)e.disabledText=this.args.disabledText}};o.type_ensure(cl.$gtype);const ll={stories:[sl,cl]},ul={title:`Presentation/Spinner`,description:`Adw.Spinner — a lightweight loading indicator that spins continuously while visible.`,controls:[{name:`size`,label:`Size`,type:J.RANGE,min:16,max:64,step:4,defaultValue:48}]};var dl=__exportAll$1({SpinnerStories:()=>pl,SpinnerStory:()=>fl}),fl=class SpinnerStory extends X{_spinner=null;static{o.registerClass({GTypeName:`AdwStorybookSpinner`},SpinnerStory)}constructor(){super(X.fromMeta(SpinnerStory.getMetadata(),`Default`))}static getMetadata(){return{...ul,component:s.Spinner.$gtype}}initialize(){let e=this.args.size;this._spinner=new s.Spinner({widthRequest:e,heightRequest:e,halign:n.Align.CENTER,valign:n.Align.CENTER}),this.addContent(this._spinner)}updateArgs(e){if(!this._spinner)return;let t=this.args.size;this._spinner.widthRequest=t,this._spinner.heightRequest=t}};o.type_ensure(fl.$gtype);const pl={stories:[fl]},ml={title:`Presentation/Status Page`,description:`Adw.StatusPage — a full-page empty state with an icon, title, description and optional action.`,controls:[{name:`iconName`,label:`Icon`,type:J.SELECT,options:[{label:`Folder`,value:`folder-symbolic`},{label:`Mail`,value:`mail-unread-symbolic`},{label:`Search`,value:`system-search-symbolic`},{label:`Star`,value:`starred-symbolic`}],defaultValue:`folder-symbolic`},{name:`title`,label:`Title`,type:J.TEXT,defaultValue:`No Documents`},{name:`description`,label:`Description`,type:J.TEXT,defaultValue:`Documents you create or open will appear here.`}]};var hl=__exportAll$1({StatusPageStories:()=>_l,StatusPageStory:()=>gl}),gl=class StatusPageStory extends X{_statusPage=null;static{o.registerClass({GTypeName:`AdwStorybookStatusPage`},StatusPageStory)}constructor(){super(X.fromMeta(StatusPageStory.getMetadata(),`Default`))}static getMetadata(){return{...ml,component:s.StatusPage.$gtype}}initialize(){let e=new n.Button({label:`New Document`,halign:n.Align.CENTER,cssClasses:[`pill`,`suggested-action`]});this._statusPage=new s.StatusPage({iconName:this.args.iconName,title:this.args.title,description:this.args.description,child:e,widthRequest:460,heightRequest:320}),this.addContent(this._statusPage)}updateArgs(e){this._statusPage&&(this._statusPage.iconName=this.args.iconName,this._statusPage.title=this.args.title,this._statusPage.description=this.args.description)}};o.type_ensure(gl.$gtype);const _l={stories:[gl]},vl={Pictures:[`Holiday`,`Screenshots`],Music:[`Albums`],Notes:[]},yl={title:`Presentation/Tree Expander`,description:`Gtk.TreeExpander — the indent and the disclosure arrow a tree row wears in front of its contents. A leaf takes one indent in place of the arrow, so its text lines up with its siblings.`,controls:[{name:`expanded`,label:`Expanded`,type:J.BOOLEAN,defaultValue:!0},{name:`hideExpander`,label:`Hide the arrow`,type:J.BOOLEAN,defaultValue:!1},{name:`indentForIcon`,label:`Indent leaves by an arrow`,type:J.BOOLEAN,defaultValue:!0}]};var bl=__exportAll$1({TreeExpanderStories:()=>Sl,TreeExpanderStory:()=>xl}),xl=class TreeExpanderStory extends X{_view=null;_tree=null;_expanders=new Set;static{o.registerClass({GTypeName:`AdwStorybookTreeExpander`},TreeExpanderStory)}constructor(){super(X.fromMeta(TreeExpanderStory.getMetadata(),`Default`))}static getMetadata(){return{...yl,component:n.TreeExpander.$gtype}}initialize(){let e=n.StringList.new(Object.keys(vl));this._tree=n.TreeListModel.new(e,!1,!1,e=>{let t=vl[e.string]??[];return t.length===0?null:n.StringList.new([...t])});let t=new n.SignalListItemFactory;t.connect(`setup`,(e,t)=>{let r=t;r.focusable=!1;let i=new n.TreeExpander;i.child=new n.Label({xalign:0}),r.child=i,this._expanders.add(i)}),t.connect(`teardown`,(e,t)=>{let n=t.child;n!==null&&this._expanders.delete(n)}),t.connect(`bind`,(e,t)=>{let n=t,r=n.child,i=n.item;r.listRow=i,r.child.label=i.item.string,this._applyTo(r)}),this._view=new n.ListView({model:n.SingleSelection.new(this._tree),factory:t,vexpand:!0});let r=new n.ScrolledWindow({child:this._view,heightRequest:200,hexpand:!0});this.addContent(r),this._apply()}updateArgs(e){this._apply()}_apply(){if(this._tree!==null){for(let e=0;e<this._tree.get_n_items();e++){let t=this._tree.get_row(e);t!==null&&t.depth===0&&(t.expanded=this.args.expanded)}for(let e of this._expanders)this._applyTo(e)}}_applyTo(e){e.hideExpander=this.args.hideExpander,e.indentForIcon=this.args.indentForIcon}};o.type_ensure(xl.$gtype);const Sl={stories:[xl]},Cl={title:`Presentation/WindowHandle`,description:`Gtk.WindowHandle — the titlebar strip. Dragging it moves the window; a double click, a middle click and a right click raise the window actions the compositor (or, here, the titlebar settings) names.`,controls:[{name:`action`,label:`Double-click action`,type:J.SELECT,options:[{label:`Toggle maximize`,value:`toggle-maximize`},{label:`Minimize`,value:`minimize`},{label:`Menu`,value:`menu`},{label:`None`,value:`none`}],defaultValue:`toggle-maximize`}]};var wl=__exportAll$1({WindowHandleStories:()=>El,WindowHandleStory:()=>Tl}),Tl=class WindowHandleStory extends X{_handle=null;static{o.registerClass({GTypeName:`AdwStorybookWindowHandle`},WindowHandleStory)}constructor(){super(X.fromMeta(WindowHandleStory.getMetadata(),`Default`))}static getMetadata(){return{...Cl,component:n.WindowHandle.$gtype}}initialize(){let e=new s.HeaderBar;e.set_title_widget(new s.WindowTitle({title:`Notes`})),this._handle=new n.WindowHandle({child:e,halign:n.Align.CENTER}),this._apply(),this.addContent(this._handle)}updateArgs(e){this._apply()}_apply(){this.args.action}};o.type_ensure(Tl.$gtype);const El={stories:[Tl]},Dl={title:`Presentation/Window Title`,description:`Adw.WindowTitle — a compact title/subtitle widget intended for a window or header bar.`,controls:[{name:`title`,label:`Title`,type:J.TEXT,defaultValue:`Inbox`},{name:`subtitle`,label:`Subtitle`,type:J.TEXT,defaultValue:`3 unread messages`}]};var Ol=__exportAll$1({WindowTitleStories:()=>Al,WindowTitleStory:()=>kl}),kl=class WindowTitleStory extends X{_windowTitle=null;static{o.registerClass({GTypeName:`AdwStorybookWindowTitle`},WindowTitleStory)}constructor(){super(X.fromMeta(WindowTitleStory.getMetadata(),`Default`))}static getMetadata(){return{...Dl,component:s.WindowTitle.$gtype}}initialize(){this._windowTitle=new s.WindowTitle({title:this.args.title,subtitle:this.args.subtitle}),this.addContent(this._windowTitle)}updateArgs(e){this._windowTitle&&(this._windowTitle.title=this.args.title,this._windowTitle.subtitle=this.args.subtitle)}};o.type_ensure(kl.$gtype);const Al={stories:[kl]},jl={title:`Boxed Lists/Action Row`,description:`Adw.ActionRow — a preferences row with a title/subtitle, a prefix icon and a suffix button, shown inside a boxed list.`,controls:[{name:`title`,label:`Title`,type:J.TEXT,defaultValue:`Wi-Fi`},{name:`subtitle`,label:`Subtitle`,type:J.TEXT,defaultValue:`Connected to Highgarden 5GHz`},{name:`iconName`,label:`Prefix icon`,type:J.SELECT,options:[{label:`Network`,value:`network-wireless-symbolic`},{label:`Folder`,value:`folder-symbolic`},{label:`Starred`,value:`starred-symbolic`}],defaultValue:`network-wireless-symbolic`},{name:`activatable`,label:`Activatable`,type:J.BOOLEAN,defaultValue:!0}]};var Ml=__exportAll$1({ActionRowStories:()=>Pl,ActionRowStory:()=>Nl}),Nl=class ActionRowStory extends X{_row=null;_icon=null;_button=null;static{o.registerClass({GTypeName:`AdwStorybookActionRow`},ActionRowStory)}constructor(){super(X.fromMeta(ActionRowStory.getMetadata(),`Default`))}static getMetadata(){return{...jl,component:s.ActionRow.$gtype}}initialize(){this._row=new s.ActionRow({title:this.args.title,subtitle:this.args.subtitle}),this._icon=new n.Image({iconName:this.args.iconName}),this._row.add_prefix(this._icon),this._button=new n.Button({iconName:`go-next-symbolic`,valign:n.Align.CENTER}),this._button.add_css_class(`flat`),this._row.add_suffix(this._button),this._row.activatableWidget=this._button,this._row.activatable=this.args.activatable;let e=new s.PreferencesGroup;e.add(this._row);let t=new s.Clamp({maximumSize:400,child:e});this.addContent(t)}updateArgs(e){!this._row||!this._icon||(this._row.title=this.args.title,this._row.subtitle=this.args.subtitle,this._icon.iconName=this.args.iconName,this._row.activatable=this.args.activatable)}};o.type_ensure(Nl.$gtype);const Pl={stories:[Nl]},Fl={title:`Boxed Lists/Button Row`,description:`Adw.ButtonRow — a full-width row that acts as a button, with an optional icon and style class.`,controls:[{name:`title`,label:`Title`,type:J.TEXT,defaultValue:`Add account`},{name:`startIconName`,label:`Start icon`,type:J.SELECT,options:[{label:`Add`,value:`list-add-symbolic`},{label:`Trash`,value:`user-trash-symbolic`},{label:`None`,value:``}],defaultValue:`list-add-symbolic`},{name:`style`,label:`Style`,type:J.SELECT,options:[{label:`None`,value:`none`},{label:`Suggested`,value:`suggested-action`},{label:`Destructive`,value:`destructive-action`}],defaultValue:`suggested-action`}]};var Il=__exportAll$1({ButtonRowStories:()=>zl,ButtonRowStory:()=>Rl});const Ll=[`suggested-action`,`destructive-action`];var Rl=class ButtonRowStory extends X{_row=null;static{o.registerClass({GTypeName:`AdwStorybookButtonRow`},ButtonRowStory)}constructor(){super(X.fromMeta(ButtonRowStory.getMetadata(),`Default`))}static getMetadata(){return{...Fl,component:s.ButtonRow.$gtype}}initialize(){this._row=new s.ButtonRow({title:this.args.title,startIconName:this.args.startIconName}),this._applyStyle(this.args.style);let e=new s.PreferencesGroup;e.add(this._row);let t=new s.Clamp({maximumSize:400,child:e});this.addContent(t)}_applyStyle(e){if(this._row){for(let e of Ll)this._row.remove_css_class(e);e!==`none`&&this._row.add_css_class(e)}}updateArgs(e){this._row&&(this._row.title=this.args.title,this._row.startIconName=this.args.startIconName,this._applyStyle(this.args.style))}};o.type_ensure(Rl.$gtype);const zl={stories:[Rl]},Bl=[`Blue`,`Teal`,`Green`,`Orange`,`Purple`],Vl={title:`Boxed Lists/Combo Row`,description:`Adw.ComboRow — a preferences row with an inline drop-down backed by a Gtk.StringList.`,controls:[{name:`title`,label:`Title`,type:J.TEXT,defaultValue:`Accent colour`},{name:`subtitle`,label:`Subtitle`,type:J.TEXT,defaultValue:`Used to highlight selected items`},{name:`selected`,label:`Selected`,type:J.NUMBER,min:0,max:4,step:1,defaultValue:1}]};var Hl=__exportAll$1({ComboRowStories:()=>Wl,ComboRowStory:()=>Ul}),Ul=class ComboRowStory extends X{_row=null;static{o.registerClass({GTypeName:`AdwStorybookComboRow`},ComboRowStory)}constructor(){super(X.fromMeta(ComboRowStory.getMetadata(),`Default`))}static getMetadata(){return{...Vl,component:s.ComboRow.$gtype}}initialize(){this._row=new s.ComboRow({title:this.args.title,subtitle:this.args.subtitle,model:new n.StringList({strings:[...Bl]}),selected:this.args.selected});let e=new s.PreferencesGroup;e.add(this._row);let t=new s.Clamp({maximumSize:400,child:e});this.addContent(t)}updateArgs(e){this._row&&(this._row.title=this.args.title,this._row.subtitle=this.args.subtitle,this._row.selected=this.args.selected)}};o.type_ensure(Ul.$gtype);const Wl={stories:[Ul]},Gl={title:`Boxed Lists/Entry Row`,description:`Adw.EntryRow — a preferences row whose title doubles as placeholder text for an inline entry.`,controls:[{name:`title`,label:`Title`,type:J.TEXT,defaultValue:`Display name`},{name:`text`,label:`Text`,type:J.TEXT,defaultValue:`Ada Lovelace`},{name:`showApplyButton`,label:`Show apply button`,type:J.BOOLEAN,defaultValue:!0}]};var Kl=__exportAll$1({EntryRowStories:()=>Jl,EntryRowStory:()=>ql}),ql=class EntryRowStory extends X{_row=null;static{o.registerClass({GTypeName:`AdwStorybookEntryRow`},EntryRowStory)}constructor(){super(X.fromMeta(EntryRowStory.getMetadata(),`Default`))}static getMetadata(){return{...Gl,component:s.EntryRow.$gtype}}initialize(){this._row=new s.EntryRow({title:this.args.title,text:this.args.text,showApplyButton:this.args.showApplyButton});let e=new s.PreferencesGroup;e.add(this._row);let t=new s.Clamp({maximumSize:400,child:e});this.addContent(t)}updateArgs(e){this._row&&(this._row.title=this.args.title,this._row.text=this.args.text,this._row.showApplyButton=this.args.showApplyButton)}};o.type_ensure(ql.$gtype);const Jl={stories:[ql]},Yl={title:`Boxed Lists/Expander Row`,description:`Adw.ExpanderRow — a preferences row that discloses nested rows and can carry an enable switch.`,controls:[{name:`title`,label:`Title`,type:J.TEXT,defaultValue:`Proxy settings`},{name:`subtitle`,label:`Subtitle`,type:J.TEXT,defaultValue:`Route traffic through a custom proxy`},{name:`expanded`,label:`Expanded`,type:J.BOOLEAN,defaultValue:!0},{name:`showEnableSwitch`,label:`Show enable switch`,type:J.BOOLEAN,defaultValue:!1}]};var Xl=__exportAll$1({ExpanderRowStories:()=>Ql,ExpanderRowStory:()=>Zl}),Zl=class ExpanderRowStory extends X{_row=null;static{o.registerClass({GTypeName:`AdwStorybookExpanderRow`},ExpanderRowStory)}constructor(){super(X.fromMeta(ExpanderRowStory.getMetadata(),`Default`))}static getMetadata(){return{...Yl,component:s.ExpanderRow.$gtype}}initialize(){this._row=new s.ExpanderRow({title:this.args.title,subtitle:this.args.subtitle,expanded:this.args.expanded,showEnableSwitch:this.args.showEnableSwitch}),this._row.add_row(new s.EntryRow({title:`Host`,text:`proxy.example.com`})),this._row.add_row(new s.SwitchRow({title:`Use authentication`,active:!1}));let e=new s.PreferencesGroup;e.add(this._row);let t=new s.Clamp({maximumSize:400,child:e});this.addContent(t)}updateArgs(e){this._row&&(this._row.title=this.args.title,this._row.subtitle=this.args.subtitle,this._row.expanded=this.args.expanded,this._row.showEnableSwitch=this.args.showEnableSwitch)}};o.type_ensure(Zl.$gtype);const Ql={stories:[Zl]},$l={title:`Boxed Lists/Password Entry Row`,description:`Adw.PasswordEntryRow — an entry row that masks its contents and shows a peek toggle.`,controls:[{name:`title`,label:`Title`,type:J.TEXT,defaultValue:`Password`},{name:`text`,label:`Text`,type:J.TEXT,defaultValue:`correct-horse-battery`}]};var eu=__exportAll$1({PasswordEntryRowStories:()=>nu,PasswordEntryRowStory:()=>tu}),tu=class PasswordEntryRowStory extends X{_row=null;static{o.registerClass({GTypeName:`AdwStorybookPasswordEntryRow`},PasswordEntryRowStory)}constructor(){super(X.fromMeta(PasswordEntryRowStory.getMetadata(),`Default`))}static getMetadata(){return{...$l,component:s.PasswordEntryRow.$gtype}}initialize(){this._row=new s.PasswordEntryRow({title:this.args.title,text:this.args.text});let e=new s.PreferencesGroup;e.add(this._row);let t=new s.Clamp({maximumSize:400,child:e});this.addContent(t)}updateArgs(e){this._row&&(this._row.title=this.args.title,this._row.text=this.args.text)}};o.type_ensure(tu.$gtype);const nu={stories:[tu]},ru={title:`Boxed Lists/Preferences Group`,description:`Adw.PreferencesGroup — the boxed-list container that gathers a title, description, header-suffix widget and rows.`,controls:[{name:`title`,label:`Title`,type:J.TEXT,defaultValue:`Account`},{name:`description`,label:`Description`,type:J.TEXT,defaultValue:`Manage how this device signs in and syncs.`}]};var iu=__exportAll$1({PreferencesGroupStories:()=>ou,PreferencesGroupStory:()=>au}),au=class PreferencesGroupStory extends X{_prefsGroup=null;static{o.registerClass({GTypeName:`AdwStorybookPreferencesGroup`},PreferencesGroupStory)}constructor(){super(X.fromMeta(PreferencesGroupStory.getMetadata(),`Default`))}static getMetadata(){return{...ru,component:s.PreferencesGroup.$gtype}}initialize(){let e=new n.Button({label:`Sign out`,valign:n.Align.CENTER});e.add_css_class(`flat`),this._prefsGroup=new s.PreferencesGroup({title:this.args.title,description:this.args.description,headerSuffix:e});let t=new s.EntryRow({title:`Display name`,text:`Grace Hopper`});this._prefsGroup.add(t);let r=new s.SwitchRow({title:`Sync over Wi-Fi only`,subtitle:`Avoid using mobile data for backups`,active:!0});this._prefsGroup.add(r);let i=new s.ComboRow({title:`Region`,model:new n.StringList({strings:[`Europe`,`Americas`,`Asia`,`Oceania`]}),selected:0});this._prefsGroup.add(i);let o=new s.Clamp({maximumSize:400,child:this._prefsGroup});this.addContent(o)}updateArgs(e){this._prefsGroup&&(this._prefsGroup.title=this.args.title,this._prefsGroup.description=this.args.description)}};o.type_ensure(au.$gtype);const ou={stories:[au]},su={title:`Boxed Lists/Preferences Row`,description:`Adw.PreferencesRow — the base of every boxed-list row: a list row with a title that the preferences dialog searches. The title can carry Pango markup and be made selectable.`,controls:[{name:`title`,label:`Title`,type:J.TEXT,defaultValue:`A <b>plain</b> preferences row`},{name:`useMarkup`,label:`Use markup`,type:J.BOOLEAN,defaultValue:!0},{name:`titleSelectable`,label:`Title selectable`,type:J.BOOLEAN,defaultValue:!1}]};var cu=__exportAll$1({PreferencesRowStories:()=>uu,PreferencesRowStory:()=>lu}),lu=class PreferencesRowStory extends X{_row=null;static{o.registerClass({GTypeName:`AdwStorybookPreferencesRow`},PreferencesRowStory)}constructor(){super(X.fromMeta(PreferencesRowStory.getMetadata(),`Default`))}static getMetadata(){return{...su,component:s.PreferencesRow.$gtype}}initialize(){this._row=new s.PreferencesRow,this._apply();let e=new s.PreferencesGroup;e.add(this._row);let t=new s.Clamp({maximumSize:400,child:e});this.addContent(t)}updateArgs(e){this._apply()}_apply(){this._row&&(this._row.title=this.args.title,this._row.useMarkup=this.args.useMarkup,this._row.titleSelectable=this.args.titleSelectable)}};o.type_ensure(lu.$gtype);const uu={stories:[lu]},du={title:`Boxed Lists/Spin Row`,description:`Adw.SpinRow — a preferences row with an inline spin button over a numeric adjustment.`,controls:[{name:`title`,label:`Title`,type:J.TEXT,defaultValue:`Font size`},{name:`value`,label:`Value`,type:J.NUMBER,min:0,max:100,step:1,defaultValue:16},{name:`digits`,label:`Digits`,type:J.NUMBER,min:0,max:4,step:1,defaultValue:0}]};var fu=__exportAll$1({SpinRowStories:()=>mu,SpinRowStory:()=>pu}),pu=class SpinRowStory extends X{_row=null;static{o.registerClass({GTypeName:`AdwStorybookSpinRow`},SpinRowStory)}constructor(){super(X.fromMeta(SpinRowStory.getMetadata(),`Default`))}static getMetadata(){return{...du,component:s.SpinRow.$gtype}}initialize(){this._row=new s.SpinRow({title:this.args.title,adjustment:new n.Adjustment({lower:0,upper:100,value:this.args.value,stepIncrement:1,pageIncrement:10}),digits:this.args.digits});let e=new s.PreferencesGroup;e.add(this._row);let t=new s.Clamp({maximumSize:400,child:e});this.addContent(t)}updateArgs(e){this._row&&(this._row.title=this.args.title,this._row.value=this.args.value,this._row.digits=this.args.digits)}};o.type_ensure(pu.$gtype);const mu={stories:[pu]},hu={title:`Boxed Lists/Switch Row`,description:`Adw.SwitchRow — a preferences row with a trailing switch, shown inside a boxed list.`,controls:[{name:`title`,label:`Title`,type:J.TEXT,defaultValue:`Automatic updates`},{name:`subtitle`,label:`Subtitle`,type:J.TEXT,defaultValue:`Download and install updates without asking`},{name:`active`,label:`Active`,type:J.BOOLEAN,defaultValue:!0}]};var gu=__exportAll$1({SwitchRowStories:()=>vu,SwitchRowStory:()=>_u}),_u=class SwitchRowStory extends X{_row=null;static{o.registerClass({GTypeName:`AdwStorybookSwitchRow`},SwitchRowStory)}constructor(){super(X.fromMeta(SwitchRowStory.getMetadata(),`Default`))}static getMetadata(){return{...hu,component:s.SwitchRow.$gtype}}initialize(){this._row=new s.SwitchRow({title:this.args.title,subtitle:this.args.subtitle,active:this.args.active});let e=new s.PreferencesGroup;e.add(this._row);let t=new s.Clamp({maximumSize:400,child:e});this.addContent(t)}updateArgs(e){this._row&&(this._row.title=this.args.title,this._row.subtitle=this.args.subtitle,this._row.active=this.args.active)}};o.type_ensure(_u.$gtype);const vu={stories:[_u]},yu={title:`Text/Editable Label`,description:`Gtk.EditableLabel — a label you click and edit in place. Enter starts editing, Enter commits, Escape discards, and editable=false leaves it a label; the draft lives in the entry, not in the label.`,controls:[{name:`text`,label:`Text`,type:J.TEXT,defaultValue:`Ada Lovelace`},{name:`editable`,label:`Editable`,type:J.BOOLEAN,defaultValue:!0},{name:`editing`,label:`Editing`,type:J.BOOLEAN,defaultValue:!1}]};var bu=__exportAll$1({EditableLabelStories:()=>Su,EditableLabelStory:()=>xu}),xu=class EditableLabelStory extends X{_label=null;static{o.registerClass({GTypeName:`AdwStorybookEditableLabel`},EditableLabelStory)}constructor(){super(X.fromMeta(EditableLabelStory.getMetadata(),`Default`))}static getMetadata(){return{...yu,component:n.EditableLabel.$gtype}}initialize(){this._label=new n.EditableLabel({halign:n.Align.CENTER}),this._apply(),this.addContent(this._label)}updateArgs(e){this._apply()}_apply(){this._label&&(this._label.editing||(this._label.text=this.args.text),this._label.editable=this.args.editable,this._label.editing=this.args.editing)}};o.type_ensure(xu.$gtype);const Su={stories:[xu]},Cu={title:`Text/Search Bar`,description:`Gtk.SearchBar — the strip that reveals a search entry when search starts. The property IS the revealer's reveal-child, so one boolean decides both whether the strip is shown and whether the search is on; hiding it clears the entry.`,controls:[{name:`searchModeEnabled`,label:`Search mode`,type:J.BOOLEAN,defaultValue:!1},{name:`showCloseButton`,label:`Close button`,type:J.BOOLEAN,defaultValue:!0}]};var wu=__exportAll$1({SearchBarStories:()=>Eu,SearchBarStory:()=>Tu}),Tu=class SearchBarStory extends X{_bar=null;_entry=null;static{o.registerClass({GTypeName:`AdwStorybookSearchBar`},SearchBarStory)}constructor(){super(X.fromMeta(SearchBarStory.getMetadata(),`Default`))}static getMetadata(){return{...Cu,component:n.SearchBar.$gtype}}initialize(){this._entry=new n.SearchEntry({hexpand:!0}),this._bar=new n.SearchBar({child:this._entry}),this._apply(),this.addContent(this._bar)}updateArgs(e){this._apply()}_apply(){this._bar&&(this._bar.search_mode_enabled=this.args.searchModeEnabled,this._bar.show_close_button=this.args.showCloseButton)}};o.type_ensure(Tu.$gtype);const Eu={stories:[Tu]},Du={title:`Text/Text View`,description:`Gtk.TextView — the multi-line editor. Its text lives in a Gtk.TextBuffer rather than in a property, wrap-mode and justification are Pango's, and accepts-tab defaults to TRUE, which is the opposite of a browser's.`,controls:[{name:`text`,label:`Text`,type:J.TEXT,defaultValue:`A text view holds as many lines as it is given.
|
|
353
|
-
Tab inserts a tab character.`},{name:`wrapMode`,label:`Wrap mode`,type:J.SELECT,options:[{label:`None`,value:`none`},{label:`Char`,value:`char`},{label:`Word`,value:`word`},{label:`Word or char`,value:`word-char`}],defaultValue:`none`},{name:`justification`,label:`Justification`,type:J.SELECT,options:[{label:`Left`,value:`left`},{label:`Right`,value:`right`},{label:`Center`,value:`center`},{label:`Fill`,value:`fill`}],defaultValue:`left`},{name:`monospace`,label:`Monospace`,type:J.BOOLEAN,defaultValue:!1},{name:`acceptsTab`,label:`Tab inserts a tab`,type:J.BOOLEAN,defaultValue:!0},{name:`cursorVisible`,label:`Show cursor`,type:J.BOOLEAN,defaultValue:!0},{name:`topMargin`,label:`Top margin`,type:J.NUMBER,defaultValue:6}]};var Ou=__exportAll$1({TextViewStories:()=>Au,TextViewStory:()=>ku}),ku=class TextViewStory extends X{_buffer=null;_view=null;static{o.registerClass({GTypeName:`AdwStorybookTextView`},TextViewStory)}constructor(){super(X.fromMeta(TextViewStory.getMetadata(),`Default`))}static getMetadata(){return{...Du,component:n.TextView.$gtype}}initialize(){this._buffer=new n.TextBuffer,this._view=new n.TextView({buffer:this._buffer,hexpand:!0,vexpand:!1,top_margin:6});let e=new n.ScrolledWindow({hscrollbar_policy:n.PolicyType.AUTOMATIC,vscrollbar_policy:n.PolicyType.AUTOMATIC,hexpand:!0,vexpand:!1,child:this._view});e.set_size_request(320,-1),this._apply(),this.addContent(e)}updateArgs(e){this._apply()}_apply(){if(!this._buffer||!this._view)return;let e=this.args.text;this._buffer.text!==e&&(this._buffer.text=e),this._view.wrap_mode=this.args.wrapMode??`none`,this._view.justification=this.args.justification??`left`,this._view.monospace=this.args.monospace,this._view.accepts_tab=this.args.acceptsTab,this._view.cursor_visible=this.args.cursorVisible,this._view.top_margin=Number(this.args.topMargin??0)}};o.type_ensure(ku.$gtype);const Au={stories:[ku]},ju={title:`Text/Text`,description:`Gtk.Text — the single-line text widget every Gtk.Entry is built on. Standalone it is a field with a placeholder and a length limit; visibility=false masks it, propagate-text-width grows it with its text.`,controls:[{name:`text`,label:`Text`,type:J.TEXT,defaultValue:`Ada Lovelace`},{name:`placeholderText`,label:`Placeholder`,type:J.TEXT,defaultValue:``},{name:`editable`,label:`Editable`,type:J.BOOLEAN,defaultValue:!0},{name:`visibility`,label:`Visible`,type:J.BOOLEAN,defaultValue:!0},{name:`maxLength`,label:`Max length (0 = none)`,type:J.NUMBER,defaultValue:0},{name:`propagateTextWidth`,label:`Grow with text`,type:J.BOOLEAN,defaultValue:!1}]};var Mu=__exportAll$1({TextStories:()=>Pu,TextStory:()=>Nu}),Nu=class TextStory extends X{_text=null;static{o.registerClass({GTypeName:`AdwStorybookText`},TextStory)}constructor(){super(X.fromMeta(TextStory.getMetadata(),`Default`))}static getMetadata(){return{...ju,component:n.Text.$gtype}}initialize(){this._text=new n.Text({halign:n.Align.CENTER}),this._apply(),this.addContent(this._text)}updateArgs(e){this._apply()}_apply(){this._text&&(this._text.text=this.args.text,this._text.placeholder_text=this.args.placeholderText,this._text.editable=this.args.editable,this._text.visibility=this.args.visibility,this._text.max_length=Number(this.args.maxLength??0),this._text.propagate_text_width=this.args.propagateTextWidth)}};o.type_ensure(Nu.$gtype);const Pu={stories:[Nu]},Fu=[{name:`allowScrollWheel`,label:`Allow scroll wheel`,type:J.BOOLEAN,defaultValue:!0},{name:`allowLongSwipes`,label:`Allow long swipes`,type:J.BOOLEAN,defaultValue:!1}],Iu={title:`View Switching/Carousel (Dots)`,description:`Adw.Carousel — a horizontally swipeable pager with three pages, paired with Adw.CarouselIndicatorDots.`,controls:Fu},Lu={title:`View Switching/Carousel (Lines)`,description:`Adw.Carousel — the same swipeable pager paired with Adw.CarouselIndicatorLines instead of dots.`,controls:Fu};var Ru=__exportAll$1({CarouselDotsStory:()=>Bu,CarouselLinesStory:()=>Vu,CarouselStories:()=>Hu});const zu=[{title:`Welcome`,css:`accent`},{title:`Discover`,css:`success`},{title:`Get started`,css:`warning`}];function buildPage(e,t){let r=new n.Box({orientation:n.Orientation.VERTICAL,halign:n.Align.CENTER,valign:n.Align.CENTER,widthRequest:440,heightRequest:260});r.add_css_class(`card`),r.add_css_class(t);let i=new n.Label({label:e,vexpand:!0,valign:n.Align.CENTER});return i.add_css_class(`title-1`),r.append(i),r}var Bu=class CarouselDotsStory extends X{_carousel=null;static{o.registerClass({GTypeName:`AdwStorybookCarouselDots`},CarouselDotsStory)}constructor(){super(X.fromMeta(CarouselDotsStory.getMetadata(),`Default`))}static getMetadata(){return{...Iu,component:s.Carousel.$gtype}}initialize(){this._carousel=new s.Carousel({allowScrollWheel:this.args.allowScrollWheel,allowLongSwipes:this.args.allowLongSwipes,vexpand:!0});for(let e of zu)this._carousel.append(buildPage(e.title,e.css));let e=new s.CarouselIndicatorDots({carousel:this._carousel}),t=new n.Box({orientation:n.Orientation.VERTICAL,spacing:12,widthRequest:480,heightRequest:340});t.append(this._carousel),t.append(e),this.addContent(t)}updateArgs(e){this._carousel&&(this._carousel.allowScrollWheel=this.args.allowScrollWheel,this._carousel.allowLongSwipes=this.args.allowLongSwipes)}};o.type_ensure(Bu.$gtype);var Vu=class CarouselLinesStory extends X{_carousel=null;static{o.registerClass({GTypeName:`AdwStorybookCarouselLines`},CarouselLinesStory)}constructor(){super(X.fromMeta(CarouselLinesStory.getMetadata(),`Default`))}static getMetadata(){return{...Lu,component:s.Carousel.$gtype}}initialize(){this._carousel=new s.Carousel({allowScrollWheel:this.args.allowScrollWheel,allowLongSwipes:this.args.allowLongSwipes,vexpand:!0});for(let e of zu)this._carousel.append(buildPage(e.title,e.css));let e=new s.CarouselIndicatorLines({carousel:this._carousel}),t=new n.Box({orientation:n.Orientation.VERTICAL,spacing:12,widthRequest:480,heightRequest:340});t.append(this._carousel),t.append(e),this.addContent(t)}updateArgs(e){this._carousel&&(this._carousel.allowScrollWheel=this.args.allowScrollWheel,this._carousel.allowLongSwipes=this.args.allowLongSwipes)}};o.type_ensure(Vu.$gtype);const Hu={stories:[Bu,Vu]},Uu={title:`View Switching/Inline View Switcher`,description:`Adw.InlineViewSwitcher — a compact inline switcher that can show labels, icons, or both for an Adw.ViewStack.`,controls:[{name:`displayMode`,label:`Display mode`,type:J.SELECT,options:[{label:`Labels`,value:`labels`},{label:`Icons`,value:`icons`},{label:`Both`,value:`both`}],defaultValue:`both`}]};var Wu=__exportAll$1({InlineViewSwitcherStories:()=>Ku,InlineViewSwitcherStory:()=>Gu}),Gu=class InlineViewSwitcherStory extends X{_switcher=null;static{o.registerClass({GTypeName:`AdwStorybookInlineViewSwitcher`},InlineViewSwitcherStory)}constructor(){super(X.fromMeta(InlineViewSwitcherStory.getMetadata(),`Default`))}static getMetadata(){return{...Uu,component:s.InlineViewSwitcher.$gtype}}buildPage(e,t,n){return new s.StatusPage({iconName:t,title:e,description:n,vexpand:!0})}initialize(){let e=new s.ViewStack({vexpand:!0});e.add_titled_with_icon(this.buildPage(`Overview`,`view-grid-symbolic`,`A quick summary of your project.`),`overview`,`Overview`,`view-grid-symbolic`),e.add_titled_with_icon(this.buildPage(`Activity`,`document-edit-symbolic`,`Recent edits and changes.`),`activity`,`Activity`,`document-edit-symbolic`),e.add_titled_with_icon(this.buildPage(`Settings`,`emblem-system-symbolic`,`Configure how things behave.`),`settings`,`Settings`,`emblem-system-symbolic`),this._switcher=new s.InlineViewSwitcher({stack:e,displayMode:this.modeFromArg(this.args.displayMode),halign:n.Align.CENTER});let t=new n.Box({orientation:n.Orientation.VERTICAL,spacing:12,widthRequest:480,heightRequest:340});t.append(this._switcher),t.append(e),this.addContent(t)}modeFromArg(e){return e===`labels`?s.InlineViewSwitcherDisplayMode.LABELS:e===`icons`?s.InlineViewSwitcherDisplayMode.ICONS:s.InlineViewSwitcherDisplayMode.BOTH}updateArgs(e){this._switcher&&(this._switcher.displayMode=this.modeFromArg(this.args.displayMode))}};o.type_ensure(Gu.$gtype);const Ku={stories:[Gu]},qu=[{name:`overview`,label:`Overview`,body:`A notebook brings its own tab strip.`},{name:`activity`,label:`Activity`,body:`tab-pos says which edge the strip is on.`},{name:`notes`,label:``,body:`No tab-label: the tab reads "Page 3".`}],Ju={title:`View Switching/Notebook`,description:'Gtk.Notebook — the older page container, a stack that brings its own tab bar. `tab-pos` picks the edge (top, bottom, left, right), `show-tabs` takes the strip away, `show-border` is the bevel around the pages — a CSS class in C — and `page` is the current page by INDEX rather than by name. A GtkNotebookPage is a GObject rather than a widget, so its tab-label and friends live on the page itself, and a page without one gets the number "Page N" as its tab text. `enable-popup` puts the pages in a right-click menu.',controls:[{name:`tabPos`,label:`Tab position`,type:J.SELECT,options:[{label:`Top`,value:`top`},{label:`Bottom`,value:`bottom`},{label:`Left`,value:`left`},{label:`Right`,value:`right`}],defaultValue:`top`},{name:`showTabs`,label:`Show tabs`,type:J.BOOLEAN,defaultValue:!0},{name:`showBorder`,label:`Show border`,type:J.BOOLEAN,defaultValue:!0},{name:`enablePopup`,label:`Enable popup (right-click)`,type:J.BOOLEAN,defaultValue:!1}]};var Yu=__exportAll$1({NotebookStories:()=>Qu,NotebookStory:()=>Zu});const Xu={top:n.PositionType.TOP,bottom:n.PositionType.BOTTOM,left:n.PositionType.LEFT,right:n.PositionType.RIGHT};var Zu=class NotebookStory extends X{_notebook=null;static{o.registerClass({GTypeName:`AdwStorybookNotebook`},NotebookStory)}constructor(){super(X.fromMeta(NotebookStory.getMetadata(),`Default`))}static getMetadata(){return{...Ju,component:n.Notebook.$gtype}}initialize(){this._notebook=new n.Notebook({vexpand:!0,widthRequest:480,heightRequest:320});for(let e of qu){let t=new n.Box({orientation:n.Orientation.VERTICAL,halign:n.Align.CENTER,valign:n.Align.CENTER,spacing:6});t.append(new n.Label({label:e.label||e.name,cssClasses:[`title-4`]})),t.append(new n.Label({label:e.body,cssClasses:[`title-2`]}));let r=e.label?new n.Label({label:e.label}):null,i=new n.Label({label:e.label||e.name});this._notebook.append_page_menu(t,r,i)}this._apply(),this.addContent(this._notebook)}updateArgs(e){this._apply()}_apply(){this._notebook&&(this._notebook.tab_pos=Xu[this.args.tabPos]??n.PositionType.TOP,this._notebook.show_tabs=this.args.showTabs,this._notebook.enable_popup=this.args.enablePopup,this._notebook.show_border=this.args.showBorder)}};o.type_ensure(Zu.$gtype);const Qu={stories:[Zu]},$u=[{name:`inbox`,title:`Inbox`,icon:`mail-unread-symbolic`,attn:!1,body:`Three unread conversations.`},{name:`starred`,title:`Starred`,icon:`starred-symbolic`,attn:!1,body:`Messages marked important.`},{name:`drafts`,title:`Drafts`,icon:`document-edit-symbolic`,attn:!0,body:`One draft needs attention.`},{name:`settings`,title:``,icon:`preferences-system-symbolic`,attn:!1,body:`No row: a title is the row.`}],ed={title:`View Switching/Stack Sidebar`,description:"Gtk.StackSidebar — a vertical list of a Gtk.Stack's pages, the sidebar counterpart of the stack switcher. A row is made of the page's TITLE alone: `update_row` never reads `icon-name`, so the page with only an icon at the end of this story gets no row at all, where the switcher would show an icon button for it. `needs-attention` puts a dot in front of the label.",controls:[{name:`transitionType`,label:`Transition type`,type:J.SELECT,options:[{label:`None`,value:`none`},{label:`Crossfade`,value:`crossfade`},{label:`Slide left / right`,value:`slide-left-right`}],defaultValue:`slide-left-right`}]};var td=__exportAll$1({StackSidebarStories:()=>id,StackSidebarStory:()=>rd});const nd={none:n.StackTransitionType.NONE,crossfade:n.StackTransitionType.CROSSFADE,"slide-left-right":n.StackTransitionType.SLIDE_LEFT_RIGHT};var rd=class StackSidebarStory extends X{_stack=null;static{o.registerClass({GTypeName:`AdwStorybookStackSidebar`},StackSidebarStory)}constructor(){super(X.fromMeta(StackSidebarStory.getMetadata(),`Default`))}static getMetadata(){return{...ed,component:n.StackSidebar.$gtype}}initialize(){this._stack=new n.Stack({vexpand:!0,transitionDuration:200});for(let e of $u){let t=new n.Label({label:e.body});t.add_css_class(`title-2`);let r=new n.Box({orientation:n.Orientation.VERTICAL,halign:n.Align.CENTER,valign:n.Align.CENTER,spacing:6});r.append(new n.Label({label:e.title||e.name,cssClasses:[`title-4`]})),r.append(t);let i=this._stack.add_titled(r,e.name,e.title);i.icon_name=e.icon,i.needs_attention=e.attn,i.use_underline=!0}let e=new n.StackSidebar({stack:this._stack}),t=new n.Box({orientation:n.Orientation.VERTICAL,spacing:0});t.append(e);let r=new n.Paned({orientation:n.Orientation.HORIZONTAL,widthRequest:480,heightRequest:320});r.set_start_child(t),r.set_end_child(this._stack),r.set_position(180),this._apply(),this.addContent(r)}updateArgs(e){this._apply()}_apply(){this._stack&&(this._stack.transition_type=nd[this.args.transitionType]??n.StackTransitionType.NONE)}};o.type_ensure(rd.$gtype);const id={stories:[rd]},ad=[{name:`inbox`,title:`Inbox`,icon:`mail-unread-symbolic`,attn:!1,body:`Three unread conversations.`},{name:`starred`,title:`Starred`,icon:`starred-symbolic`,attn:!1,body:`Messages marked important.`},{name:`archive`,title:`Archive`,icon:``,attn:!1,body:`Older conversations kept for reference.`},{name:`drafts`,title:``,icon:`document-edit-symbolic`,attn:!0,body:`One draft needs your attention.`}],od={title:`View Switching/Stack Switcher`,description:"Gtk.StackSwitcher — a linked row of toggle buttons, one per page of a Gtk.Stack. A page with a title and no icon gets a label button; one with an icon and no title gets an icon button and puts the title on the switcher as a tooltip; a page with NEITHER is left out of the row entirely. `orientation` turns the row vertical, and `needs-attention` on a page puts a dot on its button.",controls:[{name:`orientation`,label:`Orientation`,type:J.SELECT,options:[{label:`Horizontal`,value:`horizontal`},{label:`Vertical`,value:`vertical`}],defaultValue:`horizontal`},{name:`transitionType`,label:`Transition type`,type:J.SELECT,options:[{label:`None`,value:`none`},{label:`Crossfade`,value:`crossfade`},{label:`Slide left / right`,value:`slide-left-right`}],defaultValue:`slide-left-right`}]};var sd=__exportAll$1({StackSwitcherStories:()=>ud,StackSwitcherStory:()=>ld});const cd={none:n.StackTransitionType.NONE,crossfade:n.StackTransitionType.CROSSFADE,"slide-left-right":n.StackTransitionType.SLIDE_LEFT_RIGHT};var ld=class StackSwitcherStory extends X{_stack=null;_switcher=null;static{o.registerClass({GTypeName:`AdwStorybookStackSwitcher`},StackSwitcherStory)}constructor(){super(X.fromMeta(StackSwitcherStory.getMetadata(),`Default`))}static getMetadata(){return{...od,component:n.StackSwitcher.$gtype}}initialize(){this._stack=new n.Stack({vexpand:!0,transitionDuration:200});for(let e of ad){let t=new n.Label({label:e.body});t.add_css_class(`title-2`);let r=new n.Box({orientation:n.Orientation.VERTICAL,halign:n.Align.CENTER,valign:n.Align.CENTER,spacing:6});if(r.append(new n.Label({label:e.title||e.name,cssClasses:[`title-4`]})),r.append(t),e.icon){let t=this._stack.add_titled(r,e.name,e.title);t.icon_name=e.icon,t.needs_attention=e.attn,t.use_underline=!0}else{let t=this._stack.add_titled(r,e.name,e.title);t.needs_attention=e.attn,t.use_underline=!0}}this._switcher=new n.StackSwitcher({stack:this._stack,halign:n.Align.CENTER});let e=new n.Box({orientation:n.Orientation.VERTICAL,spacing:12,widthRequest:480,heightRequest:320});e.append(this._switcher),e.append(this._stack),this._apply(),this.addContent(e)}updateArgs(e){this._apply()}_apply(){!this._stack||!this._switcher||(this._stack.transition_type=cd[this.args.transitionType]??n.StackTransitionType.NONE,this._switcher.orientation=this.args.orientation===`vertical`?n.Orientation.VERTICAL:n.Orientation.HORIZONTAL)}};o.type_ensure(ld.$gtype);const ud={stories:[ld]},dd=[{name:`overview`,title:`Overview`,attn:!1,body:`Three pages, one visible at a time.`},{name:`activity`,title:`Activity`,attn:!1,body:`Switching is animated by transition-type.`},{name:`settings`,title:`Settings`,attn:!0,body:`This page wants your attention.`}],fd={title:`View Switching/Stack`,description:"Gtk.Stack — one visible child out of many, with the animated change between them. `transition-type` picks the animation and `transition-duration` its length; `hhomogeneous` and `vhomogeneous` say whether every page is allocated the same size. A Gtk.StackPage is a GObject rather than a widget, so its title, icon and needs-attention live on the page itself.",controls:[{name:`transitionType`,label:`Transition type`,type:J.SELECT,options:[{label:`None`,value:`none`},{label:`Crossfade`,value:`crossfade`},{label:`Slide left / right`,value:`slide-left-right`},{label:`Slide up / down`,value:`slide-up-down`},{label:`Over left / right`,value:`over-left-right`},{label:`Rotate left / right`,value:`rotate-left-right`}],defaultValue:`slide-left-right`},{name:`transitionDuration`,label:`Duration (ms)`,type:J.RANGE,min:0,max:600,step:50,defaultValue:200},{name:`interpolateSize`,label:`Interpolate size`,type:J.BOOLEAN,defaultValue:!1},{name:`hhomogeneous`,label:`HHomogeneous`,type:J.BOOLEAN,defaultValue:!0},{name:`vhomogeneous`,label:`VHomogeneous`,type:J.BOOLEAN,defaultValue:!0}]};var pd=__exportAll$1({StackStories:()=>gd,StackStory:()=>hd});const md={none:n.StackTransitionType.NONE,crossfade:n.StackTransitionType.CROSSFADE,"slide-left-right":n.StackTransitionType.SLIDE_LEFT_RIGHT,"slide-up-down":n.StackTransitionType.SLIDE_UP_DOWN,"over-left-right":n.StackTransitionType.OVER_LEFT_RIGHT,"rotate-left-right":n.StackTransitionType.ROTATE_LEFT_RIGHT};var hd=class StackStory extends X{_stack=null;_switcher=null;static{o.registerClass({GTypeName:`AdwStorybookStack`},StackStory)}constructor(){super(X.fromMeta(StackStory.getMetadata(),`Default`))}static getMetadata(){return{...fd,component:n.Stack.$gtype}}initialize(){this._stack=new n.Stack({vexpand:!0,transitionDuration:200});for(let e of dd){let t=new n.Label({label:e.body,vexpand:!0});t.add_css_class(`title-2`);let r=new n.Box({orientation:n.Orientation.VERTICAL,halign:n.Align.CENTER,valign:n.Align.CENTER,spacing:6});r.append(new n.Label({label:e.title,cssClasses:[`title-4`]})),r.append(t);let i=this._stack.add_titled(r,e.name,e.title);i.needs_attention=e.attn,i.use_underline=!0}this._switcher=new n.StackSwitcher({stack:this._stack,halign:n.Align.CENTER});let e=new n.Box({orientation:n.Orientation.VERTICAL,spacing:12,widthRequest:480,heightRequest:320});e.append(this._switcher),e.append(this._stack),this._apply(),this.addContent(e)}updateArgs(e){this._apply()}_apply(){this._stack&&(this._stack.transition_type=md[this.args.transitionType]??n.StackTransitionType.NONE,this._stack.transition_duration=this.args.transitionDuration,this._stack.interpolate_size=this.args.interpolateSize,this._stack.hhomogeneous=this.args.hhomogeneous,this._stack.vhomogeneous=this.args.vhomogeneous)}};o.type_ensure(hd.$gtype);const gd={stories:[hd]},_d={title:`View Switching/Tab Bar`,description:"Adw.TabBar — the tab bar as a widget of its own, bound to an Adw.TabView through its `view`: one chip per page, an action widget on either side, and a strip that can autohide or expand its chips.",controls:[{name:`autohide`,label:`Autohide`,type:J.BOOLEAN,defaultValue:!1},{name:`expandTabs`,label:`Expand tabs`,type:J.BOOLEAN,defaultValue:!1},{name:`inverted`,label:`Inverted`,type:J.BOOLEAN,defaultValue:!1},{name:`startAction`,label:`Start action`,type:J.BOOLEAN,defaultValue:!0},{name:`endAction`,label:`End action`,type:J.BOOLEAN,defaultValue:!0}]};var vd=__exportAll$1({TabBarStories:()=>xd,TabBarStory:()=>bd});const yd=[{title:`Overview`,body:`A summary of everything at a glance.`},{title:`Details`,body:`The specifics, broken down line by line.`},{title:`History`,body:`A log of every change made so far.`}];var bd=class TabBarStory extends X{_bar=null;_startAction=null;_endAction=null;static{o.registerClass({GTypeName:`AdwStorybookTabBar`},TabBarStory)}constructor(){super(X.fromMeta(TabBarStory.getMetadata(),`Default`))}static getMetadata(){return{..._d,component:s.TabBar.$gtype}}initialize(){let e=new s.TabView({vexpand:!0});for(let t of yd){let n=e.append(new s.StatusPage({iconName:`view-paged-symbolic`,title:t.title,description:t.body}));n.title=t.title}this._startAction=new n.Button({iconName:`list-add-symbolic`,tooltipText:`New page`,cssClasses:[`flat`]}),this._endAction=new n.Button({iconName:`view-more-symbolic`,tooltipText:`Menu`,cssClasses:[`flat`]});let t=new s.TabBar({view:e});this._bar=t;let r=new n.Box({orientation:n.Orientation.VERTICAL,widthRequest:480,heightRequest:320});r.append(t),r.append(e),this.addContent(r),this._apply()}updateArgs(e){this._apply()}_apply(){let e=this._bar;e!==null&&(e.autohide=this.args.autohide,e.expandTabs=this.args.expandTabs,e.inverted=this.args.inverted,e.startActionWidget=this.args.startAction?this._startAction:null,e.endActionWidget=this.args.endAction?this._endAction:null)}};o.type_ensure(bd.$gtype);const xd={stories:[bd]},Sd={title:`View Switching/Tab Button`,description:`Adw.TabButton — a button that shows how many pages an Adw.TabView holds, and a dot when a page you are not looking at needs attention. From ten pages the number shrinks; at a hundred it becomes a glyph.`,controls:[{name:`pages`,label:`Pages`,type:J.RANGE,min:0,max:100,step:1,defaultValue:3},{name:`needsAttention`,label:`Last page needs attention`,type:J.BOOLEAN,defaultValue:!1}]};var Cd=__exportAll$1({TabButtonStories:()=>Td,TabButtonStory:()=>wd}),wd=class TabButtonStory extends X{_view=null;static{o.registerClass({GTypeName:`AdwStorybookTabButton`},TabButtonStory)}constructor(){super(X.fromMeta(TabButtonStory.getMetadata(),`Default`))}static getMetadata(){return{...Sd,component:s.TabButton.$gtype}}initialize(){this._view=new s.TabView;let e=new s.TabButton({view:this._view,halign:n.Align.CENTER});this._apply(),this.addContent(e)}updateArgs(e){this._apply()}_apply(){let e=this._view;if(!e)return;let t=this.args.pages;for(;e.nPages<t;)e.append(new n.Box).title=`Page ${e.nPages}`;for(;e.nPages>t;)e.close_page(e.get_nth_page(e.nPages-1));for(let t=0;t<e.nPages;t++)e.get_nth_page(t).needsAttention=this.args.needsAttention&&t===e.nPages-1}};o.type_ensure(wd.$gtype);const Td={stories:[wd]},Ed={title:`View Switching/Tab Overview`,description:`Adw.TabOverview — a grid of tab thumbnails over an Adw.TabView; open it to see every page at once, search them and close or unpin them.`,controls:[{name:`open`,label:`Open`,type:J.BOOLEAN,defaultValue:!0},{name:`enableSearch`,label:`Enable search`,type:J.BOOLEAN,defaultValue:!0},{name:`enableNewTab`,label:`Enable new tab`,type:J.BOOLEAN,defaultValue:!1},{name:`inverted`,label:`Inverted`,type:J.BOOLEAN,defaultValue:!1}]};var Dd=__exportAll$1({TabOverviewStories:()=>Ad,TabOverviewStory:()=>kd});const Od=[{title:`Overview`,body:`A summary of everything at a glance.`},{title:`Details`,body:`The specifics, broken down line by line.`},{title:`History`,body:`A log of every change made so far.`}];var kd=class TabOverviewStory extends X{_overview=null;static{o.registerClass({GTypeName:`AdwStorybookTabOverview`},TabOverviewStory)}constructor(){super(X.fromMeta(TabOverviewStory.getMetadata(),`Default`))}static getMetadata(){return{...Ed,component:s.TabOverview.$gtype}}initialize(){let e=new s.TabView({vexpand:!0});for(let[t,n]of Od.entries()){let r=new s.StatusPage({iconName:`view-paged-symbolic`,title:n.title,description:n.body,vexpand:!0}),i=e.append(r);i.title=n.title,t===0&&e.set_page_pinned(i,!0)}let t=new s.TabOverview({view:e,child:e,widthRequest:480,heightRequest:340});this._overview=t,t.connect(`create-tab`,()=>{let t=e.append(new s.StatusPage({iconName:`view-paged-symbolic`,title:`New Page`,vexpand:!0}));return t.title=`New Page`,t}),this.addContent(t),this._apply()}updateArgs(e){this._apply()}_apply(){let e=this._overview;e&&(e.enableSearch=this.args.enableSearch,e.enableNewTab=this.args.enableNewTab,e.inverted=this.args.inverted,e.open=this.args.open)}};o.type_ensure(kd.$gtype);const Ad={stories:[kd]},jd={title:`View Switching/Tab View`,description:`Adw.TabView with an Adw.TabBar header — three tabbed pages; the tab bar can auto-hide when only one tab remains.`,controls:[{name:`autohide`,label:`Autohide tab bar`,type:J.BOOLEAN,defaultValue:!1}]};var Md=__exportAll$1({TabViewStories:()=>Fd,TabViewStory:()=>Pd});const Nd=[{title:`Overview`,body:`A summary of everything at a glance.`},{title:`Details`,body:`The specifics, broken down line by line.`},{title:`History`,body:`A log of every change made so far.`}];var Pd=class TabViewStory extends X{_tabBar=null;static{o.registerClass({GTypeName:`AdwStorybookTabView`},TabViewStory)}constructor(){super(X.fromMeta(TabViewStory.getMetadata(),`Default`))}static getMetadata(){return{...jd,component:s.TabView.$gtype}}buildPageBody(e,t){return new s.StatusPage({iconName:`view-paged-symbolic`,title:e,description:t,vexpand:!0})}initialize(){let e=new s.TabView({vexpand:!0});for(let t of Nd){let n=e.append(this.buildPageBody(t.title,t.body));n.title=t.title}this._tabBar=new s.TabBar({view:e,autohide:this.args.autohide});let t=new n.Box({orientation:n.Orientation.VERTICAL,widthRequest:480,heightRequest:340});t.append(this._tabBar),t.append(e),this.addContent(t)}updateArgs(e){this._tabBar&&(this._tabBar.autohide=this.args.autohide)}};o.type_ensure(Pd.$gtype);const Fd={stories:[Pd]},Id=[{name:`inbox`,title:`Inbox`,icon:`mail-unread-symbolic`},{name:`starred`,title:`Starred`,icon:`starred-symbolic`},{name:`archive`,title:`Archive`,icon:`folder-symbolic`}],Ld={title:`View Switching/View Switcher Bar`,description:"Adw.ViewSwitcherBar — the narrow-window switcher, pinned to the bottom of a toolbar view. `reveal` is a REQUEST, not a state: a stack with fewer than two pages stays collapsed however loudly it is asked.",controls:[{name:`reveal`,label:`Reveal`,type:J.BOOLEAN,defaultValue:!0}]};var Rd=__exportAll$1({ViewSwitcherBarStories:()=>Bd,ViewSwitcherBarStory:()=>zd}),zd=class ViewSwitcherBarStory extends X{_bar=null;static{o.registerClass({GTypeName:`AdwStorybookViewSwitcherBar`},ViewSwitcherBarStory)}constructor(){super(X.fromMeta(ViewSwitcherBarStory.getMetadata(),`Default`))}static getMetadata(){return{...Ld,component:s.ViewSwitcherBar.$gtype}}initialize(){let e=new s.ViewStack({vexpand:!0});for(let t of Id){let n=new s.StatusPage({iconName:t.icon,title:t.title,description:`The ${t.title.toLowerCase()} page.`,vexpand:!0});e.add_titled_with_icon(n,t.name,t.title,t.icon)}this._bar=new s.ViewSwitcherBar({stack:e}),this._apply();let t=new s.ToolbarView({content:e,widthRequest:360,heightRequest:360});t.add_bottom_bar(this._bar),this.addContent(t)}updateArgs(e){this._apply()}_apply(){this._bar&&(this._bar.reveal=this.args.reveal)}};o.type_ensure(zd.$gtype);const Bd={stories:[zd]},Vd=[{name:`inbox`,title:`Inbox`,icon:`mail-unread-symbolic`,sectionTitle:`Mail`,badgeNumber:3},{name:`starred`,title:`Starred`,icon:`starred-symbolic`},{name:`drafts`,title:`Drafts`,icon:`document-edit-symbolic`},{name:`sent`,title:`Sent`,icon:`mail-send-symbolic`,sectionTitle:`Older`,needsAttention:!0},{name:`archive`,title:`Archive`,icon:`folder-symbolic`},{name:`trash`,title:`Trash`,icon:`user-trash-symbolic`}],Hd={title:`View Switching/View Switcher Sidebar`,description:"Adw.ViewSwitcherSidebar — an Adw.Sidebar driven by an Adw.ViewStack, which is the one Adw switcher whose rows can be grouped into sections and carry an unread dot or a badge. `page` collapses it into a page of boxed lists.",controls:[{name:`mode`,label:`Page mode`,type:J.BOOLEAN,defaultValue:!1}]};var Ud=__exportAll$1({ViewSwitcherSidebarStories:()=>Gd,ViewSwitcherSidebarStory:()=>Wd}),Wd=class ViewSwitcherSidebarStory extends X{_switcher=null;static{o.registerClass({GTypeName:`AdwStorybookViewSwitcherSidebar`},ViewSwitcherSidebarStory)}constructor(){super(X.fromMeta(ViewSwitcherSidebarStory.getMetadata(),`Default`))}static getMetadata(){return{...Hd,component:s.ViewSwitcherSidebar.$gtype}}initialize(){let e=new s.ViewStack({vexpand:!0});for(let t of Vd){let n=new s.StatusPage({iconName:t.icon,title:t.title,vexpand:!0});e.add_titled(n,t.name,t.title)}let t=e.get_pages();for(let e=0;e<t.get_n_items();e++){let n=t.get_item(e),r=Vd.find(e=>e.name===n.name);r?.sectionTitle&&(n.startsSection=!0,n.sectionTitle=r.sectionTitle,r.badgeNumber&&(n.badgeNumber=r.badgeNumber),r.needsAttention&&(n.needsAttention=!0))}let r=new s.ViewSwitcherSidebar({stack:e});this._switcher=r;let i=new n.Box({orientation:n.Orientation.HORIZONTAL,widthRequest:480,heightRequest:340});i.append(r),i.append(e),this.addContent(i),this._apply()}updateArgs(e){this._apply()}_apply(){this._switcher&&(this._switcher.mode=this.args.mode?s.SidebarMode.PAGE:s.SidebarMode.SIDEBAR)}};o.type_ensure(Wd.$gtype);const Gd={stories:[Wd]},Kd={title:`View Switching/View Switcher`,description:`Adw.ViewSwitcher — a segmented switcher whose buttons select pages in a paired Adw.ViewStack.`,controls:[{name:`policy`,label:`Policy`,type:J.SELECT,options:[{label:`Wide`,value:`wide`},{label:`Narrow`,value:`narrow`}],defaultValue:`wide`}]};var qd=__exportAll$1({ViewSwitcherStories:()=>Yd,ViewSwitcherStory:()=>Jd}),Jd=class ViewSwitcherStory extends X{_switcher=null;static{o.registerClass({GTypeName:`AdwStorybookViewSwitcher`},ViewSwitcherStory)}constructor(){super(X.fromMeta(ViewSwitcherStory.getMetadata(),`Default`))}static getMetadata(){return{...Kd,component:s.ViewSwitcher.$gtype}}buildPage(e,t,n){return new s.StatusPage({iconName:t,title:e,description:n,vexpand:!0})}initialize(){let e=new s.ViewStack({vexpand:!0});e.add_titled_with_icon(this.buildPage(`Inbox`,`mail-unread-symbolic`,`You have three unread conversations.`),`inbox`,`Inbox`,`mail-unread-symbolic`),e.add_titled_with_icon(this.buildPage(`Starred`,`starred-symbolic`,`Messages you have marked as important.`),`starred`,`Starred`,`starred-symbolic`),e.add_titled_with_icon(this.buildPage(`Archive`,`folder-symbolic`,`Older conversations kept for reference.`),`archive`,`Archive`,`folder-symbolic`),this._switcher=new s.ViewSwitcher({stack:e,policy:this.policyFromArg(this.args.policy),halign:n.Align.CENTER});let t=new n.Box({orientation:n.Orientation.VERTICAL,spacing:12,widthRequest:480,heightRequest:340});t.append(this._switcher),t.append(e),this.addContent(t)}policyFromArg(e){return e===`narrow`?s.ViewSwitcherPolicy.NARROW:s.ViewSwitcherPolicy.WIDE}updateArgs(e){this._switcher&&(this._switcher.policy=this.policyFromArg(this.args.policy))}};o.type_ensure(Jd.$gtype);const Yd={stories:[Jd]},Xd={title:`Windows/Action Bar`,description:"Gtk.ActionBar — GTK's bottom bar, and the one libadwaita styles but does not own (`actionbar > revealer > box`). `start` appends and `end` PREPENDS, so the first end child sits nearest the edge; `center` is a real placement with no property behind it, because GtkBuilder refuses `center-widget`; and `revealed` slides the whole bar away.",controls:[{name:`revealed`,label:`Revealed`,type:J.BOOLEAN,defaultValue:!0},{name:`center`,label:`Centre`,type:J.SELECT,options:[{label:`A label`,value:`label`},{label:`Nothing`,value:`none`}],defaultValue:`label`}]};var Zd=__exportAll$1({ActionBarStories:()=>$d,ActionBarStory:()=>Qd}),Qd=class ActionBarStory extends X{_bar=null;_centre=null;static{o.registerClass({GTypeName:`AdwStorybookActionBar`},ActionBarStory)}constructor(){super(X.fromMeta(ActionBarStory.getMetadata(),`Default`))}static getMetadata(){return{...Xd,component:n.ActionBar.$gtype}}initialize(){this._bar=new n.ActionBar;let e=new n.Button({icon_name:`document-save-symbolic`});e.add_css_class(`flat`),this._bar.pack_end(e);let t=new n.Button({icon_name:`document-open-symbolic`});t.add_css_class(`flat`),this._bar.pack_end(t);let r=new n.Button({icon_name:`document-print-symbolic`});r.add_css_class(`flat`),this._bar.pack_start(r),this._centre=new n.Label({label:`notes.md`});let i=new n.Box({orientation:n.Orientation.VERTICAL,spacing:8});i.append(new n.Label({label:`The bar below is Gtk.ActionBar.`,css_classes:[`dimmed`]})),i.append(this._bar),this.addContent(i),this._apply()}updateArgs(e){this._apply()}_apply(){this._bar&&(this._bar.revealed=this.args.revealed,this._bar.set_center_widget(this.args.center===`label`?this._centre:null))}};o.type_ensure(Qd.$gtype);const $d={stories:[Qd]},ef={title:`Windows/Application Window`,description:"Gtk.ApplicationWindow — a Gtk.Window that also handles an application menubar. The bar shows only when `show-menubar` is set AND the application HAS one: GTK builds it from the GtkApplication's menu model, and reads the item count before deciding (gtkapplicationwindow.c:400-402). Everything else about the window is the base class.",controls:[{name:`title`,label:`Title`,type:J.TEXT,defaultValue:`Editor`},{name:`showMenubar`,label:`Show menubar`,type:J.BOOLEAN,defaultValue:!0},{name:`hasMenubar`,label:`The application has one`,type:J.BOOLEAN,defaultValue:!0},{name:`deletable`,label:`Deletable`,type:J.BOOLEAN,defaultValue:!0}]};var tf=__exportAll$1({GtkApplicationWindowStories:()=>rf,GtkApplicationWindowStory:()=>nf});function menubarModel(){let e=new r.Menu,t=new r.Menu;t.append(`_New`,`win.new`),t.append(`_Open…`,`win.open`);let n=new r.Menu;return n.append(`_Copy`,`win.copy`),n.append(`_Paste`,`win.paste`),e.append_section(null,t),e.append_section(null,n),e}var nf=class GtkApplicationWindowStory extends X{_window=null;_application=null;_menubar=null;static{o.registerClass({GTypeName:`AdwStorybookGtkApplicationWindow`},GtkApplicationWindowStory)}constructor(){super(X.fromMeta(GtkApplicationWindowStory.getMetadata(),`Default`))}static getMetadata(){return{...ef,component:n.ApplicationWindow.$gtype}}initialize(){this._application=new n.Application({application_id:`eu.jumplink.AdwStorybookGtkApplicationWindow`}),this._menubar=menubarModel(),this._application.set_menubar(this._menubar),this._window=new n.ApplicationWindow({application:this._application,default_width:460,default_height:260}),this._window.set_titlebar(new n.HeaderBar);let e=new n.Box({orientation:n.Orientation.VERTICAL,spacing:12,margin_top:12,margin_start:12});e.append(new n.Label({label:`The bar above is built from the application menu.`,css_classes:[`dimmed`]})),this._window.set_child(e),this.addContent(this._window),this._apply()}updateArgs(e){this._apply()}_apply(){!this._window||!this._application||(this._window.title=this.args.title,this._window.deletable=this.args.deletable,this._application.set_menubar(this.args.hasMenubar?this._menubar:null),this._window.show_menubar=this.args.showMenubar)}};o.type_ensure(nf.$gtype);const rf={stories:[nf]},af={title:`Windows/Header Bar`,description:"Gtk.HeaderBar — the titlebar widget: children packed at the start and at the end, the window title in the middle, and the window-frame buttons GTK would otherwise ask the window manager for. `end` PREPENDS, so the first end child sits nearest the edge; a `title` child takes the middle away from the derived title label; and `show-title-buttons` CREATES and REMOVES the two control groups rather than hiding them.",controls:[{name:`titleWidget`,label:`Title widget`,type:J.SELECT,options:[{label:`The window title`,value:`none`},{label:`A custom centre widget`,value:`custom`}],defaultValue:`none`},{name:`showTitleButtons`,label:`Title buttons`,type:J.BOOLEAN,defaultValue:!0},{name:`decorationLayout`,label:`Decoration layout`,type:J.SELECT,options:[{label:`GNOME (menu:minimize,maximize,close)`,value:`menu:minimize,maximize,close`},{label:`Close only`,value:`:close`},{label:`macOS (icon:minimize,maximize)`,value:`icon:minimize,maximize`}],defaultValue:`menu:minimize,maximize,close`}]};var of=__exportAll$1({GtkHeaderBarStories:()=>cf,GtkHeaderBarStory:()=>sf}),sf=class GtkHeaderBarStory extends X{_bar=null;_titleLabel=null;static{o.registerClass({GTypeName:`AdwStorybookGtkHeaderBar`},GtkHeaderBarStory)}constructor(){super(X.fromMeta(GtkHeaderBarStory.getMetadata(),`Default`))}static getMetadata(){return{...af,component:n.HeaderBar.$gtype}}initialize(){this._bar=new n.HeaderBar;let e=new n.Button({icon_name:`open-menu-symbolic`});e.add_css_class(`flat`),this._bar.pack_end(e);let t=new n.Button({icon_name:`system-search-symbolic`});t.add_css_class(`flat`),this._bar.pack_end(t);let r=new n.Button({label:`‹`});r.add_css_class(`flat`),this._bar.pack_start(r),this._titleLabel=new n.Label({label:`Mailboxes`,css_classes:[`title`]}),this.addContent(this._bar),this._apply()}updateArgs(e){this._apply()}_apply(){this._bar&&(this._bar.decoration_layout=this.args.decorationLayout,this._bar.show_title_buttons=this.args.showTitleButtons,this.args.titleWidget===`custom`?this._bar.title_widget=this._titleLabel:this._bar.title_widget=null)}};o.type_ensure(sf.$gtype);const cf={stories:[sf]},lf={title:`Windows/Window`,description:"Gtk.Window — a toplevel with a `titlebar` and a `child`, and the properties that decide what its frame shows: `decorated`, `deletable`, `resizable`, `maximized` and `hide-on-close`. The BROWSER replica of this one is an IN-PAGE FRAME, not a toplevel: a browser document has no window to map. The story therefore cancels `close-request`, which is what an application does when it wants to keep the window.",controls:[{name:`title`,label:`Title`,type:J.TEXT,defaultValue:`Documents`},{name:`decorated`,label:`Decorated`,type:J.BOOLEAN,defaultValue:!0},{name:`deletable`,label:`Deletable`,type:J.BOOLEAN,defaultValue:!0},{name:`resizable`,label:`Resizable`,type:J.BOOLEAN,defaultValue:!0},{name:`maximized`,label:`Maximized`,type:J.BOOLEAN,defaultValue:!1},{name:`modal`,label:`Modal`,type:J.BOOLEAN,defaultValue:!1},{name:`hideOnClose`,label:`Hide on close`,type:J.BOOLEAN,defaultValue:!0}]};var uf=__exportAll$1({GtkWindowStories:()=>ff,GtkWindowStory:()=>df}),df=class GtkWindowStory extends X{_window=null;static{o.registerClass({GTypeName:`AdwStorybookGtkWindow`},GtkWindowStory)}constructor(){super(X.fromMeta(GtkWindowStory.getMetadata(),`Default`))}static getMetadata(){return{...lf,component:n.Window.$gtype}}initialize(){this._window=new n.Window({default_width:460,default_height:280});let e=new n.HeaderBar;this._window.set_titlebar(e);let t=new n.Box({orientation:n.Orientation.VERTICAL,spacing:12,margin_top:12,margin_start:12});t.append(new n.Label({label:`The frame above is a Gtk.HeaderBar.`,css_classes:[`dimmed`]})),this._window.set_child(t),this.addContent(this._window),this._apply()}updateArgs(e){this._apply()}_apply(){this._window&&(this._window.title=this.args.title,this._window.decorated=this.args.decorated,this._window.deletable=this.args.deletable,this._window.resizable=this.args.resizable,this._window.maximized=this.args.maximized,this._window.modal=this.args.modal,this._window.hide_on_close=this.args.hideOnClose)}};o.type_ensure(df.$gtype);const ff={stories:[df]},pf={title:`Windows/Window Controls`,description:"Gtk.WindowControls — one SIDE of the window frame controls, and the decision table behind them. The decoration layout is split on the first colon; each token of the selected half builds one button or none, because `icon` and `minimize` want a SOVEREIGN window, `maximize` wants a resizable one and `close` wants a deletable one. `empty` is the property that says none of them did.",controls:[{name:`side`,label:`Side`,type:J.SELECT,options:[{label:`Start`,value:`start`},{label:`End`,value:`end`}],defaultValue:`start`},{name:`decorationLayout`,label:`Decoration layout`,type:J.SELECT,options:[{label:`GNOME (menu:minimize,maximize,close)`,value:`menu:minimize,maximize,close`},{label:`Windows (icon:minimize,maximize,close)`,value:`icon:minimize,maximize,close`},{label:`Close only`,value:`:close`},{label:`macOS (icon:minimize,maximize)`,value:`icon:minimize,maximize`}],defaultValue:`menu:minimize,maximize,close`},{name:`resizable`,label:`Resizable window`,type:J.BOOLEAN,defaultValue:!0},{name:`maximized`,label:`Maximized window`,type:J.BOOLEAN,defaultValue:!1},{name:`modal`,label:`Modal window`,type:J.BOOLEAN,defaultValue:!1}]};var mf=__exportAll$1({WindowControlsStories:()=>gf,WindowControlsStory:()=>hf}),hf=class WindowControlsStory extends X{_window=null;_controls=null;static{o.registerClass({GTypeName:`AdwStorybookWindowControls`},WindowControlsStory)}constructor(){super(X.fromMeta(WindowControlsStory.getMetadata(),`Default`))}static getMetadata(){return{...pf,component:n.WindowControls.$gtype}}initialize(){this._window=new n.Window({title:`Documents`,default_width:420,default_height:220});let e=new n.Box({orientation:n.Orientation.VERTICAL,spacing:8});e.append(new n.Label({label:`The bar draws nothing outside a window.`,css_classes:[`dimmed`]})),this._window.set_child(e),this._controls=new n.WindowControls,this._window.set_titlebar(this._controls),this.addContent(this._window),this._apply()}updateArgs(e){this._apply()}_apply(){if(!this._window||!this._controls)return;let e=this.args.side===`end`?n.PackType.END:n.PackType.START;this._controls.side=e,this._controls.decoration_layout=this.args.decorationLayout,this._window.resizable=this.args.resizable,this._window.maximized=this.args.maximized,this._window.modal=this.args.modal}};o.type_ensure(hf.$gtype);const gf={stories:[hf]};await runStorybook({applicationId:`org.gjsify.AdwaitaStorybook`,title:`Adwaita Storybook`,stories:collectStoryModules([yn,Cn,On,Mn,In,Vn,Kn,Zn,nr,or,dr,gr,br,wr,Or,Mr,Ir,Br,Wr,Jr,Qr,ni,oi,ui,mi,vi,Si,Ei,ji,Fi,Bi,Ki,Xi,ta,aa,la,pa,_a,xa,Ta,Aa,Fa,za,Ua,qa,Za,to,ao,lo,go,xo,Eo,jo,Fo,zo,Wo,Jo,es,is,cs,fs,gs,bs,ws,Os,Ms,Is,Bs,Ws,Js,Qs,rc,sc,hc,yc,Cc,Oc,Nc,Rc,Kc,Zc,el,ol,dl,hl,bl,wl,Ol,Ml,Il,Hl,Kl,Xl,eu,iu,cu,fu,gu,bu,wu,Ou,Mu,Ru,Wu,Yu,td,sd,pd,vd,Cd,Dd,Md,Rd,Ud,qd,Zd,tf,of,uf,mf])});const _f=globalThis.process,vf=Number(_f?.exitCode);Number.isInteger(vf)&&vf!==0&&_f.exit(vf);
|
|
350
|
+
Built with meson 1.6`}),t=Bi[this.args.licenseType]??n.License.UNKNOWN;t===n.License.CUSTOM&&e.set_license(`Permission is hereby granted, free of charge, to any person obtaining a copy…`),e.set_license_type(t),this.args.withCredits&&(e.set_authors([`Ada Lovelace <ada@example.org>`,`Grace Hopper`]),e.set_documenters([`Barbara Liskov`]),e.set_artists([`Margaret Hamilton`]),e.set_translator_credits(`Alan Turing
|
|
351
|
+
Katherine Johnson`),e.add_credit_section(`Reviewed by`,[`Tony Hoare <tony@example.org>`])),e.present()}updateArgs(e){}};o.type_ensure(Vi.$gtype);const Hi={stories:[Vi]},Ui={title:`Feedback/Page Setup Dialog`,description:`Gtk.PageSetupUnixDialog — the page setup dialog Unix platforms have instead of a native one: a printer and a paper size, the chosen sheet's size and margins, and four orientation buttons.`,controls:[{name:`paperSize`,label:`Paper size`,type:Y.SELECT,options:[{label:`US Letter`,value:`na_letter`},{label:`US Legal`,value:`na_legal`},{label:`A4`,value:`iso_a4`},{label:`A5`,value:`iso_a5`},{label:`B5`,value:`iso_b5`},{label:`A3`,value:`iso_a3`}],defaultValue:`iso_a4`},{name:`orientation`,label:`Orientation`,type:Y.SELECT,options:[{label:`Portrait`,value:`portrait`},{label:`Landscape`,value:`landscape`},{label:`Reverse portrait`,value:`reverse-portrait`},{label:`Reverse landscape`,value:`reverse-landscape`}],defaultValue:`landscape`}]};var Wi=__exportAll$1({PageSetupUnixDialogStories:()=>Ji,PageSetupUnixDialogStory:()=>Ki});const Gi={portrait:n.PageOrientation.PORTRAIT,landscape:n.PageOrientation.LANDSCAPE,"reverse-portrait":n.PageOrientation.REVERSE_PORTRAIT,"reverse-landscape":n.PageOrientation.REVERSE_LANDSCAPE};var Ki=class PageSetupUnixDialogStory extends Z{_button=null;static{o.registerClass({GTypeName:`AdwStorybookPageSetupUnixDialog`},PageSetupUnixDialogStory)}constructor(){super(Z.fromMeta(PageSetupUnixDialogStory.getMetadata(),`Default`))}static getMetadata(){return{...Ui,component:n.PageSetupUnixDialog.$gtype}}initialize(){this._button=new n.Button({label:`Page Setup…`,halign:n.Align.CENTER,valign:n.Align.CENTER}),this._button.add_css_class(`pill`),this._button.add_css_class(`suggested-action`),this._button.connect(`clicked`,()=>this._present()),this.addContent(this._button)}_present(){let e=n.PageSetupUnixDialog.new(`Page Setup`,null),t=new n.PageSetup;t.set_paper_size_and_default_margins(n.PaperSize.new(this.args.paperSize)),t.set_orientation(Gi[this.args.orientation]??n.PageOrientation.PORTRAIT),e.set_page_setup(t),e.present()}updateArgs(e){}};const qi=`PageSetupUnixDialog`in n;qi&&o.type_ensure(Ki.$gtype);const Ji={stories:[Ki].filter(()=>qi)},Yi={title:`Feedback/Preferences Dialog`,description:`Adw.PreferencesDialog — a preferences window with a page, a group and a handful of boxed-list rows.`,controls:[{name:`pageTitle`,label:`Page title`,type:Y.TEXT,defaultValue:`General`},{name:`groupTitle`,label:`Group title`,type:Y.TEXT,defaultValue:`Appearance`}]};var Xi=__exportAll$1({PreferencesDialogStories:()=>Qi,PreferencesDialogStory:()=>Zi}),Zi=class PreferencesDialogStory extends Z{_button=null;static{o.registerClass({GTypeName:`AdwStorybookPreferencesDialog`},PreferencesDialogStory)}constructor(){super(Z.fromMeta(PreferencesDialogStory.getMetadata(),`Default`))}static getMetadata(){return{...Yi,component:s.PreferencesDialog.$gtype}}initialize(){this._button=new n.Button({label:`Show dialog`,halign:n.Align.CENTER,valign:n.Align.CENTER}),this._button.add_css_class(`pill`),this._button.add_css_class(`suggested-action`),this._button.connect(`clicked`,()=>this._present()),this.addContent(this._button)}_present(){let e=new s.PreferencesDialog,t=new s.PreferencesPage({title:this.args.pageTitle,iconName:`preferences-system-symbolic`}),r=new s.PreferencesGroup({title:this.args.groupTitle,description:`Control how the application looks and behaves.`});r.add(new s.SwitchRow({title:`Dark style`,subtitle:`Use a dark colour scheme`,active:!0})),r.add(new s.ComboRow({title:`Accent colour`,model:new n.StringList({strings:[`Blue`,`Teal`,`Green`,`Orange`,`Purple`]}),selected:0})),r.add(new s.SpinRow({title:`Font size`,adjustment:new n.Adjustment({lower:8,upper:24,value:12,stepIncrement:1,pageIncrement:4})})),t.add(r),e.add(t),e.present(this)}updateArgs(e){}};o.type_ensure(Zi.$gtype);const Qi={stories:[Zi]},$i={title:`Feedback/Print Dialog`,description:`Gtk.PrintUnixDialog — the Unix print dialog: seven notebook pages over a printer list, a Range and a Copies group on General, the sheet preview on Page Setup, and the Preview / Cancel / Print action area.`,controls:[{name:`capabilities`,label:`Capabilities`,type:Y.TEXT,defaultValue:`copies|collate|reverse|scale|preview|page-set`},{name:`range`,label:`Range`,type:Y.SELECT,options:[{label:`All Pages`,value:`all`},{label:`Current Page`,value:`current`},{label:`Selection`,value:`selection`},{label:`Pages`,value:`pages`}],defaultValue:`all`},{name:`copies`,label:`Copies`,type:Y.NUMBER,defaultValue:2}]};var ea=__exportAll$1({PrintUnixDialogStories:()=>ra,PrintUnixDialogStory:()=>ta});const capabilities=()=>({collate:n.PrintCapabilities.COLLATE,copies:n.PrintCapabilities.COPIES,"generate-pdf":n.PrintCapabilities.GENERATE_PDF,"generate-ps":n.PrintCapabilities.GENERATE_PS,"number-up":n.PrintCapabilities.NUMBER_UP,"number-up-layout":n.PrintCapabilities.NUMBER_UP_LAYOUT,"page-set":n.PrintCapabilities.PAGE_SET,preview:n.PrintCapabilities.PREVIEW,reverse:n.PrintCapabilities.REVERSE,scale:n.PrintCapabilities.SCALE});var ta=class PrintUnixDialogStory extends Z{_button=null;static{o.registerClass({GTypeName:`AdwStorybookPrintUnixDialog`},PrintUnixDialogStory)}constructor(){super(Z.fromMeta(PrintUnixDialogStory.getMetadata(),`Default`))}static getMetadata(){return{...$i,component:n.PrintUnixDialog.$gtype}}initialize(){this._button=new n.Button({label:`Print…`,halign:n.Align.CENTER,valign:n.Align.CENTER}),this._button.add_css_class(`pill`),this._button.add_css_class(`suggested-action`),this._button.connect(`clicked`,()=>this._present()),this.addContent(this._button)}_present(){let e=n.PrintUnixDialog.new(`Print`,null),t=capabilities(),r=String(this.args.capabilities).split(`|`).map(e=>t[e.trim()]??0).reduce((e,t)=>e|t,0);e.set_manual_capabilities(r),e.set_current_page(2),e.set_support_selection(!0),e.set_has_selection(!0);let i=new n.PrintSettings;i.set_n_copies(Number(this.args.copies)),i.set_collate(this.args.range===`all`),i.set_print_pages(this.args.range===`current`?n.PrintPages.CURRENT:n.PrintPages.ALL),e.set_settings(i),e.present()}updateArgs(e){}};const na=`PrintUnixDialog`in n;na&&o.type_ensure(ta.$gtype);const ra={stories:[ta].filter(()=>na)},ia={title:`Feedback/Shortcuts Dialog`,description:`Adw.ShortcutsDialog — the window that lists an application’s keyboard shortcuts, one titled section at a time.`,controls:[{name:`title`,label:`Title`,type:Y.TEXT,defaultValue:`Keyboard Shortcuts`}]};var aa=__exportAll$1({ShortcutsDialogStories:()=>sa,ShortcutsDialogStory:()=>oa}),oa=class ShortcutsDialogStory extends Z{_button=null;static{o.registerClass({GTypeName:`AdwStorybookShortcutsDialog`},ShortcutsDialogStory)}constructor(){super(Z.fromMeta(ShortcutsDialogStory.getMetadata(),`Default`))}static getMetadata(){return{...ia,component:s.ShortcutsDialog.$gtype}}initialize(){this._button=new n.Button({label:`Show dialog`,halign:n.Align.CENTER,valign:n.Align.CENTER}),this._button.add_css_class(`pill`),this._button.add_css_class(`suggested-action`),this._button.connect(`clicked`,()=>this._present()),this.addContent(this._button)}_present(){let e=new s.ShortcutsSection({title:`General`});e.add(new s.ShortcutsItem({title:`Open Menu`,accelerator:`F10`})),e.add(new s.ShortcutsItem({title:`Preferences`,action_name:`app.preferences`})),e.add(new s.ShortcutsItem({title:`Quit`,accelerator:`<Control>q`}));let t=new s.ShortcutsSection;t.add(new s.ShortcutsItem({title:`Move Tab Left`,accelerator:`<Shift><Control>Page_Up`,direction:n.TextDirection.LTR})),t.add(new s.ShortcutsItem({title:`Move Tab Left`,accelerator:`<Shift><Control>Page_Up`,direction:n.TextDirection.RTL}));let r=new s.ShortcutsDialog({title:this.args.title});r.add(e),r.add(t),r.present(this)}updateArgs(e){}};o.type_ensure(oa.$gtype);const sa={stories:[oa]},ca={title:`Feedback/Toast`,description:`Adw.Toast — a transient notification, with an optional action button, shown over an Adw.ToastOverlay.`,controls:[{name:`title`,label:`Toast text`,type:Y.TEXT,defaultValue:`File moved to Trash`},{name:`timeout`,label:`Timeout (s)`,type:Y.NUMBER,min:0,max:10,step:1,defaultValue:3},{name:`hasButton`,label:`Action button`,type:Y.BOOLEAN,defaultValue:!0},{name:`buttonLabel`,label:`Button label`,type:Y.TEXT,defaultValue:`Undo`}]};var la=__exportAll$1({ToastStories:()=>da,ToastStory:()=>ua}),ua=class ToastStory extends Z{_overlay=null;static{o.registerClass({GTypeName:`AdwStorybookToast`},ToastStory)}constructor(){super(Z.fromMeta(ToastStory.getMetadata(),`Default`))}static getMetadata(){return{...ca,component:s.Toast.$gtype}}initialize(){let e=new n.Button({label:`Show toast`,halign:n.Align.CENTER,valign:n.Align.CENTER});e.add_css_class(`pill`),e.add_css_class(`suggested-action`),e.connect(`clicked`,()=>this._showToast()),this._overlay=new s.ToastOverlay({child:e,widthRequest:360,heightRequest:220}),this.addContent(this._overlay)}_showToast(){if(!this._overlay)return;let e=new s.Toast({title:this.args.title,timeout:this.args.timeout});this.args.hasButton&&(e.buttonLabel=this.args.buttonLabel),this._overlay.add_toast(e)}updateArgs(e){}};o.type_ensure(ua.$gtype);const da={stories:[ua]},fa={title:`Layout/Application Window`,description:`Adw.ApplicationWindow — an Adw.Window that belongs to a GtkApplication, plus that application’s menubar.`,controls:[{name:`title`,label:`Title`,type:Y.TEXT,defaultValue:`Text Editor`},{name:`subtitle`,label:`Subtitle`,type:Y.TEXT,defaultValue:`notes.md`},{name:`showMenubar`,label:`Show menubar`,type:Y.BOOLEAN,defaultValue:!0}]};var pa=__exportAll$1({ApplicationWindowStories:()=>ha,ApplicationWindowStory:()=>ma}),ma=class ApplicationWindowStory extends Z{_window=null;_title=null;_toolbarView=null;_menubar=null;static{o.registerClass({GTypeName:`AdwStorybookApplicationWindow`},ApplicationWindowStory)}constructor(){super(Z.fromMeta(ApplicationWindowStory.getMetadata(),`Default`))}static getMetadata(){return{...fa,component:s.ApplicationWindow.$gtype}}initialize(){this._title=new s.WindowTitle({title:this.args.title,subtitle:this.args.subtitle});let e=new s.HeaderBar({titleWidget:this._title,widthRequest:460}),t=new n.Button({iconName:`go-previous-symbolic`});t.add_css_class(`flat`),e.pack_start(t),this._toolbarView=new s.ToolbarView,this._toolbarView.add_top_bar(e),this._toolbarView.content=new s.StatusPage({title:`Your Library`,description:`Content sits between the toolbars and scrolls independently of them.`});let i=new r.Menu,o=new r.Menu;o.append(`New Window`,`app.new-window`),o.append(`Quit`,`app.quit`),i.append_section(null,o);let c=new r.Menu;c.append(`Keyboard Shortcuts`,`app.shortcuts`),c.append(`About`,`app.about`),i.append_section(null,c),this._menubar=new n.PopoverMenuBar({menu_model:i}),this.args.showMenubar&&this._toolbarView.add_top_bar(this._menubar),this._window=new s.ApplicationWindow({content:this._toolbarView,show_menubar:this.args.showMenubar}),this._window.set_default_size(460,260),this.addContent(this._window)}updateArgs(e){if(!this._title||!this._window||!this._toolbarView||!this._menubar)return;this._title.title=this.args.title,this._title.subtitle=this.args.subtitle,this._window.show_menubar=this.args.showMenubar;let t=this.args.showMenubar;t&&this._menubar.get_parent()===null&&this._toolbarView.add_top_bar(this._menubar),!t&&this._menubar.get_parent()!==null&&this._toolbarView.remove(this._menubar)}};o.type_ensure(ma.$gtype);const ha={stories:[ma]},ga={title:`Layout/Aspect Frame`,description:`Gtk.AspectFrame — one child, given a width/height ratio and a place in the space left over. obey-child is TRUE by default and takes the ratio from the child itself, so the story starts with it FALSE or the ratio control would be inert.`,controls:[{name:`ratio`,label:`Ratio`,type:Y.RANGE,min:.5,max:3,step:.25,defaultValue:2},{name:`xalign`,label:`Xalign`,type:Y.RANGE,min:0,max:1,step:.5,defaultValue:.5},{name:`yalign`,label:`Yalign`,type:Y.RANGE,min:0,max:1,step:.5,defaultValue:.5},{name:`obeyChild`,label:`Obey child`,type:Y.BOOLEAN,defaultValue:!1}]};var _a=__exportAll$1({AspectFrameStories:()=>ya,AspectFrameStory:()=>va}),va=class AspectFrameStory extends Z{_frame=null;static{o.registerClass({GTypeName:`AdwStorybookAspectFrame`},AspectFrameStory)}constructor(){super(Z.fromMeta(AspectFrameStory.getMetadata(),`Default`))}static getMetadata(){return{...ga,component:n.AspectFrame.$gtype}}initialize(){this._frame=new n.AspectFrame({hexpand:!0,valign:n.Align.CENTER,width_request:320,height_request:180});let e=new n.Label({label:`The frame gives this child the ratio above, and puts it where xalign and yalign say.`});e.set_margin_top(12),e.set_margin_bottom(12),e.set_margin_start(12),e.set_margin_end(12),e.set_vexpand(!0),this._frame.set_child(e),this._apply(),this.addContent(this._frame)}updateArgs(e){this._apply()}_apply(){this._frame&&(this._frame.ratio=this.args.ratio,this._frame.xalign=this.args.xalign,this._frame.yalign=this.args.yalign,this._frame.obeyChild=this.args.obeyChild)}};o.type_ensure(va.$gtype);const ya={stories:[va]},ba={title:`Layout/Bin`,description:`Adw.Bin — a widget with exactly one child. It draws nothing of its own and gives the child its whole allocation; setting a new child replaces the old one.`,controls:[{name:`label`,label:`Child label`,type:Y.TEXT,defaultValue:`The one child of this bin.`},{name:`swap`,label:`Replace the child`,type:Y.BOOLEAN,defaultValue:!1}]};var xa=__exportAll$1({BinStories:()=>Ca,BinStory:()=>Sa}),Sa=class BinStory extends Z{_bin=null;static{o.registerClass({GTypeName:`AdwStorybookBin`},BinStory)}constructor(){super(Z.fromMeta(BinStory.getMetadata(),`Default`))}static getMetadata(){return{...ba,component:s.Bin.$gtype}}initialize(){this._bin=new s.Bin({widthRequest:320}),this._apply(),this.addContent(this._bin)}updateArgs(e){this._apply()}_apply(){if(!this._bin)return;let e=this.args.swap,t=new n.Label({label:e?`The first child was replaced, not stacked.`:this.args.label,wrap:!0,marginTop:18,marginBottom:18,marginStart:18,marginEnd:18}),r=new n.Box;r.add_css_class(`card`),r.append(t),this._bin.child=r}};o.type_ensure(Sa.$gtype);const Ca={stories:[Sa]},wa={title:`Layout/Breakpoint Bin`,description:`Adw.BreakpointBin gives breakpoints a home without a window: its one child rearranges itself at a size threshold, and the bin applies the LAST breakpoint whose condition holds. Resize the stage to see it.`,controls:[{name:`condition`,label:`Condition`,type:Y.SELECT,options:[{label:`max-width: 480px`,value:`max-width: 480px`},{label:`max-width: 320px`,value:`max-width: 320px`},{label:`max-height: 200px`,value:`max-height: 200px`}],defaultValue:`max-width: 480px`},{name:`narrowLabel`,label:`Narrow label`,type:Y.TEXT,defaultValue:`Narrow`},{name:`wideLabel`,label:`Wide label`,type:Y.TEXT,defaultValue:`Wide`}]};var Ta=__exportAll$1({BreakpointBinStories:()=>Da,BreakpointBinStory:()=>Ea}),Ea=class BreakpointBinStory extends Z{_bin=null;_label=null;_breakpoint=null;static{o.registerClass({GTypeName:`AdwStorybookBreakpointBin`},BreakpointBinStory)}constructor(){super(Z.fromMeta(BreakpointBinStory.getMetadata(),`Default`))}static getMetadata(){return{...wa,component:s.BreakpointBin.$gtype}}initialize(){this._label=new n.Label({label:this.args.wideLabel,ellipsize:3}),this._label.add_css_class(`title-1`),this._bin=new s.BreakpointBin,this._bin.set_size_request(150,60),this._bin.set_child(this._label),this._apply(),this.addContent(this._bin)}updateArgs(e){this._apply()}_apply(){if(!this._bin||!this._label)return;let e=s.BreakpointCondition.parse(this.args.condition);e!==null&&(this._breakpoint!==null&&this._bin.remove_breakpoint(this._breakpoint),this._breakpoint=s.Breakpoint.new(e),this._breakpoint.add_setter(this._label,`label`,this.args.narrowLabel),this._bin.add_breakpoint(this._breakpoint),this._label.label=this.args.wideLabel)}};o.type_ensure(Ea.$gtype);const Da={stories:[Ea]},Oa={title:`Layout/Center Box`,description:`Gtk.CenterBox — three widgets, pinned to the start, the centre and the end, with the space between them going to whichever child can grow. shrink-center-last decides who gives up space first.`,controls:[{name:`shrinkCenterLast`,label:`Shrink center last`,type:Y.BOOLEAN,defaultValue:!0},{name:`baselinePosition`,label:`Baseline position`,type:Y.SELECT,options:[{label:`Top`,value:`top`},{label:`Center`,value:`center`},{label:`Bottom`,value:`bottom`}],defaultValue:`center`}]};var ka=__exportAll$1({CenterBoxStories:()=>Ma,CenterBoxStory:()=>ja});const Aa={top:n.BaselinePosition.TOP,center:n.BaselinePosition.CENTER,bottom:n.BaselinePosition.BOTTOM};var ja=class CenterBoxStory extends Z{_box=null;static{o.registerClass({GTypeName:`AdwStorybookCenterBox`},CenterBoxStory)}constructor(){super(Z.fromMeta(CenterBoxStory.getMetadata(),`Default`))}static getMetadata(){return{...Oa,component:n.CenterBox.$gtype}}initialize(){this._box=new n.CenterBox({margin_top:12,margin_bottom:12,margin_start:12,margin_end:12}),this._box.set_start_widget(new n.Label({label:`Start`,hexpand:!1})),this._box.set_center_widget(new n.Label({label:`Centre`,hexpand:!0})),this._box.set_end_widget(new n.Label({label:`End`,hexpand:!1})),this._apply(),this.addContent(this._box)}updateArgs(e){this._apply()}_apply(){this._box&&(this._box.shrinkCenterLast=this.args.shrinkCenterLast,this._box.baselinePosition=Aa[this.args.baselinePosition])}};o.type_ensure(ja.$gtype);const Ma={stories:[ja]},Na={title:`Layout/Clamp Scrollable`,description:`Adw.ClampScrollable — a clamp whose child scrolls. The scrollbar stays at the edge of the window while the content is held at a maximum width.`,controls:[{name:`maximumSize`,label:`Maximum size`,type:Y.RANGE,min:200,max:600,step:10,defaultValue:400},{name:`tighteningThreshold`,label:`Tightening threshold`,type:Y.RANGE,min:100,max:600,step:10,defaultValue:300}]};var Pa=__exportAll$1({ClampScrollableStories:()=>La,ClampScrollableStory:()=>Ia});const Fa=Array.from({length:24},(e,t)=>`Line ${t+1}: held at the clamp's width while it scrolls.`);var Ia=class ClampScrollableStory extends Z{_clamp=null;static{o.registerClass({GTypeName:`AdwStorybookClampScrollable`},ClampScrollableStory)}constructor(){super(Z.fromMeta(ClampScrollableStory.getMetadata(),`Default`))}static getMetadata(){return{...Na,component:s.ClampScrollable.$gtype}}initialize(){let e=new n.TextView({editable:!1,cursorVisible:!1,topMargin:12,bottomMargin:12});e.buffer.set_text(Fa.join(`
|
|
352
|
+
`),-1),this._clamp=new s.ClampScrollable({maximumSize:this.args.maximumSize,tighteningThreshold:this.args.tighteningThreshold,child:e});let t=new n.ScrolledWindow({child:this._clamp,widthRequest:640,heightRequest:240});this.addContent(t)}updateArgs(e){this._clamp&&(this._clamp.maximumSize=this.args.maximumSize,this._clamp.tighteningThreshold=this.args.tighteningThreshold)}};o.type_ensure(Ia.$gtype);const La={stories:[Ia]},Ra={title:`Layout/Clamp`,description:`Adw.Clamp limits its child to a maximum width and centres it, tightening the layout as space shrinks.`,controls:[{name:`maximumSize`,label:`Maximum size`,type:Y.RANGE,min:200,max:600,step:10,defaultValue:400},{name:`tighteningThreshold`,label:`Tightening threshold`,type:Y.RANGE,min:100,max:600,step:10,defaultValue:300}]};var za=__exportAll$1({ClampStories:()=>Va,ClampStory:()=>Ba}),Ba=class ClampStory extends Z{_clamp=null;static{o.registerClass({GTypeName:`AdwStorybookClamp`},ClampStory)}constructor(){super(Z.fromMeta(ClampStory.getMetadata(),`Default`))}static getMetadata(){return{...Ra,component:s.Clamp.$gtype}}initialize(){let e=new n.Box({orientation:n.Orientation.HORIZONTAL,widthRequest:520});e.add_css_class(`card`);let t=new n.Label({label:`This content is clamped — it stops growing past the maximum size and stays centred.`,wrap:!0,xalign:0,hexpand:!0,marginTop:18,marginBottom:18,marginStart:18,marginEnd:18});e.append(t),this._clamp=new s.Clamp({maximumSize:this.args.maximumSize,tighteningThreshold:this.args.tighteningThreshold,child:e}),this.addContent(this._clamp)}updateArgs(e){this._clamp&&(this._clamp.maximumSize=this.args.maximumSize,this._clamp.tighteningThreshold=this.args.tighteningThreshold)}};o.type_ensure(Ba.$gtype);const Va={stories:[Ba]},Ha={title:`Layout/Expander`,description:"Gtk.Expander — a title the user clicks to reveal the child below it. The arrow is its own CSS node and `:checked` is set on THAT node, not on the widget, which is what libadwaita's _expanders.scss keys the glyph swap on. `use-underline` marks a mnemonic with `_`, and Alt+that character activates the expander.",controls:[{name:`expanded`,label:`Expanded`,type:Y.BOOLEAN,defaultValue:!1},{name:`useUnderline`,label:`Label marks a mnemonic`,type:Y.BOOLEAN,defaultValue:!1},{name:`label`,label:`Label`,type:Y.TEXT,defaultValue:`_More options`},{name:`resizeToplevel`,label:`Resize the toplevel`,type:Y.BOOLEAN,defaultValue:!1}]};var Ua=__exportAll$1({ExpanderStories:()=>Ga,ExpanderStory:()=>Wa}),Wa=class ExpanderStory extends Z{_expander=null;static{o.registerClass({GTypeName:`AdwStorybookExpander`},ExpanderStory)}constructor(){super(Z.fromMeta(ExpanderStory.getMetadata(),`Default`))}static getMetadata(){return{...Ha,component:n.Expander.$gtype}}initialize(){let e=new n.Box({orientation:n.Orientation.VERTICAL,spacing:6,margin_top:12,margin_bottom:12,margin_start:12,margin_end:12});for(let t of[`Notifications`,`Sound`,`Network`])e.append(new n.Label({label:t}));this._expander=new n.Expander,this._expander.set_child(e),this._apply(),this.addContent(this._expander)}updateArgs(e){this._apply()}_apply(){this._expander&&(this._expander.use_underline=this.args.useUnderline,this._expander.label=String(this.args.label),this._expander.resize_toplevel=this.args.resizeToplevel,this._expander.expanded=this.args.expanded)}};o.type_ensure(Wa.$gtype);const Ga={stories:[Wa]},Ka={title:`Layout/Fixed`,description:`Gtk.Fixed — children at pixel positions, which is the whole of its API: it declares no property of its own. The two offsets are the arguments of gtk_fixed_put().`,controls:[{name:`offsetX`,label:`Offset x`,type:Y.RANGE,min:0,max:80,step:4,defaultValue:24},{name:`offsetY`,label:`Offset y`,type:Y.RANGE,min:0,max:80,step:4,defaultValue:16}]};var qa=__exportAll$1({FixedStories:()=>Ya,FixedStory:()=>Ja}),Ja=class FixedStory extends Z{_fixed=null;_first=null;_second=null;static{o.registerClass({GTypeName:`AdwStorybookFixed`},FixedStory)}constructor(){super(Z.fromMeta(FixedStory.getMetadata(),`Default`))}static getMetadata(){return{...Ka,component:n.Fixed.$gtype}}initialize(){this._fixed=new n.Fixed,this._first=new n.Label({label:`at (x, y)`}),this._second=new n.Label({label:`at (x + 96, y + 40)`}),this._fixed.put(this._first,0,0),this._fixed.put(this._second,0,0),this._apply(),this.addContent(this._fixed)}updateArgs(e){this._apply()}_apply(){if(!this._fixed||!this._first||!this._second)return;let e=this.args.offsetX,t=this.args.offsetY;this._fixed.move(this._first,e,t),this._fixed.move(this._second,e+96,t+40)}};o.type_ensure(Ja.$gtype);const Ya={stories:[Ja]},Xa={title:`Layout/Frame`,description:`Gtk.Frame — a 1px border with a label embedded in its top edge. GTK draws the label as its own widget above the child, and label-xalign says where across the frame it sits.`,controls:[{name:`label`,label:`Label`,type:Y.TEXT,defaultValue:`Details`},{name:`labelXalign`,label:`Label xalign`,type:Y.RANGE,defaultValue:0,min:0,max:1,step:.5}]};var Za=__exportAll$1({FrameStories:()=>$a,FrameStory:()=>Qa}),Qa=class FrameStory extends Z{_frame=null;static{o.registerClass({GTypeName:`AdwStorybookFrame`},FrameStory)}constructor(){super(Z.fromMeta(FrameStory.getMetadata(),`Default`))}static getMetadata(){return{...Xa,component:n.Frame.$gtype}}initialize(){this._frame=new n.Frame({halign:n.Align.CENTER});let e=new n.Label({label:`A framed region: the label sits in the top edge of the border.`});e.set_margin_top(12),e.set_margin_bottom(12),e.set_margin_start(12),e.set_margin_end(12),this._frame.set_child(e),this._apply(),this.addContent(this._frame)}updateArgs(e){this._apply()}_apply(){this._frame&&(this._frame.label=this.args.label,this._frame.set_label_align(this.args.labelXalign))}};o.type_ensure(Qa.$gtype);const $a={stories:[Qa]},eo={title:`Layout/Grid`,description:`Gtk.Grid — a table of cells sized by what is in them, filled row by row. The two spacings are the gap between lines, the two homogeneous flags make every line the same, and a vertical grid attaches down the rows instead of across the columns.`,controls:[{name:`columnSpacing`,label:`Column spacing`,type:Y.RANGE,min:0,max:36,step:2,defaultValue:12},{name:`rowSpacing`,label:`Row spacing`,type:Y.RANGE,min:0,max:36,step:2,defaultValue:12},{name:`columnHomogeneous`,label:`Column homogeneous`,type:Y.BOOLEAN,defaultValue:!1},{name:`rowHomogeneous`,label:`Row homogeneous`,type:Y.BOOLEAN,defaultValue:!1},{name:`orientation`,label:`Orientation`,type:Y.SELECT,options:[{label:`Horizontal`,value:`horizontal`},{label:`Vertical`,value:`vertical`}],defaultValue:`horizontal`}]};var to=__exportAll$1({GridStories:()=>ro,GridStory:()=>no}),no=class GridStory extends Z{_grid=null;_cells=[];_orientation=null;static{o.registerClass({GTypeName:`AdwStorybookGrid`},GridStory)}constructor(){super(Z.fromMeta(GridStory.getMetadata(),`Default`))}static getMetadata(){return{...eo,component:n.Grid.$gtype}}initialize(){this._grid=new n.Grid({hexpand:!0,margin_top:12,margin_bottom:12,margin_start:12,margin_end:12});for(let e of[`Name`,`Value`,`Unit`,`editable`]){let t=new n.Label({label:e,hexpand:!0});t.set_margin_top(6),t.set_margin_bottom(6),t.set_margin_start(6),t.set_margin_end(6),this._cells.push(t)}this._attach(),this._apply(),this.addContent(this._grid)}updateArgs(e){this._apply()}_attach(){if(this._grid)for(let e of this._cells)this._grid.attach(e,-1,-1,1,1)}_apply(){if(!this._grid)return;let e=this.args.orientation===`vertical`?n.Orientation.VERTICAL:n.Orientation.HORIZONTAL;if(this._grid.columnSpacing=this.args.columnSpacing,this._grid.rowSpacing=this.args.rowSpacing,this._grid.columnHomogeneous=this.args.columnHomogeneous,this._grid.rowHomogeneous=this.args.rowHomogeneous,this._orientation!==null&&this._orientation!==e){for(let e of this._cells)this._grid.remove(e);this._attach()}this._grid.orientation=e,this._orientation=e}};o.type_ensure(no.$gtype);const ro={stories:[no]},io={title:`Layout/Header Bar`,description:`Adw.HeaderBar hosts a custom title widget with start and end controls — the standard top chrome of an Adwaita window.`,controls:[{name:`title`,label:`Title`,type:Y.TEXT,defaultValue:`Text Editor`},{name:`subtitle`,label:`Subtitle`,type:Y.TEXT,defaultValue:`notes.md`},{name:`showTitle`,label:`Show title`,type:Y.BOOLEAN,defaultValue:!0}]};var ao=__exportAll$1({HeaderBarStories:()=>so,HeaderBarStory:()=>oo}),oo=class HeaderBarStory extends Z{_headerBar=null;_title=null;static{o.registerClass({GTypeName:`AdwStorybookHeaderBar`},HeaderBarStory)}constructor(){super(Z.fromMeta(HeaderBarStory.getMetadata(),`Default`))}static getMetadata(){return{...io,component:s.HeaderBar.$gtype}}initialize(){this._title=new s.WindowTitle({title:this.args.title,subtitle:this.args.subtitle}),this._headerBar=new s.HeaderBar({titleWidget:this._title,showTitle:this.args.showTitle,widthRequest:460});let e=new n.Button({iconName:`go-previous-symbolic`});e.add_css_class(`flat`),this._headerBar.pack_start(e);let t=new r.Menu;t.append(`New Window`,`app.new-window`),t.append(`Preferences`,`app.preferences`),t.append(`About`,`app.about`);let i=new n.MenuButton({iconName:`open-menu-symbolic`,menuModel:t});i.add_css_class(`flat`),this._headerBar.pack_end(i),this.addContent(this._headerBar)}updateArgs(e){!this._headerBar||!this._title||(this._title.title=this.args.title,this._title.subtitle=this.args.subtitle,this._headerBar.showTitle=this.args.showTitle)}};o.type_ensure(oo.$gtype);const so={stories:[oo]},co={title:`Layout/Layout Slot`,description:`Adw.LayoutSlot is the named hole a layout of an Adw.MultiLayoutView leaves for a child: it takes the child whose id matches, and its visible property follows that child's. On its own it is a bin, which is what this story shows.`,controls:[{name:`label`,label:`Child title`,type:Y.TEXT,defaultValue:`Inbox`},{name:`visible`,label:`Child visible`,type:Y.BOOLEAN,defaultValue:!0}]};var lo=__exportAll$1({LayoutSlotStories:()=>fo,LayoutSlotStory:()=>uo}),uo=class LayoutSlotStory extends Z{_view=null;_slot=null;_child=null;static{o.registerClass({GTypeName:`AdwStorybookLayoutSlot`},LayoutSlotStory)}constructor(){super(Z.fromMeta(LayoutSlotStory.getMetadata(),`Default`))}static getMetadata(){return{...co,component:s.LayoutSlot.$gtype}}initialize(){this._slot=s.LayoutSlot.new(`primary`),this._child=new s.NavigationPage({title:this.args.label,tag:`primary`,child:new n.Label({label:`The child the view inserted here.`})}),this._view=new s.MultiLayoutView;let e=s.Layout.new(this._slot);e.name=`only`,this._view.add_layout(e),this._view.set_child(`primary`,this._child),this._apply(),this.addContent(this._view)}updateArgs(e){this._apply()}_apply(){this._child&&(this._child.title=this.args.label,this._child.visible=this.args.visible)}};o.type_ensure(uo.$gtype);const fo={stories:[uo]},po={title:`Layout/Multi Layout View`,description:`Adw.MultiLayoutView holds one set of children and several arrangements of them: each child has an id, each layout has slots with ids, and switching layouts re-inserts every child into the slot of the SAME id.`,controls:[{name:`layoutName`,label:`Layout`,type:Y.SELECT,options:[{label:`wide (split)`,value:`wide`},{label:`narrow (stacked)`,value:`narrow`}],defaultValue:`wide`},{name:`showDetails`,label:`Show the details pane`,type:Y.BOOLEAN,defaultValue:!0}]};var mo=__exportAll$1({MultiLayoutViewStories:()=>vo,MultiLayoutViewStory:()=>_o});const ho=`primary`,go=`secondary`;function page(e){let t=new n.ListBox({selectionMode:n.SelectionMode.NONE});for(let[n,r]of e)t.append(new s.ActionRow({title:n,subtitle:r}));return t}function slotPage(e){return new s.NavigationPage({title:e,child:s.LayoutSlot.new(e),tag:e})}function arrangement(e){let t=new s.NavigationSplitView({collapsed:e,minSidebarWidth:160});return t.sidebar=slotPage(go),t.content=slotPage(ho),t.set_size_request(420,220),t}var _o=class MultiLayoutViewStory extends Z{_view=null;_details=null;static{o.registerClass({GTypeName:`AdwStorybookMultiLayoutView`},MultiLayoutViewStory)}constructor(){super(Z.fromMeta(MultiLayoutViewStory.getMetadata(),`Default`))}static getMetadata(){return{...po,component:s.MultiLayoutView.$gtype}}initialize(){this._details=page([[`From`,`Adwaita List`],[`Subject`,`Resizing the window`]]),this._view=new s.MultiLayoutView;let e=s.Layout.new(arrangement(!1));e.name=`wide`,this._view.add_layout(e);let t=s.Layout.new(arrangement(!0));t.name=`narrow`,this._view.add_layout(t),this._view.set_child(ho,page([[`General`,`12 unread`],[`Starred`,`3 threads`]])),this._view.set_child(go,this._details),this._apply(),this.addContent(this._view)}updateArgs(e){this._apply()}_apply(){!this._view||!this._details||(this._details.visible=this.args.showDetails,this._view.layout_name=this.args.layoutName)}};o.type_ensure(_o.$gtype);const vo={stories:[_o]},yo={title:`Layout/Overlay`,description:`Gtk.Overlay — widgets stacked on top of one main child. The main child sizes the overlay; every other child is placed by its own halign/valign, which is what gtk_overlay_get_child_position reads and nothing else. Libadwaita ships no Adw.Overlay and gives the node no rule of its own — the .left/.right/.top/.bottom classes it puts on an edge-aligned child are the whole published contract.`,controls:[{name:`halign`,label:`Overlay halign`,type:Y.SELECT,options:[{label:`Fill (the default)`,value:`fill`},{label:`Start`,value:`start`},{label:`Center`,value:`center`},{label:`End`,value:`end`}],defaultValue:`end`},{name:`valign`,label:`Overlay valign`,type:Y.SELECT,options:[{label:`Fill (the default)`,value:`fill`},{label:`Start`,value:`start`},{label:`Center`,value:`center`},{label:`End`,value:`end`}],defaultValue:`end`},{name:`showLabel`,label:`Label the overlay`,type:Y.BOOLEAN,defaultValue:!0}]};var bo=__exportAll$1({OverlayStories:()=>Co,OverlayStory:()=>So});const xo={start:n.Align.START,center:n.Align.CENTER,end:n.Align.END};var So=class OverlayStory extends Z{_overlay=null;_main=null;_badge=null;static{o.registerClass({GTypeName:`AdwStorybookOverlay`},OverlayStory)}constructor(){super(Z.fromMeta(OverlayStory.getMetadata(),`Default`))}static getMetadata(){return{...yo,component:n.Overlay.$gtype}}initialize(){this._main=new n.Frame({width_request:260,height_request:160,margin_top:12,margin_bottom:12});let e=new n.Label({label:`Main child — its size is the overlay`});e.add_css_class(`dim-label`),this._main.set_child(e),this._badge=new n.Box({valign:n.Align.END,halign:n.Align.END}),this._badge.set_css_classes([`osd`,`flat`]),this._badge.append(new n.Label({label:`2`})),this._overlay=new n.Overlay,this._overlay.set_child(this._main),this._overlay.add_overlay(this._badge),this._apply(),this.addContent(this._overlay)}updateArgs(e){this._apply()}_apply(){if(!this._badge)return;let e=xo[String(this.args.halign)],t=xo[String(this.args.valign)];e===void 0?this._badge.halign=n.Align.FILL:this._badge.halign=e,t===void 0?this._badge.valign=n.Align.FILL:this._badge.valign=t,this._badge.visible=this.args.showLabel}};o.type_ensure(So.$gtype);const Co={stories:[So]},wo={title:`Layout/Paned`,description:"Gtk.Paned — two children either side of a divider the user drags. With both children resizable and no position set, GTK divides the paned in PROPORTION TO THE TWO SIZE REQUESTS rather than in half, and it draws the divider as the `separator` node a GtkPanedHandle carries. Libadwaita styles that node in _paned.scss: 1px, 5px when `wide-handle`, with the rule as an inset shadow rather than a fill.",controls:[{name:`orientation`,label:`Orientation`,type:Y.SELECT,options:[{label:`Horizontal`,value:`horizontal`},{label:`Vertical`,value:`vertical`}],defaultValue:`horizontal`},{name:`wideHandle`,label:`Wide handle`,type:Y.BOOLEAN,defaultValue:!1},{name:`resizeStartChild`,label:`Resize the first child`,type:Y.BOOLEAN,defaultValue:!0},{name:`resizeEndChild`,label:`Resize the second child`,type:Y.BOOLEAN,defaultValue:!0},{name:`shrinkStartChild`,label:`The first child may shrink`,type:Y.BOOLEAN,defaultValue:!0},{name:`position`,label:`Position (0 = derive)`,type:Y.NUMBER,min:-1,max:400,step:1,defaultValue:-1}]};var To=__exportAll$1({PanedStories:()=>Do,PanedStory:()=>Eo});function pane(e,t){let r=new n.Box({orientation:n.Orientation.VERTICAL,spacing:4,margin_top:12,margin_bottom:12,margin_start:12,margin_end:12});r.append(new n.Label({label:e}));let i=new n.Label({label:`${t}px of size request`});return i.add_css_class(`dim-label`),r.append(i),r}var Eo=class PanedStory extends Z{_paned=null;static{o.registerClass({GTypeName:`AdwStorybookPaned`},PanedStory)}constructor(){super(Z.fromMeta(PanedStory.getMetadata(),`Default`))}static getMetadata(){return{...wo,component:n.Paned.$gtype}}initialize(){this._paned=new n.Paned({orientation:n.Orientation.HORIZONTAL}),this._paned.set_start_child(pane(`First child`,100)),this._paned.set_end_child(pane(`Second child`,300)),this._paned.set_size_request(400,140),this._apply(),this.addContent(this._paned)}updateArgs(e){this._apply()}_apply(){this._paned&&(this._paned.orientation=this.args.orientation===`vertical`?n.Orientation.VERTICAL:n.Orientation.HORIZONTAL,this._paned.wide_handle=this.args.wideHandle,this._paned.resize_start_child=this.args.resizeStartChild,this._paned.resize_end_child=this.args.resizeEndChild,this._paned.shrink_start_child=this.args.shrinkStartChild,this._paned.position=Number(this.args.position))}};o.type_ensure(Eo.$gtype);const Do={stories:[Eo]},Oo=[{label:`Cut`},{label:`Copy`},{label:`Paste`},{label:`Delete`,accel:`<Shift>Delete`}],ko={title:`Layout/Popover Bin`,description:'Gtk.PopoverBin — GTK 4.22’s one-child container with a popover, for the place where "any part of this window can offer a menu" is the answer. `menu-model` builds the popover for you, and `handle-input` is what turns a right click or a long press into a popup — a plain click still reaches the child.',controls:[{name:`handleInput`,label:`Right click / long press opens`,type:Y.BOOLEAN,defaultValue:!0}]};var Ao=__exportAll$1({PopoverBinStories:()=>Mo,PopoverBinStory:()=>jo}),jo=class PopoverBinStory extends Z{_bin=null;_list=null;static{o.registerClass({GTypeName:`AdwStorybookPopoverBin`},PopoverBinStory)}constructor(){super(Z.fromMeta(PopoverBinStory.getMetadata(),`Default`))}static getMetadata(){return{...ko,component:n.PopoverBin.$gtype}}initialize(){this._list=new n.ListBox({selectionMode:n.SelectionMode.SINGLE});for(let e of[`Documents`,`Downloads`,`Pictures`])this._list.append(new n.ListBoxRow({child:new n.Label({label:e})}));this._bin=new n.PopoverBin({child:this._list}),this._apply(),this.addContent(this._bin)}updateArgs(e){this._apply()}_buildMenu(){let e=new r.Menu;for(let t of Oo)e.append(t.label,`app.${t.label.toLowerCase().replace(/[^a-z0-9]+/g,`-`)}`);return e}_apply(){this._bin&&(this._bin.menuModel=this._buildMenu(),this._bin.handleInput=this.args.handleInput)}};o.type_ensure(jo.$gtype);const Mo={stories:[jo]},No=[{label:`New Window`,accel:`<Control>N`},{section:[{label:`Cut`},{label:`Copy`},{label:`Paste`}],label:`Edit`},{label:`Open With`,submenu:[{label:`Text Editor`},{label:`Web Browser`},{label:`Terminal`}]}],Po={title:`Layout/Popover Menu`,description:"Gtk.PopoverMenu — a Gtk.Popover whose contents are a menu model instead of a child widget. A submenu swaps the page of the ONE surface rather than opening a second popup beside it, which is why the open page is a named one (`visible-submenu`).",controls:[{name:`menuTitle`,label:`Heading`,type:Y.TEXT,defaultValue:`Document`},{name:`position`,label:`Position`,type:Y.SELECT,options:[{label:`Bottom`,value:`bottom`},{label:`Top`,value:`top`},{label:`Start`,value:`start`},{label:`End`,value:`end`}],defaultValue:`bottom`},{name:`align`,label:`Align`,type:Y.SELECT,options:[{label:`Start`,value:`start`},{label:`End`,value:`end`}],defaultValue:`start`},{name:`autohide`,label:`Dismiss on outside click`,type:Y.BOOLEAN,defaultValue:!0}]};var Fo=__exportAll$1({PopoverMenuStories:()=>Lo,PopoverMenuStory:()=>Io});const actionOf=e=>`app.${e.toLowerCase().replace(/[^a-z0-9]+/g,`-`)}`;var Io=class PopoverMenuStory extends Z{_anchor=null;_popover=null;static{o.registerClass({GTypeName:`AdwStorybookPopoverMenu`},PopoverMenuStory)}constructor(){super(Z.fromMeta(PopoverMenuStory.getMetadata(),`Default`))}static getMetadata(){return{...Po,component:n.PopoverMenu.$gtype}}initialize(){this._anchor=new n.Button({label:`Open menu`,halign:n.Align.CENTER}),this._apply(),this.addContent(this._anchor)}updateArgs(e){this._apply()}_buildMenu(e){let t=new r.Menu,n=[];for(let e of No){if(`submenu`in e){let n=new r.Menu;for(let t of e.submenu)n.append(t.label,actionOf(t.label));t.append_submenu(e.label,n);continue}if(`section`in e){let n=new r.Menu;for(let t of e.section)n.append(t.label,actionOf(t.label));t.append_section(`Edit`,n);continue}n.push(e.label)}if(e.length>0){let i=new r.Menu;for(let e of n)i.append(e,actionOf(e));t.append_section(e,i)}else for(let e of n)t.append(e,actionOf(e));return t}_apply(){if(!this._anchor)return;let e=this._popover;this._popover=n.PopoverMenu.new_from_model(this._buildMenu(this.args.menuTitle)),this._popover.set_parent(this._anchor),e?.unparent();let t={bottom:n.PositionType.BOTTOM,top:n.PositionType.TOP,start:n.PositionType.LEFT,end:n.PositionType.RIGHT};this._popover.position=t[this.args.position]??n.PositionType.BOTTOM,this._anchor&&(this._anchor.halign=this.args.align===`end`?n.Align.END:n.Align.START),this._popover.autohide=this.args.autohide}};o.type_ensure(Io.$gtype);const Lo={stories:[Io]},Ro={title:`Layout/Popover`,description:"Gtk.Popover — the bubble-like surface. No model and no menu: it holds whatever widget you put in it, and everything here is about WHERE it appears and WHEN it goes away. `autohide` off is entry completion: the list follows the typing and the caret never leaves.",controls:[{name:`position`,label:`Position`,type:Y.SELECT,options:[{label:`Bottom`,value:`bottom`},{label:`Top`,value:`top`},{label:`Start`,value:`start`},{label:`End`,value:`end`}],defaultValue:`bottom`},{name:`align`,label:`Align`,type:Y.SELECT,options:[{label:`Start`,value:`start`},{label:`End`,value:`end`}],defaultValue:`start`},{name:`autohide`,label:`Dismiss on outside click`,type:Y.BOOLEAN,defaultValue:!0}]};var zo=__exportAll$1({PopoverStories:()=>Vo,PopoverStory:()=>Bo}),Bo=class PopoverStory extends Z{_anchor=null;_popover=null;static{o.registerClass({GTypeName:`AdwStorybookPopover`},PopoverStory)}constructor(){super(Z.fromMeta(PopoverStory.getMetadata(),`Default`))}static getMetadata(){return{...Ro,component:n.Popover.$gtype}}initialize(){let e=new n.Box({orientation:n.Orientation.VERTICAL,spacing:6});e.append(new n.Label({label:`Anything you like`})),e.append(new n.Label({label:`in here`})),this._anchor=new n.Button({label:`Show popover`,halign:n.Align.CENTER}),this._popover=new n.Popover({child:e}),this._popover.set_parent(this._anchor),this._apply(),this.addContent(this._anchor)}updateArgs(e){this._apply()}_apply(){if(!this._popover)return;let e={bottom:n.PositionType.BOTTOM,top:n.PositionType.TOP,start:n.PositionType.LEFT,end:n.PositionType.RIGHT};this._popover.position=e[this.args.position]??n.PositionType.BOTTOM,this._anchor&&(this._anchor.halign=this.args.align===`end`?n.Align.END:n.Align.START),this._popover.autohide=this.args.autohide}};o.type_ensure(Bo.$gtype);const Vo={stories:[Bo]},Ho={title:`Layout/Revealer`,description:`Gtk.Revealer — shows and hides its child with an animation. The transition is one of fourteen nicks and it is not only an opacity change: a slide scales the box along one axis while allocating the child at its UNSCALED size, and a swing folds it in with sin (π · pos / 2). Libadwaita styles no revealer node of its own, so everything here is GTK behaviour the browser element ports.`,controls:[{name:`transitionType`,label:`Transition`,type:Y.SELECT,options:[{label:`Slide down (the default)`,value:`slide-down`},{label:`Slide up`,value:`slide-up`},{label:`Slide left`,value:`slide-left`},{label:`Slide right`,value:`slide-right`},{label:`Crossfade`,value:`crossfade`},{label:`Fade + slide down`,value:`fade-slide-down`},{label:`Swing down (fold)`,value:`swing-down`},{label:`Swing right (fold)`,value:`swing-right`},{label:`None`,value:`none`}],defaultValue:`slide-down`},{name:`transitionDuration`,label:`Duration (ms)`,type:Y.RANGE,min:0,max:800,step:50,defaultValue:250},{name:`revealChild`,label:`Reveal`,type:Y.BOOLEAN,defaultValue:!0}]};var Uo=__exportAll$1({RevealerStories:()=>Ko,RevealerStory:()=>Go});const Wo={none:n.RevealerTransitionType.NONE,crossfade:n.RevealerTransitionType.CROSSFADE,"slide-right":n.RevealerTransitionType.SLIDE_RIGHT,"slide-left":n.RevealerTransitionType.SLIDE_LEFT,"slide-up":n.RevealerTransitionType.SLIDE_UP,"slide-down":n.RevealerTransitionType.SLIDE_DOWN,"swing-right":n.RevealerTransitionType.SWING_RIGHT,"swing-left":n.RevealerTransitionType.SWING_LEFT,"swing-up":n.RevealerTransitionType.SWING_UP,"swing-down":n.RevealerTransitionType.SWING_DOWN,"fade-slide-right":n.RevealerTransitionType.FADE_SLIDE_RIGHT,"fade-slide-left":n.RevealerTransitionType.FADE_SLIDE_LEFT,"fade-slide-up":n.RevealerTransitionType.FADE_SLIDE_UP,"fade-slide-down":n.RevealerTransitionType.FADE_SLIDE_DOWN};var Go=class RevealerStory extends Z{_revealer=null;static{o.registerClass({GTypeName:`AdwStorybookRevealer`},RevealerStory)}constructor(){super(Z.fromMeta(RevealerStory.getMetadata(),`Default`))}static getMetadata(){return{...Ho,component:n.Revealer.$gtype}}initialize(){let e=new n.Box({orientation:n.Orientation.VERTICAL,spacing:6,margin_top:12,margin_bottom:12,margin_start:12,margin_end:12});e.append(new n.Label({label:`The revealed child`}));let t=new n.Label({label:`Drag the controls to change the transition`});t.add_css_class(`dim-label`),e.append(t),this._revealer=new n.Revealer,this._revealer.set_child(e),this._apply(),this.addContent(this._revealer)}updateArgs(e){this._apply()}_apply(){this._revealer&&(this._revealer.transition_type=Wo[String(this.args.transitionType)],this._revealer.transition_duration=Number(this.args.transitionDuration),this._revealer.reveal_child=this.args.revealChild)}};o.type_ensure(Go.$gtype);const Ko={stories:[Go]},qo={title:`Layout/Scrollbar`,description:`Gtk.Scrollbar — a trough and a slider, positioned by a GtkAdjustment. The slider is page_size over the whole range long and sits at the position over the SCROLLABLE range, which is why the two numbers it is made of do not share a denominator.`,controls:[{name:`orientation`,label:`Orientation`,type:Y.SELECT,options:[{label:`Horizontal`,value:`horizontal`},{label:`Vertical`,value:`vertical`}],defaultValue:`vertical`},{name:`upper`,label:`Adjustment upper`,type:Y.NUMBER,defaultValue:400},{name:`pageSize`,label:`Adjustment page size`,type:Y.NUMBER,defaultValue:120},{name:`value`,label:`Adjustment value`,type:Y.NUMBER,defaultValue:80}]};var Jo=__exportAll$1({ScrollbarStories:()=>Xo,ScrollbarStory:()=>Yo}),Yo=class ScrollbarStory extends Z{_scrollbar=null;static{o.registerClass({GTypeName:`AdwStorybookScrollbar`},ScrollbarStory)}constructor(){super(Z.fromMeta(ScrollbarStory.getMetadata(),`Default`))}static getMetadata(){return{...qo,component:n.Scrollbar.$gtype}}initialize(){this._scrollbar=new n.Scrollbar({adjustment:new n.Adjustment({step_increment:10,page_increment:80})}),this._apply(),this.addContent(this._scrollbar)}updateArgs(e){this._apply()}_apply(){let e=this._scrollbar;if(!e)return;e.orientation=this.args.orientation===`horizontal`?n.Orientation.HORIZONTAL:n.Orientation.VERTICAL;let t=e.get_adjustment();t&&t.configure(Number(this.args.value),0,Number(this.args.upper),t.step_increment,t.page_increment,Number(this.args.pageSize))}};o.type_ensure(Yo.$gtype);const Xo={stories:[Yo]},Zo={title:`Layout/ScrolledWindow`,description:`Gtk.ScrolledWindow — one child, two adjustments, and a scrollbar per edge that can actually scroll. The policies decide whether a bar appears, window-placement which edge it takes, and overlay-scrolling turns the bars into the auto-hiding indicators GNOME draws over the content.`,controls:[{name:`hPolicy`,label:`Horizontal policy`,type:Y.SELECT,options:[{label:`Automatic`,value:`automatic`},{label:`Always`,value:`always`},{label:`Never`,value:`never`}],defaultValue:`automatic`},{name:`vPolicy`,label:`Vertical policy`,type:Y.SELECT,options:[{label:`Automatic`,value:`automatic`},{label:`Always`,value:`always`},{label:`Never`,value:`never`}],defaultValue:`automatic`},{name:`placement`,label:`Window placement`,type:Y.SELECT,options:[{label:`Top left`,value:`top-left`},{label:`Top right`,value:`top-right`},{label:`Bottom left`,value:`bottom-left`},{label:`Bottom right`,value:`bottom-right`}],defaultValue:`top-left`},{name:`frame`,label:`Frame`,type:Y.BOOLEAN,defaultValue:!1},{name:`overlayScrolling`,label:`Overlay scrolling`,type:Y.BOOLEAN,defaultValue:!0}]};var Qo=__exportAll$1({ScrolledWindowStories:()=>ns,ScrolledWindowStory:()=>ts});const $o={automatic:n.PolicyType.AUTOMATIC,always:n.PolicyType.ALWAYS,never:n.PolicyType.NEVER},es={"top-left":n.CornerType.TOP_LEFT,"top-right":n.CornerType.TOP_RIGHT,"bottom-left":n.CornerType.BOTTOM_LEFT,"bottom-right":n.CornerType.BOTTOM_RIGHT};var ts=class ScrolledWindowStory extends Z{_window=null;static{o.registerClass({GTypeName:`AdwStorybookScrolledWindow`},ScrolledWindowStory)}constructor(){super(Z.fromMeta(ScrolledWindowStory.getMetadata(),`Default`))}static getMetadata(){return{...Zo,component:n.ScrolledWindow.$gtype}}initialize(){let e=new n.Box({orientation:n.Orientation.VERTICAL,spacing:8});for(let t=1;t<=16;t++)e.append(new n.Label({label:`Row ${t}`}));this._window=new n.ScrolledWindow({child:e,min_content_height:240,halign:n.Align.CENTER}),this._apply(),this.addContent(this._window)}updateArgs(e){this._apply()}_apply(){let e=this._window;e&&(e.set_policy($o[this.args.hPolicy]??n.PolicyType.AUTOMATIC,$o[this.args.vPolicy]??n.PolicyType.AUTOMATIC),e.set_placement(es[this.args.placement]??n.CornerType.TOP_LEFT),e.has_frame=this.args.frame,e.set_overlay_scrolling(this.args.overlayScrolling))}};o.type_ensure(ts.$gtype);const ns={stories:[ts]},rs={title:`Layout/Separator`,description:`Gtk.Separator — a one-pixel rule between two groups of widgets. Libadwaita ships no Adw.Separator; it only styles the GTK one, and the .spacer style class turns the rule into an empty 12px gap.`,controls:[{name:`orientation`,label:`Orientation`,type:Y.SELECT,options:[{label:`Horizontal`,value:`horizontal`},{label:`Vertical`,value:`vertical`}],defaultValue:`horizontal`},{name:`spacer`,label:`Spacer (draws nothing)`,type:Y.BOOLEAN,defaultValue:!1}]};var is=__exportAll$1({SeparatorStories:()=>os,SeparatorStory:()=>as}),as=class SeparatorStory extends Z{_box=null;_separator=null;static{o.registerClass({GTypeName:`AdwStorybookSeparator`},SeparatorStory)}constructor(){super(Z.fromMeta(SeparatorStory.getMetadata(),`Default`))}static getMetadata(){return{...rs,component:n.Separator.$gtype}}initialize(){this._separator=new n.Separator,this._box=new n.Box({spacing:12,halign:n.Align.CENTER}),this._box.append(new n.Label({label:`Above`})),this._box.append(this._separator),this._box.append(new n.Label({label:`Below`})),this._apply(),this.addContent(this._box)}updateArgs(e){this._apply()}_apply(){if(!this._box||!this._separator)return;let e=this.args.orientation===`vertical`;this._separator.orientation=e?n.Orientation.VERTICAL:n.Orientation.HORIZONTAL,this._box.orientation=e?n.Orientation.HORIZONTAL:n.Orientation.VERTICAL,this.args.spacer?this._separator.add_css_class(`spacer`):this._separator.remove_css_class(`spacer`)}};o.type_ensure(as.$gtype);const os={stories:[as]},ss={title:`Layout/Toolbar View`,description:`Adw.ToolbarView pins a top header bar and a bottom toolbar around its content, each independently revealable.`,controls:[{name:`revealTopBars`,label:`Reveal top bars`,type:Y.BOOLEAN,defaultValue:!0},{name:`revealBottomBars`,label:`Reveal bottom bars`,type:Y.BOOLEAN,defaultValue:!0}]};var cs=__exportAll$1({ToolbarViewStories:()=>us,ToolbarViewStory:()=>ls}),ls=class ToolbarViewStory extends Z{_view=null;static{o.registerClass({GTypeName:`AdwStorybookToolbarView`},ToolbarViewStory)}constructor(){super(Z.fromMeta(ToolbarViewStory.getMetadata(),`Default`))}static getMetadata(){return{...ss,component:s.ToolbarView.$gtype}}initialize(){this._view=new s.ToolbarView({widthRequest:460,heightRequest:320,revealTopBars:this.args.revealTopBars,revealBottomBars:this.args.revealBottomBars});let e=new s.HeaderBar({titleWidget:new s.WindowTitle({title:`Documents`,subtitle:`12 items`})});this._view.add_top_bar(e);let t=new s.StatusPage({iconName:`folder-documents-symbolic`,title:`Your library`,description:`Content sits between the toolbars and scrolls independently of them.`});this._view.content=t;let r=new n.ActionBar,i=new n.Button({iconName:`list-add-symbolic`});i.add_css_class(`flat`);let o=new n.Button({iconName:`list-remove-symbolic`});o.add_css_class(`flat`),r.pack_start(i),r.pack_start(o),r.set_center_widget(new n.Label({label:`Selection: none`}));let c=new n.Button({iconName:`send-to-symbolic`});c.add_css_class(`flat`),r.pack_end(c),this._view.add_bottom_bar(r),this.addContent(this._view)}updateArgs(e){this._view&&(this._view.revealTopBars=this.args.revealTopBars,this._view.revealBottomBars=this.args.revealBottomBars)}};o.type_ensure(ls.$gtype);const us={stories:[ls]},ds={title:`Layout/Viewport`,description:`Gtk.Viewport — scrollability for a widget that has none of its own. It has one property, scroll-to-focus: whether a widget that takes the focus is scrolled into view. It is also what a Gtk.ScrolledWindow puts its child in.`,controls:[{name:`scrollToFocus`,label:`Scroll to focus`,type:Y.BOOLEAN,defaultValue:!0}]};var fs=__exportAll$1({ViewportStories:()=>ms,ViewportStory:()=>ps}),ps=class ViewportStory extends Z{_viewport=null;static{o.registerClass({GTypeName:`AdwStorybookViewport`},ViewportStory)}constructor(){super(Z.fromMeta(ViewportStory.getMetadata(),`Default`))}static getMetadata(){return{...ds,component:n.Viewport.$gtype}}initialize(){let e=new n.Box({orientation:n.Orientation.VERTICAL,spacing:8});for(let t=1;t<=16;t++)e.append(new n.Label({label:`Row ${t}`}));e.append(new n.Button({label:`Focus me`,halign:n.Align.START})),this._viewport=new n.Viewport({child:e,halign:n.Align.CENTER}),this._apply(),this.addContent(this._viewport)}updateArgs(e){this._apply()}_apply(){this._viewport&&this._viewport.set_scroll_to_focus(this.args.scrollToFocus)}};o.type_ensure(ps.$gtype);const ms={stories:[ps]},hs={title:`Layout/Window`,description:`Adw.Window — a freeform window with no titlebar area. Use Adw.ToolbarView with Adw.HeaderBar for the top chrome.`,controls:[{name:`title`,label:`Title`,type:Y.TEXT,defaultValue:`Text Editor`},{name:`subtitle`,label:`Subtitle`,type:Y.TEXT,defaultValue:`notes.md`}]};var gs=__exportAll$1({WindowStories:()=>vs,WindowStory:()=>_s}),_s=class WindowStory extends Z{_window=null;_title=null;static{o.registerClass({GTypeName:`AdwStorybookWindow`},WindowStory)}constructor(){super(Z.fromMeta(WindowStory.getMetadata(),`Default`))}static getMetadata(){return{...hs,component:s.Window.$gtype}}initialize(){this._title=new s.WindowTitle({title:this.args.title,subtitle:this.args.subtitle});let e=new s.HeaderBar({titleWidget:this._title,widthRequest:460}),t=new n.Button({iconName:`go-previous-symbolic`});t.add_css_class(`flat`),e.pack_start(t);let r=new n.MenuButton({iconName:`open-menu-symbolic`});r.add_css_class(`flat`),e.pack_end(r);let i=new s.ToolbarView;i.add_top_bar(e),i.content=new s.StatusPage({title:`Your Library`,description:`Content sits between the toolbars and scrolls independently of them.`}),this._window=new s.Window({content:i}),this.addContent(this._window)}updateArgs(e){this._title&&(this._title.title=this.args.title,this._title.subtitle=this.args.subtitle)}};o.type_ensure(_s.$gtype);const vs={stories:[_s]},ys={title:`Layout/Wrap Box`,description:`Adw.WrapBox flows its children horizontally and wraps them onto new lines when they run out of room.`,controls:[{name:`childSpacing`,label:`Child spacing`,type:Y.RANGE,min:0,max:36,step:1,defaultValue:8},{name:`lineSpacing`,label:`Line spacing`,type:Y.RANGE,min:0,max:36,step:1,defaultValue:8}]};var bs=__exportAll$1({WrapBoxStories:()=>Ss,WrapBoxStory:()=>xs}),xs=class WrapBoxStory extends Z{_wrap=null;static{o.registerClass({GTypeName:`AdwStorybookWrapBox`},WrapBoxStory)}constructor(){super(Z.fromMeta(WrapBoxStory.getMetadata(),`Default`))}static getMetadata(){return{...ys,component:s.WrapBox.$gtype}}initialize(){this._wrap=new s.WrapBox({childSpacing:this.args.childSpacing,lineSpacing:this.args.lineSpacing,widthRequest:460});for(let e of[`Design`,`Adwaita`,`GNOME`,`GTK`,`TypeScript`,`Storybook`,`Wrapping`,`Layout`]){let t=new n.Button({label:e});t.add_css_class(`pill`),this._wrap.append(t)}this.addContent(this._wrap)}updateArgs(e){this._wrap&&(this._wrap.childSpacing=this.args.childSpacing,this._wrap.lineSpacing=this.args.lineSpacing)}};o.type_ensure(xs.$gtype);const Ss={stories:[xs]},Cs={title:`Media/Image`,description:`Gtk.Image — a symbolic icon, drawn as a CSS-masked box in the surrounding text colour. It takes a NAME, not a file: a name the icon theme cannot resolve draws the missing-image glyph, which is exactly what GTK draws for it. That is why <gtk-picture> is a separate widget — an icon sized by the theme and an image fitted to a box are two different jobs.`,controls:[{name:`iconName`,label:`Icon name`,type:Y.TEXT,defaultValue:`avatar-default-symbolic`},{name:`size`,label:`Size (px)`,type:Y.RANGE,min:16,max:96,step:8,defaultValue:48},{name:`disabled`,label:`Disabled`,type:Y.BOOLEAN,defaultValue:!1}]};var ws=__exportAll$1({ImageStories:()=>Es,ImageStory:()=>Ts}),Ts=class ImageStory extends Z{_image=null;static{o.registerClass({GTypeName:`AdwStorybookImage`},ImageStory)}constructor(){super(Z.fromMeta(ImageStory.getMetadata(),`Default`))}static getMetadata(){return{...Cs,component:n.Image.$gtype}}initialize(){this._image=new n.Image({halign:n.Align.CENTER,valign:n.Align.CENTER}),this._apply(),this.addContent(this._image)}updateArgs(e){this._apply()}_apply(){this._image&&(this._image.icon_size=this.args.size,this._image.icon_name=this.args.iconName,this._image.sensitive=!this.args.disabled)}};o.type_ensure(Ts.$gtype);const Es={stories:[Ts]},Ds={title:`Media/Inscription`,description:`Gtk.Inscription — text laid out to a size in CHARACTERS and LINES rather than to a size in pixels. It is the widget for text whose extent should be the same everywhere, so it never measures its own content: min-chars/nat-chars and min-lines/nat-lines ARE its size request.`,controls:[{name:`text`,label:`Text`,type:Y.TEXT,defaultValue:`Inscription`},{name:`minChars`,label:`Min chars`,type:Y.RANGE,min:0,max:40,step:1,defaultValue:3},{name:`natChars`,label:`Nat chars`,type:Y.RANGE,min:0,max:40,step:1,defaultValue:0},{name:`minLines`,label:`Min lines`,type:Y.RANGE,min:0,max:6,step:1,defaultValue:1},{name:`natLines`,label:`Nat lines`,type:Y.RANGE,min:0,max:6,step:1,defaultValue:0},{name:`wrapMode`,label:`Wrap mode`,type:Y.SELECT,options:[{label:`Word`,value:`word`},{label:`Char`,value:`char`},{label:`Word-char (default)`,value:`word-char`}],defaultValue:`word-char`},{name:`textOverflow`,label:`Text overflow`,type:Y.SELECT,options:[{label:`Clip (default)`,value:`clip`},{label:`Ellipsize start`,value:`ellipsize-start`},{label:`Ellipsize middle`,value:`ellipsize-middle`},{label:`Ellipsize end`,value:`ellipsize-end`}],defaultValue:`clip`},{name:`xalign`,label:`X align`,type:Y.RANGE,min:0,max:1,step:.05,defaultValue:0},{name:`yalign`,label:`Y align`,type:Y.RANGE,min:0,max:1,step:.05,defaultValue:.5}]};var Os=__exportAll$1({InscriptionStories:()=>As,InscriptionStory:()=>ks}),ks=class InscriptionStory extends Z{_inscription=null;_frame=null;static{o.registerClass({GTypeName:`AdwStorybookInscription`},InscriptionStory)}constructor(){super(Z.fromMeta(InscriptionStory.getMetadata(),`Default`))}static getMetadata(){return{...Ds,component:n.Inscription.$gtype}}initialize(){this._inscription=new n.Inscription,this._frame=new n.Frame({child:this._inscription,halign:n.Align.CENTER}),this._apply(),this.addContent(this._frame)}updateArgs(e){this._apply()}_apply(){!this._inscription||!this._frame||(this._inscription.min_chars=this.args.minChars,this._inscription.nat_chars=this.args.natChars,this._inscription.min_lines=this.args.minLines,this._inscription.nat_lines=this.args.natLines,this._inscription.text=this.args.text,this._inscription.wrap_mode=this.args.wrapMode,this._inscription.text_overflow=this.args.textOverflow,this._inscription.xalign=this.args.xalign,this._inscription.yalign=this.args.yalign,this._frame.width_request=320,this._frame.height_request=160)}};o.type_ensure(ks.$gtype);const As={stories:[ks]},js={title:`Media/Media Controls`,description:"Gtk.MediaControls — the transport bar: play, position, duration, volume. It owns no playback at all (its one property is an object, `media-stream`), and the bar is INSENSITIVE until a stream is attached. Note which label shows what: the position label shows the elapsed time and the one beside it shows what REMAINS, negatively.",controls:[{name:`sensitive`,label:`Sensitive`,type:Y.BOOLEAN,defaultValue:!0}]};var Ms=__exportAll$1({MediaControlsStories:()=>Ps,MediaControlsStory:()=>Ns}),Ns=class MediaControlsStory extends Z{_controls=null;static{o.registerClass({GTypeName:`AdwStorybookMediaControls`},MediaControlsStory)}constructor(){super(Z.fromMeta(MediaControlsStory.getMetadata(),`Default`))}static getMetadata(){return{...js,component:n.MediaControls.$gtype}}initialize(){this._controls=new n.MediaControls,this._controls.add_css_class(`osd`),this._controls.add_css_class(`bottom`),this._apply(),this.addContent(this._controls)}updateArgs(e){this._apply()}_apply(){this._controls&&(this._controls.sensitive=this.args.sensitive)}};o.type_ensure(Ns.$gtype);const Ps={stories:[Ns]},Fs={title:`Media/Picture`,description:"Gtk.Picture — an image fitted to the box it is given, not sized by itself. `content-fit` picks one of the four fit modes (contain, cover, fill, scale-down), `can-shrink` decides whether it may be smaller than its content, and `alternative-text` is what a screen reader hears.",controls:[{name:`contentFit`,label:`Content fit`,type:Y.SELECT,options:[{label:`Contain`,value:`contain`},{label:`Cover`,value:`cover`},{label:`Fill`,value:`fill`},{label:`Scale down`,value:`scale-down`}],defaultValue:`contain`},{name:`canShrink`,label:`Can shrink`,type:Y.BOOLEAN,defaultValue:!0},{name:`alternativeText`,label:`Alternative text`,type:Y.TEXT,defaultValue:`A tangerine`},{name:`isolateContents`,label:`Isolate contents`,type:Y.BOOLEAN,defaultValue:!0},{name:`keepAspectRatio`,label:`Keep aspect ratio (deprecated)`,type:Y.BOOLEAN,defaultValue:!0},{name:`width`,label:`Width (px)`,type:Y.RANGE,min:64,max:320,step:16,defaultValue:240}]};var Is=__exportAll$1({PictureStories:()=>Rs,PictureStory:()=>Ls});function makePaintable(){let n=320*4,r=new Uint8Array(n*180);for(let e=0;e<180;e++){let t=e<180/2?48:144;for(let i=0;i<320;i++){let o=e*n+i*4;r[o]=t,r[o+1]=i<320/2?64:192,r[o+2]=160,r[o+3]=255}}return t.MemoryTexture.new(320,180,t.MemoryFormat.R8G8B8A8,e.Bytes.new(r),n)}var Ls=class PictureStory extends Z{_picture=null;static{o.registerClass({GTypeName:`AdwStorybookPicture`},PictureStory)}constructor(){super(Z.fromMeta(PictureStory.getMetadata(),`Default`))}static getMetadata(){return{...Fs,component:n.Picture.$gtype}}initialize(){this._picture=new n.Picture({paintable:makePaintable(),halign:n.Align.CENTER,valign:n.Align.CENTER}),this._apply(),this.addContent(this._picture)}updateArgs(e){this._apply()}_apply(){if(!this._picture)return;let e=this.args.width;this._picture.set_size_request(e,Math.round(e*2/3)),this.args.keepAspectRatio&&(this._picture.keep_aspect_ratio=!0),this._picture.content_fit=this.args.contentFit,this._picture.can_shrink=this.args.canShrink,this._picture.alternative_text=this.args.alternativeText,this._picture.isolate_contents=this.args.isolateContents}};o.type_ensure(Ls.$gtype);const Rs={stories:[Ls]},zs={title:`Media/Video`,description:`Gtk.Video — a play surface with an overlay icon and a controls bar that hides itself three seconds after you stop moving the pointer. The overlay icon is a four-way choice — no stream, error, ended, or ready — and it is only VISIBLE while the video is stopped; there is no pause glyph over the frames.`,controls:[{name:`autoplay`,label:`Autoplay`,type:Y.BOOLEAN,defaultValue:!1},{name:`loop`,label:`Loop`,type:Y.BOOLEAN,defaultValue:!0},{name:`graphicsOffload`,label:`Graphics offload`,type:Y.BOOLEAN,defaultValue:!1},{name:`width`,label:`Width (px)`,type:Y.RANGE,min:160,max:480,step:40,defaultValue:320}]};var Bs=__exportAll$1({VideoStories:()=>Hs,VideoStory:()=>Vs}),Vs=class VideoStory extends Z{_video=null;static{o.registerClass({GTypeName:`AdwStorybookVideo`},VideoStory)}constructor(){super(Z.fromMeta(VideoStory.getMetadata(),`Default`))}static getMetadata(){return{...zs,component:n.Video.$gtype}}initialize(){this._video=new n.Video({halign:n.Align.CENTER,valign:n.Align.CENTER}),this._apply(),this.addContent(this._video)}updateArgs(e){this._apply()}_apply(){if(!this._video)return;let e=this.args.width;this._video.set_size_request(e,Math.round(e*9/16)),this._video.autoplay=this.args.autoplay,this._video.loop=this.args.loop,this._video.graphics_offload=this.args.graphicsOffload?n.GraphicsOffloadEnabled.ENABLED:n.GraphicsOffloadEnabled.DISABLED}};o.type_ensure(Vs.$gtype);const Hs={stories:[Vs]},Us={title:`Navigation/Bottom Sheet`,description:`Adw.BottomSheet — a sheet that slides up over the content. Toggle "Open" to reveal it.`,controls:[{name:`open`,label:`Open`,type:Y.BOOLEAN,defaultValue:!0},{name:`modal`,label:`Modal`,type:Y.BOOLEAN,defaultValue:!0},{name:`canClose`,label:`Can close`,type:Y.BOOLEAN,defaultValue:!0}]};var Ws=__exportAll$1({BottomSheetStories:()=>Ks,BottomSheetStory:()=>Gs}),Gs=class BottomSheetStory extends Z{_sheet=null;static{o.registerClass({GTypeName:`AdwStorybookBottomSheet`},BottomSheetStory)}constructor(){super(Z.fromMeta(BottomSheetStory.getMetadata(),`Default`))}static getMetadata(){return{...Us,component:s.BottomSheet.$gtype}}buildContent(){let e=new n.Button({label:`Toggle sheet`,halign:n.Align.CENTER,valign:n.Align.CENTER,vexpand:!0});return e.add_css_class(`pill`),e.add_css_class(`suggested-action`),e.connect(`clicked`,()=>{this._sheet&&(this._sheet.open=!this._sheet.open)}),e}buildSheet(){let e=new n.Box({orientation:n.Orientation.VERTICAL,spacing:12,marginTop:18,marginBottom:24,marginStart:18,marginEnd:18});e.append(new n.Label({label:`Share track`,halign:n.Align.START,cssClasses:[`title-2`]}));let t=new s.PreferencesGroup;for(let[e,r]of[[`Copy link`,`edit-copy-symbolic`],[`Send to a friend`,`mail-send-symbolic`],[`Add to playlist`,`list-add-symbolic`]]){let i=new s.ActionRow({title:e});i.add_prefix(new n.Image({iconName:r})),i.activatable=!0,t.add(i)}return e.append(t),e}initialize(){this._sheet=new s.BottomSheet({content:this.buildContent(),sheet:this.buildSheet(),open:this.args.open,modal:this.args.modal,canClose:this.args.canClose,widthRequest:480,heightRequest:340}),this.addContent(this._sheet)}updateArgs(e){this._sheet&&(this._sheet.open=this.args.open,this._sheet.modal=this.args.modal,this._sheet.canClose=this.args.canClose)}};o.type_ensure(Gs.$gtype);const Ks={stories:[Gs]},qs={title:`Navigation/Navigation Split View`,description:`Adw.NavigationSplitView — a resizable sidebar beside a content pane. When collapsed it folds into a navigation stack.`,controls:[{name:`showContent`,label:`Show content`,type:Y.BOOLEAN,defaultValue:!0},{name:`collapsed`,label:`Collapsed`,type:Y.BOOLEAN,defaultValue:!1}]};var Js=__exportAll$1({NavigationSplitViewStories:()=>Xs,NavigationSplitViewStory:()=>Ys}),Ys=class NavigationSplitViewStory extends Z{_view=null;static{o.registerClass({GTypeName:`AdwStorybookNavigationSplitView`},NavigationSplitViewStory)}constructor(){super(Z.fromMeta(NavigationSplitViewStory.getMetadata(),`Default`))}static getMetadata(){return{...qs,component:s.NavigationSplitView.$gtype}}buildSidebar(){let e=new s.PreferencesGroup;for(let[t,r,i]of[[`All Mail`,`128 messages`,`mail-unread-symbolic`],[`Starred`,`6 messages`,`starred-symbolic`],[`Drafts`,`2 messages`,`document-edit-symbolic`],[`Archive`,`512 messages`,`folder-symbolic`]]){let o=new s.ActionRow({title:t,subtitle:r});o.add_prefix(new n.Image({iconName:i})),o.activatable=!0,e.add(o)}let t=new s.ToolbarView;return t.add_top_bar(new s.HeaderBar),t.content=e,new s.NavigationPage({title:`Mailboxes`,child:t})}buildContent(){let e=new s.StatusPage({iconName:`mail-unread-symbolic`,title:`All Mail`,description:`Select a conversation from the list to read it here.`,vexpand:!0}),t=new s.ToolbarView;return t.add_top_bar(new s.HeaderBar),t.content=e,new s.NavigationPage({title:`All Mail`,child:t})}initialize(){this._view=new s.NavigationSplitView({sidebar:this.buildSidebar(),content:this.buildContent(),showContent:this.args.showContent,collapsed:this.args.collapsed,widthRequest:480,heightRequest:340}),this.addContent(this._view)}updateArgs(e){this._view&&(this._view.showContent=this.args.showContent,this._view.collapsed=this.args.collapsed)}};o.type_ensure(Ys.$gtype);const Xs={stories:[Ys]},Zs={title:`Navigation/Navigation View`,description:`Adw.NavigationView — a navigation stack. The root page pushes a detail page, which gets an automatic back button.`,controls:[{name:`rootTitle`,label:`Root title`,type:Y.TEXT,defaultValue:`Contacts`},{name:`detailTitle`,label:`Detail title`,type:Y.TEXT,defaultValue:`Ada Lovelace`},{name:`animateTransitions`,label:`Animate transitions`,type:Y.BOOLEAN,defaultValue:!0}]};var Qs=__exportAll$1({NavigationViewStories:()=>ec,NavigationViewStory:()=>$s}),$s=class NavigationViewStory extends Z{_view=null;static{o.registerClass({GTypeName:`AdwStorybookNavigationView`},NavigationViewStory)}constructor(){super(Z.fromMeta(NavigationViewStory.getMetadata(),`Default`))}static getMetadata(){return{...Zs,component:s.NavigationView.$gtype}}buildPage(e,t){let n=new s.ToolbarView;return n.add_top_bar(new s.HeaderBar),n.content=t,new s.NavigationPage({title:e,child:n})}initialize(){this._view=new s.NavigationView({animateTransitions:this.args.animateTransitions,widthRequest:480,heightRequest:340});let e=this.buildPage(this.args.detailTitle,new s.StatusPage({iconName:`avatar-default-symbolic`,title:this.args.detailTitle,description:`Mathematician and writer, the first computer programmer.`,vexpand:!0})),t=new n.Button({label:`Open contact`,halign:n.Align.CENTER,valign:n.Align.CENTER,vexpand:!0});t.add_css_class(`pill`),t.add_css_class(`suggested-action`),t.connect(`clicked`,()=>{this._view?.push(e)});let r=this.buildPage(this.args.rootTitle,t);this._view.add(r),this._view.add(e),this.addContent(this._view)}updateArgs(e){this._view&&(this._view.animateTransitions=this.args.animateTransitions)}};o.type_ensure($s.$gtype);const ec={stories:[$s]},tc={title:`Navigation/Overlay Split View`,description:`Adw.OverlaySplitView — a sidebar shown beside the content, or overlaid on top of it when collapsed.`,controls:[{name:`showSidebar`,label:`Show sidebar`,type:Y.BOOLEAN,defaultValue:!0},{name:`collapsed`,label:`Collapsed`,type:Y.BOOLEAN,defaultValue:!1}]};var nc=__exportAll$1({OverlaySplitViewStories:()=>ic,OverlaySplitViewStory:()=>rc}),rc=class OverlaySplitViewStory extends Z{_view=null;static{o.registerClass({GTypeName:`AdwStorybookOverlaySplitView`},OverlaySplitViewStory)}constructor(){super(Z.fromMeta(OverlaySplitViewStory.getMetadata(),`Default`))}static getMetadata(){return{...tc,component:s.OverlaySplitView.$gtype}}buildSidebar(){let e=new s.PreferencesGroup;for(let[t,r]of[[`Home`,`go-home-symbolic`],[`Discover`,`system-search-symbolic`],[`Library`,`folder-music-symbolic`],[`Settings`,`emblem-system-symbolic`]]){let i=new s.ActionRow({title:t});i.add_prefix(new n.Image({iconName:r})),i.activatable=!0,e.add(i)}let t=new s.ToolbarView;return t.add_top_bar(new s.HeaderBar({showTitle:!1})),t.content=e,t.add_css_class(`sidebar`),t}buildContent(){let e=new s.StatusPage({iconName:`folder-music-symbolic`,title:`Your Library`,description:`Toggle the sidebar to browse sections. Collapse it to overlay the content.`,vexpand:!0}),t=new s.ToolbarView;return t.add_top_bar(new s.HeaderBar),t.content=e,t}initialize(){this._view=new s.OverlaySplitView({sidebar:this.buildSidebar(),content:this.buildContent(),showSidebar:this.args.showSidebar,collapsed:this.args.collapsed,widthRequest:480,heightRequest:340}),this.addContent(this._view)}updateArgs(e){this._view&&(this._view.showSidebar=this.args.showSidebar,this._view.collapsed=this.args.collapsed)}};o.type_ensure(rc.$gtype);const ic={stories:[rc]},ac=[{label:`File`,submenu:[{label:`New Window`,accel:`<Control>N`},{label:`New Tab`,accel:`<Control><Shift>N`},{label:`Open…`,accel:`<Control>O`}]},{label:`Edit`,submenu:[{label:`Undo`,accel:`<Control>Z`},{label:`Redo`,accel:`<Control>Y`}]},{label:`View`,submenu:[{label:`Zoom In`,accel:`<Control>plus`},{label:`Zoom Out`}]},{label:`Help`,submenu:[{label:`Keyboard Shortcuts`},{label:`About`}]}],oc={title:`Navigation/Popover Menu Bar`,description:`Gtk.PopoverMenuBar — a horizontal bar of items that pop up menus when clicked. Clicking an item OPENS its menu; hovering only SELECTS, and the item lights up (.active) exactly while its menu is up. Left and Right walk the bar and wrap.`,controls:[{name:`position`,label:`Menu position`,type:Y.SELECT,options:[{label:`Below`,value:`bottom`},{label:`Above`,value:`top`}],defaultValue:`bottom`},{name:`showLast`,label:`Include Help`,type:Y.BOOLEAN,defaultValue:!0}]};var sc=__exportAll$1({PopoverMenuBarStories:()=>lc,PopoverMenuBarStory:()=>cc}),cc=class PopoverMenuBarStory extends Z{_bar=null;static{o.registerClass({GTypeName:`AdwStorybookPopoverMenuBar`},PopoverMenuBarStory)}constructor(){super(Z.fromMeta(PopoverMenuBarStory.getMetadata(),`Default`))}static getMetadata(){return{...oc,component:n.PopoverMenuBar.$gtype}}initialize(){this._bar=n.PopoverMenuBar.new_from_model(this._buildMenu()),this._bar.halign=n.Align.START,this._apply(),this.addContent(this._bar)}updateArgs(e){this._apply()}_buildMenu(){let e=new r.Menu,t=this.args.showLast===!1?ac.slice(0,3):ac;for(let n of t){let t=new r.Menu;for(let e of n.submenu)t.append(e.label,`app.${e.label.toLowerCase().replace(/[^a-z0-9]+/g,`-`)}`);e.append_submenu(n.label,t)}return e}_apply(){if(!this._bar)return;let e=this.args.position===`top`;for(let t=this._bar.get_first_child();t!==null;t=t.get_next_sibling())t.get_first_child()?.set_position(e?n.PositionType.TOP:n.PositionType.BOTTOM)}};o.type_ensure(cc.$gtype);const lc={stories:[cc]},uc={title:`Navigation/Sidebar`,description:`Adw.Sidebar — a selectable list of Adw.SidebarItem grouped into sections. Selecting an item updates the content.`,controls:[{name:`mode`,label:`Mode`,type:Y.SELECT,options:[{label:`Sidebar`,value:`sidebar`},{label:`Page`,value:`page`}],defaultValue:`sidebar`},{name:`selected`,label:`Selected index`,type:Y.NUMBER,min:0,max:3,step:1,defaultValue:0}]};var dc=__exportAll$1({SidebarStories:()=>pc,SidebarStory:()=>fc}),fc=class SidebarStory extends Z{_sidebar=null;_status=null;static{o.registerClass({GTypeName:`AdwStorybookSidebar`},SidebarStory)}constructor(){super(Z.fromMeta(SidebarStory.getMetadata(),`Default`))}static getMetadata(){return{...uc,component:s.Sidebar.$gtype}}items=[{title:`Inbox`,subtitle:`3 unread`,icon:`mail-unread-symbolic`},{title:`Starred`,subtitle:`Favourites`,icon:`starred-symbolic`},{title:`Sent`,subtitle:`Outgoing mail`,icon:`mail-send-symbolic`},{title:`Archive`,subtitle:`Older mail`,icon:`folder-symbolic`}];modeFromArg(e){return e===`page`?s.SidebarMode.PAGE:s.SidebarMode.SIDEBAR}syncContent(){if(!this._sidebar||!this._status)return;let e=this.items[this._sidebar.selected]??this.items[0];this._status.title=e.title,this._status.iconName=e.icon,this._status.description=e.subtitle}initialize(){let e=new s.SidebarSection({title:`Mailboxes`});for(let t of this.items)e.append(new s.SidebarItem({title:t.title,subtitle:t.subtitle,iconName:t.icon}));this._sidebar=new s.Sidebar({mode:this.modeFromArg(this.args.mode),selected:this.args.selected,widthRequest:220}),this._sidebar.append(e),this._sidebar.connect(`notify::selected`,()=>this.syncContent()),this._status=new s.StatusPage({hexpand:!0,vexpand:!0});let t=new n.Box({orientation:n.Orientation.HORIZONTAL,widthRequest:480,heightRequest:340});t.append(this._sidebar),t.append(new n.Separator({orientation:n.Orientation.VERTICAL})),t.append(this._status),this.syncContent(),this.addContent(t)}updateArgs(e){this._sidebar&&(this._sidebar.mode=this.modeFromArg(this.args.mode),this._sidebar.selected=this.args.selected,this.syncContent())}};o.type_ensure(fc.$gtype);const pc={stories:[fc]},mc=[{title:`Sync`,kind:`switch`,active:!0},{title:`Export`,kind:`action`}],hc=[`Blue`,`Teal`,`Green`,`Orange`],gc={appearance:`Appearance`,account:`Account`,shortcuts:`Shortcuts`,actions:`Actions`},Q={bannerTitle:`You have unsaved changes`,bannerButton:`Save`,darkMode:`Dark mode`,darkModeSubtitle:`Use the dark Adwaita palette`,notifications:`Notifications`,notificationsSubtitle:`Show toasts for events`,accentColor:`Accent color`,name:`Name`,nameValue:`Ada Lovelace`,email:`Email`,emailValue:`ada@example.com`,devices:`Devices`,advanced:`Advanced`,advancedSubtitle:`More options`,save:`Save changes`,delete:`Delete account`},$={value:3,lower:1,upper:10,step:1},_c=[{title:`Copy`,accelerator:`<Control>C`},{title:`Select all`,accelerator:`<Shift><Control>a`},{title:`Switch tab`,accelerator:`<Alt>1...9`}],vc={title:`Overview/Widgets`,description:`Many widgets at once, the way an app composes them: a banner, preference groups of rows, an expander, buttons and shortcut labels. Use it to judge spacing, alignment and the theme as a whole rather than one widget in isolation.`,controls:[{name:`revealed`,label:`Show banner`,type:Y.BOOLEAN,description:`Adw.Banner:revealed — animates in and out`,defaultValue:!0}]};var yc=__exportAll$1({OverviewWidgetsStories:()=>xc,OverviewWidgetsStory:()=>bc}),bc=class OverviewWidgetsStory extends Z{_banner=null;static{o.registerClass({GTypeName:`AdwStorybookOverviewWidgets`},OverviewWidgetsStory)}constructor(){super(Z.fromMeta(OverviewWidgetsStory.getMetadata(),`Default`))}static getMetadata(){return vc}initialize(){let e=new n.Box({orientation:n.Orientation.VERTICAL,hexpand:!0});this._banner=new s.Banner({title:Q.bannerTitle,button_label:Q.bannerButton,revealed:this.args.revealed}),e.append(this._banner);let t=new s.PreferencesPage({hexpand:!0}),r=new s.PreferencesGroup({title:gc.appearance});r.add(new s.SwitchRow({title:Q.darkMode,subtitle:Q.darkModeSubtitle,active:!1})),r.add(new s.SwitchRow({title:Q.notifications,subtitle:Q.notificationsSubtitle,active:!0})),r.add(new s.ComboRow({title:Q.accentColor,model:n.StringList.new([...hc]),selected:0})),t.add(r);let i=new s.PreferencesGroup({title:gc.account}),o=new s.EntryRow({title:Q.name});o.set_text(Q.nameValue),i.add(o);let c=new s.EntryRow({title:Q.email});c.set_text(Q.emailValue),i.add(c);let l=new s.SpinRow({title:Q.devices,adjustment:new n.Adjustment({value:$.value,lower:$.lower,upper:$.upper,step_increment:$.step,page_increment:$.step})});l.set_value($.value),i.add(l);let u=new s.ExpanderRow({title:Q.advanced,subtitle:Q.advancedSubtitle,expanded:!0});for(let e of mc)u.add_row(e.kind===`switch`?new s.SwitchRow({title:e.title,active:e.active??!1}):new s.ActionRow({title:e.title}));i.add(u),t.add(i);let d=new s.PreferencesGroup({title:gc.shortcuts});for(let e of _c){let t=new s.ActionRow({title:e.title});t.add_suffix(new s.ShortcutLabel({accelerator:e.accelerator,valign:n.Align.CENTER})),d.add(t)}t.add(d);let f=new s.PreferencesGroup({title:gc.actions}),p=new n.Box({orientation:n.Orientation.HORIZONTAL,spacing:12,homogeneous:!0,margin_top:6,margin_bottom:6}),m=new n.Button({label:Q.save});m.add_css_class(`suggested-action`),p.append(m);let h=new n.Button({label:Q.delete});h.add_css_class(`destructive-action`),p.append(h),f.add(p),t.add(f),e.append(t),this.addContent(e)}updateArgs(e){this._banner?.set_revealed(this.args.revealed)}};o.type_ensure(bc.$gtype);const xc={stories:[bc]},Sc={title:`Presentation/Avatar`,description:`A circular avatar that derives initials (and a colour) from a name, or shows a symbolic icon.`,controls:[{name:`text`,label:`Name`,type:Y.TEXT,defaultValue:`Ada Lovelace`},{name:`size`,label:`Size`,type:Y.RANGE,min:24,max:160,step:8,defaultValue:96},{name:`showInitials`,label:`Show initials`,type:Y.BOOLEAN,defaultValue:!0},{name:`iconName`,label:`Fallback icon`,type:Y.SELECT,options:[{label:`Person`,value:`avatar-default-symbolic`},{label:`Contact`,value:`contact-new-symbolic`},{label:`Camera`,value:`camera-photo-symbolic`}],defaultValue:`avatar-default-symbolic`}]};var Cc=__exportAll$1({AvatarStories:()=>Tc,AvatarStory:()=>wc}),wc=class AvatarStory extends Z{_avatar=null;static{o.registerClass({GTypeName:`AdwStorybookAvatar`},AvatarStory)}constructor(){super(Z.fromMeta(AvatarStory.getMetadata(),`Default`))}static getMetadata(){return{...Sc,component:s.Avatar.$gtype}}initialize(){this._avatar=new s.Avatar({size:this.args.size,text:this.args.text,showInitials:this.args.showInitials,iconName:this.args.iconName}),this.addContent(this._avatar)}updateArgs(e){this._avatar&&(this._avatar.size=this.args.size,this._avatar.text=this.args.text,this._avatar.showInitials=this.args.showInitials,this._avatar.iconName=this.args.iconName)}};o.type_ensure(wc.$gtype);const Tc={stories:[wc]},Ec={title:`Presentation/Banner`,description:`Adw.Banner — a full-width strip carrying a status message and an optional action button.`,controls:[{name:`title`,label:`Title`,type:Y.TEXT,defaultValue:`Metered connection — updates paused`},{name:`buttonLabel`,label:`Button label`,type:Y.TEXT,defaultValue:`Resume`},{name:`revealed`,label:`Revealed`,type:Y.BOOLEAN,defaultValue:!0},{name:`useMarkup`,label:`Use markup`,type:Y.BOOLEAN,defaultValue:!1}]};var Dc=__exportAll$1({BannerStories:()=>kc,BannerStory:()=>Oc}),Oc=class BannerStory extends Z{_banner=null;static{o.registerClass({GTypeName:`AdwStorybookBanner`},BannerStory)}constructor(){super(Z.fromMeta(BannerStory.getMetadata(),`Default`))}static getMetadata(){return{...Ec,component:s.Banner.$gtype}}initialize(){this._banner=new s.Banner({title:this.args.title,buttonLabel:this.args.buttonLabel,revealed:this.args.revealed,useMarkup:this.args.useMarkup});let e=new n.Box({orientation:n.Orientation.VERTICAL,widthRequest:460});e.append(this._banner),this.addContent(e)}updateArgs(e){this._banner&&(this._banner.title=this.args.title,this._banner.buttonLabel=this.args.buttonLabel,this._banner.revealed=this.args.revealed,this._banner.useMarkup=this.args.useMarkup)}};o.type_ensure(Oc.$gtype);const kc={stories:[Oc]},Ac=[14,25],jc={title:`Presentation/Calendar`,description:`Gtk.Calendar — a six-by-seven month grid with four navigation arrows. The arrows clamp the way g_date_time_add_months does, so paging from the 31st lands on the 28th, and a marked day is a day NUMBER of the shown month, so it survives a month that has no such day.`,controls:[{name:`showHeading`,label:`Heading`,type:Y.BOOLEAN,defaultValue:!0},{name:`showDayNames`,label:`Day names`,type:Y.BOOLEAN,defaultValue:!0},{name:`showWeekNumbers`,label:`Week numbers`,type:Y.BOOLEAN,defaultValue:!0}]};var Mc=__exportAll$1({CalendarStories:()=>Pc,CalendarStory:()=>Nc}),Nc=class CalendarStory extends Z{_calendar=null;_marked=!1;static{o.registerClass({GTypeName:`AdwStorybookCalendar`},CalendarStory)}constructor(){super(Z.fromMeta(CalendarStory.getMetadata(),`Default`))}static getMetadata(){return{...jc,component:n.Calendar.$gtype}}initialize(){this._calendar=new n.Calendar({hexpand:!1}),this._calendar.date=parseIso(`2026-10-02`),this._apply(),this.addContent(this._calendar)}updateArgs(e){this._apply()}_apply(){if(this._calendar){this._calendar.show_heading=this.args.showHeading,this._calendar.show_day_names=this.args.showDayNames,this._calendar.show_week_numbers=this.args.showWeekNumbers,this._marked&&this._calendar.clear_marks();for(let e of Ac)this._calendar.mark_day(e);this._marked=!0}}};function parseIso(t){let[n,r,i]=t.split(`-`).map(Number);return e.DateTime.new_local(n,r,i,0,0,0)}o.type_ensure(Nc.$gtype);const Pc={stories:[Nc]},Fc=[{value:`de`,label:`German`},{value:`fr`,label:`French`},{value:`nl`,label:`Dutch`},{value:`pt`,label:`Portuguese`}],Ic={title:`Presentation/Column View`,description:`Gtk.ColumnView — a list view with a header and one cell per column. Clicking a sortable header sets the sort and inverts it on the next click; the view itself reorders nothing.`,controls:[{name:`showRowSeparators`,label:`Row separators`,type:Y.BOOLEAN,defaultValue:!0},{name:`showColumnSeparators`,label:`Column separators`,type:Y.BOOLEAN,defaultValue:!1},{name:`reorderable`,label:`Drag columns to reorder`,type:Y.BOOLEAN,defaultValue:!1}]};var Lc=__exportAll$1({ColumnViewStories:()=>zc,ColumnViewStory:()=>Rc}),Rc=class ColumnViewStory extends Z{_view=null;static{o.registerClass({GTypeName:`AdwStorybookColumnView`},ColumnViewStory)}constructor(){super(Z.fromMeta(ColumnViewStory.getMetadata(),`Default`))}static getMetadata(){return{...Ic,component:n.ColumnView.$gtype}}initialize(){let e=n.StringList.new(Fc.map(e=>e.label));this._view=new n.ColumnView({model:n.SingleSelection.new(e),vexpand:!0}),this._view.append_column(this._column(`Name`,e=>e.label)),this._view.append_column(this._column(`Code`,e=>e.value));let t=new n.ScrolledWindow({child:this._view,heightRequest:200,hexpand:!0});this._apply(),this.addContent(t)}updateArgs(e){this._apply()}_apply(){this._view&&(this._view.showRowSeparators=this.args.showRowSeparators,this._view.showColumnSeparators=this.args.showColumnSeparators,this._view.reorderable=this.args.reorderable)}_column(e,t){let r=new n.SignalListItemFactory;return r.connect(`setup`,(e,t)=>{t.child=new n.Label({xalign:0})}),r.connect(`bind`,(e,n)=>{let r=n,i=r.child,o=r.item.string,s=Fc.find(e=>e.label===o);i.label=s===void 0?o:t(s)}),new n.ColumnViewColumn({title:e,factory:r,expand:!0})}};o.type_ensure(Rc.$gtype);const zc={stories:[Rc]},Bc=[`Red`,`Orange`,`Yellow`,`Green`,`Blue`,`Purple`,`Teal`,`Grey`],Vc={title:`Presentation/Flow Box`,description:`Gtk.FlowBox — the same selectable rows a list box holds, reflowed into as many per line as the width fits. HORIZONTAL is the default here, unlike every GtkOrientable list base; the arrows move by visual position, so the cross-line key lands in the same column of the next line.`,controls:[{name:`selectionMode`,label:`Selection`,type:Y.SELECT,options:[{label:`Single`,value:`single`},{label:`Multiple`,value:`multiple`},{label:`Browse`,value:`browse`},{label:`None`,value:`none`}],defaultValue:`multiple`},{name:`orientation`,label:`Orientation`,type:Y.SELECT,options:[{label:`Horizontal`,value:`horizontal`},{label:`Vertical`,value:`vertical`}],defaultValue:`horizontal`},{name:`maxChildrenPerLine`,label:`Max children per line`,type:Y.NUMBER,defaultValue:3},{name:`homogeneous`,label:`Homogeneous`,type:Y.BOOLEAN,defaultValue:!1},{name:`rowSpacing`,label:`Row spacing`,type:Y.NUMBER,defaultValue:6}]};var Hc=__exportAll$1({FlowBoxStories:()=>Wc,FlowBoxStory:()=>Uc}),Uc=class FlowBoxStory extends Z{_box=null;static{o.registerClass({GTypeName:`AdwStorybookFlowBox`},FlowBoxStory)}constructor(){super(Z.fromMeta(FlowBoxStory.getMetadata(),`Default`))}static getMetadata(){return{...Vc,component:n.FlowBox.$gtype}}initialize(){this._box=new n.FlowBox({hexpand:!0,vexpand:!0});for(let e of Bc)this._box.append(new n.FlowBoxChild({child:new n.Label({label:e})}));this._apply(),this.addContent(this._box)}updateArgs(e){this._apply()}_apply(){this._box&&(this._box.selection_mode=this._selectionMode(),this._box.orientation=this.args.orientation===`vertical`?n.Orientation.VERTICAL:n.Orientation.HORIZONTAL,this._box.max_children_per_line=Math.max(1,Math.trunc(this.args.maxChildrenPerLine)),this._box.homogeneous=this.args.homogeneous,this._box.row_spacing=Math.max(0,Math.trunc(this.args.rowSpacing)))}_selectionMode(){switch(this.args.selectionMode){case`single`:return n.SelectionMode.SINGLE;case`browse`:return n.SelectionMode.BROWSE;case`none`:return n.SelectionMode.NONE;default:return n.SelectionMode.MULTIPLE}}};o.type_ensure(Uc.$gtype);const Wc={stories:[Uc]},Gc=[`Documents`,`Downloads`,`Music`,`Pictures`,`Videos`],Kc=[{label:`Single`,value:`single`},{label:`Multiple`,value:`multiple`},{label:`None`,value:`none`}],qc={title:`Presentation/List View`,description:`Gtk.ListView — one row per item of a list model, each built by a factory. The model is the portable list (ADR 0046); which Gtk.SelectionModel would have wrapped it is the selection mode.`,controls:[{name:`selectionMode`,label:`Selection`,type:Y.SELECT,options:Kc,defaultValue:`single`},{name:`showSeparators`,label:`Separators`,type:Y.BOOLEAN,defaultValue:!0},{name:`singleClickActivate`,label:`Activate on single click`,type:Y.BOOLEAN,defaultValue:!1}]},Jc=[`January`,`February`,`March`,`April`,`May`,`June`,`July`,`August`],Yc={title:`Presentation/Grid View`,description:`Gtk.GridView — the same model and factory as a list view, reflowed into as many equal columns as the width fits, between min-columns and max-columns.`,controls:[{name:`maxColumns`,label:`Max columns`,type:Y.NUMBER,defaultValue:4},{name:`minColumns`,label:`Min columns`,type:Y.NUMBER,defaultValue:1},{name:`selectionMode`,label:`Selection`,type:Y.SELECT,options:Kc,defaultValue:`single`}]};var Xc=__exportAll$1({GridViewStories:()=>Qc,GridViewStory:()=>Zc}),Zc=class GridViewStory extends Z{_view=null;_model=null;static{o.registerClass({GTypeName:`AdwStorybookGridView`},GridViewStory)}constructor(){super(Z.fromMeta(GridViewStory.getMetadata(),`Default`))}static getMetadata(){return{...Yc,component:n.GridView.$gtype}}initialize(){this._model=n.StringList.new([...Jc]);let e=new n.SignalListItemFactory;e.connect(`setup`,(e,t)=>{t.child=new n.Label({xalign:.5})}),e.connect(`bind`,(e,t)=>{let n=t,r=n.child;r.label=n.item.string}),this._view=new n.GridView({factory:e,vexpand:!0});let t=new n.ScrolledWindow({child:this._view,heightRequest:200,hexpand:!0});this._apply(),this.addContent(t)}updateArgs(e){this._apply()}_apply(){!this._view||!this._model||(this._view.model=this.args.selectionMode===`multiple`?n.MultiSelection.new(this._model):this.args.selectionMode===`none`?n.NoSelection.new(this._model):n.SingleSelection.new(this._model),this._view.minColumns=Math.max(1,this.args.minColumns),this._view.maxColumns=Math.max(this._view.minColumns,this.args.maxColumns))}};o.type_ensure(Zc.$gtype);const Qc={stories:[Zc]},$c=[`Documents`,`Downloads`,`Music`,`Pictures`,`Videos`],el={title:`Presentation/List Box`,description:`Gtk.ListBox — one row per child you append, with GTK’s four selection modes. Ctrl toggles and Shift extends from the anchor the last Shift-click left behind; activate-on-single-click defaults to TRUE here, unlike Gtk.ListView’s single-click-activate.`,controls:[{name:`selectionMode`,label:`Selection`,type:Y.SELECT,options:[{label:`Single`,value:`single`},{label:`Multiple`,value:`multiple`},{label:`Browse`,value:`browse`},{label:`None`,value:`none`}],defaultValue:`single`},{name:`showSeparators`,label:`Separators`,type:Y.BOOLEAN,defaultValue:!0},{name:`activateOnSingleClick`,label:`Activate on single click`,type:Y.BOOLEAN,defaultValue:!0},{name:`tabBehavior`,label:`Tab behaviour`,type:Y.SELECT,options:[{label:`All`,value:`all`},{label:`Item`,value:`item`},{label:`Cell`,value:`cell`}],defaultValue:`all`}]};var tl=__exportAll$1({ListBoxStories:()=>rl,ListBoxStory:()=>nl}),nl=class ListBoxStory extends Z{_box=null;static{o.registerClass({GTypeName:`AdwStorybookListBox`},ListBoxStory)}constructor(){super(Z.fromMeta(ListBoxStory.getMetadata(),`Default`))}static getMetadata(){return{...el,component:n.ListBox.$gtype}}initialize(){this._box=new n.ListBox({hexpand:!0});for(let e of $c)this._box.append(new n.ListBoxRow({child:new n.Label({label:e,xalign:0})}));this._apply();let e=new n.ScrolledWindow({child:this._box,heightRequest:200});this.addContent(e)}updateArgs(e){this._apply()}_apply(){this._box&&(this._box.selection_mode=this._selectionMode(),this._box.show_separators=this.args.showSeparators,this._box.activate_on_single_click=this.args.activateOnSingleClick,this._box.tab_behavior=this.args.tabBehavior)}_selectionMode(){switch(this.args.selectionMode){case`multiple`:return n.SelectionMode.MULTIPLE;case`browse`:return n.SelectionMode.BROWSE;case`none`:return n.SelectionMode.NONE;default:return n.SelectionMode.SINGLE}}};o.type_ensure(nl.$gtype);const rl={stories:[nl]};var il=__exportAll$1({ListViewStories:()=>ol,ListViewStory:()=>al}),al=class ListViewStory extends Z{_view=null;_model=null;static{o.registerClass({GTypeName:`AdwStorybookListView`},ListViewStory)}constructor(){super(Z.fromMeta(ListViewStory.getMetadata(),`Default`))}static getMetadata(){return{...qc,component:n.ListView.$gtype}}initialize(){this._model=n.StringList.new([...Gc]);let e=new n.SignalListItemFactory;e.connect(`setup`,(e,t)=>{t.child=new n.Label({xalign:0})}),e.connect(`bind`,(e,t)=>{let n=t,r=n.child;r.label=n.item.string}),this._view=new n.ListView({factory:e,vexpand:!0});let t=new n.ScrolledWindow({child:this._view,heightRequest:200,hexpand:!0});this._apply(),this.addContent(t)}updateArgs(e){this._apply()}_apply(){!this._view||!this._model||(this._view.model=this._selectionModel(this._model),this._view.showSeparators=this.args.showSeparators,this._view.singleClickActivate=this.args.singleClickActivate)}_selectionModel(e){switch(this.args.selectionMode){case`multiple`:return n.MultiSelection.new(e);case`none`:return n.NoSelection.new(e);default:return n.SingleSelection.new(e)}}};o.type_ensure(al.$gtype);const ol={stories:[al]},sl=[{label:`Single`,accelerator:`<Control>C`},{label:`Modifier order`,accelerator:`<Shift><Control>a`},{label:`Alternatives`,accelerator:`<Shift>A Home`},{label:`Range`,accelerator:`<Alt>1...9`},{label:`In sequence`,accelerator:`<Control>C+<Control>X`},{label:`Together`,accelerator:`Control_L&Control_R`},{label:`Nested`,accelerator:`<Alt>1...9 <Alt>0`},{label:`Unset`,accelerator:``}],cl={title:`Presentation/Shortcut Label`,description:`Adw.ShortcutLabel — an accelerator drawn as keycaps. The four grammar levels: alternatives (space), a range (...), pressed in sequence (+), and pressed together (&).`,controls:[{name:`accelerator`,label:`Accelerator`,type:Y.SELECT,options:[{label:`Ctrl+C`,value:`<Control>C`},{label:`Modifier order (Shift+Ctrl+A)`,value:`<Shift><Control>a`},{label:`Alternatives (Shift+A / Home)`,value:`<Shift>A Home`},{label:`Range (Alt+1…9)`,value:`<Alt>1...9`},{label:`In sequence (Ctrl+C → Ctrl+X)`,value:`<Control>C+<Control>X`},{label:`Together (Ctrl L + Ctrl R)`,value:`Control_L&Control_R`},{label:`Nested (Alt+1…9 / Alt+0)`,value:`<Alt>1...9 <Alt>0`},{label:`Glyph key (Ctrl+Space)`,value:`<Control>space`},{label:`Arrow key (Left)`,value:`Left`},{label:`Unset — shows the placeholder`,value:``}],defaultValue:`<Control>C`},{name:`disabledText`,label:`Placeholder`,type:Y.TEXT,defaultValue:`Disabled`}]},ll={title:`Presentation/Shortcut Label (All Levels)`,description:`Every Adw.ShortcutLabel grammar level at once: alternatives (space), a range (...), pressed in sequence (+), pressed together (&) — plus GTK's fixed keycap order and the disabled placeholder.`,controls:[{name:`disabledText`,label:`Placeholder`,type:Y.TEXT,defaultValue:`Disabled`}]};var ul=__exportAll$1({ShortcutLabelLevelsStory:()=>fl,ShortcutLabelStories:()=>pl,ShortcutLabelStory:()=>dl}),dl=class ShortcutLabelStory extends Z{_widget=null;static{o.registerClass({GTypeName:`AdwStorybookShortcutLabel`},ShortcutLabelStory)}constructor(){super(Z.fromMeta(ShortcutLabelStory.getMetadata(),`Default`))}static getMetadata(){return{...cl,component:s.ShortcutLabel.$gtype}}initialize(){this._widget=new s.ShortcutLabel({accelerator:this.args.accelerator,disabledText:this.args.disabledText,halign:n.Align.CENTER,valign:n.Align.CENTER}),this.addContent(this._widget)}updateArgs(e){this._widget&&(this._widget.disabledText=this.args.disabledText,this._widget.accelerator=this.args.accelerator)}};o.type_ensure(dl.$gtype);var fl=class ShortcutLabelLevelsStory extends Z{_widgets=[];static{o.registerClass({GTypeName:`AdwStorybookShortcutLabelLevels`},ShortcutLabelLevelsStory)}constructor(){super(Z.fromMeta(ShortcutLabelLevelsStory.getMetadata(),`Default`))}static getMetadata(){return{...ll,component:s.ShortcutLabel.$gtype}}initialize(){let e=new n.Grid({row_spacing:12,column_spacing:24});for(let[t,r]of sl.entries()){let i=new n.Label({label:r.label,halign:n.Align.START});i.add_css_class(`dimmed`),e.attach(i,0,t,1,1);let o=new s.ShortcutLabel({accelerator:r.accelerator,disabledText:this.args.disabledText,halign:n.Align.END,hexpand:!0});e.attach(o,1,t,1,1),this._widgets.push(o)}this.addContent(e)}updateArgs(e){for(let e of this._widgets)e.disabledText=this.args.disabledText}};o.type_ensure(fl.$gtype);const pl={stories:[dl,fl]},ml={title:`Presentation/Spinner`,description:`Adw.Spinner — a lightweight loading indicator that spins continuously while visible.`,controls:[{name:`size`,label:`Size`,type:Y.RANGE,min:16,max:64,step:4,defaultValue:48}]};var hl=__exportAll$1({SpinnerStories:()=>_l,SpinnerStory:()=>gl}),gl=class SpinnerStory extends Z{_spinner=null;static{o.registerClass({GTypeName:`AdwStorybookSpinner`},SpinnerStory)}constructor(){super(Z.fromMeta(SpinnerStory.getMetadata(),`Default`))}static getMetadata(){return{...ml,component:s.Spinner.$gtype}}initialize(){let e=this.args.size;this._spinner=new s.Spinner({widthRequest:e,heightRequest:e,halign:n.Align.CENTER,valign:n.Align.CENTER}),this.addContent(this._spinner)}updateArgs(e){if(!this._spinner)return;let t=this.args.size;this._spinner.widthRequest=t,this._spinner.heightRequest=t}};o.type_ensure(gl.$gtype);const _l={stories:[gl]},vl={title:`Presentation/Status Page`,description:`Adw.StatusPage — a full-page empty state with an icon, title, description and optional action.`,controls:[{name:`iconName`,label:`Icon`,type:Y.SELECT,options:[{label:`Folder`,value:`folder-symbolic`},{label:`Mail`,value:`mail-unread-symbolic`},{label:`Search`,value:`system-search-symbolic`},{label:`Star`,value:`starred-symbolic`}],defaultValue:`folder-symbolic`},{name:`title`,label:`Title`,type:Y.TEXT,defaultValue:`No Documents`},{name:`description`,label:`Description`,type:Y.TEXT,defaultValue:`Documents you create or open will appear here.`}]};var yl=__exportAll$1({StatusPageStories:()=>xl,StatusPageStory:()=>bl}),bl=class StatusPageStory extends Z{_statusPage=null;static{o.registerClass({GTypeName:`AdwStorybookStatusPage`},StatusPageStory)}constructor(){super(Z.fromMeta(StatusPageStory.getMetadata(),`Default`))}static getMetadata(){return{...vl,component:s.StatusPage.$gtype}}initialize(){let e=new n.Button({label:`New Document`,halign:n.Align.CENTER,cssClasses:[`pill`,`suggested-action`]});this._statusPage=new s.StatusPage({iconName:this.args.iconName,title:this.args.title,description:this.args.description,child:e,widthRequest:460,heightRequest:320}),this.addContent(this._statusPage)}updateArgs(e){this._statusPage&&(this._statusPage.iconName=this.args.iconName,this._statusPage.title=this.args.title,this._statusPage.description=this.args.description)}};o.type_ensure(bl.$gtype);const xl={stories:[bl]},Sl={Pictures:[`Holiday`,`Screenshots`],Music:[`Albums`],Notes:[]},Cl={title:`Presentation/Tree Expander`,description:`Gtk.TreeExpander — the indent and the disclosure arrow a tree row wears in front of its contents. A leaf takes one indent in place of the arrow, so its text lines up with its siblings.`,controls:[{name:`expanded`,label:`Expanded`,type:Y.BOOLEAN,defaultValue:!0},{name:`hideExpander`,label:`Hide the arrow`,type:Y.BOOLEAN,defaultValue:!1},{name:`indentForIcon`,label:`Indent leaves by an arrow`,type:Y.BOOLEAN,defaultValue:!0}]};var wl=__exportAll$1({TreeExpanderStories:()=>El,TreeExpanderStory:()=>Tl}),Tl=class TreeExpanderStory extends Z{_view=null;_tree=null;_expanders=new Set;static{o.registerClass({GTypeName:`AdwStorybookTreeExpander`},TreeExpanderStory)}constructor(){super(Z.fromMeta(TreeExpanderStory.getMetadata(),`Default`))}static getMetadata(){return{...Cl,component:n.TreeExpander.$gtype}}initialize(){let e=n.StringList.new(Object.keys(Sl));this._tree=n.TreeListModel.new(e,!1,!1,e=>{let t=Sl[e.string]??[];return t.length===0?null:n.StringList.new([...t])});let t=new n.SignalListItemFactory;t.connect(`setup`,(e,t)=>{let r=t;r.focusable=!1;let i=new n.TreeExpander;i.child=new n.Label({xalign:0}),r.child=i,this._expanders.add(i)}),t.connect(`teardown`,(e,t)=>{let n=t.child;n!==null&&this._expanders.delete(n)}),t.connect(`bind`,(e,t)=>{let n=t,r=n.child,i=n.item;r.listRow=i,r.child.label=i.item.string,this._applyTo(r)}),this._view=new n.ListView({model:n.SingleSelection.new(this._tree),factory:t,vexpand:!0});let r=new n.ScrolledWindow({child:this._view,heightRequest:200,hexpand:!0});this.addContent(r),this._apply()}updateArgs(e){this._apply()}_apply(){if(this._tree!==null){for(let e=0;e<this._tree.get_n_items();e++){let t=this._tree.get_row(e);t!==null&&t.depth===0&&(t.expanded=this.args.expanded)}for(let e of this._expanders)this._applyTo(e)}}_applyTo(e){e.hideExpander=this.args.hideExpander,e.indentForIcon=this.args.indentForIcon}};o.type_ensure(Tl.$gtype);const El={stories:[Tl]},Dl={title:`Presentation/WindowHandle`,description:`Gtk.WindowHandle — the titlebar strip. Dragging it moves the window; a double click, a middle click and a right click raise the window actions the compositor (or, here, the titlebar settings) names.`,controls:[{name:`action`,label:`Double-click action`,type:Y.SELECT,options:[{label:`Toggle maximize`,value:`toggle-maximize`},{label:`Minimize`,value:`minimize`},{label:`Menu`,value:`menu`},{label:`None`,value:`none`}],defaultValue:`toggle-maximize`}]};var Ol=__exportAll$1({WindowHandleStories:()=>Al,WindowHandleStory:()=>kl}),kl=class WindowHandleStory extends Z{_handle=null;static{o.registerClass({GTypeName:`AdwStorybookWindowHandle`},WindowHandleStory)}constructor(){super(Z.fromMeta(WindowHandleStory.getMetadata(),`Default`))}static getMetadata(){return{...Dl,component:n.WindowHandle.$gtype}}initialize(){let e=new s.HeaderBar;e.set_title_widget(new s.WindowTitle({title:`Notes`})),this._handle=new n.WindowHandle({child:e,halign:n.Align.CENTER}),this._apply(),this.addContent(this._handle)}updateArgs(e){this._apply()}_apply(){this.args.action}};o.type_ensure(kl.$gtype);const Al={stories:[kl]},jl={title:`Presentation/Window Title`,description:`Adw.WindowTitle — a compact title/subtitle widget intended for a window or header bar.`,controls:[{name:`title`,label:`Title`,type:Y.TEXT,defaultValue:`Inbox`},{name:`subtitle`,label:`Subtitle`,type:Y.TEXT,defaultValue:`3 unread messages`}]};var Ml=__exportAll$1({WindowTitleStories:()=>Pl,WindowTitleStory:()=>Nl}),Nl=class WindowTitleStory extends Z{_windowTitle=null;static{o.registerClass({GTypeName:`AdwStorybookWindowTitle`},WindowTitleStory)}constructor(){super(Z.fromMeta(WindowTitleStory.getMetadata(),`Default`))}static getMetadata(){return{...jl,component:s.WindowTitle.$gtype}}initialize(){this._windowTitle=new s.WindowTitle({title:this.args.title,subtitle:this.args.subtitle}),this.addContent(this._windowTitle)}updateArgs(e){this._windowTitle&&(this._windowTitle.title=this.args.title,this._windowTitle.subtitle=this.args.subtitle)}};o.type_ensure(Nl.$gtype);const Pl={stories:[Nl]},Fl={title:`Boxed Lists/Action Row`,description:`Adw.ActionRow — a preferences row with a title/subtitle, a prefix icon and a suffix button, shown inside a boxed list.`,controls:[{name:`title`,label:`Title`,type:Y.TEXT,defaultValue:`Wi-Fi`},{name:`subtitle`,label:`Subtitle`,type:Y.TEXT,defaultValue:`Connected to Highgarden 5GHz`},{name:`iconName`,label:`Prefix icon`,type:Y.SELECT,options:[{label:`Network`,value:`network-wireless-symbolic`},{label:`Folder`,value:`folder-symbolic`},{label:`Starred`,value:`starred-symbolic`}],defaultValue:`network-wireless-symbolic`},{name:`activatable`,label:`Activatable`,type:Y.BOOLEAN,defaultValue:!0}]};var Il=__exportAll$1({ActionRowStories:()=>Rl,ActionRowStory:()=>Ll}),Ll=class ActionRowStory extends Z{_row=null;_icon=null;_button=null;static{o.registerClass({GTypeName:`AdwStorybookActionRow`},ActionRowStory)}constructor(){super(Z.fromMeta(ActionRowStory.getMetadata(),`Default`))}static getMetadata(){return{...Fl,component:s.ActionRow.$gtype}}initialize(){this._row=new s.ActionRow({title:this.args.title,subtitle:this.args.subtitle}),this._icon=new n.Image({iconName:this.args.iconName}),this._row.add_prefix(this._icon),this._button=new n.Button({iconName:`go-next-symbolic`,valign:n.Align.CENTER}),this._button.add_css_class(`flat`),this._row.add_suffix(this._button),this._row.activatableWidget=this._button,this._row.activatable=this.args.activatable;let e=new s.PreferencesGroup;e.add(this._row);let t=new s.Clamp({maximumSize:400,child:e});this.addContent(t)}updateArgs(e){!this._row||!this._icon||(this._row.title=this.args.title,this._row.subtitle=this.args.subtitle,this._icon.iconName=this.args.iconName,this._row.activatable=this.args.activatable)}};o.type_ensure(Ll.$gtype);const Rl={stories:[Ll]},zl={title:`Boxed Lists/Button Row`,description:`Adw.ButtonRow — a full-width row that acts as a button, with an optional icon and style class.`,controls:[{name:`title`,label:`Title`,type:Y.TEXT,defaultValue:`Add account`},{name:`startIconName`,label:`Start icon`,type:Y.SELECT,options:[{label:`Add`,value:`list-add-symbolic`},{label:`Trash`,value:`user-trash-symbolic`},{label:`None`,value:``}],defaultValue:`list-add-symbolic`},{name:`style`,label:`Style`,type:Y.SELECT,options:[{label:`None`,value:`none`},{label:`Suggested`,value:`suggested-action`},{label:`Destructive`,value:`destructive-action`}],defaultValue:`suggested-action`}]};var Bl=__exportAll$1({ButtonRowStories:()=>Ul,ButtonRowStory:()=>Hl});const Vl=[`suggested-action`,`destructive-action`];var Hl=class ButtonRowStory extends Z{_row=null;static{o.registerClass({GTypeName:`AdwStorybookButtonRow`},ButtonRowStory)}constructor(){super(Z.fromMeta(ButtonRowStory.getMetadata(),`Default`))}static getMetadata(){return{...zl,component:s.ButtonRow.$gtype}}initialize(){this._row=new s.ButtonRow({title:this.args.title,startIconName:this.args.startIconName}),this._applyStyle(this.args.style);let e=new s.PreferencesGroup;e.add(this._row);let t=new s.Clamp({maximumSize:400,child:e});this.addContent(t)}_applyStyle(e){if(this._row){for(let e of Vl)this._row.remove_css_class(e);e!==`none`&&this._row.add_css_class(e)}}updateArgs(e){this._row&&(this._row.title=this.args.title,this._row.startIconName=this.args.startIconName,this._applyStyle(this.args.style))}};o.type_ensure(Hl.$gtype);const Ul={stories:[Hl]},Wl=[`Blue`,`Teal`,`Green`,`Orange`,`Purple`],Gl={title:`Boxed Lists/Combo Row`,description:`Adw.ComboRow — a preferences row with an inline drop-down backed by a Gtk.StringList.`,controls:[{name:`title`,label:`Title`,type:Y.TEXT,defaultValue:`Accent colour`},{name:`subtitle`,label:`Subtitle`,type:Y.TEXT,defaultValue:`Used to highlight selected items`},{name:`selected`,label:`Selected`,type:Y.NUMBER,min:0,max:4,step:1,defaultValue:1}]};var Kl=__exportAll$1({ComboRowStories:()=>Jl,ComboRowStory:()=>ql}),ql=class ComboRowStory extends Z{_row=null;static{o.registerClass({GTypeName:`AdwStorybookComboRow`},ComboRowStory)}constructor(){super(Z.fromMeta(ComboRowStory.getMetadata(),`Default`))}static getMetadata(){return{...Gl,component:s.ComboRow.$gtype}}initialize(){this._row=new s.ComboRow({title:this.args.title,subtitle:this.args.subtitle,model:new n.StringList({strings:[...Wl]}),selected:this.args.selected});let e=new s.PreferencesGroup;e.add(this._row);let t=new s.Clamp({maximumSize:400,child:e});this.addContent(t)}updateArgs(e){this._row&&(this._row.title=this.args.title,this._row.subtitle=this.args.subtitle,this._row.selected=this.args.selected)}};o.type_ensure(ql.$gtype);const Jl={stories:[ql]},Yl={title:`Boxed Lists/Entry Row`,description:`Adw.EntryRow — a preferences row whose title doubles as placeholder text for an inline entry.`,controls:[{name:`title`,label:`Title`,type:Y.TEXT,defaultValue:`Display name`},{name:`text`,label:`Text`,type:Y.TEXT,defaultValue:`Ada Lovelace`},{name:`showApplyButton`,label:`Show apply button`,type:Y.BOOLEAN,defaultValue:!0}]};var Xl=__exportAll$1({EntryRowStories:()=>Ql,EntryRowStory:()=>Zl}),Zl=class EntryRowStory extends Z{_row=null;static{o.registerClass({GTypeName:`AdwStorybookEntryRow`},EntryRowStory)}constructor(){super(Z.fromMeta(EntryRowStory.getMetadata(),`Default`))}static getMetadata(){return{...Yl,component:s.EntryRow.$gtype}}initialize(){this._row=new s.EntryRow({title:this.args.title,text:this.args.text,showApplyButton:this.args.showApplyButton});let e=new s.PreferencesGroup;e.add(this._row);let t=new s.Clamp({maximumSize:400,child:e});this.addContent(t)}updateArgs(e){this._row&&(this._row.title=this.args.title,this._row.text=this.args.text,this._row.showApplyButton=this.args.showApplyButton)}};o.type_ensure(Zl.$gtype);const Ql={stories:[Zl]},$l={title:`Boxed Lists/Expander Row`,description:`Adw.ExpanderRow — a preferences row that discloses nested rows and can carry an enable switch.`,controls:[{name:`title`,label:`Title`,type:Y.TEXT,defaultValue:`Proxy settings`},{name:`subtitle`,label:`Subtitle`,type:Y.TEXT,defaultValue:`Route traffic through a custom proxy`},{name:`expanded`,label:`Expanded`,type:Y.BOOLEAN,defaultValue:!0},{name:`showEnableSwitch`,label:`Show enable switch`,type:Y.BOOLEAN,defaultValue:!1}]};var eu=__exportAll$1({ExpanderRowStories:()=>nu,ExpanderRowStory:()=>tu}),tu=class ExpanderRowStory extends Z{_row=null;static{o.registerClass({GTypeName:`AdwStorybookExpanderRow`},ExpanderRowStory)}constructor(){super(Z.fromMeta(ExpanderRowStory.getMetadata(),`Default`))}static getMetadata(){return{...$l,component:s.ExpanderRow.$gtype}}initialize(){this._row=new s.ExpanderRow({title:this.args.title,subtitle:this.args.subtitle,expanded:this.args.expanded,showEnableSwitch:this.args.showEnableSwitch}),this._row.add_row(new s.EntryRow({title:`Host`,text:`proxy.example.com`})),this._row.add_row(new s.SwitchRow({title:`Use authentication`,active:!1}));let e=new s.PreferencesGroup;e.add(this._row);let t=new s.Clamp({maximumSize:400,child:e});this.addContent(t)}updateArgs(e){this._row&&(this._row.title=this.args.title,this._row.subtitle=this.args.subtitle,this._row.expanded=this.args.expanded,this._row.showEnableSwitch=this.args.showEnableSwitch)}};o.type_ensure(tu.$gtype);const nu={stories:[tu]},ru={title:`Boxed Lists/Password Entry Row`,description:`Adw.PasswordEntryRow — an entry row that masks its contents and shows a peek toggle.`,controls:[{name:`title`,label:`Title`,type:Y.TEXT,defaultValue:`Password`},{name:`text`,label:`Text`,type:Y.TEXT,defaultValue:`correct-horse-battery`}]};var iu=__exportAll$1({PasswordEntryRowStories:()=>ou,PasswordEntryRowStory:()=>au}),au=class PasswordEntryRowStory extends Z{_row=null;static{o.registerClass({GTypeName:`AdwStorybookPasswordEntryRow`},PasswordEntryRowStory)}constructor(){super(Z.fromMeta(PasswordEntryRowStory.getMetadata(),`Default`))}static getMetadata(){return{...ru,component:s.PasswordEntryRow.$gtype}}initialize(){this._row=new s.PasswordEntryRow({title:this.args.title,text:this.args.text});let e=new s.PreferencesGroup;e.add(this._row);let t=new s.Clamp({maximumSize:400,child:e});this.addContent(t)}updateArgs(e){this._row&&(this._row.title=this.args.title,this._row.text=this.args.text)}};o.type_ensure(au.$gtype);const ou={stories:[au]},su={title:`Boxed Lists/Preferences Group`,description:`Adw.PreferencesGroup — the boxed-list container that gathers a title, description, header-suffix widget and rows.`,controls:[{name:`title`,label:`Title`,type:Y.TEXT,defaultValue:`Account`},{name:`description`,label:`Description`,type:Y.TEXT,defaultValue:`Manage how this device signs in and syncs.`}]};var cu=__exportAll$1({PreferencesGroupStories:()=>uu,PreferencesGroupStory:()=>lu}),lu=class PreferencesGroupStory extends Z{_prefsGroup=null;static{o.registerClass({GTypeName:`AdwStorybookPreferencesGroup`},PreferencesGroupStory)}constructor(){super(Z.fromMeta(PreferencesGroupStory.getMetadata(),`Default`))}static getMetadata(){return{...su,component:s.PreferencesGroup.$gtype}}initialize(){let e=new n.Button({label:`Sign out`,valign:n.Align.CENTER});e.add_css_class(`flat`),this._prefsGroup=new s.PreferencesGroup({title:this.args.title,description:this.args.description,headerSuffix:e});let t=new s.EntryRow({title:`Display name`,text:`Grace Hopper`});this._prefsGroup.add(t);let r=new s.SwitchRow({title:`Sync over Wi-Fi only`,subtitle:`Avoid using mobile data for backups`,active:!0});this._prefsGroup.add(r);let i=new s.ComboRow({title:`Region`,model:new n.StringList({strings:[`Europe`,`Americas`,`Asia`,`Oceania`]}),selected:0});this._prefsGroup.add(i);let o=new s.Clamp({maximumSize:400,child:this._prefsGroup});this.addContent(o)}updateArgs(e){this._prefsGroup&&(this._prefsGroup.title=this.args.title,this._prefsGroup.description=this.args.description)}};o.type_ensure(lu.$gtype);const uu={stories:[lu]},du={title:`Boxed Lists/Preferences Row`,description:`Adw.PreferencesRow — the base of every boxed-list row: a list row with a title that the preferences dialog searches. The title can carry Pango markup and be made selectable.`,controls:[{name:`title`,label:`Title`,type:Y.TEXT,defaultValue:`A <b>plain</b> preferences row`},{name:`useMarkup`,label:`Use markup`,type:Y.BOOLEAN,defaultValue:!0},{name:`titleSelectable`,label:`Title selectable`,type:Y.BOOLEAN,defaultValue:!1}]};var fu=__exportAll$1({PreferencesRowStories:()=>mu,PreferencesRowStory:()=>pu}),pu=class PreferencesRowStory extends Z{_row=null;static{o.registerClass({GTypeName:`AdwStorybookPreferencesRow`},PreferencesRowStory)}constructor(){super(Z.fromMeta(PreferencesRowStory.getMetadata(),`Default`))}static getMetadata(){return{...du,component:s.PreferencesRow.$gtype}}initialize(){this._row=new s.PreferencesRow,this._apply();let e=new s.PreferencesGroup;e.add(this._row);let t=new s.Clamp({maximumSize:400,child:e});this.addContent(t)}updateArgs(e){this._apply()}_apply(){this._row&&(this._row.title=this.args.title,this._row.useMarkup=this.args.useMarkup,this._row.titleSelectable=this.args.titleSelectable)}};o.type_ensure(pu.$gtype);const mu={stories:[pu]},hu={title:`Boxed Lists/Spin Row`,description:`Adw.SpinRow — a preferences row with an inline spin button over a numeric adjustment.`,controls:[{name:`title`,label:`Title`,type:Y.TEXT,defaultValue:`Font size`},{name:`value`,label:`Value`,type:Y.NUMBER,min:0,max:100,step:1,defaultValue:16},{name:`digits`,label:`Digits`,type:Y.NUMBER,min:0,max:4,step:1,defaultValue:0}]};var gu=__exportAll$1({SpinRowStories:()=>vu,SpinRowStory:()=>_u}),_u=class SpinRowStory extends Z{_row=null;static{o.registerClass({GTypeName:`AdwStorybookSpinRow`},SpinRowStory)}constructor(){super(Z.fromMeta(SpinRowStory.getMetadata(),`Default`))}static getMetadata(){return{...hu,component:s.SpinRow.$gtype}}initialize(){this._row=new s.SpinRow({title:this.args.title,adjustment:new n.Adjustment({lower:0,upper:100,value:this.args.value,stepIncrement:1,pageIncrement:10}),digits:this.args.digits});let e=new s.PreferencesGroup;e.add(this._row);let t=new s.Clamp({maximumSize:400,child:e});this.addContent(t)}updateArgs(e){this._row&&(this._row.title=this.args.title,this._row.value=this.args.value,this._row.digits=this.args.digits)}};o.type_ensure(_u.$gtype);const vu={stories:[_u]},yu={title:`Boxed Lists/Switch Row`,description:`Adw.SwitchRow — a preferences row with a trailing switch, shown inside a boxed list.`,controls:[{name:`title`,label:`Title`,type:Y.TEXT,defaultValue:`Automatic updates`},{name:`subtitle`,label:`Subtitle`,type:Y.TEXT,defaultValue:`Download and install updates without asking`},{name:`active`,label:`Active`,type:Y.BOOLEAN,defaultValue:!0}]};var bu=__exportAll$1({SwitchRowStories:()=>Su,SwitchRowStory:()=>xu}),xu=class SwitchRowStory extends Z{_row=null;static{o.registerClass({GTypeName:`AdwStorybookSwitchRow`},SwitchRowStory)}constructor(){super(Z.fromMeta(SwitchRowStory.getMetadata(),`Default`))}static getMetadata(){return{...yu,component:s.SwitchRow.$gtype}}initialize(){this._row=new s.SwitchRow({title:this.args.title,subtitle:this.args.subtitle,active:this.args.active});let e=new s.PreferencesGroup;e.add(this._row);let t=new s.Clamp({maximumSize:400,child:e});this.addContent(t)}updateArgs(e){this._row&&(this._row.title=this.args.title,this._row.subtitle=this.args.subtitle,this._row.active=this.args.active)}};o.type_ensure(xu.$gtype);const Su={stories:[xu]},Cu={title:`Text/Editable Label`,description:`Gtk.EditableLabel — a label you click and edit in place. Enter starts editing, Enter commits, Escape discards, and editable=false leaves it a label; the draft lives in the entry, not in the label.`,controls:[{name:`text`,label:`Text`,type:Y.TEXT,defaultValue:`Ada Lovelace`},{name:`editable`,label:`Editable`,type:Y.BOOLEAN,defaultValue:!0},{name:`editing`,label:`Editing`,type:Y.BOOLEAN,defaultValue:!1}]};var wu=__exportAll$1({EditableLabelStories:()=>Eu,EditableLabelStory:()=>Tu}),Tu=class EditableLabelStory extends Z{_label=null;static{o.registerClass({GTypeName:`AdwStorybookEditableLabel`},EditableLabelStory)}constructor(){super(Z.fromMeta(EditableLabelStory.getMetadata(),`Default`))}static getMetadata(){return{...Cu,component:n.EditableLabel.$gtype}}initialize(){this._label=new n.EditableLabel({halign:n.Align.CENTER}),this._apply(),this.addContent(this._label)}updateArgs(e){this._apply()}_apply(){this._label&&(this._label.editing||(this._label.text=this.args.text),this._label.editable=this.args.editable,this._label.editing=this.args.editing)}};o.type_ensure(Tu.$gtype);const Eu={stories:[Tu]},Du={title:`Text/Search Bar`,description:`Gtk.SearchBar — the strip that reveals a search entry when search starts. The property IS the revealer's reveal-child, so one boolean decides both whether the strip is shown and whether the search is on; hiding it clears the entry.`,controls:[{name:`searchModeEnabled`,label:`Search mode`,type:Y.BOOLEAN,defaultValue:!1},{name:`showCloseButton`,label:`Close button`,type:Y.BOOLEAN,defaultValue:!0}]};var Ou=__exportAll$1({SearchBarStories:()=>Au,SearchBarStory:()=>ku}),ku=class SearchBarStory extends Z{_bar=null;_entry=null;static{o.registerClass({GTypeName:`AdwStorybookSearchBar`},SearchBarStory)}constructor(){super(Z.fromMeta(SearchBarStory.getMetadata(),`Default`))}static getMetadata(){return{...Du,component:n.SearchBar.$gtype}}initialize(){this._entry=new n.SearchEntry({hexpand:!0}),this._bar=new n.SearchBar({child:this._entry}),this._apply(),this.addContent(this._bar)}updateArgs(e){this._apply()}_apply(){this._bar&&(this._bar.search_mode_enabled=this.args.searchModeEnabled,this._bar.show_close_button=this.args.showCloseButton)}};o.type_ensure(ku.$gtype);const Au={stories:[ku]},ju={title:`Text/Text View`,description:`Gtk.TextView — the multi-line editor. Its text lives in a Gtk.TextBuffer rather than in a property, wrap-mode and justification are Pango's, and accepts-tab defaults to TRUE, which is the opposite of a browser's.`,controls:[{name:`text`,label:`Text`,type:Y.TEXT,defaultValue:`A text view holds as many lines as it is given.
|
|
353
|
+
Tab inserts a tab character.`},{name:`wrapMode`,label:`Wrap mode`,type:Y.SELECT,options:[{label:`None`,value:`none`},{label:`Char`,value:`char`},{label:`Word`,value:`word`},{label:`Word or char`,value:`word-char`}],defaultValue:`none`},{name:`justification`,label:`Justification`,type:Y.SELECT,options:[{label:`Left`,value:`left`},{label:`Right`,value:`right`},{label:`Center`,value:`center`},{label:`Fill`,value:`fill`}],defaultValue:`left`},{name:`monospace`,label:`Monospace`,type:Y.BOOLEAN,defaultValue:!1},{name:`acceptsTab`,label:`Tab inserts a tab`,type:Y.BOOLEAN,defaultValue:!0},{name:`cursorVisible`,label:`Show cursor`,type:Y.BOOLEAN,defaultValue:!0},{name:`topMargin`,label:`Top margin`,type:Y.NUMBER,defaultValue:6}]};var Mu=__exportAll$1({TextViewStories:()=>Pu,TextViewStory:()=>Nu}),Nu=class TextViewStory extends Z{_buffer=null;_view=null;static{o.registerClass({GTypeName:`AdwStorybookTextView`},TextViewStory)}constructor(){super(Z.fromMeta(TextViewStory.getMetadata(),`Default`))}static getMetadata(){return{...ju,component:n.TextView.$gtype}}initialize(){this._buffer=new n.TextBuffer,this._view=new n.TextView({buffer:this._buffer,hexpand:!0,vexpand:!1,top_margin:6});let e=new n.ScrolledWindow({hscrollbar_policy:n.PolicyType.AUTOMATIC,vscrollbar_policy:n.PolicyType.AUTOMATIC,hexpand:!0,vexpand:!1,child:this._view});e.set_size_request(320,-1),this._apply(),this.addContent(e)}updateArgs(e){this._apply()}_apply(){if(!this._buffer||!this._view)return;let e=this.args.text;this._buffer.text!==e&&(this._buffer.text=e),this._view.wrap_mode=this.args.wrapMode??`none`,this._view.justification=this.args.justification??`left`,this._view.monospace=this.args.monospace,this._view.accepts_tab=this.args.acceptsTab,this._view.cursor_visible=this.args.cursorVisible,this._view.top_margin=Number(this.args.topMargin??0)}};o.type_ensure(Nu.$gtype);const Pu={stories:[Nu]},Fu={title:`Text/Text`,description:`Gtk.Text — the single-line text widget every Gtk.Entry is built on. Standalone it is a field with a placeholder and a length limit; visibility=false masks it, propagate-text-width grows it with its text.`,controls:[{name:`text`,label:`Text`,type:Y.TEXT,defaultValue:`Ada Lovelace`},{name:`placeholderText`,label:`Placeholder`,type:Y.TEXT,defaultValue:``},{name:`editable`,label:`Editable`,type:Y.BOOLEAN,defaultValue:!0},{name:`visibility`,label:`Visible`,type:Y.BOOLEAN,defaultValue:!0},{name:`maxLength`,label:`Max length (0 = none)`,type:Y.NUMBER,defaultValue:0},{name:`propagateTextWidth`,label:`Grow with text`,type:Y.BOOLEAN,defaultValue:!1}]};var Iu=__exportAll$1({TextStories:()=>Ru,TextStory:()=>Lu}),Lu=class TextStory extends Z{_text=null;static{o.registerClass({GTypeName:`AdwStorybookText`},TextStory)}constructor(){super(Z.fromMeta(TextStory.getMetadata(),`Default`))}static getMetadata(){return{...Fu,component:n.Text.$gtype}}initialize(){this._text=new n.Text({halign:n.Align.CENTER}),this._apply(),this.addContent(this._text)}updateArgs(e){this._apply()}_apply(){this._text&&(this._text.text=this.args.text,this._text.placeholder_text=this.args.placeholderText,this._text.editable=this.args.editable,this._text.visibility=this.args.visibility,this._text.max_length=Number(this.args.maxLength??0),this._text.propagate_text_width=this.args.propagateTextWidth)}};o.type_ensure(Lu.$gtype);const Ru={stories:[Lu]},zu=[{name:`allowScrollWheel`,label:`Allow scroll wheel`,type:Y.BOOLEAN,defaultValue:!0},{name:`allowLongSwipes`,label:`Allow long swipes`,type:Y.BOOLEAN,defaultValue:!1}],Bu={title:`View Switching/Carousel (Dots)`,description:`Adw.Carousel — a horizontally swipeable pager with three pages, paired with Adw.CarouselIndicatorDots.`,controls:zu},Vu={title:`View Switching/Carousel (Lines)`,description:`Adw.Carousel — the same swipeable pager paired with Adw.CarouselIndicatorLines instead of dots.`,controls:zu};var Hu=__exportAll$1({CarouselDotsStory:()=>Wu,CarouselLinesStory:()=>Gu,CarouselStories:()=>Ku});const Uu=[{title:`Welcome`,css:`accent`},{title:`Discover`,css:`success`},{title:`Get started`,css:`warning`}];function buildPage(e,t){let r=new n.Box({orientation:n.Orientation.VERTICAL,halign:n.Align.CENTER,valign:n.Align.CENTER,widthRequest:440,heightRequest:260});r.add_css_class(`card`),r.add_css_class(t);let i=new n.Label({label:e,vexpand:!0,valign:n.Align.CENTER});return i.add_css_class(`title-1`),r.append(i),r}var Wu=class CarouselDotsStory extends Z{_carousel=null;static{o.registerClass({GTypeName:`AdwStorybookCarouselDots`},CarouselDotsStory)}constructor(){super(Z.fromMeta(CarouselDotsStory.getMetadata(),`Default`))}static getMetadata(){return{...Bu,component:s.Carousel.$gtype}}initialize(){this._carousel=new s.Carousel({allowScrollWheel:this.args.allowScrollWheel,allowLongSwipes:this.args.allowLongSwipes,vexpand:!0});for(let e of Uu)this._carousel.append(buildPage(e.title,e.css));let e=new s.CarouselIndicatorDots({carousel:this._carousel}),t=new n.Box({orientation:n.Orientation.VERTICAL,spacing:12,widthRequest:480,heightRequest:340});t.append(this._carousel),t.append(e),this.addContent(t)}updateArgs(e){this._carousel&&(this._carousel.allowScrollWheel=this.args.allowScrollWheel,this._carousel.allowLongSwipes=this.args.allowLongSwipes)}};o.type_ensure(Wu.$gtype);var Gu=class CarouselLinesStory extends Z{_carousel=null;static{o.registerClass({GTypeName:`AdwStorybookCarouselLines`},CarouselLinesStory)}constructor(){super(Z.fromMeta(CarouselLinesStory.getMetadata(),`Default`))}static getMetadata(){return{...Vu,component:s.Carousel.$gtype}}initialize(){this._carousel=new s.Carousel({allowScrollWheel:this.args.allowScrollWheel,allowLongSwipes:this.args.allowLongSwipes,vexpand:!0});for(let e of Uu)this._carousel.append(buildPage(e.title,e.css));let e=new s.CarouselIndicatorLines({carousel:this._carousel}),t=new n.Box({orientation:n.Orientation.VERTICAL,spacing:12,widthRequest:480,heightRequest:340});t.append(this._carousel),t.append(e),this.addContent(t)}updateArgs(e){this._carousel&&(this._carousel.allowScrollWheel=this.args.allowScrollWheel,this._carousel.allowLongSwipes=this.args.allowLongSwipes)}};o.type_ensure(Gu.$gtype);const Ku={stories:[Wu,Gu]},qu={title:`View Switching/Inline View Switcher`,description:`Adw.InlineViewSwitcher — a compact inline switcher that can show labels, icons, or both for an Adw.ViewStack.`,controls:[{name:`displayMode`,label:`Display mode`,type:Y.SELECT,options:[{label:`Labels`,value:`labels`},{label:`Icons`,value:`icons`},{label:`Both`,value:`both`}],defaultValue:`both`}]};var Ju=__exportAll$1({InlineViewSwitcherStories:()=>Xu,InlineViewSwitcherStory:()=>Yu}),Yu=class InlineViewSwitcherStory extends Z{_switcher=null;static{o.registerClass({GTypeName:`AdwStorybookInlineViewSwitcher`},InlineViewSwitcherStory)}constructor(){super(Z.fromMeta(InlineViewSwitcherStory.getMetadata(),`Default`))}static getMetadata(){return{...qu,component:s.InlineViewSwitcher.$gtype}}buildPage(e,t,n){return new s.StatusPage({iconName:t,title:e,description:n,vexpand:!0})}initialize(){let e=new s.ViewStack({vexpand:!0});e.add_titled_with_icon(this.buildPage(`Overview`,`view-grid-symbolic`,`A quick summary of your project.`),`overview`,`Overview`,`view-grid-symbolic`),e.add_titled_with_icon(this.buildPage(`Activity`,`document-edit-symbolic`,`Recent edits and changes.`),`activity`,`Activity`,`document-edit-symbolic`),e.add_titled_with_icon(this.buildPage(`Settings`,`emblem-system-symbolic`,`Configure how things behave.`),`settings`,`Settings`,`emblem-system-symbolic`),this._switcher=new s.InlineViewSwitcher({stack:e,displayMode:this.modeFromArg(this.args.displayMode),halign:n.Align.CENTER});let t=new n.Box({orientation:n.Orientation.VERTICAL,spacing:12,widthRequest:480,heightRequest:340});t.append(this._switcher),t.append(e),this.addContent(t)}modeFromArg(e){return e===`labels`?s.InlineViewSwitcherDisplayMode.LABELS:e===`icons`?s.InlineViewSwitcherDisplayMode.ICONS:s.InlineViewSwitcherDisplayMode.BOTH}updateArgs(e){this._switcher&&(this._switcher.displayMode=this.modeFromArg(this.args.displayMode))}};o.type_ensure(Yu.$gtype);const Xu={stories:[Yu]},Zu=[{name:`overview`,label:`Overview`,body:`A notebook brings its own tab strip.`},{name:`activity`,label:`Activity`,body:`tab-pos says which edge the strip is on.`},{name:`notes`,label:``,body:`No tab-label: the tab reads "Page 3".`}],Qu={title:`View Switching/Notebook`,description:'Gtk.Notebook — the older page container, a stack that brings its own tab bar. `tab-pos` picks the edge (top, bottom, left, right), `show-tabs` takes the strip away, `show-border` is the bevel around the pages — a CSS class in C — and `page` is the current page by INDEX rather than by name. A GtkNotebookPage is a GObject rather than a widget, so its tab-label and friends live on the page itself, and a page without one gets the number "Page N" as its tab text. `enable-popup` puts the pages in a right-click menu.',controls:[{name:`tabPos`,label:`Tab position`,type:Y.SELECT,options:[{label:`Top`,value:`top`},{label:`Bottom`,value:`bottom`},{label:`Left`,value:`left`},{label:`Right`,value:`right`}],defaultValue:`top`},{name:`showTabs`,label:`Show tabs`,type:Y.BOOLEAN,defaultValue:!0},{name:`showBorder`,label:`Show border`,type:Y.BOOLEAN,defaultValue:!0},{name:`enablePopup`,label:`Enable popup (right-click)`,type:Y.BOOLEAN,defaultValue:!1}]};var $u=__exportAll$1({NotebookStories:()=>nd,NotebookStory:()=>td});const ed={top:n.PositionType.TOP,bottom:n.PositionType.BOTTOM,left:n.PositionType.LEFT,right:n.PositionType.RIGHT};var td=class NotebookStory extends Z{_notebook=null;static{o.registerClass({GTypeName:`AdwStorybookNotebook`},NotebookStory)}constructor(){super(Z.fromMeta(NotebookStory.getMetadata(),`Default`))}static getMetadata(){return{...Qu,component:n.Notebook.$gtype}}initialize(){this._notebook=new n.Notebook({vexpand:!0,widthRequest:480,heightRequest:320});for(let e of Zu){let t=new n.Box({orientation:n.Orientation.VERTICAL,halign:n.Align.CENTER,valign:n.Align.CENTER,spacing:6});t.append(new n.Label({label:e.label||e.name,cssClasses:[`title-4`]})),t.append(new n.Label({label:e.body,cssClasses:[`title-2`]}));let r=e.label?new n.Label({label:e.label}):null,i=new n.Label({label:e.label||e.name});this._notebook.append_page_menu(t,r,i)}this._apply(),this.addContent(this._notebook)}updateArgs(e){this._apply()}_apply(){this._notebook&&(this._notebook.tab_pos=ed[this.args.tabPos]??n.PositionType.TOP,this._notebook.show_tabs=this.args.showTabs,this._notebook.enable_popup=this.args.enablePopup,this._notebook.show_border=this.args.showBorder)}};o.type_ensure(td.$gtype);const nd={stories:[td]},rd=[{name:`inbox`,title:`Inbox`,icon:`mail-unread-symbolic`,attn:!1,body:`Three unread conversations.`},{name:`starred`,title:`Starred`,icon:`starred-symbolic`,attn:!1,body:`Messages marked important.`},{name:`drafts`,title:`Drafts`,icon:`document-edit-symbolic`,attn:!0,body:`One draft needs attention.`},{name:`settings`,title:``,icon:`preferences-system-symbolic`,attn:!1,body:`No row: a title is the row.`}],id={title:`View Switching/Stack Sidebar`,description:"Gtk.StackSidebar — a vertical list of a Gtk.Stack's pages, the sidebar counterpart of the stack switcher. A row is made of the page's TITLE alone: `update_row` never reads `icon-name`, so the page with only an icon at the end of this story gets no row at all, where the switcher would show an icon button for it. `needs-attention` puts a dot in front of the label.",controls:[{name:`transitionType`,label:`Transition type`,type:Y.SELECT,options:[{label:`None`,value:`none`},{label:`Crossfade`,value:`crossfade`},{label:`Slide left / right`,value:`slide-left-right`}],defaultValue:`slide-left-right`}]};var ad=__exportAll$1({StackSidebarStories:()=>cd,StackSidebarStory:()=>sd});const od={none:n.StackTransitionType.NONE,crossfade:n.StackTransitionType.CROSSFADE,"slide-left-right":n.StackTransitionType.SLIDE_LEFT_RIGHT};var sd=class StackSidebarStory extends Z{_stack=null;static{o.registerClass({GTypeName:`AdwStorybookStackSidebar`},StackSidebarStory)}constructor(){super(Z.fromMeta(StackSidebarStory.getMetadata(),`Default`))}static getMetadata(){return{...id,component:n.StackSidebar.$gtype}}initialize(){this._stack=new n.Stack({vexpand:!0,transitionDuration:200});for(let e of rd){let t=new n.Label({label:e.body});t.add_css_class(`title-2`);let r=new n.Box({orientation:n.Orientation.VERTICAL,halign:n.Align.CENTER,valign:n.Align.CENTER,spacing:6});r.append(new n.Label({label:e.title||e.name,cssClasses:[`title-4`]})),r.append(t);let i=this._stack.add_titled(r,e.name,e.title);i.icon_name=e.icon,i.needs_attention=e.attn,i.use_underline=!0}let e=new n.StackSidebar({stack:this._stack}),t=new n.Box({orientation:n.Orientation.VERTICAL,spacing:0});t.append(e);let r=new n.Paned({orientation:n.Orientation.HORIZONTAL,widthRequest:480,heightRequest:320});r.set_start_child(t),r.set_end_child(this._stack),r.set_position(180),this._apply(),this.addContent(r)}updateArgs(e){this._apply()}_apply(){this._stack&&(this._stack.transition_type=od[this.args.transitionType]??n.StackTransitionType.NONE)}};o.type_ensure(sd.$gtype);const cd={stories:[sd]},ld=[{name:`inbox`,title:`Inbox`,icon:`mail-unread-symbolic`,attn:!1,body:`Three unread conversations.`},{name:`starred`,title:`Starred`,icon:`starred-symbolic`,attn:!1,body:`Messages marked important.`},{name:`archive`,title:`Archive`,icon:``,attn:!1,body:`Older conversations kept for reference.`},{name:`drafts`,title:``,icon:`document-edit-symbolic`,attn:!0,body:`One draft needs your attention.`}],ud={title:`View Switching/Stack Switcher`,description:"Gtk.StackSwitcher — a linked row of toggle buttons, one per page of a Gtk.Stack. A page with a title and no icon gets a label button; one with an icon and no title gets an icon button and puts the title on the switcher as a tooltip; a page with NEITHER is left out of the row entirely. `orientation` turns the row vertical, and `needs-attention` on a page puts a dot on its button.",controls:[{name:`orientation`,label:`Orientation`,type:Y.SELECT,options:[{label:`Horizontal`,value:`horizontal`},{label:`Vertical`,value:`vertical`}],defaultValue:`horizontal`},{name:`transitionType`,label:`Transition type`,type:Y.SELECT,options:[{label:`None`,value:`none`},{label:`Crossfade`,value:`crossfade`},{label:`Slide left / right`,value:`slide-left-right`}],defaultValue:`slide-left-right`}]};var dd=__exportAll$1({StackSwitcherStories:()=>md,StackSwitcherStory:()=>pd});const fd={none:n.StackTransitionType.NONE,crossfade:n.StackTransitionType.CROSSFADE,"slide-left-right":n.StackTransitionType.SLIDE_LEFT_RIGHT};var pd=class StackSwitcherStory extends Z{_stack=null;_switcher=null;static{o.registerClass({GTypeName:`AdwStorybookStackSwitcher`},StackSwitcherStory)}constructor(){super(Z.fromMeta(StackSwitcherStory.getMetadata(),`Default`))}static getMetadata(){return{...ud,component:n.StackSwitcher.$gtype}}initialize(){this._stack=new n.Stack({vexpand:!0,transitionDuration:200});for(let e of ld){let t=new n.Label({label:e.body});t.add_css_class(`title-2`);let r=new n.Box({orientation:n.Orientation.VERTICAL,halign:n.Align.CENTER,valign:n.Align.CENTER,spacing:6});if(r.append(new n.Label({label:e.title||e.name,cssClasses:[`title-4`]})),r.append(t),e.icon){let t=this._stack.add_titled(r,e.name,e.title);t.icon_name=e.icon,t.needs_attention=e.attn,t.use_underline=!0}else{let t=this._stack.add_titled(r,e.name,e.title);t.needs_attention=e.attn,t.use_underline=!0}}this._switcher=new n.StackSwitcher({stack:this._stack,halign:n.Align.CENTER});let e=new n.Box({orientation:n.Orientation.VERTICAL,spacing:12,widthRequest:480,heightRequest:320});e.append(this._switcher),e.append(this._stack),this._apply(),this.addContent(e)}updateArgs(e){this._apply()}_apply(){!this._stack||!this._switcher||(this._stack.transition_type=fd[this.args.transitionType]??n.StackTransitionType.NONE,this._switcher.orientation=this.args.orientation===`vertical`?n.Orientation.VERTICAL:n.Orientation.HORIZONTAL)}};o.type_ensure(pd.$gtype);const md={stories:[pd]},hd=[{name:`overview`,title:`Overview`,attn:!1,body:`Three pages, one visible at a time.`},{name:`activity`,title:`Activity`,attn:!1,body:`Switching is animated by transition-type.`},{name:`settings`,title:`Settings`,attn:!0,body:`This page wants your attention.`}],gd={title:`View Switching/Stack`,description:"Gtk.Stack — one visible child out of many, with the animated change between them. `transition-type` picks the animation and `transition-duration` its length; `hhomogeneous` and `vhomogeneous` say whether every page is allocated the same size. A Gtk.StackPage is a GObject rather than a widget, so its title, icon and needs-attention live on the page itself.",controls:[{name:`transitionType`,label:`Transition type`,type:Y.SELECT,options:[{label:`None`,value:`none`},{label:`Crossfade`,value:`crossfade`},{label:`Slide left / right`,value:`slide-left-right`},{label:`Slide up / down`,value:`slide-up-down`},{label:`Over left / right`,value:`over-left-right`},{label:`Rotate left / right`,value:`rotate-left-right`}],defaultValue:`slide-left-right`},{name:`transitionDuration`,label:`Duration (ms)`,type:Y.RANGE,min:0,max:600,step:50,defaultValue:200},{name:`interpolateSize`,label:`Interpolate size`,type:Y.BOOLEAN,defaultValue:!1},{name:`hhomogeneous`,label:`HHomogeneous`,type:Y.BOOLEAN,defaultValue:!0},{name:`vhomogeneous`,label:`VHomogeneous`,type:Y.BOOLEAN,defaultValue:!0}]};var _d=__exportAll$1({StackStories:()=>bd,StackStory:()=>yd});const vd={none:n.StackTransitionType.NONE,crossfade:n.StackTransitionType.CROSSFADE,"slide-left-right":n.StackTransitionType.SLIDE_LEFT_RIGHT,"slide-up-down":n.StackTransitionType.SLIDE_UP_DOWN,"over-left-right":n.StackTransitionType.OVER_LEFT_RIGHT,"rotate-left-right":n.StackTransitionType.ROTATE_LEFT_RIGHT};var yd=class StackStory extends Z{_stack=null;_switcher=null;static{o.registerClass({GTypeName:`AdwStorybookStack`},StackStory)}constructor(){super(Z.fromMeta(StackStory.getMetadata(),`Default`))}static getMetadata(){return{...gd,component:n.Stack.$gtype}}initialize(){this._stack=new n.Stack({vexpand:!0,transitionDuration:200});for(let e of hd){let t=new n.Label({label:e.body,vexpand:!0});t.add_css_class(`title-2`);let r=new n.Box({orientation:n.Orientation.VERTICAL,halign:n.Align.CENTER,valign:n.Align.CENTER,spacing:6});r.append(new n.Label({label:e.title,cssClasses:[`title-4`]})),r.append(t);let i=this._stack.add_titled(r,e.name,e.title);i.needs_attention=e.attn,i.use_underline=!0}this._switcher=new n.StackSwitcher({stack:this._stack,halign:n.Align.CENTER});let e=new n.Box({orientation:n.Orientation.VERTICAL,spacing:12,widthRequest:480,heightRequest:320});e.append(this._switcher),e.append(this._stack),this._apply(),this.addContent(e)}updateArgs(e){this._apply()}_apply(){this._stack&&(this._stack.transition_type=vd[this.args.transitionType]??n.StackTransitionType.NONE,this._stack.transition_duration=this.args.transitionDuration,this._stack.interpolate_size=this.args.interpolateSize,this._stack.hhomogeneous=this.args.hhomogeneous,this._stack.vhomogeneous=this.args.vhomogeneous)}};o.type_ensure(yd.$gtype);const bd={stories:[yd]},xd={title:`View Switching/Tab Bar`,description:"Adw.TabBar — the tab bar as a widget of its own, bound to an Adw.TabView through its `view`: one chip per page, an action widget on either side, and a strip that can autohide or expand its chips.",controls:[{name:`autohide`,label:`Autohide`,type:Y.BOOLEAN,defaultValue:!1},{name:`expandTabs`,label:`Expand tabs`,type:Y.BOOLEAN,defaultValue:!1},{name:`inverted`,label:`Inverted`,type:Y.BOOLEAN,defaultValue:!1},{name:`startAction`,label:`Start action`,type:Y.BOOLEAN,defaultValue:!0},{name:`endAction`,label:`End action`,type:Y.BOOLEAN,defaultValue:!0}]};var Sd=__exportAll$1({TabBarStories:()=>Td,TabBarStory:()=>wd});const Cd=[{title:`Overview`,body:`A summary of everything at a glance.`},{title:`Details`,body:`The specifics, broken down line by line.`},{title:`History`,body:`A log of every change made so far.`}];var wd=class TabBarStory extends Z{_bar=null;_startAction=null;_endAction=null;static{o.registerClass({GTypeName:`AdwStorybookTabBar`},TabBarStory)}constructor(){super(Z.fromMeta(TabBarStory.getMetadata(),`Default`))}static getMetadata(){return{...xd,component:s.TabBar.$gtype}}initialize(){let e=new s.TabView({vexpand:!0});for(let t of Cd){let n=e.append(new s.StatusPage({iconName:`view-paged-symbolic`,title:t.title,description:t.body}));n.title=t.title}this._startAction=new n.Button({iconName:`list-add-symbolic`,tooltipText:`New page`,cssClasses:[`flat`]}),this._endAction=new n.Button({iconName:`view-more-symbolic`,tooltipText:`Menu`,cssClasses:[`flat`]});let t=new s.TabBar({view:e});this._bar=t;let r=new n.Box({orientation:n.Orientation.VERTICAL,widthRequest:480,heightRequest:320});r.append(t),r.append(e),this.addContent(r),this._apply()}updateArgs(e){this._apply()}_apply(){let e=this._bar;e!==null&&(e.autohide=this.args.autohide,e.expandTabs=this.args.expandTabs,e.inverted=this.args.inverted,e.startActionWidget=this.args.startAction?this._startAction:null,e.endActionWidget=this.args.endAction?this._endAction:null)}};o.type_ensure(wd.$gtype);const Td={stories:[wd]},Ed={title:`View Switching/Tab Button`,description:`Adw.TabButton — a button that shows how many pages an Adw.TabView holds, and a dot when a page you are not looking at needs attention. From ten pages the number shrinks; at a hundred it becomes a glyph.`,controls:[{name:`pages`,label:`Pages`,type:Y.RANGE,min:0,max:100,step:1,defaultValue:3},{name:`needsAttention`,label:`Last page needs attention`,type:Y.BOOLEAN,defaultValue:!1}]};var Dd=__exportAll$1({TabButtonStories:()=>kd,TabButtonStory:()=>Od}),Od=class TabButtonStory extends Z{_view=null;static{o.registerClass({GTypeName:`AdwStorybookTabButton`},TabButtonStory)}constructor(){super(Z.fromMeta(TabButtonStory.getMetadata(),`Default`))}static getMetadata(){return{...Ed,component:s.TabButton.$gtype}}initialize(){this._view=new s.TabView;let e=new s.TabButton({view:this._view,halign:n.Align.CENTER});this._apply(),this.addContent(e)}updateArgs(e){this._apply()}_apply(){let e=this._view;if(!e)return;let t=this.args.pages;for(;e.nPages<t;)e.append(new n.Box).title=`Page ${e.nPages}`;for(;e.nPages>t;)e.close_page(e.get_nth_page(e.nPages-1));for(let t=0;t<e.nPages;t++)e.get_nth_page(t).needsAttention=this.args.needsAttention&&t===e.nPages-1}};o.type_ensure(Od.$gtype);const kd={stories:[Od]},Ad={title:`View Switching/Tab Overview`,description:`Adw.TabOverview — a grid of tab thumbnails over an Adw.TabView; open it to see every page at once, search them and close or unpin them.`,controls:[{name:`open`,label:`Open`,type:Y.BOOLEAN,defaultValue:!0},{name:`enableSearch`,label:`Enable search`,type:Y.BOOLEAN,defaultValue:!0},{name:`enableNewTab`,label:`Enable new tab`,type:Y.BOOLEAN,defaultValue:!1},{name:`inverted`,label:`Inverted`,type:Y.BOOLEAN,defaultValue:!1}]};var jd=__exportAll$1({TabOverviewStories:()=>Pd,TabOverviewStory:()=>Nd});const Md=[{title:`Overview`,body:`A summary of everything at a glance.`},{title:`Details`,body:`The specifics, broken down line by line.`},{title:`History`,body:`A log of every change made so far.`}];var Nd=class TabOverviewStory extends Z{_overview=null;static{o.registerClass({GTypeName:`AdwStorybookTabOverview`},TabOverviewStory)}constructor(){super(Z.fromMeta(TabOverviewStory.getMetadata(),`Default`))}static getMetadata(){return{...Ad,component:s.TabOverview.$gtype}}initialize(){let e=new s.TabView({vexpand:!0});for(let[t,n]of Md.entries()){let r=new s.StatusPage({iconName:`view-paged-symbolic`,title:n.title,description:n.body,vexpand:!0}),i=e.append(r);i.title=n.title,t===0&&e.set_page_pinned(i,!0)}let t=new s.TabOverview({view:e,child:e,widthRequest:480,heightRequest:340});this._overview=t,t.connect(`create-tab`,()=>{let t=e.append(new s.StatusPage({iconName:`view-paged-symbolic`,title:`New Page`,vexpand:!0}));return t.title=`New Page`,t}),this.addContent(t),this._apply()}updateArgs(e){this._apply()}_apply(){let e=this._overview;e&&(e.enableSearch=this.args.enableSearch,e.enableNewTab=this.args.enableNewTab,e.inverted=this.args.inverted,e.open=this.args.open)}};o.type_ensure(Nd.$gtype);const Pd={stories:[Nd]},Fd={title:`View Switching/Tab View`,description:`Adw.TabView with an Adw.TabBar header — three tabbed pages; the tab bar can auto-hide when only one tab remains.`,controls:[{name:`autohide`,label:`Autohide tab bar`,type:Y.BOOLEAN,defaultValue:!1}]};var Id=__exportAll$1({TabViewStories:()=>zd,TabViewStory:()=>Rd});const Ld=[{title:`Overview`,body:`A summary of everything at a glance.`},{title:`Details`,body:`The specifics, broken down line by line.`},{title:`History`,body:`A log of every change made so far.`}];var Rd=class TabViewStory extends Z{_tabBar=null;static{o.registerClass({GTypeName:`AdwStorybookTabView`},TabViewStory)}constructor(){super(Z.fromMeta(TabViewStory.getMetadata(),`Default`))}static getMetadata(){return{...Fd,component:s.TabView.$gtype}}buildPageBody(e,t){return new s.StatusPage({iconName:`view-paged-symbolic`,title:e,description:t,vexpand:!0})}initialize(){let e=new s.TabView({vexpand:!0});for(let t of Ld){let n=e.append(this.buildPageBody(t.title,t.body));n.title=t.title}this._tabBar=new s.TabBar({view:e,autohide:this.args.autohide});let t=new n.Box({orientation:n.Orientation.VERTICAL,widthRequest:480,heightRequest:340});t.append(this._tabBar),t.append(e),this.addContent(t)}updateArgs(e){this._tabBar&&(this._tabBar.autohide=this.args.autohide)}};o.type_ensure(Rd.$gtype);const zd={stories:[Rd]},Bd=[{name:`inbox`,title:`Inbox`,icon:`mail-unread-symbolic`},{name:`starred`,title:`Starred`,icon:`starred-symbolic`},{name:`archive`,title:`Archive`,icon:`folder-symbolic`}],Vd={title:`View Switching/View Switcher Bar`,description:"Adw.ViewSwitcherBar — the narrow-window switcher, pinned to the bottom of a toolbar view. `reveal` is a REQUEST, not a state: a stack with fewer than two pages stays collapsed however loudly it is asked.",controls:[{name:`reveal`,label:`Reveal`,type:Y.BOOLEAN,defaultValue:!0}]};var Hd=__exportAll$1({ViewSwitcherBarStories:()=>Wd,ViewSwitcherBarStory:()=>Ud}),Ud=class ViewSwitcherBarStory extends Z{_bar=null;static{o.registerClass({GTypeName:`AdwStorybookViewSwitcherBar`},ViewSwitcherBarStory)}constructor(){super(Z.fromMeta(ViewSwitcherBarStory.getMetadata(),`Default`))}static getMetadata(){return{...Vd,component:s.ViewSwitcherBar.$gtype}}initialize(){let e=new s.ViewStack({vexpand:!0});for(let t of Bd){let n=new s.StatusPage({iconName:t.icon,title:t.title,description:`The ${t.title.toLowerCase()} page.`,vexpand:!0});e.add_titled_with_icon(n,t.name,t.title,t.icon)}this._bar=new s.ViewSwitcherBar({stack:e}),this._apply();let t=new s.ToolbarView({content:e,widthRequest:360,heightRequest:360});t.add_bottom_bar(this._bar),this.addContent(t)}updateArgs(e){this._apply()}_apply(){this._bar&&(this._bar.reveal=this.args.reveal)}};o.type_ensure(Ud.$gtype);const Wd={stories:[Ud]},Gd=[{name:`inbox`,title:`Inbox`,icon:`mail-unread-symbolic`,sectionTitle:`Mail`,badgeNumber:3},{name:`starred`,title:`Starred`,icon:`starred-symbolic`},{name:`drafts`,title:`Drafts`,icon:`document-edit-symbolic`},{name:`sent`,title:`Sent`,icon:`mail-send-symbolic`,sectionTitle:`Older`,needsAttention:!0},{name:`archive`,title:`Archive`,icon:`folder-symbolic`},{name:`trash`,title:`Trash`,icon:`user-trash-symbolic`}],Kd={title:`View Switching/View Switcher Sidebar`,description:"Adw.ViewSwitcherSidebar — an Adw.Sidebar driven by an Adw.ViewStack, which is the one Adw switcher whose rows can be grouped into sections and carry an unread dot or a badge. `page` collapses it into a page of boxed lists.",controls:[{name:`mode`,label:`Page mode`,type:Y.BOOLEAN,defaultValue:!1}]};var qd=__exportAll$1({ViewSwitcherSidebarStories:()=>Yd,ViewSwitcherSidebarStory:()=>Jd}),Jd=class ViewSwitcherSidebarStory extends Z{_switcher=null;static{o.registerClass({GTypeName:`AdwStorybookViewSwitcherSidebar`},ViewSwitcherSidebarStory)}constructor(){super(Z.fromMeta(ViewSwitcherSidebarStory.getMetadata(),`Default`))}static getMetadata(){return{...Kd,component:s.ViewSwitcherSidebar.$gtype}}initialize(){let e=new s.ViewStack({vexpand:!0});for(let t of Gd){let n=new s.StatusPage({iconName:t.icon,title:t.title,vexpand:!0});e.add_titled(n,t.name,t.title)}let t=e.get_pages();for(let e=0;e<t.get_n_items();e++){let n=t.get_item(e),r=Gd.find(e=>e.name===n.name);r?.sectionTitle&&(n.startsSection=!0,n.sectionTitle=r.sectionTitle,r.badgeNumber&&(n.badgeNumber=r.badgeNumber),r.needsAttention&&(n.needsAttention=!0))}let r=new s.ViewSwitcherSidebar({stack:e});this._switcher=r;let i=new n.Box({orientation:n.Orientation.HORIZONTAL,widthRequest:480,heightRequest:340});i.append(r),i.append(e),this.addContent(i),this._apply()}updateArgs(e){this._apply()}_apply(){this._switcher&&(this._switcher.mode=this.args.mode?s.SidebarMode.PAGE:s.SidebarMode.SIDEBAR)}};o.type_ensure(Jd.$gtype);const Yd={stories:[Jd]},Xd={title:`View Switching/View Switcher`,description:`Adw.ViewSwitcher — a segmented switcher whose buttons select pages in a paired Adw.ViewStack.`,controls:[{name:`policy`,label:`Policy`,type:Y.SELECT,options:[{label:`Wide`,value:`wide`},{label:`Narrow`,value:`narrow`}],defaultValue:`wide`}]};var Zd=__exportAll$1({ViewSwitcherStories:()=>$d,ViewSwitcherStory:()=>Qd}),Qd=class ViewSwitcherStory extends Z{_switcher=null;static{o.registerClass({GTypeName:`AdwStorybookViewSwitcher`},ViewSwitcherStory)}constructor(){super(Z.fromMeta(ViewSwitcherStory.getMetadata(),`Default`))}static getMetadata(){return{...Xd,component:s.ViewSwitcher.$gtype}}buildPage(e,t,n){return new s.StatusPage({iconName:t,title:e,description:n,vexpand:!0})}initialize(){let e=new s.ViewStack({vexpand:!0});e.add_titled_with_icon(this.buildPage(`Inbox`,`mail-unread-symbolic`,`You have three unread conversations.`),`inbox`,`Inbox`,`mail-unread-symbolic`),e.add_titled_with_icon(this.buildPage(`Starred`,`starred-symbolic`,`Messages you have marked as important.`),`starred`,`Starred`,`starred-symbolic`),e.add_titled_with_icon(this.buildPage(`Archive`,`folder-symbolic`,`Older conversations kept for reference.`),`archive`,`Archive`,`folder-symbolic`),this._switcher=new s.ViewSwitcher({stack:e,policy:this.policyFromArg(this.args.policy),halign:n.Align.CENTER});let t=new n.Box({orientation:n.Orientation.VERTICAL,spacing:12,widthRequest:480,heightRequest:340});t.append(this._switcher),t.append(e),this.addContent(t)}policyFromArg(e){return e===`narrow`?s.ViewSwitcherPolicy.NARROW:s.ViewSwitcherPolicy.WIDE}updateArgs(e){this._switcher&&(this._switcher.policy=this.policyFromArg(this.args.policy))}};o.type_ensure(Qd.$gtype);const $d={stories:[Qd]},ef={title:`Windows/Action Bar`,description:"Gtk.ActionBar — GTK's bottom bar, and the one libadwaita styles but does not own (`actionbar > revealer > box`). `start` appends and `end` PREPENDS, so the first end child sits nearest the edge; `center` is a real placement with no property behind it, because GtkBuilder refuses `center-widget`; and `revealed` slides the whole bar away.",controls:[{name:`revealed`,label:`Revealed`,type:Y.BOOLEAN,defaultValue:!0},{name:`center`,label:`Centre`,type:Y.SELECT,options:[{label:`A label`,value:`label`},{label:`Nothing`,value:`none`}],defaultValue:`label`}]};var tf=__exportAll$1({ActionBarStories:()=>rf,ActionBarStory:()=>nf}),nf=class ActionBarStory extends Z{_bar=null;_centre=null;static{o.registerClass({GTypeName:`AdwStorybookActionBar`},ActionBarStory)}constructor(){super(Z.fromMeta(ActionBarStory.getMetadata(),`Default`))}static getMetadata(){return{...ef,component:n.ActionBar.$gtype}}initialize(){this._bar=new n.ActionBar;let e=new n.Button({icon_name:`document-save-symbolic`});e.add_css_class(`flat`),this._bar.pack_end(e);let t=new n.Button({icon_name:`document-open-symbolic`});t.add_css_class(`flat`),this._bar.pack_end(t);let r=new n.Button({icon_name:`document-print-symbolic`});r.add_css_class(`flat`),this._bar.pack_start(r),this._centre=new n.Label({label:`notes.md`});let i=new n.Box({orientation:n.Orientation.VERTICAL,spacing:8});i.append(new n.Label({label:`The bar below is Gtk.ActionBar.`,css_classes:[`dimmed`]})),i.append(this._bar),this.addContent(i),this._apply()}updateArgs(e){this._apply()}_apply(){this._bar&&(this._bar.revealed=this.args.revealed,this._bar.set_center_widget(this.args.center===`label`?this._centre:null))}};o.type_ensure(nf.$gtype);const rf={stories:[nf]},af={title:`Windows/Application Window`,description:"Gtk.ApplicationWindow — a Gtk.Window that also handles an application menubar. The bar shows only when `show-menubar` is set AND the application HAS one: GTK builds it from the GtkApplication's menu model, and reads the item count before deciding (gtkapplicationwindow.c:400-402). Everything else about the window is the base class.",controls:[{name:`title`,label:`Title`,type:Y.TEXT,defaultValue:`Editor`},{name:`showMenubar`,label:`Show menubar`,type:Y.BOOLEAN,defaultValue:!0},{name:`hasMenubar`,label:`The application has one`,type:Y.BOOLEAN,defaultValue:!0},{name:`deletable`,label:`Deletable`,type:Y.BOOLEAN,defaultValue:!0}]};var of=__exportAll$1({GtkApplicationWindowStories:()=>cf,GtkApplicationWindowStory:()=>sf});function menubarModel(){let e=new r.Menu,t=new r.Menu;t.append(`_New`,`win.new`),t.append(`_Open…`,`win.open`);let n=new r.Menu;return n.append(`_Copy`,`win.copy`),n.append(`_Paste`,`win.paste`),e.append_section(null,t),e.append_section(null,n),e}var sf=class GtkApplicationWindowStory extends Z{_window=null;_application=null;_menubar=null;static{o.registerClass({GTypeName:`AdwStorybookGtkApplicationWindow`},GtkApplicationWindowStory)}constructor(){super(Z.fromMeta(GtkApplicationWindowStory.getMetadata(),`Default`))}static getMetadata(){return{...af,component:n.ApplicationWindow.$gtype}}initialize(){this._application=new n.Application({application_id:`eu.jumplink.AdwStorybookGtkApplicationWindow`}),this._menubar=menubarModel(),this._application.set_menubar(this._menubar),this._window=new n.ApplicationWindow({application:this._application,default_width:460,default_height:260}),this._window.set_titlebar(new n.HeaderBar);let e=new n.Box({orientation:n.Orientation.VERTICAL,spacing:12,margin_top:12,margin_start:12});e.append(new n.Label({label:`The bar above is built from the application menu.`,css_classes:[`dimmed`]})),this._window.set_child(e),this.addContent(this._window),this._apply()}updateArgs(e){this._apply()}_apply(){!this._window||!this._application||(this._window.title=this.args.title,this._window.deletable=this.args.deletable,this._application.set_menubar(this.args.hasMenubar?this._menubar:null),this._window.show_menubar=this.args.showMenubar)}};o.type_ensure(sf.$gtype);const cf={stories:[sf]},lf={title:`Windows/Header Bar`,description:"Gtk.HeaderBar — the titlebar widget: children packed at the start and at the end, the window title in the middle, and the window-frame buttons GTK would otherwise ask the window manager for. `end` PREPENDS, so the first end child sits nearest the edge; a `title` child takes the middle away from the derived title label; and `show-title-buttons` CREATES and REMOVES the two control groups rather than hiding them.",controls:[{name:`titleWidget`,label:`Title widget`,type:Y.SELECT,options:[{label:`The window title`,value:`none`},{label:`A custom centre widget`,value:`custom`}],defaultValue:`none`},{name:`showTitleButtons`,label:`Title buttons`,type:Y.BOOLEAN,defaultValue:!0},{name:`decorationLayout`,label:`Decoration layout`,type:Y.SELECT,options:[{label:`GNOME (menu:minimize,maximize,close)`,value:`menu:minimize,maximize,close`},{label:`Close only`,value:`:close`},{label:`macOS (icon:minimize,maximize)`,value:`icon:minimize,maximize`}],defaultValue:`menu:minimize,maximize,close`}]};var uf=__exportAll$1({GtkHeaderBarStories:()=>ff,GtkHeaderBarStory:()=>df}),df=class GtkHeaderBarStory extends Z{_bar=null;_titleLabel=null;static{o.registerClass({GTypeName:`AdwStorybookGtkHeaderBar`},GtkHeaderBarStory)}constructor(){super(Z.fromMeta(GtkHeaderBarStory.getMetadata(),`Default`))}static getMetadata(){return{...lf,component:n.HeaderBar.$gtype}}initialize(){this._bar=new n.HeaderBar;let e=new n.Button({icon_name:`open-menu-symbolic`});e.add_css_class(`flat`),this._bar.pack_end(e);let t=new n.Button({icon_name:`system-search-symbolic`});t.add_css_class(`flat`),this._bar.pack_end(t);let r=new n.Button({label:`‹`});r.add_css_class(`flat`),this._bar.pack_start(r),this._titleLabel=new n.Label({label:`Mailboxes`,css_classes:[`title`]}),this.addContent(this._bar),this._apply()}updateArgs(e){this._apply()}_apply(){this._bar&&(this._bar.decoration_layout=this.args.decorationLayout,this._bar.show_title_buttons=this.args.showTitleButtons,this.args.titleWidget===`custom`?this._bar.title_widget=this._titleLabel:this._bar.title_widget=null)}};o.type_ensure(df.$gtype);const ff={stories:[df]},pf={title:`Windows/Window`,description:"Gtk.Window — a toplevel with a `titlebar` and a `child`, and the properties that decide what its frame shows: `decorated`, `deletable`, `resizable`, `maximized` and `hide-on-close`. The BROWSER replica of this one is an IN-PAGE FRAME, not a toplevel: a browser document has no window to map. The story therefore cancels `close-request`, which is what an application does when it wants to keep the window.",controls:[{name:`title`,label:`Title`,type:Y.TEXT,defaultValue:`Documents`},{name:`decorated`,label:`Decorated`,type:Y.BOOLEAN,defaultValue:!0},{name:`deletable`,label:`Deletable`,type:Y.BOOLEAN,defaultValue:!0},{name:`resizable`,label:`Resizable`,type:Y.BOOLEAN,defaultValue:!0},{name:`maximized`,label:`Maximized`,type:Y.BOOLEAN,defaultValue:!1},{name:`modal`,label:`Modal`,type:Y.BOOLEAN,defaultValue:!1},{name:`hideOnClose`,label:`Hide on close`,type:Y.BOOLEAN,defaultValue:!0}]};var mf=__exportAll$1({GtkWindowStories:()=>gf,GtkWindowStory:()=>hf}),hf=class GtkWindowStory extends Z{_window=null;static{o.registerClass({GTypeName:`AdwStorybookGtkWindow`},GtkWindowStory)}constructor(){super(Z.fromMeta(GtkWindowStory.getMetadata(),`Default`))}static getMetadata(){return{...pf,component:n.Window.$gtype}}initialize(){this._window=new n.Window({default_width:460,default_height:280});let e=new n.HeaderBar;this._window.set_titlebar(e);let t=new n.Box({orientation:n.Orientation.VERTICAL,spacing:12,margin_top:12,margin_start:12});t.append(new n.Label({label:`The frame above is a Gtk.HeaderBar.`,css_classes:[`dimmed`]})),this._window.set_child(t),this.addContent(this._window),this._apply()}updateArgs(e){this._apply()}_apply(){this._window&&(this._window.title=this.args.title,this._window.decorated=this.args.decorated,this._window.deletable=this.args.deletable,this._window.resizable=this.args.resizable,this._window.maximized=this.args.maximized,this._window.modal=this.args.modal,this._window.hide_on_close=this.args.hideOnClose)}};o.type_ensure(hf.$gtype);const gf={stories:[hf]},_f={title:`Windows/Window Controls`,description:"Gtk.WindowControls — one SIDE of the window frame controls, and the decision table behind them. The decoration layout is split on the first colon; each token of the selected half builds one button or none, because `icon` and `minimize` want a SOVEREIGN window, `maximize` wants a resizable one and `close` wants a deletable one. `empty` is the property that says none of them did.",controls:[{name:`side`,label:`Side`,type:Y.SELECT,options:[{label:`Start`,value:`start`},{label:`End`,value:`end`}],defaultValue:`start`},{name:`decorationLayout`,label:`Decoration layout`,type:Y.SELECT,options:[{label:`GNOME (menu:minimize,maximize,close)`,value:`menu:minimize,maximize,close`},{label:`Windows (icon:minimize,maximize,close)`,value:`icon:minimize,maximize,close`},{label:`Close only`,value:`:close`},{label:`macOS (icon:minimize,maximize)`,value:`icon:minimize,maximize`}],defaultValue:`menu:minimize,maximize,close`},{name:`resizable`,label:`Resizable window`,type:Y.BOOLEAN,defaultValue:!0},{name:`maximized`,label:`Maximized window`,type:Y.BOOLEAN,defaultValue:!1},{name:`modal`,label:`Modal window`,type:Y.BOOLEAN,defaultValue:!1}]};var vf=__exportAll$1({WindowControlsStories:()=>bf,WindowControlsStory:()=>yf}),yf=class WindowControlsStory extends Z{_window=null;_controls=null;static{o.registerClass({GTypeName:`AdwStorybookWindowControls`},WindowControlsStory)}constructor(){super(Z.fromMeta(WindowControlsStory.getMetadata(),`Default`))}static getMetadata(){return{..._f,component:n.WindowControls.$gtype}}initialize(){this._window=new n.Window({title:`Documents`,default_width:420,default_height:220});let e=new n.Box({orientation:n.Orientation.VERTICAL,spacing:8});e.append(new n.Label({label:`The bar draws nothing outside a window.`,css_classes:[`dimmed`]})),this._window.set_child(e),this._controls=new n.WindowControls,this._window.set_titlebar(this._controls),this.addContent(this._window),this._apply()}updateArgs(e){this._apply()}_apply(){if(!this._window||!this._controls)return;let e=this.args.side===`end`?n.PackType.END:n.PackType.START;this._controls.side=e,this._controls.decoration_layout=this.args.decorationLayout,this._window.resizable=this.args.resizable,this._window.maximized=this.args.maximized,this._window.modal=this.args.modal}};o.type_ensure(yf.$gtype);const bf={stories:[yf]};await runStorybook({applicationId:`org.gjsify.AdwaitaStorybook`,title:`Adwaita Storybook`,stories:collectStoryModules([Cn,Dn,Mn,In,Bn,Gn,Xn,tr,or,ur,hr,br,wr,Or,Mr,Ir,Br,Wr,Jr,Qr,ni,oi,ui,mi,vi,Si,Ei,Ai,Fi,zi,Wi,Xi,ea,aa,la,pa,_a,xa,Ta,ka,Pa,za,Ua,qa,Za,to,ao,lo,mo,bo,To,Ao,Fo,zo,Uo,Jo,Qo,is,cs,fs,gs,bs,ws,Os,Ms,Is,Bs,Ws,Js,Qs,nc,sc,dc,yc,Cc,Dc,Mc,Lc,Hc,Xc,tl,il,ul,hl,yl,wl,Ol,Ml,Il,Bl,Kl,Xl,eu,iu,cu,fu,gu,bu,wu,Ou,Mu,Iu,Hu,Ju,$u,ad,dd,_d,Sd,Dd,jd,Id,Hd,qd,Zd,tf,of,uf,mf,vf])});const xf=globalThis.process,Sf=Number(xf?.exitCode);Number.isInteger(Sf)&&Sf!==0&&xf.exit(Sf);
|