@milkdown/plugin-tooltip 6.3.0 → 6.3.1
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/index.es.js +10 -10
- package/lib/index.es.js.map +1 -1
- package/package.json +6 -6
- package/src/button-manager/style.ts +2 -2
package/lib/index.es.js
CHANGED
|
@@ -1,17 +1,17 @@
|
|
|
1
1
|
import { TextSelection as m, PluginKey as p, Plugin as T } from "@milkdown/prose/state";
|
|
2
2
|
import { createPlugin as v, AtomList as $ } from "@milkdown/utils";
|
|
3
|
-
import { schemaCtx as y, themeManagerCtx as b, ThemeIcon as k, commandsCtx as L, ThemeSize as f, ThemeBorder as P, ThemeShadow as E, ThemeColor as
|
|
4
|
-
import { findParentNode as
|
|
5
|
-
import { missingRootElement as
|
|
3
|
+
import { schemaCtx as y, themeManagerCtx as b, ThemeIcon as k, commandsCtx as L, ThemeSize as f, ThemeBorder as P, ThemeShadow as E, ThemeColor as x } from "@milkdown/core";
|
|
4
|
+
import { findParentNode as B, calculateTextPosition as C } from "@milkdown/prose";
|
|
5
|
+
import { missingRootElement as M } from "@milkdown/exception";
|
|
6
6
|
const h = (t, e) => {
|
|
7
7
|
if (!e)
|
|
8
8
|
return !1;
|
|
9
9
|
const { from: o, to: s } = t.selection;
|
|
10
10
|
return t.doc.rangeHasMark(o, o === s ? s + 1 : s, e);
|
|
11
|
-
},
|
|
11
|
+
}, _ = (t) => {
|
|
12
12
|
const { selection: e } = t;
|
|
13
13
|
return e instanceof m ? !!t.doc.textBetween(e.from, e.to) : !1;
|
|
14
|
-
}, A = (t) => Boolean(
|
|
14
|
+
}, A = (t) => Boolean(B((e) => !!e.type.spec.code)(t.selection)), H = (t, e) => !_(t) || A(t) || h(t, e), u = (t, e, o, s) => ({
|
|
15
15
|
icon: t,
|
|
16
16
|
onClick: e,
|
|
17
17
|
isHidden: () => (n) => H(n.state, s),
|
|
@@ -39,16 +39,16 @@ const h = (t, e) => {
|
|
|
39
39
|
};
|
|
40
40
|
return e(t).map(o);
|
|
41
41
|
}, D = (t, e, o) => {
|
|
42
|
-
t.classList.remove("hide"),
|
|
42
|
+
t.classList.remove("hide"), C(e, t, (s, n, i, r) => {
|
|
43
43
|
const c = t.parentElement;
|
|
44
44
|
if (!c)
|
|
45
|
-
throw
|
|
45
|
+
throw M();
|
|
46
46
|
const l = n.left - s.left;
|
|
47
47
|
let a = s.left - r.left - (i.width - l) / 2, d = s.top - r.top - i.height - 14 + c.scrollTop;
|
|
48
48
|
return a < 0 && (a = 0), (s.top - r.top < i.height || o && r.bottom - s.bottom > i.height) && (d = s.bottom - r.top + 14 + c.scrollTop), [d, a];
|
|
49
49
|
});
|
|
50
50
|
}, q = (t, { css: e }) => {
|
|
51
|
-
const o = (n, i = 1) => t.get(
|
|
51
|
+
const o = (n, i = 1) => t.get(x, [n, i]), s = t.get(f, "lineWidth");
|
|
52
52
|
return e`
|
|
53
53
|
display: inline-flex;
|
|
54
54
|
cursor: pointer;
|
|
@@ -67,8 +67,8 @@ const h = (t, e) => {
|
|
|
67
67
|
position: relative;
|
|
68
68
|
color: ${o("solid", 0.87)};
|
|
69
69
|
|
|
70
|
-
width:
|
|
71
|
-
line-height:
|
|
70
|
+
width: 48px;
|
|
71
|
+
line-height: 48px;
|
|
72
72
|
text-align: center;
|
|
73
73
|
transition: all 0.4s ease-in-out;
|
|
74
74
|
&:hover {
|
package/lib/index.es.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.es.js","sources":["../src/utility/prosemirror.ts","../src/item.ts","../src/button-manager/calc-button-pos.ts","../src/button-manager/style.ts","../src/button-manager/create-tooltip.ts","../src/button-manager/no-active.ts","../src/button-manager/filter-button.ts","../src/button-manager/index.ts","../src/selection-marks-tooltip.ts","../src/index.ts"],"sourcesContent":["/* Copyright 2021, Milkdown by Mirone. */\nimport { findParentNode } from '@milkdown/prose';\nimport { MarkType, Node, NodeType } from '@milkdown/prose/model';\nimport { EditorState, TextSelection } from '@milkdown/prose/state';\n\nexport type Position = {\n start: number;\n end: number;\n};\n\nexport const hasMark = (editorState: EditorState, type?: MarkType): boolean => {\n if (!type) {\n return false;\n }\n const { from, to } = editorState.selection;\n\n return editorState.doc.rangeHasMark(from, from === to ? to + 1 : to, type);\n};\n\nexport const isTextSelection = (editorState: EditorState): boolean => {\n const { selection } = editorState;\n if (selection instanceof TextSelection) {\n const text = editorState.doc.textBetween(selection.from, selection.to);\n\n if (!text) return false;\n\n return true;\n }\n return false;\n};\n\nexport const isInCodeFence = (editorState: EditorState): boolean =>\n Boolean(findParentNode((node) => !!node.type.spec.code)(editorState.selection));\n\nexport const isTextAndNotHasMark = (editorState: EditorState, mark?: MarkType): boolean =>\n !isTextSelection(editorState) || isInCodeFence(editorState) || hasMark(editorState, mark);\n\nexport const equalNodeType = (nodeType: NodeType, node: Node) => {\n return (Array.isArray(nodeType) && nodeType.indexOf(node.type) > -1) || node.type === nodeType;\n};\n","/* Copyright 2021, Milkdown by Mirone. */\nimport { commandsCtx, Ctx, schemaCtx, ThemeIcon, themeManagerCtx } from '@milkdown/core';\nimport type { Icon } from '@milkdown/design-system';\nimport type { MarkType } from '@milkdown/prose/model';\nimport { EditorView } from '@milkdown/prose/view';\n\nimport { hasMark, isTextAndNotHasMark } from './utility';\n\nexport type Pred = (view: EditorView) => boolean;\nexport type Updater = (view: EditorView, $: HTMLElement) => void;\nexport type Event2Command = (e: Event) => void;\n\nexport type OnClick = (ctx: Ctx) => void;\n\nexport type Item = {\n icon: Icon | ((ctx: Ctx) => HTMLElement);\n onClick: string | ((ctx: Ctx) => () => void);\n isHidden: (ctx: Ctx) => Pred;\n isActive: (ctx: Ctx) => Pred;\n canAddToDOM: (ctx: Ctx) => Pred;\n};\n\nexport type ButtonItem = {\n $: HTMLElement;\n command: () => void;\n active: Pred;\n disable?: Pred;\n enable: Pred;\n};\n\nexport const createToggleIcon = (\n icon: Icon,\n onClick: string,\n mark: MarkType | undefined,\n disableForMark: MarkType | undefined,\n): Item => ({\n icon,\n onClick,\n isHidden: () => (view: EditorView) => isTextAndNotHasMark(view.state, disableForMark),\n isActive: () => (view: EditorView) => hasMark(view.state, mark),\n canAddToDOM: () => (view: EditorView) => !!mark && !!view.state.schema.marks[mark.name],\n});\n\nexport const defaultButtons = (ctx: Ctx) => {\n const marks = ctx.get(schemaCtx).marks;\n return [\n createToggleIcon('bold', 'ToggleBold', marks['strong'], marks['code_inline']),\n createToggleIcon('italic', 'ToggleItalic', marks['em'], marks['code_inline']),\n createToggleIcon('strikeThrough', 'ToggleStrikeThrough', marks['strike_through'], marks['code_inline']),\n createToggleIcon('code', 'ToggleInlineCode', marks['code_inline'], marks['link']),\n createToggleIcon('link', 'ToggleLink', marks['link'], marks['code_inline']),\n ];\n};\n\nexport type ButtonList = ButtonItem[];\n\nexport type TooltipOptions = {\n bottom: boolean;\n items: (ctx: Ctx) => Array<Item>;\n};\n\nexport const buttonMap = (ctx: Ctx, items: (ctx: Ctx) => Array<Item> = defaultButtons): ButtonList => {\n const toButton = ({ icon, onClick, isHidden, isActive, canAddToDOM }: Item): ButtonItem => ({\n $: typeof icon === 'function' ? icon(ctx) : (ctx.get(themeManagerCtx).get(ThemeIcon, icon)?.dom as HTMLElement),\n command: typeof onClick === 'string' ? () => ctx.get(commandsCtx).call(onClick) : onClick(ctx),\n disable: isHidden(ctx),\n active: isActive(ctx),\n enable: canAddToDOM(ctx),\n });\n return items(ctx).map(toButton);\n};\n","/* Copyright 2021, Milkdown by Mirone. */\nimport { missingRootElement } from '@milkdown/exception';\nimport { calculateTextPosition } from '@milkdown/prose';\nimport { EditorView } from '@milkdown/prose/view';\n\nexport const calcButtonPos = (buttons: HTMLElement, view: EditorView, isBottom: boolean) => {\n buttons.classList.remove('hide');\n calculateTextPosition(view, buttons, (start, end, target, parent) => {\n const $editor = buttons.parentElement;\n if (!$editor) {\n throw missingRootElement();\n }\n const selectionWidth = end.left - start.left;\n let left = start.left - parent.left - (target.width - selectionWidth) / 2;\n let top = start.top - parent.top - target.height - 14 + $editor.scrollTop;\n\n if (left < 0) left = 0;\n\n if (start.top - parent.top < target.height || (isBottom && parent.bottom - start.bottom > target.height)) {\n top = start.bottom - parent.top + 14 + $editor.scrollTop;\n }\n return [top, left];\n });\n};\n","/* Copyright 2021, Milkdown by Mirone. */\nimport { Color, Emotion, ThemeBorder, ThemeColor, ThemeManager, ThemeShadow, ThemeSize } from '@milkdown/core';\n\nexport const injectStyle = (themeManager: ThemeManager, { css }: Emotion) => {\n const palette = (color: Color, opacity = 1) => themeManager.get(ThemeColor, [color, opacity]);\n const lineWidth = themeManager.get(ThemeSize, 'lineWidth');\n return css`\n display: inline-flex;\n cursor: pointer;\n justify-content: space-evenly;\n position: absolute;\n border-radius: ${themeManager.get(ThemeSize, 'radius')};\n z-index: 2;\n\n ${themeManager.get(ThemeBorder, undefined)}\n ${themeManager.get(ThemeShadow, undefined)}\n\n overflow: hidden;\n background: ${palette('surface')};\n\n .icon {\n position: relative;\n color: ${palette('solid', 0.87)};\n\n width: 2em;\n line-height: 2em;\n text-align: center;\n transition: all 0.4s ease-in-out;\n &:hover {\n background-color: ${palette('secondary', 0.12)};\n }\n &.active {\n color: ${palette('primary')};\n }\n &:not(:last-child)::after {\n content: '';\n position: absolute;\n top: 0;\n right: calc(-0.5 * ${lineWidth});\n width: ${lineWidth};\n bottom: 0;\n background: ${palette('line')};\n }\n }\n &.hide,\n .hide {\n display: none;\n }\n `;\n};\n","/* Copyright 2021, Milkdown by Mirone. */\nimport type { EditorView } from '@milkdown/prose/view';\nimport type { Utils } from '@milkdown/utils';\n\nimport type { ButtonList } from '../item';\nimport { injectStyle } from './style';\n\ntype Tooltip = {\n dom: HTMLDivElement;\n render: (editorView: EditorView) => void;\n};\n\nexport const createTooltip = (buttonMap: ButtonList, utils: Utils, className: string): Tooltip => {\n const div = document.createElement('div');\n utils.themeManager.onFlush(() => {\n const style = utils.getStyle((emotion) => injectStyle(utils.themeManager, emotion)) || '';\n if (style) {\n div.classList.add(style);\n }\n });\n\n div.classList.add(utils.getClassName({}, className));\n\n return {\n dom: div,\n render: (editorView: EditorView) => {\n buttonMap\n .filter((item) => item.enable(editorView) && item.$ != null)\n .forEach(({ $ }) => div.appendChild($));\n\n editorView.dom.parentNode?.appendChild(div);\n },\n };\n};\n","/* Copyright 2021, Milkdown by Mirone. */\nimport { EditorView } from '@milkdown/prose/view';\n\nimport { ButtonList } from '../item';\n\nexport const noActive = (buttonMap: ButtonList, view: EditorView) => {\n return Object.values(buttonMap)\n .filter((item) => item.enable(view) && item.$ != null)\n .every(({ $ }) => $.classList.contains('hide'));\n};\n","/* Copyright 2021, Milkdown by Mirone. */\nimport { EditorView } from '@milkdown/prose/view';\n\nimport { ButtonList } from '../item';\nimport { noActive } from './no-active';\n\nexport const filterButton = (buttons: ButtonList, view: EditorView) => {\n buttons\n .filter((item) => item.enable(view) && item.$ != null)\n .forEach((item) => {\n const disable = item.disable?.(view);\n if (disable) {\n item.$.classList.add('hide');\n return;\n }\n\n item.$.classList.remove('hide');\n\n const active = item.active(view);\n if (active) {\n item.$.classList.add('active');\n return;\n }\n item.$.classList.remove('active');\n });\n\n return noActive(buttons, view);\n};\n","/* Copyright 2021, Milkdown by Mirone. */\nimport type { EditorView } from '@milkdown/prose/view';\nimport type { Utils } from '@milkdown/utils';\n\nimport type { ButtonList } from '../item';\nimport { calcButtonPos } from './calc-button-pos';\nimport { createTooltip } from './create-tooltip';\nimport { filterButton } from './filter-button';\n\nexport const createButtonManager = (buttons: ButtonList, utils: Utils, bottom: boolean, containerClassName: string) => {\n const { dom: buttonDOM, render } = createTooltip(buttons, utils, containerClassName);\n\n const onClick = (e: Event) => {\n const target = buttons.find(({ $ }) => e.target instanceof Element && $.contains(e.target));\n if (!target) return;\n\n e.stopPropagation();\n e.preventDefault();\n target.command();\n };\n\n const hide = () => {\n buttonDOM.classList.add('hide');\n };\n\n buttonDOM.addEventListener('mousedown', onClick);\n\n return {\n destroy: () => {\n buttonDOM.removeEventListener('mousedown', onClick);\n buttonDOM.remove();\n },\n hide,\n update: (editorView: EditorView) => {\n const noActive = filterButton(buttons, editorView);\n if (noActive) {\n hide();\n return;\n }\n calcButtonPos(buttonDOM, editorView, bottom);\n },\n render,\n };\n};\n","/* Copyright 2021, Milkdown by Mirone. */\nimport { EditorState } from '@milkdown/prose/state';\nimport type { EditorView } from '@milkdown/prose/view';\nimport { Utils } from '@milkdown/utils';\n\nimport { createButtonManager } from './button-manager';\nimport type { ButtonList } from './item';\n\nexport const createPlugin = (buttonMap: ButtonList, utils: Utils, bottom: boolean, containerClassName: string) => {\n let buttonManager = createButtonManager(buttonMap, utils, bottom, containerClassName);\n let shouldHide = false;\n\n const hide = () => {\n buttonManager.hide();\n };\n\n const update = (view: EditorView, prevState?: EditorState) => {\n const { state } = view;\n\n if (!view.editable || shouldHide) {\n hide();\n return;\n }\n\n const isEqualSelection = prevState?.doc.eq(state.doc) && prevState.selection.eq(state.selection);\n if (isEqualSelection) return;\n\n buttonManager.update(view);\n };\n\n return {\n recreate: (editorView: EditorView) => {\n buttonManager = createButtonManager(buttonMap, utils, bottom, containerClassName);\n buttonManager.render(editorView);\n update(editorView);\n },\n update,\n destroy: () => {\n buttonManager.destroy();\n },\n render: (editorView: EditorView) => {\n buttonManager.render(editorView);\n update(editorView);\n },\n setHide: (isTyping: boolean) => {\n shouldHide = isTyping;\n },\n };\n};\n","/* Copyright 2021, Milkdown by Mirone. */\nimport { Plugin, PluginKey } from '@milkdown/prose/state';\nimport { AtomList, createPlugin as create } from '@milkdown/utils';\n\nimport { buttonMap, TooltipOptions } from './item';\nimport { createPlugin } from './selection-marks-tooltip';\n\nexport const key = new PluginKey('MILKDOWN_TOOLTIP');\nexport * from './item';\n\nexport const tooltipPlugin = create<string, TooltipOptions>((utils, options) => {\n return {\n id: 'tooltip',\n prosePlugins: (_, ctx) => {\n const manager = createPlugin(buttonMap(ctx, options?.items), utils, options?.bottom ?? false, 'tooltip');\n const plugin = new Plugin({\n key,\n props: {\n handleClick: (view) => {\n manager.setHide(false);\n manager.update(view);\n return false;\n },\n handleDOMEvents: {\n mousedown: () => {\n manager.setHide(false);\n return false;\n },\n },\n },\n view: (editorView) => {\n manager.recreate(editorView);\n return {\n update: manager.update,\n destroy: manager.destroy,\n };\n },\n });\n return [plugin];\n },\n };\n});\n\nexport const tooltip = AtomList.create([tooltipPlugin()]);\n"],"names":["create"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.es.js","sources":["../src/utility/prosemirror.ts","../src/item.ts","../src/button-manager/calc-button-pos.ts","../src/button-manager/style.ts","../src/button-manager/create-tooltip.ts","../src/button-manager/no-active.ts","../src/button-manager/filter-button.ts","../src/button-manager/index.ts","../src/selection-marks-tooltip.ts","../src/index.ts"],"sourcesContent":["/* Copyright 2021, Milkdown by Mirone. */\nimport { findParentNode } from '@milkdown/prose';\nimport { MarkType, Node, NodeType } from '@milkdown/prose/model';\nimport { EditorState, TextSelection } from '@milkdown/prose/state';\n\nexport type Position = {\n start: number;\n end: number;\n};\n\nexport const hasMark = (editorState: EditorState, type?: MarkType): boolean => {\n if (!type) {\n return false;\n }\n const { from, to } = editorState.selection;\n\n return editorState.doc.rangeHasMark(from, from === to ? to + 1 : to, type);\n};\n\nexport const isTextSelection = (editorState: EditorState): boolean => {\n const { selection } = editorState;\n if (selection instanceof TextSelection) {\n const text = editorState.doc.textBetween(selection.from, selection.to);\n\n if (!text) return false;\n\n return true;\n }\n return false;\n};\n\nexport const isInCodeFence = (editorState: EditorState): boolean =>\n Boolean(findParentNode((node) => !!node.type.spec.code)(editorState.selection));\n\nexport const isTextAndNotHasMark = (editorState: EditorState, mark?: MarkType): boolean =>\n !isTextSelection(editorState) || isInCodeFence(editorState) || hasMark(editorState, mark);\n\nexport const equalNodeType = (nodeType: NodeType, node: Node) => {\n return (Array.isArray(nodeType) && nodeType.indexOf(node.type) > -1) || node.type === nodeType;\n};\n","/* Copyright 2021, Milkdown by Mirone. */\nimport { commandsCtx, Ctx, schemaCtx, ThemeIcon, themeManagerCtx } from '@milkdown/core';\nimport type { Icon } from '@milkdown/design-system';\nimport type { MarkType } from '@milkdown/prose/model';\nimport { EditorView } from '@milkdown/prose/view';\n\nimport { hasMark, isTextAndNotHasMark } from './utility';\n\nexport type Pred = (view: EditorView) => boolean;\nexport type Updater = (view: EditorView, $: HTMLElement) => void;\nexport type Event2Command = (e: Event) => void;\n\nexport type OnClick = (ctx: Ctx) => void;\n\nexport type Item = {\n icon: Icon | ((ctx: Ctx) => HTMLElement);\n onClick: string | ((ctx: Ctx) => () => void);\n isHidden: (ctx: Ctx) => Pred;\n isActive: (ctx: Ctx) => Pred;\n canAddToDOM: (ctx: Ctx) => Pred;\n};\n\nexport type ButtonItem = {\n $: HTMLElement;\n command: () => void;\n active: Pred;\n disable?: Pred;\n enable: Pred;\n};\n\nexport const createToggleIcon = (\n icon: Icon,\n onClick: string,\n mark: MarkType | undefined,\n disableForMark: MarkType | undefined,\n): Item => ({\n icon,\n onClick,\n isHidden: () => (view: EditorView) => isTextAndNotHasMark(view.state, disableForMark),\n isActive: () => (view: EditorView) => hasMark(view.state, mark),\n canAddToDOM: () => (view: EditorView) => !!mark && !!view.state.schema.marks[mark.name],\n});\n\nexport const defaultButtons = (ctx: Ctx) => {\n const marks = ctx.get(schemaCtx).marks;\n return [\n createToggleIcon('bold', 'ToggleBold', marks['strong'], marks['code_inline']),\n createToggleIcon('italic', 'ToggleItalic', marks['em'], marks['code_inline']),\n createToggleIcon('strikeThrough', 'ToggleStrikeThrough', marks['strike_through'], marks['code_inline']),\n createToggleIcon('code', 'ToggleInlineCode', marks['code_inline'], marks['link']),\n createToggleIcon('link', 'ToggleLink', marks['link'], marks['code_inline']),\n ];\n};\n\nexport type ButtonList = ButtonItem[];\n\nexport type TooltipOptions = {\n bottom: boolean;\n items: (ctx: Ctx) => Array<Item>;\n};\n\nexport const buttonMap = (ctx: Ctx, items: (ctx: Ctx) => Array<Item> = defaultButtons): ButtonList => {\n const toButton = ({ icon, onClick, isHidden, isActive, canAddToDOM }: Item): ButtonItem => ({\n $: typeof icon === 'function' ? icon(ctx) : (ctx.get(themeManagerCtx).get(ThemeIcon, icon)?.dom as HTMLElement),\n command: typeof onClick === 'string' ? () => ctx.get(commandsCtx).call(onClick) : onClick(ctx),\n disable: isHidden(ctx),\n active: isActive(ctx),\n enable: canAddToDOM(ctx),\n });\n return items(ctx).map(toButton);\n};\n","/* Copyright 2021, Milkdown by Mirone. */\nimport { missingRootElement } from '@milkdown/exception';\nimport { calculateTextPosition } from '@milkdown/prose';\nimport { EditorView } from '@milkdown/prose/view';\n\nexport const calcButtonPos = (buttons: HTMLElement, view: EditorView, isBottom: boolean) => {\n buttons.classList.remove('hide');\n calculateTextPosition(view, buttons, (start, end, target, parent) => {\n const $editor = buttons.parentElement;\n if (!$editor) {\n throw missingRootElement();\n }\n const selectionWidth = end.left - start.left;\n let left = start.left - parent.left - (target.width - selectionWidth) / 2;\n let top = start.top - parent.top - target.height - 14 + $editor.scrollTop;\n\n if (left < 0) left = 0;\n\n if (start.top - parent.top < target.height || (isBottom && parent.bottom - start.bottom > target.height)) {\n top = start.bottom - parent.top + 14 + $editor.scrollTop;\n }\n return [top, left];\n });\n};\n","/* Copyright 2021, Milkdown by Mirone. */\nimport { Color, Emotion, ThemeBorder, ThemeColor, ThemeManager, ThemeShadow, ThemeSize } from '@milkdown/core';\n\nexport const injectStyle = (themeManager: ThemeManager, { css }: Emotion) => {\n const palette = (color: Color, opacity = 1) => themeManager.get(ThemeColor, [color, opacity]);\n const lineWidth = themeManager.get(ThemeSize, 'lineWidth');\n return css`\n display: inline-flex;\n cursor: pointer;\n justify-content: space-evenly;\n position: absolute;\n border-radius: ${themeManager.get(ThemeSize, 'radius')};\n z-index: 2;\n\n ${themeManager.get(ThemeBorder, undefined)}\n ${themeManager.get(ThemeShadow, undefined)}\n\n overflow: hidden;\n background: ${palette('surface')};\n\n .icon {\n position: relative;\n color: ${palette('solid', 0.87)};\n\n width: 48px;\n line-height: 48px;\n text-align: center;\n transition: all 0.4s ease-in-out;\n &:hover {\n background-color: ${palette('secondary', 0.12)};\n }\n &.active {\n color: ${palette('primary')};\n }\n &:not(:last-child)::after {\n content: '';\n position: absolute;\n top: 0;\n right: calc(-0.5 * ${lineWidth});\n width: ${lineWidth};\n bottom: 0;\n background: ${palette('line')};\n }\n }\n &.hide,\n .hide {\n display: none;\n }\n `;\n};\n","/* Copyright 2021, Milkdown by Mirone. */\nimport type { EditorView } from '@milkdown/prose/view';\nimport type { Utils } from '@milkdown/utils';\n\nimport type { ButtonList } from '../item';\nimport { injectStyle } from './style';\n\ntype Tooltip = {\n dom: HTMLDivElement;\n render: (editorView: EditorView) => void;\n};\n\nexport const createTooltip = (buttonMap: ButtonList, utils: Utils, className: string): Tooltip => {\n const div = document.createElement('div');\n utils.themeManager.onFlush(() => {\n const style = utils.getStyle((emotion) => injectStyle(utils.themeManager, emotion)) || '';\n if (style) {\n div.classList.add(style);\n }\n });\n\n div.classList.add(utils.getClassName({}, className));\n\n return {\n dom: div,\n render: (editorView: EditorView) => {\n buttonMap\n .filter((item) => item.enable(editorView) && item.$ != null)\n .forEach(({ $ }) => div.appendChild($));\n\n editorView.dom.parentNode?.appendChild(div);\n },\n };\n};\n","/* Copyright 2021, Milkdown by Mirone. */\nimport { EditorView } from '@milkdown/prose/view';\n\nimport { ButtonList } from '../item';\n\nexport const noActive = (buttonMap: ButtonList, view: EditorView) => {\n return Object.values(buttonMap)\n .filter((item) => item.enable(view) && item.$ != null)\n .every(({ $ }) => $.classList.contains('hide'));\n};\n","/* Copyright 2021, Milkdown by Mirone. */\nimport { EditorView } from '@milkdown/prose/view';\n\nimport { ButtonList } from '../item';\nimport { noActive } from './no-active';\n\nexport const filterButton = (buttons: ButtonList, view: EditorView) => {\n buttons\n .filter((item) => item.enable(view) && item.$ != null)\n .forEach((item) => {\n const disable = item.disable?.(view);\n if (disable) {\n item.$.classList.add('hide');\n return;\n }\n\n item.$.classList.remove('hide');\n\n const active = item.active(view);\n if (active) {\n item.$.classList.add('active');\n return;\n }\n item.$.classList.remove('active');\n });\n\n return noActive(buttons, view);\n};\n","/* Copyright 2021, Milkdown by Mirone. */\nimport type { EditorView } from '@milkdown/prose/view';\nimport type { Utils } from '@milkdown/utils';\n\nimport type { ButtonList } from '../item';\nimport { calcButtonPos } from './calc-button-pos';\nimport { createTooltip } from './create-tooltip';\nimport { filterButton } from './filter-button';\n\nexport const createButtonManager = (buttons: ButtonList, utils: Utils, bottom: boolean, containerClassName: string) => {\n const { dom: buttonDOM, render } = createTooltip(buttons, utils, containerClassName);\n\n const onClick = (e: Event) => {\n const target = buttons.find(({ $ }) => e.target instanceof Element && $.contains(e.target));\n if (!target) return;\n\n e.stopPropagation();\n e.preventDefault();\n target.command();\n };\n\n const hide = () => {\n buttonDOM.classList.add('hide');\n };\n\n buttonDOM.addEventListener('mousedown', onClick);\n\n return {\n destroy: () => {\n buttonDOM.removeEventListener('mousedown', onClick);\n buttonDOM.remove();\n },\n hide,\n update: (editorView: EditorView) => {\n const noActive = filterButton(buttons, editorView);\n if (noActive) {\n hide();\n return;\n }\n calcButtonPos(buttonDOM, editorView, bottom);\n },\n render,\n };\n};\n","/* Copyright 2021, Milkdown by Mirone. */\nimport { EditorState } from '@milkdown/prose/state';\nimport type { EditorView } from '@milkdown/prose/view';\nimport { Utils } from '@milkdown/utils';\n\nimport { createButtonManager } from './button-manager';\nimport type { ButtonList } from './item';\n\nexport const createPlugin = (buttonMap: ButtonList, utils: Utils, bottom: boolean, containerClassName: string) => {\n let buttonManager = createButtonManager(buttonMap, utils, bottom, containerClassName);\n let shouldHide = false;\n\n const hide = () => {\n buttonManager.hide();\n };\n\n const update = (view: EditorView, prevState?: EditorState) => {\n const { state } = view;\n\n if (!view.editable || shouldHide) {\n hide();\n return;\n }\n\n const isEqualSelection = prevState?.doc.eq(state.doc) && prevState.selection.eq(state.selection);\n if (isEqualSelection) return;\n\n buttonManager.update(view);\n };\n\n return {\n recreate: (editorView: EditorView) => {\n buttonManager = createButtonManager(buttonMap, utils, bottom, containerClassName);\n buttonManager.render(editorView);\n update(editorView);\n },\n update,\n destroy: () => {\n buttonManager.destroy();\n },\n render: (editorView: EditorView) => {\n buttonManager.render(editorView);\n update(editorView);\n },\n setHide: (isTyping: boolean) => {\n shouldHide = isTyping;\n },\n };\n};\n","/* Copyright 2021, Milkdown by Mirone. */\nimport { Plugin, PluginKey } from '@milkdown/prose/state';\nimport { AtomList, createPlugin as create } from '@milkdown/utils';\n\nimport { buttonMap, TooltipOptions } from './item';\nimport { createPlugin } from './selection-marks-tooltip';\n\nexport const key = new PluginKey('MILKDOWN_TOOLTIP');\nexport * from './item';\n\nexport const tooltipPlugin = create<string, TooltipOptions>((utils, options) => {\n return {\n id: 'tooltip',\n prosePlugins: (_, ctx) => {\n const manager = createPlugin(buttonMap(ctx, options?.items), utils, options?.bottom ?? false, 'tooltip');\n const plugin = new Plugin({\n key,\n props: {\n handleClick: (view) => {\n manager.setHide(false);\n manager.update(view);\n return false;\n },\n handleDOMEvents: {\n mousedown: () => {\n manager.setHide(false);\n return false;\n },\n },\n },\n view: (editorView) => {\n manager.recreate(editorView);\n return {\n update: manager.update,\n destroy: manager.destroy,\n };\n },\n });\n return [plugin];\n },\n };\n});\n\nexport const tooltip = AtomList.create([tooltipPlugin()]);\n"],"names":["create"],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@milkdown/plugin-tooltip",
|
|
3
|
-
"version": "6.3.
|
|
3
|
+
"version": "6.3.1",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"main": "./lib/index.es.js",
|
|
6
6
|
"types": "./lib/index.d.ts",
|
|
@@ -15,17 +15,17 @@
|
|
|
15
15
|
"milkdown plugin"
|
|
16
16
|
],
|
|
17
17
|
"devDependencies": {
|
|
18
|
-
"@milkdown/core": "6.3.
|
|
19
|
-
"@milkdown/prose": "6.3.
|
|
20
|
-
"@milkdown/design-system": "6.3.
|
|
18
|
+
"@milkdown/core": "6.3.1",
|
|
19
|
+
"@milkdown/prose": "6.3.1",
|
|
20
|
+
"@milkdown/design-system": "6.3.1"
|
|
21
21
|
},
|
|
22
22
|
"peerDependencies": {
|
|
23
23
|
"@milkdown/core": "^6.0.1",
|
|
24
24
|
"@milkdown/prose": "^6.0.1"
|
|
25
25
|
},
|
|
26
26
|
"dependencies": {
|
|
27
|
-
"@milkdown/utils": "6.3.
|
|
28
|
-
"@milkdown/exception": "6.3.
|
|
27
|
+
"@milkdown/utils": "6.3.1",
|
|
28
|
+
"@milkdown/exception": "6.3.1",
|
|
29
29
|
"tslib": "^2.4.0"
|
|
30
30
|
},
|
|
31
31
|
"nx": {
|
|
@@ -22,8 +22,8 @@ export const injectStyle = (themeManager: ThemeManager, { css }: Emotion) => {
|
|
|
22
22
|
position: relative;
|
|
23
23
|
color: ${palette('solid', 0.87)};
|
|
24
24
|
|
|
25
|
-
width:
|
|
26
|
-
line-height:
|
|
25
|
+
width: 48px;
|
|
26
|
+
line-height: 48px;
|
|
27
27
|
text-align: center;
|
|
28
28
|
transition: all 0.4s ease-in-out;
|
|
29
29
|
&:hover {
|