grapesjs-baml-core v0.5.7
GrapesJS baml
Requires GrapesJS v0.15.9 or higher
This plugin enables the usage of baml components inside the GrapesJS environment. baml 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 baml Live Editor.
Supported components:
ba-wrapper
ba-group
ba-section
ba-column
ba-text
ba-image
ba-button
ba-social
ba-divider
ba-spacer
ba-style
ba-font
ba-hero
Options
Option | Description | Default | |
---|---|---|---|
fonts | Custom fonts on exported HTML header more info | {} | |
importPlaceholder | Import placeholder baml | '' | |
imagePlaceholderSrc | Image placeholder source | 'https://via.placeholder.com/350x250/78c5d6/fff' | |
i18n | I18n object containing language more info | {} | |
overwriteExport | Overwrite default export command | true | |
preMjml | String before the baml in export code | '' | |
postMjml | String after the baml in export code | '' | |
resetBlocks | Clean all previous blocks if true | true | |
resetDevices | Clean all previous devices and set a new one for mobile | true | , |
resetStyleManager | Reset the Style Manager and add new properties for baml | true | , |
Download
npm i grapesjs-baml
Usage
<link href="path/to/grapes.min.css" rel="stylesheet"/>
<script src="path/to/grapes.min.js"></script>
<script src="path/to/grapesjs-baml.min.js"></script>
<div id="gjs">
<baml>
<ba-body>
<!-- Your baml body here -->
<ba-section>
<ba-column>
<ba-text>My Company</ba-text>
</ba-column>
</ba-section>
</ba-body>
</baml>
</div>
<script type="text/javascript">
var editor = grapesjs.init({
fromElement: 1,
container : '#gjs',
plugins: ['grapesjs-baml'],
pluginsOpts: {
'grapesjs-baml': {/* ...options */}
}
});
</script>
Or using ESM imports:
import 'grapesjs/dist/css/grapes.min.css'
import grapesJS from 'grapesjs'
import grapesJSMJML from 'grapesjs-baml'
grapesJS.init({
fromElement: 1,
container : '#gjs',
avoidInlineStyle : false,
plugins: [grapesJSMJML],
pluginsOpts: {
[grapesJSMJML]: {/* ...options */}
},
});
i18n usage:
import 'grapesjs/dist/css/grapes.min.css'
import grapesJS from 'grapesjs'
import nl from 'grapesjs/locale/nl'
import grapesJSMJML from 'grapesjs-baml'
import bamlNL from 'grapesjs-baml/locale/nl'
grapesJS.init({
fromElement: 1,
container : '#gjs',
avoidInlineStyle : false,
i18n: {
// locale: 'en', // default locale
// detectLocale: true, // by default, the editor will detect the language
// localeFallback: 'en', // default fallback
messages: { nl: nl },
},
plugins: [grapesJSMJML],
pluginsOpts: {
[grapesJSMJML]: {
// Optional options
i18n: { nl: bamlNL }
}
},
});
fonts usage:
import 'grapesjs/dist/css/grapes.min.css'
import grapesJS from 'grapesjs'
import grapesJSMJML from 'grapesjs-baml'
let editor = grapesJS.init({
fromElement: 1,
container : '#gjs',
avoidInlineStyle : false,
plugins: [grapesJSMJML],
pluginsOpts: {
[grapesJSMJML]: {
// The font imports are included on HTML <head/> when fonts are used on the template
fonts: {
Montserrat: 'https://fonts.googleapis.com/css?family=Montserrat',
'Open Sans': 'https://fonts.googleapis.com/css?family=Open+Sans'
}
}
},
});
// add custom fonts options on editor's font list
editor.on('load', () => {
let styleManager = editor.StyleManager;
let fontProperty = styleManager.getProperty('typography', 'font-family');
let list = [];
// empty list
fontProperty.set('list', list);
// custom list
list.push(fontProperty.addOption({value: 'Montserrat, sans-serif', name: 'Montserrat'}));
list.push(fontProperty.addOption({value: 'Open Sans, sans-serif', name: 'Open Sans'}));
fontProperty.set('list', list);
styleManager.render();
});
Development
Clone the repository
$ git clone https://github.com/artf/grapesjs-baml.git
$ cd grapesjs-baml
Install it
$ npm i
Start the dev server
$ npm start
Releasing
1) Run npm run v:patch
to bump the version in package.json and create a git tag
2) Push the commit + new tag
3) Go to github and draft a new release
4) Select the new tag and add some release notes
5) Hit publish, the release will automatically publish to npm
License
BSD 3-Clause