@portabletext/editor 1.35.0 → 1.35.2

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 (48) hide show
  1. package/lib/_chunks-cjs/{plugin.event-listener.cjs → editor-provider.cjs} +50 -20
  2. package/lib/_chunks-cjs/editor-provider.cjs.map +1 -0
  3. package/lib/_chunks-es/{plugin.event-listener.js → editor-provider.js} +51 -21
  4. package/lib/_chunks-es/editor-provider.js.map +1 -0
  5. package/lib/behaviors/index.d.cts +19377 -210
  6. package/lib/behaviors/index.d.ts +19377 -210
  7. package/lib/index.cjs +81 -51
  8. package/lib/index.cjs.map +1 -1
  9. package/lib/index.d.cts +318 -47
  10. package/lib/index.d.ts +318 -47
  11. package/lib/index.js +35 -4
  12. package/lib/index.js.map +1 -1
  13. package/lib/plugins/index.cjs +22 -7
  14. package/lib/plugins/index.cjs.map +1 -1
  15. package/lib/plugins/index.d.cts +313 -2
  16. package/lib/plugins/index.d.ts +313 -2
  17. package/lib/plugins/index.js +18 -3
  18. package/lib/plugins/index.js.map +1 -1
  19. package/lib/selectors/index.d.cts +19504 -1
  20. package/lib/selectors/index.d.ts +19504 -1
  21. package/lib/utils/index.d.cts +19506 -2
  22. package/lib/utils/index.d.ts +19506 -2
  23. package/package.json +3 -3
  24. package/src/behavior-actions/behavior.action.decorator.add.ts +1 -0
  25. package/src/behavior-actions/behavior.action.delete.text.ts +1 -0
  26. package/src/behaviors/behavior.decorator-pair.ts +1 -0
  27. package/src/converters/converter.portable-text.deserialize.test.ts +3 -7
  28. package/src/converters/converter.portable-text.ts +7 -1
  29. package/src/converters/converter.text-html.deserialize.test.ts +3 -7
  30. package/src/converters/converter.text-html.serialize.test.ts +5 -10
  31. package/src/converters/converter.text-plain.test.ts +4 -6
  32. package/src/editor/Editable.tsx +26 -0
  33. package/src/editor/editor-machine.ts +170 -147
  34. package/src/editor/editor-selector.ts +3 -0
  35. package/src/editor/editor-snapshot.ts +13 -0
  36. package/src/editor/mutation-machine.ts +2 -0
  37. package/src/editor-event-listener.tsx +30 -0
  38. package/src/index.ts +1 -1
  39. package/src/internal-utils/create-test-snapshot.ts +23 -0
  40. package/src/plugins/plugin.one-line.tsx +1 -1
  41. package/src/selectors/selector.get-active-annotations.test.ts +4 -13
  42. package/src/selectors/selector.get-caret-word-selection.test.ts +3 -7
  43. package/src/selectors/selector.get-selected-spans.test.ts +5 -9
  44. package/src/selectors/selector.get-selection-text.test.ts +5 -7
  45. package/src/selectors/selector.get-trimmed-selection.test.ts +3 -5
  46. package/src/selectors/selector.is-active-decorator.test.ts +5 -9
  47. package/lib/_chunks-cjs/plugin.event-listener.cjs.map +0 -1
  48. package/lib/_chunks-es/plugin.event-listener.js.map +0 -1
@@ -1,5 +1,5 @@
1
1
  "use strict";
