@grapesjs/studio-sdk-plugins 1.0.24 → 1.0.25

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.
@@ -0,0 +1,3 @@
1
+ import { LinkImageComponentOptions } from './types';
2
+ declare const _default: import('../utils').PluginWithInit<LinkImageComponentOptions>;
3
+ export default _default;
@@ -0,0 +1,12 @@
1
+ "use strict";const T="app.grapesjs.com",v="app-stage.grapesjs.com",y=[T,v,"localhost","127.0.0.1",".local-credentialless.webcontainer.io",".local.webcontainer.io","-sandpack.codesandbox.io"],A="license:check:start",C="license:check:end",I=()=>typeof window<"u",L=({isDev:e,isStage:s})=>`${e?"":`https://${s?v:T}`}/api`,N=()=>{const e=I()&&window.location.hostname;return!!e&&(y.includes(e)||y.some(s=>e.endsWith(s)))};async function E({path:e,baseApiUrl:s,method:i="GET",headers:o={},params:a,body:c}){const g=`${s||L({isDev:!1,isStage:!1})}${e}`,r={method:i,headers:{"Content-Type":"application/json",...o}};c&&(r.body=JSON.stringify(c));const m=a?new URLSearchParams(a).toString():"",t=m?`?${m}`:"",l=await fetch(`${g}${t}`,r);if(!l.ok)throw new Error(`HTTP error! status: ${l.status}`);return l.json()}var h=(e=>(e.free="free",e.startup="startup",e.business="business",e.enterprise="enterprise",e))(h||{});const k={[h.free]:0,[h.startup]:10,[h.business]:20,[h.enterprise]:30};function D(e){const s=e;return s.init=i=>o=>e(o,i),s}const U=e=>D(e);async function $({editor:e,plan:s,pluginName:i,licenseKey:o,cleanup:a}){let c="",p=!1;const g=N(),r=t=>{console.warn("Cleanup plugin:",i,"Reason:",t),a()},m=(t={})=>{var d;const{error:l,sdkLicense:b}=t,n=(d=t.plan)==null?void 0:d.category;if(!(b||t.license)||l)r(l||"Invalid license");else if(n){const w=k[s],f=k[n];w>f&&r({pluginRequiredPlan:s,licensePlan:n})}};e.on(A,t=>{c=t==null?void 0:t.baseApiUrl,p=!0}),e.on(C,t=>{m(t)}),setTimeout(async()=>{if(!p){if(g)return;if(o){const t=await x({licenseKey:o,pluginName:i,baseApiUrl:c});t&&m(t)}else r("The `licenseKey` option not provided")}},2e3)}async function x(e){const{licenseKey:s,pluginName:i,baseApiUrl:o}=e;try{return(await E({baseApiUrl:o,path:`/sdk/${s||"na"}`,method:"POST",params:{d:window.location.hostname,pn:i}})).result||{}}catch(a){return console.error("Error during SDK license check:",a),!1}}const P="linkImageComponent",S=h.startup,W=function(e,s={}){const{Components:i,Blocks:o}=e,a="link-image",c="Link Image",p="link-image",{model:g,view:r}=e.Components.getType("image"),m=i.getType("link").model.getDefaults().traits,t=g.getDefaults().traits,l=m.filter(n=>n!=="title"),b=t.filter(n=>n.name!=="customAttributes").map(n=>typeof n=="string"?{name:n}:n).map(n=>({...n,getValue({component:u}){var d;return(d=u.components().at(0).getTrait(n.name))==null?void 0:d.getValue()},setValue({component:u,value:d,options:w}){var f;(f=u.components().at(0).getTrait(n.name))==null||f.setValue(d,w)}}));i.addType(a,{isComponent:n=>{var u;return n.tagName==="A"&&((u=n.children)==null?void 0:u.length)===1&&n.children[0].tagName==="IMG"},block:{label:c,media:'<svg viewBox="0 0 24 24"><path fill="currentColor" d="M2 6.3A2.3 2.3 0 0 1 4.3 4h15.4A2.3 2.3 0 0 1 22 6.3v7a4.7 4.7 0 0 0-2.8-.8h-3.4a4.8 4.8 0 0 0-4 7.5H4.3A2.3 2.3 0 0 1 2 17.7zm21 11a3.8 3.8 0 0 0-3.8-3.8.8.8 0 0 0 0 1.5h.2a2.3 2.3 0 0 1-.1 4.5H19a.8.8 0 0 0 .2 1.5h.2a3.8 3.8 0 0 0 3.5-3.8m-6.5-3a.8.8 0 0 0-.8-.7h-.1a3.8 3.8 0 0 0 .2 7.5.8.8 0 0 0 0-1.5h-.2a2.3 2.3 0 0 1 .2-4.5.8.8 0 0 0 .7-.7m3.5 3a.8.8 0 0 0-.8-.8h-3.6a.8.8 0 0 0 .2 1.5h3.6a.8.8 0 0 0 .6-.8"/></svg>'},extend:"link",extendFn:["init"],model:{defaults:{name:c,classes:p,resizable:{ratioDefault:!0},traits:[...b,...l],droppable:!1,stylable:["width","min-width","max-width","height","min-height","max-height","padding","margin","position","border-radius","border-width","border-style","border-color","opacity","box-shadow","filter","transform"],components:{type:"image"},styles:`
2
+ .${p} {
3
+ display: inline-block;
4
+ overflow: hidden;
5
+ }
6
+ .${p} > img {
7
+ object-fit: cover;
8
+ display: block;
9
+ width: 100%;
10
+ height: 100%;
11
+ }
12
+ `},init(){const n=this.components().at(0);n==null||n.set({layerable:!1,locked:!0})}},view:{onActive(n){r.prototype.onActive.call(this,n)}}}),$({editor:e,licenseKey:s.licenseKey,plan:S,pluginName:P,cleanup:()=>{i.removeType(a),o.remove(a)}})},_=U(W);module.exports=_;
@@ -0,0 +1,3 @@
1
+ import { LinkImageComponentOptions } from './types';
2
+ declare const _default: import('../utils').PluginWithInit<LinkImageComponentOptions>;
3
+ export default _default;
@@ -0,0 +1,3 @@
1
+ import { LinkImageComponentOptions } from './types';
2
+ declare const _default: import('../utils').PluginWithInit<LinkImageComponentOptions>;
3
+ export default _default;
@@ -0,0 +1,187 @@
1
+ const T = "app.grapesjs.com", v = "app-stage.grapesjs.com", y = [
2
+ T,
3
+ v,
4
+ "localhost",
5
+ "127.0.0.1",
6
+ ".local-credentialless.webcontainer.io",
7
+ // For stackblitz.com demos
8
+ ".local.webcontainer.io",
9
+ // For stackblitz.com demos
10
+ "-sandpack.codesandbox.io"
11
+ // For Sandpack demos
12
+ ], A = "license:check:start", C = "license:check:end", I = () => typeof window < "u", L = ({ isDev: e, isStage: s }) => `${e ? "" : `https://${s ? v : T}`}/api`, N = () => {
13
+ const e = I() && window.location.hostname;
14
+ return !!e && (y.includes(e) || y.some((s) => e.endsWith(s)));
15
+ };
16
+ async function E({
17
+ path: e,
18
+ baseApiUrl: s,
19
+ method: i = "GET",
20
+ headers: o = {},
21
+ params: a,
22
+ body: c
23
+ }) {
24
+ const g = `${s || L({ isDev: !1, isStage: !1 })}${e}`, r = {
25
+ method: i,
26
+ headers: {
27
+ "Content-Type": "application/json",
28
+ ...o
29
+ }
30
+ };
31
+ c && (r.body = JSON.stringify(c));
32
+ const m = a ? new URLSearchParams(a).toString() : "", t = m ? `?${m}` : "", l = await fetch(`${g}${t}`, r);
33
+ if (!l.ok)
34
+ throw new Error(`HTTP error! status: ${l.status}`);
35
+ return l.json();
36
+ }
37
+ var h = /* @__PURE__ */ ((e) => (e.free = "free", e.startup = "startup", e.business = "business", e.enterprise = "enterprise", e))(h || {});
38
+ const k = {
39
+ [h.free]: 0,
40
+ [h.startup]: 10,
41
+ [h.business]: 20,
42
+ [h.enterprise]: 30
43
+ };
44
+ function D(e) {
45
+ const s = e;
46
+ return s.init = (i) => (o) => e(o, i), s;
47
+ }
48
+ const U = (e) => /* @__PURE__ */ D(e);
49
+ async function $({
50
+ editor: e,
51
+ plan: s,
52
+ pluginName: i,
53
+ licenseKey: o,
54
+ cleanup: a
55
+ }) {
56
+ let c = "", p = !1;
57
+ const g = N(), r = (t) => {
58
+ console.warn("Cleanup plugin:", i, "Reason:", t), a();
59
+ }, m = (t = {}) => {
60
+ var d;
61
+ const { error: l, sdkLicense: b } = t, n = (d = t.plan) == null ? void 0 : d.category;
62
+ if (!(b || t.license) || l)
63
+ r(l || "Invalid license");
64
+ else if (n) {
65
+ const w = k[s], f = k[n];
66
+ w > f && r({ pluginRequiredPlan: s, licensePlan: n });
67
+ }
68
+ };
69
+ e.on(A, (t) => {
70
+ c = t == null ? void 0 : t.baseApiUrl, p = !0;
71
+ }), e.on(C, (t) => {
72
+ m(t);
73
+ }), setTimeout(async () => {
74
+ if (!p) {
75
+ if (g) return;
76
+ if (o) {
77
+ const t = await x({ licenseKey: o, pluginName: i, baseApiUrl: c });
78
+ t && m(t);
79
+ } else
80
+ r("The `licenseKey` option not provided");
81
+ }
82
+ }, 2e3);
83
+ }
84
+ async function x(e) {
85
+ const { licenseKey: s, pluginName: i, baseApiUrl: o } = e;
86
+ try {
87
+ return (await E({
88
+ baseApiUrl: o,
89
+ path: `/sdk/${s || "na"}`,
90
+ method: "POST",
91
+ params: {
92
+ d: window.location.hostname,
93
+ pn: i
94
+ }
95
+ })).result || {};
96
+ } catch (a) {
97
+ return console.error("Error during SDK license check:", a), !1;
98
+ }
99
+ }
100
+ const P = "linkImageComponent", S = h.startup, W = function(e, s = {}) {
101
+ const { Components: i, Blocks: o } = e, a = "link-image", c = "Link Image", p = "link-image", { model: g, view: r } = e.Components.getType("image"), m = i.getType("link").model.getDefaults().traits, t = g.getDefaults().traits, l = m.filter((n) => n !== "title"), b = t.filter((n) => n.name !== "customAttributes").map((n) => typeof n == "string" ? { name: n } : n).map(
102
+ (n) => ({
103
+ ...n,
104
+ getValue({ component: u }) {
105
+ var d;
106
+ return (d = u.components().at(0).getTrait(n.name)) == null ? void 0 : d.getValue();
107
+ },
108
+ setValue({ component: u, value: d, options: w }) {
109
+ var f;
110
+ (f = u.components().at(0).getTrait(n.name)) == null || f.setValue(d, w);
111
+ }
112
+ })
113
+ );
114
+ i.addType(a, {
115
+ isComponent: (n) => {
116
+ var u;
117
+ return n.tagName === "A" && ((u = n.children) == null ? void 0 : u.length) === 1 && n.children[0].tagName === "IMG";
118
+ },
119
+ block: {
120
+ label: c,
121
+ media: '<svg viewBox="0 0 24 24"><path fill="currentColor" d="M2 6.3A2.3 2.3 0 0 1 4.3 4h15.4A2.3 2.3 0 0 1 22 6.3v7a4.7 4.7 0 0 0-2.8-.8h-3.4a4.8 4.8 0 0 0-4 7.5H4.3A2.3 2.3 0 0 1 2 17.7zm21 11a3.8 3.8 0 0 0-3.8-3.8.8.8 0 0 0 0 1.5h.2a2.3 2.3 0 0 1-.1 4.5H19a.8.8 0 0 0 .2 1.5h.2a3.8 3.8 0 0 0 3.5-3.8m-6.5-3a.8.8 0 0 0-.8-.7h-.1a3.8 3.8 0 0 0 .2 7.5.8.8 0 0 0 0-1.5h-.2a2.3 2.3 0 0 1 .2-4.5.8.8 0 0 0 .7-.7m3.5 3a.8.8 0 0 0-.8-.8h-3.6a.8.8 0 0 0 .2 1.5h3.6a.8.8 0 0 0 .6-.8"/></svg>'
122
+ },
123
+ extend: "link",
124
+ extendFn: ["init"],
125
+ model: {
126
+ defaults: {
127
+ name: c,
128
+ classes: p,
129
+ resizable: { ratioDefault: !0 },
130
+ traits: [...b, ...l],
131
+ droppable: !1,
132
+ stylable: [
133
+ "width",
134
+ "min-width",
135
+ "max-width",
136
+ "height",
137
+ "min-height",
138
+ "max-height",
139
+ "padding",
140
+ "margin",
141
+ "position",
142
+ "border-radius",
143
+ "border-width",
144
+ "border-style",
145
+ "border-color",
146
+ "opacity",
147
+ "box-shadow",
148
+ "filter",
149
+ "transform"
150
+ ],
151
+ components: { type: "image" },
152
+ styles: `
153
+ .${p} {
154
+ display: inline-block;
155
+ overflow: hidden;
156
+ }
157
+ .${p} > img {
158
+ object-fit: cover;
159
+ display: block;
160
+ width: 100%;
161
+ height: 100%;
162
+ }
163
+ `
164
+ },
165
+ init() {
166
+ const n = this.components().at(0);
167
+ n == null || n.set({ layerable: !1, locked: !0 });
168
+ }
169
+ },
170
+ view: {
171
+ onActive(n) {
172
+ r.prototype.onActive.call(this, n);
173
+ }
174
+ }
175
+ }), $({
176
+ editor: e,
177
+ licenseKey: s.licenseKey,
178
+ plan: S,
179
+ pluginName: P,
180
+ cleanup: () => {
181
+ i.removeType(a), o.remove(a);
182
+ }
183
+ });
184
+ }, _ = U(W);
185
+ export {
186
+ _ as default
187
+ };
@@ -0,0 +1,12 @@
1
+ (function(h,f){typeof exports=="object"&&typeof module<"u"?module.exports=f():typeof define=="function"&&define.amd?define(f):(h=typeof globalThis<"u"?globalThis:h||self,h.StudioSdkPlugins_linkImageComponent=f())})(this,function(){"use strict";const h="app.grapesjs.com",f="app-stage.grapesjs.com",T=[h,f,"localhost","127.0.0.1",".local-credentialless.webcontainer.io",".local.webcontainer.io","-sandpack.codesandbox.io"],A="license:check:start",C="license:check:end",I=()=>typeof window<"u",L=({isDev:e,isStage:s})=>`${e?"":`https://${s?f:h}`}/api`,N=()=>{const e=I()&&window.location.hostname;return!!e&&(T.includes(e)||T.some(s=>e.endsWith(s)))};async function E({path:e,baseApiUrl:s,method:i="GET",headers:o={},params:a,body:c}){const b=`${s||L({isDev:!1,isStage:!1})}${e}`,l={method:i,headers:{"Content-Type":"application/json",...o}};c&&(l.body=JSON.stringify(c));const d=a?new URLSearchParams(a).toString():"",t=d?`?${d}`:"",r=await fetch(`${b}${t}`,l);if(!r.ok)throw new Error(`HTTP error! status: ${r.status}`);return r.json()}var g=(e=>(e.free="free",e.startup="startup",e.business="business",e.enterprise="enterprise",e))(g||{});const v={[g.free]:0,[g.startup]:10,[g.business]:20,[g.enterprise]:30};function x(e){const s=e;return s.init=i=>o=>e(o,i),s}const D=e=>x(e);async function U({editor:e,plan:s,pluginName:i,licenseKey:o,cleanup:a}){let c="",p=!1;const b=N(),l=t=>{console.warn("Cleanup plugin:",i,"Reason:",t),a()},d=(t={})=>{var m;const{error:r,sdkLicense:y}=t,n=(m=t.plan)==null?void 0:m.category;if(!(y||t.license)||r)l(r||"Invalid license");else if(n){const k=v[s],w=v[n];k>w&&l({pluginRequiredPlan:s,licensePlan:n})}};e.on(A,t=>{c=t==null?void 0:t.baseApiUrl,p=!0}),e.on(C,t=>{d(t)}),setTimeout(async()=>{if(!p){if(b)return;if(o){const t=await $({licenseKey:o,pluginName:i,baseApiUrl:c});t&&d(t)}else l("The `licenseKey` option not provided")}},2e3)}async function $(e){const{licenseKey:s,pluginName:i,baseApiUrl:o}=e;try{return(await E({baseApiUrl:o,path:`/sdk/${s||"na"}`,method:"POST",params:{d:window.location.hostname,pn:i}})).result||{}}catch(a){return console.error("Error during SDK license check:",a),!1}}const P="linkImageComponent",S=g.startup;return D(function(e,s={}){const{Components:i,Blocks:o}=e,a="link-image",c="Link Image",p="link-image",{model:b,view:l}=e.Components.getType("image"),d=i.getType("link").model.getDefaults().traits,t=b.getDefaults().traits,r=d.filter(n=>n!=="title"),y=t.filter(n=>n.name!=="customAttributes").map(n=>typeof n=="string"?{name:n}:n).map(n=>({...n,getValue({component:u}){var m;return(m=u.components().at(0).getTrait(n.name))==null?void 0:m.getValue()},setValue({component:u,value:m,options:k}){var w;(w=u.components().at(0).getTrait(n.name))==null||w.setValue(m,k)}}));i.addType(a,{isComponent:n=>{var u;return n.tagName==="A"&&((u=n.children)==null?void 0:u.length)===1&&n.children[0].tagName==="IMG"},block:{label:c,media:'<svg viewBox="0 0 24 24"><path fill="currentColor" d="M2 6.3A2.3 2.3 0 0 1 4.3 4h15.4A2.3 2.3 0 0 1 22 6.3v7a4.7 4.7 0 0 0-2.8-.8h-3.4a4.8 4.8 0 0 0-4 7.5H4.3A2.3 2.3 0 0 1 2 17.7zm21 11a3.8 3.8 0 0 0-3.8-3.8.8.8 0 0 0 0 1.5h.2a2.3 2.3 0 0 1-.1 4.5H19a.8.8 0 0 0 .2 1.5h.2a3.8 3.8 0 0 0 3.5-3.8m-6.5-3a.8.8 0 0 0-.8-.7h-.1a3.8 3.8 0 0 0 .2 7.5.8.8 0 0 0 0-1.5h-.2a2.3 2.3 0 0 1 .2-4.5.8.8 0 0 0 .7-.7m3.5 3a.8.8 0 0 0-.8-.8h-3.6a.8.8 0 0 0 .2 1.5h3.6a.8.8 0 0 0 .6-.8"/></svg>'},extend:"link",extendFn:["init"],model:{defaults:{name:c,classes:p,resizable:{ratioDefault:!0},traits:[...y,...r],droppable:!1,stylable:["width","min-width","max-width","height","min-height","max-height","padding","margin","position","border-radius","border-width","border-style","border-color","opacity","box-shadow","filter","transform"],components:{type:"image"},styles:`
2
+ .${p} {
3
+ display: inline-block;
4
+ overflow: hidden;
5
+ }
6
+ .${p} > img {
7
+ object-fit: cover;
8
+ display: block;
9
+ width: 100%;
10
+ height: 100%;
11
+ }
12
+ `},init(){const n=this.components().at(0);n==null||n.set({layerable:!1,locked:!0})}},view:{onActive(n){l.prototype.onActive.call(this,n)}}}),U({editor:e,licenseKey:s.licenseKey,plan:S,pluginName:P,cleanup:()=>{i.removeType(a),o.remove(a)}})})});
@@ -0,0 +1,3 @@
1
+ import { SdkPlanCategories } from '../utils';
2
+ export declare const PLUGIN_NAME = "linkImageComponent";
3
+ export declare const PLUGIN_PLAN = SdkPlanCategories.startup;
@@ -0,0 +1,5 @@
1
+ import { BlockProperties } from '../types';
2
+ import { LinkImageComponentOptions as LinkImageComponentOptionsSchema } from './typesSchema';
3
+ export interface LinkImageComponentOptions extends Omit<LinkImageComponentOptionsSchema, 'block' | 'blockGroup'> {
4
+ block?: Partial<BlockProperties> | false;
5
+ }
@@ -0,0 +1,9 @@
1
+ import { SDKPluginOptions } from '../utils';
2
+ export interface LinkImageComponentOptions extends SDKPluginOptions {
3
+ /**
4
+ * Additional Block properties of the link image component. Pass `false` to avoid adding the block.
5
+ * @example
6
+ * { category: 'Extra', label: 'My label' }
7
+ */
8
+ block?: 'Block';
9
+ }
@@ -1 +1 @@
1
- "use strict";var g=(e=>(e.free="free",e.startup="startup",e.business="business",e.enterprise="enterprise",e))(g||{}),h=(e=>(e.toastAdd="studio:toastAdd",e.dialogOpen="studio:dialogOpen",e.dialogClose="studio:dialogClose",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.projectFiles="studio:projectFiles",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.getStateTheme="studio:getStateTheme",e.setStateTheme="studio:setStateTheme",e.assetProviderGet="studio:assetProviderGet",e.assetProviderAdd="studio:assetProviderAdd",e.assetProviderRemove="studio:assetProviderRemove",e.fontGet="studio:fontGet",e.fontAdd="studio:fontAdd",e.fontRemove="studio:fontRemove",e.fontManagerOpen="studio:fontManagerOpen",e.menuFontLoad="studio:menuFontLoad",e.toggleStateDataSource="studio:toggleStateDataSource",e.getStateDataSource="studio:getStateDataSource",e.dataSourceSetGlobalData="studio:dataSourceSetGlobalData",e.dataSourceSetImporter="studio:dataSourceSetImporter",e.dataSourceSetExporter="studio:dataSourceSetExporter",e.setDragAbsolute="studio:setDragAbsolute",e))(h||{});const P="app.grapesjs.com",A="app-stage.grapesjs.com",f=[P,A,"localhost","127.0.0.1",".local-credentialless.webcontainer.io",".local.webcontainer.io","-sandpack.codesandbox.io"],R="license:check:start",I="license:check:end",U=()=>typeof window<"u",x=({isDev:e,isStage:o})=>`${e?"":`https://${o?A:P}`}/api`,G=()=>{const e=U()&&window.location.hostname;return!!e&&(f.includes(e)||f.some(o=>e.endsWith(o)))};async function D({path:e,baseApiUrl:o,method:a="GET",headers:n={},params:c,body:u}){const t=`${o||x({isDev:!1,isStage:!1})}${e}`,i={method:a,headers:{"Content-Type":"application/json",...n}};u&&(i.body=JSON.stringify(u));const l=c?new URLSearchParams(c).toString():"",s=l?`?${l}`:"",r=await fetch(`${t}${s}`,i);if(!r.ok)throw new Error(`HTTP error! status: ${r.status}`);return r.json()}const v={[g.free]:0,[g.startup]:10,[g.business]:20,[g.enterprise]:30};function O(e){const o=e;return o.init=a=>n=>e(n,a),o}const $=e=>O(e);async function E({editor:e,plan:o,pluginName:a,licenseKey:n,cleanup:c}){let u="",d=!1;const t=G(),i=s=>{console.warn("Cleanup plugin:",a,"Reason:",s),c()},l=(s={})=>{var b;const{error:r,sdkLicense:y}=s,p=(b=s.plan)==null?void 0:b.category;if(!(y||s.license)||r)i(r||"Invalid license");else if(p){const L=v[o],k=v[p];L>k&&i({pluginRequiredPlan:o,licensePlan:p})}};e.on(R,s=>{u=s==null?void 0:s.baseApiUrl,d=!0}),e.on(I,s=>{l(s)}),setTimeout(async()=>{if(!d){if(t)return;if(n){const s=await M({licenseKey:n,pluginName:a,baseApiUrl:u});s&&l(s)}else i("The `licenseKey` option not provided")}},2e3)}async function M(e){const{licenseKey:o,pluginName:a,baseApiUrl:n}=e;try{return(await D({baseApiUrl:n,path:`/sdk/${o||"na"}`,method:"POST",params:{d:window.location.hostname,pn:a}})).result||{}}catch(c){return console.error("Error during SDK license check:",c),!1}}const B=e=>{const o={};for(const a of Object.keys(e)){let n=e[a];n&&(Array.isArray(n)?n=n.map(c=>c.toString()).join(","):n=n.toString(),o[a]=n)}return new URLSearchParams(o)},T="youtube-video",j=e=>{const{apiKey:o,searchParams:a,thumbnailQuality:n="high"}=e,c=(t={})=>{const l="https://www.googleapis.com/youtube/v3/search",s=B(t);return`${l}?${s}`},u=t=>{var i,l,s;return((i=t[n])==null?void 0:i.url)||((l=t.high)==null?void 0:l.url)||((s=t.medium)==null?void 0:s.url)||t.default.url},d=t=>{const i=u(t.snippet.thumbnails);return{id:t.id.videoId,src:`https://www.youtube.com/watch?v=${t.id.videoId}`,name:t.snippet.title,type:T,customData:{thumbnailUrl:i,videoItem:t}}};return{id:"youtube",types:[T],label:({editor:t})=>t.I18n.t("youtubeAssetProvider.providerLabel"),search:{reloadOnInput:!0,debounceMs:1e3},async onLoad({searchValue:t,pageCustomData:i}){var b;const l={maxResults:25,q:t,pageToken:i==null?void 0:i.token,type:["video"],key:o},s=a==null?void 0:a({searchValue:t}),r={...l,...s};r.part?r.part.includes("snippet")||r.part.push("snippet"):r.part=["snippet"];const p=await(await fetch(c(r))).json();return(b=p.items)!=null&&b.length?{items:p.items.map(d),nextPageCustomData:{token:p.nextPageToken},isLastPage:!p.nextPageToken}:{items:[],isLastPage:!0}},itemLayout:({assetProps:t,onSelect:i})=>({type:"column",onClick:()=>i(t),htmlAttrs:{title:t.name},style:{borderWidth:"1px",borderRadius:8,overflow:"hidden",cursor:"pointer"},children:[{type:"custom",render:()=>{var l;return`<img src="${(l=t.customData)==null?void 0:l.thumbnailUrl}" alt="${t.name}" style="width: 100%; height: 100px; object-fit: cover">`}},{type:"text",content:t.name,style:{overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap",paddingLeft:8,paddingRight:8}}]})}},N={youtubeAssetProvider:{searchBtn:"Search on YouTube",modalTitle:"Select YouTube Video",providerLabel:"YouTube Videos"}},W="youtubeAssetProvider",Y=g.startup,_=function(e,o){var l;const{skipVideoComponent:a,i18n:n={}}=o,c=j(o);e.runCommand(h.assetProviderAdd,{provider:c});const u="search-on-youtube",d="video",t=(l=e.Components.getType(d))==null?void 0:l.model.prototype,i=s=>{e.Assets.open({modalTitle:e.I18n.t("youtubeAssetProvider.modalTitle"),providerId:c.id,providers:[],types:[],select:r=>{e.Assets.close(),s.set({videoId:r.attributes.id})},content:{header:{addUrl:!1,upload:!1}}})};!a&&t&&e.Components.addType(d,{model:{getYoutubeTraits(){const[s,...r]=t.getYoutubeTraits.apply(this);return[s,{id:u,type:"button",label:e.I18n.t("youtubeAssetProvider.searchBtn"),command:()=>i(this)},...r]}},view:{events:()=>({dblclick:"onActive"}),onActive(){const{model:s}=this,r=s.get("provider")||"";r!=null&&r.startsWith("yt")&&i(s)}}}),e.I18n.addMessages({en:N,...n}),E({editor:e,licenseKey:o.licenseKey,plan:Y,pluginName:W,cleanup:()=>{e.runCommand(h.assetProviderRemove,{id:c.id}),!a&&t&&e.Components.addType(d,{model:{getYoutubeTraits(){return t.getYoutubeTraits.apply(this).filter(s=>s.id!==u)}}})}})},K=$(_);module.exports=K;
1
+ "use strict";var g=(e=>(e.free="free",e.startup="startup",e.business="business",e.enterprise="enterprise",e))(g||{}),h=(e=>(e.toastAdd="studio:toastAdd",e.dialogOpen="studio:dialogOpen",e.dialogClose="studio:dialogClose",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.projectFiles="studio:projectFiles",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.getStateTheme="studio:getStateTheme",e.setStateTheme="studio:setStateTheme",e.assetProviderGet="studio:assetProviderGet",e.assetProviderAdd="studio:assetProviderAdd",e.assetProviderRemove="studio:assetProviderRemove",e.fontGet="studio:fontGet",e.fontAdd="studio:fontAdd",e.fontRemove="studio:fontRemove",e.fontManagerOpen="studio:fontManagerOpen",e.menuFontLoad="studio:menuFontLoad",e.toggleStateDataSource="studio:toggleStateDataSource",e.getStateDataSource="studio:getStateDataSource",e.dataSourceSetGlobalData="studio:dataSourceSetGlobalData",e.dataSourceSetImporter="studio:dataSourceSetImporter",e.dataSourceSetExporter="studio:dataSourceSetExporter",e.setDragAbsolute="studio:setDragAbsolute",e))(h||{});const P="app.grapesjs.com",A="app-stage.grapesjs.com",f=[P,A,"localhost","127.0.0.1",".local-credentialless.webcontainer.io",".local.webcontainer.io","-sandpack.codesandbox.io"],I="license:check:start",R="license:check:end",U=()=>typeof window<"u",x=({isDev:e,isStage:o})=>`${e?"":`https://${o?A:P}`}/api`,G=()=>{const e=U()&&window.location.hostname;return!!e&&(f.includes(e)||f.some(o=>e.endsWith(o)))};async function D({path:e,baseApiUrl:o,method:a="GET",headers:n={},params:c,body:u}){const t=`${o||x({isDev:!1,isStage:!1})}${e}`,i={method:a,headers:{"Content-Type":"application/json",...n}};u&&(i.body=JSON.stringify(u));const l=c?new URLSearchParams(c).toString():"",s=l?`?${l}`:"",r=await fetch(`${t}${s}`,i);if(!r.ok)throw new Error(`HTTP error! status: ${r.status}`);return r.json()}const v={[g.free]:0,[g.startup]:10,[g.business]:20,[g.enterprise]:30};function O(e){const o=e;return o.init=a=>n=>e(n,a),o}const $=e=>O(e);async function E({editor:e,plan:o,pluginName:a,licenseKey:n,cleanup:c}){let u="",d=!1;const t=G(),i=s=>{console.warn("Cleanup plugin:",a,"Reason:",s),c()},l=(s={})=>{var b;const{error:r,sdkLicense:y}=s,p=(b=s.plan)==null?void 0:b.category;if(!(y||s.license)||r)i(r||"Invalid license");else if(p){const L=v[o],k=v[p];L>k&&i({pluginRequiredPlan:o,licensePlan:p})}};e.on(I,s=>{u=s==null?void 0:s.baseApiUrl,d=!0}),e.on(R,s=>{l(s)}),setTimeout(async()=>{if(!d){if(t)return;if(n){const s=await M({licenseKey:n,pluginName:a,baseApiUrl:u});s&&l(s)}else i("The `licenseKey` option not provided")}},2e3)}async function M(e){const{licenseKey:o,pluginName:a,baseApiUrl:n}=e;try{return(await D({baseApiUrl:n,path:`/sdk/${o||"na"}`,method:"POST",params:{d:window.location.hostname,pn:a}})).result||{}}catch(c){return console.error("Error during SDK license check:",c),!1}}const B=e=>{const o={};for(const a of Object.keys(e)){let n=e[a];n&&(Array.isArray(n)?n=n.map(c=>c.toString()).join(","):n=n.toString(),o[a]=n)}return new URLSearchParams(o)},T="youtube-video",j=e=>{const{apiKey:o,searchParams:a,thumbnailQuality:n="high"}=e,c=(t={})=>{const l="https://www.googleapis.com/youtube/v3/search",s=B(t);return`${l}?${s}`},u=t=>{var i,l,s;return((i=t[n])==null?void 0:i.url)||((l=t.high)==null?void 0:l.url)||((s=t.medium)==null?void 0:s.url)||t.default.url},d=t=>{const i=u(t.snippet.thumbnails);return{id:t.id.videoId,src:`https://www.youtube.com/watch?v=${t.id.videoId}`,name:t.snippet.title,type:T,customData:{thumbnailUrl:i,videoItem:t}}};return{id:"youtube",types:[T],label:({editor:t})=>t.I18n.t("youtubeAssetProvider.providerLabel"),search:{reloadOnInput:!0,debounceMs:1e3},async onLoad({searchValue:t,pageCustomData:i}){var b;const l={maxResults:25,q:t,pageToken:i==null?void 0:i.token,type:["video"],key:o},s=a==null?void 0:a({searchValue:t}),r={...l,...s};r.part?r.part.includes("snippet")||r.part.push("snippet"):r.part=["snippet"];const p=await(await fetch(c(r))).json();return(b=p.items)!=null&&b.length?{items:p.items.map(d),nextPageCustomData:{token:p.nextPageToken},isLastPage:!p.nextPageToken}:{items:[],isLastPage:!0}},itemLayout:({assetProps:t,onSelect:i})=>({type:"column",onClick:()=>i(t),htmlAttrs:{title:t.name},style:{borderWidth:"1px",borderRadius:8,overflow:"hidden",cursor:"pointer"},children:[{type:"custom",render:()=>{var l;return`<img src="${(l=t.customData)==null?void 0:l.thumbnailUrl}" alt="${t.name}" style="width: 100%; height: 100px; object-fit: cover">`}},{type:"text",content:t.name,style:{overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap",paddingLeft:8,paddingRight:8}}]})}},N={youtubeAssetProvider:{searchBtn:"Search on YouTube",modalTitle:"Select YouTube Video",providerLabel:"YouTube Videos"}},W="youtubeAssetProvider",Y=g.startup,_=function(e,o){var l;const{skipVideoComponent:a,i18n:n={}}=o,c=j(o);e.runCommand(h.assetProviderAdd,{provider:c});const u="search-on-youtube",d="video",t=(l=e.Components.getType(d))==null?void 0:l.model.prototype,i=s=>{e.Assets.open({modalTitle:e.I18n.t("youtubeAssetProvider.modalTitle"),providerId:c.id,typeId:c.types[0],providers:[],types:[],select:r=>{e.Assets.close(),s.set({videoId:r.attributes.id})},content:{header:{addUrl:!1,upload:!1}}})};!a&&t&&e.Components.addType(d,{model:{getYoutubeTraits(){const[s,...r]=t.getYoutubeTraits.apply(this);return[s,{id:u,type:"button",label:e.I18n.t("youtubeAssetProvider.searchBtn"),command:()=>i(this)},...r]}},view:{events:()=>({dblclick:"onActive"}),onActive(){const{model:s}=this,r=s.get("provider")||"";r!=null&&r.startsWith("yt")&&i(s)}}}),e.I18n.addMessages({en:N,...n}),E({editor:e,licenseKey:o.licenseKey,plan:Y,pluginName:W,cleanup:()=>{e.runCommand(h.assetProviderRemove,{id:c.id}),!a&&t&&e.Components.addType(d,{model:{getYoutubeTraits(){return t.getYoutubeTraits.apply(this).filter(s=>s.id!==u)}}})}})},K=$(_);module.exports=K;
@@ -10,7 +10,7 @@ const P = "app.grapesjs.com", A = "app-stage.grapesjs.com", f = [
10
10
  // For stackblitz.com demos
11
11
  "-sandpack.codesandbox.io"
12
12
  // For Sandpack demos
13
- ], R = "license:check:start", I = "license:check:end", U = () => typeof window < "u", x = ({ isDev: e, isStage: o }) => `${e ? "" : `https://${o ? A : P}`}/api`, G = () => {
13
+ ], I = "license:check:start", R = "license:check:end", U = () => typeof window < "u", x = ({ isDev: e, isStage: o }) => `${e ? "" : `https://${o ? A : P}`}/api`, G = () => {
14
14
  const e = U() && window.location.hostname;
