@bigbinary/neeto-editor-frontend 2.2.0-beta1 → 2.2.1-beta1

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 (73) hide show
  1. package/dist/.ready +1 -1
  2. package/dist/Editor.js +7 -7
  3. package/dist/EditorContent.js +4 -4
  4. package/dist/FormikEditor.js +7 -7
  5. package/dist/Menu.js +5 -5
  6. package/dist/{chunk-CRUXOawK.js → chunk-1M4UCVBr.js} +3 -3
  7. package/dist/{chunk-CRUXOawK.js.map → chunk-1M4UCVBr.js.map} +1 -1
  8. package/dist/{chunk-lEnpEBRB.js → chunk-3LgESIh3.js} +5 -5
  9. package/dist/{chunk-lEnpEBRB.js.map → chunk-3LgESIh3.js.map} +1 -1
  10. package/dist/{chunk-YhV82e9I.js → chunk-BTYv4SBo.js} +4 -4
  11. package/dist/{chunk-YhV82e9I.js.map → chunk-BTYv4SBo.js.map} +1 -1
  12. package/dist/{chunk-BpMZjml2.js → chunk-C9H9LYpP.js} +2 -2
  13. package/dist/chunk-C9H9LYpP.js.map +1 -0
  14. package/dist/{chunk-BNyLNMnb.js → chunk-CqROtMuL.js} +3 -3
  15. package/dist/{chunk-BNyLNMnb.js.map → chunk-CqROtMuL.js.map} +1 -1
  16. package/dist/{chunk-DYRpf9PJ.js → chunk-DPx9v04U.js} +3 -3
  17. package/dist/{chunk-DYRpf9PJ.js.map → chunk-DPx9v04U.js.map} +1 -1
  18. package/dist/{chunk-7ioLE0kx.js → chunk-DcxOAiAp.js} +2 -2
  19. package/dist/{chunk-7ioLE0kx.js.map → chunk-DcxOAiAp.js.map} +1 -1
  20. package/dist/{chunk-DN9pYQV5.js → chunk-DqSrbxqC.js} +2 -2
  21. package/dist/{chunk-DN9pYQV5.js.map → chunk-DqSrbxqC.js.map} +1 -1
  22. package/dist/{chunk-Br5h7rjn.js → chunk-GA-wADEN.js} +3 -3
  23. package/dist/{chunk-Br5h7rjn.js.map → chunk-GA-wADEN.js.map} +1 -1
  24. package/dist/{chunk-DfH1lF5p.js → chunk-LtUevT4I.js} +2 -2
  25. package/dist/{chunk-DfH1lF5p.js.map → chunk-LtUevT4I.js.map} +1 -1
  26. package/dist/{chunk-sn8HEeT6.js → chunk-yBvbLjSM.js} +4 -4
  27. package/dist/{chunk-sn8HEeT6.js.map → chunk-yBvbLjSM.js.map} +1 -1
  28. package/dist/cjs/Editor.cjs.js +7 -7
  29. package/dist/cjs/EditorContent.cjs.js +4 -4
  30. package/dist/cjs/FormikEditor.cjs.js +7 -7
  31. package/dist/cjs/Menu.cjs.js +5 -5
  32. package/dist/cjs/{chunk-V1V-Gqfy.cjs.js → chunk-C-I6s_l9.cjs.js} +3 -3
  33. package/dist/cjs/{chunk-V1V-Gqfy.cjs.js.map → chunk-C-I6s_l9.cjs.js.map} +1 -1
  34. package/dist/cjs/{chunk-DRnP2LQe.cjs.js → chunk-CJIIbW7G.cjs.js} +2 -2
  35. package/dist/cjs/{chunk-DRnP2LQe.cjs.js.map → chunk-CJIIbW7G.cjs.js.map} +1 -1
  36. package/dist/cjs/{chunk-CQLQEN5P.cjs.js → chunk-CU6dMPZV.cjs.js} +2 -2
  37. package/dist/cjs/{chunk-CQLQEN5P.cjs.js.map → chunk-CU6dMPZV.cjs.js.map} +1 -1
  38. package/dist/cjs/{chunk-BPJBeVDI.cjs.js → chunk-C_XHzWXy.cjs.js} +2 -2
  39. package/dist/cjs/chunk-C_XHzWXy.cjs.js.map +1 -0
  40. package/dist/cjs/{chunk-bfmPXyQJ.cjs.js → chunk-CddQ0UHU.cjs.js} +3 -3
  41. package/dist/cjs/{chunk-bfmPXyQJ.cjs.js.map → chunk-CddQ0UHU.cjs.js.map} +1 -1
  42. package/dist/cjs/{chunk-78VpxO0R.cjs.js → chunk-CkSG3yNC.cjs.js} +4 -4
  43. package/dist/cjs/{chunk-78VpxO0R.cjs.js.map → chunk-CkSG3yNC.cjs.js.map} +1 -1
  44. package/dist/cjs/{chunk-CwY6UgZq.cjs.js → chunk-CxKWZyHq.cjs.js} +3 -3
  45. package/dist/cjs/{chunk-CwY6UgZq.cjs.js.map → chunk-CxKWZyHq.cjs.js.map} +1 -1
  46. package/dist/cjs/{chunk-j4T5BDua.cjs.js → chunk-Df33Mipq.cjs.js} +5 -5
  47. package/dist/cjs/{chunk-j4T5BDua.cjs.js.map → chunk-Df33Mipq.cjs.js.map} +1 -1
  48. package/dist/cjs/{chunk-bxP1kilM.cjs.js → chunk-Dwv-JqJN.cjs.js} +2 -2
  49. package/dist/cjs/{chunk-bxP1kilM.cjs.js.map → chunk-Dwv-JqJN.cjs.js.map} +1 -1
  50. package/dist/cjs/{chunk-CBswWnmM.cjs.js → chunk-Niprqtd_.cjs.js} +3 -3
  51. package/dist/cjs/{chunk-CBswWnmM.cjs.js.map → chunk-Niprqtd_.cjs.js.map} +1 -1
  52. package/dist/cjs/{chunk-QnVNXaqt.cjs.js → chunk-hjJXR4bM.cjs.js} +4 -4
  53. package/dist/cjs/{chunk-QnVNXaqt.cjs.js.map → chunk-hjJXR4bM.cjs.js.map} +1 -1
  54. package/dist/cjs/index.cjs.js +9 -9
  55. package/dist/cjs/utils.cjs.js +6 -6
  56. package/dist/cjs/v2/Editor.cjs.js +6 -6
  57. package/dist/cjs/v2/EditorContent.cjs.js +4 -4
  58. package/dist/cjs/v2/FormikEditor.cjs.js +6 -6
  59. package/dist/cjs/v2/Menu.cjs.js +4 -4
  60. package/dist/cjs/v2/index.cjs.js +8 -8
  61. package/dist/cjs/v2/utils.cjs.js +6 -6
  62. package/dist/editor-stats.html +19 -1
  63. package/dist/index.js +9 -9
  64. package/dist/utils.js +6 -6
  65. package/dist/v2/Editor.js +6 -6
  66. package/dist/v2/EditorContent.js +4 -4
  67. package/dist/v2/FormikEditor.js +6 -6
  68. package/dist/v2/Menu.js +4 -4
  69. package/dist/v2/index.js +8 -8
  70. package/dist/v2/utils.js +6 -6
  71. package/package.json +9 -9
  72. package/dist/chunk-BpMZjml2.js.map +0 -1
  73. package/dist/cjs/chunk-BPJBeVDI.cjs.js.map +0 -1
