prosemirror-slash-menu-react 0.4.9 → 0.4.11
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/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.es.js +31 -31
- package/dist/index.es.js.map +1 -1
- package/dist/index.js +31 -31
- package/dist/index.js.map +1 -1
- package/dist/slashMenuReact/ListItem.d.ts +1 -0
- package/dist/slashMenuReact/ListItem.d.ts.map +1 -0
- package/dist/slashMenuReact/defaults.d.ts +2 -0
- package/dist/slashMenuReact/defaults.d.ts.map +1 -0
- package/dist/slashMenuReact/display.d.ts +1 -0
- package/dist/slashMenuReact/display.d.ts.map +1 -0
- package/dist/slashMenuReact/utils.d.ts +1 -0
- package/dist/slashMenuReact/utils.d.ts.map +1 -0
- package/package.json +35 -42
package/dist/index.d.ts
CHANGED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,0BAA0B,CAAC;AACzC,cAAc,2BAA2B,CAAC"}
|
package/dist/index.es.js
CHANGED
|
@@ -56,7 +56,7 @@ const H1Command = {
|
|
|
56
56
|
command: (view) => {
|
|
57
57
|
setBlockType(view.state.schema.nodes.heading, { level: 1 })(view.state, view.dispatch, view);
|
|
58
58
|
},
|
|
59
|
-
available: (
|
|
59
|
+
available: () => true,
|
|
60
60
|
};
|
|
61
61
|
const H2Command = {
|
|
62
62
|
id: Icons.Level2,
|
|
@@ -65,7 +65,7 @@ const H2Command = {
|
|
|
65
65
|
command: (view) => {
|
|
66
66
|
setBlockType(view.state.schema.nodes.heading, { level: 2 })(view.state, view.dispatch, view);
|
|
67
67
|
},
|
|
68
|
-
available: (
|
|
68
|
+
available: () => true,
|
|
69
69
|
};
|
|
70
70
|
const H3Command = {
|
|
71
71
|
id: Icons.Level3,
|
|
@@ -74,7 +74,7 @@ const H3Command = {
|
|
|
74
74
|
command: (view) => {
|
|
75
75
|
setBlockType(view.state.schema.nodes.heading, { level: 3 })(view.state, view.dispatch, view);
|
|
76
76
|
},
|
|
77
|
-
available: (
|
|
77
|
+
available: () => true,
|
|
78
78
|
};
|
|
79
79
|
const BoldCommand = {
|
|
80
80
|
id: Icons.Bold,
|
|
@@ -84,7 +84,7 @@ const BoldCommand = {
|
|
|
84
84
|
const markType = view.state.schema.marks.strong;
|
|
85
85
|
toggleMark(markType)(view.state, view.dispatch, view);
|
|
86
86
|
},
|
|
87
|
-
available: (
|
|
87
|
+
available: () => true,
|
|
88
88
|
};
|
|
89
89
|
const ItalicCommand = {
|
|
90
90
|
id: Icons.Italic,
|
|
@@ -94,7 +94,7 @@ const ItalicCommand = {
|
|
|
94
94
|
const markType = view.state.schema.marks.em;
|
|
95
95
|
toggleMark(markType)(view.state, view.dispatch, view);
|
|
96
96
|
},
|
|
97
|
-
available: (
|
|
97
|
+
available: () => true,
|
|
98
98
|
};
|
|
99
99
|
const CodeCommand = {
|
|
100
100
|
id: Icons.Code,
|
|
@@ -104,7 +104,7 @@ const CodeCommand = {
|
|
|
104
104
|
const markType = view.state.schema.marks.code;
|
|
105
105
|
toggleMark(markType)(view.state, view.dispatch, view);
|
|
106
106
|
},
|
|
107
|
-
available: (
|
|
107
|
+
available: () => true,
|
|
108
108
|
};
|
|
109
109
|
const LinkCommand = {
|
|
110
110
|
id: Icons.Link,
|
|
@@ -114,13 +114,13 @@ const LinkCommand = {
|
|
|
114
114
|
const markType = view.state.schema.marks.link;
|
|
115
115
|
toggleMark(markType)(view.state, view.dispatch, view);
|
|
116
116
|
},
|
|
117
|
-
available: (
|
|
117
|
+
available: () => true,
|
|
118
118
|
};
|
|
119
119
|
const HeadingsMenu = {
|
|
120
120
|
id: Icons.HeaderMenu,
|
|
121
121
|
label: "Headings",
|
|
122
122
|
type: "submenu",
|
|
123
|
-
available: (
|
|
123
|
+
available: () => true,
|
|
124
124
|
elements: [H1Command, H2Command, H3Command],
|
|
125
125
|
};
|
|
126
126
|
const defaultElements = [
|
|
@@ -130,6 +130,8 @@ const defaultElements = [
|
|
|
130
130
|
CodeCommand,
|
|
131
131
|
LinkCommand,
|
|
132
132
|
];
|
|
133
|
+
const HeadingIcon = () => (React.createElement("svg", { fill: "#000000", width: "36", height: "36", viewBox: "0 0 36 36", xmlns: "http://www.w3.org/2000/svg" },
|
|
134
|
+
React.createElement("path", { d: "M18 20V4h-3v6H9V4H6v16h3v-7h6v7z" })));
|
|
133
135
|
const H1Icon = () => (React.createElement("svg", { width: "36", height: "36", viewBox: "0 0 36 36", fill: "none", xmlns: "http://www.w3.org/2000/svg" },
|
|
134
136
|
React.createElement("path", { d: "M17 17H11V12C11 11.4477 10.5523 11 10 11C9.44772 11 9 11.4477 9 12V24C9 24.5523 9.44772 25 10 25C10.5523 25 11 24.5523 11 24V19H17V24C17 24.5523 17.4477 25 18 25C18.5523 25 19 24.5523 19 24V12C19 11.4477 18.5523 11 18 11C17.4477 11 17 11.4477 17 12V17Z", fill: "#050038" }),
|
|
135
137
|
React.createElement("path", { d: "M26 25C26.5523 25 27 24.5523 27 24V12C27 11.4477 26.5523 11 26 11H23C22.4477 11 22 11.4477 22 12C22 12.5523 22.4477 13 23 13H25V24C25 24.5523 25.4477 25 26 25Z", fill: "#050038" })));
|
|
@@ -159,6 +161,7 @@ const defaultIcons = {
|
|
|
159
161
|
H1Icon,
|
|
160
162
|
H2Icon,
|
|
161
163
|
H3Icon,
|
|
164
|
+
HeadingIcon,
|
|
162
165
|
LinkIcon,
|
|
163
166
|
BoldIcon,
|
|
164
167
|
CodeIcon,
|
|
@@ -186,7 +189,6 @@ var Placement;
|
|
|
186
189
|
Placement["leftEnd"] = "left-end";
|
|
187
190
|
})(Placement || (Placement = {}));
|
|
188
191
|
const SlashMenuReact = ({ editorState, editorView, icons, rightIcons, subMenuIcon, filterFieldIcon, filterPlaceHolder, mainMenuLabel, popperReference, popperOptions, clickable, disableInput, emptySearchComponent, }) => {
|
|
189
|
-
var _a;
|
|
190
192
|
const menuState = useMemo(() => {
|
|
191
193
|
if (!editorState)
|
|
192
194
|
return;
|
|
@@ -205,7 +207,7 @@ const SlashMenuReact = ({ editorState, editorView, icons, rightIcons, subMenuIco
|
|
|
205
207
|
if (rootRef.current &&
|
|
206
208
|
(!event.target ||
|
|
207
209
|
!(event.target instanceof Node) ||
|
|
208
|
-
!rootRef.current.contains(event
|
|
210
|
+
!rootRef.current.contains(event?.target))) {
|
|
209
211
|
dispatchWithMeta(editorView, SlashMenuKey, {
|
|
210
212
|
type: SlashMetaTypes.close,
|
|
211
213
|
});
|
|
@@ -218,8 +220,7 @@ const SlashMenuReact = ({ editorState, editorView, icons, rightIcons, subMenuIco
|
|
|
218
220
|
}, [rootRef]);
|
|
219
221
|
const [popperElement, setPopperElement] = React.useState(null);
|
|
220
222
|
const virtualReference = useMemo(() => {
|
|
221
|
-
|
|
222
|
-
const domNode = (_a = editorView.domAtPos(editorState.selection.to)) === null || _a === void 0 ? void 0 : _a.node;
|
|
223
|
+
const domNode = editorView.domAtPos(editorState.selection.to)?.node;
|
|
223
224
|
const cursorPosition = editorView.state.selection.to;
|
|
224
225
|
const cursorLeft = editorView.coordsAtPos(cursorPosition).left;
|
|
225
226
|
if (!(domNode instanceof HTMLElement))
|
|
@@ -259,7 +260,7 @@ const SlashMenuReact = ({ editorState, editorView, icons, rightIcons, subMenuIco
|
|
|
259
260
|
};
|
|
260
261
|
}, [popperReference]);
|
|
261
262
|
const { styles, attributes } = usePopper(popperReference || virtualReference, popperElement, {
|
|
262
|
-
placement:
|
|
263
|
+
placement: popperOptions?.placement
|
|
263
264
|
? popperOptions.placement
|
|
264
265
|
: Placement.bottomStart,
|
|
265
266
|
modifiers: [
|
|
@@ -267,7 +268,7 @@ const SlashMenuReact = ({ editorState, editorView, icons, rightIcons, subMenuIco
|
|
|
267
268
|
{
|
|
268
269
|
name: "preventOverflow",
|
|
269
270
|
},
|
|
270
|
-
|
|
271
|
+
popperOptions?.offsetModifier
|
|
271
272
|
? popperOptions.offsetModifier
|
|
272
273
|
: offsetModifier,
|
|
273
274
|
],
|
|
@@ -309,15 +310,14 @@ const SlashMenuReact = ({ editorState, editorView, icons, rightIcons, subMenuIco
|
|
|
309
310
|
return;
|
|
310
311
|
}
|
|
311
312
|
rootRef.current.scrollTop = 0;
|
|
312
|
-
}, [menuState
|
|
313
|
+
}, [menuState?.filteredElements]);
|
|
313
314
|
const subMenuLabel = useMemo(() => {
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
return (_a = getElementById(menuState.subMenuId, menuState)) === null || _a === void 0 ? void 0 : _a.label;
|
|
315
|
+
if (menuState?.subMenuId) {
|
|
316
|
+
return getElementById(menuState.subMenuId, menuState)?.label;
|
|
317
317
|
}
|
|
318
318
|
}, [menuState]);
|
|
319
319
|
const closeSubMenu = useCallback(() => {
|
|
320
|
-
if (menuState
|
|
320
|
+
if (menuState?.subMenuId) {
|
|
321
321
|
dispatchWithMeta(editorView, SlashMenuKey, {
|
|
322
322
|
type: SlashMetaTypes.closeSubMenu,
|
|
323
323
|
element: getElementById(menuState.subMenuId, menuState),
|
|
@@ -327,10 +327,10 @@ const SlashMenuReact = ({ editorState, editorView, icons, rightIcons, subMenuIco
|
|
|
327
327
|
// These two useEffects prevent a bug where the user navigates with clicks, which then blurs the editor and key presses stop working
|
|
328
328
|
useEffect(() => {
|
|
329
329
|
editorView.focus();
|
|
330
|
-
}, [menuState
|
|
330
|
+
}, [menuState?.open]);
|
|
331
331
|
useEffect(() => {
|
|
332
332
|
editorView.focus();
|
|
333
|
-
}, [menuState
|
|
333
|
+
}, [menuState?.subMenuId]);
|
|
334
334
|
const groups = useMemo(() => {
|
|
335
335
|
if (!elements) {
|
|
336
336
|
return;
|
|
@@ -347,9 +347,11 @@ const SlashMenuReact = ({ editorState, editorView, icons, rightIcons, subMenuIco
|
|
|
347
347
|
return acc;
|
|
348
348
|
}, {});
|
|
349
349
|
}, [elements]);
|
|
350
|
-
return (React.createElement(React.Fragment, null,
|
|
351
|
-
// @ts-
|
|
352
|
-
ref: setPopperElement, style:
|
|
350
|
+
return (React.createElement(React.Fragment, null, menuState?.open ? (React.createElement("div", {
|
|
351
|
+
// @ts-expect-error - something is fishy here but it works so 🤷♂️
|
|
352
|
+
ref: setPopperElement, style: {
|
|
353
|
+
...styles.popper,
|
|
354
|
+
}, ...attributes.popper },
|
|
353
355
|
disableInput ? null : menuState.filter ? (React.createElement("div", { className: "menu-filter-wrapper" },
|
|
354
356
|
filterFieldIcon ? (React.createElement("div", { className: "menu-filter-icon" }, filterFieldIcon)) : null,
|
|
355
357
|
React.createElement("div", { id: "menu-filter", className: "menu-filter" }, menuState.filter))) : (React.createElement("div", { className: "menu-filter-wrapper" },
|
|
@@ -361,16 +363,14 @@ const SlashMenuReact = ({ editorState, editorView, icons, rightIcons, subMenuIco
|
|
|
361
363
|
React.createElement("div", { className: "submenu-label" }, subMenuLabel))) : null,
|
|
362
364
|
!menuState.subMenuId && mainMenuLabel ? (React.createElement("div", { className: "menu-element-wrapper" },
|
|
363
365
|
React.createElement("div", { className: "submenu-label" }, mainMenuLabel))) : null,
|
|
364
|
-
groups &&
|
|
366
|
+
groups && Object.keys(groups)?.length > 1
|
|
365
367
|
? Object.keys(groups).map((group, x) => {
|
|
366
368
|
return (React.createElement("div", { key: x, className: "group-wrapper" },
|
|
367
|
-
React.createElement("div", { className: "group-label" }, group),
|
|
368
|
-
groups[group].map((el, idx) => (React.createElement(ListItem, { key: el.id, menuState: menuState, Icon: icons
|
|
369
|
+
React.createElement("div", { className: "group-label" }, group),
|
|
370
|
+
groups?.[group].map((el, idx) => (React.createElement(ListItem, { key: el.id, menuState: menuState, Icon: icons?.[el.id], RightIcon: rightIcons?.[el.id], idx: idx, clickable: clickable, el: el, view: editorView })))));
|
|
369
371
|
})
|
|
370
|
-
: elements
|
|
371
|
-
|
|
372
|
-
? emptySearchComponent || (React.createElement("div", { className: "menu-placeholder" }, "No matching items"))
|
|
373
|
-
: null))) : null));
|
|
372
|
+
: elements?.map((el, idx) => (React.createElement(ListItem, { key: el.id, menuState: menuState, Icon: icons?.[el.id], RightIcon: rightIcons?.[el.id], idx: idx, clickable: clickable, el: el, view: editorView }))),
|
|
373
|
+
elements?.length === 0 ? (emptySearchComponent || React.createElement("div", { className: "menu-placeholder" }, "No matching items")) : null))) : null));
|
|
374
374
|
};
|
|
375
375
|
|
|
376
376
|
export { Icons, Placement, SlashMenuReact, defaultElements, defaultIcons };
|
package/dist/index.es.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.es.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
1
|
+
{"version":3,"file":"index.es.js","sources":["../src/slashMenuReact/ListItem.tsx","../src/slashMenuReact/defaults.tsx","../src/slashMenuReact/display.tsx"],"sourcesContent":["import React, { FC, useCallback, useEffect } from \"react\";\nimport {\n dispatchWithMeta,\n MenuElement,\n SlashMenuKey,\n SlashMenuState,\n SlashMetaTypes,\n} from \"prosemirror-slash-menu\";\nimport \"./styles/menu-style.css\";\nimport { EditorView } from \"prosemirror-view\";\n\nexport const ListItem: FC<{\n menuState: SlashMenuState;\n el: MenuElement;\n view: EditorView;\n idx: number;\n Icon?: FC;\n RightIcon?: FC;\n clickable?: boolean;\n}> = ({ menuState, el, view, Icon, idx, clickable, RightIcon }) => {\n useEffect(() => {\n const element = document.getElementById(el.id);\n\n if (!element) return;\n\n if (el.id === menuState.selected) {\n element.classList.add(\"menu-element-selected\");\n return;\n }\n\n if (element.classList.contains(\"menu-element-selected\")) {\n element.classList.remove(\"menu-element-selected\");\n }\n }, [menuState.selected]);\n const handleOnClick = useCallback(() => {\n if (el.type === \"command\") {\n el.command(view);\n dispatchWithMeta(view, SlashMenuKey, {\n type: SlashMetaTypes.execute,\n });\n }\n\n if (el.type === \"submenu\") {\n dispatchWithMeta(view, SlashMenuKey, {\n type: SlashMetaTypes.openSubMenu,\n element: el,\n });\n }\n }, [el]);\n return (\n <div\n className={\n clickable ? \"menu-element-wrapper-clickable\" : \"menu-element-wrapper\"\n }\n id={el.id}\n key={`${el.id}-${idx}`}\n onClick={handleOnClick}\n >\n {Icon ? (\n <div className={\"menu-element-icon\"}>\n <Icon />\n </div>\n ) : null}\n <div className={\"menu-element-label\"}>{el.label}</div>\n {RightIcon ? (\n <div className={\"menu-element-right-icon\"}>\n <RightIcon />\n </div>\n ) : null}\n </div>\n );\n};\n","import { CommandItem, SubMenu } from \"prosemirror-slash-menu\";\nimport { setBlockType, toggleMark } from \"prosemirror-commands\";\nimport React from \"react\";\n\nexport enum Icons {\n \"HeaderMenu\" = \"HeaderMenu\",\n \"Level1\" = \"Level1\",\n \"Level2\" = \"Level2\",\n \"Level3\" = \"Level3\",\n \"Bold\" = \"Bold\",\n \"Italic\" = \"Italic\",\n \"Link\" = \"Link\",\n \"Code\" = \"Code\",\n}\n\nconst H1Command: CommandItem = {\n id: Icons.Level1,\n label: \"H1\",\n type: \"command\",\n command: (view) => {\n setBlockType(view.state.schema.nodes.heading, { level: 1 })(\n view.state,\n view.dispatch,\n view\n );\n },\n available: () => true,\n};\nconst H2Command: CommandItem = {\n id: Icons.Level2,\n label: \"H2\",\n type: \"command\",\n command: (view) => {\n setBlockType(view.state.schema.nodes.heading, { level: 2 })(\n view.state,\n view.dispatch,\n view\n );\n },\n available: () => true,\n};\nconst H3Command: CommandItem = {\n id: Icons.Level3,\n label: \"H3\",\n type: \"command\",\n command: (view) => {\n setBlockType(view.state.schema.nodes.heading, { level: 3 })(\n view.state,\n view.dispatch,\n view\n );\n },\n available: () => true,\n};\n\nconst BoldCommand: CommandItem = {\n id: Icons.Bold,\n label: \"Bold\",\n type: \"command\",\n command: (view) => {\n const markType = view.state.schema.marks.strong;\n toggleMark(markType)(view.state, view.dispatch, view);\n },\n available: () => true,\n};\nconst ItalicCommand: CommandItem = {\n id: Icons.Italic,\n label: \"Italic\",\n type: \"command\",\n command: (view) => {\n const markType = view.state.schema.marks.em;\n toggleMark(markType)(view.state, view.dispatch, view);\n },\n available: () => true,\n};\nconst CodeCommand: CommandItem = {\n id: Icons.Code,\n label: \"Code\",\n type: \"command\",\n command: (view) => {\n const markType = view.state.schema.marks.code;\n toggleMark(markType)(view.state, view.dispatch, view);\n },\n available: () => true,\n};\nconst LinkCommand: CommandItem = {\n id: Icons.Link,\n label: \"Link\",\n type: \"command\",\n command: (view) => {\n const markType = view.state.schema.marks.link;\n toggleMark(markType)(view.state, view.dispatch, view);\n },\n available: () => true,\n};\n\nconst HeadingsMenu: SubMenu = {\n id: Icons.HeaderMenu,\n label: \"Headings\",\n type: \"submenu\",\n available: () => true,\n elements: [H1Command, H2Command, H3Command],\n};\nexport const defaultElements = [\n HeadingsMenu,\n BoldCommand,\n ItalicCommand,\n CodeCommand,\n LinkCommand,\n];\n\nconst HeadingIcon = () => (\n <svg\n fill=\"#000000\"\n width=\"36\"\n height=\"36\"\n viewBox=\"0 0 36 36\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path d=\"M18 20V4h-3v6H9V4H6v16h3v-7h6v7z\" />\n </svg>\n);\nconst H1Icon = () => (\n <svg\n width=\"36\"\n height=\"36\"\n viewBox=\"0 0 36 36\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M17 17H11V12C11 11.4477 10.5523 11 10 11C9.44772 11 9 11.4477 9 12V24C9 24.5523 9.44772 25 10 25C10.5523 25 11 24.5523 11 24V19H17V24C17 24.5523 17.4477 25 18 25C18.5523 25 19 24.5523 19 24V12C19 11.4477 18.5523 11 18 11C17.4477 11 17 11.4477 17 12V17Z\"\n fill=\"#050038\"\n />\n <path\n d=\"M26 25C26.5523 25 27 24.5523 27 24V12C27 11.4477 26.5523 11 26 11H23C22.4477 11 22 11.4477 22 12C22 12.5523 22.4477 13 23 13H25V24C25 24.5523 25.4477 25 26 25Z\"\n fill=\"#050038\"\n />\n </svg>\n);\nconst H2Icon = () => (\n <svg\n width=\"36\"\n height=\"36\"\n viewBox=\"0 0 36 36\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M16 17H11V13C11 12.4477 10.5523 12 10 12C9.44772 12 9 12.4477 9 13V23C9 23.5523 9.44772 24 10 24C10.5523 24 11 23.5523 11 23V19H16V23C16 23.5523 16.4477 24 17 24C17.5523 24 18 23.5523 18 23V13C18 12.4477 17.5523 12 17 12C16.4477 12 16 12.4477 16 13V17Z\"\n fill=\"#050038\"\n />\n <path\n d=\"M26 22H22V19H26C26.5523 19 27 18.5523 27 18V13C27 12.4477 26.5523 12 26 12H21C20.4477 12 20 12.4477 20 13C20 13.5523 20.4477 14 21 14H25V17H21C20.4477 17 20 17.4477 20 18V23C20 23.5523 20.4477 24 21 24H26C26.5523 24 27 23.5523 27 23C27 22.4477 26.5523 22 26 22Z\"\n fill=\"#050038\"\n />\n </svg>\n);\nconst H3Icon = () => (\n <svg\n width=\"36\"\n height=\"36\"\n viewBox=\"0 0 36 36\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M12 17H16V14C16 13.4477 16.4477 13 17 13C17.5523 13 18 13.4477 18 14V22C18 22.5523 17.5523 23 17 23C16.4477 23 16 22.5523 16 22V19H12V22C12 22.5523 11.5523 23 11 23C10.4477 23 10 22.5523 10 22V14C10 13.4477 10.4477 13 11 13C11.5523 13 12 13.4477 12 14V17Z\"\n fill=\"#050038\"\n />\n <path\n d=\"M20 14C20 13.4477 20.4477 13 21 13H25C25.5523 13 26 13.4477 26 14V22C26 22.5523 25.5523 23 25 23H21C20.4477 23 20 22.5523 20 22C20 21.4477 20.4477 21 21 21H24V19H21C20.4477 19 20 18.5523 20 18C20 17.4477 20.4477 17 21 17H24V15H21C20.4477 15 20 14.5523 20 14Z\"\n fill=\"#050038\"\n />\n </svg>\n);\nconst ItalicIcon = () => (\n <svg\n width=\"25\"\n height=\"24\"\n viewBox=\"0 0 25 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M8.38197 18L14.382 6H11.5C10.9477 6 10.5 5.55228 10.5 5C10.5 4.44772 10.9477 4 11.5 4H19.5C20.0523 4 20.5 4.44772 20.5 5C20.5 5.55228 20.0523 6 19.5 6H16.618L10.618 18H13.5C14.0523 18 14.5 18.4477 14.5 19C14.5 19.5523 14.0523 20 13.5 20H5.5C4.94772 20 4.5 19.5523 4.5 19C4.5 18.4477 4.94772 18 5.5 18H8.38197Z\"\n fill=\"#050038\"\n />\n </svg>\n);\nconst BoldIcon = () => (\n <svg\n width=\"25\"\n height=\"24\"\n viewBox=\"0 0 25 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M19.5 15C19.5 17.7614 17.2614 20 14.5 20H8.5C7.94772 20 7.5 19.5523 7.5 19V5C7.5 4.44772 7.94772 4 8.5 4H14C16.4853 4 18.5 6.01472 18.5 8.5C18.5 9.4786 18.1876 10.3842 17.6572 11.1226C18.7818 12.0395 19.5 13.4359 19.5 15ZM10.5 10H14C14.8284 10 15.5 9.32843 15.5 8.5C15.5 7.67157 14.8284 7 14 7H10.5V10ZM10.5 17V13H14.5C15.6046 13 16.5 13.8954 16.5 15C16.5 16.1046 15.6046 17 14.5 17H10.5Z\"\n fill=\"#050038\"\n />\n </svg>\n);\nconst ArrowLeft = () => (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n className=\"feather feather-arrow-left\"\n >\n <line x1=\"19\" y1=\"12\" x2=\"5\" y2=\"12\"></line>\n <polyline points=\"12 19 5 12 12 5\"></polyline>\n </svg>\n);\nconst ArrowRight = () => (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n className=\"feather feather-arrow-right\"\n >\n <line x1=\"5\" y1=\"12\" x2=\"19\" y2=\"12\"></line>\n <polyline points=\"12 5 19 12 12 19\"></polyline>\n </svg>\n);\nconst CodeIcon = () => (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n className=\"feather feather-code\"\n >\n <polyline points=\"16 18 22 12 16 6\"></polyline>\n <polyline points=\"8 6 2 12 8 18\"></polyline>\n </svg>\n);\nconst LinkIcon = () => (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n className=\"feather feather-link-2\"\n >\n <path d=\"M15 7h3a5 5 0 0 1 5 5 5 5 0 0 1-5 5h-3m-6 0H6a5 5 0 0 1-5-5 5 5 0 0 1 5-5h3\"></path>\n <line x1=\"8\" y1=\"12\" x2=\"16\" y2=\"12\"></line>\n </svg>\n);\n\nexport const defaultIcons = {\n H1Icon,\n H2Icon,\n H3Icon,\n HeadingIcon,\n LinkIcon,\n BoldIcon,\n CodeIcon,\n ItalicIcon,\n ArrowLeft,\n ArrowRight,\n};\n","import React, {\n FC,\n ReactNode,\n useCallback,\n useEffect,\n useMemo,\n useRef,\n} from \"react\";\nimport { EditorState } from \"prosemirror-state\";\nimport {\n dispatchWithMeta,\n getElementById,\n MenuElement,\n SlashMenuKey,\n SlashMetaTypes,\n} from \"prosemirror-slash-menu\";\nimport { EditorView } from \"prosemirror-view\";\nimport { usePopper } from \"react-popper\";\nimport { ListItem } from \"./ListItem\";\nimport \"./styles/menu-style.css\";\nimport { defaultIcons } from \"./defaults\";\n\nexport enum Placement {\n auto = \"auto\",\n autoStart = \"auto-start\",\n autoEnd = \"auto-end\",\n top = \"top\",\n topStart = \"top-start\",\n topEnd = \"top-end\",\n bottom = \"bottom\",\n bottomStart = \"bottom-start\",\n bottomEnd = \"bottom-end\",\n right = \"right\",\n rightStart = \"right-start\",\n rightEnd = \"right-end\",\n left = \"left\",\n leftStart = \"left-start\",\n leftEnd = \"left-end\",\n}\n\nexport interface PopperOptions {\n placement: Placement;\n offsetModifier: { name: string; options: { offset: number[] } };\n}\n\nexport interface SlashMenuProps {\n editorState: EditorState;\n editorView: EditorView;\n icons?: {\n [key: string]: FC;\n };\n rightIcons?: {\n [key: string]: FC;\n };\n subMenuIcon?: ReactNode;\n filterFieldIcon?: ReactNode;\n filterPlaceHolder?: string;\n mainMenuLabel?: string;\n popperReference?: HTMLElement;\n popperOptions?: PopperOptions;\n clickable?: boolean;\n disableInput?: boolean;\n emptySearchComponent?: ReactNode;\n}\n\nexport const SlashMenuReact: FC<SlashMenuProps> = ({\n editorState,\n editorView,\n icons,\n rightIcons,\n subMenuIcon,\n filterFieldIcon,\n filterPlaceHolder,\n mainMenuLabel,\n popperReference,\n popperOptions,\n clickable,\n disableInput,\n emptySearchComponent,\n}) => {\n const menuState = useMemo(() => {\n if (!editorState) return;\n\n return SlashMenuKey.getState(editorState);\n }, [editorState]);\n const elements = useMemo(() => {\n if (!menuState) return;\n\n return menuState.filteredElements;\n }, [menuState]);\n\n const rootRef = useRef<HTMLDivElement>(null);\n\n useEffect(() => {\n if (!rootRef) return;\n\n const outsideClickHandler = (event: MouseEvent) => {\n if (\n rootRef.current &&\n (!event.target ||\n !(event.target instanceof Node) ||\n !rootRef.current.contains(event?.target))\n ) {\n dispatchWithMeta(editorView, SlashMenuKey, {\n type: SlashMetaTypes.close,\n });\n }\n };\n\n document.addEventListener(\"mousedown\", outsideClickHandler);\n\n return () => {\n document.removeEventListener(\"mousedown\", outsideClickHandler);\n };\n }, [rootRef]);\n\n const [popperElement, setPopperElement] = React.useState(null);\n\n const virtualReference = useMemo(() => {\n const domNode = editorView.domAtPos(editorState.selection.to)?.node;\n const cursorPosition = editorView.state.selection.to;\n const cursorLeft = editorView.coordsAtPos(cursorPosition).left;\n\n if (!(domNode instanceof HTMLElement)) return;\n\n const { top, height } = domNode.getBoundingClientRect();\n\n return {\n getBoundingClientRect() {\n return {\n top: top,\n right: cursorLeft,\n bottom: top,\n left: cursorLeft,\n width: 0,\n height: height,\n x: cursorLeft,\n y: top,\n toJSON: () =>\n JSON.stringify({\n top: top,\n right: cursorLeft,\n bottom: top,\n left: cursorLeft,\n width: 0,\n height: height,\n x: cursorLeft,\n y: top,\n }),\n };\n },\n };\n }, [editorView, editorState, window.scrollY]);\n\n const offsetModifier = useMemo(() => {\n return {\n name: \"offset\",\n options: {\n offset: [0, 36],\n },\n };\n }, [popperReference]);\n\n const { styles, attributes } = usePopper(\n popperReference || virtualReference,\n popperElement,\n {\n placement: popperOptions?.placement\n ? popperOptions.placement\n : Placement.bottomStart,\n modifiers: [\n { name: \"flip\", enabled: true },\n {\n name: \"preventOverflow\",\n },\n popperOptions?.offsetModifier\n ? popperOptions.offsetModifier\n : offsetModifier,\n ],\n }\n );\n\n useEffect(() => {\n if (!menuState) return;\n\n const element = document.getElementById(menuState.selected);\n\n if (!element || !rootRef.current) return;\n\n const isTopElement =\n menuState.selected === menuState.filteredElements[0].id;\n\n if (isTopElement) {\n rootRef.current.scrollTop = 0;\n return;\n }\n\n const height =\n element.clientHeight +\n parseInt(\n window.getComputedStyle(element).getPropertyValue(\"margin-top\")\n ) +\n parseInt(\n window.getComputedStyle(element).getPropertyValue(\"margin-bottom\")\n ) +\n parseInt(\n window.getComputedStyle(element).getPropertyValue(\"padding-top\")\n ) +\n parseInt(\n window.getComputedStyle(element).getPropertyValue(\"padding-bottom\")\n );\n\n const { bottom, top } = element.getBoundingClientRect();\n\n const containerRect = rootRef.current.getBoundingClientRect();\n\n const scrollUp = top - height < containerRect.top;\n\n const visible = scrollUp\n ? top - containerRect.top > height\n : !(bottom > containerRect.bottom);\n\n if (!visible) {\n if (scrollUp) {\n rootRef.current.scrollTop = element.offsetTop - height / 2;\n } else {\n rootRef.current.scrollTop =\n element.offsetTop - containerRect.height + height + height / 4;\n }\n }\n }, [menuState]);\n\n useEffect(() => {\n if (rootRef.current === null) {\n return;\n }\n\n rootRef.current.scrollTop = 0;\n }, [menuState?.filteredElements]);\n\n const subMenuLabel = useMemo(() => {\n if (menuState?.subMenuId) {\n return getElementById(menuState.subMenuId, menuState)?.label;\n }\n }, [menuState]);\n\n const closeSubMenu = useCallback(() => {\n if (menuState?.subMenuId) {\n dispatchWithMeta(editorView, SlashMenuKey, {\n type: SlashMetaTypes.closeSubMenu,\n element: getElementById(menuState.subMenuId, menuState),\n });\n }\n }, [menuState]);\n\n // These two useEffects prevent a bug where the user navigates with clicks, which then blurs the editor and key presses stop working\n useEffect(() => {\n editorView.focus();\n }, [menuState?.open]);\n useEffect(() => {\n editorView.focus();\n }, [menuState?.subMenuId]);\n\n const groups = useMemo(() => {\n if (!elements) {\n return;\n }\n\n return elements.reduce((acc, el) => {\n if (el.group) {\n acc[el.group] = acc[el.group] || [];\n acc[el.group].push(el);\n } else {\n acc[\"\"] = acc[\"\"] || [];\n acc[\"\"].push(el);\n }\n\n return acc;\n }, {} as { [key: string]: MenuElement[] });\n }, [elements]);\n\n return (\n <>\n {menuState?.open ? (\n <div\n // @ts-expect-error - something is fishy here but it works so 🤷♂️\n ref={setPopperElement}\n style={{\n ...styles.popper,\n }}\n {...attributes.popper}\n >\n {disableInput ? null : menuState.filter ? (\n <div className={\"menu-filter-wrapper\"}>\n {filterFieldIcon ? (\n <div className={\"menu-filter-icon\"}>{filterFieldIcon}</div>\n ) : null}\n <div id={\"menu-filter\"} className={\"menu-filter\"}>\n {menuState.filter}\n </div>\n </div>\n ) : (\n <div className={\"menu-filter-wrapper\"}>\n {filterFieldIcon ? (\n <div className={\"menu-filter-icon\"}>{filterFieldIcon}</div>\n ) : null}\n <div className={\"menu-filter-placeholder\"}>\n {filterPlaceHolder}\n </div>\n </div>\n )}\n\n <div\n id={\"slashDisplay\"}\n ref={rootRef}\n className={\"menu-display-root\"}\n >\n {menuState.subMenuId ? (\n <div\n className={\"menu-element-wrapper\"}\n onClick={clickable ? closeSubMenu : undefined}\n style={{ cursor: clickable ? \"pointer\" : undefined }}\n >\n <div className={\"menu-element-icon-left\"}>\n {subMenuIcon || defaultIcons.ArrowLeft()}\n </div>\n <div className={\"submenu-label\"}>{subMenuLabel}</div>\n </div>\n ) : null}\n {!menuState.subMenuId && mainMenuLabel ? (\n <div className={\"menu-element-wrapper\"}>\n <div className={\"submenu-label\"}>{mainMenuLabel}</div>\n </div>\n ) : null}\n {groups && Object.keys(groups)?.length > 1\n ? Object.keys(groups).map((group, x) => {\n return (\n <div key={x} className=\"group-wrapper\">\n <div className=\"group-label\">{group}</div>\n {groups?.[group].map((el: MenuElement, idx: number) => (\n <ListItem\n key={el.id}\n menuState={menuState}\n Icon={icons?.[el.id]}\n RightIcon={rightIcons?.[el.id]}\n idx={idx}\n clickable={clickable}\n el={el}\n view={editorView}\n />\n ))}\n </div>\n );\n })\n : elements?.map((el: MenuElement, idx: number) => (\n <ListItem\n key={el.id}\n menuState={menuState}\n Icon={icons?.[el.id]}\n RightIcon={rightIcons?.[el.id]}\n idx={idx}\n clickable={clickable}\n el={el}\n view={editorView}\n />\n ))}\n {elements?.length === 0 ? (\n emptySearchComponent || <div className={\"menu-placeholder\"}>No matching items</div>\n ) : null}\n </div>\n </div>\n ) : null}\n </>\n );\n};\n"],"names":[],"mappings":";;;;;AAWO,MAAM,QAAQ,GAQhB,CAAC,EAAE,SAAS,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,SAAS,EAAE,SAAS,EAAE,KAAI;IAChE,SAAS,CAAC,MAAK;QACb,MAAM,OAAO,GAAG,QAAQ,CAAC,cAAc,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;AAE/C,QAAA,IAAI,CAAC,OAAO;YAAE,OAAO;QAErB,IAAI,EAAE,CAAC,EAAE,KAAK,SAAS,CAAC,QAAQ,EAAE;AAChC,YAAA,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,uBAAuB,CAAC,CAAC;YAC/C,OAAO;SACR;QAED,IAAI,OAAO,CAAC,SAAS,CAAC,QAAQ,CAAC,uBAAuB,CAAC,EAAE;AACvD,YAAA,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,uBAAuB,CAAC,CAAC;SACnD;AACH,KAAC,EAAE,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC;AACzB,IAAA,MAAM,aAAa,GAAG,WAAW,CAAC,MAAK;AACrC,QAAA,IAAI,EAAE,CAAC,IAAI,KAAK,SAAS,EAAE;AACzB,YAAA,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;AACjB,YAAA,gBAAgB,CAAC,IAAI,EAAE,YAAY,EAAE;gBACnC,IAAI,EAAE,cAAc,CAAC,OAAO;AAC7B,aAAA,CAAC,CAAC;SACJ;AAED,QAAA,IAAI,EAAE,CAAC,IAAI,KAAK,SAAS,EAAE;AACzB,YAAA,gBAAgB,CAAC,IAAI,EAAE,YAAY,EAAE;gBACnC,IAAI,EAAE,cAAc,CAAC,WAAW;AAChC,gBAAA,OAAO,EAAE,EAAE;AACZ,aAAA,CAAC,CAAC;SACJ;AACH,KAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;AACT,IAAA,QACE,KAAA,CAAA,aAAA,CAAA,KAAA,EAAA,EACE,SAAS,EACP,SAAS,GAAG,gCAAgC,GAAG,sBAAsB,EAEvE,EAAE,EAAE,EAAE,CAAC,EAAE,EACT,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,CAAA,CAAA,EAAI,GAAG,CAAA,CAAE,EACtB,OAAO,EAAE,aAAa,EAAA;AAErB,QAAA,IAAI,IACH,KAAK,CAAA,aAAA,CAAA,KAAA,EAAA,EAAA,SAAS,EAAE,mBAAmB,EAAA;AACjC,YAAA,KAAA,CAAA,aAAA,CAAC,IAAI,EAAG,IAAA,CAAA,CACJ,IACJ,IAAI;AACR,QAAA,KAAA,CAAA,aAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAE,oBAAoB,IAAG,EAAE,CAAC,KAAK,CAAO;AACrD,QAAA,SAAS,IACR,KAAK,CAAA,aAAA,CAAA,KAAA,EAAA,EAAA,SAAS,EAAE,yBAAyB,EAAA;YACvC,KAAC,CAAA,aAAA,CAAA,SAAS,EAAG,IAAA,CAAA,CACT,IACJ,IAAI,CACJ,EACN;AACJ,CAAC;;ICnEW,MASX;AATD,CAAA,UAAY,KAAK,EAAA;AACf,IAAA,KAAA,CAAA,YAAA,CAAA,GAAA,YAA2B,CAAA;AAC3B,IAAA,KAAA,CAAA,QAAA,CAAA,GAAA,QAAmB,CAAA;AACnB,IAAA,KAAA,CAAA,QAAA,CAAA,GAAA,QAAmB,CAAA;AACnB,IAAA,KAAA,CAAA,QAAA,CAAA,GAAA,QAAmB,CAAA;AACnB,IAAA,KAAA,CAAA,MAAA,CAAA,GAAA,MAAe,CAAA;AACf,IAAA,KAAA,CAAA,QAAA,CAAA,GAAA,QAAmB,CAAA;AACnB,IAAA,KAAA,CAAA,MAAA,CAAA,GAAA,MAAe,CAAA;AACf,IAAA,KAAA,CAAA,MAAA,CAAA,GAAA,MAAe,CAAA;AACjB,CAAC,EATW,KAAK,KAAL,KAAK,GAShB,EAAA,CAAA,CAAA,CAAA;AAED,MAAM,SAAS,GAAgB;IAC7B,EAAE,EAAE,KAAK,CAAC,MAAM;AAChB,IAAA,KAAK,EAAE,IAAI;AACX,IAAA,IAAI,EAAE,SAAS;AACf,IAAA,OAAO,EAAE,CAAC,IAAI,KAAI;AAChB,QAAA,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CACzD,IAAI,CAAC,KAAK,EACV,IAAI,CAAC,QAAQ,EACb,IAAI,CACL,CAAC;KACH;AACD,IAAA,SAAS,EAAE,MAAM,IAAI;CACtB,CAAC;AACF,MAAM,SAAS,GAAgB;IAC7B,EAAE,EAAE,KAAK,CAAC,MAAM;AAChB,IAAA,KAAK,EAAE,IAAI;AACX,IAAA,IAAI,EAAE,SAAS;AACf,IAAA,OAAO,EAAE,CAAC,IAAI,KAAI;AAChB,QAAA,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CACzD,IAAI,CAAC,KAAK,EACV,IAAI,CAAC,QAAQ,EACb,IAAI,CACL,CAAC;KACH;AACD,IAAA,SAAS,EAAE,MAAM,IAAI;CACtB,CAAC;AACF,MAAM,SAAS,GAAgB;IAC7B,EAAE,EAAE,KAAK,CAAC,MAAM;AAChB,IAAA,KAAK,EAAE,IAAI;AACX,IAAA,IAAI,EAAE,SAAS;AACf,IAAA,OAAO,EAAE,CAAC,IAAI,KAAI;AAChB,QAAA,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CACzD,IAAI,CAAC,KAAK,EACV,IAAI,CAAC,QAAQ,EACb,IAAI,CACL,CAAC;KACH;AACD,IAAA,SAAS,EAAE,MAAM,IAAI;CACtB,CAAC;AAEF,MAAM,WAAW,GAAgB;IAC/B,EAAE,EAAE,KAAK,CAAC,IAAI;AACd,IAAA,KAAK,EAAE,MAAM;AACb,IAAA,IAAI,EAAE,SAAS;AACf,IAAA,OAAO,EAAE,CAAC,IAAI,KAAI;QAChB,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC;AAChD,QAAA,UAAU,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;KACvD;AACD,IAAA,SAAS,EAAE,MAAM,IAAI;CACtB,CAAC;AACF,MAAM,aAAa,GAAgB;IACjC,EAAE,EAAE,KAAK,CAAC,MAAM;AAChB,IAAA,KAAK,EAAE,QAAQ;AACf,IAAA,IAAI,EAAE,SAAS;AACf,IAAA,OAAO,EAAE,CAAC,IAAI,KAAI;QAChB,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC;AAC5C,QAAA,UAAU,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;KACvD;AACD,IAAA,SAAS,EAAE,MAAM,IAAI;CACtB,CAAC;AACF,MAAM,WAAW,GAAgB;IAC/B,EAAE,EAAE,KAAK,CAAC,IAAI;AACd,IAAA,KAAK,EAAE,MAAM;AACb,IAAA,IAAI,EAAE,SAAS;AACf,IAAA,OAAO,EAAE,CAAC,IAAI,KAAI;QAChB,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC;AAC9C,QAAA,UAAU,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;KACvD;AACD,IAAA,SAAS,EAAE,MAAM,IAAI;CACtB,CAAC;AACF,MAAM,WAAW,GAAgB;IAC/B,EAAE,EAAE,KAAK,CAAC,IAAI;AACd,IAAA,KAAK,EAAE,MAAM;AACb,IAAA,IAAI,EAAE,SAAS;AACf,IAAA,OAAO,EAAE,CAAC,IAAI,KAAI;QAChB,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC;AAC9C,QAAA,UAAU,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;KACvD;AACD,IAAA,SAAS,EAAE,MAAM,IAAI;CACtB,CAAC;AAEF,MAAM,YAAY,GAAY;IAC5B,EAAE,EAAE,KAAK,CAAC,UAAU;AACpB,IAAA,KAAK,EAAE,UAAU;AACjB,IAAA,IAAI,EAAE,SAAS;AACf,IAAA,SAAS,EAAE,MAAM,IAAI;AACrB,IAAA,QAAQ,EAAE,CAAC,SAAS,EAAE,SAAS,EAAE,SAAS,CAAC;CAC5C,CAAC;AACW,MAAA,eAAe,GAAG;IAC7B,YAAY;IACZ,WAAW;IACX,aAAa;IACb,WAAW;IACX,WAAW;EACX;AAEF,MAAM,WAAW,GAAG,OAClB,KACE,CAAA,aAAA,CAAA,KAAA,EAAA,EAAA,IAAI,EAAC,SAAS,EACd,KAAK,EAAC,IAAI,EACV,MAAM,EAAC,IAAI,EACX,OAAO,EAAC,WAAW,EACnB,KAAK,EAAC,4BAA4B,EAAA;AAElC,IAAA,KAAA,CAAA,aAAA,CAAA,MAAA,EAAA,EAAM,CAAC,EAAC,kCAAkC,EAAG,CAAA,CACzC,CACP,CAAC;AACF,MAAM,MAAM,GAAG,OACb,KACE,CAAA,aAAA,CAAA,KAAA,EAAA,EAAA,KAAK,EAAC,IAAI,EACV,MAAM,EAAC,IAAI,EACX,OAAO,EAAC,WAAW,EACnB,IAAI,EAAC,MAAM,EACX,KAAK,EAAC,4BAA4B,EAAA;AAElC,IAAA,KAAA,CAAA,aAAA,CAAA,MAAA,EAAA,EACE,CAAC,EAAC,8PAA8P,EAChQ,IAAI,EAAC,SAAS,EACd,CAAA;IACF,KACE,CAAA,aAAA,CAAA,MAAA,EAAA,EAAA,CAAC,EAAC,iKAAiK,EACnK,IAAI,EAAC,SAAS,EAAA,CACd,CACE,CACP,CAAC;AACF,MAAM,MAAM,GAAG,OACb,KACE,CAAA,aAAA,CAAA,KAAA,EAAA,EAAA,KAAK,EAAC,IAAI,EACV,MAAM,EAAC,IAAI,EACX,OAAO,EAAC,WAAW,EACnB,IAAI,EAAC,MAAM,EACX,KAAK,EAAC,4BAA4B,EAAA;AAElC,IAAA,KAAA,CAAA,aAAA,CAAA,MAAA,EAAA,EACE,CAAC,EAAC,8PAA8P,EAChQ,IAAI,EAAC,SAAS,EACd,CAAA;IACF,KACE,CAAA,aAAA,CAAA,MAAA,EAAA,EAAA,CAAC,EAAC,uQAAuQ,EACzQ,IAAI,EAAC,SAAS,EAAA,CACd,CACE,CACP,CAAC;AACF,MAAM,MAAM,GAAG,OACb,KACE,CAAA,aAAA,CAAA,KAAA,EAAA,EAAA,KAAK,EAAC,IAAI,EACV,MAAM,EAAC,IAAI,EACX,OAAO,EAAC,WAAW,EACnB,IAAI,EAAC,MAAM,EACX,KAAK,EAAC,4BAA4B,EAAA;AAElC,IAAA,KAAA,CAAA,aAAA,CAAA,MAAA,EAAA,EACE,CAAC,EAAC,iQAAiQ,EACnQ,IAAI,EAAC,SAAS,EACd,CAAA;IACF,KACE,CAAA,aAAA,CAAA,MAAA,EAAA,EAAA,CAAC,EAAC,oQAAoQ,EACtQ,IAAI,EAAC,SAAS,EAAA,CACd,CACE,CACP,CAAC;AACF,MAAM,UAAU,GAAG,OACjB,KACE,CAAA,aAAA,CAAA,KAAA,EAAA,EAAA,KAAK,EAAC,IAAI,EACV,MAAM,EAAC,IAAI,EACX,OAAO,EAAC,WAAW,EACnB,IAAI,EAAC,MAAM,EACX,KAAK,EAAC,4BAA4B,EAAA;IAElC,KACE,CAAA,aAAA,CAAA,MAAA,EAAA,EAAA,CAAC,EAAC,uTAAuT,EACzT,IAAI,EAAC,SAAS,EAAA,CACd,CACE,CACP,CAAC;AACF,MAAM,QAAQ,GAAG,OACf,KACE,CAAA,aAAA,CAAA,KAAA,EAAA,EAAA,KAAK,EAAC,IAAI,EACV,MAAM,EAAC,IAAI,EACX,OAAO,EAAC,WAAW,EACnB,IAAI,EAAC,MAAM,EACX,KAAK,EAAC,4BAA4B,EAAA;AAElC,IAAA,KAAA,CAAA,aAAA,CAAA,MAAA,EAAA,EACE,QAAQ,EAAC,SAAS,EAClB,QAAQ,EAAC,SAAS,EAClB,CAAC,EAAC,sYAAsY,EACxY,IAAI,EAAC,SAAS,EACd,CAAA,CACE,CACP,CAAC;AACF,MAAM,SAAS,GAAG,OAChB,KAAA,CAAA,aAAA,CAAA,KAAA,EAAA,EACE,KAAK,EAAC,4BAA4B,EAClC,KAAK,EAAC,IAAI,EACV,MAAM,EAAC,IAAI,EACX,OAAO,EAAC,WAAW,EACnB,IAAI,EAAC,MAAM,EACX,MAAM,EAAC,cAAc,EACrB,WAAW,EAAC,GAAG,EACf,aAAa,EAAC,OAAO,EACrB,cAAc,EAAC,OAAO,EACtB,SAAS,EAAC,4BAA4B,EAAA;AAEtC,IAAA,KAAA,CAAA,aAAA,CAAA,MAAA,EAAA,EAAM,EAAE,EAAC,IAAI,EAAC,EAAE,EAAC,IAAI,EAAC,EAAE,EAAC,GAAG,EAAC,EAAE,EAAC,IAAI,EAAQ,CAAA;AAC5C,IAAA,KAAA,CAAA,aAAA,CAAA,UAAA,EAAA,EAAU,MAAM,EAAC,iBAAiB,EAAY,CAAA,CAC1C,CACP,CAAC;AACF,MAAM,UAAU,GAAG,OACjB,KAAA,CAAA,aAAA,CAAA,KAAA,EAAA,EACE,KAAK,EAAC,4BAA4B,EAClC,KAAK,EAAC,IAAI,EACV,MAAM,EAAC,IAAI,EACX,OAAO,EAAC,WAAW,EACnB,IAAI,EAAC,MAAM,EACX,MAAM,EAAC,cAAc,EACrB,WAAW,EAAC,GAAG,EACf,aAAa,EAAC,OAAO,EACrB,cAAc,EAAC,OAAO,EACtB,SAAS,EAAC,6BAA6B,EAAA;AAEvC,IAAA,KAAA,CAAA,aAAA,CAAA,MAAA,EAAA,EAAM,EAAE,EAAC,GAAG,EAAC,EAAE,EAAC,IAAI,EAAC,EAAE,EAAC,IAAI,EAAC,EAAE,EAAC,IAAI,EAAQ,CAAA;AAC5C,IAAA,KAAA,CAAA,aAAA,CAAA,UAAA,EAAA,EAAU,MAAM,EAAC,kBAAkB,EAAY,CAAA,CAC3C,CACP,CAAC;AACF,MAAM,QAAQ,GAAG,OACf,KAAA,CAAA,aAAA,CAAA,KAAA,EAAA,EACE,KAAK,EAAC,4BAA4B,EAClC,KAAK,EAAC,IAAI,EACV,MAAM,EAAC,IAAI,EACX,OAAO,EAAC,WAAW,EACnB,IAAI,EAAC,MAAM,EACX,MAAM,EAAC,cAAc,EACrB,WAAW,EAAC,GAAG,EACf,aAAa,EAAC,OAAO,EACrB,cAAc,EAAC,OAAO,EACtB,SAAS,EAAC,sBAAsB,EAAA;IAEhC,KAAU,CAAA,aAAA,CAAA,UAAA,EAAA,EAAA,MAAM,EAAC,kBAAkB,EAAY,CAAA;AAC/C,IAAA,KAAA,CAAA,aAAA,CAAA,UAAA,EAAA,EAAU,MAAM,EAAC,eAAe,EAAY,CAAA,CACxC,CACP,CAAC;AACF,MAAM,QAAQ,GAAG,OACf,KAAA,CAAA,aAAA,CAAA,KAAA,EAAA,EACE,KAAK,EAAC,4BAA4B,EAClC,KAAK,EAAC,IAAI,EACV,MAAM,EAAC,IAAI,EACX,OAAO,EAAC,WAAW,EACnB,IAAI,EAAC,MAAM,EACX,MAAM,EAAC,cAAc,EACrB,WAAW,EAAC,GAAG,EACf,aAAa,EAAC,OAAO,EACrB,cAAc,EAAC,OAAO,EACtB,SAAS,EAAC,wBAAwB,EAAA;IAElC,KAAM,CAAA,aAAA,CAAA,MAAA,EAAA,EAAA,CAAC,EAAC,6EAA6E,EAAQ,CAAA;AAC7F,IAAA,KAAA,CAAA,aAAA,CAAA,MAAA,EAAA,EAAM,EAAE,EAAC,GAAG,EAAC,EAAE,EAAC,IAAI,EAAC,EAAE,EAAC,IAAI,EAAC,EAAE,EAAC,IAAI,EAAQ,CAAA,CACxC,CACP,CAAC;AAEW,MAAA,YAAY,GAAG;IAC1B,MAAM;IACN,MAAM;IACN,MAAM;IACN,WAAW;IACX,QAAQ;IACR,QAAQ;IACR,QAAQ;IACR,UAAU;IACV,SAAS;IACT,UAAU;;;ICvQA,UAgBX;AAhBD,CAAA,UAAY,SAAS,EAAA;AACnB,IAAA,SAAA,CAAA,MAAA,CAAA,GAAA,MAAa,CAAA;AACb,IAAA,SAAA,CAAA,WAAA,CAAA,GAAA,YAAwB,CAAA;AACxB,IAAA,SAAA,CAAA,SAAA,CAAA,GAAA,UAAoB,CAAA;AACpB,IAAA,SAAA,CAAA,KAAA,CAAA,GAAA,KAAW,CAAA;AACX,IAAA,SAAA,CAAA,UAAA,CAAA,GAAA,WAAsB,CAAA;AACtB,IAAA,SAAA,CAAA,QAAA,CAAA,GAAA,SAAkB,CAAA;AAClB,IAAA,SAAA,CAAA,QAAA,CAAA,GAAA,QAAiB,CAAA;AACjB,IAAA,SAAA,CAAA,aAAA,CAAA,GAAA,cAA4B,CAAA;AAC5B,IAAA,SAAA,CAAA,WAAA,CAAA,GAAA,YAAwB,CAAA;AACxB,IAAA,SAAA,CAAA,OAAA,CAAA,GAAA,OAAe,CAAA;AACf,IAAA,SAAA,CAAA,YAAA,CAAA,GAAA,aAA0B,CAAA;AAC1B,IAAA,SAAA,CAAA,UAAA,CAAA,GAAA,WAAsB,CAAA;AACtB,IAAA,SAAA,CAAA,MAAA,CAAA,GAAA,MAAa,CAAA;AACb,IAAA,SAAA,CAAA,WAAA,CAAA,GAAA,YAAwB,CAAA;AACxB,IAAA,SAAA,CAAA,SAAA,CAAA,GAAA,UAAoB,CAAA;AACtB,CAAC,EAhBW,SAAS,KAAT,SAAS,GAgBpB,EAAA,CAAA,CAAA,CAAA;AA2BM,MAAM,cAAc,GAAuB,CAAC,EACjD,WAAW,EACX,UAAU,EACV,KAAK,EACL,UAAU,EACV,WAAW,EACX,eAAe,EACf,iBAAiB,EACjB,aAAa,EACb,eAAe,EACf,aAAa,EACb,SAAS,EACT,YAAY,EACZ,oBAAoB,GACrB,KAAI;AACH,IAAA,MAAM,SAAS,GAAG,OAAO,CAAC,MAAK;AAC7B,QAAA,IAAI,CAAC,WAAW;YAAE,OAAO;AAEzB,QAAA,OAAO,YAAY,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;AAC5C,KAAC,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC;AAClB,IAAA,MAAM,QAAQ,GAAG,OAAO,CAAC,MAAK;AAC5B,QAAA,IAAI,CAAC,SAAS;YAAE,OAAO;QAEvB,OAAO,SAAS,CAAC,gBAAgB,CAAC;AACpC,KAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC;AAEhB,IAAA,MAAM,OAAO,GAAG,MAAM,CAAiB,IAAI,CAAC,CAAC;IAE7C,SAAS,CAAC,MAAK;AACb,QAAA,IAAI,CAAC,OAAO;YAAE,OAAO;AAErB,QAAA,MAAM,mBAAmB,GAAG,CAAC,KAAiB,KAAI;YAChD,IACE,OAAO,CAAC,OAAO;iBACd,CAAC,KAAK,CAAC,MAAM;AACZ,oBAAA,EAAE,KAAK,CAAC,MAAM,YAAY,IAAI,CAAC;AAC/B,oBAAA,CAAC,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,EAC3C;AACA,gBAAA,gBAAgB,CAAC,UAAU,EAAE,YAAY,EAAE;oBACzC,IAAI,EAAE,cAAc,CAAC,KAAK;AAC3B,iBAAA,CAAC,CAAC;aACJ;AACH,SAAC,CAAC;AAEF,QAAA,QAAQ,CAAC,gBAAgB,CAAC,WAAW,EAAE,mBAAmB,CAAC,CAAC;AAE5D,QAAA,OAAO,MAAK;AACV,YAAA,QAAQ,CAAC,mBAAmB,CAAC,WAAW,EAAE,mBAAmB,CAAC,CAAC;AACjE,SAAC,CAAC;AACJ,KAAC,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;AAEd,IAAA,MAAM,CAAC,aAAa,EAAE,gBAAgB,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;AAE/D,IAAA,MAAM,gBAAgB,GAAG,OAAO,CAAC,MAAK;AACpC,QAAA,MAAM,OAAO,GAAG,UAAU,CAAC,QAAQ,CAAC,WAAW,CAAC,SAAS,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC;QACpE,MAAM,cAAc,GAAG,UAAU,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE,CAAC;QACrD,MAAM,UAAU,GAAG,UAAU,CAAC,WAAW,CAAC,cAAc,CAAC,CAAC,IAAI,CAAC;AAE/D,QAAA,IAAI,EAAE,OAAO,YAAY,WAAW,CAAC;YAAE,OAAO;QAE9C,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,qBAAqB,EAAE,CAAC;QAExD,OAAO;YACL,qBAAqB,GAAA;gBACnB,OAAO;AACL,oBAAA,GAAG,EAAE,GAAG;AACR,oBAAA,KAAK,EAAE,UAAU;AACjB,oBAAA,MAAM,EAAE,GAAG;AACX,oBAAA,IAAI,EAAE,UAAU;AAChB,oBAAA,KAAK,EAAE,CAAC;AACR,oBAAA,MAAM,EAAE,MAAM;AACd,oBAAA,CAAC,EAAE,UAAU;AACb,oBAAA,CAAC,EAAE,GAAG;AACN,oBAAA,MAAM,EAAE,MACN,IAAI,CAAC,SAAS,CAAC;AACb,wBAAA,GAAG,EAAE,GAAG;AACR,wBAAA,KAAK,EAAE,UAAU;AACjB,wBAAA,MAAM,EAAE,GAAG;AACX,wBAAA,IAAI,EAAE,UAAU;AAChB,wBAAA,KAAK,EAAE,CAAC;AACR,wBAAA,MAAM,EAAE,MAAM;AACd,wBAAA,CAAC,EAAE,UAAU;AACb,wBAAA,CAAC,EAAE,GAAG;qBACP,CAAC;iBACL,CAAC;aACH;SACF,CAAC;KACH,EAAE,CAAC,UAAU,EAAE,WAAW,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC;AAE9C,IAAA,MAAM,cAAc,GAAG,OAAO,CAAC,MAAK;QAClC,OAAO;AACL,YAAA,IAAI,EAAE,QAAQ;AACd,YAAA,OAAO,EAAE;AACP,gBAAA,MAAM,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC;AAChB,aAAA;SACF,CAAC;AACJ,KAAC,EAAE,CAAC,eAAe,CAAC,CAAC,CAAC;AAEtB,IAAA,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,GAAG,SAAS,CACtC,eAAe,IAAI,gBAAgB,EACnC,aAAa,EACb;QACE,SAAS,EAAE,aAAa,EAAE,SAAS;cAC/B,aAAa,CAAC,SAAS;cACvB,SAAS,CAAC,WAAW;AACzB,QAAA,SAAS,EAAE;AACT,YAAA,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE;AAC/B,YAAA;AACE,gBAAA,IAAI,EAAE,iBAAiB;AACxB,aAAA;AACD,YAAA,aAAa,EAAE,cAAc;kBACzB,aAAa,CAAC,cAAc;AAC9B,kBAAE,cAAc;AACnB,SAAA;AACF,KAAA,CACF,CAAC;IAEF,SAAS,CAAC,MAAK;AACb,QAAA,IAAI,CAAC,SAAS;YAAE,OAAO;QAEvB,MAAM,OAAO,GAAG,QAAQ,CAAC,cAAc,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;AAE5D,QAAA,IAAI,CAAC,OAAO,IAAI,CAAC,OAAO,CAAC,OAAO;YAAE,OAAO;AAEzC,QAAA,MAAM,YAAY,GAChB,SAAS,CAAC,QAAQ,KAAK,SAAS,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QAE1D,IAAI,YAAY,EAAE;AAChB,YAAA,OAAO,CAAC,OAAO,CAAC,SAAS,GAAG,CAAC,CAAC;YAC9B,OAAO;SACR;AAED,QAAA,MAAM,MAAM,GACV,OAAO,CAAC,YAAY;AACpB,YAAA,QAAQ,CACN,MAAM,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC,gBAAgB,CAAC,YAAY,CAAC,CAChE;AACD,YAAA,QAAQ,CACN,MAAM,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC,gBAAgB,CAAC,eAAe,CAAC,CACnE;AACD,YAAA,QAAQ,CACN,MAAM,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC,gBAAgB,CAAC,aAAa,CAAC,CACjE;AACD,YAAA,QAAQ,CACN,MAAM,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC,gBAAgB,CAAC,gBAAgB,CAAC,CACpE,CAAC;QAEJ,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,GAAG,OAAO,CAAC,qBAAqB,EAAE,CAAC;QAExD,MAAM,aAAa,GAAG,OAAO,CAAC,OAAO,CAAC,qBAAqB,EAAE,CAAC;QAE9D,MAAM,QAAQ,GAAG,GAAG,GAAG,MAAM,GAAG,aAAa,CAAC,GAAG,CAAC;QAElD,MAAM,OAAO,GAAG,QAAQ;AACtB,cAAE,GAAG,GAAG,aAAa,CAAC,GAAG,GAAG,MAAM;cAChC,EAAE,MAAM,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC;QAErC,IAAI,CAAC,OAAO,EAAE;YACZ,IAAI,QAAQ,EAAE;AACZ,gBAAA,OAAO,CAAC,OAAO,CAAC,SAAS,GAAG,OAAO,CAAC,SAAS,GAAG,MAAM,GAAG,CAAC,CAAC;aAC5D;iBAAM;gBACL,OAAO,CAAC,OAAO,CAAC,SAAS;AACvB,oBAAA,OAAO,CAAC,SAAS,GAAG,aAAa,CAAC,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,CAAC,CAAC;aAClE;SACF;AACH,KAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC;IAEhB,SAAS,CAAC,MAAK;AACb,QAAA,IAAI,OAAO,CAAC,OAAO,KAAK,IAAI,EAAE;YAC5B,OAAO;SACR;AAED,QAAA,OAAO,CAAC,OAAO,CAAC,SAAS,GAAG,CAAC,CAAC;AAChC,KAAC,EAAE,CAAC,SAAS,EAAE,gBAAgB,CAAC,CAAC,CAAC;AAElC,IAAA,MAAM,YAAY,GAAG,OAAO,CAAC,MAAK;AAChC,QAAA,IAAI,SAAS,EAAE,SAAS,EAAE;YACxB,OAAO,cAAc,CAAC,SAAS,CAAC,SAAS,EAAE,SAAS,CAAC,EAAE,KAAK,CAAC;SAC9D;AACH,KAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC;AAEhB,IAAA,MAAM,YAAY,GAAG,WAAW,CAAC,MAAK;AACpC,QAAA,IAAI,SAAS,EAAE,SAAS,EAAE;AACxB,YAAA,gBAAgB,CAAC,UAAU,EAAE,YAAY,EAAE;gBACzC,IAAI,EAAE,cAAc,CAAC,YAAY;gBACjC,OAAO,EAAE,cAAc,CAAC,SAAS,CAAC,SAAS,EAAE,SAAS,CAAC;AACxD,aAAA,CAAC,CAAC;SACJ;AACH,KAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC;;IAGhB,SAAS,CAAC,MAAK;QACb,UAAU,CAAC,KAAK,EAAE,CAAC;AACrB,KAAC,EAAE,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC,CAAC;IACtB,SAAS,CAAC,MAAK;QACb,UAAU,CAAC,KAAK,EAAE,CAAC;AACrB,KAAC,EAAE,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC,CAAC;AAE3B,IAAA,MAAM,MAAM,GAAG,OAAO,CAAC,MAAK;QAC1B,IAAI,CAAC,QAAQ,EAAE;YACb,OAAO;SACR;QAED,OAAO,QAAQ,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,KAAI;AACjC,YAAA,IAAI,EAAE,CAAC,KAAK,EAAE;AACZ,gBAAA,GAAG,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;gBACpC,GAAG,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;aACxB;iBAAM;gBACL,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC;gBACxB,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;aAClB;AAED,YAAA,OAAO,GAAG,CAAC;SACZ,EAAE,EAAsC,CAAC,CAAC;AAC7C,KAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC;IAEf,QACE,0CACG,SAAS,EAAE,IAAI,IACd,KAAA,CAAA,aAAA,CAAA,KAAA,EAAA;;AAEE,QAAA,GAAG,EAAE,gBAAgB,EACrB,KAAK,EAAE;YACL,GAAG,MAAM,CAAC,MAAM;SACjB,EACG,GAAA,UAAU,CAAC,MAAM,EAAA;AAEpB,QAAA,YAAY,GAAG,IAAI,GAAG,SAAS,CAAC,MAAM,IACrC,KAAK,CAAA,aAAA,CAAA,KAAA,EAAA,EAAA,SAAS,EAAE,qBAAqB,EAAA;AAClC,YAAA,eAAe,IACd,6BAAK,SAAS,EAAE,kBAAkB,EAAA,EAAG,eAAe,CAAO,IACzD,IAAI;YACR,KAAK,CAAA,aAAA,CAAA,KAAA,EAAA,EAAA,EAAE,EAAE,aAAa,EAAE,SAAS,EAAE,aAAa,IAC7C,SAAS,CAAC,MAAM,CACb,CACF,KAEN,KAAA,CAAA,aAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAE,qBAAqB,EAAA;AAClC,YAAA,eAAe,IACd,6BAAK,SAAS,EAAE,kBAAkB,EAAA,EAAG,eAAe,CAAO,IACzD,IAAI;AACR,YAAA,KAAA,CAAA,aAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAE,yBAAyB,IACtC,iBAAiB,CACd,CACF,CACP;QAED,KACE,CAAA,aAAA,CAAA,KAAA,EAAA,EAAA,EAAE,EAAE,cAAc,EAClB,GAAG,EAAE,OAAO,EACZ,SAAS,EAAE,mBAAmB,EAAA;AAE7B,YAAA,SAAS,CAAC,SAAS,IAClB,KACE,CAAA,aAAA,CAAA,KAAA,EAAA,EAAA,SAAS,EAAE,sBAAsB,EACjC,OAAO,EAAE,SAAS,GAAG,YAAY,GAAG,SAAS,EAC7C,KAAK,EAAE,EAAE,MAAM,EAAE,SAAS,GAAG,SAAS,GAAG,SAAS,EAAE,EAAA;gBAEpD,KAAK,CAAA,aAAA,CAAA,KAAA,EAAA,EAAA,SAAS,EAAE,wBAAwB,EACrC,EAAA,WAAW,IAAI,YAAY,CAAC,SAAS,EAAE,CACpC;gBACN,KAAK,CAAA,aAAA,CAAA,KAAA,EAAA,EAAA,SAAS,EAAE,eAAe,EAAG,EAAA,YAAY,CAAO,CACjD,IACJ,IAAI;AACP,YAAA,CAAC,SAAS,CAAC,SAAS,IAAI,aAAa,IACpC,KAAA,CAAA,aAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAE,sBAAsB,EAAA;gBACpC,KAAK,CAAA,aAAA,CAAA,KAAA,EAAA,EAAA,SAAS,EAAE,eAAe,EAAG,EAAA,aAAa,CAAO,CAClD,IACJ,IAAI;YACP,MAAM,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,CAAC;AACxC,kBAAE,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC,KAAI;oBACnC,QACE,6BAAK,GAAG,EAAE,CAAC,EAAE,SAAS,EAAC,eAAe,EAAA;AACpC,wBAAA,KAAA,CAAA,aAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAC,aAAa,EAAA,EAAE,KAAK,CAAO;AACzC,wBAAA,MAAM,GAAG,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,EAAe,EAAE,GAAW,MAChD,KAAA,CAAA,aAAA,CAAC,QAAQ,EAAA,EACP,GAAG,EAAE,EAAE,CAAC,EAAE,EACV,SAAS,EAAE,SAAS,EACpB,IAAI,EAAE,KAAK,GAAG,EAAE,CAAC,EAAE,CAAC,EACpB,SAAS,EAAE,UAAU,GAAG,EAAE,CAAC,EAAE,CAAC,EAC9B,GAAG,EAAE,GAAG,EACR,SAAS,EAAE,SAAS,EACpB,EAAE,EAAE,EAAE,EACN,IAAI,EAAE,UAAU,EAChB,CAAA,CACH,CAAC,CACE,EACN;AACJ,iBAAC,CAAC;AACJ,kBAAE,QAAQ,EAAE,GAAG,CAAC,CAAC,EAAe,EAAE,GAAW,MACzC,KAAA,CAAA,aAAA,CAAC,QAAQ,EAAA,EACP,GAAG,EAAE,EAAE,CAAC,EAAE,EACV,SAAS,EAAE,SAAS,EACpB,IAAI,EAAE,KAAK,GAAG,EAAE,CAAC,EAAE,CAAC,EACpB,SAAS,EAAE,UAAU,GAAG,EAAE,CAAC,EAAE,CAAC,EAC9B,GAAG,EAAE,GAAG,EACR,SAAS,EAAE,SAAS,EACpB,EAAE,EAAE,EAAE,EACN,IAAI,EAAE,UAAU,EAAA,CAChB,CACH,CAAC;AACL,YAAA,QAAQ,EAAE,MAAM,KAAK,CAAC,IACrB,oBAAoB,IAAI,KAAK,CAAA,aAAA,CAAA,KAAA,EAAA,EAAA,SAAS,EAAE,kBAAkB,EAAyB,EAAA,mBAAA,CAAA,IACjF,IAAI,CACJ,CACF,IACJ,IAAI,CACP,EACH;AACJ;;;;"}
|
package/dist/index.js
CHANGED
|
@@ -64,7 +64,7 @@ const H1Command = {
|
|
|
64
64
|
command: (view) => {
|
|
65
65
|
prosemirrorCommands.setBlockType(view.state.schema.nodes.heading, { level: 1 })(view.state, view.dispatch, view);
|
|
66
66
|
},
|
|
67
|
-
available: (
|
|
67
|
+
available: () => true,
|
|
68
68
|
};
|
|
69
69
|
const H2Command = {
|
|
70
70
|
id: exports.Icons.Level2,
|
|
@@ -73,7 +73,7 @@ const H2Command = {
|
|
|
73
73
|
command: (view) => {
|
|
74
74
|
prosemirrorCommands.setBlockType(view.state.schema.nodes.heading, { level: 2 })(view.state, view.dispatch, view);
|
|
75
75
|
},
|
|
76
|
-
available: (
|
|
76
|
+
available: () => true,
|
|
77
77
|
};
|
|
78
78
|
const H3Command = {
|
|
79
79
|
id: exports.Icons.Level3,
|
|
@@ -82,7 +82,7 @@ const H3Command = {
|
|
|
82
82
|
command: (view) => {
|
|
83
83
|
prosemirrorCommands.setBlockType(view.state.schema.nodes.heading, { level: 3 })(view.state, view.dispatch, view);
|
|
84
84
|
},
|
|
85
|
-
available: (
|
|
85
|
+
available: () => true,
|
|
86
86
|
};
|
|
87
87
|
const BoldCommand = {
|
|
88
88
|
id: exports.Icons.Bold,
|
|
@@ -92,7 +92,7 @@ const BoldCommand = {
|
|
|
92
92
|
const markType = view.state.schema.marks.strong;
|
|
93
93
|
prosemirrorCommands.toggleMark(markType)(view.state, view.dispatch, view);
|
|
94
94
|
},
|
|
95
|
-
available: (
|
|
95
|
+
available: () => true,
|
|
96
96
|
};
|
|
97
97
|
const ItalicCommand = {
|
|
98
98
|
id: exports.Icons.Italic,
|
|
@@ -102,7 +102,7 @@ const ItalicCommand = {
|
|
|
102
102
|
const markType = view.state.schema.marks.em;
|
|
103
103
|
prosemirrorCommands.toggleMark(markType)(view.state, view.dispatch, view);
|
|
104
104
|
},
|
|
105
|
-
available: (
|
|
105
|
+
available: () => true,
|
|
106
106
|
};
|
|
107
107
|
const CodeCommand = {
|
|
108
108
|
id: exports.Icons.Code,
|
|
@@ -112,7 +112,7 @@ const CodeCommand = {
|
|
|
112
112
|
const markType = view.state.schema.marks.code;
|
|
113
113
|
prosemirrorCommands.toggleMark(markType)(view.state, view.dispatch, view);
|
|
114
114
|
},
|
|
115
|
-
available: (
|
|
115
|
+
available: () => true,
|
|
116
116
|
};
|
|
117
117
|
const LinkCommand = {
|
|
118
118
|
id: exports.Icons.Link,
|
|
@@ -122,13 +122,13 @@ const LinkCommand = {
|
|
|
122
122
|
const markType = view.state.schema.marks.link;
|
|
123
123
|
prosemirrorCommands.toggleMark(markType)(view.state, view.dispatch, view);
|
|
124
124
|
},
|
|
125
|
-
available: (
|
|
125
|
+
available: () => true,
|
|
126
126
|
};
|
|
127
127
|
const HeadingsMenu = {
|
|
128
128
|
id: exports.Icons.HeaderMenu,
|
|
129
129
|
label: "Headings",
|
|
130
130
|
type: "submenu",
|
|
131
|
-
available: (
|
|
131
|
+
available: () => true,
|
|
132
132
|
elements: [H1Command, H2Command, H3Command],
|
|
133
133
|
};
|
|
134
134
|
const defaultElements = [
|
|
@@ -138,6 +138,8 @@ const defaultElements = [
|
|
|
138
138
|
CodeCommand,
|
|
139
139
|
LinkCommand,
|
|
140
140
|
];
|
|
141
|
+
const HeadingIcon = () => (React__default["default"].createElement("svg", { fill: "#000000", width: "36", height: "36", viewBox: "0 0 36 36", xmlns: "http://www.w3.org/2000/svg" },
|
|
142
|
+
React__default["default"].createElement("path", { d: "M18 20V4h-3v6H9V4H6v16h3v-7h6v7z" })));
|
|
141
143
|
const H1Icon = () => (React__default["default"].createElement("svg", { width: "36", height: "36", viewBox: "0 0 36 36", fill: "none", xmlns: "http://www.w3.org/2000/svg" },
|
|
142
144
|
React__default["default"].createElement("path", { d: "M17 17H11V12C11 11.4477 10.5523 11 10 11C9.44772 11 9 11.4477 9 12V24C9 24.5523 9.44772 25 10 25C10.5523 25 11 24.5523 11 24V19H17V24C17 24.5523 17.4477 25 18 25C18.5523 25 19 24.5523 19 24V12C19 11.4477 18.5523 11 18 11C17.4477 11 17 11.4477 17 12V17Z", fill: "#050038" }),
|
|
143
145
|
React__default["default"].createElement("path", { d: "M26 25C26.5523 25 27 24.5523 27 24V12C27 11.4477 26.5523 11 26 11H23C22.4477 11 22 11.4477 22 12C22 12.5523 22.4477 13 23 13H25V24C25 24.5523 25.4477 25 26 25Z", fill: "#050038" })));
|
|
@@ -167,6 +169,7 @@ const defaultIcons = {
|
|
|
167
169
|
H1Icon,
|
|
168
170
|
H2Icon,
|
|
169
171
|
H3Icon,
|
|
172
|
+
HeadingIcon,
|
|
170
173
|
LinkIcon,
|
|
171
174
|
BoldIcon,
|
|
172
175
|
CodeIcon,
|
|
@@ -194,7 +197,6 @@ exports.Placement = void 0;
|
|
|
194
197
|
Placement["leftEnd"] = "left-end";
|
|
195
198
|
})(exports.Placement || (exports.Placement = {}));
|
|
196
199
|
const SlashMenuReact = ({ editorState, editorView, icons, rightIcons, subMenuIcon, filterFieldIcon, filterPlaceHolder, mainMenuLabel, popperReference, popperOptions, clickable, disableInput, emptySearchComponent, }) => {
|
|
197
|
-
var _a;
|
|
198
200
|
const menuState = React.useMemo(() => {
|
|
199
201
|
if (!editorState)
|
|
200
202
|
return;
|
|
@@ -213,7 +215,7 @@ const SlashMenuReact = ({ editorState, editorView, icons, rightIcons, subMenuIco
|
|
|
213
215
|
if (rootRef.current &&
|
|
214
216
|
(!event.target ||
|
|
215
217
|
!(event.target instanceof Node) ||
|
|
216
|
-
!rootRef.current.contains(event
|
|
218
|
+
!rootRef.current.contains(event?.target))) {
|
|
217
219
|
prosemirrorSlashMenu.dispatchWithMeta(editorView, prosemirrorSlashMenu.SlashMenuKey, {
|
|
218
220
|
type: prosemirrorSlashMenu.SlashMetaTypes.close,
|
|
219
221
|
});
|
|
@@ -226,8 +228,7 @@ const SlashMenuReact = ({ editorState, editorView, icons, rightIcons, subMenuIco
|
|
|
226
228
|
}, [rootRef]);
|
|
227
229
|
const [popperElement, setPopperElement] = React__default["default"].useState(null);
|
|
228
230
|
const virtualReference = React.useMemo(() => {
|
|
229
|
-
|
|
230
|
-
const domNode = (_a = editorView.domAtPos(editorState.selection.to)) === null || _a === void 0 ? void 0 : _a.node;
|
|
231
|
+
const domNode = editorView.domAtPos(editorState.selection.to)?.node;
|
|
231
232
|
const cursorPosition = editorView.state.selection.to;
|
|
232
233
|
const cursorLeft = editorView.coordsAtPos(cursorPosition).left;
|
|
233
234
|
if (!(domNode instanceof HTMLElement))
|
|
@@ -267,7 +268,7 @@ const SlashMenuReact = ({ editorState, editorView, icons, rightIcons, subMenuIco
|
|
|
267
268
|
};
|
|
268
269
|
}, [popperReference]);
|
|
269
270
|
const { styles, attributes } = reactPopper.usePopper(popperReference || virtualReference, popperElement, {
|
|
270
|
-
placement:
|
|
271
|
+
placement: popperOptions?.placement
|
|
271
272
|
? popperOptions.placement
|
|
272
273
|
: exports.Placement.bottomStart,
|
|
273
274
|
modifiers: [
|
|
@@ -275,7 +276,7 @@ const SlashMenuReact = ({ editorState, editorView, icons, rightIcons, subMenuIco
|
|
|
275
276
|
{
|
|
276
277
|
name: "preventOverflow",
|
|
277
278
|
},
|
|
278
|
-
|
|
279
|
+
popperOptions?.offsetModifier
|
|
279
280
|
? popperOptions.offsetModifier
|
|
280
281
|
: offsetModifier,
|
|
281
282
|
],
|
|
@@ -317,15 +318,14 @@ const SlashMenuReact = ({ editorState, editorView, icons, rightIcons, subMenuIco
|
|
|
317
318
|
return;
|
|
318
319
|
}
|
|
319
320
|
rootRef.current.scrollTop = 0;
|
|
320
|
-
}, [menuState
|
|
321
|
+
}, [menuState?.filteredElements]);
|
|
321
322
|
const subMenuLabel = React.useMemo(() => {
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
return (_a = prosemirrorSlashMenu.getElementById(menuState.subMenuId, menuState)) === null || _a === void 0 ? void 0 : _a.label;
|
|
323
|
+
if (menuState?.subMenuId) {
|
|
324
|
+
return prosemirrorSlashMenu.getElementById(menuState.subMenuId, menuState)?.label;
|
|
325
325
|
}
|
|
326
326
|
}, [menuState]);
|
|
327
327
|
const closeSubMenu = React.useCallback(() => {
|
|
328
|
-
if (menuState
|
|
328
|
+
if (menuState?.subMenuId) {
|
|
329
329
|
prosemirrorSlashMenu.dispatchWithMeta(editorView, prosemirrorSlashMenu.SlashMenuKey, {
|
|
330
330
|
type: prosemirrorSlashMenu.SlashMetaTypes.closeSubMenu,
|
|
331
331
|
element: prosemirrorSlashMenu.getElementById(menuState.subMenuId, menuState),
|
|
@@ -335,10 +335,10 @@ const SlashMenuReact = ({ editorState, editorView, icons, rightIcons, subMenuIco
|
|
|
335
335
|
// These two useEffects prevent a bug where the user navigates with clicks, which then blurs the editor and key presses stop working
|
|
336
336
|
React.useEffect(() => {
|
|
337
337
|
editorView.focus();
|
|
338
|
-
}, [menuState
|
|
338
|
+
}, [menuState?.open]);
|
|
339
339
|
React.useEffect(() => {
|
|
340
340
|
editorView.focus();
|
|
341
|
-
}, [menuState
|
|
341
|
+
}, [menuState?.subMenuId]);
|
|
342
342
|
const groups = React.useMemo(() => {
|
|
343
343
|
if (!elements) {
|
|
344
344
|
return;
|
|
@@ -355,9 +355,11 @@ const SlashMenuReact = ({ editorState, editorView, icons, rightIcons, subMenuIco
|
|
|
355
355
|
return acc;
|
|
356
356
|
}, {});
|
|
357
357
|
}, [elements]);
|
|
358
|
-
return (React__default["default"].createElement(React__default["default"].Fragment, null,
|
|
359
|
-
// @ts-
|
|
360
|
-
ref: setPopperElement, style:
|
|
358
|
+
return (React__default["default"].createElement(React__default["default"].Fragment, null, menuState?.open ? (React__default["default"].createElement("div", {
|
|
359
|
+
// @ts-expect-error - something is fishy here but it works so 🤷♂️
|
|
360
|
+
ref: setPopperElement, style: {
|
|
361
|
+
...styles.popper,
|
|
362
|
+
}, ...attributes.popper },
|
|
361
363
|
disableInput ? null : menuState.filter ? (React__default["default"].createElement("div", { className: "menu-filter-wrapper" },
|
|
362
364
|
filterFieldIcon ? (React__default["default"].createElement("div", { className: "menu-filter-icon" }, filterFieldIcon)) : null,
|
|
363
365
|
React__default["default"].createElement("div", { id: "menu-filter", className: "menu-filter" }, menuState.filter))) : (React__default["default"].createElement("div", { className: "menu-filter-wrapper" },
|
|
@@ -369,16 +371,14 @@ const SlashMenuReact = ({ editorState, editorView, icons, rightIcons, subMenuIco
|
|
|
369
371
|
React__default["default"].createElement("div", { className: "submenu-label" }, subMenuLabel))) : null,
|
|
370
372
|
!menuState.subMenuId && mainMenuLabel ? (React__default["default"].createElement("div", { className: "menu-element-wrapper" },
|
|
371
373
|
React__default["default"].createElement("div", { className: "submenu-label" }, mainMenuLabel))) : null,
|
|
372
|
-
groups &&
|
|
374
|
+
groups && Object.keys(groups)?.length > 1
|
|
373
375
|
? Object.keys(groups).map((group, x) => {
|
|
374
376
|
return (React__default["default"].createElement("div", { key: x, className: "group-wrapper" },
|
|
375
|
-
React__default["default"].createElement("div", { className: "group-label" }, group),
|
|
376
|
-
groups[group].map((el, idx) => (React__default["default"].createElement(ListItem, { key: el.id, menuState: menuState, Icon: icons
|
|
377
|
+
React__default["default"].createElement("div", { className: "group-label" }, group),
|
|
378
|
+
groups?.[group].map((el, idx) => (React__default["default"].createElement(ListItem, { key: el.id, menuState: menuState, Icon: icons?.[el.id], RightIcon: rightIcons?.[el.id], idx: idx, clickable: clickable, el: el, view: editorView })))));
|
|
377
379
|
})
|
|
378
|
-
: elements
|
|
379
|
-
|
|
380
|
-
? emptySearchComponent || (React__default["default"].createElement("div", { className: "menu-placeholder" }, "No matching items"))
|
|
381
|
-
: null))) : null));
|
|
380
|
+
: elements?.map((el, idx) => (React__default["default"].createElement(ListItem, { key: el.id, menuState: menuState, Icon: icons?.[el.id], RightIcon: rightIcons?.[el.id], idx: idx, clickable: clickable, el: el, view: editorView }))),
|
|
381
|
+
elements?.length === 0 ? (emptySearchComponent || React__default["default"].createElement("div", { className: "menu-placeholder" }, "No matching items")) : null))) : null));
|
|
382
382
|
};
|
|
383
383
|
|
|
384
384
|
exports.SlashMenuReact = SlashMenuReact;
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../src/slashMenuReact/ListItem.tsx","../src/slashMenuReact/defaults.tsx","../src/slashMenuReact/display.tsx"],"sourcesContent":["import React, { FC, useCallback, useEffect } from \"react\";\nimport {\n dispatchWithMeta,\n MenuElement,\n SlashMenuKey,\n SlashMenuState,\n SlashMetaTypes,\n} from \"prosemirror-slash-menu\";\nimport \"./styles/menu-style.css\";\nimport { EditorView } from \"prosemirror-view\";\n\nexport const ListItem: FC<{\n menuState: SlashMenuState;\n el: MenuElement;\n view: EditorView;\n idx: number;\n Icon?: FC;\n RightIcon?: FC;\n clickable?: boolean;\n}> = ({ menuState, el, view, Icon, idx, clickable, RightIcon }) => {\n useEffect(() => {\n const element = document.getElementById(el.id);\n\n if (!element) return;\n\n if (el.id === menuState.selected) {\n element.classList.add(\"menu-element-selected\");\n return;\n }\n\n if (element.classList.contains(\"menu-element-selected\")) {\n element.classList.remove(\"menu-element-selected\");\n }\n }, [menuState.selected]);\n const handleOnClick = useCallback(() => {\n if (el.type === \"command\") {\n el.command(view);\n dispatchWithMeta(view, SlashMenuKey, {\n type: SlashMetaTypes.execute,\n });\n }\n\n if (el.type === \"submenu\") {\n dispatchWithMeta(view, SlashMenuKey, {\n type: SlashMetaTypes.openSubMenu,\n element: el,\n });\n }\n }, [el]);\n return (\n <div\n className={\n clickable ? \"menu-element-wrapper-clickable\" : \"menu-element-wrapper\"\n }\n id={el.id}\n key={`${el.id}-${idx}`}\n onClick={handleOnClick}\n >\n {Icon ? (\n <div className={\"menu-element-icon\"}>\n <Icon />\n </div>\n ) : null}\n <div className={\"menu-element-label\"}>{el.label}</div>\n {RightIcon ? (\n <div className={\"menu-element-right-icon\"}>\n <RightIcon />\n </div>\n ) : null}\n </div>\n );\n};\n","import { CommandItem, SubMenu } from \"prosemirror-slash-menu\";\nimport { setBlockType, toggleMark } from \"prosemirror-commands\";\nimport React from \"react\";\n\nexport enum Icons {\n \"HeaderMenu\" = \"HeaderMenu\",\n \"Level1\" = \"Level1\",\n \"Level2\" = \"Level2\",\n \"Level3\" = \"Level3\",\n \"Bold\" = \"Bold\",\n \"Italic\" = \"Italic\",\n \"Link\" = \"Link\",\n \"Code\" = \"Code\",\n}\n\nconst H1Command: CommandItem = {\n id: Icons.Level1,\n label: \"H1\",\n type: \"command\",\n command: (view) => {\n setBlockType(view.state.schema.nodes.heading, { level: 1 })(\n view.state,\n view.dispatch,\n view\n );\n },\n available: () => true,\n};\nconst H2Command: CommandItem = {\n id: Icons.Level2,\n label: \"H2\",\n type: \"command\",\n command: (view) => {\n setBlockType(view.state.schema.nodes.heading, { level: 2 })(\n view.state,\n view.dispatch,\n view\n );\n },\n available: () => true,\n};\nconst H3Command: CommandItem = {\n id: Icons.Level3,\n label: \"H3\",\n type: \"command\",\n command: (view) => {\n setBlockType(view.state.schema.nodes.heading, { level: 3 })(\n view.state,\n view.dispatch,\n view\n );\n },\n available: () => true,\n};\n\nconst BoldCommand: CommandItem = {\n id: Icons.Bold,\n label: \"Bold\",\n type: \"command\",\n command: (view) => {\n const markType = view.state.schema.marks.strong;\n toggleMark(markType)(view.state, view.dispatch, view);\n },\n available: () => true,\n};\nconst ItalicCommand: CommandItem = {\n id: Icons.Italic,\n label: \"Italic\",\n type: \"command\",\n command: (view) => {\n const markType = view.state.schema.marks.em;\n toggleMark(markType)(view.state, view.dispatch, view);\n },\n available: () => true,\n};\nconst CodeCommand: CommandItem = {\n id: Icons.Code,\n label: \"Code\",\n type: \"command\",\n command: (view) => {\n const markType = view.state.schema.marks.code;\n toggleMark(markType)(view.state, view.dispatch, view);\n },\n available: () => true,\n};\nconst LinkCommand: CommandItem = {\n id: Icons.Link,\n label: \"Link\",\n type: \"command\",\n command: (view) => {\n const markType = view.state.schema.marks.link;\n toggleMark(markType)(view.state, view.dispatch, view);\n },\n available: () => true,\n};\n\nconst HeadingsMenu: SubMenu = {\n id: Icons.HeaderMenu,\n label: \"Headings\",\n type: \"submenu\",\n available: () => true,\n elements: [H1Command, H2Command, H3Command],\n};\nexport const defaultElements = [\n HeadingsMenu,\n BoldCommand,\n ItalicCommand,\n CodeCommand,\n LinkCommand,\n];\n\nconst HeadingIcon = () => (\n <svg\n fill=\"#000000\"\n width=\"36\"\n height=\"36\"\n viewBox=\"0 0 36 36\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path d=\"M18 20V4h-3v6H9V4H6v16h3v-7h6v7z\" />\n </svg>\n);\nconst H1Icon = () => (\n <svg\n width=\"36\"\n height=\"36\"\n viewBox=\"0 0 36 36\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M17 17H11V12C11 11.4477 10.5523 11 10 11C9.44772 11 9 11.4477 9 12V24C9 24.5523 9.44772 25 10 25C10.5523 25 11 24.5523 11 24V19H17V24C17 24.5523 17.4477 25 18 25C18.5523 25 19 24.5523 19 24V12C19 11.4477 18.5523 11 18 11C17.4477 11 17 11.4477 17 12V17Z\"\n fill=\"#050038\"\n />\n <path\n d=\"M26 25C26.5523 25 27 24.5523 27 24V12C27 11.4477 26.5523 11 26 11H23C22.4477 11 22 11.4477 22 12C22 12.5523 22.4477 13 23 13H25V24C25 24.5523 25.4477 25 26 25Z\"\n fill=\"#050038\"\n />\n </svg>\n);\nconst H2Icon = () => (\n <svg\n width=\"36\"\n height=\"36\"\n viewBox=\"0 0 36 36\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M16 17H11V13C11 12.4477 10.5523 12 10 12C9.44772 12 9 12.4477 9 13V23C9 23.5523 9.44772 24 10 24C10.5523 24 11 23.5523 11 23V19H16V23C16 23.5523 16.4477 24 17 24C17.5523 24 18 23.5523 18 23V13C18 12.4477 17.5523 12 17 12C16.4477 12 16 12.4477 16 13V17Z\"\n fill=\"#050038\"\n />\n <path\n d=\"M26 22H22V19H26C26.5523 19 27 18.5523 27 18V13C27 12.4477 26.5523 12 26 12H21C20.4477 12 20 12.4477 20 13C20 13.5523 20.4477 14 21 14H25V17H21C20.4477 17 20 17.4477 20 18V23C20 23.5523 20.4477 24 21 24H26C26.5523 24 27 23.5523 27 23C27 22.4477 26.5523 22 26 22Z\"\n fill=\"#050038\"\n />\n </svg>\n);\nconst H3Icon = () => (\n <svg\n width=\"36\"\n height=\"36\"\n viewBox=\"0 0 36 36\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M12 17H16V14C16 13.4477 16.4477 13 17 13C17.5523 13 18 13.4477 18 14V22C18 22.5523 17.5523 23 17 23C16.4477 23 16 22.5523 16 22V19H12V22C12 22.5523 11.5523 23 11 23C10.4477 23 10 22.5523 10 22V14C10 13.4477 10.4477 13 11 13C11.5523 13 12 13.4477 12 14V17Z\"\n fill=\"#050038\"\n />\n <path\n d=\"M20 14C20 13.4477 20.4477 13 21 13H25C25.5523 13 26 13.4477 26 14V22C26 22.5523 25.5523 23 25 23H21C20.4477 23 20 22.5523 20 22C20 21.4477 20.4477 21 21 21H24V19H21C20.4477 19 20 18.5523 20 18C20 17.4477 20.4477 17 21 17H24V15H21C20.4477 15 20 14.5523 20 14Z\"\n fill=\"#050038\"\n />\n </svg>\n);\nconst ItalicIcon = () => (\n <svg\n width=\"25\"\n height=\"24\"\n viewBox=\"0 0 25 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M8.38197 18L14.382 6H11.5C10.9477 6 10.5 5.55228 10.5 5C10.5 4.44772 10.9477 4 11.5 4H19.5C20.0523 4 20.5 4.44772 20.5 5C20.5 5.55228 20.0523 6 19.5 6H16.618L10.618 18H13.5C14.0523 18 14.5 18.4477 14.5 19C14.5 19.5523 14.0523 20 13.5 20H5.5C4.94772 20 4.5 19.5523 4.5 19C4.5 18.4477 4.94772 18 5.5 18H8.38197Z\"\n fill=\"#050038\"\n />\n </svg>\n);\nconst BoldIcon = () => (\n <svg\n width=\"25\"\n height=\"24\"\n viewBox=\"0 0 25 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M19.5 15C19.5 17.7614 17.2614 20 14.5 20H8.5C7.94772 20 7.5 19.5523 7.5 19V5C7.5 4.44772 7.94772 4 8.5 4H14C16.4853 4 18.5 6.01472 18.5 8.5C18.5 9.4786 18.1876 10.3842 17.6572 11.1226C18.7818 12.0395 19.5 13.4359 19.5 15ZM10.5 10H14C14.8284 10 15.5 9.32843 15.5 8.5C15.5 7.67157 14.8284 7 14 7H10.5V10ZM10.5 17V13H14.5C15.6046 13 16.5 13.8954 16.5 15C16.5 16.1046 15.6046 17 14.5 17H10.5Z\"\n fill=\"#050038\"\n />\n </svg>\n);\nconst ArrowLeft = () => (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n className=\"feather feather-arrow-left\"\n >\n <line x1=\"19\" y1=\"12\" x2=\"5\" y2=\"12\"></line>\n <polyline points=\"12 19 5 12 12 5\"></polyline>\n </svg>\n);\nconst ArrowRight = () => (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n className=\"feather feather-arrow-right\"\n >\n <line x1=\"5\" y1=\"12\" x2=\"19\" y2=\"12\"></line>\n <polyline points=\"12 5 19 12 12 19\"></polyline>\n </svg>\n);\nconst CodeIcon = () => (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n className=\"feather feather-code\"\n >\n <polyline points=\"16 18 22 12 16 6\"></polyline>\n <polyline points=\"8 6 2 12 8 18\"></polyline>\n </svg>\n);\nconst LinkIcon = () => (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n className=\"feather feather-link-2\"\n >\n <path d=\"M15 7h3a5 5 0 0 1 5 5 5 5 0 0 1-5 5h-3m-6 0H6a5 5 0 0 1-5-5 5 5 0 0 1 5-5h3\"></path>\n <line x1=\"8\" y1=\"12\" x2=\"16\" y2=\"12\"></line>\n </svg>\n);\n\nexport const defaultIcons = {\n H1Icon,\n H2Icon,\n H3Icon,\n HeadingIcon,\n LinkIcon,\n BoldIcon,\n CodeIcon,\n ItalicIcon,\n ArrowLeft,\n ArrowRight,\n};\n","import React, {\n FC,\n ReactNode,\n useCallback,\n useEffect,\n useMemo,\n useRef,\n} from \"react\";\nimport { EditorState } from \"prosemirror-state\";\nimport {\n dispatchWithMeta,\n getElementById,\n MenuElement,\n SlashMenuKey,\n SlashMetaTypes,\n} from \"prosemirror-slash-menu\";\nimport { EditorView } from \"prosemirror-view\";\nimport { usePopper } from \"react-popper\";\nimport { ListItem } from \"./ListItem\";\nimport \"./styles/menu-style.css\";\nimport { defaultIcons } from \"./defaults\";\n\nexport enum Placement {\n auto = \"auto\",\n autoStart = \"auto-start\",\n autoEnd = \"auto-end\",\n top = \"top\",\n topStart = \"top-start\",\n topEnd = \"top-end\",\n bottom = \"bottom\",\n bottomStart = \"bottom-start\",\n bottomEnd = \"bottom-end\",\n right = \"right\",\n rightStart = \"right-start\",\n rightEnd = \"right-end\",\n left = \"left\",\n leftStart = \"left-start\",\n leftEnd = \"left-end\",\n}\n\nexport interface PopperOptions {\n placement: Placement;\n offsetModifier: { name: string; options: { offset: number[] } };\n}\n\nexport interface SlashMenuProps {\n editorState: EditorState;\n editorView: EditorView;\n icons?: {\n [key: string]: FC;\n };\n rightIcons?: {\n [key: string]: FC;\n };\n subMenuIcon?: ReactNode;\n filterFieldIcon?: ReactNode;\n filterPlaceHolder?: string;\n mainMenuLabel?: string;\n popperReference?: HTMLElement;\n popperOptions?: PopperOptions;\n clickable?: boolean;\n disableInput?: boolean;\n emptySearchComponent?: ReactNode;\n}\n\nexport const SlashMenuReact: FC<SlashMenuProps> = ({\n editorState,\n editorView,\n icons,\n rightIcons,\n subMenuIcon,\n filterFieldIcon,\n filterPlaceHolder,\n mainMenuLabel,\n popperReference,\n popperOptions,\n clickable,\n disableInput,\n emptySearchComponent,\n}) => {\n const menuState = useMemo(() => {\n if (!editorState) return;\n\n return SlashMenuKey.getState(editorState);\n }, [editorState]);\n const elements = useMemo(() => {\n if (!menuState) return;\n\n return menuState.filteredElements;\n }, [menuState]);\n\n const rootRef = useRef<HTMLDivElement>(null);\n\n useEffect(() => {\n if (!rootRef) return;\n\n const outsideClickHandler = (event: MouseEvent) => {\n if (\n rootRef.current &&\n (!event.target ||\n !(event.target instanceof Node) ||\n !rootRef.current.contains(event?.target))\n ) {\n dispatchWithMeta(editorView, SlashMenuKey, {\n type: SlashMetaTypes.close,\n });\n }\n };\n\n document.addEventListener(\"mousedown\", outsideClickHandler);\n\n return () => {\n document.removeEventListener(\"mousedown\", outsideClickHandler);\n };\n }, [rootRef]);\n\n const [popperElement, setPopperElement] = React.useState(null);\n\n const virtualReference = useMemo(() => {\n const domNode = editorView.domAtPos(editorState.selection.to)?.node;\n const cursorPosition = editorView.state.selection.to;\n const cursorLeft = editorView.coordsAtPos(cursorPosition).left;\n\n if (!(domNode instanceof HTMLElement)) return;\n\n const { top, height } = domNode.getBoundingClientRect();\n\n return {\n getBoundingClientRect() {\n return {\n top: top,\n right: cursorLeft,\n bottom: top,\n left: cursorLeft,\n width: 0,\n height: height,\n x: cursorLeft,\n y: top,\n toJSON: () =>\n JSON.stringify({\n top: top,\n right: cursorLeft,\n bottom: top,\n left: cursorLeft,\n width: 0,\n height: height,\n x: cursorLeft,\n y: top,\n }),\n };\n },\n };\n }, [editorView, editorState, window.scrollY]);\n\n const offsetModifier = useMemo(() => {\n return {\n name: \"offset\",\n options: {\n offset: [0, 36],\n },\n };\n }, [popperReference]);\n\n const { styles, attributes } = usePopper(\n popperReference || virtualReference,\n popperElement,\n {\n placement: popperOptions?.placement\n ? popperOptions.placement\n : Placement.bottomStart,\n modifiers: [\n { name: \"flip\", enabled: true },\n {\n name: \"preventOverflow\",\n },\n popperOptions?.offsetModifier\n ? popperOptions.offsetModifier\n : offsetModifier,\n ],\n }\n );\n\n useEffect(() => {\n if (!menuState) return;\n\n const element = document.getElementById(menuState.selected);\n\n if (!element || !rootRef.current) return;\n\n const isTopElement =\n menuState.selected === menuState.filteredElements[0].id;\n\n if (isTopElement) {\n rootRef.current.scrollTop = 0;\n return;\n }\n\n const height =\n element.clientHeight +\n parseInt(\n window.getComputedStyle(element).getPropertyValue(\"margin-top\")\n ) +\n parseInt(\n window.getComputedStyle(element).getPropertyValue(\"margin-bottom\")\n ) +\n parseInt(\n window.getComputedStyle(element).getPropertyValue(\"padding-top\")\n ) +\n parseInt(\n window.getComputedStyle(element).getPropertyValue(\"padding-bottom\")\n );\n\n const { bottom, top } = element.getBoundingClientRect();\n\n const containerRect = rootRef.current.getBoundingClientRect();\n\n const scrollUp = top - height < containerRect.top;\n\n const visible = scrollUp\n ? top - containerRect.top > height\n : !(bottom > containerRect.bottom);\n\n if (!visible) {\n if (scrollUp) {\n rootRef.current.scrollTop = element.offsetTop - height / 2;\n } else {\n rootRef.current.scrollTop =\n element.offsetTop - containerRect.height + height + height / 4;\n }\n }\n }, [menuState]);\n\n useEffect(() => {\n if (rootRef.current === null) {\n return;\n }\n\n rootRef.current.scrollTop = 0;\n }, [menuState?.filteredElements]);\n\n const subMenuLabel = useMemo(() => {\n if (menuState?.subMenuId) {\n return getElementById(menuState.subMenuId, menuState)?.label;\n }\n }, [menuState]);\n\n const closeSubMenu = useCallback(() => {\n if (menuState?.subMenuId) {\n dispatchWithMeta(editorView, SlashMenuKey, {\n type: SlashMetaTypes.closeSubMenu,\n element: getElementById(menuState.subMenuId, menuState),\n });\n }\n }, [menuState]);\n\n // These two useEffects prevent a bug where the user navigates with clicks, which then blurs the editor and key presses stop working\n useEffect(() => {\n editorView.focus();\n }, [menuState?.open]);\n useEffect(() => {\n editorView.focus();\n }, [menuState?.subMenuId]);\n\n const groups = useMemo(() => {\n if (!elements) {\n return;\n }\n\n return elements.reduce((acc, el) => {\n if (el.group) {\n acc[el.group] = acc[el.group] || [];\n acc[el.group].push(el);\n } else {\n acc[\"\"] = acc[\"\"] || [];\n acc[\"\"].push(el);\n }\n\n return acc;\n }, {} as { [key: string]: MenuElement[] });\n }, [elements]);\n\n return (\n <>\n {menuState?.open ? (\n <div\n // @ts-expect-error - something is fishy here but it works so 🤷♂️\n ref={setPopperElement}\n style={{\n ...styles.popper,\n }}\n {...attributes.popper}\n >\n {disableInput ? null : menuState.filter ? (\n <div className={\"menu-filter-wrapper\"}>\n {filterFieldIcon ? (\n <div className={\"menu-filter-icon\"}>{filterFieldIcon}</div>\n ) : null}\n <div id={\"menu-filter\"} className={\"menu-filter\"}>\n {menuState.filter}\n </div>\n </div>\n ) : (\n <div className={\"menu-filter-wrapper\"}>\n {filterFieldIcon ? (\n <div className={\"menu-filter-icon\"}>{filterFieldIcon}</div>\n ) : null}\n <div className={\"menu-filter-placeholder\"}>\n {filterPlaceHolder}\n </div>\n </div>\n )}\n\n <div\n id={\"slashDisplay\"}\n ref={rootRef}\n className={\"menu-display-root\"}\n >\n {menuState.subMenuId ? (\n <div\n className={\"menu-element-wrapper\"}\n onClick={clickable ? closeSubMenu : undefined}\n style={{ cursor: clickable ? \"pointer\" : undefined }}\n >\n <div className={\"menu-element-icon-left\"}>\n {subMenuIcon || defaultIcons.ArrowLeft()}\n </div>\n <div className={\"submenu-label\"}>{subMenuLabel}</div>\n </div>\n ) : null}\n {!menuState.subMenuId && mainMenuLabel ? (\n <div className={\"menu-element-wrapper\"}>\n <div className={\"submenu-label\"}>{mainMenuLabel}</div>\n </div>\n ) : null}\n {groups && Object.keys(groups)?.length > 1\n ? Object.keys(groups).map((group, x) => {\n return (\n <div key={x} className=\"group-wrapper\">\n <div className=\"group-label\">{group}</div>\n {groups?.[group].map((el: MenuElement, idx: number) => (\n <ListItem\n key={el.id}\n menuState={menuState}\n Icon={icons?.[el.id]}\n RightIcon={rightIcons?.[el.id]}\n idx={idx}\n clickable={clickable}\n el={el}\n view={editorView}\n />\n ))}\n </div>\n );\n })\n : elements?.map((el: MenuElement, idx: number) => (\n <ListItem\n key={el.id}\n menuState={menuState}\n Icon={icons?.[el.id]}\n RightIcon={rightIcons?.[el.id]}\n idx={idx}\n clickable={clickable}\n el={el}\n view={editorView}\n />\n ))}\n {elements?.length === 0 ? (\n emptySearchComponent || <div className={\"menu-placeholder\"}>No matching items</div>\n ) : null}\n </div>\n </div>\n ) : null}\n </>\n );\n};\n"],"names":["useEffect","useCallback","dispatchWithMeta","SlashMenuKey","SlashMetaTypes","React","Icons","setBlockType","toggleMark","Placement","useMemo","useRef","usePopper","getElementById"],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ListItem.d.ts","sourceRoot":"","sources":["../../src/slashMenuReact/ListItem.tsx"],"names":[],"mappings":"AAAA,OAAc,EAAE,EAAE,EAA0B,MAAM,OAAO,CAAC;AAC1D,OAAO,EAEL,WAAW,EAEX,cAAc,EAEf,MAAM,wBAAwB,CAAC;AAChC,OAAO,yBAAyB,CAAC;AACjC,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAE9C,eAAO,MAAM,QAAQ,EAAE,EAAE,CAAC;IACxB,SAAS,EAAE,cAAc,CAAC;IAC1B,EAAE,EAAE,WAAW,CAAC;IAChB,IAAI,EAAE,UAAU,CAAC;IACjB,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,CAAC,EAAE,EAAE,CAAC;IACV,SAAS,CAAC,EAAE,EAAE,CAAC;IACf,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB,CAoDA,CAAC"}
|
|
@@ -15,6 +15,7 @@ export declare const defaultIcons: {
|
|
|
15
15
|
H1Icon: () => React.JSX.Element;
|
|
16
16
|
H2Icon: () => React.JSX.Element;
|
|
17
17
|
H3Icon: () => React.JSX.Element;
|
|
18
|
+
HeadingIcon: () => React.JSX.Element;
|
|
18
19
|
LinkIcon: () => React.JSX.Element;
|
|
19
20
|
BoldIcon: () => React.JSX.Element;
|
|
20
21
|
CodeIcon: () => React.JSX.Element;
|
|
@@ -22,3 +23,4 @@ export declare const defaultIcons: {
|
|
|
22
23
|
ArrowLeft: () => React.JSX.Element;
|
|
23
24
|
ArrowRight: () => React.JSX.Element;
|
|
24
25
|
};
|
|
26
|
+
//# sourceMappingURL=defaults.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"defaults.d.ts","sourceRoot":"","sources":["../../src/slashMenuReact/defaults.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAC;AAE9D,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,oBAAY,KAAK;IACf,YAAY,eAAe;IAC3B,QAAQ,WAAW;IACnB,QAAQ,WAAW;IACnB,QAAQ,WAAW;IACnB,MAAM,SAAS;IACf,QAAQ,WAAW;IACnB,MAAM,SAAS;IACf,MAAM,SAAS;CAChB;AA0FD,eAAO,MAAM,eAAe,2BAM3B,CAAC;AAsKF,eAAO,MAAM,YAAY;;;;;;;;;;;CAWxB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"display.d.ts","sourceRoot":"","sources":["../../src/slashMenuReact/display.tsx"],"names":[],"mappings":"AAAA,OAAc,EACZ,EAAE,EACF,SAAS,EAKV,MAAM,OAAO,CAAC;AACf,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAQhD,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAG9C,OAAO,yBAAyB,CAAC;AAGjC,oBAAY,SAAS;IACnB,IAAI,SAAS;IACb,SAAS,eAAe;IACxB,OAAO,aAAa;IACpB,GAAG,QAAQ;IACX,QAAQ,cAAc;IACtB,MAAM,YAAY;IAClB,MAAM,WAAW;IACjB,WAAW,iBAAiB;IAC5B,SAAS,eAAe;IACxB,KAAK,UAAU;IACf,UAAU,gBAAgB;IAC1B,QAAQ,cAAc;IACtB,IAAI,SAAS;IACb,SAAS,eAAe;IACxB,OAAO,aAAa;CACrB;AAED,MAAM,WAAW,aAAa;IAC5B,SAAS,EAAE,SAAS,CAAC;IACrB,cAAc,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE;YAAE,MAAM,EAAE,MAAM,EAAE,CAAA;SAAE,CAAA;KAAE,CAAC;CACjE;AAED,MAAM,WAAW,cAAc;IAC7B,WAAW,EAAE,WAAW,CAAC;IACzB,UAAU,EAAE,UAAU,CAAC;IACvB,KAAK,CAAC,EAAE;QACN,CAAC,GAAG,EAAE,MAAM,GAAG,EAAE,CAAC;KACnB,CAAC;IACF,UAAU,CAAC,EAAE;QACX,CAAC,GAAG,EAAE,MAAM,GAAG,EAAE,CAAC;KACnB,CAAC;IACF,WAAW,CAAC,EAAE,SAAS,CAAC;IACxB,eAAe,CAAC,EAAE,SAAS,CAAC;IAC5B,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,eAAe,CAAC,EAAE,WAAW,CAAC;IAC9B,aAAa,CAAC,EAAE,aAAa,CAAC;IAC9B,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,oBAAoB,CAAC,EAAE,SAAS,CAAC;CAClC;AAED,eAAO,MAAM,cAAc,EAAE,EAAE,CAAC,cAAc,CAqT7C,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/slashMenuReact/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAkB,MAAM,wBAAwB,CAAC;AAExE,eAAO,MAAM,WAAW,GAAI,OAAO,cAAc,+DAYhD,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,37 +1,28 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "prosemirror-slash-menu-react",
|
|
3
|
-
"version": "0.4.
|
|
3
|
+
"version": "0.4.11",
|
|
4
4
|
"description": "Implementation of prosemirror-slash-menu in react",
|
|
5
|
+
"source": "src/index.ts",
|
|
5
6
|
"main": "dist/index.js",
|
|
6
7
|
"module": "dist/index.es.js",
|
|
7
8
|
"types": "dist/index.d.ts",
|
|
8
9
|
"dependencies": {
|
|
9
10
|
"@popperjs/core": "^2.11.8",
|
|
10
|
-
"
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
"@testing-library/jest-dom": "^5.16.5",
|
|
14
|
-
"@testing-library/react": "^13.4.0",
|
|
15
|
-
"@testing-library/user-event": "^13.5.0",
|
|
16
|
-
"@types/jest": "^27.5.2",
|
|
17
|
-
"@types/node": "^16.18.34",
|
|
18
|
-
"@types/react": "^18.2.9",
|
|
19
|
-
"@types/react-dom": "^18.2.4",
|
|
11
|
+
"react-popper": "^2.3.0"
|
|
12
|
+
},
|
|
13
|
+
"peerDependencies": {
|
|
20
14
|
"prosemirror-commands": "^1.5.2",
|
|
21
15
|
"prosemirror-schema-basic": "^1.2.2",
|
|
22
|
-
"prosemirror-state": "1.4.3",
|
|
16
|
+
"prosemirror-state": "^1.4.3",
|
|
23
17
|
"prosemirror-view": "^1.31.4",
|
|
24
|
-
"react
|
|
25
|
-
"
|
|
26
|
-
"
|
|
27
|
-
"rollup-plugin-postcss": "^4.0.2",
|
|
28
|
-
"typescript": "^5.1.6",
|
|
29
|
-
"web-vitals": "^2.1.4",
|
|
30
|
-
"prosemirror-slash-menu": "0.4.4"
|
|
18
|
+
"react": "^18.2.0",
|
|
19
|
+
"react-dom": "^18.2.0",
|
|
20
|
+
"prosemirror-slash-menu": "0.4.6"
|
|
31
21
|
},
|
|
32
22
|
"repository": {
|
|
33
23
|
"type": "git",
|
|
34
|
-
"url": "git+https://github.com/emergence-engineering/
|
|
24
|
+
"url": "git+https://github.com/emergence-engineering/emergence-tools.git",
|
|
25
|
+
"directory": "packages/prosemirror-slash-menu-react"
|
|
35
26
|
},
|
|
36
27
|
"files": [
|
|
37
28
|
"dist/**/*"
|
|
@@ -43,48 +34,50 @@
|
|
|
43
34
|
"slash",
|
|
44
35
|
"menu"
|
|
45
36
|
],
|
|
46
|
-
"license": "
|
|
37
|
+
"license": "MIT",
|
|
47
38
|
"bugs": {
|
|
48
|
-
"url": "https://github.com/emergence-engineering/
|
|
39
|
+
"url": "https://github.com/emergence-engineering/emergence-tools/issues"
|
|
49
40
|
},
|
|
50
|
-
"homepage": "https://github.com/emergence-engineering/prosemirror-slash-menu-react#readme",
|
|
41
|
+
"homepage": "https://github.com/emergence-engineering/emergence-tools/tree/main/packages/prosemirror-slash-menu-react#readme",
|
|
51
42
|
"devDependencies": {
|
|
52
43
|
"@babel/core": "^7.22.1",
|
|
53
44
|
"@babel/preset-env": "^7.22.4",
|
|
54
45
|
"@babel/preset-react": "^7.22.3",
|
|
55
|
-
"react": "^18.2.0",
|
|
56
|
-
"react-dom": "^18.2.0",
|
|
57
46
|
"@rollup/plugin-babel": "^6.0.3",
|
|
58
47
|
"@rollup/plugin-node-resolve": "^15.1.0",
|
|
48
|
+
"@types/react": "^18.3.0",
|
|
49
|
+
"@types/react-dom": "^18.3.0",
|
|
59
50
|
"@typescript-eslint/eslint-plugin": "^6.2.0",
|
|
60
51
|
"@typescript-eslint/parser": "^6.2.0",
|
|
61
52
|
"eslint": "^8.45.0",
|
|
62
53
|
"eslint-config-prettier": "^8.5.0",
|
|
63
54
|
"eslint-plugin-prettier": "^4.2.1",
|
|
64
55
|
"eslint-plugin-react": "^7.33.0",
|
|
65
|
-
"nodemon": "^2.0.22",
|
|
66
|
-
"np": "^8.0.4",
|
|
67
56
|
"prettier": "^2.8.8",
|
|
57
|
+
"prosemirror-commands": "^1.5.2",
|
|
58
|
+
"prosemirror-schema-basic": "^1.2.2",
|
|
59
|
+
"prosemirror-state": "^1.4.3",
|
|
60
|
+
"prosemirror-view": "^1.31.4",
|
|
61
|
+
"react": "^18.2.0",
|
|
62
|
+
"react-dom": "^18.2.0",
|
|
63
|
+
"rimraf": "^5.0.0",
|
|
68
64
|
"rollup": "^2.79.1",
|
|
69
|
-
"rollup-plugin-babel": "^4.4.0",
|
|
70
65
|
"rollup-plugin-copy": "^3.4.0",
|
|
71
|
-
"rollup-plugin-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
"
|
|
75
|
-
"
|
|
66
|
+
"rollup-plugin-import-css": "^3.2.1",
|
|
67
|
+
"rollup-plugin-postcss": "^4.0.2",
|
|
68
|
+
"rollup-plugin-typescript2": "^0.34.1",
|
|
69
|
+
"typescript": "^5.1.6",
|
|
70
|
+
"prosemirror-slash-menu": "0.4.6"
|
|
76
71
|
},
|
|
77
72
|
"engines": {
|
|
78
|
-
"node": ">=
|
|
79
|
-
"npm": ">=7"
|
|
73
|
+
"node": ">=18"
|
|
80
74
|
},
|
|
81
75
|
"scripts": {
|
|
82
|
-
"
|
|
83
|
-
"build": "rollup -c
|
|
84
|
-
"dev": "rollup -c -w
|
|
85
|
-
"
|
|
86
|
-
"lint": "tsc --noEmit && eslint src --ext .ts",
|
|
87
|
-
"
|
|
88
|
-
"dev:watch": "npm-run-all --parallel dev yalc:watch"
|
|
76
|
+
"prebuild": "rimraf dist",
|
|
77
|
+
"build": "rollup -c",
|
|
78
|
+
"dev": "rollup -c -w",
|
|
79
|
+
"format": "eslint src --ext .ts,.tsx --fix",
|
|
80
|
+
"lint": "tsc --noEmit && eslint src --ext .ts,.tsx",
|
|
81
|
+
"test": "echo \"no test specified\" && exit 0"
|
|
89
82
|
}
|
|
90
83
|
}
|