mirror of
				https://github.com/TriliumNext/Notes.git
				synced 2025-10-31 21:11:30 +08:00 
			
		
		
		
	chore(ckeditor5/plugins): integrate reference link
This commit is contained in:
		
							parent
							
								
									a54d8ed811
								
							
						
					
					
						commit
						2dcd37001f
					
				| @ -20,5 +20,8 @@ | |||||||
|   }, |   }, | ||||||
|   "dependencies": { |   "dependencies": { | ||||||
|     "ckeditor5": "43.2.0" |     "ckeditor5": "43.2.0" | ||||||
|  |   }, | ||||||
|  |   "devDependencies": { | ||||||
|  |     "@types/jquery": "3.5.32" | ||||||
|   } |   } | ||||||
| } | } | ||||||
|  | |||||||
| @ -1,14 +1,22 @@ | |||||||
| import "ckeditor5"; | import "ckeditor5"; | ||||||
| 
 | 
 | ||||||
| declare global { | declare global { | ||||||
|     var glob: { |     interface Component { | ||||||
|         getComponentByEl(el: unknown): { |  | ||||||
|         triggerCommand(command: string): void; |         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(): { |         getActiveContextNote(): { | ||||||
|             noteId: string; |             noteId: string; | ||||||
|         }; |         }; | ||||||
|         getHeaders(): Promise<Record<string, 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 ItalicAsEmPlugin from "./plugins/italic_as_em.js"; | ||||||
| import StrikethroughAsDel from "./plugins/strikethrough_as_del.js"; | import StrikethroughAsDel from "./plugins/strikethrough_as_del.js"; | ||||||
| import InternalLinkPlugin from "./plugins/internallink.js"; | import InternalLinkPlugin from "./plugins/internallink.js"; | ||||||
|  | import ReferenceLink from "./plugins/referencelink.js"; | ||||||
| 
 | 
 | ||||||
| const TRILIUM_PLUGINS: typeof Plugin[] = [ | const TRILIUM_PLUGINS: typeof Plugin[] = [ | ||||||
|     CutToNotePlugin, |     CutToNotePlugin, | ||||||
|     ItalicAsEmPlugin, |     ItalicAsEmPlugin, | ||||||
| 	StrikethroughAsDel, | 	StrikethroughAsDel, | ||||||
|  |     ReferenceLink, | ||||||
|     UploadimagePlugin, |     UploadimagePlugin, | ||||||
|     InternalLinkPlugin |     InternalLinkPlugin | ||||||
| ]; | ]; | ||||||
| @ -71,7 +73,6 @@ export const COMMON_PLUGINS: typeof Plugin[] = [ | |||||||
| 	// MarkdownImportPlugin,
 | 	// MarkdownImportPlugin,
 | ||||||
| 	// MentionCustomization,
 | 	// MentionCustomization,
 | ||||||
| 	// IncludeNote,
 | 	// IncludeNote,
 | ||||||
| 	// ReferenceLink,
 |  | ||||||
| 	// indentBlockShortcutPlugin,
 | 	// indentBlockShortcutPlugin,
 | ||||||
| 	// removeFormatLinksPlugin,
 | 	// removeFormatLinksPlugin,
 | ||||||
| 	PageBreak, | 	PageBreak, | ||||||
|  | |||||||
| @ -1,7 +1,13 @@ | |||||||
| import { ButtonView, Plugin } from 'ckeditor5'; | import { ButtonView, Plugin } from 'ckeditor5'; | ||||||
| import internalLinkIcon from '../icons/trilium.svg?raw'; | import internalLinkIcon from '../icons/trilium.svg?raw'; | ||||||
|  | import ReferenceLink from './referencelink'; | ||||||
| 
 | 
 | ||||||
| export default class InternalLinkPlugin extends Plugin { | export default class InternalLinkPlugin extends Plugin { | ||||||
|  | 
 | ||||||
|  |     static get requires() { | ||||||
|  |         return [ ReferenceLink ]; | ||||||
|  |     } | ||||||
|  | 
 | ||||||
| 	init() { | 	init() { | ||||||
| 		const editor = this.editor; | 		const editor = this.editor; | ||||||
| 
 | 
 | ||||||
|  | |||||||
| @ -1,7 +1,4 @@ | |||||||
| import Plugin from '@ckeditor/ckeditor5-core/src/plugin'; | import { Command, Element, Plugin, toWidget, viewToModelPositionOutsideModelElement, Widget } from "ckeditor5"; | ||||||
| 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'; |  | ||||||
| 
 | 
 | ||||||
| export default class ReferenceLink extends Plugin { | export default class ReferenceLink extends Plugin { | ||||||
| 	static get requires() { | 	static get requires() { | ||||||
| @ -10,7 +7,8 @@ export default class ReferenceLink extends Plugin { | |||||||
| } | } | ||||||
| 
 | 
 | ||||||
| class ReferenceLinkCommand extends Command { | class ReferenceLinkCommand extends Command { | ||||||
| 	execute( { href } ) { | 
 | ||||||
|  | 	execute({ href }: { href: string }) { | ||||||
| 		if (!href?.trim()) { | 		if (!href?.trim()) { | ||||||
| 			return; | 			return; | ||||||
| 		} | 		} | ||||||
| @ -34,8 +32,7 @@ class ReferenceLinkCommand extends Command { | |||||||
| 	refresh() { | 	refresh() { | ||||||
| 		const model = this.editor.model; | 		const model = this.editor.model; | ||||||
| 		const selection = model.document.selection; | 		const selection = model.document.selection; | ||||||
| 
 |         this.isEnabled = selection.focus !== null && model.schema.checkChild(selection.focus.parent as Element, 'reference'); | ||||||
| 		this.isEnabled = model.schema.checkChild(selection.focus.parent, 'reference'); |  | ||||||
| 	} | 	} | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| @ -92,7 +89,7 @@ class ReferenceLinkEditing extends Plugin { | |||||||
| 		conversion.for( 'editingDowncast' ).elementToElement( { | 		conversion.for( 'editingDowncast' ).elementToElement( { | ||||||
| 			model: 'reference', | 			model: 'reference', | ||||||
| 			view: ( modelItem, { writer: viewWriter } ) => { | 			view: ( modelItem, { writer: viewWriter } ) => { | ||||||
| 				const href = modelItem.getAttribute( 'href' ); | 				const href = modelItem.getAttribute('href') as string; | ||||||
| 
 | 
 | ||||||
| 				const referenceLinkView = viewWriter.createContainerElement( 'a', { | 				const referenceLinkView = viewWriter.createContainerElement( 'a', { | ||||||
| 						href, | 						href, | ||||||
| @ -106,7 +103,7 @@ class ReferenceLinkEditing extends Plugin { | |||||||
| 					const domElement = this.toDomElement( domDocument ); | 					const domElement = this.toDomElement( domDocument ); | ||||||
| 
 | 
 | ||||||
| 					const editorEl = editor.editing.view.getDomRoot(); | 					const editorEl = editor.editing.view.getDomRoot(); | ||||||
| 					const component = glob.getComponentByEl(editorEl); | 					const component = glob.getComponentByEl<EditorComponent>(editorEl); | ||||||
| 
 | 
 | ||||||
| 					component.loadReferenceLinkTitle($(domElement), href); | 					component.loadReferenceLinkTitle($(domElement), href); | ||||||
| 
 | 
 | ||||||
| @ -123,7 +120,7 @@ class ReferenceLinkEditing extends Plugin { | |||||||
| 		conversion.for( 'dataDowncast' ).elementToElement( { | 		conversion.for( 'dataDowncast' ).elementToElement( { | ||||||
| 			model: 'reference', | 			model: 'reference', | ||||||
| 			view: ( modelItem, { writer: viewWriter } ) => { | 			view: ( modelItem, { writer: viewWriter } ) => { | ||||||
| 				const href = modelItem.getAttribute( 'href' ); | 				const href = modelItem.getAttribute('href') as string; | ||||||
| 
 | 
 | ||||||
| 				const referenceLinkView = viewWriter.createContainerElement( 'a', { | 				const referenceLinkView = viewWriter.createContainerElement( 'a', { | ||||||
| 					href: href, | 					href: href, | ||||||
| @ -11,7 +11,8 @@ | |||||||
|     "forceConsistentCasingInFileNames": true, |     "forceConsistentCasingInFileNames": true, | ||||||
|     "lib": ["DOM", "ES2015"], |     "lib": ["DOM", "ES2015"], | ||||||
|     "types": [ |     "types": [ | ||||||
|       "vite/client" |       "vite/client", | ||||||
|  |       "jquery" | ||||||
|     ] |     ] | ||||||
|   }, |   }, | ||||||
|   "include": [ |   "include": [ | ||||||
|  | |||||||
							
								
								
									
										24
									
								
								pnpm-lock.yaml
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										24
									
								
								pnpm-lock.yaml
									
									
									
										generated
									
									
									
								
							| @ -374,7 +374,7 @@ importers: | |||||||
|         version: 1.0.2 |         version: 1.0.2 | ||||||
|       copy-webpack-plugin: |       copy-webpack-plugin: | ||||||
|         specifier: 13.0.0 |         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: |       electron: | ||||||
|         specifier: 35.2.2 |         specifier: 35.2.2 | ||||||
|         version: 35.2.2 |         version: 35.2.2 | ||||||
| @ -430,7 +430,7 @@ importers: | |||||||
|         version: 11.0.4 |         version: 11.0.4 | ||||||
|       copy-webpack-plugin: |       copy-webpack-plugin: | ||||||
|         specifier: 13.0.0 |         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: |       electron: | ||||||
|         specifier: 35.2.2 |         specifier: 35.2.2 | ||||||
|         version: 35.2.2 |         version: 35.2.2 | ||||||
| @ -608,7 +608,7 @@ importers: | |||||||
|         version: 1.4.7 |         version: 1.4.7 | ||||||
|       copy-webpack-plugin: |       copy-webpack-plugin: | ||||||
|         specifier: 13.0.0 |         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: |       csrf-csrf: | ||||||
|         specifier: 3.2.2 |         specifier: 3.2.2 | ||||||
|         version: 3.2.2 |         version: 3.2.2 | ||||||
| @ -779,7 +779,7 @@ importers: | |||||||
|         version: 1.0.1 |         version: 1.0.1 | ||||||
|       webpack: |       webpack: | ||||||
|         specifier: 5.99.7 |         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: |       ws: | ||||||
|         specifier: 8.18.1 |         specifier: 8.18.1 | ||||||
|         version: 8.18.1(bufferutil@4.0.9)(utf-8-validate@6.0.5) |         version: 8.18.1(bufferutil@4.0.9)(utf-8-validate@6.0.5) | ||||||
| @ -801,6 +801,10 @@ importers: | |||||||
|       ckeditor5: |       ckeditor5: | ||||||
|         specifier: 43.2.0 |         specifier: 43.2.0 | ||||||
|         version: 43.2.0 |         version: 43.2.0 | ||||||
|  |     devDependencies: | ||||||
|  |       '@types/jquery': | ||||||
|  |         specifier: 3.5.32 | ||||||
|  |         version: 3.5.32 | ||||||
| 
 | 
 | ||||||
|   packages/commons: |   packages/commons: | ||||||
|     dependencies: |     dependencies: | ||||||
| @ -16953,14 +16957,14 @@ snapshots: | |||||||
|       serialize-javascript: 6.0.2 |       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) |       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: |     dependencies: | ||||||
|       glob-parent: 6.0.2 |       glob-parent: 6.0.2 | ||||||
|       normalize-path: 3.0.0 |       normalize-path: 3.0.0 | ||||||
|       schema-utils: 4.3.2 |       schema-utils: 4.3.2 | ||||||
|       serialize-javascript: 6.0.2 |       serialize-javascript: 6.0.2 | ||||||
|       tinyglobby: 0.2.13 |       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: |   core-js-compat@3.41.0: | ||||||
|     dependencies: |     dependencies: | ||||||
| @ -22879,14 +22883,14 @@ snapshots: | |||||||
|       '@swc/core': 1.5.29(@swc/helpers@0.5.17) |       '@swc/core': 1.5.29(@swc/helpers@0.5.17) | ||||||
|       esbuild: 0.25.3 |       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: |     dependencies: | ||||||
|       '@jridgewell/trace-mapping': 0.3.25 |       '@jridgewell/trace-mapping': 0.3.25 | ||||||
|       jest-worker: 27.5.1 |       jest-worker: 27.5.1 | ||||||
|       schema-utils: 4.3.2 |       schema-utils: 4.3.2 | ||||||
|       serialize-javascript: 6.0.2 |       serialize-javascript: 6.0.2 | ||||||
|       terser: 5.39.0 |       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: |     optionalDependencies: | ||||||
|       '@swc/core': 1.5.29(@swc/helpers@0.5.17) |       '@swc/core': 1.5.29(@swc/helpers@0.5.17) | ||||||
|       esbuild: 0.25.3 |       esbuild: 0.25.3 | ||||||
| @ -23668,7 +23672,7 @@ snapshots: | |||||||
|       - esbuild |       - esbuild | ||||||
|       - uglify-js |       - 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: |     dependencies: | ||||||
|       '@types/eslint-scope': 3.7.7 |       '@types/eslint-scope': 3.7.7 | ||||||
|       '@types/estree': 1.0.7 |       '@types/estree': 1.0.7 | ||||||
| @ -23691,7 +23695,7 @@ snapshots: | |||||||
|       neo-async: 2.6.2 |       neo-async: 2.6.2 | ||||||
|       schema-utils: 4.3.2 |       schema-utils: 4.3.2 | ||||||
|       tapable: 2.2.1 |       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 |       watchpack: 2.4.2 | ||||||
|       webpack-sources: 3.2.3 |       webpack-sources: 3.2.3 | ||||||
|     optionalDependencies: |     optionalDependencies: | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user
	 Elian Doran
						Elian Doran