import grapesjs from 'grapesjs';
import pluginForms from 'grapesjs-plugin-forms';
import grapesSwiperSlider from 'grapesjs-swiper-slider';
import grapesjsCustomCode from 'grapesjs-custom-code';
import grapesjsCountdown from 'grapesjs-component-countdown';
import commands from './commands';
import blocks from './blocks';
import components from './components';
import panels from './panels';
import styles from './styles';
export default grapesjs.plugins.add('gjs-preset-webpage', (editor, opts = {}) => {
let config = opts;
let defaults = {
// Default Countdown
// Countdown class prefix
countdownClsPfx: 'countdown',
// Default CodeEditor
sourceEdit: 1,
sourceEditBtnLabel: 'Save Edit',
sourceEditModalTitle: 'Edit code',
// Which blocks to add
blocks: ['column1', 'column2', 'column3', 'column4-8', 'link-block','button-link-block','icon-block', 'custom-code', 'quote', 'text-basic', 'image', 'video'],
// Modal import title
modalImportTitle: 'Import',
// Modal import button text
modalImportButton: 'Import',
// Import description inside import modal
modalImportLabel: '',
// Default content to setup on import model open.
// Could also be a function with a dynamic content return (must be a string)
// eg. modalImportContent: editor => editor.getHtml(),
modalImportContent: '',
// Code viewer (eg. CodeMirror) options
importViewerOptions: {},
// Confirm text before cleaning the canvas
textCleanCanvas: 'Are you sure to clean the canvas?',
// Show the Style Manager on component change
showStylesOnChange: 1,
// Text for Background sector in Style Manager
textBackground: 'Background',
// Text for Border & Shadow sector in Style Manager
textBorderAndShadow: 'Border & Shadow',
textBorder: 'Border',
// Text for General sector in Style Manager
textGeneral: 'General',
// Text for Layout sector in Style Manager
textLayout: 'Layout',
// Text for Typography sector in Style Manager
textTypography: 'Typography',
// Text for Decorations sector in Style Manager
textDecorations: 'Decorations',
// Text for Extra sector in Style Manager
textExtra: 'Extra',
// Use custom set of sectors for the Style Manager
customStyleManager: [],
// `grapesjs-component-countdown` plugin options
// By setting this option to `false` will avoid loading the plugin
countdownOpts: {},
// `grapesjs-plugin-forms` plugin options
// By setting this option to `false` will avoid loading the plugin
formsOpts: {},
SwiperSlider: {
slideEls: `
<div class="swiper-slide"><img src="https://i.ibb.co/x3bdd4y/1.png" alt="banner-1" border="0"></div>
<div class="swiper-slide"><img src="https://i.ibb.co/0mNNdd9/2.png" alt="banner-2" border="0"></div>
<div class="swiper-slide"><img src="https://i.ibb.co/PwtHQrH/3.png" alt="banner-3" border="0"></div>
<div class="swiper-slide"><img src="https://i.ibb.co/sCCgF9s/4.png" alt="banner-4" border="0"></div>
<div class="swiper-slide"><img src="https://i.ibb.co/2gBjgbh/5.png" alt="banner-5" border="0"></div>
<div class="swiper-slide"><img src="https://i.ibb.co/MCYKL52/6.png" alt="banner-6" border="0"></div>
`,
},
customCodeOpts: {},
};
// Load defaults
for (let name in defaults) {
if (!(name in config))
config[name] = defaults[name];
}
const {
formsOpts,
customCodeOpts,
SwiperSlider
} = config;
// Load plugins
formsOpts && pluginForms(editor, formsOpts);
grapesjsCustomCode(editor, customCodeOpts);
grapesSwiperSlider(editor, SwiperSlider);
grapesjsCountdown(editor, {});
// Load blocks
blocks(editor, config);
// Load commands
commands(editor, config);
// Load components
components(editor, config);
// Load panels
panels(editor, config);
// Load styles
styles(editor, config);
});