2
- var reactCompilerRuntime = require("react-compiler-runtime"), React = require("react"), useEffectEvent = require("use-effect-event"), jsxRuntime = require("react/jsx-runtime"), slateReact = require("slate-react"), react = require("@xstate/react"), debug$e = require("debug"), slate = require("slate"), xstate = require("xstate"), isEqual = require("lodash/isEqual.js"), patches = require("@portabletext/patches"), types = require("@sanity/types"), flatten = require("lodash/flatten.js"), isPlainObject = require("lodash/isPlainObject.js"), uniq = require("lodash/uniq.js"), getRandomValues = require("get-random-values-esm"), util_blockOffsetsToSelection = require("./util.block-offsets-to-selection.cjs"), util_sliceBlocks = require("./util.slice-blocks.cjs"), blockTools = require("@portabletext/block-tools"), toHtml = require("@portabletext/to-html"), schema = require("@sanity/schema"), get = require("lodash/get.js"), isUndefined = require("lodash/isUndefined.js"), omitBy = require("lodash/omitBy.js"), selector_isAtTheStartOfBlock = require("./selector.is-at-the-start-of-block.cjs"), selector_isActiveStyle = require("./selector.is-active-style.cjs"), omit = require("lodash/omit.js"), startCase = require("lodash.startcase"), behavior_core = require("./behavior.core.cjs"), rxjs = require("rxjs");
2
+ var jsxRuntime = require("react/jsx-runtime"), reactCompilerRuntime = require("react-compiler-runtime"), React = require("react"), slateReact = require("slate-react"), react = require("@xstate/react"), debug$e = require("debug"), slate = require("slate"), xstate = require("xstate"), isEqual = require("lodash/isEqual.js"), patches = require("@portabletext/patches"), types = require("@sanity/types"), flatten = require("lodash/flatten.js"), isPlainObject = require("lodash/isPlainObject.js"), uniq = require("lodash/uniq.js"), getRandomValues = require("get-random-values-esm"), util_blockOffsetsToSelection = require("./util.block-offsets-to-selection.cjs"), util_sliceBlocks = require("./util.slice-blocks.cjs"), blockTools = require("@portabletext/block-tools"), toHtml = require("@portabletext/to-html"), schema = require("@sanity/schema"), get = require("lodash/get.js"), isUndefined = require("lodash/isUndefined.js"), omitBy = require("lodash/omitBy.js"), selector_isAtTheStartOfBlock = require("./selector.is-at-the-start-of-block.cjs"), selector_isActiveStyle = require("./selector.is-active-style.cjs"), omit = require("lodash/omit.js"), startCase = require("lodash.startcase"), behavior_core = require("./behavior.core.cjs"), rxjs = require("rxjs"), useEffectEvent = require("use-effect-event");
3
3
  function _interopDefaultCompat(e) {
4
4
  return e && typeof e == "object" && "default" in e ? e : { default: e };
5
5
  }
@@ -378,11 +378,13 @@ const FLUSH_PATCHES_THROTTLED_MS = process.env.NODE_ENV === "test" ? 500 : 1e3,
378
378
  target: "idle",
379
379
  actions: ["emit mutation", "clear pending patches"]
380
380
  }, {
381
+ target: "has pending patches",
381
382
  reenter: !0
382
383
  }]
383
384
  },
384
385
  on: {
385
386
  patch: {
387
+ target: "has pending patches",
386
388
  actions: ["defer patch"],
387
389
  reenter: !0
388
390
  }
@@ -2330,7 +2332,11 @@ const converterJson = {
2330
2332
  context: snapshot.context,
2331
2333
  block,
2332
2334
  options: {
2333
- refreshKeys: !0
2335
+ /**
2336
+ * If we are dragging internally then we would like to keep the
2337
+ * dropped portable text as is.
2338
+ */
2339
+ refreshKeys: !snapshot.beta.hasTag?.("dragging internally")
2334
2340
  }
2335
2341
  });
2336
2342
  return parsedBlock ? [parsedBlock] : [];
