mirror of https://github.com/artf/grapesjs.git
18 changed files with 2948 additions and 6 deletions
@ -0,0 +1,39 @@ |
|||
// This script uses documentation to generate API Reference files
|
|||
const path = require('path'); |
|||
const exec = require('child_process').exec; |
|||
const docRoot = __dirname; |
|||
const srcRoot = path.join(docRoot, '../src/'); |
|||
const binRoot = path.join(docRoot, '../node_modules/.bin/'); |
|||
const cmds = [ |
|||
['editor/index.js', 'editor.md'], |
|||
['asset_manager/index.js', 'assets.md'], |
|||
['commands/index.js', 'commands.md'], |
|||
['dom_components/index.js', 'components.md'], |
|||
['panels/index.js', 'panels.md'], |
|||
['style_manager/index.js', 'style_manager.md'], |
|||
['storage_manager/index.js', 'storage_manager.md'], |
|||
['device_manager/index.js', 'device_manager.md'], |
|||
['block_manager/index.js', 'block_manager.md'], |
|||
['selector_manager/index.js', 'selector_manager.md'], |
|||
['css_composer/index.js', 'css_composer.md'], |
|||
['modal_dialog/index.js', 'modal_dialog.md'], |
|||
['rich_text_editor/index.js', 'rich_text_editor.md'], |
|||
['keymaps/index.js', 'keymaps.md'], |
|||
['undo_manager/index.js', 'undo_manager.md'], |
|||
].map(entry => |
|||
`${binRoot}documentation build ${srcRoot}/${entry[0]} -o ${docRoot}/api/${entry[1]} -f md --shallow --markdown-toc false`) |
|||
.join(' && '); |
|||
|
|||
console.log('Start API Reference generation...'); |
|||
exec(cmds, (error, stdout, stderr) => { |
|||
if (error) { |
|||
console.error( 'Failed to update API Reference: ', error); |
|||
return; |
|||
} |
|||
|
|||
stdout.trim().split('\n').forEach(function (line) { |
|||
console.info(line); |
|||
}); |
|||
|
|||
console.log('API Reference generation done!'); |
|||
}); |
|||
@ -1,3 +1,261 @@ |
|||
# Assets |
|||
<!-- Generated by documentation.js. Update this documentation by updating the source code. --> |
|||
|
|||
Assets API |
|||
## AssetManager |
|||
|
|||
- [add][1] |
|||
- [get][2] |
|||
- [getAll][3] |
|||
- [getAllVisible][4] |
|||
- [remove][5] |
|||
- [getContainer][6] |
|||
- [getAssetsEl][7] |
|||
- [addType][8] |
|||
- [getType][9] |
|||
- [getTypes][10] |
|||
- [store][11] |
|||
- [load][12] |
|||
|
|||
Before using this methods you should get first the module from the editor instance, in this way: |
|||
|
|||
```js |
|||
var assetManager = editor.AssetManager; |
|||
``` |
|||
|
|||
### Parameters |
|||
|
|||
- `config` **[Object][13]** Configurations |
|||
- `config.assets` **[Array][14]<[Object][13]>** Default assets (optional, default `[]`) |
|||
- `config.uploadText` **[String][15]** Upload text (optional, default `'Drop files here or click to upload'`) |
|||
- `config.addBtnText` **[String][15]** Text for the add button (optional, default `'Add image'`) |
|||
- `config.upload` **[String][15]** Where to send upload data. Expects as return a JSON with asset/s object |
|||
as: {data: [{src:'...'}, {src:'...'}]} (optional, default `''`) |
|||
|
|||
### Examples |
|||
|
|||
```javascript |
|||
... |
|||
{ |
|||
assets: [ |
|||
{src:'path/to/image.png'}, |
|||
... |
|||
], |
|||
upload: 'http://dropbox/path', // Set to false to disable it |
|||
uploadText: 'Drop files here or click to upload', |
|||
} |
|||
``` |
|||
|
|||
Returns **this** |
|||
|
|||
## add |
|||
|
|||
Add new asset/s to the collection. URLs are supposed to be unique |
|||
|
|||
### Parameters |
|||
|
|||
- `asset` **([string][15] \| [Object][13] \| [Array][14]<[string][15]> | [Array][14]<[Object][13]>)** URL strings or an objects representing the resource. |
|||
- `opts` **[Object][13]?** Options (optional, default `{}`) |
|||
|
|||
### Examples |
|||
|
|||
```javascript |
|||
// In case of strings, would be interpreted as images |
|||
assetManager.add('http://img.jpg'); |
|||
assetManager.add(['http://img.jpg', './path/to/img.png']); |
|||
|
|||
// Using objects you could indicate the type and other meta informations |
|||
assetManager.add({ |
|||
src: 'http://img.jpg', |
|||
//type: 'image', //image is default |
|||
height: 300, |
|||
width: 200, |
|||
}); |
|||
assetManager.add([{ |
|||
src: 'http://img.jpg', |
|||
},{ |
|||
src: './path/to/img.png', |
|||
}]); |
|||
``` |
|||
|
|||
Returns **Model** |
|||
|
|||
## get |
|||
|
|||
Returns the asset by URL |
|||
|
|||
### Parameters |
|||
|
|||
- `src` **[string][15]** URL of the asset |
|||
|
|||
### Examples |
|||
|
|||
```javascript |
|||
var asset = assetManager.get('http://img.jpg'); |
|||
``` |
|||
|
|||
Returns **[Object][13]** Object representing the asset |
|||
|
|||
## getAll |
|||
|
|||
Return the global collection, containing all the assets |
|||
|
|||
Returns **Collection** |
|||
|
|||
## getAllVisible |
|||
|
|||
Return the visible collection, which containes assets actually rendered |
|||
|
|||
Returns **Collection** |
|||
|
|||
## remove |
|||
|
|||
Remove the asset by its URL |
|||
|
|||
### Parameters |
|||
|
|||
- `src` **[string][15]** URL of the asset |
|||
|
|||
### Examples |
|||
|
|||
```javascript |
|||
assetManager.remove('http://img.jpg'); |
|||
``` |
|||
|
|||
Returns **this** |
|||
|
|||
## store |
|||
|
|||
Store assets data to the selected storage |
|||
|
|||
### Parameters |
|||
|
|||
- `noStore` **[Boolean][16]** If true, won't store |
|||
|
|||
### Examples |
|||
|
|||
```javascript |
|||
var assets = assetManager.store(); |
|||
``` |
|||
|
|||
Returns **[Object][13]** Data to store |
|||
|
|||
## load |
|||
|
|||
Load data from the passed object. |
|||
The fetched data will be added to the collection. |
|||
|
|||
### Parameters |
|||
|
|||
- `data` **[Object][13]** Object of data to load (optional, default `{}`) |
|||
|
|||
### Examples |
|||
|
|||
```javascript |
|||
var assets = assetManager.load({ |
|||
assets: [...] |
|||
}) |
|||
``` |
|||
|
|||
Returns **[Object][13]** Loaded assets |
|||
|
|||
## getContainer |
|||
|
|||
Return the Asset Manager Container |
|||
|
|||
Returns **[HTMLElement][17]** |
|||
|
|||
## getAssetsEl |
|||
|
|||
Get assets element container |
|||
|
|||
Returns **[HTMLElement][17]** |
|||
|
|||
## render |
|||
|
|||
Render assets |
|||
|
|||
### Parameters |
|||
|
|||
- `assets` **[array][14]** Assets to render, without the argument will render |
|||
all global assets |
|||
|
|||
### Examples |
|||
|
|||
```javascript |
|||
// Render all assets |
|||
assetManager.render(); |
|||
|
|||
// Render some of the assets |
|||
const assets = assetManager.getAll(); |
|||
assetManager.render(assets.filter( |
|||
asset => asset.get('category') == 'cats' |
|||
)); |
|||
``` |
|||
|
|||
Returns **[HTMLElement][17]** |
|||
|
|||
## addType |
|||
|
|||
Add new type |
|||
|
|||
### Parameters |
|||
|
|||
- `id` **[string][15]** Type ID |
|||
- `definition` **[Object][13]** Definition of the type. Each definition contains |
|||
`model` (business logic), `view` (presentation logic) |
|||
and `isType` function which recognize the type of the |
|||
passed entity |
|||
addType('my-type', { |
|||
model: {}, |
|||
view: {}, |
|||
isType: (value) => {}, |
|||
}) |
|||
|
|||
## getType |
|||
|
|||
Get type |
|||
|
|||
### Parameters |
|||
|
|||
- `id` **[string][15]** Type ID |
|||
|
|||
Returns **[Object][13]** Type definition |
|||
|
|||
## getTypes |
|||
|
|||
Get types |
|||
|
|||
Returns **[Array][14]** |
|||
|
|||
[1]: #add |
|||
|
|||
[2]: #get |
|||
|
|||
[3]: #getall |
|||
|
|||
[4]: #getallvisible |
|||
|
|||
[5]: #remove |
|||
|
|||
[6]: #getcontainer |
|||
|
|||
[7]: #getassetsel |
|||
|
|||
[8]: #addtype |
|||
|
|||
[9]: #gettype |
|||
|
|||
[10]: #gettypes |
|||
|
|||
[11]: #store |
|||
|
|||
[12]: #load |
|||
|
|||
[13]: https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object |
|||
|
|||
[14]: https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Array |
|||
|
|||
[15]: https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String |
|||
|
|||
[16]: https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Boolean |
|||
|
|||
[17]: https://developer.mozilla.org/docs/Web/HTML/Element |
|||
|
|||
@ -0,0 +1,191 @@ |
|||
<!-- Generated by documentation.js. Update this documentation by updating the source code. --> |
|||
|
|||
## BlockManager |
|||
|
|||
- [add][1] |
|||
- [get][2] |
|||
- [getAll][3] |
|||
- [getAllVisible][4] |
|||
- [getCategories][5] |
|||
- [getContainer][6] |
|||
- [render][7] |
|||
|
|||
Block manager helps managing various, draggable, piece of contents that could be easily reused inside templates. |
|||
|
|||
Before using methods you should get first the module from the editor instance, in this way: |
|||
|
|||
```js |
|||
var blockManager = editor.BlockManager; |
|||
``` |
|||
|
|||
### Parameters |
|||
|
|||
- `config` **[Object][8]** Configurations |
|||
- `config.blocks` **[Array][9]<[Object][8]>** Default blocks (optional, default `[]`) |
|||
|
|||
### Examples |
|||
|
|||
```javascript |
|||
... |
|||
{ |
|||
blocks: [ |
|||
{id:'h1-block' label: 'Heading', content:'<h1>...</h1>'}, |
|||
... |
|||
], |
|||
} |
|||
... |
|||
``` |
|||
|
|||
## getConfig |
|||
|
|||
Get configuration object |
|||
|
|||
Returns **[Object][8]** |
|||
|
|||
## onLoad |
|||
|
|||
Load default blocks if the collection is empty |
|||
|
|||
## add |
|||
|
|||
Add new block to the collection. |
|||
|
|||
### Parameters |
|||
|
|||
- `id` **[string][10]** Block id |
|||
- `opts` **[Object][8]** Options |
|||
- `opts.label` **[string][10]** Name of the block |
|||
- `opts.content` **[string][10]** HTML content |
|||
- `opts.category` **([string][10] \| [Object][8])** Group the block inside a catgegory. |
|||
You should pass objects with id property, eg: |
|||
{id: 'some-uid', label: 'My category'} |
|||
The string will be converted in: |
|||
'someid' => {id: 'someid', label: 'someid'} |
|||
- `opts.attributes` **[Object][8]** Block attributes (optional, default `{}`) |
|||
|
|||
### Examples |
|||
|
|||
```javascript |
|||
blockManager.add('h1-block', { |
|||
label: 'Heading', |
|||
content: '<h1>Put your title here</h1>', |
|||
category: 'Basic', |
|||
attributes: { |
|||
title: 'Insert h1 block' |
|||
} |
|||
}); |
|||
``` |
|||
|
|||
Returns **Block** Added block |
|||
|
|||
## get |
|||
|
|||
Return the block by id |
|||
|
|||
### Parameters |
|||
|
|||
- `id` **[string][10]** Block id |
|||
|
|||
### Examples |
|||
|
|||
```javascript |
|||
const block = blockManager.get('h1-block'); |
|||
console.log(JSON.stringify(block)); |
|||
// {label: 'Heading', content: '<h1>Put your ...', ...} |
|||
``` |
|||
|
|||
## getAll |
|||
|
|||
Return all blocks |
|||
|
|||
### Examples |
|||
|
|||
```javascript |
|||
const blocks = blockManager.getAll(); |
|||
console.log(JSON.stringify(blocks)); |
|||
// [{label: 'Heading', content: '<h1>Put your ...'}, ...] |
|||
``` |
|||
|
|||
Returns **Collection** |
|||
|
|||
## getAllVisible |
|||
|
|||
Return the visible collection, which containes blocks actually rendered |
|||
|
|||
Returns **Collection** |
|||
|
|||
## remove |
|||
|
|||
Remove a block by id |
|||
|
|||
### Parameters |
|||
|
|||
- `id` **[string][10]** Block id |
|||
|
|||
Returns **Block** Removed block |
|||
|
|||
## getCategories |
|||
|
|||
Get all available categories. |
|||
It's possible to add categories only within blocks via 'add()' method |
|||
|
|||
Returns **([Array][9] | Collection)** |
|||
|
|||
## getContainer |
|||
|
|||
Return the Blocks container element |
|||
|
|||
Returns **[HTMLElement][11]** |
|||
|
|||
## render |
|||
|
|||
Render blocks |
|||
|
|||
### Parameters |
|||
|
|||
- `blocks` **[Array][9]** Blocks to render, without the argument will render |
|||
all global blocks |
|||
|
|||
### Examples |
|||
|
|||
```javascript |
|||
// Render all blocks (inside the global collection) |
|||
blockManager.render(); |
|||
|
|||
// Render new set of blocks |
|||
const blocks = blockManager.getAll(); |
|||
blockManager.render(blocks.filter( |
|||
block => block.get('category') == 'sections' |
|||
)); |
|||
// Or a new set from an array |
|||
blockManager.render([ |
|||
{label: 'Label text', content: '<div>Content</div>'} |
|||
]); |
|||
|
|||
// Back to blocks from the global collection |
|||
blockManager.render(); |
|||
``` |
|||
|
|||
Returns **[HTMLElement][11]** Rendered element |
|||
|
|||
[1]: #add |
|||
|
|||
[2]: #get |
|||
|
|||
[3]: #getall |
|||
|
|||
[4]: #getallvisible |
|||
|
|||
[5]: #getcategories |
|||
|
|||
[6]: #getcontainer |
|||
|
|||
[7]: #render |
|||
|
|||
[8]: https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object |
|||
|
|||
[9]: https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Array |
|||
|
|||
[10]: https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String |
|||
|
|||
[11]: https://developer.mozilla.org/docs/Web/HTML/Element |
|||
@ -0,0 +1,116 @@ |
|||
<!-- Generated by documentation.js. Update this documentation by updating the source code. --> |
|||
|
|||
## Commands |
|||
|
|||
- [add][1] |
|||
- [get][2] |
|||
- [has][3] |
|||
|
|||
You can init the editor with all necessary commands via configuration |
|||
|
|||
```js |
|||
var editor = grapesjs.init({ |
|||
... |
|||
commands: {...} // Check below for the properties |
|||
... |
|||
}); |
|||
``` |
|||
|
|||
Before using methods you should get first the module from the editor instance, in this way: |
|||
|
|||
```js |
|||
var commands = editor.Commands; |
|||
``` |
|||
|
|||
### Parameters |
|||
|
|||
- `config` **[Object][4]** Configurations |
|||
- `config.defaults` **[Array][5]<[Object][4]>** Array of possible commands (optional, default `[]`) |
|||
|
|||
### Examples |
|||
|
|||
```javascript |
|||
... |
|||
commands: { |
|||
defaults: [{ |
|||
id: 'helloWorld', |
|||
run: function(editor, sender){ |
|||
alert('Hello world!'); |
|||
}, |
|||
stop: function(editor, sender){ |
|||
alert('Stop!'); |
|||
}, |
|||
}], |
|||
}, |
|||
... |
|||
``` |
|||
|
|||
## add |
|||
|
|||
Add new command to the collection |
|||
|
|||
### Parameters |
|||
|
|||
- `id` **[string][6]** Command's ID |
|||
- `command` **([Object][4] \| [Function][7])** Object representing your command, |
|||
By passing just a function it's intended as a stateless command |
|||
(just like passing an object with only `run` method). |
|||
|
|||
### Examples |
|||
|
|||
```javascript |
|||
commands.add('myCommand', { |
|||
run(editor, sender) { |
|||
alert('Hello world!'); |
|||
}, |
|||
stop(editor, sender) { |
|||
}, |
|||
}); |
|||
// As a function |
|||
commands.add('myCommand2', editor => { ... }); |
|||
``` |
|||
|
|||
Returns **this** |
|||
|
|||
## get |
|||
|
|||
Get command by ID |
|||
|
|||
### Parameters |
|||
|
|||
- `id` **[string][6]** Command's ID |
|||
|
|||
### Examples |
|||
|
|||
```javascript |
|||
var myCommand = commands.get('myCommand'); |
|||
myCommand.run(); |
|||
``` |
|||
|
|||
Returns **[Object][4]** Object representing the command |
|||
|
|||
## has |
|||
|
|||
Check if command exists |
|||
|
|||
### Parameters |
|||
|
|||
- `id` **[string][6]** Command's ID |
|||
|
|||
Returns **[Boolean][8]** |
|||
|
|||
[1]: #add |
|||
|
|||
[2]: #get |
|||
|
|||
[3]: #has |
|||
|
|||
[4]: https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object |
|||
|
|||
[5]: https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Array |
|||
|
|||
[6]: https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String |
|||
|
|||
[7]: https://developer.mozilla.org/docs/Web/JavaScript/Reference/Statements/function |
|||
|
|||
[8]: https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Boolean |
|||
@ -0,0 +1,187 @@ |
|||
<!-- Generated by documentation.js. Update this documentation by updating the source code. --> |
|||
|
|||
## DomComponents |
|||
|
|||
- [getWrapper][1] |
|||
- [getComponents][2] |
|||
- [addComponent][3] |
|||
- [clear][4] |
|||
- [load][5] |
|||
- [store][6] |
|||
- [render][7] |
|||
|
|||
With this module is possible to manage components inside the canvas. |
|||
Before using methods you should get first the module from the editor instance, in this way: |
|||
|
|||
```js |
|||
var domComponents = editor.DomComponents; |
|||
``` |
|||
|
|||
### Parameters |
|||
|
|||
- `config` **[Object][8]** Configurations |
|||
- `config.components` **([string][9] \| [Array][10]<[Object][8]>)** HTML string or an array of possible components (optional, default `[]`) |
|||
|
|||
### Examples |
|||
|
|||
```javascript |
|||
... |
|||
domComponents: { |
|||
components: '<div>Hello world!</div>', |
|||
} |
|||
// Or |
|||
domComponents: { |
|||
components: [ |
|||
{ tagName: 'span', style: {color: 'red'}, content: 'Hello'}, |
|||
{ style: {width: '100px', content: 'world!'}} |
|||
], |
|||
} |
|||
... |
|||
``` |
|||
|
|||
## load |
|||
|
|||
Load components from the passed object, if the object is empty will try to fetch them |
|||
autonomously from the selected storage |
|||
The fetched data will be added to the collection |
|||
|
|||
### Parameters |
|||
|
|||
- `data` **[Object][8]** Object of data to load (optional, default `''`) |
|||
|
|||
Returns **[Object][8]** Loaded data |
|||
|
|||
## store |
|||
|
|||
Store components on the selected storage |
|||
|
|||
### Parameters |
|||
|
|||
- `noStore` **[Boolean][11]** If true, won't store |
|||
|
|||
Returns **[Object][8]** Data to store |
|||
|
|||
## getWrapper |
|||
|
|||
Returns root component inside the canvas. Something like <body> inside HTML page |
|||
The wrapper doesn't differ from the original Component Model |
|||
|
|||
### Examples |
|||
|
|||
```javascript |
|||
// Change background of the wrapper and set some attribute |
|||
var wrapper = domComponents.getWrapper(); |
|||
wrapper.set('style', {'background-color': 'red'}); |
|||
wrapper.set('attributes', {'title': 'Hello!'}); |
|||
``` |
|||
|
|||
Returns **Component** Root Component |
|||
|
|||
## getComponents |
|||
|
|||
Returns wrapper's children collection. Once you have the collection you can |
|||
add other Components(Models) inside. Each component can have several nested |
|||
components inside and you can nest them as more as you wish. |
|||
|
|||
### Examples |
|||
|
|||
```javascript |
|||
// Let's add some component |
|||
var wrapperChildren = domComponents.getComponents(); |
|||
var comp1 = wrapperChildren.add({ |
|||
style: { 'background-color': 'red'} |
|||
}); |
|||
var comp2 = wrapperChildren.add({ |
|||
tagName: 'span', |
|||
attributes: { title: 'Hello!'} |
|||
}); |
|||
// Now let's add an other one inside first component |
|||
// First we have to get the collection inside. Each |
|||
// component has 'components' property |
|||
var comp1Children = comp1.get('components'); |
|||
// Procede as before. You could also add multiple objects |
|||
comp1Children.add([ |
|||
{ style: { 'background-color': 'blue'}}, |
|||
{ style: { height: '100px', width: '100px'}} |
|||
]); |
|||
// Remove comp2 |
|||
wrapperChildren.remove(comp2); |
|||
``` |
|||
|
|||
Returns **Components** Collection of components |
|||
|
|||
## addComponent |
|||
|
|||
Add new components to the wrapper's children. It's the same |
|||
as 'domComponents.getComponents().add(...)' |
|||
|
|||
### Parameters |
|||
|
|||
- `component` **([Object][8] | Component | [Array][10]<[Object][8]>)** Component/s to add |
|||
- `component.tagName` **[string][9]** Tag name (optional, default `'div'`) |
|||
- `component.type` **[string][9]** Type of the component. Available: ''(default), 'text', 'image' (optional, default `''`) |
|||
- `component.removable` **[boolean][11]** If component is removable (optional, default `true`) |
|||
- `component.draggable` **[boolean][11]** If is possible to move the component around the structure (optional, default `true`) |
|||
- `component.droppable` **[boolean][11]** If is possible to drop inside other components (optional, default `true`) |
|||
- `component.badgable` **[boolean][11]** If the badge is visible when the component is selected (optional, default `true`) |
|||
- `component.stylable` **[boolean][11]** If is possible to style component (optional, default `true`) |
|||
- `component.copyable` **[boolean][11]** If is possible to copy&paste the component (optional, default `true`) |
|||
- `component.content` **[string][9]** String inside component (optional, default `''`) |
|||
- `component.style` **[Object][8]** Style object (optional, default `{}`) |
|||
- `component.attributes` **[Object][8]** Attribute object (optional, default `{}`) |
|||
|
|||
### Examples |
|||
|
|||
```javascript |
|||
// Example of a new component with some extra property |
|||
var comp1 = domComponents.addComponent({ |
|||
tagName: 'div', |
|||
removable: true, // Can't remove it |
|||
draggable: true, // Can't move it |
|||
copyable: true, // Disable copy/past |
|||
content: 'Content text', // Text inside component |
|||
style: { color: 'red'}, |
|||
attributes: { title: 'here' } |
|||
}); |
|||
``` |
|||
|
|||
Returns **(Component | [Array][10]<Component>)** Component/s added |
|||
|
|||
## render |
|||
|
|||
Render and returns wrapper element with all components inside. |
|||
Once the wrapper is rendered, and it's what happens when you init the editor, |
|||
the all new components will be added automatically and property changes are all |
|||
updated immediately |
|||
|
|||
Returns **[HTMLElement][12]** |
|||
|
|||
## clear |
|||
|
|||
Remove all components |
|||
|
|||
Returns **this** |
|||
|
|||
[1]: #getwrapper |
|||
|
|||
[2]: #getcomponents |
|||
|
|||
[3]: #addcomponent |
|||
|
|||
[4]: #clear |
|||
|
|||
[5]: #load |
|||
|
|||
[6]: #store |
|||
|
|||
[7]: #render |
|||
|
|||
[8]: https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object |
|||
|
|||
[9]: https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String |
|||
|
|||
[10]: https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Array |
|||
|
|||
[11]: https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Boolean |
|||
|
|||
[12]: https://developer.mozilla.org/docs/Web/HTML/Element |
|||
@ -0,0 +1,199 @@ |
|||
<!-- Generated by documentation.js. Update this documentation by updating the source code. --> |
|||
|
|||
## CssComposer |
|||
|
|||
This module contains and manage CSS rules for the template inside the canvas |
|||
Before using the methods you should get first the module from the editor instance, in this way: |
|||
|
|||
```js |
|||
var cssComposer = editor.CssComposer; |
|||
``` |
|||
|
|||
### Parameters |
|||
|
|||
- `config` **[Object][1]** Configurations |
|||
- `config.rules` **([string][2] \| [Array][3]<[Object][1]>)** CSS string or an array of rule objects (optional, default `[]`) |
|||
|
|||
### Examples |
|||
|
|||
```javascript |
|||
... |
|||
CssComposer: { |
|||
rules: '.myClass{ color: red}', |
|||
} |
|||
``` |
|||
|
|||
## load |
|||
|
|||
Load data from the passed object, if the object is empty will try to fetch them |
|||
autonomously from the storage manager. |
|||
The fetched data will be added to the collection |
|||
|
|||
### Parameters |
|||
|
|||
- `data` **[Object][1]** Object of data to load |
|||
|
|||
Returns **[Object][1]** Loaded rules |
|||
|
|||
## store |
|||
|
|||
Store data to the selected storage |
|||
|
|||
### Parameters |
|||
|
|||
- `noStore` **[Boolean][4]** If true, won't store |
|||
|
|||
Returns **[Object][1]** Data to store |
|||
|
|||
## add |
|||
|
|||
Add new rule to the collection, if not yet exists with the same selectors |
|||
|
|||
### Parameters |
|||
|
|||
- `selectors` **[Array][3]<Selector>** Array of selectors |
|||
- `state` **[String][2]** Css rule state |
|||
- `width` **[String][2]** For which device this style is oriented |
|||
- `opts` **[Object][1]** Other options for the rule (optional, default `{}`) |
|||
|
|||
### Examples |
|||
|
|||
```javascript |
|||
var sm = editor.SelectorManager; |
|||
var sel1 = sm.add('myClass1'); |
|||
var sel2 = sm.add('myClass2'); |
|||
var rule = cssComposer.add([sel1, sel2], 'hover'); |
|||
rule.set('style', { |
|||
width: '100px', |
|||
color: '#fff', |
|||
}); |
|||
``` |
|||
|
|||
Returns **Model** |
|||
|
|||
## get |
|||
|
|||
Get the rule |
|||
|
|||
### Parameters |
|||
|
|||
- `selectors` **[Array][3]<Selector>** Array of selectors |
|||
- `state` **[String][2]** Css rule state |
|||
- `width` **[String][2]** For which device this style is oriented |
|||
- `ruleProps` **[Object][1]** Other rule props |
|||
|
|||
### Examples |
|||
|
|||
```javascript |
|||
var sm = editor.SelectorManager; |
|||
var sel1 = sm.add('myClass1'); |
|||
var sel2 = sm.add('myClass2'); |
|||
var rule = cssComposer.get([sel1, sel2], 'hover'); |
|||
// Update the style |
|||
rule.set('style', { |
|||
width: '300px', |
|||
color: '#000', |
|||
}); |
|||
``` |
|||
|
|||
Returns **(Model | null)** |
|||
|
|||
## getAll |
|||
|
|||
Get the collection of rules |
|||
|
|||
Returns **Collection** |
|||
|
|||
## clear |
|||
|
|||
Remove all rules |
|||
|
|||
Returns **this** |
|||
|
|||
## setIdRule |
|||
|
|||
Add/update the CSS rule with id selector |
|||
|
|||
### Parameters |
|||
|
|||
- `name` **[string][2]** Id selector name, eg. 'my-id' |
|||
- `style` **[Object][1]** Style properties and values (optional, default `{}`) |
|||
- `opts` **[Object][1]** Custom options, like `state` and `mediaText` (optional, default `{}`) |
|||
|
|||
### Examples |
|||
|
|||
```javascript |
|||
const rule = cc.setIdRule('myid', { color: 'red' }); |
|||
const ruleHover = cc.setIdRule('myid', { color: 'blue' }, { state: 'hover' }); |
|||
// This will add current CSS: |
|||
// #myid { color: red } |
|||
// #myid:hover { color: blue } |
|||
``` |
|||
|
|||
Returns **CssRule** The new/updated rule |
|||
|
|||
## getIdRule |
|||
|
|||
Get the CSS rule by id selector |
|||
|
|||
### Parameters |
|||
|
|||
- `name` **[string][2]** Id selector name, eg. 'my-id' |
|||
- `opts` **[Object][1]** Custom options, like `state` and `mediaText` (optional, default `{}`) |
|||
|
|||
### Examples |
|||
|
|||
```javascript |
|||
const rule = cc.getIdRule('myid'); |
|||
const ruleHover = cc.setIdRule('myid', { state: 'hover' }); |
|||
``` |
|||
|
|||
Returns **CssRule** |
|||
|
|||
## setClassRule |
|||
|
|||
Add/update the CSS rule with class selector |
|||
|
|||
### Parameters |
|||
|
|||
- `name` **[string][2]** Class selector name, eg. 'my-class' |
|||
- `style` **[Object][1]** Style properties and values (optional, default `{}`) |
|||
- `opts` **[Object][1]** Custom options, like `state` and `mediaText` (optional, default `{}`) |
|||
|
|||
### Examples |
|||
|
|||
```javascript |
|||
const rule = cc.setClassRule('myclass', { color: 'red' }); |
|||
const ruleHover = cc.setClassRule('myclass', { color: 'blue' }, { state: 'hover' }); |
|||
// This will add current CSS: |
|||
// .myclass { color: red } |
|||
// .myclass:hover { color: blue } |
|||
``` |
|||
|
|||
Returns **CssRule** The new/updated rule |
|||
|
|||
## getClassRule |
|||
|
|||
Get the CSS rule by class selector |
|||
|
|||
### Parameters |
|||
|
|||
- `name` **[string][2]** Class selector name, eg. 'my-class' |
|||
- `opts` **[Object][1]** Custom options, like `state` and `mediaText` (optional, default `{}`) |
|||
|
|||
### Examples |
|||
|
|||
```javascript |
|||
const rule = cc.getClassRule('myclass'); |
|||
const ruleHover = cc.getClassRule('myclass', { state: 'hover' }); |
|||
``` |
|||
|
|||
Returns **CssRule** |
|||
|
|||
[1]: https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object |
|||
|
|||
[2]: https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String |
|||
|
|||
[3]: https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Array |
|||
|
|||
[4]: https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Boolean |
|||
@ -0,0 +1,65 @@ |
|||
<!-- Generated by documentation.js. Update this documentation by updating the source code. --> |
|||
|
|||
## DeviceManager |
|||
|
|||
Before using methods you should get first the module from the editor instance, in this way: |
|||
|
|||
```js |
|||
var deviceManager = editor.DeviceManager; |
|||
``` |
|||
|
|||
## add |
|||
|
|||
Add new device to the collection. URLs are supposed to be unique |
|||
|
|||
### Parameters |
|||
|
|||
- `name` **[string][1]** Device name |
|||
- `width` **[string][1]** Width of the device |
|||
- `opts` **[Object][2]** Custom options |
|||
|
|||
### Examples |
|||
|
|||
```javascript |
|||
deviceManager.add('Tablet', '900px'); |
|||
deviceManager.add('Tablet2', '900px', { |
|||
height: '300px', |
|||
widthMedia: '810px', // the width that will be used for the CSS media |
|||
}); |
|||
``` |
|||
|
|||
Returns **Device** Added device |
|||
|
|||
## get |
|||
|
|||
Return device by name |
|||
|
|||
### Parameters |
|||
|
|||
- `name` **[string][1]** Name of the device |
|||
|
|||
### Examples |
|||
|
|||
```javascript |
|||
var device = deviceManager.get('Tablet'); |
|||
console.log(JSON.stringify(device)); |
|||
// {name: 'Tablet', width: '900px'} |
|||
``` |
|||
|
|||
## getAll |
|||
|
|||
Return all devices |
|||
|
|||
### Examples |
|||
|
|||
```javascript |
|||
var devices = deviceManager.getAll(); |
|||
console.log(JSON.stringify(devices)); |
|||
// [{name: 'Desktop', width: ''}, ...] |
|||
``` |
|||
|
|||
Returns **Collection** |
|||
|
|||
[1]: https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String |
|||
|
|||
[2]: https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object |
|||
@ -1,3 +1,535 @@ |
|||
# Editor |
|||
<!-- Generated by documentation.js. Update this documentation by updating the source code. --> |
|||
|
|||
Editor API |
|||
## $ |
|||
|
|||
Editor class contains the top level API which you'll probably use to custom the editor or extend it with plugins. |
|||
You get the Editor instance on init method |
|||
|
|||
```js |
|||
var editor = grapesjs.init({...}); |
|||
``` |
|||
|
|||
# Available Events |
|||
|
|||
## Components |
|||
|
|||
- `component:add` - Triggered when a new component is added to the editor, the model is passed as an argument to the callback |
|||
- `component:remove` - Triggered when a component is removed, the model is passed as an argument to the callback |
|||
- `component:clone` - Triggered when a new component is added by a clone command, the model is passed as an argument to the callback |
|||
- `component:update` - Triggered when a component is updated (moved, styled, etc.), the model is passed as an argument to the callback |
|||
- `component:update:{propertyName}` - Listen any property change, the model is passed as an argument to the callback |
|||
- `component:styleUpdate` - Triggered when the style of the component is updated, the model is passed as an argument to the callback |
|||
- `component:styleUpdate:{propertyName}` - Listen for a specific style property change, the model is passed as an argument to the callback |
|||
- `component:selected` - New component selected, the selected model is passed as an argument to the callback |
|||
- `component:deselected` - Component deselected, the deselected model is passed as an argument to the callback |
|||
- `component:toggled` - Component selection changed, toggled model is passed as an argument to the callback |
|||
|
|||
## Blocks |
|||
|
|||
- `block:add` - New block added |
|||
- `block:remove` - Block removed |
|||
- `block:drag:start` - Started dragging block, model of the block is passed as an argument |
|||
- `block:drag` - Dragging block, the block's model and the drag event are passed as arguments |
|||
- `block:drag:stop` - Dragging of the block is stopped. As agruments for the callback you get, the dropped component model (if dropped successfully) and the model of the block |
|||
|
|||
## Assets |
|||
|
|||
- `asset:add` - New asset added |
|||
- `asset:remove` - Asset removed |
|||
- `asset:upload:start` - Before the upload is started |
|||
- `asset:upload:end` - After the upload is ended |
|||
- `asset:upload:error` - On any error in upload, passes the error as an argument |
|||
- `asset:upload:response` - On upload response, passes the result as an argument |
|||
|
|||
## Keymaps |
|||
|
|||
- `keymap:add` - New keymap added. The new keyamp object is passed as an argument |
|||
- `keymap:remove` - Keymap removed. The removed keyamp object is passed as an argument |
|||
- `keymap:emit` - Some keymap emitted, in arguments you get keymapId, shortcutUsed, Event |
|||
- `keymap:emit:{keymapId}` - `keymapId` emitted, in arguments you get keymapId, shortcutUsed, Event |
|||
|
|||
## Style Manager |
|||
|
|||
- `styleManager:change` - Triggered on style property change from new selected component, the view of the property is passed as an argument to the callback |
|||
- `styleManager:change:{propertyName}` - As above but for a specific style property |
|||
|
|||
## Storages |
|||
|
|||
- `storage:start` - Before the storage request is started |
|||
- `storage:start:store` - Before the store request. The object to store is passed as an argumnet (which you can edit) |
|||
- `storage:start:load` - Before the load request. Items to load are passed as an argumnet (which you can edit) |
|||
- `storage:load` - Triggered when something was loaded from the storage, loaded object passed as an argumnet |
|||
- `storage:store` - Triggered when something is stored to the storage, stored object passed as an argumnet |
|||
- `storage:end` - After the storage request is ended |
|||
- `storage:end:store` - After the store request |
|||
- `storage:end:load` - After the load request |
|||
- `storage:error` - On any error on storage request, passes the error as an argument |
|||
- `storage:error:store` - Error on store request, passes the error as an argument |
|||
- `storage:error:load` - Error on load request, passes the error as an argument |
|||
|
|||
## Canvas |
|||
|
|||
- `canvas:dragenter` - When something is dragged inside the canvas, `DataTransfer` instance passed as an argument |
|||
- `canvas:dragover` - When something is dragging on canvas, `DataTransfer` instance passed as an argument |
|||
- `canvas:drop` - Something is dropped in canvas, `DataTransfer` instance and the dropped model are passed as arguments |
|||
- `canvas:dragend` - When a drag operation is ended, `DataTransfer` instance passed as an argument |
|||
- `canvas:dragdata` - On any dataTransfer parse, `DataTransfer` instance and the `result` are passed as arguments. |
|||
By changing `result.content` you're able to customize what is dropped |
|||
|
|||
## Selectors |
|||
|
|||
- `selector:add` - Triggers when a new selector/class is created |
|||
|
|||
## RTE |
|||
|
|||
- `rte:enable` - RTE enabled. The view, on which RTE is enabled, is passed as an argument |
|||
- `rte:disable` - RTE disabled. The view, on which RTE is disabled, is passed as an argument |
|||
|
|||
## Commands |
|||
|
|||
- `run:{commandName}` - Triggered when some command is called to run (eg. editor.runCommand('preview')) |
|||
- `stop:{commandName}` - Triggered when some command is called to stop (eg. editor.stopCommand('preview')) |
|||
- `run:{commandName}:before` - Triggered before the command is called |
|||
- `stop:{commandName}:before` - Triggered before the command is called to stop |
|||
- `abort:{commandName}` - Triggered when the command execution is aborted (`editor.on(`run:preview:before`, opts => opts.abort = 1);`) |
|||
|
|||
## General |
|||
|
|||
- `canvasScroll` - Triggered when the canvas is scrolle |
|||
- `undo` - Undo executed |
|||
- `redo` - Redo executed |
|||
- `load` - When the editor is loaded |
|||
|
|||
### Parameters |
|||
|
|||
- `config` **[Object][1]** Configurations |
|||
- `config.container` **[string][2]** ='' Selector for the editor container, eg. '#myEditor' |
|||
- `config.components` **([string][2] \| [Array][3]<[Object][1]>)** HTML string or object of components (optional, default `''`) |
|||
- `config.style` **([string][2] \| [Array][3]<[Object][1]>)** CSS string or object of rules (optional, default `''`) |
|||
- `config.fromElement` **[Boolean][4]** If true, will fetch HTML and CSS from selected container (optional, default `false`) |
|||
- `config.undoManager` **[Boolean][4]** Enable/Disable undo manager (optional, default `true`) |
|||
- `config.autorender` **[Boolean][4]** If true renders editor on init (optional, default `true`) |
|||
- `config.noticeOnUnload` **[Boolean][4]** Enable/Disable alert message before unload the page (optional, default `true`) |
|||
- `config.height` **[string][2]** Height for the editor container (optional, default `'900px'`) |
|||
- `config.width` **[string][2]** Width for the editor container (optional, default `'100%'`) |
|||
- `config.storage` **[Object][1]** Storage manager configuration, see the relative documentation (optional, default `{}`) |
|||
- `config.styleManager` **[Object][1]** Style manager configuration, see the relative documentation (optional, default `{}`) |
|||
- `config.commands` **[Object][1]** Commands configuration, see the relative documentation (optional, default `{}`) |
|||
- `config.domComponents` **[Object][1]** Components configuration, see the relative documentation (optional, default `{}`) |
|||
- `config.panels` **[Object][1]** Panels configuration, see the relative documentation (optional, default `{}`) |
|||
- `config.showDevices` **[Object][1]** If true render a select of available devices inside style manager panel (optional, default `true`) |
|||
- `config.keepEmptyTextNodes` **[Boolean][4]** If false, removes empty text nodes when parsed (unless they contain a space) (optional, default `false`) |
|||
- `config.defaultCommand` **[string][2]** Command to execute when no other command is running (optional, default `'select-comp'`) |
|||
- `config.plugins` **[Array][3]** Array of plugins to execute on start (optional, default `[]`) |
|||
- `config.pluginsOpts` **[Object][1]** Custom options for plugins (optional, default `{}`) |
|||
|
|||
### Examples |
|||
|
|||
```javascript |
|||
var editor = grapesjs.init({ |
|||
container : '#gjs', |
|||
components: '<div class="txt-red">Hello world!</div>', |
|||
style: '.txt-red{color: red}', |
|||
}); |
|||
``` |
|||
|
|||
## AssetManager |
|||
|
|||
## getConfig |
|||
|
|||
Returns configuration object |
|||
|
|||
### Parameters |
|||
|
|||
- `prop` **[string][2]?** Property name |
|||
|
|||
Returns **any** Returns the configuration object or |
|||
the value of the specified property |
|||
|
|||
## getHtml |
|||
|
|||
Returns HTML built inside canvas |
|||
|
|||
### Parameters |
|||
|
|||
- `opts` |
|||
|
|||
Returns **[string][2]** HTML string |
|||
|
|||
## getCss |
|||
|
|||
Returns CSS built inside canvas |
|||
|
|||
### Parameters |
|||
|
|||
- `opts` **[Object][1]** Options (optional, default `{}`) |
|||
|
|||
Returns **[string][2]** CSS string |
|||
|
|||
## getJs |
|||
|
|||
Returns JS of all components |
|||
|
|||
Returns **[string][2]** JS string |
|||
|
|||
## getComponents |
|||
|
|||
Returns components in JSON format object |
|||
|
|||
Returns **[Object][1]** |
|||
|
|||
## setComponents |
|||
|
|||
Set components inside editor's canvas. This method overrides actual components |
|||
|
|||
### Parameters |
|||
|
|||
- `components` **([Array][3]<[Object][1]> | [Object][1] \| [string][2])** HTML string or components model |
|||
|
|||
### Examples |
|||
|
|||
```javascript |
|||
editor.setComponents('<div class="cls">New component</div>'); |
|||
// or |
|||
editor.setComponents({ |
|||
type: 'text', |
|||
classes:['cls'], |
|||
content: 'New component' |
|||
}); |
|||
``` |
|||
|
|||
Returns **this** |
|||
|
|||
## addComponents |
|||
|
|||
Add components |
|||
|
|||
### Parameters |
|||
|
|||
- `components` **([Array][3]<[Object][1]> | [Object][1] \| [string][2])** HTML string or components model |
|||
- `opts` **[Object][1]** Options |
|||
- `opts.avoidUpdateStyle` **[Boolean][4]** If the HTML string contains styles, |
|||
by default, they will be created and, if already exist, updated. When this option |
|||
is true, styles already created will not be updated. (optional, default `false`) |
|||
|
|||
### Examples |
|||
|
|||
```javascript |
|||
editor.addComponents('<div class="cls">New component</div>'); |
|||
// or |
|||
editor.addComponents({ |
|||
type: 'text', |
|||
classes:['cls'], |
|||
content: 'New component' |
|||
}); |
|||
``` |
|||
|
|||
Returns **(Model | [Array][3]<Model>)** |
|||
|
|||
## getStyle |
|||
|
|||
Returns style in JSON format object |
|||
|
|||
Returns **[Object][1]** |
|||
|
|||
## setStyle |
|||
|
|||
Set style inside editor's canvas. This method overrides actual style |
|||
|
|||
### Parameters |
|||
|
|||
- `style` **([Array][3]<[Object][1]> | [Object][1] \| [string][2])** CSS string or style model |
|||
|
|||
### Examples |
|||
|
|||
```javascript |
|||
editor.setStyle('.cls{color: red}'); |
|||
//or |
|||
editor.setStyle({ |
|||
selectors: ['cls'] |
|||
style: { color: 'red' } |
|||
}); |
|||
``` |
|||
|
|||
Returns **this** |
|||
|
|||
## getSelected |
|||
|
|||
Returns the last selected component, if there is one |
|||
|
|||
Returns **Model** |
|||
|
|||
## getSelectedAll |
|||
|
|||
Returns an array of all selected components |
|||
|
|||
Returns **[Array][3]** |
|||
|
|||
## getSelectedToStyle |
|||
|
|||
Get a stylable entity from the selected component. |
|||
If you select a component without classes the entity is the Component |
|||
itself and all changes will go inside its 'style' attribute. Otherwise, |
|||
if the selected component has one or more classes, the function will |
|||
return the corresponding CSS Rule |
|||
|
|||
Returns **Model** |
|||
|
|||
## select |
|||
|
|||
Select a component |
|||
|
|||
### Parameters |
|||
|
|||
- `el` **(Component | [HTMLElement][5])** Component to select |
|||
|
|||
### Examples |
|||
|
|||
```javascript |
|||
// Select dropped block |
|||
editor.on('block:drag:stop', function(model) { |
|||
editor.select(model); |
|||
}); |
|||
``` |
|||
|
|||
Returns **this** |
|||
|
|||
## selectAdd |
|||
|
|||
Add component to selection |
|||
|
|||
### Parameters |
|||
|
|||
- `el` **(Component | [HTMLElement][5] \| [Array][3])** Component to select |
|||
|
|||
### Examples |
|||
|
|||
```javascript |
|||
editor.selectAdd(model); |
|||
``` |
|||
|
|||
Returns **this** |
|||
|
|||
## selectRemove |
|||
|
|||
Remove component from selection |
|||
|
|||
### Parameters |
|||
|
|||
- `el` **(Component | [HTMLElement][5] \| [Array][3])** Component to select |
|||
|
|||
### Examples |
|||
|
|||
```javascript |
|||
editor.selectRemove(model); |
|||
``` |
|||
|
|||
Returns **this** |
|||
|
|||
## selectToggle |
|||
|
|||
Toggle component selection |
|||
|
|||
### Parameters |
|||
|
|||
- `el` **(Component | [HTMLElement][5] \| [Array][3])** Component to select |
|||
|
|||
### Examples |
|||
|
|||
```javascript |
|||
editor.selectToggle(model); |
|||
``` |
|||
|
|||
Returns **this** |
|||
|
|||
## setDevice |
|||
|
|||
Set device to the editor. If the device exists it will |
|||
change the canvas to the proper width |
|||
|
|||
### Parameters |
|||
|
|||
- `name` **[string][2]** Name of the device |
|||
|
|||
### Examples |
|||
|
|||
```javascript |
|||
editor.setDevice('Tablet'); |
|||
``` |
|||
|
|||
Returns **this** |
|||
|
|||
## getDevice |
|||
|
|||
Return the actual active device |
|||
|
|||
### Examples |
|||
|
|||
```javascript |
|||
var device = editor.getDevice(); |
|||
console.log(device); |
|||
// 'Tablet' |
|||
``` |
|||
|
|||
Returns **[string][2]** Device name |
|||
|
|||
## runCommand |
|||
|
|||
Execute command |
|||
|
|||
### Parameters |
|||
|
|||
- `id` **[string][2]** Command ID |
|||
- `options` **[Object][1]** Custom options (optional, default `{}`) |
|||
|
|||
### Examples |
|||
|
|||
```javascript |
|||
editor.runCommand('myCommand', {someValue: 1}); |
|||
``` |
|||
|
|||
Returns **any** The return is defined by the command |
|||
|
|||
## stopCommand |
|||
|
|||
Stop the command if stop method was provided |
|||
|
|||
### Parameters |
|||
|
|||
- `id` **[string][2]** Command ID |
|||
- `options` **[Object][1]** Custom options (optional, default `{}`) |
|||
|
|||
### Examples |
|||
|
|||
```javascript |
|||
editor.stopCommand('myCommand', {someValue: 1}); |
|||
``` |
|||
|
|||
Returns **any** The return is defined by the command |
|||
|
|||
## store |
|||
|
|||
Store data to the current storage |
|||
|
|||
### Parameters |
|||
|
|||
- `clb` **[Function][6]** Callback function |
|||
|
|||
Returns **[Object][1]** Stored data |
|||
|
|||
## load |
|||
|
|||
Load data from the current storage |
|||
|
|||
### Parameters |
|||
|
|||
- `clb` **[Function][6]** Callback function |
|||
|
|||
Returns **[Object][1]** Stored data |
|||
|
|||
## getContainer |
|||
|
|||
Returns container element. The one which was indicated as 'container' |
|||
on init method |
|||
|
|||
Returns **[HTMLElement][5]** |
|||
|
|||
## getDirtyCount |
|||
|
|||
Return the count of changes made to the content and not yet stored. |
|||
This count resets at any `store()` |
|||
|
|||
Returns **[number][7]** |
|||
|
|||
## setCustomRte |
|||
|
|||
Replace the built-in Rich Text Editor with a custom one. |
|||
|
|||
### Parameters |
|||
|
|||
- `obj` **[Object][1]** Custom RTE Interface |
|||
|
|||
### Examples |
|||
|
|||
```javascript |
|||
editor.setCustomRte({ |
|||
// Function for enabling custom RTE |
|||
// el is the HTMLElement of the double clicked Text Component |
|||
// rte is the same instance you have returned the first time you call |
|||
// enable(). This is useful if need to check if the RTE is already enabled so |
|||
// ion this case you'll need to return the RTE and the end of the function |
|||
enable: function(el, rte) { |
|||
rte = new MyCustomRte(el, {}); // this depends on the Custom RTE API |
|||
... |
|||
return rte; // return the RTE instance |
|||
}, |
|||
|
|||
// Disable the editor, called for example when you unfocus the Text Component |
|||
disable: function(el, rte) { |
|||
rte.blur(); // this depends on the Custom RTE API |
|||
} |
|||
|
|||
// Called when the Text Component is focused again. If you returned the RTE instance |
|||
// from the enable function, the enable won't be called again instead will call focus, |
|||
// in this case to avoid double binding of the editor |
|||
focus: function (el, rte) { |
|||
rte.focus(); // this depends on the Custom RTE API |
|||
} |
|||
}); |
|||
``` |
|||
|
|||
## on |
|||
|
|||
Attach event |
|||
|
|||
### Parameters |
|||
|
|||
- `event` **[string][2]** Event name |
|||
- `callback` **[Function][6]** Callback function |
|||
|
|||
Returns **this** |
|||
|
|||
## off |
|||
|
|||
Detach event |
|||
|
|||
### Parameters |
|||
|
|||
- `event` **[string][2]** Event name |
|||
- `callback` **[Function][6]** Callback function |
|||
|
|||
Returns **this** |
|||
|
|||
## trigger |
|||
|
|||
Trigger event |
|||
|
|||
### Parameters |
|||
|
|||
- `event` **[string][2]** Event to trigger |
|||
|
|||
Returns **this** |
|||
|
|||
## destroy |
|||
|
|||
Destroy the editor |
|||
|
|||
## render |
|||
|
|||
Render editor |
|||
|
|||
Returns **[HTMLElement][5]** |
|||
|
|||
[1]: https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object |
|||
|
|||
[2]: https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String |
|||
|
|||
[3]: https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Array |
|||
|
|||
[4]: https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Boolean |
|||
|
|||
[5]: https://developer.mozilla.org/docs/Web/HTML/Element |
|||
|
|||
[6]: https://developer.mozilla.org/docs/Web/JavaScript/Reference/Statements/function |
|||
|
|||
[7]: https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number |
|||
|
|||
@ -0,0 +1,99 @@ |
|||
<!-- Generated by documentation.js. Update this documentation by updating the source code. --> |
|||
|
|||
## isString |
|||
|
|||
This module allows to create shortcuts for functions and commands (via command id) |
|||
|
|||
You can access the module in this way |
|||
|
|||
```js |
|||
const keymaps = editor.Keymaps; |
|||
``` |
|||
|
|||
## getConfig |
|||
|
|||
Get module configurations |
|||
|
|||
Returns **[Object][1]** Configuration object |
|||
|
|||
## add |
|||
|
|||
Add new keymap |
|||
|
|||
### Parameters |
|||
|
|||
- `id` **[string][2]** Keymap id |
|||
- `keys` **[string][2]** Keymap keys, eg. `ctrl+a`, `⌘+z, ctrl+z` |
|||
- `handler` **([Function][3] \| [string][2])** Keymap handler, might be a function |
|||
|
|||
### Examples |
|||
|
|||
```javascript |
|||
// 'ns' is just a custom namespace |
|||
keymaps.add('ns:my-keymap', '⌘+j, ⌘+u, ctrl+j, alt+u', editor => { |
|||
console.log('do stuff'); |
|||
}); |
|||
// or |
|||
keymaps.add('ns:my-keymap', '⌘+s, ctrl+s', 'some-gjs-command'); |
|||
|
|||
// listen to events |
|||
editor.on('keymap:emit', (id, shortcut, e) => { |
|||
// ... |
|||
}) |
|||
``` |
|||
|
|||
Returns **[Object][1]** Added keymap |
|||
or just a command id as a string |
|||
|
|||
## get |
|||
|
|||
Get the keymap by id |
|||
|
|||
### Parameters |
|||
|
|||
- `id` **[string][2]** Keymap id |
|||
|
|||
### Examples |
|||
|
|||
```javascript |
|||
keymaps.get('ns:my-keymap'); |
|||
// -> {keys, handler}; |
|||
``` |
|||
|
|||
Returns **[Object][1]** Keymap object |
|||
|
|||
## getAll |
|||
|
|||
Get all keymaps |
|||
|
|||
### Examples |
|||
|
|||
```javascript |
|||
keymaps.getAll(); |
|||
// -> {id1: {}, id2: {}}; |
|||
``` |
|||
|
|||
Returns **[Object][1]** |
|||
|
|||
## remove |
|||
|
|||
Remove the keymap by id |
|||
|
|||
### Parameters |
|||
|
|||
- `id` **[string][2]** Keymap id |
|||
|
|||
### Examples |
|||
|
|||
```javascript |
|||
keymaps.remove('ns:my-keymap'); |
|||
// -> {keys, handler}; |
|||
``` |
|||
|
|||
Returns **[Object][1]** Removed keymap |
|||
|
|||
[1]: https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object |
|||
|
|||
[2]: https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String |
|||
|
|||
[3]: https://developer.mozilla.org/docs/Web/JavaScript/Reference/Statements/function |
|||
@ -0,0 +1,99 @@ |
|||
<!-- Generated by documentation.js. Update this documentation by updating the source code. --> |
|||
|
|||
## Modal |
|||
|
|||
- [open][1] |
|||
- [close][2] |
|||
- [isOpen][3] |
|||
- [setTitle][4] |
|||
- [getTitle][5] |
|||
- [setContent][6] |
|||
- [getContent][7] |
|||
|
|||
Before using the methods you should get first the module from the editor instance, in this way: |
|||
|
|||
```js |
|||
var modal = editor.Modal; |
|||
``` |
|||
|
|||
## open |
|||
|
|||
Open the modal window |
|||
|
|||
Returns **this** |
|||
|
|||
## close |
|||
|
|||
Close the modal window |
|||
|
|||
Returns **this** |
|||
|
|||
## isOpen |
|||
|
|||
Checks if the modal window is open |
|||
|
|||
Returns **[Boolean][8]** |
|||
|
|||
## setTitle |
|||
|
|||
Set the title to the modal window |
|||
|
|||
### Parameters |
|||
|
|||
- `title` **[string][9]** Title |
|||
|
|||
### Examples |
|||
|
|||
```javascript |
|||
modal.setTitle('New title'); |
|||
``` |
|||
|
|||
Returns **this** |
|||
|
|||
## getTitle |
|||
|
|||
Returns the title of the modal window |
|||
|
|||
Returns **[string][9]** |
|||
|
|||
## setContent |
|||
|
|||
Set the content of the modal window |
|||
|
|||
### Parameters |
|||
|
|||
- `content` **([string][9] \| [HTMLElement][10])** Content |
|||
|
|||
### Examples |
|||
|
|||
```javascript |
|||
modal.setContent('<div>Some HTML content</div>'); |
|||
``` |
|||
|
|||
Returns **this** |
|||
|
|||
## getContent |
|||
|
|||
Get the content of the modal window |
|||
|
|||
Returns **[string][9]** |
|||
|
|||
[1]: #open |
|||
|
|||
[2]: #close |
|||
|
|||
[3]: #isopen |
|||
|
|||
[4]: #settitle |
|||
|
|||
[5]: #gettitle |
|||
|
|||
[6]: #setcontent |
|||
|
|||
[7]: #getcontent |
|||
|
|||
[8]: https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Boolean |
|||
|
|||
[9]: https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String |
|||
|
|||
[10]: https://developer.mozilla.org/docs/Web/HTML/Element |
|||
@ -0,0 +1,240 @@ |
|||
<!-- Generated by documentation.js. Update this documentation by updating the source code. --> |
|||
|
|||
## Panels |
|||
|
|||
- [addPanel][1] |
|||
- [addButton][2] |
|||
- [removeButton][3] |
|||
- [getButton][4] |
|||
- [getPanel][5] |
|||
- [getPanels][6] |
|||
- [render][7] |
|||
|
|||
This module manages panels and buttons inside the editor. |
|||
You can init the editor with all panels and buttons necessary via configuration |
|||
|
|||
```js |
|||
var editor = grapesjs.init({ |
|||
... |
|||
panels: {...} // Check below for the possible properties |
|||
... |
|||
}); |
|||
``` |
|||
|
|||
Before using methods you should get first the module from the editor instance, in this way: |
|||
|
|||
```js |
|||
var panelManager = editor.Panels; |
|||
``` |
|||
|
|||
### Parameters |
|||
|
|||
- `config` **[Object][8]** Configurations |
|||
- `config.defaults` **[Array][9]<[Object][8]>** Array of possible panels (optional, default `[]`) |
|||
|
|||
### Examples |
|||
|
|||
```javascript |
|||
... |
|||
panels: { |
|||
defaults: [{ |
|||
id: 'main-toolbar', |
|||
buttons: [{ |
|||
id: 'btn-id', |
|||
className: 'some', |
|||
attributes: { |
|||
title: 'MyTitle' |
|||
} |
|||
}], |
|||
}], |
|||
} |
|||
... |
|||
``` |
|||
|
|||
## init |
|||
|
|||
Initialize module. Automatically called with a new instance of the editor |
|||
|
|||
### Parameters |
|||
|
|||
- `config` **[Object][8]** Configurations |
|||
|
|||
## getPanels |
|||
|
|||
Returns the collection of panels |
|||
|
|||
Returns **Collection** Collection of panel |
|||
|
|||
## getPanelsEl |
|||
|
|||
Returns panels element |
|||
|
|||
Returns **[HTMLElement][10]** |
|||
|
|||
## addPanel |
|||
|
|||
Add new panel to the collection |
|||
|
|||
### Parameters |
|||
|
|||
- `panel` **([Object][8] | Panel)** Object with right properties or an instance of Panel |
|||
|
|||
### Examples |
|||
|
|||
```javascript |
|||
var newPanel = panelManager.addPanel({ |
|||
id: 'myNewPanel', |
|||
visible : true, |
|||
buttons : [...], |
|||
}); |
|||
``` |
|||
|
|||
Returns **Panel** Added panel. Useful in case passed argument was an Object |
|||
|
|||
## removePanel |
|||
|
|||
Remove a panel from the collection |
|||
|
|||
### Parameters |
|||
|
|||
- `panel` **([Object][8] | Panel | [String][11])** Object with right properties or an instance of Panel or Painel id |
|||
|
|||
### Examples |
|||
|
|||
```javascript |
|||
const newPanel = panelManager.removePanel({ |
|||
id: 'myNewPanel', |
|||
visible : true, |
|||
buttons : [...], |
|||
}); |
|||
|
|||
const newPanel = panelManager.removePanel('myNewPanel'); |
|||
``` |
|||
|
|||
Returns **Panel** Removed panel. Useful in case passed argument was an Object |
|||
|
|||
## getPanel |
|||
|
|||
Get panel by ID |
|||
|
|||
### Parameters |
|||
|
|||
- `id` **[string][11]** Id string |
|||
|
|||
### Examples |
|||
|
|||
```javascript |
|||
var myPanel = panelManager.getPanel('myNewPanel'); |
|||
``` |
|||
|
|||
Returns **(Panel | null)** |
|||
|
|||
## addButton |
|||
|
|||
Add button to the panel |
|||
|
|||
### Parameters |
|||
|
|||
- `panelId` **[string][11]** Panel's ID |
|||
- `button` **([Object][8] | Button)** Button object or instance of Button |
|||
|
|||
### Examples |
|||
|
|||
```javascript |
|||
var newButton = panelManager.addButton('myNewPanel',{ |
|||
id: 'myNewButton', |
|||
className: 'someClass', |
|||
command: 'someCommand', |
|||
attributes: { title: 'Some title'}, |
|||
active: false, |
|||
}); |
|||
// It's also possible to pass the command as an object |
|||
// with .run and .stop methods |
|||
... |
|||
command: { |
|||
run: function(editor) { |
|||
... |
|||
}, |
|||
stop: function(editor) { |
|||
... |
|||
} |
|||
}, |
|||
// Or simply like a function which will be evaluated as a single .run command |
|||
... |
|||
command: function(editor) { |
|||
... |
|||
} |
|||
``` |
|||
|
|||
Returns **(Button | null)** Added button. Useful in case passed button was an Object |
|||
|
|||
## removeButton |
|||
|
|||
Remove button from the panel |
|||
|
|||
### Parameters |
|||
|
|||
- `panelId` **[string][11]** Panel's ID |
|||
- `button` **([Object][8] | Button | [String][11])** Button object or instance of Button or button id |
|||
|
|||
### Examples |
|||
|
|||
```javascript |
|||
const removedButton = panelManager.removeButton('myNewPanel',{ |
|||
id: 'myNewButton', |
|||
className: 'someClass', |
|||
command: 'someCommand', |
|||
attributes: { title: 'Some title'}, |
|||
active: false, |
|||
}); |
|||
|
|||
// It's also possible to use the button id |
|||
const removedButton = panelManager.removeButton('myNewPanel','myNewButton'); |
|||
``` |
|||
|
|||
Returns **(Button | null)** Removed button. |
|||
|
|||
## getButton |
|||
|
|||
Get button from the panel |
|||
|
|||
### Parameters |
|||
|
|||
- `panelId` **[string][11]** Panel's ID |
|||
- `id` **[string][11]** Button's ID |
|||
|
|||
### Examples |
|||
|
|||
```javascript |
|||
var button = panelManager.getButton('myPanel','myButton'); |
|||
``` |
|||
|
|||
Returns **(Button | null)** |
|||
|
|||
## render |
|||
|
|||
Render panels and buttons |
|||
|
|||
Returns **[HTMLElement][10]** |
|||
|
|||
[1]: #addpanel |
|||
|
|||
[2]: #addbutton |
|||
|
|||
[3]: #removebutton |
|||
|
|||
[4]: #getbutton |
|||
|
|||
[5]: #getpanel |
|||
|
|||
[6]: #getpanels |
|||
|
|||
[7]: #render |
|||
|
|||
[8]: https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object |
|||
|
|||
[9]: https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Array |
|||
|
|||
[10]: https://developer.mozilla.org/docs/Web/HTML/Element |
|||
|
|||
[11]: https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String |
|||
@ -0,0 +1,115 @@ |
|||
<!-- Generated by documentation.js. Update this documentation by updating the source code. --> |
|||
|
|||
## RichTextEditor |
|||
|
|||
This module allows to customize the toolbar of the Rich Text Editor and use commands from the HTML Editing APIs. |
|||
For more info about HTML Editing APIs check here: |
|||
[https://developer.mozilla.org/en-US/docs/Web/API/Document/execCommand][1] |
|||
|
|||
It's highly recommended to keep this toolbar as small as possible, especially from styling commands (eg. 'fontSize') |
|||
and leave this task to the Style Manager. |
|||
|
|||
Before using methods you should get first the module from the editor instance, in this way: |
|||
|
|||
```js |
|||
var rte = editor.RichTextEditor; |
|||
``` |
|||
|
|||
## add |
|||
|
|||
Add a new action to the built-in RTE toolbar |
|||
|
|||
### Parameters |
|||
|
|||
- `name` **[string][2]** Action name |
|||
- `action` **[Object][3]** Action options (optional, default `{}`) |
|||
|
|||
### Examples |
|||
|
|||
```javascript |
|||
rte.add('bold', { |
|||
icon: '<b>B</b>', |
|||
attributes: {title: 'Bold',} |
|||
result: rte => rte.exec('bold') |
|||
}); |
|||
rte.add('link', { |
|||
icon: document.getElementById('t'), |
|||
attributes: {title: 'Link',} |
|||
// Example on it's easy to wrap a selected content |
|||
result: rte => rte.insertHTML(`<a href="#">${rte.selection()}</a>`) |
|||
}); |
|||
// An example with fontSize |
|||
rte.add('fontSize', { |
|||
icon: `<select class="gjs-field"> |
|||
<option>1</option> |
|||
<option>4</option> |
|||
<option>7</option> |
|||
</select>`, |
|||
// Bind the 'result' on 'change' listener |
|||
event: 'change', |
|||
result: (rte, action) => rte.exec('fontSize', action.btn.firstChild.value), |
|||
// Callback on any input change (mousedown, keydown, etc..) |
|||
update: (rte, action) => { |
|||
const value = rte.doc.queryCommandValue(action.name); |
|||
if (value != 'false') { // value is a string |
|||
action.btn.firstChild.value = value; |
|||
} |
|||
} |
|||
}) |
|||
``` |
|||
|
|||
## get |
|||
|
|||
Get the action by its name |
|||
|
|||
### Parameters |
|||
|
|||
- `name` **[string][2]** Action name |
|||
|
|||
### Examples |
|||
|
|||
```javascript |
|||
const action = rte.get('bold'); |
|||
// {name: 'bold', ...} |
|||
``` |
|||
|
|||
Returns **[Object][3]** |
|||
|
|||
## getAll |
|||
|
|||
Get all actions |
|||
|
|||
Returns **[Array][4]** |
|||
|
|||
## remove |
|||
|
|||
Remove the action from the toolbar |
|||
|
|||
### Parameters |
|||
|
|||
- `name` **[string][2]** |
|||
|
|||
### Examples |
|||
|
|||
```javascript |
|||
const action = rte.remove('bold'); |
|||
// {name: 'bold', ...} |
|||
``` |
|||
|
|||
Returns **[Object][3]** Removed action |
|||
|
|||
## getToolbarEl |
|||
|
|||
Get the toolbar element |
|||
|
|||
Returns **[HTMLElement][5]** |
|||
|
|||
[1]: https://developer.mozilla.org/en-US/docs/Web/API/Document/execCommand |
|||
|
|||
[2]: https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String |
|||
|
|||
[3]: https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object |
|||
|
|||
[4]: https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Array |
|||
|
|||
[5]: https://developer.mozilla.org/docs/Web/HTML/Element |
|||
@ -0,0 +1,132 @@ |
|||
<!-- Generated by documentation.js. Update this documentation by updating the source code. --> |
|||
|
|||
## SelectorManager |
|||
|
|||
Selectors in GrapesJS are used in CSS Composer inside Rules and in Components as classes. To get better this concept let's take |
|||
a look at this code: |
|||
|
|||
```css |
|||
span > #send-btn.btn{ |
|||
... |
|||
} |
|||
``` |
|||
|
|||
```html |
|||
<span> |
|||
<button id="send-btn" class="btn"></button> |
|||
</span> |
|||
``` |
|||
|
|||
In this scenario we get: |
|||
span -> selector of type `tag` |
|||
send-btn -> selector of type `id` |
|||
btn -> selector of type `class` |
|||
|
|||
So, for example, being `btn` the same class entity it'll be easier to refactor and track things. |
|||
|
|||
Before using methods you should get first the module from the editor instance, in this way: |
|||
|
|||
```js |
|||
var selectorManager = editor.SelectorManager; |
|||
``` |
|||
|
|||
### Parameters |
|||
|
|||
- `config` **[Object][1]** Configurations |
|||
- `config.selectors` **[Array][2]<[Object][1]>** Default selectors (optional, default `[]`) |
|||
- `config.states` **[Array][2]<[Object][1]>** Default states (optional, default `[]`) |
|||
- `config.label` **[String][3]** Classes label (optional, default `'Classes'`) |
|||
- `config.statesLabel` **[String][3]** The empty state label (optional, default `'- State -'`) |
|||
|
|||
### Examples |
|||
|
|||
```javascript |
|||
... |
|||
{ |
|||
selectors: [ |
|||
{name:'myselector1'}, |
|||
... |
|||
], |
|||
states: [{ |
|||
name: 'hover', label: 'Hover' |
|||
},{ |
|||
name: 'active', label: 'Click' |
|||
}], |
|||
statesLabel: '- Selecte State -', |
|||
} |
|||
``` |
|||
|
|||
Returns **this** |
|||
|
|||
## add |
|||
|
|||
Add a new selector to collection if it's not already exists. Class type is a default one |
|||
|
|||
### Parameters |
|||
|
|||
- `name` **[String][3]** Selector name |
|||
- `opts` **[Object][1]** Selector options (optional, default `{}`) |
|||
- `opts.label` **[String][3]** Label for the selector, if it's not provided the label will be the same as the name (optional, default `''`) |
|||
- `opts.type` **[String][3]** Type of the selector. At the moment, only 'class' (1) is available (optional, default `1`) |
|||
|
|||
### Examples |
|||
|
|||
```javascript |
|||
var selector = selectorManager.add('selectorName'); |
|||
// Same as |
|||
var selector = selectorManager.add('selectorName', { |
|||
type: 1, |
|||
label: 'selectorName' |
|||
}); |
|||
``` |
|||
|
|||
Returns **Model** |
|||
|
|||
## addClass |
|||
|
|||
Add class selectors |
|||
|
|||
### Parameters |
|||
|
|||
- `classes` **([Array][2] \| [string][3])** Array or string of classes |
|||
|
|||
### Examples |
|||
|
|||
```javascript |
|||
sm.addClass('class1'); |
|||
sm.addClass('class1 class2'); |
|||
sm.addClass(['class1', 'class2']); |
|||
// -> [SelectorObject, ...] |
|||
``` |
|||
|
|||
Returns **[Array][2]** Array of added selectors |
|||
|
|||
## get |
|||
|
|||
Get the selector by its name |
|||
|
|||
### Parameters |
|||
|
|||
- `name` **[String][3]** Selector name |
|||
- `type` (optional, default `Selector.TYPE_CLASS`) |
|||
- `tyoe` **[String][3]** Selector type |
|||
|
|||
### Examples |
|||
|
|||
```javascript |
|||
var selector = selectorManager.get('selectorName'); |
|||
``` |
|||
|
|||
Returns **(Model | null)** |
|||
|
|||
## getAll |
|||
|
|||
Get all selectors |
|||
|
|||
Returns **Collection** |
|||
|
|||
[1]: https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object |
|||
|
|||
[2]: https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Array |
|||
|
|||
[3]: https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String |
|||
@ -0,0 +1,169 @@ |
|||
<!-- Generated by documentation.js. Update this documentation by updating the source code. --> |
|||
|
|||
## index |
|||
|
|||
Before using methods you should get first the module from the editor instance, in this way: |
|||
|
|||
```js |
|||
var storageManager = editor.StorageManager; |
|||
``` |
|||
|
|||
## getConfig |
|||
|
|||
Get configuration object |
|||
|
|||
Returns **[Object][1]** |
|||
|
|||
## isAutosave |
|||
|
|||
Checks if autosave is enabled |
|||
|
|||
Returns **[Boolean][2]** |
|||
|
|||
## setAutosave |
|||
|
|||
Set autosave value |
|||
|
|||
### Parameters |
|||
|
|||
- `v` **[Boolean][2]** |
|||
|
|||
Returns **this** |
|||
|
|||
## getStepsBeforeSave |
|||
|
|||
Returns number of steps required before trigger autosave |
|||
|
|||
Returns **[number][3]** |
|||
|
|||
## setStepsBeforeSave |
|||
|
|||
Set steps required before trigger autosave |
|||
|
|||
### Parameters |
|||
|
|||
- `v` **[number][3]** |
|||
|
|||
Returns **this** |
|||
|
|||
## add |
|||
|
|||
Add new storage |
|||
|
|||
### Parameters |
|||
|
|||
- `id` **[string][4]** Storage ID |
|||
- `storage` **[Object][1]** Storage wrapper |
|||
- `storage.load` **[Function][5]** Load method |
|||
- `storage.store` **[Function][5]** Store method |
|||
|
|||
### Examples |
|||
|
|||
```javascript |
|||
storageManager.add('local2', { |
|||
load: function(keys, clb, clbErr) { |
|||
var res = {}; |
|||
for (var i = 0, len = keys.length; i < len; i++){ |
|||
var v = localStorage.getItem(keys[i]); |
|||
if(v) res[keys[i]] = v; |
|||
} |
|||
clb(res); // might be called inside some async method |
|||
// In case of errors... |
|||
// clbErr('Went something wrong'); |
|||
}, |
|||
store: function(data, clb, clbErr) { |
|||
for(var key in data) |
|||
localStorage.setItem(key, data[key]); |
|||
clb(); // might be called inside some async method |
|||
} |
|||
}); |
|||
``` |
|||
|
|||
Returns **this** |
|||
|
|||
## get |
|||
|
|||
Returns storage by id |
|||
|
|||
### Parameters |
|||
|
|||
- `id` **[string][4]** Storage ID |
|||
|
|||
Returns **([Object][1] | null)** |
|||
|
|||
## getStorages |
|||
|
|||
Returns all storages |
|||
|
|||
Returns **[Array][6]** |
|||
|
|||
## getCurrent |
|||
|
|||
Returns current storage type |
|||
|
|||
Returns **[string][4]** |
|||
|
|||
## setCurrent |
|||
|
|||
Set current storage type |
|||
|
|||
### Parameters |
|||
|
|||
- `id` **[string][4]** Storage ID |
|||
|
|||
Returns **this** |
|||
|
|||
## store |
|||
|
|||
Store key-value resources in the current storage |
|||
|
|||
### Parameters |
|||
|
|||
- `data` **[Object][1]** Data in key-value format, eg. {item1: value1, item2: value2} |
|||
- `clb` **[Function][5]** Callback function |
|||
|
|||
### Examples |
|||
|
|||
```javascript |
|||
storageManager.store({item1: value1, item2: value2}); |
|||
``` |
|||
|
|||
Returns **([Object][1] | null)** |
|||
|
|||
## load |
|||
|
|||
Load resource from the current storage by keys |
|||
|
|||
### Parameters |
|||
|
|||
- `keys` **([string][4] \| [Array][6]<[string][4]>)** Keys to load |
|||
- `clb` **[Function][5]** Callback function |
|||
|
|||
### Examples |
|||
|
|||
```javascript |
|||
storageManager.load(['item1', 'item2'], res => { |
|||
// res -> {item1: value1, item2: value2} |
|||
}); |
|||
storageManager.load('item1', res => { |
|||
// res -> {item1: value1} |
|||
}); |
|||
``` |
|||
|
|||
## getCurrentStorage |
|||
|
|||
Get current storage |
|||
|
|||
Returns **Storage** |
|||
|
|||
[1]: https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object |
|||
|
|||
[2]: https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Boolean |
|||
|
|||
[3]: https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number |
|||
|
|||
[4]: https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String |
|||
|
|||
[5]: https://developer.mozilla.org/docs/Web/JavaScript/Reference/Statements/function |
|||
|
|||
[6]: https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Array |
|||
@ -0,0 +1,304 @@ |
|||
<!-- Generated by documentation.js. Update this documentation by updating the source code. --> |
|||
|
|||
## StyleManager |
|||
|
|||
With Style Manager you basically build categories (called sectors) of CSS properties which could |
|||
be used to custom components and classes. |
|||
You can init the editor with all sectors and properties via configuration |
|||
|
|||
```js |
|||
var editor = grapesjs.init({ |
|||
... |
|||
styleManager: {...} // Check below for the possible properties |
|||
... |
|||
}); |
|||
``` |
|||
|
|||
Before using methods you should get first the module from the editor instance, in this way: |
|||
|
|||
```js |
|||
var styleManager = editor.StyleManager; |
|||
``` |
|||
|
|||
### Parameters |
|||
|
|||
- `config` **[Object][1]** Configurations |
|||
- `config.sectors` **[Array][2]<[Object][1]>** Array of possible sectors (optional, default `[]`) |
|||
|
|||
### Examples |
|||
|
|||
```javascript |
|||
... |
|||
styleManager: { |
|||
sectors: [{ |
|||
id: 'dim', |
|||
name: 'Dimension', |
|||
properties: [{ |
|||
name: 'Width', |
|||
property: 'width', |
|||
type: 'integer', |
|||
units: ['px', '%'], |
|||
defaults: 'auto', |
|||
min: 0, |
|||
}], |
|||
}], |
|||
} |
|||
... |
|||
``` |
|||
|
|||
## init |
|||
|
|||
Initialize module. Automatically called with a new instance of the editor |
|||
|
|||
### Parameters |
|||
|
|||
- `config` **[Object][1]** Configurations |
|||
|
|||
## addSector |
|||
|
|||
Add new sector to the collection. If the sector with the same id already exists, |
|||
that one will be returned |
|||
|
|||
### Parameters |
|||
|
|||
- `id` **[string][3]** Sector id |
|||
- `sector` **[Object][1]** Object representing sector |
|||
- `sector.name` **[string][3]** Sector's label (optional, default `''`) |
|||
- `sector.open` **[Boolean][4]** Indicates if the sector should be opened (optional, default `true`) |
|||
- `sector.properties` **[Array][2]<[Object][1]>** Array of properties (optional, default `[]`) |
|||
|
|||
### Examples |
|||
|
|||
```javascript |
|||
var sector = styleManager.addSector('mySector',{ |
|||
name: 'My sector', |
|||
open: true, |
|||
properties: [{ name: 'My property'}] |
|||
}); |
|||
``` |
|||
|
|||
Returns **Sector** Added Sector |
|||
|
|||
## getSector |
|||
|
|||
Get sector by id |
|||
|
|||
### Parameters |
|||
|
|||
- `id` **[string][3]** Sector id |
|||
|
|||
### Examples |
|||
|
|||
```javascript |
|||
var sector = styleManager.getSector('mySector'); |
|||
``` |
|||
|
|||
Returns **(Sector | null)** |
|||
|
|||
## removeSector |
|||
|
|||
Remove a sector by id |
|||
|
|||
### Parameters |
|||
|
|||
- `id` **[string][3]** Sector id |
|||
|
|||
### Examples |
|||
|
|||
```javascript |
|||
const removed = styleManager.removeSector('mySector'); |
|||
``` |
|||
|
|||
Returns **Sector** Removed sector |
|||
|
|||
## getSectors |
|||
|
|||
Get all sectors |
|||
|
|||
Returns **Sectors** Collection of sectors |
|||
|
|||
## addProperty |
|||
|
|||
Add property to the sector identified by id |
|||
|
|||
### Parameters |
|||
|
|||
- `sectorId` **[string][3]** Sector id |
|||
- `property` **[Object][1]** Property object |
|||
- `property.name` **[string][3]** Name of the property (optional, default `''`) |
|||
- `property.property` **[string][3]** CSS property, eg. `min-height` (optional, default `''`) |
|||
- `property.type` **[string][3]** Type of the property: integer | radio | select | color | file | composite | stack (optional, default `''`) |
|||
- `property.units` **[Array][2]<[string][3]>** Unit of measure available, eg. ['px','%','em']. Only for integer type (optional, default `[]`) |
|||
- `property.unit` **[string][3]** Default selected unit from `units`. Only for integer type (optional, default `''`) |
|||
- `property.min` **[number][5]** Min possible value. Only for integer type (optional, default `null`) |
|||
- `property.max` **[number][5]** Max possible value. Only for integer type (optional, default `null`) |
|||
- `property.defaults` **[string][3]** Default value (optional, default `''`) |
|||
- `property.info` **[string][3]** Some description (optional, default `''`) |
|||
- `property.icon` **[string][3]** Class name. If exists no text will be displayed (optional, default `''`) |
|||
- `property.preview` **[Boolean][4]** Show layers preview. Only for stack type (optional, default `false`) |
|||
- `property.functionName` **[string][3]** Indicates if value need to be wrapped in some function, for istance `transform: rotate(90deg)` (optional, default `''`) |
|||
- `property.properties` **[Array][2]<[Object][1]>** Nested properties for composite and stack type (optional, default `[]`) |
|||
- `property.layers` **[Array][2]<[Object][1]>** Layers for stack properties (optional, default `[]`) |
|||
- `property.list` **[Array][2]<[Object][1]>** List of possible options for radio and select types (optional, default `[]`) |
|||
|
|||
### Examples |
|||
|
|||
```javascript |
|||
var property = styleManager.addProperty('mySector',{ |
|||
name: 'Minimum height', |
|||
property: 'min-height', |
|||
type: 'select', |
|||
defaults: '100px', |
|||
list: [{ |
|||
value: '100px', |
|||
name: '100', |
|||
},{ |
|||
value: '200px', |
|||
name: '200', |
|||
}], |
|||
}); |
|||
``` |
|||
|
|||
Returns **(Property | null)** Added Property or `null` in case sector doesn't exist |
|||
|
|||
## getProperty |
|||
|
|||
Get property by its CSS name and sector id |
|||
|
|||
### Parameters |
|||
|
|||
- `sectorId` **[string][3]** Sector id |
|||
- `name` **[string][3]** CSS property name, eg. 'min-height' |
|||
|
|||
### Examples |
|||
|
|||
```javascript |
|||
var property = styleManager.getProperty('mySector','min-height'); |
|||
``` |
|||
|
|||
Returns **(Property | null)** |
|||
|
|||
## removeProperty |
|||
|
|||
Remove a property from the sector |
|||
|
|||
### Parameters |
|||
|
|||
- `sectorId` **[string][3]** Sector id |
|||
- `name` **[string][3]** CSS property name, eg. 'min-height' |
|||
|
|||
### Examples |
|||
|
|||
```javascript |
|||
const property = styleManager.removeProperty('mySector', 'min-height'); |
|||
``` |
|||
|
|||
Returns **Property** Removed property |
|||
|
|||
## getProperties |
|||
|
|||
Get properties of the sector |
|||
|
|||
### Parameters |
|||
|
|||
- `sectorId` **[string][3]** Sector id |
|||
|
|||
### Examples |
|||
|
|||
```javascript |
|||
var properties = styleManager.getProperties('mySector'); |
|||
``` |
|||
|
|||
Returns **Properties** Collection of properties |
|||
|
|||
## getModelToStyle |
|||
|
|||
Get what to style inside Style Manager. If you select the component |
|||
without classes the entity is the Component itself and all changes will |
|||
go inside its 'style' property. Otherwise, if the selected component has |
|||
one or more classes, the function will return the corresponding CSS Rule |
|||
|
|||
### Parameters |
|||
|
|||
- `model` **Model** |
|||
|
|||
Returns **Model** |
|||
|
|||
## addType |
|||
|
|||
Add new property type |
|||
|
|||
### Parameters |
|||
|
|||
- `id` **[string][3]** Type ID |
|||
- `definition` **[Object][1]** Definition of the type. Each definition contains |
|||
`model` (business logic), `view` (presentation logic) |
|||
and `isType` function which recognize the type of the |
|||
passed entity |
|||
addType('my-type', { |
|||
model: {}, |
|||
view: {}, |
|||
isType: (value) => { |
|||
if (value && value.type == 'my-type') { |
|||
return value; |
|||
} |
|||
}, |
|||
}) |
|||
|
|||
## getType |
|||
|
|||
Get type |
|||
|
|||
### Parameters |
|||
|
|||
- `id` **[string][3]** Type ID |
|||
|
|||
Returns **[Object][1]** Type definition |
|||
|
|||
## getTypes |
|||
|
|||
Get all types |
|||
|
|||
Returns **[Array][2]** |
|||
|
|||
## createType |
|||
|
|||
Create new property from type |
|||
|
|||
### Parameters |
|||
|
|||
- `id` **[string][3]** Type ID |
|||
- `options` **[Object][1]** Options (optional, default `{}`) |
|||
- `options.model` **[Object][1]** Custom model object (optional, default `{}`) |
|||
- `options.view` **[Object][1]** Custom view object (optional, default `{}`) |
|||
|
|||
### Examples |
|||
|
|||
```javascript |
|||
const propView = styleManager.createType('integer', { |
|||
model: {units: ['px', 'rem']} |
|||
}); |
|||
propView.render(); |
|||
propView.model.on('change:value', ...); |
|||
someContainer.appendChild(propView.el); |
|||
``` |
|||
|
|||
Returns **PropertyView** |
|||
|
|||
## render |
|||
|
|||
Render sectors and properties |
|||
|
|||
Returns **[HTMLElement][6]** |
|||
|
|||
[1]: https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object |
|||
|
|||
[2]: https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Array |
|||
|
|||
[3]: https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String |
|||
|
|||
[4]: https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Boolean |
|||
|
|||
[5]: https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number |
|||
|
|||
[6]: https://developer.mozilla.org/docs/Web/HTML/Element |
|||
@ -0,0 +1,194 @@ |
|||
<!-- Generated by documentation.js. Update this documentation by updating the source code. --> |
|||
|
|||
## UndoManager |
|||
|
|||
This module allows to manage the stack of changes applied in canvas |
|||
|
|||
You can access the module in this way |
|||
|
|||
```js |
|||
const um = editor.UndoManager; |
|||
``` |
|||
|
|||
## getConfig |
|||
|
|||
Get module configurations |
|||
|
|||
### Examples |
|||
|
|||
```javascript |
|||
const config = um.getConfig(); |
|||
// { ... } |
|||
``` |
|||
|
|||
Returns **[Object][1]** Configuration object |
|||
|
|||
## add |
|||
|
|||
Add an entity (Model/Collection) to track |
|||
Note: New Components and CSSRules will be added automatically |
|||
|
|||
### Parameters |
|||
|
|||
- `entity` **(Model | Collection)** Entity to track |
|||
|
|||
### Examples |
|||
|
|||
```javascript |
|||
um.add(someModelOrCollection); |
|||
``` |
|||
|
|||
Returns **this** |
|||
|
|||
## remove |
|||
|
|||
Remove and stop tracking the entity (Model/Collection) |
|||
|
|||
### Parameters |
|||
|
|||
- `entity` **(Model | Collection)** Entity to remove |
|||
|
|||
### Examples |
|||
|
|||
```javascript |
|||
um.remove(someModelOrCollection); |
|||
``` |
|||
|
|||
Returns **this** |
|||
|
|||
## removeAll |
|||
|
|||
Remove all entities |
|||
|
|||
### Examples |
|||
|
|||
```javascript |
|||
um.removeAll(); |
|||
``` |
|||
|
|||
Returns **this** |
|||
|
|||
## start |
|||
|
|||
Start/resume tracking changes |
|||
|
|||
### Examples |
|||
|
|||
```javascript |
|||
um.start(); |
|||
``` |
|||
|
|||
Returns **this** |
|||
|
|||
## stop |
|||
|
|||
Stop tracking changes |
|||
|
|||
### Examples |
|||
|
|||
```javascript |
|||
um.stop(); |
|||
``` |
|||
|
|||
Returns **this** |
|||
|
|||
## undo |
|||
|
|||
Undo last change |
|||
|
|||
### Examples |
|||
|
|||
```javascript |
|||
um.undo(); |
|||
``` |
|||
|
|||
Returns **this** |
|||
|
|||
## undoAll |
|||
|
|||
Undo all changes |
|||
|
|||
### Examples |
|||
|
|||
```javascript |
|||
um.undoAll(); |
|||
``` |
|||
|
|||
Returns **this** |
|||
|
|||
## redo |
|||
|
|||
Redo last change |
|||
|
|||
### Examples |
|||
|
|||
```javascript |
|||
um.redo(); |
|||
``` |
|||
|
|||
Returns **this** |
|||
|
|||
## redoAll |
|||
|
|||
Redo all changes |
|||
|
|||
### Examples |
|||
|
|||
```javascript |
|||
um.redoAll(); |
|||
``` |
|||
|
|||
Returns **this** |
|||
|
|||
## hasUndo |
|||
|
|||
Checks if exists an available undo |
|||
|
|||
### Examples |
|||
|
|||
```javascript |
|||
um.hasUndo(); |
|||
``` |
|||
|
|||
Returns **[Boolean][2]** |
|||
|
|||
## hasRedo |
|||
|
|||
Checks if exists an available redo |
|||
|
|||
### Examples |
|||
|
|||
```javascript |
|||
um.hasRedo(); |
|||
``` |
|||
|
|||
Returns **[Boolean][2]** |
|||
|
|||
## getStack |
|||
|
|||
Get stack of changes |
|||
|
|||
### Examples |
|||
|
|||
```javascript |
|||
const stack = um.getStack(); |
|||
stack.each(item => ...); |
|||
``` |
|||
|
|||
Returns **Collection** |
|||
|
|||
## clear |
|||
|
|||
Clear the stack |
|||
|
|||
### Examples |
|||
|
|||
```javascript |
|||
um.clear(); |
|||
``` |
|||
|
|||
Returns **this** |
|||
|
|||
[1]: https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object |
|||
|
|||
[2]: https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Boolean |
|||
Loading…
Reference in new issue