Socket
Socket
Sign inDemoInstall

@ckeditor/ckeditor5-widget

Package Overview
Dependencies
Maintainers
1
Versions
609
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@ckeditor/ckeditor5-widget

Widget API for CKEditor 5.


Version published
Weekly downloads
601K
increased by7.27%
Maintainers
1
Weekly downloads
 
Created

What is @ckeditor/ckeditor5-widget?

@ckeditor/ckeditor5-widget is a package that provides the base functionality for creating and managing widgets in CKEditor 5. Widgets are special types of content that can be edited and manipulated as a single unit, such as images, tables, or custom blocks.

What are @ckeditor/ckeditor5-widget's main functionalities?

Creating a Simple Widget

This code demonstrates how to create a simple widget in CKEditor 5. It registers a new model element 'simpleWidget' and sets up the necessary conversions for upcasting, data downcasting, and editing downcasting.

import Widget from '@ckeditor/ckeditor5-widget/src/widget';
import Plugin from '@ckeditor/ckeditor5-core/src/plugin';

class SimpleWidget extends Plugin {
  init() {
    const editor = this.editor;
    editor.model.schema.register('simpleWidget', {
      isObject: true,
      allowWhere: '$block'
    });
    editor.conversion.for('upcast').elementToElement({
      model: 'simpleWidget',
      view: 'div'
    });
    editor.conversion.for('dataDowncast').elementToElement({
      model: 'simpleWidget',
      view: 'div'
    });
    editor.conversion.for('editingDowncast').elementToElement({
      model: 'simpleWidget',
      view: (modelElement, viewWriter) => {
        const div = viewWriter.createContainerElement('div');
        return toWidget(div, viewWriter);
      }
    });
  }
}

export default SimpleWidget;

Custom Widget with Editable Content

This code demonstrates how to create a custom widget with editable content. It registers a new model element 'customWidget' and sets up the necessary conversions. The widget contains an inner editable element, allowing users to edit its content directly.

import Widget from '@ckeditor/ckeditor5-widget/src/widget';
import Plugin from '@ckeditor/ckeditor5-core/src/plugin';
import { toWidget, toWidgetEditable } from '@ckeditor/ckeditor5-widget/src/utils';

class CustomWidget extends Plugin {
  init() {
    const editor = this.editor;
    editor.model.schema.register('customWidget', {
      isObject: true,
      allowWhere: '$block',
      allowContentOf: '$root'
    });
    editor.conversion.for('upcast').elementToElement({
      model: 'customWidget',
      view: 'div'
    });
    editor.conversion.for('dataDowncast').elementToElement({
      model: 'customWidget',
      view: 'div'
    });
    editor.conversion.for('editingDowncast').elementToElement({
      model: 'customWidget',
      view: (modelElement, viewWriter) => {
        const div = viewWriter.createContainerElement('div');
        const innerEditable = viewWriter.createEditableElement('div');
        viewWriter.insert(viewWriter.createPositionAt(div, 0), innerEditable);
        return toWidget(div, viewWriter, { label: 'custom widget' });
      }
    });
  }
}

export default CustomWidget;

Other packages similar to @ckeditor/ckeditor5-widget

Keywords

FAQs

Package last updated on 03 Mar 2021

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc