@grapesjs/studio-sdk-plugins 1.0.17 → 1.0.18
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/LICENSE.md +1 -0
- package/dist/flexComponent/index.cjs.js +1 -1
- package/dist/flexComponent/index.es.js +1 -1
- package/dist/flexComponent/index.umd.js +1 -1
- package/dist/index.cjs.js +142 -39
- package/dist/index.es.js +4224 -4117
- package/dist/index.umd.js +145 -42
- package/dist/rteTinyMce/index.cjs.js +104 -1
- package/dist/rteTinyMce/index.es.js +262 -155
- package/dist/rteTinyMce/index.umd.js +104 -1
- package/dist/rteTinyMce/styles.d.ts +1 -0
- package/dist/rteTinyMce/typesSchema.d.ts +5 -0
- package/dist/utils.d.ts +5 -0
- package/package.json +2 -2
|
@@ -1 +1,104 @@
|
|
|
1
|
-
(function(
|
|
1
|
+
(function(f,p){typeof exports=="object"&&typeof module<"u"?module.exports=p():typeof define=="function"&&define.amd?define(p):(f=typeof globalThis<"u"?globalThis:f||self,f.StudioSdkPlugins_rteTinyMce=p())})(this,function(){"use strict";var f=(t=>(t.free="free",t.startup="startup",t.business="business",t.enterprise="enterprise",t))(f||{}),p=(t=>(t.toastAdd="studio:toastAdd",t.dialogOpen="studio:dialogOpen",t.dialogClose="studio:dialogClose",t.sidebarLeftSet="studio:sidebarLeft:set",t.sidebarLeftGet="studio:sidebarLeft:get",t.sidebarLeftToggle="studio:sidebarLeft:toggle",t.sidebarRightSet="studio:sidebarRight:set",t.sidebarRightGet="studio:sidebarRight:get",t.sidebarRightToggle="studio:sidebarRight:toggle",t.sidebarTopSet="studio:sidebarTop:set",t.sidebarTopGet="studio:sidebarTop:get",t.sidebarTopToggle="studio:sidebarTop:toggle",t.sidebarBottomSet="studio:sidebarBottom:set",t.sidebarBottomGet="studio:sidebarBottom:get",t.sidebarBottomToggle="studio:sidebarBottom:toggle",t.symbolAdd="studio:symbolAdd",t.symbolDetach="studio:symbolDetach",t.symbolOverride="studio:symbolOverride",t.symbolPropagateStyles="studio:propagateStyles",t.getPagesConfig="studio:getPagesConfig",t.setPagesConfig="studio:setPagesConfig",t.getPageSettings="studio:getPageSettings",t.setPageSettings="studio:setPageSettings",t.projectFiles="studio:projectFiles",t.canvasReload="studio:canvasReload",t.getBlocksPanel="studio:getBlocksPanel",t.setBlocksPanel="studio:setBlocksPanel",t.getStateContextMenu="studio:getStateContextMenu",t.setStateContextMenu="studio:setStateContextMenu",t.contextMenuComponent="studio:contextMenuComponent",t.layoutAdd="studio:layoutAdd",t.layoutRemove="studio:layoutRemove",t.layoutToggle="studio:layoutToggle",t.layoutUpdate="studio:layoutUpdate",t.layoutGet="studio:layoutGet",t.layoutConfigGet="studio:layoutConfigGet",t.layoutConfigSet="studio:layoutConfigSet",t.getStateTheme="studio:getStateTheme",t.setStateTheme="studio:setStateTheme",t.assetProviderGet="studio:assetProviderGet",t.assetProviderAdd="studio:assetProviderAdd",t.assetProviderRemove="studio:assetProviderRemove",t.fontGet="studio:fontGet",t.fontAdd="studio:fontAdd",t.fontRemove="studio:fontRemove",t))(p||{}),k=(t=>(t.dark="dark",t.light="light",t.auto="auto",t))(k||{});const E="app.grapesjs.com",R="app-stage.grapesjs.com",_=[E,R,"localhost","127.0.0.1",".local-credentialless.webcontainer.io",".local.webcontainer.io","-sandpack.codesandbox.io"],I="license:check:start",M="license:check:end",B=()=>typeof window<"u",C=({isDev:t,isStage:n})=>`${t?"":`https://${n?R:E}`}/api`,G=()=>{const t=B()&&window.location.hostname;return!!t&&(_.includes(t)||_.some(n=>t.endsWith(n)))};async function N({path:t,baseApiUrl:n,method:o="GET",headers:r={},params:c,body:l}){const a=`${n||C({isDev:!1,isStage:!1})}${t}`,i={method:o,headers:{"Content-Type":"application/json",...r}};l&&(i.body=JSON.stringify(l));const u=c?new URLSearchParams(c).toString():"",e=u?`?${u}`:"",s=await fetch(`${a}${e}`,i);if(!s.ok)throw new Error(`HTTP error! status: ${s.status}`);return s.json()}const P={[f.free]:0,[f.startup]:10,[f.business]:20,[f.enterprise]:30};function U(t){const n=t;return n.init=o=>r=>t(r,o),n}const W=t=>U(t);async function j({editor:t,plan:n,pluginName:o,licenseKey:r,cleanup:c}){let l="",g=!1;const a=G(),i=e=>{console.warn("Cleanup plugin:",o,"Reason:",e),c()},u=(e={})=>{var m;const{error:s,sdkLicense:d}=e,b=(m=e.plan)==null?void 0:m.category;if(!(d||e.license)||s)i(s||"Invalid license");else if(b){const D=P[n],x=P[b];D>x&&i({pluginRequiredPlan:n,licensePlan:b})}};t.on(I,e=>{l=e==null?void 0:e.baseApiUrl,g=!0}),t.on(M,e=>{u(e)}),setTimeout(async()=>{if(!g){if(a)return;if(r){const e=await $({licenseKey:r,pluginName:o,baseApiUrl:l});e&&u(e)}else i("The `licenseKey` option not provided")}},2e3)}async function $(t){const{licenseKey:n,pluginName:o,baseApiUrl:r}=t;try{return(await N({baseApiUrl:r,path:`/sdk/${n||"na"}`,method:"POST",params:{d:window.location.hostname,pn:o}})).result||{}}catch(c){return console.error("Error during SDK license check:",c),!1}}const F=(t,n,o)=>{const{doc:r=document}=o,c=o.target||r.head,l=c.querySelector(`style[${t}]`)||r.createElement("style");l.setAttribute(t,"true"),l.innerHTML=n,!c.contains(l)&&c.appendChild(l)},K=t=>t.dispatchEvent(new CustomEvent("input"));function q(t,n){if(!n)return()=>{};const o=t.Components.events,r=e=>t.getSelectedAll().includes(e),c=e=>e.isInstanceOf("text")&&!e.isChildOf("text"),l=e=>e.isChildOf("text"),g=e=>t.getEditing()===e,a=(e,s={})=>{e.trigger("focus",s.event)},i=(e,s)=>{r(e)&&c(e)&&!g(e)&&a(e,s)},u=(e,s)=>{if(r(e)&&!c(e)&&l(e)){const d=e.parents().find(b=>b.isInstanceOf("text"));d&&(a(d,s),setTimeout(()=>t.select(d),0))}};return t.on(o.select,i),t.on(o.selectBefore,u),()=>{t.off(o.select,i),t.off(o.selectBefore,u)}}const H=`
|
|
2
|
+
.tox .tox-toolbar,
|
|
3
|
+
.tox .tox-toolbar__overflow,
|
|
4
|
+
.tox .tox-toolbar__primary,
|
|
5
|
+
.tox .tox-menu,
|
|
6
|
+
.tox .tox-dialog,
|
|
7
|
+
.tox .tox-toolbar-overlord,
|
|
8
|
+
.tox .tox-dialog__header,
|
|
9
|
+
.tox .tox-dialog__footer {
|
|
10
|
+
background-color: var(--gs-theme-cl-glb-bg3);
|
|
11
|
+
color: var(--gs-theme-cl-glb-txt);
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
.tox .tox-collection__item,
|
|
15
|
+
.tox .tox-label,
|
|
16
|
+
.tox .tox-toolbar-label {
|
|
17
|
+
color: var(--gs-theme-cl-glb-txt);
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
.tox.tox-tinymce-inline .tox-editor-header {
|
|
21
|
+
border-color: var(--gs-theme-cl-glb-br);
|
|
22
|
+
background-color: var(--gs-theme-cl-glb-bg3);
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
.tox .tox-button {
|
|
26
|
+
background-color: var(--gs-theme-cl-prm-bg1);
|
|
27
|
+
border-color: var(--gs-theme-cl-prm-bg1);
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
.tox .tox-button:hover:not(:disabled) {
|
|
31
|
+
background-color: var(--gs-theme-cl-prm-bgh);
|
|
32
|
+
border-color: var(--gs-theme-cl-prm-bgh);
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
.tox .tox-button--secondary {
|
|
36
|
+
background-color: var(--gs-theme-cl-glb-bg2);
|
|
37
|
+
border-color: var(--gs-theme-cl-glb-br);
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
.tox .tox-button--secondary:hover:not(:disabled) {
|
|
41
|
+
background-color: var(--gs-theme-cl-glb-bgh);
|
|
42
|
+
border-color: var(--gs-theme-cl-glb-bgh);
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
.tox .tox-tbtn {
|
|
46
|
+
color: currentColor;
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
.tox .tox-listboxfield .tox-listbox--select,
|
|
50
|
+
.tox .tox-textarea,
|
|
51
|
+
.tox .tox-tbtn--bespoke,
|
|
52
|
+
.tox .tox-textarea-wrap .tox-textarea:focus,
|
|
53
|
+
.tox .tox-textfield,
|
|
54
|
+
.tox .tox-toolbar-textfield {
|
|
55
|
+
background-color: var(--gs-theme-cl-glb-bgh);
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
.tox .tox-custom-editor:focus-within,
|
|
59
|
+
.tox .tox-listboxfield .tox-listbox--select:focus,
|
|
60
|
+
.tox .tox-textarea-wrap:focus-within,
|
|
61
|
+
.tox .tox-textarea:focus,
|
|
62
|
+
.tox .tox-textfield:focus {
|
|
63
|
+
background-color: var(--gs-theme-cl-glb-bgh);
|
|
64
|
+
border-color: var(--gs-theme-cl-prm-bg1);
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
.tox .tox-tbtn:hover,
|
|
68
|
+
.tox .tox-tbtn--enabled,
|
|
69
|
+
.tox .tox-tbtn--enabled:hover,
|
|
70
|
+
.tox .tox-tbtn:active,
|
|
71
|
+
.tox .tox-tbtn:focus,
|
|
72
|
+
.tox .tox-swatches__picker-btn:hover,
|
|
73
|
+
.tox .tox-collection--list .tox-collection__item--enabled,
|
|
74
|
+
.tox .tox-collection--toolbar .tox-collection__item--enabled,
|
|
75
|
+
.tox .tox-split-button:focus {
|
|
76
|
+
background-color: var(--gs-theme-cl-prm-bg1);
|
|
77
|
+
color: var(--gs-theme-cl-prm-txt);
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
.tox .tox-collection--list .tox-collection__item--active,
|
|
81
|
+
.tox .tox-collection--toolbar .tox-collection__item--active {
|
|
82
|
+
background-color: var(--gs-theme-cl-prm-bgh);
|
|
83
|
+
color: var(--gs-theme-cl-prm-txt) !important;
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
.tox .tox-split-button:hover {
|
|
87
|
+
box-shadow: 0 0 0 1px var(--gs-theme-cl-glb-bgh) inset;
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
.tox .tox-dialog__body-nav-item--active {
|
|
91
|
+
color: var(--gs-theme-cl-prm-bg1);
|
|
92
|
+
border-color: var(--gs-theme-cl-prm-bg1);
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
.tox .tox-tbtn svg,
|
|
96
|
+
.tox .tox-tbtn:hover svg {
|
|
97
|
+
fill: currentColor;
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
.tox .tox-insert-table-picker .tox-insert-table-picker__selected {
|
|
101
|
+
background-color: var(--gs-theme-cl-prm-bg1);
|
|
102
|
+
border-color: var(--gs-theme-cl-prm-bg3);
|
|
103
|
+
opacity: 0.75;
|
|
104
|
+
}`,w=new WeakMap,S=(t,n)=>{w.set(t,n)},z=t=>{w.delete(t)},T=t=>w.get(t),y=t=>{const n=t.target,o=n.closest(".tox"),r=n.matches(".ephox-snooker-resizer-bar");(o||r)&&t.stopPropagation()},L=t=>{t.stopPropagation(),t.preventDefault()},V=(t,n)=>{const o=t.getDoc(),r=t.getWin();if(n!=null&&n.event){const{event:c}=n,{clientX:l,clientY:g}=c;let a;if(o.caretRangeFromPoint)a=o.caretRangeFromPoint(l,g);else if(o.caretPositionFromPoint){const i=o.caretPositionFromPoint(l,g);a=o.createRange(),a==null||a.setStart(i.offsetNode,i.offset)}if(a){const i=r.getSelection();i==null||i.removeAllRanges(),i==null||i.addRange(a),t.selection.setRng(a)}}else t.execCommand("SelectAll")},J=t=>{var u,e;const{el:n,editor:o,componentView:r}=t,c=o.runCommand(p.getStateTheme),l=r.model,g={target:n,inline:!0,skin:(c==null?void 0:c.theme)===k.dark?"oxide-dark":"oxide",menubar:!1,image_advtab:!0,paste_data_images:!0,statusbar:!1,branding:!1,forced_root_block:"div",plugins:"advlist autolink lists link image media table",toolbar_mode:"sliding",toolbar:"bold italic underline strikethrough forecolor backcolor alignleft aligncenter alignright alignjustify link image | fontfamily fontsize bullist numlist outdent indent table"},a=((e=(u=t.pluginOpts)==null?void 0:u.loadConfig)==null?void 0:e.call(u,{config:g,editor:o,componentView:r,component:l}))||{};return{...g,...a}},A=(t,n=document)=>new Promise((o,r)=>{const c=Array.isArray(t)?[...t]:[t],{head:l}=n,g=a=>{if(a.length){const i=n.createElement("script");i.src=a.shift(),i.onload=g.bind(null,a),i.onerror=r,l.appendChild(i)}else o()};g(c)}),X="rteTinyMce";return W(function(t,n={}){const o={cdnScript:"https://cdn.jsdelivr.net/npm/tinymce@6.8.5/tinymce.min.js",...n},{cdnScript:r}=o,c=t.Canvas.events,l=!o.skipCustomTheme,g="gs-plg-tinymce-studio-theme",a=async(e,s)=>{const d=e.ownerDocument,b=d.defaultView,h=s==null?void 0:s.view;if(!b||!h){console.warn("Missing required data",{win:b,componentView:h});return}const m=J({el:e,editor:t,componentView:h,pluginOpts:o}),x=(await b.tinymce.init(m))[0];if(!x)return;const Y=(await window.tinymce.init({...m,target:document.createElement("div")}))[0];return x.ui.show(),d.body.addEventListener("mousedown",y),document.body.addEventListener("mousedown",y),x.on("Change",()=>K(e)),x.on("blur",()=>x.ui.show()),x.on("OpenWindow",function(){var O;const v=(O=d.querySelector(".tox-dialog"))==null?void 0:O.closest(".tox");v&&(v==null?void 0:v.ownerDocument)!==document&&(document.body.appendChild(v),x.once("CloseWindow",()=>{v&&v.ownerDocument===document&&d.body.appendChild(v)}))}),e.addEventListener("dragstart",L,{capture:!0}),t.runCommand(p.setStateContextMenu,{enabled:!1}),V(x,s),{rteEditor:x,rteEditorShallow:Y}},i=(e,s)=>{e.ownerDocument.body.removeEventListener("mousedown",y),document.body.removeEventListener("mousedown",y),e.removeEventListener("dragstart",L,{capture:!0}),t.runCommand(p.setStateContextMenu,{enabled:!0}),s.rteEditor.destroy(),s.rteEditorShallow.destroy()};t.on(c.frameLoad,async({window:e})=>{const s=e.document;A(r,s)}),t.onReady(()=>{A(r,document),l&&F(g,H,{target:document.body})}),t.setCustomRte({parseContent:!0,async enable(e,s,d){const b=T(e);if(b)return b.rteEditor;const h=await a(e,d);return h&&S(e,h),h==null?void 0:h.rteEditor},disable(e){const s=T(e);s&&(z(e),i(e,s))},getContent(e){var d,b;const s=T(e);return s?(b=(d=s.rteEditor).getContent)==null?void 0:b.call(d):e.innerHTML}});const u=q(t,o.enableOnClick);j({editor:t,licenseKey:o.licenseKey,plan:f.startup,pluginName:X,cleanup:()=>{t.RichTextEditor.customRte=void 0,u()}})})});
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const studioTheme = "\n.tox .tox-toolbar,\n.tox .tox-toolbar__overflow,\n.tox .tox-toolbar__primary,\n.tox .tox-menu,\n.tox .tox-dialog,\n.tox .tox-toolbar-overlord,\n.tox .tox-dialog__header,\n.tox .tox-dialog__footer {\n background-color: var(--gs-theme-cl-glb-bg3);\n color: var(--gs-theme-cl-glb-txt);\n}\n\n.tox .tox-collection__item,\n.tox .tox-label,\n.tox .tox-toolbar-label {\n color: var(--gs-theme-cl-glb-txt);\n}\n\n.tox.tox-tinymce-inline .tox-editor-header {\n border-color: var(--gs-theme-cl-glb-br);\n background-color: var(--gs-theme-cl-glb-bg3);\n}\n\n.tox .tox-button {\n background-color: var(--gs-theme-cl-prm-bg1);\n border-color: var(--gs-theme-cl-prm-bg1);\n}\n\n.tox .tox-button:hover:not(:disabled) {\n background-color: var(--gs-theme-cl-prm-bgh);\n border-color: var(--gs-theme-cl-prm-bgh);\n}\n\n.tox .tox-button--secondary {\n background-color: var(--gs-theme-cl-glb-bg2);\n border-color: var(--gs-theme-cl-glb-br);\n}\n\n.tox .tox-button--secondary:hover:not(:disabled) {\n background-color: var(--gs-theme-cl-glb-bgh);\n border-color: var(--gs-theme-cl-glb-bgh);\n}\n\n.tox .tox-tbtn {\n color: currentColor;\n}\n\n.tox .tox-listboxfield .tox-listbox--select,\n.tox .tox-textarea,\n.tox .tox-tbtn--bespoke,\n.tox .tox-textarea-wrap .tox-textarea:focus,\n.tox .tox-textfield,\n.tox .tox-toolbar-textfield {\n background-color: var(--gs-theme-cl-glb-bgh);\n}\n\n.tox .tox-custom-editor:focus-within,\n.tox .tox-listboxfield .tox-listbox--select:focus,\n.tox .tox-textarea-wrap:focus-within,\n.tox .tox-textarea:focus,\n.tox .tox-textfield:focus {\n background-color: var(--gs-theme-cl-glb-bgh);\n border-color: var(--gs-theme-cl-prm-bg1);\n}\n\n.tox .tox-tbtn:hover,\n.tox .tox-tbtn--enabled,\n.tox .tox-tbtn--enabled:hover,\n.tox .tox-tbtn:active,\n.tox .tox-tbtn:focus,\n.tox .tox-swatches__picker-btn:hover,\n.tox .tox-collection--list .tox-collection__item--enabled,\n.tox .tox-collection--toolbar .tox-collection__item--enabled,\n.tox .tox-split-button:focus {\n background-color: var(--gs-theme-cl-prm-bg1);\n color: var(--gs-theme-cl-prm-txt);\n}\n\n.tox .tox-collection--list .tox-collection__item--active,\n.tox .tox-collection--toolbar .tox-collection__item--active {\n background-color: var(--gs-theme-cl-prm-bgh);\n color: var(--gs-theme-cl-prm-txt) !important;\n}\n\n.tox .tox-split-button:hover {\n box-shadow: 0 0 0 1px var(--gs-theme-cl-glb-bgh) inset;\n}\n\n.tox .tox-dialog__body-nav-item--active {\n color: var(--gs-theme-cl-prm-bg1);\n border-color: var(--gs-theme-cl-prm-bg1);\n}\n\n.tox .tox-tbtn svg,\n.tox .tox-tbtn:hover svg {\n fill: currentColor;\n}\n\n.tox .tox-insert-table-picker .tox-insert-table-picker__selected {\n background-color: var(--gs-theme-cl-prm-bg1);\n border-color: var(--gs-theme-cl-prm-bg3);\n opacity: 0.75;\n}";
|
|
@@ -10,6 +10,11 @@ export interface RteTinyMceOptions extends SDKPluginOptions {
|
|
|
10
10
|
* @default false
|
|
11
11
|
*/
|
|
12
12
|
enableOnClick?: boolean;
|
|
13
|
+
/**
|
|
14
|
+
* Skip adding custom CSS styles for the toolbar based on the Studio theme.
|
|
15
|
+
* @default false
|
|
16
|
+
*/
|
|
17
|
+
skipCustomTheme?: boolean;
|
|
13
18
|
/**
|
|
14
19
|
* Pass your custom configuration to the TinyMCE editor.
|
|
15
20
|
* @examples
|
package/dist/utils.d.ts
CHANGED
|
@@ -56,6 +56,11 @@ export declare const getSetupDataFromTraits: (traitProps: StudioPluginTraits, op
|
|
|
56
56
|
*/
|
|
57
57
|
export declare const initSdkPluginTraits: (cmp: Component, traits: StudioPluginTraitProperties[]) => void;
|
|
58
58
|
export declare const updateSubTraits: (cmp: Component, traitId: string) => void;
|
|
59
|
+
export declare const appendStyleLink: (styles: string[], doc?: Document) => void;
|
|
60
|
+
export declare const appendStyle: (id: string, css: string, opts: {
|
|
61
|
+
doc?: Document;
|
|
62
|
+
target?: HTMLElement;
|
|
63
|
+
}) => void;
|
|
59
64
|
/**
|
|
60
65
|
* This function allows to move props from kebab-case to camelCase.
|
|
61
66
|
* It's useful when props are added via HTML attributes (eg. data-gjs-my-prop="value") but
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@grapesjs/studio-sdk-plugins",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.18",
|
|
4
4
|
"publishConfig": {
|
|
5
5
|
"registry": "https://registry.npmjs.org"
|
|
6
6
|
},
|
|
@@ -12,7 +12,7 @@
|
|
|
12
12
|
"main": "dist/index.cjs.js",
|
|
13
13
|
"module": "dist/index.es.js",
|
|
14
14
|
"types": "dist/index.d.ts",
|
|
15
|
-
"license": "
|
|
15
|
+
"license": "SEE LICENSE IN LICENSE.md",
|
|
16
16
|
"sideEffects": false,
|
|
17
17
|
"scripts": {
|
|
18
18
|
"build": "tsx build",
|