diff --git a/.editorconfig b/.editorconfig deleted file mode 100644 index 8b10eb01a..000000000 --- a/.editorconfig +++ /dev/null @@ -1,18 +0,0 @@ -root = true - -[*] -end_of_line = lf -insert_final_newline = true - -[*.js] -charset = utf-8 -indent_style = space -indent_size = 2 -quote_type = single - -[*.ts] -charset = utf-8 -indent_style = space -indent_size = 2 -quote_type = single -max_line_length = 120 \ No newline at end of file diff --git a/.eslintrc b/.eslintrc deleted file mode 100644 index 29e9e4ac4..000000000 --- a/.eslintrc +++ /dev/null @@ -1,26 +0,0 @@ -{ - "env": { - "browser": true, - "node": true - }, - "parserOptions": { - "ecmaVersion": "latest", - "sourceType": "module" - }, - "rules": { - "strict": 0, - "quotes": ["warn", "single", { "avoidEscape": true }], - "eol-last": ["warn", "always"], - "no-mixed-requires": [0], - "no-underscore-dangle": [0] - }, - "overrides": [{ - "files": ["*.ts"], - "parser": "@typescript-eslint/parser" - }], - "ignorePatterns": [ - "dist/*", - "locale/*", - "private/*" - ] -} diff --git a/.eslintrc.js b/.eslintrc.js new file mode 100644 index 000000000..4c94328b5 --- /dev/null +++ b/.eslintrc.js @@ -0,0 +1,56 @@ +module.exports = { + root: true, // Add this to indicate this is the root ESLint configuration + env: { + browser: true, + node: true, + 'jest/globals': true, + }, + globals: { + $: true, + grapesjs: true, + }, + extends: ['eslint:recommended', 'plugin:@typescript-eslint/recommended', 'prettier'], + plugins: ['@typescript-eslint', 'jest'], + parserOptions: { + ecmaVersion: 2021, + sourceType: 'module', + }, + rules: { + 'no-var': 'off', + 'prefer-const': 'off', + 'no-prototype-builtins': 'off', + 'no-useless-escape': 'off', + 'prefer-rest-params': 'off', + 'no-empty': 'off', + 'prefer-spread': 'off', + 'no-extra-boolean-cast': 'off', + 'no-unsafe-optional-chaining': 'off', + 'no-shadow-restricted-names': 'off', + 'no-cond-assign': 'off', + 'no-fallthrough': 'off', + 'no-sparse-arrays': 'off', + 'no-redeclare': 'off', + 'no-control-regex': 'off', + 'no-constant-condition': 'off', + 'no-misleading-character-class': 'off', + 'no-undef': 'off', + 'no-func-assign': 'off', + 'no-regex-spaces': 'off', + '@typescript-eslint/ban-ts-comment': 'off', + '@typescript-eslint/no-require-imports': 'off', + '@typescript-eslint/no-explicit-any': 'off', + '@typescript-eslint/no-unused-vars': 'off', + '@typescript-eslint/no-unused-expressions': 'off', + '@typescript-eslint/no-unnecessary-type-const': 'off', + '@typescript-eslint/no-empty-object-type': 'off', + '@typescript-eslint/no-unnecessary-type-constraint': 'off', + '@typescript-eslint/no-this-alias': 'off', + '@typescript-eslint/no-unsafe-function-type': 'off', + '@typescript-eslint/no-non-null-asserted-optional-chain': 'off', + '@typescript-eslint/no-wrapper-object-types': 'off', + 'linebreak-style': ['error', 'unix'], + 'max-len': ['error', { code: 300 }], + 'no-multiple-empty-lines': ['error', { max: 1, maxEOF: 1 }], + }, + ignorePatterns: ['docs/api/*', 'dist/*'], +}; diff --git a/.github/ISSUE_TEMPLATE/1.bug_report.yml b/.github/ISSUE_TEMPLATE/1.bug_report.yml index 49900fb6a..52e6a3481 100644 --- a/.github/ISSUE_TEMPLATE/1.bug_report.yml +++ b/.github/ISSUE_TEMPLATE/1.bug_report.yml @@ -1,6 +1,6 @@ name: 🐞 Bug report description: Create a bug report for GrapesJS. -title: "BUG: " +title: 'BUG: ' labels: [] body: - type: markdown @@ -61,4 +61,4 @@ body: description: By submitting this issue, you agree to follow our [Code of Conduct](https://github.com/artf/grapesjs/blob/dev/CODE_OF_CONDUCT.md) options: - label: I agree to follow this project's Code of Conduct - required: true \ No newline at end of file + required: true diff --git a/.github/ISSUE_TEMPLATE/config.yml b/.github/ISSUE_TEMPLATE/config.yml index 96b1be2fb..6e7ade277 100644 --- a/.github/ISSUE_TEMPLATE/config.yml +++ b/.github/ISSUE_TEMPLATE/config.yml @@ -8,4 +8,4 @@ contact_links: about: 'If you have a question or need help, ask a question on the discussion forums.' - name: 📢 Show and tell url: https://github.com/artf/grapesjs/discussions/new?category=show-and-tell - about: "Have something nice to say or share about GrapesJS? We'd love to hear it!" \ No newline at end of file + about: "Have something nice to say or share about GrapesJS? We'd love to hear it!" diff --git a/.github/lock.yml b/.github/lock.yml index 5860b4194..0d8c97164 100644 --- a/.github/lock.yml +++ b/.github/lock.yml @@ -23,7 +23,6 @@ lockComment: > # Assign `resolved` as the reason for locking. Set to `false` to disable setLockReason: true - # Limit to only `issues` or `pulls` # only: issues @@ -37,4 +36,4 @@ setLockReason: true # daysUntilLock: 30 # Repository to extend settings from -# _extends: repo \ No newline at end of file +# _extends: repo diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml index 07b297225..0a67bc295 100644 --- a/.github/workflows/publish.yml +++ b/.github/workflows/publish.yml @@ -9,15 +9,14 @@ jobs: if: ${{ false }} runs-on: ubuntu-latest steps: - - uses: actions/checkout@v3 - - uses: actions/setup-node@v3 + - uses: actions/checkout@v4 + - uses: actions/setup-node@v4 with: - node-version: '12.x' + node-version: '20.x' registry-url: 'https://registry.npmjs.org' cache: 'yarn' - run: yarn --frozen-lockfile - run: yarn build - - run: npm run lint - run: npm publish env: - NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }} \ No newline at end of file + NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }} diff --git a/.github/workflows/build.yml b/.github/workflows/quailty.yml similarity index 61% rename from .github/workflows/build.yml rename to .github/workflows/quailty.yml index 9c94c246d..0eaed3133 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/quailty.yml @@ -2,27 +2,29 @@ name: Tests on: push: - branches: [ dev ] + branches: [dev] pull_request: - branches: [ dev ] + branches: [dev] jobs: - build: + quailty: runs-on: ubuntu-latest strategy: matrix: - node-version: [14.17, 16.x] + node-version: [18.x, 20.x] steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 - name: Use Node.js ${{ matrix.node-version }} - uses: actions/setup-node@v3 + uses: actions/setup-node@v4 with: node-version: ${{ matrix.node-version }} cache: 'yarn' - run: yarn --frozen-lockfile - - run: yarn build - run: npm run lint + - run: npm run lint:ts + - run: npm run format:check + - run: yarn build - run: npm run ts:build:check - - run: npm test \ No newline at end of file + - run: npm test diff --git a/.prettierignore b/.prettierignore new file mode 100644 index 000000000..7ef318701 --- /dev/null +++ b/.prettierignore @@ -0,0 +1,2 @@ +docs/api/*.md +dist/ \ No newline at end of file diff --git a/.prettierrc b/.prettierrc new file mode 100644 index 000000000..0f303c93a --- /dev/null +++ b/.prettierrc @@ -0,0 +1,10 @@ +{ + "endOfLine": "lf", + "insertPragma": false, + "requirePragma": false, + "trailingComma": "all", + "tabWidth": 2, + "useTabs": false, + "singleQuote": true, + "printWidth": 120 +} diff --git a/CODE_OF_CONDUCT.md b/CODE_OF_CONDUCT.md index 7561f0b9b..c3f999a85 100644 --- a/CODE_OF_CONDUCT.md +++ b/CODE_OF_CONDUCT.md @@ -8,19 +8,19 @@ In the interest of fostering an open and welcoming environment, we as contributo Examples of behavior that contributes to creating a positive environment include: -* Using welcoming and inclusive language -* Being respectful of differing viewpoints and experiences -* Gracefully accepting constructive criticism -* Focusing on what is best for the community -* Showing empathy towards other community members +- Using welcoming and inclusive language +- Being respectful of differing viewpoints and experiences +- Gracefully accepting constructive criticism +- Focusing on what is best for the community +- Showing empathy towards other community members Examples of unacceptable behavior by participants include: -* The use of sexualized language or imagery and unwelcome sexual attention or advances -* Trolling, insulting/derogatory comments, and personal or political attacks -* Public or private harassment -* Publishing others' private information, such as a physical or electronic address, without explicit permission -* Other conduct which could reasonably be considered inappropriate in a professional setting +- The use of sexualized language or imagery and unwelcome sexual attention or advances +- Trolling, insulting/derogatory comments, and personal or political attacks +- Public or private harassment +- Publishing others' private information, such as a physical or electronic address, without explicit permission +- Other conduct which could reasonably be considered inappropriate in a professional setting ## Our Responsibilities diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 58f46b400..4c9acdbf4 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -5,12 +5,12 @@ First of all, thank you for considering contributing to GrapesJS! We welcome any type of contribution, not only code. Like for example: + - **QA**: file bug reports, the more details you can give the better (e.g. screenshots with the console open) - **Marketing**: writing blog posts, howto's, tutorials, etc. - **Community**: presenting the project at meetups, organizing a dedicated meetup for the local community, etc. - **Money**: We welcome financial contributions in full transparency on our [Open Collective]. - ## Setting up the repository This is a Node.js project and you need to have Node.js installed on your machine. You can download it from [here](https://nodejs.org/). We test versions 14 and 16 of Node in the CI, so it's recommended to use one of these versions, or the latest of: 16.20.2 @@ -45,7 +45,6 @@ Navigate to `http://localhost:8080/` to see the editor in action. The developmen Working on your first Pull Request? You can learn how from this **free** series, [How to Contribute to an Open Source Project on GitHub](https://app.egghead.io/playlists/how-to-contribute-to-an-open-source-project-on-github). - ## Submitting code Any code change should be submitted as a pull request. Before start working on something make always a search in opened issues and pull requests, this might help you to avoid wasting time. @@ -54,29 +53,23 @@ A pull request could be a bug fix, new feature and much more, but in all cases, The title should be brief but comprehensive, the description contains a link to the opened issue and the proposed solution. The pull request should contain tests whenever possible. Keep in mind that the bigger is the pull request, the longer it will take to review and merge. Try to break down large pull requests in smaller chunks that are easier to review and merge. - ## Styleguide The code is auto formatted with [prettier](https://github.com/prettier/prettier) on any commit, therefore you can write in any style you prefer - ## Expenses Anyone can file an expense (code, marketing, etc.) via our [Open Collective]. If the expense makes sense for the development of the community, it will be "merged" in the ledger of our open collective by the core contributors and the person who filed the expense will be reimbursed. Before submitting an expense contact core contributors via the current active chat room ([Discord](https://discord.gg/QAbgGXq)) and explain your intents - ## Questions If you have any questions, create an [issue](https://github.com/GrapesJS/grapesjs/issues) (protip: do a quick search first to see if someone else didn't ask the same question before!). - - ## Credits Thank you to all the people who have already contributed to GrapesJS! - -[Open Collective]: +[Open Collective]: https://opencollective.com/grapesjs diff --git a/README.md b/README.md index d753626ec..d6b54cc9b 100644 --- a/README.md +++ b/README.md @@ -5,10 +5,10 @@ [![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.

GrapesJS

- 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
@@ -21,86 +21,70 @@ This demos show examples of what is possible to achieve:
Webpage Demo - http://grapesjs.com/demo.html
Newsletter Demo - http://grapesjs.com/demo-newsletter-editor.html
- - - - ## 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](#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 | -|--|--|--| -|GrapesJS - Block Manager|GrapesJS - Style Manager|GrapesJS - Layer Manager| - -| Code Viewer | Asset Manager | -|--|--| -|GrapesJS - Code Viewer|GrapesJS - Asset Manager| - -* Local and remote storage - -* Default built-in commands (basically for creating and managing different components) - +| Blocks | Style Manager | Layer Manager | +| ---------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------- | +| GrapesJS - Block Manager | GrapesJS - Style Manager | GrapesJS - Layer Manager | +| Code Viewer | Asset Manager | +| -------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------- | +| GrapesJS - Code Viewer | GrapesJS - Asset Manager | +- 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` +- 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 - +
``` For a more practical example I'd suggest looking up the code inside this demo: http://grapesjs.com/demo.html - ## Development Clone the repository and install all the necessary dependencies (`yarn` is highly recommended) @@ -119,86 +103,65 @@ $ yarn start Once the development server is started you should be able to reach the demo page (eg. `http://localhost:8080`) - - - - ## Documentation Check the getting started guide here: [Documentation] - - - - ## API API References could be found here: [API-Reference] - - - - ## Testing ```sh $ yarn 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. - - +- [@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, ...) + +- [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 +- [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) @@ -214,12 +177,10 @@ If you like the project and you wish to see it grow, please consider supporting [![BrowserStack](https://user-images.githubusercontent.com/11614725/39406324-4ef89c40-4bb5-11e8-809a-113d9432e5a5.png)](https://www.browserstack.com)
Thanks to [BrowserStack](https://www.browserstack.com) for providing us browser testing services - ## License BSD 3-clause - -[Documentation]: -[API-Reference]: -[CMS]: +[Documentation]: https://grapesjs.com/docs/ +[API-Reference]: https://grapesjs.com/docs/api/ +[CMS]: https://en.wikipedia.org/wiki/Content_management_system diff --git a/babel.config.js b/babel.config.js new file mode 100644 index 000000000..3940eb54c --- /dev/null +++ b/babel.config.js @@ -0,0 +1,8 @@ +/** @type {import('@babel/core')} */ +module.exports = { + env: { + test: { + presets: ['@babel/preset-env', '@babel/preset-typescript'], + }, + }, +}; diff --git a/docs/.vuepress/components/Demo.vue b/docs/.vuepress/components/Demo.vue index cf3a36a95..d94dbf258 100644 --- a/docs/.vuepress/components/Demo.vue +++ b/docs/.vuepress/components/Demo.vue @@ -1,14 +1,14 @@ diff --git a/docs/.vuepress/components/DemoBasicBlocks.vue b/docs/.vuepress/components/DemoBasicBlocks.vue index 95a620ab7..d03b4c192 100644 --- a/docs/.vuepress/components/DemoBasicBlocks.vue +++ b/docs/.vuepress/components/DemoBasicBlocks.vue @@ -13,18 +13,18 @@ import utils from './demos/utils.js'; export default { mounted() { window.editor2 = grapesjs.init(utils.gjsConfigBlocks); - } -} + }, +}; diff --git a/docs/.vuepress/components/DemoCanvasOnly.vue b/docs/.vuepress/components/DemoCanvasOnly.vue index 12148197a..5cc129fb8 100644 --- a/docs/.vuepress/components/DemoCanvasOnly.vue +++ b/docs/.vuepress/components/DemoCanvasOnly.vue @@ -1,5 +1,4 @@ - + - + diff --git a/docs/.vuepress/components/DemoCustomPanels.vue b/docs/.vuepress/components/DemoCustomPanels.vue index a289d5096..4af3c2575 100644 --- a/docs/.vuepress/components/DemoCustomPanels.vue +++ b/docs/.vuepress/components/DemoCustomPanels.vue @@ -1,7 +1,7 @@