@portabletext/editor 1.49.0 → 1.49.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 (41) hide show
  1. package/lib/_chunks-cjs/editor-provider.cjs +22 -11
  2. package/lib/_chunks-cjs/editor-provider.cjs.map +1 -1
  3. package/lib/_chunks-cjs/util.merge-text-blocks.cjs +2 -1
  4. package/lib/_chunks-cjs/util.merge-text-blocks.cjs.map +1 -1
  5. package/lib/_chunks-cjs/util.slice-blocks.cjs +26 -8
  6. package/lib/_chunks-cjs/util.slice-blocks.cjs.map +1 -1
  7. package/lib/_chunks-es/editor-provider.js +22 -11
  8. package/lib/_chunks-es/editor-provider.js.map +1 -1
  9. package/lib/_chunks-es/util.merge-text-blocks.js +2 -1
  10. package/lib/_chunks-es/util.merge-text-blocks.js.map +1 -1
  11. package/lib/_chunks-es/util.slice-blocks.js +26 -8
  12. package/lib/_chunks-es/util.slice-blocks.js.map +1 -1
  13. package/lib/index.cjs +155 -158
  14. package/lib/index.cjs.map +1 -1
  15. package/lib/index.js +160 -163
  16. package/lib/index.js.map +1 -1
  17. package/package.json +6 -6
  18. package/src/behaviors/behavior.abstract.split.ts +2 -2
  19. package/src/converters/converter.portable-text.ts +1 -0
  20. package/src/converters/converter.text-html.ts +1 -0
  21. package/src/converters/converter.text-plain.ts +1 -0
  22. package/src/editor/Editable.tsx +20 -48
  23. package/src/editor/__tests__/PortableTextEditor.test.tsx +3 -3
  24. package/src/editor/__tests__/RangeDecorations.test.tsx +2 -2
  25. package/src/editor/components/render-block-object.tsx +0 -1
  26. package/src/editor/components/render-element.tsx +3 -3
  27. package/src/editor/components/render-inline-object.tsx +9 -12
  28. package/src/editor/components/render-leaf.tsx +64 -0
  29. package/src/editor/components/render-span.tsx +260 -0
  30. package/src/editor/components/render-text-block.tsx +0 -1
  31. package/src/editor/components/render-text.tsx +18 -0
  32. package/src/internal-utils/parse-blocks.test.ts +20 -20
  33. package/src/internal-utils/parse-blocks.ts +57 -20
  34. package/src/operations/behavior.operation.annotation.add.ts +1 -1
  35. package/src/operations/behavior.operation.block.set.ts +1 -1
  36. package/src/operations/behavior.operation.block.unset.ts +2 -2
  37. package/src/operations/behavior.operation.insert-inline-object.ts +1 -1
  38. package/src/operations/behavior.operation.insert.block.ts +1 -1
  39. package/src/selectors/selector.get-trimmed-selection.test.ts +1 -0
  40. package/src/utils/util.merge-text-blocks.ts +1 -1
  41. package/src/editor/components/Leaf.tsx +0 -336
