@panphora/clayjs 1.15.2 → 1.16.0

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.
Files changed (506) hide show
  1. package/README.md +4 -5
  2. package/THIRD-PARTY-NOTICES.md +16 -0
  3. package/compat/highlight-11.9.0.min.js +1213 -0
  4. package/compat/highlight-LICENSE +29 -0
  5. package/compat/journal-assets.lock.json +22 -0
  6. package/compat/overtype-2.6.1.min.js +116 -0
  7. package/compat/overtype-LICENSE +21 -0
  8. package/dist/all.js +90 -0
  9. package/dist/clay-dom.js +84 -0
  10. package/dist/clay-events.js +103 -0
  11. package/dist/clay-internals.js +85 -0
  12. package/dist/clay-options.js +93 -0
  13. package/dist/clay-router.js +98 -0
  14. package/dist/clay-ui.js +95 -0
  15. package/dist/clay-utils.js +84 -0
  16. package/dist/clay.js +146 -0
  17. package/dist/clay.standalone.js +83090 -58706
  18. package/dist/m/attrs/add-from-T5LJXFFI.js +1 -0
  19. package/dist/m/attrs/onaftersave-OKSWEJQF.js +1 -0
  20. package/dist/m/attrs/refetch-on-save-NWPPXOCZ.js +1 -0
  21. package/dist/m/attrs/save-freeze-FUP4Q4X3.js +1 -0
  22. package/dist/m/c-2AZDZWCK.js +1 -0
  23. package/dist/m/c-2JL6E75N.js +1 -0
  24. package/dist/m/c-2M73252O.js +1 -0
  25. package/dist/m/c-2SPVQSHC.js +1 -0
  26. package/dist/m/c-33HUYEDI.js +1 -0
  27. package/dist/m/c-33JJ6CBX.js +2 -0
  28. package/dist/m/c-35NBGMZB.js +1 -0
  29. package/dist/m/c-3GJ4SDE2.js +1 -0
  30. package/dist/m/c-3IQRECYS.js +1 -0
  31. package/dist/m/c-3OWDMNJR.js +2 -0
  32. package/dist/m/c-46XYM55L.js +1 -0
  33. package/dist/m/c-4B6H4G5V.js +1 -0
  34. package/dist/m/c-4DRMS4QG.js +9 -0
  35. package/dist/m/c-4FFHZM32.js +1 -0
  36. package/dist/m/c-4JZDZFF6.js +1 -0
  37. package/dist/m/c-4L3BTFRK.js +1 -0
  38. package/dist/m/c-4Q2XTQ2N.js +2 -0
  39. package/dist/m/c-4WKFKEKF.js +1 -0
  40. package/dist/m/c-4YSCRICO.js +1 -0
  41. package/dist/m/c-54RCDCBU.js +1 -0
  42. package/dist/m/c-5M4YEKCX.js +4 -0
  43. package/dist/m/c-5R4PTRG2.js +1 -0
  44. package/dist/m/c-5V3MOVJT.js +1 -0
  45. package/dist/m/c-5VYOWDTI.js +1 -0
  46. package/dist/m/c-5Y6TNX5W.js +34 -0
  47. package/dist/m/c-5YIHJ3TJ.js +1 -0
  48. package/dist/m/c-66O32MV3.js +28 -0
  49. package/dist/m/c-6HMB24EV.js +1 -0
  50. package/dist/m/c-7DJDKPGL.js +1 -0
  51. package/dist/m/c-7O6AFR65.js +1 -0
  52. package/dist/m/c-7SWMYKAI.js +1 -0
  53. package/dist/m/c-7VGZ7RU5.js +1 -0
  54. package/dist/m/c-A7LS5UZW.js +1 -0
  55. package/dist/m/c-ANQTJ3B5.js +2 -0
  56. package/dist/m/c-AQLFEATB.js +1 -0
  57. package/dist/m/c-AYVOREBE.js +1 -0
  58. package/dist/m/c-B2ZXPOS3.js +3 -0
  59. package/dist/m/c-BBVGTQG7.js +1 -0
  60. package/dist/m/c-BMIZKMPV.js +1 -0
  61. package/dist/m/c-BTDI4Y23.js +1 -0
  62. package/dist/m/c-BWFVSBDF.js +1 -0
  63. package/dist/m/c-BYTKL6UX.js +1 -0
  64. package/dist/m/c-CFHW5AMY.js +6 -0
  65. package/dist/m/c-CJZSLMVQ.js +1 -0
  66. package/dist/m/c-CYWLPPUS.js +1 -0
  67. package/dist/m/c-CZUSOB7V.js +1 -0
  68. package/dist/m/c-DBE6ORSI.js +1 -0
  69. package/dist/m/c-DCFSEJZG.js +1 -0
  70. package/dist/m/c-DNZ5IFM6.js +1 -0
  71. package/dist/m/c-EDHUR4MX.js +1 -0
  72. package/dist/m/c-EJTGYSLN.js +1 -0
  73. package/dist/m/c-EY6UOM54.js +1 -0
  74. package/dist/m/c-F3CKJTJS.js +1 -0
  75. package/dist/m/c-F7Y6FLPY.js +1 -0
  76. package/dist/m/c-FA4DZVTC.js +1 -0
  77. package/dist/m/c-FILLTJA7.js +1 -0
  78. package/dist/m/c-G2BUZITR.js +1 -0
  79. package/dist/m/c-GB3JTV6E.js +1 -0
  80. package/dist/m/c-GBGWXTX4.js +1 -0
  81. package/dist/m/c-GHBCCVG4.js +1 -0
  82. package/dist/m/c-GJAEGGXY.js +1 -0
  83. package/dist/m/c-GOWBDM6J.js +1 -0
  84. package/dist/m/c-GQ6F6IDK.js +1 -0
  85. package/dist/m/c-H4LG442Q.js +1 -0
  86. package/dist/m/c-HA6INT6J.js +1 -0
  87. package/dist/m/c-HPURYVZS.js +2 -0
  88. package/dist/m/c-HRDCD3WN.js +67 -0
  89. package/dist/m/c-HT33EQRN.js +1 -0
  90. package/dist/m/c-HVYXIS72.js +1 -0
  91. package/dist/m/c-IB52R237.js +1 -0
  92. package/dist/m/c-IJUK2GPW.js +1 -0
  93. package/dist/m/c-IKWNE4R4.js +1 -0
  94. package/dist/m/c-IU3IYEU6.js +1 -0
  95. package/dist/m/c-IZ2EBRAJ.js +1 -0
  96. package/dist/m/c-J7CA54IP.js +1 -0
  97. package/dist/m/c-JAX2667S.js +6 -0
  98. package/dist/m/c-KI7M4AY3.js +1 -0
  99. package/dist/m/c-KIPQJX4B.js +1 -0
  100. package/dist/m/c-KKWLDOPM.js +1 -0
  101. package/dist/m/c-KR4UW4KW.js +1 -0
  102. package/dist/m/c-KY3VJGUA.js +8 -0
  103. package/dist/m/c-L4WQSC27.js +1 -0
  104. package/dist/m/c-LFPHCXY3.js +1 -0
  105. package/dist/m/c-LR4CGEPT.js +91 -0
  106. package/dist/m/c-LRPUO2MX.js +1 -0
  107. package/dist/m/c-LTGMXXKO.js +1 -0
  108. package/dist/m/c-LXENEBV7.js +1 -0
  109. package/dist/m/c-LZJPNR2W.js +1 -0
  110. package/dist/m/c-MMUIUUZG.js +2 -0
  111. package/dist/m/c-MTQHWQC3.js +1 -0
  112. package/dist/m/c-N326R2JD.js +1 -0
  113. package/dist/m/c-N7JPUPGC.js +1 -0
  114. package/dist/m/c-NMJRXKPC.js +8 -0
  115. package/dist/m/c-NRPJEVJS.js +1 -0
  116. package/dist/m/c-NUHP2XDB.js +1 -0
  117. package/dist/m/c-NZMNXVF6.js +1 -0
  118. package/dist/m/c-OCSZ4QGN.js +1 -0
  119. package/dist/m/c-OIBUTDXI.js +1 -0
  120. package/dist/m/c-OIDRZKAF.js +1 -0
  121. package/dist/m/c-OYTFP5QN.js +1 -0
  122. package/dist/m/c-P7KNDG34.js +1 -0
  123. package/dist/m/c-PPOSCAQD.js +1 -0
  124. package/dist/m/c-PQ5LK6QE.js +993 -0
  125. package/dist/m/c-PZ4XEPUP.js +2 -0
  126. package/dist/m/c-QHIWXHRO.js +1 -0
  127. package/dist/m/c-QHWJ5ZIJ.js +1 -0
  128. package/dist/m/c-QIX5BJYN.js +1 -0
  129. package/dist/m/c-QNKREOL6.js +1 -0
  130. package/dist/m/c-QQHEX6HA.js +1 -0
  131. package/dist/m/c-R7RMANJI.js +9 -0
  132. package/dist/m/c-RI4NT75Y.js +1 -0
  133. package/dist/m/c-RM7J7BV2.js +1 -0
  134. package/dist/m/c-RUJKSUQW.js +1 -0
  135. package/dist/m/c-RVMWGXEJ.js +1 -0
  136. package/dist/m/c-S7H2DRCB.js +1 -0
  137. package/dist/m/c-S7LK4KUE.js +1 -0
  138. package/dist/m/c-SGCCC4FW.js +25 -0
  139. package/dist/m/c-SGIA4IEQ.js +188 -0
  140. package/dist/m/c-SWRJFCNN.js +1 -0
  141. package/dist/m/c-T4VO4OCB.js +1 -0
  142. package/dist/m/c-TCCA5BZN.js +2 -0
  143. package/dist/m/c-TQEMVJCS.js +1 -0
  144. package/dist/m/c-TQZ2JYHD.js +1 -0
  145. package/dist/m/c-TR6RMDQ7.js +3 -0
  146. package/dist/m/c-TRS6TM6O.js +1 -0
  147. package/dist/m/c-UGHH4MB3.js +1 -0
  148. package/dist/m/c-UKHTLWUW.js +1 -0
  149. package/dist/m/c-UL2YUY52.js +1 -0
  150. package/dist/m/c-UNN7LWCT.js +1 -0
  151. package/dist/m/c-UXBMRDZB.js +235 -0
  152. package/dist/m/c-V7PZZRG7.js +1 -0
  153. package/dist/m/c-VAK7SG37.js +1 -0
  154. package/dist/m/c-VDSS4K3Z.js +1 -0
  155. package/dist/m/c-VFX45IZQ.js +1 -0
  156. package/dist/m/c-VHNSBD2M.js +1 -0
  157. package/dist/m/c-VKEDWYDF.js +1 -0
  158. package/dist/m/c-VL52ADDR.js +1 -0
  159. package/dist/m/c-WN5AY3OZ.js +1 -0
  160. package/dist/m/c-WNYBLIOZ.js +1 -0
  161. package/dist/m/c-WRBKEJD4.js +1 -0
  162. package/dist/m/c-WWDBYXLK.js +1 -0
  163. package/dist/m/c-WYFDLITL.js +1 -0
  164. package/dist/m/c-XN6MBKI6.js +67 -0
  165. package/dist/m/c-XNNW2CWK.js +1 -0
  166. package/dist/m/c-XPELB6E5.js +1 -0
  167. package/dist/m/c-XQXZAO7N.js +1 -0
  168. package/dist/m/c-Y6USGTS5.js +5 -0
  169. package/dist/m/c-YDH7Q3NY.js +1 -0
  170. package/dist/m/c-YG2NJYS6.js +135 -0
  171. package/dist/m/c-Z36J63PP.js +1 -0
  172. package/dist/m/c-Z4VRC7GU.js +7 -0
  173. package/dist/m/c-Z6K52OLP.js +19 -0
  174. package/dist/m/c-ZDY2MDAA.js +21 -0
  175. package/dist/m/c-ZE46QDIH.js +1 -0
  176. package/dist/m/c-ZUCOKOHT.js +1 -0
  177. package/dist/m/core/admin-attrs-VGNLAUDK.js +1 -0
  178. package/dist/m/core/autosave-E4PEFPZ6.js +1 -0
  179. package/dist/m/core/conflict-notice-VQ6Y64PH.js +1 -0
  180. package/dist/m/core/draft-mode-WSQAT67S.js +1 -0
  181. package/dist/m/core/host-permission-XN3K2IW3.js +1 -0
  182. package/dist/m/core/is-edit-mode-JXHDVGUL.js +1 -0
  183. package/dist/m/core/persist-HKHA66IY.js +3 -0
  184. package/dist/m/core/recovery-TBBSICE2.js +1 -0
  185. package/dist/m/core/save-WUCHTQBE.js +1 -0
  186. package/dist/m/core/save-core-FJVHT5M3.js +1 -0
  187. package/dist/m/core/snapshot-F3SWDZMM.js +1 -0
  188. package/dist/m/core/unsaved-warning-STKBHE6G.js +1 -0
  189. package/dist/m/dom/all-APS5ZSKP.js +1 -0
  190. package/dist/m/dom/dom-helpers-L7OSR6S4.js +1 -0
  191. package/dist/m/events/index-23DPTUT4.js +1 -0
  192. package/dist/m/internals/index-WOVAP3RU.js +1 -0
  193. package/dist/m/lib/cache-bust-CGWT6ZJI.js +1 -0
  194. package/dist/m/lib/region-policy-SB2AWVG5.js +1 -0
  195. package/dist/m/loader-HXX6YNH5.js +1 -0
  196. package/dist/m/manifest-F22DEDAC.js +1 -0
  197. package/dist/m/manifest-edit-C3C7376B.js +1 -0
  198. package/dist/m/manifest.json +3491 -0
  199. package/dist/m/options/options-2LH76JQ3.js +1 -0
  200. package/dist/m/page/editor-XUTB2HB2.js +189 -0
  201. package/dist/m/plugins/ai-edit-ZQ4CGWIP.js +6 -0
  202. package/dist/m/plugins/bind-text-NX46N5UV.js +1 -0
  203. package/dist/m/plugins/cms-HP3LSTPN.js +2293 -0
  204. package/dist/m/plugins/demo-ZIBFAA3R.js +1 -0
  205. package/dist/m/plugins/derive-UAAA4V4S.js +1 -0
  206. package/dist/m/plugins/indicator-PV4YW2ID.js +1 -0
  207. package/dist/m/plugins/live-NUTTXSBS.js +1 -0
  208. package/dist/m/plugins/menu-HCKO3DSP.js +138 -0
  209. package/dist/m/plugins/message-LQ6EDH4V.js +1 -0
  210. package/dist/m/plugins/page-KSUH7G6J.js +2 -0
  211. package/dist/m/plugins/page-view-W73OW7WI.js +1 -0
  212. package/dist/m/plugins/people-AJJ32YCG.js +1 -0
  213. package/dist/m/plugins/quickcrop-QNY3PKLD.js +26 -0
  214. package/dist/m/plugins/quickcrop-QNY3PKLD.js.LEGAL.txt +7 -0
  215. package/dist/m/plugins/richclay-RC3L2F6X.js +517 -0
  216. package/dist/m/plugins/richclay-RC3L2F6X.js.LEGAL.txt +1 -0
  217. package/dist/m/plugins/sortable-YRMQX3ZU.js +1 -0
  218. package/dist/m/plugins/source-KHK5UUSK.js +1 -0
  219. package/dist/m/plugins/undo-OF2L3CXU.js +1 -0
  220. package/dist/m/plugins/unsent-HJFLQJ2O.js +1 -0
  221. package/dist/m/plugins/upgrade-ZNYODP5Y.js +1 -0
  222. package/dist/m/plugins/upload-XSGNILUY.js +1 -0
  223. package/dist/m/plugins/visitor-drafts-XK5GW55Q.js +21 -0
  224. package/dist/m/plugins/visitor-drafts-owner-KSSH75EV.js +1 -0
  225. package/dist/m/plugins/wire-ZWVWKF76.js +1 -0
  226. package/dist/m/reader-core-ILWLXVMP.js +68 -0
  227. package/dist/m/route/route-KOCZSEGN.js +1 -0
  228. package/dist/m/sync/live-sync-4AUVXVJU.js +1 -0
  229. package/dist/m/ui/index-EVHKMKBL.js +1 -0
  230. package/dist/m/utils/index-4TJCVLT7.js +1 -0
  231. package/dist/m/vendor/Sortable.vendor-A755ITLN.js +3 -0
  232. package/dist/m/vendor/Sortable.vendor-A755ITLN.js.LEGAL.txt +1 -0
  233. package/dist/m/vendor/sap-core.vendor-A7BMUYZT.js +6 -0
  234. package/dist/offline-manifest.json +3800 -0
  235. package/dist/page/themes/light-1.css +406 -0
  236. package/dist/server/core.cjs +23662 -22860
  237. package/dist/server/offline-runtime.cjs +4954 -0
  238. package/dist/server/offline-runtime.mjs +4923 -0
  239. package/dist/server/rooms.mjs +9 -0
  240. package/docs/guide.md +1078 -669
  241. package/entries/all.js +2 -0
  242. package/entries/clay-data.js +1 -1
  243. package/entries/clay-dom.js +2 -0
  244. package/entries/clay-events.js +2 -0
  245. package/entries/clay-internals.js +2 -0
  246. package/entries/clay-options.js +2 -0
  247. package/entries/clay-router.js +2 -0
  248. package/entries/clay-ui.js +2 -0
  249. package/entries/clay-utils.js +2 -0
  250. package/entries/clay.js +2 -0
  251. package/entries/sap.js +6 -6
  252. package/fonts/ibm-plex-mono-LICENSE +93 -0
  253. package/fonts/ibm-plex-mono-latin-300-normal.woff2 +0 -0
  254. package/fonts/ibm-plex-mono-latin-400-italic.woff2 +0 -0
  255. package/fonts/ibm-plex-mono-latin-400-normal.woff2 +0 -0
  256. package/fonts/ibm-plex-mono-latin-500-normal.woff2 +0 -0
  257. package/fonts/ibm-plex-mono-latin-600-normal.woff2 +0 -0
  258. package/fonts/ibm-plex-sans-LICENSE +93 -0
  259. package/fonts/ibm-plex-sans-latin-400-normal.woff2 +0 -0
  260. package/fonts/ibm-plex-sans-latin-500-normal.woff2 +0 -0
  261. package/fonts/ibm-plex-sans-latin-600-normal.woff2 +0 -0
  262. package/fonts/ibm-plex.css +71 -0
  263. package/fonts/inter-LICENSE +93 -0
  264. package/fonts/inter-cyrillic-ext-wght-normal.woff2 +0 -0
  265. package/fonts/inter-cyrillic-wght-normal.woff2 +0 -0
  266. package/fonts/inter-greek-ext-wght-normal.woff2 +0 -0
  267. package/fonts/inter-greek-wght-normal.woff2 +0 -0
  268. package/fonts/inter-latin-ext-wght-normal.woff2 +0 -0
  269. package/fonts/inter-latin-wght-normal.woff2 +0 -0
  270. package/fonts/inter-vietnamese-wght-normal.woff2 +0 -0
  271. package/fonts/inter.css +62 -0
  272. package/fonts/newsreader-LICENSE +93 -0
  273. package/fonts/newsreader-latin-ext-opsz-normal.woff2 +0 -0
  274. package/fonts/newsreader-latin-opsz-normal.woff2 +0 -0
  275. package/fonts/newsreader-vietnamese-opsz-normal.woff2 +0 -0
  276. package/fonts/newsreader.css +26 -0
  277. package/fonts/work-sans-LICENSE +93 -0
  278. package/fonts/work-sans-latin-wght-normal.woff2 +0 -0
  279. package/fonts/work-sans.css +8 -0
  280. package/package.json +20 -3
  281. package/packed-contract.json +1 -0
  282. package/src/attrs/add-from.js +27 -4
  283. package/src/attrs/save-freeze.js +7 -52
  284. package/src/core/admin-attrs.js +119 -12
  285. package/src/core/admin-contenteditable.js +12 -10
  286. package/src/core/admin-inputs.js +14 -15
  287. package/src/core/admin-onclick.js +2 -0
  288. package/src/core/autosave.js +74 -21
  289. package/src/core/conflict-download.js +22 -0
  290. package/src/core/conflict-notice-ui.js +1173 -0
  291. package/src/core/conflict-notice.js +140 -697
  292. package/src/core/edit-mode.js +147 -14
  293. package/src/core/etag.js +30 -12
  294. package/src/core/host-meta.js +72 -8
  295. package/src/core/host-permission.js +29 -0
  296. package/src/core/is-edit-mode.js +145 -12
  297. package/src/core/mode-key.js +125 -0
  298. package/src/core/mode-lifecycle.js +544 -0
  299. package/src/core/mode-receipt.js +30 -0
  300. package/src/core/mode-refusal.js +13 -0
  301. package/src/core/mode-resources.js +52 -0
  302. package/src/core/mode-support.js +82 -0
  303. package/src/core/mode-switch.js +259 -0
  304. package/src/core/mode-transition.js +112 -0
  305. package/src/core/page-data-write.js +305 -0
  306. package/src/core/page-data.js +26 -227
  307. package/src/core/page-format-wire.js +4 -0
  308. package/src/core/page-format.js +58 -0
  309. package/src/core/persist.js +37 -9
  310. package/src/core/preserve-authored.js +114 -0
  311. package/src/core/recovery.js +772 -0
  312. package/src/core/runtime-url.js +105 -0
  313. package/src/core/save-core.js +109 -12
  314. package/src/core/save-replace.js +72 -0
  315. package/src/core/save-size-notice.js +134 -0
  316. package/src/core/save-size.js +140 -0
  317. package/src/core/save.js +805 -118
  318. package/src/core/snapshot.js +121 -11
  319. package/src/core/source-map.js +157 -9
  320. package/src/core/unsaved-warning.js +14 -4
  321. package/src/core/upgrade-run.js +408 -0
  322. package/src/core/version.js +18 -0
  323. package/src/lib/assets.js +30 -0
  324. package/src/lib/autosave-debug-gate.js +50 -0
  325. package/src/lib/autosave-scheduler.js +141 -0
  326. package/src/lib/boot-imports.js +8 -0
  327. package/src/lib/derived.js +3 -1
  328. package/src/lib/dirty-gate.js +15 -0
  329. package/src/lib/doc-storage.js +33 -0
  330. package/src/lib/effect.js +9 -4
  331. package/src/lib/mutation.js +4 -2
  332. package/src/lib/offline-runtime.js +226 -0
  333. package/src/lib/preload.js +48 -0
  334. package/src/lib/root-attrs.js +1 -1
  335. package/src/lib/trash.js +18 -0
  336. package/src/lib/undo/capture-move.js +152 -0
  337. package/src/live/local-channel.js +61 -0
  338. package/src/live/local-lane.js +60 -9
  339. package/src/live/server-lane.js +6 -3
  340. package/src/loader-logic.js +76 -15
  341. package/src/loader.js +218 -30
  342. package/src/page/adopt-boot.js +76 -22
  343. package/src/page/adopt.js +25 -4
  344. package/src/page/awareness.js +230 -0
  345. package/src/page/blocks.js +79 -5
  346. package/src/page/blocksel.js +20 -4
  347. package/src/page/board-face.js +13 -0
  348. package/src/page/board-panel.js +5 -17
  349. package/src/page/board-style.js +2 -13
  350. package/src/page/board-view.js +1 -11
  351. package/src/page/board-views.js +17 -0
  352. package/src/page/board.js +2 -2
  353. package/src/page/boot-pack.js +26 -0
  354. package/src/page/boot.js +237 -0
  355. package/src/page/checklist.js +1 -1
  356. package/src/page/chrome.js +411 -61
  357. package/src/page/csv-import.js +17 -2
  358. package/src/page/document-title-dom.js +40 -0
  359. package/src/page/document-title-runtime.js +76 -0
  360. package/src/page/document-title.js +9 -0
  361. package/src/page/drag.js +48 -13
  362. package/src/page/drop.js +2 -1
  363. package/src/page/editor.js +330 -86
  364. package/src/page/feature-loader.js +72 -0
  365. package/src/page/features/board.js +12 -0
  366. package/src/page/features/code.js +13 -0
  367. package/src/page/features/media.js +290 -0
  368. package/src/page/features/registry.js +23 -0
  369. package/src/page/features/table.js +383 -0
  370. package/src/page/{tool-view.js → features/tool.js} +33 -2
  371. package/src/page/format-codec.js +215 -0
  372. package/src/page/format-gate.js +179 -0
  373. package/src/page/format-level.js +157 -0
  374. package/src/page/highlight-slot.js +23 -0
  375. package/src/page/highlight.js +30 -16
  376. package/src/page/history-intent.js +78 -0
  377. package/src/page/inline.js +18 -25
  378. package/src/page/items.js +52 -11
  379. package/src/page/link.js +1 -0
  380. package/src/page/markdown.js +86 -1
  381. package/src/page/media-views.js +3 -0
  382. package/src/page/media.js +33 -245
  383. package/src/page/outline-cache.js +11 -0
  384. package/src/page/placeholder.js +27 -7
  385. package/src/page/projection.js +196 -50
  386. package/src/page/reader-patch.js +306 -0
  387. package/src/page/recover.js +1 -1
  388. package/src/page/rich/page-tool.js +1 -4
  389. package/src/page/runtime-owner.js +27 -0
  390. package/src/page/save-projection.js +7 -4
  391. package/src/page/schema.js +14 -0
  392. package/src/page/table-rect-key.js +3 -0
  393. package/src/page/table-select.js +4 -3
  394. package/src/page/table-style.js +1 -1
  395. package/src/page/table-views.js +3 -0
  396. package/src/page/table.js +8 -293
  397. package/src/page/themes/light-1.css +139 -2
  398. package/src/page/themes/light-1.source.css +269 -0
  399. package/src/page/tool-capability.js +3 -0
  400. package/src/page/tool-views.js +3 -0
  401. package/src/page/view.js +390 -107
  402. package/src/page/ybind/awareness.js +172 -0
  403. package/src/page/ybind/binding.js +9 -1
  404. package/src/page/ybind/bridge.js +50 -47
  405. package/src/page/ybind/decode.js +52 -19
  406. package/src/page/ybind/doc.js +27 -2
  407. package/src/page/ybind/group.js +12 -3
  408. package/src/page/ybind/index.js +2 -0
  409. package/src/page/ybind/lineage.js +71 -0
  410. package/src/page/ybind/marks.js +25 -1
  411. package/src/page/ybind/migrate.js +48 -13
  412. package/src/page/ybind/moves.js +32 -21
  413. package/src/page/ybind/positions.js +50 -0
  414. package/src/page/ybind/provider.js +84 -22
  415. package/src/page/ybind/recovery-proof.js +191 -0
  416. package/src/page/ybind/recovery-replay.js +130 -0
  417. package/src/page/ybind/tokens.js +15 -6
  418. package/src/page/ybind/walk.js +10 -3
  419. package/src/page/ybind/writer.js +48 -4
  420. package/src/plugins/ai-edit.js +167 -32
  421. package/src/plugins/bind-text.js +218 -0
  422. package/src/plugins/cms.js +93 -0
  423. package/src/plugins/indicator.js +57 -5
  424. package/src/plugins/live.js +282 -34
  425. package/src/plugins/menu/claygoo.svg.js +1 -0
  426. package/src/plugins/menu/seo-head.js +323 -0
  427. package/src/plugins/menu/seo.js +849 -0
  428. package/src/plugins/menu.js +425 -0
  429. package/src/plugins/page-view.js +131 -0
  430. package/src/plugins/page.js +1022 -275
  431. package/src/plugins/people.js +158 -31
  432. package/src/plugins/richclay.js +119 -9
  433. package/src/plugins/sortable.js +370 -60
  434. package/src/plugins/source.js +189 -366
  435. package/src/plugins/undo.js +289 -19
  436. package/src/plugins/unsent.js +132 -0
  437. package/src/plugins/upgrade-run.js +1 -0
  438. package/src/plugins/upgrade.js +210 -0
  439. package/src/plugins/upload-task.js +571 -0
  440. package/src/plugins/upload-ui.js +265 -0
  441. package/src/plugins/upload.js +34 -153
  442. package/src/plugins/visitor-drafts/inert.js +32 -0
  443. package/src/plugins/visitor-drafts/owner-chip.js +3 -0
  444. package/src/plugins/visitor-drafts/prompt.js +2 -2
  445. package/src/plugins/visitor-drafts-owner.js +85 -0
  446. package/src/plugins/visitor-drafts.js +31 -42
  447. package/src/plugins/wire.js +82 -1
  448. package/src/reader-core.js +26 -0
  449. package/src/recovery/conflicts.js +287 -0
  450. package/src/recovery/identity.js +154 -0
  451. package/src/recovery/store.js +792 -0
  452. package/src/recovery/undo.js +257 -0
  453. package/src/server/checkpoint/index.js +68 -4
  454. package/src/server/offline-runtime/index.js +214 -0
  455. package/src/server/rooms/index.js +2 -1
  456. package/src/server/rooms/live-data-rooms.js +2 -2
  457. package/src/server/rooms/page-admission.js +33 -0
  458. package/src/server/rooms/page-lineage.js +56 -0
  459. package/src/server/rooms/page-rebase.js +11 -5
  460. package/src/server/rooms/page-state.js +2 -0
  461. package/src/server/rooms/page-write-admission.js +9 -3
  462. package/src/source/session.js +705 -0
  463. package/src/sync/conflict-revert.js +5 -4
  464. package/src/sync/conflicts-edit.js +119 -0
  465. package/src/sync/conflicts-facade.js +49 -0
  466. package/src/sync/conflicts.js +99 -1
  467. package/src/sync/editing-marker.js +37 -6
  468. package/src/sync/editing-sender.js +8 -1
  469. package/src/sync/live-sync-edit.js +63 -0
  470. package/src/sync/live-sync.js +364 -119
  471. package/src/sync/local-presence.js +187 -0
  472. package/src/sync/merge-declarations.js +10 -0
  473. package/src/sync/merge-engine.js +12 -0
  474. package/src/sync/presence-store.js +412 -0
  475. package/src/sync/presence-target.js +243 -0
  476. package/src/sync/presence.js +72 -41
  477. package/src/sync/saved-handoff.js +200 -0
  478. package/src/sync/saved-stream.js +535 -0
  479. package/src/sync/version-guard.js +92 -0
  480. package/src/sync/wire-profile.js +81 -0
  481. package/src/ui/bevel-controls.js +2 -8
  482. package/src/ui/page-scheme.js +7 -0
  483. package/src/ui/skins/cms.js +1 -1
  484. package/src/ui/theme-config.js +150 -0
  485. package/src/ui/theme.js +6 -138
  486. package/src/ui/toast-lazy.js +11 -0
  487. package/src/vendor/LICENSES-optional.md +253 -0
  488. package/src/vendor/highlight.vendor.js +3 -0
  489. package/src/vendor/hljs-bash.vendor.js +2 -0
  490. package/src/vendor/hljs-css.vendor.js +2 -0
  491. package/src/vendor/hljs-javascript.vendor.js +2 -0
  492. package/src/vendor/hljs-json.vendor.js +2 -0
  493. package/src/vendor/hljs-python.vendor.js +2 -0
  494. package/src/vendor/hljs-xml.vendor.js +2 -0
  495. package/src/vendor/hyper-html-api-data.vendor.js +1 -1
  496. package/src/vendor/hyper-html-api-upgrade.vendor.js +5 -0
  497. package/src/vendor/hyper-morph-identity.vendor.js +2 -0
  498. package/src/vendor/hyper-morph-json.vendor.js +3 -0
  499. package/src/vendor/hyper-morph.vendor.js +6 -6
  500. package/src/vendor/hyper-undo.vendor.js +1 -1
  501. package/src/vendor/hypercms.vendor.js +169 -84
  502. package/src/vendor/marked.vendor.js +68 -0
  503. package/src/vendor/overtype.vendor.js +994 -0
  504. package/src/vendor/richclay.vendor.js +17 -17
  505. package/src/vendor/sap-core.vendor.js +5 -5
  506. package/src/vendor/sap-ownership.vendor.js +11 -7