@@ -2914,6 +2920,9 @@ const decoratorAddActionImplementation = ({
2914
2920
  },
2915
2921
  backward: editorSelection?.backward
2916
2922
  }), trimmedSelection = selector_isActiveStyle.getTrimmedSelection({
2923
+ beta: {
2924
+ hasTag: () => !1
2925
+ },
2917
2926
  context: {
2918
2927
  activeDecorators: [],
2919
2928
  converters: [],
@@ -4127,6 +4136,9 @@ const blockSetBehaviorActionImplementation = ({
4127
4136
  if (!selection)
4128
4137
  throw new Error("Unable to find selection from block offsets");
4129
4138
  const trimmedSelection = selector_isActiveStyle.getTrimmedSelection({
4139
+ beta: {
4140
+ hasTag: () => !1
4141
+ },
4130
4142
  context: {
4131
4143
  converters: [],
4132
4144
  schema: context.schema,
@@ -5890,7 +5902,8 @@ function createEditorSnapshot({
5890
5902
  converters,
5891
5903
  editor,
5892
5904
  keyGenerator,
5893
- schema: schema2
5905
+ schema: schema2,
5906
+ hasTag
5894
5907
  }) {
5895
5908
  const value = fromSlateValue(editor.children, schema2.block.name, KEY_TO_VALUE_ELEMENT.get(editor)), selection = toPortableTextRange(value, editor.selection, schema2);
5896
5909
  return {
@@ -5904,6 +5917,9 @@ function createEditorSnapshot({
5904
5917
  schema: schema2,
5905
5918
  selection,
5906
5919
  value
5920
+ },
5921
+ beta: {
5922
+ hasTag
5907
5923
  }
5908
5924
  };
5909
5925
  }
@@ -5912,7 +5928,8 @@ const editorMachine = xstate.setup({
5912
5928
  context: {},
5913
5929
  events: {},
5914
5930
  emitted: {},
5915
- input: {}
5931
+ input: {},
5932
+ tags: {}
5916
5933
  },
5917
5934
  actions: {
5918
5935
  "add behavior to context": xstate.assign({
@@ -5971,7 +5988,8 @@ const editorMachine = xstate.setup({
5971
5988
  "handle behavior event": xstate.enqueueActions(({
5972
5989
  context,
5973
5990
  event,
5974
- enqueue
5991
+ enqueue,
5992
+ self
5975
5993
  }) => {
5976
5994
  xstate.assertEvent(event, ["behavior event", "custom behavior event"]);
5977
5995
  const defaultAction = event.type === "custom behavior event" || event.behaviorEvent.type === "copy" || event.behaviorEvent.type === "deserialize" || event.behaviorEvent.type === "key.down" || event.behaviorEvent.type === "key.up" || event.behaviorEvent.type === "paste" || event.behaviorEvent.type === "serialize" ? void 0 : {
@@ -6007,7 +6025,8 @@ const editorMachine = xstate.setup({
6007
6025
  converters: [...context.converters],
6008
6026
  editor: event.editor,
6009
6027
  keyGenerator: context.keyGenerator,
6010
- schema: context.schema
6028
+ schema: context.schema,
6029
+ hasTag: (tag) => self.getSnapshot().hasTag(tag)
6011
6030
  });
6012
6031
  let behaviorOverwritten = !1;
6013
6032
  for (const eventBehavior of eventBehaviors) {
@@ -6343,6 +6362,27 @@ const editorMachine = xstate.setup({
6343
6362
  event
6344
6363
  }) => event)
6345
6364
  }
6365
+ },
6366
+ initial: "idle",
6367
+ states: {
6368
+ idle: {
6369
+ on: {
6370
+ dragstart: {
6371
+ target: "dragging internally"
6372
+ }
6373
+ }
6374
+ },
6375
+ "dragging internally": {
6376
+ tags: ["dragging internally"],
6377
+ on: {
6378
+ dragend: {
6379
+ target: "idle"
6380
+ },
6381
+ drop: {
6382
+ target: "idle"
6383
+ }
6384
+ }
6385
+ }
6346
6386
  }
6347
6387
  }
6348
6388
  }
@@ -6450,6 +6490,9 @@ function getEditorSnapshot({
6450
6490
  editorActorSnapshot,
6451
6491
  slateEditorInstance
6452
6492
  })
6493
+ },
6494
+ beta: {
6495
+ hasTag: (tag) => editorActorSnapshot.hasTag(tag)
6453
6496
  }
6454
6497
  };
6455
6498
  }
@@ -7074,21 +7117,8 @@ function useEditor() {
7074
7117
  throw new Error("No Editor set. Use EditorProvider to set one.");
7075
7118
  return editor;
7076
7119
  }
7077
- function EventListenerPlugin(props) {
7078
- const $ = reactCompilerRuntime.c(5), editor = useEditor(), on = useEffectEvent.useEffectEvent(props.on);
7079
- let t0;
7080
- $[0] !== editor || $[1] !== on ? (t0 = () => {
7081
- const subscription = editor.on("*", on);
7082
- return () => {
7083
- subscription.unsubscribe();
7084
- };
7085
- }, $[0] = editor, $[1] = on, $[2] = t0) : t0 = $[2];
7086
- let t1;
7087
- return $[3] !== editor ? (t1 = [editor], $[3] = editor, $[4] = t1) : t1 = $[4], React.useEffect(t0, t1), null;
7088
- }
7089
7120
  exports.EditorActorContext = EditorActorContext;
7090
7121
  exports.EditorProvider = EditorProvider;
7091
- exports.EventListenerPlugin = EventListenerPlugin;
7092
7122
  exports.IS_DRAGGING = IS_DRAGGING;
7093
7123
  exports.IS_DRAGGING_BLOCK_ELEMENT = IS_DRAGGING_BLOCK_ELEMENT;
7094
7124
  exports.IS_DRAGGING_BLOCK_TARGET_POSITION = IS_DRAGGING_BLOCK_TARGET_POSITION;
@@ -7108,4 +7138,4 @@ exports.useEditor = useEditor;
7108
7138
  exports.useEditorSelector = useEditorSelector;
7109
7139
  exports.usePortableTextEditor = usePortableTextEditor;
7110
7140
  exports.usePortableTextEditorSelection = usePortableTextEditorSelection;
7111
- //# sourceMappingURL=plugin.event-listener.cjs.map
7141
+ //# sourceMappingURL=editor-provider.cjs.map