package/lib/index.cjs CHANGED
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: !0 });
3
- var reactCompilerRuntime = require("react-compiler-runtime"), React = require("react"), useEffectEvent = require("use-effect-event"), editorProvider = require("./_chunks-cjs/editor-provider.cjs"), jsxRuntime = require("react/jsx-runtime"), react = require("@xstate/react"), noop = require("lodash/noop.js"), slate = require("slate"), slateReact = require("slate-react"), util_sliceBlocks = require("./_chunks-cjs/util.slice-blocks.cjs"), selector_isSelectingEntireBlocks = require("./_chunks-cjs/selector.is-selecting-entire-blocks.cjs"), selector_getFocusInlineObject = require("./_chunks-cjs/selector.get-focus-inline-object.cjs"), slateDom = require("slate-dom"), util_isSelectionCollapsed = require("./_chunks-cjs/util.is-selection-collapsed.cjs"), isEqual = require("lodash/isEqual.js"), util_selectionPointToBlockOffset = require("./_chunks-cjs/util.selection-point-to-block-offset.cjs"), uniq = require("lodash/uniq.js"), behaviors_index = require("./behaviors/index.cjs"), xstate = require("xstate");
3
+ var reactCompilerRuntime = require("react-compiler-runtime"), React = require("react"), useEffectEvent = require("use-effect-event"), editorProvider = require("./_chunks-cjs/editor-provider.cjs"), jsxRuntime = require("react/jsx-runtime"), react = require("@xstate/react"), noop = require("lodash/noop.js"), slate = require("slate"), slateReact = require("slate-react"), util_sliceBlocks = require("./_chunks-cjs/util.slice-blocks.cjs"), selector_isSelectingEntireBlocks = require("./_chunks-cjs/selector.is-selecting-entire-blocks.cjs"), selector_getFocusInlineObject = require("./_chunks-cjs/selector.get-focus-inline-object.cjs"), slateDom = require("slate-dom"), util_isSelectionCollapsed = require("./_chunks-cjs/util.is-selection-collapsed.cjs"), isEqual = require("lodash/isEqual.js"), util_selectionPointToBlockOffset = require("./_chunks-cjs/util.selection-point-to-block-offset.cjs"), behaviors_index = require("./behaviors/index.cjs"), uniq = require("lodash/uniq.js"), xstate = require("xstate");
4
4
  function _interopDefaultCompat(e) {
5
5
  return e && typeof e == "object" && "default" in e ? e : { default: e };
6
6
  }
@@ -330,130 +330,6 @@ function getSelectionDomNodes({
330
330
  childNodes: childEntries.map(([childNode]) => slateDom.DOMEditor.toDOMNode(slateEditor, childNode))
331
331
  };
332
332
  }
