Browse Source

Fix docs api (#6284)

* Fix autogenerated docs API

* Move README

* Move LICENSE in core

* Create symlinks for README and LICENSE
pull/6285/head
Artur Arseniev 1 year ago
committed by GitHub
parent
commit
c1a2ea5729
No known key found for this signature in database GPG Key ID: B5690EEEBB952194
  1. 25
      LICENSE
  2. 1
      LICENSE
  3. 174
      README.md
  4. 1
      README.md
  5. 20
      docs/api/canvas.md
  6. 10
      docs/api/commands.md
  7. 8
      docs/api/components.md
  8. 28
      docs/api/storage_manager.md
  9. 25
      packages/core/LICENSE
  10. 174
      packages/core/README.md
  11. 15
      packages/core/src/canvas/types.ts
  12. 10
      packages/core/src/commands/types.ts
  13. 2
      packages/core/src/dom_components/index.ts
  14. 21
      packages/core/src/storage_manager/types.ts

25
LICENSE

@ -1,25 +0,0 @@
Copyright (c) 2017-current, Artur Arseniev
All rights reserved.
Redistribution and use in source and binary forms, with or without modification,
are permitted provided that the following conditions are met:
- Redistributions of source code must retain the above copyright notice, this
list of conditions and the following disclaimer.
- Redistributions in binary form must reproduce the above copyright notice, this
list of conditions and the following disclaimer in the documentation and/or
other materials provided with the distribution.
- Neither the name "GrapesJS" nor the names of its contributors may be
used to endorse or promote products derived from this software without
specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR
ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

1
LICENSE

@ -0,0 +1 @@
./packages/core/LICENSE

174
README.md

@ -1,174 +0,0 @@
# [GrapesJS](http://grapesjs.com)
> ⚠️ **Warning:** We are in the process of moving to a monorepo.
[![Build Status](https://github.com/GrapesJS/grapesjs/actions/workflows/quality.yml/badge.svg)](https://github.com/GrapesJS/grapesjs/actions)
[![Chat](https://img.shields.io/badge/chat-discord-7289da.svg)](https://discord.gg/QAbgGXq)
[![CDNJS](https://img.shields.io/cdnjs/v/grapesjs.svg)](https://cdnjs.com/libraries/grapesjs)
[![npm](https://img.shields.io/npm/v/grapesjs.svg)](https://www.npmjs.com/package/grapesjs)
> If you looking to embed the [Studio](https://app.grapesjs.com/studio) editor in your application, we now offer the [Studio SDK](https://app.grapesjs.com/dashboard/sdk/licenses?ref=repo-readme), a ready-to-use visual builder that's easy to embed in external applications, with GrapesJS team support included.
<p align="center"><img src="http://grapesjs.com/assets/images/grapesjs-front-page-m.jpg" alt="GrapesJS" width="500" align="center"/></p>
GrapesJS is a free and open source Web Builder Framework which helps building HTML templates, faster and easily, to be delivered in sites, newsletters or mobile apps. Mainly, GrapesJS was designed to be used inside a [CMS] to speed up the creation of dynamic templates. To better understand this concept check the image below
<br/>
<p align="center"><img src="http://grapesjs.com/assets/images/gjs-concept.png" alt="GrapesJS - Style Manager" height="400" align="center"/></p>
<br/>
Generally any 'template system', that you'd find in various applications like CMS, is composed by the **structure** (HTML), **style** (CSS) and **variables**, which are then replaced with other templates and contents on server-side and rendered on client.
This demos show examples of what is possible to achieve:<br/>
Webpage Demo - http://grapesjs.com/demo.html<br/>
Newsletter Demo - http://grapesjs.com/demo-newsletter-editor.html<br/>
## Table of contents
- [Features](#features)
- [Download](#download)
- [Usage](#usage)
- [Development](#development)
- [Documentation](#documentation)
- [API](#api)
- [Testing](#testing)
- [Plugins](#plugins)
- [Support](#support)
- [Changelog](https://github.com/GrapesJS/grapesjs/releases)
- [Contributing](https://github.com/GrapesJS/grapesjs/blob/master/CONTRIBUTING.md)
- [License](#license)
## Features
| Blocks | Style Manager | Layer Manager |
| ---------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------- |
| <img src="http://grapesjs.com/assets/images/sc-grapesjs-blocks-prp.jpg" alt="GrapesJS - Block Manager" height="400" align="center"/> | <img src="http://grapesjs.com/assets/images/sc-grapesjs-style-2.jpg" alt="GrapesJS - Style Manager" height="400" align="center"/> | <img src="http://grapesjs.com/assets/images/sc-grapesjs-layers-2.jpg" alt="GrapesJS - Layer Manager" height="400" align="center"/> |
| Code Viewer | Asset Manager |
| -------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------- |
| <img src="http://grapesjs.com/assets/images/sc-grapesjs-code.jpg" alt="GrapesJS - Code Viewer" height="300" align="center"/> | <img src="http://grapesjs.com/assets/images/sc-grapesjs-assets-1.jpg" alt="GrapesJS - Asset Manager" height="250" align="center"/> |
- Local and remote storage
- Default built-in commands (basically for creating and managing different components)
## Download
- CDNs
- UNPKG (resolves to the latest version)
- `https://unpkg.com/grapesjs`
- `https://unpkg.com/grapesjs/dist/css/grapes.min.css`
- CDNJS (replace `X.X.X` with the current version)
- `https://cdnjs.cloudflare.com/ajax/libs/grapesjs/X.X.X/grapes.min.js`
- `https://cdnjs.cloudflare.com/ajax/libs/grapesjs/X.X.X/css/grapes.min.css`
- NPM
- `npm i grapesjs`
- GIT
- `git clone https://github.com/GrapesJS/grapesjs.git`
For the development purpose you should follow instructions below.
## Usage
```html
<link rel="stylesheet" href="path/to/grapes.min.css" />
<script src="path/to/grapes.min.js"></script>
<div id="gjs"></div>
<script type="text/javascript">
var editor = grapesjs.init({
container: '#gjs',
components: '<div class="txt-red">Hello world!</div>',
style: '.txt-red{color: red}',
});
</script>
```
For a more practical example I'd suggest looking up the code inside this demo: http://grapesjs.com/demo.html
## Development
Follow the [Contributing Guide](https://github.com/GrapesJS/grapesjs/blob/master/CONTRIBUTING.md).
## Documentation
Check the getting started guide here: [Documentation]
## API
API References could be found here: [API-Reference]
## Testing
```sh
$ pnpm test
```
## Plugins
[Official Plugins](https://github.com/orgs/GrapesJS/repositories?q=-repo%3Agrapesjs%2Fgrapesjs&type=source) | [Community Plugins](https://github.com/topics/grapesjs-plugin)
### Wrappers
- [@grapesjs/react](https://github.com/GrapesJS/react) - GrapesJS wrapper for React that allows you to build custom and declarative UI for your editor.
### Extensions
- [grapesjs-plugin-export](https://github.com/GrapesJS/export) - Export GrapesJS templates in a zip archive
- [grapesjs-plugin-filestack](https://github.com/GrapesJS/filestack) - Add Filestack uploader in Asset Manager
- [grapesjs-plugin-ckeditor](https://github.com/GrapesJS/ckeditor) - Replaces the built-in RTE with CKEditor
- [grapesjs-tui-image-editor](https://github.com/GrapesJS/tui-image-editor) - GrapesJS TOAST UI Image Editor
- [grapesjs-blocks-basic](https://github.com/GrapesJS/blocks-basic) - Basic set of blocks
- [grapesjs-plugin-forms](https://github.com/GrapesJS/components-forms) - Set of form components and blocks
- [grapesjs-navbar](https://github.com/GrapesJS/components-navbar) - Simple navbar component
- [grapesjs-component-countdown](https://github.com/GrapesJS/components-countdown) - Simple countdown component
- [grapesjs-style-gradient](https://github.com/GrapesJS/style-gradient) - Add `gradient` type input to the Style Manager
- [grapesjs-style-filter](https://github.com/GrapesJS/style-filter) - Add `filter` type input to the Style Manager
- [grapesjs-style-bg](https://github.com/GrapesJS/style-bg) - Full-stack background style property type, with the possibility to add images, colors, and gradients
- [grapesjs-blocks-flexbox](https://github.com/GrapesJS/blocks-flexbox) - Add the flexbox block
- [grapesjs-lory-slider](https://github.com/GrapesJS/components-lory) - Slider component by using [lory](https://github.com/meandmax/lory)
- [grapesjs-tabs](https://github.com/GrapesJS/components-tabs) - Simple tabs component
- [grapesjs-tooltip](https://github.com/GrapesJS/components-tooltip) - Simple, CSS only, tooltip component for GrapesJS
- [grapesjs-custom-code](https://github.com/GrapesJS/components-custom-code) - Embed custom code
- [grapesjs-touch](https://github.com/GrapesJS/touch) - Enable touch support
- [grapesjs-indexeddb](https://github.com/GrapesJS/storage-indexeddb) - Storage wrapper for IndexedDB
- [grapesjs-firestore](https://github.com/GrapesJS/storage-firestore) - Storage wrapper for [Cloud Firestore](https://firebase.google.com/docs/firestore)
- [grapesjs-parser-postcss](https://github.com/GrapesJS/parser-postcss) - Custom CSS parser for GrapesJS by using [PostCSS](https://github.com/postcss/postcss)
- [grapesjs-typed](https://github.com/GrapesJS/components-typed) - Typed component made by wrapping Typed.js library
- [grapesjs-ui-suggest-classes](https://github.com/silexlabs/grapesjs-ui-suggest-classes) - Enable auto-complete of classes in the SelectorManager UI
- [grapesjs-fonts](https://github.com/silexlabs/grapesjs-fonts) - Custom Fonts plugin, adds a UI to manage fonts in websites
- [grapesjs-symbols](https://github.com/silexlabs/grapesjs-symbols) - Symbols plugin to reuse elements in a website and accross pages
- [grapesjs-click](https://github.com/bgrand-ch/grapesjs-click) - Grab and drop blocks and components with click (no more drag-and-drop)
- [grapesjs-float](https://github.com/bgrand-ch/grapesjs-float) - Anchor a floating element next to another element (selected component, ...)
### Presets
- [grapesjs-preset-webpage](https://github.com/GrapesJS/preset-webpage) - Webpage Builder
- [grapesjs-preset-newsletter](https://github.com/GrapesJS/preset-newsletter) - Newsletter Builder
- [grapesjs-mjml](https://github.com/GrapesJS/mjml) - Newsletter Builder with MJML components
Find out more about plugins here: [Creating plugins](https://grapesjs.com/docs/modules/Plugins.html)
## Support
If you like the project and you wish to see it grow, please consider supporting us with a donation of your choice or become a backer/sponsor via [Open Collective](https://opencollective.com/grapesjs)
[![PayPalMe](http://grapesjs.com/assets/images/ppme.png)](https://paypal.me/grapesjs)
[![Bitcoin](https://user-images.githubusercontent.com/11614725/52977952-87235f80-33cf-11e9-9607-7a9a354e1155.png)](https://commerce.coinbase.com/checkout/fc90b940-558d-408b-a166-28a823c98173)
<a href="https://opencollective.com/grapesjs"><img src="https://opencollective.com/grapesjs/tiers/sponsors.svg?avatarHeight=64"></a>
<a href="https://opencollective.com/grapesjs"><img src="https://opencollective.com/grapesjs/tiers/backers.svg?avatarHeight=64"></a>
<br>
[![BrowserStack](https://user-images.githubusercontent.com/11614725/39406324-4ef89c40-4bb5-11e8-809a-113d9432e5a5.png)](https://www.browserstack.com)<br/>
Thanks to [BrowserStack](https://www.browserstack.com) for providing us browser testing services
## License
BSD 3-clause
[Documentation]: https://grapesjs.com/docs/
[API-Reference]: https://grapesjs.com/docs/api/
[CMS]: https://en.wikipedia.org/wiki/Content_management_system

1
README.md

@ -0,0 +1 @@
./packages/core/README.md

20
docs/api/canvas.md

@ -30,9 +30,7 @@ canvas.setCoords(...);
* `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.
------------------------------------------------------------------------
* `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.
* `canvas:drop` Something is dropped in canvas, `DataTransfer` instance and the dropped model are passed as arguments.
@ -92,9 +90,7 @@ editor.on('canvas:pointer', () => {
});
```
`canvas:refresh` Canvas was refreshed to update elements on top,
like spots/tools (eg. via `editor.Canvas.refresh()` or on frame resize).
--------------------------------------------------------------------------
* `canvas:refresh` Canvas was refreshed to update elements on top, like spots/tools (eg. via `editor.Canvas.refresh()` or on frame resize).
```javascript
editor.on('canvas:refresh', (canvasRefreshOptions) => {
@ -102,9 +98,7 @@ editor.on('canvas:refresh', (canvasRefreshOptions) => {
});
```
`canvas:frame:load` Frame loaded in canvas.
The event is triggered right after iframe's `onload`.
-------------------------------------------------------
* `canvas:frame:load` Frame loaded in canvas. The event is triggered right after iframe's `onload`.
```javascript
editor.on('canvas:frame:load', ({ window }) => {
@ -112,9 +106,7 @@ editor.on('canvas:frame:load', ({ window }) => {
});
```
`canvas:frame:load:head` Frame head loaded in canvas.
The event is triggered right after iframe's finished to load the head elemenets (eg. scripts)
---------------------------------------------------------------------------------------------
* `canvas:frame:load:head` Frame head loaded in canvas. The event is triggered right after iframe's finished to load the head elemenets (eg. scripts)
```javascript
editor.on('canvas:frame:load:head', ({ window }) => {
@ -122,9 +114,7 @@ editor.on('canvas:frame:load:head', ({ window }) => {
});
```
`canvas:frame:load:body` Frame body loaded in canvas.
The event is triggered when the body is rendered with components.
-----------------------------------------------------------------
* `canvas:frame:load:body` Frame body loaded in canvas. The event is triggered when the body is rendered with components.
```javascript
editor.on('canvas:frame:load:body', ({ window }) => {

10
docs/api/commands.md

@ -32,19 +32,19 @@ editor.on('command:run', ({ id, result, options }) => {
});
```
* `command:run:COMMAND\_ID` Triggered on run of a specific command.
* `command:run:COMMAND-ID` Triggered on run of a specific command.
```javascript
editor.on('command:run:my-command', ({ result, options }) => { ... });
```
* `command:run:before:COMMAND\_ID` Triggered before the command is called.
* `command:run:before:COMMAND-ID` Triggered before the command is called.
```javascript
editor.on('command:run:before:my-command', ({ options }) => { ... });
```
* `command:abort:COMMAND\_ID` Triggered when the command execution is aborted.
* `command:abort:COMMAND-ID` Triggered when the command execution is aborted.
```javascript
editor.on('command:abort:my-command', ({ options }) => { ... });
@ -65,13 +65,13 @@ editor.on('command:stop', ({ id, result, options }) => {
});
```
* `command:stop:COMMAND\_ID` Triggered on stop of a specific command.
* `command:stop:COMMAND-ID` Triggered on stop of a specific command.
```javascript
editor.on('command:run:my-command', ({ result, options }) => { ... });
```
* `command:stop:before:COMMAND\_ID` Triggered before the command is called to stop.
* `command:stop:before:COMMAND-ID` Triggered before the command is called to stop.
```javascript
editor.on('command:stop:before:my-command', ({ options }) => { ... });

8
docs/api/components.md

@ -48,20 +48,14 @@ cmp.addType(...);
## Methods
* [getWrapper][2]
* [getComponents][3]
* [addComponent][4]
* [clear][5]
* [addType][6]
* [getType][7]
* [getTypes][8]
* [Component]: component.html
[Component]: component.html
## getWrapper

28
docs/api/storage_manager.md

@ -32,9 +32,7 @@ editor.on('storage:start', (type) => {
});
```
`storage:start:store` Storage store request start.
The project JSON object to store is passed as an argument (which you can edit).
-------------------------------------------------------------------------------
* `storage:start:store` Storage store request start. The project JSON object to store is passed as an argument (which you can edit).
```javascript
editor.on('storage:start:store', (data) => {
@ -50,9 +48,7 @@ editor.on('storage:start:load', () => {
});
```
`storage:load` Storage loaded the project.
The loaded project is passed as an argument.
--------------------------------------------
* `storage:load` Storage loaded the project. The loaded project is passed as an argument.
```javascript
editor.on('storage:load', (data, res) => {
@ -60,9 +56,7 @@ editor.on('storage:load', (data, res) => {
});
```
`storage:store` Storage stored the project.
The stored project is passed as an argument.
--------------------------------------------
* `storage:store` Storage stored the project. The stored project is passed as an argument.
```javascript
editor.on('storage:store', (data, res) => {
@ -70,9 +64,7 @@ editor.on('storage:store', (data, res) => {
});
```
`storage:after` Storage request completed.
Triggered right after `storage:load`/`storage:store`.
---------------------------------------------------------
* `storage:after` Storage request completed. Triggered right after `storage:load`/`storage:store`.
```javascript
editor.on('storage:after', (type) => {
@ -80,9 +72,7 @@ editor.on('storage:after', (type) => {
});
```
`storage:end` Storage request ended.
This event triggers also in case of errors.
-------------------------------------------
* `storage:end` Storage request ended. This event triggers also in case of errors.
```javascript
editor.on('storage:end', (type) => {
@ -90,9 +80,7 @@ editor.on('storage:end', (type) => {
});
```
`storage:end:store` Storage store request ended.
This event triggers also in case of errors.
-------------------------------------------
* `storage:end:store` Storage store request ended. This event triggers also in case of errors.
```javascript
editor.on('storage:end:store', () => {
@ -100,9 +88,7 @@ editor.on('storage:end:store', () => {
});
```
`storage:end:load` Storage load request ended.
This event triggers also in case of errors.
-------------------------------------------
* `storage:end:load` Storage load request ended. This event triggers also in case of errors.
```javascript
editor.on('storage:end:load', () => {

25
packages/core/LICENSE

@ -0,0 +1,25 @@
Copyright (c) 2017-current, Artur Arseniev
All rights reserved.
Redistribution and use in source and binary forms, with or without modification,
are permitted provided that the following conditions are met:
- Redistributions of source code must retain the above copyright notice, this
list of conditions and the following disclaimer.
- Redistributions in binary form must reproduce the above copyright notice, this
list of conditions and the following disclaimer in the documentation and/or
other materials provided with the distribution.
- Neither the name "GrapesJS" nor the names of its contributors may be
used to endorse or promote products derived from this software without
specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR
ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

174
packages/core/README.md

@ -0,0 +1,174 @@
# [GrapesJS](http://grapesjs.com)
> ⚠️ **Warning:** We are in the process of moving to a monorepo.
[![Build Status](https://github.com/GrapesJS/grapesjs/actions/workflows/quality.yml/badge.svg)](https://github.com/GrapesJS/grapesjs/actions)
[![Chat](https://img.shields.io/badge/chat-discord-7289da.svg)](https://discord.gg/QAbgGXq)
[![CDNJS](https://img.shields.io/cdnjs/v/grapesjs.svg)](https://cdnjs.com/libraries/grapesjs)
[![npm](https://img.shields.io/npm/v/grapesjs.svg)](https://www.npmjs.com/package/grapesjs)
> If you looking to embed the [Studio](https://app.grapesjs.com/studio) editor in your application, we now offer the [Studio SDK](https://app.grapesjs.com/dashboard/sdk/licenses?ref=repo-readme), a ready-to-use visual builder that's easy to embed in external applications, with GrapesJS team support included.
<p align="center"><img src="http://grapesjs.com/assets/images/grapesjs-front-page-m.jpg" alt="GrapesJS" width="500" align="center"/></p>
GrapesJS is a free and open source Web Builder Framework which helps building HTML templates, faster and easily, to be delivered in sites, newsletters or mobile apps. Mainly, GrapesJS was designed to be used inside a [CMS] to speed up the creation of dynamic templates. To better understand this concept check the image below
<br/>
<p align="center"><img src="http://grapesjs.com/assets/images/gjs-concept.png" alt="GrapesJS - Style Manager" height="400" align="center"/></p>
<br/>
Generally any 'template system', that you'd find in various applications like CMS, is composed by the **structure** (HTML), **style** (CSS) and **variables**, which are then replaced with other templates and contents on server-side and rendered on client.
This demos show examples of what is possible to achieve:<br/>
Webpage Demo - http://grapesjs.com/demo.html<br/>
Newsletter Demo - http://grapesjs.com/demo-newsletter-editor.html<br/>
## Table of contents
- [Features](#features)
- [Download](#download)
- [Usage](#usage)
- [Development](#development)
- [Documentation](#documentation)
- [API](#api)
- [Testing](#testing)
- [Plugins](#plugins)
- [Support](#support)
- [Changelog](https://github.com/GrapesJS/grapesjs/releases)
- [Contributing](https://github.com/GrapesJS/grapesjs/blob/master/CONTRIBUTING.md)
- [License](#license)
## Features
| Blocks | Style Manager | Layer Manager |
| ---------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------- |
| <img src="http://grapesjs.com/assets/images/sc-grapesjs-blocks-prp.jpg" alt="GrapesJS - Block Manager" height="400" align="center"/> | <img src="http://grapesjs.com/assets/images/sc-grapesjs-style-2.jpg" alt="GrapesJS - Style Manager" height="400" align="center"/> | <img src="http://grapesjs.com/assets/images/sc-grapesjs-layers-2.jpg" alt="GrapesJS - Layer Manager" height="400" align="center"/> |
| Code Viewer | Asset Manager |
| -------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------- |
| <img src="http://grapesjs.com/assets/images/sc-grapesjs-code.jpg" alt="GrapesJS - Code Viewer" height="300" align="center"/> | <img src="http://grapesjs.com/assets/images/sc-grapesjs-assets-1.jpg" alt="GrapesJS - Asset Manager" height="250" align="center"/> |
- Local and remote storage
- Default built-in commands (basically for creating and managing different components)
## Download
- CDNs
- UNPKG (resolves to the latest version)
- `https://unpkg.com/grapesjs`
- `https://unpkg.com/grapesjs/dist/css/grapes.min.css`
- CDNJS (replace `X.X.X` with the current version)
- `https://cdnjs.cloudflare.com/ajax/libs/grapesjs/X.X.X/grapes.min.js`
- `https://cdnjs.cloudflare.com/ajax/libs/grapesjs/X.X.X/css/grapes.min.css`
- NPM
- `npm i grapesjs`
- GIT
- `git clone https://github.com/GrapesJS/grapesjs.git`
For the development purpose you should follow instructions below.
## Usage
```html
<link rel="stylesheet" href="path/to/grapes.min.css" />
<script src="path/to/grapes.min.js"></script>
<div id="gjs"></div>
<script type="text/javascript">
var editor = grapesjs.init({
container: '#gjs',
components: '<div class="txt-red">Hello world!</div>',
style: '.txt-red{color: red}',
});
</script>
```
For a more practical example I'd suggest looking up the code inside this demo: http://grapesjs.com/demo.html
## Development
Follow the [Contributing Guide](https://github.com/GrapesJS/grapesjs/blob/master/CONTRIBUTING.md).
## Documentation
Check the getting started guide here: [Documentation]
## API
API References could be found here: [API-Reference]
## Testing
```sh
$ pnpm test
```
## Plugins
[Official Plugins](https://github.com/orgs/GrapesJS/repositories?q=-repo%3Agrapesjs%2Fgrapesjs&type=source) | [Community Plugins](https://github.com/topics/grapesjs-plugin)
### Wrappers
- [@grapesjs/react](https://github.com/GrapesJS/react) - GrapesJS wrapper for React that allows you to build custom and declarative UI for your editor.
### Extensions
- [grapesjs-plugin-export](https://github.com/GrapesJS/export) - Export GrapesJS templates in a zip archive
- [grapesjs-plugin-filestack](https://github.com/GrapesJS/filestack) - Add Filestack uploader in Asset Manager
- [grapesjs-plugin-ckeditor](https://github.com/GrapesJS/ckeditor) - Replaces the built-in RTE with CKEditor
- [grapesjs-tui-image-editor](https://github.com/GrapesJS/tui-image-editor) - GrapesJS TOAST UI Image Editor
- [grapesjs-blocks-basic](https://github.com/GrapesJS/blocks-basic) - Basic set of blocks
- [grapesjs-plugin-forms](https://github.com/GrapesJS/components-forms) - Set of form components and blocks
- [grapesjs-navbar](https://github.com/GrapesJS/components-navbar) - Simple navbar component
- [grapesjs-component-countdown](https://github.com/GrapesJS/components-countdown) - Simple countdown component
- [grapesjs-style-gradient](https://github.com/GrapesJS/style-gradient) - Add `gradient` type input to the Style Manager
- [grapesjs-style-filter](https://github.com/GrapesJS/style-filter) - Add `filter` type input to the Style Manager
- [grapesjs-style-bg](https://github.com/GrapesJS/style-bg) - Full-stack background style property type, with the possibility to add images, colors, and gradients
- [grapesjs-blocks-flexbox](https://github.com/GrapesJS/blocks-flexbox) - Add the flexbox block
- [grapesjs-lory-slider](https://github.com/GrapesJS/components-lory) - Slider component by using [lory](https://github.com/meandmax/lory)
- [grapesjs-tabs](https://github.com/GrapesJS/components-tabs) - Simple tabs component
- [grapesjs-tooltip](https://github.com/GrapesJS/components-tooltip) - Simple, CSS only, tooltip component for GrapesJS
- [grapesjs-custom-code](https://github.com/GrapesJS/components-custom-code) - Embed custom code
- [grapesjs-touch](https://github.com/GrapesJS/touch) - Enable touch support
- [grapesjs-indexeddb](https://github.com/GrapesJS/storage-indexeddb) - Storage wrapper for IndexedDB
- [grapesjs-firestore](https://github.com/GrapesJS/storage-firestore) - Storage wrapper for [Cloud Firestore](https://firebase.google.com/docs/firestore)
- [grapesjs-parser-postcss](https://github.com/GrapesJS/parser-postcss) - Custom CSS parser for GrapesJS by using [PostCSS](https://github.com/postcss/postcss)
- [grapesjs-typed](https://github.com/GrapesJS/components-typed) - Typed component made by wrapping Typed.js library
- [grapesjs-ui-suggest-classes](https://github.com/silexlabs/grapesjs-ui-suggest-classes) - Enable auto-complete of classes in the SelectorManager UI
- [grapesjs-fonts](https://github.com/silexlabs/grapesjs-fonts) - Custom Fonts plugin, adds a UI to manage fonts in websites
- [grapesjs-symbols](https://github.com/silexlabs/grapesjs-symbols) - Symbols plugin to reuse elements in a website and accross pages
- [grapesjs-click](https://github.com/bgrand-ch/grapesjs-click) - Grab and drop blocks and components with click (no more drag-and-drop)
- [grapesjs-float](https://github.com/bgrand-ch/grapesjs-float) - Anchor a floating element next to another element (selected component, ...)
### Presets
- [grapesjs-preset-webpage](https://github.com/GrapesJS/preset-webpage) - Webpage Builder
- [grapesjs-preset-newsletter](https://github.com/GrapesJS/preset-newsletter) - Newsletter Builder
- [grapesjs-mjml](https://github.com/GrapesJS/mjml) - Newsletter Builder with MJML components
Find out more about plugins here: [Creating plugins](https://grapesjs.com/docs/modules/Plugins.html)
## Support
If you like the project and you wish to see it grow, please consider supporting us with a donation of your choice or become a backer/sponsor via [Open Collective](https://opencollective.com/grapesjs)
[![PayPalMe](http://grapesjs.com/assets/images/ppme.png)](https://paypal.me/grapesjs)
[![Bitcoin](https://user-images.githubusercontent.com/11614725/52977952-87235f80-33cf-11e9-9607-7a9a354e1155.png)](https://commerce.coinbase.com/checkout/fc90b940-558d-408b-a166-28a823c98173)
<a href="https://opencollective.com/grapesjs"><img src="https://opencollective.com/grapesjs/tiers/sponsors.svg?avatarHeight=64"></a>
<a href="https://opencollective.com/grapesjs"><img src="https://opencollective.com/grapesjs/tiers/backers.svg?avatarHeight=64"></a>
<br>
[![BrowserStack](https://user-images.githubusercontent.com/11614725/39406324-4ef89c40-4bb5-11e8-809a-113d9432e5a5.png)](https://www.browserstack.com)<br/>
Thanks to [BrowserStack](https://www.browserstack.com) for providing us browser testing services
## License
BSD 3-clause
[Documentation]: https://grapesjs.com/docs/
[API-Reference]: https://grapesjs.com/docs/api/
[CMS]: https://en.wikipedia.org/wiki/Content_management_system

15
packages/core/src/canvas/types.ts

@ -36,8 +36,7 @@ export enum CanvasEvents {
dragEnd = 'canvas:dragend',
/**
* @event `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.
* @event `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.
*/
dragData = 'canvas:dragdata',
@ -110,8 +109,7 @@ export enum CanvasEvents {
pointer = 'canvas:pointer',
/**
* @event `canvas:refresh` Canvas was refreshed to update elements on top,
* like spots/tools (eg. via `editor.Canvas.refresh()` or on frame resize).
* @event `canvas:refresh` Canvas was refreshed to update elements on top, like spots/tools (eg. via `editor.Canvas.refresh()` or on frame resize).
* @example
* editor.on('canvas:refresh', (canvasRefreshOptions) => {
* console.log('Canvas refreshed with options:', canvasRefreshOptions);
@ -120,8 +118,7 @@ export enum CanvasEvents {
refresh = 'canvas:refresh',
/**
* @event `canvas:frame:load` Frame loaded in canvas.
* The event is triggered right after iframe's `onload`.
* @event `canvas:frame:load` Frame loaded in canvas. The event is triggered right after iframe's `onload`.
* @example
* editor.on('canvas:frame:load', ({ window }) => {
* console.log('Frame loaded', window);
@ -130,8 +127,7 @@ export enum CanvasEvents {
frameLoad = 'canvas:frame:load',
/**
* @event `canvas:frame:load:head` Frame head loaded in canvas.
* The event is triggered right after iframe's finished to load the head elemenets (eg. scripts)
* @event `canvas:frame:load:head` Frame head loaded in canvas. The event is triggered right after iframe's finished to load the head elemenets (eg. scripts)
* @example
* editor.on('canvas:frame:load:head', ({ window }) => {
* console.log('Frame head loaded', window);
@ -140,8 +136,7 @@ export enum CanvasEvents {
frameLoadHead = 'canvas:frame:load:head',
/**
* @event `canvas:frame:load:body` Frame body loaded in canvas.
* The event is triggered when the body is rendered with components.
* @event `canvas:frame:load:body` Frame body loaded in canvas. The event is triggered when the body is rendered with components.
* @example
* editor.on('canvas:frame:load:body', ({ window }) => {
* console.log('Frame completed the body render', window);

10
packages/core/src/commands/types.ts

@ -11,7 +11,7 @@ export enum CommandsEvents {
_run = 'run',
/**
* @event `command:run:COMMAND_ID` Triggered on run of a specific command.
* @event `command:run:COMMAND-ID` Triggered on run of a specific command.
* @example
* editor.on('command:run:my-command', ({ result, options }) => { ... });
*/
@ -19,14 +19,14 @@ export enum CommandsEvents {
_runCommand = 'run:',
/**
* @event `command:run:before:COMMAND_ID` Triggered before the command is called.
* @event `command:run:before:COMMAND-ID` Triggered before the command is called.
* @example
* editor.on('command:run:before:my-command', ({ options }) => { ... });
*/
runBeforeCommand = 'command:run:before:',
/**
* @event `command:abort:COMMAND_ID` Triggered when the command execution is aborted.
* @event `command:abort:COMMAND-ID` Triggered when the command execution is aborted.
* @example
* editor.on('command:abort:my-command', ({ options }) => { ... });
*
@ -51,7 +51,7 @@ export enum CommandsEvents {
_stop = 'stop',
/**
* @event `command:stop:COMMAND_ID` Triggered on stop of a specific command.
* @event `command:stop:COMMAND-ID` Triggered on stop of a specific command.
* @example
* editor.on('command:run:my-command', ({ result, options }) => { ... });
*/
@ -59,7 +59,7 @@ export enum CommandsEvents {
_stopCommand = 'stop:',
/**
* @event `command:stop:before:COMMAND_ID` Triggered before the command is called to stop.
* @event `command:stop:before:COMMAND-ID` Triggered before the command is called to stop.
* @example
* editor.on('command:stop:before:my-command', ({ options }) => { ... });
*/

2
packages/core/src/dom_components/index.ts

@ -49,7 +49,7 @@
* * [getType](#gettype)
* * [getTypes](#gettypes)
*
* * [Component]: component.html
* [Component]: component.html
*
* @module Components
*/

21
packages/core/src/storage_manager/types.ts

@ -10,8 +10,7 @@ export enum StorageEvents {
start = 'storage:start',
/**
* @event `storage:start:store` Storage store request start.
* The project JSON object to store is passed as an argument (which you can edit).
* @event `storage:start:store` Storage store request start. The project JSON object to store is passed as an argument (which you can edit).
* @example
* editor.on('storage:start:store', (data) => {
* console.log('Storage start store');
@ -29,8 +28,7 @@ export enum StorageEvents {
startLoad = 'storage:start:load',
/**
* @event `storage:load` Storage loaded the project.
* The loaded project is passed as an argument.
* @event `storage:load` Storage loaded the project. The loaded project is passed as an argument.
* @example
* editor.on('storage:load', (data, res) => {
* console.log('Storage loaded the project');
@ -39,8 +37,7 @@ export enum StorageEvents {
load = 'storage:load',
/**
* @event `storage:store` Storage stored the project.
* The stored project is passed as an argument.
* @event `storage:store` Storage stored the project. The stored project is passed as an argument.
* @example
* editor.on('storage:store', (data, res) => {
* console.log('Storage stored the project');
@ -49,8 +46,7 @@ export enum StorageEvents {
store = 'storage:store',
/**
* @event `storage:after` Storage request completed.
* Triggered right after `storage:load`/`storage:store`.
* @event `storage:after` Storage request completed. Triggered right after `storage:load`/`storage:store`.
* @example
* editor.on('storage:after', (type) => {
* console.log('Storage request completed');
@ -61,8 +57,7 @@ export enum StorageEvents {
afterLoad = 'storage:after:load',
/**
* @event `storage:end` Storage request ended.
* This event triggers also in case of errors.
* @event `storage:end` Storage request ended. This event triggers also in case of errors.
* @example
* editor.on('storage:end', (type) => {
* console.log('Storage request ended');
@ -71,8 +66,7 @@ export enum StorageEvents {
end = 'storage:end',
/**
* @event `storage:end:store` Storage store request ended.
* This event triggers also in case of errors.
* @event `storage:end:store` Storage store request ended. This event triggers also in case of errors.
* @example
* editor.on('storage:end:store', () => {
* console.log('Storage store request ended');
@ -81,8 +75,7 @@ export enum StorageEvents {
endStore = 'storage:end:store',
/**
* @event `storage:end:load` Storage load request ended.
* This event triggers also in case of errors.
* @event `storage:end:load` Storage load request ended. This event triggers also in case of errors.
* @example
* editor.on('storage:end:load', () => {
* console.log('Storage load request ended');

Loading…
Cancel
Save