@chaibuilder/sdk 4.0.0-beta.8 → 4.0.0-beta.9

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 (139) hide show
  1. package/README.md +4 -5
  2. package/dist/{2SSKDMRQ-DewwiCoQ.js → 2SSKDMRQ-CdFBQR2o.js} +2 -2
  3. package/dist/{2SSKDMRQ-DHv4u_0i.cjs → 2SSKDMRQ-CuQ42ST6.cjs} +1 -1
  4. package/dist/{AP7HFJJL-cz754qhG.cjs → AP7HFJJL-DcnEb4BE.cjs} +1 -1
  5. package/dist/{AP7HFJJL-ComnZw7J.js → AP7HFJJL-bDlWX5Yx.js} +1 -1
  6. package/dist/{IconPicker-2H9IGKMS.js → IconPicker-CNwplOGy.js} +1 -1
  7. package/dist/{IconPicker-U0Z2dWeR.cjs → IconPicker-FpyYsxOf.cjs} +1 -1
  8. package/dist/STRINGS-BExFecZW.js +8 -0
  9. package/dist/STRINGS-FNnfjF5H.cjs +1 -0
  10. package/dist/{WDYDFRGG-BfRX3M58.cjs → WDYDFRGG-BxLmjulP.cjs} +1 -1
  11. package/dist/{WDYDFRGG-vy7nMYD4.js → WDYDFRGG-CWq7H6Qk.js} +2 -2
  12. package/dist/{actions-registery-CtQSSexG.cjs → actions-registery-BRgseJas.cjs} +16 -16
  13. package/dist/{actions-registery-DqrFhSMp.js → actions-registery-DRV8xywr.js} +180 -181
  14. package/dist/actions.cjs +1 -1
  15. package/dist/actions.d.ts +112 -51
  16. package/dist/actions.js +2 -2
  17. package/dist/{active-in-another-tab-5hn17Jeq.js → active-in-another-tab-C392ZWQc.js} +2 -2
  18. package/dist/{active-in-another-tab-ijahI5qu.cjs → active-in-another-tab-DEWOFgY5.cjs} +1 -1
  19. package/dist/{add-new-language-page-DmOyPy0u.js → add-new-language-page-BL2F_Cu7.js} +3 -3
  20. package/dist/{add-new-language-page-vmNKNx-e.cjs → add-new-language-page-DBWd0wDY.cjs} +1 -1
  21. package/dist/{add-new-page-XDuCkOyb.cjs → add-new-page-DYrQeKCi.cjs} +1 -1
  22. package/dist/{add-new-page-NHScAQn8.js → add-new-page-QVlyJhn9.js} +2 -2
  23. package/dist/{ai-panel-content-CHJ0JcQI.js → ai-panel-content-CCOluPtK.js} +3 -3
  24. package/dist/{ai-panel-content-BDqW16AW.cjs → ai-panel-content-DCZRBa6s.cjs} +1 -1
  25. package/dist/{ai-panel-default-lang-HeYWpbMu.cjs → ai-panel-default-lang-C3t0elrO.cjs} +2 -2
  26. package/dist/{ai-panel-default-lang-BIomgsN0.js → ai-panel-default-lang-Crz7QAxl.js} +4 -4
  27. package/dist/{ai-panel-other-lang-BMelEs3p.cjs → ai-panel-other-lang-BRkr4Te3.cjs} +1 -1
  28. package/dist/{ai-panel-other-lang-CbAgG-qX.js → ai-panel-other-lang-DIF8PYLh.js} +4 -4
  29. package/dist/{ai-prompt-input-BH8LOVT4.js → ai-prompt-input-D4dqy8L2.js} +1 -1
  30. package/dist/{ai-prompt-input-C_GG6nwq.cjs → ai-prompt-input-Ybgvrvd6.cjs} +1 -1
  31. package/dist/{ai-translation-prompt-CkHaFv5I.cjs → ai-translation-prompt-Ck12Bfl6.cjs} +1 -1
  32. package/dist/{ai-translation-prompt-DxsNw8YR.js → ai-translation-prompt-eZ4Sllva.js} +1 -1
  33. package/dist/{apply-binding-BvWfJCSZ.js → apply-binding-CLU6Xp4K.js} +77 -81
  34. package/dist/apply-binding-NvZX_rJe.cjs +1 -0
  35. package/dist/{code-editor-CGBAc-A6.js → code-editor-D45h29W1.js} +1 -1
  36. package/dist/{code-editor-GV8ibQ4h.cjs → code-editor-DH8eU4WL.cjs} +1 -1
  37. package/dist/{continue-editing-in-this-client-Da8ab_9d.js → continue-editing-in-this-client-BRrIvSrl.js} +2 -2
  38. package/dist/{continue-editing-in-this-client-DKHP0pq8.cjs → continue-editing-in-this-client-DgZ9Q18G.cjs} +1 -1
  39. package/dist/core-8lkXy4lC.cjs +1 -0
  40. package/dist/core-BvsZwF26.js +52 -0
  41. package/dist/core.cjs +1 -1
  42. package/dist/core.d.ts +147 -87
  43. package/dist/core.js +2 -2
  44. package/dist/{css-import-modal-CcZVLsF9.js → css-import-modal-BhLPzQH8.js} +1 -1
  45. package/dist/{css-import-modal-B4j26_cO.cjs → css-import-modal-C2-oVwFv.cjs} +1 -1
  46. package/dist/{delete-design-token-DzINIVtO.js → delete-design-token-D4Q5-Xql.js} +1 -1
  47. package/dist/{delete-design-token-3-WwqXMO.cjs → delete-design-token-DJSQluQ6.cjs} +1 -1
  48. package/dist/{delete-page-B7ODELqM.cjs → delete-page-BxbsKhY5.cjs} +1 -1
  49. package/dist/{delete-page-DwZDMwfI.js → delete-page-xHdZT-7c.js} +2 -2
  50. package/dist/{design-token-usage-DQf180Lg.js → design-token-usage-7wgmVSWI.js} +1 -1
  51. package/dist/{design-token-usage-Dy08kcIc.cjs → design-token-usage-KZ4pilLm.cjs} +1 -1
  52. package/dist/{digital-asset-manager-CDy9kHZO.js → digital-asset-manager-BmbVU7fX.js} +3 -3
  53. package/dist/{digital-asset-manager-C7subULa.cjs → digital-asset-manager-a1fqrQVH.cjs} +1 -1
  54. package/dist/{duplicate-page-DTnSztlr.js → duplicate-page-5uIno9Yh.js} +3 -3
  55. package/dist/{duplicate-page-CWQ9aMd9.cjs → duplicate-page-BBTxn_o1.cjs} +1 -1
  56. package/dist/{dynamic-page-selector-DJuxLcsM.cjs → dynamic-page-selector-C1ef0i2I.cjs} +1 -1
  57. package/dist/{dynamic-page-selector-DYW3ov_u.js → dynamic-page-selector-rhvhg7ol.js} +2 -2
  58. package/dist/{image-editor-DLeSST0K.js → image-editor-BXYZDa0s.js} +1 -1
  59. package/dist/{image-editor-C4H3AkZK.cjs → image-editor-rqUgAO8V.cjs} +1 -1
  60. package/dist/{index-D5d4QDq7.js → index-Be9lAaD7.js} +420 -422
  61. package/dist/index-BhqugjzS.cjs +160 -0
  62. package/dist/index-CNEEEgTV.cjs +5 -0
  63. package/dist/{index-BK0xWO1z.js → index-mjuSGlPU.js} +440 -447
  64. package/dist/{json-diff-viewer-g6SY62bl.cjs → json-diff-viewer-C9qmLiaq.cjs} +1 -1
  65. package/dist/{json-diff-viewer-BYHieVod.js → json-diff-viewer-aVwY7_hZ.js} +2 -2
  66. package/dist/{lang-panel-BG1GMn-1.js → lang-panel-BTWk23Mw.js} +3 -3
  67. package/dist/{lang-panel-Dm1eOO2J.cjs → lang-panel-Bo1ZWYfu.cjs} +1 -1
  68. package/dist/{manage-design-tokens-BdWQUHhw.js → manage-design-tokens-id8bylgO.js} +3 -3
  69. package/dist/manage-design-tokens-lUMCgjdS.cjs +1 -0
  70. package/dist/{mark-as-template-DUFnfVM3.cjs → mark-as-template-BYXBDXMv.cjs} +1 -1
  71. package/dist/{mark-as-template-D2XxagVO.js → mark-as-template-hv3WD852.js} +2 -2
  72. package/dist/{nested-path-selector-content-Wd6-Eql0.js → nested-path-selector-content-B8z90MFF.js} +1 -1
  73. package/dist/{nested-path-selector-content-CQOx2L9C.cjs → nested-path-selector-content-DgFFXcTD.cjs} +1 -1
  74. package/dist/{no-language-page-content-C11uF6hs.cjs → no-language-page-content-6Kk8UjFX.cjs} +1 -1
  75. package/dist/{no-language-page-content-BOv6TZIk.js → no-language-page-content-DMACzysm.js} +2 -2
  76. package/dist/{no-language-page-dialog-DIXyKRJq.js → no-language-page-dialog-D4n_XYUq.js} +2 -2
  77. package/dist/{no-language-page-dialog-CY5XhXsC.cjs → no-language-page-dialog-mBH-fthh.cjs} +1 -1
  78. package/dist/{page-creator-zSUFF4eT.cjs → page-creator-CGglYnYg.cjs} +1 -1
  79. package/dist/{page-creator-WX9lMrJY.js → page-creator-CgsOF0Eg.js} +3 -3
  80. package/dist/{page-lock-D9miLZjm.js → page-lock-CUCEBnJb.js} +2 -2
  81. package/dist/{page-lock-DGhR_url.cjs → page-lock-Hsi61Mk5.cjs} +1 -1
  82. package/dist/{page-locked-dialog-DTLnbfuP.cjs → page-locked-dialog-DSxbAMpt.cjs} +1 -1
  83. package/dist/{page-locked-dialog-CNCUCcvH.js → page-locked-dialog-bHvbFllT.js} +2 -2
  84. package/dist/{page-manager-new-Dd2c-Q_O.cjs → page-manager-new-CBfFl5rL.cjs} +1 -1
  85. package/dist/{page-manager-new-BFFOLh-l.js → page-manager-new-Cifc526h.js} +7 -7
  86. package/dist/{page-manager-search-and-filter-C1IWF_4d.js → page-manager-search-and-filter-CLJss6pV.js} +2 -2
  87. package/dist/{page-manager-search-and-filter-BKdQUJ2W.cjs → page-manager-search-and-filter-mEKl-UKh.cjs} +1 -1
  88. package/dist/{page-revisions-content-D0cflnj1.cjs → page-revisions-content-C95dQJyx.cjs} +1 -1
  89. package/dist/{page-revisions-content-DHapiLck.js → page-revisions-content-DvL4ya9g.js} +3 -3
  90. package/dist/pages.cjs +1 -1
  91. package/dist/pages.d.ts +146 -93
  92. package/dist/pages.js +1 -1
  93. package/dist/{publish-pages-content-BqLcnKry.cjs → publish-pages-content-B-6vSkql.cjs} +1 -1
  94. package/dist/{publish-pages-content-Bd2zJHtK.js → publish-pages-content-B8-IZW_U.js} +3 -3
  95. package/dist/render.cjs +1 -1
  96. package/dist/render.d.ts +12 -14
  97. package/dist/render.js +3 -3
  98. package/dist/{rte-widget-modal-RS8PMKOn.js → rte-widget-modal-1SbY5bcQ.js} +1 -1
  99. package/dist/{rte-widget-modal-DiB5BjH1.cjs → rte-widget-modal-CyKwtbOG.cjs} +1 -1
  100. package/dist/runtime.cjs +1 -1
  101. package/dist/runtime.d.ts +91 -77
  102. package/dist/runtime.js +57 -56
  103. package/dist/{save-to-lib--6ZXHEbC.js → save-to-lib-BKcBfjfi.js} +2 -2
  104. package/dist/{save-to-lib-BXJvaC1N.cjs → save-to-lib-BmPh_Vns.cjs} +1 -1
  105. package/dist/{selected-block-display-CUnCqXQw.js → selected-block-display-B3hHlcLA.js} +2 -2
  106. package/dist/{selected-block-display-BfpJda4h.cjs → selected-block-display-BCvTNcp2.cjs} +1 -1
  107. package/dist/{seo-panel-Bs-FcY1A.js → seo-panel-D3EyOYij.js} +2 -2
  108. package/dist/{seo-panel-CQITMfZ6.cjs → seo-panel-DVClgzX9.cjs} +1 -1
  109. package/dist/{shared-json-ld-DDXXi-Mj.cjs → shared-json-ld-BRgJTv0m.cjs} +1 -1
  110. package/dist/{shared-json-ld-7EujD341.js → shared-json-ld-DSPadwbY.js} +2 -2
  111. package/dist/{slug-input-CsVJAr7r.cjs → slug-input-B39SPBdP.cjs} +1 -1
  112. package/dist/{slug-input-DoEIq5rs.js → slug-input-C3UrwSkt.js} +1 -1
  113. package/dist/supabase-actions.cjs +1 -1
  114. package/dist/supabase-actions.js +1 -1
  115. package/dist/{take-over-request-C14kJ356.js → take-over-request-DfAlPvpE.js} +2 -2
  116. package/dist/{take-over-request-D5Oo3MPo.cjs → take-over-request-Tq9-gOCV.cjs} +1 -1
  117. package/dist/{theme-panel-footer-Dvknelm8.js → theme-panel-footer-DIy4baYU.js} +2 -2
  118. package/dist/{theme-panel-footer-Eeibz2JA.cjs → theme-panel-footer-DQzjVBBP.cjs} +1 -1
  119. package/dist/{translation-warning-modal-YlzP2XoO.js → translation-warning-modal-BHwLZZOw.js} +1 -1
  120. package/dist/{translation-warning-modal-CPzdHzqq.cjs → translation-warning-modal-Ckwt5Skc.cjs} +1 -1
  121. package/dist/types.cjs +1 -0
  122. package/dist/types.d.ts +598 -0
  123. package/dist/types.js +1 -0
  124. package/dist/{unmark-as-template-BGDwuCnv.cjs → unmark-as-template-BKA-sNZr.cjs} +1 -1
  125. package/dist/{unmark-as-template-CPJvQk7L.js → unmark-as-template-CbgifSbI.js} +2 -2
  126. package/dist/{unpublish-page-BMowW5wT.cjs → unpublish-page-BqzvOD76.cjs} +1 -1
  127. package/dist/{unpublish-page-DlFHLlmI.js → unpublish-page-DXQpAkvc.js} +2 -2
  128. package/dist/utils.d.ts +5 -5
  129. package/dist/web-blocks.cjs +1 -1
  130. package/dist/web-blocks.js +237 -237
  131. package/dist/{web-preview-BUnv3jIc.js → web-preview-DH7Yv-jg.js} +1 -1
  132. package/dist/{web-preview-D8GQHCjs.cjs → web-preview-DShy13AM.cjs} +1 -1
  133. package/package.json +6 -1
  134. package/dist/apply-binding-IsUf6UWJ.cjs +0 -1
  135. package/dist/core-Dr7QYemB.js +0 -56
  136. package/dist/core-Y0lXLwkq.cjs +0 -1
  137. package/dist/index-BRJCj7c_.cjs +0 -5
  138. package/dist/index-Bm8iS2OH.cjs +0 -160
  139. package/dist/manage-design-tokens-XWs_B6jo.cjs +0 -1
