From c8c9832f015aeb6882bb0a22077746df09382a99 Mon Sep 17 00:00:00 2001 From: younggglcy Date: Mon, 6 May 2024 08:44:53 +0800 Subject: [PATCH 01/10] Respond to `/docs` route and do redirection (#4174) --- packages/website/src/pages/docs.jsx | 15 +++++++++++++++ 1 file changed, 15 insertions(+) create mode 100644 packages/website/src/pages/docs.jsx diff --git a/packages/website/src/pages/docs.jsx b/packages/website/src/pages/docs.jsx new file mode 100644 index 0000000000..b8a3c18d68 --- /dev/null +++ b/packages/website/src/pages/docs.jsx @@ -0,0 +1,15 @@ +import { useRouter } from 'next/navigation'; +import { useEffect } from 'react'; +import docs from '../data/docs'; + +const Docs = () => { + const router = useRouter(); + + useEffect(() => { + router.replace(docs[0].url); + }, [router]); + + return null; +}; + +export default Docs; From d31ffa1372ab09dfe979fabb00c1a6d54f051240 Mon Sep 17 00:00:00 2001 From: Zihua Li Date: Mon, 6 May 2024 09:07:03 +0800 Subject: [PATCH 02/10] Consolidate README for sub packages (#4176) --- README.md | 14 +++++++------- packages/quill/README.md | 42 ++-------------------------------------- scripts/release.js | 3 +++ 3 files changed, 12 insertions(+), 47 deletions(-) diff --git a/README.md b/README.md index 10f4a13566..da23577082 100644 --- a/README.md +++ b/README.md @@ -32,7 +32,7 @@ Instantiate a new Quill object with a css selector for the div that should becom ```html @@ -50,7 +50,7 @@ Instantiate a new Quill object with a css selector for the div that should becom - + + - + ``` ## Community diff --git a/packages/quill/README.md b/packages/quill/README.md index fe0b340540..10c7fae1c3 100644 --- a/packages/quill/README.md +++ b/packages/quill/README.md @@ -1,41 +1,3 @@ -Note: This branch and README covers the upcoming 2.0 release. View [1.x docs here](https://github.com/quilljs/quill/tree/1.3.6). +# Quill -

- Quill Rich Text Editor -

-

- Quill Logo -

-

- Documentation - • - Development - • - Contributing - • - Interactive Playground -

-

- - Build Status - - - Version - - - Downloads - -

- -[Quill](https://quilljs.com/) is a modern rich text editor built for compatibility and extensibility. It was created by [Jason Chen](https://twitter.com/jhchen) and [Byron Milligan](https://twitter.com/byronmilligan) and actively maintained by [Slab](https://slab.com). - -To get started, check out [https://quilljs.com/](https://quilljs.com/) for documentation, guides, and live demos! - -## Community - -Get help or stay up to date. - -- [Contribute](https://github.com/quilljs/quill/blob/main/.github/CONTRIBUTING.md) on [Issues](https://github.com/quilljs/quill/issues) -- Follow [@jhchen](https://twitter.com/jhchen) and [@quilljs](https://twitter.com/quilljs) on Twitter -- Ask questions on [Stack Overflow](https://stackoverflow.com/questions/tagged/quill) -- If privacy is required, email support@quilljs.com +This is the main package of Quill. diff --git a/scripts/release.js b/scripts/release.js index 89c394067e..e1a79dc2c6 100755 --- a/scripts/release.js +++ b/scripts/release.js @@ -151,6 +151,9 @@ if ( exitWithError("Version mismatch between package.json and dist/package.json"); } +const readme = fs.readFileSync("README.md", "utf-8"); +fs.writeFileSync(path.join(distFolder, "README.md"), readme); + exec(`npm publish --tag ${distTag}${dryRun ? " --dry-run" : ""}`, { cwd: distFolder, }); From 1fd5c94d021eba5bf4464538bd7abe7e0d7b5803 Mon Sep 17 00:00:00 2001 From: hzgotb Date: Mon, 13 May 2024 10:09:33 +0800 Subject: [PATCH 03/10] Fix typing errors for Quill.register (#4127) Co-authored-by: Zihua Li --- packages/quill/src/core.ts | 1 + packages/quill/src/core/quill.ts | 47 +++++++++++++-------- packages/quill/src/modules/syntax.ts | 5 +-- packages/quill/src/quill.ts | 1 + packages/quill/test/types/quill.test-d.ts | 31 ++++++++++++++ packages/quill/test/unit/core/quill.spec.ts | 45 +++++++++++++++++++- 6 files changed, 107 insertions(+), 23 deletions(-) diff --git a/packages/quill/src/core.ts b/packages/quill/src/core.ts index cdf5724768..5b8946ad5f 100644 --- a/packages/quill/src/core.ts +++ b/packages/quill/src/core.ts @@ -24,6 +24,7 @@ import Delta, { Op, OpIterator, AttributeMap } from 'quill-delta'; import Input from './modules/input.js'; import UINode from './modules/uiNode.js'; +export { default as Module } from './core/module.js'; export { Delta, Op, OpIterator, AttributeMap, Parchment, Range }; export type { Bounds, diff --git a/packages/quill/src/core/quill.ts b/packages/quill/src/core/quill.ts index 94787ecf84..dae5267bcb 100644 --- a/packages/quill/src/core/quill.ts +++ b/packages/quill/src/core/quill.ts @@ -122,27 +122,41 @@ class Quill { } static register( - path: - | string - | Parchment.BlotConstructor - | Parchment.Attributor - | Record, - target?: Parchment.BlotConstructor | Parchment.Attributor | boolean, - overwrite = false, - ) { - if (typeof path !== 'string') { - const name = 'attrName' in path ? path.attrName : path.blotName; + targets: Record< + string, + | Parchment.RegistryDefinition + | Record // any objects + | Theme + | Module + | Function // ES5 constructors + >, + overwrite?: boolean, + ): void; + static register( + target: Parchment.RegistryDefinition, + overwrite?: boolean, + ): void; + static register(path: string, target: any, overwrite?: boolean): void; + static register(...args: any[]): void { + if (typeof args[0] !== 'string') { + const target = args[0]; + const overwrite = !!args[1]; + + const name = 'attrName' in target ? target.attrName : target.blotName; if (typeof name === 'string') { + // Shortcut for formats: // register(Blot | Attributor, overwrite) - // @ts-expect-error - this.register(`formats/${name}`, path, target); + this.register(`formats/${name}`, target, overwrite); } else { - Object.keys(path).forEach((key) => { - // @ts-expect-error - this.register(key, path[key], target); + Object.keys(target).forEach((key) => { + this.register(key, target[key], overwrite); }); } } else { + const path = args[0]; + const target = args[1]; + const overwrite = !!args[2]; + if (this.imports[path] != null && !overwrite) { debug.warn(`Overwriting ${path} with`, target); } @@ -151,14 +165,11 @@ class Quill { (path.startsWith('blots/') || path.startsWith('formats/')) && target && typeof target !== 'boolean' && - // @ts-expect-error target.blotName !== 'abstract' ) { globalRegistry.register(target); } - // @ts-expect-error if (typeof target.register === 'function') { - // @ts-expect-error target.register(globalRegistry); } } diff --git a/packages/quill/src/modules/syntax.ts b/packages/quill/src/modules/syntax.ts index ed8214e81f..da99fdc41d 100644 --- a/packages/quill/src/modules/syntax.ts +++ b/packages/quill/src/modules/syntax.ts @@ -80,7 +80,7 @@ class SyntaxCodeBlock extends CodeBlock { } } - replaceWith(name: string, value: unknown) { + replaceWith(name: string | Blot, value?: any) { this.formatAt(0, this.length(), CodeToken.blotName, false); return super.replaceWith(name, value); } @@ -180,7 +180,7 @@ class SyntaxCodeBlockContainer extends CodeBlockContainer { } } } -// @ts-expect-error + SyntaxCodeBlockContainer.allowedChildren = [SyntaxCodeBlock]; SyntaxCodeBlock.requiredContainer = SyntaxCodeBlockContainer; SyntaxCodeBlock.allowedChildren = [CodeToken, CursorBlot, TextBlot, BreakBlot]; @@ -206,7 +206,6 @@ class Syntax extends Module { static register() { Quill.register(CodeToken, true); - // @ts-expect-error Quill.register(SyntaxCodeBlock, true); Quill.register(SyntaxCodeBlockContainer, true); } diff --git a/packages/quill/src/quill.ts b/packages/quill/src/quill.ts index 0c3626fd8a..648183434b 100644 --- a/packages/quill/src/quill.ts +++ b/packages/quill/src/quill.ts @@ -115,6 +115,7 @@ Quill.register( true, ); +export { Module } from './core.js'; export type { Bounds, DebugLevel, diff --git a/packages/quill/test/types/quill.test-d.ts b/packages/quill/test/types/quill.test-d.ts index 004180a87d..1a2ca74040 100644 --- a/packages/quill/test/types/quill.test-d.ts +++ b/packages/quill/test/types/quill.test-d.ts @@ -3,6 +3,37 @@ import Quill from '../../src/quill.js'; import type { EmitterSource, Parchment, Range } from '../../src/quill.js'; import Delta from 'quill-delta'; import type { default as Block, BlockEmbed } from '../../src/blots/block.js'; +import SnowTheme from '../../src/themes/snow.js'; +import { LeafBlot } from 'parchment'; + +{ + const Counter = (quill: Quill, options: { unit: string }) => { + console.log(quill, options); + }; + Quill.register('modules/counter', Counter); + Quill.register('themes/snow', SnowTheme); + Quill.register('themes/snow', SnowTheme, true); + + class MyBlot extends LeafBlot {} + + Quill.register(MyBlot); + Quill.register(MyBlot, true); + // @ts-expect-error + Quill.register(SnowTheme); + Quill.register({ + 'modules/counter': Counter, + 'themes/snow': SnowTheme, + 'formats/my-blot': MyBlot, + }); + Quill.register( + { + 'modules/counter': Counter, + 'themes/snow': SnowTheme, + 'formats/my-blot': MyBlot, + }, + true, + ); +} const quill = new Quill('#editor'); diff --git a/packages/quill/test/unit/core/quill.spec.ts b/packages/quill/test/unit/core/quill.spec.ts index 21433856a6..c128c0dc12 100644 --- a/packages/quill/test/unit/core/quill.spec.ts +++ b/packages/quill/test/unit/core/quill.spec.ts @@ -1,7 +1,7 @@ import '../../../src/quill.js'; import Delta from 'quill-delta'; -import { Registry } from 'parchment'; -import { beforeEach, describe, expect, test, vitest } from 'vitest'; +import { LeafBlot, Registry } from 'parchment'; +import { afterEach, beforeEach, describe, expect, test, vitest } from 'vitest'; import type { MockedFunction } from 'vitest'; import Emitter from '../../../src/core/emitter.js'; import Theme from '../../../src/core/theme.js'; @@ -29,6 +29,47 @@ describe('Quill', () => { }); }); + describe('register', () => { + const imports = { ...Quill.imports }; + afterEach(() => { + Quill.imports = imports; + }); + + test('register(path, target)', () => { + class Counter {} + Quill.register('modules/counter', Counter); + + expect(Quill.imports).toHaveProperty('modules/counter', Counter); + expect(Quill.import('modules/counter')).toEqual(Counter); + }); + + test('register(formats)', () => { + class MyCounterBlot extends LeafBlot { + static blotName = 'my-counter'; + static className = 'ql-my-counter'; + } + Quill.register(MyCounterBlot); + + expect(Quill.imports).toHaveProperty('formats/my-counter', MyCounterBlot); + expect(Quill.import('formats/my-counter')).toEqual(MyCounterBlot); + }); + + test('register(targets)', () => { + class ABlot extends LeafBlot { + static blotName = 'a-blot'; + static className = 'ql-a-blot'; + } + class AModule {} + Quill.register({ + 'formats/a-blot': ABlot, + 'modules/a-module': AModule, + }); + + expect(Quill.import('formats/a-blot')).toEqual(ABlot); + expect(Quill.import('modules/a-module')).toEqual(AModule); + }); + }); + describe('construction', () => { test('empty', () => { const quill = new Quill(createContainer()); From 999d6075a080ca0b4097c3302023f91f34ed1a8d Mon Sep 17 00:00:00 2001 From: Zihua Li Date: Mon, 13 May 2024 10:24:38 +0800 Subject: [PATCH 04/10] Use labels for changelog generating (#4198) --- .github/release.yml | 17 +++++++++++++++++ .github/workflows/label.yml | 23 +++++++++++++++++++++++ 2 files changed, 40 insertions(+) create mode 100644 .github/release.yml create mode 100644 .github/workflows/label.yml diff --git a/.github/release.yml b/.github/release.yml new file mode 100644 index 0000000000..839f68ee84 --- /dev/null +++ b/.github/release.yml @@ -0,0 +1,17 @@ +changelog: + exclude: + authors: + - quill-bot + categories: + - title: Bug Fixes 🛠 + labels: + - change:bugfix + - title: New Features 🎉 + labels: + - change:feature + - title: Documentation 📚 + labels: + - change:documentation + - title: Other Changes + labels: + - "*" diff --git a/.github/workflows/label.yml b/.github/workflows/label.yml new file mode 100644 index 0000000000..26ee060b16 --- /dev/null +++ b/.github/workflows/label.yml @@ -0,0 +1,23 @@ +name: Pull Requests + +on: + pull_request: + types: [opened, labeled, unlabeled, synchronize] + +jobs: + label: + runs-on: ubuntu-latest + permissions: + issues: write + pull-requests: write + steps: + - uses: mheap/github-action-required-labels@v5 + with: + mode: exactly + count: 1 + labels: | + change:bugfix + change:feature + change:documentation + change:chore + add_comment: false From 09ed45e8f2b7536d412b3ef8b8c8dae030252cce Mon Sep 17 00:00:00 2001 From: Zihua Li Date: Mon, 13 May 2024 13:14:30 +0800 Subject: [PATCH 05/10] Regenerate CHANGELOG from GitHub releases (#4199) --- .github/workflows/changelog.yml | 22 ++ CHANGELOG.md | 375 ++++++++++++++++++-------------- package-lock.json | 273 ++++++++++++++++++++--- package.json | 1 + scripts/changelog.mjs | 68 ++++++ scripts/release.js | 48 +--- 6 files changed, 552 insertions(+), 235 deletions(-) create mode 100644 .github/workflows/changelog.yml create mode 100644 scripts/changelog.mjs diff --git a/.github/workflows/changelog.yml b/.github/workflows/changelog.yml new file mode 100644 index 0000000000..3c6228b2f4 --- /dev/null +++ b/.github/workflows/changelog.yml @@ -0,0 +1,22 @@ +name: Generate Changelog + +on: + release: + types: [published] + +jobs: + changelog: + runs-on: ubuntu-latest + steps: + - name: Git checkout + uses: actions/checkout@v3 + + - name: Use Node.js + uses: actions/setup-node@v3 + with: + node-version: 20 + + - run: npm ci + - run: node ./scripts/changelog.mjs + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} diff --git a/CHANGELOG.md b/CHANGELOG.md index 05562e9d9e..df9bd5bec5 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,16 +1,18 @@ -# [Unreleased] +# v2.0.1 (2024-05-01) -# 2.0.1 +## Bug Fixes - Prevent overriding of theme's default toolbar settings mistakenly [#4120](https://github.com/quilljs/quill/pull/4120) - Improve typings for methods that return a Delta [#4136](https://github.com/quilljs/quill/pull/4136) - Fix toolbar icons for h3-h6 [#4131](https://github.com/quilljs/quill/pull/4131) -# 2.0.0 +[All changes](https://github.com/quilljs/quill/releases/tag/v2.0.1) + +# v2.0.0 (2024-04-17) We are thrilled to announce the release of Quill 2.0! Please check out the [announcement post](https://slab.com/blog/announcing-quill-2-0/). -### Major Improvements +## Major Improvements - Quill is now a valid ESM package for better ecosystem (e.g. bundlers) and tree-shaking support - Nested Quill support [#3590](https://github.com/quilljs/quill/pull/3590) @@ -20,7 +22,7 @@ We are thrilled to announce the release of Quill 2.0! Please check out the [anno - Auto detect scrolling container [#3840](https://github.com/quilljs/quill/pull/3840) - **Clipboard**: Improve support for pasting from Google Docs and Microsoft Word -### Performance Improvements +## Performance Improvements Quill 2.0 includes many performance optimizations, the most important of which is the improved rendering speed for large content. @@ -28,7 +30,7 @@ Quill 2.0 includes many performance optimizations, the most important of which i - Avoid fetching selections when possible [#3538](https://github.com/quilljs/quill/pull/3538) - No need to setContents when container is empty [#3539](https://github.com/quilljs/quill/pull/3539) -### Code Modernization +## Code Modernization - Migrated to TypeScript - Provided official TypeScript declarations @@ -36,9 +38,9 @@ Quill 2.0 includes many performance optimizations, the most important of which i - Migrated to Playwright for E2E testing - Migrated website to Gatsby -For all commits, please see the [2.0.0 release page](https://github.com/quilljs/quill/releases/tag/v2.0.0). +[All changes](https://github.com/quilljs/quill/releases/tag/v2.0.0) -# 2.0.0-rc.5 +# v2.0.0-rc.5 (2024-04-04) - **Clipboard** Add support for Quill v1 list attributes - Fix overload declarations for `quill.formatText()` and other methods @@ -46,7 +48,9 @@ For all commits, please see the [2.0.0 release page](https://github.com/quilljs/ - Expose Range type - Allow ref for insertBefore to be null -# 2.0.0-rc.4 +[All changes](https://github.com/quilljs/quill/releases/tag/v2.0.0-rc.5) + +# v2.0.0-rc.4 (2024-03-24) - Include source maps for Parchment - **Clipboard** Support pasting links copied from iOS share sheets @@ -54,51 +58,65 @@ For all commits, please see the [2.0.0 release page](https://github.com/quilljs/ - Expose types for Quill options - Remove empty .css.js files generated by bundlers -# 2.0.0-rc.3 +[All changes](https://github.com/quilljs/quill/releases/tag/v2.0.0-rc.4) + +# v2.0.0-rc.3 (2024-03-16) - Fix `Quill#getSemanticHTML()` for list items - Remove unnecessary Firefox workaround - **Clipboard** Fix redundant newlines when pasting from external sources - Add `formats` option for specifying allowed formats -# 2.0.0-rc.2 +[All changes](https://github.com/quilljs/quill/releases/tag/v2.0.0-rc.3) + +# v2.0.0-rc.2 (2024-02-15) - Fix toolbar button state not updated in some cases - Narrower `BubbleTheme.tooltip` type - Fix `Selection#getBounds()` when starting range at end of text node - Improve compatibility with esbuild -# 2.0.0-rc.1 +[All changes](https://github.com/quilljs/quill/releases/tag/v2.0.0-rc.2) + +# v2.0.0-rc.1 (2024-02-12) + +- Remove unnecessary lodash usages. -- Remove unnecessary lodash usages +[All changes](https://github.com/quilljs/quill/releases/tag/v2.0.0-rc.1) -# 2.0.0-rc.0 +# v2.0.0-rc.0 (2024-02-03) -- **Clipboard** Convert newlines between inline elements to a space -- **Clipboard** Avoid generating unsupported formats on paste -- **Clipboard** Improve support for pasting from Google Docs and Microsoft Word -- **Clipboard** Ignore whitespace between pasted empty paragraphs -- **Syntax** Support highlight.js v10 and v11 +- **Clipboard** Convert newlines between inline elements to a space. +- **Clipboard** Avoid generating unsupported formats on paste. +- **Clipboard** Improve support for pasting from Google Docs and Microsoft Word. +- **Clipboard** Ignore whitespace between pasted empty paragraphs. +- **Syntax** Support highlight.js v10 and v11. -# 2.0.0-beta.2 +[All changes](https://github.com/quilljs/quill/releases/tag/v2.0.0-rc.0) -- Fix IME not working correctly in Safari -- **Clipboard** Support paste as plain text -- Fix `Quill.getText()` not respecting `length` parameter -- **History** Fix redo shortcut not working on Linux and Windows +# v2.0.0-beta.2 (2024-01-30) -# 2.0.0-beta.1 +- Fix IME not working correctly in Safari. +- **Clipboard** Support paste as plain text. +- Fix `Quill.getText()` not respecting `length` parameter. +- **History** Fix redo shortcut not working on Linux and Windows. -- Fix syntax label from "Javascript" to "JavaScript" -- Fix typing errors for emitter -- Inline SVG images for easier bundler setup -- Improve typing for Registry +[All changes](https://github.com/quilljs/quill/releases/tag/v2.0.0-beta.2) -# 2.0.0-beta.0 +# v2.0.0-beta.1 (2024-01-21) + +- Fix syntax label from "Javascript" to "JavaScript". +- Fix typing errors for emitter. +- Inline SVG images for easier bundler setup. +- Improve typing for Registry. + +[All changes](https://github.com/quilljs/quill/releases/tag/v2.0.0-beta.1) + +# v2.0.0-beta.0 (2023-12-08) In the upcoming 2.0 release, Quill has been significantly modernized. Leveraging the latest browser-supported APIs, Quill now delivers a more efficient and reliable editing experience. -### Major Improvements +## Major Improvements - Nested Quill support [#3590](https://github.com/quilljs/quill/pull/3590) - Improved IME and spell corrector support [#3807](https://github.com/quilljs/quill/pull/3807) @@ -106,16 +124,15 @@ In the upcoming 2.0 release, Quill has been significantly modernized. Leveraging - **History**: Record selection in history module [#3823](https://github.com/quilljs/quill/pull/3823) - Auto detect scrolling container [#3840](https://github.com/quilljs/quill/pull/3840) -### Performance Improvements +## Performance Improvements -Quill 2.0 includes many performance optimizations, -the most important of which is the improved rendering speed for large content. +Quill 2.0 includes many performance optimizations, the most important of which is the improved rendering speed for large content. - Improve inserting performance [#3815](https://github.com/quilljs/quill/pull/3815) - Avoid fetching selections when possible [#3538](https://github.com/quilljs/quill/pull/3538) - No need to setContents when container is empty [#3539](https://github.com/quilljs/quill/pull/3539) -### Code Modernization +## Code Modernization - Migrated to TypeScript - Provided official TypeScript declarations @@ -123,48 +140,32 @@ the most important of which is the improved rendering speed for large content. - Migrated to Playwright for E2E testing - Migrated website to Gatsby -### All Changes - -- Fix UI node interactions with line-level navigation shortcuts [#3898](https://github.com/quilljs/quill/pull/3898) -- Use `` instead of `` for Strike format [Commit](https://github.com/quilljs/quill/commit/16427683890374ed5acba96765757c44f5d5f2f5) -- **Keyboard**: Backspace will keep the format when previous line is empty [#3013](https://github.com/quilljs/quill/pull/3013) -- **Keyboard**: Discontinue inline formats on enter [#3428](https://github.com/quilljs/quill/pull/3428) -- Fix length mismatch when copying code [#3028](https://github.com/quilljs/quill/pull/3028) -- Keep list numbers continuous when separated by certain elements [#3086](https://github.com/quilljs/quill/pull/3086) -- Header/paragraph doesn't reset list numbering in Firefox [#3272](https://github.com/quilljs/quill/pull/3272) -- Fix `Quill#setContents()` on block embed ending [Commit](https://github.com/quilljs/quill/commit/84d22342d5e3eb33453d4601d2c7f55d26b47495) -- Track all implicit newline indexes and shift for delete [Commit](https://github.com/quilljs/quill/commit/cf101f681158a48b1b477c1544680cc9614425ae) -- **Clipboard**: Fix pasting in checklist does not preserve indentation [#3064](https://github.com/quilljs/quill/pull/3064) -- **Clipboard**: Prefer file over html when uploading [Commit](https://github.com/quilljs/quill/commit/e164f12603f646d919c853a7db02137399dbf696) -- **Clipboard**: Keep newlines in pre tag [#3687](https://github.com/quilljs/quill/pull/3687) -- **Clipboard**: Cut across lines shouldn't affect the formatting of the line above [#3286](https://github.com/quilljs/quill/pull/3286) -- getLeaf() should ignore non-leaf blots [#3489](https://github.com/quilljs/quill/pull/3489) -- **Selection**: Fix getBounds of empty text nodes [#3491](https://github.com/quilljs/quill/pull/3491) -- Keep cursor unlinked to avoid elements being pushed down inside [#3534](https://github.com/quilljs/quill/pull/3534) -- Fix combineFormats with multiple values repeated [#3336](https://github.com/quilljs/quill/issues/3336) -- Fix selection-change not firing on DOM mutations [#3591](https://github.com/quilljs/quill/pull/3591) -- Improve Tab handling in code block [#3593](https://github.com/quilljs/quill/pull/3593) -- Add SMS to link protocol whitelist [#2851](https://github.com/quilljs/quill/pull/2851) -- Fix embed inherits formats unexpectedly [#3783](https://github.com/quilljs/quill/pull/3783) -- Fix HTML and Delta not matching [#3784](https://github.com/quilljs/quill/pull/3784) -- Fix inline embed insertions with applyDelta() [#3793](https://github.com/quilljs/quill/pull/3793) -- Fix inserting newlines into formatted text [#3582](https://github.com/quilljs/quill/pull/3582) -- **History**: Pass source for history actions [#3514](https://github.com/quilljs/quill/pull/3514) -- **History**: Handle native undo/redo [#3115](https://github.com/quilljs/quill/pull/3115) -- Fix block embed attributor errors [#3825](https://github.com/quilljs/quill/pull/3825) -- **Clipboard**: getHTML() should include outer tag when range is entire line [#3850](https://github.com/quilljs/quill/pull/3850) - -# 1.3.6 +[All changes](https://github.com/quilljs/quill/releases/tag/v2.0.0-beta.0) + +# v1.3.7 (2019-09-09) + +Security related bug fixes. + +- https://app.snyk.io/vuln/npm:extend:20180424 +- https://www.npmjs.com/advisories/1039 + +Thank you [@danfuzz](https://github.com/danfuzz), [@danielw93](https://github.com/danielw93), [@jonathanlloyd](https://github.com/jonathanlloyd), and [@k-sai-kiranmayee](https://github.com/k-sai-kiranmayee) for your contributions to this release. + +[All changes](https://github.com/quilljs/quill/releases/tag/v1.3.7) + +# v1.3.6 (2018-03-12) - Make picker accessible [#1999](https://github.com/quilljs/quill/pull/1999) - Fix Japanese composition in Chrome 65 [#2009](https://github.com/quilljs/quill/issues/2009) Thanks to [@berylw](https://github.com/berylw) and [@erinsinger93](https://github.com/erinsinger93) for contributions to this release! -# 1.3.5 +[All changes](https://github.com/quilljs/quill/releases/tag/v1.3.6) + +# v1.3.5 (2018-01-22) - Fix indent preservation of a checked checklist item [#1818](https://github.com/quilljs/quill/issues/1818) -- Added the asterisk "\*" character as a shortcut to trigger bullet list formatting [#1819](https://github.com/quilljs/quill/pull/1819) + - added as a shortcut to trigger bullet list formatting [#1819](https://github.com/quilljs/quill/pull/1819) - Fix pasting text-align styles [#1873](https://github.com/quilljs/quill/issues/1873) - Fix cursor position after dangerouslyPasteHTML [#1886](https://github.com/quilljs/quill/issues/1886) - Fix value of history stack in text-change handler [#1906](https://github.com/quilljs/quill/pull/1906) @@ -172,14 +173,18 @@ Thanks to [@berylw](https://github.com/berylw) and [@erinsinger93](https://githu Thank you [@araruna](https://github.com/araruna), [@bryanrsmith](https://github.com/bryanrsmith), [@haugstrup](https://github.com/haugstrup), [@icylace](https://github.com/icylace), [@leimig](https://github.com/leimig), [@LFDM](https://github.com/LFDM), [@nikparo](https://github.com/nikparo), [@rafpaf](https://github.com/rafpaf) and [@vk2sky](https://github.com/vk2sky) for your contributions to this release. -# 1.3.4 +[All changes](https://github.com/quilljs/quill/releases/tag/v1.3.5) + +# v1.3.4 (2017-11-06) - Loosen dependency specification [#1748](https://github.com/quilljs/quill/issues/1748) - Loosen list autofill constraint [#1749](https://github.com/quilljs/quill/issues/1749) Thanks to [@danfuzz](https://github.com/danfuzz) and [@SoftVision-CarmenFat](https://github.com/SoftVision-CarmenFat) for contributions to this release! -# 1.3.3 +[All changes](https://github.com/quilljs/quill/releases/tag/v1.3.4) + +# v1.3.3 (2017-10-09) - Fix `getFormat` with no parameters while editor is not focused [#1548](https://github.com/quilljs/quill/issues/1548) - Remove automatic highlighting across embeds [#1691](https://github.com/quilljs/quill/issues/1691) @@ -189,7 +194,9 @@ Thanks to [@danfuzz](https://github.com/danfuzz) and [@SoftVision-CarmenFat](htt Thank you [@altschuler](https://github.com/altschuler), [@arrocke](https://github.com/arrocke), [@guillaumepotier](https://github.com/guillaumepotier), [@sferoze](https://github.com/sferoze) and [@volser](https://github.com/volser) for your contributions to this release. -# 1.3.2 +[All changes](https://github.com/quilljs/quill/releases/tag/v1.3.3) + +# v1.3.2 (2017-09-04) - Pasting into code block should always paste as code [#1624](https://github.com/quilljs/quill/issues/1624) - Fix removing embed selection when arrow keys change selection [#1633](https://github.com/quilljs/quill/issues/1633) @@ -199,14 +206,18 @@ Thank you [@altschuler](https://github.com/altschuler), [@arrocke](https://githu Thanks to [@abramz](https://github.com/abramz), [@amitm02](https://github.com/amitm02), [@eamodio](https://github.com/eamodio), [@HWliao](https://github.com/HWliao), [@mmitis](https://github.com/mmitis), [@nelsonpecora](https://github.com/nelsonpecora), [@nipunjain87](https://github.com/nipunjain87), and [@ValueBerry](https://github.com/ValueBerry) for contributions to this release! -# 1.3.1 +[All changes](https://github.com/quilljs/quill/releases/tag/v1.3.2) + +# v1.3.1 (2017-08-07) - Fix placeholder when emptying text [#1594](https://github.com/quilljs/quill/issues/1594) - Fix inserting newline after header [#1616](https://github.com/quilljs/quill/issues/1616) Thank you [@Natim](https://github.com/Natim) and [@stephenLYao](https://github.com/stephenLYao) for your contributions to this release. -# 1.3.0 +[All changes](https://github.com/quilljs/quill/releases/tag/v1.3.1) + +# v1.3.0 (2017-07-17) Add `matchVisual` [configuration](https://quilljs.com/docs/modules/clipboard/#configuration) to Clipboard. @@ -224,7 +235,9 @@ Add `matchVisual` [configuration](https://quilljs.com/docs/modules/clipboard/#co Thanks to [@alexkrolick](https://github.com/alexkrolick), [@amitm02](https://github.com/amitm02), [@Christilut](https://github.com/Christilut), [@danielschwartz](https://github.com/danielschwartz), [@emanuelbsilva](https://github.com/emanuelbsilva), [@ersommer](https://github.com/ersommer), [@fiurrr](https://github.com/fiurrr), [@jackmu95](https://github.com/jackmu95), [@jmzhang](https://github.com/jmzhang), [@mdpye](https://github.com/mdpye), [@ralrom](https://github.com/ralrom), [@sferoze](https://github.com/sferoze), [@simon-at-fugu](https://github.com/simon-at-fugu), and [@yogadzx](https://github.com/yogadzx) for contributions to this release! -# 1.2.6 +[All changes](https://github.com/quilljs/quill/releases/tag/v1.3.0) + +# v1.2.6 (2017-06-05) - Disable Grammarly by default [#574](https://github.com/quilljs/quill/issues/574) - Fix RTL list spacing [#1485](https://github.com/quilljs/quill/pull/1485) @@ -233,7 +246,9 @@ Thanks to [@alexkrolick](https://github.com/alexkrolick), [@amitm02](https://git Thank you [@amitm02](https://github.com/amitm02), [@benbro](https://github.com/benbro) [@nickbaum](https://github.com/nickbaum), [@stalniy](https://github.com/stalniy) and [@ygrishajev](https://github.com/ygrishajev) for your contributions to this release. -# 1.2.5 +[All changes](https://github.com/quilljs/quill/releases/tag/v1.2.6) + +# v1.2.5 (2017-05-29) - Fix cursor shifting to be exclusive of user cursor [#1367](https://github.com/quilljs/quill/issues/1367) - Fix iOS hover state on toolbar [#1388](https://github.com/quilljs/quill/issues/1388) @@ -245,7 +260,9 @@ Thank you [@amitm02](https://github.com/amitm02), [@benbro](https://github.com/b Thanks to [@aliciawood](https://github.com/aliciawood), [@benbro](https://github.com/benbro), [@denis-aes](https://github.com/denis-aes), [@despreju](https://github.com/despreju), [@GlenKPeterson](https://github.com/GlenKPeterson), [@haugstrup](https://github.com/haugstrup), [@jziggas](https://github.com/jziggas), [@RobAley](https://github.com/RobAley), [@sheley1998](https://github.com/sheley1998), [@silverprize](https://github.com/silverprize), and [@yairy](https://github.com/yairy) for contributions to this release! -# 1.2.4 +[All changes](https://github.com/quilljs/quill/releases/tag/v1.2.5) + +# v1.2.4 (2017-04-18) - Fix pasting nested list [#906](https://github.com/quilljs/quill/issues/906) - Fix delete key interaction at end of list [#1277](https://github.com/quilljs/quill/issues/1277) @@ -259,7 +276,9 @@ Thanks to [@aliciawood](https://github.com/aliciawood), [@benbro](https://github Thanks to [@bigggge](https://github.com/bigggge), [@CoenWarmer](https://github.com/CoenWarmer), [@cutteroid](https://github.com/cutteroid), [@jay-cox](https://github.com/jay-cox), [@kiewic](https://github.com/kiewic), [@kloots](https://github.com/kloots), [@MichaelTontchev](https://github.com/MichaelTontchev), [@montlebalm](https://github.com/montlebalm), [@RichardNeill](https://github.com/RichardNeill), and [@vasconita](https://github.com/vasconita) for your contributions to this release. -# 1.2.3 +[All changes](https://github.com/quilljs/quill/releases/tag/v1.2.4) + +# v1.2.3 (2017-03-29) - Fix scrolling when appending new lines [#1276](https://github.com/quilljs/quill/issues/1276) [#1361](https://github.com/quilljs/quill/issues/1361) - Fix binding to explicit shortcut key [#1365](https://github.com/quilljs/quill/issues/1365) @@ -267,13 +286,17 @@ Thanks to [@bigggge](https://github.com/bigggge), [@CoenWarmer](https://github.c Thank you [@artaommahe](https://github.com/artaommahe), [@c-w](https://github.com/c-w), [@EladBet](https://github.com/EladBet), [@emenoh](https://github.com/emenoh), and [@montlebalm](https://github.com/montlebalm) for contributions to this release! -# 1.2.2 +[All changes](https://github.com/quilljs/quill/releases/tag/v1.2.3) + +# v1.2.2 (2017-02-27) - Fix backspace/delete on Windows/Ubuntu [#1334](https://github.com/quilljs/quill/issues/1334) Thanks to [@dinusuresh](https://github.com/dinusuresh) for your contributions to this release. -# 1.2.1 +[All changes](https://github.com/quilljs/quill/releases/tag/v1.2.2) + +# v1.2.1 (2017-02-27) - Fix link removal on Snow theme [#1259](https://github.com/quilljs/quill/issues/1259) - Fix CMD+backspace on empty editor [#1319](https://github.com/quilljs/quill/issues/1319) @@ -281,7 +304,9 @@ Thanks to [@dinusuresh](https://github.com/dinusuresh) for your contributions to Thank you [@danielschwartz](https://github.com/@danielschwartz), [@JedWatson](https://github.com/@JedWatson), [@montlebalm](https://github.com/@montlebalm), and [@simi](https://github.com/@simi) for contributions to this release! -# 1.2.0 +[All changes](https://github.com/quilljs/quill/releases/tag/v1.2.1) + +# v1.2.0 (2017-01-21) Add concept of experimental APIs: they are APIs meant to try out support for use cases we would like to address, but gives flexibility to find the right API interface. As such they are not covered by Semantic Versioning. Several are added to start things off: `find`, `getIndex`, `getLeaf`, `getLine`, `getLines`. @@ -289,7 +314,9 @@ Add concept of experimental APIs: they are APIs meant to try out support for use Thanks to [@haugstrup](https://github.com/haugstrup) for your contributions to this release. -# 1.1.10 +[All changes](https://github.com/quilljs/quill/releases/tag/v1.2.0) + +# v1.1.10 (2017-01-16) - Preserve user selection on API changes [#1152](https://github.com/quilljs/quill/issues/1152) - Fix backspacing into emojis [#1230](https://github.com/quilljs/quill/issues/1230) @@ -298,17 +325,21 @@ Thanks to [@haugstrup](https://github.com/haugstrup) for your contributions to t Thank you [@benbro](https://github.com/benbro), [@haugstrup](https://github.com/haugstrup), [@peterweck](https://github.com/peterweck) and [@sbevels](https://github.com/sbevels) for contributions to this release! -# 1.1.9 +[All changes](https://github.com/quilljs/quill/releases/tag/v1.1.10) -- Flip tooltips when vertically out of bounds [#851](https://github.com/quilljs/quill/issues/851) -- Fix IE11 autolinking and control backspace [#1028](https://github.com/quilljs/quill/issues/1028) -- Only show tooltip when user initiates selection change [#1193](https://github.com/quilljs/quill/issues/1193) -- Fix bug needing to click twice on align [#1220](https://github.com/quilljs/quill/issues/1220) -- Fix cut + pasting videos [#1222](https://github.com/quilljs/quill/issues/1222) +# v1.1.9 (2017-01-02) -Thanks to [@amitguptagwl](https://github.com/amitguptagwl), [@antonlabunets](https://github.com/antonlabunets), [@benbro](https://github.com/benbro), [@eamodio](https://github.com/eamodio) and [@ygrishajev](https://github.com/ygrishajev) for your contributions to this release. +- Support pasting italics from Google Docs [#1185](https://github.com/quilljs/quill/issues/1185) +- Fix setting dropdown picker back to default [#1191](https://github.com/quilljs/quill/issues/1191) +- Fix code-block formatting on empty first line in Firefox [#1195](https://github.com/quilljs/quill/issues/1195) +- Prevent formatting via keyboard shortcuts when not whitelisted [#1197](https://github.com/quilljs/quill/issues/1197) +- Fix select-all copy and overwrite paste in Firefox [#1202](https://github.com/quilljs/quill/issues/1202) + +Thank you [@adfaure](https://github.com/adfaure), [@berndschimmer](https://github.com/berndschimmer), [@CoenWarmer](https://github.com/CoenWarmer), [@montlebalm](https://github.com/montlebalm), and [@TraceyYau](https://github.com/TraceyYau) for contributions to this release! + +[All changes](https://github.com/quilljs/quill/releases/tag/v1.1.9) -# 1.1.8 +# v1.1.8 (2016-12-23) - Support pasting italics from Google Docs [#1185](https://github.com/quilljs/quill/issues/1185) - Fix setting dropdown picker back to default [#1191](https://github.com/quilljs/quill/issues/1191) @@ -318,7 +349,9 @@ Thanks to [@amitguptagwl](https://github.com/amitguptagwl), [@antonlabunets](htt Thank you [@adfaure](https://github.com/adfaure), [@berndschimmer](https://github.com/berndschimmer), [@CoenWarmer](https://github.com/CoenWarmer), [@montlebalm](https://github.com/montlebalm), and [@TraceyYau](https://github.com/TraceyYau) for contributions to this release! -# 1.1.7 +[All changes](https://github.com/quilljs/quill/releases/tag/v1.1.8) + +# v1.1.7 (2016-12-13) - Fix dropdown values reverting to default [#901](https://github.com/quilljs/quill/issues/901) - Add config to prevent scroll jumping on paste [#1082](https://github.com/quilljs/quill/issues/1082) @@ -329,7 +362,9 @@ Thank you [@adfaure](https://github.com/adfaure), [@berndschimmer](https://githu Thanks to [@cutteroid](https://github.com/cutteroid), [@houxg](https://github.com/houxg), [@jasongisstl](https://github.com/jasongisstl), [@nikparo](https://github.com/nikparo), [@sbevels](https://github.com/sbevels), and [sferoze](https://github.com/sferoze) for your contributions to this release. -# 1.1.6 +[All changes](https://github.com/quilljs/quill/releases/tag/v1.1.7) + +# v1.1.6 (2016-12-06) ### Features @@ -342,7 +377,9 @@ Checklists [#759](https://github.com/quilljs/quill/issues/759) support has been Thank you [@jgmediadesign](https://github.com/jgmediadesign) and [@julienbmobile](https://github.com/julienbmobile) for contributions to this release! -# 1.1.5 +[All changes](https://github.com/quilljs/quill/releases/tag/v1.1.6) + +# v1.1.5 (2016-11-07) - Remove unnecessary type attribute in documentation [#1087](https://github.com/quilljs/quill/pull/1087) - Fix chrome 52+ input file label open slow [#1090](https://github.com/quilljs/quill/pull/1090) @@ -350,22 +387,28 @@ Thank you [@jgmediadesign](https://github.com/jgmediadesign) and [@julienbmobile Thank you [@jleen](https://github.com/jleen), [@kaelig](https://github.com/kaelig), and [@YouHan26](https://github.com/YouHan26) for your contributions to this release. -# 1.1.3 +[All changes](https://github.com/quilljs/quill/releases/tag/v1.1.5) + +# v1.1.3 (2016-10-24) - Update quill-delta [delta#2](https://github.com/quilljs/delta/issues/2) - Fix link creation [#1073](https://github.com/quilljs/quill/issues/1073) Thanks to [@eamodio](https://github.com/eamodio) and [@metsavir](https://github.com/metsavir) for contributions to this release! -# 1.1.2 +[All changes](https://github.com/quilljs/quill/releases/tag/v1.1.3) + +# v1.1.2 (2016-10-24) - Fix setContents on already formatted text [#1065](https://github.com/quilljs/quill/issues/1065) - Fix regression [#1067](https://github.com/quilljs/quill/issues/1067) - Improve documentation [#1069](https://github.com/quilljs/quill/pull/1069) [#1070](https://github.com/quilljs/quill/pull/1070) -Thank you [@benbro](https://github.com/benbro), [@derickruiz](https://github.com/derickruiz), [@eamodio](https://github.com/eamodio), [@hallaathrad](https://github.com/hallaathrad), and [@philly385](https://github.com/philly385) for your contributions to this release. +Thank you [benbro](https://github.com/benbro), [derickruiz](https://github.com/derickruiz), [eamodio](https://github.com/eamodio), [hallaathrad](https://github.com/hallaathrad), and [philly385](https://github.com/philly385) for your contributions to this release. -# 1.1.1 +[All changes](https://github.com/quilljs/quill/releases/tag/v1.1.2) + +# v1.1.1 (2016-10-21) ### Bug fixes @@ -379,7 +422,9 @@ Thanks to [@artaommahe](https://github.com/artaommahe), [@benbro](https://github Special thanks to [@DadaMonad](https://github.com/DadaMonad) for contributions on [fast-diff](https://github.com/jhchen/fast-diff) that enabled the [#746](https://github.com/quilljs/quill/issues/746) fix. -# 1.1.0 +[All changes](https://github.com/quilljs/quill/releases/tag/v1.1.1) + +# v1.1.0 (2016-10-17) ### Additions @@ -401,7 +446,9 @@ So a `strict` configuration option has been added. It is true by default so the Thank you [@benbro](https://github.com/benbro), [@cutteroid](https://github.com/cutteroid), [@evansolomon](https://github.com/evansolomon), [@felipeochoa](https://github.com/felipeochoa), [jackmu95](https://github.com/jackmu95), [@joedynamite](https://github.com/joedynamite), [@lance13c](https://github.com/lance13c), [@leebenson](https://github.com/leebenson), [@maartenvanvliet](https://github.com/maartenvanvliet), [@sarbbottam](https://github.com/sarbbottam), [@viljark](https://github.com/viljark), [@w00fz](https://github.com/w00fz) for their contributions to this release. -# 1.0.6 +[All changes](https://github.com/quilljs/quill/releases/tag/v1.1.0) + +# v1.0.6 (2016-09-30) Documentation clarifications and bug fixes. @@ -412,11 +459,9 @@ Documentation clarifications and bug fixes. Thanks to [@dropfen](https://github.com/dropfen), [@evansolomon](https://github.com/evansolomon), [@hallaathrad](https://github.com/hallaathrad), [@janyksteenbeek](https://github.com/janyksteenbeek), [@jackmu95](https://github.com/jackmu95), [@marktron](https://github.com/marktron), [@mcat-ee](https://github.com/mcat-ee), [@unhammer](https://github.com/unhammer), and [@zeke](https://github.com/zeke) for contributions to this release! -# 1.0.5 +[All changes](https://github.com/quilljs/quill/releases/tag/v1.0.6) -Became 1.0.6 with a build/deploy fix. - -# 1.0.4 +# v1.0.4 (2016-09-19) - Fix bubble theme defaults [#963](https://github.com/quilljs/quill/issues/963) - Fix browsers modifying inline nesting order [#971](https://github.com/quilljs/quill/issues/971) @@ -426,28 +471,38 @@ Became 1.0.6 with a build/deploy fix. Thank you [jackmu95](https://github.com/jackmu95), [kristeehan](https://github.com/kristeehan), [ruffle1986](https://github.com/ruffle1986), [sergop321](https://github.com/sergop321), [sferoze](https://github.com/sferoze), and [sijad](https://github.com/sijad) for contributions to this release. -# 1.0.3 +[All changes](https://github.com/quilljs/quill/releases/tag/v1.0.4) + +# v1.0.3 (2016-09-07) - Fix [#928](https://github.com/quilljs/quill/issues/928) Thank you [@scottmessinger](https://github.com/scottmessinger) for the bug report. -# 1.0.2 +[All changes](https://github.com/quilljs/quill/releases/tag/v1.0.3) + +# v1.0.2 (2016-09-07) - Fix building quill.core.js [docs #11](https://github.com/quilljs/quilljs.github.io/issues/11) - Fix regression of [#793](https://github.com/quilljs/quill/issues/793) Thanks to [@eamodio](https://github.com/eamodio) and [@neandrake](https://github.com/neandrake) for their contributions to this release. -# 1.0.0 +[All changes](https://github.com/quilljs/quill/releases/tag/v1.0.2) + +# v1.0.0 (2016-09-06) Quill 1.0 is released! Read the [official announcement](https://quilljs.com/blog/announcing-quill-1-0/). -# 1.0.0-rc.4 +[All changes](https://github.com/quilljs/quill/releases/tag/v1.0.0) + +# v1.0.0-rc.4 (2016-08-31) Fix one important bug [fdd920](https://github.com/quilljs/quill/commit/fdd920250c05403ed9e5d6d86826a00167ba0b09) -# 1.0.0-rc.3 +[All changes](https://github.com/quilljs/quill/releases/tag/v1.0.0-rc.4) + +# v1.0.0-rc.3 (2016-08-29) A few bug fixes, one with with possibly significant implications. See the [issue #889](https://github.com/quilljs/quill/issues/889) and [commit fix](https://github.com/quilljs/quill/commit/be24c62a6234818548658fcb5e1935a0c07b4eb7) for more details. @@ -462,7 +517,9 @@ A few bug fixes, one with with possibly significant implications. See the [issue Thank you [@benbro](https://github.com/benbro), [@cgilboy](https://github.com/cgilboy), [@cutteroid](https://github.com/cutteroid), and [@routman](https://github.com/routman) for contributions to this release! -# 1.0.0-rc.2 +[All changes](https://github.com/quilljs/quill/releases/tag/v1.0.0-rc.3) + +# v1.0.0-rc.2 (2016-08-23) A few bug fixes, including one significant [one](https://github.com/quilljs/quill/issues/883) @@ -474,7 +531,9 @@ A few bug fixes, including one significant [one](https://github.com/quilljs/quil Thanks to [benbro](https://github.com/benbro), [cutteroid](https://github.com/cutteroid), and [CapTec](https://github.com/CapTec) for their contributions to this release. -# 1.0.0-rc.1 +[All changes](https://github.com/quilljs/quill/releases/tag/v1.0.0-rc.2) + +# v1.0.0-rc.1 (2016-08-23) A few bug fixes and performance improvements. @@ -493,7 +552,9 @@ A few bug fixes and performance improvements. Thank you [@benbro](https://github.com/benbro), [@fernandogmar](https://github.com/fernandogmar), [@sachinrekhi](https://github.com/sachinrekhi), [@sferoze](https://github.com/sferoze), and [@stalniy](https://github.com/stalniy) for contributions to this release! -# 1.0.0-rc.0 +[All changes](https://github.com/quilljs/quill/releases/tag/v1.0.0-rc.1) + +# v1.0.0-rc.0 (2016-08-18) Take a look at [Quill 1.0 Release Candidate](https://quilljs.com/blog/quill-1-0-release-candidate-released/) for more details. @@ -545,7 +606,9 @@ A huge thank you to all contributors to through the beta! Special thanks goes to - [@u9520107](https://github.com/u9520107) - [@WriterStat](https://github.com/WriterStat) -# 1.0.0-beta.11 +[All changes](https://github.com/quilljs/quill/releases/tag/v1.0.0-rc.0) + +# v1.0.0-beta.11 (2016-08-03) Fixed some regressive bugs from previous release. @@ -553,11 +616,13 @@ Fixed some regressive bugs from previous release. - Fix activating more than one format before typing [#841](https://github.com/quilljs/quill/issues/841) - Run default matchers before before user defined ones [#843](https://github.com/quilljs/quill/issues/843) -- Fix merging theme configurations [#844](https://github.com/quilljs/quill/issues/844), [#845](845) +- Fix merging theme configurations [#844](https://github.com/quilljs/quill/issues/844), [#845](https://github.com/quilljs/quill/issues/845) Thanks [benbro](https://github.com/benbro), [jackmu95](https://github.com/jackmu95), and [george-norris-salesforce](https://github.com/george-norris-salesforce) for the bug reports. -# 1.0.0-beta.10 +[All changes](https://github.com/quilljs/quill/releases/tag/v1.0.0-beta.11) + +# v1.0.0-beta.10 (2016-08-03) Lots of bug fixes and performance improvements. @@ -586,7 +651,9 @@ Lots of bug fixes and performance improvements. Thanks to [benbro](https://github.com/benbro), [clemmy](https://github.com/clemmy), [crisbeto](https://github.com/crisbeto), [cutteroid](https://github.com/cutteroid), [jackmu95](https://github.com/jackmu95), [kylebragger](https://github.com/kylebragger), [sachinrekhi](https://github.com/sachinrekhi), [stalniy](https://github.com/stalniy), and [tOgg1](https://github.com/tOgg1) for their contributions to this release. -# 1.0.0-beta.9 +[All changes](https://github.com/quilljs/quill/releases/tag/v1.0.0-beta.10) + +# v1.0.0-beta.9 (2016-07-19) Potentially the final beta before a release candidate, if no major issues are discovered. @@ -611,7 +678,9 @@ Potentially the final beta before a release candidate, if no major issues are di Thank you [@benbro](https://github.com/benbro), [@KameSama](https://github.com/KameSama), and [@sachinrekhi](https://github.com/sachinrekhi) for contributions to this release! -# 1.0.0-beta.8 +[All changes](https://github.com/quilljs/quill/releases/tag/v1.0.0-beta.9) + +# v1.0.0-beta.8 (2016-07-08) Weekly beta preview release. The editor is almost ready for release candidacy but a couple cycles will be spent on the Snow and Bubble interfaces. @@ -637,15 +706,13 @@ Image insertion is being reworked in the provided Snow and Bubble themes. The ol - Fix align button active state [#780](https://github.com/quilljs/quill/issues/780) - Fix format text on falsy value [#782](https://github.com/quilljs/quill/issues/782) - Use native cut [#785](https://github.com/quilljs/quill/issues/785) -- Fix initializing document where last line is formatted [#786](https://github.com/quilljs/quill/issues/786) +- Fix inializing document where last line is formatted [#786](https://github.com/quilljs/quill/issues/786) Thanks to [benbro](https://github.com/benbro), [bram2w](https://github.com/bram2w), [clemmy](https://github.com/clemmy), [DadaMonad](https://github.com/DadaMonad), [ersommer](https://github.com/ersommer), [michaeljosephrosenthal](https://github.com/michaeljosephrosenthal), [mmorearty](https://github.com/mmorearty), [mshamaiev-intel471](https://github.com/mshamaiev-intel471), and [sachinrekhi](https://github.com/sachinrekhi) for their contributions to this release. -# 1.0.0-beta.7 - -Became 1.0.0-beta.8 with a fix. +[All changes](https://github.com/quilljs/quill/releases/tag/v1.0.0-beta.8) -# 1.0.0-beta.6 +# v1.0.0-beta.6 (2016-06-21) Weekly beta preview release. @@ -668,7 +735,9 @@ Weekly beta preview release. Thank you [abejdaniels](https://github.com/abejdaniels), [benbro](https://github.com/benbro), [davelozier](https://github.com/davelozier), [fernandogmar](https://github.com/fernandogmar), [KameSama](https://github.com/KameSama), and [WriterStat](https://github.com/WriterStat) for contributions to this release. -# 1.0.0-beta.5 +[All changes](https://github.com/quilljs/quill/releases/tag/v1.0.0-beta.6) + +# v1.0.0-beta.5 (2016-06-14) Weekly beta preview release. @@ -686,7 +755,9 @@ Weekly beta preview release. Thanks to [benbro](https://github.com/benbro), [lukechapman](https://github.com/lukechapman), [sachinrekhi](https://github.com/sachinrekhi), and [saw](https://github.com/saw) for their contributions to this release. -# 1.0.0-beta.4 +[All changes](https://github.com/quilljs/quill/releases/tag/v1.0.0-beta.5) + +# v1.0.0-beta.4 (2016-06-03) Weekly beta preview release. @@ -713,6 +784,10 @@ Weekly beta preview release. Thank you [@benbro](https://github.com/benbro), [@brynjagr](https://github.com/brynjagr), and [@sachinrekhi](https://github.com/sachinrekhi) for contributions to this release. +[All changes](https://github.com/quilljs/quill/releases/tag/v1.0.0-beta.4) + +# v1.0.0-beta.3 (2016-05-25) + # 1.0.0-beta.3 Weekly beta preview release. @@ -742,7 +817,9 @@ Weekly beta preview release. Thanks to [@benbro](https://github.com/benbro), [@Cinamonas](https://github.com/Cinamonas), [@emanuelbsilva](https://github.com/emanuelbsilva), [@jasonmng](https://github.com/jasonmng), [@jonnolen](https://github.com/jonnolen), [@LucVanPelt](https://github.com/LucVanPelt), [@sachinrekhi](https://github.com/sachinrekhi), [@sagacitysite](https://github.com/sagacitysite), [@WriterStat](https://github.com/WriterStat) for their contributions to this release. -# 1.0.0-beta.2 +[All changes](https://github.com/quilljs/quill/releases/tag/v1.0.0-beta.3) + +# v1.0.0-beta.2 (2016-05-15) Weekly beta preview release. Major emphasis on keyboard API and customization. @@ -764,7 +841,7 @@ Weekly beta preview release. Major emphasis on keyboard API and customization. - Allow native handling of backspace [#473](https://github.com/quilljs/quill/issues/473) [#548](https://github.com/quilljs/quill/issues/548) [#565](https://github.com/quilljs/quill/issues/565) - removeFormat() removes last line block formats [#649](https://github.com/quilljs/quill/issues/649) -- Fix text direction icon direction [#654](https://github.com/quilljs/quill/issues/654) +- Fix text direction icon directon [#654](https://github.com/quilljs/quill/issues/654) - Fix text insertion into root scroll [#655](https://github.com/quilljs/quill/issues/655) - Fix focusing on placeholder text in FF [#656](https://github.com/quilljs/quill/issues/656) - Hide placeholder on formatted line [#657](https://github.com/quilljs/quill/issues/657) @@ -772,7 +849,9 @@ Weekly beta preview release. Major emphasis on keyboard API and customization. Thanks to [@anovi](https://github.com/anovi), [@benbro](https://github.com/benbro), [@jbrowning](https://github.com/jbrowning), [@kei-ito](https://github.com/kei-ito), [@quentez](https://github.com/quentez), [@u9520107](https://github.com/u9520107) for their contributions to this release! -# 1.0.0-beta.1 +[All changes](https://github.com/quilljs/quill/releases/tag/v1.0.0-beta.2) + +# v1.0.0-beta.1 (2016-05-10) Weekly beta preview release. @@ -799,46 +878,10 @@ Weekly beta preview release. Thanks to [@benbro](https://github.com/benbro) for the bug reports for this release! -# 1.0.0-beta.0 - -Please see the [Upgrading to 1.0](http://beta.quilljs.com/guides/upgrading-to-1-0/) guide. - -# 0.20.1 - -Patch release for everything prior to Parchment's integration into Quill. - -### Features - -- API for hotkey removal [#110](https://github.com/quilljs/quill/issues/110), [#453](https://github.com/quilljs/quill/pull/453) - -### Bug Fixes - -- Editor jumps to top when clicking formatting buttons [#288](https://github.com/quilljs/quill/issues/288) -- Editor does not preserve bold text when pasted from itself [#306](https://github.com/quilljs/quill/issues/306) -- Focus issues when scrolled down in IE10+ [#415](https://github.com/quilljs/quill/issues/415) -- Error if keyboard shortcut used for unavailable format [#432](https://github.com/quilljs/quill/issues/432) -- Scrolls to cursor if not visible after enter/deletion/paste [#433](https://github.com/quilljs/quill/issues/433) +[All changes](https://github.com/quilljs/quill/releases/tag/v1.0.0-beta.1) -Thanks to [@devtimi](https://github.com/devtimi), [@emannes](https://github.com/emannes), [@ivan-i](https://github.com/ivan-i), [@magus](https://github.com/magus), [@Nick-The-Uncharted](https://github.com/Nick-The-Uncharted), [@rlivsey](https://github.com/rlivsey), [@thomsbg](https://github.com/thomsbg), [@wallylawless](https://github.com/wallylawless) for their bug reports and pull requests! +# v1.0.0-beta.0 (2016-05-04) -# 0.20.0 - -### Breaking Changes - -- `getBounds` now returns `null` instead of throwing an error [#412](https://github.com/quilljs/quill/pull/412) - -### Features - -- Allow `Document` module to be `Quill.require`'d [#400](https://github.com/quilljs/quill/pull/400) -- Paste manager can optionally accept a custom conversion function [#401](https://github.com/quilljs/quill/pull/401) -- Undo manager can optionally only affect user initiated changes [#413](https://github.com/quilljs/quill/pull/413) - -### Bug Fixes - -- Retain formats between lines [#403](https://github.com/quilljs/quill/pull/403) -- Fix bug that allows nested format tags [#406](https://github.com/quilljs/quill/pull/406) -- Flatten nested list instead of truncating on paste [#421](https://github.com/quilljs/quill/issues/421) -- Fix handling Chrome's usage of font-weight instead of tags [#423](https://github.com/quilljs/quill/issues/423) -- Fix bug that allows nested parent tags [#426](https://github.com/quilljs/quill/pull/426) +Please see the [Upgrading to 1.0](http://beta.quilljs.com/guides/upgrading-to-1-0/) guide. -Thank you [@thomsbg](https://github.com/thomsbg), [@yyjhao](https://github.com/yyjhao), [@willrowe](https://github.com/willrowe), [@hryanjones](https://github.com/hryanjones), [@nickretallack](https://github.com/nickretallack) for your contributions to this release! +[All changes](https://github.com/quilljs/quill/releases/tag/v1.0.0-beta.0) diff --git a/package-lock.json b/package-lock.json index 04d72faef2..b69b5098d8 100644 --- a/package-lock.json +++ b/package-lock.json @@ -12,6 +12,7 @@ "packages/*" ], "devDependencies": { + "execa": "^9.0.2", "npm-run-all": "^4.1.5" }, "engines": { @@ -5702,12 +5703,30 @@ "resolved": "https://registry.npmjs.org/@rushstack/eslint-patch/-/eslint-patch-1.7.2.tgz", "integrity": "sha512-RbhOOTCNoCrbfkRyoXODZp75MlpiHMgbE5MEBZAnnnLyQNgrigEj4p0lzsMDyc1zVsJDLrivB58tgg3emX0eEA==" }, + "node_modules/@sec-ant/readable-stream": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/@sec-ant/readable-stream/-/readable-stream-0.4.1.tgz", + "integrity": "sha512-831qok9r2t8AlxLko40y2ebgSDhenenCatLVeW/uBtnHPyhHOvG0C7TvfgecV+wHzIm5KUICgzmVpWS+IMEAeg==", + "dev": true + }, "node_modules/@sinclair/typebox": { "version": "0.27.8", "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.27.8.tgz", "integrity": "sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==", "dev": true }, + "node_modules/@sindresorhus/merge-streams": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@sindresorhus/merge-streams/-/merge-streams-4.0.0.tgz", + "integrity": "sha512-tlqY9xq5ukxTUZBmoOp+m61cqwQD5pHJtFY3Mn8CA8ps6yghLH/Hw8UPdqg4OLmFW3IFlcXnQNmo/dh8HzXYIQ==", + "dev": true, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/@stitches/core": { "version": "1.2.8", "resolved": "https://registry.npmjs.org/@stitches/core/-/core-1.2.8.tgz", @@ -10245,23 +10264,26 @@ } }, "node_modules/execa": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/execa/-/execa-8.0.1.tgz", - "integrity": "sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg==", + "version": "9.0.2", + "resolved": "https://registry.npmjs.org/execa/-/execa-9.0.2.tgz", + "integrity": "sha512-oO281GF7ksH/Ogv1xyDf1prvFta/6/XkGKxRUvA3IB2MU1rCJGlFs86HRZhdooow1ISkR0Np0rOxUCIJVw36Rg==", "dev": true, "dependencies": { + "@sindresorhus/merge-streams": "^4.0.0", "cross-spawn": "^7.0.3", - "get-stream": "^8.0.1", - "human-signals": "^5.0.0", - "is-stream": "^3.0.0", - "merge-stream": "^2.0.0", - "npm-run-path": "^5.1.0", - "onetime": "^6.0.0", + "figures": "^6.1.0", + "get-stream": "^9.0.0", + "human-signals": "^7.0.0", + "is-plain-obj": "^4.1.0", + "is-stream": "^4.0.1", + "npm-run-path": "^5.2.0", + "pretty-ms": "^9.0.0", "signal-exit": "^4.1.0", - "strip-final-newline": "^3.0.0" + "strip-final-newline": "^4.0.0", + "yoctocolors": "^2.0.0" }, "engines": { - "node": ">=16.17" + "node": ">=18" }, "funding": { "url": "https://github.com/sindresorhus/execa?sponsor=1" @@ -10460,6 +10482,21 @@ "node": ">=0.8.0" } }, + "node_modules/figures": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-6.1.0.tgz", + "integrity": "sha512-d+l3qxjSesT4V7v2fh+QnmFnUWv9lSpjarhShNTgBOfA0ttejbQUAlHLitbjkoRiDulW0OPoQPYIGhIC8ohejg==", + "dev": true, + "dependencies": { + "is-unicode-supported": "^2.0.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/file-entry-cache": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", @@ -10816,12 +10853,16 @@ } }, "node_modules/get-stream": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-8.0.1.tgz", - "integrity": "sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA==", + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-9.0.1.tgz", + "integrity": "sha512-kVCxPF3vQM/N0B1PmoqVUqgHP+EeVjmZSQn+1oCRPxd2P21P2F19lIgbR3HBosbB1PUhOAoctJnfEn2GbN2eZA==", "dev": true, + "dependencies": { + "@sec-ant/readable-stream": "^0.4.1", + "is-stream": "^4.0.1" + }, "engines": { - "node": ">=16" + "node": ">=18" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" @@ -12144,12 +12185,12 @@ } }, "node_modules/human-signals": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-5.0.0.tgz", - "integrity": "sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ==", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-7.0.0.tgz", + "integrity": "sha512-74kytxOUSvNbjrT9KisAbaTZ/eJwD/LrbM/kh5j0IhPuJzwuA19dWvniFGwBzN9rVjg+O/e+F310PjObDXS+9Q==", "dev": true, "engines": { - "node": ">=16.17.0" + "node": ">=18.18.0" } }, "node_modules/iconv-lite": { @@ -12745,12 +12786,12 @@ } }, "node_modules/is-stream": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-3.0.0.tgz", - "integrity": "sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==", + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-4.0.1.tgz", + "integrity": "sha512-Dnz92NInDqYckGEUJv689RbRiTSEHCQ7wOVeALbkOz999YpqT46yMRIGtSNl2iCL1waAZSx40+h59NV/EwzV/A==", "dev": true, "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + "node": ">=18" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" @@ -12798,6 +12839,18 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/is-unicode-supported": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-2.0.0.tgz", + "integrity": "sha512-FRdAyx5lusK1iHG0TWpVtk9+1i+GjrzRffhDg4ovQ7mcidMQ6mj+MhKPmvh7Xwyv5gIS06ns49CA7Sqg7lC22Q==", + "dev": true, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/is-weakmap": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/is-weakmap/-/is-weakmap-2.0.2.tgz", @@ -14829,6 +14882,18 @@ "node": ">=4" } }, + "node_modules/parse-ms": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/parse-ms/-/parse-ms-4.0.0.tgz", + "integrity": "sha512-TXfryirbmq34y8QBwgqCVLi+8oA3oWx2eAnSn62ITyEhEYaWRlVZ2DvMM9eZbMs/RfxPu/PK/aBLyGj4IrqMHw==", + "dev": true, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/parse5": { "version": "7.1.2", "resolved": "https://registry.npmjs.org/parse5/-/parse5-7.1.2.tgz", @@ -15336,6 +15401,21 @@ "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==", "dev": true }, + "node_modules/pretty-ms": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/pretty-ms/-/pretty-ms-9.0.0.tgz", + "integrity": "sha512-E9e9HJ9R9NasGOgPaPE8VMeiPKAyWR5jcFpNnwIejslIhWqdqOrb2wShBsncMPUb+BcCd2OPYfh7p2W6oemTng==", + "dev": true, + "dependencies": { + "parse-ms": "^4.0.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/prism-react-renderer": { "version": "2.3.1", "resolved": "https://registry.npmjs.org/prism-react-renderer/-/prism-react-renderer-2.3.1.tgz", @@ -16910,12 +16990,12 @@ } }, "node_modules/strip-final-newline": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-3.0.0.tgz", - "integrity": "sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-4.0.0.tgz", + "integrity": "sha512-aulFJcD6YK8V1G7iRB5tigAP4TsHBZZrOV8pjV++zdUwmeV8uzbY7yn6h9MswN62adStNZFuCIx4haBnRuMDaw==", "dev": true, "engines": { - "node": ">=12" + "node": ">=18" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" @@ -18280,6 +18360,133 @@ } } }, + "node_modules/vitest/node_modules/cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "dev": true, + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/vitest/node_modules/execa": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-8.0.1.tgz", + "integrity": "sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg==", + "dev": true, + "dependencies": { + "cross-spawn": "^7.0.3", + "get-stream": "^8.0.1", + "human-signals": "^5.0.0", + "is-stream": "^3.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^5.1.0", + "onetime": "^6.0.0", + "signal-exit": "^4.1.0", + "strip-final-newline": "^3.0.0" + }, + "engines": { + "node": ">=16.17" + }, + "funding": { + "url": "https://github.com/sindresorhus/execa?sponsor=1" + } + }, + "node_modules/vitest/node_modules/get-stream": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-8.0.1.tgz", + "integrity": "sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA==", + "dev": true, + "engines": { + "node": ">=16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/vitest/node_modules/human-signals": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-5.0.0.tgz", + "integrity": "sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ==", + "dev": true, + "engines": { + "node": ">=16.17.0" + } + }, + "node_modules/vitest/node_modules/is-stream": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-3.0.0.tgz", + "integrity": "sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==", + "dev": true, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/vitest/node_modules/path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/vitest/node_modules/shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/vitest/node_modules/shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/vitest/node_modules/strip-final-newline": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-3.0.0.tgz", + "integrity": "sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/vitest/node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, "node_modules/w3c-keyname": { "version": "2.2.8", "resolved": "https://registry.npmjs.org/w3c-keyname/-/w3c-keyname-2.2.8.tgz", @@ -19001,6 +19208,18 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/yoctocolors": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/yoctocolors/-/yoctocolors-2.0.0.tgz", + "integrity": "sha512-esbDnt0Z1zI1KgvOZU90hJbL6BkoUbrP9yy7ArNZ6TmxBxydMJTYMf9FZjmwwcA8ZgEQzriQ3hwZ0NYXhlFo8Q==", + "dev": true, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/zwitch": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/zwitch/-/zwitch-2.0.4.tgz", diff --git a/package.json b/package.json index 0f60ef8229..695b3f1a57 100644 --- a/package.json +++ b/package.json @@ -45,6 +45,7 @@ }, "engineStrict": true, "devDependencies": { + "execa": "^9.0.2", "npm-run-all": "^4.1.5" } } diff --git a/scripts/changelog.mjs b/scripts/changelog.mjs new file mode 100644 index 0000000000..d2df907c49 --- /dev/null +++ b/scripts/changelog.mjs @@ -0,0 +1,68 @@ +/** + * Fetch the latest release from GitHub and prepend it to the CHANGELOG.md + * Nothing will happen if the latest release is already in the CHANGELOG.md + */ +import { execa } from "execa"; +import { readFile, writeFile } from "node:fs/promises"; +import { fileURLToPath } from "node:url"; +import { dirname, join } from "node:path"; + +const changelogFilename = "CHANGELOG.md"; + +const changeLogFilePath = join( + dirname(fileURLToPath(import.meta.url)), + "..", + changelogFilename +); + +const currentChangeLog = await readFile(changeLogFilePath, "utf-8"); + +const { stdout } = await execa("gh", [ + "release", + "list", + "--exclude-drafts", + "--json=tagName,publishedAt,name,isLatest", +]); + +const release = JSON.parse(stdout).find((release) => release.isLatest); + +if (currentChangeLog.includes(`# ${release.tagName}`)) { + process.exit(0); +} + +const filteredReleaseNote = (note) => { + const ignoreSections = [ + "## new contributors", + "## all changes", + "## other changes", + ]; + ignoreSections.forEach((section) => { + const index = note.toLowerCase().indexOf(section); + if (index > -1) { + note = note.slice(0, index).replace(/#\s*$/, ""); + } + }); + return note.trim(); +}; + +const formatDate = (date) => { + const str = date.toISOString(); + return str.substring(0, str.indexOf("T")); +}; + +const { body } = JSON.parse( + (await execa("gh", ["release", "view", release.tagName, "--json=body"])) + .stdout +); + +const note = `# ${release.tagName} (${formatDate(new Date(release.publishedAt))})\n\n${filteredReleaseNote(body)}\n\n[All changes](https://github.com/quilljs/quill/releases/tag/${release.tagName})\n`; + +await writeFile(changeLogFilePath, `${note}\n${currentChangeLog}`); + +await execa("git", ["add", changelogFilename]); +await execa("git", [ + "commit", + "-m", + `Update ${changelogFilename}: ${release.tagName}`, +]); +await execa("git", ["push", "origin", "main"]); diff --git a/scripts/release.js b/scripts/release.js index e1a79dc2c6..1f62be9328 100755 --- a/scripts/release.js +++ b/scripts/release.js @@ -86,38 +86,9 @@ console.log( `Releasing with version: ${currentVersion} -> ${version} and dist-tag: ${distTag}` ); -/* - * Update version in CHANGELOG.md - */ -console.log("Updating CHANGELOG.md and bumping versions"); -const changelog = fs.readFileSync("CHANGELOG.md", "utf8"); -const UNRELEASED_PLACEHOLDER = "# [Unreleased]"; - -const index = changelog.indexOf(UNRELEASED_PLACEHOLDER); -if (index === -1) { - exitWithError(`Could not find "${UNRELEASED_PLACEHOLDER}" in CHANGELOG.md`); -} -let nextVersionIndex = changelog.indexOf("\n# ", index); -if (nextVersionIndex === -1) { - nextVersionIndex = changelog.length - 1; -} - -const releaseNots = changelog - .substring(index + UNRELEASED_PLACEHOLDER.length, nextVersionIndex) - .trim(); - -fs.writeFileSync( - "CHANGELOG.md", - changelog.replace( - UNRELEASED_PLACEHOLDER, - `${UNRELEASED_PLACEHOLDER}\n\n# ${version}` - ) -); - /* * Bump npm versions */ -exec("git add CHANGELOG.md"); exec(`npm version ${version} --workspaces --force`); exec("git add **/package.json"); exec(`npm version ${version} --include-workspace-root --force`); @@ -164,19 +135,12 @@ exec(`npm publish --tag ${distTag}${dryRun ? " --dry-run" : ""}`, { if (distTag === "experimental") { console.log("Skipping GitHub release for experimental version"); } else { - const filename = `release-note-${version}-${(Math.random() * 1000) | 0}.txt`; - fs.writeFileSync(filename, releaseNots); - try { - const prereleaseFlag = distTag === "latest" ? "--latest" : " --prerelease"; - const releaseCommand = `gh release create v${version} ${prereleaseFlag} -t "Version ${version}" --notes-file "${filename}"`; - if (dryRun) { - console.log(`Skipping: "${releaseCommand}" in dry-run mode`); - console.log(`Release note:\n${releaseNots}`); - } else { - exec(releaseCommand); - } - } finally { - fs.unlinkSync(filename); + const prereleaseFlag = distTag === "latest" ? "--latest" : " --prerelease"; + const releaseCommand = `gh release create v${version} ${prereleaseFlag} -t "Version ${version}" --generate-notes`; + if (dryRun) { + console.log(`Skipping: "${releaseCommand}" in dry-run mode`); + } else { + exec(releaseCommand); } } From 2391107bde5983b674492b1528c773fef6999658 Mon Sep 17 00:00:00 2001 From: Zihua Li Date: Mon, 13 May 2024 13:42:34 +0800 Subject: [PATCH 06/10] Fix event source when deleting a link with shortcuts (#4200) --- packages/quill/src/core/module.ts | 2 +- packages/quill/src/modules/toolbar.ts | 7 +++++-- packages/quill/src/themes/bubble.ts | 7 ++++--- packages/quill/src/themes/snow.ts | 7 ++++--- 4 files changed, 14 insertions(+), 9 deletions(-) diff --git a/packages/quill/src/core/module.ts b/packages/quill/src/core/module.ts index fca5b385df..feeac58ad7 100644 --- a/packages/quill/src/core/module.ts +++ b/packages/quill/src/core/module.ts @@ -4,7 +4,7 @@ abstract class Module { static DEFAULTS = {}; constructor( - protected quill: Quill, + public quill: Quill, protected options: Partial = {}, ) {} } diff --git a/packages/quill/src/modules/toolbar.ts b/packages/quill/src/modules/toolbar.ts index 411438e7c7..a178d25936 100644 --- a/packages/quill/src/modules/toolbar.ts +++ b/packages/quill/src/modules/toolbar.ts @@ -7,7 +7,7 @@ import type { Range } from '../core/selection.js'; const debug = logger('quill:toolbar'); -type Handler = (value: any) => void; +type Handler = (this: Toolbar, value: any) => void; export type ToolbarConfig = Array< string[] | Array> @@ -262,7 +262,7 @@ Toolbar.DEFAULTS = { } }); } else { - this.quill.removeFormat(range, Quill.sources.USER); + this.quill.removeFormat(range.index, range.length, Quill.sources.USER); } }, direction(value) { @@ -276,7 +276,9 @@ Toolbar.DEFAULTS = { }, indent(value) { const range = this.quill.getSelection(); + // @ts-expect-error const formats = this.quill.getFormat(range); + // @ts-expect-error const indent = parseInt(formats.indent || 0, 10); if (value === '+1' || value === '-1') { let modifier = value === '+1' ? 1 : -1; @@ -292,6 +294,7 @@ Toolbar.DEFAULTS = { }, list(value) { const range = this.quill.getSelection(); + // @ts-expect-error const formats = this.quill.getFormat(range); if (value === 'check') { if (formats.list === 'checked' || formats.list === 'unchecked') { diff --git a/packages/quill/src/themes/bubble.ts b/packages/quill/src/themes/bubble.ts index 63bf9ff8e3..5bb8519141 100644 --- a/packages/quill/src/themes/bubble.ts +++ b/packages/quill/src/themes/bubble.ts @@ -4,7 +4,7 @@ import BaseTheme, { BaseTooltip } from './base.js'; import { Range } from '../core/selection.js'; import type { Bounds } from '../core/selection.js'; import icons from '../ui/icons.js'; -import type Quill from '../core.js'; +import Quill from '../core/quill.js'; import type { ThemeOptions } from '../core/theme.js'; import type Toolbar from '../modules/toolbar.js'; import type { ToolbarConfig } from '../modules/toolbar.js'; @@ -135,14 +135,15 @@ BubbleTheme.DEFAULTS = merge({}, BaseTheme.DEFAULTS, { handlers: { link(value: string) { if (!value) { - this.quill.format('link', false); + this.quill.format('link', false, Quill.sources.USER); } else { + // @ts-expect-error this.quill.theme.tooltip.edit(); } }, }, }, }, -}); +} satisfies ThemeOptions); export { BubbleTooltip, BubbleTheme as default }; diff --git a/packages/quill/src/themes/snow.ts b/packages/quill/src/themes/snow.ts index e99daebd0a..153a834c26 100644 --- a/packages/quill/src/themes/snow.ts +++ b/packages/quill/src/themes/snow.ts @@ -4,7 +4,7 @@ import BaseTheme, { BaseTooltip } from './base.js'; import LinkBlot from '../formats/link.js'; import { Range } from '../core/selection.js'; import icons from '../ui/icons.js'; -import type Quill from '../core.js'; +import Quill from '../core/quill.js'; import type { Context } from '../modules/keyboard.js'; import type Toolbar from '../modules/toolbar.js'; import type { ToolbarConfig } from '../modules/toolbar.js'; @@ -136,15 +136,16 @@ SnowTheme.DEFAULTS = merge({}, BaseTheme.DEFAULTS, { ) { preview = `mailto:${preview}`; } + // @ts-expect-error const { tooltip } = this.quill.theme; tooltip.edit('link', preview); } else { - this.quill.format('link', false); + this.quill.format('link', false, Quill.sources.USER); } }, }, }, }, -}); +} satisfies ThemeOptions); export default SnowTheme; From dd622918983754013097e530a0f317660d98a855 Mon Sep 17 00:00:00 2001 From: Zihua Li Date: Mon, 13 May 2024 14:03:19 +0800 Subject: [PATCH 07/10] Avoid side effects for Enter/Backspace when composing in Safari (#4201) Co-authored-by: odex --- packages/quill/src/modules/keyboard.ts | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/packages/quill/src/modules/keyboard.ts b/packages/quill/src/modules/keyboard.ts index 3301046410..7941b370f5 100644 --- a/packages/quill/src/modules/keyboard.ts +++ b/packages/quill/src/modules/keyboard.ts @@ -173,6 +173,13 @@ class Keyboard extends Module { listen() { this.quill.root.addEventListener('keydown', (evt) => { if (evt.defaultPrevented || evt.isComposing) return; + + // evt.isComposing is false when pressing Enter/Backspace when composing in Safari + // https://bugs.webkit.org/show_bug.cgi?id=165004 + const isComposing = + evt.keyCode === 229 && (evt.key === 'Enter' || evt.key === 'Backspace'); + if (isComposing) return; + const bindings = (this.bindings[evt.key] || []).concat( this.bindings[evt.which] || [], ); From 804068026aeeb46d6e7f321d220947e99e016df1 Mon Sep 17 00:00:00 2001 From: Zihua Li Date: Mon, 13 May 2024 14:20:08 +0800 Subject: [PATCH 08/10] Ignore pasting images when image format is disallowed (#4202) --- packages/quill/src/modules/uploader.ts | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/packages/quill/src/modules/uploader.ts b/packages/quill/src/modules/uploader.ts index 940c6ecb40..c53058c51b 100644 --- a/packages/quill/src/modules/uploader.ts +++ b/packages/quill/src/modules/uploader.ts @@ -55,12 +55,14 @@ class Uploader extends Module { Uploader.DEFAULTS = { mimetypes: ['image/png', 'image/jpeg'], handler(range: Range, files: File[]) { - const promises = files.map((file) => { + if (!this.quill.scroll.query('image')) { + return; + } + const promises = files.map>((file) => { return new Promise((resolve) => { const reader = new FileReader(); - reader.onload = (e) => { - // @ts-expect-error Fix me later - resolve(e.target.result); + reader.onload = () => { + resolve(reader.result as string); }; reader.readAsDataURL(file); }); From e91f80a42d0523cd255140d97790e656c70c6153 Mon Sep 17 00:00:00 2001 From: Zihua Li Date: Mon, 13 May 2024 14:43:02 +0800 Subject: [PATCH 09/10] Upgrade Node.js to 20 for CI (#4203) --- .github/workflows/_test.yml | 4 ++-- .github/workflows/changelog.yml | 4 ++-- .github/workflows/release.yml | 4 ++-- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/.github/workflows/_test.yml b/.github/workflows/_test.yml index 1d09470f21..3794b276e1 100644 --- a/.github/workflows/_test.yml +++ b/.github/workflows/_test.yml @@ -25,10 +25,10 @@ jobs: steps: - name: Git checkout - uses: actions/checkout@v3 + uses: actions/checkout@v4 - name: Use Node.js - uses: actions/setup-node@v3 + uses: actions/setup-node@v4 with: node-version: 20 diff --git a/.github/workflows/changelog.yml b/.github/workflows/changelog.yml index 3c6228b2f4..301da69b2b 100644 --- a/.github/workflows/changelog.yml +++ b/.github/workflows/changelog.yml @@ -9,10 +9,10 @@ jobs: runs-on: ubuntu-latest steps: - name: Git checkout - uses: actions/checkout@v3 + uses: actions/checkout@v4 - name: Use Node.js - uses: actions/setup-node@v3 + uses: actions/setup-node@v4 with: node-version: 20 diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index f9c5fae4f9..e3379fc50f 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -23,10 +23,10 @@ jobs: steps: - name: Git checkout - uses: actions/checkout@v3 + uses: actions/checkout@v4 - name: Use Node.js - uses: actions/setup-node@v3 + uses: actions/setup-node@v4 with: node-version: 20 From cc898efe9f5662baeadf18dfd2ccca56a3284a7e Mon Sep 17 00:00:00 2001 From: Zihua Li <635902+luin@users.noreply.github.com> Date: Mon, 13 May 2024 06:46:06 +0000 Subject: [PATCH 10/10] 2.0.2 --- package-lock.json | 8 ++++---- package.json | 2 +- packages/quill/package.json | 2 +- packages/website/package.json | 2 +- 4 files changed, 7 insertions(+), 7 deletions(-) diff --git a/package-lock.json b/package-lock.json index b69b5098d8..f5ede60f74 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "quill-monorepo", - "version": "2.0.1", + "version": "2.0.2", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "quill-monorepo", - "version": "2.0.1", + "version": "2.0.2", "license": "BSD-3-Clause", "workspaces": [ "packages/*" @@ -19230,7 +19230,7 @@ } }, "packages/quill": { - "version": "2.0.1", + "version": "2.0.2", "license": "BSD-3-Clause", "dependencies": { "eventemitter3": "^5.0.1", @@ -19289,7 +19289,7 @@ } }, "packages/website": { - "version": "2.0.1", + "version": "2.0.2", "license": "BSD-3-Clause", "dependencies": { "@codesandbox/sandpack-react": "^2.11.3", diff --git a/package.json b/package.json index 695b3f1a57..67166ea9e2 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "quill-monorepo", - "version": "2.0.1", + "version": "2.0.2", "description": "Quill development environment", "private": true, "author": "Jason Chen ", diff --git a/packages/quill/package.json b/packages/quill/package.json index 7075a86749..59ca839d31 100644 --- a/packages/quill/package.json +++ b/packages/quill/package.json @@ -1,6 +1,6 @@ { "name": "quill", - "version": "2.0.1", + "version": "2.0.2", "description": "Your powerful, rich text editor", "author": "Jason Chen ", "homepage": "https://quilljs.com", diff --git a/packages/website/package.json b/packages/website/package.json index d281438f59..c089961461 100644 --- a/packages/website/package.json +++ b/packages/website/package.json @@ -1,6 +1,6 @@ { "name": "website", - "version": "2.0.1", + "version": "2.0.2", "description": "Quill official website", "private": true, "homepage": "https://quilljs.com",