npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

@crabas0npm/illum-beatae-placeat

v1.0.0

Published

![Jodit WYSIWYG editor](https://raw.githubusercontent.com/xdan/jodit/main/examples/assets/logo.png)

Downloads

5

Maintainers

thanhl4861thanhl4861

Keywords

protoArray.prototype.flattenstringifysomebannerWebSocketquerystringassigninputtypescriptdescriptorssigintmime-dbpathcall-boundtouchserializationrangeerrordeterministic$.extendi18nauthenticationkeyseslintconfigstylescoerciblespinnernegativeinternal slotdomdragautoprefixerfunctionsbytematchAllmoduletranspilerfunctionalWeakSetmochaarraybuffertc39xtermES2017metadatavisualconsolelimitedeventDispatchercolorjsxinstallhasOwnfast-deep-copyinterruptsES5iecontainsstructuredClonewebes8runtimecommanderphoneES2020iterationexpressioncallbindajaxpreprocessorspeedoncenopehardlinksrequestimmutablepyyamlnumberastresolvesymlinkextraObservablesString.prototype.matchAlljoiidlenativevarfullES3Int8ArraydescriptionhttpsyntaxArraytyped arraynameisstyled-componentscssregular expressionsfsrapidclassesiteratorbuffersflagrfc4122npmECMAScript 5whichgdprvalidationwaitECMAScript 2017ECMAScript 2015channelwalkinges6bootstrap csslogsharedmulti-packageIteratorfindLasthigher-orderes2018tasktddStreamsfigletdescriptorpromisessyntaxerrorlanguageupObjectcollection.es6propdefinePropertywalk_.extend0less.jstesterdeepcloneRegExp.prototype.flagscirculartextpositivepersistentconfigdeleteObservableeslintpluginenumerable3dttyreact-testing-librarygetPrototypeOfviewairbnbdebuggerdeepcopy__proto__breakStreamsideECMAScript 2021Array.prototype.includesformsprunelintunicodemrucode pointsfilterjapaneseless mixinsframeworkredactpicomatchawesomesaucelesscssdeepjestmatchesfullwidthbabelshamRxJSwhatwggradients css3loggingtelephoneES2022browserlistsetterinferencehandlersstreamsetImmediateFunction.prototype.namefolderES2021ECMAScript 3uninstallcss-in-jscompile lessjson-schema-validationletl10ninvariantcolourArrayBuffer#slicegesturesES8cryptotssameValueZerocolorssignalio-tsfixed-widthshimtermRegExp#flagscreateaccessibilitysliceRxwatchingtraversemomentcommandES2023css nestingextendpostcss-pluginwritablees7setMapfindentriesfastifyduplexbabel-corestreams2clonetest[[Prototype]]eslint-pluginmimetypesbindes-shimsframerHyBiboundarthookformoffsetwordwrapclassnamediffvalidjasminenodejssearcherrordateencryptionauthes5utilitycjkprivate databcryptcodescorsqueryJSONmatchopenfull-widthexpressES7bdddatastructuregradients cssObject.keyswrapgetterURLSearchParamscss variableBigInt64Array.envgetconfigurablesettingsTypeBoxless cssJSON-Schemafastcopydeep-copyarraybusytapInt16Arrayreadablereuseform-validationSetobjectpromisereact-hooksreact animationcliUint16Array6to5importpnpm9exitfiledropargvdom-testing-libraryoptimistmodulesfunctionECMAScript 2016getoptasciisignalspluginobjreact posestyleguide256copyenderECMAScript 7slotlinkutil.inspectparentes-shim APIinstallerstreamslookfasttypeses-abstractperformantspecreactjwtrateinternalcss lessarktypevaluecompilerfindupconcatspringtostringtagaccessorregexprm -frtoArraynested cssUint8Arraylockfilezoddatajson-schema-validatora11ybundlingansiapitrimEndpipewindowsserializerflatTypedArrayhooksequalArray.prototype.containsgroupcryptpackageses2015TypeScriptString.prototype.trimtoolkitcolumnscallbackAsyncIteratorlengthdirectoryObject.definePropertyfseventsmonorepopopmotionutilPushreducermkdirtoSortedwgetevents

Readme

Jodit WYSIWYG editor

Jodit Editor

Jodit Editor is an excellent WYSIWYG editor written in pure TypeScript without the use of additional libraries. It includes a file editor and image editor.

Build Status npm version npm

Get Started

How to Use

Download the latest release or via npm:

npm install jodit

You will get the following files:

  • Inside /esm: ESM version of the editor (compatible with tools like webpack)
  • Inside /es5, /es2015, /es2018, /es2021: UMD bundled files (not minified)
  • Inside /es5, /es2015, /es2018, /es2021 with .min.js extension: UMD bundled and minified files
  • types/index.d.ts: This file specifies the API of the editor. It is versioned, while everything else is considered private and may change with each release.

Include Jodit in Your Project

Include the following two files:

ES5 Version:

<link type="text/css" rel="stylesheet" href="es2015/jodit.min.css" />
<script type="text/javascript" src="es2015/jodit.min.js"></script>

ES2021 Version (for modern browsers only):

<link type="text/css" rel="stylesheet" href="es2021/jodit.min.css" />
<script type="text/javascript" src="es2021/jodit.min.js"></script>

ESM Modules:

<script type="importmap">
  {
    "imports": {
      "autobind-decorator": "https://unpkg.com/[email protected]/lib/esm/index.js"
    }
  }
</script>
<link rel="stylesheet" href="./node_modules/jodit/es2021/jodit.min.css" />
<script type="module">
  import { Jodit } from './node_modules/jodit/esm/index.js';
  Jodit.make('#editor', {
    width: 600,
    height: 400
  });
</script>

The ESM modules automatically include only the basic set of plugins and the English language. You can manually include additional plugins and languages as needed.

<script type="importmap">
  {
    "imports": {
      "autobind-decorator": "https://unpkg.com/[email protected]/lib/esm/index.js"
    }
  }
</script>
<link rel="stylesheet" href="./node_modules/jodit/es2021/jodit.min.css" />
<script type="module">
  import { Jodit } from './node_modules/jodit/esm/index.js';
  import './node_modules/jodit/esm/plugins/add-new-line/add-new-line.js';
  import './node_modules/jodit/esm/plugins/fullsize/fullsize.js';
  import de from './node_modules/jodit/esm/langs/de.js';

  Jodit.langs.de = de;

  Jodit.make('#editor', {
    width: 600,
    height: 400,
    language: 'de'
  });
</script>

Use a CDN

cdnjs

<link
  rel="stylesheet"
  href="https://cdnjs.cloudflare.com/ajax/libs/jodit/4.0.1/es2021/jodit.min.css"
/>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jodit/4.0.1/es2021/jodit.min.js"></script>

unpkg

<link
  rel="stylesheet"
  href="https://unpkg.com/[email protected]/es2021/jodit.min.css"
/>
<script src="https://unpkg.com/[email protected]/es2021/jodit.min.js"></script>

Usage

Add a textarea element to your HTML:

<textarea id="editor" name="editor"></textarea>

Initialize Jodit on the textarea:

const editor = Jodit.make('#editor');
editor.value = '<p>start</p>';

Create plugin

Jodit.plugins.yourplugin = function (editor) {
  editor.events.on('afterInit', function () {
    editor.s.insertHTMl('Text');
  });
};

Add custom button

const editor = Jodit.make('.someselector', {
  extraButtons: [
    {
      name: 'insertDate',
      iconURL: 'https://xdsoft.net/jodit/logo.png',
      exec: function (editor) {
        editor.s.insertHTML(new Date().toDateString());
        editor.synchronizeValues(); // For history saving
      }
    }
  ]
});

or

const editor = Jodit.make('.someselector', {
  buttons: ['bold', 'insertDate'],
  controls: {
    insertDate: {
      name: 'insertDate',
      iconURL: 'https://xdsoft.net/jodit/logo.png',
      exec: function (editor) {
        editor.s.insertHTML(new Date().toDateString());
      }
    }
  }
});

button with plugin

Jodit.plugins.add('insertText', function (editor) {
  editor.events.on('someEvent', function (text) {
    editor.s.insertHTMl('Hello ' + text);
  });
});

// or

Jodit.plugins.add('textLength', {
  init(editor) {
    const div = editor.create.div('jodit_div');
    editor.container.appendChild(div);
    editor.events.on('change.textLength', () => {
      div.innerText = editor.value.length;
    });
  },
  destruct(editor) {
    editor.events.off('change.textLength');
  }
});

// or use class

Jodit.plugins.add(
  'textLength',
  class textLength {
    init(editor) {
      const div = editor.create.div('jodit_div');
      editor.container.appendChild(div);
      editor.events.on('change.textLength', () => {
        div.innerText = editor.value.length;
      });
    }
    destruct(editor) {
      editor.events.off('change.textLength');
    }
  }
);

const editor = Jodit.make('.someselector', {
  buttons: ['bold', 'insertText'],
  controls: {
    insertText: {
      iconURL: 'https://xdsoft.net/jodit/logo.png',
      exec: function (editor) {
        editor.events.fire('someEvent', 'world!!!');
      }
    }
  }
});

FileBrowser and Uploader

For testing FileBrowser and Uploader modules, need install PHP Connector

composer create-project --no-dev jodit/connector

Run test PHP server

php -S localhost:8181 -t ./

and set options for Jodit:

const editor = Jodit.make('#editor', {
  uploader: {
    url: 'http://localhost:8181/index-test.php?action=fileUpload'
  },
  filebrowser: {
    ajax: {
      url: 'http://localhost:8181/index-test.php'
    }
  }
});

Browser Support

  • Internet Explorer 11
  • Latest Chrome
  • Latest Firefox
  • Latest Safari
  • Microsoft Edge

License

MIT