sykpcomposer 0.0.167 → 0.0.168

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.
@@ -1,5 +1,5 @@
1
- import { j as v, u as he, d as U, w as G, x as J, $ as Q, a as te, b as ce, c as de, e as le, C as I, f as ge, k as ue, g as pe, I as we, r as me, h as xe, i as fe, l as ye, t as Ce } from "./index-c3fe6a39.js";
2
- import { u as ve, d as De, L as be, P as Re } from "./Placeholder-e7cbe996.js";
1
+ import { j as v, u as he, d as U, w as G, x as J, $ as Q, a as te, b as ce, c as de, e as le, C as I, f as ge, k as ue, g as pe, I as we, r as me, h as xe, i as fe, l as ye, t as Ce } from "./index-6e13f625.js";
2
+ import { u as ve, d as De, L as be, P as Re } from "./Placeholder-48689220.js";
3
3
  import f, { useRef as Y, PureComponent as Ee, createRef as ne, useState as O, useCallback as F, useEffect as ee, Suspense as Me } from "react";
4
4
  import "react-dom";
5
5
  function Z(g, t, e) {
@@ -892,4 +892,4 @@ export {
892
892
  oe as RIGHT_CLICK_IMAGE_COMMAND,
893
893
  Ye as default
894
894
  };
895
- //# sourceMappingURL=ImageComponent-f20ef5eb.js.map
895
+ //# sourceMappingURL=ImageComponent-0965674b.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ImageComponent-f20ef5eb.js","sources":["../src/components/ui/ImageResizer.tsx","../node_modules/react-image-crop/dist/index.js","../src/components/nodes/ImageComponent.tsx"],"sourcesContent":["/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\nimport type { LexicalEditor } from \"lexical\";\n\nimport * as React from \"react\";\nimport { useRef, useContext } from \"react\";\nimport { ImageContext } from \"../../context/ImageContext\";\n\nfunction clamp(value: number, min: number, max: number) {\n return Math.min(Math.max(value, min), max);\n}\n\nconst Direction = {\n east: 1 << 0,\n north: 1 << 3,\n south: 1 << 1,\n west: 1 << 2,\n};\n\nexport default function ImageResizer({\n onResizeStart,\n onResizeEnd,\n buttonRef,\n imageRef,\n maxWidth,\n editor,\n showCaption,\n setShowCaption,\n captionsEnabled,\n}: {\n editor: LexicalEditor;\n buttonRef: { current: null | HTMLButtonElement };\n imageRef: {current: null | HTMLElement};\n maxWidth?: number;\n onResizeEnd: (width: \"inherit\" | number, height: \"inherit\" | number) => void;\n onResizeStart: () => void;\n setShowCaption: (show: boolean) => void;\n showCaption: boolean;\n captionsEnabled: boolean;\n}): JSX.Element {\n const controlWrapperRef = useRef<HTMLDivElement>(null);\n const userSelect = useRef({\n priority: \"\",\n value: \"default\",\n });\n const positioningRef = useRef<{\n currentHeight: \"inherit\" | number;\n currentWidth: \"inherit\" | number;\n direction: number;\n isResizing: boolean;\n ratio: number;\n startHeight: number;\n startWidth: number;\n startX: number;\n startY: number;\n }>({\n currentHeight: 0,\n currentWidth: 0,\n direction: 0,\n isResizing: false,\n ratio: 0,\n startHeight: 0,\n startWidth: 0,\n startX: 0,\n startY: 0,\n });\n\n const editorRootElement = editor.getRootElement();\n // Find max width, accounting for editor padding.\n const maxWidthContainer =\n editorRootElement !== null\n ? editorRootElement.getBoundingClientRect().width - 20\n : 100;\n const maxHeightContainer =\n editorRootElement !== null\n ? editorRootElement.getBoundingClientRect().height - 20\n : 100;\n\n const minWidth = 100;\n const minHeight = 100;\n\n const setStartCursor = (direction: number) => {\n const ew = direction === Direction.east || direction === Direction.west;\n const ns = direction === Direction.north || direction === Direction.south;\n const nwse =\n (direction & Direction.north && direction & Direction.west) ||\n (direction & Direction.south && direction & Direction.east);\n\n const cursorDir = ew ? \"ew\" : ns ? \"ns\" : nwse ? \"nwse\" : \"nesw\";\n\n if (editorRootElement !== null) {\n editorRootElement.style.setProperty(\n \"cursor\",\n `${cursorDir}-resize`,\n \"important\"\n );\n }\n if (document.body !== null) {\n document.body.style.setProperty(\n \"cursor\",\n `${cursorDir}-resize`,\n \"important\"\n );\n userSelect.current.value = document.body.style.getPropertyValue(\n \"-webkit-user-select\"\n );\n userSelect.current.priority = document.body.style.getPropertyPriority(\n \"-webkit-user-select\"\n );\n document.body.style.setProperty(\n \"-webkit-user-select\",\n `none`,\n \"important\"\n );\n }\n };\n\n const setEndCursor = () => {\n if (editorRootElement !== null) {\n editorRootElement.style.setProperty(\"cursor\", \"text\");\n }\n if (document.body !== null) {\n document.body.style.setProperty(\"cursor\", \"default\");\n document.body.style.setProperty(\n \"-webkit-user-select\",\n userSelect.current.value,\n userSelect.current.priority\n );\n }\n };\n\n const handlePointerDown = (\n event: React.PointerEvent<HTMLDivElement>,\n direction: number\n ) => {\n if (!editor.isEditable()) {\n return;\n }\n\n const image = imageRef.current;\n const controlWrapper = controlWrapperRef.current;\n\n if (image !== null && controlWrapper !== null) {\n event.preventDefault();\n const { width, height } = image.getBoundingClientRect();\n const positioning = positioningRef.current;\n positioning.startWidth = width;\n positioning.startHeight = height;\n positioning.ratio = width / height;\n positioning.currentWidth = width;\n positioning.currentHeight = height;\n positioning.startX = event.clientX;\n positioning.startY = event.clientY;\n positioning.isResizing = true;\n positioning.direction = direction;\n\n setStartCursor(direction);\n onResizeStart();\n\n controlWrapper.classList.add(\"image-control-wrapper--resizing\");\n image.style.height = `${height}px`;\n image.style.width = `${width}px`;\n\n document.addEventListener(\"pointermove\", handlePointerMove);\n document.addEventListener(\"pointerup\", handlePointerUp);\n }\n };\n const handlePointerMove = (event: PointerEvent) => {\n const image = imageRef.current;\n const positioning = positioningRef.current;\n\n const isHorizontal =\n positioning.direction & (Direction.east | Direction.west);\n const isVertical =\n positioning.direction & (Direction.south | Direction.north);\n\n if (image !== null && positioning.isResizing) {\n // Corner cursor\n if (isHorizontal && isVertical) {\n let diff = Math.floor(positioning.startX - event.clientX);\n diff = positioning.direction & Direction.east ? -diff : diff;\n\n const width = clamp(\n positioning.startWidth + diff,\n minWidth,\n maxWidthContainer\n );\n\n const height = width / positioning.ratio;\n image.style.width = `${width}px`;\n image.style.height = `${height}px`;\n positioning.currentHeight = height;\n positioning.currentWidth = width;\n } else if (isVertical) {\n let diff = Math.floor(positioning.startY - event.clientY);\n diff = positioning.direction & Direction.south ? -diff : diff;\n\n const height = clamp(\n positioning.startHeight + diff,\n minHeight,\n maxHeightContainer\n );\n\n image.style.height = `${height}px`;\n image.style.maxHeight = `${height}px`;\n positioning.currentHeight = height;\n } else {\n let diff = Math.floor(positioning.startX - event.clientX);\n diff = positioning.direction & Direction.east ? -diff : diff;\n\n const width = clamp(\n positioning.startWidth + diff,\n minWidth,\n maxWidthContainer\n );\n\n image.style.width = `${width}px`;\n image.style.maxWidth = `${width}px`;\n positioning.currentWidth = width;\n }\n if (image) {\n image.setAttribute(\"width\", `${positioning.currentWidth}`);\n image.setAttribute(\"height\", `${positioning.currentHeight}`);\n }\n }\n };\n const handlePointerUp = () => {\n const image = imageRef.current;\n const positioning = positioningRef.current;\n const controlWrapper = controlWrapperRef.current;\n if (image !== null && controlWrapper !== null && positioning.isResizing) {\n const width = positioning.currentWidth;\n const height = positioning.currentHeight;\n positioning.startWidth = 0;\n positioning.startHeight = 0;\n positioning.ratio = 0;\n positioning.startX = 0;\n positioning.startY = 0;\n positioning.currentWidth = 0;\n positioning.currentHeight = 0;\n positioning.isResizing = false;\n\n controlWrapper.classList.remove(\"image-control-wrapper--resizing\");\n\n setEndCursor();\n onResizeEnd(width, height);\n\n document.removeEventListener(\"pointermove\", handlePointerMove);\n document.removeEventListener(\"pointerup\", handlePointerUp);\n }\n };\n return (\n <div ref={controlWrapperRef}>\n {/* {!showCaption && captionsEnabled && (\n <button\n className=\"image-caption-button\"\n ref={buttonRef}\n onClick={() => {\n setShowCaption(!showCaption);\n }}>\n Add Caption\n </button>\n )} */}\n <div\n className=\"image-resizer image-resizer-n\"\n onPointerDown={(event) => {\n handlePointerDown(event, Direction.north);\n }}\n />\n <div\n className=\"image-resizer image-resizer-ne\"\n onPointerDown={(event) => {\n handlePointerDown(event, Direction.north | Direction.east);\n }}\n />\n <div\n className=\"image-resizer image-resizer-e\"\n onPointerDown={(event) => {\n handlePointerDown(event, Direction.east);\n }}\n />\n <div\n className=\"image-resizer image-resizer-se\"\n onPointerDown={(event) => {\n handlePointerDown(event, Direction.south | Direction.east);\n }}\n />\n <div\n className=\"image-resizer image-resizer-s\"\n onPointerDown={(event) => {\n handlePointerDown(event, Direction.south);\n }}\n />\n <div\n className=\"image-resizer image-resizer-sw\"\n onPointerDown={(event) => {\n handlePointerDown(event, Direction.south | Direction.west);\n }}\n />\n <div\n className=\"image-resizer image-resizer-w\"\n onPointerDown={(event) => {\n handlePointerDown(event, Direction.west);\n }}\n />\n <div\n className=\"image-resizer image-resizer-nw\"\n onPointerDown={(event) => {\n handlePointerDown(event, Direction.north | Direction.west);\n }}\n />\n </div>\n );\n}\n","import p, { PureComponent as k, createRef as E } from \"react\";\nconst M = {\n x: 0,\n y: 0,\n width: 0,\n height: 0,\n unit: \"px\"\n}, v = (o, e, t) => Math.min(Math.max(o, e), t), S = (...o) => o.filter((e) => e && typeof e == \"string\").join(\" \"), Y = (o, e) => o === e || o.width === e.width && o.height === e.height && o.x === e.x && o.y === e.y && o.unit === e.unit;\nfunction H(o, e, t, h) {\n const i = y(o, t, h);\n return o.width && (i.height = i.width / e), o.height && (i.width = i.height * e), i.y + i.height > h && (i.height = h - i.y, i.width = i.height * e), i.x + i.width > t && (i.width = t - i.x, i.height = i.width / e), o.unit === \"%\" ? D(i, t, h) : i;\n}\nfunction I(o, e, t) {\n const h = y(o, e, t);\n return h.x = (e - h.width) / 2, h.y = (t - h.height) / 2, o.unit === \"%\" ? D(h, e, t) : h;\n}\nfunction D(o, e, t) {\n return o.unit === \"%\" ? { ...M, ...o, unit: \"%\" } : {\n unit: \"%\",\n x: o.x ? o.x / e * 100 : 0,\n y: o.y ? o.y / t * 100 : 0,\n width: o.width ? o.width / e * 100 : 0,\n height: o.height ? o.height / t * 100 : 0\n };\n}\nfunction y(o, e, t) {\n return o.unit ? o.unit === \"px\" ? { ...M, ...o, unit: \"px\" } : {\n unit: \"px\",\n x: o.x ? o.x * e / 100 : 0,\n y: o.y ? o.y * t / 100 : 0,\n width: o.width ? o.width * e / 100 : 0,\n height: o.height ? o.height * t / 100 : 0\n } : { ...M, ...o, unit: \"px\" };\n}\nfunction P(o, e, t, h, i, n = 0, s = 0, w = h, a = i) {\n const r = { ...o };\n let c = Math.min(n, h), d = Math.min(s, i), g = Math.min(w, h), l = Math.min(a, i);\n e && (e > 1 ? (c = s ? s * e : c, d = c / e, g = w * e) : (d = n ? n / e : d, c = d * e, l = a / e)), r.y < 0 && (r.height = Math.max(r.height + r.y, d), r.y = 0), r.x < 0 && (r.width = Math.max(r.width + r.x, c), r.x = 0);\n const m = h - (r.x + r.width);\n m < 0 && (r.x = Math.min(r.x, h - c), r.width += m);\n const x = i - (r.y + r.height);\n if (x < 0 && (r.y = Math.min(r.y, i - d), r.height += x), r.width < c && ((t === \"sw\" || t == \"nw\") && (r.x -= c - r.width), r.width = c), r.height < d && ((t === \"nw\" || t == \"ne\") && (r.y -= d - r.height), r.height = d), r.width > g && ((t === \"sw\" || t == \"nw\") && (r.x -= g - r.width), r.width = g), r.height > l && ((t === \"nw\" || t == \"ne\") && (r.y -= l - r.height), r.height = l), e) {\n const b = r.width / r.height;\n if (b < e) {\n const C = Math.max(r.width / e, d);\n (t === \"nw\" || t == \"ne\") && (r.y -= C - r.height), r.height = C;\n } else if (b > e) {\n const C = Math.max(r.height * e, c);\n (t === \"sw\" || t == \"nw\") && (r.x -= C - r.width), r.width = C;\n }\n }\n return r;\n}\nfunction _(o, e, t, h) {\n const i = { ...o };\n return e === \"ArrowLeft\" ? h === \"nw\" ? (i.x -= t, i.y -= t, i.width += t, i.height += t) : h === \"w\" ? (i.x -= t, i.width += t) : h === \"sw\" ? (i.x -= t, i.width += t, i.height += t) : h === \"ne\" ? (i.y += t, i.width -= t, i.height -= t) : h === \"e\" ? i.width -= t : h === \"se\" && (i.width -= t, i.height -= t) : e === \"ArrowRight\" && (h === \"nw\" ? (i.x += t, i.y += t, i.width -= t, i.height -= t) : h === \"w\" ? (i.x += t, i.width -= t) : h === \"sw\" ? (i.x += t, i.width -= t, i.height -= t) : h === \"ne\" ? (i.y -= t, i.width += t, i.height += t) : h === \"e\" ? i.width += t : h === \"se\" && (i.width += t, i.height += t)), e === \"ArrowUp\" ? h === \"nw\" ? (i.x -= t, i.y -= t, i.width += t, i.height += t) : h === \"n\" ? (i.y -= t, i.height += t) : h === \"ne\" ? (i.y -= t, i.width += t, i.height += t) : h === \"sw\" ? (i.x += t, i.width -= t, i.height -= t) : h === \"s\" ? i.height -= t : h === \"se\" && (i.width -= t, i.height -= t) : e === \"ArrowDown\" && (h === \"nw\" ? (i.x += t, i.y += t, i.width -= t, i.height -= t) : h === \"n\" ? (i.y += t, i.height -= t) : h === \"ne\" ? (i.y += t, i.width -= t, i.height -= t) : h === \"sw\" ? (i.x -= t, i.width += t, i.height += t) : h === \"s\" ? i.height += t : h === \"se\" && (i.width += t, i.height += t)), i;\n}\nconst f = { capture: !0, passive: !1 };\nlet $ = 0;\nconst u = class u extends k {\n constructor() {\n super(...arguments), this.docMoveBound = !1, this.mouseDownOnCrop = !1, this.dragStarted = !1, this.evData = {\n startClientX: 0,\n startClientY: 0,\n startCropX: 0,\n startCropY: 0,\n clientX: 0,\n clientY: 0,\n isResize: !0\n }, this.componentRef = E(), this.mediaRef = E(), this.initChangeCalled = !1, this.instanceId = `rc-${$++}`, this.state = {\n cropIsActive: !1,\n newCropIsBeingDrawn: !1\n }, this.onCropPointerDown = (e) => {\n const { crop: t, disabled: h } = this.props, i = this.getBox();\n if (!t)\n return;\n const n = y(t, i.width, i.height);\n if (h)\n return;\n e.cancelable && e.preventDefault(), this.bindDocMove(), this.componentRef.current.focus({ preventScroll: !0 });\n const s = e.target.dataset.ord, w = !!s;\n let a = e.clientX, r = e.clientY, c = n.x, d = n.y;\n if (s) {\n const g = e.clientX - i.x, l = e.clientY - i.y;\n let m = 0, x = 0;\n s === \"ne\" || s == \"e\" ? (m = g - (n.x + n.width), x = l - n.y, c = n.x, d = n.y + n.height) : s === \"se\" || s === \"s\" ? (m = g - (n.x + n.width), x = l - (n.y + n.height), c = n.x, d = n.y) : s === \"sw\" || s == \"w\" ? (m = g - n.x, x = l - (n.y + n.height), c = n.x + n.width, d = n.y) : (s === \"nw\" || s == \"n\") && (m = g - n.x, x = l - n.y, c = n.x + n.width, d = n.y + n.height), a = c + i.x + m, r = d + i.y + x;\n }\n this.evData = {\n startClientX: a,\n startClientY: r,\n startCropX: c,\n startCropY: d,\n clientX: e.clientX,\n clientY: e.clientY,\n isResize: w,\n ord: s\n }, this.mouseDownOnCrop = !0, this.setState({ cropIsActive: !0 });\n }, this.onComponentPointerDown = (e) => {\n const { crop: t, disabled: h, locked: i, keepSelection: n, onChange: s } = this.props, w = this.getBox();\n if (h || i || n && t)\n return;\n e.cancelable && e.preventDefault(), this.bindDocMove(), this.componentRef.current.focus({ preventScroll: !0 });\n const a = e.clientX - w.x, r = e.clientY - w.y, c = {\n unit: \"px\",\n x: a,\n y: r,\n width: 0,\n height: 0\n };\n this.evData = {\n startClientX: e.clientX,\n startClientY: e.clientY,\n startCropX: a,\n startCropY: r,\n clientX: e.clientX,\n clientY: e.clientY,\n isResize: !0\n }, this.mouseDownOnCrop = !0, s(y(c, w.width, w.height), D(c, w.width, w.height)), this.setState({ cropIsActive: !0, newCropIsBeingDrawn: !0 });\n }, this.onDocPointerMove = (e) => {\n const { crop: t, disabled: h, onChange: i, onDragStart: n } = this.props, s = this.getBox();\n if (h || !t || !this.mouseDownOnCrop)\n return;\n e.cancelable && e.preventDefault(), this.dragStarted || (this.dragStarted = !0, n && n(e));\n const { evData: w } = this;\n w.clientX = e.clientX, w.clientY = e.clientY;\n let a;\n w.isResize ? a = this.resizeCrop() : a = this.dragCrop(), Y(t, a) || i(\n y(a, s.width, s.height),\n D(a, s.width, s.height)\n );\n }, this.onComponentKeyDown = (e) => {\n const { crop: t, disabled: h, onChange: i, onComplete: n } = this.props;\n if (h)\n return;\n const s = e.key;\n let w = !1;\n if (!t)\n return;\n const a = this.getBox(), r = this.makePixelCrop(a), d = (navigator.platform.match(\"Mac\") ? e.metaKey : e.ctrlKey) ? u.nudgeStepLarge : e.shiftKey ? u.nudgeStepMedium : u.nudgeStep;\n if (s === \"ArrowLeft\" ? (r.x -= d, w = !0) : s === \"ArrowRight\" ? (r.x += d, w = !0) : s === \"ArrowUp\" ? (r.y -= d, w = !0) : s === \"ArrowDown\" && (r.y += d, w = !0), w) {\n e.cancelable && e.preventDefault(), r.x = v(r.x, 0, a.width - r.width), r.y = v(r.y, 0, a.height - r.height);\n const g = y(r, a.width, a.height), l = D(r, a.width, a.height);\n i(g, l), n && n(g, l);\n }\n }, this.onHandlerKeyDown = (e, t) => {\n const {\n aspect: h = 0,\n crop: i,\n disabled: n,\n minWidth: s = 0,\n minHeight: w = 0,\n maxWidth: a,\n maxHeight: r,\n onChange: c,\n onComplete: d\n } = this.props, g = this.getBox();\n if (n || !i)\n return;\n if (e.key === \"ArrowUp\" || e.key === \"ArrowDown\" || e.key === \"ArrowLeft\" || e.key === \"ArrowRight\")\n e.stopPropagation(), e.preventDefault();\n else\n return;\n const m = (navigator.platform.match(\"Mac\") ? e.metaKey : e.ctrlKey) ? u.nudgeStepLarge : e.shiftKey ? u.nudgeStepMedium : u.nudgeStep, x = y(i, g.width, g.height), b = _(x, e.key, m, t), C = P(\n b,\n h,\n t,\n g.width,\n g.height,\n s,\n w,\n a,\n r\n );\n if (!Y(i, C)) {\n const R = D(C, g.width, g.height);\n c(C, R), d && d(C, R);\n }\n }, this.onDocPointerDone = (e) => {\n const { crop: t, disabled: h, onComplete: i, onDragEnd: n } = this.props, s = this.getBox();\n this.unbindDocMove(), !(h || !t) && this.mouseDownOnCrop && (this.mouseDownOnCrop = !1, this.dragStarted = !1, n && n(e), i && i(y(t, s.width, s.height), D(t, s.width, s.height)), this.setState({ cropIsActive: !1, newCropIsBeingDrawn: !1 }));\n }, this.onDragFocus = () => {\n var e;\n (e = this.componentRef.current) == null || e.scrollTo(0, 0);\n };\n }\n get document() {\n return document;\n }\n // We unfortunately get the bounding box every time as x+y changes\n // due to scrolling.\n getBox() {\n const e = this.mediaRef.current;\n if (!e)\n return { x: 0, y: 0, width: 0, height: 0 };\n const { x: t, y: h, width: i, height: n } = e.getBoundingClientRect();\n return { x: t, y: h, width: i, height: n };\n }\n componentDidUpdate(e) {\n const { crop: t, onComplete: h } = this.props;\n if (h && !e.crop && t) {\n const { width: i, height: n } = this.getBox();\n i && n && h(y(t, i, n), D(t, i, n));\n }\n }\n componentWillUnmount() {\n this.resizeObserver && this.resizeObserver.disconnect(), this.unbindDocMove();\n }\n bindDocMove() {\n this.docMoveBound || (this.document.addEventListener(\"pointermove\", this.onDocPointerMove, f), this.document.addEventListener(\"pointerup\", this.onDocPointerDone, f), this.document.addEventListener(\"pointercancel\", this.onDocPointerDone, f), this.docMoveBound = !0);\n }\n unbindDocMove() {\n this.docMoveBound && (this.document.removeEventListener(\"pointermove\", this.onDocPointerMove, f), this.document.removeEventListener(\"pointerup\", this.onDocPointerDone, f), this.document.removeEventListener(\"pointercancel\", this.onDocPointerDone, f), this.docMoveBound = !1);\n }\n getCropStyle() {\n const { crop: e } = this.props;\n if (e)\n return {\n top: `${e.y}${e.unit}`,\n left: `${e.x}${e.unit}`,\n width: `${e.width}${e.unit}`,\n height: `${e.height}${e.unit}`\n };\n }\n dragCrop() {\n const { evData: e } = this, t = this.getBox(), h = this.makePixelCrop(t), i = e.clientX - e.startClientX, n = e.clientY - e.startClientY;\n return h.x = v(e.startCropX + i, 0, t.width - h.width), h.y = v(e.startCropY + n, 0, t.height - h.height), h;\n }\n getPointRegion(e, t, h, i) {\n const { evData: n } = this, s = n.clientX - e.x, w = n.clientY - e.y;\n let a;\n i && t ? a = t === \"nw\" || t === \"n\" || t === \"ne\" : a = w < n.startCropY;\n let r;\n return h && t ? r = t === \"nw\" || t === \"w\" || t === \"sw\" : r = s < n.startCropX, r ? a ? \"nw\" : \"sw\" : a ? \"ne\" : \"se\";\n }\n resolveMinDimensions(e, t, h = 0, i = 0) {\n const n = Math.min(h, e.width), s = Math.min(i, e.height);\n return !t || !n && !s ? [n, s] : t > 1 ? n ? [n, n / t] : [s * t, s] : s ? [s * t, s] : [n, n / t];\n }\n resizeCrop() {\n const { evData: e } = this, { aspect: t = 0, maxWidth: h, maxHeight: i } = this.props, n = this.getBox(), [s, w] = this.resolveMinDimensions(n, t, this.props.minWidth, this.props.minHeight);\n let a = this.makePixelCrop(n);\n const r = this.getPointRegion(n, e.ord, s, w), c = e.ord || r;\n let d = e.clientX - e.startClientX, g = e.clientY - e.startClientY;\n (s && c === \"nw\" || c === \"w\" || c === \"sw\") && (d = Math.min(d, -s)), (w && c === \"nw\" || c === \"n\" || c === \"ne\") && (g = Math.min(g, -w));\n const l = {\n unit: \"px\",\n x: 0,\n y: 0,\n width: 0,\n height: 0\n };\n r === \"ne\" ? (l.x = e.startCropX, l.width = d, t ? (l.height = l.width / t, l.y = e.startCropY - l.height) : (l.height = Math.abs(g), l.y = e.startCropY - l.height)) : r === \"se\" ? (l.x = e.startCropX, l.y = e.startCropY, l.width = d, t ? l.height = l.width / t : l.height = g) : r === \"sw\" ? (l.x = e.startCropX + d, l.y = e.startCropY, l.width = Math.abs(d), t ? l.height = l.width / t : l.height = g) : r === \"nw\" && (l.x = e.startCropX + d, l.width = Math.abs(d), t ? (l.height = l.width / t, l.y = e.startCropY - l.height) : (l.height = Math.abs(g), l.y = e.startCropY + g));\n const m = P(\n l,\n t,\n r,\n n.width,\n n.height,\n s,\n w,\n h,\n i\n );\n return t || u.xyOrds.indexOf(c) > -1 ? a = m : u.xOrds.indexOf(c) > -1 ? (a.x = m.x, a.width = m.width) : u.yOrds.indexOf(c) > -1 && (a.y = m.y, a.height = m.height), a.x = v(a.x, 0, n.width - a.width), a.y = v(a.y, 0, n.height - a.height), a;\n }\n renderCropSelection() {\n const {\n ariaLabels: e = u.defaultProps.ariaLabels,\n disabled: t,\n locked: h,\n renderSelectionAddon: i,\n ruleOfThirds: n,\n crop: s\n } = this.props, w = this.getCropStyle();\n if (s)\n return /* @__PURE__ */ p.createElement(\n \"div\",\n {\n style: w,\n className: \"ReactCrop__crop-selection\",\n onPointerDown: this.onCropPointerDown,\n \"aria-label\": e.cropArea,\n tabIndex: 0,\n onKeyDown: this.onComponentKeyDown,\n role: \"group\"\n },\n !t && !h && /* @__PURE__ */ p.createElement(\"div\", { className: \"ReactCrop__drag-elements\", onFocus: this.onDragFocus }, /* @__PURE__ */ p.createElement(\"div\", { className: \"ReactCrop__drag-bar ord-n\", \"data-ord\": \"n\" }), /* @__PURE__ */ p.createElement(\"div\", { className: \"ReactCrop__drag-bar ord-e\", \"data-ord\": \"e\" }), /* @__PURE__ */ p.createElement(\"div\", { className: \"ReactCrop__drag-bar ord-s\", \"data-ord\": \"s\" }), /* @__PURE__ */ p.createElement(\"div\", { className: \"ReactCrop__drag-bar ord-w\", \"data-ord\": \"w\" }), /* @__PURE__ */ p.createElement(\n \"div\",\n {\n className: \"ReactCrop__drag-handle ord-nw\",\n \"data-ord\": \"nw\",\n tabIndex: 0,\n \"aria-label\": e.nwDragHandle,\n onKeyDown: (a) => this.onHandlerKeyDown(a, \"nw\"),\n role: \"button\"\n }\n ), /* @__PURE__ */ p.createElement(\n \"div\",\n {\n className: \"ReactCrop__drag-handle ord-n\",\n \"data-ord\": \"n\",\n tabIndex: 0,\n \"aria-label\": e.nDragHandle,\n onKeyDown: (a) => this.onHandlerKeyDown(a, \"n\"),\n role: \"button\"\n }\n ), /* @__PURE__ */ p.createElement(\n \"div\",\n {\n className: \"ReactCrop__drag-handle ord-ne\",\n \"data-ord\": \"ne\",\n tabIndex: 0,\n \"aria-label\": e.neDragHandle,\n onKeyDown: (a) => this.onHandlerKeyDown(a, \"ne\"),\n role: \"button\"\n }\n ), /* @__PURE__ */ p.createElement(\n \"div\",\n {\n className: \"ReactCrop__drag-handle ord-e\",\n \"data-ord\": \"e\",\n tabIndex: 0,\n \"aria-label\": e.eDragHandle,\n onKeyDown: (a) => this.onHandlerKeyDown(a, \"e\"),\n role: \"button\"\n }\n ), /* @__PURE__ */ p.createElement(\n \"div\",\n {\n className: \"ReactCrop__drag-handle ord-se\",\n \"data-ord\": \"se\",\n tabIndex: 0,\n \"aria-label\": e.seDragHandle,\n onKeyDown: (a) => this.onHandlerKeyDown(a, \"se\"),\n role: \"button\"\n }\n ), /* @__PURE__ */ p.createElement(\n \"div\",\n {\n className: \"ReactCrop__drag-handle ord-s\",\n \"data-ord\": \"s\",\n tabIndex: 0,\n \"aria-label\": e.sDragHandle,\n onKeyDown: (a) => this.onHandlerKeyDown(a, \"s\"),\n role: \"button\"\n }\n ), /* @__PURE__ */ p.createElement(\n \"div\",\n {\n className: \"ReactCrop__drag-handle ord-sw\",\n \"data-ord\": \"sw\",\n tabIndex: 0,\n \"aria-label\": e.swDragHandle,\n onKeyDown: (a) => this.onHandlerKeyDown(a, \"sw\"),\n role: \"button\"\n }\n ), /* @__PURE__ */ p.createElement(\n \"div\",\n {\n className: \"ReactCrop__drag-handle ord-w\",\n \"data-ord\": \"w\",\n tabIndex: 0,\n \"aria-label\": e.wDragHandle,\n onKeyDown: (a) => this.onHandlerKeyDown(a, \"w\"),\n role: \"button\"\n }\n )),\n i && /* @__PURE__ */ p.createElement(\"div\", { className: \"ReactCrop__selection-addon\", onPointerDown: (a) => a.stopPropagation() }, i(this.state)),\n n && /* @__PURE__ */ p.createElement(p.Fragment, null, /* @__PURE__ */ p.createElement(\"div\", { className: \"ReactCrop__rule-of-thirds-hz\" }), /* @__PURE__ */ p.createElement(\"div\", { className: \"ReactCrop__rule-of-thirds-vt\" }))\n );\n }\n makePixelCrop(e) {\n const t = { ...M, ...this.props.crop || {} };\n return y(t, e.width, e.height);\n }\n render() {\n const { aspect: e, children: t, circularCrop: h, className: i, crop: n, disabled: s, locked: w, style: a, ruleOfThirds: r } = this.props, { cropIsActive: c, newCropIsBeingDrawn: d } = this.state, g = n ? this.renderCropSelection() : null, l = S(\n \"ReactCrop\",\n i,\n c && \"ReactCrop--active\",\n s && \"ReactCrop--disabled\",\n w && \"ReactCrop--locked\",\n d && \"ReactCrop--new-crop\",\n n && e && \"ReactCrop--fixed-aspect\",\n n && h && \"ReactCrop--circular-crop\",\n n && r && \"ReactCrop--rule-of-thirds\",\n !this.dragStarted && n && !n.width && !n.height && \"ReactCrop--invisible-crop\",\n h && \"ReactCrop--no-animate\"\n );\n return /* @__PURE__ */ p.createElement(\"div\", { ref: this.componentRef, className: l, style: a }, /* @__PURE__ */ p.createElement(\"div\", { ref: this.mediaRef, className: \"ReactCrop__child-wrapper\", onPointerDown: this.onComponentPointerDown }, t), n ? /* @__PURE__ */ p.createElement(\"svg\", { className: \"ReactCrop__crop-mask\", width: \"100%\", height: \"100%\" }, /* @__PURE__ */ p.createElement(\"defs\", null, /* @__PURE__ */ p.createElement(\"mask\", { id: `hole-${this.instanceId}` }, /* @__PURE__ */ p.createElement(\"rect\", { width: \"100%\", height: \"100%\", fill: \"white\" }), h ? /* @__PURE__ */ p.createElement(\n \"ellipse\",\n {\n cx: `${n.x + n.width / 2}${n.unit}`,\n cy: `${n.y + n.height / 2}${n.unit}`,\n rx: `${n.width / 2}${n.unit}`,\n ry: `${n.height / 2}${n.unit}`,\n fill: \"black\"\n }\n ) : /* @__PURE__ */ p.createElement(\n \"rect\",\n {\n x: `${n.x}${n.unit}`,\n y: `${n.y}${n.unit}`,\n width: `${n.width}${n.unit}`,\n height: `${n.height}${n.unit}`,\n fill: \"black\"\n }\n ))), /* @__PURE__ */ p.createElement(\"rect\", { fill: \"black\", fillOpacity: 0.5, width: \"100%\", height: \"100%\", mask: `url(#hole-${this.instanceId})` })) : void 0, g);\n }\n};\nu.xOrds = [\"e\", \"w\"], u.yOrds = [\"n\", \"s\"], u.xyOrds = [\"nw\", \"ne\", \"se\", \"sw\"], u.nudgeStep = 1, u.nudgeStepMedium = 10, u.nudgeStepLarge = 100, u.defaultProps = {\n ariaLabels: {\n cropArea: \"Use the arrow keys to move the crop selection area\",\n nwDragHandle: \"Use the arrow keys to move the north west drag handle to change the crop selection area\",\n nDragHandle: \"Use the up and down arrow keys to move the north drag handle to change the crop selection area\",\n neDragHandle: \"Use the arrow keys to move the north east drag handle to change the crop selection area\",\n eDragHandle: \"Use the up and down arrow keys to move the east drag handle to change the crop selection area\",\n seDragHandle: \"Use the arrow keys to move the south east drag handle to change the crop selection area\",\n sDragHandle: \"Use the up and down arrow keys to move the south drag handle to change the crop selection area\",\n swDragHandle: \"Use the arrow keys to move the south west drag handle to change the crop selection area\",\n wDragHandle: \"Use the up and down arrow keys to move the west drag handle to change the crop selection area\"\n }\n};\nlet X = u;\nexport {\n X as Component,\n X as ReactCrop,\n Y as areCropsEqual,\n I as centerCrop,\n v as clamp,\n S as cls,\n P as containCrop,\n D as convertToPercentCrop,\n y as convertToPixelCrop,\n X as default,\n M as defaultCrop,\n H as makeAspectCrop,\n _ as nudgeCrop\n};\n","/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\nimport type {\n BaseSelection,\n LexicalCommand,\n LexicalEditor,\n NodeKey,\n} from \"lexical\";\n\nimport \"./ImageNode.css\";\n\nimport { useLexicalComposerContext } from \"@lexical/react/LexicalComposerContext\";\nimport LexicalErrorBoundary from \"@lexical/react/LexicalErrorBoundary\";\nimport { LexicalNestedComposer } from \"@lexical/react/LexicalNestedComposer\";\nimport { RichTextPlugin } from \"@lexical/react/LexicalRichTextPlugin\";\nimport { useLexicalNodeSelection } from \"@lexical/react/useLexicalNodeSelection\";\nimport { mergeRegister } from \"@lexical/utils\";\nimport {\n $getNodeByKey,\n $getSelection,\n $isNodeSelection,\n $isRangeSelection,\n $setSelection,\n CLICK_COMMAND,\n COMMAND_PRIORITY_LOW,\n createCommand,\n DRAGSTART_COMMAND,\n KEY_BACKSPACE_COMMAND,\n KEY_DELETE_COMMAND,\n KEY_ENTER_COMMAND,\n KEY_ESCAPE_COMMAND,\n SELECTION_CHANGE_COMMAND,\n} from \"lexical\";\nimport { Suspense, useCallback, useEffect, useRef, useState } from \"react\";\nimport ContentEditable from \"../ui/ContentEditable\";\nimport ImageResizer from \"../ui/ImageResizer\";\nimport Placeholder from \"../ui/Placeholder\";\nimport { $isImageNode } from \"./ImageNode\";\nimport ReactCrop, { type Crop, type PixelCrop } from \"react-image-crop\";\nimport \"react-image-crop/dist/ReactCrop.css\";\n\nexport const RIGHT_CLICK_IMAGE_COMMAND: LexicalCommand<MouseEvent> =\n createCommand(\"RIGHT_CLICK_IMAGE_COMMAND\");\n\nfunction LazyImage({\n altText,\n className,\n src,\n width,\n height,\n maxWidth,\n imageRef,\n startCrop,\n setStartCrop,\n isFocused,\n}: {\n altText: string;\n className: string | null;\n height: \"inherit\" | number;\n maxWidth?: number;\n src: string;\n width: \"inherit\" | number;\n imageRef: any;\n startCrop: boolean;\n setStartCrop: any;\n isFocused: boolean;\n}): JSX.Element {\n const [completedCrop, setCompletedCrop] = useState<PixelCrop | null>(null);\n const [croppedImage, setCroppedImage] = useState<string | null>(null);\n const [crop, setCrop] = useState<Crop>({\n //@ts-ignore\n aspect: 1,\n x: 0,\n y: 0,\n width: 100,\n height: 100,\n });\n\n const applyCrop = () => {\n if (completedCrop) {\n const image = imageRef.current;\n if (!image || !completedCrop) return;\n\n const scaleX = image.naturalWidth / image.width;\n const scaleY = image.naturalHeight / image.height;\n\n const offscreen = new OffscreenCanvas(\n completedCrop.width * scaleX,\n completedCrop.height * scaleY\n );\n const ctx = offscreen.getContext(\"2d\");\n if (!ctx) {\n throw new Error(\"No 2D context available\");\n }\n\n ctx.drawImage(\n image,\n completedCrop.x * scaleX,\n completedCrop.y * scaleY,\n completedCrop.width * scaleX,\n completedCrop.height * scaleY,\n 0,\n 0,\n completedCrop.width * scaleX,\n completedCrop.height * scaleY\n );\n\n offscreen.convertToBlob({ type: \"image/png\" }).then((blob) => {\n const croppedImageUrl = URL.createObjectURL(blob);\n setCroppedImage(croppedImageUrl);\n setStartCrop(false);\n });\n }\n };\n\n const handleToggleCrop = () => {\n if (startCrop) return;\n setStartCrop((prev: any) => {\n if (prev === false) {\n //@ts-ignore\n setCrop({ aspect: 1, x: 0, y: 0, width: 100, height: 100 });\n }\n return !prev;\n });\n };\n\n const lastCompletedCropRef = useRef<PixelCrop | null>(null);\n const containerRef = useRef<HTMLDivElement | null>(null);\n\n // Store completed crop reference\n useEffect(() => {\n if (completedCrop) {\n lastCompletedCropRef.current = completedCrop;\n }\n }, [completedCrop]);\n\n const handleClickOutside = (event: MouseEvent) => {\n if (\n containerRef.current &&\n !containerRef.current.contains(event.target as Node)\n ) {\n setStartCrop(false);\n }\n };\n\n useEffect(() => {\n document.addEventListener(\"mousedown\", handleClickOutside);\n\n return () => {\n document.removeEventListener(\"mousedown\", handleClickOutside);\n };\n }, []);\n\n return (\n <div ref={containerRef}>\n {isFocused && (\n <button\n style={{ zIndex: 999 }}\n className=\"image-caption-button\"\n onClick={() => handleToggleCrop()}\n >\n Crop\n </button>\n )}\n\n {startCrop && (\n <button\n style={{ zIndex: 999 }}\n className=\"image-caption-button\"\n onClick={() => applyCrop()}\n >\n Apply Crop\n </button>\n )}\n\n {startCrop ? (\n <ReactCrop\n crop={crop}\n onChange={(c) => setCrop(c)}\n onComplete={(c) => setCompletedCrop(c)}\n >\n <img\n className={className || undefined}\n src={croppedImage || src}\n alt={altText}\n ref={imageRef}\n style={{\n height,\n maxWidth,\n width,\n }}\n draggable=\"false\"\n />\n </ReactCrop>\n ) : (\n // When startCrop is false, show the cropped image or original image\n <img\n className={className || undefined}\n src={croppedImage || src}\n alt={altText}\n ref={imageRef}\n style={{\n height,\n maxWidth,\n width,\n }}\n draggable=\"false\"\n />\n )}\n </div>\n );\n}\n\nexport default function ImageComponent({\n src,\n altText,\n nodeKey,\n width,\n height,\n maxWidth,\n resizable,\n showCaption,\n caption,\n}: {\n altText: string;\n caption: LexicalEditor;\n height: \"inherit\" | number;\n maxWidth?: number;\n nodeKey: NodeKey;\n resizable: boolean;\n showCaption: boolean;\n src: string;\n width: \"inherit\" | number;\n captionsEnabled: boolean;\n}): JSX.Element {\n const imageRef = useRef<null | HTMLImageElement>(null);\n const buttonRef = useRef<HTMLButtonElement | null>(null);\n const [isSelected, setSelected, clearSelection] =\n useLexicalNodeSelection(nodeKey);\n const [isResizing, setIsResizing] = useState<boolean>(false);\n const [editor] = useLexicalComposerContext();\n const [selection, setSelection] = useState<BaseSelection | null>(null);\n\n const [startCrop, setStartCrop] = useState<boolean>(false);\n\n const activeEditorRef = useRef<LexicalEditor | null>(null);\n\n const onDelete = useCallback(\n (payload: KeyboardEvent) => {\n if (isSelected && $isNodeSelection($getSelection())) {\n const event: KeyboardEvent = payload;\n event.preventDefault();\n const node = $getNodeByKey(nodeKey);\n if ($isImageNode(node)) {\n node.remove();\n return true;\n }\n }\n return false;\n },\n [isSelected, nodeKey]\n );\n\n const onEnter = useCallback(\n (event: KeyboardEvent) => {\n const latestSelection = $getSelection();\n const buttonElem = buttonRef.current;\n if (\n isSelected &&\n $isNodeSelection(latestSelection) &&\n latestSelection.getNodes().length === 1\n ) {\n if (showCaption) {\n // Move focus into nested editor\n $setSelection(null);\n event.preventDefault();\n caption.focus();\n return true;\n } else if (\n buttonElem !== null &&\n buttonElem !== document.activeElement\n ) {\n event.preventDefault();\n buttonElem.focus();\n return true;\n }\n }\n return false;\n },\n [caption, isSelected, showCaption]\n );\n\n const onEscape = useCallback(\n (event: KeyboardEvent) => {\n if (\n activeEditorRef.current === caption ||\n buttonRef.current === event.target\n ) {\n $setSelection(null);\n editor.update(() => {\n setSelected(true);\n const parentRootElement = editor.getRootElement();\n if (parentRootElement !== null) {\n parentRootElement.focus();\n }\n });\n return true;\n }\n return false;\n },\n [caption, editor, setSelected]\n );\n\n const onClick = useCallback(\n (payload: MouseEvent) => {\n const event = payload;\n if (isResizing) {\n return true;\n }\n if (event.target === imageRef.current) {\n if (event.shiftKey) {\n setSelected(!isSelected);\n } else {\n clearSelection();\n setSelected(true);\n }\n return true;\n }\n\n return false;\n },\n [isResizing, isSelected, setSelected, clearSelection]\n );\n\n const onRightClick = useCallback(\n (event: MouseEvent): void => {\n editor.getEditorState().read(() => {\n const latestSelection = $getSelection();\n const domElement = event.target as HTMLElement;\n if (\n domElement.tagName === \"IMG\" &&\n $isRangeSelection(latestSelection) &&\n latestSelection.getNodes().length === 1\n ) {\n editor.dispatchCommand(\n RIGHT_CLICK_IMAGE_COMMAND,\n event as MouseEvent\n );\n }\n });\n },\n [editor]\n );\n\n useEffect(() => {\n let isMounted = true;\n const rootElement = editor.getRootElement();\n const unregister = mergeRegister(\n editor.registerUpdateListener(({ editorState }) => {\n if (isMounted) {\n setSelection(editorState.read(() => $getSelection()));\n }\n }),\n editor.registerCommand(\n SELECTION_CHANGE_COMMAND,\n (_, activeEditor) => {\n activeEditorRef.current = activeEditor;\n return false;\n },\n COMMAND_PRIORITY_LOW\n ),\n editor.registerCommand<MouseEvent>(\n CLICK_COMMAND,\n onClick,\n COMMAND_PRIORITY_LOW\n ),\n editor.registerCommand<MouseEvent>(\n RIGHT_CLICK_IMAGE_COMMAND,\n onClick,\n COMMAND_PRIORITY_LOW\n ),\n editor.registerCommand(\n DRAGSTART_COMMAND,\n (event) => {\n if (event.target === imageRef.current) {\n // TODO This is just a temporary workaround for FF to behave like other browsers.\n // Ideally, this handles drag & drop too (and all browsers).\n event.preventDefault();\n return true;\n }\n return false;\n },\n COMMAND_PRIORITY_LOW\n ),\n editor.registerCommand(\n KEY_DELETE_COMMAND,\n onDelete,\n COMMAND_PRIORITY_LOW\n ),\n editor.registerCommand(\n KEY_BACKSPACE_COMMAND,\n onDelete,\n COMMAND_PRIORITY_LOW\n ),\n editor.registerCommand(KEY_ENTER_COMMAND, onEnter, COMMAND_PRIORITY_LOW),\n editor.registerCommand(KEY_ESCAPE_COMMAND, onEscape, COMMAND_PRIORITY_LOW)\n );\n\n rootElement?.addEventListener(\"contextmenu\", onRightClick);\n\n return () => {\n isMounted = false;\n unregister();\n rootElement?.removeEventListener(\"contextmenu\", onRightClick);\n };\n }, [\n clearSelection,\n editor,\n isResizing,\n isSelected,\n nodeKey,\n onDelete,\n onEnter,\n onEscape,\n onClick,\n onRightClick,\n setSelected,\n ]);\n\n const setShowCaption = () => {\n editor.update(() => {\n const node = $getNodeByKey(nodeKey);\n if ($isImageNode(node)) {\n node.setShowCaption(true);\n }\n });\n };\n\n const onResizeEnd = (\n nextWidth: \"inherit\" | number,\n nextHeight: \"inherit\" | number\n ) => {\n // Delay hiding the resize bars for click case\n setTimeout(() => {\n setIsResizing(false);\n }, 200);\n\n editor.update(() => {\n const node = $getNodeByKey(nodeKey);\n if ($isImageNode(node)) {\n node.setWidthAndHeight(nextWidth, nextHeight);\n }\n });\n };\n\n const onResizeStart = () => {\n if (!startCrop) {\n setIsResizing(true);\n }\n };\n const draggable = isSelected && $isNodeSelection(selection) && !isResizing;\n const isFocused = isSelected || isResizing;\n\n return (\n <Suspense fallback={null}>\n <>\n <div draggable={draggable}>\n <LazyImage\n className={\n isFocused\n ? `focused ${$isNodeSelection(selection) ? \"draggable\" : \"\"}`\n : null\n }\n src={src}\n altText={altText}\n width={width}\n height={height}\n maxWidth={maxWidth}\n imageRef={imageRef}\n startCrop={startCrop}\n setStartCrop={setStartCrop}\n isFocused={isFocused}\n />\n </div>\n\n {showCaption && (\n <div className=\"image-caption-container\">\n <LexicalNestedComposer initialEditor={caption}>\n <RichTextPlugin\n contentEditable={\n <ContentEditable className=\"ImageNode__contentEditable\" />\n }\n placeholder={\n <Placeholder className=\"ImageNode__placeholder\">\n Enter a caption...\n </Placeholder>\n }\n ErrorBoundary={LexicalErrorBoundary}\n />\n </LexicalNestedComposer>\n </div>\n )}\n\n {!startCrop &&\n resizable &&\n $isNodeSelection(selection) &&\n isFocused && (\n <ImageResizer\n showCaption={showCaption}\n setShowCaption={setShowCaption}\n editor={editor}\n buttonRef={buttonRef}\n maxWidth={maxWidth}\n onResizeStart={startCrop ? () => {} : onResizeStart}\n onResizeEnd={startCrop ? () => {} : onResizeEnd}\n captionsEnabled={false}\n imageRef={imageRef}\n />\n )}\n </>\n </Suspense>\n );\n}\n"],"names":["clamp","value","min","max","Direction","ImageResizer","onResizeStart","onResizeEnd","buttonRef","imageRef","maxWidth","editor","showCaption","setShowCaption","captionsEnabled","controlWrapperRef","useRef","userSelect","positioningRef","editorRootElement","maxWidthContainer","maxHeightContainer","minWidth","minHeight","setStartCursor","direction","ew","ns","nwse","cursorDir","setEndCursor","handlePointerDown","event","image","controlWrapper","width","height","positioning","handlePointerMove","handlePointerUp","isHorizontal","isVertical","diff","jsxs","jsx","M","v","o","e","t","S","Y","D","y","P","h","i","n","s","w","a","c","g","l","m","x","b","C","_","f","$","u","k","E","d","R","p","X","RIGHT_CLICK_IMAGE_COMMAND","createCommand","LazyImage","altText","className","src","startCrop","setStartCrop","isFocused","completedCrop","setCompletedCrop","useState","croppedImage","setCroppedImage","crop","setCrop","applyCrop","scaleX","scaleY","offscreen","ctx","blob","croppedImageUrl","handleToggleCrop","prev","lastCompletedCropRef","containerRef","useEffect","handleClickOutside","ReactCrop","ImageComponent","nodeKey","resizable","caption","isSelected","setSelected","clearSelection","useLexicalNodeSelection","isResizing","setIsResizing","useLexicalComposerContext","selection","setSelection","activeEditorRef","onDelete","useCallback","payload","$isNodeSelection","$getSelection","node","$getNodeByKey","$isImageNode","onEnter","latestSelection","buttonElem","$setSelection","onEscape","parentRootElement","onClick","onRightClick","$isRangeSelection","isMounted","rootElement","unregister","mergeRegister","editorState","SELECTION_CHANGE_COMMAND","activeEditor","COMMAND_PRIORITY_LOW","CLICK_COMMAND","DRAGSTART_COMMAND","KEY_DELETE_COMMAND","KEY_BACKSPACE_COMMAND","KEY_ENTER_COMMAND","KEY_ESCAPE_COMMAND","nextWidth","nextHeight","draggable","Suspense","Fragment","LexicalNestedComposer","RichTextPlugin","ContentEditable","Placeholder","LexicalErrorBoundary"],"mappings":"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","x_google_ignoreList":[1]}
1
+ {"version":3,"file":"ImageComponent-0965674b.js","sources":["../src/components/ui/ImageResizer.tsx","../node_modules/react-image-crop/dist/index.js","../src/components/nodes/ImageComponent.tsx"],"sourcesContent":["/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\nimport type { LexicalEditor } from \"lexical\";\n\nimport * as React from \"react\";\nimport { useRef, useContext } from \"react\";\nimport { ImageContext } from \"../../context/ImageContext\";\n\nfunction clamp(value: number, min: number, max: number) {\n return Math.min(Math.max(value, min), max);\n}\n\nconst Direction = {\n east: 1 << 0,\n north: 1 << 3,\n south: 1 << 1,\n west: 1 << 2,\n};\n\nexport default function ImageResizer({\n onResizeStart,\n onResizeEnd,\n buttonRef,\n imageRef,\n maxWidth,\n editor,\n showCaption,\n setShowCaption,\n captionsEnabled,\n}: {\n editor: LexicalEditor;\n buttonRef: { current: null | HTMLButtonElement };\n imageRef: {current: null | HTMLElement};\n maxWidth?: number;\n onResizeEnd: (width: \"inherit\" | number, height: \"inherit\" | number) => void;\n onResizeStart: () => void;\n setShowCaption: (show: boolean) => void;\n showCaption: boolean;\n captionsEnabled: boolean;\n}): JSX.Element {\n const controlWrapperRef = useRef<HTMLDivElement>(null);\n const userSelect = useRef({\n priority: \"\",\n value: \"default\",\n });\n const positioningRef = useRef<{\n currentHeight: \"inherit\" | number;\n currentWidth: \"inherit\" | number;\n direction: number;\n isResizing: boolean;\n ratio: number;\n startHeight: number;\n startWidth: number;\n startX: number;\n startY: number;\n }>({\n currentHeight: 0,\n currentWidth: 0,\n direction: 0,\n isResizing: false,\n ratio: 0,\n startHeight: 0,\n startWidth: 0,\n startX: 0,\n startY: 0,\n });\n\n const editorRootElement = editor.getRootElement();\n // Find max width, accounting for editor padding.\n const maxWidthContainer =\n editorRootElement !== null\n ? editorRootElement.getBoundingClientRect().width - 20\n : 100;\n const maxHeightContainer =\n editorRootElement !== null\n ? editorRootElement.getBoundingClientRect().height - 20\n : 100;\n\n const minWidth = 100;\n const minHeight = 100;\n\n const setStartCursor = (direction: number) => {\n const ew = direction === Direction.east || direction === Direction.west;\n const ns = direction === Direction.north || direction === Direction.south;\n const nwse =\n (direction & Direction.north && direction & Direction.west) ||\n (direction & Direction.south && direction & Direction.east);\n\n const cursorDir = ew ? \"ew\" : ns ? \"ns\" : nwse ? \"nwse\" : \"nesw\";\n\n if (editorRootElement !== null) {\n editorRootElement.style.setProperty(\n \"cursor\",\n `${cursorDir}-resize`,\n \"important\"\n );\n }\n if (document.body !== null) {\n document.body.style.setProperty(\n \"cursor\",\n `${cursorDir}-resize`,\n \"important\"\n );\n userSelect.current.value = document.body.style.getPropertyValue(\n \"-webkit-user-select\"\n );\n userSelect.current.priority = document.body.style.getPropertyPriority(\n \"-webkit-user-select\"\n );\n document.body.style.setProperty(\n \"-webkit-user-select\",\n `none`,\n \"important\"\n );\n }\n };\n\n const setEndCursor = () => {\n if (editorRootElement !== null) {\n editorRootElement.style.setProperty(\"cursor\", \"text\");\n }\n if (document.body !== null) {\n document.body.style.setProperty(\"cursor\", \"default\");\n document.body.style.setProperty(\n \"-webkit-user-select\",\n userSelect.current.value,\n userSelect.current.priority\n );\n }\n };\n\n const handlePointerDown = (\n event: React.PointerEvent<HTMLDivElement>,\n direction: number\n ) => {\n if (!editor.isEditable()) {\n return;\n }\n\n const image = imageRef.current;\n const controlWrapper = controlWrapperRef.current;\n\n if (image !== null && controlWrapper !== null) {\n event.preventDefault();\n const { width, height } = image.getBoundingClientRect();\n const positioning = positioningRef.current;\n positioning.startWidth = width;\n positioning.startHeight = height;\n positioning.ratio = width / height;\n positioning.currentWidth = width;\n positioning.currentHeight = height;\n positioning.startX = event.clientX;\n positioning.startY = event.clientY;\n positioning.isResizing = true;\n positioning.direction = direction;\n\n setStartCursor(direction);\n onResizeStart();\n\n controlWrapper.classList.add(\"image-control-wrapper--resizing\");\n image.style.height = `${height}px`;\n image.style.width = `${width}px`;\n\n document.addEventListener(\"pointermove\", handlePointerMove);\n document.addEventListener(\"pointerup\", handlePointerUp);\n }\n };\n const handlePointerMove = (event: PointerEvent) => {\n const image = imageRef.current;\n const positioning = positioningRef.current;\n\n const isHorizontal =\n positioning.direction & (Direction.east | Direction.west);\n const isVertical =\n positioning.direction & (Direction.south | Direction.north);\n\n if (image !== null && positioning.isResizing) {\n // Corner cursor\n if (isHorizontal && isVertical) {\n let diff = Math.floor(positioning.startX - event.clientX);\n diff = positioning.direction & Direction.east ? -diff : diff;\n\n const width = clamp(\n positioning.startWidth + diff,\n minWidth,\n maxWidthContainer\n );\n\n const height = width / positioning.ratio;\n image.style.width = `${width}px`;\n image.style.height = `${height}px`;\n positioning.currentHeight = height;\n positioning.currentWidth = width;\n } else if (isVertical) {\n let diff = Math.floor(positioning.startY - event.clientY);\n diff = positioning.direction & Direction.south ? -diff : diff;\n\n const height = clamp(\n positioning.startHeight + diff,\n minHeight,\n maxHeightContainer\n );\n\n image.style.height = `${height}px`;\n image.style.maxHeight = `${height}px`;\n positioning.currentHeight = height;\n } else {\n let diff = Math.floor(positioning.startX - event.clientX);\n diff = positioning.direction & Direction.east ? -diff : diff;\n\n const width = clamp(\n positioning.startWidth + diff,\n minWidth,\n maxWidthContainer\n );\n\n image.style.width = `${width}px`;\n image.style.maxWidth = `${width}px`;\n positioning.currentWidth = width;\n }\n if (image) {\n image.setAttribute(\"width\", `${positioning.currentWidth}`);\n image.setAttribute(\"height\", `${positioning.currentHeight}`);\n }\n }\n };\n const handlePointerUp = () => {\n const image = imageRef.current;\n const positioning = positioningRef.current;\n const controlWrapper = controlWrapperRef.current;\n if (image !== null && controlWrapper !== null && positioning.isResizing) {\n const width = positioning.currentWidth;\n const height = positioning.currentHeight;\n positioning.startWidth = 0;\n positioning.startHeight = 0;\n positioning.ratio = 0;\n positioning.startX = 0;\n positioning.startY = 0;\n positioning.currentWidth = 0;\n positioning.currentHeight = 0;\n positioning.isResizing = false;\n\n controlWrapper.classList.remove(\"image-control-wrapper--resizing\");\n\n setEndCursor();\n onResizeEnd(width, height);\n\n document.removeEventListener(\"pointermove\", handlePointerMove);\n document.removeEventListener(\"pointerup\", handlePointerUp);\n }\n };\n return (\n <div ref={controlWrapperRef}>\n {/* {!showCaption && captionsEnabled && (\n <button\n className=\"image-caption-button\"\n ref={buttonRef}\n onClick={() => {\n setShowCaption(!showCaption);\n }}>\n Add Caption\n </button>\n )} */}\n <div\n className=\"image-resizer image-resizer-n\"\n onPointerDown={(event) => {\n handlePointerDown(event, Direction.north);\n }}\n />\n <div\n className=\"image-resizer image-resizer-ne\"\n onPointerDown={(event) => {\n handlePointerDown(event, Direction.north | Direction.east);\n }}\n />\n <div\n className=\"image-resizer image-resizer-e\"\n onPointerDown={(event) => {\n handlePointerDown(event, Direction.east);\n }}\n />\n <div\n className=\"image-resizer image-resizer-se\"\n onPointerDown={(event) => {\n handlePointerDown(event, Direction.south | Direction.east);\n }}\n />\n <div\n className=\"image-resizer image-resizer-s\"\n onPointerDown={(event) => {\n handlePointerDown(event, Direction.south);\n }}\n />\n <div\n className=\"image-resizer image-resizer-sw\"\n onPointerDown={(event) => {\n handlePointerDown(event, Direction.south | Direction.west);\n }}\n />\n <div\n className=\"image-resizer image-resizer-w\"\n onPointerDown={(event) => {\n handlePointerDown(event, Direction.west);\n }}\n />\n <div\n className=\"image-resizer image-resizer-nw\"\n onPointerDown={(event) => {\n handlePointerDown(event, Direction.north | Direction.west);\n }}\n />\n </div>\n );\n}\n","import p, { PureComponent as k, createRef as E } from \"react\";\nconst M = {\n x: 0,\n y: 0,\n width: 0,\n height: 0,\n unit: \"px\"\n}, v = (o, e, t) => Math.min(Math.max(o, e), t), S = (...o) => o.filter((e) => e && typeof e == \"string\").join(\" \"), Y = (o, e) => o === e || o.width === e.width && o.height === e.height && o.x === e.x && o.y === e.y && o.unit === e.unit;\nfunction H(o, e, t, h) {\n const i = y(o, t, h);\n return o.width && (i.height = i.width / e), o.height && (i.width = i.height * e), i.y + i.height > h && (i.height = h - i.y, i.width = i.height * e), i.x + i.width > t && (i.width = t - i.x, i.height = i.width / e), o.unit === \"%\" ? D(i, t, h) : i;\n}\nfunction I(o, e, t) {\n const h = y(o, e, t);\n return h.x = (e - h.width) / 2, h.y = (t - h.height) / 2, o.unit === \"%\" ? D(h, e, t) : h;\n}\nfunction D(o, e, t) {\n return o.unit === \"%\" ? { ...M, ...o, unit: \"%\" } : {\n unit: \"%\",\n x: o.x ? o.x / e * 100 : 0,\n y: o.y ? o.y / t * 100 : 0,\n width: o.width ? o.width / e * 100 : 0,\n height: o.height ? o.height / t * 100 : 0\n };\n}\nfunction y(o, e, t) {\n return o.unit ? o.unit === \"px\" ? { ...M, ...o, unit: \"px\" } : {\n unit: \"px\",\n x: o.x ? o.x * e / 100 : 0,\n y: o.y ? o.y * t / 100 : 0,\n width: o.width ? o.width * e / 100 : 0,\n height: o.height ? o.height * t / 100 : 0\n } : { ...M, ...o, unit: \"px\" };\n}\nfunction P(o, e, t, h, i, n = 0, s = 0, w = h, a = i) {\n const r = { ...o };\n let c = Math.min(n, h), d = Math.min(s, i), g = Math.min(w, h), l = Math.min(a, i);\n e && (e > 1 ? (c = s ? s * e : c, d = c / e, g = w * e) : (d = n ? n / e : d, c = d * e, l = a / e)), r.y < 0 && (r.height = Math.max(r.height + r.y, d), r.y = 0), r.x < 0 && (r.width = Math.max(r.width + r.x, c), r.x = 0);\n const m = h - (r.x + r.width);\n m < 0 && (r.x = Math.min(r.x, h - c), r.width += m);\n const x = i - (r.y + r.height);\n if (x < 0 && (r.y = Math.min(r.y, i - d), r.height += x), r.width < c && ((t === \"sw\" || t == \"nw\") && (r.x -= c - r.width), r.width = c), r.height < d && ((t === \"nw\" || t == \"ne\") && (r.y -= d - r.height), r.height = d), r.width > g && ((t === \"sw\" || t == \"nw\") && (r.x -= g - r.width), r.width = g), r.height > l && ((t === \"nw\" || t == \"ne\") && (r.y -= l - r.height), r.height = l), e) {\n const b = r.width / r.height;\n if (b < e) {\n const C = Math.max(r.width / e, d);\n (t === \"nw\" || t == \"ne\") && (r.y -= C - r.height), r.height = C;\n } else if (b > e) {\n const C = Math.max(r.height * e, c);\n (t === \"sw\" || t == \"nw\") && (r.x -= C - r.width), r.width = C;\n }\n }\n return r;\n}\nfunction _(o, e, t, h) {\n const i = { ...o };\n return e === \"ArrowLeft\" ? h === \"nw\" ? (i.x -= t, i.y -= t, i.width += t, i.height += t) : h === \"w\" ? (i.x -= t, i.width += t) : h === \"sw\" ? (i.x -= t, i.width += t, i.height += t) : h === \"ne\" ? (i.y += t, i.width -= t, i.height -= t) : h === \"e\" ? i.width -= t : h === \"se\" && (i.width -= t, i.height -= t) : e === \"ArrowRight\" && (h === \"nw\" ? (i.x += t, i.y += t, i.width -= t, i.height -= t) : h === \"w\" ? (i.x += t, i.width -= t) : h === \"sw\" ? (i.x += t, i.width -= t, i.height -= t) : h === \"ne\" ? (i.y -= t, i.width += t, i.height += t) : h === \"e\" ? i.width += t : h === \"se\" && (i.width += t, i.height += t)), e === \"ArrowUp\" ? h === \"nw\" ? (i.x -= t, i.y -= t, i.width += t, i.height += t) : h === \"n\" ? (i.y -= t, i.height += t) : h === \"ne\" ? (i.y -= t, i.width += t, i.height += t) : h === \"sw\" ? (i.x += t, i.width -= t, i.height -= t) : h === \"s\" ? i.height -= t : h === \"se\" && (i.width -= t, i.height -= t) : e === \"ArrowDown\" && (h === \"nw\" ? (i.x += t, i.y += t, i.width -= t, i.height -= t) : h === \"n\" ? (i.y += t, i.height -= t) : h === \"ne\" ? (i.y += t, i.width -= t, i.height -= t) : h === \"sw\" ? (i.x -= t, i.width += t, i.height += t) : h === \"s\" ? i.height += t : h === \"se\" && (i.width += t, i.height += t)), i;\n}\nconst f = { capture: !0, passive: !1 };\nlet $ = 0;\nconst u = class u extends k {\n constructor() {\n super(...arguments), this.docMoveBound = !1, this.mouseDownOnCrop = !1, this.dragStarted = !1, this.evData = {\n startClientX: 0,\n startClientY: 0,\n startCropX: 0,\n startCropY: 0,\n clientX: 0,\n clientY: 0,\n isResize: !0\n }, this.componentRef = E(), this.mediaRef = E(), this.initChangeCalled = !1, this.instanceId = `rc-${$++}`, this.state = {\n cropIsActive: !1,\n newCropIsBeingDrawn: !1\n }, this.onCropPointerDown = (e) => {\n const { crop: t, disabled: h } = this.props, i = this.getBox();\n if (!t)\n return;\n const n = y(t, i.width, i.height);\n if (h)\n return;\n e.cancelable && e.preventDefault(), this.bindDocMove(), this.componentRef.current.focus({ preventScroll: !0 });\n const s = e.target.dataset.ord, w = !!s;\n let a = e.clientX, r = e.clientY, c = n.x, d = n.y;\n if (s) {\n const g = e.clientX - i.x, l = e.clientY - i.y;\n let m = 0, x = 0;\n s === \"ne\" || s == \"e\" ? (m = g - (n.x + n.width), x = l - n.y, c = n.x, d = n.y + n.height) : s === \"se\" || s === \"s\" ? (m = g - (n.x + n.width), x = l - (n.y + n.height), c = n.x, d = n.y) : s === \"sw\" || s == \"w\" ? (m = g - n.x, x = l - (n.y + n.height), c = n.x + n.width, d = n.y) : (s === \"nw\" || s == \"n\") && (m = g - n.x, x = l - n.y, c = n.x + n.width, d = n.y + n.height), a = c + i.x + m, r = d + i.y + x;\n }\n this.evData = {\n startClientX: a,\n startClientY: r,\n startCropX: c,\n startCropY: d,\n clientX: e.clientX,\n clientY: e.clientY,\n isResize: w,\n ord: s\n }, this.mouseDownOnCrop = !0, this.setState({ cropIsActive: !0 });\n }, this.onComponentPointerDown = (e) => {\n const { crop: t, disabled: h, locked: i, keepSelection: n, onChange: s } = this.props, w = this.getBox();\n if (h || i || n && t)\n return;\n e.cancelable && e.preventDefault(), this.bindDocMove(), this.componentRef.current.focus({ preventScroll: !0 });\n const a = e.clientX - w.x, r = e.clientY - w.y, c = {\n unit: \"px\",\n x: a,\n y: r,\n width: 0,\n height: 0\n };\n this.evData = {\n startClientX: e.clientX,\n startClientY: e.clientY,\n startCropX: a,\n startCropY: r,\n clientX: e.clientX,\n clientY: e.clientY,\n isResize: !0\n }, this.mouseDownOnCrop = !0, s(y(c, w.width, w.height), D(c, w.width, w.height)), this.setState({ cropIsActive: !0, newCropIsBeingDrawn: !0 });\n }, this.onDocPointerMove = (e) => {\n const { crop: t, disabled: h, onChange: i, onDragStart: n } = this.props, s = this.getBox();\n if (h || !t || !this.mouseDownOnCrop)\n return;\n e.cancelable && e.preventDefault(), this.dragStarted || (this.dragStarted = !0, n && n(e));\n const { evData: w } = this;\n w.clientX = e.clientX, w.clientY = e.clientY;\n let a;\n w.isResize ? a = this.resizeCrop() : a = this.dragCrop(), Y(t, a) || i(\n y(a, s.width, s.height),\n D(a, s.width, s.height)\n );\n }, this.onComponentKeyDown = (e) => {\n const { crop: t, disabled: h, onChange: i, onComplete: n } = this.props;\n if (h)\n return;\n const s = e.key;\n let w = !1;\n if (!t)\n return;\n const a = this.getBox(), r = this.makePixelCrop(a), d = (navigator.platform.match(\"Mac\") ? e.metaKey : e.ctrlKey) ? u.nudgeStepLarge : e.shiftKey ? u.nudgeStepMedium : u.nudgeStep;\n if (s === \"ArrowLeft\" ? (r.x -= d, w = !0) : s === \"ArrowRight\" ? (r.x += d, w = !0) : s === \"ArrowUp\" ? (r.y -= d, w = !0) : s === \"ArrowDown\" && (r.y += d, w = !0), w) {\n e.cancelable && e.preventDefault(), r.x = v(r.x, 0, a.width - r.width), r.y = v(r.y, 0, a.height - r.height);\n const g = y(r, a.width, a.height), l = D(r, a.width, a.height);\n i(g, l), n && n(g, l);\n }\n }, this.onHandlerKeyDown = (e, t) => {\n const {\n aspect: h = 0,\n crop: i,\n disabled: n,\n minWidth: s = 0,\n minHeight: w = 0,\n maxWidth: a,\n maxHeight: r,\n onChange: c,\n onComplete: d\n } = this.props, g = this.getBox();\n if (n || !i)\n return;\n if (e.key === \"ArrowUp\" || e.key === \"ArrowDown\" || e.key === \"ArrowLeft\" || e.key === \"ArrowRight\")\n e.stopPropagation(), e.preventDefault();\n else\n return;\n const m = (navigator.platform.match(\"Mac\") ? e.metaKey : e.ctrlKey) ? u.nudgeStepLarge : e.shiftKey ? u.nudgeStepMedium : u.nudgeStep, x = y(i, g.width, g.height), b = _(x, e.key, m, t), C = P(\n b,\n h,\n t,\n g.width,\n g.height,\n s,\n w,\n a,\n r\n );\n if (!Y(i, C)) {\n const R = D(C, g.width, g.height);\n c(C, R), d && d(C, R);\n }\n }, this.onDocPointerDone = (e) => {\n const { crop: t, disabled: h, onComplete: i, onDragEnd: n } = this.props, s = this.getBox();\n this.unbindDocMove(), !(h || !t) && this.mouseDownOnCrop && (this.mouseDownOnCrop = !1, this.dragStarted = !1, n && n(e), i && i(y(t, s.width, s.height), D(t, s.width, s.height)), this.setState({ cropIsActive: !1, newCropIsBeingDrawn: !1 }));\n }, this.onDragFocus = () => {\n var e;\n (e = this.componentRef.current) == null || e.scrollTo(0, 0);\n };\n }\n get document() {\n return document;\n }\n // We unfortunately get the bounding box every time as x+y changes\n // due to scrolling.\n getBox() {\n const e = this.mediaRef.current;\n if (!e)\n return { x: 0, y: 0, width: 0, height: 0 };\n const { x: t, y: h, width: i, height: n } = e.getBoundingClientRect();\n return { x: t, y: h, width: i, height: n };\n }\n componentDidUpdate(e) {\n const { crop: t, onComplete: h } = this.props;\n if (h && !e.crop && t) {\n const { width: i, height: n } = this.getBox();\n i && n && h(y(t, i, n), D(t, i, n));\n }\n }\n componentWillUnmount() {\n this.resizeObserver && this.resizeObserver.disconnect(), this.unbindDocMove();\n }\n bindDocMove() {\n this.docMoveBound || (this.document.addEventListener(\"pointermove\", this.onDocPointerMove, f), this.document.addEventListener(\"pointerup\", this.onDocPointerDone, f), this.document.addEventListener(\"pointercancel\", this.onDocPointerDone, f), this.docMoveBound = !0);\n }\n unbindDocMove() {\n this.docMoveBound && (this.document.removeEventListener(\"pointermove\", this.onDocPointerMove, f), this.document.removeEventListener(\"pointerup\", this.onDocPointerDone, f), this.document.removeEventListener(\"pointercancel\", this.onDocPointerDone, f), this.docMoveBound = !1);\n }\n getCropStyle() {\n const { crop: e } = this.props;\n if (e)\n return {\n top: `${e.y}${e.unit}`,\n left: `${e.x}${e.unit}`,\n width: `${e.width}${e.unit}`,\n height: `${e.height}${e.unit}`\n };\n }\n dragCrop() {\n const { evData: e } = this, t = this.getBox(), h = this.makePixelCrop(t), i = e.clientX - e.startClientX, n = e.clientY - e.startClientY;\n return h.x = v(e.startCropX + i, 0, t.width - h.width), h.y = v(e.startCropY + n, 0, t.height - h.height), h;\n }\n getPointRegion(e, t, h, i) {\n const { evData: n } = this, s = n.clientX - e.x, w = n.clientY - e.y;\n let a;\n i && t ? a = t === \"nw\" || t === \"n\" || t === \"ne\" : a = w < n.startCropY;\n let r;\n return h && t ? r = t === \"nw\" || t === \"w\" || t === \"sw\" : r = s < n.startCropX, r ? a ? \"nw\" : \"sw\" : a ? \"ne\" : \"se\";\n }\n resolveMinDimensions(e, t, h = 0, i = 0) {\n const n = Math.min(h, e.width), s = Math.min(i, e.height);\n return !t || !n && !s ? [n, s] : t > 1 ? n ? [n, n / t] : [s * t, s] : s ? [s * t, s] : [n, n / t];\n }\n resizeCrop() {\n const { evData: e } = this, { aspect: t = 0, maxWidth: h, maxHeight: i } = this.props, n = this.getBox(), [s, w] = this.resolveMinDimensions(n, t, this.props.minWidth, this.props.minHeight);\n let a = this.makePixelCrop(n);\n const r = this.getPointRegion(n, e.ord, s, w), c = e.ord || r;\n let d = e.clientX - e.startClientX, g = e.clientY - e.startClientY;\n (s && c === \"nw\" || c === \"w\" || c === \"sw\") && (d = Math.min(d, -s)), (w && c === \"nw\" || c === \"n\" || c === \"ne\") && (g = Math.min(g, -w));\n const l = {\n unit: \"px\",\n x: 0,\n y: 0,\n width: 0,\n height: 0\n };\n r === \"ne\" ? (l.x = e.startCropX, l.width = d, t ? (l.height = l.width / t, l.y = e.startCropY - l.height) : (l.height = Math.abs(g), l.y = e.startCropY - l.height)) : r === \"se\" ? (l.x = e.startCropX, l.y = e.startCropY, l.width = d, t ? l.height = l.width / t : l.height = g) : r === \"sw\" ? (l.x = e.startCropX + d, l.y = e.startCropY, l.width = Math.abs(d), t ? l.height = l.width / t : l.height = g) : r === \"nw\" && (l.x = e.startCropX + d, l.width = Math.abs(d), t ? (l.height = l.width / t, l.y = e.startCropY - l.height) : (l.height = Math.abs(g), l.y = e.startCropY + g));\n const m = P(\n l,\n t,\n r,\n n.width,\n n.height,\n s,\n w,\n h,\n i\n );\n return t || u.xyOrds.indexOf(c) > -1 ? a = m : u.xOrds.indexOf(c) > -1 ? (a.x = m.x, a.width = m.width) : u.yOrds.indexOf(c) > -1 && (a.y = m.y, a.height = m.height), a.x = v(a.x, 0, n.width - a.width), a.y = v(a.y, 0, n.height - a.height), a;\n }\n renderCropSelection() {\n const {\n ariaLabels: e = u.defaultProps.ariaLabels,\n disabled: t,\n locked: h,\n renderSelectionAddon: i,\n ruleOfThirds: n,\n crop: s\n } = this.props, w = this.getCropStyle();\n if (s)\n return /* @__PURE__ */ p.createElement(\n \"div\",\n {\n style: w,\n className: \"ReactCrop__crop-selection\",\n onPointerDown: this.onCropPointerDown,\n \"aria-label\": e.cropArea,\n tabIndex: 0,\n onKeyDown: this.onComponentKeyDown,\n role: \"group\"\n },\n !t && !h && /* @__PURE__ */ p.createElement(\"div\", { className: \"ReactCrop__drag-elements\", onFocus: this.onDragFocus }, /* @__PURE__ */ p.createElement(\"div\", { className: \"ReactCrop__drag-bar ord-n\", \"data-ord\": \"n\" }), /* @__PURE__ */ p.createElement(\"div\", { className: \"ReactCrop__drag-bar ord-e\", \"data-ord\": \"e\" }), /* @__PURE__ */ p.createElement(\"div\", { className: \"ReactCrop__drag-bar ord-s\", \"data-ord\": \"s\" }), /* @__PURE__ */ p.createElement(\"div\", { className: \"ReactCrop__drag-bar ord-w\", \"data-ord\": \"w\" }), /* @__PURE__ */ p.createElement(\n \"div\",\n {\n className: \"ReactCrop__drag-handle ord-nw\",\n \"data-ord\": \"nw\",\n tabIndex: 0,\n \"aria-label\": e.nwDragHandle,\n onKeyDown: (a) => this.onHandlerKeyDown(a, \"nw\"),\n role: \"button\"\n }\n ), /* @__PURE__ */ p.createElement(\n \"div\",\n {\n className: \"ReactCrop__drag-handle ord-n\",\n \"data-ord\": \"n\",\n tabIndex: 0,\n \"aria-label\": e.nDragHandle,\n onKeyDown: (a) => this.onHandlerKeyDown(a, \"n\"),\n role: \"button\"\n }\n ), /* @__PURE__ */ p.createElement(\n \"div\",\n {\n className: \"ReactCrop__drag-handle ord-ne\",\n \"data-ord\": \"ne\",\n tabIndex: 0,\n \"aria-label\": e.neDragHandle,\n onKeyDown: (a) => this.onHandlerKeyDown(a, \"ne\"),\n role: \"button\"\n }\n ), /* @__PURE__ */ p.createElement(\n \"div\",\n {\n className: \"ReactCrop__drag-handle ord-e\",\n \"data-ord\": \"e\",\n tabIndex: 0,\n \"aria-label\": e.eDragHandle,\n onKeyDown: (a) => this.onHandlerKeyDown(a, \"e\"),\n role: \"button\"\n }\n ), /* @__PURE__ */ p.createElement(\n \"div\",\n {\n className: \"ReactCrop__drag-handle ord-se\",\n \"data-ord\": \"se\",\n tabIndex: 0,\n \"aria-label\": e.seDragHandle,\n onKeyDown: (a) => this.onHandlerKeyDown(a, \"se\"),\n role: \"button\"\n }\n ), /* @__PURE__ */ p.createElement(\n \"div\",\n {\n className: \"ReactCrop__drag-handle ord-s\",\n \"data-ord\": \"s\",\n tabIndex: 0,\n \"aria-label\": e.sDragHandle,\n onKeyDown: (a) => this.onHandlerKeyDown(a, \"s\"),\n role: \"button\"\n }\n ), /* @__PURE__ */ p.createElement(\n \"div\",\n {\n className: \"ReactCrop__drag-handle ord-sw\",\n \"data-ord\": \"sw\",\n tabIndex: 0,\n \"aria-label\": e.swDragHandle,\n onKeyDown: (a) => this.onHandlerKeyDown(a, \"sw\"),\n role: \"button\"\n }\n ), /* @__PURE__ */ p.createElement(\n \"div\",\n {\n className: \"ReactCrop__drag-handle ord-w\",\n \"data-ord\": \"w\",\n tabIndex: 0,\n \"aria-label\": e.wDragHandle,\n onKeyDown: (a) => this.onHandlerKeyDown(a, \"w\"),\n role: \"button\"\n }\n )),\n i && /* @__PURE__ */ p.createElement(\"div\", { className: \"ReactCrop__selection-addon\", onPointerDown: (a) => a.stopPropagation() }, i(this.state)),\n n && /* @__PURE__ */ p.createElement(p.Fragment, null, /* @__PURE__ */ p.createElement(\"div\", { className: \"ReactCrop__rule-of-thirds-hz\" }), /* @__PURE__ */ p.createElement(\"div\", { className: \"ReactCrop__rule-of-thirds-vt\" }))\n );\n }\n makePixelCrop(e) {\n const t = { ...M, ...this.props.crop || {} };\n return y(t, e.width, e.height);\n }\n render() {\n const { aspect: e, children: t, circularCrop: h, className: i, crop: n, disabled: s, locked: w, style: a, ruleOfThirds: r } = this.props, { cropIsActive: c, newCropIsBeingDrawn: d } = this.state, g = n ? this.renderCropSelection() : null, l = S(\n \"ReactCrop\",\n i,\n c && \"ReactCrop--active\",\n s && \"ReactCrop--disabled\",\n w && \"ReactCrop--locked\",\n d && \"ReactCrop--new-crop\",\n n && e && \"ReactCrop--fixed-aspect\",\n n && h && \"ReactCrop--circular-crop\",\n n && r && \"ReactCrop--rule-of-thirds\",\n !this.dragStarted && n && !n.width && !n.height && \"ReactCrop--invisible-crop\",\n h && \"ReactCrop--no-animate\"\n );\n return /* @__PURE__ */ p.createElement(\"div\", { ref: this.componentRef, className: l, style: a }, /* @__PURE__ */ p.createElement(\"div\", { ref: this.mediaRef, className: \"ReactCrop__child-wrapper\", onPointerDown: this.onComponentPointerDown }, t), n ? /* @__PURE__ */ p.createElement(\"svg\", { className: \"ReactCrop__crop-mask\", width: \"100%\", height: \"100%\" }, /* @__PURE__ */ p.createElement(\"defs\", null, /* @__PURE__ */ p.createElement(\"mask\", { id: `hole-${this.instanceId}` }, /* @__PURE__ */ p.createElement(\"rect\", { width: \"100%\", height: \"100%\", fill: \"white\" }), h ? /* @__PURE__ */ p.createElement(\n \"ellipse\",\n {\n cx: `${n.x + n.width / 2}${n.unit}`,\n cy: `${n.y + n.height / 2}${n.unit}`,\n rx: `${n.width / 2}${n.unit}`,\n ry: `${n.height / 2}${n.unit}`,\n fill: \"black\"\n }\n ) : /* @__PURE__ */ p.createElement(\n \"rect\",\n {\n x: `${n.x}${n.unit}`,\n y: `${n.y}${n.unit}`,\n width: `${n.width}${n.unit}`,\n height: `${n.height}${n.unit}`,\n fill: \"black\"\n }\n ))), /* @__PURE__ */ p.createElement(\"rect\", { fill: \"black\", fillOpacity: 0.5, width: \"100%\", height: \"100%\", mask: `url(#hole-${this.instanceId})` })) : void 0, g);\n }\n};\nu.xOrds = [\"e\", \"w\"], u.yOrds = [\"n\", \"s\"], u.xyOrds = [\"nw\", \"ne\", \"se\", \"sw\"], u.nudgeStep = 1, u.nudgeStepMedium = 10, u.nudgeStepLarge = 100, u.defaultProps = {\n ariaLabels: {\n cropArea: \"Use the arrow keys to move the crop selection area\",\n nwDragHandle: \"Use the arrow keys to move the north west drag handle to change the crop selection area\",\n nDragHandle: \"Use the up and down arrow keys to move the north drag handle to change the crop selection area\",\n neDragHandle: \"Use the arrow keys to move the north east drag handle to change the crop selection area\",\n eDragHandle: \"Use the up and down arrow keys to move the east drag handle to change the crop selection area\",\n seDragHandle: \"Use the arrow keys to move the south east drag handle to change the crop selection area\",\n sDragHandle: \"Use the up and down arrow keys to move the south drag handle to change the crop selection area\",\n swDragHandle: \"Use the arrow keys to move the south west drag handle to change the crop selection area\",\n wDragHandle: \"Use the up and down arrow keys to move the west drag handle to change the crop selection area\"\n }\n};\nlet X = u;\nexport {\n X as Component,\n X as ReactCrop,\n Y as areCropsEqual,\n I as centerCrop,\n v as clamp,\n S as cls,\n P as containCrop,\n D as convertToPercentCrop,\n y as convertToPixelCrop,\n X as default,\n M as defaultCrop,\n H as makeAspectCrop,\n _ as nudgeCrop\n};\n","/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\nimport type {\n BaseSelection,\n LexicalCommand,\n LexicalEditor,\n NodeKey,\n} from \"lexical\";\n\nimport \"./ImageNode.css\";\n\nimport { useLexicalComposerContext } from \"@lexical/react/LexicalComposerContext\";\nimport LexicalErrorBoundary from \"@lexical/react/LexicalErrorBoundary\";\nimport { LexicalNestedComposer } from \"@lexical/react/LexicalNestedComposer\";\nimport { RichTextPlugin } from \"@lexical/react/LexicalRichTextPlugin\";\nimport { useLexicalNodeSelection } from \"@lexical/react/useLexicalNodeSelection\";\nimport { mergeRegister } from \"@lexical/utils\";\nimport {\n $getNodeByKey,\n $getSelection,\n $isNodeSelection,\n $isRangeSelection,\n $setSelection,\n CLICK_COMMAND,\n COMMAND_PRIORITY_LOW,\n createCommand,\n DRAGSTART_COMMAND,\n KEY_BACKSPACE_COMMAND,\n KEY_DELETE_COMMAND,\n KEY_ENTER_COMMAND,\n KEY_ESCAPE_COMMAND,\n SELECTION_CHANGE_COMMAND,\n} from \"lexical\";\nimport { Suspense, useCallback, useEffect, useRef, useState } from \"react\";\nimport ContentEditable from \"../ui/ContentEditable\";\nimport ImageResizer from \"../ui/ImageResizer\";\nimport Placeholder from \"../ui/Placeholder\";\nimport { $isImageNode } from \"./ImageNode\";\nimport ReactCrop, { type Crop, type PixelCrop } from \"react-image-crop\";\nimport \"react-image-crop/dist/ReactCrop.css\";\n\nexport const RIGHT_CLICK_IMAGE_COMMAND: LexicalCommand<MouseEvent> =\n createCommand(\"RIGHT_CLICK_IMAGE_COMMAND\");\n\nfunction LazyImage({\n altText,\n className,\n src,\n width,\n height,\n maxWidth,\n imageRef,\n startCrop,\n setStartCrop,\n isFocused,\n}: {\n altText: string;\n className: string | null;\n height: \"inherit\" | number;\n maxWidth?: number;\n src: string;\n width: \"inherit\" | number;\n imageRef: any;\n startCrop: boolean;\n setStartCrop: any;\n isFocused: boolean;\n}): JSX.Element {\n const [completedCrop, setCompletedCrop] = useState<PixelCrop | null>(null);\n const [croppedImage, setCroppedImage] = useState<string | null>(null);\n const [crop, setCrop] = useState<Crop>({\n //@ts-ignore\n aspect: 1,\n x: 0,\n y: 0,\n width: 100,\n height: 100,\n });\n\n const applyCrop = () => {\n if (completedCrop) {\n const image = imageRef.current;\n if (!image || !completedCrop) return;\n\n const scaleX = image.naturalWidth / image.width;\n const scaleY = image.naturalHeight / image.height;\n\n const offscreen = new OffscreenCanvas(\n completedCrop.width * scaleX,\n completedCrop.height * scaleY\n );\n const ctx = offscreen.getContext(\"2d\");\n if (!ctx) {\n throw new Error(\"No 2D context available\");\n }\n\n ctx.drawImage(\n image,\n completedCrop.x * scaleX,\n completedCrop.y * scaleY,\n completedCrop.width * scaleX,\n completedCrop.height * scaleY,\n 0,\n 0,\n completedCrop.width * scaleX,\n completedCrop.height * scaleY\n );\n\n offscreen.convertToBlob({ type: \"image/png\" }).then((blob) => {\n const croppedImageUrl = URL.createObjectURL(blob);\n setCroppedImage(croppedImageUrl);\n setStartCrop(false);\n });\n }\n };\n\n const handleToggleCrop = () => {\n if (startCrop) return;\n setStartCrop((prev: any) => {\n if (prev === false) {\n //@ts-ignore\n setCrop({ aspect: 1, x: 0, y: 0, width: 100, height: 100 });\n }\n return !prev;\n });\n };\n\n const lastCompletedCropRef = useRef<PixelCrop | null>(null);\n const containerRef = useRef<HTMLDivElement | null>(null);\n\n // Store completed crop reference\n useEffect(() => {\n if (completedCrop) {\n lastCompletedCropRef.current = completedCrop;\n }\n }, [completedCrop]);\n\n const handleClickOutside = (event: MouseEvent) => {\n if (\n containerRef.current &&\n !containerRef.current.contains(event.target as Node)\n ) {\n setStartCrop(false);\n }\n };\n\n useEffect(() => {\n document.addEventListener(\"mousedown\", handleClickOutside);\n\n return () => {\n document.removeEventListener(\"mousedown\", handleClickOutside);\n };\n }, []);\n\n return (\n <div ref={containerRef}>\n {isFocused && (\n <button\n style={{ zIndex: 999 }}\n className=\"image-caption-button\"\n onClick={() => handleToggleCrop()}\n >\n Crop\n </button>\n )}\n\n {startCrop && (\n <button\n style={{ zIndex: 999 }}\n className=\"image-caption-button\"\n onClick={() => applyCrop()}\n >\n Apply Crop\n </button>\n )}\n\n {startCrop ? (\n <ReactCrop\n crop={crop}\n onChange={(c) => setCrop(c)}\n onComplete={(c) => setCompletedCrop(c)}\n >\n <img\n className={className || undefined}\n src={croppedImage || src}\n alt={altText}\n ref={imageRef}\n style={{\n height,\n maxWidth,\n width,\n }}\n draggable=\"false\"\n />\n </ReactCrop>\n ) : (\n // When startCrop is false, show the cropped image or original image\n <img\n className={className || undefined}\n src={croppedImage || src}\n alt={altText}\n ref={imageRef}\n style={{\n height,\n maxWidth,\n width,\n }}\n draggable=\"false\"\n />\n )}\n </div>\n );\n}\n\nexport default function ImageComponent({\n src,\n altText,\n nodeKey,\n width,\n height,\n maxWidth,\n resizable,\n showCaption,\n caption,\n}: {\n altText: string;\n caption: LexicalEditor;\n height: \"inherit\" | number;\n maxWidth?: number;\n nodeKey: NodeKey;\n resizable: boolean;\n showCaption: boolean;\n src: string;\n width: \"inherit\" | number;\n captionsEnabled: boolean;\n}): JSX.Element {\n const imageRef = useRef<null | HTMLImageElement>(null);\n const buttonRef = useRef<HTMLButtonElement | null>(null);\n const [isSelected, setSelected, clearSelection] =\n useLexicalNodeSelection(nodeKey);\n const [isResizing, setIsResizing] = useState<boolean>(false);\n const [editor] = useLexicalComposerContext();\n const [selection, setSelection] = useState<BaseSelection | null>(null);\n\n const [startCrop, setStartCrop] = useState<boolean>(false);\n\n const activeEditorRef = useRef<LexicalEditor | null>(null);\n\n const onDelete = useCallback(\n (payload: KeyboardEvent) => {\n if (isSelected && $isNodeSelection($getSelection())) {\n const event: KeyboardEvent = payload;\n event.preventDefault();\n const node = $getNodeByKey(nodeKey);\n if ($isImageNode(node)) {\n node.remove();\n return true;\n }\n }\n return false;\n },\n [isSelected, nodeKey]\n );\n\n const onEnter = useCallback(\n (event: KeyboardEvent) => {\n const latestSelection = $getSelection();\n const buttonElem = buttonRef.current;\n if (\n isSelected &&\n $isNodeSelection(latestSelection) &&\n latestSelection.getNodes().length === 1\n ) {\n if (showCaption) {\n // Move focus into nested editor\n $setSelection(null);\n event.preventDefault();\n caption.focus();\n return true;\n } else if (\n buttonElem !== null &&\n buttonElem !== document.activeElement\n ) {\n event.preventDefault();\n buttonElem.focus();\n return true;\n }\n }\n return false;\n },\n [caption, isSelected, showCaption]\n );\n\n const onEscape = useCallback(\n (event: KeyboardEvent) => {\n if (\n activeEditorRef.current === caption ||\n buttonRef.current === event.target\n ) {\n $setSelection(null);\n editor.update(() => {\n setSelected(true);\n const parentRootElement = editor.getRootElement();\n if (parentRootElement !== null) {\n parentRootElement.focus();\n }\n });\n return true;\n }\n return false;\n },\n [caption, editor, setSelected]\n );\n\n const onClick = useCallback(\n (payload: MouseEvent) => {\n const event = payload;\n if (isResizing) {\n return true;\n }\n if (event.target === imageRef.current) {\n if (event.shiftKey) {\n setSelected(!isSelected);\n } else {\n clearSelection();\n setSelected(true);\n }\n return true;\n }\n\n return false;\n },\n [isResizing, isSelected, setSelected, clearSelection]\n );\n\n const onRightClick = useCallback(\n (event: MouseEvent): void => {\n editor.getEditorState().read(() => {\n const latestSelection = $getSelection();\n const domElement = event.target as HTMLElement;\n if (\n domElement.tagName === \"IMG\" &&\n $isRangeSelection(latestSelection) &&\n latestSelection.getNodes().length === 1\n ) {\n editor.dispatchCommand(\n RIGHT_CLICK_IMAGE_COMMAND,\n event as MouseEvent\n );\n }\n });\n },\n [editor]\n );\n\n useEffect(() => {\n let isMounted = true;\n const rootElement = editor.getRootElement();\n const unregister = mergeRegister(\n editor.registerUpdateListener(({ editorState }) => {\n if (isMounted) {\n setSelection(editorState.read(() => $getSelection()));\n }\n }),\n editor.registerCommand(\n SELECTION_CHANGE_COMMAND,\n (_, activeEditor) => {\n activeEditorRef.current = activeEditor;\n return false;\n },\n COMMAND_PRIORITY_LOW\n ),\n editor.registerCommand<MouseEvent>(\n CLICK_COMMAND,\n onClick,\n COMMAND_PRIORITY_LOW\n ),\n editor.registerCommand<MouseEvent>(\n RIGHT_CLICK_IMAGE_COMMAND,\n onClick,\n COMMAND_PRIORITY_LOW\n ),\n editor.registerCommand(\n DRAGSTART_COMMAND,\n (event) => {\n if (event.target === imageRef.current) {\n // TODO This is just a temporary workaround for FF to behave like other browsers.\n // Ideally, this handles drag & drop too (and all browsers).\n event.preventDefault();\n return true;\n }\n return false;\n },\n COMMAND_PRIORITY_LOW\n ),\n editor.registerCommand(\n KEY_DELETE_COMMAND,\n onDelete,\n COMMAND_PRIORITY_LOW\n ),\n editor.registerCommand(\n KEY_BACKSPACE_COMMAND,\n onDelete,\n COMMAND_PRIORITY_LOW\n ),\n editor.registerCommand(KEY_ENTER_COMMAND, onEnter, COMMAND_PRIORITY_LOW),\n editor.registerCommand(KEY_ESCAPE_COMMAND, onEscape, COMMAND_PRIORITY_LOW)\n );\n\n rootElement?.addEventListener(\"contextmenu\", onRightClick);\n\n return () => {\n isMounted = false;\n unregister();\n rootElement?.removeEventListener(\"contextmenu\", onRightClick);\n };\n }, [\n clearSelection,\n editor,\n isResizing,\n isSelected,\n nodeKey,\n onDelete,\n onEnter,\n onEscape,\n onClick,\n onRightClick,\n setSelected,\n ]);\n\n const setShowCaption = () => {\n editor.update(() => {\n const node = $getNodeByKey(nodeKey);\n if ($isImageNode(node)) {\n node.setShowCaption(true);\n }\n });\n };\n\n const onResizeEnd = (\n nextWidth: \"inherit\" | number,\n nextHeight: \"inherit\" | number\n ) => {\n // Delay hiding the resize bars for click case\n setTimeout(() => {\n setIsResizing(false);\n }, 200);\n\n editor.update(() => {\n const node = $getNodeByKey(nodeKey);\n if ($isImageNode(node)) {\n node.setWidthAndHeight(nextWidth, nextHeight);\n }\n });\n };\n\n const onResizeStart = () => {\n if (!startCrop) {\n setIsResizing(true);\n }\n };\n const draggable = isSelected && $isNodeSelection(selection) && !isResizing;\n const isFocused = isSelected || isResizing;\n\n return (\n <Suspense fallback={null}>\n <>\n <div draggable={draggable}>\n <LazyImage\n className={\n isFocused\n ? `focused ${$isNodeSelection(selection) ? \"draggable\" : \"\"}`\n : null\n }\n src={src}\n altText={altText}\n width={width}\n height={height}\n maxWidth={maxWidth}\n imageRef={imageRef}\n startCrop={startCrop}\n setStartCrop={setStartCrop}\n isFocused={isFocused}\n />\n </div>\n\n {showCaption && (\n <div className=\"image-caption-container\">\n <LexicalNestedComposer initialEditor={caption}>\n <RichTextPlugin\n contentEditable={\n <ContentEditable className=\"ImageNode__contentEditable\" />\n }\n placeholder={\n <Placeholder className=\"ImageNode__placeholder\">\n Enter a caption...\n </Placeholder>\n }\n ErrorBoundary={LexicalErrorBoundary}\n />\n </LexicalNestedComposer>\n </div>\n )}\n\n {!startCrop &&\n resizable &&\n $isNodeSelection(selection) &&\n isFocused && (\n <ImageResizer\n showCaption={showCaption}\n setShowCaption={setShowCaption}\n editor={editor}\n buttonRef={buttonRef}\n maxWidth={maxWidth}\n onResizeStart={startCrop ? () => {} : onResizeStart}\n onResizeEnd={startCrop ? () => {} : onResizeEnd}\n captionsEnabled={false}\n imageRef={imageRef}\n />\n )}\n </>\n </Suspense>\n );\n}\n"],"names":["clamp","value","min","max","Direction","ImageResizer","onResizeStart","onResizeEnd","buttonRef","imageRef","maxWidth","editor","showCaption","setShowCaption","captionsEnabled","controlWrapperRef","useRef","userSelect","positioningRef","editorRootElement","maxWidthContainer","maxHeightContainer","minWidth","minHeight","setStartCursor","direction","ew","ns","nwse","cursorDir","setEndCursor","handlePointerDown","event","image","controlWrapper","width","height","positioning","handlePointerMove","handlePointerUp","isHorizontal","isVertical","diff","jsxs","jsx","M","v","o","e","t","S","Y","D","y","P","h","i","n","s","w","a","c","g","l","m","x","b","C","_","f","$","u","k","E","d","R","p","X","RIGHT_CLICK_IMAGE_COMMAND","createCommand","LazyImage","altText","className","src","startCrop","setStartCrop","isFocused","completedCrop","setCompletedCrop","useState","croppedImage","setCroppedImage","crop","setCrop","applyCrop","scaleX","scaleY","offscreen","ctx","blob","croppedImageUrl","handleToggleCrop","prev","lastCompletedCropRef","containerRef","useEffect","handleClickOutside","ReactCrop","ImageComponent","nodeKey","resizable","caption","isSelected","setSelected","clearSelection","useLexicalNodeSelection","isResizing","setIsResizing","useLexicalComposerContext","selection","setSelection","activeEditorRef","onDelete","useCallback","payload","$isNodeSelection","$getSelection","node","$getNodeByKey","$isImageNode","onEnter","latestSelection","buttonElem","$setSelection","onEscape","parentRootElement","onClick","onRightClick","$isRangeSelection","isMounted","rootElement","unregister","mergeRegister","editorState","SELECTION_CHANGE_COMMAND","activeEditor","COMMAND_PRIORITY_LOW","CLICK_COMMAND","DRAGSTART_COMMAND","KEY_DELETE_COMMAND","KEY_BACKSPACE_COMMAND","KEY_ENTER_COMMAND","KEY_ESCAPE_COMMAND","nextWidth","nextHeight","draggable","Suspense","Fragment","LexicalNestedComposer","RichTextPlugin","ContentEditable","Placeholder","LexicalErrorBoundary"],"mappings":"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","x_google_ignoreList":[1]}
@@ -1,5 +1,5 @@
1
- import { j as e, m as $, u as M, d as v, w, x as B, n as U, a as T, c as z, e as O, C as p, f as W, k as q, g as G, I as H, r as J, h as Q, i as V, l as X, T as Y, D as Z, B as K } from "./index-c3fe6a39.js";
2
- import { u as ee, d as te, L as ne, P as ae } from "./Placeholder-e7cbe996.js";
1
+ import { j as e, m as $, u as M, d as v, w, x as B, n as U, a as T, c as z, e as O, C as p, f as W, k as q, g as G, I as H, r as J, h as Q, i as V, l as X, T as Y, D as Z, B as K } from "./index-6e13f625.js";
2
+ import { u as ee, d as te, L as ne, P as ae } from "./Placeholder-48689220.js";
3
3
  import { useRef as N, useState as I, useCallback as _, useEffect as se, Suspense as le } from "react";
4
4
  import "react-dom";
5
5
  function oe({
@@ -257,4 +257,4 @@ export {
257
257
  ce as UpdateInlineImageDialog,
258
258
  fe as default
259
259
  };
260
- //# sourceMappingURL=InlineImageComponent-2193dd09.js.map
260
+ //# sourceMappingURL=InlineImageComponent-0a44bf48.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"InlineImageComponent-2193dd09.js","sources":["../src/components/ui/Select.tsx","../src/components/nodes/InlineImageComponent.tsx"],"sourcesContent":["/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\nimport './Select.css';\n\nimport * as React from 'react';\n\ntype SelectIntrinsicProps = JSX.IntrinsicElements['select'];\ninterface SelectProps extends SelectIntrinsicProps {\n label: string;\n}\n\nexport default function Select({\n children,\n label,\n className,\n ...other\n}: SelectProps): JSX.Element {\n return (\n <div className=\"Input__wrapper\">\n <label style={{marginTop: '-1em'}} className=\"Input__label\">\n {label}\n </label>\n <select {...other} className={className || 'select'}>\n {children}\n </select>\n </div>\n );\n}\n","import type { Position } from \"./InlineImageNode\";\nimport type { BaseSelection, LexicalEditor, NodeKey } from \"lexical\";\n\nimport \"./InlineImageNode.css\";\n\nimport { useLexicalComposerContext } from \"@lexical/react/LexicalComposerContext\";\nimport LexicalErrorBoundary from \"@lexical/react/LexicalErrorBoundary\";\nimport { LexicalNestedComposer } from \"@lexical/react/LexicalNestedComposer\";\nimport { RichTextPlugin } from \"@lexical/react/LexicalRichTextPlugin\";\nimport { useLexicalNodeSelection } from \"@lexical/react/useLexicalNodeSelection\";\nimport { mergeRegister } from \"@lexical/utils\";\nimport {\n $getNodeByKey,\n $getSelection,\n $isNodeSelection,\n $setSelection,\n CLICK_COMMAND,\n COMMAND_PRIORITY_LOW,\n DRAGSTART_COMMAND,\n KEY_BACKSPACE_COMMAND,\n KEY_DELETE_COMMAND,\n KEY_ENTER_COMMAND,\n KEY_ESCAPE_COMMAND,\n SELECTION_CHANGE_COMMAND,\n} from \"lexical\";\nimport * as React from \"react\";\nimport { Suspense, useCallback, useEffect, useRef, useState } from \"react\";\n\nimport useModal from \"../hooks/useModal\";\nimport Button from \"../ui/Button\";\nimport ContentEditable from \"../ui/ContentEditable\";\nimport { DialogActions } from \"../ui/Dialog\";\nimport Placeholder from \"../ui/Placeholder\";\nimport Select from \"../ui/Select\";\nimport TextInput from \"../ui/TextInput\";\nimport { $isInlineImageNode, InlineImageNode } from \"./InlineImageNode\";\n\nconst imageCache = new Set();\n\nfunction useSuspenseImage(src: string) {\n if (!imageCache.has(src)) {\n throw new Promise((resolve) => {\n const img = new Image();\n img.src = src;\n img.onload = () => {\n imageCache.add(src);\n resolve(null);\n };\n });\n }\n}\n\nfunction LazyImage({\n altText,\n className,\n imageRef,\n src,\n width,\n height,\n position,\n}: {\n altText: string;\n className: string | null;\n height: \"inherit\" | number;\n imageRef: { current: null | HTMLImageElement };\n src: string;\n width: \"inherit\" | number;\n position: Position;\n}): JSX.Element {\n useSuspenseImage(src);\n return (\n <img\n className={className || undefined}\n src={src}\n alt={altText}\n ref={imageRef}\n data-position={position}\n style={{\n display: \"block\",\n height,\n width,\n }}\n draggable=\"false\"\n />\n );\n}\n\nexport function UpdateInlineImageDialog({\n activeEditor,\n nodeKey,\n onClose,\n}: {\n activeEditor: LexicalEditor;\n nodeKey: NodeKey;\n onClose: () => void;\n}): JSX.Element {\n const editorState = activeEditor.getEditorState();\n const node = editorState.read(\n () => $getNodeByKey(nodeKey) as InlineImageNode\n );\n const [altText, setAltText] = useState(node.getAltText());\n const [showCaption, setShowCaption] = useState(node.getShowCaption());\n const [position, setPosition] = useState<Position>(node.getPosition());\n\n const handleShowCaptionChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n setShowCaption(e.target.checked);\n };\n\n const handlePositionChange = (e: React.ChangeEvent<HTMLSelectElement>) => {\n setPosition(e.target.value as Position);\n };\n\n const handleOnConfirm = () => {\n const payload = { altText, position, showCaption };\n if (node) {\n activeEditor.update(() => {\n node.update(payload);\n });\n }\n onClose();\n };\n\n return (\n <>\n <div style={{ marginBottom: \"1em\" }}>\n <TextInput\n label=\"Alt Text\"\n placeholder=\"Descriptive alternative text\"\n onChange={setAltText}\n value={altText}\n data-test-id=\"image-modal-alt-text-input\"\n />\n </div>\n\n <Select\n style={{ marginBottom: \"1em\", width: \"208px\" }}\n value={position}\n label=\"Position\"\n name=\"position\"\n id=\"position-select\"\n onChange={handlePositionChange}\n >\n <option value=\"left\">Left</option>\n <option value=\"right\">Right</option>\n <option value=\"full\">Full Width</option>\n </Select>\n\n <div className=\"Input__wrapper\">\n <input\n id=\"caption\"\n type=\"checkbox\"\n checked={showCaption}\n onChange={handleShowCaptionChange}\n />\n <label htmlFor=\"caption\">Show Caption</label>\n </div>\n\n <DialogActions>\n <Button\n data-test-id=\"image-modal-file-upload-btn\"\n onClick={() => handleOnConfirm()}\n >\n Confirm\n </Button>\n </DialogActions>\n </>\n );\n}\n\nexport default function InlineImageComponent({\n src,\n altText,\n nodeKey,\n width,\n height,\n showCaption,\n caption,\n position,\n}: {\n altText: string;\n caption: LexicalEditor;\n height: \"inherit\" | number;\n nodeKey: NodeKey;\n showCaption: boolean;\n src: string;\n width: \"inherit\" | number;\n position: Position;\n}): JSX.Element {\n const [modal, showModal] = useModal();\n const imageRef = useRef<null | HTMLImageElement>(null);\n const buttonRef = useRef<HTMLButtonElement | null>(null);\n const [isSelected, setSelected, clearSelection] =\n useLexicalNodeSelection(nodeKey);\n const [editor] = useLexicalComposerContext();\n const [selection, setSelection] = useState<BaseSelection | null>(null);\n const activeEditorRef = useRef<LexicalEditor | null>(null);\n\n const onDelete = useCallback(\n (payload: KeyboardEvent) => {\n if (isSelected && $isNodeSelection($getSelection())) {\n const event: KeyboardEvent = payload;\n event.preventDefault();\n const node = $getNodeByKey(nodeKey);\n if ($isInlineImageNode(node)) {\n node.remove();\n return true;\n }\n }\n return false;\n },\n [isSelected, nodeKey]\n );\n\n const onEnter = useCallback(\n (event: KeyboardEvent) => {\n const latestSelection = $getSelection();\n const buttonElem = buttonRef.current;\n if (\n isSelected &&\n $isNodeSelection(latestSelection) &&\n latestSelection.getNodes().length === 1\n ) {\n if (showCaption) {\n // Move focus into nested editor\n $setSelection(null);\n event.preventDefault();\n caption.focus();\n return true;\n } else if (\n buttonElem !== null &&\n buttonElem !== document.activeElement\n ) {\n event.preventDefault();\n buttonElem.focus();\n return true;\n }\n }\n return false;\n },\n [caption, isSelected, showCaption]\n );\n\n const onEscape = useCallback(\n (event: KeyboardEvent) => {\n if (\n activeEditorRef.current === caption ||\n buttonRef.current === event.target\n ) {\n $setSelection(null);\n editor.update(() => {\n setSelected(true);\n const parentRootElement = editor.getRootElement();\n if (parentRootElement !== null) {\n parentRootElement.focus();\n }\n });\n return true;\n }\n return false;\n },\n [caption, editor, setSelected]\n );\n\n useEffect(() => {\n let isMounted = true;\n const unregister = mergeRegister(\n editor.registerUpdateListener(({ editorState }) => {\n if (isMounted) {\n setSelection(editorState.read(() => $getSelection()));\n }\n }),\n editor.registerCommand(\n SELECTION_CHANGE_COMMAND,\n (_, activeEditor) => {\n activeEditorRef.current = activeEditor;\n return false;\n },\n COMMAND_PRIORITY_LOW\n ),\n editor.registerCommand<MouseEvent>(\n CLICK_COMMAND,\n (payload) => {\n const event = payload;\n if (event.target === imageRef.current) {\n if (event.shiftKey) {\n setSelected(!isSelected);\n } else {\n clearSelection();\n setSelected(true);\n }\n return true;\n }\n\n return false;\n },\n COMMAND_PRIORITY_LOW\n ),\n editor.registerCommand(\n DRAGSTART_COMMAND,\n (event) => {\n if (event.target === imageRef.current) {\n // TODO This is just a temporary workaround for FF to behave like other browsers.\n // Ideally, this handles drag & drop too (and all browsers).\n event.preventDefault();\n return true;\n }\n return false;\n },\n COMMAND_PRIORITY_LOW\n ),\n editor.registerCommand(\n KEY_DELETE_COMMAND,\n onDelete,\n COMMAND_PRIORITY_LOW\n ),\n editor.registerCommand(\n KEY_BACKSPACE_COMMAND,\n onDelete,\n COMMAND_PRIORITY_LOW\n ),\n editor.registerCommand(KEY_ENTER_COMMAND, onEnter, COMMAND_PRIORITY_LOW),\n editor.registerCommand(KEY_ESCAPE_COMMAND, onEscape, COMMAND_PRIORITY_LOW)\n );\n return () => {\n isMounted = false;\n unregister();\n };\n }, [\n clearSelection,\n editor,\n isSelected,\n nodeKey,\n onDelete,\n onEnter,\n onEscape,\n setSelected,\n ]);\n\n const draggable = isSelected && $isNodeSelection(selection);\n const isFocused = isSelected;\n return (\n <Suspense fallback={null}>\n <>\n <div draggable={draggable}>\n <button\n className=\"image-edit-button\"\n ref={buttonRef}\n onClick={() => {\n showModal(\"Update Inline Image\", (onClose) => (\n <UpdateInlineImageDialog\n activeEditor={editor}\n nodeKey={nodeKey}\n onClose={onClose}\n />\n ));\n }}\n >\n Edit\n </button>\n <LazyImage\n className={\n isFocused\n ? `focused ${$isNodeSelection(selection) ? \"draggable\" : \"\"}`\n : null\n }\n src={src}\n altText={altText}\n imageRef={imageRef}\n width={width}\n height={height}\n position={position}\n />\n </div>\n {showCaption && (\n <div className=\"image-caption-container\">\n <LexicalNestedComposer initialEditor={caption}>\n <RichTextPlugin\n contentEditable={\n <ContentEditable className=\"InlineImageNode__contentEditable\" />\n }\n placeholder={\n <Placeholder className=\"InlineImageNode__placeholder\">\n Enter a caption...\n </Placeholder>\n }\n ErrorBoundary={LexicalErrorBoundary}\n />\n </LexicalNestedComposer>\n </div>\n )}\n </>\n {modal}\n </Suspense>\n );\n}\n"],"names":["Select","children","label","className","other","jsxs","jsx","imageCache","useSuspenseImage","src","resolve","img","LazyImage","altText","imageRef","width","height","position","UpdateInlineImageDialog","activeEditor","nodeKey","onClose","node","$getNodeByKey","setAltText","useState","showCaption","setShowCaption","setPosition","handleShowCaptionChange","e","handlePositionChange","handleOnConfirm","payload","Fragment","TextInput","DialogActions","Button","InlineImageComponent","caption","modal","showModal","useModal","useRef","buttonRef","isSelected","setSelected","clearSelection","useLexicalNodeSelection","editor","useLexicalComposerContext","selection","setSelection","activeEditorRef","onDelete","useCallback","$isNodeSelection","$getSelection","$isInlineImageNode","onEnter","event","latestSelection","buttonElem","$setSelection","onEscape","parentRootElement","useEffect","isMounted","unregister","mergeRegister","editorState","SELECTION_CHANGE_COMMAND","_","COMMAND_PRIORITY_LOW","CLICK_COMMAND","DRAGSTART_COMMAND","KEY_DELETE_COMMAND","KEY_BACKSPACE_COMMAND","KEY_ENTER_COMMAND","KEY_ESCAPE_COMMAND","draggable","isFocused","Suspense","LexicalNestedComposer","RichTextPlugin","ContentEditable","Placeholder","LexicalErrorBoundary"],"mappings":"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"}
1
+ {"version":3,"file":"InlineImageComponent-0a44bf48.js","sources":["../src/components/ui/Select.tsx","../src/components/nodes/InlineImageComponent.tsx"],"sourcesContent":["/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\nimport './Select.css';\n\nimport * as React from 'react';\n\ntype SelectIntrinsicProps = JSX.IntrinsicElements['select'];\ninterface SelectProps extends SelectIntrinsicProps {\n label: string;\n}\n\nexport default function Select({\n children,\n label,\n className,\n ...other\n}: SelectProps): JSX.Element {\n return (\n <div className=\"Input__wrapper\">\n <label style={{marginTop: '-1em'}} className=\"Input__label\">\n {label}\n </label>\n <select {...other} className={className || 'select'}>\n {children}\n </select>\n </div>\n );\n}\n","import type { Position } from \"./InlineImageNode\";\nimport type { BaseSelection, LexicalEditor, NodeKey } from \"lexical\";\n\nimport \"./InlineImageNode.css\";\n\nimport { useLexicalComposerContext } from \"@lexical/react/LexicalComposerContext\";\nimport LexicalErrorBoundary from \"@lexical/react/LexicalErrorBoundary\";\nimport { LexicalNestedComposer } from \"@lexical/react/LexicalNestedComposer\";\nimport { RichTextPlugin } from \"@lexical/react/LexicalRichTextPlugin\";\nimport { useLexicalNodeSelection } from \"@lexical/react/useLexicalNodeSelection\";\nimport { mergeRegister } from \"@lexical/utils\";\nimport {\n $getNodeByKey,\n $getSelection,\n $isNodeSelection,\n $setSelection,\n CLICK_COMMAND,\n COMMAND_PRIORITY_LOW,\n DRAGSTART_COMMAND,\n KEY_BACKSPACE_COMMAND,\n KEY_DELETE_COMMAND,\n KEY_ENTER_COMMAND,\n KEY_ESCAPE_COMMAND,\n SELECTION_CHANGE_COMMAND,\n} from \"lexical\";\nimport * as React from \"react\";\nimport { Suspense, useCallback, useEffect, useRef, useState } from \"react\";\n\nimport useModal from \"../hooks/useModal\";\nimport Button from \"../ui/Button\";\nimport ContentEditable from \"../ui/ContentEditable\";\nimport { DialogActions } from \"../ui/Dialog\";\nimport Placeholder from \"../ui/Placeholder\";\nimport Select from \"../ui/Select\";\nimport TextInput from \"../ui/TextInput\";\nimport { $isInlineImageNode, InlineImageNode } from \"./InlineImageNode\";\n\nconst imageCache = new Set();\n\nfunction useSuspenseImage(src: string) {\n if (!imageCache.has(src)) {\n throw new Promise((resolve) => {\n const img = new Image();\n img.src = src;\n img.onload = () => {\n imageCache.add(src);\n resolve(null);\n };\n });\n }\n}\n\nfunction LazyImage({\n altText,\n className,\n imageRef,\n src,\n width,\n height,\n position,\n}: {\n altText: string;\n className: string | null;\n height: \"inherit\" | number;\n imageRef: { current: null | HTMLImageElement };\n src: string;\n width: \"inherit\" | number;\n position: Position;\n}): JSX.Element {\n useSuspenseImage(src);\n return (\n <img\n className={className || undefined}\n src={src}\n alt={altText}\n ref={imageRef}\n data-position={position}\n style={{\n display: \"block\",\n height,\n width,\n }}\n draggable=\"false\"\n />\n );\n}\n\nexport function UpdateInlineImageDialog({\n activeEditor,\n nodeKey,\n onClose,\n}: {\n activeEditor: LexicalEditor;\n nodeKey: NodeKey;\n onClose: () => void;\n}): JSX.Element {\n const editorState = activeEditor.getEditorState();\n const node = editorState.read(\n () => $getNodeByKey(nodeKey) as InlineImageNode\n );\n const [altText, setAltText] = useState(node.getAltText());\n const [showCaption, setShowCaption] = useState(node.getShowCaption());\n const [position, setPosition] = useState<Position>(node.getPosition());\n\n const handleShowCaptionChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n setShowCaption(e.target.checked);\n };\n\n const handlePositionChange = (e: React.ChangeEvent<HTMLSelectElement>) => {\n setPosition(e.target.value as Position);\n };\n\n const handleOnConfirm = () => {\n const payload = { altText, position, showCaption };\n if (node) {\n activeEditor.update(() => {\n node.update(payload);\n });\n }\n onClose();\n };\n\n return (\n <>\n <div style={{ marginBottom: \"1em\" }}>\n <TextInput\n label=\"Alt Text\"\n placeholder=\"Descriptive alternative text\"\n onChange={setAltText}\n value={altText}\n data-test-id=\"image-modal-alt-text-input\"\n />\n </div>\n\n <Select\n style={{ marginBottom: \"1em\", width: \"208px\" }}\n value={position}\n label=\"Position\"\n name=\"position\"\n id=\"position-select\"\n onChange={handlePositionChange}\n >\n <option value=\"left\">Left</option>\n <option value=\"right\">Right</option>\n <option value=\"full\">Full Width</option>\n </Select>\n\n <div className=\"Input__wrapper\">\n <input\n id=\"caption\"\n type=\"checkbox\"\n checked={showCaption}\n onChange={handleShowCaptionChange}\n />\n <label htmlFor=\"caption\">Show Caption</label>\n </div>\n\n <DialogActions>\n <Button\n data-test-id=\"image-modal-file-upload-btn\"\n onClick={() => handleOnConfirm()}\n >\n Confirm\n </Button>\n </DialogActions>\n </>\n );\n}\n\nexport default function InlineImageComponent({\n src,\n altText,\n nodeKey,\n width,\n height,\n showCaption,\n caption,\n position,\n}: {\n altText: string;\n caption: LexicalEditor;\n height: \"inherit\" | number;\n nodeKey: NodeKey;\n showCaption: boolean;\n src: string;\n width: \"inherit\" | number;\n position: Position;\n}): JSX.Element {\n const [modal, showModal] = useModal();\n const imageRef = useRef<null | HTMLImageElement>(null);\n const buttonRef = useRef<HTMLButtonElement | null>(null);\n const [isSelected, setSelected, clearSelection] =\n useLexicalNodeSelection(nodeKey);\n const [editor] = useLexicalComposerContext();\n const [selection, setSelection] = useState<BaseSelection | null>(null);\n const activeEditorRef = useRef<LexicalEditor | null>(null);\n\n const onDelete = useCallback(\n (payload: KeyboardEvent) => {\n if (isSelected && $isNodeSelection($getSelection())) {\n const event: KeyboardEvent = payload;\n event.preventDefault();\n const node = $getNodeByKey(nodeKey);\n if ($isInlineImageNode(node)) {\n node.remove();\n return true;\n }\n }\n return false;\n },\n [isSelected, nodeKey]\n );\n\n const onEnter = useCallback(\n (event: KeyboardEvent) => {\n const latestSelection = $getSelection();\n const buttonElem = buttonRef.current;\n if (\n isSelected &&\n $isNodeSelection(latestSelection) &&\n latestSelection.getNodes().length === 1\n ) {\n if (showCaption) {\n // Move focus into nested editor\n $setSelection(null);\n event.preventDefault();\n caption.focus();\n return true;\n } else if (\n buttonElem !== null &&\n buttonElem !== document.activeElement\n ) {\n event.preventDefault();\n buttonElem.focus();\n return true;\n }\n }\n return false;\n },\n [caption, isSelected, showCaption]\n );\n\n const onEscape = useCallback(\n (event: KeyboardEvent) => {\n if (\n activeEditorRef.current === caption ||\n buttonRef.current === event.target\n ) {\n $setSelection(null);\n editor.update(() => {\n setSelected(true);\n const parentRootElement = editor.getRootElement();\n if (parentRootElement !== null) {\n parentRootElement.focus();\n }\n });\n return true;\n }\n return false;\n },\n [caption, editor, setSelected]\n );\n\n useEffect(() => {\n let isMounted = true;\n const unregister = mergeRegister(\n editor.registerUpdateListener(({ editorState }) => {\n if (isMounted) {\n setSelection(editorState.read(() => $getSelection()));\n }\n }),\n editor.registerCommand(\n SELECTION_CHANGE_COMMAND,\n (_, activeEditor) => {\n activeEditorRef.current = activeEditor;\n return false;\n },\n COMMAND_PRIORITY_LOW\n ),\n editor.registerCommand<MouseEvent>(\n CLICK_COMMAND,\n (payload) => {\n const event = payload;\n if (event.target === imageRef.current) {\n if (event.shiftKey) {\n setSelected(!isSelected);\n } else {\n clearSelection();\n setSelected(true);\n }\n return true;\n }\n\n return false;\n },\n COMMAND_PRIORITY_LOW\n ),\n editor.registerCommand(\n DRAGSTART_COMMAND,\n (event) => {\n if (event.target === imageRef.current) {\n // TODO This is just a temporary workaround for FF to behave like other browsers.\n // Ideally, this handles drag & drop too (and all browsers).\n event.preventDefault();\n return true;\n }\n return false;\n },\n COMMAND_PRIORITY_LOW\n ),\n editor.registerCommand(\n KEY_DELETE_COMMAND,\n onDelete,\n COMMAND_PRIORITY_LOW\n ),\n editor.registerCommand(\n KEY_BACKSPACE_COMMAND,\n onDelete,\n COMMAND_PRIORITY_LOW\n ),\n editor.registerCommand(KEY_ENTER_COMMAND, onEnter, COMMAND_PRIORITY_LOW),\n editor.registerCommand(KEY_ESCAPE_COMMAND, onEscape, COMMAND_PRIORITY_LOW)\n );\n return () => {\n isMounted = false;\n unregister();\n };\n }, [\n clearSelection,\n editor,\n isSelected,\n nodeKey,\n onDelete,\n onEnter,\n onEscape,\n setSelected,\n ]);\n\n const draggable = isSelected && $isNodeSelection(selection);\n const isFocused = isSelected;\n return (\n <Suspense fallback={null}>\n <>\n <div draggable={draggable}>\n <button\n className=\"image-edit-button\"\n ref={buttonRef}\n onClick={() => {\n showModal(\"Update Inline Image\", (onClose) => (\n <UpdateInlineImageDialog\n activeEditor={editor}\n nodeKey={nodeKey}\n onClose={onClose}\n />\n ));\n }}\n >\n Edit\n </button>\n <LazyImage\n className={\n isFocused\n ? `focused ${$isNodeSelection(selection) ? \"draggable\" : \"\"}`\n : null\n }\n src={src}\n altText={altText}\n imageRef={imageRef}\n width={width}\n height={height}\n position={position}\n />\n </div>\n {showCaption && (\n <div className=\"image-caption-container\">\n <LexicalNestedComposer initialEditor={caption}>\n <RichTextPlugin\n contentEditable={\n <ContentEditable className=\"InlineImageNode__contentEditable\" />\n }\n placeholder={\n <Placeholder className=\"InlineImageNode__placeholder\">\n Enter a caption...\n </Placeholder>\n }\n ErrorBoundary={LexicalErrorBoundary}\n />\n </LexicalNestedComposer>\n </div>\n )}\n </>\n {modal}\n </Suspense>\n );\n}\n"],"names":["Select","children","label","className","other","jsxs","jsx","imageCache","useSuspenseImage","src","resolve","img","LazyImage","altText","imageRef","width","height","position","UpdateInlineImageDialog","activeEditor","nodeKey","onClose","node","$getNodeByKey","setAltText","useState","showCaption","setShowCaption","setPosition","handleShowCaptionChange","e","handlePositionChange","handleOnConfirm","payload","Fragment","TextInput","DialogActions","Button","InlineImageComponent","caption","modal","showModal","useModal","useRef","buttonRef","isSelected","setSelected","clearSelection","useLexicalNodeSelection","editor","useLexicalComposerContext","selection","setSelection","activeEditorRef","onDelete","useCallback","$isNodeSelection","$getSelection","$isInlineImageNode","onEnter","event","latestSelection","buttonElem","$setSelection","onEscape","parentRootElement","useEffect","isMounted","unregister","mergeRegister","editorState","SELECTION_CHANGE_COMMAND","_","COMMAND_PRIORITY_LOW","CLICK_COMMAND","DRAGSTART_COMMAND","KEY_DELETE_COMMAND","KEY_BACKSPACE_COMMAND","KEY_ENTER_COMMAND","KEY_ESCAPE_COMMAND","draggable","isFocused","Suspense","LexicalNestedComposer","RichTextPlugin","ContentEditable","Placeholder","LexicalErrorBoundary"],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import { o as x, p as y, q as P, j as _, u as L, w as v, d as h, S as O, a as $, x as D, s as K } from "./index-c3fe6a39.js";
1
+ import { o as x, p as y, q as P, j as _, u as L, w as v, d as h, S as O, a as $, x as D, s as K } from "./index-6e13f625.js";
2
2
  import { useRef as T, useContext as N, useMemo as R, useEffect as m, useState as W, useCallback as w } from "react";
3
3
  function U(e) {
4
4
  return e && e.__esModule && Object.prototype.hasOwnProperty.call(e, "default") ? e.default : e;
@@ -94,4 +94,4 @@ export {
94
94
  B as d,
95
95
  F as u
96
96
  };
97
- //# sourceMappingURL=Placeholder-e7cbe996.js.map
97
+ //# sourceMappingURL=Placeholder-48689220.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Placeholder-e7cbe996.js","sources":["../node_modules/@lexical/react/LexicalNestedComposer.prod.mjs","../node_modules/@lexical/react/useLexicalNodeSelection.prod.mjs","../src/components/ui/ContentEditable.tsx","../src/components/ui/Placeholder.tsx"],"sourcesContent":["/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\nimport{useCollaborationContext as e}from\"@lexical/react/LexicalCollaborationContext\";import{LexicalComposerContext as t,createLexicalComposerContext as r}from\"@lexical/react/LexicalComposerContext\";import{useRef as o,useContext as n,useMemo as l,useEffect as i}from\"react\";import{jsx as a}from\"react/jsx-runtime\";function s(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,\"default\")?e.default:e}var c=s((function(e){const t=new URLSearchParams;t.append(\"code\",e);for(let e=1;e<arguments.length;e++)t.append(\"v\",arguments[e]);throw Error(`Minified Lexical error #${e}; visit https://lexical.dev/docs/error?${t} for the full message or use the non-minified dev environment for full errors and additional helpful warnings.`)}));function p(e){const t=e.transform();return null!==t?new Set([t]):new Set}function d({initialEditor:s,children:d,initialNodes:f,initialTheme:u,skipCollabChecks:m}){const h=o(!1),x=n(t);null==x&&c(9);const[_,{getTheme:g}]=x,v=l((()=>{const e=u||g()||void 0,t=r(x,e);if(void 0!==e&&(s._config.theme=e),s._parentEditor=_,f)for(let e of f){let t=null,r=null;if(\"function\"!=typeof e){const o=e;e=o.replace,t=o.with,r=o.withKlass||null}const o=s._nodes.get(e.getType());s._nodes.set(e.getType(),{exportDOM:o?o.exportDOM:void 0,klass:e,replace:t,replaceWithKlass:r,transforms:p(e)})}else{const e=s._nodes=new Map(_._nodes);for(const[t,r]of e)s._nodes.set(t,{exportDOM:r.exportDOM,klass:r.klass,replace:r.replace,replaceWithKlass:r.replaceWithKlass,transforms:p(r.klass)})}return s._config.namespace=_._config.namespace,s._editable=_._editable,[s,t]}),[]),{isCollabActive:w,yjsDocMap:b}=e(),M=m||h.current||b.has(s.getKey());return i((()=>{M&&(h.current=!0)}),[M]),i((()=>_.registerEditableListener((e=>{s.setEditable(e)}))),[s,_]),a(t.Provider,{value:v,children:!w||M?d:null})}export{d as LexicalNestedComposer};\n","/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\nimport{useLexicalComposerContext as e}from\"@lexical/react/LexicalComposerContext\";import{$getSelection as t,$isNodeSelection as r,$createNodeSelection as o,$setSelection as n,$getNodeByKey as c}from\"lexical\";import{useState as a,useEffect as i,useCallback as l}from\"react\";function d(e,t){return e.getEditorState().read((()=>{const e=c(t);return null!==e&&e.isSelected()}))}function u(c){const[u]=e(),[p,s]=a((()=>d(u,c)));i((()=>{let e=!0;const t=u.registerUpdateListener((()=>{e&&s(d(u,c))}));return()=>{e=!1,t()}}),[u,c]);return[p,l((e=>{u.update((()=>{let a=t();r(a)||(a=o(),n(a)),r(a)&&(e?a.add(c):a.delete(c))}))}),[u,c]),l((()=>{u.update((()=>{const e=t();r(e)&&e.clear()}))}),[u])]}export{u as useLexicalNodeSelection};\n","/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\nimport './ContentEditable.css';\n\nimport {ContentEditable} from '@lexical/react/LexicalContentEditable';\nimport * as React from 'react';\n\nexport default function LexicalContentEditable({\n className,\n style,\n}: {\n className?: string;\n style?: React.CSSProperties;\n}): JSX.Element {\n return (\n <ContentEditable\n className={className || 'ContentEditable__root'}\n style={style}\n />\n );\n}\n","/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\nimport './Placeholder.css';\n\nimport * as React from 'react';\nimport {ReactNode} from 'react';\n\nexport default function Placeholder({\n children,\n className,\n}: {\n children: ReactNode;\n className?: string;\n}): JSX.Element {\n return <div className={className || 'Placeholder__root'}>{children}</div>;\n}\n"],"names":["s","c","e","p","d","f","u","m","h","o","x","n","t","_","g","v","l","r","w","b","M","i","a","LexicalContentEditable","className","style","jsx","ContentEditable","Placeholder","children"],"mappings":"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","x_google_ignoreList":[0,1]}
1
+ {"version":3,"file":"Placeholder-48689220.js","sources":["../node_modules/@lexical/react/LexicalNestedComposer.prod.mjs","../node_modules/@lexical/react/useLexicalNodeSelection.prod.mjs","../src/components/ui/ContentEditable.tsx","../src/components/ui/Placeholder.tsx"],"sourcesContent":["/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\nimport{useCollaborationContext as e}from\"@lexical/react/LexicalCollaborationContext\";import{LexicalComposerContext as t,createLexicalComposerContext as r}from\"@lexical/react/LexicalComposerContext\";import{useRef as o,useContext as n,useMemo as l,useEffect as i}from\"react\";import{jsx as a}from\"react/jsx-runtime\";function s(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,\"default\")?e.default:e}var c=s((function(e){const t=new URLSearchParams;t.append(\"code\",e);for(let e=1;e<arguments.length;e++)t.append(\"v\",arguments[e]);throw Error(`Minified Lexical error #${e}; visit https://lexical.dev/docs/error?${t} for the full message or use the non-minified dev environment for full errors and additional helpful warnings.`)}));function p(e){const t=e.transform();return null!==t?new Set([t]):new Set}function d({initialEditor:s,children:d,initialNodes:f,initialTheme:u,skipCollabChecks:m}){const h=o(!1),x=n(t);null==x&&c(9);const[_,{getTheme:g}]=x,v=l((()=>{const e=u||g()||void 0,t=r(x,e);if(void 0!==e&&(s._config.theme=e),s._parentEditor=_,f)for(let e of f){let t=null,r=null;if(\"function\"!=typeof e){const o=e;e=o.replace,t=o.with,r=o.withKlass||null}const o=s._nodes.get(e.getType());s._nodes.set(e.getType(),{exportDOM:o?o.exportDOM:void 0,klass:e,replace:t,replaceWithKlass:r,transforms:p(e)})}else{const e=s._nodes=new Map(_._nodes);for(const[t,r]of e)s._nodes.set(t,{exportDOM:r.exportDOM,klass:r.klass,replace:r.replace,replaceWithKlass:r.replaceWithKlass,transforms:p(r.klass)})}return s._config.namespace=_._config.namespace,s._editable=_._editable,[s,t]}),[]),{isCollabActive:w,yjsDocMap:b}=e(),M=m||h.current||b.has(s.getKey());return i((()=>{M&&(h.current=!0)}),[M]),i((()=>_.registerEditableListener((e=>{s.setEditable(e)}))),[s,_]),a(t.Provider,{value:v,children:!w||M?d:null})}export{d as LexicalNestedComposer};\n","/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\nimport{useLexicalComposerContext as e}from\"@lexical/react/LexicalComposerContext\";import{$getSelection as t,$isNodeSelection as r,$createNodeSelection as o,$setSelection as n,$getNodeByKey as c}from\"lexical\";import{useState as a,useEffect as i,useCallback as l}from\"react\";function d(e,t){return e.getEditorState().read((()=>{const e=c(t);return null!==e&&e.isSelected()}))}function u(c){const[u]=e(),[p,s]=a((()=>d(u,c)));i((()=>{let e=!0;const t=u.registerUpdateListener((()=>{e&&s(d(u,c))}));return()=>{e=!1,t()}}),[u,c]);return[p,l((e=>{u.update((()=>{let a=t();r(a)||(a=o(),n(a)),r(a)&&(e?a.add(c):a.delete(c))}))}),[u,c]),l((()=>{u.update((()=>{const e=t();r(e)&&e.clear()}))}),[u])]}export{u as useLexicalNodeSelection};\n","/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\nimport './ContentEditable.css';\n\nimport {ContentEditable} from '@lexical/react/LexicalContentEditable';\nimport * as React from 'react';\n\nexport default function LexicalContentEditable({\n className,\n style,\n}: {\n className?: string;\n style?: React.CSSProperties;\n}): JSX.Element {\n return (\n <ContentEditable\n className={className || 'ContentEditable__root'}\n style={style}\n />\n );\n}\n","/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\nimport './Placeholder.css';\n\nimport * as React from 'react';\nimport {ReactNode} from 'react';\n\nexport default function Placeholder({\n children,\n className,\n}: {\n children: ReactNode;\n className?: string;\n}): JSX.Element {\n return <div className={className || 'Placeholder__root'}>{children}</div>;\n}\n"],"names":["s","c","e","p","d","f","u","m","h","o","x","n","t","_","g","v","l","r","w","b","M","i","a","LexicalContentEditable","className","style","jsx","ContentEditable","Placeholder","children"],"mappings":"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","x_google_ignoreList":[0,1]}