@bigbinary/neeto-editor 1.47.116 → 1.47.118

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.
Files changed (54) hide show
  1. package/dist/Attachments.js +1 -1
  2. package/dist/Editor.js +2 -2
  3. package/dist/FormikEditor.js +1 -1
  4. package/dist/{chunk-C2YYL9vY.js → chunk-Ck5Gyhaq.js} +8 -4
  5. package/dist/chunk-Ck5Gyhaq.js.map +1 -0
  6. package/dist/{chunk-3JO2B_HR.js → chunk-DSFIk2ef.js} +3 -2
  7. package/dist/chunk-DSFIk2ef.js.map +1 -0
  8. package/dist/{chunk-BO6bjSuY.js → chunk-DdxH-PMo.js} +2 -2
  9. package/dist/{chunk-BO6bjSuY.js.map → chunk-DdxH-PMo.js.map} +1 -1
  10. package/dist/{chunk-CNWsmIz_.js → chunk-W5-WB6Fb.js} +11 -11
  11. package/dist/chunk-W5-WB6Fb.js.map +1 -0
  12. package/dist/cjs/Attachments.cjs.js +1 -1
  13. package/dist/cjs/Editor.cjs.js +2 -2
  14. package/dist/cjs/FormikEditor.cjs.js +1 -1
  15. package/dist/cjs/{chunk-BYyLrDTW.cjs.js → chunk-62QG5j0v.cjs.js} +3 -2
  16. package/dist/cjs/chunk-62QG5j0v.cjs.js.map +1 -0
  17. package/dist/cjs/{chunk-BzPTK6pP.cjs.js → chunk-Cqq9Q2Ty.cjs.js} +8 -4
  18. package/dist/cjs/chunk-Cqq9Q2Ty.cjs.js.map +1 -0
  19. package/dist/cjs/{chunk-DRB71ojr.cjs.js → chunk-D8Uup1eh.cjs.js} +2 -2
  20. package/dist/cjs/{chunk-DRB71ojr.cjs.js.map → chunk-D8Uup1eh.cjs.js.map} +1 -1
  21. package/dist/cjs/{chunk-CIuJ_EMY.cjs.js → chunk-DE_yHAbe.cjs.js} +11 -11
  22. package/dist/cjs/chunk-DE_yHAbe.cjs.js.map +1 -0
  23. package/dist/cjs/index.cjs.js +2 -2
  24. package/dist/cjs/v2/Editor.cjs.js +81 -43
  25. package/dist/cjs/v2/Editor.cjs.js.map +1 -1
  26. package/dist/cjs/v2/EditorContent.cjs.js +1 -1
  27. package/dist/cjs/v2/FormikEditor.cjs.js +1 -1
  28. package/dist/cjs/v2/Menu.cjs.js +1 -1
  29. package/dist/cjs/v2/constants.cjs.js +13 -0
  30. package/dist/cjs/v2/constants.cjs.js.map +1 -0
  31. package/dist/cjs/v2/index.cjs.js +2 -2
  32. package/dist/cjs/v2/utils.cjs.js +29 -0
  33. package/dist/cjs/v2/utils.cjs.js.map +1 -0
  34. package/dist/editor-stats.html +2 -2
  35. package/dist/index.js +2 -2
  36. package/dist/v2/Editor.js +84 -46
  37. package/dist/v2/Editor.js.map +1 -1
  38. package/dist/v2/EditorContent.js +1 -1
  39. package/dist/v2/FormikEditor.js +1 -1
  40. package/dist/v2/Menu.js +1 -1
  41. package/dist/v2/constants.js +6 -0
  42. package/dist/v2/constants.js.map +1 -0
  43. package/dist/v2/index.js +2 -2
  44. package/dist/v2/styles.css +1 -1
  45. package/dist/v2/styles.js +1 -1
  46. package/dist/v2/utils.js +17 -0
  47. package/dist/v2/utils.js.map +1 -0
  48. package/package.json +1 -1
  49. package/dist/chunk-3JO2B_HR.js.map +0 -1
  50. package/dist/chunk-C2YYL9vY.js.map +0 -1
  51. package/dist/chunk-CNWsmIz_.js.map +0 -1
  52. package/dist/cjs/chunk-BYyLrDTW.cjs.js.map +0 -1
  53. package/dist/cjs/chunk-BzPTK6pP.cjs.js.map +0 -1
  54. package/dist/cjs/chunk-CIuJ_EMY.cjs.js.map +0 -1