@@ -1,8 +1,8 @@
1
1
  'use strict';
2
2
 
3
3
  var _defineProperty = require('@babel/runtime/helpers/defineProperty');
4
- var markdown = require('./chunk-BPJBeVDI.cjs.js');
5
- var index = require('./chunk-DRnP2LQe.cjs.js');
4
+ var markdown = require('./chunk-C_XHzWXy.cjs.js');
5
+ var index = require('./chunk-CJIIbW7G.cjs.js');
6
6
  var neetoCist = require('@bigbinary/neeto-cist');
7
7
  var constants$1 = require('./chunk-BxKa_XOs.cjs.js');
8
8
  var constants = require('./chunk-CQ-j2kAX.cjs.js');
@@ -113,4 +113,4 @@ exports.setInitialPosition = setInitialPosition;
113
113
  exports.transformEditorContent = transformEditorContent;
114
114
  exports.transformPastedHTML = transformPastedHTML;
115
115
  exports.validateAndFormatUrl = validateAndFormatUrl;
116
- //# sourceMappingURL=chunk-CBswWnmM.cjs.js.map
116
+ //# sourceMappingURL=chunk-Niprqtd_.cjs.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"chunk-CBswWnmM.cjs.js","sources":["../../app/javascript/src/components/Editor/utils.js"],"sourcesContent":["import { Slice, Fragment, Node } from \"@tiptap/pm/model\";\nimport { Selection } from \"@tiptap/pm/state\";\nimport { isNotEmpty } from \"neetocist\";\n\nimport { ALL_PROTOCOL_URL_REGEXP, EDITOR_OPTIONS } from \"src/common/constants\";\nimport { isMarkdown, markdownToSlice } from \"src/utils/markdown\";\n\nimport {\n EDITOR_LINE_HEIGHT,\n EDITOR_BORDER_SIZE,\n EDITOR_PADDING_SIZE,\n IMAGE_REGEX,\n IMAGE_REPLACEMENT_PATTERN,\n EMPTY_DIV_REGEX,\n TRAILING_BR_REGEX,\n} from \"./constants\";\n\nexport const getEditorStyles = ({ rows }) => {\n const editorHeight =\n rows * EDITOR_LINE_HEIGHT + 2 * (EDITOR_PADDING_SIZE + EDITOR_BORDER_SIZE);\n\n return `min-height: ${editorHeight}px;`;\n};\n\nexport const clipboardTextParser = (text, context, plain, view) => {\n if (!plain && isMarkdown(text)) {\n return markdownToSlice(text, view.state.schema, context);\n }\n\n const nodes = [];\n const blocks = text.split(/\\n/);\n\n blocks.forEach(line => {\n const nodeJson = { type: \"paragraph\" };\n if (isNotEmpty(line)) {\n nodeJson.content = [{ type: \"text\", text: line }];\n }\n const node = Node.fromJSON(context.doc.type.schema, nodeJson);\n nodes.push(node);\n });\n\n const fragment = Fragment.fromArray(nodes);\n\n return Slice.maxOpen(fragment);\n};\n\nexport const setInitialPosition = editor => {\n const { state, view } = editor;\n const endPosition = Selection.atEnd(state.doc);\n const transaction = state.tr;\n transaction.setSelection(endPosition);\n view.dispatch(transaction);\n};\n\nexport const isEditorOverlaysActive = () =>\n document.querySelector(\n \".ne-media-uploader,.ne-embed-modal,.tippy-content,.ne-link-popover\"\n );\n\nexport const validateAndFormatUrl = url => {\n if (!ALL_PROTOCOL_URL_REGEXP.test(url)) {\n return null;\n }\n\n if (!/^[a-zA-Z]\\w*:/i.test(url)) {\n return `https://${url}`;\n }\n\n return url;\n};\n\nexport const transformEditorContent = content =>\n content\n ?.replaceAll(IMAGE_REGEX, IMAGE_REPLACEMENT_PATTERN)\n ?.replaceAll(EMPTY_DIV_REGEX, \"\")\n ?.replace(TRAILING_BR_REGEX, \"\");\n\nexport const isEmojiSuggestionsMenuActive = () =>\n !!document.querySelector(\".neeto-editor-emoji-suggestion\");\n\nexport const transformPastedHTML = content => {\n const contentWithoutBr = content.replaceAll(\"<br />\", \"<p></p>\");\n const doc = new DOMParser().parseFromString(contentWithoutBr, \"text/html\");\n\n // ProseMirror tags clipboard output from any TipTap/ProseMirror editor with\n // `data-pm-slice`. When present, the paste is coming from another\n // neeto-editor instance and we preserve the author's color choices. When\n // absent, the source is external (Word, websites, customer messages) and we\n // strip inline colors so foreign theming does not bleed into the editor.\n const isInternalPaste = doc.querySelector(\"[data-pm-slice]\") !== null;\n\n if (!isInternalPaste) {\n doc.querySelectorAll(\"[style]\").forEach(el => {\n el.style.color = \"\";\n el.style.backgroundColor = \"\";\n });\n }\n\n return doc.body.innerHTML;\n};\n\nexport const handlePaste = (view, event, slice) => {\n try {\n view.state.tr.replaceSelection(slice);\n\n return false;\n } catch {\n const text =\n event.clipboardData?.getData(\"text/plain\") ||\n slice.content.textBetween(0, slice.content.size, \"\\n\").trim();\n if (text) view.dispatch(view.state.tr.insertText(text).scrollIntoView());\n\n return true;\n }\n};\n\nexport const buildLevelsFromOptions = options => {\n const levels = {\n [EDITOR_OPTIONS.H1]: 1,\n [EDITOR_OPTIONS.H2]: 2,\n [EDITOR_OPTIONS.H3]: 3,\n [EDITOR_OPTIONS.H4]: 4,\n [EDITOR_OPTIONS.H5]: 5,\n [EDITOR_OPTIONS.H6]: 6,\n };\n\n return Object.entries(levels)\n .filter(heading => options.includes(heading[0]))\n .map(heading => heading[1]);\n};\n"],"names":["getEditorStyles","_ref","rows","editorHeight","EDITOR_LINE_HEIGHT","EDITOR_PADDING_SIZE","EDITOR_BORDER_SIZE","concat","clipboardTextParser","text","context","plain","view","isMarkdown","markdownToSlice","state","schema","nodes","blocks","split","forEach","line","nodeJson","type","isNotEmpty","content","node","Node","fromJSON","doc","push","fragment","Fragment","fromArray","Slice","maxOpen","setInitialPosition","editor","endPosition","Selection","atEnd","transaction","tr","setSelection","dispatch","isEditorOverlaysActive","document","querySelector","validateAndFormatUrl","url","ALL_PROTOCOL_URL_REGEXP","test","transformEditorContent","_content$replaceAll","replaceAll","IMAGE_REGEX","IMAGE_REPLACEMENT_PATTERN","EMPTY_DIV_REGEX","replace","TRAILING_BR_REGEX","isEmojiSuggestionsMenuActive","transformPastedHTML","contentWithoutBr","DOMParser","parseFromString","isInternalPaste","querySelectorAll","el","style","color","backgroundColor","body","innerHTML","handlePaste","event","slice","replaceSelection","_unused","_event$clipboardData","clipboardData","getData","textBetween","size","trim","insertText","scrollIntoView","buildLevelsFromOptions","options","levels","_defineProperty","EDITOR_OPTIONS","H1","H2","H3","H4","H5","H6","Object","entries","filter","heading","includes","map"],"mappings":"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"}
1
+ {"version":3,"file":"chunk-Niprqtd_.cjs.js","sources":["../../app/javascript/src/components/Editor/utils.js"],"sourcesContent":["import { Slice, Fragment, Node } from \"@tiptap/pm/model\";\nimport { Selection } from \"@tiptap/pm/state\";\nimport { isNotEmpty } from \"neetocist\";\n\nimport { ALL_PROTOCOL_URL_REGEXP, EDITOR_OPTIONS } from \"src/common/constants\";\nimport { isMarkdown, markdownToSlice } from \"src/utils/markdown\";\n\nimport {\n EDITOR_LINE_HEIGHT,\n EDITOR_BORDER_SIZE,\n EDITOR_PADDING_SIZE,\n IMAGE_REGEX,\n IMAGE_REPLACEMENT_PATTERN,\n EMPTY_DIV_REGEX,\n TRAILING_BR_REGEX,\n} from \"./constants\";\n\nexport const getEditorStyles = ({ rows }) => {\n const editorHeight =\n rows * EDITOR_LINE_HEIGHT + 2 * (EDITOR_PADDING_SIZE + EDITOR_BORDER_SIZE);\n\n return `min-height: ${editorHeight}px;`;\n};\n\nexport const clipboardTextParser = (text, context, plain, view) => {\n if (!plain && isMarkdown(text)) {\n return markdownToSlice(text, view.state.schema, context);\n }\n\n const nodes = [];\n const blocks = text.split(/\\n/);\n\n blocks.forEach(line => {\n const nodeJson = { type: \"paragraph\" };\n if (isNotEmpty(line)) {\n nodeJson.content = [{ type: \"text\", text: line }];\n }\n const node = Node.fromJSON(context.doc.type.schema, nodeJson);\n nodes.push(node);\n });\n\n const fragment = Fragment.fromArray(nodes);\n\n return Slice.maxOpen(fragment);\n};\n\nexport const setInitialPosition = editor => {\n const { state, view } = editor;\n const endPosition = Selection.atEnd(state.doc);\n const transaction = state.tr;\n transaction.setSelection(endPosition);\n view.dispatch(transaction);\n};\n\nexport const isEditorOverlaysActive = () =>\n document.querySelector(\n \".ne-media-uploader,.ne-embed-modal,.tippy-content,.ne-link-popover\"\n );\n\nexport const validateAndFormatUrl = url => {\n if (!ALL_PROTOCOL_URL_REGEXP.test(url)) {\n return null;\n }\n\n if (!/^[a-zA-Z]\\w*:/i.test(url)) {\n return `https://${url}`;\n }\n\n return url;\n};\n\nexport const transformEditorContent = content =>\n content\n ?.replaceAll(IMAGE_REGEX, IMAGE_REPLACEMENT_PATTERN)\n ?.replaceAll(EMPTY_DIV_REGEX, \"\")\n ?.replace(TRAILING_BR_REGEX, \"\");\n\nexport const isEmojiSuggestionsMenuActive = () =>\n !!document.querySelector(\".neeto-editor-emoji-suggestion\");\n\nexport const transformPastedHTML = content => {\n const contentWithoutBr = content.replaceAll(\"<br />\", \"<p></p>\");\n const doc = new DOMParser().parseFromString(contentWithoutBr, \"text/html\");\n\n // ProseMirror tags clipboard output from any TipTap/ProseMirror editor with\n // `data-pm-slice`. When present, the paste is coming from another\n // neeto-editor instance and we preserve the author's color choices. When\n // absent, the source is external (Word, websites, customer messages) and we\n // strip inline colors so foreign theming does not bleed into the editor.\n const isInternalPaste = doc.querySelector(\"[data-pm-slice]\") !== null;\n\n if (!isInternalPaste) {\n doc.querySelectorAll(\"[style]\").forEach(el => {\n el.style.color = \"\";\n el.style.backgroundColor = \"\";\n });\n }\n\n return doc.body.innerHTML;\n};\n\nexport const handlePaste = (view, event, slice) => {\n try {\n view.state.tr.replaceSelection(slice);\n\n return false;\n } catch {\n const text =\n event.clipboardData?.getData(\"text/plain\") ||\n slice.content.textBetween(0, slice.content.size, \"\\n\").trim();\n if (text) view.dispatch(view.state.tr.insertText(text).scrollIntoView());\n\n return true;\n }\n};\n\nexport const buildLevelsFromOptions = options => {\n const levels = {\n [EDITOR_OPTIONS.H1]: 1,\n [EDITOR_OPTIONS.H2]: 2,\n [EDITOR_OPTIONS.H3]: 3,\n [EDITOR_OPTIONS.H4]: 4,\n [EDITOR_OPTIONS.H5]: 5,\n [EDITOR_OPTIONS.H6]: 6,\n };\n\n return Object.entries(levels)\n .filter(heading => options.includes(heading[0]))\n .map(heading => heading[1]);\n};\n"],"names":["getEditorStyles","_ref","rows","editorHeight","EDITOR_LINE_HEIGHT","EDITOR_PADDING_SIZE","EDITOR_BORDER_SIZE","concat","clipboardTextParser","text","context","plain","view","isMarkdown","markdownToSlice","state","schema","nodes","blocks","split","forEach","line","nodeJson","type","isNotEmpty","content","node","Node","fromJSON","doc","push","fragment","Fragment","fromArray","Slice","maxOpen","setInitialPosition","editor","endPosition","Selection","atEnd","transaction","tr","setSelection","dispatch","isEditorOverlaysActive","document","querySelector","validateAndFormatUrl","url","ALL_PROTOCOL_URL_REGEXP","test","transformEditorContent","_content$replaceAll","replaceAll","IMAGE_REGEX","IMAGE_REPLACEMENT_PATTERN","EMPTY_DIV_REGEX","replace","TRAILING_BR_REGEX","isEmojiSuggestionsMenuActive","transformPastedHTML","contentWithoutBr","DOMParser","parseFromString","isInternalPaste","querySelectorAll","el","style","color","backgroundColor","body","innerHTML","handlePaste","event","slice","replaceSelection","_unused","_event$clipboardData","clipboardData","getData","textBetween","size","trim","insertText","scrollIntoView","buildLevelsFromOptions","options","levels","_defineProperty","EDITOR_OPTIONS","H1","H2","H3","H4","H5","H6","Object","entries","filter","heading","includes","map"],"mappings":"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"}
@@ -9,7 +9,7 @@ var i18n = require('i18next');
9
9
  var yup = require('yup');