package/dist/actions.cjs CHANGED
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const i=require("./actions-registery-CtQSSexG.cjs"),l=s=>async o=>{const{apiKey:t,userId:u}=s;try{const a=o,{action:r,data:e}=a,n=i.getChaiAction(r);return n?n.validate(e)?(n.setContext({appId:t,userId:u}),await n.execute(e)):{error:`Validation failed: ${n.getValidationErrors(e)}`,code:"INVALID_REQUEST_DATA",status:400}:{error:`Action ${r} not found`,code:"ACTION_NOT_FOUND",status:404}}catch(a){return console.log("Error in builderApiHandler:",a),a instanceof i.ActionError?{error:a.message,code:a.code,status:a.status||400}:{error:"Something went wrong.",status:500}}},h={ab:"Abkhazian",aa:"Afar",af:"Afrikaans",ak:"Akan",sq:"Albanian",am:"Amharic",ar:"Arabic",an:"Aragonese",hy:"Armenian",as:"Assamese",av:"Avaric",ae:"Avestan",ay:"Aymara",az:"Azerbaijani",bm:"Bambara",ba:"Bashkir",eu:"Basque",be:"Belarusian",bn:"Bengali",bh:"Bihari",bi:"Bislama",bs:"Bosnian",br:"Breton",bg:"Bulgarian",my:"Burmese",ca:"Catalan",ch:"Chamorro",ce:"Chechen",ny:"Chichewa",zh:"Chinese","zh-Hans":"Chinese (Simplified)","zh-Hant":"Chinese (Traditional)",cv:"Chuvash",kw:"Cornish",co:"Corsican",cr:"Cree",hr:"Croatian",cs:"Czech",da:"Danish",dv:"Maldivian",nl:"Dutch",dz:"Dzongkha",en:"English",eo:"Esperanto",et:"Estonian",ee:"Ewe",fo:"Faroese",fj:"Fijian",fi:"Finnish",fr:"French",ff:"Fula, Pular",gl:"Galician",gd:"Gaelic (Scottish)",gv:"Manx",ka:"Georgian",de:"German",el:"Greek",kl:"Kalaallisut",gn:"Guarani",gu:"Gujarati",ht:"Haitian Creole",ha:"Hausa",he:"Hebrew",hz:"Herero",hi:"Hindi",ho:"Hiri Motu",hu:"Hungarian",is:"Icelandic",io:"Ido",ig:"Igbo",id:"Indonesian",ia:"Interlingua",ie:"Interlingue",iu:"Inuktitut",ik:"Inupiak",ga:"Irish",it:"Italian",ja:"Japanese",jv:"Javanese",kn:"Kannada",kr:"Kanuri",ks:"Kashmiri",kk:"Kazakh",km:"Khmer",ki:"Kikuyu",rw:"Kinyarwanda",rn:"Kirundi",ky:"Kyrgyz",kv:"Komi",kg:"Kongo",ko:"Korean",ku:"Kurdish",kj:"Kwanyama",lo:"Lao",la:"Latin",lv:"Latvian",li:"Limburgish",ln:"Lingala",lt:"Lithuanian",lu:"Luga-Katanga",lg:"Luganda, Ganda",lb:"Luxembourgish",mk:"Macedonian",mg:"Malagasy",ms:"Malay",ml:"Malayalam",mt:"Maltese",mi:"Maori",mr:"Marathi",mh:"Marshallese",mo:"Moldavian",mn:"Mongolian",na:"Nauru",nv:"Navajo",ng:"Ndonga",nd:"Northern Ndebele",ne:"Nepali",no:"Norwegian",nb:"Norwegian bokmål",nn:"Norwegian nynorsk",ii:"Sichuan Yi",oc:"Occitan",oj:"Ojibwe",cu:"Old Church Slavonic",or:"Oriya",om:"Oromo",os:"Ossetian",pi:"Pāli",ps:"Pashto, Pushto",fa:"Persian (Farsi)",pl:"Polish",pt:"Portuguese",pa:"Punjabi (Eastern)",qu:"Quechua",rm:"Romansh",ro:"Romanian",ru:"Russian",se:"Sami",sm:"Samoan",sg:"Sango",sa:"Sanskrit",sr:"Serbian",sh:"Serbo-Croatian",st:"Sesotho",tn:"Setswana",sn:"Shona",sd:"Sindhi",si:"Sinhalese",ss:"Swati",sk:"Slovak",sl:"Slovenian",so:"Somali",nr:"Southern Ndebele",es:"Spanish",su:"Sundanese",sw:"Swahili (Kiswahili)",sv:"Swedish",tl:"Tagalog",ty:"Tahitian",tg:"Tajik",ta:"Tamil",tt:"Tatar",te:"Telugu",th:"Thai",bo:"Tibetan",ti:"Tigrinya",to:"Tonga",ts:"Tsonga",tr:"Turkish",tk:"Turkmen",tw:"Twi",ug:"Uyghur",uk:"Ukrainian",ur:"Urdu",uz:"Uzbek",ve:"Venda",vi:"Vietnamese",vo:"Volapük",wa:"Wallon",cy:"Welsh",wo:"Wolof",fy:"Western Frisian",xh:"Xhosa",yi:"Yiddish",yo:"Yoruba",za:"Zhuang, Chuang",zu:"Zulu"};exports.ChaiActionsRegistry=i.actionsRegistery;exports.db=i.db;exports.getAskAiSystemPrompt=i.getAskAiSystemPrompt;exports.safeQuery=i.safeQuery;exports.schema=i.schema;exports.LANGUAGES=h;exports.initChaiBuilderActionHandler=l;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const i=require("./actions-registery-BRgseJas.cjs"),l=s=>async o=>{const{apiKey:t,userId:u}=s;try{const a=o,{action:r,data:e}=a,n=i.getChaiAction(r);return n?n.validate(e)?(n.setContext({appId:t,userId:u}),await n.execute(e)):{error:`Validation failed: ${n.getValidationErrors(e)}`,code:"INVALID_REQUEST_DATA",status:400}:{error:`Action ${r} not found`,code:"ACTION_NOT_FOUND",status:404}}catch(a){return console.log("Error in builderApiHandler:",a),a instanceof i.ActionError?{error:a.message,code:a.code,status:a.status||400}:{error:"Something went wrong.",status:500}}},h={ab:"Abkhazian",aa:"Afar",af:"Afrikaans",ak:"Akan",sq:"Albanian",am:"Amharic",ar:"Arabic",an:"Aragonese",hy:"Armenian",as:"Assamese",av:"Avaric",ae:"Avestan",ay:"Aymara",az:"Azerbaijani",bm:"Bambara",ba:"Bashkir",eu:"Basque",be:"Belarusian",bn:"Bengali",bh:"Bihari",bi:"Bislama",bs:"Bosnian",br:"Breton",bg:"Bulgarian",my:"Burmese",ca:"Catalan",ch:"Chamorro",ce:"Chechen",ny:"Chichewa",zh:"Chinese","zh-Hans":"Chinese (Simplified)","zh-Hant":"Chinese (Traditional)",cv:"Chuvash",kw:"Cornish",co:"Corsican",cr:"Cree",hr:"Croatian",cs:"Czech",da:"Danish",dv:"Maldivian",nl:"Dutch",dz:"Dzongkha",en:"English",eo:"Esperanto",et:"Estonian",ee:"Ewe",fo:"Faroese",fj:"Fijian",fi:"Finnish",fr:"French",ff:"Fula, Pular",gl:"Galician",gd:"Gaelic (Scottish)",gv:"Manx",ka:"Georgian",de:"German",el:"Greek",kl:"Kalaallisut",gn:"Guarani",gu:"Gujarati",ht:"Haitian Creole",ha:"Hausa",he:"Hebrew",hz:"Herero",hi:"Hindi",ho:"Hiri Motu",hu:"Hungarian",is:"Icelandic",io:"Ido",ig:"Igbo",id:"Indonesian",ia:"Interlingua",ie:"Interlingue",iu:"Inuktitut",ik:"Inupiak",ga:"Irish",it:"Italian",ja:"Japanese",jv:"Javanese",kn:"Kannada",kr:"Kanuri",ks:"Kashmiri",kk:"Kazakh",km:"Khmer",ki:"Kikuyu",rw:"Kinyarwanda",rn:"Kirundi",ky:"Kyrgyz",kv:"Komi",kg:"Kongo",ko:"Korean",ku:"Kurdish",kj:"Kwanyama",lo:"Lao",la:"Latin",lv:"Latvian",li:"Limburgish",ln:"Lingala",lt:"Lithuanian",lu:"Luga-Katanga",lg:"Luganda, Ganda",lb:"Luxembourgish",mk:"Macedonian",mg:"Malagasy",ms:"Malay",ml:"Malayalam",mt:"Maltese",mi:"Maori",mr:"Marathi",mh:"Marshallese",mo:"Moldavian",mn:"Mongolian",na:"Nauru",nv:"Navajo",ng:"Ndonga",nd:"Northern Ndebele",ne:"Nepali",no:"Norwegian",nb:"Norwegian bokmål",nn:"Norwegian nynorsk",ii:"Sichuan Yi",oc:"Occitan",oj:"Ojibwe",cu:"Old Church Slavonic",or:"Oriya",om:"Oromo",os:"Ossetian",pi:"Pāli",ps:"Pashto, Pushto",fa:"Persian (Farsi)",pl:"Polish",pt:"Portuguese",pa:"Punjabi (Eastern)",qu:"Quechua",rm:"Romansh",ro:"Romanian",ru:"Russian",se:"Sami",sm:"Samoan",sg:"Sango",sa:"Sanskrit",sr:"Serbian",sh:"Serbo-Croatian",st:"Sesotho",tn:"Setswana",sn:"Shona",sd:"Sindhi",si:"Sinhalese",ss:"Swati",sk:"Slovak",sl:"Slovenian",so:"Somali",nr:"Southern Ndebele",es:"Spanish",su:"Sundanese",sw:"Swahili (Kiswahili)",sv:"Swedish",tl:"Tagalog",ty:"Tahitian",tg:"Tajik",ta:"Tamil",tt:"Tatar",te:"Telugu",th:"Thai",bo:"Tibetan",ti:"Tigrinya",to:"Tonga",ts:"Tsonga",tr:"Turkish",tk:"Turkmen",tw:"Twi",ug:"Uyghur",uk:"Ukrainian",ur:"Urdu",uz:"Uzbek",ve:"Venda",vi:"Vietnamese",vo:"Volapük",wa:"Wallon",cy:"Welsh",wo:"Wolof",fy:"Western Frisian",xh:"Xhosa",yi:"Yiddish",yo:"Yoruba",za:"Zhuang, Chuang",zu:"Zulu"};exports.ChaiActionsRegistry=i.actionsRegistery;exports.db=i.db;exports.getAskAiSystemPrompt=i.getAskAiSystemPrompt;exports.safeQuery=i.safeQuery;exports.schema=i.schema;exports.LANGUAGES=h;exports.initChaiBuilderActionHandler=l;
package/dist/actions.d.ts CHANGED
@@ -2555,21 +2555,79 @@ export declare type ChaiAsset = {
2555
2555
  height?: number;
2556
2556
  };
2557
2557
 