333
- const debug$2 = editorProvider.debugWithName("components:Leaf"), EMPTY_MARKS = [], Leaf = (props) => {
334
- const {
335
- editorActor,
336
- attributes,
337
- children,
338
- leaf,
339
- schemaTypes,
340
- renderChild,
341
- renderDecorator,
342
- renderAnnotation
343
- } = props, spanRef = React.useRef(null), portableTextEditor = editorProvider.usePortableTextEditor(), blockSelected = slateReact.useSelected(), [focused, setFocused] = React.useState(!1), [selected, setSelected] = React.useState(!1), block = children.props.parent, path = React.useMemo(() => block ? [{
344
- _key: block?._key
345
- }, "children", {
346
- _key: leaf._key
347
- }] : [], [block, leaf._key]), decoratorValues = React.useMemo(() => schemaTypes.decorators.map((dec) => dec.value), [schemaTypes.decorators]), marks = React.useMemo(() => uniq__default.default((leaf.marks || EMPTY_MARKS).filter((mark) => decoratorValues.includes(mark))), [decoratorValues, leaf.marks]), annotationMarks = Array.isArray(leaf.marks) ? leaf.marks : EMPTY_MARKS, annotations = React.useMemo(() => annotationMarks.map((mark_0) => !decoratorValues.includes(mark_0) && block?.markDefs?.find((def) => def._key === mark_0)).filter(Boolean), [annotationMarks, block, decoratorValues]), shouldTrackSelectionAndFocus = annotations.length > 0 && blockSelected;
348
- React.useEffect(() => {
349
- if (!shouldTrackSelectionAndFocus) {
350
- setFocused(!1);
351
- return;
352
- }
353
- const sel = editorProvider.PortableTextEditor.getSelection(portableTextEditor);
354
- sel && isEqual__default.default(sel.focus.path, path) && editorProvider.PortableTextEditor.isCollapsedSelection(portableTextEditor) && React.startTransition(() => {
355
- setFocused(!0);
356
- });
357
- }, [shouldTrackSelectionAndFocus, path, portableTextEditor]);
358
- const setSelectedFromRange = React.useCallback(() => {
359
- if (!shouldTrackSelectionAndFocus)
360
- return;
361
- debug$2("Setting selection and focus from range");
362
- const winSelection = window.getSelection();
363
- if (!winSelection) {
364
- setSelected(!1);
365
- return;
366
- }
367
- if (winSelection && winSelection.rangeCount > 0) {
368
- const range = winSelection.getRangeAt(0);
369
- spanRef.current && range.intersectsNode(spanRef.current) ? setSelected(!0) : setSelected(!1);
370
- } else
371
- setSelected(!1);
372
- }, [shouldTrackSelectionAndFocus]);
373
- React.useEffect(() => {
374
- if (!shouldTrackSelectionAndFocus)
375
- return;
376
- const onBlur = editorActor.on("blurred", () => {
377
- setFocused(!1), setSelected(!1);
378
- }), onFocus = editorActor.on("focused", () => {
379
- const sel_0 = editorProvider.PortableTextEditor.getSelection(portableTextEditor);
380
- sel_0 && isEqual__default.default(sel_0.focus.path, path) && editorProvider.PortableTextEditor.isCollapsedSelection(portableTextEditor) && setFocused(!0), setSelectedFromRange();
381
- }), onSelection = editorActor.on("selection", (event) => {
382
- event.selection && isEqual__default.default(event.selection.focus.path, path) && editorProvider.PortableTextEditor.isCollapsedSelection(portableTextEditor) ? setFocused(!0) : setFocused(!1), setSelectedFromRange();
383
- });
384
- return () => {
385
- onBlur.unsubscribe(), onFocus.unsubscribe(), onSelection.unsubscribe();
386
- };
387
- }, [editorActor, path, portableTextEditor, setSelectedFromRange, shouldTrackSelectionAndFocus]), React.useEffect(() => setSelectedFromRange(), [setSelectedFromRange]);
388
- const content = React.useMemo(() => {
389
- let returnedChildren = children;
390
- if (slate.Text.isText(leaf) && leaf._type === schemaTypes.span.name && (marks.forEach((mark_1) => {
391
- const schemaType = schemaTypes.decorators.find((dec_0) => dec_0.value === mark_1);
392
- if (schemaType && renderDecorator) {
393
- const _props = Object.defineProperty({
394
- children: returnedChildren,
395
- editorElementRef: spanRef,
396
- focused,
397
- path,
398
- selected,
399
- schemaType,
400
- value: mark_1
401
- }, "type", {
402
- enumerable: !1,
403
- get() {
404
- return console.warn("Property 'type' is deprecated, use 'schemaType' instead."), schemaType;
405
- }
406
- });
407
- returnedChildren = renderDecorator(_props);
408
- }
409
- }), block && annotations.length > 0 && annotations.forEach((annotation) => {
410
- const schemaType_0 = schemaTypes.annotations.find((t) => t.name === annotation._type);
411
- if (schemaType_0)
412
- if (renderAnnotation) {
413
- const _props_0 = Object.defineProperty({
414
- block,
415
- children: returnedChildren,
416
- editorElementRef: spanRef,
417
- focused,
418
- path,
419
- selected,
420
- schemaType: schemaType_0,
421
- value: annotation
422
- }, "type", {
423
- enumerable: !1,
424
- get() {
425
- return console.warn("Property 'type' is deprecated, use 'schemaType' instead."), schemaType_0;
426
- }
427
- });
428
- returnedChildren = /* @__PURE__ */ jsxRuntime.jsx("span", { ref: spanRef, children: renderAnnotation(_props_0) });
429
- } else
430
- returnedChildren = /* @__PURE__ */ jsxRuntime.jsx("span", { ref: spanRef, children: returnedChildren });
431
- }), block && renderChild)) {
432
- const child = block.children.find((_child) => _child._key === leaf._key);
433
- if (child) {
434
- const _props_1 = Object.defineProperty({
435
- annotations,
436
- children: /* @__PURE__ */ jsxRuntime.jsx(jsxRuntime.Fragment, { children: returnedChildren }),
437
- editorElementRef: spanRef,
438
- focused,
439
- path,
440
- schemaType: schemaTypes.span,
441
- selected,
442
- value: child
443
- }, "type", {
444
- enumerable: !1,
445
- get() {
446
- return console.warn("Property 'type' is deprecated, use 'schemaType' instead."), schemaTypes.span;
447
- }
448
- });
449
- returnedChildren = renderChild(_props_1);
450
- }
451
- }
452
- return returnedChildren;
453
- }, [annotations, block, children, focused, leaf, marks, path, renderAnnotation, renderChild, renderDecorator, schemaTypes.annotations, schemaTypes.decorators, schemaTypes.span, selected]);
454
- return React.useMemo(() => /* @__PURE__ */ jsxRuntime.jsx("span", { ...attributes, ref: spanRef, "data-child-key": leaf._key, "data-child-name": leaf._type, "data-child-type": "span", children: content }, leaf._key), [leaf, attributes, content]);
455
- };
456
- Leaf.displayName = "Leaf";
457
333
  function DropIndicator() {
458
334
  const $ = reactCompilerRuntime.c(1);
459
335
  let t0;
@@ -615,7 +491,7 @@ function RenderBlockObject(props) {
615
491
  value: props.blockObject
616
492
  }) : /* @__PURE__ */ jsxRuntime.jsx(RenderDefaultBlockObject, { blockObject: props.blockObject }) }),
