@milkdown/plugin-slash 6.5.2 → 6.5.3
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/config.d.ts +11 -11
- package/lib/config.d.ts.map +1 -1
- package/lib/index.d.ts +3 -3
- package/lib/index.d.ts.map +1 -1
- package/lib/index.es.js +111 -106
- package/lib/index.es.js.map +1 -1
- package/lib/item.d.ts +3 -3
- package/lib/item.d.ts.map +1 -1
- package/lib/prose-plugin/dropdown.d.ts +3 -3
- package/lib/prose-plugin/dropdown.d.ts.map +1 -1
- package/lib/prose-plugin/index.d.ts +2 -2
- package/lib/prose-plugin/index.d.ts.map +1 -1
- package/lib/prose-plugin/input.d.ts +3 -3
- package/lib/prose-plugin/input.d.ts.map +1 -1
- package/lib/prose-plugin/props.d.ts +5 -4
- package/lib/prose-plugin/props.d.ts.map +1 -1
- package/lib/prose-plugin/status.d.ts +5 -5
- package/lib/prose-plugin/status.d.ts.map +1 -1
- package/lib/prose-plugin/view.d.ts +4 -4
- package/lib/prose-plugin/view.d.ts.map +1 -1
- package/lib/style.d.ts +1 -1
- package/lib/style.d.ts.map +1 -1
- package/lib/utility.d.ts +3 -3
- package/lib/utility.d.ts.map +1 -1
- package/package.json +15 -15
- package/src/config.ts +126 -121
- package/src/index.ts +25 -24
- package/src/item.ts +14 -14
- package/src/prose-plugin/dropdown.ts +45 -46
- package/src/prose-plugin/index.ts +19 -18
- package/src/prose-plugin/input.ts +122 -108
- package/src/prose-plugin/props.ts +79 -81
- package/src/prose-plugin/status.ts +29 -28
- package/src/prose-plugin/view.ts +104 -102
- package/src/style.ts +20 -18
- package/src/utility.ts +63 -64
package/lib/index.es.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.es.js","sources":["../src/style.ts","../src/utility.ts","../src/config.ts","../src/prose-plugin/props.ts","../src/item.ts","../src/prose-plugin/status.ts","../src/prose-plugin/dropdown.ts","../src/prose-plugin/input.ts","../src/prose-plugin/view.ts","../src/prose-plugin/index.ts","../src/index.ts"],"sourcesContent":["/* Copyright 2021, Milkdown by Mirone. */\nimport {\n Color,\n Emotion,\n ThemeBorder,\n ThemeColor,\n ThemeFont,\n ThemeManager,\n ThemeScrollbar,\n ThemeShadow,\n ThemeSize,\n} from '@milkdown/core';\n\nconst itemStyle = (themeManager: ThemeManager, { css }: Emotion) => {\n const palette = (color: Color, opacity = 1) => themeManager.get(ThemeColor, [color, opacity]);\n return css`\n .slash-dropdown-item {\n display: flex;\n gap: 32px;\n height: 48px;\n padding: 0 16px;\n align-items: center;\n justify-content: flex-start;\n cursor: pointer;\n line-height: 48px;\n font-family: ${themeManager.get(ThemeFont, 'typography')};\n font-size: 14px;\n\n transition: all 0.2s ease-in-out;\n\n &,\n .icon {\n color: ${palette('neutral', 0.87)};\n transition: all 0.2s ease-in-out;\n }\n\n &.hide {\n display: none;\n }\n\n &.active {\n background: ${palette('secondary', 0.12)};\n &,\n .icon {\n color: ${palette('primary')};\n }\n }\n }\n `;\n};\n\nexport const injectStyle = (themeManager: ThemeManager, emotion: Emotion) => {\n const palette = (color: Color, opacity = 1) => themeManager.get(ThemeColor, [color, opacity]);\n\n return emotion.css`\n width: 320px;\n min-height: 48px;\n max-height: 320px;\n overflow-y: auto;\n border-radius: ${themeManager.get(ThemeSize, 'radius')};\n position: absolute;\n background: ${palette('surface')};\n\n ${themeManager.get(ThemeBorder, undefined)}\n ${themeManager.get(ThemeShadow, undefined)}\n ${themeManager.get(ThemeScrollbar, undefined)}\n\n &.hide {\n display: none;\n }\n\n ${itemStyle(themeManager, emotion)}\n `;\n};\n","/* Copyright 2021, Milkdown by Mirone. */\nimport { ThemeIcon, ThemeManager } from '@milkdown/core';\nimport type { Icon } from '@milkdown/design-system';\nimport { missingIcon } from '@milkdown/exception';\nimport type { Node } from '@milkdown/prose/model';\nimport type { Command } from '@milkdown/prose/state';\nimport type { ThemeUtils } from '@milkdown/utils';\n\nimport { injectStyle } from './style';\n\nexport const createDropdown = (utils: ThemeUtils, className: string) => {\n const div = document.createElement('div');\n div.setAttribute('role', 'listbox');\n div.setAttribute('tabindex', '-1');\n utils.themeManager.onFlush(() => {\n const style = utils.getStyle((emotion) => injectStyle(utils.themeManager, emotion));\n\n if (style) {\n div.classList.add(style);\n }\n });\n\n div.classList.add(utils.getClassName({}, className), 'hide');\n\n return div;\n};\n\ntype ItemOptions = {\n textClassName: string;\n};\nexport const createDropdownItem = (\n themeManager: ThemeManager,\n text: string,\n icon: Icon,\n options?: Partial<ItemOptions>,\n) => {\n const textClassName = options?.textClassName ?? 'text';\n\n const div = document.createElement('div');\n div.setAttribute('role', 'option');\n div.classList.add('slash-dropdown-item');\n\n const iconSpan = themeManager.get(ThemeIcon, icon);\n\n if (!iconSpan) {\n throw missingIcon(icon);\n }\n\n const textSpan = document.createElement('span');\n textSpan.textContent = text;\n textSpan.className = textClassName;\n\n div.appendChild(iconSpan.dom);\n div.appendChild(textSpan);\n\n return div;\n};\n\nexport const getDepth = (node: Node) => {\n let cur = node;\n let depth = 0;\n while (cur.childCount) {\n cur = cur.child(0);\n depth += 1;\n }\n\n return depth;\n};\n\nconst cleanUp: Command = (state, dispatch) => {\n const { selection } = state;\n const { $from } = selection;\n const tr = state.tr.deleteRange($from.start(), $from.pos);\n dispatch?.(tr);\n return false;\n};\n\nexport const cleanUpAndCreateNode =\n (createCommand: () => void): Command =>\n (state, dispatch, view) => {\n if (view) {\n cleanUp(state, dispatch, view);\n createCommand();\n }\n return true;\n };\n","/* Copyright 2021, Milkdown by Mirone. */\nimport { commandsCtx, Ctx, schemaCtx, themeManagerCtx } from '@milkdown/core';\nimport { Node } from '@milkdown/prose/model';\nimport { EditorState } from '@milkdown/prose/state';\n\nimport { WrappedAction } from './item';\nimport { createDropdownItem } from './utility';\n\ntype Nullable<T> = T | null | undefined;\n\nexport type StatusConfig = {\n placeholder?: Nullable<string>;\n actions?: Nullable<WrappedAction[]>;\n};\n\nexport type StatusConfigBuilderParams = {\n content: string;\n isTopLevel: boolean;\n parentNode: Node;\n state: EditorState;\n};\n\nexport type StatusConfigBuilder = (params: StatusConfigBuilderParams) => Nullable<StatusConfig>;\n\nexport type Config = (ctx: Ctx) => StatusConfigBuilder;\n\nexport const defaultActions = (ctx: Ctx, input = '/'): WrappedAction[] => {\n const { nodes } = ctx.get(schemaCtx);\n const actions: Array<WrappedAction & { keyword: string[]; typeName: string }> = [\n {\n id: 'h1',\n dom: createDropdownItem(ctx.get(themeManagerCtx), 'Large Heading', 'h1'),\n command: () => ctx.get(commandsCtx).call('TurnIntoHeading', 1),\n keyword: ['h1', 'large heading'],\n typeName: 'heading',\n },\n {\n id: 'h2',\n dom: createDropdownItem(ctx.get(themeManagerCtx), 'Medium Heading', 'h2'),\n command: () => ctx.get(commandsCtx).call('TurnIntoHeading', 2),\n keyword: ['h2', 'medium heading'],\n typeName: 'heading',\n },\n {\n id: 'h3',\n dom: createDropdownItem(ctx.get(themeManagerCtx), 'Small Heading', 'h3'),\n command: () => ctx.get(commandsCtx).call('TurnIntoHeading', 3),\n keyword: ['h3', 'small heading'],\n typeName: 'heading',\n },\n {\n id: 'bulletList',\n dom: createDropdownItem(ctx.get(themeManagerCtx), 'Bullet List', 'bulletList'),\n command: () => ctx.get(commandsCtx).call('WrapInBulletList'),\n keyword: ['bullet list', 'ul'],\n typeName: 'bullet_list',\n },\n {\n id: 'orderedList',\n dom: createDropdownItem(ctx.get(themeManagerCtx), 'Ordered List', 'orderedList'),\n command: () => ctx.get(commandsCtx).call('WrapInOrderedList'),\n keyword: ['ordered list', 'ol'],\n typeName: 'ordered_list',\n },\n {\n id: 'taskList',\n dom: createDropdownItem(ctx.get(themeManagerCtx), 'Task List', 'taskList'),\n command: () => ctx.get(commandsCtx).call('TurnIntoTaskList'),\n keyword: ['task list', 'task'],\n typeName: 'task_list_item',\n },\n {\n id: 'image',\n dom: createDropdownItem(ctx.get(themeManagerCtx), 'Image', 'image'),\n command: () => ctx.get(commandsCtx).call('InsertImage'),\n keyword: ['image'],\n typeName: 'image',\n },\n {\n id: 'blockquote',\n dom: createDropdownItem(ctx.get(themeManagerCtx), 'Quote', 'quote'),\n command: () => ctx.get(commandsCtx).call('WrapInBlockquote'),\n keyword: ['quote', 'blockquote'],\n typeName: 'blockquote',\n },\n {\n id: 'table',\n dom: createDropdownItem(ctx.get(themeManagerCtx), 'Table', 'table'),\n command: () => ctx.get(commandsCtx).call('InsertTable'),\n keyword: ['table'],\n typeName: 'table',\n },\n {\n id: 'code',\n dom: createDropdownItem(ctx.get(themeManagerCtx), 'Code Fence', 'code'),\n command: () => ctx.get(commandsCtx).call('TurnIntoCodeFence'),\n keyword: ['code'],\n typeName: 'fence',\n },\n {\n id: 'divider',\n dom: createDropdownItem(ctx.get(themeManagerCtx), 'Divide Line', 'divider'),\n command: () => ctx.get(commandsCtx).call('InsertHr'),\n keyword: ['divider', 'hr'],\n typeName: 'hr',\n },\n ];\n\n const userInput = input.slice(1).toLocaleLowerCase();\n\n return actions\n .filter((action) => !!nodes[action.typeName] && action.keyword.some((keyword) => keyword.includes(userInput)))\n .map(({ keyword, typeName, ...action }) => action);\n};\n\nexport const defaultConfig: Config = (ctx) => {\n return ({ content, isTopLevel }) => {\n if (!isTopLevel) return null;\n\n if (!content) {\n return { placeholder: 'Type / to use the slash commands...' };\n }\n\n if (content.startsWith('/')) {\n return content === '/'\n ? {\n placeholder: 'Type to filter...',\n actions: defaultActions(ctx),\n }\n : {\n actions: defaultActions(ctx, content),\n };\n }\n\n return null;\n };\n};\n","/* Copyright 2021, Milkdown by Mirone. */\nimport { Color, Emotion, ThemeColor, ThemeFont, ThemeManager } from '@milkdown/core';\nimport { findParentNode } from '@milkdown/prose';\nimport { EditorState } from '@milkdown/prose/state';\nimport { Decoration, DecorationSet, EditorView } from '@milkdown/prose/view';\nimport { ThemeUtils } from '@milkdown/utils';\n\nimport type { Status } from './status';\n\nexport type Props = ReturnType<typeof createProps>;\n\nconst createEmptyStyle = (themeManager: ThemeManager, { css }: Emotion) => {\n const palette = (color: Color, opacity = 1) => themeManager.get(ThemeColor, [color, opacity]);\n const typography = themeManager.get(ThemeFont, 'typography');\n\n return css`\n position: relative;\n &::before {\n position: absolute;\n cursor: text;\n font-family: ${typography};\n font-size: 14px;\n color: ${palette('neutral', 0.6)};\n content: attr(data-text);\n height: 100%;\n display: flex;\n align-items: center;\n }\n `;\n};\n\nconst createSlashStyle = (_: ThemeManager, { css }: Emotion) => css`\n &::before {\n left: 8px;\n }\n`;\n\nexport const createProps = (status: Status, utils: ThemeUtils) => {\n return {\n handleKeyDown: (_: EditorView, event: Event) => {\n if (status.isEmpty()) {\n return false;\n }\n if (!(event instanceof KeyboardEvent)) {\n return false;\n }\n\n if (!['ArrowUp', 'ArrowDown', 'Enter'].includes(event.key)) {\n return false;\n }\n\n return true;\n },\n decorations: (state: EditorState) => {\n const paragraph = findParentNode(({ type }) => type.name === 'paragraph')(state.selection);\n const uploadPlugin = state.plugins.find(\n (x) => (x as unknown as { key: string }).key === 'MILKDOWN_UPLOAD$',\n );\n const decorations: DecorationSet = uploadPlugin?.getState(state);\n if (decorations != null && decorations.find(state.selection.from, state.selection.to).length > 0) {\n status.clear();\n return null;\n }\n\n if (\n !paragraph ||\n paragraph.node.childCount > 1 ||\n state.selection.$from.parentOffset !== paragraph.node.textContent.length ||\n (paragraph.node.firstChild && paragraph.node.firstChild.type.name !== 'text')\n ) {\n status.clear();\n return null;\n }\n\n const { placeholder, actions } = status.update({\n parentNode: state.selection.$from.node(state.selection.$from.depth - 1),\n isTopLevel: state.selection.$from.depth === 1,\n content: paragraph.node.textContent,\n state,\n });\n\n if (!placeholder) {\n return null;\n }\n\n const createDecoration = (text: string, className: (string | undefined)[]) => {\n const pos = paragraph.pos;\n return DecorationSet.create(state.doc, [\n Decoration.node(pos, pos + paragraph.node.nodeSize, {\n class: className.filter((x) => x).join(' '),\n 'data-text': text,\n }),\n ]);\n };\n\n const emptyStyle = utils.getStyle((emotion) => createEmptyStyle(utils.themeManager, emotion));\n const slashStyle = utils.getStyle((emotion) => createSlashStyle(utils.themeManager, emotion));\n\n if (actions.length) {\n return createDecoration(placeholder, [emptyStyle, slashStyle, 'empty-node', 'is-slash']);\n }\n\n return createDecoration(placeholder, [emptyStyle, 'empty-node']);\n },\n };\n};\n","/* Copyright 2021, Milkdown by Mirone. */\nimport type { Command } from '@milkdown/prose/state';\n\nimport { cleanUpAndCreateNode } from './utility';\n\nexport type Action = {\n id: string;\n $: HTMLElement;\n command: Command;\n};\n\nexport type WrappedAction = Pick<Action, 'id'> & {\n command: () => void;\n dom: HTMLElement;\n};\n\nexport const transformAction = (action: WrappedAction): Action => ({\n id: action.id,\n $: action.dom,\n command: cleanUpAndCreateNode(action.command),\n});\n","/* Copyright 2021, Milkdown by Mirone. */\nimport { StatusConfigBuilder, StatusConfigBuilderParams } from '..';\nimport { Action, transformAction } from '../item';\n\nexport type StatusCtx = {\n placeholder: string | null;\n actions: Action[];\n};\n\nconst createStatusCtx = (): StatusCtx => {\n return {\n placeholder: null,\n actions: [],\n };\n};\n\nexport type Status = ReturnType<typeof createStatus>;\n\nexport const createStatus = (builder: StatusConfigBuilder) => {\n const statusCtx = createStatusCtx();\n\n return {\n get: () => statusCtx,\n clear: () => {\n statusCtx.placeholder = null;\n statusCtx.actions = [];\n },\n update: (builderParams: StatusConfigBuilderParams) => {\n const config = builder(builderParams);\n statusCtx.placeholder = config?.placeholder ?? null;\n statusCtx.actions = (config?.actions ?? []).map(transformAction);\n return statusCtx;\n },\n isEmpty: () => statusCtx.actions.length === 0,\n };\n};\n","/* Copyright 2021, Milkdown by Mirone. */\nimport scrollIntoView from 'smooth-scroll-into-view-if-needed';\n\nimport { Status } from './status';\n\ntype Listeners = {\n mouseEnter: EventListener;\n mouseLeave: EventListener;\n};\n\nexport const renderDropdown = (status: Status, dropdownElement: HTMLElement, listeners: Listeners): boolean => {\n const { actions } = status.get();\n\n if (!actions.length) {\n dropdownElement.classList.add('hide');\n return false;\n }\n\n dropdownElement.childNodes.forEach((child) => {\n child.removeEventListener('mouseenter', listeners.mouseEnter);\n child.removeEventListener('mouseleave', listeners.mouseLeave);\n });\n\n while (dropdownElement.firstChild) {\n dropdownElement.firstChild.remove();\n }\n\n actions.forEach(({ $ }) => {\n $.classList.remove('active');\n $.addEventListener('mouseenter', listeners.mouseEnter);\n $.addEventListener('mouseleave', listeners.mouseLeave);\n dropdownElement.appendChild($);\n });\n\n dropdownElement.style.maxHeight = '';\n dropdownElement.classList.remove('hide');\n\n const first$ = actions[0];\n if (first$) {\n first$.$.classList.add('active');\n requestAnimationFrame(() => {\n scrollIntoView(first$.$, {\n scrollMode: 'if-needed',\n block: 'nearest',\n inline: 'nearest',\n });\n });\n }\n\n return true;\n};\n","/* Copyright 2021, Milkdown by Mirone. */\n\nimport { EditorView } from '@milkdown/prose/view';\nimport scrollIntoView from 'smooth-scroll-into-view-if-needed';\n\nimport { Status } from './status';\n\nexport const createMouseManager = () => {\n let mouseLock = false;\n\n return {\n isLock: () => mouseLock,\n lock: () => {\n mouseLock = true;\n },\n unlock: () => {\n mouseLock = false;\n },\n };\n};\nexport type MouseManager = ReturnType<typeof createMouseManager>;\n\nexport const handleMouseMove = (mouseManager: MouseManager) => () => {\n mouseManager.unlock();\n};\n\nexport const handleMouseEnter = (status: Status, mouseManager: MouseManager) => (e: MouseEvent) => {\n if (mouseManager.isLock()) return;\n const { actions } = status.get();\n const active = actions.findIndex((x) => x.$.classList.contains('active'));\n const active$ = actions[active];\n if (active$ && active >= 0) {\n active$.$.classList.remove('active');\n }\n const { target } = e;\n if (!(target instanceof HTMLElement)) return;\n target.classList.add('active');\n};\n\nexport const handleMouseLeave = () => (e: MouseEvent) => {\n const { target } = e;\n if (!(target instanceof HTMLElement)) return;\n target.classList.remove('active');\n};\n\nexport const handleClick =\n (status: Status, view: EditorView, dropdownElement: HTMLElement) =>\n (e: Event): void => {\n const { target } = e;\n if (!(target instanceof HTMLElement)) return;\n if (!view) return;\n\n const stop = () => {\n e.stopPropagation();\n e.preventDefault();\n };\n\n const { actions } = status.get();\n\n const el = Object.values(actions).find(({ $ }) => $.contains(target));\n if (!el) {\n if (status.isEmpty()) return;\n\n status.clear();\n dropdownElement.classList.add('hide');\n stop();\n\n return;\n }\n\n stop();\n el.command(view.state, view.dispatch, view);\n };\n\nexport const handleKeydown =\n (status: Status, view: EditorView, dropdownElement: HTMLElement, mouseManager: MouseManager) => (e: Event) => {\n if (!(e instanceof KeyboardEvent)) return;\n if (!mouseManager.isLock()) mouseManager.lock();\n\n const { key } = e;\n if (status.isEmpty()) return;\n if (!['ArrowDown', 'ArrowUp', 'Enter', 'Escape'].includes(key)) return;\n\n const { actions } = status.get();\n\n let active = actions.findIndex(({ $ }) => $.classList.contains('active'));\n if (active < 0) active = 0;\n\n const moveActive = (next: number) => {\n const active$ = actions[active];\n const next$ = actions[next];\n if (!active$ || !next$) return;\n active$.$.classList.remove('active');\n next$.$.classList.add('active');\n scrollIntoView(next$.$, {\n scrollMode: 'if-needed',\n block: 'nearest',\n inline: 'nearest',\n });\n };\n\n if (key === 'ArrowDown') {\n const next = active === actions.length - 1 ? 0 : active + 1;\n\n moveActive(next);\n return;\n }\n\n if (key === 'ArrowUp') {\n const next = active === 0 ? actions.length - 1 : active - 1;\n\n moveActive(next);\n return;\n }\n\n if (key === 'Escape') {\n if (status.isEmpty()) return;\n\n status.clear();\n dropdownElement.classList.add('hide');\n return;\n }\n\n const active$ = actions[active];\n if (!active$) return;\n active$.command(view.state, view.dispatch, view);\n active$.$.classList.remove('active');\n };\n","/* Copyright 2021, Milkdown by Mirone. */\nimport { missingRootElement } from '@milkdown/exception';\nimport { calculateNodePosition } from '@milkdown/prose';\nimport { EditorView } from '@milkdown/prose/view';\nimport { ThemeUtils } from '@milkdown/utils';\n\nimport { createDropdown } from '../utility';\nimport { renderDropdown } from './dropdown';\nimport {\n createMouseManager,\n handleClick,\n handleKeydown,\n handleMouseEnter,\n handleMouseLeave,\n handleMouseMove,\n} from './input';\nimport { Status } from './status';\n\nexport const defaultCalcPosition = (view: EditorView, dropdownElement: HTMLElement) => {\n calculateNodePosition(view, dropdownElement, (selected, target, parent) => {\n const $editor = dropdownElement.parentElement;\n if (!$editor) {\n throw missingRootElement();\n }\n\n let left = selected.left - parent.left;\n\n if (left < 0) {\n left = 0;\n }\n\n let direction: 'top' | 'bottom';\n let maxHeight: number | undefined;\n const selectedToTop = selected.top - parent.top;\n const selectedToBottom = parent.height + parent.top - selected.bottom;\n if (selectedToBottom >= target.height + 28) {\n direction = 'bottom';\n } else if (selectedToTop >= target.height + 28) {\n direction = 'top';\n } else if (selectedToBottom >= selectedToTop) {\n direction = 'bottom';\n maxHeight = selectedToBottom - 28;\n } else {\n direction = 'top';\n maxHeight = selectedToTop - 28;\n }\n if (selectedToTop < 0 || selectedToBottom < 0) {\n maxHeight = parent.height - selected.height - 28;\n if (maxHeight > target.height) {\n maxHeight = undefined;\n }\n }\n\n const top =\n direction === 'top'\n ? selected.top - parent.top - (maxHeight ?? target.height) - 14 + $editor.scrollTop\n : selected.bottom - parent.top + 14 + $editor.scrollTop;\n\n dropdownElement.style.maxHeight = maxHeight !== undefined && maxHeight > 0 ? `${maxHeight}px` : '';\n\n return [top, left];\n });\n};\n\nexport type CalcPosition = (view: EditorView, dropdownElement: HTMLElement) => void;\n\nexport const createView = (\n status: Status,\n view: EditorView,\n utils: ThemeUtils,\n className: string,\n calcPosition: CalcPosition,\n) => {\n const wrapper = view.dom.parentNode;\n if (!wrapper) return {};\n\n const dropdownElement = createDropdown(utils, className);\n const mouseManager = createMouseManager();\n wrapper.appendChild(dropdownElement);\n\n const _mouseMove = handleMouseMove(mouseManager);\n const _mouseDown = handleClick(status, view, dropdownElement);\n const _keydown = handleKeydown(status, view, dropdownElement, mouseManager);\n const _mouseEnter = handleMouseEnter(status, mouseManager);\n const _mouseLeave = handleMouseLeave();\n\n wrapper.addEventListener('mousemove', _mouseMove);\n wrapper.addEventListener('mousedown', _mouseDown);\n wrapper.addEventListener('keydown', _keydown);\n\n return {\n update: (view: EditorView) => {\n const show = renderDropdown(status, dropdownElement, {\n mouseEnter: _mouseEnter as EventListener,\n mouseLeave: _mouseLeave as EventListener,\n });\n\n if (!show) return;\n\n calcPosition(view, dropdownElement);\n },\n\n destroy: () => {\n wrapper.removeEventListener('mousemove', _mouseMove);\n wrapper.removeEventListener('mousedown', _mouseDown);\n wrapper.removeEventListener('keydown', _keydown);\n dropdownElement.remove();\n },\n };\n};\n","/* Copyright 2021, Milkdown by Mirone. */\nimport { Plugin, PluginKey } from '@milkdown/prose/state';\nimport { ThemeUtils } from '@milkdown/utils';\n\nimport type { StatusConfigBuilder } from '..';\nimport { createProps } from './props';\nimport { createStatus } from './status';\nimport { CalcPosition, createView } from './view';\n\nexport const key = 'MILKDOWN_SLASH';\n\nexport const createSlashPlugin = (\n utils: ThemeUtils,\n builder: StatusConfigBuilder,\n className: string,\n calcPosition: CalcPosition,\n) => {\n const status = createStatus(builder);\n\n return new Plugin({\n key: new PluginKey(key),\n props: createProps(status, utils),\n view: (view) => createView(status, view, utils, className, calcPosition),\n });\n};\n","/* Copyright 2021, Milkdown by Mirone. */\nimport { AtomList, createPlugin } from '@milkdown/utils';\n\nimport type { Config } from './config';\nimport { defaultConfig } from './config';\nimport { createSlashPlugin } from './prose-plugin';\nimport { CalcPosition, defaultCalcPosition } from './prose-plugin/view';\n\nexport type { Config, StatusConfig, StatusConfigBuilder, StatusConfigBuilderParams } from './config';\nexport { defaultActions, defaultConfig } from './config';\nexport type { Action, WrappedAction } from './item';\nexport { createDropdownItem } from './utility';\n\nexport type Options = {\n config: Config;\n calcPosition: CalcPosition;\n};\n\nexport const slashPlugin = createPlugin<string, Options>((utils, options) => {\n const slashConfig = options?.config ?? defaultConfig;\n const calcPosition = options?.calcPosition ?? defaultCalcPosition;\n\n return {\n prosePlugins: (_, ctx) => {\n const config = slashConfig(ctx);\n\n const plugin = createSlashPlugin(utils, config, 'slash-dropdown', calcPosition);\n\n return [plugin];\n },\n };\n});\n\nexport const slash = AtomList.create([slashPlugin()]);\n"],"names":["itemStyle","themeManager","css","palette","color","opacity","ThemeColor","ThemeFont","injectStyle","emotion","ThemeSize","ThemeBorder","ThemeShadow","ThemeScrollbar","createDropdown","utils","className","div","style","createDropdownItem","text","icon","options","textClassName","_a","iconSpan","ThemeIcon","missingIcon","textSpan","cleanUp","state","dispatch","selection","$from","tr","cleanUpAndCreateNode","createCommand","view","defaultActions","ctx","input","nodes","schemaCtx","actions","themeManagerCtx","commandsCtx","userInput","action","keyword","typeName","defaultConfig","content","isTopLevel","createEmptyStyle","typography","createSlashStyle","_","createProps","status","event","paragraph","findParentNode","type","uploadPlugin","x","decorations","placeholder","createDecoration","pos","DecorationSet","Decoration","emptyStyle","slashStyle","transformAction","createStatusCtx","createStatus","builder","statusCtx","builderParams","config","_b","renderDropdown","dropdownElement","listeners","child","$","first$","scrollIntoView","createMouseManager","mouseLock","handleMouseMove","mouseManager","handleMouseEnter","e","active","active$","target","handleMouseLeave","handleClick","stop","el","handleKeydown","key","moveActive","next","next$","defaultCalcPosition","calculateNodePosition","selected","parent","$editor","missingRootElement","left","direction","maxHeight","selectedToTop","selectedToBottom","top","createView","calcPosition","wrapper","_mouseMove","_mouseDown","_keydown","_mouseEnter","_mouseLeave","createSlashPlugin","Plugin","PluginKey","slashPlugin","createPlugin","slashConfig","slash","AtomList"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.es.js","sources":["../src/style.ts","../src/utility.ts","../src/config.ts","../src/prose-plugin/props.ts","../src/item.ts","../src/prose-plugin/status.ts","../src/prose-plugin/dropdown.ts","../src/prose-plugin/input.ts","../src/prose-plugin/view.ts","../src/prose-plugin/index.ts","../src/index.ts"],"sourcesContent":["/* Copyright 2021, Milkdown by Mirone. */\nimport type {\n Color,\n Emotion,\n ThemeManager,\n} from '@milkdown/core'\nimport {\n ThemeBorder,\n ThemeColor,\n ThemeFont,\n ThemeScrollbar,\n ThemeShadow,\n ThemeSize,\n} from '@milkdown/core'\n\nconst itemStyle = (themeManager: ThemeManager, { css }: Emotion) => {\n const palette = (color: Color, opacity = 1) => themeManager.get(ThemeColor, [color, opacity])\n return css`\n .slash-dropdown-item {\n display: flex;\n gap: 32px;\n height: 48px;\n padding: 0 16px;\n align-items: center;\n justify-content: flex-start;\n cursor: pointer;\n line-height: 48px;\n font-family: ${themeManager.get(ThemeFont, 'typography')};\n font-size: 14px;\n\n transition: all 0.2s ease-in-out;\n\n &,\n .icon {\n color: ${palette('neutral', 0.87)};\n transition: all 0.2s ease-in-out;\n }\n\n &.hide {\n display: none;\n }\n\n &.active {\n background: ${palette('secondary', 0.12)};\n &,\n .icon {\n color: ${palette('primary')};\n }\n }\n }\n `\n}\n\nexport const injectStyle = (themeManager: ThemeManager, emotion: Emotion) => {\n const palette = (color: Color, opacity = 1) => themeManager.get(ThemeColor, [color, opacity])\n\n return emotion.css`\n width: 320px;\n min-height: 48px;\n max-height: 320px;\n overflow-y: auto;\n border-radius: ${themeManager.get(ThemeSize, 'radius')};\n position: absolute;\n background: ${palette('surface')};\n\n ${themeManager.get(ThemeBorder, undefined)}\n ${themeManager.get(ThemeShadow, undefined)}\n ${themeManager.get(ThemeScrollbar, undefined)}\n\n &.hide {\n display: none;\n }\n\n ${itemStyle(themeManager, emotion)}\n `\n}\n","/* Copyright 2021, Milkdown by Mirone. */\nimport type { ThemeManager } from '@milkdown/core'\nimport { ThemeIcon } from '@milkdown/core'\nimport type { Icon } from '@milkdown/design-system'\nimport { missingIcon } from '@milkdown/exception'\nimport type { Node } from '@milkdown/prose/model'\nimport type { Command } from '@milkdown/prose/state'\nimport type { ThemeUtils } from '@milkdown/utils'\n\nimport { injectStyle } from './style'\n\nexport const createDropdown = (utils: ThemeUtils, className: string) => {\n const div = document.createElement('div')\n div.setAttribute('role', 'listbox')\n div.setAttribute('tabindex', '-1')\n utils.themeManager.onFlush(() => {\n const style = utils.getStyle(emotion => injectStyle(utils.themeManager, emotion))\n\n if (style)\n div.classList.add(style)\n })\n\n div.classList.add(utils.getClassName({}, className), 'hide')\n\n return div\n}\n\ninterface ItemOptions {\n textClassName: string\n}\nexport const createDropdownItem = (\n themeManager: ThemeManager,\n text: string,\n icon: Icon,\n options?: Partial<ItemOptions>,\n) => {\n const textClassName = options?.textClassName ?? 'text'\n\n const div = document.createElement('div')\n div.setAttribute('role', 'option')\n div.classList.add('slash-dropdown-item')\n\n const iconSpan = themeManager.get(ThemeIcon, icon)\n\n if (!iconSpan)\n throw missingIcon(icon)\n\n const textSpan = document.createElement('span')\n textSpan.textContent = text\n textSpan.className = textClassName\n\n div.appendChild(iconSpan.dom)\n div.appendChild(textSpan)\n\n return div\n}\n\nexport const getDepth = (node: Node) => {\n let cur = node\n let depth = 0\n while (cur.childCount) {\n cur = cur.child(0)\n depth += 1\n }\n\n return depth\n}\n\nconst cleanUp: Command = (state, dispatch) => {\n const { selection } = state\n const { $from } = selection\n const tr = state.tr.deleteRange($from.start(), $from.pos)\n dispatch?.(tr)\n return false\n}\n\nexport const cleanUpAndCreateNode\n = (createCommand: () => void): Command =>\n (state, dispatch, view) => {\n if (view) {\n cleanUp(state, dispatch, view)\n createCommand()\n }\n return true\n }\n","/* Copyright 2021, Milkdown by Mirone. */\nimport type { Ctx } from '@milkdown/core'\nimport { commandsCtx, editorViewCtx, schemaCtx, themeManagerCtx } from '@milkdown/core'\nimport type { Node } from '@milkdown/prose/model'\nimport type { EditorState } from '@milkdown/prose/state'\n\nimport type { WrappedAction } from './item'\nimport { createDropdownItem } from './utility'\n\ntype Nullable<T> = T | null | undefined\n\nexport interface StatusConfig {\n placeholder?: Nullable<string>\n actions?: Nullable<WrappedAction[]>\n}\n\nexport interface StatusConfigBuilderParams {\n content: string\n isTopLevel: boolean\n parentNode: Node\n state: EditorState\n}\n\nexport type StatusConfigBuilder = (params: StatusConfigBuilderParams) => Nullable<StatusConfig>\n\nexport type Config = (ctx: Ctx) => StatusConfigBuilder\n\nexport const defaultActions = (ctx: Ctx, input = '/'): WrappedAction[] => {\n const { nodes } = ctx.get(schemaCtx)\n const actions: Array<WrappedAction & { keyword: string[]; typeName: string }> = [\n {\n id: 'h1',\n dom: createDropdownItem(ctx.get(themeManagerCtx), 'Large Heading', 'h1'),\n command: () => ctx.get(commandsCtx).call('TurnIntoHeading', 1),\n keyword: ['h1', 'large heading'],\n typeName: 'heading',\n },\n {\n id: 'h2',\n dom: createDropdownItem(ctx.get(themeManagerCtx), 'Medium Heading', 'h2'),\n command: () => ctx.get(commandsCtx).call('TurnIntoHeading', 2),\n keyword: ['h2', 'medium heading'],\n typeName: 'heading',\n },\n {\n id: 'h3',\n dom: createDropdownItem(ctx.get(themeManagerCtx), 'Small Heading', 'h3'),\n command: () => ctx.get(commandsCtx).call('TurnIntoHeading', 3),\n keyword: ['h3', 'small heading'],\n typeName: 'heading',\n },\n {\n id: 'bulletList',\n dom: createDropdownItem(ctx.get(themeManagerCtx), 'Bullet List', 'bulletList'),\n command: () => ctx.get(commandsCtx).call('WrapInBulletList'),\n keyword: ['bullet list', 'ul'],\n typeName: 'bullet_list',\n },\n {\n id: 'orderedList',\n dom: createDropdownItem(ctx.get(themeManagerCtx), 'Ordered List', 'orderedList'),\n command: () => ctx.get(commandsCtx).call('WrapInOrderedList'),\n keyword: ['ordered list', 'ol'],\n typeName: 'ordered_list',\n },\n {\n id: 'taskList',\n dom: createDropdownItem(ctx.get(themeManagerCtx), 'Task List', 'taskList'),\n command: () => ctx.get(commandsCtx).call('TurnIntoTaskList'),\n keyword: ['task list', 'task'],\n typeName: 'task_list_item',\n },\n {\n id: 'image',\n dom: createDropdownItem(ctx.get(themeManagerCtx), 'Image', 'image'),\n command: () => ctx.get(commandsCtx).call('InsertImage'),\n keyword: ['image'],\n typeName: 'image',\n },\n {\n id: 'blockquote',\n dom: createDropdownItem(ctx.get(themeManagerCtx), 'Quote', 'quote'),\n command: () => ctx.get(commandsCtx).call('WrapInBlockquote'),\n keyword: ['quote', 'blockquote'],\n typeName: 'blockquote',\n },\n {\n id: 'table',\n dom: createDropdownItem(ctx.get(themeManagerCtx), 'Table', 'table'),\n command: () => ctx.get(commandsCtx).call('InsertTable'),\n keyword: ['table'],\n typeName: 'table',\n },\n {\n id: 'code',\n dom: createDropdownItem(ctx.get(themeManagerCtx), 'Code Fence', 'code'),\n command: () => ctx.get(commandsCtx).call('TurnIntoCodeFence'),\n keyword: ['code'],\n typeName: 'fence',\n },\n {\n id: 'divider',\n dom: createDropdownItem(ctx.get(themeManagerCtx), 'Divide Line', 'divider'),\n command: () => ctx.get(commandsCtx).call('InsertHr'),\n keyword: ['divider', 'hr'],\n typeName: 'hr',\n },\n ]\n\n const userInput = input.slice(1).toLocaleLowerCase()\n\n return actions\n .filter(action => !!nodes[action.typeName] && action.keyword.some(keyword => keyword.includes(userInput)))\n .map(({ keyword, typeName, ...action }) => action)\n}\n\nexport const defaultConfig: Config = (ctx) => {\n return ({ content, isTopLevel }) => {\n if (!isTopLevel)\n return null\n\n const view = ctx.get(editorViewCtx)\n if (!view?.editable)\n return null\n\n if (!content)\n return { placeholder: 'Type / to use the slash commands...' }\n\n if (content.startsWith('/')) {\n return content === '/'\n ? {\n placeholder: 'Type to filter...',\n actions: defaultActions(ctx),\n }\n : {\n actions: defaultActions(ctx, content),\n }\n }\n\n return null\n }\n}\n","/* Copyright 2021, Milkdown by Mirone. */\nimport type { Color, Emotion, ThemeManager } from '@milkdown/core'\nimport { ThemeColor, ThemeFont } from '@milkdown/core'\nimport { findParentNode } from '@milkdown/prose'\nimport type { EditorState } from '@milkdown/prose/state'\nimport type { EditorView } from '@milkdown/prose/view'\nimport { Decoration, DecorationSet } from '@milkdown/prose/view'\nimport type { ThemeUtils } from '@milkdown/utils'\n\nimport type { Status } from './status'\n\nexport type Props = ReturnType<typeof createProps>\n\nconst createEmptyStyle = (themeManager: ThemeManager, { css }: Emotion) => {\n const palette = (color: Color, opacity = 1) => themeManager.get(ThemeColor, [color, opacity])\n const typography = themeManager.get(ThemeFont, 'typography')\n\n return css`\n position: relative;\n &::before {\n position: absolute;\n cursor: text;\n font-family: ${typography};\n font-size: 14px;\n color: ${palette('neutral', 0.6)};\n content: attr(data-text);\n height: 100%;\n display: flex;\n align-items: center;\n }\n `\n}\n\nconst createSlashStyle = (_: ThemeManager, { css }: Emotion) => css`\n &::before {\n left: 8px;\n }\n`\n\nexport const createProps = (status: Status, utils: ThemeUtils) => {\n return {\n handleKeyDown: (_: EditorView, event: Event) => {\n if (status.isEmpty())\n return false\n\n if (!(event instanceof KeyboardEvent))\n return false\n\n if (!['ArrowUp', 'ArrowDown', 'Enter'].includes(event.key))\n return false\n\n return true\n },\n decorations: (state: EditorState) => {\n const paragraph = findParentNode(({ type }) => type.name === 'paragraph')(state.selection)\n const uploadPlugin = state.plugins.find(\n x => (x as unknown as { key: string }).key === 'MILKDOWN_UPLOAD$',\n )\n const decorations: DecorationSet = uploadPlugin?.getState(state)\n if (decorations != null && decorations.find(state.selection.from, state.selection.to).length > 0) {\n status.clear()\n return null\n }\n\n if (\n !paragraph\n || paragraph.node.childCount > 1\n || state.selection.$from.parentOffset !== paragraph.node.textContent.length\n || (paragraph.node.firstChild && paragraph.node.firstChild.type.name !== 'text')\n ) {\n status.clear()\n return null\n }\n\n const { placeholder, actions } = status.update({\n parentNode: state.selection.$from.node(state.selection.$from.depth - 1),\n isTopLevel: state.selection.$from.depth === 1,\n content: paragraph.node.textContent,\n state,\n })\n\n if (!placeholder)\n return null\n\n const createDecoration = (text: string, className: (string | undefined)[]) => {\n const pos = paragraph.pos\n return DecorationSet.create(state.doc, [\n Decoration.node(pos, pos + paragraph.node.nodeSize, {\n 'class': className.filter(x => x).join(' '),\n 'data-text': text,\n }),\n ])\n }\n\n const emptyStyle = utils.getStyle(emotion => createEmptyStyle(utils.themeManager, emotion))\n const slashStyle = utils.getStyle(emotion => createSlashStyle(utils.themeManager, emotion))\n\n if (actions.length)\n return createDecoration(placeholder, [emptyStyle, slashStyle, 'empty-node', 'is-slash'])\n\n return createDecoration(placeholder, [emptyStyle, 'empty-node'])\n },\n }\n}\n","/* Copyright 2021, Milkdown by Mirone. */\nimport type { Command } from '@milkdown/prose/state'\n\nimport { cleanUpAndCreateNode } from './utility'\n\nexport interface Action {\n id: string\n $: HTMLElement\n command: Command\n}\n\nexport type WrappedAction = Pick<Action, 'id'> & {\n command: () => void\n dom: HTMLElement\n}\n\nexport const transformAction = (action: WrappedAction): Action => ({\n id: action.id,\n $: action.dom,\n command: cleanUpAndCreateNode(action.command),\n})\n","/* Copyright 2021, Milkdown by Mirone. */\nimport type { StatusConfigBuilder, StatusConfigBuilderParams } from '..'\nimport type { Action } from '../item'\nimport { transformAction } from '../item'\n\nexport interface StatusCtx {\n placeholder: string | null\n actions: Action[]\n}\n\nconst createStatusCtx = (): StatusCtx => {\n return {\n placeholder: null,\n actions: [],\n }\n}\n\nexport type Status = ReturnType<typeof createStatus>\n\nexport const createStatus = (builder: StatusConfigBuilder) => {\n const statusCtx = createStatusCtx()\n\n return {\n get: () => statusCtx,\n clear: () => {\n statusCtx.placeholder = null\n statusCtx.actions = []\n },\n update: (builderParams: StatusConfigBuilderParams) => {\n const config = builder(builderParams)\n statusCtx.placeholder = config?.placeholder ?? null\n statusCtx.actions = (config?.actions ?? []).map(transformAction)\n return statusCtx\n },\n isEmpty: () => statusCtx.actions.length === 0,\n }\n}\n","/* Copyright 2021, Milkdown by Mirone. */\nimport scrollIntoView from 'smooth-scroll-into-view-if-needed'\n\nimport type { Status } from './status'\n\ninterface Listeners {\n mouseEnter: EventListener\n mouseLeave: EventListener\n}\n\nexport const renderDropdown = (status: Status, dropdownElement: HTMLElement, listeners: Listeners): boolean => {\n const { actions } = status.get()\n\n if (!actions.length) {\n dropdownElement.classList.add('hide')\n return false\n }\n\n dropdownElement.childNodes.forEach((child) => {\n child.removeEventListener('mouseenter', listeners.mouseEnter)\n child.removeEventListener('mouseleave', listeners.mouseLeave)\n })\n\n while (dropdownElement.firstChild)\n dropdownElement.firstChild.remove()\n\n actions.forEach(({ $ }) => {\n $.classList.remove('active')\n $.addEventListener('mouseenter', listeners.mouseEnter)\n $.addEventListener('mouseleave', listeners.mouseLeave)\n dropdownElement.appendChild($)\n })\n\n dropdownElement.style.maxHeight = ''\n dropdownElement.classList.remove('hide')\n\n const first$ = actions[0]\n if (first$) {\n first$.$.classList.add('active')\n requestAnimationFrame(() => {\n scrollIntoView(first$.$, {\n scrollMode: 'if-needed',\n block: 'nearest',\n inline: 'nearest',\n })\n })\n }\n\n return true\n}\n","/* Copyright 2021, Milkdown by Mirone. */\n\nimport type { EditorView } from '@milkdown/prose/view'\nimport scrollIntoView from 'smooth-scroll-into-view-if-needed'\n\nimport type { Status } from './status'\n\nexport const createMouseManager = () => {\n let mouseLock = false\n\n return {\n isLock: () => mouseLock,\n lock: () => {\n mouseLock = true\n },\n unlock: () => {\n mouseLock = false\n },\n }\n}\nexport type MouseManager = ReturnType<typeof createMouseManager>\n\nexport const handleMouseMove = (mouseManager: MouseManager) => () => {\n mouseManager.unlock()\n}\n\nexport const handleMouseEnter = (status: Status, mouseManager: MouseManager) => (e: MouseEvent) => {\n if (mouseManager.isLock())\n return\n const { actions } = status.get()\n const active = actions.findIndex(x => x.$.classList.contains('active'))\n const active$ = actions[active]\n if (active$ && active >= 0)\n active$.$.classList.remove('active')\n\n const { target } = e\n if (!(target instanceof HTMLElement))\n return\n target.classList.add('active')\n}\n\nexport const handleMouseLeave = () => (e: MouseEvent) => {\n const { target } = e\n if (!(target instanceof HTMLElement))\n return\n target.classList.remove('active')\n}\n\nexport const handleClick\n = (status: Status, view: EditorView, dropdownElement: HTMLElement) =>\n (e: Event): void => {\n const { target } = e\n if (!(target instanceof HTMLElement))\n return\n if (!view)\n return\n\n const stop = () => {\n e.stopPropagation()\n e.preventDefault()\n }\n\n const { actions } = status.get()\n\n const el = Object.values(actions).find(({ $ }) => $.contains(target))\n if (!el) {\n if (status.isEmpty())\n return\n\n status.clear()\n dropdownElement.classList.add('hide')\n stop()\n\n return\n }\n\n stop()\n el.command(view.state, view.dispatch, view)\n }\n\nexport const handleKeydown\n = (status: Status, view: EditorView, dropdownElement: HTMLElement, mouseManager: MouseManager) => (e: Event) => {\n if (!(e instanceof KeyboardEvent))\n return\n if (!mouseManager.isLock())\n mouseManager.lock()\n\n const { key } = e\n if (status.isEmpty())\n return\n if (!['ArrowDown', 'ArrowUp', 'Enter', 'Escape'].includes(key))\n return\n\n const { actions } = status.get()\n\n let active = actions.findIndex(({ $ }) => $.classList.contains('active'))\n if (active < 0)\n active = 0\n\n const moveActive = (next: number) => {\n const active$ = actions[active]\n const next$ = actions[next]\n if (!active$ || !next$)\n return\n active$.$.classList.remove('active')\n next$.$.classList.add('active')\n scrollIntoView(next$.$, {\n scrollMode: 'if-needed',\n block: 'nearest',\n inline: 'nearest',\n })\n }\n\n if (key === 'ArrowDown') {\n const next = active === actions.length - 1 ? 0 : active + 1\n\n moveActive(next)\n return\n }\n\n if (key === 'ArrowUp') {\n const next = active === 0 ? actions.length - 1 : active - 1\n\n moveActive(next)\n return\n }\n\n if (key === 'Escape') {\n if (status.isEmpty())\n return\n\n status.clear()\n dropdownElement.classList.add('hide')\n return\n }\n\n const active$ = actions[active]\n if (!active$)\n return\n active$.command(view.state, view.dispatch, view)\n active$.$.classList.remove('active')\n }\n","/* Copyright 2021, Milkdown by Mirone. */\nimport { missingRootElement } from '@milkdown/exception'\nimport { calculateNodePosition } from '@milkdown/prose'\nimport type { EditorView } from '@milkdown/prose/view'\nimport type { ThemeUtils } from '@milkdown/utils'\n\nimport { createDropdown } from '../utility'\nimport { renderDropdown } from './dropdown'\nimport {\n createMouseManager,\n handleClick,\n handleKeydown,\n handleMouseEnter,\n handleMouseLeave,\n handleMouseMove,\n} from './input'\nimport type { Status } from './status'\n\nexport const defaultCalcPosition = (view: EditorView, dropdownElement: HTMLElement) => {\n calculateNodePosition(view, dropdownElement, (selected, target, parent) => {\n const $editor = dropdownElement.parentElement\n if (!$editor)\n throw missingRootElement()\n\n let left = selected.left - parent.left\n\n if (left < 0)\n left = 0\n\n let direction: 'top' | 'bottom'\n let maxHeight: number | undefined\n const selectedToTop = selected.top - parent.top\n const selectedToBottom = parent.height + parent.top - selected.bottom\n if (selectedToBottom >= target.height + 28) {\n direction = 'bottom'\n }\n else if (selectedToTop >= target.height + 28) {\n direction = 'top'\n }\n else if (selectedToBottom >= selectedToTop) {\n direction = 'bottom'\n maxHeight = selectedToBottom - 28\n }\n else {\n direction = 'top'\n maxHeight = selectedToTop - 28\n }\n if (selectedToTop < 0 || selectedToBottom < 0) {\n maxHeight = parent.height - selected.height - 28\n if (maxHeight > target.height)\n maxHeight = undefined\n }\n\n const top\n = direction === 'top'\n ? selected.top - parent.top - (maxHeight ?? target.height) - 14 + $editor.scrollTop\n : selected.bottom - parent.top + 14 + $editor.scrollTop\n\n dropdownElement.style.maxHeight = maxHeight !== undefined && maxHeight > 0 ? `${maxHeight}px` : ''\n\n return [top, left]\n })\n}\n\nexport type CalcPosition = (view: EditorView, dropdownElement: HTMLElement) => void\n\nexport const createView = (\n status: Status,\n view: EditorView,\n utils: ThemeUtils,\n className: string,\n calcPosition: CalcPosition,\n) => {\n const wrapper = view.dom.parentNode\n if (!wrapper)\n return {}\n\n const dropdownElement = createDropdown(utils, className)\n const mouseManager = createMouseManager()\n wrapper.appendChild(dropdownElement)\n\n const _mouseMove = handleMouseMove(mouseManager)\n const _mouseDown = handleClick(status, view, dropdownElement)\n const _keydown = handleKeydown(status, view, dropdownElement, mouseManager)\n const _mouseEnter = handleMouseEnter(status, mouseManager)\n const _mouseLeave = handleMouseLeave()\n\n wrapper.addEventListener('mousemove', _mouseMove)\n wrapper.addEventListener('mousedown', _mouseDown)\n wrapper.addEventListener('keydown', _keydown)\n\n return {\n update: (view: EditorView) => {\n const show = renderDropdown(status, dropdownElement, {\n mouseEnter: _mouseEnter as EventListener,\n mouseLeave: _mouseLeave as EventListener,\n })\n\n if (!show)\n return\n\n calcPosition(view, dropdownElement)\n },\n\n destroy: () => {\n wrapper.removeEventListener('mousemove', _mouseMove)\n wrapper.removeEventListener('mousedown', _mouseDown)\n wrapper.removeEventListener('keydown', _keydown)\n dropdownElement.remove()\n },\n }\n}\n","/* Copyright 2021, Milkdown by Mirone. */\nimport { Plugin, PluginKey } from '@milkdown/prose/state'\nimport type { ThemeUtils } from '@milkdown/utils'\n\nimport type { StatusConfigBuilder } from '..'\nimport { createProps } from './props'\nimport { createStatus } from './status'\nimport type { CalcPosition } from './view'\nimport { createView } from './view'\n\nexport const key = 'MILKDOWN_SLASH'\n\nexport const createSlashPlugin = (\n utils: ThemeUtils,\n builder: StatusConfigBuilder,\n className: string,\n calcPosition: CalcPosition,\n) => {\n const status = createStatus(builder)\n\n return new Plugin({\n key: new PluginKey(key),\n props: createProps(status, utils),\n view: view => createView(status, view, utils, className, calcPosition),\n })\n}\n","/* Copyright 2021, Milkdown by Mirone. */\nimport { AtomList, createPlugin } from '@milkdown/utils'\n\nimport type { Config } from './config'\nimport { defaultConfig } from './config'\nimport { createSlashPlugin } from './prose-plugin'\nimport type { CalcPosition } from './prose-plugin/view'\nimport { defaultCalcPosition } from './prose-plugin/view'\n\nexport type { Config, StatusConfig, StatusConfigBuilder, StatusConfigBuilderParams } from './config'\nexport { defaultActions, defaultConfig } from './config'\nexport type { Action, WrappedAction } from './item'\nexport { createDropdownItem } from './utility'\n\nexport interface Options {\n config: Config\n calcPosition: CalcPosition\n}\n\nexport const slashPlugin = createPlugin<string, Options>((utils, options) => {\n const slashConfig = options?.config ?? defaultConfig\n const calcPosition = options?.calcPosition ?? defaultCalcPosition\n\n return {\n prosePlugins: (_, ctx) => {\n const config = slashConfig(ctx)\n\n const plugin = createSlashPlugin(utils, config, 'slash-dropdown', calcPosition)\n\n return [plugin]\n },\n }\n})\n\nexport const slash = AtomList.create([slashPlugin()])\n"],"names":["itemStyle","themeManager","css","palette","color","opacity","ThemeColor","ThemeFont","injectStyle","emotion","ThemeSize","ThemeBorder","ThemeShadow","ThemeScrollbar","createDropdown","utils","className","div","style","createDropdownItem","text","icon","options","textClassName","_a","iconSpan","ThemeIcon","missingIcon","textSpan","cleanUp","state","dispatch","selection","$from","tr","cleanUpAndCreateNode","createCommand","view","defaultActions","ctx","input","nodes","schemaCtx","actions","themeManagerCtx","commandsCtx","userInput","action","keyword","typeName","defaultConfig","content","isTopLevel","editorViewCtx","createEmptyStyle","typography","createSlashStyle","_","createProps","status","event","paragraph","findParentNode","type","uploadPlugin","x","decorations","placeholder","createDecoration","pos","DecorationSet","Decoration","emptyStyle","slashStyle","transformAction","createStatusCtx","createStatus","builder","statusCtx","builderParams","config","_b","renderDropdown","dropdownElement","listeners","child","$","first$","scrollIntoView","createMouseManager","mouseLock","handleMouseMove","mouseManager","handleMouseEnter","e","active","active$","target","handleMouseLeave","handleClick","stop","el","handleKeydown","key","moveActive","next","next$","defaultCalcPosition","calculateNodePosition","selected","parent","$editor","missingRootElement","left","direction","maxHeight","selectedToTop","selectedToBottom","top","createView","calcPosition","wrapper","_mouseMove","_mouseDown","_keydown","_mouseEnter","_mouseLeave","createSlashPlugin","Plugin","PluginKey","slashPlugin","createPlugin","slashConfig","slash","AtomList"],"mappings":"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"}
|
package/lib/item.d.ts
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import type { Command } from '@milkdown/prose/state';
|
|
2
|
-
export
|
|
2
|
+
export interface Action {
|
|
3
3
|
id: string;
|
|
4
4
|
$: HTMLElement;
|
|
5
5
|
command: Command;
|
|
6
|
-
}
|
|
7
|
-
export
|
|
6
|
+
}
|
|
7
|
+
export type WrappedAction = Pick<Action, 'id'> & {
|
|
8
8
|
command: () => void;
|
|
9
9
|
dom: HTMLElement;
|
|
10
10
|
};
|
package/lib/item.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"item.d.ts","sourceRoot":"","sources":["../src/item.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,uBAAuB,
|
|
1
|
+
{"version":3,"file":"item.d.ts","sourceRoot":"","sources":["../src/item.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAA;AAIpD,MAAM,WAAW,MAAM;IACrB,EAAE,EAAE,MAAM,CAAA;IACV,CAAC,EAAE,WAAW,CAAA;IACd,OAAO,EAAE,OAAO,CAAA;CACjB;AAED,MAAM,MAAM,aAAa,GAAG,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,GAAG;IAC/C,OAAO,EAAE,MAAM,IAAI,CAAA;IACnB,GAAG,EAAE,WAAW,CAAA;CACjB,CAAA;AAED,eAAO,MAAM,eAAe,WAAY,aAAa,KAAG,MAItD,CAAA"}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import { Status } from './status';
|
|
2
|
-
|
|
1
|
+
import type { Status } from './status';
|
|
2
|
+
interface Listeners {
|
|
3
3
|
mouseEnter: EventListener;
|
|
4
4
|
mouseLeave: EventListener;
|
|
5
|
-
}
|
|
5
|
+
}
|
|
6
6
|
export declare const renderDropdown: (status: Status, dropdownElement: HTMLElement, listeners: Listeners) => boolean;
|
|
7
7
|
export {};
|
|
8
8
|
//# sourceMappingURL=dropdown.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dropdown.d.ts","sourceRoot":"","sources":["../../src/prose-plugin/dropdown.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,
|
|
1
|
+
{"version":3,"file":"dropdown.d.ts","sourceRoot":"","sources":["../../src/prose-plugin/dropdown.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,UAAU,CAAA;AAEtC,UAAU,SAAS;IACjB,UAAU,EAAE,aAAa,CAAA;IACzB,UAAU,EAAE,aAAa,CAAA;CAC1B;AAED,eAAO,MAAM,cAAc,WAAY,MAAM,mBAAmB,WAAW,aAAa,SAAS,KAAG,OAuCnG,CAAA"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { Plugin } from '@milkdown/prose/state';
|
|
2
|
-
import { ThemeUtils } from '@milkdown/utils';
|
|
2
|
+
import type { ThemeUtils } from '@milkdown/utils';
|
|
3
3
|
import type { StatusConfigBuilder } from '..';
|
|
4
|
-
import { CalcPosition } from './view';
|
|
4
|
+
import type { CalcPosition } from './view';
|
|
5
5
|
export declare const key = "MILKDOWN_SLASH";
|
|
6
6
|
export declare const createSlashPlugin: (utils: ThemeUtils, builder: StatusConfigBuilder, className: string, calcPosition: CalcPosition) => Plugin<any>;
|
|
7
7
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/prose-plugin/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAa,MAAM,uBAAuB,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/prose-plugin/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAa,MAAM,uBAAuB,CAAA;AACzD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAEjD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,IAAI,CAAA;AAG7C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAA;AAG1C,eAAO,MAAM,GAAG,mBAAmB,CAAA;AAEnC,eAAO,MAAM,iBAAiB,UACrB,UAAU,WACR,mBAAmB,aACjB,MAAM,gBACH,YAAY,gBAS3B,CAAA"}
|
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
import { EditorView } from '@milkdown/prose/view';
|
|
2
|
-
import { Status } from './status';
|
|
1
|
+
import type { EditorView } from '@milkdown/prose/view';
|
|
2
|
+
import type { Status } from './status';
|
|
3
3
|
export declare const createMouseManager: () => {
|
|
4
4
|
isLock: () => boolean;
|
|
5
5
|
lock: () => void;
|
|
6
6
|
unlock: () => void;
|
|
7
7
|
};
|
|
8
|
-
export
|
|
8
|
+
export type MouseManager = ReturnType<typeof createMouseManager>;
|
|
9
9
|
export declare const handleMouseMove: (mouseManager: MouseManager) => () => void;
|
|
10
10
|
export declare const handleMouseEnter: (status: Status, mouseManager: MouseManager) => (e: MouseEvent) => void;
|
|
11
11
|
export declare const handleMouseLeave: () => (e: MouseEvent) => void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"input.d.ts","sourceRoot":"","sources":["../../src/prose-plugin/input.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,
|
|
1
|
+
{"version":3,"file":"input.d.ts","sourceRoot":"","sources":["../../src/prose-plugin/input.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAA;AAGtD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,UAAU,CAAA;AAEtC,eAAO,MAAM,kBAAkB;;;;CAY9B,CAAA;AACD,MAAM,MAAM,YAAY,GAAG,UAAU,CAAC,OAAO,kBAAkB,CAAC,CAAA;AAEhE,eAAO,MAAM,eAAe,iBAAkB,YAAY,eAEzD,CAAA;AAED,eAAO,MAAM,gBAAgB,WAAY,MAAM,gBAAgB,YAAY,SAAS,UAAU,SAa7F,CAAA;AAED,eAAO,MAAM,gBAAgB,YAAa,UAAU,SAKnD,CAAA;AAED,eAAO,MAAM,WAAW,WACT,MAAM,QAAQ,UAAU,mBAAmB,WAAW,SAC3D,KAAK,KAAG,IA4BX,CAAA;AAEP,eAAO,MAAM,aAAa,WACX,MAAM,QAAQ,UAAU,mBAAmB,WAAW,gBAAgB,YAAY,SAAS,KAAK,SA4D1G,CAAA"}
|
|
@@ -1,8 +1,9 @@
|
|
|
1
|
-
import { EditorState } from '@milkdown/prose/state';
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
1
|
+
import type { EditorState } from '@milkdown/prose/state';
|
|
2
|
+
import type { EditorView } from '@milkdown/prose/view';
|
|
3
|
+
import { DecorationSet } from '@milkdown/prose/view';
|
|
4
|
+
import type { ThemeUtils } from '@milkdown/utils';
|
|
4
5
|
import type { Status } from './status';
|
|
5
|
-
export
|
|
6
|
+
export type Props = ReturnType<typeof createProps>;
|
|
6
7
|
export declare const createProps: (status: Status, utils: ThemeUtils) => {
|
|
7
8
|
handleKeyDown: (_: EditorView, event: Event) => boolean;
|
|
8
9
|
decorations: (state: EditorState) => DecorationSet | null;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"props.d.ts","sourceRoot":"","sources":["../../src/prose-plugin/props.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"props.d.ts","sourceRoot":"","sources":["../../src/prose-plugin/props.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAA;AACxD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAA;AACtD,OAAO,EAAc,aAAa,EAAE,MAAM,sBAAsB,CAAA;AAChE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAEjD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,UAAU,CAAA;AAEtC,MAAM,MAAM,KAAK,GAAG,UAAU,CAAC,OAAO,WAAW,CAAC,CAAA;AA4BlD,eAAO,MAAM,WAAW,WAAY,MAAM,SAAS,UAAU;uBAEtC,UAAU,SAAS,KAAK;yBAYtB,WAAW;CAkDnC,CAAA"}
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
import { StatusConfigBuilder, StatusConfigBuilderParams } from '..';
|
|
2
|
-
import { Action } from '../item';
|
|
3
|
-
export
|
|
1
|
+
import type { StatusConfigBuilder, StatusConfigBuilderParams } from '..';
|
|
2
|
+
import type { Action } from '../item';
|
|
3
|
+
export interface StatusCtx {
|
|
4
4
|
placeholder: string | null;
|
|
5
5
|
actions: Action[];
|
|
6
|
-
}
|
|
7
|
-
export
|
|
6
|
+
}
|
|
7
|
+
export type Status = ReturnType<typeof createStatus>;
|
|
8
8
|
export declare const createStatus: (builder: StatusConfigBuilder) => {
|
|
9
9
|
get: () => StatusCtx;
|
|
10
10
|
clear: () => void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"status.d.ts","sourceRoot":"","sources":["../../src/prose-plugin/status.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,mBAAmB,EAAE,yBAAyB,EAAE,MAAM,IAAI,
|
|
1
|
+
{"version":3,"file":"status.d.ts","sourceRoot":"","sources":["../../src/prose-plugin/status.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,mBAAmB,EAAE,yBAAyB,EAAE,MAAM,IAAI,CAAA;AACxE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,SAAS,CAAA;AAGrC,MAAM,WAAW,SAAS;IACxB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAA;IAC1B,OAAO,EAAE,MAAM,EAAE,CAAA;CAClB;AASD,MAAM,MAAM,MAAM,GAAG,UAAU,CAAC,OAAO,YAAY,CAAC,CAAA;AAEpD,eAAO,MAAM,YAAY,YAAa,mBAAmB;;;4BAS7B,yBAAyB;;CAQpD,CAAA"}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import { EditorView } from '@milkdown/prose/view';
|
|
2
|
-
import { ThemeUtils } from '@milkdown/utils';
|
|
3
|
-
import { Status } from './status';
|
|
1
|
+
import type { EditorView } from '@milkdown/prose/view';
|
|
2
|
+
import type { ThemeUtils } from '@milkdown/utils';
|
|
3
|
+
import type { Status } from './status';
|
|
4
4
|
export declare const defaultCalcPosition: (view: EditorView, dropdownElement: HTMLElement) => void;
|
|
5
|
-
export
|
|
5
|
+
export type CalcPosition = (view: EditorView, dropdownElement: HTMLElement) => void;
|
|
6
6
|
export declare const createView: (status: Status, view: EditorView, utils: ThemeUtils, className: string, calcPosition: CalcPosition) => {
|
|
7
7
|
update?: undefined;
|
|
8
8
|
destroy?: undefined;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"view.d.ts","sourceRoot":"","sources":["../../src/prose-plugin/view.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,
|
|
1
|
+
{"version":3,"file":"view.d.ts","sourceRoot":"","sources":["../../src/prose-plugin/view.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAA;AACtD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAYjD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,UAAU,CAAA;AAEtC,eAAO,MAAM,mBAAmB,SAAU,UAAU,mBAAmB,WAAW,SA4CjF,CAAA;AAED,MAAM,MAAM,YAAY,GAAG,CAAC,IAAI,EAAE,UAAU,EAAE,eAAe,EAAE,WAAW,KAAK,IAAI,CAAA;AAEnF,eAAO,MAAM,UAAU,WACb,MAAM,QACR,UAAU,SACT,UAAU,aACN,MAAM,gBACH,YAAY;;;;mBAqBT,UAAU;;CAmB5B,CAAA"}
|
package/lib/style.d.ts
CHANGED
package/lib/style.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"style.d.ts","sourceRoot":"","sources":["../src/style.ts"],"names":[],"mappings":"AACA,OAAO,
|
|
1
|
+
{"version":3,"file":"style.d.ts","sourceRoot":"","sources":["../src/style.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAEV,OAAO,EACP,YAAY,EACb,MAAM,gBAAgB,CAAA;AAgDvB,eAAO,MAAM,WAAW,iBAAkB,YAAY,WAAW,OAAO,WAsBvE,CAAA"}
|
package/lib/utility.d.ts
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
|
-
import { ThemeManager } from '@milkdown/core';
|
|
1
|
+
import type { ThemeManager } from '@milkdown/core';
|
|
2
2
|
import type { Icon } from '@milkdown/design-system';
|
|
3
3
|
import type { Node } from '@milkdown/prose/model';
|
|
4
4
|
import type { Command } from '@milkdown/prose/state';
|
|
5
5
|
import type { ThemeUtils } from '@milkdown/utils';
|
|
6
6
|
export declare const createDropdown: (utils: ThemeUtils, className: string) => HTMLDivElement;
|
|
7
|
-
|
|
7
|
+
interface ItemOptions {
|
|
8
8
|
textClassName: string;
|
|
9
|
-
}
|
|
9
|
+
}
|
|
10
10
|
export declare const createDropdownItem: (themeManager: ThemeManager, text: string, icon: Icon, options?: Partial<ItemOptions>) => HTMLDivElement;
|
|
11
11
|
export declare const getDepth: (node: Node) => number;
|
|
12
12
|
export declare const cleanUpAndCreateNode: (createCommand: () => void) => Command;
|
package/lib/utility.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utility.d.ts","sourceRoot":"","sources":["../src/utility.ts"],"names":[],"mappings":"AACA,OAAO,
|
|
1
|
+
{"version":3,"file":"utility.d.ts","sourceRoot":"","sources":["../src/utility.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAA;AAElD,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,yBAAyB,CAAA;AAEnD,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,uBAAuB,CAAA;AACjD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAA;AACpD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAIjD,eAAO,MAAM,cAAc,UAAW,UAAU,aAAa,MAAM,mBAclE,CAAA;AAED,UAAU,WAAW;IACnB,aAAa,EAAE,MAAM,CAAA;CACtB;AACD,eAAO,MAAM,kBAAkB,iBACf,YAAY,QACpB,MAAM,QACN,IAAI,YACA,QAAQ,WAAW,CAAC,mBAqB/B,CAAA;AAED,eAAO,MAAM,QAAQ,SAAU,IAAI,WASlC,CAAA;AAUD,eAAO,MAAM,oBAAoB,kBACX,MAAM,IAAI,KAAG,OAO5B,CAAA"}
|
package/package.json
CHANGED
|
@@ -1,33 +1,33 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@milkdown/plugin-slash",
|
|
3
|
-
"version": "6.5.2",
|
|
4
3
|
"type": "module",
|
|
4
|
+
"version": "6.5.3",
|
|
5
|
+
"license": "MIT",
|
|
6
|
+
"keywords": [
|
|
7
|
+
"milkdown",
|
|
8
|
+
"milkdown plugin"
|
|
9
|
+
],
|
|
10
|
+
"sideEffects": false,
|
|
5
11
|
"main": "./lib/index.es.js",
|
|
6
12
|
"types": "./lib/index.d.ts",
|
|
7
|
-
"sideEffects": false,
|
|
8
|
-
"license": "MIT",
|
|
9
13
|
"files": [
|
|
10
14
|
"lib",
|
|
11
15
|
"src"
|
|
12
16
|
],
|
|
13
|
-
"keywords": [
|
|
14
|
-
"milkdown",
|
|
15
|
-
"milkdown plugin"
|
|
16
|
-
],
|
|
17
|
-
"devDependencies": {
|
|
18
|
-
"@milkdown/core": "6.5.2",
|
|
19
|
-
"@milkdown/prose": "6.5.2",
|
|
20
|
-
"@milkdown/design-system": "6.5.2"
|
|
21
|
-
},
|
|
22
17
|
"peerDependencies": {
|
|
23
18
|
"@milkdown/core": "^6.0.1",
|
|
24
19
|
"@milkdown/prose": "^6.0.1"
|
|
25
20
|
},
|
|
26
21
|
"dependencies": {
|
|
27
|
-
"@milkdown/utils": "6.5.2",
|
|
28
|
-
"@milkdown/exception": "6.5.2",
|
|
29
22
|
"smooth-scroll-into-view-if-needed": "^1.1.32",
|
|
30
|
-
"tslib": "^2.4.0"
|
|
23
|
+
"tslib": "^2.4.0",
|
|
24
|
+
"@milkdown/exception": "6.5.3",
|
|
25
|
+
"@milkdown/utils": "6.5.3"
|
|
26
|
+
},
|
|
27
|
+
"devDependencies": {
|
|
28
|
+
"@milkdown/core": "6.5.3",
|
|
29
|
+
"@milkdown/design-system": "6.5.3",
|
|
30
|
+
"@milkdown/prose": "6.5.3"
|
|
31
31
|
},
|
|
32
32
|
"nx": {
|
|
33
33
|
"targets": {
|