sykpcomposer 1.20.141 → 1.20.142

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 b, u as de, a as ae, x as T, $ as G, w as ee, d as q, b as ne, c as le, e as ge, f as ue, C as B, g as pe, k as me, h as we, I as fe, r as xe, i as ye, l as Ce, L as ve, P as De, m as be, t as Re } from "./index-14b6014a.js";
2
- import { d as Ee } from "./LexicalNestedComposer.prod-a06718ba.js";
1
+ import { j as b, u as de, a as ae, x as T, $ as G, w as ee, d as q, b as ne, c as le, e as ge, f as ue, C as B, g as pe, k as me, h as we, I as fe, r as xe, i as ye, l as Ce, L as ve, P as De, m as be, t as Re } from "./index-a4832c18.js";
2
+ import { d as Ee } from "./LexicalNestedComposer.prod-7842c85d.js";
3
3
  import C, { useRef as j, PureComponent as Me, createRef as re, useState as V, useCallback as F, useEffect as J, Suspense as He } from "react";
4
4
  import "react-dom";
5
5
  function te(g, t, e) {
@@ -936,4 +936,4 @@ export {
936
936
  se as RIGHT_CLICK_IMAGE_COMMAND,
937
937
  Le as default
938
938
  };
939
- //# sourceMappingURL=ImageComponent-1fe4f6ee.js.map
939
+ //# sourceMappingURL=ImageComponent-4f56a2f8.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ImageComponent-1fe4f6ee.js","sources":["../src/lexical/ui/ImageResizer.tsx","../node_modules/react-image-crop/dist/index.js","../src/lexical/nodes/ImageComponent.tsx"],"sourcesContent":["/**\r\n * Copyright (c) Meta Platforms, Inc. and affiliates.\r\n *\r\n * This source code is licensed under the MIT license found in the\r\n * LICENSE file in the root directory of this source tree.\r\n *\r\n */\r\n\r\nimport type { LexicalEditor } from \"lexical\";\r\n\r\nimport * as React from \"react\";\r\nimport { useRef } from \"react\";\r\n\r\nfunction clamp(value: number, min: number, max: number) {\r\n return Math.min(Math.max(value, min), max);\r\n}\r\n\r\nconst Direction = {\r\n east: 1 << 0,\r\n north: 1 << 3,\r\n south: 1 << 1,\r\n west: 1 << 2,\r\n};\r\n\r\nexport default function ImageResizer({\r\n onResizeStart,\r\n onResizeEnd,\r\n buttonRef,\r\n imageRef,\r\n maxWidth,\r\n editor,\r\n showCaption,\r\n setShowCaption,\r\n enableCaptions,\r\n}: {\r\n editor: LexicalEditor;\r\n buttonRef: { current: null | HTMLButtonElement };\r\n imageRef: { current: null | HTMLElement };\r\n maxWidth?: number;\r\n onResizeEnd: (width: \"inherit\" | number, height: \"inherit\" | number) => void;\r\n onResizeStart: () => void;\r\n setShowCaption: (show: boolean) => void;\r\n showCaption: boolean;\r\n enableCaptions: boolean;\r\n}): JSX.Element {\r\n const controlWrapperRef = useRef<HTMLDivElement>(null);\r\n const userSelect = useRef({\r\n priority: \"\",\r\n value: \"default\",\r\n });\r\n const positioningRef = useRef<{\r\n currentHeight: \"inherit\" | number;\r\n currentWidth: \"inherit\" | number;\r\n direction: number;\r\n isResizing: boolean;\r\n ratio: number;\r\n startHeight: number;\r\n startWidth: number;\r\n startX: number;\r\n startY: number;\r\n }>({\r\n currentHeight: 0,\r\n currentWidth: 0,\r\n direction: 0,\r\n isResizing: false,\r\n ratio: 0,\r\n startHeight: 0,\r\n startWidth: 0,\r\n startX: 0,\r\n startY: 0,\r\n });\r\n\r\n const editorRootElement = editor.getRootElement();\r\n // Find max width, accounting for editor padding.\r\n const maxWidthContainer =\r\n editorRootElement !== null\r\n ? editorRootElement.getBoundingClientRect().width - 20\r\n : 100;\r\n const maxHeightContainer =\r\n editorRootElement !== null\r\n ? editorRootElement.getBoundingClientRect().height - 20\r\n : 100;\r\n\r\n const minWidth = 100;\r\n const minHeight = 100;\r\n\r\n const setStartCursor = (direction: number) => {\r\n const ew = direction === Direction.east || direction === Direction.west;\r\n const ns = direction === Direction.north || direction === Direction.south;\r\n const nwse =\r\n (direction & Direction.north && direction & Direction.west) ||\r\n (direction & Direction.south && direction & Direction.east);\r\n\r\n const cursorDir = ew ? \"ew\" : ns ? \"ns\" : nwse ? \"nwse\" : \"nesw\";\r\n\r\n if (editorRootElement !== null) {\r\n editorRootElement.style.setProperty(\r\n \"cursor\",\r\n `${cursorDir}-resize`,\r\n \"important\"\r\n );\r\n }\r\n if (document.body !== null) {\r\n document.body.style.setProperty(\r\n \"cursor\",\r\n `${cursorDir}-resize`,\r\n \"important\"\r\n );\r\n userSelect.current.value = document.body.style.getPropertyValue(\r\n \"-webkit-user-select\"\r\n );\r\n userSelect.current.priority = document.body.style.getPropertyPriority(\r\n \"-webkit-user-select\"\r\n );\r\n document.body.style.setProperty(\r\n \"-webkit-user-select\",\r\n `none`,\r\n \"important\"\r\n );\r\n }\r\n };\r\n\r\n const setEndCursor = () => {\r\n if (editorRootElement !== null) {\r\n editorRootElement.style.setProperty(\"cursor\", \"text\");\r\n }\r\n if (document.body !== null) {\r\n document.body.style.setProperty(\"cursor\", \"default\");\r\n document.body.style.setProperty(\r\n \"-webkit-user-select\",\r\n userSelect.current.value,\r\n userSelect.current.priority\r\n );\r\n }\r\n };\r\n\r\n const handlePointerDown = (\r\n event: React.PointerEvent<HTMLDivElement>,\r\n direction: number\r\n ) => {\r\n if (!editor.isEditable()) {\r\n return;\r\n }\r\n\r\n const image = imageRef.current;\r\n const controlWrapper = controlWrapperRef.current;\r\n\r\n if (image !== null && controlWrapper !== null) {\r\n event.preventDefault();\r\n const { width, height } = image.getBoundingClientRect();\r\n const positioning = positioningRef.current;\r\n positioning.startWidth = width;\r\n positioning.startHeight = height;\r\n positioning.ratio = width / height;\r\n positioning.currentWidth = width;\r\n positioning.currentHeight = height;\r\n positioning.startX = event.clientX;\r\n positioning.startY = event.clientY;\r\n positioning.isResizing = true;\r\n positioning.direction = direction;\r\n setStartCursor(direction);\r\n onResizeStart();\r\n controlWrapper.classList.add(\"image-control-wrapper--resizing\");\r\n image.style.height = `${height}px`;\r\n image.style.width = `${width}px`;\r\n\r\n document.addEventListener(\"pointermove\", handlePointerMove);\r\n document.addEventListener(\"pointerup\", handlePointerUp);\r\n }\r\n };\r\n const handlePointerMove = (event: PointerEvent) => {\r\n const image = imageRef.current;\r\n const positioning = positioningRef.current;\r\n\r\n const isHorizontal =\r\n positioning.direction & (Direction.east | Direction.west);\r\n const isVertical =\r\n positioning.direction & (Direction.south | Direction.north);\r\n if (image !== null && positioning.isResizing) {\r\n if (isHorizontal && isVertical) {\r\n let diff = Math.floor(positioning.startX - event.clientX);\r\n diff = positioning.direction & Direction.east ? -diff : diff;\r\n\r\n const width = clamp(\r\n positioning.startWidth + diff,\r\n minWidth,\r\n maxWidthContainer\r\n );\r\n\r\n const height = width / positioning.ratio;\r\n if (height>600) {\r\n alert(\"Image height cannot be greater than 600px.\")\r\n handlePointerUp();\r\n return;\r\n }\r\n image.style.width = `${width}px`;\r\n image.style.height = `${height}px`;\r\n positioning.currentHeight = height;\r\n positioning.currentWidth = width;\r\n } else if (isVertical) {\r\n let diff = Math.floor(positioning.startY - event.clientY);\r\n diff = positioning.direction & Direction.south ? -diff : diff;\r\n\r\n const height = positioning.startHeight + diff;\r\n const isIncreasingHeight = height > positioning.startHeight;\r\n\r\n if (isIncreasingHeight && height > 600) {\r\n alert(\"Image height cannot be greater than 600px.\");\r\n handlePointerUp();\r\n return;\r\n }\r\n const clampedHeight = clamp(height, minHeight, maxHeightContainer);\r\n image.style.height = `${clampedHeight}px`;\r\n image.style.maxHeight = `${clampedHeight}px`;\r\n positioning.currentHeight = clampedHeight;\r\n } else {\r\n let diff = Math.floor(positioning.startX - event.clientX);\r\n diff = positioning.direction & Direction.east ? -diff : diff;\r\n const width = clamp(\r\n positioning.startWidth + diff,\r\n minWidth,\r\n maxWidthContainer\r\n );\r\n\r\n image.style.width = `${width}px`;\r\n image.style.maxWidth = `${width}px`;\r\n positioning.currentWidth = width;\r\n }\r\n if (image) {\r\n image.setAttribute(\"width\", `${positioning.currentWidth}`);\r\n image.setAttribute(\"height\", `${positioning.currentHeight}`);\r\n }\r\n }\r\n };\r\n const handlePointerUp = () => {\r\n const image = imageRef.current;\r\n const positioning = positioningRef.current;\r\n const controlWrapper = controlWrapperRef.current;\r\n if (image !== null && controlWrapper !== null && positioning.isResizing) {\r\n const width = positioning.currentWidth;\r\n const height = positioning.currentHeight;\r\n positioning.startWidth = 0;\r\n positioning.startHeight = 0;\r\n positioning.ratio = 0;\r\n positioning.startX = 0;\r\n positioning.startY = 0;\r\n positioning.currentWidth = 0;\r\n positioning.currentHeight = 0;\r\n positioning.isResizing = false;\r\n controlWrapper.classList.remove(\"image-control-wrapper--resizing\");\r\n setEndCursor();\r\n onResizeEnd(width, height);\r\n\r\n document.removeEventListener(\"pointermove\", handlePointerMove);\r\n document.removeEventListener(\"pointerup\", handlePointerUp);\r\n }\r\n };\r\n return (\r\n <div ref={controlWrapperRef}>\r\n <div\r\n className=\"image-resizer image-resizer-n\"\r\n onPointerDown={(event) => {\r\n handlePointerDown(event, Direction.north);\r\n }}\r\n />\r\n <div\r\n className=\"image-resizer image-resizer-ne\"\r\n onPointerDown={(event) => {\r\n handlePointerDown(event, Direction.north | Direction.east);\r\n }}\r\n />\r\n <div\r\n className=\"image-resizer image-resizer-e\"\r\n onPointerDown={(event) => {\r\n handlePointerDown(event, Direction.east);\r\n }}\r\n />\r\n <div\r\n className=\"image-resizer image-resizer-se\"\r\n onPointerDown={(event) => {\r\n handlePointerDown(event, Direction.south | Direction.east);\r\n }}\r\n />\r\n <div\r\n className=\"image-resizer image-resizer-s\"\r\n onPointerDown={(event) => {\r\n handlePointerDown(event, Direction.south);\r\n }}\r\n />\r\n <div\r\n className=\"image-resizer image-resizer-sw\"\r\n onPointerDown={(event) => {\r\n handlePointerDown(event, Direction.south | Direction.west);\r\n }}\r\n />\r\n <div\r\n className=\"image-resizer image-resizer-w\"\r\n onPointerDown={(event) => {\r\n handlePointerDown(event, Direction.west);\r\n }}\r\n />\r\n <div\r\n className=\"image-resizer image-resizer-nw\"\r\n onPointerDown={(event) => {\r\n handlePointerDown(event, Direction.north | Direction.west);\r\n }}\r\n />\r\n </div>\r\n );\r\n}\r\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","/**\r\n * Copyright (c) Meta Platforms, Inc. and affiliates.\r\n *\r\n * This source code is licensed under the MIT license found in the\r\n * LICENSE file in the root directory of this source tree.\r\n *\r\n */\r\n\r\nimport type {\r\n BaseSelection,\r\n LexicalCommand,\r\n LexicalEditor,\r\n NodeKey,\r\n} from \"lexical\";\r\n\r\nimport \"./ImageNode.css\";\r\n\r\nimport { useLexicalComposerContext } from \"@lexical/react/LexicalComposerContext\";\r\nimport LexicalErrorBoundary from \"@lexical/react/LexicalErrorBoundary\";\r\nimport { LexicalNestedComposer } from \"@lexical/react/LexicalNestedComposer\";\r\nimport { RichTextPlugin } from \"@lexical/react/LexicalRichTextPlugin\";\r\nimport { useLexicalNodeSelection } from \"@lexical/react/useLexicalNodeSelection\";\r\nimport { mergeRegister } from \"@lexical/utils\";\r\nimport {\r\n $getNodeByKey,\r\n $getSelection,\r\n $isNodeSelection,\r\n $isRangeSelection,\r\n $setSelection,\r\n CLICK_COMMAND,\r\n COMMAND_PRIORITY_CRITICAL,\r\n COMMAND_PRIORITY_LOW,\r\n createCommand,\r\n DRAGSTART_COMMAND,\r\n KEY_BACKSPACE_COMMAND,\r\n KEY_DELETE_COMMAND,\r\n KEY_ENTER_COMMAND,\r\n KEY_ESCAPE_COMMAND,\r\n SELECTION_CHANGE_COMMAND,\r\n} from \"lexical\";\r\nimport { Suspense, useCallback, useEffect, useRef, useState } from \"react\";\r\nimport ContentEditable from \"../ui/ContentEditable\";\r\nimport ImageResizer from \"../ui/ImageResizer\";\r\nimport Placeholder from \"../ui/Placeholder\";\r\nimport { $isImageNode } from \"./ImageNode\";\r\nimport ReactCrop, { type Crop, type PixelCrop } from \"react-image-crop\";\r\nimport \"react-image-crop/dist/ReactCrop.css\";\r\n\r\nexport const RIGHT_CLICK_IMAGE_COMMAND: LexicalCommand<MouseEvent> =\r\n createCommand(\"RIGHT_CLICK_IMAGE_COMMAND\");\r\n\r\nfunction LazyImage({\r\n altText,\r\n className,\r\n src,\r\n width,\r\n height,\r\n maxWidth,\r\n imageRef,\r\n startCrop,\r\n setStartCrop,\r\n isFocused,\r\n nodeKey,\r\n}: {\r\n altText: string;\r\n className: string | null;\r\n height: \"inherit\" | number;\r\n maxWidth?: number;\r\n src: string;\r\n width: \"inherit\" | number;\r\n imageRef: any;\r\n startCrop: boolean;\r\n setStartCrop: any;\r\n isFocused: boolean;\r\n nodeKey: NodeKey;\r\n}): JSX.Element {\r\n const [completedCrop, setCompletedCrop] = useState<PixelCrop | null>(null);\r\n const [crop, setCrop] = useState<Crop>({\r\n //@ts-ignore\r\n unit: \"px\", // Can be 'px' or '%'\r\n x: 25,\r\n y: 25,\r\n width: 50,\r\n height: 50,\r\n });\r\n const [editor] = useLexicalComposerContext();\r\n\r\n const applyCrop = () => {\r\n if (completedCrop) {\r\n const image = imageRef.current;\r\n if (!image || !completedCrop) return;\r\n\r\n const scaleX = image.naturalWidth / image.width;\r\n const scaleY = image.naturalHeight / image.height;\r\n\r\n const offscreen = new OffscreenCanvas(\r\n completedCrop.width * scaleX,\r\n completedCrop.height * scaleY\r\n );\r\n const ctx = offscreen.getContext(\"2d\");\r\n if (!ctx) {\r\n throw new Error(\"No 2D context available\");\r\n }\r\n\r\n (ctx as any).drawImage(\r\n image,\r\n completedCrop.x * scaleX,\r\n completedCrop.y * scaleY,\r\n completedCrop.width * scaleX,\r\n completedCrop.height * scaleY,\r\n 0,\r\n 0,\r\n completedCrop.width * scaleX,\r\n completedCrop.height * scaleY\r\n );\r\n\r\n (offscreen as any).convertToBlob({ type: \"image/png\" }).then((blob: any) => {\r\n setStartCrop(false);\r\n\r\n const reader = new FileReader();\r\n reader.onload = () => {\r\n const base64data = reader.result as string;\r\n\r\n // Update the node's src directly without local state\r\n setTimeout(() => {\r\n editor.update(\r\n () => {\r\n const node = $getNodeByKey(nodeKey);\r\n if ($isImageNode(node) && base64data) {\r\n node.setSrc(base64data);\r\n }\r\n },\r\n { tag: 'crop' }\r\n );\r\n }, 100);\r\n };\r\n reader.onerror = () => {\r\n console.error(\"Error reading the cropped image blob\");\r\n };\r\n reader.readAsDataURL(blob);\r\n });\r\n }\r\n };\r\n\r\n const handleToggleCrop = () => {\r\n if (startCrop) return;\r\n setStartCrop((prev: any) => {\r\n if (prev === false) {\r\n const image = imageRef.current;\r\n\r\n //@ts-ignore\r\n setCrop({\r\n unit: \"px\", // Can be 'px' or '%'\r\n x: 0,\r\n y: 0,\r\n width: image.width,\r\n height: image.height,\r\n });\r\n }\r\n return !prev;\r\n });\r\n };\r\n\r\n const lastCompletedCropRef = useRef<PixelCrop | null>(null);\r\n const containerRef = useRef<HTMLDivElement | null>(null);\r\n\r\n // Store completed crop reference\r\n useEffect(() => {\r\n if (completedCrop) {\r\n lastCompletedCropRef.current = completedCrop;\r\n }\r\n }, [completedCrop]);\r\n\r\n const handleClickOutside = (event: MouseEvent) => {\r\n if (\r\n containerRef.current &&\r\n !containerRef.current.contains(event.target as Node)\r\n ) {\r\n setStartCrop(false);\r\n }\r\n };\r\n\r\n useEffect(() => {\r\n document.addEventListener(\"mousedown\", handleClickOutside);\r\n\r\n return () => {\r\n document.removeEventListener(\"mousedown\", handleClickOutside);\r\n };\r\n }, []);\r\n\r\n return (\r\n <div ref={containerRef}>\r\n {isFocused && (\r\n <button\r\n style={{ zIndex: 999 }}\r\n className=\"image-caption-button\"\r\n onClick={() => handleToggleCrop()}\r\n >\r\n Crop\r\n </button>\r\n )}\r\n\r\n {startCrop && (\r\n <button\r\n style={{ zIndex: 999 }}\r\n className=\"image-caption-button\"\r\n onClick={() => applyCrop()}\r\n >\r\n Apply Crop\r\n </button>\r\n )}\r\n\r\n {startCrop ? (\r\n <ReactCrop\r\n crop={crop}\r\n onChange={(c) => setCrop(c)}\r\n onComplete={(c) => setCompletedCrop(c)}\r\n >\r\n <img\r\n className={className || undefined}\r\n src={src}\r\n alt={altText}\r\n ref={imageRef}\r\n width={typeof width === \"number\" ? width : undefined}\r\n height={typeof height === \"number\" ? height : undefined}\r\n style={{\r\n height,\r\n maxWidth,\r\n width,\r\n }}\r\n draggable=\"false\"\r\n crossOrigin=\"anonymous\"\r\n/>\r\n\r\n </ReactCrop>\r\n ) : (\r\n // When startCrop is false, show the cropped image or original image\r\n<img\r\n className={className || undefined}\r\n src={src}\r\n alt={altText}\r\n ref={imageRef}\r\n width={typeof width === \"number\" ? width : undefined}\r\n height={typeof height === \"number\" ? height : undefined}\r\n style={{\r\n height,\r\n maxWidth,\r\n width,\r\n }}\r\n draggable=\"false\"\r\n crossOrigin=\"anonymous\"\r\n/>\r\n\r\n )}\r\n </div>\r\n );\r\n}\r\n\r\nexport default function ImageComponent({\r\n src,\r\n altText,\r\n nodeKey,\r\n width,\r\n height,\r\n maxWidth,\r\n resizable,\r\n showCaption,\r\n caption,\r\n enableCaptions\r\n}: {\r\n altText: string;\r\n caption: LexicalEditor;\r\n height: \"inherit\" | number;\r\n maxWidth?: number;\r\n nodeKey: NodeKey;\r\n resizable: boolean;\r\n showCaption: boolean;\r\n src: string;\r\n width: \"inherit\" | number;\r\n enableCaptions: boolean;\r\n}): JSX.Element {\r\n const imageRef = useRef<null | HTMLImageElement>(null);\r\n const buttonRef = useRef<HTMLButtonElement | null>(null);\r\n const [isSelected, setSelected, clearSelection] =\r\n useLexicalNodeSelection(nodeKey);\r\n const [isResizing, setIsResizing] = useState<boolean>(false);\r\n const [editor] = useLexicalComposerContext();\r\n const [selection, setSelection] = useState<BaseSelection | null>(null);\r\n const [startCrop, setStartCrop] = useState<boolean>(false);\r\n const activeEditorRef = useRef<LexicalEditor | null>(null);\r\n const customDeleteImage = useCallback((payload: KeyboardEvent) => {\r\n if (!isSelected) {\r\n return false;\r\n }\r\n \r\n // Prevent the default deletion behavior.\r\n payload.preventDefault();\r\n \r\n editor.update(() => {\r\n const imageNode = $getNodeByKey(nodeKey);\r\n if ($isImageNode(imageNode)) {\r\n imageNode.remove();\r\n }\r\n });\r\n \r\n return true;\r\n }, [isSelected, editor, nodeKey]);\r\n \r\n const onEnter = useCallback(\r\n (event: KeyboardEvent) => {\r\n const latestSelection = $getSelection();\r\n const buttonElem = buttonRef.current;\r\n if (\r\n isSelected &&\r\n $isNodeSelection(latestSelection) &&\r\n latestSelection.getNodes().length === 1\r\n ) {\r\n if (showCaption) {\r\n // Move focus into nested editor\r\n $setSelection(null);\r\n event.preventDefault();\r\n caption.focus();\r\n return true;\r\n } else if (\r\n buttonElem !== null &&\r\n buttonElem !== document.activeElement\r\n ) {\r\n event.preventDefault();\r\n buttonElem.focus();\r\n return true;\r\n }\r\n }\r\n return false;\r\n },\r\n [caption, isSelected, showCaption]\r\n );\r\n\r\n const onEscape = useCallback(\r\n (event: KeyboardEvent) => {\r\n if (\r\n activeEditorRef.current === caption ||\r\n buttonRef.current === event.target\r\n ) {\r\n $setSelection(null);\r\n editor.update(() => {\r\n setSelected(true);\r\n const parentRootElement = editor.getRootElement();\r\n if (parentRootElement !== null) {\r\n parentRootElement.focus();\r\n }\r\n });\r\n return true;\r\n }\r\n return false;\r\n },\r\n [caption, editor, setSelected]\r\n );\r\n\r\n const onClick = useCallback(\r\n (payload: MouseEvent) => {\r\n const event = payload;\r\n if (isResizing) {\r\n return true;\r\n }\r\n if (event.target === imageRef.current) {\r\n if (event.shiftKey) {\r\n setSelected(!isSelected);\r\n } else {\r\n clearSelection();\r\n setSelected(true);\r\n }\r\n return true;\r\n }\r\n\r\n return false;\r\n },\r\n [isResizing, isSelected, setSelected, clearSelection]\r\n );\r\n\r\n const onRightClick = useCallback(\r\n (event: MouseEvent): void => {\r\n editor.getEditorState().read(() => {\r\n const latestSelection = $getSelection();\r\n const domElement = event.target as HTMLElement;\r\n if (\r\n domElement.tagName === \"IMG\" &&\r\n $isRangeSelection(latestSelection) &&\r\n latestSelection.getNodes().length === 1\r\n ) {\r\n editor.dispatchCommand(\r\n RIGHT_CLICK_IMAGE_COMMAND,\r\n event as MouseEvent\r\n );\r\n }\r\n });\r\n },\r\n [editor]\r\n );\r\n useEffect(() => {\r\n const onKeyDown = (e: KeyboardEvent) => {\r\n // Check if the pressed key is Delete or Backspace\r\n if ((e.key === \"Delete\" || e.key === \"Backspace\") && isSelected) {\r\n // Stop the event from propagating to other plugins (like the table plugin)\r\n e.stopPropagation();\r\n e.preventDefault();\r\n editor.update(() => {\r\n const imageNode = $getNodeByKey(nodeKey);\r\n if ($isImageNode(imageNode)) {\r\n imageNode.remove();\r\n }\r\n });\r\n }\r\n };\r\n \r\n const rootElement = editor.getRootElement();\r\n rootElement?.addEventListener(\"keydown\", onKeyDown);\r\n \r\n return () => {\r\n rootElement?.removeEventListener(\"keydown\", onKeyDown);\r\n };\r\n }, [isSelected, editor, nodeKey]);\r\n \r\n useEffect(() => {\r\n let isMounted = true;\r\n const rootElement = editor.getRootElement();\r\n const unregister = mergeRegister(\r\n editor.registerUpdateListener(({ editorState }) => {\r\n if (isMounted) {\r\n setSelection(editorState.read(() => $getSelection()));\r\n }\r\n }),\r\n editor.registerCommand(\r\n SELECTION_CHANGE_COMMAND,\r\n (_, activeEditor) => {\r\n activeEditorRef.current = activeEditor;\r\n return false;\r\n },\r\n COMMAND_PRIORITY_LOW\r\n ),\r\n editor.registerCommand<MouseEvent>(\r\n CLICK_COMMAND,\r\n onClick,\r\n COMMAND_PRIORITY_LOW\r\n ),\r\n editor.registerCommand<MouseEvent>(\r\n RIGHT_CLICK_IMAGE_COMMAND,\r\n onClick,\r\n COMMAND_PRIORITY_LOW\r\n ),\r\n editor.registerCommand(\r\n DRAGSTART_COMMAND,\r\n (event) => {\r\n if (event.target === imageRef.current) {\r\n // TODO This is just a temporary workaround for FF to behave like other browsers.\r\n // Ideally, this handles drag & drop too (and all browsers).\r\n event.preventDefault();\r\n return true;\r\n }\r\n return false;\r\n },\r\n COMMAND_PRIORITY_LOW\r\n ),\r\n editor.registerCommand(\r\n KEY_DELETE_COMMAND,\r\n customDeleteImage,\r\n 4\r\n ),\r\n \r\n editor.registerCommand(\r\n KEY_BACKSPACE_COMMAND,\r\n customDeleteImage,\r\n 4\r\n ),\r\n \r\n editor.registerCommand(KEY_ENTER_COMMAND, onEnter, COMMAND_PRIORITY_LOW),\r\n editor.registerCommand(KEY_ESCAPE_COMMAND, onEscape, COMMAND_PRIORITY_LOW)\r\n );\r\n\r\n rootElement?.addEventListener(\"contextmenu\", onRightClick);\r\n\r\n return () => {\r\n isMounted = false;\r\n unregister();\r\n rootElement?.removeEventListener(\"contextmenu\", onRightClick);\r\n };\r\n }, [\r\n clearSelection,\r\n editor,\r\n isResizing,\r\n isSelected,\r\n nodeKey,\r\n // onDelete,\r\n onEnter,\r\n onEscape,\r\n onClick,\r\n onRightClick,\r\n setSelected,\r\n ]);\r\n\r\n const setShowCaption = () => {\r\n editor.update(() => {\r\n const node = $getNodeByKey(nodeKey);\r\n if ($isImageNode(node)) {\r\n node.setShowCaption(true);\r\n }\r\n });\r\n };\r\n\r\n const onResizeEnd = (\r\n nextWidth: \"inherit\" | number,\r\n nextHeight: \"inherit\" | number\r\n ) => {\r\n // Delay hiding the resize bars for click case\r\n setTimeout(() => {\r\n setIsResizing(false);\r\n }, 200);\r\n\r\n editor.update(() => {\r\n const node = $getNodeByKey(nodeKey);\r\n if ($isImageNode(node)) {\r\n node.setWidthAndHeight(nextWidth, nextHeight);\r\n }\r\n });\r\n };\r\n\r\n const onResizeStart = () => {\r\n if (!startCrop) {\r\n setIsResizing(true);\r\n }\r\n };\r\n const draggable = isSelected && $isNodeSelection(selection) && !isResizing;\r\n const isFocused = isSelected || isResizing;\r\n\r\n return (\r\n <Suspense fallback={null}>\r\n <>\r\n <div draggable={draggable}>\r\n <LazyImage\r\n className={\r\n isFocused\r\n ? `focused ${$isNodeSelection(selection) ? \"draggable\" : \"\"}`\r\n : null\r\n }\r\n src={src}\r\n altText={altText}\r\n width={width}\r\n height={height}\r\n maxWidth={maxWidth}\r\n imageRef={imageRef}\r\n startCrop={startCrop}\r\n setStartCrop={setStartCrop}\r\n isFocused={isFocused}\r\n nodeKey={nodeKey}\r\n />\r\n </div>\r\n\r\n {showCaption && (\r\n <div className=\"image-caption-container\">\r\n <LexicalNestedComposer initialEditor={caption}>\r\n <RichTextPlugin\r\n contentEditable={\r\n <ContentEditable className=\"ImageNode__contentEditable\" />\r\n }\r\n placeholder={\r\n <Placeholder className=\"ImageNode__placeholder\">\r\n Enter a caption...\r\n </Placeholder>\r\n }\r\n ErrorBoundary={LexicalErrorBoundary}\r\n />\r\n </LexicalNestedComposer>\r\n </div>\r\n )}\r\n\r\n {!startCrop &&\r\n resizable &&\r\n $isNodeSelection(selection) &&\r\n isFocused && (\r\n <ImageResizer\r\n showCaption={showCaption}\r\n setShowCaption={setShowCaption}\r\n editor={editor}\r\n buttonRef={buttonRef}\r\n maxWidth={maxWidth}\r\n onResizeStart={startCrop ? () => {} : onResizeStart}\r\n onResizeEnd={startCrop ? () => {} : onResizeEnd}\r\n enableCaptions={enableCaptions}\r\n imageRef={imageRef}\r\n />\r\n )}\r\n </>\r\n </Suspense>\r\n );\r\n}\r\n"],"names":["clamp","value","min","max","Direction","ImageResizer","onResizeStart","onResizeEnd","buttonRef","imageRef","maxWidth","editor","showCaption","setShowCaption","enableCaptions","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","clampedHeight","jsxs","jsx","M","v","o","e","t","S","Y","D","y","P","h","i","n","s","w","a","r","c","d","g","l","m","x","b","C","_","f","$","u","k","E","R","p","X","RIGHT_CLICK_IMAGE_COMMAND","createCommand","LazyImage","altText","className","src","startCrop","setStartCrop","isFocused","nodeKey","completedCrop","setCompletedCrop","useState","crop","setCrop","useLexicalComposerContext","applyCrop","scaleX","scaleY","offscreen","ctx","blob","reader","base64data","node","$getNodeByKey","$isImageNode","handleToggleCrop","prev","lastCompletedCropRef","containerRef","useEffect","handleClickOutside","ReactCrop","ImageComponent","resizable","caption","isSelected","setSelected","clearSelection","useLexicalNodeSelection","isResizing","setIsResizing","selection","setSelection","activeEditorRef","customDeleteImage","useCallback","payload","imageNode","onEnter","latestSelection","$getSelection","buttonElem","$isNodeSelection","$setSelection","onEscape","parentRootElement","onClick","onRightClick","$isRangeSelection","onKeyDown","rootElement","isMounted","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-4f56a2f8.js","sources":["../src/lexical/ui/ImageResizer.tsx","../node_modules/react-image-crop/dist/index.js","../src/lexical/nodes/ImageComponent.tsx"],"sourcesContent":["/**\r\n * Copyright (c) Meta Platforms, Inc. and affiliates.\r\n *\r\n * This source code is licensed under the MIT license found in the\r\n * LICENSE file in the root directory of this source tree.\r\n *\r\n */\r\n\r\nimport type { LexicalEditor } from \"lexical\";\r\n\r\nimport * as React from \"react\";\r\nimport { useRef } from \"react\";\r\n\r\nfunction clamp(value: number, min: number, max: number) {\r\n return Math.min(Math.max(value, min), max);\r\n}\r\n\r\nconst Direction = {\r\n east: 1 << 0,\r\n north: 1 << 3,\r\n south: 1 << 1,\r\n west: 1 << 2,\r\n};\r\n\r\nexport default function ImageResizer({\r\n onResizeStart,\r\n onResizeEnd,\r\n buttonRef,\r\n imageRef,\r\n maxWidth,\r\n editor,\r\n showCaption,\r\n setShowCaption,\r\n enableCaptions,\r\n}: {\r\n editor: LexicalEditor;\r\n buttonRef: { current: null | HTMLButtonElement };\r\n imageRef: { current: null | HTMLElement };\r\n maxWidth?: number;\r\n onResizeEnd: (width: \"inherit\" | number, height: \"inherit\" | number) => void;\r\n onResizeStart: () => void;\r\n setShowCaption: (show: boolean) => void;\r\n showCaption: boolean;\r\n enableCaptions: boolean;\r\n}): JSX.Element {\r\n const controlWrapperRef = useRef<HTMLDivElement>(null);\r\n const userSelect = useRef({\r\n priority: \"\",\r\n value: \"default\",\r\n });\r\n const positioningRef = useRef<{\r\n currentHeight: \"inherit\" | number;\r\n currentWidth: \"inherit\" | number;\r\n direction: number;\r\n isResizing: boolean;\r\n ratio: number;\r\n startHeight: number;\r\n startWidth: number;\r\n startX: number;\r\n startY: number;\r\n }>({\r\n currentHeight: 0,\r\n currentWidth: 0,\r\n direction: 0,\r\n isResizing: false,\r\n ratio: 0,\r\n startHeight: 0,\r\n startWidth: 0,\r\n startX: 0,\r\n startY: 0,\r\n });\r\n\r\n const editorRootElement = editor.getRootElement();\r\n // Find max width, accounting for editor padding.\r\n const maxWidthContainer =\r\n editorRootElement !== null\r\n ? editorRootElement.getBoundingClientRect().width - 20\r\n : 100;\r\n const maxHeightContainer =\r\n editorRootElement !== null\r\n ? editorRootElement.getBoundingClientRect().height - 20\r\n : 100;\r\n\r\n const minWidth = 100;\r\n const minHeight = 100;\r\n\r\n const setStartCursor = (direction: number) => {\r\n const ew = direction === Direction.east || direction === Direction.west;\r\n const ns = direction === Direction.north || direction === Direction.south;\r\n const nwse =\r\n (direction & Direction.north && direction & Direction.west) ||\r\n (direction & Direction.south && direction & Direction.east);\r\n\r\n const cursorDir = ew ? \"ew\" : ns ? \"ns\" : nwse ? \"nwse\" : \"nesw\";\r\n\r\n if (editorRootElement !== null) {\r\n editorRootElement.style.setProperty(\r\n \"cursor\",\r\n `${cursorDir}-resize`,\r\n \"important\"\r\n );\r\n }\r\n if (document.body !== null) {\r\n document.body.style.setProperty(\r\n \"cursor\",\r\n `${cursorDir}-resize`,\r\n \"important\"\r\n );\r\n userSelect.current.value = document.body.style.getPropertyValue(\r\n \"-webkit-user-select\"\r\n );\r\n userSelect.current.priority = document.body.style.getPropertyPriority(\r\n \"-webkit-user-select\"\r\n );\r\n document.body.style.setProperty(\r\n \"-webkit-user-select\",\r\n `none`,\r\n \"important\"\r\n );\r\n }\r\n };\r\n\r\n const setEndCursor = () => {\r\n if (editorRootElement !== null) {\r\n editorRootElement.style.setProperty(\"cursor\", \"text\");\r\n }\r\n if (document.body !== null) {\r\n document.body.style.setProperty(\"cursor\", \"default\");\r\n document.body.style.setProperty(\r\n \"-webkit-user-select\",\r\n userSelect.current.value,\r\n userSelect.current.priority\r\n );\r\n }\r\n };\r\n\r\n const handlePointerDown = (\r\n event: React.PointerEvent<HTMLDivElement>,\r\n direction: number\r\n ) => {\r\n if (!editor.isEditable()) {\r\n return;\r\n }\r\n\r\n const image = imageRef.current;\r\n const controlWrapper = controlWrapperRef.current;\r\n\r\n if (image !== null && controlWrapper !== null) {\r\n event.preventDefault();\r\n const { width, height } = image.getBoundingClientRect();\r\n const positioning = positioningRef.current;\r\n positioning.startWidth = width;\r\n positioning.startHeight = height;\r\n positioning.ratio = width / height;\r\n positioning.currentWidth = width;\r\n positioning.currentHeight = height;\r\n positioning.startX = event.clientX;\r\n positioning.startY = event.clientY;\r\n positioning.isResizing = true;\r\n positioning.direction = direction;\r\n setStartCursor(direction);\r\n onResizeStart();\r\n controlWrapper.classList.add(\"image-control-wrapper--resizing\");\r\n image.style.height = `${height}px`;\r\n image.style.width = `${width}px`;\r\n\r\n document.addEventListener(\"pointermove\", handlePointerMove);\r\n document.addEventListener(\"pointerup\", handlePointerUp);\r\n }\r\n };\r\n const handlePointerMove = (event: PointerEvent) => {\r\n const image = imageRef.current;\r\n const positioning = positioningRef.current;\r\n\r\n const isHorizontal =\r\n positioning.direction & (Direction.east | Direction.west);\r\n const isVertical =\r\n positioning.direction & (Direction.south | Direction.north);\r\n if (image !== null && positioning.isResizing) {\r\n if (isHorizontal && isVertical) {\r\n let diff = Math.floor(positioning.startX - event.clientX);\r\n diff = positioning.direction & Direction.east ? -diff : diff;\r\n\r\n const width = clamp(\r\n positioning.startWidth + diff,\r\n minWidth,\r\n maxWidthContainer\r\n );\r\n\r\n const height = width / positioning.ratio;\r\n if (height>600) {\r\n alert(\"Image height cannot be greater than 600px.\")\r\n handlePointerUp();\r\n return;\r\n }\r\n image.style.width = `${width}px`;\r\n image.style.height = `${height}px`;\r\n positioning.currentHeight = height;\r\n positioning.currentWidth = width;\r\n } else if (isVertical) {\r\n let diff = Math.floor(positioning.startY - event.clientY);\r\n diff = positioning.direction & Direction.south ? -diff : diff;\r\n\r\n const height = positioning.startHeight + diff;\r\n const isIncreasingHeight = height > positioning.startHeight;\r\n\r\n if (isIncreasingHeight && height > 600) {\r\n alert(\"Image height cannot be greater than 600px.\");\r\n handlePointerUp();\r\n return;\r\n }\r\n const clampedHeight = clamp(height, minHeight, maxHeightContainer);\r\n image.style.height = `${clampedHeight}px`;\r\n image.style.maxHeight = `${clampedHeight}px`;\r\n positioning.currentHeight = clampedHeight;\r\n } else {\r\n let diff = Math.floor(positioning.startX - event.clientX);\r\n diff = positioning.direction & Direction.east ? -diff : diff;\r\n const width = clamp(\r\n positioning.startWidth + diff,\r\n minWidth,\r\n maxWidthContainer\r\n );\r\n\r\n image.style.width = `${width}px`;\r\n image.style.maxWidth = `${width}px`;\r\n positioning.currentWidth = width;\r\n }\r\n if (image) {\r\n image.setAttribute(\"width\", `${positioning.currentWidth}`);\r\n image.setAttribute(\"height\", `${positioning.currentHeight}`);\r\n }\r\n }\r\n };\r\n const handlePointerUp = () => {\r\n const image = imageRef.current;\r\n const positioning = positioningRef.current;\r\n const controlWrapper = controlWrapperRef.current;\r\n if (image !== null && controlWrapper !== null && positioning.isResizing) {\r\n const width = positioning.currentWidth;\r\n const height = positioning.currentHeight;\r\n positioning.startWidth = 0;\r\n positioning.startHeight = 0;\r\n positioning.ratio = 0;\r\n positioning.startX = 0;\r\n positioning.startY = 0;\r\n positioning.currentWidth = 0;\r\n positioning.currentHeight = 0;\r\n positioning.isResizing = false;\r\n controlWrapper.classList.remove(\"image-control-wrapper--resizing\");\r\n setEndCursor();\r\n onResizeEnd(width, height);\r\n\r\n document.removeEventListener(\"pointermove\", handlePointerMove);\r\n document.removeEventListener(\"pointerup\", handlePointerUp);\r\n }\r\n };\r\n return (\r\n <div ref={controlWrapperRef}>\r\n <div\r\n className=\"image-resizer image-resizer-n\"\r\n onPointerDown={(event) => {\r\n handlePointerDown(event, Direction.north);\r\n }}\r\n />\r\n <div\r\n className=\"image-resizer image-resizer-ne\"\r\n onPointerDown={(event) => {\r\n handlePointerDown(event, Direction.north | Direction.east);\r\n }}\r\n />\r\n <div\r\n className=\"image-resizer image-resizer-e\"\r\n onPointerDown={(event) => {\r\n handlePointerDown(event, Direction.east);\r\n }}\r\n />\r\n <div\r\n className=\"image-resizer image-resizer-se\"\r\n onPointerDown={(event) => {\r\n handlePointerDown(event, Direction.south | Direction.east);\r\n }}\r\n />\r\n <div\r\n className=\"image-resizer image-resizer-s\"\r\n onPointerDown={(event) => {\r\n handlePointerDown(event, Direction.south);\r\n }}\r\n />\r\n <div\r\n className=\"image-resizer image-resizer-sw\"\r\n onPointerDown={(event) => {\r\n handlePointerDown(event, Direction.south | Direction.west);\r\n }}\r\n />\r\n <div\r\n className=\"image-resizer image-resizer-w\"\r\n onPointerDown={(event) => {\r\n handlePointerDown(event, Direction.west);\r\n }}\r\n />\r\n <div\r\n className=\"image-resizer image-resizer-nw\"\r\n onPointerDown={(event) => {\r\n handlePointerDown(event, Direction.north | Direction.west);\r\n }}\r\n />\r\n </div>\r\n );\r\n}\r\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","/**\r\n * Copyright (c) Meta Platforms, Inc. and affiliates.\r\n *\r\n * This source code is licensed under the MIT license found in the\r\n * LICENSE file in the root directory of this source tree.\r\n *\r\n */\r\n\r\nimport type {\r\n BaseSelection,\r\n LexicalCommand,\r\n LexicalEditor,\r\n NodeKey,\r\n} from \"lexical\";\r\n\r\nimport \"./ImageNode.css\";\r\n\r\nimport { useLexicalComposerContext } from \"@lexical/react/LexicalComposerContext\";\r\nimport LexicalErrorBoundary from \"@lexical/react/LexicalErrorBoundary\";\r\nimport { LexicalNestedComposer } from \"@lexical/react/LexicalNestedComposer\";\r\nimport { RichTextPlugin } from \"@lexical/react/LexicalRichTextPlugin\";\r\nimport { useLexicalNodeSelection } from \"@lexical/react/useLexicalNodeSelection\";\r\nimport { mergeRegister } from \"@lexical/utils\";\r\nimport {\r\n $getNodeByKey,\r\n $getSelection,\r\n $isNodeSelection,\r\n $isRangeSelection,\r\n $setSelection,\r\n CLICK_COMMAND,\r\n COMMAND_PRIORITY_CRITICAL,\r\n COMMAND_PRIORITY_LOW,\r\n createCommand,\r\n DRAGSTART_COMMAND,\r\n KEY_BACKSPACE_COMMAND,\r\n KEY_DELETE_COMMAND,\r\n KEY_ENTER_COMMAND,\r\n KEY_ESCAPE_COMMAND,\r\n SELECTION_CHANGE_COMMAND,\r\n} from \"lexical\";\r\nimport { Suspense, useCallback, useEffect, useRef, useState } from \"react\";\r\nimport ContentEditable from \"../ui/ContentEditable\";\r\nimport ImageResizer from \"../ui/ImageResizer\";\r\nimport Placeholder from \"../ui/Placeholder\";\r\nimport { $isImageNode } from \"./ImageNode\";\r\nimport ReactCrop, { type Crop, type PixelCrop } from \"react-image-crop\";\r\nimport \"react-image-crop/dist/ReactCrop.css\";\r\n\r\nexport const RIGHT_CLICK_IMAGE_COMMAND: LexicalCommand<MouseEvent> =\r\n createCommand(\"RIGHT_CLICK_IMAGE_COMMAND\");\r\n\r\nfunction LazyImage({\r\n altText,\r\n className,\r\n src,\r\n width,\r\n height,\r\n maxWidth,\r\n imageRef,\r\n startCrop,\r\n setStartCrop,\r\n isFocused,\r\n nodeKey,\r\n}: {\r\n altText: string;\r\n className: string | null;\r\n height: \"inherit\" | number;\r\n maxWidth?: number;\r\n src: string;\r\n width: \"inherit\" | number;\r\n imageRef: any;\r\n startCrop: boolean;\r\n setStartCrop: any;\r\n isFocused: boolean;\r\n nodeKey: NodeKey;\r\n}): JSX.Element {\r\n const [completedCrop, setCompletedCrop] = useState<PixelCrop | null>(null);\r\n const [crop, setCrop] = useState<Crop>({\r\n //@ts-ignore\r\n unit: \"px\", // Can be 'px' or '%'\r\n x: 25,\r\n y: 25,\r\n width: 50,\r\n height: 50,\r\n });\r\n const [editor] = useLexicalComposerContext();\r\n\r\n const applyCrop = () => {\r\n if (completedCrop) {\r\n const image = imageRef.current;\r\n if (!image || !completedCrop) return;\r\n\r\n const scaleX = image.naturalWidth / image.width;\r\n const scaleY = image.naturalHeight / image.height;\r\n\r\n const offscreen = new OffscreenCanvas(\r\n completedCrop.width * scaleX,\r\n completedCrop.height * scaleY\r\n );\r\n const ctx = offscreen.getContext(\"2d\");\r\n if (!ctx) {\r\n throw new Error(\"No 2D context available\");\r\n }\r\n\r\n (ctx as any).drawImage(\r\n image,\r\n completedCrop.x * scaleX,\r\n completedCrop.y * scaleY,\r\n completedCrop.width * scaleX,\r\n completedCrop.height * scaleY,\r\n 0,\r\n 0,\r\n completedCrop.width * scaleX,\r\n completedCrop.height * scaleY\r\n );\r\n\r\n (offscreen as any).convertToBlob({ type: \"image/png\" }).then((blob: any) => {\r\n setStartCrop(false);\r\n\r\n const reader = new FileReader();\r\n reader.onload = () => {\r\n const base64data = reader.result as string;\r\n\r\n // Update the node's src directly without local state\r\n setTimeout(() => {\r\n editor.update(\r\n () => {\r\n const node = $getNodeByKey(nodeKey);\r\n if ($isImageNode(node) && base64data) {\r\n node.setSrc(base64data);\r\n }\r\n },\r\n { tag: 'crop' }\r\n );\r\n }, 100);\r\n };\r\n reader.onerror = () => {\r\n console.error(\"Error reading the cropped image blob\");\r\n };\r\n reader.readAsDataURL(blob);\r\n });\r\n }\r\n };\r\n\r\n const handleToggleCrop = () => {\r\n if (startCrop) return;\r\n setStartCrop((prev: any) => {\r\n if (prev === false) {\r\n const image = imageRef.current;\r\n\r\n //@ts-ignore\r\n setCrop({\r\n unit: \"px\", // Can be 'px' or '%'\r\n x: 0,\r\n y: 0,\r\n width: image.width,\r\n height: image.height,\r\n });\r\n }\r\n return !prev;\r\n });\r\n };\r\n\r\n const lastCompletedCropRef = useRef<PixelCrop | null>(null);\r\n const containerRef = useRef<HTMLDivElement | null>(null);\r\n\r\n // Store completed crop reference\r\n useEffect(() => {\r\n if (completedCrop) {\r\n lastCompletedCropRef.current = completedCrop;\r\n }\r\n }, [completedCrop]);\r\n\r\n const handleClickOutside = (event: MouseEvent) => {\r\n if (\r\n containerRef.current &&\r\n !containerRef.current.contains(event.target as Node)\r\n ) {\r\n setStartCrop(false);\r\n }\r\n };\r\n\r\n useEffect(() => {\r\n document.addEventListener(\"mousedown\", handleClickOutside);\r\n\r\n return () => {\r\n document.removeEventListener(\"mousedown\", handleClickOutside);\r\n };\r\n }, []);\r\n\r\n return (\r\n <div ref={containerRef}>\r\n {isFocused && (\r\n <button\r\n style={{ zIndex: 999 }}\r\n className=\"image-caption-button\"\r\n onClick={() => handleToggleCrop()}\r\n >\r\n Crop\r\n </button>\r\n )}\r\n\r\n {startCrop && (\r\n <button\r\n style={{ zIndex: 999 }}\r\n className=\"image-caption-button\"\r\n onClick={() => applyCrop()}\r\n >\r\n Apply Crop\r\n </button>\r\n )}\r\n\r\n {startCrop ? (\r\n <ReactCrop\r\n crop={crop}\r\n onChange={(c) => setCrop(c)}\r\n onComplete={(c) => setCompletedCrop(c)}\r\n >\r\n <img\r\n className={className || undefined}\r\n src={src}\r\n alt={altText}\r\n ref={imageRef}\r\n width={typeof width === \"number\" ? width : undefined}\r\n height={typeof height === \"number\" ? height : undefined}\r\n style={{\r\n height,\r\n maxWidth,\r\n width,\r\n }}\r\n draggable=\"false\"\r\n crossOrigin=\"anonymous\"\r\n/>\r\n\r\n </ReactCrop>\r\n ) : (\r\n // When startCrop is false, show the cropped image or original image\r\n<img\r\n className={className || undefined}\r\n src={src}\r\n alt={altText}\r\n ref={imageRef}\r\n width={typeof width === \"number\" ? width : undefined}\r\n height={typeof height === \"number\" ? height : undefined}\r\n style={{\r\n height,\r\n maxWidth,\r\n width,\r\n }}\r\n draggable=\"false\"\r\n crossOrigin=\"anonymous\"\r\n/>\r\n\r\n )}\r\n </div>\r\n );\r\n}\r\n\r\nexport default function ImageComponent({\r\n src,\r\n altText,\r\n nodeKey,\r\n width,\r\n height,\r\n maxWidth,\r\n resizable,\r\n showCaption,\r\n caption,\r\n enableCaptions\r\n}: {\r\n altText: string;\r\n caption: LexicalEditor;\r\n height: \"inherit\" | number;\r\n maxWidth?: number;\r\n nodeKey: NodeKey;\r\n resizable: boolean;\r\n showCaption: boolean;\r\n src: string;\r\n width: \"inherit\" | number;\r\n enableCaptions: boolean;\r\n}): JSX.Element {\r\n const imageRef = useRef<null | HTMLImageElement>(null);\r\n const buttonRef = useRef<HTMLButtonElement | null>(null);\r\n const [isSelected, setSelected, clearSelection] =\r\n useLexicalNodeSelection(nodeKey);\r\n const [isResizing, setIsResizing] = useState<boolean>(false);\r\n const [editor] = useLexicalComposerContext();\r\n const [selection, setSelection] = useState<BaseSelection | null>(null);\r\n const [startCrop, setStartCrop] = useState<boolean>(false);\r\n const activeEditorRef = useRef<LexicalEditor | null>(null);\r\n const customDeleteImage = useCallback((payload: KeyboardEvent) => {\r\n if (!isSelected) {\r\n return false;\r\n }\r\n \r\n // Prevent the default deletion behavior.\r\n payload.preventDefault();\r\n \r\n editor.update(() => {\r\n const imageNode = $getNodeByKey(nodeKey);\r\n if ($isImageNode(imageNode)) {\r\n imageNode.remove();\r\n }\r\n });\r\n \r\n return true;\r\n }, [isSelected, editor, nodeKey]);\r\n \r\n const onEnter = useCallback(\r\n (event: KeyboardEvent) => {\r\n const latestSelection = $getSelection();\r\n const buttonElem = buttonRef.current;\r\n if (\r\n isSelected &&\r\n $isNodeSelection(latestSelection) &&\r\n latestSelection.getNodes().length === 1\r\n ) {\r\n if (showCaption) {\r\n // Move focus into nested editor\r\n $setSelection(null);\r\n event.preventDefault();\r\n caption.focus();\r\n return true;\r\n } else if (\r\n buttonElem !== null &&\r\n buttonElem !== document.activeElement\r\n ) {\r\n event.preventDefault();\r\n buttonElem.focus();\r\n return true;\r\n }\r\n }\r\n return false;\r\n },\r\n [caption, isSelected, showCaption]\r\n );\r\n\r\n const onEscape = useCallback(\r\n (event: KeyboardEvent) => {\r\n if (\r\n activeEditorRef.current === caption ||\r\n buttonRef.current === event.target\r\n ) {\r\n $setSelection(null);\r\n editor.update(() => {\r\n setSelected(true);\r\n const parentRootElement = editor.getRootElement();\r\n if (parentRootElement !== null) {\r\n parentRootElement.focus();\r\n }\r\n });\r\n return true;\r\n }\r\n return false;\r\n },\r\n [caption, editor, setSelected]\r\n );\r\n\r\n const onClick = useCallback(\r\n (payload: MouseEvent) => {\r\n const event = payload;\r\n if (isResizing) {\r\n return true;\r\n }\r\n if (event.target === imageRef.current) {\r\n if (event.shiftKey) {\r\n setSelected(!isSelected);\r\n } else {\r\n clearSelection();\r\n setSelected(true);\r\n }\r\n return true;\r\n }\r\n\r\n return false;\r\n },\r\n [isResizing, isSelected, setSelected, clearSelection]\r\n );\r\n\r\n const onRightClick = useCallback(\r\n (event: MouseEvent): void => {\r\n editor.getEditorState().read(() => {\r\n const latestSelection = $getSelection();\r\n const domElement = event.target as HTMLElement;\r\n if (\r\n domElement.tagName === \"IMG\" &&\r\n $isRangeSelection(latestSelection) &&\r\n latestSelection.getNodes().length === 1\r\n ) {\r\n editor.dispatchCommand(\r\n RIGHT_CLICK_IMAGE_COMMAND,\r\n event as MouseEvent\r\n );\r\n }\r\n });\r\n },\r\n [editor]\r\n );\r\n useEffect(() => {\r\n const onKeyDown = (e: KeyboardEvent) => {\r\n // Check if the pressed key is Delete or Backspace\r\n if ((e.key === \"Delete\" || e.key === \"Backspace\") && isSelected) {\r\n // Stop the event from propagating to other plugins (like the table plugin)\r\n e.stopPropagation();\r\n e.preventDefault();\r\n editor.update(() => {\r\n const imageNode = $getNodeByKey(nodeKey);\r\n if ($isImageNode(imageNode)) {\r\n imageNode.remove();\r\n }\r\n });\r\n }\r\n };\r\n \r\n const rootElement = editor.getRootElement();\r\n rootElement?.addEventListener(\"keydown\", onKeyDown);\r\n \r\n return () => {\r\n rootElement?.removeEventListener(\"keydown\", onKeyDown);\r\n };\r\n }, [isSelected, editor, nodeKey]);\r\n \r\n useEffect(() => {\r\n let isMounted = true;\r\n const rootElement = editor.getRootElement();\r\n const unregister = mergeRegister(\r\n editor.registerUpdateListener(({ editorState }) => {\r\n if (isMounted) {\r\n setSelection(editorState.read(() => $getSelection()));\r\n }\r\n }),\r\n editor.registerCommand(\r\n SELECTION_CHANGE_COMMAND,\r\n (_, activeEditor) => {\r\n activeEditorRef.current = activeEditor;\r\n return false;\r\n },\r\n COMMAND_PRIORITY_LOW\r\n ),\r\n editor.registerCommand<MouseEvent>(\r\n CLICK_COMMAND,\r\n onClick,\r\n COMMAND_PRIORITY_LOW\r\n ),\r\n editor.registerCommand<MouseEvent>(\r\n RIGHT_CLICK_IMAGE_COMMAND,\r\n onClick,\r\n COMMAND_PRIORITY_LOW\r\n ),\r\n editor.registerCommand(\r\n DRAGSTART_COMMAND,\r\n (event) => {\r\n if (event.target === imageRef.current) {\r\n // TODO This is just a temporary workaround for FF to behave like other browsers.\r\n // Ideally, this handles drag & drop too (and all browsers).\r\n event.preventDefault();\r\n return true;\r\n }\r\n return false;\r\n },\r\n COMMAND_PRIORITY_LOW\r\n ),\r\n editor.registerCommand(\r\n KEY_DELETE_COMMAND,\r\n customDeleteImage,\r\n 4\r\n ),\r\n \r\n editor.registerCommand(\r\n KEY_BACKSPACE_COMMAND,\r\n customDeleteImage,\r\n 4\r\n ),\r\n \r\n editor.registerCommand(KEY_ENTER_COMMAND, onEnter, COMMAND_PRIORITY_LOW),\r\n editor.registerCommand(KEY_ESCAPE_COMMAND, onEscape, COMMAND_PRIORITY_LOW)\r\n );\r\n\r\n rootElement?.addEventListener(\"contextmenu\", onRightClick);\r\n\r\n return () => {\r\n isMounted = false;\r\n unregister();\r\n rootElement?.removeEventListener(\"contextmenu\", onRightClick);\r\n };\r\n }, [\r\n clearSelection,\r\n editor,\r\n isResizing,\r\n isSelected,\r\n nodeKey,\r\n // onDelete,\r\n onEnter,\r\n onEscape,\r\n onClick,\r\n onRightClick,\r\n setSelected,\r\n ]);\r\n\r\n const setShowCaption = () => {\r\n editor.update(() => {\r\n const node = $getNodeByKey(nodeKey);\r\n if ($isImageNode(node)) {\r\n node.setShowCaption(true);\r\n }\r\n });\r\n };\r\n\r\n const onResizeEnd = (\r\n nextWidth: \"inherit\" | number,\r\n nextHeight: \"inherit\" | number\r\n ) => {\r\n // Delay hiding the resize bars for click case\r\n setTimeout(() => {\r\n setIsResizing(false);\r\n }, 200);\r\n\r\n editor.update(() => {\r\n const node = $getNodeByKey(nodeKey);\r\n if ($isImageNode(node)) {\r\n node.setWidthAndHeight(nextWidth, nextHeight);\r\n }\r\n });\r\n };\r\n\r\n const onResizeStart = () => {\r\n if (!startCrop) {\r\n setIsResizing(true);\r\n }\r\n };\r\n const draggable = isSelected && $isNodeSelection(selection) && !isResizing;\r\n const isFocused = isSelected || isResizing;\r\n\r\n return (\r\n <Suspense fallback={null}>\r\n <>\r\n <div draggable={draggable}>\r\n <LazyImage\r\n className={\r\n isFocused\r\n ? `focused ${$isNodeSelection(selection) ? \"draggable\" : \"\"}`\r\n : null\r\n }\r\n src={src}\r\n altText={altText}\r\n width={width}\r\n height={height}\r\n maxWidth={maxWidth}\r\n imageRef={imageRef}\r\n startCrop={startCrop}\r\n setStartCrop={setStartCrop}\r\n isFocused={isFocused}\r\n nodeKey={nodeKey}\r\n />\r\n </div>\r\n\r\n {showCaption && (\r\n <div className=\"image-caption-container\">\r\n <LexicalNestedComposer initialEditor={caption}>\r\n <RichTextPlugin\r\n contentEditable={\r\n <ContentEditable className=\"ImageNode__contentEditable\" />\r\n }\r\n placeholder={\r\n <Placeholder className=\"ImageNode__placeholder\">\r\n Enter a caption...\r\n </Placeholder>\r\n }\r\n ErrorBoundary={LexicalErrorBoundary}\r\n />\r\n </LexicalNestedComposer>\r\n </div>\r\n )}\r\n\r\n {!startCrop &&\r\n resizable &&\r\n $isNodeSelection(selection) &&\r\n isFocused && (\r\n <ImageResizer\r\n showCaption={showCaption}\r\n setShowCaption={setShowCaption}\r\n editor={editor}\r\n buttonRef={buttonRef}\r\n maxWidth={maxWidth}\r\n onResizeStart={startCrop ? () => {} : onResizeStart}\r\n onResizeEnd={startCrop ? () => {} : onResizeEnd}\r\n enableCaptions={enableCaptions}\r\n imageRef={imageRef}\r\n />\r\n )}\r\n </>\r\n </Suspense>\r\n );\r\n}\r\n"],"names":["clamp","value","min","max","Direction","ImageResizer","onResizeStart","onResizeEnd","buttonRef","imageRef","maxWidth","editor","showCaption","setShowCaption","enableCaptions","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","clampedHeight","jsxs","jsx","M","v","o","e","t","S","Y","D","y","P","h","i","n","s","w","a","r","c","d","g","l","m","x","b","C","_","f","$","u","k","E","R","p","X","RIGHT_CLICK_IMAGE_COMMAND","createCommand","LazyImage","altText","className","src","startCrop","setStartCrop","isFocused","nodeKey","completedCrop","setCompletedCrop","useState","crop","setCrop","useLexicalComposerContext","applyCrop","scaleX","scaleY","offscreen","ctx","blob","reader","base64data","node","$getNodeByKey","$isImageNode","handleToggleCrop","prev","lastCompletedCropRef","containerRef","useEffect","handleClickOutside","ReactCrop","ImageComponent","resizable","caption","isSelected","setSelected","clearSelection","useLexicalNodeSelection","isResizing","setIsResizing","selection","setSelection","activeEditorRef","customDeleteImage","useCallback","payload","imageNode","onEnter","latestSelection","$getSelection","buttonElem","$isNodeSelection","$setSelection","onEscape","parentRootElement","onClick","onRightClick","$isRangeSelection","onKeyDown","rootElement","isMounted","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 { a as G, w as L, c as U, n as H, o as M, Y as V, G as W, v as X, e as A, j as e, p as $, i as Y, C as w, q as k, s as Z, y as J, u as Q, d as B, x as q, z as K, b as O, f as ee, g as te, k as ne, h as se, I as ae, r as oe, A as ie, B as le, l as re, L as ce, P as ue, m as me, T as de, D as pe, E as ge } from "./index-14b6014a.js";
2
- import { d as fe } from "./LexicalNestedComposer.prod-a06718ba.js";
1
+ import { a as G, w as L, c as U, n as H, o as M, Y as V, G as W, v as X, e as A, j as e, p as $, i as Y, C as w, q as k, s as Z, y as J, u as Q, d as B, x as q, z as K, b as O, f as ee, g as te, k as ne, h as se, I as ae, r as oe, A as ie, B as le, l as re, L as ce, P as ue, m as me, T as de, D as pe, E as ge } from "./index-a4832c18.js";
2
+ import { d as fe } from "./LexicalNestedComposer.prod-7842c85d.js";
3
3
  import { useState as C, useCallback as y, useEffect as T, useRef as D, Suspense as he } from "react";
4
4
  import { createPortal as xe } from "react-dom";
5
5
  function be(t, s) {
@@ -526,4 +526,4 @@ export {
526
526
  ke as UpdateInlineImageDialog,
527
527
  Pe as default
528
528
  };
529
- //# sourceMappingURL=InlineImageComponent-f6392878.js.map
529
+ //# sourceMappingURL=InlineImageComponent-51afd708.js.map