617
493
  dragPositionBlock === "end" ? /* @__PURE__ */ jsxRuntime.jsx(DropIndicator, {}) : null
618
- ] }, props.element._key);
494
+ ] });
619
495
  }
620
496
  function RenderInlineObject(props) {
621
497
  const inlineObjectRef = React.useRef(null), slateEditor = slateReact.useSlateStatic(), selected = slateReact.useSelected(), editorActor = React.useContext(editorProvider.EditorActorContext), legacySchemaType = react.useSelector(editorActor, (s) => s.context.getLegacySchema().inlineObjects.find((inlineObject) => inlineObject.name === props.element._type));
@@ -627,11 +503,11 @@ function RenderInlineObject(props) {
627
503
  offset: 0
628
504
  }
629
505
  });
630
- return block || console.error(`Unable to find parent block of inline object ${props.element._key}`), /* @__PURE__ */ jsxRuntime.jsxs("span", { ...props.attributes, children: [
506
+ return block || console.error(`Unable to find parent block of inline object ${props.element._key}`), /* @__PURE__ */ jsxRuntime.jsxs("span", { ...props.attributes, draggable: !props.readOnly, className: "pt-inline-object", "data-child-key": props.inlineObject._key, "data-child-name": props.inlineObject._type, "data-child-type": "object", children: [
631
507
  props.children,
632
- /* @__PURE__ */ jsxRuntime.jsx("span", { draggable: !props.readOnly, className: "pt-inline-object", "data-testid": "pt-inline-object", ref: inlineObjectRef, style: {
508
+ /* @__PURE__ */ jsxRuntime.jsx("span", { ref: inlineObjectRef, style: {
633
509
  display: "inline-block"
634
- }, "data-child-key": props.inlineObject._key, "data-child-name": props.inlineObject._type, "data-child-type": "object", children: props.renderChild && block && legacySchemaType ? props.renderChild({
510
+ }, children: props.renderChild && block && legacySchemaType ? props.renderChild({
635
511
  annotations: [],
636
512
  children: /* @__PURE__ */ jsxRuntime.jsx(RenderDefaultInlineObject, { inlineObject: props.inlineObject }),
637
513
  editorElementRef: inlineObjectRef,
@@ -645,7 +521,7 @@ function RenderInlineObject(props) {
645
521
  schemaType: legacySchemaType,
646
522
  value: props.inlineObject,
647
523
  type: legacySchemaType
648
- }) : /* @__PURE__ */ jsxRuntime.jsx(RenderDefaultInlineObject, { inlineObject: props.inlineObject }) }, props.element._key)
524
+ }) : /* @__PURE__ */ jsxRuntime.jsx(RenderDefaultInlineObject, { inlineObject: props.inlineObject }) })
649
525
  ] });
650
526
  }
651
527
  function RenderTextBlock(props) {
@@ -706,10 +582,10 @@ function RenderTextBlock(props) {
706
582
  value: props.textBlock
707
583
  }) : props.children }),
708
584
  dragPositionBlock === "end" ? /* @__PURE__ */ jsxRuntime.jsx(DropIndicator, {}) : null
709
- ] }, props.element._key);
585
+ ] });
710
586
  }
