diff --git a/.editorconfig b/.editorconfig deleted file mode 100644 index 8b10eb01af..0000000000 --- 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 29e9e4ac40..0000000000 --- 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 0000000000..4c94328b54 --- /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 49900fb6ac..52e6a34819 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 96b1be2fb9..6e7ade2775 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 5860b4194a..0d8c971647 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 07b297225f..0a67bc2952 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 9c94c246d1..0eaed31336 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 0000000000..7ef3187015 --- /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 0000000000..0f303c93a4 --- /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 7561f0b9b9..c3f999a85a 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 58f46b400f..4c9acdbf42 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 d753626ecb..6e2d3dd2bd 100644 --- a/README.md +++ b/README.md @@ -5,10 +5,8 @@ [![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) -

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 +19,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 +101,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 +175,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 0000000000..3940eb54c5 --- /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 cf3a36a95d..d94dbf2589 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 95a620ab74..d03b4c1928 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 12148197aa..5cc129fb8f 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 a289d50960..4af3c2575a 100644 --- a/docs/.vuepress/components/DemoCustomPanels.vue +++ b/docs/.vuepress/components/DemoCustomPanels.vue @@ -1,7 +1,7 @@