diff --git a/packages/ckeditor5/package.json b/packages/ckeditor5/package.json index 5df27403c..87ad7b3f4 100644 --- a/packages/ckeditor5/package.json +++ b/packages/ckeditor5/package.json @@ -20,5 +20,8 @@ }, "dependencies": { "ckeditor5": "43.2.0" + }, + "devDependencies": { + "@types/jquery": "3.5.32" } } diff --git a/packages/ckeditor5/src/augmentation.ts b/packages/ckeditor5/src/augmentation.ts index b59659255..4c22bc498 100644 --- a/packages/ckeditor5/src/augmentation.ts +++ b/packages/ckeditor5/src/augmentation.ts @@ -1,14 +1,22 @@ import "ckeditor5"; declare global { + interface Component { + triggerCommand(command: string): void; + } + + interface EditorComponent extends Component { + loadReferenceLinkTitle($el: JQuery, href: string): Promise; + } + var glob: { - getComponentByEl(el: unknown): { - triggerCommand(command: string): void; - }; + getComponentByEl(el: unknown): T; getActiveContextNote(): { noteId: string; }; getHeaders(): Promise>; + getReferenceLinkTitle(href: string): Promise; + getReferenceLinkTitleSync(href: string): string; } } diff --git a/packages/ckeditor5/src/plugins.ts b/packages/ckeditor5/src/plugins.ts index 0fb1c7d0b..ef0f15e0e 100644 --- a/packages/ckeditor5/src/plugins.ts +++ b/packages/ckeditor5/src/plugins.ts @@ -5,11 +5,13 @@ import UploadimagePlugin from "./plugins/uploadimage.js"; import ItalicAsEmPlugin from "./plugins/italic_as_em.js"; import StrikethroughAsDel from "./plugins/strikethrough_as_del.js"; import InternalLinkPlugin from "./plugins/internallink.js"; +import ReferenceLink from "./plugins/referencelink.js"; const TRILIUM_PLUGINS: typeof Plugin[] = [ CutToNotePlugin, ItalicAsEmPlugin, StrikethroughAsDel, + ReferenceLink, UploadimagePlugin, InternalLinkPlugin ]; @@ -71,7 +73,6 @@ export const COMMON_PLUGINS: typeof Plugin[] = [ // MarkdownImportPlugin, // MentionCustomization, // IncludeNote, - // ReferenceLink, // indentBlockShortcutPlugin, // removeFormatLinksPlugin, PageBreak, diff --git a/packages/ckeditor5/src/plugins/internallink.ts b/packages/ckeditor5/src/plugins/internallink.ts index 16928d345..895de239a 100644 --- a/packages/ckeditor5/src/plugins/internallink.ts +++ b/packages/ckeditor5/src/plugins/internallink.ts @@ -1,7 +1,13 @@ import { ButtonView, Plugin } from 'ckeditor5'; import internalLinkIcon from '../icons/trilium.svg?raw'; +import ReferenceLink from './referencelink'; export default class InternalLinkPlugin extends Plugin { + + static get requires() { + return [ ReferenceLink ]; + } + init() { const editor = this.editor; diff --git a/_regroup/ckeditor5-build-trilium/packages/ckeditor5-build-trilium/src/referencelink.js b/packages/ckeditor5/src/plugins/referencelink.ts similarity index 85% rename from _regroup/ckeditor5-build-trilium/packages/ckeditor5-build-trilium/src/referencelink.js rename to packages/ckeditor5/src/plugins/referencelink.ts index 21b7b76cf..47662940b 100644 --- a/_regroup/ckeditor5-build-trilium/packages/ckeditor5-build-trilium/src/referencelink.js +++ b/packages/ckeditor5/src/plugins/referencelink.ts @@ -1,7 +1,4 @@ -import Plugin from '@ckeditor/ckeditor5-core/src/plugin'; -import { toWidget, viewToModelPositionOutsideModelElement } from '@ckeditor/ckeditor5-widget/src/utils'; -import Widget from '@ckeditor/ckeditor5-widget/src/widget'; -import Command from '@ckeditor/ckeditor5-core/src/command'; +import { Command, Element, Plugin, toWidget, viewToModelPositionOutsideModelElement, Widget } from "ckeditor5"; export default class ReferenceLink extends Plugin { static get requires() { @@ -10,7 +7,8 @@ export default class ReferenceLink extends Plugin { } class ReferenceLinkCommand extends Command { - execute( { href } ) { + + execute({ href }: { href: string }) { if (!href?.trim()) { return; } @@ -34,8 +32,7 @@ class ReferenceLinkCommand extends Command { refresh() { const model = this.editor.model; const selection = model.document.selection; - - this.isEnabled = model.schema.checkChild(selection.focus.parent, 'reference'); + this.isEnabled = selection.focus !== null && model.schema.checkChild(selection.focus.parent as Element, 'reference'); } } @@ -92,7 +89,7 @@ class ReferenceLinkEditing extends Plugin { conversion.for( 'editingDowncast' ).elementToElement( { model: 'reference', view: ( modelItem, { writer: viewWriter } ) => { - const href = modelItem.getAttribute( 'href' ); + const href = modelItem.getAttribute('href') as string; const referenceLinkView = viewWriter.createContainerElement( 'a', { href, @@ -106,7 +103,7 @@ class ReferenceLinkEditing extends Plugin { const domElement = this.toDomElement( domDocument ); const editorEl = editor.editing.view.getDomRoot(); - const component = glob.getComponentByEl(editorEl); + const component = glob.getComponentByEl(editorEl); component.loadReferenceLinkTitle($(domElement), href); @@ -123,7 +120,7 @@ class ReferenceLinkEditing extends Plugin { conversion.for( 'dataDowncast' ).elementToElement( { model: 'reference', view: ( modelItem, { writer: viewWriter } ) => { - const href = modelItem.getAttribute( 'href' ); + const href = modelItem.getAttribute('href') as string; const referenceLinkView = viewWriter.createContainerElement( 'a', { href: href, diff --git a/packages/ckeditor5/tsconfig.lib.json b/packages/ckeditor5/tsconfig.lib.json index 360e0c023..db3c5b036 100644 --- a/packages/ckeditor5/tsconfig.lib.json +++ b/packages/ckeditor5/tsconfig.lib.json @@ -11,7 +11,8 @@ "forceConsistentCasingInFileNames": true, "lib": ["DOM", "ES2015"], "types": [ - "vite/client" + "vite/client", + "jquery" ] }, "include": [ diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index f5dc6214e..755ff75db 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -374,7 +374,7 @@ importers: version: 1.0.2 copy-webpack-plugin: specifier: 13.0.0 - version: 13.0.0(webpack@5.99.7(@swc/core@1.5.29(@swc/helpers@0.5.17))(esbuild@0.25.3)(webpack-cli@6.0.1)) + version: 13.0.0(webpack@5.99.7(@swc/core@1.5.29(@swc/helpers@0.5.17))(esbuild@0.25.3)(webpack-cli@6.0.1(webpack@5.98.0))) electron: specifier: 35.2.2 version: 35.2.2 @@ -430,7 +430,7 @@ importers: version: 11.0.4 copy-webpack-plugin: specifier: 13.0.0 - version: 13.0.0(webpack@5.99.7(@swc/core@1.5.29(@swc/helpers@0.5.17))(esbuild@0.25.3)(webpack-cli@6.0.1)) + version: 13.0.0(webpack@5.99.7(@swc/core@1.5.29(@swc/helpers@0.5.17))(esbuild@0.25.3)(webpack-cli@6.0.1(webpack@5.98.0))) electron: specifier: 35.2.2 version: 35.2.2 @@ -608,7 +608,7 @@ importers: version: 1.4.7 copy-webpack-plugin: specifier: 13.0.0 - version: 13.0.0(webpack@5.99.7(@swc/core@1.5.29(@swc/helpers@0.5.17))(esbuild@0.25.3)(webpack-cli@6.0.1)) + version: 13.0.0(webpack@5.99.7(@swc/core@1.5.29(@swc/helpers@0.5.17))(esbuild@0.25.3)(webpack-cli@6.0.1(webpack@5.98.0))) csrf-csrf: specifier: 3.2.2 version: 3.2.2 @@ -779,7 +779,7 @@ importers: version: 1.0.1 webpack: specifier: 5.99.7 - version: 5.99.7(@swc/core@1.5.29(@swc/helpers@0.5.17))(esbuild@0.25.3)(webpack-cli@6.0.1) + version: 5.99.7(@swc/core@1.5.29(@swc/helpers@0.5.17))(esbuild@0.25.3)(webpack-cli@6.0.1(webpack@5.98.0)) ws: specifier: 8.18.1 version: 8.18.1(bufferutil@4.0.9)(utf-8-validate@6.0.5) @@ -801,6 +801,10 @@ importers: ckeditor5: specifier: 43.2.0 version: 43.2.0 + devDependencies: + '@types/jquery': + specifier: 3.5.32 + version: 3.5.32 packages/commons: dependencies: @@ -16953,14 +16957,14 @@ snapshots: serialize-javascript: 6.0.2 webpack: 5.98.0(@swc/core@1.5.29(@swc/helpers@0.5.17))(esbuild@0.25.3)(webpack-cli@6.0.1) - copy-webpack-plugin@13.0.0(webpack@5.99.7(@swc/core@1.5.29(@swc/helpers@0.5.17))(esbuild@0.25.3)(webpack-cli@6.0.1)): + copy-webpack-plugin@13.0.0(webpack@5.99.7(@swc/core@1.5.29(@swc/helpers@0.5.17))(esbuild@0.25.3)(webpack-cli@6.0.1(webpack@5.98.0))): dependencies: glob-parent: 6.0.2 normalize-path: 3.0.0 schema-utils: 4.3.2 serialize-javascript: 6.0.2 tinyglobby: 0.2.13 - webpack: 5.99.7(@swc/core@1.5.29(@swc/helpers@0.5.17))(esbuild@0.25.3)(webpack-cli@6.0.1) + webpack: 5.99.7(@swc/core@1.5.29(@swc/helpers@0.5.17))(esbuild@0.25.3)(webpack-cli@6.0.1(webpack@5.98.0)) core-js-compat@3.41.0: dependencies: @@ -22879,14 +22883,14 @@ snapshots: '@swc/core': 1.5.29(@swc/helpers@0.5.17) esbuild: 0.25.3 - terser-webpack-plugin@5.3.14(@swc/core@1.5.29(@swc/helpers@0.5.17))(esbuild@0.25.3)(webpack@5.99.7(@swc/core@1.5.29(@swc/helpers@0.5.17))(esbuild@0.25.3)(webpack-cli@6.0.1)): + terser-webpack-plugin@5.3.14(@swc/core@1.5.29(@swc/helpers@0.5.17))(esbuild@0.25.3)(webpack@5.99.7(@swc/core@1.5.29(@swc/helpers@0.5.17))(esbuild@0.25.3)(webpack-cli@6.0.1(webpack@5.98.0))): dependencies: '@jridgewell/trace-mapping': 0.3.25 jest-worker: 27.5.1 schema-utils: 4.3.2 serialize-javascript: 6.0.2 terser: 5.39.0 - webpack: 5.99.7(@swc/core@1.5.29(@swc/helpers@0.5.17))(esbuild@0.25.3)(webpack-cli@6.0.1) + webpack: 5.99.7(@swc/core@1.5.29(@swc/helpers@0.5.17))(esbuild@0.25.3)(webpack-cli@6.0.1(webpack@5.98.0)) optionalDependencies: '@swc/core': 1.5.29(@swc/helpers@0.5.17) esbuild: 0.25.3 @@ -23668,7 +23672,7 @@ snapshots: - esbuild - uglify-js - webpack@5.99.7(@swc/core@1.5.29(@swc/helpers@0.5.17))(esbuild@0.25.3)(webpack-cli@6.0.1): + webpack@5.99.7(@swc/core@1.5.29(@swc/helpers@0.5.17))(esbuild@0.25.3)(webpack-cli@6.0.1(webpack@5.98.0)): dependencies: '@types/eslint-scope': 3.7.7 '@types/estree': 1.0.7 @@ -23691,7 +23695,7 @@ snapshots: neo-async: 2.6.2 schema-utils: 4.3.2 tapable: 2.2.1 - terser-webpack-plugin: 5.3.14(@swc/core@1.5.29(@swc/helpers@0.5.17))(esbuild@0.25.3)(webpack@5.99.7(@swc/core@1.5.29(@swc/helpers@0.5.17))(esbuild@0.25.3)(webpack-cli@6.0.1)) + terser-webpack-plugin: 5.3.14(@swc/core@1.5.29(@swc/helpers@0.5.17))(esbuild@0.25.3)(webpack@5.99.7(@swc/core@1.5.29(@swc/helpers@0.5.17))(esbuild@0.25.3)(webpack-cli@6.0.1(webpack@5.98.0))) watchpack: 2.4.2 webpack-sources: 3.2.3 optionalDependencies: