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

rg-quill-editor

v1.1.86

Published

Quill editor core with interfaces for work with any framework

Downloads

320

Readme

Quill Editor

Независимый модуль quill (Rich text editor) для редактирования основного контента в редакторском интерфейсе.

Пакет выделен в отдельный репозиторий по причине его переиспользуемости.

У этих проектов разный бэкенд и в каждом проекте используется разный API и разные фрэймворки для построения интерфейса, но интерфейс редактирования материала и его логика одинаковые. Поэтому следуя лучшим практикам разработки ПО выделяем общее неизменяемое от изменяемого. В нашем случае, изменяемым является способ общения с бэком и внешняя оболочка (приложение, где используется компонент редактирования).

Данный модуль является интерфейсом редактирования и имеет свой API, чтобы можно было общаться с ним и применять свой способ общения с бэком. Например, в редактуре 2019 года на Vue используются fetch запросы для обращения к серверным API, в 2020-м в проекте на React используется уже GraphQL спецификация. Наш проект должен дать возможность выбирать способ сохранения контента материала с помощью своего API. Все они описаны ниже. Информация для разработчиков модуля в файле CONTRIBUTING.md

Установка

npm i rg-quill-editor -S

Использование

HTML Разметка

<div id='quill-editor'></div>

Подключаем модуль

import QuillEditor from 'rg-quill-editor'

Использование в коде

let quillEditor = new QuillEditor(null, options, {
  text: "<p>Test</p>"
})

Если не передать первый параметр, то модуль будет рендерить всё в DOM элемент с id quill-editor. options - объект с опциями. Будет рассмотрен подробнее далее.

ВАЖНОЕ

  • Мы используем ветку develop (в react), тк в stable версии (на данный момент 1.3.7) нет поддержки таблиц. В vue версии используется именно 1.3.7
  • Мы используем форк quill - версию quill-ocean из-за проблемы, описанно в issue

Пояснение См изменения в core/quill.js disableFormattingOnPaste — вот эту штуку я добавил, без неё у нас всегда запрос на сохранение статьи отправлялся когда внутри что-то рендерилось просто.

МОЖЕТ БЫТЬ это можно было бы костыльнуть где-то ещё, но я как бы сделал так и это по нормальному. Ты теперь можешь просто зарегистрировать блот и у него нстройку сделать, чтобы библиотека не следила за измненеием высоты контента.

я как бы отключаю слежку за высотой блока, у тех блотов, где ты пишешь datasilent: true

Ссылка на коммит

Далее будут подробные примеры использования и описание всех API Work In Progress

Как собрать модуль для RgTextControls

Создаем отдельную дирректорию в src вида rg-[название]. Для примера возьмем rg-demo.

В ней будет набор файлов:

  • RgDemoEditor это модуль попапа, который будет вызываться, при выборе из списка в редакторе. В нем зашита логика вставки сущности (она называется БЛОТ) в сам редактор.
  • rg-demo-popup.html это шаблон попапа с размеченными контейнерами для дальнейшей отрисовки (некий шаблон из html). Используется в createBaseMarkup
  • rg-demo-quill-blot это модуль (написанный по правилам Quill библиотеки), который и является вставкой в редактор текста. (будет работать после регистрации в системе, об этом будет написано ниже). Внутри себя он содержит веб-компонент, который конечный пользователь и видит в редактуре.
  • rg-demo-wc это веб компонент, который видит пользователь, после вставки блота в редактор. В нем отображение всех данных + кнопки для редактирования-удаления-перемещения компонента по разметке тела материала.
  • rg-demo.html это шаблон со стилями для веб компонента rg-demo-wc. В нем корневой контейнер (остальная разметка генерится внутри инициализации самого веб-компонента) и стили.