@flozy/editor 3.9.4 → 3.9.6

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 (36) hide show
  1. package/dist/Editor/ChatEditor.js +55 -45
  2. package/dist/Editor/CommonEditor.js +3 -2
  3. package/dist/Editor/Editor.css +12 -1
  4. package/dist/Editor/Elements/Accordion/Accordion.js +76 -8
  5. package/dist/Editor/Elements/Accordion/AccordionBtnPopup.js +3 -2
  6. package/dist/Editor/Elements/Accordion/AccordionSummary.js +24 -64
  7. package/dist/Editor/Elements/Embed/Image.js +27 -19
  8. package/dist/Editor/Elements/Embed/Video.js +14 -10
  9. package/dist/Editor/Elements/Emoji/EmojiPicker.js +4 -2
  10. package/dist/Editor/Elements/Form/Form.js +1 -1
  11. package/dist/Editor/Elements/PageSettings/PageSettingsButton.js +5 -1
  12. package/dist/Editor/Elements/Table/Table.js +1 -1
  13. package/dist/Editor/Elements/Table/TableCell.js +1 -1
  14. package/dist/Editor/Toolbar/Mini/MiniToolbar.js +25 -1
  15. package/dist/Editor/common/ColorPickerButton.js +12 -4
  16. package/dist/Editor/common/EditorCmds.js +35 -0
  17. package/dist/Editor/common/MentionsPopup/MentionsListCard.js +6 -1
  18. package/dist/Editor/common/MentionsPopup/Styles.js +5 -2
  19. package/dist/Editor/common/StyleBuilder/accordionTitleBtnStyle.js +9 -8
  20. package/dist/Editor/common/StyleBuilder/accordionTitleStyle.js +16 -16
  21. package/dist/Editor/common/StyleBuilder/fieldTypes/bannerSpacing.js +26 -20
  22. package/dist/Editor/common/StyleBuilder/fieldTypes/borderRadius.js +18 -16
  23. package/dist/Editor/common/StyleBuilder/fieldTypes/color.js +6 -4
  24. package/dist/Editor/common/StyleBuilder/fieldTypes/selectBox.js +14 -3
  25. package/dist/Editor/helper/deserialize/index.js +14 -9
  26. package/dist/Editor/helper/index.js +22 -0
  27. package/dist/Editor/helper/theme.js +2 -1
  28. package/dist/Editor/hooks/useMouseMove.js +0 -1
  29. package/dist/Editor/plugins/withHTML.js +46 -4
  30. package/dist/Editor/plugins/withLayout.js +15 -10
  31. package/dist/Editor/plugins/withTable.js +1 -1
  32. package/dist/Editor/utils/SlateUtilityFunctions.js +2 -8
  33. package/dist/Editor/utils/draftToSlate.js +1 -1
  34. package/dist/Editor/utils/events.js +11 -4
  35. package/dist/Editor/utils/helper.js +43 -12
  36. package/package.json +1 -1
@@ -3,6 +3,7 @@ import { toggleBlock } from "./SlateUtilityFunctions";
3
3
  import insertNewLine from "./insertNewLine";
4
4
  import { insertAccordion } from "./accordion";
5
5
  import { isListItem } from "./helper";
