๐Ÿž๐ŸŽจ Full-featured photo image editor using canvas. It is really easy, and it comes with great filters.

Overview

Toast UI ImageEditor

Full featured image editor using HTML5 Canvas. It's easy to use and provides powerful filters.

github version npm version license PRs welcome code with hearth by NHN lerna

๐Ÿ“ฆ Packages

6 -20-2018 17-45-54

๐Ÿšฉ Table of Contents

๐ŸŒ Browser Support

Chrome Chrome IE Internet Explorer Edge Edge Safari Safari Firefox Firefox
Yes 10+ Yes Yes Yes

๐Ÿ’ช Has full features that stick to the basic.

Photo manipulation

  • Crop, Flip, Rotation, Drawing, Shape, Icon, Text, Mask Filter, Image Filter

Integration function

  • Download, Image Load, Undo, Redo, Reset, Delete Object(Shape, Line, Mask Image...)
Crop Flip Rotation Drawing Shape
2018-06-04 4 33 16 2018-06-04 4 40 06 2018-06-04 4 43 02 2018-06-04 4 47 40 2018-06-04 4 51 45
Icon Text Mask Filter
2018-06-05 2 06 29 2018-06-05 2 14 36 2018-06-05 2 20 46 2018-06-05 2 27 10

Powerful filter function

  • Grayscale, Invert, Sepia, Blur Sharpen, Emboss, RemoveWhite, Brightness, Noise, Pixelate, ColorFilter, Tint, Multiply, Blend
Grayscale Noise Emboss Pixelate
grayscale noise emboss pixelate
Sepia Sepia2 Blend-righten Blend-diff Invert
sepia sepia2 blend-righten blend-diff invert
Multifly Tint Brightness Remove-white Sharpen
multifly tint brightness remove-white sharpen

๐Ÿ™† Easy to apply the size and design you want

Can be used everywhere.

  • Widely supported in browsers including IE10.

  • Option to support various display sizes. (allows you to use the editor features on your web pages at least over 550 * 450 sizes)

    2018-06-04 5 35 25

Nice default & Fully customizable Themes

  • Has a white and black theme, and you can modify the theme file to customize it.
  • Has an API so that you can create your own instead of the built-in.
black - top black - bottom white - left white - right
2018-06-05 1 41 13 2018-06-05 1 40 24 2018-06-05 1 41 48 2018-06-05 1 42 27

๐ŸŽจ Features

  • Load image to canvas
  • Undo/Redo (With shortcut)
  • Crop
  • Flip
  • Rotation
  • Resize
  • Free drawing
  • Line drawing
  • Shape
  • Icon
  • Text
  • Mask Filter
  • Image Filter

๐Ÿ”ง Pull Request Steps

TOAST UI products are open source, so you can create a pull request(PR) after you fix issues. Run npm scripts and develop yourself with the following process.

Setup

Fork develop branch into your personal repository. Clone it to local computer. Install node modules. Before starting development, you should check if there are any errors.

$ git clone https://github.com/{your-personal-repo}/[[repo name]].git
$ cd [[repo name]]
$ npm install

Pull Request

Before uploading your PR, run test one last time to check if there are any errors. If it has no errors, commit and then push it!

For more information on PR's steps, please see links in the Contributing section.

๐Ÿ“™ Documents

๐Ÿ’ฌ Contributing

๐Ÿ”ฉ Dependency

๐Ÿž TOAST UI Family

๐Ÿš€ Used By

๐Ÿ“œ License

MIT LICENSE