@@ -0,0 +1,29 @@
1
+ BSD 3-Clause License
2
+
3
+ Copyright (c) 2006, Ivan Sagalaev.
4
+ All rights reserved.
5
+
6
+ Redistribution and use in source and binary forms, with or without
7
+ modification, are permitted provided that the following conditions are met:
8
+
9
+ * Redistributions of source code must retain the above copyright notice, this
10
+ list of conditions and the following disclaimer.
11
+
12
+ * Redistributions in binary form must reproduce the above copyright notice,
13
+ this list of conditions and the following disclaimer in the documentation
14
+ and/or other materials provided with the distribution.
15
+
16
+ * Neither the name of the copyright holder nor the names of its
17
+ contributors may be used to endorse or promote products derived from
18
+ this software without specific prior written permission.
19
+
20
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
21
+ AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
22
+ IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
23
+ DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
24
+ FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
25
+ DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
26
+ SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
27
+ CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
28
+ OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
29
+ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
@@ -0,0 +1,22 @@
1
+ {
2
+ "schema": 1,
3
+ "aliases": {
4
+ "https://cdn.jsdelivr.net/npm/overtype@2.6.1/dist/overtype.min.js": {
5
+ "path": "compat/overtype-2.6.1.min.js",
6
+ "sha256": "d40f5ee8d04c563861bf38a0883af27c6884514d8224220cabc47dfc98557198",
7
+ "license": "compat/overtype-LICENSE",
8
+ "source": "https://cdn.jsdelivr.net/npm/overtype@2.6.1/dist/overtype.min.js"
9
+ },
10
+ "https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.9.0/highlight.min.js": {
11
+ "path": "compat/highlight-11.9.0.min.js",
12
+ "sha256": "837a6fa5b0c736b52bbde2b2b6190f305da3fc9ed41681db5321507057b5c846",
13
+ "license": "compat/highlight-LICENSE",
14
+ "source": "https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.9.0/highlight.min.js"
15
+ },
16
+ "https://fonts.googleapis.com/css2?family=IBM+Plex+Mono:ital,wght@0,300;0,400;0,500;0,600;1,400;1,500&family=IBM+Plex+Sans:wght@400;500;600&display=swap": {
17
+ "path": "fonts/ibm-plex.css",
18
+ "sha256": "16eb56766ef1c90af57dbc00898cfa7ef224abef4e2ad71fa6402e88c797ac52",
19
+ "note": "IBM Plex Mono 500 italic is not bundled; the browser uses the nearest italic, 400"
20
+ }
21
+ }
22
+ }
@@ -0,0 +1,116 @@
1
+ /**
2
+ * OverType v2.6.1
3
+ * A lightweight markdown editor library with perfect WYSIWYG alignment
4
+ * @license MIT
5
+ * @author David Miranda
6
+ * https://github.com/panphora/overtype
7
+ */
8
+ var OverType=(()=>{var Ie=Object.defineProperty;var Fn=Object.getOwnPropertyDescriptor;var Nn=Object.getOwnPropertyNames;var zn=Object.prototype.hasOwnProperty;var Vn=(n,e,t)=>e in n?Ie(n,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):n[e]=t;var xt=(n,e)=>{for(var t in e)Ie(n,t,{get:e[t],enumerable:!0})},jn=(n,e,t,i)=>{if(e&&typeof e=="object"||typeof e=="function")for(let o of Nn(e))!zn.call(n,o)&&o!==t&&Ie(n,o,{get:()=>e[o],enumerable:!(i=Fn(e,o))||i.enumerable});return n};var Un=n=>jn(Ie({},"__esModule",{value:!0}),n);var C=(n,e,t)=>(Vn(n,typeof e!="symbol"?e+"":e,t),t);var oo={};xt(oo,{OverType:()=>j,default:()=>io,defaultToolbarButtons:()=>ce,markdownActions:()=>se,toolbarButtons:()=>S});function ot(n){var c,p;let e=/^( {0,3})(#{1,6})(?:([\t ]+)(.*)|$)/.exec(n);if(!e||e[2].length>3)return null;let t=e[1],i=e[2],o=(c=e[3])!=null?c:"",r=(p=e[4])!=null?p:"",s=/^(#+)[\t ]*$/.exec(r),a=/([\t ]+)(#+)([\t ]*)$/.exec(r),l=s||a;return{type:"heading",level:i.length,indent:t,marker:i,separator:o,content:s?"":l?r.slice(0,a.index):r,closing:s?r:l?a[0]:""}}function de(n){let e=/^( {0,3})([*_-])([\t *_-]*)$/.exec(n);if(!e)return null;let t=e[2],i=e[3];return[...i].some(r=>r!==t&&r!==" "&&r!==" ")||1+[...i].filter(r=>r===t).length<3?null:{type:"thematic-break",marker:t,source:n}}function rt(n){let e=/^( {0,3})>([\t ]?)(.*)$/.exec(n);return!e||e[2]===""&&e[3].startsWith(">")?null:{type:"blockquote",indent:e[1],marker:">",separator:e[2],content:e[3]}}function he(n){let e=/^( *)([-*+])([\t ]+)(.*)$/.exec(n);if(e)return{type:"list-item",listType:"bullet",indent:e[1],marker:e[2],separator:e[3],content:e[4]};let t=/^( *)([-*+])$/.exec(n);if(t)return{type:"list-item",listType:"bullet",indent:t[1],marker:t[2],separator:"",content:""};let i=/^( *)(\d{1,9}\.)([\t ]+)(.*)$/.exec(n);if(i)return{type:"list-item",listType:"ordered",indent:i[1],marker:i[2],separator:i[3],content:i[4]};let o=/^( *)(\d{1,9}\.)$/.exec(n);return o?{type:"list-item",listType:"ordered",indent:o[1],marker:o[2],separator:"",content:""}:null}function q(n){let e=/^( {0,3})(`{3,})([^`]*)$/.exec(n);return e?{type:"fence-open",indent:e[1],marker:e[2],length:e[2].length,info:e[3].trim(),source:n}:null}function ie(n,e){let t=/^( {0,3})(`{3,})[\t ]*$/.exec(n);return!t||t[2].length<e.length?null:{type:"fence-close",indent:t[1],marker:t[2],length:t[2].length,source:n}}var $e=/[!"#$%&'()*+,\-./:;<=>?@[\\\]^_`{|}~]/,qn=/^&(?:amp|lt|gt|quot|#39);/,Wn={"&amp;":"&","&lt;":"<","&gt;":">","&quot;":'"',"&#39;":"'"};function Kn(n,e){return function(i){if(i>=n.length)return[null,0];if(e&&n.charCodeAt(i)===38){let o=qn.exec(n.slice(i,i+6));if(o)return[Wn[o[0]],o[0].length]}return[n[i],1]}}function kt(n,e){let t=0;for(;e>0&&n[--e]==="\\";)t++;return t%2===1}var Me=n=>n===" "||n===" ",Xn=n=>n!==null&&(n.charCodeAt(0)<32||n.charCodeAt(0)===127);function Yn(n,e,t,i){let[o,r]=t(e);if(o!=="(")return null;for(e+=r;Me(o=t(e)[0]);)e+=t(e)[1];let s=null;if([o,r]=t(e),o==="<"){let c=e,p="";for(e+=r;;){if([o,r]=t(e),o===null||o==="<"||o===`
9
+ `)return null;if(o==="\\"){let[u,d]=t(e+r);if(u!==null&&$e.test(u)){p+=u,e+=r+d;continue}}if(o===">"){e+=r;break}p+=o,e+=r}s={start:c,end:e,raw:n.slice(c,e),value:p}}else if(o!==")"){let c=e,p=0,u="";for(;[o,r]=t(e),!(o===null||o===`
10
+ `||Me(o));){if(Xn(o))return null;if(o==="\\"){let[d,f]=t(e+r);if(d!==null&&$e.test(d)){u+=d,e+=r+f;continue}u+=o,e+=r;continue}if(o==="("){if(p++,p>i)return null;u+=o,e+=r;continue}if(o===")"){if(p===0)break;p--,u+=o,e+=r;continue}u+=o,e+=r}if(p!==0)return null;s={start:c,end:e,raw:n.slice(c,e),value:u}}let a=e;for(;Me(o=t(e)[0]);)e+=t(e)[1];let l=null;if([o,r]=t(e),o==='"'||o==="'"||o==="("){if(s&&e===a)return null;let c=o==="("?")":o,p=e,u="";for(e+=r;;){if([o,r]=t(e),o===null||o===`
11
+ `)return null;if(o==="\\"){let[d,f]=t(e+r);if(d!==null&&$e.test(d)){u+=d,e+=r+f;continue}u+=o,e+=r;continue}if(o===c){e+=r;break}if(c===")"&&o==="(")return null;u+=o,e+=r}for(l={start:p,end:e,raw:n.slice(p,e),value:u,delimiter:c===")"?"(":c};Me(o=t(e)[0]);)e+=t(e)[1]}return[o,r]=t(e),o!==")"?null:{end:e+r,destination:s,title:l}}function Zn(n,e,t){for(;t<n.length&&n[t].end<=e;)t++;let i=n[t];return{range:i&&i.start<=e&&e<i.end?i:null,rangeIndex:t}}function He(n,{htmlEntities:e=!1,maxParenDepth:t=32,ignoreRanges:i=[]}={}){let o=Kn(n,e),r=[...i].sort((p,u)=>p.start-u.start),s=[],a=[],l=0,c=0;for(;c<n.length;){let p=Zn(r,c,l);if(l=p.rangeIndex,p.range){c=p.range.end;continue}let[u,d]=o(c);if(u==="\\"){let[f,h]=o(c+d);c+=f!==null&&$e.test(f)?d+h:d;continue}if(u===`
12
+ `){a.length=0,c+=d;continue}if(u==="["){let f=c>0&&n[c-1]==="!"&&!kt(n,c-1);a.push({index:c,image:f}),c+=d;continue}if(u==="]"){let f=a.pop();if(f){let h=Yn(n,c+d,o,t);if(h){s.push({start:f.index,end:h.end,image:f.image,text:{start:f.index+1,end:c,raw:n.slice(f.index+1,c)},destination:h.destination,title:h.title}),a.length=0,c=h.end;continue}}}c+=d}return s}function _e(n,e=[]){let t=[],i=[],o=0;for(;o<n.length;){if(n[o]!=="`"){o++;continue}let a=o;for(;n[o]==="`";)o++;t.push({start:a,end:o,length:o-a})}let r=new Array(t.length),s=new Map;for(let a=t.length-1;a>=0;a--){let l=t[a];r[a]=s.get(l.length),s.set(l.length,a)}for(let a=0;a<t.length;){let l=t[a],c=kt(n,l.start)||e.some(d=>l.start>=d.start&&l.start<d.end),p=r[a];if(c||p===void 0){a++;continue}let u=t[p];i.push({start:l.start,end:u.end,raw:n.slice(l.start,u.end),openTicks:n.slice(l.start,l.end),content:n.slice(l.end,u.start),closeTicks:n.slice(u.start,u.end)}),a=p+1}return i}function Qn(n,e){return{...n,start:n.start+e,end:n.end+e,text:{...n.text,start:n.text.start+e,end:n.text.end+e},destination:n.destination&&{...n.destination,start:n.destination.start+e,end:n.destination.end+e},title:n.title&&{...n.title,start:n.title.start+e,end:n.title.end+e}}}function Gn(n,e){if(!n.includes("["))return[];let t=He(n,e),i=new Set;for(;;){let o=t.map(c=>`${c.start}:${c.end}`).join(",");if(i.has(o))return t;i.add(o);let r=t.map(c=>({start:c.text.end,end:c.end})),s=_e(n,r),a=He(n,{...e,ignoreRanges:s});if(a.map(c=>`${c.start}:${c.end}`).join(",")===o)return a;t=a}}function Lt(n,e={}){let t=[],i=n.split(`
13
+ `),o=null,r=0;for(let s of i){if(o)ie(s,o)&&(o=null);else{let a=q(s);a?o=a:t.push(...Gn(s,e).map(l=>Qn(l,r)))}r+=s.length+1}return t}var Jn={"&amp;":"&","&lt;":"<","&gt;":">","&quot;":'"',"&#39;":"'"},ei=/^&(amp|lt|gt|quot|#39);/,ti=/^[!"#$%&'()*+,\-./:;<=>?@[\]\\^_`{|}~]$/,ni=/^[\u00a1-\u00a9\u00ab-\u00ac\u00ae-\u00b1\u00b4\u00b6-\u00b8\u00bb\u00bf\u00d7\u00f7\u02c2-\u02c5\u02d2-\u02df\u02e5-\u02eb\u02ed\u02ef-\u02ff\u0375\u037e\u0384-\u0385\u0387\u03f6\u0482\u055a-\u055f\u0589-\u058a\u058d-\u058f\u05be\u05c0\u05c3\u05c6\u05f3-\u05f4\u0606-\u060f\u061b\u061d-\u061f\u066a-\u066d\u06d4\u06de\u06e9\u06fd-\u06fe\u0700-\u070d\u07f6-\u07f9\u07fe-\u07ff\u0830-\u083e\u085e\u0888\u0964-\u0965\u0970\u09f2-\u09f3\u09fa-\u09fb\u09fd\u0a76\u0af0-\u0af1\u0b70\u0bf3-\u0bfa\u0c77\u0c7f\u0c84\u0d4f\u0d79\u0df4\u0e3f\u0e4f\u0e5a-\u0e5b\u0f01-\u0f17\u0f1a-\u0f1f\u0f34\u0f36\u0f38\u0f3a-\u0f3d\u0f85\u0fbe-\u0fc5\u0fc7-\u0fcc\u0fce-\u0fda\u104a-\u104f\u109e-\u109f\u10fb\u1360-\u1368\u1390-\u1399\u1400\u166d-\u166e\u169b-\u169c\u16eb-\u16ed\u1735-\u1736\u17d4-\u17d6\u17d8-\u17db\u1800-\u180a\u1940\u1944-\u1945\u19de-\u19ff\u1a1e-\u1a1f\u1aa0-\u1aa6\u1aa8-\u1aad\u1b4e-\u1b4f\u1b5a-\u1b6a\u1b74-\u1b7f\u1bfc-\u1bff\u1c3b-\u1c3f\u1c7e-\u1c7f\u1cc0-\u1cc7\u1cd3\u1fbd\u1fbf-\u1fc1\u1fcd-\u1fcf\u1fdd-\u1fdf\u1fed-\u1fef\u1ffd-\u1ffe\u2010-\u2027\u2030-\u205e\u207a-\u207e\u208a-\u208e\u20a0-\u20c0\u2100-\u2101\u2103-\u2106\u2108-\u2109\u2114\u2116-\u2118\u211e-\u2123\u2125\u2127\u2129\u212e\u213a-\u213b\u2140-\u2144\u214a-\u214d\u214f\u218a-\u218b\u2190-\u2429\u2440-\u244a\u249c-\u24e9\u2500-\u2775\u2794-\u2b73\u2b76-\u2b95\u2b97-\u2bff\u2ce5-\u2cea\u2cf9-\u2cfc\u2cfe-\u2cff\u2d70\u2e00-\u2e2e\u2e30-\u2e5d\u2e80-\u2e99\u2e9b-\u2ef3\u2f00-\u2fd5\u2ff0-\u2fff\u3001-\u3004\u3008-\u3020\u3030\u3036-\u3037\u303d-\u303f\u309b-\u309c\u30a0\u30fb\u3190-\u3191\u3196-\u319f\u31c0-\u31e5\u31ef\u3200-\u321e\u322a-\u3247\u3250\u3260-\u327f\u328a-\u32b0\u32c0-\u33ff\u4dc0-\u4dff\ua490-\ua4c6\ua4fe-\ua4ff\ua60d-\ua60f\ua673\ua67e\ua6f2-\ua6f7\ua700-\ua716\ua720-\ua721\ua789-\ua78a\ua828-\ua82b\ua836-\ua839\ua874-\ua877\ua8ce-\ua8cf\ua8f8-\ua8fa\ua8fc\ua92e-\ua92f\ua95f\ua9c1-\ua9cd\ua9de-\ua9df\uaa5c-\uaa5f\uaa77-\uaa79\uaade-\uaadf\uaaf0-\uaaf1\uab5b\uab6a-\uab6b\uabeb\ufb29\ufbb2-\ufbc2\ufd3e-\ufd4f\ufdcf\ufdfc-\ufdff\ufe10-\ufe19\ufe30-\ufe52\ufe54-\ufe66\ufe68-\ufe6b\uff01-\uff0f\uff1a-\uff20\uff3b-\uff40\uff5b-\uff65\uffe0-\uffe6\uffe8-\uffee\ufffc-\ufffd]$/,ii=/^\uE000\d+\uE001/;function oi(){try{return new RegExp("^[\\p{P}\\p{S}]$","u")}catch(n){return ni}}var ri=oi();function St(n){return n!==null&&(ti.test(n)||ri.test(n))}function Tt(n,e,t){if(e>=n.length)return[null,0];if(n[e]==="\uE000"){let o=ii.exec(n.slice(e));if(o)return["`",o[0].length]}if(t&&n[e]==="&"){let o=ei.exec(n.slice(e,e+6));if(o)return[Jn[o[0]],o[0].length]}let i=String.fromCodePoint(n.codePointAt(e));return[i,i.length]}function Et(n,e){let t=0;for(;e>0&&n[--e]==="\\";)t++;return t%2===1}function Ct(n,e){if(n[e]!=="<")return e;let t=n.indexOf(">",e+1);return t===-1?e:t+1}function si(n,e,t){let i=e;for(;i<n.length;){let o=Ct(n,i);if(o!==i){i=o;continue}return Tt(n,i,t)[0]}return`
14
+ `}function ai(n,e,t){let i=/\s/u.test(e),o=/\s/u.test(t),r=St(e),s=St(t),a=!o&&(!s||i||r),l=!i&&(!r||o||s);return n==="_"?{canOpen:a&&(!l||r),canClose:l&&(!a||s)}:{canOpen:a,canClose:l}}function li(n,e){let t=[],i=`
15
+ `,o=0;for(;o<n.length;){let r=Ct(n,o);if(r!==o){o=r;continue}let[s,a]=Tt(n,o,e);if((s==="*"||s==="_")&&!Et(n,o)){let l=o,c=0;for(;n[o]===s&&!Et(n,o);)c++,o++;let p=ai(s,i,si(n,o,e)),u={marker:s,start:l,original:c,remaining:c,usedAsOpener:0,usedAsCloser:0,...p,previous:t.length>0?t[t.length-1]:null,next:null};u.previous&&(u.previous.next=u),t.push(u),i=s;continue}i=s,o+=a}return t}function st(n,e){e.previous?e.previous.next=e.next:n.head=e.next,e.next&&(e.next.previous=e.previous),e.previous=null,e.next=null}function ci(n,e){let t=n.next;for(;t&&t!==e;){let i=t.next;t.previous=null,t.next=null,t=i}n.next=e,e.previous=n}function pi(n,{htmlEntities:e=!1}={}){var s;let i={head:(s=li(n,e)[0])!=null?s:null},o=[],r=i.head;for(;r;){if(!r.canClose){r=r.next;continue}let a=r.previous;for(;a;){let d=(r.canOpen||a.canClose)&&(a.original%3!==0||r.original%3!==0)&&(a.original+r.original)%3===0;if(a.marker===r.marker&&a.canOpen&&!d)break;a=a.previous}if(!a){let d=r.next;r.canOpen||st(i,r),r=d;continue}let l=a.remaining>=2&&r.remaining>=2?2:1,c=a.start+a.original-a.usedAsOpener-l,p=r.start+r.usedAsCloser;o.push({type:l===2?"strong":"em",openStart:c,openEnd:c+l,closeStart:p,closeEnd:p+l}),a.remaining-=l,r.remaining-=l,a.usedAsOpener+=l,r.usedAsCloser+=l,ci(a,r);let u=r.next;a.remaining===0&&st(i,a),r.remaining===0&&(st(i,r),r=u)}return o.sort((a,l)=>a.openStart-l.openStart||l.closeEnd-a.closeEnd)}function Oe(n,e={}){let{includeEm:t=!0,includeStrong:i=!0}=e,o=pi(n,e).filter(c=>c.type==="em"?t:i);if(o.length===0)return n;let r=new Map,s=c=>(r.has(c)||r.set(c,{openEnd:[],closeEnd:[],openStart:[],closeStart:[]}),r.get(c));for(let c of o){let p=c.type;s(c.openStart).openStart.push(`<${p}><span class="syntax-marker">`),s(c.openEnd).openEnd.push("</span>"),s(c.closeStart).closeStart.push('<span class="syntax-marker">'),s(c.closeEnd).closeEnd.push(`</span></${p}>`)}let a="",l=0;for(let c of[...r.keys()].sort((p,u)=>p-u)){a+=n.slice(l,c);let p=r.get(c);a+=p.openEnd.join(""),a+=p.closeEnd.join(""),a+=p.openStart.join(""),a+=p.closeStart.join(""),l=c}return a+n.slice(l)}function oe(n){return n.replace(/&nbsp;/g," ").replace(/&quot;/g,'"').replace(/&#39;/g,"'").replace(/&lt;/g,"<").replace(/&gt;/g,">").replace(/&amp;/g,"&")}var T=class{static resetLinkIndex(){this.linkIndex=0}static setCodeHighlighter(e){this.codeHighlighter=e}static setCustomSyntax(e){this.customSyntax=e}static applyCustomSyntax(e){return this.customSyntax?this.customSyntax(e):e}static escapeHtml(e){let t={"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#39;"};return e.replace(/[&<>"']/g,i=>t[i])}static preserveIndentation(e,t){let o=t.match(/^(\s*)/)[1].replace(/ /g,"&nbsp;");return e.replace(/^\s*/,o)}static parseHeader(e){let t=ot(oe(e));if(!t)return e;let i=t.indent.replace(/ /g,"&nbsp;"),o=this.escapeHtml(t.marker+t.separator),r=this.parseInlineElements(this.escapeHtml(t.content)),s=t.closing?`<span class="syntax-marker">${this.escapeHtml(t.closing)}</span>`:"";return`<h${t.level}>${i}<span class="syntax-marker">${o}</span>${r}${s}</h${t.level}>`}static parseHorizontalRule(e){let t=oe(e);return de(t)?`<div><span class="hr-marker">${this.preserveIndentation(this.escapeHtml(t),t)}</span></div>`:null}static parseBlockquote(e){let t=rt(oe(e));if(!t)return e;let i=t.indent.replace(/ /g,"&nbsp;"),o=this.escapeHtml(t.marker),r=this.escapeHtml(t.separator),s=this.parseInlineElements(this.escapeHtml(t.content));return`${i}<span class="blockquote"><span class="syntax-marker">${o}</span>${r}${s}</span>`}static parseBulletList(e){let t=oe(e);if(de(t))return e;let i=he(t);if(!i||i.listType!=="bullet")return e;let o=i.indent.replace(/ /g,"&nbsp;"),r=this.escapeHtml(i.marker+i.separator),s=this.parseInlineElements(this.escapeHtml(i.content));return`${o}<li class="bullet-list"><span class="syntax-marker">${r}</span>${s}</li>`}static parseTaskList(e,t=!1){return e.replace(/^((?:&nbsp;)*)-(\s+)\[([ xX])\](\s*)(.*)$/,(i,o,r,s,a,l)=>{if(a===""&&l!=="")return i;if(l=this.parseInlineElements(l),t){let c=s.toLowerCase()==="x";return`<li class="task-list">${o}<input type="checkbox" ${c?"checked":""}> ${l}</li>`}else return`<li class="task-list">${o}<span class="syntax-marker">-${r}[${s}]${a}</span>${l}</li>`})}static parseNumberedList(e){let t=he(oe(e));if(!t||t.listType!=="ordered")return e;let i=t.indent.replace(/ /g,"&nbsp;"),o=this.escapeHtml(t.marker+t.separator),r=this.parseInlineElements(this.escapeHtml(t.content));return`${i}<li class="ordered-list"><span class="syntax-marker">${o}</span>${r}</li>`}static parseCodeBlock(e){let t=q(oe(e));return t?this.renderFence(t):null}static renderFence(e,t=!1){let i=this.preserveIndentation(this.escapeHtml(e.source),e.source);return`<div${t?' class="raw-line"':""}><span class="code-fence">${i}</span></div>`}static renderCodeContent(e,t,i,o=0,r=-1){let s=e.map(h=>{let m=0;for(;m<o&&h[m]===" ";)m++;return{source:h,prefix:h.slice(0,m),content:h.slice(m)}}),a=s.map(h=>h.content).join(`
16
+ `),l=h=>h?`<span class="syntax-marker">${this.escapeHtml(h)}</span>`:"",c=s.map((h,m)=>m===r?`<span class="raw-line">${this.escapeHtml(h.source)||"&nbsp;"}</span>`:h.prefix===""&&h.content===""?'<span class="syntax-marker">&nbsp;</span>':l(h.prefix)+this.escapeHtml(h.content)).join(`
17
+ `),p=t.split(/[\t ]/,1)[0],u=p?` class="language-${this.escapeHtml(p)}"`:"",d=i||this.codeHighlighter,f=c;if(d)try{let h=d(a,p);if(h&&typeof h.then=="function")console.warn("Async highlighters are not supported in parse() because it returns an HTML string. Use synchronous highlighters only.");else if(h&&typeof h=="string"&&h.trim()){let m=h.split(`
18
+ `);m.length===s.length+1&&m[m.length-1]===""&&m.pop(),m.length===s.length?f=m.map((g,y)=>y===r?`<span class="raw-line">${this.escapeHtml(s[y].source)||"&nbsp;"}</span>`:l(s[y].prefix)+g).join(`
19
+ `):console.warn("Code highlighter output line count does not match the source. Using unhighlighted code to preserve alignment.")}}catch(h){console.warn("Code highlighting failed:",h)}return`<pre class="code-block"><code${u}>${f}</code></pre>`}static parseBold(e){return Oe(e,{htmlEntities:!0,includeEm:!1})}static parseItalic(e){return Oe(e,{htmlEntities:!0,includeStrong:!1})}static parseEmphasis(e){return Oe(e,{htmlEntities:!0})}static parseStrikethrough(e){return e=e.replace(new RegExp("(?<!~)~~(?!~)(.+?)(?<!~)~~(?!~)","g"),'<del><span class="syntax-marker">~~</span>$1<span class="syntax-marker">~~</span></del>'),e=e.replace(new RegExp("(?<!~)~(?!~)(.+?)(?<!~)~(?!~)","g"),'<del><span class="syntax-marker">~</span>$1<span class="syntax-marker">~</span></del>'),e}static parseInlineCode(e){let t=_e(e);for(let i of t.reverse()){let o=`<code><span class="syntax-marker">${i.openTicks}</span>${i.content}<span class="syntax-marker">${i.closeTicks}</span></code>`;e=e.slice(0,i.start)+o+e.slice(i.end)}return e}static sanitizeUrl(e){let t=e.trim(),i=t.toLowerCase(),r=["http://","https://","mailto:","ftp://","ftps://"].some(a=>i.startsWith(a)),s=t.startsWith("/")||t.startsWith("#")||t.startsWith("?")||t.startsWith(".")||!t.includes(":")&&!t.includes("//");return r||s?e:"#"}static findLinks(e,t={}){let{allowEmptyText:i=!1,...o}=t;return He(e,o).filter(r=>(i||r.text.raw.length>0)&&r.destination!==null&&r.destination.value.length>0)}static findRenderableLinks(e,t={}){let{allowEmptyText:i=!1,...o}=t;return Lt(e,o).filter(r=>(i||r.text.raw.length>0)&&r.destination!==null&&r.destination.value.length>0)}static parseLinks(e){let t=this.findLinks(e,{htmlEntities:!0});t.forEach(i=>{i.anchorName=`--link-${this.linkIndex++}`});for(let i of t.reverse()){let o=this.escapeHtml(this.sanitizeUrl(i.destination.value)),r=i.title===null?"":` title="${this.escapeHtml(i.title.value)}"`,s=e.slice(i.text.start,i.text.end),a=e.slice(i.text.end,i.end),l=`<a href="${o}"${r} style="anchor-name: ${i.anchorName}"><span class="syntax-marker">[</span>${s}<span class="syntax-marker url-part">${a}</span></a>`;e=e.slice(0,i.start)+l+e.slice(i.end)}return e}static identifyAndProtectSanctuaries(e){let t=new Map,i=0,o=e,s=(e.includes("[")?this.findRenderableLinks(e,{htmlEntities:!0}):[]).map(p=>({start:p.text.end,end:p.end})),a=_e(e,s);a.sort((p,u)=>u.start-p.start),a.forEach(p=>{let u=`\uE000${i++}\uE001`;t.set(u,{type:"code",original:p.raw,openTicks:p.openTicks,content:p.content,closeTicks:p.closeTicks}),o=o.substring(0,p.start)+u+o.substring(p.end)});let l=[...t.keys()];return(o.includes("[")?this.findLinks(o,{htmlEntities:!0}):[]).filter(p=>{let u=o.slice(p.text.end,p.end);return l.every(d=>!u.includes(d))}).sort((p,u)=>u.start-p.start).forEach(p=>{var d,f;let u=`\uE000${i++}\uE001`;t.set(u,{type:"link",original:o.slice(p.start,p.end),linkText:o.slice(p.text.start,p.text.end),tail:o.slice(p.text.end,p.end),url:p.destination.value,title:(f=(d=p.title)==null?void 0:d.value)!=null?f:null}),o=o.slice(0,p.start)+u+o.slice(p.end)}),{protectedText:o,sanctuaries:t}}static restoreAndTransformSanctuaries(e,t){return Array.from(t.keys()).sort((o,r)=>{let s=e.indexOf(o),a=e.indexOf(r);return s-a}).forEach(o=>{let r=t.get(o),s;if(r.type==="code")s=`<code><span class="syntax-marker">${r.openTicks}</span>${r.content}<span class="syntax-marker">${r.closeTicks}</span></code>`;else if(r.type==="link"){let a=r.linkText;a=this.parseStrikethrough(a),a=this.parseEmphasis(a),t.forEach((u,d)=>{if(a.includes(d)&&u.type==="code"){let f=`<code><span class="syntax-marker">${u.openTicks}</span>${u.content}<span class="syntax-marker">${u.closeTicks}</span></code>`;a=a.replace(d,()=>f)}});let l=`--link-${this.linkIndex++}`,c=this.escapeHtml(this.sanitizeUrl(r.url)),p=r.title===null?"":` title="${this.escapeHtml(r.title)}"`;s=`<a href="${c}"${p} style="anchor-name: ${l}"><span class="syntax-marker">[</span>${a}<span class="syntax-marker url-part">${r.tail}</span></a>`}e=e.replace(o,()=>s)}),e}static parseInlineElements(e){let{protectedText:t,sanctuaries:i}=this.identifyAndProtectSanctuaries(e),o=t;return o=this.parseStrikethrough(o),o=this.parseEmphasis(o),o=this.restoreAndTransformSanctuaries(o,i),o}static parseLine(e,t=!1){if(e==="")return"<div>&nbsp;</div>";if(de(e))return`<div><span class="hr-marker">${this.preserveIndentation(this.escapeHtml(e),e)}</span></div>`;let o=q(e);if(o)return this.renderFence(o);let r=ot(e);if(r){let d=r.indent.replace(/ /g,"&nbsp;"),f=this.escapeHtml(r.marker+r.separator),h=this.parseInlineElements(this.escapeHtml(r.content)),m=r.closing?`<span class="syntax-marker">${this.escapeHtml(r.closing)}</span>`:"";return`<div><h${r.level}>${d}<span class="syntax-marker">${f}</span>${h}${m}</h${r.level}></div>`}let s=rt(e);if(s){let d=s.indent.replace(/ /g,"&nbsp;"),f=this.escapeHtml(s.marker),h=this.escapeHtml(s.separator),m=this.parseInlineElements(this.escapeHtml(s.content));return`<div>${d}<span class="blockquote"><span class="syntax-marker">${f}</span>${h}${m}</span></div>`}let a=this.preserveIndentation(this.escapeHtml(e),e),l=this.parseTaskList(a,t);if(l!==a)return`<div>${l}</div>`;let c=he(e);if(c){let d=c.indent.replace(/ /g,"&nbsp;"),f=this.escapeHtml(c.marker+c.separator),h=this.parseInlineElements(this.escapeHtml(c.content)),m=c.listType==="bullet"?"bullet-list":"ordered-list";return`<div>${d}<li class="${m}"><span class="syntax-marker">${f}</span>${h}</li></div>`}let p=/^[\t ]*/.exec(e)[0];return a=p.replace(/ /g,"&nbsp;")+this.parseInlineElements(this.escapeHtml(e.slice(p.length))),`<div>${a}</div>`}static parse(e,t=-1,i=!1,o,r=!1){this.resetLinkIndex();let s=e.split(`
20
+ `),a=[],l=null,c=[],p=-1;for(let d=0;d<s.length;d++){let f=s[d],h=i&&d===t;if(l){let g=ie(f,l);if(g){a.push(this.renderCodeContent(c,l.info,o,l.indent.length,p));let y=this.renderFence(g,h);a.push(h?y:this.applyCustomSyntax(y)),l=null,c=[],p=-1}else h&&(p=c.length),c.push(f);continue}let m=q(f);if(m){l=m;let g=this.renderFence(m,h);a.push(h?g:this.applyCustomSyntax(g));continue}if(h){let g=this.escapeHtml(f)||"&nbsp;";a.push(`<div class="raw-line">${g}</div>`);continue}a.push(this.applyCustomSyntax(this.parseLine(f,r)))}l&&c.length>0&&a.push(this.renderCodeContent(c,l.info,o,l.indent.length,p));let u=a.join("");return this.postProcessHTML(u,o,!1)}static postProcessHTML(e,t,i=!0){return this.postProcessHTMLManual(e,t,i)}static postProcessHTMLManual(e,t,i=!0){let o=e;o=o.replace(/((?:<div(?:\s[^>]*)?>(?:&nbsp;)*<li class="bullet-list">.*?<\/li><\/div>\s*)+)/gs,s=>{let a=s.match(/<div(?:\s[^>]*)?>(?:&nbsp;)*<li class="bullet-list">.*?<\/li><\/div>/gs)||[];return a.length>0?"<ul>"+a.map(c=>{let p=c.match(/<div(?:\s[^>]*)?>((?:&nbsp;)*)<li/),u=c.match(/<li class="bullet-list">.*?<\/li>/);if(p&&u){let d=p[1];return u[0].replace(/<li class="bullet-list">/,`<li class="bullet-list">${d}`)}return u?u[0]:""}).filter(Boolean).join("")+"</ul>":s}),o=o.replace(/((?:<div(?:\s[^>]*)?>(?:&nbsp;)*<li class="ordered-list">.*?<\/li><\/div>\s*)+)/gs,s=>{let a=s.match(/<div(?:\s[^>]*)?>(?:&nbsp;)*<li class="ordered-list">.*?<\/li><\/div>/gs)||[];if(a.length>0){let l=a.map(d=>{let f=d.match(/<div(?:\s[^>]*)?>((?:&nbsp;)*)<li/),h=d.match(/<li class="ordered-list">.*?<\/li>/);if(f&&h){let m=f[1];return h[0].replace(/<li class="ordered-list">/,`<li class="ordered-list">${m}`)}return h?h[0]:""}).filter(Boolean),c=a[0].match(/<span class="syntax-marker">(\d+)\./),p=c?Number.parseInt(c[1],10):1;return`<ol${p===1?"":` start="${p}"`}>`+l.join("")+"</ol>"}return s});let r=/<div><span class="code-fence">(```[^<]*)<\/span><\/div>(.*?)<div><span class="code-fence">(```)<\/span><\/div>/gs;return i&&(o=o.replace(r,(s,a,l,c)=>{if(l.includes('<pre class="code-block">'))return s;let u=(l.match(/<div>(.*?)<\/div>/gs)||[]).map(b=>b.replace(/<div>(.*?)<\/div>/s,"$1")),d=u.map(b=>b==="&nbsp;"?"":b.replace(/&nbsp;/g," ")).join(`
21
+ `),f=u.join(`
22
+ `),h=a.slice(3).trim(),m=h?` class="language-${h}"`:"",g=f,y=t||this.codeHighlighter;if(y)try{let b=d.replace(/&quot;/g,'"').replace(/&#39;/g,"'").replace(/&lt;/g,"<").replace(/&gt;/g,">").replace(/&amp;/g,"&"),x=y(b,h);x&&typeof x.then=="function"?console.warn("Async highlighters are not supported in Node.js (non-DOM) context. Use synchronous highlighters for server-side rendering."):x&&typeof x=="string"&&x.trim()&&(g=x)}catch(b){console.warn("Code highlighting failed:",b)}let w=`<div><span class="code-fence">${a}</span></div>`;return w+=`<pre class="code-block"><code${m}>${g}</code></pre>`,w+=`<div><span class="code-fence">${c}</span></div>`,w})),o}static getListContext(e,t){let i=e.split(`
23
+ `),o=0,r=0,s=0;for(let d=0;d<i.length;d++){let f=i[d].length;if(o+f>=t){r=d,s=o;break}o+=f+1}let a=i[r],l=s+a.length,c={inList:!1,listType:null,indent:"",marker:null,content:a,lineStart:s,lineEnd:l,markerEndPos:s};if(de(a))return c;let p=he(a);if(!p)return c;let u=p.listType==="bullet"&&p.marker==="-"?/^\[([ xX])\]([\t ]*)(.*)$/.exec(p.content):null;return u&&(u[2]!==""||u[3]==="")?{inList:!0,listType:"checkbox",indent:p.indent,marker:"-",checked:u[1].toLowerCase()==="x",content:u[3],lineStart:s,lineEnd:l,markerEndPos:s+p.indent.length+p.marker.length+p.separator.length+3+u[2].length}:p.listType==="bullet"?{inList:!0,listType:"bullet",indent:p.indent,marker:p.marker,content:p.content,lineStart:s,lineEnd:l,markerEndPos:s+p.indent.length+p.marker.length+p.separator.length}:{inList:!0,listType:"numbered",indent:p.indent,marker:Number.parseInt(p.marker,10),content:p.content,lineStart:s,lineEnd:l,markerEndPos:s+p.indent.length+p.marker.length+p.separator.length}}static createNewListItem(e){switch(e.listType){case"bullet":return`${e.indent}${e.marker} `;case"numbered":return`${e.indent}${e.marker+1}. `;case"checkbox":return`${e.indent}- [ ] `;default:return""}}static renumberLists(e){let t=e.split(`
24
+ `),i=new Map,o=!1;return t.map(s=>{let a=s.match(this.LIST_PATTERNS.numbered);if(a){let l=a[1],c=l.length,p=a[3];o||i.clear();let u=(i.get(c)||0)+1;i.set(c,u);for(let[d]of i)d>c&&i.delete(d);return o=!0,`${l}${u}. ${p}`}else return(s.trim()===""||!s.match(/^\s/))&&(o=!1,i.clear()),s}).join(`
25
+ `)}};C(T,"linkIndex",0),C(T,"codeHighlighter",null),C(T,"customSyntax",null),C(T,"LIST_PATTERNS",{bullet:/^( *)([-*+])[\t ]+(.*)$/,numbered:/^( *)(\d{1,9})\.[\t ]+(.*)$/,checkbox:/^( *)-[\t ]+\[([ xX])\][\t ]+(.*)$/});var fe=class{constructor(e){this.editor=e}handleKeydown(e){if(!(navigator.platform.toLowerCase().includes("mac")?e.metaKey:e.ctrlKey))return!1;if(e.key==="]")return e.preventDefault(),this.editor.indentSelection(),!0;if(e.key==="[")return e.preventDefault(),this.editor.outdentSelection(),!0;let o=null;switch(e.key.toLowerCase()){case"b":e.shiftKey||(o="toggleBold");break;case"i":e.shiftKey||(o="toggleItalic");break;case"k":e.shiftKey||(o="insertLink");break;case"7":e.shiftKey&&(o="toggleNumberedList");break;case"8":e.shiftKey&&(o="toggleBulletList");break}return o?(e.preventDefault(),this.editor.performAction(o,e),!0):!1}destroy(){}};var D={name:"solar",colors:{bgPrimary:"#faf0ca",bgSecondary:"#ffffff",text:"#0d3b66",textPrimary:"#0d3b66",textSecondary:"#5a7a9b",h1:"#f95738",h2:"#ee964b",h3:"#3d8a51",strong:"#ee964b",em:"#f95738",del:"#ee964b",link:"#0d3b66",code:"#0d3b66",codeBg:"rgba(244, 211, 94, 0.4)",blockquote:"#5a7a9b",hr:"#5a7a9b",syntaxMarker:"rgba(13, 59, 102, 0.52)",syntax:"#999999",cursor:"#f95738",selection:"rgba(244, 211, 94, 0.4)",listMarker:"#ee964b",rawLine:"#5a7a9b",border:"#e0e0e0",hoverBg:"#f0f0f0",primary:"#0d3b66",toolbarBg:"#ffffff",toolbarIcon:"#0d3b66",toolbarHover:"#f5f5f5",toolbarActive:"#faf0ca",placeholder:"#999999"},previewColors:{text:"#0d3b66",h1:"inherit",h2:"inherit",h3:"inherit",strong:"inherit",em:"inherit",link:"#0d3b66",code:"#0d3b66",codeBg:"rgba(244, 211, 94, 0.4)",blockquote:"#5a7a9b",hr:"#5a7a9b",bg:"transparent"}},At={name:"cave",colors:{bgPrimary:"#141E26",bgSecondary:"#1D2D3E",text:"#c5dde8",textPrimary:"#c5dde8",textSecondary:"#9fcfec",h1:"#d4a5ff",h2:"#f6ae2d",h3:"#9fcfec",strong:"#f6ae2d",em:"#9fcfec",del:"#f6ae2d",link:"#9fcfec",code:"#c5dde8",codeBg:"#1a232b",blockquote:"#9fcfec",hr:"#c5dde8",syntaxMarker:"rgba(159, 207, 236, 0.73)",syntax:"#7a8c98",cursor:"#f26419",selection:"rgba(51, 101, 138, 0.4)",listMarker:"#f6ae2d",rawLine:"#9fcfec",border:"#2a3f52",hoverBg:"#243546",primary:"#9fcfec",toolbarBg:"#1D2D3E",toolbarIcon:"#c5dde8",toolbarHover:"#243546",toolbarActive:"#2a3f52",placeholder:"#6a7a88"},previewColors:{text:"#c5dde8",h1:"inherit",h2:"inherit",h3:"inherit",strong:"inherit",em:"inherit",link:"#9fcfec",code:"#c5dde8",codeBg:"#1a232b",blockquote:"#9fcfec",hr:"#c5dde8",bg:"transparent"}},It={solar:D,cave:At,auto:D,light:D,dark:At};function W(n){return typeof n=="string"?{...It[n]||It.solar,name:n}:n}function at(n){if(n!=="auto")return n;let e=window.matchMedia&&window.matchMedia("(prefers-color-scheme: dark)");return e!=null&&e.matches?"cave":"solar"}function Q(n,e){let t=[];for(let[i,o]of Object.entries(n)){let r=i.replace(/([A-Z])/g,"-$1").toLowerCase();t.push(`--${r}: ${o};`)}if(e)for(let[i,o]of Object.entries(e)){let r=i.replace(/([A-Z])/g,"-$1").toLowerCase();t.push(`--preview-${r}-default: ${o};`)}return t.join(`
26
+ `)}function Mt(n,e={},t={}){return{...n,colors:{...n.colors,...e},previewColors:{...n.previewColors,...t}}}var F={fontSize:"14px",lineHeight:1.6,fontFamily:'"SF Mono", SFMono-Regular, Menlo, Monaco, "Cascadia Code", Consolas, "Roboto Mono", "Noto Sans Mono", "Droid Sans Mono", "Ubuntu Mono", "DejaVu Sans Mono", "Liberation Mono", "Courier New", Courier, monospace',padding:"20px"};function $t(n={}){let{fontSize:e=F.fontSize,lineHeight:t=F.lineHeight,fontFamily:i=F.fontFamily,padding:o=F.padding,theme:r=null,mobile:s={}}=n,a=Object.keys(s).length>0?`
27
+ @media (max-width: 640px) {
28
+ .overtype-wrapper .overtype-input,
29
+ .overtype-wrapper .overtype-preview {
30
+ ${Object.entries(s).map(([c,p])=>`${c.replace(/([A-Z])/g,"-$1").toLowerCase()}: ${p} !important;`).join(`
31
+ `)}
32
+ }
33
+ }
34
+ `:"",l=r&&r.colors?Q(r.colors,r.previewColors):"";return`.overtype-container *{margin: 0 !important;padding: 0 !important;border: 0 !important;float: none !important;clear: none !important;text-decoration: none !important;text-transform: none !important;letter-spacing: normal !important;box-shadow: none !important;text-shadow: none !important;box-sizing: border-box !important}.overtype-container{display: flex !important;flex-direction: column !important;width: 100% !important;height: 100% !important;position: relative !important;overflow: visible !important;font-family: -apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,sans-serif !important;text-align: left !important;${l?`
35
+ /* Theme Variables */
36
+ ${l}`:""}}.overtype-container .overtype-wrapper *{text-align: left !important}.overtype-container.overtype-auto-resize{height: auto !important}.overtype-container.overtype-auto-resize .overtype-wrapper{flex: 0 0 auto !important;height: auto !important;min-height: 60px !important;overflow: visible !important}.overtype-wrapper{position: relative !important;width: 100% !important;flex: 1 1 0 !important;min-height: 60px !important;overflow: hidden !important;background: var(--bg-secondary,#ffffff) !important;z-index: 1}.overtype-wrapper .overtype-input,.overtype-wrapper .overtype-preview{position: absolute !important;top: 0 !important;left: 0 !important;width: 100% !important;height: 100% !important;font-family: var(--instance-font-family,${i}) !important;
37
+ font-variant-ligatures: none !important; /* keep metrics stable for code */
38
+ font-size: var(--instance-font-size, ${e}) !important;
39
+ line-height: var(--instance-line-height, ${t}) !important;
40
+ font-weight: normal !important;
41
+ font-style: normal !important;
42
+ font-variant: normal !important;
43
+ font-stretch: normal !important;
44
+ font-kerning: none !important;
45
+ font-feature-settings: normal !important;
46
+
47
+ /* Box model - must match exactly */
48
+ padding: var(--instance-padding, ${o}) !important;margin: 0 !important;border: none !important;outline: none !important;box-sizing: border-box !important;white-space: pre-wrap !important;word-wrap: break-word !important;word-break: normal !important;overflow-wrap: break-word !important;tab-size: 2 !important;-moz-tab-size: 2 !important;text-align: left !important;text-indent: 0 !important;letter-spacing: normal !important;word-spacing: normal !important;text-transform: none !important;text-rendering: auto !important;-webkit-font-smoothing: auto !important;-webkit-text-size-adjust: 100% !important;direction: ltr !important;writing-mode: horizontal-tb !important;unicode-bidi: normal !important;text-orientation: mixed !important;text-shadow: none !important;filter: none !important;transform: none !important;zoom: 1 !important;vertical-align: baseline !important;min-width: 0 !important;min-height: 0 !important;max-width: none !important;max-height: none !important;overflow-y: auto !important;overflow-x: auto !important;scrollbar-width: auto !important;scrollbar-gutter: auto !important;animation: none !important;transition: none !important}.overtype-wrapper .overtype-input{z-index: 1 !important;color: transparent !important;caret-color: var(--cursor,#f95738) !important;background-color: transparent !important;resize: none !important;appearance: none !important;-webkit-appearance: none !important;-moz-appearance: none !important;touch-action: manipulation !important;autocomplete: off !important;autocorrect: off !important;autocapitalize: off !important}.overtype-wrapper .overtype-input::selection{background-color: var(--selection,rgba(244,211,94,0.4))}.overtype-wrapper .overtype-input::placeholder{color: transparent !important}.overtype-wrapper .overtype-placeholder{position: absolute !important;top: 0 !important;left: 0 !important;width: 100% !important;z-index: 0 !important;pointer-events: none !important;user-select: none !important;font-family: var(--instance-font-family,${i}) !important;
49
+ font-size: var(--instance-font-size, ${e}) !important;
50
+ line-height: var(--instance-line-height, ${t}) !important;
51
+ padding: var(--instance-padding, ${o}) !important;box-sizing: border-box !important;color: var(--placeholder,#999) !important}.overtype-wrapper .overtype-preview{z-index: 0 !important;pointer-events: none !important;color: var(--text,#0d3b66) !important;background-color: transparent !important;user-select: none !important;-webkit-user-select: none !important;-moz-user-select: none !important;-ms-user-select: none !important}.overtype-wrapper .overtype-preview *{font-family: inherit !important;font-size: inherit !important;line-height: inherit !important}.overtype-wrapper .overtype-preview div{margin: 0 !important;padding: 0 !important;border: none !important;text-align: left !important;text-indent: 0 !important;display: block !important;position: static !important;transform: none !important;min-height: 0 !important;max-height: none !important;line-height: inherit !important;font-size: inherit !important;font-family: inherit !important}.overtype-wrapper .overtype-preview .header{font-weight: bold !important}.overtype-wrapper .overtype-preview .h1{color: var(--h1,#f95738) !important}.overtype-wrapper .overtype-preview .h2{color: var(--h2,#ee964b) !important}.overtype-wrapper .overtype-preview .h3{color: var(--h3,#3d8a51) !important}.overtype-wrapper .overtype-preview h1,.overtype-wrapper .overtype-preview h2,.overtype-wrapper .overtype-preview h3{font-size: inherit !important;font-weight: bold !important;margin: 0 !important;padding: 0 !important;display: inline !important;line-height: inherit !important}.overtype-wrapper .overtype-preview h1{color: var(--h1,#f95738) !important}.overtype-wrapper .overtype-preview h2{color: var(--h2,#ee964b) !important}.overtype-wrapper .overtype-preview h3{color: var(--h3,#3d8a51) !important}.overtype-wrapper .overtype-preview ul,.overtype-wrapper .overtype-preview ol{list-style: none !important;margin: 0 !important;padding: 0 !important;display: block !important}.overtype-wrapper .overtype-preview li{display: block !important;margin: 0 !important;padding: 0 !important}.overtype-wrapper .overtype-preview strong{color: var(--strong,#ee964b) !important;font-weight: bold !important}.overtype-wrapper .overtype-preview em{color: var(--em,#f95738) !important;text-decoration-color: var(--em,#f95738) !important;text-decoration-thickness: 1px !important;font-style: italic !important}.overtype-wrapper .overtype-preview del{color: var(--del,#ee964b) !important;text-decoration: line-through !important;text-decoration-color: var(--del,#ee964b) !important;text-decoration-thickness: 1px !important}.overtype-wrapper .overtype-preview code{background: var(--code-bg,rgba(244,211,94,0.4)) !important;color: var(--code,#0d3b66) !important;padding: 0 !important;border-radius: 2px !important;font-family: inherit !important;font-size: inherit !important;line-height: inherit !important;font-weight: normal !important}.overtype-wrapper .overtype-preview pre{padding: 0 !important;margin: 0 !important;border-radius: 4px !important;overflow-x: auto !important}.overtype-wrapper .overtype-preview pre.code-block{background: var(--code-bg,rgba(244,211,94,0.4)) !important;white-space: break-spaces !important}.overtype-wrapper .overtype-preview pre code{background: transparent !important;color: var(--code,#0d3b66) !important;font-family: var(--instance-font-family,${i}) !important}.overtype-wrapper .overtype-preview .blockquote{color: var(--blockquote,#5a7a9b) !important;padding: 0 !important;margin: 0 !important;border: none !important}.overtype-wrapper .overtype-preview a{color: var(--link,#0d3b66) !important;text-decoration: underline !important;font-weight: normal !important}.overtype-wrapper .overtype-preview a:hover{text-decoration: underline !important;color: var(--link,#0d3b66) !important}.overtype-wrapper .overtype-preview ul,.overtype-wrapper .overtype-preview ol{list-style: none !important;margin: 0 !important;padding: 0 !important}.overtype-wrapper .overtype-preview hr{border: none !important;color: var(--hr,#5a7a9b) !important;margin: 0 !important;padding: 0 !important}.overtype-wrapper .overtype-preview .hr-marker{color: var(--hr,#5a7a9b) !important;opacity: 0.6 !important}.overtype-wrapper .overtype-preview .code-fence{color: var(--code,#0d3b66) !important;background: var(--code-bg,rgba(244,211,94,0.4)) !important}.overtype-wrapper .overtype-preview .code-block-line{background: var(--code-bg,rgba(244,211,94,0.4)) !important}.overtype-wrapper .overtype-preview .code-block-line .code-fence{background: transparent !important}.overtype-wrapper .overtype-preview .raw-line{color: var(--raw-line,#5a7a9b) !important;font-style: normal !important;font-weight: normal !important}.overtype-wrapper .overtype-preview .syntax-marker{color: var(--syntax-marker,rgba(13,59,102,0.52)) !important;opacity: 0.7 !important}.overtype-wrapper .overtype-preview .list-marker{color: var(--list-marker,#ee964b) !important}.overtype-stats{height: 40px !important;padding: 0 20px !important;background: var(--bg-secondary,#f8f9fa) !important;border-top: 1px solid var(--border,#e0e0e0) !important;display: flex !important;justify-content: space-between !important;align-items: center !important;font-family: -apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,sans-serif !important;font-size: 0.85rem !important;color: var(--text-secondary,#666) !important;flex-shrink: 0 !important;z-index: 10001 !important;position: relative !important}.overtype-stats .overtype-stat{display: flex !important;align-items: center !important;gap: 5px !important;white-space: nowrap !important}.overtype-stats .live-dot{width: 8px !important;height: 8px !important;background: #4caf50 !important;border-radius: 50% !important;animation: overtype-pulse 2s infinite !important}@keyframes overtype-pulse{0%,100%{opacity: 1;transform: scale(1)}50%{opacity: 0.6;transform: scale(1.2)}}.overtype-toolbar.overtype-toolbar-hidden{display: none !important}.overtype-toolbar{display: flex !important;align-items: center !important;gap: 4px !important;padding: 8px !important;background: var(--toolbar-bg,var(--bg-primary,#f8f9fa)) !important;border-bottom: 1px solid var(--toolbar-border,transparent) !important;overflow-x: auto !important;overflow-y: hidden !important;-webkit-overflow-scrolling: touch !important;flex-shrink: 0 !important;height: auto !important;position: relative !important;z-index: 100 !important;scrollbar-width: thin}.overtype-toolbar::-webkit-scrollbar{height: 4px}.overtype-toolbar::-webkit-scrollbar-track{background: transparent}.overtype-toolbar::-webkit-scrollbar-thumb{background: rgba(0,0,0,0.2);border-radius: 2px}.overtype-toolbar-button{display: flex;align-items: center;justify-content: center;width: 32px;height: 32px;padding: 0;border: none;border-radius: 6px;background: transparent;color: var(--toolbar-icon,var(--text-secondary,#666));cursor: pointer;transition: all 0.2s ease;flex-shrink: 0}.overtype-toolbar-button svg{width: 20px;height: 20px;fill: currentColor}.overtype-toolbar-button:hover{background: var(--toolbar-hover,var(--bg-secondary,#e9ecef));color: var(--toolbar-icon,var(--text-primary,#333))}.overtype-toolbar-button:active{transform: scale(0.95)}.overtype-toolbar-button.active{background: var(--toolbar-active,var(--primary,#007bff));color: var(--toolbar-icon,var(--text-primary,#333))}.overtype-toolbar-button:disabled{opacity: 0.5;cursor: not-allowed}.overtype-toolbar-separator{width: 1px;height: 24px;background: var(--border,#e0e0e0);margin: 0 4px;flex-shrink: 0}@media (max-width: 640px){.overtype-toolbar{padding: 6px;gap: 2px}.overtype-toolbar-button{width: 36px;height: 36px}.overtype-toolbar-separator{margin: 0 2px}}.overtype-container[data-mode="plain"] .overtype-preview{display: none !important}.overtype-container[data-mode="plain"] .overtype-input{color: var(--text,#0d3b66) !important;font-family: -apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif !important}.overtype-container:not([data-mode="plain"]) .overtype-input{color: transparent !important}.overtype-toolbar-button{position: relative !important}.overtype-toolbar-button.dropdown-active{background: var(--toolbar-active,var(--hover-bg,#f0f0f0))}.overtype-dropdown-menu{position: fixed !important;background: var(--bg-secondary,white) !important;border: 1px solid var(--border,#e0e0e0) !important;border-radius: 6px;box-shadow: 0 2px 8px rgba(0,0,0,0.1) !important;z-index: 10000;min-width: 150px;padding: 4px 0 !important}.overtype-dropdown-item{display: flex;align-items: center;width: 100%;padding: 8px 12px;border: none;background: none;text-align: left;cursor: pointer;font-size: 14px;color: var(--text,#333);font-family: -apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,sans-serif}.overtype-dropdown-item:hover{background: var(--hover-bg,#f0f0f0)}.overtype-dropdown-item.active{font-weight: 600}.overtype-dropdown-check{width: 16px;margin-right: 8px;color: var(--h1,#007bff)}.overtype-dropdown-icon{width: 20px;margin-right: 8px;text-align: center}.overtype-container[data-mode="preview"] .overtype-input{display: none !important}.overtype-container[data-mode="preview"] .overtype-preview{pointer-events: auto !important;user-select: text !important;cursor: text !important}.overtype-container.overtype-auto-resize[data-mode="preview"] .overtype-preview{position: static !important;height: auto !important}.overtype-container[data-mode="preview"] .syntax-marker{display: none !important}.overtype-container[data-mode="preview"] .syntax-marker.url-part,.overtype-container[data-mode="preview"] .url-part{display: none !important}.overtype-container[data-mode="preview"] a .syntax-marker{display: none !important}.overtype-container[data-mode="preview"] .overtype-wrapper .overtype-preview h1,.overtype-container[data-mode="preview"] .overtype-wrapper .overtype-preview h2,.overtype-container[data-mode="preview"] .overtype-wrapper .overtype-preview h3{font-family: -apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,sans-serif !important;font-weight: 600 !important;margin: 0 !important;display: block !important;line-height: 1 !important}.overtype-container[data-mode="preview"] .overtype-wrapper .overtype-preview h1{font-size: 2em !important;color: var(--preview-h1,var(--preview-h1-default)) !important}.overtype-container[data-mode="preview"] .overtype-wrapper .overtype-preview h2{font-size: 1.5em !important;color: var(--preview-h2,var(--preview-h2-default)) !important}.overtype-container[data-mode="preview"] .overtype-wrapper .overtype-preview h3{font-size: 1.17em !important;color: var(--preview-h3,var(--preview-h3-default)) !important}.overtype-container[data-mode="preview"] .overtype-wrapper .overtype-preview ul{display: block !important;list-style: disc !important;padding-left: 2em !important;margin: 1em 0 !important}.overtype-container[data-mode="preview"] .overtype-wrapper .overtype-preview ol{display: block !important;list-style: decimal !important;padding-left: 2em !important;margin: 1em 0 !important}.overtype-container[data-mode="preview"] .overtype-wrapper .overtype-preview li{display: list-item !important;margin: 0 !important;padding: 0 !important}.overtype-container[data-mode="preview"] .overtype-wrapper .overtype-preview li.task-list{list-style: none !important;position: relative !important}.overtype-container[data-mode="preview"] .overtype-wrapper .overtype-preview li.task-list input[type="checkbox"]{margin-right: 0.5em !important;cursor: default !important;vertical-align: middle !important}.overtype-container:not([data-mode="preview"]) .overtype-wrapper .overtype-preview li.task-list{list-style: none !important}.overtype-container:not([data-mode="preview"]) .overtype-wrapper .overtype-preview li.task-list .syntax-marker{color: var(--syntax,#999999) !important;font-weight: normal !important}.overtype-container[data-mode="preview"] .overtype-wrapper .overtype-preview a{pointer-events: auto !important;cursor: pointer !important;color: var(--preview-link,var(--preview-link-default)) !important;text-decoration: underline !important}.overtype-container[data-mode="preview"] .overtype-wrapper .overtype-preview pre.code-block{background: var(--preview-code-bg,var(--preview-code-bg-default)) !important;color: var(--preview-code,var(--preview-code-default)) !important;padding: 1.2em !important;border-radius: 3px !important;overflow-x: auto !important;margin: 0 !important;display: block !important}.overtype-container[data-mode="preview"] .overtype-wrapper .overtype-preview pre.code-block code{background: transparent !important;color: inherit !important;padding: 0 !important;font-family:${i}!important;font-size: 0.9em !important;line-height: 1.4 !important}.overtype-container[data-mode="preview"] .overtype-wrapper .overtype-preview .code-block-line{display: none !important}.overtype-container[data-mode="preview"] .overtype-wrapper .overtype-preview .code-fence{display: none !important}.overtype-container[data-mode="preview"] .overtype-wrapper .overtype-preview .blockquote{display: block !important;border-left: 4px solid var(--preview-blockquote,var(--preview-blockquote-default)) !important;color: var(--preview-blockquote,var(--preview-blockquote-default)) !important;padding-left: 1em !important;margin: 1em 0 !important;font-style: italic !important}.overtype-container[data-mode="preview"] .overtype-wrapper .overtype-preview{font-family: Georgia,'Times New Roman',serif !important;font-size: 16px !important;line-height: 1.8 !important;color: var(--preview-text,var(--preview-text-default)) !important;background: var(--preview-bg,var(--preview-bg-default)) !important}.overtype-container[data-mode="preview"] .overtype-wrapper .overtype-preview code{font-family:${i}!important;font-size: 0.9em !important;background: var(--preview-code-bg,var(--preview-code-bg-default)) !important;color: var(--preview-code,var(--preview-code-default)) !important;padding: 0.2em 0.4em !important;border-radius: 3px !important}.overtype-container[data-mode="preview"] .overtype-wrapper .overtype-preview strong{font-weight: 700 !important;color: var(--preview-strong,var(--preview-strong-default)) !important}.overtype-container[data-mode="preview"] .overtype-wrapper .overtype-preview em{font-style: italic !important;color: var(--preview-em,var(--preview-em-default)) !important}.overtype-container[data-mode="preview"] .overtype-wrapper .overtype-preview .hr-marker{display: block !important;border-top: 2px solid var(--preview-hr,var(--preview-hr-default)) !important;text-indent: -9999px !important;height: 2px !important}.overtype-link-tooltip{background: #333 !important;color: white !important;padding: 6px 10px !important;border-radius: 16px !important;font-size: 12px !important;font-family: -apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif !important;display: flex !important;visibility: hidden !important;pointer-events: none !important;z-index: 10000 !important;cursor: pointer !important;box-shadow: 0 2px 8px rgba(0,0,0,0.3) !important;max-width: 300px !important;white-space: nowrap !important;overflow: hidden !important;text-overflow: ellipsis !important;position: fixed;top: 0;left: 0}.overtype-link-tooltip.visible{visibility: visible !important;pointer-events: auto !important}${a}
52
+ `}var se={};xt(se,{applyCustomFormat:()=>Wt,default:()=>ki,expandSelection:()=>qt,getActiveFormats:()=>Ke,getDebugMode:()=>ct,hasFormat:()=>Ut,insertHeader:()=>ye,insertLink:()=>Ne,preserveSelection:()=>zt,setDebugMode:()=>Bt,setUndoMethod:()=>Ft,toggleBold:()=>Be,toggleBulletList:()=>ze,toggleCode:()=>Fe,toggleH1:()=>Ue,toggleH2:()=>qe,toggleH3:()=>We,toggleItalic:()=>De,toggleNumberedList:()=>Ve,toggleQuote:()=>je,toggleTaskList:()=>ve});var ui=Object.defineProperty,Ht=Object.getOwnPropertySymbols,di=Object.prototype.hasOwnProperty,hi=Object.prototype.propertyIsEnumerable,_t=(n,e,t)=>e in n?ui(n,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):n[e]=t,Ot=(n,e)=>{for(var t in e||(e={}))di.call(e,t)&&_t(n,t,e[t]);if(Ht)for(var t of Ht(e))hi.call(e,t)&&_t(n,t,e[t]);return n},P={bold:{prefix:"**",suffix:"**",trimFirst:!0},italic:{prefix:"_",suffix:"_",trimFirst:!0},code:{prefix:"`",suffix:"`",blockPrefix:"```",blockSuffix:"```"},link:{prefix:"[",suffix:"](url)",replaceNext:"url",scanFor:"https?://"},bulletList:{prefix:"- ",multiline:!0,unorderedList:!0},numberedList:{prefix:"1. ",multiline:!0,orderedList:!0},quote:{prefix:"> ",multiline:!0,surroundWithNewlines:!0},taskList:{prefix:"- [ ] ",multiline:!0,surroundWithNewlines:!0},header1:{prefix:"# "},header2:{prefix:"## "},header3:{prefix:"### "},header4:{prefix:"#### "},header5:{prefix:"##### "},header6:{prefix:"###### "}};function fi(){return{prefix:"",suffix:"",blockPrefix:"",blockSuffix:"",multiline:!1,replaceNext:"",prefixSpace:!1,scanFor:"",surroundWithNewlines:!1,orderedList:!1,unorderedList:!1,trimFirst:!1}}function R(n){return Ot(Ot({},fi()),n)}var ge=!1;function Bt(n){ge=n}function ct(){return ge}function L(n,e,t){ge&&(console.group(`\u{1F50D} ${n}`),console.log(e),t&&console.log("Data:",t),console.groupEnd())}function Pe(n,e){if(!ge)return;let t=n.value.slice(n.selectionStart,n.selectionEnd);console.group(`\u{1F4CD} Selection: ${e}`),console.log("Position:",`${n.selectionStart}-${n.selectionEnd}`),console.log("Selected text:",JSON.stringify(t)),console.log("Length:",t.length);let i=n.value.slice(Math.max(0,n.selectionStart-10),n.selectionStart),o=n.value.slice(n.selectionEnd,Math.min(n.value.length,n.selectionEnd+10));console.log("Context:",JSON.stringify(i)+"[SELECTION]"+JSON.stringify(o)),console.groupEnd()}function Dt(n){ge&&(console.group("\u{1F4DD} Result"),console.log("Text to insert:",JSON.stringify(n.text)),console.log("New selection:",`${n.selectionStart}-${n.selectionEnd}`),console.groupEnd())}var I=null;function N(n,{text:e,selectionStart:t,selectionEnd:i}){let o=ct();o&&(console.group("\u{1F527} insertText"),console.log("Current selection:",`${n.selectionStart}-${n.selectionEnd}`),console.log("Text to insert:",JSON.stringify(e)),console.log("New selection to set:",t,"-",i)),n.focus();let r=n.selectionStart,s=n.selectionEnd,a=n.value.slice(0,r),l=n.value.slice(s);o&&(console.log("Before text (last 20):",JSON.stringify(a.slice(-20))),console.log("After text (first 20):",JSON.stringify(l.slice(0,20))),console.log("Selected text being replaced:",JSON.stringify(n.value.slice(r,s))));let c=n.value,p=r!==s;if(I===null||I===!0){n.contentEditable="true";try{I=document.execCommand("insertText",!1,e),o&&console.log("execCommand returned:",I,"for text with",e.split(`
53
+ `).length,"lines")}catch(u){I=!1,o&&console.log("execCommand threw error:",u)}n.contentEditable="false"}if(o&&(console.log("canInsertText before:",I),console.log("execCommand result:",I)),I){let u=a+e+l,d=n.value;o&&(console.log("Expected length:",u.length),console.log("Actual length:",d.length)),d!==u&&o&&(console.log("execCommand changed the value but not as expected"),console.log("Expected:",JSON.stringify(u.slice(0,100))),console.log("Actual:",JSON.stringify(d.slice(0,100))))}if(!I)if(o&&console.log("Using manual insertion"),n.value===c){o&&console.log("Value unchanged, doing manual replacement");try{document.execCommand("ms-beginUndoUnit")}catch(u){}n.value=a+e+l;try{document.execCommand("ms-endUndoUnit")}catch(u){}n.dispatchEvent(new CustomEvent("input",{bubbles:!0,cancelable:!0}))}else o&&console.log("Value was changed by execCommand, skipping manual insertion");o&&console.log("Setting selection range:",t,i),t!=null&&i!=null?n.setSelectionRange(t,i):n.setSelectionRange(r,n.selectionEnd),o&&(console.log("Final value length:",n.value.length),console.groupEnd())}function Ft(n){switch(n){case"native":I=!0;break;case"manual":I=!1;break;case"auto":I=null;break}}function lt(n){return n.trim().split(`
54
+ `).length>1}function mi(n,e){let t=e;for(;n[t]&&n[t-1]!=null&&!n[t-1].match(/\s/);)t--;return t}function gi(n,e,t){let i=e,o=t?/\n/:/\s/;for(;n[i]&&!n[i].match(o);)i++;return i}function Nt(n){let e=n.value.split(`
55
+ `),t=0;for(let i=0;i<e.length;i++){let o=e[i].length+1;n.selectionStart>=t&&n.selectionStart<t+o&&(n.selectionStart=t),n.selectionEnd>=t&&n.selectionEnd<t+o&&(i===e.length-1?n.selectionEnd=Math.min(t+e[i].length,n.value.length):n.selectionEnd=t+o-1),t+=o}}function vi(n,e,t,i=!1){if(n.selectionStart===n.selectionEnd)n.selectionStart=mi(n.value,n.selectionStart),n.selectionEnd=gi(n.value,n.selectionEnd,i);else{let o=n.selectionStart-e.length,r=n.selectionEnd+t.length,s=n.value.slice(o,n.selectionStart)===e,a=n.value.slice(n.selectionEnd,r)===t;s&&a&&(n.selectionStart=o,n.selectionEnd=r)}return n.value.slice(n.selectionStart,n.selectionEnd)}function pt(n){let e=n.value.slice(0,n.selectionStart),t=n.value.slice(n.selectionEnd),i=e.match(/\n*$/),o=t.match(/^\n*/),r=i?i[0].length:0,s=o?o[0].length:0,a="",l="";return e.match(/\S/)&&r<2&&(a=`
56
+ `.repeat(2-r)),t.match(/\S/)&&s<2&&(l=`
57
+ `.repeat(2-s)),{newlinesToAppend:a,newlinesToPrepend:l}}function zt(n,e){let t=n.selectionStart,i=n.selectionEnd,o=n.scrollTop;e(),n.selectionStart=t,n.selectionEnd=i,n.scrollTop=o}function Re(n,e,t={}){let i=n.selectionStart,o=n.selectionEnd,r=i===o,s=n.value,a=i;for(;a>0&&s[a-1]!==`
58
+ `;)a--;if(r){let c=i;for(;c<s.length&&s[c]!==`
59
+ `;)c++;n.selectionStart=a,n.selectionEnd=c}else Nt(n);let l=e(n);if(t.adjustSelection){let p=n.value.slice(n.selectionStart,n.selectionEnd).startsWith(t.prefix),u=t.adjustSelection(p,i,o,a);l.selectionStart=u.start,l.selectionEnd=u.end}else if(t.prefix){let p=n.value.slice(n.selectionStart,n.selectionEnd).startsWith(t.prefix);r?p?(l.selectionStart=Math.max(i-t.prefix.length,a),l.selectionEnd=l.selectionStart):(l.selectionStart=i+t.prefix.length,l.selectionEnd=l.selectionStart):p?(l.selectionStart=Math.max(i-t.prefix.length,a),l.selectionEnd=Math.max(o-t.prefix.length,a)):(l.selectionStart=i+t.prefix.length,l.selectionEnd=o+t.prefix.length)}return l}function re(n,e){let t,i,{prefix:o,suffix:r,blockPrefix:s,blockSuffix:a,replaceNext:l,prefixSpace:c,scanFor:p,surroundWithNewlines:u,trimFirst:d}=e,f=n.selectionStart,h=n.selectionEnd,m=n.value.slice(n.selectionStart,n.selectionEnd),g=lt(m)&&s&&s.length>0?`${s}
60
+ `:o,y=lt(m)&&a&&a.length>0?`
61
+ ${a}`:r;if(c){let k=n.value[n.selectionStart-1];n.selectionStart!==0&&k!=null&&!k.match(/\s/)&&(g=` ${g}`)}m=vi(n,g,y,e.multiline);let w=n.selectionStart,b=n.selectionEnd,x=l&&l.length>0&&y.indexOf(l)>-1&&m.length>0;if(u){let k=pt(n);t=k.newlinesToAppend,i=k.newlinesToPrepend,g=t+o,y+=i}if(m.startsWith(g)&&m.endsWith(y)){let k=m.slice(g.length,m.length-y.length);if(f===h){let E=f-g.length;E=Math.max(E,w),E=Math.min(E,w+k.length),w=b=E}else b=w+k.length;return{text:k,selectionStart:w,selectionEnd:b}}else if(x)if(p&&p.length>0&&m.match(p)){y=y.replace(l,m);let k=g+y;return w=b=w+g.length,{text:k,selectionStart:w,selectionEnd:b}}else{let k=g+m+y;return w=w+g.length+m.length+y.indexOf(l),b=w+l.length,{text:k,selectionStart:w,selectionEnd:b}}else{let k=g+m+y;w=f+g.length,b=h+g.length;let E=m.match(/^\s*|\s*$/g);if(d&&E){let pe=E[0]||"",te=E[1]||"";k=pe+g+m.trim()+y+te,w+=pe.length,b-=te.length}return{text:k,selectionStart:w,selectionEnd:b}}}function ut(n,e){let{prefix:t,suffix:i,surroundWithNewlines:o}=e,r=n.value.slice(n.selectionStart,n.selectionEnd),s=n.selectionStart,a=n.selectionEnd,l=r.split(`
62
+ `);if(l.every(p=>p.startsWith(t)&&(!i||p.endsWith(i))))r=l.map(p=>{let u=p.slice(t.length);return i&&(u=u.slice(0,u.length-i.length)),u}).join(`
63
+ `),a=s+r.length;else if(r=l.map(p=>t+p+(i||"")).join(`
64
+ `),o){let{newlinesToAppend:p,newlinesToPrepend:u}=pt(n);s+=p.length,a=s+r.length,r=p+r+u}return{text:r,selectionStart:s,selectionEnd:a}}function Pt(n){let e=n.split(`
65
+ `),t=/^\d+\.\s+/,i=e.every(r=>t.test(r)),o=e;return i&&(o=e.map(r=>r.replace(t,""))),{text:o.join(`
66
+ `),processed:i}}function Rt(n){let e=n.split(`
67
+ `),t="- ",i=e.every(r=>r.startsWith(t)),o=e;return i&&(o=e.map(r=>r.slice(t.length))),{text:o.join(`
68
+ `),processed:i}}function me(n,e){return e?"- ":`${n+1}. `}function yi(n,e){let t,i,o;return n.orderedList?(t=Pt(e),i=Rt(t.text),o=i.text):(t=Rt(e),i=Pt(t.text),o=i.text),[t,i,o]}function wi(n,e){let t=n.selectionStart===n.selectionEnd,i=n.selectionStart,o=n.selectionEnd;Nt(n);let r=n.value.slice(n.selectionStart,n.selectionEnd),[s,a,l]=yi(e,r),c=l.split(`
69
+ `).map((m,g)=>`${me(g,e.unorderedList)}${m}`),p=c.reduce((m,g,y)=>m+me(y,e.unorderedList).length,0),u=c.reduce((m,g,y)=>m+me(y,!e.unorderedList).length,0);if(s.processed)return t?(i=Math.max(i-me(0,e.unorderedList).length,0),o=i):(i=n.selectionStart,o=n.selectionEnd-p),{text:l,selectionStart:i,selectionEnd:o};let{newlinesToAppend:d,newlinesToPrepend:f}=pt(n),h=d+c.join(`
70
+ `)+f;return t?(i=Math.max(i+me(0,e.unorderedList).length+d.length,0),o=i):a.processed?(i=Math.max(n.selectionStart+d.length,0),o=n.selectionEnd+d.length+p-u):(i=Math.max(n.selectionStart+d.length,0),o=n.selectionEnd+d.length+p),{text:h,selectionStart:i,selectionEnd:o}}function Vt(n,e){let t=Re(n,i=>wi(i,e),{adjustSelection:(i,o,r,s)=>{let a=n.value.slice(s,n.selectionEnd),l=/^\d+\.\s+/,c=/^- /,p=l.test(a),u=c.test(a),d=e.orderedList&&p||e.unorderedList&&u;if(o===r)if(d){let f=a.match(e.orderedList?l:c),h=f?f[0].length:0;return{start:Math.max(o-h,s),end:Math.max(o-h,s)}}else if(p||u){let f=a.match(p?l:c),h=f?f[0].length:0,g=(e.unorderedList?2:3)-h;return{start:o+g,end:o+g}}else{let f=e.unorderedList?2:3;return{start:o+f,end:o+f}}else if(d){let f=a.match(e.orderedList?l:c),h=f?f[0].length:0;return{start:Math.max(o-h,s),end:Math.max(r-h,s)}}else if(p||u){let f=a.match(p?l:c),h=f?f[0].length:0,g=(e.unorderedList?2:3)-h;return{start:o+g,end:r+g}}else{let f=e.unorderedList?2:3;return{start:o+f,end:r+f}}}});N(n,t)}function jt(n){if(!n)return[];let e=[],{selectionStart:t,selectionEnd:i,value:o}=n,r=o.split(`
71
+ `),s=0,a="";for(let u of r){if(t>=s&&t<=s+u.length){a=u;break}s+=u.length+1}a.startsWith("- ")&&(a.startsWith("- [ ] ")||a.startsWith("- [x] ")?e.push("task-list"):e.push("bullet-list")),/^\d+\.\s/.test(a)&&e.push("numbered-list"),a.startsWith("> ")&&e.push("quote"),a.startsWith("# ")&&e.push("header"),a.startsWith("## ")&&e.push("header-2"),a.startsWith("### ")&&e.push("header-3");let l=Math.max(0,t-10),c=Math.min(o.length,i+10),p=o.slice(l,c);if(p.includes("**")){let u=o.slice(Math.max(0,t-100),t),d=o.slice(i,Math.min(o.length,i+100)),f=u.lastIndexOf("**"),h=d.indexOf("**");f!==-1&&h!==-1&&e.push("bold")}if(p.includes("_")){let u=o.slice(Math.max(0,t-100),t),d=o.slice(i,Math.min(o.length,i+100)),f=u.lastIndexOf("_"),h=d.indexOf("_");f!==-1&&h!==-1&&e.push("italic")}if(p.includes("`")){let u=o.slice(Math.max(0,t-100),t),d=o.slice(i,Math.min(o.length,i+100));u.includes("`")&&d.includes("`")&&e.push("code")}if(p.includes("[")&&p.includes("]")){let u=o.slice(Math.max(0,t-100),t),d=o.slice(i,Math.min(o.length,i+100)),f=u.lastIndexOf("["),h=d.indexOf("]");f!==-1&&h!==-1&&o.slice(i+h+1,i+h+10).startsWith("(")&&e.push("link")}return e}function bi(n,e){return jt(n).includes(e)}function xi(n,e={}){if(!n)return;let{toWord:t,toLine:i,toFormat:o}=e,{selectionStart:r,selectionEnd:s,value:a}=n;if(i){let l=a.split(`
72
+ `),c=0,p=0,u=0;for(let d of l){if(r>=u&&r<=u+d.length){c=u,p=u+d.length;break}u+=d.length+1}n.selectionStart=c,n.selectionEnd=p}else if(t&&r===s){let l=r,c=s;for(;l>0&&!/\s/.test(a[l-1]);)l--;for(;c<a.length&&!/\s/.test(a[c]);)c++;n.selectionStart=l,n.selectionEnd=c}}function Be(n){if(!n||n.disabled||n.readOnly)return;L("toggleBold","Starting"),Pe(n,"Before");let e=R(P.bold),t=re(n,e);Dt(t),N(n,t),Pe(n,"After")}function De(n){if(!n||n.disabled||n.readOnly)return;let e=R(P.italic),t=re(n,e);N(n,t)}function Fe(n){if(!n||n.disabled||n.readOnly)return;let e=R(P.code),t=re(n,e);N(n,t)}function Ne(n,e={}){if(!n||n.disabled||n.readOnly)return;let t=n.value.slice(n.selectionStart,n.selectionEnd),i=R(P.link);if(t&&t.match(/^https?:\/\//)&&!e.url?(i.suffix=`](${t})`,i.replaceNext=""):e.url&&(i.suffix=`](${e.url})`,i.replaceNext=""),e.text&&!t){let s=n.selectionStart;n.value=n.value.slice(0,s)+e.text+n.value.slice(s),n.selectionStart=s,n.selectionEnd=s+e.text.length}let r=re(n,i);N(n,r)}function ze(n){if(!n||n.disabled||n.readOnly)return;let e=R(P.bulletList);Vt(n,e)}function Ve(n){if(!n||n.disabled||n.readOnly)return;let e=R(P.numberedList);Vt(n,e)}function je(n){if(!n||n.disabled||n.readOnly)return;L("toggleQuote","Starting"),Pe(n,"Initial");let e=R(P.quote),t=Re(n,i=>ut(i,e),{prefix:e.prefix});Dt(t),N(n,t),Pe(n,"Final")}function ve(n){if(!n||n.disabled||n.readOnly)return;let e=R(P.taskList),t=Re(n,i=>ut(i,e),{prefix:e.prefix});N(n,t)}function ye(n,e=1,t=!1){if(!n||n.disabled||n.readOnly)return;(e<1||e>6)&&(e=1),L("insertHeader","============ START ============"),L("insertHeader",`Level: ${e}, Toggle: ${t}`),L("insertHeader",`Initial cursor: ${n.selectionStart}-${n.selectionEnd}`);let i=`header${e===1?"1":e}`,o=R(P[i]||P.header1);L("insertHeader",`Style prefix: "${o.prefix}"`);let r=n.value,s=n.selectionStart,a=n.selectionEnd,l=s;for(;l>0&&r[l-1]!==`
73
+ `;)l--;let c=a;for(;c<r.length&&r[c]!==`
74
+ `;)c++;let p=r.slice(l,c);L("insertHeader",`Current line (before): "${p}"`);let u=p.match(/^(#{1,6})\s*/),d=u?u[1].length:0,f=u?u[0].length:0;L("insertHeader","Existing header check:"),L("insertHeader",` - Match: ${u?`"${u[0]}"`:"none"}`),L("insertHeader",` - Existing level: ${d}`),L("insertHeader",` - Existing prefix length: ${f}`),L("insertHeader",` - Target level: ${e}`);let h=t&&d===e;L("insertHeader",`Should toggle OFF: ${h} (toggle=${t}, existingLevel=${d}, level=${e})`);let m=Re(n,g=>{let y=g.value.slice(g.selectionStart,g.selectionEnd);L("insertHeader",`Line in operation: "${y}"`);let w=y.replace(/^#{1,6}\s*/,"");L("insertHeader",`Cleaned line: "${w}"`);let b;return h?(L("insertHeader","ACTION: Toggling OFF - removing header"),b=w):d>0?(L("insertHeader",`ACTION: Replacing H${d} with H${e}`),b=o.prefix+w):(L("insertHeader","ACTION: Adding new header"),b=o.prefix+w),L("insertHeader",`New line: "${b}"`),{text:b,selectionStart:g.selectionStart,selectionEnd:g.selectionEnd}},{prefix:o.prefix,adjustSelection:(g,y,w,b)=>{if(L("insertHeader","Adjusting selection:"),L("insertHeader",` - isRemoving param: ${g}`),L("insertHeader",` - shouldToggleOff: ${h}`),L("insertHeader",` - selStart: ${y}, selEnd: ${w}`),L("insertHeader",` - lineStartPos: ${b}`),h){let x=Math.max(y-f,b);return L("insertHeader",` - Removing header, adjusting by -${f}`),{start:x,end:y===w?x:Math.max(w-f,b)}}else if(f>0){let x=o.prefix.length-f;return L("insertHeader",` - Replacing header, adjusting by ${x}`),{start:y+x,end:w+x}}else return L("insertHeader",` - Adding header, adjusting by +${o.prefix.length}`),{start:y+o.prefix.length,end:w+o.prefix.length}}});L("insertHeader",`Final result: text="${m.text}", cursor=${m.selectionStart}-${m.selectionEnd}`),L("insertHeader","============ END ============"),N(n,m)}function Ue(n){ye(n,1,!0)}function qe(n){ye(n,2,!0)}function We(n){ye(n,3,!0)}function Ke(n){return jt(n)}function Ut(n,e){return bi(n,e)}function qt(n,e={}){xi(n,e)}function Wt(n,e){if(!n||n.disabled||n.readOnly)return;let t=R(e),i;if(t.multiline){let o=n.value.slice(n.selectionStart,n.selectionEnd);lt(o)?i=ut(n,t):i=re(n,t)}else i=re(n,t);N(n,i)}var ki={toggleBold:Be,toggleItalic:De,toggleCode:Fe,insertLink:Ne,toggleBulletList:ze,toggleNumberedList:Ve,toggleQuote:je,toggleTaskList:ve,insertHeader:ye,toggleH1:Ue,toggleH2:qe,toggleH3:We,getActiveFormats:Ke,hasFormat:Ut,expandSelection:qt,applyCustomFormat:Wt,preserveSelection:zt,setUndoMethod:Ft,setDebugMode:Bt,getDebugMode:ct};var Xe=class{constructor(e,t={}){this.editor=e,this.container=null,this.buttons={},this.currentItemIndex=0,this.handleDocumentClick=null,this.activeDropdown=null,this.activeDropdownButton=null,this.toolbarButtons=t.toolbarButtons||[]}create(){this.container=document.createElement("div"),this.container.className="overtype-toolbar",this.editor._markChrome(this.container),this.container.id=this.getInstanceElementId("toolbar"),this.container.setAttribute("role","toolbar"),this.container.setAttribute("aria-label","Formatting toolbar"),this.container.setAttribute("aria-controls",this.editor.textarea.id),this.toolbarButtons.forEach(e=>{if(e.name==="separator"){let t=this.createSeparator();this.container.appendChild(t)}else{let t=this.createButton(e);this.buttons[e.name]=t,this.container.appendChild(t)}}),this.setupRovingTabIndex(),this.updateButtonStates(),this.editor.container.insertBefore(this.container,this.editor.wrapper)}getInstanceElementId(e){return`overtype-${this.editor.instanceId}-${e}`}setupRovingTabIndex(){this.getToolbarItems().length!==0&&(this.currentItemIndex=this.getValidItemIndex(this.currentItemIndex),this.updateTabIndexes(),this.container.addEventListener("keydown",t=>{this.onToolbarKeydown(t)}),this.container.addEventListener("focusin",t=>{this.onToolbarFocusin(t)}))}getToolbarItems(){return this.container?Array.from(this.container.querySelectorAll(".overtype-toolbar-button")):[]}onToolbarKeydown(e){let t=this.getToolbarItems();if(t.includes(e.target))switch(e.key){case"ArrowRight":e.preventDefault(),this.focusItem(this.currentItemIndex+1);break;case"ArrowLeft":e.preventDefault(),this.focusItem(this.currentItemIndex-1);break;case"Home":e.preventDefault(),this.focusItem(0);break;case"End":e.preventDefault(),this.focusItem(t.length-1);break}}onToolbarFocusin(e){let t=this.getToolbarItems().indexOf(e.target);t!==-1&&(this.currentItemIndex=t,this.updateTabIndexes())}focusItem(e){let t=this.getToolbarItems();t.length!==0&&(this.currentItemIndex=this.getValidItemIndex(e,t),this.updateTabIndexes(),t[this.currentItemIndex].focus())}getValidItemIndex(e,t=this.getToolbarItems()){let i=t.length;return i===0?0:e<0?i-1:e>=i?0:e}updateTabIndexes(){this.getToolbarItems().forEach((e,t)=>{e.tabIndex=t===this.currentItemIndex?0:-1})}createSeparator(){let e=document.createElement("div");return e.className="overtype-toolbar-separator",e.setAttribute("role","separator"),e}createButton(e){let t=document.createElement("button");return t.className="overtype-toolbar-button",t.type="button",t.setAttribute("data-button",e.name),t.title=e.title||"",t.setAttribute("aria-label",e.title||e.name),t.innerHTML=this.sanitizeSVG(e.icon||""),e.name==="viewMode"?(t.classList.add("has-dropdown"),t.dataset.dropdown="true",t.setAttribute("aria-haspopup","menu"),t.setAttribute("aria-expanded","false"),t._clickHandler=i=>{i.preventDefault(),this.toggleViewModeDropdown(t)},t._keydownHandler=i=>{if(!["ArrowDown","ArrowUp","Enter"," "].includes(i.key))return;i.preventDefault();let o=i.key==="ArrowUp"?"last":"current";this.openViewModeDropdown(t,o)},t.addEventListener("click",t._clickHandler),t.addEventListener("keydown",t._keydownHandler),t):(t._clickHandler=i=>{i.preventDefault();let o=e.actionId||e.name;this.editor.performAction(o,i)},t.addEventListener("click",t._clickHandler),t)}async handleAction(e){if(e&&typeof e=="object"&&typeof e.action=="function"){this.editor.textarea.focus();try{return await e.action({editor:this.editor,getValue:()=>this.editor.getValue(),setValue:t=>this.editor.setValue(t),event:null}),!0}catch(t){return console.error(`Action "${e.name}" error:`,t),this.editor.wrapper.dispatchEvent(new CustomEvent("button-error",{detail:{buttonName:e.name,error:t}})),!1}}return typeof e=="string"?this.editor.performAction(e,null):!1}sanitizeSVG(e){return typeof e!="string"?"":e.replace(/<script\b[^<]*(?:(?!<\/script>)<[^<]*)*<\/script>/gi,"").replace(/\son\w+\s*=\s*["'][^"']*["']/gi,"").replace(/\son\w+\s*=\s*[^\s>]*/gi,"")}toggleViewModeDropdown(e){if(this.activeDropdown){this.closeViewModeDropdown(e);return}this.openViewModeDropdown(e)}openViewModeDropdown(e,t=null){this.closeViewModeDropdown(e),e.classList.add("dropdown-active");let i=this.createViewModeDropdown(e),o=e.getBoundingClientRect();i.style.position="absolute",i.style.top=`${o.bottom+5}px`,i.style.left=`${o.left}px`,document.body.appendChild(i),this.activeDropdown=i,this.activeDropdownButton=e,e.setAttribute("aria-controls",i.id),e.setAttribute("aria-expanded","true"),this.handleDocumentClick=r=>{!i.contains(r.target)&&!e.contains(r.target)&&this.closeViewModeDropdown(e)},setTimeout(()=>{document.addEventListener("click",this.handleDocumentClick)},0),t&&this.focusViewModeMenuItem(i,t)}closeViewModeDropdown(e=this.activeDropdownButton,t=!1){this.activeDropdown&&(this.activeDropdown.remove(),this.activeDropdown=null),e&&(e.classList.remove("dropdown-active"),e.setAttribute("aria-expanded","false")),this.handleDocumentClick&&(document.removeEventListener("click",this.handleDocumentClick),this.handleDocumentClick=null),this.activeDropdownButton=null,t&&e&&e.focus()}createViewModeDropdown(e){let t=document.createElement("div");t.className="overtype-dropdown-menu",this.editor._markChrome(t),t.id=this.getInstanceElementId("toolbar-view-mode-menu"),t.setAttribute("role","menu"),t.setAttribute("aria-label","View mode"),t.addEventListener("keydown",r=>{this.onViewModeMenuKeydown(r,e)});let i=[{id:"normal",label:"Normal Edit",icon:"\u2713"},{id:"plain",label:"Plain Textarea",icon:"\u2713"},{id:"preview",label:"Preview Mode",icon:"\u2713"}],o=this.editor.container.dataset.mode||"normal";return i.forEach(r=>{let s=document.createElement("button");if(s.className="overtype-dropdown-item",s.type="button",s.tabIndex=-1,s.setAttribute("role","menuitemradio"),s.setAttribute("aria-checked",String(r.id===o)),s.textContent=r.label,r.id===o){s.classList.add("active");let a=document.createElement("span");a.className="overtype-dropdown-icon",a.setAttribute("aria-hidden","true"),a.textContent=r.icon,s.prepend(a)}s.addEventListener("click",a=>{switch(a.preventDefault(),r.id){case"plain":this.editor.showPlainTextarea();break;case"preview":this.editor.showPreviewMode();break;case"normal":default:this.editor.showNormalEditMode();break}this.closeViewModeDropdown(e,!0)}),t.appendChild(s)}),t}onViewModeMenuKeydown(e,t){let o=this.getViewModeMenuItems().indexOf(e.target);if(o!==-1)switch(e.key){case"ArrowDown":e.preventDefault(),this.focusViewModeMenuItem(this.activeDropdown,o+1);break;case"ArrowUp":e.preventDefault(),this.focusViewModeMenuItem(this.activeDropdown,o-1);break;case"Home":e.preventDefault(),this.focusViewModeMenuItem(this.activeDropdown,"first");break;case"End":e.preventDefault(),this.focusViewModeMenuItem(this.activeDropdown,"last");break;case"Escape":e.preventDefault(),this.closeViewModeDropdown(t,!0);break}}focusViewModeMenuItem(e,t){let i=this.getViewModeMenuItems(e);if(i.length===0)return;let o=t;t==="first"?o=0:t==="last"?o=i.length-1:t==="current"&&(o=i.findIndex(r=>r.getAttribute("aria-checked")==="true")),o<0&&(o=i.length-1),o>=i.length&&(o=0),i[o].focus()}getViewModeMenuItems(e=this.activeDropdown){return e?Array.from(e.querySelectorAll('[role="menuitemradio"]')):[]}updateButtonStates(){var e;try{let t=((e=Ke)==null?void 0:e(this.editor.textarea,this.editor.textarea.selectionStart))||[];Object.entries(this.buttons).forEach(([i,o])=>{if(i==="viewMode")return;let r=this.toolbarButtons.find(a=>a.name===i);if(!(r!=null&&r.isActive))return;let s=!!r.isActive({editor:this.editor,activeFormats:t});o.classList.toggle("active",s),o.setAttribute("aria-pressed",s.toString())})}catch(t){}}show(){this.container&&this.container.classList.remove("overtype-toolbar-hidden")}hide(){this.container&&this.container.classList.add("overtype-toolbar-hidden")}destroy(){this.container&&(this.activeDropdown?this.closeViewModeDropdown():this.handleDocumentClick&&(document.removeEventListener("click",this.handleDocumentClick),this.handleDocumentClick=null),Object.values(this.buttons).forEach(e=>{e._clickHandler&&(e.removeEventListener("click",e._clickHandler),delete e._clickHandler),e._keydownHandler&&(e.removeEventListener("keydown",e._keydownHandler),delete e._keydownHandler)}),this.container.remove(),this.container=null,this.buttons={})}};var be=Math.min,K=Math.max,xe=Math.round;var _=n=>({x:n,y:n}),Li={left:"right",right:"left",bottom:"top",top:"bottom"},Si={start:"end",end:"start"};function dt(n,e,t){return K(n,be(e,t))}function ke(n,e){return typeof n=="function"?n(e):n}function X(n){return n.split("-")[0]}function Le(n){return n.split("-")[1]}function ht(n){return n==="x"?"y":"x"}function ft(n){return n==="y"?"height":"width"}var Ei=new Set(["top","bottom"]);function z(n){return Ei.has(X(n))?"y":"x"}function mt(n){return ht(z(n))}function Yt(n,e,t){t===void 0&&(t=!1);let i=Le(n),o=mt(n),r=ft(o),s=o==="x"?i===(t?"end":"start")?"right":"left":i==="start"?"bottom":"top";return e.reference[r]>e.floating[r]&&(s=we(s)),[s,we(s)]}function Zt(n){let e=we(n);return[Ye(n),e,Ye(e)]}function Ye(n){return n.replace(/start|end/g,e=>Si[e])}var Kt=["left","right"],Xt=["right","left"],Ti=["top","bottom"],Ci=["bottom","top"];function Ai(n,e,t){switch(n){case"top":case"bottom":return t?e?Xt:Kt:e?Kt:Xt;case"left":case"right":return e?Ti:Ci;default:return[]}}function Qt(n,e,t,i){let o=Le(n),r=Ai(X(n),t==="start",i);return o&&(r=r.map(s=>s+"-"+o),e&&(r=r.concat(r.map(Ye)))),r}function we(n){return n.replace(/left|right|bottom|top/g,e=>Li[e])}function Ii(n){return{top:0,right:0,bottom:0,left:0,...n}}function Gt(n){return typeof n!="number"?Ii(n):{top:n,right:n,bottom:n,left:n}}function G(n){let{x:e,y:t,width:i,height:o}=n;return{width:i,height:o,top:t,left:e,right:e+i,bottom:t+o,x:e,y:t}}function Jt(n,e,t){let{reference:i,floating:o}=n,r=z(e),s=mt(e),a=ft(s),l=X(e),c=r==="y",p=i.x+i.width/2-o.width/2,u=i.y+i.height/2-o.height/2,d=i[a]/2-o[a]/2,f;switch(l){case"top":f={x:p,y:i.y-o.height};break;case"bottom":f={x:p,y:i.y+i.height};break;case"right":f={x:i.x+i.width,y:u};break;case"left":f={x:i.x-o.width,y:u};break;default:f={x:i.x,y:i.y}}switch(Le(e)){case"start":f[s]-=d*(t&&c?-1:1);break;case"end":f[s]+=d*(t&&c?-1:1);break}return f}async function en(n,e){var t;e===void 0&&(e={});let{x:i,y:o,platform:r,rects:s,elements:a,strategy:l}=n,{boundary:c="clippingAncestors",rootBoundary:p="viewport",elementContext:u="floating",altBoundary:d=!1,padding:f=0}=ke(e,n),h=Gt(f),g=a[d?u==="floating"?"reference":"floating":u],y=G(await r.getClippingRect({element:(t=await(r.isElement==null?void 0:r.isElement(g)))==null||t?g:g.contextElement||await(r.getDocumentElement==null?void 0:r.getDocumentElement(a.floating)),boundary:c,rootBoundary:p,strategy:l})),w=u==="floating"?{x:i,y:o,width:s.floating.width,height:s.floating.height}:s.reference,b=await(r.getOffsetParent==null?void 0:r.getOffsetParent(a.floating)),x=await(r.isElement==null?void 0:r.isElement(b))?await(r.getScale==null?void 0:r.getScale(b))||{x:1,y:1}:{x:1,y:1},k=G(r.convertOffsetParentRelativeRectToViewportRelativeRect?await r.convertOffsetParentRelativeRectToViewportRelativeRect({elements:a,rect:w,offsetParent:b,strategy:l}):w);return{top:(y.top-k.top+h.top)/x.y,bottom:(k.bottom-y.bottom+h.bottom)/x.y,left:(y.left-k.left+h.left)/x.x,right:(k.right-y.right+h.right)/x.x}}var tn=async(n,e,t)=>{let{placement:i="bottom",strategy:o="absolute",middleware:r=[],platform:s}=t,a=r.filter(Boolean),l=await(s.isRTL==null?void 0:s.isRTL(e)),c=await s.getElementRects({reference:n,floating:e,strategy:o}),{x:p,y:u}=Jt(c,i,l),d=i,f={},h=0;for(let g=0;g<a.length;g++){var m;let{name:y,fn:w}=a[g],{x:b,y:x,data:k,reset:E}=await w({x:p,y:u,initialPlacement:i,placement:d,strategy:o,middlewareData:f,rects:c,platform:{...s,detectOverflow:(m=s.detectOverflow)!=null?m:en},elements:{reference:n,floating:e}});p=b!=null?b:p,u=x!=null?x:u,f={...f,[y]:{...f[y],...k}},E&&h<=50&&(h++,typeof E=="object"&&(E.placement&&(d=E.placement),E.rects&&(c=E.rects===!0?await s.getElementRects({reference:n,floating:e,strategy:o}):E.rects),{x:p,y:u}=Jt(c,d,l)),g=-1)}return{x:p,y:u,placement:d,strategy:o,middlewareData:f}};var nn=function(n){return n===void 0&&(n={}),{name:"flip",options:n,async fn(e){var t,i;let{placement:o,middlewareData:r,rects:s,initialPlacement:a,platform:l,elements:c}=e,{mainAxis:p=!0,crossAxis:u=!0,fallbackPlacements:d,fallbackStrategy:f="bestFit",fallbackAxisSideDirection:h="none",flipAlignment:m=!0,...g}=ke(n,e);if((t=r.arrow)!=null&&t.alignmentOffset)return{};let y=X(o),w=z(a),b=X(a)===a,x=await(l.isRTL==null?void 0:l.isRTL(c.floating)),k=d||(b||!m?[we(a)]:Zt(a)),E=h!=="none";!d&&E&&k.push(...Qt(a,m,h,x));let pe=[a,...k],te=await l.detectOverflow(e,g),Ae=[],ne=((i=r.flip)==null?void 0:i.overflows)||[];if(p&&Ae.push(te[y]),u){let Y=Yt(o,s,x);Ae.push(te[Y[0]],te[Y[1]])}if(ne=[...ne,{placement:o,overflows:Ae}],!Ae.every(Y=>Y<=0)){var yt,wt;let Y=(((yt=r.flip)==null?void 0:yt.index)||0)+1,it=pe[Y];if(it&&(!(u==="alignment"?w!==z(it):!1)||ne.every(H=>z(H.placement)===w?H.overflows[0]>0:!0)))return{data:{index:Y,overflows:ne},reset:{placement:it}};let ue=(wt=ne.filter(Z=>Z.overflows[0]<=0).sort((Z,H)=>Z.overflows[1]-H.overflows[1])[0])==null?void 0:wt.placement;if(!ue)switch(f){case"bestFit":{var bt;let Z=(bt=ne.filter(H=>{if(E){let U=z(H.placement);return U===w||U==="y"}return!0}).map(H=>[H.placement,H.overflows.filter(U=>U>0).reduce((U,Dn)=>U+Dn,0)]).sort((H,U)=>H[1]-U[1])[0])==null?void 0:bt[0];Z&&(ue=Z);break}case"initialPlacement":ue=a;break}if(o!==ue)return{reset:{placement:ue}}}return{}}}};var Mi=new Set(["left","top"]);async function $i(n,e){let{placement:t,platform:i,elements:o}=n,r=await(i.isRTL==null?void 0:i.isRTL(o.floating)),s=X(t),a=Le(t),l=z(t)==="y",c=Mi.has(s)?-1:1,p=r&&l?-1:1,u=ke(e,n),{mainAxis:d,crossAxis:f,alignmentAxis:h}=typeof u=="number"?{mainAxis:u,crossAxis:0,alignmentAxis:null}:{mainAxis:u.mainAxis||0,crossAxis:u.crossAxis||0,alignmentAxis:u.alignmentAxis};return a&&typeof h=="number"&&(f=a==="end"?h*-1:h),l?{x:f*p,y:d*c}:{x:d*c,y:f*p}}var on=function(n){return n===void 0&&(n=0),{name:"offset",options:n,async fn(e){var t,i;let{x:o,y:r,placement:s,middlewareData:a}=e,l=await $i(e,n);return s===((t=a.offset)==null?void 0:t.placement)&&(i=a.arrow)!=null&&i.alignmentOffset?{}:{x:o+l.x,y:r+l.y,data:{...l,placement:s}}}}},rn=function(n){return n===void 0&&(n={}),{name:"shift",options:n,async fn(e){let{x:t,y:i,placement:o,platform:r}=e,{mainAxis:s=!0,crossAxis:a=!1,limiter:l={fn:y=>{let{x:w,y:b}=y;return{x:w,y:b}}},...c}=ke(n,e),p={x:t,y:i},u=await r.detectOverflow(e,c),d=z(X(o)),f=ht(d),h=p[f],m=p[d];if(s){let y=f==="y"?"top":"left",w=f==="y"?"bottom":"right",b=h+u[y],x=h-u[w];h=dt(b,h,x)}if(a){let y=d==="y"?"top":"left",w=d==="y"?"bottom":"right",b=m+u[y],x=m-u[w];m=dt(b,m,x)}let g=l.fn({...e,[f]:h,[d]:m});return{...g,data:{x:g.x-t,y:g.y-i,enabled:{[f]:s,[d]:a}}}}}};function Qe(){return typeof window<"u"}function J(n){return an(n)?(n.nodeName||"").toLowerCase():"#document"}function A(n){var e;return(n==null||(e=n.ownerDocument)==null?void 0:e.defaultView)||window}function B(n){var e;return(e=(an(n)?n.ownerDocument:n.document)||window.document)==null?void 0:e.documentElement}function an(n){return Qe()?n instanceof Node||n instanceof A(n).Node:!1}function M(n){return Qe()?n instanceof Element||n instanceof A(n).Element:!1}function O(n){return Qe()?n instanceof HTMLElement||n instanceof A(n).HTMLElement:!1}function sn(n){return!Qe()||typeof ShadowRoot>"u"?!1:n instanceof ShadowRoot||n instanceof A(n).ShadowRoot}var Hi=new Set(["inline","contents"]);function ae(n){let{overflow:e,overflowX:t,overflowY:i,display:o}=$(n);return/auto|scroll|overlay|hidden|clip/.test(e+i+t)&&!Hi.has(o)}var _i=new Set(["table","td","th"]);function ln(n){return _i.has(J(n))}var Oi=[":popover-open",":modal"];function Se(n){return Oi.some(e=>{try{return n.matches(e)}catch(t){return!1}})}var Pi=["transform","translate","scale","rotate","perspective"],Ri=["transform","translate","scale","rotate","perspective","filter"],Bi=["paint","layout","strict","content"];function Ge(n){let e=Je(),t=M(n)?$(n):n;return Pi.some(i=>t[i]?t[i]!=="none":!1)||(t.containerType?t.containerType!=="normal":!1)||!e&&(t.backdropFilter?t.backdropFilter!=="none":!1)||!e&&(t.filter?t.filter!=="none":!1)||Ri.some(i=>(t.willChange||"").includes(i))||Bi.some(i=>(t.contain||"").includes(i))}function cn(n){let e=V(n);for(;O(e)&&!ee(e);){if(Ge(e))return e;if(Se(e))return null;e=V(e)}return null}function Je(){return typeof CSS>"u"||!CSS.supports?!1:CSS.supports("-webkit-backdrop-filter","none")}var Di=new Set(["html","body","#document"]);function ee(n){return Di.has(J(n))}function $(n){return A(n).getComputedStyle(n)}function Ee(n){return M(n)?{scrollLeft:n.scrollLeft,scrollTop:n.scrollTop}:{scrollLeft:n.scrollX,scrollTop:n.scrollY}}function V(n){if(J(n)==="html")return n;let e=n.assignedSlot||n.parentNode||sn(n)&&n.host||B(n);return sn(e)?e.host:e}function pn(n){let e=V(n);return ee(e)?n.ownerDocument?n.ownerDocument.body:n.body:O(e)&&ae(e)?e:pn(e)}function Ze(n,e,t){var i;e===void 0&&(e=[]),t===void 0&&(t=!0);let o=pn(n),r=o===((i=n.ownerDocument)==null?void 0:i.body),s=A(o);if(r){let a=et(s);return e.concat(s,s.visualViewport||[],ae(o)?o:[],a&&t?Ze(a):[])}return e.concat(o,Ze(o,[],t))}function et(n){return n.parent&&Object.getPrototypeOf(n.parent)?n.frameElement:null}function fn(n){let e=$(n),t=parseFloat(e.width)||0,i=parseFloat(e.height)||0,o=O(n),r=o?n.offsetWidth:t,s=o?n.offsetHeight:i,a=xe(t)!==r||xe(i)!==s;return a&&(t=r,i=s),{width:t,height:i,$:a}}function mn(n){return M(n)?n:n.contextElement}function le(n){let e=mn(n);if(!O(e))return _(1);let t=e.getBoundingClientRect(),{width:i,height:o,$:r}=fn(e),s=(r?xe(t.width):t.width)/i,a=(r?xe(t.height):t.height)/o;return(!s||!Number.isFinite(s))&&(s=1),(!a||!Number.isFinite(a))&&(a=1),{x:s,y:a}}var Fi=_(0);function gn(n){let e=A(n);return!Je()||!e.visualViewport?Fi:{x:e.visualViewport.offsetLeft,y:e.visualViewport.offsetTop}}function Ni(n,e,t){return e===void 0&&(e=!1),!t||e&&t!==A(n)?!1:e}function Te(n,e,t,i){e===void 0&&(e=!1),t===void 0&&(t=!1);let o=n.getBoundingClientRect(),r=mn(n),s=_(1);e&&(i?M(i)&&(s=le(i)):s=le(n));let a=Ni(r,t,i)?gn(r):_(0),l=(o.left+a.x)/s.x,c=(o.top+a.y)/s.y,p=o.width/s.x,u=o.height/s.y;if(r){let d=A(r),f=i&&M(i)?A(i):i,h=d,m=et(h);for(;m&&i&&f!==h;){let g=le(m),y=m.getBoundingClientRect(),w=$(m),b=y.left+(m.clientLeft+parseFloat(w.paddingLeft))*g.x,x=y.top+(m.clientTop+parseFloat(w.paddingTop))*g.y;l*=g.x,c*=g.y,p*=g.x,u*=g.y,l+=b,c+=x,h=A(m),m=et(h)}}return G({width:p,height:u,x:l,y:c})}function tt(n,e){let t=Ee(n).scrollLeft;return e?e.left+t:Te(B(n)).left+t}function vn(n,e){let t=n.getBoundingClientRect(),i=t.left+e.scrollLeft-tt(n,t),o=t.top+e.scrollTop;return{x:i,y:o}}function zi(n){let{elements:e,rect:t,offsetParent:i,strategy:o}=n,r=o==="fixed",s=B(i),a=e?Se(e.floating):!1;if(i===s||a&&r)return t;let l={scrollLeft:0,scrollTop:0},c=_(1),p=_(0),u=O(i);if((u||!u&&!r)&&((J(i)!=="body"||ae(s))&&(l=Ee(i)),O(i))){let f=Te(i);c=le(i),p.x=f.x+i.clientLeft,p.y=f.y+i.clientTop}let d=s&&!u&&!r?vn(s,l):_(0);return{width:t.width*c.x,height:t.height*c.y,x:t.x*c.x-l.scrollLeft*c.x+p.x+d.x,y:t.y*c.y-l.scrollTop*c.y+p.y+d.y}}function Vi(n){return Array.from(n.getClientRects())}function ji(n){let e=B(n),t=Ee(n),i=n.ownerDocument.body,o=K(e.scrollWidth,e.clientWidth,i.scrollWidth,i.clientWidth),r=K(e.scrollHeight,e.clientHeight,i.scrollHeight,i.clientHeight),s=-t.scrollLeft+tt(n),a=-t.scrollTop;return $(i).direction==="rtl"&&(s+=K(e.clientWidth,i.clientWidth)-o),{width:o,height:r,x:s,y:a}}var un=25;function Ui(n,e){let t=A(n),i=B(n),o=t.visualViewport,r=i.clientWidth,s=i.clientHeight,a=0,l=0;if(o){r=o.width,s=o.height;let p=Je();(!p||p&&e==="fixed")&&(a=o.offsetLeft,l=o.offsetTop)}let c=tt(i);if(c<=0){let p=i.ownerDocument,u=p.body,d=getComputedStyle(u),f=p.compatMode==="CSS1Compat"&&parseFloat(d.marginLeft)+parseFloat(d.marginRight)||0,h=Math.abs(i.clientWidth-u.clientWidth-f);h<=un&&(r-=h)}else c<=un&&(r+=c);return{width:r,height:s,x:a,y:l}}var qi=new Set(["absolute","fixed"]);function Wi(n,e){let t=Te(n,!0,e==="fixed"),i=t.top+n.clientTop,o=t.left+n.clientLeft,r=O(n)?le(n):_(1),s=n.clientWidth*r.x,a=n.clientHeight*r.y,l=o*r.x,c=i*r.y;return{width:s,height:a,x:l,y:c}}function dn(n,e,t){let i;if(e==="viewport")i=Ui(n,t);else if(e==="document")i=ji(B(n));else if(M(e))i=Wi(e,t);else{let o=gn(n);i={x:e.x-o.x,y:e.y-o.y,width:e.width,height:e.height}}return G(i)}function yn(n,e){let t=V(n);return t===e||!M(t)||ee(t)?!1:$(t).position==="fixed"||yn(t,e)}function Ki(n,e){let t=e.get(n);if(t)return t;let i=Ze(n,[],!1).filter(a=>M(a)&&J(a)!=="body"),o=null,r=$(n).position==="fixed",s=r?V(n):n;for(;M(s)&&!ee(s);){let a=$(s),l=Ge(s);!l&&a.position==="fixed"&&(o=null),(r?!l&&!o:!l&&a.position==="static"&&!!o&&qi.has(o.position)||ae(s)&&!l&&yn(n,s))?i=i.filter(p=>p!==s):o=a,s=V(s)}return e.set(n,i),i}function Xi(n){let{element:e,boundary:t,rootBoundary:i,strategy:o}=n,s=[...t==="clippingAncestors"?Se(e)?[]:Ki(e,this._c):[].concat(t),i],a=s[0],l=s.reduce((c,p)=>{let u=dn(e,p,o);return c.top=K(u.top,c.top),c.right=be(u.right,c.right),c.bottom=be(u.bottom,c.bottom),c.left=K(u.left,c.left),c},dn(e,a,o));return{width:l.right-l.left,height:l.bottom-l.top,x:l.left,y:l.top}}function Yi(n){let{width:e,height:t}=fn(n);return{width:e,height:t}}function Zi(n,e,t){let i=O(e),o=B(e),r=t==="fixed",s=Te(n,!0,r,e),a={scrollLeft:0,scrollTop:0},l=_(0);function c(){l.x=tt(o)}if(i||!i&&!r)if((J(e)!=="body"||ae(o))&&(a=Ee(e)),i){let f=Te(e,!0,r,e);l.x=f.x+e.clientLeft,l.y=f.y+e.clientTop}else o&&c();r&&!i&&o&&c();let p=o&&!i&&!r?vn(o,a):_(0),u=s.left+a.scrollLeft-l.x-p.x,d=s.top+a.scrollTop-l.y-p.y;return{x:u,y:d,width:s.width,height:s.height}}function gt(n){return $(n).position==="static"}function hn(n,e){if(!O(n)||$(n).position==="fixed")return null;if(e)return e(n);let t=n.offsetParent;return B(n)===t&&(t=t.ownerDocument.body),t}function wn(n,e){let t=A(n);if(Se(n))return t;if(!O(n)){let o=V(n);for(;o&&!ee(o);){if(M(o)&&!gt(o))return o;o=V(o)}return t}let i=hn(n,e);for(;i&&ln(i)&&gt(i);)i=hn(i,e);return i&&ee(i)&&gt(i)&&!Ge(i)?t:i||cn(n)||t}var Qi=async function(n){let e=this.getOffsetParent||wn,t=this.getDimensions,i=await t(n.floating);return{reference:Zi(n.reference,await e(n.floating),n.strategy),floating:{x:0,y:0,width:i.width,height:i.height}}};function Gi(n){return $(n).direction==="rtl"}var Ji={convertOffsetParentRelativeRectToViewportRelativeRect:zi,getDocumentElement:B,getClippingRect:Xi,getOffsetParent:wn,getElementRects:Qi,getClientRects:Vi,getDimensions:Yi,getScale:le,isElement:M,isRTL:Gi};var bn=on;var xn=rn,kn=nn;var Ln=(n,e,t)=>{let i=new Map,o={platform:Ji,...t},r={...o.platform,_c:i};return tn(n,e,{...o,platform:r})};var nt=class{constructor(e){this.editor=e,this.tooltip=null,this.currentLink=null,this.hideTimeout=null,this.visibilityChangeHandler=null,this.isTooltipHovered=!1,this.linkCacheText=null,this.linkCache=[],this.init()}init(){this.createTooltip(),this.textareaListeners={selectionchange:()=>this.checkCursorPosition(),keyup:e=>{(e.key.includes("Arrow")||e.key==="Home"||e.key==="End")&&this.checkCursorPosition()},input:()=>this.hide(),scroll:()=>{this.currentLink&&this.positionTooltip(this.currentLink)},blur:()=>{this.isTooltipHovered||this.hide()}};for(let[e,t]of Object.entries(this.textareaListeners))this.editor.textarea.addEventListener(e,t);this.visibilityChangeHandler=()=>{document.hidden&&this.hide()},document.addEventListener("visibilitychange",this.visibilityChangeHandler),this.tooltip.addEventListener("mouseenter",()=>{this.isTooltipHovered=!0,this.cancelHide()}),this.tooltip.addEventListener("mouseleave",()=>{this.isTooltipHovered=!1,this.scheduleHide()})}createTooltip(){this.tooltip=document.createElement("div"),this.tooltip.className="overtype-link-tooltip",this.editor._markChrome(this.tooltip),this.tooltip.innerHTML=`
75
+ <span style="display: flex; align-items: center; gap: 6px;">
76
+ <svg width="12" height="12" viewBox="0 0 20 20" fill="currentColor" style="flex-shrink: 0;">
77
+ <path d="M11 3a1 1 0 100 2h2.586l-6.293 6.293a1 1 0 101.414 1.414L15 6.414V9a1 1 0 102 0V4a1 1 0 00-1-1h-5z"></path>
78
+ <path d="M5 5a2 2 0 00-2 2v8a2 2 0 002 2h8a2 2 0 002-2v-3a1 1 0 10-2 0v3H5V7h3a1 1 0 000-2H5z"></path>
79
+ </svg>
80
+ <span class="overtype-link-tooltip-url"></span>
81
+ </span>
82
+ `,this.tooltip.addEventListener("click",e=>{if(e.preventDefault(),e.stopPropagation(),this.currentLink){let t=T.sanitizeUrl(this.currentLink.url);t!=="#"&&window.open(t,"_blank"),this.hide()}}),this.editor.container.appendChild(this.tooltip)}checkCursorPosition(){let e=this.editor.textarea.selectionStart,t=this.editor.textarea.value,i=this.findLinkAtPosition(t,e);i?(!this.currentLink||this.currentLink.url!==i.url||this.currentLink.index!==i.index)&&this.show(i):this.scheduleHide()}findLinkAtPosition(e,t){if(this.editor.options.showActiveLineRaw)return null;this.linkCacheText!==e&&(this.linkCacheText=e,this.linkCache=T.findRenderableLinks(e));let i=this.linkCache;for(let[o,r]of i.entries()){let s=r.start,a=r.end;if(t>=s&&t<=a)return{text:r.text.raw,url:this.transformUrl(r.destination.value),index:o,start:s,end:a}}return null}transformUrl(e){let t=this.editor.options.transformLinkUrl;if(typeof t!="function")return e;try{let i=t(e);return typeof i=="string"?i:e}catch(i){return console.warn("transformLinkUrl threw:",i),e}}async show(e){this.currentLink=e,this.cancelHide();let t=this.tooltip.querySelector(".overtype-link-tooltip-url");t.textContent=e.url,await this.positionTooltip(e),this.currentLink===e&&this.tooltip.classList.add("visible")}async positionTooltip(e){let t=this.findAnchorElement(e.index);if(!t)return;let i=t.getBoundingClientRect();if(!(i.width===0||i.height===0))try{let{x:o,y:r}=await Ln(t,this.tooltip,{strategy:"fixed",placement:"bottom",middleware:[bn(8),xn({padding:8}),kn()]});Object.assign(this.tooltip.style,{left:`${o}px`,top:`${r}px`,position:"fixed"})}catch(o){console.warn("Floating UI positioning failed:",o)}}findAnchorElement(e){return this.editor.preview.querySelector(`a[style*="--link-${e}"]`)}hide(){this.tooltip.classList.remove("visible"),this.currentLink=null,this.isTooltipHovered=!1}scheduleHide(){this.cancelHide(),this.hideTimeout=setTimeout(()=>this.hide(),300)}cancelHide(){this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=null)}destroy(){if(this.cancelHide(),this.textareaListeners){for(let[e,t]of Object.entries(this.textareaListeners))this.editor.textarea.removeEventListener(e,t);this.textareaListeners=null}this.visibilityChangeHandler&&(document.removeEventListener("visibilitychange",this.visibilityChangeHandler),this.visibilityChangeHandler=null),this.tooltip&&this.tooltip.parentNode&&this.tooltip.parentNode.removeChild(this.tooltip),this.tooltip=null,this.currentLink=null,this.isTooltipHovered=!1}};var Sn='<svg viewBox="0 0 18 18"><path stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M5,4H9.5A2.5,2.5,0,0,1,12,6.5v0A2.5,2.5,0,0,1,9.5,9H5A0,0,0,0,1,5,9V4A0,0,0,0,1,5,4Z"></path><path stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M5,9h5.5A2.5,2.5,0,0,1,13,11.5v0A2.5,2.5,0,0,1,10.5,14H5a0,0,0,0,1,0,0V9A0,0,0,0,1,5,9Z"></path></svg>',En='<svg viewBox="0 0 18 18"><line stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" x1="7" x2="13" y1="4" y2="4"></line><line stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" x1="5" x2="11" y1="14" y2="14"></line><line stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" x1="8" x2="10" y1="14" y2="4"></line></svg>',Tn='<svg viewBox="0 0 18 18"><path fill="currentColor" d="M10,4V14a1,1,0,0,1-2,0V10H3v4a1,1,0,0,1-2,0V4A1,1,0,0,1,3,4V8H8V4a1,1,0,0,1,2,0Zm6.06787,9.209H14.98975V7.59863a.54085.54085,0,0,0-.605-.60547h-.62744a1.01119,1.01119,0,0,0-.748.29688L11.645,8.56641a.5435.5435,0,0,0-.022.8584l.28613.30762a.53861.53861,0,0,0,.84717.0332l.09912-.08789a1.2137,1.2137,0,0,0,.2417-.35254h.02246s-.01123.30859-.01123.60547V13.209H12.041a.54085.54085,0,0,0-.605.60547v.43945a.54085.54085,0,0,0,.605.60547h4.02686a.54085.54085,0,0,0,.605-.60547v-.43945A.54085.54085,0,0,0,16.06787,13.209Z"></path></svg>',Cn='<svg viewBox="0 0 18 18"><path fill="currentColor" d="M16.73975,13.81445v.43945a.54085.54085,0,0,1-.605.60547H11.855a.58392.58392,0,0,1-.64893-.60547V14.0127c0-2.90527,3.39941-3.42187,3.39941-4.55469a.77675.77675,0,0,0-.84717-.78125,1.17684,1.17684,0,0,0-.83594.38477c-.2749.26367-.561.374-.85791.13184l-.4292-.34082c-.30811-.24219-.38525-.51758-.1543-.81445a2.97155,2.97155,0,0,1,2.45361-1.17676,2.45393,2.45393,0,0,1,2.68408,2.40918c0,2.45312-3.1792,2.92676-3.27832,3.93848h2.79443A.54085.54085,0,0,1,16.73975,13.81445ZM9,3A.99974.99974,0,0,0,8,4V8H3V4A1,1,0,0,0,1,4V14a1,1,0,0,0,2,0V10H8v4a1,1,0,0,0,2,0V4A.99974.99974,0,0,0,9,3Z"></path></svg>',An='<svg viewBox="0 0 18 18"><path fill="currentColor" d="M16.65186,12.30664a2.6742,2.6742,0,0,1-2.915,2.68457,3.96592,3.96592,0,0,1-2.25537-.6709.56007.56007,0,0,1-.13232-.83594L11.64648,13c.209-.34082.48389-.36328.82471-.1543a2.32654,2.32654,0,0,0,1.12256.33008c.71484,0,1.12207-.35156,1.12207-.78125,0-.61523-.61621-.86816-1.46338-.86816H13.2085a.65159.65159,0,0,1-.68213-.41895l-.05518-.10937a.67114.67114,0,0,1,.14307-.78125l.71533-.86914a8.55289,8.55289,0,0,1,.68213-.7373V8.58887a3.93913,3.93913,0,0,1-.748.05469H11.9873a.54085.54085,0,0,1-.605-.60547V7.59863a.54085.54085,0,0,1,.605-.60547h3.75146a.53773.53773,0,0,1,.60547.59375v.17676a1.03723,1.03723,0,0,1-.27539.748L14.74854,10.0293A2.31132,2.31132,0,0,1,16.65186,12.30664ZM9,3A.99974.99974,0,0,0,8,4V8H3V4A1,1,0,0,0,1,4V14a1,1,0,0,0,2,0V10H8v4a1,1,0,0,0,2,0V4A.99974.99974,0,0,0,9,3Z"></path></svg>',In='<svg viewBox="0 0 18 18"><line stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" x1="7" x2="11" y1="7" y2="11"></line><path stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8.9,4.577a3.476,3.476,0,0,1,.36,4.679A3.476,3.476,0,0,1,4.577,8.9C3.185,7.5,2.035,6.4,4.217,4.217S7.5,3.185,8.9,4.577Z"></path><path stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M13.423,9.1a3.476,3.476,0,0,0-4.679-.36,3.476,3.476,0,0,0,.36,4.679c1.392,1.392,2.5,2.542,4.679.36S14.815,10.5,13.423,9.1Z"></path></svg>',Mn='<svg viewBox="0 0 18 18"><polyline stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" points="5 7 3 9 5 11"></polyline><polyline stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" points="13 7 15 9 13 11"></polyline><line stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" x1="10" x2="8" y1="5" y2="13"></line></svg>',$n='<svg viewBox="0 0 18 18"><line stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" x1="6" x2="15" y1="4" y2="4"></line><line stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" x1="6" x2="15" y1="9" y2="9"></line><line stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" x1="6" x2="15" y1="14" y2="14"></line><line stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" x1="3" x2="3" y1="4" y2="4"></line><line stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" x1="3" x2="3" y1="9" y2="9"></line><line stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" x1="3" x2="3" y1="14" y2="14"></line></svg>',Hn='<svg viewBox="0 0 18 18"><line stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" x1="7" x2="15" y1="4" y2="4"></line><line stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" x1="7" x2="15" y1="9" y2="9"></line><line stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" x1="7" x2="15" y1="14" y2="14"></line><line stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round" stroke-width="1" x1="2.5" x2="4.5" y1="5.5" y2="5.5"></line><path fill="currentColor" d="M3.5,6A0.5,0.5,0,0,1,3,5.5V3.085l-0.276.138A0.5,0.5,0,0,1,2.053,3c-0.124-.247-0.023-0.324.224-0.447l1-.5A0.5,0.5,0,0,1,4,2.5v3A0.5,0.5,0,0,1,3.5,6Z"></path><path stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round" stroke-width="1" d="M4.5,10.5h-2c0-.234,1.85-1.076,1.85-2.234A0.959,0.959,0,0,0,2.5,8.156"></path><path stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round" stroke-width="1" d="M2.5,14.846a0.959,0.959,0,0,0,1.85-.109A0.7,0.7,0,0,0,3.75,14a0.688,0.688,0,0,0,.6-0.736,0.959,0.959,0,0,0-1.85-.109"></path></svg>',_n='<svg viewBox="2 2 20 20"><path stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M10 10.8182L9 10.8182C8.80222 10.8182 8.60888 10.7649 8.44443 10.665C8.27998 10.5651 8.15181 10.4231 8.07612 10.257C8.00043 10.0909 7.98063 9.90808 8.01922 9.73174C8.0578 9.55539 8.15304 9.39341 8.29289 9.26627C8.43275 9.13913 8.61093 9.05255 8.80491 9.01747C8.99889 8.98239 9.19996 9.00039 9.38268 9.0692C9.56541 9.13801 9.72159 9.25453 9.83147 9.40403C9.94135 9.55353 10 9.72929 10 9.90909L10 12.1818C10 12.664 9.78929 13.1265 9.41421 13.4675C9.03914 13.8084 8.53043 14 8 14"></path><path stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M16 10.8182L15 10.8182C14.8022 10.8182 14.6089 10.7649 14.4444 10.665C14.28 10.5651 14.1518 10.4231 14.0761 10.257C14.0004 10.0909 13.9806 9.90808 14.0192 9.73174C14.0578 9.55539 14.153 9.39341 14.2929 9.26627C14.4327 9.13913 14.6109 9.05255 14.8049 9.01747C14.9989 8.98239 15.2 9.00039 15.3827 9.0692C15.5654 9.13801 15.7216 9.25453 15.8315 9.40403C15.9414 9.55353 16 9.72929 16 9.90909L16 12.1818C16 12.664 15.7893 13.1265 15.4142 13.4675C15.0391 13.8084 14.5304 14 14 14"></path></svg>',On='<svg viewBox="0 0 18 18"><line stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" x1="8" x2="16" y1="4" y2="4"></line><line stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" x1="8" x2="16" y1="9" y2="9"></line><line stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" x1="8" x2="16" y1="14" y2="14"></line><rect stroke="currentColor" fill="none" stroke-width="1.5" x="2" y="3" width="3" height="3" rx="0.5"></rect><rect stroke="currentColor" fill="none" stroke-width="1.5" x="2" y="13" width="3" height="3" rx="0.5"></rect><polyline stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.5" points="2.65 9.5 3.5 10.5 5 8.5"></polyline></svg>',Pn='<svg viewBox="0 0 18 18"><path stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M2.25 12.375v1.688A1.688 1.688 0 0 0 3.938 15.75h10.124a1.688 1.688 0 0 0 1.688-1.688V12.375"></path><path stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M5.063 6.188L9 2.25l3.938 3.938"></path><path stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 2.25v10.125"></path></svg>',Rn='<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M1 12s4-8 11-8 11 8 11 8-4 8-11 8-11-8-11-8z" fill="none"></path><circle cx="12" cy="12" r="3" fill="none"></circle></svg>';var S={bold:{name:"bold",actionId:"toggleBold",icon:Sn,title:"Bold (Ctrl+B)",isActive:({activeFormats:n})=>n.includes("bold"),action:({editor:n})=>{Be(n.textarea),n.textarea.dispatchEvent(new Event("input",{bubbles:!0}))}},italic:{name:"italic",actionId:"toggleItalic",icon:En,title:"Italic (Ctrl+I)",isActive:({activeFormats:n})=>n.includes("italic"),action:({editor:n})=>{De(n.textarea),n.textarea.dispatchEvent(new Event("input",{bubbles:!0}))}},code:{name:"code",actionId:"toggleCode",icon:Mn,title:"Inline Code",isActive:()=>!1,action:({editor:n})=>{Fe(n.textarea),n.textarea.dispatchEvent(new Event("input",{bubbles:!0}))}},separator:{name:"separator"},link:{name:"link",actionId:"insertLink",icon:In,title:"Insert Link",action:({editor:n})=>{Ne(n.textarea),n.textarea.dispatchEvent(new Event("input",{bubbles:!0}))}},h1:{name:"h1",actionId:"toggleH1",icon:Tn,title:"Heading 1",isActive:({activeFormats:n})=>n.includes("header"),action:({editor:n})=>{Ue(n.textarea),n.textarea.dispatchEvent(new Event("input",{bubbles:!0}))}},h2:{name:"h2",actionId:"toggleH2",icon:Cn,title:"Heading 2",isActive:({activeFormats:n})=>n.includes("header-2"),action:({editor:n})=>{qe(n.textarea),n.textarea.dispatchEvent(new Event("input",{bubbles:!0}))}},h3:{name:"h3",actionId:"toggleH3",icon:An,title:"Heading 3",isActive:({activeFormats:n})=>n.includes("header-3"),action:({editor:n})=>{We(n.textarea),n.textarea.dispatchEvent(new Event("input",{bubbles:!0}))}},bulletList:{name:"bulletList",actionId:"toggleBulletList",icon:$n,title:"Bullet List",isActive:({activeFormats:n})=>n.includes("bullet-list"),action:({editor:n})=>{ze(n.textarea),n.textarea.dispatchEvent(new Event("input",{bubbles:!0}))}},orderedList:{name:"orderedList",actionId:"toggleNumberedList",icon:Hn,title:"Numbered List",isActive:({activeFormats:n})=>n.includes("numbered-list"),action:({editor:n})=>{Ve(n.textarea),n.textarea.dispatchEvent(new Event("input",{bubbles:!0}))}},taskList:{name:"taskList",actionId:"toggleTaskList",icon:On,title:"Task List",isActive:({activeFormats:n})=>n.includes("task-list"),action:({editor:n})=>{ve&&(ve(n.textarea),n.textarea.dispatchEvent(new Event("input",{bubbles:!0})))}},quote:{name:"quote",actionId:"toggleQuote",icon:_n,title:"Quote",isActive:({activeFormats:n})=>n.includes("quote"),action:({editor:n})=>{je(n.textarea),n.textarea.dispatchEvent(new Event("input",{bubbles:!0}))}},upload:{name:"upload",actionId:"uploadFile",icon:Pn,title:"Upload File",action:({editor:n})=>{var t,i;if(!((t=n.options.fileUpload)!=null&&t.enabled))return;let e=document.createElement("input");e.type="file",e.multiple=!0,((i=n.options.fileUpload.mimeTypes)==null?void 0:i.length)>0&&(e.accept=n.options.fileUpload.mimeTypes.join(",")),e.onchange=()=>{var r;if(!((r=e.files)!=null&&r.length))return;let o=new DataTransfer;for(let s of e.files)o.items.add(s);n._handleDataTransfer(o)},e.click()}},viewMode:{name:"viewMode",icon:Rn,title:"View mode"}},ce=[S.bold,S.italic,S.code,S.separator,S.link,S.separator,S.h1,S.h2,S.h3,S.separator,S.bulletList,S.orderedList,S.taskList,S.separator,S.quote,S.separator,S.viewMode];var Ce;function to(){if(Ce!==void 0)return Ce;if(Ce=!1,typeof navigator<"u"){let n=navigator.userAgent||"";Ce=/^((?!chrome|android|crios|fxios|edg|opr).)*safari/i.test(n)||/iPad|iPhone|iPod/.test(n)||navigator.platform==="MacIntel"&&navigator.maxTouchPoints>1&&/Safari/.test(n)}return Ce}function vt(n){let e={};return(n||[]).forEach(t=>{if(!t||t.name==="separator")return;let i=t.actionId||t.name;t.action&&(e[i]=t.action)}),e}function Bn(n){let e=n||ce;return Array.isArray(e)?e.map(t=>({name:(t==null?void 0:t.name)||null,actionId:(t==null?void 0:t.actionId)||(t==null?void 0:t.name)||null,icon:(t==null?void 0:t.icon)||null,title:(t==null?void 0:t.title)||null})):null}function no(n,e){let t=Bn(n),i=Bn(e);if(t===null||i===null)return t!==i;if(t.length!==i.length)return!0;for(let o=0;o<t.length;o++){let r=t[o],s=i[o];if(r.name!==s.name||r.actionId!==s.actionId||r.icon!==s.icon||r.title!==s.title)return!0}return!1}var v=class v{constructor(e,t={}){let i=v._resolveTargets(e);if(typeof e=="string"&&i.length===0)throw new Error(`No elements found for selector: ${e}`);return i.map(r=>{if(r.overTypeInstance)return r.overTypeInstance.reinit(t),r.overTypeInstance;let s=Object.create(v.prototype);return s._init(r,t),r.overTypeInstance=s,v.instances.set(r,s),s})}_init(e,t={}){var r;this.element=e,this.instanceTheme=t.theme||null,this.options=this._mergeOptions(t),this.instanceId=++v.instanceCount,this.initialized=!1,this._isSafari=to(),this._safariReflowRaf=null,this.options.persist&&!v.stylesChrome&&(v.stylesChrome=!0,(r=document.querySelector("style.overtype-styles"))==null||r.setAttribute("clay","editor-ui")),v.injectStyles(),v.initGlobalListeners();let i=e.querySelector(".overtype-container"),o=e.querySelector(".overtype-wrapper");i||o?this._recoverFromDOM(i,o):this._buildFromScratch(),this.instanceTheme==="auto"&&this.setTheme("auto"),this.shortcuts=new fe(this),this._rebuildActionsMap(),this.linkTooltip=new nt(this),requestAnimationFrame(()=>{requestAnimationFrame(()=>{this.textarea.scrollTop=this.preview.scrollTop,this.textarea.scrollLeft=this.preview.scrollLeft})}),this.initialized=!0,this.options.onChange&&this._notifyChange()}_mergeOptions(e){let t={fontSize:"14px",lineHeight:1.6,fontFamily:'"SF Mono", SFMono-Regular, Menlo, Monaco, "Cascadia Code", Consolas, "Roboto Mono", "Noto Sans Mono", "Droid Sans Mono", "Ubuntu Mono", "DejaVu Sans Mono", "Liberation Mono", "Courier New", Courier, monospace',padding:"16px",mobile:{fontSize:"16px",padding:"12px",lineHeight:1.5},textareaProps:{},autofocus:!1,autoResize:!1,minHeight:"100px",maxHeight:null,placeholder:"Start typing...",value:"",onChange:null,onKeydown:null,onRender:null,onFocus:null,onBlur:null,showActiveLineRaw:!1,showStats:!1,toolbar:!1,toolbarButtons:null,statsFormatter:null,smartLists:!0,clickToToggleTasks:!1,codeHighlighter:null,spellcheck:!1,persist:!1,transformLinkUrl:null},{theme:i,colors:o,...r}=e;return{...t,...r}}_recoverFromDOM(e,t){let i=this._extractContent();if(e&&e.classList.contains("overtype-container"))this.container=e,this.wrapper=e.querySelector(".overtype-wrapper");else if(t){if(this.wrapper=t,this.container=document.createElement("div"),this.container.className="overtype-container",this.instanceTheme){let s=typeof this.instanceTheme=="string"?W(this.instanceTheme):this.instanceTheme;s&&s.colors&&(this.container.style.cssText+=Q(s.colors))}t.parentNode.insertBefore(this.container,t),this.container.appendChild(t)}if(this.textarea=this.wrapper?this.wrapper.querySelector(".overtype-input"):null,!this.textarea){e&&e.remove(),t&&t.remove(),this._buildFromScratch(i);return}let o=this.instanceTheme||v.currentTheme||D,r=typeof o=="string"?o:o.name;r&&this.container.setAttribute("data-theme",r),this.container.querySelectorAll(".overtype-toolbar, .overtype-link-tooltip, .overtype-stats, .overtype-placeholder, .overtype-preview").forEach(s=>s.remove()),this.container.classList.remove("overtype-auto-resize"),[this.wrapper,this.textarea].forEach(s=>{s.style.removeProperty("height"),s.style.removeProperty("overflow-y")}),this._createOverlay(),this.options.showStats&&this._createStatsBar(),this.wrapper._instance=this,this._applyInstanceCSSVars(),this._configureTextarea(),this._ensureTextareaId(),this._syncPreviewInteractivity(),this._applyOptions()}_buildFromScratch(e=this._extractContent()){this.element.innerHTML="",this._createDOM(),(e||this.options.value)&&this.setValue(e||this.options.value),this._applyOptions()}_extractContent(){let e=this.element.querySelector(".overtype-input");return e?e.value:this.element.textContent||""}_createDOM(){this.container=document.createElement("div"),this.container.className="overtype-container";let e=this.instanceTheme||v.currentTheme||D,t=typeof e=="string"?e:e.name;if(t&&this.container.setAttribute("data-theme",t),this.instanceTheme){let i=typeof this.instanceTheme=="string"?W(this.instanceTheme):this.instanceTheme;if(i&&i.colors){let o=Q(i.colors);this.container.style.cssText+=o}}this.wrapper=document.createElement("div"),this.wrapper.className="overtype-wrapper",this._applyInstanceCSSVars(),this.wrapper._instance=this,this.textarea=document.createElement("textarea"),this.textarea.className="overtype-input",this.textarea.placeholder=this.options.placeholder,this._configureTextarea(),this.options.textareaProps&&Object.entries(this.options.textareaProps).forEach(([i,o])=>{i==="className"||i==="class"?this.textarea.className+=" "+o:i==="style"&&typeof o=="object"?Object.assign(this.textarea.style,o):this.textarea.setAttribute(i,o)}),this._ensureTextareaId(),this.wrapper.appendChild(this.textarea),this._createOverlay(),this.container.appendChild(this.wrapper),this.options.showStats&&this._createStatsBar(),this.element.appendChild(this.container),this.options.autoResize?this._setupAutoResize():this.container.classList.remove("overtype-auto-resize"),this._syncPreviewInteractivity()}_createOverlay(){this.preview=document.createElement("div"),this.preview.className="overtype-preview",this.preview.setAttribute("aria-hidden","true"),this.placeholderEl=document.createElement("div"),this.placeholderEl.className="overtype-placeholder",this.placeholderEl.setAttribute("aria-hidden","true"),this.placeholderEl.textContent=this.options.placeholder,this.wrapper.appendChild(this.preview),this.wrapper.appendChild(this.placeholderEl),this._markChrome(this.preview),this._markChrome(this.placeholderEl)}_createStatsBar(){this.statsBar=document.createElement("div"),this.statsBar.className="overtype-stats",this._markChrome(this.statsBar),this.container.appendChild(this.statsBar),this._updateStats()}_markChrome(e){this.options.persist&&e&&e.setAttribute("clay","editor-ui")}_configureTextarea(){this.textarea.setAttribute("autocomplete","off"),this.textarea.setAttribute("autocorrect","off"),this.textarea.setAttribute("autocapitalize","off"),this.textarea.setAttribute("spellcheck",String(this.options.spellcheck)),this.textarea.setAttribute("data-gramm","false"),this.textarea.setAttribute("data-gramm_editor","false"),this.textarea.setAttribute("data-enable-grammarly","false"),this.options.persist&&this.textarea.setAttribute("persist","")}_ensureTextareaId(){let e=this.textarea.id,t=/^overtype-\d+-input$/.test(e);if(e&&!(t&&document.querySelectorAll(`[id="${e}"]`).length>1))return;let i=this.instanceId;for(;document.getElementById(`overtype-${i}-input`);)i++;this.textarea.id=`overtype-${i}-input`}_syncPreviewInteractivity(){if(!this.preview||!this.container)return;let e=this.container.dataset.mode==="preview";if(this.preview.inert=!e,this.preview.toggleAttribute("inert",!e),e){this.preview.removeAttribute("aria-hidden");return}this.preview.setAttribute("aria-hidden","true")}_createToolbar(){var t;let e=this.options.toolbarButtons||ce;if((t=this.options.fileUpload)!=null&&t.enabled&&!e.some(i=>(i==null?void 0:i.name)==="upload")){let i=e.findIndex(o=>(o==null?void 0:o.name)==="viewMode");i!==-1?(e=[...e],e.splice(i,0,S.separator,S.upload)):e=[...e,S.separator,S.upload]}this.toolbar=new Xe(this,{toolbarButtons:e}),this.toolbar.create(),this._toolbarSelectionListener=()=>{this.toolbar&&this.toolbar.updateButtonStates()},this._toolbarInputListener=()=>{this.toolbar&&this.toolbar.updateButtonStates()},this.textarea.addEventListener("selectionchange",this._toolbarSelectionListener),this.textarea.addEventListener("input",this._toolbarInputListener)}_cleanupToolbarListeners(){this._toolbarSelectionListener&&(this.textarea.removeEventListener("selectionchange",this._toolbarSelectionListener),this._toolbarSelectionListener=null),this._toolbarInputListener&&(this.textarea.removeEventListener("input",this._toolbarInputListener),this._toolbarInputListener=null)}_rebuildActionsMap(){var e;this.actionsById=vt(ce),this.options.toolbarButtons&&Object.assign(this.actionsById,vt(this.options.toolbarButtons)),(e=this.options.fileUpload)!=null&&e.enabled&&Object.assign(this.actionsById,vt([S.upload]))}_applyInstanceCSSVars(){if(!this.wrapper)return;let e=[["--instance-font-size",this.options.fontSize,F.fontSize],["--instance-line-height",this.options.lineHeight,F.lineHeight],["--instance-padding",this.options.padding,F.padding],["--instance-font-family",this.options.fontFamily,F.fontFamily]];for(let[t,i,o]of e)i&&String(i)!==String(o)?this.wrapper.style.setProperty(t,String(i)):this.wrapper.style.removeProperty(t)}_applyOptions(){this._applyInstanceCSSVars(),this.options.autofocus&&this.textarea.focus(),this.options.autoResize?this.container.classList.contains("overtype-auto-resize")?this._updateAutoHeight():this._setupAutoResize():this.container.classList.remove("overtype-auto-resize"),this.options.toolbar&&!this.toolbar?this._createToolbar():!this.options.toolbar&&this.toolbar&&(this._cleanupToolbarListeners(),this.toolbar.destroy(),this.toolbar=null),this.placeholderEl&&(this.placeholderEl.textContent=this.options.placeholder),this.options.fileUpload&&!this.fileUploadInitialized?this._initFileUpload():!this.options.fileUpload&&this.fileUploadInitialized&&this._destroyFileUpload(),this.updatePreview()}_initFileUpload(){let e=this.options.fileUpload;if(!(!e||!e.enabled)){if(e.maxSize=e.maxSize||10*1024*1024,e.mimeTypes=e.mimeTypes||[],e.batch=e.batch||!1,!e.onInsertFile||typeof e.onInsertFile!="function"){console.warn("OverType: fileUpload.onInsertFile callback is required for file uploads.");return}this._fileUploadCounter=0,this._uploadedFiles=new Map,this._boundHandleFilePaste=this._handleFilePaste.bind(this),this._boundHandleFileDrop=this._handleFileDrop.bind(this),this._boundHandleDragOver=this._handleDragOver.bind(this),this.textarea.addEventListener("paste",this._boundHandleFilePaste),this.textarea.addEventListener("drop",this._boundHandleFileDrop),this.textarea.addEventListener("dragover",this._boundHandleDragOver),this.fileUploadInitialized=!0}}_extractMarkdownUrls(e){return T.findLinks(e,{allowEmptyText:!0}).map(t=>t.destination.value)}_trackInsertedUrls(e,t){if(!this._uploadedFiles||!t||!e)return;let i=T.findLinks(e,{allowEmptyText:!0});for(let o of i)this._uploadedFiles.set(o.destination.value,{filename:t.name,file:t,markdownDestination:o.destination.raw})}_checkForRemovedUploads(){var r;if(!this._uploadedFiles||this._uploadedFiles.size===0)return;let e=(r=this.options.fileUpload)==null?void 0:r.onRemoveFile,t=this.textarea.value,i=new Set(this._extractMarkdownUrls(this.textarea.value)),o=[];for(let[s,a]of this._uploadedFiles){let l=a.markdownDestination||s;!i.has(s)&&!t.includes(l)&&o.push({url:s,info:a})}for(let{url:s,info:a}of o)this._uploadedFiles.delete(s),e&&e({url:s,filename:a.filename,file:a.file})}_handleFilePaste(e){var t,i;(i=(t=e==null?void 0:e.clipboardData)==null?void 0:t.files)!=null&&i.length&&(e.preventDefault(),this._handleDataTransfer(e.clipboardData))}_handleFileDrop(e){var t,i;(i=(t=e==null?void 0:e.dataTransfer)==null?void 0:t.files)!=null&&i.length&&(e.preventDefault(),this._handleDataTransfer(e.dataTransfer))}_handleDataTransfer(e){let t=[];for(let i of e.files){if(i.size>this.options.fileUpload.maxSize||this.options.fileUpload.mimeTypes.length>0&&!this.options.fileUpload.mimeTypes.includes(i.type))continue;let o=++this._fileUploadCounter,s=`${i.type.startsWith("image/")?"!":""}[Uploading ${i.name} (#${o})...]()`;if(this.insertAtCursor(`${s}
83
+ `),this.options.fileUpload.batch){t.push({file:i,placeholder:s});continue}this.options.fileUpload.onInsertFile(i).then(a=>{this.textarea.value=this.textarea.value.replace(s,a),this._trackInsertedUrls(a,i),this.textarea.dispatchEvent(new Event("input",{bubbles:!0}))},a=>{console.error("OverType: File upload failed",a),this.textarea.value=this.textarea.value.replace(s,"[Upload failed]()"),this.textarea.dispatchEvent(new Event("input",{bubbles:!0}))})}this.options.fileUpload.batch&&t.length>0&&this.options.fileUpload.onInsertFile(t.map(i=>i.file)).then(i=>{(Array.isArray(i)?i:[i]).forEach((r,s)=>{this.textarea.value=this.textarea.value.replace(t[s].placeholder,r),this._trackInsertedUrls(r,t[s].file)}),this.textarea.dispatchEvent(new Event("input",{bubbles:!0}))},i=>{console.error("OverType: File upload failed",i),t.forEach(({placeholder:o})=>{this.textarea.value=this.textarea.value.replace(o,"[Upload failed]()")}),this.textarea.dispatchEvent(new Event("input",{bubbles:!0}))})}_handleDragOver(e){e.preventDefault()}_destroyFileUpload(){this.textarea.removeEventListener("paste",this._boundHandleFilePaste),this.textarea.removeEventListener("drop",this._boundHandleFileDrop),this.textarea.removeEventListener("dragover",this._boundHandleDragOver),this._boundHandleFilePaste=null,this._boundHandleFileDrop=null,this._boundHandleDragOver=null,this._uploadedFiles=null,this.fileUploadInitialized=!1}_handleTaskClick(e){if(!this.options.clickToToggleTasks||e.button!==0||!this._canEditTextarea()||this.container.dataset.mode==="preview")return;let t=[...this.preview.querySelectorAll("li.task-list, div.raw-line")].filter(s=>s.matches("li.task-list")||/^ *-\s+\[[ xX]\](?:\s|$)/.test(s.textContent)),i=0,o=0,r=null;for(let s of this.textarea.value.split(`
84
+ `)){if(r){ie(s,r)&&(r=null),o+=s.length+1;continue}if(r=q(s),r){o+=s.length+1;continue}let a=/^( *-\s+\[)([ xX])\](?:\s|$)/.exec(s);if(!a||!T.parseLine(s).includes('<li class="task-list">')){o+=s.length+1;continue}let l=t[i++],c=l!=null&&l.matches("li.task-list")?l.querySelector(":scope > .syntax-marker"):l,p=c==null?void 0:c.firstChild;if((p==null?void 0:p.nodeType)===3){let u=p.textContent.indexOf("[")+1;if(!/^\[[ xX]\]$/.test(p.textContent.slice(u-1,u+2))){o+=s.length+1;continue}let d=document.createRange();if(d.setStart(p,u-1),d.setEnd(p,u+2),[...d.getClientRects()].some(h=>e.clientX>=h.left&&e.clientX<h.right&&e.clientY>=h.top&&e.clientY<h.bottom)){let h=this.textarea,m=h.selectionStart,g=h.selectionEnd,y=h.selectionDirection,w=o+a[1].length;h.focus(),h.setSelectionRange(w,w+1);let b=a[2]===" "?"x":" ",x=!1,k=()=>{x=!0};h.addEventListener("input",k);let E=!1;try{E=document.execCommand("insertText",!1,b)}catch(pe){}finally{h.removeEventListener("input",k)}E||h.setRangeText(b,w,w+1,"preserve"),x||h.dispatchEvent(new Event("input",{bubbles:!0})),h.setSelectionRange(m,g,y);return}}o+=s.length+1}}insertAtCursor(e){let t=this.textarea.selectionStart,i=this.textarea.selectionEnd,o=!1;try{o=document.execCommand("insertText",!1,e)}catch(r){}if(!o){let r=this.textarea.value.slice(0,t),s=this.textarea.value.slice(i);this.textarea.value=r+e+s,this.textarea.setSelectionRange(t+e.length,t+e.length)}this.textarea.dispatchEvent(new Event("input",{bubbles:!0}))}updatePreview(){let e=this.textarea.value,t=this.textarea.selectionStart,i=this._getCurrentLine(e,t),o=this.container.dataset.mode==="preview",r=T.parse(e,i,this.options.showActiveLineRaw,this.options.codeHighlighter,o);this.preview.innerHTML=r,this.placeholderEl&&(this.placeholderEl.style.display=e?"none":""),this._applyCodeBlockBackgrounds(),this.options.showStats&&this.statsBar&&this._updateStats(),this.options.onRender&&this.options.onRender(this.preview,o?"preview":"normal",this)}_notifyChange(){this.initialized&&(this._checkForRemovedUploads(),this.options.onChange&&this.options.onChange(this.textarea.value,this))}_applyCodeBlockBackgrounds(){let e=this.preview.querySelectorAll(".code-fence");for(let t=0;t<e.length-1;t+=2){let i=e[t],o=e[t+1],r=i.parentElement,s=o.parentElement;!r||!s||(i.style.display="block",o.style.display="block",r.classList.add("code-block-line"),s.classList.add("code-block-line"))}}_getCurrentLine(e,t){return e.substring(0,t).split(`
85
+ `).length-1}handleInput(e){this.updatePreview(),this._notifyChange(),this._scheduleSafariReflow()}_scheduleSafariReflow(){!this._isSafari||this._safariReflowRaf||(this._safariReflowRaf=requestAnimationFrame(()=>{this._safariReflowRaf=null;let e=this.textarea;e&&(e.style.setProperty("letter-spacing","-0.001px","important"),e.offsetHeight,e.style.removeProperty("letter-spacing"))}))}handleFocus(e){this.options.onFocus&&this.options.onFocus(e,this)}handleBlur(e){this.options.onBlur&&this.options.onBlur(e,this)}handleKeydown(e){if(e.key==="Tab"){let i=this.textarea.selectionStart,o=this.textarea.selectionEnd;if(i!==o&&this._canEditTextarea()){e.preventDefault(),e.shiftKey?this.outdentSelection():this.indentSelection();return}}if(e.key==="Enter"&&!e.shiftKey&&!e.metaKey&&!e.ctrlKey&&this.options.smartLists&&this.handleSmartListContinuation()){e.preventDefault();return}!this.shortcuts.handleKeydown(e)&&this.options.onKeydown&&this.options.onKeydown(e,this)}handleSmartListContinuation(){let e=this.textarea,t=e.selectionStart,i=T.getListContext(e.value,t);return!i||!i.inList?!1:i.content.trim()===""&&t>=i.markerEndPos?(this.deleteListMarker(i),!0):(t>i.markerEndPos&&t<i.lineEnd?this.splitListItem(i,t):this.insertNewListItem(i),i.listType==="numbered"&&this.scheduleNumberedListUpdate(),!0)}deleteListMarker(e){this.textarea.setSelectionRange(e.lineStart,e.markerEndPos),document.execCommand("delete"),this.textarea.dispatchEvent(new Event("input",{bubbles:!0}))}insertNewListItem(e){let t=T.createNewListItem(e);document.execCommand("insertText",!1,`
86
+ `+t),this.textarea.dispatchEvent(new Event("input",{bubbles:!0}))}splitListItem(e,t){let i=e.content.substring(t-e.markerEndPos);this.textarea.setSelectionRange(t,e.lineEnd),document.execCommand("delete");let o=T.createNewListItem(e);document.execCommand("insertText",!1,`
87
+ `+o+i);let r=this.textarea.selectionStart-i.length;this.textarea.setSelectionRange(r,r),this.textarea.dispatchEvent(new Event("input",{bubbles:!0}))}scheduleNumberedListUpdate(){this.numberUpdateTimeout&&clearTimeout(this.numberUpdateTimeout),this.numberUpdateTimeout=setTimeout(()=>{this.updateNumberedLists()},10)}updateNumberedLists(){let e=this.textarea.value,t=this.textarea.selectionStart,i=T.renumberLists(e);if(i!==e){let o=0,r=e.split(`
88
+ `),s=i.split(`
89
+ `),a=0;for(let c=0;c<r.length&&a<t;c++){if(r[c]!==s[c]){let p=s[c].length-r[c].length;a+r[c].length<t&&(o+=p)}a+=r[c].length+1}this.textarea.value=i;let l=t+o;this.textarea.setSelectionRange(l,l),this.textarea.dispatchEvent(new Event("input",{bubbles:!0}))}}handleScroll(e){this.preview.scrollTop=this.textarea.scrollTop,this.preview.scrollLeft=this.textarea.scrollLeft}getValue(){return this.textarea.value}setValue(e){let t=this.textarea.value!==e;this.textarea.value=e,this.updatePreview(),this.options.autoResize&&this._updateAutoHeight(),t&&(this._notifyChange(),this._scheduleSafariReflow())}async performAction(e,t=null){var r;let i=this.textarea;if(!i)return!1;let o=(r=this.actionsById)==null?void 0:r[e];if(!o)return console.warn(`OverType: Unknown action "${e}"`),!1;i.focus();try{return await o({editor:this,getValue:()=>this.getValue(),setValue:s=>this.setValue(s),event:t}),!0}catch(s){return console.error(`OverType: Action "${e}" error:`,s),this.wrapper.dispatchEvent(new CustomEvent("button-error",{detail:{actionId:e,error:s}})),!1}}getRenderedHTML(e={}){let t=this.getValue(),i=T.parse(t,-1,!1,this.options.codeHighlighter);return e.cleanHTML&&(i=i.replace(/<span class="syntax-marker[^"]*">.*?<\/span>/g,""),i=i.replace(/\sclass="(bullet-list|ordered-list|code-fence|hr-marker|blockquote|url-part)"/g,""),i=i.replace(/\sclass=""/g,"")),i}getPreviewHTML(){return this.preview.innerHTML}indentSelection(){this._replaceSelectedLines(e=>` ${e}`)}outdentSelection(){this._replaceSelectedLines(e=>e.replace(/^( {1,2}|\t)/,""))}_replaceSelectedLines(e){if(!this._canEditTextarea())return!1;let t=this.textarea,{selectionStart:i,selectionEnd:o,value:r}=t,s=r.lastIndexOf(`
90
+ `,i-1)+1,a=this._effectiveSelectionEnd(r,i,o),l=r.indexOf(`
91
+ `,a),c=l===-1?r.length:l,p=r.slice(s,c),u=p.split(`
92
+ `).map(e).join(`
93
+ `);if(u===p)return!1;t.setSelectionRange(s,c);let d=!1;try{d=document.execCommand("insertText",!1,u)}catch(f){}return d||t.setRangeText(u,s,c,"preserve"),t.setSelectionRange(s,s+u.length),t.dispatchEvent(new Event("input",{bubbles:!0})),!0}_effectiveSelectionEnd(e,t,i){return i>t&&e[i-1]===`
94
+ `?i-1:i}_canEditTextarea(){return this.textarea&&!this.textarea.disabled&&!this.textarea.readOnly}getCleanHTML(){return this.getRenderedHTML({cleanHTML:!0})}focus(){this.textarea.focus()}blur(){this.textarea.blur()}isInitialized(){return this.initialized}reinit(e={}){var o;let t=(o=this.options)==null?void 0:o.toolbarButtons;this.options=this._mergeOptions({...this.options,...e});let i=this.toolbar&&this.options.toolbar&&no(t,this.options.toolbarButtons);this._rebuildActionsMap(),i&&(this._cleanupToolbarListeners(),this.toolbar.destroy(),this.toolbar=null,this._createToolbar()),this.fileUploadInitialized&&this._destroyFileUpload(),this.options.fileUpload&&this._initFileUpload(),this._applyOptions(),this.updatePreview()}showToolbar(){this.toolbar?this.toolbar.show():this._createToolbar()}hideToolbar(){this.toolbar&&this.toolbar.hide()}setTheme(e){if(v._autoInstances.delete(this),this.instanceTheme=e,e==="auto")v._autoInstances.add(this),v._startAutoListener(),this._applyResolvedTheme(at("auto"));else{let t=typeof e=="string"?W(e):e,i=typeof t=="string"?t:t.name;if(i&&this.container.setAttribute("data-theme",i),t&&t.colors){let o=Q(t.colors,t.previewColors);this.container.style.cssText+=o}this.updatePreview()}return v._stopAutoListener(),this}_applyResolvedTheme(e){let t=W(e);this.container.setAttribute("data-theme",e),t&&t.colors&&(this.container.style.cssText=Q(t.colors,t.previewColors)),this.updatePreview()}setCodeHighlighter(e){this.options.codeHighlighter=e,this.updatePreview()}_updateStats(){if(!this.statsBar)return;let e=this.textarea.value,t=e.split(`
95
+ `),i=e.length,o=e.split(/\s+/).filter(p=>p.length>0).length,r=this.textarea.selectionStart,a=e.substring(0,r).split(`
96
+ `),l=a.length,c=a[a.length-1].length+1;this.options.statsFormatter?this.statsBar.innerHTML=this.options.statsFormatter({chars:i,words:o,lines:t.length,line:l,column:c}):this.statsBar.innerHTML=`
97
+ <div class="overtype-stat">
98
+ <span class="live-dot"></span>
99
+ <span>${i} chars, ${o} words, ${t.length} lines</span>
100
+ </div>
101
+ <div class="overtype-stat">Line ${l}, Col ${c}</div>
102
+ `}_setupAutoResize(){this.container.classList.add("overtype-auto-resize"),this.previousHeight=null,this._updateAutoHeight(),this._autoResizeHandler||(this._autoResizeHandler=()=>this._updateAutoHeight(),this.textarea.addEventListener("input",this._autoResizeHandler),window.addEventListener("resize",this._autoResizeHandler))}_updateAutoHeight(){if(!this.options.autoResize)return;let e=this.textarea,t=this.preview,i=this.wrapper;if(this.container.dataset.mode==="preview"){i.style.removeProperty("height"),t.style.removeProperty("height"),t.style.removeProperty("overflow-y"),e.style.removeProperty("height"),e.style.removeProperty("overflow-y");return}let r=e.scrollTop;i.style.setProperty("height","auto","important"),e.style.setProperty("height","auto","important");let s=e.scrollHeight;if(this.options.minHeight){let c=parseInt(this.options.minHeight);s=Math.max(s,c)}let a="hidden";if(this.options.maxHeight){let c=parseInt(this.options.maxHeight);s>c&&(s=c,a="auto")}let l=s+"px";e.style.setProperty("height",l,"important"),e.style.setProperty("overflow-y",a,"important"),t.style.setProperty("height",l,"important"),t.style.setProperty("overflow-y",a,"important"),i.style.setProperty("height",l,"important"),e.scrollTop=r,t.scrollTop=r,this.previousHeight!==s&&(this.previousHeight=s)}showStats(e){this.options.showStats=e,e&&!this.statsBar?this._createStatsBar():e&&this.statsBar?this._updateStats():!e&&this.statsBar&&(this.statsBar.remove(),this.statsBar=null)}showNormalEditMode(){return this.container.dataset.mode="normal",this._syncPreviewInteractivity(),this.updatePreview(),this._updateAutoHeight(),requestAnimationFrame(()=>{this.textarea.scrollTop=this.preview.scrollTop,this.textarea.scrollLeft=this.preview.scrollLeft}),this}showPlainTextarea(){if(this.container.dataset.mode="plain",this._syncPreviewInteractivity(),this._updateAutoHeight(),this.toolbar){let e=this.container.querySelector('[data-action="toggle-plain"]');e&&(e.classList.remove("active"),e.title="Show markdown preview")}return this}showPreviewMode(){return this.container.dataset.mode="preview",this._syncPreviewInteractivity(),this.updatePreview(),this._updateAutoHeight(),this}destroy(){if(v._autoInstances.delete(this),v._stopAutoListener(),this.fileUploadInitialized&&this._destroyFileUpload(),this.element.overTypeInstance=null,v.instances.delete(this.element),this.shortcuts&&this.shortcuts.destroy(),this._safariReflowRaf&&(cancelAnimationFrame(this._safariReflowRaf),this._safariReflowRaf=null),this.linkTooltip&&(this.linkTooltip.destroy(),this.linkTooltip=null),this.toolbar&&(this._cleanupToolbarListeners(),this.toolbar.destroy(),this.toolbar=null),this._autoResizeHandler&&(this.textarea.removeEventListener("input",this._autoResizeHandler),window.removeEventListener("resize",this._autoResizeHandler),this._autoResizeHandler=null),this.wrapper)if(this.options.persist)[this.preview,this.placeholderEl,this.statsBar].forEach(e=>e==null?void 0:e.remove()),this.statsBar=null,this.wrapper._instance=null;else{let e=this.getValue();this.wrapper.remove(),this.element.textContent=e}this.initialized=!1}static init(e,t={}){return new v(e,t)}static initFromData(e,t={}){return v._resolveTargets(e).map(o=>{let r={...t};for(let s of o.attributes){if(!s.name.startsWith("data-ot-"))continue;let a=s.name.slice(8);if(a.startsWith("textarea-")&&a!=="textarea-props"){let c=a.slice(9).replace(/-([a-z])/g,(p,u)=>u.toUpperCase());r.textareaProps={...r.textareaProps||{},[c]:v._parseDataValue(s.value)};continue}let l=a.replace(/-([a-z])/g,(c,p)=>p.toUpperCase());r[l]=v._parseDataValue(s.value)}return new v(o,r)[0]})}static _resolveTargets(e){if(e==null)throw new Error("Invalid target: must be selector string, Element, NodeList, or Array");if(typeof e=="string")return Array.from(document.querySelectorAll(e));if(e instanceof Element)return[e];if(e instanceof NodeList)return Array.from(e);if(Array.isArray(e))return e;if(typeof e.length=="number")return Array.from(e);throw new Error("Invalid target: must be selector string, Element, NodeList, or Array")}static _parseDataValue(e){if(e==="true")return!0;if(e==="false")return!1;if(e==="null")return null;if(e!==""&&!isNaN(Number(e)))return Number(e);let t=e.trim();if(t[0]==="{"||t[0]==="[")try{return JSON.parse(t)}catch(i){return e}return e}static getInstance(e){let t;return e instanceof Element?t=e:t=v._resolveTargets(e)[0],t&&(t.overTypeInstance||v.instances.get(t))||null}static destroyAll(){document.querySelectorAll("[data-overtype-instance]").forEach(t=>{let i=v.getInstance(t);i&&i.destroy()})}static injectStyles(e=!1){if(v.stylesInjected&&!e)return;let t=document.querySelector("style.overtype-styles");t&&t.remove();let i=v.currentTheme||D,o=$t({theme:i}),r=document.createElement("style");r.className="overtype-styles",v.stylesChrome&&r.setAttribute("clay","editor-ui"),r.textContent=o,document.head.appendChild(r),v.stylesInjected=!0}static setTheme(e,t=null){if(v._globalAutoTheme=!1,v._globalAutoCustomColors=null,e==="auto"){v._globalAutoTheme=!0,v._globalAutoCustomColors=t,v._startAutoListener(),v._applyGlobalTheme(at("auto"),t);return}v._stopAutoListener(),v._applyGlobalTheme(e,t)}static _applyGlobalTheme(e,t=null){let i=typeof e=="string"?W(e):e;t&&(i=Mt(i,t)),v.currentTheme=i,v.injectStyles(!0);let o=typeof i=="string"?i:i.name;document.querySelectorAll(".overtype-container").forEach(r=>{let s=r.querySelector(".overtype-wrapper");o&&s&&s._instance&&r.setAttribute("data-theme",o)}),document.querySelectorAll(".overtype-wrapper").forEach(r=>{r.closest(".overtype-container")||o&&r.setAttribute("data-theme",o);let s=r._instance;s&&s.updatePreview()}),document.querySelectorAll("overtype-editor").forEach(r=>{o&&typeof r.setAttribute=="function"&&r.setAttribute("theme",o),typeof r.refreshTheme=="function"&&r.refreshTheme()})}static _startAutoListener(){v._autoMediaQuery||window.matchMedia&&(v._autoMediaQuery=window.matchMedia("(prefers-color-scheme: dark)"),v._autoMediaListener=e=>{let t=e.matches?"cave":"solar";v._globalAutoTheme&&v._applyGlobalTheme(t,v._globalAutoCustomColors),v._autoInstances.forEach(i=>i._applyResolvedTheme(t))},v._autoMediaQuery.addEventListener("change",v._autoMediaListener))}static _stopAutoListener(){v._autoInstances.size>0||v._globalAutoTheme||v._autoMediaQuery&&(v._autoMediaQuery.removeEventListener("change",v._autoMediaListener),v._autoMediaQuery=null,v._autoMediaListener=null)}static setCodeHighlighter(e){T.setCodeHighlighter(e),document.querySelectorAll(".overtype-wrapper").forEach(t=>{let i=t._instance;i&&i.updatePreview&&i.updatePreview()}),document.querySelectorAll("overtype-editor").forEach(t=>{if(typeof t.getEditor=="function"){let i=t.getEditor();i&&i.updatePreview&&i.updatePreview()}})}static setCustomSyntax(e){T.setCustomSyntax(e),document.querySelectorAll(".overtype-wrapper").forEach(t=>{let i=t._instance;i&&i.updatePreview&&i.updatePreview()}),document.querySelectorAll("overtype-editor").forEach(t=>{if(typeof t.getEditor=="function"){let i=t.getEditor();i&&i.updatePreview&&i.updatePreview()}})}static initGlobalListeners(){let e=typeof window<"u"?window:globalThis,t="__overtypeGlobalListenersInitialized";if(v.globalListenersInitialized||e[t]){v.globalListenersInitialized=!0;return}e[t]=!0,document.addEventListener("input",i=>{if(i.target&&i.target.classList&&i.target.classList.contains("overtype-input")){let o=i.target.closest(".overtype-wrapper"),r=o==null?void 0:o._instance;r&&r.handleInput(i)}}),document.addEventListener("keydown",i=>{if(i.target&&i.target.classList&&i.target.classList.contains("overtype-input")){let o=i.target.closest(".overtype-wrapper"),r=o==null?void 0:o._instance;r&&r.handleKeydown(i)}}),document.addEventListener("click",i=>{if(i.target&&i.target.classList&&i.target.classList.contains("overtype-input")){let o=i.target.closest(".overtype-wrapper"),r=o==null?void 0:o._instance;r&&r._handleTaskClick(i)}}),document.addEventListener("focus",i=>{if(i.target&&i.target.classList&&i.target.classList.contains("overtype-input")){let o=i.target.closest(".overtype-wrapper"),r=o==null?void 0:o._instance;r&&r.handleFocus(i)}},!0),document.addEventListener("blur",i=>{if(i.target&&i.target.classList&&i.target.classList.contains("overtype-input")){let o=i.target.closest(".overtype-wrapper"),r=o==null?void 0:o._instance;r&&r.handleBlur(i)}},!0),document.addEventListener("scroll",i=>{if(i.target&&i.target.classList&&i.target.classList.contains("overtype-input")){let o=i.target.closest(".overtype-wrapper"),r=o==null?void 0:o._instance;r&&r.handleScroll(i)}},!0),document.addEventListener("selectionchange",i=>{let o=document.activeElement;if(o&&o.classList.contains("overtype-input")){let r=o.closest(".overtype-wrapper"),s=r==null?void 0:r._instance;s&&(s.options.showStats&&s.statsBar&&s._updateStats(),clearTimeout(s._selectionTimeout),s._selectionTimeout=setTimeout(()=>{s.updatePreview()},50))}}),v.globalListenersInitialized=!0}};C(v,"instances",new WeakMap),C(v,"stylesInjected",!1),C(v,"stylesChrome",!1),C(v,"globalListenersInitialized",!1),C(v,"instanceCount",0),C(v,"_autoMediaQuery",null),C(v,"_autoMediaListener",null),C(v,"_autoInstances",new Set),C(v,"_globalAutoTheme",!1),C(v,"_globalAutoCustomColors",null);var j=v;j.MarkdownParser=T;j.ShortcutsManager=fe;j.themes={solar:D,cave:W("cave")};j.getTheme=W;j.currentTheme=D;var io=j;return Un(oo);})();
103
+ /**
104
+ * OverType - A lightweight markdown editor library with perfect WYSIWYG alignment
105
+ * @version 1.0.0
106
+ * @license MIT
107
+ */
108
+
109
+ if (typeof window !== "undefined" && typeof window.document !== "undefined") {
110
+ // Extract exports BEFORE reassigning OverType (var OverType is window.OverType)
111
+ window.toolbarButtons = OverType.toolbarButtons;
112
+ window.defaultToolbarButtons = OverType.defaultToolbarButtons;
113
+ window.markdownActions = OverType.markdownActions;
114
+ window.OverType = OverType.default ? OverType.default : OverType;
115
+ }
116
+
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2025 David Miranda
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.