@coffer-org/web 2.2.4 → 2.3.0

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.
Files changed (45) hide show
  1. package/dist/assets/{ChatWidget-BAYVUMAk.js → ChatWidget-DXJDGFMh.js} +4 -4
  2. package/dist/assets/{ExtendReasonInfo-C7Lp4hCA.js → ExtendReasonInfo-z28f5Xmg.js} +1 -1
  3. package/dist/assets/Icon-CdBq17IP.js +2 -0
  4. package/dist/assets/{NewRecordView-MuTA5jR-.js → NewRecordView-BHQca6YX.js} +1 -1
  5. package/dist/assets/{PluginSettingsPage-CtxU42JJ.js → PluginSettingsPage-BEp95q6I.js} +1 -1
  6. package/dist/assets/{SettingsForm-DWlZ_8O7.js → SettingsForm-DdtiBGb3.js} +1 -1
  7. package/dist/assets/{SettingsPage-B4WsLRHO.js → SettingsPage-ChLbkQ-4.js} +3 -3
  8. package/dist/assets/{Toolbar-DIAEzA8V.js → Toolbar-DXfFoY9S.js} +2 -2
  9. package/dist/assets/api-8XMJe9yT.js +1 -0
  10. package/dist/assets/{auth-context-CqB3NLgO.js → auth-context-B8vB6FP0.js} +1 -1
  11. package/dist/assets/{chrome-Byteug4G.js → chrome-DUkOYMaR.js} +1 -1
  12. package/dist/assets/{extend-C8fYaK9l.js → extend-lcgcPDs5.js} +1 -1
  13. package/dist/assets/{field-frame-BtcRGL3k.js → field-frame-BvHP_maQ.js} +1 -1
  14. package/dist/assets/index-BarQtGU4.js +59 -0
  15. package/dist/assets/index-DMyAtZ9J.css +2 -0
  16. package/dist/assets/shared-Bo5mxHya.js +1 -0
  17. package/dist/assets/{shelf-CiTNv3-E.js → shelf-BdJ77CWj.js} +1 -1
  18. package/dist/assets/{src-BWBE_K4f.js → src-2_pykFU4.js} +1 -1
  19. package/dist/assets/{src-Ypva5qLC.js → src-41AhrwZ4.js} +1 -1
  20. package/dist/assets/{src-fnvvXa_Q.js → src-BKiejyjC.js} +1 -1
  21. package/dist/assets/{src-CSA_l6-E.js → src-BS0Fu0Fq.js} +1 -1
  22. package/dist/assets/{src-BgsVCDXk.js → src-B_SQm4m2.js} +1 -1
  23. package/dist/assets/src-BpfdeepB.js +1 -0
  24. package/dist/assets/{src-Et_oFdFd.js → src-CEzuKpEh.js} +1 -1
  25. package/dist/assets/{src-znmmPN4Z.js → src-CJE27ksq.js} +1 -1
  26. package/dist/assets/{src-Da9z86OQ.js → src-D2RcwCOa.js} +1 -1
  27. package/dist/assets/{src-B7q8rYDi.js → src-D8vyOddU.js} +1 -1
  28. package/dist/assets/{src-C3FVNCgf.js → src-DbJOMlGp.js} +1 -1
  29. package/dist/assets/{src-yWH6Huqw.js → src-DwfQCgYj.js} +1 -1
  30. package/dist/assets/{src-MIt2Qb_Z.js → src-UycGO1Ve.js} +1 -1
  31. package/dist/assets/{src-BPW6j6Bo.js → src-dtQwwxRD.js} +1 -1
  32. package/dist/assets/{src-CdDk084R.js → src-qmUWHIuy.js} +1 -1
  33. package/dist/assets/{src-DCW55kNf.js → src-zZtvluoL.js} +1 -1
  34. package/dist/assets/{ui-Cd3oemsa.js → ui-Bjep8RzZ.js} +1 -1
  35. package/dist/assets/{ui-DG_85pTU.js → ui-C8hTdKa2.js} +2 -2
  36. package/dist/assets/{ui-CY3Pz2vJ.js → ui-D91-SKFW.js} +1 -1
  37. package/dist/index.html +13 -13
  38. package/package.json +1 -1
  39. package/site.mjs +1 -0
  40. package/dist/assets/Icon-CnFXN8LC.js +0 -2
  41. package/dist/assets/api-C2Azkedd.js +0 -1
  42. package/dist/assets/index-C4dKTJQB.js +0 -59
  43. package/dist/assets/index-CSnStPnZ.css +0 -2
  44. package/dist/assets/shared-B-9cBvyI.js +0 -1
  45. package/dist/assets/src-B-Ii9AcP.js +0 -1
