@pie-lib/editable-html-tip-tap 2.1.4 → 2.1.5
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/CHANGELOG.md +8 -0
- package/lib/components/MenuBar.js +5 -4
- package/lib/components/MenuBar.js.map +1 -1
- package/lib/components/respArea/ExplicitConstructedResponse.js +2 -1
- package/lib/components/respArea/ExplicitConstructedResponse.js.map +1 -1
- package/lib/components/respArea/InlineDropdown.js +2 -1
- package/lib/components/respArea/InlineDropdown.js.map +1 -1
- package/lib/extensions/math.js +6 -5
- package/lib/extensions/math.js.map +1 -1
- package/lib/utils/toolbar.js +19 -0
- package/lib/utils/toolbar.js.map +1 -0
- package/package.json +6 -6
- package/src/components/MenuBar.jsx +5 -3
- package/src/components/__tests__/ExplicitConstructedResponse.test.jsx +6 -1
- package/src/components/__tests__/InlineDropdown.test.jsx +6 -1
- package/src/components/respArea/ExplicitConstructedResponse.jsx +2 -1
- package/src/components/respArea/InlineDropdown.jsx +2 -1
- package/src/extensions/__tests__/math.test.js +61 -0
- package/src/extensions/math.js +6 -6
- package/src/utils/__tests__/toolbar.test.js +43 -0
- package/src/utils/toolbar.js +15 -0
package/CHANGELOG.md
CHANGED
|
@@ -3,6 +3,14 @@
|
|
|
3
3
|
All notable changes to this project will be documented in this file.
|
|
4
4
|
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
|
5
5
|
|
|
6
|
+
## [2.1.5](https://github.com/pie-framework/pie-lib/compare/@pie-lib/editable-html-tip-tap@2.1.4...@pie-lib/editable-html-tip-tap@2.1.5) (2026-06-12)
|
|
7
|
+
|
|
8
|
+
### Bug Fixes
|
|
9
|
+
|
|
10
|
+
- clicking on a different math node closes current modal [PIE-603] ([6244aaf](https://github.com/pie-framework/pie-lib/commit/6244aaf509da1196e91803aabae0ca531d17f458))
|
|
11
|
+
- **editable-html-tip-tap:** rename button class to 'toolbarButton' PIE-662 ([58ebb5d](https://github.com/pie-framework/pie-lib/commit/58ebb5de67db7019118d7e6707a9bf5a27b6d913))
|
|
12
|
+
- made sure editor state subscribes to toolbarOpened and reacts to its changes [PIE-604] ([c9f6466](https://github.com/pie-framework/pie-lib/commit/c9f64667cda45b4eb6a6746cdae1cbb9976bbb74))
|
|
13
|
+
|
|
6
14
|
## [2.1.4](https://github.com/pie-framework/pie-lib/compare/@pie-lib/editable-html-tip-tap@2.1.3...@pie-lib/editable-html-tip-tap@2.1.4) (2026-06-03)
|
|
7
15
|
|
|
8
16
|
### Bug Fixes
|
|
@@ -99,7 +99,7 @@ function MenuBar(_ref) {
|
|
|
99
99
|
var editorState = (0, _react2.useEditorState)({
|
|
100
100
|
editor: editor,
|
|
101
101
|
selector: function selector(ctx) {
|
|
102
|
-
var _ctx$editor, _ctx$editor2, _ctx$editor3, _ctx$editor4, _ctx$editor5, _ctx$editor6, _ctx$editor7, _ctx$editor$isActive, _ctx$editor$can$chain, _ctx$editor$isActive2, _ref3, _ctx$editor$getAttrib, _ctx$editor$can$chain2, _ctx$editor$isActive3, _ctx$editor$can$chain3, _ctx$editor$isActive4, _ctx$editor$can$chain4, _ctx$editor$isActive5, _ctx$editor$can$chain5, _ctx$editor$can$chain6, _ctx$editor$isActive6, _ctx$editor$isActive7, _ctx$editor$isActive8, _ctx$editor$isActive9, _ctx$editor$isActive0, _ctx$editor$isActive1, _ctx$editor$isActive10, _ctx$editor$isActive11, _ctx$editor$isActive12, _ctx$editor$isActive13, _ctx$editor$isActive14, _ctx$editor$isActive15, _ctx$editor$isActive16, _ctx$editor$isActive17, _ctx$editor$isActive18, _ctx$editor$can$chain7, _ctx$editor$can$chain8;
|
|
102
|
+
var _ctx$editor, _ctx$editor2, _ctx$editor3, _ctx$editor4, _ctx$editor5, _ctx$editor6, _ctx$editor7, _ctx$editor$_toolbarO, _ctx$editor8, _ctx$editor$isActive, _ctx$editor$can$chain, _ctx$editor$isActive2, _ref3, _ctx$editor$getAttrib, _ctx$editor$can$chain2, _ctx$editor$isActive3, _ctx$editor$can$chain3, _ctx$editor$isActive4, _ctx$editor$can$chain4, _ctx$editor$isActive5, _ctx$editor$can$chain5, _ctx$editor$can$chain6, _ctx$editor$isActive6, _ctx$editor$isActive7, _ctx$editor$isActive8, _ctx$editor$isActive9, _ctx$editor$isActive0, _ctx$editor$isActive1, _ctx$editor$isActive10, _ctx$editor$isActive11, _ctx$editor$isActive12, _ctx$editor$isActive13, _ctx$editor$isActive14, _ctx$editor$isActive15, _ctx$editor$isActive16, _ctx$editor$isActive17, _ctx$editor$isActive18, _ctx$editor$can$chain7, _ctx$editor$can$chain8;
|
|
103
103
|
var _ref2 = ((_ctx$editor = ctx.editor) === null || _ctx$editor === void 0 ? void 0 : _ctx$editor.state) || {},
|
|
104
104
|
selection = _ref2.selection;
|
|
105
105
|
var currentNode;
|
|
@@ -116,6 +116,7 @@ function MenuBar(_ref) {
|
|
|
116
116
|
hideDefaultToolbar: hideDefaultToolbar,
|
|
117
117
|
hasTextSelectionInTable: hasTextSelectionInTable,
|
|
118
118
|
isFocused: (_ctx$editor7 = ctx.editor) === null || _ctx$editor7 === void 0 ? void 0 : _ctx$editor7.isFocused,
|
|
119
|
+
toolbarOpened: (_ctx$editor$_toolbarO = (_ctx$editor8 = ctx.editor) === null || _ctx$editor8 === void 0 ? void 0 : _ctx$editor8._toolbarOpened) !== null && _ctx$editor$_toolbarO !== void 0 ? _ctx$editor$_toolbarO : false,
|
|
119
120
|
isBold: (_ctx$editor$isActive = ctx.editor.isActive('bold')) !== null && _ctx$editor$isActive !== void 0 ? _ctx$editor$isActive : false,
|
|
120
121
|
canBold: (_ctx$editor$can$chain = ctx.editor.can().chain().toggleBold().run()) !== null && _ctx$editor$can$chain !== void 0 ? _ctx$editor$can$chain : false,
|
|
121
122
|
isTable: (_ctx$editor$isActive2 = ctx.editor.isActive('table')) !== null && _ctx$editor$isActive2 !== void 0 ? _ctx$editor$isActive2 : false,
|
|
@@ -162,7 +163,7 @@ function MenuBar(_ref) {
|
|
|
162
163
|
});
|
|
163
164
|
var hasDoneButton = false;
|
|
164
165
|
var autoWidth = !!autoWidthToolbar;
|
|
165
|
-
var names = (0, _classnames["default"])(classes.toolbar, _constants.PIE_TOOLBAR__CLASS, (0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])({}, classes.toolbarWithNoDone, !hasDoneButton), classes.toolbarTop, toolbarOpts.position === 'top'), classes.toolbarRight, toolbarOpts.alignment === 'right'), classes.focused, toolbarOpts.alwaysVisible || editorState.isFocused && !
|
|
166
|
+
var names = (0, _classnames["default"])(classes.toolbar, _constants.PIE_TOOLBAR__CLASS, (0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])({}, classes.toolbarWithNoDone, !hasDoneButton), classes.toolbarTop, toolbarOpts.position === 'top'), classes.toolbarRight, toolbarOpts.alignment === 'right'), classes.focused, toolbarOpts.alwaysVisible || editorState.isFocused && !editorState.toolbarOpened && !editorState.hideDefaultToolbar), classes.autoWidth, autoWidth), classes.fullWidth, !autoWidth), classes.hidden, toolbarOpts.isHidden === true));
|
|
166
167
|
var customStyles = toolbarOpts.minWidth !== undefined ? {
|
|
167
168
|
minWidth: toolbarOpts.minWidth
|
|
168
169
|
} : {};
|
|
@@ -580,7 +581,7 @@ var StyledMenuBar = function StyledMenuBar(props) {
|
|
|
580
581
|
var classes = {
|
|
581
582
|
defaultToolbar: 'defaultToolbar',
|
|
582
583
|
buttonsContainer: 'buttonsContainer',
|
|
583
|
-
button: '
|
|
584
|
+
button: 'toolbarButton',
|
|
584
585
|
active: 'active',
|
|
585
586
|
disabled: 'disabled',
|
|
586
587
|
isActive: 'isActive',
|
|
@@ -613,7 +614,7 @@ var StyledMenuBarRoot = (0, _styles.styled)('div')(function (_ref4) {
|
|
|
613
614
|
display: 'flex',
|
|
614
615
|
width: '100%'
|
|
615
616
|
},
|
|
616
|
-
'& .
|
|
617
|
+
'& .toolbarButton': {
|
|
617
618
|
color: 'grey',
|
|
618
619
|
display: 'inline-flex',
|
|
619
620
|
padding: '2px',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MenuBar.js","names":["_react","_interopRequireWildcard","require","_classnames","_interopRequireDefault","_styles","_prosemirrorState","_FormatBold","_FormatItalic","_FormatStrikethrough","_Code","_GridOn","_FormatListBulleted","_FormatListNumbered","_FormatUnderlined","_Functions","_Image","_Redo","_Undo","_FormatQuote","_Theaters","_VolumeUp","_BorderAll","_Delete","_react2","_constants","_ToolbarIcon","_characterUtils","_TextAlign","_CssIcon","_TableIcons","_CharacterPicker","_doneButton","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","_typeof","has","get","set","_t","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","ownKeys","keys","getOwnPropertySymbols","filter","enumerable","push","apply","_objectSpread","arguments","length","forEach","_defineProperty2","getOwnPropertyDescriptors","defineProperties","SuperscriptIcon","createElement","xmlns","height","viewBox","width","fill","d","SubscriptIcon","HeadingIcon","style","MenuBar","_ref","_editorState$currentN","editor","classes","activePlugins","toolOpts","toolbarOpts","responseAreaProps","onChange","autoWidthToolbar","_useState","useState","_useState2","_slicedToArray2","showPicker","setShowPicker","editorState","useEditorState","selector","ctx","_ctx$editor","_ctx$editor2","_ctx$editor3","_ctx$editor4","_ctx$editor5","_ctx$editor6","_ctx$editor7","_ctx$editor$isActive","_ctx$editor$can$chain","_ctx$editor$isActive2","_ref3","_ctx$editor$getAttrib","_ctx$editor$can$chain2","_ctx$editor$isActive3","_ctx$editor$can$chain3","_ctx$editor$isActive4","_ctx$editor$can$chain4","_ctx$editor$isActive5","_ctx$editor$can$chain5","_ctx$editor$can$chain6","_ctx$editor$isActive6","_ctx$editor$isActive7","_ctx$editor$isActive8","_ctx$editor$isActive9","_ctx$editor$isActive0","_ctx$editor$isActive1","_ctx$editor$isActive10","_ctx$editor$isActive11","_ctx$editor$isActive12","_ctx$editor$isActive13","_ctx$editor$isActive14","_ctx$editor$isActive15","_ctx$editor$isActive16","_ctx$editor$isActive17","_ctx$editor$isActive18","_ctx$editor$can$chain7","_ctx$editor$can$chain8","_ref2","state","selection","currentNode","commandManager","NodeSelection","node","hideDefaultToolbar","isActive","hasTextSelectionInTable","empty","isFocused","isBold","canBold","can","chain","toggleBold","run","isTable","tableHasBorder","getAttributes","border","canTable","insertTable","isItalic","canItalic","toggleItalic","isStrike","canStrike","toggleStrike","isCode","canCode","toggleCode","canClearMarks","unsetAllMarks","isUnderline","isSubScript","isSuperScript","isParagraph","isHeading1","level","isHeading2","isHeading3","isHeadingParagraph","isHeading4","isHeading5","isHeading6","isBulletList","isOrderedList","isCodeBlock","isBlockquote","canUndo","undo","canRedo","redo","hasDoneButton","autoWidth","names","classNames","toolbar","PIE_TOOLBAR__CLASS","toolbarWithNoDone","toolbarTop","position","toolbarRight","alignment","focused","alwaysVisible","_toolbarOpened","fullWidth","hidden","isHidden","customStyles","minWidth","undefined","handleMouseDown","preventDefault","toolbarButtons","useMemo","icon","onClick","focus","rows","cols","withHeaderRow","includes","isDisabled","AddRow","addRowAfter","RemoveRow","deleteRow","AddColumn","addColumnAfter","RemoveColumn","deleteColumn","RemoveTable","deleteTable","tableAttrs","update","commands","updateAttributes","toggleUnderline","toggleSubscript","toggleSuperscript","setImageUploadNode","insertMedia","type","tag","openCSSClassDialog","toggleBlockquote","toggleHeadingParagraph","insertMath","CharacterIcon","letter","spanishConfig","p","specialConfig","toggleBulletList","toggleOrderedList","isDragInTheBlankSelected","name","className","onMouseDown","defaultToolbar","tabIndex","buttonsContainer","button","deleteSelection","getHTML","btn","_btn$hidden","map","index","_btn$isDisabled","_btn$isActive","disabled","active","key","insertResponseArea","ToolbarIcon","showDone","DoneButton","blur","CharacterPicker","opts","renderPopOver","ev","ch","console","log","closePopOver","onClose","StyledMenuBar","props","theme","useTheme","iconRoot","label","shared","StyledMenuBarRoot","_extends2","styled","_ref4","display","justifyContent","alignItems","color","padding","background","cursor","outline","concat","palette","grey","opacity","zIndex","margin","boxShadow","boxSizing","pointerEvents","top","right","visibility","verticalAlign","_default","exports"],"sources":["../../src/components/MenuBar.jsx"],"sourcesContent":["import React, { useMemo, useState } from 'react';\nimport classNames from 'classnames';\nimport { styled, useTheme } from '@mui/material/styles';\nimport { NodeSelection } from 'prosemirror-state';\n\nimport Bold from '@mui/icons-material/FormatBold';\nimport Italic from '@mui/icons-material/FormatItalic';\nimport Strikethrough from '@mui/icons-material/FormatStrikethrough';\nimport Code from '@mui/icons-material/Code';\nimport GridOn from '@mui/icons-material/GridOn';\nimport BulletedListIcon from '@mui/icons-material/FormatListBulleted';\nimport NumberedListIcon from '@mui/icons-material/FormatListNumbered';\nimport Underline from '@mui/icons-material/FormatUnderlined';\nimport Functions from '@mui/icons-material/Functions';\nimport ImageIcon from '@mui/icons-material/Image';\nimport Redo from '@mui/icons-material/Redo';\nimport Undo from '@mui/icons-material/Undo';\nimport FormatQuote from '@mui/icons-material/FormatQuote';\nimport TheatersIcon from '@mui/icons-material/Theaters';\nimport VolumeUpIcon from '@mui/icons-material/VolumeUp';\nimport BorderAll from '@mui/icons-material/BorderAll';\nimport Delete from '@mui/icons-material/Delete';\n\nimport { useEditorState } from '@tiptap/react';\n\nimport { PIE_TOOLBAR__CLASS } from '../constants';\nimport { ToolbarIcon } from './respArea/ToolbarIcon';\nimport { spanishConfig, specialConfig } from './characters/characterUtils';\nimport TextAlignIcon from './icons/TextAlign';\nimport CSSIcon from './icons/CssIcon';\nimport { AddColumn, AddRow, RemoveColumn, RemoveRow, RemoveTable } from './icons/TableIcons';\n\nimport { CharacterIcon, CharacterPicker } from './CharacterPicker';\nimport { DoneButton } from './common/done-button';\n\nconst SuperscriptIcon = () => (\n <svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\" viewBox=\"0 0 24 24\" width=\"24px\" fill=\"none\">\n <path\n d=\"M22,7h-2v1h3v1h-4V7c0-0.55,0.45-1,1-1h2V5h-3V4h3c0.55,0,1,0.45,1,1v1C23,6.55,22.55,7,22,7z M5.88,20h2.66l3.4-5.42h0.12 l3.4,5.42h2.66l-4.65-7.27L17.81,6h-2.68l-3.07,4.99h-0.12L8.85,6H6.19l4.32,6.73L5.88,20z\"\n fill=\"currentColor\"\n />\n </svg>\n);\n\nconst SubscriptIcon = () => (\n <svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\" viewBox=\"0 0 24 24\" width=\"24px\" fill=\"none\">\n <path\n d=\"M22,18h-2v1h3v1h-4v-2c0-0.55,0.45-1,1-1h2v-1h-3v-1h3c0.55,0,1,0.45,1,1v1C23,17.55,22.55,18,22,18z M5.88,18h2.66 l3.4-5.42h0.12l3.4,5.42h2.66l-4.65-7.27L17.81,4h-2.68l-3.07,4.99h-0.12L8.85,4H6.19l4.32,6.73L5.88,18z\"\n fill=\"currentColor\"\n />\n </svg>\n);\n\nconst HeadingIcon = () => (\n <svg\n width=\"30\"\n height=\"28\"\n viewBox=\"0 0 30 28\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n style={{ width: '20px', height: '18px' }}\n >\n <path\n d=\"M27 4V24H29C29.5 24 30 24.5 30 25V27C30 27.5625 29.5 28 29 28H19C18.4375 28 18 27.5625 18 27V25C18 24.5 18.4375 24 19 24H21V16H9V24H11C11.5 24 12 24.5 12 25V27C12 27.5625 11.5 28 11 28H1C0.4375 28 0 27.5625 0 27V25C0 24.5 0.4375 24 1 24H3V4H1C0.4375 4 0 3.5625 0 3V1C0 0.5 0.4375 0 1 0H11C11.5 0 12 0.5 12 1V3C12 3.5625 11.5 4 11 4H9V12H21V4H19C18.4375 4 18 3.5625 18 3V1C18 0.5 18.4375 0 19 0H29C29.5 0 30 0.5 30 1V3C30 3.5625 29.5 4 29 4H27Z\"\n fill=\"currentColor\"\n />\n </svg>\n);\n\nfunction MenuBar({\n editor,\n classes,\n activePlugins,\n toolbarOpts: toolOpts,\n responseAreaProps,\n onChange,\n autoWidthToolbar,\n}) {\n const [showPicker, setShowPicker] = useState(false);\n const toolbarOpts = toolOpts ?? {};\n\n const editorState = useEditorState({\n editor,\n selector: (ctx) => {\n const { selection } = ctx.editor?.state || {};\n\n let currentNode;\n\n if (!ctx.editor?.commandManager) {\n return {};\n }\n\n if (selection instanceof NodeSelection) {\n currentNode = selection.node; // the selected node\n }\n\n const hideDefaultToolbar =\n ctx.editor?.isActive('math') ||\n ctx.editor?.isActive('explicit_constructed_response') ||\n ctx.editor?.isActive('imageUploadNode') ||\n ctx.editor?.isActive('drag_in_the_blank');\n\n const hasTextSelectionInTable = selection && selection.empty === false && ctx.editor.isActive('table');\n\n return {\n currentNode,\n hideDefaultToolbar,\n hasTextSelectionInTable,\n isFocused: ctx.editor?.isFocused,\n isBold: ctx.editor.isActive('bold') ?? false,\n canBold: ctx.editor.can().chain().toggleBold().run() ?? false,\n isTable: ctx.editor.isActive('table') ?? false,\n tableHasBorder: ctx.editor.getAttributes('table')?.border === '1' ?? false,\n canTable: ctx.editor.can().chain().insertTable().run() ?? false,\n isItalic: ctx.editor.isActive('italic') ?? false,\n canItalic: ctx.editor.can().chain().toggleItalic().run() ?? false,\n isStrike: ctx.editor.isActive('strike') ?? false,\n canStrike: ctx.editor.can().chain().toggleStrike().run() ?? false,\n isCode: ctx.editor.isActive('code') ?? false,\n canCode: ctx.editor.can().chain().toggleCode().run() ?? false,\n canClearMarks: ctx.editor.can().chain().unsetAllMarks().run() ?? false,\n isUnderline: ctx.editor.isActive('underline') ?? false,\n isSubScript: ctx.editor.isActive('subscript') ?? false,\n isSuperScript: ctx.editor.isActive('superscript') ?? false,\n isParagraph: ctx.editor.isActive('paragraph') ?? false,\n isHeading1: ctx.editor.isActive('heading', { level: 1 }) ?? false,\n isHeading2: ctx.editor.isActive('heading', { level: 2 }) ?? false,\n isHeading3: ctx.editor.isActive('heading', { level: 3 }) ?? false,\n isHeadingParagraph: ctx.editor.isActive('headingParagraph') ?? false,\n isHeading4: ctx.editor.isActive('heading', { level: 4 }) ?? false,\n isHeading5: ctx.editor.isActive('heading', { level: 5 }) ?? false,\n isHeading6: ctx.editor.isActive('heading', { level: 6 }) ?? false,\n isBulletList: ctx.editor.isActive('bulletList') ?? false,\n isOrderedList: ctx.editor.isActive('orderedList') ?? false,\n isCodeBlock: ctx.editor.isActive('codeBlock') ?? false,\n isBlockquote: ctx.editor.isActive('blockquote') ?? false,\n canUndo: ctx.editor.can().chain().undo().run() ?? false,\n canRedo: ctx.editor.can().chain().redo().run() ?? false,\n };\n },\n });\n\n const hasDoneButton = false;\n const autoWidth = !!autoWidthToolbar;\n\n const names = classNames(classes.toolbar, PIE_TOOLBAR__CLASS, {\n [classes.toolbarWithNoDone]: !hasDoneButton,\n [classes.toolbarTop]: toolbarOpts.position === 'top',\n [classes.toolbarRight]: toolbarOpts.alignment === 'right',\n [classes.focused]:\n toolbarOpts.alwaysVisible || (editorState.isFocused && !editor._toolbarOpened && !editorState.hideDefaultToolbar),\n [classes.autoWidth]: autoWidth,\n [classes.fullWidth]: !autoWidth,\n [classes.hidden]: toolbarOpts.isHidden === true,\n });\n\n const customStyles = toolbarOpts.minWidth !== undefined ? { minWidth: toolbarOpts.minWidth } : {};\n\n const handleMouseDown = (e) => {\n e.preventDefault();\n };\n\n const toolbarButtons = useMemo(\n () => [\n {\n icon: <GridOn />,\n onClick: (editor) => editor.chain().focus().insertTable({ rows: 2, cols: 2, withHeaderRow: false }).run(),\n hidden: (state) => !activePlugins?.includes('table') || state.isTable,\n isActive: (state) => state.isTable,\n isDisabled: (state) => !state.canTable,\n },\n {\n icon: <AddRow />,\n onClick: (editor) => editor.chain().focus().addRowAfter().run(),\n hidden: (state) => !(state.isTable && !state.hasTextSelectionInTable),\n isActive: (state) => state.isTable,\n isDisabled: (state) => !state.canTable,\n },\n {\n icon: <RemoveRow />,\n onClick: (editor) => editor.chain().focus().deleteRow().run(),\n hidden: (state) => !(state.isTable && !state.hasTextSelectionInTable),\n isActive: (state) => state.isTable,\n isDisabled: (state) => !state.canTable,\n },\n {\n icon: <AddColumn />,\n onClick: (editor) => editor.chain().focus().addColumnAfter().run(),\n hidden: (state) => !(state.isTable && !state.hasTextSelectionInTable),\n isActive: (state) => state.isTable,\n isDisabled: (state) => !state.canTable,\n },\n {\n icon: <RemoveColumn />,\n onClick: (editor) => editor.chain().focus().deleteColumn().run(),\n hidden: (state) => !(state.isTable && !state.hasTextSelectionInTable),\n isActive: (state) => state.isTable,\n isDisabled: (state) => !state.canTable,\n },\n {\n icon: <RemoveTable />,\n onClick: (editor) => editor.chain().focus().deleteTable().run(),\n hidden: (state) => !(state.isTable && !state.hasTextSelectionInTable),\n isActive: (state) => state.isTable,\n isDisabled: (state) => !state.canTable,\n },\n {\n icon: <BorderAll />,\n onClick: (editor) => {\n const tableAttrs = editor.getAttributes('table');\n\n const update = {\n ...tableAttrs,\n border: tableAttrs.border !== '0' ? '0' : '1',\n };\n\n editor.commands.updateAttributes('table', update);\n },\n hidden: (state) => !(state.isTable && !state.hasTextSelectionInTable),\n isActive: (state) => state.tableHasBorder,\n isDisabled: (state) => !state.canTable,\n },\n {\n icon: <Bold />,\n onClick: (editor) => editor.chain().focus().toggleBold().run(),\n hidden: () => !activePlugins?.includes('bold'),\n isActive: (state) => state.isBold,\n isDisabled: (state) => !state.canBold,\n },\n {\n icon: <Italic />,\n onClick: (editor) => editor.chain().focus().toggleItalic().run(),\n hidden: () => !activePlugins?.includes('italic'),\n isActive: (state) => state.isItalic,\n isDisabled: (state) => !state.canItalic,\n },\n {\n icon: <Strikethrough />,\n onClick: (editor) => editor.chain().focus().toggleStrike().run(),\n hidden: () => !activePlugins?.includes('strikethrough'),\n isActive: (state) => state.isStrike,\n isDisabled: (state) => !state.canStrike,\n },\n {\n icon: <Code />,\n onClick: (editor) => editor.chain().focus().toggleCode().run(),\n hidden: () => !activePlugins?.includes('code'),\n isActive: (state) => state.isCode,\n isDisabled: (state) => !state.canCode,\n },\n {\n icon: <Underline />,\n onClick: (editor) => editor.chain().focus().toggleUnderline().run(),\n hidden: () => !activePlugins?.includes('underline'),\n isActive: (state) => state.isUnderline,\n },\n {\n icon: <SubscriptIcon />,\n onClick: (editor) => editor.chain().focus().toggleSubscript().run(),\n hidden: () => !activePlugins?.includes('subscript'),\n isActive: (state) => state.isSubScript,\n },\n {\n icon: <SuperscriptIcon />,\n onClick: (editor) => editor.chain().focus().toggleSuperscript().run(),\n hidden: () => !activePlugins?.includes('superscript'),\n isActive: (state) => state.isSuperScript,\n },\n {\n icon: <ImageIcon />,\n hidden: () => !activePlugins?.includes('image'),\n onClick: (editor) => editor.chain().focus().setImageUploadNode().run(),\n },\n {\n icon: <TheatersIcon />,\n hidden: () => !activePlugins?.includes('video'),\n onClick: (editor) => editor.chain().focus().insertMedia({ type: 'video' }).run(),\n },\n {\n icon: <VolumeUpIcon />,\n hidden: () => !activePlugins?.includes('audio'),\n onClick: (editor) => editor.chain().focus().insertMedia({ type: 'audio', tag: 'audio' }).run(),\n },\n {\n icon: <CSSIcon />,\n hidden: () => !activePlugins?.includes('css'),\n onClick: (editor) => editor.commands.openCSSClassDialog(),\n },\n {\n icon: <FormatQuote />,\n hidden: () => !activePlugins?.includes('blockquote'),\n onClick: (editor) => editor.chain().focus().toggleBlockquote().run(),\n isActive: (state) => state.isBlockquote,\n },\n {\n icon: <HeadingIcon />,\n hidden: () => !activePlugins?.includes('h3'),\n onClick: (editor) => editor.chain().focus().toggleHeadingParagraph().run(),\n isActive: (state) => state.isHeadingParagraph,\n },\n {\n icon: <Functions />,\n hidden: () => !activePlugins?.includes('math'),\n onClick: (editor) => editor.chain().focus().insertMath('').run(),\n },\n {\n icon: <CharacterIcon letter=\"ñ\" />,\n hidden: () => !activePlugins?.includes('languageCharacters'),\n onClick: () => setShowPicker(spanishConfig),\n },\n {\n icon: <CharacterIcon letter=\"€\" />,\n hidden: () => activePlugins?.filter((p) => p === 'languageCharacters').length !== 2,\n onClick: () => setShowPicker(specialConfig),\n },\n {\n icon: <TextAlignIcon editor={editor} />,\n hidden: () => !activePlugins?.includes('text-align'),\n onClick: () => {},\n },\n {\n icon: <BulletedListIcon />,\n hidden: () => !activePlugins?.includes('bulleted-list'),\n onClick: (editor) => editor.chain().focus().toggleBulletList().run(),\n isActive: (state) => state.isBulletList,\n },\n {\n icon: <NumberedListIcon />,\n hidden: () => !activePlugins?.includes('numbered-list'),\n onClick: (editor) => editor.chain().focus().toggleOrderedList().run(),\n isActive: (state) => state.isOrderedList,\n },\n {\n icon: <Undo />,\n hidden: () => !activePlugins?.includes('undo'),\n onClick: (editor) => editor.chain().focus().undo().run(),\n isDisabled: (state) => !state.canUndo,\n },\n {\n icon: <Redo />,\n hidden: () => !activePlugins?.includes('redo'),\n onClick: (editor) => editor.chain().focus().redo().run(),\n isDisabled: (state) => !state.canRedo,\n },\n ],\n [activePlugins, editor],\n );\n\n const isDragInTheBlankSelected =\n editorState.hideDefaultToolbar && editorState.currentNode?.type?.name === 'drag_in_the_blank';\n\n return (\n <div className={names} style={{ ...customStyles }} onMouseDown={handleMouseDown}>\n {isDragInTheBlankSelected && (\n <div className={classes.defaultToolbar} tabIndex=\"1\">\n <div className={classes.buttonsContainer}>\n <button\n type=\"button\"\n className={classes.button}\n onClick={(e) => {\n e.preventDefault();\n editor.chain().focus().deleteSelection().run();\n onChange?.(editor.getHTML());\n }}\n aria-label=\"Delete response area\"\n >\n <Delete />\n </button>\n </div>\n </div>\n )}\n {!editorState.hideDefaultToolbar && (\n <div className={classes.defaultToolbar} tabIndex=\"1\">\n <div className={classes.buttonsContainer}>\n {toolbarButtons\n .filter((btn) => !btn.hidden?.(editorState))\n .map((btn, index) => {\n const disabled = btn.isDisabled?.(editorState);\n const active = btn.isActive?.(editorState);\n\n return (\n <button\n key={index}\n disabled={disabled}\n onClick={(e) => {\n e.preventDefault();\n btn.onClick(editor);\n }}\n className={classNames(classes.button, { [classes.active]: active })}\n >\n {btn.icon}\n </button>\n );\n })}\n </div>\n {activePlugins?.includes('responseArea') && (\n <button\n onClick={() => {\n editor.chain().focus().insertResponseArea(responseAreaProps.type).run();\n }}\n className={classes.button}\n >\n <ToolbarIcon />\n </button>\n )}\n\n {toolbarOpts.showDone && (\n <DoneButton\n onClick={() => {\n onChange?.(editor.getHTML());\n editor.commands.blur();\n }}\n />\n )}\n </div>\n )}\n {showPicker && (\n <CharacterPicker\n editor={editor}\n opts={{\n ...showPicker,\n renderPopOver: (ev, ch) => console.log('Show popover', ch),\n closePopOver: () => console.log('Close popover'),\n }}\n onClose={() => setShowPicker(false)}\n />\n )}\n </div>\n );\n}\n\n// Wrapper component that provides classes object using styled API\nconst StyledMenuBar = (props) => {\n const theme = useTheme();\n\n const classes = {\n defaultToolbar: 'defaultToolbar',\n buttonsContainer: 'buttonsContainer',\n button: 'button',\n active: 'active',\n disabled: 'disabled',\n isActive: 'isActive',\n toolbar: 'toolbar',\n toolbarWithNoDone: 'toolbarWithNoDone',\n toolbarTop: 'toolbarTop',\n toolbarRight: 'toolbarRight',\n fullWidth: 'fullWidth',\n hidden: 'hidden',\n autoWidth: 'autoWidth',\n focused: 'focused',\n iconRoot: 'iconRoot',\n label: 'label',\n shared: 'shared',\n };\n\n return (\n <StyledMenuBarRoot>\n <MenuBar {...props} classes={classes} />\n </StyledMenuBarRoot>\n );\n};\n\nconst StyledMenuBarRoot = styled('div')(({ theme }) => ({\n '& .defaultToolbar': {\n display: 'flex',\n width: '100%',\n justifyContent: 'space-between',\n },\n '& .buttonsContainer': {\n alignItems: 'center',\n display: 'flex',\n width: '100%',\n },\n '& .button': {\n color: 'grey',\n display: 'inline-flex',\n padding: '2px',\n background: 'none',\n border: 'none',\n cursor: 'pointer',\n '&:hover': {\n color: 'black',\n },\n '&:focus': {\n outline: `2px solid ${theme.palette.grey[700]}`,\n },\n },\n '& .active': {\n color: 'black',\n },\n '& .disabled': {\n opacity: 0.7,\n cursor: 'not-allowed',\n '& :hover': {\n color: 'grey',\n },\n },\n '& .isActive': {\n background: 'var(--purple)',\n color: 'var(--white)',\n },\n '& .toolbar': {\n position: 'absolute',\n zIndex: 20,\n cursor: 'pointer',\n justifyContent: 'space-between',\n background: 'var(--editable-html-toolbar-bg, #efefef)',\n minWidth: '280px',\n margin: '5px 0 0 0',\n padding: '2px',\n boxShadow:\n '0px 1px 5px 0px rgba(0, 0, 0, 0.2), 0px 2px 2px 0px rgba(0, 0, 0, 0.14), 0px 3px 1px -2px rgba(0, 0, 0, 0.12)',\n boxSizing: 'border-box',\n display: 'flex',\n opacity: 0,\n pointerEvents: 'none',\n },\n '& .toolbarWithNoDone': {\n minWidth: '265px',\n },\n '& .toolbarTop': {\n top: '-45px',\n },\n '& .toolbarRight': {\n right: 0,\n },\n '& .fullWidth': {\n width: '100%',\n },\n '& .hidden': {\n visibility: 'hidden',\n },\n '& .autoWidth': {\n width: 'auto',\n },\n '& .focused': {\n opacity: 1,\n pointerEvents: 'auto',\n },\n '& .iconRoot': {\n width: '28px',\n height: '28px',\n padding: '4px',\n verticalAlign: 'top',\n },\n '& .label': {\n color: 'var(--editable-html-toolbar-check, #00bb00)',\n },\n '& .shared': {\n display: 'flex',\n },\n}));\n\nexport default StyledMenuBar;\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"MenuBar.js","names":["_react","_interopRequireWildcard","require","_classnames","_interopRequireDefault","_styles","_prosemirrorState","_FormatBold","_FormatItalic","_FormatStrikethrough","_Code","_GridOn","_FormatListBulleted","_FormatListNumbered","_FormatUnderlined","_Functions","_Image","_Redo","_Undo","_FormatQuote","_Theaters","_VolumeUp","_BorderAll","_Delete","_react2","_constants","_ToolbarIcon","_characterUtils","_TextAlign","_CssIcon","_TableIcons","_CharacterPicker","_doneButton","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","_typeof","has","get","set","_t","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","ownKeys","keys","getOwnPropertySymbols","filter","enumerable","push","apply","_objectSpread","arguments","length","forEach","_defineProperty2","getOwnPropertyDescriptors","defineProperties","SuperscriptIcon","createElement","xmlns","height","viewBox","width","fill","d","SubscriptIcon","HeadingIcon","style","MenuBar","_ref","_editorState$currentN","editor","classes","activePlugins","toolOpts","toolbarOpts","responseAreaProps","onChange","autoWidthToolbar","_useState","useState","_useState2","_slicedToArray2","showPicker","setShowPicker","editorState","useEditorState","selector","ctx","_ctx$editor","_ctx$editor2","_ctx$editor3","_ctx$editor4","_ctx$editor5","_ctx$editor6","_ctx$editor7","_ctx$editor$_toolbarO","_ctx$editor8","_ctx$editor$isActive","_ctx$editor$can$chain","_ctx$editor$isActive2","_ref3","_ctx$editor$getAttrib","_ctx$editor$can$chain2","_ctx$editor$isActive3","_ctx$editor$can$chain3","_ctx$editor$isActive4","_ctx$editor$can$chain4","_ctx$editor$isActive5","_ctx$editor$can$chain5","_ctx$editor$can$chain6","_ctx$editor$isActive6","_ctx$editor$isActive7","_ctx$editor$isActive8","_ctx$editor$isActive9","_ctx$editor$isActive0","_ctx$editor$isActive1","_ctx$editor$isActive10","_ctx$editor$isActive11","_ctx$editor$isActive12","_ctx$editor$isActive13","_ctx$editor$isActive14","_ctx$editor$isActive15","_ctx$editor$isActive16","_ctx$editor$isActive17","_ctx$editor$isActive18","_ctx$editor$can$chain7","_ctx$editor$can$chain8","_ref2","state","selection","currentNode","commandManager","NodeSelection","node","hideDefaultToolbar","isActive","hasTextSelectionInTable","empty","isFocused","toolbarOpened","_toolbarOpened","isBold","canBold","can","chain","toggleBold","run","isTable","tableHasBorder","getAttributes","border","canTable","insertTable","isItalic","canItalic","toggleItalic","isStrike","canStrike","toggleStrike","isCode","canCode","toggleCode","canClearMarks","unsetAllMarks","isUnderline","isSubScript","isSuperScript","isParagraph","isHeading1","level","isHeading2","isHeading3","isHeadingParagraph","isHeading4","isHeading5","isHeading6","isBulletList","isOrderedList","isCodeBlock","isBlockquote","canUndo","undo","canRedo","redo","hasDoneButton","autoWidth","names","classNames","toolbar","PIE_TOOLBAR__CLASS","toolbarWithNoDone","toolbarTop","position","toolbarRight","alignment","focused","alwaysVisible","fullWidth","hidden","isHidden","customStyles","minWidth","undefined","handleMouseDown","preventDefault","toolbarButtons","useMemo","icon","onClick","focus","rows","cols","withHeaderRow","includes","isDisabled","AddRow","addRowAfter","RemoveRow","deleteRow","AddColumn","addColumnAfter","RemoveColumn","deleteColumn","RemoveTable","deleteTable","tableAttrs","update","commands","updateAttributes","toggleUnderline","toggleSubscript","toggleSuperscript","setImageUploadNode","insertMedia","type","tag","openCSSClassDialog","toggleBlockquote","toggleHeadingParagraph","insertMath","CharacterIcon","letter","spanishConfig","p","specialConfig","toggleBulletList","toggleOrderedList","isDragInTheBlankSelected","name","className","onMouseDown","defaultToolbar","tabIndex","buttonsContainer","button","deleteSelection","getHTML","btn","_btn$hidden","map","index","_btn$isDisabled","_btn$isActive","disabled","active","key","insertResponseArea","ToolbarIcon","showDone","DoneButton","blur","CharacterPicker","opts","renderPopOver","ev","ch","console","log","closePopOver","onClose","StyledMenuBar","props","theme","useTheme","iconRoot","label","shared","StyledMenuBarRoot","_extends2","styled","_ref4","display","justifyContent","alignItems","color","padding","background","cursor","outline","concat","palette","grey","opacity","zIndex","margin","boxShadow","boxSizing","pointerEvents","top","right","visibility","verticalAlign","_default","exports"],"sources":["../../src/components/MenuBar.jsx"],"sourcesContent":["import React, { useMemo, useState } from 'react';\nimport classNames from 'classnames';\nimport { styled, useTheme } from '@mui/material/styles';\nimport { NodeSelection } from 'prosemirror-state';\n\nimport Bold from '@mui/icons-material/FormatBold';\nimport Italic from '@mui/icons-material/FormatItalic';\nimport Strikethrough from '@mui/icons-material/FormatStrikethrough';\nimport Code from '@mui/icons-material/Code';\nimport GridOn from '@mui/icons-material/GridOn';\nimport BulletedListIcon from '@mui/icons-material/FormatListBulleted';\nimport NumberedListIcon from '@mui/icons-material/FormatListNumbered';\nimport Underline from '@mui/icons-material/FormatUnderlined';\nimport Functions from '@mui/icons-material/Functions';\nimport ImageIcon from '@mui/icons-material/Image';\nimport Redo from '@mui/icons-material/Redo';\nimport Undo from '@mui/icons-material/Undo';\nimport FormatQuote from '@mui/icons-material/FormatQuote';\nimport TheatersIcon from '@mui/icons-material/Theaters';\nimport VolumeUpIcon from '@mui/icons-material/VolumeUp';\nimport BorderAll from '@mui/icons-material/BorderAll';\nimport Delete from '@mui/icons-material/Delete';\n\nimport { useEditorState } from '@tiptap/react';\n\nimport { PIE_TOOLBAR__CLASS } from '../constants';\nimport { ToolbarIcon } from './respArea/ToolbarIcon';\nimport { spanishConfig, specialConfig } from './characters/characterUtils';\nimport TextAlignIcon from './icons/TextAlign';\nimport CSSIcon from './icons/CssIcon';\nimport { AddColumn, AddRow, RemoveColumn, RemoveRow, RemoveTable } from './icons/TableIcons';\n\nimport { CharacterIcon, CharacterPicker } from './CharacterPicker';\nimport { DoneButton } from './common/done-button';\n\nconst SuperscriptIcon = () => (\n <svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\" viewBox=\"0 0 24 24\" width=\"24px\" fill=\"none\">\n <path\n d=\"M22,7h-2v1h3v1h-4V7c0-0.55,0.45-1,1-1h2V5h-3V4h3c0.55,0,1,0.45,1,1v1C23,6.55,22.55,7,22,7z M5.88,20h2.66l3.4-5.42h0.12 l3.4,5.42h2.66l-4.65-7.27L17.81,6h-2.68l-3.07,4.99h-0.12L8.85,6H6.19l4.32,6.73L5.88,20z\"\n fill=\"currentColor\"\n />\n </svg>\n);\n\nconst SubscriptIcon = () => (\n <svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\" viewBox=\"0 0 24 24\" width=\"24px\" fill=\"none\">\n <path\n d=\"M22,18h-2v1h3v1h-4v-2c0-0.55,0.45-1,1-1h2v-1h-3v-1h3c0.55,0,1,0.45,1,1v1C23,17.55,22.55,18,22,18z M5.88,18h2.66 l3.4-5.42h0.12l3.4,5.42h2.66l-4.65-7.27L17.81,4h-2.68l-3.07,4.99h-0.12L8.85,4H6.19l4.32,6.73L5.88,18z\"\n fill=\"currentColor\"\n />\n </svg>\n);\n\nconst HeadingIcon = () => (\n <svg\n width=\"30\"\n height=\"28\"\n viewBox=\"0 0 30 28\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n style={{ width: '20px', height: '18px' }}\n >\n <path\n d=\"M27 4V24H29C29.5 24 30 24.5 30 25V27C30 27.5625 29.5 28 29 28H19C18.4375 28 18 27.5625 18 27V25C18 24.5 18.4375 24 19 24H21V16H9V24H11C11.5 24 12 24.5 12 25V27C12 27.5625 11.5 28 11 28H1C0.4375 28 0 27.5625 0 27V25C0 24.5 0.4375 24 1 24H3V4H1C0.4375 4 0 3.5625 0 3V1C0 0.5 0.4375 0 1 0H11C11.5 0 12 0.5 12 1V3C12 3.5625 11.5 4 11 4H9V12H21V4H19C18.4375 4 18 3.5625 18 3V1C18 0.5 18.4375 0 19 0H29C29.5 0 30 0.5 30 1V3C30 3.5625 29.5 4 29 4H27Z\"\n fill=\"currentColor\"\n />\n </svg>\n);\n\nfunction MenuBar({\n editor,\n classes,\n activePlugins,\n toolbarOpts: toolOpts,\n responseAreaProps,\n onChange,\n autoWidthToolbar,\n}) {\n const [showPicker, setShowPicker] = useState(false);\n const toolbarOpts = toolOpts ?? {};\n\n const editorState = useEditorState({\n editor,\n selector: (ctx) => {\n const { selection } = ctx.editor?.state || {};\n\n let currentNode;\n\n if (!ctx.editor?.commandManager) {\n return {};\n }\n\n if (selection instanceof NodeSelection) {\n currentNode = selection.node; // the selected node\n }\n\n const hideDefaultToolbar =\n ctx.editor?.isActive('math') ||\n ctx.editor?.isActive('explicit_constructed_response') ||\n ctx.editor?.isActive('imageUploadNode') ||\n ctx.editor?.isActive('drag_in_the_blank');\n\n const hasTextSelectionInTable = selection && selection.empty === false && ctx.editor.isActive('table');\n\n return {\n currentNode,\n hideDefaultToolbar,\n hasTextSelectionInTable,\n isFocused: ctx.editor?.isFocused,\n toolbarOpened: ctx.editor?._toolbarOpened ?? false,\n isBold: ctx.editor.isActive('bold') ?? false,\n canBold: ctx.editor.can().chain().toggleBold().run() ?? false,\n isTable: ctx.editor.isActive('table') ?? false,\n tableHasBorder: ctx.editor.getAttributes('table')?.border === '1' ?? false,\n canTable: ctx.editor.can().chain().insertTable().run() ?? false,\n isItalic: ctx.editor.isActive('italic') ?? false,\n canItalic: ctx.editor.can().chain().toggleItalic().run() ?? false,\n isStrike: ctx.editor.isActive('strike') ?? false,\n canStrike: ctx.editor.can().chain().toggleStrike().run() ?? false,\n isCode: ctx.editor.isActive('code') ?? false,\n canCode: ctx.editor.can().chain().toggleCode().run() ?? false,\n canClearMarks: ctx.editor.can().chain().unsetAllMarks().run() ?? false,\n isUnderline: ctx.editor.isActive('underline') ?? false,\n isSubScript: ctx.editor.isActive('subscript') ?? false,\n isSuperScript: ctx.editor.isActive('superscript') ?? false,\n isParagraph: ctx.editor.isActive('paragraph') ?? false,\n isHeading1: ctx.editor.isActive('heading', { level: 1 }) ?? false,\n isHeading2: ctx.editor.isActive('heading', { level: 2 }) ?? false,\n isHeading3: ctx.editor.isActive('heading', { level: 3 }) ?? false,\n isHeadingParagraph: ctx.editor.isActive('headingParagraph') ?? false,\n isHeading4: ctx.editor.isActive('heading', { level: 4 }) ?? false,\n isHeading5: ctx.editor.isActive('heading', { level: 5 }) ?? false,\n isHeading6: ctx.editor.isActive('heading', { level: 6 }) ?? false,\n isBulletList: ctx.editor.isActive('bulletList') ?? false,\n isOrderedList: ctx.editor.isActive('orderedList') ?? false,\n isCodeBlock: ctx.editor.isActive('codeBlock') ?? false,\n isBlockquote: ctx.editor.isActive('blockquote') ?? false,\n canUndo: ctx.editor.can().chain().undo().run() ?? false,\n canRedo: ctx.editor.can().chain().redo().run() ?? false,\n };\n },\n });\n\n const hasDoneButton = false;\n const autoWidth = !!autoWidthToolbar;\n\n const names = classNames(classes.toolbar, PIE_TOOLBAR__CLASS, {\n [classes.toolbarWithNoDone]: !hasDoneButton,\n [classes.toolbarTop]: toolbarOpts.position === 'top',\n [classes.toolbarRight]: toolbarOpts.alignment === 'right',\n [classes.focused]:\n toolbarOpts.alwaysVisible ||\n (editorState.isFocused && !editorState.toolbarOpened && !editorState.hideDefaultToolbar),\n [classes.autoWidth]: autoWidth,\n [classes.fullWidth]: !autoWidth,\n [classes.hidden]: toolbarOpts.isHidden === true,\n });\n\n const customStyles = toolbarOpts.minWidth !== undefined ? { minWidth: toolbarOpts.minWidth } : {};\n\n const handleMouseDown = (e) => {\n e.preventDefault();\n };\n\n const toolbarButtons = useMemo(\n () => [\n {\n icon: <GridOn />,\n onClick: (editor) => editor.chain().focus().insertTable({ rows: 2, cols: 2, withHeaderRow: false }).run(),\n hidden: (state) => !activePlugins?.includes('table') || state.isTable,\n isActive: (state) => state.isTable,\n isDisabled: (state) => !state.canTable,\n },\n {\n icon: <AddRow />,\n onClick: (editor) => editor.chain().focus().addRowAfter().run(),\n hidden: (state) => !(state.isTable && !state.hasTextSelectionInTable),\n isActive: (state) => state.isTable,\n isDisabled: (state) => !state.canTable,\n },\n {\n icon: <RemoveRow />,\n onClick: (editor) => editor.chain().focus().deleteRow().run(),\n hidden: (state) => !(state.isTable && !state.hasTextSelectionInTable),\n isActive: (state) => state.isTable,\n isDisabled: (state) => !state.canTable,\n },\n {\n icon: <AddColumn />,\n onClick: (editor) => editor.chain().focus().addColumnAfter().run(),\n hidden: (state) => !(state.isTable && !state.hasTextSelectionInTable),\n isActive: (state) => state.isTable,\n isDisabled: (state) => !state.canTable,\n },\n {\n icon: <RemoveColumn />,\n onClick: (editor) => editor.chain().focus().deleteColumn().run(),\n hidden: (state) => !(state.isTable && !state.hasTextSelectionInTable),\n isActive: (state) => state.isTable,\n isDisabled: (state) => !state.canTable,\n },\n {\n icon: <RemoveTable />,\n onClick: (editor) => editor.chain().focus().deleteTable().run(),\n hidden: (state) => !(state.isTable && !state.hasTextSelectionInTable),\n isActive: (state) => state.isTable,\n isDisabled: (state) => !state.canTable,\n },\n {\n icon: <BorderAll />,\n onClick: (editor) => {\n const tableAttrs = editor.getAttributes('table');\n\n const update = {\n ...tableAttrs,\n border: tableAttrs.border !== '0' ? '0' : '1',\n };\n\n editor.commands.updateAttributes('table', update);\n },\n hidden: (state) => !(state.isTable && !state.hasTextSelectionInTable),\n isActive: (state) => state.tableHasBorder,\n isDisabled: (state) => !state.canTable,\n },\n {\n icon: <Bold />,\n onClick: (editor) => editor.chain().focus().toggleBold().run(),\n hidden: () => !activePlugins?.includes('bold'),\n isActive: (state) => state.isBold,\n isDisabled: (state) => !state.canBold,\n },\n {\n icon: <Italic />,\n onClick: (editor) => editor.chain().focus().toggleItalic().run(),\n hidden: () => !activePlugins?.includes('italic'),\n isActive: (state) => state.isItalic,\n isDisabled: (state) => !state.canItalic,\n },\n {\n icon: <Strikethrough />,\n onClick: (editor) => editor.chain().focus().toggleStrike().run(),\n hidden: () => !activePlugins?.includes('strikethrough'),\n isActive: (state) => state.isStrike,\n isDisabled: (state) => !state.canStrike,\n },\n {\n icon: <Code />,\n onClick: (editor) => editor.chain().focus().toggleCode().run(),\n hidden: () => !activePlugins?.includes('code'),\n isActive: (state) => state.isCode,\n isDisabled: (state) => !state.canCode,\n },\n {\n icon: <Underline />,\n onClick: (editor) => editor.chain().focus().toggleUnderline().run(),\n hidden: () => !activePlugins?.includes('underline'),\n isActive: (state) => state.isUnderline,\n },\n {\n icon: <SubscriptIcon />,\n onClick: (editor) => editor.chain().focus().toggleSubscript().run(),\n hidden: () => !activePlugins?.includes('subscript'),\n isActive: (state) => state.isSubScript,\n },\n {\n icon: <SuperscriptIcon />,\n onClick: (editor) => editor.chain().focus().toggleSuperscript().run(),\n hidden: () => !activePlugins?.includes('superscript'),\n isActive: (state) => state.isSuperScript,\n },\n {\n icon: <ImageIcon />,\n hidden: () => !activePlugins?.includes('image'),\n onClick: (editor) => editor.chain().focus().setImageUploadNode().run(),\n },\n {\n icon: <TheatersIcon />,\n hidden: () => !activePlugins?.includes('video'),\n onClick: (editor) => editor.chain().focus().insertMedia({ type: 'video' }).run(),\n },\n {\n icon: <VolumeUpIcon />,\n hidden: () => !activePlugins?.includes('audio'),\n onClick: (editor) => editor.chain().focus().insertMedia({ type: 'audio', tag: 'audio' }).run(),\n },\n {\n icon: <CSSIcon />,\n hidden: () => !activePlugins?.includes('css'),\n onClick: (editor) => editor.commands.openCSSClassDialog(),\n },\n {\n icon: <FormatQuote />,\n hidden: () => !activePlugins?.includes('blockquote'),\n onClick: (editor) => editor.chain().focus().toggleBlockquote().run(),\n isActive: (state) => state.isBlockquote,\n },\n {\n icon: <HeadingIcon />,\n hidden: () => !activePlugins?.includes('h3'),\n onClick: (editor) => editor.chain().focus().toggleHeadingParagraph().run(),\n isActive: (state) => state.isHeadingParagraph,\n },\n {\n icon: <Functions />,\n hidden: () => !activePlugins?.includes('math'),\n onClick: (editor) => editor.chain().focus().insertMath('').run(),\n },\n {\n icon: <CharacterIcon letter=\"ñ\" />,\n hidden: () => !activePlugins?.includes('languageCharacters'),\n onClick: () => setShowPicker(spanishConfig),\n },\n {\n icon: <CharacterIcon letter=\"€\" />,\n hidden: () => activePlugins?.filter((p) => p === 'languageCharacters').length !== 2,\n onClick: () => setShowPicker(specialConfig),\n },\n {\n icon: <TextAlignIcon editor={editor} />,\n hidden: () => !activePlugins?.includes('text-align'),\n onClick: () => {},\n },\n {\n icon: <BulletedListIcon />,\n hidden: () => !activePlugins?.includes('bulleted-list'),\n onClick: (editor) => editor.chain().focus().toggleBulletList().run(),\n isActive: (state) => state.isBulletList,\n },\n {\n icon: <NumberedListIcon />,\n hidden: () => !activePlugins?.includes('numbered-list'),\n onClick: (editor) => editor.chain().focus().toggleOrderedList().run(),\n isActive: (state) => state.isOrderedList,\n },\n {\n icon: <Undo />,\n hidden: () => !activePlugins?.includes('undo'),\n onClick: (editor) => editor.chain().focus().undo().run(),\n isDisabled: (state) => !state.canUndo,\n },\n {\n icon: <Redo />,\n hidden: () => !activePlugins?.includes('redo'),\n onClick: (editor) => editor.chain().focus().redo().run(),\n isDisabled: (state) => !state.canRedo,\n },\n ],\n [activePlugins, editor],\n );\n\n const isDragInTheBlankSelected =\n editorState.hideDefaultToolbar && editorState.currentNode?.type?.name === 'drag_in_the_blank';\n\n return (\n <div className={names} style={{ ...customStyles }} onMouseDown={handleMouseDown}>\n {isDragInTheBlankSelected && (\n <div className={classes.defaultToolbar} tabIndex=\"1\">\n <div className={classes.buttonsContainer}>\n <button\n type=\"button\"\n className={classes.button}\n onClick={(e) => {\n e.preventDefault();\n editor.chain().focus().deleteSelection().run();\n onChange?.(editor.getHTML());\n }}\n aria-label=\"Delete response area\"\n >\n <Delete />\n </button>\n </div>\n </div>\n )}\n {!editorState.hideDefaultToolbar && (\n <div className={classes.defaultToolbar} tabIndex=\"1\">\n <div className={classes.buttonsContainer}>\n {toolbarButtons\n .filter((btn) => !btn.hidden?.(editorState))\n .map((btn, index) => {\n const disabled = btn.isDisabled?.(editorState);\n const active = btn.isActive?.(editorState);\n\n return (\n <button\n key={index}\n disabled={disabled}\n onClick={(e) => {\n e.preventDefault();\n btn.onClick(editor);\n }}\n className={classNames(classes.button, { [classes.active]: active })}\n >\n {btn.icon}\n </button>\n );\n })}\n </div>\n {activePlugins?.includes('responseArea') && (\n <button\n onClick={() => {\n editor.chain().focus().insertResponseArea(responseAreaProps.type).run();\n }}\n className={classes.button}\n >\n <ToolbarIcon />\n </button>\n )}\n\n {toolbarOpts.showDone && (\n <DoneButton\n onClick={() => {\n onChange?.(editor.getHTML());\n editor.commands.blur();\n }}\n />\n )}\n </div>\n )}\n {showPicker && (\n <CharacterPicker\n editor={editor}\n opts={{\n ...showPicker,\n renderPopOver: (ev, ch) => console.log('Show popover', ch),\n closePopOver: () => console.log('Close popover'),\n }}\n onClose={() => setShowPicker(false)}\n />\n )}\n </div>\n );\n}\n\n// Wrapper component that provides classes object using styled API\nconst StyledMenuBar = (props) => {\n const theme = useTheme();\n\n const classes = {\n defaultToolbar: 'defaultToolbar',\n buttonsContainer: 'buttonsContainer',\n button: 'toolbarButton',\n active: 'active',\n disabled: 'disabled',\n isActive: 'isActive',\n toolbar: 'toolbar',\n toolbarWithNoDone: 'toolbarWithNoDone',\n toolbarTop: 'toolbarTop',\n toolbarRight: 'toolbarRight',\n fullWidth: 'fullWidth',\n hidden: 'hidden',\n autoWidth: 'autoWidth',\n focused: 'focused',\n iconRoot: 'iconRoot',\n label: 'label',\n shared: 'shared',\n };\n\n return (\n <StyledMenuBarRoot>\n <MenuBar {...props} classes={classes} />\n </StyledMenuBarRoot>\n );\n};\n\nconst StyledMenuBarRoot = styled('div')(({ theme }) => ({\n '& .defaultToolbar': {\n display: 'flex',\n width: '100%',\n justifyContent: 'space-between',\n },\n '& .buttonsContainer': {\n alignItems: 'center',\n display: 'flex',\n width: '100%',\n },\n '& .toolbarButton': {\n color: 'grey',\n display: 'inline-flex',\n padding: '2px',\n background: 'none',\n border: 'none',\n cursor: 'pointer',\n '&:hover': {\n color: 'black',\n },\n '&:focus': {\n outline: `2px solid ${theme.palette.grey[700]}`,\n },\n },\n '& .active': {\n color: 'black',\n },\n '& .disabled': {\n opacity: 0.7,\n cursor: 'not-allowed',\n '& :hover': {\n color: 'grey',\n },\n },\n '& .isActive': {\n background: 'var(--purple)',\n color: 'var(--white)',\n },\n '& .toolbar': {\n position: 'absolute',\n zIndex: 20,\n cursor: 'pointer',\n justifyContent: 'space-between',\n background: 'var(--editable-html-toolbar-bg, #efefef)',\n minWidth: '280px',\n margin: '5px 0 0 0',\n padding: '2px',\n boxShadow:\n '0px 1px 5px 0px rgba(0, 0, 0, 0.2), 0px 2px 2px 0px rgba(0, 0, 0, 0.14), 0px 3px 1px -2px rgba(0, 0, 0, 0.12)',\n boxSizing: 'border-box',\n display: 'flex',\n opacity: 0,\n pointerEvents: 'none',\n },\n '& .toolbarWithNoDone': {\n minWidth: '265px',\n },\n '& .toolbarTop': {\n top: '-45px',\n },\n '& .toolbarRight': {\n right: 0,\n },\n '& .fullWidth': {\n width: '100%',\n },\n '& .hidden': {\n visibility: 'hidden',\n },\n '& .autoWidth': {\n width: 'auto',\n },\n '& .focused': {\n opacity: 1,\n pointerEvents: 'auto',\n },\n '& .iconRoot': {\n width: '28px',\n height: '28px',\n padding: '4px',\n verticalAlign: 'top',\n },\n '& .label': {\n color: 'var(--editable-html-toolbar-check, #00bb00)',\n },\n '& .shared': {\n display: 'flex',\n },\n}));\n\nexport default StyledMenuBar;\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -13,6 +13,7 @@ var _react2 = require("@tiptap/react");
|
|
|
13
13
|
var _reactDom = _interopRequireDefault(require("react-dom"));
|
|
14
14
|
var _propTypes = _interopRequireDefault(require("prop-types"));
|
|
15
15
|
var _customToolbarWrapper = _interopRequireDefault(require("../../extensions/custom-toolbar-wrapper"));
|
|
16
|
+
var _toolbar = require("../../utils/toolbar");
|
|
16
17
|
function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function _interopRequireWildcard(e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, "default": e }; if (null === e || "object" != _typeof(e) && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (var _t in e) "default" !== _t && {}.hasOwnProperty.call(e, _t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, _t)) && (i.get || i.set) ? o(f, _t, i) : f[_t] = e[_t]); return f; })(e, t); }
|
|
17
18
|
var ExplicitConstructedResponse = function ExplicitConstructedResponse(props) {
|
|
18
19
|
var editor = props.editor,
|
|
@@ -118,7 +119,7 @@ var ExplicitConstructedResponse = function ExplicitConstructedResponse(props) {
|
|
|
118
119
|
tr["delete"](pos, pos + node.nodeSize);
|
|
119
120
|
// Prevent the debounced onBlur/onDone from firing into the
|
|
120
121
|
// now-deleted node's stale position
|
|
121
|
-
editor
|
|
122
|
+
(0, _toolbar.setToolbarOpened)(editor, false);
|
|
122
123
|
editor.view.dispatch(tr);
|
|
123
124
|
setShowToolbar(false);
|
|
124
125
|
editor.commands.focus();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ExplicitConstructedResponse.js","names":["_react","_interopRequireWildcard","require","_react2","_reactDom","_interopRequireDefault","_propTypes","_customToolbarWrapper","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","_typeof","has","get","set","_t","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","ExplicitConstructedResponse","props","editor","node","getPos","options","selected","attributes","attrs","value","respAreaToolbar","errorFn","error","pos","_useState","useState","_useState2","_slicedToArray2","showToolbar","setShowToolbar","EcrToolbar","toolbarRef","useRef","_errorValue$respIndex","errorValue","respIndex","parseInt","index","useEffect","selection","state","onlyThisNodeSelected","from","nodeSize","to","handleClickOutside","event","insideCharacterPicker","target","closest","current","contains","document","addEventListener","removeEventListener","createElement","NodeViewWrapper","className","style","display","minHeight","position","cursor","_extends2","width","height","backgroundColor","border","concat","boxSizing","borderRadius","overflow","padding","margin","minWidth","visibility","onClick","dangerouslySetInnerHTML","__html","Fragment","ref","zIndex","_tiptapContainerEl","ReactDOM","createPortal","deletable","toolbarOpts","autoWidth","top","left","right","onDelete","tr","_toolbarOpened","view","dispatch","commands","focus","showDone","propTypes","PropTypes","object","any","string","isFocused","bool","_default","exports"],"sources":["../../../src/components/respArea/ExplicitConstructedResponse.jsx"],"sourcesContent":["import React, { useEffect, useRef, useState } from 'react';\nimport { NodeViewWrapper } from '@tiptap/react';\nimport ReactDOM from 'react-dom';\nimport PropTypes from 'prop-types';\nimport CustomToolbarWrapper from '../../extensions/custom-toolbar-wrapper';\n\nconst ExplicitConstructedResponse = (props) => {\n const { editor, node, getPos, options, selected } = props;\n const { attrs: attributes } = node;\n const { value } = attributes;\n const { respAreaToolbar, error: errorFn } = options;\n const pos = getPos();\n const [showToolbar, setShowToolbar] = useState(false);\n const EcrToolbar = respAreaToolbar([node, pos], editor, () => {});\n const toolbarRef = useRef(null);\n\n let error;\n\n if (errorFn) {\n const errorValue = errorFn();\n const respIndex = parseInt(attributes.index, 10);\n\n error = !!errorValue?.[respIndex]?.[0];\n }\n\n useEffect(() => {\n const { selection } = editor.state;\n const onlyThisNodeSelected = selection.from + node.nodeSize === selection.to;\n\n if (selected) {\n if (onlyThisNodeSelected) {\n setShowToolbar(selected);\n }\n } else {\n setShowToolbar(selected);\n }\n }, [editor, node, selected]);\n\n useEffect(() => {\n const handleClickOutside = (event) => {\n const insideCharacterPicker =\n event.target.closest('.insert-character-dialog') || event.target.closest('[data-toolbar-for]');\n\n if (\n !insideCharacterPicker &&\n toolbarRef.current &&\n !toolbarRef.current.contains(event.target) &&\n !event.target.closest('[data-inline-node]')\n ) {\n setShowToolbar(false);\n }\n };\n\n if (showToolbar) {\n document.addEventListener('mousedown', handleClickOutside);\n } else {\n document.removeEventListener('mousedown', handleClickOutside);\n }\n\n return () => document.removeEventListener('mousedown', handleClickOutside);\n }, [showToolbar]);\n\n return (\n <NodeViewWrapper\n className=\"drag-in-the-blank\"\n data-selected={selected}\n style={{\n display: 'inline-flex',\n minHeight: '55px',\n position: 'relative',\n cursor: 'pointer',\n }}\n >\n <div\n {...attributes}\n style={{\n display: 'inline-flex',\n width: '100%',\n minHeight: '46px',\n height: '46px',\n backgroundColor: '#FFF',\n border: `1px solid ${error ? 'red' : '#C0C3CF'}`,\n boxSizing: 'border-box',\n borderRadius: '4px',\n overflow: 'hidden',\n padding: '12px 21px',\n margin: '0 4px',\n minWidth: '178px',\n visibility: showToolbar ? 'hidden' : 'visible',\n }}\n onClick={() => setShowToolbar(true)}\n dangerouslySetInnerHTML={{\n __html: value || '<div> </div>',\n }}\n />\n {showToolbar && (\n <React.Fragment>\n <div ref={toolbarRef} className=\"absolute z-50 bg-white shadow-lg rounded p-2\" style={{ zIndex: 1 }}>\n <EcrToolbar />\n </div>\n {editor._tiptapContainerEl &&\n ReactDOM.createPortal(\n <CustomToolbarWrapper\n deletable\n toolbarOpts={{ minWidth: 'auto' }}\n autoWidth\n style={{ top: -40, left: 0, right: 0 }}\n onDelete={() => {\n const { tr } = editor.state;\n tr.delete(pos, pos + node.nodeSize);\n // Prevent the debounced onBlur/onDone from firing into the\n // now-deleted node's stale position\n editor._toolbarOpened = false;\n editor.view.dispatch(tr);\n setShowToolbar(false);\n editor.commands.focus();\n }}\n showDone={false}\n />,\n editor._tiptapContainerEl,\n )}\n </React.Fragment>\n )}\n </NodeViewWrapper>\n );\n};\n\nExplicitConstructedResponse.propTypes = {\n attributes: PropTypes.object,\n error: PropTypes.any,\n value: PropTypes.string,\n isFocused: PropTypes.bool,\n};\n\nexport default ExplicitConstructedResponse;\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"ExplicitConstructedResponse.js","names":["_react","_interopRequireWildcard","require","_react2","_reactDom","_interopRequireDefault","_propTypes","_customToolbarWrapper","_toolbar","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","_typeof","has","get","set","_t","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","ExplicitConstructedResponse","props","editor","node","getPos","options","selected","attributes","attrs","value","respAreaToolbar","errorFn","error","pos","_useState","useState","_useState2","_slicedToArray2","showToolbar","setShowToolbar","EcrToolbar","toolbarRef","useRef","_errorValue$respIndex","errorValue","respIndex","parseInt","index","useEffect","selection","state","onlyThisNodeSelected","from","nodeSize","to","handleClickOutside","event","insideCharacterPicker","target","closest","current","contains","document","addEventListener","removeEventListener","createElement","NodeViewWrapper","className","style","display","minHeight","position","cursor","_extends2","width","height","backgroundColor","border","concat","boxSizing","borderRadius","overflow","padding","margin","minWidth","visibility","onClick","dangerouslySetInnerHTML","__html","Fragment","ref","zIndex","_tiptapContainerEl","ReactDOM","createPortal","deletable","toolbarOpts","autoWidth","top","left","right","onDelete","tr","setToolbarOpened","view","dispatch","commands","focus","showDone","propTypes","PropTypes","object","any","string","isFocused","bool","_default","exports"],"sources":["../../../src/components/respArea/ExplicitConstructedResponse.jsx"],"sourcesContent":["import React, { useEffect, useRef, useState } from 'react';\nimport { NodeViewWrapper } from '@tiptap/react';\nimport ReactDOM from 'react-dom';\nimport PropTypes from 'prop-types';\nimport CustomToolbarWrapper from '../../extensions/custom-toolbar-wrapper';\nimport { setToolbarOpened } from '../../utils/toolbar';\n\nconst ExplicitConstructedResponse = (props) => {\n const { editor, node, getPos, options, selected } = props;\n const { attrs: attributes } = node;\n const { value } = attributes;\n const { respAreaToolbar, error: errorFn } = options;\n const pos = getPos();\n const [showToolbar, setShowToolbar] = useState(false);\n const EcrToolbar = respAreaToolbar([node, pos], editor, () => {});\n const toolbarRef = useRef(null);\n\n let error;\n\n if (errorFn) {\n const errorValue = errorFn();\n const respIndex = parseInt(attributes.index, 10);\n\n error = !!errorValue?.[respIndex]?.[0];\n }\n\n useEffect(() => {\n const { selection } = editor.state;\n const onlyThisNodeSelected = selection.from + node.nodeSize === selection.to;\n\n if (selected) {\n if (onlyThisNodeSelected) {\n setShowToolbar(selected);\n }\n } else {\n setShowToolbar(selected);\n }\n }, [editor, node, selected]);\n\n useEffect(() => {\n const handleClickOutside = (event) => {\n const insideCharacterPicker =\n event.target.closest('.insert-character-dialog') || event.target.closest('[data-toolbar-for]');\n\n if (\n !insideCharacterPicker &&\n toolbarRef.current &&\n !toolbarRef.current.contains(event.target) &&\n !event.target.closest('[data-inline-node]')\n ) {\n setShowToolbar(false);\n }\n };\n\n if (showToolbar) {\n document.addEventListener('mousedown', handleClickOutside);\n } else {\n document.removeEventListener('mousedown', handleClickOutside);\n }\n\n return () => document.removeEventListener('mousedown', handleClickOutside);\n }, [showToolbar]);\n\n return (\n <NodeViewWrapper\n className=\"drag-in-the-blank\"\n data-selected={selected}\n style={{\n display: 'inline-flex',\n minHeight: '55px',\n position: 'relative',\n cursor: 'pointer',\n }}\n >\n <div\n {...attributes}\n style={{\n display: 'inline-flex',\n width: '100%',\n minHeight: '46px',\n height: '46px',\n backgroundColor: '#FFF',\n border: `1px solid ${error ? 'red' : '#C0C3CF'}`,\n boxSizing: 'border-box',\n borderRadius: '4px',\n overflow: 'hidden',\n padding: '12px 21px',\n margin: '0 4px',\n minWidth: '178px',\n visibility: showToolbar ? 'hidden' : 'visible',\n }}\n onClick={() => setShowToolbar(true)}\n dangerouslySetInnerHTML={{\n __html: value || '<div> </div>',\n }}\n />\n {showToolbar && (\n <React.Fragment>\n <div ref={toolbarRef} className=\"absolute z-50 bg-white shadow-lg rounded p-2\" style={{ zIndex: 1 }}>\n <EcrToolbar />\n </div>\n {editor._tiptapContainerEl &&\n ReactDOM.createPortal(\n <CustomToolbarWrapper\n deletable\n toolbarOpts={{ minWidth: 'auto' }}\n autoWidth\n style={{ top: -40, left: 0, right: 0 }}\n onDelete={() => {\n const { tr } = editor.state;\n tr.delete(pos, pos + node.nodeSize);\n // Prevent the debounced onBlur/onDone from firing into the\n // now-deleted node's stale position\n setToolbarOpened(editor, false);\n editor.view.dispatch(tr);\n setShowToolbar(false);\n editor.commands.focus();\n }}\n showDone={false}\n />,\n editor._tiptapContainerEl,\n )}\n </React.Fragment>\n )}\n </NodeViewWrapper>\n );\n};\n\nExplicitConstructedResponse.propTypes = {\n attributes: PropTypes.object,\n error: PropTypes.any,\n value: PropTypes.string,\n isFocused: PropTypes.bool,\n};\n\nexport default ExplicitConstructedResponse;\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -14,6 +14,7 @@ var _prosemirrorState = require("prosemirror-state");
|
|
|
14
14
|
var _RespArea = require("../icons/RespArea");
|
|
15
15
|
var _reactDom = _interopRequireDefault(require("react-dom"));
|
|
16
16
|
var _customToolbarWrapper = _interopRequireDefault(require("../../extensions/custom-toolbar-wrapper"));
|
|
17
|
+
var _toolbar = require("../../utils/toolbar");
|
|
17
18
|
function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function _interopRequireWildcard(e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, "default": e }; if (null === e || "object" != _typeof(e) && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (var _t in e) "default" !== _t && {}.hasOwnProperty.call(e, _t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, _t)) && (i.get || i.set) ? o(f, _t, i) : f[_t] = e[_t]); return f; })(e, t); }
|
|
18
19
|
var InlineDropdown = function InlineDropdown(props) {
|
|
19
20
|
var editor = props.editor,
|
|
@@ -192,7 +193,7 @@ var InlineDropdown = function InlineDropdown(props) {
|
|
|
192
193
|
tr["delete"](pos, pos + node.nodeSize);
|
|
193
194
|
// Prevent the debounced onBlur/onDone from firing into the
|
|
194
195
|
// now-deleted node's stale position
|
|
195
|
-
editor
|
|
196
|
+
(0, _toolbar.setToolbarOpened)(editor, false);
|
|
196
197
|
delete editor._holdInlineDropdownToolbarIndex;
|
|
197
198
|
editor.view.dispatch(tr);
|
|
198
199
|
setShowToolbar(false);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"InlineDropdown.js","names":["_react","_interopRequireWildcard","require","_propTypes","_interopRequireDefault","_react2","_prosemirrorState","_RespArea","_reactDom","_customToolbarWrapper","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","_typeof","has","get","set","_t","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","InlineDropdown","props","editor","node","getPos","options","selected","attributes","attrs","value","error","html","pos","toolbarRef","useRef","toolbarEditor","pendingCloseRequest","isHeld","_holdInlineDropdownToolbarIndex","String","index","_useState","useState","_useState2","_slicedToArray2","showToolbar","setShowToolbar","_useState3","top","left","_useState4","position","setPosition","closeToolbar","InlineDropdownToolbar","respAreaToolbar","reselectNode","tr","state","nodeAtPos","doc","nodeAt","selection","from","to","nodeSize","setSelection","NodeSelection","create","view","dispatch","requestClose","current","onToolbarCloseRequest","setTimeout","useEffect","onlyThisNodeSelected","bodyRect","document","body","getBoundingClientRect","start","coordsAtPos","Math","abs","handleClickOutside","event","_toolbarEditor$curren","insideSomeEditor","target","closest","dataset","toolbarFor","instanceId","_toolbarOpened","contains","addEventListener","removeEventListener","createElement","NodeViewWrapper","className","style","display","height","cursor","minWidth","background","border","boxSizing","borderRadius","margin","alignItems","onClick","flex","overflow","padding","whiteSpace","textOverflow","verticalAlign","dangerouslySetInnerHTML","__html","Chevron","direction","right","Fragment","ReactDOM","createPortal","ref","zIndex","editorCallback","instance","_tiptapContainerEl","deletable","toolbarOpts","autoWidth","onDelete","commands","focus","showDone","propTypes","PropTypes","object","selectedItem","oneOfType","string","_default","exports"],"sources":["../../../src/components/respArea/InlineDropdown.jsx"],"sourcesContent":["import React, { useEffect, useRef, useState } from 'react';\nimport PropTypes from 'prop-types';\nimport { NodeViewWrapper } from '@tiptap/react';\nimport { NodeSelection } from 'prosemirror-state';\nimport { Chevron } from '../icons/RespArea';\nimport ReactDOM from 'react-dom';\nimport CustomToolbarWrapper from '../../extensions/custom-toolbar-wrapper';\n\nconst InlineDropdown = (props) => {\n const { editor, node, getPos, options, selected } = props;\n const { attrs: attributes } = node;\n const { value, error } = attributes;\n const html = value || '<div> </div>';\n const pos = getPos();\n const toolbarRef = useRef(null);\n const toolbarEditor = useRef(null);\n const pendingCloseRequest = useRef(false);\n\n const isHeld = () =>\n editor._holdInlineDropdownToolbarIndex != null &&\n String(editor._holdInlineDropdownToolbarIndex) === String(node.attrs.index);\n\n const [showToolbar, setShowToolbar] = useState(false);\n const [position, setPosition] = useState({ top: 0, left: 0 });\n\n const closeToolbar = () => {\n if (isHeld()) {\n return;\n }\n\n setShowToolbar(false);\n };\n\n const InlineDropdownToolbar = options.respAreaToolbar([node, pos], editor, closeToolbar);\n\n const reselectNode = () => {\n const { tr } = editor.state;\n const nodeAtPos = tr.doc.nodeAt(pos);\n\n if (!nodeAtPos) {\n return;\n }\n\n const { selection } = tr;\n\n if (selection.from === pos && selection.to === pos + nodeAtPos.nodeSize) {\n return;\n }\n\n tr.setSelection(NodeSelection.create(tr.doc, pos));\n editor.view.dispatch(tr);\n };\n\n const requestClose = () => {\n if (pendingCloseRequest.current) {\n return;\n }\n\n if (options.onToolbarCloseRequest) {\n pendingCloseRequest.current = true;\n\n options.onToolbarCloseRequest(\n [node, pos],\n editor,\n () => {\n pendingCloseRequest.current = false;\n delete editor._holdInlineDropdownToolbarIndex;\n closeToolbar();\n },\n () => {\n pendingCloseRequest.current = false;\n delete editor._holdInlineDropdownToolbarIndex;\n setShowToolbar(true);\n setTimeout(reselectNode, 0);\n },\n );\n } else {\n closeToolbar();\n }\n };\n\n useEffect(() => {\n const { selection } = editor.state;\n const onlyThisNodeSelected = selection.from + node.nodeSize === selection.to;\n\n if (selected) {\n if (onlyThisNodeSelected) {\n setShowToolbar(true);\n }\n } else if (showToolbar) {\n requestClose();\n }\n }, [editor, node, selected]);\n\n useEffect(() => {\n // Calculate position relative to selection\n const bodyRect = document.body.getBoundingClientRect();\n const { from } = editor.state.selection;\n const start = editor.view.coordsAtPos(from);\n\n setPosition({\n top: start.top + Math.abs(bodyRect.top) + 40, // shift above\n left: start.left,\n });\n\n const handleClickOutside = (event) => {\n const insideSomeEditor = event.target.closest('[data-toolbar-for]');\n\n if (\n !event.target.closest('[data-inline-dropdown-toolbar]') &&\n (!insideSomeEditor || insideSomeEditor.dataset.toolbarFor !== toolbarEditor.current?.instanceId) &&\n !editor._toolbarOpened &&\n toolbarRef.current &&\n !toolbarRef.current.contains(event.target) &&\n !event.target.closest('[data-inline-node]')\n ) {\n requestClose();\n }\n };\n\n if (showToolbar) {\n document.addEventListener('mousedown', handleClickOutside);\n } else {\n document.removeEventListener('mousedown', handleClickOutside);\n }\n\n return () => document.removeEventListener('mousedown', handleClickOutside);\n }, [showToolbar]);\n\n return (\n <NodeViewWrapper\n className=\"inline-dropdown\"\n data-selected={selected}\n style={{\n display: 'inline-flex',\n height: '50px',\n cursor: 'pointer',\n }}\n >\n <div\n style={{\n display: 'inline-flex',\n minWidth: '178px',\n height: '36px',\n background: '#FFF',\n border: '1px solid #C0C3CF',\n boxSizing: 'border-box',\n borderRadius: '3px',\n margin: '0 2px',\n position: 'relative',\n alignItems: 'center',\n }}\n onClick={() => setShowToolbar(true)}\n >\n <div\n style={{\n flex: 1,\n overflow: 'hidden',\n padding: '0 25px 0 8px',\n whiteSpace: 'nowrap',\n textOverflow: 'ellipsis',\n }}\n >\n <span\n style={{\n display: 'inline-block',\n verticalAlign: 'middle',\n }}\n dangerouslySetInnerHTML={{ __html: html }}\n />\n </div>\n <Chevron direction=\"down\" style={{ position: 'absolute', top: '5px', right: '5px' }} />\n </div>\n {showToolbar && (\n <React.Fragment>\n {ReactDOM.createPortal(\n <div ref={toolbarRef} style={{ zIndex: 1 }}>\n <InlineDropdownToolbar\n editorCallback={(instance) => {\n toolbarEditor.current = instance;\n }}\n />\n </div>,\n document.body,\n )}\n\n {editor._tiptapContainerEl &&\n ReactDOM.createPortal(\n <CustomToolbarWrapper\n deletable\n toolbarOpts={{ minWidth: 'auto' }}\n autoWidth\n style={{ top: -40, left: 0, right: 0 }}\n onDelete={() => {\n const { tr } = editor.state;\n tr.delete(pos, pos + node.nodeSize);\n // Prevent the debounced onBlur/onDone from firing into the\n // now-deleted node's stale position\n editor._toolbarOpened = false;\n delete editor._holdInlineDropdownToolbarIndex;\n editor.view.dispatch(tr);\n setShowToolbar(false);\n editor.commands.focus();\n }}\n showDone={false}\n />,\n editor._tiptapContainerEl,\n )}\n </React.Fragment>\n )}\n </NodeViewWrapper>\n );\n};\n\nInlineDropdown.propTypes = {\n attributes: PropTypes.object,\n selectedItem: PropTypes.oneOfType([PropTypes.string, PropTypes.object]),\n};\n\nexport default InlineDropdown;\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"InlineDropdown.js","names":["_react","_interopRequireWildcard","require","_propTypes","_interopRequireDefault","_react2","_prosemirrorState","_RespArea","_reactDom","_customToolbarWrapper","_toolbar","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","_typeof","has","get","set","_t","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","InlineDropdown","props","editor","node","getPos","options","selected","attributes","attrs","value","error","html","pos","toolbarRef","useRef","toolbarEditor","pendingCloseRequest","isHeld","_holdInlineDropdownToolbarIndex","String","index","_useState","useState","_useState2","_slicedToArray2","showToolbar","setShowToolbar","_useState3","top","left","_useState4","position","setPosition","closeToolbar","InlineDropdownToolbar","respAreaToolbar","reselectNode","tr","state","nodeAtPos","doc","nodeAt","selection","from","to","nodeSize","setSelection","NodeSelection","create","view","dispatch","requestClose","current","onToolbarCloseRequest","setTimeout","useEffect","onlyThisNodeSelected","bodyRect","document","body","getBoundingClientRect","start","coordsAtPos","Math","abs","handleClickOutside","event","_toolbarEditor$curren","insideSomeEditor","target","closest","dataset","toolbarFor","instanceId","_toolbarOpened","contains","addEventListener","removeEventListener","createElement","NodeViewWrapper","className","style","display","height","cursor","minWidth","background","border","boxSizing","borderRadius","margin","alignItems","onClick","flex","overflow","padding","whiteSpace","textOverflow","verticalAlign","dangerouslySetInnerHTML","__html","Chevron","direction","right","Fragment","ReactDOM","createPortal","ref","zIndex","editorCallback","instance","_tiptapContainerEl","deletable","toolbarOpts","autoWidth","onDelete","setToolbarOpened","commands","focus","showDone","propTypes","PropTypes","object","selectedItem","oneOfType","string","_default","exports"],"sources":["../../../src/components/respArea/InlineDropdown.jsx"],"sourcesContent":["import React, { useEffect, useRef, useState } from 'react';\nimport PropTypes from 'prop-types';\nimport { NodeViewWrapper } from '@tiptap/react';\nimport { NodeSelection } from 'prosemirror-state';\nimport { Chevron } from '../icons/RespArea';\nimport ReactDOM from 'react-dom';\nimport CustomToolbarWrapper from '../../extensions/custom-toolbar-wrapper';\nimport { setToolbarOpened } from '../../utils/toolbar';\n\nconst InlineDropdown = (props) => {\n const { editor, node, getPos, options, selected } = props;\n const { attrs: attributes } = node;\n const { value, error } = attributes;\n const html = value || '<div> </div>';\n const pos = getPos();\n const toolbarRef = useRef(null);\n const toolbarEditor = useRef(null);\n const pendingCloseRequest = useRef(false);\n\n const isHeld = () =>\n editor._holdInlineDropdownToolbarIndex != null &&\n String(editor._holdInlineDropdownToolbarIndex) === String(node.attrs.index);\n\n const [showToolbar, setShowToolbar] = useState(false);\n const [position, setPosition] = useState({ top: 0, left: 0 });\n\n const closeToolbar = () => {\n if (isHeld()) {\n return;\n }\n\n setShowToolbar(false);\n };\n\n const InlineDropdownToolbar = options.respAreaToolbar([node, pos], editor, closeToolbar);\n\n const reselectNode = () => {\n const { tr } = editor.state;\n const nodeAtPos = tr.doc.nodeAt(pos);\n\n if (!nodeAtPos) {\n return;\n }\n\n const { selection } = tr;\n\n if (selection.from === pos && selection.to === pos + nodeAtPos.nodeSize) {\n return;\n }\n\n tr.setSelection(NodeSelection.create(tr.doc, pos));\n editor.view.dispatch(tr);\n };\n\n const requestClose = () => {\n if (pendingCloseRequest.current) {\n return;\n }\n\n if (options.onToolbarCloseRequest) {\n pendingCloseRequest.current = true;\n\n options.onToolbarCloseRequest(\n [node, pos],\n editor,\n () => {\n pendingCloseRequest.current = false;\n delete editor._holdInlineDropdownToolbarIndex;\n closeToolbar();\n },\n () => {\n pendingCloseRequest.current = false;\n delete editor._holdInlineDropdownToolbarIndex;\n setShowToolbar(true);\n setTimeout(reselectNode, 0);\n },\n );\n } else {\n closeToolbar();\n }\n };\n\n useEffect(() => {\n const { selection } = editor.state;\n const onlyThisNodeSelected = selection.from + node.nodeSize === selection.to;\n\n if (selected) {\n if (onlyThisNodeSelected) {\n setShowToolbar(true);\n }\n } else if (showToolbar) {\n requestClose();\n }\n }, [editor, node, selected]);\n\n useEffect(() => {\n // Calculate position relative to selection\n const bodyRect = document.body.getBoundingClientRect();\n const { from } = editor.state.selection;\n const start = editor.view.coordsAtPos(from);\n\n setPosition({\n top: start.top + Math.abs(bodyRect.top) + 40, // shift above\n left: start.left,\n });\n\n const handleClickOutside = (event) => {\n const insideSomeEditor = event.target.closest('[data-toolbar-for]');\n\n if (\n !event.target.closest('[data-inline-dropdown-toolbar]') &&\n (!insideSomeEditor || insideSomeEditor.dataset.toolbarFor !== toolbarEditor.current?.instanceId) &&\n !editor._toolbarOpened &&\n toolbarRef.current &&\n !toolbarRef.current.contains(event.target) &&\n !event.target.closest('[data-inline-node]')\n ) {\n requestClose();\n }\n };\n\n if (showToolbar) {\n document.addEventListener('mousedown', handleClickOutside);\n } else {\n document.removeEventListener('mousedown', handleClickOutside);\n }\n\n return () => document.removeEventListener('mousedown', handleClickOutside);\n }, [showToolbar]);\n\n return (\n <NodeViewWrapper\n className=\"inline-dropdown\"\n data-selected={selected}\n style={{\n display: 'inline-flex',\n height: '50px',\n cursor: 'pointer',\n }}\n >\n <div\n style={{\n display: 'inline-flex',\n minWidth: '178px',\n height: '36px',\n background: '#FFF',\n border: '1px solid #C0C3CF',\n boxSizing: 'border-box',\n borderRadius: '3px',\n margin: '0 2px',\n position: 'relative',\n alignItems: 'center',\n }}\n onClick={() => setShowToolbar(true)}\n >\n <div\n style={{\n flex: 1,\n overflow: 'hidden',\n padding: '0 25px 0 8px',\n whiteSpace: 'nowrap',\n textOverflow: 'ellipsis',\n }}\n >\n <span\n style={{\n display: 'inline-block',\n verticalAlign: 'middle',\n }}\n dangerouslySetInnerHTML={{ __html: html }}\n />\n </div>\n <Chevron direction=\"down\" style={{ position: 'absolute', top: '5px', right: '5px' }} />\n </div>\n {showToolbar && (\n <React.Fragment>\n {ReactDOM.createPortal(\n <div ref={toolbarRef} style={{ zIndex: 1 }}>\n <InlineDropdownToolbar\n editorCallback={(instance) => {\n toolbarEditor.current = instance;\n }}\n />\n </div>,\n document.body,\n )}\n\n {editor._tiptapContainerEl &&\n ReactDOM.createPortal(\n <CustomToolbarWrapper\n deletable\n toolbarOpts={{ minWidth: 'auto' }}\n autoWidth\n style={{ top: -40, left: 0, right: 0 }}\n onDelete={() => {\n const { tr } = editor.state;\n tr.delete(pos, pos + node.nodeSize);\n // Prevent the debounced onBlur/onDone from firing into the\n // now-deleted node's stale position\n setToolbarOpened(editor, false);\n delete editor._holdInlineDropdownToolbarIndex;\n editor.view.dispatch(tr);\n setShowToolbar(false);\n editor.commands.focus();\n }}\n showDone={false}\n />,\n editor._tiptapContainerEl,\n )}\n </React.Fragment>\n )}\n </NodeViewWrapper>\n );\n};\n\nInlineDropdown.propTypes = {\n attributes: PropTypes.object,\n selectedItem: PropTypes.oneOfType([PropTypes.string, PropTypes.object]),\n};\n\nexport default InlineDropdown;\n"],"mappings":"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","ignoreList":[]}
|
package/lib/extensions/math.js
CHANGED
|
@@ -15,6 +15,7 @@ var _react2 = require("@tiptap/react");
|
|
|
15
15
|
var _prosemirrorState = require("prosemirror-state");
|
|
16
16
|
var _mathToolbar = require("@pie-lib/math-toolbar");
|
|
17
17
|
var _mathRendering = require("@pie-lib/math-rendering");
|
|
18
|
+
var _toolbar = require("../utils/toolbar");
|
|
18
19
|
function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function _interopRequireWildcard(e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, "default": e }; if (null === e || "object" != _typeof(e) && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (var _t in e) "default" !== _t && {}.hasOwnProperty.call(e, _t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, _t)) && (i.get || i.set) ? o(f, _t, i) : f[_t] = e[_t]); return f; })(e, t); }
|
|
19
20
|
function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
20
21
|
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { (0, _defineProperty2["default"])(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
@@ -212,6 +213,7 @@ var MathNodeView = exports.MathNodeView = function MathNodeView(props) {
|
|
|
212
213
|
showToolbar = _useState2[0],
|
|
213
214
|
setShowToolbar = _useState2[1];
|
|
214
215
|
var toolbarRef = (0, _react.useRef)(null);
|
|
216
|
+
var timestamp = (0, _react.useRef)(Date.now());
|
|
215
217
|
var _useState3 = (0, _react.useState)({
|
|
216
218
|
top: 0,
|
|
217
219
|
left: 0
|
|
@@ -240,7 +242,6 @@ var MathNodeView = exports.MathNodeView = function MathNodeView(props) {
|
|
|
240
242
|
latex: newLatex
|
|
241
243
|
});
|
|
242
244
|
setShowToolbar(false);
|
|
243
|
-
editor._toolbarOpened = false;
|
|
244
245
|
var _editor$state = editor.state,
|
|
245
246
|
selection = _editor$state.selection,
|
|
246
247
|
tr = _editor$state.tr,
|
|
@@ -258,8 +259,8 @@ var MathNodeView = exports.MathNodeView = function MathNodeView(props) {
|
|
|
258
259
|
}
|
|
259
260
|
}, [selected]);
|
|
260
261
|
(0, _react.useEffect)(function () {
|
|
261
|
-
editor
|
|
262
|
-
}, [showToolbar]);
|
|
262
|
+
(0, _toolbar.setToolbarOpened)(editor, showToolbar);
|
|
263
|
+
}, [editor, showToolbar]);
|
|
263
264
|
(0, _react.useEffect)(function () {
|
|
264
265
|
// Calculate position relative to selection
|
|
265
266
|
var from = editor.state.selection.from;
|
|
@@ -284,7 +285,7 @@ var MathNodeView = exports.MathNodeView = function MathNodeView(props) {
|
|
|
284
285
|
// will keep/re-open the toolbar. Without this guard, closing and then
|
|
285
286
|
// immediately clicking the math node would fire this listener in the same
|
|
286
287
|
// event cycle and close the toolbar before it could open.
|
|
287
|
-
var clickedMathNode = !!(target !== null && target !== void 0 && (_target$closest2 = target.closest) !== null && _target$closest2 !== void 0 && _target$closest2.call(target,
|
|
288
|
+
var clickedMathNode = !!(target !== null && target !== void 0 && (_target$closest2 = target.closest) !== null && _target$closest2 !== void 0 && _target$closest2.call(target, ".math-node-".concat(timestamp.current)));
|
|
288
289
|
if (toolbarRef.current && !toolbarRef.current.contains(target) && !(target !== null && target !== void 0 && (_target$closest3 = target.closest) !== null && _target$closest3 !== void 0 && _target$closest3.call(target, '[data-inline-node]')) && !equationEditorPopoverOpen && !clickedEquationEditorSelect && !clickedMathNode) {
|
|
289
290
|
setShowToolbar(false);
|
|
290
291
|
handleDone(node.attrs.latex);
|
|
@@ -302,7 +303,7 @@ var MathNodeView = exports.MathNodeView = function MathNodeView(props) {
|
|
|
302
303
|
};
|
|
303
304
|
}, [editor, showToolbar]);
|
|
304
305
|
return /*#__PURE__*/_react["default"].createElement(_react2.NodeViewWrapper, {
|
|
305
|
-
className: "math-node",
|
|
306
|
+
className: "math-node-".concat(timestamp.current),
|
|
306
307
|
style: {
|
|
307
308
|
display: 'inline-flex',
|
|
308
309
|
cursor: 'pointer',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"math.js","names":["_react","_interopRequireWildcard","require","_reactDom","_interopRequireDefault","_core","_react2","_prosemirrorState","_mathToolbar","_mathRendering","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","_typeof","has","get","set","_t","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","ownKeys","keys","getOwnPropertySymbols","filter","enumerable","push","apply","_objectSpread","arguments","length","forEach","_defineProperty2","getOwnPropertyDescriptors","defineProperties","ensureTextAfterMathPluginKey","PluginKey","generateAdditionalKeys","keyData","undefined","map","key","name","latex","write","label","EnsureTextAfterMathPlugin","exports","mathNodeName","Plugin","appendTransaction","transactions","oldState","newState","some","tr","docChanged","changed","doc","descendants","node","pos","type","nextPos","nodeSize","nextNode","nodeAt","insert","schema","text","ZeroWidthSpaceHandlingPlugin","props","handleKeyDown","view","event","state","dispatch","selection","from","empty","prevChar","textBetween","posBefore","resolved","resolve","maybeNode","nodeAfter","nodeBefore","nodePos","nodeResolved","setSelection","NodeSelection","create","TextSelection","MathNode","Node","group","inline","atom","addAttributes","wrapper","html","addProseMirrorPlugins","parseHTML","tag","getAttrs","el","getAttribute","textContent","innerHTML","addCommands","_this","insertMath","_ref","_node$type","editor","nodes","math","$from","sel","renderHTML","_ref2","HTMLAttributes","dangerouslySetInnerHTML","__html","wrapMath","addNodeView","_this2","ReactNodeViewRenderer","createElement","MathNodeView","options","updateAttributes","selected","_useState","useState","_useState2","_slicedToArray2","showToolbar","setShowToolbar","toolbarRef","useRef","_useState3","top","left","_useState4","position","setPosition","_ref3","_ref3$math","mathOptions","keypadMode","_mathOptions$controll","controlledKeypadMode","_mathOptions$customKe","customKeys","keyPadCharacterRef","setKeypadInteraction","attrs","handleChange","newLatex","handleDone","_toolbarOpened","_editor$state","commands","focus","useEffect","start","coordsAtPos","handleClickOutside","_document$querySelect","_document","_target$closest","_target$closest2","_target$closest3","target","equationEditorListboxes","document","querySelectorAll","equationEditorPopoverOpen","clickedEquationEditorSelect","id","includes","closest","clickedMathNode","current","contains","addEventListener","removeEventListener","NodeViewWrapper","className","style","display","cursor","margin","onClick","contentEditable","MathPreview","ReactDOM","createPortal","ref","instanceId","concat","zIndex","background","boxShadow","MathToolbar","autoFocus","onChange","onDone","additionalKeys","_tiptapContainerEl","body"],"sources":["../../src/extensions/math.js"],"sourcesContent":["import React, { useEffect, useRef, useState } from 'react';\nimport ReactDOM from 'react-dom';\nimport { Node } from '@tiptap/core';\nimport { NodeViewWrapper, ReactNodeViewRenderer } from '@tiptap/react';\nimport { NodeSelection, Plugin, PluginKey, TextSelection } from 'prosemirror-state';\nimport { MathPreview, MathToolbar } from '@pie-lib/math-toolbar';\nimport { wrapMath } from '@pie-lib/math-rendering';\n\nconst ensureTextAfterMathPluginKey = new PluginKey('ensureTextAfterMath');\n\nconst generateAdditionalKeys = (keyData = []) => {\n return keyData.map((key) => ({\n name: key,\n latex: key,\n write: key,\n label: key,\n }));\n};\n\nexport const EnsureTextAfterMathPlugin = (mathNodeName) =>\n new Plugin({\n key: ensureTextAfterMathPluginKey,\n appendTransaction: (transactions, oldState, newState) => {\n // Only act when the doc actually changed\n if (!transactions.some((tr) => tr.docChanged)) return null;\n\n const tr = newState.tr;\n let changed = false;\n\n newState.doc.descendants((node, pos) => {\n if (node.type.name === mathNodeName) {\n const nextPos = pos + node.nodeSize;\n const nextNode = newState.doc.nodeAt(nextPos);\n\n // If there's no node after, or the next node isn't text, insert a space\n if (!nextNode || nextNode.type.name !== 'text') {\n tr.insert(nextPos, newState.schema.text('\\u200b'));\n changed = true;\n }\n }\n });\n\n return changed ? tr : null;\n },\n });\n\nexport const ZeroWidthSpaceHandlingPlugin = new Plugin({\n key: new PluginKey('zeroWidthSpaceHandling'),\n props: {\n handleKeyDown(view, event) {\n const { state, dispatch } = view;\n const { selection, doc } = state;\n const { from, empty } = selection;\n\n if (empty && event.key === 'Backspace' && from > 0) {\n const prevChar = doc.textBetween(from - 1, from, '\\uFFFC', '\\uFFFC');\n if (prevChar === '\\u200b') {\n const tr = state.tr.delete(from - 2, from);\n dispatch(tr);\n return true; // handled\n }\n }\n\n if (empty && event.key === 'ArrowLeft' && from > 0) {\n const prevChar = doc.textBetween(from - 1, from, '\\uFFFC', '\\uFFFC');\n // If the previous character is the zero-width space...\n if (prevChar === '\\u200b') {\n const posBefore = from - 1;\n const resolved = state.doc.resolve(posBefore - 1); // look just before the zwsp\n const maybeNode = resolved.nodeAfter || resolved.nodeBefore;\n\n // Check if there's an inline selectable node (e.g., your math node)\n if (maybeNode) {\n const nodePos = posBefore - maybeNode.nodeSize;\n const nodeResolved = state.doc.resolve(nodePos);\n const tr = state.tr.setSelection(NodeSelection.create(state.doc, nodeResolved.pos));\n dispatch(tr);\n return true;\n } else {\n // Just move the text cursor before the zwsp\n const tr = state.tr.setSelection(TextSelection.create(state.doc, from - 2));\n dispatch(tr);\n return true;\n }\n }\n }\n\n return false;\n },\n },\n});\n\nexport const MathNode = Node.create({\n name: 'math',\n group: 'inline',\n inline: true,\n atom: true,\n\n addAttributes() {\n return {\n latex: { default: '' },\n wrapper: { default: null },\n html: { default: null },\n };\n },\n\n addProseMirrorPlugins() {\n return [EnsureTextAfterMathPlugin(this.name), ZeroWidthSpaceHandlingPlugin];\n },\n\n parseHTML() {\n return [\n {\n tag: 'span[data-latex]',\n getAttrs: (el) => ({\n latex: el.getAttribute('data-raw') || el.textContent,\n }),\n },\n {\n tag: 'span[data-type=\"mathml\"]',\n getAttrs: (el) => ({\n html: el.innerHTML,\n }),\n },\n ];\n },\n\n addCommands() {\n return {\n insertMath:\n (latex = '') =>\n ({ tr, editor, dispatch }) => {\n const { state } = editor.view;\n const node = state.schema.nodes.math.create({\n latex,\n });\n const { selection } = state;\n\n // The inserted node is typically just before the cursor\n const pos = selection.$from.pos;\n\n tr.insert(pos, node);\n\n if (node?.type?.name === this.name) {\n // Create a NodeSelection from the current doc\n const sel = NodeSelection.create(tr.doc, selection.$from.pos);\n\n // Build a fresh transaction from the current state and set the selection\n tr.setSelection(sel);\n }\n\n dispatch(tr);\n\n return true;\n },\n // insertMath: (latex = '') => ({ commands }) => {\n // return commands.insertContent({\n // type: this.name,\n // attrs: { latex },\n // });\n // },\n };\n },\n\n renderHTML({ HTMLAttributes }) {\n if (HTMLAttributes.html) {\n return ['span', { 'data-type': 'mathml', dangerouslySetInnerHTML: { __html: HTMLAttributes.html } }];\n }\n\n return [\n 'span',\n { 'data-latex': '', 'data-raw': HTMLAttributes.latex },\n wrapMath(HTMLAttributes.latex, HTMLAttributes.wrapper),\n ];\n },\n\n addNodeView() {\n return ReactNodeViewRenderer((props) => <MathNodeView {...{ ...props, options: this.options }} />);\n },\n});\n\nexport const MathNodeView = (props) => {\n const { node, updateAttributes, editor, selected, options } = props;\n const [showToolbar, setShowToolbar] = useState(selected);\n const toolbarRef = useRef(null);\n const [position, setPosition] = useState({ top: 0, left: 0 });\n const { math: mathOptions = {} } = options || {};\n const {\n keypadMode,\n controlledKeypadMode = true,\n customKeys = [],\n keyPadCharacterRef,\n setKeypadInteraction,\n } = mathOptions;\n\n const latex = node.attrs.latex || '';\n\n const handleChange = (newLatex) => {\n updateAttributes({ latex: newLatex });\n };\n\n const handleDone = (newLatex) => {\n updateAttributes({ latex: newLatex });\n setShowToolbar(false);\n\n editor._toolbarOpened = false;\n\n const { selection, tr, doc } = editor.state;\n const sel = TextSelection.create(doc, selection.from + 1);\n\n // Build a fresh transaction from the current state and set the selection\n tr.setSelection(sel);\n editor.view.dispatch(tr);\n editor.commands.focus();\n };\n\n useEffect(() => {\n if (selected) {\n setShowToolbar(true);\n }\n }, [selected]);\n\n useEffect(() => {\n editor._toolbarOpened = !!showToolbar;\n }, [showToolbar]);\n\n useEffect(() => {\n // Calculate position relative to selection\n const { from } = editor.state.selection;\n const start = editor.view.coordsAtPos(from);\n setPosition({\n top: 40, // shift above\n left: start.left,\n });\n\n const handleClickOutside = (event) => {\n const target = event?.target;\n\n // MUI's `Select` renders its dropdown options in a portal attached to `document.body`.\n // Those clicks should not dismiss the math toolbar.\n const equationEditorListboxes =\n document.querySelectorAll?.(\n '[id^=\"equation-editor-select\"][id*=\"listbox\"], [aria-labelledby=\"equation-editor-label\"][role=\"listbox\"]',\n ) || [];\n\n const equationEditorPopoverOpen = equationEditorListboxes.length > 0;\n const clickedEquationEditorSelect =\n !!(target?.id && target.id.includes('equation-editor-select')) ||\n !!target?.closest?.('[id*=\"equation-editor-select\"]');\n\n // If the click originated from the math node preview itself (the element\n // that opens the toolbar), ignore it here — the node's own onClick handler\n // will keep/re-open the toolbar. Without this guard, closing and then\n // immediately clicking the math node would fire this listener in the same\n // event cycle and close the toolbar before it could open.\n const clickedMathNode = !!target?.closest?.('.math-node');\n\n if (\n toolbarRef.current &&\n !toolbarRef.current.contains(target) &&\n !target?.closest?.('[data-inline-node]') &&\n !equationEditorPopoverOpen &&\n !clickedEquationEditorSelect &&\n !clickedMathNode\n ) {\n setShowToolbar(false);\n handleDone(node.attrs.latex);\n }\n };\n\n if (showToolbar) {\n // Use `click` (not `mousedown`) so interacting with browser UI like the scrollbar\n // doesn't automatically dismiss the math toolbar.\n document.addEventListener('click', handleClickOutside);\n } else {\n document.removeEventListener('click', handleClickOutside);\n }\n\n return () => document.removeEventListener('click', handleClickOutside);\n }, [editor, showToolbar]);\n\n return (\n <NodeViewWrapper\n className=\"math-node\"\n style={{\n display: 'inline-flex',\n cursor: 'pointer',\n margin: '0 4px',\n }}\n data-selected={selected}\n >\n <div onClick={() => setShowToolbar(true)} contentEditable={false}>\n <MathPreview latex={latex} />\n </div>\n {showToolbar &&\n ReactDOM.createPortal(\n <div\n ref={toolbarRef}\n data-toolbar-for={editor.instanceId}\n style={{\n position: 'absolute',\n top: `${position.top}px`,\n left: `${position.left}px`,\n zIndex: 20,\n background: 'var(--editable-html-toolbar-bg, #efefef)',\n boxShadow:\n '0px 1px 5px 0px rgba(0, 0, 0, 0.2), 0px 2px 2px 0px rgba(0, 0, 0, 0.14), 0px 3px 1px -2px rgba(0, 0, 0, 0.12)',\n }}\n >\n <MathToolbar\n latex={latex}\n autoFocus\n onChange={handleChange}\n onDone={handleDone}\n keypadMode={keypadMode}\n controlledKeypadMode={controlledKeypadMode}\n additionalKeys={generateAdditionalKeys(customKeys)}\n keyPadCharacterRef={keyPadCharacterRef}\n setKeypadInteraction={setKeypadInteraction}\n />\n </div>,\n editor?._tiptapContainerEl || document.body,\n )}\n </NodeViewWrapper>\n );\n};\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"math.js","names":["_react","_interopRequireWildcard","require","_reactDom","_interopRequireDefault","_core","_react2","_prosemirrorState","_mathToolbar","_mathRendering","_toolbar","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","_typeof","has","get","set","_t","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","ownKeys","keys","getOwnPropertySymbols","filter","enumerable","push","apply","_objectSpread","arguments","length","forEach","_defineProperty2","getOwnPropertyDescriptors","defineProperties","ensureTextAfterMathPluginKey","PluginKey","generateAdditionalKeys","keyData","undefined","map","key","name","latex","write","label","EnsureTextAfterMathPlugin","exports","mathNodeName","Plugin","appendTransaction","transactions","oldState","newState","some","tr","docChanged","changed","doc","descendants","node","pos","type","nextPos","nodeSize","nextNode","nodeAt","insert","schema","text","ZeroWidthSpaceHandlingPlugin","props","handleKeyDown","view","event","state","dispatch","selection","from","empty","prevChar","textBetween","posBefore","resolved","resolve","maybeNode","nodeAfter","nodeBefore","nodePos","nodeResolved","setSelection","NodeSelection","create","TextSelection","MathNode","Node","group","inline","atom","addAttributes","wrapper","html","addProseMirrorPlugins","parseHTML","tag","getAttrs","el","getAttribute","textContent","innerHTML","addCommands","_this","insertMath","_ref","_node$type","editor","nodes","math","$from","sel","renderHTML","_ref2","HTMLAttributes","dangerouslySetInnerHTML","__html","wrapMath","addNodeView","_this2","ReactNodeViewRenderer","createElement","MathNodeView","options","updateAttributes","selected","_useState","useState","_useState2","_slicedToArray2","showToolbar","setShowToolbar","toolbarRef","useRef","timestamp","Date","now","_useState3","top","left","_useState4","position","setPosition","_ref3","_ref3$math","mathOptions","keypadMode","_mathOptions$controll","controlledKeypadMode","_mathOptions$customKe","customKeys","keyPadCharacterRef","setKeypadInteraction","attrs","handleChange","newLatex","handleDone","_editor$state","commands","focus","useEffect","setToolbarOpened","start","coordsAtPos","handleClickOutside","_document$querySelect","_document","_target$closest","_target$closest2","_target$closest3","target","equationEditorListboxes","document","querySelectorAll","equationEditorPopoverOpen","clickedEquationEditorSelect","id","includes","closest","clickedMathNode","concat","current","contains","addEventListener","removeEventListener","NodeViewWrapper","className","style","display","cursor","margin","onClick","contentEditable","MathPreview","ReactDOM","createPortal","ref","instanceId","zIndex","background","boxShadow","MathToolbar","autoFocus","onChange","onDone","additionalKeys","_tiptapContainerEl","body"],"sources":["../../src/extensions/math.js"],"sourcesContent":["import React, { useEffect, useRef, useState } from 'react';\nimport ReactDOM from 'react-dom';\nimport { Node } from '@tiptap/core';\nimport { NodeViewWrapper, ReactNodeViewRenderer } from '@tiptap/react';\nimport { NodeSelection, Plugin, PluginKey, TextSelection } from 'prosemirror-state';\nimport { MathPreview, MathToolbar } from '@pie-lib/math-toolbar';\nimport { wrapMath } from '@pie-lib/math-rendering';\nimport { setToolbarOpened } from '../utils/toolbar';\n\nconst ensureTextAfterMathPluginKey = new PluginKey('ensureTextAfterMath');\n\nconst generateAdditionalKeys = (keyData = []) => {\n return keyData.map((key) => ({\n name: key,\n latex: key,\n write: key,\n label: key,\n }));\n};\n\nexport const EnsureTextAfterMathPlugin = (mathNodeName) =>\n new Plugin({\n key: ensureTextAfterMathPluginKey,\n appendTransaction: (transactions, oldState, newState) => {\n // Only act when the doc actually changed\n if (!transactions.some((tr) => tr.docChanged)) return null;\n\n const tr = newState.tr;\n let changed = false;\n\n newState.doc.descendants((node, pos) => {\n if (node.type.name === mathNodeName) {\n const nextPos = pos + node.nodeSize;\n const nextNode = newState.doc.nodeAt(nextPos);\n\n // If there's no node after, or the next node isn't text, insert a space\n if (!nextNode || nextNode.type.name !== 'text') {\n tr.insert(nextPos, newState.schema.text('\\u200b'));\n changed = true;\n }\n }\n });\n\n return changed ? tr : null;\n },\n });\n\nexport const ZeroWidthSpaceHandlingPlugin = new Plugin({\n key: new PluginKey('zeroWidthSpaceHandling'),\n props: {\n handleKeyDown(view, event) {\n const { state, dispatch } = view;\n const { selection, doc } = state;\n const { from, empty } = selection;\n\n if (empty && event.key === 'Backspace' && from > 0) {\n const prevChar = doc.textBetween(from - 1, from, '\\uFFFC', '\\uFFFC');\n if (prevChar === '\\u200b') {\n const tr = state.tr.delete(from - 2, from);\n dispatch(tr);\n return true; // handled\n }\n }\n\n if (empty && event.key === 'ArrowLeft' && from > 0) {\n const prevChar = doc.textBetween(from - 1, from, '\\uFFFC', '\\uFFFC');\n // If the previous character is the zero-width space...\n if (prevChar === '\\u200b') {\n const posBefore = from - 1;\n const resolved = state.doc.resolve(posBefore - 1); // look just before the zwsp\n const maybeNode = resolved.nodeAfter || resolved.nodeBefore;\n\n // Check if there's an inline selectable node (e.g., your math node)\n if (maybeNode) {\n const nodePos = posBefore - maybeNode.nodeSize;\n const nodeResolved = state.doc.resolve(nodePos);\n const tr = state.tr.setSelection(NodeSelection.create(state.doc, nodeResolved.pos));\n dispatch(tr);\n return true;\n } else {\n // Just move the text cursor before the zwsp\n const tr = state.tr.setSelection(TextSelection.create(state.doc, from - 2));\n dispatch(tr);\n return true;\n }\n }\n }\n\n return false;\n },\n },\n});\n\nexport const MathNode = Node.create({\n name: 'math',\n group: 'inline',\n inline: true,\n atom: true,\n\n addAttributes() {\n return {\n latex: { default: '' },\n wrapper: { default: null },\n html: { default: null },\n };\n },\n\n addProseMirrorPlugins() {\n return [EnsureTextAfterMathPlugin(this.name), ZeroWidthSpaceHandlingPlugin];\n },\n\n parseHTML() {\n return [\n {\n tag: 'span[data-latex]',\n getAttrs: (el) => ({\n latex: el.getAttribute('data-raw') || el.textContent,\n }),\n },\n {\n tag: 'span[data-type=\"mathml\"]',\n getAttrs: (el) => ({\n html: el.innerHTML,\n }),\n },\n ];\n },\n\n addCommands() {\n return {\n insertMath:\n (latex = '') =>\n ({ tr, editor, dispatch }) => {\n const { state } = editor.view;\n const node = state.schema.nodes.math.create({\n latex,\n });\n const { selection } = state;\n\n // The inserted node is typically just before the cursor\n const pos = selection.$from.pos;\n\n tr.insert(pos, node);\n\n if (node?.type?.name === this.name) {\n // Create a NodeSelection from the current doc\n const sel = NodeSelection.create(tr.doc, selection.$from.pos);\n\n // Build a fresh transaction from the current state and set the selection\n tr.setSelection(sel);\n }\n\n dispatch(tr);\n\n return true;\n },\n // insertMath: (latex = '') => ({ commands }) => {\n // return commands.insertContent({\n // type: this.name,\n // attrs: { latex },\n // });\n // },\n };\n },\n\n renderHTML({ HTMLAttributes }) {\n if (HTMLAttributes.html) {\n return ['span', { 'data-type': 'mathml', dangerouslySetInnerHTML: { __html: HTMLAttributes.html } }];\n }\n\n return [\n 'span',\n { 'data-latex': '', 'data-raw': HTMLAttributes.latex },\n wrapMath(HTMLAttributes.latex, HTMLAttributes.wrapper),\n ];\n },\n\n addNodeView() {\n return ReactNodeViewRenderer((props) => <MathNodeView {...{ ...props, options: this.options }} />);\n },\n});\n\nexport const MathNodeView = (props) => {\n const { node, updateAttributes, editor, selected, options } = props;\n const [showToolbar, setShowToolbar] = useState(selected);\n const toolbarRef = useRef(null);\n const timestamp = useRef(Date.now());\n const [position, setPosition] = useState({ top: 0, left: 0 });\n const { math: mathOptions = {} } = options || {};\n const {\n keypadMode,\n controlledKeypadMode = true,\n customKeys = [],\n keyPadCharacterRef,\n setKeypadInteraction,\n } = mathOptions;\n\n const latex = node.attrs.latex || '';\n\n const handleChange = (newLatex) => {\n updateAttributes({ latex: newLatex });\n };\n\n const handleDone = (newLatex) => {\n updateAttributes({ latex: newLatex });\n setShowToolbar(false);\n\n const { selection, tr, doc } = editor.state;\n const sel = TextSelection.create(doc, selection.from + 1);\n\n // Build a fresh transaction from the current state and set the selection\n tr.setSelection(sel);\n editor.view.dispatch(tr);\n editor.commands.focus();\n };\n\n useEffect(() => {\n if (selected) {\n setShowToolbar(true);\n }\n }, [selected]);\n\n useEffect(() => {\n setToolbarOpened(editor, showToolbar);\n }, [editor, showToolbar]);\n\n useEffect(() => {\n // Calculate position relative to selection\n const { from } = editor.state.selection;\n const start = editor.view.coordsAtPos(from);\n setPosition({\n top: 40, // shift above\n left: start.left,\n });\n\n const handleClickOutside = (event) => {\n const target = event?.target;\n\n // MUI's `Select` renders its dropdown options in a portal attached to `document.body`.\n // Those clicks should not dismiss the math toolbar.\n const equationEditorListboxes =\n document.querySelectorAll?.(\n '[id^=\"equation-editor-select\"][id*=\"listbox\"], [aria-labelledby=\"equation-editor-label\"][role=\"listbox\"]',\n ) || [];\n\n const equationEditorPopoverOpen = equationEditorListboxes.length > 0;\n const clickedEquationEditorSelect =\n !!(target?.id && target.id.includes('equation-editor-select')) ||\n !!target?.closest?.('[id*=\"equation-editor-select\"]');\n\n // If the click originated from the math node preview itself (the element\n // that opens the toolbar), ignore it here — the node's own onClick handler\n // will keep/re-open the toolbar. Without this guard, closing and then\n // immediately clicking the math node would fire this listener in the same\n // event cycle and close the toolbar before it could open.\n const clickedMathNode = !!target?.closest?.(`.math-node-${timestamp.current}`);\n\n if (\n toolbarRef.current &&\n !toolbarRef.current.contains(target) &&\n !target?.closest?.('[data-inline-node]') &&\n !equationEditorPopoverOpen &&\n !clickedEquationEditorSelect &&\n !clickedMathNode\n ) {\n setShowToolbar(false);\n handleDone(node.attrs.latex);\n }\n };\n\n if (showToolbar) {\n // Use `click` (not `mousedown`) so interacting with browser UI like the scrollbar\n // doesn't automatically dismiss the math toolbar.\n document.addEventListener('click', handleClickOutside);\n } else {\n document.removeEventListener('click', handleClickOutside);\n }\n\n return () => document.removeEventListener('click', handleClickOutside);\n }, [editor, showToolbar]);\n\n return (\n <NodeViewWrapper\n className={`math-node-${timestamp.current}`}\n style={{\n display: 'inline-flex',\n cursor: 'pointer',\n margin: '0 4px',\n }}\n data-selected={selected}\n >\n <div onClick={() => setShowToolbar(true)} contentEditable={false}>\n <MathPreview latex={latex} />\n </div>\n {showToolbar &&\n ReactDOM.createPortal(\n <div\n ref={toolbarRef}\n data-toolbar-for={editor.instanceId}\n style={{\n position: 'absolute',\n top: `${position.top}px`,\n left: `${position.left}px`,\n zIndex: 20,\n background: 'var(--editable-html-toolbar-bg, #efefef)',\n boxShadow:\n '0px 1px 5px 0px rgba(0, 0, 0, 0.2), 0px 2px 2px 0px rgba(0, 0, 0, 0.14), 0px 3px 1px -2px rgba(0, 0, 0, 0.12)',\n }}\n >\n <MathToolbar\n latex={latex}\n autoFocus\n onChange={handleChange}\n onDone={handleDone}\n keypadMode={keypadMode}\n controlledKeypadMode={controlledKeypadMode}\n additionalKeys={generateAdditionalKeys(customKeys)}\n keyPadCharacterRef={keyPadCharacterRef}\n setKeypadInteraction={setKeypadInteraction}\n />\n </div>,\n editor?._tiptapContainerEl || document.body,\n )}\n </NodeViewWrapper>\n );\n};\n"],"mappings":";;;;;;;;;;AAAA,IAAAA,MAAA,GAAAC,uBAAA,CAAAC,OAAA;AACA,IAAAC,SAAA,GAAAC,sBAAA,CAAAF,OAAA;AACA,IAAAG,KAAA,GAAAH,OAAA;AACA,IAAAI,OAAA,GAAAJ,OAAA;AACA,IAAAK,iBAAA,GAAAL,OAAA;AACA,IAAAM,YAAA,GAAAN,OAAA;AACA,IAAAO,cAAA,GAAAP,OAAA;AACA,IAAAQ,QAAA,GAAAR,OAAA;AAAoD,SAAAD,wBAAAU,CAAA,EAAAC,CAAA,6BAAAC,OAAA,MAAAC,CAAA,OAAAD,OAAA,IAAAE,CAAA,OAAAF,OAAA,YAAAZ,uBAAA,YAAAA,wBAAAU,CAAA,EAAAC,CAAA,SAAAA,CAAA,IAAAD,CAAA,IAAAA,CAAA,CAAAK,UAAA,SAAAL,CAAA,MAAAM,CAAA,EAAAC,CAAA,EAAAC,CAAA,KAAAC,SAAA,mBAAAT,CAAA,iBAAAA,CAAA,gBAAAU,OAAA,CAAAV,CAAA,0BAAAA,CAAA,SAAAQ,CAAA,MAAAF,CAAA,GAAAL,CAAA,GAAAG,CAAA,GAAAD,CAAA,QAAAG,CAAA,CAAAK,GAAA,CAAAX,CAAA,UAAAM,CAAA,CAAAM,GAAA,CAAAZ,CAAA,GAAAM,CAAA,CAAAO,GAAA,CAAAb,CAAA,EAAAQ,CAAA,cAAAM,EAAA,IAAAd,CAAA,gBAAAc,EAAA,OAAAC,cAAA,CAAAC,IAAA,CAAAhB,CAAA,EAAAc,EAAA,OAAAP,CAAA,IAAAD,CAAA,GAAAW,MAAA,CAAAC,cAAA,KAAAD,MAAA,CAAAE,wBAAA,CAAAnB,CAAA,EAAAc,EAAA,OAAAP,CAAA,CAAAK,GAAA,IAAAL,CAAA,CAAAM,GAAA,IAAAP,CAAA,CAAAE,CAAA,EAAAM,EAAA,EAAAP,CAAA,IAAAC,CAAA,CAAAM,EAAA,IAAAd,CAAA,CAAAc,EAAA,WAAAN,CAAA,KAAAR,CAAA,EAAAC,CAAA;AAAA,SAAAmB,QAAApB,CAAA,EAAAG,CAAA,QAAAF,CAAA,GAAAgB,MAAA,CAAAI,IAAA,CAAArB,CAAA,OAAAiB,MAAA,CAAAK,qBAAA,QAAAhB,CAAA,GAAAW,MAAA,CAAAK,qBAAA,CAAAtB,CAAA,GAAAG,CAAA,KAAAG,CAAA,GAAAA,CAAA,CAAAiB,MAAA,WAAApB,CAAA,WAAAc,MAAA,CAAAE,wBAAA,CAAAnB,CAAA,EAAAG,CAAA,EAAAqB,UAAA,OAAAvB,CAAA,CAAAwB,IAAA,CAAAC,KAAA,CAAAzB,CAAA,EAAAK,CAAA,YAAAL,CAAA;AAAA,SAAA0B,cAAA3B,CAAA,aAAAG,CAAA,MAAAA,CAAA,GAAAyB,SAAA,CAAAC,MAAA,EAAA1B,CAAA,UAAAF,CAAA,WAAA2B,SAAA,CAAAzB,CAAA,IAAAyB,SAAA,CAAAzB,CAAA,QAAAA,CAAA,OAAAiB,OAAA,CAAAH,MAAA,CAAAhB,CAAA,OAAA6B,OAAA,WAAA3B,CAAA,QAAA4B,gBAAA,aAAA/B,CAAA,EAAAG,CAAA,EAAAF,CAAA,CAAAE,CAAA,SAAAc,MAAA,CAAAe,yBAAA,GAAAf,MAAA,CAAAgB,gBAAA,CAAAjC,CAAA,EAAAiB,MAAA,CAAAe,yBAAA,CAAA/B,CAAA,KAAAmB,OAAA,CAAAH,MAAA,CAAAhB,CAAA,GAAA6B,OAAA,WAAA3B,CAAA,IAAAc,MAAA,CAAAC,cAAA,CAAAlB,CAAA,EAAAG,CAAA,EAAAc,MAAA,CAAAE,wBAAA,CAAAlB,CAAA,EAAAE,CAAA,iBAAAH,CAAA;AAEpD,IAAMkC,4BAA4B,GAAG,IAAIC,2BAAS,CAAC,qBAAqB,CAAC;AAEzE,IAAMC,sBAAsB,GAAG,SAAzBA,sBAAsBA,CAAA,EAAqB;EAAA,IAAjBC,OAAO,GAAAT,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAAU,SAAA,GAAAV,SAAA,MAAG,EAAE;EAC1C,OAAOS,OAAO,CAACE,GAAG,CAAC,UAACC,GAAG;IAAA,OAAM;MAC3BC,IAAI,EAAED,GAAG;MACTE,KAAK,EAAEF,GAAG;MACVG,KAAK,EAAEH,GAAG;MACVI,KAAK,EAAEJ;IACT,CAAC;EAAA,CAAC,CAAC;AACL,CAAC;AAEM,IAAMK,yBAAyB,GAAAC,OAAA,CAAAD,yBAAA,GAAG,SAA5BA,yBAAyBA,CAAIE,YAAY;EAAA,OACpD,IAAIC,wBAAM,CAAC;IACTR,GAAG,EAAEN,4BAA4B;IACjCe,iBAAiB,EAAE,SAAnBA,iBAAiBA,CAAGC,YAAY,EAAEC,QAAQ,EAAEC,QAAQ,EAAK;MACvD;MACA,IAAI,CAACF,YAAY,CAACG,IAAI,CAAC,UAACC,EAAE;QAAA,OAAKA,EAAE,CAACC,UAAU;MAAA,EAAC,EAAE,OAAO,IAAI;MAE1D,IAAMD,EAAE,GAAGF,QAAQ,CAACE,EAAE;MACtB,IAAIE,OAAO,GAAG,KAAK;MAEnBJ,QAAQ,CAACK,GAAG,CAACC,WAAW,CAAC,UAACC,IAAI,EAAEC,GAAG,EAAK;QACtC,IAAID,IAAI,CAACE,IAAI,CAACpB,IAAI,KAAKM,YAAY,EAAE;UACnC,IAAMe,OAAO,GAAGF,GAAG,GAAGD,IAAI,CAACI,QAAQ;UACnC,IAAMC,QAAQ,GAAGZ,QAAQ,CAACK,GAAG,CAACQ,MAAM,CAACH,OAAO,CAAC;;UAE7C;UACA,IAAI,CAACE,QAAQ,IAAIA,QAAQ,CAACH,IAAI,CAACpB,IAAI,KAAK,MAAM,EAAE;YAC9Ca,EAAE,CAACY,MAAM,CAACJ,OAAO,EAAEV,QAAQ,CAACe,MAAM,CAACC,IAAI,CAAC,QAAQ,CAAC,CAAC;YAClDZ,OAAO,GAAG,IAAI;UAChB;QACF;MACF,CAAC,CAAC;MAEF,OAAOA,OAAO,GAAGF,EAAE,GAAG,IAAI;IAC5B;EACF,CAAC,CAAC;AAAA;AAEG,IAAMe,4BAA4B,GAAAvB,OAAA,CAAAuB,4BAAA,GAAG,IAAIrB,wBAAM,CAAC;EACrDR,GAAG,EAAE,IAAIL,2BAAS,CAAC,wBAAwB,CAAC;EAC5CmC,KAAK,EAAE;IACLC,aAAa,WAAbA,aAAaA,CAACC,IAAI,EAAEC,KAAK,EAAE;MACzB,IAAQC,KAAK,GAAeF,IAAI,CAAxBE,KAAK;QAAEC,QAAQ,GAAKH,IAAI,CAAjBG,QAAQ;MACvB,IAAQC,SAAS,GAAUF,KAAK,CAAxBE,SAAS;QAAEnB,GAAG,GAAKiB,KAAK,CAAbjB,GAAG;MACtB,IAAQoB,IAAI,GAAYD,SAAS,CAAzBC,IAAI;QAAEC,KAAK,GAAKF,SAAS,CAAnBE,KAAK;MAEnB,IAAIA,KAAK,IAAIL,KAAK,CAACjC,GAAG,KAAK,WAAW,IAAIqC,IAAI,GAAG,CAAC,EAAE;QAClD,IAAME,QAAQ,GAAGtB,GAAG,CAACuB,WAAW,CAACH,IAAI,GAAG,CAAC,EAAEA,IAAI,EAAE,QAAQ,EAAE,QAAQ,CAAC;QACpE,IAAIE,QAAQ,KAAK,QAAQ,EAAE;UACzB,IAAMzB,EAAE,GAAGoB,KAAK,CAACpB,EAAE,UAAO,CAACuB,IAAI,GAAG,CAAC,EAAEA,IAAI,CAAC;UAC1CF,QAAQ,CAACrB,EAAE,CAAC;UACZ,OAAO,IAAI,CAAC,CAAC;QACf;MACF;MAEA,IAAIwB,KAAK,IAAIL,KAAK,CAACjC,GAAG,KAAK,WAAW,IAAIqC,IAAI,GAAG,CAAC,EAAE;QAClD,IAAME,SAAQ,GAAGtB,GAAG,CAACuB,WAAW,CAACH,IAAI,GAAG,CAAC,EAAEA,IAAI,EAAE,QAAQ,EAAE,QAAQ,CAAC;QACpE;QACA,IAAIE,SAAQ,KAAK,QAAQ,EAAE;UACzB,IAAME,SAAS,GAAGJ,IAAI,GAAG,CAAC;UAC1B,IAAMK,QAAQ,GAAGR,KAAK,CAACjB,GAAG,CAAC0B,OAAO,CAACF,SAAS,GAAG,CAAC,CAAC,CAAC,CAAC;UACnD,IAAMG,SAAS,GAAGF,QAAQ,CAACG,SAAS,IAAIH,QAAQ,CAACI,UAAU;;UAE3D;UACA,IAAIF,SAAS,EAAE;YACb,IAAMG,OAAO,GAAGN,SAAS,GAAGG,SAAS,CAACrB,QAAQ;YAC9C,IAAMyB,YAAY,GAAGd,KAAK,CAACjB,GAAG,CAAC0B,OAAO,CAACI,OAAO,CAAC;YAC/C,IAAMjC,GAAE,GAAGoB,KAAK,CAACpB,EAAE,CAACmC,YAAY,CAACC,+BAAa,CAACC,MAAM,CAACjB,KAAK,CAACjB,GAAG,EAAE+B,YAAY,CAAC5B,GAAG,CAAC,CAAC;YACnFe,QAAQ,CAACrB,GAAE,CAAC;YACZ,OAAO,IAAI;UACb,CAAC,MAAM;YACL;YACA,IAAMA,IAAE,GAAGoB,KAAK,CAACpB,EAAE,CAACmC,YAAY,CAACG,+BAAa,CAACD,MAAM,CAACjB,KAAK,CAACjB,GAAG,EAAEoB,IAAI,GAAG,CAAC,CAAC,CAAC;YAC3EF,QAAQ,CAACrB,IAAE,CAAC;YACZ,OAAO,IAAI;UACb;QACF;MACF;MAEA,OAAO,KAAK;IACd;EACF;AACF,CAAC,CAAC;AAEK,IAAMuC,QAAQ,GAAA/C,OAAA,CAAA+C,QAAA,GAAGC,UAAI,CAACH,MAAM,CAAC;EAClClD,IAAI,EAAE,MAAM;EACZsD,KAAK,EAAE,QAAQ;EACfC,MAAM,EAAE,IAAI;EACZC,IAAI,EAAE,IAAI;EAEVC,aAAa,WAAbA,aAAaA,CAAA,EAAG;IACd,OAAO;MACLxD,KAAK,EAAE;QAAE,WAAS;MAAG,CAAC;MACtByD,OAAO,EAAE;QAAE,WAAS;MAAK,CAAC;MAC1BC,IAAI,EAAE;QAAE,WAAS;MAAK;IACxB,CAAC;EACH,CAAC;EAEDC,qBAAqB,WAArBA,qBAAqBA,CAAA,EAAG;IACtB,OAAO,CAACxD,yBAAyB,CAAC,IAAI,CAACJ,IAAI,CAAC,EAAE4B,4BAA4B,CAAC;EAC7E,CAAC;EAEDiC,SAAS,WAATA,SAASA,CAAA,EAAG;IACV,OAAO,CACL;MACEC,GAAG,EAAE,kBAAkB;MACvBC,QAAQ,EAAE,SAAVA,QAAQA,CAAGC,EAAE;QAAA,OAAM;UACjB/D,KAAK,EAAE+D,EAAE,CAACC,YAAY,CAAC,UAAU,CAAC,IAAID,EAAE,CAACE;QAC3C,CAAC;MAAA;IACH,CAAC,EACD;MACEJ,GAAG,EAAE,0BAA0B;MAC/BC,QAAQ,EAAE,SAAVA,QAAQA,CAAGC,EAAE;QAAA,OAAM;UACjBL,IAAI,EAAEK,EAAE,CAACG;QACX,CAAC;MAAA;IACH,CAAC,CACF;EACH,CAAC;EAEDC,WAAW,WAAXA,WAAWA,CAAA,EAAG;IAAA,IAAAC,KAAA;IACZ,OAAO;MACLC,UAAU,EACR,SADFA,UAAUA,CAAA;QAAA,IACPrE,KAAK,GAAAd,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAAU,SAAA,GAAAV,SAAA,MAAG,EAAE;QAAA,OACX,UAAAoF,IAAA,EAA8B;UAAA,IAAAC,UAAA;UAAA,IAA3B3D,EAAE,GAAA0D,IAAA,CAAF1D,EAAE;YAAE4D,MAAM,GAAAF,IAAA,CAANE,MAAM;YAAEvC,QAAQ,GAAAqC,IAAA,CAARrC,QAAQ;UACrB,IAAQD,KAAK,GAAKwC,MAAM,CAAC1C,IAAI,CAArBE,KAAK;UACb,IAAMf,IAAI,GAAGe,KAAK,CAACP,MAAM,CAACgD,KAAK,CAACC,IAAI,CAACzB,MAAM,CAAC;YAC1CjD,KAAK,EAALA;UACF,CAAC,CAAC;UACF,IAAQkC,SAAS,GAAKF,KAAK,CAAnBE,SAAS;;UAEjB;UACA,IAAMhB,GAAG,GAAGgB,SAAS,CAACyC,KAAK,CAACzD,GAAG;UAE/BN,EAAE,CAACY,MAAM,CAACN,GAAG,EAAED,IAAI,CAAC;UAEpB,IAAI,CAAAA,IAAI,aAAJA,IAAI,gBAAAsD,UAAA,GAAJtD,IAAI,CAAEE,IAAI,cAAAoD,UAAA,uBAAVA,UAAA,CAAYxE,IAAI,MAAKqE,KAAI,CAACrE,IAAI,EAAE;YAClC;YACA,IAAM6E,GAAG,GAAG5B,+BAAa,CAACC,MAAM,CAACrC,EAAE,CAACG,GAAG,EAAEmB,SAAS,CAACyC,KAAK,CAACzD,GAAG,CAAC;;YAE7D;YACAN,EAAE,CAACmC,YAAY,CAAC6B,GAAG,CAAC;UACtB;UAEA3C,QAAQ,CAACrB,EAAE,CAAC;UAEZ,OAAO,IAAI;QACb,CAAC;MAAA;MACH;MACA;MACA;MACA;MACA;MACA;IACF,CAAC;EACH,CAAC;EAEDiE,UAAU,WAAVA,UAAUA,CAAAC,KAAA,EAAqB;IAAA,IAAlBC,cAAc,GAAAD,KAAA,CAAdC,cAAc;IACzB,IAAIA,cAAc,CAACrB,IAAI,EAAE;MACvB,OAAO,CAAC,MAAM,EAAE;QAAE,WAAW,EAAE,QAAQ;QAAEsB,uBAAuB,EAAE;UAAEC,MAAM,EAAEF,cAAc,CAACrB;QAAK;MAAE,CAAC,CAAC;IACtG;IAEA,OAAO,CACL,MAAM,EACN;MAAE,YAAY,EAAE,EAAE;MAAE,UAAU,EAAEqB,cAAc,CAAC/E;IAAM,CAAC,EACtD,IAAAkF,uBAAQ,EAACH,cAAc,CAAC/E,KAAK,EAAE+E,cAAc,CAACtB,OAAO,CAAC,CACvD;EACH,CAAC;EAED0B,WAAW,WAAXA,WAAWA,CAAA,EAAG;IAAA,IAAAC,MAAA;IACZ,OAAO,IAAAC,6BAAqB,EAAC,UAACzD,KAAK;MAAA,oBAAKjF,MAAA,YAAA2I,aAAA,CAACC,YAAY,EAAAtG,aAAA,CAAAA,aAAA,KAAU2C,KAAK;QAAE4D,OAAO,EAAEJ,MAAI,CAACI;MAAO,EAAK,CAAC;IAAA,EAAC;EACpG;AACF,CAAC,CAAC;AAEK,IAAMD,YAAY,GAAAnF,OAAA,CAAAmF,YAAA,GAAG,SAAfA,YAAYA,CAAI3D,KAAK,EAAK;EACrC,IAAQX,IAAI,GAAkDW,KAAK,CAA3DX,IAAI;IAAEwE,gBAAgB,GAAgC7D,KAAK,CAArD6D,gBAAgB;IAAEjB,MAAM,GAAwB5C,KAAK,CAAnC4C,MAAM;IAAEkB,QAAQ,GAAc9D,KAAK,CAA3B8D,QAAQ;IAAEF,OAAO,GAAK5D,KAAK,CAAjB4D,OAAO;EACzD,IAAAG,SAAA,GAAsC,IAAAC,eAAQ,EAACF,QAAQ,CAAC;IAAAG,UAAA,OAAAC,eAAA,aAAAH,SAAA;IAAjDI,WAAW,GAAAF,UAAA;IAAEG,cAAc,GAAAH,UAAA;EAClC,IAAMI,UAAU,GAAG,IAAAC,aAAM,EAAC,IAAI,CAAC;EAC/B,IAAMC,SAAS,GAAG,IAAAD,aAAM,EAACE,IAAI,CAACC,GAAG,CAAC,CAAC,CAAC;EACpC,IAAAC,UAAA,GAAgC,IAAAV,eAAQ,EAAC;MAAEW,GAAG,EAAE,CAAC;MAAEC,IAAI,EAAE;IAAE,CAAC,CAAC;IAAAC,UAAA,OAAAX,eAAA,aAAAQ,UAAA;IAAtDI,QAAQ,GAAAD,UAAA;IAAEE,WAAW,GAAAF,UAAA;EAC5B,IAAAG,KAAA,GAAmCpB,OAAO,IAAI,CAAC,CAAC;IAAAqB,UAAA,GAAAD,KAAA,CAAxClC,IAAI;IAAEoC,WAAW,GAAAD,UAAA,cAAG,CAAC,CAAC,GAAAA,UAAA;EAC9B,IACEE,UAAU,GAKRD,WAAW,CALbC,UAAU;IAAAC,qBAAA,GAKRF,WAAW,CAJbG,oBAAoB;IAApBA,oBAAoB,GAAAD,qBAAA,cAAG,IAAI,GAAAA,qBAAA;IAAAE,qBAAA,GAIzBJ,WAAW,CAHbK,UAAU;IAAVA,UAAU,GAAAD,qBAAA,cAAG,EAAE,GAAAA,qBAAA;IACfE,kBAAkB,GAEhBN,WAAW,CAFbM,kBAAkB;IAClBC,oBAAoB,GAClBP,WAAW,CADbO,oBAAoB;EAGtB,IAAMrH,KAAK,GAAGiB,IAAI,CAACqG,KAAK,CAACtH,KAAK,IAAI,EAAE;EAEpC,IAAMuH,YAAY,GAAG,SAAfA,YAAYA,CAAIC,QAAQ,EAAK;IACjC/B,gBAAgB,CAAC;MAAEzF,KAAK,EAAEwH;IAAS,CAAC,CAAC;EACvC,CAAC;EAED,IAAMC,UAAU,GAAG,SAAbA,UAAUA,CAAID,QAAQ,EAAK;IAC/B/B,gBAAgB,CAAC;MAAEzF,KAAK,EAAEwH;IAAS,CAAC,CAAC;IACrCxB,cAAc,CAAC,KAAK,CAAC;IAErB,IAAA0B,aAAA,GAA+BlD,MAAM,CAACxC,KAAK;MAAnCE,SAAS,GAAAwF,aAAA,CAATxF,SAAS;MAAEtB,EAAE,GAAA8G,aAAA,CAAF9G,EAAE;MAAEG,GAAG,GAAA2G,aAAA,CAAH3G,GAAG;IAC1B,IAAM6D,GAAG,GAAG1B,+BAAa,CAACD,MAAM,CAAClC,GAAG,EAAEmB,SAAS,CAACC,IAAI,GAAG,CAAC,CAAC;;IAEzD;IACAvB,EAAE,CAACmC,YAAY,CAAC6B,GAAG,CAAC;IACpBJ,MAAM,CAAC1C,IAAI,CAACG,QAAQ,CAACrB,EAAE,CAAC;IACxB4D,MAAM,CAACmD,QAAQ,CAACC,KAAK,CAAC,CAAC;EACzB,CAAC;EAED,IAAAC,gBAAS,EAAC,YAAM;IACd,IAAInC,QAAQ,EAAE;MACZM,cAAc,CAAC,IAAI,CAAC;IACtB;EACF,CAAC,EAAE,CAACN,QAAQ,CAAC,CAAC;EAEd,IAAAmC,gBAAS,EAAC,YAAM;IACd,IAAAC,yBAAgB,EAACtD,MAAM,EAAEuB,WAAW,CAAC;EACvC,CAAC,EAAE,CAACvB,MAAM,EAAEuB,WAAW,CAAC,CAAC;EAEzB,IAAA8B,gBAAS,EAAC,YAAM;IACd;IACA,IAAQ1F,IAAI,GAAKqC,MAAM,CAACxC,KAAK,CAACE,SAAS,CAA/BC,IAAI;IACZ,IAAM4F,KAAK,GAAGvD,MAAM,CAAC1C,IAAI,CAACkG,WAAW,CAAC7F,IAAI,CAAC;IAC3CwE,WAAW,CAAC;MACVJ,GAAG,EAAE,EAAE;MAAE;MACTC,IAAI,EAAEuB,KAAK,CAACvB;IACd,CAAC,CAAC;IAEF,IAAMyB,kBAAkB,GAAG,SAArBA,kBAAkBA,CAAIlG,KAAK,EAAK;MAAA,IAAAmG,qBAAA,EAAAC,SAAA,EAAAC,eAAA,EAAAC,gBAAA,EAAAC,gBAAA;MACpC,IAAMC,MAAM,GAAGxG,KAAK,aAALA,KAAK,uBAALA,KAAK,CAAEwG,MAAM;;MAE5B;MACA;MACA,IAAMC,uBAAuB,GAC3B,EAAAN,qBAAA,IAAAC,SAAA,GAAAM,QAAQ,EAACC,gBAAgB,cAAAR,qBAAA,uBAAzBA,qBAAA,CAAA5J,IAAA,CAAA6J,SAAA,EACE,0GACF,CAAC,KAAI,EAAE;MAET,IAAMQ,yBAAyB,GAAGH,uBAAuB,CAACrJ,MAAM,GAAG,CAAC;MACpE,IAAMyJ,2BAA2B,GAC/B,CAAC,EAAEL,MAAM,aAANA,MAAM,eAANA,MAAM,CAAEM,EAAE,IAAIN,MAAM,CAACM,EAAE,CAACC,QAAQ,CAAC,wBAAwB,CAAC,CAAC,IAC9D,CAAC,EAACP,MAAM,aAANA,MAAM,gBAAAH,eAAA,GAANG,MAAM,CAAEQ,OAAO,cAAAX,eAAA,eAAfA,eAAA,CAAA9J,IAAA,CAAAiK,MAAM,EAAY,gCAAgC,CAAC;;MAEvD;MACA;MACA;MACA;MACA;MACA,IAAMS,eAAe,GAAG,CAAC,EAACT,MAAM,aAANA,MAAM,gBAAAF,gBAAA,GAANE,MAAM,CAAEQ,OAAO,cAAAV,gBAAA,eAAfA,gBAAA,CAAA/J,IAAA,CAAAiK,MAAM,gBAAAU,MAAA,CAA0B9C,SAAS,CAAC+C,OAAO,CAAE,CAAC;MAE9E,IACEjD,UAAU,CAACiD,OAAO,IAClB,CAACjD,UAAU,CAACiD,OAAO,CAACC,QAAQ,CAACZ,MAAM,CAAC,IACpC,EAACA,MAAM,aAANA,MAAM,gBAAAD,gBAAA,GAANC,MAAM,CAAEQ,OAAO,cAAAT,gBAAA,eAAfA,gBAAA,CAAAhK,IAAA,CAAAiK,MAAM,EAAY,oBAAoB,CAAC,KACxC,CAACI,yBAAyB,IAC1B,CAACC,2BAA2B,IAC5B,CAACI,eAAe,EAChB;QACAhD,cAAc,CAAC,KAAK,CAAC;QACrByB,UAAU,CAACxG,IAAI,CAACqG,KAAK,CAACtH,KAAK,CAAC;MAC9B;IACF,CAAC;IAED,IAAI+F,WAAW,EAAE;MACf;MACA;MACA0C,QAAQ,CAACW,gBAAgB,CAAC,OAAO,EAAEnB,kBAAkB,CAAC;IACxD,CAAC,MAAM;MACLQ,QAAQ,CAACY,mBAAmB,CAAC,OAAO,EAAEpB,kBAAkB,CAAC;IAC3D;IAEA,OAAO;MAAA,OAAMQ,QAAQ,CAACY,mBAAmB,CAAC,OAAO,EAAEpB,kBAAkB,CAAC;IAAA;EACxE,CAAC,EAAE,CAACzD,MAAM,EAAEuB,WAAW,CAAC,CAAC;EAEzB,oBACEpJ,MAAA,YAAA2I,aAAA,CAACrI,OAAA,CAAAqM,eAAe;IACdC,SAAS,eAAAN,MAAA,CAAe9C,SAAS,CAAC+C,OAAO,CAAG;IAC5CM,KAAK,EAAE;MACLC,OAAO,EAAE,aAAa;MACtBC,MAAM,EAAE,SAAS;MACjBC,MAAM,EAAE;IACV,CAAE;IACF,iBAAejE;EAAS,gBAExB/I,MAAA,YAAA2I,aAAA;IAAKsE,OAAO,EAAE,SAATA,OAAOA,CAAA;MAAA,OAAQ5D,cAAc,CAAC,IAAI,CAAC;IAAA,CAAC;IAAC6D,eAAe,EAAE;EAAM,gBAC/DlN,MAAA,YAAA2I,aAAA,CAACnI,YAAA,CAAA2M,WAAW;IAAC9J,KAAK,EAAEA;EAAM,CAAE,CACzB,CAAC,EACL+F,WAAW,iBACVgE,oBAAQ,CAACC,YAAY,cACnBrN,MAAA,YAAA2I,aAAA;IACE2E,GAAG,EAAEhE,UAAW;IAChB,oBAAkBzB,MAAM,CAAC0F,UAAW;IACpCV,KAAK,EAAE;MACL9C,QAAQ,EAAE,UAAU;MACpBH,GAAG,KAAA0C,MAAA,CAAKvC,QAAQ,CAACH,GAAG,OAAI;MACxBC,IAAI,KAAAyC,MAAA,CAAKvC,QAAQ,CAACF,IAAI,OAAI;MAC1B2D,MAAM,EAAE,EAAE;MACVC,UAAU,EAAE,0CAA0C;MACtDC,SAAS,EACP;IACJ;EAAE,gBAEF1N,MAAA,YAAA2I,aAAA,CAACnI,YAAA,CAAAmN,WAAW;IACVtK,KAAK,EAAEA,KAAM;IACbuK,SAAS;IACTC,QAAQ,EAAEjD,YAAa;IACvBkD,MAAM,EAAEhD,UAAW;IACnBV,UAAU,EAAEA,UAAW;IACvBE,oBAAoB,EAAEA,oBAAqB;IAC3CyD,cAAc,EAAEhL,sBAAsB,CAACyH,UAAU,CAAE;IACnDC,kBAAkB,EAAEA,kBAAmB;IACvCC,oBAAoB,EAAEA;EAAqB,CAC5C,CACE,CAAC,EACN,CAAA7C,MAAM,aAANA,MAAM,uBAANA,MAAM,CAAEmG,kBAAkB,KAAIlC,QAAQ,CAACmC,IACzC,CACa,CAAC;AAEtB,CAAC","ignoreList":[]}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.setToolbarOpened = exports.TOOLBAR_OPENED_META_KEY = void 0;
|
|
7
|
+
var TOOLBAR_OPENED_META_KEY = exports.TOOLBAR_OPENED_META_KEY = 'toolbarOpenedChanged';
|
|
8
|
+
var setToolbarOpened = exports.setToolbarOpened = function setToolbarOpened(editor, opened) {
|
|
9
|
+
var _editor$state;
|
|
10
|
+
var next = !!opened;
|
|
11
|
+
if (editor._toolbarOpened === next) {
|
|
12
|
+
return;
|
|
13
|
+
}
|
|
14
|
+
editor._toolbarOpened = next;
|
|
15
|
+
if (editor !== null && editor !== void 0 && editor.view && editor !== null && editor !== void 0 && (_editor$state = editor.state) !== null && _editor$state !== void 0 && _editor$state.tr) {
|
|
16
|
+
editor.view.dispatch(editor.state.tr.setMeta(TOOLBAR_OPENED_META_KEY, true));
|
|
17
|
+
}
|
|
18
|
+
};
|
|
19
|
+
//# sourceMappingURL=toolbar.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"toolbar.js","names":["TOOLBAR_OPENED_META_KEY","exports","setToolbarOpened","editor","opened","_editor$state","next","_toolbarOpened","view","state","tr","dispatch","setMeta"],"sources":["../../src/utils/toolbar.js"],"sourcesContent":["export const TOOLBAR_OPENED_META_KEY = 'toolbarOpenedChanged';\n\nexport const setToolbarOpened = (editor, opened) => {\n const next = !!opened;\n\n if (editor._toolbarOpened === next) {\n return;\n }\n\n editor._toolbarOpened = next;\n\n if (editor?.view && editor?.state?.tr) {\n editor.view.dispatch(editor.state.tr.setMeta(TOOLBAR_OPENED_META_KEY, true));\n }\n};\n"],"mappings":";;;;;;AAAO,IAAMA,uBAAuB,GAAAC,OAAA,CAAAD,uBAAA,GAAG,sBAAsB;AAEtD,IAAME,gBAAgB,GAAAD,OAAA,CAAAC,gBAAA,GAAG,SAAnBA,gBAAgBA,CAAIC,MAAM,EAAEC,MAAM,EAAK;EAAA,IAAAC,aAAA;EAClD,IAAMC,IAAI,GAAG,CAAC,CAACF,MAAM;EAErB,IAAID,MAAM,CAACI,cAAc,KAAKD,IAAI,EAAE;IAClC;EACF;EAEAH,MAAM,CAACI,cAAc,GAAGD,IAAI;EAE5B,IAAIH,MAAM,aAANA,MAAM,eAANA,MAAM,CAAEK,IAAI,IAAIL,MAAM,aAANA,MAAM,gBAAAE,aAAA,GAANF,MAAM,CAAEM,KAAK,cAAAJ,aAAA,eAAbA,aAAA,CAAeK,EAAE,EAAE;IACrCP,MAAM,CAACK,IAAI,CAACG,QAAQ,CAACR,MAAM,CAACM,KAAK,CAACC,EAAE,CAACE,OAAO,CAACZ,uBAAuB,EAAE,IAAI,CAAC,CAAC;EAC9E;AACF,CAAC","ignoreList":[]}
|
package/package.json
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
"publishConfig": {
|
|
4
4
|
"access": "public"
|
|
5
5
|
},
|
|
6
|
-
"version": "2.1.
|
|
6
|
+
"version": "2.1.5",
|
|
7
7
|
"description": "",
|
|
8
8
|
"license": "ISC",
|
|
9
9
|
"main": "lib/index.js",
|
|
@@ -16,11 +16,11 @@
|
|
|
16
16
|
"@dnd-kit/utilities": "3.2.2",
|
|
17
17
|
"@mui/icons-material": "^7.3.4",
|
|
18
18
|
"@mui/material": "^7.3.4",
|
|
19
|
-
"@pie-lib/drag": "^4.0.
|
|
20
|
-
"@pie-lib/math-input": "^8.1.
|
|
19
|
+
"@pie-lib/drag": "^4.0.4",
|
|
20
|
+
"@pie-lib/math-input": "^8.1.1",
|
|
21
21
|
"@pie-lib/math-rendering": "^5.0.2",
|
|
22
|
-
"@pie-lib/math-toolbar": "^3.0.
|
|
23
|
-
"@pie-lib/render-ui": "^6.1.
|
|
22
|
+
"@pie-lib/math-toolbar": "^3.0.4",
|
|
23
|
+
"@pie-lib/render-ui": "^6.1.2",
|
|
24
24
|
"@tiptap/core": "3.20.0",
|
|
25
25
|
"@tiptap/extension-character-count": "3.20.0",
|
|
26
26
|
"@tiptap/extension-color": "3.20.0",
|
|
@@ -59,6 +59,6 @@
|
|
|
59
59
|
"peerDependencies": {
|
|
60
60
|
"react": "^18.2.0"
|
|
61
61
|
},
|
|
62
|
-
"gitHead": "
|
|
62
|
+
"gitHead": "3ab0bf122d0f08bbb365fd440e8556d9aacf3749",
|
|
63
63
|
"scripts": {}
|
|
64
64
|
}
|
|
@@ -107,6 +107,7 @@ function MenuBar({
|
|
|
107
107
|
hideDefaultToolbar,
|
|
108
108
|
hasTextSelectionInTable,
|
|
109
109
|
isFocused: ctx.editor?.isFocused,
|
|
110
|
+
toolbarOpened: ctx.editor?._toolbarOpened ?? false,
|
|
110
111
|
isBold: ctx.editor.isActive('bold') ?? false,
|
|
111
112
|
canBold: ctx.editor.can().chain().toggleBold().run() ?? false,
|
|
112
113
|
isTable: ctx.editor.isActive('table') ?? false,
|
|
@@ -148,7 +149,8 @@ function MenuBar({
|
|
|
148
149
|
[classes.toolbarTop]: toolbarOpts.position === 'top',
|
|
149
150
|
[classes.toolbarRight]: toolbarOpts.alignment === 'right',
|
|
150
151
|
[classes.focused]:
|
|
151
|
-
toolbarOpts.alwaysVisible ||
|
|
152
|
+
toolbarOpts.alwaysVisible ||
|
|
153
|
+
(editorState.isFocused && !editorState.toolbarOpened && !editorState.hideDefaultToolbar),
|
|
152
154
|
[classes.autoWidth]: autoWidth,
|
|
153
155
|
[classes.fullWidth]: !autoWidth,
|
|
154
156
|
[classes.hidden]: toolbarOpts.isHidden === true,
|
|
@@ -436,7 +438,7 @@ const StyledMenuBar = (props) => {
|
|
|
436
438
|
const classes = {
|
|
437
439
|
defaultToolbar: 'defaultToolbar',
|
|
438
440
|
buttonsContainer: 'buttonsContainer',
|
|
439
|
-
button: '
|
|
441
|
+
button: 'toolbarButton',
|
|
440
442
|
active: 'active',
|
|
441
443
|
disabled: 'disabled',
|
|
442
444
|
isActive: 'isActive',
|
|
@@ -471,7 +473,7 @@ const StyledMenuBarRoot = styled('div')(({ theme }) => ({
|
|
|
471
473
|
display: 'flex',
|
|
472
474
|
width: '100%',
|
|
473
475
|
},
|
|
474
|
-
'& .
|
|
476
|
+
'& .toolbarButton': {
|
|
475
477
|
color: 'grey',
|
|
476
478
|
display: 'inline-flex',
|
|
477
479
|
padding: '2px',
|
|
@@ -19,6 +19,9 @@ describe('ExplicitConstructedResponse', () => {
|
|
|
19
19
|
const buildMockEditor = (overrides = {}) => {
|
|
20
20
|
const mockTr = {
|
|
21
21
|
delete: jest.fn(),
|
|
22
|
+
setMeta: jest.fn(function setMeta() {
|
|
23
|
+
return mockTr;
|
|
24
|
+
}),
|
|
22
25
|
};
|
|
23
26
|
return {
|
|
24
27
|
state: {
|
|
@@ -197,7 +200,9 @@ describe('ExplicitConstructedResponse', () => {
|
|
|
197
200
|
const { findByLabelText } = render(<ExplicitConstructedResponse {...defaultProps} selected />);
|
|
198
201
|
fireEvent.mouseDown(await findByLabelText('Delete'));
|
|
199
202
|
expect(mockEditor.state.tr.delete).toHaveBeenCalledWith(5, 6);
|
|
200
|
-
expect(mockEditor.view.dispatch).
|
|
203
|
+
expect(mockEditor.view.dispatch).toHaveBeenCalledTimes(2);
|
|
204
|
+
expect(mockEditor.view.dispatch).toHaveBeenNthCalledWith(1, mockEditor.state.tr);
|
|
205
|
+
expect(mockEditor.view.dispatch).toHaveBeenNthCalledWith(2, mockEditor.state.tr);
|
|
201
206
|
expect(mockEditor._toolbarOpened).toBe(false);
|
|
202
207
|
expect(mockEditor.commands.focus).toHaveBeenCalled();
|
|
203
208
|
});
|
|
@@ -26,6 +26,9 @@ describe('InlineDropdown', () => {
|
|
|
26
26
|
delete: jest.fn(),
|
|
27
27
|
doc: { nodeAt: mockNodeAt },
|
|
28
28
|
setSelection: jest.fn(),
|
|
29
|
+
setMeta: jest.fn(function setMeta() {
|
|
30
|
+
return mockTr;
|
|
31
|
+
}),
|
|
29
32
|
};
|
|
30
33
|
return {
|
|
31
34
|
state: {
|
|
@@ -381,7 +384,9 @@ describe('InlineDropdown', () => {
|
|
|
381
384
|
const { findByLabelText } = render(<InlineDropdown {...defaultProps} selected />);
|
|
382
385
|
fireEvent.mouseDown(await findByLabelText('Delete'));
|
|
383
386
|
expect(mockEditor.state.tr.delete).toHaveBeenCalledWith(5, 6);
|
|
384
|
-
expect(mockEditor.view.dispatch).
|
|
387
|
+
expect(mockEditor.view.dispatch).toHaveBeenCalledTimes(2);
|
|
388
|
+
expect(mockEditor.view.dispatch).toHaveBeenNthCalledWith(1, mockEditor.state.tr);
|
|
389
|
+
expect(mockEditor.view.dispatch).toHaveBeenNthCalledWith(2, mockEditor.state.tr);
|
|
385
390
|
expect(mockEditor._toolbarOpened).toBe(false);
|
|
386
391
|
expect(mockEditor.commands.focus).toHaveBeenCalled();
|
|
387
392
|
});
|
|
@@ -3,6 +3,7 @@ import { NodeViewWrapper } from '@tiptap/react';
|
|
|
3
3
|
import ReactDOM from 'react-dom';
|
|
4
4
|
import PropTypes from 'prop-types';
|
|
5
5
|
import CustomToolbarWrapper from '../../extensions/custom-toolbar-wrapper';
|
|
6
|
+
import { setToolbarOpened } from '../../utils/toolbar';
|
|
6
7
|
|
|
7
8
|
const ExplicitConstructedResponse = (props) => {
|
|
8
9
|
const { editor, node, getPos, options, selected } = props;
|
|
@@ -110,7 +111,7 @@ const ExplicitConstructedResponse = (props) => {
|
|
|
110
111
|
tr.delete(pos, pos + node.nodeSize);
|
|
111
112
|
// Prevent the debounced onBlur/onDone from firing into the
|
|
112
113
|
// now-deleted node's stale position
|
|
113
|
-
editor
|
|
114
|
+
setToolbarOpened(editor, false);
|
|
114
115
|
editor.view.dispatch(tr);
|
|
115
116
|
setShowToolbar(false);
|
|
116
117
|
editor.commands.focus();
|
|
@@ -5,6 +5,7 @@ import { NodeSelection } from 'prosemirror-state';
|
|
|
5
5
|
import { Chevron } from '../icons/RespArea';
|
|
6
6
|
import ReactDOM from 'react-dom';
|
|
7
7
|
import CustomToolbarWrapper from '../../extensions/custom-toolbar-wrapper';
|
|
8
|
+
import { setToolbarOpened } from '../../utils/toolbar';
|
|
8
9
|
|
|
9
10
|
const InlineDropdown = (props) => {
|
|
10
11
|
const { editor, node, getPos, options, selected } = props;
|
|
@@ -196,7 +197,7 @@ const InlineDropdown = (props) => {
|
|
|
196
197
|
tr.delete(pos, pos + node.nodeSize);
|
|
197
198
|
// Prevent the debounced onBlur/onDone from firing into the
|
|
198
199
|
// now-deleted node's stale position
|
|
199
|
-
editor
|
|
200
|
+
setToolbarOpened(editor, false);
|
|
200
201
|
delete editor._holdInlineDropdownToolbarIndex;
|
|
201
202
|
editor.view.dispatch(tr);
|
|
202
203
|
setShowToolbar(false);
|
|
@@ -312,6 +312,7 @@ describe('MathNodeView', () => {
|
|
|
312
312
|
},
|
|
313
313
|
tr: {
|
|
314
314
|
setSelection: jest.fn().mockReturnThis(),
|
|
315
|
+
setMeta: jest.fn().mockReturnThis(),
|
|
315
316
|
},
|
|
316
317
|
doc: {},
|
|
317
318
|
},
|
|
@@ -568,6 +569,66 @@ describe('MathNodeView', () => {
|
|
|
568
569
|
});
|
|
569
570
|
});
|
|
570
571
|
|
|
572
|
+
describe('unique math-node class per instance', () => {
|
|
573
|
+
let dateNowSpy;
|
|
574
|
+
|
|
575
|
+
beforeEach(() => {
|
|
576
|
+
let timestamp = 1000;
|
|
577
|
+
dateNowSpy = jest.spyOn(Date, 'now').mockImplementation(() => timestamp++);
|
|
578
|
+
});
|
|
579
|
+
|
|
580
|
+
afterEach(() => {
|
|
581
|
+
dateNowSpy.mockRestore();
|
|
582
|
+
});
|
|
583
|
+
|
|
584
|
+
it('assigns a timestamp-based class to NodeViewWrapper', () => {
|
|
585
|
+
const { getByTestId } = render(<MathNodeView {...defaultProps} />);
|
|
586
|
+
const wrapper = getByTestId('node-view-wrapper');
|
|
587
|
+
|
|
588
|
+
expect(wrapper.className).toMatch(/^math-node-\d+$/);
|
|
589
|
+
});
|
|
590
|
+
|
|
591
|
+
it('assigns a different class to each MathNodeView instance', () => {
|
|
592
|
+
const { getAllByTestId } = render(
|
|
593
|
+
<>
|
|
594
|
+
<MathNodeView {...defaultProps} />
|
|
595
|
+
<MathNodeView {...defaultProps} node={{ attrs: { latex: 'y^2' } }} />
|
|
596
|
+
</>,
|
|
597
|
+
);
|
|
598
|
+
|
|
599
|
+
const wrappers = getAllByTestId('node-view-wrapper');
|
|
600
|
+
expect(wrappers[0].className).toBe('math-node-1000');
|
|
601
|
+
expect(wrappers[1].className).toBe('math-node-1001');
|
|
602
|
+
});
|
|
603
|
+
|
|
604
|
+
it('closes toolbar when clicking a different math node', async () => {
|
|
605
|
+
const updateAttributes = jest.fn();
|
|
606
|
+
const editorA = createMockEditor();
|
|
607
|
+
const editorB = createMockEditor();
|
|
608
|
+
|
|
609
|
+
const { getAllByTestId, queryAllByTestId } = render(
|
|
610
|
+
<>
|
|
611
|
+
<MathNodeView {...defaultProps} editor={editorA} updateAttributes={updateAttributes} selected={true} />
|
|
612
|
+
<MathNodeView {...defaultProps} editor={editorB} node={{ attrs: { latex: 'y^2' } }} selected={false} />
|
|
613
|
+
</>,
|
|
614
|
+
);
|
|
615
|
+
|
|
616
|
+
await waitFor(() => {
|
|
617
|
+
expect(queryAllByTestId('math-toolbar')).toHaveLength(1);
|
|
618
|
+
});
|
|
619
|
+
|
|
620
|
+
const secondPreview = getAllByTestId('math-preview')[1];
|
|
621
|
+
fireEvent.click(secondPreview);
|
|
622
|
+
|
|
623
|
+
await waitFor(() => {
|
|
624
|
+
expect(queryAllByTestId('math-toolbar')).toHaveLength(1);
|
|
625
|
+
expect(updateAttributes).toHaveBeenCalledWith({ latex: 'x^2' });
|
|
626
|
+
expect(editorA._toolbarOpened).toBe(false);
|
|
627
|
+
expect(getAllByTestId('math-input')[0]).toHaveValue('y^2');
|
|
628
|
+
});
|
|
629
|
+
});
|
|
630
|
+
});
|
|
631
|
+
|
|
571
632
|
it('does not close toolbar when clicking equation editor dropdown', async () => {
|
|
572
633
|
const { queryByTestId } = render(<MathNodeView {...defaultProps} selected={true} />);
|
|
573
634
|
|
package/src/extensions/math.js
CHANGED
|
@@ -5,6 +5,7 @@ import { NodeViewWrapper, ReactNodeViewRenderer } from '@tiptap/react';
|
|
|
5
5
|
import { NodeSelection, Plugin, PluginKey, TextSelection } from 'prosemirror-state';
|
|
6
6
|
import { MathPreview, MathToolbar } from '@pie-lib/math-toolbar';
|
|
7
7
|
import { wrapMath } from '@pie-lib/math-rendering';
|
|
8
|
+
import { setToolbarOpened } from '../utils/toolbar';
|
|
8
9
|
|
|
9
10
|
const ensureTextAfterMathPluginKey = new PluginKey('ensureTextAfterMath');
|
|
10
11
|
|
|
@@ -183,6 +184,7 @@ export const MathNodeView = (props) => {
|
|
|
183
184
|
const { node, updateAttributes, editor, selected, options } = props;
|
|
184
185
|
const [showToolbar, setShowToolbar] = useState(selected);
|
|
185
186
|
const toolbarRef = useRef(null);
|
|
187
|
+
const timestamp = useRef(Date.now());
|
|
186
188
|
const [position, setPosition] = useState({ top: 0, left: 0 });
|
|
187
189
|
const { math: mathOptions = {} } = options || {};
|
|
188
190
|
const {
|
|
@@ -203,8 +205,6 @@ export const MathNodeView = (props) => {
|
|
|
203
205
|
updateAttributes({ latex: newLatex });
|
|
204
206
|
setShowToolbar(false);
|
|
205
207
|
|
|
206
|
-
editor._toolbarOpened = false;
|
|
207
|
-
|
|
208
208
|
const { selection, tr, doc } = editor.state;
|
|
209
209
|
const sel = TextSelection.create(doc, selection.from + 1);
|
|
210
210
|
|
|
@@ -221,8 +221,8 @@ export const MathNodeView = (props) => {
|
|
|
221
221
|
}, [selected]);
|
|
222
222
|
|
|
223
223
|
useEffect(() => {
|
|
224
|
-
editor
|
|
225
|
-
}, [showToolbar]);
|
|
224
|
+
setToolbarOpened(editor, showToolbar);
|
|
225
|
+
}, [editor, showToolbar]);
|
|
226
226
|
|
|
227
227
|
useEffect(() => {
|
|
228
228
|
// Calculate position relative to selection
|
|
@@ -253,7 +253,7 @@ export const MathNodeView = (props) => {
|
|
|
253
253
|
// will keep/re-open the toolbar. Without this guard, closing and then
|
|
254
254
|
// immediately clicking the math node would fire this listener in the same
|
|
255
255
|
// event cycle and close the toolbar before it could open.
|
|
256
|
-
const clickedMathNode = !!target?.closest?.(
|
|
256
|
+
const clickedMathNode = !!target?.closest?.(`.math-node-${timestamp.current}`);
|
|
257
257
|
|
|
258
258
|
if (
|
|
259
259
|
toolbarRef.current &&
|
|
@@ -281,7 +281,7 @@ export const MathNodeView = (props) => {
|
|
|
281
281
|
|
|
282
282
|
return (
|
|
283
283
|
<NodeViewWrapper
|
|
284
|
-
className=
|
|
284
|
+
className={`math-node-${timestamp.current}`}
|
|
285
285
|
style={{
|
|
286
286
|
display: 'inline-flex',
|
|
287
287
|
cursor: 'pointer',
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import { setToolbarOpened, TOOLBAR_OPENED_META_KEY } from '../toolbar';
|
|
2
|
+
|
|
3
|
+
describe('setToolbarOpened', () => {
|
|
4
|
+
const createEditor = (toolbarOpened = false) => {
|
|
5
|
+
const tr = {
|
|
6
|
+
setMeta: jest.fn().mockReturnThis(),
|
|
7
|
+
};
|
|
8
|
+
|
|
9
|
+
return {
|
|
10
|
+
_toolbarOpened: toolbarOpened,
|
|
11
|
+
state: { tr },
|
|
12
|
+
view: {
|
|
13
|
+
dispatch: jest.fn(),
|
|
14
|
+
},
|
|
15
|
+
};
|
|
16
|
+
};
|
|
17
|
+
|
|
18
|
+
it('sets editor._toolbarOpened and dispatches a meta transaction', () => {
|
|
19
|
+
const editor = createEditor(false);
|
|
20
|
+
|
|
21
|
+
setToolbarOpened(editor, true);
|
|
22
|
+
|
|
23
|
+
expect(editor._toolbarOpened).toBe(true);
|
|
24
|
+
expect(editor.state.tr.setMeta).toHaveBeenCalledWith(TOOLBAR_OPENED_META_KEY, true);
|
|
25
|
+
expect(editor.view.dispatch).toHaveBeenCalledWith(editor.state.tr);
|
|
26
|
+
});
|
|
27
|
+
|
|
28
|
+
it('does nothing when the value is unchanged', () => {
|
|
29
|
+
const editor = createEditor(true);
|
|
30
|
+
|
|
31
|
+
setToolbarOpened(editor, true);
|
|
32
|
+
|
|
33
|
+
expect(editor.view.dispatch).not.toHaveBeenCalled();
|
|
34
|
+
});
|
|
35
|
+
|
|
36
|
+
it('coerces the opened value to a boolean', () => {
|
|
37
|
+
const editor = createEditor(false);
|
|
38
|
+
|
|
39
|
+
setToolbarOpened(editor, 1);
|
|
40
|
+
|
|
41
|
+
expect(editor._toolbarOpened).toBe(true);
|
|
42
|
+
});
|
|
43
|
+
});
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
export const TOOLBAR_OPENED_META_KEY = 'toolbarOpenedChanged';
|
|
2
|
+
|
|
3
|
+
export const setToolbarOpened = (editor, opened) => {
|
|
4
|
+
const next = !!opened;
|
|
5
|
+
|
|
6
|
+
if (editor._toolbarOpened === next) {
|
|
7
|
+
return;
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
editor._toolbarOpened = next;
|
|
11
|
+
|
|
12
|
+
if (editor?.view && editor?.state?.tr) {
|
|
13
|
+
editor.view.dispatch(editor.state.tr.setMeta(TOOLBAR_OPENED_META_KEY, true));
|
|
14
|
+
}
|
|
15
|
+
};
|