mirror of
https://github.com/TriliumNext/Notes.git
synced 2025-07-27 18:12:29 +08:00
chore(ckeditor5-math): integrate source code
This commit is contained in:
parent
ee6e111a85
commit
5d42b942ba
@ -1,37 +0,0 @@
|
|||||||
import Math from './math';
|
|
||||||
import MathCommand from './mathcommand';
|
|
||||||
import MathEditing from './mathediting';
|
|
||||||
import MathUI from './mathui';
|
|
||||||
import type { KatexOptions } from './typings-external';
|
|
||||||
|
|
||||||
declare module '@ckeditor/ckeditor5-core' {
|
|
||||||
|
|
||||||
interface PluginsMap {
|
|
||||||
[ Math.pluginName ]: Math;
|
|
||||||
[ MathEditing.pluginName ]: MathEditing;
|
|
||||||
[ MathUI.pluginName ]: MathUI;
|
|
||||||
}
|
|
||||||
|
|
||||||
interface CommandsMap {
|
|
||||||
math: MathCommand;
|
|
||||||
}
|
|
||||||
|
|
||||||
interface EditorConfig {
|
|
||||||
math?: {
|
|
||||||
engine?:
|
|
||||||
| 'mathjax'
|
|
||||||
| 'katex'
|
|
||||||
| ( ( equation: string, element: HTMLElement, display: boolean ) => void )
|
|
||||||
| undefined;
|
|
||||||
lazyLoad?: undefined | ( () => Promise<void> );
|
|
||||||
outputType?: 'script' | 'span' | undefined;
|
|
||||||
className?: string | undefined;
|
|
||||||
forceOutputType?: boolean | undefined;
|
|
||||||
enablePreview?: boolean | undefined;
|
|
||||||
previewClassName?: Array<string> | undefined;
|
|
||||||
popupClassName?: Array<string> | undefined;
|
|
||||||
katexRenderOptions?: Partial<KatexOptions> | undefined;
|
|
||||||
};
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
@ -1,8 +0,0 @@
|
|||||||
/**
|
|
||||||
* @module math
|
|
||||||
*/
|
|
||||||
|
|
||||||
export { default as Math } from './math';
|
|
||||||
export { default as AutoformatMath } from './autoformatmath';
|
|
||||||
|
|
||||||
import "./augmentation.js";
|
|
@ -1,16 +0,0 @@
|
|||||||
import { Plugin } from 'ckeditor5/src/core';
|
|
||||||
import { Widget } from 'ckeditor5/src/widget';
|
|
||||||
|
|
||||||
import MathUI from './mathui';
|
|
||||||
import MathEditing from './mathediting';
|
|
||||||
import AutoMath from './automath';
|
|
||||||
|
|
||||||
export default class Math extends Plugin {
|
|
||||||
public static get requires() {
|
|
||||||
return [ MathEditing, MathUI, AutoMath, Widget ] as const;
|
|
||||||
}
|
|
||||||
|
|
||||||
public static get pluginName() {
|
|
||||||
return 'Math' as const;
|
|
||||||
}
|
|
||||||
}
|
|
4
_regroup/ckeditor5-math/typings/svg.d.ts
vendored
4
_regroup/ckeditor5-math/typings/svg.d.ts
vendored
@ -1,4 +0,0 @@
|
|||||||
declare module '*.svg' {
|
|
||||||
const src: string;
|
|
||||||
export default src;
|
|
||||||
}
|
|
@ -1,7 +1,35 @@
|
|||||||
import type { Math } from './index.js';
|
import type Math from './math.js';
|
||||||
|
import MathCommand from './mathcommand.js';
|
||||||
|
import MathEditing from './mathediting.js';
|
||||||
|
import MathUI from './mathui.js';
|
||||||
|
import { KatexOptions } from './typings-external.js';
|
||||||
|
|
||||||
declare module 'ckeditor5' {
|
declare module 'ckeditor5' {
|
||||||
interface PluginsMap {
|
interface PluginsMap {
|
||||||
[ Math.pluginName ]: Math;
|
[ Math.pluginName ]: Math;
|
||||||
|
[ MathEditing.pluginName ]: MathEditing;
|
||||||
|
[ MathUI.pluginName ]: MathUI;
|
||||||
|
}
|
||||||
|
|
||||||
|
interface CommandsMap {
|
||||||
|
math: MathCommand;
|
||||||
|
}
|
||||||
|
|
||||||
|
interface EditorConfig {
|
||||||
|
math?: {
|
||||||
|
engine?:
|
||||||
|
| 'mathjax'
|
||||||
|
| 'katex'
|
||||||
|
| ( ( equation: string, element: HTMLElement, display: boolean ) => void )
|
||||||
|
| undefined;
|
||||||
|
lazyLoad?: undefined | ( () => Promise<void> );
|
||||||
|
outputType?: 'script' | 'span' | undefined;
|
||||||
|
className?: string | undefined;
|
||||||
|
forceOutputType?: boolean | undefined;
|
||||||
|
enablePreview?: boolean | undefined;
|
||||||
|
previewClassName?: Array<string> | undefined;
|
||||||
|
popupClassName?: Array<string> | undefined;
|
||||||
|
katexRenderOptions?: Partial<KatexOptions> | undefined;
|
||||||
|
};
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,10 +1,8 @@
|
|||||||
import { Plugin } from 'ckeditor5/src/core';
|
import { Plugin, logWarning, blockAutoformatEditing } from 'ckeditor5';
|
||||||
import { global, logWarning } from 'ckeditor5/src/utils';
|
|
||||||
// eslint-disable-next-line ckeditor5-rules/allow-imports-only-from-main-package-entry-point
|
// eslint-disable-next-line ckeditor5-rules/allow-imports-only-from-main-package-entry-point
|
||||||
import blockAutoformatEditing from '@ckeditor/ckeditor5-autoformat/src/blockautoformatediting';
|
import Math from './math.js';
|
||||||
import Math from './math';
|
import MathCommand from './mathcommand.js';
|
||||||
import MathCommand from './mathcommand';
|
import MathUI from './mathui.js';
|
||||||
import MathUI from './mathui';
|
|
||||||
|
|
||||||
export default class AutoformatMath extends Plugin {
|
export default class AutoformatMath extends Plugin {
|
||||||
public static get requires() {
|
public static get requires() {
|
@ -1,9 +1,5 @@
|
|||||||
import { Clipboard } from 'ckeditor5/src/clipboard';
|
import { Clipboard, Plugin, type Editor, LivePosition, LiveRange, Undo } from 'ckeditor5';
|
||||||
import { Plugin, type Editor } from 'ckeditor5/src/core';
|
import { extractDelimiters, hasDelimiters, delimitersCounts } from './utils.js';
|
||||||
import { LivePosition, LiveRange } from 'ckeditor5/src/engine';
|
|
||||||
import { Undo } from 'ckeditor5/src/undo';
|
|
||||||
import { global } from 'ckeditor5/src/utils';
|
|
||||||
import { extractDelimiters, hasDelimiters, delimitersCounts } from './utils';
|
|
||||||
|
|
||||||
export default class AutoMath extends Plugin {
|
export default class AutoMath extends Plugin {
|
||||||
public static get requires() {
|
public static get requires() {
|
||||||
@ -73,7 +69,7 @@ export default class AutoMath extends Plugin {
|
|||||||
const editor = this.editor;
|
const editor = this.editor;
|
||||||
|
|
||||||
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
|
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
|
||||||
const mathConfig = this.editor.config.get( 'math' )!;
|
const mathConfig = this.editor.config.get( 'math' );
|
||||||
|
|
||||||
const equationRange = new LiveRange( leftPosition, rightPosition );
|
const equationRange = new LiveRange( leftPosition, rightPosition );
|
||||||
const walker = equationRange.getWalker( { ignoreElementEnd: true } );
|
const walker = equationRange.getWalker( { ignoreElementEnd: true } );
|
||||||
@ -119,7 +115,7 @@ export default class AutoMath extends Plugin {
|
|||||||
|
|
||||||
editor.model.change( innerWriter => {
|
editor.model.change( innerWriter => {
|
||||||
const params = Object.assign( extractDelimiters( text ), {
|
const params = Object.assign( extractDelimiters( text ), {
|
||||||
type: mathConfig.outputType
|
type: mathConfig?.outputType
|
||||||
} );
|
} );
|
||||||
const mathElement = innerWriter.createElement( params.display ? 'mathtex-display' : 'mathtex-inline', params
|
const mathElement = innerWriter.createElement( params.display ? 'mathtex-display' : 'mathtex-inline', params
|
||||||
);
|
);
|
@ -1,7 +1,9 @@
|
|||||||
import ckeditor from './../theme/icons/ckeditor.svg';
|
import ckeditor from './../theme/icons/ckeditor.svg';
|
||||||
import './augmentation.js';
|
import './augmentation.js';
|
||||||
|
import "../theme/mathform.css";
|
||||||
|
|
||||||
export { default as Math } from './math.js';
|
export { default as Math } from './math.js';
|
||||||
|
export { default as AutoformatMath } from './autoformatmath.js';
|
||||||
|
|
||||||
export const icons = {
|
export const icons = {
|
||||||
ckeditor
|
ckeditor
|
||||||
|
@ -1,39 +1,14 @@
|
|||||||
import { Plugin, ButtonView } from 'ckeditor5';
|
import { Plugin, Widget } from 'ckeditor5';
|
||||||
|
import MathEditing from './mathediting.js';
|
||||||
import ckeditor5Icon from '../theme/icons/ckeditor.svg';
|
import MathUI from './mathui.js';
|
||||||
|
import AutoMath from './automath.js';
|
||||||
|
|
||||||
export default class Math extends Plugin {
|
export default class Math extends Plugin {
|
||||||
|
public static get requires() {
|
||||||
|
return [ MathEditing, MathUI, AutoMath, Widget ] as const;
|
||||||
|
}
|
||||||
|
|
||||||
public static get pluginName() {
|
public static get pluginName() {
|
||||||
return 'Math' as const;
|
return 'Math' as const;
|
||||||
}
|
}
|
||||||
|
|
||||||
public init(): void {
|
|
||||||
const editor = this.editor;
|
|
||||||
const t = editor.t;
|
|
||||||
const model = editor.model;
|
|
||||||
|
|
||||||
// Register the "math" button, so it can be displayed in the toolbar.
|
|
||||||
editor.ui.componentFactory.add( 'math', locale => {
|
|
||||||
const view = new ButtonView( locale );
|
|
||||||
|
|
||||||
view.set( {
|
|
||||||
label: t( 'Math' ),
|
|
||||||
icon: ckeditor5Icon,
|
|
||||||
tooltip: true
|
|
||||||
} );
|
|
||||||
|
|
||||||
// Insert a text into the editor after clicking the button.
|
|
||||||
this.listenTo( view, 'execute', () => {
|
|
||||||
model.change( writer => {
|
|
||||||
const textNode = writer.createText( 'Hello CKEditor 5!' );
|
|
||||||
|
|
||||||
model.insertContent( textNode );
|
|
||||||
} );
|
|
||||||
|
|
||||||
editor.editing.view.focus();
|
|
||||||
} );
|
|
||||||
|
|
||||||
return view;
|
|
||||||
} );
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
import { Command } from 'ckeditor5/src/core';
|
import { Command } from 'ckeditor5';
|
||||||
import { getSelectedMathModelWidget } from './utils';
|
import { getSelectedMathModelWidget } from './utils.js';
|
||||||
|
|
||||||
export default class MathCommand extends Command {
|
export default class MathCommand extends Command {
|
||||||
public override value: string | null = null;
|
public override value: string | null = null;
|
@ -1,13 +1,6 @@
|
|||||||
import MathCommand from './mathcommand';
|
import MathCommand from './mathcommand.js';
|
||||||
import { type Editor, Plugin } from 'ckeditor5/src/core';
|
import { type Editor, Plugin, toWidget, Widget, viewToModelPositionOutsideModelElement, type DowncastWriter, type Element, CKEditorError, uid } from 'ckeditor5';
|
||||||
import {
|
import { renderEquation, extractDelimiters } from './utils.js';
|
||||||
toWidget,
|
|
||||||
Widget,
|
|
||||||
viewToModelPositionOutsideModelElement
|
|
||||||
} from 'ckeditor5/src/widget';
|
|
||||||
import { renderEquation, extractDelimiters } from './utils';
|
|
||||||
import type { DowncastWriter, Element } from 'ckeditor5/src/engine';
|
|
||||||
import { CKEditorError, uid } from 'ckeditor5/src/utils';
|
|
||||||
|
|
||||||
export default class MathEditing extends Plugin {
|
export default class MathEditing extends Plugin {
|
||||||
public static get requires() {
|
public static get requires() {
|
@ -1,16 +1,9 @@
|
|||||||
import MathEditing from './mathediting';
|
import MathEditing from './mathediting.js';
|
||||||
import MainFormView from './ui/mainformview';
|
import MainFormView from './ui/mainformview.js';
|
||||||
import mathIcon from '../theme/icons/math.svg';
|
import mathIcon from '../theme/icons/math.svg';
|
||||||
import { Plugin } from 'ckeditor5/src/core';
|
import { Plugin, ClickObserver, ButtonView, ContextualBalloon, clickOutsideHandler, CKEditorError, uid } from 'ckeditor5';
|
||||||
import { ClickObserver } from 'ckeditor5/src/engine';
|
import { getBalloonPositionData } from './utils.js';
|
||||||
import {
|
import MathCommand from './mathcommand.js';
|
||||||
ButtonView,
|
|
||||||
ContextualBalloon,
|
|
||||||
clickOutsideHandler
|
|
||||||
} from 'ckeditor5/src/ui';
|
|
||||||
import { CKEditorError, global, uid } from 'ckeditor5/src/utils';
|
|
||||||
import { getBalloonPositionData } from './utils';
|
|
||||||
import MathCommand from './mathcommand';
|
|
||||||
|
|
||||||
const mathKeystroke = 'Ctrl+M';
|
const mathKeystroke = 'Ctrl+M';
|
||||||
|
|
@ -1,22 +1,8 @@
|
|||||||
import { icons } from 'ckeditor5/src/core';
|
import { icons, ButtonView, createLabeledInputText, FocusCycler, LabelView, LabeledFieldView, submitHandler, SwitchButtonView, View, ViewCollection, type InputTextView, type FocusableView, Locale, FocusTracker, KeystrokeHandler } from 'ckeditor5';
|
||||||
import {
|
import { extractDelimiters, hasDelimiters } from '../utils.js';
|
||||||
ButtonView,
|
import MathView from './mathview.js';
|
||||||
createLabeledInputText,
|
|
||||||
FocusCycler,
|
|
||||||
LabelView,
|
|
||||||
LabeledFieldView,
|
|
||||||
submitHandler,
|
|
||||||
SwitchButtonView,
|
|
||||||
View,
|
|
||||||
ViewCollection,
|
|
||||||
type InputTextView,
|
|
||||||
type FocusableView
|
|
||||||
} from 'ckeditor5/src/ui';
|
|
||||||
import { Locale, FocusTracker, KeystrokeHandler } from 'ckeditor5/src/utils';
|
|
||||||
import { extractDelimiters, hasDelimiters } from '../utils';
|
|
||||||
import MathView from './mathview';
|
|
||||||
import '../../theme/mathform.css';
|
import '../../theme/mathform.css';
|
||||||
import type { KatexOptions } from '../typings-external';
|
import type { KatexOptions } from '../typings-external.js';
|
||||||
|
|
||||||
const { check: checkIcon, cancel: cancelIcon } = icons;
|
const { check: checkIcon, cancel: cancelIcon } = icons;
|
||||||
|
|
@ -1,7 +1,6 @@
|
|||||||
import { View } from 'ckeditor5/src/ui';
|
import { View, type Locale } from 'ckeditor5';
|
||||||
import type { KatexOptions } from '../typings-external';
|
import type { KatexOptions } from '../typings-external.js';
|
||||||
import { renderEquation } from '../utils';
|
import { renderEquation } from '../utils.js';
|
||||||
import type { Locale } from 'ckeditor5/src/utils';
|
|
||||||
|
|
||||||
export default class MathView extends View {
|
export default class MathView extends View {
|
||||||
public declare value: string;
|
public declare value: string;
|
@ -1,11 +1,6 @@
|
|||||||
import type { Editor } from 'ckeditor5/src/core';
|
import type { Editor, Element as CKElement, DocumentSelection, PositioningFunction } from 'ckeditor5';
|
||||||
import type {
|
import { BalloonPanelView, CKEditorError } from 'ckeditor5';
|
||||||
Element as CKElement,
|
import type { KatexOptions, MathJax2, MathJax3 } from './typings-external.js';
|
||||||
DocumentSelection
|
|
||||||
} from 'ckeditor5/src/engine';
|
|
||||||
import { BalloonPanelView } from 'ckeditor5/src/ui';
|
|
||||||
import { CKEditorError, type PositioningFunction } from 'ckeditor5/src/utils';
|
|
||||||
import type { KatexOptions, MathJax2, MathJax3 } from './typings-external';
|
|
||||||
|
|
||||||
export function getSelectedMathModelWidget(
|
export function getSelectedMathModelWidget(
|
||||||
selection: DocumentSelection
|
selection: DocumentSelection
|
@ -1 +0,0 @@
|
|||||||
<svg width='68' height='64' viewBox='0 0 68 64' xmlns='http://www.w3.org/2000/svg'><g fill='none' fill-rule='evenodd'><path d='M43.71 11.025a11.508 11.508 0 0 0-1.213 5.159c0 6.42 5.244 11.625 11.713 11.625.083 0 .167 0 .25-.002v16.282a5.464 5.464 0 0 1-2.756 4.739L30.986 60.7a5.548 5.548 0 0 1-5.512 0L4.756 48.828A5.464 5.464 0 0 1 2 44.089V20.344c0-1.955 1.05-3.76 2.756-4.738L25.474 3.733a5.548 5.548 0 0 1 5.512 0l12.724 7.292z' fill='#FFF'/><path d='M45.684 8.79a12.604 12.604 0 0 0-1.329 5.65c0 7.032 5.744 12.733 12.829 12.733.091 0 .183-.001.274-.003v17.834a5.987 5.987 0 0 1-3.019 5.19L31.747 63.196a6.076 6.076 0 0 1-6.037 0L3.02 50.193A5.984 5.984 0 0 1 0 45.003V18.997c0-2.14 1.15-4.119 3.019-5.19L25.71.804a6.076 6.076 0 0 1 6.037 0L45.684 8.79zm-29.44 11.89c-.834 0-1.51.671-1.51 1.498v.715c0 .828.676 1.498 1.51 1.498h25.489c.833 0 1.51-.67 1.51-1.498v-.715c0-.827-.677-1.498-1.51-1.498h-25.49.001zm0 9.227c-.834 0-1.51.671-1.51 1.498v.715c0 .828.676 1.498 1.51 1.498h18.479c.833 0 1.509-.67 1.509-1.498v-.715c0-.827-.676-1.498-1.51-1.498H16.244zm0 9.227c-.834 0-1.51.671-1.51 1.498v.715c0 .828.676 1.498 1.51 1.498h25.489c.833 0 1.51-.67 1.51-1.498v-.715c0-.827-.677-1.498-1.51-1.498h-25.49.001zm41.191-14.459c-5.835 0-10.565-4.695-10.565-10.486 0-5.792 4.73-10.487 10.565-10.487C63.27 3.703 68 8.398 68 14.19c0 5.791-4.73 10.486-10.565 10.486v-.001z' fill='#1EBC61' fill-rule='nonzero'/><path d='M60.857 15.995c0-.467-.084-.875-.251-1.225a2.547 2.547 0 0 0-.686-.88 2.888 2.888 0 0 0-1.026-.531 4.418 4.418 0 0 0-1.259-.175c-.134 0-.283.006-.447.018-.15.01-.3.034-.446.07l.075-1.4h3.587v-1.8h-5.462l-.214 5.06c.319-.116.682-.21 1.089-.28.406-.071.77-.107 1.088-.107.218 0 .437.021.655.063.218.041.413.114.585.218s.313.244.422.419c.109.175.163.391.163.65 0 .424-.132.745-.396.961a1.434 1.434 0 0 1-.938.325c-.352 0-.656-.1-.912-.3-.256-.2-.43-.453-.523-.762l-1.925.588c.1.35.258.664.472.943.214.279.47.514.767.706.298.191.63.339.995.443.365.104.749.156 1.151.156.437 0 .86-.064 1.272-.193.41-.13.778-.323 1.1-.581a2.8 2.8 0 0 0 .775-.981c.193-.396.29-.864.29-1.405h-.001z' fill='#FFF' fill-rule='nonzero'/></g></svg>
|
|
Before Width: | Height: | Size: 2.1 KiB |
Before Width: | Height: | Size: 2.7 KiB After Width: | Height: | Size: 2.7 KiB |
Loading…
x
Reference in New Issue
Block a user