@@ -1,3 +1,3 @@
1
- import{r as e}from"./rolldown-runtime-QTnfLwEv.js";import{a as t,t as n}from"./i18n-vendor-T6EnJ_TL.js";import{r,t as i}from"./react-vendor-BskHO5hY.js";import{r as a}from"./x-BFRg18Fi.js";import{n as o,t as s}from"./ui-vendor-EU9CHLyR.js";import{t as c}from"./Icon-CnFXN8LC.js";import{r as l,t as u}from"./button-D-Q6I5Ob.js";import{C as d,D as f,T as p,h as m,p as h,w as g}from"./api-C2Azkedd.js";import{a as _,n as v,r as y}from"./auth-context-CqB3NLgO.js";import{t as b}from"./PageBody-Y-cpiRMh.js";var x=e(t(),1),S=i(),C=`/home/grigorii/Projects/GitHub/grigorii-horos/coffer/packages/web/components/ui/switch.tsx`,w=x.forwardRef(({className:e,...t},n)=>(0,S.jsxDEV)(s,{ref:n,className:a(`peer inline-flex h-6 w-11 shrink-0 cursor-pointer items-center rounded-full border-2 border-transparent transition-colors`,`focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 focus-visible:ring-offset-background`,`disabled:cursor-not-allowed disabled:opacity-50`,`data-[state=checked]:bg-primary data-[state=unchecked]:bg-border`,e),...t,children:(0,S.jsxDEV)(o,{className:a(`pointer-events-none block h-5 w-5 rounded-full bg-white shadow-lg ring-0 transition-transform`,`data-[state=checked]:translate-x-5 data-[state=unchecked]:translate-x-0`)},void 0,!1,{fileName:C,lineNumber:20,columnNumber:5},void 0)},void 0,!1,{fileName:C,lineNumber:9,columnNumber:3},void 0));w.displayName=s.displayName;var T=`/home/grigorii/Projects/GitHub/grigorii-horos/coffer/packages/web/components/ui/badge.tsx`,E=l(`inline-flex items-center rounded-md border px-2 py-0.5 text-xs font-semibold transition-colors`,{variants:{variant:{default:`border-transparent bg-primary text-primary-foreground`,secondary:`border-transparent bg-secondary text-secondary-foreground`,destructive:`border-transparent bg-destructive text-destructive-foreground`,outline:`border-border text-text`,accent:`border-accent/30 bg-accent/15 text-accent`}},defaultVariants:{variant:`default`}});function D({className:e,variant:t,...n}){return(0,S.jsxDEV)(`div`,{className:a(E({variant:t}),e),...n},void 0,!1,{fileName:T,lineNumber:24,columnNumber:10},this)}var O=/^v?(0|[1-9]\d*)\.(0|[1-9]\d*)\.(0|[1-9]\d*)(?:-([0-9A-Za-z-]+(?:\.[0-9A-Za-z-]+)*))?(?:\+[0-9A-Za-z-]+(?:\.[0-9A-Za-z-]+)*)?$/;function k(e){let t=O.exec(e.trim());if(!t)return null;let n=t[4]?.split(`.`)??[];return n.some(e=>/^\d+$/.test(e)&&e.length>1&&e.startsWith(`0`))?null:{major:Number(t[1]),minor:Number(t[2]),patch:Number(t[3]),prerelease:n}}function A(e,t){let n=/^\d+$/.test(e),r=/^\d+$/.test(t);return n&&r?e.length===t.length?e===t?0:e>t?1:-1:e.length>t.length?1:-1:n===r?e===t?0:e>t?1:-1:n?-1:1}function j(e,t){let n=k(e),r=k(t);if(!n||!r)return!1;for(let e of[`major`,`minor`,`patch`])if(n[e]!==r[e])return n[e]>r[e];if(n.prerelease.length===0||r.prerelease.length===0)return n.prerelease.length===0&&r.prerelease.length>0;let i=Math.max(n.prerelease.length,r.prerelease.length);for(let e=0;e<i;e++){let t=n.prerelease[e],i=r.prerelease[e];if(t===void 0)return!1;if(i===void 0)return!0;let a=A(t,i);if(a!==0)return a>0}return!1}var M=`/home/grigorii/Projects/GitHub/grigorii-horos/coffer/packages/web/app/SettingsPage.tsx`;async function N(){let e=Date.now();for(;Date.now()-e<3e4;){await new Promise(e=>setTimeout(e,1e3));try{if((await fetch(`/health`)).ok)return!0}catch{}}return!1}function P(){let{t:e}=n(),{role:t}=v(),i=t===`admin`,[a,o]=(0,x.useState)([]),[s,l]=(0,x.useState)(!0),[C,T]=(0,x.useState)(null),[E,O]=(0,x.useState)(!1),k=e=>C===e||C===`*`,[A,P]=(0,x.useState)(null),I=a.filter(e=>e.latestVersion&&j(e.latestVersion,e.installedVersion)),L=!!(A?.latestVersion&&A.installedVersion&&j(A.latestVersion,A.installedVersion)),R=I.length+ +!!L,[z,B]=(0,x.useState)(null),[V,H]=(0,x.useState)(!1),U=t=>e(`${t}.plugin.label`,{defaultValue:t}),W=t=>e(`${t}.plugin.description`,{defaultValue:``}),G=t=>e(`${t}.library.label`,{defaultValue:t}),K=(t,n)=>e(`${t}.${n}.label`,{defaultValue:n}),q={core_required:()=>e(`plugins.errors.core_required`),has_dependents:t=>e(`plugins.errors.has_dependents`,{list:t.dependents.join(`, `)}),missing_deps:t=>e(`plugins.errors.missing_deps`,{list:t.deps.join(`, `)}),unknown_plugin:()=>e(`plugins.errors.unknown_plugin`)},J=(e=!1)=>Promise.all([m(e?{refresh:!0}:void 0),h(e?{refresh:!0}:void 0)]).then(([e,t])=>{o(e),P(t),l(!1)});(0,x.useEffect)(()=>{J()},[]);async function Y(){O(!0),B(null);try{await J(!0)}catch{B(e(`plugins.updateCheckError`))}finally{O(!1)}}async function X(t){if(!await _({title:e(`plugins.purgeTitle`),description:e(`plugins.confirmPurge`,{id:t.id}),confirmLabel:e(`plugins.purgeButton`),variant:`destructive`}))return;T(t.id),B(null);let n=await fetch(`/api/plugins/${t.id}/data`,{method:`DELETE`}),r=await n.json().catch(()=>({}));if(T(null),!n.ok){B(q[r.error]?.(r)??e(`plugins.genericError`,{code:r.error??n.status}));return}H(!0),await J()}async function Z(t){T(t.id),B(null);let n=await d(t.id,!t.enabled);if(!n.ok){T(null),B(q[n.error]?.(n.data??{})??e(`plugins.genericError`,{code:n.error}));return}window.location.reload()}async function ee(t){if(!t.latestVersion||!await _({title:e(`plugins.updateTitle`,{from:t.installedVersion,to:t.latestVersion}),description:e(`plugins.confirmUpdate`,{id:t.id,from:t.installedVersion,to:t.latestVersion}),confirmLabel:e(`plugins.updateButton`)}))return;T(t.id),B(null);let n=await p(t.id);if(!n.ok){T(null),B(n.stderr?`${e(`plugins.updateError`)}: ${n.stderr}`:e(`plugins.genericError`,{code:n.error}));return}H(!0),await N()&&window.location.reload()}async function te(){if(R===0)return;let t=I.map(e=>`${U(e.id)}: v${e.installedVersion} → v${e.latestVersion}`);L&&t.push(`${e(`plugins.runtimeLabel`)}: v${A.installedVersion} → v${A.latestVersion}`);let n=t.join(`
2
- `);if(!await _({title:e(`plugins.updateAllButton`,{count:R}),description:e(`plugins.confirmUpdateAll`,{count:R,list:n}),confirmLabel:e(`plugins.updateButton`)}))return;T(`*`),B(null);let r=await g();if(!r.ok){T(null),B(r.stderr?`${e(`plugins.updateError`)}: ${r.stderr}`:e(`plugins.genericError`,{code:r.error}));return}H(!0),await N()&&window.location.reload()}let Q=a.find(e=>e.id===`core`),$=!!(Q?.latestVersion&&j(Q.latestVersion,Q.installedVersion)),ne=$||L;async function re(){let t=[];if(Q&&$&&t.push(`${e(`core.settings.label`)}: v${Q.installedVersion} → v${Q.latestVersion}`),L&&t.push(`${e(`plugins.runtimeLabel`)}: v${A.installedVersion} → v${A.latestVersion}`),t.length===0||!await _({title:e(`plugins.updateAllButton`,{count:t.length}),description:e(`plugins.confirmUpdateAll`,{count:t.length,list:t.join(`
3
- `)}),confirmLabel:e(`plugins.updateButton`)}))return;T(`*`),B(null);let n=await f();if(!n.ok){T(null),B(n.stderr?`${e(`plugins.updateError`)}: ${n.stderr}`:e(`plugins.genericError`,{code:n.error}));return}H(!0),await N()&&window.location.reload()}return(0,S.jsxDEV)(b,{children:[(0,S.jsxDEV)(`h1`,{className:`mb-6 text-[28px] font-bold text-text`,children:e(`settings.title`)},void 0,!1,{fileName:M,lineNumber:220,columnNumber:7},this),(0,S.jsxDEV)(`section`,{className:`mb-6`,children:[(0,S.jsxDEV)(`h2`,{className:`mb-1 text-sm font-semibold uppercase tracking-wide text-muted`,children:e(`settings.personalTitle`)},void 0,!1,{fileName:M,lineNumber:224,columnNumber:9},this),(0,S.jsxDEV)(y,{className:`flex items-center gap-4 px-4 py-3`,children:[(0,S.jsxDEV)(`div`,{className:`min-w-0 flex-1`,children:(0,S.jsxDEV)(`span`,{className:`font-semibold text-text`,children:e(`auth.accountTitle`)},void 0,!1,{fileName:M,lineNumber:227,columnNumber:13},this)},void 0,!1,{fileName:M,lineNumber:226,columnNumber:11},this),(0,S.jsxDEV)(u,{variant:`ghost`,size:`sm`,type:`button`,className:`shrink-0 border border-border`,asChild:!0,children:(0,S.jsxDEV)(r,{to:`/settings/account`,title:e(`auth.accountTitle`),"aria-label":e(`auth.accountTitle`),children:(0,S.jsxDEV)(c,{name:`lucide:settings`,size:16},void 0,!1,{fileName:M,lineNumber:231,columnNumber:15},this)},void 0,!1,{fileName:M,lineNumber:230,columnNumber:13},this)},void 0,!1,{fileName:M,lineNumber:229,columnNumber:11},this)]},void 0,!0,{fileName:M,lineNumber:225,columnNumber:9},this)]},void 0,!0,{fileName:M,lineNumber:223,columnNumber:7},this),i&&(0,S.jsxDEV)(S.Fragment,{children:[(0,S.jsxDEV)(`section`,{className:`mb-6`,children:[(0,S.jsxDEV)(`h2`,{className:`mb-1 text-sm font-semibold uppercase tracking-wide text-muted`,children:e(`settings.usersTitle`)},void 0,!1,{fileName:M,lineNumber:241,columnNumber:13},this),(0,S.jsxDEV)(`p`,{className:`mb-3 text-sm text-muted`,children:e(`settings.usersDescription`)},void 0,!1,{fileName:M,lineNumber:242,columnNumber:13},this),(0,S.jsxDEV)(y,{className:`flex items-center gap-4 px-4 py-3`,children:[(0,S.jsxDEV)(`div`,{className:`min-w-0 flex-1`,children:(0,S.jsxDEV)(`span`,{className:`font-semibold text-text`,children:e(`settings.usersTitle`)},void 0,!1,{fileName:M,lineNumber:245,columnNumber:17},this)},void 0,!1,{fileName:M,lineNumber:244,columnNumber:15},this),(0,S.jsxDEV)(u,{variant:`ghost`,size:`sm`,type:`button`,className:`shrink-0 border border-border`,asChild:!0,children:(0,S.jsxDEV)(r,{to:`/settings/users`,title:e(`settings.usersTitle`),"aria-label":e(`settings.usersTitle`),children:(0,S.jsxDEV)(c,{name:`lucide:settings`,size:16},void 0,!1,{fileName:M,lineNumber:249,columnNumber:19},this)},void 0,!1,{fileName:M,lineNumber:248,columnNumber:17},this)},void 0,!1,{fileName:M,lineNumber:247,columnNumber:15},this)]},void 0,!0,{fileName:M,lineNumber:243,columnNumber:13},this)]},void 0,!0,{fileName:M,lineNumber:240,columnNumber:11},this),(0,S.jsxDEV)(`section`,{children:[(0,S.jsxDEV)(`div`,{className:`mb-1 flex items-center gap-3`,children:[(0,S.jsxDEV)(`h2`,{className:`text-sm font-semibold uppercase tracking-wide text-muted`,children:e(`settings.componentsTitle`)},void 0,!1,{fileName:M,lineNumber:258,columnNumber:15},this),(0,S.jsxDEV)(u,{variant:`ghost`,size:`sm`,type:`button`,disabled:C!==null||E,onClick:Y,title:e(`plugins.checkUpdates`),className:`shrink-0 border border-border`,children:[(0,S.jsxDEV)(c,{name:`lucide:refresh-cw`,size:14,className:E?`animate-spin`:void 0},void 0,!1,{fileName:M,lineNumber:268,columnNumber:17},this),e(E?`plugins.checkingUpdates`:`plugins.checkUpdates`)]},void 0,!0,{fileName:M,lineNumber:259,columnNumber:15},this),R>0&&(0,S.jsxDEV)(u,{variant:`ghost`,size:`sm`,type:`button`,disabled:C!==null,onClick:te,className:`shrink-0 border border-accent/40 text-accent hover:bg-accent/10 hover:text-accent`,children:e(`plugins.updateAllButton`,{count:R})},void 0,!1,{fileName:M,lineNumber:272,columnNumber:17},this)]},void 0,!0,{fileName:M,lineNumber:257,columnNumber:13},this),(0,S.jsxDEV)(`p`,{className:`mb-3 text-sm text-muted`,children:e(`settings.componentsDescription`)},void 0,!1,{fileName:M,lineNumber:284,columnNumber:13},this),s?(0,S.jsxDEV)(`p`,{className:`text-muted`,children:e(`plugins.loading`)},void 0,!1,{fileName:M,lineNumber:287,columnNumber:15},this):(0,S.jsxDEV)(S.Fragment,{children:[V&&(0,S.jsxDEV)(`div`,{className:`mb-5 rounded-xl border border-accent/40 bg-accent/10 px-4 py-3 text-sm text-accent`,children:[e(`plugins.restartBannerBefore`),(0,S.jsxDEV)(`b`,{children:e(`plugins.restartBannerBold`)},void 0,!1,{fileName:M,lineNumber:293,columnNumber:21},this),e(`plugins.restartBannerAfter`)]},void 0,!0,{fileName:M,lineNumber:291,columnNumber:19},this),z&&(0,S.jsxDEV)(`div`,{className:`mb-5 rounded-xl border border-danger/40 bg-danger/10 px-4 py-3 text-sm text-danger`,children:z},void 0,!1,{fileName:M,lineNumber:298,columnNumber:19},this),(0,S.jsxDEV)(`div`,{className:`flex flex-col gap-2`,children:[(0,S.jsxDEV)(y,{className:`flex items-center gap-4 px-4 py-3`,children:[(0,S.jsxDEV)(`div`,{className:`min-w-0 flex-1`,children:[(0,S.jsxDEV)(`div`,{className:`flex items-center gap-2`,children:[(0,S.jsxDEV)(`span`,{className:`font-semibold text-text`,children:e(`core.settings.label`)},void 0,!1,{fileName:M,lineNumber:308,columnNumber:25},this),Q&&(0,S.jsxDEV)(D,{variant:`secondary`,className:`text-[10px] font-medium`,children:[`v`,Q.installedVersion]},void 0,!0,{fileName:M,lineNumber:310,columnNumber:27},this),ne&&(0,S.jsxDEV)(u,{variant:`ghost`,size:`sm`,type:`button`,disabled:C!==null,onClick:re,title:e(`settings.systemUpdateTitle`),className:`shrink-0 border border-accent/40 text-accent hover:bg-accent/10 hover:text-accent`,children:e(`plugins.updateButton`)},void 0,!1,{fileName:M,lineNumber:315,columnNumber:27},this)]},void 0,!0,{fileName:M,lineNumber:307,columnNumber:23},this),(0,S.jsxDEV)(`div`,{className:`text-xs text-muted mt-0.5 truncate`,children:e(`settings.systemDescription`)},void 0,!1,{fileName:M,lineNumber:328,columnNumber:23},this)]},void 0,!0,{fileName:M,lineNumber:306,columnNumber:21},this),(0,S.jsxDEV)(u,{variant:`ghost`,size:`sm`,type:`button`,className:`shrink-0 border border-border`,asChild:!0,children:(0,S.jsxDEV)(r,{to:`/settings/core`,title:e(`core.settings.label`),"aria-label":e(`core.settings.label`),children:(0,S.jsxDEV)(c,{name:`lucide:settings`,size:16},void 0,!1,{fileName:M,lineNumber:332,columnNumber:25},this)},void 0,!1,{fileName:M,lineNumber:331,columnNumber:23},this)},void 0,!1,{fileName:M,lineNumber:330,columnNumber:21},this)]},void 0,!0,{fileName:M,lineNumber:305,columnNumber:19},this),a.filter(e=>e.id!==`core`).map(t=>{let n=W(t.id),i=t.enabled?a.filter(e=>e.enabled&&e.id!==t.id&&e.dependsOn.includes(t.id)):[],o=i.length>0,s=o?e(`plugins.blockedByDependents`,{list:i.map(e=>U(e.id)).join(`, `)}):t.enabled?e(`plugins.switchDisable`):e(`plugins.switchEnable`),l=[t.dependsOn.length>0&&`${e(`plugins.metaDepends`)} ${t.dependsOn.map(U).join(`, `)}`,t.libraries.length>0&&`${e(`plugins.metaLibraries`)} ${t.libraries.map(G).join(`, `)}`,t.extends.length>0&&`${e(`plugins.metaExtends`)} ${t.extends.map(e=>K(t.id,e)).join(`, `)}`].filter(Boolean).join(` · `)||`—`;return(0,S.jsxDEV)(y,{className:`flex items-center gap-4 px-4 py-3`,children:[(0,S.jsxDEV)(`div`,{className:`min-w-0 flex-1`,children:[(0,S.jsxDEV)(`div`,{className:`flex items-center gap-2`,children:[(0,S.jsxDEV)(`span`,{className:`font-semibold text-text`,children:U(t.id)},void 0,!1,{fileName:M,lineNumber:367,columnNumber:31},this),(0,S.jsxDEV)(F,{plugin:t,busy:k(t.id),onUpdate:()=>ee(t)},void 0,!1,{fileName:M,lineNumber:368,columnNumber:31},this)]},void 0,!0,{fileName:M,lineNumber:366,columnNumber:29},this),n&&(0,S.jsxDEV)(`div`,{className:`text-xs text-muted mt-0.5 truncate`,children:n},void 0,!1,{fileName:M,lineNumber:370,columnNumber:45},this),(0,S.jsxDEV)(`div`,{className:`text-xs text-muted mt-0.5 truncate`,children:l},void 0,!1,{fileName:M,lineNumber:371,columnNumber:29},this)]},void 0,!0,{fileName:M,lineNumber:365,columnNumber:27},this),t.hasSettings&&(0,S.jsxDEV)(u,{variant:`ghost`,size:`sm`,type:`button`,className:`shrink-0 border border-border`,asChild:!0,children:(0,S.jsxDEV)(r,{to:`/settings/${t.id}`,title:e(`plugins.settingsTitle`,{defaultValue:`Settings`}),"aria-label":e(`plugins.settingsTitle`,{defaultValue:`Settings`}),children:(0,S.jsxDEV)(c,{name:`lucide:settings`,size:16},void 0,!1,{fileName:M,lineNumber:386,columnNumber:33},this)},void 0,!1,{fileName:M,lineNumber:381,columnNumber:31},this)},void 0,!1,{fileName:M,lineNumber:374,columnNumber:29},this),(0,S.jsxDEV)(u,{variant:`ghost`,size:`sm`,type:`button`,disabled:k(t.id),onClick:()=>X(t),title:e(`plugins.purgeTitle`),className:`shrink-0 border border-danger/40 text-danger hover:bg-danger/10 hover:text-danger`,children:e(`plugins.purgeButton`)},void 0,!1,{fileName:M,lineNumber:390,columnNumber:27},this),(0,S.jsxDEV)(`span`,{title:s,className:`shrink-0`,children:(0,S.jsxDEV)(w,{checked:t.enabled,disabled:k(t.id)||o,onCheckedChange:()=>Z(t),title:s},void 0,!1,{fileName:M,lineNumber:404,columnNumber:29},this)},void 0,!1,{fileName:M,lineNumber:403,columnNumber:27},this)]},t.id,!0,{fileName:M,lineNumber:364,columnNumber:25},this)})]},void 0,!0,{fileName:M,lineNumber:303,columnNumber:17},this)]},void 0,!0,{fileName:M,lineNumber:289,columnNumber:15},this)]},void 0,!0,{fileName:M,lineNumber:256,columnNumber:11},this)]},void 0,!0,{fileName:M,lineNumber:238,columnNumber:9},this)]},void 0,!0,{fileName:M,lineNumber:219,columnNumber:5},this)}function F({plugin:e,busy:t,onUpdate:r}){let{t:i}=n(),a=!!(e.latestVersion&&j(e.latestVersion,e.installedVersion));return(0,S.jsxDEV)(S.Fragment,{children:[(0,S.jsxDEV)(D,{variant:`secondary`,className:`text-[10px] font-medium`,children:[`v`,e.installedVersion]},void 0,!0,{fileName:M,lineNumber:437,columnNumber:7},this),a&&(0,S.jsxDEV)(u,{variant:`ghost`,size:`sm`,type:`button`,disabled:t,onClick:r,title:i(`plugins.updateTitle`,{from:e.installedVersion,to:e.latestVersion}),className:`shrink-0 border border-accent/40 text-accent hover:bg-accent/10 hover:text-accent`,children:i(`plugins.updateButton`)},void 0,!1,{fileName:M,lineNumber:441,columnNumber:9},this)]},void 0,!0,{fileName:M,lineNumber:436,columnNumber:5},this)}export{P as SettingsPage};
1
+ import{r as e}from"./rolldown-runtime-QTnfLwEv.js";import{a as t,t as n}from"./i18n-vendor-T6EnJ_TL.js";import{r,t as i}from"./react-vendor-BskHO5hY.js";import{r as a}from"./x-BFRg18Fi.js";import{n as o,t as s}from"./ui-vendor-EU9CHLyR.js";import{t as c}from"./Icon-CdBq17IP.js";import{r as l,t as u}from"./button-D-Q6I5Ob.js";import{A as d,D as f,E as p,O as m,h,p as g}from"./api-8XMJe9yT.js";import{a as _,n as v,r as y}from"./auth-context-B8vB6FP0.js";import{t as b}from"./PageBody-Y-cpiRMh.js";var x=e(t(),1),S=i(),C=`/home/grigorii/Projects/GitHub/grigorii-horos/coffer/packages/web/components/ui/switch.tsx`,w=x.forwardRef(({className:e,...t},n)=>(0,S.jsxDEV)(s,{ref:n,className:a(`peer inline-flex h-6 w-11 shrink-0 cursor-pointer items-center rounded-full border-2 border-transparent transition-colors`,`focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 focus-visible:ring-offset-background`,`disabled:cursor-not-allowed disabled:opacity-50`,`data-[state=checked]:bg-primary data-[state=unchecked]:bg-border`,e),...t,children:(0,S.jsxDEV)(o,{className:a(`pointer-events-none block h-5 w-5 rounded-full bg-white shadow-lg ring-0 transition-transform`,`data-[state=checked]:translate-x-5 data-[state=unchecked]:translate-x-0`)},void 0,!1,{fileName:C,lineNumber:20,columnNumber:5},void 0)},void 0,!1,{fileName:C,lineNumber:9,columnNumber:3},void 0));w.displayName=s.displayName;var T=`/home/grigorii/Projects/GitHub/grigorii-horos/coffer/packages/web/components/ui/badge.tsx`,E=l(`inline-flex items-center rounded-md border px-2 py-0.5 text-xs font-semibold transition-colors`,{variants:{variant:{default:`border-transparent bg-primary text-primary-foreground`,secondary:`border-transparent bg-secondary text-secondary-foreground`,destructive:`border-transparent bg-destructive text-destructive-foreground`,outline:`border-border text-text`,accent:`border-accent/30 bg-accent/15 text-accent`}},defaultVariants:{variant:`default`}});function D({className:e,variant:t,...n}){return(0,S.jsxDEV)(`div`,{className:a(E({variant:t}),e),...n},void 0,!1,{fileName:T,lineNumber:24,columnNumber:10},this)}var O=/^v?(0|[1-9]\d*)\.(0|[1-9]\d*)\.(0|[1-9]\d*)(?:-([0-9A-Za-z-]+(?:\.[0-9A-Za-z-]+)*))?(?:\+[0-9A-Za-z-]+(?:\.[0-9A-Za-z-]+)*)?$/;function k(e){let t=O.exec(e.trim());if(!t)return null;let n=t[4]?.split(`.`)??[];return n.some(e=>/^\d+$/.test(e)&&e.length>1&&e.startsWith(`0`))?null:{major:Number(t[1]),minor:Number(t[2]),patch:Number(t[3]),prerelease:n}}function A(e,t){let n=/^\d+$/.test(e),r=/^\d+$/.test(t);return n&&r?e.length===t.length?e===t?0:e>t?1:-1:e.length>t.length?1:-1:n===r?e===t?0:e>t?1:-1:n?-1:1}function j(e,t){let n=k(e),r=k(t);if(!n||!r)return!1;for(let e of[`major`,`minor`,`patch`])if(n[e]!==r[e])return n[e]>r[e];if(n.prerelease.length===0||r.prerelease.length===0)return n.prerelease.length===0&&r.prerelease.length>0;let i=Math.max(n.prerelease.length,r.prerelease.length);for(let e=0;e<i;e++){let t=n.prerelease[e],i=r.prerelease[e];if(t===void 0)return!1;if(i===void 0)return!0;let a=A(t,i);if(a!==0)return a>0}return!1}var M=`/home/grigorii/Projects/GitHub/grigorii-horos/coffer/packages/web/app/SettingsPage.tsx`;async function N(){let e=Date.now();for(;Date.now()-e<3e4;){await new Promise(e=>setTimeout(e,1e3));try{if((await fetch(`/health`)).ok)return!0}catch{}}return!1}function P(){let{t:e}=n(),{role:t}=v(),i=t===`admin`,[a,o]=(0,x.useState)([]),[s,l]=(0,x.useState)(!0),[C,T]=(0,x.useState)(null),[E,O]=(0,x.useState)(!1),k=e=>C===e||C===`*`,[A,P]=(0,x.useState)(null),I=a.filter(e=>e.latestVersion&&j(e.latestVersion,e.installedVersion)),L=!!(A?.latestVersion&&A.installedVersion&&j(A.latestVersion,A.installedVersion)),R=I.length+ +!!L,[z,B]=(0,x.useState)(null),[V,H]=(0,x.useState)(!1),U=t=>e(`${t}.plugin.label`,{defaultValue:t}),W=t=>e(`${t}.plugin.description`,{defaultValue:``}),G=t=>e(`${t}.library.label`,{defaultValue:t}),K=(t,n)=>e(`${t}.${n}.label`,{defaultValue:n}),q={core_required:()=>e(`plugins.errors.core_required`),has_dependents:t=>e(`plugins.errors.has_dependents`,{list:t.dependents.join(`, `)}),missing_deps:t=>e(`plugins.errors.missing_deps`,{list:t.deps.join(`, `)}),unknown_plugin:()=>e(`plugins.errors.unknown_plugin`)},J=(e=!1)=>Promise.all([h(e?{refresh:!0}:void 0),g(e?{refresh:!0}:void 0)]).then(([e,t])=>{o(e),P(t),l(!1)});(0,x.useEffect)(()=>{J()},[]);async function Y(){O(!0),B(null);try{await J(!0)}catch{B(e(`plugins.updateCheckError`))}finally{O(!1)}}async function X(t){if(!await _({title:e(`plugins.purgeTitle`),description:e(`plugins.confirmPurge`,{id:t.id}),confirmLabel:e(`plugins.purgeButton`),variant:`destructive`}))return;T(t.id),B(null);let n=await fetch(`/api/plugins/${t.id}/data`,{method:`DELETE`}),r=await n.json().catch(()=>({}));if(T(null),!n.ok){B(q[r.error]?.(r)??e(`plugins.genericError`,{code:r.error??n.status}));return}H(!0),await J()}async function Z(t){T(t.id),B(null);let n=await p(t.id,!t.enabled);if(!n.ok){T(null),B(q[n.error]?.(n.data??{})??e(`plugins.genericError`,{code:n.error}));return}window.location.reload()}async function ee(t){if(!t.latestVersion||!await _({title:e(`plugins.updateTitle`,{from:t.installedVersion,to:t.latestVersion}),description:e(`plugins.confirmUpdate`,{id:t.id,from:t.installedVersion,to:t.latestVersion}),confirmLabel:e(`plugins.updateButton`)}))return;T(t.id),B(null);let n=await m(t.id);if(!n.ok){T(null),B(n.stderr?`${e(`plugins.updateError`)}: ${n.stderr}`:e(`plugins.genericError`,{code:n.error}));return}H(!0),await N()&&window.location.reload()}async function te(){if(R===0)return;let t=I.map(e=>`${U(e.id)}: v${e.installedVersion} → v${e.latestVersion}`);L&&t.push(`${e(`plugins.runtimeLabel`)}: v${A.installedVersion} → v${A.latestVersion}`);let n=t.join(`
2
+ `);if(!await _({title:e(`plugins.updateAllButton`,{count:R}),description:e(`plugins.confirmUpdateAll`,{count:R,list:n}),confirmLabel:e(`plugins.updateButton`)}))return;T(`*`),B(null);let r=await f();if(!r.ok){T(null),B(r.stderr?`${e(`plugins.updateError`)}: ${r.stderr}`:e(`plugins.genericError`,{code:r.error}));return}H(!0),await N()&&window.location.reload()}let Q=a.find(e=>e.id===`core`),$=!!(Q?.latestVersion&&j(Q.latestVersion,Q.installedVersion)),ne=$||L;async function re(){let t=[];if(Q&&$&&t.push(`${e(`core.settings.label`)}: v${Q.installedVersion} → v${Q.latestVersion}`),L&&t.push(`${e(`plugins.runtimeLabel`)}: v${A.installedVersion} → v${A.latestVersion}`),t.length===0||!await _({title:e(`plugins.updateAllButton`,{count:t.length}),description:e(`plugins.confirmUpdateAll`,{count:t.length,list:t.join(`
3
+ `)}),confirmLabel:e(`plugins.updateButton`)}))return;T(`*`),B(null);let n=await d();if(!n.ok){T(null),B(n.stderr?`${e(`plugins.updateError`)}: ${n.stderr}`:e(`plugins.genericError`,{code:n.error}));return}H(!0),await N()&&window.location.reload()}return(0,S.jsxDEV)(b,{children:[(0,S.jsxDEV)(`h1`,{className:`mb-6 text-[28px] font-bold text-text`,children:e(`settings.title`)},void 0,!1,{fileName:M,lineNumber:220,columnNumber:7},this),(0,S.jsxDEV)(`section`,{className:`mb-6`,children:[(0,S.jsxDEV)(`h2`,{className:`mb-1 text-sm font-semibold uppercase tracking-wide text-muted`,children:e(`settings.personalTitle`)},void 0,!1,{fileName:M,lineNumber:224,columnNumber:9},this),(0,S.jsxDEV)(y,{className:`flex items-center gap-4 px-4 py-3`,children:[(0,S.jsxDEV)(`div`,{className:`min-w-0 flex-1`,children:(0,S.jsxDEV)(`span`,{className:`font-semibold text-text`,children:e(`auth.accountTitle`)},void 0,!1,{fileName:M,lineNumber:227,columnNumber:13},this)},void 0,!1,{fileName:M,lineNumber:226,columnNumber:11},this),(0,S.jsxDEV)(u,{variant:`ghost`,size:`sm`,type:`button`,className:`shrink-0 border border-border`,asChild:!0,children:(0,S.jsxDEV)(r,{to:`/settings/account`,title:e(`auth.accountTitle`),"aria-label":e(`auth.accountTitle`),children:(0,S.jsxDEV)(c,{name:`lucide:settings`,size:16},void 0,!1,{fileName:M,lineNumber:231,columnNumber:15},this)},void 0,!1,{fileName:M,lineNumber:230,columnNumber:13},this)},void 0,!1,{fileName:M,lineNumber:229,columnNumber:11},this)]},void 0,!0,{fileName:M,lineNumber:225,columnNumber:9},this)]},void 0,!0,{fileName:M,lineNumber:223,columnNumber:7},this),i&&(0,S.jsxDEV)(S.Fragment,{children:[(0,S.jsxDEV)(`section`,{className:`mb-6`,children:[(0,S.jsxDEV)(`h2`,{className:`mb-1 text-sm font-semibold uppercase tracking-wide text-muted`,children:e(`settings.usersTitle`)},void 0,!1,{fileName:M,lineNumber:241,columnNumber:13},this),(0,S.jsxDEV)(`p`,{className:`mb-3 text-sm text-muted`,children:e(`settings.usersDescription`)},void 0,!1,{fileName:M,lineNumber:242,columnNumber:13},this),(0,S.jsxDEV)(y,{className:`flex items-center gap-4 px-4 py-3`,children:[(0,S.jsxDEV)(`div`,{className:`min-w-0 flex-1`,children:(0,S.jsxDEV)(`span`,{className:`font-semibold text-text`,children:e(`settings.usersTitle`)},void 0,!1,{fileName:M,lineNumber:245,columnNumber:17},this)},void 0,!1,{fileName:M,lineNumber:244,columnNumber:15},this),(0,S.jsxDEV)(u,{variant:`ghost`,size:`sm`,type:`button`,className:`shrink-0 border border-border`,asChild:!0,children:(0,S.jsxDEV)(r,{to:`/settings/users`,title:e(`settings.usersTitle`),"aria-label":e(`settings.usersTitle`),children:(0,S.jsxDEV)(c,{name:`lucide:settings`,size:16},void 0,!1,{fileName:M,lineNumber:249,columnNumber:19},this)},void 0,!1,{fileName:M,lineNumber:248,columnNumber:17},this)},void 0,!1,{fileName:M,lineNumber:247,columnNumber:15},this)]},void 0,!0,{fileName:M,lineNumber:243,columnNumber:13},this)]},void 0,!0,{fileName:M,lineNumber:240,columnNumber:11},this),(0,S.jsxDEV)(`section`,{children:[(0,S.jsxDEV)(`div`,{className:`mb-1 flex items-center gap-3`,children:[(0,S.jsxDEV)(`h2`,{className:`text-sm font-semibold uppercase tracking-wide text-muted`,children:e(`settings.componentsTitle`)},void 0,!1,{fileName:M,lineNumber:258,columnNumber:15},this),(0,S.jsxDEV)(u,{variant:`ghost`,size:`sm`,type:`button`,disabled:C!==null||E,onClick:Y,title:e(`plugins.checkUpdates`),className:`shrink-0 border border-border`,children:[(0,S.jsxDEV)(c,{name:`lucide:refresh-cw`,size:14,className:E?`animate-spin`:void 0},void 0,!1,{fileName:M,lineNumber:268,columnNumber:17},this),e(E?`plugins.checkingUpdates`:`plugins.checkUpdates`)]},void 0,!0,{fileName:M,lineNumber:259,columnNumber:15},this),R>0&&(0,S.jsxDEV)(u,{variant:`ghost`,size:`sm`,type:`button`,disabled:C!==null,onClick:te,className:`shrink-0 border border-accent/40 text-accent hover:bg-accent/10 hover:text-accent`,children:e(`plugins.updateAllButton`,{count:R})},void 0,!1,{fileName:M,lineNumber:272,columnNumber:17},this)]},void 0,!0,{fileName:M,lineNumber:257,columnNumber:13},this),(0,S.jsxDEV)(`p`,{className:`mb-3 text-sm text-muted`,children:e(`settings.componentsDescription`)},void 0,!1,{fileName:M,lineNumber:284,columnNumber:13},this),s?(0,S.jsxDEV)(`p`,{className:`text-muted`,children:e(`plugins.loading`)},void 0,!1,{fileName:M,lineNumber:287,columnNumber:15},this):(0,S.jsxDEV)(S.Fragment,{children:[V&&(0,S.jsxDEV)(`div`,{className:`mb-5 rounded-xl border border-accent/40 bg-accent/10 px-4 py-3 text-sm text-accent`,children:[e(`plugins.restartBannerBefore`),(0,S.jsxDEV)(`b`,{children:e(`plugins.restartBannerBold`)},void 0,!1,{fileName:M,lineNumber:293,columnNumber:21},this),e(`plugins.restartBannerAfter`)]},void 0,!0,{fileName:M,lineNumber:291,columnNumber:19},this),z&&(0,S.jsxDEV)(`div`,{className:`mb-5 rounded-xl border border-danger/40 bg-danger/10 px-4 py-3 text-sm text-danger`,children:z},void 0,!1,{fileName:M,lineNumber:298,columnNumber:19},this),(0,S.jsxDEV)(`div`,{className:`flex flex-col gap-2`,children:[(0,S.jsxDEV)(y,{className:`flex items-center gap-4 px-4 py-3`,children:[(0,S.jsxDEV)(`div`,{className:`min-w-0 flex-1`,children:[(0,S.jsxDEV)(`div`,{className:`flex items-center gap-2`,children:[(0,S.jsxDEV)(`span`,{className:`font-semibold text-text`,children:e(`core.settings.label`)},void 0,!1,{fileName:M,lineNumber:308,columnNumber:25},this),Q&&(0,S.jsxDEV)(D,{variant:`secondary`,className:`text-[10px] font-medium`,children:[`v`,Q.installedVersion]},void 0,!0,{fileName:M,lineNumber:310,columnNumber:27},this),ne&&(0,S.jsxDEV)(u,{variant:`ghost`,size:`sm`,type:`button`,disabled:C!==null,onClick:re,title:e(`settings.systemUpdateTitle`),className:`shrink-0 border border-accent/40 text-accent hover:bg-accent/10 hover:text-accent`,children:e(`plugins.updateButton`)},void 0,!1,{fileName:M,lineNumber:315,columnNumber:27},this)]},void 0,!0,{fileName:M,lineNumber:307,columnNumber:23},this),(0,S.jsxDEV)(`div`,{className:`text-xs text-muted mt-0.5 truncate`,children:e(`settings.systemDescription`)},void 0,!1,{fileName:M,lineNumber:328,columnNumber:23},this)]},void 0,!0,{fileName:M,lineNumber:306,columnNumber:21},this),(0,S.jsxDEV)(u,{variant:`ghost`,size:`sm`,type:`button`,className:`shrink-0 border border-border`,asChild:!0,children:(0,S.jsxDEV)(r,{to:`/settings/core`,title:e(`core.settings.label`),"aria-label":e(`core.settings.label`),children:(0,S.jsxDEV)(c,{name:`lucide:settings`,size:16},void 0,!1,{fileName:M,lineNumber:332,columnNumber:25},this)},void 0,!1,{fileName:M,lineNumber:331,columnNumber:23},this)},void 0,!1,{fileName:M,lineNumber:330,columnNumber:21},this)]},void 0,!0,{fileName:M,lineNumber:305,columnNumber:19},this),a.filter(e=>e.id!==`core`).map(t=>{let n=W(t.id),i=t.enabled?a.filter(e=>e.enabled&&e.id!==t.id&&e.dependsOn.includes(t.id)):[],o=i.length>0,s=o?e(`plugins.blockedByDependents`,{list:i.map(e=>U(e.id)).join(`, `)}):t.enabled?e(`plugins.switchDisable`):e(`plugins.switchEnable`),l=[t.dependsOn.length>0&&`${e(`plugins.metaDepends`)} ${t.dependsOn.map(U).join(`, `)}`,t.libraries.length>0&&`${e(`plugins.metaLibraries`)} ${t.libraries.map(G).join(`, `)}`,t.extends.length>0&&`${e(`plugins.metaExtends`)} ${t.extends.map(e=>K(t.id,e)).join(`, `)}`].filter(Boolean).join(` · `)||`—`;return(0,S.jsxDEV)(y,{className:`flex items-center gap-4 px-4 py-3`,children:[(0,S.jsxDEV)(`div`,{className:`min-w-0 flex-1`,children:[(0,S.jsxDEV)(`div`,{className:`flex items-center gap-2`,children:[(0,S.jsxDEV)(`span`,{className:`font-semibold text-text`,children:U(t.id)},void 0,!1,{fileName:M,lineNumber:367,columnNumber:31},this),(0,S.jsxDEV)(F,{plugin:t,busy:k(t.id),onUpdate:()=>ee(t)},void 0,!1,{fileName:M,lineNumber:368,columnNumber:31},this)]},void 0,!0,{fileName:M,lineNumber:366,columnNumber:29},this),n&&(0,S.jsxDEV)(`div`,{className:`text-xs text-muted mt-0.5 truncate`,children:n},void 0,!1,{fileName:M,lineNumber:370,columnNumber:45},this),(0,S.jsxDEV)(`div`,{className:`text-xs text-muted mt-0.5 truncate`,children:l},void 0,!1,{fileName:M,lineNumber:371,columnNumber:29},this)]},void 0,!0,{fileName:M,lineNumber:365,columnNumber:27},this),t.hasSettings&&(0,S.jsxDEV)(u,{variant:`ghost`,size:`sm`,type:`button`,className:`shrink-0 border border-border`,asChild:!0,children:(0,S.jsxDEV)(r,{to:`/settings/${t.id}`,title:e(`plugins.settingsTitle`,{defaultValue:`Settings`}),"aria-label":e(`plugins.settingsTitle`,{defaultValue:`Settings`}),children:(0,S.jsxDEV)(c,{name:`lucide:settings`,size:16},void 0,!1,{fileName:M,lineNumber:386,columnNumber:33},this)},void 0,!1,{fileName:M,lineNumber:381,columnNumber:31},this)},void 0,!1,{fileName:M,lineNumber:374,columnNumber:29},this),(0,S.jsxDEV)(u,{variant:`ghost`,size:`sm`,type:`button`,disabled:k(t.id),onClick:()=>X(t),title:e(`plugins.purgeTitle`),className:`shrink-0 border border-danger/40 text-danger hover:bg-danger/10 hover:text-danger`,children:e(`plugins.purgeButton`)},void 0,!1,{fileName:M,lineNumber:390,columnNumber:27},this),(0,S.jsxDEV)(`span`,{title:s,className:`shrink-0`,children:(0,S.jsxDEV)(w,{checked:t.enabled,disabled:k(t.id)||o,onCheckedChange:()=>Z(t),title:s},void 0,!1,{fileName:M,lineNumber:404,columnNumber:29},this)},void 0,!1,{fileName:M,lineNumber:403,columnNumber:27},this)]},t.id,!0,{fileName:M,lineNumber:364,columnNumber:25},this)})]},void 0,!0,{fileName:M,lineNumber:303,columnNumber:17},this)]},void 0,!0,{fileName:M,lineNumber:289,columnNumber:15},this)]},void 0,!0,{fileName:M,lineNumber:256,columnNumber:11},this)]},void 0,!0,{fileName:M,lineNumber:238,columnNumber:9},this)]},void 0,!0,{fileName:M,lineNumber:219,columnNumber:5},this)}function F({plugin:e,busy:t,onUpdate:r}){let{t:i}=n(),a=!!(e.latestVersion&&j(e.latestVersion,e.installedVersion));return(0,S.jsxDEV)(S.Fragment,{children:[(0,S.jsxDEV)(D,{variant:`secondary`,className:`text-[10px] font-medium`,children:[`v`,e.installedVersion]},void 0,!0,{fileName:M,lineNumber:437,columnNumber:7},this),a&&(0,S.jsxDEV)(u,{variant:`ghost`,size:`sm`,type:`button`,disabled:t,onClick:r,title:i(`plugins.updateTitle`,{from:e.installedVersion,to:e.latestVersion}),className:`shrink-0 border border-accent/40 text-accent hover:bg-accent/10 hover:text-accent`,children:i(`plugins.updateButton`)},void 0,!1,{fileName:M,lineNumber:441,columnNumber:9},this)]},void 0,!0,{fileName:M,lineNumber:436,columnNumber:5},this)}export{P as SettingsPage};
@@ -1,2 +1,2 @@
1
- import{r as e}from"./rolldown-runtime-QTnfLwEv.js";import{a as t,t as n}from"./i18n-vendor-T6EnJ_TL.js";import{t as r}from"./react-vendor-BskHO5hY.js";import{n as i}from"./x-BFRg18Fi.js";import{c as a,d as o,p as s,u as c}from"./chrome-Byteug4G.js";import{T as l,d as u,f as d,g as f,h as p,l as m,n as h,o as g,p as _,s as v}from"./fields-CnmTcDr4.js";import{_ as y,o as b}from"./shelf-CiTNv3-E.js";import{n as x,o as S,t as C}from"./src-DKYT_mO5.js";import{i as ee,n as te,r as ne}from"./field-frame-BtcRGL3k.js";import{n as re}from"./extend-C8fYaK9l.js";import{t as ie}from"./plugin-q1oOYqt7.js";import{r as ae,t as w}from"./development-olQNibq5.js";import{_ as T,a as E,b as D,g as oe,h as se,i as ce,l as O,m as le,n as ue,p as de,r as fe,t as pe,v as k,y as A}from"./micromark-extension-gfm-BUw6_ZLT.js";var me=i(`arrow-left`,[[`path`,{d:`m12 19-7-7 7-7`,key:`1l729n`}],[`path`,{d:`M19 12H5`,key:`x3x0zl`}]]),j=e(t(),1);function he(e,t={}){let n=t.disabled??new Set,r=e.filter(e=>!n.has(e.id)),i=new Map;for(let e of r){for(let t of e.libraries??[])for(let n of t.shelves)i.set(`${n.library}/${n.shelf}`,e.id);for(let t of e.libraryShelves??[])i.set(`${t.library}/${t.shelf}`,e.id)}let a=(e,t)=>i.get(`${e}/${t}`);for(let e of r)for(let t of e.dependsOn)if(n.has(t))throw Error(`[plugin] '${e.id}' is enabled, but its dependency '${t}' is disabled`);let{order:o,libraries:s,shelves:c,extends_:l}=ie(r),u=new Map;for(let e of r)for(let t of e.fieldContribs??[]){let e=`${t.library}/${t.shelf}/${t.field}`,n=u.get(e)??{options:[],suggestions:[]};t.options&&n.options.push(...t.options),t.suggestions&&n.suggestions.push(...t.suggestions),u.set(e,n)}let d=(e,t)=>{if(t.options.length){let n=new Set((e.options??[]).map(e=>e.value));e.options=[...e.options??[],...t.options.filter(e=>!n.has(e.value))]}if(t.suggestions.length){let n=e.hints.suggestions??[],r=new Set(n);e.hints.suggestions=[...n,...t.suggestions.filter(e=>!r.has(e))]}},f=new Map;for(let e of r)for(let t of e.optionLists??[])f.set(t.name,t.options);let p=e=>f.get(e)??[];for(let e of c)for(let[t,n]of b(e.fields)){let r=u.get(`${e.library}/${e.shelf}/${t}`);r&&d(n,r)}for(let e of r)for(let[t,n]of e.settings?b(e.settings.fields):[]){let r=u.get(`_settings/${e.id}/${t}`);r&&(d(n,r),n.prim===`select`&&n.options?.length&&h(n,n.options.map(e=>e.value)))}let m=new Map;for(let e of c)for(let[t,n]of b(e.fields)){let r=n.hints.source,i=n.options??[],a=r?f.get(r)??[]:[],o=new Set(i.map(e=>e.value)),s=[...i,...a.filter(e=>!o.has(e.value))];n.prim===`select`&&s.length&&h(n,s.map(e=>e.value)),s.length&&(n.options=s,m.set(`${e.library}/${e.shelf}/${t}`,s))}return{order:o,libraries:s,shelves:c,extends_:l,getShelf:(e,t)=>c.find(n=>n.library===e&&n.shelf===t),getLibrary:e=>s.find(t=>t.meta.id===e),getExtendsFor:(e,t)=>l.filter(n=>re(n,e,t)),getFieldOptions:(e,t,n)=>m.get(`${e}/${t}/${n}`)??[],getOptionList:p,getShelfOwner:a}}var M=null;function N(e){M=he(e)}function P(){if(!M)throw Error(`[registry] not initialized — call initRegistry() in the boot loader`);return M}var ge=(e,t)=>P().getShelf(e,t),_e=(e,t)=>P().getExtendsFor(e,t),ve=e=>P().getOptionList(e),ye=(e,t)=>P().getShelfOwner(e,t),be=()=>P().libraries,xe=()=>P().shelves,Se=()=>P().extends_,Ce=()=>P().order,F=r(),I=(0,j.createContext)(()=>void 0),we=()=>(0,j.useContext)(I),Te=e=>e.join(`.`);function L(e){return(t,n)=>t===`pattern`&&n?.messageKey?e(String(n.messageKey)):e(`validation.${t}`,n)}function Ee(e,t){let n={};for(let r of e){let e=Te(r.path?.length?r.path:[r.field]);n[e]||(n[e]=t(r.code,r.params))}return n}function De(e,t){let n={};for(let[r,i]of Object.entries(e))r===t||r.startsWith(t+`.`)||(n[r]=i);return n}var Oe=`/home/grigorii/Projects/GitHub/grigorii-horos/coffer/packages/web/render/computed-ctx.tsx`,R={settings:{},global:{}},z=(0,j.createContext)(R),ke=()=>(0,j.useContext)(z);function Ae(e,t){return{record:e.values??{},settings:t.settings,global:t.global,meta:{library:e.recordCtx.library,shelf:e.recordCtx.shelf}}}async function B(e){let t=await fetch(`/api/plugins/${e}/settings`);return t.ok?await t.json():{}}function je({library:e,shelf:t,children:n}){let[r,i]=(0,j.useState)(R),a=ye(e,t);return(0,j.useEffect)(()=>{let e=!0;return Promise.all([a?B(a):Promise.resolve({}),B(`core`)]).then(([t,n])=>{e&&i({settings:t,global:n})}),()=>{e=!1}},[a]),(0,F.jsxDEV)(z.Provider,{value:r,children:n},void 0,!1,{fileName:Oe,lineNumber:57,columnNumber:10},this)}var Me={}.hasOwnProperty,Ne=/^(https?|ircs?|mailto|xmpp)$/i,Pe=/^https?$/i;function V(e){let t=e||{},n=!0,r={},i=[[]],a=[],o=[],s=oe([{enter:{blockQuote:ce,codeFenced:me,codeFencedFenceInfo:h,codeFencedFenceMeta:h,codeIndented:M,codeText:J,content:Oe,definition:I,definitionDestinationString:Te,definitionLabelString:h,definitionTitleString:h,emphasis:K,htmlFlow:U,htmlText:G,image:P,label:h,link:ge,listItemMarker:ne,listItemValue:te,listOrdered:C,listUnordered:ee,paragraph:fe,reference:h,resource:be,resourceDestinationString:xe,resourceTitleString:h,setextHeading:z,strong:q},exit:{atxHeading:Ae,atxHeadingSequence:R,autolinkEmail:Be,autolinkProtocol:ze,blockQuote:ue,characterEscapeValue:V,characterReferenceMarkerHexadecimal:Z,characterReferenceMarkerNumeric:Z,characterReferenceValue:Q,codeFenced:N,codeFencedFence:he,codeFencedFenceInfo:j,codeFencedFenceMeta:S,codeFlowValue:Ie,codeIndented:N,codeText:Y,codeTextData:V,data:V,definition:De,definitionDestinationString:L,definitionLabelString:we,definitionTitleString:Ee,emphasis:X,hardBreakEscape:H,hardBreakTrailing:H,htmlFlow:W,htmlFlowData:V,htmlText:W,htmlTextData:V,image:F,label:ve,labelText:_e,lineEnding:Fe,link:F,listOrdered:re,listUnordered:ie,paragraph:pe,reference:S,referenceString:ye,resource:S,resourceDestinationString:Se,resourceTitleString:Ce,setextHeading:je,setextHeadingLineSequence:B,setextHeadingText:ke,strong:Le,thematicBreak:Re}},...t.htmlExtensions||[]]),c={definitions:r,tightStack:o},l={buffer:h,encode:x,getData:m,lineEndingIfNeeded:b,options:t,raw:v,resume:g,setData:p,tag:_},u=t.defaultLineEnding;return d;function d(e){let t=-1,n=0,r=[],a=[],o=[];for(;++t<e.length;)!u&&(e[t][1].type===k.lineEnding||e[t][1].type===k.lineEndingBlank)&&(u=e[t][2].sliceSerialize(e[t][1])),(e[t][1].type===k.listOrdered||e[t][1].type===k.listUnordered)&&(e[t][0]===`enter`?r.push(t):f(e.slice(r.pop(),t))),e[t][1].type===k.definition&&(e[t][0]===`enter`?(o=T(o,e.slice(n,t)),n=t):(a=T(a,e.slice(n,t+1)),n=t+1));a=T(a,o),a=T(a,e.slice(n)),t=-1;let c=a;for(s.enter.null&&s.enter.null.call(l);++t<e.length;){let e=s[c[t][0]],n=c[t][1].type,r=e[n];Me.call(e,n)&&r&&r.call({sliceSerialize:c[t][2].sliceSerialize,...l},c[t][1])}return s.exit.null&&s.exit.null.call(l),i[0].join(``)}function f(e){let t=e.length,n=0,r=0,i=!1,a;for(;++n<t;){let t=e[n];if(t[1]._container)a=void 0,t[0]===`enter`?r++:r--;else switch(t[1].type){case k.listItemPrefix:t[0]===`exit`&&(a=!0);break;case k.linePrefix:break;case k.lineEndingBlank:t[0]===`enter`&&!r&&(a?a=void 0:i=!0);break;default:a=void 0}}e[0][1]._loose=i}function p(e,t){c[e]=t}function m(e){return c[e]}function h(){i.push([])}function g(){let e=i.pop();return w(e!==void 0,`Cannot resume w/o buffer`),e.join(``)}function _(e){n&&(p(`lastWasTag`,!0),i[i.length-1].push(e))}function v(e){p(`lastWasTag`),i[i.length-1].push(e)}function y(){v(u||`
2
- `)}function b(){let e=i[i.length-1],t=e[e.length-1],n=t?t.charCodeAt(t.length-1):D.eof;n===D.lf||n===D.cr||n===D.eof||y()}function x(e){return m(`ignoreEncode`)?e:le(e)}function S(){g()}function C(e){o.push(!e._loose),b(),_(`<ol`),p(`expectFirstItem`,!0)}function ee(e){o.push(!e._loose),b(),_(`<ul`),p(`expectFirstItem`,!0)}function te(e){if(m(`expectFirstItem`)){let t=Number.parseInt(this.sliceSerialize(e),A.numericBaseDecimal);t!==1&&_(` start="`+x(String(t))+`"`)}}function ne(){m(`expectFirstItem`)?_(`>`):E(),b(),_(`<li>`),p(`expectFirstItem`),p(`lastWasTag`)}function re(){E(),o.pop(),y(),_(`</ol>`)}function ie(){E(),o.pop(),y(),_(`</ul>`)}function E(){m(`lastWasTag`)&&!m(`slurpAllLineEndings`)&&b(),_(`</li>`),p(`slurpAllLineEndings`)}function ce(){o.push(!1),b(),_(`<blockquote>`)}function ue(){o.pop(),b(),_(`</blockquote>`),p(`slurpAllLineEndings`)}function fe(){o[o.length-1]||(b(),_(`<p>`)),p(`slurpAllLineEndings`)}function pe(){o[o.length-1]?p(`slurpAllLineEndings`,!0):_(`</p>`)}function me(){b(),_(`<pre><code`),p(`fencesCount`,0)}function j(){_(` class="language-`+g()+`"`)}function he(){let e=m(`fencesCount`)||0;e||(_(`>`),p(`slurpOneLineEnding`,!0)),p(`fencesCount`,e+1)}function M(){b(),_(`<pre><code>`)}function N(){let e=m(`fencesCount`);e!==void 0&&e<2&&c.tightStack.length>0&&!m(`lastWasTag`)&&y(),m(`flowCodeSeenData`)&&b(),_(`</code></pre>`),e!==void 0&&e<2&&b(),p(`flowCodeSeenData`),p(`fencesCount`),p(`slurpOneLineEnding`)}function P(){a.push({image:!0}),n=void 0}function ge(){a.push({})}function _e(e){a[a.length-1].labelId=this.sliceSerialize(e)}function ve(){a[a.length-1].label=g()}function ye(e){a[a.length-1].referenceId=this.sliceSerialize(e)}function be(){h(),a[a.length-1].destination=``}function xe(){h(),p(`ignoreEncode`,!0)}function Se(){a[a.length-1].destination=g(),p(`ignoreEncode`)}function Ce(){a[a.length-1].title=g()}function F(){let e=a.length-1,i=a[e],o=i.referenceId||i.labelId;w(o!==void 0,"media should have `referenceId` or `labelId`"),w(i.label!==void 0,"media should have `label`");let s=i.destination===void 0?r[de(o)]:i;for(n=!0;e--;)if(a[e].image){n=void 0;break}i.image?(_(`<img src="`+O(s.destination,t.allowDangerousProtocol?void 0:Pe)+`" alt="`),v(i.label),_(`"`)):_(`<a href="`+O(s.destination,t.allowDangerousProtocol?void 0:Ne)+`"`),_(s.title?` title="`+s.title+`"`:``),i.image?_(` />`):(_(`>`),v(i.label),_(`</a>`)),a.pop()}function I(){h(),a.push({})}function we(e){g(),a[a.length-1].labelId=this.sliceSerialize(e)}function Te(){h(),p(`ignoreEncode`,!0)}function L(){a[a.length-1].destination=g(),p(`ignoreEncode`)}function Ee(){a[a.length-1].title=g()}function De(){let e=a[a.length-1];w(e.labelId!==void 0,"media should have `labelId`");let t=de(e.labelId);g(),Me.call(r,t)||(r[t]=a[a.length-1]),a.pop()}function Oe(){p(`slurpAllLineEndings`,!0)}function R(e){m(`headingRank`)||(p(`headingRank`,this.sliceSerialize(e).length),b(),_(`<h`+m(`headingRank`)+`>`))}function z(){h(),p(`slurpAllLineEndings`)}function ke(){p(`slurpAllLineEndings`,!0)}function Ae(){_(`</h`+m(`headingRank`)+`>`),p(`headingRank`)}function B(e){p(`headingRank`,this.sliceSerialize(e).charCodeAt(0)===D.equalsTo?1:2)}function je(){let e=g();b(),_(`<h`+m(`headingRank`)+`>`),v(e),_(`</h`+m(`headingRank`)+`>`),p(`slurpAllLineEndings`),p(`headingRank`)}function V(e){v(x(this.sliceSerialize(e)))}function Fe(e){if(!m(`slurpAllLineEndings`)){if(m(`slurpOneLineEnding`)){p(`slurpOneLineEnding`);return}if(m(`inCodeText`)){v(` `);return}v(x(this.sliceSerialize(e)))}}function Ie(e){v(x(this.sliceSerialize(e))),p(`flowCodeSeenData`,!0)}function H(){_(`<br />`)}function U(){b(),G()}function W(){p(`ignoreEncode`)}function G(){t.allowDangerousHtml&&p(`ignoreEncode`,!0)}function K(){_(`<em>`)}function q(){_(`<strong>`)}function J(){p(`inCodeText`,!0),_(`<code>`)}function Y(){p(`inCodeText`),_(`</code>`)}function X(){_(`</em>`)}function Le(){_(`</strong>`)}function Re(){b(),_(`<hr />`)}function Z(e){p(`characterReferenceType`,e.type)}function Q(e){let t=this.sliceSerialize(e);v(x(m(`characterReferenceType`)?se(t,m(`characterReferenceType`)===k.characterReferenceMarkerNumeric?A.numericBaseDecimal:A.numericBaseHexadecimal):ae(t))),p(`characterReferenceType`)}function ze(e){let n=this.sliceSerialize(e);_(`<a href="`+O(n,t.allowDangerousProtocol?void 0:Ne)+`">`),v(x(n)),_(`</a>`)}function Be(e){let t=this.sliceSerialize(e);_(`<a href="`+O(`mailto:`+t)+`">`),v(x(t)),_(`</a>`)}}function Fe(e,t,n){return typeof t!=`string`&&(n=t,t=void 0),V(n)(ce(E(n).document().write(fe()(e,t,!0))))}var Ie=`/home/grigorii/Projects/GitHub/grigorii-horos/coffer/packages/web/Markdown.tsx`;function H(e){return Fe(e,{allowDangerousHtml:!0,extensions:[pe()],htmlExtensions:[ue()]})}function U({value:e}){return(0,F.jsxDEV)(`div`,{className:`md-static`,dangerouslySetInnerHTML:{__html:H(e)}},void 0,!1,{fileName:Ie,lineNumber:19,columnNumber:10},this)}var W=`/home/grigorii/Projects/GitHub/grigorii-horos/coffer/packages/web/layout.tsx`;function G({text:e}){return(0,F.jsxDEV)(U,{value:e},void 0,!1,{fileName:W,lineNumber:29,columnNumber:10},this)}function K(e,{bridge:t,t:n,computed:r}){if(u(e)){let r=e.key;if(t.isHidden(r))return null;let i=S({kind:C(e)});if(!i)return console.warn(`[LayoutRenderer] no renderer for kind '${C(e)}'`),null;let a=e.type;return{node:(0,F.jsxDEV)(`div`,{onBlur:e=>{te(e.relatedTarget)||t.touch(r)},children:(0,F.jsxDEV)(i.Page,{el:e,field:a,fieldKey:r,value:t.getValue(r),onChange:e=>t.setValue(r,e),error:t.error(r),mode:t.mode,label:a.label?n(a.label):void 0,required:t.requiredOf(r),recordCtx:t.recordCtx},void 0,!1,{fileName:W,lineNumber:82,columnNumber:9},this)},void 0,!1,{fileName:W,lineNumber:81,columnNumber:7},this),layout:x(a)}}if(p(e)){let i=S({kind:C(e)});if(!i)return console.warn(`[LayoutRenderer] no renderer for static kind '${C(e)}'`),null;let a=e.type,o=e.value;if(typeof e.value==`function`)try{o=e.value(Ae(t,r))}catch(e){console.warn(`[computed] value function threw`,e),o=void 0}return{node:(0,F.jsxDEV)(i.Page,{el:e,field:a,value:o,mode:`view`,label:a.label?n(a.label):void 0,recordCtx:t.recordCtx},void 0,!1,{fileName:W,lineNumber:116,columnNumber:7},this),layout:x(a)}}if(m(e)||_(e))return null;if(v(e)){let n=S({kind:`button`});return n?{node:(0,F.jsxDEV)(n.Page,{el:e,value:void 0,mode:t.mode,recordCtx:t.recordCtx},void 0,!1,{fileName:W,lineNumber:139,columnNumber:18},this),layout:`scalar`}:null}return null}function q(e,t,n,r=`wrap`){let i=[],a=[],o=0,s=()=>{a.length&&(i.push({kind:`flow`,items:a,scroll:r===`scroll`}),a=[])};for(let r of e){if(n){if(m(r)){s(),i.push({kind:`divider`});continue}if(_(r)){s(),i.push({kind:`block`,node:(0,F.jsxDEV)(J,{textKey:r.text},void 0,!1,{fileName:W,lineNumber:173,columnNumber:41},this)});continue}if(g(r)){s();continue}if(u(r)||p(r)||v(r)){let e=K(r,n);if(e==null)continue;if(e.layout===`block`)s(),i.push({kind:`block`,node:e.node});else{let t=u(r)?r.key:`static-${o++}`;a.push({key:t,node:(0,F.jsxDEV)(j.Fragment,{children:e.node},t,!1,{fileName:W,lineNumber:190,columnNumber:19},this)})}continue}continue}if(u(r)){let e=t.renderField(r.key,r.type);if(e==null)continue;x(r.type)===`block`?(s(),i.push({kind:`block`,node:e})):a.push({key:r.key,node:(0,F.jsxDEV)(j.Fragment,{children:e},r.key,!1,{fileName:W,lineNumber:206,columnNumber:47},this)})}else m(r)?(s(),i.push({kind:`divider`})):_(r)?(s(),i.push({kind:`block`,node:(0,F.jsxDEV)(J,{textKey:r.text},void 0,!1,{fileName:W,lineNumber:212,columnNumber:39},this)})):g(r)&&s()}return s(),i}function J({textKey:e}){let{t}=n();return(0,F.jsxDEV)(G,{text:t(e)},void 0,!1,{fileName:W,lineNumber:224,columnNumber:10},this)}function Y(e){let t=[];for(let n of e)n.kind===`divider`&&(!t.length||t[t.length-1].kind===`divider`)||t.push(n);for(;t.length&&t[t.length-1].kind===`divider`;)t.pop();return t}function X({label:e,icon:t,labelAfter:n,children:r,rail:i=!0,tone:s=`group`}){let l=(0,F.jsxDEV)(`div`,{className:`flex flex-col min-w-0 ${o}`,children:r},void 0,!1,{fileName:W,lineNumber:276,columnNumber:16},this);return(0,F.jsxDEV)(`section`,{className:`flex flex-col min-w-0 ${o}`,children:[e&&(0,F.jsxDEV)(a,{label:e,icon:t,actions:n,tone:s},void 0,!1,{fileName:W,lineNumber:281,columnNumber:17},this),i&&e?(0,F.jsxDEV)(c,{children:l},void 0,!1,{fileName:W,lineNumber:282,columnNumber:24},this):l]},void 0,!0,{fileName:W,lineNumber:278,columnNumber:5},this)}function Le({group:e,children:t}){let{t:r}=n();return(0,F.jsxDEV)(X,{label:e.label?r(e.label):void 0,icon:s(e),children:t},void 0,!1,{fileName:W,lineNumber:295,columnNumber:5},this)}function Re({group:e,children:t}){let{t:r}=n();return(0,F.jsxDEV)(`div`,{className:`flex flex-col gap-1 min-w-0`,children:[e.label&&(0,F.jsxDEV)(`span`,{className:`text-xs text-muted`,children:r(e.label)},void 0,!1,{fileName:W,lineNumber:306,columnNumber:23},this),t]},void 0,!0,{fileName:W,lineNumber:305,columnNumber:5},this)}function Z({group:e,renderCell:t}){let{t:r}=n(),i=[[]];for(let t of e.fields)g(t)?i.push([]):i[i.length-1].push(t);let a=Math.max(1,...i.map(e=>e.length)),o=!1,c=[];return i.forEach((e,n)=>{for(let r=0;r<a;r++){let i=e[r],a=i?t(i):null;a&&(o=!0),c.push((0,F.jsxDEV)(`div`,{className:`min-w-0`,children:a},`${n}-${r}`,!1,{fileName:W,lineNumber:342,columnNumber:9},this))}}),o?(0,F.jsxDEV)(ne.Provider,{value:!0,children:(0,F.jsxDEV)(X,{label:e.label?r(e.label):void 0,icon:s(e),children:(0,F.jsxDEV)(`div`,{className:`overflow-x-auto`,children:(0,F.jsxDEV)(`div`,{className:`grid gap-x-4 gap-y-2 items-start`,style:{gridTemplateColumns:`repeat(${a}, max-content)`},children:c},void 0,!1,{fileName:W,lineNumber:353,columnNumber:11},this)},void 0,!1,{fileName:W,lineNumber:352,columnNumber:9},this)},void 0,!1,{fileName:W,lineNumber:351,columnNumber:7},this)},void 0,!1,{fileName:W,lineNumber:350,columnNumber:5},this):null}function Q(e,t){return e.filter(e=>e.kind!==`divider`).length?e.map((e,n)=>{let r=`${t}-${n}`;switch(e.kind){case`flow`:return(0,F.jsxDEV)(ee,{items:e.items,scroll:e.scroll},r,!1,{fileName:W,lineNumber:373,columnNumber:16},this);case`block`:return(0,F.jsxDEV)(j.Fragment,{children:e.node},r,!1,{fileName:W,lineNumber:375,columnNumber:16},this);case`group`:return(0,F.jsxDEV)(j.Fragment,{children:e.node},r,!1,{fileName:W,lineNumber:377,columnNumber:16},this);case`divider`:return(0,F.jsxDEV)(`hr`,{className:`border-border`},r,!1,{fileName:W,lineNumber:379,columnNumber:16},this)}}):null}function ze({items:e,ctx:t}){let{t:r}=n(),i=ke(),a=t.bridge?{bridge:t.bridge,t:r,computed:i}:void 0,s=[],c=[],l=()=>{c.length&&(s.push(...q(c,t,a)),c=[])};for(let n of e)if(d(n))if(l(),a)if(f(n)){let e=n.key,t=a.bridge.getValue(e);if(!a.bridge.isHidden(e)){let r=S({kind:C(n)});if(r){let i=(0,F.jsxDEV)(r.Page,{el:n,value:t,onChange:t=>a.bridge.setValue(e,t),error:a.bridge.error(e),mode:a.bridge.mode,recordCtx:a.bridge.recordCtx},void 0,!1,{fileName:W,lineNumber:418,columnNumber:17},this);s.push({kind:`group`,node:i})}else console.warn(`[LayoutRenderer] no renderer for storage group kind '${C(n)}'`)}}else if(n.display===`sheet`)s.push({kind:`group`,node:(0,F.jsxDEV)(Z,{group:n,renderCell:e=>d(e)?null:K(e,a)?.node??null},void 0,!1,{fileName:W,lineNumber:437,columnNumber:15},this)});else{let e=Q(Y(q(n.fields,t,a,n.display===`scroll`?`scroll`:`wrap`)),`g`);if(e)if(n.display===`scroll`)s.push({kind:`group`,node:(0,F.jsxDEV)(Re,{group:n,children:e},void 0,!1,{fileName:W,lineNumber:451,columnNumber:49},this)});else{let t=S({kind:`group`});t?s.push({kind:`group`,node:(0,F.jsxDEV)(t.Page,{el:n,value:void 0,mode:a.bridge.mode,recordCtx:a.bridge.recordCtx,children:e},void 0,!1,{fileName:W,lineNumber:458,columnNumber:21},this)}):s.push({kind:`group`,node:(0,F.jsxDEV)(Le,{group:n,children:e},void 0,!1,{fileName:W,lineNumber:464,columnNumber:51},this)})}}else if(f(n)){let e=t.renderGroup?.(n.key,n);e&&s.push({kind:`group`,node:e})}else if(n.display===`sheet`)s.push({kind:`group`,node:(0,F.jsxDEV)(Z,{group:n,renderCell:e=>u(e)?t.renderField(e.key,e.type):null},void 0,!1,{fileName:W,lineNumber:479,columnNumber:13},this)});else{let e=Q(Y(q(n.fields,t,void 0,n.display===`scroll`?`scroll`:`wrap`)),`g`);e&&s.push({kind:`group`,node:n.display===`scroll`?(0,F.jsxDEV)(Re,{group:n,children:e},void 0,!1,{fileName:W,lineNumber:496,columnNumber:17},this):(0,F.jsxDEV)(Le,{group:n,children:e},void 0,!1,{fileName:W,lineNumber:497,columnNumber:17},this)})}else c.push(n);l();let p=Q(Y(s),`l`);return p==null?null:(0,F.jsxDEV)(`div`,{className:`@container flex flex-col min-w-0 ${o}`,children:p},void 0,!1,{fileName:W,lineNumber:510,columnNumber:10},this)}function Be(e){let{fm:t,mode:r,recordCtx:i}=e,{t:a}=n(),o=L(a),[s]=(0,j.useState)(e.initial),[c,u]=(0,j.useState)(s),[d,f]=(0,j.useState)({}),[p,m]=(0,j.useState)(()=>new Set),h=(0,j.useMemo)(()=>new Set(e.hiddenFields??[]),[e.hiddenFields]);return{values:c,setValues:u,initial:s,errors:d,setErrors:f,touched:p,setTouched:m,bridge:(0,j.useMemo)(()=>({mode:r,recordCtx:i,values:c,getValue:e=>c[e],setValue:(e,n)=>{if(u(t=>({...t,[e]:n})),p.has(e)){let r=t[e],i=r?l(r,n):null;f(t=>{let n={...t};return i?n[e]=o(i.code,i.params):delete n[e],n})}},touch:e=>{m(t=>t.has(e)?t:new Set(t).add(e));let n=t[e],r=n?l(n,c[e]):null;f(t=>{let n={...t};return r?n[e]=o(r.code,r.params):delete n[e],n})},isHidden:e=>{let n=t[e];return!!n?.virtual||h.has(e)||y(n?.hidden,c)},requiredOf:e=>y(t[e]?.required,c),error:e=>d[e]}),[c,d,p,h,t,r,i,o])}}var $=`/home/grigorii/Projects/GitHub/grigorii-horos/coffer/packages/web/components/Toolbar.tsx`;function Ve({children:e,actions:t}){return(0,F.jsxDEV)(`div`,{className:`eink-solid sticky top-0 z-20 flex h-[52px] items-center justify-between gap-3 bg-bg/85 px-4 backdrop-blur md:px-6 border-b border-border2 shrink-0`,children:[(0,F.jsxDEV)(`div`,{className:`flex items-center gap-2.5 min-w-0`,children:e},void 0,!1,{fileName:$,lineNumber:10,columnNumber:7},this),t&&(0,F.jsxDEV)(`div`,{className:`flex items-center gap-2 shrink-0`,children:t},void 0,!1,{fileName:$,lineNumber:11,columnNumber:19},this)]},void 0,!0,{fileName:$,lineNumber:9,columnNumber:5},this)}export{ge as _,U as a,me as b,De as c,we as d,Se as f,Ce as g,ve as h,X as i,L as l,be as m,Be as n,je as o,_e as p,ze as r,I as s,Ve as t,Ee as u,xe as v,N as y};
1
+ import{r as e}from"./rolldown-runtime-QTnfLwEv.js";import{a as t,t as n}from"./i18n-vendor-T6EnJ_TL.js";import{t as r}from"./react-vendor-BskHO5hY.js";import{n as i}from"./x-BFRg18Fi.js";import{c as a,d as o,p as s,u as c}from"./chrome-DUkOYMaR.js";import{T as l,d as u,f as d,g as f,h as p,l as m,n as h,o as g,p as _,s as v}from"./fields-CnmTcDr4.js";import{o as y,v as b}from"./shelf-BdJ77CWj.js";import{n as x,o as S,t as C}from"./src-DKYT_mO5.js";import{i as ee,n as te,r as ne}from"./field-frame-BvHP_maQ.js";import{n as re}from"./extend-lcgcPDs5.js";import{t as ie}from"./plugin-q1oOYqt7.js";import{r as ae,t as w}from"./development-olQNibq5.js";import{_ as T,a as E,b as D,g as oe,h as se,i as ce,l as O,m as le,n as ue,p as de,r as fe,t as pe,v as k,y as A}from"./micromark-extension-gfm-BUw6_ZLT.js";var me=i(`arrow-left`,[[`path`,{d:`m12 19-7-7 7-7`,key:`1l729n`}],[`path`,{d:`M19 12H5`,key:`x3x0zl`}]]),j=e(t(),1);function he(e,t={}){let n=t.disabled??new Set,r=e.filter(e=>!n.has(e.id)),i=new Map;for(let e of r){for(let t of e.libraries??[])for(let n of t.shelves)i.set(`${n.library}/${n.shelf}`,e.id);for(let t of e.libraryShelves??[])i.set(`${t.library}/${t.shelf}`,e.id)}let a=(e,t)=>i.get(`${e}/${t}`);for(let e of r)for(let t of e.dependsOn)if(n.has(t))throw Error(`[plugin] '${e.id}' is enabled, but its dependency '${t}' is disabled`);let{order:o,libraries:s,shelves:c,extends_:l}=ie(r),u=new Map;for(let e of r)for(let t of e.fieldContribs??[]){let e=`${t.library}/${t.shelf}/${t.field}`,n=u.get(e)??{options:[],suggestions:[]};t.options&&n.options.push(...t.options),t.suggestions&&n.suggestions.push(...t.suggestions),u.set(e,n)}let d=(e,t)=>{if(t.options.length){let n=new Set((e.options??[]).map(e=>e.value));e.options=[...e.options??[],...t.options.filter(e=>!n.has(e.value))]}if(t.suggestions.length){let n=e.hints.suggestions??[],r=new Set(n);e.hints.suggestions=[...n,...t.suggestions.filter(e=>!r.has(e))]}},f=new Map;for(let e of r)for(let t of e.optionLists??[])f.set(t.name,t.options);let p=e=>f.get(e)??[];for(let e of c)for(let[t,n]of y(e.fields)){let r=u.get(`${e.library}/${e.shelf}/${t}`);r&&d(n,r)}for(let e of r)for(let[t,n]of e.settings?y(e.settings.fields):[]){let r=u.get(`_settings/${e.id}/${t}`);r&&(d(n,r),n.prim===`select`&&n.options?.length&&h(n,n.options.map(e=>e.value)))}let m=new Map;for(let e of c)for(let[t,n]of y(e.fields)){let r=n.hints.source,i=n.options??[],a=r?f.get(r)??[]:[],o=new Set(i.map(e=>e.value)),s=[...i,...a.filter(e=>!o.has(e.value))];n.prim===`select`&&s.length&&h(n,s.map(e=>e.value)),s.length&&(n.options=s,m.set(`${e.library}/${e.shelf}/${t}`,s))}return{order:o,libraries:s,shelves:c,extends_:l,getShelf:(e,t)=>c.find(n=>n.library===e&&n.shelf===t),getLibrary:e=>s.find(t=>t.meta.id===e),getExtendsFor:(e,t)=>l.filter(n=>re(n,e,t)),getFieldOptions:(e,t,n)=>m.get(`${e}/${t}/${n}`)??[],getOptionList:p,getShelfOwner:a}}var M=null;function N(e){M=he(e)}function P(){if(!M)throw Error(`[registry] not initialized — call initRegistry() in the boot loader`);return M}var ge=(e,t)=>P().getShelf(e,t),_e=(e,t)=>P().getExtendsFor(e,t),ve=e=>P().getOptionList(e),ye=(e,t)=>P().getShelfOwner(e,t),be=()=>P().libraries,xe=()=>P().shelves,Se=()=>P().extends_,Ce=()=>P().order,F=r(),I=(0,j.createContext)(()=>void 0),we=()=>(0,j.useContext)(I),Te=e=>e.join(`.`);function L(e){return(t,n)=>t===`pattern`&&n?.messageKey?e(String(n.messageKey)):e(`validation.${t}`,n)}function Ee(e,t){let n={};for(let r of e){let e=Te(r.path?.length?r.path:[r.field]);n[e]||(n[e]=t(r.code,r.params))}return n}function De(e,t){let n={};for(let[r,i]of Object.entries(e))r===t||r.startsWith(t+`.`)||(n[r]=i);return n}var Oe=`/home/grigorii/Projects/GitHub/grigorii-horos/coffer/packages/web/render/computed-ctx.tsx`,R={settings:{},global:{}},z=(0,j.createContext)(R),ke=()=>(0,j.useContext)(z);function Ae(e,t){return{record:e.values??{},settings:t.settings,global:t.global,meta:{library:e.recordCtx.library,shelf:e.recordCtx.shelf}}}async function B(e){let t=await fetch(`/api/plugins/${e}/settings`);return t.ok?await t.json():{}}function je({library:e,shelf:t,children:n}){let[r,i]=(0,j.useState)(R),a=ye(e,t);return(0,j.useEffect)(()=>{let e=!0;return Promise.all([a?B(a):Promise.resolve({}),B(`core`)]).then(([t,n])=>{e&&i({settings:t,global:n})}),()=>{e=!1}},[a]),(0,F.jsxDEV)(z.Provider,{value:r,children:n},void 0,!1,{fileName:Oe,lineNumber:57,columnNumber:10},this)}var Me={}.hasOwnProperty,Ne=/^(https?|ircs?|mailto|xmpp)$/i,Pe=/^https?$/i;function V(e){let t=e||{},n=!0,r={},i=[[]],a=[],o=[],s=oe([{enter:{blockQuote:ce,codeFenced:me,codeFencedFenceInfo:h,codeFencedFenceMeta:h,codeIndented:M,codeText:J,content:Oe,definition:I,definitionDestinationString:Te,definitionLabelString:h,definitionTitleString:h,emphasis:K,htmlFlow:U,htmlText:G,image:P,label:h,link:ge,listItemMarker:ne,listItemValue:te,listOrdered:C,listUnordered:ee,paragraph:fe,reference:h,resource:be,resourceDestinationString:xe,resourceTitleString:h,setextHeading:z,strong:q},exit:{atxHeading:Ae,atxHeadingSequence:R,autolinkEmail:Be,autolinkProtocol:ze,blockQuote:ue,characterEscapeValue:V,characterReferenceMarkerHexadecimal:Z,characterReferenceMarkerNumeric:Z,characterReferenceValue:Q,codeFenced:N,codeFencedFence:he,codeFencedFenceInfo:j,codeFencedFenceMeta:S,codeFlowValue:Ie,codeIndented:N,codeText:Y,codeTextData:V,data:V,definition:De,definitionDestinationString:L,definitionLabelString:we,definitionTitleString:Ee,emphasis:X,hardBreakEscape:H,hardBreakTrailing:H,htmlFlow:W,htmlFlowData:V,htmlText:W,htmlTextData:V,image:F,label:ve,labelText:_e,lineEnding:Fe,link:F,listOrdered:re,listUnordered:ie,paragraph:pe,reference:S,referenceString:ye,resource:S,resourceDestinationString:Se,resourceTitleString:Ce,setextHeading:je,setextHeadingLineSequence:B,setextHeadingText:ke,strong:Le,thematicBreak:Re}},...t.htmlExtensions||[]]),c={definitions:r,tightStack:o},l={buffer:h,encode:x,getData:m,lineEndingIfNeeded:b,options:t,raw:v,resume:g,setData:p,tag:_},u=t.defaultLineEnding;return d;function d(e){let t=-1,n=0,r=[],a=[],o=[];for(;++t<e.length;)!u&&(e[t][1].type===k.lineEnding||e[t][1].type===k.lineEndingBlank)&&(u=e[t][2].sliceSerialize(e[t][1])),(e[t][1].type===k.listOrdered||e[t][1].type===k.listUnordered)&&(e[t][0]===`enter`?r.push(t):f(e.slice(r.pop(),t))),e[t][1].type===k.definition&&(e[t][0]===`enter`?(o=T(o,e.slice(n,t)),n=t):(a=T(a,e.slice(n,t+1)),n=t+1));a=T(a,o),a=T(a,e.slice(n)),t=-1;let c=a;for(s.enter.null&&s.enter.null.call(l);++t<e.length;){let e=s[c[t][0]],n=c[t][1].type,r=e[n];Me.call(e,n)&&r&&r.call({sliceSerialize:c[t][2].sliceSerialize,...l},c[t][1])}return s.exit.null&&s.exit.null.call(l),i[0].join(``)}function f(e){let t=e.length,n=0,r=0,i=!1,a;for(;++n<t;){let t=e[n];if(t[1]._container)a=void 0,t[0]===`enter`?r++:r--;else switch(t[1].type){case k.listItemPrefix:t[0]===`exit`&&(a=!0);break;case k.linePrefix:break;case k.lineEndingBlank:t[0]===`enter`&&!r&&(a?a=void 0:i=!0);break;default:a=void 0}}e[0][1]._loose=i}function p(e,t){c[e]=t}function m(e){return c[e]}function h(){i.push([])}function g(){let e=i.pop();return w(e!==void 0,`Cannot resume w/o buffer`),e.join(``)}function _(e){n&&(p(`lastWasTag`,!0),i[i.length-1].push(e))}function v(e){p(`lastWasTag`),i[i.length-1].push(e)}function y(){v(u||`
2
+ `)}function b(){let e=i[i.length-1],t=e[e.length-1],n=t?t.charCodeAt(t.length-1):D.eof;n===D.lf||n===D.cr||n===D.eof||y()}function x(e){return m(`ignoreEncode`)?e:le(e)}function S(){g()}function C(e){o.push(!e._loose),b(),_(`<ol`),p(`expectFirstItem`,!0)}function ee(e){o.push(!e._loose),b(),_(`<ul`),p(`expectFirstItem`,!0)}function te(e){if(m(`expectFirstItem`)){let t=Number.parseInt(this.sliceSerialize(e),A.numericBaseDecimal);t!==1&&_(` start="`+x(String(t))+`"`)}}function ne(){m(`expectFirstItem`)?_(`>`):E(),b(),_(`<li>`),p(`expectFirstItem`),p(`lastWasTag`)}function re(){E(),o.pop(),y(),_(`</ol>`)}function ie(){E(),o.pop(),y(),_(`</ul>`)}function E(){m(`lastWasTag`)&&!m(`slurpAllLineEndings`)&&b(),_(`</li>`),p(`slurpAllLineEndings`)}function ce(){o.push(!1),b(),_(`<blockquote>`)}function ue(){o.pop(),b(),_(`</blockquote>`),p(`slurpAllLineEndings`)}function fe(){o[o.length-1]||(b(),_(`<p>`)),p(`slurpAllLineEndings`)}function pe(){o[o.length-1]?p(`slurpAllLineEndings`,!0):_(`</p>`)}function me(){b(),_(`<pre><code`),p(`fencesCount`,0)}function j(){_(` class="language-`+g()+`"`)}function he(){let e=m(`fencesCount`)||0;e||(_(`>`),p(`slurpOneLineEnding`,!0)),p(`fencesCount`,e+1)}function M(){b(),_(`<pre><code>`)}function N(){let e=m(`fencesCount`);e!==void 0&&e<2&&c.tightStack.length>0&&!m(`lastWasTag`)&&y(),m(`flowCodeSeenData`)&&b(),_(`</code></pre>`),e!==void 0&&e<2&&b(),p(`flowCodeSeenData`),p(`fencesCount`),p(`slurpOneLineEnding`)}function P(){a.push({image:!0}),n=void 0}function ge(){a.push({})}function _e(e){a[a.length-1].labelId=this.sliceSerialize(e)}function ve(){a[a.length-1].label=g()}function ye(e){a[a.length-1].referenceId=this.sliceSerialize(e)}function be(){h(),a[a.length-1].destination=``}function xe(){h(),p(`ignoreEncode`,!0)}function Se(){a[a.length-1].destination=g(),p(`ignoreEncode`)}function Ce(){a[a.length-1].title=g()}function F(){let e=a.length-1,i=a[e],o=i.referenceId||i.labelId;w(o!==void 0,"media should have `referenceId` or `labelId`"),w(i.label!==void 0,"media should have `label`");let s=i.destination===void 0?r[de(o)]:i;for(n=!0;e--;)if(a[e].image){n=void 0;break}i.image?(_(`<img src="`+O(s.destination,t.allowDangerousProtocol?void 0:Pe)+`" alt="`),v(i.label),_(`"`)):_(`<a href="`+O(s.destination,t.allowDangerousProtocol?void 0:Ne)+`"`),_(s.title?` title="`+s.title+`"`:``),i.image?_(` />`):(_(`>`),v(i.label),_(`</a>`)),a.pop()}function I(){h(),a.push({})}function we(e){g(),a[a.length-1].labelId=this.sliceSerialize(e)}function Te(){h(),p(`ignoreEncode`,!0)}function L(){a[a.length-1].destination=g(),p(`ignoreEncode`)}function Ee(){a[a.length-1].title=g()}function De(){let e=a[a.length-1];w(e.labelId!==void 0,"media should have `labelId`");let t=de(e.labelId);g(),Me.call(r,t)||(r[t]=a[a.length-1]),a.pop()}function Oe(){p(`slurpAllLineEndings`,!0)}function R(e){m(`headingRank`)||(p(`headingRank`,this.sliceSerialize(e).length),b(),_(`<h`+m(`headingRank`)+`>`))}function z(){h(),p(`slurpAllLineEndings`)}function ke(){p(`slurpAllLineEndings`,!0)}function Ae(){_(`</h`+m(`headingRank`)+`>`),p(`headingRank`)}function B(e){p(`headingRank`,this.sliceSerialize(e).charCodeAt(0)===D.equalsTo?1:2)}function je(){let e=g();b(),_(`<h`+m(`headingRank`)+`>`),v(e),_(`</h`+m(`headingRank`)+`>`),p(`slurpAllLineEndings`),p(`headingRank`)}function V(e){v(x(this.sliceSerialize(e)))}function Fe(e){if(!m(`slurpAllLineEndings`)){if(m(`slurpOneLineEnding`)){p(`slurpOneLineEnding`);return}if(m(`inCodeText`)){v(` `);return}v(x(this.sliceSerialize(e)))}}function Ie(e){v(x(this.sliceSerialize(e))),p(`flowCodeSeenData`,!0)}function H(){_(`<br />`)}function U(){b(),G()}function W(){p(`ignoreEncode`)}function G(){t.allowDangerousHtml&&p(`ignoreEncode`,!0)}function K(){_(`<em>`)}function q(){_(`<strong>`)}function J(){p(`inCodeText`,!0),_(`<code>`)}function Y(){p(`inCodeText`),_(`</code>`)}function X(){_(`</em>`)}function Le(){_(`</strong>`)}function Re(){b(),_(`<hr />`)}function Z(e){p(`characterReferenceType`,e.type)}function Q(e){let t=this.sliceSerialize(e);v(x(m(`characterReferenceType`)?se(t,m(`characterReferenceType`)===k.characterReferenceMarkerNumeric?A.numericBaseDecimal:A.numericBaseHexadecimal):ae(t))),p(`characterReferenceType`)}function ze(e){let n=this.sliceSerialize(e);_(`<a href="`+O(n,t.allowDangerousProtocol?void 0:Ne)+`">`),v(x(n)),_(`</a>`)}function Be(e){let t=this.sliceSerialize(e);_(`<a href="`+O(`mailto:`+t)+`">`),v(x(t)),_(`</a>`)}}function Fe(e,t,n){return typeof t!=`string`&&(n=t,t=void 0),V(n)(ce(E(n).document().write(fe()(e,t,!0))))}var Ie=`/home/grigorii/Projects/GitHub/grigorii-horos/coffer/packages/web/Markdown.tsx`;function H(e){return Fe(e,{allowDangerousHtml:!0,extensions:[pe()],htmlExtensions:[ue()]})}function U({value:e}){return(0,F.jsxDEV)(`div`,{className:`md-static`,dangerouslySetInnerHTML:{__html:H(e)}},void 0,!1,{fileName:Ie,lineNumber:19,columnNumber:10},this)}var W=`/home/grigorii/Projects/GitHub/grigorii-horos/coffer/packages/web/layout.tsx`;function G({text:e}){return(0,F.jsxDEV)(U,{value:e},void 0,!1,{fileName:W,lineNumber:29,columnNumber:10},this)}function K(e,{bridge:t,t:n,computed:r}){if(u(e)){let r=e.key;if(t.isHidden(r))return null;let i=S({kind:C(e)});if(!i)return console.warn(`[LayoutRenderer] no renderer for kind '${C(e)}'`),null;let a=e.type;return{node:(0,F.jsxDEV)(`div`,{onBlur:e=>{te(e.relatedTarget)||t.touch(r)},children:(0,F.jsxDEV)(i.Page,{el:e,field:a,fieldKey:r,value:t.getValue(r),onChange:e=>t.setValue(r,e),error:t.error(r),mode:t.mode,label:a.label?n(a.label):void 0,required:t.requiredOf(r),recordCtx:t.recordCtx},void 0,!1,{fileName:W,lineNumber:82,columnNumber:9},this)},void 0,!1,{fileName:W,lineNumber:81,columnNumber:7},this),layout:x(a)}}if(p(e)){let i=S({kind:C(e)});if(!i)return console.warn(`[LayoutRenderer] no renderer for static kind '${C(e)}'`),null;let a=e.type,o=e.value;if(typeof e.value==`function`)try{o=e.value(Ae(t,r))}catch(e){console.warn(`[computed] value function threw`,e),o=void 0}return{node:(0,F.jsxDEV)(i.Page,{el:e,field:a,value:o,mode:`view`,label:a.label?n(a.label):void 0,recordCtx:t.recordCtx},void 0,!1,{fileName:W,lineNumber:116,columnNumber:7},this),layout:x(a)}}if(m(e)||_(e))return null;if(v(e)){let n=S({kind:`button`});return n?{node:(0,F.jsxDEV)(n.Page,{el:e,value:void 0,mode:t.mode,recordCtx:t.recordCtx},void 0,!1,{fileName:W,lineNumber:139,columnNumber:18},this),layout:`scalar`}:null}return null}function q(e,t,n,r=`wrap`){let i=[],a=[],o=0,s=()=>{a.length&&(i.push({kind:`flow`,items:a,scroll:r===`scroll`}),a=[])};for(let r of e){if(n){if(m(r)){s(),i.push({kind:`divider`});continue}if(_(r)){s(),i.push({kind:`block`,node:(0,F.jsxDEV)(J,{textKey:r.text},void 0,!1,{fileName:W,lineNumber:173,columnNumber:41},this)});continue}if(g(r)){s();continue}if(u(r)||p(r)||v(r)){let e=K(r,n);if(e==null)continue;if(e.layout===`block`)s(),i.push({kind:`block`,node:e.node});else{let t=u(r)?r.key:`static-${o++}`;a.push({key:t,node:(0,F.jsxDEV)(j.Fragment,{children:e.node},t,!1,{fileName:W,lineNumber:190,columnNumber:19},this)})}continue}continue}if(u(r)){let e=t.renderField(r.key,r.type);if(e==null)continue;x(r.type)===`block`?(s(),i.push({kind:`block`,node:e})):a.push({key:r.key,node:(0,F.jsxDEV)(j.Fragment,{children:e},r.key,!1,{fileName:W,lineNumber:206,columnNumber:47},this)})}else m(r)?(s(),i.push({kind:`divider`})):_(r)?(s(),i.push({kind:`block`,node:(0,F.jsxDEV)(J,{textKey:r.text},void 0,!1,{fileName:W,lineNumber:212,columnNumber:39},this)})):g(r)&&s()}return s(),i}function J({textKey:e}){let{t}=n();return(0,F.jsxDEV)(G,{text:t(e)},void 0,!1,{fileName:W,lineNumber:224,columnNumber:10},this)}function Y(e){let t=[];for(let n of e)n.kind===`divider`&&(!t.length||t[t.length-1].kind===`divider`)||t.push(n);for(;t.length&&t[t.length-1].kind===`divider`;)t.pop();return t}function X({label:e,icon:t,labelAfter:n,children:r,rail:i=!0,tone:s=`group`}){let l=(0,F.jsxDEV)(`div`,{className:`flex flex-col min-w-0 ${o}`,children:r},void 0,!1,{fileName:W,lineNumber:276,columnNumber:16},this);return(0,F.jsxDEV)(`section`,{className:`flex flex-col min-w-0 ${o}`,children:[e&&(0,F.jsxDEV)(a,{label:e,icon:t,actions:n,tone:s},void 0,!1,{fileName:W,lineNumber:281,columnNumber:17},this),i&&e?(0,F.jsxDEV)(c,{children:l},void 0,!1,{fileName:W,lineNumber:282,columnNumber:24},this):l]},void 0,!0,{fileName:W,lineNumber:278,columnNumber:5},this)}function Le({group:e,children:t}){let{t:r}=n();return(0,F.jsxDEV)(X,{label:e.label?r(e.label):void 0,icon:s(e),children:t},void 0,!1,{fileName:W,lineNumber:295,columnNumber:5},this)}function Re({group:e,children:t}){let{t:r}=n();return(0,F.jsxDEV)(`div`,{className:`flex flex-col gap-1 min-w-0`,children:[e.label&&(0,F.jsxDEV)(`span`,{className:`text-xs text-muted`,children:r(e.label)},void 0,!1,{fileName:W,lineNumber:306,columnNumber:23},this),t]},void 0,!0,{fileName:W,lineNumber:305,columnNumber:5},this)}function Z({group:e,renderCell:t}){let{t:r}=n(),i=[[]];for(let t of e.fields)g(t)?i.push([]):i[i.length-1].push(t);let a=Math.max(1,...i.map(e=>e.length)),o=!1,c=[];return i.forEach((e,n)=>{for(let r=0;r<a;r++){let i=e[r],a=i?t(i):null;a&&(o=!0),c.push((0,F.jsxDEV)(`div`,{className:`min-w-0`,children:a},`${n}-${r}`,!1,{fileName:W,lineNumber:342,columnNumber:9},this))}}),o?(0,F.jsxDEV)(ne.Provider,{value:!0,children:(0,F.jsxDEV)(X,{label:e.label?r(e.label):void 0,icon:s(e),children:(0,F.jsxDEV)(`div`,{className:`overflow-x-auto`,children:(0,F.jsxDEV)(`div`,{className:`grid gap-x-4 gap-y-2 items-start`,style:{gridTemplateColumns:`repeat(${a}, max-content)`},children:c},void 0,!1,{fileName:W,lineNumber:353,columnNumber:11},this)},void 0,!1,{fileName:W,lineNumber:352,columnNumber:9},this)},void 0,!1,{fileName:W,lineNumber:351,columnNumber:7},this)},void 0,!1,{fileName:W,lineNumber:350,columnNumber:5},this):null}function Q(e,t){return e.filter(e=>e.kind!==`divider`).length?e.map((e,n)=>{let r=`${t}-${n}`;switch(e.kind){case`flow`:return(0,F.jsxDEV)(ee,{items:e.items,scroll:e.scroll},r,!1,{fileName:W,lineNumber:373,columnNumber:16},this);case`block`:return(0,F.jsxDEV)(j.Fragment,{children:e.node},r,!1,{fileName:W,lineNumber:375,columnNumber:16},this);case`group`:return(0,F.jsxDEV)(j.Fragment,{children:e.node},r,!1,{fileName:W,lineNumber:377,columnNumber:16},this);case`divider`:return(0,F.jsxDEV)(`hr`,{className:`border-border`},r,!1,{fileName:W,lineNumber:379,columnNumber:16},this)}}):null}function ze({items:e,ctx:t}){let{t:r}=n(),i=ke(),a=t.bridge?{bridge:t.bridge,t:r,computed:i}:void 0,s=[],c=[],l=()=>{c.length&&(s.push(...q(c,t,a)),c=[])};for(let n of e)if(d(n))if(l(),a)if(f(n)){let e=n.key,t=a.bridge.getValue(e);if(!a.bridge.isHidden(e)){let r=S({kind:C(n)});if(r){let i=(0,F.jsxDEV)(r.Page,{el:n,value:t,onChange:t=>a.bridge.setValue(e,t),error:a.bridge.error(e),mode:a.bridge.mode,recordCtx:a.bridge.recordCtx},void 0,!1,{fileName:W,lineNumber:418,columnNumber:17},this);s.push({kind:`group`,node:i})}else console.warn(`[LayoutRenderer] no renderer for storage group kind '${C(n)}'`)}}else if(n.display===`sheet`)s.push({kind:`group`,node:(0,F.jsxDEV)(Z,{group:n,renderCell:e=>d(e)?null:K(e,a)?.node??null},void 0,!1,{fileName:W,lineNumber:437,columnNumber:15},this)});else{let e=Q(Y(q(n.fields,t,a,n.display===`scroll`?`scroll`:`wrap`)),`g`);if(e)if(n.display===`scroll`)s.push({kind:`group`,node:(0,F.jsxDEV)(Re,{group:n,children:e},void 0,!1,{fileName:W,lineNumber:451,columnNumber:49},this)});else{let t=S({kind:`group`});t?s.push({kind:`group`,node:(0,F.jsxDEV)(t.Page,{el:n,value:void 0,mode:a.bridge.mode,recordCtx:a.bridge.recordCtx,children:e},void 0,!1,{fileName:W,lineNumber:458,columnNumber:21},this)}):s.push({kind:`group`,node:(0,F.jsxDEV)(Le,{group:n,children:e},void 0,!1,{fileName:W,lineNumber:464,columnNumber:51},this)})}}else if(f(n)){let e=t.renderGroup?.(n.key,n);e&&s.push({kind:`group`,node:e})}else if(n.display===`sheet`)s.push({kind:`group`,node:(0,F.jsxDEV)(Z,{group:n,renderCell:e=>u(e)?t.renderField(e.key,e.type):null},void 0,!1,{fileName:W,lineNumber:479,columnNumber:13},this)});else{let e=Q(Y(q(n.fields,t,void 0,n.display===`scroll`?`scroll`:`wrap`)),`g`);e&&s.push({kind:`group`,node:n.display===`scroll`?(0,F.jsxDEV)(Re,{group:n,children:e},void 0,!1,{fileName:W,lineNumber:496,columnNumber:17},this):(0,F.jsxDEV)(Le,{group:n,children:e},void 0,!1,{fileName:W,lineNumber:497,columnNumber:17},this)})}else c.push(n);l();let p=Q(Y(s),`l`);return p==null?null:(0,F.jsxDEV)(`div`,{className:`@container flex flex-col min-w-0 ${o}`,children:p},void 0,!1,{fileName:W,lineNumber:510,columnNumber:10},this)}function Be(e){let{fm:t,mode:r,recordCtx:i}=e,{t:a}=n(),o=L(a),[s]=(0,j.useState)(e.initial),[c,u]=(0,j.useState)(s),[d,f]=(0,j.useState)({}),[p,m]=(0,j.useState)(()=>new Set),h=(0,j.useMemo)(()=>new Set(e.hiddenFields??[]),[e.hiddenFields]);return{values:c,setValues:u,initial:s,errors:d,setErrors:f,touched:p,setTouched:m,bridge:(0,j.useMemo)(()=>({mode:r,recordCtx:i,values:c,getValue:e=>c[e],setValue:(e,n)=>{if(u(t=>({...t,[e]:n})),p.has(e)){let r=t[e],i=r?l(r,n):null;f(t=>{let n={...t};return i?n[e]=o(i.code,i.params):delete n[e],n})}},touch:e=>{m(t=>t.has(e)?t:new Set(t).add(e));let n=t[e],r=n?l(n,c[e]):null;f(t=>{let n={...t};return r?n[e]=o(r.code,r.params):delete n[e],n})},isHidden:e=>{let n=t[e];return!!n?.virtual||h.has(e)||b(n?.hidden,c)},requiredOf:e=>b(t[e]?.required,c),error:e=>d[e]}),[c,d,p,h,t,r,i,o])}}var $=`/home/grigorii/Projects/GitHub/grigorii-horos/coffer/packages/web/components/Toolbar.tsx`;function Ve({children:e,actions:t}){return(0,F.jsxDEV)(`div`,{className:`eink-solid sticky top-0 z-20 flex h-[52px] items-center justify-between gap-3 bg-bg/85 px-4 backdrop-blur md:px-6 border-b border-border2 shrink-0`,children:[(0,F.jsxDEV)(`div`,{className:`flex items-center gap-2.5 min-w-0`,children:e},void 0,!1,{fileName:$,lineNumber:10,columnNumber:7},this),t&&(0,F.jsxDEV)(`div`,{className:`flex items-center gap-2 shrink-0`,children:t},void 0,!1,{fileName:$,lineNumber:11,columnNumber:19},this)]},void 0,!0,{fileName:$,lineNumber:9,columnNumber:5},this)}export{ge as _,U as a,me as b,De as c,we as d,Se as f,Ce as g,ve as h,X as i,L as l,be as m,Be as n,je as o,_e as p,ze as r,I as s,Ve as t,Ee as u,xe as v,N as y};
@@ -0,0 +1 @@
1
+ function e(e,t){return new Promise(n=>{let r=new XMLHttpRequest;r.open(`POST`,`/api/upload`),r.upload.addEventListener(`progress`,e=>{e.lengthComputable&&t(Math.min(100,Math.round(e.loaded/e.total*100)))}),r.addEventListener(`load`,()=>{if(r.status<200||r.status>=300){n(null);return}try{let e=JSON.parse(r.responseText),i=e.name??e.filename;if(!i){n(null);return}t(100),n({name:i,...e.mime?{mime:e.mime}:{},...e.size==null?{}:{size:e.size}})}catch{n(null)}}),r.addEventListener(`error`,()=>n(null)),r.addEventListener(`abort`,()=>n(null));let i=new FormData;i.append(`file`,e),r.send(i)})}async function t(t,n){if(n)return e(t,n);let r=new FormData;r.append(`file`,t);let i=await fetch(`/api/upload`,{method:`POST`,body:r});if(!i.ok)return null;let a=await i.json(),o=a.name??a.filename;return o?{name:o,...a.mime?{mime:a.mime}:{},...a.size==null?{}:{size:a.size}}:null}function n(e){return`/uploads/${e}`}async function r(e){let t=await fetch(`/api/embed`,{method:`POST`,headers:{"content-type":`application/json`},body:JSON.stringify({url:e})});return t.ok?await t.json():null}var i=new Map;function a(e){let t=i.get(e);if(t)return t;let n=fetch(e).then(t=>{if(!t.ok)throw Error(`GET ${e} → ${t.status}`);return t.json()}).finally(()=>{i.delete(e)});return i.set(e,n),n}function o(e,t,n){return a(`/api/${e}/${t}${n&&Object.keys(n).length?`?`+new URLSearchParams(n).toString():``}`)}async function s(e,t,n){let r=await fetch(`/api/${e}/${t}`,{method:`POST`,headers:{"content-type":`application/json`},body:JSON.stringify(n)});return r.status===201?{ok:!0,row:await r.json()}:r.status===422?{ok:!1,issues:(await r.json()).issues}:{ok:!1,issues:[{field:``,code:`server`,path:[]}]}}async function c(e,t,n,r){let i=await fetch(`/api/${e}/${t}/${n}`,{method:`PATCH`,headers:{"content-type":`application/json`},body:JSON.stringify(r)});return i.ok?{ok:!0,row:await i.json()}:i.status===422?{ok:!1,issues:(await i.json()).issues}:{ok:!1,issues:[{field:``,code:`server`,path:[]}]}}async function l(e,t,n){return(await fetch(`/api/${e}/${t}/${n}`,{method:`DELETE`})).status===204}function u(){return a(`/api/trash`)}async function d(e,t,n){return(await fetch(`/api/trash/${e}/${t}/${n}/restore`,{method:`POST`})).ok}async function f(e,t,n){return(await fetch(`/api/trash/${e}/${t}/${n}`,{method:`DELETE`,headers:{"content-type":`application/json`},body:JSON.stringify({confirmed:!0})})).status===204}async function p(e={}){let t=e.refresh?`updates=1&refresh=1`:`updates=1`,n=await fetch(`/api/plugins?${t}`);if(!n.ok)throw Error(`plugins`);return n.json()}async function m(e,t){let n=await fetch(`/api/plugins/${e}`,{method:`PATCH`,headers:{"content-type":`application/json`},body:JSON.stringify({enabled:t})}),r=await n.json().catch(()=>({}));return n.ok?{ok:!0}:{ok:!1,error:r.error??String(n.status),data:r}}async function h(e){let t=await fetch(`/api/plugins/${e}/update`,{method:`POST`}),n=await t.json().catch(()=>({}));return t.ok?{ok:!0}:{ok:!1,error:n.error??String(t.status),stderr:n.stderr}}async function g(){let e=await fetch(`/api/plugins/update-all`,{method:`POST`}),t=await e.json().catch(()=>({}));return e.ok?{ok:!0,updated:t.updated}:{ok:!1,error:t.error??String(e.status),stderr:t.stderr}}async function _(){let e=await fetch(`/api/system/update`,{method:`POST`}),t=await e.json().catch(()=>({}));return e.ok?{ok:!0,updated:t.updated}:{ok:!1,error:t.error??String(e.status),stderr:t.stderr}}async function v(e={}){let t=await fetch(`/api/runtime${e.refresh?`?refresh=1`:``}`);return t.ok?await t.json():{installedVersion:null,latestVersion:null}}async function y(e,t){let n=await fetch(e,{headers:{"content-type":`application/json`},...t}),r=await n.json().catch(()=>({}));return n.ok?{ok:!0,data:r}:{ok:!1,status:n.status,data:r}}function b(){return a(`/api/auth/status`)}function x(e,t,n){return y(`/api/auth/setup`,{method:`POST`,body:JSON.stringify({login:e,password:t,displayName:n})})}function S(e,t){return y(`/api/auth/login`,{method:`POST`,body:JSON.stringify({login:e,password:t})})}async function C(){await fetch(`/api/auth/logout`,{method:`POST`})}async function w(){let e=await fetch(`/api/auth/me`);return e.ok?e.json():null}function T(e){return y(`/api/auth/me`,{method:`PATCH`,body:JSON.stringify(e)})}function E(e){return y(`/api/auth/users${e?`?q=${encodeURIComponent(e)}`:``}`)}function D(e){return y(`/api/auth/users`,{method:`POST`,body:JSON.stringify(e)})}function O(e,t){return y(`/api/auth/users/${e}`,{method:`PATCH`,body:JSON.stringify(t)})}function k(e){return y(`/api/auth/users/${e}`,{method:`DELETE`})}function A(){return y(`/api/auth/tokens`)}function j(e,t){return y(`/api/auth/tokens`,{method:`POST`,body:JSON.stringify({name:e,token:t})})}function M(e){return y(`/api/auth/tokens/${e}`,{method:`DELETE`})}function N(){return y(`/api/oauth/grants`)}function P(e){return y(`/api/oauth/grants/${encodeURIComponent(e)}`,{method:`DELETE`})}export{_ as A,d as C,g as D,m as E,t as M,h as O,r as S,M as T,A as _,b as a,n as b,j as c,k as d,a as f,o as g,p as h,x as i,O as j,c as k,D as l,N as m,C as n,T as o,v as p,w as r,s,S as t,l as u,u as v,P as w,f as x,E as y};
@@ -1 +1 @@
1
- import{r as e}from"./rolldown-runtime-QTnfLwEv.js";import{a as t,t as n}from"./i18n-vendor-T6EnJ_TL.js";import{a as r,c as i,t as a}from"./react-vendor-BskHO5hY.js";import{r as o}from"./x-BFRg18Fi.js";import{t as s}from"./button-D-Q6I5Ob.js";import{a as c,r as l}from"./api-C2Azkedd.js";import{a as u,i as d,n as f,r as p,t as m}from"./dialog-DqWXrq6M.js";var h=e(t(),1),g=a(),_=`/home/grigorii/Projects/GitHub/grigorii-horos/coffer/packages/web/components/ui/confirm.tsx`,v=null;function y(e){let t=typeof e==`string`?{title:e}:e;return v?new Promise(e=>v({...t,resolve:e})):Promise.resolve(!1)}function b(){let{t:e}=n(),t=h.useRef(null),[r,i]=h.useState(null);h.useEffect(()=>(v=e=>{t.current?.resolve(!1),t.current=e,i(e)},()=>{v=null}),[]);function a(e){let n=t.current;t.current=null,i(null),n?.resolve(e)}return(0,g.jsxDEV)(m,{open:r!==null,onOpenChange:e=>{e||a(!1)},children:r&&(0,g.jsxDEV)(f,{className:`md:max-w-md`,hideClose:!0,children:[(0,g.jsxDEV)(d,{children:[(0,g.jsxDEV)(u,{children:r.title},void 0,!1,{fileName:_,lineNumber:69,columnNumber:13},this),r.description&&(0,g.jsxDEV)(p,{className:`whitespace-pre-line`,children:r.description},void 0,!1,{fileName:_,lineNumber:71,columnNumber:15},this)]},void 0,!0,{fileName:_,lineNumber:68,columnNumber:11},this),(0,g.jsxDEV)(`div`,{className:`flex justify-end gap-2 px-5 pb-5 pt-2`,children:[(0,g.jsxDEV)(s,{variant:`outline`,onClick:()=>a(!1),children:r.cancelLabel??e(`actions.cancel`)},void 0,!1,{fileName:_,lineNumber:75,columnNumber:13},this),(0,g.jsxDEV)(s,{autoFocus:!0,variant:r.variant??`default`,onClick:()=>a(!0),children:r.confirmLabel??e(`actions.confirm`)},void 0,!1,{fileName:_,lineNumber:78,columnNumber:13},this)]},void 0,!0,{fileName:_,lineNumber:74,columnNumber:11},this)]},void 0,!0,{fileName:_,lineNumber:67,columnNumber:9},this)},void 0,!1,{fileName:_,lineNumber:60,columnNumber:5},this)}var x=`/home/grigorii/Projects/GitHub/grigorii-horos/coffer/packages/web/components/ui/card.tsx`,S=h.forwardRef(({className:e,...t},n)=>(0,g.jsxDEV)(`div`,{ref:n,className:o(`rounded-xl border border-border bg-card text-card-foreground`,e),...t},void 0,!1,{fileName:x,lineNumber:5,columnNumber:3},void 0));S.displayName=`Card`;var C=h.forwardRef(({className:e,...t},n)=>(0,g.jsxDEV)(`div`,{ref:n,className:o(`flex flex-col gap-1.5 p-5`,e),...t},void 0,!1,{fileName:x,lineNumber:10,columnNumber:37},void 0));C.displayName=`CardHeader`;var w=h.forwardRef(({className:e,...t},n)=>(0,g.jsxDEV)(`div`,{ref:n,className:o(`font-semibold leading-none text-text`,e),...t},void 0,!1,{fileName:x,lineNumber:16,columnNumber:5},void 0));w.displayName=`CardTitle`;var T=h.forwardRef(({className:e,...t},n)=>(0,g.jsxDEV)(`div`,{ref:n,className:o(`text-sm text-muted-foreground`,e),...t},void 0,!1,{fileName:x,lineNumber:23,columnNumber:5},void 0));T.displayName=`CardDescription`;var E=h.forwardRef(({className:e,...t},n)=>(0,g.jsxDEV)(`div`,{ref:n,className:o(`p-5 pt-0`,e),...t},void 0,!1,{fileName:x,lineNumber:29,columnNumber:37},void 0));E.displayName=`CardContent`;var D=h.forwardRef(({className:e,...t},n)=>(0,g.jsxDEV)(`div`,{ref:n,className:o(`flex items-center p-5 pt-0`,e),...t},void 0,!1,{fileName:x,lineNumber:35,columnNumber:5},void 0));D.displayName=`CardFooter`;var O=`/home/grigorii/Projects/GitHub/grigorii-horos/coffer/packages/web/auth-context.tsx`,k=(0,h.createContext)(null);function A(){let e=(0,h.useContext)(k);if(!e)throw Error(`useAuth() called outside <AuthGate>`);return e}function j({children:e}){let[t,n]=(0,h.useState)({kind:`loading`});return(0,h.useEffect)(()=>{if(t.kind===`ready`)return;let e=!1;return(async()=>{try{let t=await c();if(e)return;if(t.needsSetup)return n({kind:`needsSetup`});let r=await l();if(e)return;n(r?{kind:`ready`,user:r}:{kind:`needsLogin`})}catch{e||n({kind:`error`})}})(),()=>{e=!0}},[i().pathname,t.kind]),(0,h.useEffect)(()=>{if(t.kind!==`ready`)return;let e=()=>{document.visibilityState===`visible`&&l().then(e=>{e||n({kind:`needsLogin`})}).catch(()=>{})};return document.addEventListener(`visibilitychange`,e),()=>document.removeEventListener(`visibilitychange`,e)},[t.kind]),t.kind===`loading`?null:t.kind===`needsSetup`?(0,g.jsxDEV)(r,{to:`/setup`,replace:!0},void 0,!1,{fileName:O,lineNumber:61,columnNumber:44},this):t.kind===`needsLogin`?(0,g.jsxDEV)(r,{to:`/login`,replace:!0},void 0,!1,{fileName:O,lineNumber:62,columnNumber:44},this):t.kind===`error`?(0,g.jsxDEV)(`div`,{style:{display:`flex`,minHeight:`100dvh`,alignItems:`center`,justifyContent:`center`,flexDirection:`column`,gap:`1rem`},children:[(0,g.jsxDEV)(`p`,{children:`Could not check your session.`},void 0,!1,{fileName:O,lineNumber:66,columnNumber:9},this),(0,g.jsxDEV)(`button`,{onClick:()=>window.location.reload(),children:`Reload`},void 0,!1,{fileName:O,lineNumber:67,columnNumber:9},this)]},void 0,!0,{fileName:O,lineNumber:65,columnNumber:7},this):(0,g.jsxDEV)(k.Provider,{value:t.user,children:e},void 0,!1,{fileName:O,lineNumber:71,columnNumber:10},this)}export{y as a,b as i,A as n,S as r,j as t};
1
+ import{r as e}from"./rolldown-runtime-QTnfLwEv.js";import{a as t,t as n}from"./i18n-vendor-T6EnJ_TL.js";import{a as r,c as i,t as a}from"./react-vendor-BskHO5hY.js";import{r as o}from"./x-BFRg18Fi.js";import{t as s}from"./button-D-Q6I5Ob.js";import{a as c,r as l}from"./api-8XMJe9yT.js";import{a as u,i as d,n as f,r as p,t as m}from"./dialog-DqWXrq6M.js";var h=e(t(),1),g=a(),_=`/home/grigorii/Projects/GitHub/grigorii-horos/coffer/packages/web/components/ui/confirm.tsx`,v=null;function y(e){let t=typeof e==`string`?{title:e}:e;return v?new Promise(e=>v({...t,resolve:e})):Promise.resolve(!1)}function b(){let{t:e}=n(),t=h.useRef(null),[r,i]=h.useState(null);h.useEffect(()=>(v=e=>{t.current?.resolve(!1),t.current=e,i(e)},()=>{v=null}),[]);function a(e){let n=t.current;t.current=null,i(null),n?.resolve(e)}return(0,g.jsxDEV)(m,{open:r!==null,onOpenChange:e=>{e||a(!1)},children:r&&(0,g.jsxDEV)(f,{className:`md:max-w-md`,hideClose:!0,children:[(0,g.jsxDEV)(d,{children:[(0,g.jsxDEV)(u,{children:r.title},void 0,!1,{fileName:_,lineNumber:69,columnNumber:13},this),r.description&&(0,g.jsxDEV)(p,{className:`whitespace-pre-line`,children:r.description},void 0,!1,{fileName:_,lineNumber:71,columnNumber:15},this)]},void 0,!0,{fileName:_,lineNumber:68,columnNumber:11},this),(0,g.jsxDEV)(`div`,{className:`flex justify-end gap-2 px-5 pb-5 pt-2`,children:[(0,g.jsxDEV)(s,{variant:`outline`,onClick:()=>a(!1),children:r.cancelLabel??e(`actions.cancel`)},void 0,!1,{fileName:_,lineNumber:75,columnNumber:13},this),(0,g.jsxDEV)(s,{autoFocus:!0,variant:r.variant??`default`,onClick:()=>a(!0),children:r.confirmLabel??e(`actions.confirm`)},void 0,!1,{fileName:_,lineNumber:78,columnNumber:13},this)]},void 0,!0,{fileName:_,lineNumber:74,columnNumber:11},this)]},void 0,!0,{fileName:_,lineNumber:67,columnNumber:9},this)},void 0,!1,{fileName:_,lineNumber:60,columnNumber:5},this)}var x=`/home/grigorii/Projects/GitHub/grigorii-horos/coffer/packages/web/components/ui/card.tsx`,S=h.forwardRef(({className:e,...t},n)=>(0,g.jsxDEV)(`div`,{ref:n,className:o(`rounded-xl border border-border bg-card text-card-foreground`,e),...t},void 0,!1,{fileName:x,lineNumber:5,columnNumber:3},void 0));S.displayName=`Card`;var C=h.forwardRef(({className:e,...t},n)=>(0,g.jsxDEV)(`div`,{ref:n,className:o(`flex flex-col gap-1.5 p-5`,e),...t},void 0,!1,{fileName:x,lineNumber:10,columnNumber:37},void 0));C.displayName=`CardHeader`;var w=h.forwardRef(({className:e,...t},n)=>(0,g.jsxDEV)(`div`,{ref:n,className:o(`font-semibold leading-none text-text`,e),...t},void 0,!1,{fileName:x,lineNumber:16,columnNumber:5},void 0));w.displayName=`CardTitle`;var T=h.forwardRef(({className:e,...t},n)=>(0,g.jsxDEV)(`div`,{ref:n,className:o(`text-sm text-muted-foreground`,e),...t},void 0,!1,{fileName:x,lineNumber:23,columnNumber:5},void 0));T.displayName=`CardDescription`;var E=h.forwardRef(({className:e,...t},n)=>(0,g.jsxDEV)(`div`,{ref:n,className:o(`p-5 pt-0`,e),...t},void 0,!1,{fileName:x,lineNumber:29,columnNumber:37},void 0));E.displayName=`CardContent`;var D=h.forwardRef(({className:e,...t},n)=>(0,g.jsxDEV)(`div`,{ref:n,className:o(`flex items-center p-5 pt-0`,e),...t},void 0,!1,{fileName:x,lineNumber:35,columnNumber:5},void 0));D.displayName=`CardFooter`;var O=`/home/grigorii/Projects/GitHub/grigorii-horos/coffer/packages/web/auth-context.tsx`,k=(0,h.createContext)(null);function A(){let e=(0,h.useContext)(k);if(!e)throw Error(`useAuth() called outside <AuthGate>`);return e}function j({children:e}){let[t,n]=(0,h.useState)({kind:`loading`});return(0,h.useEffect)(()=>{if(t.kind===`ready`)return;let e=!1;return(async()=>{try{let t=await c();if(e)return;if(t.needsSetup)return n({kind:`needsSetup`});let r=await l();if(e)return;n(r?{kind:`ready`,user:r}:{kind:`needsLogin`})}catch{e||n({kind:`error`})}})(),()=>{e=!0}},[i().pathname,t.kind]),(0,h.useEffect)(()=>{if(t.kind!==`ready`)return;let e=()=>{document.visibilityState===`visible`&&l().then(e=>{e||n({kind:`needsLogin`})}).catch(()=>{})};return document.addEventListener(`visibilitychange`,e),()=>document.removeEventListener(`visibilitychange`,e)},[t.kind]),t.kind===`loading`?null:t.kind===`needsSetup`?(0,g.jsxDEV)(r,{to:`/setup`,replace:!0},void 0,!1,{fileName:O,lineNumber:61,columnNumber:44},this):t.kind===`needsLogin`?(0,g.jsxDEV)(r,{to:`/login`,replace:!0},void 0,!1,{fileName:O,lineNumber:62,columnNumber:44},this):t.kind===`error`?(0,g.jsxDEV)(`div`,{style:{display:`flex`,minHeight:`100dvh`,alignItems:`center`,justifyContent:`center`,flexDirection:`column`,gap:`1rem`},children:[(0,g.jsxDEV)(`p`,{children:`Could not check your session.`},void 0,!1,{fileName:O,lineNumber:66,columnNumber:9},this),(0,g.jsxDEV)(`button`,{onClick:()=>window.location.reload(),children:`Reload`},void 0,!1,{fileName:O,lineNumber:67,columnNumber:9},this)]},void 0,!0,{fileName:O,lineNumber:65,columnNumber:7},this):(0,g.jsxDEV)(k.Provider,{value:t.user,children:e},void 0,!1,{fileName:O,lineNumber:71,columnNumber:10},this)}export{y as a,b as i,A as n,S as r,j as t};
@@ -1 +1 @@
1
- import{r as e}from"./rolldown-runtime-QTnfLwEv.js";import{a as t,t as n}from"./i18n-vendor-T6EnJ_TL.js";import{t as r}from"./react-vendor-BskHO5hY.js";import{n as i,t as a}from"./x-BFRg18Fi.js";import{t as o}from"./Icon-CnFXN8LC.js";import{i as s,t as c}from"./button-D-Q6I5Ob.js";import{n as l,o as u}from"./src-DKYT_mO5.js";var d=i(`pencil`,[[`path`,{d:`M21.174 6.812a1 1 0 0 0-3.986-3.987L3.842 16.174a2 2 0 0 0-.5.83l-1.321 4.352a.5.5 0 0 0 .623.622l4.353-1.32a2 2 0 0 0 .83-.497z`,key:`1a8usu`}],[`path`,{d:`m15 5 4 4`,key:`1mk7zo`}]]),f=e(t(),1);function p(e,t){return u(e)?.box||(l(e)===`block`?`none`:t)}function m(e){switch(e){case`title`:return`flex items-center self-start w-full rounded-lg border border-transparent px-3 py-1 text-[28px] font-bold leading-tight`;case`textarea`:return`flex self-start min-h-20 w-full rounded-lg border border-transparent px-3 py-2 text-sm whitespace-pre-wrap`;case`none`:return``;default:return`flex w-full min-w-0 items-center self-start min-h-9 rounded-lg border border-transparent px-2 text-sm`}}var h=r(),g=`/home/grigorii/Projects/GitHub/grigorii-horos/coffer/packages/web/render/chrome.tsx`,_=`gap-2`,v=`gap-6`;function y({children:e}){return(0,h.jsxDEV)(`div`,{className:`border-l-2 border-border pl-3 py-1`,children:e},void 0,!1,{fileName:g,lineNumber:41,columnNumber:10},this)}function b({label:e,required:t,actions:n,reserveAction:r}){return(0,h.jsxDEV)(`div`,{className:`flex items-center gap-2 mb-0.5 min-h-8 ${r?`pr-24`:``}`,children:[(0,h.jsxDEV)(`span`,{className:`min-w-0 text-[11px] font-medium text-muted`,children:[e,t&&(0,h.jsxDEV)(`span`,{className:`text-danger ml-0.5`,children:`*`},void 0,!1,{fileName:g,lineNumber:64,columnNumber:22},this)]},void 0,!0,{fileName:g,lineNumber:62,columnNumber:7},this),n&&(0,h.jsxDEV)(`div`,{className:`ml-auto flex shrink-0 items-center gap-1.5`,children:n},void 0,!1,{fileName:g,lineNumber:66,columnNumber:19},this)]},void 0,!0,{fileName:g,lineNumber:61,columnNumber:5},this)}var x=`flex items-center gap-2 font-semibold`;`${x}`;var S=`lucide:puzzle`;function C(e){return e.icon??(e.key!=null&&e.multiple===!0?`lucide:list`:`lucide:folder`)}function w({label:e,icon:t,actions:n,as:r=`h3`,tone:i=`group`}){let a=r,s=D(),c=i===`section`;return(0,h.jsxDEV)(a,{className:`${x} ${c?`text-[15px]`:`text-[13px]`} ${c||s===0?`text-accent`:`text-muted`}${r===`legend`?` px-1 w-full`:``}`,children:[t&&(c?(0,h.jsxDEV)(`span`,{className:`flex size-6 shrink-0 items-center justify-center rounded-md bg-accent/10 text-accent`,children:(0,h.jsxDEV)(o,{name:t,size:14},void 0,!1,{fileName:g,lineNumber:131,columnNumber:13},this)},void 0,!1,{fileName:g,lineNumber:130,columnNumber:11},this):(0,h.jsxDEV)(o,{name:t,size:14,className:`shrink-0`},void 0,!1,{fileName:g,lineNumber:135,columnNumber:11},this)),e,n&&(0,h.jsxDEV)(`span`,{className:`ml-auto flex shrink-0 items-center gap-1.5`,children:n},void 0,!1,{fileName:g,lineNumber:138,columnNumber:19},this)]},void 0,!0,{fileName:g,lineNumber:127,columnNumber:5},this)}var T=`opacity-0 transition-opacity group-hover/field:opacity-100 focus-visible:opacity-100 pointer-coarse:opacity-100`,E=(0,f.createContext)(0),D=()=>(0,f.useContext)(E);function O({depth:e,children:t}){return(0,h.jsxDEV)(E.Provider,{value:e,children:t},void 0,!1,{fileName:g,lineNumber:167,columnNumber:10},this)}function k(e){switch(e&3){case 0:return`group/group`;case 1:return`group/group2`;case 2:return`group/group3`;default:return`group/group4`}}var A=[`opacity-0 transition-opacity group-hover/group:opacity-100 focus-visible:opacity-100 pointer-coarse:opacity-100`,`opacity-0 transition-opacity group-hover/group2:opacity-100 focus-visible:opacity-100 pointer-coarse:opacity-100`,`opacity-0 transition-opacity group-hover/group3:opacity-100 focus-visible:opacity-100 pointer-coarse:opacity-100`,`opacity-0 transition-opacity group-hover/group4:opacity-100 focus-visible:opacity-100 pointer-coarse:opacity-100`];function j(e){return A[e&3]??A[0]}var M=`h-7 w-7 rounded-md border border-border bg-surface/80 text-muted hover:border-accent/60 hover:text-accent`,N=`h-7 w-7 rounded-md border border-accent/40 bg-accent/10 text-accent hover:border-accent hover:bg-accent/20 hover:text-accent`;function P({onEdit:e,variant:t=`inline`,scope:r=`field`}){let{t:i}=n(),a=D(),o=r===`group`?j(a):T;return(0,h.jsxDEV)(c,{type:`button`,variant:`outline`,size:`iconXs`,className:`${t===`overlay`?`absolute right-1 top-0 z-10`:``} ${M} ${o}`,onClick:e,title:i(`actions.edit`),children:(0,h.jsxDEV)(d,{size:13},void 0,!1,{fileName:g,lineNumber:233,columnNumber:7},this)},void 0,!1,{fileName:g,lineNumber:225,columnNumber:5},this)}function F({size:e,busy:t,disabled:r,onSave:i,onCancel:o}){let{t:l}=n(),u=e===`xs`?`iconXs`:`iconSm`,d=e===`xs`?13:14;return(0,h.jsxDEV)(h.Fragment,{children:[(0,h.jsxDEV)(c,{type:`button`,variant:`outline`,size:u,disabled:t||r,onClick:i,className:N,title:l(`actions.save`),children:(0,h.jsxDEV)(s,{size:d},void 0,!1,{fileName:g,lineNumber:271,columnNumber:9},this)},void 0,!1,{fileName:g,lineNumber:262,columnNumber:7},this),(0,h.jsxDEV)(c,{type:`button`,variant:`outline`,size:u,onClick:o,className:`h-7 w-7 rounded-md border border-border bg-surface/80 text-muted hover:border-danger hover:text-danger`,title:l(`actions.cancel`),children:(0,h.jsxDEV)(a,{size:d},void 0,!1,{fileName:g,lineNumber:281,columnNumber:9},this)},void 0,!1,{fileName:g,lineNumber:273,columnNumber:7},this)]},void 0,!0,{fileName:g,lineNumber:261,columnNumber:5},this)}var I=`min-h-9 px-2 border border-transparent`;function L({geom:e,field:t,children:n}){let r=p(t,e);return r===`none`?(0,h.jsxDEV)(h.Fragment,{children:n},void 0,!1,{fileName:g,lineNumber:299,columnNumber:30},this):(0,h.jsxDEV)(`div`,{className:m(r),children:n},void 0,!1,{fileName:g,lineNumber:300,columnNumber:10},this)}function R({error:e}){return e?(0,h.jsxDEV)(`p`,{className:`text-xs text-danger flex items-center gap-1 mt-0.5`,children:[(0,h.jsxDEV)(o,{name:`lucide:alert-triangle`,size:12,className:`shrink-0`},void 0,!1,{fileName:g,lineNumber:308,columnNumber:7},this),` `,e]},void 0,!0,{fileName:g,lineNumber:307,columnNumber:5},this):null}export{R as a,w as c,_ as d,F as f,d as g,D as h,L as i,v as l,k as m,I as n,b as o,C as p,P as r,O as s,S as t,y as u};
1
+ import{r as e}from"./rolldown-runtime-QTnfLwEv.js";import{a as t,t as n}from"./i18n-vendor-T6EnJ_TL.js";import{t as r}from"./react-vendor-BskHO5hY.js";import{n as i,t as a}from"./x-BFRg18Fi.js";import{t as o}from"./Icon-CdBq17IP.js";import{i as s,t as c}from"./button-D-Q6I5Ob.js";import{n as l,o as u}from"./src-DKYT_mO5.js";var d=i(`pencil`,[[`path`,{d:`M21.174 6.812a1 1 0 0 0-3.986-3.987L3.842 16.174a2 2 0 0 0-.5.83l-1.321 4.352a.5.5 0 0 0 .623.622l4.353-1.32a2 2 0 0 0 .83-.497z`,key:`1a8usu`}],[`path`,{d:`m15 5 4 4`,key:`1mk7zo`}]]),f=e(t(),1);function p(e,t){return u(e)?.box||(l(e)===`block`?`none`:t)}function m(e){switch(e){case`title`:return`flex items-center self-start w-full rounded-lg border border-transparent px-3 py-1 text-[28px] font-bold leading-tight`;case`textarea`:return`flex self-start min-h-20 w-full rounded-lg border border-transparent px-3 py-2 text-sm whitespace-pre-wrap`;case`none`:return``;default:return`flex w-full min-w-0 items-center self-start min-h-9 rounded-lg border border-transparent px-2 text-sm`}}var h=r(),g=`/home/grigorii/Projects/GitHub/grigorii-horos/coffer/packages/web/render/chrome.tsx`,_=`gap-2`,v=`gap-6`;function y({children:e}){return(0,h.jsxDEV)(`div`,{className:`border-l-2 border-border pl-3 py-1`,children:e},void 0,!1,{fileName:g,lineNumber:41,columnNumber:10},this)}function b({label:e,required:t,actions:n,reserveAction:r}){return(0,h.jsxDEV)(`div`,{className:`flex items-center gap-2 mb-0.5 min-h-8 ${r?`pr-24`:``}`,children:[(0,h.jsxDEV)(`span`,{className:`min-w-0 text-[11px] font-medium text-muted`,children:[e,t&&(0,h.jsxDEV)(`span`,{className:`text-danger ml-0.5`,children:`*`},void 0,!1,{fileName:g,lineNumber:64,columnNumber:22},this)]},void 0,!0,{fileName:g,lineNumber:62,columnNumber:7},this),n&&(0,h.jsxDEV)(`div`,{className:`ml-auto flex shrink-0 items-center gap-1.5`,children:n},void 0,!1,{fileName:g,lineNumber:66,columnNumber:19},this)]},void 0,!0,{fileName:g,lineNumber:61,columnNumber:5},this)}var x=`flex items-center gap-2 font-semibold`;`${x}`;var S=`lucide:puzzle`;function C(e){return e.icon??(e.key!=null&&e.multiple===!0?`lucide:list`:`lucide:folder`)}function w({label:e,icon:t,actions:n,as:r=`h3`,tone:i=`group`}){let a=r,s=D(),c=i===`section`;return(0,h.jsxDEV)(a,{className:`${x} ${c?`text-[15px]`:`text-[13px]`} ${c||s===0?`text-accent`:`text-muted`}${r===`legend`?` px-1 w-full`:``}`,children:[t&&(c?(0,h.jsxDEV)(`span`,{className:`flex size-6 shrink-0 items-center justify-center rounded-md bg-accent/10 text-accent`,children:(0,h.jsxDEV)(o,{name:t,size:14},void 0,!1,{fileName:g,lineNumber:131,columnNumber:13},this)},void 0,!1,{fileName:g,lineNumber:130,columnNumber:11},this):(0,h.jsxDEV)(o,{name:t,size:14,className:`shrink-0`},void 0,!1,{fileName:g,lineNumber:135,columnNumber:11},this)),e,n&&(0,h.jsxDEV)(`span`,{className:`ml-auto flex shrink-0 items-center gap-1.5`,children:n},void 0,!1,{fileName:g,lineNumber:138,columnNumber:19},this)]},void 0,!0,{fileName:g,lineNumber:127,columnNumber:5},this)}var T=`opacity-0 transition-opacity group-hover/field:opacity-100 focus-visible:opacity-100 pointer-coarse:opacity-100`,E=(0,f.createContext)(0),D=()=>(0,f.useContext)(E);function O({depth:e,children:t}){return(0,h.jsxDEV)(E.Provider,{value:e,children:t},void 0,!1,{fileName:g,lineNumber:167,columnNumber:10},this)}function k(e){switch(e&3){case 0:return`group/group`;case 1:return`group/group2`;case 2:return`group/group3`;default:return`group/group4`}}var A=[`opacity-0 transition-opacity group-hover/group:opacity-100 focus-visible:opacity-100 pointer-coarse:opacity-100`,`opacity-0 transition-opacity group-hover/group2:opacity-100 focus-visible:opacity-100 pointer-coarse:opacity-100`,`opacity-0 transition-opacity group-hover/group3:opacity-100 focus-visible:opacity-100 pointer-coarse:opacity-100`,`opacity-0 transition-opacity group-hover/group4:opacity-100 focus-visible:opacity-100 pointer-coarse:opacity-100`];function j(e){return A[e&3]??A[0]}var M=`h-7 w-7 rounded-md border border-border bg-surface/80 text-muted hover:border-accent/60 hover:text-accent`,N=`h-7 w-7 rounded-md border border-accent/40 bg-accent/10 text-accent hover:border-accent hover:bg-accent/20 hover:text-accent`;function P({onEdit:e,variant:t=`inline`,scope:r=`field`}){let{t:i}=n(),a=D(),o=r===`group`?j(a):T;return(0,h.jsxDEV)(c,{type:`button`,variant:`outline`,size:`iconXs`,className:`${t===`overlay`?`absolute right-1 top-0 z-10`:``} ${M} ${o}`,onClick:e,title:i(`actions.edit`),children:(0,h.jsxDEV)(d,{size:13},void 0,!1,{fileName:g,lineNumber:233,columnNumber:7},this)},void 0,!1,{fileName:g,lineNumber:225,columnNumber:5},this)}function F({size:e,busy:t,disabled:r,onSave:i,onCancel:o}){let{t:l}=n(),u=e===`xs`?`iconXs`:`iconSm`,d=e===`xs`?13:14;return(0,h.jsxDEV)(h.Fragment,{children:[(0,h.jsxDEV)(c,{type:`button`,variant:`outline`,size:u,disabled:t||r,onClick:i,className:N,title:l(`actions.save`),children:(0,h.jsxDEV)(s,{size:d},void 0,!1,{fileName:g,lineNumber:271,columnNumber:9},this)},void 0,!1,{fileName:g,lineNumber:262,columnNumber:7},this),(0,h.jsxDEV)(c,{type:`button`,variant:`outline`,size:u,onClick:o,className:`h-7 w-7 rounded-md border border-border bg-surface/80 text-muted hover:border-danger hover:text-danger`,title:l(`actions.cancel`),children:(0,h.jsxDEV)(a,{size:d},void 0,!1,{fileName:g,lineNumber:281,columnNumber:9},this)},void 0,!1,{fileName:g,lineNumber:273,columnNumber:7},this)]},void 0,!0,{fileName:g,lineNumber:261,columnNumber:5},this)}var I=`min-h-9 px-2 border border-transparent`;function L({geom:e,field:t,children:n}){let r=p(t,e);return r===`none`?(0,h.jsxDEV)(h.Fragment,{children:n},void 0,!1,{fileName:g,lineNumber:299,columnNumber:30},this):(0,h.jsxDEV)(`div`,{className:m(r),children:n},void 0,!1,{fileName:g,lineNumber:300,columnNumber:10},this)}function R({error:e}){return e?(0,h.jsxDEV)(`p`,{className:`text-xs text-danger flex items-center gap-1 mt-0.5`,children:[(0,h.jsxDEV)(o,{name:`lucide:alert-triangle`,size:12,className:`shrink-0`},void 0,!1,{fileName:g,lineNumber:308,columnNumber:7},this),` `,e]},void 0,!0,{fileName:g,lineNumber:307,columnNumber:5},this):null}export{R as a,w as c,_ as d,F as f,d as g,D as h,L as i,v as l,k as m,I as n,b as o,C as p,P as r,O as s,S as t,y as u};
@@ -1 +1 @@
1
- import{o as e}from"./shelf-CiTNv3-E.js";function t(t){let n=e(t.fields).map(([e])=>e),r=n.find((e,t)=>n.indexOf(e)!==t);if(r)throw Error(`[extend] ${t.id}: duplicate key '${r}'`);return t}function n(e,t,n){return e.attachTo.some(e=>!(e.library!==t||e.shelf&&e.shelf!==n))}export{n,t};
1
+ import{o as e}from"./shelf-BdJ77CWj.js";function t(t){let n=e(t.fields).map(([e])=>e),r=n.find((e,t)=>n.indexOf(e)!==t);if(r)throw Error(`[extend] ${t.id}: duplicate key '${r}'`);return t}function n(e,t,n){return e.attachTo.some(e=>!(e.library!==t||e.shelf&&e.shelf!==n))}export{n,t};
@@ -1 +1 @@
1
- import{r as e}from"./rolldown-runtime-QTnfLwEv.js";import{a as t}from"./i18n-vendor-T6EnJ_TL.js";import{t as n}from"./react-vendor-BskHO5hY.js";import{a as r,f as i,i as a,o,r as s}from"./chrome-Byteug4G.js";var c=e(t(),1);function l(e){return e===1||e===!0||e===`1`||e===`true`}function u(e,t){return e.prim===`checkbox`?l(t):t??``}async function d(e,t){let n=await t?.(e),r=typeof n==`string`?n:void 0;return{ok:!r,error:r}}function f(e,t,n=e=>e){let[r,i]=(0,c.useState)(!1),a=(0,c.useRef)(n);a.current=n;let[o,s]=(0,c.useState)(()=>n(e)),[l,u]=(0,c.useState)(!1);return(0,c.useEffect)(()=>{r||s(a.current(e))},[r,e]),{editing:r,draft:o,setDraft:s,busy:l,beginEdit:()=>i(!0),cancel:()=>{s(a.current(e)),i(!1)},commit:async(e=o)=>{u(!0);let{ok:n}=await d(e,t);u(!1),n&&i(!1)}}}function p(e,t,n){return f(t,n,t=>u(e,t))}var m=n(),h=`/home/grigorii/Projects/GitHub/grigorii-horos/coffer/packages/web/render/widgets/flow-row.tsx`,g=(0,c.createContext)(!1),_=()=>(0,c.useContext)(g);function v({items:e,scroll:t}){return(0,m.jsxDEV)(g.Provider,{value:!0,children:(0,m.jsxDEV)(`div`,{className:`flex gap-x-3 gap-y-2 items-start ${t?`flex-nowrap overflow-x-auto`:`flex-wrap`}`,children:e.map(e=>e.break?(0,m.jsxDEV)(`div`,{className:`basis-full h-0`,"aria-hidden":!0},e.key,!1,{fileName:h,lineNumber:37,columnNumber:13},this):(0,m.jsxDEV)(`div`,{className:e.full?`basis-full min-w-0`:`flex-none min-w-0 max-w-[min(16rem,100%)]`,children:e.node},e.key,!1,{fileName:h,lineNumber:39,columnNumber:13},this))},void 0,!1,{fileName:h,lineNumber:34,columnNumber:7},this)},void 0,!1,{fileName:h,lineNumber:33,columnNumber:5},this)}var y=`/home/grigorii/Projects/GitHub/grigorii-horos/coffer/packages/web/render/field-frame.tsx`,b=`[data-slot="combobox-content"],[data-slot="popover-content"],[role="listbox"],[role="dialog"],[role="menu"],[data-scope="date-picker"][data-part="content"]`;function x(e){let t=e instanceof Element?e:typeof document<`u`?document.activeElement:null;return t instanceof Element&&t.closest(b)!==null}function S(e){let{field:t,value:n,onChange:c,label:l,required:d,error:f,mode:h,geom:g,view:v,edit:b,bare:x,width:S=`w-64`}=e,C=h!==`view`,w=p(t,n,c),T=_(),E=(e,n,r,i)=>e?b(u(t,n),r):v(n,i);if(x)return(0,m.jsxDEV)(m.Fragment,{children:[E(C,n,e=>c?.(e),c),(0,m.jsxDEV)(r,{error:f},void 0,!1,{fileName:y,lineNumber:66,columnNumber:9},this)]},void 0,!0,{fileName:y,lineNumber:64,columnNumber:7},this);if(C)return l===void 0?(0,m.jsxDEV)(`div`,{className:`min-w-0 flex-1`,children:E(!0,n,e=>c?.(e))},void 0,!1,{fileName:y,lineNumber:74,columnNumber:14},this):(0,m.jsxDEV)(`div`,{className:`group/field ${S}`,children:[(0,m.jsxDEV)(o,{label:l,required:d},void 0,!1,{fileName:y,lineNumber:78,columnNumber:9},this),E(!0,n,e=>c?.(e)),(0,m.jsxDEV)(r,{error:f},void 0,!1,{fileName:y,lineNumber:80,columnNumber:9},this)]},void 0,!0,{fileName:y,lineNumber:77,columnNumber:7},this);if(t.hints.noEditControl===!0){let e=(0,m.jsxDEV)(a,{geom:g,field:t,children:v(n,c)},void 0,!1,{fileName:y,lineNumber:89,columnNumber:7},this);return l===void 0?e:(0,m.jsxDEV)(`div`,{className:`group/field ${S}`,children:[(0,m.jsxDEV)(o,{label:l,required:d},void 0,!1,{fileName:y,lineNumber:96,columnNumber:9},this),e,(0,m.jsxDEV)(r,{error:f},void 0,!1,{fileName:y,lineNumber:98,columnNumber:9},this)]},void 0,!0,{fileName:y,lineNumber:95,columnNumber:7},this)}let D=t.hints.emphasis,O=t.hints.noLabel===!0||l===void 0,k=(0,m.jsxDEV)(`div`,{className:`min-w-0`,onKeyDown:e=>{e.key===`Escape`&&(e.stopPropagation(),w.cancel())},children:E(!0,w.draft,w.setDraft)},void 0,!1,{fileName:y,lineNumber:114,columnNumber:5},this),A=(0,m.jsxDEV)(a,{geom:g,field:t,children:E(!1,n,()=>{},c)},void 0,!1,{fileName:y,lineNumber:128,columnNumber:5},this),j=T?(0,m.jsxDEV)(`div`,{className:`grid min-w-0`,children:[(0,m.jsxDEV)(`div`,{className:`col-start-1 row-start-1 min-w-0`,"aria-hidden":!w.editing,inert:!w.editing||void 0,style:{visibility:w.editing?`visible`:`hidden`},children:k},void 0,!1,{fileName:y,lineNumber:139,columnNumber:7},this),(0,m.jsxDEV)(`div`,{className:`col-start-1 row-start-1 min-w-0`,style:{visibility:w.editing?`hidden`:`visible`},children:A},void 0,!1,{fileName:y,lineNumber:147,columnNumber:7},this)]},void 0,!0,{fileName:y,lineNumber:138,columnNumber:5},this):w.editing?k:A,M=c&&!w.editing?(0,m.jsxDEV)(s,{variant:`overlay`,onEdit:w.beginEdit},void 0,!1,{fileName:y,lineNumber:160,columnNumber:51},this):null,N=c&&w.editing?(0,m.jsxDEV)(`div`,{className:`absolute right-1 top-0 z-10 flex gap-1`,children:(0,m.jsxDEV)(i,{size:`xs`,busy:w.busy,onSave:()=>w.commit(),onCancel:w.cancel},void 0,!1,{fileName:y,lineNumber:165,columnNumber:9},this)},void 0,!1,{fileName:y,lineNumber:164,columnNumber:7},this):null;if(D===`hero`){let e=c?w.editing?(0,m.jsxDEV)(i,{size:`sm`,busy:w.busy,onSave:()=>w.commit(),onCancel:w.cancel},void 0,!1,{fileName:y,lineNumber:173,columnNumber:11},this):(0,m.jsxDEV)(s,{onEdit:w.beginEdit},void 0,!1,{fileName:y,lineNumber:174,columnNumber:11},this):null;return(0,m.jsxDEV)(`div`,{className:`group/field flex items-center gap-2 min-w-0`,children:[(0,m.jsxDEV)(`div`,{className:`text-lg font-semibold text-text min-w-0`,children:w.editing?k:E(!1,n,()=>{},c)},void 0,!1,{fileName:y,lineNumber:178,columnNumber:9},this),e,(0,m.jsxDEV)(r,{error:f},void 0,!1,{fileName:y,lineNumber:182,columnNumber:9},this)]},void 0,!0,{fileName:y,lineNumber:177,columnNumber:7},this)}return D===`muted`?(0,m.jsxDEV)(`div`,{className:`group/field grid grid-cols-[110px_1fr] items-center gap-x-3 text-xs text-muted min-w-0`,children:[(0,m.jsxDEV)(`span`,{className:`flex items-center gap-1.5`,children:[l,c?w.editing?(0,m.jsxDEV)(i,{size:`xs`,busy:w.busy,onSave:()=>w.commit(),onCancel:w.cancel},void 0,!1,{fileName:y,lineNumber:191,columnNumber:11},this):(0,m.jsxDEV)(s,{onEdit:w.beginEdit},void 0,!1,{fileName:y,lineNumber:192,columnNumber:11},this):null]},void 0,!0,{fileName:y,lineNumber:196,columnNumber:9},this),(0,m.jsxDEV)(`span`,{className:`min-w-0`,children:w.editing?k:E(!1,n,()=>{},c)},void 0,!1,{fileName:y,lineNumber:200,columnNumber:9},this),(0,m.jsxDEV)(r,{error:f},void 0,!1,{fileName:y,lineNumber:201,columnNumber:9},this)]},void 0,!0,{fileName:y,lineNumber:195,columnNumber:7},this):O?(0,m.jsxDEV)(`div`,{className:`group/field relative min-w-0 pr-8`,children:[j,M,N,(0,m.jsxDEV)(r,{error:f},void 0,!1,{fileName:y,lineNumber:213,columnNumber:9},this)]},void 0,!0,{fileName:y,lineNumber:209,columnNumber:7},this):(0,m.jsxDEV)(`div`,{className:`group/field relative ${S}`,children:[(0,m.jsxDEV)(o,{label:l,required:d,reserveAction:!!c},void 0,!1,{fileName:y,lineNumber:221,columnNumber:7},this),j,M,N,(0,m.jsxDEV)(r,{error:f},void 0,!1,{fileName:y,lineNumber:225,columnNumber:7},this)]},void 0,!0,{fileName:y,lineNumber:220,columnNumber:5},this)}export{l as a,v as i,x as n,f as o,g as r,S as t};
1
+ import{r as e}from"./rolldown-runtime-QTnfLwEv.js";import{a as t}from"./i18n-vendor-T6EnJ_TL.js";import{t as n}from"./react-vendor-BskHO5hY.js";import{a as r,f as i,i as a,o,r as s}from"./chrome-DUkOYMaR.js";var c=e(t(),1);function l(e){return e===1||e===!0||e===`1`||e===`true`}function u(e,t){return e.prim===`checkbox`?l(t):t??``}async function d(e,t){let n=await t?.(e),r=typeof n==`string`?n:void 0;return{ok:!r,error:r}}function f(e,t,n=e=>e){let[r,i]=(0,c.useState)(!1),a=(0,c.useRef)(n);a.current=n;let[o,s]=(0,c.useState)(()=>n(e)),[l,u]=(0,c.useState)(!1);return(0,c.useEffect)(()=>{r||s(a.current(e))},[r,e]),{editing:r,draft:o,setDraft:s,busy:l,beginEdit:()=>i(!0),cancel:()=>{s(a.current(e)),i(!1)},commit:async(e=o)=>{u(!0);let{ok:n}=await d(e,t);u(!1),n&&i(!1)}}}function p(e,t,n){return f(t,n,t=>u(e,t))}var m=n(),h=`/home/grigorii/Projects/GitHub/grigorii-horos/coffer/packages/web/render/widgets/flow-row.tsx`,g=(0,c.createContext)(!1),_=()=>(0,c.useContext)(g);function v({items:e,scroll:t}){return(0,m.jsxDEV)(g.Provider,{value:!0,children:(0,m.jsxDEV)(`div`,{className:`flex gap-x-3 gap-y-2 items-start ${t?`flex-nowrap overflow-x-auto`:`flex-wrap`}`,children:e.map(e=>e.break?(0,m.jsxDEV)(`div`,{className:`basis-full h-0`,"aria-hidden":!0},e.key,!1,{fileName:h,lineNumber:37,columnNumber:13},this):(0,m.jsxDEV)(`div`,{className:e.full?`basis-full min-w-0`:`flex-none min-w-0 max-w-[min(16rem,100%)]`,children:e.node},e.key,!1,{fileName:h,lineNumber:39,columnNumber:13},this))},void 0,!1,{fileName:h,lineNumber:34,columnNumber:7},this)},void 0,!1,{fileName:h,lineNumber:33,columnNumber:5},this)}var y=`/home/grigorii/Projects/GitHub/grigorii-horos/coffer/packages/web/render/field-frame.tsx`,b=`[data-slot="combobox-content"],[data-slot="popover-content"],[role="listbox"],[role="dialog"],[role="menu"],[data-scope="date-picker"][data-part="content"]`;function x(e){let t=e instanceof Element?e:typeof document<`u`?document.activeElement:null;return t instanceof Element&&t.closest(b)!==null}function S(e){let{field:t,value:n,onChange:c,label:l,required:d,error:f,mode:h,geom:g,view:v,edit:b,bare:x,width:S=`w-64`}=e,C=h!==`view`,w=p(t,n,c),T=_(),E=(e,n,r,i)=>e?b(u(t,n),r):v(n,i);if(x)return(0,m.jsxDEV)(m.Fragment,{children:[E(C,n,e=>c?.(e),c),(0,m.jsxDEV)(r,{error:f},void 0,!1,{fileName:y,lineNumber:66,columnNumber:9},this)]},void 0,!0,{fileName:y,lineNumber:64,columnNumber:7},this);if(C)return l===void 0?(0,m.jsxDEV)(`div`,{className:`min-w-0 flex-1`,children:E(!0,n,e=>c?.(e))},void 0,!1,{fileName:y,lineNumber:74,columnNumber:14},this):(0,m.jsxDEV)(`div`,{className:`group/field ${S}`,children:[(0,m.jsxDEV)(o,{label:l,required:d},void 0,!1,{fileName:y,lineNumber:78,columnNumber:9},this),E(!0,n,e=>c?.(e)),(0,m.jsxDEV)(r,{error:f},void 0,!1,{fileName:y,lineNumber:80,columnNumber:9},this)]},void 0,!0,{fileName:y,lineNumber:77,columnNumber:7},this);if(t.hints.noEditControl===!0){let e=(0,m.jsxDEV)(a,{geom:g,field:t,children:v(n,c)},void 0,!1,{fileName:y,lineNumber:89,columnNumber:7},this);return l===void 0?e:(0,m.jsxDEV)(`div`,{className:`group/field ${S}`,children:[(0,m.jsxDEV)(o,{label:l,required:d},void 0,!1,{fileName:y,lineNumber:96,columnNumber:9},this),e,(0,m.jsxDEV)(r,{error:f},void 0,!1,{fileName:y,lineNumber:98,columnNumber:9},this)]},void 0,!0,{fileName:y,lineNumber:95,columnNumber:7},this)}let D=t.hints.emphasis,O=t.hints.noLabel===!0||l===void 0,k=(0,m.jsxDEV)(`div`,{className:`min-w-0`,onKeyDown:e=>{e.key===`Escape`&&(e.stopPropagation(),w.cancel())},children:E(!0,w.draft,w.setDraft)},void 0,!1,{fileName:y,lineNumber:114,columnNumber:5},this),A=(0,m.jsxDEV)(a,{geom:g,field:t,children:E(!1,n,()=>{},c)},void 0,!1,{fileName:y,lineNumber:128,columnNumber:5},this),j=T?(0,m.jsxDEV)(`div`,{className:`grid min-w-0`,children:[(0,m.jsxDEV)(`div`,{className:`col-start-1 row-start-1 min-w-0`,"aria-hidden":!w.editing,inert:!w.editing||void 0,style:{visibility:w.editing?`visible`:`hidden`},children:k},void 0,!1,{fileName:y,lineNumber:139,columnNumber:7},this),(0,m.jsxDEV)(`div`,{className:`col-start-1 row-start-1 min-w-0`,style:{visibility:w.editing?`hidden`:`visible`},children:A},void 0,!1,{fileName:y,lineNumber:147,columnNumber:7},this)]},void 0,!0,{fileName:y,lineNumber:138,columnNumber:5},this):w.editing?k:A,M=c&&!w.editing?(0,m.jsxDEV)(s,{variant:`overlay`,onEdit:w.beginEdit},void 0,!1,{fileName:y,lineNumber:160,columnNumber:51},this):null,N=c&&w.editing?(0,m.jsxDEV)(`div`,{className:`absolute right-1 top-0 z-10 flex gap-1`,children:(0,m.jsxDEV)(i,{size:`xs`,busy:w.busy,onSave:()=>w.commit(),onCancel:w.cancel},void 0,!1,{fileName:y,lineNumber:165,columnNumber:9},this)},void 0,!1,{fileName:y,lineNumber:164,columnNumber:7},this):null;if(D===`hero`){let e=c?w.editing?(0,m.jsxDEV)(i,{size:`sm`,busy:w.busy,onSave:()=>w.commit(),onCancel:w.cancel},void 0,!1,{fileName:y,lineNumber:173,columnNumber:11},this):(0,m.jsxDEV)(s,{onEdit:w.beginEdit},void 0,!1,{fileName:y,lineNumber:174,columnNumber:11},this):null;return(0,m.jsxDEV)(`div`,{className:`group/field flex items-center gap-2 min-w-0`,children:[(0,m.jsxDEV)(`div`,{className:`text-lg font-semibold text-text min-w-0`,children:w.editing?k:E(!1,n,()=>{},c)},void 0,!1,{fileName:y,lineNumber:178,columnNumber:9},this),e,(0,m.jsxDEV)(r,{error:f},void 0,!1,{fileName:y,lineNumber:182,columnNumber:9},this)]},void 0,!0,{fileName:y,lineNumber:177,columnNumber:7},this)}return D===`muted`?(0,m.jsxDEV)(`div`,{className:`group/field grid grid-cols-[110px_1fr] items-center gap-x-3 text-xs text-muted min-w-0`,children:[(0,m.jsxDEV)(`span`,{className:`flex items-center gap-1.5`,children:[l,c?w.editing?(0,m.jsxDEV)(i,{size:`xs`,busy:w.busy,onSave:()=>w.commit(),onCancel:w.cancel},void 0,!1,{fileName:y,lineNumber:191,columnNumber:11},this):(0,m.jsxDEV)(s,{onEdit:w.beginEdit},void 0,!1,{fileName:y,lineNumber:192,columnNumber:11},this):null]},void 0,!0,{fileName:y,lineNumber:196,columnNumber:9},this),(0,m.jsxDEV)(`span`,{className:`min-w-0`,children:w.editing?k:E(!1,n,()=>{},c)},void 0,!1,{fileName:y,lineNumber:200,columnNumber:9},this),(0,m.jsxDEV)(r,{error:f},void 0,!1,{fileName:y,lineNumber:201,columnNumber:9},this)]},void 0,!0,{fileName:y,lineNumber:195,columnNumber:7},this):O?(0,m.jsxDEV)(`div`,{className:`group/field relative min-w-0 pr-8`,children:[j,M,N,(0,m.jsxDEV)(r,{error:f},void 0,!1,{fileName:y,lineNumber:213,columnNumber:9},this)]},void 0,!0,{fileName:y,lineNumber:209,columnNumber:7},this):(0,m.jsxDEV)(`div`,{className:`group/field relative ${S}`,children:[(0,m.jsxDEV)(o,{label:l,required:d,reserveAction:!!c},void 0,!1,{fileName:y,lineNumber:221,columnNumber:7},this),j,M,N,(0,m.jsxDEV)(r,{error:f},void 0,!1,{fileName:y,lineNumber:225,columnNumber:7},this)]},void 0,!0,{fileName:y,lineNumber:220,columnNumber:5},this)}export{l as a,v as i,x as n,f as o,g as r,S as t};