Powerful rich text editor framework with a modular architecture, modern integrations, and features like collaborative editing.
This report presents the forensic synthetic code analysis of ckeditor/ckeditor5, a JavaScript project with 10,446 GitHub stars. SynthScan v2.0 examined 1,076,797 lines of code across 4759 source files, recording 1842 pattern matches distributed across 14 syntactic categories. The overall adjusted score of 3.1 places this repository in the Likely human-written band.
The scanner applied 160+ deterministic lexical heuristics, multi-line block detectors, abstract syntax tree depth profilers, and a cross-file Jaccard similarity matrix to construct a statistically normalised synthetic code estimate. All matches are individually weighted by severity coefficient and contextual multiplier before summation, and the resulting headline score is temporally discounted to account for the repository's development history relative to the commercial emergence of large language model coding tooling (November 2022 onward).
This chart maps the temporal evolution of the adjusted synthetic code score across successive scan runs. An upward trajectory indicates ongoing incorporation of AI-generated code or expanding LLM-assisted scaffolding; a stable or declining trajectory may reflect active human refactoring, code removal, or the adoption of stricter authorship policies. The dashed secondary line (right axis) independently tracks total raw pattern hit count, which can diverge from the normalised score when codebase size changes significantly between scans.
Classifies detected patterns by their diagnostic confidence and structural impact. CRITICAL patterns (coefficient 10) represent definitive synthetic signatures — hallucinated imports, explicit LLM attribution metadata — virtually never produced by human authors. HIGH (5) indicates strong structural tells such as cross-file repetition or cross-linguistic idioms. MEDIUM (2) covers recognisable conversational padding and AI-specific vocabulary. LOW (1) captures subtle indicators like tautological comments and generic boilerplate that require density to carry independent signal.
This horizontal bar chart decomposes the repository's raw synthetic code score by top-level directory, allowing you to pinpoint precisely which modules or components carry the highest AI authorship density. Directories with disproportionately high scores relative to their size warrant targeted manual review: concentrated AI signatures often trace back to mass-generated configuration layers, auto-ported test suites, LLM-scaffolded boilerplate classes, or entire subsystems authored under heavy copilot assistance. Use this view to prioritise your human code-review effort.
The scanner identified 1842 distinct pattern matches across 14 syntactic categories. Each entry below represents a discrete location in the source code where the engine recorded a statistically significant AI authorship indicator. Expand any category row to inspect the individual file paths, line numbers, code snippets, and the lexical context (CODE, COMMENT, or STRING) in which each match was detected.
Reading the findings table: The Severity column indicates the diagnostic confidence level (CRITICAL / HIGH / MEDIUM / LOW). The Context column identifies whether the match occurred inside executable code, an inline comment, or a string literal — comment-context matches receive a ×1.5 weight because LLMs systematically over-annotate. The ⚡ bolt icon marks clustered matches: three or more patterns within a 10-line window, each receiving an additional ×1.5 density multiplier as dense clusters constitute far stronger evidence of synthetic authorship than isolated hits.
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| CRITICAL | …cs/_snippets/support/managing-ckeditor-logo-styling.js | 39 | editor.ui.view.body._bodyCollectionContainer.classList.add( 'custom-theme-editor-wrapper' ); | CODE |
| CRITICAL | …sts/imagetextalternative/ui/textalternativeformview.js | 58 | expect( header.children.last.element.classList.contains( 'ck-form__header__label' ) ).toBe( true ); | CODE |
| CRITICAL | …keditor5-image/tests/imageresize/imageresizehandles.js | 1103 | editor.editing.view.document.selection.getSelectedElement() | CODE |
| CRITICAL | …mage/tests/imageresize/ui/imagecustomresizeformview.js | 50 | expect( header.children.last.element.classList.contains( 'ck-form__header__label' ) ).toBe( true ); | CODE |
| CRITICAL | …ckeditor5-image/src/image/replaceimagesourcecommand.ts | 38 | const element = this.editor.model.document.selection.getSelectedElement()!; | CODE |
| CRITICAL | …ckeditor5-image/src/image/replaceimagesourcecommand.ts | 52 | const image = this.editor.model.document.selection.getSelectedElement()!; | CODE |
| CRITICAL | …ages/ckeditor5-editor-classic/tests/classiceditorui.js | 719 | editorWithUi.ui.view.stickyPanel.contentPanelElement.getBoundingClientRect.mockReturnValue( { | CODE |
| CRITICAL | …ages/ckeditor5-editor-classic/tests/classiceditorui.js | 925 | const range = editor.editing.view.document.selection.getFirstRange(); | CODE |
| CRITICAL | …ages/ckeditor5-editor-classic/tests/classiceditorui.js | 973 | const range = editor.editing.view.document.selection.getFirstRange(); | CODE |
| CRITICAL | …ages/ckeditor5-editor-classic/tests/classiceditorui.js | 1026 | const range = editor.editing.view.document.selection.getFirstRange(); | CODE |
| CRITICAL | packages/ckeditor5-alignment/src/alignmentcommand.ts | 37 | const firstBlock = first( this.editor.model.document.selection.getSelectedBlocks() )!; | CODE |
| CRITICAL | packages/ckeditor5-widget/src/widgetresize/resizer.ts | 250 | this._options.editor.editing.view.change( () => { | CODE |
| CRITICAL | packages/ckeditor5-widget/src/widgetresize/resizer.ts | 325 | this._options.editor.editing.view.change( writer => { | CODE |
| CRITICAL | packages/ckeditor5-widget/src/widgetresize/resizer.ts | 448 | return this._options.editor.editing.view.domConverter.mapViewToDom( this._viewResizerWrapper! ) as any; | CODE |
| CRITICAL | packages/ckeditor5-font/tests/integration.js | 232 | dropdown.colorSelectorView.colorPickerFragmentView.colorPickerView.picker.dispatchEvent( event ); | CODE |
| CRITICAL | packages/ckeditor5-font/tests/integration.js | 266 | dropdown.colorSelectorView.colorPickerFragmentView.colorPickerView.picker.dispatchEvent( event ); | CODE |
| CRITICAL | packages/ckeditor5-font/tests/ui/colorui.js | 165 | const secondButton = dropdown.colorSelectorView.colorGridsFragmentView.staticColorsGrid.items.get( 1 ); | CODE |
| CRITICAL | packages/ckeditor5-font/tests/fontsize/fontsizeui.js | 342 | buttonSmall = subMenu.panelView.children.first.items.get( 1 ).children.first; | CODE |
| CRITICAL | …ckages/ckeditor5-font/tests/fontfamily/fontfamilyui.js | 346 | buttonArial = subMenu.panelView.children.first.items.get( 1 ).children.first; | CODE |
| CRITICAL | packages/ckeditor5-bookmark/tests/bookmarkui.js | 751 | expect( balloon.view.pin.mock.calls.at( -1 )[ 0 ].target ).toBe( BookmarkDomElement ); | CODE |
| CRITICAL | packages/ckeditor5-bookmark/tests/bookmarkui.js | 769 | expect( balloon.view.pin.mock.calls.at( -1 )[ 0 ].target ).not.toBe( BookmarkDomElement ); | CODE |
| CRITICAL | packages/ckeditor5-bookmark/tests/bookmarkui.js | 774 | expect( balloon.view.pin.mock.calls.at( -1 )[ 0 ].target ).toBe( newBookmarkDomElement ); | CODE |
| CRITICAL | …ckeditor5-editor-multi-root/tests/multirooteditorui.js | 168 | expect( view.editables.foo.element.classList.contains( 'ck-editor__editable_inline-root' ) ).toBe( false ); | CODE |
| CRITICAL | …ckeditor5-editor-multi-root/tests/multirooteditorui.js | 169 | expect( view.editables.bar.element.classList.contains( 'ck-editor__editable_inline-root' ) ).toBe( false ); | CODE |
| CRITICAL | …tor-multi-root/tests/manual/multirooteditor-dynamic.js | 104 | editor.ui.view.toolbar.element.remove(); | CODE |
| CRITICAL | …tor-multi-root/tests/manual/multirooteditor-dynamic.js | 105 | editor.ui.view.menuBarView.element.remove(); | CODE |
| CRITICAL | …keditor5-editor-multi-root/tests/manual/placeholder.js | 50 | editor.ui.view.toolbar.element.remove(); | CODE |
| CRITICAL | …ges/ckeditor5-editor-multi-root/tests/manual/memory.js | 48 | editor.ui.view.toolbar.element.remove(); | CODE |
| CRITICAL | …tor5-editor-multi-root/tests/manual/multirooteditor.js | 80 | editor.ui.view.toolbar.element.remove(); | CODE |
| CRITICAL | …tor5-editor-multi-root/tests/manual/multirooteditor.js | 81 | editor.ui.view.menuBarView.element.remove(); | CODE |
| CRITICAL | …or-multi-root/tests/manual/multirooteditor-detached.js | 72 | editor.ui.view.toolbar.element.remove(); | CODE |
| CRITICAL | …or-multi-root/tests/manual/multirooteditor-detached.js | 73 | editor.ui.view.menuBarView.element.remove(); | CODE |
| CRITICAL | …ges/ckeditor5-editor-multi-root/src/multirooteditor.ts | 309 | * editor.ui.view.toolbar.element.remove(); | COMMENT |
| CRITICAL | …characters/tests/ui/specialcharacterscategoriesview.js | 52 | view._dropdownView.fieldView.listView.items.last.children.first.fire( 'execute' ); | CODE |
| CRITICAL | …characters/tests/ui/specialcharacterscategoriesview.js | 94 | groupDropdownView.listView.items.last.children.first.fire( 'execute' ); | CODE |
| CRITICAL | packages/ckeditor5-fullscreen/tests/fullscreenui.js | 100 | editor.ui.view.toolbar.items.add( button ); | CODE |
| CRITICAL | packages/ckeditor5-fullscreen/tests/fullscreenui.js | 183 | editor.ui.view.toolbar.items.add( button ); | CODE |
| CRITICAL | …ckages/ckeditor5-fullscreen/tests/fullscreenediting.js | 112 | editor.ui.view.toolbar.items.add( buttonView ); | CODE |
| CRITICAL | …ckages/ckeditor5-fullscreen/tests/manual/fullscreen.ts | 243 | editorInstance.ui.view.toolbar.element.remove(); | CODE |
| CRITICAL | …ckages/ckeditor5-fullscreen/tests/manual/fullscreen.ts | 246 | editorInstance.ui.view.menuBarView.element.remove(); | CODE |
| CRITICAL | …ckages/ckeditor5-fullscreen/tests/manual/fullscreen.ts | 288 | editorInstance.ui.view.toolbar.element.remove(); | CODE |
| CRITICAL | …ckages/ckeditor5-fullscreen/tests/manual/fullscreen.ts | 291 | editorInstance.ui.view.menuBarView.element.remove(); | CODE |
| CRITICAL | …or5-fullscreen/tests/handlers/abstracteditorhandler.js | 219 | expect( global.document.body.parentElement.classList.contains( 'ck-fullscreen' ) ).toBe( false ); | CODE |
| CRITICAL | …tor5-fullscreen/src/handlers/decouplededitorhandler.ts | 47 | this._editor.ui.view.toolbar.switchBehavior( | CODE |
| CRITICAL | …itor5-fullscreen/src/handlers/abstracteditorhandler.ts | 445 | this._editor.ui.view.toolbar.switchBehavior( | CODE |
| CRITICAL | …itor5-fullscreen/src/handlers/abstracteditorhandler.ts | 757 | this._editor.ui.view.menuBarView.disable(); | CODE |
| CRITICAL | …itor5-fullscreen/src/handlers/abstracteditorhandler.ts | 791 | this._editor.ui.view.menuBarView.enable(); | CODE |
| CRITICAL | …or5-list/tests/listproperties/ui/listpropertiesview.js | 275 | expect( view.stylesView.element.firstChild.classList.contains( 'ck-button' ) ).toBe( true ); | CODE |
| CRITICAL | …or5-list/tests/listproperties/ui/listpropertiesview.js | 276 | expect( view.stylesView.element.lastChild.classList.contains( 'ck-button' ) ).toBe( true ); | CODE |
| CRITICAL | …ges/ckeditor5-list/src/legacylist/legacylistcommand.ts | 239 | const listItem = first( this.editor.model.document.selection.getSelectedBlocks() ); | CODE |
| CRITICAL | …s/ckeditor5-list/src/legacylist/legacyindentcommand.ts | 106 | const listItem = first( this.editor.model.document.selection.getSelectedBlocks() ); | CODE |
| CRITICAL | …ist/src/legacylistproperties/legacyliststartcommand.ts | 57 | const listItem = this.editor.model.document.selection.getFirstPosition()!.parent; | CODE |
| CRITICAL | …/src/legacylistproperties/legacylistreversedcommand.ts | 57 | const listItem = this.editor.model.document.selection.getFirstPosition()!.parent; | CODE |
| CRITICAL | …ist/src/legacylistproperties/legacyliststylecommand.ts | 85 | const listItem = this.editor.model.document.selection.getFirstPosition()!.parent; | CODE |
| CRITICAL | …/ckeditor5-list/src/listproperties/liststylecommand.ts | 108 | const listItem = first( this.editor.model.document.selection.getSelectedBlocks() ); | CODE |
| CRITICAL | packages/ckeditor5-clipboard/src/dragdroptarget.ts | 364 | const domElement = this.editor.editing.view.domConverter.mapViewToDom( viewElement )!; | CODE |
| CRITICAL | …ckeditor5-editor-balloon/tests/manual/ballooneditor.js | 64 | editor.ui.view.menuBarView.element.remove(); | CODE |
| CRITICAL | packages/ckeditor5-ui/tests/dropdown/utils.js | 263 | dropdownView.listView.items.first.children.first.fire( 'execute' ); | CODE |
| CRITICAL | packages/ckeditor5-ui/tests/dropdown/utils.js | 1305 | listItems.last.items.first.children.first.fire( 'execute' ); | CODE |
| CRITICAL | packages/ckeditor5-ui/tests/menubar/utils.js | 375 | const parentMenuAAListItem = menuA.panelView.children.first.items.get( 1 ); | CODE |
| 58 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | docs/framework/custom-editor-creator.md | 280 | sourceElement && sourceElement.tagName.toLowerCase() === 'textarea' && sourceElement.getAttribute( 'placeholder' ); | CODE |
| LOW | docs/framework/architecture/ui-library.md | 50 | // The HTML "placeholder" attribute is also controlled by the observable. | COMMENT |
| LOW | docs/framework/architecture/ui-library.md | 51 | placeholder: bind.to( 'placeholder' ), | CODE |
| LOW | docs/framework/architecture/ui-library.md | 126 | view.bind( 'placeholder', 'isEnabled' ).to( observable, 'placeholderText', 'isEnabled' ); | CODE |
| LOW | docs/_snippets/framework/tutorials/inline-widget.html | 16 | <p>Hello <span class="placeholder">{first name}</span> <span class="placeholder">{surname}</span>!</p> | CODE |
| LOW | docs/_snippets/framework/tutorials/inline-widget.js | 37 | const placeholder = writer.createElement( 'placeholder', { | CODE |
| LOW | docs/_snippets/framework/tutorials/inline-widget.js | 54 | const isAllowed = model.schema.checkChild( selection.focus.parent, 'placeholder' ); | CODE |
| LOW | docs/_snippets/framework/tutorials/inline-widget.js | 72 | // The "placeholder" dropdown must be registered among the UI components of the editor | COMMENT |
| LOW | docs/_snippets/framework/tutorials/inline-widget.js | 74 | editor.ui.componentFactory.add( 'placeholder', locale => { | CODE |
| LOW⚡ | docs/_snippets/framework/tutorials/inline-widget.js | 89 | const command = editor.commands.get( 'placeholder' ); | CODE |
| LOW⚡ | docs/_snippets/framework/tutorials/inline-widget.js | 94 | editor.execute( 'placeholder', { value: evt.source.commandParam } ); | CODE |
| LOW⚡ | docs/_snippets/framework/tutorials/inline-widget.js | 134 | this.editor.commands.add( 'placeholder', new PlaceholderCommand( this.editor ) ); | CODE |
| LOW⚡ | docs/_snippets/framework/tutorials/inline-widget.js | 138 | viewToModelPositionOutsideModelElement( this.editor.model, viewElement => viewElement.hasClass( 'placeholder' ) ) | CODE |
| LOW⚡ | docs/_snippets/framework/tutorials/inline-widget.js | 148 | schema.register( 'placeholder', { | CODE |
| LOW⚡ | docs/_snippets/framework/tutorials/inline-widget.js | 172 | classes: [ 'placeholder' ] | CODE |
| LOW⚡ | docs/_snippets/framework/tutorials/inline-widget.js | 178 | return modelWriter.createElement( 'placeholder', { name } ); | CODE |
| LOW⚡ | docs/_snippets/framework/tutorials/inline-widget.js | 183 | model: 'placeholder', | CODE |
| LOW⚡ | docs/_snippets/framework/tutorials/inline-widget.js | 193 | model: 'placeholder', | CODE |
| LOW⚡ | docs/_snippets/framework/tutorials/inline-widget.js | 202 | class: 'placeholder' | CODE |
| LOW | docs/_snippets/framework/tutorials/inline-widget.js | 221 | '|', 'placeholder', | CODE |
| LOW | docs/updating/update-to-48.md | 300 | * `config.get( 'placeholder' )` -> `config.get( 'roots.main.placeholder' )` | COMMENT |
| LOW⚡ | docs/tutorials/widgets/implementing-an-inline-widget.md | 215 | classes: [ 'placeholder' ] | CODE |
| LOW⚡ | docs/tutorials/widgets/implementing-an-inline-widget.md | 221 | return modelWriter.createElement( 'placeholder', { name } ); | CODE |
| LOW⚡ | docs/tutorials/widgets/implementing-an-inline-widget.md | 226 | model: 'placeholder', | CODE |
| LOW⚡ | docs/tutorials/widgets/implementing-an-inline-widget.md | 236 | model: 'placeholder', | CODE |
| LOW⚡ | docs/tutorials/widgets/implementing-an-inline-widget.md | 245 | class: 'placeholder' | CODE |
| LOW | docs/tutorials/widgets/implementing-an-inline-widget.md | 461 | // The "placeholder" dropdown must be registered among the UI components of the editor | COMMENT |
| LOW⚡ | docs/tutorials/widgets/implementing-an-inline-widget.md | 478 | const command = editor.commands.get( 'placeholder' ); | CODE |
| LOW⚡ | docs/tutorials/widgets/implementing-an-inline-widget.md | 483 | editor.execute( 'placeholder', { value: evt.source.commandParam } ); | CODE |
| LOW | docs/tutorials/widgets/implementing-an-inline-widget.md | 526 | // Insert the "placeholder" dropdown into the editor toolbar. | COMMENT |
| LOW | docs/tutorials/widgets/implementing-an-inline-widget.md | 10 | In this tutorial, you will learn how to implement an inline widget. You will build a "placeholder" feature that allows t | CODE |
| LOW | docs/tutorials/widgets/implementing-an-inline-widget.md | 161 | schema.register( 'placeholder', { | CODE |
| LOW | docs/tutorials/widgets/implementing-an-inline-widget.md | 181 | <span class="placeholder">{name}</span> | CODE |
| LOW | docs/tutorials/widgets/implementing-an-inline-widget.md | 294 | const placeholder = writer.createElement( 'placeholder', { | CODE |
| LOW | docs/tutorials/widgets/implementing-an-inline-widget.md | 308 | const isAllowed = model.schema.checkChild( selection.focus.parent, 'placeholder' ); | CODE |
| LOW | docs/tutorials/widgets/implementing-an-inline-widget.md | 337 | this.editor.commands.add( 'placeholder', new PlaceholderCommand( this.editor ) ); | CODE |
| LOW | docs/tutorials/widgets/implementing-an-inline-widget.md | 357 | editor.execute( 'placeholder', { value: 'time' } ); | CODE |
| LOW | docs/tutorials/widgets/implementing-an-inline-widget.md | 381 | foo<span class="placeholder">{name}</span>bar | CODE |
| LOW | docs/tutorials/widgets/implementing-an-inline-widget.md | 413 | this.editor.commands.add( 'placeholder', new PlaceholderCommand( this.editor ) ); | CODE |
| LOW | docs/tutorials/widgets/implementing-an-inline-widget.md | 418 | viewToModelPositionOutsideModelElement( this.editor.model, viewElement => viewElement.hasClass( 'placeholder' ) ) | CODE |
| LOW | docs/tutorials/widgets/implementing-an-inline-widget.md | 463 | editor.ui.componentFactory.add( 'placeholder', locale => { | CODE |
| LOW | docs/tutorials/widgets/implementing-an-inline-widget.md | 527 | toolbar: [ 'heading', 'bold', 'italic', 'numberedList', 'bulletedList', '|', 'placeholder' ] | CODE |
| LOW | docs/tutorials/widgets/implementing-an-inline-widget.md | 550 | this.editor.commands.add( 'placeholder', new PlaceholderCommand( this.editor ) ); | CODE |
| LOW | docs/tutorials/widgets/implementing-an-inline-widget.md | 554 | viewToModelPositionOutsideModelElement( this.editor.model, viewElement => viewElement.hasClass( 'placeholder' ) ) | CODE |
| LOW | docs/tutorials/widgets/implementing-an-inline-widget.md | 585 | editor.ui.componentFactory.add( 'placeholder', locale => { | CODE |
| LOW | docs/tutorials/widgets/implementing-an-inline-widget.md | 604 | toolbar: [ 'heading', 'bold', 'italic', 'numberedList', 'bulletedList', '|', 'placeholder' ], | CODE |
| LOW | packages/ckeditor5-enter/tests/manual/enter.manual.html | 47 | Lorem ipsum dolor sit amet, consectetur adipiscing elit.<br /> | CODE |
| LOW | packages/ckeditor5-enter/tests/manual/enter.manual.html | 47 | Lorem ipsum dolor sit amet, consectetur adipiscing elit.<br /> | CODE |
| LOW | packages/ckeditor5-emoji/tests/emojipicker.js | 453 | '<paragraph>Lorem Ipsum is simply dummy [text] of the printing and typesetting industry.</paragraph>' | CODE |
| LOW | packages/ckeditor5-emoji/tests/emojipicker.js | 459 | '<paragraph>Lorem Ipsum is simply dummy [text] of the printing and typesetting industry.</paragraph>' | CODE |
| LOW⚡ | packages/ckeditor5-mention/tests/mention.js | 64 | const text = new ViewText( viewDocument, 'John Doe' ); | CODE |
| LOW⚡ | packages/ckeditor5-mention/tests/mention.js | 74 | expect( mentionAttribute ).toHaveProperty( '_text', 'John Doe' ); | CODE |
| LOW⚡ | packages/ckeditor5-mention/tests/mention.js | 78 | const text = new ViewText( viewDocument, 'John Doe' ); | CODE |
| LOW | packages/ckeditor5-mention/tests/mention.js | 89 | expect( mentionAttribute ).toHaveProperty( '_text', 'John Doe' ); | CODE |
| LOW⚡ | packages/ckeditor5-mention/tests/manual/mention.js | 22 | editor.model.schema.register( 'placeholder', { | CODE |
| LOW⚡ | packages/ckeditor5-mention/tests/manual/mention.js | 30 | model: 'placeholder', | CODE |
| LOW⚡ | packages/ckeditor5-mention/tests/manual/mention.js | 39 | model: 'placeholder', | CODE |
| LOW⚡ | packages/ckeditor5-mention/tests/manual/mention.js | 44 | view: 'placeholder', | CODE |
| LOW⚡ | packages/ckeditor5-mention/tests/manual/mention.js | 56 | return writer.createElement( 'placeholder', { type } ); | CODE |
| LOW⚡ | packages/ckeditor5-mention/tests/manual/mention.js | 62 | viewToModelPositionOutsideModelElement( editor.model, viewElement => viewElement.name == 'placeholder' ) | CODE |
| 641 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | docs/_snippets/shared-helpers.js | 110 | export function getViewportTopOffsetConfig() { | CODE |
| LOW | docs/_snippets/shared-helpers.js | 123 | export function setViewportTopOffsetDynamically( editor ) { | CODE |
| LOW⚡ | docs/_snippets/framework/tutorials/inline-widget.js | 103 | function getDropdownItemsDefinitions( placeholderNames ) { | CODE |
| LOW | docs/_snippets/framework/tutorials/block-widget.js | 303 | function getClosestSelectedSimpleBoxElement( selection ) { | CODE |
| LOW | docs/_snippets/framework/tutorials/block-widget.js | 329 | function getClosestSimpleBoxWidget( selection ) { | CODE |
| LOW | docs/_snippets/examples/bottom-toolbar-editor.js | 241 | function overrideDropdownPositionsToNorth( editor, toolbarView ) { | CODE |
| LOW | …/getting-started/integrations-cdn/react-default-cdn.md | 147 | function CKEditorNestedInstanceDemo( { name, content } ) { | CODE |
| LOW | docs/examples/custom/bottom-toolbar-editor.md | 290 | function overrideDropdownPositionsToNorth( editor, toolbarView ) { | CODE |
| LOW | docs/tutorials/widgets/implementing-a-block-widget.md | 912 | function getClosestSelectedSimpleBoxElement( selection ) { | CODE |
| LOW | docs/tutorials/widgets/implementing-a-block-widget.md | 1134 | function getClosestSimpleBoxWidget( selection ) { | CODE |
| LOW⚡ | docs/tutorials/widgets/implementing-an-inline-widget.md | 492 | function getDropdownItemsDefinitions( placeholderNames ) { | CODE |
| LOW | docs/assets/global.js | 44 | function createClipboardInputNotification() { | CODE |
| LOW | docs/assets/global.js | 73 | function getViewportTopOffsetConfig() { | CODE |
| LOW | …-indent/src/integrations/indentblocklistintegration.ts | 331 | function listBlockIndentUpcastConverter( | CODE |
| LOW | …-indent/src/integrations/indentblocklistintegration.ts | 380 | function ensureIndentValuesConsistency( | CODE |
| LOW | packages/ckeditor5-enter/src/shiftenter.ts | 106 | function removeStaleSoftBreakAttributes( writer: ModelWriter ): boolean { | CODE |
| LOW | packages/ckeditor5-emoji/tests/emojimention.js | 20 | function mockEmojiRepositoryValues( editor ) { | CODE |
| LOW | packages/ckeditor5-emoji/tests/emojipicker.js | 20 | function mockEmojiRepositoryValues( editor ) { | CODE |
| LOW | packages/ckeditor5-style/src/styleutils.ts | 328 | function normalizedStyleDefinitionToMatcherPattern( { element, classes }: StyleDefinition ): MatcherObjectPattern { | CODE |
| LOW | packages/ckeditor5-style/src/stylecommand.ts | 258 | function getDefinitionExclusiveClasses( | CODE |
| LOW | …ricted-editing/tests/manual/restrictedediting-focus.js | 54 | async function startRestrictedEditingMode() { | CODE |
| LOW | …5-restricted-editing/tests/manual/restrictedediting.js | 90 | async function startRestrictedEditingMode() { | CODE |
| LOW | …-editing/docs/_snippets/features/restricted-editing.js | 102 | async function startRestrictedEditingMode() { | CODE |
| LOW | …-editing/src/restrictededitingexceptionblockcommand.ts | 201 | function findExceptionContentBlock( element: ModelElement ): ModelElement | null { | CODE |
| LOW | …5-restricted-editing/src/standardeditingmodeediting.ts | 199 | function registerFallbackUpcastConverter( editor: Editor ) { | CODE |
| LOW | …restricted-editing/src/restrictededitingmodeediting.ts | 561 | function isDeleteCommandOnMarkerBoundaries( commandName: string, selection: ModelDocumentSelection, markerRange: ModelRa | CODE |
| LOW | …restricted-editing/src/restrictededitingmodeediting.ts | 621 | function disallowInputExecForWrongRange( editor: Editor ): GetCallback<InsertTextCommandExecuteEvent> { | CODE |
| LOW | …restricted-editing/src/restrictededitingmodeediting.ts | 638 | function isRangeInsideSingleMarker( editor: Editor, range: ModelRange ) { | CODE |
| LOW | …restricted-editing/src/restrictededitingmodeediting.ts | 653 | function ensureNewMarkerIsFlatPostFixer( editor: Editor ): ModelPostFixer { | CODE |
| LOW | …ricted-editing/src/restrictededitingmode/converters.ts | 40 | export function setupExceptionHighlighting( editor: Editor ): void { | CODE |
| LOW | …ricted-editing/src/restrictededitingmode/converters.ts | 96 | export function resurrectCollapsedMarkerPostFixer( editor: Editor ): ModelPostFixer { | CODE |
| LOW | …ricted-editing/src/restrictededitingmode/converters.ts | 120 | export function extendMarkerOnTypingPostFixer( editor: Editor ): ModelPostFixer { | CODE |
| LOW | …-restricted-editing/src/restrictededitingmode/utils.ts | 37 | export function isPositionInRangeBoundaries( range: ModelRange, position: ModelPosition ): boolean { | CODE |
| LOW | packages/ckeditor5-utils/tests/_utils/utils.js | 99 | export function expectToThrowCKEditorError( fn, message, editorThatShouldBeFindableFromContext, data ) { | CODE |
| LOW | packages/ckeditor5-utils/tests/_utils/utils.js | 123 | export async function expectToRejectWithCKEditorError( promise, message, editorThatShouldBeFindableFromContext, data ) { | CODE |
| LOW | packages/ckeditor5-utils/tests/dom/scroll.js | 105 | function testWithoutAncestorOffset() { | CODE |
| LOW | packages/ckeditor5-utils/tests/dom/scroll.js | 235 | function testWithOffsetAndAlignToTop() { | CODE |
| LOW | packages/ckeditor5-utils/tests/dom/scroll.js | 235 | function testWithOffsetAndAlignToTop() { | CODE |
| LOW | packages/ckeditor5-utils/tests/dom/scroll.js | 300 | function testWithOffsetAndAlignToTopAndForceScroll() { | CODE |
| LOW | packages/ckeditor5-utils/tests/dom/scroll.js | 300 | function testWithOffsetAndAlignToTopAndForceScroll() { | CODE |
| LOW | packages/ckeditor5-utils/tests/dom/scroll.js | 837 | function testWithViewportAndAncestorOffsets() { | CODE |
| LOW | packages/ckeditor5-utils/tests/dom/scroll.js | 911 | function testWithAlignToTopAndNoOffsets() { | CODE |
| LOW | packages/ckeditor5-utils/tests/dom/scroll.js | 985 | function testWithAlignToTopAndOffsets() { | CODE |
| LOW | packages/ckeditor5-utils/tests/dom/scroll.js | 1059 | function testWithAlignToTopOffsetsAndForceScroll() { | CODE |
| LOW | packages/ckeditor5-utils/tests/dom/position.js | 1029 | function setElementTargetPlayground() { | CODE |
| LOW | packages/ckeditor5-utils/tests/dom/position.js | 1070 | function setElementTargetLimiterPlayground() { | CODE |
| LOW | packages/ckeditor5-utils/tests/dom/position.js | 1120 | function setElementTargetBigLimiterPlayground() { | CODE |
| LOW | packages/ckeditor5-utils/src/keyboard.ts | 191 | export function getLocalizedArrowKeyCodeDirection( | CODE |
| LOW | packages/ckeditor5-utils/src/ckeditorerror.ts | 172 | function getLinkToDocumentationMessage( errorName: string ): string { | CODE |
| LOW | packages/ckeditor5-utils/src/focustracker.ts | 333 | function isExternalViewSubtreeFocused( subTreeRoot: Element, view: ViewWithFocusTracker ): boolean { | CODE |
| LOW | …s/ckeditor5-utils/src/areconnectedthroughproperties.ts | 13 | export function areConnectedThroughProperties( obj1: object, obj2: object ): boolean { | CODE |
| LOW | packages/ckeditor5-utils/src/fastdiff.ts | 256 | function changeIndexesToAtomicChanges( changeIndexes: ChangeIndexes, newLength: number ): Array<DiffResult> { | CODE |
| LOW | packages/ckeditor5-utils/src/emittermixin.ts | 818 | function getCallbacksListsForNamespace( source: EmitterInternal, eventName: string ): Array<EventNode[ 'callbacks' ]> { | CODE |
| LOW | …es/ckeditor5-utils/src/isfeatureblockedbylicensekey.ts | 16 | export function isFeatureBlockedByLicenseKey( licensePayload: Record<string, any>, licenseFeatureCode: string ): boolean | CODE |
| LOW | packages/ckeditor5-utils/src/observablemixin.ts | 721 | function updateBoundObservableProperty( observable: ObservableInternal, propertyName: string ): void { | CODE |
| LOW | packages/ckeditor5-utils/src/parsedimensionwithunit.ts | 25 | export function tryParseDimensionWithUnit( dimension: string | null | undefined ): DimensionWithUnit | null { | CODE |
| LOW | packages/ckeditor5-utils/src/env.ts | 220 | export function isRegExpUnicodePropertySupported(): boolean { | CODE |
| LOW | …editor5-utils/src/dom/findclosestscrollableancestor.ts | 18 | export function findClosestScrollableAncestor( domElement: HTMLElement ): HTMLElement | null { | CODE |
| LOW | packages/ckeditor5-utils/src/dom/position.ts | 184 | function getVisibleViewportIntersectionRect( source: RectSource, viewportRect: Rect ): Rect | null { | CODE |
| LOW | packages/ckeditor5-utils/src/dom/position.ts | 197 | export function getConstrainedViewportRect( viewportOffsetConfig: DomOptimalPositionOptions[ 'viewportOffsetConfig' ] ): | CODE |
| 432 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | docs/tutorials/widgets/implementing-a-block-widget.md | 841 | inheritAllFrom: '$blockObject', | COMMENT |
| LOW | packages/ckeditor5-enter/src/shiftentercommand.ts | 101 | insertBreak( model, writer, range.end, selection.getAttributes() ); | COMMENT |
| LOW | packages/ckeditor5-utils/tests/focustracker.js | 561 | childViewA.element.remove(); | COMMENT |
| LOW | packages/ckeditor5-utils/tests/dom/position.js | 1041 | right: 110, | COMMENT |
| LOW | packages/ckeditor5-utils/tests/dom/position.js | 1101 | // ^ +-----------[ Viewport ]---------------------- | COMMENT |
| LOW | packages/ckeditor5-utils/src/focustracker.ts | 341 | function isFocusedView( subTreeRoot: Element, view: View ): boolean { | COMMENT |
| LOW | packages/ckeditor5-utils/src/focustracker.ts | 361 | // @if CK_DEBUG_FOCUSTRACKER // keysToLog.forEach( key => { console.log( `${ key }=`, focusTracker[ key ] ) } ); | COMMENT |
| LOW | packages/ckeditor5-utils/src/focustracker.ts | 381 | // @if CK_DEBUG_FOCUSTRACKER // }; | COMMENT |
| LOW | packages/ckeditor5-utils/src/focustracker.ts | 401 | // @if CK_DEBUG_FOCUSTRACKER // | COMMENT |
| LOW | packages/ckeditor5-utils/src/collection.ts | 581 | // | COMMENT |
| LOW | packages/ckeditor5-utils/src/fastdiff.ts | 161 | COMMENT | |
| LOW | packages/ckeditor5-utils/src/emittermixin.ts | 761 | // Note, that we might need to create intermediate events too. | COMMENT |
| LOW | packages/ckeditor5-utils/src/observablemixin.ts | 381 | } ); | COMMENT |
| LOW | packages/ckeditor5-utils/src/observablemixin.ts | 401 | // } ) | COMMENT |
| LOW | packages/ckeditor5-utils/src/observablemixin.ts | 421 | // { observable: A, property: 'd', to: [ [ B, 'z' ], [ C, 'w' ] ], callback: callback } | COMMENT |
| LOW | packages/ckeditor5-utils/src/observablemixin.ts | 441 | // Map( { | COMMENT |
| LOW | packages/ckeditor5-utils/src/dom/position.ts | 21 | // @if CK_DEBUG_POSITION // const TARGET_RECT_STYLE = { | COMMENT |
| LOW | …keditor5-image/tests/imageupload/imageuploadediting.js | 1941 | COMMENT | |
| LOW | …itor5-image/docs/framework/deep-dive/upload-adapter.md | 361 | // The rest of the MyUploadAdapter class definition. | COMMENT |
| LOW | …ckages/ckeditor5-editor-classic/src/classiceditorui.ts | 101 | COMMENT | |
| LOW | …or5-markdown-gfm/tests/gfmdataprocessor/blockquotes.js | 141 | '>\n' + | COMMENT |
| LOW | …markdown-gfm/tests/gfmdataprocessor/strong-emphasis.js | 101 | // it( 'should process nested emphasis #1', () => { | COMMENT |
| LOW | packages/ckeditor5-widget/src/widget.ts | 101 | const view = editor.editing.view; | COMMENT |
| LOW | packages/ckeditor5-widget/src/widget.ts | 181 | // If mouse down is pressed on widget - create selection over whole widget. | COMMENT |
| LOW | packages/ckeditor5-widget/src/widgetresize/resizer.ts | 361 | */ | COMMENT |
| LOW | packages/ckeditor5-editor-inline/src/inlineeditorui.ts | 81 | view.render(); | COMMENT |
| LOW | packages/ckeditor5-bookmark/src/bookmarkui.ts | 561 | COMMENT | |
| LOW | …s/ckeditor5-editor-multi-root/src/multirooteditorui.ts | 121 | COMMENT | |
| LOW | …s/ckeditor5-list/tests/legacylist/legacylistcommand.js | 201 | // 9 * -------- <- this should still be a child of item above, so indent = 1. | COMMENT |
| LOW | …s/ckeditor5-list/tests/legacylist/legacylistcommand.js | 441 | '<listItem listIndent="1" listType="numbered">---</listItem>' + | COMMENT |
| LOW | …t/tests/legacylistproperties/legacyliststylecommand.js | 421 | } ); | COMMENT |
| LOW | …or5-list/tests/listproperties/listpropertiesediting.js | 621 | it( 'should ensure that all item in a single list have the same `listReversed` attribute', () => { | COMMENT |
| LOW | …or5-list/tests/listproperties/listpropertiesediting.js | 921 | # 4.1. {start:3} | COMMENT |
| LOW | …or5-list/tests/listproperties/listpropertiesediting.js | 1061 | # 1a. {start:2} | COMMENT |
| LOW | …keditor5-list/tests/listproperties/liststartcommand.js | 361 | // | COMMENT |
| LOW | …keditor5-list/tests/listproperties/liststartcommand.js | 381 | # 3.1. {start:4} | COMMENT |
| LOW | …itor5-list/tests/listproperties/listreversedcommand.js | 341 | listReversedCommand.execute( { reversed: false } ); | COMMENT |
| LOW | …itor5-list/tests/listproperties/listreversedcommand.js | 361 | // [X] ▶ 2.1.1.] | COMMENT |
| LOW | …keditor5-list/tests/listproperties/liststylecommand.js | 321 | // "2.1.1" a child list of the "2.1" element (listIndent=2) | COMMENT |
| LOW | …ges/ckeditor5-list/src/legacylist/legacylistcommand.ts | 81 | // Correct indent of all items after the last turned off item. | COMMENT |
| LOW | …ges/ckeditor5-list/src/legacylist/legacylistcommand.ts | 101 | // 12 * -------- <-- this and all below are left unchanged. | COMMENT |
| LOW | …ges/ckeditor5-list/src/legacylist/legacylistcommand.ts | 121 | // 13 * -------- | COMMENT |
| LOW | …ges/ckeditor5-list/src/legacylist/legacylistcommand.ts | 161 | // Changing one nested list item to other type should also trigger changing all its siblings so the | COMMENT |
| LOW | …ges/ckeditor5-list/src/legacylist/legacylistcommand.ts | 281 | isBackward: boolean, | COMMENT |
| LOW | packages/ckeditor5-list/src/legacylist/legacyutils.ts | 321 | // If found something else than `listItem`, we're out of the list scope. | COMMENT |
| LOW | packages/ckeditor5-list/src/legacylist/legacyutils.ts | 341 | // ○ List item 3. [listIndent=1] | COMMENT |
| LOW | …ages/ckeditor5-list/src/legacylist/legacyconverters.ts | 261 | if ( data.item.name != 'listItem' ) { | COMMENT |
| LOW | …ages/ckeditor5-list/src/legacylist/legacyconverters.ts | 281 | // Insert paragraph after item 1.1.1: | COMMENT |
| LOW | …ages/ckeditor5-list/src/legacylist/legacyconverters.ts | 301 | // 1.1 -------- | COMMENT |
| LOW | …ages/ckeditor5-list/src/legacylist/legacyconverters.ts | 881 | // If this is a list, we expect that some `listItem`s and possibly other blocks will be inserted, however `.modelCurs | COMMENT |
| LOW | …ages/ckeditor5-list/src/legacylist/legacyconverters.ts | 901 | // | COMMENT |
| LOW | …ages/ckeditor5-list/src/legacylist/legacyconverters.ts | 981 | // Lorem ipsum. | COMMENT |
| LOW | …ages/ckeditor5-list/src/legacylist/legacyconverters.ts | 1001 | // 1.1 -------- | COMMENT |
| LOW | …ages/ckeditor5-list/src/legacylist/legacyconverters.ts | 1021 | // 1.1 -------- <--- this is removed, previous list item has indent smaller than reference indent. | COMMENT |
| LOW | …rc/legacylistproperties/legacylistpropertiesediting.ts | 521 | // ○ List item 2. | COMMENT |
| LOW | …rc/legacylistproperties/legacylistpropertiesediting.ts | 681 | // attributes for inserted (pasted) items. See https://github.com/ckeditor/ckeditor5/issues/8160. | COMMENT |
| LOW | …itor5-list/src/legacytodolist/legacytodolistediting.ts | 141 | COMMENT | |
| LOW | packages/ckeditor5-list/src/list/converters.ts | 841 | // The <li> uses a fixed ID per indent (`list-item-skip-N`) so that sibling items sharing | COMMENT |
| LOW | packages/ckeditor5-list/src/list/listediting.ts | 641 | // | COMMENT |
| LOW | packages/ckeditor5-list/src/list/utils/model.ts | 481 | // For example: | COMMENT |
| 288 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | packages/ckeditor5-list/src/list/listediting.ts | 398 | // ├───────────────────────────┼───────────────────────────┼───────────────────────────┤ | COMMENT |
| MEDIUM⚡ | packages/ckeditor5-list/src/list/listediting.ts | 647 | // ┌─────────────────────┬───────────────────┐ | COMMENT |
| MEDIUM⚡ | packages/ckeditor5-list/src/list/listediting.ts | 649 | // ├─────────────────────┼───────────────────┤ | COMMENT |
| MEDIUM⚡ | packages/ckeditor5-list/src/list/listediting.ts | 651 | // ├─────────────────────┼───────────────────┤ | COMMENT |
| MEDIUM⚡ | packages/ckeditor5-list/src/list/listediting.ts | 653 | // ├─────────────────────┼───────────────────┤ | COMMENT |
| MEDIUM⚡ | packages/ckeditor5-list/src/list/listediting.ts | 655 | // ├─────────────────────┼───────────────────┤ | COMMENT |
| MEDIUM⚡ | packages/ckeditor5-list/src/list/listediting.ts | 658 | // ├─────────────────────┼───────────────────┤ | COMMENT |
| MEDIUM⚡ | packages/ckeditor5-list/src/list/listediting.ts | 661 | // ├─────────────────────┼───────────────────┤ | COMMENT |
| MEDIUM⚡ | packages/ckeditor5-list/src/list/listediting.ts | 664 | // └─────────────────────┴───────────────────┘ | COMMENT |
| MEDIUM⚡ | packages/ckeditor5-clipboard/src/dragdrop.ts | 65 | // ┌──────────────────┐ | COMMENT |
| MEDIUM⚡ | packages/ckeditor5-clipboard/src/dragdrop.ts | 67 | // └─────────┬────────┘ | COMMENT |
| MEDIUM⚡ | packages/ckeditor5-clipboard/src/dragdrop.ts | 69 | // └─────────────────────┐ | COMMENT |
| MEDIUM⚡ | packages/ckeditor5-clipboard/src/dragdrop.ts | 71 | // │ ┌─────────V────────┐ | COMMENT |
| MEDIUM⚡ | packages/ckeditor5-clipboard/src/dragdrop.ts | 73 | // │ └──────────────────┘ | COMMENT |
| MEDIUM⚡ | packages/ckeditor5-clipboard/src/dragdrop.ts | 75 | // ┌─────────V────────┐ Retrieves the selected model.DocumentFragment | COMMENT |
| MEDIUM⚡ | packages/ckeditor5-clipboard/src/dragdrop.ts | 77 | // └─────────┬────────┘ | COMMENT |
| MEDIUM⚡ | packages/ckeditor5-clipboard/src/dragdrop.ts | 79 | // ┌─────────V────────┐ Processes view.DocumentFragment to text/html and text/plain | COMMENT |
| MEDIUM⚡ | packages/ckeditor5-clipboard/src/dragdrop.ts | 81 | // └─────────┬────────┘ | COMMENT |
| MEDIUM⚡ | packages/ckeditor5-clipboard/src/dragdrop.ts | 84 | // ┌────────────┐ | COMMENT |
| MEDIUM⚡ | packages/ckeditor5-clipboard/src/dragdrop.ts | 86 | // ┌─────────V────────┐ │ | COMMENT |
| MEDIUM⚡ | packages/ckeditor5-clipboard/src/dragdrop.ts | 88 | // └─────────┬────────┘ │ | COMMENT |
| MEDIUM⚡ | packages/ckeditor5-clipboard/src/dragdrop.ts | 90 | // ┌─────────────└────────────┘ | COMMENT |
| MEDIUM⚡ | packages/ckeditor5-clipboard/src/dragdrop.ts | 92 | // │ ┌─────────V────────┐ │ | COMMENT |
| MEDIUM⚡ | packages/ckeditor5-clipboard/src/dragdrop.ts | 94 | // │ └─────────┬────────┘ │ | COMMENT |
| MEDIUM⚡ | packages/ckeditor5-clipboard/src/dragdrop.ts | 96 | // ┌───│─────────────┘ │ | COMMENT |
| MEDIUM⚡ | packages/ckeditor5-clipboard/src/dragdrop.ts | 98 | // │ │ ┌─────────V────────┐ │ | COMMENT |
| MEDIUM⚡ | packages/ckeditor5-clipboard/src/dragdrop.ts | 100 | // │ │ └─────────┬────────┘ │ | COMMENT |
| MEDIUM⚡ | packages/ckeditor5-clipboard/src/dragdrop.ts | 102 | // │ │ └────────────┘ | COMMENT |
| MEDIUM⚡ | packages/ckeditor5-clipboard/src/dragdrop.ts | 104 | // │ └─────────────┐ | COMMENT |
| MEDIUM⚡ | packages/ckeditor5-clipboard/src/dragdrop.ts | 106 | // │ │ ┌─────────V────────┐ | COMMENT |
| MEDIUM⚡ | packages/ckeditor5-clipboard/src/dragdrop.ts | 108 | // │ └─────────┬────────┘ | COMMENT |
| MEDIUM⚡ | packages/ckeditor5-clipboard/src/dragdrop.ts | 110 | // │ ┌─────────V────────┐ Resolves the final data.targetRanges. | COMMENT |
| MEDIUM⚡ | packages/ckeditor5-clipboard/src/dragdrop.ts | 112 | // │ └─────────┬────────┘ | COMMENT |
| MEDIUM⚡ | packages/ckeditor5-clipboard/src/dragdrop.ts | 114 | // │ ┌─────────V────────┐ | COMMENT |
| MEDIUM⚡ | packages/ckeditor5-clipboard/src/dragdrop.ts | 116 | // │ └─────────┬────────┘ | COMMENT |
| MEDIUM⚡ | packages/ckeditor5-clipboard/src/dragdrop.ts | 118 | // │ ┌───────────V───────────┐ | COMMENT |
| MEDIUM⚡ | packages/ckeditor5-clipboard/src/dragdrop.ts | 120 | // │ └───────────┬───────────┘ | COMMENT |
| MEDIUM⚡ | packages/ckeditor5-clipboard/src/dragdrop.ts | 122 | // │ ┌──────────V──────────┐ | COMMENT |
| MEDIUM⚡ | packages/ckeditor5-clipboard/src/dragdrop.ts | 124 | // │ └──────────┬──────────┘ | COMMENT |
| MEDIUM⚡ | packages/ckeditor5-clipboard/src/dragdrop.ts | 126 | // │ ┌──────────V──────────┐ | COMMENT |
| MEDIUM⚡ | packages/ckeditor5-clipboard/src/dragdrop.ts | 128 | // │ └──────────┬──────────┘ | COMMENT |
| MEDIUM⚡ | packages/ckeditor5-clipboard/src/dragdrop.ts | 130 | // │ ┌──────────V──────────┐ | COMMENT |
| MEDIUM⚡ | packages/ckeditor5-clipboard/src/dragdrop.ts | 132 | // │ └──────────┬──────────┘ | COMMENT |
| MEDIUM⚡ | packages/ckeditor5-clipboard/src/dragdrop.ts | 134 | // └─────────────┐ | COMMENT |
| MEDIUM⚡ | packages/ckeditor5-clipboard/src/dragdrop.ts | 136 | // ┌─────────V────────┐ | COMMENT |
| MEDIUM⚡ | packages/ckeditor5-clipboard/src/dragdrop.ts | 138 | // └──────────────────┘ | COMMENT |
| MEDIUM⚡ | packages/ckeditor5-clipboard/src/clipboardpipeline.ts | 39 | // ┌──────────────────────┐ ┌──────────────────────┐ | COMMENT |
| MEDIUM⚡ | packages/ckeditor5-clipboard/src/clipboardpipeline.ts | 42 | // └───────────┬──────────┘ └───────────┬──────────┘ | COMMENT |
| MEDIUM⚡ | packages/ckeditor5-clipboard/src/clipboardpipeline.ts | 44 | // └────────────────┌────────────────┘ | COMMENT |
| MEDIUM⚡ | packages/ckeditor5-clipboard/src/clipboardpipeline.ts | 46 | // ┌─────────V────────┐ | COMMENT |
| MEDIUM⚡ | packages/ckeditor5-clipboard/src/clipboardpipeline.ts | 49 | // └─────────┬────────┘ | COMMENT |
| MEDIUM⚡ | packages/ckeditor5-clipboard/src/clipboardpipeline.ts | 51 | // ┌───────────V───────────┐ | COMMENT |
| MEDIUM⚡ | packages/ckeditor5-clipboard/src/clipboardpipeline.ts | 54 | // └───────────┬───────────┘ | COMMENT |
| MEDIUM⚡ | packages/ckeditor5-clipboard/src/clipboardpipeline.ts | 56 | // ┌──────────V──────────┐ | COMMENT |
| MEDIUM⚡ | packages/ckeditor5-clipboard/src/clipboardpipeline.ts | 59 | // └─────────────────────┘ | COMMENT |
| MEDIUM⚡ | packages/ckeditor5-clipboard/src/clipboardpipeline.ts | 64 | // ┌──────────────────────┐ ┌──────────────────────┐ | COMMENT |
| MEDIUM⚡ | packages/ckeditor5-clipboard/src/clipboardpipeline.ts | 67 | // └───────────┬──────────┘ └───────────┬──────────┘ | COMMENT |
| MEDIUM⚡ | packages/ckeditor5-clipboard/src/clipboardpipeline.ts | 69 | // └────────────────┌────────────────┘ | COMMENT |
| MEDIUM⚡ | packages/ckeditor5-clipboard/src/clipboardpipeline.ts | 71 | // ┌───────────V───────────┐ | COMMENT |
| MEDIUM⚡ | packages/ckeditor5-clipboard/src/clipboardpipeline.ts | 74 | // └───────────┬───────────┘ | COMMENT |
| 9 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | …ckages/ckeditor5-widget/src/widgettoolbarrepository.ts | 115 | // UI#update is not fired after focus is back in editor, we need to check if balloon panel should be visible. | COMMENT |
| LOW | packages/ckeditor5-typing/src/twostepcaretmovement.ts | 443 | // We need to check if the caret is a one position before the attribute boundary: | COMMENT |
| LOW⚡ | packages/ckeditor5-engine/tests/view/renderer.js | 599 | // Step 2: No mutation on second render | COMMENT |
| LOW⚡ | packages/ckeditor5-engine/tests/view/renderer.js | 605 | // Step 3: <p>foo{}<b></b></p> | COMMENT |
| LOW⚡ | packages/ckeditor5-engine/tests/view/renderer.js | 621 | // Step 4: No mutation on second render | COMMENT |
| LOW⚡ | packages/ckeditor5-engine/tests/view/renderer.js | 631 | // Step 1: <p>"FILLER{}"<b>foo</b></p> | COMMENT |
| LOW⚡ | packages/ckeditor5-engine/tests/view/renderer.js | 654 | // Step 2: No mutation on second render | COMMENT |
| LOW⚡ | packages/ckeditor5-engine/tests/view/renderer.js | 658 | // Step 3: <p><b>{}foo</b></p> | COMMENT |
| LOW⚡ | packages/ckeditor5-engine/tests/view/renderer.js | 674 | // Step 4: No mutation on second render | COMMENT |
| LOW⚡ | packages/ckeditor5-engine/tests/view/renderer.js | 684 | // Step 1: <p>"FILLER{}"<b>foo</b></p> | COMMENT |
| LOW⚡ | packages/ckeditor5-engine/tests/view/renderer.js | 706 | // Step 2: No mutation on second render | COMMENT |
| LOW⚡ | packages/ckeditor5-engine/tests/view/renderer.js | 710 | // Step 3: <p><b>{}foo</b></p> | COMMENT |
| LOW⚡ | packages/ckeditor5-engine/tests/view/renderer.js | 726 | // Step 4: No mutation on second render | COMMENT |
| LOW⚡ | packages/ckeditor5-engine/tests/view/renderer.js | 734 | // Step 1: <p>"FILLER{}"<b>foo</b></p> | COMMENT |
| LOW⚡ | packages/ckeditor5-engine/tests/view/renderer.js | 757 | // Step 2: No mutation on second render | COMMENT |
| LOW⚡ | packages/ckeditor5-engine/tests/view/renderer.js | 761 | // Step 3: <p><b>foo{}</b></p> | COMMENT |
| LOW⚡ | packages/ckeditor5-engine/tests/view/renderer.js | 777 | // Step 4: No mutation on second render | COMMENT |
| LOW⚡ | packages/ckeditor5-engine/tests/view/renderer.js | 786 | // Step 1: <p><br>{}</p> | COMMENT |
| LOW⚡ | packages/ckeditor5-engine/tests/view/renderer.js | 808 | // Step 2: No mutation on second render | COMMENT |
| LOW⚡ | packages/ckeditor5-engine/tests/view/renderer.js | 812 | // Step 3: <p>{}<br></p> | COMMENT |
| LOW⚡ | packages/ckeditor5-engine/tests/view/renderer.js | 827 | // Step 4: No mutation on second render | COMMENT |
| LOW⚡ | packages/ckeditor5-engine/tests/view/renderer.js | 837 | // Step 1: <p>"FILLER{}"<b>foo</b></p> | COMMENT |
| LOW⚡ | packages/ckeditor5-engine/tests/view/renderer.js | 859 | // Step 2: No mutation on second render | COMMENT |
| LOW⚡ | packages/ckeditor5-engine/tests/view/renderer.js | 863 | // Step 3: <p><b>foo{}</b></p> | COMMENT |
| LOW⚡ | packages/ckeditor5-engine/tests/view/renderer.js | 967 | // Step 2: Add text node. | COMMENT |
| LOW⚡ | packages/ckeditor5-engine/tests/view/renderer.js | 975 | // Step 3: Remove selection from the view. | COMMENT |
| LOW⚡ | packages/ckeditor5-engine/tests/view/renderer.js | 1003 | // Step 2: Remove the <b> and update the selection (<p>bar[]</p>). | COMMENT |
| LOW⚡ | packages/ckeditor5-engine/tests/view/renderer.js | 1011 | // Step 3: Check whether there's no filler in the DOM. | COMMENT |
| LOW⚡ | packages/ckeditor5-engine/tests/view/renderer.js | 1018 | // Step 1: <p><b>foo</b>"FILLER{}"<b>bar</b></p><p></p> | COMMENT |
| LOW⚡ | packages/ckeditor5-engine/tests/view/renderer.js | 1085 | // Step 3: Check whether new filler was created in the <i> element. | COMMENT |
| LOW⚡ | packages/ckeditor5-engine/tests/view/renderer.js | 1094 | // Step 1: <p>bar<b>abc</b>"FILLER"{}</p> | COMMENT |
| LOW⚡ | packages/ckeditor5-engine/tests/view/renderer.js | 1106 | // Step 2: Move selection to a new attribute element. | COMMENT |
| LOW⚡ | packages/ckeditor5-engine/tests/view/renderer.js | 1115 | // Step 3: Check whether old filler was removed. | COMMENT |
| LOW | packages/ckeditor5-engine/tests/view/renderer.js | 572 | // Step 1: <p>foo<b>"FILLER{}"</b></p> | COMMENT |
| LOW | packages/ckeditor5-engine/tests/view/renderer.js | 879 | // Step 4: No mutation on second render | COMMENT |
| LOW | packages/ckeditor5-engine/tests/view/renderer.js | 914 | // Step 1: <p>foo<b>"FILLER{}"</b></p> | COMMENT |
| LOW | packages/ckeditor5-engine/tests/view/renderer.js | 935 | // Step 2: <p>foo<b></b><i>"FILLER{}"</i></p> | COMMENT |
| LOW | packages/ckeditor5-engine/tests/view/renderer.js | 951 | // Step 1: <p>foo<b>"FILLER{}"</b></p> | COMMENT |
| LOW | packages/ckeditor5-engine/tests/view/renderer.js | 991 | // Step 1: <p>bar<b>foo</b>"FILLER{}"</p> | COMMENT |
| LOW | packages/ckeditor5-engine/tests/view/renderer.js | 1035 | // Step 2: Move <b>foo</b><b>bar</b> to the second paragraph and leave collapsed selection in the first one. | COMMENT |
| LOW | packages/ckeditor5-engine/tests/view/renderer.js | 1049 | // Step 3: Check whether in the first paragraph there's a <br> filler and that | COMMENT |
| LOW | packages/ckeditor5-engine/tests/view/renderer.js | 1062 | // Step 1: <p>bar<b>"FILLER{}"</b></p> | COMMENT |
| LOW | packages/ckeditor5-engine/tests/view/renderer.js | 1074 | // Step 2: Move selection to a new attribute element and remove the previous one | COMMENT |
| LOW | packages/ckeditor5-engine/src/model/writer.ts | 204 | // We need to check if item is going to be inserted within the same document. | COMMENT |
| LOW | …ages/ckeditor5-engine/src/model/utils/deletecontent.ts | 218 | // So we need to check if there is no content in the skipped range (because we want to include the <imageBlock>). | COMMENT |
| LOW | …ges/ckeditor5-engine/src/conversion/downcasthelpers.ts | 2662 | // For insert or remove use parent element because we need to check if it's added/removed child. | COMMENT |
| LOW | packages/ckeditor5-engine/src/view/downcastwriter.ts | 1078 | // We need to check if parent of this text matches to given element. | COMMENT |
| LOW | packages/ckeditor5-engine/src/view/downcastwriter.ts | 1091 | // We need to check if element range stick out of the given range and truncate if it is. | COMMENT |
| LOW | packages/ckeditor5-table/src/tableutils.ts | 892 | // This check is needed since we need to check if there are any cells from previous rows than spans over this cell's | COMMENT |
| LOW⚡ | …ditor5-table/src/converters/table-layout-post-fixer.ts | 273 | // Step 1: correct rowspans of table cells if necessary. | COMMENT |
| LOW⚡ | …ditor5-table/src/converters/table-layout-post-fixer.ts | 276 | // Step 2: fix table rows sizes. | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | docs/updating/migration-to-cdn/angular.md | 27 | ### Step 1: Remove CKEditor 5 imports | COMMENT |
| LOW | docs/updating/migration-to-cdn/angular.md | 36 | ### Step 2: Update your Angular components to use CDN | COMMENT |
| LOW | docs/updating/migration-to-cdn/vuejs-v3.md | 27 | ### Step 1: Remove CKEditor 5 imports | COMMENT |
| LOW | docs/updating/migration-to-cdn/vuejs-v3.md | 36 | ### Step 2: Update your Vue components to use CDN | COMMENT |
| LOW | docs/updating/migration-to-cdn/react.md | 29 | #### Step 1: Remove CKEditor 5 imports | COMMENT |
| LOW | docs/updating/migration-to-cdn/react.md | 38 | #### Step 2: Use `useCKEditorCloud` hook to load CKEditor 5 from CDN | COMMENT |
| LOW | docs/updating/migration-to-cdn/react.md | 209 | #### Step 1: Remove CKEditor 5 imports | COMMENT |
| LOW | docs/updating/migration-to-cdn/react.md | 218 | #### Step 2: Use `useCKEditorCloud` hook to load CKEditor 5 Context from CDN | COMMENT |
| LOW | docs/updating/migration-to-cdn/react.md | 340 | #### Step 1: Remove CKEditor 5 imports | COMMENT |
| LOW | docs/updating/migration-to-cdn/react.md | 349 | #### Step 2: Use `withCKEditorCloud` HOC to load CKEditor 5 from CDN | COMMENT |
| LOW | docs/updating/migration-to-cdn/testing-suite.md | 19 | ### Step 1: Remove CKEditor 5 imports | COMMENT |
| LOW | docs/updating/migration-to-cdn/testing-suite.md | 28 | ### Step 2: Update your test files to use CDN | COMMENT |
| LOW | docs/updating/migration-to-cdn/vanilla-js.md | 23 | ### Step 1: Update your HTML file | COMMENT |
| LOW | docs/updating/migration-to-cdn/vanilla-js.md | 48 | ### Step 2: Replace CKEditor 5 imports with `window.CKEDITOR` | COMMENT |
| LOW | docs/updating/migration-to-cdn/vanilla-js.md | 90 | ### Step 1: Install the `@ckeditor/ckeditor5-integrations-common` Package | COMMENT |
| LOW | docs/updating/migration-to-cdn/vanilla-js.md | 98 | ### Step 2: Replace CKEditor 5 Imports | COMMENT |
| LOW⚡ | packages/ckeditor5-engine/tests/view/renderer.js | 599 | // Step 2: No mutation on second render | COMMENT |
| LOW⚡ | packages/ckeditor5-engine/tests/view/renderer.js | 621 | // Step 4: No mutation on second render | COMMENT |
| LOW⚡ | packages/ckeditor5-engine/tests/view/renderer.js | 654 | // Step 2: No mutation on second render | COMMENT |
| LOW⚡ | packages/ckeditor5-engine/tests/view/renderer.js | 674 | // Step 4: No mutation on second render | COMMENT |
| LOW⚡ | packages/ckeditor5-engine/tests/view/renderer.js | 706 | // Step 2: No mutation on second render | COMMENT |
| LOW⚡ | packages/ckeditor5-engine/tests/view/renderer.js | 726 | // Step 4: No mutation on second render | COMMENT |
| LOW⚡ | packages/ckeditor5-engine/tests/view/renderer.js | 757 | // Step 2: No mutation on second render | COMMENT |
| LOW⚡ | packages/ckeditor5-engine/tests/view/renderer.js | 777 | // Step 4: No mutation on second render | COMMENT |
| LOW⚡ | packages/ckeditor5-engine/tests/view/renderer.js | 808 | // Step 2: No mutation on second render | COMMENT |
| LOW⚡ | packages/ckeditor5-engine/tests/view/renderer.js | 827 | // Step 4: No mutation on second render | COMMENT |
| LOW⚡ | packages/ckeditor5-engine/tests/view/renderer.js | 859 | // Step 2: No mutation on second render | COMMENT |
| LOW⚡ | packages/ckeditor5-engine/tests/view/renderer.js | 967 | // Step 2: Add text node. | COMMENT |
| LOW⚡ | packages/ckeditor5-engine/tests/view/renderer.js | 975 | // Step 3: Remove selection from the view. | COMMENT |
| LOW⚡ | packages/ckeditor5-engine/tests/view/renderer.js | 1003 | // Step 2: Remove the <b> and update the selection (<p>bar[]</p>). | COMMENT |
| LOW⚡ | packages/ckeditor5-engine/tests/view/renderer.js | 1011 | // Step 3: Check whether there's no filler in the DOM. | COMMENT |
| LOW⚡ | packages/ckeditor5-engine/tests/view/renderer.js | 1085 | // Step 3: Check whether new filler was created in the <i> element. | COMMENT |
| LOW⚡ | packages/ckeditor5-engine/tests/view/renderer.js | 1106 | // Step 2: Move selection to a new attribute element. | COMMENT |
| LOW⚡ | packages/ckeditor5-engine/tests/view/renderer.js | 1115 | // Step 3: Check whether old filler was removed. | COMMENT |
| LOW | packages/ckeditor5-engine/tests/view/renderer.js | 879 | // Step 4: No mutation on second render | COMMENT |
| LOW | packages/ckeditor5-engine/tests/view/renderer.js | 1035 | // Step 2: Move <b>foo</b><b>bar</b> to the second paragraph and leave collapsed selection in the first one. | COMMENT |
| LOW | packages/ckeditor5-engine/tests/view/renderer.js | 1049 | // Step 3: Check whether in the first paragraph there's a <br> filler and that | COMMENT |
| LOW | packages/ckeditor5-engine/tests/view/renderer.js | 1074 | // Step 2: Move selection to a new attribute element and remove the previous one | COMMENT |
| LOW⚡ | …ditor5-table/src/converters/table-layout-post-fixer.ts | 273 | // Step 1: correct rowspans of table cells if necessary. | COMMENT |
| LOW⚡ | …ditor5-table/src/converters/table-layout-post-fixer.ts | 276 | // Step 2: fix table rows sizes. | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | CHANGELOG.md | 131 | #### ⭐ AI-generated suggestions in track changes | COMMENT |
| HIGH | CHANGELOG.md | 165 | * **[ai](https://www.npmjs.com/package/@ckeditor/ckeditor5-ai), [track-changes](https://www.npmjs.com/package/@ckeditor/ | COMMENT |
| HIGH⚡ | CHANGELOG.md | 176 | * **[collaboration-core](https://www.npmjs.com/package/@ckeditor/ckeditor5-collaboration-core), [track-changes](https:// | COMMENT |
| HIGH⚡ | CHANGELOG.md | 178 | * **[ai](https://www.npmjs.com/package/@ckeditor/ckeditor5-ai)**: Fixed an issue where AI-suggested insertions generated | COMMENT |
| HIGH⚡ | CHANGELOG.md | 179 | * **[ai](https://www.npmjs.com/package/@ckeditor/ckeditor5-ai)**: Made AI-generated content displayed in the AI Quick Ac | COMMENT |
| HIGH | docs/updating/update-to-48.md | 33 | ### AI-generated suggestions in track changes (⭐) | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | packages/ckeditor5-editor-classic/src/classiceditor.ts | 173 | * # Creating a detached editor | COMMENT |
| MEDIUM | packages/ckeditor5-editor-classic/src/classiceditor.ts | 256 | * # Creating a detached editor | COMMENT |
| MEDIUM | packages/ckeditor5-editor-inline/src/inlineeditor.ts | 166 | * # Creating a detached editor | COMMENT |
| MEDIUM | packages/ckeditor5-editor-inline/src/inlineeditor.ts | 249 | * # Creating a detached editor | COMMENT |
| MEDIUM | …ges/ckeditor5-editor-multi-root/src/multirooteditor.ts | 900 | * # Creating a detached editor | COMMENT |
| MEDIUM⚡ | …ges/ckeditor5-editor-multi-root/src/multirooteditor.ts | 1033 | * # Creating a detached editor | COMMENT |
| MEDIUM | packages/ckeditor5-editor-balloon/src/ballooneditor.ts | 166 | * # Creating a detached editor | COMMENT |
| MEDIUM | packages/ckeditor5-editor-balloon/src/ballooneditor.ts | 255 | * # Creating a detached editor | COMMENT |
| MEDIUM | …ages/ckeditor5-editor-decoupled/src/decouplededitor.ts | 190 | * # Creating a detached editor | COMMENT |
| MEDIUM | …ages/ckeditor5-editor-decoupled/src/decouplededitor.ts | 285 | * # Creating a detached editor | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | docs/getting-started/setup/ui-language.md | 144 | Configure {@link module:core/editor/editorconfig~EditorConfig#language `config.language`} to change the language of the | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | …itor5-fullscreen/src/handlers/abstracteditorhandler.ts | 28 | * The only method that is necessary to provide when extending this class is {@link #defaultOnEnter}. However, make sure | COMMENT |
| MEDIUM | …ages/ckeditor5-engine/src/model/operation/transform.ts | 1836 | // Note that this is a simplified version of default case, but here we treat the common part (whole `rangeA`) | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | docs/getting-started/integrations/jquery.md | 19 | To set up the editor from npm, you need a bundler to build the JavaScript files correctly. CKEditor 5 is compatibl | CODE |
| MEDIUM | docs/getting-started/integrations/quick-start.md | 18 | To set up the editor from npm, you need a bundler to build the JavaScript files correctly. CKEditor 5 is compatible wit | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | packages/ckeditor5-cloud-services/tests/manual/token.js | 35 | function handleRequest( xhr, resolve, reject ) { | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | …ckages/ckeditor5/tests/_data/full-websites-styled.html | 2977 | style="color:#2980b9;">. Now, let’s just add some toolbar with stylish buttons to | CODE |