@portabletext/editor 2.4.2 → 2.5.0

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.
package/lib/index.js CHANGED
@@ -1,5 +1,5 @@
1
1
  import { c } from "react-compiler-runtime";
2
- import React, { useEffect, createContext, useContext, useState, useRef, Component, useMemo, startTransition, useCallback, forwardRef, useImperativeHandle } from "react";
2
+ import React, { useEffect, createContext, useContext, useState, useRef, Component, useMemo, startTransition, useCallback, forwardRef } from "react";
3
3
  import { useEditor, EditorContext } from "./_chunks-es/use-editor.js";
4
4
  import { jsx, jsxs, Fragment } from "react/jsx-runtime";
5
5
  import { useSelector, useActorRef } from "@xstate/react";
@@ -1038,7 +1038,7 @@ function RenderTextBlock(props) {
1038
1038
  ] });
1039
1039
  }
1040
1040
  function RenderElement(props) {
1041
- const $ = c(34), editorActor = useContext(EditorActorContext), schema = useSelector(editorActor, _temp$1), legacySchema = useSelector(editorActor, _temp2), slateStatic = useSlateStatic();
1041
+ const $ = c(34), editorActor = useContext(EditorActorContext), schema = useSelector(editorActor, _temp$2), legacySchema = useSelector(editorActor, _temp2$1), slateStatic = useSlateStatic();
1042
1042
  if ("__inline" in props.element && props.element.__inline === !0) {
1043
1043
  let t02;
1044
1044
  return $[0] !== legacySchema || $[1] !== props.attributes || $[2] !== props.children || $[3] !== props.element || $[4] !== props.readOnly || $[5] !== props.renderChild || $[6] !== schema ? (t02 = /* @__PURE__ */ jsx(RenderInlineObject, { attributes: props.attributes, element: props.element, legacySchema, readOnly: props.readOnly, renderChild: props.renderChild, schema, children: props.children }), $[0] = legacySchema, $[1] = props.attributes, $[2] = props.children, $[3] = props.element, $[4] = props.readOnly, $[5] = props.renderChild, $[6] = schema, $[7] = t02) : t02 = $[7], t02;
@@ -1058,10 +1058,10 @@ function RenderElement(props) {
1058
1058
  let t1;
1059
1059
  return $[25] !== block || $[26] !== legacySchema || $[27] !== props.attributes || $[28] !== props.children || $[29] !== props.element || $[30] !== props.readOnly || $[31] !== props.renderBlock || $[32] !== schema ? (t1 = /* @__PURE__ */ jsx(RenderBlockObject, { attributes: props.attributes, blockObject: block, element: props.element, legacySchema, readOnly: props.readOnly, renderBlock: props.renderBlock, schema, children: props.children }), $[25] = block, $[26] = legacySchema, $[27] = props.attributes, $[28] = props.children, $[29] = props.element, $[30] = props.readOnly, $[31] = props.renderBlock, $[32] = schema, $[33] = t1) : t1 = $[33], t1;
1060
1060
  }
1061
- function _temp2(s_0) {
1061
+ function _temp2$1(s_0) {
1062
1062
  return s_0.context.getLegacySchema();
1063
1063
  }
1064
- function _temp$1(s) {
1064
+ function _temp$2(s) {
1065
1065
  return s.context.schema;
1066
1066
  }
1067
1067
  const PortableTextEditorContext = createContext(null), usePortableTextEditor = () => {
@@ -10883,7 +10883,7 @@ const PLACEHOLDER_STYLE = {
10883
10883
  right: 0
10884
10884
  };
10885
10885
  function RenderLeaf(props) {
10886
- const $ = c(12), editorActor = useContext(EditorActorContext), schema = useSelector(editorActor, _temp);
10886
+ const $ = c(12), editorActor = useContext(EditorActorContext), schema = useSelector(editorActor, _temp$1);
10887
10887
  if (props.leaf._type !== schema.span.name)
10888
10888
  return props.children;
10889
10889
  let t0;
@@ -10909,7 +10909,7 @@ function RenderLeaf(props) {
10909
10909
  }
10910
10910
  return renderedSpan;
10911
10911
  }
10912
- function _temp(s) {
10912
+ function _temp$1(s) {
10913
10913
  return s.context.schema;
10914
10914
  }
10915
10915
  function RenderText(props) {
@@ -11374,7 +11374,9 @@ function createDecorate(schema, slateEditor) {
11374
11374
  };
11375
11375
  }
11376
11376
  const debug = debugWithName("component:Editable"), PortableTextEditable = forwardRef(function(props, forwardedRef) {
11377
- const {
11377
+ const $ = c(172);
11378
+ let hotkeys, onBeforeInput, onBlur, onClick, onCopy, onCut, onDrag, onDragEnd, onDragEnter, onDragLeave, onDragOver, onDragStart, onDrop, onFocus, onPaste, propsSelection, rangeDecorations, renderAnnotation, renderBlock, renderChild, renderDecorator, renderListItem, renderPlaceholder, renderStyle, restProps, scrollSelectionIntoView, spellCheck;
11379
+ $[0] !== props ? ({
11378
11380
  hotkeys,
11379
11381
  onBlur,
11380
11382
  onFocus,
@@ -11402,33 +11404,53 @@ const debug = debugWithName("component:Editable"), PortableTextEditable = forwar
11402
11404
  scrollSelectionIntoView,
11403
11405
  spellCheck,
11404
11406
  ...restProps
11405
- } = props, portableTextEditor = usePortableTextEditor(), ref = useRef(null), [editableElement, setEditableElement] = useState(null), [hasInvalidValue, setHasInvalidValue] = useState(!1);
11406
- useImperativeHandle(forwardedRef, () => ref.current);
11407
- const editorActor = useContext(EditorActorContext), relayActor = useContext(RelayActorContext), readOnly = useSelector(editorActor, (s) => s.matches({
11408
- "edit mode": "read only"
11409
- })), slateEditor = useSlate(), rangeDecorationsActor = useActorRef(rangeDecorationsMachine, {
11407
+ } = props, $[0] = props, $[1] = hotkeys, $[2] = onBeforeInput, $[3] = onBlur, $[4] = onClick, $[5] = onCopy, $[6] = onCut, $[7] = onDrag, $[8] = onDragEnd, $[9] = onDragEnter, $[10] = onDragLeave, $[11] = onDragOver, $[12] = onDragStart, $[13] = onDrop, $[14] = onFocus, $[15] = onPaste, $[16] = propsSelection, $[17] = rangeDecorations, $[18] = renderAnnotation, $[19] = renderBlock, $[20] = renderChild, $[21] = renderDecorator, $[22] = renderListItem, $[23] = renderPlaceholder, $[24] = renderStyle, $[25] = restProps, $[26] = scrollSelectionIntoView, $[27] = spellCheck) : (hotkeys = $[1], onBeforeInput = $[2], onBlur = $[3], onClick = $[4], onCopy = $[5], onCut = $[6], onDrag = $[7], onDragEnd = $[8], onDragEnter = $[9], onDragLeave = $[10], onDragOver = $[11], onDragStart = $[12], onDrop = $[13], onFocus = $[14], onPaste = $[15], propsSelection = $[16], rangeDecorations = $[17], renderAnnotation = $[18], renderBlock = $[19], renderChild = $[20], renderDecorator = $[21], renderListItem = $[22], renderPlaceholder = $[23], renderStyle = $[24], restProps = $[25], scrollSelectionIntoView = $[26], spellCheck = $[27]);
11408
+ const portableTextEditor = usePortableTextEditor(), [hasInvalidValue, setHasInvalidValue] = useState(!1), editorActor = useContext(EditorActorContext), relayActor = useContext(RelayActorContext), readOnly = useSelector(editorActor, _temp), slateEditor = useSlate();
11409
+ let t0;
11410
+ $[28] !== rangeDecorations ? (t0 = rangeDecorations ?? [], $[28] = rangeDecorations, $[29] = t0) : t0 = $[29];
11411
+ let t1;
11412
+ $[30] !== editorActor ? (t1 = editorActor.getSnapshot(), $[30] = editorActor, $[31] = t1) : t1 = $[31];
11413
+ const t2 = !editorActor.getSnapshot().matches({
11414
+ setup: "setting up"
11415
+ });
11416
+ let t3;
11417
+ $[32] !== readOnly || $[33] !== slateEditor || $[34] !== t0 || $[35] !== t1.context.schema || $[36] !== t2 ? (t3 = {
11410
11418
  input: {
11411
- rangeDecorations: rangeDecorations ?? [],
11419
+ rangeDecorations: t0,
11412
11420
  readOnly,
11413
- schema: editorActor.getSnapshot().context.schema,
11421
+ schema: t1.context.schema,
11414
11422
  slateEditor,
11415
- skipSetup: !editorActor.getSnapshot().matches({
11416
- setup: "setting up"
11417
- })
11423
+ skipSetup: t2
11418
11424
  }
11419
- }), decorate = useSelector(rangeDecorationsActor, (s_0) => s_0.context.decorate?.fn);
11420
- useEffect(() => {
11425
+ }, $[32] = readOnly, $[33] = slateEditor, $[34] = t0, $[35] = t1.context.schema, $[36] = t2, $[37] = t3) : t3 = $[37];
11426
+ const rangeDecorationsActor = useActorRef(rangeDecorationsMachine, t3), decorate = useSelector(rangeDecorationsActor, _temp2);
11427
+ let t4, t5;
11428
+ $[38] !== rangeDecorationsActor || $[39] !== readOnly ? (t4 = () => {
11421
11429
  rangeDecorationsActor.send({
11422
11430
  type: "update read only",
11423
11431
  readOnly
11424
11432
  });
11425
- }, [rangeDecorationsActor, readOnly]), useEffect(() => {
11433
+ }, t5 = [rangeDecorationsActor, readOnly], $[38] = rangeDecorationsActor, $[39] = readOnly, $[40] = t4, $[41] = t5) : (t4 = $[40], t5 = $[41]), useEffect(t4, t5);
11434
+ let t6, t7;
11435
+ $[42] !== rangeDecorations || $[43] !== rangeDecorationsActor ? (t6 = () => {
11426
11436
  rangeDecorationsActor.send({
11427
11437
  type: "range decorations updated",
11428
11438
  rangeDecorations: rangeDecorations ?? []
11429
11439
  });
11430
- }, [rangeDecorationsActor, rangeDecorations]), useMemo(() => readOnly ? slateEditor : createWithHotkeys(editorActor, portableTextEditor, hotkeys)(slateEditor), [editorActor, hotkeys, portableTextEditor, readOnly, slateEditor]);
11431
- const renderElement = useCallback((eProps) => /* @__PURE__ */ jsx(RenderElement, { ...eProps, readOnly, renderBlock, renderChild, renderListItem, renderStyle, spellCheck }), [spellCheck, readOnly, renderBlock, renderChild, renderListItem, renderStyle]), renderLeaf = useCallback((leafProps) => /* @__PURE__ */ jsx(RenderLeaf, { ...leafProps, readOnly, renderAnnotation, renderChild, renderDecorator, renderPlaceholder }), [readOnly, renderAnnotation, renderChild, renderDecorator, renderPlaceholder]), renderText = useCallback((props_0) => /* @__PURE__ */ jsx(RenderText, { ...props_0 }), []), restoreSelectionFromProps = useCallback(() => {
11440
+ }, t7 = [rangeDecorationsActor, rangeDecorations], $[42] = rangeDecorations, $[43] = rangeDecorationsActor, $[44] = t6, $[45] = t7) : (t6 = $[44], t7 = $[45]), useEffect(t6, t7);
11441
+ bb0: {
11442
+ if (readOnly)
11443
+ break bb0;
11444
+ createWithHotkeys(editorActor, portableTextEditor, hotkeys)(slateEditor);
11445
+ }
11446
+ let t9;
11447
+ $[46] !== readOnly || $[47] !== renderBlock || $[48] !== renderChild || $[49] !== renderListItem || $[50] !== renderStyle || $[51] !== spellCheck ? (t9 = (eProps) => /* @__PURE__ */ jsx(RenderElement, { ...eProps, readOnly, renderBlock, renderChild, renderListItem, renderStyle, spellCheck }), $[46] = readOnly, $[47] = renderBlock, $[48] = renderChild, $[49] = renderListItem, $[50] = renderStyle, $[51] = spellCheck, $[52] = t9) : t9 = $[52];
11448
+ const renderElement = t9;
11449
+ let t10;
11450
+ $[53] !== readOnly || $[54] !== renderAnnotation || $[55] !== renderChild || $[56] !== renderDecorator || $[57] !== renderPlaceholder ? (t10 = (leafProps) => /* @__PURE__ */ jsx(RenderLeaf, { ...leafProps, readOnly, renderAnnotation, renderChild, renderDecorator, renderPlaceholder }), $[53] = readOnly, $[54] = renderAnnotation, $[55] = renderChild, $[56] = renderDecorator, $[57] = renderPlaceholder, $[58] = t10) : t10 = $[58];
11451
+ const renderLeaf = t10, renderText = _temp3;
11452
+ let t11;
11453
+ $[59] !== editorActor || $[60] !== propsSelection || $[61] !== slateEditor ? (t11 = () => {
11432
11454
  if (propsSelection) {
11433
11455
  debug(`Selection from props ${JSON.stringify(propsSelection)}`);
11434
11456
  const normalizedSelection = normalizeSelection(propsSelection, fromSlateValue(slateEditor.children, editorActor.getSnapshot().context.schema.block.name));
@@ -11442,14 +11464,16 @@ const debug = debugWithName("component:Editable"), PortableTextEditable = forwar
11442
11464
  },
11443
11465
  blockIndexMap: slateEditor.blockIndexMap
11444
11466
  });
11445
- slateRange && (Transforms.select(slateEditor, slateRange), slateEditor.operations.some((o) => o.type === "set_selection") || editorActor.send({
11467
+ slateRange && (Transforms.select(slateEditor, slateRange), slateEditor.operations.some(_temp4) || editorActor.send({
11446
11468
  type: "update selection",
11447
11469
  selection: normalizedSelection
11448
11470
  }), slateEditor.onChange());
11449
11471
  }
11450
11472
  }
11451
- }, [editorActor, propsSelection, slateEditor]);
11452
- useEffect(() => {
11473
+ }, $[59] = editorActor, $[60] = propsSelection, $[61] = slateEditor, $[62] = t11) : t11 = $[62];
11474
+ const restoreSelectionFromProps = t11;
11475
+ let t12, t13;
11476
+ $[63] !== editorActor || $[64] !== rangeDecorationsActor || $[65] !== restoreSelectionFromProps ? (t12 = () => {
11453
11477
  const onReady = editorActor.on("ready", () => {
11454
11478
  rangeDecorationsActor.send({
11455
11479
  type: "ready"
@@ -11462,10 +11486,13 @@ const debug = debugWithName("component:Editable"), PortableTextEditable = forwar
11462
11486
  return () => {
11463
11487
  onReady.unsubscribe(), onInvalidValue.unsubscribe(), onValueChanged.unsubscribe();
11464
11488
  };
11465
- }, [rangeDecorationsActor, editorActor, restoreSelectionFromProps]), useEffect(() => {
11489
+ }, t13 = [rangeDecorationsActor, editorActor, restoreSelectionFromProps], $[63] = editorActor, $[64] = rangeDecorationsActor, $[65] = restoreSelectionFromProps, $[66] = t12, $[67] = t13) : (t12 = $[66], t13 = $[67]), useEffect(t12, t13);
11490
+ let t14, t15;
11491
+ $[68] !== hasInvalidValue || $[69] !== propsSelection || $[70] !== restoreSelectionFromProps ? (t14 = () => {
11466
11492
  propsSelection && !hasInvalidValue && restoreSelectionFromProps();
11467
- }, [hasInvalidValue, propsSelection, restoreSelectionFromProps]);
11468
- const handleCopy = useCallback((event) => {
11493
+ }, t15 = [hasInvalidValue, propsSelection, restoreSelectionFromProps], $[68] = hasInvalidValue, $[69] = propsSelection, $[70] = restoreSelectionFromProps, $[71] = t14, $[72] = t15) : (t14 = $[71], t15 = $[72]), useEffect(t14, t15);
11494
+ let t16;
11495
+ $[73] !== editorActor || $[74] !== onCopy || $[75] !== slateEditor ? (t16 = (event) => {
11469
11496
  if (onCopy)
11470
11497
  onCopy(event) !== void 0 && event.preventDefault();
11471
11498
  else if (event.nativeEvent.clipboardData) {
@@ -11494,7 +11521,10 @@ const debug = debugWithName("component:Editable"), PortableTextEditable = forwar
11494
11521
  nativeEvent: event
11495
11522
  });
11496
11523
  }
11497
- }, [onCopy, editorActor, slateEditor]), handleCut = useCallback((event_0) => {
11524
+ }, $[73] = editorActor, $[74] = onCopy, $[75] = slateEditor, $[76] = t16) : t16 = $[76];
11525
+ const handleCopy = t16;
11526
+ let t17;
11527
+ $[77] !== editorActor || $[78] !== onCut || $[79] !== slateEditor ? (t17 = (event_0) => {
11498
11528
  if (onCut)
11499
11529
  onCut(event_0) !== void 0 && event_0.preventDefault();
11500
11530
  else if (event_0.nativeEvent.clipboardData) {
@@ -11519,7 +11549,10 @@ const debug = debugWithName("component:Editable"), PortableTextEditable = forwar
11519
11549
  nativeEvent: event_0
11520
11550
  });
11521
11551
  }
11522
- }, [onCut, editorActor, slateEditor]), handlePaste = useCallback((event_1) => {
11552
+ }, $[77] = editorActor, $[78] = onCut, $[79] = slateEditor, $[80] = t17) : t17 = $[80];
11553
+ const handleCut = t17;
11554
+ let t18;
11555
+ $[81] !== editorActor || $[82] !== onPaste || $[83] !== portableTextEditor || $[84] !== relayActor || $[85] !== slateEditor ? (t18 = (event_1) => {
11523
11556
  const value = fromSlateValue(slateEditor.children, editorActor.getSnapshot().context.schema.block.name, KEY_TO_VALUE_ELEMENT.get(slateEditor)), path = (slateEditor.selection ? slateRangeToSelection({
11524
11557
  schema: editorActor.getSnapshot().context.schema,
11525
11558
  editor: slateEditor,
@@ -11555,26 +11588,27 @@ const debug = debugWithName("component:Editable"), PortableTextEditable = forwar
11555
11588
  editor: slateEditor,
11556
11589
  nativeEvent: event_1
11557
11590
  });
11558
- } else result_1.insert ? editorActor.send({
11559
- type: "behavior event",
11560
- behaviorEvent: {
11561
- type: "insert.blocks",
11562
- blocks: parseBlocks({
11563
- context: {
11564
- keyGenerator: editorActor.getSnapshot().context.keyGenerator,
11565
- schema: editorActor.getSnapshot().context.schema
11566
- },
11567
- blocks: result_1.insert,
11568
- options: {
11569
- refreshKeys: !1,
11570
- validateFields: !1
11571
- }
11572
- }),
11573
- placement: "auto"
11574
- },
11575
- editor: slateEditor
11576
- }) : console.warn("Your onPaste function returned something unexpected:", result_1);
11577
- }).catch((error) => (console.warn(error), error)).finally(() => {
11591
+ } else
11592
+ result_1.insert ? editorActor.send({
11593
+ type: "behavior event",
11594
+ behaviorEvent: {
11595
+ type: "insert.blocks",
11596
+ blocks: parseBlocks({
11597
+ context: {
11598
+ keyGenerator: editorActor.getSnapshot().context.keyGenerator,
11599
+ schema: editorActor.getSnapshot().context.schema
11600
+ },
11601
+ blocks: result_1.insert,
11602
+ options: {
11603
+ refreshKeys: !1,
11604
+ validateFields: !1
11605
+ }
11606
+ }),
11607
+ placement: "auto"
11608
+ },
11609
+ editor: slateEditor
11610
+ }) : console.warn("Your onPaste function returned something unexpected:", result_1);
11611
+ }).catch(_temp5).finally(() => {
11578
11612
  relayActor.send({
11579
11613
  type: "done loading"
11580
11614
  });
@@ -11602,12 +11636,18 @@ const debug = debugWithName("component:Editable"), PortableTextEditable = forwar
11602
11636
  });
11603
11637
  }
11604
11638
  debug("No result from custom paste handler, pasting normally");
11605
- }, [editorActor, onPaste, portableTextEditor, relayActor, slateEditor]), handleOnFocus = useCallback((event_2) => {
11639
+ }, $[81] = editorActor, $[82] = onPaste, $[83] = portableTextEditor, $[84] = relayActor, $[85] = slateEditor, $[86] = t18) : t18 = $[86];
11640
+ const handlePaste = t18;
11641
+ let t19;
11642
+ $[87] !== editorActor || $[88] !== onFocus || $[89] !== relayActor || $[90] !== slateEditor ? (t19 = (event_2) => {
11606
11643
  onFocus && onFocus(event_2), event_2.isDefaultPrevented() || (relayActor.send({
11607
11644
  type: "focused",
11608
11645
  event: event_2
11609
11646
  }), !slateEditor.selection && isEqualToEmptyEditor(slateEditor.children, editorActor.getSnapshot().context.schema) && (Transforms.select(slateEditor, Editor.start(slateEditor, [])), slateEditor.onChange()));
11610
- }, [editorActor, onFocus, relayActor, slateEditor]), handleClick = useCallback((event_3) => {
11647
+ }, $[87] = editorActor, $[88] = onFocus, $[89] = relayActor, $[90] = slateEditor, $[91] = t19) : t19 = $[91];
11648
+ const handleOnFocus = t19;
11649
+ let t20;
11650
+ $[92] !== editorActor || $[93] !== onClick || $[94] !== slateEditor ? (t20 = (event_3) => {
11611
11651
  if (onClick && onClick(event_3), event_3.isDefaultPrevented() || event_3.isPropagationStopped())
11612
11652
  return;
11613
11653
  const position_3 = getEventPosition({
@@ -11624,47 +11664,23 @@ const debug = debugWithName("component:Editable"), PortableTextEditable = forwar
11624
11664
  editor: slateEditor,
11625
11665
  nativeEvent: event_3
11626
11666
  });
11627
- }, [onClick, editorActor, slateEditor]), handleOnBlur = useCallback((event_4) => {
11667
+ }, $[92] = editorActor, $[93] = onClick, $[94] = slateEditor, $[95] = t20) : t20 = $[95];
11668
+ const handleClick = t20;
11669
+ let t21;
11670
+ $[96] !== onBlur || $[97] !== relayActor ? (t21 = (event_4) => {
11628
11671
  onBlur && onBlur(event_4), event_4.isPropagationStopped() || relayActor.send({
11629
11672
  type: "blurred",
11630
11673
  event: event_4
11631
11674
  });
11632
- }, [relayActor, onBlur]), handleOnBeforeInput = useCallback((event_5) => {
11675
+ }, $[96] = onBlur, $[97] = relayActor, $[98] = t21) : t21 = $[98];
11676
+ const handleOnBlur = t21;
11677
+ let t22;
11678
+ $[99] !== onBeforeInput ? (t22 = (event_5) => {
11633
11679
  onBeforeInput && onBeforeInput(event_5);
11634
- }, [onBeforeInput]), validateSelection = useCallback(() => {
11635
- if (!slateEditor.selection)
11636
- return;
11637
- const root = ReactEditor.findDocumentOrShadowRoot(slateEditor), {
11638
- activeElement
11639
- } = root;
11640
- if (ref.current !== activeElement)
11641
- return;
11642
- const domSelection = ReactEditor.getWindow(slateEditor).getSelection();
11643
- if (!domSelection || domSelection.rangeCount === 0)
11644
- return;
11645
- const existingDOMRange = domSelection.getRangeAt(0);
11646
- try {
11647
- const newDOMRange = ReactEditor.toDOMRange(slateEditor, slateEditor.selection);
11648
- (newDOMRange.startOffset !== existingDOMRange.startOffset || newDOMRange.endOffset !== existingDOMRange.endOffset) && (debug("DOM range out of sync, validating selection"), domSelection?.removeAllRanges(), domSelection.addRange(newDOMRange));
11649
- } catch {
11650
- debug("Could not resolve selection, selecting top document"), Transforms.deselect(slateEditor), slateEditor.children.length > 0 && Transforms.select(slateEditor, [0, 0]), slateEditor.onChange();
11651
- }
11652
- }, [ref, slateEditor]);
11653
- useEffect(() => {
11654
- if (editableElement) {
11655
- const mutationObserver = new MutationObserver(validateSelection);
11656
- return mutationObserver.observe(editableElement, {
11657
- attributeOldValue: !1,
11658
- attributes: !1,
11659
- characterData: !1,
11660
- childList: !0,
11661
- subtree: !0
11662
- }), () => {
11663
- mutationObserver.disconnect();
11664
- };
11665
- }
11666
- }, [validateSelection, editableElement]);
11667
- const handleKeyDown = useCallback((event_6) => {
11680
+ }, $[99] = onBeforeInput, $[100] = t22) : t22 = $[100];
11681
+ const handleOnBeforeInput = t22;
11682
+ let t23;
11683
+ $[101] !== editorActor || $[102] !== props || $[103] !== slateEditor ? (t23 = (event_6) => {
11668
11684
  props.onKeyDown && props.onKeyDown(event_6), event_6.isDefaultPrevented() || slateEditor.pteWithHotKeys(event_6), event_6.isDefaultPrevented() || editorActor.send({
11669
11685
  type: "behavior event",
11670
11686
  behaviorEvent: {
@@ -11681,7 +11697,10 @@ const debug = debugWithName("component:Editable"), PortableTextEditable = forwar
11681
11697
  editor: slateEditor,
11682
11698
  nativeEvent: event_6
11683
11699
  });
11684
- }, [props, editorActor, slateEditor]), handleKeyUp = useCallback((event_7) => {
11700
+ }, $[101] = editorActor, $[102] = props, $[103] = slateEditor, $[104] = t23) : t23 = $[104];
11701
+ const handleKeyDown = t23;
11702
+ let t24;
11703
+ $[105] !== editorActor || $[106] !== props || $[107] !== slateEditor ? (t24 = (event_7) => {
11685
11704
  props.onKeyUp && props.onKeyUp(event_7), event_7.isDefaultPrevented() || editorActor.send({
11686
11705
  type: "behavior event",
11687
11706
  behaviorEvent: {
@@ -11698,16 +11717,27 @@ const debug = debugWithName("component:Editable"), PortableTextEditable = forwar
11698
11717
  editor: slateEditor,
11699
11718
  nativeEvent: event_7
11700
11719
  });
11701
- }, [props, editorActor, slateEditor]), scrollSelectionIntoViewToSlate = useMemo(() => {
11702
- if (scrollSelectionIntoView !== void 0)
11703
- return scrollSelectionIntoView === null ? noop : (_editor, domRange) => {
11704
- scrollSelectionIntoView(portableTextEditor, domRange);
11705
- };
11706
- }, [portableTextEditor, scrollSelectionIntoView]);
11707
- useEffect(() => {
11708
- ref.current = ReactEditor.toDOMNode(slateEditor, slateEditor), setEditableElement(ref.current);
11709
- }, [slateEditor, ref]), useEffect(() => {
11710
- const window_0 = ReactEditor.getWindow(slateEditor), onDragEnd_0 = () => {
11720
+ }, $[105] = editorActor, $[106] = props, $[107] = slateEditor, $[108] = t24) : t24 = $[108];
11721
+ const handleKeyUp = t24;
11722
+ let t25;
11723
+ bb1: {
11724
+ if (scrollSelectionIntoView === void 0) {
11725
+ t25 = void 0;
11726
+ break bb1;
11727
+ }
11728
+ if (scrollSelectionIntoView === null) {
11729
+ t25 = noop;
11730
+ break bb1;
11731
+ }
11732
+ let t262;
11733
+ $[109] !== portableTextEditor || $[110] !== scrollSelectionIntoView ? (t262 = (_editor, domRange) => {
11734
+ scrollSelectionIntoView(portableTextEditor, domRange);
11735
+ }, $[109] = portableTextEditor, $[110] = scrollSelectionIntoView, $[111] = t262) : t262 = $[111], t25 = t262;
11736
+ }
11737
+ const scrollSelectionIntoViewToSlate = t25;
11738
+ let t26, t27;
11739
+ $[112] !== editorActor || $[113] !== slateEditor ? (t26 = () => {
11740
+ const window2 = ReactEditor.getWindow(slateEditor), onDragEnd_0 = () => {
11711
11741
  editorActor.send({
11712
11742
  type: "dragend"
11713
11743
  });
@@ -11716,11 +11746,12 @@ const debug = debugWithName("component:Editable"), PortableTextEditable = forwar
11716
11746
  type: "drop"
11717
11747
  });
11718
11748
  };
11719
- return window_0.document.addEventListener("dragend", onDragEnd_0), window_0.document.addEventListener("drop", onDrop_0), () => {
11720
- window_0.document.removeEventListener("dragend", onDragEnd_0), window_0.document.removeEventListener("drop", onDrop_0);
11749
+ return window2.document.addEventListener("dragend", onDragEnd_0), window2.document.addEventListener("drop", onDrop_0), () => {
11750
+ window2.document.removeEventListener("dragend", onDragEnd_0), window2.document.removeEventListener("drop", onDrop_0);
11721
11751
  };
11722
- }, [slateEditor, editorActor]);
11723
- const handleDragStart = useCallback((event_8) => {
11752
+ }, t27 = [slateEditor, editorActor], $[112] = editorActor, $[113] = slateEditor, $[114] = t26, $[115] = t27) : (t26 = $[114], t27 = $[115]), useEffect(t26, t27);
11753
+ let t28;
11754
+ $[116] !== editorActor || $[117] !== onDragStart || $[118] !== slateEditor ? (t28 = (event_8) => {
11724
11755
  if (onDragStart?.(event_8), event_8.isDefaultPrevented() || event_8.isPropagationStopped())
11725
11756
  return;
11726
11757
  const position_4 = getEventPosition({
@@ -11748,7 +11779,10 @@ const debug = debugWithName("component:Editable"), PortableTextEditable = forwar
11748
11779
  },
11749
11780
  editor: slateEditor
11750
11781
  }), !0;
11751
- }, [onDragStart, editorActor, slateEditor]), handleDrag = useCallback((event_9) => {
11782
+ }, $[116] = editorActor, $[117] = onDragStart, $[118] = slateEditor, $[119] = t28) : t28 = $[119];
11783
+ const handleDragStart = t28;
11784
+ let t29;
11785
+ $[120] !== editorActor || $[121] !== onDrag || $[122] !== slateEditor ? (t29 = (event_9) => {
11752
11786
  if (onDrag?.(event_9), !(event_9.isDefaultPrevented() || event_9.isPropagationStopped() || !getEventPosition({
11753
11787
  editorActor,
11754
11788
  slateEditor,
@@ -11764,7 +11798,10 @@ const debug = debugWithName("component:Editable"), PortableTextEditable = forwar
11764
11798
  },
11765
11799
  editor: slateEditor
11766
11800
  }), !0;
11767
- }, [onDrag, editorActor, slateEditor]), handleDragEnd = useCallback((event_10) => {
11801
+ }, $[120] = editorActor, $[121] = onDrag, $[122] = slateEditor, $[123] = t29) : t29 = $[123];
11802
+ const handleDrag = t29;
11803
+ let t30;
11804
+ $[124] !== editorActor || $[125] !== onDragEnd || $[126] !== slateEditor ? (t30 = (event_10) => {
11768
11805
  if (onDragEnd?.(event_10), !(event_10.isDefaultPrevented() || event_10.isPropagationStopped()))
11769
11806
  return editorActor.send({
11770
11807
  type: "behavior event",
@@ -11776,7 +11813,10 @@ const debug = debugWithName("component:Editable"), PortableTextEditable = forwar
11776
11813
  },
11777
11814
  editor: slateEditor
11778
11815
  }), !0;
11779
- }, [onDragEnd, editorActor, slateEditor]), handleDragEnter = useCallback((event_11) => {
11816
+ }, $[124] = editorActor, $[125] = onDragEnd, $[126] = slateEditor, $[127] = t30) : t30 = $[127];
11817
+ const handleDragEnd = t30;
11818
+ let t31;
11819
+ $[128] !== editorActor || $[129] !== onDragEnter || $[130] !== slateEditor ? (t31 = (event_11) => {
11780
11820
  if (onDragEnter?.(event_11), event_11.isDefaultPrevented() || event_11.isPropagationStopped())
11781
11821
  return;
11782
11822
  const position_6 = getEventPosition({
@@ -11796,7 +11836,10 @@ const debug = debugWithName("component:Editable"), PortableTextEditable = forwar
11796
11836
  },
11797
11837
  editor: slateEditor
11798
11838
  }), !0;
11799
- }, [onDragEnter, editorActor, slateEditor]), handleDragOver = useCallback((event_12) => {
11839
+ }, $[128] = editorActor, $[129] = onDragEnter, $[130] = slateEditor, $[131] = t31) : t31 = $[131];
11840
+ const handleDragEnter = t31;
11841
+ let t32;
11842
+ $[132] !== editorActor || $[133] !== onDragOver || $[134] !== slateEditor ? (t32 = (event_12) => {
11800
11843
  if (onDragOver?.(event_12), event_12.isDefaultPrevented() || event_12.isPropagationStopped())
11801
11844
  return;
11802
11845
  const position_7 = getEventPosition({
@@ -11818,7 +11861,10 @@ const debug = debugWithName("component:Editable"), PortableTextEditable = forwar
11818
11861
  editor: slateEditor,
11819
11862
  nativeEvent: event_12
11820
11863
  }), !0;
11821
- }, [onDragOver, editorActor, slateEditor]), handleDrop = useCallback((event_13) => {
11864
+ }, $[132] = editorActor, $[133] = onDragOver, $[134] = slateEditor, $[135] = t32) : t32 = $[135];
11865
+ const handleDragOver = t32;
11866
+ let t33;
11867
+ $[136] !== editorActor || $[137] !== onDrop || $[138] !== slateEditor ? (t33 = (event_13) => {
11822
11868
  if (onDrop?.(event_13), event_13.isDefaultPrevented() || event_13.isPropagationStopped())
11823
11869
  return;
11824
11870
  const position_8 = getEventPosition({
@@ -11843,7 +11889,10 @@ const debug = debugWithName("component:Editable"), PortableTextEditable = forwar
11843
11889
  editor: slateEditor,
11844
11890
  nativeEvent: event_13
11845
11891
  }), !0;
11846
- }, [onDrop, editorActor, slateEditor]), handleDragLeave = useCallback((event_14) => {
11892
+ }, $[136] = editorActor, $[137] = onDrop, $[138] = slateEditor, $[139] = t33) : t33 = $[139];
11893
+ const handleDrop = t33;
11894
+ let t34;
11895
+ $[140] !== editorActor || $[141] !== onDragLeave || $[142] !== slateEditor ? (t34 = (event_14) => {
11847
11896
  if (onDragLeave?.(event_14), !(event_14.isDefaultPrevented() || event_14.isPropagationStopped() || !getEventPosition({
11848
11897
  editorActor,
11849
11898
  slateEditor,
@@ -11859,41 +11908,66 @@ const debug = debugWithName("component:Editable"), PortableTextEditable = forwar
11859
11908
  },
11860
11909
  editor: slateEditor
11861
11910
  }), !0;
11862
- }, [onDragLeave, editorActor, slateEditor]);
11863
- return portableTextEditor ? hasInvalidValue ? null : /* @__PURE__ */ jsx(
11864
- Editable,
11865
- {
11866
- ...restProps,
11867
- "data-read-only": readOnly,
11868
- autoFocus: !1,
11869
- className: restProps.className || "pt-editable",
11870
- decorate,
11871
- onBlur: handleOnBlur,
11872
- onCopy: handleCopy,
11873
- onCut: handleCut,
11874
- onClick: handleClick,
11875
- onDOMBeforeInput: handleOnBeforeInput,
11876
- onDragStart: handleDragStart,
11877
- onDrag: handleDrag,
11878
- onDragEnd: handleDragEnd,
11879
- onDragEnter: handleDragEnter,
11880
- onDragOver: handleDragOver,
11881
- onDrop: handleDrop,
11882
- onDragLeave: handleDragLeave,
11883
- onFocus: handleOnFocus,
11884
- onKeyDown: handleKeyDown,
11885
- onKeyUp: handleKeyUp,
11886
- onPaste: handlePaste,
11887
- readOnly,
11888
- renderPlaceholder: void 0,
11889
- renderElement,
11890
- renderLeaf,
11891
- renderText,
11892
- scrollSelectionIntoView: scrollSelectionIntoViewToSlate
11911
+ }, $[140] = editorActor, $[141] = onDragLeave, $[142] = slateEditor, $[143] = t34) : t34 = $[143];
11912
+ const handleDragLeave = t34;
11913
+ let t35;
11914
+ $[144] !== forwardedRef || $[145] !== slateEditor ? (t35 = (node) => {
11915
+ if (typeof forwardedRef == "function" ? forwardedRef(node) : forwardedRef && (forwardedRef.current = node), node) {
11916
+ const mutationObserver = new MutationObserver(() => {
11917
+ validateSelection(slateEditor, node);
11918
+ });
11919
+ return mutationObserver.observe(node, {
11920
+ attributeOldValue: !1,
11921
+ attributes: !1,
11922
+ characterData: !1,
11923
+ childList: !0,
11924
+ subtree: !0
11925
+ }), () => {
11926
+ mutationObserver.disconnect();
11927
+ };
11893
11928
  }
11894
- ) : null;
11929
+ }, $[144] = forwardedRef, $[145] = slateEditor, $[146] = t35) : t35 = $[146];
11930
+ const callbackRef = t35;
11931
+ if (!portableTextEditor)
11932
+ return null;
11933
+ let t36;
11934
+ return $[147] !== callbackRef || $[148] !== decorate || $[149] !== handleClick || $[150] !== handleCopy || $[151] !== handleCut || $[152] !== handleDrag || $[153] !== handleDragEnd || $[154] !== handleDragEnter || $[155] !== handleDragLeave || $[156] !== handleDragOver || $[157] !== handleDragStart || $[158] !== handleDrop || $[159] !== handleKeyDown || $[160] !== handleKeyUp || $[161] !== handleOnBeforeInput || $[162] !== handleOnBlur || $[163] !== handleOnFocus || $[164] !== handlePaste || $[165] !== hasInvalidValue || $[166] !== readOnly || $[167] !== renderElement || $[168] !== renderLeaf || $[169] !== restProps || $[170] !== scrollSelectionIntoViewToSlate ? (t36 = hasInvalidValue ? null : /* @__PURE__ */ jsx(Editable, { ...restProps, ref: callbackRef, "data-read-only": readOnly, autoFocus: !1, className: restProps.className || "pt-editable", decorate, onBlur: handleOnBlur, onCopy: handleCopy, onCut: handleCut, onClick: handleClick, onDOMBeforeInput: handleOnBeforeInput, onDragStart: handleDragStart, onDrag: handleDrag, onDragEnd: handleDragEnd, onDragEnter: handleDragEnter, onDragOver: handleDragOver, onDrop: handleDrop, onDragLeave: handleDragLeave, onFocus: handleOnFocus, onKeyDown: handleKeyDown, onKeyUp: handleKeyUp, onPaste: handlePaste, readOnly, renderPlaceholder: void 0, renderElement, renderLeaf, renderText, scrollSelectionIntoView: scrollSelectionIntoViewToSlate }), $[147] = callbackRef, $[148] = decorate, $[149] = handleClick, $[150] = handleCopy, $[151] = handleCut, $[152] = handleDrag, $[153] = handleDragEnd, $[154] = handleDragEnter, $[155] = handleDragLeave, $[156] = handleDragOver, $[157] = handleDragStart, $[158] = handleDrop, $[159] = handleKeyDown, $[160] = handleKeyUp, $[161] = handleOnBeforeInput, $[162] = handleOnBlur, $[163] = handleOnFocus, $[164] = handlePaste, $[165] = hasInvalidValue, $[166] = readOnly, $[167] = renderElement, $[168] = renderLeaf, $[169] = restProps, $[170] = scrollSelectionIntoViewToSlate, $[171] = t36) : t36 = $[171], t36;
11895
11935
  });
11896
11936
  PortableTextEditable.displayName = "ForwardRef(PortableTextEditable)";
11937
+ function validateSelection(slateEditor, activeElement) {
11938
+ if (!slateEditor.selection)
11939
+ return;
11940
+ const root = ReactEditor.findDocumentOrShadowRoot(slateEditor);
11941
+ if (activeElement !== root.activeElement)
11942
+ return;
11943
+ const domSelection = ReactEditor.getWindow(slateEditor).getSelection();
11944
+ if (!domSelection || domSelection.rangeCount === 0)
11945
+ return;
11946
+ const existingDOMRange = domSelection.getRangeAt(0);
11947
+ try {
11948
+ const newDOMRange = ReactEditor.toDOMRange(slateEditor, slateEditor.selection);
11949
+ (newDOMRange.startOffset !== existingDOMRange.startOffset || newDOMRange.endOffset !== existingDOMRange.endOffset) && (debug("DOM range out of sync, validating selection"), domSelection?.removeAllRanges(), domSelection.addRange(newDOMRange));
11950
+ } catch {
11951
+ debug("Could not resolve selection, selecting top document"), Transforms.deselect(slateEditor), slateEditor.children.length > 0 && Transforms.select(slateEditor, [0, 0]), slateEditor.onChange();
11952
+ }
11953
+ }
11954
+ function _temp(s) {
11955
+ return s.matches({
11956
+ "edit mode": "read only"
11957
+ });
11958
+ }
11959
+ function _temp2(s_0) {
11960
+ return s_0.context.decorate?.fn;
11961
+ }
11962
+ function _temp3(props_0) {
11963
+ return /* @__PURE__ */ jsx(RenderText, { ...props_0 });
11964
+ }
11965
+ function _temp4(o) {
11966
+ return o.type === "set_selection";
11967
+ }
11968
+ function _temp5(error) {
11969
+ return console.warn(error), error;
11970
+ }
11897
11971
  function useConstant(factory) {
11898
11972
  const ref = React.useRef(null);
11899
11973
  return ref.current || (ref.current = {