@grapesjs/studio-sdk-plugins 1.0.38 → 1.0.39-rc.0

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 (158) hide show
  1. package/dist/accordionComponent/index.cjs.js +5 -5
  2. package/dist/accordionComponent/index.es.js +70 -67
  3. package/dist/accordionComponent/index.js +39 -0
  4. package/dist/accordionComponent/index.umd.js +4 -4
  5. package/dist/aiChat/components/AiChatHeader.d.ts +4 -5
  6. package/dist/aiChat/components/AiChatInput/index.d.ts +4 -5
  7. package/dist/aiChat/components/AiChatMessage.d.ts +7 -8
  8. package/dist/aiChat/components/index.d.ts +1 -1
  9. package/dist/aiChat/components/utils.d.ts +1 -1
  10. package/dist/aiChat/index.cjs.js +10 -376
  11. package/dist/aiChat/index.es.js +4569 -28851
  12. package/dist/aiChat/index.js +10 -376
  13. package/dist/aiChat/index.umd.js +11 -377
  14. package/dist/aiChat/server/index.cjs.d.ts +0 -1
  15. package/dist/aiChat/server/index.cjs.js +45 -45
  16. package/dist/aiChat/server/index.d.ts +0 -1
  17. package/dist/aiChat/server/index.es.d.ts +0 -1
  18. package/dist/aiChat/server/index.es.js +371 -427
  19. package/dist/aiChat/server/index.js +45 -45
  20. package/dist/aiChat/server/index.umd.js +41 -41
  21. package/dist/aiChat/server/stream.test.d.ts +1 -0
  22. package/dist/aiChat/types.d.ts +18 -4
  23. package/dist/aiChat/typesSchema.d.ts +13 -0
  24. package/dist/animationComponent/index.cjs.js +3 -3
  25. package/dist/animationComponent/index.es.js +49 -46
  26. package/dist/animationComponent/index.js +519 -0
  27. package/dist/animationComponent/index.umd.js +3 -3
  28. package/dist/canvasAbsoluteMode/index.cjs.js +1 -1
  29. package/dist/canvasAbsoluteMode/index.es.js +115 -112
  30. package/dist/canvasAbsoluteMode/index.js +1 -0
  31. package/dist/canvasAbsoluteMode/index.umd.js +1 -1
  32. package/dist/canvasEmptyState/index.cjs.js +1 -1
  33. package/dist/canvasEmptyState/index.es.js +71 -68
  34. package/dist/canvasEmptyState/index.js +1 -0
  35. package/dist/canvasEmptyState/index.umd.js +1 -1
  36. package/dist/canvasFullSize/index.cjs.js +3 -3
  37. package/dist/canvasFullSize/index.es.js +69 -66
  38. package/dist/canvasFullSize/index.js +10 -0
  39. package/dist/canvasFullSize/index.umd.js +4 -4
  40. package/dist/canvasGridMode/index.cjs.js +7 -7
  41. package/dist/canvasGridMode/index.es.js +142 -139
  42. package/dist/canvasGridMode/index.js +26 -0
  43. package/dist/canvasGridMode/index.umd.js +7 -7
  44. package/dist/canvasScreenshot/index.cjs.js +1 -1
  45. package/dist/canvasScreenshot/index.es.js +78 -75
  46. package/dist/canvasScreenshot/index.js +1 -0
  47. package/dist/canvasScreenshot/index.umd.js +1 -1
  48. package/dist/dataSourceEjs/EjsExporter.d.ts +1 -1
  49. package/dist/dataSourceEjs/index.cjs.js +3 -3
  50. package/dist/dataSourceEjs/index.es.js +40 -37
  51. package/dist/dataSourceEjs/index.js +21 -0
  52. package/dist/dataSourceEjs/index.umd.js +3 -3
  53. package/dist/dataSourceHandlebars/HandlebarsExporter.d.ts +2 -2
  54. package/dist/dataSourceHandlebars/constants.d.ts +1 -1
  55. package/dist/dataSourceHandlebars/index.cjs.js +4 -4
  56. package/dist/dataSourceHandlebars/index.es.js +58 -55
  57. package/dist/dataSourceHandlebars/index.js +10 -0
  58. package/dist/dataSourceHandlebars/index.umd.js +2 -2
  59. package/dist/dialogComponent/index.cjs.js +11 -11
  60. package/dist/dialogComponent/index.es.js +72 -69
  61. package/dist/dialogComponent/index.js +59 -0
  62. package/dist/dialogComponent/index.umd.js +11 -11
  63. package/dist/flexComponent/index.cjs.js +6 -6
  64. package/dist/flexComponent/index.es.js +151 -142
  65. package/dist/flexComponent/index.js +33 -0
  66. package/dist/flexComponent/index.umd.js +8 -8
  67. package/dist/flexComponent/typesSchema.d.ts +1 -1
  68. package/dist/fsLightboxComponent/index.cjs.js +3 -3
  69. package/dist/fsLightboxComponent/index.es.js +93 -90
  70. package/dist/fsLightboxComponent/index.js +6 -0
  71. package/dist/fsLightboxComponent/index.umd.js +3 -3
  72. package/dist/googleFontsAssetProvider/index.cjs.js +1 -1
  73. package/dist/googleFontsAssetProvider/index.es.js +112 -109
  74. package/dist/googleFontsAssetProvider/index.js +1 -0
  75. package/dist/googleFontsAssetProvider/index.umd.js +1 -1
  76. package/dist/googleFontsAssetProvider/utils.d.ts +1 -1
  77. package/dist/iconifyComponent/index.cjs.js +2 -2
  78. package/dist/iconifyComponent/index.es.js +80 -77
  79. package/dist/iconifyComponent/index.js +3 -0
  80. package/dist/iconifyComponent/index.umd.js +2 -2
  81. package/dist/index.cjs.d.ts +1 -0
  82. package/dist/index.cjs.js +970 -82
  83. package/dist/index.d.ts +1 -0
  84. package/dist/index.es.d.ts +1 -0
  85. package/dist/index.es.js +7422 -6145
  86. package/dist/index.umd.js +975 -87
  87. package/dist/layoutSidebarButtons/index.cjs.js +1 -1
  88. package/dist/layoutSidebarButtons/index.es.js +95 -92
  89. package/dist/layoutSidebarButtons/index.js +1 -0
  90. package/dist/layoutSidebarButtons/index.umd.js +1 -1
  91. package/dist/lightGalleryComponent/index.cjs.js +1 -1
  92. package/dist/lightGalleryComponent/index.es.js +164 -161
  93. package/dist/lightGalleryComponent/index.js +1 -0
  94. package/dist/lightGalleryComponent/index.umd.js +1 -1
  95. package/dist/lightGalleryComponent/utils.d.ts +1 -1
  96. package/dist/linkImageComponent/index.cjs.js +2 -2
  97. package/dist/linkImageComponent/index.es.js +60 -57
  98. package/dist/linkImageComponent/index.js +12 -0
  99. package/dist/linkImageComponent/index.umd.js +2 -2
  100. package/dist/listPagesComponent/index.cjs.js +4 -4
  101. package/dist/listPagesComponent/index.es.js +57 -54
  102. package/dist/listPagesComponent/index.js +11 -0
  103. package/dist/listPagesComponent/index.umd.js +4 -4
  104. package/dist/listPagesComponent/utils.d.ts +1 -1
  105. package/dist/presetBlockLibrary/blocks.d.ts +6 -0
  106. package/dist/presetBlockLibrary/blocks.test.d.ts +2 -0
  107. package/dist/presetBlockLibrary/emailBlocks.d.ts +53 -0
  108. package/dist/presetBlockLibrary/index.cjs.d.ts +3 -0
  109. package/dist/presetBlockLibrary/index.cjs.js +889 -0
  110. package/dist/presetBlockLibrary/index.d.ts +3 -0
  111. package/dist/presetBlockLibrary/index.es.d.ts +3 -0
  112. package/dist/presetBlockLibrary/index.es.js +1408 -0
  113. package/dist/presetBlockLibrary/index.js +889 -0
  114. package/dist/presetBlockLibrary/index.test.d.ts +1 -0
  115. package/dist/presetBlockLibrary/index.umd.js +889 -0
  116. package/dist/presetBlockLibrary/shared.d.ts +3 -0
  117. package/dist/presetBlockLibrary/types.d.ts +24 -0
  118. package/dist/presetBlockLibrary/typesSchema.d.ts +47 -0
  119. package/dist/presetPrintable/index.cjs.js +3 -3
  120. package/dist/presetPrintable/index.es.js +133 -130
  121. package/dist/presetPrintable/index.js +32 -0
  122. package/dist/presetPrintable/index.umd.js +4 -4
  123. package/dist/prosemirror/index.cjs.js +8 -8
  124. package/dist/prosemirror/index.es.js +552 -549
  125. package/dist/prosemirror/index.js +10 -0
  126. package/dist/prosemirror/index.umd.js +9 -9
  127. package/dist/prosemirror/toolbar.d.ts +2 -2
  128. package/dist/prosemirror/types.d.ts +5 -5
  129. package/dist/rendererReact/index.cjs.js +1 -1
  130. package/dist/rendererReact/index.es.js +137 -134
  131. package/dist/rendererReact/index.js +1 -1
  132. package/dist/rendererReact/index.umd.js +1 -1
  133. package/dist/rteTinyMce/index.cjs.js +2 -2
  134. package/dist/rteTinyMce/index.es.js +74 -71
  135. package/dist/rteTinyMce/index.js +104 -0
  136. package/dist/rteTinyMce/index.umd.js +2 -2
  137. package/dist/shapeDividerComponent/index.cjs.js +4 -4
  138. package/dist/shapeDividerComponent/index.es.js +91 -88
  139. package/dist/shapeDividerComponent/index.js +97 -0
  140. package/dist/shapeDividerComponent/index.umd.js +4 -4
  141. package/dist/swiperComponent/index.cjs.js +7 -7
  142. package/dist/swiperComponent/index.es.js +95 -92
  143. package/dist/swiperComponent/index.js +45 -0
  144. package/dist/swiperComponent/index.umd.js +5 -5
  145. package/dist/tableComponent/index.cjs.js +1 -1
  146. package/dist/tableComponent/index.es.js +181 -178
  147. package/dist/tableComponent/index.js +1 -0
  148. package/dist/tableComponent/index.umd.js +1 -1
  149. package/dist/tableComponent/types.d.ts +3 -3
  150. package/dist/types.d.ts +14 -14
  151. package/dist/utils.d.ts +3 -2
  152. package/dist/utilsDataSources.d.ts +1 -1
  153. package/dist/youtubeAssetProvider/index.cjs.js +1 -1
  154. package/dist/youtubeAssetProvider/index.es.js +90 -87
  155. package/dist/youtubeAssetProvider/index.js +1 -0
  156. package/dist/youtubeAssetProvider/index.umd.js +1 -1
  157. package/package.json +182 -34
  158. package/dist/aiChat/server/models.d.ts +0 -15