10
10
  var constants = require('./chunk-BxKa_XOs.cjs.js');
11
11
  var lucideReact = require('lucide-react');
12
- var useEditorStore = require('./chunk-CwY6UgZq.cjs.js');
12
+ var useEditorStore = require('./chunk-CxKWZyHq.cjs.js');
13
13
  var classnames = require('classnames');
14
14
  var neetoCist = require('@bigbinary/neeto-cist');
15
15
  var neetoAtoms = require('@bigbinary/neeto-atoms');
@@ -25,8 +25,8 @@ var _inherits = require('@babel/runtime/helpers/inherits');
25
25
  var emojiMart = require('emoji-mart');
26
26
  var utils = require('@bigbinary/neeto-commons-frontend/v2/utils');
27
27
  var reactColorful = require('react-colorful');
28
- var markdown = require('./chunk-BPJBeVDI.cjs.js');
29
- var index = require('./chunk-DRnP2LQe.cjs.js');
28
+ var markdown = require('./chunk-C_XHzWXy.cjs.js');
29
+ var index = require('./chunk-CJIIbW7G.cjs.js');
30
30
  var _objectWithoutProperties = require('@babel/runtime/helpers/objectWithoutProperties');
31
31
  var ImageUploader = require('@bigbinary/neeto-image-uploader-frontend/v2/ImageUploader');
32
32
  var reactFileIcon_esm = require('./chunk-Bde8Sbb1.cjs.js');
@@ -3525,4 +3525,4 @@ exports.transformEditorContent = transformEditorContent;
3525
3525
  exports.transformPastedHTML = transformPastedHTML;
3526
3526
  exports.validateAndFormatUrl = validateAndFormatUrl;
3527
3527
  exports.validateUrl = validateUrl;
3528
- //# sourceMappingURL=chunk-QnVNXaqt.cjs.js.map
3528
+ //# sourceMappingURL=chunk-hjJXR4bM.cjs.js.map