@grapesjs/studio-sdk-plugins 1.0.34 → 1.0.35

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 (47) hide show
  1. package/dist/aiChat/clientTools.d.ts +3 -3
  2. package/dist/aiChat/clientToolsProcessors.d.ts +5 -2
  3. package/dist/aiChat/components/AiChatHeader.d.ts +22 -2
  4. package/dist/aiChat/components/AiChatToolGenerateImage.d.ts +7 -0
  5. package/dist/aiChat/components/utils.d.ts +2 -0
  6. package/dist/aiChat/index.cjs.js +88 -99
  7. package/dist/aiChat/index.es.js +12677 -11001
  8. package/dist/aiChat/index.js +88 -99
  9. package/dist/aiChat/index.umd.js +97 -108
  10. package/dist/aiChat/locales/en.d.ts +38 -0
  11. package/dist/aiChat/server/index.cjs.js +91 -237
  12. package/dist/aiChat/server/index.es.js +721 -631
  13. package/dist/aiChat/server/index.js +91 -237
  14. package/dist/aiChat/server/index.umd.js +91 -237
  15. package/dist/aiChat/server/prompts.d.ts +15 -11
  16. package/dist/aiChat/server/tools.d.ts +74 -122
  17. package/dist/aiChat/server/types.d.ts +61 -3
  18. package/dist/aiChat/types.d.ts +69 -11
  19. package/dist/aiChat/typesSchema.d.ts +27 -0
  20. package/dist/googleFontsAssetProvider/index.cjs.js +1 -1
  21. package/dist/googleFontsAssetProvider/index.es.js +11 -11
  22. package/dist/googleFontsAssetProvider/index.umd.js +1 -1
  23. package/dist/iconifyComponent/index.cjs.js +2 -2
  24. package/dist/iconifyComponent/index.es.js +11 -11
  25. package/dist/iconifyComponent/index.umd.js +2 -2
  26. package/dist/index.cjs.js +20 -20
  27. package/dist/index.es.js +208 -208
  28. package/dist/index.umd.js +1 -1
  29. package/dist/layoutSidebarButtons/index.cjs.js +1 -1
  30. package/dist/layoutSidebarButtons/index.es.js +7 -7
  31. package/dist/layoutSidebarButtons/index.umd.js +1 -1
  32. package/dist/presetPrintable/index.cjs.js +2 -2
  33. package/dist/presetPrintable/index.es.js +5 -5
  34. package/dist/presetPrintable/index.umd.js +3 -3
  35. package/dist/prosemirror/index.cjs.js +1 -1
  36. package/dist/prosemirror/index.es.js +1 -1
  37. package/dist/prosemirror/index.umd.js +1 -1
  38. package/dist/rteTinyMce/index.cjs.js +2 -2
  39. package/dist/rteTinyMce/index.es.js +12 -12
  40. package/dist/rteTinyMce/index.umd.js +2 -2
  41. package/dist/tableComponent/index.cjs.js +1 -1
  42. package/dist/tableComponent/index.es.js +83 -83
  43. package/dist/tableComponent/index.umd.js +1 -1
  44. package/dist/youtubeAssetProvider/index.cjs.js +1 -1
  45. package/dist/youtubeAssetProvider/index.es.js +15 -15
  46. package/dist/youtubeAssetProvider/index.umd.js +1 -1
  47. package/package.json +1 -1