@@ -1,7 +1,7 @@
1
- var g = /* @__PURE__ */ ((e) => (e.free = "free", e.startup = "startup", e.business = "business", e.enterprise = "enterprise", e))(g || {}), b = /* @__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.openEditCode = "studio:openEditCode", 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.settings = "studio:settings", 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 || {});
2
- const w = "app.grapesjs.com", R = "app-stage.grapesjs.com", x = "app2.grapesjs.com", G = "app-stage2.grapesjs.com", P = [
1
+ var g = /* @__PURE__ */ ((e) => (e.free = "free", e.startup = "startup", e.business = "business", e.enterprise = "enterprise", e))(g || {}), b = /* @__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.openEditCode = "studio:openEditCode", e.openBlocks = "studio:openBlocks", e.appendComponent = "studio:appendComponent", 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.settings = "studio:settings", 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 || {});
2
+ const w = "app.grapesjs.com", R = "app-stage.grapesjs.com", k = "app2.grapesjs.com", G = "app-stage2.grapesjs.com", P = [
3
3
  w,
4
- x,
4
+ k,
5
5
  R,
6
6
  G,
7
7
  "localhost",
@@ -16,11 +16,11 @@ const w = "app.grapesjs.com", R = "app-stage.grapesjs.com", x = "app2.grapesjs.c
16
16
  // For Claude mcp app
17
17
  ".web-sandbox.oaiusercontent.com"
18
18
  // For OpenAI mcp app
19
- ], U = "license:check:end", D = () => typeof window < "u", k = ({
19
+ ], U = "license:check:end", D = () => typeof window < "u", O = ({
20
20
  isDev: e,
21
21
  isStage: o,
22
- isPlatform: i
23
- }) => `${e ? "" : `https://${o ? R : w}`}/${i ? "platform-api" : "api"}`, O = () => {
22
+ isPlatform: n
23
+ }) => `${e ? "" : `https://${o ? R : w}`}/${n ? "platform-api" : "api"}`, E = () => {
24
24
  if (!D()) return "";
25
25
  const { hostname: e } = window.location;
26
26
  if (e) return e;
@@ -29,27 +29,27 @@ const w = "app.grapesjs.com", R = "app-stage.grapesjs.com", x = "app2.grapesjs.c
29
29
  } catch {
30
30
  return "";
31
31
  }
32
- }, E = () => {
33
- const e = O();
32
+ }, $ = () => {
33
+ const e = E();
34
34
  return !!e && (P.includes(e) || P.some((o) => e.endsWith(o)));
35
35
  };
36
- async function $({
36
+ async function M({
37
37
  path: e,
38
38
  baseApiUrl: o,
39
- method: i = "GET",
40
- headers: n = {},
41
- params: l,
39
+ method: n = "GET",
40
+ headers: a = {},
41
+ params: r,
42
42
  body: u
43
43
  }) {
44
- const t = `${o || k({ isDev: !1, isStage: !1 })}${e}`, r = {
45
- method: i,
44
+ const t = `${o || O({ isDev: !1, isStage: !1 })}${e}`, i = {
45
+ method: n,
46
46
  headers: {
47
47
  "Content-Type": "application/json",
48
- ...n
48
+ ...a
49
49
  }
50
50
  };
51
- u && (r.body = JSON.stringify(u));
52
- const c = l ? new URLSearchParams(l).toString() : "", a = c ? `?${c}` : "", s = await fetch(`${t}${a}`, r);
51
+ u && (i.body = JSON.stringify(u));
52
+ const c = r ? new URLSearchParams(r).toString() : "", l = c ? `?${c}` : "", s = await fetch(`${t}${l}`, i);
53
53
  if (!s.ok)
54
54
  throw new Error(`HTTP error! status: ${s.status}`);
55
55
  return s.json();
@@ -60,98 +60,101 @@ const T = {
60
60
  [g.business]: 20,
61
61
  [g.enterprise]: 30
62
62
  };
63
- function M(e) {
64
- const o = e;
65
- return o.init = (i) => (n) => e(n, i), o;
63
+ function B(e, o) {
64
+ const n = e;
65
+ return n.init = (a) => {
66
+ const r = (u) => e(u, a);
67
+ return r.__gjsPluginId = o, r;
68
+ }, n;
66
69
  }
67
- const j = (e) => /* @__PURE__ */ M(e);
68
- async function B({
70
+ const j = (e, o) => /* @__PURE__ */ B(e, o);
71
+ async function N({
69
72
  editor: e,
70
73
  plan: o,
71
- pluginName: i,
72
- licenseKey: n,
73
- onLicenseCheckResponse: l,
74
+ pluginName: n,
75
+ licenseKey: a,
76
+ onLicenseCheckResponse: r,
74
77
  cleanup: u
75
78
  }) {
76
79
  let p = "", t;
77
- const r = (s) => {
78
- console.warn("Cleanup plugin:", i, "Reason:", s), u();
80
+ const i = (s) => {
81
+ console.warn("Cleanup plugin:", n, "Reason:", s), u(e, n);
79
82
  }, c = (s = {}) => {
80
83
  var v;
81
84
  const { error: h, sdkLicense: d } = s, y = (v = s.plan) == null ? void 0 : v.category;
82
85
  if (!(d || s.license) || h)
83
- r(h || "Invalid license");
86
+ i(h || "Invalid license");
84
87
  else if (y) {
85
- const I = T[o], L = T[y];
86
- I > L && r({ pluginRequiredPlan: o, licensePlan: y });
88
+ const L = T[o], x = T[y];
89
+ L > x && i({ pluginRequiredPlan: o, licensePlan: y });
87
90
  }
88
91
  };
89
92
  e.Commands.has(b.settings) && (t = e.runCommand(b.settings), p = (t == null ? void 0 : t.baseUrl) || "");
90
- const a = (s) => {
91
- l == null || l(s), s && c(s);
93
+ const l = (s) => {
94
+ r == null || r(s), s && c(s);
92
95
  };
93
96
  if (!t) {
94
97
  e.onReady(async () => {
95
- if (!E())
96
- if (n) {
97
- const s = await Y({ licenseKey: n, pluginName: i, baseApiUrl: p });
98
- a(s);
98
+ if (!$())
99
+ if (a) {
100
+ const s = await _({ licenseKey: a, pluginName: n, baseApiUrl: p });
101
+ l(s);
99
102
  } else
100
- r("The `licenseKey` option not provided");
103
+ i("The `licenseKey` option not provided");
101
104
  });
102
105
  return;
103
106
  }
104
107
  if (t.licensePlan || t.licenseError) {
105
- const s = N(t);
106
- a(s);
108
+ const s = Y(t);
109
+ l(s);
107
110
  return;
108
111
  }
109
- e.on(U, (s) => a(s));
112
+ e.on(U, (s) => l(s));
110
113
  }
111
- const N = (e) => ({
114
+ const Y = (e) => ({
112
115
  sdkLicense: e.license,
113
116
  license: e.license,
114
117
  error: e.licenseError,
115
118
  plan: e.licensePlan
116
119
  });
117
- async function Y(e) {
118
- const { licenseKey: o, pluginName: i, baseApiUrl: n } = e;
120
+ async function _(e) {
121
+ const { licenseKey: o, pluginName: n, baseApiUrl: a } = e;
119
122
  try {
120
- return (await $({
121
- baseApiUrl: n,
123
+ return (await M({
124
+ baseApiUrl: a,
122
125
  path: `/sdk/${o || "na"}`,
123
126
  method: "POST",
124
127
  params: {
125
128
  d: window.location.hostname,
126
- pn: i
129
+ pn: n
127
130
  }
128
131
  })).result || {};
129
- } catch (l) {
130
- return console.error("Error during SDK license check:", l), !1;
132
+ } catch (r) {
133
+ return console.error("Error during SDK license check:", r), !1;
131
134
  }
132
135
  }
133
136
  const W = (e) => {
134
137
  const o = {};
135
- for (const i of Object.keys(e)) {
136
- let n = e[i];
137
- n && (Array.isArray(n) ? n = n.map((l) => l.toString()).join(",") : n = n.toString(), o[i] = n);
138
+ for (const n of Object.keys(e)) {
139
+ let a = e[n];
140
+ a && (Array.isArray(a) ? a = a.map((r) => r.toString()).join(",") : a = a.toString(), o[n] = a);
138
141
  }
139
142
  return new URLSearchParams(o);
140
- }, A = "youtube-video", _ = (e) => {
141
- const { apiKey: o, searchParams: i, thumbnailQuality: n = "high" } = e, l = (t = {}) => {
142
- const c = "https://www.googleapis.com/youtube/v3/search", a = W(t);
143
- return `${c}?${a}`;
143
+ }, A = "youtube-video", F = (e) => {
144
+ const { apiKey: o, searchParams: n, thumbnailQuality: a = "high" } = e, r = (t = {}) => {
145
+ const c = "https://www.googleapis.com/youtube/v3/search", l = W(t);
146
+ return `${c}?${l}`;
144
147
  }, u = (t) => {
145
- var r, c, a;
146
- return ((r = t[n]) == null ? void 0 : r.url) || ((c = t.high) == null ? void 0 : c.url) || ((a = t.medium) == null ? void 0 : a.url) || t.default.url;
148
+ var i, c, l;
149
+ return ((i = t[a]) == null ? void 0 : i.url) || ((c = t.high) == null ? void 0 : c.url) || ((l = t.medium) == null ? void 0 : l.url) || t.default.url;
147
150
  }, p = (t) => {
148
- const r = u(t.snippet.thumbnails);
151
+ const i = u(t.snippet.thumbnails);
149
152
  return {
150
153
  id: t.id.videoId,
151
154
  src: `https://www.youtube.com/watch?v=${t.id.videoId}`,
152
155
  name: t.snippet.title,
153
156
  type: A,
154
- customData: { thumbnailUrl: r, videoItem: t }
157
+ customData: { thumbnailUrl: i, videoItem: t }
155
158
  };
156
159
  };
157
160
  return {
@@ -159,29 +162,29 @@ const W = (e) => {
159
162
  types: [A],
160
163
  label: ({ editor: t }) => t.I18n.t("youtubeAssetProvider.providerLabel"),
161
164
  search: { reloadOnInput: !0, debounceMs: 1e3 },
162
- async onLoad({ searchValue: t, pageCustomData: r }) {
165
+ async onLoad({ searchValue: t, pageCustomData: i }) {
163
166
  var f;
164
167
  const c = {
165
168
  maxResults: 25,
166
169
  q: t,
167
- pageToken: r == null ? void 0 : r.token,
170
+ pageToken: i == null ? void 0 : i.token,
168
171
  type: ["video"],
169
172
  key: o
170
- }, a = i == null ? void 0 : i({ searchValue: t }), s = {
173
+ }, l = n == null ? void 0 : n({ searchValue: t }), s = {
171
174
  ...c,
172
- ...a
175
+ ...l
173
176
  };
174
177
  s.part ? s.part.includes("snippet") || s.part.push("snippet") : s.part = ["snippet"];
175
- const d = await (await fetch(l(s))).json();
178
+ const d = await (await fetch(r(s))).json();
176
179
  return (f = d.items) != null && f.length ? {
177
180
  items: d.items.map(p),
178
181
  nextPageCustomData: { token: d.nextPageToken },
179
182
  isLastPage: !d.nextPageToken
180
183
  } : { items: [], isLastPage: !0 };
181
184
  },
182
- itemLayout: ({ assetProps: t, onSelect: r }) => ({
185
+ itemLayout: ({ assetProps: t, onSelect: i }) => ({
183
186
  type: "column",
184
- onClick: () => r(t),
187
+ onClick: () => i(t),
185
188
  htmlAttrs: {
186
189
  title: t.name
187
190
  },
@@ -213,25 +216,25 @@ const W = (e) => {
213
216
  ]
214
217
  })
215
218
  };
216
- }, F = {
219
+ }, K = {
217
220
  youtubeAssetProvider: {
218
221
  searchBtn: "Search on YouTube",
219
222
  modalTitle: "Select YouTube Video",
220
223
  providerLabel: "YouTube Videos"
221
224
  }
222
- }, K = "youtubeAssetProvider", q = g.startup, H = function(e, o) {
225
+ }, I = "youtubeAssetProvider", q = g.startup, H = function(e, o) {
223
226
  var c;
224
- const { skipVideoComponent: i, i18n: n = {} } = o, l = _(o);
225
- e.runCommand(b.assetProviderAdd, { provider: l });
226
- const u = "search-on-youtube", p = "video", t = (c = e.Components.getType(p)) == null ? void 0 : c.model.prototype, r = (a) => {
227
+ const { skipVideoComponent: n, i18n: a = {} } = o, r = F(o);
228
+ e.runCommand(b.assetProviderAdd, { provider: r });
229
+ const u = "search-on-youtube", p = "video", t = (c = e.Components.getType(p)) == null ? void 0 : c.model.prototype, i = (l) => {
227
230
  e.Assets.open({
228
231
  modalTitle: e.I18n.t("youtubeAssetProvider.modalTitle"),
229
- providerId: l.id,
230
- typeId: l.types[0],
232
+ providerId: r.id,
233
+ typeId: r.types[0],
231
234
  providers: [],
232
235
  types: [],
233
236
  select: (s) => {
234
- e.Assets.close(), a.set({ videoId: s.attributes.id });
237
+ e.Assets.close(), l.set({ videoId: s.attributes.id });
235
238
  },
236
239
  content: {
237
240
  header: {
@@ -241,17 +244,17 @@ const W = (e) => {
241
244
  }
242
245
  });
243
246
  };
244
- !i && t && e.Components.addType(p, {
247
+ !n && t && e.Components.addType(p, {
245
248
  model: {
246
249
  getYoutubeTraits() {
247
- const [a, ...s] = t.getYoutubeTraits.apply(this);
250
+ const [l, ...s] = t.getYoutubeTraits.apply(this);
248
251
  return [
249
- a,
252
+ l,
250
253
  {
251
254
  id: u,
252
255
  type: "button",
253
256
  label: e.I18n.t("youtubeAssetProvider.searchBtn"),
254
- command: () => r(this)
257
+ command: () => i(this)
255
258
  },
256
259
  ...s
257
260
  ];
@@ -262,29 +265,29 @@ const W = (e) => {
262
265
  dblclick: "onActive"
263
266
  }),
264
267
  onActive() {
265
- const { model: a } = this, s = a.get("provider") || "";
266
- s != null && s.startsWith("yt") && r(a);
268
+ const { model: l } = this, s = l.get("provider") || "";
269
+ s != null && s.startsWith("yt") && i(l);
267
270
  }
268
271
  }
269
272
  }), e.I18n.addMessages({
270
- en: F,
271
- ...n
272
- }), B({
273
+ en: K,
274
+ ...a
275
+ }), N({
273
276
  editor: e,
274
277
  licenseKey: o.licenseKey,
275
278
  plan: q,
276
- pluginName: K,
279
+ pluginName: I,
277
280
  cleanup: () => {
278
- e.runCommand(b.assetProviderRemove, { id: l.id }), !i && t && e.Components.addType(p, {
281
+ e.runCommand(b.assetProviderRemove, { id: r.id }), !n && t && e.Components.addType(p, {
279
282
  model: {
280
283
  getYoutubeTraits() {
281
- return t.getYoutubeTraits.apply(this).filter((a) => a.id !== u);
284
+ return t.getYoutubeTraits.apply(this).filter((l) => l.id !== u);
282
285
  }
283
286
  }
284
287
  });
285
288
  }
286
289
  });
287
- }, V = j(H);
290
+ }, V = j(H, I);
288
291
  export {
289
292
  V as default
290
293
  };
@@ -0,0 +1 @@
1
+ "use strict";var g=(e=>(e.free="free",e.startup="startup",e.business="business",e.enterprise="enterprise",e))(g||{}),b=(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.openEditCode="studio:openEditCode",e.openBlocks="studio:openBlocks",e.appendComponent="studio:appendComponent",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.settings="studio:settings",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 w="app.grapesjs.com",R="app-stage.grapesjs.com",k="app2.grapesjs.com",G="app-stage2.grapesjs.com",P=[w,k,R,G,"localhost","127.0.0.1",".local-credentialless.webcontainer.io",".local.webcontainer.io","-sandpack.codesandbox.io",".claudemcpcontent.com",".web-sandbox.oaiusercontent.com"],U="license:check:end",D=()=>typeof window<"u",O=({isDev:e,isStage:o,isPlatform:n})=>`${e?"":`https://${o?R:w}`}/${n?"platform-api":"api"}`,E=()=>{if(!D())return"";const{hostname:e}=window.location;if(e)return e;try{return window.parent.location.hostname||""}catch{return""}},$=()=>{const e=E();return!!e&&(P.includes(e)||P.some(o=>e.endsWith(o)))};async function M({path:e,baseApiUrl:o,method:n="GET",headers:i={},params:r,body:u}){const t=`${o||O({isDev:!1,isStage:!1})}${e}`,a={method:n,headers:{"Content-Type":"application/json",...i}};u&&(a.body=JSON.stringify(u));const c=r?new URLSearchParams(r).toString():"",l=c?`?${c}`:"",s=await fetch(`${t}${l}`,a);if(!s.ok)throw new Error(`HTTP error! status: ${s.status}`);return s.json()}const T={[g.free]:0,[g.startup]:10,[g.business]:20,[g.enterprise]:30};function B(e,o){const n=e;return n.init=i=>{const r=u=>e(u,i);return r.__gjsPluginId=o,r},n}const j=(e,o)=>B(e,o);async function N({editor:e,plan:o,pluginName:n,licenseKey:i,onLicenseCheckResponse:r,cleanup:u}){let p="",t;const a=s=>{console.warn("Cleanup plugin:",n,"Reason:",s),u(e,n)},c=(s={})=>{var v;const{error:h,sdkLicense:d}=s,y=(v=s.plan)==null?void 0:v.category;if(!(d||s.license)||h)a(h||"Invalid license");else if(y){const L=T[o],x=T[y];L>x&&a({pluginRequiredPlan:o,licensePlan:y})}};e.Commands.has(b.settings)&&(t=e.runCommand(b.settings),p=(t==null?void 0:t.baseUrl)||"");const l=s=>{r==null||r(s),s&&c(s)};if(!t){e.onReady(async()=>{if(!$())if(i){const s=await _({licenseKey:i,pluginName:n,baseApiUrl:p});l(s)}else a("The `licenseKey` option not provided")});return}if(t.licensePlan||t.licenseError){const s=Y(t);l(s);return}e.on(U,s=>l(s))}const Y=e=>({sdkLicense:e.license,license:e.license,error:e.licenseError,plan:e.licensePlan});async function _(e){const{licenseKey:o,pluginName:n,baseApiUrl:i}=e;try{return(await M({baseApiUrl:i,path:`/sdk/${o||"na"}`,method:"POST",params:{d:window.location.hostname,pn:n}})).result||{}}catch(r){return console.error("Error during SDK license check:",r),!1}}const W=e=>{const o={};for(const n of Object.keys(e)){let i=e[n];i&&(Array.isArray(i)?i=i.map(r=>r.toString()).join(","):i=i.toString(),o[n]=i)}return new URLSearchParams(o)},A="youtube-video",F=e=>{const{apiKey:o,searchParams:n,thumbnailQuality:i="high"}=e,r=(t={})=>{const c="https://www.googleapis.com/youtube/v3/search",l=W(t);return`${c}?${l}`},u=t=>{var a,c,l;return((a=t[i])==null?void 0:a.url)||((c=t.high)==null?void 0:c.url)||((l=t.medium)==null?void 0:l.url)||t.default.url},p=t=>{const a=u(t.snippet.thumbnails);return{id:t.id.videoId,src:`https://www.youtube.com/watch?v=${t.id.videoId}`,name:t.snippet.title,type:A,customData:{thumbnailUrl:a,videoItem:t}}};return{id:"youtube",types:[A],label:({editor:t})=>t.I18n.t("youtubeAssetProvider.providerLabel"),search:{reloadOnInput:!0,debounceMs:1e3},async onLoad({searchValue:t,pageCustomData:a}){var f;const c={maxResults:25,q:t,pageToken:a==null?void 0:a.token,type:["video"],key:o},l=n==null?void 0:n({searchValue:t}),s={...c,...l};s.part?s.part.includes("snippet")||s.part.push("snippet"):s.part=["snippet"];const d=await(await fetch(r(s))).json();return(f=d.items)!=null&&f.length?{items:d.items.map(p),nextPageCustomData:{token:d.nextPageToken},isLastPage:!d.nextPageToken}:{items:[],isLastPage:!0}},itemLayout:({assetProps:t,onSelect:a})=>({type:"column",onClick:()=>a(t),htmlAttrs:{title:t.name},style:{borderWidth:"1px",borderRadius:8,overflow:"hidden",cursor:"pointer"},children:[{type:"custom",render:()=>{var c;return`<img src="${(c=t.customData)==null?void 0:c.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}}]})}},K={youtubeAssetProvider:{searchBtn:"Search on YouTube",modalTitle:"Select YouTube Video",providerLabel:"YouTube Videos"}},I="youtubeAssetProvider",q=g.startup,H=function(e,o){var c;const{skipVideoComponent:n,i18n:i={}}=o,r=F(o);e.runCommand(b.assetProviderAdd,{provider:r});const u="search-on-youtube",p="video",t=(c=e.Components.getType(p))==null?void 0:c.model.prototype,a=l=>{e.Assets.open({modalTitle:e.I18n.t("youtubeAssetProvider.modalTitle"),providerId:r.id,typeId:r.types[0],providers:[],types:[],select:s=>{e.Assets.close(),l.set({videoId:s.attributes.id})},content:{header:{addUrl:!1,upload:!1}}})};!n&&t&&e.Components.addType(p,{model:{getYoutubeTraits(){const[l,...s]=t.getYoutubeTraits.apply(this);return[l,{id:u,type:"button",label:e.I18n.t("youtubeAssetProvider.searchBtn"),command:()=>a(this)},...s]}},view:{events:()=>({dblclick:"onActive"}),onActive(){const{model:l}=this,s=l.get("provider")||"";s!=null&&s.startsWith("yt")&&a(l)}}}),e.I18n.addMessages({en:K,...i}),N({editor:e,licenseKey:o.licenseKey,plan:q,pluginName:I,cleanup:()=>{e.runCommand(b.assetProviderRemove,{id:r.id}),!n&&t&&e.Components.addType(p,{model:{getYoutubeTraits(){return t.getYoutubeTraits.apply(this).filter(l=>l.id!==u)}}})}})},V=j(H,I);module.exports=V;
@@ -1 +1 @@
1
- (function(u,p){typeof exports=="object"&&typeof module<"u"?module.exports=p():typeof define=="function"&&define.amd?define(p):(u=typeof globalThis<"u"?globalThis:u||self,u.StudioSdkPlugins_youtubeAssetProvider=p())})(this,function(){"use strict";var u=(e=>(e.free="free",e.startup="startup",e.business="business",e.enterprise="enterprise",e))(u||{}),p=(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.openEditCode="studio:openEditCode",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.settings="studio:settings",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))(p||{});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",".claudemcpcontent.com",".web-sandbox.oaiusercontent.com"],I="license:check:end",L=()=>typeof window<"u",x=({isDev:e,isStage:o,isPlatform:a})=>`${e?"":`https://${o?P:v}`}/${a?"platform-api":"api"}`,D=()=>{if(!L())return"";const{hostname:e}=window.location;if(e)return e;try{return window.parent.location.hostname||""}catch{return""}},G=()=>{const e=D();return!!e&&(T.includes(e)||T.some(o=>e.endsWith(o)))};async function O({path:e,baseApiUrl:o,method:a="GET",headers:n={},params:l,body:d}){const t=`${o||x({isDev:!1,isStage:!1})}${e}`,r={method:a,headers:{"Content-Type":"application/json",...n}};d&&(r.body=JSON.stringify(d));const c=l?new URLSearchParams(l).toString():"",i=c?`?${c}`:"",s=await fetch(`${t}${i}`,r);if(!s.ok)throw new Error(`HTTP error! status: ${s.status}`);return s.json()}const A={[u.free]:0,[u.startup]:10,[u.business]:20,[u.enterprise]:30};function U(e){const o=e;return o.init=a=>n=>e(n,a),o}const k=e=>U(e);async function E({editor:e,plan:o,pluginName:a,licenseKey:n,onLicenseCheckResponse:l,cleanup:d}){let g="",t;const r=s=>{console.warn("Cleanup plugin:",a,"Reason:",s),d()},c=(s={})=>{var R;const{error:f,sdkLicense:b}=s,y=(R=s.plan)==null?void 0:R.category;if(!(b||s.license)||f)r(f||"Invalid license");else if(y){const W=A[o],F=A[y];W>F&&r({pluginRequiredPlan:o,licensePlan:y})}};e.Commands.has(p.settings)&&(t=e.runCommand(p.settings),g=(t==null?void 0:t.baseUrl)||"");const i=s=>{l==null||l(s),s&&c(s)};if(!t){e.onReady(async()=>{if(!G())if(n){const s=await $({licenseKey:n,pluginName:a,baseApiUrl:g});i(s)}else r("The `licenseKey` option not provided")});return}if(t.licensePlan||t.licenseError){const s=M(t);i(s);return}e.on(I,s=>i(s))}const M=e=>({sdkLicense:e.license,license:e.license,error:e.licenseError,plan:e.licensePlan});async function $(e){const{licenseKey:o,pluginName:a,baseApiUrl:n}=e;try{return(await O({baseApiUrl:n,path:`/sdk/${o||"na"}`,method:"POST",params:{d:window.location.hostname,pn:a}})).result||{}}catch(l){return console.error("Error during SDK license check:",l),!1}}const j=e=>{const o={};for(const a of Object.keys(e)){let n=e[a];n&&(Array.isArray(n)?n=n.map(l=>l.toString()).join(","):n=n.toString(),o[a]=n)}return new URLSearchParams(o)},w="youtube-video",N=e=>{const{apiKey:o,searchParams:a,thumbnailQuality:n="high"}=e,l=(t={})=>{const c="https://www.googleapis.com/youtube/v3/search",i=j(t);return`${c}?${i}`},d=t=>{var r,c,i;return((r=t[n])==null?void 0:r.url)||((c=t.high)==null?void 0:c.url)||((i=t.medium)==null?void 0:i.url)||t.default.url},g=t=>{const r=d(t.snippet.thumbnails);return{id:t.id.videoId,src:`https://www.youtube.com/watch?v=${t.id.videoId}`,name:t.snippet.title,type:w,customData:{thumbnailUrl:r,videoItem:t}}};return{id:"youtube",types:[w],label:({editor:t})=>t.I18n.t("youtubeAssetProvider.providerLabel"),search:{reloadOnInput:!0,debounceMs:1e3},async onLoad({searchValue:t,pageCustomData:r}){var h;const c={maxResults:25,q:t,pageToken:r==null?void 0:r.token,type:["video"],key:o},i=a==null?void 0:a({searchValue:t}),s={...c,...i};s.part?s.part.includes("snippet")||s.part.push("snippet"):s.part=["snippet"];const b=await(await fetch(l(s))).json();return(h=b.items)!=null&&h.length?{items:b.items.map(g),nextPageCustomData:{token:b.nextPageToken},isLastPage:!b.nextPageToken}:{items:[],isLastPage:!0}},itemLayout:({assetProps:t,onSelect:r})=>({type:"column",onClick:()=>r(t),htmlAttrs:{title:t.name},style:{borderWidth:"1px",borderRadius:8,overflow:"hidden",cursor:"pointer"},children:[{type:"custom",render:()=>{var c;return`<img src="${(c=t.customData)==null?void 0:c.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}}]})}},B={youtubeAssetProvider:{searchBtn:"Search on YouTube",modalTitle:"Select YouTube Video",providerLabel:"YouTube Videos"}},_="youtubeAssetProvider",Y=u.startup;return k(function(e,o){var c;const{skipVideoComponent:a,i18n:n={}}=o,l=N(o);e.runCommand(p.assetProviderAdd,{provider:l});const d="search-on-youtube",g="video",t=(c=e.Components.getType(g))==null?void 0:c.model.prototype,r=i=>{e.Assets.open({modalTitle:e.I18n.t("youtubeAssetProvider.modalTitle"),providerId:l.id,typeId:l.types[0],providers:[],types:[],select:s=>{e.Assets.close(),i.set({videoId:s.attributes.id})},content:{header:{addUrl:!1,upload:!1}}})};!a&&t&&e.Components.addType(g,{model:{getYoutubeTraits(){const[i,...s]=t.getYoutubeTraits.apply(this);return[i,{id:d,type:"button",label:e.I18n.t("youtubeAssetProvider.searchBtn"),command:()=>r(this)},...s]}},view:{events:()=>({dblclick:"onActive"}),onActive(){const{model:i}=this,s=i.get("provider")||"";s!=null&&s.startsWith("yt")&&r(i)}}}),e.I18n.addMessages({en:B,...n}),E({editor:e,licenseKey:o.licenseKey,plan:Y,pluginName:_,cleanup:()=>{e.runCommand(p.assetProviderRemove,{id:l.id}),!a&&t&&e.Components.addType(g,{model:{getYoutubeTraits(){return t.getYoutubeTraits.apply(this).filter(i=>i.id!==d)}}})}})})});
1
+ (function(p,d){typeof exports=="object"&&typeof module<"u"?module.exports=d():typeof define=="function"&&define.amd?define(d):(p=typeof globalThis<"u"?globalThis:p||self,p.StudioSdkPlugins_youtubeAssetProvider=d())})(this,function(){"use strict";var p=(e=>(e.free="free",e.startup="startup",e.business="business",e.enterprise="enterprise",e))(p||{}),d=(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.openEditCode="studio:openEditCode",e.openBlocks="studio:openBlocks",e.appendComponent="studio:appendComponent",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.settings="studio:settings",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))(d||{});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",".claudemcpcontent.com",".web-sandbox.oaiusercontent.com"],L="license:check:end",x=()=>typeof window<"u",D=({isDev:e,isStage:o,isPlatform:n})=>`${e?"":`https://${o?P:v}`}/${n?"platform-api":"api"}`,k=()=>{if(!x())return"";const{hostname:e}=window.location;if(e)return e;try{return window.parent.location.hostname||""}catch{return""}},G=()=>{const e=k();return!!e&&(T.includes(e)||T.some(o=>e.endsWith(o)))};async function O({path:e,baseApiUrl:o,method:n="GET",headers:i={},params:r,body:u}){const t=`${o||D({isDev:!1,isStage:!1})}${e}`,a={method:n,headers:{"Content-Type":"application/json",...i}};u&&(a.body=JSON.stringify(u));const c=r?new URLSearchParams(r).toString():"",l=c?`?${c}`:"",s=await fetch(`${t}${l}`,a);if(!s.ok)throw new Error(`HTTP error! status: ${s.status}`);return s.json()}const A={[p.free]:0,[p.startup]:10,[p.business]:20,[p.enterprise]:30};function U(e,o){const n=e;return n.init=i=>{const r=u=>e(u,i);return r.__gjsPluginId=o,r},n}const E=(e,o)=>U(e,o);async function M({editor:e,plan:o,pluginName:n,licenseKey:i,onLicenseCheckResponse:r,cleanup:u}){let g="",t;const a=s=>{console.warn("Cleanup plugin:",n,"Reason:",s),u(e,n)},c=(s={})=>{var R;const{error:f,sdkLicense:b}=s,y=(R=s.plan)==null?void 0:R.category;if(!(b||s.license)||f)a(f||"Invalid license");else if(y){const W=A[o],F=A[y];W>F&&a({pluginRequiredPlan:o,licensePlan:y})}};e.Commands.has(d.settings)&&(t=e.runCommand(d.settings),g=(t==null?void 0:t.baseUrl)||"");const l=s=>{r==null||r(s),s&&c(s)};if(!t){e.onReady(async()=>{if(!G())if(i){const s=await j({licenseKey:i,pluginName:n,baseApiUrl:g});l(s)}else a("The `licenseKey` option not provided")});return}if(t.licensePlan||t.licenseError){const s=$(t);l(s);return}e.on(L,s=>l(s))}const $=e=>({sdkLicense:e.license,license:e.license,error:e.licenseError,plan:e.licensePlan});async function j(e){const{licenseKey:o,pluginName:n,baseApiUrl:i}=e;try{return(await O({baseApiUrl:i,path:`/sdk/${o||"na"}`,method:"POST",params:{d:window.location.hostname,pn:n}})).result||{}}catch(r){return console.error("Error during SDK license check:",r),!1}}const B=e=>{const o={};for(const n of Object.keys(e)){let i=e[n];i&&(Array.isArray(i)?i=i.map(r=>r.toString()).join(","):i=i.toString(),o[n]=i)}return new URLSearchParams(o)},w="youtube-video",N=e=>{const{apiKey:o,searchParams:n,thumbnailQuality:i="high"}=e,r=(t={})=>{const c="https://www.googleapis.com/youtube/v3/search",l=B(t);return`${c}?${l}`},u=t=>{var a,c,l;return((a=t[i])==null?void 0:a.url)||((c=t.high)==null?void 0:c.url)||((l=t.medium)==null?void 0:l.url)||t.default.url},g=t=>{const a=u(t.snippet.thumbnails);return{id:t.id.videoId,src:`https://www.youtube.com/watch?v=${t.id.videoId}`,name:t.snippet.title,type:w,customData:{thumbnailUrl:a,videoItem:t}}};return{id:"youtube",types:[w],label:({editor:t})=>t.I18n.t("youtubeAssetProvider.providerLabel"),search:{reloadOnInput:!0,debounceMs:1e3},async onLoad({searchValue:t,pageCustomData:a}){var h;const c={maxResults:25,q:t,pageToken:a==null?void 0:a.token,type:["video"],key:o},l=n==null?void 0:n({searchValue:t}),s={...c,...l};s.part?s.part.includes("snippet")||s.part.push("snippet"):s.part=["snippet"];const b=await(await fetch(r(s))).json();return(h=b.items)!=null&&h.length?{items:b.items.map(g),nextPageCustomData:{token:b.nextPageToken},isLastPage:!b.nextPageToken}:{items:[],isLastPage:!0}},itemLayout:({assetProps:t,onSelect:a})=>({type:"column",onClick:()=>a(t),htmlAttrs:{title:t.name},style:{borderWidth:"1px",borderRadius:8,overflow:"hidden",cursor:"pointer"},children:[{type:"custom",render:()=>{var c;return`<img src="${(c=t.customData)==null?void 0:c.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"}},I="youtubeAssetProvider",Y=p.startup;return E(function(e,o){var c;const{skipVideoComponent:n,i18n:i={}}=o,r=N(o);e.runCommand(d.assetProviderAdd,{provider:r});const u="search-on-youtube",g="video",t=(c=e.Components.getType(g))==null?void 0:c.model.prototype,a=l=>{e.Assets.open({modalTitle:e.I18n.t("youtubeAssetProvider.modalTitle"),providerId:r.id,typeId:r.types[0],providers:[],types:[],select:s=>{e.Assets.close(),l.set({videoId:s.attributes.id})},content:{header:{addUrl:!1,upload:!1}}})};!n&&t&&e.Components.addType(g,{model:{getYoutubeTraits(){const[l,...s]=t.getYoutubeTraits.apply(this);return[l,{id:u,type:"button",label:e.I18n.t("youtubeAssetProvider.searchBtn"),command:()=>a(this)},...s]}},view:{events:()=>({dblclick:"onActive"}),onActive(){const{model:l}=this,s=l.get("provider")||"";s!=null&&s.startsWith("yt")&&a(l)}}}),e.I18n.addMessages({en:_,...i}),M({editor:e,licenseKey:o.licenseKey,plan:Y,pluginName:I,cleanup:()=>{e.runCommand(d.assetProviderRemove,{id:r.id}),!n&&t&&e.Components.addType(g,{model:{getYoutubeTraits(){return t.getYoutubeTraits.apply(this).filter(l=>l.id!==u)}}})}})},I)});