@grapesjs/studio-sdk-plugins 1.0.33-rc.1 → 1.0.33

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 (130) hide show
  1. package/dist/accordionComponent/index.cjs.js +7 -7
  2. package/dist/accordionComponent/index.es.js +161 -156
  3. package/dist/accordionComponent/index.umd.js +9 -9
  4. package/dist/aiChat/chatManager.d.ts +15 -0
  5. package/dist/aiChat/clientTools.d.ts +3 -3
  6. package/dist/aiChat/clientToolsProcessors.d.ts +14 -1
  7. package/dist/aiChat/components/AiChatEmptyState.d.ts +4 -6
  8. package/dist/aiChat/components/AiChatError.d.ts +2 -1
  9. package/dist/aiChat/components/AiChatHeader.d.ts +2 -1
  10. package/dist/aiChat/components/AiChatInput/AssetsSection.d.ts +7 -0
  11. package/dist/aiChat/components/AiChatInput/AttachButton.d.ts +10 -0
  12. package/dist/aiChat/components/AiChatInput/ContextSection.d.ts +5 -0
  13. package/dist/aiChat/components/AiChatInput/DictateButton.d.ts +7 -0
  14. package/dist/aiChat/components/AiChatInput/TextAreaWithAutoResize.d.ts +6 -0
  15. package/dist/aiChat/components/AiChatInput/constants.d.ts +6 -0
  16. package/dist/aiChat/components/AiChatInput/hooks/useSpeechToText.d.ts +15 -0
  17. package/dist/aiChat/components/AiChatInput/index.d.ts +37 -0
  18. package/dist/aiChat/components/AiChatLoadingState.d.ts +2 -1
  19. package/dist/aiChat/components/AiChatMessage.d.ts +21 -9
  20. package/dist/aiChat/components/AiChatMessages.d.ts +5 -7
  21. package/dist/aiChat/components/AiChatMessagesStatus.d.ts +5 -0
  22. package/dist/aiChat/components/AiChatPanel.d.ts +2 -3
  23. package/dist/aiChat/components/AiChatProvider.d.ts +14 -0
  24. package/dist/aiChat/components/MemoizedMarkdown.d.ts +9 -0
  25. package/dist/aiChat/components/index.d.ts +24 -25
  26. package/dist/aiChat/components/utils.d.ts +12 -4
  27. package/dist/aiChat/index.cjs.d.ts +5 -0
  28. package/dist/aiChat/index.cjs.js +453 -0
  29. package/dist/aiChat/index.d.ts +4 -3
  30. package/dist/aiChat/index.es.d.ts +5 -0
  31. package/dist/aiChat/index.es.js +30930 -0
  32. package/dist/aiChat/index.js +453 -0
  33. package/dist/aiChat/index.umd.js +453 -0
  34. package/dist/aiChat/locales/en.d.ts +64 -0
  35. package/dist/aiChat/server/index.cjs.d.ts +4 -0
  36. package/dist/aiChat/server/index.cjs.js +309 -0
  37. package/dist/aiChat/server/index.d.ts +0 -50
  38. package/dist/aiChat/server/index.es.d.ts +4 -0
  39. package/dist/aiChat/server/index.es.js +876 -0
  40. package/dist/aiChat/server/index.js +309 -0
  41. package/dist/aiChat/server/index.umd.js +309 -0
  42. package/dist/aiChat/server/stream.d.ts +0 -6
  43. package/dist/aiChat/server/tools.d.ts +157 -51
  44. package/dist/aiChat/server/types.d.ts +108 -64
  45. package/dist/aiChat/types.d.ts +148 -108
  46. package/dist/aiChat/typesSchema.d.ts +238 -25
  47. package/dist/animationComponent/index.cjs.js +3 -3
  48. package/dist/animationComponent/index.es.js +174 -169
  49. package/dist/animationComponent/index.umd.js +3 -3
  50. package/dist/canvasAbsoluteMode/index.cjs.js +1 -1
  51. package/dist/canvasAbsoluteMode/index.es.js +161 -156
  52. package/dist/canvasAbsoluteMode/index.umd.js +1 -1
  53. package/dist/canvasEmptyState/index.cjs.js +1 -1
  54. package/dist/canvasEmptyState/index.es.js +113 -108
  55. package/dist/canvasEmptyState/index.umd.js +1 -1
  56. package/dist/canvasFullSize/index.cjs.js +9 -9
  57. package/dist/canvasFullSize/index.es.js +137 -132
  58. package/dist/canvasFullSize/index.umd.js +9 -9
  59. package/dist/canvasGridMode/index.cjs.js +4 -4
  60. package/dist/canvasGridMode/index.es.js +168 -163
  61. package/dist/canvasGridMode/index.umd.js +8 -8
  62. package/dist/canvasScreenshot/index.cjs.js +1 -1
  63. package/dist/canvasScreenshot/index.es.js +132 -127
  64. package/dist/canvasScreenshot/index.umd.js +1 -1
  65. package/dist/dataSourceEjs/index.cjs.js +5 -5
  66. package/dist/dataSourceEjs/index.es.js +151 -146
  67. package/dist/dataSourceEjs/index.umd.js +5 -5
  68. package/dist/dataSourceHandlebars/index.cjs.js +4 -4
  69. package/dist/dataSourceHandlebars/index.es.js +91 -86
  70. package/dist/dataSourceHandlebars/index.umd.js +5 -5
  71. package/dist/dialogComponent/index.cjs.js +16 -16
  72. package/dist/dialogComponent/index.es.js +117 -112
  73. package/dist/dialogComponent/index.umd.js +16 -16
  74. package/dist/flexComponent/index.cjs.js +11 -11
  75. package/dist/flexComponent/index.es.js +416 -411
  76. package/dist/flexComponent/index.umd.js +11 -11
  77. package/dist/fsLightboxComponent/index.cjs.js +3 -3
  78. package/dist/fsLightboxComponent/index.es.js +152 -147
  79. package/dist/fsLightboxComponent/index.umd.js +3 -3
  80. package/dist/googleFontsAssetProvider/index.cjs.js +1 -1
  81. package/dist/googleFontsAssetProvider/index.es.js +127 -122
  82. package/dist/googleFontsAssetProvider/index.umd.js +1 -1
  83. package/dist/iconifyComponent/index.cjs.js +2 -2
  84. package/dist/iconifyComponent/index.es.js +170 -165
  85. package/dist/iconifyComponent/index.umd.js +2 -2
  86. package/dist/index.cjs.js +1 -1
  87. package/dist/index.es.js +27 -22
  88. package/dist/index.umd.js +1 -1
  89. package/dist/layoutSidebarButtons/index.cjs.js +1 -1
  90. package/dist/layoutSidebarButtons/index.es.js +156 -151
  91. package/dist/layoutSidebarButtons/index.umd.js +1 -1
  92. package/dist/lightGalleryComponent/index.cjs.js +1 -1
  93. package/dist/lightGalleryComponent/index.es.js +197 -192
  94. package/dist/lightGalleryComponent/index.umd.js +1 -1
  95. package/dist/linkImageComponent/index.cjs.js +2 -2
  96. package/dist/linkImageComponent/index.es.js +86 -81
  97. package/dist/linkImageComponent/index.umd.js +2 -2
  98. package/dist/listPagesComponent/index.cjs.js +5 -5
  99. package/dist/listPagesComponent/index.es.js +121 -116
  100. package/dist/listPagesComponent/index.umd.js +5 -5
  101. package/dist/presetPrintable/index.cjs.js +4 -4
  102. package/dist/presetPrintable/index.es.js +180 -175
  103. package/dist/presetPrintable/index.umd.js +4 -4
  104. package/dist/prosemirror/index.cjs.js +6 -6
  105. package/dist/prosemirror/index.es.js +128 -123
  106. package/dist/prosemirror/index.umd.js +8 -8
  107. package/dist/rendererReact/index.cjs.js +1 -1
  108. package/dist/rendererReact/index.es.js +127 -122
  109. package/dist/rendererReact/index.js +1 -1
  110. package/dist/rendererReact/index.umd.js +1 -1
  111. package/dist/rteTinyMce/index.cjs.js +2 -2
  112. package/dist/rteTinyMce/index.es.js +160 -155
  113. package/dist/rteTinyMce/index.umd.js +2 -2
  114. package/dist/shapeDividerComponent/index.cjs.js +25 -25
  115. package/dist/shapeDividerComponent/index.es.js +127 -122
  116. package/dist/shapeDividerComponent/index.umd.js +25 -25
  117. package/dist/swiperComponent/index.cjs.js +9 -9
  118. package/dist/swiperComponent/index.es.js +197 -192
  119. package/dist/swiperComponent/index.umd.js +9 -9
  120. package/dist/tableComponent/index.cjs.js +1 -1
  121. package/dist/tableComponent/index.es.js +227 -222
  122. package/dist/tableComponent/index.umd.js +1 -1
  123. package/dist/types.d.ts +1 -1
  124. package/dist/utils.d.ts +12 -1
  125. package/dist/youtubeAssetProvider/index.cjs.js +1 -1
  126. package/dist/youtubeAssetProvider/index.es.js +124 -119
  127. package/dist/youtubeAssetProvider/index.umd.js +1 -1
  128. package/package.json +5 -2
  129. package/dist/aiChat/components/AiChatInput.d.ts +0 -17
  130. package/dist/aiChat/server/stream-utils.d.ts +0 -16
