mirror of
https://github.com/zadam/trilium.git
synced 2025-11-01 03:59:05 +01:00
chore(ckeditor5-footnotes): fix references: Element -> ModelElement
This commit is contained in:
parent
6ead31b45f
commit
a901e92573
@ -1,4 +1,4 @@
|
||||
import { type Editor, ModelText, ModelTextProxy, type Element, type Range, type Autoformat, inlineAutoformatEditing } from 'ckeditor5';
|
||||
import { type Editor, ModelText, ModelTextProxy, type ModelElement, type Range, type Autoformat, inlineAutoformatEditing } from 'ckeditor5';
|
||||
|
||||
import { COMMANDS, ELEMENTS } from '../constants.js';
|
||||
import { modelQueryElement, modelQueryElementsAll } from '../utils.js';
|
||||
@ -68,7 +68,7 @@ const regexMatchCallback = (
|
||||
* Footnotes only get inserted if the matching range is an integer between 1
|
||||
* and the number of existing footnotes + 1.
|
||||
*/
|
||||
const formatCallback = ( ranges: Array<Range>, editor: Editor, rootElement: Element ): boolean | undefined => {
|
||||
const formatCallback = ( ranges: Array<Range>, editor: Editor, rootElement: ModelElement ): boolean | undefined => {
|
||||
const command = editor.commands.get( COMMANDS.insertFootnote );
|
||||
if ( !command || !command.isEnabled ) {
|
||||
return;
|
||||
@ -108,7 +108,7 @@ const formatCallback = ( ranges: Array<Range>, editor: Editor, rootElement: Elem
|
||||
/**
|
||||
* Adds functionality to support creating footnotes using markdown syntax, e.g. `[^1]`.
|
||||
*/
|
||||
export const addFootnoteAutoformatting = ( editor: Editor, rootElement: Element ): void => {
|
||||
export const addFootnoteAutoformatting = ( editor: Editor, rootElement: ModelElement ): void => {
|
||||
if ( editor.plugins.has( 'Autoformat' ) ) {
|
||||
const autoformatPluginInstance = editor.plugins.get( 'Autoformat' ) as Autoformat;
|
||||
inlineAutoformatEditing(
|
||||
|
||||
@ -1,4 +1,4 @@
|
||||
import { type Editor, type DowncastConversionApi, type ViewContainerElement, Element, toWidget, toWidgetEditable } from 'ckeditor5';
|
||||
import { type Editor, type DowncastConversionApi, type ViewContainerElement, ModelElement, toWidget, toWidgetEditable } from 'ckeditor5';
|
||||
|
||||
import { ATTRIBUTES, CLASSES, ELEMENTS } from '../constants.js';
|
||||
import { viewQueryElement } from '../utils.js';
|
||||
@ -232,7 +232,7 @@ export const defineConverters = ( editor: Editor ): void => {
|
||||
* for both data and editing downcasts.
|
||||
*/
|
||||
function createFootnoteBackLinkViewElement(
|
||||
modelElement: Element,
|
||||
modelElement: ModelElement,
|
||||
conversionApi: DowncastConversionApi
|
||||
): ViewContainerElement {
|
||||
const viewWriter = conversionApi.writer;
|
||||
@ -264,7 +264,7 @@ function createFootnoteBackLinkViewElement(
|
||||
* data downcast and editing downcast conversions.
|
||||
*/
|
||||
function createFootnoteReferenceViewElement(
|
||||
modelElement: Element,
|
||||
modelElement: ModelElement,
|
||||
conversionApi: DowncastConversionApi
|
||||
): ViewContainerElement {
|
||||
const viewWriter = conversionApi.writer;
|
||||
@ -301,7 +301,7 @@ function createFootnoteReferenceViewElement(
|
||||
* data downcast and editing downcast conversions.
|
||||
*/
|
||||
function createFootnoteItemViewElement(
|
||||
modelElement: Element,
|
||||
modelElement: ModelElement,
|
||||
conversionApi: DowncastConversionApi
|
||||
): ViewContainerElement {
|
||||
const viewWriter = conversionApi.writer;
|
||||
@ -330,7 +330,7 @@ function createFootnoteItemViewElement(
|
||||
*/
|
||||
function updateFootnoteReferenceView(
|
||||
data: {
|
||||
item: Element;
|
||||
item: ModelElement;
|
||||
attributeOldValue: string;
|
||||
attributeNewValue: string;
|
||||
},
|
||||
@ -339,7 +339,7 @@ function updateFootnoteReferenceView(
|
||||
) {
|
||||
const { item, attributeNewValue: newIndex } = data;
|
||||
if (
|
||||
!( item instanceof Element ) ||
|
||||
!( item instanceof ModelElement ) ||
|
||||
!conversionApi.consumable.consume( item, `attribute:${ ATTRIBUTES.footnoteIndex }:${ ELEMENTS.footnoteReference }` )
|
||||
) {
|
||||
return;
|
||||
|
||||
@ -11,7 +11,7 @@ import { defineSchema } from './schema.js';
|
||||
import { ATTRIBUTES, COMMANDS, ELEMENTS } from '../constants.js';
|
||||
import InsertFootnoteCommand from '../insert-footnote-command.js';
|
||||
import { modelQueryElement, modelQueryElementsAll } from '../utils.js';
|
||||
import { Autoformat, Batch, Element, Plugin, ModelRootElement, viewToModelPositionOutsideModelElement, Widget, Writer } from 'ckeditor5';
|
||||
import { Autoformat, Batch, ModelElement, Plugin, ModelRootElement, viewToModelPositionOutsideModelElement, Widget, Writer } from 'ckeditor5';
|
||||
|
||||
export default class FootnoteEditing extends Plugin {
|
||||
|
||||
@ -56,7 +56,7 @@ export default class FootnoteEditing extends Plugin {
|
||||
if ( diffItem.type === 'attribute' && diffItem.attributeKey === ATTRIBUTES.footnoteIndex ) {
|
||||
const { attributeNewValue: newFootnoteIndex } = diffItem;
|
||||
const footnote = [ ...diffItem.range.getItems() ].find( item => item.is( 'element', ELEMENTS.footnoteItem ) );
|
||||
const footnoteId = footnote instanceof Element && footnote.getAttribute( ATTRIBUTES.footnoteId );
|
||||
const footnoteId = footnote instanceof ModelElement && footnote.getAttribute( ATTRIBUTES.footnoteId );
|
||||
if ( !footnoteId ) {
|
||||
return;
|
||||
}
|
||||
@ -143,7 +143,7 @@ export default class FootnoteEditing extends Plugin {
|
||||
* batch these changes with the ones that instantiated them,
|
||||
* such that the set can be undone with a single action.
|
||||
*/
|
||||
private _clearContents( modelWriter: Writer, footnoteContent: Element ) {
|
||||
private _clearContents( modelWriter: Writer, footnoteContent: ModelElement ) {
|
||||
const contents = modelWriter.createRangeIn( footnoteContent );
|
||||
modelWriter.appendElement( 'paragraph', footnoteContent );
|
||||
modelWriter.remove( contents );
|
||||
@ -155,7 +155,7 @@ export default class FootnoteEditing extends Plugin {
|
||||
* which triggers the `updateReferenceIds` method. modelWriter is passed in to batch these changes with
|
||||
* the ones that instantiated them, such that the set can be undone with a single action.
|
||||
*/
|
||||
private _removeFootnote( modelWriter: Writer, footnote: Element ) {
|
||||
private _removeFootnote( modelWriter: Writer, footnote: ModelElement ) {
|
||||
// delete the current footnote and its references,
|
||||
// and renumber subsequent footnotes.
|
||||
if ( !this.editor ) {
|
||||
@ -185,7 +185,7 @@ export default class FootnoteEditing extends Plugin {
|
||||
// immediately deletes the footnote. This deliberately sets the new selection position
|
||||
// to avoid that.
|
||||
const neighborFootnote = index === 0 ? footnoteSection.getChild( index ) : footnoteSection.getChild( ( index ?? 0 ) - 1 );
|
||||
if ( !( neighborFootnote instanceof Element ) ) {
|
||||
if ( !( neighborFootnote instanceof ModelElement ) ) {
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
@ -1,4 +1,4 @@
|
||||
import { Command, type Element, type ModelRootElement, type Writer } from "ckeditor5";
|
||||
import { Command, type ModelElement, type ModelRootElement, type Writer } from "ckeditor5";
|
||||
|
||||
import { ATTRIBUTES, ELEMENTS } from './constants.js';
|
||||
import { modelQueryElement } from './utils.js';
|
||||
@ -82,7 +82,7 @@ export default class InsertFootnoteCommand extends Command {
|
||||
/**
|
||||
* Returns the footnote section if it exists, or creates on if it doesn't.
|
||||
*/
|
||||
private _getFootnoteSection( writer: Writer, rootElement: ModelRootElement ): Element {
|
||||
private _getFootnoteSection( writer: Writer, rootElement: ModelRootElement ): ModelElement {
|
||||
const footnoteSection = modelQueryElement( this.editor, rootElement, element =>
|
||||
element.is( 'element', ELEMENTS.footnoteSection )
|
||||
);
|
||||
|
||||
@ -1,4 +1,4 @@
|
||||
import { type Editor, Element, ModelText, ModelTextProxy, ViewElement } from 'ckeditor5';
|
||||
import { type Editor, ModelElement, ModelText, ModelTextProxy, ViewElement } from 'ckeditor5';
|
||||
|
||||
// There's ample DRY violation in this file; type checking
|
||||
// polymorphism without full typescript is just incredibly finicky.
|
||||
@ -11,14 +11,14 @@ import { type Editor, Element, ModelText, ModelTextProxy, ViewElement } from 'ck
|
||||
*/
|
||||
export const modelQueryElementsAll = (
|
||||
editor: Editor,
|
||||
rootElement: Element,
|
||||
predicate: ( item: Element ) => boolean = _ => true
|
||||
): Array<Element> => {
|
||||
rootElement: ModelElement,
|
||||
predicate: ( item: ModelElement ) => boolean = _ => true
|
||||
): Array<ModelElement> => {
|
||||
const range = editor.model.createRangeIn( rootElement );
|
||||
const output: Array<Element> = [];
|
||||
const output: Array<ModelElement> = [];
|
||||
|
||||
for ( const item of range.getItems() ) {
|
||||
if ( !( item instanceof Element ) ) {
|
||||
if ( !( item instanceof ModelElement ) ) {
|
||||
continue;
|
||||
}
|
||||
|
||||
@ -35,7 +35,7 @@ export const modelQueryElementsAll = (
|
||||
*/
|
||||
export const modelQueryTextAll = (
|
||||
editor: Editor,
|
||||
rootElement: Element,
|
||||
rootElement: ModelElement,
|
||||
predicate: ( item: ModelText | ModelTextProxy ) => boolean = _ => true
|
||||
): Array<ModelText | ModelTextProxy> => {
|
||||
const range = editor.model.createRangeIn( rootElement );
|
||||
@ -59,13 +59,13 @@ export const modelQueryTextAll = (
|
||||
*/
|
||||
export const modelQueryElement = (
|
||||
editor: Editor,
|
||||
rootElement: Element,
|
||||
predicate: ( item: Element ) => boolean = _ => true
|
||||
): Element | null => {
|
||||
rootElement: ModelElement,
|
||||
predicate: ( item: ModelElement ) => boolean = _ => true
|
||||
): ModelElement | null => {
|
||||
const range = editor.model.createRangeIn( rootElement );
|
||||
|
||||
for ( const item of range.getItems() ) {
|
||||
if ( !( item instanceof Element ) ) {
|
||||
if ( !( item instanceof ModelElement ) ) {
|
||||
continue;
|
||||
}
|
||||
|
||||
@ -82,7 +82,7 @@ export const modelQueryElement = (
|
||||
*/
|
||||
export const modelQueryText = (
|
||||
editor: Editor,
|
||||
rootElement: Element,
|
||||
rootElement: ModelElement,
|
||||
predicate: ( item: ModelText | ModelTextProxy ) => boolean = _ => true
|
||||
): ModelText | ModelTextProxy | null => {
|
||||
const range = editor.model.createRangeIn( rootElement );
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user