15
15
  return !!e && (f.includes(e) || f.some((o) => e.endsWith(o)));
16
16
  };
@@ -66,9 +66,9 @@ async function E({
66
66
  L > k && i({ pluginRequiredPlan: o, licensePlan: p });
67
67
  }
68
68
  };
69
- e.on(R, (s) => {
69
+ e.on(I, (s) => {
70
70
  u = s == null ? void 0 : s.baseApiUrl, d = !0;
71
- }), e.on(I, (s) => {
71
+ }), e.on(R, (s) => {
72
72
  l(s);
73
73
  }), setTimeout(async () => {
74
74
  if (!d) {
@@ -192,9 +192,9 @@ const B = (e) => {
192
192
  e.runCommand(h.assetProviderAdd, { provider: c });
193
193
  const u = "search-on-youtube", d = "video", t = (l = e.Components.getType(d)) == null ? void 0 : l.model.prototype, i = (s) => {
194
194
  e.Assets.open({
195
- // @ts-expect-error not typed
196
195
  modalTitle: e.I18n.t("youtubeAssetProvider.modalTitle"),
197
196
  providerId: c.id,
197
+ typeId: c.types[0],
198
198
  providers: [],
199
199
  types: [],
200
200
  select: (r) => {
@@ -1 +1 @@
1
- (function(u,b){typeof exports=="object"&&typeof module<"u"?module.exports=b():typeof define=="function"&&define.amd?define(b):(u=typeof globalThis<"u"?globalThis:u||self,u.StudioSdkPlugins_youtubeAssetProvider=b())})(this,function(){"use strict";var u=(e=>(e.free="free",e.startup="startup",e.business="business",e.enterprise="enterprise",e))(u||{}),b=(e=>(e.toastAdd="studio:toastAdd",e.dialogOpen="studio:dialogOpen",e.dialogClose="studio:dialogClose",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.projectFiles="studio:projectFiles",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.getStateTheme="studio:getStateTheme",e.setStateTheme="studio:setStateTheme",e.assetProviderGet="studio:assetProviderGet",e.assetProviderAdd="studio:assetProviderAdd",e.assetProviderRemove="studio:assetProviderRemove",e.fontGet="studio:fontGet",e.fontAdd="studio:fontAdd",e.fontRemove="studio:fontRemove",e.fontManagerOpen="studio:fontManagerOpen",e.menuFontLoad="studio:menuFontLoad",e.toggleStateDataSource="studio:toggleStateDataSource",e.getStateDataSource="studio:getStateDataSource",e.dataSourceSetGlobalData="studio:dataSourceSetGlobalData",e.dataSourceSetImporter="studio:dataSourceSetImporter",e.dataSourceSetExporter="studio:dataSourceSetExporter",e.setDragAbsolute="studio:setDragAbsolute",e))(b||{});const f="app.grapesjs.com",y="app-stage.grapesjs.com",v=[f,y,"localhost","127.0.0.1",".local-credentialless.webcontainer.io",".local.webcontainer.io","-sandpack.codesandbox.io"],w="license:check:start",L="license:check:end",k=()=>typeof window<"u",R=({isDev:e,isStage:o})=>`${e?"":`https://${o?y:f}`}/api`,I=()=>{const e=k()&&window.location.hostname;return!!e&&(v.includes(e)||v.some(o=>e.endsWith(o)))};async function x({path:e,baseApiUrl:o,method:a="GET",headers:n={},params:c,body:d}){const t=`${o||R({isDev:!1,isStage:!1})}${e}`,i={method:a,headers:{"Content-Type":"application/json",...n}};d&&(i.body=JSON.stringify(d));const l=c?new URLSearchParams(c).toString():"",s=l?`?${l}`:"",r=await fetch(`${t}${s}`,i);if(!r.ok)throw new Error(`HTTP error! status: ${r.status}`);return r.json()}const T={[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 G=e=>U(e);async function D({editor:e,plan:o,pluginName:a,licenseKey:n,cleanup:c}){let d="",p=!1;const t=I(),i=s=>{console.warn("Cleanup plugin:",a,"Reason:",s),c()},l=(s={})=>{var h;const{error:r,sdkLicense:A}=s,g=(h=s.plan)==null?void 0:h.category;if(!(A||s.license)||r)i(r||"Invalid license");else if(g){const W=T[o],Y=T[g];W>Y&&i({pluginRequiredPlan:o,licensePlan:g})}};e.on(w,s=>{d=s==null?void 0:s.baseApiUrl,p=!0}),e.on(L,s=>{l(s)}),setTimeout(async()=>{if(!p){if(t)return;if(n){const s=await O({licenseKey:n,pluginName:a,baseApiUrl:d});s&&l(s)}else i("The `licenseKey` option not provided")}},2e3)}async function O(e){const{licenseKey:o,pluginName:a,baseApiUrl:n}=e;try{return(await x({baseApiUrl:n,path:`/sdk/${o||"na"}`,method:"POST",params:{d:window.location.hostname,pn:a}})).result||{}}catch(c){return console.error("Error during SDK license check:",c),!1}}const $=e=>{const o={};for(const a of Object.keys(e)){let n=e[a];n&&(Array.isArray(n)?n=n.map(c=>c.toString()).join(","):n=n.toString(),o[a]=n)}return new URLSearchParams(o)},P="youtube-video",E=e=>{const{apiKey:o,searchParams:a,thumbnailQuality:n="high"}=e,c=(t={})=>{const l="https://www.googleapis.com/youtube/v3/search",s=$(t);return`${l}?${s}`},d=t=>{var i,l,s;return((i=t[n])==null?void 0:i.url)||((l=t.high)==null?void 0:l.url)||((s=t.medium)==null?void 0:s.url)||t.default.url},p=t=>{const i=d(t.snippet.thumbnails);return{id:t.id.videoId,src:`https://www.youtube.com/watch?v=${t.id.videoId}`,name:t.snippet.title,type:P,customData:{thumbnailUrl:i,videoItem:t}}};return{id:"youtube",types:[P],label:({editor:t})=>t.I18n.t("youtubeAssetProvider.providerLabel"),search:{reloadOnInput:!0,debounceMs:1e3},async onLoad({searchValue:t,pageCustomData:i}){var h;const l={maxResults:25,q:t,pageToken:i==null?void 0:i.token,type:["video"],key:o},s=a==null?void 0:a({searchValue:t}),r={...l,...s};r.part?r.part.includes("snippet")||r.part.push("snippet"):r.part=["snippet"];const g=await(await fetch(c(r))).json();return(h=g.items)!=null&&h.length?{items:g.items.map(p),nextPageCustomData:{token:g.nextPageToken},isLastPage:!g.nextPageToken}:{items:[],isLastPage:!0}},itemLayout:({assetProps:t,onSelect:i})=>({type:"column",onClick:()=>i(t),htmlAttrs:{title:t.name},style:{borderWidth:"1px",borderRadius:8,overflow:"hidden",cursor:"pointer"},children:[{type:"custom",render:()=>{var l;return`<img src="${(l=t.customData)==null?void 0:l.thumbnailUrl}" alt="${t.name}" style="width: 100%; height: 100px; object-fit: cover">`}},{type:"text",content:t.name,style:{overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap",paddingLeft:8,paddingRight:8}}]})}},M={youtubeAssetProvider:{searchBtn:"Search on YouTube",modalTitle:"Select YouTube Video",providerLabel:"YouTube Videos"}},B="youtubeAssetProvider",j=u.startup;return G(function(e,o){var l;const{skipVideoComponent:a,i18n:n={}}=o,c=E(o);e.runCommand(b.assetProviderAdd,{provider:c});const d="search-on-youtube",p="video",t=(l=e.Components.getType(p))==null?void 0:l.model.prototype,i=s=>{e.Assets.open({modalTitle:e.I18n.t("youtubeAssetProvider.modalTitle"),providerId:c.id,providers:[],types:[],select:r=>{e.Assets.close(),s.set({videoId:r.attributes.id})},content:{header:{addUrl:!1,upload:!1}}})};!a&&t&&e.Components.addType(p,{model:{getYoutubeTraits(){const[s,...r]=t.getYoutubeTraits.apply(this);return[s,{id:d,type:"button",label:e.I18n.t("youtubeAssetProvider.searchBtn"),command:()=>i(this)},...r]}},view:{events:()=>({dblclick:"onActive"}),onActive(){const{model:s}=this,r=s.get("provider")||"";r!=null&&r.startsWith("yt")&&i(s)}}}),e.I18n.addMessages({en:M,...n}),D({editor:e,licenseKey:o.licenseKey,plan:j,pluginName:B,cleanup:()=>{e.runCommand(b.assetProviderRemove,{id:c.id}),!a&&t&&e.Components.addType(p,{model:{getYoutubeTraits(){return t.getYoutubeTraits.apply(this).filter(s=>s.id!==d)}}})}})})});
1
+ (function(u,b){typeof exports=="object"&&typeof module<"u"?module.exports=b():typeof define=="function"&&define.amd?define(b):(u=typeof globalThis<"u"?globalThis:u||self,u.StudioSdkPlugins_youtubeAssetProvider=b())})(this,function(){"use strict";var u=(e=>(e.free="free",e.startup="startup",e.business="business",e.enterprise="enterprise",e))(u||{}),b=(e=>(e.toastAdd="studio:toastAdd",e.dialogOpen="studio:dialogOpen",e.dialogClose="studio:dialogClose",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.projectFiles="studio:projectFiles",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.getStateTheme="studio:getStateTheme",e.setStateTheme="studio:setStateTheme",e.assetProviderGet="studio:assetProviderGet",e.assetProviderAdd="studio:assetProviderAdd",e.assetProviderRemove="studio:assetProviderRemove",e.fontGet="studio:fontGet",e.fontAdd="studio:fontAdd",e.fontRemove="studio:fontRemove",e.fontManagerOpen="studio:fontManagerOpen",e.menuFontLoad="studio:menuFontLoad",e.toggleStateDataSource="studio:toggleStateDataSource",e.getStateDataSource="studio:getStateDataSource",e.dataSourceSetGlobalData="studio:dataSourceSetGlobalData",e.dataSourceSetImporter="studio:dataSourceSetImporter",e.dataSourceSetExporter="studio:dataSourceSetExporter",e.setDragAbsolute="studio:setDragAbsolute",e))(b||{});const y="app.grapesjs.com",f="app-stage.grapesjs.com",v=[y,f,"localhost","127.0.0.1",".local-credentialless.webcontainer.io",".local.webcontainer.io","-sandpack.codesandbox.io"],w="license:check:start",L="license:check:end",k=()=>typeof window<"u",I=({isDev:e,isStage:o})=>`${e?"":`https://${o?f:y}`}/api`,R=()=>{const e=k()&&window.location.hostname;return!!e&&(v.includes(e)||v.some(o=>e.endsWith(o)))};async function x({path:e,baseApiUrl:o,method:a="GET",headers:n={},params:c,body:d}){const t=`${o||I({isDev:!1,isStage:!1})}${e}`,i={method:a,headers:{"Content-Type":"application/json",...n}};d&&(i.body=JSON.stringify(d));const l=c?new URLSearchParams(c).toString():"",s=l?`?${l}`:"",r=await fetch(`${t}${s}`,i);if(!r.ok)throw new Error(`HTTP error! status: ${r.status}`);return r.json()}const T={[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 G=e=>U(e);async function D({editor:e,plan:o,pluginName:a,licenseKey:n,cleanup:c}){let d="",p=!1;const t=R(),i=s=>{console.warn("Cleanup plugin:",a,"Reason:",s),c()},l=(s={})=>{var h;const{error:r,sdkLicense:A}=s,g=(h=s.plan)==null?void 0:h.category;if(!(A||s.license)||r)i(r||"Invalid license");else if(g){const W=T[o],Y=T[g];W>Y&&i({pluginRequiredPlan:o,licensePlan:g})}};e.on(w,s=>{d=s==null?void 0:s.baseApiUrl,p=!0}),e.on(L,s=>{l(s)}),setTimeout(async()=>{if(!p){if(t)return;if(n){const s=await O({licenseKey:n,pluginName:a,baseApiUrl:d});s&&l(s)}else i("The `licenseKey` option not provided")}},2e3)}async function O(e){const{licenseKey:o,pluginName:a,baseApiUrl:n}=e;try{return(await x({baseApiUrl:n,path:`/sdk/${o||"na"}`,method:"POST",params:{d:window.location.hostname,pn:a}})).result||{}}catch(c){return console.error("Error during SDK license check:",c),!1}}const $=e=>{const o={};for(const a of Object.keys(e)){let n=e[a];n&&(Array.isArray(n)?n=n.map(c=>c.toString()).join(","):n=n.toString(),o[a]=n)}return new URLSearchParams(o)},P="youtube-video",E=e=>{const{apiKey:o,searchParams:a,thumbnailQuality:n="high"}=e,c=(t={})=>{const l="https://www.googleapis.com/youtube/v3/search",s=$(t);return`${l}?${s}`},d=t=>{var i,l,s;return((i=t[n])==null?void 0:i.url)||((l=t.high)==null?void 0:l.url)||((s=t.medium)==null?void 0:s.url)||t.default.url},p=t=>{const i=d(t.snippet.thumbnails);return{id:t.id.videoId,src:`https://www.youtube.com/watch?v=${t.id.videoId}`,name:t.snippet.title,type:P,customData:{thumbnailUrl:i,videoItem:t}}};return{id:"youtube",types:[P],label:({editor:t})=>t.I18n.t("youtubeAssetProvider.providerLabel"),search:{reloadOnInput:!0,debounceMs:1e3},async onLoad({searchValue:t,pageCustomData:i}){var h;const l={maxResults:25,q:t,pageToken:i==null?void 0:i.token,type:["video"],key:o},s=a==null?void 0:a({searchValue:t}),r={...l,...s};r.part?r.part.includes("snippet")||r.part.push("snippet"):r.part=["snippet"];const g=await(await fetch(c(r))).json();return(h=g.items)!=null&&h.length?{items:g.items.map(p),nextPageCustomData:{token:g.nextPageToken},isLastPage:!g.nextPageToken}:{items:[],isLastPage:!0}},itemLayout:({assetProps:t,onSelect:i})=>({type:"column",onClick:()=>i(t),htmlAttrs:{title:t.name},style:{borderWidth:"1px",borderRadius:8,overflow:"hidden",cursor:"pointer"},children:[{type:"custom",render:()=>{var l;return`<img src="${(l=t.customData)==null?void 0:l.thumbnailUrl}" alt="${t.name}" style="width: 100%; height: 100px; object-fit: cover">`}},{type:"text",content:t.name,style:{overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap",paddingLeft:8,paddingRight:8}}]})}},M={youtubeAssetProvider:{searchBtn:"Search on YouTube",modalTitle:"Select YouTube Video",providerLabel:"YouTube Videos"}},B="youtubeAssetProvider",j=u.startup;return G(function(e,o){var l;const{skipVideoComponent:a,i18n:n={}}=o,c=E(o);e.runCommand(b.assetProviderAdd,{provider:c});const d="search-on-youtube",p="video",t=(l=e.Components.getType(p))==null?void 0:l.model.prototype,i=s=>{e.Assets.open({modalTitle:e.I18n.t("youtubeAssetProvider.modalTitle"),providerId:c.id,typeId:c.types[0],providers:[],types:[],select:r=>{e.Assets.close(),s.set({videoId:r.attributes.id})},content:{header:{addUrl:!1,upload:!1}}})};!a&&t&&e.Components.addType(p,{model:{getYoutubeTraits(){const[s,...r]=t.getYoutubeTraits.apply(this);return[s,{id:d,type:"button",label:e.I18n.t("youtubeAssetProvider.searchBtn"),command:()=>i(this)},...r]}},view:{events:()=>({dblclick:"onActive"}),onActive(){const{model:s}=this,r=s.get("provider")||"";r!=null&&r.startsWith("yt")&&i(s)}}}),e.I18n.addMessages({en:M,...n}),D({editor:e,licenseKey:o.licenseKey,plan:j,pluginName:B,cleanup:()=>{e.runCommand(b.assetProviderRemove,{id:c.id}),!a&&t&&e.Components.addType(p,{model:{getYoutubeTraits(){return t.getYoutubeTraits.apply(this).filter(s=>s.id!==d)}}})}})})});
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@grapesjs/studio-sdk-plugins",
3
- "version": "1.0.24",
3
+ "version": "1.0.25",
4
4
  "publishConfig": {
5
5
  "registry": "https://registry.npmjs.org"
6
6
  },