2558
- export declare type ChaiBuilderPage = {
2558
+ declare type ChaiBlock<T = Record<string, any>> = {
2559
+ _id: string;
2560
+ _name?: string;
2561
+ _parent?: string | null | undefined;
2562
+ _libBlock?: string;
2563
+ _type: string;
2564
+ partialBlockId?: string;
2565
+ } & T;
2566
+
2567
+ export declare interface ChaiBuilderPagesAIInterface {
2568
+ handleRequest(options: AIChatOptions, res: any): Promise<StreamTextResult<any, any>>;
2569
+ isConfigured(): boolean;
2570
+ }
2571
+
2572
+ declare interface ChaiDesignTokens {
2573
+ [uniqueId: string]: {
2574
+ name: string;
2575
+ value: string;
2576
+ };
2577
+ }
2578
+
2579
+ export declare interface ChaiLoggedInUser {
2559
2580
  id: string;
2560
- slug: string;
2581
+ email: string;
2561
2582
  name: string;
2583
+ avatar?: string;
2584
+ }
2585
+
2586
+ export declare type ChaiPage = {
2587
+ id: string;
2588
+ slug: string;
2562
2589
  lang: string;
2590
+ name: string;
2591
+ pageType: string;
2592
+ blocks: ChaiBlock[];
2593
+ createdAt: string;
2594
+ lastSaved: string;
2595
+ dynamic: boolean;
2563
2596
  online: boolean;
2564
- seo: Record<string, any>;
2597
+ seo: ChaiPageSeo;
2598
+ app: string;
2599
+ primaryPage?: string | null;
2600
+ currentEditor?: string | null;
2601
+ changes: object[];
2602
+ parent?: string | null;
2603
+ libRefId?: string | null;
2604
+ dynamicSlugCustom?: string | null;
2605
+ metadata?: object;
2606
+ jsonld?: object;
2607
+ globalJsonLds?: string[];
2608
+ links?: string;
2609
+ partialBlocks?: string;
2610
+ designTokens?: ChaiDesignTokens;
2565
2611
  };
2566
2612
 
2567
- export declare interface ChaiBuilderPagesAIInterface {
2568
- handleRequest(options: AIChatOptions, res: any): Promise<StreamTextResult<any, any>>;
2569
- isConfigured(): boolean;
2570
- }
2613
+ declare type ChaiPageProps<T = Record<string, any>> = {
2614
+ slug: string;
2615
+ searchParams?: Record<string, string>;
2616
+ } & T;
2571
2617
 
2572
- export declare type ChaiBuilderPageType = {
2618
+ declare type ChaiPageSeo = {
2619
+ title?: string;
2620
+ description?: string;
2621
+ ogTitle?: string;
2622
+ ogDescription?: string;
2623
+ ogImage?: string;
2624
+ canonicalUrl?: string;
2625
+ noIndex?: boolean;
2626
+ noFollow?: boolean;
2627
+ jsonLD?: string;
2628
+ };
2629
+
2630
+ export declare type ChaiPageType = {
2573
2631
  key: string;
2574
2632
  helpText?: string;
2575
2633
  icon?: string;
@@ -2577,53 +2635,72 @@ export declare type ChaiBuilderPageType = {
2577
2635
  name: string | (() => Promise<string>);
2578
2636
  dynamicSegments?: string;
2579
2637
  dynamicSlug?: string;
2580
- getDynamicPages?: ({ query, uuid }: {
2638
+ getDynamicPages?: ({ query, uuid, }: {
2581
2639
  query?: string;
2582
2640
  uuid?: string;
2583
- }) => Promise<ChaiDynamicPage[]>;
2584
- search?: (query: string) => Promise<PageTypeSearchResult[] | Error>;
2641
+ }) => Promise<Pick<ChaiPage, "id" | "name" | "slug" | "primaryPage">[]>;
2642
+ search?: (query: string) => Promise<Pick<ChaiPage, "id" | "name" | "slug">[] | Error>;
2585
2643
  resolveLink?: (id: string, draft?: boolean, lang?: string) => Promise<string>;
2586
- onCreate?: (data: Omit<ChaiBuilderPage, "seo">) => Promise<void>;
2587
- onUpdate?: (data: ChaiBuilderPage) => Promise<void>;
2588
- onDelete?: (data: Pick<ChaiBuilderPage, "id">) => Promise<void>;
2644
+ onCreate?: (data: Partial<ChaiPage> & {
2645
+ id: string;
2646
+ }) => Promise<void>;
2647
+ onUpdate?: (data: Partial<ChaiPage> & {
2648
+ id: string;
2649
+ }) => Promise<void>;
2650
+ onDelete?: (data: Pick<ChaiPage, "id">) => Promise<void>;
2589
2651
  dataProvider?: (args: {
2590
2652
  lang: string;
2591
2653
  draft: boolean;
2592
2654
  inBuilder: boolean;
2593
2655
  pageProps: ChaiPageProps;
2594
2656
  }) => Promise<Record<string, any>>;
2595
- defaultTrackingInfo?: () => Record<string, any>;
2596
2657
  defaultSeo?: () => Record<string, any>;
2597
2658
  defaultJSONLD?: () => Record<string, any>;
2598
2659
  defaultMetaTags?: () => Record<string, string>;
2599
2660
  };
2600
2661
 
2601
- export declare type ChaiBuilderUserInfo = {
2602
- id: string;
2603
- email: string;
2604
- name: string;
2605
- avatar?: string;
2662
+ declare type ChaiTheme = {
2663
+ fontFamily: {
2664
+ heading: string;
2665
+ body: string;
2666
+ };
2667
+ borderRadius: string;
2668
+ colors: {
2669
+ background: [HexColor, HexColor];
2670
+ foreground: [HexColor, HexColor];
2671
+ primary: [HexColor, HexColor];
2672
+ "primary-foreground": [HexColor, HexColor];
2673
+ secondary: [HexColor, HexColor];
2674
+ "secondary-foreground": [HexColor, HexColor];
2675
+ muted: [HexColor, HexColor];
2676
+ "muted-foreground": [HSLColor, HSLColor];
2677
+ accent: [HSLColor, HSLColor];
2678
+ "accent-foreground": [HSLColor, HSLColor];
2679
+ destructive: [HSLColor, HSLColor];
2680
+ "destructive-foreground": [HSLColor, HSLColor];
2681
+ border: [HSLColor, HSLColor];
2682
+ input: [HSLColor, HSLColor];
2683
+ ring: [HexColor, HexColor];
2684
+ card: [HexColor, HexColor];
2685
+ "card-foreground": [HexColor, HexColor];
2686
+ popover: [HexColor, HexColor];
2687
+ "popover-foreground": [HexColor, HexColor];
2688
+ };
2606
2689
  };
2607
2690
 
2608
- export declare type ChaiDynamicPage = {
2691
+ export declare type ChaiUserInfo = {
2609
2692
  id: string;
2610
- slug: string;
2693
+ email: string;
2611
2694
  name: string;
2612
- primaryPage?: string;
2695
+ avatar?: string;
2613
2696
  };
2614
2697
 
2615
- export declare interface ChaiPageProps {
2616
- slug: string;
2617
- searchParams?: Record<string, string>;
2618
- [key: string]: any;
2619
- }
2620
-
2621
2698
  export declare type ChaiWebsiteSetting = {
2622
2699
  appKey: string;
2623
2700
  fallbackLang: string;
2624
2701
  languages: string[];
2625
- theme: Record<"fontFamily" | "borderRadius" | "colors", any>;
2626
- designTokens: DesignTokens;
2702
+ theme: ChaiTheme;
2703
+ designTokens: ChaiDesignTokens;
2627
2704
  };
2628
2705
 
2629
2706
  export declare const db: PostgresJsDatabase<typeof schema>;
@@ -2636,13 +2713,6 @@ declare type DbResult<T> = {
2636
2713
  error: Error;
2637
2714
  };
2638
2715
 
2639
- export declare type DesignTokens = {
2640
- [token: string]: {
2641
- value: string;
2642
- name: string;
2643
- };
2644
- };
2645
-
2646
2716
  /**
2647
2717
  *
2648
2718
  * @param translation
@@ -2650,6 +2720,10 @@ export declare type DesignTokens = {
2650
2720
  */
2651
2721
  export declare function getAskAiSystemPrompt(initiator?: string | null): string;
2652
2722
 
2723
+ declare type HexColor = string;
2724
+
2725
+ declare type HSLColor = string;
2726
+
2653
2727
  export declare const initChaiBuilderActionHandler: (params: {
2654
2728
  apiKey: string;
2655
2729
  userId: string;
@@ -3128,19 +3202,6 @@ generated: undefined;
3128
3202
  dialect: "pg";
3129
3203
  }>;
3130
3204
 
3131
- export declare interface LoggedInUser {
3132
- id: string;
3133
- email: string;
3134
- name: string;
3135
- avatar?: string;
3136
- }
3137
-
3138
- export declare type PageTypeSearchResult = {
3139
- id: string;
3140
- name: string;
3141
- slug?: string;
3142
- };
3143
-
3144
3205
  export declare function safeQuery<T>(queryFn: () => Promise<T>): Promise<DbResult<T>>;
3145
3206
 
3146
3207
  declare namespace schema {
package/dist/actions.js CHANGED
@@ -1,5 +1,5 @@
1
- import { g as u, A as h } from "./actions-registery-DqrFhSMp.js";
2
- import { a as b, d as y, b as A, s as S, c as v } from "./actions-registery-DqrFhSMp.js";
1
+ import { g as u, A as h } from "./actions-registery-DRV8xywr.js";
2
+ import { a as b, d as y, b as A, s as S, c as v } from "./actions-registery-DRV8xywr.js";
3
3
  const c = (r) => async (s) => {
4
4
  const { apiKey: o, userId: t } = r;
5
5
  try {
@@ -1,7 +1,7 @@
1
1
  import { jsx as e, jsxs as t } from "react/jsx-runtime";
2
2
  import { B as r } from "./register-chai-top-bar-CX_JkRJn.js";
3
- import { R as i, U as o, V as l, W as c, X as d } from "./index-BK0xWO1z.js";
4
- import { ao as m, a as h, B as u, E as p, P as N } from "./index-D5d4QDq7.js";
3
+ import { R as i, U as o, V as l, W as c, X as d } from "./index-mjuSGlPU.js";
4
+ import { ao as m, a as h, B as u, E as p, P as N } from "./index-Be9lAaD7.js";
5
5
  import { TableIcon as f, Edit as T } from "lucide-react";
6
6
  import { useTranslation as E } from "react-i18next";
7
7
  const b = () => {
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("react/jsx-runtime"),c=require("./register-chai-top-bar-DWTuRU53.cjs"),t=require("./index-Bm8iS2OH.cjs"),s=require("./index-BRJCj7c_.cjs"),n=require("lucide-react"),l=require("react-i18next"),o=()=>{const r=s.useSendRealtimeEvent(),{setPageStatus:i}=s.usePageLockStatus(),{t:a}=l.useTranslation();return e.jsx(s.BlurContainer,{children:e.jsxs(t.Card,{className:"mx-auto w-full max-w-md",children:[e.jsx(t.CardHeader,{className:"space-y-1",children:e.jsxs(t.CardTitle,{className:"flex items-center gap-2 text-xl font-medium",children:[e.jsx(n.TableIcon,{className:"h-6 w-6 text-green-500"}),e.jsx("span",{children:a("Active in Another Tab")})]})}),e.jsx(t.CardContent,{className:"space-y-4",children:e.jsx("p",{className:"text-sm text-muted-foreground",children:a("This page is currently being edited in another tab. You can continue editing here, which will close the editor in the other tab.")})}),e.jsx(t.CardFooter,{className:"flex justify-end gap-2",children:e.jsxs(c.Button,{variant:"default",onClick:()=>{r(s.EVENT.CONTINUE_EDITING_IN_THIS_TAB_REQUEST),i(s.PAGE_STATUS.CHECKING)},className:"gap-2",children:[e.jsx(n.Edit,{className:"h-4 w-4"}),a("Continue Editing Here")]})})]})})};exports.default=o;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("react/jsx-runtime"),c=require("./register-chai-top-bar-DWTuRU53.cjs"),t=require("./index-BhqugjzS.cjs"),s=require("./index-CNEEEgTV.cjs"),n=require("lucide-react"),l=require("react-i18next"),o=()=>{const r=s.useSendRealtimeEvent(),{setPageStatus:i}=s.usePageLockStatus(),{t:a}=l.useTranslation();return e.jsx(s.BlurContainer,{children:e.jsxs(t.Card,{className:"mx-auto w-full max-w-md",children:[e.jsx(t.CardHeader,{className:"space-y-1",children:e.jsxs(t.CardTitle,{className:"flex items-center gap-2 text-xl font-medium",children:[e.jsx(n.TableIcon,{className:"h-6 w-6 text-green-500"}),e.jsx("span",{children:a("Active in Another Tab")})]})}),e.jsx(t.CardContent,{className:"space-y-4",children:e.jsx("p",{className:"text-sm text-muted-foreground",children:a("This page is currently being edited in another tab. You can continue editing here, which will close the editor in the other tab.")})}),e.jsx(t.CardFooter,{className:"flex justify-end gap-2",children:e.jsxs(c.Button,{variant:"default",onClick:()=>{r(s.EVENT.CONTINUE_EDITING_IN_THIS_TAB_REQUEST),i(s.PAGE_STATUS.CHECKING)},className:"gap-2",children:[e.jsx(n.Edit,{className:"h-4 w-4"}),a("Continue Editing Here")]})})]})})};exports.default=o;
@@ -1,8 +1,8 @@
1
1
  import { jsx as t, jsxs as g, Fragment as hn } from "react/jsx-runtime";
2
2
  import { z as fn, D as H, B as gn } from "./register-chai-top-bar-CX_JkRJn.js";
3
- import { n as mn, o as xn, D as vn, d as pn, e as Sn, f as Nn, p as Fn, L as I, q as wn } from "./index-BK0xWO1z.js";
4
- import { p as An, r as Cn, S as Dn } from "./slug-input-DoEIq5rs.js";
5
- import { g as En, h as $n, i as Ln, j as kn, k as Tn, l as Z, m as Un, c as Bn, L as A } from "./index-D5d4QDq7.js";
3
+ import { n as mn, o as xn, D as vn, d as pn, e as Sn, f as Nn, p as Fn, L as I, q as wn } from "./index-mjuSGlPU.js";
4
+ import { p as An, r as Cn, S as Dn } from "./slug-input-C3UrwSkt.js";
5
+ import { g as En, h as $n, i as Ln, j as kn, k as Tn, l as Z, m as Un, c as Bn, L as A } from "./index-Be9lAaD7.js";
6
6
  import { filter as Rn, find as Wn, startsWith as In } from "lodash-es";
7
7
  import { Loader as qn } from "lucide-react";
8
8
  import { useMemo as $, useState as L, useEffect as _ } from "react";
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("react/jsx-runtime"),k=require("./register-chai-top-bar-DWTuRU53.cjs"),N=require("./index-Bm8iS2OH.cjs"),Y=require("./slug-input-CsVJAr7r.cjs"),g=require("./index-BRJCj7c_.cjs"),j=require("lodash-es"),ds=require("lucide-react"),v=require("react"),U=require("react-i18next"),Z=({edit:c,lang:h,languages:a,name:u,setLang:t,setName:i,primaryPageObject:o})=>{const{t:s}=U.useTranslation();return e.jsxs("div",{className:"space-y-1",children:[e.jsx(N.Label,{htmlFor:"lang",children:s("Language")}),e.jsxs("select",{value:c?"":h,disabled:c||!a.length,onChange:l=>{const x=l.target.value;t(x),!c&&(j.startsWith(u,o==null?void 0:o.name)||u.length===0)&&i(`${o==null?void 0:o.name} - ${g.LANGUAGES[x]}`)},className:"col-span-3 flex h-9 w-full rounded-md border border-border bg-background px-3 py-1 text-sm shadow-sm transition-colors file:border-0 file:bg-transparent file:text-sm file:font-medium placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:cursor-not-allowed disabled:opacity-50",children:[e.jsx("option",{value:"",disabled:!0,children:c?g.LANGUAGES[h]||h:a.length?s("Choose language"):s("All available language page is created.")}),a.map(l=>e.jsx("option",{value:l,children:g.LANGUAGES[l]||l},l))]})]})},_=({lang:c,name:h,setName:a,parentHasSelectedLanguagePage:u})=>{const{t}=U.useTranslation();return e.jsxs("div",{className:"space-y-1",children:[e.jsx(N.Label,{htmlFor:"name",children:t("Page Name")}),e.jsx(k.Input,{id:"name",value:c?h:"",onChange:i=>a(i.target.value),required:!0,placeholder:t(c?"Enter page name":"Choose language to add slug"),disabled:!u||!c})]})},cs=({dynamic:c,isNonSlugPageType:h,isRootPage:a,lang:u,useLanguagePrefix:t,setUseLanguagePrefix:i,isHomePage:o,parentSlug:s,parentHasSelectedLanguagePage:l,slug:x,setSlug:d,setIsSlugValid:S,getSlug:f})=>{const{t:r}=U.useTranslation();return h?null:e.jsxs("div",{className:"space-y-1",children:[a&&u&&e.jsxs("div",{className:"flex items-center space-x-2 pb-1",children:[e.jsx("input",{type:"checkbox",id:"useLanguagePrefix",checked:t,onChange:A=>i(A.target.checked),className:"rounded border-gray-300"}),e.jsxs(N.Label,{htmlFor:"useLanguagePrefix",className:"text-sm font-normal leading-tight",children:["Add language code (",e.jsxs("span",{className:"font-mono text-gray-900",children:["/",u]}),") as slug prefix"]})]}),e.jsx(N.Label,{htmlFor:"slug",children:r("Slug")}),c?e.jsx(k.Alert,{variant:"default",className:"p-2 text-xs font-medium italic text-muted-foreground",children:r("This page will use dynamic slug as defined in primary page")}):e.jsx(Y.SlugInput,{disabled:!u||!l,value:x,onChange:d,placeholder:r(u?o&&t?"Leave empty for home page":"Enter page slug":"Choose language to add slug"),parentSlug:s,onValidationChange:S,fullSlug:f()})]})},H=({parentHasSelectedLanguagePage:c,name:h,lang:a,slug:u,edit:t,id:i,primaryPageObject:o,pages:s,isNonSlugPageType:l,isHomePage:x,useLanguagePrefix:d,isSlugValid:S,isPending:f})=>{const{t:r}=U.useTranslation(),A=f||!h||!a||s.some(m=>(t?m.id!==i:!0)&&m.parent===(o==null?void 0:o.id)&&m.lang===a)||!l&&!(x&&d)&&(!S||!u);return e.jsx(N.DialogFooter,{children:c?e.jsxs(e.Fragment,{children:[e.jsx(k.Button,{type:"submit",disabled:A&&!o.dynamic,children:f?e.jsxs("span",{className:"flex items-center gap-2",children:[e.jsx("span",{className:"loader mr-2"}),r(t?"Updating...":"Adding...")]}):r(t?"Update":"Add new language page")}),s.some(m=>(t?m.id!==i:!0)&&m.parent===(o==null?void 0:o.id)&&m.lang===a)&&e.jsx("p",{className:"mt-2 text-xs text-red-500",children:r("A page for this language already exists.")})]}):a&&e.jsx(k.Alert,{variant:"destructive",children:e.jsxs("p",{className:"mx-auto w-5/6 text-center",children:[r("You need to create the")," ",e.jsx("span",{className:"font-medium",children:g.LANGUAGES[a]})," ",r("page in the parent to add here.")]})})})},rs=({onSubmit:c,edit:h,lang:a,languages:u,name:t,setLang:i,setName:o,primaryPageObject:s,parentHasSelectedLanguagePage:l,id:x,pages:d,isNonSlugPageType:S,isHomePage:f,useLanguagePrefix:r,slug:A,isSlugValid:m,isPending:p})=>e.jsxs("form",{onSubmit:c,children:[e.jsxs("div",{className:"grid gap-4 py-4",children:[e.jsx(Z,{edit:h,lang:a,languages:u,name:t,setLang:i,setName:o,primaryPageObject:s}),e.jsx(_,{lang:a,name:t,setName:o,parentHasSelectedLanguagePage:l})]}),e.jsx(H,{parentHasSelectedLanguagePage:l,name:t,lang:a,slug:A,edit:h,id:x,primaryPageObject:s,pages:d,isNonSlugPageType:S,isHomePage:f,useLanguagePrefix:r,isSlugValid:m,isPending:p})]}),hs=({loading:c,onSubmit:h,edit:a,lang:u,languages:t,name:i,setLang:o,setName:s,primaryPageObject:l,parentHasSelectedLanguagePage:x,isNonSlugPageType:d,isRootPage:S,useLanguagePrefix:f,setUseLanguagePrefix:r,isHomePage:A,parentSlug:m,slug:p,setSlug:C,isSlugValid:T,setIsSlugValid:I,getSlug:M,isPending:$,id:q,pages:L})=>c?e.jsx("div",{className:"flex h-80 items-center justify-center",children:e.jsx(ds.Loader,{className:"animate-spin"})}):d?e.jsx(rs,{onSubmit:h,edit:a,lang:u,languages:t,name:i,setLang:o,setName:s,primaryPageObject:l,parentHasSelectedLanguagePage:x,id:q,pages:L,isNonSlugPageType:d,isHomePage:A,useLanguagePrefix:f,slug:p,isSlugValid:T,isPending:$}):e.jsxs("form",{onSubmit:h,children:[e.jsxs("div",{className:"grid gap-4 py-4",children:[e.jsx(Z,{edit:a,lang:u,languages:t,name:i,setLang:o,setName:s,primaryPageObject:l}),e.jsx(_,{lang:u,name:i,setName:s,parentHasSelectedLanguagePage:x}),e.jsx(cs,{dynamic:l==null?void 0:l.dynamic,isNonSlugPageType:d,isRootPage:S,lang:u,useLanguagePrefix:f,setUseLanguagePrefix:r,isHomePage:A,parentSlug:m,parentHasSelectedLanguagePage:x,slug:p,setSlug:C,isSlugValid:T,setIsSlugValid:I,getSlug:M})]}),e.jsx(H,{parentHasSelectedLanguagePage:x,name:i,lang:u,slug:p,edit:a,id:q,primaryPageObject:l,pages:L,isNonSlugPageType:d,isHomePage:A,useLanguagePrefix:f,isSlugValid:T,isPending:$})]}),xs=({id:c,isOpen:h,onClose:a,primaryPage:u,edit:t=!1,preselectedLang:i})=>{const{data:o=[]}=g.useWebsitePages(),s=v.useMemo(()=>o.find(n=>n.id===u),[o,u]),[l,x]=v.useState(""),[d,S]=v.useState(""),[f,r]=v.useState(""),[A,m]=v.useState(!0),[p,C]=v.useState(!0),{mutate:T,isPending:I}=g.useCreatePage(),{mutate:M,isPending:$}=g.useUpdatePage(),q=I||$,{data:L,isFetching:b}=g.useWebsiteSetting(),z=g.useFallbackLang(),{data:w,isFetching:y}=g.useLanguagePages(u),{data:F=[],isFetching:P}=g.useLanguagePages(s==null?void 0:s.parent),{data:J=[],isFetching:O}=g.usePageTypes(),{setSelectedLang:ss}=N.useLanguages(),{t:B}=U.useTranslation(),[,es]=g.useSearchParams(),[,ns]=N.useSidebarActivePanel(),ts=b||y||P||O,G=v.useMemo(()=>j.filter(L==null?void 0:L.languages,n=>!j.find(w,{lang:n})),[L,w]),W=v.useMemo(()=>J.find(n=>n.key===(s==null?void 0:s.pageType)),[J,s==null?void 0:s.pageType]),K=!(W!=null&&W.hasSlug),V=(s==null?void 0:s.slug)==="/";v.useEffect(()=>{if(!t&&s&&i&&(S(i),x(`${s.name} - ${g.LANGUAGES[i]}`)),!t||!s)return;const n=w==null?void 0:w.find(is=>is.id===c);if(!n)return;x(n.name),S(n.lang);const E=n.slug||"",{initSlug:R,prefix:us}=Y.parseSlugForEdit(E,s);r(R),C(us)},[t,c,w,s,i]),v.useEffect(()=>{if(i)S(i);else if((G==null?void 0:G.length)===1&&!t){const n=G[0];if(!n||!g.LANGUAGES[n])return;S(n),(!l||l===(s==null?void 0:s.name))&&x(`${s==null?void 0:s.name} - ${g.LANGUAGES[n]}`)}},[i,G,t,l,s]);const{parentSlug:Q,isRootPage:D}=v.useMemo(()=>{if(V||!d)return{parentSlug:void 0,isRootPage:!(s!=null&&s.parent)};if(!(s!=null&&s.parent))return{parentSlug:p?`/${d}`:void 0,isRootPage:!0};const n=F==null?void 0:F.find(E=>E.lang===d);return{parentSlug:n==null?void 0:n.slug,isRootPage:!1}},[s==null?void 0:s.parent,F,p,d,V]),os=v.useMemo(()=>D?!0:!!(F!=null&&F.some(n=>(n==null?void 0:n.lang)===d)),[d,F,D]),X=()=>{let n="";return D?n=`/${p?[d,f].filter(Boolean).join("/"):f}`:n=`${Y.removeSlugExtension(Q)}/${f}`,n.replace(/\/{2,}/g,"/").replace(/\/$/,"")},ls=n=>{const E=new URLSearchParams(window.location.search);z&&n===z?E.delete("lang"):E.set("lang",n),es(E),window.dispatchEvent(new PopStateEvent("popstate"))},as=n=>{n.preventDefault();const E={name:l,lang:d,primaryPage:s==null?void 0:s.id,slug:K?"":X(),pageType:s==null?void 0:s.pageType,...t&&{id:c}},R=()=>{!t&&d&&(ss(d),ls(d)),ns("outline"),a()};t?M(E,{onSuccess:R}):T(E,{onSuccess:R})};return e.jsx(N.Dialog,{open:h,onOpenChange:a,children:h&&e.jsxs(N.DialogContent,{className:"text-slate-600 sm:max-w-[425px]",children:[e.jsxs(N.DialogHeader,{children:[e.jsx(N.DialogTitle,{children:B(t?"Edit language":"Add new language page")}),e.jsx(N.DialogDescription,{className:"font-light",children:B("Enter the details for the language")})]}),e.jsx(hs,{id:c,pages:o,loading:ts,onSubmit:as,edit:t,lang:d,languages:G,name:l,setLang:S,setName:x,primaryPageObject:s,parentHasSelectedLanguagePage:os,isNonSlugPageType:K,isRootPage:D,useLanguagePrefix:p,setUseLanguagePrefix:C,isHomePage:V,parentSlug:Q,slug:f,setSlug:r,isSlugValid:A,setIsSlugValid:m,getSlug:X,isPending:q})]})})};exports.default=xs;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("react/jsx-runtime"),k=require("./register-chai-top-bar-DWTuRU53.cjs"),N=require("./index-BhqugjzS.cjs"),Y=require("./slug-input-B39SPBdP.cjs"),g=require("./index-CNEEEgTV.cjs"),j=require("lodash-es"),ds=require("lucide-react"),v=require("react"),U=require("react-i18next"),Z=({edit:c,lang:h,languages:a,name:u,setLang:t,setName:i,primaryPageObject:o})=>{const{t:s}=U.useTranslation();return e.jsxs("div",{className:"space-y-1",children:[e.jsx(N.Label,{htmlFor:"lang",children:s("Language")}),e.jsxs("select",{value:c?"":h,disabled:c||!a.length,onChange:l=>{const x=l.target.value;t(x),!c&&(j.startsWith(u,o==null?void 0:o.name)||u.length===0)&&i(`${o==null?void 0:o.name} - ${g.LANGUAGES[x]}`)},className:"col-span-3 flex h-9 w-full rounded-md border border-border bg-background px-3 py-1 text-sm shadow-sm transition-colors file:border-0 file:bg-transparent file:text-sm file:font-medium placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:cursor-not-allowed disabled:opacity-50",children:[e.jsx("option",{value:"",disabled:!0,children:c?g.LANGUAGES[h]||h:a.length?s("Choose language"):s("All available language page is created.")}),a.map(l=>e.jsx("option",{value:l,children:g.LANGUAGES[l]||l},l))]})]})},_=({lang:c,name:h,setName:a,parentHasSelectedLanguagePage:u})=>{const{t}=U.useTranslation();return e.jsxs("div",{className:"space-y-1",children:[e.jsx(N.Label,{htmlFor:"name",children:t("Page Name")}),e.jsx(k.Input,{id:"name",value:c?h:"",onChange:i=>a(i.target.value),required:!0,placeholder:t(c?"Enter page name":"Choose language to add slug"),disabled:!u||!c})]})},cs=({dynamic:c,isNonSlugPageType:h,isRootPage:a,lang:u,useLanguagePrefix:t,setUseLanguagePrefix:i,isHomePage:o,parentSlug:s,parentHasSelectedLanguagePage:l,slug:x,setSlug:d,setIsSlugValid:S,getSlug:f})=>{const{t:r}=U.useTranslation();return h?null:e.jsxs("div",{className:"space-y-1",children:[a&&u&&e.jsxs("div",{className:"flex items-center space-x-2 pb-1",children:[e.jsx("input",{type:"checkbox",id:"useLanguagePrefix",checked:t,onChange:A=>i(A.target.checked),className:"rounded border-gray-300"}),e.jsxs(N.Label,{htmlFor:"useLanguagePrefix",className:"text-sm font-normal leading-tight",children:["Add language code (",e.jsxs("span",{className:"font-mono text-gray-900",children:["/",u]}),") as slug prefix"]})]}),e.jsx(N.Label,{htmlFor:"slug",children:r("Slug")}),c?e.jsx(k.Alert,{variant:"default",className:"p-2 text-xs font-medium italic text-muted-foreground",children:r("This page will use dynamic slug as defined in primary page")}):e.jsx(Y.SlugInput,{disabled:!u||!l,value:x,onChange:d,placeholder:r(u?o&&t?"Leave empty for home page":"Enter page slug":"Choose language to add slug"),parentSlug:s,onValidationChange:S,fullSlug:f()})]})},H=({parentHasSelectedLanguagePage:c,name:h,lang:a,slug:u,edit:t,id:i,primaryPageObject:o,pages:s,isNonSlugPageType:l,isHomePage:x,useLanguagePrefix:d,isSlugValid:S,isPending:f})=>{const{t:r}=U.useTranslation(),A=f||!h||!a||s.some(m=>(t?m.id!==i:!0)&&m.parent===(o==null?void 0:o.id)&&m.lang===a)||!l&&!(x&&d)&&(!S||!u);return e.jsx(N.DialogFooter,{children:c?e.jsxs(e.Fragment,{children:[e.jsx(k.Button,{type:"submit",disabled:A&&!o.dynamic,children:f?e.jsxs("span",{className:"flex items-center gap-2",children:[e.jsx("span",{className:"loader mr-2"}),r(t?"Updating...":"Adding...")]}):r(t?"Update":"Add new language page")}),s.some(m=>(t?m.id!==i:!0)&&m.parent===(o==null?void 0:o.id)&&m.lang===a)&&e.jsx("p",{className:"mt-2 text-xs text-red-500",children:r("A page for this language already exists.")})]}):a&&e.jsx(k.Alert,{variant:"destructive",children:e.jsxs("p",{className:"mx-auto w-5/6 text-center",children:[r("You need to create the")," ",e.jsx("span",{className:"font-medium",children:g.LANGUAGES[a]})," ",r("page in the parent to add here.")]})})})},rs=({onSubmit:c,edit:h,lang:a,languages:u,name:t,setLang:i,setName:o,primaryPageObject:s,parentHasSelectedLanguagePage:l,id:x,pages:d,isNonSlugPageType:S,isHomePage:f,useLanguagePrefix:r,slug:A,isSlugValid:m,isPending:p})=>e.jsxs("form",{onSubmit:c,children:[e.jsxs("div",{className:"grid gap-4 py-4",children:[e.jsx(Z,{edit:h,lang:a,languages:u,name:t,setLang:i,setName:o,primaryPageObject:s}),e.jsx(_,{lang:a,name:t,setName:o,parentHasSelectedLanguagePage:l})]}),e.jsx(H,{parentHasSelectedLanguagePage:l,name:t,lang:a,slug:A,edit:h,id:x,primaryPageObject:s,pages:d,isNonSlugPageType:S,isHomePage:f,useLanguagePrefix:r,isSlugValid:m,isPending:p})]}),hs=({loading:c,onSubmit:h,edit:a,lang:u,languages:t,name:i,setLang:o,setName:s,primaryPageObject:l,parentHasSelectedLanguagePage:x,isNonSlugPageType:d,isRootPage:S,useLanguagePrefix:f,setUseLanguagePrefix:r,isHomePage:A,parentSlug:m,slug:p,setSlug:C,isSlugValid:T,setIsSlugValid:I,getSlug:M,isPending:$,id:q,pages:L})=>c?e.jsx("div",{className:"flex h-80 items-center justify-center",children:e.jsx(ds.Loader,{className:"animate-spin"})}):d?e.jsx(rs,{onSubmit:h,edit:a,lang:u,languages:t,name:i,setLang:o,setName:s,primaryPageObject:l,parentHasSelectedLanguagePage:x,id:q,pages:L,isNonSlugPageType:d,isHomePage:A,useLanguagePrefix:f,slug:p,isSlugValid:T,isPending:$}):e.jsxs("form",{onSubmit:h,children:[e.jsxs("div",{className:"grid gap-4 py-4",children:[e.jsx(Z,{edit:a,lang:u,languages:t,name:i,setLang:o,setName:s,primaryPageObject:l}),e.jsx(_,{lang:u,name:i,setName:s,parentHasSelectedLanguagePage:x}),e.jsx(cs,{dynamic:l==null?void 0:l.dynamic,isNonSlugPageType:d,isRootPage:S,lang:u,useLanguagePrefix:f,setUseLanguagePrefix:r,isHomePage:A,parentSlug:m,parentHasSelectedLanguagePage:x,slug:p,setSlug:C,isSlugValid:T,setIsSlugValid:I,getSlug:M})]}),e.jsx(H,{parentHasSelectedLanguagePage:x,name:i,lang:u,slug:p,edit:a,id:q,primaryPageObject:l,pages:L,isNonSlugPageType:d,isHomePage:A,useLanguagePrefix:f,isSlugValid:T,isPending:$})]}),xs=({id:c,isOpen:h,onClose:a,primaryPage:u,edit:t=!1,preselectedLang:i})=>{const{data:o=[]}=g.useWebsitePages(),s=v.useMemo(()=>o.find(n=>n.id===u),[o,u]),[l,x]=v.useState(""),[d,S]=v.useState(""),[f,r]=v.useState(""),[A,m]=v.useState(!0),[p,C]=v.useState(!0),{mutate:T,isPending:I}=g.useCreatePage(),{mutate:M,isPending:$}=g.useUpdatePage(),q=I||$,{data:L,isFetching:b}=g.useWebsiteSetting(),z=g.useFallbackLang(),{data:w,isFetching:y}=g.useLanguagePages(u),{data:F=[],isFetching:P}=g.useLanguagePages(s==null?void 0:s.parent),{data:J=[],isFetching:O}=g.usePageTypes(),{setSelectedLang:ss}=N.useLanguages(),{t:B}=U.useTranslation(),[,es]=g.useSearchParams(),[,ns]=N.useSidebarActivePanel(),ts=b||y||P||O,G=v.useMemo(()=>j.filter(L==null?void 0:L.languages,n=>!j.find(w,{lang:n})),[L,w]),W=v.useMemo(()=>J.find(n=>n.key===(s==null?void 0:s.pageType)),[J,s==null?void 0:s.pageType]),K=!(W!=null&&W.hasSlug),V=(s==null?void 0:s.slug)==="/";v.useEffect(()=>{if(!t&&s&&i&&(S(i),x(`${s.name} - ${g.LANGUAGES[i]}`)),!t||!s)return;const n=w==null?void 0:w.find(is=>is.id===c);if(!n)return;x(n.name),S(n.lang);const E=n.slug||"",{initSlug:R,prefix:us}=Y.parseSlugForEdit(E,s);r(R),C(us)},[t,c,w,s,i]),v.useEffect(()=>{if(i)S(i);else if((G==null?void 0:G.length)===1&&!t){const n=G[0];if(!n||!g.LANGUAGES[n])return;S(n),(!l||l===(s==null?void 0:s.name))&&x(`${s==null?void 0:s.name} - ${g.LANGUAGES[n]}`)}},[i,G,t,l,s]);const{parentSlug:Q,isRootPage:D}=v.useMemo(()=>{if(V||!d)return{parentSlug:void 0,isRootPage:!(s!=null&&s.parent)};if(!(s!=null&&s.parent))return{parentSlug:p?`/${d}`:void 0,isRootPage:!0};const n=F==null?void 0:F.find(E=>E.lang===d);return{parentSlug:n==null?void 0:n.slug,isRootPage:!1}},[s==null?void 0:s.parent,F,p,d,V]),os=v.useMemo(()=>D?!0:!!(F!=null&&F.some(n=>(n==null?void 0:n.lang)===d)),[d,F,D]),X=()=>{let n="";return D?n=`/${p?[d,f].filter(Boolean).join("/"):f}`:n=`${Y.removeSlugExtension(Q)}/${f}`,n.replace(/\/{2,}/g,"/").replace(/\/$/,"")},ls=n=>{const E=new URLSearchParams(window.location.search);z&&n===z?E.delete("lang"):E.set("lang",n),es(E),window.dispatchEvent(new PopStateEvent("popstate"))},as=n=>{n.preventDefault();const E={name:l,lang:d,primaryPage:s==null?void 0:s.id,slug:K?"":X(),pageType:s==null?void 0:s.pageType,...t&&{id:c}},R=()=>{!t&&d&&(ss(d),ls(d)),ns("outline"),a()};t?M(E,{onSuccess:R}):T(E,{onSuccess:R})};return e.jsx(N.Dialog,{open:h,onOpenChange:a,children:h&&e.jsxs(N.DialogContent,{className:"text-slate-600 sm:max-w-[425px]",children:[e.jsxs(N.DialogHeader,{children:[e.jsx(N.DialogTitle,{children:B(t?"Edit language":"Add new language page")}),e.jsx(N.DialogDescription,{className:"font-light",children:B("Enter the details for the language")})]}),e.jsx(hs,{id:c,pages:o,loading:ts,onSubmit:as,edit:t,lang:d,languages:G,name:l,setLang:S,setName:x,primaryPageObject:s,parentHasSelectedLanguagePage:os,isNonSlugPageType:K,isRootPage:D,useLanguagePrefix:p,setUseLanguagePrefix:C,isHomePage:V,parentSlug:Q,slug:f,setSlug:r,isSlugValid:A,setIsSlugValid:m,getSlug:X,isPending:q})]})})};exports.default=xs;
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("react/jsx-runtime"),s=require("./index-Bm8iS2OH.cjs"),c=require("react"),a=require("react-i18next"),u=c.lazy(()=>Promise.resolve().then(()=>require("./page-creator-zSUFF4eT.cjs"))),x=({addEditPage:n,setAddEditPage:r,closePanel:l})=>{const{t:o}=a.useTranslation(),t=!!(n!=null&&n.id),i=!!n;return e.jsx(s.Dialog,{open:i,onOpenChange:()=>r(void 0),children:i&&e.jsxs(s.DialogContent,{className:"sm:max-w-[425px]",children:[e.jsxs(s.DialogHeader,{children:[e.jsxs(s.DialogTitle,{children:[o(t?"Edit":"Add New")," "]}),e.jsx(s.DialogDescription,{children:o(t?"Update your page name":"Enter details to create a new page")})]}),e.jsx(c.Suspense,{fallback:e.jsx("div",{className:"min-h-40"}),children:e.jsx(u,{closePanel:l,addEditPage:n,close:()=>r(void 0)})})]})})};exports.default=x;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("react/jsx-runtime"),s=require("./index-BhqugjzS.cjs"),c=require("react"),a=require("react-i18next"),u=c.lazy(()=>Promise.resolve().then(()=>require("./page-creator-CGglYnYg.cjs"))),x=({addEditPage:n,setAddEditPage:r,closePanel:l})=>{const{t:o}=a.useTranslation(),t=!!(n!=null&&n.id),i=!!n;return e.jsx(s.Dialog,{open:i,onOpenChange:()=>r(void 0),children:i&&e.jsxs(s.DialogContent,{className:"sm:max-w-[425px]",children:[e.jsxs(s.DialogHeader,{children:[e.jsxs(s.DialogTitle,{children:[o(t?"Edit":"Add New")," "]}),e.jsx(s.DialogDescription,{children:o(t?"Update your page name":"Enter details to create a new page")})]}),e.jsx(c.Suspense,{fallback:e.jsx("div",{className:"min-h-40"}),children:e.jsx(u,{closePanel:l,addEditPage:n,close:()=>r(void 0)})})]})})};exports.default=x;
@@ -1,8 +1,8 @@
1
1
  import { jsx as o, jsxs as r } from "react/jsx-runtime";
2
- import { D as t, d as c, e as p, f as m, p as h } from "./index-BK0xWO1z.js";
2
+ import { D as t, d as c, e as p, f as m, p as h } from "./index-mjuSGlPU.js";
3
3
  import { Suspense as f, lazy as D } from "react";
4
4
  import { useTranslation as u } from "react-i18next";
5
- const x = D(() => import("./page-creator-WX9lMrJY.js")), C = ({
5
+ const x = D(() => import("./page-creator-CgsOF0Eg.js")), C = ({
6
6
  addEditPage: e,
7
7
  setAddEditPage: s,
8
8
  closePanel: l
@@ -1,13 +1,13 @@
1
1
  import { jsxs as h, Fragment as k, jsx as n } from "react/jsx-runtime";
2
2
  import { B as y } from "./register-chai-top-bar-CX_JkRJn.js";
3
- import { n as A } from "./index-BK0xWO1z.js";
4
- import { v as B, c as F } from "./index-D5d4QDq7.js";
3
+ import { n as A } from "./index-mjuSGlPU.js";
4
+ import { v as B, c as F } from "./index-Be9lAaD7.js";
5
5
  import { Plus as z } from "lucide-react";
6
6
  import { useState as l, useEffect as I, Suspense as D, lazy as x } from "react";
7
7
  import { useTranslation as R } from "react-i18next";
8
8
  import { toast as E } from "sonner";
9
9
  import { g as G } from "./models-D95ZYr_x.js";
10
- const O = x(() => import("./ai-panel-default-lang-BIomgsN0.js")), T = x(() => import("./ai-panel-other-lang-CbAgG-qX.js")), Z = () => {
10
+ const O = x(() => import("./ai-panel-default-lang-Crz7QAxl.js")), T = x(() => import("./ai-panel-other-lang-DIF8PYLh.js")), Z = () => {
11
11
  const { t: r } = R(), [b, a] = l(""), [e, s] = l([]), [i, c] = l(!1), [f, u] = l(null), [w, d] = l(null), [C, L] = l(G().id), { selectedLang: m, fallbackLang: N } = A(), P = B(), [v] = F(), S = v.get("page"), M = (e == null ? void 0 : e.filter((t) => t.role === "user").length) >= 4, j = (e == null ? void 0 : e.filter((t) => t.role === "user").length) >= 10;
12
12
  I(() => {
13
13
  s([]);
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("react/jsx-runtime"),L=require("./register-chai-top-bar-DWTuRU53.cjs"),N=require("./index-Bm8iS2OH.cjs"),j=require("./index-BRJCj7c_.cjs"),M=require("lucide-react"),s=require("react"),k=require("react-i18next"),A=require("sonner"),B=require("./models-5gOsRC56.cjs"),R=s.lazy(()=>Promise.resolve().then(()=>require("./ai-panel-default-lang-HeYWpbMu.cjs"))),z=s.lazy(()=>Promise.resolve().then(()=>require("./ai-panel-other-lang-BMelEs3p.cjs"))),F=()=>{const{t:o}=k.useTranslation(),[m,a]=s.useState(""),[t,l]=s.useState([]),[c,i]=s.useState(!1),[u,d]=s.useState(null),[S,f]=s.useState(null),[p,b]=s.useState(B.getDefaultModel().id),{selectedLang:h,fallbackLang:q}=N.useLanguages(),P=j.useBuilderFetch(),[v]=j.useSearchParams(),w=v.get("page"),C=(t==null?void 0:t.filter(n=>n.role==="user").length)>=4,y=(t==null?void 0:t.filter(n=>n.role==="user").length)>=10;s.useEffect(()=>{l([])},[h,w]);const g=()=>{l([]),a(""),f(null),d(null),i(!1)},x={t:o,fetch:P,input:m,messages:t,setInput:a,isLoading:c,handleStop:()=>{u&&(u.abort(),d(null)),i(!1),a(""),f(null),l(n=>{const r=n[n.length-1];return r&&r.role==="assistant"&&r.isReasoning&&r.isStreaming?n.slice(0,-1):n}),A.toast.info(o("Generation stopped"))},handleReset:g,setMessages:l,setIsLoading:i,currentBlock:S,fallbackLang:q,abortController:u,setCurrentBlock:f,setAbortController:d,forceNewConversation:y,suggestNewConversation:C,selectedModel:p,onModelChange:b};return e.jsxs(e.Fragment,{children:[c&&e.jsx("div",{className:"fixed inset-0 left-0 top-0 z-40 flex h-screen w-screen flex-col items-center justify-center bg-transparent"}),e.jsxs("div",{className:"flex h-full w-full flex-col",children:[e.jsxs("div",{className:"flex w-full items-center justify-between",children:[e.jsx("p",{className:"text-xs text-gray-500",children:o("Your conversation will not be saved")}),(t==null?void 0:t.length)>0&&e.jsx(L.Button,{variant:"outline",size:"icon",onClick:g,className:"h-6 w-6",disabled:c,children:e.jsx(M.Plus,{})})]}),e.jsx(s.Suspense,{fallback:e.jsx("div",{className:"flex h-full w-full items-center justify-center text-xs",children:"Loading AI Panel"}),children:h?e.jsx(z,{...x,selectedLang:h}):e.jsx(R,{...x})})]})]})};exports.default=F;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("react/jsx-runtime"),L=require("./register-chai-top-bar-DWTuRU53.cjs"),N=require("./index-BhqugjzS.cjs"),j=require("./index-CNEEEgTV.cjs"),M=require("lucide-react"),s=require("react"),k=require("react-i18next"),A=require("sonner"),B=require("./models-5gOsRC56.cjs"),R=s.lazy(()=>Promise.resolve().then(()=>require("./ai-panel-default-lang-C3t0elrO.cjs"))),z=s.lazy(()=>Promise.resolve().then(()=>require("./ai-panel-other-lang-BRkr4Te3.cjs"))),F=()=>{const{t:o}=k.useTranslation(),[m,a]=s.useState(""),[t,l]=s.useState([]),[c,i]=s.useState(!1),[u,d]=s.useState(null),[S,f]=s.useState(null),[p,b]=s.useState(B.getDefaultModel().id),{selectedLang:h,fallbackLang:q}=N.useLanguages(),P=j.useBuilderFetch(),[v]=j.useSearchParams(),w=v.get("page"),C=(t==null?void 0:t.filter(n=>n.role==="user").length)>=4,y=(t==null?void 0:t.filter(n=>n.role==="user").length)>=10;s.useEffect(()=>{l([])},[h,w]);const g=()=>{l([]),a(""),f(null),d(null),i(!1)},x={t:o,fetch:P,input:m,messages:t,setInput:a,isLoading:c,handleStop:()=>{u&&(u.abort(),d(null)),i(!1),a(""),f(null),l(n=>{const r=n[n.length-1];return r&&r.role==="assistant"&&r.isReasoning&&r.isStreaming?n.slice(0,-1):n}),A.toast.info(o("Generation stopped"))},handleReset:g,setMessages:l,setIsLoading:i,currentBlock:S,fallbackLang:q,abortController:u,setCurrentBlock:f,setAbortController:d,forceNewConversation:y,suggestNewConversation:C,selectedModel:p,onModelChange:b};return e.jsxs(e.Fragment,{children:[c&&e.jsx("div",{className:"fixed inset-0 left-0 top-0 z-40 flex h-screen w-screen flex-col items-center justify-center bg-transparent"}),e.jsxs("div",{className:"flex h-full w-full flex-col",children:[e.jsxs("div",{className:"flex w-full items-center justify-between",children:[e.jsx("p",{className:"text-xs text-gray-500",children:o("Your conversation will not be saved")}),(t==null?void 0:t.length)>0&&e.jsx(L.Button,{variant:"outline",size:"icon",onClick:g,className:"h-6 w-6",disabled:c,children:e.jsx(M.Plus,{})})]}),e.jsx(s.Suspense,{fallback:e.jsx("div",{className:"flex h-full w-full items-center justify-center text-xs",children:"Loading AI Panel"}),children:h?e.jsx(z,{...x,selectedLang:h}):e.jsx(R,{...x})})]})]})};exports.default=F;
@@ -1,3 +1,3 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const c=require("react/jsx-runtime"),v=require("./index-Bm8iS2OH.cjs"),S=require("./selected-block-display-BfpJda4h.cjs"),P=require("lucide-react"),j=require("react"),O=require("sonner"),W=require("./models-5gOsRC56.cjs"),q=require("./apply-binding-IsUf6UWJ.cjs"),F=require("lodash-es"),$=require("@tanstack/react-query"),_=(a,k)=>{const h=a.filter(p=>p._parent===k),I=h.map(p=>p._id),A=h.flatMap(p=>_(a,p._id));return[...I,...A]},V=(a,k,h)=>{const I=F.find(a,{_id:k});if(!I)return a;const A=a.findIndex(g=>g._id===k),p=_(a,k),C=new Set([k,...p]),u=a.filter(g=>!C.has(g._id)),w=new Set(h.map(g=>g._id)),R=h.map(g=>!g._parent||!w.has(g._parent)?{...g,_parent:I._parent}:g);return[...u.slice(0,A),...R,...u.slice(A)]},K=()=>{const[,a]=v.useSelectedBlockIds(),{setNewBlocks:k}=v.useBlocksStoreUndoableActions(),{hasPermission:h}=v.usePermissions();return j.useCallback((I,A)=>{if(!h(v.PERMISSIONS.EDIT_BLOCK))return;const p=v.builderStore.get(v.presentBlocksAtom),C=I?V(p,I,A):A;k(C),A.length>0&&setTimeout(()=>a([A[0]._id]),200)},[a,k,h])},U=()=>{const{addPredefinedBlock:a}=v.useAddBlock(),k=K(),h=v.useRemoveBlocks(),I=$.useQueryClient(),A=async(s,e)=>{if(!e)return;const r=q.getBlocksFromHTML(e);await a(r,s.parentId,s.position)},p=async(s,e)=>{if(!s.blockId||!e)return;const r=q.getBlocksFromHTML(e);await k(s.blockId,r)},C=async s=>{!s.ids||s.ids.length===0||await h(s.ids)};let u=null;const w=(s,e)=>{const r=document.getElementById("canvas-iframe");if(!r)return null;const d=r==null?void 0:r.contentDocument;if(!d)return null;d.querySelectorAll("[data-stream-canvas]").forEach(m=>m.remove());let n=null;if(s&&s!=="undefined"&&(n=d.querySelector(`[data-block-id="${s}"]`)),n||(n=d.body),!n)return null;if(u=d.createElement("div"),u.setAttribute("data-stream-canvas","true"),e!==void 0&&e>=0&&n.children){const m=Math.min(e,n.children.length);m<n.children.length?n.insertBefore(u,n.children[m]):n.appendChild(u)}else n.appendChild(u);return u},R=s=>{var n;const e=document.getElementById("canvas-iframe");if(!e)return null;const r=e==null?void 0:e.contentDocument;if(!r)return null;r.querySelectorAll("[data-stream-canvas]").forEach(m=>m.remove());const f=r.querySelector(`[data-block-id="${s}"]`);return f?(u=r.createElement("div"),u.setAttribute("data-stream-canvas","true"),(n=f.parentNode)==null||n.insertBefore(u,f.nextSibling),f.style.display="none",u):null},M=(s,e,r)=>{const d=w(e,r);if(d){d.innerHTML=s;const f=d.getBoundingClientRect(),n=document.getElementById("canvas-iframe"),m=n==null?void 0:n.contentWindow;m&&(f.top>=0&&f.bottom<=m.innerHeight||d.scrollIntoView({behavior:"smooth",block:"nearest"}))}},g=(s,e)=>{const r=R(e);r&&(r.innerHTML=s)},D=s=>{const e=s.match(/^--ACTION=(.+)--$/);if(!e)return null;let d=e[1].replace(/--/g,"").split("|");const n={type:d[0]};return d.forEach(m=>{const t=m.trim();if(t.startsWith("PARENT=")){const T=t.substring(7);n.parentId=T==="undefined"?void 0:T}else t.startsWith("POS=")?n.position=parseInt(t.substring(4)):t.startsWith("ID=")?n.blockId=t.substring(3):t.startsWith("IDS=")&&(n.ids=t.substring(4).split(",").map(T=>T.trim()))}),n};return j.useCallback(async(s,e)=>{const r=new TextDecoder;let d="",f="",n=!1,m=null;const t={isInAction:!1,currentAction:null,htmlBuffer:"",isCapturingHtml:!1},T=async y=>{const o=y.trim();if(o==="--START--"){n=!0;return}if(n){if(o==="--END--"){t.currentAction&&(t.htmlBuffer||t.currentAction.type==="REMOVE")&&await E(t.currentAction,t.htmlBuffer),u&&(u.remove(),u=null);return}if(o.startsWith("--THINKING=")){const i=o.substring(11);e(l=>{const B=[...l],x=B[B.length-1];if(x&&x.role==="assistant"&&x.isReasoning)x.content=i,x.isStreaming=!1;else{const b={id:Date.now().toString(),role:"assistant",content:i,isReasoning:!0,isStreaming:!1};B.push(b)}return B});return}if(o.startsWith("--TASK=")){const i=o.substring(7),l=`task-${Date.now()}-${Math.random().toString(36).substr(2,9)}`,B={id:l,role:"assistant",content:i.replace(/--$/,""),isTask:!0,isTaskLoading:!0,isTaskCompleted:!1};m=l,e(x=>[...x,B]);return}if(o.startsWith("--MSG=")){const i=o.substring(6),l={id:Date.now().toString(),role:"assistant",content:i.replace(/--$/g,""),isReasoning:!1,isStreaming:!1};e(B=>[...B,l]);return}if(o.startsWith("--ACTION=")){t.currentAction&&(t.htmlBuffer||t.currentAction.type==="REMOVE")&&await E(t.currentAction,t.htmlBuffer),t.currentAction=D(o),t.htmlBuffer="",t.isInAction=!0;return}if(o==="--ENDACTION--"){t.currentAction&&(t.htmlBuffer||t.currentAction.type==="REMOVE")&&await E(t.currentAction,t.htmlBuffer),m&&(e(i=>i.map(l=>l.isTask?{...l,isTaskCompleted:!0}:l)),m=null),t.currentAction=null,t.htmlBuffer="",t.isInAction=!1;return}if(o==="--HTML--"){t.isCapturingHtml=!0;return}if(o==="--ENDHTML--"){t.isCapturingHtml=!1;return}if(o.startsWith("--HTML--")&&o.includes("--ENDHTML--")){const i=o.match(/^--HTML--(.+?)--ENDHTML--$/);if(i&&t.currentAction){const l=i[1];t.htmlBuffer+=l,t.currentAction.type==="ADD"?M(t.htmlBuffer,t.currentAction.parentId,t.currentAction.position):t.currentAction.type==="EDIT"&&t.currentAction.blockId&&g(t.htmlBuffer,t.currentAction.blockId)}return}t.isCapturingHtml&&t.currentAction&&(t.htmlBuffer+=y+`
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const c=require("react/jsx-runtime"),v=require("./index-BhqugjzS.cjs"),S=require("./selected-block-display-BCvTNcp2.cjs"),P=require("lucide-react"),j=require("react"),O=require("sonner"),W=require("./models-5gOsRC56.cjs"),q=require("./apply-binding-NvZX_rJe.cjs"),F=require("lodash-es"),$=require("@tanstack/react-query"),_=(a,k)=>{const h=a.filter(p=>p._parent===k),I=h.map(p=>p._id),A=h.flatMap(p=>_(a,p._id));return[...I,...A]},V=(a,k,h)=>{const I=F.find(a,{_id:k});if(!I)return a;const A=a.findIndex(g=>g._id===k),p=_(a,k),C=new Set([k,...p]),u=a.filter(g=>!C.has(g._id)),w=new Set(h.map(g=>g._id)),R=h.map(g=>!g._parent||!w.has(g._parent)?{...g,_parent:I._parent}:g);return[...u.slice(0,A),...R,...u.slice(A)]},K=()=>{const[,a]=v.useSelectedBlockIds(),{setNewBlocks:k}=v.useBlocksStoreUndoableActions(),{hasPermission:h}=v.usePermissions();return j.useCallback((I,A)=>{if(!h(v.PERMISSIONS.EDIT_BLOCK))return;const p=v.builderStore.get(v.presentBlocksAtom),C=I?V(p,I,A):A;k(C),A.length>0&&setTimeout(()=>a([A[0]._id]),200)},[a,k,h])},U=()=>{const{addPredefinedBlock:a}=v.useAddBlock(),k=K(),h=v.useRemoveBlocks(),I=$.useQueryClient(),A=async(s,e)=>{if(!e)return;const r=q.getBlocksFromHTML(e);await a(r,s.parentId,s.position)},p=async(s,e)=>{if(!s.blockId||!e)return;const r=q.getBlocksFromHTML(e);await k(s.blockId,r)},C=async s=>{!s.ids||s.ids.length===0||await h(s.ids)};let u=null;const w=(s,e)=>{const r=document.getElementById("canvas-iframe");if(!r)return null;const d=r==null?void 0:r.contentDocument;if(!d)return null;d.querySelectorAll("[data-stream-canvas]").forEach(m=>m.remove());let n=null;if(s&&s!=="undefined"&&(n=d.querySelector(`[data-block-id="${s}"]`)),n||(n=d.body),!n)return null;if(u=d.createElement("div"),u.setAttribute("data-stream-canvas","true"),e!==void 0&&e>=0&&n.children){const m=Math.min(e,n.children.length);m<n.children.length?n.insertBefore(u,n.children[m]):n.appendChild(u)}else n.appendChild(u);return u},R=s=>{var n;const e=document.getElementById("canvas-iframe");if(!e)return null;const r=e==null?void 0:e.contentDocument;if(!r)return null;r.querySelectorAll("[data-stream-canvas]").forEach(m=>m.remove());const f=r.querySelector(`[data-block-id="${s}"]`);return f?(u=r.createElement("div"),u.setAttribute("data-stream-canvas","true"),(n=f.parentNode)==null||n.insertBefore(u,f.nextSibling),f.style.display="none",u):null},M=(s,e,r)=>{const d=w(e,r);if(d){d.innerHTML=s;const f=d.getBoundingClientRect(),n=document.getElementById("canvas-iframe"),m=n==null?void 0:n.contentWindow;m&&(f.top>=0&&f.bottom<=m.innerHeight||d.scrollIntoView({behavior:"smooth",block:"nearest"}))}},g=(s,e)=>{const r=R(e);r&&(r.innerHTML=s)},D=s=>{const e=s.match(/^--ACTION=(.+)--$/);if(!e)return null;let d=e[1].replace(/--/g,"").split("|");const n={type:d[0]};return d.forEach(m=>{const t=m.trim();if(t.startsWith("PARENT=")){const T=t.substring(7);n.parentId=T==="undefined"?void 0:T}else t.startsWith("POS=")?n.position=parseInt(t.substring(4)):t.startsWith("ID=")?n.blockId=t.substring(3):t.startsWith("IDS=")&&(n.ids=t.substring(4).split(",").map(T=>T.trim()))}),n};return j.useCallback(async(s,e)=>{const r=new TextDecoder;let d="",f="",n=!1,m=null;const t={isInAction:!1,currentAction:null,htmlBuffer:"",isCapturingHtml:!1},T=async y=>{const o=y.trim();if(o==="--START--"){n=!0;return}if(n){if(o==="--END--"){t.currentAction&&(t.htmlBuffer||t.currentAction.type==="REMOVE")&&await E(t.currentAction,t.htmlBuffer),u&&(u.remove(),u=null);return}if(o.startsWith("--THINKING=")){const i=o.substring(11);e(l=>{const B=[...l],x=B[B.length-1];if(x&&x.role==="assistant"&&x.isReasoning)x.content=i,x.isStreaming=!1;else{const b={id:Date.now().toString(),role:"assistant",content:i,isReasoning:!0,isStreaming:!1};B.push(b)}return B});return}if(o.startsWith("--TASK=")){const i=o.substring(7),l=`task-${Date.now()}-${Math.random().toString(36).substr(2,9)}`,B={id:l,role:"assistant",content:i.replace(/--$/,""),isTask:!0,isTaskLoading:!0,isTaskCompleted:!1};m=l,e(x=>[...x,B]);return}if(o.startsWith("--MSG=")){const i=o.substring(6),l={id:Date.now().toString(),role:"assistant",content:i.replace(/--$/g,""),isReasoning:!1,isStreaming:!1};e(B=>[...B,l]);return}if(o.startsWith("--ACTION=")){t.currentAction&&(t.htmlBuffer||t.currentAction.type==="REMOVE")&&await E(t.currentAction,t.htmlBuffer),t.currentAction=D(o),t.htmlBuffer="",t.isInAction=!0;return}if(o==="--ENDACTION--"){t.currentAction&&(t.htmlBuffer||t.currentAction.type==="REMOVE")&&await E(t.currentAction,t.htmlBuffer),m&&(e(i=>i.map(l=>l.isTask?{...l,isTaskCompleted:!0}:l)),m=null),t.currentAction=null,t.htmlBuffer="",t.isInAction=!1;return}if(o==="--HTML--"){t.isCapturingHtml=!0;return}if(o==="--ENDHTML--"){t.isCapturingHtml=!1;return}if(o.startsWith("--HTML--")&&o.includes("--ENDHTML--")){const i=o.match(/^--HTML--(.+?)--ENDHTML--$/);if(i&&t.currentAction){const l=i[1];t.htmlBuffer+=l,t.currentAction.type==="ADD"?M(t.htmlBuffer,t.currentAction.parentId,t.currentAction.position):t.currentAction.type==="EDIT"&&t.currentAction.blockId&&g(t.htmlBuffer,t.currentAction.blockId)}return}t.isCapturingHtml&&t.currentAction&&(t.htmlBuffer+=y+`
2
2
  `,t.currentAction.type==="ADD"?M(t.htmlBuffer,t.currentAction.parentId,t.currentAction.position):t.currentAction.type==="EDIT"&&t.currentAction.blockId&&g(t.htmlBuffer,t.currentAction.blockId))}},E=async(y,o)=>{try{switch(y.type){case"ADD":await A(y,o);break;case"EDIT":await p(y,o);break;case"REMOVE":await C(y);break}e(i=>i.filter(l=>!l.isTask))}catch(i){console.log(i)}};try{for(;;){const{done:y,value:o}=await s.read();if(y)break;const i=r.decode(o,{stream:!0});d+=i,f+=i;const l=f.split(`
3
- `);f=l.pop()||"";for(const B of l)await T(B)}f&&await T(f),I.invalidateQueries({queryKey:["AI_USAGE"]})}catch(y){console.log(y)}},[h])},G=j.lazy(()=>Promise.resolve().then(()=>require("./ai-prompt-input-C_GG6nwq.cjs"))),Q=({t:a,fetch:k,input:h,messages:I,setInput:A,isLoading:p,setMessages:C,handleStop:u,setIsLoading:w,currentBlock:R,fallbackLang:M,setCurrentBlock:g,setAbortController:D,selectedModel:s=W.getDefaultModel().id,onModelChange:e})=>{const r=v.useSelectedBlock(),[,d]=v.useSelectedBlockIds(),f=v.useBlocksHtmlForAi(),n=U(),m=async(t,T,E,y)=>{var x;if(!t||p)return;g(r);const o=f(r?{blockId:r._id,additionalCoreBlocks:["Icon"]}:{additionalCoreBlocks:["Icon"]});if(r&&!o){O.toast.error(a("Something went wrong. Please try again."));return}const i={id:Date.now().toString(),role:"user",content:S.getUserPrompt({language:M,userInput:T||t,currentHtml:o}),userMessage:t},l={id:(Date.now()+1).toString(),role:"assistant",content:"",isReasoning:!0,isStreaming:!0};C(b=>[...b,i,l]),w(!0);const B=new AbortController;D(B);try{const b={messages:[i].map(L=>({role:L.role,content:L.content})),model:y||s};E&&(b.image=E);const N=await k({body:{action:"ASK_AI",data:b},streamResponse:!0});if(!N.ok)throw new Error(a("Failed to get AI response"));const H=(x=N.body)==null?void 0:x.getReader();if(!H)throw new Error(a("Response body is not readable"));await n(H,C)}catch(b){if(b.name!=="AbortError"){const N={id:(Date.now()+1).toString(),role:"assistant",content:a("Sorry, I encountered an error. Please try again.")};C(H=>[...H,N])}}finally{A(""),w(!1),g(null),D(null)}};return c.jsxs(c.Fragment,{children:[c.jsxs(S.Conversation,{className:"no-scrollbar",children:[c.jsxs(S.ConversationContent,{className:"gap-2 px-0",children:[I.length===0&&c.jsx(S.ConversationEmptyState,{icon:c.jsx(P.Bot,{size:48,className:"text-gray-300"}),title:"Start a conversation",description:a("Start a conversation with the AI assistant to add/edit current page")}),I.map(t=>t.role!=="system"&&c.jsx(j.Fragment,{children:t.isReasoning?c.jsxs(S.Reasoning,{isStreaming:t.isStreaming,defaultOpen:!0,children:[c.jsx(S.ReasoningTrigger,{className:"text-xs [&_p]:text-muted-foreground"}),c.jsx(S.ReasoningContent,{className:"p-0 text-xs",children:t.content})]}):t.isTask&&!t.isTaskCompleted?c.jsx(S.TaskMessage,{content:t.content,isLoading:t.isTaskLoading}):c.jsx(S.Message,{from:t.role,children:c.jsx(S.MessageContent,{className:"p-0",children:t.role==="assistant"?c.jsx(S.MessageResponse,{className:"p-0 text-xs",children:t.content}):c.jsx("div",{className:"p-0 text-xs",children:t.userMessage||t.content})})})},t.id))]}),c.jsx(S.ConversationScrollButton,{})]}),c.jsxs("div",{className:"border-gray-200 pb-2",children:[c.jsx(S.SelectedBlockDisplay,{onRemove:()=>d([]),isLoading:p}),c.jsx(j.Suspense,{fallback:c.jsx("div",{children:"Loading..."}),children:c.jsx(G,{input:h,setInput:A,onSend:m,onStop:u,isLoading:p,selectedLang:"",currentBlock:r||R,disabled:(h==null?void 0:h.length)===0,selectedModel:s,onModelChange:e})})]})]})};exports.default=Q;
3
+ `);f=l.pop()||"";for(const B of l)await T(B)}f&&await T(f),I.invalidateQueries({queryKey:["AI_USAGE"]})}catch(y){console.log(y)}},[h])},G=j.lazy(()=>Promise.resolve().then(()=>require("./ai-prompt-input-Ybgvrvd6.cjs"))),Q=({t:a,fetch:k,input:h,messages:I,setInput:A,isLoading:p,setMessages:C,handleStop:u,setIsLoading:w,currentBlock:R,fallbackLang:M,setCurrentBlock:g,setAbortController:D,selectedModel:s=W.getDefaultModel().id,onModelChange:e})=>{const r=v.useSelectedBlock(),[,d]=v.useSelectedBlockIds(),f=v.useBlocksHtmlForAi(),n=U(),m=async(t,T,E,y)=>{var x;if(!t||p)return;g(r);const o=f(r?{blockId:r._id,additionalCoreBlocks:["Icon"]}:{additionalCoreBlocks:["Icon"]});if(r&&!o){O.toast.error(a("Something went wrong. Please try again."));return}const i={id:Date.now().toString(),role:"user",content:S.getUserPrompt({language:M,userInput:T||t,currentHtml:o}),userMessage:t},l={id:(Date.now()+1).toString(),role:"assistant",content:"",isReasoning:!0,isStreaming:!0};C(b=>[...b,i,l]),w(!0);const B=new AbortController;D(B);try{const b={messages:[i].map(L=>({role:L.role,content:L.content})),model:y||s};E&&(b.image=E);const N=await k({body:{action:"ASK_AI",data:b},streamResponse:!0});if(!N.ok)throw new Error(a("Failed to get AI response"));const H=(x=N.body)==null?void 0:x.getReader();if(!H)throw new Error(a("Response body is not readable"));await n(H,C)}catch(b){if(b.name!=="AbortError"){const N={id:(Date.now()+1).toString(),role:"assistant",content:a("Sorry, I encountered an error. Please try again.")};C(H=>[...H,N])}}finally{A(""),w(!1),g(null),D(null)}};return c.jsxs(c.Fragment,{children:[c.jsxs(S.Conversation,{className:"no-scrollbar",children:[c.jsxs(S.ConversationContent,{className:"gap-2 px-0",children:[I.length===0&&c.jsx(S.ConversationEmptyState,{icon:c.jsx(P.Bot,{size:48,className:"text-gray-300"}),title:"Start a conversation",description:a("Start a conversation with the AI assistant to add/edit current page")}),I.map(t=>t.role!=="system"&&c.jsx(j.Fragment,{children:t.isReasoning?c.jsxs(S.Reasoning,{isStreaming:t.isStreaming,defaultOpen:!0,children:[c.jsx(S.ReasoningTrigger,{className:"text-xs [&_p]:text-muted-foreground"}),c.jsx(S.ReasoningContent,{className:"p-0 text-xs",children:t.content})]}):t.isTask&&!t.isTaskCompleted?c.jsx(S.TaskMessage,{content:t.content,isLoading:t.isTaskLoading}):c.jsx(S.Message,{from:t.role,children:c.jsx(S.MessageContent,{className:"p-0",children:t.role==="assistant"?c.jsx(S.MessageResponse,{className:"p-0 text-xs",children:t.content}):c.jsx("div",{className:"p-0 text-xs",children:t.userMessage||t.content})})})},t.id))]}),c.jsx(S.ConversationScrollButton,{})]}),c.jsxs("div",{className:"border-gray-200 pb-2",children:[c.jsx(S.SelectedBlockDisplay,{onRemove:()=>d([]),isLoading:p}),c.jsx(j.Suspense,{fallback:c.jsx("div",{children:"Loading..."}),children:c.jsx(G,{input:h,setInput:A,onSend:m,onStop:u,isLoading:p,selectedLang:"",currentBlock:r||R,disabled:(h==null?void 0:h.length)===0,selectedModel:s,onModelChange:e})})]})]})};exports.default=Q;
@@ -1,11 +1,11 @@
1
1
  import { jsxs as D, Fragment as W, jsx as g } from "react/jsx-runtime";
2
- import { a as _, ah as F, ai as $, aj as q, ak as V, al as K, am as j, an as U, ao as G, ap as z } from "./index-BK0xWO1z.js";
3
- import { C as Q, a as J, b as X, R as Y, c as Z, d as tt, T as et, M as nt, e as rt, f as st, g as ot, S as at, h as it } from "./selected-block-display-CUnCqXQw.js";
2
+ import { a as _, ah as F, ai as $, aj as q, ak as V, al as K, am as j, an as U, ao as G, ap as z } from "./index-mjuSGlPU.js";
3
+ import { C as Q, a as J, b as X, R as Y, c as Z, d as tt, T as et, M as nt, e as rt, f as st, g as ot, S as at, h as it } from "./selected-block-display-B3hHlcLA.js";
4
4
  import { Bot as ct } from "lucide-react";
5
5
  import { useCallback as P, Fragment as lt, Suspense as ut, lazy as dt } from "react";
6
6
  import { toast as ft } from "sonner";
7
7
  import { g as mt } from "./models-D95ZYr_x.js";
8
- import { g as L } from "./apply-binding-BvWfJCSZ.js";
8
+ import { g as L } from "./apply-binding-CLU6Xp4K.js";
9
9
  import { find as pt } from "lodash-es";
10
10
  import { useQueryClient as ht } from "@tanstack/react-query";
11
11
  const O = (i, k) => {
@@ -223,7 +223,7 @@ const O = (i, k) => {
223
223
  },
224
224
  [m]
225
225
  );
226
- }, It = dt(() => import("./ai-prompt-input-BH8LOVT4.js")), Mt = ({
226
+ }, It = dt(() => import("./ai-prompt-input-D4dqy8L2.js")), Mt = ({
227
227
  t: i,
228
228
  fetch: k,
229
229
  input: m,
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("react/jsx-runtime"),p=require("./index-Bm8iS2OH.cjs"),f=require("lodash-es"),l=require("react"),G=require("./core-Y0lXLwkq.cjs"),c=require("./selected-block-display-BfpJda4h.cjs"),H=require("lucide-react"),Q=require("react-i18next"),X=require("./models-5gOsRC56.cjs"),C=(s,o)=>{const r=s.filter(n=>n._parent===o),i=r.flatMap(n=>C(s,n._id));return[...r,...i]},Y=(s,o)=>{const r=o.find(n=>n._id===s);if(!r)return[];const i=C(o,s);return[r,...i]},Z=()=>{const s=p.useSelectedBlock(),[o]=p.useBlocksStore();return l.useCallback((r="")=>{const i=s!=null&&s._id?Y(s._id,o):o;return i?f.compact(i.map(n=>{const h=G.getRegisteredChaiBlock(n._type);if(!h)return null;const x=(h==null?void 0:h.i18nProps)??[];if(x.length===0)return null;const g=r==="ALL"?Object.keys(n).filter(a=>x.find(S=>a.startsWith(S))):x.map(a=>r?`${a}-${r}`:a),d=f.pick(n,["_id"]);return f.each(g,a=>{d[a]=f.get(n,a,f.get(n,a.replace(`-${r}`,"")))}),d})):[]},[s==null?void 0:s._id,o])},ee=l.lazy(()=>Promise.resolve().then(()=>require("./ai-translation-prompt-CkHaFv5I.cjs"))),te=l.lazy(()=>Promise.resolve().then(()=>require("./ai-prompt-input-C_GG6nwq.cjs"))),ne=({fetch:s,input:o,messages:r,setInput:i,isLoading:n,handleStop:h,setMessages:x,setIsLoading:g,selectedLang:d,currentBlock:a,fallbackLang:S,abortController:k,setAbortController:E,setCurrentBlock:T,selectedModel:B=X.getDefaultModel().id,onModelChange:M})=>{const{t:u}=Q.useTranslation(),O=l.useRef(null),y=p.useSelectedBlock(),[,D]=p.useSelectedBlockIds(),R=Z(),I=p.useStreamMultipleBlocksProps(),F=()=>{var t;(t=O.current)==null||t.scrollIntoView({behavior:"smooth"})};l.useEffect(()=>{F()},[r,n]);const N=async(t,w,$)=>{var P;y&&T(y);const q=(t==null?void 0:t.toLowerCase())==="translate",v={id:Date.now().toString(),role:"user",content:c.getTranslationUserPrompt({fallbackLang:S,userInput:w||t,language:d,blocks:q?R():R(d)}),userMessage:w||t||u("Translate the content")},z={id:(Date.now()+1).toString(),role:"assistant",content:"Thinking...",isReasoning:!0,isStreaming:!0};g(!0);const W=new AbortController;E(W),x(b=>[...b,v,z]),g(!0);try{const A=await s({body:{action:"ASK_AI",data:{messages:[v],initiator:q?"TRANSLATE_CONTENT":"UPDATE_CONTENT",model:$||B}},streamResponse:!0});if(!A.ok)throw new Error(u("Failed to get AI response"));const _=(P=A.body)==null?void 0:P.getReader(),U=new TextDecoder;let j="";if(!_)throw new Error(u("Response body is not readable"));for(;;){const{done:K,value:L}=await _.read();if(K)break;const V=U.decode(L,{stream:!0});j+=V,x(m=>(m[m.length-1].content=j,[...m]))}const J=JSON.parse(j==null?void 0:j.replace("```json","").replace("```",""));I(J)}catch{k==null||k.abort()}finally{g(!1),i(""),T(null)}};return e.jsxs(e.Fragment,{children:[e.jsx("div",{className:"py-2",children:e.jsx(l.Suspense,{fallback:e.jsx("div",{children:u("Loading...")}),children:e.jsx(ee,{isLoading:n,selectedBlock:y,selectedLang:d,onClick:N})})}),e.jsx(c.Conversation,{children:e.jsxs(c.ConversationContent,{className:"gap-4 px-0",children:[r.length===0&&e.jsx(c.ConversationEmptyState,{icon:e.jsx(H.Bot,{size:48,className:"text-gray-300"}),title:u("Start a conversation with the AI assistant to translate/edit your content"),description:u("Only content can be edited in secondary languages. To edit layout, styles and more, switch to the default language.")}),r.map(t=>t.role!=="system"&&e.jsx(l.Fragment,{children:t.isReasoning?e.jsxs(c.Reasoning,{isStreaming:t.isStreaming,defaultOpen:!0,children:[e.jsx(c.ReasoningTrigger,{className:"text-xs [&_p]:text-muted-foreground"}),e.jsx(c.ReasoningContent,{className:"p-0 text-xs",children:t.content})]}):t.isTask?e.jsx(c.TaskMessage,{content:t.content,isLoading:t.isTaskLoading}):e.jsx(c.Message,{from:t.role,children:e.jsx(c.MessageContent,{className:"p-0",children:t.role==="assistant"?e.jsx(c.MessageResponse,{className:"p-0 text-xs",children:t.content}):e.jsx("div",{className:"p-0 text-xs",children:t.userMessage||t.content})})})},t.id))]})}),e.jsxs("div",{className:"border-gray-200 pb-2",children:[e.jsx(c.SelectedBlockDisplay,{onRemove:()=>D([]),isLoading:n}),e.jsx(l.Suspense,{fallback:e.jsx("div",{children:u("Loading...")}),children:e.jsx(te,{input:o,setInput:i,onSend:N,onStop:h,isLoading:n,selectedLang:d,currentBlock:y||a,disabled:(o==null?void 0:o.length)===0,selectedModel:B,onModelChange:M})})]})]})};exports.default=ne;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("react/jsx-runtime"),p=require("./index-BhqugjzS.cjs"),f=require("lodash-es"),l=require("react"),G=require("./core-8lkXy4lC.cjs"),c=require("./selected-block-display-BCvTNcp2.cjs"),H=require("lucide-react"),Q=require("react-i18next"),X=require("./models-5gOsRC56.cjs"),C=(s,o)=>{const r=s.filter(n=>n._parent===o),i=r.flatMap(n=>C(s,n._id));return[...r,...i]},Y=(s,o)=>{const r=o.find(n=>n._id===s);if(!r)return[];const i=C(o,s);return[r,...i]},Z=()=>{const s=p.useSelectedBlock(),[o]=p.useBlocksStore();return l.useCallback((r="")=>{const i=s!=null&&s._id?Y(s._id,o):o;return i?f.compact(i.map(n=>{const h=G.getRegisteredChaiBlock(n._type);if(!h)return null;const x=(h==null?void 0:h.i18nProps)??[];if(x.length===0)return null;const g=r==="ALL"?Object.keys(n).filter(a=>x.find(S=>a.startsWith(S))):x.map(a=>r?`${a}-${r}`:a),d=f.pick(n,["_id"]);return f.each(g,a=>{d[a]=f.get(n,a,f.get(n,a.replace(`-${r}`,"")))}),d})):[]},[s==null?void 0:s._id,o])},ee=l.lazy(()=>Promise.resolve().then(()=>require("./ai-translation-prompt-Ck12Bfl6.cjs"))),te=l.lazy(()=>Promise.resolve().then(()=>require("./ai-prompt-input-Ybgvrvd6.cjs"))),ne=({fetch:s,input:o,messages:r,setInput:i,isLoading:n,handleStop:h,setMessages:x,setIsLoading:g,selectedLang:d,currentBlock:a,fallbackLang:S,abortController:k,setAbortController:E,setCurrentBlock:T,selectedModel:B=X.getDefaultModel().id,onModelChange:M})=>{const{t:u}=Q.useTranslation(),O=l.useRef(null),y=p.useSelectedBlock(),[,D]=p.useSelectedBlockIds(),R=Z(),I=p.useStreamMultipleBlocksProps(),F=()=>{var t;(t=O.current)==null||t.scrollIntoView({behavior:"smooth"})};l.useEffect(()=>{F()},[r,n]);const N=async(t,w,$)=>{var P;y&&T(y);const q=(t==null?void 0:t.toLowerCase())==="translate",v={id:Date.now().toString(),role:"user",content:c.getTranslationUserPrompt({fallbackLang:S,userInput:w||t,language:d,blocks:q?R():R(d)}),userMessage:w||t||u("Translate the content")},z={id:(Date.now()+1).toString(),role:"assistant",content:"Thinking...",isReasoning:!0,isStreaming:!0};g(!0);const W=new AbortController;E(W),x(b=>[...b,v,z]),g(!0);try{const A=await s({body:{action:"ASK_AI",data:{messages:[v],initiator:q?"TRANSLATE_CONTENT":"UPDATE_CONTENT",model:$||B}},streamResponse:!0});if(!A.ok)throw new Error(u("Failed to get AI response"));const _=(P=A.body)==null?void 0:P.getReader(),U=new TextDecoder;let j="";if(!_)throw new Error(u("Response body is not readable"));for(;;){const{done:K,value:L}=await _.read();if(K)break;const V=U.decode(L,{stream:!0});j+=V,x(m=>(m[m.length-1].content=j,[...m]))}const J=JSON.parse(j==null?void 0:j.replace("```json","").replace("```",""));I(J)}catch{k==null||k.abort()}finally{g(!1),i(""),T(null)}};return e.jsxs(e.Fragment,{children:[e.jsx("div",{className:"py-2",children:e.jsx(l.Suspense,{fallback:e.jsx("div",{children:u("Loading...")}),children:e.jsx(ee,{isLoading:n,selectedBlock:y,selectedLang:d,onClick:N})})}),e.jsx(c.Conversation,{children:e.jsxs(c.ConversationContent,{className:"gap-4 px-0",children:[r.length===0&&e.jsx(c.ConversationEmptyState,{icon:e.jsx(H.Bot,{size:48,className:"text-gray-300"}),title:u("Start a conversation with the AI assistant to translate/edit your content"),description:u("Only content can be edited in secondary languages. To edit layout, styles and more, switch to the default language.")}),r.map(t=>t.role!=="system"&&e.jsx(l.Fragment,{children:t.isReasoning?e.jsxs(c.Reasoning,{isStreaming:t.isStreaming,defaultOpen:!0,children:[e.jsx(c.ReasoningTrigger,{className:"text-xs [&_p]:text-muted-foreground"}),e.jsx(c.ReasoningContent,{className:"p-0 text-xs",children:t.content})]}):t.isTask?e.jsx(c.TaskMessage,{content:t.content,isLoading:t.isTaskLoading}):e.jsx(c.Message,{from:t.role,children:e.jsx(c.MessageContent,{className:"p-0",children:t.role==="assistant"?e.jsx(c.MessageResponse,{className:"p-0 text-xs",children:t.content}):e.jsx("div",{className:"p-0 text-xs",children:t.userMessage||t.content})})})},t.id))]})}),e.jsxs("div",{className:"border-gray-200 pb-2",children:[e.jsx(c.SelectedBlockDisplay,{onRemove:()=>D([]),isLoading:n}),e.jsx(l.Suspense,{fallback:e.jsx("div",{children:u("Loading...")}),children:e.jsx(te,{input:o,setInput:i,onSend:N,onStop:h,isLoading:n,selectedLang:d,currentBlock:y||a,disabled:(o==null?void 0:o.length)===0,selectedModel:B,onModelChange:M})})]})]})};exports.default=ne;
@@ -1,9 +1,9 @@
1
1
  import { jsxs as p, Fragment as H, jsx as t } from "react/jsx-runtime";
2
- import { ao as P, ad as Q, a as X, aq as Y } from "./index-BK0xWO1z.js";
2
+ import { ao as P, ad as Q, a as X, aq as Y } from "./index-mjuSGlPU.js";
3
3
  import { compact as Z, pick as ee, each as te, get as v } from "lodash-es";
4
4
  import { useCallback as ne, useRef as se, useEffect as oe, Suspense as M, lazy as E, Fragment as re } from "react";
5
- import { e as ae } from "./core-Dr7QYemB.js";
6
- import { C as ie, a as ce, b as le, R as de, c as ue, d as he, T as me, M as fe, e as pe, f as ge, S as ye, i as Se } from "./selected-block-display-CUnCqXQw.js";
5
+ import { e as ae } from "./core-BvsZwF26.js";
6
+ import { C as ie, a as ce, b as le, R as de, c as ue, d as he, T as me, M as fe, e as pe, f as ge, S as ye, i as Se } from "./selected-block-display-B3hHlcLA.js";
7
7
  import { Bot as Te } from "lucide-react";
8
8
  import { useTranslation as ke } from "react-i18next";
9
9
  import { g as Ne } from "./models-D95ZYr_x.js";
@@ -35,7 +35,7 @@ const O = (s, r) => {
35
35
  },
36
36
  [s == null ? void 0 : s._id, r]
37
37
  );
38
- }, Re = E(() => import("./ai-translation-prompt-DxsNw8YR.js")), xe = E(() => import("./ai-prompt-input-BH8LOVT4.js")), De = ({
38
+ }, Re = E(() => import("./ai-translation-prompt-eZ4Sllva.js")), xe = E(() => import("./ai-prompt-input-D4dqy8L2.js")), De = ({
39
39
  fetch: s,
40
40
  input: r,
41
41
  messages: o,
@@ -1,6 +1,6 @@
1
1
  import { jsx as e, jsxs as w, Fragment as ie } from "react/jsx-runtime";
2
2
  import { E as N, B as E } from "./register-chai-top-bar-CX_JkRJn.js";
3
- import { T as le, av as ce, r as ue, s as de, t as pe, v as me, aw as fe, ax as he, D as ge, ay as ve, d as be, f as xe, C as we, i as Ne, j as Ie, l as ye, m as Se } from "./index-BK0xWO1z.js";
3
+ import { T as le, av as ce, r as ue, s as de, t as pe, v as me, aw as fe, ax as he, D as ge, ay as ve, d as be, f as xe, C as we, i as Ne, j as Ie, l as ye, m as Se } from "./index-mjuSGlPU.js";
4
4
  import { cva as Y } from "class-variance-authority";
5
5
  import { PaperclipIcon as ke, XIcon as J, PlusIcon as De, ImageIcon as ze, MicIcon as Pe, CornerDownLeftIcon as Te, Loader2Icon as Ae, SquareIcon as Le, Cpu as Ce, Paperclip as Re, GlobeIcon as Me, Square as je, Send as Ue } from "lucide-react";
6
6
  import { nanoid as Oe } from "nanoid";