6
+ import EDITORCMDS from "../common/EditorCmds";
6
7
  const HOTKEYS = {
7
8
  b: "bold",
8
9
  i: "italic",
@@ -63,7 +64,8 @@ export const commands = props => {
63
64
  try {
64
65
  const {
65
66
  event,
66
- editor
67
+ editor,
68
+ needLayout
67
69
  } = props;
68
70
  if (HOTKEYS[event.key]) {
69
71
  event.preventDefault();
@@ -73,6 +75,11 @@ export const commands = props => {
73
75
  } else {
74
76
  Editor.addMark(editor, HOTKEYS[event.key], true);
75
77
  }
78
+ } else if (EDITORCMDS[event.key]) {
79
+ EDITORCMDS[event.key](event, {
80
+ editor,
81
+ needLayout
82
+ });
76
83
  }
77
84
  } catch (err) {
78
85
  console.log(err);
@@ -96,7 +103,7 @@ export const indentation = props => {
96
103
  Transforms.wrapNodes(editor, {
97
104
  type: listItem.type,
98
105
  children: [{
99
- text: ''
106
+ text: ""
100
107
  }]
101
108
  });
102
109
  } else {
@@ -153,7 +160,7 @@ const checkListEnterEvent = (editor, type) => {
153
160
  Transforms.insertNodes(editor, {
154
161
  type: "check-list-item",
155
162
  children: [{
156
- text: ''
163
+ text: ""
157
164
  }]
158
165
  }, {
159
166
  at: newPath
@@ -162,7 +169,7 @@ const checkListEnterEvent = (editor, type) => {
162
169
  // focus on the end of the line
163
170
  Transforms.move(editor, {
164
171
  distance: 1,
165
- unit: 'line'
172
+ unit: "line"
166
173
  });
167
174
  } else {
168
175
  toggleBlock(editor, type);
@@ -216,6 +216,17 @@ const getScrollElement = () => {
216
216
  const scrollFrom = isSlateWrapperScroll ? slateWrapper : window;
217
217
  return scrollFrom;
218
218
  };
219
+ const handleLinkBtnClick = (e, props) => {
220
+ if (e) {
221
+ e.preventDefault();
222
+ e.stopPropagation();
223
+ }
224
+ if (props.target) {
225
+ window.open(props.href);
226
+ } else {
227
+ window.location.href = props.href;
228
+ }
229
+ };
219
230
  export const handleLinkType = (url, linkType, readOnly, openInNewTab, onClick = () => {}) => {
220
231
  const props = {};
221
232
  if (!readOnly) {
@@ -306,23 +317,22 @@ export const handleLinkType = (url, linkType, readOnly, openInNewTab, onClick =
306
317
 
307
318
  // for iphone fix
308
319
  if (props.component === "a" && props.href) {
309
- if (getDevice(window.innerWidth) === "xs") {
320
+ const isMobile = getDevice(window.innerWidth) === "xs";
321
+ if (isMobile) {
310
322
  props.component = "button"; // iphone is opening two tabs, on open in new tab because of a tag.
311
323
  }
312
324
 
325
+ let touchEndClicked = false;
313
326
  props.onTouchEnd = e => {
314
- if (e) {
315
- // onTouchEnd will get triggered on web, only for image element, for that case event is getting undefined.
316
- e.preventDefault();
317
- e.stopPropagation();
318
- }
319
- if (props.target) {
320
- window.open(props.href);
321
- } else {
322
- window.location.href = props.href;
323
- }
327
+ touchEndClicked = true;
328
+ handleLinkBtnClick(e, props);
324
329
  };
325
- props.onClick = () => {
330
+ props.onClick = e => {
331
+ // This condition is used for mobile preview in the page editor.
332
+ // 'touchEnd' will not work in the mobile page preview.
333
+ if (!touchEndClicked && isMobile) {
334
+ handleLinkBtnClick(e, props);
335
+ }
326
336
  return false;
327
337
  };
328
338
  }
@@ -367,4 +377,25 @@ export const decodeString = str => {
367
377
  } catch (err) {
368
378
  console.log(err);
369
379
  }
380
+ };
381
+ export const onDeleteKey = (event, {
382
+ editor
383
+ }) => {
384
+ try {
385
+ const {
386
+ selection
387
+ } = editor;
388
+ if (selection) {
389
+ // If text is selected, delete the selection
390
+ Transforms.delete(editor);
391
+ } else {
392
+ // If no text is selected, handle deleting the next character/element
393
+ Transforms.delete(editor, {
394
+ unit: "character",
395
+ reverse: false
396
+ });
397
+ }
398
+ } catch (err) {
399
+ console.log(err);
400
+ }
370
401
  };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@flozy/editor",
3
- "version": "3.9.4",
3
+ "version": "3.9.6",
4
4
  "description": "An Editor for flozy app brain",
5
5
  "files": [
6
6
  "dist"