@blinkk/root-cms 3.0.1 → 3.0.3

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 (161) hide show
  1. package/dist/app.js +5 -5
  2. package/dist/{chunk-KGAUXTJ6.js → chunk-7Z5IRD2G.js} +176 -83
  3. package/dist/{chunk-2BSW7SIH.js → chunk-N4K6ICFR.js} +4 -4
  4. package/dist/{chunk-BGTUWIV6.js → chunk-PNLLZXVY.js} +4 -4
  5. package/dist/{chunk-C245C557.js → chunk-RXWDB3K4.js} +3 -3
  6. package/dist/{chunk-XLX37FRL.js → chunk-TEKMLYXS.js} +3 -4
  7. package/dist/cli/cli.d.ts +12 -0
  8. package/dist/cli/docs.d.ts +49 -0
  9. package/dist/cli/export.d.ts +11 -0
  10. package/dist/cli/generate-types.d.ts +6 -0
  11. package/dist/cli/import.d.ts +13 -0
  12. package/dist/cli/init-firebase.d.ts +7 -0
  13. package/dist/cli/utils.d.ts +27 -0
  14. package/dist/cli.js +10 -10
  15. package/dist/client.js +1 -1
  16. package/dist/core/ai-tools.d.ts +156 -0
  17. package/dist/core/ai.d.ts +330 -0
  18. package/dist/core/api.d.ts +21 -0
  19. package/dist/core/app.d.ts +16 -0
  20. package/dist/core/checks-translations.d.ts +13 -0
  21. package/dist/core/checks.d.ts +48 -0
  22. package/dist/core/client.d.ts +715 -0
  23. package/dist/core/core.d.ts +5 -0
  24. package/dist/core/cron.d.ts +19 -0
  25. package/dist/core/csv.d.ts +5 -0
  26. package/dist/core/functions.d.ts +9 -0
  27. package/dist/core/plugin.d.ts +357 -0
  28. package/dist/{project.d.ts → core/project.d.ts} +8 -12
  29. package/dist/core/richtext.d.ts +101 -0
  30. package/dist/{core.d.ts → core/route.d.ts} +13 -66
  31. package/dist/core/runtime.d.ts +46 -0
  32. package/dist/{schema-Db_xODoi.d.ts → core/schema.d.ts} +47 -100
  33. package/dist/core/search-extract.d.ts +70 -0
  34. package/dist/core/search-index.d.ts +182 -0
  35. package/dist/core/search-query.d.ts +68 -0
  36. package/dist/core/security.d.ts +6 -0
  37. package/dist/core/server-version.d.ts +5 -0
  38. package/dist/core/services-notifications.d.ts +57 -0
  39. package/dist/core/services.d.ts +44 -0
  40. package/dist/core/sse.d.ts +10 -0
  41. package/dist/core/translations-manager.d.ts +187 -0
  42. package/dist/core/translations.d.ts +83 -0
  43. package/dist/core/url-safety.d.ts +19 -0
  44. package/dist/core/validation.d.ts +30 -0
  45. package/dist/core/values.d.ts +9 -0
  46. package/dist/core/versions.d.ts +48 -0
  47. package/dist/core.js +1 -1
  48. package/dist/edit-M4PN4SGX.js +7 -0
  49. package/dist/functions.js +4 -4
  50. package/dist/{generate-types-SPV7I3A5.js → generate-types-JWIG4QVI.js} +1 -1
  51. package/dist/plugin.js +124 -129
  52. package/dist/shared/marshal.d.ts +68 -0
  53. package/dist/shared/objects.d.ts +9 -0
  54. package/dist/shared/richtext.d.ts +74 -0
  55. package/dist/shared/safe-json.d.ts +11 -0
  56. package/dist/shared/sanitize.d.ts +12 -0
  57. package/dist/shared/slug.d.ts +19 -0
  58. package/dist/shared/sse.d.ts +16 -0
  59. package/dist/shared/strings.d.ts +23 -0
  60. package/dist/ui/AIPage-2LUC2PWC.js +1 -0
  61. package/dist/ui/AssetsPage-PODV4QAB.js +1 -0
  62. package/dist/ui/CollectionPage-4DMKW5YB.js +1 -0
  63. package/dist/ui/ComparePage-JMJE5A5Y.js +1 -0
  64. package/dist/ui/DataPage-MVLZT2BU.js +1 -0
  65. package/dist/ui/DataSourcePage-4RPBXRI2.js +1 -0
  66. package/dist/ui/DocTranslationsPage-XJSPKGVX.js +1 -0
  67. package/dist/ui/DocumentPage-R2PVNG24.js +1 -0
  68. package/dist/ui/EditDataSourcePage-3SHAARNL.js +1 -0
  69. package/dist/ui/EditReleasePage-G5VW2OGW.js +1 -0
  70. package/dist/ui/ImageEditorDialog-4H665KK2.js +81 -0
  71. package/dist/ui/ImageEditorDialog-4H665KK2.js.LEGAL.txt +17 -0
  72. package/dist/ui/LogsPage-K6KYEG2P.js +1 -0
  73. package/dist/ui/NewDataSourcePage-O2VQEOJG.js +1 -0
  74. package/dist/ui/NewReleasePage-RSVS32RZ.js +1 -0
  75. package/dist/ui/NotFoundPage-ZYD5ILG6.js +1 -0
  76. package/dist/ui/ProjectPage-X3YQBWL4.js +1 -0
  77. package/dist/ui/ReleasePage-FJHHXNNB.js +1 -0
  78. package/dist/ui/ReleasesPage-VGWIBNEZ.js +1 -0
  79. package/dist/ui/SettingsPage-C4RXOQ6T.js +1 -0
  80. package/dist/ui/SidebarToolsPage-ZBOKPEMP.js +1 -0
  81. package/dist/ui/TaskPage-BQ4OX5WN.js +1 -0
  82. package/dist/ui/TasksPage-3IGQYVYS.js +1 -0
  83. package/dist/ui/TranslationsArbPage-GGHCWPQL.js +2 -0
  84. package/dist/ui/TranslationsEditPage-E2BCMKYV.js +1 -0
  85. package/dist/ui/TranslationsPage-MC4O4ZNI.js +162 -0
  86. package/dist/ui/ai-tools-5E5ELLZX.js +1 -0
  87. package/dist/ui/chunk-3IYZCUPI.js +1 -0
  88. package/dist/ui/chunk-4KE2SZKH.js +1 -0
  89. package/dist/ui/chunk-4W73RW5I.js +1 -0
  90. package/dist/ui/chunk-54DVDYU6.js +1 -0
  91. package/dist/ui/chunk-5MV6XVGA.js +1 -0
  92. package/dist/ui/chunk-62UWGWON.js +1 -0
  93. package/dist/ui/chunk-6IFGKSIE.js +1 -0
  94. package/dist/ui/chunk-767BAQ53.js +1 -0
  95. package/dist/ui/chunk-AFWBSIPL.js +1 -0
  96. package/dist/ui/chunk-AL3TN2KI.js +1 -0
  97. package/dist/ui/chunk-B6BLDN24.js +141 -0
  98. package/dist/ui/chunk-B6BLDN24.js.LEGAL.txt +106 -0
  99. package/dist/ui/chunk-BZIRGB4W.js +1 -0
  100. package/dist/ui/chunk-C5NH23G4.js +3 -0
  101. package/dist/ui/chunk-CGCKJFL4.js +1 -0
  102. package/dist/ui/chunk-DEGMKEHP.js +1 -0
  103. package/dist/ui/chunk-DTMZLUNY.js +15 -0
  104. package/dist/ui/chunk-DTMZLUNY.js.LEGAL.txt +237 -0
  105. package/dist/ui/chunk-DUJYIOLE.js +5 -0
  106. package/dist/ui/chunk-E2RCCK2T.js +1 -0
  107. package/dist/ui/chunk-EGEB6N4J.js +22 -0
  108. package/dist/ui/chunk-EGEB6N4J.js.LEGAL.txt +1059 -0
  109. package/dist/ui/chunk-GXSAEPU3.js +1 -0
  110. package/dist/ui/chunk-HHMG665Z.js +1 -0
  111. package/dist/ui/chunk-HKINZLMW.js +84 -0
  112. package/dist/ui/chunk-HLMBCVRX.js +1 -0
  113. package/dist/ui/chunk-HRGYNHZ3.js +1 -0
  114. package/dist/ui/chunk-I6ICVKEC.js +1 -0
  115. package/dist/ui/chunk-IU36W2TB.js +1 -0
  116. package/dist/ui/chunk-JDW4UORS.js +1 -0
  117. package/dist/ui/chunk-JHBAMPGB.js +1 -0
  118. package/dist/ui/chunk-JYFLU7DM.js +19 -0
  119. package/dist/ui/chunk-JZFTZ4X4.js +87 -0
  120. package/dist/ui/chunk-JZFTZ4X4.js.LEGAL.txt +9 -0
  121. package/dist/ui/chunk-KFAZBEPV.js +1 -0
  122. package/dist/ui/chunk-KKEWCXVV.js +1 -0
  123. package/dist/ui/chunk-KUCVLANF.js +1 -0
  124. package/dist/ui/chunk-KYDOSLTO.js +1 -0
  125. package/dist/ui/chunk-L4RHGQUG.js +1 -0
  126. package/dist/ui/chunk-MDUBCXU2.js +1 -0
  127. package/dist/ui/chunk-NXQVLOTK.js +1 -0
  128. package/dist/ui/chunk-NZHF733K.js +7 -0
  129. package/dist/ui/chunk-NZHF733K.js.LEGAL.txt +146 -0
  130. package/dist/ui/chunk-ONTGW2VA.js +1 -0
  131. package/dist/ui/chunk-ORXEMIQC.js +1 -0
  132. package/dist/ui/chunk-PHBMVORG.js +1 -0
  133. package/dist/ui/chunk-PJA7YP4A.js +1 -0
  134. package/dist/ui/chunk-PVAE643M.js +1 -0
  135. package/dist/ui/chunk-PWKJDYE2.js +1 -0
  136. package/dist/ui/chunk-RSVO46S3.js +1 -0
  137. package/dist/ui/chunk-SKEP5WYH.js +10 -0
  138. package/dist/ui/chunk-SKEP5WYH.js.LEGAL.txt +176 -0
  139. package/dist/ui/chunk-SQRKKWRG.js +3 -0
  140. package/dist/ui/chunk-UEON4JAT.js +1 -0
  141. package/dist/ui/chunk-V7S4IAGB.js +1 -0
  142. package/dist/ui/chunk-VMT7JFAM.js +1 -0
  143. package/dist/ui/chunk-W3BJ2EZX.js +1 -0
  144. package/dist/ui/chunk-W3HIZQ4Z.js +1 -0
  145. package/dist/ui/chunk-X2WHBGTP.js +1 -0
  146. package/dist/ui/chunk-XOQ3KDSR.js +3 -0
  147. package/dist/ui/chunk-YDO2EDVY.js +1 -0
  148. package/dist/ui/chunk-YFA6U2CV.js +1 -0
  149. package/dist/ui/gcs-L33FIRZU.js +1 -0
  150. package/dist/ui/prerender-Q4YSDCPB.js +1 -0
  151. package/dist/ui/signin.js +1 -1
  152. package/dist/ui/ui.css +1 -1
  153. package/dist/ui/ui.js +1 -630
  154. package/dist/ui/ui.js.LEGAL.txt +19 -732
  155. package/package.json +20 -20
  156. package/dist/client-1puwLgNx.d.ts +0 -1552
  157. package/dist/client.d.ts +0 -5
  158. package/dist/edit-MT4B37QK.js +0 -7
  159. package/dist/functions.d.ts +0 -13
  160. package/dist/plugin.d.ts +0 -5
  161. package/dist/richtext.d.ts +0 -104