@@ -1,4 +1,4 @@
1
- var g = /* @__PURE__ */ ((e) => (e.free = "free", e.startup = "startup", e.business = "business", e.enterprise = "enterprise", e))(g || {}), h = /* @__PURE__ */ ((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))(h || {});
1
+ var g = /* @__PURE__ */ ((e) => (e.free = "free", e.startup = "startup", e.business = "business", e.enterprise = "enterprise", e))(g || {}), h = /* @__PURE__ */ ((e) => (e.toastAdd = "studio:toastAdd", e.toastRemove = "studio:toastRemove", e.dialogOpen = "studio:dialogOpen", e.dialogClose = "studio:dialogClose", e.dialogExportCode = "studio:dialogExportCode", e.dialogImportCode = "studio:dialogImportCode", 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))(h || {});
2
2
  const w = "app.grapesjs.com", I = "app-stage.grapesjs.com", G = "app2.grapesjs.com", L = "app-stage2.grapesjs.com", P = [
3
3
  w,
4
4
  G,
@@ -60,13 +60,13 @@ async function B({
60
60
  onLicenseCheckResponse: r,
61
61
  cleanup: u
62
62
  }) {
63
- let p = "", s = !1;
63
+ let d = "", s = !1;
64
64
  const l = $(), c = (t) => {
65
65
  console.warn("Cleanup plugin:", i, "Reason:", t), u();
66
66
  }, n = (t = {}) => {
67
67
  var v;
68
- const { error: y, sdkLicense: d } = t, b = (v = t.plan) == null ? void 0 : v.category;
69
- if (!(d || t.license) || y)
68
+ const { error: y, sdkLicense: p } = t, b = (v = t.plan) == null ? void 0 : v.category;
69
+ if (!(p || t.license) || y)
70
70
  c(y || "Invalid license");
71
71
  else if (b) {
72
72
  const R = T[o], x = T[b];
@@ -74,14 +74,14 @@ async function B({
74
74
  }
75
75
  };
76
76
  e.on(U, (t) => {
77
- p = t == null ? void 0 : t.baseApiUrl, s = !0;
77
+ d = t == null ? void 0 : t.baseApiUrl, s = !0;
78
78
  }), e.on(D, (t) => {
79
79
  r == null || r(t), n(t);
80
80
  }), setTimeout(async () => {
81
81
  if (!s) {
82
82
  if (l) return;
83
83
  if (a) {
84
- const t = await N({ licenseKey: a, pluginName: i, baseApiUrl: p });
84
+ const t = await N({ licenseKey: a, pluginName: i, baseApiUrl: d });
85
85
  r == null || r(t), t && n(t);
86
86
  } else
87
87
  c("The `licenseKey` option not provided");
@@ -118,7 +118,7 @@ const W = (e) => {
118
118
  }, u = (s) => {
119
119
  var l, c, n;
120
120
  return ((l = s[a]) == null ? void 0 : l.url) || ((c = s.high) == null ? void 0 : c.url) || ((n = s.medium) == null ? void 0 : n.url) || s.default.url;
121
- }, p = (s) => {
121
+ }, d = (s) => {
122
122
  const l = u(s.snippet.thumbnails);
123
123
  return {
124
124
  id: s.id.videoId,
@@ -146,11 +146,11 @@ const W = (e) => {
146
146
  ...n
147
147
  };
148
148
  t.part ? t.part.includes("snippet") || t.part.push("snippet") : t.part = ["snippet"];
149
- const d = await (await fetch(r(t))).json();
150
- return (f = d.items) != null && f.length ? {
151
- items: d.items.map(p),
152
- nextPageCustomData: { token: d.nextPageToken },
153
- isLastPage: !d.nextPageToken
149
+ const p = await (await fetch(r(t))).json();
150
+ return (f = p.items) != null && f.length ? {
151
+ items: p.items.map(d),
152
+ nextPageCustomData: { token: p.nextPageToken },
153
+ isLastPage: !p.nextPageToken
154
154
  } : { items: [], isLastPage: !0 };
155
155
  },
156
156
  itemLayout: ({ assetProps: s, onSelect: l }) => ({
@@ -197,7 +197,7 @@ const W = (e) => {
197
197
  var c;
198
198
  const { skipVideoComponent: i, i18n: a = {} } = o, r = Y(o);
199
199
  e.runCommand(h.assetProviderAdd, { provider: r });
200
- const u = "search-on-youtube", p = "video", s = (c = e.Components.getType(p)) == null ? void 0 : c.model.prototype, l = (n) => {
200
+ const u = "search-on-youtube", d = "video", s = (c = e.Components.getType(d)) == null ? void 0 : c.model.prototype, l = (n) => {
201
201
  e.Assets.open({
202
202
  modalTitle: e.I18n.t("youtubeAssetProvider.modalTitle"),
203
203
  providerId: r.id,
@@ -215,7 +215,7 @@ const W = (e) => {
215
215
  }
216
216
  });
217
217
  };
218
- !i && s && e.Components.addType(p, {
218
+ !i && s && e.Components.addType(d, {
219
219
  model: {
220
220
  getYoutubeTraits() {
221
221
  const [n, ...t] = s.getYoutubeTraits.apply(this);
@@ -249,7 +249,7 @@ const W = (e) => {
249
249
  plan: F,
250
250
  pluginName: K,
251
251
  cleanup: () => {
252
- e.runCommand(h.assetProviderRemove, { id: r.id }), !i && s && e.Components.addType(p, {
252
+ e.runCommand(h.assetProviderRemove, { id: r.id }), !i && s && e.Components.addType(d, {
253
253
  model: {
254
254
  getYoutubeTraits() {
255
255
  return s.getYoutubeTraits.apply(this).filter((n) => n.id !== u);
@@ -1 +1 @@
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)}}})}})})});
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.dialogImportCode="studio:dialogImportCode",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.34",
3
+ "version": "1.0.35",
4
4
  "publishConfig": {
5
5
  "registry": "https://registry.npmjs.org"
6
6
  },