@grapesjs/studio-sdk-plugins 1.0.38-rc.0 → 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.
- package/dist/accordionComponent/index.cjs.js +5 -5
- package/dist/accordionComponent/index.es.js +70 -67
- package/dist/accordionComponent/index.js +39 -0
- package/dist/accordionComponent/index.umd.js +4 -4
- package/dist/aiChat/components/AiChatHeader.d.ts +4 -5
- package/dist/aiChat/components/AiChatInput/index.d.ts +4 -5
- package/dist/aiChat/components/AiChatMessage.d.ts +7 -8
- package/dist/aiChat/components/index.d.ts +1 -1
- package/dist/aiChat/components/utils.d.ts +1 -1
- package/dist/aiChat/index.cjs.js +10 -376
- package/dist/aiChat/index.es.js +4569 -28851
- package/dist/aiChat/index.js +10 -376
- package/dist/aiChat/index.umd.js +11 -377
- package/dist/aiChat/server/index.cjs.d.ts +0 -1
- package/dist/aiChat/server/index.cjs.js +45 -45
- package/dist/aiChat/server/index.d.ts +0 -1
- package/dist/aiChat/server/index.es.d.ts +0 -1
- package/dist/aiChat/server/index.es.js +371 -427
- package/dist/aiChat/server/index.js +45 -45
- package/dist/aiChat/server/index.umd.js +41 -41
- package/dist/aiChat/server/stream.test.d.ts +1 -0
- package/dist/aiChat/types.d.ts +18 -4
- package/dist/aiChat/typesSchema.d.ts +13 -0
- package/dist/animationComponent/index.cjs.js +3 -3
- package/dist/animationComponent/index.es.js +49 -46
- package/dist/animationComponent/index.js +519 -0
- package/dist/animationComponent/index.umd.js +3 -3
- package/dist/canvasAbsoluteMode/index.cjs.js +1 -1
- package/dist/canvasAbsoluteMode/index.es.js +115 -112
- package/dist/canvasAbsoluteMode/index.js +1 -0
- package/dist/canvasAbsoluteMode/index.umd.js +1 -1
- package/dist/canvasEmptyState/index.cjs.js +1 -1
- package/dist/canvasEmptyState/index.es.js +71 -68
- package/dist/canvasEmptyState/index.js +1 -0
- package/dist/canvasEmptyState/index.umd.js +1 -1
- package/dist/canvasFullSize/index.cjs.js +3 -3
- package/dist/canvasFullSize/index.es.js +69 -66
- package/dist/canvasFullSize/index.js +10 -0
- package/dist/canvasFullSize/index.umd.js +4 -4
- package/dist/canvasGridMode/index.cjs.js +7 -7
- package/dist/canvasGridMode/index.es.js +142 -139
- package/dist/canvasGridMode/index.js +26 -0
- package/dist/canvasGridMode/index.umd.js +7 -7
- package/dist/canvasScreenshot/index.cjs.js +1 -1
- package/dist/canvasScreenshot/index.es.js +78 -75
- package/dist/canvasScreenshot/index.js +1 -0
- package/dist/canvasScreenshot/index.umd.js +1 -1
- package/dist/dataSourceEjs/EjsExporter.d.ts +1 -1
- package/dist/dataSourceEjs/index.cjs.js +3 -3
- package/dist/dataSourceEjs/index.es.js +40 -37
- package/dist/dataSourceEjs/index.js +21 -0
- package/dist/dataSourceEjs/index.umd.js +3 -3
- package/dist/dataSourceHandlebars/HandlebarsExporter.d.ts +2 -2
- package/dist/dataSourceHandlebars/constants.d.ts +1 -1
- package/dist/dataSourceHandlebars/index.cjs.js +4 -4
- package/dist/dataSourceHandlebars/index.es.js +58 -55
- package/dist/dataSourceHandlebars/index.js +10 -0
- package/dist/dataSourceHandlebars/index.umd.js +2 -2
- package/dist/dialogComponent/index.cjs.js +11 -11
- package/dist/dialogComponent/index.es.js +72 -69
- package/dist/dialogComponent/index.js +59 -0
- package/dist/dialogComponent/index.umd.js +11 -11
- package/dist/flexComponent/index.cjs.js +6 -6
- package/dist/flexComponent/index.es.js +151 -142
- package/dist/flexComponent/index.js +33 -0
- package/dist/flexComponent/index.umd.js +8 -8
- package/dist/flexComponent/typesSchema.d.ts +1 -1
- package/dist/fsLightboxComponent/index.cjs.js +3 -3
- package/dist/fsLightboxComponent/index.es.js +93 -90
- package/dist/fsLightboxComponent/index.js +6 -0
- package/dist/fsLightboxComponent/index.umd.js +3 -3
- package/dist/googleFontsAssetProvider/index.cjs.js +1 -1
- package/dist/googleFontsAssetProvider/index.es.js +112 -109
- package/dist/googleFontsAssetProvider/index.js +1 -0
- package/dist/googleFontsAssetProvider/index.umd.js +1 -1
- package/dist/googleFontsAssetProvider/utils.d.ts +1 -1
- package/dist/iconifyComponent/index.cjs.js +2 -2
- package/dist/iconifyComponent/index.es.js +80 -77
- package/dist/iconifyComponent/index.js +3 -0
- package/dist/iconifyComponent/index.umd.js +2 -2
- package/dist/index.cjs.d.ts +1 -0
- package/dist/index.cjs.js +970 -82
- package/dist/index.d.ts +1 -0
- package/dist/index.es.d.ts +1 -0
- package/dist/index.es.js +7422 -6145
- package/dist/index.umd.js +975 -87
- package/dist/layoutSidebarButtons/index.cjs.js +1 -1
- package/dist/layoutSidebarButtons/index.es.js +95 -92
- package/dist/layoutSidebarButtons/index.js +1 -0
- package/dist/layoutSidebarButtons/index.umd.js +1 -1
- package/dist/lightGalleryComponent/index.cjs.js +1 -1
- package/dist/lightGalleryComponent/index.es.js +164 -161
- package/dist/lightGalleryComponent/index.js +1 -0
- package/dist/lightGalleryComponent/index.umd.js +1 -1
- package/dist/lightGalleryComponent/utils.d.ts +1 -1
- package/dist/linkImageComponent/index.cjs.js +2 -2
- package/dist/linkImageComponent/index.es.js +60 -57
- package/dist/linkImageComponent/index.js +12 -0
- package/dist/linkImageComponent/index.umd.js +2 -2
- package/dist/listPagesComponent/index.cjs.js +4 -4
- package/dist/listPagesComponent/index.es.js +57 -54
- package/dist/listPagesComponent/index.js +11 -0
- package/dist/listPagesComponent/index.umd.js +4 -4
- package/dist/listPagesComponent/utils.d.ts +1 -1
- package/dist/presetBlockLibrary/blocks.d.ts +6 -0
- package/dist/presetBlockLibrary/blocks.test.d.ts +2 -0
- package/dist/presetBlockLibrary/emailBlocks.d.ts +53 -0
- package/dist/presetBlockLibrary/index.cjs.d.ts +3 -0
- package/dist/presetBlockLibrary/index.cjs.js +889 -0
- package/dist/presetBlockLibrary/index.d.ts +3 -0
- package/dist/presetBlockLibrary/index.es.d.ts +3 -0
- package/dist/presetBlockLibrary/index.es.js +1408 -0
- package/dist/presetBlockLibrary/index.js +889 -0
- package/dist/presetBlockLibrary/index.test.d.ts +1 -0
- package/dist/presetBlockLibrary/index.umd.js +889 -0
- package/dist/presetBlockLibrary/shared.d.ts +3 -0
- package/dist/presetBlockLibrary/types.d.ts +24 -0
- package/dist/presetBlockLibrary/typesSchema.d.ts +47 -0
- package/dist/presetPrintable/index.cjs.js +3 -3
- package/dist/presetPrintable/index.es.js +133 -130
- package/dist/presetPrintable/index.js +32 -0
- package/dist/presetPrintable/index.umd.js +4 -4
- package/dist/prosemirror/index.cjs.js +8 -8
- package/dist/prosemirror/index.es.js +552 -549
- package/dist/prosemirror/index.js +10 -0
- package/dist/prosemirror/index.umd.js +9 -9
- package/dist/prosemirror/toolbar.d.ts +2 -2
- package/dist/prosemirror/types.d.ts +5 -5
- package/dist/rendererReact/index.cjs.js +1 -1
- package/dist/rendererReact/index.es.js +137 -134
- package/dist/rendererReact/index.js +1 -1
- package/dist/rendererReact/index.umd.js +1 -1
- package/dist/rteTinyMce/index.cjs.js +2 -2
- package/dist/rteTinyMce/index.es.js +74 -71
- package/dist/rteTinyMce/index.js +104 -0
- package/dist/rteTinyMce/index.umd.js +2 -2
- package/dist/shapeDividerComponent/index.cjs.js +4 -4
- package/dist/shapeDividerComponent/index.es.js +91 -88
- package/dist/shapeDividerComponent/index.js +97 -0
- package/dist/shapeDividerComponent/index.umd.js +4 -4
- package/dist/swiperComponent/index.cjs.js +7 -7
- package/dist/swiperComponent/index.es.js +95 -92
- package/dist/swiperComponent/index.js +45 -0
- package/dist/swiperComponent/index.umd.js +5 -5
- package/dist/tableComponent/index.cjs.js +1 -1
- package/dist/tableComponent/index.es.js +181 -178
- package/dist/tableComponent/index.js +1 -0
- package/dist/tableComponent/index.umd.js +1 -1
- package/dist/tableComponent/types.d.ts +3 -3
- package/dist/types.d.ts +14 -14
- package/dist/utils.d.ts +3 -2
- package/dist/utilsDataSources.d.ts +1 -1
- package/dist/youtubeAssetProvider/index.cjs.js +1 -1
- package/dist/youtubeAssetProvider/index.es.js +90 -87
- package/dist/youtubeAssetProvider/index.js +1 -0
- package/dist/youtubeAssetProvider/index.umd.js +1 -1
- package/package.json +182 -34
- 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",
|
|
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
|
-
|
|
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",
|
|
19
|
+
], U = "license:check:end", D = () => typeof window < "u", O = ({
|
|
20
20
|
isDev: e,
|
|
21
21
|
isStage: o,
|
|
22
|
-
isPlatform:
|
|
23
|
-
}) => `${e ? "" : `https://${o ? R : w}`}/${
|
|
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
|
-
},
|
|
33
|
-
const e =
|
|
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:
|
|
40
|
-
headers:
|
|
41
|
-
params:
|
|
39
|
+
method: n = "GET",
|
|
40
|
+
headers: a = {},
|
|
41
|
+
params: r,
|
|
42
42
|
body: u
|
|
43
43
|
}) {
|
|
44
|
-
const t = `${o ||
|
|
45
|
-
method:
|
|
44
|
+
const t = `${o || O({ isDev: !1, isStage: !1 })}${e}`, i = {
|
|
45
|
+
method: n,
|
|
46
46
|
headers: {
|
|
47
47
|
"Content-Type": "application/json",
|
|
48
|
-
...
|
|
48
|
+
...a
|
|
49
49
|
}
|
|
50
50
|
};
|
|
51
|
-
u && (
|
|
52
|
-
const c =
|
|
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
|
|
64
|
-
const
|
|
65
|
-
return
|
|
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__ */
|
|
68
|
-
async function
|
|
70
|
+
const j = (e, o) => /* @__PURE__ */ B(e, o);
|
|
71
|
+
async function N({
|
|
69
72
|
editor: e,
|
|
70
73
|
plan: o,
|
|
71
|
-
pluginName:
|
|
72
|
-
licenseKey:
|
|
73
|
-
onLicenseCheckResponse:
|
|
74
|
+
pluginName: n,
|
|
75
|
+
licenseKey: a,
|
|
76
|
+
onLicenseCheckResponse: r,
|
|
74
77
|
cleanup: u
|
|
75
78
|
}) {
|
|
76
79
|
let p = "", t;
|
|
77
|
-
const
|
|
78
|
-
console.warn("Cleanup plugin:",
|
|
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
|
-
|
|
86
|
+
i(h || "Invalid license");
|
|
84
87
|
else if (y) {
|
|
85
|
-
const
|
|
86
|
-
|
|
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
|
|
91
|
-
|
|
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 (
|
|
96
|
-
if (
|
|
97
|
-
const s = await
|
|
98
|
-
|
|
98
|
+
if (!$())
|
|
99
|
+
if (a) {
|
|
100
|
+
const s = await _({ licenseKey: a, pluginName: n, baseApiUrl: p });
|
|
101
|
+
l(s);
|
|
99
102
|
} else
|
|
100
|
-
|
|
103
|
+
i("The `licenseKey` option not provided");
|
|
101
104
|
});
|
|
102
105
|
return;
|
|
103
106
|
}
|
|
104
107
|
if (t.licensePlan || t.licenseError) {
|
|
105
|
-
const s =
|
|
106
|
-
|
|
108
|
+
const s = Y(t);
|
|
109
|
+
l(s);
|
|
107
110
|
return;
|
|
108
111
|
}
|
|
109
|
-
e.on(U, (s) =>
|
|
112
|
+
e.on(U, (s) => l(s));
|
|
110
113
|
}
|
|
111
|
-
const
|
|
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
|
|
118
|
-
const { licenseKey: o, pluginName:
|
|
120
|
+
async function _(e) {
|
|
121
|
+
const { licenseKey: o, pluginName: n, baseApiUrl: a } = e;
|
|
119
122
|
try {
|
|
120
|
-
return (await
|
|
121
|
-
baseApiUrl:
|
|
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:
|
|
129
|
+
pn: n
|
|
127
130
|
}
|
|
128
131
|
})).result || {};
|
|
129
|
-
} catch (
|
|
130
|
-
return console.error("Error during SDK license check:",
|
|
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
|
|
136
|
-
let
|
|
137
|
-
|
|
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",
|
|
141
|
-
const { apiKey: o, searchParams:
|
|
142
|
-
const c = "https://www.googleapis.com/youtube/v3/search",
|
|
143
|
-
return `${c}?${
|
|
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
|
|
146
|
-
return ((
|
|
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
|
|
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:
|
|
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:
|
|
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:
|
|
170
|
+
pageToken: i == null ? void 0 : i.token,
|
|
168
171
|
type: ["video"],
|
|
169
172
|
key: o
|
|
170
|
-
},
|
|
173
|
+
}, l = n == null ? void 0 : n({ searchValue: t }), s = {
|
|
171
174
|
...c,
|
|
172
|
-
...
|
|
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(
|
|
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:
|
|
185
|
+
itemLayout: ({ assetProps: t, onSelect: i }) => ({
|
|
183
186
|
type: "column",
|
|
184
|
-
onClick: () =>
|
|
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
|
-
},
|
|
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
|
-
},
|
|
225
|
+
}, I = "youtubeAssetProvider", q = g.startup, H = function(e, o) {
|
|
223
226
|
var c;
|
|
224
|
-
const { skipVideoComponent:
|
|
225
|
-
e.runCommand(b.assetProviderAdd, { provider:
|
|
226
|
-
const u = "search-on-youtube", p = "video", t = (c = e.Components.getType(p)) == null ? void 0 : c.model.prototype,
|
|
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:
|
|
230
|
-
typeId:
|
|
232
|
+
providerId: r.id,
|
|
233
|
+
typeId: r.types[0],
|
|
231
234
|
providers: [],
|
|
232
235
|
types: [],
|
|
233
236
|
select: (s) => {
|
|
234
|
-
e.Assets.close(),
|
|
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
|
-
!
|
|
247
|
+
!n && t && e.Components.addType(p, {
|
|
245
248
|
model: {
|
|
246
249
|
getYoutubeTraits() {
|
|
247
|
-
const [
|
|
250
|
+
const [l, ...s] = t.getYoutubeTraits.apply(this);
|
|
248
251
|
return [
|
|
249
|
-
|
|
252
|
+
l,
|
|
250
253
|
{
|
|
251
254
|
id: u,
|
|
252
255
|
type: "button",
|
|
253
256
|
label: e.I18n.t("youtubeAssetProvider.searchBtn"),
|
|
254
|
-
command: () =>
|
|
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:
|
|
266
|
-
s != null && s.startsWith("yt") &&
|
|
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:
|
|
271
|
-
...
|
|
272
|
-
}),
|
|
273
|
+
en: K,
|
|
274
|
+
...a
|
|
275
|
+
}), N({
|
|
273
276
|
editor: e,
|
|
274
277
|
licenseKey: o.licenseKey,
|
|
275
278
|
plan: q,
|
|
276
|
-
pluginName:
|
|
279
|
+
pluginName: I,
|
|
277
280
|
cleanup: () => {
|
|
278
|
-
e.runCommand(b.assetProviderRemove, { id:
|
|
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((
|
|
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(
|
|
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)});
|