base on Super simple WYSIWYG editor # Summernote [![Build Status](https://travis-ci.org/summernote/summernote.svg?branch=develop)](http://travis-ci.org/summernote/summernote) [![npm version](https://badge.fury.io/js/summernote.svg)](http://badge.fury.io/js/summernote) [![Coverage Status](https://coveralls.io/repos/summernote/summernote/badge.svg?branch=develop&service=github)](https://coveralls.io/github/summernote/summernote?branch=develop) Summernote is a JavaScript library that helps you create WYSIWYG editors with a simple and easy-to-use interface. Summernote is licensed under the MIT license and maintained by the community. Homepage: <https://summernote.org> ## Why use Summernote? - **Simple and user-friendly**: Providing an easy to use, intuitive interface - **Easy to install**: Just include the JS/CSS files on your HTML and create a `div` tag to get started - **Compatible with Bootstrap**: Bootstrap 3, 4, and 5 - **Rich ecosystem**: A wide array of [plugins and connectors](https://github.com/summernote/awesome-summernote) are available, enhancing functionality and integration options - **Easy image handling**: Images are automatically embedded in the content using base64 encoding, eliminating the need for separate image management ## How to Use Summernote is built on [jQuery](http://jquery.com/). ### How to install #### 1. Include JS/CSS Include the following code in the `<head>` tag of your HTML: ```html <!-- include libraries(jQuery, bootstrap) --> <script type="text/javascript" src="//code.jquery.com/jquery-3.6.0.min.js"></script> <link rel="stylesheet" href="//cdn.jsdelivr.net/npm/[email protected]/dist/css/bootstrap.min.css" /> <script type="text/javascript" src="//cdn.jsdelivr.net/npm/[email protected]/dist/js/bootstrap.bundle.min.js"></script> <!-- include summernote css/js--> <link href="summernote-bs5.css" rel="stylesheet"> <script src="summernote-bs5.js"></script> ``` #### 2. Place a `div` tag Place a `div` tag somewhere in the `body` tag. This element will be replaced with the summernote editor. ```html <div id="summernote">Hello Summernote</div> ``` #### 3. Initialize Summernote Finally, initialize Summernote with the following JavaScript: ```javascript $(document).ready(function() { $('#summernote').summernote(); }); ``` For more examples, please visit the [project website](http://summernote.org/examples). ### API Summernote provides a set of APIs. For example, you can use the following code to get the HTML source code underlying the text in the editor: ```javascript var html = $('#summernote').summernote('code'); ``` For more detail about the APIs, please refer to the [documentation](http://summernote.org/getting-started/#basic-api). > Warning - code injection > The code view allows the user to enter script contents. Make sure to filter/[sanitize the HTML on the server](https://github.com/search?l=JavaScript&q=sanitize+html). Otherwise, an attacker can inject arbitrary JavaScript code into clients. ## Contributing guide See [CONTRIBUTING.md]( https://github.com/summernote/summernote/blob/main/.github/CONTRIBUTING.md) for details on how to contribute to Summernote. ## Contributors ✨ Thanks go to these incredible people: <a href="https://github.com/summernote/summernote/graphs/contributors"> <img src="https://contrib.rocks/image?repo=summernote/summernote" alt="contributors"/> </a> ## Sponsors Is your company using Summernote? Ask your boss to support us. Becoming a sponsor will help us dedicate more time to maintaining this project and to making it even better for all our users. Also, your company logo will show up on here and on our website :-) [[Become a sponsor](https://opencollective.com/summernote#sponsor)] <a href="https://opencollective.com/summernote#sponsor" target="_ blank"><img src="https://opencollective.com/summernote/sponsor.svg?width=890"></a> ### Backers If you would like to contribute financially as an individual, please consider becoming a [Backer](https://opencollective.com/summernote#backers) of Summernote. <a href="https://opencollective.com/summernote#backers" target="_blank"><img src="https://opencollective.com/summernote/backers.svg?width=890"></a> ## Contact * Discord: [Join the Summernote Discord community](https://discord.gg/7A64GBKwyu) ", Assign "at most 3 tags" to the expected json: {"id":"4119","tags":[]} "only from the tags list I provide: [{"id":77,"name":"3d"},{"id":89,"name":"agent"},{"id":17,"name":"ai"},{"id":54,"name":"algorithm"},{"id":24,"name":"api"},{"id":44,"name":"authentication"},{"id":3,"name":"aws"},{"id":27,"name":"backend"},{"id":60,"name":"benchmark"},{"id":72,"name":"best-practices"},{"id":39,"name":"bitcoin"},{"id":37,"name":"blockchain"},{"id":1,"name":"blog"},{"id":45,"name":"bundler"},{"id":58,"name":"cache"},{"id":21,"name":"chat"},{"id":49,"name":"cicd"},{"id":4,"name":"cli"},{"id":64,"name":"cloud-native"},{"id":48,"name":"cms"},{"id":61,"name":"compiler"},{"id":68,"name":"containerization"},{"id":92,"name":"crm"},{"id":34,"name":"data"},{"id":47,"name":"database"},{"id":8,"name":"declarative-gui "},{"id":9,"name":"deploy-tool"},{"id":53,"name":"desktop-app"},{"id":6,"name":"dev-exp-lib"},{"id":59,"name":"dev-tool"},{"id":13,"name":"ecommerce"},{"id":26,"name":"editor"},{"id":66,"name":"emulator"},{"id":62,"name":"filesystem"},{"id":80,"name":"finance"},{"id":15,"name":"firmware"},{"id":73,"name":"for-fun"},{"id":2,"name":"framework"},{"id":11,"name":"frontend"},{"id":22,"name":"game"},{"id":81,"name":"game-engine "},{"id":23,"name":"graphql"},{"id":84,"name":"gui"},{"id":91,"name":"http"},{"id":5,"name":"http-client"},{"id":51,"name":"iac"},{"id":30,"name":"ide"},{"id":78,"name":"iot"},{"id":40,"name":"json"},{"id":83,"name":"julian"},{"id":38,"name":"k8s"},{"id":31,"name":"language"},{"id":10,"name":"learning-resource"},{"id":33,"name":"lib"},{"id":41,"name":"linter"},{"id":28,"name":"lms"},{"id":16,"name":"logging"},{"id":76,"name":"low-code"},{"id":90,"name":"message-queue"},{"id":42,"name":"mobile-app"},{"id":18,"name":"monitoring"},{"id":36,"name":"networking"},{"id":7,"name":"node-version"},{"id":55,"name":"nosql"},{"id":57,"name":"observability"},{"id":46,"name":"orm"},{"id":52,"name":"os"},{"id":14,"name":"parser"},{"id":74,"name":"react"},{"id":82,"name":"real-time"},{"id":56,"name":"robot"},{"id":65,"name":"runtime"},{"id":32,"name":"sdk"},{"id":71,"name":"search"},{"id":63,"name":"secrets"},{"id":25,"name":"security"},{"id":85,"name":"server"},{"id":86,"name":"serverless"},{"id":70,"name":"storage"},{"id":75,"name":"system-design"},{"id":79,"name":"terminal"},{"id":29,"name":"testing"},{"id":12,"name":"ui"},{"id":50,"name":"ux"},{"id":88,"name":"video"},{"id":20,"name":"web-app"},{"id":35,"name":"web-server"},{"id":43,"name":"webassembly"},{"id":69,"name":"workflow"},{"id":87,"name":"yaml"}]" returns me the "expected json"