711
587
  function RenderElement(props) {
712
- const $ = reactCompilerRuntime.c(45), editorActor = React.useContext(editorProvider.EditorActorContext), schema = react.useSelector(editorActor, _temp);
588
+ const $ = reactCompilerRuntime.c(45), editorActor = React.useContext(editorProvider.EditorActorContext), schema = react.useSelector(editorActor, _temp$1);
713
589
  if ("__inline" in props.element && props.element.__inline === !0) {
714
590
  let t02;
715
591
  if ($[0] !== props.element || $[1] !== schema) {
@@ -720,7 +596,8 @@ function RenderElement(props) {
720
596
  schema
721
597
  },
722
598
  options: {
723
- refreshKeys: !1
599
+ refreshKeys: !1,
600
+ validateFields: !1
724
601
  },
725
602
  inlineObject: {
726
603
  _key: props.element._key,
@@ -747,7 +624,8 @@ function RenderElement(props) {
747
624
  schema
748
625
  },
749
626
  options: {
750
- refreshKeys: !1
627
+ refreshKeys: !1,
628
+ validateFields: !1
751
629
  },
752
630
  block: props.element
753
631
  }), $[16] = props.element, $[17] = schema, $[18] = t0) : t0 = $[18];
@@ -765,7 +643,8 @@ function RenderElement(props) {
765
643
  schema
766
644
  },
767
645
  options: {
768
- refreshKeys: !1
646
+ refreshKeys: !1,
647
+ validateFields: !1
769
648
  },
770
649
  blockObject: {
771
650
  _key: props.element._key,
@@ -794,9 +673,145 @@ function _temp3() {
794
673
  function _temp2() {
795
674
  return "";
796
675
  }
676
+ function _temp$1(s) {
677
+ return s.context.schema;
678
+ }
679
+ function RenderSpan(props) {
680
+ const slateEditor = slateReact.useSlateStatic(), editorActor = React.useContext(editorProvider.EditorActorContext), legacySchema = react.useSelector(editorActor, (s) => s.context.getLegacySchema()), spanRef = React.useRef(null), portableTextEditor = editorProvider.usePortableTextEditor(), blockSelected = slateReact.useSelected(), [focused, setFocused] = React.useState(!1), [selected, setSelected] = React.useState(!1), parent = props.children.props.parent, block = parent && slateEditor.isTextBlock(parent) ? parent : void 0, path = React.useMemo(() => block ? [{
681
+ _key: block._key
682
+ }, "children", {
683
+ _key: props.leaf._key
684
+ }] : void 0, [block, props.leaf._key]), decoratorSchemaTypes = editorActor.getSnapshot().context.schema.decorators.map((decorator) => decorator.name), decorators = uniq__default.default((props.leaf.marks ?? []).filter((mark) => decoratorSchemaTypes.includes(mark))), annotationMarkDefs = (props.leaf.marks ?? []).flatMap((mark_0) => {
685
+ if (decoratorSchemaTypes.includes(mark_0))
686
+ return [];
687
+ const markDef_0 = block?.markDefs?.find((markDef) => markDef._key === mark_0);
688
+ return markDef_0 ? [markDef_0] : [];
689
+ }), shouldTrackSelectionAndFocus = annotationMarkDefs.length > 0 && blockSelected;
690
+ React.useEffect(() => {
691
+ if (!shouldTrackSelectionAndFocus) {
692
+ setFocused(!1);
693
+ return;
694
+ }
695
+ const sel = editorProvider.PortableTextEditor.getSelection(portableTextEditor);
696
+ sel && isEqual__default.default(sel.focus.path, path) && editorProvider.PortableTextEditor.isCollapsedSelection(portableTextEditor) && React.startTransition(() => {
697
+ setFocused(!0);
698
+ });
699
+ }, [shouldTrackSelectionAndFocus, path, portableTextEditor]);
700
+ const setSelectedFromRange = React.useCallback(() => {
701
+ if (!shouldTrackSelectionAndFocus)
702
+ return;
703
+ const winSelection = window.getSelection();
704
+ if (!winSelection) {
705
+ setSelected(!1);
706
+ return;
707
+ }
708
+ if (winSelection && winSelection.rangeCount > 0) {
709
+ const range = winSelection.getRangeAt(0);
710
+ spanRef.current && range.intersectsNode(spanRef.current) ? setSelected(!0) : setSelected(!1);
711
+ } else
712
+ setSelected(!1);
713
+ }, [shouldTrackSelectionAndFocus]);
714
+ React.useEffect(() => {
715
+ if (!shouldTrackSelectionAndFocus)
716
+ return;
717
+ const onBlur = editorActor.on("blurred", () => {
718
+ setFocused(!1), setSelected(!1);
719
+ }), onFocus = editorActor.on("focused", () => {
720
+ const sel_0 = editorProvider.PortableTextEditor.getSelection(portableTextEditor);
721
+ sel_0 && isEqual__default.default(sel_0.focus.path, path) && editorProvider.PortableTextEditor.isCollapsedSelection(portableTextEditor) && setFocused(!0), setSelectedFromRange();
722
+ }), onSelection = editorActor.on("selection", (event) => {
723
+ event.selection && isEqual__default.default(event.selection.focus.path, path) && editorProvider.PortableTextEditor.isCollapsedSelection(portableTextEditor) ? setFocused(!0) : setFocused(!1), setSelectedFromRange();
724
+ });
725
+ return () => {
726
+ onBlur.unsubscribe(), onFocus.unsubscribe(), onSelection.unsubscribe();
727
+ };
728
+ }, [editorActor, path, portableTextEditor, setSelectedFromRange, shouldTrackSelectionAndFocus]), React.useEffect(() => setSelectedFromRange(), [setSelectedFromRange]);
729
+ let children = props.children;
730
+ for (const mark_1 of decorators) {
731
+ const legacyDecoratorSchemaType = legacySchema.decorators.find((dec) => dec.value === mark_1);
732
+ path && legacyDecoratorSchemaType && props.renderDecorator && (children = props.renderDecorator({
733
+ children,
734
+ editorElementRef: spanRef,
735
+ focused,
736
+ path,
737
+ selected,
738
+ schemaType: legacyDecoratorSchemaType,
739
+ value: mark_1,
740
+ type: legacyDecoratorSchemaType
741
+ }));
742
+ }
743
+ for (const annotationMarkDef of annotationMarkDefs) {
744
+ const legacyAnnotationSchemaType = legacySchema.annotations.find((t) => t.name === annotationMarkDef._type);
745
+ legacyAnnotationSchemaType && (block && path && props.renderAnnotation ? children = /* @__PURE__ */ jsxRuntime.jsx("span", { ref: spanRef, children: props.renderAnnotation({
746
+ block,
747
+ children,
748
+ editorElementRef: spanRef,
749
+ focused,
750
+ path,
751
+ selected,
752
+ schemaType: legacyAnnotationSchemaType,
753
+ value: annotationMarkDef,
754
+ type: legacyAnnotationSchemaType
755
+ }) }) : children = /* @__PURE__ */ jsxRuntime.jsx("span", { ref: spanRef, children }));
756
+ }
757
+ if (block && path && props.renderChild) {
758
+ const child = block.children.find((_child) => _child._key === props.leaf._key);
759
+ child && (children = props.renderChild({
760
+ annotations: annotationMarkDefs,
761
+ children,
762
+ editorElementRef: spanRef,
763
+ focused,
764
+ path,
765
+ schemaType: legacySchema.span,
766
+ selected,
767
+ value: child,
768
+ type: legacySchema.span
769
+ }));
770
+ }
771
+ return /* @__PURE__ */ jsxRuntime.jsx("span", { ...props.attributes, ref: spanRef, children });
772
+ }
773
+ const PLACEHOLDER_STYLE = {
774
+ position: "absolute",
775
+ userSelect: "none",
776
+ pointerEvents: "none",
777
+ left: 0,
778
+ right: 0
779
+ };
780
+ function RenderLeaf(props) {
781
+ const $ = reactCompilerRuntime.c(12), editorActor = React.useContext(editorProvider.EditorActorContext), schema = react.useSelector(editorActor, _temp);
782
+ if (props.leaf._type !== schema.span.name)
783
+ return props.children;
784
+ let t0;
785
+ $[0] !== props ? (t0 = /* @__PURE__ */ jsxRuntime.jsx(RenderSpan, { ...props }), $[0] = props, $[1] = t0) : t0 = $[1];
786
+ let renderedSpan = t0;
787
+ if (props.renderPlaceholder && props.leaf.placeholder && props.text.text === "") {
788
+ let t1;
789
+ $[2] !== props.renderPlaceholder ? (t1 = props.renderPlaceholder(), $[2] = props.renderPlaceholder, $[3] = t1) : t1 = $[3];
790
+ let t2;
791
+ $[4] !== t1 ? (t2 = /* @__PURE__ */ jsxRuntime.jsx("span", { style: PLACEHOLDER_STYLE, contentEditable: !1, children: t1 }), $[4] = t1, $[5] = t2) : t2 = $[5];
792
+ let t3;
793
+ return $[6] !== renderedSpan || $[7] !== t2 ? (t3 = /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
794
+ t2,
795
+ renderedSpan
796
+ ] }), $[6] = renderedSpan, $[7] = t2, $[8] = t3) : t3 = $[8], t3;
797
+ }
798
+ const rangeDecoration = props.leaf.rangeDecoration;
799
+ if (rangeDecoration) {
800
+ let t1;
801
+ $[9] !== rangeDecoration || $[10] !== renderedSpan ? (t1 = rangeDecoration.component({
802
+ children: renderedSpan
803
+ }), $[9] = rangeDecoration, $[10] = renderedSpan, $[11] = t1) : t1 = $[11], renderedSpan = t1;
804
+ }
805
+ return renderedSpan;
806
+ }
797
807
  function _temp(s) {
798
808
  return s.context.schema;
799
809
  }
