react-lite-rich-text-editor 1.1.9 → 1.1.10
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.cjs.js +264 -20
- package/dist/index.cjs.js.map +1 -1
- package/dist/index.esm.js +264 -20
- package/dist/index.esm.js.map +1 -1
- package/package.json +1 -1
package/dist/index.cjs.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.cjs.js","sources":["../src/icons.jsx","../src/utils.js","../src/Spinner.jsx","../src/Label.jsx","../node_modules/style-inject/dist/style-inject.es.js","../src/RichTextEditor.jsx"],"sourcesContent":["import React from 'react';\n\nexport const FaImage = ({ className, size, color, style }) => {\n return (\n <span className={className} style={{ display: 'inline-flex', alignItems: 'center', justifyContent: 'center', fontSize: size || '1em', color: color || 'inherit', ...style }} dangerouslySetInnerHTML={{ __html: `<svg stroke=\"currentColor\" fill=\"currentColor\" stroke-width=\"0\" viewBox=\"0 0 512 512\" height=\"1em\" width=\"1em\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M464 448H48c-26.51 0-48-21.49-48-48V112c0-26.51 21.49-48 48-48h416c26.51 0 48 21.49 48 48v288c0 26.51-21.49 48-48 48zM112 120c-30.928 0-56 25.072-56 56s25.072 56 56 56 56-25.072 56-56-25.072-56-56-56zM64 384h384V272l-87.515-87.515c-4.686-4.686-12.284-4.686-16.971 0L208 320l-55.515-55.515c-4.686-4.686-12.284-4.686-16.971 0L64 336v48z\"></path></svg>` }} />\n );\n};\n\nexport const FaArrowDown = ({ className, size, color, style }) => {\n return (\n <span className={className} style={{ display: 'inline-flex', alignItems: 'center', justifyContent: 'center', fontSize: size || '1em', color: color || 'inherit', ...style }} dangerouslySetInnerHTML={{ __html: `<svg stroke=\"currentColor\" fill=\"currentColor\" stroke-width=\"0\" viewBox=\"0 0 448 512\" height=\"1em\" width=\"1em\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M413.1 222.5l22.2 22.2c9.4 9.4 9.4 24.6 0 33.9L241 473c-9.4 9.4-24.6 9.4-33.9 0L12.7 278.6c-9.4-9.4-9.4-24.6 0-33.9l22.2-22.2c9.5-9.5 25-9.3 34.3.4L184 343.4V56c0-13.3 10.7-24 24-24h32c13.3 0 24 10.7 24 24v287.4l114.8-120.5c9.3-9.8 24.8-10 34.3-.4z\"></path></svg>` }} />\n );\n};\n\nexport const FaBold = ({ className, size, color, style }) => {\n return (\n <span className={className} style={{ display: 'inline-flex', alignItems: 'center', justifyContent: 'center', fontSize: size || '1em', color: color || 'inherit', ...style }} dangerouslySetInnerHTML={{ __html: `<svg stroke=\"currentColor\" fill=\"currentColor\" stroke-width=\"0\" viewBox=\"0 0 384 512\" height=\"1em\" width=\"1em\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M333.49 238a122 122 0 0 0 27-65.21C367.87 96.49 308 32 233.42 32H34a16 16 0 0 0-16 16v48a16 16 0 0 0 16 16h31.87v288H34a16 16 0 0 0-16 16v48a16 16 0 0 0 16 16h209.32c70.8 0 134.14-51.75 141-122.4 4.74-48.45-16.39-92.06-50.83-119.6zM145.66 112h87.76a48 48 0 0 1 0 96h-87.76zm87.76 288h-87.76V288h87.76a56 56 0 0 1 0 112z\"></path></svg>` }} />\n );\n};\n\nexport const FaItalic = ({ className, size, color, style }) => {\n return (\n <span className={className} style={{ display: 'inline-flex', alignItems: 'center', justifyContent: 'center', fontSize: size || '1em', color: color || 'inherit', ...style }} dangerouslySetInnerHTML={{ __html: `<svg stroke=\"currentColor\" fill=\"currentColor\" stroke-width=\"0\" viewBox=\"0 0 320 512\" height=\"1em\" width=\"1em\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M320 48v32a16 16 0 0 1-16 16h-62.76l-80 320H208a16 16 0 0 1 16 16v32a16 16 0 0 1-16 16H16a16 16 0 0 1-16-16v-32a16 16 0 0 1 16-16h62.76l80-320H112a16 16 0 0 1-16-16V48a16 16 0 0 1 16-16h192a16 16 0 0 1 16 16z\"></path></svg>` }} />\n );\n};\n\nexport const FaUnderline = ({ className, size, color, style }) => {\n return (\n <span className={className} style={{ display: 'inline-flex', alignItems: 'center', justifyContent: 'center', fontSize: size || '1em', color: color || 'inherit', ...style }} dangerouslySetInnerHTML={{ __html: `<svg stroke=\"currentColor\" fill=\"currentColor\" stroke-width=\"0\" viewBox=\"0 0 448 512\" height=\"1em\" width=\"1em\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M32 64h32v160c0 88.22 71.78 160 160 160s160-71.78 160-160V64h32a16 16 0 0 0 16-16V16a16 16 0 0 0-16-16H272a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32v160a80 80 0 0 1-160 0V64h32a16 16 0 0 0 16-16V16a16 16 0 0 0-16-16H32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16zm400 384H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16z\"></path></svg>` }} />\n );\n};\n\nexport const FaTextHeight = ({ className, size, color, style }) => {\n return (\n <span className={className} style={{ display: 'inline-flex', alignItems: 'center', justifyContent: 'center', fontSize: size || '1em', color: color || 'inherit', ...style }} dangerouslySetInnerHTML={{ __html: `<svg stroke=\"currentColor\" fill=\"currentColor\" stroke-width=\"0\" viewBox=\"0 0 576 512\" height=\"1em\" width=\"1em\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M304 32H16A16 16 0 0 0 0 48v96a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32h56v304H80a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h160a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16h-40V112h56v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16zm256 336h-48V144h48c14.31 0 21.33-17.31 11.31-27.31l-80-80a16 16 0 0 0-22.62 0l-80 80C379.36 126 384.36 144 400 144h48v224h-48c-14.31 0-21.32 17.31-11.31 27.31l80 80a16 16 0 0 0 22.62 0l80-80C580.64 386 575.64 368 560 368z\"></path></svg>` }} />\n );\n};\n\nexport const FaAlignCenter = ({ className, size, color, style }) => {\n return (\n <span className={className} style={{ display: 'inline-flex', alignItems: 'center', justifyContent: 'center', fontSize: size || '1em', color: color || 'inherit', ...style }} dangerouslySetInnerHTML={{ __html: `<svg stroke=\"currentColor\" fill=\"currentColor\" stroke-width=\"0\" viewBox=\"0 0 448 512\" height=\"1em\" width=\"1em\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M432 160H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0 256H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM108.1 96h231.81A12.09 12.09 0 0 0 352 83.9V44.09A12.09 12.09 0 0 0 339.91 32H108.1A12.09 12.09 0 0 0 96 44.09V83.9A12.1 12.1 0 0 0 108.1 96zm231.81 256A12.09 12.09 0 0 0 352 339.9v-39.81A12.09 12.09 0 0 0 339.91 288H108.1A12.09 12.09 0 0 0 96 300.09v39.81a12.1 12.1 0 0 0 12.1 12.1z\"></path></svg>` }} />\n );\n};\n\nexport const FaAlignRight = ({ className, size, color, style }) => {\n return (\n <span className={className} style={{ display: 'inline-flex', alignItems: 'center', justifyContent: 'center', fontSize: size || '1em', color: color || 'inherit', ...style }} dangerouslySetInnerHTML={{ __html: `<svg stroke=\"currentColor\" fill=\"currentColor\" stroke-width=\"0\" viewBox=\"0 0 448 512\" height=\"1em\" width=\"1em\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M16 224h416a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16zm416 192H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm3.17-384H172.83A12.82 12.82 0 0 0 160 44.83v38.34A12.82 12.82 0 0 0 172.83 96h262.34A12.82 12.82 0 0 0 448 83.17V44.83A12.82 12.82 0 0 0 435.17 32zm0 256H172.83A12.82 12.82 0 0 0 160 300.83v38.34A12.82 12.82 0 0 0 172.83 352h262.34A12.82 12.82 0 0 0 448 339.17v-38.34A12.82 12.82 0 0 0 435.17 288z\"></path></svg>` }} />\n );\n};\n\nexport const FaAlignJustify = ({ className, size, color, style }) => {\n return (\n <span className={className} style={{ display: 'inline-flex', alignItems: 'center', justifyContent: 'center', fontSize: size || '1em', color: color || 'inherit', ...style }} dangerouslySetInnerHTML={{ __html: `<svg stroke=\"currentColor\" fill=\"currentColor\" stroke-width=\"0\" viewBox=\"0 0 448 512\" height=\"1em\" width=\"1em\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M432 416H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-128H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-128H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-128H16A16 16 0 0 0 0 48v32a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16z\"></path></svg>` }} />\n );\n};\n\nexport const FaAlignLeft = ({ className, size, color, style }) => {\n return (\n <span className={className} style={{ display: 'inline-flex', alignItems: 'center', justifyContent: 'center', fontSize: size || '1em', color: color || 'inherit', ...style }} dangerouslySetInnerHTML={{ __html: `<svg stroke=\"currentColor\" fill=\"currentColor\" stroke-width=\"0\" viewBox=\"0 0 448 512\" height=\"1em\" width=\"1em\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M12.83 352h262.34A12.82 12.82 0 0 0 288 339.17v-38.34A12.82 12.82 0 0 0 275.17 288H12.83A12.82 12.82 0 0 0 0 300.83v38.34A12.82 12.82 0 0 0 12.83 352zm0-256h262.34A12.82 12.82 0 0 0 288 83.17V44.83A12.82 12.82 0 0 0 275.17 32H12.83A12.82 12.82 0 0 0 0 44.83v38.34A12.82 12.82 0 0 0 12.83 96zM432 160H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0 256H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16z\"></path></svg>` }} />\n );\n};\n\nexport const FaListOl = ({ className, size, color, style }) => {\n return (\n <span className={className} style={{ display: 'inline-flex', alignItems: 'center', justifyContent: 'center', fontSize: size || '1em', color: color || 'inherit', ...style }} dangerouslySetInnerHTML={{ __html: `<svg stroke=\"currentColor\" fill=\"currentColor\" stroke-width=\"0\" viewBox=\"0 0 512 512\" height=\"1em\" width=\"1em\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M61.77 401l17.5-20.15a19.92 19.92 0 0 0 5.07-14.19v-3.31C84.34 356 80.5 352 73 352H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8h22.83a157.41 157.41 0 0 0-11 12.31l-5.61 7c-4 5.07-5.25 10.13-2.8 14.88l1.05 1.93c3 5.76 6.29 7.88 12.25 7.88h4.73c10.33 0 15.94 2.44 15.94 9.09 0 4.72-4.2 8.22-14.36 8.22a41.54 41.54 0 0 1-15.47-3.12c-6.49-3.88-11.74-3.5-15.6 3.12l-5.59 9.31c-3.72 6.13-3.19 11.72 2.63 15.94 7.71 4.69 20.38 9.44 37 9.44 34.16 0 48.5-22.75 48.5-44.12-.03-14.38-9.12-29.76-28.73-34.88zM496 224H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM16 160h64a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H64V40a8 8 0 0 0-8-8H32a8 8 0 0 0-7.14 4.42l-8 16A8 8 0 0 0 24 64h8v64H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8zm-3.91 160H80a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H41.32c3.29-10.29 48.34-18.68 48.34-56.44 0-29.06-25-39.56-44.47-39.56-21.36 0-33.8 10-40.46 18.75-4.37 5.59-3 10.84 2.8 15.37l8.58 6.88c5.61 4.56 11 2.47 16.12-2.44a13.44 13.44 0 0 1 9.46-3.84c3.33 0 9.28 1.56 9.28 8.75C51 248.19 0 257.31 0 304.59v4C0 316 5.08 320 12.09 320z\"></path></svg>` }} />\n );\n};\n\nexport const FaListUl = ({ className, size, color, style }) => {\n return (\n <span className={className} style={{ display: 'inline-flex', alignItems: 'center', justifyContent: 'center', fontSize: size || '1em', color: color || 'inherit', ...style }} dangerouslySetInnerHTML={{ __html: `<svg stroke=\"currentColor\" fill=\"currentColor\" stroke-width=\"0\" viewBox=\"0 0 512 512\" height=\"1em\" width=\"1em\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M48 48a48 48 0 1 0 48 48 48 48 0 0 0-48-48zm0 160a48 48 0 1 0 48 48 48 48 0 0 0-48-48zm0 160a48 48 0 1 0 48 48 48 48 0 0 0-48-48zm448 16H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16z\"></path></svg>` }} />\n );\n};\n\nexport const FaFonticons = ({ className, size, color, style }) => {\n return (\n <span className={className} style={{ display: 'inline-flex', alignItems: 'center', justifyContent: 'center', fontSize: size || '1em', color: color || 'inherit', ...style }} dangerouslySetInnerHTML={{ __html: `<svg stroke=\"currentColor\" fill=\"currentColor\" stroke-width=\"0\" viewBox=\"0 0 448 512\" height=\"1em\" width=\"1em\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M0 32v448h448V32zm187 140.9c-18.4 0-19 9.9-19 27.4v23.3c0 2.4-3.5 4.4-.6 4.4h67.4l-11.1 37.3H168v112.9c0 5.8-2 6.7 3.2 7.3l43.5 4.1v25.1H84V389l21.3-2c5.2-.6 6.7-2.3 6.7-7.9V267.7c0-2.3-2.9-2.3-5.8-2.3H84V228h28v-21c0-49.6 26.5-70 77.3-70 34.1 0 64.7 8.2 64.7 52.8l-50.7 6.1c.3-18.7-4.4-23-16.3-23zm74.3 241.8v-25.1l20.4-2.6c5.2-.6 7.6-1.7 7.6-7.3V271.8c0-4.1-2.9-6.7-6.7-7.9l-24.2-6.4 6.7-29.5h80.2v151.7c0 5.8-2.6 6.4 2.9 7.3l15.7 2.6v25.1zm80.8-255.5l9 33.2-7.3 7.3-31.2-16.6-31.2 16.6-7.3-7.3 9-33.2-21.8-24.2 3.5-9.6h27.7l15.5-28h9.3l15.5 28h27.7l3.5 9.6z\"></path></svg>` }} />\n );\n};\n\nexport const FaFont = ({ className, size, color, style }) => {\n return (\n <span className={className} style={{ display: 'inline-flex', alignItems: 'center', justifyContent: 'center', fontSize: size || '1em', color: color || 'inherit', ...style }} dangerouslySetInnerHTML={{ __html: `<svg stroke=\"currentColor\" fill=\"currentColor\" stroke-width=\"0\" viewBox=\"0 0 448 512\" height=\"1em\" width=\"1em\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M432 416h-23.41L277.88 53.69A32 32 0 0 0 247.58 32h-47.16a32 32 0 0 0-30.3 21.69L39.41 416H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h128a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16h-19.58l23.3-64h152.56l23.3 64H304a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h128a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM176.85 272L224 142.51 271.15 272z\"></path></svg>` }} />\n );\n};\n\nexport const FaLink = ({ className, size, color, style }) => {\n return (\n <span className={className} style={{ display: 'inline-flex', alignItems: 'center', justifyContent: 'center', fontSize: size || '1em', color: color || 'inherit', ...style }} dangerouslySetInnerHTML={{ __html: `<svg stroke=\"currentColor\" fill=\"currentColor\" stroke-width=\"0\" viewBox=\"0 0 512 512\" height=\"1em\" width=\"1em\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M326.612 185.391c59.747 59.809 58.927 155.698.36 214.59-.11.12-.24.25-.36.37l-67.2 67.2c-59.27 59.27-155.699 59.262-214.96 0-59.27-59.26-59.27-155.7 0-214.96l37.106-37.106c9.84-9.84 26.786-3.3 27.294 10.606.648 17.722 3.826 35.527 9.69 52.721 1.986 5.822.567 12.262-3.783 16.612l-13.087 13.087c-28.026 28.026-28.905 73.66-1.155 101.96 28.024 28.579 74.086 28.749 102.325.51l67.2-67.19c28.191-28.191 28.073-73.757 0-101.83-3.701-3.694-7.429-6.564-10.341-8.569a16.037 16.037 0 0 1-6.947-12.606c-.396-10.567 3.348-21.456 11.698-29.806l21.054-21.055c5.521-5.521 14.182-6.199 20.584-1.731a152.482 152.482 0 0 1 20.522 17.197zM467.547 44.449c-59.261-59.262-155.69-59.27-214.96 0l-67.2 67.2c-.12.12-.25.25-.36.37-58.566 58.892-59.387 154.781.36 214.59a152.454 152.454 0 0 0 20.521 17.196c6.402 4.468 15.064 3.789 20.584-1.731l21.054-21.055c8.35-8.35 12.094-19.239 11.698-29.806a16.037 16.037 0 0 0-6.947-12.606c-2.912-2.005-6.64-4.875-10.341-8.569-28.073-28.073-28.191-73.639 0-101.83l67.2-67.19c28.239-28.239 74.3-28.069 102.325.51 27.75 28.3 26.872 73.934-1.155 101.96l-13.087 13.087c-4.35 4.35-5.769 10.79-3.783 16.612 5.864 17.194 9.042 34.999 9.69 52.721.509 13.906 17.454 20.446 27.294 10.606l37.106-37.106c59.271-59.259 59.271-155.699.001-214.959z\"></path></svg>` }} />\n );\n};\n\nexport const FaTable = ({ className, size, color, style }) => {\n return (\n <span className={className} style={{ display: 'inline-flex', alignItems: 'center', justifyContent: 'center', fontSize: size || '1em', color: color || 'inherit', ...style }} dangerouslySetInnerHTML={{ __html: `<svg stroke=\"currentColor\" fill=\"currentColor\" stroke-width=\"0\" viewBox=\"0 0 512 512\" height=\"1em\" width=\"1em\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M64 448c-35.3 0-64-28.7-64-64V128c0-35.3 28.7-64 64-64H448c35.3 0 64 28.7 64 64V384c0 35.3-28.7 64-64 64H64zm96-288H64v64h96v-64zm0 96H64v64h96v-64zm0 96H64c0 17.7 14.3 32 32 32h64v-32zm128-192h-96v64h96v-64zm0 96h-96v64h96v-64zm0 96h-96v96h96v-96zm160-192h-96v64h96v-64zm0 96h-96v64h96v-64zm0 96h-96v64h64c17.7 0 32-14.3 32-32v-32z\"></path></svg>` }} />\n );\n};\n\nexport const FaYoutube = ({ className, size, color, style }) => {\n return (\n <span className={className} style={{ display: 'inline-flex', alignItems: 'center', justifyContent: 'center', fontSize: size || '1em', color: color || 'inherit', ...style }} dangerouslySetInnerHTML={{ __html: `<svg stroke=\"currentColor\" fill=\"currentColor\" stroke-width=\"0\" viewBox=\"0 0 576 512\" height=\"1em\" width=\"1em\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M549.655 124.083c-6.281-23.65-24.787-42.276-48.284-48.597C458.781 64 288 64 288 64S117.22 64 74.629 75.486c-23.497 6.322-42.003 24.947-48.284 48.597-11.412 42.867-11.412 132.305-11.412 132.305s0 89.438 11.412 132.305c6.281 23.65 24.787 41.5 48.284 47.821C117.22 448 288 448 288 448s170.781 0 213.371-11.486c23.497-6.321 42.003-24.171 48.284-47.821 11.412-42.867 11.412-132.305 11.412-132.305s0-89.438-11.412-132.305zm-317.51 213.508V175.185l142.739 81.205-142.739 81.201z\"></path></svg>` }} />\n );\n};\n\nexport const FaObjectGroup = ({ className, size, color, style }) => {\n return (\n <span className={className} style={{ display: 'inline-flex', alignItems: 'center', justifyContent: 'center', fontSize: size || '1em', color: color || 'inherit', ...style }} dangerouslySetInnerHTML={{ __html: `<svg stroke=\"currentColor\" fill=\"currentColor\" stroke-width=\"0\" viewBox=\"0 0 512 512\" height=\"1em\" width=\"1em\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M480 320h-48v48c0 17.7-14.3 32-32 32h-48v32c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V160c0-26.5 21.5-48 48-48h32v-48c0-17.7 14.3-32 32-32h48V0h32c26.5 0 48 21.5 48 48v48h48c17.7 0 32 14.3 32 32v48h32c26.5 0 48 21.5 48 48v128c0 26.5-21.5 48-48 48z\"></path></svg>` }} />\n );\n};\n\nexport const FaTrash = ({ className, size, color, style }) => {\n return (\n <span className={className} style={{ display: 'inline-flex', alignItems: 'center', justifyContent: 'center', fontSize: size || '1em', color: color || 'inherit', ...style }} dangerouslySetInnerHTML={{ __html: `<svg stroke=\"currentColor\" fill=\"currentColor\" stroke-width=\"0\" viewBox=\"0 0 448 512\" height=\"1em\" width=\"1em\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M432 32H312l-9.4-18.7A24 24 0 0 0 281.1 0H166.8a23.72 23.72 0 0 0-21.4 13.3L136 32H16A16 16 0 0 0 0 48v32a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16zM53.2 467a48 48 0 0 0 47.9 45h245.8a48 48 0 0 0 47.9-45L416 128H32z\"></path></svg>` }} />\n );\n};\n\n\nexport const FaVideo = ({ className, size, color, style }) => {\n return (\n <span className={className} style={{ display: 'inline-flex', alignItems: 'center', justifyContent: 'center', fontSize: size || '1em', color: color || 'inherit', ...style }} dangerouslySetInnerHTML={{ __html: '<svg stroke=\\\"currentColor\\\" fill=\\\"currentColor\\\" stroke-width=\\\"0\\\" viewBox=\\\"0 0 576 512\\\" height=\\\"1em\\\" width=\\\"1em\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path d=\\\"M0 128C0 92.7 28.7 64 64 64H320c35.3 0 64 28.7 64 64V384c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V128zM559.1 99.8c10.4 5.6 16.9 16.3 16.9 28.2V384c0 11.9-6.5 22.6-16.9 28.2s-23 5-32.9-1.6l-96-64L416 337.1V174.9l14.2-9.5 96-64c9.9-6.6 22.6-7.1 32.9-1.6z\\\"></path></svg>' }} />\n );\n};\n","// Basic ID generator\nexport const getRandomId = () => {\n return (\n Math.random().toString(36).substring(2, 15) +\n Math.random().toString(36).substring(2, 15)\n );\n};\n\n// DraftJS helper stubs\n// Since we are removing specific DraftJS dependencies for this package,\n// these serve as placeholders or basic HTML verifiers.\n\nexport const isValidDraftFormat = (content) => {\n if (typeof content !== \"object\" || content === null) return false;\n return !!(content.blocks && content.entityMap);\n};\n\n// A very basic fallback. Ideally, the user should pass HTML strings.\n// Dealing with full DraftJS->HTML conversion without the library is complex.\n// We assume for this package that if the legacy DraftJS format is passed,\n// the user might need to handle it or we expect HTML primarily.\nexport const draftBlocksToHTML = (content) => {\n console.warn(\n \"draftBlocksToHTML: DraftJS object detected but full conversion is simplified in this package.\",\n );\n // Return empty or try to extract text as a fallback\n if (content && content.blocks) {\n return content.blocks.map((b) => `<p>${b.text}</p>`).join(\"\");\n }\n return \"\";\n};\n","import React from 'react';\n\nconst Spinner = () => {\n return (\n <div className=\"rte-spinner-container\">\n <div className=\"rte-spinner\"></div>\n </div>\n );\n};\n\nexport default Spinner;\n","import React from 'react';\n\nconst LabelComponent = ({ children }) => {\n if (!children) return null;\n return (\n <label className=\"rte-label\" style={{ marginBottom: '4px', display: 'block' }}>\n {children}\n </label>\n );\n};\n\nexport default LabelComponent;\n","function styleInject(css, ref) {\n if ( ref === void 0 ) ref = {};\n var insertAt = ref.insertAt;\n\n if (!css || typeof document === 'undefined') { return; }\n\n var head = document.head || document.getElementsByTagName('head')[0];\n var style = document.createElement('style');\n style.type = 'text/css';\n\n if (insertAt === 'top') {\n if (head.firstChild) {\n head.insertBefore(style, head.firstChild);\n } else {\n head.appendChild(style);\n }\n } else {\n head.appendChild(style);\n }\n\n if (style.styleSheet) {\n style.styleSheet.cssText = css;\n } else {\n style.appendChild(document.createTextNode(css));\n }\n}\n\nexport default styleInject;\n","import React, { useCallback, useEffect, useRef, useState } from \"react\";\nimport { FaImage, FaBold, FaItalic, FaUnderline, FaTextHeight, FaAlignCenter, FaAlignRight, FaAlignJustify, FaAlignLeft, FaListOl, FaListUl, FaFont, FaLink, FaTable, FaYoutube, FaVideo, FaTrash, FaObjectGroup } from \"./icons\";\nimport { draftBlocksToHTML, isValidDraftFormat } from \"./utils\";\nimport Spinner from \"./Spinner\";\nimport LabelComponent from \"./Label\";\nimport \"./RichTextEditor.css\";\n\n// Helper functions for HTML escaping\nconst escapeHtml = (str) => {\n if (!str) return \"\";\n return String(str)\n .replace(/&/g, \"&\")\n .replace(/</g, \"<\")\n .replace(/>/g, \">\")\n .replace(/\\\"/g, \""\")\n .replace(/'/g, \"'\");\n};\n\nconst escapeAttr = (str) => escapeHtml(str).replace(/\"/g, \""\");\n\n// URL detection regex\nconst URL_REGEX = /(https?:\\/\\/[^\\s]+)/g;\n\nconst rectsIntersect = (a, b) =>\n !(a.right < b.left || a.left > b.right || a.bottom < b.top || a.top > b.bottom);\n\nconst caretRangeFromClientPoint = (x, y) => {\n if (document.caretRangeFromPoint) {\n return document.caretRangeFromPoint(x, y);\n }\n const position = document.caretPositionFromPoint?.(x, y);\n if (!position) return null;\n const range = document.createRange();\n range.setStart(position.offsetNode, position.offset);\n range.collapse(true);\n return range;\n};\n\nconst clipRectToBounds = (rect, bounds) => {\n const left = Math.max(rect.left, bounds.left);\n const top = Math.max(rect.top, bounds.top);\n const right = Math.min(rect.right, bounds.right);\n const bottom = Math.min(rect.bottom, bounds.bottom);\n return {\n left,\n top,\n right,\n bottom,\n width: Math.max(0, right - left),\n height: Math.max(0, bottom - top),\n };\n};\n\nconst BLOCK_SELECTOR =\n \"h1, h2, h3, h4, h5, h6, p, blockquote, li, td, th, div:not(.rte-area-highlight-block):not(.image-container):not(.video-container):not(.image-media-frame)\";\n\nconst getIntersectingBlocks = (editor, clientRect) => {\n const candidates = [...editor.querySelectorAll(BLOCK_SELECTOR)].filter((el) => {\n if (el === editor || !editor.contains(el)) return false;\n if (el.closest(\".rte-area-highlight-block, .image-container, .video-container\")) {\n return false;\n }\n return rectsIntersect(el.getBoundingClientRect(), clientRect);\n });\n\n return candidates.filter(\n (el) => !candidates.some((other) => other !== el && other.contains(el))\n );\n};\n\nconst insertAreaHighlightRegion = (editor, clientRect, color) => {\n const editorRect = editor.getBoundingClientRect();\n const clipped = clipRectToBounds(clientRect, editorRect);\n const widthPx = Math.max(40, Math.round(clipped.width));\n const heightPx = Math.max(24, Math.round(clipped.height));\n\n const region = document.createElement(\"div\");\n region.className = \"rte-area-highlight-block\";\n region.style.backgroundColor = color;\n region.style.minHeight = `${heightPx}px`;\n region.style.width = `${widthPx}px`;\n region.style.maxWidth = \"100%\";\n region.style.boxSizing = \"border-box\";\n region.style.padding = \"12px\";\n region.style.borderRadius = \"4px\";\n region.style.margin = \"8px 0\";\n region.style.display = \"block\";\n\n const blocks = getIntersectingBlocks(editor, clipped);\n\n if (blocks.length > 0) {\n const first = blocks[0];\n if (first.parentNode) {\n first.parentNode.insertBefore(region, first);\n } else {\n editor.appendChild(region);\n }\n\n blocks.forEach((block) => {\n block.style.backgroundColor = \"\";\n block.style.borderRadius = \"\";\n region.appendChild(block);\n });\n return true;\n }\n\n const insertRange =\n caretRangeFromClientPoint(\n clipped.left + clipped.width / 2,\n clipped.top + Math.min(8, clipped.height / 2)\n ) ||\n caretRangeFromClientPoint(clipped.left + 4, clipped.top + 4);\n\n region.innerHTML = \" \";\n\n if (insertRange && editor.contains(insertRange.startContainer)) {\n insertRange.collapse(true);\n let node = insertRange.startContainer;\n if (node.nodeType === 3) node = node.parentNode;\n\n while (node && node !== editor && node.parentNode !== editor) {\n node = node.parentNode;\n }\n\n if (node && node !== editor && editor.contains(node)) {\n node.parentNode.insertBefore(region, node);\n } else {\n editor.appendChild(region);\n }\n } else {\n editor.appendChild(region);\n }\n\n return true;\n};\n\nconst getClientRectFromDrag = (startX, startY, currentX, currentY) => {\n const left = Math.min(startX, currentX);\n const top = Math.min(startY, currentY);\n const right = Math.max(startX, currentX);\n const bottom = Math.max(startY, currentY);\n return {\n left,\n top,\n right,\n bottom,\n width: right - left,\n height: bottom - top,\n };\n};\n\nexport default function RichTextEditor({\n onChange,\n showEditButton,\n onBlur,\n disabled = false,\n editable: initialEditable = true,\n value,\n isLoading,\n isList = false,\n label,\n placeholder = \"Type here...\",\n showBorder = true,\n paddingLeft,\n minHeight,\n maxHeight,\n onImageUpload,\n}) {\n\n const editorRef = useRef(null);\n const contentWrapperRef = useRef(null);\n const fileInputRef = useRef(null);\n const scrollTopRef = useRef(0);\n const areaDragRef = useRef(null);\n const bgColorRef = useRef(\"#ffff00\");\n\n const [html, setHtml] = useState(\"\");\n const [linkModalOpen, setLinkModalOpen] = useState(false);\n const [linkUrl, setLinkUrl] = useState(\"\");\n const [linkText, setLinkText] = useState(\"\");\n const selectionRangeRef = useRef(null);\n const [editable, setEditable] = useState(initialEditable);\n const [editorFocused, setEditorFocused] = useState(false);\n const lastSynchronizedHtmlRef = useRef(\"\");\n const syncProcessedMediaRef = useRef(() => {});\n\n useEffect(() => {\n setEditable(initialEditable);\n }, [initialEditable]);\n\n\n // NEW: Track current list type for dropdown\n const [currentListType, setCurrentListType] = useState(null);\n\n // NEW: Track active styles for toolbar buttons\n const [isBold, setIsBold] = useState(false);\n const [isItalic, setIsItalic] = useState(false);\n const [isUnderline, setIsUnderline] = useState(false);\n\n // NEW: Track current font size\n const [currentFontSize, setCurrentFontSize] = useState(\"16\");\n\n // NEW: Track current line height\n const [currentLineHeight, setCurrentLineHeight] = useState(\"\");\n const [activeAlign, setActiveAlign] = useState(null);\n const [currentBlockFormat, setCurrentBlockFormat] = useState(\"div\");\n\n const [imageModalOpen, setImageModalOpen] = useState(false);\n const [selectedImageUrl, setSelectedImageUrl] = useState(\"\");\n const [zoomLevel, setZoomLevel] = useState(1);\n const [isUploading, setIsUploading] = useState(false);\n\n const [videoModalOpen, setVideoModalOpen] = useState(false);\n const [videoUrl, setVideoUrl] = useState(\"\");\n const [tableModalOpen, setTableModalOpen] = useState(false);\n const [hoveredTable, setHoveredTable] = useState(null);\n const [tableRows, setTableRows] = useState(3);\n const [tableCols, setTableCols] = useState(3);\n const [selectionVersion, setSelectionVersion] = useState(0);\n\n const [selectedMedia, setSelectedMedia] = useState(null);\n const [mediaWidthInput, setMediaWidthInput] = useState(\"100\");\n const [mediaWidthUnit, setMediaWidthUnit] = useState(\"%\");\n const [metrics, setMetrics] = useState({ words: 0, chars: 0 });\n const [isEmpty, setIsEmpty] = useState(!value);\n const [areaHighlightMode, setAreaHighlightMode] = useState(false);\n const [marqueePreview, setMarqueePreview] = useState(null);\n\n const updateMetrics = useCallback(() => {\n if (!editorRef.current) return;\n // Calculate metrics immediately but outside of render path\n const text = editorRef.current.innerText || \"\";\n const cleanText = text.replace(/[\\n\\r]/g, ' ').trim();\n const words = cleanText ? cleanText.split(/\\s+/).length : 0;\n const chars = text.length;\n setMetrics({ words, chars });\n\n // Track emptiness for the placeholder. Account for media-only content.\n const stripped = text.replace(/[\\u200B\\u00A0\\s]/g, \"\");\n const hasMedia = !!editorRef.current.querySelector(\"img, table, iframe\");\n setIsEmpty(stripped.length === 0 && !hasMedia);\n }, []);\n\n const openImageModal = (url) => {\n\n if (editorRef.current) {\n scrollTopRef.current = editorRef.current.scrollTop;\n }\n setSelectedImageUrl(url);\n setImageModalOpen(true);\n };\n\n const closeImageModal = () => {\n setImageModalOpen(false);\n setSelectedImageUrl(\"\");\n setZoomLevel(1);\n };\n\n const saveSelection = () => {\n if (typeof window === \"undefined\") return;\n const sel = window.getSelection();\n if (sel && sel.rangeCount > 0) {\n selectionRangeRef.current = sel.getRangeAt(0).cloneRange();\n }\n };\n\n const handleKeyUp = () => {\n saveSelection();\n setSelectionVersion(v => v + 1);\n };\n\n const handleZoomIn = () => {\n setZoomLevel((prevZoom) => prevZoom + 0.1);\n };\n\n const handleZoomOut = () => {\n setZoomLevel((prevZoom) => Math.max(0.1, prevZoom - 0.1));\n };\n\n // Effect to restore scroll position after modal closes\n useEffect(() => {\n if (!imageModalOpen && editorRef.current) {\n editorRef.current.scrollTop = scrollTopRef.current;\n }\n }, [imageModalOpen]);\n\n useEffect(() => {\n if (!imageModalOpen) return;\n\n const handleKeyDown = (e) => {\n if (e.key === 'Escape') {\n closeImageModal();\n }\n };\n\n const handleWheel = (e) => {\n if (e.ctrlKey) {\n e.preventDefault();\n if (e.deltaY < 0) {\n handleZoomIn();\n } else {\n handleZoomOut();\n }\n }\n };\n\n document.addEventListener('keydown', handleKeyDown);\n window.addEventListener('wheel', handleWheel, { passive: false });\n\n return () => {\n document.removeEventListener('keydown', handleKeyDown);\n window.removeEventListener('wheel', handleWheel);\n };\n }, [imageModalOpen]);\n\n useEffect(() => {\n if (editorRef.current && value && value !== lastSynchronizedHtmlRef.current) {\n requestAnimationFrame(() => syncProcessedMediaRef.current(editorRef.current));\n }\n }, [value]);\n\n\n useEffect(() => {\n if (!editable) {\n setEditorFocused(false);\n clearMediaSelection();\n }\n syncProcessedMediaRef.current(editorRef.current);\n }, [editable]);\n\n useEffect(() => {\n if (!editorRef.current) return;\n editorRef.current.querySelectorAll(\".image-container, .video-container\").forEach((container) => {\n updateMediaControlVisibility(container);\n });\n }, [editorFocused, editable]);\n\n useEffect(() => {\n // Only update if value is different from our last known synced state\n if (value && value !== lastSynchronizedHtmlRef.current) {\n try {\n let newContent = \"\";\n \n // Check if value is a Draft.js content state\n if (isValidDraftFormat(value)) {\n newContent = draftBlocksToHTML(value);\n } else if (typeof value === 'string') {\n // If value is already what we have in HTML state, skip unescaping\n if (value === html) {\n lastSynchronizedHtmlRef.current = value;\n return;\n }\n newContent = unescapeHtml(value);\n }\n\n if (newContent && newContent !== html) {\n lastSynchronizedHtmlRef.current = value;\n setHtml(newContent);\n if (editorRef.current && editorRef.current.innerHTML !== newContent) {\n editorRef.current.innerHTML = newContent;\n }\n requestAnimationFrame(() => syncProcessedMediaRef.current(editorRef.current));\n updateMetrics();\n }\n } catch (e) {\n console.error('Error processing editor content:', e);\n }\n } else if (!value && html) {\n setHtml('');\n lastSynchronizedHtmlRef.current = \"\";\n if (editorRef.current) {\n editorRef.current.innerHTML = '';\n updateMetrics();\n }\n }\n }, [value, initialEditable, updateMetrics]);\n\n const LIST_BLOCK_MEDIA_SELECTOR = \".video-container, .image-container, table\";\n\n const isListItemEffectivelyEmpty = (listItem) => {\n if (!listItem) return true;\n const clone = listItem.cloneNode(true);\n clone.querySelectorAll(LIST_BLOCK_MEDIA_SELECTOR).forEach((el) => el.remove());\n clone.querySelectorAll(\"br\").forEach((el) => el.remove());\n return clone.textContent.replace(/[\\u200B\\u00A0\\s]/g, \"\").length === 0;\n };\n\n const hoistBlockMediaOutOfListItems = (container) => {\n if (!container) return false;\n\n let changed = false;\n container.querySelectorAll(\"ol, ul\").forEach((list) => {\n const items = Array.from(list.children).filter((child) => child.tagName === \"LI\");\n\n items.forEach((listItem) => {\n const blockMedia = Array.from(listItem.querySelectorAll(LIST_BLOCK_MEDIA_SELECTOR));\n if (blockMedia.length === 0) return;\n\n const hadText = !isListItemEffectivelyEmpty(listItem);\n\n blockMedia.forEach((media) => {\n listItem.removeChild(media);\n if (list.parentNode) {\n list.parentNode.insertBefore(media, list.nextSibling);\n }\n changed = true;\n });\n\n if (!hadText || isListItemEffectivelyEmpty(listItem)) {\n listItem.remove();\n changed = true;\n }\n });\n\n if (list.children.length === 0 && list.parentNode) {\n list.remove();\n changed = true;\n }\n });\n\n return changed;\n };\n\n const processExistingMedia = (container) => {\n if (!container) return false;\n processExistingImages(container);\n processExistingVideos(container);\n return hoistBlockMediaOutOfListItems(container);\n };\n\n const getCleanHtml = () => {\n if (!editorRef.current) return \"\";\n const clone = editorRef.current.cloneNode(true);\n stripEditorChrome(clone);\n return clone.innerHTML;\n };\n\n // Trigger change manually\n const triggerChange = useCallback(() => {\n const next = getCleanHtml();\n setHtml(next);\n lastSynchronizedHtmlRef.current = next;\n onChange && onChange(next);\n }, [onChange]);\n\n syncProcessedMediaRef.current = (container) => {\n if (processExistingMedia(container)) {\n triggerChange();\n }\n };\n\n const handleChange = () => {\n if (!editorRef.current) return;\n onBlur && onBlur(getCleanHtml());\n };\n\n // Detect if selection is inside a list (ol or ul)\n const detectListType = () => {\n const sel = window.getSelection();\n if (!sel || !sel.rangeCount) {\n setCurrentListType(null);\n return;\n }\n let node = sel.anchorNode;\n while (node && node !== editorRef.current) {\n if (node.nodeName === \"OL\") {\n setCurrentListType(\"ordered\");\n return;\n }\n if (node.nodeName === \"UL\") {\n setCurrentListType(\"unordered\");\n return;\n }\n node = node.parentNode;\n }\n setCurrentListType(null);\n };\n\n // Helper to walk up DOM to find style tags or CSS style:\n const isParentStyle = (node, ...tagNames) => {\n while (node && node !== editorRef.current) {\n if (node.nodeType === 1 && tagNames.includes(node.tagName)) return true;\n\n // Also check inline style for bold and italic:\n if (node.nodeType === 1 && node.style) {\n const style = node.style;\n if (\n tagNames.includes(\"bold\") &&\n (style.fontWeight === \"bold\" || Number(style.fontWeight) >= 600)\n )\n return true;\n if (tagNames.includes(\"italic\") && style.fontStyle === \"italic\")\n return true;\n if (\n tagNames.includes(\"underline\") &&\n style.textDecoration.includes(\"underline\")\n )\n return true;\n\n if (node.style && node.style.color) {\n return node.style.color;\n }\n\n // 2️⃣ Check for <font color=\"\"> (older HTML)\n if (node.tagName === \"FONT\" && node.getAttribute(\"color\")) {\n return node.getAttribute(\"color\");\n }\n }\n node = node.parentNode;\n }\n return false;\n };\n\n // Update style states based on selection or cursor position\n const updateStyleStates = () => {\n const sel = window.getSelection();\n if (!sel || !sel.rangeCount) {\n setIsBold(false);\n setIsItalic(false);\n setIsUnderline(false);\n setFontColor(\"#000000\");\n setBgColor(\"#ffff00\");\n return;\n }\n const container =\n sel.anchorNode.nodeType === 3\n ? sel.anchorNode.parentNode\n : sel.anchorNode;\n\n const computedAlign = window.getComputedStyle(container).textAlign;\n setActiveAlign(computedAlign);\n const range = sel.getRangeAt(0);\n\n if (range.collapsed) {\n // Cursor only, check parent nodes\n const container =\n sel.anchorNode.nodeType === 3\n ? sel.anchorNode.parentNode\n : sel.anchorNode;\n const computedStyles = window.getComputedStyle(container);\n setIsBold(isParentStyle(container, \"B\", \"STRONG\", \"bold\"));\n setIsItalic(isParentStyle(container, \"I\", \"EM\", \"italic\"));\n setIsUnderline(isParentStyle(container, \"U\", \"underline\"));\n\n // ✅ Get computed color from container\n const computedColor = window.getComputedStyle(container).color;\n setFontColor(rgbToHex(computedColor));\n setBgColor(getBackgroundColorAtCursor());\n\n } else {\n // Text selected, use execCommand state\n setIsBold(document.queryCommandState(\"bold\"));\n setIsItalic(document.queryCommandState(\"italic\"));\n setIsUnderline(document.queryCommandState(\"underline\"));\n\n // ✅ For selection, get color from selection's start container\n const container =\n sel.anchorNode.nodeType === 3\n ? sel.anchorNode.parentNode\n : sel.anchorNode;\n\n const computedColor = window.getComputedStyle(container).color;\n setFontColor(rgbToHex(computedColor));\n setBgColor(getBackgroundColorAtCursor());\n }\n };\n\n // Helper to convert rgb() to hex\n function rgbToHex(rgb) {\n const result = rgb.match(/\\d+/g);\n if (!result) return \"#000000\";\n return (\n \"#\" +\n result\n .slice(0, 3)\n .map((x) => {\n const hex = parseInt(x, 10).toString(16);\n return hex.length === 1 ? \"0\" + hex : hex;\n })\n .join(\"\")\n );\n }\n\n const getColorAtCursor = () => {\n const sel = window.getSelection();\n if (!sel || !sel.rangeCount || !editorRef.current) return null;\n\n let node = sel.anchorNode;\n if (node.nodeType === 3) node = node.parentNode;\n\n while (node && node !== editorRef.current) {\n if (node.nodeType === 1) {\n if (node.style && node.style.color) {\n return rgbToHex(node.style.color);\n }\n if (node.tagName === \"FONT\" && node.getAttribute(\"color\")) {\n return node.getAttribute(\"color\");\n }\n }\n node = node.parentNode;\n }\n\n const computedColor = window.getComputedStyle(\n sel.anchorNode.nodeType === 3 ? sel.anchorNode.parentNode : sel.anchorNode\n ).color;\n return rgbToHex(computedColor);\n };\n\n const getBackgroundColorAtCursor = () => {\n const sel = window.getSelection();\n if (!sel || !sel.rangeCount || !editorRef.current) return \"#ffff00\";\n\n let node = sel.anchorNode;\n if (node.nodeType === 3) node = node.parentNode;\n\n while (node && node !== editorRef.current) {\n if (node.nodeType === 1 && node.style?.backgroundColor) {\n const bg = node.style.backgroundColor;\n if (bg && bg !== \"transparent\" && bg !== \"rgba(0, 0, 0, 0)\") {\n return rgbToHex(bg);\n }\n }\n node = node.parentNode;\n }\n\n const computedBg = window.getComputedStyle(\n sel.anchorNode.nodeType === 3 ? sel.anchorNode.parentNode : sel.anchorNode\n ).backgroundColor;\n\n if (\n !computedBg ||\n computedBg === \"transparent\" ||\n computedBg === \"rgba(0, 0, 0, 0)\"\n ) {\n return \"#ffff00\";\n }\n return rgbToHex(computedBg);\n };\n\n const stripEditorChrome = (root) => {\n root.querySelectorAll(\n \".image-delete-button, .video-delete-button, .video-edit-overlay, .media-resize-handle\"\n ).forEach((element) => element.remove());\n root.querySelectorAll(\".rte-media-selected\").forEach((element) => {\n element.classList.remove(\"rte-media-selected\");\n });\n return root;\n };\n\n const getEditorInnerWidth = () => {\n if (!editorRef.current) return 800;\n return Math.max(editorRef.current.clientWidth - 24, 200);\n };\n\n const ensureImageMediaFrame = (imageContainer) => {\n if (!imageContainer) return null;\n\n let frame = imageContainer.querySelector(\":scope > .image-media-frame\");\n if (frame) return frame;\n\n frame = document.createElement(\"div\");\n frame.className = \"image-media-frame\";\n\n const children = Array.from(imageContainer.children);\n imageContainer.appendChild(frame);\n children.forEach((child) => frame.appendChild(child));\n\n return frame;\n };\n\n const getImageMediaTarget = (imageContainer) =>\n ensureImageMediaFrame(imageContainer) || imageContainer;\n\n const getMediaWidthPercent = (container) => {\n if (!container) return 100;\n if (container.dataset.widthPercent) {\n return Number(container.dataset.widthPercent);\n }\n const width = container.style.width || \"\";\n if (width.endsWith(\"%\")) {\n return parseInt(width, 10) || 100;\n }\n const editorWidth = getEditorInnerWidth();\n const rect = container.getBoundingClientRect();\n if (editorWidth > 0 && rect.width > 0) {\n return Math.round((rect.width / editorWidth) * 100);\n }\n return 100;\n };\n\n const getMediaWidthPx = (container) => {\n if (!container) return 0;\n if (container.dataset.widthPx) {\n return Number(container.dataset.widthPx);\n }\n const width = container.style.width || \"\";\n if (width.endsWith(\"px\")) {\n return parseInt(width, 10) || 0;\n }\n return Math.round(container.getBoundingClientRect().width);\n };\n\n const syncMediaWidthControls = (container) => {\n if (!container) return;\n if (container.dataset.widthPx) {\n setMediaWidthInput(String(getMediaWidthPx(container)));\n setMediaWidthUnit(\"px\");\n return;\n }\n setMediaWidthInput(String(getMediaWidthPercent(container)));\n setMediaWidthUnit(\"%\");\n };\n\n const applyMediaWidthPercent = (container, percent) => {\n if (!container) return;\n const clamped = Math.max(10, Math.min(100, Math.round(percent)));\n delete container.dataset.widthPx;\n container.dataset.widthPercent = String(clamped);\n container.style.width = `${clamped}%`;\n container.style.maxWidth = \"100%\";\n container.style.marginLeft = \"\";\n container.style.marginTop = \"\";\n\n if (container.classList.contains(\"video-container\")) {\n container.style.height = \"0\";\n container.style.paddingBottom = \"56.25%\";\n return;\n }\n\n const frame = getImageMediaTarget(container);\n if (!frame) return;\n frame.style.width = \"100%\";\n frame.style.height = \"\";\n const img = frame.querySelector(\"img\");\n if (img) {\n img.style.height = \"auto\";\n img.style.objectFit = \"\";\n }\n };\n\n const applyMediaWidthPx = (container, px) => {\n if (!container) return;\n const clamped = Math.max(20, Math.min(2000, Math.round(px)));\n delete container.dataset.widthPercent;\n container.dataset.widthPx = String(clamped);\n container.style.width = `${clamped}px`;\n container.style.maxWidth = \"100%\";\n container.style.marginLeft = \"\";\n container.style.marginTop = \"\";\n\n if (container.classList.contains(\"video-container\")) {\n container.style.height = \"0\";\n container.style.paddingBottom = \"56.25%\";\n return;\n }\n\n const frame = getImageMediaTarget(container);\n if (!frame) return;\n frame.style.width = \"100%\";\n frame.style.height = \"\";\n const img = frame.querySelector(\"img\");\n if (img) {\n img.style.height = \"auto\";\n img.style.objectFit = \"\";\n }\n };\n\n const normalizeMediaWidth = (container) => {\n if (!container) return;\n if (container.dataset.widthPx) {\n applyMediaWidthPx(container, Number(container.dataset.widthPx));\n return;\n }\n if (container.classList.contains(\"image-small\")) {\n container.classList.remove(\"image-small\");\n applyMediaWidthPercent(container, 50);\n return;\n }\n if (container.dataset.widthPercent) {\n applyMediaWidthPercent(container, Number(container.dataset.widthPercent));\n return;\n }\n const width = container.style.width || \"\";\n if (width.endsWith(\"%\")) {\n applyMediaWidthPercent(container, parseInt(width, 10) || 100);\n return;\n }\n if (width.endsWith(\"px\")) {\n applyMediaWidthPx(container, parseFloat(width));\n return;\n }\n if (container.classList.contains(\"video-container\")) {\n applyMediaWidthPercent(container, 100);\n }\n };\n\n const clearMediaSelection = () => {\n editorRef.current?.querySelectorAll(\".rte-media-selected\").forEach((element) => {\n element.classList.remove(\"rte-media-selected\");\n });\n setSelectedMedia(null);\n };\n\n const selectMediaContainer = (container) => {\n if (!container || !editorRef.current?.contains(container)) return;\n editorRef.current.querySelectorAll(\".rte-media-selected\").forEach((element) => {\n element.classList.remove(\"rte-media-selected\");\n });\n container.classList.add(\"rte-media-selected\");\n setSelectedMedia(container);\n };\n\n const attachMediaResizeHandle = (container) => {\n if (!container) return;\n const resizeTarget = container.classList.contains(\"video-container\")\n ? container\n : getImageMediaTarget(container);\n if (!resizeTarget) return;\n\n resizeTarget.querySelector(\".media-resize-handle\")?.remove();\n\n const handle = document.createElement(\"div\");\n handle.className = \"media-resize-handle\";\n handle.title = \"Drag to resize\";\n handle.setAttribute(\"contenteditable\", \"false\");\n\n handle.addEventListener(\"mousedown\", (event) => {\n if (!editable) return;\n event.preventDefault();\n event.stopPropagation();\n selectMediaContainer(container);\n\n const editorWidth = getEditorInnerWidth();\n const startX = event.clientX;\n const startWidth = container.getBoundingClientRect().width;\n\n const onMouseMove = (moveEvent) => {\n const nextWidth = Math.max(60, startWidth + (moveEvent.clientX - startX));\n if (container.dataset.widthPx) {\n applyMediaWidthPx(container, nextWidth);\n } else {\n const percent = Math.round((nextWidth / editorWidth) * 100);\n applyMediaWidthPercent(container, percent);\n }\n };\n\n const onMouseUp = () => {\n document.removeEventListener(\"mousemove\", onMouseMove);\n document.removeEventListener(\"mouseup\", onMouseUp);\n syncMediaWidthControls(container);\n setSelectionVersion((v) => v + 1);\n triggerChange();\n };\n\n document.addEventListener(\"mousemove\", onMouseMove);\n document.addEventListener(\"mouseup\", onMouseUp);\n });\n\n resizeTarget.appendChild(handle);\n };\n\n const handleEditorFocus = () => {\n setEditorFocused(true);\n };\n\n const handleEditorBlur = () => {\n requestAnimationFrame(() => {\n if (!editorRef.current?.contains(document.activeElement)) {\n setEditorFocused(false);\n }\n });\n };\n\n const updateMediaControlVisibility = (container) => {\n const handle = container.querySelector(\".media-resize-handle\");\n if (handle instanceof HTMLElement) {\n handle.style.display = editable ? \"block\" : \"none\";\n handle.style.pointerEvents = editable ? \"auto\" : \"none\";\n }\n };\n\n const BLOCK_TAGS = [\"P\", \"DIV\", \"H1\", \"H2\", \"H3\", \"BLOCKQUOTE\", \"LI\"];\n\n const getActiveBlock = (node) => {\n if (!editorRef.current || !node) return null;\n let current = node.nodeType === 3 ? node.parentNode : node;\n\n while (current && current !== editorRef.current) {\n if (current.nodeType === 1 && BLOCK_TAGS.includes(current.tagName)) {\n return current;\n }\n current = current.parentNode;\n }\n\n return editorRef.current;\n };\n\n const getBlockFormat = (node) => {\n const block = getActiveBlock(node);\n if (!block || block === editorRef.current) return \"div\";\n const tag = block.tagName.toLowerCase();\n return tag === \"p\" || tag === \"li\" ? \"div\" : tag;\n };\n\n const createMediaDeleteButton = (title, className, onRemove) => {\n const deleteBtn = document.createElement(\"button\");\n deleteBtn.type = \"button\";\n deleteBtn.innerHTML = \"×\";\n deleteBtn.className = className;\n deleteBtn.title = title;\n deleteBtn.setAttribute(\"contenteditable\", \"false\");\n deleteBtn.onclick = (event) => {\n event.preventDefault();\n event.stopPropagation();\n onRemove();\n };\n return deleteBtn;\n };\n\n\n // Listen for selection changes globally to update styles and list type in one pass\n useEffect(() => {\n const handleGlobalSelectionSync = () => {\n // Only sync if the editor has focus\n const sel = window.getSelection();\n if (!sel || !sel.rangeCount || !editorRef.current?.contains(sel.anchorNode)) {\n return;\n }\n\n // 1. Detect List Type\n let node = sel.anchorNode;\n let listFound = null;\n while (node && node !== editorRef.current) {\n if (node.nodeName === \"OL\") { listFound = \"ordered\"; break; }\n if (node.nodeName === \"UL\") { listFound = \"unordered\"; break; }\n node = node.parentNode;\n }\n setCurrentListType(listFound);\n\n // 2. Update Style States\n const container = sel.anchorNode.nodeType === 3 ? sel.anchorNode.parentNode : sel.anchorNode;\n const computedAlign = window.getComputedStyle(container).textAlign;\n setActiveAlign(computedAlign);\n \n const range = sel.getRangeAt(0);\n if (range.collapsed) {\n setIsBold(isParentStyle(container, \"B\", \"STRONG\", \"bold\"));\n setIsItalic(isParentStyle(container, \"I\", \"EM\", \"italic\"));\n setIsUnderline(isParentStyle(container, \"U\", \"underline\"));\n const computedColor = window.getComputedStyle(container).color;\n setFontColor(rgbToHex(computedColor));\n } else {\n setIsBold(document.queryCommandState(\"bold\"));\n setIsItalic(document.queryCommandState(\"italic\"));\n setIsUnderline(document.queryCommandState(\"underline\"));\n const computedColor = window.getComputedStyle(container).color;\n setFontColor(rgbToHex(computedColor));\n }\n\n // 3. Current Font Size\n const element = range.startContainer.parentElement.closest('[style*=\"font-size\"]');\n if (element) {\n const fontSize = window.getComputedStyle(element).fontSize;\n const sizeValue = fontSize ? parseInt(fontSize) : 16;\n setCurrentFontSize(sizeValue.toString());\n } else {\n setCurrentFontSize(\"16\");\n }\n\n setCurrentBlockFormat(getBlockFormat(sel.anchorNode));\n };\n\n document.addEventListener(\"selectionchange\", handleGlobalSelectionSync);\n return () => {\n document.removeEventListener(\"selectionchange\", handleGlobalSelectionSync);\n };\n }, []);\n\n\n const focus = () => editorRef.current && editorRef.current.focus();\n\n const exec = (command, value = null) => {\n document.execCommand(command, false, value);\n triggerChange();\n focus();\n };\n\n const [fontColor, setFontColor] = useState(\"#000000\");\n const [bgColor, setBgColor] = useState(\"#ffff00\");\n\n useEffect(() => {\n bgColorRef.current = bgColor;\n }, [bgColor]);\n\n const getActiveTextColor = () => getColorAtCursor() || fontColor;\n\n const restoreSavedSelection = () => {\n if (!selectionRangeRef.current) return;\n const sel = window.getSelection();\n if (!sel) return;\n sel.removeAllRanges();\n sel.addRange(selectionRangeRef.current);\n };\n\n const applyTextColor = (color) => {\n setFontColor(color);\n focus();\n restoreSavedSelection();\n document.execCommand(\"styleWithCSS\", false, true);\n document.execCommand(\"foreColor\", false, color);\n document.execCommand(\"styleWithCSS\", false, false);\n triggerChange();\n };\n\n const applyBackgroundColor = (color) => {\n setBgColor(color);\n focus();\n restoreSavedSelection();\n document.execCommand(\"styleWithCSS\", false, true);\n if (!document.execCommand(\"hiliteColor\", false, color)) {\n document.execCommand(\"backColor\", false, color);\n }\n document.execCommand(\"styleWithCSS\", false, false);\n triggerChange();\n };\n\n const applyMarqueeHighlight = useCallback((clientRect, color) => {\n const editor = editorRef.current;\n if (!editor || clientRect.width < 10 || clientRect.height < 10) {\n return;\n }\n\n editor.focus();\n\n const editorRect = editor.getBoundingClientRect();\n const clippedRect = clipRectToBounds(clientRect, editorRect);\n if (clippedRect.width < 10 || clippedRect.height < 10) {\n return;\n }\n\n insertAreaHighlightRegion(editor, clippedRect, color);\n\n editor.querySelectorAll(\"td, th\").forEach((cell) => {\n if (!editor.contains(cell)) return;\n if (cell.closest(\".rte-area-highlight-block\")) return;\n if (rectsIntersect(cell.getBoundingClientRect(), clippedRect)) {\n cell.style.backgroundColor = color;\n }\n });\n\n editor.querySelectorAll(\".image-container, .video-container\").forEach((media) => {\n if (!editor.contains(media)) return;\n if (rectsIntersect(media.getBoundingClientRect(), clippedRect)) {\n media.style.backgroundColor = color;\n media.style.padding = \"4px\";\n media.style.borderRadius = \"4px\";\n }\n });\n\n updateMetrics();\n triggerChange();\n focus();\n }, [triggerChange, updateMetrics]);\n\n const handleAreaSelectMouseDown = useCallback((e) => {\n if (!areaHighlightMode || !editable || disabled) return;\n if (e.button !== 0) return;\n if (e.target.closest(\".rte-toolbar, .rte-media-toolbar, .rte-modal-overlay\")) return;\n\n e.preventDefault();\n e.stopPropagation();\n\n const wrapper = contentWrapperRef.current;\n if (!wrapper) return;\n\n const wrapperRect = wrapper.getBoundingClientRect();\n areaDragRef.current = {\n startX: e.clientX,\n startY: e.clientY,\n currentX: e.clientX,\n currentY: e.clientY,\n wrapperRect,\n };\n\n const updatePreview = (clientX, clientY) => {\n const drag = areaDragRef.current;\n if (!drag) return;\n\n drag.currentX = clientX;\n drag.currentY = clientY;\n\n const rect = getClientRectFromDrag(\n drag.startX,\n drag.startY,\n drag.currentX,\n drag.currentY\n );\n\n setMarqueePreview({\n left: rect.left - drag.wrapperRect.left,\n top: rect.top - drag.wrapperRect.top,\n width: rect.width,\n height: rect.height,\n });\n };\n\n const onMove = (ev) => {\n ev.preventDefault();\n updatePreview(ev.clientX, ev.clientY);\n };\n\n const onUp = (ev) => {\n document.removeEventListener(\"mousemove\", onMove);\n document.removeEventListener(\"mouseup\", onUp);\n\n const drag = areaDragRef.current;\n areaDragRef.current = null;\n setMarqueePreview(null);\n\n if (!drag) return;\n\n const clientRect = getClientRectFromDrag(\n drag.startX,\n drag.startY,\n ev.clientX,\n ev.clientY\n );\n\n requestAnimationFrame(() => {\n applyMarqueeHighlight(clientRect, bgColorRef.current);\n });\n };\n\n document.addEventListener(\"mousemove\", onMove);\n document.addEventListener(\"mouseup\", onUp);\n updatePreview(e.clientX, e.clientY);\n }, [areaHighlightMode, editable, disabled, applyMarqueeHighlight]);\n\n const addLink = () => {\n const sel = window.getSelection();\n if (!sel || sel.rangeCount === 0) return;\n\n selectionRangeRef.current = sel.getRangeAt(0).cloneRange();\n\n const selectedText = sel.toString();\n\n if (selectedText.length > 0) {\n setLinkText(selectedText);\n setLinkUrl(\"\");\n setLinkModalOpen(true);\n } else {\n setLinkText(\"\");\n setLinkUrl(\"\");\n setLinkModalOpen(true);\n }\n };\n\n const findParentTag = (node, tagName) => {\n if (!node) return null;\n let curr = node;\n while (curr && curr !== editorRef.current) {\n if (curr.tagName === tagName) return curr;\n curr = curr.parentNode;\n }\n return null;\n };\n\n const tableAction = (action) => {\n const sel = window.getSelection();\n if (!sel || !sel.rangeCount) return;\n \n const cell = findParentTag(sel.anchorNode, 'TD') || findParentTag(sel.anchorNode, 'TH');\n if (!cell) return;\n \n const row = cell.parentNode;\n const table = row.parentNode.closest('table');\n \n switch (action) {\n case 'addRowAbove':\n const newRowAbove = table.insertRow(row.rowIndex);\n for (let i = 0; i < row.cells.length; i++) {\n const newCell = newRowAbove.insertCell(i);\n newCell.style.border = \"1px solid #e5e7eb\";\n newCell.style.padding = \"12px\";\n newCell.innerHTML = \" \";\n }\n break;\n case 'addRowBelow':\n const newRowBelow = table.insertRow(row.rowIndex + 1);\n for (let i = 0; i < row.cells.length; i++) {\n const newCell = newRowBelow.insertCell(i);\n newCell.style.border = \"1px solid #e5e7eb\";\n newCell.style.padding = \"12px\";\n newCell.innerHTML = \" \";\n }\n break;\n case 'addColBefore':\n const cellIndex = cell.cellIndex;\n for (let i = 0; i < table.rows.length; i++) {\n const newCell = table.rows[i].insertCell(cellIndex);\n newCell.style.border = \"1px solid #e5e7eb\";\n newCell.style.padding = \"12px\";\n newCell.innerHTML = \" \";\n }\n break;\n case 'addColAfter':\n const cellIndexAfter = cell.cellIndex + 1;\n for (let i = 0; i < table.rows.length; i++) {\n const newCell = table.rows[i].insertCell(cellIndexAfter);\n newCell.style.border = \"1px solid #e5e7eb\";\n newCell.style.padding = \"12px\";\n newCell.innerHTML = \" \";\n }\n break;\n case 'deleteRow': {\n const rowIndex = row.rowIndex;\n const cellIndex = cell.cellIndex;\n table.deleteRow(rowIndex);\n if (table.rows.length === 0) {\n table.remove();\n } else {\n const targetRowIndex = Math.min(rowIndex, table.rows.length - 1);\n const targetRow = table.rows[targetRowIndex];\n const targetCell = targetRow.cells[Math.min(cellIndex, targetRow.cells.length - 1)];\n if (targetCell) {\n const range = document.createRange();\n range.selectNodeContents(targetCell);\n range.collapse(true);\n sel.removeAllRanges();\n sel.addRange(range);\n setSelectionVersion(v => v + 1);\n }\n }\n break;\n }\n case 'deleteCol': {\n const idx = cell.cellIndex;\n const rowIndex = row.rowIndex;\n for (let i = 0; i < table.rows.length; i++) {\n table.rows[i].deleteCell(idx);\n }\n if (table.rows[0].cells.length === 0) {\n table.remove();\n } else {\n const targetColIndex = Math.min(idx, table.rows[0].cells.length - 1);\n const targetCell = table.rows[rowIndex]?.cells[targetColIndex] || table.rows[0].cells[targetColIndex];\n if (targetCell) {\n const range = document.createRange();\n range.selectNodeContents(targetCell);\n range.collapse(true);\n sel.removeAllRanges();\n sel.addRange(range);\n setSelectionVersion(v => v + 1);\n }\n }\n break;\n }\n case 'mergeRight':\n if (cell.nextElementSibling) {\n const nextCell = cell.nextElementSibling;\n cell.colSpan = (cell.colSpan || 1) + (nextCell.colSpan || 1);\n nextCell.remove();\n }\n break;\n case 'deleteTable':\n table.remove();\n break;\n default:\n break;\n }\n triggerChange && triggerChange();\n };\n\n const insertTable = () => {\n const rows = parseInt(tableRows) || 3;\n const cols = parseInt(tableCols) || 3;\n let tableHtml = '<table style=\"width: 100%; border-collapse: collapse; border: 1px solid #e5e7eb; margin: 16px 0;\"><tbody>';\n for (let i = 0; i < rows; i++) {\n tableHtml += '<tr>';\n for (let j = 0; j < cols; j++) {\n tableHtml += '<td style=\"border: 1px solid #e5e7eb; padding: 12px; min-height: 20px;\"> </td>';\n }\n tableHtml += '</tr>';\n }\n tableHtml += '</tbody></table><p> </p>';\n \n if (selectionRangeRef.current) {\n const sel = window.getSelection();\n sel.removeAllRanges();\n sel.addRange(selectionRangeRef.current);\n }\n\n document.execCommand(\"insertHTML\", false, tableHtml);\n setTableModalOpen(false);\n triggerChange && triggerChange();\n };\n\n const parseVideoUrl = (url) => {\n url = url.trim();\n if (!url) return null;\n\n // YouTube\n const ytRegExp = /^.*(youtu.be\\/|v\\/|u\\/\\w\\/|embed\\/|watch\\?v=|\\&v=|watch\\?vi=|\\&vi=)([^#\\&\\?]*).*/;\n const ytMatch = url.match(ytRegExp);\n if (ytMatch && ytMatch[2].length === 11) {\n return `https://www.youtube.com/embed/${ytMatch[2]}`;\n }\n\n // Vimeo\n const vimeoRegExp = /vimeo\\.com\\/(?:channels\\/(?:\\w+\\/)?|groups\\/([^\\/]*)\\/videos\\/|album\\/(\\d+)\\/video\\/|video\\/|)(\\d+)(?:$|\\/|\\?)/;\n const vimeoMatch = url.match(vimeoRegExp);\n if (vimeoMatch && vimeoMatch[3]) {\n return `https://player.vimeo.com/video/${vimeoMatch[3]}`;\n }\n\n // DailyMotion\n const dmRegExp = /dailymotion\\.com\\/video\\/([a-zA-Z0-9]+)/;\n const dmMatch = url.match(dmRegExp);\n if (dmMatch && dmMatch[1]) {\n return `https://www.dailymotion.com/embed/video/${dmMatch[1]}`;\n }\n\n return null;\n };\n\n const insertVideo = () => {\n const embedUrl = parseVideoUrl(videoUrl);\n\n if (embedUrl) {\n if (editorRef.current) {\n editorRef.current.focus();\n }\n\n if (selectionRangeRef.current) {\n const sel = window.getSelection();\n sel.removeAllRanges();\n sel.addRange(selectionRangeRef.current);\n }\n\n const embedHtml = `<div class=\"video-container\">\n <iframe \n src=\"${embedUrl}\" \n frameborder=\"0\" \n allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\" \n allowfullscreen\n ></iframe>\n </div><p> </p>`;\n \n try {\n document.execCommand(\"insertHTML\", false, embedHtml);\n } catch (err) {\n console.error(\"Failed to insert Video HTML:\", err);\n if (editorRef.current) {\n const div = document.createElement('div');\n div.innerHTML = embedHtml;\n editorRef.current.appendChild(div);\n }\n }\n setVideoModalOpen(false);\n setVideoUrl(\"\");\n requestAnimationFrame(() => {\n processExistingMedia(editorRef.current);\n triggerChange();\n });\n } else {\n console.warn(\"Invalid Video URL or Platform not supported\");\n }\n };\n\n\n const onFileInput = (e) => {\n const file = e.target.files && e.target.files[0];\n if (!file) return;\n readFileAsDataURL(file).then((dataUrl) => {\n insertImage(dataUrl, file.name);\n });\n e.target.value = null;\n };\n\n const processExistingVideos = (container) => {\n if (!container) return;\n\n container.querySelectorAll(\".video-container\").forEach((videoContainer) => {\n if (!videoContainer.querySelector(\".video-delete-button\")) {\n const deleteBtn = createMediaDeleteButton(\n \"Remove video\",\n \"video-delete-button image-delete-button\",\n () => {\n videoContainer.remove();\n clearMediaSelection();\n triggerChange && triggerChange();\n }\n );\n videoContainer.appendChild(deleteBtn);\n }\n\n if (!videoContainer.dataset.mediaEnhanced) {\n videoContainer.dataset.mediaEnhanced = \"true\";\n if (!videoContainer.classList.contains(\"image-align-left\") &&\n !videoContainer.classList.contains(\"image-align-center\") &&\n !videoContainer.classList.contains(\"image-align-right\")) {\n videoContainer.classList.add(\"image-align-left\");\n }\n videoContainer.addEventListener(\"click\", (event) => {\n if (event.target.closest(\".image-delete-button, .media-resize-handle\")) return;\n event.preventDefault();\n event.stopPropagation();\n selectMediaContainer(videoContainer);\n });\n }\n\n attachMediaResizeHandle(videoContainer);\n normalizeMediaWidth(videoContainer);\n updateMediaControlVisibility(videoContainer);\n });\n };\n\n const processExistingImages = (container) => {\n if (!container) return;\n\n container.querySelectorAll(\"img\").forEach((img) => {\n if (img.closest(\".rte-modal\")) return;\n\n const existingWrapper = img.closest(\".image-container\");\n if (existingWrapper) {\n existingWrapper.style.cursor = editable ? \"pointer\" : \"default\";\n const frame = ensureImageMediaFrame(existingWrapper);\n if (frame && !frame.querySelector(\".image-delete-button\")) {\n frame.appendChild(\n createMediaDeleteButton(\n \"Remove image\",\n \"image-delete-button\",\n () => {\n existingWrapper.remove();\n clearMediaSelection();\n triggerChange && triggerChange();\n }\n )\n );\n }\n if (!existingWrapper.dataset.mediaEnhanced) {\n existingWrapper.dataset.mediaEnhanced = \"true\";\n existingWrapper.addEventListener(\"click\", (event) => {\n if (event.target.closest(\".image-delete-button, .media-resize-handle\")) return;\n event.preventDefault();\n event.stopPropagation();\n selectMediaContainer(existingWrapper);\n });\n img.addEventListener(\"dblclick\", (event) => {\n if (event.target.closest(\".image-delete-button, .media-resize-handle\")) return;\n event.preventDefault();\n event.stopPropagation();\n openImageModal(img.src);\n });\n }\n attachMediaResizeHandle(existingWrapper);\n normalizeMediaWidth(existingWrapper);\n updateMediaControlVisibility(existingWrapper);\n return;\n }\n\n const wrapper = document.createElement(\"div\");\n const align = img.getAttribute(\"data-align\") || img.closest(\"[data-align]\")?.getAttribute(\"data-align\") || \"left\";\n wrapper.className = `image-container image-align-${align}`;\n wrapper.style.cursor = editable ? \"pointer\" : \"default\";\n\n const frame = document.createElement(\"div\");\n frame.className = \"image-media-frame\";\n\n img.classList.add(\"rte-image\");\n img.setAttribute(\"data-align\", align);\n img.style.height = \"auto\";\n\n img.addEventListener(\"dblclick\", (event) => {\n if (event.target.closest(\".image-delete-button, .media-resize-handle\")) return;\n event.preventDefault();\n event.stopPropagation();\n openImageModal(img.src);\n });\n\n img.addEventListener(\"click\", (event) => {\n if (event.target.closest(\".image-delete-button, .media-resize-handle\")) return;\n event.preventDefault();\n event.stopPropagation();\n selectMediaContainer(wrapper);\n });\n\n const deleteBtn = createMediaDeleteButton(\n \"Remove image\",\n \"image-delete-button\",\n () => {\n wrapper.remove();\n triggerChange && triggerChange();\n }\n );\n\n const { parentNode, nextSibling } = img;\n if (parentNode) {\n parentNode.removeChild(img);\n frame.appendChild(img);\n frame.appendChild(deleteBtn);\n wrapper.appendChild(frame);\n attachMediaResizeHandle(wrapper);\n normalizeMediaWidth(wrapper);\n\n if (nextSibling) {\n parentNode.insertBefore(wrapper, nextSibling);\n } else {\n parentNode.appendChild(wrapper);\n }\n }\n });\n };\n\n\n /* \n Advanced Tip: Use the 'onImageUpload' prop to handle file uploads to a server \n instead of using base64. If 'onImageUpload' is provided, it should return a URL string.\n */\n const insertImage = async (dataUrl, fileName) => {\n try {\n if (editable) {\n\n // Create container for the image\n const container = document.createElement('div');\n container.className = 'image-container image-align-left';\n\n const frame = document.createElement('div');\n frame.className = 'image-media-frame';\n\n // Create image element\n const img = document.createElement('img');\n img.src = dataUrl;\n img.alt = fileName || \"image\";\n img.addEventListener(\"dblclick\", (event) => {\n event.preventDefault();\n event.stopPropagation();\n openImageModal(dataUrl);\n });\n img.addEventListener(\"click\", (event) => {\n event.preventDefault();\n event.stopPropagation();\n selectMediaContainer(container);\n });\n\n container.style.cursor = editable ? \"pointer\" : \"default\";\n container.dataset.mediaEnhanced = \"true\";\n container.addEventListener(\"click\", (event) => {\n if (event.target.closest(\".image-delete-button, .media-resize-handle\")) return;\n event.preventDefault();\n event.stopPropagation();\n selectMediaContainer(container);\n });\n\n const deleteBtn = createMediaDeleteButton(\n \"Remove image\",\n \"image-delete-button\",\n () => {\n container.remove();\n clearMediaSelection();\n triggerChange();\n }\n );\n\n frame.appendChild(img);\n frame.appendChild(deleteBtn);\n container.appendChild(frame);\n attachMediaResizeHandle(container);\n applyMediaWidthPercent(container, 50);\n\n // Insert at cursor position\n insertNodeAtCursor(container);\n requestAnimationFrame(() => {\n processExistingMedia(editorRef.current);\n selectMediaContainer(container);\n syncMediaWidthControls(container);\n editorRef.current?.focus();\n triggerChange();\n });\n }\n } catch (err) {\n console.error('Error inserting image:', err);\n }\n };\n\n const readFileAsDataURL = (file) =>\n new Promise((res, rej) => {\n const reader = new FileReader();\n reader.onload = (ev) => res(ev.target.result);\n reader.onerror = rej;\n reader.readAsDataURL(file);\n });\n\n // NEW: Function to auto-convert URLs to links\n const autoConvertUrlsToLinks = (html) => {\n return html.replace(URL_REGEX, (url) => {\n const safeUrl = escapeAttr(url);\n return `<a href=\"${safeUrl}\" target=\"_blank\" rel=\"noopener noreferrer\" style=\"color: blue;\">${url}</a>`;\n });\n };\n\n const handlePaste = useCallback((e) => {\n const clipboardData = e.clipboardData || window.clipboardData;\n if (!clipboardData) return;\n\n // Check for image in clipboard\n const items = clipboardData.items || [];\n for (let i = 0; i < items.length; i++) {\n const item = items[i];\n if (item.kind === 'file' && item.type.indexOf('image/') !== -1) {\n e.preventDefault();\n const file = item.getAsFile();\n if (file) {\n setIsUploading(true);\n const uploadPromise = onImageUpload\n ? onImageUpload(file)\n : readFileAsDataURL(file);\n\n uploadPromise.then((url) => {\n if (url) {\n // if the user's onImageUpload resolves to `{ mediaUrl: '...' }` like the previous MediaUpload, handle it\n const finalUrl = typeof url === 'object' && url !== null && url.mediaUrl ? url.mediaUrl : url;\n insertImage(finalUrl, file.name || 'pasted-image');\n }\n setIsUploading(false);\n }).catch((error) => {\n console.error('Error uploading pasted image:', error);\n setIsUploading(false);\n });\n }\n return;\n }\n }\n\n const htmlData = clipboardData.getData('text/html');\n if (htmlData && htmlData.trim()) {\n e.preventDefault();\n\n const tempDiv = document.createElement('div');\n tempDiv.innerHTML = htmlData;\n\n tempDiv.querySelectorAll('script, meta, link').forEach(el => el.remove());\n\n document.execCommand('styleWithCSS', false, true);\n document.execCommand('insertHTML', false, tempDiv.innerHTML);\n document.execCommand('styleWithCSS', false, false);\n\n triggerChange();\n focus();\n return;\n }\n\n const plainText = clipboardData.getData('text/plain');\n if (plainText) {\n e.preventDefault();\n\n let htmlToInsert = escapeHtml(plainText);\n\n htmlToInsert = htmlToInsert.replace(URL_REGEX, (url) => {\n const safeUrl = escapeAttr(url.trim());\n return `<a href=\"${safeUrl}\" target=\"_blank\" rel=\"noopener noreferrer\" style=\"color: blue; text-decoration: underline;\">${escapeHtml(url)}</a>`;\n });\n\n htmlToInsert = htmlToInsert.replace(/\\n/g, '<br>');\n\n document.execCommand('insertHTML', false, htmlToInsert);\n triggerChange();\n focus();\n }\n }, [insertImage, triggerChange]);\n\n const handleDrop = async (e) => {\n if (!editable) return;\n e.preventDefault();\n e.stopPropagation();\n\n const files = e.dataTransfer.files;\n if (!files || files.length === 0) return;\n\n const imageFiles = Array.from(files).filter(file => file.type.startsWith(\"image/\"));\n\n for (const file of imageFiles) {\n try {\n setIsUploading(true);\n const uploadPromise = onImageUpload\n ? onImageUpload(file)\n : readFileAsDataURL(file);\n\n uploadPromise.then((url) => {\n if (url) {\n const finalUrl = typeof url === 'object' && url !== null && url.mediaUrl ? url.mediaUrl : url;\n insertImage(finalUrl, file.name);\n }\n setIsUploading(false);\n }).catch((error) => {\n console.error('Error processing image:', error);\n setIsUploading(false);\n });\n } catch (error) {\n console.error('Error processing image:', error);\n setIsUploading(false);\n }\n }\n };\n\n const insertNodeAtCursor = (node) => {\n try {\n const sel = window.getSelection();\n let range;\n\n if (!sel || sel.rangeCount === 0 || !editorRef.current.contains(sel.anchorNode)) {\n editorRef.current.focus();\n \n // Move cursor to end if not already in editor\n range = document.createRange();\n range.selectNodeContents(editorRef.current);\n range.collapse(false);\n sel.removeAllRanges();\n sel.addRange(range);\n } else {\n range = sel.getRangeAt(0);\n }\n\n range.deleteContents();\n range.insertNode(node);\n \n const space = document.createTextNode(\"\\u00A0\");\n if (node.parentNode) {\n node.parentNode.insertBefore(space, node.nextSibling);\n }\n \n range.setStartAfter(space);\n range.collapse(true);\n sel.removeAllRanges();\n sel.addRange(range);\n } catch (error) {\n console.error(\"Insertion error:\", error);\n if (editorRef.current) {\n editorRef.current.appendChild(node);\n }\n }\n };\n\n // Helper function to unescape HTML entities\n const unescapeHtml = (html) => {\n if (!html) return '';\n const txt = document.createElement(\"textarea\");\n txt.innerHTML = html;\n return txt.value;\n };\n\n const isCursorAtStartOfListItem = (range, listItem) => {\n const prefixRange = document.createRange();\n prefixRange.setStart(listItem, 0);\n prefixRange.setEnd(range.startContainer, range.startOffset);\n return prefixRange.toString().replace(/[\\u200B\\u00A0\\s]/g, \"\").length === 0;\n };\n\n const isCursorAtEndOfListItem = (range, listItem) => {\n const suffixRange = document.createRange();\n suffixRange.setStart(range.startContainer, range.startOffset);\n suffixRange.setEnd(listItem, listItem.childNodes.length);\n return suffixRange.toString().replace(/\\u200B/g, \"\").length === 0;\n };\n\n const prepareListItemForTyping = (listItem, selection) => {\n const activeColor = getActiveTextColor();\n const newRange = document.createRange();\n\n if (activeColor && activeColor.toLowerCase() !== \"#000000\") {\n const span = document.createElement(\"span\");\n span.style.color = activeColor;\n span.appendChild(document.createTextNode(\"\\u200B\"));\n listItem.appendChild(span);\n newRange.setStart(span.firstChild, 1);\n } else {\n listItem.appendChild(document.createTextNode(\"\\u200B\"));\n newRange.setStart(listItem.firstChild, 1);\n }\n\n newRange.collapse(true);\n selection.removeAllRanges();\n selection.addRange(newRange);\n };\n\n const handleKeyDown = useCallback((e) => {\n if (e.key === \"Escape\") {\n if (areaHighlightMode) {\n e.preventDefault();\n areaDragRef.current = null;\n setMarqueePreview(null);\n setAreaHighlightMode(false);\n return;\n }\n if (selectedMedia) {\n e.preventDefault();\n clearMediaSelection();\n return;\n }\n }\n\n if (\n (e.key === \"Delete\" || e.key === \"Backspace\") &&\n selectedMedia?.classList.contains(\"rte-media-selected\") &&\n editorRef.current?.contains(selectedMedia)\n ) {\n e.preventDefault();\n selectedMedia.remove();\n clearMediaSelection();\n triggerChange();\n return;\n }\n\n if (applyMarkdownShortcut(e)) return;\n\n // Handle Enter key\n if (e.key === 'Enter') {\n e.preventDefault();\n\n const selection = window.getSelection();\n if (!selection.rangeCount) return;\n\n const range = selection.getRangeAt(0);\n const node = range.startContainer;\n const parent = node.nodeType === 3 ? node.parentNode : node;\n\n // Check if we're in a list item\n const listItem = parent.closest('li');\n if (listItem) {\n const list = listItem.parentNode;\n\n // Create a new list item\n const newItem = document.createElement('li');\n\n // If we're at the end of a list item, add a new one\n if (range.collapsed && isCursorAtEndOfListItem(range, listItem)) {\n // If it's empty, create a regular paragraph instead\n if (isListItemEffectivelyEmpty(listItem)) {\n document.execCommand('insertHTML', false, '<div><br></div>');\n // Move the cursor to the new line\n const newRange = document.createRange();\n const newDiv = editorRef.current.lastElementChild;\n newRange.setStart(newDiv, 0);\n newRange.collapse(true);\n selection.removeAllRanges();\n selection.addRange(newRange);\n triggerChange();\n return;\n }\n\n // Insert new list item\n if (listItem.nextSibling) {\n list.insertBefore(newItem, listItem.nextSibling);\n } else {\n list.appendChild(newItem);\n }\n\n prepareListItemForTyping(newItem, selection);\n } else {\n // If we're in the middle of text, split the list item while preserving formatting\n const afterRange = document.createRange();\n afterRange.setStart(range.startContainer, range.startOffset);\n afterRange.setEnd(listItem, listItem.childNodes.length);\n const movedFragment = afterRange.extractContents();\n newItem.appendChild(movedFragment);\n\n if (listItem.nextSibling) {\n list.insertBefore(newItem, listItem.nextSibling);\n } else {\n list.appendChild(newItem);\n }\n\n if (isListItemEffectivelyEmpty(newItem)) {\n newItem.textContent = \"\";\n prepareListItemForTyping(newItem, selection);\n } else {\n const newRange = document.createRange();\n newRange.setStart(newItem, 0);\n newRange.collapse(true);\n selection.removeAllRanges();\n selection.addRange(newRange);\n }\n }\n } else {\n // Regular text, insert a new paragraph\n document.execCommand('insertHTML', false, '<div><br></div>');\n }\n\n triggerChange();\n return;\n }\n\n if (e.key === \"Backspace\") {\n const selection = window.getSelection();\n if (!selection?.rangeCount) return;\n\n const range = selection.getRangeAt(0);\n if (!range.collapsed) return;\n\n let node = range.startContainer;\n if (node.nodeType === 3) {\n node = node.parentNode;\n }\n\n const listItem = node.closest?.(\"li\");\n if (!listItem || !editorRef.current?.contains(listItem)) return;\n\n const list = listItem.parentNode;\n\n if (isListItemEffectivelyEmpty(listItem)) {\n e.preventDefault();\n\n const prevLi = listItem.previousElementSibling;\n const blockMedia = Array.from(listItem.querySelectorAll(LIST_BLOCK_MEDIA_SELECTOR));\n\n blockMedia.forEach((media) => {\n list.parentNode?.insertBefore(media, list.nextSibling);\n });\n\n listItem.remove();\n\n if (list.children.length === 0) {\n list.remove();\n }\n\n if (prevLi?.tagName === \"LI\") {\n const newRange = document.createRange();\n newRange.selectNodeContents(prevLi);\n newRange.collapse(false);\n selection.removeAllRanges();\n selection.addRange(newRange);\n }\n\n triggerChange();\n return;\n }\n\n if (isCursorAtStartOfListItem(range, listItem)) {\n const prevLi = listItem.previousElementSibling;\n if (prevLi?.tagName === \"LI\" && isListItemEffectivelyEmpty(prevLi)) {\n e.preventDefault();\n prevLi.remove();\n if (list.children.length === 0) {\n list.remove();\n }\n triggerChange();\n }\n }\n return;\n }\n\n // Handle Ctrl/Cmd + B/I/U for bold/italic/underline\n if ((e.ctrlKey || e.metaKey) && e.key === \"b\") {\n e.preventDefault();\n exec(\"bold\");\n } else if ((e.ctrlKey || e.metaKey) && e.key === \"i\") {\n e.preventDefault();\n exec(\"italic\");\n } else if ((e.ctrlKey || e.metaKey) && e.key === \"u\") {\n e.preventDefault();\n exec(\"underline\");\n }\n }, [exec, triggerChange, fontColor, areaHighlightMode, selectedMedia]);\n\n const confirmLink = () => {\n // Add protocol if missing\n let url = linkUrl.trim();\n if (url && !/^(https?:\\/\\/|mailto:|tel:)/i.test(url)) {\n url = `https://${url}`;\n }\n\n const safeUrl = escapeAttr(url);\n const safeText = escapeHtml(linkText || linkUrl);\n\n const sel = window.getSelection();\n sel.removeAllRanges();\n if (selectionRangeRef.current) {\n sel.addRange(selectionRangeRef.current);\n }\n\n const linkHtml = `<a href=\"${safeUrl}\" target=\"_blank\" rel=\"noopener noreferrer\" style=\"color: blue;\">${safeText}</a>`;\n document.execCommand(\"insertHTML\", false, linkHtml);\n\n setLinkModalOpen(false);\n triggerChange();\n focus();\n selectionRangeRef.current = null;\n };\n\n const cancelLink = () => {\n setLinkModalOpen(false);\n selectionRangeRef.current = null;\n };\n\n const handleSelect = (type) => {\n exec(type === \"unordered\" ? \"insertUnorderedList\" : \"insertOrderedList\");\n };\n\n const applyBlockFormat = (format) => {\n document.execCommand(\"formatBlock\", false, format);\n setCurrentBlockFormat(format);\n triggerChange();\n focus();\n };\n\n const clearFormatting = () => {\n document.execCommand(\"removeFormat\", false, null);\n document.execCommand(\"unlink\", false, null);\n document.execCommand(\"formatBlock\", false, \"div\");\n setCurrentBlockFormat(\"div\");\n setCurrentFontSize(\"16\");\n setCurrentLineHeight(\"\");\n setFontColor(\"#000000\");\n setBgColor(\"#ffff00\");\n document.execCommand(\"styleWithCSS\", false, true);\n document.execCommand(\"hiliteColor\", false, \"transparent\");\n document.execCommand(\"backColor\", false, \"transparent\");\n document.execCommand(\"styleWithCSS\", false, false);\n triggerChange();\n focus();\n };\n\n const deleteTextBeforeCursorInBlock = (block, range, selection) => {\n const prefixRange = document.createRange();\n prefixRange.setStart(block, 0);\n prefixRange.setEnd(range.startContainer, range.startOffset);\n prefixRange.deleteContents();\n\n const nextRange = document.createRange();\n nextRange.setStart(block, 0);\n nextRange.collapse(true);\n selection.removeAllRanges();\n selection.addRange(nextRange);\n };\n\n const applyMarkdownShortcut = (event) => {\n if (event.key !== \" \" || event.ctrlKey || event.metaKey || event.altKey) {\n return false;\n }\n\n const selection = window.getSelection();\n if (!selection?.rangeCount || !selection.isCollapsed || !editorRef.current) {\n return false;\n }\n\n const range = selection.getRangeAt(0);\n const block = getActiveBlock(range.startContainer);\n if (!block || !editorRef.current.contains(block)) return false;\n\n const prefixRange = document.createRange();\n prefixRange.setStart(block, 0);\n prefixRange.setEnd(range.startContainer, range.startOffset);\n const textBeforeCursor = prefixRange.toString().replace(/\\u00A0/g, \" \").trim();\n\n const shortcuts = {\n \"#\": () => applyBlockFormat(\"h1\"),\n \"##\": () => applyBlockFormat(\"h2\"),\n \"###\": () => applyBlockFormat(\"h3\"),\n \">\": () => applyBlockFormat(\"blockquote\"),\n \"-\": () => handleSelect(\"unordered\"),\n \"*\": () => handleSelect(\"unordered\"),\n \"1.\": () => handleSelect(\"ordered\"),\n };\n\n const action = shortcuts[textBeforeCursor];\n if (!action) return false;\n\n event.preventDefault();\n deleteTextBeforeCursorInBlock(block, range, selection);\n action();\n return true;\n };\n\n const onLineHeightChange = (value) => {\n if (!value) return;\n\n const sel = window.getSelection();\n if (!sel || !sel.rangeCount) return;\n\n const range = sel.getRangeAt(0);\n const editor = editorRef.current;\n if (!editor) return;\n\n const walker = document.createTreeWalker(\n editor,\n NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_TEXT,\n {\n acceptNode: (node) => {\n return range.intersectsNode(node)\n ? NodeFilter.FILTER_ACCEPT\n : NodeFilter.FILTER_REJECT;\n },\n },\n false\n );\n\n let node;\n const blocksToStyle = new Set();\n const blockTags = ['P', 'DIV', 'H1', 'H2', 'H3', 'H4', 'H5', 'H6', 'LI', 'BLOCKQUOTE'];\n\n const tempRange = range.cloneRange();\n\n while ((node = walker.nextNode())) {\n if (node.nodeType === 1 && blockTags.includes(node.tagName)) {\n blocksToStyle.add(node);\n } else if (node.nodeType === 3) {\n let parent = node.parentNode;\n while (parent && parent !== editor && !blockTags.includes(parent.tagName)) {\n parent = parent.parentNode;\n }\n if (parent && parent !== editor && blockTags.includes(parent.tagName)) {\n blocksToStyle.add(parent);\n }\n }\n }\n\n if (blocksToStyle.size > 0) {\n blocksToStyle.forEach(block => {\n block.style.lineHeight = value;\n });\n } else {\n let common = range.commonAncestorContainer;\n if (common.nodeType === 3) common = common.parentNode;\n\n while (common && common !== editor && !blockTags.includes(common.tagName)) {\n common = common.parentNode;\n }\n\n if (common && common !== editor) {\n common.style.lineHeight = value;\n } else if (editor) {\n document.execCommand('formatBlock', false, 'div');\n let newCommon = window.getSelection().getRangeAt(0).commonAncestorContainer;\n if (newCommon.nodeType === 3) newCommon = newCommon.parentNode;\n if (newCommon && newCommon !== editor) {\n newCommon.style.lineHeight = value;\n }\n }\n }\n\n try {\n sel.removeAllRanges();\n sel.addRange(tempRange);\n } catch (e) { }\n\n setCurrentLineHeight(value);\n triggerChange();\n focus();\n };\n\n const applyFontSize = (size) => {\n const sel = window.getSelection();\n if (!sel || !sel.rangeCount) return;\n\n const range = sel.getRangeAt(0);\n const sizePx = `${size}px`;\n\n // Collapsed selection (cursor only): insert a styled zero-width span\n if (range.collapsed) {\n const span = document.createElement(\"span\");\n span.style.fontSize = sizePx;\n span.appendChild(document.createTextNode(\"\\u200B\"));\n range.insertNode(span);\n\n const newRange = document.createRange();\n newRange.setStart(span.firstChild, 1);\n newRange.collapse(true);\n sel.removeAllRanges();\n sel.addRange(newRange);\n\n triggerChange();\n focus();\n return;\n }\n\n // Extended selection (highlighted text)\n try {\n const editor = editorRef.current;\n if (!editor) return;\n\n // We will iterate through all the text nodes in the selection\n const walker = document.createTreeWalker(\n editor,\n NodeFilter.SHOW_TEXT,\n {\n acceptNode: (node) => {\n return range.intersectsNode(node)\n ? NodeFilter.FILTER_ACCEPT\n : NodeFilter.FILTER_REJECT;\n },\n },\n false\n );\n\n let node;\n const nodesToStyle = [];\n while ((node = walker.nextNode())) {\n nodesToStyle.push(node);\n }\n\n const savedRange = range.cloneRange();\n let lastInsertedNode = null;\n\n // Iterate through the selected text nodes and wrap them in spans\n for (const textNode of nodesToStyle) {\n const parent = textNode.parentNode;\n\n // This is important: check if the parent is a block-level element\n // like a list item or paragraph. If so, we want to style the block\n // itself to avoid breaking its structure.\n const isBlockLevel = ['P', 'H1', 'H2', 'H3', 'H4', 'H5', 'H6', 'LI', 'BLOCKQUOTE'].includes(parent.tagName);\n\n if (isBlockLevel) {\n parent.style.fontSize = sizePx;\n } else {\n // For inline text, wrap the selected portion in a new span\n const startOffset = textNode === savedRange.startContainer ? savedRange.startOffset : 0;\n const endOffset = textNode === savedRange.endContainer ? savedRange.endOffset : textNode.length;\n\n const newSpan = document.createElement(\"span\");\n newSpan.style.fontSize = sizePx;\n newSpan.textContent = textNode.textContent.substring(startOffset, endOffset);\n\n const tempRange = document.createRange();\n tempRange.setStart(textNode, startOffset);\n tempRange.setEnd(textNode, endOffset);\n\n tempRange.deleteContents();\n tempRange.insertNode(newSpan);\n lastInsertedNode = newSpan;\n }\n }\n\n // After styling, we need to correctly position the cursor\n if (lastInsertedNode) {\n const newRange = document.createRange();\n newRange.setStartAfter(lastInsertedNode);\n newRange.collapse(true);\n sel.removeAllRanges();\n sel.addRange(newRange);\n } else {\n // If no nodes were wrapped (e.g., we styled a block), restore the original selection\n sel.removeAllRanges();\n sel.addRange(savedRange);\n }\n\n } catch (err) {\n console.error(\"Error applying font size:\", err);\n }\n\n triggerChange();\n focus();\n };\n const handleInput = useCallback(() => {\n if (editorRef.current) {\n const next = getCleanHtml();\n setHtml(next);\n lastSynchronizedHtmlRef.current = next;\n onChange && onChange(next);\n updateMetrics();\n }\n }, [onChange, updateMetrics]);\n\n const handleImageUpload = async (e) => {\n const file = e.target.files[0];\n if (!file) return;\n\n try {\n setIsUploading(true);\n const uploadPromise = onImageUpload\n ? onImageUpload(file)\n : readFileAsDataURL(file);\n\n uploadPromise.then((url) => {\n if (url) {\n const finalUrl = typeof url === 'object' && url !== null && url.mediaUrl ? url.mediaUrl : url;\n insertImage(finalUrl, file.name);\n }\n setIsUploading(false);\n e.target.value = null;\n }).catch((error) => {\n console.error('Error uploading image:', error);\n setIsUploading(false);\n });\n } catch (error) {\n console.error('Error uploading image:', error);\n setIsUploading(false);\n }\n };\n useEffect(() => {\n // If disabled is explicitly false, make sure the editor is not editable\n if (disabled === true) {\n setEditable(false);\n }\n }, [disabled]);\n\n const handleEditorClick = useCallback((e) => {\n if (areaHighlightMode) {\n e.preventDefault();\n return;\n }\n\n setSelectionVersion(v => v + 1);\n\n const deleteBtn = e.target.closest(\n 'button[title=\"Remove image\"], button[title=\"Remove video\"]'\n );\n if (deleteBtn && editable && editorFocused) {\n e.preventDefault();\n e.stopPropagation();\n const wrapper = deleteBtn.closest('.image-container, .video-container');\n if (wrapper) {\n wrapper.remove();\n clearMediaSelection();\n triggerChange();\n }\n return;\n }\n\n const clickedMedia = e.target.closest('.image-container, .video-container');\n if (clickedMedia && editorRef.current?.contains(clickedMedia) && editable) {\n e.preventDefault();\n e.stopPropagation();\n selectMediaContainer(clickedMedia);\n return;\n }\n\n // Check if the click is on a link\n const clickedLink = e.target.closest('a');\n\n if (clickedLink) {\n e.preventDefault();\n e.stopPropagation();\n window.open(clickedLink.href, '_blank');\n return;\n }\n\n if (!e.target.closest('.rte-media-toolbar')) {\n clearMediaSelection();\n }\n\n // If disabled is true, prevent editing\n if (disabled === true) {\n e.preventDefault();\n return;\n }\n\n // Only allow setting editable to true if not disabled\n if (!editable && disabled !== true) {\n setEditable(true);\n setTimeout(() => {\n if (editorRef.current) {\n editorRef.current.focus();\n }\n }, 0);\n }\n }, [areaHighlightMode, editable, disabled, editorFocused, triggerChange]);\n\n useEffect(() => {\n if (!selectedMedia) return;\n syncMediaWidthControls(selectedMedia);\n }, [selectedMedia, selectionVersion]);\n\n useEffect(() => {\n const editor = editorRef.current;\n if (!editor || !selectedMedia) return;\n\n const bumpToolbarPosition = () => setSelectionVersion((v) => v + 1);\n editor.addEventListener(\"scroll\", bumpToolbarPosition, { passive: true });\n window.addEventListener(\"resize\", bumpToolbarPosition, { passive: true });\n\n return () => {\n editor.removeEventListener(\"scroll\", bumpToolbarPosition);\n window.removeEventListener(\"resize\", bumpToolbarPosition);\n };\n }, [selectedMedia]);\n\n const renderMediaToolbar = () => {\n if (!selectedMedia || !editorRef.current || !editable) return null;\n\n const wrapperEl = contentWrapperRef.current;\n const anchorRect = wrapperEl?.getBoundingClientRect() ?? editorRef.current.getBoundingClientRect();\n const mediaRect = selectedMedia.getBoundingClientRect();\n const relTop = mediaRect.top - anchorRect.top;\n const relLeft = mediaRect.left - anchorRect.left;\n const mediaWidth = mediaRect.width;\n const mediaHeight = mediaRect.height;\n const currentPercent = getMediaWidthPercent(selectedMedia);\n const widthPresets = [25, 50, 75, 100];\n const toolbarWidth = 340;\n const toolbarHeight = 40;\n const gap = 8;\n const preferredTop = relTop - toolbarHeight - gap;\n const toolbarTop =\n preferredTop >= 4 ? preferredTop : relTop + mediaHeight + gap;\n\n const applyCustomMediaWidth = () => {\n const num = parseFloat(mediaWidthInput);\n if (isNaN(num) || num <= 0) {\n syncMediaWidthControls(selectedMedia);\n return;\n }\n if (mediaWidthUnit === \"px\") {\n applyMediaWidthPx(selectedMedia, num);\n } else {\n applyMediaWidthPercent(selectedMedia, num);\n }\n syncMediaWidthControls(selectedMedia);\n setSelectionVersion((v) => v + 1);\n triggerChange();\n };\n\n const handleUnitChange = (newUnit) => {\n if (newUnit === mediaWidthUnit) return;\n\n const editorInnerWidth = getEditorInnerWidth();\n const currentVal = parseFloat(mediaWidthInput);\n if (isNaN(currentVal) || currentVal <= 0) {\n setMediaWidthUnit(newUnit);\n return;\n }\n\n let converted = currentVal;\n if (newUnit === \"px\" && mediaWidthUnit === \"%\") {\n converted = Math.round((editorInnerWidth * currentVal) / 100);\n applyMediaWidthPx(selectedMedia, converted);\n } else if (newUnit === \"%\" && mediaWidthUnit === \"px\") {\n converted = Math.min(\n 100,\n Math.max(10, Math.round((currentVal / editorInnerWidth) * 100))\n );\n applyMediaWidthPercent(selectedMedia, converted);\n }\n\n setMediaWidthInput(String(converted));\n setMediaWidthUnit(newUnit);\n setSelectionVersion((v) => v + 1);\n triggerChange();\n };\n\n const handleAlignment = (align) => {\n selectedMedia.classList.remove(\"image-align-left\", \"image-align-center\", \"image-align-right\");\n selectedMedia.classList.add(`image-align-${align}`);\n const img = selectedMedia.querySelector(\"img\");\n if (img) img.setAttribute(\"data-align\", align);\n triggerChange();\n };\n\n const setWidth = (percent) => {\n applyMediaWidthPercent(selectedMedia, percent);\n syncMediaWidthControls(selectedMedia);\n setSelectionVersion((v) => v + 1);\n triggerChange();\n };\n\n const removeMedia = () => {\n selectedMedia.remove();\n clearMediaSelection();\n triggerChange();\n };\n\n const isActivePercent = (percent) => {\n if (selectedMedia.dataset.widthPx) return false;\n if (!selectedMedia.dataset.widthPercent && !(selectedMedia.style.width || \"\").endsWith(\"%\")) {\n return false;\n }\n return Math.abs(currentPercent - percent) <= 3;\n };\n\n const isFormControl = (target) =>\n target instanceof Element && !!target.closest(\"input, select, textarea\");\n\n return (\n <div\n className=\"rte-media-toolbar\"\n onMouseDown={(e) => {\n e.stopPropagation();\n if (!isFormControl(e.target)) {\n e.preventDefault();\n }\n }}\n onClick={(e) => e.stopPropagation()}\n style={{\n position: \"absolute\",\n top: Math.max(4, toolbarTop),\n left: Math.max(\n 8,\n Math.min(\n relLeft + mediaWidth / 2 - toolbarWidth / 2,\n anchorRect.width - toolbarWidth - 8\n )\n ),\n zIndex: 1000,\n }}\n >\n <button type=\"button\" onClick={() => handleAlignment(\"left\")} title=\"Align Left\">L</button>\n <button type=\"button\" onClick={() => handleAlignment(\"center\")} title=\"Align Center\">C</button>\n <button type=\"button\" onClick={() => handleAlignment(\"right\")} title=\"Align Right\">R</button>\n <span className=\"rte-media-toolbar-divider\" />\n {widthPresets.map((percent) => (\n <button\n key={percent}\n type=\"button\"\n className={isActivePercent(percent) ? \"active\" : \"\"}\n onClick={() => setWidth(percent)}\n title={`${percent}% width`}\n >\n {percent}%\n </button>\n ))}\n <span className=\"rte-media-toolbar-divider\" />\n <div className=\"rte-media-width-custom\">\n <input\n type=\"number\"\n className=\"rte-media-width-input\"\n value={mediaWidthInput}\n min={mediaWidthUnit === \"%\" ? 10 : 20}\n max={mediaWidthUnit === \"%\" ? 100 : 2000}\n title=\"Custom width\"\n onChange={(e) => setMediaWidthInput(e.target.value)}\n onBlur={(e) => {\n if (e.relatedTarget?.closest?.(\".rte-media-width-custom\")) return;\n applyCustomMediaWidth();\n }}\n onMouseDown={(e) => e.stopPropagation()}\n onKeyDown={(e) => {\n if (e.key === \"Enter\") {\n e.preventDefault();\n applyCustomMediaWidth();\n }\n }}\n />\n <select\n className=\"rte-media-width-unit\"\n value={mediaWidthUnit}\n onChange={(e) => handleUnitChange(e.target.value)}\n onMouseDown={(e) => e.stopPropagation()}\n >\n <option value=\"%\">%</option>\n <option value=\"px\">px</option>\n </select>\n <button\n type=\"button\"\n className=\"rte-media-width-apply\"\n title=\"Apply size\"\n onClick={applyCustomMediaWidth}\n >\n ✓\n </button>\n </div>\n <span className=\"rte-media-toolbar-divider\" />\n <button type=\"button\" onClick={removeMedia} className=\"danger\" title=\"Remove\">×</button>\n </div>\n );\n };\n\n if (isLoading) {\n return <Spinner />;\n }\n\n return (\n <div className=\"rte-main-wrapper\" style={{ width: '100%', position: 'relative' }}>\n {label && <LabelComponent>{label}</LabelComponent>}\n <div\n style={{ position: 'relative' }}\n className={!showBorder ? \"\" : \"rte-container\"}\n onClick={handleEditorClick}\n onMouseOver={(e) => {\n const table = e.target.closest('table');\n if (table && editorRef.current.contains(table)) {\n setHoveredTable(table);\n }\n }}\n onMouseOut={(e) => {\n const table = e.target.closest('table');\n const related = e.relatedTarget;\n if (table && (!related || !table.contains(related)) && !related?.closest('.rte-table-delete-hover')) {\n setHoveredTable(null);\n }\n }}\n onDrop={handleDrop}\n onDragOver={(e) => {\n e.preventDefault();\n e.stopPropagation();\n }}\n >\n {/* Toolbar */}\n {!disabled && (\n <div className=\"rte-toolbar\">\n {/* Bold */}\n <button\n type=\"button\"\n title=\"Bold\"\n onMouseDown={(e) => {\n e.preventDefault();\n exec(\"bold\");\n }}\n className={`rte-toolbar-button ${isBold ? \"active\" : \"\"}`}\n >\n <FaBold size={14} />\n </button>\n\n {/* Italic */}\n <button\n type=\"button\"\n title=\"Italic\"\n onMouseDown={(e) => {\n e.preventDefault();\n exec(\"italic\");\n }}\n className={`rte-toolbar-button ${isItalic ? \"active\" : \"\"}`}\n >\n <FaItalic size={14} />\n </button>\n\n {/* Underline */}\n <button\n type=\"button\"\n title=\"Underline\"\n onMouseDown={(e) => {\n e.preventDefault();\n exec(\"underline\");\n }}\n className={`rte-toolbar-button ${isUnderline ? \"active\" : \"\"}`}\n >\n <FaUnderline size={14} />\n </button>\n\n <div style={{ width: '1px', height: '20px', backgroundColor: '#e5e7eb', margin: '0 4px' }}></div>\n\n {/* Headings */}\n <select\n value={currentBlockFormat}\n onMouseDown={(e) => e.stopPropagation()}\n onChange={(e) => {\n e.preventDefault();\n e.stopPropagation();\n applyBlockFormat(e.target.value);\n }}\n className=\"rte-toolbar-select rte-heading-select\"\n title=\"Text style\"\n >\n <option value=\"div\">Paragraph</option>\n <option value=\"h1\">Heading 1</option>\n <option value=\"h2\">Heading 2</option>\n <option value=\"h3\">Heading 3</option>\n <option value=\"blockquote\">Quote</option>\n </select>\n\n <button\n type=\"button\"\n title=\"Clear Formatting\"\n className=\"rte-toolbar-button rte-toolbar-button-text\"\n onMouseDown={(e) => {\n e.preventDefault();\n clearFormatting();\n }}\n >\n Tx\n </button>\n\n <div style={{ width: '1px', height: '20px', backgroundColor: '#e5e7eb', margin: '0 4px' }}></div>\n\n {/* Font Size */}\n <select\n value={currentFontSize}\n onMouseDown={(e) => e.stopPropagation()}\n onChange={(e) => {\n e.preventDefault();\n e.stopPropagation();\n const size = e.target.value;\n if (!size) return;\n applyFontSize(size);\n setCurrentFontSize(size);\n focus();\n }}\n className=\"rte-toolbar-select\"\n style={{ width: '70px' }}\n >\n {[8, 10, 12, 14, 16, 18, 20, 24, 28, 32, 36, 40, 48].map((s) => (\n <option key={s} value={s}>{s}px</option>\n ))}\n </select>\n\n {/* Text Color */}\n <label title=\"Text Color\" className=\"rte-color-picker-label\">\n <FaFont size={14} style={{ color: fontColor }} />\n <input\n type=\"color\"\n value={fontColor}\n onMouseDown={(e) => {\n e.preventDefault();\n e.stopPropagation();\n saveSelection();\n }}\n onChange={(e) => {\n e.stopPropagation();\n applyTextColor(e.target.value);\n }}\n className=\"rte-color-input\"\n />\n </label>\n\n {/* Background Color */}\n <label\n title={areaHighlightMode ? \"Highlight color for area selection\" : \"Text background color\"}\n className=\"rte-color-picker-label rte-bg-color-picker-label\"\n >\n <span\n className=\"rte-bg-color-swatch\"\n style={{ backgroundColor: bgColor, color: fontColor }}\n >\n A\n </span>\n <input\n type=\"color\"\n value={bgColor}\n onMouseDown={(e) => {\n e.preventDefault();\n e.stopPropagation();\n if (!areaHighlightMode) saveSelection();\n }}\n onChange={(e) => {\n e.stopPropagation();\n const color = e.target.value;\n setBgColor(color);\n if (!areaHighlightMode) {\n applyBackgroundColor(color);\n }\n }}\n className=\"rte-color-input\"\n />\n </label>\n\n <button\n type=\"button\"\n title=\"Area highlight — drag to select a box (like screenshot)\"\n className={`rte-toolbar-button rte-area-highlight-toggle${areaHighlightMode ? \" active\" : \"\"}`}\n onMouseDown={(e) => e.preventDefault()}\n onClick={() => {\n setAreaHighlightMode((prev) => !prev);\n setMarqueePreview(null);\n areaDragRef.current = null;\n focus();\n }}\n >\n <span className=\"rte-area-highlight-icon\" aria-hidden=\"true\" />\n </button>\n\n <div style={{ width: '1px', height: '20px', backgroundColor: '#e5e7eb', margin: '0 4px' }}></div>\n\n {/* Alignment */}\n <button\n type=\"button\"\n title=\"Align Left\"\n className={`rte-toolbar-button ${activeAlign === \"left\" ? \"active\" : \"\"}`}\n onMouseDown={(e) => {\n e.preventDefault();\n exec(\"justifyLeft\");\n setActiveAlign(\"left\");\n }}\n >\n <FaAlignLeft size={14} />\n </button>\n\n <button\n type=\"button\"\n title=\"Align Center\"\n className={`rte-toolbar-button ${activeAlign === \"center\" ? \"active\" : \"\"}`}\n onMouseDown={(e) => {\n e.preventDefault();\n exec(\"justifyCenter\");\n setActiveAlign(\"center\");\n }}\n >\n <FaAlignCenter size={14} />\n </button>\n\n <button\n type=\"button\"\n title=\"Align Right\"\n className={`rte-toolbar-button ${activeAlign === \"right\" ? \"active\" : \"\"}`}\n onMouseDown={(e) => {\n e.preventDefault();\n exec(\"justifyRight\");\n setActiveAlign(\"right\");\n }}\n >\n <FaAlignRight size={14} />\n </button>\n\n <div style={{ width: '1px', height: '20px', backgroundColor: '#e5e7eb', margin: '0 4px' }}></div>\n\n {/* Lists */}\n <button\n type=\"button\"\n title=\"Unordered List\"\n onMouseDown={(e) => {\n e.preventDefault();\n handleSelect(\"unordered\");\n }}\n className={`rte-toolbar-button ${currentListType === \"unordered\" ? \"active\" : \"\"}`}\n >\n <FaListUl size={14} />\n </button>\n <button\n type=\"button\"\n title=\"Ordered List\"\n onMouseDown={(e) => {\n e.preventDefault();\n handleSelect(\"ordered\");\n }}\n className={`rte-toolbar-button ${currentListType === \"ordered\" ? \"active\" : \"\"}`}\n >\n <FaListOl size={14} />\n </button>\n\n {/* Line Height */}\n <div style={{ position: 'relative', display: 'flex', alignItems: 'center' }}>\n <select\n value={currentLineHeight}\n onMouseDown={(e) => e.stopPropagation()}\n onChange={(e) => {\n e.preventDefault();\n const height = e.target.value;\n if (height) {\n onLineHeightChange(height);\n setCurrentLineHeight(height);\n }\n focus();\n }}\n className=\"rte-toolbar-select\"\n style={{ width: '64px', paddingLeft: '24px' }}\n >\n <option value=\"\" disabled>↕</option>\n {['1', '1.15', '1.5', '2'].map((h) => (\n <option key={h} value={h}>{h}</option>\n ))}\n </select>\n <div style={{ position: 'absolute', left: '6px', pointerEvents: 'none', color: '#9ca3af' }}>\n <FaTextHeight size={12} />\n </div>\n </div>\n\n <div style={{ width: '1px', height: '20px', backgroundColor: '#e5e7eb', margin: '0 4px' }}></div>\n\n <div style={{ width: '1px', height: '20px', backgroundColor: '#e5e7eb', margin: '0 4px' }}></div>\n \n <button\n type=\"button\"\n title=\"Add Link\"\n className=\"rte-toolbar-button\"\n onMouseDown={(e) => {\n e.preventDefault();\n addLink();\n }}\n >\n <FaLink size={14} />\n </button>\n\n <input\n ref={fileInputRef}\n type=\"file\"\n accept=\"image/*\"\n style={{ display: \"none\" }}\n onChange={handleImageUpload}\n disabled={isUploading}\n />\n <button\n type=\"button\"\n className=\"rte-toolbar-button\"\n onMouseDown={(e) => {\n e.preventDefault();\n if (!isUploading) fileInputRef.current?.click();\n }}\n disabled={isUploading}\n title=\"Upload image\"\n >\n {isUploading ? (\n <div className=\"rte-spinner\" style={{ width: '14px', height: '14px', borderWidth: '2px' }}></div>\n ) : (\n <FaImage size={14} />\n )}\n </button>\n\n <div style={{ width: '1px', height: '20px', backgroundColor: '#e5e7eb', margin: '0 4px' }}></div>\n\n {/* Table */}\n <button\n type=\"button\"\n title=\"Insert Table\"\n className=\"rte-toolbar-button\"\n onMouseDown={(e) => {\n e.preventDefault();\n const sel = window.getSelection();\n if (sel && sel.rangeCount > 0) {\n selectionRangeRef.current = sel.getRangeAt(0).cloneRange();\n }\n setTableModalOpen(true);\n }}\n >\n <FaTable size={14} />\n </button>\n\n {/* Video */}\n <button\n type=\"button\"\n title=\"Embed Video (YouTube, Vimeo, etc.)\"\n className={`rte-toolbar-button ${videoModalOpen ? 'active' : ''}`}\n onMouseDown={(e) => {\n e.preventDefault();\n saveSelection();\n setVideoModalOpen(true);\n }}\n >\n <FaVideo size={14} />\n </button>\n\n {/* Table Actions (Conditional) */}\n {(() => {\n if (typeof window === \"undefined\") return null;\n const sel = window.getSelection();\n // Robust check: inside cell OR the table itself is selected\n const isCell = sel && sel.rangeCount > 0 && sel.anchorNode && (findParentTag(sel.anchorNode, 'TD') || findParentTag(sel.anchorNode, 'TH'));\n const isTable = sel && sel.rangeCount > 0 && sel.anchorNode && findParentTag(sel.anchorNode, 'TABLE');\n \n if (isCell || isTable) {\n return (\n <>\n <div style={{ width: '1px', height: '20px', backgroundColor: '#e5e7eb', margin: '0 4px' }}></div>\n <button type=\"button\" title=\"Add Row Above\" className=\"rte-toolbar-button\" onMouseDown={(e) => { e.preventDefault(); tableAction('addRowAbove'); }}>+R↑</button>\n <button type=\"button\" title=\"Add Row Below\" className=\"rte-toolbar-button\" onMouseDown={(e) => { e.preventDefault(); tableAction('addRowBelow'); }}>+R↓</button>\n <button type=\"button\" title=\"Add Col Before\" className=\"rte-toolbar-button\" onMouseDown={(e) => { e.preventDefault(); tableAction('addColBefore'); }}>+C←</button>\n <button type=\"button\" title=\"Add Col After\" className=\"rte-toolbar-button\" onMouseDown={(e) => { e.preventDefault(); tableAction('addColAfter'); }}>+C→</button>\n <button type=\"button\" title=\"Merge Cells (Right)\" className=\"rte-toolbar-button\" onMouseDown={(e) => { e.preventDefault(); tableAction('mergeRight'); }}><FaObjectGroup size={14} /></button>\n <div style={{ display: 'flex', gap: '10px' }}>\n <button\n type=\"button\"\n title=\"Delete Row\"\n className=\"rte-toolbar-button rte-toolbar-button-danger\"\n onMouseDown={(e) => { e.preventDefault(); tableAction('deleteRow'); }}\n >\n <FaTrash size={12} />\n <span style={{ fontSize: '10px' }}>Row</span>\n </button>\n\n <button\n type=\"button\"\n title=\"Delete Column\"\n className=\"rte-toolbar-button rte-toolbar-button-danger\"\n onMouseDown={(e) => { e.preventDefault(); tableAction('deleteCol'); }}\n >\n <FaTrash size={12} />\n <span style={{ fontSize: '10px' }}>Col</span>\n </button>\n\n <button\n type=\"button\"\n title=\"Delete Table\"\n className=\"rte-toolbar-button rte-toolbar-button-danger\"\n onMouseDown={(e) => { e.preventDefault(); tableAction('deleteTable'); }}\n >\n <FaTrash size={12} />\n <span style={{ fontSize: '10px' }}>Table</span>\n </button>\n</div>\n </>\n );\n }\n return null;\n })()}\n </div>\n )}\n {/* Editor Content Area */}\n <div\n ref={contentWrapperRef}\n className={`rte-content-wrapper${areaHighlightMode ? \" rte-area-highlight-mode\" : \"\"}`}\n style={{ position: 'relative' }}\n onMouseDown={handleAreaSelectMouseDown}\n >\n {areaHighlightMode && (\n <div className=\"rte-area-highlight-hint\" aria-hidden=\"true\">\n Drag to select an area, then release to apply highlight\n </div>\n )}\n {marqueePreview && (\n <div\n className=\"rte-marquee-preview\"\n style={{\n left: marqueePreview.left,\n top: marqueePreview.top,\n width: marqueePreview.width,\n height: marqueePreview.height,\n backgroundColor: `${bgColor}55`,\n borderColor: bgColor,\n }}\n />\n )}\n <div\n ref={editorRef}\n contentEditable={editable && disabled !== true}\n suppressContentEditableWarning\n role=\"textbox\"\n aria-multiline=\"true\"\n aria-label={label || \"Rich text editor\"}\n onInput={handleInput}\n onPaste={handlePaste}\n onDrop={handleDrop}\n onDragStart={(e) => e.preventDefault()}\n onDragOver={(e) => e.preventDefault()}\n onKeyDown={handleKeyDown}\n onKeyUp={handleKeyUp}\n onMouseUp={() => {\n saveSelection();\n setSelectionVersion((v) => v + 1);\n }}\n onClick={handleEditorClick}\n onFocus={handleEditorFocus}\n onBlur={handleEditorBlur}\n style={{\n minHeight: minHeight || '150px',\n maxHeight: maxHeight || '500px',\n paddingLeft: paddingLeft || '12px'\n }}\n className={`rte-content${editable ? \" rte-is-editable\" : \"\"}${editorFocused ? \" rte-is-focused\" : \"\"}`}\n />\n {isEmpty && editable && disabled !== true && (\n <div\n className=\"rte-placeholder\"\n style={{ left: paddingLeft || '12px' }}\n aria-hidden=\"true\"\n >\n {placeholder}\n </div>\n )}\n {renderMediaToolbar()}\n </div>\n\n \n {/* Footer with Character/Word Count */}\n <div className=\"rte-footer\">\n <div className=\"rte-footer-content\">\n <span className=\"rte-footer-item\"><b>{metrics.words}</b> words</span>\n <span className=\"rte-footer-separator\">•</span>\n <span className=\"rte-footer-item\"><b>{metrics.chars}</b> characters</span>\n </div>\n </div>\n {linkModalOpen && (\n <div className=\"rte-modal-overlay\" onClick={cancelLink}>\n <div className=\"rte-modal\" onClick={(e) => e.stopPropagation()}>\n <div className=\"rte-modal-header\">\n <h3 className=\"rte-modal-title\">Insert Link</h3>\n </div>\n <div className=\"rte-form-group\">\n <label className=\"rte-label\">Link Text</label>\n <input\n type=\"text\"\n className=\"rte-input\"\n placeholder=\"e.g. Google\"\n value={linkText}\n onChange={(e) => setLinkText(e.target.value)}\n />\n </div>\n <div className=\"rte-form-group\">\n <label className=\"rte-label\">URL</label>\n <input\n type=\"text\"\n className=\"rte-input\"\n placeholder=\"https://example.com\"\n value={linkUrl}\n onChange={(e) => setLinkUrl(e.target.value)}\n onKeyDown={(e) => e.key === 'Enter' && confirmLink()}\n autoFocus\n />\n </div>\n <div className=\"rte-modal-actions\">\n <button type=\"button\" className=\"rte-button rte-button-secondary\" onClick={cancelLink}>Cancel</button>\n <button type=\"button\" className=\"rte-button rte-button-primary\" onClick={confirmLink} disabled={!linkUrl}>Insert</button>\n </div>\n </div>\n </div>\n )}\n\n {/* Table Modal */}\n {tableModalOpen && (\n <div className=\"rte-modal-overlay\" onClick={() => setTableModalOpen(false)}>\n <div className=\"rte-modal\" onClick={(e) => e.stopPropagation()}>\n <h3 className=\"rte-modal-title\">Insert Table</h3>\n <div className=\"rte-form-group\">\n <label className=\"rte-label\">Rows</label>\n <input type=\"number\" className=\"rte-input\" value={tableRows} onChange={(e) => setTableRows(e.target.value)} min=\"1\" max=\"10\" />\n </div>\n <div className=\"rte-form-group\">\n <label className=\"rte-label\">Columns</label>\n <input type=\"number\" className=\"rte-input\" value={tableCols} onChange={(e) => setTableCols(e.target.value)} min=\"1\" max=\"10\" />\n </div>\n <div className=\"rte-modal-actions\">\n <button type=\"button\" className=\"rte-button rte-button-secondary\" onClick={() => setTableModalOpen(false)}>Cancel</button>\n <button type=\"button\" className=\"rte-button rte-button-primary\" onClick={insertTable}>Insert</button>\n </div>\n </div>\n </div>\n )}\n\n {/* Video Modal */}\n {videoModalOpen && (\n <div className=\"rte-modal-overlay\" onClick={() => setVideoModalOpen(false)}>\n <div className=\"rte-modal\" onClick={(e) => e.stopPropagation()}>\n <div className=\"rte-modal-header\">\n <h3 className=\"rte-modal-title\">Embed Video</h3>\n </div>\n <div className=\"rte-form-group\">\n <label className=\"rte-label\">Paste Video URL (YouTube, Vimeo...) <span style={{ color: '#ef4444' }}>*</span></label>\n <input \n type=\"text\" \n className=\"rte-input\" \n value={videoUrl} \n onChange={(e) => setVideoUrl(e.target.value)} \n placeholder=\"Paste URL here...\" \n autoFocus \n onKeyDown={(e) => {\n if (e.key === 'Enter' && videoUrl.trim()) insertVideo();\n if (e.key === 'Escape') setVideoModalOpen(false);\n }}\n />\n </div>\n <div className=\"rte-modal-actions\">\n <button type=\"button\" className=\"rte-button rte-button-secondary\" onClick={() => setVideoModalOpen(false)}>Cancel</button>\n <button \n type=\"button\" \n className=\"rte-button rte-button-primary\" \n onClick={() => {\n if (videoUrl.trim()) {\n insertVideo();\n }\n }}\n disabled={!videoUrl.trim()}\n >\n Embed Video\n </button>\n </div>\n </div>\n </div>\n )}\n\n {/* Image Zoom Modal */}\n {imageModalOpen && (\n <div className=\"rte-modal-overlay\" onClick={closeImageModal}>\n <div\n style={{ position: \"relative\", maxWidth: \"90%\", maxHeight: \"90%\" }}\n onClick={(e) => e.stopPropagation()}\n >\n <img\n src={selectedImageUrl}\n style={{\n width: \"100%\",\n maxHeight: \"90vh\",\n borderRadius: '12px',\n transform: `scale(${zoomLevel})`,\n transition: \"transform 0.2s ease\",\n boxShadow: '0 25px 50px -12px rgba(0,0,0,0.5)'\n }}\n alt=\"Zoomed\"\n />\n </div>\n </div>\n )}\n </div>\n\n {showEditButton && editable && (\n <div style={{ display: \"flex\", justifyContent: \"flex-end\", gap: \"12px\", marginTop: \"12px\" }}>\n <button\n type=\"button\"\n className=\"rte-button rte-button-secondary\"\n onClick={() => setEditable(false)}\n >\n Cancel\n </button>\n <button\n type=\"button\"\n className=\"rte-button rte-button-primary\"\n onClick={() => {\n onChange && onChange(html);\n setEditable(false);\n }}\n >\n Save Changes\n </button>\n </div>\n )}\n </div>\n );\n}\n"],"names":["FaImage","className","size","color","style","React","createElement","display","alignItems","justifyContent","fontSize","dangerouslySetInnerHTML","__html","FaBold","FaItalic","FaUnderline","FaTextHeight","FaAlignCenter","FaAlignRight","FaAlignLeft","FaListOl","FaListUl","FaFont","FaLink","FaTable","FaObjectGroup","FaTrash","FaVideo","isValidDraftFormat","content","blocks","entityMap","draftBlocksToHTML","console","warn","map","b","text","join","Spinner","LabelComponent","children","marginBottom","escapeHtml","str","String","replace","escapeAttr","URL_REGEX","rectsIntersect","a","right","left","bottom","top","caretRangeFromClientPoint","x","y","_document$caretPositi","_document","document","caretRangeFromPoint","position","caretPositionFromPoint","call","range","createRange","setStart","offsetNode","offset","collapse","clipRectToBounds","rect","bounds","Math","max","min","width","height","BLOCK_SELECTOR","getIntersectingBlocks","editor","clientRect","candidates","querySelectorAll","filter","el","contains","closest","getBoundingClientRect","some","other","insertAreaHighlightRegion","editorRect","clipped","widthPx","round","heightPx","region","backgroundColor","minHeight","maxWidth","boxSizing","padding","borderRadius","margin","length","first","parentNode","insertBefore","appendChild","forEach","block","insertRange","innerHTML","startContainer","node","nodeType","getClientRectFromDrag","startX","startY","currentX","currentY","RichTextEditor","onChange","showEditButton","onBlur","disabled","editable","initialEditable","value","isLoading","isList","label","placeholder","showBorder","paddingLeft","maxHeight","onImageUpload","editorRef","useRef","contentWrapperRef","fileInputRef","scrollTopRef","areaDragRef","bgColorRef","html","setHtml","useState","linkModalOpen","setLinkModalOpen","linkUrl","setLinkUrl","linkText","setLinkText","selectionRangeRef","setEditable","editorFocused","setEditorFocused","lastSynchronizedHtmlRef","syncProcessedMediaRef","useEffect","currentListType","setCurrentListType","isBold","setIsBold","isItalic","setIsItalic","isUnderline","setIsUnderline","currentFontSize","setCurrentFontSize","currentLineHeight","setCurrentLineHeight","activeAlign","setActiveAlign","currentBlockFormat","setCurrentBlockFormat","imageModalOpen","setImageModalOpen","selectedImageUrl","setSelectedImageUrl","zoomLevel","setZoomLevel","isUploading","setIsUploading","videoModalOpen","setVideoModalOpen","videoUrl","setVideoUrl","tableModalOpen","setTableModalOpen","hoveredTable","setHoveredTable","tableRows","setTableRows","tableCols","setTableCols","selectionVersion","setSelectionVersion","selectedMedia","setSelectedMedia","mediaWidthInput","setMediaWidthInput","mediaWidthUnit","setMediaWidthUnit","metrics","setMetrics","words","chars","isEmpty","setIsEmpty","areaHighlightMode","setAreaHighlightMode","marqueePreview","setMarqueePreview","updateMetrics","useCallback","current","innerText","cleanText","trim","split","stripped","hasMedia","querySelector","openImageModal","url","scrollTop","closeImageModal","saveSelection","window","sel","getSelection","rangeCount","getRangeAt","cloneRange","handleKeyUp","v","handleZoomIn","prevZoom","handleZoomOut","handleKeyDown","e","key","handleWheel","ctrlKey","preventDefault","deltaY","addEventListener","passive","removeEventListener","requestAnimationFrame","clearMediaSelection","container","updateMediaControlVisibility","newContent","unescapeHtml","error","LIST_BLOCK_MEDIA_SELECTOR","isListItemEffectivelyEmpty","listItem","clone","cloneNode","remove","textContent","hoistBlockMediaOutOfListItems","changed","list","items","Array","from","child","tagName","blockMedia","hadText","media","removeChild","nextSibling","processExistingMedia","processExistingImages","processExistingVideos","getCleanHtml","stripEditorChrome","triggerChange","next","isParentStyle","tagNames","includes","fontWeight","Number","fontStyle","textDecoration","getAttribute","rgbToHex","rgb","result","match","slice","hex","parseInt","toString","getColorAtCursor","anchorNode","computedColor","getComputedStyle","root","element","classList","getEditorInnerWidth","clientWidth","ensureImageMediaFrame","imageContainer","frame","getImageMediaTarget","getMediaWidthPercent","dataset","widthPercent","endsWith","editorWidth","getMediaWidthPx","syncMediaWidthControls","applyMediaWidthPercent","percent","clamped","marginLeft","marginTop","paddingBottom","img","objectFit","applyMediaWidthPx","px","normalizeMediaWidth","parseFloat","_editorRef$current","selectMediaContainer","_editorRef$current2","add","attachMediaResizeHandle","_resizeTarget$querySe","resizeTarget","handle","title","setAttribute","event","stopPropagation","clientX","startWidth","onMouseMove","moveEvent","nextWidth","onMouseUp","handleEditorFocus","handleEditorBlur","_editorRef$current3","activeElement","HTMLElement","pointerEvents","BLOCK_TAGS","getActiveBlock","getBlockFormat","tag","toLowerCase","createMediaDeleteButton","onRemove","deleteBtn","type","onclick","handleGlobalSelectionSync","_editorRef$current4","listFound","nodeName","computedAlign","textAlign","collapsed","setFontColor","queryCommandState","parentElement","sizeValue","focus","exec","command","execCommand","fontColor","bgColor","setBgColor","getActiveTextColor","restoreSavedSelection","removeAllRanges","addRange","applyTextColor","applyBackgroundColor","applyMarqueeHighlight","clippedRect","cell","handleAreaSelectMouseDown","button","target","wrapper","wrapperRect","clientY","updatePreview","drag","onMove","ev","onUp","addLink","selectedText","findParentTag","curr","tableAction","action","row","table","newRowAbove","insertRow","rowIndex","i","cells","newCell","insertCell","border","newRowBelow","cellIndex","rows","cellIndexAfter","deleteRow","targetRowIndex","targetRow","targetCell","selectNodeContents","idx","deleteCell","_table$rows$rowIndex","targetColIndex","nextElementSibling","nextCell","colSpan","insertTable","cols","tableHtml","j","parseVideoUrl","ytRegExp","ytMatch","vimeoRegExp","vimeoMatch","dmRegExp","dmMatch","insertVideo","embedUrl","embedHtml","err","div","videoContainer","mediaEnhanced","_img$closest","existingWrapper","cursor","src","align","insertImage","dataUrl","fileName","alt","insertNodeAtCursor","_editorRef$current5","readFileAsDataURL","file","Promise","res","rej","reader","FileReader","onload","onerror","readAsDataURL","handlePaste","clipboardData","item","kind","indexOf","getAsFile","uploadPromise","then","finalUrl","mediaUrl","name","catch","htmlData","getData","tempDiv","plainText","htmlToInsert","safeUrl","handleDrop","files","dataTransfer","imageFiles","startsWith","deleteContents","insertNode","space","createTextNode","setStartAfter","txt","isCursorAtStartOfListItem","prefixRange","setEnd","startOffset","isCursorAtEndOfListItem","suffixRange","childNodes","prepareListItemForTyping","selection","activeColor","newRange","span","firstChild","_editorRef$current6","applyMarkdownShortcut","parent","newItem","newDiv","lastElementChild","afterRange","movedFragment","extractContents","_node$closest","_node","_editorRef$current7","prevLi","previousElementSibling","_list$parentNode","metaKey","confirmLink","test","safeText","linkHtml","cancelLink","handleSelect","applyBlockFormat","format","clearFormatting","deleteTextBeforeCursorInBlock","nextRange","altKey","isCollapsed","textBeforeCursor","shortcuts","#","##","###",">","-","*","1.","onLineHeightChange","walker","createTreeWalker","NodeFilter","SHOW_ELEMENT","SHOW_TEXT","acceptNode","intersectsNode","FILTER_ACCEPT","FILTER_REJECT","blocksToStyle","Set","blockTags","tempRange","nextNode","lineHeight","common","commonAncestorContainer","newCommon","applyFontSize","sizePx","nodesToStyle","push","savedRange","lastInsertedNode","textNode","isBlockLevel","endOffset","endContainer","newSpan","substring","handleInput","handleImageUpload","handleEditorClick","_editorRef$current8","clickedMedia","clickedLink","open","href","setTimeout","bumpToolbarPosition","renderMediaToolbar","wrapperEl","anchorRect","mediaRect","relTop","relLeft","mediaWidth","mediaHeight","currentPercent","widthPresets","toolbarWidth","toolbarHeight","gap","preferredTop","toolbarTop","applyCustomMediaWidth","num","isNaN","handleUnitChange","newUnit","editorInnerWidth","currentVal","converted","handleAlignment","setWidth","removeMedia","isActivePercent","abs","isFormControl","Element","onMouseDown","onClick","zIndex","_e$relatedTarget","_e$relatedTarget$clos","relatedTarget","onKeyDown","onMouseOver","onMouseOut","related","onDrop","onDragOver","s","prev","h","ref","accept","_fileInputRef$current","click","borderWidth","isCell","isTable","Fragment","borderColor","contentEditable","suppressContentEditableWarning","role","onInput","onPaste","onDragStart","onKeyUp","onFocus","autoFocus","transform","transition","boxShadow"],"mappings":"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","x_google_ignoreList":[4]}
|
|
1
|
+
{"version":3,"file":"index.cjs.js","sources":["../src/icons.jsx","../src/utils.js","../src/Spinner.jsx","../src/Label.jsx","../node_modules/style-inject/dist/style-inject.es.js","../src/RichTextEditor.jsx"],"sourcesContent":["import React from 'react';\n\nexport const FaImage = ({ className, size, color, style }) => {\n return (\n <span className={className} style={{ display: 'inline-flex', alignItems: 'center', justifyContent: 'center', fontSize: size || '1em', color: color || 'inherit', ...style }} dangerouslySetInnerHTML={{ __html: `<svg stroke=\"currentColor\" fill=\"currentColor\" stroke-width=\"0\" viewBox=\"0 0 512 512\" height=\"1em\" width=\"1em\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M464 448H48c-26.51 0-48-21.49-48-48V112c0-26.51 21.49-48 48-48h416c26.51 0 48 21.49 48 48v288c0 26.51-21.49 48-48 48zM112 120c-30.928 0-56 25.072-56 56s25.072 56 56 56 56-25.072 56-56-25.072-56-56-56zM64 384h384V272l-87.515-87.515c-4.686-4.686-12.284-4.686-16.971 0L208 320l-55.515-55.515c-4.686-4.686-12.284-4.686-16.971 0L64 336v48z\"></path></svg>` }} />\n );\n};\n\nexport const FaArrowDown = ({ className, size, color, style }) => {\n return (\n <span className={className} style={{ display: 'inline-flex', alignItems: 'center', justifyContent: 'center', fontSize: size || '1em', color: color || 'inherit', ...style }} dangerouslySetInnerHTML={{ __html: `<svg stroke=\"currentColor\" fill=\"currentColor\" stroke-width=\"0\" viewBox=\"0 0 448 512\" height=\"1em\" width=\"1em\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M413.1 222.5l22.2 22.2c9.4 9.4 9.4 24.6 0 33.9L241 473c-9.4 9.4-24.6 9.4-33.9 0L12.7 278.6c-9.4-9.4-9.4-24.6 0-33.9l22.2-22.2c9.5-9.5 25-9.3 34.3.4L184 343.4V56c0-13.3 10.7-24 24-24h32c13.3 0 24 10.7 24 24v287.4l114.8-120.5c9.3-9.8 24.8-10 34.3-.4z\"></path></svg>` }} />\n );\n};\n\nexport const FaBold = ({ className, size, color, style }) => {\n return (\n <span className={className} style={{ display: 'inline-flex', alignItems: 'center', justifyContent: 'center', fontSize: size || '1em', color: color || 'inherit', ...style }} dangerouslySetInnerHTML={{ __html: `<svg stroke=\"currentColor\" fill=\"currentColor\" stroke-width=\"0\" viewBox=\"0 0 384 512\" height=\"1em\" width=\"1em\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M333.49 238a122 122 0 0 0 27-65.21C367.87 96.49 308 32 233.42 32H34a16 16 0 0 0-16 16v48a16 16 0 0 0 16 16h31.87v288H34a16 16 0 0 0-16 16v48a16 16 0 0 0 16 16h209.32c70.8 0 134.14-51.75 141-122.4 4.74-48.45-16.39-92.06-50.83-119.6zM145.66 112h87.76a48 48 0 0 1 0 96h-87.76zm87.76 288h-87.76V288h87.76a56 56 0 0 1 0 112z\"></path></svg>` }} />\n );\n};\n\nexport const FaItalic = ({ className, size, color, style }) => {\n return (\n <span className={className} style={{ display: 'inline-flex', alignItems: 'center', justifyContent: 'center', fontSize: size || '1em', color: color || 'inherit', ...style }} dangerouslySetInnerHTML={{ __html: `<svg stroke=\"currentColor\" fill=\"currentColor\" stroke-width=\"0\" viewBox=\"0 0 320 512\" height=\"1em\" width=\"1em\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M320 48v32a16 16 0 0 1-16 16h-62.76l-80 320H208a16 16 0 0 1 16 16v32a16 16 0 0 1-16 16H16a16 16 0 0 1-16-16v-32a16 16 0 0 1 16-16h62.76l80-320H112a16 16 0 0 1-16-16V48a16 16 0 0 1 16-16h192a16 16 0 0 1 16 16z\"></path></svg>` }} />\n );\n};\n\nexport const FaUnderline = ({ className, size, color, style }) => {\n return (\n <span className={className} style={{ display: 'inline-flex', alignItems: 'center', justifyContent: 'center', fontSize: size || '1em', color: color || 'inherit', ...style }} dangerouslySetInnerHTML={{ __html: `<svg stroke=\"currentColor\" fill=\"currentColor\" stroke-width=\"0\" viewBox=\"0 0 448 512\" height=\"1em\" width=\"1em\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M32 64h32v160c0 88.22 71.78 160 160 160s160-71.78 160-160V64h32a16 16 0 0 0 16-16V16a16 16 0 0 0-16-16H272a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32v160a80 80 0 0 1-160 0V64h32a16 16 0 0 0 16-16V16a16 16 0 0 0-16-16H32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16zm400 384H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16z\"></path></svg>` }} />\n );\n};\n\nexport const FaTextHeight = ({ className, size, color, style }) => {\n return (\n <span className={className} style={{ display: 'inline-flex', alignItems: 'center', justifyContent: 'center', fontSize: size || '1em', color: color || 'inherit', ...style }} dangerouslySetInnerHTML={{ __html: `<svg stroke=\"currentColor\" fill=\"currentColor\" stroke-width=\"0\" viewBox=\"0 0 576 512\" height=\"1em\" width=\"1em\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M304 32H16A16 16 0 0 0 0 48v96a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32h56v304H80a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h160a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16h-40V112h56v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16zm256 336h-48V144h48c14.31 0 21.33-17.31 11.31-27.31l-80-80a16 16 0 0 0-22.62 0l-80 80C379.36 126 384.36 144 400 144h48v224h-48c-14.31 0-21.32 17.31-11.31 27.31l80 80a16 16 0 0 0 22.62 0l80-80C580.64 386 575.64 368 560 368z\"></path></svg>` }} />\n );\n};\n\nexport const FaAlignCenter = ({ className, size, color, style }) => {\n return (\n <span className={className} style={{ display: 'inline-flex', alignItems: 'center', justifyContent: 'center', fontSize: size || '1em', color: color || 'inherit', ...style }} dangerouslySetInnerHTML={{ __html: `<svg stroke=\"currentColor\" fill=\"currentColor\" stroke-width=\"0\" viewBox=\"0 0 448 512\" height=\"1em\" width=\"1em\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M432 160H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0 256H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM108.1 96h231.81A12.09 12.09 0 0 0 352 83.9V44.09A12.09 12.09 0 0 0 339.91 32H108.1A12.09 12.09 0 0 0 96 44.09V83.9A12.1 12.1 0 0 0 108.1 96zm231.81 256A12.09 12.09 0 0 0 352 339.9v-39.81A12.09 12.09 0 0 0 339.91 288H108.1A12.09 12.09 0 0 0 96 300.09v39.81a12.1 12.1 0 0 0 12.1 12.1z\"></path></svg>` }} />\n );\n};\n\nexport const FaAlignRight = ({ className, size, color, style }) => {\n return (\n <span className={className} style={{ display: 'inline-flex', alignItems: 'center', justifyContent: 'center', fontSize: size || '1em', color: color || 'inherit', ...style }} dangerouslySetInnerHTML={{ __html: `<svg stroke=\"currentColor\" fill=\"currentColor\" stroke-width=\"0\" viewBox=\"0 0 448 512\" height=\"1em\" width=\"1em\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M16 224h416a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16zm416 192H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm3.17-384H172.83A12.82 12.82 0 0 0 160 44.83v38.34A12.82 12.82 0 0 0 172.83 96h262.34A12.82 12.82 0 0 0 448 83.17V44.83A12.82 12.82 0 0 0 435.17 32zm0 256H172.83A12.82 12.82 0 0 0 160 300.83v38.34A12.82 12.82 0 0 0 172.83 352h262.34A12.82 12.82 0 0 0 448 339.17v-38.34A12.82 12.82 0 0 0 435.17 288z\"></path></svg>` }} />\n );\n};\n\nexport const FaAlignJustify = ({ className, size, color, style }) => {\n return (\n <span className={className} style={{ display: 'inline-flex', alignItems: 'center', justifyContent: 'center', fontSize: size || '1em', color: color || 'inherit', ...style }} dangerouslySetInnerHTML={{ __html: `<svg stroke=\"currentColor\" fill=\"currentColor\" stroke-width=\"0\" viewBox=\"0 0 448 512\" height=\"1em\" width=\"1em\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M432 416H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-128H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-128H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-128H16A16 16 0 0 0 0 48v32a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16z\"></path></svg>` }} />\n );\n};\n\nexport const FaAlignLeft = ({ className, size, color, style }) => {\n return (\n <span className={className} style={{ display: 'inline-flex', alignItems: 'center', justifyContent: 'center', fontSize: size || '1em', color: color || 'inherit', ...style }} dangerouslySetInnerHTML={{ __html: `<svg stroke=\"currentColor\" fill=\"currentColor\" stroke-width=\"0\" viewBox=\"0 0 448 512\" height=\"1em\" width=\"1em\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M12.83 352h262.34A12.82 12.82 0 0 0 288 339.17v-38.34A12.82 12.82 0 0 0 275.17 288H12.83A12.82 12.82 0 0 0 0 300.83v38.34A12.82 12.82 0 0 0 12.83 352zm0-256h262.34A12.82 12.82 0 0 0 288 83.17V44.83A12.82 12.82 0 0 0 275.17 32H12.83A12.82 12.82 0 0 0 0 44.83v38.34A12.82 12.82 0 0 0 12.83 96zM432 160H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0 256H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16z\"></path></svg>` }} />\n );\n};\n\nexport const FaListOl = ({ className, size, color, style }) => {\n return (\n <span className={className} style={{ display: 'inline-flex', alignItems: 'center', justifyContent: 'center', fontSize: size || '1em', color: color || 'inherit', ...style }} dangerouslySetInnerHTML={{ __html: `<svg stroke=\"currentColor\" fill=\"currentColor\" stroke-width=\"0\" viewBox=\"0 0 512 512\" height=\"1em\" width=\"1em\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M61.77 401l17.5-20.15a19.92 19.92 0 0 0 5.07-14.19v-3.31C84.34 356 80.5 352 73 352H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8h22.83a157.41 157.41 0 0 0-11 12.31l-5.61 7c-4 5.07-5.25 10.13-2.8 14.88l1.05 1.93c3 5.76 6.29 7.88 12.25 7.88h4.73c10.33 0 15.94 2.44 15.94 9.09 0 4.72-4.2 8.22-14.36 8.22a41.54 41.54 0 0 1-15.47-3.12c-6.49-3.88-11.74-3.5-15.6 3.12l-5.59 9.31c-3.72 6.13-3.19 11.72 2.63 15.94 7.71 4.69 20.38 9.44 37 9.44 34.16 0 48.5-22.75 48.5-44.12-.03-14.38-9.12-29.76-28.73-34.88zM496 224H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM16 160h64a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H64V40a8 8 0 0 0-8-8H32a8 8 0 0 0-7.14 4.42l-8 16A8 8 0 0 0 24 64h8v64H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8zm-3.91 160H80a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H41.32c3.29-10.29 48.34-18.68 48.34-56.44 0-29.06-25-39.56-44.47-39.56-21.36 0-33.8 10-40.46 18.75-4.37 5.59-3 10.84 2.8 15.37l8.58 6.88c5.61 4.56 11 2.47 16.12-2.44a13.44 13.44 0 0 1 9.46-3.84c3.33 0 9.28 1.56 9.28 8.75C51 248.19 0 257.31 0 304.59v4C0 316 5.08 320 12.09 320z\"></path></svg>` }} />\n );\n};\n\nexport const FaListUl = ({ className, size, color, style }) => {\n return (\n <span className={className} style={{ display: 'inline-flex', alignItems: 'center', justifyContent: 'center', fontSize: size || '1em', color: color || 'inherit', ...style }} dangerouslySetInnerHTML={{ __html: `<svg stroke=\"currentColor\" fill=\"currentColor\" stroke-width=\"0\" viewBox=\"0 0 512 512\" height=\"1em\" width=\"1em\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M48 48a48 48 0 1 0 48 48 48 48 0 0 0-48-48zm0 160a48 48 0 1 0 48 48 48 48 0 0 0-48-48zm0 160a48 48 0 1 0 48 48 48 48 0 0 0-48-48zm448 16H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16z\"></path></svg>` }} />\n );\n};\n\nexport const FaFonticons = ({ className, size, color, style }) => {\n return (\n <span className={className} style={{ display: 'inline-flex', alignItems: 'center', justifyContent: 'center', fontSize: size || '1em', color: color || 'inherit', ...style }} dangerouslySetInnerHTML={{ __html: `<svg stroke=\"currentColor\" fill=\"currentColor\" stroke-width=\"0\" viewBox=\"0 0 448 512\" height=\"1em\" width=\"1em\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M0 32v448h448V32zm187 140.9c-18.4 0-19 9.9-19 27.4v23.3c0 2.4-3.5 4.4-.6 4.4h67.4l-11.1 37.3H168v112.9c0 5.8-2 6.7 3.2 7.3l43.5 4.1v25.1H84V389l21.3-2c5.2-.6 6.7-2.3 6.7-7.9V267.7c0-2.3-2.9-2.3-5.8-2.3H84V228h28v-21c0-49.6 26.5-70 77.3-70 34.1 0 64.7 8.2 64.7 52.8l-50.7 6.1c.3-18.7-4.4-23-16.3-23zm74.3 241.8v-25.1l20.4-2.6c5.2-.6 7.6-1.7 7.6-7.3V271.8c0-4.1-2.9-6.7-6.7-7.9l-24.2-6.4 6.7-29.5h80.2v151.7c0 5.8-2.6 6.4 2.9 7.3l15.7 2.6v25.1zm80.8-255.5l9 33.2-7.3 7.3-31.2-16.6-31.2 16.6-7.3-7.3 9-33.2-21.8-24.2 3.5-9.6h27.7l15.5-28h9.3l15.5 28h27.7l3.5 9.6z\"></path></svg>` }} />\n );\n};\n\nexport const FaFont = ({ className, size, color, style }) => {\n return (\n <span className={className} style={{ display: 'inline-flex', alignItems: 'center', justifyContent: 'center', fontSize: size || '1em', color: color || 'inherit', ...style }} dangerouslySetInnerHTML={{ __html: `<svg stroke=\"currentColor\" fill=\"currentColor\" stroke-width=\"0\" viewBox=\"0 0 448 512\" height=\"1em\" width=\"1em\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M432 416h-23.41L277.88 53.69A32 32 0 0 0 247.58 32h-47.16a32 32 0 0 0-30.3 21.69L39.41 416H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h128a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16h-19.58l23.3-64h152.56l23.3 64H304a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h128a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM176.85 272L224 142.51 271.15 272z\"></path></svg>` }} />\n );\n};\n\nexport const FaLink = ({ className, size, color, style }) => {\n return (\n <span className={className} style={{ display: 'inline-flex', alignItems: 'center', justifyContent: 'center', fontSize: size || '1em', color: color || 'inherit', ...style }} dangerouslySetInnerHTML={{ __html: `<svg stroke=\"currentColor\" fill=\"currentColor\" stroke-width=\"0\" viewBox=\"0 0 512 512\" height=\"1em\" width=\"1em\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M326.612 185.391c59.747 59.809 58.927 155.698.36 214.59-.11.12-.24.25-.36.37l-67.2 67.2c-59.27 59.27-155.699 59.262-214.96 0-59.27-59.26-59.27-155.7 0-214.96l37.106-37.106c9.84-9.84 26.786-3.3 27.294 10.606.648 17.722 3.826 35.527 9.69 52.721 1.986 5.822.567 12.262-3.783 16.612l-13.087 13.087c-28.026 28.026-28.905 73.66-1.155 101.96 28.024 28.579 74.086 28.749 102.325.51l67.2-67.19c28.191-28.191 28.073-73.757 0-101.83-3.701-3.694-7.429-6.564-10.341-8.569a16.037 16.037 0 0 1-6.947-12.606c-.396-10.567 3.348-21.456 11.698-29.806l21.054-21.055c5.521-5.521 14.182-6.199 20.584-1.731a152.482 152.482 0 0 1 20.522 17.197zM467.547 44.449c-59.261-59.262-155.69-59.27-214.96 0l-67.2 67.2c-.12.12-.25.25-.36.37-58.566 58.892-59.387 154.781.36 214.59a152.454 152.454 0 0 0 20.521 17.196c6.402 4.468 15.064 3.789 20.584-1.731l21.054-21.055c8.35-8.35 12.094-19.239 11.698-29.806a16.037 16.037 0 0 0-6.947-12.606c-2.912-2.005-6.64-4.875-10.341-8.569-28.073-28.073-28.191-73.639 0-101.83l67.2-67.19c28.239-28.239 74.3-28.069 102.325.51 27.75 28.3 26.872 73.934-1.155 101.96l-13.087 13.087c-4.35 4.35-5.769 10.79-3.783 16.612 5.864 17.194 9.042 34.999 9.69 52.721.509 13.906 17.454 20.446 27.294 10.606l37.106-37.106c59.271-59.259 59.271-155.699.001-214.959z\"></path></svg>` }} />\n );\n};\n\nexport const FaTable = ({ className, size, color, style }) => {\n return (\n <span className={className} style={{ display: 'inline-flex', alignItems: 'center', justifyContent: 'center', fontSize: size || '1em', color: color || 'inherit', ...style }} dangerouslySetInnerHTML={{ __html: `<svg stroke=\"currentColor\" fill=\"currentColor\" stroke-width=\"0\" viewBox=\"0 0 512 512\" height=\"1em\" width=\"1em\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M64 448c-35.3 0-64-28.7-64-64V128c0-35.3 28.7-64 64-64H448c35.3 0 64 28.7 64 64V384c0 35.3-28.7 64-64 64H64zm96-288H64v64h96v-64zm0 96H64v64h96v-64zm0 96H64c0 17.7 14.3 32 32 32h64v-32zm128-192h-96v64h96v-64zm0 96h-96v64h96v-64zm0 96h-96v96h96v-96zm160-192h-96v64h96v-64zm0 96h-96v64h96v-64zm0 96h-96v64h64c17.7 0 32-14.3 32-32v-32z\"></path></svg>` }} />\n );\n};\n\nexport const FaYoutube = ({ className, size, color, style }) => {\n return (\n <span className={className} style={{ display: 'inline-flex', alignItems: 'center', justifyContent: 'center', fontSize: size || '1em', color: color || 'inherit', ...style }} dangerouslySetInnerHTML={{ __html: `<svg stroke=\"currentColor\" fill=\"currentColor\" stroke-width=\"0\" viewBox=\"0 0 576 512\" height=\"1em\" width=\"1em\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M549.655 124.083c-6.281-23.65-24.787-42.276-48.284-48.597C458.781 64 288 64 288 64S117.22 64 74.629 75.486c-23.497 6.322-42.003 24.947-48.284 48.597-11.412 42.867-11.412 132.305-11.412 132.305s0 89.438 11.412 132.305c6.281 23.65 24.787 41.5 48.284 47.821C117.22 448 288 448 288 448s170.781 0 213.371-11.486c23.497-6.321 42.003-24.171 48.284-47.821 11.412-42.867 11.412-132.305 11.412-132.305s0-89.438-11.412-132.305zm-317.51 213.508V175.185l142.739 81.205-142.739 81.201z\"></path></svg>` }} />\n );\n};\n\nexport const FaObjectGroup = ({ className, size, color, style }) => {\n return (\n <span className={className} style={{ display: 'inline-flex', alignItems: 'center', justifyContent: 'center', fontSize: size || '1em', color: color || 'inherit', ...style }} dangerouslySetInnerHTML={{ __html: `<svg stroke=\"currentColor\" fill=\"currentColor\" stroke-width=\"0\" viewBox=\"0 0 512 512\" height=\"1em\" width=\"1em\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M480 320h-48v48c0 17.7-14.3 32-32 32h-48v32c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V160c0-26.5 21.5-48 48-48h32v-48c0-17.7 14.3-32 32-32h48V0h32c26.5 0 48 21.5 48 48v48h48c17.7 0 32 14.3 32 32v48h32c26.5 0 48 21.5 48 48v128c0 26.5-21.5 48-48 48z\"></path></svg>` }} />\n );\n};\n\nexport const FaTrash = ({ className, size, color, style }) => {\n return (\n <span className={className} style={{ display: 'inline-flex', alignItems: 'center', justifyContent: 'center', fontSize: size || '1em', color: color || 'inherit', ...style }} dangerouslySetInnerHTML={{ __html: `<svg stroke=\"currentColor\" fill=\"currentColor\" stroke-width=\"0\" viewBox=\"0 0 448 512\" height=\"1em\" width=\"1em\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M432 32H312l-9.4-18.7A24 24 0 0 0 281.1 0H166.8a23.72 23.72 0 0 0-21.4 13.3L136 32H16A16 16 0 0 0 0 48v32a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16zM53.2 467a48 48 0 0 0 47.9 45h245.8a48 48 0 0 0 47.9-45L416 128H32z\"></path></svg>` }} />\n );\n};\n\n\nexport const FaVideo = ({ className, size, color, style }) => {\n return (\n <span className={className} style={{ display: 'inline-flex', alignItems: 'center', justifyContent: 'center', fontSize: size || '1em', color: color || 'inherit', ...style }} dangerouslySetInnerHTML={{ __html: '<svg stroke=\\\"currentColor\\\" fill=\\\"currentColor\\\" stroke-width=\\\"0\\\" viewBox=\\\"0 0 576 512\\\" height=\\\"1em\\\" width=\\\"1em\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path d=\\\"M0 128C0 92.7 28.7 64 64 64H320c35.3 0 64 28.7 64 64V384c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V128zM559.1 99.8c10.4 5.6 16.9 16.3 16.9 28.2V384c0 11.9-6.5 22.6-16.9 28.2s-23 5-32.9-1.6l-96-64L416 337.1V174.9l14.2-9.5 96-64c9.9-6.6 22.6-7.1 32.9-1.6z\\\"></path></svg>' }} />\n );\n};\n","// Basic ID generator\nexport const getRandomId = () => {\n return (\n Math.random().toString(36).substring(2, 15) +\n Math.random().toString(36).substring(2, 15)\n );\n};\n\n// DraftJS helper stubs\n// Since we are removing specific DraftJS dependencies for this package,\n// these serve as placeholders or basic HTML verifiers.\n\nexport const isValidDraftFormat = (content) => {\n if (typeof content !== \"object\" || content === null) return false;\n return !!(content.blocks && content.entityMap);\n};\n\n// A very basic fallback. Ideally, the user should pass HTML strings.\n// Dealing with full DraftJS->HTML conversion without the library is complex.\n// We assume for this package that if the legacy DraftJS format is passed,\n// the user might need to handle it or we expect HTML primarily.\nexport const draftBlocksToHTML = (content) => {\n console.warn(\n \"draftBlocksToHTML: DraftJS object detected but full conversion is simplified in this package.\",\n );\n // Return empty or try to extract text as a fallback\n if (content && content.blocks) {\n return content.blocks.map((b) => `<p>${b.text}</p>`).join(\"\");\n }\n return \"\";\n};\n","import React from 'react';\n\nconst Spinner = () => {\n return (\n <div className=\"rte-spinner-container\">\n <div className=\"rte-spinner\"></div>\n </div>\n );\n};\n\nexport default Spinner;\n","import React from 'react';\n\nconst LabelComponent = ({ children }) => {\n if (!children) return null;\n return (\n <label className=\"rte-label\" style={{ marginBottom: '4px', display: 'block' }}>\n {children}\n </label>\n );\n};\n\nexport default LabelComponent;\n","function styleInject(css, ref) {\n if ( ref === void 0 ) ref = {};\n var insertAt = ref.insertAt;\n\n if (!css || typeof document === 'undefined') { return; }\n\n var head = document.head || document.getElementsByTagName('head')[0];\n var style = document.createElement('style');\n style.type = 'text/css';\n\n if (insertAt === 'top') {\n if (head.firstChild) {\n head.insertBefore(style, head.firstChild);\n } else {\n head.appendChild(style);\n }\n } else {\n head.appendChild(style);\n }\n\n if (style.styleSheet) {\n style.styleSheet.cssText = css;\n } else {\n style.appendChild(document.createTextNode(css));\n }\n}\n\nexport default styleInject;\n","import React, { useCallback, useEffect, useRef, useState } from \"react\";\nimport { FaImage, FaBold, FaItalic, FaUnderline, FaTextHeight, FaAlignCenter, FaAlignRight, FaAlignJustify, FaAlignLeft, FaListOl, FaListUl, FaFont, FaLink, FaTable, FaYoutube, FaVideo, FaTrash, FaObjectGroup } from \"./icons\";\nimport { draftBlocksToHTML, isValidDraftFormat } from \"./utils\";\nimport Spinner from \"./Spinner\";\nimport LabelComponent from \"./Label\";\nimport \"./RichTextEditor.css\";\n\n// Helper functions for HTML escaping\nconst escapeHtml = (str) => {\n if (!str) return \"\";\n return String(str)\n .replace(/&/g, \"&\")\n .replace(/</g, \"<\")\n .replace(/>/g, \">\")\n .replace(/\\\"/g, \""\")\n .replace(/'/g, \"'\");\n};\n\nconst escapeAttr = (str) => escapeHtml(str).replace(/\"/g, \""\");\n\n// URL detection regex\nconst URL_REGEX = /(https?:\\/\\/[^\\s]+)/g;\n\nconst TRANSPARENT_BACKGROUNDS = new Set([\n \"\",\n \"transparent\",\n \"initial\",\n \"inherit\",\n \"rgba(0, 0, 0, 0)\",\n \"rgb(0, 0, 0, 0)\",\n]);\n\nconst isTransparentBackground = (value) => {\n if (!value) return true;\n const normalized = value.trim().toLowerCase();\n if (TRANSPARENT_BACKGROUNDS.has(normalized)) return true;\n const match = normalized.match(\n /^rgba?\\(\\s*(\\d+)\\s*,\\s*(\\d+)\\s*,\\s*(\\d+)(?:\\s*,\\s*([\\d.]+))?\\s*\\)$/\n );\n if (match?.[4] !== undefined && parseFloat(match[4]) === 0) return true;\n return false;\n};\n\nconst unwrapNode = (element) => {\n const parent = element.parentNode;\n if (!parent) return;\n while (element.firstChild) {\n parent.insertBefore(element.firstChild, element);\n }\n parent.removeChild(element);\n};\n\nconst unwrapAreaHighlightBlock = (block) => {\n if (!block?.classList?.contains(\"rte-area-highlight-block\")) return;\n const parent = block.parentNode;\n if (!parent) return;\n const fragment = document.createDocumentFragment();\n while (block.firstChild) {\n fragment.appendChild(block.firstChild);\n }\n parent.insertBefore(fragment, block);\n parent.removeChild(block);\n};\n\nconst stripInlineBackground = (element) => {\n if (!(element instanceof HTMLElement)) return;\n\n if (element.classList.contains(\"rte-block-highlight\")) {\n element.classList.remove(\"rte-block-highlight\");\n }\n\n if (element.tagName === \"MARK\") {\n unwrapNode(element);\n return;\n }\n\n const hadBackground =\n (element.style.backgroundColor && !isTransparentBackground(element.style.backgroundColor)) ||\n (element.style.background && !isTransparentBackground(element.style.background));\n\n if (!hadBackground) return;\n\n element.style.backgroundColor = \"\";\n element.style.background = \"\";\n\n if (!element.getAttribute(\"style\")) {\n element.removeAttribute(\"style\");\n }\n\n const tag = element.tagName;\n if (\n (tag === \"SPAN\" || tag === \"FONT\") &&\n !element.className &&\n element.attributes.length === 0\n ) {\n unwrapNode(element);\n }\n};\n\nconst collectElementsInRange = (range, root) => {\n const elements = [];\n const walker = document.createTreeWalker(root, NodeFilter.SHOW_ELEMENT);\n let node = walker.currentNode;\n while (node) {\n if (range.intersectsNode(node)) {\n elements.push(node);\n }\n node = walker.nextNode();\n }\n return elements;\n};\n\nconst elementHasRemovableBackground = (element) => {\n if (!(element instanceof HTMLElement)) return false;\n if (element.classList.contains(\"rte-area-highlight-block\")) return true;\n if (element.classList.contains(\"rte-block-highlight\")) return true;\n if (element.tagName === \"MARK\") return true;\n if (element.style?.backgroundColor && !isTransparentBackground(element.style.backgroundColor)) {\n return true;\n }\n if (element.style?.background && !isTransparentBackground(element.style.background)) {\n return true;\n }\n return false;\n};\n\nconst rectsIntersect = (a, b) =>\n !(a.right < b.left || a.left > b.right || a.bottom < b.top || a.top > b.bottom);\n\nconst caretRangeFromClientPoint = (x, y) => {\n if (document.caretRangeFromPoint) {\n return document.caretRangeFromPoint(x, y);\n }\n const position = document.caretPositionFromPoint?.(x, y);\n if (!position) return null;\n const range = document.createRange();\n range.setStart(position.offsetNode, position.offset);\n range.collapse(true);\n return range;\n};\n\nconst clipRectToBounds = (rect, bounds) => {\n const left = Math.max(rect.left, bounds.left);\n const top = Math.max(rect.top, bounds.top);\n const right = Math.min(rect.right, bounds.right);\n const bottom = Math.min(rect.bottom, bounds.bottom);\n return {\n left,\n top,\n right,\n bottom,\n width: Math.max(0, right - left),\n height: Math.max(0, bottom - top),\n };\n};\n\nconst BLOCK_SELECTOR =\n \"h1, h2, h3, h4, h5, h6, p, blockquote, li, td, th, div:not(.rte-area-highlight-block):not(.image-container):not(.video-container):not(.image-media-frame)\";\n\nconst getIntersectingBlocks = (editor, clientRect) => {\n const candidates = [...editor.querySelectorAll(BLOCK_SELECTOR)].filter((el) => {\n if (el === editor || !editor.contains(el)) return false;\n if (el.closest(\".rte-area-highlight-block, .image-container, .video-container\")) {\n return false;\n }\n return rectsIntersect(el.getBoundingClientRect(), clientRect);\n });\n\n return candidates.filter(\n (el) => !candidates.some((other) => other !== el && other.contains(el))\n );\n};\n\nconst isHighlightableBlock = (block) => {\n const text = (block.textContent || \"\").replace(/[\\u00A0\\u200B\\s]/g, \"\");\n if (text.length > 0) return true;\n return !!block.querySelector(\n \"img, table, iframe, .image-container, .video-container, svg\"\n );\n};\n\nconst createAreaHighlightWrapper = (color, textAlign, clipped, editorRect) => {\n const widthPx = Math.max(40, Math.round(clipped.width));\n const heightPx = Math.max(24, Math.round(clipped.height));\n\n const region = document.createElement(\"div\");\n region.className = \"rte-area-highlight-block\";\n region.style.backgroundColor = color;\n region.style.display = \"block\";\n region.style.width = `${widthPx}px`;\n region.style.minHeight = `${heightPx}px`;\n region.style.maxWidth = \"100%\";\n region.style.padding = \"6px 10px\";\n region.style.borderRadius = \"4px\";\n region.style.margin = \"4px 0\";\n region.style.boxSizing = \"border-box\";\n\n if (textAlign === \"center\") {\n region.style.marginLeft = \"auto\";\n region.style.marginRight = \"auto\";\n } else if (textAlign === \"right\" || textAlign === \"end\") {\n region.style.marginLeft = \"auto\";\n region.style.marginRight = \"0\";\n } else {\n const leftOffset = Math.max(0, Math.round(clipped.left - editorRect.left));\n region.style.marginLeft = `${leftOffset}px`;\n region.style.marginRight = \"auto\";\n }\n\n return region;\n};\n\nconst insertAreaHighlightRegion = (editor, clientRect, color) => {\n const editorRect = editor.getBoundingClientRect();\n const clipped = clipRectToBounds(clientRect, editorRect);\n\n const blocks = getIntersectingBlocks(editor, clipped).filter(isHighlightableBlock);\n\n if (blocks.length > 0) {\n const first = blocks[0];\n const textAlign = window.getComputedStyle(first).textAlign;\n const region = createAreaHighlightWrapper(color, textAlign, clipped, editorRect);\n\n let totalBlockHeight = 0;\n blocks.forEach((block) => {\n totalBlockHeight += block.getBoundingClientRect().height;\n });\n const targetHeight = Math.max(24, Math.round(clipped.height));\n const innerPadding = 12;\n const extraVertical = Math.max(0, targetHeight - totalBlockHeight - innerPadding);\n if (extraVertical > 0) {\n const pad = Math.round(extraVertical / 2);\n region.style.paddingTop = `${6 + pad}px`;\n region.style.paddingBottom = `${6 + pad}px`;\n }\n\n if (first.parentNode) {\n first.parentNode.insertBefore(region, first);\n } else {\n editor.appendChild(region);\n }\n\n blocks.forEach((block) => {\n region.appendChild(block);\n });\n return true;\n }\n\n const insertRange =\n caretRangeFromClientPoint(\n clipped.left + clipped.width / 2,\n clipped.top + Math.min(8, clipped.height / 2)\n ) ||\n caretRangeFromClientPoint(clipped.left + 4, clipped.top + 4);\n\n let alignNode = insertRange?.startContainer;\n if (alignNode?.nodeType === 3) alignNode = alignNode.parentNode;\n const textAlign =\n alignNode instanceof HTMLElement\n ? window.getComputedStyle(alignNode).textAlign\n : \"left\";\n\n const region = createAreaHighlightWrapper(color, textAlign, clipped, editorRect);\n region.innerHTML = \" \";\n\n if (insertRange && editor.contains(insertRange.startContainer)) {\n insertRange.collapse(true);\n let node = insertRange.startContainer;\n if (node.nodeType === 3) node = node.parentNode;\n\n while (node && node !== editor && node.parentNode !== editor) {\n node = node.parentNode;\n }\n\n if (node && node !== editor && editor.contains(node)) {\n node.parentNode.insertBefore(region, node);\n } else {\n editor.appendChild(region);\n }\n } else {\n editor.appendChild(region);\n }\n\n return true;\n};\n\nconst getClientRectFromDrag = (startX, startY, currentX, currentY) => {\n const left = Math.min(startX, currentX);\n const top = Math.min(startY, currentY);\n const right = Math.max(startX, currentX);\n const bottom = Math.max(startY, currentY);\n return {\n left,\n top,\n right,\n bottom,\n width: right - left,\n height: bottom - top,\n };\n};\n\nexport default function RichTextEditor({\n onChange,\n showEditButton,\n onBlur,\n disabled = false,\n editable: initialEditable = true,\n value,\n isLoading,\n isList = false,\n label,\n placeholder = \"Type here...\",\n showBorder = true,\n paddingLeft,\n minHeight,\n maxHeight,\n onImageUpload,\n}) {\n\n const editorRef = useRef(null);\n const contentWrapperRef = useRef(null);\n const fileInputRef = useRef(null);\n const scrollTopRef = useRef(0);\n const areaDragRef = useRef(null);\n const bgColorRef = useRef(\"#ffff00\");\n\n const [html, setHtml] = useState(\"\");\n const [linkModalOpen, setLinkModalOpen] = useState(false);\n const [linkUrl, setLinkUrl] = useState(\"\");\n const [linkText, setLinkText] = useState(\"\");\n const selectionRangeRef = useRef(null);\n const [editable, setEditable] = useState(initialEditable);\n const [editorFocused, setEditorFocused] = useState(false);\n const lastSynchronizedHtmlRef = useRef(\"\");\n const syncProcessedMediaRef = useRef(() => {});\n\n useEffect(() => {\n setEditable(initialEditable);\n }, [initialEditable]);\n\n\n // NEW: Track current list type for dropdown\n const [currentListType, setCurrentListType] = useState(null);\n\n // NEW: Track active styles for toolbar buttons\n const [isBold, setIsBold] = useState(false);\n const [isItalic, setIsItalic] = useState(false);\n const [isUnderline, setIsUnderline] = useState(false);\n\n // NEW: Track current font size\n const [currentFontSize, setCurrentFontSize] = useState(\"16\");\n\n // NEW: Track current line height\n const [currentLineHeight, setCurrentLineHeight] = useState(\"\");\n const [activeAlign, setActiveAlign] = useState(null);\n const [currentBlockFormat, setCurrentBlockFormat] = useState(\"div\");\n\n const [imageModalOpen, setImageModalOpen] = useState(false);\n const [selectedImageUrl, setSelectedImageUrl] = useState(\"\");\n const [zoomLevel, setZoomLevel] = useState(1);\n const [isUploading, setIsUploading] = useState(false);\n\n const [videoModalOpen, setVideoModalOpen] = useState(false);\n const [videoUrl, setVideoUrl] = useState(\"\");\n const [tableModalOpen, setTableModalOpen] = useState(false);\n const [hoveredTable, setHoveredTable] = useState(null);\n const [tableRows, setTableRows] = useState(3);\n const [tableCols, setTableCols] = useState(3);\n const [selectionVersion, setSelectionVersion] = useState(0);\n\n const [selectedMedia, setSelectedMedia] = useState(null);\n const [mediaWidthInput, setMediaWidthInput] = useState(\"100\");\n const [mediaWidthUnit, setMediaWidthUnit] = useState(\"%\");\n const [metrics, setMetrics] = useState({ words: 0, chars: 0 });\n const [isEmpty, setIsEmpty] = useState(!value);\n const [areaHighlightMode, setAreaHighlightMode] = useState(false);\n const [marqueePreview, setMarqueePreview] = useState(null);\n\n const updateMetrics = useCallback(() => {\n if (!editorRef.current) return;\n // Calculate metrics immediately but outside of render path\n const text = editorRef.current.innerText || \"\";\n const cleanText = text.replace(/[\\n\\r]/g, ' ').trim();\n const words = cleanText ? cleanText.split(/\\s+/).length : 0;\n const chars = text.length;\n setMetrics({ words, chars });\n\n // Track emptiness for the placeholder. Account for media-only content.\n const stripped = text.replace(/[\\u200B\\u00A0\\s]/g, \"\");\n const hasMedia = !!editorRef.current.querySelector(\"img, table, iframe\");\n setIsEmpty(stripped.length === 0 && !hasMedia);\n }, []);\n\n const openImageModal = (url) => {\n\n if (editorRef.current) {\n scrollTopRef.current = editorRef.current.scrollTop;\n }\n setSelectedImageUrl(url);\n setImageModalOpen(true);\n };\n\n const closeImageModal = () => {\n setImageModalOpen(false);\n setSelectedImageUrl(\"\");\n setZoomLevel(1);\n };\n\n const saveSelection = () => {\n if (typeof window === \"undefined\") return;\n const sel = window.getSelection();\n if (sel && sel.rangeCount > 0) {\n selectionRangeRef.current = sel.getRangeAt(0).cloneRange();\n }\n };\n\n const handleKeyUp = () => {\n saveSelection();\n setSelectionVersion(v => v + 1);\n };\n\n const handleZoomIn = () => {\n setZoomLevel((prevZoom) => prevZoom + 0.1);\n };\n\n const handleZoomOut = () => {\n setZoomLevel((prevZoom) => Math.max(0.1, prevZoom - 0.1));\n };\n\n // Effect to restore scroll position after modal closes\n useEffect(() => {\n if (!imageModalOpen && editorRef.current) {\n editorRef.current.scrollTop = scrollTopRef.current;\n }\n }, [imageModalOpen]);\n\n useEffect(() => {\n if (!imageModalOpen) return;\n\n const handleKeyDown = (e) => {\n if (e.key === 'Escape') {\n closeImageModal();\n }\n };\n\n const handleWheel = (e) => {\n if (e.ctrlKey) {\n e.preventDefault();\n if (e.deltaY < 0) {\n handleZoomIn();\n } else {\n handleZoomOut();\n }\n }\n };\n\n document.addEventListener('keydown', handleKeyDown);\n window.addEventListener('wheel', handleWheel, { passive: false });\n\n return () => {\n document.removeEventListener('keydown', handleKeyDown);\n window.removeEventListener('wheel', handleWheel);\n };\n }, [imageModalOpen]);\n\n useEffect(() => {\n if (editorRef.current && value && value !== lastSynchronizedHtmlRef.current) {\n requestAnimationFrame(() => syncProcessedMediaRef.current(editorRef.current));\n }\n }, [value]);\n\n\n useEffect(() => {\n if (!editable) {\n setEditorFocused(false);\n clearMediaSelection();\n }\n syncProcessedMediaRef.current(editorRef.current);\n }, [editable]);\n\n useEffect(() => {\n if (!editorRef.current) return;\n editorRef.current.querySelectorAll(\".image-container, .video-container\").forEach((container) => {\n updateMediaControlVisibility(container);\n });\n }, [editorFocused, editable]);\n\n useEffect(() => {\n // Only update if value is different from our last known synced state\n if (value && value !== lastSynchronizedHtmlRef.current) {\n try {\n let newContent = \"\";\n \n // Check if value is a Draft.js content state\n if (isValidDraftFormat(value)) {\n newContent = draftBlocksToHTML(value);\n } else if (typeof value === 'string') {\n // If value is already what we have in HTML state, skip unescaping\n if (value === html) {\n lastSynchronizedHtmlRef.current = value;\n return;\n }\n newContent = unescapeHtml(value);\n }\n\n if (newContent && newContent !== html) {\n lastSynchronizedHtmlRef.current = value;\n setHtml(newContent);\n if (editorRef.current && editorRef.current.innerHTML !== newContent) {\n editorRef.current.innerHTML = newContent;\n }\n requestAnimationFrame(() => syncProcessedMediaRef.current(editorRef.current));\n updateMetrics();\n }\n } catch (e) {\n console.error('Error processing editor content:', e);\n }\n } else if (!value && html) {\n setHtml('');\n lastSynchronizedHtmlRef.current = \"\";\n if (editorRef.current) {\n editorRef.current.innerHTML = '';\n updateMetrics();\n }\n }\n }, [value, initialEditable, updateMetrics]);\n\n const LIST_BLOCK_MEDIA_SELECTOR = \".video-container, .image-container, table\";\n\n const isListItemEffectivelyEmpty = (listItem) => {\n if (!listItem) return true;\n const clone = listItem.cloneNode(true);\n clone.querySelectorAll(LIST_BLOCK_MEDIA_SELECTOR).forEach((el) => el.remove());\n clone.querySelectorAll(\"br\").forEach((el) => el.remove());\n return clone.textContent.replace(/[\\u200B\\u00A0\\s]/g, \"\").length === 0;\n };\n\n const hoistBlockMediaOutOfListItems = (container) => {\n if (!container) return false;\n\n let changed = false;\n container.querySelectorAll(\"ol, ul\").forEach((list) => {\n const items = Array.from(list.children).filter((child) => child.tagName === \"LI\");\n\n items.forEach((listItem) => {\n const blockMedia = Array.from(listItem.querySelectorAll(LIST_BLOCK_MEDIA_SELECTOR));\n if (blockMedia.length === 0) return;\n\n const hadText = !isListItemEffectivelyEmpty(listItem);\n\n blockMedia.forEach((media) => {\n listItem.removeChild(media);\n if (list.parentNode) {\n list.parentNode.insertBefore(media, list.nextSibling);\n }\n changed = true;\n });\n\n if (!hadText || isListItemEffectivelyEmpty(listItem)) {\n listItem.remove();\n changed = true;\n }\n });\n\n if (list.children.length === 0 && list.parentNode) {\n list.remove();\n changed = true;\n }\n });\n\n return changed;\n };\n\n const processExistingMedia = (container) => {\n if (!container) return false;\n processExistingImages(container);\n processExistingVideos(container);\n return hoistBlockMediaOutOfListItems(container);\n };\n\n const getCleanHtml = () => {\n if (!editorRef.current) return \"\";\n const clone = editorRef.current.cloneNode(true);\n stripEditorChrome(clone);\n return clone.innerHTML;\n };\n\n // Trigger change manually\n const triggerChange = useCallback(() => {\n const next = getCleanHtml();\n setHtml(next);\n lastSynchronizedHtmlRef.current = next;\n onChange && onChange(next);\n }, [onChange]);\n\n syncProcessedMediaRef.current = (container) => {\n if (processExistingMedia(container)) {\n triggerChange();\n }\n };\n\n const handleChange = () => {\n if (!editorRef.current) return;\n onBlur && onBlur(getCleanHtml());\n };\n\n // Detect if selection is inside a list (ol or ul)\n const detectListType = () => {\n const sel = window.getSelection();\n if (!sel || !sel.rangeCount) {\n setCurrentListType(null);\n return;\n }\n let node = sel.anchorNode;\n while (node && node !== editorRef.current) {\n if (node.nodeName === \"OL\") {\n setCurrentListType(\"ordered\");\n return;\n }\n if (node.nodeName === \"UL\") {\n setCurrentListType(\"unordered\");\n return;\n }\n node = node.parentNode;\n }\n setCurrentListType(null);\n };\n\n // Helper to walk up DOM to find style tags or CSS style:\n const isParentStyle = (node, ...tagNames) => {\n while (node && node !== editorRef.current) {\n if (node.nodeType === 1 && tagNames.includes(node.tagName)) return true;\n\n // Also check inline style for bold and italic:\n if (node.nodeType === 1 && node.style) {\n const style = node.style;\n if (\n tagNames.includes(\"bold\") &&\n (style.fontWeight === \"bold\" || Number(style.fontWeight) >= 600)\n )\n return true;\n if (tagNames.includes(\"italic\") && style.fontStyle === \"italic\")\n return true;\n if (\n tagNames.includes(\"underline\") &&\n style.textDecoration.includes(\"underline\")\n )\n return true;\n\n if (node.style && node.style.color) {\n return node.style.color;\n }\n\n // 2️⃣ Check for <font color=\"\"> (older HTML)\n if (node.tagName === \"FONT\" && node.getAttribute(\"color\")) {\n return node.getAttribute(\"color\");\n }\n }\n node = node.parentNode;\n }\n return false;\n };\n\n // Update style states based on selection or cursor position\n const updateStyleStates = () => {\n const sel = window.getSelection();\n if (!sel || !sel.rangeCount) {\n setIsBold(false);\n setIsItalic(false);\n setIsUnderline(false);\n setFontColor(\"#000000\");\n setHasActiveTextBackground(false);\n return;\n }\n const container =\n sel.anchorNode.nodeType === 3\n ? sel.anchorNode.parentNode\n : sel.anchorNode;\n\n const computedAlign = window.getComputedStyle(container).textAlign;\n setActiveAlign(computedAlign);\n const range = sel.getRangeAt(0);\n\n if (range.collapsed) {\n // Cursor only, check parent nodes\n const container =\n sel.anchorNode.nodeType === 3\n ? sel.anchorNode.parentNode\n : sel.anchorNode;\n const computedStyles = window.getComputedStyle(container);\n setIsBold(isParentStyle(container, \"B\", \"STRONG\", \"bold\"));\n setIsItalic(isParentStyle(container, \"I\", \"EM\", \"italic\"));\n setIsUnderline(isParentStyle(container, \"U\", \"underline\"));\n\n // ✅ Get computed color from container\n const computedColor = window.getComputedStyle(container).color;\n setFontColor(rgbToHex(computedColor));\n syncBackgroundColorState();\n\n } else {\n // Text selected, use execCommand state\n setIsBold(document.queryCommandState(\"bold\"));\n setIsItalic(document.queryCommandState(\"italic\"));\n setIsUnderline(document.queryCommandState(\"underline\"));\n\n // ✅ For selection, get color from selection's start container\n const container =\n sel.anchorNode.nodeType === 3\n ? sel.anchorNode.parentNode\n : sel.anchorNode;\n\n const computedColor = window.getComputedStyle(container).color;\n setFontColor(rgbToHex(computedColor));\n syncBackgroundColorState();\n }\n };\n\n // Helper to convert rgb() to hex\n function rgbToHex(rgb) {\n const result = rgb.match(/\\d+/g);\n if (!result) return \"#000000\";\n return (\n \"#\" +\n result\n .slice(0, 3)\n .map((x) => {\n const hex = parseInt(x, 10).toString(16);\n return hex.length === 1 ? \"0\" + hex : hex;\n })\n .join(\"\")\n );\n }\n\n const getColorAtCursor = () => {\n const sel = window.getSelection();\n if (!sel || !sel.rangeCount || !editorRef.current) return null;\n\n let node = sel.anchorNode;\n if (node.nodeType === 3) node = node.parentNode;\n\n while (node && node !== editorRef.current) {\n if (node.nodeType === 1) {\n if (node.style && node.style.color) {\n return rgbToHex(node.style.color);\n }\n if (node.tagName === \"FONT\" && node.getAttribute(\"color\")) {\n return node.getAttribute(\"color\");\n }\n }\n node = node.parentNode;\n }\n\n const computedColor = window.getComputedStyle(\n sel.anchorNode.nodeType === 3 ? sel.anchorNode.parentNode : sel.anchorNode\n ).color;\n return rgbToHex(computedColor);\n };\n\n const getBackgroundColorAtCursor = () => {\n const sel = window.getSelection();\n if (!sel || !sel.rangeCount || !editorRef.current) return null;\n\n let node = sel.anchorNode;\n if (node.nodeType === 3) node = node.parentNode;\n\n while (node && node !== editorRef.current) {\n if (node.nodeType === 1) {\n if (node.classList?.contains(\"rte-area-highlight-block\")) {\n const bg = node.style.backgroundColor;\n return bg && !isTransparentBackground(bg) ? rgbToHex(bg) : null;\n }\n if (node.classList?.contains(\"rte-block-highlight\")) {\n const bg = node.style.backgroundColor;\n return bg && !isTransparentBackground(bg) ? rgbToHex(bg) : null;\n }\n const inlineBg = node.style?.backgroundColor;\n if (inlineBg && !isTransparentBackground(inlineBg)) {\n return rgbToHex(inlineBg);\n }\n if (node.tagName === \"MARK\") {\n const markBg = window.getComputedStyle(node).backgroundColor;\n return markBg && !isTransparentBackground(markBg) ? rgbToHex(markBg) : null;\n }\n }\n node = node.parentNode;\n }\n\n return null;\n };\n\n const syncBackgroundColorState = () => {\n const activeBg = getBackgroundColorAtCursor();\n setHasActiveTextBackground(!!activeBg);\n if (activeBg) {\n setBgColor(activeBg);\n }\n };\n\n const stripEditorChrome = (root) => {\n root.querySelectorAll(\n \".image-delete-button, .video-delete-button, .video-edit-overlay, .media-resize-handle\"\n ).forEach((element) => element.remove());\n root.querySelectorAll(\".rte-media-selected\").forEach((element) => {\n element.classList.remove(\"rte-media-selected\");\n });\n return root;\n };\n\n const getEditorInnerWidth = () => {\n if (!editorRef.current) return 800;\n return Math.max(editorRef.current.clientWidth - 24, 200);\n };\n\n const ensureImageMediaFrame = (imageContainer) => {\n if (!imageContainer) return null;\n\n let frame = imageContainer.querySelector(\":scope > .image-media-frame\");\n if (frame) return frame;\n\n frame = document.createElement(\"div\");\n frame.className = \"image-media-frame\";\n\n const children = Array.from(imageContainer.children);\n imageContainer.appendChild(frame);\n children.forEach((child) => frame.appendChild(child));\n\n return frame;\n };\n\n const getImageMediaTarget = (imageContainer) =>\n ensureImageMediaFrame(imageContainer) || imageContainer;\n\n const getMediaWidthPercent = (container) => {\n if (!container) return 100;\n if (container.dataset.widthPercent) {\n return Number(container.dataset.widthPercent);\n }\n const width = container.style.width || \"\";\n if (width.endsWith(\"%\")) {\n return parseInt(width, 10) || 100;\n }\n const editorWidth = getEditorInnerWidth();\n const rect = container.getBoundingClientRect();\n if (editorWidth > 0 && rect.width > 0) {\n return Math.round((rect.width / editorWidth) * 100);\n }\n return 100;\n };\n\n const getMediaWidthPx = (container) => {\n if (!container) return 0;\n if (container.dataset.widthPx) {\n return Number(container.dataset.widthPx);\n }\n const width = container.style.width || \"\";\n if (width.endsWith(\"px\")) {\n return parseInt(width, 10) || 0;\n }\n return Math.round(container.getBoundingClientRect().width);\n };\n\n const syncMediaWidthControls = (container) => {\n if (!container) return;\n if (container.dataset.widthPx) {\n setMediaWidthInput(String(getMediaWidthPx(container)));\n setMediaWidthUnit(\"px\");\n return;\n }\n setMediaWidthInput(String(getMediaWidthPercent(container)));\n setMediaWidthUnit(\"%\");\n };\n\n const applyMediaWidthPercent = (container, percent) => {\n if (!container) return;\n const clamped = Math.max(10, Math.min(100, Math.round(percent)));\n delete container.dataset.widthPx;\n container.dataset.widthPercent = String(clamped);\n container.style.width = `${clamped}%`;\n container.style.maxWidth = \"100%\";\n container.style.marginLeft = \"\";\n container.style.marginTop = \"\";\n\n if (container.classList.contains(\"video-container\")) {\n container.style.height = \"0\";\n container.style.paddingBottom = \"56.25%\";\n return;\n }\n\n const frame = getImageMediaTarget(container);\n if (!frame) return;\n frame.style.width = \"100%\";\n frame.style.height = \"\";\n const img = frame.querySelector(\"img\");\n if (img) {\n img.style.height = \"auto\";\n img.style.objectFit = \"\";\n }\n };\n\n const applyMediaWidthPx = (container, px) => {\n if (!container) return;\n const clamped = Math.max(20, Math.min(2000, Math.round(px)));\n delete container.dataset.widthPercent;\n container.dataset.widthPx = String(clamped);\n container.style.width = `${clamped}px`;\n container.style.maxWidth = \"100%\";\n container.style.marginLeft = \"\";\n container.style.marginTop = \"\";\n\n if (container.classList.contains(\"video-container\")) {\n container.style.height = \"0\";\n container.style.paddingBottom = \"56.25%\";\n return;\n }\n\n const frame = getImageMediaTarget(container);\n if (!frame) return;\n frame.style.width = \"100%\";\n frame.style.height = \"\";\n const img = frame.querySelector(\"img\");\n if (img) {\n img.style.height = \"auto\";\n img.style.objectFit = \"\";\n }\n };\n\n const normalizeMediaWidth = (container) => {\n if (!container) return;\n if (container.dataset.widthPx) {\n applyMediaWidthPx(container, Number(container.dataset.widthPx));\n return;\n }\n if (container.classList.contains(\"image-small\")) {\n container.classList.remove(\"image-small\");\n applyMediaWidthPercent(container, 50);\n return;\n }\n if (container.dataset.widthPercent) {\n applyMediaWidthPercent(container, Number(container.dataset.widthPercent));\n return;\n }\n const width = container.style.width || \"\";\n if (width.endsWith(\"%\")) {\n applyMediaWidthPercent(container, parseInt(width, 10) || 100);\n return;\n }\n if (width.endsWith(\"px\")) {\n applyMediaWidthPx(container, parseFloat(width));\n return;\n }\n if (container.classList.contains(\"video-container\")) {\n applyMediaWidthPercent(container, 100);\n }\n };\n\n const clearMediaSelection = () => {\n editorRef.current?.querySelectorAll(\".rte-media-selected\").forEach((element) => {\n element.classList.remove(\"rte-media-selected\");\n });\n setSelectedMedia(null);\n };\n\n const selectMediaContainer = (container) => {\n if (!container || !editorRef.current?.contains(container)) return;\n editorRef.current.querySelectorAll(\".rte-media-selected\").forEach((element) => {\n element.classList.remove(\"rte-media-selected\");\n });\n container.classList.add(\"rte-media-selected\");\n setSelectedMedia(container);\n };\n\n const attachMediaResizeHandle = (container) => {\n if (!container) return;\n const resizeTarget = container.classList.contains(\"video-container\")\n ? container\n : getImageMediaTarget(container);\n if (!resizeTarget) return;\n\n resizeTarget.querySelector(\".media-resize-handle\")?.remove();\n\n const handle = document.createElement(\"div\");\n handle.className = \"media-resize-handle\";\n handle.title = \"Drag to resize\";\n handle.setAttribute(\"contenteditable\", \"false\");\n\n handle.addEventListener(\"mousedown\", (event) => {\n if (!editable) return;\n event.preventDefault();\n event.stopPropagation();\n selectMediaContainer(container);\n\n const editorWidth = getEditorInnerWidth();\n const startX = event.clientX;\n const startWidth = container.getBoundingClientRect().width;\n\n const onMouseMove = (moveEvent) => {\n const nextWidth = Math.max(60, startWidth + (moveEvent.clientX - startX));\n if (container.dataset.widthPx) {\n applyMediaWidthPx(container, nextWidth);\n } else {\n const percent = Math.round((nextWidth / editorWidth) * 100);\n applyMediaWidthPercent(container, percent);\n }\n };\n\n const onMouseUp = () => {\n document.removeEventListener(\"mousemove\", onMouseMove);\n document.removeEventListener(\"mouseup\", onMouseUp);\n syncMediaWidthControls(container);\n setSelectionVersion((v) => v + 1);\n triggerChange();\n };\n\n document.addEventListener(\"mousemove\", onMouseMove);\n document.addEventListener(\"mouseup\", onMouseUp);\n });\n\n resizeTarget.appendChild(handle);\n };\n\n const handleEditorFocus = () => {\n setEditorFocused(true);\n };\n\n const handleEditorBlur = () => {\n requestAnimationFrame(() => {\n if (!editorRef.current?.contains(document.activeElement)) {\n setEditorFocused(false);\n }\n });\n };\n\n const updateMediaControlVisibility = (container) => {\n const handle = container.querySelector(\".media-resize-handle\");\n if (handle instanceof HTMLElement) {\n handle.style.display = editable ? \"block\" : \"none\";\n handle.style.pointerEvents = editable ? \"auto\" : \"none\";\n }\n };\n\n const BLOCK_TAGS = [\"P\", \"DIV\", \"H1\", \"H2\", \"H3\", \"BLOCKQUOTE\", \"LI\"];\n\n const getActiveBlock = (node) => {\n if (!editorRef.current || !node) return null;\n let current = node.nodeType === 3 ? node.parentNode : node;\n\n while (current && current !== editorRef.current) {\n if (current.nodeType === 1 && BLOCK_TAGS.includes(current.tagName)) {\n return current;\n }\n current = current.parentNode;\n }\n\n return editorRef.current;\n };\n\n const getBlockFormat = (node) => {\n const block = getActiveBlock(node);\n if (!block || block === editorRef.current) return \"div\";\n const tag = block.tagName.toLowerCase();\n return tag === \"p\" || tag === \"li\" ? \"div\" : tag;\n };\n\n const createMediaDeleteButton = (title, className, onRemove) => {\n const deleteBtn = document.createElement(\"button\");\n deleteBtn.type = \"button\";\n deleteBtn.innerHTML = \"×\";\n deleteBtn.className = className;\n deleteBtn.title = title;\n deleteBtn.setAttribute(\"contenteditable\", \"false\");\n deleteBtn.onclick = (event) => {\n event.preventDefault();\n event.stopPropagation();\n onRemove();\n };\n return deleteBtn;\n };\n\n\n // Listen for selection changes globally to update styles and list type in one pass\n useEffect(() => {\n const handleGlobalSelectionSync = () => {\n // Only sync if the editor has focus\n const sel = window.getSelection();\n if (!sel || !sel.rangeCount || !editorRef.current?.contains(sel.anchorNode)) {\n return;\n }\n\n // 1. Detect List Type\n let node = sel.anchorNode;\n let listFound = null;\n while (node && node !== editorRef.current) {\n if (node.nodeName === \"OL\") { listFound = \"ordered\"; break; }\n if (node.nodeName === \"UL\") { listFound = \"unordered\"; break; }\n node = node.parentNode;\n }\n setCurrentListType(listFound);\n\n // 2. Update Style States\n const container = sel.anchorNode.nodeType === 3 ? sel.anchorNode.parentNode : sel.anchorNode;\n const computedAlign = window.getComputedStyle(container).textAlign;\n setActiveAlign(computedAlign);\n \n const range = sel.getRangeAt(0);\n if (range.collapsed) {\n setIsBold(isParentStyle(container, \"B\", \"STRONG\", \"bold\"));\n setIsItalic(isParentStyle(container, \"I\", \"EM\", \"italic\"));\n setIsUnderline(isParentStyle(container, \"U\", \"underline\"));\n const computedColor = window.getComputedStyle(container).color;\n setFontColor(rgbToHex(computedColor));\n syncBackgroundColorState();\n } else {\n setIsBold(document.queryCommandState(\"bold\"));\n setIsItalic(document.queryCommandState(\"italic\"));\n setIsUnderline(document.queryCommandState(\"underline\"));\n const computedColor = window.getComputedStyle(container).color;\n setFontColor(rgbToHex(computedColor));\n syncBackgroundColorState();\n }\n\n // 3. Current Font Size\n const element = range.startContainer.parentElement.closest('[style*=\"font-size\"]');\n if (element) {\n const fontSize = window.getComputedStyle(element).fontSize;\n const sizeValue = fontSize ? parseInt(fontSize) : 16;\n setCurrentFontSize(sizeValue.toString());\n } else {\n setCurrentFontSize(\"16\");\n }\n\n setCurrentBlockFormat(getBlockFormat(sel.anchorNode));\n };\n\n document.addEventListener(\"selectionchange\", handleGlobalSelectionSync);\n return () => {\n document.removeEventListener(\"selectionchange\", handleGlobalSelectionSync);\n };\n }, []);\n\n\n const focus = () => editorRef.current && editorRef.current.focus();\n\n const exec = (command, value = null) => {\n document.execCommand(command, false, value);\n triggerChange();\n focus();\n };\n\n const [fontColor, setFontColor] = useState(\"#000000\");\n const [bgColor, setBgColor] = useState(\"#ffff00\");\n const [hasActiveTextBackground, setHasActiveTextBackground] = useState(false);\n\n useEffect(() => {\n bgColorRef.current = bgColor;\n }, [bgColor]);\n\n const getActiveTextColor = () => getColorAtCursor() || fontColor;\n\n const restoreSavedSelection = () => {\n if (!selectionRangeRef.current) return;\n const sel = window.getSelection();\n if (!sel) return;\n sel.removeAllRanges();\n sel.addRange(selectionRangeRef.current);\n };\n\n const applyTextColor = (color) => {\n setFontColor(color);\n focus();\n restoreSavedSelection();\n document.execCommand(\"styleWithCSS\", false, true);\n document.execCommand(\"foreColor\", false, color);\n document.execCommand(\"styleWithCSS\", false, false);\n triggerChange();\n };\n\n const applyBackgroundColor = (color) => {\n setBgColor(color);\n setHasActiveTextBackground(true);\n focus();\n restoreSavedSelection();\n document.execCommand(\"styleWithCSS\", false, true);\n if (!document.execCommand(\"hiliteColor\", false, color)) {\n document.execCommand(\"backColor\", false, color);\n }\n document.execCommand(\"styleWithCSS\", false, false);\n triggerChange();\n };\n\n const clearMediaHighlightStyles = (editor) => {\n editor.querySelectorAll(\".image-container, .video-container, td, th\").forEach((element) => {\n if (!editor.contains(element)) return;\n if (\n !element.style.backgroundColor &&\n !element.style.padding &&\n !element.style.borderRadius\n ) {\n return;\n }\n element.style.backgroundColor = \"\";\n element.style.padding = \"\";\n element.style.borderRadius = \"\";\n if (!element.getAttribute(\"style\")) {\n element.removeAttribute(\"style\");\n }\n });\n };\n\n const removeBackgroundColor = () => {\n const editor = editorRef.current;\n if (!editor) return;\n\n focus();\n restoreSavedSelection();\n\n const sel = window.getSelection();\n const range = sel?.rangeCount ? sel.getRangeAt(0) : null;\n\n document.execCommand(\"styleWithCSS\", false, true);\n document.execCommand(\"hiliteColor\", false, \"transparent\");\n document.execCommand(\"backColor\", false, \"transparent\");\n document.execCommand(\"styleWithCSS\", false, false);\n\n const processElement = (element) => {\n if (!editor.contains(element)) return;\n\n if (element.classList?.contains(\"rte-area-highlight-block\")) {\n unwrapAreaHighlightBlock(element);\n return;\n }\n\n if (\n element.classList?.contains(\"image-container\") ||\n element.classList?.contains(\"video-container\")\n ) {\n element.style.backgroundColor = \"\";\n element.style.padding = \"\";\n element.style.borderRadius = \"\";\n if (!element.getAttribute(\"style\")) {\n element.removeAttribute(\"style\");\n }\n return;\n }\n\n stripInlineBackground(element);\n };\n\n if (range && editor.contains(range.commonAncestorContainer)) {\n const elements = collectElementsInRange(range, editor)\n .filter(elementHasRemovableBackground)\n .reverse();\n elements.forEach(processElement);\n\n if (range.collapsed) {\n let node = range.startContainer;\n if (node.nodeType === 3) node = node.parentNode;\n while (node && node !== editor) {\n if (elementHasRemovableBackground(node)) {\n processElement(node);\n break;\n }\n node = node.parentNode;\n }\n }\n } else {\n [...editor.querySelectorAll(\".rte-area-highlight-block\")].forEach(unwrapAreaHighlightBlock);\n [...editor.querySelectorAll(\"mark\")].forEach((mark) => unwrapNode(mark));\n [...editor.querySelectorAll(\"[style*='background']\")].forEach((element) => {\n if (editor.contains(element)) {\n stripInlineBackground(element);\n }\n });\n }\n\n clearMediaHighlightStyles(editor);\n\n editor.querySelectorAll(\"span[style], font[style]\").forEach((element) => {\n if (!editor.contains(element)) return;\n if (!element.style.backgroundColor && !element.style.background) {\n if (!element.getAttribute(\"style\")) {\n unwrapNode(element);\n }\n }\n });\n\n setHasActiveTextBackground(false);\n triggerChange();\n focus();\n };\n\n const applyMarqueeHighlight = useCallback((clientRect, color) => {\n const editor = editorRef.current;\n if (!editor || clientRect.width < 10 || clientRect.height < 10) {\n return;\n }\n\n editor.focus();\n\n const editorRect = editor.getBoundingClientRect();\n const clippedRect = clipRectToBounds(clientRect, editorRect);\n if (clippedRect.width < 10 || clippedRect.height < 10) {\n return;\n }\n\n insertAreaHighlightRegion(editor, clippedRect, color);\n\n setAreaHighlightMode(false);\n setMarqueePreview(null);\n areaDragRef.current = null;\n\n editor.querySelectorAll(\"td, th\").forEach((cell) => {\n if (!editor.contains(cell)) return;\n if (cell.closest(\".rte-area-highlight-block\")) return;\n if (rectsIntersect(cell.getBoundingClientRect(), clippedRect)) {\n cell.style.backgroundColor = color;\n }\n });\n\n editor.querySelectorAll(\".image-container, .video-container\").forEach((media) => {\n if (!editor.contains(media)) return;\n if (rectsIntersect(media.getBoundingClientRect(), clippedRect)) {\n media.style.backgroundColor = color;\n media.style.padding = \"4px\";\n media.style.borderRadius = \"4px\";\n }\n });\n\n updateMetrics();\n triggerChange();\n focus();\n }, [triggerChange, updateMetrics]);\n\n const handleAreaSelectMouseDown = useCallback((e) => {\n if (!areaHighlightMode || !editable || disabled) return;\n if (e.button !== 0) return;\n if (e.target.closest(\".rte-toolbar, .rte-media-toolbar, .rte-modal-overlay\")) return;\n\n e.preventDefault();\n e.stopPropagation();\n\n const wrapper = contentWrapperRef.current;\n if (!wrapper) return;\n\n const wrapperRect = wrapper.getBoundingClientRect();\n areaDragRef.current = {\n startX: e.clientX,\n startY: e.clientY,\n currentX: e.clientX,\n currentY: e.clientY,\n wrapperRect,\n };\n\n const updatePreview = (clientX, clientY) => {\n const drag = areaDragRef.current;\n if (!drag) return;\n\n drag.currentX = clientX;\n drag.currentY = clientY;\n\n const rect = getClientRectFromDrag(\n drag.startX,\n drag.startY,\n drag.currentX,\n drag.currentY\n );\n\n setMarqueePreview({\n left: rect.left - drag.wrapperRect.left,\n top: rect.top - drag.wrapperRect.top,\n width: rect.width,\n height: rect.height,\n });\n };\n\n const onMove = (ev) => {\n ev.preventDefault();\n updatePreview(ev.clientX, ev.clientY);\n };\n\n const onUp = (ev) => {\n document.removeEventListener(\"mousemove\", onMove);\n document.removeEventListener(\"mouseup\", onUp);\n\n const drag = areaDragRef.current;\n areaDragRef.current = null;\n setMarqueePreview(null);\n\n if (!drag) return;\n\n const clientRect = getClientRectFromDrag(\n drag.startX,\n drag.startY,\n ev.clientX,\n ev.clientY\n );\n\n requestAnimationFrame(() => {\n applyMarqueeHighlight(clientRect, bgColorRef.current);\n });\n };\n\n document.addEventListener(\"mousemove\", onMove);\n document.addEventListener(\"mouseup\", onUp);\n updatePreview(e.clientX, e.clientY);\n }, [areaHighlightMode, editable, disabled, applyMarqueeHighlight]);\n\n const addLink = () => {\n const sel = window.getSelection();\n if (!sel || sel.rangeCount === 0) return;\n\n selectionRangeRef.current = sel.getRangeAt(0).cloneRange();\n\n const selectedText = sel.toString();\n\n if (selectedText.length > 0) {\n setLinkText(selectedText);\n setLinkUrl(\"\");\n setLinkModalOpen(true);\n } else {\n setLinkText(\"\");\n setLinkUrl(\"\");\n setLinkModalOpen(true);\n }\n };\n\n const findParentTag = (node, tagName) => {\n if (!node) return null;\n let curr = node;\n while (curr && curr !== editorRef.current) {\n if (curr.tagName === tagName) return curr;\n curr = curr.parentNode;\n }\n return null;\n };\n\n const tableAction = (action) => {\n const sel = window.getSelection();\n if (!sel || !sel.rangeCount) return;\n \n const cell = findParentTag(sel.anchorNode, 'TD') || findParentTag(sel.anchorNode, 'TH');\n if (!cell) return;\n \n const row = cell.parentNode;\n const table = row.parentNode.closest('table');\n \n switch (action) {\n case 'addRowAbove':\n const newRowAbove = table.insertRow(row.rowIndex);\n for (let i = 0; i < row.cells.length; i++) {\n const newCell = newRowAbove.insertCell(i);\n newCell.style.border = \"1px solid #e5e7eb\";\n newCell.style.padding = \"12px\";\n newCell.innerHTML = \" \";\n }\n break;\n case 'addRowBelow':\n const newRowBelow = table.insertRow(row.rowIndex + 1);\n for (let i = 0; i < row.cells.length; i++) {\n const newCell = newRowBelow.insertCell(i);\n newCell.style.border = \"1px solid #e5e7eb\";\n newCell.style.padding = \"12px\";\n newCell.innerHTML = \" \";\n }\n break;\n case 'addColBefore':\n const cellIndex = cell.cellIndex;\n for (let i = 0; i < table.rows.length; i++) {\n const newCell = table.rows[i].insertCell(cellIndex);\n newCell.style.border = \"1px solid #e5e7eb\";\n newCell.style.padding = \"12px\";\n newCell.innerHTML = \" \";\n }\n break;\n case 'addColAfter':\n const cellIndexAfter = cell.cellIndex + 1;\n for (let i = 0; i < table.rows.length; i++) {\n const newCell = table.rows[i].insertCell(cellIndexAfter);\n newCell.style.border = \"1px solid #e5e7eb\";\n newCell.style.padding = \"12px\";\n newCell.innerHTML = \" \";\n }\n break;\n case 'deleteRow': {\n const rowIndex = row.rowIndex;\n const cellIndex = cell.cellIndex;\n table.deleteRow(rowIndex);\n if (table.rows.length === 0) {\n table.remove();\n } else {\n const targetRowIndex = Math.min(rowIndex, table.rows.length - 1);\n const targetRow = table.rows[targetRowIndex];\n const targetCell = targetRow.cells[Math.min(cellIndex, targetRow.cells.length - 1)];\n if (targetCell) {\n const range = document.createRange();\n range.selectNodeContents(targetCell);\n range.collapse(true);\n sel.removeAllRanges();\n sel.addRange(range);\n setSelectionVersion(v => v + 1);\n }\n }\n break;\n }\n case 'deleteCol': {\n const idx = cell.cellIndex;\n const rowIndex = row.rowIndex;\n for (let i = 0; i < table.rows.length; i++) {\n table.rows[i].deleteCell(idx);\n }\n if (table.rows[0].cells.length === 0) {\n table.remove();\n } else {\n const targetColIndex = Math.min(idx, table.rows[0].cells.length - 1);\n const targetCell = table.rows[rowIndex]?.cells[targetColIndex] || table.rows[0].cells[targetColIndex];\n if (targetCell) {\n const range = document.createRange();\n range.selectNodeContents(targetCell);\n range.collapse(true);\n sel.removeAllRanges();\n sel.addRange(range);\n setSelectionVersion(v => v + 1);\n }\n }\n break;\n }\n case 'mergeRight':\n if (cell.nextElementSibling) {\n const nextCell = cell.nextElementSibling;\n cell.colSpan = (cell.colSpan || 1) + (nextCell.colSpan || 1);\n nextCell.remove();\n }\n break;\n case 'deleteTable':\n table.remove();\n break;\n default:\n break;\n }\n triggerChange && triggerChange();\n };\n\n const insertTable = () => {\n const rows = parseInt(tableRows) || 3;\n const cols = parseInt(tableCols) || 3;\n let tableHtml = '<table style=\"width: 100%; border-collapse: collapse; border: 1px solid #e5e7eb; margin: 16px 0;\"><tbody>';\n for (let i = 0; i < rows; i++) {\n tableHtml += '<tr>';\n for (let j = 0; j < cols; j++) {\n tableHtml += '<td style=\"border: 1px solid #e5e7eb; padding: 12px; min-height: 20px;\"> </td>';\n }\n tableHtml += '</tr>';\n }\n tableHtml += '</tbody></table><p> </p>';\n \n if (selectionRangeRef.current) {\n const sel = window.getSelection();\n sel.removeAllRanges();\n sel.addRange(selectionRangeRef.current);\n }\n\n document.execCommand(\"insertHTML\", false, tableHtml);\n setTableModalOpen(false);\n triggerChange && triggerChange();\n };\n\n const parseVideoUrl = (url) => {\n url = url.trim();\n if (!url) return null;\n\n // YouTube\n const ytRegExp = /^.*(youtu.be\\/|v\\/|u\\/\\w\\/|embed\\/|watch\\?v=|\\&v=|watch\\?vi=|\\&vi=)([^#\\&\\?]*).*/;\n const ytMatch = url.match(ytRegExp);\n if (ytMatch && ytMatch[2].length === 11) {\n return `https://www.youtube.com/embed/${ytMatch[2]}`;\n }\n\n // Vimeo\n const vimeoRegExp = /vimeo\\.com\\/(?:channels\\/(?:\\w+\\/)?|groups\\/([^\\/]*)\\/videos\\/|album\\/(\\d+)\\/video\\/|video\\/|)(\\d+)(?:$|\\/|\\?)/;\n const vimeoMatch = url.match(vimeoRegExp);\n if (vimeoMatch && vimeoMatch[3]) {\n return `https://player.vimeo.com/video/${vimeoMatch[3]}`;\n }\n\n // DailyMotion\n const dmRegExp = /dailymotion\\.com\\/video\\/([a-zA-Z0-9]+)/;\n const dmMatch = url.match(dmRegExp);\n if (dmMatch && dmMatch[1]) {\n return `https://www.dailymotion.com/embed/video/${dmMatch[1]}`;\n }\n\n return null;\n };\n\n const insertVideo = () => {\n const embedUrl = parseVideoUrl(videoUrl);\n\n if (embedUrl) {\n if (editorRef.current) {\n editorRef.current.focus();\n }\n\n if (selectionRangeRef.current) {\n const sel = window.getSelection();\n sel.removeAllRanges();\n sel.addRange(selectionRangeRef.current);\n }\n\n const embedHtml = `<div class=\"video-container\">\n <iframe \n src=\"${embedUrl}\" \n frameborder=\"0\" \n allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\" \n allowfullscreen\n ></iframe>\n </div><p> </p>`;\n \n try {\n document.execCommand(\"insertHTML\", false, embedHtml);\n } catch (err) {\n console.error(\"Failed to insert Video HTML:\", err);\n if (editorRef.current) {\n const div = document.createElement('div');\n div.innerHTML = embedHtml;\n editorRef.current.appendChild(div);\n }\n }\n setVideoModalOpen(false);\n setVideoUrl(\"\");\n requestAnimationFrame(() => {\n processExistingMedia(editorRef.current);\n triggerChange();\n });\n } else {\n console.warn(\"Invalid Video URL or Platform not supported\");\n }\n };\n\n\n const onFileInput = (e) => {\n const file = e.target.files && e.target.files[0];\n if (!file) return;\n readFileAsDataURL(file).then((dataUrl) => {\n insertImage(dataUrl, file.name);\n });\n e.target.value = null;\n };\n\n const processExistingVideos = (container) => {\n if (!container) return;\n\n container.querySelectorAll(\".video-container\").forEach((videoContainer) => {\n if (!videoContainer.querySelector(\".video-delete-button\")) {\n const deleteBtn = createMediaDeleteButton(\n \"Remove video\",\n \"video-delete-button image-delete-button\",\n () => {\n videoContainer.remove();\n clearMediaSelection();\n triggerChange && triggerChange();\n }\n );\n videoContainer.appendChild(deleteBtn);\n }\n\n if (!videoContainer.dataset.mediaEnhanced) {\n videoContainer.dataset.mediaEnhanced = \"true\";\n if (!videoContainer.classList.contains(\"image-align-left\") &&\n !videoContainer.classList.contains(\"image-align-center\") &&\n !videoContainer.classList.contains(\"image-align-right\")) {\n videoContainer.classList.add(\"image-align-left\");\n }\n videoContainer.addEventListener(\"click\", (event) => {\n if (event.target.closest(\".image-delete-button, .media-resize-handle\")) return;\n event.preventDefault();\n event.stopPropagation();\n selectMediaContainer(videoContainer);\n });\n }\n\n attachMediaResizeHandle(videoContainer);\n normalizeMediaWidth(videoContainer);\n updateMediaControlVisibility(videoContainer);\n });\n };\n\n const processExistingImages = (container) => {\n if (!container) return;\n\n container.querySelectorAll(\"img\").forEach((img) => {\n if (img.closest(\".rte-modal\")) return;\n\n const existingWrapper = img.closest(\".image-container\");\n if (existingWrapper) {\n existingWrapper.style.cursor = editable ? \"pointer\" : \"default\";\n const frame = ensureImageMediaFrame(existingWrapper);\n if (frame && !frame.querySelector(\".image-delete-button\")) {\n frame.appendChild(\n createMediaDeleteButton(\n \"Remove image\",\n \"image-delete-button\",\n () => {\n existingWrapper.remove();\n clearMediaSelection();\n triggerChange && triggerChange();\n }\n )\n );\n }\n if (!existingWrapper.dataset.mediaEnhanced) {\n existingWrapper.dataset.mediaEnhanced = \"true\";\n existingWrapper.addEventListener(\"click\", (event) => {\n if (event.target.closest(\".image-delete-button, .media-resize-handle\")) return;\n event.preventDefault();\n event.stopPropagation();\n selectMediaContainer(existingWrapper);\n });\n img.addEventListener(\"dblclick\", (event) => {\n if (event.target.closest(\".image-delete-button, .media-resize-handle\")) return;\n event.preventDefault();\n event.stopPropagation();\n openImageModal(img.src);\n });\n }\n attachMediaResizeHandle(existingWrapper);\n normalizeMediaWidth(existingWrapper);\n updateMediaControlVisibility(existingWrapper);\n return;\n }\n\n const wrapper = document.createElement(\"div\");\n const align = img.getAttribute(\"data-align\") || img.closest(\"[data-align]\")?.getAttribute(\"data-align\") || \"left\";\n wrapper.className = `image-container image-align-${align}`;\n wrapper.style.cursor = editable ? \"pointer\" : \"default\";\n\n const frame = document.createElement(\"div\");\n frame.className = \"image-media-frame\";\n\n img.classList.add(\"rte-image\");\n img.setAttribute(\"data-align\", align);\n img.style.height = \"auto\";\n\n img.addEventListener(\"dblclick\", (event) => {\n if (event.target.closest(\".image-delete-button, .media-resize-handle\")) return;\n event.preventDefault();\n event.stopPropagation();\n openImageModal(img.src);\n });\n\n img.addEventListener(\"click\", (event) => {\n if (event.target.closest(\".image-delete-button, .media-resize-handle\")) return;\n event.preventDefault();\n event.stopPropagation();\n selectMediaContainer(wrapper);\n });\n\n const deleteBtn = createMediaDeleteButton(\n \"Remove image\",\n \"image-delete-button\",\n () => {\n wrapper.remove();\n triggerChange && triggerChange();\n }\n );\n\n const { parentNode, nextSibling } = img;\n if (parentNode) {\n parentNode.removeChild(img);\n frame.appendChild(img);\n frame.appendChild(deleteBtn);\n wrapper.appendChild(frame);\n attachMediaResizeHandle(wrapper);\n normalizeMediaWidth(wrapper);\n\n if (nextSibling) {\n parentNode.insertBefore(wrapper, nextSibling);\n } else {\n parentNode.appendChild(wrapper);\n }\n }\n });\n };\n\n\n /* \n Advanced Tip: Use the 'onImageUpload' prop to handle file uploads to a server \n instead of using base64. If 'onImageUpload' is provided, it should return a URL string.\n */\n const insertImage = async (dataUrl, fileName) => {\n try {\n if (editable) {\n\n // Create container for the image\n const container = document.createElement('div');\n container.className = 'image-container image-align-left';\n\n const frame = document.createElement('div');\n frame.className = 'image-media-frame';\n\n // Create image element\n const img = document.createElement('img');\n img.src = dataUrl;\n img.alt = fileName || \"image\";\n img.addEventListener(\"dblclick\", (event) => {\n event.preventDefault();\n event.stopPropagation();\n openImageModal(dataUrl);\n });\n img.addEventListener(\"click\", (event) => {\n event.preventDefault();\n event.stopPropagation();\n selectMediaContainer(container);\n });\n\n container.style.cursor = editable ? \"pointer\" : \"default\";\n container.dataset.mediaEnhanced = \"true\";\n container.addEventListener(\"click\", (event) => {\n if (event.target.closest(\".image-delete-button, .media-resize-handle\")) return;\n event.preventDefault();\n event.stopPropagation();\n selectMediaContainer(container);\n });\n\n const deleteBtn = createMediaDeleteButton(\n \"Remove image\",\n \"image-delete-button\",\n () => {\n container.remove();\n clearMediaSelection();\n triggerChange();\n }\n );\n\n frame.appendChild(img);\n frame.appendChild(deleteBtn);\n container.appendChild(frame);\n attachMediaResizeHandle(container);\n applyMediaWidthPercent(container, 50);\n\n // Insert at cursor position\n insertNodeAtCursor(container);\n requestAnimationFrame(() => {\n processExistingMedia(editorRef.current);\n selectMediaContainer(container);\n syncMediaWidthControls(container);\n editorRef.current?.focus();\n triggerChange();\n });\n }\n } catch (err) {\n console.error('Error inserting image:', err);\n }\n };\n\n const readFileAsDataURL = (file) =>\n new Promise((res, rej) => {\n const reader = new FileReader();\n reader.onload = (ev) => res(ev.target.result);\n reader.onerror = rej;\n reader.readAsDataURL(file);\n });\n\n // NEW: Function to auto-convert URLs to links\n const autoConvertUrlsToLinks = (html) => {\n return html.replace(URL_REGEX, (url) => {\n const safeUrl = escapeAttr(url);\n return `<a href=\"${safeUrl}\" target=\"_blank\" rel=\"noopener noreferrer\" style=\"color: blue;\">${url}</a>`;\n });\n };\n\n const handlePaste = useCallback((e) => {\n const clipboardData = e.clipboardData || window.clipboardData;\n if (!clipboardData) return;\n\n // Check for image in clipboard\n const items = clipboardData.items || [];\n for (let i = 0; i < items.length; i++) {\n const item = items[i];\n if (item.kind === 'file' && item.type.indexOf('image/') !== -1) {\n e.preventDefault();\n const file = item.getAsFile();\n if (file) {\n setIsUploading(true);\n const uploadPromise = onImageUpload\n ? onImageUpload(file)\n : readFileAsDataURL(file);\n\n uploadPromise.then((url) => {\n if (url) {\n // if the user's onImageUpload resolves to `{ mediaUrl: '...' }` like the previous MediaUpload, handle it\n const finalUrl = typeof url === 'object' && url !== null && url.mediaUrl ? url.mediaUrl : url;\n insertImage(finalUrl, file.name || 'pasted-image');\n }\n setIsUploading(false);\n }).catch((error) => {\n console.error('Error uploading pasted image:', error);\n setIsUploading(false);\n });\n }\n return;\n }\n }\n\n const htmlData = clipboardData.getData('text/html');\n if (htmlData && htmlData.trim()) {\n e.preventDefault();\n\n const tempDiv = document.createElement('div');\n tempDiv.innerHTML = htmlData;\n\n tempDiv.querySelectorAll('script, meta, link').forEach(el => el.remove());\n\n document.execCommand('styleWithCSS', false, true);\n document.execCommand('insertHTML', false, tempDiv.innerHTML);\n document.execCommand('styleWithCSS', false, false);\n\n triggerChange();\n focus();\n return;\n }\n\n const plainText = clipboardData.getData('text/plain');\n if (plainText) {\n e.preventDefault();\n\n let htmlToInsert = escapeHtml(plainText);\n\n htmlToInsert = htmlToInsert.replace(URL_REGEX, (url) => {\n const safeUrl = escapeAttr(url.trim());\n return `<a href=\"${safeUrl}\" target=\"_blank\" rel=\"noopener noreferrer\" style=\"color: blue; text-decoration: underline;\">${escapeHtml(url)}</a>`;\n });\n\n htmlToInsert = htmlToInsert.replace(/\\n/g, '<br>');\n\n document.execCommand('insertHTML', false, htmlToInsert);\n triggerChange();\n focus();\n }\n }, [insertImage, triggerChange]);\n\n const handleDrop = async (e) => {\n if (!editable) return;\n e.preventDefault();\n e.stopPropagation();\n\n const files = e.dataTransfer.files;\n if (!files || files.length === 0) return;\n\n const imageFiles = Array.from(files).filter(file => file.type.startsWith(\"image/\"));\n\n for (const file of imageFiles) {\n try {\n setIsUploading(true);\n const uploadPromise = onImageUpload\n ? onImageUpload(file)\n : readFileAsDataURL(file);\n\n uploadPromise.then((url) => {\n if (url) {\n const finalUrl = typeof url === 'object' && url !== null && url.mediaUrl ? url.mediaUrl : url;\n insertImage(finalUrl, file.name);\n }\n setIsUploading(false);\n }).catch((error) => {\n console.error('Error processing image:', error);\n setIsUploading(false);\n });\n } catch (error) {\n console.error('Error processing image:', error);\n setIsUploading(false);\n }\n }\n };\n\n const insertNodeAtCursor = (node) => {\n try {\n const sel = window.getSelection();\n let range;\n\n if (!sel || sel.rangeCount === 0 || !editorRef.current.contains(sel.anchorNode)) {\n editorRef.current.focus();\n \n // Move cursor to end if not already in editor\n range = document.createRange();\n range.selectNodeContents(editorRef.current);\n range.collapse(false);\n sel.removeAllRanges();\n sel.addRange(range);\n } else {\n range = sel.getRangeAt(0);\n }\n\n range.deleteContents();\n range.insertNode(node);\n \n const space = document.createTextNode(\"\\u00A0\");\n if (node.parentNode) {\n node.parentNode.insertBefore(space, node.nextSibling);\n }\n \n range.setStartAfter(space);\n range.collapse(true);\n sel.removeAllRanges();\n sel.addRange(range);\n } catch (error) {\n console.error(\"Insertion error:\", error);\n if (editorRef.current) {\n editorRef.current.appendChild(node);\n }\n }\n };\n\n // Helper function to unescape HTML entities\n const unescapeHtml = (html) => {\n if (!html) return '';\n const txt = document.createElement(\"textarea\");\n txt.innerHTML = html;\n return txt.value;\n };\n\n const isCursorAtStartOfListItem = (range, listItem) => {\n const prefixRange = document.createRange();\n prefixRange.setStart(listItem, 0);\n prefixRange.setEnd(range.startContainer, range.startOffset);\n return prefixRange.toString().replace(/[\\u200B\\u00A0\\s]/g, \"\").length === 0;\n };\n\n const isCursorAtEndOfListItem = (range, listItem) => {\n const suffixRange = document.createRange();\n suffixRange.setStart(range.startContainer, range.startOffset);\n suffixRange.setEnd(listItem, listItem.childNodes.length);\n return suffixRange.toString().replace(/\\u200B/g, \"\").length === 0;\n };\n\n const prepareListItemForTyping = (listItem, selection) => {\n const activeColor = getActiveTextColor();\n const newRange = document.createRange();\n\n if (activeColor && activeColor.toLowerCase() !== \"#000000\") {\n const span = document.createElement(\"span\");\n span.style.color = activeColor;\n span.appendChild(document.createTextNode(\"\\u200B\"));\n listItem.appendChild(span);\n newRange.setStart(span.firstChild, 1);\n } else {\n listItem.appendChild(document.createTextNode(\"\\u200B\"));\n newRange.setStart(listItem.firstChild, 1);\n }\n\n newRange.collapse(true);\n selection.removeAllRanges();\n selection.addRange(newRange);\n };\n\n const handleKeyDown = useCallback((e) => {\n if (e.key === \"Escape\") {\n if (areaHighlightMode) {\n e.preventDefault();\n areaDragRef.current = null;\n setMarqueePreview(null);\n setAreaHighlightMode(false);\n return;\n }\n if (selectedMedia) {\n e.preventDefault();\n clearMediaSelection();\n return;\n }\n }\n\n if (\n (e.key === \"Delete\" || e.key === \"Backspace\") &&\n selectedMedia?.classList.contains(\"rte-media-selected\") &&\n editorRef.current?.contains(selectedMedia)\n ) {\n e.preventDefault();\n selectedMedia.remove();\n clearMediaSelection();\n triggerChange();\n return;\n }\n\n if (applyMarkdownShortcut(e)) return;\n\n // Handle Enter key\n if (e.key === 'Enter') {\n e.preventDefault();\n\n const selection = window.getSelection();\n if (!selection.rangeCount) return;\n\n const range = selection.getRangeAt(0);\n const node = range.startContainer;\n const parent = node.nodeType === 3 ? node.parentNode : node;\n\n // Check if we're in a list item\n const listItem = parent.closest('li');\n if (listItem) {\n const list = listItem.parentNode;\n\n // Create a new list item\n const newItem = document.createElement('li');\n\n // If we're at the end of a list item, add a new one\n if (range.collapsed && isCursorAtEndOfListItem(range, listItem)) {\n // If it's empty, create a regular paragraph instead\n if (isListItemEffectivelyEmpty(listItem)) {\n document.execCommand('insertHTML', false, '<div><br></div>');\n // Move the cursor to the new line\n const newRange = document.createRange();\n const newDiv = editorRef.current.lastElementChild;\n newRange.setStart(newDiv, 0);\n newRange.collapse(true);\n selection.removeAllRanges();\n selection.addRange(newRange);\n triggerChange();\n return;\n }\n\n // Insert new list item\n if (listItem.nextSibling) {\n list.insertBefore(newItem, listItem.nextSibling);\n } else {\n list.appendChild(newItem);\n }\n\n prepareListItemForTyping(newItem, selection);\n } else {\n // If we're in the middle of text, split the list item while preserving formatting\n const afterRange = document.createRange();\n afterRange.setStart(range.startContainer, range.startOffset);\n afterRange.setEnd(listItem, listItem.childNodes.length);\n const movedFragment = afterRange.extractContents();\n newItem.appendChild(movedFragment);\n\n if (listItem.nextSibling) {\n list.insertBefore(newItem, listItem.nextSibling);\n } else {\n list.appendChild(newItem);\n }\n\n if (isListItemEffectivelyEmpty(newItem)) {\n newItem.textContent = \"\";\n prepareListItemForTyping(newItem, selection);\n } else {\n const newRange = document.createRange();\n newRange.setStart(newItem, 0);\n newRange.collapse(true);\n selection.removeAllRanges();\n selection.addRange(newRange);\n }\n }\n } else {\n // Regular text, insert a new paragraph\n document.execCommand('insertHTML', false, '<div><br></div>');\n }\n\n triggerChange();\n return;\n }\n\n if (e.key === \"Backspace\") {\n const selection = window.getSelection();\n if (!selection?.rangeCount) return;\n\n const range = selection.getRangeAt(0);\n if (!range.collapsed) return;\n\n let node = range.startContainer;\n if (node.nodeType === 3) {\n node = node.parentNode;\n }\n\n const listItem = node.closest?.(\"li\");\n if (!listItem || !editorRef.current?.contains(listItem)) return;\n\n const list = listItem.parentNode;\n\n if (isListItemEffectivelyEmpty(listItem)) {\n e.preventDefault();\n\n const prevLi = listItem.previousElementSibling;\n const blockMedia = Array.from(listItem.querySelectorAll(LIST_BLOCK_MEDIA_SELECTOR));\n\n blockMedia.forEach((media) => {\n list.parentNode?.insertBefore(media, list.nextSibling);\n });\n\n listItem.remove();\n\n if (list.children.length === 0) {\n list.remove();\n }\n\n if (prevLi?.tagName === \"LI\") {\n const newRange = document.createRange();\n newRange.selectNodeContents(prevLi);\n newRange.collapse(false);\n selection.removeAllRanges();\n selection.addRange(newRange);\n }\n\n triggerChange();\n return;\n }\n\n if (isCursorAtStartOfListItem(range, listItem)) {\n const prevLi = listItem.previousElementSibling;\n if (prevLi?.tagName === \"LI\" && isListItemEffectivelyEmpty(prevLi)) {\n e.preventDefault();\n prevLi.remove();\n if (list.children.length === 0) {\n list.remove();\n }\n triggerChange();\n }\n }\n return;\n }\n\n // Handle Ctrl/Cmd + B/I/U for bold/italic/underline\n if ((e.ctrlKey || e.metaKey) && e.key === \"b\") {\n e.preventDefault();\n exec(\"bold\");\n } else if ((e.ctrlKey || e.metaKey) && e.key === \"i\") {\n e.preventDefault();\n exec(\"italic\");\n } else if ((e.ctrlKey || e.metaKey) && e.key === \"u\") {\n e.preventDefault();\n exec(\"underline\");\n }\n }, [exec, triggerChange, fontColor, areaHighlightMode, selectedMedia]);\n\n const confirmLink = () => {\n // Add protocol if missing\n let url = linkUrl.trim();\n if (url && !/^(https?:\\/\\/|mailto:|tel:)/i.test(url)) {\n url = `https://${url}`;\n }\n\n const safeUrl = escapeAttr(url);\n const safeText = escapeHtml(linkText || linkUrl);\n\n const sel = window.getSelection();\n sel.removeAllRanges();\n if (selectionRangeRef.current) {\n sel.addRange(selectionRangeRef.current);\n }\n\n const linkHtml = `<a href=\"${safeUrl}\" target=\"_blank\" rel=\"noopener noreferrer\" style=\"color: blue;\">${safeText}</a>`;\n document.execCommand(\"insertHTML\", false, linkHtml);\n\n setLinkModalOpen(false);\n triggerChange();\n focus();\n selectionRangeRef.current = null;\n };\n\n const cancelLink = () => {\n setLinkModalOpen(false);\n selectionRangeRef.current = null;\n };\n\n const handleSelect = (type) => {\n exec(type === \"unordered\" ? \"insertUnorderedList\" : \"insertOrderedList\");\n };\n\n const applyBlockFormat = (format) => {\n document.execCommand(\"formatBlock\", false, format);\n setCurrentBlockFormat(format);\n triggerChange();\n focus();\n };\n\n const clearFormatting = () => {\n document.execCommand(\"removeFormat\", false, null);\n document.execCommand(\"unlink\", false, null);\n document.execCommand(\"formatBlock\", false, \"div\");\n setCurrentBlockFormat(\"div\");\n setCurrentFontSize(\"16\");\n setCurrentLineHeight(\"\");\n setFontColor(\"#000000\");\n removeBackgroundColor();\n focus();\n };\n\n const deleteTextBeforeCursorInBlock = (block, range, selection) => {\n const prefixRange = document.createRange();\n prefixRange.setStart(block, 0);\n prefixRange.setEnd(range.startContainer, range.startOffset);\n prefixRange.deleteContents();\n\n const nextRange = document.createRange();\n nextRange.setStart(block, 0);\n nextRange.collapse(true);\n selection.removeAllRanges();\n selection.addRange(nextRange);\n };\n\n const applyMarkdownShortcut = (event) => {\n if (event.key !== \" \" || event.ctrlKey || event.metaKey || event.altKey) {\n return false;\n }\n\n const selection = window.getSelection();\n if (!selection?.rangeCount || !selection.isCollapsed || !editorRef.current) {\n return false;\n }\n\n const range = selection.getRangeAt(0);\n const block = getActiveBlock(range.startContainer);\n if (!block || !editorRef.current.contains(block)) return false;\n\n const prefixRange = document.createRange();\n prefixRange.setStart(block, 0);\n prefixRange.setEnd(range.startContainer, range.startOffset);\n const textBeforeCursor = prefixRange.toString().replace(/\\u00A0/g, \" \").trim();\n\n const shortcuts = {\n \"#\": () => applyBlockFormat(\"h1\"),\n \"##\": () => applyBlockFormat(\"h2\"),\n \"###\": () => applyBlockFormat(\"h3\"),\n \">\": () => applyBlockFormat(\"blockquote\"),\n \"-\": () => handleSelect(\"unordered\"),\n \"*\": () => handleSelect(\"unordered\"),\n \"1.\": () => handleSelect(\"ordered\"),\n };\n\n const action = shortcuts[textBeforeCursor];\n if (!action) return false;\n\n event.preventDefault();\n deleteTextBeforeCursorInBlock(block, range, selection);\n action();\n return true;\n };\n\n const onLineHeightChange = (value) => {\n if (!value) return;\n\n const sel = window.getSelection();\n if (!sel || !sel.rangeCount) return;\n\n const range = sel.getRangeAt(0);\n const editor = editorRef.current;\n if (!editor) return;\n\n const walker = document.createTreeWalker(\n editor,\n NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_TEXT,\n {\n acceptNode: (node) => {\n return range.intersectsNode(node)\n ? NodeFilter.FILTER_ACCEPT\n : NodeFilter.FILTER_REJECT;\n },\n },\n false\n );\n\n let node;\n const blocksToStyle = new Set();\n const blockTags = ['P', 'DIV', 'H1', 'H2', 'H3', 'H4', 'H5', 'H6', 'LI', 'BLOCKQUOTE'];\n\n const tempRange = range.cloneRange();\n\n while ((node = walker.nextNode())) {\n if (node.nodeType === 1 && blockTags.includes(node.tagName)) {\n blocksToStyle.add(node);\n } else if (node.nodeType === 3) {\n let parent = node.parentNode;\n while (parent && parent !== editor && !blockTags.includes(parent.tagName)) {\n parent = parent.parentNode;\n }\n if (parent && parent !== editor && blockTags.includes(parent.tagName)) {\n blocksToStyle.add(parent);\n }\n }\n }\n\n if (blocksToStyle.size > 0) {\n blocksToStyle.forEach(block => {\n block.style.lineHeight = value;\n });\n } else {\n let common = range.commonAncestorContainer;\n if (common.nodeType === 3) common = common.parentNode;\n\n while (common && common !== editor && !blockTags.includes(common.tagName)) {\n common = common.parentNode;\n }\n\n if (common && common !== editor) {\n common.style.lineHeight = value;\n } else if (editor) {\n document.execCommand('formatBlock', false, 'div');\n let newCommon = window.getSelection().getRangeAt(0).commonAncestorContainer;\n if (newCommon.nodeType === 3) newCommon = newCommon.parentNode;\n if (newCommon && newCommon !== editor) {\n newCommon.style.lineHeight = value;\n }\n }\n }\n\n try {\n sel.removeAllRanges();\n sel.addRange(tempRange);\n } catch (e) { }\n\n setCurrentLineHeight(value);\n triggerChange();\n focus();\n };\n\n const applyFontSize = (size) => {\n const sel = window.getSelection();\n if (!sel || !sel.rangeCount) return;\n\n const range = sel.getRangeAt(0);\n const sizePx = `${size}px`;\n\n // Collapsed selection (cursor only): insert a styled zero-width span\n if (range.collapsed) {\n const span = document.createElement(\"span\");\n span.style.fontSize = sizePx;\n span.appendChild(document.createTextNode(\"\\u200B\"));\n range.insertNode(span);\n\n const newRange = document.createRange();\n newRange.setStart(span.firstChild, 1);\n newRange.collapse(true);\n sel.removeAllRanges();\n sel.addRange(newRange);\n\n triggerChange();\n focus();\n return;\n }\n\n // Extended selection (highlighted text)\n try {\n const editor = editorRef.current;\n if (!editor) return;\n\n // We will iterate through all the text nodes in the selection\n const walker = document.createTreeWalker(\n editor,\n NodeFilter.SHOW_TEXT,\n {\n acceptNode: (node) => {\n return range.intersectsNode(node)\n ? NodeFilter.FILTER_ACCEPT\n : NodeFilter.FILTER_REJECT;\n },\n },\n false\n );\n\n let node;\n const nodesToStyle = [];\n while ((node = walker.nextNode())) {\n nodesToStyle.push(node);\n }\n\n const savedRange = range.cloneRange();\n let lastInsertedNode = null;\n\n // Iterate through the selected text nodes and wrap them in spans\n for (const textNode of nodesToStyle) {\n const parent = textNode.parentNode;\n\n // This is important: check if the parent is a block-level element\n // like a list item or paragraph. If so, we want to style the block\n // itself to avoid breaking its structure.\n const isBlockLevel = ['P', 'H1', 'H2', 'H3', 'H4', 'H5', 'H6', 'LI', 'BLOCKQUOTE'].includes(parent.tagName);\n\n if (isBlockLevel) {\n parent.style.fontSize = sizePx;\n } else {\n // For inline text, wrap the selected portion in a new span\n const startOffset = textNode === savedRange.startContainer ? savedRange.startOffset : 0;\n const endOffset = textNode === savedRange.endContainer ? savedRange.endOffset : textNode.length;\n\n const newSpan = document.createElement(\"span\");\n newSpan.style.fontSize = sizePx;\n newSpan.textContent = textNode.textContent.substring(startOffset, endOffset);\n\n const tempRange = document.createRange();\n tempRange.setStart(textNode, startOffset);\n tempRange.setEnd(textNode, endOffset);\n\n tempRange.deleteContents();\n tempRange.insertNode(newSpan);\n lastInsertedNode = newSpan;\n }\n }\n\n // After styling, we need to correctly position the cursor\n if (lastInsertedNode) {\n const newRange = document.createRange();\n newRange.setStartAfter(lastInsertedNode);\n newRange.collapse(true);\n sel.removeAllRanges();\n sel.addRange(newRange);\n } else {\n // If no nodes were wrapped (e.g., we styled a block), restore the original selection\n sel.removeAllRanges();\n sel.addRange(savedRange);\n }\n\n } catch (err) {\n console.error(\"Error applying font size:\", err);\n }\n\n triggerChange();\n focus();\n };\n const handleInput = useCallback(() => {\n if (editorRef.current) {\n const next = getCleanHtml();\n setHtml(next);\n lastSynchronizedHtmlRef.current = next;\n onChange && onChange(next);\n updateMetrics();\n }\n }, [onChange, updateMetrics]);\n\n const handleImageUpload = async (e) => {\n const file = e.target.files[0];\n if (!file) return;\n\n try {\n setIsUploading(true);\n const uploadPromise = onImageUpload\n ? onImageUpload(file)\n : readFileAsDataURL(file);\n\n uploadPromise.then((url) => {\n if (url) {\n const finalUrl = typeof url === 'object' && url !== null && url.mediaUrl ? url.mediaUrl : url;\n insertImage(finalUrl, file.name);\n }\n setIsUploading(false);\n e.target.value = null;\n }).catch((error) => {\n console.error('Error uploading image:', error);\n setIsUploading(false);\n });\n } catch (error) {\n console.error('Error uploading image:', error);\n setIsUploading(false);\n }\n };\n useEffect(() => {\n // If disabled is explicitly false, make sure the editor is not editable\n if (disabled === true) {\n setEditable(false);\n }\n }, [disabled]);\n\n const handleEditorClick = useCallback((e) => {\n if (areaHighlightMode) {\n e.preventDefault();\n return;\n }\n\n setSelectionVersion(v => v + 1);\n\n const deleteBtn = e.target.closest(\n 'button[title=\"Remove image\"], button[title=\"Remove video\"]'\n );\n if (deleteBtn && editable && editorFocused) {\n e.preventDefault();\n e.stopPropagation();\n const wrapper = deleteBtn.closest('.image-container, .video-container');\n if (wrapper) {\n wrapper.remove();\n clearMediaSelection();\n triggerChange();\n }\n return;\n }\n\n const clickedMedia = e.target.closest('.image-container, .video-container');\n if (clickedMedia && editorRef.current?.contains(clickedMedia) && editable) {\n e.preventDefault();\n e.stopPropagation();\n selectMediaContainer(clickedMedia);\n return;\n }\n\n // Check if the click is on a link\n const clickedLink = e.target.closest('a');\n\n if (clickedLink) {\n e.preventDefault();\n e.stopPropagation();\n window.open(clickedLink.href, '_blank');\n return;\n }\n\n if (!e.target.closest('.rte-media-toolbar')) {\n clearMediaSelection();\n }\n\n // If disabled is true, prevent editing\n if (disabled === true) {\n e.preventDefault();\n return;\n }\n\n // Only allow setting editable to true if not disabled\n if (!editable && disabled !== true) {\n setEditable(true);\n setTimeout(() => {\n if (editorRef.current) {\n editorRef.current.focus();\n }\n }, 0);\n }\n }, [areaHighlightMode, editable, disabled, editorFocused, triggerChange]);\n\n useEffect(() => {\n if (!selectedMedia) return;\n syncMediaWidthControls(selectedMedia);\n }, [selectedMedia, selectionVersion]);\n\n useEffect(() => {\n const editor = editorRef.current;\n if (!editor || !selectedMedia) return;\n\n const bumpToolbarPosition = () => setSelectionVersion((v) => v + 1);\n editor.addEventListener(\"scroll\", bumpToolbarPosition, { passive: true });\n window.addEventListener(\"resize\", bumpToolbarPosition, { passive: true });\n\n return () => {\n editor.removeEventListener(\"scroll\", bumpToolbarPosition);\n window.removeEventListener(\"resize\", bumpToolbarPosition);\n };\n }, [selectedMedia]);\n\n const renderMediaToolbar = () => {\n if (!selectedMedia || !editorRef.current || !editable) return null;\n\n const wrapperEl = contentWrapperRef.current;\n const anchorRect = wrapperEl?.getBoundingClientRect() ?? editorRef.current.getBoundingClientRect();\n const mediaRect = selectedMedia.getBoundingClientRect();\n const relTop = mediaRect.top - anchorRect.top;\n const relLeft = mediaRect.left - anchorRect.left;\n const mediaWidth = mediaRect.width;\n const mediaHeight = mediaRect.height;\n const currentPercent = getMediaWidthPercent(selectedMedia);\n const widthPresets = [25, 50, 75, 100];\n const toolbarWidth = 340;\n const toolbarHeight = 40;\n const gap = 8;\n const preferredTop = relTop - toolbarHeight - gap;\n const toolbarTop =\n preferredTop >= 4 ? preferredTop : relTop + mediaHeight + gap;\n\n const applyCustomMediaWidth = () => {\n const num = parseFloat(mediaWidthInput);\n if (isNaN(num) || num <= 0) {\n syncMediaWidthControls(selectedMedia);\n return;\n }\n if (mediaWidthUnit === \"px\") {\n applyMediaWidthPx(selectedMedia, num);\n } else {\n applyMediaWidthPercent(selectedMedia, num);\n }\n syncMediaWidthControls(selectedMedia);\n setSelectionVersion((v) => v + 1);\n triggerChange();\n };\n\n const handleUnitChange = (newUnit) => {\n if (newUnit === mediaWidthUnit) return;\n\n const editorInnerWidth = getEditorInnerWidth();\n const currentVal = parseFloat(mediaWidthInput);\n if (isNaN(currentVal) || currentVal <= 0) {\n setMediaWidthUnit(newUnit);\n return;\n }\n\n let converted = currentVal;\n if (newUnit === \"px\" && mediaWidthUnit === \"%\") {\n converted = Math.round((editorInnerWidth * currentVal) / 100);\n applyMediaWidthPx(selectedMedia, converted);\n } else if (newUnit === \"%\" && mediaWidthUnit === \"px\") {\n converted = Math.min(\n 100,\n Math.max(10, Math.round((currentVal / editorInnerWidth) * 100))\n );\n applyMediaWidthPercent(selectedMedia, converted);\n }\n\n setMediaWidthInput(String(converted));\n setMediaWidthUnit(newUnit);\n setSelectionVersion((v) => v + 1);\n triggerChange();\n };\n\n const handleAlignment = (align) => {\n selectedMedia.classList.remove(\"image-align-left\", \"image-align-center\", \"image-align-right\");\n selectedMedia.classList.add(`image-align-${align}`);\n const img = selectedMedia.querySelector(\"img\");\n if (img) img.setAttribute(\"data-align\", align);\n triggerChange();\n };\n\n const setWidth = (percent) => {\n applyMediaWidthPercent(selectedMedia, percent);\n syncMediaWidthControls(selectedMedia);\n setSelectionVersion((v) => v + 1);\n triggerChange();\n };\n\n const removeMedia = () => {\n selectedMedia.remove();\n clearMediaSelection();\n triggerChange();\n };\n\n const isActivePercent = (percent) => {\n if (selectedMedia.dataset.widthPx) return false;\n if (!selectedMedia.dataset.widthPercent && !(selectedMedia.style.width || \"\").endsWith(\"%\")) {\n return false;\n }\n return Math.abs(currentPercent - percent) <= 3;\n };\n\n const isFormControl = (target) =>\n target instanceof Element && !!target.closest(\"input, select, textarea\");\n\n return (\n <div\n className=\"rte-media-toolbar\"\n onMouseDown={(e) => {\n e.stopPropagation();\n if (!isFormControl(e.target)) {\n e.preventDefault();\n }\n }}\n onClick={(e) => e.stopPropagation()}\n style={{\n position: \"absolute\",\n top: Math.max(4, toolbarTop),\n left: Math.max(\n 8,\n Math.min(\n relLeft + mediaWidth / 2 - toolbarWidth / 2,\n anchorRect.width - toolbarWidth - 8\n )\n ),\n zIndex: 1000,\n }}\n >\n <button type=\"button\" onClick={() => handleAlignment(\"left\")} title=\"Align Left\">L</button>\n <button type=\"button\" onClick={() => handleAlignment(\"center\")} title=\"Align Center\">C</button>\n <button type=\"button\" onClick={() => handleAlignment(\"right\")} title=\"Align Right\">R</button>\n <span className=\"rte-media-toolbar-divider\" />\n {widthPresets.map((percent) => (\n <button\n key={percent}\n type=\"button\"\n className={isActivePercent(percent) ? \"active\" : \"\"}\n onClick={() => setWidth(percent)}\n title={`${percent}% width`}\n >\n {percent}%\n </button>\n ))}\n <span className=\"rte-media-toolbar-divider\" />\n <div className=\"rte-media-width-custom\">\n <input\n type=\"number\"\n className=\"rte-media-width-input\"\n value={mediaWidthInput}\n min={mediaWidthUnit === \"%\" ? 10 : 20}\n max={mediaWidthUnit === \"%\" ? 100 : 2000}\n title=\"Custom width\"\n onChange={(e) => setMediaWidthInput(e.target.value)}\n onBlur={(e) => {\n if (e.relatedTarget?.closest?.(\".rte-media-width-custom\")) return;\n applyCustomMediaWidth();\n }}\n onMouseDown={(e) => e.stopPropagation()}\n onKeyDown={(e) => {\n if (e.key === \"Enter\") {\n e.preventDefault();\n applyCustomMediaWidth();\n }\n }}\n />\n <select\n className=\"rte-media-width-unit\"\n value={mediaWidthUnit}\n onChange={(e) => handleUnitChange(e.target.value)}\n onMouseDown={(e) => e.stopPropagation()}\n >\n <option value=\"%\">%</option>\n <option value=\"px\">px</option>\n </select>\n <button\n type=\"button\"\n className=\"rte-media-width-apply\"\n title=\"Apply size\"\n onClick={applyCustomMediaWidth}\n >\n ✓\n </button>\n </div>\n <span className=\"rte-media-toolbar-divider\" />\n <button type=\"button\" onClick={removeMedia} className=\"danger\" title=\"Remove\">×</button>\n </div>\n );\n };\n\n if (isLoading) {\n return <Spinner />;\n }\n\n return (\n <div className=\"rte-main-wrapper\" style={{ width: '100%', position: 'relative' }}>\n {label && <LabelComponent>{label}</LabelComponent>}\n <div\n style={{ position: 'relative' }}\n className={!showBorder ? \"\" : \"rte-container\"}\n onClick={handleEditorClick}\n onMouseOver={(e) => {\n const table = e.target.closest('table');\n if (table && editorRef.current.contains(table)) {\n setHoveredTable(table);\n }\n }}\n onMouseOut={(e) => {\n const table = e.target.closest('table');\n const related = e.relatedTarget;\n if (table && (!related || !table.contains(related)) && !related?.closest('.rte-table-delete-hover')) {\n setHoveredTable(null);\n }\n }}\n onDrop={handleDrop}\n onDragOver={(e) => {\n e.preventDefault();\n e.stopPropagation();\n }}\n >\n {/* Toolbar */}\n {!disabled && (\n <div className=\"rte-toolbar\">\n {/* Bold */}\n <button\n type=\"button\"\n title=\"Bold\"\n onMouseDown={(e) => {\n e.preventDefault();\n exec(\"bold\");\n }}\n className={`rte-toolbar-button ${isBold ? \"active\" : \"\"}`}\n >\n <FaBold size={14} />\n </button>\n\n {/* Italic */}\n <button\n type=\"button\"\n title=\"Italic\"\n onMouseDown={(e) => {\n e.preventDefault();\n exec(\"italic\");\n }}\n className={`rte-toolbar-button ${isItalic ? \"active\" : \"\"}`}\n >\n <FaItalic size={14} />\n </button>\n\n {/* Underline */}\n <button\n type=\"button\"\n title=\"Underline\"\n onMouseDown={(e) => {\n e.preventDefault();\n exec(\"underline\");\n }}\n className={`rte-toolbar-button ${isUnderline ? \"active\" : \"\"}`}\n >\n <FaUnderline size={14} />\n </button>\n\n <div style={{ width: '1px', height: '20px', backgroundColor: '#e5e7eb', margin: '0 4px' }}></div>\n\n {/* Headings */}\n <select\n value={currentBlockFormat}\n onMouseDown={(e) => e.stopPropagation()}\n onChange={(e) => {\n e.preventDefault();\n e.stopPropagation();\n applyBlockFormat(e.target.value);\n }}\n className=\"rte-toolbar-select rte-heading-select\"\n title=\"Text style\"\n >\n <option value=\"div\">Paragraph</option>\n <option value=\"h1\">Heading 1</option>\n <option value=\"h2\">Heading 2</option>\n <option value=\"h3\">Heading 3</option>\n <option value=\"blockquote\">Quote</option>\n </select>\n\n <button\n type=\"button\"\n title=\"Clear Formatting\"\n className=\"rte-toolbar-button rte-toolbar-button-text\"\n onMouseDown={(e) => {\n e.preventDefault();\n clearFormatting();\n }}\n >\n Tx\n </button>\n\n <div style={{ width: '1px', height: '20px', backgroundColor: '#e5e7eb', margin: '0 4px' }}></div>\n\n {/* Font Size */}\n <select\n value={currentFontSize}\n onMouseDown={(e) => e.stopPropagation()}\n onChange={(e) => {\n e.preventDefault();\n e.stopPropagation();\n const size = e.target.value;\n if (!size) return;\n applyFontSize(size);\n setCurrentFontSize(size);\n focus();\n }}\n className=\"rte-toolbar-select\"\n style={{ width: '70px' }}\n >\n {[8, 10, 12, 14, 16, 18, 20, 24, 28, 32, 36, 40, 48].map((s) => (\n <option key={s} value={s}>{s}px</option>\n ))}\n </select>\n\n {/* Text Color */}\n <label title=\"Text Color\" className=\"rte-color-picker-label\">\n <FaFont size={14} style={{ color: fontColor }} />\n <input\n type=\"color\"\n value={fontColor}\n onMouseDown={(e) => {\n e.preventDefault();\n e.stopPropagation();\n saveSelection();\n }}\n onChange={(e) => {\n e.stopPropagation();\n applyTextColor(e.target.value);\n }}\n className=\"rte-color-input\"\n />\n </label>\n\n {/* Background Color */}\n <label\n title={areaHighlightMode ? \"Highlight color for area selection\" : \"Text background color\"}\n className=\"rte-color-picker-label rte-bg-color-picker-label\"\n >\n <span\n className={`rte-bg-color-swatch${hasActiveTextBackground ? \"\" : \" rte-bg-color-swatch-none\"}`}\n style={\n hasActiveTextBackground\n ? { backgroundColor: bgColor, color: fontColor }\n : { color: fontColor }\n }\n >\n A\n </span>\n <input\n type=\"color\"\n value={bgColor}\n onMouseDown={(e) => {\n e.preventDefault();\n e.stopPropagation();\n if (!areaHighlightMode) saveSelection();\n }}\n onChange={(e) => {\n e.stopPropagation();\n const color = e.target.value;\n setBgColor(color);\n if (!areaHighlightMode) {\n applyBackgroundColor(color);\n }\n }}\n className=\"rte-color-input\"\n />\n </label>\n\n <button\n type=\"button\"\n title=\"Remove background color\"\n className={`rte-toolbar-button rte-bg-color-clear${hasActiveTextBackground ? \" active\" : \"\"}`}\n onMouseDown={(e) => {\n e.preventDefault();\n e.stopPropagation();\n saveSelection();\n removeBackgroundColor();\n }}\n >\n <span className=\"rte-bg-color-clear-icon\" aria-hidden=\"true\">A</span>\n </button>\n\n <button\n type=\"button\"\n title=\"Area highlight — drag to select a box (like screenshot)\"\n className={`rte-toolbar-button rte-area-highlight-toggle${areaHighlightMode ? \" active\" : \"\"}`}\n onMouseDown={(e) => e.preventDefault()}\n onClick={() => {\n setAreaHighlightMode((prev) => !prev);\n setMarqueePreview(null);\n areaDragRef.current = null;\n focus();\n }}\n >\n <span className=\"rte-area-highlight-icon\" aria-hidden=\"true\" />\n </button>\n\n <div style={{ width: '1px', height: '20px', backgroundColor: '#e5e7eb', margin: '0 4px' }}></div>\n\n {/* Alignment */}\n <button\n type=\"button\"\n title=\"Align Left\"\n className={`rte-toolbar-button ${activeAlign === \"left\" ? \"active\" : \"\"}`}\n onMouseDown={(e) => {\n e.preventDefault();\n exec(\"justifyLeft\");\n setActiveAlign(\"left\");\n }}\n >\n <FaAlignLeft size={14} />\n </button>\n\n <button\n type=\"button\"\n title=\"Align Center\"\n className={`rte-toolbar-button ${activeAlign === \"center\" ? \"active\" : \"\"}`}\n onMouseDown={(e) => {\n e.preventDefault();\n exec(\"justifyCenter\");\n setActiveAlign(\"center\");\n }}\n >\n <FaAlignCenter size={14} />\n </button>\n\n <button\n type=\"button\"\n title=\"Align Right\"\n className={`rte-toolbar-button ${activeAlign === \"right\" ? \"active\" : \"\"}`}\n onMouseDown={(e) => {\n e.preventDefault();\n exec(\"justifyRight\");\n setActiveAlign(\"right\");\n }}\n >\n <FaAlignRight size={14} />\n </button>\n\n <div style={{ width: '1px', height: '20px', backgroundColor: '#e5e7eb', margin: '0 4px' }}></div>\n\n {/* Lists */}\n <button\n type=\"button\"\n title=\"Unordered List\"\n onMouseDown={(e) => {\n e.preventDefault();\n handleSelect(\"unordered\");\n }}\n className={`rte-toolbar-button ${currentListType === \"unordered\" ? \"active\" : \"\"}`}\n >\n <FaListUl size={14} />\n </button>\n <button\n type=\"button\"\n title=\"Ordered List\"\n onMouseDown={(e) => {\n e.preventDefault();\n handleSelect(\"ordered\");\n }}\n className={`rte-toolbar-button ${currentListType === \"ordered\" ? \"active\" : \"\"}`}\n >\n <FaListOl size={14} />\n </button>\n\n {/* Line Height */}\n <div style={{ position: 'relative', display: 'flex', alignItems: 'center' }}>\n <select\n value={currentLineHeight}\n onMouseDown={(e) => e.stopPropagation()}\n onChange={(e) => {\n e.preventDefault();\n const height = e.target.value;\n if (height) {\n onLineHeightChange(height);\n setCurrentLineHeight(height);\n }\n focus();\n }}\n className=\"rte-toolbar-select\"\n style={{ width: '64px', paddingLeft: '24px' }}\n >\n <option value=\"\" disabled>↕</option>\n {['1', '1.15', '1.5', '2'].map((h) => (\n <option key={h} value={h}>{h}</option>\n ))}\n </select>\n <div style={{ position: 'absolute', left: '6px', pointerEvents: 'none', color: '#9ca3af' }}>\n <FaTextHeight size={12} />\n </div>\n </div>\n\n <div style={{ width: '1px', height: '20px', backgroundColor: '#e5e7eb', margin: '0 4px' }}></div>\n\n <div style={{ width: '1px', height: '20px', backgroundColor: '#e5e7eb', margin: '0 4px' }}></div>\n \n <button\n type=\"button\"\n title=\"Add Link\"\n className=\"rte-toolbar-button\"\n onMouseDown={(e) => {\n e.preventDefault();\n addLink();\n }}\n >\n <FaLink size={14} />\n </button>\n\n <input\n ref={fileInputRef}\n type=\"file\"\n accept=\"image/*\"\n style={{ display: \"none\" }}\n onChange={handleImageUpload}\n disabled={isUploading}\n />\n <button\n type=\"button\"\n className=\"rte-toolbar-button\"\n onMouseDown={(e) => {\n e.preventDefault();\n if (!isUploading) fileInputRef.current?.click();\n }}\n disabled={isUploading}\n title=\"Upload image\"\n >\n {isUploading ? (\n <div className=\"rte-spinner\" style={{ width: '14px', height: '14px', borderWidth: '2px' }}></div>\n ) : (\n <FaImage size={14} />\n )}\n </button>\n\n <div style={{ width: '1px', height: '20px', backgroundColor: '#e5e7eb', margin: '0 4px' }}></div>\n\n {/* Table */}\n <button\n type=\"button\"\n title=\"Insert Table\"\n className=\"rte-toolbar-button\"\n onMouseDown={(e) => {\n e.preventDefault();\n const sel = window.getSelection();\n if (sel && sel.rangeCount > 0) {\n selectionRangeRef.current = sel.getRangeAt(0).cloneRange();\n }\n setTableModalOpen(true);\n }}\n >\n <FaTable size={14} />\n </button>\n\n {/* Video */}\n <button\n type=\"button\"\n title=\"Embed Video (YouTube, Vimeo, etc.)\"\n className={`rte-toolbar-button ${videoModalOpen ? 'active' : ''}`}\n onMouseDown={(e) => {\n e.preventDefault();\n saveSelection();\n setVideoModalOpen(true);\n }}\n >\n <FaVideo size={14} />\n </button>\n\n {/* Table Actions (Conditional) */}\n {(() => {\n if (typeof window === \"undefined\") return null;\n const sel = window.getSelection();\n // Robust check: inside cell OR the table itself is selected\n const isCell = sel && sel.rangeCount > 0 && sel.anchorNode && (findParentTag(sel.anchorNode, 'TD') || findParentTag(sel.anchorNode, 'TH'));\n const isTable = sel && sel.rangeCount > 0 && sel.anchorNode && findParentTag(sel.anchorNode, 'TABLE');\n \n if (isCell || isTable) {\n return (\n <>\n <div style={{ width: '1px', height: '20px', backgroundColor: '#e5e7eb', margin: '0 4px' }}></div>\n <button type=\"button\" title=\"Add Row Above\" className=\"rte-toolbar-button\" onMouseDown={(e) => { e.preventDefault(); tableAction('addRowAbove'); }}>+R↑</button>\n <button type=\"button\" title=\"Add Row Below\" className=\"rte-toolbar-button\" onMouseDown={(e) => { e.preventDefault(); tableAction('addRowBelow'); }}>+R↓</button>\n <button type=\"button\" title=\"Add Col Before\" className=\"rte-toolbar-button\" onMouseDown={(e) => { e.preventDefault(); tableAction('addColBefore'); }}>+C←</button>\n <button type=\"button\" title=\"Add Col After\" className=\"rte-toolbar-button\" onMouseDown={(e) => { e.preventDefault(); tableAction('addColAfter'); }}>+C→</button>\n <button type=\"button\" title=\"Merge Cells (Right)\" className=\"rte-toolbar-button\" onMouseDown={(e) => { e.preventDefault(); tableAction('mergeRight'); }}><FaObjectGroup size={14} /></button>\n <div style={{ display: 'flex', gap: '10px' }}>\n <button\n type=\"button\"\n title=\"Delete Row\"\n className=\"rte-toolbar-button rte-toolbar-button-danger\"\n onMouseDown={(e) => { e.preventDefault(); tableAction('deleteRow'); }}\n >\n <FaTrash size={12} />\n <span style={{ fontSize: '10px' }}>Row</span>\n </button>\n\n <button\n type=\"button\"\n title=\"Delete Column\"\n className=\"rte-toolbar-button rte-toolbar-button-danger\"\n onMouseDown={(e) => { e.preventDefault(); tableAction('deleteCol'); }}\n >\n <FaTrash size={12} />\n <span style={{ fontSize: '10px' }}>Col</span>\n </button>\n\n <button\n type=\"button\"\n title=\"Delete Table\"\n className=\"rte-toolbar-button rte-toolbar-button-danger\"\n onMouseDown={(e) => { e.preventDefault(); tableAction('deleteTable'); }}\n >\n <FaTrash size={12} />\n <span style={{ fontSize: '10px' }}>Table</span>\n </button>\n</div>\n </>\n );\n }\n return null;\n })()}\n </div>\n )}\n {/* Editor Content Area */}\n <div\n ref={contentWrapperRef}\n className={`rte-content-wrapper${areaHighlightMode ? \" rte-area-highlight-mode\" : \"\"}`}\n style={{ position: 'relative' }}\n onMouseDown={handleAreaSelectMouseDown}\n >\n {areaHighlightMode && (\n <div className=\"rte-area-highlight-hint\" aria-hidden=\"true\">\n Drag to select an area, then release to apply highlight\n </div>\n )}\n {marqueePreview && (\n <div\n className=\"rte-marquee-preview\"\n style={{\n left: marqueePreview.left,\n top: marqueePreview.top,\n width: marqueePreview.width,\n height: marqueePreview.height,\n backgroundColor: `${bgColor}55`,\n borderColor: bgColor,\n }}\n />\n )}\n <div\n ref={editorRef}\n contentEditable={editable && disabled !== true}\n suppressContentEditableWarning\n role=\"textbox\"\n aria-multiline=\"true\"\n aria-label={label || \"Rich text editor\"}\n onInput={handleInput}\n onPaste={handlePaste}\n onDrop={handleDrop}\n onDragStart={(e) => e.preventDefault()}\n onDragOver={(e) => e.preventDefault()}\n onKeyDown={handleKeyDown}\n onKeyUp={handleKeyUp}\n onMouseUp={() => {\n saveSelection();\n setSelectionVersion((v) => v + 1);\n }}\n onClick={handleEditorClick}\n onFocus={handleEditorFocus}\n onBlur={handleEditorBlur}\n style={{\n minHeight: minHeight || '150px',\n maxHeight: maxHeight || '500px',\n paddingLeft: paddingLeft || '12px'\n }}\n className={`rte-content${editable ? \" rte-is-editable\" : \"\"}${editorFocused ? \" rte-is-focused\" : \"\"}`}\n />\n {isEmpty && editable && disabled !== true && (\n <div\n className=\"rte-placeholder\"\n style={{ left: paddingLeft || '12px' }}\n aria-hidden=\"true\"\n >\n {placeholder}\n </div>\n )}\n {renderMediaToolbar()}\n </div>\n\n \n {/* Footer with Character/Word Count */}\n <div className=\"rte-footer\">\n <div className=\"rte-footer-content\">\n <span className=\"rte-footer-item\"><b>{metrics.words}</b> words</span>\n <span className=\"rte-footer-separator\">•</span>\n <span className=\"rte-footer-item\"><b>{metrics.chars}</b> characters</span>\n </div>\n </div>\n {linkModalOpen && (\n <div className=\"rte-modal-overlay\" onClick={cancelLink}>\n <div className=\"rte-modal\" onClick={(e) => e.stopPropagation()}>\n <div className=\"rte-modal-header\">\n <h3 className=\"rte-modal-title\">Insert Link</h3>\n </div>\n <div className=\"rte-form-group\">\n <label className=\"rte-label\">Link Text</label>\n <input\n type=\"text\"\n className=\"rte-input\"\n placeholder=\"e.g. Google\"\n value={linkText}\n onChange={(e) => setLinkText(e.target.value)}\n />\n </div>\n <div className=\"rte-form-group\">\n <label className=\"rte-label\">URL</label>\n <input\n type=\"text\"\n className=\"rte-input\"\n placeholder=\"https://example.com\"\n value={linkUrl}\n onChange={(e) => setLinkUrl(e.target.value)}\n onKeyDown={(e) => e.key === 'Enter' && confirmLink()}\n autoFocus\n />\n </div>\n <div className=\"rte-modal-actions\">\n <button type=\"button\" className=\"rte-button rte-button-secondary\" onClick={cancelLink}>Cancel</button>\n <button type=\"button\" className=\"rte-button rte-button-primary\" onClick={confirmLink} disabled={!linkUrl}>Insert</button>\n </div>\n </div>\n </div>\n )}\n\n {/* Table Modal */}\n {tableModalOpen && (\n <div className=\"rte-modal-overlay\" onClick={() => setTableModalOpen(false)}>\n <div className=\"rte-modal\" onClick={(e) => e.stopPropagation()}>\n <h3 className=\"rte-modal-title\">Insert Table</h3>\n <div className=\"rte-form-group\">\n <label className=\"rte-label\">Rows</label>\n <input type=\"number\" className=\"rte-input\" value={tableRows} onChange={(e) => setTableRows(e.target.value)} min=\"1\" max=\"10\" />\n </div>\n <div className=\"rte-form-group\">\n <label className=\"rte-label\">Columns</label>\n <input type=\"number\" className=\"rte-input\" value={tableCols} onChange={(e) => setTableCols(e.target.value)} min=\"1\" max=\"10\" />\n </div>\n <div className=\"rte-modal-actions\">\n <button type=\"button\" className=\"rte-button rte-button-secondary\" onClick={() => setTableModalOpen(false)}>Cancel</button>\n <button type=\"button\" className=\"rte-button rte-button-primary\" onClick={insertTable}>Insert</button>\n </div>\n </div>\n </div>\n )}\n\n {/* Video Modal */}\n {videoModalOpen && (\n <div className=\"rte-modal-overlay\" onClick={() => setVideoModalOpen(false)}>\n <div className=\"rte-modal\" onClick={(e) => e.stopPropagation()}>\n <div className=\"rte-modal-header\">\n <h3 className=\"rte-modal-title\">Embed Video</h3>\n </div>\n <div className=\"rte-form-group\">\n <label className=\"rte-label\">Paste Video URL (YouTube, Vimeo...) <span style={{ color: '#ef4444' }}>*</span></label>\n <input \n type=\"text\" \n className=\"rte-input\" \n value={videoUrl} \n onChange={(e) => setVideoUrl(e.target.value)} \n placeholder=\"Paste URL here...\" \n autoFocus \n onKeyDown={(e) => {\n if (e.key === 'Enter' && videoUrl.trim()) insertVideo();\n if (e.key === 'Escape') setVideoModalOpen(false);\n }}\n />\n </div>\n <div className=\"rte-modal-actions\">\n <button type=\"button\" className=\"rte-button rte-button-secondary\" onClick={() => setVideoModalOpen(false)}>Cancel</button>\n <button \n type=\"button\" \n className=\"rte-button rte-button-primary\" \n onClick={() => {\n if (videoUrl.trim()) {\n insertVideo();\n }\n }}\n disabled={!videoUrl.trim()}\n >\n Embed Video\n </button>\n </div>\n </div>\n </div>\n )}\n\n {/* Image Zoom Modal */}\n {imageModalOpen && (\n <div className=\"rte-modal-overlay\" onClick={closeImageModal}>\n <div\n style={{ position: \"relative\", maxWidth: \"90%\", maxHeight: \"90%\" }}\n onClick={(e) => e.stopPropagation()}\n >\n <img\n src={selectedImageUrl}\n style={{\n width: \"100%\",\n maxHeight: \"90vh\",\n borderRadius: '12px',\n transform: `scale(${zoomLevel})`,\n transition: \"transform 0.2s ease\",\n boxShadow: '0 25px 50px -12px rgba(0,0,0,0.5)'\n }}\n alt=\"Zoomed\"\n />\n </div>\n </div>\n )}\n </div>\n\n {showEditButton && editable && (\n <div style={{ display: \"flex\", justifyContent: \"flex-end\", gap: \"12px\", marginTop: \"12px\" }}>\n <button\n type=\"button\"\n className=\"rte-button rte-button-secondary\"\n onClick={() => setEditable(false)}\n >\n Cancel\n </button>\n <button\n type=\"button\"\n className=\"rte-button rte-button-primary\"\n onClick={() => {\n onChange && onChange(html);\n setEditable(false);\n }}\n >\n Save Changes\n </button>\n </div>\n )}\n </div>\n );\n}\n"],"names":["FaImage","className","size","color","style","React","createElement","display","alignItems","justifyContent","fontSize","dangerouslySetInnerHTML","__html","FaBold","FaItalic","FaUnderline","FaTextHeight","FaAlignCenter","FaAlignRight","FaAlignLeft","FaListOl","FaListUl","FaFont","FaLink","FaTable","FaObjectGroup","FaTrash","FaVideo","isValidDraftFormat","content","blocks","entityMap","draftBlocksToHTML","console","warn","map","b","text","join","Spinner","LabelComponent","children","marginBottom","escapeHtml","str","String","replace","escapeAttr","URL_REGEX","TRANSPARENT_BACKGROUNDS","Set","isTransparentBackground","value","normalized","trim","toLowerCase","has","match","undefined","parseFloat","unwrapNode","element","parent","parentNode","firstChild","insertBefore","removeChild","unwrapAreaHighlightBlock","block","_block$classList","classList","contains","fragment","document","createDocumentFragment","appendChild","stripInlineBackground","HTMLElement","remove","tagName","hadBackground","backgroundColor","background","getAttribute","removeAttribute","tag","attributes","length","collectElementsInRange","range","root","elements","walker","createTreeWalker","NodeFilter","SHOW_ELEMENT","node","currentNode","intersectsNode","push","nextNode","elementHasRemovableBackground","_element$style","_element$style2","rectsIntersect","a","right","left","bottom","top","caretRangeFromClientPoint","x","y","_document$caretPositi","_document","caretRangeFromPoint","position","caretPositionFromPoint","call","createRange","setStart","offsetNode","offset","collapse","clipRectToBounds","rect","bounds","Math","max","min","width","height","BLOCK_SELECTOR","getIntersectingBlocks","editor","clientRect","candidates","querySelectorAll","filter","el","closest","getBoundingClientRect","some","other","isHighlightableBlock","textContent","querySelector","createAreaHighlightWrapper","textAlign","clipped","editorRect","widthPx","round","heightPx","region","minHeight","maxWidth","padding","borderRadius","margin","boxSizing","marginLeft","marginRight","leftOffset","insertAreaHighlightRegion","_alignNode","first","window","getComputedStyle","totalBlockHeight","forEach","targetHeight","innerPadding","extraVertical","pad","paddingTop","paddingBottom","insertRange","alignNode","startContainer","nodeType","innerHTML","getClientRectFromDrag","startX","startY","currentX","currentY","RichTextEditor","onChange","showEditButton","onBlur","disabled","editable","initialEditable","isLoading","isList","label","placeholder","showBorder","paddingLeft","maxHeight","onImageUpload","editorRef","useRef","contentWrapperRef","fileInputRef","scrollTopRef","areaDragRef","bgColorRef","html","setHtml","useState","linkModalOpen","setLinkModalOpen","linkUrl","setLinkUrl","linkText","setLinkText","selectionRangeRef","setEditable","editorFocused","setEditorFocused","lastSynchronizedHtmlRef","syncProcessedMediaRef","useEffect","currentListType","setCurrentListType","isBold","setIsBold","isItalic","setIsItalic","isUnderline","setIsUnderline","currentFontSize","setCurrentFontSize","currentLineHeight","setCurrentLineHeight","activeAlign","setActiveAlign","currentBlockFormat","setCurrentBlockFormat","imageModalOpen","setImageModalOpen","selectedImageUrl","setSelectedImageUrl","zoomLevel","setZoomLevel","isUploading","setIsUploading","videoModalOpen","setVideoModalOpen","videoUrl","setVideoUrl","tableModalOpen","setTableModalOpen","hoveredTable","setHoveredTable","tableRows","setTableRows","tableCols","setTableCols","selectionVersion","setSelectionVersion","selectedMedia","setSelectedMedia","mediaWidthInput","setMediaWidthInput","mediaWidthUnit","setMediaWidthUnit","metrics","setMetrics","words","chars","isEmpty","setIsEmpty","areaHighlightMode","setAreaHighlightMode","marqueePreview","setMarqueePreview","updateMetrics","useCallback","current","innerText","cleanText","split","stripped","hasMedia","openImageModal","url","scrollTop","closeImageModal","saveSelection","sel","getSelection","rangeCount","getRangeAt","cloneRange","handleKeyUp","v","handleZoomIn","prevZoom","handleZoomOut","handleKeyDown","e","key","handleWheel","ctrlKey","preventDefault","deltaY","addEventListener","passive","removeEventListener","requestAnimationFrame","clearMediaSelection","container","updateMediaControlVisibility","newContent","unescapeHtml","error","LIST_BLOCK_MEDIA_SELECTOR","isListItemEffectivelyEmpty","listItem","clone","cloneNode","hoistBlockMediaOutOfListItems","changed","list","items","Array","from","child","blockMedia","hadText","media","nextSibling","processExistingMedia","processExistingImages","processExistingVideos","getCleanHtml","stripEditorChrome","triggerChange","next","isParentStyle","tagNames","includes","fontWeight","Number","fontStyle","textDecoration","rgbToHex","rgb","result","slice","hex","parseInt","toString","getColorAtCursor","anchorNode","computedColor","getBackgroundColorAtCursor","_node$classList","_node$classList2","_node$style","bg","inlineBg","markBg","syncBackgroundColorState","activeBg","setHasActiveTextBackground","setBgColor","getEditorInnerWidth","clientWidth","ensureImageMediaFrame","imageContainer","frame","getImageMediaTarget","getMediaWidthPercent","dataset","widthPercent","endsWith","editorWidth","getMediaWidthPx","syncMediaWidthControls","applyMediaWidthPercent","percent","clamped","marginTop","img","objectFit","applyMediaWidthPx","px","normalizeMediaWidth","_editorRef$current","selectMediaContainer","_editorRef$current2","add","attachMediaResizeHandle","_resizeTarget$querySe","resizeTarget","handle","title","setAttribute","event","stopPropagation","clientX","startWidth","onMouseMove","moveEvent","nextWidth","onMouseUp","handleEditorFocus","handleEditorBlur","_editorRef$current3","activeElement","pointerEvents","BLOCK_TAGS","getActiveBlock","getBlockFormat","createMediaDeleteButton","onRemove","deleteBtn","type","onclick","handleGlobalSelectionSync","_editorRef$current4","listFound","nodeName","computedAlign","collapsed","setFontColor","queryCommandState","parentElement","sizeValue","focus","exec","command","execCommand","fontColor","bgColor","hasActiveTextBackground","getActiveTextColor","restoreSavedSelection","removeAllRanges","addRange","applyTextColor","applyBackgroundColor","clearMediaHighlightStyles","removeBackgroundColor","processElement","_element$classList","_element$classList2","_element$classList3","commonAncestorContainer","reverse","mark","applyMarqueeHighlight","clippedRect","cell","handleAreaSelectMouseDown","button","target","wrapper","wrapperRect","clientY","updatePreview","drag","onMove","ev","onUp","addLink","selectedText","findParentTag","curr","tableAction","action","row","table","newRowAbove","insertRow","rowIndex","i","cells","newCell","insertCell","border","newRowBelow","cellIndex","rows","cellIndexAfter","deleteRow","targetRowIndex","targetRow","targetCell","selectNodeContents","idx","deleteCell","_table$rows$rowIndex","targetColIndex","nextElementSibling","nextCell","colSpan","insertTable","cols","tableHtml","j","parseVideoUrl","ytRegExp","ytMatch","vimeoRegExp","vimeoMatch","dmRegExp","dmMatch","insertVideo","embedUrl","embedHtml","err","div","videoContainer","mediaEnhanced","_img$closest","existingWrapper","cursor","src","align","insertImage","dataUrl","fileName","alt","insertNodeAtCursor","_editorRef$current5","readFileAsDataURL","file","Promise","res","rej","reader","FileReader","onload","onerror","readAsDataURL","handlePaste","clipboardData","item","kind","indexOf","getAsFile","uploadPromise","then","finalUrl","mediaUrl","name","catch","htmlData","getData","tempDiv","plainText","htmlToInsert","safeUrl","handleDrop","files","dataTransfer","imageFiles","startsWith","deleteContents","insertNode","space","createTextNode","setStartAfter","txt","isCursorAtStartOfListItem","prefixRange","setEnd","startOffset","isCursorAtEndOfListItem","suffixRange","childNodes","prepareListItemForTyping","selection","activeColor","newRange","span","_editorRef$current6","applyMarkdownShortcut","newItem","newDiv","lastElementChild","afterRange","movedFragment","extractContents","_node$closest","_node","_editorRef$current7","prevLi","previousElementSibling","_list$parentNode","metaKey","confirmLink","test","safeText","linkHtml","cancelLink","handleSelect","applyBlockFormat","format","clearFormatting","deleteTextBeforeCursorInBlock","nextRange","altKey","isCollapsed","textBeforeCursor","shortcuts","#","##","###",">","-","*","1.","onLineHeightChange","SHOW_TEXT","acceptNode","FILTER_ACCEPT","FILTER_REJECT","blocksToStyle","blockTags","tempRange","lineHeight","common","newCommon","applyFontSize","sizePx","nodesToStyle","savedRange","lastInsertedNode","textNode","isBlockLevel","endOffset","endContainer","newSpan","substring","handleInput","handleImageUpload","handleEditorClick","_editorRef$current8","clickedMedia","clickedLink","open","href","setTimeout","bumpToolbarPosition","renderMediaToolbar","wrapperEl","anchorRect","mediaRect","relTop","relLeft","mediaWidth","mediaHeight","currentPercent","widthPresets","toolbarWidth","toolbarHeight","gap","preferredTop","toolbarTop","applyCustomMediaWidth","num","isNaN","handleUnitChange","newUnit","editorInnerWidth","currentVal","converted","handleAlignment","setWidth","removeMedia","isActivePercent","abs","isFormControl","Element","onMouseDown","onClick","zIndex","_e$relatedTarget","_e$relatedTarget$clos","relatedTarget","onKeyDown","onMouseOver","onMouseOut","related","onDrop","onDragOver","s","prev","h","ref","accept","_fileInputRef$current","click","borderWidth","isCell","isTable","Fragment","borderColor","contentEditable","suppressContentEditableWarning","role","onInput","onPaste","onDragStart","onKeyUp","onFocus","autoFocus","transform","transition","boxShadow"],"mappings":"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","x_google_ignoreList":[4]}
|