UNPKG

@ckeditor/ckeditor5-block-quote

Version:

Block quote feature for CKEditor 5.

1 lines • 50.1 kB
{"version":3,"sources":["index.js","../src/blockquotecommand.ts","../src/blockquoteediting.ts","../src/blockquoteui.ts","../src/blockquote.ts"],"names":[],"mappings":"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","file":"index.js.map","sourcesContent":["import { Command, Plugin } from \"@ckeditor/ckeditor5-core\";\nimport { Enter } from \"@ckeditor/ckeditor5-enter\";\nimport { Delete } from \"@ckeditor/ckeditor5-typing\";\nimport { first } from \"@ckeditor/ckeditor5-utils\";\nimport { IconQuote } from \"@ckeditor/ckeditor5-icons\";\nimport { ButtonView, MenuBarMenuListItemButtonView } from \"@ckeditor/ckeditor5-ui\";\n\n/**\n* @license Copyright (c) 2003-2026, CKSource Holding sp. z o.o. All rights reserved.\n* For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n*/\n/**\n* @module block-quote/blockquotecommand\n*/\n/**\n* The block quote command plugin.\n*\n* @extends module:core/command~Command\n*/\nvar BlockQuoteCommand = class extends Command {\n\t/**\n\t* @inheritDoc\n\t*/\n\trefresh() {\n\t\tthis.value = this._getValue();\n\t\tthis.isEnabled = this._checkEnabled();\n\t}\n\t/**\n\t* Executes the command. When the command {@link #value is on}, all top-most block quotes within\n\t* the selection will be removed. If it is off, all selected blocks will be wrapped with\n\t* a block quote.\n\t*\n\t* @fires execute\n\t* @param options Command options.\n\t* @param options.forceValue If set, it will force the command behavior. If `true`, the command will apply a block quote,\n\t* otherwise the command will remove the block quote. If not set, the command will act basing on its current value.\n\t*/\n\texecute(options = {}) {\n\t\tconst model = this.editor.model;\n\t\tconst schema = model.schema;\n\t\tconst selection = model.document.selection;\n\t\tconst blocks = Array.from(selection.getSelectedBlocks());\n\t\tconst value = options.forceValue === void 0 ? !this.value : options.forceValue;\n\t\tmodel.change((writer) => {\n\t\t\tif (!value) this._removeQuote(writer, blocks.filter(findQuote));\n\t\t\telse {\n\t\t\t\tconst blocksToQuote = blocks.filter((block) => {\n\t\t\t\t\treturn findQuote(block) || checkCanBeQuoted(schema, block);\n\t\t\t\t});\n\t\t\t\tthis._applyQuote(writer, blocksToQuote);\n\t\t\t}\n\t\t});\n\t}\n\t/**\n\t* Checks the command's {@link #value}.\n\t*/\n\t_getValue() {\n\t\tconst selection = this.editor.model.document.selection;\n\t\tconst firstBlock = first(selection.getSelectedBlocks());\n\t\treturn !!(firstBlock && findQuote(firstBlock));\n\t}\n\t/**\n\t* Checks whether the command can be enabled in the current context.\n\t*\n\t* @returns Whether the command should be enabled.\n\t*/\n\t_checkEnabled() {\n\t\tif (this.value) return true;\n\t\tconst selection = this.editor.model.document.selection;\n\t\tconst schema = this.editor.model.schema;\n\t\tconst firstBlock = first(selection.getSelectedBlocks());\n\t\tif (!firstBlock) return false;\n\t\treturn checkCanBeQuoted(schema, firstBlock);\n\t}\n\t/**\n\t* Removes the quote from given blocks.\n\t*\n\t* If blocks which are supposed to be \"unquoted\" are in the middle of a quote,\n\t* start it or end it, then the quote will be split (if needed) and the blocks\n\t* will be moved out of it, so other quoted blocks remained quoted.\n\t*/\n\t_removeQuote(writer, blocks) {\n\t\tgetRangesOfBlockGroups(writer, blocks).reverse().forEach((groupRange) => {\n\t\t\tif (groupRange.start.isAtStart && groupRange.end.isAtEnd) {\n\t\t\t\twriter.unwrap(groupRange.start.parent);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif (groupRange.start.isAtStart) {\n\t\t\t\tconst positionBefore = writer.createPositionBefore(groupRange.start.parent);\n\t\t\t\twriter.move(groupRange, positionBefore);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif (!groupRange.end.isAtEnd) writer.split(groupRange.end);\n\t\t\tconst positionAfter = writer.createPositionAfter(groupRange.end.parent);\n\t\t\twriter.move(groupRange, positionAfter);\n\t\t});\n\t}\n\t/**\n\t* Applies the quote to given blocks.\n\t*/\n\t_applyQuote(writer, blocks) {\n\t\tconst quotesToMerge = [];\n\t\tgetRangesOfBlockGroups(writer, blocks).reverse().forEach((groupRange) => {\n\t\t\tlet quote = findQuote(groupRange.start);\n\t\t\tif (!quote) {\n\t\t\t\tquote = writer.createElement(\"blockQuote\");\n\t\t\t\twriter.wrap(groupRange, quote);\n\t\t\t}\n\t\t\tquotesToMerge.push(quote);\n\t\t});\n\t\tquotesToMerge.reverse().reduce((currentQuote, nextQuote) => {\n\t\t\tif (currentQuote.nextSibling == nextQuote) {\n\t\t\t\twriter.merge(writer.createPositionAfter(currentQuote));\n\t\t\t\treturn currentQuote;\n\t\t\t}\n\t\t\treturn nextQuote;\n\t\t});\n\t}\n};\nfunction findQuote(elementOrPosition) {\n\treturn elementOrPosition.parent.name == \"blockQuote\" ? elementOrPosition.parent : null;\n}\n/**\n* Returns a minimal array of ranges containing groups of subsequent blocks.\n*\n* content:         abcdefgh\n* blocks:          [ a, b, d, f, g, h ]\n* output ranges:   [ab]c[d]e[fgh]\n*/\nfunction getRangesOfBlockGroups(writer, blocks) {\n\tlet startPosition;\n\tlet i = 0;\n\tconst ranges = [];\n\twhile (i < blocks.length) {\n\t\tconst block = blocks[i];\n\t\tconst nextBlock = blocks[i + 1];\n\t\tif (!startPosition) startPosition = writer.createPositionBefore(block);\n\t\tif (!nextBlock || block.nextSibling != nextBlock) {\n\t\t\tranges.push(writer.createRange(startPosition, writer.createPositionAfter(block)));\n\t\t\tstartPosition = null;\n\t\t}\n\t\ti++;\n\t}\n\treturn ranges;\n}\n/**\n* Checks whether <bQ> can wrap the block.\n*/\nfunction checkCanBeQuoted(schema, block) {\n\tconst parentContext = schema.createContext(block.parent);\n\tif (!schema.checkChild(parentContext, \"blockQuote\")) return false;\n\tif (!schema.checkChild(parentContext.push(\"blockQuote\"), block)) return false;\n\treturn true;\n}\n\n/**\n* @license Copyright (c) 2003-2026, CKSource Holding sp. z o.o. All rights reserved.\n* For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n*/\n/**\n* @module block-quote/blockquoteediting\n*/\n/**\n* The block quote editing.\n*\n* Introduces the `'blockQuote'` command and the `'blockQuote'` model element.\n*\n* @extends module:core/plugin~Plugin\n*/\nvar BlockQuoteEditing = class extends Plugin {\n\t/**\n\t* @inheritDoc\n\t*/\n\tstatic get pluginName() {\n\t\treturn \"BlockQuoteEditing\";\n\t}\n\t/**\n\t* @inheritDoc\n\t*/\n\tstatic get isOfficialPlugin() {\n\t\treturn true;\n\t}\n\t/**\n\t* @inheritDoc\n\t*/\n\tstatic get requires() {\n\t\treturn [Enter, Delete];\n\t}\n\t/**\n\t* @inheritDoc\n\t*/\n\tinit() {\n\t\tconst editor = this.editor;\n\t\tconst schema = editor.model.schema;\n\t\teditor.commands.add(\"blockQuote\", new BlockQuoteCommand(editor));\n\t\tschema.register(\"blockQuote\", { inheritAllFrom: \"$container\" });\n\t\teditor.conversion.elementToElement({\n\t\t\tmodel: \"blockQuote\",\n\t\t\tview: \"blockquote\"\n\t\t});\n\t\teditor.model.document.registerPostFixer((writer) => {\n\t\t\tconst changes = editor.model.document.differ.getChanges();\n\t\t\tfor (const entry of changes) if (entry.type == \"insert\") {\n\t\t\t\tconst element = entry.position.nodeAfter;\n\t\t\t\tif (!element) continue;\n\t\t\t\tif (element.is(\"element\", \"blockQuote\") && element.isEmpty) {\n\t\t\t\t\twriter.remove(element);\n\t\t\t\t\treturn true;\n\t\t\t\t} else if (element.is(\"element\", \"blockQuote\") && !schema.checkChild(entry.position, element)) {\n\t\t\t\t\twriter.unwrap(element);\n\t\t\t\t\treturn true;\n\t\t\t\t} else if (element.is(\"element\")) {\n\t\t\t\t\tconst range = writer.createRangeIn(element);\n\t\t\t\t\tfor (const child of range.getItems()) if (child.is(\"element\", \"blockQuote\") && !schema.checkChild(writer.createPositionBefore(child), child)) {\n\t\t\t\t\t\twriter.unwrap(child);\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else if (entry.type == \"remove\") {\n\t\t\t\tconst parent = entry.position.parent;\n\t\t\t\tif (parent.is(\"element\", \"blockQuote\") && parent.isEmpty) {\n\t\t\t\t\twriter.remove(parent);\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn false;\n\t\t});\n\t\tconst viewDocument = this.editor.editing.view.document;\n\t\tconst selection = editor.model.document.selection;\n\t\tconst blockQuoteCommand = editor.commands.get(\"blockQuote\");\n\t\tthis.listenTo(viewDocument, \"enter\", (evt, data) => {\n\t\t\tif (!selection.isCollapsed || !blockQuoteCommand.value) return;\n\t\t\tif (selection.getLastPosition().parent.isEmpty) {\n\t\t\t\teditor.execute(\"blockQuote\");\n\t\t\t\teditor.editing.view.scrollToTheSelection();\n\t\t\t\tdata.preventDefault();\n\t\t\t\tevt.stop();\n\t\t\t}\n\t\t}, { context: \"blockquote\" });\n\t\tthis.listenTo(viewDocument, \"delete\", (evt, data) => {\n\t\t\tif (data.direction != \"backward\" || !selection.isCollapsed || !blockQuoteCommand.value) return;\n\t\t\tconst positionParent = selection.getLastPosition().parent;\n\t\t\tif (positionParent.isEmpty && !positionParent.previousSibling) {\n\t\t\t\teditor.execute(\"blockQuote\");\n\t\t\t\teditor.editing.view.scrollToTheSelection();\n\t\t\t\tdata.preventDefault();\n\t\t\t\tevt.stop();\n\t\t\t}\n\t\t}, { context: \"blockquote\" });\n\t}\n};\n\n/**\n* @license Copyright (c) 2003-2026, CKSource Holding sp. z o.o. All rights reserved.\n* For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n*/\n/**\n* @module block-quote/blockquoteui\n*/\n/**\n* The block quote UI plugin.\n*\n* It introduces the `'blockQuote'` button.\n*\n* @extends module:core/plugin~Plugin\n*/\nvar BlockQuoteUI = class extends Plugin {\n\t/**\n\t* @inheritDoc\n\t*/\n\tstatic get pluginName() {\n\t\treturn \"BlockQuoteUI\";\n\t}\n\t/**\n\t* @inheritDoc\n\t*/\n\tstatic get isOfficialPlugin() {\n\t\treturn true;\n\t}\n\t/**\n\t* @inheritDoc\n\t*/\n\tinit() {\n\t\tconst editor = this.editor;\n\t\teditor.ui.componentFactory.add(\"blockQuote\", () => {\n\t\t\tconst buttonView = this._createButton(ButtonView);\n\t\t\tbuttonView.set({ tooltip: true });\n\t\t\treturn buttonView;\n\t\t});\n\t\teditor.ui.componentFactory.add(\"menuBar:blockQuote\", () => {\n\t\t\tconst buttonView = this._createButton(MenuBarMenuListItemButtonView);\n\t\t\tbuttonView.set({ role: \"menuitemcheckbox\" });\n\t\t\treturn buttonView;\n\t\t});\n\t}\n\t/**\n\t* Creates a button for block quote command to use either in toolbar or in menu bar.\n\t*/\n\t_createButton(ButtonClass) {\n\t\tconst editor = this.editor;\n\t\tconst locale = editor.locale;\n\t\tconst command = editor.commands.get(\"blockQuote\");\n\t\tconst view = new ButtonClass(editor.locale);\n\t\tconst t = locale.t;\n\t\tview.set({\n\t\t\tlabel: t(\"Block quote\"),\n\t\t\ticon: IconQuote,\n\t\t\tisToggleable: true\n\t\t});\n\t\tview.bind(\"isEnabled\").to(command, \"isEnabled\");\n\t\tview.bind(\"isOn\").to(command, \"value\");\n\t\tthis.listenTo(view, \"execute\", () => {\n\t\t\teditor.execute(\"blockQuote\");\n\t\t\teditor.editing.view.focus();\n\t\t});\n\t\treturn view;\n\t}\n};\n\n/**\n* @license Copyright (c) 2003-2026, CKSource Holding sp. z o.o. All rights reserved.\n* For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n*/\n/**\n* @module block-quote/blockquote\n*/\n/**\n* The block quote plugin.\n*\n* For more information about this feature check the {@glink api/block-quote package page}.\n*\n* This is a \"glue\" plugin which loads the {@link module:block-quote/blockquoteediting~BlockQuoteEditing block quote editing feature}\n* and {@link module:block-quote/blockquoteui~BlockQuoteUI block quote UI feature}.\n*\n* @extends module:core/plugin~Plugin\n*/\nvar BlockQuote = class extends Plugin {\n\t/**\n\t* @inheritDoc\n\t*/\n\tstatic get requires() {\n\t\treturn [BlockQuoteEditing, BlockQuoteUI];\n\t}\n\t/**\n\t* @inheritDoc\n\t*/\n\tstatic get pluginName() {\n\t\treturn \"BlockQuote\";\n\t}\n\t/**\n\t* @inheritDoc\n\t*/\n\tstatic get isOfficialPlugin() {\n\t\treturn true;\n\t}\n};\n\n/**\n* @license Copyright (c) 2003-2026, CKSource Holding sp. z o.o. All rights reserved.\n* For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n*/\n\nexport { BlockQuote, BlockQuoteCommand, BlockQuoteEditing, BlockQuoteUI };\n//# sourceMappingURL=index.js.map","/**\n * @license Copyright (c) 2003-2026, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\n\n/**\n * @module block-quote/blockquotecommand\n */\n\nimport { Command } from '@ckeditor/ckeditor5-core';\nimport { first } from '@ckeditor/ckeditor5-utils';\nimport type { ModelDocumentFragment, ModelElement, ModelPosition, ModelRange, ModelSchema, ModelWriter } from '@ckeditor/ckeditor5-engine';\n\n/**\n * The block quote command plugin.\n *\n * @extends module:core/command~Command\n */\nexport class BlockQuoteCommand extends Command {\n\t/**\n\t * Whether the selection starts in a block quote.\n\t *\n\t * @observable\n\t * @readonly\n\t */\n\tdeclare public value: boolean;\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic override refresh(): void {\n\t\tthis.value = this._getValue();\n\t\tthis.isEnabled = this._checkEnabled();\n\t}\n\n\t/**\n\t * Executes the command. When the command {@link #value is on}, all top-most block quotes within\n\t * the selection will be removed. If it is off, all selected blocks will be wrapped with\n\t * a block quote.\n\t *\n\t * @fires execute\n\t * @param options Command options.\n\t * @param options.forceValue If set, it will force the command behavior. If `true`, the command will apply a block quote,\n\t * otherwise the command will remove the block quote. If not set, the command will act basing on its current value.\n\t */\n\tpublic override execute( options: { forceValue?: boolean } = {} ): void {\n\t\tconst model = this.editor.model;\n\t\tconst schema = model.schema;\n\t\tconst selection = model.document.selection;\n\n\t\tconst blocks = Array.from( selection.getSelectedBlocks() );\n\n\t\tconst value = ( options.forceValue === undefined ) ? !this.value : options.forceValue;\n\n\t\tmodel.change( writer => {\n\t\t\tif ( !value ) {\n\t\t\t\tthis._removeQuote( writer, blocks.filter( findQuote ) );\n\t\t\t} else {\n\t\t\t\tconst blocksToQuote = blocks.filter( block => {\n\t\t\t\t\t// Already quoted blocks needs to be considered while quoting too\n\t\t\t\t\t// in order to reuse their <bQ> elements.\n\t\t\t\t\treturn findQuote( block ) || checkCanBeQuoted( schema, block );\n\t\t\t\t} );\n\n\t\t\t\tthis._applyQuote( writer, blocksToQuote );\n\t\t\t}\n\t\t} );\n\t}\n\n\t/**\n\t * Checks the command's {@link #value}.\n\t */\n\tprivate _getValue(): boolean {\n\t\tconst selection = this.editor.model.document.selection;\n\n\t\tconst firstBlock = first( selection.getSelectedBlocks() );\n\n\t\t// In the current implementation, the block quote must be an immediate parent of a block element.\n\t\treturn !!( firstBlock && findQuote( firstBlock ) );\n\t}\n\n\t/**\n\t * Checks whether the command can be enabled in the current context.\n\t *\n\t * @returns Whether the command should be enabled.\n\t */\n\tprivate _checkEnabled(): boolean {\n\t\tif ( this.value ) {\n\t\t\treturn true;\n\t\t}\n\n\t\tconst selection = this.editor.model.document.selection;\n\t\tconst schema = this.editor.model.schema;\n\n\t\tconst firstBlock = first( selection.getSelectedBlocks() );\n\n\t\tif ( !firstBlock ) {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn checkCanBeQuoted( schema, firstBlock );\n\t}\n\n\t/**\n\t * Removes the quote from given blocks.\n\t *\n\t * If blocks which are supposed to be \"unquoted\" are in the middle of a quote,\n\t * start it or end it, then the quote will be split (if needed) and the blocks\n\t * will be moved out of it, so other quoted blocks remained quoted.\n\t */\n\tprivate _removeQuote( writer: ModelWriter, blocks: Array<ModelElement> ): void {\n\t\t// Unquote all groups of block. Iterate in the reverse order to not break following ranges.\n\t\tgetRangesOfBlockGroups( writer, blocks ).reverse().forEach( groupRange => {\n\t\t\tif ( groupRange.start.isAtStart && groupRange.end.isAtEnd ) {\n\t\t\t\twriter.unwrap( groupRange.start.parent as ModelElement );\n\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// The group of blocks are at the beginning of an <bQ> so let's move them left (out of the <bQ>).\n\t\t\tif ( groupRange.start.isAtStart ) {\n\t\t\t\tconst positionBefore = writer.createPositionBefore( groupRange.start.parent as ModelElement );\n\n\t\t\t\twriter.move( groupRange, positionBefore );\n\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// The blocks are in the middle of an <bQ> so we need to split the <bQ> after the last block\n\t\t\t// so we move the items there.\n\t\t\tif ( !groupRange.end.isAtEnd ) {\n\t\t\t\twriter.split( groupRange.end );\n\t\t\t}\n\n\t\t\t// Now we are sure that groupRange.end.isAtEnd is true, so let's move the blocks right.\n\n\t\t\tconst positionAfter = writer.createPositionAfter( groupRange.end.parent as ModelElement );\n\n\t\t\twriter.move( groupRange, positionAfter );\n\t\t} );\n\t}\n\n\t/**\n\t * Applies the quote to given blocks.\n\t */\n\tprivate _applyQuote( writer: ModelWriter, blocks: Array<ModelElement> ): void {\n\t\tconst quotesToMerge: Array<ModelElement | ModelDocumentFragment> = [];\n\n\t\t// Quote all groups of block. Iterate in the reverse order to not break following ranges.\n\t\tgetRangesOfBlockGroups( writer, blocks ).reverse().forEach( groupRange => {\n\t\t\tlet quote = findQuote( groupRange.start );\n\n\t\t\tif ( !quote ) {\n\t\t\t\tquote = writer.createElement( 'blockQuote' );\n\n\t\t\t\twriter.wrap( groupRange, quote );\n\t\t\t}\n\n\t\t\tquotesToMerge.push( quote );\n\t\t} );\n\n\t\t// Merge subsequent <bQ> elements. Reverse the order again because this time we want to go through\n\t\t// the <bQ> elements in the source order (due to how merge works – it moves the right element's content\n\t\t// to the first element and removes the right one. Since we may need to merge a couple of subsequent `<bQ>` elements\n\t\t// we want to keep the reference to the first (furthest left) one.\n\t\tquotesToMerge.reverse().reduce( ( currentQuote, nextQuote ) => {\n\t\t\tif ( currentQuote.nextSibling == nextQuote ) {\n\t\t\t\twriter.merge( writer.createPositionAfter( currentQuote ) );\n\n\t\t\t\treturn currentQuote;\n\t\t\t}\n\n\t\t\treturn nextQuote;\n\t\t} );\n\t}\n}\n\nfunction findQuote( elementOrPosition: ModelElement | ModelPosition ): ModelElement | ModelDocumentFragment | null {\n\treturn elementOrPosition.parent!.name == 'blockQuote' ? elementOrPosition.parent : null;\n}\n\n/**\n * Returns a minimal array of ranges containing groups of subsequent blocks.\n *\n * content:         abcdefgh\n * blocks:          [ a, b, d, f, g, h ]\n * output ranges:   [ab]c[d]e[fgh]\n */\nfunction getRangesOfBlockGroups( writer: ModelWriter, blocks: Array<ModelElement> ): Array<ModelRange> {\n\tlet startPosition;\n\tlet i = 0;\n\tconst ranges = [];\n\n\twhile ( i < blocks.length ) {\n\t\tconst block = blocks[ i ];\n\t\tconst nextBlock = blocks[ i + 1 ];\n\n\t\tif ( !startPosition ) {\n\t\t\tstartPosition = writer.createPositionBefore( block );\n\t\t}\n\n\t\tif ( !nextBlock || block.nextSibling != nextBlock ) {\n\t\t\tranges.push( writer.createRange( startPosition, writer.createPositionAfter( block ) ) );\n\t\t\tstartPosition = null;\n\t\t}\n\n\t\ti++;\n\t}\n\n\treturn ranges;\n}\n\n/**\n * Checks whether <bQ> can wrap the block.\n */\nfunction checkCanBeQuoted( schema: ModelSchema, block: ModelElement ): boolean {\n\t// TMP will be replaced with schema.checkWrap().\n\tconst parentContext = schema.createContext( block.parent as ModelElement );\n\n\t// Is block-quote allowed in parent of block.\n\tif ( !schema.checkChild( parentContext, 'blockQuote' ) ) {\n\t\treturn false;\n\t}\n\n\t// Is block allowed inside block-quote.\n\tif ( !schema.checkChild( parentContext.push( 'blockQuote' ), block ) ) {\n\t\treturn false;\n\t}\n\n\treturn true;\n}\n","/**\n * @license Copyright (c) 2003-2026, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\n\n/**\n * @module block-quote/blockquoteediting\n */\n\nimport { Plugin, type PluginDependenciesOf } from '@ckeditor/ckeditor5-core';\nimport { Enter, type ViewDocumentEnterEvent } from '@ckeditor/ckeditor5-enter';\nimport { Delete, type ViewDocumentDeleteEvent } from '@ckeditor/ckeditor5-typing';\n\nimport { BlockQuoteCommand } from './blockquotecommand.js';\n\n/**\n * The block quote editing.\n *\n * Introduces the `'blockQuote'` command and the `'blockQuote'` model element.\n *\n * @extends module:core/plugin~Plugin\n */\nexport class BlockQuoteEditing extends Plugin {\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get pluginName() {\n\t\treturn 'BlockQuoteEditing' as const;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static override get isOfficialPlugin(): true {\n\t\treturn true;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get requires(): PluginDependenciesOf<[ Enter, Delete ]> {\n\t\treturn [ Enter, Delete ];\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic init(): void {\n\t\tconst editor = this.editor;\n\t\tconst schema = editor.model.schema;\n\n\t\teditor.commands.add( 'blockQuote', new BlockQuoteCommand( editor ) );\n\n\t\tschema.register( 'blockQuote', {\n\t\t\tinheritAllFrom: '$container'\n\t\t} );\n\n\t\teditor.conversion.elementToElement( { model: 'blockQuote', view: 'blockquote' } );\n\n\t\t// Postfixer which cleans incorrect model states connected with block quotes.\n\t\teditor.model.document.registerPostFixer( writer => {\n\t\t\tconst changes = editor.model.document.differ.getChanges();\n\n\t\t\tfor ( const entry of changes ) {\n\t\t\t\tif ( entry.type == 'insert' ) {\n\t\t\t\t\tconst element = entry.position.nodeAfter;\n\n\t\t\t\t\tif ( !element ) {\n\t\t\t\t\t\t// We are inside a text node.\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( element.is( 'element', 'blockQuote' ) && element.isEmpty ) {\n\t\t\t\t\t\t// Added an empty blockQuote - remove it.\n\t\t\t\t\t\twriter.remove( element );\n\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t} else if ( element.is( 'element', 'blockQuote' ) && !schema.checkChild( entry.position, element ) ) {\n\t\t\t\t\t\t// Added a blockQuote in incorrect place. Unwrap it so the content inside is not lost.\n\t\t\t\t\t\twriter.unwrap( element );\n\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t} else if ( element.is( 'element' ) ) {\n\t\t\t\t\t\t// Just added an element. Check that all children meet the scheme rules.\n\t\t\t\t\t\tconst range = writer.createRangeIn( element );\n\n\t\t\t\t\t\tfor ( const child of range.getItems() ) {\n\t\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t\tchild.is( 'element', 'blockQuote' ) &&\n\t\t\t\t\t\t\t\t!schema.checkChild( writer.createPositionBefore( child ), child )\n\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\twriter.unwrap( child );\n\n\t\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} else if ( entry.type == 'remove' ) {\n\t\t\t\t\tconst parent = entry.position.parent;\n\n\t\t\t\t\tif ( parent.is( 'element', 'blockQuote' ) && parent.isEmpty ) {\n\t\t\t\t\t\t// Something got removed and now blockQuote is empty. Remove the blockQuote as well.\n\t\t\t\t\t\twriter.remove( parent );\n\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn false;\n\t\t} );\n\n\t\tconst viewDocument = this.editor.editing.view.document;\n\t\tconst selection = editor.model.document.selection;\n\t\tconst blockQuoteCommand: BlockQuoteCommand = editor.commands.get( 'blockQuote' )!;\n\n\t\t// Overwrite default Enter key behavior.\n\t\t// If Enter key is pressed with selection collapsed in empty block inside a quote, break the quote.\n\t\tthis.listenTo<ViewDocumentEnterEvent>( viewDocument, 'enter', ( evt, data ) => {\n\t\t\tif ( !selection.isCollapsed || !blockQuoteCommand.value ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst positionParent = selection.getLastPosition()!.parent;\n\n\t\t\tif ( positionParent.isEmpty ) {\n\t\t\t\teditor.execute( 'blockQuote' );\n\t\t\t\teditor.editing.view.scrollToTheSelection();\n\n\t\t\t\tdata.preventDefault();\n\t\t\t\tevt.stop();\n\t\t\t}\n\t\t}, { context: 'blockquote' } );\n\n\t\t// Overwrite default Backspace key behavior.\n\t\t// If Backspace key is pressed with selection collapsed in first empty block inside a quote, break the quote.\n\t\tthis.listenTo<ViewDocumentDeleteEvent>( viewDocument, 'delete', ( evt, data ) => {\n\t\t\tif ( data.direction != 'backward' || !selection.isCollapsed || !blockQuoteCommand!.value ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst positionParent = selection.getLastPosition()!.parent;\n\n\t\t\tif ( positionParent.isEmpty && !positionParent.previousSibling ) {\n\t\t\t\teditor.execute( 'blockQuote' );\n\t\t\t\teditor.editing.view.scrollToTheSelection();\n\n\t\t\t\tdata.preventDefault();\n\t\t\t\tevt.stop();\n\t\t\t}\n\t\t}, { context: 'blockquote' } );\n\t}\n}\n","/**\n * @license Copyright (c) 2003-2026, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\n\n/**\n * @module block-quote/blockquoteui\n */\n\nimport { Plugin } from '@ckeditor/ckeditor5-core';\nimport { IconQuote } from '@ckeditor/ckeditor5-icons';\nimport { ButtonView, MenuBarMenuListItemButtonView } from '@ckeditor/ckeditor5-ui';\n\n/**\n * The block quote UI plugin.\n *\n * It introduces the `'blockQuote'` button.\n *\n * @extends module:core/plugin~Plugin\n */\nexport class BlockQuoteUI extends Plugin {\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get pluginName() {\n\t\treturn 'BlockQuoteUI' as const;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static override get isOfficialPlugin(): true {\n\t\treturn true;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic init(): void {\n\t\tconst editor = this.editor;\n\n\t\teditor.ui.componentFactory.add( 'blockQuote', () => {\n\t\t\tconst buttonView = this._createButton( ButtonView );\n\n\t\t\tbuttonView.set( {\n\t\t\t\ttooltip: true\n\t\t\t} );\n\n\t\t\treturn buttonView;\n\t\t} );\n\n\t\teditor.ui.componentFactory.add( 'menuBar:blockQuote', () => {\n\t\t\tconst buttonView = this._createButton( MenuBarMenuListItemButtonView );\n\n\t\t\tbuttonView.set( {\n\t\t\t\trole: 'menuitemcheckbox'\n\t\t\t} );\n\n\t\t\treturn buttonView;\n\t\t} );\n\t}\n\n\t/**\n\t * Creates a button for block quote command to use either in toolbar or in menu bar.\n\t */\n\tprivate _createButton<T extends typeof ButtonView | typeof MenuBarMenuListItemButtonView>( ButtonClass: T ): InstanceType<T> {\n\t\tconst editor = this.editor;\n\t\tconst locale = editor.locale;\n\t\tconst command = editor.commands.get( 'blockQuote' )!;\n\t\tconst view = new ButtonClass( editor.locale ) as InstanceType<T>;\n\t\tconst t = locale.t;\n\n\t\tview.set( {\n\t\t\tlabel: t( 'Block quote' ),\n\t\t\ticon: IconQuote,\n\t\t\tisToggleable: true\n\t\t} );\n\n\t\tview.bind( 'isEnabled' ).to( command, 'isEnabled' );\n\t\tview.bind( 'isOn' ).to( command, 'value' );\n\n\t\t// Execute the command.\n\t\tthis.listenTo( view, 'execute', () => {\n\t\t\teditor.execute( 'blockQuote' );\n\t\t\teditor.editing.view.focus();\n\t\t} );\n\n\t\treturn view;\n\t}\n}\n","/**\n * @license Copyright (c) 2003-2026, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\n\n/**\n * @module block-quote/blockquote\n */\n\nimport { Plugin, type PluginDependenciesOf } from '@ckeditor/ckeditor5-core';\n\nimport { BlockQuoteEditing } from './blockquoteediting.js';\nimport { BlockQuoteUI } from './blockquoteui.js';\n\n/**\n * The block quote plugin.\n *\n * For more information about this feature check the {@glink api/block-quote package page}.\n *\n * This is a \"glue\" plugin which loads the {@link module:block-quote/blockquoteediting~BlockQuoteEditing block quote editing feature}\n * and {@link module:block-quote/blockquoteui~BlockQuoteUI block quote UI feature}.\n *\n * @extends module:core/plugin~Plugin\n */\nexport class BlockQuote extends Plugin {\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get requires(): PluginDependenciesOf<[ BlockQuoteEditing, BlockQuoteUI ]> {\n\t\treturn [ BlockQuoteEditing, BlockQuoteUI ];\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get pluginName() {\n\t\treturn 'BlockQuote' as const;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static override get isOfficialPlugin(): true {\n\t\treturn true;\n\t}\n}\n"]}