@@ -0,0 +1 @@
1
+ import{a as C}from"./chunk-X2WHBGTP.js";import{f as p}from"./chunk-AL3TN2KI.js";import{Eb as u,Ha as o,U as _,g,j as b}from"./chunk-NZHF733K.js";b();function m(s){let e={},t=[],r={};if(Object.entries(s).forEach(([n,i])=>{e[n]={id:n,name:i.name||n,description:i.description,isGroup:!1,collection:i,children:[]}}),Object.entries(s).forEach(([n,i])=>{let c=e[n],d=i.group||"Content";d?(r[d]||(r[d]={id:`group:${d}`,name:d,isGroup:!0,children:[]}),r[d].children.push(c)):t.push(c)}),Object.keys(r).length>0&&t.length>0){let n={id:"group:Content",name:"Content",isGroup:!0,children:t},i=Object.values(r).sort((c,d)=>c.name.localeCompare(d.name));return[n,...i]}Object.values(r).forEach(n=>{t.push(n)});let l=n=>{n.sort((i,c)=>i.name.localeCompare(c.name)),n.forEach(i=>{i.children.length>0&&l(i.children)})};return l(t),t}function O(s){let{collections:e,activeCollectionId:t,projectId:r}=s,[a,l]=C(`root-cms::${r}::closed_groups`,[]),n=g(()=>m(e),[]),i=(c,d)=>{d?l(a.filter(v=>v!==c)):a.includes(c)||l([...a,c])};return o("div",{className:p(s.className,"CollectionTree"),children:[n.map(c=>o(h,{node:c,depth:0,activeCollectionId:t,closedGroups:a,onAccordionChange:i},c.id)),n.length===0&&o("div",{className:"CollectionTree__collections__empty",children:"No collections match your query."})]})}function h(s){let{node:e,depth:t,activeCollectionId:r,closedGroups:a,onAccordionChange:l}=s,n=e.children.length>0;return e.isGroup?n?o(f,{node:e,depth:t,activeCollectionId:r,closedGroups:a,onAccordionChange:l,label:o("div",{className:"CollectionTree__group__label",children:o("span",{children:e.name})})}):o("div",{className:"CollectionTree__group-empty",style:{paddingLeft:`${t*16}px`},children:[o(u,{size:20,strokeWidth:"1.75"}),o("span",{children:e.name})]}):n?o(f,{node:e,depth:t,activeCollectionId:r,closedGroups:a,onAccordionChange:l,label:o("div",{className:"CollectionTree__collection__label",children:o("a",{className:p("CollectionTree__collection-link",e.id===r&&"active"),href:`/cms/content/${e.id}`,onClick:i=>i.stopPropagation(),children:e.name})})}):o("a",{className:p("CollectionTree__collection",e.id===r&&"active"),href:`/cms/content/${e.id}`,children:[o("div",{className:"CollectionTree__collection__icon",children:o(u,{size:20,strokeWidth:"1.75"})}),o("div",{className:"CollectionTree__collection__content",children:[o("div",{className:"CollectionTree__collection__name",children:e.name}),e.description&&o("div",{className:"CollectionTree__collection__desc",children:e.description})]})]})}function f(s){let{node:e,depth:t,label:r,activeCollectionId:a,closedGroups:l,onAccordionChange:n}=s,i=!l.includes(e.id);return o("div",{className:"CollectionTree__accordion",children:o(_,{iconPosition:"left",initialItem:i?0:-1,offsetIcon:!1,onChange:()=>n(e.id,!i),children:o(_.Item,{label:r,children:o("div",{className:"CollectionTree__accordion__children",children:e.children.map(c=>o(h,{node:c,depth:t+1,activeCollectionId:a,closedGroups:l,onAccordionChange:n},c.id))})})})})}export{O as a};
@@ -0,0 +1 @@
1
+ import{c as b,n as x}from"./chunk-EGEB6N4J.js";async function A(){let r=window.firebase.db,e=window.__ROOT_CTX.rootConfig.projectId||"default",t=b(r,"Projects",e),s=await x(t);if(!s.exists)return[];let n=(s.data()||{}).roles||{},o=[];return Object.entries(n).forEach(([p,d])=>{(d==="ADMIN"||d==="EDITOR"||d==="CONTRIBUTOR")&&o.push(p)}),o}var E=class r{constructor(e){this.spreadsheetId=e}static async create(e){let t=e.share??!1,s={fields:"spreadsheetId"};e?.title&&(s.resource={properties:{title:e.title}});let n=(await gapi.client.sheets.spreadsheets.create(s)).result,o=new r(n.spreadsheetId);if(o.setSpreadsheet(n),e?.parent&&await gapi.client.drive.files.update({fileId:o.spreadsheetId,addParents:e.parent,removeParents:"root",fields:"id, parents",resource:{},supportsAllDrives:!0}),t)try{let p=await A();await o.share(p,"writer")}catch(p){console.warn("Failed to share spreadsheet:",p)}return o}getUrl(){return U({spreadsheetId:this.spreadsheetId})}async getSheet(e){if(this.sheets||await this.fetchSheets(),this.sheets){for(let t=0;t<this.sheets.length;t++)if(this.sheets[t].gid===e)return this.sheets[t]}return null}async createSheet(e){console.log("createSheet",this.spreadsheetId);let t=await gapi.client.sheets.spreadsheets.batchUpdate({spreadsheetId:this.spreadsheetId,resource:{requests:[{addSheet:{properties:{title:e.title}}}]}}),s=t.result.replies||[];if(s&&s.length>0){let i=s[0].addSheet?.properties?.sheetId;if(typeof i=="number")return new I(this,i,e.title)}throw console.error(t),new Error("failed to get gid of new tab")}async fetchSheets(){let t=(await gapi.client.sheets.spreadsheets.get({spreadsheetId:this.spreadsheetId,fields:"sheets.properties"})).result;this.setSpreadsheet(t)}setSpreadsheet(e){this.spreadsheet=e,this.spreadsheet.sheets&&this.setSheets(this.spreadsheet.sheets)}setSheets(e){let t=[];e.forEach(s=>{let i=s.properties?.sheetId,n=s.properties?.title,o=new I(this,i??0,n);t.push(o)}),this.sheets=t}async share(e,t){await Promise.all(e.map(async s=>{let i;s.startsWith("*@")?i={type:"domain",domain:s.slice(2),role:t}:i={type:"user",emailAddress:s,role:t},await gapi.client.drive.permissions.create({fileId:this.spreadsheetId,resource:i,sendNotificationEmail:!1,fields:"id",supportsAllDrives:!0})}))}},I=class{constructor(e,t,s){this.spreadsheet=e,this.gid=t,this.title=s}async updateValuesMap(e,t){let s=t.keyedBy,i=t.preserveColumns||[];if(!s)throw new Error('missing "keyedBy" argument');let[n,o]=await this.getValues(),p=[...n],d=[],w=-1,S=new Set;d.push(n.map((a,u)=>(a===s&&(w=u),i.includes(a)&&S.add(u),{hasChanges:!1,value:a})));function v(a){d[0].push({hasChanges:!0,value:a}),p.push(a)}w===-1&&v(s);let y={};o.forEach((a,u)=>{let h=u+1;d.push(a.map((c,l)=>(l===w&&c&&(c in y?console.warn(`multiple rows keyed by "${c}"`):y[c]=h),{hasChanges:!1,value:c})))});function O(a){for(let h in a)p.includes(h)||v(h);return p.map(h=>a[h]??null)}e.forEach(a=>{let u=O(a),h=a[s],c=y[h];if(c){let l=d[c];u.map((m,g)=>{g>=l.length?l.push({hasChanges:!0,value:m||""}):m!==null&&l[g].value!==m&&(!S.has(g)||!l[g].value)&&(l[g]={hasChanges:!0,value:m})})}else d.push(u.map(l=>({hasChanges:!!l,value:l||""})))});let C=p.length,R=d.length,$=n.length,F=o.length+1;(C>$||R>F)&&await this.resizeSheet({numCols:C+2,numRows:R+20});let f=[];d.forEach((a,u)=>{for(;a.length>0&&a.at(-1)?.hasChanges===!1;)a.pop();if(a.length!==0){if(a.every(h=>h.hasChanges)){f.push({range:`${this.title}!A${u+1}`,majorDimension:"ROWS",values:[a.map(h=>h.value||"")]});return}a.forEach((h,c)=>{if(h.hasChanges){let l=P(c);f.push({range:`${this.title}!${l}${u+1}`,majorDimension:"ROWS",values:[[h.value||""]]})}})}}),f.length>0&&await gapi.client.sheets.spreadsheets.values.batchUpdate({spreadsheetId:this.spreadsheet.spreadsheetId,resource:{data:f,valueInputOption:"RAW"}})}async replaceSheet(e,t){let s=e.length,i=t.length+1,n=[];n.push(e),n.push(...t.map(p=>e.map(d=>p[d]||""))),await this.resizeSheet({numCols:s+2,numRows:i+20}),console.log("updating cell values");let o=P(s-1);await gapi.client.sheets.spreadsheets.values.update({spreadsheetId:this.spreadsheet.spreadsheetId,range:`${this.title}!A1:${o}${i}`,valueInputOption:"RAW",resource:{range:`${this.title}!A1:${o}${i}`,majorDimension:"ROWS",values:n}})}async resizeSheet(e){let t=[];e.numCols&&t.push({updateSheetProperties:{properties:{sheetId:this.gid,gridProperties:{columnCount:e.numCols}},fields:"gridProperties.columnCount"}}),e.numRows&&t.push({updateSheetProperties:{properties:{sheetId:this.gid,gridProperties:{rowCount:e.numRows}},fields:"gridProperties.rowCount"}}),t.length>0&&(console.log("resizing sheet"),await gapi.client.sheets.spreadsheets.batchUpdate({spreadsheetId:this.spreadsheet.spreadsheetId,resource:{requests:t}}))}async getValues(){let t=(await gapi.client.sheets.spreadsheets.values.get({spreadsheetId:this.spreadsheet.spreadsheetId,range:this.title})).result.values;if(!t||t.length===0)return[[],[]];let s=t[0],i=t.slice(1);return[s,i]}async getValuesMap(){let[e,t]=await this.getValues();return t.map(i=>{let n={};return i.forEach((o,p)=>{let d=e[p];d&&(n[d]=String(o||""))}),n})}async setTitle(e){await gapi.client.sheets.spreadsheets.batchUpdate({spreadsheetId:this.spreadsheet.spreadsheetId,resource:{requests:[{updateSheetProperties:{properties:{title:e,sheetId:this.gid},fields:"title"}}]}}),this.title=e}getUrl(){return U({spreadsheetId:this.spreadsheet.spreadsheetId,gid:this.gid})}async applyL10nTheme(){await gapi.client.sheets.spreadsheets.batchUpdate({spreadsheetId:this.spreadsheet.spreadsheetId,resource:{requests:[{repeatCell:{range:{sheetId:this.gid,startRowIndex:0},cell:{userEnteredFormat:{textFormat:{fontFamily:"Ubuntu",fontSize:10}}},fields:"userEnteredFormat(textFormat)"}},{repeatCell:{range:{sheetId:this.gid,startRowIndex:0,endRowIndex:1},cell:{userEnteredFormat:{textFormat:{bold:!0,fontFamily:"Ubuntu",fontSize:10}}},fields:"userEnteredFormat(textFormat)"}},{updateSheetProperties:{properties:{sheetId:this.gid,gridProperties:{frozenRowCount:1}},fields:"gridProperties.frozenRowCount"}},{updateDimensionProperties:{range:{sheetId:this.gid,dimension:"COLUMNS",startIndex:0,endIndex:1},properties:{pixelSize:320},fields:"pixelSize"}},{updateDimensionProperties:{range:{sheetId:this.gid,dimension:"COLUMNS",startIndex:1},properties:{pixelSize:320},fields:"pixelSize"}},{repeatCell:{range:{sheetId:this.gid,startRowIndex:1,startColumnIndex:0},cell:{userEnteredFormat:{wrapStrategy:"WRAP"}},fields:"userEnteredFormat(wrapStrategy)"}}]}})}};function U(r){let t=[`https://docs.google.com/spreadsheets/d/${r.spreadsheetId}/edit`];return typeof r.gid=="number"&&t.push(`#gid=${r.gid}`),t.join("")}function k(r){if(!r.startsWith("https://docs.google.com/spreadsheets/d/"))return null;let e=r.split("/"),t=e[e.length-2],i=r.slice(r.indexOf("#")).match(/gid=(\d+)/),n=0;return i&&i[1]&&(n=parseInt(i[1])),{spreadsheetId:t,gid:n}}function P(r){let e=[];for(;r>=0;){let t=r%26;e.push(String.fromCharCode(t+65)),r=(r-t-1)/26}return e.reverse().join("")}function z(r){if(!r)return;if(!r.startsWith("https://drive.google.com/drive/folders/")){let s=r.trim();if(s.length===33&&/^[a-zA-Z0-9_-]+$/.test(s))return s}let e=r.trim().split("/");return e[e.length-1]||void 0}function W(r){let e=z(r);return e?`https://drive.google.com/drive/folders/${e}`:"https://drive.google.com/drive"}export{E as a,U as b,k as c,z as d,W as e};
@@ -0,0 +1 @@
1
+ import{a,h as n,j as s}from"./chunk-NZHF733K.js";s();s();function T(e,r){let[c,i]=a(()=>{try{let t=window.localStorage.getItem(e);return t?JSON.parse(t):r}catch(t){return console.error(t),r}}),u=n(t=>{i(l=>{let o=typeof t=="function"?t(l):t;return window.localStorage.setItem(e,JSON.stringify(o)),o})},[e]);return[c,u]}export{T as a};
@@ -0,0 +1,3 @@
1
+ import{a as C,f as h}from"./chunk-ORXEMIQC.js";import{b as m,c as d,g as f,h as y,n as b,o as _,q as j,v as u,w as p}from"./chunk-EGEB6N4J.js";function S(){let t=window.__ROOT_CTX.rootConfig.projectId,o=window.firebase.db;return m(o,"Projects",t,"Translations")}async function M(t){let o=S(),a=t?.tags?f(o,y("tags","array-contains-any",t.tags)):f(o),s=await _(a),e={};return s.forEach(r=>{let n=r.id;e[n]=r.data()}),e}async function k(t){let o=window.__ROOT_CTX.rootConfig.projectId,a=window.firebase.db,s=d(a,"Projects",o,"Translations",t);return(await b(s)).data()}async function H(t,o){let a=window.__ROOT_CTX.rootConfig.projectId,s=window.firebase.db,e=d(s,"Projects",a,"Translations",t),r={};for(let n in o){if(n==="tags"){r.tags=o.tags;continue}let c=I(n);c&&(r[c]=o[n])}console.log("updating translations: ",r),await j(e,r),h("translations.save",{metadata:{hash:t},throttle:5*C.minute,throttleId:t})}async function L(t,o){let a=o?.mode??"replace",s=window.__ROOT_CTX.rootConfig.projectId,e=window.firebase.db,r=500;for(let n=0;n<t.length;n+=r){let c=p(e);t.slice(n,n+r).forEach(({hash:l,tags:g})=>{let i=d(e,"Projects",s,"Translations",l);a==="union"?c.update(i,{tags:u(...g)}):c.update(i,{tags:g})}),await c.commit()}}async function A(t){return P(x(t))}async function P(t){let a=new TextEncoder().encode(t),s=await crypto.subtle.digest("SHA-1",a);return Array.from(new Uint8Array(s)).map(n=>n.toString(16).padStart(2,"0")).join("")}function x(t){return String(t).trim().split(`
2
+ `).map(a=>E(a)).join(`
3
+ `)}function E(t){return String(t).trimEnd().replace(/&nbsp;$/,"")}function I(t){let a=(window.__ROOT_CTX.rootConfig.i18n||{}).locales||["en"];for(let s of a)if(String(s).toLowerCase()===t.toLowerCase())return s;return null}async function U(t,o){let a=window.__ROOT_CTX.rootConfig.projectId,s=window.firebase.db,e=500,r=await Promise.all(t.map(async n=>({hash:await A(n.source),locales:n.locales,source:n.source})));for(let n=0;n<r.length;n+=e){let c=p(s),w=r.slice(n,n+e);for(let l of w){let g=d(s,"Projects",a,"Translations",l.hash),i={source:l.source};for(let[O,R]of Object.entries(l.locales)){let T=I(O);T&&(i[T]=x(R))}o?.tags?.length&&(i.tags=u(...o.tags)),c.set(g,i,{merge:!0})}await c.commit()}h("translations.batch_save",{metadata:{count:t.length}})}export{S as a,M as b,k as c,H as d,L as e,A as f,x as g,U as h};
@@ -0,0 +1 @@
1
+ async function a(t){if(!window.__ROOT_CTX.collections[t])throw new Error(`collection not found: ${t}`);let o=await window.fetch("/cms/api/collection.get",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({collectionId:t})});if(o.status!==200){let e=await o.text();throw new Error(e)}return(await o.json()).data}export{a};
@@ -0,0 +1 @@
1
+ import{a as k,d as z}from"./chunk-JZFTZ4X4.js";import{B as A,C as I,x as y}from"./chunk-AFWBSIPL.js";import{a as b}from"./chunk-HLMBCVRX.js";import{f as h}from"./chunk-5MV6XVGA.js";import{f as u}from"./chunk-AL3TN2KI.js";import{Ec as N,Ha as e,U as p,V as g,Vc as C,a as n,c as v,e as w,ea as S,j as V}from"./chunk-NZHF733K.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};
@@ -0,0 +1 @@
1
+ import{b as a,c as b,d as c,e as d,f as e,g as f,h as g,i as h,j as i,k as j,l as k,m as l,n as m}from"./chunk-SKEP5WYH.js";import"./chunk-DTMZLUNY.js";import"./chunk-PVAE643M.js";export{a as GCI_SUPPORTED_EXTS,d as GCI_URL_PREFIX,b as IMAGE_EXTS,c as VIDEO_EXTS,l as buildDownloadURL,g as checkFileExists,f as deleteFileFromGCS,h as getFileExt,m as shouldImageUseDarkBg,j as testIsGoogleCloudImageFile,i as testIsImageFile,k as testIsVideoFile,e as uploadFileToGCS};
@@ -0,0 +1 @@
1
+ import{a as d,b as O,d as Z,i as ft,k as ut}from"./chunk-KUCVLANF.js";import"./chunk-PVAE643M.js";ut();ut();var Lt="diffed",pt="__c",G="__s",P="__c",bt="__k",et="__d",D="__s",ht=/[\s\n\\/='"\0<>]/,dt=/^(xlink|xmlns|xml)([A-Z])/,Tt=/^(?:accessK|auto[A-Z]|cell|ch|col|cont|cross|dateT|encT|form[A-Z]|frame|hrefL|inputM|maxL|minL|noV|playsI|popoverT|readO|rowS|src[A-Z]|tabI|useM|item[A-Z])/,Et=/^ac|^ali|arabic|basel|cap|clipPath$|clipRule$|color|dominant|enable|fill|flood|font|glyph[^R]|horiz|image|letter|lighting|marker[^WUH]|overline|panose|pointe|paint|rendering|shape|stop|strikethrough|stroke|text[^L]|transform|underline|unicode|units|^v[^i]|^w|^xH/,Zt=new Set(["draggable","spellcheck"]);function xt(t){t.__g!==void 0?t.__g|=8:t[et]=!0}function jt(t){t.__g!==void 0?t.__g&=-9:t[et]=!1}function vt(t){return t.__g!==void 0?!!(8&t.__g):t[et]===!0}var Dt=/["&<]/;function R(t){if(t.length===0||Dt.test(t)===!1)return t;for(var n=0,e=0,o="",i="";e<t.length;e++){switch(t.charCodeAt(e)){case 34:i="&quot;";break;case 38:i="&amp;";break;case 60:i="&lt;";break;default:continue}e!==n&&(o+=t.slice(n,e)),o+=i,n=e+1}return e!==n&&(o+=t.slice(n,e)),o}var yt={},Mt=new Set(["animation-iteration-count","border-image-outset","border-image-slice","border-image-width","box-flex","box-flex-group","box-ordinal-group","column-count","fill-opacity","flex","flex-grow","flex-negative","flex-order","flex-positive","flex-shrink","flood-opacity","font-weight","grid-column","grid-row","line-clamp","line-height","opacity","order","orphans","stop-opacity","stroke-dasharray","stroke-dashoffset","stroke-miterlimit","stroke-opacity","stroke-width","tab-size","widows","z-index","zoom"]),Pt=/[A-Z]/g;function Ut(t){var n="";for(var e in t){var o=t[e];if(o!=null&&o!==""){var i=e[0]=="-"?e:yt[e]||(yt[e]=e.replace(Pt,"-$&").toLowerCase()),r=";";typeof o!="number"||i.startsWith("--")||Mt.has(i)||(r="px;"),n=n+i+":"+o+r}}return n||void 0}function mt(){this.__d=!0}function $t(t,n){return{__v:t,context:n,props:t.props,setState:mt,forceUpdate:mt,__d:!0,__h:new Array(0)}}function b(t,n,e){if(!t.s){if(e instanceof nt){if(!e.s)return void(e.o=b.bind(null,t,n));1&n&&(n=e.s),e=e.v}if(e&&e.then)return void e.then(b.bind(null,t,n),b.bind(null,t,2));t.s=n,t.v=e;let o=t.o;o&&o(t)}}var nt=(function(){function t(){}return t.prototype.then=function(n,e){var o=new t,i=this.s;if(i){var r=1&i?n:e;if(r){try{b(o,1,r(this.v))}catch(a){b(o,2,a)}return o}return this}return this.o=function(a){try{var f=a.v;1&a.s?b(o,1,n?n(f):f):e?b(o,1,e(f)):b(o,2,f)}catch(u){b(o,2,u)}},o},t})();function j(t){return t instanceof nt&&1&t.s}function Ft(t,n,e){for(var o;;){var i=t();if(j(i)&&(i=i.v),!i)return r;if(i.then){o=0;break}var r=e();if(r&&r.then){if(!j(r)){o=1;break}r=r.s}if(n){var a=n();if(a&&a.then&&!j(a)){o=2;break}}}var f=new nt,u=b.bind(null,f,2);return(o===0?i.then(x):o===1?r.then(p):a.then(_)).then(void 0,u),f;function p(A){r=A;do{if(n&&(a=n())&&a.then&&!j(a))return void a.then(_).then(void 0,u);if(!(i=t())||j(i)&&!i.v)return void b(f,1,r);if(i.then)return void i.then(x).then(void 0,u);j(r=e())&&(r=r.v)}while(!r||!r.then);r.then(p).then(void 0,u)}function x(A){A?(r=e())&&r.then?r.then(p).then(void 0,u):p(r):b(f,1,r)}function _(){(i=t())?i.then?i.then(x).then(void 0,u):x(i):b(f,1,r)}}function Wt(t,n){try{var e=t()}catch(o){return n(!0,o)}return e&&e.then?e.then(n.bind(null,!1),n.bind(null,!0)):n(!1,e)}var I,L,W,F,wt=function(t,n){try{var e=d[G];d[G]=!0,I=d.__b,L=d[Lt],W=d.__r,F=d.unmount;var o=O(Z,null);return o[bt]=[t],Promise.resolve(Wt(function(){return Promise.resolve(k(t,n||rt,!1,void 0,o,!0,void 0)).then(function(i){var r,a=(function(){if(M(i)){var f=function(){var _=p.join(m);return r=1,_},u=0,p=i,x=Ft(function(){return!!p.some(function(_){return _&&typeof _.then=="function"})&&u++<25},void 0,function(){return Promise.resolve(Promise.all(p)).then(function(_){p=_.flat()})});return x&&x.then?x.then(f):f()}})();return a&&a.then?a.then(function(f){return r?f:i}):r?a:i})},function(i,r){if(d[pt]&&d[pt](t,gt),d[G]=e,gt.length=0,i)throw r;return r}))}catch(i){return Promise.reject(i)}},rt={},gt=[],M=Array.isArray,q=Object.assign,m="",Q="<!--$s-->",X="<!--/$s-->";function tt(t){return typeof t=="string"?Q+t+X:M(t)?(t.unshift(Q),t.push(X),t):t&&typeof t.then=="function"?t.then(tt):Q+t+X}function _t(t,n){var e,o=t.type,i=!0;return t[P]?(i=!1,(e=t[P]).state=e[D]):e=new o(t.props,n),t[P]=e,e.__v=t,e.props=t.props,e.context=n,xt(e),e.state==null&&(e.state=rt),e[D]==null&&(e[D]=e.state),o.getDerivedStateFromProps?e.state=q({},e.state,o.getDerivedStateFromProps(e.props,e.state)):i&&e.componentWillMount?(e.componentWillMount(),e.state=e[D]!==e.state?e[D]:e.state):!i&&e.componentWillUpdate&&e.componentWillUpdate(),W&&W(t),e.render(e.props,e.state,n)}function k(t,n,e,o,i,r,a){if(t==null||t===!0||t===!1||t===m)return m;var f=typeof t;if(f!="object")return f=="function"?m:f=="string"?R(t):t+m;if(M(t)){var u,p=m;i[bt]=t;for(var x=t.length,_=0;_<x;_++){var A=t[_];if(A!=null&&typeof A!="boolean"){var ot,U=k(A,n,e,o,i,r,a);typeof U=="string"?p+=U:(u||(u=new Array(x)),p&&u.push(p),p=m,M(U)?(ot=u).push.apply(ot,U):u.push(U))}}return u?(p&&u.push(p),u):p}if(t.constructor!==void 0)return m;t.__=i,I&&I(t);var h=t.type,v=t.props;if(typeof h=="function"){var V,c,y,H=n;if(h===Z){if("tpl"in v){for(var z=m,$=0;$<v.tpl.length;$++)if(z+=v.tpl[$],v.exprs&&$<v.exprs.length){var T=v.exprs[$];if(T==null)continue;typeof T!="object"||T.constructor!==void 0&&!M(T)?z+=T:z+=k(T,n,e,o,t,r,a)}return z}if("UNSTABLE_comment"in v)return"<!--"+R(v.UNSTABLE_comment)+"-->";c=v.children}else{if((V=h.contextType)!=null){var it=n[V.__c];H=it?it.props.value:V.__}var at=h.prototype&&typeof h.prototype.render=="function";if(at)c=_t(t,H),y=t[P];else{t[P]=y=$t(t,H);for(var St=0;vt(y)&&St++<25;){jt(y),W&&W(t);try{c=h.call(y,v,H)}catch(g){throw r&&g&&typeof g.then=="function"&&(t._suspended=!0),g}}xt(y)}if(y.getChildContext!=null&&(n=q({},n,y.getChildContext())),at&&d.errorBoundaries&&(h.getDerivedStateFromError||y.componentDidCatch)){c=c!=null&&c.type===Z&&c.key==null&&c.props.tpl==null?c.props.children:c;try{return k(c,n,e,o,t,r,!1)}catch(g){return h.getDerivedStateFromError&&(y[D]=h.getDerivedStateFromError(g)),y.componentDidCatch&&y.componentDidCatch(g,rt),vt(y)?(c=_t(t,n),(y=t[P]).getChildContext!=null&&(n=q({},n,y.getChildContext())),k(c=c!=null&&c.type===Z&&c.key==null&&c.props.tpl==null?c.props.children:c,n,e,o,t,r,a)):m}finally{L&&L(t),F&&F(t)}}}c=c!=null&&c.type===Z&&c.key==null&&c.props.tpl==null?c.props.children:c;try{var ct=k(c,n,e,o,t,r,a);return L&&L(t),d.unmount&&d.unmount(t),t._suspended?tt(ct):ct}catch(g){if(!r&&a&&a.onError){var lt=(function Y(B){return a.onError(B,t,function(E,At){try{return k(E,n,e,o,At,r,a)}catch(Ct){return Y(Ct)}})})(g);if(lt!==void 0)return lt;var st=d.__e;return st&&st(g,t),m}if(!r||!g||typeof g.then!="function")throw g;return g.then(function Y(){try{var B=k(c,n,e,o,t,r,a);return t._suspended?tt(B):B}catch(E){if(!E||typeof E.then!="function")throw E;return E.then(Y)}})}}var S,C="<"+h,w=m;for(var l in v){var s=v[l];if(typeof(s=zt(s)?s.value:s)!="function"||l==="class"||l==="className"){switch(l){case"children":S=s;continue;case"key":case"ref":case"__self":case"__source":continue;case"htmlFor":if("for"in v)continue;l="for";break;case"className":if("class"in v)continue;l="class";break;case"defaultChecked":l="checked";break;case"defaultSelected":l="selected";break;case"defaultValue":case"value":switch(l="value",h){case"textarea":S=s;continue;case"select":o=s;continue;case"option":o!=s||"selected"in v||(C+=" selected")}break;case"dangerouslySetInnerHTML":w=s&&s.__html;continue;case"style":typeof s=="object"&&(s=Ut(s));break;case"acceptCharset":l="accept-charset";break;case"httpEquiv":l="http-equiv";break;default:if(dt.test(l))l=l.replace(dt,"$1:$2").toLowerCase();else{if(ht.test(l))continue;l[4]!=="-"&&!Zt.has(l)||s==null?e?Et.test(l)&&(l=l==="panose1"?"panose-1":l.replace(/([A-Z])/g,"-$1").toLowerCase()):Tt.test(l)&&(l=l.toLowerCase()):s+=m}}s!=null&&s!==!1&&(C=s===!0||s===m?C+" "+l:C+" "+l+'="'+(typeof s=="string"?R(s):s+m)+'"')}}if(ht.test(h))throw new Error(h+" is not a valid HTML tag name in "+C+">");if(w||(typeof S=="string"?w=R(S):S!=null&&S!==!1&&S!==!0&&(w=k(S,n,h==="svg"||h!=="foreignObject"&&e,o,t,r,a))),L&&L(t),F&&F(t),!w&&Ht.has(h))return C+"/>";var J="</"+h+">",K=C+">";return M(w)?[K].concat(w,[J]):typeof w!="string"?[K,w,J]:K+w+J}var Ht=new Set(["area","base","br","col","command","embed","hr","img","input","keygen","link","meta","param","source","track","wbr"]);function zt(t){return t!==null&&typeof t=="object"&&typeof t.peek=="function"&&"value"in t}var N,kt=d.vnode;d.vnode=t=>{kt&&kt(t),N&&N(t)};async function Bt(t,n){n=n||{};let e=n.props;typeof t=="function"?t=O(t,e):e&&(t=ft(t,e));let o=new Set;N=({type:i,props:r})=>{i==="a"&&r&&r.href&&(!r.target||r.target==="_self")&&o.add(r.href)};try{let i=await wt(t);return i+='<script type="isodata"><\/script>',{html:i,links:o}}finally{N=null}}function Jt(t){globalThis.location={};let n=new URL(t,"http://localhost");for(let e in n)try{globalThis.location[e]=/to[A-Z]/.test(e)?n[e].bind(n):String(n[e])}catch{}}export{Bt as default,Jt as locationStub};