@@ -18,7 +18,7 @@ var ramda = require('ramda');
18
18
  var ReactDOM = require('react-dom/server');
19
19
  var common = require('../chunk-De3nCFAF.cjs.js');
20
20
  var jsxRuntime = require('react/jsx-runtime');
21
- var v2_Menu = require('../chunk-BzPTK6pP.cjs.js');
21
+ var v2_Menu = require('../chunk-Cqq9Q2Ty.cjs.js');
22
22
  var Megaphone = require('@bigbinary/neeto-icons/misc/Megaphone');
23
23
  var index$1 = require('../chunk-eyfbjfPH.cjs.js');
24
24
  var lucideReact = require('lucide-react');
@@ -803,6 +803,23 @@ var DeletedArticleDecoration = useEditorStore.Extension.create({
803
803
  }
804
804
  });
805
805
 
806
+ var EditorContainer = useEditorStore.Extension.create({
807
+ name: "editorContainer",
808
+ addOptions: function addOptions() {
809
+ return {
810
+ containerRef: null
811
+ };
812
+ },
813
+ addStorage: function addStorage() {
814
+ return {
815
+ containerRef: null
816
+ };
817
+ },
818
+ onBeforeCreate: function onBeforeCreate() {
819
+ this.storage.containerRef = this.options.containerRef;
820
+ }
821
+ });
822
+
806
823
  function ownKeys$i(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; }
