@portabletext/editor 1.35.0 → 1.35.1

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 (47) hide show
  1. package/lib/_chunks-cjs/{plugin.event-listener.cjs → editor-provider.cjs} +48 -20
  2. package/lib/_chunks-cjs/editor-provider.cjs.map +1 -0
  3. package/lib/_chunks-es/{plugin.event-listener.js → editor-provider.js} +49 -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 +1 -1
  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-event-listener.tsx +30 -0
  37. package/src/index.ts +1 -1
  38. package/src/internal-utils/create-test-snapshot.ts +23 -0
  39. package/src/plugins/plugin.one-line.tsx +1 -1
  40. package/src/selectors/selector.get-active-annotations.test.ts +4 -13
  41. package/src/selectors/selector.get-caret-word-selection.test.ts +3 -7
  42. package/src/selectors/selector.get-selected-spans.test.ts +5 -9
  43. package/src/selectors/selector.get-selection-text.test.ts +5 -7
  44. package/src/selectors/selector.get-trimmed-selection.test.ts +3 -5
  45. package/src/selectors/selector.is-active-decorator.test.ts +5 -9
  46. package/lib/_chunks-cjs/plugin.event-listener.cjs.map +0 -1
  47. 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
  }
@@ -2330,7 +2330,11 @@ const converterJson = {
2330
2330
  context: snapshot.context,
2331
2331
  block,
2332
2332
  options: {
2333
- refreshKeys: !0
2333
+ /**
2334
+ * If we are dragging internally then we would like to keep the
2335
+ * dropped portable text as is.
2336
+ */
2337
+ refreshKeys: !snapshot.beta.hasTag?.("dragging internally")
2334
2338
  }
2335
2339
  });
2336
2340
  return parsedBlock ? [parsedBlock] : [];
@@ -2914,6 +2918,9 @@ const decoratorAddActionImplementation = ({
2914
2918
  },
2915
2919
  backward: editorSelection?.backward
2916
2920
  }), trimmedSelection = selector_isActiveStyle.getTrimmedSelection({
2921
+ beta: {
2922
+ hasTag: () => !1
2923
+ },
2917
2924
  context: {
2918
2925
  activeDecorators: [],
2919
2926
  converters: [],
@@ -4127,6 +4134,9 @@ const blockSetBehaviorActionImplementation = ({
4127
4134
  if (!selection)
4128
4135
  throw new Error("Unable to find selection from block offsets");
4129
4136
  const trimmedSelection = selector_isActiveStyle.getTrimmedSelection({
4137
+ beta: {
4138
+ hasTag: () => !1
4139
+ },
4130
4140
  context: {
4131
4141
  converters: [],
4132
4142
  schema: context.schema,
@@ -5890,7 +5900,8 @@ function createEditorSnapshot({
5890
5900
  converters,
5891
5901
  editor,
5892
5902
  keyGenerator,
5893
- schema: schema2
5903
+ schema: schema2,
5904
+ hasTag
5894
5905
  }) {
5895
5906
  const value = fromSlateValue(editor.children, schema2.block.name, KEY_TO_VALUE_ELEMENT.get(editor)), selection = toPortableTextRange(value, editor.selection, schema2);
5896
5907
  return {
@@ -5904,6 +5915,9 @@ function createEditorSnapshot({
5904
5915
  schema: schema2,
5905
5916
  selection,
5906
5917
  value
5918
+ },
5919
+ beta: {
5920
+ hasTag
5907
5921
  }
5908
5922
  };
5909
5923
  }
@@ -5912,7 +5926,8 @@ const editorMachine = xstate.setup({
5912
5926
  context: {},
5913
5927
  events: {},
5914
5928
  emitted: {},
5915
- input: {}
5929
+ input: {},
5930
+ tags: {}
5916
5931
  },
5917
5932
  actions: {
5918
5933
  "add behavior to context": xstate.assign({
@@ -5971,7 +5986,8 @@ const editorMachine = xstate.setup({
5971
5986
  "handle behavior event": xstate.enqueueActions(({
5972
5987
  context,
5973
5988
  event,
5974
- enqueue
5989
+ enqueue,
5990
+ self
5975
5991
  }) => {
5976
5992
  xstate.assertEvent(event, ["behavior event", "custom behavior event"]);
5977
5993
  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 +6023,8 @@ const editorMachine = xstate.setup({
6007
6023
  converters: [...context.converters],
6008
6024
  editor: event.editor,
6009
6025
  keyGenerator: context.keyGenerator,
6010
- schema: context.schema
6026
+ schema: context.schema,
6027
+ hasTag: (tag) => self.getSnapshot().hasTag(tag)
6011
6028
  });
6012
6029
  let behaviorOverwritten = !1;
6013
6030
  for (const eventBehavior of eventBehaviors) {
@@ -6343,6 +6360,27 @@ const editorMachine = xstate.setup({
6343
6360
  event
6344
6361
  }) => event)
6345
6362
  }
6363
+ },
6364
+ initial: "idle",
6365
+ states: {
6366
+ idle: {
6367
+ on: {
6368
+ dragstart: {
6369
+ target: "dragging internally"
6370
+ }
6371
+ }
6372
+ },
6373
+ "dragging internally": {
6374
+ tags: ["dragging internally"],
6375
+ on: {
6376
+ dragend: {
6377
+ target: "idle"
6378
+ },
6379
+ drop: {
6380
+ target: "idle"
6381
+ }
6382
+ }
6383
+ }
6346
6384
  }
6347
6385
  }
6348
6386
  }
@@ -6450,6 +6488,9 @@ function getEditorSnapshot({
6450
6488
  editorActorSnapshot,
6451
6489
  slateEditorInstance
6452
6490
  })
6491
+ },
6492
+ beta: {
6493
+ hasTag: (tag) => editorActorSnapshot.hasTag(tag)
6453
6494
  }
6454
6495
  };
6455
6496
  }
@@ -7074,21 +7115,8 @@ function useEditor() {
7074
7115
  throw new Error("No Editor set. Use EditorProvider to set one.");
7075
7116
  return editor;
7076
7117
  }
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
7118
  exports.EditorActorContext = EditorActorContext;
7090
7119
  exports.EditorProvider = EditorProvider;
7091
- exports.EventListenerPlugin = EventListenerPlugin;
7092
7120
  exports.IS_DRAGGING = IS_DRAGGING;
7093
7121
  exports.IS_DRAGGING_BLOCK_ELEMENT = IS_DRAGGING_BLOCK_ELEMENT;
7094
7122
  exports.IS_DRAGGING_BLOCK_TARGET_POSITION = IS_DRAGGING_BLOCK_TARGET_POSITION;
@@ -7108,4 +7136,4 @@ exports.useEditor = useEditor;
7108
7136
  exports.useEditorSelector = useEditorSelector;
7109
7137
  exports.usePortableTextEditor = usePortableTextEditor;
7110
7138
  exports.usePortableTextEditorSelection = usePortableTextEditorSelection;
7111
- //# sourceMappingURL=plugin.event-listener.cjs.map
7139
+ //# sourceMappingURL=editor-provider.cjs.map