@blinkk/root-cms 3.1.1 → 3.1.2
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-GXV4UQ6Z.js → chunk-X5CNR4CK.js} +2 -2
- package/dist/core/plugin.d.ts +1 -1
- package/dist/core/translations.d.ts +19 -4
- package/dist/plugin.js +34 -4
- package/dist/shared/translation-languages.d.ts +67 -0
- package/dist/ui/AIPage-2N5UYBRX.js +1 -0
- package/dist/ui/{AssetsPage-5S6PNMF6.js → AssetsPage-KLGNE6D6.js} +1 -1
- package/dist/ui/{CollectionPage-CU3VDEXA.js → CollectionPage-D7IG6526.js} +1 -1
- package/dist/ui/ComparePage-726NIJW5.js +1 -0
- package/dist/ui/{DataPage-XIXFKXDN.js → DataPage-YMSQCIVK.js} +1 -1
- package/dist/ui/{DataSourcePage-ORIEQH3Y.js → DataSourcePage-7VPFUG3K.js} +1 -1
- package/dist/ui/DocTranslationsPage-FO7O76VK.js +1 -0
- package/dist/ui/DocumentPage-M7SJ4ITQ.js +1 -0
- package/dist/ui/{EditDataSourcePage-HIGZZQJC.js → EditDataSourcePage-Y7YK6IWT.js} +1 -1
- package/dist/ui/{EditReleasePage-KUHBU2HQ.js → EditReleasePage-XZ4RHHRT.js} +1 -1
- package/dist/ui/{EmbeddedAIPage-CJWZE5FC.js → EmbeddedAIPage-RJOUIPF2.js} +1 -1
- package/dist/ui/EmbeddedDocumentPage-4TLMCDSO.js +1 -0
- package/dist/ui/LogsPage-IGDDZGEI.js +1 -0
- package/dist/ui/{NewDataSourcePage-7TUUE6ZL.js → NewDataSourcePage-YUPRHL7F.js} +1 -1
- package/dist/ui/NewReleasePage-6HHLYOQP.js +1 -0
- package/dist/ui/{NotFoundPage-AW6UC6II.js → NotFoundPage-A6OCYREA.js} +1 -1
- package/dist/ui/ProjectPage-UHRXNN7O.js +1 -0
- package/dist/ui/{ReleasePage-W2R3DIFX.js → ReleasePage-V2JMPWX7.js} +1 -1
- package/dist/ui/{ReleasesPage-HBBUGE7D.js → ReleasesPage-SCR4SVKN.js} +1 -1
- package/dist/ui/SettingsPage-5XKHPG6K.js +1 -0
- package/dist/ui/SidebarToolsPage-VXVRZ2C3.js +1 -0
- package/dist/ui/{TaskPage-JYUQEGRB.js → TaskPage-LDPRN3G6.js} +1 -1
- package/dist/ui/TasksPage-DIXUWYXM.js +1 -0
- package/dist/ui/{TranslationsArbPage-AJLM5VSD.js → TranslationsArbPage-QPD3ZBT4.js} +1 -1
- package/dist/ui/TranslationsEditPage-475Z7UPC.js +1 -0
- package/dist/ui/{TranslationsPage-HPYAJQ4Q.js → TranslationsPage-674JU6L4.js} +32 -32
- package/dist/ui/{chunk-3T4ZWQR4.js → chunk-2EPQJUGM.js} +1 -1
- package/dist/ui/{chunk-2KSMCQ6H.js → chunk-2RAVKX2Z.js} +1 -1
- package/dist/ui/{chunk-AZCGXQTL.js → chunk-2S5HMST6.js} +1 -1
- package/dist/ui/chunk-4ALFT4ES.js +141 -0
- package/dist/ui/{chunk-B6M55OFE.js → chunk-4FGASIIX.js} +1 -1
- package/dist/ui/chunk-AAHM6RYJ.js +1 -0
- package/dist/ui/chunk-AGFPVTBA.js +1 -0
- package/dist/ui/chunk-BUNR5EU3.js +1 -0
- package/dist/ui/{chunk-O5P3CPJ4.js → chunk-BW2MKGNP.js} +1 -1
- package/dist/ui/{chunk-MZTOPPWQ.js → chunk-ENQKSLGJ.js} +1 -1
- package/dist/ui/{chunk-76ZGLKLT.js → chunk-GT5EQSEX.js} +1 -1
- package/dist/ui/{chunk-OXVYTSIZ.js → chunk-JBHRZ4EX.js} +1 -1
- package/dist/ui/{chunk-XT5FNJCX.js → chunk-MSYTAJBV.js} +1 -1
- package/dist/ui/{chunk-E76ECIOX.js → chunk-NJMNOITA.js} +1 -1
- package/dist/ui/chunk-NWHGT476.js +1 -0
- package/dist/ui/{chunk-R6B3W5AJ.js → chunk-PTPYMVFW.js} +1 -1
- package/dist/ui/{chunk-TDUBSLEC.js → chunk-Q7IU4QCY.js} +1 -1
- package/dist/ui/{chunk-WKF7CSWS.js → chunk-QF3GPZTI.js} +1 -1
- package/dist/ui/{chunk-GU24U5RM.js → chunk-RHAJNURN.js} +1 -1
- package/dist/ui/{chunk-764W6634.js → chunk-SENZVSVZ.js} +1 -1
- package/dist/ui/chunk-SKQECSUR.js +1 -0
- package/dist/ui/chunk-TOGLZDK3.js +1 -0
- package/dist/ui/{chunk-V4CTOC6E.js → chunk-TPJCPCRR.js} +1 -1
- package/dist/ui/{chunk-GQ5IRK43.js → chunk-TVYAZN2Q.js} +1 -1
- package/dist/ui/{chunk-WXT7LTQM.js → chunk-VJUMFJIX.js} +1 -1
- package/dist/ui/{chunk-U7PWJV6F.js → chunk-W6LP22IK.js} +1 -1
- package/dist/ui/chunk-WMICEDOT.js +1 -0
- package/dist/ui/{chunk-5AVRMJVW.js → chunk-XMESZUC5.js} +1 -1
- package/dist/ui/{chunk-RAXWL656.js → chunk-XWX2622O.js} +1 -1
- package/dist/ui/chunk-YMBBWVBB.js +3 -0
- package/dist/ui/{chunk-OWQL5DVE.js → chunk-YXSXWFLZ.js} +1 -1
- package/dist/ui/chunk-ZMS6NIGG.js +1 -0
- package/dist/ui/ui.css +1 -1
- package/dist/ui/ui.js +1 -1
- package/package.json +3 -3
- package/dist/ui/AIPage-EL6DQYII.js +0 -1
- package/dist/ui/ComparePage-FTZLYO2O.js +0 -1
- package/dist/ui/DocTranslationsPage-4OVBIPSG.js +0 -1
- package/dist/ui/DocumentPage-3JPFJF3E.js +0 -1
- package/dist/ui/EmbeddedDocumentPage-6XQHYIAO.js +0 -1
- package/dist/ui/LogsPage-4DVGYXZY.js +0 -1
- package/dist/ui/NewReleasePage-6UT36HDW.js +0 -1
- package/dist/ui/ProjectPage-US5FJGFK.js +0 -1
- package/dist/ui/SettingsPage-7JQQILUV.js +0 -1
- package/dist/ui/SidebarToolsPage-MIYXKHF2.js +0 -1
- package/dist/ui/TasksPage-4VFQF243.js +0 -1
- package/dist/ui/TranslationsEditPage-RTTGTIGI.js +0 -1
- package/dist/ui/chunk-FFHV5S6A.js +0 -1
- package/dist/ui/chunk-FSVNOZ6F.js +0 -1
- package/dist/ui/chunk-GDXNSFLE.js +0 -1
- package/dist/ui/chunk-M3T56ZRP.js +0 -1
- package/dist/ui/chunk-MXGHX55S.js +0 -141
- package/dist/ui/chunk-QEE7XS6O.js +0 -1
- package/dist/ui/chunk-SRX7EWL4.js +0 -1
- package/dist/ui/chunk-TFB3VGWP.js +0 -1
- package/dist/ui/chunk-YLSRRNSE.js +0 -1
- package/dist/ui/chunk-ZN2Y5OUF.js +0 -3
- /package/dist/ui/{chunk-MXGHX55S.js.LEGAL.txt → chunk-4ALFT4ES.js.LEGAL.txt} +0 -0
- /package/dist/ui/{chunk-E76ECIOX.js.LEGAL.txt → chunk-NJMNOITA.js.LEGAL.txt} +0 -0
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{a as k}from"./chunk-3T4ZWQR4.js";import{c as z}from"./chunk-E76ECIOX.js";import{f as h}from"./chunk-5MV6XVGA.js";import{U as y,Y as A,Z as I}from"./chunk-TFB3VGWP.js";import{a as b}from"./chunk-O5P3CPJ4.js";import{f as u}from"./chunk-YLSRRNSE.js";import{Ga as e,Gc as N,U as p,V as g,Zc as C,a as n,c as v,da as S,e as w,j as V}from"./chunk-LROR6N3B.js";import{d as _}from"./chunk-KUCVLANF.js";V();V();function P(o){let r=o.docId,[i,d]=n("idle"),[c,f]=n(""),[s,l]=n(""),m=w(!1);async function x(){d("loading");try{let t=await I(r,{beforeVersion:o.beforeVersion,afterVersion:o.afterVersion});f(t),d("success")}catch(t){console.error(t),l(t instanceof Error?t.message:"Unknown error"),d("error")}}function D(){m.current||(m.current=!0,x())}let a;return i==="idle"||i==="loading"?a=e("div",{className:"AiSummary__loading",children:e(g,{size:"md",color:"gray"})}):i==="error"?a=e(b,{className:"AiSummary__content",size:"body-sm",color:"gray",children:["Failed to load AI summary.",s&&e(_,{children:[e("br",{}),s]})]}):c?a=e(z,{className:"AiSummary__content",code:c}):a=e(b,{className:"AiSummary__content",size:"body-sm",color:"gray",children:"No AI summary available for this draft yet."}),e("div",{className:u(o.className,"AiSummary"),children:e(p,{iconPosition:"right",onChange:()=>D(),disableIconRotation:!0,children:e(p.Item,{label:"Summarize changes",icon:e(N,{stroke:"1.5"}),iconPosition:"left",children:a})})})}function se(o){let r=o.left,i=o.right,[d,c]=n(!1),[f,s]=n(null),[l,m]=n(null),D=(window.__ROOT_CTX?.experiments||{}).ai&&r.docId===i.docId&&o.showAiSummary!==!1,a=h(T(f?.fields||{})),t=h(T(l?.fields||{})),F=!d&&f&&l&&a===t,M=`/cms/compare?left=${B(r)}&right=${B(i)}`;async function $(){c(!0);let[j,E]=await Promise.all([y(r.docId,r.versionId),y(i.docId,i.versionId)]);s(j),m(E),c(!1)}return v(()=>{$()},[]),d?e("div",{className:"DocDiffViewer DocDiffViewer--loading",children:e(g,{size:"md",color:"gray"})}):e(_,{children:[D&&e(P,{className:"DocDiffViewer__aiSummary",docId:r.docId,beforeVersion:String(r.versionId),afterVersion:String(i.versionId)}),e("div",{className:u(o.className,"DocDiffViewer"),children:[o.showExpandButton&&e("div",{className:"DocDiffViewer__expand",children:e(S,{component:"a",variant:"default",size:"xs",compact:!0,href:M,target:"_blank",children:"Open in new tab"})}),e("div",{className:"DocDiffViewer__header",children:[e("div",{className:"DocDiffViewer__header__label",children:[e("div",{className:"DocDiffViewer__header__label__title",children:[o.left.docId,"@",o.left.versionId]}),e("div",{className:"DocDiffViewer__header__label__meta",children:R(f)})]}),e("div",{className:"DocDiffViewer__header__label",children:[e("div",{className:"DocDiffViewer__header__label__title",children:[o.right.docId,"@",o.right.versionId]}),e("div",{className:"DocDiffViewer__header__label__meta",children:R(l)})]})]}),e("div",{className:"DocDiffViewer__diff",children:F?e("div",{className:"DocDiffViewer__identical",children:[e(C,{size:20}),e("span",{children:"No changes. Both versions are identical."})]}):e(k,{oldCode:a,newCode:t})})]})]})}function R(o){if(!o?.sys?.modifiedAt)return"never";let r=o.sys.modifiedAt.toDate();return`${new Intl.DateTimeFormat("en-US",{year:"numeric",month:"short",day:"numeric",hour:"2-digit",minute:"2-digit"}).format(r)} by ${o.sys.modifiedBy}`}function T(o){return A(o,{removeArrayKey:!0})}function B(o){return encodeURIComponent(`${o.docId}@${o.versionId}`).replaceAll("%2F","/").replaceAll("%40","@")}export{P as a,se as b};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{f as e}from"./chunk-YLSRRNSE.js";import{Ga as o}from"./chunk-LROR6N3B.js";function n(r){return o("div",{className:e(r.className,"Surface"),children:r.children})}export{n as a};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{a as te,f as se,g as U,h as oe}from"./chunk-ZN2Y5OUF.js";import{f as m}from"./chunk-KRNQ6L35.js";import{a as k,b as v,c as l,f as W,g as D,h as C,i as J,j as P,l as Y,n as B,o as j,p as M,q as w,r as Z,t as $,u as x,v as u,w as ee,x as T}from"./chunk-VD6G5NV4.js";import{k as V}from"./chunk-7SK47HHZ.js";function ne(e){return typeof e=="object"&&!Array.isArray(e)&&e!==null}function ie(e){return ne(e)&&Array.isArray(e.blocks)&&e.blocks.length>0}var X=new Map;function be(e){return X.get(e)||null}async function Ne(e){let t=be(e);if(t)return t;let s=A(e),o=(await B(s)).data();return Ae(e,o),o}function Ae(e,t){X.set(e,t)}function N(e){X.delete(e)}function O(e){for(let t of e)N(t)}function re(e){e||(e=6);let t=[],s="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789",n=s.length;for(let o=0;o<e;o++)t.push(s.charAt(Math.floor(Math.random()*n)));return t.join("")}var F=class extends Error{},ce=200,xe=/[/\\\u0000-\u001f]/;function R(){let e=window.__ROOT_CTX.rootConfig.projectId,t=window.firebase.db;return v(t,"Projects",e,"Assets")}var Re="root-cms:assetPicker:lastFolder";function de(){let e=window.__ROOT_CTX.rootConfig.projectId;return`${Re}:${e}`}function Ze(){try{return localStorage.getItem(de())||""}catch{return""}}function et(e){try{localStorage.setItem(de(),e||"")}catch{}}function G(e){let t=(e||"").trim();if(!t)throw new F("Name is required.");if(t.length>ce)throw new F(`Name is too long (max ${ce} chars).`);if(xe.test(t))throw new F("Name cannot contain slashes.");if(t==="."||t==="..")throw new F("Invalid name.");return t}function _(e,t){return e?`${e}/${t}`:t}function tt(e){return e?e.split("/").filter(Boolean):[]}function L(e){return`folder-${encodeURIComponent(e)}`}function fe(e){return e.sort((t,s)=>t.type!==s.type?t.type==="folder"?-1:1:(t.name||"").localeCompare(s.name||"",void 0,{numeric:!0,sensitivity:"base"}))}function ue(e){return!!e&&typeof e.name=="string"&&(e.type==="file"||e.type==="folder")}async function De(e){let t=R(),s=D(t,C("parent","==",e||"")),n=await j(s),o=[];return n.forEach(i=>{let r=i.data();ue(r)&&o.push(r)}),fe(o)}var ae=1e3;async function st(e){let t=R(),s;e?s=D(t,C("parent",">=",e),C("parent","<=",`${e}\uF8FF`),P(ae)):s=D(t,P(ae));let n=await j(s),o=[];return n.forEach(i=>{let r=i.data();ue(r)&&(!e||H(r.parent,e))&&o.push(r)}),fe(o)}function ot(e,t){return t?e===t?"":e.startsWith(`${t}/`)?e.slice(t.length+1):e:e}async function S(e){let t=l(R(),e),s=await B(t);return s.exists()?s.data():null}async function nt(e,t){let s=G(t),n=_(e,s),o=L(n),i=l(R(),o),r={id:o,type:"folder",parent:e||"",name:s,createdAt:u(),createdBy:window.firebase.user.email,modifiedAt:u(),modifiedBy:window.firebase.user.email};return await M(i,r,{merge:!0}),m("asset.folder_create",{metadata:{folder:n}}),await S(o)}async function it(e){let t=z(e.file),s=G(e.name||t.filename||_e(t.src)),n=re(12),o=l(R(),n);return await M(o,{id:n,type:"file",parent:e.parent||"",name:s,file:t,createdAt:u(),createdBy:window.firebase.user.email,modifiedAt:u(),modifiedBy:window.firebase.user.email}),m("asset.upload",{metadata:{assetId:n,name:s}}),await S(n)}async function rt(e,t){let s=G(t);if(s===e.name)return;if(e.type==="folder"){let o=_(e.parent,e.name),i=_(e.parent,s);await me(e,i,s,e.parent),m("asset.rename",{metadata:{from:o,to:i}});return}let n=l(R(),e.id);await w(n,{name:s,modifiedAt:u(),modifiedBy:window.firebase.user.email}),m("asset.rename",{metadata:{assetId:e.id,from:e.name,to:s}})}async function ct(e,t){let s=t||"";if(s===e.parent)return;if(e.type==="folder"){let o=_(e.parent,e.name),i=_(s,e.name);if(i===o||H(i,o))throw new Error("Cannot move a folder into itself.");await me(e,i,e.name,s),m("asset.move",{metadata:{from:o,to:i}});return}let n=l(R(),e.id);await w(n,{parent:s,modifiedAt:u(),modifiedBy:window.firebase.user.email}),m("asset.move",{metadata:{assetId:e.id,from:e.parent,to:s}})}function H(e,t){return e===t||e.startsWith(`${t}/`)}async function me(e,t,s,n){let o=_(e.parent,e.name),i=R(),r=window.firebase.db,c=D(i,C("parent",">=",o),C("parent","<=",`${o}\uF8FF`)),a=await j(c),p=[];a.forEach(y=>{let b=y.data();H(b.parent,o)&&p.push(b)});let f=T(r),g=0,h=async()=>{g+=1,g>=400&&(await f.commit(),f=T(r),g=0)},d=L(t);f.set(l(i,d),{id:d,type:"folder",parent:n,name:s,createdAt:e.createdAt??u(),createdBy:e.createdBy??window.firebase.user.email,modifiedAt:u(),modifiedBy:window.firebase.user.email}),await h();for(let y of p){let b=t+y.parent.slice(o.length);if(y.type==="folder"){let I=_(b,y.name);f.set(l(i,L(I)),{...y,id:L(I),parent:b,modifiedAt:u(),modifiedBy:window.firebase.user.email}),await h(),f.delete(l(i,y.id)),await h()}else f.update(l(i,y.id),{parent:b,modifiedAt:u(),modifiedBy:window.firebase.user.email}),await h()}d!==e.id&&(f.delete(l(i,e.id)),g+=1),g>0&&await f.commit()}async function at(e){if(e.type==="folder"){let t=_(e.parent,e.name);if((await De(t)).length>0)throw new Error("Folder is not empty.")}await Z(l(R(),e.id)),m("asset.delete",{metadata:{assetId:e.id,name:e.name}})}async function lt(e,t){let s=z(t);!s.alt&&e.file?.alt&&(s.alt=e.file.alt),e.file?.altDisabled&&(s.altDisabled=!0);let n=l(R(),e.id),o={file:s,modifiedAt:u(),modifiedBy:window.firebase.user.email},i=V(s.filename||s.src||""),r=Ce(e.name,i);return r!==e.name&&(o.name=r),await w(n,o),m("asset.replace",{metadata:{assetId:e.id,name:e.name}}),await S(e.id)}function Ce(e,t){let s=(e||"").lastIndexOf(".");return!t||s<=0||V(e)===t?e:`${e.slice(0,s)}.${t}`}async function dt(e,t){let s=l(R(),e.id);return await w(s,{"file.alt":t||"",modifiedAt:u(),modifiedBy:window.firebase.user.email}),await S(e.id)}async function ft(e,t){let s=l(R(),e.id);return await w(s,{"file.altDisabled":t?!0:x(),modifiedAt:u(),modifiedBy:window.firebase.user.email}),m("asset.alt_disabled",{metadata:{assetId:e.id,name:e.name,disabled:t}}),await S(e.id)}function Te(e){let t={...z(e.file),assetId:e.id};return t.altDisabled&&(t.alt=""),t}function K(e){let t=new Set;return q(e,t),Array.from(t).sort()}function q(e,t){if(!(!e||typeof e!="object")){if(Array.isArray(e)){for(let s of e)q(s,t);return}if(typeof e.toMillis!="function"){if(Q(e)){t.add(e.assetId);return}for(let s of Object.keys(e))q(e[s],t)}}}function Q(e){return typeof e?.assetId=="string"&&typeof e?.src=="string"}function le(e){if(!e||typeof e!="object")return!1;if(Array.isArray(e)){for(let t of e)if(le(t))return!0;return!1}if(typeof e.toMillis=="function")return!1;if(Q(e))return!0;for(let t of Object.keys(e))if(le(e[t]))return!0;return!1}async function Be(e){let t=window.__ROOT_CTX.rootConfig.projectId,s=window.firebase.db,n=Object.keys(window.__ROOT_CTX.collections||{});return(await Promise.all(n.map(async r=>{let c=v(s,"Projects",t,"Collections",r,"Drafts"),a=D(c,C("sys.assets","array-contains",e)),p=await j(a),f=[];return p.forEach(g=>{f.push(g.data())}),f}))).flat().sort((r,c)=>r.id.localeCompare(c.id))}async function ut(e,t={}){let s=window.__ROOT_CTX.rootConfig.projectId,n=window.firebase.db,o=t.docs??await Be(e.id),i=[],r=[];for(let c of o){let a=[];if(pe(c.fields,e.id,"fields",a),a.length===0)continue;let p={};for(let d of a)p[d.path]=je(e,d.value,t.previousFile);p["sys.modifiedAt"]=u(),p["sys.modifiedBy"]=window.firebase.user.email;let[f,g]=c.id.split("/"),h=l(n,"Projects",s,"Collections",f,"Drafts",g);try{await w(h,p),i.push(c.id)}catch(d){console.error(`failed to sync asset ${e.id} to ${c.id}:`,d),r.push(c.id)}}return i.length>0&&(O(i),m("asset.sync",{metadata:{assetId:e.id,name:e.name,docIds:i}})),{updatedDocIds:i,failedDocIds:r}}function pe(e,t,s,n){if(!(!e||typeof e!="object")&&!Array.isArray(e)&&typeof e.toMillis!="function"){if(Q(e)){e.assetId===t&&n.push({path:s,value:e});return}for(let o of Object.keys(e))pe(e[o],t,`${s}.${o}`,n)}}function je(e,t,s){let n=Te(e);if(!e.file?.altDisabled){let i=s?.alt??e.file?.alt??"",r=t?.alt||"";r&&r!==i&&(n.alt=r)}let o=s?.canvasBgColor??e.file?.canvasBgColor;return t?.canvasBgColor&&t.canvasBgColor!==o&&(n.canvasBgColor=t.canvasBgColor),n}function z(e){let t={};return Object.entries(e||{}).forEach(([s,n])=>{n!==void 0&&(t[s]=n)}),t}function _e(e){return(e||"").split("?")[0].split("/").pop()||"untitled"}async function Ct(e){let t=window.__ROOT_CTX.rootConfig.projectId,s=window.firebase.db,[n,o]=e.split("/"),i=l(s,"Projects",t,"Collections",n,"Drafts",o),r=l(s,"Projects",t,"Collections",n,"Published",o),c=l(s,"Projects",t,"Collections",n,"Scheduled",o),a=T(s);a.delete(i),a.delete(r),a.delete(c),await a.commit(),console.log(`deleted doc: ${e}`),m("doc.delete",{metadata:{docId:e}})}async function Tt(e,t){await ke([e],t)}async function ke(e,t){if(e.length===0){console.log("no docs to publish");return}let s=window.firebase.db;if(e.length>100)throw new Error("publish docs exceeds limit of 100 docs. break up your request into multiple calls.");let n=await Oe(e),o=t?.batch||T(s),i=["published"];t?.releaseId&&i.push(`release:${t.releaseId}`),e.forEach(r=>{let c=n[r];if(!c)throw new Error(`doc does not exist: ${r}`);ve(o,r,c,i,t?.publishMessage)}),await o.commit(),e.length===1?console.log(`published ${e[0]}`):console.log(`published ${e.length} docs: ${e.join(", ")}`);for(let r of e){let c={docId:r};t?.publishMessage&&(c.publishMessage=t.publishMessage),m("doc.publish",{metadata:c})}O(e)}function ve(e,t,s,n,o){if(Ie(s))throw new Error(`publishing is locked for doc: ${s.id}`);if(Fe(s))throw new Error(`cannot publish archived doc: ${s.id}`);let i=window.__ROOT_CTX.rootConfig.projectId,r=window.firebase.db,[c,a]=t.split("/"),p=l(r,"Projects",i,"Collections",c,"Drafts",a),f=l(r,"Projects",i,"Collections",c,"Scheduled",a),g=l(r,"Projects",i,"Collections",c,"Published",a),h={...s},d=h.sys??{};d.modifiedAt=u(),d.modifiedBy=window.firebase.user.email,d.publishedAt=u(),d.publishedBy=window.firebase.user.email,d.firstPublishedAt??=u(),d.firstPublishedBy??=window.firebase.user.email,delete d.scheduledAt,delete d.scheduledBy,e.update(p,{sys:d}),e.set(g,{...h,sys:d}),e.delete(f);let y=l(r,"Projects",i,"Collections",c,"Drafts",a,"Versions",String(Date.now())),b={id:t,collection:c,slug:a,fields:h.fields||{},sys:d};n?.length&&(b.tags=n),o&&(b.publishMessage=o),e.set(y,b)}async function Bt(e,t,s){let n=window.__ROOT_CTX.rootConfig.projectId,o=window.firebase.db,[i,r]=e.split("/"),c=l(o,"Projects",n,"Collections",i,"Drafts",r),a=l(o,"Projects",n,"Collections",i,"Scheduled",r);await $(o,async f=>{let g=await f.get(c);if(!g.exists())throw new Error(`${c.id} does not exist`);let h={...g.data()},d=h.sys??{};d.modifiedAt=u(),d.modifiedBy=window.firebase.user.email,d.scheduledAt=k.fromMillis(t),d.scheduledBy=window.firebase.user.email,f.update(c,{sys:d});let y={...h,sys:d};s?.publishMessage&&(y.scheduledPublishMessage=s.publishMessage),f.set(a,y)}),console.log(`saved ${a.id}`);let p={docId:e,scheduledAt:t};s?.publishMessage&&(p.publishMessage=s.publishMessage),m("doc.schedule",{metadata:p})}async function jt(e){let t=window.__ROOT_CTX.rootConfig.projectId,s=window.firebase.db,[n,o]=e.split("/"),i=l(s,"Projects",t,"Collections",n,"Drafts",o),r=l(s,"Projects",t,"Collections",n,"Scheduled",o),c=l(s,"Projects",t,"Collections",n,"Published",o),a=T(s);a.update(i,{"sys.modifiedAt":u(),"sys.modifiedBy":window.firebase.user.email,"sys.publishedAt":x(),"sys.publishedBy":x(),"sys.firstPublishedAt":x(),"sys.firstPublishedBy":x()}),a.delete(r),a.delete(c),await a.commit(),console.log(`unpublished ${e}`),m("doc.unpublish",{metadata:{docId:e}}),N(e)}async function _t(e){let t=window.__ROOT_CTX.rootConfig.projectId,s=window.firebase.db,[n,o]=e.split("/"),i=l(s,"Projects",t,"Collections",n,"Drafts",o),r=l(s,"Projects",t,"Collections",n,"Published",o);await $(s,async c=>{let a=await c.get(r);if(!a.exists())throw new Error(`${r.id} does not exist`);let p=a.data();c.set(i,p)}),console.log(`reverted draft ${e}`),m("doc.revert",{metadata:{docId:e}})}async function kt(e){let t=window.__ROOT_CTX.rootConfig.projectId,s=window.firebase.db,[n,o]=e.split("/"),i=l(s,"Projects",t,"Collections",n,"Drafts",o),r=l(s,"Projects",t,"Collections",n,"Scheduled",o),c=T(s);c.update(i,{"sys.modifiedAt":u(),"sys.modifiedBy":window.firebase.user.email,"sys.scheduledAt":x(),"sys.scheduledBy":x()}),c.delete(r),await c.commit(),console.log(`unscheduled ${e}`),m("doc.unschedule",{metadata:{docId:e}})}async function vt(e,t){let s={lockedAt:u(),lockedBy:window.firebase.user.email,reason:t.reason||`Locked by ${window.firebase.user.email}.`};t.until&&(s.until=k.fromMillis(t.until));let n=A(e);await w(n,{"sys.publishingLocked":s});let i={docId:e,reason:t.reason};t.until&&(i.until=t.until),m("doc.lock_publishing",{metadata:i})}async function Ft(e){let t=A(e),s={"sys.publishingLocked":x()};await w(t,s),m("doc.unlock_publishing",{metadata:{docId:e}})}async function It(e){let t=A(e);await w(t,{"sys.archivedAt":u(),"sys.archivedBy":window.firebase.user.email}),m("doc.archive",{metadata:{docId:e}})}async function Pt(e){let t=A(e);await w(t,{"sys.archivedAt":x(),"sys.archivedBy":x()}),m("doc.unarchive",{metadata:{docId:e}})}function Fe(e){return!!e?.sys?.archivedAt}function Mt(e){let t=k.now().toMillis();return(e?.sys?.scheduledAt?.toMillis()||0)>t}function Ie(e){if(e?.sys?.publishingLocked){if(e.sys.publishingLocked.until){let t=k.now().toMillis(),s=e.sys.publishingLocked.until.toMillis();return t<s}return!0}return!1}async function St(e,t,s){let n=A(e),o=await B(n);if(!o.exists())throw new Error(`doc ${e} does not exist`);let i=o.data(),r=i.fields??{},c=i.sys?.locales;await Pe(t,{fields:r,locales:c,overwrite:s?.overwrite})}async function Pe(e,t){let[s,n]=e.split("/"),o=A(e),i=await B(o);if(i.exists()&&!t?.overwrite)throw new Error(`${e} already exists`);let r=t?.fields??{},c={id:e,collection:s,slug:n,sys:{createdAt:u(),createdBy:window.firebase.user.email,modifiedAt:u(),modifiedBy:window.firebase.user.email,locales:t?.locales??["en"]},fields:r};if(i.exists()&&t?.overwrite){let p=i.data();c.sys={...p.sys,locales:t?.locales??p.sys.locales,modifiedAt:u(),modifiedBy:window.firebase.user.email}}let a=K(r);a.length>0?c.sys.assets=a:delete c.sys.assets,await M(o,c),m("doc.create",{metadata:{docId:e}})}async function Ot(e,t,s){let o=(window.__ROOT_CTX.rootConfig.i18n||{}).locales||["en"];function i(d){for(let y of o)if(String(y).toLowerCase()===d.toLowerCase())return y;return null}let r={};for(let d of t){if(!d.source)continue;let y={source:U(d.source)};Object.entries(d).forEach(([I,we])=>{if(I==="source")return;let E=i(I);E&&!oe(E)&&(y[E]=U(we||""))});let b=await se(y.source);r[b]=y}let a=[e.split("/")[0],e];s?.tags&&a.push(...s.tags);let p=te(),f=window.firebase.db,g=T(f),h=0;for(let d in r){let y=r[d],b=l(p,d);g.set(b,{...y,tags:ee(...a)},{merge:!0}),h+=1,h>=500&&(await g.commit(),g=T(f),console.log(`saved ${h} strings`),h=0)}return h>0&&(await g.commit(),console.log(`saved ${h} strings`)),m("doc.import_translations",{metadata:{docId:e,...s?.actionMetadata},links:s?.actionLinks}),r}function A(e){let t=window.__ROOT_CTX.rootConfig.projectId,s=window.firebase.db,[n,o]=e.split("/");return l(s,"Projects",t,"Collections",n,"Drafts",o)}function Me(e){let t=window.__ROOT_CTX.rootConfig.projectId,s=window.firebase.db,[n,o]=e.split("/");return l(s,"Projects",t,"Collections",n,"Published",o)}function Se(e,t){let s=window.__ROOT_CTX.rootConfig.projectId,n=window.firebase.db,[o,i]=e.split("/");return l(n,"Projects",s,"Collections",o,"Drafts",i,"Versions",t)}async function Oe(e){let t=window.__ROOT_CTX.rootConfig.projectId,s=window.firebase.db,n={};e.forEach(i=>{let[r,c]=i.split("/");r in n?n[r].push(c):n[r]=[c]});let o={};return await Promise.all(Object.entries(n).map(async([i,r])=>{let c=v(s,"Projects",t,"Collections",i,"Drafts"),a=D(c,C(W(),"in",r));(await j(a)).forEach(f=>{let g=`${i}/${f.id}`;o[g]=f.data()})})),o}async function Lt(e,t){let s=window.firebase.db,n=A(e),o=v(s,n.path,"Versions"),i=t?.limit??50,r=D(o,J("sys.modifiedAt","desc"),P(i));t?.tags&&(r=D(r,C("tags","array-contains-any",t.tags))),t?.cursor&&(r=D(r,Y(t.cursor)));let c=await j(r),a=[],p=null;return c.forEach(f=>{let g={...f.data(),_versionId:f.id};a.push(g),p=f}),{versions:a,lastDoc:p,hasMore:c.size===i}}async function Et(e,t){let s=A(e),n={"sys.modifiedAt":u(),"sys.modifiedBy":window.firebase.user.email,"sys.assets":K(t.fields||{}),fields:t.fields||{}};await w(s,n),m("doc.restore_version",{metadata:{docId:e,versionModifiedAt:t.sys?.modifiedAt,versionModifiedBy:t.sys?.modifiedBy}})}async function $t(e,t){let s;t==="draft"?s=A(e):t==="published"?s=Me(e):s=Se(e,t);let n=await B(s);return n.exists()?n.data():null}async function Vt(e,t){if(!t?.spreadsheetId)throw new Error("no spreadsheet id");let s=A(e),n={"sys.l10nSheet":{spreadsheetId:t.spreadsheetId,gid:t.gid||0,linkedAt:u(),linkedBy:window.firebase.user.email}};await w(s,n),m("doc.link_sheet",{metadata:{docId:e,sheetId:t}})}async function Ut(e){let t=A(e),s={"sys.l10nSheet":x()};await w(t,s),m("doc.unlink_sheet",{metadata:{docId:e}})}async function Xt(e){let t=A(e),o=(await B(t)).data()?.sys?.l10nSheet||{};return o?.spreadsheetId?{spreadsheetId:o.spreadsheetId,gid:o.gid||0}:null}function ge(e,t){let s={};for(let n in e){let o=e[n];if(he(o))if(o.toMillis)s[n]=o.toMillis();else if(Object.hasOwn(o,"_array")&&Array.isArray(o._array)){let i=o._array.map(r=>{let c={...ge(o[r]||{},t),_arrayKey:r};return t?.removeArrayKey&&delete c._arrayKey,c});s[n]=i}else s[n]=ge(o,t);else s[n]=o}return s}async function Nt(e,t){let s=await window.fetch("/cms/api/ai.diff",{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify({docId:e,beforeVersion:t?.beforeVersion||"published",afterVersion:t?.afterVersion||"draft"})}),n=await s.text(),o=null;try{o=JSON.parse(n)}catch{}if(!s.ok||o?.success===!1){let i=o&&(o.error||o.message)||n;throw new Error(i||"Failed to fetch AI summary")}return typeof o?.summary=="string"?o.summary:typeof o?.data?.summary=="string"?o.data.summary:!o&&n?n:""}function he(e){return typeof e=="object"&&!Array.isArray(e)&&e!==null}function qt(e){let[t,s]=e.split("/");return{id:e,collection:t,slug:s}}function ye(e){if(Le(e))return k.fromMillis(e.seconds*1e3);if(ie(e))return e.time=Date.now(),e;if(Array.isArray(e))return e.map(t=>ye(t));if(he(e)){let t={};return Object.keys(e).forEach(s=>{t[s]=ye(e[s])}),t}return e}function Le(e){return e?.type==="firestore/timestamp/1.0"}export{ie as a,Ne as b,Ae as c,re as d,Ze as e,et as f,_ as g,tt as h,De as i,st as j,ot as k,S as l,nt as m,it as n,rt as o,ct as p,at as q,lt as r,Ce as s,dt as t,ft as u,Te as v,K as w,le as x,Be as y,ut as z,Ct as A,Tt as B,ke as C,Bt as D,jt as E,_t as F,kt as G,vt as H,Ft as I,It as J,Pt as K,Fe as L,Mt as M,Ie as N,St as O,Pe as P,Ot as Q,Oe as R,Lt as S,Et as T,$t as U,Vt as V,Ut as W,Xt as X,ge as Y,Nt as Z,qt as _,ye as $};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{a as q,b as j,d as B,e as f,g as O,i as U,j as H}from"./chunk-LROR6N3B.js";import{a as g,b as _,f as K,i as k,j as D,k as M}from"./chunk-KUCVLANF.js";M();H();var d,R;function V(e){return!R||(typeof R=="string"?e.startsWith(R):R.test(e))}function ee(e,t){let r="";if(d=void 0,t&&t.type==="click"){if(t.ctrlKey||t.metaKey||t.altKey||t.shiftKey||t.button!==0)return e;let n=t.composedPath().find(i=>i.nodeName=="A"&&i.href),o=n&&n.getAttribute("href");if(!n||n.origin!=location.origin||/^#/.test(o)||!/^(_?self)?$/i.test(n.target)||!V(o)||n.download)return e;d=!0,t.preventDefault(),r=n.href.replace(location.origin,"")}else t&&t.url?(d=!t.replace,r=t.url):r=location.pathname+location.search;return d===!0?history.pushState(null,"",r):d===!1&&history.replaceState(null,"",r),r}var te=(e,t,r={})=>{e=e.split("/").filter(Boolean),t=(t||"").split("/").filter(Boolean),r.params||(r.params={});for(let n=0,o,i;n<Math.max(e.length,t.length);n++){let[,s,a,l]=(t[n]||"").match(/^(:?)(.*?)([+*?]?)$/);if(o=e[n],!(!s&&a==o)){if(!s&&o&&l=="*"){r.rest="/"+e.slice(n).map(decodeURIComponent).join("/");break}if(!s||!o&&l!="?"&&l!="*")return;if(i=l=="+"||l=="*",i?o=e.slice(n).map(decodeURIComponent).join("/")||void 0:o&&(o=decodeURIComponent(o)),r.params[a]=o,a in r||(r[a]=o),i)break}}return r};function E(e){let[t,r]=j(ee,e.url||location.pathname+location.search);e.scope&&(R=e.scope);let n=d===!0,o=O(()=>{let i=new URL(t,location.origin),s=i.pathname.replace(/\/+$/g,"")||"/";return{url:t,path:s,query:Object.fromEntries(i.searchParams),route:(a,l)=>r({url:a,replace:l}),wasPush:n}},[t]);return B(()=>(addEventListener("click",r),addEventListener("popstate",r),()=>{removeEventListener("click",r),removeEventListener("popstate",r)}),[]),_(E.ctx.Provider,{value:o},e.children)}var re=Promise.resolve();function T(e){let[t,r]=j(c=>c+1,0),{url:n,query:o,wasPush:i,path:s}=J();if(!n)throw new Error("preact-iso's <Router> must be used within a <LocationProvider>, see: https://github.com/preactjs/preact-iso#locationprovider");let{rest:a=s,params:l={}}=U($),S=f(!1),z=f(s),C=f(0),u=f(),p=f(),h=f(),b=f(!1),P=f();P.current=!1;let A,I,m;K(e.children).some(c=>{if(te(a,c.props.path,m={...c.props,path:a,query:o,params:Object.assign({},l),rest:""}))return A=k(c,m);c.props.default&&(I=k(c,m))});let v=A||I,G=u.current&&u.current.__u&x&&u.current.__u&L,Q=u.current&&u.current.__h,X=O(()=>{p.current=u.current,u.current=_($.Provider,{value:m},v);let c=p.current&&p.current.props.children;return!c||!v||v.type!==c.type||v.props.component!==c.props.component?(this.__v&&this.__v.__k&&this.__v.__k.reverse(),C.current++,!0):!1},[n,JSON.stringify(m)]);G?(u.current.__u|=x,u.current.__u|=L):Q&&(u.current.__h=!0);let Z=p.current;return p.current=null,this.__c=(c,y)=>{P.current=!0,p.current=Z,e.onLoadStart&&e.onLoadStart(n),S.current=!0;let N=C.current;c.then(()=>{N===C.current&&(p.current=null,u.current&&(y.__h&&(u.current.__h=y.__h),y.__u&L&&(u.current.__u|=L),y.__u&x&&(u.current.__u|=x)),re.then(r))})},B(()=>{let c=this.__v&&this.__v.__e;if(P.current){!b.current&&!h.current&&(h.current=c);return}!b.current&&h.current&&(h.current!==c&&h.current.remove(),h.current=null),b.current=!0,z.current!==s&&(i&&scrollTo(0,0),e.onRouteChange&&e.onRouteChange(n),z.current=s),e.onLoadEnd&&S.current&&e.onLoadEnd(n),S.current=!1},[s,i,t]),X?[_(w,{r:u}),_(w,{r:p})]:_(w,{r:u})}var x=32,L=128,w=({r:e})=>e.current;T.Provider=E;E.ctx=D({});var $=D({}),ne=e=>_(e.component,e),J=()=>U(E.ctx);M();H();var W=g.__b;g.__b=e=>{e.type&&e.type._forwarded&&e.ref&&(e.props.ref=e.ref,e.ref=null),W&&W(e)};function F(e){let t,r,n=()=>e().then(i=>r=i&&i.default||i),o=i=>{let[,s]=q(0),a=f(r);if(t||(t=n()),r!==void 0)return _(r,i);throw a.current||(a.current=t.then(()=>s(1))),t};return o.preload=()=>(t||(t=n()),t),o._forwarded=!0,o}var Y=g.__e;g.__e=(e,t,r)=>{if(e&&e.then){let n=t;for(;n=n.__;)if(n.__c&&n.__c.__c)return t.__e==null&&(t.__c.__z=[r.__e],t.__e=r.__e,t.__k=r.__k),t.__k||(t.__k=[]),n.__c.__c(e,t)}Y&&Y(e,t,r)};M();function ve(...e){return e.filter(t=>!!t).join(" ")||void 0}export{E as a,T as b,ne as c,J as d,F as e,ve as f};
|
|
@@ -1,3 +0,0 @@
|
|
|
1
|
-
import{a as C,f as h}from"./chunk-KRNQ6L35.js";import{b as m,c as g,g as p,h as b,n as y,o as x,q as _,w as f,x as u}from"./chunk-VD6G5NV4.js";function S(){let t=window.__ROOT_CTX.rootConfig.projectId,n=window.firebase.db;return m(n,"Projects",t,"Translations")}async function $(t){let n=S(),s=t?.tags?p(n,b("tags","array-contains-any",t.tags)):p(n),a=await x(s),e={};return a.forEach(r=>{let o=r.id;e[o]=r.data()}),e}async function k(t){let n=window.__ROOT_CTX.rootConfig.projectId,s=window.firebase.db,a=g(s,"Projects",n,"Translations",t);return(await y(a)).data()}async function H(t,n){let s=window.__ROOT_CTX.rootConfig.projectId,a=window.firebase.db,e=g(a,"Projects",s,"Translations",t),r={};for(let o in n){if(o==="tags"){r.tags=n.tags;continue}let c=O(o);c&&(r[c]=n[o])}console.log("updating translations: ",r),await _(e,r),h("translations.save",{metadata:{hash:t},throttle:5*C.minute,throttleId:t})}async function U(t,n){let s=n?.mode??"replace",a=window.__ROOT_CTX.rootConfig.projectId,e=window.firebase.db,r=500;for(let o=0;o<t.length;o+=r){let c=u(e);t.slice(o,o+r).forEach(({hash:l,tags:d})=>{let i=g(e,"Projects",a,"Translations",l);s==="union"?c.update(i,{tags:f(...d)}):c.update(i,{tags:d})}),await c.commit()}}async function A(t){return P(j(t))}async function P(t){let s=new TextEncoder().encode(t),a=await crypto.subtle.digest("SHA-1",s);return Array.from(new Uint8Array(a)).map(o=>o.toString(16).padStart(2,"0")).join("")}function j(t){return String(t).trim().split(`
|
|
2
|
-
`).map(s=>X(s)).join(`
|
|
3
|
-
`)}function X(t){return String(t).trimEnd().replace(/ $/,"")}var R=new Map;function L(t){let n=R.get(t);if(n)return n;let s=t.replace(/[.+^${}()|[\]\\]/g,"\\$&").replace(/\*/g,".*").replace(/\?/g,"."),a=new RegExp(`^${s}$`,"i");return R.set(t,a),a}function q(t){return(window.__ROOT_CTX.excludeLocalesFromTranslations||[]).some(s=>L(s).test(t))}function O(t){let s=(window.__ROOT_CTX.rootConfig.i18n||{}).locales||["en"];for(let a of s)if(String(a).toLowerCase()===t.toLowerCase())return a;return null}async function B(t,n){let s=window.__ROOT_CTX.rootConfig.projectId,a=window.firebase.db,e=500,r=await Promise.all(t.map(async o=>({hash:await A(o.source),locales:o.locales,source:o.source})));for(let o=0;o<r.length;o+=e){let c=u(a),w=r.slice(o,o+e);for(let l of w){let d=g(a,"Projects",s,"Translations",l.hash),i={source:l.source};for(let[E,I]of Object.entries(l.locales)){let T=O(E);T&&(i[T]=j(I))}n?.tags?.length&&(i.tags=f(...n.tags)),c.set(d,i,{merge:!0})}await c.commit()}h("translations.batch_save",{metadata:{count:t.length}})}export{S as a,$ as b,k as c,H as d,U as e,A as f,j as g,q as h,B as i};
|
|
File without changes
|
|
File without changes
|