{"_id":"@bsp-team/grapesjs-mjml","_rev":"10-bbc4e277c610f8ac3213ba72eff4579d","name":"@bsp-team/grapesjs-mjml","dist-tags":{"latest":"1.0.15"},"versions":{"1.0.9":{"name":"@bsp-team/grapesjs-mjml","version":"1.0.9","keywords":["grapesjs","plugin","mjml","wysiwyg"],"author":{"name":"Artur Arseniev"},"license":"BSD-3-Clause","_id":"@bsp-team/grapesjs-mjml@1.0.9","maintainers":[{"name":"malynov","email":"andrey@malynov.com"},{"name":"soyo265","email":"alena.kotlyarova@griser.ru"},{"name":"ruslan.fakhrutdinov","email":"ruslan.fakhrutdinov@griser.ru"},{"name":"sodapng","email":"sodapng@ya.ru"}],"homepage":"https://github.com/GrapesJS/mjml#readme","bugs":{"url":"https://github.com/GrapesJS/mjml/issues"},"dist":{"shasum":"a663dd230667a6815a2cdcb6b895396988cb7889","tarball":"https://registry.npmjs.org/@bsp-team/grapesjs-mjml/-/grapesjs-mjml-1.0.9.tgz","fileCount":8,"integrity":"sha512-jiFehQ3/3BsTgRm2/NiV8rZm85IlX5pLUdP0CD3mZUIOaShQerAKdenuSOzcJMiuwFWkt5mU/hlef8WdJp85TA==","signatures":[{"sig":"MEYCIQDiDK2j6J5dXzyYoFMM21ra96ehfFP3TcWtDAF6vkj76wIhAKscHxQGli3zMO9mSaNb+5pdPHOHSltedBJC6OtYyk4H","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3772835},"main":"dist/index.js","babel":{"env":{"test":{"presets":["@babel/preset-env","@babel/preset-typescript"]}}},"types":"./dist/index.d.ts","gitHead":"8ffeec64c45b5be91f6f9d15b20b5bdc9346b3f2","scripts":{"lint":"eslint src","test":"jest","build":"grapesjs-cli build --patch=false","start":"grapesjs-cli serve","v:patch":"npm version patch -m \"Release v%s\"","lint:fix":"eslint src --fix"},"_npmUser":{"name":"sodapng","email":"sodapng@ya.ru"},"repository":{"url":"git+https://github.com/GrapesJS/mjml.git","type":"git"},"_npmVersion":"10.9.3","description":"MJML Componenets integration in GrapesJS","directories":{},"_nodeVersion":"22.20.0","dependencies":{"mjml-core":"^4.15.3","@types/mjml":"^4.7.4","mjml-browser":"^4.13.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"ajv":"^8.12.0","jest":"^24.9.0","eslint":"^8.23.0","grapesjs":"^0.21.2","@babel/cli":"^7.15.7","underscore":"^1.13.1","@types/jest":"^29.5.12","grapesjs-cli":"^4.1.1","whatwg-fetch":"^3.6.2","regenerator-runtime":"^0.14.1","@babel/preset-typescript":"^7.16.7"},"_npmOperationalInternal":{"tmp":"tmp/grapesjs-mjml_1.0.9_1762800993797_0.05821547558865037","host":"s3://npm-registry-packages-npm-production"}},"1.0.10":{"name":"@bsp-team/grapesjs-mjml","version":"1.0.10","keywords":["grapesjs","plugin","mjml","wysiwyg"],"author":{"name":"Artur Arseniev"},"license":"BSD-3-Clause","_id":"@bsp-team/grapesjs-mjml@1.0.10","maintainers":[{"name":"malynov","email":"andrey@malynov.com"},{"name":"soyo265","email":"alena.kotlyarova@griser.ru"},{"name":"ruslan.fakhrutdinov","email":"ruslan.fakhrutdinov@griser.ru"},{"name":"sodapng","email":"sodapng@ya.ru"}],"homepage":"https://github.com/GrapesJS/mjml#readme","bugs":{"url":"https://github.com/GrapesJS/mjml/issues"},"dist":{"shasum":"3286fb90cb3e45d4fbdc802adf00a9d32cea5ead","tarball":"https://registry.npmjs.org/@bsp-team/grapesjs-mjml/-/grapesjs-mjml-1.0.10.tgz","fileCount":17,"integrity":"sha512-Ss4Nb8EGxSPVdyjIjuBTW+P9Axs6kpZ2BWFEVCY0xgmZUW99OPxUVWqJJbqJYQ2HEz6UrDuP2S0rvcIzv2kwQA==","signatures":[{"sig":"MEUCIQC91nrSeW1wOQN/T28Ff+V0ogjfpVrl0q8vBVVocnNDxgIgVRaw6u5VO0Bh+zOcf72di0Em+M1/+yWQPT3WEp5czB8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3762246},"main":"./src/index.ts","babel":{"env":{"test":{"presets":["@babel/preset-env","@babel/preset-typescript"]}}},"gitHead":"cadfd99bf89a5696de51b49313319252a8d0def8","scripts":{"lint":"eslint src","test":"jest","build":"grapesjs-cli build --patch=false","start":"grapesjs-cli serve","v:patch":"npm version patch -m \"Release v%s\"","lint:fix":"eslint src --fix"},"_npmUser":{"name":"sodapng","email":"sodapng@ya.ru"},"repository":{"url":"git+https://github.com/GrapesJS/mjml.git","type":"git"},"_npmVersion":"10.9.3","description":"MJML Componenets integration in GrapesJS","directories":{},"_nodeVersion":"22.20.0","dependencies":{"mjml-core":"^4.15.3","@types/mjml":"^4.7.4","mjml-browser":"^4.13.0"},"_hasShrinkwrap":false,"devDependencies":{"ajv":"^8.12.0","jest":"^24.9.0","eslint":"^8.23.0","grapesjs":"^0.21.2","@babel/cli":"^7.15.7","underscore":"^1.13.1","@types/jest":"^29.5.12","grapesjs-cli":"^4.1.1","whatwg-fetch":"^3.6.2","regenerator-runtime":"^0.14.1","@babel/preset-typescript":"^7.16.7"},"_npmOperationalInternal":{"tmp":"tmp/grapesjs-mjml_1.0.10_1775663853709_0.20637802472168487","host":"s3://npm-registry-packages-npm-production"}},"1.0.11":{"name":"@bsp-team/grapesjs-mjml","version":"1.0.11","keywords":["grapesjs","plugin","mjml","wysiwyg"],"author":{"name":"Artur Arseniev"},"license":"BSD-3-Clause","_id":"@bsp-team/grapesjs-mjml@1.0.11","maintainers":[{"name":"malynov","email":"andrey@malynov.com"},{"name":"soyo265","email":"alena.kotlyarova@griser.ru"},{"name":"ruslan.fakhrutdinov","email":"ruslan.fakhrutdinov@griser.ru"},{"name":"sodapng","email":"sodapng@ya.ru"}],"homepage":"https://github.com/GrapesJS/mjml#readme","bugs":{"url":"https://github.com/GrapesJS/mjml/issues"},"dist":{"shasum":"0643eceaaead37a8af8d38c0b5e06f0739b96e55","tarball":"https://registry.npmjs.org/@bsp-team/grapesjs-mjml/-/grapesjs-mjml-1.0.11.tgz","fileCount":17,"integrity":"sha512-jbA59ku7koMwZdJjbg41vN5P3K9HgIji87iHk7rI/XEBoQJcRWyqgKrIuZOXzTV6iqSkkl8xDKzKoxPaFglFjg==","signatures":[{"sig":"MEQCICTj/qxMzBdtW5LMlwa8HBKviLT7WUBi3OVHTYsSJ1hUAiA7iIq4CrrUMlQGsSg5Zm45+TFOe/+gJp8H1n0P6LnMVg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3762245},"main":"dist/index.js","babel":{"env":{"test":{"presets":["@babel/preset-env","@babel/preset-typescript"]}}},"types":"./dist/index.d.ts","gitHead":"cadfd99bf89a5696de51b49313319252a8d0def8","scripts":{"lint":"eslint src","test":"jest","build":"grapesjs-cli build --patch=false","start":"grapesjs-cli serve","v:patch":"npm version patch -m \"Release v%s\"","lint:fix":"eslint src --fix"},"_npmUser":{"name":"sodapng","email":"sodapng@ya.ru"},"repository":{"url":"git+https://github.com/GrapesJS/mjml.git","type":"git"},"_npmVersion":"11.8.0","description":"MJML Componenets integration in GrapesJS","directories":{},"_nodeVersion":"25.6.0","dependencies":{"mjml-core":"^4.15.3","@types/mjml":"^4.7.4","mjml-browser":"^4.13.0"},"_hasShrinkwrap":false,"devDependencies":{"ajv":"^8.12.0","jest":"^24.9.0","eslint":"^8.23.0","grapesjs":"^0.21.2","@babel/cli":"^7.15.7","underscore":"^1.13.1","@types/jest":"^29.5.12","grapesjs-cli":"^4.1.1","whatwg-fetch":"^3.6.2","regenerator-runtime":"^0.14.1","@babel/preset-typescript":"^7.16.7"},"_npmOperationalInternal":{"tmp":"tmp/grapesjs-mjml_1.0.11_1775664352809_0.7147051092702277","host":"s3://npm-registry-packages-npm-production"}},"1.0.12":{"name":"@bsp-team/grapesjs-mjml","version":"1.0.12","keywords":["grapesjs","plugin","mjml","wysiwyg"],"author":{"name":"Artur Arseniev"},"license":"BSD-3-Clause","_id":"@bsp-team/grapesjs-mjml@1.0.12","maintainers":[{"name":"malynov","email":"andrey@malynov.com"},{"name":"soyo265","email":"alena.kotlyarova@griser.ru"},{"name":"ruslan.fakhrutdinov","email":"ruslan.fakhrutdinov@griser.ru"},{"name":"sodapng","email":"sodapng@ya.ru"}],"homepage":"https://github.com/GrapesJS/mjml#readme","bugs":{"url":"https://github.com/GrapesJS/mjml/issues"},"dist":{"shasum":"692884a21cf3e0472b6398e56ca96844b89d2170","tarball":"https://registry.npmjs.org/@bsp-team/grapesjs-mjml/-/grapesjs-mjml-1.0.12.tgz","fileCount":8,"integrity":"sha512-T/lA+i9x328Veka9OtAj44oB9dni1d8QOUDdOY2CETx0wQwJZRoDQyJlp/+R45wu3XzX87dNeFv45tyTeSmFIA==","signatures":[{"sig":"MEQCIAOJegXdtV2SGFvNRVDCdPtrXlpT5VN6OWg39hpXhrlBAiAlBmkymSPxFMizMKaaL8bTnKwC49P468AV5mN7EzsBGg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3772836},"main":"dist/index.js","babel":{"env":{"test":{"presets":["@babel/preset-env","@babel/preset-typescript"]}}},"types":"./dist/index.d.ts","gitHead":"8ffeec64c45b5be91f6f9d15b20b5bdc9346b3f2","scripts":{"lint":"eslint src","test":"jest","build":"grapesjs-cli build --patch=false","start":"grapesjs-cli serve","v:patch":"npm version patch -m \"Release v%s\"","lint:fix":"eslint src --fix"},"_npmUser":{"name":"sodapng","email":"sodapng@ya.ru"},"repository":{"url":"git+https://github.com/GrapesJS/mjml.git","type":"git"},"_npmVersion":"11.8.0","description":"MJML Componenets integration in GrapesJS","directories":{},"_nodeVersion":"25.6.0","dependencies":{"mjml-core":"^4.15.3","@types/mjml":"^4.7.4","mjml-browser":"^4.13.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"ajv":"^8.12.0","jest":"^24.9.0","eslint":"^8.23.0","grapesjs":"^0.21.2","@babel/cli":"^7.15.7","underscore":"^1.13.1","@types/jest":"^29.5.12","grapesjs-cli":"^4.1.1","whatwg-fetch":"^3.6.2","regenerator-runtime":"^0.14.1","@babel/preset-typescript":"^7.16.7"},"_npmOperationalInternal":{"tmp":"tmp/grapesjs-mjml_1.0.12_1776069264770_0.6862913407997926","host":"s3://npm-registry-packages-npm-production"}},"1.0.13":{"name":"@bsp-team/grapesjs-mjml","version":"1.0.13","keywords":["grapesjs","plugin","mjml","wysiwyg"],"author":{"name":"Artur Arseniev"},"license":"BSD-3-Clause","_id":"@bsp-team/grapesjs-mjml@1.0.13","maintainers":[{"name":"malynov","email":"andrey@malynov.com"},{"name":"soyo265","email":"alena.kotlyarova@griser.ru"},{"name":"ruslan.fakhrutdinov","email":"ruslan.fakhrutdinov@griser.ru"},{"name":"sodapng","email":"sodapng@ya.ru"}],"homepage":"https://github.com/GrapesJS/mjml#readme","bugs":{"url":"https://github.com/GrapesJS/mjml/issues"},"dist":{"shasum":"df160629c05e50302907392e5b960a6beb7893e5","tarball":"https://registry.npmjs.org/@bsp-team/grapesjs-mjml/-/grapesjs-mjml-1.0.13.tgz","fileCount":9,"integrity":"sha512-jjkqiUvoL4wBictpNOjwcFT+ueLtytS74aSLCnvnciF9dehrH9kjRvoGeXxgK725vuRU20kCp+oc/ISt6mtZmg==","signatures":[{"sig":"MEUCIQCSwx6mVn+10SXBqwZ7rgXZSJR6iSiP7hPnfQRgPrd5MAIgUULjfkL44u2BTuDvH/mssLQ9B0/dhxYUmkvDFtxi5RI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3774366},"main":"dist/index.js","babel":{"env":{"test":{"presets":["@babel/preset-env","@babel/preset-typescript"]}}},"types":"./dist/index.d.ts","gitHead":"8ffeec64c45b5be91f6f9d15b20b5bdc9346b3f2","scripts":{"lint":"eslint src","test":"jest","build":"grapesjs-cli build --patch=false","start":"grapesjs-cli serve","v:patch":"npm version patch -m \"Release v%s\"","lint:fix":"eslint src --fix"},"_npmUser":{"name":"sodapng","email":"sodapng@ya.ru"},"repository":{"url":"git+https://github.com/GrapesJS/mjml.git","type":"git"},"_npmVersion":"11.8.0","description":"MJML Componenets integration in GrapesJS","directories":{},"_nodeVersion":"25.6.0","dependencies":{"mjml-core":"^4.15.3","@types/mjml":"^4.7.4","mjml-browser":"^4.13.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"ajv":"^8.12.0","jest":"^24.9.0","eslint":"^8.23.0","grapesjs":"^0.21.2","@babel/cli":"^7.15.7","underscore":"^1.13.1","@types/jest":"^29.5.12","grapesjs-cli":"^4.1.1","whatwg-fetch":"^3.6.2","regenerator-runtime":"^0.14.1","@babel/preset-typescript":"^7.16.7"},"_npmOperationalInternal":{"tmp":"tmp/grapesjs-mjml_1.0.13_1776069545098_0.13323110861048248","host":"s3://npm-registry-packages-npm-production"}},"1.0.14":{"name":"@bsp-team/grapesjs-mjml","version":"1.0.14","keywords":["grapesjs","plugin","mjml","wysiwyg"],"author":{"name":"Artur Arseniev"},"license":"BSD-3-Clause","_id":"@bsp-team/grapesjs-mjml@1.0.14","maintainers":[{"name":"malynov","email":"andrey@malynov.com"},{"name":"soyo265","email":"alena.kotlyarova@griser.ru"},{"name":"ruslan.fakhrutdinov","email":"ruslan.fakhrutdinov@griser.ru"},{"name":"sodapng","email":"sodapng@ya.ru"}],"homepage":"https://github.com/GrapesJS/mjml#readme","bugs":{"url":"https://github.com/GrapesJS/mjml/issues"},"dist":{"shasum":"fb039278f3704346a6ca9ca955d40241e03b2458","tarball":"https://registry.npmjs.org/@bsp-team/grapesjs-mjml/-/grapesjs-mjml-1.0.14.tgz","fileCount":9,"integrity":"sha512-s4MdQKuc2MsQ5+NgcZsUc5BnTQVhUKTQ6zat/heYntswjQlQFm9ouqhuKn6zRKj/bPoS4eTFMi+eX+BDlq61Cw==","signatures":[{"sig":"MEUCIC8CSxCoeLsmQRWFYL8lxROJSh+oRTdIka1NW/+v0YIMAiEA16EzfHYK/b13JjbgAC+/sg2eQLrBJupryadykk5XVvU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3774086},"main":"dist/index.js","babel":{"env":{"test":{"presets":["@babel/preset-env","@babel/preset-typescript"]}}},"types":"./dist/index.d.ts","gitHead":"cc58129560aff6c6f730774fab56f09ce9fc7217","scripts":{"lint":"eslint src","test":"jest","build":"grapesjs-cli build --patch=false","start":"grapesjs-cli serve","v:patch":"npm version patch -m \"Release v%s\"","lint:fix":"eslint src --fix"},"_npmUser":{"name":"sodapng","email":"sodapng@ya.ru"},"repository":{"url":"git+https://github.com/GrapesJS/mjml.git","type":"git"},"_npmVersion":"11.8.0","description":"MJML Componenets integration in GrapesJS","directories":{},"_nodeVersion":"25.6.0","dependencies":{"mjml-core":"^4.15.3","@types/mjml":"^4.7.4","mjml-browser":"^4.13.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"ajv":"^8.12.0","jest":"^24.9.0","eslint":"^8.23.0","grapesjs":"^0.21.2","@babel/cli":"^7.15.7","underscore":"^1.13.1","@types/jest":"^29.5.12","grapesjs-cli":"^4.1.1","whatwg-fetch":"^3.6.2","regenerator-runtime":"^0.14.1","@babel/preset-typescript":"^7.16.7"},"_npmOperationalInternal":{"tmp":"tmp/grapesjs-mjml_1.0.14_1776260768684_0.6551537876231048","host":"s3://npm-registry-packages-npm-production"}},"1.0.15":{"name":"@bsp-team/grapesjs-mjml","version":"1.0.15","description":"MJML Componenets integration in GrapesJS","main":"dist/index.js","scripts":{"lint":"eslint src","lint:fix":"eslint src --fix","v:patch":"npm version patch -m \"Release v%s\"","build":"grapesjs-cli build --patch=false","start":"grapesjs-cli serve","test":"jest"},"publishConfig":{"access":"public"},"repository":{"type":"git","url":"git+https://github.com/GrapesJS/mjml.git"},"keywords":["grapesjs","plugin","mjml","wysiwyg"],"author":{"name":"Artur Arseniev"},"license":"BSD-3-Clause","dependencies":{"@types/mjml":"^4.7.4","mjml-browser":"^4.13.0","mjml-core":"^4.15.3"},"babel":{"env":{"test":{"presets":["@babel/preset-env","@babel/preset-typescript"]}}},"devDependencies":{"@babel/cli":"^7.15.7","@babel/preset-typescript":"^7.16.7","@types/jest":"^29.5.12","ajv":"^8.12.0","eslint":"^8.23.0","grapesjs":"^0.21.2","grapesjs-cli":"^4.1.1","jest":"^24.9.0","regenerator-runtime":"^0.14.1","underscore":"^1.13.1","whatwg-fetch":"^3.6.2"},"gitHead":"cc58129560aff6c6f730774fab56f09ce9fc7217","types":"./dist/index.d.ts","_id":"@bsp-team/grapesjs-mjml@1.0.15","bugs":{"url":"https://github.com/GrapesJS/mjml/issues"},"homepage":"https://github.com/GrapesJS/mjml#readme","_nodeVersion":"25.6.0","_npmVersion":"11.8.0","dist":{"integrity":"sha512-NSamsw2e7SF/71c0OALZF8OsgsOMFTzmSNDp9OSOTR80CluatcSilMcjA6IpXG3Hrp0aJ/c1u0/xKEaCFi/Ylw==","shasum":"8def3f84326c975cbbf9a6005abf89c89f64d52a","tarball":"https://registry.npmjs.org/@bsp-team/grapesjs-mjml/-/grapesjs-mjml-1.0.15.tgz","fileCount":9,"unpackedSize":3752197,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIBJw/s5xe87WAFAPKX3v6caI2o7NcjNGT7ljswD0wQIvAiEA/Svpx1YdufGGuBq6vRCXZ5UWjATVARSjB36czqui6zQ="}]},"_npmUser":{"name":"sodapng","email":"sodapng@ya.ru"},"directories":{},"maintainers":[{"name":"malynov","email":"andrey@malynov.com"},{"name":"soyo265","email":"alena.kotlyarova@griser.ru"},{"name":"ruslan.fakhrutdinov","email":"ruslan.fakhrutdinov@griser.ru"},{"name":"sodapng","email":"sodapng@ya.ru"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/grapesjs-mjml_1.0.15_1776260987455_0.09210288646947773"},"_hasShrinkwrap":false}},"time":{"created":"2025-11-10T18:56:33.659Z","modified":"2026-04-15T13:49:47.796Z","1.0.7":"2025-11-10T18:29:36.882Z","1.0.8":"2025-11-10T18:54:04.644Z","1.0.9":"2025-11-10T18:56:34.063Z","1.0.10":"2026-04-08T15:57:33.975Z","1.0.11":"2026-04-08T16:05:53.046Z","1.0.12":"2026-04-13T08:34:25.014Z","1.0.13":"2026-04-13T08:39:05.356Z","1.0.14":"2026-04-15T13:46:08.834Z","1.0.15":"2026-04-15T13:49:47.655Z"},"bugs":{"url":"https://github.com/GrapesJS/mjml/issues"},"author":{"name":"Artur Arseniev"},"license":"BSD-3-Clause","homepage":"https://github.com/GrapesJS/mjml#readme","keywords":["grapesjs","plugin","mjml","wysiwyg"],"repository":{"type":"git","url":"git+https://github.com/GrapesJS/mjml.git"},"description":"MJML Componenets integration in GrapesJS","maintainers":[{"name":"malynov","email":"andrey@malynov.com"},{"name":"soyo265","email":"alena.kotlyarova@griser.ru"},{"name":"ruslan.fakhrutdinov","email":"ruslan.fakhrutdinov@griser.ru"},{"name":"sodapng","email":"sodapng@ya.ru"}],"readme":"# GrapesJS MJML\n\n> Requires GrapesJS v0.15.9 or higher\n\n[![build](https://github.com/GrapesJS/mjml/actions/workflows/build.yml/badge.svg)](https://github.com/artf/grapesjs-mjml/actions)\n\nThis plugin enables the usage of [MJML](https://mjml.io/) components inside the GrapesJS environment. MJML components are rendered in real-time using the official v4 compiler (+ some mocks to make it run in the browser), therefore the result is, almost, the same as using the [MJML Live Editor](https://mjml.io/try-it-live).\n\n\n[Demo](http://grapesjs.com/demo-mjml.html)\n\nSupported MJML components (using default mjml-browser parser):\n`mj-mjml`\n`mj-head`\n`mj-body`\n`mj-wrapper`\n`mj-group`\n`mj-section`\n`mj-column`\n`mj-text`\n`mj-image`\n`mj-button`\n`mj-divider`\n`mj-spacer`\n`mj-style`\n`mj-font`\n`mj-navbar`\n`mj-navbar-link`\n`mj-raw`\n\n\n## Options\n\n|Option|Description|Default|\n|-|-|-\n|`blocks`|Which blocks to add|(all)|\n|`block`|Add custom block options, based on block id.|`(blockId) => ({})`|\n|`codeViewerTheme`|Code viewer theme.|`hopscotch`|\n|`customComponents`|List of components which will be added to default one |`[]` |\n|`importPlaceholder`|Placeholder MJML template for the import modal|`''`|\n|`imagePlaceholderSrc`|Image placeholder source|`'https://via.placeholder.com/350x250/78c5d6/fff'`|\n|`i18n`|I18n object containing language [more info](https://grapesjs.com/docs/modules/I18n.html#configuration)|`{}`|\n|`mjmlParser`|Custom [mjml-browser](https://www.npmjs.com/package/mjml-browser) instance. Allows to extend MJML functionality or add custom MJML components |`(input: string \\| MJMLJsonObject, opt: MJMLParsingOptions) => MJMLParseResults`|\n|`overwriteExport`|Overwrite default export command|`true`|\n|`preMjml`|String before the MJML in export code|`''`|\n|`postMjml`|String after the MJML in export code|`''`|\n|`resetBlocks`|Clean all previous blocks if true|`true`|\n|`resetDevices`|Clean all previous devices and set a new one for mobile|`true`|\n|`resetStyleManager`|Reset the Style Manager and add new properties for MJML|`true`|\n|`resetDevices`|Clean all previous devices and set a new one for mobile|`true`|\n|`hideSelector`|Hide the default selector manager|`true`|\n|`useXmlParser`|Experimental: use XML parser instead of HTML. This should allow importing void MJML elements (without closing tags) like `<mj-image/>`|`false`|\n|`columnsPadding`|Column padding (this way it's easier to select columns)|`10px 0`|\n|`useCustomTheme`|Load custom preset theme|`true`|\n\n\n## Download\n\n* `npm i grapesjs-mjml`\n\n\n\n## Usage\n\n```html\n<link href=\"path/to/grapes.min.css\" rel=\"stylesheet\"/>\n<script src=\"path/to/grapes.min.js\"></script>\n<script src=\"path/to/grapesjs-mjml.min.js\"></script>\n\n<div id=\"gjs\">\n  <mjml>\n    <mj-body>\n      <!-- Your MJML body here -->\n      <mj-section>\n        <mj-column>\n          <mj-text>My Company</mj-text>\n        </mj-column>\n      </mj-section>\n    </mj-body>\n  </mjml>\n</div>\n\n<script type=\"text/javascript\">\n  const editor = grapesjs.init({\n      fromElement: true,\n      container: '#gjs',\n      plugins: ['grapesjs-mjml'],\n      pluginsOpts: {\n        'grapesjs-mjml': {/* ...options */}\n      }\n  });\n</script>\n```\n\n#### Or using ESM imports:\n\n```js\nimport 'grapesjs/dist/css/grapes.min.css'\nimport grapesJS from 'grapesjs'\nimport grapesJSMJML from 'grapesjs-mjml'\n\ngrapesJS.init({\n   fromElement: true,\n   container: '#gjs',\n   plugins: [grapesJSMJML],\n   pluginsOpts: {\n      [grapesJSMJML]: {/* ...options */}\n   },\n});\n```\n\n#### i18n usage:\n\n```js\nimport 'grapesjs/dist/css/grapes.min.css'\nimport grapesJS from 'grapesjs'\nimport nl from 'grapesjs/locale/nl'\nimport grapesJSMJML from 'grapesjs-mjml'\nimport mjmlNL from 'grapesjs-mjml/locale/nl'\n\ngrapesJS.init({\n   fromElement: true,\n   container: '#gjs',\n   i18n: {\n      // locale: 'en', // default locale\n      // detectLocale: true, // by default, the editor will detect the language\n      // localeFallback: 'en', // default fallback\n      messages: { nl: nl },\n   },\n   plugins: [grapesJSMJML],\n   pluginsOpts: {\n      [grapesJSMJML]: {\n        // Optional options\n        i18n: { nl: mjmlNL }\n      }\n   },\n});\n```\n\n### Using Independent mjml-browser Build\n\nIn case, you have your own version of MJML with custom or extended components, it is possible\nto override default [mjml parser](https://github.com/mjmlio/mjml/tree/master/packages/mjml-browser)\nwith custom one and create custom grapesJS components.\n\nFor further info how to create MJML Component, you can\n[visit components folder](https://github.com/GrapesJS/mjml/tree/master/src/components)\nor you can go to [docs](https://grapesjs.com/docs/modules/Components.html#define-custom-component-type).\n\n```ts\nimport 'grapesjs/dist/css/grapes.min.css'\nimport grapesJS from 'grapesjs'\nimport grapesJSMJML from 'grapesjs-mjml'\nimport customMjmlParser from 'custom-mjml-parser';\n\nimport customImage from 'custom/components/path'\n\ngrapesJS.init({\n   fromElement: true,\n   container: '#gjs',\n   plugins: [grapesJSMJML],\n   pluginsOpts: {\n      [grapesJSMJML]: {\n        mjmlParser: customMjmlParser,\n        customComponents: [\n          customImage,\n        ]\n      }\n   },\n});\n```\n\n## Development\n\nClone the repository\n\n```sh\n$ git clone https://github.com/GrapesJS/mjml.git\n$ cd mjml\n```\n\nInstall it\n\n```sh\n$ npm i\n```\n\nStart the dev server\n\n```sh\n$ npm start\n```\n\n## Releasing\n\n1) Run `npm run v:patch` to bump the version in package.json and create a git tag\n2) Push the commit + new tag\n3) Go to github and draft a new release\n4) Select the new tag and add some release notes\n5) Hit publish, the release will automatically publish to npm\n\n## License\n\nBSD 3-Clause\n","readmeFilename":"README.md"}