Collection of tools for building rich text editors.

Overview

Node.js CI Netlify Status

psst we have great documentation at https://bangle.dev

What is bangle.dev ?

bangle.dev is a collection of components for building powerful editing experiences for the web.

  • ๐Ÿ”‹ Batteries included
    We expose plenty of components to help you get started with your Editor.

  • Insanely powerful API
    Bangle uses Prosemirror to provide an API which can help you build the next google docs including collaboration.

  • Vanilla JS
    Bangle is written in a framework agnostic way, so that you can focus on building the editor and not learning a new framework. That said, we have support for React and I have plans to add Vue support in the coming months.

  • Customize UI with React (more frameworks to come)
    Doing UI in vanilla Javascript is not fun. Bangle comes with first party React support and React components (the ones starting with @bangle.dev/react-) to add some extra ๐Ÿ’… oomph to your Editor.

  • ๐Ÿš— Fast as a racing car
    Bangle is as fast as a rich text editor can be; try pasting a really long document in one of its example ( ๐Ÿ˜‰ don't forget to compare it with your current favourite editor).

Getting started

npm install @bangle.dev/core

Read the docs at https://bangle.dev/docs/getting-started for more details.

Comments
  • Unable to build CRA on first install.

    Unable to build CRA on first install.

    ERROR in ./node_modules/@bangle.dev/core/components/index.js 2:9 [1] Module parse failed: Unexpected token (2:9) [1] You may need an appropriate loader to handle this file type, currently no loaders are configured to process this file. See https://webpack.js.org/concepts#loaders [1] | // marks [1] > export * as bold from './bold'; [1] | export * as code from './code'; [1] | export * as italic from './italic'; [1] @ ./node_modules/@bangle.dev/core/utils/core-components.js 1:0-23:29 31:4-8 32:4-8 33:4-10 34:4-10 35:4-8 36:4-13 37:4-13 38:4-14 39:4-14 40:4-13 41:4-13 42:4-11 43:4-18 44:4-12 45:4-15 46:4-12 47:4-12 48:4-9 49:4-11 55:4-8 56:4-8 57:4-10 58:4-10 59:4-8 60:4-13 66:4-7 67:4-8 68:4-13 69:4-14 70:4-14 71:4-13 72:4-13 73:4-11 74:4-18 75:4-12 76:4-15 77:4-12 78:4-12 79:4-9 [1] @ ./node_modules/@bangle.dev/react/dist/hooks.js [1] @ ./node_modules/@bangle.dev/react/dist/index.js [1] @ ./node_modules/@bangle.dev/react-menu/dist/MenuButtons.js [1] @ ./node_modules/@bangle.dev/react-menu/dist/index.js [1] @ ./src/components/Editor.tsx [1] @ ./src/components/AddDescription.tsx [1] @ ./src/stories/AddDescription.stories.tsx [1] @ ./src sync ^.(?:(?:^|/|(?:(?:(?!(?:^|/).).)?)/)(?!.)(?=.)[^/]?.stories.(js|jsx|ts|tsx))$ [1] @ ./.storybook/generated-stories-entry.js @ multi ./node_modules/@pmmmwh/react-refresh-webpack-plugin/client/ReactRefreshEntry.js ./node_modules/@storybook/core/dist/server/common/polyfills.js ./node_modules/@storybook/core/dist/server/preview/globals.js ./.storybook/storybook-init-framework-entry.js ./node_modules/@storybook/addon-docs/dist/frameworks/common/config.js-generated-other-entry.js ./node_modules/@storybook/addon-docs/dist/frameworks/react/config.js-generated-other-entry.js ./node_modules/@storybook/addon-links/dist/preset/addDecorator.js-generated-other-entry.js ./node_modules/@storybook/addon-actions/dist/preset/addDecorator.js-generated-other-entry.js ./node_modules/@storybook/addon-actions/dist/preset/addArgs.js-generated-other-entry.js ./node_modules/@storybook/addon-backgrounds/dist/preset/addDecorator.js-generated-other-entry.js ./node_modules/@storybook/addon-backgrounds/dist/preset/addParameter.js-generated-other-entry.js ./.storybook/preview.js-generated-config-entry.js ./.storybook/generated-stories-entry.js (webpack)-hot-middleware/client.js?reload=true&quiet=false&noInfo=undefined ./node_modules/react-dev-utils/webpackHotDevClient.js [1] [1] ERROR in ./node_modules/@bangle.dev/tooltip/index.js 2:9 [1] Module parse failed: Unexpected token (2:9) [1] You may need an appropriate loader to handle this file type, currently no loaders are configured to process this file. See https://webpack.js.org/concepts#loaders [1] | export * from './create-tooltip-dom'; [1] > export * as tooltipPlacement from './tooltip-placement'; [1] | export * as selectionTooltip from './selection-tooltip'; [1] | export * as suggestTooltip from './suggest-tooltip'; [1] @ ./node_modules/@bangle.dev/react-menu/dist/floating-menu.js 14:13-49 [1] @ ./node_modules/@bangle.dev/react-menu/dist/index.js [1] @ ./src/components/Editor.tsx [1] @ ./src/components/AddDescription.tsx [1] @ ./src/stories/AddDescription.stories.tsx [1] @ ./src sync ^.(?:(?:^|/|(?:(?:(?!(?:^|/).).)?)/)(?!.)(?=.)[^/]?.stories.(js|jsx|ts|tsx))$ [1] @ ./.storybook/generated-stories-entry.js [1] @ multi ./node_modules/@pmmmwh/react-refresh-webpack-plugin/client/ReactRefreshEntry.js ./node_modules/@storybook/core/dist/server/common/polyfills.js ./node_modules/@storybook/core/dist/server/preview/globals.js ./.storybook/storybook-init-framework-entry.js ./node_modules/@storybook/addon-docs/dist/frameworks/common/config.js-generated-other-entry.js ./node_modules/@storybook/addon-docs/dist/frameworks/react/config.js-generated-other-entry.js ./node_modules/@storybook/addon-links/dist/preset/addDecorator.js-generated-other-entry.js ./node_modules/@storybook/addon-actions/dist/preset/addDecorator.js-generated-other-entry.js ./node_modules/@storybook/addon-actions/dist/preset/addArgs.js-generated-other-entry.js ./node_modules/@storybook/addon-backgrounds/dist/preset/addDecorator.js-generated-other-entry.js ./node_modules/@storybook/addon-backgrounds/dist/preset/addParameter.js-generated-other-entry.js ./.storybook/preview.js-generated-config-entry.js ./.storybook/generated-stories-entry.js (webpack)-hot-middleware/client.js?reload=true&quiet=false&noInfo=undefined ./node_modules/react-dev-utils/webpackHotDevClient.js [1] [1] ERROR in ./node_modules/@bangle.dev/core/index.js 3:9 [1] Module parse failed: Unexpected token (3:9) [1] You may need an appropriate loader to handle this file type, currently no loaders are configured to process this file. See https://webpack.js.org/concepts#loaders [1] | import * as logging from './utils/logging'; [1] | import browser, { isChromeWithSelectionBug } from './utils/browser'; [1] > export * as utils from './utils'; [1] | export * from './components/index'; [1] | export * from './bangle-editor'; [1] @ ./node_modules/@bangle.dev/react-menu/dist/StaticMenu.js 16:13-46 [1] @ ./node_modules/@bangle.dev/react-menu/dist/index.js [1] @ ./src/components/Editor.tsx [1] @ ./src/components/AddDescription.tsx [1] @ ./src/stories/AddDescription.stories.tsx [1] @ ./src sync ^.(?:(?:^|/|(?:(?:(?!(?:^|/).).)?)/)(?!.)(?=.)[^/]?.stories.(js|jsx|ts|tsx))$ [1] @ ./.storybook/generated-stories-entry.js [1] @ multi ./node_modules/@pmmmwh/react-refresh-webpack-plugin/client/ReactRefreshEntry.js ./node_modules/@storybook/core/dist/server/common/polyfills.js ./node_modules/@storybook/core/dist/server/preview/globals.js ./.storybook/storybook-init-framework-entry.js ./node_modules/@storybook/addon-docs/dist/frameworks/common/config.js-generated-other-entry.js ./node_modules/@storybook/addon-docs/dist/frameworks/react/config.js-generated-other-entry.js ./node_modules/@storybook/addon-links/dist/preset/addDecorator.js-generated-other-entry.js ./node_modules/@storybook/addon-actions/dist/preset/addDecorator.js-generated-other-entry.js ./node_modules/@storybook/addon-actions/dist/preset/addArgs.js-generated-other-entry.js ./node_modules/@storybook/addon-backgrounds/dist/preset/addDecorator.js-generated-other-entry.js ./node_modules/@storybook/addon-backgrounds/dist/preset/addParameter.js-generated-other-entry.js ./.storybook/preview.js-generated-config-entry.js ./.storybook/generated-stories-entry.js (webpack)-hot-middleware/client.js?reload=true&quiet=false&noInfo=undefined ./node_modules/react-dev-utils/webpackHotDevClient.js [1] Child HtmlWebpackCompiler: [1] Asset Size Chunks Chunk Names [1] __child-HtmlWebpackPlugin_0 6.18 KiB HtmlWebpackPlugin_0 HtmlWebpackPlugin_0 [1] Entrypoint HtmlWebpackPlugin_0 = __child-HtmlWebpackPlugin_0 [1] [./node_modules/html-webpack-plugin/lib/loader.js!./node_modules/@storybook/core/dist/server/templates/index.ejs] 1.97 KiB {HtmlWebpackPlugin_0} [built] [1] [1] WARN Broken build, fix the error above. [1] WARN You may need to refresh the browser.

    opened by damianthekreeeytor 4
  • Moved EmojiSuggest padding to CSS

    Moved EmojiSuggest padding to CSS

    Moved the padding of the EmojiSuggest container that was set as a parameter of the plugin to the CSS as it is easier to manage the whole styling in one place

    opened by cgorrieri 3
  • Feature Request: Consider exporting CommonJS modules instead of ES6

    Feature Request: Consider exporting CommonJS modules instead of ES6

    This is the only frontend library I have that is exporting ECMAScript modules. As a frontend library this means most consumers will need to have babel or something else to even use it. I've wasted 1-2 days now trying to get babel to work with my test runner, webpack, etc. It's still not perfect and has required a bunch of additional configuration on my end, so much I am tempted to just use ProseMirror directly. I don't mean to just complain; I'm willing to try and help add a build step if that helps.

    opened by mattcasey 3
  • How to use without build tool?

    How to use without build tool?

    Is it possible to setup bangle without any build tool, by directly including via a script tag in the HTML code? Ideally something like <script src="bangle.js></script>.

    I know it's 2021 but I happen to be a minimalist and prefer not to use build tools wherever possible.

    opened by 1upkd 2
  • Organization plan

    Organization plan

    TLDR: break up /core into /editor and /core-components.

    I feel the repository has grown quite a bit in terms of code size and it is worth refactoring the code in more appropriate npm packages.

    I am imagine having a structure like:

    • tooling/ (internal things)
      • integration-tests
      • scripts
    • lib/
      • @bangle.dev/editor

      • @bangle.dev/react

      • @bangle.dev/markdown

      • @bangle.dev/utils

      • @bangle.dev/collab-client

      • @bangle.dev/collab-server

      • @bangle.dev/disk

      • @bangle.dev/pm

    • components/
      • @bangle.dev/react-menu
      • @bangle.dev/core-components
      • @bangle.dev/table
      • @bangle.dev/emoji
      • @bangle.dev/wiki-link
      • @bangle.dev/trailing-node
      • @bangle.dev/timestamp
      • @bangle.dev/text-formatting
      • @bangle.dev/search
      • @bangle.dev/react-stopwatch
      • @bangle.dev/markdown-front-matter
      • @bangle.dev/react-emoji-suggest
      • @bangle.dev/react-sticker
    opened by kepta 2
  • why is

    why is "Array of plugins" deprecated

    TL;DR:

    When building the array of plugins (myPlugins) I have to pass it through extra code ()=>myPlugins to remove a warning.


    Passing an array of plugins to BangleEditorState is throwing a warning:

        if (Array.isArray(plugins)) {
          console.warn(
            'The use plugins as an array is deprecated, please pass a function which returns an array of plugins. Refer: https://bangle.dev/docs/api/core#bangleeditorstate',
          );
        }
    

    But then this array go through flatten and recurse methods which seems to completely handle arrays.

    Could you please explain why this is deprecated ? Do you want to enforce using function for some specific pattern to come ?

    The documentation at https://bangle.dev/docs/api/core#bangleeditorstate presents the parameter plugins as a plugins: ?({ schema, specRegistry }) -> Plugins[]. Maybe this is to enforce to always build plugin with schema or specRegisty available as present in flatten?

        if (typeof plugins === 'function') {
          if (!callbackPayload) {
            throw new Error('Found a function but no payload');
          }
          return recurse(plugins(callbackPayload));
        }
    

    Would you recommend to always mimic the plugin factory like in every classic component? For reference the italic plugin:

    function pluginsFactory({ keybindings = defaultKeys } = {}) {
      return ({ schema }) => {
        const type = getTypeFromSchema(schema);
    
        return [
          markPasteRule(/_([^_]+)_/g, type),
          markPasteRule(/\*([^*]+)\*/g, type),
          markInputRule(/(?:^|[^_])(_([^_]+)_)$/, type),
          markInputRule(/(?:^|[^*])(\*([^*]+)\*)$/, type),
          keybindings &&
            keymap({
              [keybindings.toggleItalic]: toggleMark(type),
            }),
        ];
      };
    }
    
    opened by jorisgu 2
  • Jump to start / end of heading

    Jump to start / end of heading

    Since heading component doesn't have a child paragraph the ctrl-a (jump to start) and ctrl-e (jump to end) fall back to native behavior which doesn't work well. We need to implement something similar to what we have done for paragraph (see https://github.com/kepta/bangle-play/blob/72c2647dbc57faf464de43182c69cfcf91dc175b/core%2Fcomponents%2Fparagraph.js#L107).

    opened by kepta 2
  • CSS is overriding margin for all h1/h2

    CSS is overriding margin for all h1/h2

    Not sure if this is a feature request or a bug, and it's easily addressed but this library removes the margin on all header tags on the page. Is it possible to add the .bangle-editor as a prefix to all tags here? https://github.com/bangle-io/bangle.dev/blob/master/core/style.css#L29

    opened by mattcasey 2
  • Circular imports in tooltip seem to cause an issue with Webpack 5

    Circular imports in tooltip seem to cause an issue with Webpack 5

    First, really excited to be using this library. Dropped it in my app and it mostly just works! Here's my problem..

    I was originally using webpack 4. Everything seemed to work, except I noticed the floating menu did not appear. Kind of a tangent here: it was a pain to set up because this library uses ES6 modules, so I needed to install babel just to transpile it.

    Then, tonight I upgraded to webpack 5 and started getting an error on build. FWIW I've also noticed that I don't need babel anymore. So I'm getting these errors with basically default webpack settings. My webpack knowledge is not very deep, so I was hoping that you might be able to spot what's wrong without a complete example -- but I can try making one if it helps. I based my code off the floating menu example.

    So, here are the errors I get. I think it is caused from a circular dependency when files in the tooltip library are importing from ./index.js which is also importing those same files, hence webpack thinks there is no export available:

    WARNING in ../node_modules/@bangle.dev/tooltip/selection-tooltip.js 33:27-43
    export 'createTooltipDOM' (imported as 'createTooltipDOM') was not found in './index' (module has no exports)
     @ ../node_modules/@bangle.dev/react-menu/dist/floating-menu.js 16:24-72
     @ ../node_modules/@bangle.dev/react-menu/dist/index.js 11:44-70
     @ ../ui/dist/components/HtmlEditor.js 30:19-52
    

    and

    WARNING in ../node_modules/@bangle.dev/tooltip/suggest-tooltip.js 132:6-30
    export 'tooltipPlacement' (imported as 'tooltipPlacement') was not found in './index' (module has no exports)
     @ ../node_modules/@bangle.dev/tooltip/index.js 4:0-52 4:0-52
     @ ../node_modules/@bangle.dev/react-menu/dist/floating-menu.js 14:13-49
     @ ../node_modules/@bangle.dev/react-menu/dist/index.js 11:44-70
    

    I am using bangle.dev 0.3.3 with node 15, npm 7, and webpack 5.

    opened by mattcasey 2
  • Read only mode.

    Read only mode.

    Is it possible to carry over the styles for the markup in the editor to a view only mode? When I export the styles to HTML for example I see it still has the classes but the styles only take effect when opened in the editor.

    opened by damianthekreeeytor 2
  • Bump loader-utils from 1.4.0 to 1.4.1

    Bump loader-utils from 1.4.0 to 1.4.1

    Bumps loader-utils from 1.4.0 to 1.4.1.

    Release notes

    Sourced from loader-utils's releases.

    v1.4.1

    1.4.1 (2022-11-07)

    Bug Fixes

    Changelog

    Sourced from loader-utils's changelog.

    1.4.1 (2022-11-07)

    Bug Fixes

    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] 1
  • Bump decode-uri-component from 0.2.0 to 0.2.2

    Bump decode-uri-component from 0.2.0 to 0.2.2

    Bumps decode-uri-component from 0.2.0 to 0.2.2.

    Release notes

    Sourced from decode-uri-component's releases.

    v0.2.2

    • Prevent overwriting previously decoded tokens 980e0bf

    https://github.com/SamVerschueren/decode-uri-component/compare/v0.2.1...v0.2.2

    v0.2.1

    • Switch to GitHub workflows 76abc93
    • Fix issue where decode throws - fixes #6 746ca5d
    • Update license (#1) 486d7e2
    • Tidelift tasks a650457
    • Meta tweaks 66e1c28

    https://github.com/SamVerschueren/decode-uri-component/compare/v0.2.0...v0.2.1

    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
  • Bump loader-utils from 1.4.0 to 1.4.2

    Bump loader-utils from 1.4.0 to 1.4.2

    Bumps loader-utils from 1.4.0 to 1.4.2.

    Release notes

    Sourced from loader-utils's releases.

    v1.4.2

    1.4.2 (2022-11-11)

    Bug Fixes

    v1.4.1

    1.4.1 (2022-11-07)

    Bug Fixes

    Changelog

    Sourced from loader-utils's changelog.

    1.4.2 (2022-11-11)

    Bug Fixes

    1.4.1 (2022-11-07)

    Bug Fixes

    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
  • React Strict Mode: Error: It looks like renderHandlers were already set by someone else.

    React Strict Mode: Error: It looks like renderHandlers were already set by someone else.

    The editor crashes with React 18 in development only, with the most basic setup. When building for production it works as expected.

    const editorState = useEditorState({
      specRegistry:  new SpecRegistry([]),
    })
    return (
      <BangleEditor
         state={editorState}
      />
    )
    
    Uncaught Error: It looks like renderHandlers were already set by someone else.
        at saveRenderHandlers (index.js:774:15)
        at index.js:37:9
        at commitHookEffectListMount (react-dom.development.js:23150:26)
        at invokePassiveEffectMountInDEV (react-dom.development.js:25154:13)
        at invokeEffectsInDev (react-dom.development.js:27351:11)
        at commitDoubleInvokeEffectsInDEV (react-dom.development.js:27330:7)
        at flushPassiveEffectsImpl (react-dom.development.js:27056:5)
        at flushPassiveEffects (react-dom.development.js:26984:14)
        at react-dom.development.js:26769:9
        at workLoop (scheduler.development.js:266:34)
    

    Using

    "vite": "^3.2.2",
    "react": "^18.2.0",
    "react-dom": "^18.2.0",
    

    UPDATE: It only crashes when <React.StrictMode> is used

    opened by NimmLor 0
  • Expand markdown syntax when cursor is inside formatted text?

    Expand markdown syntax when cursor is inside formatted text?

    Thanks for the great work on this project. One thing I love about bangle is that it supports live-preview style editing where the text gets resized as you're typing it.

    I was wondering if I could fork the Bangle codebase to support Obsidian-style live preview. In Obsidian, when your cursor gets into a section of formatted text -- the underlying markdown gets shown, which is really useful.

    Example: https://help.obsidian.md/Live+preview+update

    I figured before I tried forking Bangle, I'd check-in with the devs to see if the codebase would be amenable to this type of change?

    opened by vedantroy 0
  • Bump handlebars from 4.7.6 to 4.7.7

    Bump handlebars from 4.7.6 to 4.7.7

    Bumps handlebars from 4.7.6 to 4.7.7.

    Changelog

    Sourced from handlebars's changelog.

    v4.7.7 - February 15th, 2021

    • fix weird error in integration tests - eb860c0
    • fix: check prototype property access in strict-mode (#1736) - b6d3de7
    • fix: escape property names in compat mode (#1736) - f058970
    • refactor: In spec tests, use expectTemplate over equals and shouldThrow (#1683) - 77825f8
    • chore: start testing on Node.js 12 and 13 - 3789a30

    (POSSIBLY) BREAKING CHANGES:

    • the changes from version 4.6.0 now also apply in when using the compile-option "strict: true". Access to prototype properties is forbidden completely by default, specific properties or methods can be allowed via runtime-options. See #1633 for details. If you are using Handlebars as documented, you should not be accessing prototype properties from your template anyway, so the changes should not be a problem for you. Only the use of undocumented features can break your build.

    That is why we only bump the patch version despite mentioning breaking changes.

    Commits

    Commits
    • a9a8e40 v4.7.7
    • e66aed5 Update release notes
    • 7d4d170 disable IE in Saucelabs tests
    • eb860c0 fix weird error in integration tests
    • b6d3de7 fix: check prototype property access in strict-mode (#1736)
    • f058970 fix: escape property names in compat mode (#1736)
    • 77825f8 refator: In spec tests, use expectTemplate over equals and shouldThrow (#1683)
    • 3789a30 chore: start testing on Node.js 12 and 13
    • See full diff 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
  • Add hints customization for <LinkSubMenu />

    Add hints customization for

    Hello there!

    Would you mind to add customizable hints copies to <LinkSubMenu /> component, so the text of Save/Close and Visit can be modified?

    Thanks in advance!

    opened by maxoschepkov 0
A React framework for building text editors.

Draft.js Draft.js is a JavaScript rich text editor framework, built for React and backed by an immutable model. Extensible and Customizable: We provid

Facebook 22.3k Jan 4, 2023
A JS library for building WYSIWYG editors for HTML content.

For information on the ContentTools 2.x roadmap please view the: Roadmap repo ContentTools A JS library for building WYSIWYG editors for HTML content.

getme 3.9k Jan 8, 2023
A toolkit for building WYSIWYG editors with Mobiledoc

Mobiledoc Kit Mobiledoc Kit is a framework-agnostic library for building WYSIWYG editors supporting rich content via cards. Libraries This repository

Bustle 1.5k Jan 3, 2023
Simple rich text editor (contentEditable) for jQuery UI

Hallo - contentEditable for jQuery UI Hallo is a very simple in-place rich text editor for web pages. It uses jQuery UI and the HTML5 contentEditable

Henri Bergius 2.4k Dec 17, 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
Medium.com WYSIWYG editor clone. Uses contenteditable API to implement a rich text solution.

If you would be interested in helping to maintain one of the most successful WYSIWYG text editors on github, let us know! (See issue #1503) MediumEdit

yabwe 15.7k Jan 4, 2023
Tiny bootstrap-compatible WISWYG rich text editor

bootstrap-wysiwyg Important information for Github requests/issues Please do not submit issues/comments to this repo. Instead, submit it to https://gi

MindMup 5.6k Jan 3, 2023
HTML5 rich text editor. Try the demo integration at

Squire Squire is an HTML5 rich text editor, which provides powerful cross-browser normalisation in a flexible lightweight package (only 16.5KB of JS a

Neil Jenkins 4.4k Dec 28, 2022
The world's #1 JavaScript library for rich text editing. Available for React, Vue and Angular

TinyMCE TinyMCE is the world's most advanced open source core rich text editor. Trusted by millions of developers, and used by some of the world's lar

Tiny 12.4k Jan 4, 2023
A rich text editor for everyday writing

Trix A Rich Text Editor for Everyday Writing Compose beautifully formatted text in your web application. Trix is a WYSIWYG editor for writing messages

Basecamp 17.3k Jan 3, 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 Jan 7, 2023
Popline is an HTML5 Rich-Text-Editor Toolbar

popline Popline is a non-intrusive WYSIWYG editor that shows up only after selecting a piece of text on the page, inspired by popclip. Usage Load jQue

kenshin 1k Nov 4, 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 Dec 30, 2022
A powerful WYSIWYG rich text web editor by pure javascript

KothingEditor A powerful WYSIWYG rich text web editor by pure javascript Demo : kothing.github.io/editor The KothingEditor is a lightweight, flexible,

Kothing 34 Dec 25, 2022
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
An Open, Extensible Framework for building Web3D Engine, Editor

Meta3D (Meta3D is under development, not product ready) Meta3D is an Open, Extensible Framework for building Web3D Engine, Editor. read Meta3Dไป‹็ป for m

Wonder Technology 54 Dec 29, 2022
Adds Syntax Highlighting & Hint for TiddlyWiki5 tiddlers (text/vnd.tiddlywiki) to the CodeMirror.

CodeMirror-Mode-TiddlyWiki5 Adds Syntax Highlighting for TiddlyWiki5 tiddlers (text/vnd.tiddlywiki) to the CodeMirror, along with some other useful ed

Ke Wang 18 Dec 30, 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
Verbum is a fully flexible text editor based on lexical framework.

Verbum Verbum - Flexible Text Editor for React Verbum is a fully flexible rich text editor based on lexical-playground and lexical framework. โš ๏ธ As th

Ozan Yurtsever 560 Dec 29, 2022