807
824
  function _objectSpread$i(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$i(Object(t), true).forEach(function (r) { _defineProperty__default.default(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$i(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
808
825
  var EmojiPickerPluginKey = new index$1.PluginKey("emoji-picker");
@@ -834,7 +851,8 @@ var EmojiPicker = useEditorStore.Node.create({
834
851
  theme: "light",
835
852
  getReferenceClientRect: props.clientRect,
836
853
  appendTo: function appendTo() {
837
- return document.body;
854
+ var _props$editor$storage, _props$editor;
855
+ return (_props$editor$storage = (_props$editor = props.editor) === null || _props$editor === void 0 || (_props$editor = _props$editor.storage) === null || _props$editor === void 0 || (_props$editor = _props$editor.editorContainer) === null || _props$editor === void 0 || (_props$editor = _props$editor.containerRef) === null || _props$editor === void 0 ? void 0 : _props$editor.current) !== null && _props$editor$storage !== void 0 ? _props$editor$storage : document.body;
838
856
  },
839
857
  content: reactRenderer.element,
840
858
  showOnCreate: true,
@@ -1199,7 +1217,8 @@ var suggestionConfig = {
1199
1217
  theme: "light",
1200
1218
  getReferenceClientRect: props.clientRect,
1201
1219
  appendTo: function appendTo() {
1202
- return document.body;
1220
+ var _props$editor$storage, _props$editor;
1221
+ return (_props$editor$storage = (_props$editor = props.editor) === null || _props$editor === void 0 || (_props$editor = _props$editor.storage) === null || _props$editor === void 0 || (_props$editor = _props$editor.editorContainer) === null || _props$editor === void 0 || (_props$editor = _props$editor.containerRef) === null || _props$editor === void 0 ? void 0 : _props$editor.current) !== null && _props$editor$storage !== void 0 ? _props$editor$storage : document.body;
1203
1222
  },
1204
1223
  content: reactRenderer.element,
1205
1224
  showOnCreate: true,
@@ -1245,43 +1264,50 @@ var ImagePreviewModal = function ImagePreviewModal(_ref) {
1245
1264
  _useState2 = _slicedToArray__default.default(_useState, 2),
1246
1265
  isLoading = _useState2[0],
1247
1266
  setIsLoading = _useState2[1];
1248
- var handleImageLoad = function handleImageLoad() {
1249
- return setIsLoading(false);
1250
- };
1267
+ var imagePreviewRef = React.useRef(null);
1251
1268
  var handleClose = function handleClose() {
1252
1269
  setIsLoading(true);
1253
1270
  setPreviewUrl(null);
1254
1271
  };
1255
- return /*#__PURE__*/jsxRuntime.jsx(neetoAtoms.Dialog, {
1256
- className: "image-preview-neeto-ui-modal",
1257
- closeButton: false,
1258
- isOpen: neetoCist.isPresent(previewUrl),
1259
- size: "fullScreen",
1260
- onClose: handleClose,
1261
- children: /*#__PURE__*/jsxRuntime.jsxs(jsxRuntime.Fragment, {
1262
- children: [isLoading || ramda.isNil(previewUrl) ? /*#__PURE__*/jsxRuntime.jsx("div", {
1263
- className: "spinner-wrapper",
1264
- children: /*#__PURE__*/jsxRuntime.jsx(neetoAtoms.Spinner, {
1265
- className: "spinner"
1272
+ reactUtils.useOnClickOutside(imagePreviewRef, handleClose, {
1273
+ enabled: neetoCist.isPresent(previewUrl)
1274
+ });
1275
+ React.useEffect(function () {
1276
+ if (!previewUrl || !imagePreviewRef.current) return;
1277
+ imagePreviewRef.current.setAttribute("tabindex", "-1");
1278
+ imagePreviewRef.current.focus();
1279
+ }, [previewUrl]);
1280
+ var handleKeyDown = function handleKeyDown(e) {
1281
+ e.stopPropagation();
1282
+ e.key === "Escape" && handleClose();
1283
+ };
1284
+ if (!neetoCist.isPresent(previewUrl)) return null;
1285
+ return /*#__PURE__*/ReactDOM$1.createPortal(/*#__PURE__*/jsxRuntime.jsxs("div", {
1286
+ className: "ne-image-preview-wrapper active",
1287
+ children: [isLoading && /*#__PURE__*/jsxRuntime.jsx(neetoAtoms.Spinner, {
1288
+ className: "ne-image-preview-wrapper__spinner"
1289
+ }), /*#__PURE__*/jsxRuntime.jsxs("div", {
1290
+ className: classnames__default.default("ne-image-preview", {
1291
+ "image-loaded": !isLoading
1292
+ }),
1293
+ children: [!isLoading && /*#__PURE__*/jsxRuntime.jsx("div", {
1294
+ className: "close-button",
1295
+ children: /*#__PURE__*/jsxRuntime.jsx(neetoAtoms.Button, {
1296
+ icon: lucideReact.X,
1297
+ variant: "secondary",
1298
+ onClick: handleClose
1266
1299
  })
1267
- }) : /*#__PURE__*/jsxRuntime.jsx(neetoAtoms.Button, {
1268
- className: "image-preview-neeto-ui-modal__close-btn",
1269
- icon: lucideReact.X,
1270
- variant: "secondary",
1271
- onClick: handleClose,
1272
- onKeyDown: function onKeyDown(e) {
1273
- return e.key === "Escape" && handleClose;
1274
- }
1275
1300
  }), /*#__PURE__*/jsxRuntime.jsx("img", {
1276
1301
  alt: "Preview",
1302
+ ref: imagePreviewRef,
1277
1303
  src: previewUrl,
1278
- className: classnames__default.default({
1279
- "display-none": isLoading || ramda.isNil(previewUrl)
1280
- }),
1281
- onLoad: handleImageLoad
1304
+ onKeyDown: handleKeyDown,
1305
+ onLoad: function onLoad() {
1306
+ return setIsLoading(false);
1307
+ }
1282
1308
  })]
1283
- })
1284
- });
1309
+ })]
1310
+ }), document.body);
1285
1311
  };
1286
1312
 
1287
1313
  var DropdownMenuList = neetoAtoms.DropdownMenu.Menu,
@@ -2174,7 +2200,8 @@ var suggestion$1 = {
2174
2200
  theme: "light neeto-editor-mentions-tooltip",
2175
2201
  getReferenceClientRect: props.clientRect,
2176
2202
  appendTo: function appendTo() {
2177
- return document.body;
2203
+ var _props$editor$storage, _props$editor;
2204
+ return (_props$editor$storage = (_props$editor = props.editor) === null || _props$editor === void 0 || (_props$editor = _props$editor.storage) === null || _props$editor === void 0 || (_props$editor = _props$editor.editorContainer) === null || _props$editor === void 0 || (_props$editor = _props$editor.containerRef) === null || _props$editor === void 0 ? void 0 : _props$editor.current) !== null && _props$editor$storage !== void 0 ? _props$editor$storage : document.body;
2178
2205
  },
2179
2206
  content: reactRenderer.element,
2180
2207
  showOnCreate: true,
@@ -3027,7 +3054,8 @@ var SlashCommands = {
3027
3054
  popup = tippy__default.default("body", {
3028
3055
  getReferenceClientRect: props.clientRect,
3029
3056
  appendTo: function appendTo() {
3030
- return document.body;
3057
+ var _props$editor$storage, _props$editor;
3058
+ return (_props$editor$storage = (_props$editor = props.editor) === null || _props$editor === void 0 || (_props$editor = _props$editor.storage) === null || _props$editor === void 0 || (_props$editor = _props$editor.editorContainer) === null || _props$editor === void 0 || (_props$editor = _props$editor.containerRef) === null || _props$editor === void 0 ? void 0 : _props$editor.current) !== null && _props$editor$storage !== void 0 ? _props$editor$storage : document.body;
3031
3059
  },
3032
3060
  content: reactRenderer.element,
3033
3061
  showOnCreate: true,
@@ -3104,7 +3132,8 @@ var suggestion = {
3104
3132
  theme: "light neeto-editor-mentions-tooltip",
3105
3133
  getReferenceClientRect: props.clientRect,
3106
3134
  appendTo: function appendTo() {
3107
- return document.body;
3135
+ var _props$editor$storage, _props$editor;
3136
+ return (_props$editor$storage = (_props$editor = props.editor) === null || _props$editor === void 0 || (_props$editor = _props$editor.storage) === null || _props$editor === void 0 || (_props$editor = _props$editor.editorContainer) === null || _props$editor === void 0 || (_props$editor = _props$editor.containerRef) === null || _props$editor === void 0 ? void 0 : _props$editor.current) !== null && _props$editor$storage !== void 0 ? _props$editor$storage : document.body;
3108
3137
  },
3109
3138
  content: reactRenderer.element,
3110
3139
  showOnCreate: true,
@@ -3982,8 +4011,11 @@ var useCustomExtensions = function useCustomExtensions(_ref) {
3982
4011
  openLinkInNewTab = _ref.openLinkInNewTab,
3983
4012
  enableReactNodeViewOptimization = _ref.enableReactNodeViewOptimization,
3984
4013
  collaborationProvider = _ref.collaborationProvider,
3985
- setIsNeetoKbArticleActive = _ref.setIsNeetoKbArticleActive;
3986
- var customExtensions = [index.CharacterCount, index.Code, CodeBlock.configure({
4014
+ setIsNeetoKbArticleActive = _ref.setIsNeetoKbArticleActive,
4015
+ containerRef = _ref.containerRef;
4016
+ var customExtensions = [EditorContainer.configure({
4017
+ containerRef: containerRef
4018
+ }), index.CharacterCount, index.Code, CodeBlock.configure({
3987
4019
  enableReactNodeViewOptimization: enableReactNodeViewOptimization
3988
4020
  }), CustomCommands, index.Document, FigCaption, HighlightInternal, SelectionDecoration, index.FocusClasses.configure({
3989
4021
  mode: "shallowest"
@@ -4781,9 +4813,10 @@ var KbArticleView = reactUtils.withT(function (_ref) {
4781
4813
  });
4782
4814
 
4783
4815
  var LinkPopOver = function LinkPopOver(_ref) {
4784
- var _view$state, _view$state2;
4816
+ var _view$state, _view$state2, _containerRef$current;
4785
4817
  var editor = _ref.editor,
4786
- deletedArticlesHook = _ref.deletedArticlesHook;
4818
+ deletedArticlesHook = _ref.deletedArticlesHook,
4819
+ containerRef = _ref.containerRef;
4787
4820
  var _ref2 = editor || {},
4788
4821
  view = _ref2.view;
4789
4822
  var from = editor.state.selection.from;
@@ -5171,7 +5204,7 @@ var LinkPopOver = function LinkPopOver(_ref) {
5171
5204
  style: popoverStyle,
5172
5205
  children: renderPopoverContent()
5173
5206
  })]
5174
- }) : null, document.body), /*#__PURE__*/jsxRuntime.jsx(KbArticleDeletedModal, {
5207
+ }) : null, (_containerRef$current = containerRef === null || containerRef === void 0 ? void 0 : containerRef.current) !== null && _containerRef$current !== void 0 ? _containerRef$current : document.body), /*#__PURE__*/jsxRuntime.jsx(KbArticleDeletedModal, {
5175
5208
  isOpen: showDeletedModal,
5176
5209
  onClose: function onClose() {
5177
5210
  return setShowDeletedModal(false);
@@ -5184,6 +5217,7 @@ var _excluded = ["addonCommands", "addons", "attachments", "attachmentsConfig",
5184
5217
  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; }
5185
5218
  function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), true).forEach(function (r) { _defineProperty__default.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; }
5186
5219
  var Editor$1 = function Editor(_ref, ref) {
5220
+ var _wrapperRef$current;
5187
5221
  var _ref$addonCommands = _ref.addonCommands,
5188
5222
  addonCommands = _ref$addonCommands === void 0 ? [] : _ref$addonCommands,
5189
5223
  _ref$addons = _ref.addons,
@@ -5333,7 +5367,8 @@ var Editor$1 = function Editor(_ref, ref) {
5333
5367
  openLinkInNewTab: openLinkInNewTab,
5334
5368
  enableReactNodeViewOptimization: enableReactNodeViewOptimization,
5335
5369
  collaborationProvider: collaborationProvider,
5336
- setIsNeetoKbArticleActive: setNeetoKbArticleState
5370
+ setIsNeetoKbArticleActive: setNeetoKbArticleState,
5371
+ containerRef: wrapperRef
5337
5372
  });
5338
5373
  index.useEditorWarnings({
5339
5374
  initialValue: initialValue
@@ -5449,6 +5484,7 @@ var Editor$1 = function Editor(_ref, ref) {
5449
5484
  tooltips: tooltips,
5450
5485
  variables: variables,
5451
5486
  className: menuClassName,
5487
+ containerRef: wrapperRef,
5452
5488
  isIndependant: isMenuIndependent,
5453
5489
  setIsNeetoKbArticleActive: setNeetoKbArticleState
5454
5490
  }), children, menuType === "none" && /*#__PURE__*/jsxRuntime.jsx("div", {
@@ -5483,12 +5519,14 @@ var Editor$1 = function Editor(_ref, ref) {
5483
5519
  onChange: onChangeAttachments
5484
5520
  }, otherAttachmentProps)), (editor === null || editor === void 0 ? void 0 : editor.isActive("link")) && /*#__PURE__*/jsxRuntime.jsx(LinkPopOver, {
5485
5521
  deletedArticlesHook: deletedArticlesHook,
5486
- editor: editor
5522
+ editor: editor,
5523
+ containerRef: wrapperRef
5487
5524
  }), isAddLinkActive && /*#__PURE__*/jsxRuntime.jsx(v2_Menu.LinkAddPopOver, {
5488
5525
  editor: editor,
5489
5526
  isAddLinkActive: isAddLinkActive,
5490
5527
  openLinkInNewTab: openLinkInNewTab,
5491
- setIsAddLinkActive: setIsAddLinkActive
5528
+ setIsAddLinkActive: setIsAddLinkActive,
5529
+ containerRef: wrapperRef
5492
5530
  }), neetoKbArticleState.active && neetoKbArticleState.cursorPos && /*#__PURE__*/ReactDOM$1.createPortal(/*#__PURE__*/jsxRuntime.jsx(ArticleSelector, {
5493
5531
  deletedArticlesHook: deletedArticlesHook,
5494
5532
  cursorPos: neetoKbArticleState.cursorPos,
@@ -5501,7 +5539,7 @@ var Editor$1 = function Editor(_ref, ref) {
5501
5539
  cursorPos: null
5502
5540
  });
5503
5541
  }
5504
- }), document.body), /*#__PURE__*/jsxRuntime.jsx(TableActionMenu, {
5542
+ }), (_wrapperRef$current = wrapperRef.current) !== null && _wrapperRef$current !== void 0 ? _wrapperRef$current : document.body), /*#__PURE__*/jsxRuntime.jsx(TableActionMenu, {
5505
5543
  editor: editor,
5506
5544
  appendTo: wrapperRef
5507
5545
  }), isCharacterCountActive && /*#__PURE__*/jsxRuntime.jsx(CharacterCountWrapper, {