@framed-dev/react 0.3.1 → 0.3.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.
package/dist/index.cjs CHANGED
@@ -3414,7 +3414,8 @@ function ElementSelector({ onSelect }) {
3414
3414
  }
3415
3415
  function TextEditOverlay({
3416
3416
  onSubmit,
3417
- author = "Anonymous"
3417
+ author = "Anonymous",
3418
+ demoMode = false
3418
3419
  }) {
3419
3420
  const textareaRef = React7.useRef(null);
3420
3421
  const {
@@ -3430,13 +3431,6 @@ function TextEditOverlay({
3430
3431
  showToast
3431
3432
  } = useWidgetStore();
3432
3433
  const isOpen = annotationMode === "text-edit" && selectedElement && originalText;
3433
- React7.useEffect(() => {
3434
- if (isOpen && textareaRef.current) {
3435
- textareaRef.current.focus();
3436
- textareaRef.current.select();
3437
- isolateKeyboardEvents(textareaRef.current);
3438
- }
3439
- }, [isOpen]);
3440
3434
  const getElementPath2 = React7.useCallback(() => {
3441
3435
  if (!selectedElement) return "";
3442
3436
  const parts = [];
@@ -3457,7 +3451,8 @@ function TextEditOverlay({
3457
3451
  }
3458
3452
  clearSelection();
3459
3453
  closeQuickInput();
3460
- }, [selectedElement, originalText, clearSelection, closeQuickInput]);
3454
+ setAnnotationMode(null);
3455
+ }, [selectedElement, originalText, clearSelection, closeQuickInput, setAnnotationMode]);
3461
3456
  const handleApply = React7.useCallback(() => {
3462
3457
  const newText = textareaRef.current?.value || "";
3463
3458
  if (!selectedElement) {
@@ -3527,9 +3522,30 @@ To: "${newText.substring(0, 150)}${newText.length > 150 ? "..." : ""}"`;
3527
3522
  showToast,
3528
3523
  handleClose
3529
3524
  ]);
3525
+ React7.useEffect(() => {
3526
+ if (isOpen && textareaRef.current) {
3527
+ textareaRef.current.focus();
3528
+ textareaRef.current.select();
3529
+ isolateKeyboardEvents(textareaRef.current);
3530
+ }
3531
+ }, [isOpen]);
3532
+ React7.useEffect(() => {
3533
+ if (!isOpen) return;
3534
+ const handleKeyDown = (e) => {
3535
+ if (e.key === "Escape") {
3536
+ e.preventDefault();
3537
+ e.stopPropagation();
3538
+ handleClose();
3539
+ }
3540
+ };
3541
+ document.addEventListener("keydown", handleKeyDown, true);
3542
+ return () => {
3543
+ document.removeEventListener("keydown", handleKeyDown, true);
3544
+ };
3545
+ }, [isOpen, handleClose]);
3530
3546
  const displayOriginal = originalText && originalText.length > 200 ? originalText.substring(0, 200) + "..." : originalText || "";
3531
3547
  if (!isOpen) return null;
3532
- return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "framed-text-edit-overlay", "data-framed-widget": true, children: [
3548
+ return /* @__PURE__ */ jsxRuntime.jsx("div", { className: `framed-text-edit-container ${demoMode ? "framed-demo-mode" : ""}`, "data-framed-widget": true, children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: `framed-text-edit-overlay ${demoMode ? "framed-demo-mode" : ""}`, "data-framed-widget": true, children: [
3533
3549
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "framed-text-edit-header", children: [
3534
3550
  /* @__PURE__ */ jsxRuntime.jsx("span", { className: "framed-text-edit-label-header", children: "Text Edit" }),
3535
3551
  /* @__PURE__ */ jsxRuntime.jsx("span", { className: "framed-text-edit-divider", children: "|" }),
@@ -3599,7 +3615,7 @@ To: "${newText.substring(0, 150)}${newText.length > 150 ? "..." : ""}"`;
3599
3615
  }
3600
3616
  )
3601
3617
  ] })
3602
- ] });
3618
+ ] }) });
3603
3619
  }
3604
3620
  function RegionSelectOverlay() {
3605
3621
  const {
@@ -6668,6 +6684,32 @@ var WIDGET_CSS = `/* Framed Widget Styles - Figma-style floating toolbar */
6668
6684
  transform: scale(1);
6669
6685
  }
6670
6686
  }
6687
+
6688
+ /* Text Edit Overlay - Demo mode (flexbox centering to avoid transform conflicts) */
6689
+ .framed-text-edit-container.framed-demo-mode {
6690
+ position: fixed;
6691
+ top: 0;
6692
+ left: 0;
6693
+ width: 100vw;
6694
+ height: 100vh;
6695
+ display: flex;
6696
+ align-items: center;
6697
+ justify-content: center;
6698
+ pointer-events: none;
6699
+ z-index: 2147483647;
6700
+ }
6701
+
6702
+ .framed-text-edit-overlay.framed-demo-mode {
6703
+ /* Reset transform-based positioning */
6704
+ position: relative !important;
6705
+ top: auto !important;
6706
+ left: auto !important;
6707
+ bottom: auto !important;
6708
+ transform: none !important;
6709
+ /* Use a simple scale animation without translate */
6710
+ animation: framed-demo-scale-in 0.3s var(--framed-ease-spring) forwards !important;
6711
+ pointer-events: auto;
6712
+ }
6671
6713
  `;
6672
6714
  var WIDGET_STYLE_ID = "framed-widget-styles";
6673
6715
  function Widget({
@@ -6818,7 +6860,7 @@ function Widget({
6818
6860
  /* @__PURE__ */ jsxRuntime.jsx(FeedbackDrawer, { onExport, onLocateComment }),
6819
6861
  /* @__PURE__ */ jsxRuntime.jsx(QuickInput, { author, onSubmit, demoMode, onCommentAdded: demoMode ? openFeedbackPanel : void 0 }),
6820
6862
  /* @__PURE__ */ jsxRuntime.jsx(ChatModal, { author, onSubmit }),
6821
- /* @__PURE__ */ jsxRuntime.jsx(TextEditOverlay, { author, onSubmit }),
6863
+ /* @__PURE__ */ jsxRuntime.jsx(TextEditOverlay, { author, onSubmit, demoMode }),
6822
6864
  /* @__PURE__ */ jsxRuntime.jsx(RegionSelectOverlay, {}),
6823
6865
  /* @__PURE__ */ jsxRuntime.jsx(ExportModal, {}),
6824
6866
  animationsPaused && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "framed-animations-paused-indicator", "data-framed-widget": true, children: [