@milkdown/crepe 7.15.5 → 7.17.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/cjs/feature/block-edit/index.js.map +1 -1
- package/lib/cjs/feature/code-mirror/index.js +27 -22
- package/lib/cjs/feature/code-mirror/index.js.map +1 -1
- package/lib/cjs/feature/cursor/index.js +1 -1
- package/lib/cjs/feature/cursor/index.js.map +1 -1
- package/lib/cjs/feature/latex/index.js +2 -2
- package/lib/cjs/feature/latex/index.js.map +1 -1
- package/lib/cjs/feature/toolbar/index.js.map +1 -1
- package/lib/cjs/index.js +30 -25
- package/lib/cjs/index.js.map +1 -1
- package/lib/esm/feature/block-edit/index.js.map +1 -1
- package/lib/esm/feature/code-mirror/index.js +27 -22
- package/lib/esm/feature/code-mirror/index.js.map +1 -1
- package/lib/esm/feature/cursor/index.js +2 -2
- package/lib/esm/feature/cursor/index.js.map +1 -1
- package/lib/esm/feature/latex/index.js +2 -2
- package/lib/esm/feature/latex/index.js.map +1 -1
- package/lib/esm/feature/toolbar/index.js.map +1 -1
- package/lib/esm/index.js +31 -26
- package/lib/esm/index.js.map +1 -1
- package/lib/tsconfig.tsbuildinfo +1 -1
- package/lib/types/feature/block-edit/handle/component.d.ts +2 -1
- package/lib/types/feature/block-edit/handle/component.d.ts.map +1 -1
- package/lib/types/feature/block-edit/handle/index.d.ts +0 -8
- package/lib/types/feature/block-edit/handle/index.d.ts.map +1 -1
- package/lib/types/feature/block-edit/menu/index.d.ts +2 -1
- package/lib/types/feature/block-edit/menu/index.d.ts.map +1 -1
- package/lib/types/feature/code-mirror/index.d.ts +2 -15
- package/lib/types/feature/code-mirror/index.d.ts.map +1 -1
- package/lib/types/feature/toolbar/config.d.ts +5 -1
- package/lib/types/feature/toolbar/config.d.ts.map +1 -1
- package/lib/types/utils/group-builder.d.ts +1 -1
- package/lib/types/utils/group-builder.d.ts.map +1 -1
- package/package.json +3 -6
- package/src/feature/block-edit/handle/component.tsx +1 -1
- package/src/feature/block-edit/handle/index.ts +1 -1
- package/src/feature/block-edit/menu/index.ts +1 -1
- package/src/feature/code-mirror/index.ts +6 -23
- package/src/feature/cursor/index.ts +2 -2
- package/src/feature/latex/index.ts +2 -2
- package/src/utils/group-builder.ts +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../../../src/core/slice.ts","../../../../src/feature/index.ts","../../../../src/icons/bullet-list.ts","../../../../src/icons/code.ts","../../../../src/icons/divider.ts","../../../../src/icons/h1.ts","../../../../src/icons/h2.ts","../../../../src/icons/h3.ts","../../../../src/icons/h4.ts","../../../../src/icons/h5.ts","../../../../src/icons/h6.ts","../../../../src/icons/image.ts","../../../../src/icons/menu.ts","../../../../src/icons/ordered-list.ts","../../../../src/icons/plus.ts","../../../../src/icons/quote.ts","../../../../src/icons/table.ts","../../../../src/icons/text.ts","../../../../src/icons/todo-list.ts","../../../../src/icons/functions.ts","../../../../src/utils/checker.ts","../../../../src/utils/group-builder.ts","../../../../src/feature/block-edit/menu/config.ts","../../../../src/feature/block-edit/menu/component.tsx","../../../../src/feature/block-edit/menu/index.ts","../../../../src/feature/block-edit/handle/component.tsx","../../../../src/feature/block-edit/handle/index.ts","../../../../src/feature/block-edit/index.ts"],"sourcesContent":["import { createSlice, type Ctx } from '@milkdown/kit/ctx'\n\nimport type { CrepeFeature } from '../feature'\nimport type { CrepeBuilder } from './builder'\n\n/// @internal\n/// The feature flags context.\n/// ⚠️ Most of the time, you should use `useCrepeFeatures` to get the features.\nexport const FeaturesCtx = createSlice([] as CrepeFeature[], 'FeaturesCtx')\n\n/// @internal\n/// The crepe editor context.\n/// ⚠️ Most of the time, you should use `useCrepe` to get the crepe editor instance.\nexport const CrepeCtx = createSlice({} as CrepeBuilder, 'CrepeCtx')\n\n/// The crepe editor context.\n/// You can use this context to access the crepe editor instance within Milkdown plugins.\n/// ```ts\n/// import { crepeCtx } from '@milkdown/crepe'\n/// const plugin = (ctx: Ctx) => {\n/// return () => {\n/// const crepe = useCrepe(ctx)\n/// crepe.setReadonly(true)\n/// }\n/// }\n/// ```\nexport function useCrepe(ctx: Ctx) {\n // We should use string slice here to avoid the slice to be bundled in multiple entries\n return ctx.get<CrepeBuilder, 'CrepeCtx'>('CrepeCtx')\n}\n\n/// Check the enabled FeatureFlags\n/// ```ts\n/// import { useCrepeFeatures } from '@milkdown/crepe'\n/// const plugin = (ctx: Ctx) => {\n/// const features = useCrepeFeatures(ctx)\n/// if (features.get().includes(CrepeFeature.CodeMirror)) {\n/// // Do something with CodeMirror\n/// }\n/// }\nexport function useCrepeFeatures(ctx: Ctx) {\n // We should use string slice here to avoid the slice to be bundled in multiple entries\n return ctx.use<CrepeFeature[], 'FeaturesCtx'>('FeaturesCtx')\n}\n\n/// @internal\nexport function crepeFeatureConfig(feature: CrepeFeature) {\n return (ctx: Ctx) => {\n useCrepeFeatures(ctx).update((features) => {\n if (features.includes(feature)) {\n return features\n }\n return [...features, feature]\n })\n }\n}\n","import type { BlockEditFeatureConfig } from './block-edit'\nimport type { CodeMirrorFeatureConfig } from './code-mirror'\nimport type { CursorFeatureConfig } from './cursor'\nimport type { ImageBlockFeatureConfig } from './image-block'\nimport type { LatexFeatureConfig } from './latex'\nimport type { LinkTooltipFeatureConfig } from './link-tooltip'\nimport type { ListItemFeatureConfig } from './list-item'\nimport type { PlaceholderFeatureConfig } from './placeholder'\nimport type { TableFeatureConfig } from './table'\nimport type { ToolbarFeatureConfig } from './toolbar'\n\n/// The crepe editor feature flags.\n/// Every feature is enabled by default.\n/// Every feature is a string literal type.\nexport enum CrepeFeature {\n /// Syntax highlighting and editing for code blocks with language support, theme customization, and preview capabilities.\n CodeMirror = 'code-mirror',\n\n /// Support for bullet lists, ordered lists, and todo lists with customizable icons and formatting.\n ListItem = 'list-item',\n\n /// Enhanced link editing and preview with customizable tooltips, edit/remove actions, and copy functionality.\n LinkTooltip = 'link-tooltip',\n\n /// Enhanced cursor experience with drop cursor and gap cursor for better content placement.\n Cursor = 'cursor',\n\n /// Image upload and management with resizing, captions, and support for both inline and block images.\n ImageBlock = 'image-block',\n\n /// Drag-and-drop block management and slash commands for quick content insertion and organization.\n BlockEdit = 'block-edit',\n\n /// Formatting toolbar for selected text with customizable icons and actions.\n Toolbar = 'toolbar',\n\n /// Document or block level placeholders to guide users when content is empty.\n Placeholder = 'placeholder',\n\n /// Full-featured table editing with row/column management, alignment options, and drag-and-drop functionality.\n Table = 'table',\n\n /// Mathematical formula support with both inline and block math rendering using KaTeX.\n Latex = 'latex',\n}\n\nexport interface CrepeFeatureConfig {\n [CrepeFeature.Cursor]?: CursorFeatureConfig\n [CrepeFeature.ListItem]?: ListItemFeatureConfig\n [CrepeFeature.LinkTooltip]?: LinkTooltipFeatureConfig\n [CrepeFeature.ImageBlock]?: ImageBlockFeatureConfig\n [CrepeFeature.BlockEdit]?: BlockEditFeatureConfig\n [CrepeFeature.Placeholder]?: PlaceholderFeatureConfig\n [CrepeFeature.Toolbar]?: ToolbarFeatureConfig\n [CrepeFeature.CodeMirror]?: CodeMirrorFeatureConfig\n [CrepeFeature.Table]?: TableFeatureConfig\n [CrepeFeature.Latex]?: LatexFeatureConfig\n}\n\nexport const defaultFeatures: Record<CrepeFeature, boolean> = {\n [CrepeFeature.Cursor]: true,\n [CrepeFeature.ListItem]: true,\n [CrepeFeature.LinkTooltip]: true,\n [CrepeFeature.ImageBlock]: true,\n [CrepeFeature.BlockEdit]: true,\n [CrepeFeature.Placeholder]: true,\n [CrepeFeature.Toolbar]: true,\n [CrepeFeature.CodeMirror]: true,\n [CrepeFeature.Table]: true,\n [CrepeFeature.Latex]: true,\n}\n","export const bulletListIcon = `\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n >\n <g clip-path=\"url(#clip0_977_8070)\">\n <path\n d=\"M4 10.5C3.17 10.5 2.5 11.17 2.5 12C2.5 12.83 3.17 13.5 4 13.5C4.83 13.5 5.5 12.83 5.5 12C5.5 11.17 4.83 10.5 4 10.5ZM4 4.5C3.17 4.5 2.5 5.17 2.5 6C2.5 6.83 3.17 7.5 4 7.5C4.83 7.5 5.5 6.83 5.5 6C5.5 5.17 4.83 4.5 4 4.5ZM4 16.5C3.17 16.5 2.5 17.18 2.5 18C2.5 18.82 3.18 19.5 4 19.5C4.82 19.5 5.5 18.82 5.5 18C5.5 17.18 4.83 16.5 4 16.5ZM8 19H20C20.55 19 21 18.55 21 18C21 17.45 20.55 17 20 17H8C7.45 17 7 17.45 7 18C7 18.55 7.45 19 8 19ZM8 13H20C20.55 13 21 12.55 21 12C21 11.45 20.55 11 20 11H8C7.45 11 7 11.45 7 12C7 12.55 7.45 13 8 13ZM7 6C7 6.55 7.45 7 8 7H20C20.55 7 21 6.55 21 6C21 5.45 20.55 5 20 5H8C7.45 5 7 5.45 7 6Z\"\n />\n </g>\n <defs>\n <clipPath id=\"clip0_977_8070\">\n <rect width=\"24\" height=\"24\" />\n </clipPath>\n </defs>\n </svg>\n`\n","export const codeIcon = `\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n >\n <g clip-path=\"url(#clip0_977_8081)\">\n <path\n d=\"M9.4 16.6L4.8 12L9.4 7.4L8 6L2 12L8 18L9.4 16.6ZM14.6 16.6L19.2 12L14.6 7.4L16 6L22 12L16 18L14.6 16.6Z\"\n />\n </g>\n <defs>\n <clipPath id=\"clip0_977_8081\">\n <rect width=\"24\" height=\"24\" />\n </clipPath>\n </defs>\n </svg>\n`\n","export const dividerIcon = `\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n >\n <g clip-path=\"url(#clip0_977_7900)\">\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M19 13H5C4.45 13 4 12.55 4 12C4 11.45 4.45 11 5 11H19C19.55 11 20 11.45 20 12C20 12.55 19.55 13 19 13Z\"\n />\n </g>\n <defs>\n <clipPath id=\"clip0_977_7900\">\n <rect width=\"24\" height=\"24\" />\n </clipPath>\n </defs>\n </svg>\n`\n","export const h1Icon = `\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n >\n <g clip-path=\"url(#clip0_992_5553)\">\n <path\n d=\"M19 3H5C3.9 3 3 3.9 3 5V19C3 20.1 3.9 21 5 21H19C20.1 21 21 20.1 21 19V5C21 3.9 20.1 3 19 3ZM19 19H5V5H19V19ZM12 17H14V7H10V9H12V17Z\"\n />\n </g>\n <defs>\n <clipPath id=\"clip0_992_5553\">\n <rect width=\"24\" height=\"24\" />\n </clipPath>\n </defs>\n </svg>\n`\n","export const h2Icon = `\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n >\n <g clip-path=\"url(#clip0_992_5559)\">\n <path\n d=\"M19 3H5C3.9 3 3 3.9 3 5V19C3 20.1 3.9 21 5 21H19C20.1 21 21 20.1 21 19V5C21 3.9 20.1 3 19 3ZM19 19H5V5H19V19ZM15 15H11V13H13C14.1 13 15 12.11 15 11V9C15 7.89 14.1 7 13 7H9V9H13V11H11C9.9 11 9 11.89 9 13V17H15V15Z\"\n />\n </g>\n <defs>\n <clipPath id=\"clip0_992_5559\">\n <rect width=\"24\" height=\"24\" />\n </clipPath>\n </defs>\n </svg>\n`\n","export const h3Icon = `\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n >\n <g clip-path=\"url(#clip0_992_5565)\">\n <path\n d=\"M19 3H5C3.9 3 3 3.9 3 5V19C3 20.1 3.9 21 5 21H19C20.1 21 21 20.1 21 19V5C21 3.9 20.1 3 19 3ZM19 19H5V5H19V19ZM15 15V13.5C15 12.67 14.33 12 13.5 12C14.33 12 15 11.33 15 10.5V9C15 7.89 14.1 7 13 7H9V9H13V11H11V13H13V15H9V17H13C14.1 17 15 16.11 15 15Z\"\n />\n </g>\n <defs>\n <clipPath id=\"clip0_992_5565\">\n <rect width=\"24\" height=\"24\" />\n </clipPath>\n </defs>\n </svg>\n`\n","export const h4Icon = `\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n >\n <g clip-path=\"url(#clip0_977_7757)\">\n <path\n d=\"M19.04 3H5.04004C3.94004 3 3.04004 3.9 3.04004 5V19C3.04004 20.1 3.94004 21 5.04004 21H19.04C20.14 21 21.04 20.1 21.04 19V5C21.04 3.9 20.14 3 19.04 3ZM19.04 19H5.04004V5H19.04V19ZM13.04 17H15.04V7H13.04V11H11.04V7H9.04004V13H13.04V17Z\"\n />\n </g>\n <defs>\n <clipPath id=\"clip0_977_7757\">\n <rect width=\"24\" height=\"24\" />\n </clipPath>\n </defs>\n </svg>\n`\n","export const h5Icon = `\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n >\n <g clip-path=\"url(#clip0_977_7760)\">\n <path\n d=\"M19 3H5C3.9 3 3 3.9 3 5V19C3 20.1 3.9 21 5 21H19C20.1 21 21 20.1 21 19V5C21 3.9 20.1 3 19 3ZM19 19H5V5H19V19ZM15 15V13C15 11.89 14.1 11 13 11H11V9H15V7H9V13H13V15H9V17H13C14.1 17 15 16.11 15 15Z\"\n />\n </g>\n <defs>\n <clipPath id=\"clip0_977_7760\">\n <rect width=\"24\" height=\"24\" />\n </clipPath>\n </defs>\n </svg>\n`\n","export const h6Icon = `\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n >\n <g clip-path=\"url(#clip0_977_7763)\">\n <path\n d=\"M11 17H13C14.1 17 15 16.11 15 15V13C15 11.89 14.1 11 13 11H11V9H15V7H11C9.9 7 9 7.89 9 9V15C9 16.11 9.9 17 11 17ZM11 13H13V15H11V13ZM19 3H5C3.9 3 3 3.9 3 5V19C3 20.1 3.9 21 5 21H19C20.1 21 21 20.1 21 19V5C21 3.9 20.1 3 19 3ZM19 19H5V5H19V19Z\"\n />\n </g>\n <defs>\n <clipPath id=\"clip0_977_7763\">\n <rect width=\"24\" height=\"24\" />\n </clipPath>\n </defs>\n </svg>\n`\n","export const imageIcon = `\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n >\n <g clip-path=\"url(#clip0_977_8075)\">\n <path\n d=\"M19 5V19H5V5H19ZM19 3H5C3.9 3 3 3.9 3 5V19C3 20.1 3.9 21 5 21H19C20.1 21 21 20.1 21 19V5C21 3.9 20.1 3 19 3ZM14.14 11.86L11.14 15.73L9 13.14L6 17H18L14.14 11.86Z\"\n />\n </g>\n <defs>\n <clipPath id=\"clip0_977_8075\">\n <rect width=\"24\" height=\"24\" />\n </clipPath>\n </defs>\n </svg>\n`\n","export const menuIcon = `\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n >\n <g clip-path=\"url(#clip0_971_7680)\">\n <path\n d=\"M11 18C11 19.1 10.1 20 9 20C7.9 20 7 19.1 7 18C7 16.9 7.9 16 9 16C10.1 16 11 16.9 11 18ZM9 10C7.9 10 7 10.9 7 12C7 13.1 7.9 14 9 14C10.1 14 11 13.1 11 12C11 10.9 10.1 10 9 10ZM9 4C7.9 4 7 4.9 7 6C7 7.1 7.9 8 9 8C10.1 8 11 7.1 11 6C11 4.9 10.1 4 9 4ZM15 8C16.1 8 17 7.1 17 6C17 4.9 16.1 4 15 4C13.9 4 13 4.9 13 6C13 7.1 13.9 8 15 8ZM15 10C13.9 10 13 10.9 13 12C13 13.1 13.9 14 15 14C16.1 14 17 13.1 17 12C17 10.9 16.1 10 15 10ZM15 16C13.9 16 13 16.9 13 18C13 19.1 13.9 20 15 20C16.1 20 17 19.1 17 18C17 16.9 16.1 16 15 16Z\"\n />\n </g>\n <defs>\n <clipPath id=\"clip0_971_7680\">\n <rect width=\"24\" height=\"24\" />\n </clipPath>\n </defs>\n </svg>\n`\n","export const orderedListIcon = `\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n >\n <g clip-path=\"url(#clip0_977_8067)\">\n <path\n d=\"M8 7H20C20.55 7 21 6.55 21 6C21 5.45 20.55 5 20 5H8C7.45 5 7 5.45 7 6C7 6.55 7.45 7 8 7ZM20 17H8C7.45 17 7 17.45 7 18C7 18.55 7.45 19 8 19H20C20.55 19 21 18.55 21 18C21 17.45 20.55 17 20 17ZM20 11H8C7.45 11 7 11.45 7 12C7 12.55 7.45 13 8 13H20C20.55 13 21 12.55 21 12C21 11.45 20.55 11 20 11ZM4.5 16H2.5C2.22 16 2 16.22 2 16.5C2 16.78 2.22 17 2.5 17H4V17.5H3.5C3.22 17.5 3 17.72 3 18C3 18.28 3.22 18.5 3.5 18.5H4V19H2.5C2.22 19 2 19.22 2 19.5C2 19.78 2.22 20 2.5 20H4.5C4.78 20 5 19.78 5 19.5V16.5C5 16.22 4.78 16 4.5 16ZM2.5 5H3V7.5C3 7.78 3.22 8 3.5 8C3.78 8 4 7.78 4 7.5V4.5C4 4.22 3.78 4 3.5 4H2.5C2.22 4 2 4.22 2 4.5C2 4.78 2.22 5 2.5 5ZM4.5 10H2.5C2.22 10 2 10.22 2 10.5C2 10.78 2.22 11 2.5 11H3.8L2.12 12.96C2.04 13.05 2 13.17 2 13.28V13.5C2 13.78 2.22 14 2.5 14H4.5C4.78 14 5 13.78 5 13.5C5 13.22 4.78 13 4.5 13H3.2L4.88 11.04C4.96 10.95 5 10.83 5 10.72V10.5C5 10.22 4.78 10 4.5 10Z\"\n />\n </g>\n <defs>\n <clipPath id=\"clip0_977_8067\">\n <rect width=\"24\" height=\"24\" />\n </clipPath>\n </defs>\n </svg>\n`\n","export const plusIcon = `\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n >\n <g clip-path=\"url(#clip0_971_7676)\">\n <path\n d=\"M18 13H13V18C13 18.55 12.55 19 12 19C11.45 19 11 18.55 11 18V13H6C5.45 13 5 12.55 5 12C5 11.45 5.45 11 6 11H11V6C11 5.45 11.45 5 12 5C12.55 5 13 5.45 13 6V11H18C18.55 11 19 11.45 19 12C19 12.55 18.55 13 18 13Z\"\n />\n </g>\n <defs>\n <clipPath id=\"clip0_971_7676\">\n <rect width=\"24\" height=\"24\" />\n </clipPath>\n </defs>\n </svg>\n`\n","export const quoteIcon = `\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n >\n <g clip-path=\"url(#clip0_977_7897)\">\n <path\n d=\"M7.17 17C7.68 17 8.15 16.71 8.37 16.26L9.79 13.42C9.93 13.14 10 12.84 10 12.53V8C10 7.45 9.55 7 9 7H5C4.45 7 4 7.45 4 8V12C4 12.55 4.45 13 5 13H7L5.97 15.06C5.52 15.95 6.17 17 7.17 17ZM17.17 17C17.68 17 18.15 16.71 18.37 16.26L19.79 13.42C19.93 13.14 20 12.84 20 12.53V8C20 7.45 19.55 7 19 7H15C14.45 7 14 7.45 14 8V12C14 12.55 14.45 13 15 13H17L15.97 15.06C15.52 15.95 16.17 17 17.17 17Z\"\n />\n </g>\n <defs>\n <clipPath id=\"clip0_977_7897\">\n <rect width=\"24\" height=\"24\" />\n </clipPath>\n </defs>\n </svg>\n`\n","export const tableIcon = `\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n >\n <g clip-path=\"url(#clip0_977_8078)\">\n <path\n d=\"M20 3H5C3.9 3 3 3.9 3 5V19C3 20.1 3.9 21 5 21H20C21.1 21 22 20.1 22 19V5C22 3.9 21.1 3 20 3ZM20 5V8H5V5H20ZM15 19H10V10H15V19ZM5 10H8V19H5V10ZM17 19V10H20V19H17Z\"\n />\n </g>\n <defs>\n <clipPath id=\"clip0_977_8078\">\n <rect width=\"24\" height=\"24\" />\n </clipPath>\n </defs>\n </svg>\n`\n","export const textIcon = `\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n >\n <g clip-path=\"url(#clip0_992_5547)\">\n <path\n d=\"M5 5.5C5 6.33 5.67 7 6.5 7H10.5V17.5C10.5 18.33 11.17 19 12 19C12.83 19 13.5 18.33 13.5 17.5V7H17.5C18.33 7 19 6.33 19 5.5C19 4.67 18.33 4 17.5 4H6.5C5.67 4 5 4.67 5 5.5Z\"\n />\n </g>\n <defs>\n <clipPath id=\"clip0_992_5547\">\n <rect width=\"24\" height=\"24\" />\n </clipPath>\n </defs>\n </svg>\n`\n","export const todoListIcon = `\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n >\n <path\n d=\"M5.66936 16.3389L9.39244 12.6158C9.54115 12.4671 9.71679 12.3937 9.91936 12.3957C10.1219 12.3976 10.2975 12.4761 10.4463 12.6312C10.5847 12.7823 10.654 12.9585 10.654 13.1599C10.654 13.3613 10.5847 13.5363 10.4463 13.6851L6.32704 17.8197C6.14627 18.0004 5.93538 18.0908 5.69436 18.0908C5.45333 18.0908 5.24243 18.0004 5.06166 17.8197L3.01744 15.7754C2.87899 15.637 2.81136 15.4629 2.81456 15.2533C2.81776 15.0437 2.88859 14.8697 3.02706 14.7312C3.16551 14.5928 3.34008 14.5235 3.55076 14.5235C3.76144 14.5235 3.93494 14.5928 4.07126 14.7312L5.66936 16.3389ZM5.66936 8.72359L9.39244 5.00049C9.54115 4.85177 9.71679 4.77838 9.91936 4.78031C10.1219 4.78223 10.2975 4.86075 10.4463 5.01586C10.5847 5.16691 10.654 5.34314 10.654 5.54454C10.654 5.74592 10.5847 5.92097 10.4463 6.06969L6.32704 10.2043C6.14627 10.3851 5.93538 10.4755 5.69436 10.4755C5.45333 10.4755 5.24243 10.3851 5.06166 10.2043L3.01744 8.16009C2.87899 8.02162 2.81136 7.84759 2.81456 7.63799C2.81776 7.42837 2.88859 7.25433 3.02706 7.11586C3.16551 6.97741 3.34008 6.90819 3.55076 6.90819C3.76144 6.90819 3.93494 6.97741 4.07126 7.11586L5.66936 8.72359ZM13.7597 16.5581C13.5472 16.5581 13.3691 16.4862 13.2253 16.3424C13.0816 16.1986 13.0097 16.0204 13.0097 15.8078C13.0097 15.5952 13.0816 15.4171 13.2253 15.2735C13.3691 15.13 13.5472 15.0582 13.7597 15.0582H20.7597C20.9722 15.0582 21.1503 15.1301 21.2941 15.2739C21.4378 15.4177 21.5097 15.5959 21.5097 15.8085C21.5097 16.0211 21.4378 16.1992 21.2941 16.3427C21.1503 16.4863 20.9722 16.5581 20.7597 16.5581H13.7597ZM13.7597 8.94276C13.5472 8.94276 13.3691 8.87085 13.2253 8.72704C13.0816 8.58324 13.0097 8.40504 13.0097 8.19244C13.0097 7.97985 13.0816 7.80177 13.2253 7.65819C13.3691 7.5146 13.5472 7.44281 13.7597 7.44281H20.7597C20.9722 7.44281 21.1503 7.51471 21.2941 7.65851C21.4378 7.80233 21.5097 7.98053 21.5097 8.19311C21.5097 8.40571 21.4378 8.5838 21.2941 8.72739C21.1503 8.87097 20.9722 8.94276 20.7597 8.94276H13.7597Z\"\n />\n </svg>\n`\n","export const functionsIcon = `\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"32\"\n height=\"32\"\n viewBox=\"0 0 24 24\"\n >\n <path\n fill=\"currentColor\"\n d=\"M7 19v-.808L13.096 12L7 5.808V5h10v1.25H9.102L14.727 12l-5.625 5.77H17V19z\"\n />\n </svg>\n`\n","import type { Selection } from '@milkdown/kit/prose/state'\n\nexport function isInCodeBlock(selection: Selection) {\n const type = selection.$from.parent.type\n return type.name === 'code_block'\n}\n\nexport function isInList(selection: Selection) {\n const type = selection.$from.node(selection.$from.depth - 1)?.type\n return type?.name === 'list_item'\n}\n","import type { Ctx } from '@milkdown/kit/ctx'\n\nexport type MenuItem<T> = {\n index: number\n key: string\n onRun: (ctx: Ctx) => void\n} & T\n\ntype WithRange<T, HasIndex extends true | false = true> = HasIndex extends true\n ? T & { range: [start: number, end: number] }\n : T\n\nexport type MenuItemGroup<T, HasIndex extends true | false = true> = WithRange<\n {\n key: string\n label: string\n items: HasIndex extends true ? MenuItem<T>[] : Omit<MenuItem<T>, 'index'>[]\n },\n HasIndex\n>\n\nexport class GroupBuilder<T> {\n #groups: MenuItemGroup<T, false>[] = []\n\n clear = () => {\n this.#groups = []\n return this\n }\n\n #getGroupInstance = (group: MenuItemGroup<T, false>) => {\n const groupInstance = {\n group,\n addItem: (key: string, item: Omit<MenuItem<T>, 'key' | 'index'>) => {\n const data = { ...item, key } as MenuItem<T>\n group.items.push(data)\n return groupInstance\n },\n clear: () => {\n group.items = []\n return groupInstance\n },\n }\n return groupInstance\n }\n\n addGroup = (key: string, label: string) => {\n const items: Omit<MenuItem<T>, 'index'>[] = []\n const group: MenuItemGroup<T, false> = {\n key,\n label,\n items,\n }\n this.#groups.push(group)\n\n return this.#getGroupInstance(group)\n }\n\n getGroup = (key: string) => {\n const group = this.#groups.find((group) => group.key === key)\n if (!group) throw new Error(`Group with key ${key} not found`)\n\n return this.#getGroupInstance(group)\n }\n\n build = () => {\n return this.#groups\n }\n}\n","import type { Ctx } from '@milkdown/kit/ctx'\n\nimport { imageBlockSchema } from '@milkdown/kit/component/image-block'\nimport { commandsCtx, editorViewCtx } from '@milkdown/kit/core'\nimport {\n addBlockTypeCommand,\n blockquoteSchema,\n bulletListSchema,\n clearTextInCurrentBlockCommand,\n codeBlockSchema,\n headingSchema,\n hrSchema,\n listItemSchema,\n orderedListSchema,\n paragraphSchema,\n selectTextNearPosCommand,\n setBlockTypeCommand,\n wrapInBlockTypeCommand,\n} from '@milkdown/kit/preset/commonmark'\nimport { createTable } from '@milkdown/kit/preset/gfm'\n\nimport type { BlockEditFeatureConfig } from '../index'\nimport type { SlashMenuItem } from './utils'\n\nimport { useCrepeFeatures } from '../../../core/slice'\nimport { CrepeFeature } from '../../../feature'\nimport {\n bulletListIcon,\n codeIcon,\n dividerIcon,\n functionsIcon,\n h1Icon,\n h2Icon,\n h3Icon,\n h4Icon,\n h5Icon,\n h6Icon,\n imageIcon,\n orderedListIcon,\n quoteIcon,\n tableIcon,\n textIcon,\n todoListIcon,\n} from '../../../icons'\nimport { GroupBuilder, type MenuItemGroup } from '../../../utils/group-builder'\n\nexport function getGroups(\n filter?: string,\n config?: BlockEditFeatureConfig,\n ctx?: Ctx\n) {\n const flags = ctx && useCrepeFeatures(ctx).get()\n const isLatexEnabled = flags?.includes(CrepeFeature.Latex)\n const isImageBlockEnabled = flags?.includes(CrepeFeature.ImageBlock)\n const isTableEnabled = flags?.includes(CrepeFeature.Table)\n\n const groupBuilder = new GroupBuilder<SlashMenuItem>()\n if (config?.textGroup !== null) {\n const textGroup = groupBuilder.addGroup(\n 'text',\n config?.textGroup?.label ?? 'Text'\n )\n if (config?.textGroup?.text !== null) {\n textGroup.addItem('text', {\n label: config?.textGroup?.text?.label ?? 'Text',\n icon: config?.textGroup?.text?.icon ?? textIcon,\n onRun: (ctx) => {\n const commands = ctx.get(commandsCtx)\n const paragraph = paragraphSchema.type(ctx)\n\n commands.call(clearTextInCurrentBlockCommand.key)\n commands.call(setBlockTypeCommand.key, {\n nodeType: paragraph,\n })\n },\n })\n }\n\n if (config?.textGroup?.h1 !== null) {\n textGroup.addItem('h1', {\n label: config?.textGroup?.h1?.label ?? 'Heading 1',\n icon: config?.textGroup?.h1?.icon ?? h1Icon,\n onRun: (ctx) => {\n const commands = ctx.get(commandsCtx)\n const heading = headingSchema.type(ctx)\n\n commands.call(clearTextInCurrentBlockCommand.key)\n commands.call(setBlockTypeCommand.key, {\n nodeType: heading,\n attrs: {\n level: 1,\n },\n })\n },\n })\n }\n\n if (config?.textGroup?.h2 !== null) {\n textGroup.addItem('h2', {\n label: config?.textGroup?.h2?.label ?? 'Heading 2',\n icon: config?.textGroup?.h2?.icon ?? h2Icon,\n onRun: (ctx) => {\n const commands = ctx.get(commandsCtx)\n const heading = headingSchema.type(ctx)\n\n commands.call(clearTextInCurrentBlockCommand.key)\n commands.call(setBlockTypeCommand.key, {\n nodeType: heading,\n attrs: {\n level: 2,\n },\n })\n },\n })\n }\n\n if (config?.textGroup?.h3 !== null) {\n textGroup.addItem('h3', {\n label: config?.textGroup?.h3?.label ?? 'Heading 3',\n icon: config?.textGroup?.h3?.icon ?? h3Icon,\n onRun: (ctx) => {\n const commands = ctx.get(commandsCtx)\n const heading = headingSchema.type(ctx)\n\n commands.call(clearTextInCurrentBlockCommand.key)\n commands.call(setBlockTypeCommand.key, {\n nodeType: heading,\n attrs: {\n level: 3,\n },\n })\n },\n })\n }\n\n if (config?.textGroup?.h4 !== null) {\n textGroup.addItem('h4', {\n label: config?.textGroup?.h4?.label ?? 'Heading 4',\n icon: config?.textGroup?.h4?.icon ?? h4Icon,\n onRun: (ctx) => {\n const commands = ctx.get(commandsCtx)\n const heading = headingSchema.type(ctx)\n\n commands.call(clearTextInCurrentBlockCommand.key)\n commands.call(setBlockTypeCommand.key, {\n nodeType: heading,\n attrs: {\n level: 4,\n },\n })\n },\n })\n }\n\n if (config?.textGroup?.h5 !== null) {\n textGroup.addItem('h5', {\n label: config?.textGroup?.h5?.label ?? 'Heading 5',\n icon: config?.textGroup?.h5?.icon ?? h5Icon,\n onRun: (ctx) => {\n const commands = ctx.get(commandsCtx)\n const heading = headingSchema.type(ctx)\n\n commands.call(clearTextInCurrentBlockCommand.key)\n commands.call(setBlockTypeCommand.key, {\n nodeType: heading,\n attrs: {\n level: 5,\n },\n })\n },\n })\n }\n\n if (config?.textGroup?.h6 !== null) {\n textGroup.addItem('h6', {\n label: config?.textGroup?.h6?.label ?? 'Heading 6',\n icon: config?.textGroup?.h6?.icon ?? h6Icon,\n onRun: (ctx) => {\n const commands = ctx.get(commandsCtx)\n const heading = headingSchema.type(ctx)\n\n commands.call(clearTextInCurrentBlockCommand.key)\n commands.call(setBlockTypeCommand.key, {\n nodeType: heading,\n attrs: {\n level: 6,\n },\n })\n },\n })\n }\n\n if (config?.textGroup?.quote !== null) {\n textGroup.addItem('quote', {\n label: config?.textGroup?.quote?.label ?? 'Quote',\n icon: config?.textGroup?.quote?.icon ?? quoteIcon,\n onRun: (ctx) => {\n const commands = ctx.get(commandsCtx)\n const blockquote = blockquoteSchema.type(ctx)\n\n commands.call(clearTextInCurrentBlockCommand.key)\n commands.call(wrapInBlockTypeCommand.key, {\n nodeType: blockquote,\n })\n },\n })\n }\n\n if (config?.textGroup?.divider !== null) {\n textGroup.addItem('divider', {\n label: config?.textGroup?.divider?.label ?? 'Divider',\n icon: config?.textGroup?.divider?.icon ?? dividerIcon,\n onRun: (ctx) => {\n const commands = ctx.get(commandsCtx)\n const hr = hrSchema.type(ctx)\n\n commands.call(clearTextInCurrentBlockCommand.key)\n commands.call(addBlockTypeCommand.key, {\n nodeType: hr,\n })\n },\n })\n }\n }\n\n if (config?.listGroup !== null) {\n const listGroup = groupBuilder.addGroup(\n 'list',\n config?.listGroup?.label ?? 'List'\n )\n if (config?.listGroup?.bulletList !== null) {\n listGroup.addItem('bullet-list', {\n label: config?.listGroup?.bulletList?.label ?? 'Bullet List',\n icon: config?.listGroup?.bulletList?.icon ?? bulletListIcon,\n onRun: (ctx) => {\n const commands = ctx.get(commandsCtx)\n const bulletList = bulletListSchema.type(ctx)\n\n commands.call(clearTextInCurrentBlockCommand.key)\n commands.call(wrapInBlockTypeCommand.key, {\n nodeType: bulletList,\n })\n },\n })\n }\n\n if (config?.listGroup?.orderedList !== null) {\n listGroup.addItem('ordered-list', {\n label: config?.listGroup?.orderedList?.label ?? 'Ordered List',\n icon: config?.listGroup?.orderedList?.icon ?? orderedListIcon,\n onRun: (ctx) => {\n const commands = ctx.get(commandsCtx)\n const orderedList = orderedListSchema.type(ctx)\n\n commands.call(clearTextInCurrentBlockCommand.key)\n commands.call(wrapInBlockTypeCommand.key, {\n nodeType: orderedList,\n })\n },\n })\n }\n\n if (config?.listGroup?.taskList !== null) {\n listGroup.addItem('task-list', {\n label: config?.listGroup?.taskList?.label ?? 'Task List',\n icon: config?.listGroup?.taskList?.icon ?? todoListIcon,\n onRun: (ctx) => {\n const commands = ctx.get(commandsCtx)\n const listItem = listItemSchema.type(ctx)\n\n commands.call(clearTextInCurrentBlockCommand.key)\n commands.call(wrapInBlockTypeCommand.key, {\n nodeType: listItem,\n attrs: { checked: false },\n })\n },\n })\n }\n }\n\n if (config?.advancedGroup !== null) {\n const advancedGroup = groupBuilder.addGroup(\n 'advanced',\n config?.advancedGroup?.label ?? 'Advanced'\n )\n\n if (config?.advancedGroup?.image !== null && isImageBlockEnabled) {\n advancedGroup.addItem('image', {\n label: config?.advancedGroup?.image?.label ?? 'Image',\n icon: config?.advancedGroup?.image?.icon ?? imageIcon,\n onRun: (ctx) => {\n const commands = ctx.get(commandsCtx)\n const imageBlock = imageBlockSchema.type(ctx)\n\n commands.call(clearTextInCurrentBlockCommand.key)\n commands.call(addBlockTypeCommand.key, {\n nodeType: imageBlock,\n })\n },\n })\n }\n\n if (config?.advancedGroup?.codeBlock !== null) {\n advancedGroup.addItem('code', {\n label: config?.advancedGroup?.codeBlock?.label ?? 'Code',\n icon: config?.advancedGroup?.codeBlock?.icon ?? codeIcon,\n onRun: (ctx) => {\n const commands = ctx.get(commandsCtx)\n const codeBlock = codeBlockSchema.type(ctx)\n\n commands.call(clearTextInCurrentBlockCommand.key)\n commands.call(setBlockTypeCommand.key, {\n nodeType: codeBlock,\n })\n },\n })\n }\n\n if (config?.advancedGroup?.table !== null && isTableEnabled) {\n advancedGroup.addItem('table', {\n label: config?.advancedGroup?.table?.label ?? 'Table',\n icon: config?.advancedGroup?.table?.icon ?? tableIcon,\n onRun: (ctx) => {\n const commands = ctx.get(commandsCtx)\n const view = ctx.get(editorViewCtx)\n\n commands.call(clearTextInCurrentBlockCommand.key)\n\n // record the position before the table is inserted\n const { from } = view.state.selection\n commands.call(addBlockTypeCommand.key, {\n nodeType: createTable(ctx, 3, 3),\n })\n\n commands.call(selectTextNearPosCommand.key, {\n pos: from,\n })\n },\n })\n }\n\n if (config?.advancedGroup?.math !== null && isLatexEnabled) {\n advancedGroup.addItem('math', {\n label: config?.advancedGroup?.math?.label ?? 'Math',\n icon: config?.advancedGroup?.math?.icon ?? functionsIcon,\n onRun: (ctx) => {\n const commands = ctx.get(commandsCtx)\n const codeBlock = codeBlockSchema.type(ctx)\n\n commands.call(clearTextInCurrentBlockCommand.key)\n commands.call(addBlockTypeCommand.key, {\n nodeType: codeBlock,\n attrs: { language: 'LaTex' },\n })\n },\n })\n }\n }\n\n config?.buildMenu?.(groupBuilder)\n\n let groups = groupBuilder.build()\n\n if (filter) {\n groups = groups\n .map((group) => {\n const items = group.items.filter((item) =>\n item.label.toLowerCase().includes(filter.toLowerCase())\n )\n\n return {\n ...group,\n items,\n }\n })\n .filter((group) => group.items.length > 0)\n }\n\n const items = groups.flatMap((groups) => groups.items)\n items.forEach((item, index) => {\n Object.assign(item, { index })\n })\n\n groups.reduce((acc, group) => {\n const end = acc + group.items.length\n Object.assign(group, {\n range: [acc, end],\n })\n return end\n }, 0)\n\n return {\n groups: groups as MenuItemGroup<SlashMenuItem>[],\n size: items.length,\n }\n}\n","import type { Ctx } from '@milkdown/kit/ctx'\n\nimport { Icon } from '@milkdown/kit/component'\nimport {\n computed,\n defineComponent,\n onUnmounted,\n ref,\n watch,\n watchEffect,\n type Ref,\n h,\n} from 'vue'\n\nimport type { BlockEditFeatureConfig } from '..'\n\nimport { getGroups } from './config'\n\nh\n\ntype MenuProps = {\n ctx: Ctx\n show: Ref<boolean>\n filter: Ref<string>\n hide: () => void\n config?: BlockEditFeatureConfig\n}\n\nexport const Menu = defineComponent<MenuProps>({\n props: {\n ctx: {\n type: Object,\n required: true,\n },\n show: {\n type: Object,\n required: true,\n },\n filter: {\n type: Object,\n required: true,\n },\n hide: {\n type: Function,\n required: true,\n },\n config: {\n type: Object,\n required: false,\n },\n },\n setup({ ctx, show, filter, hide, config }) {\n const host = ref<HTMLElement>()\n const groupInfo = computed(() => getGroups(filter.value, config, ctx))\n const hoverIndex = ref(0)\n const prevMousePosition = ref({ x: -999, y: -999 })\n\n const onPointerMove = (e: MouseEvent) => {\n const { x, y } = e\n prevMousePosition.value = { x, y }\n }\n\n watch([groupInfo, show], () => {\n const { size } = groupInfo.value\n if (size === 0 && show.value) hide()\n else if (hoverIndex.value >= size) hoverIndex.value = 0\n })\n\n const onHover = (\n index: number | ((prev: number) => number),\n after?: (index: number) => void\n ) => {\n const prevHoverIndex = hoverIndex.value\n const next = typeof index === 'function' ? index(prevHoverIndex) : index\n after?.(next)\n hoverIndex.value = next\n }\n\n const scrollToIndex = (index: number) => {\n const target = host.value?.querySelector<HTMLElement>(\n `[data-index=\"${index}\"]`\n )\n const scrollRoot = host.value?.querySelector<HTMLElement>('.menu-groups')\n\n if (!target || !scrollRoot) return\n\n scrollRoot.scrollTop = target.offsetTop - scrollRoot.offsetTop\n }\n\n const runByIndex = (index: number) => {\n const item = groupInfo.value.groups\n .flatMap((group) => group.items)\n .at(index)\n if (item && ctx) item.onRun(ctx)\n\n hide()\n }\n\n const onKeydown = (e: KeyboardEvent) => {\n const { size, groups } = groupInfo.value\n if (e.key === 'Escape') {\n e.preventDefault()\n hide?.()\n return\n }\n\n if (e.key === 'ArrowDown') {\n e.preventDefault()\n return onHover(\n (index) => (index < size - 1 ? index + 1 : index),\n scrollToIndex\n )\n }\n\n if (e.key === 'ArrowUp') {\n e.preventDefault()\n return onHover(\n (index) => (index <= 0 ? index : index - 1),\n scrollToIndex\n )\n }\n\n if (e.key === 'ArrowLeft') {\n e.preventDefault()\n return onHover((index) => {\n const group = groups.find(\n (group) => group.range[0] <= index && group.range[1] > index\n )\n if (!group) return index\n\n const prevGroup = groups[groups.indexOf(group) - 1]\n if (!prevGroup) return index\n\n return prevGroup.range[1] - 1\n }, scrollToIndex)\n }\n\n if (e.key === 'ArrowRight') {\n e.preventDefault()\n return onHover((index) => {\n const group = groups.find(\n (group) => group.range[0] <= index && group.range[1] > index\n )\n if (!group) return index\n\n const nextGroup = groups[groups.indexOf(group) + 1]\n if (!nextGroup) return index\n\n return nextGroup.range[0]\n }, scrollToIndex)\n }\n\n if (e.key === 'Enter') {\n e.preventDefault()\n runByIndex(hoverIndex.value)\n }\n }\n\n const getOnPointerEnter = (index: number) => (e: MouseEvent) => {\n const prevPos = prevMousePosition.value\n if (!prevPos) return\n\n const { x, y } = e\n if (x === prevPos.x && y === prevPos.y) return\n\n onHover(index)\n }\n\n watchEffect(() => {\n const isShown = show.value\n if (isShown) {\n window.addEventListener('keydown', onKeydown, { capture: true })\n } else {\n window.removeEventListener('keydown', onKeydown, { capture: true })\n }\n })\n onUnmounted(() => {\n window.removeEventListener('keydown', onKeydown, { capture: true })\n })\n\n return () => {\n return (\n <div ref={host} onPointerdown={(e) => e.preventDefault()}>\n <nav class=\"tab-group\">\n <ul>\n {groupInfo.value.groups.map((group) => (\n <li\n key={group.key}\n onPointerdown={() => onHover(group.range[0], scrollToIndex)}\n class={\n hoverIndex.value >= group.range[0] &&\n hoverIndex.value < group.range[1]\n ? 'selected'\n : ''\n }\n >\n {group.label}\n </li>\n ))}\n </ul>\n </nav>\n <div class=\"menu-groups\" onPointermove={onPointerMove}>\n {groupInfo.value.groups.map((group) => (\n <div key={group.key} class=\"menu-group\">\n <h6>{group.label}</h6>\n <ul>\n {group.items.map((item) => (\n <li\n key={item.key}\n data-index={item.index}\n class={hoverIndex.value === item.index ? 'hover' : ''}\n onPointerenter={getOnPointerEnter(item.index)}\n onPointerdown={() => {\n host.value\n ?.querySelector(`[data-index=\"${item.index}\"]`)\n ?.classList.add('active')\n }}\n onPointerup={() => {\n host.value\n ?.querySelector(`[data-index=\"${item.index}\"]`)\n ?.classList.remove('active')\n runByIndex(item.index)\n }}\n >\n <Icon icon={item.icon} />\n <span>{item.label}</span>\n </li>\n ))}\n </ul>\n </div>\n ))}\n </div>\n </div>\n )\n }\n },\n})\n","import type { Ctx } from '@milkdown/kit/ctx'\nimport type { EditorView } from '@milkdown/kit/prose/view'\n\nimport { SlashProvider, slashFactory } from '@milkdown/kit/plugin/slash'\nimport {\n TextSelection,\n type PluginView,\n type Selection,\n} from '@milkdown/kit/prose/state'\nimport { $ctx } from '@milkdown/kit/utils'\nimport { createApp, ref, type App, type Ref } from 'vue'\n\nimport type { BlockEditFeatureConfig } from '../index'\n\nimport { isInCodeBlock, isInList } from '../../../utils'\nimport { Menu } from './component'\n\nexport const menu = slashFactory('CREPE_MENU')\n\nexport interface MenuAPI {\n show: (pos: number) => void\n hide: () => void\n}\n\nexport const menuAPI = $ctx(\n {\n show: () => {},\n hide: () => {},\n } as MenuAPI,\n 'menuAPICtx'\n)\n\nexport function configureMenu(ctx: Ctx, config?: BlockEditFeatureConfig) {\n ctx.set(menu.key, {\n view: (view) => new MenuView(ctx, view, config),\n })\n}\n\nclass MenuView implements PluginView {\n readonly #content: HTMLElement\n readonly #app: App\n readonly #filter: Ref<string>\n readonly #slashProvider: SlashProvider\n #programmaticallyPos: number | null = null\n\n constructor(ctx: Ctx, view: EditorView, config?: BlockEditFeatureConfig) {\n const content = document.createElement('div')\n content.classList.add('milkdown-slash-menu')\n const show = ref(false)\n\n const filter = ref('')\n this.#filter = filter\n\n const hide = this.hide\n\n const app = createApp(Menu, {\n ctx,\n config,\n show,\n filter,\n hide,\n })\n this.#app = app\n app.mount(content)\n\n this.#content = content\n // oxlint-disable-next-line ts/no-this-alias\n const self = this\n this.#slashProvider = new SlashProvider({\n content: this.#content,\n debounce: 20,\n shouldShow(this: SlashProvider, view: EditorView) {\n if (\n isInCodeBlock(view.state.selection) ||\n isInList(view.state.selection)\n )\n return false\n\n const currentText = this.getContent(view, (node) =>\n ['paragraph', 'heading'].includes(node.type.name)\n )\n\n if (currentText == null) return false\n\n if (!isSelectionAtEndOfNode(view.state.selection)) {\n return false\n }\n\n const pos = self.#programmaticallyPos\n\n filter.value = currentText.startsWith('/')\n ? currentText.slice(1)\n : currentText\n\n if (typeof pos === 'number') {\n const maxSize = view.state.doc.nodeSize - 2\n const validPos = Math.min(pos, maxSize)\n if (\n view.state.doc.resolve(validPos).node() !==\n view.state.doc.resolve(view.state.selection.from).node()\n ) {\n self.#programmaticallyPos = null\n\n return false\n }\n\n return true\n }\n\n if (!currentText.startsWith('/')) return false\n\n return true\n },\n offset: 10,\n })\n\n this.#slashProvider.onShow = () => {\n show.value = true\n }\n this.#slashProvider.onHide = () => {\n show.value = false\n }\n this.update(view)\n\n ctx.set(menuAPI.key, {\n show: (pos) => this.show(pos),\n hide: () => this.hide(),\n })\n }\n\n update = (view: EditorView) => {\n this.#slashProvider.update(view)\n }\n\n show = (pos: number) => {\n this.#programmaticallyPos = pos\n this.#filter.value = ''\n this.#slashProvider.show()\n }\n\n hide = () => {\n this.#programmaticallyPos = null\n this.#slashProvider.hide()\n }\n\n destroy = () => {\n this.#slashProvider.destroy()\n this.#app.unmount()\n this.#content.remove()\n }\n}\n\nfunction isSelectionAtEndOfNode(selection: Selection) {\n if (!(selection instanceof TextSelection)) return false\n\n const { $head } = selection\n const parent = $head.parent\n const offset = $head.parentOffset\n\n return offset === parent.content.size\n}\n","import { Icon } from '@milkdown/kit/component'\nimport { defineComponent, ref, h, Fragment } from 'vue'\n\nh\nFragment\n\nexport interface BlockHandleProps {\n onAdd: () => void\n addIcon: string\n handleIcon: string\n}\n\nexport const BlockHandle = defineComponent<BlockHandleProps>({\n props: {\n onAdd: {\n type: Function,\n required: true,\n },\n addIcon: {\n type: String,\n required: true,\n },\n handleIcon: {\n type: String,\n required: true,\n },\n },\n setup(props) {\n const addButton = ref<HTMLDivElement>()\n\n return () => {\n return (\n <>\n <div\n ref={addButton}\n class=\"operation-item\"\n onPointerdown={(e) => {\n e.preventDefault()\n e.stopPropagation()\n addButton.value?.classList.add('active')\n }}\n onPointerup={(e) => {\n e.preventDefault()\n e.stopPropagation()\n addButton.value?.classList.remove('active')\n props.onAdd()\n }}\n >\n <Icon icon={props.addIcon} />\n </div>\n <div class=\"operation-item\">\n <Icon icon={props.handleIcon} />\n </div>\n </>\n )\n }\n },\n})\n","import type { Ctx } from '@milkdown/kit/ctx'\nimport type { PluginView } from '@milkdown/kit/prose/state'\n\nimport { editorViewCtx } from '@milkdown/kit/core'\nimport {\n BlockProvider,\n block,\n blockConfig,\n type BlockProviderOptions,\n} from '@milkdown/kit/plugin/block'\nimport { paragraphSchema } from '@milkdown/kit/preset/commonmark'\nimport { findParent } from '@milkdown/kit/prose'\nimport { TextSelection } from '@milkdown/kit/prose/state'\nimport { createApp, type App } from 'vue'\n\nimport type { BlockEditFeatureConfig } from '../index'\n\nimport { menuIcon, plusIcon } from '../../../icons'\nimport { menuAPI } from '../menu'\nimport { BlockHandle } from './component'\n\nexport class BlockHandleView implements PluginView {\n #content: HTMLElement\n #provider: BlockProvider\n #app: App\n readonly #ctx: Ctx\n\n constructor(ctx: Ctx, config?: BlockEditFeatureConfig) {\n this.#ctx = ctx\n const content = document.createElement('div')\n content.classList.add('milkdown-block-handle')\n const app = createApp(BlockHandle, {\n onAdd: this.onAdd,\n addIcon: config?.handleAddIcon ?? plusIcon,\n handleIcon: config?.handleDragIcon ?? menuIcon,\n })\n app.mount(content)\n this.#app = app\n this.#content = content\n const blockProviderOptions = config?.blockHandle ?? {}\n this.#provider = new BlockProvider({\n ctx,\n content,\n getOffset: () => 16,\n getPlacement: ({ active, blockDom }) => {\n if (active.node.type.name === 'heading') return 'left'\n\n let totalDescendant = 0\n active.node.descendants((node) => {\n totalDescendant += node.childCount\n })\n const dom = active.el\n const domRect = dom.getBoundingClientRect()\n const handleRect = blockDom.getBoundingClientRect()\n const style = window.getComputedStyle(dom)\n const paddingTop = Number.parseInt(style.paddingTop, 10) || 0\n const paddingBottom = Number.parseInt(style.paddingBottom, 10) || 0\n const height = domRect.height - paddingTop - paddingBottom\n const handleHeight = handleRect.height\n return totalDescendant > 2 || handleHeight < height\n ? 'left-start'\n : 'left'\n },\n ...(blockProviderOptions as Partial<BlockProviderOptions>),\n })\n this.update()\n }\n\n update = () => {\n this.#provider.update()\n }\n\n destroy = () => {\n this.#provider.destroy()\n this.#content.remove()\n this.#app.unmount()\n }\n\n onAdd = () => {\n const ctx = this.#ctx\n const view = ctx.get(editorViewCtx)\n if (!view.hasFocus()) view.focus()\n\n const { state, dispatch } = view\n const active = this.#provider.active\n if (!active) return\n\n const $pos = active.$pos\n const pos = $pos.pos + active.node.nodeSize\n let tr = state.tr.insert(pos, paragraphSchema.type(ctx).create())\n tr = tr.setSelection(TextSelection.near(tr.doc.resolve(pos)))\n dispatch(tr.scrollIntoView())\n\n this.#provider.hide()\n ctx.get(menuAPI.key).show(tr.selection.from)\n }\n}\n\nexport function configureBlockHandle(\n ctx: Ctx,\n config?: BlockEditFeatureConfig\n) {\n ctx.set(blockConfig.key, {\n filterNodes: (pos) => {\n const filter = findParent((node) =>\n ['table', 'blockquote', 'math_inline'].includes(node.type.name)\n )(pos)\n if (filter) return false\n\n return true\n },\n })\n ctx.set(block.key, {\n view: () => new BlockHandleView(ctx, config),\n })\n}\n","import { block, type BlockProviderOptions } from '@milkdown/kit/plugin/block'\n\nimport type { DeepPartial } from '../../utils'\nimport type { GroupBuilder } from '../../utils/group-builder'\nimport type { DefineFeature } from '../shared'\nimport type { SlashMenuItem } from './menu/utils'\n\nimport { crepeFeatureConfig } from '../../core/slice'\nimport { CrepeFeature } from '../index'\nimport { configureBlockHandle } from './handle'\nimport { configureMenu, menu, menuAPI } from './menu'\n\ninterface BlockEditConfig {\n handleAddIcon: string\n handleDragIcon: string\n buildMenu: (builder: GroupBuilder<SlashMenuItem>) => void\n\n blockHandle: Pick<\n BlockProviderOptions,\n | 'shouldShow'\n | 'getOffset'\n | 'getPosition'\n | 'getPlacement'\n | 'middleware'\n | 'floatingUIOptions'\n | 'root'\n >\n\n textGroup: {\n label: string\n text: {\n label: string\n icon: string\n } | null\n h1: {\n label: string\n icon: string\n } | null\n h2: {\n label: string\n icon: string\n } | null\n h3: {\n label: string\n icon: string\n } | null\n h4: {\n label: string\n icon: string\n } | null\n h5: {\n label: string\n icon: string\n } | null\n h6: {\n label: string\n icon: string\n } | null\n quote: {\n label: string\n icon: string\n } | null\n divider: {\n label: string\n icon: string\n } | null\n } | null\n\n listGroup: {\n label: string\n bulletList: {\n label: string\n icon: string\n } | null\n orderedList: {\n label: string\n icon: string\n } | null\n taskList: {\n label: string\n icon: string\n } | null\n } | null\n\n advancedGroup: {\n label: string\n image: {\n label: string\n icon: string\n } | null\n codeBlock: {\n label: string\n icon: string\n } | null\n table: {\n label: string\n icon: string\n } | null\n math: {\n label: string\n icon: string\n } | null\n } | null\n}\n\nexport type BlockEditFeatureConfig = DeepPartial<BlockEditConfig>\n\nexport const blockEdit: DefineFeature<BlockEditFeatureConfig> = (\n editor,\n config\n) => {\n editor\n .config(crepeFeatureConfig(CrepeFeature.BlockEdit))\n .config((ctx) => configureBlockHandle(ctx, config))\n .config((ctx) => configureMenu(ctx, config))\n .use(menuAPI)\n .use(block)\n .use(menu)\n}\n"],"names":["createSlice","CrepeFeature","__privateAdd","__privateSet","__privateGet","group","ctx","commandsCtx","paragraphSchema","clearTextInCurrentBlockCommand","setBlockTypeCommand","headingSchema","blockquoteSchema","wrapInBlockTypeCommand","hrSchema","addBlockTypeCommand","bulletListSchema","orderedListSchema","listItemSchema","imageBlock","imageBlockSchema","codeBlockSchema","editorViewCtx","createTable","selectTextNearPosCommand","items","groups","defineComponent","ref","computed","watch","watchEffect","onUnmounted","h","Icon","_content","_app","slashFactory","$ctx","createApp","SlashProvider","view","TextSelection","Fragment","state","BlockProvider","blockConfig","findParent","block"],"mappings":"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,MAAA,EACA,MAAA,EACA,GAAA,EACA;AAlDF,EAAA,IAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAA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"}
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../../src/core/slice.ts","../../../../src/feature/index.ts","../../../../src/icons/bullet-list.ts","../../../../src/icons/code.ts","../../../../src/icons/divider.ts","../../../../src/icons/h1.ts","../../../../src/icons/h2.ts","../../../../src/icons/h3.ts","../../../../src/icons/h4.ts","../../../../src/icons/h5.ts","../../../../src/icons/h6.ts","../../../../src/icons/image.ts","../../../../src/icons/menu.ts","../../../../src/icons/ordered-list.ts","../../../../src/icons/plus.ts","../../../../src/icons/quote.ts","../../../../src/icons/table.ts","../../../../src/icons/text.ts","../../../../src/icons/todo-list.ts","../../../../src/icons/functions.ts","../../../../src/utils/checker.ts","../../../../src/utils/group-builder.ts","../../../../src/feature/block-edit/menu/config.ts","../../../../src/feature/block-edit/menu/component.tsx","../../../../src/feature/block-edit/menu/index.ts","../../../../src/feature/block-edit/handle/component.tsx","../../../../src/feature/block-edit/handle/index.ts","../../../../src/feature/block-edit/index.ts"],"sourcesContent":["import { createSlice, type Ctx } from '@milkdown/kit/ctx'\n\nimport type { CrepeFeature } from '../feature'\nimport type { CrepeBuilder } from './builder'\n\n/// @internal\n/// The feature flags context.\n/// ⚠️ Most of the time, you should use `useCrepeFeatures` to get the features.\nexport const FeaturesCtx = createSlice([] as CrepeFeature[], 'FeaturesCtx')\n\n/// @internal\n/// The crepe editor context.\n/// ⚠️ Most of the time, you should use `useCrepe` to get the crepe editor instance.\nexport const CrepeCtx = createSlice({} as CrepeBuilder, 'CrepeCtx')\n\n/// The crepe editor context.\n/// You can use this context to access the crepe editor instance within Milkdown plugins.\n/// ```ts\n/// import { crepeCtx } from '@milkdown/crepe'\n/// const plugin = (ctx: Ctx) => {\n/// return () => {\n/// const crepe = useCrepe(ctx)\n/// crepe.setReadonly(true)\n/// }\n/// }\n/// ```\nexport function useCrepe(ctx: Ctx) {\n // We should use string slice here to avoid the slice to be bundled in multiple entries\n return ctx.get<CrepeBuilder, 'CrepeCtx'>('CrepeCtx')\n}\n\n/// Check the enabled FeatureFlags\n/// ```ts\n/// import { useCrepeFeatures } from '@milkdown/crepe'\n/// const plugin = (ctx: Ctx) => {\n/// const features = useCrepeFeatures(ctx)\n/// if (features.get().includes(CrepeFeature.CodeMirror)) {\n/// // Do something with CodeMirror\n/// }\n/// }\nexport function useCrepeFeatures(ctx: Ctx) {\n // We should use string slice here to avoid the slice to be bundled in multiple entries\n return ctx.use<CrepeFeature[], 'FeaturesCtx'>('FeaturesCtx')\n}\n\n/// @internal\nexport function crepeFeatureConfig(feature: CrepeFeature) {\n return (ctx: Ctx) => {\n useCrepeFeatures(ctx).update((features) => {\n if (features.includes(feature)) {\n return features\n }\n return [...features, feature]\n })\n }\n}\n","import type { BlockEditFeatureConfig } from './block-edit'\nimport type { CodeMirrorFeatureConfig } from './code-mirror'\nimport type { CursorFeatureConfig } from './cursor'\nimport type { ImageBlockFeatureConfig } from './image-block'\nimport type { LatexFeatureConfig } from './latex'\nimport type { LinkTooltipFeatureConfig } from './link-tooltip'\nimport type { ListItemFeatureConfig } from './list-item'\nimport type { PlaceholderFeatureConfig } from './placeholder'\nimport type { TableFeatureConfig } from './table'\nimport type { ToolbarFeatureConfig } from './toolbar'\n\n/// The crepe editor feature flags.\n/// Every feature is enabled by default.\n/// Every feature is a string literal type.\nexport enum CrepeFeature {\n /// Syntax highlighting and editing for code blocks with language support, theme customization, and preview capabilities.\n CodeMirror = 'code-mirror',\n\n /// Support for bullet lists, ordered lists, and todo lists with customizable icons and formatting.\n ListItem = 'list-item',\n\n /// Enhanced link editing and preview with customizable tooltips, edit/remove actions, and copy functionality.\n LinkTooltip = 'link-tooltip',\n\n /// Enhanced cursor experience with drop cursor and gap cursor for better content placement.\n Cursor = 'cursor',\n\n /// Image upload and management with resizing, captions, and support for both inline and block images.\n ImageBlock = 'image-block',\n\n /// Drag-and-drop block management and slash commands for quick content insertion and organization.\n BlockEdit = 'block-edit',\n\n /// Formatting toolbar for selected text with customizable icons and actions.\n Toolbar = 'toolbar',\n\n /// Document or block level placeholders to guide users when content is empty.\n Placeholder = 'placeholder',\n\n /// Full-featured table editing with row/column management, alignment options, and drag-and-drop functionality.\n Table = 'table',\n\n /// Mathematical formula support with both inline and block math rendering using KaTeX.\n Latex = 'latex',\n}\n\nexport interface CrepeFeatureConfig {\n [CrepeFeature.Cursor]?: CursorFeatureConfig\n [CrepeFeature.ListItem]?: ListItemFeatureConfig\n [CrepeFeature.LinkTooltip]?: LinkTooltipFeatureConfig\n [CrepeFeature.ImageBlock]?: ImageBlockFeatureConfig\n [CrepeFeature.BlockEdit]?: BlockEditFeatureConfig\n [CrepeFeature.Placeholder]?: PlaceholderFeatureConfig\n [CrepeFeature.Toolbar]?: ToolbarFeatureConfig\n [CrepeFeature.CodeMirror]?: CodeMirrorFeatureConfig\n [CrepeFeature.Table]?: TableFeatureConfig\n [CrepeFeature.Latex]?: LatexFeatureConfig\n}\n\nexport const defaultFeatures: Record<CrepeFeature, boolean> = {\n [CrepeFeature.Cursor]: true,\n [CrepeFeature.ListItem]: true,\n [CrepeFeature.LinkTooltip]: true,\n [CrepeFeature.ImageBlock]: true,\n [CrepeFeature.BlockEdit]: true,\n [CrepeFeature.Placeholder]: true,\n [CrepeFeature.Toolbar]: true,\n [CrepeFeature.CodeMirror]: true,\n [CrepeFeature.Table]: true,\n [CrepeFeature.Latex]: true,\n}\n","export const bulletListIcon = `\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n >\n <g clip-path=\"url(#clip0_977_8070)\">\n <path\n d=\"M4 10.5C3.17 10.5 2.5 11.17 2.5 12C2.5 12.83 3.17 13.5 4 13.5C4.83 13.5 5.5 12.83 5.5 12C5.5 11.17 4.83 10.5 4 10.5ZM4 4.5C3.17 4.5 2.5 5.17 2.5 6C2.5 6.83 3.17 7.5 4 7.5C4.83 7.5 5.5 6.83 5.5 6C5.5 5.17 4.83 4.5 4 4.5ZM4 16.5C3.17 16.5 2.5 17.18 2.5 18C2.5 18.82 3.18 19.5 4 19.5C4.82 19.5 5.5 18.82 5.5 18C5.5 17.18 4.83 16.5 4 16.5ZM8 19H20C20.55 19 21 18.55 21 18C21 17.45 20.55 17 20 17H8C7.45 17 7 17.45 7 18C7 18.55 7.45 19 8 19ZM8 13H20C20.55 13 21 12.55 21 12C21 11.45 20.55 11 20 11H8C7.45 11 7 11.45 7 12C7 12.55 7.45 13 8 13ZM7 6C7 6.55 7.45 7 8 7H20C20.55 7 21 6.55 21 6C21 5.45 20.55 5 20 5H8C7.45 5 7 5.45 7 6Z\"\n />\n </g>\n <defs>\n <clipPath id=\"clip0_977_8070\">\n <rect width=\"24\" height=\"24\" />\n </clipPath>\n </defs>\n </svg>\n`\n","export const codeIcon = `\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n >\n <g clip-path=\"url(#clip0_977_8081)\">\n <path\n d=\"M9.4 16.6L4.8 12L9.4 7.4L8 6L2 12L8 18L9.4 16.6ZM14.6 16.6L19.2 12L14.6 7.4L16 6L22 12L16 18L14.6 16.6Z\"\n />\n </g>\n <defs>\n <clipPath id=\"clip0_977_8081\">\n <rect width=\"24\" height=\"24\" />\n </clipPath>\n </defs>\n </svg>\n`\n","export const dividerIcon = `\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n >\n <g clip-path=\"url(#clip0_977_7900)\">\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M19 13H5C4.45 13 4 12.55 4 12C4 11.45 4.45 11 5 11H19C19.55 11 20 11.45 20 12C20 12.55 19.55 13 19 13Z\"\n />\n </g>\n <defs>\n <clipPath id=\"clip0_977_7900\">\n <rect width=\"24\" height=\"24\" />\n </clipPath>\n </defs>\n </svg>\n`\n","export const h1Icon = `\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n >\n <g clip-path=\"url(#clip0_992_5553)\">\n <path\n d=\"M19 3H5C3.9 3 3 3.9 3 5V19C3 20.1 3.9 21 5 21H19C20.1 21 21 20.1 21 19V5C21 3.9 20.1 3 19 3ZM19 19H5V5H19V19ZM12 17H14V7H10V9H12V17Z\"\n />\n </g>\n <defs>\n <clipPath id=\"clip0_992_5553\">\n <rect width=\"24\" height=\"24\" />\n </clipPath>\n </defs>\n </svg>\n`\n","export const h2Icon = `\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n >\n <g clip-path=\"url(#clip0_992_5559)\">\n <path\n d=\"M19 3H5C3.9 3 3 3.9 3 5V19C3 20.1 3.9 21 5 21H19C20.1 21 21 20.1 21 19V5C21 3.9 20.1 3 19 3ZM19 19H5V5H19V19ZM15 15H11V13H13C14.1 13 15 12.11 15 11V9C15 7.89 14.1 7 13 7H9V9H13V11H11C9.9 11 9 11.89 9 13V17H15V15Z\"\n />\n </g>\n <defs>\n <clipPath id=\"clip0_992_5559\">\n <rect width=\"24\" height=\"24\" />\n </clipPath>\n </defs>\n </svg>\n`\n","export const h3Icon = `\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n >\n <g clip-path=\"url(#clip0_992_5565)\">\n <path\n d=\"M19 3H5C3.9 3 3 3.9 3 5V19C3 20.1 3.9 21 5 21H19C20.1 21 21 20.1 21 19V5C21 3.9 20.1 3 19 3ZM19 19H5V5H19V19ZM15 15V13.5C15 12.67 14.33 12 13.5 12C14.33 12 15 11.33 15 10.5V9C15 7.89 14.1 7 13 7H9V9H13V11H11V13H13V15H9V17H13C14.1 17 15 16.11 15 15Z\"\n />\n </g>\n <defs>\n <clipPath id=\"clip0_992_5565\">\n <rect width=\"24\" height=\"24\" />\n </clipPath>\n </defs>\n </svg>\n`\n","export const h4Icon = `\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n >\n <g clip-path=\"url(#clip0_977_7757)\">\n <path\n d=\"M19.04 3H5.04004C3.94004 3 3.04004 3.9 3.04004 5V19C3.04004 20.1 3.94004 21 5.04004 21H19.04C20.14 21 21.04 20.1 21.04 19V5C21.04 3.9 20.14 3 19.04 3ZM19.04 19H5.04004V5H19.04V19ZM13.04 17H15.04V7H13.04V11H11.04V7H9.04004V13H13.04V17Z\"\n />\n </g>\n <defs>\n <clipPath id=\"clip0_977_7757\">\n <rect width=\"24\" height=\"24\" />\n </clipPath>\n </defs>\n </svg>\n`\n","export const h5Icon = `\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n >\n <g clip-path=\"url(#clip0_977_7760)\">\n <path\n d=\"M19 3H5C3.9 3 3 3.9 3 5V19C3 20.1 3.9 21 5 21H19C20.1 21 21 20.1 21 19V5C21 3.9 20.1 3 19 3ZM19 19H5V5H19V19ZM15 15V13C15 11.89 14.1 11 13 11H11V9H15V7H9V13H13V15H9V17H13C14.1 17 15 16.11 15 15Z\"\n />\n </g>\n <defs>\n <clipPath id=\"clip0_977_7760\">\n <rect width=\"24\" height=\"24\" />\n </clipPath>\n </defs>\n </svg>\n`\n","export const h6Icon = `\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n >\n <g clip-path=\"url(#clip0_977_7763)\">\n <path\n d=\"M11 17H13C14.1 17 15 16.11 15 15V13C15 11.89 14.1 11 13 11H11V9H15V7H11C9.9 7 9 7.89 9 9V15C9 16.11 9.9 17 11 17ZM11 13H13V15H11V13ZM19 3H5C3.9 3 3 3.9 3 5V19C3 20.1 3.9 21 5 21H19C20.1 21 21 20.1 21 19V5C21 3.9 20.1 3 19 3ZM19 19H5V5H19V19Z\"\n />\n </g>\n <defs>\n <clipPath id=\"clip0_977_7763\">\n <rect width=\"24\" height=\"24\" />\n </clipPath>\n </defs>\n </svg>\n`\n","export const imageIcon = `\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n >\n <g clip-path=\"url(#clip0_977_8075)\">\n <path\n d=\"M19 5V19H5V5H19ZM19 3H5C3.9 3 3 3.9 3 5V19C3 20.1 3.9 21 5 21H19C20.1 21 21 20.1 21 19V5C21 3.9 20.1 3 19 3ZM14.14 11.86L11.14 15.73L9 13.14L6 17H18L14.14 11.86Z\"\n />\n </g>\n <defs>\n <clipPath id=\"clip0_977_8075\">\n <rect width=\"24\" height=\"24\" />\n </clipPath>\n </defs>\n </svg>\n`\n","export const menuIcon = `\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n >\n <g clip-path=\"url(#clip0_971_7680)\">\n <path\n d=\"M11 18C11 19.1 10.1 20 9 20C7.9 20 7 19.1 7 18C7 16.9 7.9 16 9 16C10.1 16 11 16.9 11 18ZM9 10C7.9 10 7 10.9 7 12C7 13.1 7.9 14 9 14C10.1 14 11 13.1 11 12C11 10.9 10.1 10 9 10ZM9 4C7.9 4 7 4.9 7 6C7 7.1 7.9 8 9 8C10.1 8 11 7.1 11 6C11 4.9 10.1 4 9 4ZM15 8C16.1 8 17 7.1 17 6C17 4.9 16.1 4 15 4C13.9 4 13 4.9 13 6C13 7.1 13.9 8 15 8ZM15 10C13.9 10 13 10.9 13 12C13 13.1 13.9 14 15 14C16.1 14 17 13.1 17 12C17 10.9 16.1 10 15 10ZM15 16C13.9 16 13 16.9 13 18C13 19.1 13.9 20 15 20C16.1 20 17 19.1 17 18C17 16.9 16.1 16 15 16Z\"\n />\n </g>\n <defs>\n <clipPath id=\"clip0_971_7680\">\n <rect width=\"24\" height=\"24\" />\n </clipPath>\n </defs>\n </svg>\n`\n","export const orderedListIcon = `\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n >\n <g clip-path=\"url(#clip0_977_8067)\">\n <path\n d=\"M8 7H20C20.55 7 21 6.55 21 6C21 5.45 20.55 5 20 5H8C7.45 5 7 5.45 7 6C7 6.55 7.45 7 8 7ZM20 17H8C7.45 17 7 17.45 7 18C7 18.55 7.45 19 8 19H20C20.55 19 21 18.55 21 18C21 17.45 20.55 17 20 17ZM20 11H8C7.45 11 7 11.45 7 12C7 12.55 7.45 13 8 13H20C20.55 13 21 12.55 21 12C21 11.45 20.55 11 20 11ZM4.5 16H2.5C2.22 16 2 16.22 2 16.5C2 16.78 2.22 17 2.5 17H4V17.5H3.5C3.22 17.5 3 17.72 3 18C3 18.28 3.22 18.5 3.5 18.5H4V19H2.5C2.22 19 2 19.22 2 19.5C2 19.78 2.22 20 2.5 20H4.5C4.78 20 5 19.78 5 19.5V16.5C5 16.22 4.78 16 4.5 16ZM2.5 5H3V7.5C3 7.78 3.22 8 3.5 8C3.78 8 4 7.78 4 7.5V4.5C4 4.22 3.78 4 3.5 4H2.5C2.22 4 2 4.22 2 4.5C2 4.78 2.22 5 2.5 5ZM4.5 10H2.5C2.22 10 2 10.22 2 10.5C2 10.78 2.22 11 2.5 11H3.8L2.12 12.96C2.04 13.05 2 13.17 2 13.28V13.5C2 13.78 2.22 14 2.5 14H4.5C4.78 14 5 13.78 5 13.5C5 13.22 4.78 13 4.5 13H3.2L4.88 11.04C4.96 10.95 5 10.83 5 10.72V10.5C5 10.22 4.78 10 4.5 10Z\"\n />\n </g>\n <defs>\n <clipPath id=\"clip0_977_8067\">\n <rect width=\"24\" height=\"24\" />\n </clipPath>\n </defs>\n </svg>\n`\n","export const plusIcon = `\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n >\n <g clip-path=\"url(#clip0_971_7676)\">\n <path\n d=\"M18 13H13V18C13 18.55 12.55 19 12 19C11.45 19 11 18.55 11 18V13H6C5.45 13 5 12.55 5 12C5 11.45 5.45 11 6 11H11V6C11 5.45 11.45 5 12 5C12.55 5 13 5.45 13 6V11H18C18.55 11 19 11.45 19 12C19 12.55 18.55 13 18 13Z\"\n />\n </g>\n <defs>\n <clipPath id=\"clip0_971_7676\">\n <rect width=\"24\" height=\"24\" />\n </clipPath>\n </defs>\n </svg>\n`\n","export const quoteIcon = `\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n >\n <g clip-path=\"url(#clip0_977_7897)\">\n <path\n d=\"M7.17 17C7.68 17 8.15 16.71 8.37 16.26L9.79 13.42C9.93 13.14 10 12.84 10 12.53V8C10 7.45 9.55 7 9 7H5C4.45 7 4 7.45 4 8V12C4 12.55 4.45 13 5 13H7L5.97 15.06C5.52 15.95 6.17 17 7.17 17ZM17.17 17C17.68 17 18.15 16.71 18.37 16.26L19.79 13.42C19.93 13.14 20 12.84 20 12.53V8C20 7.45 19.55 7 19 7H15C14.45 7 14 7.45 14 8V12C14 12.55 14.45 13 15 13H17L15.97 15.06C15.52 15.95 16.17 17 17.17 17Z\"\n />\n </g>\n <defs>\n <clipPath id=\"clip0_977_7897\">\n <rect width=\"24\" height=\"24\" />\n </clipPath>\n </defs>\n </svg>\n`\n","export const tableIcon = `\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n >\n <g clip-path=\"url(#clip0_977_8078)\">\n <path\n d=\"M20 3H5C3.9 3 3 3.9 3 5V19C3 20.1 3.9 21 5 21H20C21.1 21 22 20.1 22 19V5C22 3.9 21.1 3 20 3ZM20 5V8H5V5H20ZM15 19H10V10H15V19ZM5 10H8V19H5V10ZM17 19V10H20V19H17Z\"\n />\n </g>\n <defs>\n <clipPath id=\"clip0_977_8078\">\n <rect width=\"24\" height=\"24\" />\n </clipPath>\n </defs>\n </svg>\n`\n","export const textIcon = `\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n >\n <g clip-path=\"url(#clip0_992_5547)\">\n <path\n d=\"M5 5.5C5 6.33 5.67 7 6.5 7H10.5V17.5C10.5 18.33 11.17 19 12 19C12.83 19 13.5 18.33 13.5 17.5V7H17.5C18.33 7 19 6.33 19 5.5C19 4.67 18.33 4 17.5 4H6.5C5.67 4 5 4.67 5 5.5Z\"\n />\n </g>\n <defs>\n <clipPath id=\"clip0_992_5547\">\n <rect width=\"24\" height=\"24\" />\n </clipPath>\n </defs>\n </svg>\n`\n","export const todoListIcon = `\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n >\n <path\n d=\"M5.66936 16.3389L9.39244 12.6158C9.54115 12.4671 9.71679 12.3937 9.91936 12.3957C10.1219 12.3976 10.2975 12.4761 10.4463 12.6312C10.5847 12.7823 10.654 12.9585 10.654 13.1599C10.654 13.3613 10.5847 13.5363 10.4463 13.6851L6.32704 17.8197C6.14627 18.0004 5.93538 18.0908 5.69436 18.0908C5.45333 18.0908 5.24243 18.0004 5.06166 17.8197L3.01744 15.7754C2.87899 15.637 2.81136 15.4629 2.81456 15.2533C2.81776 15.0437 2.88859 14.8697 3.02706 14.7312C3.16551 14.5928 3.34008 14.5235 3.55076 14.5235C3.76144 14.5235 3.93494 14.5928 4.07126 14.7312L5.66936 16.3389ZM5.66936 8.72359L9.39244 5.00049C9.54115 4.85177 9.71679 4.77838 9.91936 4.78031C10.1219 4.78223 10.2975 4.86075 10.4463 5.01586C10.5847 5.16691 10.654 5.34314 10.654 5.54454C10.654 5.74592 10.5847 5.92097 10.4463 6.06969L6.32704 10.2043C6.14627 10.3851 5.93538 10.4755 5.69436 10.4755C5.45333 10.4755 5.24243 10.3851 5.06166 10.2043L3.01744 8.16009C2.87899 8.02162 2.81136 7.84759 2.81456 7.63799C2.81776 7.42837 2.88859 7.25433 3.02706 7.11586C3.16551 6.97741 3.34008 6.90819 3.55076 6.90819C3.76144 6.90819 3.93494 6.97741 4.07126 7.11586L5.66936 8.72359ZM13.7597 16.5581C13.5472 16.5581 13.3691 16.4862 13.2253 16.3424C13.0816 16.1986 13.0097 16.0204 13.0097 15.8078C13.0097 15.5952 13.0816 15.4171 13.2253 15.2735C13.3691 15.13 13.5472 15.0582 13.7597 15.0582H20.7597C20.9722 15.0582 21.1503 15.1301 21.2941 15.2739C21.4378 15.4177 21.5097 15.5959 21.5097 15.8085C21.5097 16.0211 21.4378 16.1992 21.2941 16.3427C21.1503 16.4863 20.9722 16.5581 20.7597 16.5581H13.7597ZM13.7597 8.94276C13.5472 8.94276 13.3691 8.87085 13.2253 8.72704C13.0816 8.58324 13.0097 8.40504 13.0097 8.19244C13.0097 7.97985 13.0816 7.80177 13.2253 7.65819C13.3691 7.5146 13.5472 7.44281 13.7597 7.44281H20.7597C20.9722 7.44281 21.1503 7.51471 21.2941 7.65851C21.4378 7.80233 21.5097 7.98053 21.5097 8.19311C21.5097 8.40571 21.4378 8.5838 21.2941 8.72739C21.1503 8.87097 20.9722 8.94276 20.7597 8.94276H13.7597Z\"\n />\n </svg>\n`\n","export const functionsIcon = `\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"32\"\n height=\"32\"\n viewBox=\"0 0 24 24\"\n >\n <path\n fill=\"currentColor\"\n d=\"M7 19v-.808L13.096 12L7 5.808V5h10v1.25H9.102L14.727 12l-5.625 5.77H17V19z\"\n />\n </svg>\n`\n","import type { Selection } from '@milkdown/kit/prose/state'\n\nexport function isInCodeBlock(selection: Selection) {\n const type = selection.$from.parent.type\n return type.name === 'code_block'\n}\n\nexport function isInList(selection: Selection) {\n const type = selection.$from.node(selection.$from.depth - 1)?.type\n return type?.name === 'list_item'\n}\n","import type { Ctx } from '@milkdown/kit/ctx'\n\ntype MenuItem<T> = {\n index: number\n key: string\n onRun: (ctx: Ctx) => void\n} & T\n\ntype WithRange<T, HasIndex extends true | false = true> = HasIndex extends true\n ? T & { range: [start: number, end: number] }\n : T\n\nexport type MenuItemGroup<T, HasIndex extends true | false = true> = WithRange<\n {\n key: string\n label: string\n items: HasIndex extends true ? MenuItem<T>[] : Omit<MenuItem<T>, 'index'>[]\n },\n HasIndex\n>\n\nexport class GroupBuilder<T> {\n #groups: MenuItemGroup<T, false>[] = []\n\n clear = () => {\n this.#groups = []\n return this\n }\n\n #getGroupInstance = (group: MenuItemGroup<T, false>) => {\n const groupInstance = {\n group,\n addItem: (key: string, item: Omit<MenuItem<T>, 'key' | 'index'>) => {\n const data = { ...item, key } as MenuItem<T>\n group.items.push(data)\n return groupInstance\n },\n clear: () => {\n group.items = []\n return groupInstance\n },\n }\n return groupInstance\n }\n\n addGroup = (key: string, label: string) => {\n const items: Omit<MenuItem<T>, 'index'>[] = []\n const group: MenuItemGroup<T, false> = {\n key,\n label,\n items,\n }\n this.#groups.push(group)\n\n return this.#getGroupInstance(group)\n }\n\n getGroup = (key: string) => {\n const group = this.#groups.find((group) => group.key === key)\n if (!group) throw new Error(`Group with key ${key} not found`)\n\n return this.#getGroupInstance(group)\n }\n\n build = () => {\n return this.#groups\n }\n}\n","import type { Ctx } from '@milkdown/kit/ctx'\n\nimport { imageBlockSchema } from '@milkdown/kit/component/image-block'\nimport { commandsCtx, editorViewCtx } from '@milkdown/kit/core'\nimport {\n addBlockTypeCommand,\n blockquoteSchema,\n bulletListSchema,\n clearTextInCurrentBlockCommand,\n codeBlockSchema,\n headingSchema,\n hrSchema,\n listItemSchema,\n orderedListSchema,\n paragraphSchema,\n selectTextNearPosCommand,\n setBlockTypeCommand,\n wrapInBlockTypeCommand,\n} from '@milkdown/kit/preset/commonmark'\nimport { createTable } from '@milkdown/kit/preset/gfm'\n\nimport type { BlockEditFeatureConfig } from '../index'\nimport type { SlashMenuItem } from './utils'\n\nimport { useCrepeFeatures } from '../../../core/slice'\nimport { CrepeFeature } from '../../../feature'\nimport {\n bulletListIcon,\n codeIcon,\n dividerIcon,\n functionsIcon,\n h1Icon,\n h2Icon,\n h3Icon,\n h4Icon,\n h5Icon,\n h6Icon,\n imageIcon,\n orderedListIcon,\n quoteIcon,\n tableIcon,\n textIcon,\n todoListIcon,\n} from '../../../icons'\nimport { GroupBuilder, type MenuItemGroup } from '../../../utils/group-builder'\n\nexport function getGroups(\n filter?: string,\n config?: BlockEditFeatureConfig,\n ctx?: Ctx\n) {\n const flags = ctx && useCrepeFeatures(ctx).get()\n const isLatexEnabled = flags?.includes(CrepeFeature.Latex)\n const isImageBlockEnabled = flags?.includes(CrepeFeature.ImageBlock)\n const isTableEnabled = flags?.includes(CrepeFeature.Table)\n\n const groupBuilder = new GroupBuilder<SlashMenuItem>()\n if (config?.textGroup !== null) {\n const textGroup = groupBuilder.addGroup(\n 'text',\n config?.textGroup?.label ?? 'Text'\n )\n if (config?.textGroup?.text !== null) {\n textGroup.addItem('text', {\n label: config?.textGroup?.text?.label ?? 'Text',\n icon: config?.textGroup?.text?.icon ?? textIcon,\n onRun: (ctx) => {\n const commands = ctx.get(commandsCtx)\n const paragraph = paragraphSchema.type(ctx)\n\n commands.call(clearTextInCurrentBlockCommand.key)\n commands.call(setBlockTypeCommand.key, {\n nodeType: paragraph,\n })\n },\n })\n }\n\n if (config?.textGroup?.h1 !== null) {\n textGroup.addItem('h1', {\n label: config?.textGroup?.h1?.label ?? 'Heading 1',\n icon: config?.textGroup?.h1?.icon ?? h1Icon,\n onRun: (ctx) => {\n const commands = ctx.get(commandsCtx)\n const heading = headingSchema.type(ctx)\n\n commands.call(clearTextInCurrentBlockCommand.key)\n commands.call(setBlockTypeCommand.key, {\n nodeType: heading,\n attrs: {\n level: 1,\n },\n })\n },\n })\n }\n\n if (config?.textGroup?.h2 !== null) {\n textGroup.addItem('h2', {\n label: config?.textGroup?.h2?.label ?? 'Heading 2',\n icon: config?.textGroup?.h2?.icon ?? h2Icon,\n onRun: (ctx) => {\n const commands = ctx.get(commandsCtx)\n const heading = headingSchema.type(ctx)\n\n commands.call(clearTextInCurrentBlockCommand.key)\n commands.call(setBlockTypeCommand.key, {\n nodeType: heading,\n attrs: {\n level: 2,\n },\n })\n },\n })\n }\n\n if (config?.textGroup?.h3 !== null) {\n textGroup.addItem('h3', {\n label: config?.textGroup?.h3?.label ?? 'Heading 3',\n icon: config?.textGroup?.h3?.icon ?? h3Icon,\n onRun: (ctx) => {\n const commands = ctx.get(commandsCtx)\n const heading = headingSchema.type(ctx)\n\n commands.call(clearTextInCurrentBlockCommand.key)\n commands.call(setBlockTypeCommand.key, {\n nodeType: heading,\n attrs: {\n level: 3,\n },\n })\n },\n })\n }\n\n if (config?.textGroup?.h4 !== null) {\n textGroup.addItem('h4', {\n label: config?.textGroup?.h4?.label ?? 'Heading 4',\n icon: config?.textGroup?.h4?.icon ?? h4Icon,\n onRun: (ctx) => {\n const commands = ctx.get(commandsCtx)\n const heading = headingSchema.type(ctx)\n\n commands.call(clearTextInCurrentBlockCommand.key)\n commands.call(setBlockTypeCommand.key, {\n nodeType: heading,\n attrs: {\n level: 4,\n },\n })\n },\n })\n }\n\n if (config?.textGroup?.h5 !== null) {\n textGroup.addItem('h5', {\n label: config?.textGroup?.h5?.label ?? 'Heading 5',\n icon: config?.textGroup?.h5?.icon ?? h5Icon,\n onRun: (ctx) => {\n const commands = ctx.get(commandsCtx)\n const heading = headingSchema.type(ctx)\n\n commands.call(clearTextInCurrentBlockCommand.key)\n commands.call(setBlockTypeCommand.key, {\n nodeType: heading,\n attrs: {\n level: 5,\n },\n })\n },\n })\n }\n\n if (config?.textGroup?.h6 !== null) {\n textGroup.addItem('h6', {\n label: config?.textGroup?.h6?.label ?? 'Heading 6',\n icon: config?.textGroup?.h6?.icon ?? h6Icon,\n onRun: (ctx) => {\n const commands = ctx.get(commandsCtx)\n const heading = headingSchema.type(ctx)\n\n commands.call(clearTextInCurrentBlockCommand.key)\n commands.call(setBlockTypeCommand.key, {\n nodeType: heading,\n attrs: {\n level: 6,\n },\n })\n },\n })\n }\n\n if (config?.textGroup?.quote !== null) {\n textGroup.addItem('quote', {\n label: config?.textGroup?.quote?.label ?? 'Quote',\n icon: config?.textGroup?.quote?.icon ?? quoteIcon,\n onRun: (ctx) => {\n const commands = ctx.get(commandsCtx)\n const blockquote = blockquoteSchema.type(ctx)\n\n commands.call(clearTextInCurrentBlockCommand.key)\n commands.call(wrapInBlockTypeCommand.key, {\n nodeType: blockquote,\n })\n },\n })\n }\n\n if (config?.textGroup?.divider !== null) {\n textGroup.addItem('divider', {\n label: config?.textGroup?.divider?.label ?? 'Divider',\n icon: config?.textGroup?.divider?.icon ?? dividerIcon,\n onRun: (ctx) => {\n const commands = ctx.get(commandsCtx)\n const hr = hrSchema.type(ctx)\n\n commands.call(clearTextInCurrentBlockCommand.key)\n commands.call(addBlockTypeCommand.key, {\n nodeType: hr,\n })\n },\n })\n }\n }\n\n if (config?.listGroup !== null) {\n const listGroup = groupBuilder.addGroup(\n 'list',\n config?.listGroup?.label ?? 'List'\n )\n if (config?.listGroup?.bulletList !== null) {\n listGroup.addItem('bullet-list', {\n label: config?.listGroup?.bulletList?.label ?? 'Bullet List',\n icon: config?.listGroup?.bulletList?.icon ?? bulletListIcon,\n onRun: (ctx) => {\n const commands = ctx.get(commandsCtx)\n const bulletList = bulletListSchema.type(ctx)\n\n commands.call(clearTextInCurrentBlockCommand.key)\n commands.call(wrapInBlockTypeCommand.key, {\n nodeType: bulletList,\n })\n },\n })\n }\n\n if (config?.listGroup?.orderedList !== null) {\n listGroup.addItem('ordered-list', {\n label: config?.listGroup?.orderedList?.label ?? 'Ordered List',\n icon: config?.listGroup?.orderedList?.icon ?? orderedListIcon,\n onRun: (ctx) => {\n const commands = ctx.get(commandsCtx)\n const orderedList = orderedListSchema.type(ctx)\n\n commands.call(clearTextInCurrentBlockCommand.key)\n commands.call(wrapInBlockTypeCommand.key, {\n nodeType: orderedList,\n })\n },\n })\n }\n\n if (config?.listGroup?.taskList !== null) {\n listGroup.addItem('task-list', {\n label: config?.listGroup?.taskList?.label ?? 'Task List',\n icon: config?.listGroup?.taskList?.icon ?? todoListIcon,\n onRun: (ctx) => {\n const commands = ctx.get(commandsCtx)\n const listItem = listItemSchema.type(ctx)\n\n commands.call(clearTextInCurrentBlockCommand.key)\n commands.call(wrapInBlockTypeCommand.key, {\n nodeType: listItem,\n attrs: { checked: false },\n })\n },\n })\n }\n }\n\n if (config?.advancedGroup !== null) {\n const advancedGroup = groupBuilder.addGroup(\n 'advanced',\n config?.advancedGroup?.label ?? 'Advanced'\n )\n\n if (config?.advancedGroup?.image !== null && isImageBlockEnabled) {\n advancedGroup.addItem('image', {\n label: config?.advancedGroup?.image?.label ?? 'Image',\n icon: config?.advancedGroup?.image?.icon ?? imageIcon,\n onRun: (ctx) => {\n const commands = ctx.get(commandsCtx)\n const imageBlock = imageBlockSchema.type(ctx)\n\n commands.call(clearTextInCurrentBlockCommand.key)\n commands.call(addBlockTypeCommand.key, {\n nodeType: imageBlock,\n })\n },\n })\n }\n\n if (config?.advancedGroup?.codeBlock !== null) {\n advancedGroup.addItem('code', {\n label: config?.advancedGroup?.codeBlock?.label ?? 'Code',\n icon: config?.advancedGroup?.codeBlock?.icon ?? codeIcon,\n onRun: (ctx) => {\n const commands = ctx.get(commandsCtx)\n const codeBlock = codeBlockSchema.type(ctx)\n\n commands.call(clearTextInCurrentBlockCommand.key)\n commands.call(setBlockTypeCommand.key, {\n nodeType: codeBlock,\n })\n },\n })\n }\n\n if (config?.advancedGroup?.table !== null && isTableEnabled) {\n advancedGroup.addItem('table', {\n label: config?.advancedGroup?.table?.label ?? 'Table',\n icon: config?.advancedGroup?.table?.icon ?? tableIcon,\n onRun: (ctx) => {\n const commands = ctx.get(commandsCtx)\n const view = ctx.get(editorViewCtx)\n\n commands.call(clearTextInCurrentBlockCommand.key)\n\n // record the position before the table is inserted\n const { from } = view.state.selection\n commands.call(addBlockTypeCommand.key, {\n nodeType: createTable(ctx, 3, 3),\n })\n\n commands.call(selectTextNearPosCommand.key, {\n pos: from,\n })\n },\n })\n }\n\n if (config?.advancedGroup?.math !== null && isLatexEnabled) {\n advancedGroup.addItem('math', {\n label: config?.advancedGroup?.math?.label ?? 'Math',\n icon: config?.advancedGroup?.math?.icon ?? functionsIcon,\n onRun: (ctx) => {\n const commands = ctx.get(commandsCtx)\n const codeBlock = codeBlockSchema.type(ctx)\n\n commands.call(clearTextInCurrentBlockCommand.key)\n commands.call(addBlockTypeCommand.key, {\n nodeType: codeBlock,\n attrs: { language: 'LaTex' },\n })\n },\n })\n }\n }\n\n config?.buildMenu?.(groupBuilder)\n\n let groups = groupBuilder.build()\n\n if (filter) {\n groups = groups\n .map((group) => {\n const items = group.items.filter((item) =>\n item.label.toLowerCase().includes(filter.toLowerCase())\n )\n\n return {\n ...group,\n items,\n }\n })\n .filter((group) => group.items.length > 0)\n }\n\n const items = groups.flatMap((groups) => groups.items)\n items.forEach((item, index) => {\n Object.assign(item, { index })\n })\n\n groups.reduce((acc, group) => {\n const end = acc + group.items.length\n Object.assign(group, {\n range: [acc, end],\n })\n return end\n }, 0)\n\n return {\n groups: groups as MenuItemGroup<SlashMenuItem>[],\n size: items.length,\n }\n}\n","import type { Ctx } from '@milkdown/kit/ctx'\n\nimport { Icon } from '@milkdown/kit/component'\nimport {\n computed,\n defineComponent,\n onUnmounted,\n ref,\n watch,\n watchEffect,\n type Ref,\n h,\n} from 'vue'\n\nimport type { BlockEditFeatureConfig } from '..'\n\nimport { getGroups } from './config'\n\nh\n\ntype MenuProps = {\n ctx: Ctx\n show: Ref<boolean>\n filter: Ref<string>\n hide: () => void\n config?: BlockEditFeatureConfig\n}\n\nexport const Menu = defineComponent<MenuProps>({\n props: {\n ctx: {\n type: Object,\n required: true,\n },\n show: {\n type: Object,\n required: true,\n },\n filter: {\n type: Object,\n required: true,\n },\n hide: {\n type: Function,\n required: true,\n },\n config: {\n type: Object,\n required: false,\n },\n },\n setup({ ctx, show, filter, hide, config }) {\n const host = ref<HTMLElement>()\n const groupInfo = computed(() => getGroups(filter.value, config, ctx))\n const hoverIndex = ref(0)\n const prevMousePosition = ref({ x: -999, y: -999 })\n\n const onPointerMove = (e: MouseEvent) => {\n const { x, y } = e\n prevMousePosition.value = { x, y }\n }\n\n watch([groupInfo, show], () => {\n const { size } = groupInfo.value\n if (size === 0 && show.value) hide()\n else if (hoverIndex.value >= size) hoverIndex.value = 0\n })\n\n const onHover = (\n index: number | ((prev: number) => number),\n after?: (index: number) => void\n ) => {\n const prevHoverIndex = hoverIndex.value\n const next = typeof index === 'function' ? index(prevHoverIndex) : index\n after?.(next)\n hoverIndex.value = next\n }\n\n const scrollToIndex = (index: number) => {\n const target = host.value?.querySelector<HTMLElement>(\n `[data-index=\"${index}\"]`\n )\n const scrollRoot = host.value?.querySelector<HTMLElement>('.menu-groups')\n\n if (!target || !scrollRoot) return\n\n scrollRoot.scrollTop = target.offsetTop - scrollRoot.offsetTop\n }\n\n const runByIndex = (index: number) => {\n const item = groupInfo.value.groups\n .flatMap((group) => group.items)\n .at(index)\n if (item && ctx) item.onRun(ctx)\n\n hide()\n }\n\n const onKeydown = (e: KeyboardEvent) => {\n const { size, groups } = groupInfo.value\n if (e.key === 'Escape') {\n e.preventDefault()\n hide?.()\n return\n }\n\n if (e.key === 'ArrowDown') {\n e.preventDefault()\n return onHover(\n (index) => (index < size - 1 ? index + 1 : index),\n scrollToIndex\n )\n }\n\n if (e.key === 'ArrowUp') {\n e.preventDefault()\n return onHover(\n (index) => (index <= 0 ? index : index - 1),\n scrollToIndex\n )\n }\n\n if (e.key === 'ArrowLeft') {\n e.preventDefault()\n return onHover((index) => {\n const group = groups.find(\n (group) => group.range[0] <= index && group.range[1] > index\n )\n if (!group) return index\n\n const prevGroup = groups[groups.indexOf(group) - 1]\n if (!prevGroup) return index\n\n return prevGroup.range[1] - 1\n }, scrollToIndex)\n }\n\n if (e.key === 'ArrowRight') {\n e.preventDefault()\n return onHover((index) => {\n const group = groups.find(\n (group) => group.range[0] <= index && group.range[1] > index\n )\n if (!group) return index\n\n const nextGroup = groups[groups.indexOf(group) + 1]\n if (!nextGroup) return index\n\n return nextGroup.range[0]\n }, scrollToIndex)\n }\n\n if (e.key === 'Enter') {\n e.preventDefault()\n runByIndex(hoverIndex.value)\n }\n }\n\n const getOnPointerEnter = (index: number) => (e: MouseEvent) => {\n const prevPos = prevMousePosition.value\n if (!prevPos) return\n\n const { x, y } = e\n if (x === prevPos.x && y === prevPos.y) return\n\n onHover(index)\n }\n\n watchEffect(() => {\n const isShown = show.value\n if (isShown) {\n window.addEventListener('keydown', onKeydown, { capture: true })\n } else {\n window.removeEventListener('keydown', onKeydown, { capture: true })\n }\n })\n onUnmounted(() => {\n window.removeEventListener('keydown', onKeydown, { capture: true })\n })\n\n return () => {\n return (\n <div ref={host} onPointerdown={(e) => e.preventDefault()}>\n <nav class=\"tab-group\">\n <ul>\n {groupInfo.value.groups.map((group) => (\n <li\n key={group.key}\n onPointerdown={() => onHover(group.range[0], scrollToIndex)}\n class={\n hoverIndex.value >= group.range[0] &&\n hoverIndex.value < group.range[1]\n ? 'selected'\n : ''\n }\n >\n {group.label}\n </li>\n ))}\n </ul>\n </nav>\n <div class=\"menu-groups\" onPointermove={onPointerMove}>\n {groupInfo.value.groups.map((group) => (\n <div key={group.key} class=\"menu-group\">\n <h6>{group.label}</h6>\n <ul>\n {group.items.map((item) => (\n <li\n key={item.key}\n data-index={item.index}\n class={hoverIndex.value === item.index ? 'hover' : ''}\n onPointerenter={getOnPointerEnter(item.index)}\n onPointerdown={() => {\n host.value\n ?.querySelector(`[data-index=\"${item.index}\"]`)\n ?.classList.add('active')\n }}\n onPointerup={() => {\n host.value\n ?.querySelector(`[data-index=\"${item.index}\"]`)\n ?.classList.remove('active')\n runByIndex(item.index)\n }}\n >\n <Icon icon={item.icon} />\n <span>{item.label}</span>\n </li>\n ))}\n </ul>\n </div>\n ))}\n </div>\n </div>\n )\n }\n },\n})\n","import type { Ctx } from '@milkdown/kit/ctx'\nimport type { EditorView } from '@milkdown/kit/prose/view'\n\nimport { SlashProvider, slashFactory } from '@milkdown/kit/plugin/slash'\nimport {\n TextSelection,\n type PluginView,\n type Selection,\n} from '@milkdown/kit/prose/state'\nimport { $ctx } from '@milkdown/kit/utils'\nimport { createApp, ref, type App, type Ref } from 'vue'\n\nimport type { BlockEditFeatureConfig } from '../index'\n\nimport { isInCodeBlock, isInList } from '../../../utils'\nimport { Menu } from './component'\n\nexport const menu = slashFactory('CREPE_MENU')\n\ninterface MenuAPI {\n show: (pos: number) => void\n hide: () => void\n}\n\nexport const menuAPI = $ctx(\n {\n show: () => {},\n hide: () => {},\n } as MenuAPI,\n 'menuAPICtx'\n)\n\nexport function configureMenu(ctx: Ctx, config?: BlockEditFeatureConfig) {\n ctx.set(menu.key, {\n view: (view) => new MenuView(ctx, view, config),\n })\n}\n\nclass MenuView implements PluginView {\n readonly #content: HTMLElement\n readonly #app: App\n readonly #filter: Ref<string>\n readonly #slashProvider: SlashProvider\n #programmaticallyPos: number | null = null\n\n constructor(ctx: Ctx, view: EditorView, config?: BlockEditFeatureConfig) {\n const content = document.createElement('div')\n content.classList.add('milkdown-slash-menu')\n const show = ref(false)\n\n const filter = ref('')\n this.#filter = filter\n\n const hide = this.hide\n\n const app = createApp(Menu, {\n ctx,\n config,\n show,\n filter,\n hide,\n })\n this.#app = app\n app.mount(content)\n\n this.#content = content\n // oxlint-disable-next-line ts/no-this-alias\n const self = this\n this.#slashProvider = new SlashProvider({\n content: this.#content,\n debounce: 20,\n shouldShow(this: SlashProvider, view: EditorView) {\n if (\n isInCodeBlock(view.state.selection) ||\n isInList(view.state.selection)\n )\n return false\n\n const currentText = this.getContent(view, (node) =>\n ['paragraph', 'heading'].includes(node.type.name)\n )\n\n if (currentText == null) return false\n\n if (!isSelectionAtEndOfNode(view.state.selection)) {\n return false\n }\n\n const pos = self.#programmaticallyPos\n\n filter.value = currentText.startsWith('/')\n ? currentText.slice(1)\n : currentText\n\n if (typeof pos === 'number') {\n const maxSize = view.state.doc.nodeSize - 2\n const validPos = Math.min(pos, maxSize)\n if (\n view.state.doc.resolve(validPos).node() !==\n view.state.doc.resolve(view.state.selection.from).node()\n ) {\n self.#programmaticallyPos = null\n\n return false\n }\n\n return true\n }\n\n if (!currentText.startsWith('/')) return false\n\n return true\n },\n offset: 10,\n })\n\n this.#slashProvider.onShow = () => {\n show.value = true\n }\n this.#slashProvider.onHide = () => {\n show.value = false\n }\n this.update(view)\n\n ctx.set(menuAPI.key, {\n show: (pos) => this.show(pos),\n hide: () => this.hide(),\n })\n }\n\n update = (view: EditorView) => {\n this.#slashProvider.update(view)\n }\n\n show = (pos: number) => {\n this.#programmaticallyPos = pos\n this.#filter.value = ''\n this.#slashProvider.show()\n }\n\n hide = () => {\n this.#programmaticallyPos = null\n this.#slashProvider.hide()\n }\n\n destroy = () => {\n this.#slashProvider.destroy()\n this.#app.unmount()\n this.#content.remove()\n }\n}\n\nfunction isSelectionAtEndOfNode(selection: Selection) {\n if (!(selection instanceof TextSelection)) return false\n\n const { $head } = selection\n const parent = $head.parent\n const offset = $head.parentOffset\n\n return offset === parent.content.size\n}\n","import { Icon } from '@milkdown/kit/component'\nimport { defineComponent, ref, h, Fragment } from 'vue'\n\nh\nFragment\n\ninterface BlockHandleProps {\n onAdd: () => void\n addIcon: string\n handleIcon: string\n}\n\nexport const BlockHandle = defineComponent<BlockHandleProps>({\n props: {\n onAdd: {\n type: Function,\n required: true,\n },\n addIcon: {\n type: String,\n required: true,\n },\n handleIcon: {\n type: String,\n required: true,\n },\n },\n setup(props) {\n const addButton = ref<HTMLDivElement>()\n\n return () => {\n return (\n <>\n <div\n ref={addButton}\n class=\"operation-item\"\n onPointerdown={(e) => {\n e.preventDefault()\n e.stopPropagation()\n addButton.value?.classList.add('active')\n }}\n onPointerup={(e) => {\n e.preventDefault()\n e.stopPropagation()\n addButton.value?.classList.remove('active')\n props.onAdd()\n }}\n >\n <Icon icon={props.addIcon} />\n </div>\n <div class=\"operation-item\">\n <Icon icon={props.handleIcon} />\n </div>\n </>\n )\n }\n },\n})\n","import type { Ctx } from '@milkdown/kit/ctx'\nimport type { PluginView } from '@milkdown/kit/prose/state'\n\nimport { editorViewCtx } from '@milkdown/kit/core'\nimport {\n BlockProvider,\n block,\n blockConfig,\n type BlockProviderOptions,\n} from '@milkdown/kit/plugin/block'\nimport { paragraphSchema } from '@milkdown/kit/preset/commonmark'\nimport { findParent } from '@milkdown/kit/prose'\nimport { TextSelection } from '@milkdown/kit/prose/state'\nimport { createApp, type App } from 'vue'\n\nimport type { BlockEditFeatureConfig } from '../index'\n\nimport { menuIcon, plusIcon } from '../../../icons'\nimport { menuAPI } from '../menu'\nimport { BlockHandle } from './component'\n\nclass BlockHandleView implements PluginView {\n #content: HTMLElement\n #provider: BlockProvider\n #app: App\n readonly #ctx: Ctx\n\n constructor(ctx: Ctx, config?: BlockEditFeatureConfig) {\n this.#ctx = ctx\n const content = document.createElement('div')\n content.classList.add('milkdown-block-handle')\n const app = createApp(BlockHandle, {\n onAdd: this.onAdd,\n addIcon: config?.handleAddIcon ?? plusIcon,\n handleIcon: config?.handleDragIcon ?? menuIcon,\n })\n app.mount(content)\n this.#app = app\n this.#content = content\n const blockProviderOptions = config?.blockHandle ?? {}\n this.#provider = new BlockProvider({\n ctx,\n content,\n getOffset: () => 16,\n getPlacement: ({ active, blockDom }) => {\n if (active.node.type.name === 'heading') return 'left'\n\n let totalDescendant = 0\n active.node.descendants((node) => {\n totalDescendant += node.childCount\n })\n const dom = active.el\n const domRect = dom.getBoundingClientRect()\n const handleRect = blockDom.getBoundingClientRect()\n const style = window.getComputedStyle(dom)\n const paddingTop = Number.parseInt(style.paddingTop, 10) || 0\n const paddingBottom = Number.parseInt(style.paddingBottom, 10) || 0\n const height = domRect.height - paddingTop - paddingBottom\n const handleHeight = handleRect.height\n return totalDescendant > 2 || handleHeight < height\n ? 'left-start'\n : 'left'\n },\n ...(blockProviderOptions as Partial<BlockProviderOptions>),\n })\n this.update()\n }\n\n update = () => {\n this.#provider.update()\n }\n\n destroy = () => {\n this.#provider.destroy()\n this.#content.remove()\n this.#app.unmount()\n }\n\n onAdd = () => {\n const ctx = this.#ctx\n const view = ctx.get(editorViewCtx)\n if (!view.hasFocus()) view.focus()\n\n const { state, dispatch } = view\n const active = this.#provider.active\n if (!active) return\n\n const $pos = active.$pos\n const pos = $pos.pos + active.node.nodeSize\n let tr = state.tr.insert(pos, paragraphSchema.type(ctx).create())\n tr = tr.setSelection(TextSelection.near(tr.doc.resolve(pos)))\n dispatch(tr.scrollIntoView())\n\n this.#provider.hide()\n ctx.get(menuAPI.key).show(tr.selection.from)\n }\n}\n\nexport function configureBlockHandle(\n ctx: Ctx,\n config?: BlockEditFeatureConfig\n) {\n ctx.set(blockConfig.key, {\n filterNodes: (pos) => {\n const filter = findParent((node) =>\n ['table', 'blockquote', 'math_inline'].includes(node.type.name)\n )(pos)\n if (filter) return false\n\n return true\n },\n })\n ctx.set(block.key, {\n view: () => new BlockHandleView(ctx, config),\n })\n}\n","import { block, type BlockProviderOptions } from '@milkdown/kit/plugin/block'\n\nimport type { DeepPartial } from '../../utils'\nimport type { GroupBuilder } from '../../utils/group-builder'\nimport type { DefineFeature } from '../shared'\nimport type { SlashMenuItem } from './menu/utils'\n\nimport { crepeFeatureConfig } from '../../core/slice'\nimport { CrepeFeature } from '../index'\nimport { configureBlockHandle } from './handle'\nimport { configureMenu, menu, menuAPI } from './menu'\n\ninterface BlockEditConfig {\n handleAddIcon: string\n handleDragIcon: string\n buildMenu: (builder: GroupBuilder<SlashMenuItem>) => void\n\n blockHandle: Pick<\n BlockProviderOptions,\n | 'shouldShow'\n | 'getOffset'\n | 'getPosition'\n | 'getPlacement'\n | 'middleware'\n | 'floatingUIOptions'\n | 'root'\n >\n\n textGroup: {\n label: string\n text: {\n label: string\n icon: string\n } | null\n h1: {\n label: string\n icon: string\n } | null\n h2: {\n label: string\n icon: string\n } | null\n h3: {\n label: string\n icon: string\n } | null\n h4: {\n label: string\n icon: string\n } | null\n h5: {\n label: string\n icon: string\n } | null\n h6: {\n label: string\n icon: string\n } | null\n quote: {\n label: string\n icon: string\n } | null\n divider: {\n label: string\n icon: string\n } | null\n } | null\n\n listGroup: {\n label: string\n bulletList: {\n label: string\n icon: string\n } | null\n orderedList: {\n label: string\n icon: string\n } | null\n taskList: {\n label: string\n icon: string\n } | null\n } | null\n\n advancedGroup: {\n label: string\n image: {\n label: string\n icon: string\n } | null\n codeBlock: {\n label: string\n icon: string\n } | null\n table: {\n label: string\n icon: string\n } | null\n math: {\n label: string\n icon: string\n } | null\n } | null\n}\n\nexport type BlockEditFeatureConfig = DeepPartial<BlockEditConfig>\n\nexport const blockEdit: DefineFeature<BlockEditFeatureConfig> = (\n editor,\n config\n) => {\n editor\n .config(crepeFeatureConfig(CrepeFeature.BlockEdit))\n .config((ctx) => configureBlockHandle(ctx, config))\n .config((ctx) => configureMenu(ctx, config))\n .use(menuAPI)\n .use(block)\n .use(menu)\n}\n"],"names":["createSlice","CrepeFeature","__privateAdd","__privateSet","__privateGet","group","ctx","commandsCtx","paragraphSchema","clearTextInCurrentBlockCommand","setBlockTypeCommand","headingSchema","blockquoteSchema","wrapInBlockTypeCommand","hrSchema","addBlockTypeCommand","bulletListSchema","orderedListSchema","listItemSchema","imageBlock","imageBlockSchema","codeBlockSchema","editorViewCtx","createTable","selectTextNearPosCommand","items","groups","defineComponent","ref","computed","watch","watchEffect","onUnmounted","h","Icon","_content","_app","slashFactory","$ctx","createApp","SlashProvider","view","TextSelection","Fragment","state","BlockProvider","blockConfig","findParent","block"],"mappings":"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,MAAA,EACA,MAAA,EACA,GAAA,EACA;AAlDF,EAAA,IAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAA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"}
|
|
@@ -150,28 +150,33 @@ const codeMirror = (editor, config = {}) => {
|
|
|
150
150
|
if (config.extensions) {
|
|
151
151
|
extensions.push(...config.extensions);
|
|
152
152
|
}
|
|
153
|
-
ctx.update(codeBlock.codeBlockConfig.key, (defaultConfig) =>
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
153
|
+
ctx.update(codeBlock.codeBlockConfig.key, (defaultConfig) => {
|
|
154
|
+
var _a;
|
|
155
|
+
return {
|
|
156
|
+
extensions,
|
|
157
|
+
languages,
|
|
158
|
+
expandIcon: config.expandIcon || chevronDownIcon,
|
|
159
|
+
searchIcon: config.searchIcon || searchIcon,
|
|
160
|
+
clearSearchIcon: config.clearSearchIcon || clearIcon,
|
|
161
|
+
searchPlaceholder: config.searchPlaceholder || "Search language",
|
|
162
|
+
copyText: config.copyText || "Copy",
|
|
163
|
+
copyIcon: config.copyIcon || copyIcon,
|
|
164
|
+
onCopy: config.onCopy || (() => {
|
|
165
|
+
}),
|
|
166
|
+
noResultText: config.noResultText || "No result",
|
|
167
|
+
renderLanguage: config.renderLanguage || defaultConfig.renderLanguage,
|
|
168
|
+
renderPreview: config.renderPreview || defaultConfig.renderPreview,
|
|
169
|
+
previewToggleButton: (previewOnlyMode) => {
|
|
170
|
+
var _a2, _b;
|
|
171
|
+
const icon = ((_a2 = config.previewToggleIcon) == null ? void 0 : _a2.call(config, previewOnlyMode)) || (previewOnlyMode ? editIcon : visibilityOffIcon);
|
|
172
|
+
const text = ((_b = config.previewToggleText) == null ? void 0 : _b.call(config, previewOnlyMode)) || (previewOnlyMode ? "Edit" : "Hide");
|
|
173
|
+
return [icon, text].map((v) => v.trim()).join(" ");
|
|
174
|
+
},
|
|
175
|
+
previewLabel: config.previewLabel || defaultConfig.previewLabel,
|
|
176
|
+
previewLoading: config.previewLoading || defaultConfig.previewLoading,
|
|
177
|
+
previewOnlyByDefault: (_a = config.previewOnlyByDefault) != null ? _a : defaultConfig.previewOnlyByDefault
|
|
178
|
+
};
|
|
179
|
+
});
|
|
175
180
|
}).use(codeBlock.codeBlockComponent);
|
|
176
181
|
};
|
|
177
182
|
|