0.5.7 • Published 2 years ago

grapesjs-baml-core v0.5.7

Weekly downloads
-
License
BSD-3-Clause
Repository
github
Last release
2 years ago

GrapesJS baml

Requires GrapesJS v0.15.9 or higher

build

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.

Demo

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

OptionDescriptionDefault
fontsCustom fonts on exported HTML header more info{}
importPlaceholderImport placeholder baml''
imagePlaceholderSrcImage placeholder source'https://via.placeholder.com/350x250/78c5d6/fff'
i18nI18n object containing language more info{}
overwriteExportOverwrite default export commandtrue
preMjmlString before the baml in export code''
postMjmlString after the baml in export code''
resetBlocksClean all previous blocks if truetrue
resetDevicesClean all previous devices and set a new one for mobiletrue,
resetStyleManagerReset the Style Manager and add new properties for bamltrue,

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