@@ -1 +1 @@
1
- (function(u,b){typeof exports=="object"&&typeof module<"u"?module.exports=b():typeof define=="function"&&define.amd?define(b):(u=typeof globalThis<"u"?globalThis:u||self,u.StudioSdkPlugins_youtubeAssetProvider=b())})(this,function(){"use strict";var u=(e=>(e.free="free",e.startup="startup",e.business="business",e.enterprise="enterprise",e))(u||{}),b=(e=>(e.toastAdd="studio:toastAdd",e.toastRemove="studio:toastRemove",e.dialogOpen="studio:dialogOpen",e.dialogClose="studio:dialogClose",e.dialogExportCode="studio:dialogExportCode",e.sidebarLeftSet="studio:sidebarLeft:set",e.sidebarLeftGet="studio:sidebarLeft:get",e.sidebarLeftToggle="studio:sidebarLeft:toggle",e.sidebarRightSet="studio:sidebarRight:set",e.sidebarRightGet="studio:sidebarRight:get",e.sidebarRightToggle="studio:sidebarRight:toggle",e.sidebarTopSet="studio:sidebarTop:set",e.sidebarTopGet="studio:sidebarTop:get",e.sidebarTopToggle="studio:sidebarTop:toggle",e.sidebarBottomSet="studio:sidebarBottom:set",e.sidebarBottomGet="studio:sidebarBottom:get",e.sidebarBottomToggle="studio:sidebarBottom:toggle",e.symbolAdd="studio:symbolAdd",e.symbolDetach="studio:symbolDetach",e.symbolOverride="studio:symbolOverride",e.symbolPropagateStyles="studio:propagateStyles",e.getPagesConfig="studio:getPagesConfig",e.setPagesConfig="studio:setPagesConfig",e.getPageSettings="studio:getPageSettings",e.setPageSettings="studio:setPageSettings",e.clearPage="studio:clearPage",e.projectFiles="studio:projectFiles",e.validateCode="studio:validateCode",e.canvasReload="studio:canvasReload",e.getBlocksPanel="studio:getBlocksPanel",e.setBlocksPanel="studio:setBlocksPanel",e.getStateContextMenu="studio:getStateContextMenu",e.setStateContextMenu="studio:setStateContextMenu",e.contextMenuComponent="studio:contextMenuComponent",e.layoutAdd="studio:layoutAdd",e.layoutRemove="studio:layoutRemove",e.layoutToggle="studio:layoutToggle",e.layoutUpdate="studio:layoutUpdate",e.layoutGet="studio:layoutGet",e.layoutConfigGet="studio:layoutConfigGet",e.layoutConfigSet="studio:layoutConfigSet",e.layoutComponentAdd="studio:layoutComponentAdd",e.layoutComponentGet="studio:layoutComponentGet",e.layoutComponentRemove="studio:layoutComponentRemove",e.layoutComponentRender="studio:layoutComponentRender",e.getStateTheme="studio:getStateTheme",e.setStateTheme="studio:setStateTheme",e.assetProviderGet="studio:assetProviderGet",e.assetProviderAdd="studio:assetProviderAdd",e.assetProviderRemove="studio:assetProviderRemove",e.fontGet="studio:fontGet",e.fontAdd="studio:fontAdd",e.fontRemove="studio:fontRemove",e.fontManagerOpen="studio:fontManagerOpen",e.menuFontLoad="studio:menuFontLoad",e.toggleStateDataSource="studio:toggleStateDataSource",e.getStateDataSource="studio:getStateDataSource",e.dataSourceSetGlobalData="studio:dataSourceSetGlobalData",e.dataSourceSetImporter="studio:dataSourceSetImporter",e.dataSourceSetExporter="studio:dataSourceSetExporter",e.setDragAbsolute="studio:setDragAbsolute",e))(b||{});const h="app.grapesjs.com",f="app-stage.grapesjs.com",v=[h,"app2.grapesjs.com",f,"app-stage2.grapesjs.com","localhost","127.0.0.1",".local-credentialless.webcontainer.io",".local.webcontainer.io","-sandpack.codesandbox.io"],w="license:check:start",R="license:check:end",L=()=>typeof window<"u",I=({isDev:e,isStage:o})=>`${e?"":`https://${o?f:h}`}/api`,k=()=>{const e=L()&&window.location.hostname;return!!e&&(v.includes(e)||v.some(o=>e.endsWith(o)))};async function x({path:e,baseApiUrl:o,method:a="GET",headers:n={},params:c,body:p}){const t=`${o||I({isDev:!1,isStage:!1})}${e}`,i={method:a,headers:{"Content-Type":"application/json",...n}};p&&(i.body=JSON.stringify(p));const l=c?new URLSearchParams(c).toString():"",s=l?`?${l}`:"",r=await fetch(`${t}${s}`,i);if(!r.ok)throw new Error(`HTTP error! status: ${r.status}`);return r.json()}const P={[u.free]:0,[u.startup]:10,[u.business]:20,[u.enterprise]:30};function D(e){const o=e;return o.init=a=>n=>e(n,a),o}const G=e=>D(e);async function O({editor:e,plan:o,pluginName:a,licenseKey:n,cleanup:c}){let p="",d=!1;const t=k(),i=s=>{console.warn("Cleanup plugin:",a,"Reason:",s),c()},l=(s={})=>{var y;const{error:r,sdkLicense:A}=s,g=(y=s.plan)==null?void 0:y.category;if(!(A||s.license)||r)i(r||"Invalid license");else if(g){const _=P[o],W=P[g];_>W&&i({pluginRequiredPlan:o,licensePlan:g})}};e.on(w,s=>{p=s==null?void 0:s.baseApiUrl,d=!0}),e.on(R,s=>{l(s)}),setTimeout(async()=>{if(!d){if(t)return;if(n){const s=await U({licenseKey:n,pluginName:a,baseApiUrl:p});s&&l(s)}else i("The `licenseKey` option not provided")}},2e3)}async function U(e){const{licenseKey:o,pluginName:a,baseApiUrl:n}=e;try{return(await x({baseApiUrl:n,path:`/sdk/${o||"na"}`,method:"POST",params:{d:window.location.hostname,pn:a}})).result||{}}catch(c){return console.error("Error during SDK license check:",c),!1}}const E=e=>{const o={};for(const a of Object.keys(e)){let n=e[a];n&&(Array.isArray(n)?n=n.map(c=>c.toString()).join(","):n=n.toString(),o[a]=n)}return new URLSearchParams(o)},T="youtube-video",M=e=>{const{apiKey:o,searchParams:a,thumbnailQuality:n="high"}=e,c=(t={})=>{const l="https://www.googleapis.com/youtube/v3/search",s=E(t);return`${l}?${s}`},p=t=>{var i,l,s;return((i=t[n])==null?void 0:i.url)||((l=t.high)==null?void 0:l.url)||((s=t.medium)==null?void 0:s.url)||t.default.url},d=t=>{const i=p(t.snippet.thumbnails);return{id:t.id.videoId,src:`https://www.youtube.com/watch?v=${t.id.videoId}`,name:t.snippet.title,type:T,customData:{thumbnailUrl:i,videoItem:t}}};return{id:"youtube",types:[T],label:({editor:t})=>t.I18n.t("youtubeAssetProvider.providerLabel"),search:{reloadOnInput:!0,debounceMs:1e3},async onLoad({searchValue:t,pageCustomData:i}){var y;const l={maxResults:25,q:t,pageToken:i==null?void 0:i.token,type:["video"],key:o},s=a==null?void 0:a({searchValue:t}),r={...l,...s};r.part?r.part.includes("snippet")||r.part.push("snippet"):r.part=["snippet"];const g=await(await fetch(c(r))).json();return(y=g.items)!=null&&y.length?{items:g.items.map(d),nextPageCustomData:{token:g.nextPageToken},isLastPage:!g.nextPageToken}:{items:[],isLastPage:!0}},itemLayout:({assetProps:t,onSelect:i})=>({type:"column",onClick:()=>i(t),htmlAttrs:{title:t.name},style:{borderWidth:"1px",borderRadius:8,overflow:"hidden",cursor:"pointer"},children:[{type:"custom",render:()=>{var l;return`<img src="${(l=t.customData)==null?void 0:l.thumbnailUrl}" alt="${t.name}" style="width: 100%; height: 100px; object-fit: cover">`}},{type:"text",content:t.name,style:{overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap",paddingLeft:8,paddingRight:8}}]})}},$={youtubeAssetProvider:{searchBtn:"Search on YouTube",modalTitle:"Select YouTube Video",providerLabel:"YouTube Videos"}},N="youtubeAssetProvider",j=u.startup;return G(function(e,o){var l;const{skipVideoComponent:a,i18n:n={}}=o,c=M(o);e.runCommand(b.assetProviderAdd,{provider:c});const p="search-on-youtube",d="video",t=(l=e.Components.getType(d))==null?void 0:l.model.prototype,i=s=>{e.Assets.open({modalTitle:e.I18n.t("youtubeAssetProvider.modalTitle"),providerId:c.id,typeId:c.types[0],providers:[],types:[],select:r=>{e.Assets.close(),s.set({videoId:r.attributes.id})},content:{header:{addUrl:!1,upload:!1}}})};!a&&t&&e.Components.addType(d,{model:{getYoutubeTraits(){const[s,...r]=t.getYoutubeTraits.apply(this);return[s,{id:p,type:"button",label:e.I18n.t("youtubeAssetProvider.searchBtn"),command:()=>i(this)},...r]}},view:{events:()=>({dblclick:"onActive"}),onActive(){const{model:s}=this,r=s.get("provider")||"";r!=null&&r.startsWith("yt")&&i(s)}}}),e.I18n.addMessages({en:$,...n}),O({editor:e,licenseKey:o.licenseKey,plan:j,pluginName:N,cleanup:()=>{e.runCommand(b.assetProviderRemove,{id:c.id}),!a&&t&&e.Components.addType(d,{model:{getYoutubeTraits(){return t.getYoutubeTraits.apply(this).filter(s=>s.id!==p)}}})}})})});
1
+ (function(u,g){typeof exports=="object"&&typeof module<"u"?module.exports=g():typeof define=="function"&&define.amd?define(g):(u=typeof globalThis<"u"?globalThis:u||self,u.StudioSdkPlugins_youtubeAssetProvider=g())})(this,function(){"use strict";var u=(e=>(e.free="free",e.startup="startup",e.business="business",e.enterprise="enterprise",e))(u||{}),g=(e=>(e.toastAdd="studio:toastAdd",e.toastRemove="studio:toastRemove",e.dialogOpen="studio:dialogOpen",e.dialogClose="studio:dialogClose",e.dialogExportCode="studio:dialogExportCode",e.sidebarLeftSet="studio:sidebarLeft:set",e.sidebarLeftGet="studio:sidebarLeft:get",e.sidebarLeftToggle="studio:sidebarLeft:toggle",e.sidebarRightSet="studio:sidebarRight:set",e.sidebarRightGet="studio:sidebarRight:get",e.sidebarRightToggle="studio:sidebarRight:toggle",e.sidebarTopSet="studio:sidebarTop:set",e.sidebarTopGet="studio:sidebarTop:get",e.sidebarTopToggle="studio:sidebarTop:toggle",e.sidebarBottomSet="studio:sidebarBottom:set",e.sidebarBottomGet="studio:sidebarBottom:get",e.sidebarBottomToggle="studio:sidebarBottom:toggle",e.symbolAdd="studio:symbolAdd",e.symbolDetach="studio:symbolDetach",e.symbolOverride="studio:symbolOverride",e.symbolPropagateStyles="studio:propagateStyles",e.getPagesConfig="studio:getPagesConfig",e.setPagesConfig="studio:setPagesConfig",e.getPageSettings="studio:getPageSettings",e.setPageSettings="studio:setPageSettings",e.clearPage="studio:clearPage",e.projectFiles="studio:projectFiles",e.validateCode="studio:validateCode",e.canvasReload="studio:canvasReload",e.getBlocksPanel="studio:getBlocksPanel",e.setBlocksPanel="studio:setBlocksPanel",e.getStateContextMenu="studio:getStateContextMenu",e.setStateContextMenu="studio:setStateContextMenu",e.contextMenuComponent="studio:contextMenuComponent",e.layoutAdd="studio:layoutAdd",e.layoutRemove="studio:layoutRemove",e.layoutToggle="studio:layoutToggle",e.layoutUpdate="studio:layoutUpdate",e.layoutGet="studio:layoutGet",e.layoutConfigGet="studio:layoutConfigGet",e.layoutConfigSet="studio:layoutConfigSet",e.layoutComponentAdd="studio:layoutComponentAdd",e.layoutComponentGet="studio:layoutComponentGet",e.layoutComponentRemove="studio:layoutComponentRemove",e.layoutComponentRender="studio:layoutComponentRender",e.getStateTheme="studio:getStateTheme",e.setStateTheme="studio:setStateTheme",e.assetProviderGet="studio:assetProviderGet",e.assetProviderAdd="studio:assetProviderAdd",e.assetProviderRemove="studio:assetProviderRemove",e.fontGet="studio:fontGet",e.fontAdd="studio:fontAdd",e.fontRemove="studio:fontRemove",e.fontManagerOpen="studio:fontManagerOpen",e.menuFontLoad="studio:menuFontLoad",e.toggleStateDataSource="studio:toggleStateDataSource",e.getStateDataSource="studio:getStateDataSource",e.dataSourceSetGlobalData="studio:dataSourceSetGlobalData",e.dataSourceSetImporter="studio:dataSourceSetImporter",e.dataSourceSetExporter="studio:dataSourceSetExporter",e.setDragAbsolute="studio:setDragAbsolute",e))(g||{});const v="app.grapesjs.com",P="app-stage.grapesjs.com",T=[v,"app2.grapesjs.com",P,"app-stage2.grapesjs.com","localhost","127.0.0.1",".local-credentialless.webcontainer.io",".local.webcontainer.io","-sandpack.codesandbox.io"],x="license:check:start",D="license:check:end",R=()=>typeof window<"u",G=({isDev:e,isStage:o,isPlatform:n})=>`${e?"":`https://${o?P:v}`}/${n?"platform-api":"api"}`,O=()=>{const e=R()&&window.location.hostname;return!!e&&(T.includes(e)||T.some(o=>e.endsWith(o)))};async function L({path:e,baseApiUrl:o,method:n="GET",headers:r={},params:i,body:d}){const s=`${o||G({isDev:!1,isStage:!1})}${e}`,l={method:n,headers:{"Content-Type":"application/json",...r}};d&&(l.body=JSON.stringify(d));const c=i?new URLSearchParams(i).toString():"",a=c?`?${c}`:"",t=await fetch(`${s}${a}`,l);if(!t.ok)throw new Error(`HTTP error! status: ${t.status}`);return t.json()}const A={[u.free]:0,[u.startup]:10,[u.business]:20,[u.enterprise]:30};function U(e){const o=e;return o.init=n=>r=>e(r,n),o}const E=e=>U(e);async function M({editor:e,plan:o,pluginName:n,licenseKey:r,onLicenseCheckResponse:i,cleanup:d}){let p="",s=!1;const l=O(),c=t=>{console.warn("Cleanup plugin:",n,"Reason:",t),d()},a=(t={})=>{var I;const{error:f,sdkLicense:b}=t,y=(I=t.plan)==null?void 0:I.category;if(!(b||t.license)||f)c(f||"Invalid license");else if(y){const W=A[o],Y=A[y];W>Y&&c({pluginRequiredPlan:o,licensePlan:y})}};e.on(x,t=>{p=t==null?void 0:t.baseApiUrl,s=!0}),e.on(D,t=>{i==null||i(t),a(t)}),setTimeout(async()=>{if(!s){if(l)return;if(r){const t=await $({licenseKey:r,pluginName:n,baseApiUrl:p});i==null||i(t),t&&a(t)}else c("The `licenseKey` option not provided")}},2e3)}async function $(e){const{licenseKey:o,pluginName:n,baseApiUrl:r}=e;try{return(await L({baseApiUrl:r,path:`/sdk/${o||"na"}`,method:"POST",params:{d:window.location.hostname,pn:n}})).result||{}}catch(i){return console.error("Error during SDK license check:",i),!1}}const k=e=>{const o={};for(const n of Object.keys(e)){let r=e[n];r&&(Array.isArray(r)?r=r.map(i=>i.toString()).join(","):r=r.toString(),o[n]=r)}return new URLSearchParams(o)},w="youtube-video",N=e=>{const{apiKey:o,searchParams:n,thumbnailQuality:r="high"}=e,i=(s={})=>{const c="https://www.googleapis.com/youtube/v3/search",a=k(s);return`${c}?${a}`},d=s=>{var l,c,a;return((l=s[r])==null?void 0:l.url)||((c=s.high)==null?void 0:c.url)||((a=s.medium)==null?void 0:a.url)||s.default.url},p=s=>{const l=d(s.snippet.thumbnails);return{id:s.id.videoId,src:`https://www.youtube.com/watch?v=${s.id.videoId}`,name:s.snippet.title,type:w,customData:{thumbnailUrl:l,videoItem:s}}};return{id:"youtube",types:[w],label:({editor:s})=>s.I18n.t("youtubeAssetProvider.providerLabel"),search:{reloadOnInput:!0,debounceMs:1e3},async onLoad({searchValue:s,pageCustomData:l}){var h;const c={maxResults:25,q:s,pageToken:l==null?void 0:l.token,type:["video"],key:o},a=n==null?void 0:n({searchValue:s}),t={...c,...a};t.part?t.part.includes("snippet")||t.part.push("snippet"):t.part=["snippet"];const b=await(await fetch(i(t))).json();return(h=b.items)!=null&&h.length?{items:b.items.map(p),nextPageCustomData:{token:b.nextPageToken},isLastPage:!b.nextPageToken}:{items:[],isLastPage:!0}},itemLayout:({assetProps:s,onSelect:l})=>({type:"column",onClick:()=>l(s),htmlAttrs:{title:s.name},style:{borderWidth:"1px",borderRadius:8,overflow:"hidden",cursor:"pointer"},children:[{type:"custom",render:()=>{var c;return`<img src="${(c=s.customData)==null?void 0:c.thumbnailUrl}" alt="${s.name}" style="width: 100%; height: 100px; object-fit: cover">`}},{type:"text",content:s.name,style:{overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap",paddingLeft:8,paddingRight:8}}]})}},j={youtubeAssetProvider:{searchBtn:"Search on YouTube",modalTitle:"Select YouTube Video",providerLabel:"YouTube Videos"}},B="youtubeAssetProvider",_=u.startup;return E(function(e,o){var c;const{skipVideoComponent:n,i18n:r={}}=o,i=N(o);e.runCommand(g.assetProviderAdd,{provider:i});const d="search-on-youtube",p="video",s=(c=e.Components.getType(p))==null?void 0:c.model.prototype,l=a=>{e.Assets.open({modalTitle:e.I18n.t("youtubeAssetProvider.modalTitle"),providerId:i.id,typeId:i.types[0],providers:[],types:[],select:t=>{e.Assets.close(),a.set({videoId:t.attributes.id})},content:{header:{addUrl:!1,upload:!1}}})};!n&&s&&e.Components.addType(p,{model:{getYoutubeTraits(){const[a,...t]=s.getYoutubeTraits.apply(this);return[a,{id:d,type:"button",label:e.I18n.t("youtubeAssetProvider.searchBtn"),command:()=>l(this)},...t]}},view:{events:()=>({dblclick:"onActive"}),onActive(){const{model:a}=this,t=a.get("provider")||"";t!=null&&t.startsWith("yt")&&l(a)}}}),e.I18n.addMessages({en:j,...r}),M({editor:e,licenseKey:o.licenseKey,plan:_,pluginName:B,cleanup:()=>{e.runCommand(g.assetProviderRemove,{id:i.id}),!n&&s&&e.Components.addType(p,{model:{getYoutubeTraits(){return s.getYoutubeTraits.apply(this).filter(a=>a.id!==d)}}})}})})});
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@grapesjs/studio-sdk-plugins",
3
- "version": "1.0.33-rc.1",
3
+ "version": "1.0.33",
4
4
  "publishConfig": {
5
5
  "registry": "https://registry.npmjs.org"
6
6
  },
@@ -65,6 +65,7 @@
65
65
  "@ai-sdk/react": "^3.0.35",
66
66
  "ai": "^6.0.33",
67
67
  "handlebars": "^4.7.8",
68
+ "marked": "^17.0.1",
68
69
  "prosemirror-commands": "^1.6.2",
69
70
  "prosemirror-history": "^1.4.1",
70
71
  "prosemirror-inputrules": "^1.4.0",
@@ -74,7 +75,9 @@
74
75
  "prosemirror-state": "^1.4.3",
75
76
  "prosemirror-tables": "^1.6.1",
76
77
  "prosemirror-view": "^1.37.0",
77
- "zod": "^3.25.76"
78
+ "react-markdown": "^10.1.0",
79
+ "remark-gfm": "^4.0.0",
80
+ "zod": "^4.3.6"
78
81
  },
79
82
  "peerDependencies": {
80
83
  "@ai-sdk/anthropic": ">=3.0.0",
@@ -1,17 +0,0 @@
1
- import { CommonComponentProps, UploadedAsset } from '../types';
2
- export interface AiChatInputProps extends CommonComponentProps {
3
- /**
4
- * Maximum number of images per message. Set to 0 to disable images.
5
- * @default 5
6
- */
7
- maxImages?: number;
8
- /**
9
- * Upload project assets (images) to server.
10
- * If not provided and files are added, they will be sent directly to the chat.
11
- */
12
- uploadProjectAssets?: (props: {
13
- files: File[];
14
- }) => Promise<UploadedAsset[]>;
15
- }
16
- export declare const AiChatInput: React.FC<AiChatInputProps>;
17
- export default AiChatInput;
@@ -1,16 +0,0 @@
1
- import { ModelMessage } from 'ai';
2
- import { ToolCallInfo } from './types';
3
- export declare function injectImagesIntoMessages(messages: ModelMessage[], imageUrls: string[]): ModelMessage[];
4
- export declare function handleTextChunk(chunk: {
5
- type: 'text-delta';
6
- text?: string;
7
- }, onText?: (text: string) => void | Promise<void>): Promise<void>;
8
- export declare function handleToolCallChunk(chunk: {
9
- type: 'tool-call';
10
- toolCallId: string;
11
- toolName: string;
12
- input?: unknown;
13
- }, toolCalls: ToolCallInfo[], onToolCall?: (toolCall: ToolCallInfo) => void | Promise<void>): Promise<void>;
14
- export declare function processStreamChunk(chunk: {
15
- type: string;
16
- }, toolCalls: ToolCallInfo[], onText?: (text: string) => void | Promise<void>, onToolCall?: (toolCall: ToolCallInfo) => void | Promise<void>): Promise<void>;