@blinkk/root-cms 3.1.5 → 3.1.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/app.js +1 -1
- package/dist/{chunk-MUXSUGFF.js → chunk-NIBAHWGP.js} +2 -2
- package/dist/{chunk-ETHWZSNM.js → chunk-PLSNGCYU.js} +196 -22
- package/dist/{chunk-6CTCV2PN.js → chunk-Z2CTQVYR.js} +1 -1
- package/dist/cli.js +1 -1
- package/dist/client.js +1 -1
- package/dist/core/client.d.ts +30 -2
- package/dist/core/cron-schedule.d.ts +63 -0
- package/dist/core/plugin.d.ts +6 -1
- package/dist/core.js +1 -1
- package/dist/functions.js +2 -2
- package/dist/plugin.js +7 -5
- package/dist/richtext.js +1 -1
- package/dist/shared/embed-protocol.d.ts +19 -0
- package/dist/ui/AIPage-XPE7F5AF.js +1 -0
- package/dist/ui/AssetsPage-C3ZEENBO.js +1 -0
- package/dist/ui/CollectionPage-VQ4WJHJB.js +1 -0
- package/dist/ui/ComparePage-VKOXKID4.js +1 -0
- package/dist/ui/{DataPage-RFNGSDDN.js → DataPage-JXZ2Z3DG.js} +1 -1
- package/dist/ui/{DataSourcePage-U46CDIH2.js → DataSourcePage-X3NSUOTP.js} +1 -1
- package/dist/ui/{DocTranslationsPage-BFCM2PE3.js → DocTranslationsPage-AJGT52XQ.js} +1 -1
- package/dist/ui/DocumentPage-ZFD2KE3A.js +1 -0
- package/dist/ui/{EditDataSourcePage-NKKIF6AD.js → EditDataSourcePage-EMK3F6HD.js} +1 -1
- package/dist/ui/EditReleasePage-3IAERDSH.js +1 -0
- package/dist/ui/EmbeddedAIPage-2W5F7QFL.js +1 -0
- package/dist/ui/{EmbeddedDocumentPage-2CNQJTW5.js → EmbeddedDocumentPage-BESFW2YZ.js} +1 -1
- package/dist/ui/{ImageEditorDialog-YDKOGVJV.js → ImageEditorDialog-JDXMU2FC.js} +1 -1
- package/dist/ui/LogsPage-KCD4XZ2N.js +1 -0
- package/dist/ui/NewDataSourcePage-EZDU7HGA.js +1 -0
- package/dist/ui/NewReleasePage-FFTRUIP4.js +1 -0
- package/dist/ui/{NotFoundPage-JRYFUENW.js → NotFoundPage-JGG2NTUE.js} +1 -1
- package/dist/ui/{ProjectPage-2WIMWCSX.js → ProjectPage-HT5JKR33.js} +1 -1
- package/dist/ui/ReleasePage-OYWLGV4D.js +1 -0
- package/dist/ui/{ReleasesPage-AW6PICTQ.js → ReleasesPage-XEII7FBC.js} +1 -1
- package/dist/ui/{SettingsPage-KFLNZ356.js → SettingsPage-7GIBTPB5.js} +1 -1
- package/dist/ui/SidebarToolsPage-GQYTZDAC.js +1 -0
- package/dist/ui/{TaskPage-GZGPKIL5.js → TaskPage-SNDDYDZY.js} +1 -1
- package/dist/ui/TasksPage-CEVWOY67.js +1 -0
- package/dist/ui/{TranslationsArbPage-K272JEAA.js → TranslationsArbPage-ADRLLAIW.js} +1 -1
- package/dist/ui/{TranslationsEditPage-XWXPNKRQ.js → TranslationsEditPage-PSKA7K44.js} +1 -1
- package/dist/ui/{TranslationsPage-7KUHVTLK.js → TranslationsPage-NGCLDSK7.js} +2 -2
- package/dist/ui/{chunk-75NMQ3LW.js → chunk-3YBRRPAN.js} +1 -1
- package/dist/ui/{chunk-QLIIVG5Q.js → chunk-5F5XJPKD.js} +1 -1
- package/dist/ui/{chunk-7UHZS56B.js → chunk-6ZVMJXLE.js} +53 -53
- package/dist/ui/chunk-7OU4ERTS.js +87 -0
- package/dist/ui/chunk-A2JZYRE3.js +1 -0
- package/dist/ui/chunk-B74M7NEV.js +1 -0
- package/dist/ui/chunk-BLHXP3SR.js +3 -0
- package/dist/ui/{chunk-UJX25CXD.js → chunk-BOIY4J2R.js} +1 -1
- package/dist/ui/chunk-CEWU5VSJ.js +1 -0
- package/dist/ui/{chunk-34W6H4YG.js → chunk-CXMVFNX3.js} +1 -1
- package/dist/ui/{chunk-F7RQT4XN.js → chunk-EET5AS64.js} +1 -1
- package/dist/ui/{chunk-WASID5UU.js → chunk-GJ7ES2LA.js} +1 -1
- package/dist/ui/{chunk-2RRM4HEQ.js → chunk-H5JL376P.js} +1 -1
- package/dist/ui/{chunk-H37RXS4R.js → chunk-HKCOKHA2.js} +1 -1
- package/dist/ui/{chunk-5KSGCGYY.js → chunk-HUYP5U4K.js} +1 -1
- package/dist/ui/{chunk-NCZD5IWS.js → chunk-HWON6MV4.js} +1 -1
- package/dist/ui/{chunk-HXSB6YB2.js → chunk-I3H465Z6.js} +1 -1
- package/dist/ui/{chunk-535JU7FU.js → chunk-ILFWJKSS.js} +1 -1
- package/dist/ui/chunk-K7IG7PO2.js +1 -0
- package/dist/ui/chunk-LKTN7YVM.js +31 -0
- package/dist/ui/{chunk-PLYSJ7W5.js → chunk-LS2JH5QF.js} +1 -1
- package/dist/ui/{chunk-QFDU6FXP.js → chunk-MALK5YEV.js} +1 -1
- package/dist/ui/{chunk-YP6ZH3MT.js → chunk-MFRPYPCF.js} +1 -1
- package/dist/ui/chunk-MYPLMHFW.js +1 -0
- package/dist/ui/{chunk-RB23LLKL.js → chunk-OKNBFTYR.js} +1 -1
- package/dist/ui/{chunk-OWBT6YUM.js → chunk-P2RVKNG4.js} +1 -1
- package/dist/ui/{chunk-JBLSUM6W.js → chunk-P57AFOMR.js} +1 -1
- package/dist/ui/{chunk-HV3JJ5UT.js → chunk-PLTI4NG7.js} +1 -1
- package/dist/ui/chunk-PY4JH5SN.js +1 -0
- package/dist/ui/{chunk-44ZU5WMI.js → chunk-SBAY52SC.js} +1 -1
- package/dist/ui/{chunk-Y5EOMMNI.js → chunk-TCKR2BL4.js} +1 -1
- package/dist/ui/{chunk-WC7KMPEQ.js → chunk-TCRDGNM4.js} +1 -1
- package/dist/ui/chunk-TCWN5YRW.js +1 -0
- package/dist/ui/{chunk-DWV5J2W7.js → chunk-TZWCCNSA.js} +1 -1
- package/dist/ui/{chunk-2PTLQRTU.js → chunk-U5OXKKBN.js} +1 -1
- package/dist/ui/{chunk-XUBZH4ON.js → chunk-VZGDXWRK.js} +1 -1
- package/dist/ui/{chunk-IGZDFHVM.js → chunk-X3VDQDHP.js} +1 -1
- package/dist/ui/chunk-XBYMUPZF.js +19 -0
- package/dist/ui/{chunk-QRAFYIAW.js → chunk-XYXL5HSZ.js} +1 -1
- package/dist/ui/chunk-Y7RYSRP7.js +7 -0
- package/dist/ui/{chunk-WRA24P66.js.LEGAL.txt → chunk-Y7RYSRP7.js.LEGAL.txt} +1 -0
- package/dist/ui/chunk-YIKHJONY.js +1 -0
- package/dist/ui/chunk-Z2CRNO3I.js +1 -0
- package/dist/ui/{chunk-UCYWQEAS.js → chunk-ZD3ORGA6.js} +1 -1
- package/dist/ui/{chunk-YBHFGQ3Z.js → chunk-ZQDUWURP.js} +1 -1
- package/dist/ui/{chunk-PIJ3E47R.js → chunk-ZYSR5UIW.js} +1 -1
- package/dist/ui/ui.css +1 -1
- package/dist/ui/ui.js +1 -1
- package/package.json +3 -3
- package/dist/ui/AIPage-25WICIOT.js +0 -1
- package/dist/ui/AssetsPage-WKTM2J2G.js +0 -1
- package/dist/ui/CollectionPage-5ZOVG7IG.js +0 -1
- package/dist/ui/ComparePage-DDIFYYTK.js +0 -1
- package/dist/ui/DocumentPage-OTBXM55S.js +0 -1
- package/dist/ui/EditReleasePage-TKNOUT7A.js +0 -1
- package/dist/ui/EmbeddedAIPage-4AX7VO3T.js +0 -1
- package/dist/ui/LogsPage-SCECIAZH.js +0 -1
- package/dist/ui/NewDataSourcePage-FAOPK2RZ.js +0 -1
- package/dist/ui/NewReleasePage-HD6T6UV2.js +0 -1
- package/dist/ui/ReleasePage-GUMEMLF6.js +0 -1
- package/dist/ui/SidebarToolsPage-3R7BQ2F7.js +0 -1
- package/dist/ui/TasksPage-G3GBTV3L.js +0 -1
- package/dist/ui/chunk-2FQMT5AB.js +0 -3
- package/dist/ui/chunk-FVWSVOOY.js +0 -1
- package/dist/ui/chunk-GCSN3YEC.js +0 -31
- package/dist/ui/chunk-N5RJIILP.js +0 -1
- package/dist/ui/chunk-NXWYS4HG.js +0 -19
- package/dist/ui/chunk-OWYV43BT.js +0 -1
- package/dist/ui/chunk-QWB6MAPJ.js +0 -7
- package/dist/ui/chunk-RN4XVVWD.js +0 -1
- package/dist/ui/chunk-T5BJNOWE.js +0 -1
- package/dist/ui/chunk-TNW2GNUR.js +0 -1
- package/dist/ui/chunk-UPN3EMUS.js +0 -1
- package/dist/ui/chunk-VPZHG7JL.js +0 -81
- package/dist/ui/chunk-WRA24P66.js +0 -7
- package/dist/ui/chunk-Z3ZJJWFT.js +0 -1
- /package/dist/ui/{ImageEditorDialog-YDKOGVJV.js.LEGAL.txt → ImageEditorDialog-JDXMU2FC.js.LEGAL.txt} +0 -0
- /package/dist/ui/{chunk-7UHZS56B.js.LEGAL.txt → chunk-6ZVMJXLE.js.LEGAL.txt} +0 -0
- /package/dist/ui/{chunk-VPZHG7JL.js.LEGAL.txt → chunk-7OU4ERTS.js.LEGAL.txt} +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
import{a as G}from"./chunk-
|
|
1
|
+
import{a as G}from"./chunk-TCRDGNM4.js";import{a as Y}from"./chunk-EET5AS64.js";import{a as J}from"./chunk-TZWCCNSA.js";import{p as H}from"./chunk-CEWU5VSJ.js";import{b as O,d as U,e as V,j as $}from"./chunk-B74M7NEV.js";import{a as A}from"./chunk-JDW4UORS.js";import{a as K}from"./chunk-BOIY4J2R.js";import{c as L}from"./chunk-Z2CRNO3I.js";import{a as q}from"./chunk-W5DOO6ID.js";import{a as j}from"./chunk-ZQDUWURP.js";import{b as B}from"./chunk-U5OXKKBN.js";import{a as S}from"./chunk-ZYSR5UIW.js";import{d as M}from"./chunk-GJ7ES2LA.js";import{$ as C,Fa as N,Pa as W,Vc as y,W as x,a as d,c as w,da as I,e as z,fd as e,j as le,na as k,pa as E,ua as T}from"./chunk-Y7RYSRP7.js";le();function F(o){let{route:c}=M(),f=z(null),[l,i]=d(!1),[v,u]=d(""),[p,_]=d(!!o.releaseId),[Q,P]=d(null),[R,b]=d([]),[g,h]=d([]),X=J(),Z=G(),{roles:ee}=j(),oe=window.firebase.user.email||"",m=q(ee,oe);async function ae(r){console.log(r),await B(async()=>{let t=await U(r);P(t),b(t?.docIds||[]),h(t?.dataSourceIds||[])}),_(!1)}w(()=>{o.releaseId&&(_(!0),ae(o.releaseId))},[o.releaseId]);async function se(){u("");let r=f.current;function t(n){let D=r.elements[n];return D?D.value.trim():""}let a=o.releaseId||t("id");if(!a){u("missing id");return}if(!A(a)){u("id is invalid (alphanumeric characters and dashes only)");return}let s={id:a,description:t("description"),docIds:R,dataSourceIds:g};try{P(s),i(!0),o.releaseId?(await V(o.releaseId,s),S({title:"Saved release",message:`Updated ${a}`,autoClose:5e3}),i(!1)):(await O(a,s),S({title:"Added release",message:`Successfully added ${a}`,autoClose:5e3}),i(!1)),c(`/cms/releases/${a}`)}catch(n){console.error(n),S({title:"Failed to save release",message:String(n),color:"red",autoClose:!1}),i(!1)}}function re(){X.open({multiSelect:!0,selectedDocIds:R,onChangeMulti:(r,t)=>{b(a=>{let s=[...a];if(t)s.push(r);else{let n=s.findIndex(D=>D===r);n>-1&&s.splice(n,1)}return console.log(s),s.sort()})}})}function te(){Z.open({selectedDataSourceIds:g,onChange:(r,t)=>{h(a=>{let s=[...a];if(t)s.push(r);else{let n=s.indexOf(r);n>-1&&s.splice(n,1)}return s.sort()})}})}function ie(r){console.log("onRemoveDoc()",r),b(t=>{let a=[...t],s=a.indexOf(r);return s!==-1&&a.splice(s,1),console.log(a),a})}function ne(r){h(t=>{let a=[...t],s=a.indexOf(r);return s!==-1&&a.splice(s,1),a})}return e("form",{className:"ReleaseForm",ref:f,onSubmit:r=>{r.preventDefault(),se()},children:[e(E,{visible:p}),e(T,{className:"ReleaseForm__input",name:"id",label:"ID",description:"Unique identifier for the release. Use alphanumeric characters and dashes only, e.g. grogus-favorite-meals",size:"xs",radius:0,defaultValue:o.releaseId||$(),disabled:!!o.releaseId}),e(k,{className:"ReleaseForm__input",name:"description",label:"Description",description:"Optional.",size:"xs",radius:0,value:Q?.description,disabled:!m}),e(C,{className:"ReleaseForm__input",label:"Docs",description:"Select one or more docs to add to the release. Note: you can add or edit this list at a later time, if needed.",size:"xs",children:[R.length>0&&e(F.DocPreviewCards,{docIds:R,onRemoveDoc:ie,canEdit:m}),e(I,{className:"ReleaseForm__docSelectButton",color:"dark",size:"xs",onClick:()=>re(),disabled:!m,children:"Select"})]}),e(C,{className:"ReleaseForm__input",label:"Data Sources",description:"Optional. Data sources to publish with the release.",size:"xs",children:[g.length>0&&e(F.DataSourceIds,{ids:g,onRemove:ne,canEdit:m}),e(I,{className:"ReleaseForm__docSelectButton",color:"dark",size:"xs",onClick:()=>te(),disabled:!m,children:"Select"})]}),e("div",{className:"ReleaseForm__submit__buttons",children:e(K,{label:"You don't have access to create or edit releases",condition:!m,children:e("span",{children:e(I,{className:"ReleaseForm__submit",color:"blue",size:"xs",type:"submit",loading:l,disabled:!m,children:o.buttonLabel||"Save"})})})}),v&&e("div",{className:"ReleaseForm__error",children:["Error: ",v]})]})}F.DocPreviewCards=o=>e("div",{className:"ReleaseForm__DocPreviewCards",children:o.docIds.map(c=>e("div",{className:"ReleaseForm__DocPreviewCards__card",children:[e(H,{className:"ReleaseForm__DocPreviewCards__card__preview",docId:c}),e("div",{className:"ReleaseForm__DocPreviewCards__card__controls",children:[o.canEdit&&e("div",{className:"ReleaseForm__DocPreviewCards__card__controls__remove",children:e(N,{label:"Remove",children:e(x,{className:"ReleaseForm__DocPreviewCards__card__controls__remove__icon",onClick:()=>o.onRemoveDoc(c),children:e(y,{size:16})})})}),e("div",{className:"ReleaseForm__DocPreviewCards__card__controls__open",children:e(N,{label:"Open",children:e(x,{component:"a",className:"ReleaseForm__DocPreviewCards__card__controls__open__icon",href:`/cms/content/${c}`,target:"_blank",children:e(W,{size:16})})})})]})]},c))});F.DataSourceIds=o=>{let[c,f]=d({});return w(()=>{let l=!1;async function i(){let v=await Promise.all(o.ids.map(async p=>{let _=await L(p);return[p,_]}));if(l)return;let u={};for(let[p,_]of v)_&&(u[p]=_);f(u)}return i(),()=>{l=!0}},[o.ids.join(",")]),e("div",{className:"ReleaseForm__DataSourceIds",children:o.ids.map(l=>{let i=c[l];return e("div",{className:"ReleaseForm__DataSourceIds__item",children:[e(Y,{className:"ReleaseForm__DataSourceIds__item__icon",type:i?.type}),e("div",{className:"ReleaseForm__DataSourceIds__item__info",children:[e("div",{className:"ReleaseForm__DataSourceIds__item__id",children:l}),i?.description&&e("div",{className:"ReleaseForm__DataSourceIds__item__description",children:i.description})]}),o.canEdit&&e(x,{className:"ReleaseForm__DataSourceIds__item__remove",onClick:()=>o.onRemove(l),children:e(y,{size:16})})]},l)})})};export{F as a};
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import{a as Se,b as Ee,c as Pe,d as ke,e as je,f as ze,g as De,h as Ue,i as Oe,j as We,k as Be,l as Le,m as $e,n as He,o as Fe,p as ae,q as Ke,r as Ve}from"./chunk-LKTN7YVM.js";import{P as Ne,T as Te}from"./chunk-AAR7DBEN.js";import{a as we,c as ne,d as Me}from"./chunk-7OU4ERTS.js";import{f as oe}from"./chunk-5MV6XVGA.js";import{b as me,c as pe,g as fe,h as _e,j as he,n as X,o as ge,p as Ce,r as ve,v as Y}from"./chunk-XOWWPE7X.js";import{d as Ae,e as T}from"./chunk-GJ7ES2LA.js";import{$a as Q,Bc as z,Fa as H,Hc as xe,V as J,Vc as be,W as E,_a as q,a as _,ab as Z,ad as B,ba as G,c as M,da as j,e as y,fd as e,g as ue,h as N,j as at,kc as ee,ob as ye,pc as te,qa as W,qc as Re}from"./chunk-Y7RYSRP7.js";import{d as de}from"./chunk-KUCVLANF.js";import{h as Ie}from"./chunk-7SK47HHZ.js";at();var it=500;function Je(){return window.firebase.db}function Ge(){return window.__ROOT_CTX.rootConfig.projectId}function ie(){return window.firebase.user?.email||""}function st(){return me(Je(),"Projects",Ge(),"AiChats")}function se(t){return pe(Je(),"Projects",Ge(),"AiChats",t)}function D(t){return t&&typeof t.toMillis=="function"?t.toMillis():typeof t=="number"?t:0}async function Xe(t){let o=ie();if(!o)return[];let n=t?.limit,a=typeof n=="number"&&Number.isFinite(n)&&n>0?Math.min(Math.floor(n),100):50,u=fe(st(),_e("createdBy","==",o),he(it)),r=(await ge(u)).docs.map(l=>l.data());return r.sort((l,g)=>D(g.modifiedAt)-D(l.modifiedAt)),r.slice(0,a).map(l=>({id:l.id,title:l.title,modelId:l.modelId,createdAt:D(l.createdAt),modifiedAt:D(l.modifiedAt)}))}async function re(t){let o=await X(se(t));if(!o.exists())return null;let n=o.data();return n.createdBy!==ie()?null:{id:n.id||t,title:n.title,modelId:n.modelId,createdAt:D(n.createdAt),modifiedAt:D(n.modifiedAt),messages:n.messages||[]}}async function Ye(t,o){let n=ie(),a=se(t),u=await X(a);if(u.exists()&&u.data().createdBy!==n)throw new Error("chat is owned by another user");let m={id:t,createdBy:n,modifiedAt:Y(),messages:We(o.messages)};u.exists()||(m.createdAt=Y()),o.modelId&&(m.modelId=o.modelId),o.title&&(m.title=o.title),await Ce(a,m,{merge:!0})}async function qe(t){await re(t)&&await ve(se(t))}async function Qe(t,o){let n=je(o);if(n==="New chat")return n;let a=ze(o);if(!a)return n;try{let u=ke(Pe(t)),m=await Ne({model:u,system:Ue,prompt:Oe(a),maxOutputTokens:64,temperature:.3}),r=De(m.text);if(r)return r}catch(u){console.error("failed to generate chat title:",u)}return n}var le=[{id:"read",label:"Read only",description:"Inspect CMS content without planning or applying writes."},{id:"approve",label:"Ask before writing",description:"Read freely, then pause for approval before draft edits."},{id:"auto",label:"Auto-apply draft edits",description:"Apply draft-only writes without approval in this chat."}],ot="root-cms.ai.executionMode",nt="root-cms.ai.selectedModel";function rt(t){return le.some(o=>o.id===t)}function lt(){if(typeof window>"u")return"approve";try{let t=window.localStorage.getItem(ot);if(rt(t))return t}catch(t){console.error("failed to read AI execution mode preference",t)}return"approve"}function ct(t){if(typeof window>"u")return null;try{let o=window.localStorage.getItem(nt);if(o&&t.some(n=>n.id===o))return o}catch(o){console.error("failed to read AI model preference",o)}return null}function dt(t){if(!(typeof window>"u"))try{window.localStorage.setItem(nt,t)}catch(o){console.error("failed to save AI model preference",o)}}function ut(t){if(!(typeof window>"u"))try{window.localStorage.setItem(ot,t)}catch(o){console.error("failed to save AI execution mode preference",o)}}var F="";function so(t){let[o,n]=_(null),[a,u]=_("");M(()=>{let r=!0;return fetch("/cms/api/ai.config",{credentials:"include"}).then(async l=>{let g=await l.json();r&&n(g)}).catch(l=>{r&&u(String(l))}),()=>{r=!1}},[]);let m=!!o?.enabled&&(o.models?.length||0)>0;return e("div",{className:T("RootAIChat",`RootAIChat--${t.variant}`),children:!o&&!a?e("div",{className:"RootAIChat__loading",children:e(J,{size:"md",color:"gray"})}):m?e(pt,{variant:t.variant,config:o,initialChatId:t.variant==="panel"?void 0:t.initialChatId,docContext:t.docContext,onClose:t.onClose}):e(mt,{error:a,onClose:t.onClose})})}function mt(t){return e("div",{className:"RootAIChat__notEnabled",children:[t.onClose&&e(E,{className:"RootAIChat__notEnabled__close",onClick:t.onClose,title:"Close",children:e(B,{size:16})}),e("div",{className:"RootAIChat__notEnabled__icon",children:e(z,{size:36})}),e("div",{className:"RootAIChat__notEnabled__title",children:"Root AI is not configured for this project."}),e("div",{className:"RootAIChat__notEnabled__body",children:["Add an ",e("code",{children:"ai.models"})," entry to ",e("code",{children:"cmsPlugin()"})," in"," ",e("code",{children:"root.config.ts"}),"."]}),t.error&&e("pre",{className:"RootAIChat__notEnabled__error",children:t.error})]})}function pt(t){let o=t.variant==="panel",{route:n}=Ae(),a=t.config.models||[],u=()=>ct(a)||t.config.defaultModel||a[0]?.id||"",[m,r]=_(u),[l,g]=_(lt),[h,R]=_(t.initialChatId||F),[x,v]=_(t.initialChatId||F),[P,c]=_([]),[C,A]=_(""),[I,S]=_([]),[K,L]=_(0),k=async()=>{if(!o)try{let i=await Xe();S(i)}catch(i){console.error("failed to load chat list",i)}};M(()=>{k(),!o&&t.initialChatId&&V(t.initialChatId)},[]),M(()=>{ut(l)},[l]);let U=async i=>{try{let f=await re(i);return f?(R(i),v(i),c(f.messages||[]),A(f.title||""),f.modelId&&a.find(b=>b.id===f.modelId)&&r(f.modelId),L(w=>w+1),!0):!1}catch(f){return console.error("failed to load chat",f),!1}},V=i=>U(i),O=()=>{r(u()),R(F),v(F),c([]),A(""),L(i=>i+1),o||n("/cms/ai")},$=async i=>{if(i===x)return;await U(i)&&!o&&n(`/cms/ai/chat/${i}`)},s=async i=>{try{await qe(i),x===i&&O(),k()}catch(f){console.error("failed to delete chat",f)}},p=a.find(i=>i.id===m)||a[0],d=i=>{r(i),dt(i)};return e("div",{className:"RootAIChat__layout",children:[!o&&e(_t,{chats:I,activeChatId:x,onSelect:$,onNew:O,onDelete:s}),e("div",{className:"RootAIChat__main",children:[o&&e(ft,{onNewChat:O,onClose:t.onClose}),e(gt,{initialChatId:h,initialTitle:C,model:p,initialMessages:P,executionMode:l,canAutoApply:t.config.canAutoApply??!1,models:a,selectedModel:p,docContext:t.docContext,onSelectModel:d,onSelectExecutionMode:g,onChatPersisted:i=>{v(i),k(),o||window.history.replaceState(null,"",`/cms/ai/chat/${i}`)}},K)]})]})}function ft(t){return e("div",{className:"RootAIChat__panelHeader",children:[e("div",{className:"RootAIChat__panelHeader__title",children:[e(z,{size:14}),e("span",{children:"Root AI"})]}),e("div",{className:"RootAIChat__panelHeader__actions",children:[e(H,{label:"New chat",children:e(E,{size:"xs",onClick:t.onNewChat,children:e(ee,{size:14})})}),t.onClose&&e(H,{label:"Close (\u2318 + i)",children:e(E,{size:"xs",onClick:t.onClose,children:e(B,{size:14})})})]})]})}function _t(t){return e("aside",{className:"RootAIChat__sidebar",children:[e("button",{type:"button",className:"RootAIChat__sidebar__newButton",onClick:t.onNew,children:[e(ee,{size:18}),e("span",{children:"New chat"})]}),e("div",{className:"RootAIChat__sidebar__list",children:[t.chats.length===0&&e("div",{className:"RootAIChat__sidebar__empty",children:"No chats yet."}),t.chats.map(o=>e("div",{className:T("RootAIChat__sidebar__item",o.id===t.activeChatId&&"RootAIChat__sidebar__item--active"),onClick:()=>t.onSelect(o.id),children:[e("div",{className:"RootAIChat__sidebar__item__title",title:o.title||"Untitled chat",children:o.title||"Untitled chat"}),e("button",{type:"button",className:"RootAIChat__sidebar__item__delete",title:"Delete chat",onClick:n=>{n.stopPropagation(),window.confirm("Delete this chat?")&&t.onDelete(o.id)},children:e(be,{size:14})})]},o.id))]})]})}function ht(t){let o=t.canAutoApply?le:le.filter(a=>a.id!=="auto"),n=o.find(a=>a.id===t.executionMode)||o[0];return e("div",{className:"RootAIChat__options",children:[e(W,{control:e(j,{type:"button",className:"RootAIChat__modePicker",variant:"subtle",color:"dark",size:"xs",compact:!0,leftIcon:e(Re,{size:16}),children:n.label}),children:o.map(a=>e(W.Item,{onClick:()=>t.onSelectExecutionMode(a.id),children:e("div",{className:"RootAIChat__modePicker__option",children:[e("div",{className:"RootAIChat__modePicker__option__label",children:a.label}),e("div",{className:"RootAIChat__modePicker__option__description",children:a.description})]})},a.id))}),e(W,{control:e(j,{type:"button",className:"RootAIChat__modelPicker",variant:"subtle",color:"dark",size:"xs",compact:!0,leftIcon:e(z,{size:16}),children:t.selectedModel?.label||"Select model"}),children:t.models.map(a=>e(W.Item,{onClick:()=>t.onSelectModel(a.id),children:e("div",{className:"RootAIChat__modelPicker__option",children:[e("div",{className:"RootAIChat__modelPicker__option__label",children:a.label}),a.description&&e("div",{className:"RootAIChat__modelPicker__option__description",children:a.description})]})},a.id))})]})}function gt(t){let[o]=_(()=>t.initialChatId||kt()),n=y(t.model?.id);n.current=t.model?.id;let a=y(t.executionMode);a.current=t.executionMode;let u=y(t.docContext);u.current=t.docContext;let m=y(t.onChatPersisted);m.current=t.onChatPersisted;let r=y(null),l=y(t.executionMode),g=y(t.initialTitle),h=y(null),[R,x]=_({}),v=y({});M(()=>()=>{for(let s of Object.values(v.current))s("reject");v.current={}},[]);let P=N((s,p,d,i)=>new Promise(f=>{v.current[s]=f,x(w=>({...w,[s]:{toolCallId:s,toolName:p,input:d,preview:i,status:"pending"}}))}),[]),c=N(s=>{x(p=>{let d=p[s];return d?{...p,[s]:{...d,status:"executing"}}:p}),v.current[s]?.("approve"),delete v.current[s]},[]),C=N(s=>{x(p=>{let d={...p};return delete d[s],d}),v.current[s]?.("reject"),delete v.current[s]},[]),A=N(async s=>{if(!He(s.toolName))return await ae(s.toolName,s.input);let p=l.current;if(p==="read")return{success:!1,error:"WRITE_BLOCKED_BY_MODE",message:"The current execution mode is read only. Do not call write tools."};let d;try{d=await Fe(s.toolName,s.input)}catch(i){return{success:!1,error:"PREVIEW_FAILED",message:i?.message||String(i)}}if(d.error)return{success:!1,error:d.error,message:d.summary,errors:d.errors,hint:d.hint};if(p==="approve"&&await P(s.toolCallId,s.toolName,s.input,d)==="reject")return{success:!1,error:"USER_REJECTED",message:"The user rejected this draft change. Do not retry unless they ask for a revised version."};try{return await ae(s.toolName,s.input)}finally{x(i=>{if(!i[s.toolCallId])return i;let f={...i};return delete f[s.toolCallId],f})}},[P]),I=N(async s=>{let p=r.current;try{let d=g.current;if(!d&&p){let i=await Qe(p,s);i&&i!=="New chat"&&(d=i,g.current=i)}await Ye(o,{messages:s,modelId:p?.id||n.current,title:d||void 0})}catch(d){console.error("failed to persist chat history",d)}m.current(o)},[o]),S=ue(()=>Be({loadTurnConfig:async()=>{let s=n.current,p=a.current,d=u.current?.docId,i=`${s}|${p}|${d||""}`,f=h.current;if(f&&f.key===i)return f.config;let w=await fetch("/cms/api/ai.chat.prepare",{method:"POST",credentials:"include",headers:{"content-type":"application/json"},body:JSON.stringify({modelId:s,executionMode:p,docId:d})}),b=await w.json();if(!w.ok||!b.success)throw new Error(b.error||`ai.chat.prepare failed: ${w.status}`);let ce={model:b.model,system:b.system,maxSteps:b.maxSteps};return r.current=b.model,l.current=b.executionMode||p,h.current={key:i,config:ce},ce},buildTools:s=>s.capabilities.tools?l.current==="read"?$e():Le():{},onFinish:I}),[I]),{messages:K,sendMessage:L,status:k,error:U,stop:V,addToolOutput:O}=Se({id:o,messages:t.initialMessages,transport:S,sendAutomaticallyWhen:Te,onToolCall:async({toolCall:s})=>{let p=await A(s);O({tool:s.toolName,toolCallId:s.toolCallId,output:p})}}),$=k==="streaming"||k==="submitted";return e(de,{children:[e(Ct,{messages:K,isStreaming:$,emptyMessage:t.model?void 0:"Select a model to start.",toolApprovals:{approvals:R,onApprove:c,onReject:C}}),U&&e("div",{className:"RootAIChat__error",children:[e("strong",{children:"Error:"})," ",U.message]}),e(Mt,{disabled:!t.model,canAttach:t.model?.capabilities.attachments??!1,isStreaming:$,onStop:V,controls:e(ht,{models:t.models,selectedModel:t.selectedModel,onSelectModel:t.onSelectModel,executionMode:t.executionMode,canAutoApply:t.canAutoApply,onSelectExecutionMode:t.onSelectExecutionMode}),onSend:(s,p)=>{if(!s&&p.length===0)return;let d=Nt(p),i=[s,d.text].filter(Boolean).join(`
|
|
2
|
+
|
|
3
|
+
`);L({text:i,files:d.files.map(f=>({type:"file",mediaType:f.mediaType,url:f.url,filename:f.filename}))})}})]})}function Ct(t){let o=y(null);return M(()=>{let n=o.current;n&&(n.scrollTop=n.scrollHeight)},[t.messages]),t.messages.length===0?e("div",{className:"RootAIChat__transcript RootAIChat__transcript--empty",ref:o,children:e("div",{className:"RootAIChat__welcome",children:[e("div",{className:"RootAIChat__welcome__icon",children:e(z,{size:36})}),e("div",{className:"RootAIChat__welcome__title",children:"Root AI"}),e("div",{className:"RootAIChat__welcome__body",children:t.emptyMessage||"What are we going to get done today?"})]})}):e("div",{className:"RootAIChat__transcript",ref:o,children:e("div",{className:"RootAIChat__transcript__inner",children:[t.messages.map(n=>e(vt,{message:n,toolApprovals:t.toolApprovals},n.id)),t.isStreaming&&e("div",{className:"RootAIChat__streamingIndicator",children:e(Ee,{size:6})})]})})}function vt(t){let o=t.message,n=o.role==="user",a=n?"You":"Root AI",u=n?window.firebase.user?.photoURL:null,[m,r]=_(!1),l=N(()=>(o.parts||[]).filter(h=>h.type==="text"&&h.text).map(h=>h.text).join(`
|
|
4
|
+
|
|
5
|
+
`),[o.parts]),g=N(async()=>{let h=l();if(!h)return;let R=we.parse(h);try{await navigator.clipboard.write([new ClipboardItem({"text/html":new Blob([R],{type:"text/html"}),"text/plain":new Blob([h],{type:"text/plain"})})]),r(!0),setTimeout(()=>r(!1),2e3)}catch{await navigator.clipboard.writeText(h),r(!0),setTimeout(()=>r(!1),2e3)}},[l]);return e("div",{className:T("RootAIChat__message",`RootAIChat__message--${o.role}`),children:[e("div",{className:"RootAIChat__message__avatar",children:u?e("img",{src:u,alt:a}):e(z,{size:20})}),e("div",{className:"RootAIChat__message__body",children:[e("div",{className:"RootAIChat__message__username",children:a}),e("div",{className:"RootAIChat__message__parts",children:(o.parts||[]).map((h,R)=>e(At,{part:h,toolApprovals:t.toolApprovals},R))}),e("button",{type:"button",className:T("RootAIChat__message__copy",m&&"RootAIChat__message__copy--copied"),title:m?"Copied!":"Copy message",onClick:g,children:m?e(q,{size:14}):e(ye,{size:14})})]})]})}function At(t){let o=t.part;return o.type==="text"?o.text?e("div",{className:"RootAIChat__textPart",children:e(ne,{code:o.text})}):null:o.type==="reasoning"?e(It,{text:o.text}):o.type==="file"?e(yt,{part:o}):o.type==="source-url"?e("a",{className:"RootAIChat__sourcePart",href:o.url,target:"_blank",rel:"noopener noreferrer",children:o.title||o.url}):typeof o.type=="string"&&o.type.startsWith("tool-")?e(Ze,{part:o,toolApprovals:t.toolApprovals}):o.type==="dynamic-tool"?e(Ze,{part:o,toolApprovals:t.toolApprovals}):o.type==="step-start"?null:e("div",{className:"RootAIChat__unknownPart",children:e("pre",{children:JSON.stringify(o,null,2)})})}function It(t){let[o,n]=_(!1);return t.text?e("div",{className:T("RootAIChat__reasoning",o&&"RootAIChat__reasoning--open"),children:[e("button",{type:"button",className:"RootAIChat__reasoning__toggle",onClick:()=>n(!o),children:[e(Q,{size:14,style:{transform:o?"rotate(0deg)":"rotate(-90deg)"}}),e("span",{children:"Thinking"})]}),o&&e("div",{className:"RootAIChat__reasoning__body",children:e(ne,{code:t.text})})]}):null}function yt(t){let o=t.part;return o.mediaType?.startsWith("image/")?e("div",{className:"RootAIChat__filePart",children:e("img",{src:o.url,alt:o.filename||"attachment"})}):e("a",{className:"RootAIChat__filePart RootAIChat__filePart--link",href:o.url,target:"_blank",rel:"noopener noreferrer",children:[e(te,{size:14}),e("span",{children:o.filename||o.url})]})}function Ze(t){let o=t.part,n=typeof o.type=="string"&&o.type.startsWith("tool-")?o.type.slice(5):o.toolName||"tool",a=o.state||"",u=Rt(o),m=t.toolApprovals,r=u?m?.approvals[u]:void 0,[l,g]=_(!!r);return M(()=>{r&&g(!0)},[r]),e("div",{className:"RootAIChat__tool",children:[e("button",{type:"button",className:"RootAIChat__tool__header",onClick:()=>g(!l),children:[e(Q,{className:T("RootAIChat__tool__header__icon",l&&"RootAIChat__tool__header__icon--open"),size:14}),e(G,{color:"dark",variant:"filled",size:"xs",children:n}),e("span",{className:"RootAIChat__tool__title",children:Ke(n,o.input)}),e("span",{className:"RootAIChat__tool__state",children:r?wt(r.status):Ve(a)})]}),l&&e("div",{className:"RootAIChat__tool__body",children:[r&&m&&e(xt,{approval:r,onApprove:()=>m.onApprove(r.toolCallId),onReject:()=>m.onReject(r.toolCallId)}),o.output?.receipt&&e(bt,{output:o.output}),o.input&&e("details",{children:[e("summary",{children:[e(Z,{size:14,className:"RootAIChat__tool__json__icon"}),e("span",{children:"Input"})]}),e("pre",{children:JSON.stringify(o.input,null,2)})]}),o.output&&e("details",{children:[e("summary",{children:[e(Z,{size:14,className:"RootAIChat__tool__json__icon"}),e("span",{children:"Output"})]}),e("pre",{children:JSON.stringify(o.output,null,2)})]}),o.errorText&&e("div",{className:"RootAIChat__tool__error",children:o.errorText})]})]})}function Rt(t){return t.toolCallId||t.id||""}function xt(t){let o=t.approval.preview,n=o.before!==void 0&&o.after!==void 0;return e("div",{className:"RootAIChat__approval",children:[e("div",{className:"RootAIChat__approval__header",children:[e("div",{children:[e("div",{className:"RootAIChat__approval__title",children:o.title}),e("div",{className:"RootAIChat__approval__summary",children:o.summary})]}),e(G,{className:"RootAIChat__approval__status",variant:"light",color:"gray",children:t.approval.status==="executing"?"Applying":"Review"})]}),o.details.length>0&&e("div",{className:"RootAIChat__approval__details",children:o.details.map(a=>e("div",{children:[e("span",{children:a.label}),e("strong",{children:a.value})]},`${a.label}:${a.value}`))}),n&&e(Me,{className:"RootAIChat__approval__diff",oldCode:oe(o.before),newCode:oe(o.after)}),e("div",{className:"RootAIChat__approval__actions",children:[e(j,{variant:"default",color:"dark",size:"xs",type:"button",className:"RootAIChat__approval__button",disabled:t.approval.status==="executing",onClick:t.onReject,children:"Reject"}),e(j,{variant:"filled",color:"green",size:"xs",type:"button",className:"RootAIChat__approval__button RootAIChat__approval__button--primary",disabled:t.approval.status==="executing",onClick:t.onApprove,children:"Approve draft edit"})]})]})}function bt(t){let o=t.output.receipt;return e("div",{className:"RootAIChat__receipt",children:[e("div",{className:"RootAIChat__receipt__title",children:[e(q,{size:14}),e("span",{children:o.title})]}),e("div",{className:"RootAIChat__receipt__summary",children:o.summary}),o.details?.length>0&&e("div",{className:"RootAIChat__receipt__details",children:o.details.map(n=>e("div",{children:[e("span",{children:n.label}),e("strong",{children:n.value})]},`${n.label}:${n.value}`))}),o.adminUrl&&e(j,{component:"a",className:"RootAIChat__receipt__link",variant:"default",size:"xs",compact:!0,href:o.adminUrl,children:"Open document"})]})}function wt(t){return t==="executing"?"applying\u2026":"waiting for approval"}function Mt(t){let[o,n]=_(""),[a,u]=_([]),[m,r]=_(!1),l=y(null),g=y(null);M(()=>{window.requestAnimationFrame(()=>{let c=g.current;c&&(c.style.height="auto",c.style.height=`${Math.min(c.scrollHeight,240)}px`)})},[o,a]);let R=()=>{t.disabled||t.isStreaming||!o&&a.length===0||(t.onSend(o,a),n(""),u([]),l.current&&(l.current.value=""))},x=c=>{c.key==="Enter"&&!c.shiftKey&&(c.preventDefault(),R())},v=async c=>{r(!0);try{let C=c.type||Pt(c.name),A=await St(c,C),I=await Ie(c,{disableGci:!0});u(S=>[...S,{url:I.src,filename:I.filename||c.name,mediaType:C,textContent:A?.text,textTruncated:A?.truncated,width:I.width,height:I.height}])}catch(C){console.error("upload failed",C)}finally{r(!1),l.current&&(l.current.value="")}},P=c=>{let C=c.target;Array.from(C.files||[]).forEach(v)};return e("div",{className:"RootAIChat__composer",children:[a.length>0&&e("div",{className:"RootAIChat__composer__attachments",children:a.map((c,C)=>e("div",{className:"RootAIChat__composer__attachment",children:[c.mediaType.startsWith("image/")?e("img",{src:c.url,alt:c.filename}):e("span",{className:"RootAIChat__composer__attachment__name",children:c.filename}),e("button",{type:"button",className:"RootAIChat__composer__attachment__remove",onClick:()=>u(A=>A.filter((I,S)=>S!==C)),children:e(B,{size:12})})]},C))}),e("div",{className:"RootAIChat__composer__row",children:[e(H,{label:t.canAttach?"Attach file":"Model doesn't support attachments",className:"RootAIChat__composer__attachTooltip",children:e(E,{component:"label",radius:"xl",className:T("RootAIChat__composer__attach",!t.canAttach&&"RootAIChat__composer__attach--disabled"),disabled:!t.canAttach,children:[m?e(J,{size:"xs"}):e(te,{size:18}),e("input",{ref:l,type:"file",style:{display:"none"},onChange:P})]})}),e("textarea",{ref:g,className:"RootAIChat__composer__textarea",placeholder:t.disabled?"Select a model\u2026":"Ask anything\u2026",value:o,rows:1,autofocus:!0,disabled:t.disabled,onKeyDown:x,onChange:c=>n(c.target.value),onPaste:c=>{let C=c.clipboardData?.items||[];for(let A of C)if(A.kind==="file"){let I=A.getAsFile();I&&t.canAttach&&v(I)}}}),t.isStreaming?e(E,{className:"RootAIChat__composer__button RootAIChat__composer__stopButton",radius:"xl",color:"dark",variant:"filled",onClick:t.onStop,title:"Stop",children:e(B,{size:18})}):e(E,{className:"RootAIChat__composer__button RootAIChat__composer__submitButton",radius:"xl",color:"dark",variant:"filled",disabled:t.disabled||m||!o&&a.length===0,onClick:R,title:"Send",children:e(xe,{size:18})})]}),t.controls]})}var et=1e5;function Nt(t){let o=t.filter(tt),n=t.filter(a=>!tt(a)).map(Tt);return{files:o,text:n.length?`Attached files:
|
|
6
|
+
|
|
7
|
+
${n.join(`
|
|
8
|
+
|
|
9
|
+
`)}`:""}}function tt(t){return t.mediaType.startsWith("image/")}function Tt(t){let o=`File: ${t.filename} (${t.mediaType})`;if(t.textContent!==void 0){let n=t.textTruncated?`
|
|
10
|
+
|
|
11
|
+
[Content truncated before sending to the model.]`:"";return`${o}
|
|
12
|
+
URL: ${t.url}
|
|
13
|
+
|
|
14
|
+
~~~
|
|
15
|
+
${t.textContent}${n}
|
|
16
|
+
~~~`}return`${o}
|
|
17
|
+
URL: ${t.url}
|
|
18
|
+
|
|
19
|
+
[The file was uploaded, but its binary content was not inlined into this chat message.]`}async function St(t,o){if(!Et(t.name,o))return null;let n=await t.text();return n.length<=et?{text:n,truncated:!1}:{text:n.slice(0,et),truncated:!0}}function Et(t,o){return o.startsWith("text/")?!0:[".css",".js",".jsx",".json",".md",".mdx",".mjs",".scss",".ts",".tsx",".txt",".yaml",".yml"].some(n=>t.toLowerCase().endsWith(n))}function Pt(t){let o=t.toLowerCase();return o.endsWith(".png")?"image/png":o.endsWith(".webp")?"image/webp":o.endsWith(".jpg")||o.endsWith(".jpeg")?"image/jpeg":o.endsWith(".gif")?"image/gif":o.endsWith(".svg")?"image/svg+xml":o.endsWith(".pdf")?"application/pdf":o.endsWith(".json")?"application/json":o.endsWith(".csv")?"text/csv":o.endsWith(".md")?"text/markdown":o.endsWith(".txt")?"text/plain":"application/octet-stream"}function kt(){return typeof crypto<"u"&&typeof crypto.randomUUID=="function"?crypto.randomUUID():`chat-${Date.now()}-${Math.random().toString(36).slice(2,10)}`}export{so as a};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{A as D,K as x,R as A,b as k,da as L,fa as B,i as I,ra as F,v as d,y as M}from"./chunk-
|
|
1
|
+
import{A as D,K as x,R as A,b as k,da as L,fa as B,i as I,ra as F,v as d,y as M}from"./chunk-Y7RYSRP7.js";import{j as R}from"./chunk-KUCVLANF.js";M();M();var h=R(null);h.displayName="@mantine/modals/ModalsContext";function j(){let o=I(h);if(!o)throw new Error("[@mantine/modals] useModals hook was called outside of context, wrap your app with ModalsProvider component");return o}M();M();var W=Object.defineProperty,X=Object.defineProperties,Y=Object.getOwnPropertyDescriptors,T=Object.getOwnPropertySymbols,Z=Object.prototype.hasOwnProperty,$=Object.prototype.propertyIsEnumerable,V=(o,r,e)=>r in o?W(o,r,{enumerable:!0,configurable:!0,writable:!0,value:e}):o[r]=e,S=(o,r)=>{for(var e in r||(r={}))Z.call(r,e)&&V(o,e,r[e]);if(T)for(var e of T(r))$.call(r,e)&&V(o,e,r[e]);return o},G=(o,r)=>X(o,Y(r));function q({id:o,cancelProps:r,confirmProps:e,labels:c={cancel:"",confirm:""},closeOnConfirm:n=!0,closeOnCancel:s=!0,groupProps:m,onCancel:u,onConfirm:f,children:v}){let{cancel:_,confirm:y}=c,P=j(),w=l=>{typeof r?.onClick=="function"&&r?.onClick(l),typeof u=="function"&&u(),s&&P.closeModal(o)},b=l=>{typeof e?.onClick=="function"&&e?.onClick(l),typeof f=="function"&&f(),n&&P.closeModal(o)};return d.createElement(d.Fragment,null,v&&d.createElement(A,{mb:"md"},v),d.createElement(B,S({position:"right"},m),d.createElement(L,G(S({variant:"default"},r),{onClick:w}),r?.children||_),d.createElement(L,G(S({},e),{onClick:b}),e?.children||y)))}function z(o,r){switch(r.type){case"OPEN":return{current:r.payload,modals:[...o.modals,r.payload]};case"CLOSE":return{current:o.modals[o.modals.length-2]||null,modals:o.modals.filter(e=>e.id!==r.payload)};case"CLOSE_ALL":return{current:o.current,modals:[]};default:return o}}var oo=Object.defineProperty,ro=Object.defineProperties,eo=Object.getOwnPropertyDescriptors,g=Object.getOwnPropertySymbols,K=Object.prototype.hasOwnProperty,Q=Object.prototype.propertyIsEnumerable,H=(o,r,e)=>r in o?oo(o,r,{enumerable:!0,configurable:!0,writable:!0,value:e}):o[r]=e,E=(o,r)=>{for(var e in r||(r={}))K.call(r,e)&&H(o,e,r[e]);if(g)for(var e of g(r))Q.call(r,e)&&H(o,e,r[e]);return o},J=(o,r)=>ro(o,eo(r)),N=(o,r)=>{var e={};for(var c in o)K.call(o,c)&&r.indexOf(c)<0&&(e[c]=o[c]);if(o!=null&&g)for(var c of g(o))r.indexOf(c)<0&&Q.call(o,c)&&(e[c]=o[c]);return e};function to(o){if(!o)return{confirmProps:{},modalProps:{}};let r=o,{id:e,children:c,onCancel:n,onConfirm:s,closeOnConfirm:m,closeOnCancel:u,cancelProps:f,confirmProps:v,groupProps:_,labels:y}=r,P=N(r,["id","children","onCancel","onConfirm","closeOnConfirm","closeOnCancel","cancelProps","confirmProps","groupProps","labels"]);return{confirmProps:{id:e,children:c,onCancel:n,onConfirm:s,closeOnConfirm:m,closeOnCancel:u,cancelProps:f,confirmProps:v,groupProps:_,labels:y},modalProps:E({id:e},P)}}function no({children:o,modalProps:r,labels:e,modals:c}){let[n,s]=k(z,{modals:[],current:null}),m=l=>{n.modals.forEach(t=>{var a,p,i,O;t.type==="confirm"&&l&&((p=(a=t.props)==null?void 0:a.onCancel)==null||p.call(a)),(O=(i=t.props)==null?void 0:i.onClose)==null||O.call(i)}),s({type:"CLOSE_ALL"})},u=l=>{let t=l.id||x();return s({type:"OPEN",payload:{id:t,type:"content",props:l}}),t},f=l=>{let t=l.id||x();return s({type:"OPEN",payload:{id:t,type:"confirm",props:l}}),t},v=(l,t)=>{let a=t.id||x();return s({type:"OPEN",payload:{id:a,type:"context",props:t,ctx:l}}),a},_=(l,t)=>{var a,p,i,O;if(n.modals.length<=1){m(t);return}let C=n.modals.find(U=>U.id===l);C?.type==="confirm"&&t&&((p=(a=C.props)==null?void 0:a.onCancel)==null||p.call(a)),(O=(i=C?.props)==null?void 0:i.onClose)==null||O.call(i),s({type:"CLOSE",payload:C.id})},y={modals:n.modals,openModal:u,openConfirmModal:f,openContextModal:v,closeModal:_,closeAll:m},P=()=>{var l;switch((l=n.current)==null?void 0:l.type){case"context":{let t=n.current.props,{innerProps:a}=t,p=N(t,["innerProps"]),i=c[n.current.ctx];return{modalProps:p,content:d.createElement(i,{innerProps:a,context:y,id:n.current.id})}}case"confirm":{let{modalProps:t,confirmProps:a}=to(n.current.props);return{modalProps:t,content:d.createElement(q,J(E({},a),{id:n.current.id,labels:n.current.props.labels||e}))}}case"content":{let t=n.current.props,{children:a}=t;return{modalProps:N(t,["children"]),content:d.createElement(d.Fragment,null,a)}}default:return{modalProps:{},content:null}}},{modalProps:w,content:b}=P();return d.createElement(h.Provider,{value:y},d.createElement(F,J(E(E({},r),w),{opened:n.modals.length>0,onClose:()=>_(n.current.id)}),b),o)}function bo(){let o=D();return{overlayColor:o.colorScheme==="dark"?o.colors.dark[9]:o.colors.gray[2],overlayOpacity:.55,overlayBlur:3}}export{j as a,no as b,bo as c};
|