diff --git a/assets/js/src/form_editor/components/editor.jsx b/assets/js/src/form_editor/components/editor.jsx
index 633c96651f..ed963f17f5 100644
--- a/assets/js/src/form_editor/components/editor.jsx
+++ b/assets/js/src/form_editor/components/editor.jsx
@@ -6,6 +6,7 @@ import Header from './header.jsx';
import Sidebar from './sidebar.jsx';
import FormTitle from './form_title.jsx';
import Notices from './notices.jsx';
+import FormStyles from './form_styles.jsx';
/**
* This component renders the form editor app.
@@ -19,6 +20,7 @@ export default () => {
(select) => select('mailpoet-form-editor').getSidebarOpened(),
[]
);
+
const layoutClass = classnames('edit-post-layout', {
'is-sidebar-opened': sidebarOpened,
});
@@ -29,7 +31,7 @@ export default () => {
-
@@ -39,6 +41,7 @@ export default () => {
+
);
};
diff --git a/assets/js/src/form_editor/components/form_styles.jsx b/assets/js/src/form_editor/components/form_styles.jsx
new file mode 100644
index 0000000000..e4d4ab0f6e
--- /dev/null
+++ b/assets/js/src/form_editor/components/form_styles.jsx
@@ -0,0 +1,22 @@
+import ReactDOM from 'react-dom';
+import { useSelect } from '@wordpress/data';
+import { transformStyles } from '@wordpress/block-editor';
+import css from 'css';
+
+export default () => {
+ const element = document.getElementById('mailpoet-form-editor-form-styles');
+
+ const formStyles = useSelect(
+ (select) => select('mailpoet-form-editor').getFormStyles(),
+ []
+ );
+
+ try {
+ css.parse(formStyles);
+ } catch (e) {
+ return ReactDOM.createPortal(null, element);
+ }
+
+ const transoformedStyles = transformStyles([{ css: formStyles }], '.editor-styles-wrapper');
+ return ReactDOM.createPortal(transoformedStyles[0], element);
+};
diff --git a/package-lock.json b/package-lock.json
index 8874e90ed7..1518409e85 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -3155,8 +3155,7 @@
"atob": {
"version": "2.1.2",
"resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz",
- "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==",
- "dev": true
+ "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg=="
},
"autoprefixer": {
"version": "9.4.10",
@@ -4759,6 +4758,17 @@
"randomfill": "^1.0.3"
}
},
+ "css": {
+ "version": "2.2.4",
+ "resolved": "https://registry.npmjs.org/css/-/css-2.2.4.tgz",
+ "integrity": "sha512-oUnjmWpy0niI3x/mPL8dVEI1l7MnG3+HHyRPHf+YFSbK+svOhXpmSOcDURUh2aOCgl2grzrOPt1nHLuCVFULLw==",
+ "requires": {
+ "inherits": "^2.0.3",
+ "source-map": "^0.6.1",
+ "source-map-resolve": "^0.5.2",
+ "urix": "^0.1.0"
+ }
+ },
"css-line-break": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/css-line-break/-/css-line-break-1.0.1.tgz",
@@ -4875,8 +4885,7 @@
"decode-uri-component": {
"version": "0.2.0",
"resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz",
- "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=",
- "dev": true
+ "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU="
},
"deep-eql": {
"version": "0.1.3",
@@ -11023,8 +11032,7 @@
"resolve-url": {
"version": "0.2.1",
"resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz",
- "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=",
- "dev": true
+ "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo="
},
"restore-cursor": {
"version": "2.0.0",
@@ -11808,7 +11816,6 @@
"version": "0.5.2",
"resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.2.tgz",
"integrity": "sha512-MjqsvNwyz1s0k81Goz/9vRBe9SZdB09Bdw+/zYyO+3CuPk6fouTaxscHkgtE8jKvf01kVfl8riHzERQ/kefaSA==",
- "dev": true,
"requires": {
"atob": "^2.1.1",
"decode-uri-component": "^0.2.0",
@@ -11838,8 +11845,7 @@
"source-map-url": {
"version": "0.4.0",
"resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.0.tgz",
- "integrity": "sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM=",
- "dev": true
+ "integrity": "sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM="
},
"spdx-correct": {
"version": "3.1.0",
@@ -13448,8 +13454,7 @@
"urix": {
"version": "0.1.0",
"resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz",
- "integrity": "sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=",
- "dev": true
+ "integrity": "sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI="
},
"url": {
"version": "0.11.0",
diff --git a/package.json b/package.json
index b204a35183..307db51db5 100644
--- a/package.json
+++ b/package.json
@@ -21,6 +21,7 @@
"dependencies": {
"@babel/runtime": "^7.4.5",
"@babel/runtime-corejs3": "^7.5.5",
+ "@wordpress/block-editor": "^3.3.0",
"@wordpress/components": "^8.4.0",
"@wordpress/data": "^4.10.0",
"@wordpress/edit-post": "^3.9.0",
@@ -33,6 +34,7 @@
"blob-tmp": "^1.0.0",
"classnames": "^2.1.3",
"codemirror": "^5.37.0",
+ "css": "^2.2.4",
"file-saver": "^1.3.8",
"handlebars": "^4.5.3",
"html2canvas": "^1.0.0-alpha.12",
diff --git a/views/form/editor.html b/views/form/editor.html
index e2478b9f28..97c25e4734 100644
--- a/views/form/editor.html
+++ b/views/form/editor.html
@@ -20,6 +20,8 @@
var mailpoet_form_pages = <%= json_encode(pages) %>;
<% endautoescape %>
+
+
<% endblock %>
<% block translations %>