mirror of
				https://github.com/TriliumNext/Notes.git
				synced 2025-10-31 13:01:31 +08:00 
			
		
		
		
	chore(ckeditor5/plugins): integrate reference link
This commit is contained in:
		
							parent
							
								
									a54d8ed811
								
							
						
					
					
						commit
						2dcd37001f
					
				| @ -20,5 +20,8 @@ | ||||
|   }, | ||||
|   "dependencies": { | ||||
|     "ckeditor5": "43.2.0" | ||||
|   }, | ||||
|   "devDependencies": { | ||||
|     "@types/jquery": "3.5.32" | ||||
|   } | ||||
| } | ||||
|  | ||||
| @ -1,14 +1,22 @@ | ||||
| import "ckeditor5"; | ||||
| 
 | ||||
| declare global { | ||||
|     var glob: { | ||||
|         getComponentByEl(el: unknown): { | ||||
|     interface Component { | ||||
|         triggerCommand(command: string): void; | ||||
|         }; | ||||
|     } | ||||
| 
 | ||||
|     interface EditorComponent extends Component { | ||||
|         loadReferenceLinkTitle($el: JQuery<HTMLElement>, href: string): Promise<void>; | ||||
|     } | ||||
| 
 | ||||
|     var glob: { | ||||
|         getComponentByEl<T extends Component>(el: unknown): T; | ||||
|         getActiveContextNote(): { | ||||
|             noteId: string; | ||||
|         }; | ||||
|         getHeaders(): Promise<Record<string, string>>; | ||||
|         getReferenceLinkTitle(href: string): Promise<string>; | ||||
|         getReferenceLinkTitleSync(href: string): string; | ||||
|     } | ||||
| } | ||||
| 
 | ||||
|  | ||||
| @ -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, | ||||
|  | ||||
| @ -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; | ||||
| 
 | ||||
|  | ||||
| @ -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<EditorComponent>(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, | ||||
| @ -11,7 +11,8 @@ | ||||
|     "forceConsistentCasingInFileNames": true, | ||||
|     "lib": ["DOM", "ES2015"], | ||||
|     "types": [ | ||||
|       "vite/client" | ||||
|       "vite/client", | ||||
|       "jquery" | ||||
|     ] | ||||
|   }, | ||||
|   "include": [ | ||||
|  | ||||
							
								
								
									
										24
									
								
								pnpm-lock.yaml
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										24
									
								
								pnpm-lock.yaml
									
									
									
										generated
									
									
									
								
							| @ -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: | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user
	 Elian Doran
						Elian Doran