810
+ function RenderText(props) {
811
+ const $ = reactCompilerRuntime.c(5);
812
+ let t0;
813
+ return $[0] !== props.attributes || $[1] !== props.children || $[2] !== props.text._key || $[3] !== props.text._type ? (t0 = /* @__PURE__ */ jsxRuntime.jsx("span", { ...props.attributes, "data-child-key": props.text._key, "data-child-name": props.text._type, "data-child-type": "span", children: props.children }), $[0] = props.attributes, $[1] = props.children, $[2] = props.text._key, $[3] = props.text._type, $[4] = t0) : t0 = $[4], t0;
814
+ }
800
815
  const debug$1 = editorProvider.debugWithName("plugin:withHotKeys");
801
816
  function createWithHotkeys(editorActor, portableTextEditor, hotkeysFromOptions) {
802
817
  const reservedHotkeys = ["enter", "tab", "shift", "delete", "end"], activeHotkeys = hotkeysFromOptions ?? {};
@@ -1113,13 +1128,7 @@ function createDecorate(rangeDecorationActor) {
1113
1128
  }) || slate.Range.includes(decoratedRange, path));
1114
1129
  };
1115
1130
  }
1116
- const debug = editorProvider.debugWithName("component:Editable"), PLACEHOLDER_STYLE = {
1117
- position: "absolute",
1118
- userSelect: "none",
1119
- pointerEvents: "none",
1120
- left: 0,
1121
- right: 0
1122
- }, PortableTextEditable = React.forwardRef(function(props, forwardedRef) {
1131
+ const debug = editorProvider.debugWithName("component:Editable"), PortableTextEditable = React.forwardRef(function(props, forwardedRef) {
1123
1132
  const {
1124
1133
  hotkeys,
1125
1134
  onBlur,
@@ -1181,21 +1190,7 @@ const debug = editorProvider.debugWithName("component:Editable"), PLACEHOLDER_ST
1181
1190
  const withHotKeys = createWithHotkeys(editorActor, portableTextEditor, hotkeys);
1182
1191
  return debug("Editable is in edit mode"), withHotKeys(slateEditor);
1183
1192
  }, [editorActor, hotkeys, portableTextEditor, readOnly, slateEditor]);
1184
- const renderElement = React.useCallback((eProps) => /* @__PURE__ */ jsxRuntime.jsx(RenderElement, { ...eProps, readOnly, renderBlock, renderChild, renderListItem, renderStyle, spellCheck }), [spellCheck, readOnly, renderBlock, renderChild, renderListItem, renderStyle]), renderLeaf = React.useCallback((lProps) => {
1185
- if (lProps.leaf._type === "span") {
1186
- let rendered = /* @__PURE__ */ jsxRuntime.jsx(Leaf, { ...lProps, editorActor, schemaTypes: portableTextEditor.schemaTypes, renderAnnotation, renderChild, renderDecorator, readOnly });
1187
- if (renderPlaceholder && lProps.leaf.placeholder && lProps.text.text === "")
1188
- return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
1189
- /* @__PURE__ */ jsxRuntime.jsx("span", { style: PLACEHOLDER_STYLE, contentEditable: !1, children: renderPlaceholder() }),
1190
- rendered
1191
- ] });
1192
- const decoration = lProps.leaf.rangeDecoration;
1193
- return decoration && (rendered = decoration.component({
1194
- children: rendered
1195
- })), rendered;
1196
- }
1197
- return lProps.children;
1198
- }, [editorActor, portableTextEditor, readOnly, renderAnnotation, renderChild, renderDecorator, renderPlaceholder]), restoreSelectionFromProps = React.useCallback(() => {
1193
+ const renderElement = React.useCallback((eProps) => /* @__PURE__ */ jsxRuntime.jsx(RenderElement, { ...eProps, readOnly, renderBlock, renderChild, renderListItem, renderStyle, spellCheck }), [spellCheck, readOnly, renderBlock, renderChild, renderListItem, renderStyle]), renderLeaf = React.useCallback((leafProps) => /* @__PURE__ */ jsxRuntime.jsx(RenderLeaf, { ...leafProps, readOnly, renderAnnotation, renderChild, renderDecorator, renderPlaceholder }), [readOnly, renderAnnotation, renderChild, renderDecorator, renderPlaceholder]), renderText = React.useCallback((props_0) => /* @__PURE__ */ jsxRuntime.jsx(RenderText, { ...props_0 }), []), restoreSelectionFromProps = React.useCallback(() => {
1199
1194
  if (propsSelection) {
1200
1195
  debug(`Selection from props ${JSON.stringify(propsSelection)}`);
1201
1196
  const normalizedSelection = normalizeSelection(propsSelection, editorProvider.fromSlateValue(slateEditor.children, editorActor.getSnapshot().context.schema.block.name));
@@ -1326,7 +1321,8 @@ const debug = editorProvider.debugWithName("component:Editable"), PLACEHOLDER_ST
1326
1321
  },
1327
1322
  blocks: result_1.insert,
1328
1323
  options: {
1329
- refreshKeys: !0
1324
+ refreshKeys: !0,
1325
+ validateFields: !0
1330
1326
  }
1331
1327
  }),
1332
1328
  placement: "auto"
@@ -1706,6 +1702,7 @@ const debug = editorProvider.debugWithName("component:Editable"), PLACEHOLDER_ST
1706
1702
  renderPlaceholder: void 0,
1707
1703
  renderElement,
1708
1704
  renderLeaf,
1705
+ renderText,
1709
1706
  scrollSelectionIntoView: scrollSelectionIntoViewToSlate
1710
1707
  }
1711
1708
  ) : null;