sykpcomposer 0.0.109 → 0.0.112
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{ImageComponent-cf11c5ba.js → ImageComponent-a5849aa5.js} +3 -3
- package/dist/{ImageComponent-cf11c5ba.js.map → ImageComponent-a5849aa5.js.map} +1 -1
- package/dist/InlineImageComponent-2a80d49f.js +260 -0
- package/dist/InlineImageComponent-2a80d49f.js.map +1 -0
- package/dist/{ContentEditable-6aae82cd.js → Placeholder-b9109e63.js} +37 -37
- package/dist/Placeholder-b9109e63.js.map +1 -0
- package/dist/{index-aa2dd680.js → index-174aeef5.js} +5697 -5665
- package/dist/index-174aeef5.js.map +1 -0
- package/dist/index.es.js +1 -1
- package/dist/index.umd.js +93 -93
- package/dist/index.umd.js.map +1 -1
- package/dist/src/components/plugins/InsertExternalNodesPlugin.d.ts +1 -0
- package/dist/style.css +1 -1
- package/package.json +3 -1
- package/dist/ContentEditable-6aae82cd.js.map +0 -1
- package/dist/InlineImageComponent-cb128e8b.js +0 -249
- package/dist/InlineImageComponent-cb128e8b.js.map +0 -1
- package/dist/index-aa2dd680.js.map +0 -1
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { j as C, u as ae, d as W, w as G, x as q, $ as J, a as te, b as he, c as ce, e as de, C as Y, f as le, k as ge, g as ue, I as pe, r as we, h as me, i as fe, l as xe, t as ye } from "./index-
|
|
2
|
-
import { u as Ce, d as ve, L as De, P as be } from "./
|
|
1
|
+
import { j as C, u as ae, d as W, w as G, x as q, $ as J, a as te, b as he, c as ce, e as de, C as Y, f as le, k as ge, g as ue, I as pe, r as we, h as me, i as fe, l as xe, t as ye } from "./index-174aeef5.js";
|
|
2
|
+
import { u as Ce, d as ve, L as De, P as be } from "./Placeholder-b9109e63.js";
|
|
3
3
|
import x, { useRef as I, PureComponent as Re, createRef as ne, useState as K, useCallback as F, useEffect as Z, Suspense as Ee } from "react";
|
|
4
4
|
import "react-dom";
|
|
5
5
|
function Q(l, t, e) {
|
|
@@ -880,4 +880,4 @@ export {
|
|
|
880
880
|
oe as RIGHT_CLICK_IMAGE_COMMAND,
|
|
881
881
|
Xe as default
|
|
882
882
|
};
|
|
883
|
-
//# sourceMappingURL=ImageComponent-
|
|
883
|
+
//# sourceMappingURL=ImageComponent-a5849aa5.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ImageComponent-cf11c5ba.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} from 'react';\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 const editorRootElement = editor.getRootElement();\n // Find max width, accounting for editor padding.\n const maxWidthContainer = maxWidth\n ? maxWidth\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 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 positioning.currentWidth = width;\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\nconst imageCache = new Set();\n\nexport const RIGHT_CLICK_IMAGE_COMMAND: LexicalCommand<MouseEvent> =\n createCommand(\"RIGHT_CLICK_IMAGE_COMMAND\");\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 maxWidth,\n}: {\n altText: string;\n className: string | null;\n height: \"inherit\" | number;\n imageRef: { current: null | HTMLImageElement };\n maxWidth: number;\n src: string;\n width: \"inherit\" | number;\n}): JSX.Element {\n const [crop, setCrop] = useState<Crop>({\n aspect: 1,\n x: 0,\n y: 0,\n width: 100,\n height: 100,\n });\n\n const [completedCrop, setCompletedCrop] = useState<PixelCrop | null>(null);\n const [croppedImage, setCroppedImage] = useState<string | null>(null);\n const [selectCrop, setSelectCrop] = useState<boolean>(false);\n const blobUrlRef = useRef(\"\");\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 // Handle toggle for enabling/disabling crop mode\n const handleToggleCrop = () => {\n setSelectCrop((prev) => {\n if (prev === false) {\n // When enabling crop, reset the crop state\n setCrop({ aspect: 1, x: 0, y: 0, width: 100, height: 100 });\n }\n return !prev;\n });\n };\n\n const handleClickOutside = (event: MouseEvent) => {\n // Check if the click was outside of the component container\n if (\n containerRef.current &&\n !containerRef.current.contains(event.target as Node)\n ) {\n console.log(\"Outside of the image clicked!\");\n setSelectCrop(false);\n }\n };\n\n useEffect(() => {\n document.addEventListener(\"mousedown\", handleClickOutside);\n return () => {\n document.removeEventListener(\"mousedown\", handleClickOutside);\n };\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 setSelectCrop(!selectCrop);\n console.log(\"Updated cropped image:\", croppedImageUrl);\n });\n }\n };\n\n return (\n <div ref={containerRef}>\n {selectCrop ? (\n <button onClick={applyCrop} disabled={!completedCrop}>\n Apply Crop\n </button>\n ) : (\n <button onClick={handleToggleCrop}>Enable Crop</button>\n )}\n {selectCrop ? (\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 selectCrop 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 captionsEnabled,\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 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\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 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 imageRef={imageRef}\n width={width}\n height={height}\n maxWidth={maxWidth}\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 {resizable && $isNodeSelection(selection) && isFocused && (\n <ImageResizer\n showCaption={showCaption}\n setShowCaption={setShowCaption}\n editor={editor}\n buttonRef={buttonRef}\n imageRef={imageRef}\n maxWidth={maxWidth}\n onResizeStart={onResizeStart}\n onResizeEnd={onResizeEnd}\n captionsEnabled={captionsEnabled}\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","r","d","g","l","m","x","b","C","_","f","$","u","k","E","R","p","X","RIGHT_CLICK_IMAGE_COMMAND","createCommand","LazyImage","altText","className","src","crop","setCrop","useState","completedCrop","setCompletedCrop","croppedImage","setCroppedImage","selectCrop","setSelectCrop","lastCompletedCropRef","containerRef","useEffect","handleToggleCrop","prev","handleClickOutside","applyCrop","scaleX","scaleY","offscreen","ctx","blob","croppedImageUrl","ReactCrop","c","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","isFocused","Suspense","Fragment","LexicalNestedComposer","RichTextPlugin","ContentEditable","Placeholder","LexicalErrorBoundary"],"mappings":"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","x_google_ignoreList":[1]}
|
|
1
|
+
{"version":3,"file":"ImageComponent-a5849aa5.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} from 'react';\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 const editorRootElement = editor.getRootElement();\n // Find max width, accounting for editor padding.\n const maxWidthContainer = maxWidth\n ? maxWidth\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 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 positioning.currentWidth = width;\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\nconst imageCache = new Set();\n\nexport const RIGHT_CLICK_IMAGE_COMMAND: LexicalCommand<MouseEvent> =\n createCommand(\"RIGHT_CLICK_IMAGE_COMMAND\");\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 maxWidth,\n}: {\n altText: string;\n className: string | null;\n height: \"inherit\" | number;\n imageRef: { current: null | HTMLImageElement };\n maxWidth: number;\n src: string;\n width: \"inherit\" | number;\n}): JSX.Element {\n const [crop, setCrop] = useState<Crop>({\n aspect: 1,\n x: 0,\n y: 0,\n width: 100,\n height: 100,\n });\n\n const [completedCrop, setCompletedCrop] = useState<PixelCrop | null>(null);\n const [croppedImage, setCroppedImage] = useState<string | null>(null);\n const [selectCrop, setSelectCrop] = useState<boolean>(false);\n const blobUrlRef = useRef(\"\");\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 // Handle toggle for enabling/disabling crop mode\n const handleToggleCrop = () => {\n setSelectCrop((prev) => {\n if (prev === false) {\n // When enabling crop, reset the crop state\n setCrop({ aspect: 1, x: 0, y: 0, width: 100, height: 100 });\n }\n return !prev;\n });\n };\n\n const handleClickOutside = (event: MouseEvent) => {\n // Check if the click was outside of the component container\n if (\n containerRef.current &&\n !containerRef.current.contains(event.target as Node)\n ) {\n console.log(\"Outside of the image clicked!\");\n setSelectCrop(false);\n }\n };\n\n useEffect(() => {\n document.addEventListener(\"mousedown\", handleClickOutside);\n return () => {\n document.removeEventListener(\"mousedown\", handleClickOutside);\n };\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 setSelectCrop(!selectCrop);\n console.log(\"Updated cropped image:\", croppedImageUrl);\n });\n }\n };\n\n return (\n <div ref={containerRef}>\n {selectCrop ? (\n <button onClick={applyCrop} disabled={!completedCrop}>\n Apply Crop\n </button>\n ) : (\n <button onClick={handleToggleCrop}>Enable Crop</button>\n )}\n {selectCrop ? (\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 selectCrop 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 captionsEnabled,\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 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\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 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 imageRef={imageRef}\n width={width}\n height={height}\n maxWidth={maxWidth}\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 {resizable && $isNodeSelection(selection) && isFocused && (\n <ImageResizer\n showCaption={showCaption}\n setShowCaption={setShowCaption}\n editor={editor}\n buttonRef={buttonRef}\n imageRef={imageRef}\n maxWidth={maxWidth}\n onResizeStart={onResizeStart}\n onResizeEnd={onResizeEnd}\n captionsEnabled={captionsEnabled}\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","r","d","g","l","m","x","b","C","_","f","$","u","k","E","R","p","X","RIGHT_CLICK_IMAGE_COMMAND","createCommand","LazyImage","altText","className","src","crop","setCrop","useState","completedCrop","setCompletedCrop","croppedImage","setCroppedImage","selectCrop","setSelectCrop","lastCompletedCropRef","containerRef","useEffect","handleToggleCrop","prev","handleClickOutside","applyCrop","scaleX","scaleY","offscreen","ctx","blob","croppedImageUrl","ReactCrop","c","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","isFocused","Suspense","Fragment","LexicalNestedComposer","RichTextPlugin","ContentEditable","Placeholder","LexicalErrorBoundary"],"mappings":"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","x_google_ignoreList":[1]}
|