Comments
  • How to add custom menu buttons

    How to add custom menu buttons

    Version

    3.4.0

    Development Environment

    Windows 10

    Current Behavior

    All menu buttons are predefined menu: ['crop', 'flip', 'rotate', 'draw', 'shape', 'text', 'filter'],

    Question

    How can I add custom menu buttons? For example 'save'?

    Question inactive 
    opened by GEMI 24
  • feat: change css to allow color picker selector to show (refs #634)

    feat: change css to allow color picker selector to show (refs #634)

    Please check if the PR fulfills these requirements

    • [x] It's submitted to right branch according to our branching model
    • [x] It's right issue type on title
    • [x] When resolving a specific issue, it's referenced in the PR's title (e.g. fix #xxx[,#xxx], where "xxx" is the issue number)
    • [x] The commit message follows our guidelines
    • [ ] Tests for the changes have been added (for bug fixes/features)
    • [ ] Docs have been added/updated (for bug fixes/features)
    • [x] It does not introduce a breaking change or has description for the breaking change

    Description

    This pull request changes the css so that the color slider from the color picker shows up. It would make it easier for people to select colors. I'm not sure why this was hidden. I had to add some css to make it show up correctly.

    Before:

    color-before

    After:

    color-after

    inactive 
    opened by adeptflax 20
  • After free drawing and rotate the canvas,the drawing don't set to the right position.

    After free drawing and rotate the canvas,the drawing don't set to the right position.

    Version

    lastest master

    Development Environment

    Google Chrome Canary

    Current Behavior

    1. select draw mode,draw a random line on the canvas.
    2. use rotate tool
    3. the freedrawing line don't show on the right place,but others position of shape is correct.

    Expected Behavior

    I want the freedrawing line stay on the right place after rotate.And wonder why only freedrawing mode will cause the problem.Is any different between freedrawing and other line or shape?

    opened by cocoroise 17
  • feat: Added ability to allow developers to change colour palette preset

    feat: Added ability to allow developers to change colour palette preset

    Added ability to allow developers to change colour palette preset feat: Customize default colour palette (#481)

    feat: #481

    Please check if the PR fulfills these requirements

    • [x] It's submitted to right branch according to our branching model
    • [x] It's right issue type on title
    • [x] When resolving a specific issue, it's referenced in the PR's title (e.g. fix #xxx[,#xxx], where "xxx" is the issue number)
    • [x] The commit message follows our guidelines
    • [x] Tests for the changes have been added (for bug fixes/features)
    • [x] Docs have been added/updated (for bug fixes/features)
    • [x] It does not introduce a breaking change or has description for the breaking change

    Description

    Added ability to allow developers to change colour palette preset

    When constructing the ImageEditor a developer can now pass through their own colour palette if they don't want to use the preset one.


    Thank you for your contribution to TOAST UI product. ๐ŸŽ‰ ๐Ÿ˜˜ โœจ

    inactive 
    opened by marcodafonseca 16
  • Draw tool issue #1 - strokes change its position by itself

    Draw tool issue #1 - strokes change its position by itself

    Version

    3.5.3 and 3.6.0

    Development Environment

    Chrome, Windows

    Current Behavior

    1. Go to http://nhn.github.io/tui.image-editor/latest/tutorial-example01-includeUi/
    2. Select Draw tool.
    3. Draw first stoke.
    4. When starting to draw second stroke - first stroke moved.
    5. When starting to draw third stroke - second stroke moved. etc. See screen capture attached. draw_tool_issue_1 draw_tool_issue_1.zip

    Expected Behavior

    Previous strokes shouldn't change its position when drawing some more ones.

    Bug 
    opened by onadein 16
  • Can't resolve 'Fabric/fabric.require' in node_modules.

    Can't resolve 'Fabric/fabric.require' in node_modules.

    Module not found: Error: Can't resolve 'fabric/dist/fabric.require' in '.\node_modules\tui-image-editor\dist'

    I've already looked at former issues with fabric, these are not fixing the problem.

    Version

    "tui-image-editor": "^3.2.2" Angular 6.1.0 Node 8.11 Tried with fabric 1.6.7 and 2.4.2

    // Write example code
    instance = new ImageEditor(document.querySelector('#tui-image-editor'),
            { cssMaxWidth: 700, cssMaxHeight: 500, selectionStyle: { cornerSize: 20, rotatingPointOffset: 70 }
            });
    
    Enhancement 
    opened by Fridthjof 15
  • fix: respect presetRatio on new cropzone

    fix: respect presetRatio on new cropzone

    Please check if the PR fulfills these requirements

    • [x] It's submitted to right branch according to our branching model
    • [ ] It's right issue type on title
    • [ ] When resolving a specific issue, it's referenced in the PR's title (e.g. fix #xxx[,#xxx], where "xxx" is the issue number)
    • [x] The commit message follows our guidelines
    • [x] Tests for the changes have been added (for bug fixes/features)
    • [ ] Docs have been added/updated (for bug fixes/features)
    • [x] It does not introduce a breaking change or has description for the breaking change

    Description

    Problem (how it is now):

    • in crop mode
    • choose a preset ratio (eg. 16/9)
    • draw/make a new cropzone
    • the aspect ratio is not restricted to the chosen preset ratio (not like when resizing the cropzone by the corners)

    This PR fixes that problem. When you now draw/make a new cropzone while having selected a preset ratio, that preset ratio is now respected.

    opened by adzlocal 14
  • feat: add mosaic brush in menu

    feat: add mosaic brush in menu

    Please check if the PR fulfills these requirements

    • [x] It's submitted to right branch according to our branching model
    • [x] It's right issue type on title
    • [x] When resolving a specific issue, it's referenced in the PR's title (e.g. fix #xxx[,#xxx], where "xxx" is the issue number)
    • [x] The commit message follows our guidelines
    • [ ] Tests for the changes have been added (for bug fixes/features)
    • [ ] Docs have been added/updated (for bug fixes/features)
    • [x] It does not introduce a breaking change or has description for the breaking change

    Description

    When I used tui.iamge-editor, I found that it did not have the feat of mosaic brush. This feat is very important to us, so I implemented it myself. However, this PR does not contain SVG icons. I hope a partner can provide a set of SVG icons. You can mark it as help wanted when you receive this PR. This PR is just missing the SVG iconใ€‚

    opened by jkcs 14
  • All buttons of the Tui image editor are disabled and don't work when i use LoadImageUrl or LoadImageFile to load a specific image programmaticaly in Angular

    All buttons of the Tui image editor are disabled and don't work when i use LoadImageUrl or LoadImageFile to load a specific image programmaticaly in Angular

    Describe the bug When i use loadImageURL of the ImageEditor Object, the options button (Crop, Shape, and all of them) are disabled and i can't set do any action on the loaded image.

    To Reproduce Steps to reproduce the behavior:

    1. Create an angular project and add the Tui Image editor module.
    2. Open the the tui image editor in a modal or in the page using typescript
    3. Load an image programmatically on the initialization of the Tui image editor
    4. and try to click on any of actions buttons

    Expected behavior Actions Button click work.

    Code import ImageEditor = require('tui-image-editor'); const instance = new ImageEditor(document.querySelector('#tui-image-editor'), { includeUI: { loadImage: { path: window.URL.createObjectURL(this.image), name: 'event' }, menu: ['shape', 'crop'], menuBarPosition: 'bottom' }, cssMaxWidth: 700, cssMaxHeight: 500, selectionStyle: { cornerSize: 20, rotatingPointOffset: 70 } });

    Desktop:

    • OS: Windows 10
    • Browser: chrome

    Capture dโ€™รฉcran 2020-10-30 102529

    Bug 
    opened by PierreKoung 14
  • Error after installation

    Error after installation

    Hi After the npm install --save tui-image-editor The Fabric Js can't found Http and Https modules.

    I use: Node js: 8.11.1, NPM 6.1.0, Angular 6.

    Installed for Fabric: https://www.npmjs.com/package/@types/fabric

    Error code: ERROR in 'node_modules/fabric/dist/fabric.require.js Module not found: Error: Can't resolve 'http' in 'node_modules\fabric\dist' ERROR in 'node_modules/fabric/dist/fabric.require.js' Module not found: Error: Can't resolve 'https' in 'node_modules\fabric\dist'

    Import from Node modules: import * as ImageEditor from 'tui-image-editor';

    Call the editor: const instance = new ImageEditor(document.querySelector('#tui-image-editor'), { cssMaxWidth: 700, cssMaxHeight: 500, selectionStyle: { cornerSize: 20, rotatingPointOffset: 70 } }); ` Any idea what the problem?

    Question 
    opened by beyondtheobservableuniverse 14
  • feat: Limit max width/height of resize to the image to disallow upscaling

    feat: Limit max width/height of resize to the image to disallow upscaling

    Please check if the PR fulfills these requirements

    • [x] It's submitted to right branch according to our branching model
    • [x] It's right issue type on title
    • [ ] When resolving a specific issue, it's referenced in the PR's title (e.g. fix #xxx[,#xxx], where "xxx" is the issue number)
    • [x] The commit message follows our guidelines
    • [ ] Tests for the changes have been added (for bug fixes/features)
    • [ ] Docs have been added/updated (for bug fixes/features)
    • [x] It does not introduce a breaking change or has description for the breaking change

    Description

    Hi all, in this PR I propose a change to the resize module. Currently the sliders allow resizing up to 4088px (Any particular reason or just arbitrary?); after this patch the images will not be able to be resized over 100% to disallow upscaling. Not only does the application become laggy when resizing the image above its original dimensions but there is also little to no benefit for it.

    Of course this could also be an option instead of being the default forced behavior but I'm open to discussion.

    opened by maldoinc 12
  • fix: fill types

    fix: fill types

    Fix for mismatch types for fill types

    Please check if the PR fulfills these requirements

    • [ ] It's submitted to right branch according to our branching model
    • [ ] It's right issue type on title
    • [ ] When resolving a specific issue, it's referenced in the PR's title (e.g. fix #xxx[,#xxx], where "xxx" is the issue number)
    • [ ] The commit message follows our guidelines
    • [ ] Tests for the changes have been added (for bug fixes/features)
    • [ ] Docs have been added/updated (for bug fixes/features)
    • [x] It does not introduce a breaking change or has description for the breaking change

    Description

    Documentations states that objects can have fill option as either string or ShapeFillOption, but it was not typed. rel: https://nhn.github.io/tui.image-editor/latest/ShapeFillOption


    Thank you for your contribution to TOAST UI product. ๐ŸŽ‰ ๐Ÿ˜˜ โœจ

    opened by k10wl 0
  • style css warning

    style css warning

    Describe the bug image

    To Reproduce Steps to reproduce the behavior:

    1. Go to '...'
    2. Click on '....'
    3. Scroll down to '....'
    4. See error

    Expected behavior A clear and concise description of what you expected to happen.

    Screenshots If applicable, add screenshots to help explain your problem.

    Desktop (please complete the following information):

    • OS: [e.g. iOS]
    • Browser [e.g. chrome, safari]
    • Version [e.g. 22]

    Smartphone (please complete the following information):

    • Device: [e.g. iPhone6]
    • OS: [e.g. iOS8.1]
    • Browser [e.g. stock browser, safari]
    • Version [e.g. 22]

    Additional context Add any other context about the problem here.

    Bug 
    opened by ybom77 0
  • chore(deps): bump express from 4.17.1 to 4.18.2

    chore(deps): bump express from 4.17.1 to 4.18.2

    Bumps express from 4.17.1 to 4.18.2.

    Release notes

    Sourced from express's releases.

    4.18.2

    4.18.1

    • Fix hanging on large stack of sync routes

    4.18.0

    ... (truncated)

    Changelog

    Sourced from express's changelog.

    4.18.2 / 2022-10-08

    4.18.1 / 2022-04-29

    • Fix hanging on large stack of sync routes

    4.18.0 / 2022-04-25

    ... (truncated)

    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    • @dependabot use these labels will set the current labels as the default for future PRs for this repo and language
    • @dependabot use these reviewers will set the current reviewers as the default for future PRs for this repo and language
    • @dependabot use these assignees will set the current assignees as the default for future PRs for this repo and language
    • @dependabot use this milestone will set the current milestone as the default for future PRs for this repo and language

    You can disable automated security fix PRs for this repo from the Security Alerts page.

    dependencies 
    opened by dependabot[bot] 0
  • tui-image-editor not showing properly

    tui-image-editor not showing properly

    Summary tui-image-editor not showing properly in Vanilla.js. Why? What am I doing wrong? Screenshots image

    Version 3.15.3

    Additional context code:

    import "./styles.css";
    
    var ImageEditor = require("tui-image-editor");
    var FileSaver = require("file-saver"); //to download edited image to local. Use after npm install file-saver
    // var blackTheme = require("darktheme");
    var locale_ru_RU = {
      // override default English locale to your custom
      Crop: "ะžะฑะทั€ะตะทะฐั‚ัŒ",
      "Delete-all": "ะฃะดะฐะปะธั‚ัŒ ะฒัั‘"
      // etc...
    };
    var instance = new ImageEditor(document.querySelector("#tui-image-editor"), {
      includeUI: {
        loadImage: {
          path: "img/sampleImage.jpg",
          name: "SampleImage"
        },
        locale: locale_ru_RU,
        // theme: blackTheme, // or whiteTheme
        initMenu: "filter",
        menuBarPosition: "bottom"
      },
      cssMaxWidth: 700,
      cssMaxHeight: 500,
      selectionStyle: {
        cornerSize: 20,
        rotatingPointOffset: 70
      }
    });
    

    sandbox where I got this result https://ryy3zx.csb.app

    Question 
    opened by AkylbekSul 2
  • When used multiple times on same screen on IOS mobile browsers getContext(

    When used multiple times on same screen on IOS mobile browsers getContext("2d") returns null

    Describe the bug In react when the image editor is opened at a minimum 3 times on the same screen with different images in a single session it throws an error of "null is not an object (evaluating ctx.clearRect)"

    To Reproduce Add image editor to a modal load image into the editor after loading on before modal close call editorInstance.toDataURL({ format: "jpeg", quality: 0.9 }), on the third image it will throw "null is not an object (evaluating ctx.clearRect)" error

    Smartphone (please complete the following information):

    • Device: iPhone 10
    • OS: IOS 16
    • Browser Chrome

    Additional context Package version "@toast-ui/react-image-editor": "^3.15.0"

    Bug 
    opened by AbdulAhadArain 1
  • chore(deps): bump qs from 6.5.2 to 6.5.3

    chore(deps): bump qs from 6.5.2 to 6.5.3

    Bumps qs from 6.5.2 to 6.5.3.

    Changelog

    Sourced from qs's changelog.

    6.5.3

    • [Fix] parse: ignore __proto__ keys (#428)
    • [Fix] utils.merge`: avoid a crash with a null target and a truthy non-array source
    • [Fix] correctly parse nested arrays
    • [Fix] stringify: fix a crash with strictNullHandling and a custom filter/serializeDate (#279)
    • [Fix] utils: merge: fix crash when source is a truthy primitive & no options are provided
    • [Fix] when parseArrays is false, properly handle keys ending in []
    • [Fix] fix for an impossible situation: when the formatter is called with a non-string value
    • [Fix] utils.merge: avoid a crash with a null target and an array source
    • [Refactor] utils: reduce observable [[Get]]s
    • [Refactor] use cached Array.isArray
    • [Refactor] stringify: Avoid arr = arr.concat(...), push to the existing instance (#269)
    • [Refactor] parse: only need to reassign the var once
    • [Robustness] stringify: avoid relying on a global undefined (#427)
    • [readme] remove travis badge; add github actions/codecov badges; update URLs
    • [Docs] Clean up license text so itโ€™s properly detected as BSD-3-Clause
    • [Docs] Clarify the need for "arrayLimit" option
    • [meta] fix README.md (#399)
    • [meta] add FUNDING.yml
    • [actions] backport actions from main
    • [Tests] always use String(x) over x.toString()
    • [Tests] remove nonexistent tape option
    • [Dev Deps] backport from main
    Commits
    • 298bfa5 v6.5.3
    • ed0f5dc [Fix] parse: ignore __proto__ keys (#428)
    • 691e739 [Robustness] stringify: avoid relying on a global undefined (#427)
    • 1072d57 [readme] remove travis badge; add github actions/codecov badges; update URLs
    • 12ac1c4 [meta] fix README.md (#399)
    • 0338716 [actions] backport actions from main
    • 5639c20 Clean up license text so itโ€™s properly detected as BSD-3-Clause
    • 51b8a0b add FUNDING.yml
    • 45f6759 [Fix] fix for an impossible situation: when the formatter is called with a no...
    • f814a7f [Dev Deps] backport from main
    • Additional commits viewable in compare view

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    • @dependabot use these labels will set the current labels as the default for future PRs for this repo and language
    • @dependabot use these reviewers will set the current reviewers as the default for future PRs for this repo and language
    • @dependabot use these assignees will set the current assignees as the default for future PRs for this repo and language
    • @dependabot use this milestone will set the current milestone as the default for future PRs for this repo and language

    You can disable automated security fix PRs for this repo from the Security Alerts page.

    dependencies 
    opened by dependabot[bot] 0
Releases(v3.15.3)
  • v3.15.3(Apr 25, 2022)

    Fix

    • update the range component to not trigger changes immediately after typing (PR #646)
    • improve applyFilter parameter type (PR #687)
    • respect preset ratio on new cropzone (PR #700)

    Env

    • update tui-code-snippet (PR #688)
    Source code(tar.gz)
    Source code(zip)
  • v3.15.2(Oct 20, 2021)

    Fix

    • tui-code-snippet is included in the tui-code-snippet package. (#664)
      • tui-code-snippet is not included in the tui-image-editor package, so errors occur during compilation.
    Source code(tar.gz)
    Source code(zip)
  • v3.15.1(Oct 20, 2021)

    Fix

    • fix 'px' labels on the resize feature while using menuBarPosition: "left|right" (PR #644)

    Env

    • update babel, webpack and their options
      • Fabric has been included in the bundle. Now, when using the tui-image-editor, there is no need to load fabric separately.
    Source code(tar.gz)
    Source code(zip)
  • v3.15.0(Jul 28, 2021)

  • v3.14.3(Apr 8, 2021)

  • v3.14.2(Mar 25, 2021)

    Fix

    • unable to press space key in the text box outside the image-editor. [fix #556] (PR #563)
    • not work space key when vue image-editor component loaded. [fix #560] (PR #564)
    Source code(tar.gz)
    Source code(zip)
  • v3.14.1(Mar 19, 2021)

  • v3.14.0(Mar 8, 2021)

    Feat

    • add zoom feature (PR #553)
      • zoom-in feature
        • zoom-in
        • Drag or click to zoom-in!
      • zoom-out feature
        • zoom-out
        • Click zoom-out to return to the previous zoom level!
      • hand feature
        • hand
        • Use the hand tool to move the canvas!
          • Or use space bar to turn on/off hand
    Source code(tar.gz)
    Source code(zip)
  • v3.13.0(Mar 5, 2021)

    Feat

    • add history feature (PR #544)
      • แ„’แ…ชแ„†แ…งแ†ซ-แ„€แ…ตแ„…แ…ฉแ†จ-2021-03-08-แ„‹แ…ฉแ„’แ…ฎ-5 10 37

    Fix

    • error when undo after text added [#521] (PR #545)
    • group selection object position when undo, redo in API direct page [#522] (PR #546)
    • fire object modified event when cropzone changed [#519] (PR #547)
    • resize cropzone with ratio by pressing shift key (PR #548)
    Source code(tar.gz)
    Source code(zip)
  • v3.12.0(Mar 5, 2021)

    Feat

    • apply mono-repo (PR #524)

    Fix

    • not work filter in direct api example [#388] (PR #525)
    • classname error when clicking in the gap [#411] (PR #526)
    • not occur text changed event [#387, #419] (PR #527)
    • disappear image when apply crop [#359] (PR #528)
    Source code(tar.gz)
    Source code(zip)
  • v3.11.0(Dec 9, 2020)

    feat

    • add undo stack of object resize/move (#358)
    • update fabric.js version to 4.2.0 (#461)
    • add icon drawing mode (#74, #441)

    Enhancement

    • apply prettier (PR #493)

    bug-fix

    • not apply text line-through decoration (#453)
    • not apply setBrush API when LINE_DRAWING (#409, #418)
    Source code(tar.gz)
    Source code(zip)
  • v3.10.1(Nov 16, 2020)

  • v3.10.0(Jul 21, 2020)

    Added

    • Add filter type with shape fill option
    imageEditor.setDrawingShape('rect', {
       fill: {
           type: 'filter',
           filter: [{blur: 0.3}, {pixelate: 20}]
       },
       width: 100,
       height: 200
    });
    
    imageEditor.addShape('rect', {
       fill: {
           type: 'filter',
           filter: [{blur: 0.3}, {pixelate: 20}]
       },
       width: 100,
       height: 200,
       left: 100,
       top: 100,
       stroke: 'blue',
       strokeWidth: 3
    });
    
    • Added an option to draw an arrow shape with the line drawing option.
    imageEditor.startDrawingMode('LINE_DRAWING', {
        width: 10,
        color: 'rgba(255,0,0,0.5)',
        arrowType: {
            tail: 'chevron' // triangle
        }
    });
    
    • Added autofocus option for addText api.

    bug-fix

    • Fixed minor bugs in text objects (fix #262 #109).
    Source code(tar.gz)
    Source code(zip)
  • v3.10.0-alpha.0(Jul 9, 2020)

  • v3.9.0(Mar 11, 2020)

    Enhancement

    • Added object rotation event listener for user reference (#322)
    • Added copy and paste function (fixed #63) (#355)
    • Improved svg to show built-in svg, no need to set file path. (#347)

    Bug fixop

    • Fixed bug where UI code was not handled well when running destroy api. (fixed #334) (#332)
    • Missing tooltips for redo, undo, reset, delete, and delete-all (fixed #266) (#330)
    • Rotation breaks image aspect ratio (fixed #340) (#355)
    • Fixed cropzone distortion. (fixed #101) (#349)
    Source code(tar.gz)
    Source code(zip)
  • v3.8.0(Feb 12, 2020)

    Enhancement

    • In the UI included option, it has been improved to change the input text value of the slider UI to change the value more accurately (#183)
    • Improved behavior so that 'undoStack' is not reflected while dragging from silder UI with UI included option (#310)
    • Added isSilent (not included in undoStack) parameter for changeShape, changeTextStyle, applyFilter api (#310)
    • After setting the Cropzone area by specifying a ratio, the ratio is maintained and resized when resizing (#124)

    Bug fix

    • Fixed incorrect reporting of 'objectMoved` event listener when moving cropzone (fixed #269)
    • Fixed a bug in the undo run for each image editor menu (fixed #315).
      • Fixed a bug where undoing the correct previous value would not work when undoing commands executed with the isSilent parameter of rotate and setAngle api. (fixed #307)
    Source code(tar.gz)
    Source code(zip)
  • v3.7.3(Jan 22, 2020)

    bug-fix

    • Fixed npm installation not installing properly on node.js stable version. (fixed #298)
    • Fixed bug where the shape would not show while dragging to draw a 'shape' in certain areas. (fixed #297)
    • Fixed the problem that the text underline function does not work (fixed #221)
    • Fixed bug where saving crop guides with images if saving before cropping was applied. (fixed #237)
    • Fixed a bug where getCropzone api returned null in images of certain resolutions. (fixed #114)
    • Fixed a bug where the behavior was changed to move during crop region resize. (fixed #118)
    Source code(tar.gz)
    Source code(zip)
  • v3.7.2(Dec 10, 2019)

    bug-fix

    • Fixed bug where the checkbox menu of the filter was not displayed when "white theme" was applied.
    • Fixed a style issue where the "menuBar" would cover the entire editing area when the "menuBarPosition" position was set to "top".
    Source code(tar.gz)
    Source code(zip)
  • v3.7.1(Dec 4, 2019)

    bug-fix

    • Fixed incorrect behavior of filter checkbox when creating more than one instance. (fix #274)
    • Fixes a problem where curve positions move to the wrong place after drawing a free drawing line. (fix #228)
    Source code(tar.gz)
    Source code(zip)
  • v3.7.0(Aug 2, 2019)

  • v3.5.2(Mar 20, 2019)

  • v3.5.0(Feb 15, 2019)

    Bug fix

    • #127 - fix: Initialize UI defaultIcons without initial selected menu option. (fix #115)
    • #128 - fix: Ensure reject on loadImage failed (fix #116)
    • #139 - fix: Modify title of filter subMenu name "Grayscale" (fix #138)
    • #145 - fix: Change loadButton tag to div (fix #137)
    • #146 - fix: Add shape on mouseClick without mouseMove (fix #144)
    • #148 - fix: Change 'tui-image-editor' export type to default export (fix #142)
    • #149 - fix: Do not fire "changeShow" event when ColorPicker's color not changed (fix #131)
    Source code(tar.gz)
    Source code(zip)
  • v3.4.0(Jan 11, 2019)

    Added

    • Added declaration file(./index.d.ts) for Typescript support.
    • Added Localization feature includeUi.locale
    var locale_ru_RU = { // override default English locale to your custom
        'Crop': 'ะžะฑะทั€ะตะทะฐั‚ัŒ', // as result default English inscription will be translated into Russian
        'Delete-all': 'ะฃะดะฐะปะธั‚ัŒ ะฒัั‘'
        // etc...
    };
    // Image editor
    var instance = new ImageEditor(document.querySelector('#tui-image-editor'), {
         includeUI: {
             ...
             locale: locale_ru_RU, // key-value object with localization
             ...
         },
         ...
    });
    
    Source code(tar.gz)
    Source code(zip)
  • v3.3.0(Dec 7, 2018)

  • v3.2.2(Oct 23, 2018)

    Fixed

    • Fixed a bug where the image load button function does not work properly when the default image is not registered.

    Changed

    • Improved ga hostname collection method. (From tui-code-snippet version v1.4.0)
    Source code(tar.gz)
    Source code(zip)
  • v3.2.1(Oct 4, 2018)

    Changed

    • Improved the design details of the includeUI.
      • Changed the fine spacing and color of icons, checkboxes, and text in menu and submenu.

    Fix

    • Fixed JavaScript error after adding custom icon.
    • Fixed a bug where the backspace key does not work when editing text elements.
    Source code(tar.gz)
    Source code(zip)
  • v3.2.0(Jul 12, 2018)

    New

    • Added includeUI option
      • includeUI option - The default UI provided by the image editor is now available.
        • includeUI.loadImage - Can specify a default target image.
        • includeUI.menu - Of the nine editing functions, only the desired functions can be included in the UI.
        • includeUI.initMenu - Can specify the menu to be used when starting up.
        • includeUI.menuBarPosition - Can set the menu bar position of the UI.
        • includeUI.theme - Can apply or customize the default theme included in the example.
    var blackTheme = require('./js/theme/black-theme.js');
    var instance = new ImageEditor(document.querySelector('#tui-image-editor'), {
         includeUI: {
             loadImage: {
                 path: 'img/sampleImage.jpg',
                 name: 'SampleImage'
             },
             theme: blackTheme, // or whiteTheme
             menu: ['crop', 'flip', 'rotate', 'draw', 'shape', 'icon', 'text', 'mask', 'filter'],
             initMenu: 'filter',
             menuBarPosition: 'bottom'
         },
         ...
    });
    
    • Added Theme
      • Provides white and black theme with basic design.
      • Themes can be created and modified for customization.

    | properties | description | | --- | --- | | 'common.bi.image' | Brand icon image | | 'common.bisize.width' | Icon image width | | 'common.bisize.height' | Icon Image Height | | 'common.backgroundImage' | Background image | | 'common.backgroundColor' | Background color | | 'common.border' | Full area border style | | 'header.backgroundImage' | header area background | | 'header.backgroundColor' | header area background color | | 'header.border' | header area border style | | 'loadButton.backgroundColor' | load button background color | | 'loadButton.border' | load button border style | | 'loadButton.color' | load button foreground color | | 'loadButton.fontFamily' | load button font type | | 'loadButton.fontSize' | load button font size | | 'downloadButton.backgroundColor' | download button background color | | 'downloadButton.border' | download button border style | | 'downloadButton.color' | download button foreground color | | 'downloadButton.fontFamily' | download button font type | | 'downloadButton.fontSize' | download button font size | | 'menu.normalIcon.path' | Menu default icon svg bundle file path | | 'menu.normalIcon.name' | Menu default icon svg bundle name | | 'menu.activeIcon.path' | Menu active icon svg bundle file path | | 'menu.activeIcon.name' | Menu active icon svg bundle name | | 'menu.iconSize.width' | Menu icon Size Width | | 'menu.iconSize.height' | Menu Icon Size Height | | 'submenu.backgroundColor' | Sub-menu area background color | | 'submenu.partition.color' | Submenu partition line color | | 'submenu.normalIcon.path' | Submenu default icon svg bundle file path | | 'submenu.normalIcon.name' | Submenu default icon svg bundle name | | 'submenu.activeIcon.path' | Submenu active icon svg bundle file path | | 'submenu.activeIcon.name' | Submenu active icon svg bundle name | | 'submenu.iconSize.width' | Submenu icon Size Width | | 'submenu.iconSize.height' | Submenu Icon Size Height | | 'submenu.normalLabel.color' | Submenu default label color | | 'submenu.normalLabel.fontWeight' | Sub Menu Default Label Font Thickness | | 'submenu.activeLabel.color' | Submenu active label color | | 'submenu.activeLabel.fontWeight' | Submenu active label Font thickness | | 'checkbox.border' | Checkbox border style | | 'checkbox.backgroundColor' | Checkbox background color | | 'range.pointer.color' | range control pointer color | | 'range.bar.color' | range control bar color | | 'range.subbar.color' | range control subbar color | | 'range.value.color' | range number box font color | | 'range.value.fontWeight' | range number box font thickness | | 'range.value.fontSize' | range number box font size | | 'range.value.border' | range number box border style | | 'range.value.backgroundColor' | range number box background color | | 'range.title.color' | range title font color | | 'range.title.fontWeight' | range title font weight | | 'colorpicker.button.border' | colorpicker button border style | | 'colorpicker.title.color' | colorpicker button title font color |

    Source code(tar.gz)
    Source code(zip)
  • v3.1.0(Apr 13, 2018)

    Features

    • 07f826b Feature: send hostname

    Documentation

    • 3ceb81e Docs: change file link and edit title of examples
    • 6f1c685 Docs: update year of license
    • 7f8ce91 Docs: update link of example on README file
    • 2c37314 Docs: add install via CDN guide
    Source code(tar.gz)
    Source code(zip)
  • v3.0.2(Sep 13, 2017)

  • v3.0.1(Aug 31, 2017)

Override the rich text editor in Strapi admin with ToastUI Editor.

strapi-plugin-wysiwyg-tui-editor โš ๏ธ This is a strapi v4 plugin which does not support any earlier version! A Strapi plugin to replace the default rich

Zhuo Chen 12 Dec 23, 2022
A chrome extension which helps change ace editor to monaco editor in web pages, supporting all features including autocompletes.

Monaco-It Monaco-It is a chrome extension turning Ace Editor into Monaco Editor, supporting all features including autocompletes. ไธ€ไบ›ไธญๆ–‡่ฏดๆ˜Ž Supported Lan

null 3 May 17, 2022
An Easy and Fast WYSIWYG Editor

Simditor Simditor is a browser-based WYSIWYG text editor. It is used by Tower -- a popular project management web application. Supported Browsers: IE1

ๅฝฉ็จ‹่ฎพ่ฎก 5k Jan 3, 2023
A editor with the main features created using Remirror and with a special code block

A editor with the main features created using Remirror and with a special code block

Brenda Profiro 26 Sep 20, 2022
A markdown editor using Electron, ReactJS, Vite, CodeMirror, and Remark

updated: Saturday, 5th February 2022 A modern looking application built with Electron-Vite-React ?? โœจ Markdown Editor Introduction This application s

Kryptonite 5 Sep 7, 2022
Open source rich text editor based on HTML5 and the progressive-enhancement approach. Uses a sophisticated security concept and aims to generate fully valid HTML5 markup by preventing unmaintainable tag soups and inline styles.

This project isnโ€™t maintained anymore Please check out this fork. wysihtml5 0.3.0 wysihtml5 is an open source rich text editor based on HTML5 technolo

Christopher Blum 6.5k Jan 7, 2023
A simple, beautiful, and embeddable JavaScript Markdown editor. Delightful editing for beginners and experts alike. Features built-in autosaving and spell checking.

SimpleMDE - Markdown Editor A drop-in JavaScript textarea replacement for writing beautiful and understandable Markdown. The WYSIWYG-esque editor allo

Sparksuite 9.3k Jan 4, 2023
Open source rich text editor based on HTML5 and the progressive-enhancement approach. Uses a sophisticated security concept and aims to generate fully valid HTML5 markup by preventing unmaintainable tag soups and inline styles.

This project isnโ€™t maintained anymore Please check out this fork. wysihtml5 0.3.0 wysihtml5 is an open source rich text editor based on HTML5 technolo

Christopher Blum 6.5k Dec 30, 2022
A modern, simple and elegant WYSIWYG rich text editor.

jQuery-Notebook A simple, clean and elegant WYSIWYG rich text editor for web aplications Note: Check out the fully functional demo and examples here.

Raphael Cruzeiro 1.7k Dec 12, 2022
Quill is a modern WYSIWYG editor built for compatibility and extensibility.

Note: This branch and README covers the upcoming 2.0 release. View 1.x docs here. Quill Rich Text Editor Quickstart โ€ข Documentation โ€ข Development โ€ข Co

Quill 34.3k Jan 2, 2023
A lightweight and amazing WYSIWYG JavaScript editor - 20kB only (8kB gzip)

Supporting Trumbowyg Trumbowyg is an MIT-licensed open source project and completely free to use. However, the amount of effort needed to maintain and

Alexandre Demode 3.8k Jan 7, 2023
:notebook: Our cool, secure, and offline-first Markdown editor.

Monod Hi! I'm Monod, the Markdown Editor! Monod is a (relatively) secure and offline-first Markdown editor we have built at TailorDev in order to lear

TailorDev 877 Dec 4, 2022
The best enterprise-grade WYSIWYG editor. Fully customizable with countless features and plugins.

CKEditor 4 - Smart WYSIWYG HTML editor A highly configurable WYSIWYG HTML editor with hundreds of features, from creating rich text content with capti

CKEditor Ecosystem 5.7k Dec 27, 2022
Typewriter is a simple, FOSS, Web-based text editor that aims to provide a simple and intuitive environment for you to write in.

Typewriter Typewriter is a simple, FOSS, Web-based text editor that aims to provide a simple and intuitive environment for you to write in. Features S

Isla 2 May 24, 2022
A realtime code-editor and compiler to ease coding interview process

A realtime code-editor and compiler to ease coding interview process. Users can create their rooms and can invite others to their rooms. So, millions can work on a same code at the same time together !

Archan Banerjee 1 Jan 2, 2023
Get warnings and error messages in monaco editor based on a unified processor.

monaco-unified Get warnings and error messages in monaco editor based on a unified processor. Installation npm install monaco-unified Usage First, cre

Remco Haszing 15 Nov 4, 2022
A lightweight HTML and BBCode WYSIWYG editor

SCEditor v3.1.1 A lightweight WYSIWYG BBCode and XHTML editor. For more information visit sceditor.com Usage Include the SCEditor JavaScript: <link re

Sam 566 Dec 23, 2022
The next generation Javascript WYSIWYG HTML Editor.

Froala Editor V3 Froala WYSIWYG HTML Editor is one of the most powerful JavaScript rich text editors ever. Slim - only add the plugins that you need (

Froala 5k Jan 1, 2023