@panphora/clayjs 1.23.0 → 1.24.1

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 (471) hide show
  1. package/dist/all.js +1 -1
  2. package/dist/blockeditor/themes/light-1.css +431 -0
  3. package/dist/clay-dom.js +1 -1
  4. package/dist/clay-events.js +1 -1
  5. package/dist/clay-internals.js +1 -1
  6. package/dist/clay-options.js +1 -1
  7. package/dist/clay-router.js +1 -1
  8. package/dist/clay-ui.js +1 -1
  9. package/dist/clay-utils.js +1 -1
  10. package/dist/clay.js +1 -1
  11. package/dist/clay.standalone.js +30285 -26613
  12. package/dist/m/c-277QP5ET.js +1 -0
  13. package/dist/m/c-2BLVA6IN.js +5 -0
  14. package/dist/m/c-2OJMOUPC.js +1 -0
  15. package/dist/m/c-2PVGJFI5.js +1 -0
  16. package/dist/m/{c-AYVGD6A6.js → c-3UW5EJ77.js} +1 -1
  17. package/dist/m/{c-T5NK2TVY.js → c-42ZNV7LI.js} +1 -1
  18. package/dist/m/{c-3TLG3OLG.js → c-46LJAZZJ.js} +1 -1
  19. package/dist/m/c-47IBJGPQ.js +1 -0
  20. package/dist/m/c-5FXEKU4Y.js +1 -0
  21. package/dist/m/c-5KXDKC5G.js +1 -0
  22. package/dist/m/{c-EUGJVHDD.js → c-5RZNFTWD.js} +1 -1
  23. package/dist/m/c-65LJU2H2.js +72 -0
  24. package/dist/m/{c-NQJRVJ56.js → c-6IJEVE6B.js} +1 -1
  25. package/dist/m/{c-NW54NHKE.js → c-6LEYVQJK.js} +1 -1
  26. package/dist/m/{c-GSRLXYWL.js → c-6Q6RGFBF.js} +1 -1
  27. package/dist/m/c-6RGEQNVV.js +1 -0
  28. package/dist/m/c-7CM4GMTS.js +6 -0
  29. package/dist/m/c-7NCWENHV.js +1 -0
  30. package/dist/m/c-7V6MGMX2.js +1 -0
  31. package/dist/m/{c-LKSL4AUJ.js → c-7WZSUTYP.js} +1 -1
  32. package/dist/m/c-A4L7APIU.js +1 -0
  33. package/dist/m/c-APGHGDZM.js +1 -0
  34. package/dist/m/c-AT7GLQGV.js +34 -0
  35. package/dist/m/{c-ZRXJD4G6.js → c-B7GOFGQR.js} +1 -1
  36. package/dist/m/{c-KDXIJEEF.js → c-BGN7RCTJ.js} +1 -1
  37. package/dist/m/c-BKM46LUJ.js +1 -0
  38. package/dist/m/c-BOMQIQ3V.js +1 -0
  39. package/dist/m/{c-62HZW5DH.js → c-C5AKJVRH.js} +1 -1
  40. package/dist/m/{c-BXYSDKAN.js → c-CJ7QYEWI.js} +1 -1
  41. package/dist/m/c-CTGRDT6E.js +1 -0
  42. package/dist/m/c-CV4T65JE.js +6 -0
  43. package/dist/m/c-CVSWLX3X.js +1 -0
  44. package/dist/m/c-CZHTXGJS.js +1 -0
  45. package/dist/m/c-D7NT5S4F.js +1 -0
  46. package/dist/m/c-DD26VXAP.js +1 -0
  47. package/dist/m/{c-ANNFZFLN.js → c-DDS23EY6.js} +1 -1
  48. package/dist/m/{c-ALDVFPWL.js → c-DFKBGSN2.js} +1 -1
  49. package/dist/m/c-DIKR7H57.js +147 -0
  50. package/dist/m/c-DXPOFLEJ.js +1 -0
  51. package/dist/m/c-EDE45NM7.js +1 -0
  52. package/dist/m/c-EILLN2H2.js +1 -0
  53. package/dist/m/c-EODTTNVA.js +1 -0
  54. package/dist/m/{c-G6COVIZB.js → c-ESK4S67I.js} +1 -1
  55. package/dist/m/c-FDWR3FL7.js +1 -0
  56. package/dist/m/{c-WQZTI5P2.js → c-FEC6LGFF.js} +1 -1
  57. package/dist/m/c-FLEIU6CG.js +1 -0
  58. package/dist/m/c-FQAQRXGK.js +1 -0
  59. package/dist/m/{c-W4JCVLAB.js → c-FSQXFG5T.js} +1 -1
  60. package/dist/m/c-FVPNX2GO.js +135 -0
  61. package/dist/m/c-FYDKYW6E.js +1 -0
  62. package/dist/m/c-GNI7WHKF.js +32 -0
  63. package/dist/m/c-GO635CRU.js +3 -0
  64. package/dist/m/c-H3FNLBHN.js +2 -0
  65. package/dist/m/c-HDVH3MVC.js +72 -0
  66. package/dist/m/c-HIX5H5L7.js +1 -0
  67. package/dist/m/c-HKSLOVU4.js +1 -0
  68. package/dist/m/{c-SGRIYOAJ.js → c-HL6BLJNA.js} +1 -1
  69. package/dist/m/c-HTLYXCUH.js +1 -0
  70. package/dist/m/{c-QIR5CAKM.js → c-IUL7PU4P.js} +1 -1
  71. package/dist/m/c-IXO7EI2Q.js +1 -0
  72. package/dist/m/{c-W5E5P2TZ.js → c-JQF2EUCG.js} +1 -1
  73. package/dist/m/{c-NEL7HQW3.js → c-JWDCQL6J.js} +1 -1
  74. package/dist/m/c-KQKKIVLW.js +20 -0
  75. package/dist/m/c-LATNQ6Q5.js +1 -0
  76. package/dist/m/c-LD6UVV5R.js +1 -0
  77. package/dist/m/c-LS7IVQVW.js +1 -0
  78. package/dist/m/{c-JCOQVZYS.js → c-LSVN3OLG.js} +1 -1
  79. package/dist/m/{c-JDZDF2QM.js → c-LTSPHVAK.js} +1 -1
  80. package/dist/m/c-MFOSMAVM.js +3 -0
  81. package/dist/m/c-MJ7GVE46.js +1 -0
  82. package/dist/m/c-MP6S4AZU.js +6 -0
  83. package/dist/m/c-MQKSKQHG.js +2 -0
  84. package/dist/m/{c-UHUNXWKN.js → c-MQYEDF3Q.js} +1 -1
  85. package/dist/m/{c-IHUWUKIU.js → c-MR75YPRT.js} +1 -1
  86. package/dist/m/c-ND3Q2G2I.js +1 -0
  87. package/dist/m/c-NEQRFC4O.js +1 -0
  88. package/dist/m/{c-5FKRZNJV.js → c-NFQFV7OP.js} +1 -1
  89. package/dist/m/c-NHXOBD6A.js +1 -0
  90. package/dist/m/{c-QIKT6SKM.js → c-NICICT4P.js} +1 -1
  91. package/dist/m/c-NQAPWM7O.js +1 -0
  92. package/dist/m/{c-QUGCKMWF.js → c-NVU3DORS.js} +1 -1
  93. package/dist/m/{c-LWIDDWAR.js → c-OCYG4NBQ.js} +22 -22
  94. package/dist/m/c-OH2FPYSY.js +19 -0
  95. package/dist/m/c-OYHI67B6.js +1 -0
  96. package/dist/m/{c-R2XUODVY.js → c-OYW5MFPZ.js} +1 -1
  97. package/dist/m/{c-5B4YBZXC.js → c-P2HKMJAW.js} +1 -1
  98. package/dist/m/{c-TSBVMWAH.js → c-PCNJETUA.js} +1 -1
  99. package/dist/m/c-PDBNCJCT.js +1 -0
  100. package/dist/m/c-PGSBXHUE.js +1 -0
  101. package/dist/m/{c-5TIZ2I64.js → c-PYG2NGWU.js} +1 -1
  102. package/dist/m/c-Q26XHBLQ.js +1 -0
  103. package/dist/m/c-Q6BG3ZLO.js +1 -0
  104. package/dist/m/c-QENKN7QI.js +1 -0
  105. package/dist/m/c-QQFHEODI.js +1 -0
  106. package/dist/m/c-QTEUO2K6.js +1 -0
  107. package/dist/m/c-R23UHMXG.js +1 -0
  108. package/dist/m/c-RETTCOWO.js +10 -0
  109. package/dist/m/c-SE3SIY7Y.js +7 -0
  110. package/dist/m/{c-XX75FFNL.js → c-SGGGCIVD.js} +1 -1
  111. package/dist/m/c-SGH3UTF3.js +1 -0
  112. package/dist/m/c-SIM7Z3U7.js +1 -0
  113. package/dist/m/{c-X5LNHET5.js → c-SKMIR5HQ.js} +1 -1
  114. package/dist/m/{c-R27DWQKX.js → c-STRI73GQ.js} +1 -1
  115. package/dist/m/c-SUXHUL7U.js +1 -0
  116. package/dist/m/c-SXGEWPFC.js +10 -0
  117. package/dist/m/c-SXNSSHPP.js +1 -0
  118. package/dist/m/c-T3P3AXEW.js +1 -0
  119. package/dist/m/{c-PXLTUYZC.js → c-TFLRT5JX.js} +1 -1
  120. package/dist/m/{c-YCLU4UNT.js → c-TGIMBAWE.js} +1 -1
  121. package/dist/m/c-TGSHHFO6.js +1 -0
  122. package/dist/m/c-U4NTUVDZ.js +1 -0
  123. package/dist/m/c-UOOIF2AL.js +1 -0
  124. package/dist/m/{c-6TYGD5AB.js → c-UOUUI265.js} +1 -1
  125. package/dist/m/c-V2U3F4QX.js +1 -0
  126. package/dist/m/c-V2V5FKXX.js +1 -0
  127. package/dist/m/c-VBXRXTVS.js +26 -0
  128. package/dist/m/c-VHSMPITY.js +1 -0
  129. package/dist/m/c-VPXCXBDT.js +1 -0
  130. package/dist/m/c-WCG6AKA7.js +1 -0
  131. package/dist/m/c-WNOLMHI2.js +1 -0
  132. package/dist/m/{c-CRPIDGXC.js → c-X6MOYATI.js} +1 -1
  133. package/dist/m/{c-FQGHR32O.js → c-X75G43SZ.js} +1 -1
  134. package/dist/m/c-XB6EAIAR.js +13 -0
  135. package/dist/m/c-XMIDHEKF.js +1 -0
  136. package/dist/m/c-XUZMRQ7O.js +4 -0
  137. package/dist/m/{c-2Z22FCFK.js → c-XW5TIYYB.js} +1 -1
  138. package/dist/m/c-YDW4VCHP.js +1 -0
  139. package/dist/m/{c-QGAPG7OM.js → c-YLHTD3KX.js} +1 -1
  140. package/dist/m/c-YNIEIPBS.js +1 -0
  141. package/dist/m/c-Z4G2UK6T.js +4 -0
  142. package/dist/m/c-Z6MROEQ4.js +1 -0
  143. package/dist/m/c-ZFO5RW6G.js +2 -0
  144. package/dist/m/c-ZGCO4J3H.js +8 -0
  145. package/dist/m/c-ZKKAF4UT.js +3 -0
  146. package/dist/m/c-ZRGEN6QQ.js +4 -0
  147. package/dist/m/core/{admin-attrs-U7IJNYBG.js → admin-attrs-ONRWVXPK.js} +1 -1
  148. package/dist/m/core/{autosave-F5YQCKVL.js → autosave-TBKAAAFB.js} +1 -1
  149. package/dist/m/core/conflict-notice-FOEE6I7E.js +1 -0
  150. package/dist/m/core/draft-mode-4MCL3LYI.js +1 -0
  151. package/dist/m/core/{host-permission-6EVJGNPL.js → host-permission-X4BENZEU.js} +1 -1
  152. package/dist/m/core/{is-edit-mode-GCX6767E.js → is-edit-mode-FFHCQ5DR.js} +1 -1
  153. package/dist/m/core/{persist-CJXIL7D4.js → persist-6ILUR34S.js} +1 -1
  154. package/dist/m/core/{recovery-DRFZRJED.js → recovery-APWADU4K.js} +1 -1
  155. package/dist/m/core/save-6HT2LABE.js +1 -0
  156. package/dist/m/core/save-core-EVMNZQ4V.js +1 -0
  157. package/dist/m/core/site-edits-G4BOZMV4.js +1 -0
  158. package/dist/m/core/{unsaved-warning-HNQVTA2D.js → unsaved-warning-ITZDIZ2I.js} +1 -1
  159. package/dist/m/internals/{index-NRPNDTSA.js → index-HS3CQDFW.js} +1 -1
  160. package/dist/m/loader-GLLVDUZA.js +1 -0
  161. package/dist/m/manifest-50FF1C45.js +1 -0
  162. package/dist/m/manifest-edit-BE1A621D.js +1 -0
  163. package/dist/m/manifest.json +2072 -1811
  164. package/dist/m/page/editor-KAZDJNND.js +307 -0
  165. package/dist/m/plugins/ai-edit-LABECCSN.js +6 -0
  166. package/dist/m/plugins/{cms-H7DTMUQX.js → cms-T2HLI7JG.js} +16 -16
  167. package/dist/m/plugins/{demo-42BSYQ7T.js → demo-T7B4RIKL.js} +1 -1
  168. package/dist/m/plugins/{derive-QVI3LI3A.js → derive-6LPJOCAV.js} +1 -1
  169. package/dist/m/plugins/indicator-J4ABFARX.js +1 -0
  170. package/dist/m/plugins/{live-DCUBKXY4.js → live-PGBIEMGB.js} +1 -1
  171. package/dist/m/plugins/menu-YZL3X2AJ.js +1 -0
  172. package/dist/m/plugins/page-WOCNX2IN.js +2 -0
  173. package/dist/m/plugins/page-view-SJODOOGE.js +1 -0
  174. package/dist/m/plugins/{people-5XRNRP5U.js → people-C4TCWFOQ.js} +1 -1
  175. package/dist/m/plugins/{quickcrop-WWF5I422.js → quickcrop-X5MRIBAP.js} +2 -2
  176. package/dist/m/plugins/richclay-Y2NV44NA.js +549 -0
  177. package/dist/m/plugins/sortable-XCHQG65Z.js +1 -0
  178. package/dist/m/plugins/{source-6BKMK4PO.js → source-YK7MO23W.js} +1 -1
  179. package/dist/m/plugins/{undo-3JEYK5QY.js → undo-VLRBQNPN.js} +1 -1
  180. package/dist/m/plugins/upgrade-NNTJBSK2.js +1 -0
  181. package/dist/m/plugins/{upload-TTCQRIM5.js → upload-ZKKJV76X.js} +1 -1
  182. package/dist/m/plugins/visitor-drafts-RTZNONHT.js +20 -0
  183. package/dist/m/plugins/{visitor-drafts-owner-Z5B2OQBR.js → visitor-drafts-owner-LHUHFU3L.js} +1 -1
  184. package/dist/m/plugins/{visitor-menu-4LQMKLPP.js → visitor-menu-FY4KM2SW.js} +1 -1
  185. package/dist/m/plugins/wire-M2NR354P.js +1 -0
  186. package/dist/m/{reader-core-POFQCKRV.js → reader-core-T2S3JC4E.js} +2 -2
  187. package/dist/m/sync/live-sync-Z64YREWQ.js +1 -0
  188. package/dist/m/ui/index-MGTWOW2C.js +1 -0
  189. package/dist/m/vendor/{sap-core.vendor-OA5SKL7Q.js → sap-core.vendor-QAEPMETX.js} +1 -1
  190. package/dist/offline-manifest.json +1250 -1082
  191. package/dist/server/core.cjs +132 -109
  192. package/dist/server/page-compaction-worker.cjs +5 -5
  193. package/dist/server/rooms.mjs +3 -1
  194. package/docs/guide.md +89 -44
  195. package/entries/clay-data.js +1 -1
  196. package/entries/sap.js +1 -1
  197. package/package.json +5 -3
  198. package/src/blockeditor/themes/content.css +70 -0
  199. package/src/blockeditor/themes/light-1.css +431 -0
  200. package/src/blockeditor/themes/light-1.source.css +270 -0
  201. package/src/blockeditor/themes/light-2.css +211 -0
  202. package/src/blockeditor/themes/light-3.css +130 -0
  203. package/src/blockeditor/themes/light-4.css +299 -0
  204. package/src/core/conflict-notice.js +28 -0
  205. package/src/core/draft-mode.js +6 -0
  206. package/src/core/host-meta.js +6 -6
  207. package/src/core/is-edit-mode.js +9 -3
  208. package/src/core/mode-support.js +3 -0
  209. package/src/core/mode-switch.js +4 -4
  210. package/src/core/mode-transition.js +3 -1
  211. package/src/core/page-format-wire.js +1 -1
  212. package/src/core/page-format.js +8 -8
  213. package/src/core/save-accepted.js +6 -7
  214. package/src/core/save-core.js +52 -23
  215. package/src/core/save-failure-notice.js +37 -0
  216. package/src/core/save-feedback.js +6 -0
  217. package/src/core/save-replace.js +1 -1
  218. package/src/core/save-size.js +2 -2
  219. package/src/core/save.js +78 -15
  220. package/src/core/site-edits.js +166 -0
  221. package/src/core/unsaved-warning.js +2 -2
  222. package/src/core/upgrade-run.js +4 -4
  223. package/src/lib/ai-comment.js +23 -0
  224. package/src/lib/effect.js +8 -0
  225. package/src/lib/idb-error-code.js +20 -0
  226. package/src/live/fast-lane.js +10 -10
  227. package/src/live/local-lane.js +10 -10
  228. package/src/live/page-compaction.js +8 -8
  229. package/src/live/server-lane.js +1 -1
  230. package/src/loader-logic.js +48 -18
  231. package/src/loader.js +11 -6
  232. package/src/page/adopt-boot.js +1 -1
  233. package/src/page/adopt.js +2 -2
  234. package/src/page/ai-area.js +182 -0
  235. package/src/page/ai-preview.js +80 -0
  236. package/src/page/ai-surface.js +257 -0
  237. package/src/page/ai-tool.js +308 -145
  238. package/src/page/announce.js +2 -2
  239. package/src/page/awareness.js +18 -18
  240. package/src/page/blocks.js +35 -34
  241. package/src/page/blocksel.js +2 -2
  242. package/src/page/board-drag.js +11 -11
  243. package/src/page/board-face.js +1 -1
  244. package/src/page/board-panel.js +26 -26
  245. package/src/page/board-style.js +127 -127
  246. package/src/page/board-view.js +48 -48
  247. package/src/page/chart.js +29 -29
  248. package/src/page/checkpoint-proof.js +19 -19
  249. package/src/page/chrome.js +74 -65
  250. package/src/page/clipboard-shape.js +1 -1
  251. package/src/page/csv-import.js +4 -4
  252. package/src/page/drag.js +5 -5
  253. package/src/page/editor.js +301 -296
  254. package/src/page/export-html.js +8 -8
  255. package/src/page/features/checklist.js +36 -36
  256. package/src/page/features/export-html.js +19 -19
  257. package/src/page/features/export-markdown.js +10 -10
  258. package/src/page/features/import-markdown.js +13 -13
  259. package/src/page/features/media.js +50 -50
  260. package/src/page/features/table.js +17 -17
  261. package/src/page/features/title-cover.js +17 -17
  262. package/src/page/features/title-icon.js +7 -7
  263. package/src/page/features/toc.js +1 -1
  264. package/src/page/features/tool.js +42 -18
  265. package/src/page/format-command.js +4 -4
  266. package/src/page/format-gate.js +6 -6
  267. package/src/page/format-host.js +6 -6
  268. package/src/page/format-level.js +3 -3
  269. package/src/page/format-native-commands.js +2 -2
  270. package/src/page/highlight-slot.js +1 -1
  271. package/src/page/highlight.js +4 -4
  272. package/src/page/history-intent.js +2 -2
  273. package/src/page/image-actions.js +4 -4
  274. package/src/page/link.js +10 -10
  275. package/src/page/media.js +3 -3
  276. package/src/page/mention-picker.js +7 -7
  277. package/src/page/merge.js +1 -1
  278. package/src/page/placeholder.js +3 -3
  279. package/src/page/projection.js +11 -11
  280. package/src/page/reader-patch.js +2 -2
  281. package/src/page/recover.js +26 -26
  282. package/src/page/recovery-ui.js +28 -28
  283. package/src/page/rich/chart.js +1 -1
  284. package/src/page/rich/page-tool.js +21 -6
  285. package/src/page/rich/tool-runtime.js +3 -2
  286. package/src/page/save-projection.js +2 -2
  287. package/src/page/save-states.js +9 -9
  288. package/src/page/schema.js +9 -9
  289. package/src/page/table-style.js +21 -21
  290. package/src/page/toc-link.js +1 -1
  291. package/src/page/tool-capability.js +8 -3
  292. package/src/page/tool-transport.js +52 -0
  293. package/src/page/tool-views.js +4 -0
  294. package/src/page/tools.js +6 -1
  295. package/src/page/view.js +6 -6
  296. package/src/page/ybind/binding.js +1 -1
  297. package/src/page/ybind/conversion.js +1 -1
  298. package/src/page/ybind/layout.js +4 -4
  299. package/src/page/ybind/migrate.js +1 -1
  300. package/src/page/ybind/origins.js +2 -2
  301. package/src/page/ybind/provider.js +2 -2
  302. package/src/page/ybind/recovery-proof.js +3 -3
  303. package/src/page/ybind/recovery-replay.js +2 -2
  304. package/src/plugins/ai-edit/picker.js +235 -0
  305. package/src/plugins/ai-edit.js +220 -34
  306. package/src/plugins/indicator-chip.js +39 -34
  307. package/src/plugins/indicator.js +13 -4
  308. package/src/plugins/live.js +21 -13
  309. package/src/plugins/menu/actions.js +89 -17
  310. package/src/plugins/menu/seo.js +32 -6
  311. package/src/plugins/menu/shell-style.js +26 -7
  312. package/src/plugins/menu/shell.js +12 -7
  313. package/src/plugins/menu/variants.js +6 -10
  314. package/src/plugins/menu/visitor.js +44 -34
  315. package/src/plugins/menu.js +3 -2
  316. package/src/plugins/page-view.js +2 -2
  317. package/src/plugins/page.js +257 -98
  318. package/src/plugins/sortable.js +7 -0
  319. package/src/plugins/upgrade.js +2 -1
  320. package/src/plugins/visitor-drafts/commit.js +303 -0
  321. package/src/plugins/visitor-drafts/idb.js +221 -0
  322. package/src/plugins/visitor-drafts/intro-style.js +1 -1
  323. package/src/plugins/visitor-drafts/intro.js +8 -25
  324. package/src/plugins/visitor-drafts/prompt.js +30 -4
  325. package/src/plugins/visitor-drafts/session.js +345 -0
  326. package/src/plugins/visitor-drafts/store.js +351 -32
  327. package/src/plugins/visitor-drafts.js +158 -27
  328. package/src/server/checkpoint/index.js +8 -8
  329. package/src/server/rooms/index.js +2 -2
  330. package/src/server/rooms/live-data-rooms.js +35 -35
  331. package/src/server/rooms/live-page-history.js +2 -2
  332. package/src/server/rooms/page-admission.js +34 -6
  333. package/src/server/rooms/page-conversion.js +1 -1
  334. package/src/server/rooms/page-lineage.js +4 -4
  335. package/src/server/rooms/page-rebase.js +4 -4
  336. package/src/server/rooms/page-room-conformance.js +14 -14
  337. package/src/server/rooms/page-state.js +2 -2
  338. package/src/server/rooms/page-write-admission.js +7 -7
  339. package/src/server/rooms/page-write-guard.js +3 -3
  340. package/src/sync/data-guard-notice.js +265 -0
  341. package/src/sync/live-sync.js +54 -11
  342. package/src/sync/page-relay.js +4 -4
  343. package/src/sync/presence-store.js +1 -1
  344. package/src/sync/presence-target.js +3 -3
  345. package/src/sync/presence.js +1 -1
  346. package/src/sync/stream.js +54 -13
  347. package/src/sync/wire-profile.js +8 -3
  348. package/src/ui/bevel.js +1 -1
  349. package/src/ui/index.js +9 -10
  350. package/src/ui/skins/cms.js +1 -1
  351. package/src/ui/skins/quickcrop.js +1 -1
  352. package/src/ui/skins/richclay.js +2 -2
  353. package/src/ui/toast-lazy.js +12 -3
  354. package/src/ui/toast.js +9 -3
  355. package/src/vendor/hyper-html-api-data.vendor.js +1 -1
  356. package/src/vendor/hyper-html-api-upgrade.vendor.js +2 -2
  357. package/src/vendor/hypercms.vendor.js +16 -16
  358. package/src/vendor/richclay.vendor.js +48 -20
  359. package/src/vendor/sap-core.vendor.js +1 -1
  360. package/tool-generation/context.md +44 -0
  361. package/tool-generation/system.md +23 -0
  362. package/dist/m/c-24PMUJIV.js +0 -2
  363. package/dist/m/c-2AYVYEI4.js +0 -1
  364. package/dist/m/c-2AZDZWCK.js +0 -1
  365. package/dist/m/c-2L6O5PDS.js +0 -6
  366. package/dist/m/c-2RYOGUQM.js +0 -2
  367. package/dist/m/c-2ZVOEU4M.js +0 -1
  368. package/dist/m/c-37NAONZA.js +0 -1
  369. package/dist/m/c-3GJ4SDE2.js +0 -1
  370. package/dist/m/c-3O7OBDCM.js +0 -1
  371. package/dist/m/c-5OJ7YF2N.js +0 -1
  372. package/dist/m/c-5WMXEKFH.js +0 -135
  373. package/dist/m/c-6RDOKLN7.js +0 -1
  374. package/dist/m/c-A4IP6MBC.js +0 -1
  375. package/dist/m/c-A6L3FMUS.js +0 -1
  376. package/dist/m/c-ATKAOH23.js +0 -1
  377. package/dist/m/c-B6O7AJYG.js +0 -32
  378. package/dist/m/c-BCGWJYXW.js +0 -1
  379. package/dist/m/c-BGKAT2FL.js +0 -7
  380. package/dist/m/c-BYTKL6UX.js +0 -1
  381. package/dist/m/c-DHBRA6DL.js +0 -1
  382. package/dist/m/c-DTMZ3ZHI.js +0 -1
  383. package/dist/m/c-E3ZXARWA.js +0 -1
  384. package/dist/m/c-EK63G3CG.js +0 -1
  385. package/dist/m/c-ELYIIYRS.js +0 -1
  386. package/dist/m/c-EXKHPOVC.js +0 -3
  387. package/dist/m/c-FCSZ3DC5.js +0 -20
  388. package/dist/m/c-FTWGYI5E.js +0 -1
  389. package/dist/m/c-G4PWUDD5.js +0 -1
  390. package/dist/m/c-GBKB5WDL.js +0 -2
  391. package/dist/m/c-GBTVCJXC.js +0 -1
  392. package/dist/m/c-GC2HICFJ.js +0 -1
  393. package/dist/m/c-GRWMD6O5.js +0 -1
  394. package/dist/m/c-HCNWJE4A.js +0 -4
  395. package/dist/m/c-HG2C77BM.js +0 -4
  396. package/dist/m/c-JGHEACGK.js +0 -1
  397. package/dist/m/c-JGLX6TBK.js +0 -1
  398. package/dist/m/c-JNRKHYWO.js +0 -1
  399. package/dist/m/c-KBS3UV6B.js +0 -1
  400. package/dist/m/c-KQ7E3PYY.js +0 -1
  401. package/dist/m/c-L3F5ZLIV.js +0 -1
  402. package/dist/m/c-L4KMT7FO.js +0 -6
  403. package/dist/m/c-L5VFATT6.js +0 -1
  404. package/dist/m/c-LCYPMULG.js +0 -1
  405. package/dist/m/c-LIGQYZ7M.js +0 -6
  406. package/dist/m/c-LKIWEPAV.js +0 -1
  407. package/dist/m/c-MPSKIU2I.js +0 -1
  408. package/dist/m/c-N7JPUPGC.js +0 -1
  409. package/dist/m/c-NK33MMYF.js +0 -1
  410. package/dist/m/c-NQLWOHLH.js +0 -10
  411. package/dist/m/c-NTHUTABN.js +0 -1
  412. package/dist/m/c-NWX3MFT4.js +0 -1
  413. package/dist/m/c-OKXI52N7.js +0 -1
  414. package/dist/m/c-OPONJ2UK.js +0 -128
  415. package/dist/m/c-OWQWOGYI.js +0 -1
  416. package/dist/m/c-P6Q2ZTFQ.js +0 -1
  417. package/dist/m/c-QEN6HZCA.js +0 -1
  418. package/dist/m/c-QIXT3Q7C.js +0 -28
  419. package/dist/m/c-QM5LXRDT.js +0 -9
  420. package/dist/m/c-QYYUVLVG.js +0 -1
  421. package/dist/m/c-RQRMPZXD.js +0 -1
  422. package/dist/m/c-SBCBXKOZ.js +0 -26
  423. package/dist/m/c-SKF5HL4I.js +0 -4
  424. package/dist/m/c-SRPC3VBE.js +0 -1
  425. package/dist/m/c-TANBH7FI.js +0 -1
  426. package/dist/m/c-THGQQDYY.js +0 -1
  427. package/dist/m/c-UD5JZTDL.js +0 -1
  428. package/dist/m/c-UDGEFWNU.js +0 -1
  429. package/dist/m/c-UGNV5MFB.js +0 -1
  430. package/dist/m/c-VIRFF5HG.js +0 -8
  431. package/dist/m/c-VJYEVRYK.js +0 -1
  432. package/dist/m/c-VQCEOGKH.js +0 -13
  433. package/dist/m/c-VYJ7O4RI.js +0 -34
  434. package/dist/m/c-W7IPVCAA.js +0 -1
  435. package/dist/m/c-WBGWGOM7.js +0 -1
  436. package/dist/m/c-WJ5DRBHT.js +0 -72
  437. package/dist/m/c-X5WC4PX5.js +0 -1
  438. package/dist/m/c-XCFQEWW6.js +0 -3
  439. package/dist/m/c-XGH4GS2T.js +0 -1
  440. package/dist/m/c-XLQ3BDMM.js +0 -1
  441. package/dist/m/c-ZQXNHZZT.js +0 -72
  442. package/dist/m/core/conflict-notice-42H4ASLA.js +0 -1
  443. package/dist/m/core/draft-mode-WSQAT67S.js +0 -1
  444. package/dist/m/core/save-ESPSQPLV.js +0 -1
  445. package/dist/m/core/save-core-6SQHOR6W.js +0 -1
  446. package/dist/m/loader-FBDE2UAB.js +0 -1
  447. package/dist/m/manifest-1D2F5CA5.js +0 -1
  448. package/dist/m/manifest-edit-F7CC5CFD.js +0 -1
  449. package/dist/m/page/editor-OSKOW6RS.js +0 -304
  450. package/dist/m/plugins/ai-edit-VV4QTINH.js +0 -6
  451. package/dist/m/plugins/indicator-WVPGMOZ7.js +0 -1
  452. package/dist/m/plugins/menu-Q4MFFQ6E.js +0 -1
  453. package/dist/m/plugins/page-OAWUJQEL.js +0 -2
  454. package/dist/m/plugins/page-view-DZ26ZDDQ.js +0 -1
  455. package/dist/m/plugins/richclay-PGOOJ4OK.js +0 -517
  456. package/dist/m/plugins/sortable-266HY6TR.js +0 -1
  457. package/dist/m/plugins/upgrade-BNZVFHMZ.js +0 -1
  458. package/dist/m/plugins/visitor-drafts-2AUYKAIJ.js +0 -20
  459. package/dist/m/plugins/wire-W2EV36KZ.js +0 -1
  460. package/dist/m/sync/live-sync-XGUPHI3I.js +0 -1
  461. package/dist/m/ui/index-VGYAKAKI.js +0 -1
  462. package/dist/page/themes/light-1.css +0 -431
  463. package/src/page/themes/content.css +0 -70
  464. package/src/page/themes/light-1.css +0 -431
  465. package/src/page/themes/light-1.source.css +0 -270
  466. package/src/page/themes/light-2.css +0 -211
  467. package/src/page/themes/light-3.css +0 -130
  468. package/src/page/themes/light-4.css +0 -299
  469. /package/dist/m/{c-FILLTJA7.js → c-QTTJYJMA.js} +0 -0
  470. /package/dist/m/plugins/{quickcrop-WWF5I422.js.LEGAL.txt → quickcrop-X5MRIBAP.js.LEGAL.txt} +0 -0
  471. /package/dist/m/plugins/{richclay-PGOOJ4OK.js.LEGAL.txt → richclay-Y2NV44NA.js.LEGAL.txt} +0 -0
@@ -0,0 +1,135 @@
1
+ import{b as K}from"./c-CTGRDT6E.js";import{d as h}from"./c-ZRGEN6QQ.js";import{d as w,z as C}from"./c-OH2FPYSY.js";import{c as O}from"./c-FSQXFG5T.js";import"./c-RETTCOWO.js";import"./c-VHNSBD2M.js";var z=`
2
+ :where(article[data-blockeditor], .blockeditor-shell) { --blockeditor-board-lane: 274px; --blockeditor-board-gap: 14px; --blockeditor-board-radius: 8px; --blockeditor-board-panel: 360px; }
3
+ .blockeditor-editor .blockeditor-board { margin-block: 1.1em 1.5em; font-size: 15px; line-height: 1.4; white-space: normal; }
4
+ :is(.blockeditor-board, .blockeditor-board-panel) .i { flex: none; width: 16px; height: 16px; }
5
+ .blockeditor-board-scroll { position: relative; margin: -4px -4px 0; padding: 4px 4px 12px; overflow-x: auto; overscroll-behavior-x: contain; scrollbar-width: thin; scrollbar-color: var(--blockeditor-chrome-ink-rest) transparent; }
6
+ .blockeditor-board-lanes { display: flex; align-items: flex-start; gap: var(--blockeditor-board-gap); width: max-content; }
7
+ .blockeditor-board-lane { flex: 0 0 var(--blockeditor-board-lane); width: var(--blockeditor-board-lane); min-width: 0; }
8
+ .blockeditor-board-head { position: relative; display: flex; align-items: flex-start; gap: 8px; padding: 8px 0 7px; margin-bottom: 10px; border-bottom: 1px solid var(--blockeditor-rule); }
9
+ .blockeditor-board-name { min-width: 0; margin: 0; overflow: hidden; display: -webkit-box; -webkit-box-orient: vertical; -webkit-line-clamp: 2; color: var(--blockeditor-ink-strong); font: 600 14px/20px var(--blockeditor-font-heading); overflow-wrap: anywhere; }
10
+ .blockeditor-board-count { flex: none; color: var(--blockeditor-ink-soft); font-size: 14px; line-height: 20px; font-variant-numeric: tabular-nums; }
11
+ .blockeditor-board-icon { flex: none; display: inline-grid; place-items: center; width: 28px; height: 28px; margin-block: -4px; padding: 0; border: 0; border-radius: 6px; background: none; color: var(--blockeditor-ink-faint); cursor: pointer; transition: background-color var(--blockeditor-fade), color var(--blockeditor-fade); }
12
+ .blockeditor-board-icon:hover, .blockeditor-board-icon[aria-expanded="true"] { background: var(--blockeditor-pop-hover); color: var(--blockeditor-ink-soft); }
13
+ .blockeditor-board-icon:focus-visible { color: var(--blockeditor-ink-soft); }
14
+ .blockeditor-board-colmenu { margin-inline: auto -4px; }
15
+ .blockeditor-board-cards { display: flex; flex-direction: column; gap: 8px; margin: 0; padding: 0; list-style: none; }
16
+ .blockeditor-board-cards > li { position: relative; }
17
+ .blockeditor-board-card { display: block; width: 100%; margin: 0; padding: 10px 12px 11px; border: 1px solid var(--blockeditor-rule); border-radius: var(--blockeditor-board-radius); background: var(--blockeditor-pop-bg); color: var(--blockeditor-ink); font: inherit; text-align: start; cursor: pointer; transition: background-color var(--blockeditor-fade), border-color var(--blockeditor-fade); }
18
+ .blockeditor-board-card:hover { background-color: color-mix(in srgb, var(--blockeditor-pop-bg) 96%, var(--blockeditor-ink)); }
19
+ .blockeditor-board-card[aria-expanded="true"] { border-color: var(--blockeditor-accent); box-shadow: inset 0 0 0 1px var(--blockeditor-accent); }
20
+ .blockeditor-board-title { display: -webkit-box; -webkit-box-orient: vertical; -webkit-line-clamp: 4; overflow: hidden; font-size: 15px; font-weight: 500; line-height: 21px; overflow-wrap: anywhere; }
21
+ .blockeditor-board-meta { display: flex; align-items: center; gap: 8px; margin-top: 8px; color: var(--blockeditor-ink-soft); font-size: 13px; line-height: 20px; }
22
+ .blockeditor-board-owner { display: inline-flex; align-items: center; gap: 6px; min-width: 0; }
23
+ .blockeditor-board-owner-name { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
24
+ .blockeditor-board-due { flex: none; display: inline-flex; align-items: center; gap: 6px; margin-inline-start: auto; white-space: nowrap; font-variant-numeric: tabular-nums; }
25
+ .blockeditor-board-due[data-due="today"] { color: var(--blockeditor-ink); font-weight: 500; }
26
+ .blockeditor-board-due[data-due="overdue"] { color: var(--blockeditor-ink); }
27
+ .blockeditor-board-due[data-due="overdue"]::before { content: ""; flex: none; width: 6px; height: 6px; border-radius: 50%; background: var(--blockeditor-danger); }
28
+ .blockeditor-board-sr { position: absolute; width: 1px; height: 1px; overflow: hidden; clip-path: inset(50%); white-space: nowrap; }
29
+ .blockeditor-board-add { display: flex; align-items: center; gap: 6px; width: 100%; min-height: 36px; margin-top: 6px; padding: 0 12px; border: 0; border-radius: 7px; background: none; color: var(--blockeditor-ink-soft); font: inherit; font-size: 14px; text-align: start; cursor: pointer; transition: background-color var(--blockeditor-fade); }
30
+ .blockeditor-board-add .i { width: 14px; height: 14px; color: var(--blockeditor-ink-faint); }
31
+ .blockeditor-board-add:hover { background: var(--blockeditor-pop-hover); }
32
+ .blockeditor-board-addcol { flex: none; display: inline-grid; place-items: center; width: 32px; height: 32px; margin-top: 2px; padding: 0; border: 1px solid var(--blockeditor-chrome-line-rest); border-radius: var(--blockeditor-chrome-radius); background: var(--blockeditor-chrome-bg-rest); color: var(--blockeditor-ink-faint); cursor: pointer; transition: color var(--blockeditor-fade), background-color var(--blockeditor-fade), border-color var(--blockeditor-fade); }
33
+ .blockeditor-board-addcol:hover { border-color: var(--blockeditor-chrome-line-moved); background: var(--blockeditor-chrome-bg-moved); color: var(--blockeditor-ink-soft); }
34
+ .blockeditor-board-addcol .i { width: 14px; height: 14px; }
35
+ .blockeditor-board-tray { margin-bottom: 18px; padding: 6px 12px 12px; border-radius: 10px; background: var(--blockeditor-callout-bg); }
36
+ .blockeditor-board-tray-head { display: flex; align-items: center; gap: 8px; min-height: 44px; margin-bottom: 4px; }
37
+ .blockeditor-board-tray .blockeditor-board-cards { display: grid; grid-template-columns: repeat(auto-fill, minmax(220px, 1fr)); gap: 8px; }
38
+ .blockeditor-board-select { position: relative; display: block; min-width: 0; }
39
+ .blockeditor-board-select > .i { position: absolute; inset-inline-end: 8px; top: 50%; margin-top: -8px; color: var(--blockeditor-ink-faint); pointer-events: none; }
40
+ .blockeditor-board-select select { appearance: none; -webkit-appearance: none; padding-inline-end: 32px; text-overflow: ellipsis; }
41
+ .blockeditor-board-move { margin-top: 6px; }
42
+ .blockeditor-board-move select { width: 100%; min-height: 32px; padding-inline-start: 10px; border: 1px solid var(--blockeditor-pop-line); border-radius: 7px; background: var(--blockeditor-pop-bg); color: var(--blockeditor-ink); font: inherit; font-size: 14px; cursor: pointer; }
43
+ .blockeditor-board-btn { display: inline-flex; align-items: center; justify-content: center; gap: 6px; min-height: 32px; padding: 0 12px 0 10px; border: 1px solid var(--blockeditor-pop-line); border-radius: 7px; background: none; color: var(--blockeditor-pop-ink); font: inherit; font-size: 14px; cursor: pointer; transition: background-color var(--blockeditor-fade), color var(--blockeditor-fade); }
44
+ .blockeditor-board-btn:hover { background: var(--blockeditor-pop-hover); }
45
+ .blockeditor-board-btn .i { width: 14px; height: 14px; color: var(--blockeditor-pop-muted); }
46
+ .blockeditor-board-btn:disabled { background: none; color: var(--blockeditor-ink-faint); cursor: default; }
47
+ .blockeditor-board-btn:disabled .i { color: var(--blockeditor-ink-faint); }
48
+ .blockeditor-board-restore { flex: none; margin-inline-start: auto; }
49
+ .blockeditor-board-deleted { background: none; padding: 0; }
50
+ .blockeditor-board-deleted-toggle[aria-expanded="false"] svg { transform: rotate(-90deg); }
51
+ .blockeditor-board-deleted-list { list-style: none; margin: 0; padding: 0 0 0 12px; }
52
+ .blockeditor-board-deleted-item { display: flex; align-items: center; gap: 8px; min-height: 44px; color: var(--blockeditor-ink-soft); }
53
+ .blockeditor-board :is(button, select, input, textarea):focus-visible, .blockeditor-board-panel :is(button, select, input, textarea):focus-visible { outline: 2px solid var(--blockeditor-accent); outline-offset: 2px; }
54
+ .blockeditor-board-pop { position: absolute; z-index: 6; padding: 6px; border: 1px solid var(--blockeditor-pop-line); border-radius: var(--blockeditor-pop-radius); background: var(--blockeditor-pop-bg); box-shadow: var(--blockeditor-pop-shadow); color: var(--blockeditor-pop-ink); font-size: 14px; line-height: 1.4; }
55
+ .blockeditor-board-menu { top: calc(100% - 2px); inset-inline-end: -6px; width: 208px; }
56
+ .blockeditor-board-option { display: flex; align-items: center; gap: 10px; width: 100%; min-height: 34px; padding: 4px 10px; border: 0; border-radius: 7px; background: none; color: inherit; font: inherit; text-align: start; cursor: pointer; }
57
+ .blockeditor-board-option:hover, .blockeditor-board-option[aria-selected="true"], .blockeditor-board-option[aria-pressed="true"] { background: var(--blockeditor-pop-hover); }
58
+ .blockeditor-board-option > .i { color: var(--blockeditor-pop-muted); }
59
+ .blockeditor-board-option.is-danger { color: var(--blockeditor-danger); }
60
+ .blockeditor-board-option.is-danger > .i { color: inherit; }
61
+ .blockeditor-board-option:disabled { color: var(--blockeditor-ink-faint); cursor: default; background: none; }
62
+ .blockeditor-board-option:disabled > .i { color: var(--blockeditor-ink-faint); }
63
+ .blockeditor-board-sep { height: 1px; margin: 4px 6px; background: var(--blockeditor-pop-line); }
64
+ .blockeditor-board-rename { flex: 1 1 auto; min-width: 0; height: 28px; margin: -4px 0 -4px -6px; padding: 0 6px; border: 0; border-radius: 6px; background: var(--blockeditor-pop-hover); color: var(--blockeditor-ink-strong); font: 600 14px/20px var(--blockeditor-font-heading); }
65
+ .blockeditor-board-new { display: block; width: 100%; min-height: 44px; margin-top: 8px; padding: 10px 12px; border: 1px solid var(--blockeditor-rule); border-radius: var(--blockeditor-board-radius); background: var(--blockeditor-pop-bg); color: var(--blockeditor-ink); font: 500 15px/21px var(--blockeditor-font); }
66
+ .blockeditor-board-new::placeholder, .blockeditor-board-rename::placeholder { color: var(--blockeditor-ink-faint); font-weight: 400; }
67
+ .blockeditor-board-card, .blockeditor-board-name, .blockeditor-board-count { -webkit-user-select: none; user-select: none; }
68
+ .blockeditor-editor[contenteditable="true"] .blockeditor-board-head[data-col] .blockeditor-board-name { cursor: grab; }
69
+ .blockeditor-board.is-dragging, .blockeditor-board.is-dragging * { cursor: grabbing; }
70
+ .blockeditor-board .is-drag-source { opacity: 0.45; }
71
+ .blockeditor-board-drop { height: 2px; margin-block: -5px; border-radius: 1px; background: var(--blockeditor-drop, var(--blockeditor-accent)); pointer-events: none; }
72
+ .blockeditor-board-drop.is-column { flex: 0 0 2px; align-self: stretch; width: 2px; height: auto; margin-block: 0; margin-inline: calc((var(--blockeditor-board-gap) + 2px) / -2); }
73
+ .blockeditor-board-ghost { position: fixed; z-index: 6; top: 0; left: 0; box-sizing: border-box; margin: 0; box-shadow: var(--blockeditor-pop-shadow); pointer-events: none; }
74
+ .blockeditor-board-lane.blockeditor-board-ghost { padding: 0 10px 10px; border-radius: var(--blockeditor-board-radius); background: var(--blockeditor-bg); }
75
+ .blockeditor-board-scrim { display: none; position: fixed; inset: 0; z-index: 4; background: var(--blockeditor-scrim); }
76
+ .blockeditor-board-panel { position: fixed; z-index: 5; inset-block: 0; inset-inline-end: 0; width: var(--blockeditor-board-panel); box-sizing: border-box; overflow-y: auto; padding: 18px 20px 24px; border-inline-start: 1px solid var(--blockeditor-pop-line); background: var(--blockeditor-pop-bg); color: var(--blockeditor-pop-ink); font-family: var(--blockeditor-font); font-size: 15px; line-height: 1.4; }
77
+ .blockeditor-shell.has-board-panel { padding-inline-end: calc(var(--blockeditor-board-panel) + 16px); }
78
+ .blockeditor-board-panel-top { display: flex; align-items: flex-start; gap: 8px; }
79
+ .blockeditor-board-panel-title { flex: 1 1 0; min-width: 0; margin: -4px 0 0 -8px; padding: 4px 8px; border: 0; border-radius: 7px; background: none; color: var(--blockeditor-ink-strong); font: 600 20px/28px var(--blockeditor-font-heading); field-sizing: content; resize: none; overflow: hidden; }
80
+ .blockeditor-board-panel-title:hover { background: var(--blockeditor-pop-hover); }
81
+ .blockeditor-board-close { width: 32px; height: 32px; margin: -2px -6px 0 0; color: var(--blockeditor-ink-soft); }
82
+ .blockeditor-board-fields { margin: 18px 0 0; border-top: 1px solid var(--blockeditor-pop-line); }
83
+ .blockeditor-board-field { position: relative; display: grid; grid-template-columns: 84px minmax(0, 1fr); align-items: center; column-gap: 8px; min-height: 44px; border-bottom: 1px solid var(--blockeditor-pop-line); }
84
+ .blockeditor-board-field.is-owner { align-items: start; padding-block: 8px; }
85
+ .blockeditor-board-field.is-owner .blockeditor-board-label { padding-top: 4px; }
86
+ .blockeditor-board-label { color: var(--blockeditor-pop-muted); font-size: 14px; }
87
+ .blockeditor-board-control { display: flex; align-items: center; gap: 8px; width: 100%; min-width: 0; min-height: 34px; margin: 0; padding: 0 8px; border: 0; border-radius: 7px; background: none; color: var(--blockeditor-pop-ink); font: inherit; font-size: 15px; text-align: start; cursor: pointer; transition: background-color var(--blockeditor-fade); }
88
+ .blockeditor-board-control:hover { background: var(--blockeditor-pop-hover); }
89
+ .blockeditor-board-control > .i:last-child { margin-inline-start: auto; color: var(--blockeditor-ink-faint); }
90
+ .blockeditor-board-control-text { min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
91
+ .blockeditor-board-none { color: var(--blockeditor-ink-faint); }
92
+ .blockeditor-board-control .blockeditor-board-due { margin: 0; color: var(--blockeditor-pop-ink); font-weight: 400; }
93
+ .blockeditor-board-due-note { color: var(--blockeditor-pop-muted); font-size: 13px; }
94
+ .blockeditor-board-control .blockeditor-board-due + .blockeditor-board-due-note { margin-inline-start: auto; }
95
+ .blockeditor-board-control .blockeditor-board-due-note + .i { margin-inline-start: 0; }
96
+ .blockeditor-board-date { border: 1px solid var(--blockeditor-pop-line); cursor: text; }
97
+ .blockeditor-board-actions { display: flex; flex-wrap: wrap; align-items: center; gap: 8px; margin-top: 20px; }
98
+ .blockeditor-board-delete { margin-inline-start: auto; border-color: transparent; color: var(--blockeditor-pop-muted); }
99
+ .blockeditor-board-delete:hover { background: var(--blockeditor-pop-hover); color: var(--blockeditor-danger); }
100
+ .blockeditor-board-delete:hover .i { color: inherit; }
101
+ @media (max-width: 1039.98px) {
102
+ .blockeditor-shell.has-board-panel { padding-inline-end: 16px; }
103
+ .blockeditor-board-scrim { display: block; }
104
+ .blockeditor-board-panel { inset: auto 0 0 0; width: auto; max-width: 640px; max-height: 85%; margin-inline: auto; padding: 14px 16px calc(16px + env(safe-area-inset-bottom)); border: 1px solid var(--blockeditor-pop-line); border-bottom: 0; border-radius: 16px 16px 0 0; box-shadow: var(--blockeditor-pop-shadow); }
105
+ .blockeditor-board-close { width: 44px; height: 44px; margin: -8px -10px 0 0; }
106
+ .blockeditor-board-panel-top { min-height: 36px; }
107
+ .blockeditor-board-field { min-height: 48px; }
108
+ .blockeditor-board-control { min-height: 44px; }
109
+ .blockeditor-board-actions { margin-top: 16px; }
110
+ .blockeditor-board-actions .blockeditor-board-btn { flex: 1 1 0; min-height: 44px; }
111
+ .blockeditor-board-actions .blockeditor-board-delete { flex: 1 1 100%; margin-inline-start: 0; }
112
+ }
113
+ @media (max-width: 560px) {
114
+ .blockeditor-board-scroll { scroll-snap-type: x proximity; scroll-padding-inline: 4px; }
115
+ .blockeditor-board-lane { scroll-snap-align: start; }
116
+ .blockeditor-board-head { padding: 12px 0 11px; }
117
+ .blockeditor-board-head .blockeditor-board-icon { width: 44px; height: 44px; margin-block: -12px; }
118
+ .blockeditor-board-colmenu { margin-inline-end: -12px; }
119
+ .blockeditor-board-card { min-height: 44px; padding: 12px 14px 13px; }
120
+ .blockeditor-board-add { min-height: 44px; padding-inline: 14px; }
121
+ .blockeditor-board-addcol { width: 44px; height: 44px; margin-top: 0; }
122
+ .blockeditor-board-tray-head { min-height: 48px; }
123
+ .blockeditor-board-move select, .blockeditor-board-btn { min-height: 44px; }
124
+ .blockeditor-board-move select, .blockeditor-board-new { font-size: 16px; }
125
+ .blockeditor-board-option { min-height: 44px; }
126
+ .blockeditor-board-rename { height: 44px; margin-block: -12px; font-size: 16px; }
127
+ .blockeditor-board-panel { border-width: 1px 0 0; }
128
+ .blockeditor-board-panel-title { margin-top: -8px; padding-block: 8px; }
129
+ .blockeditor-board-control { font-size: 16px; }
130
+ .blockeditor-board-label { font-size: 15px; }
131
+ }
132
+ @media (prefers-reduced-motion: reduce) {
133
+ .blockeditor-board-icon, .blockeditor-board-card, .blockeditor-board-add, .blockeditor-board-addcol, .blockeditor-board-btn, .blockeditor-board-control { transition: none; }
134
+ }
135
+ `;var F=4,m=56,q=18,j=["id","data-focus","data-action","data-card","data-col"],D=(a,e)=>{let t=a.getBoundingClientRect();return e==="x"?t.left+t.width/2:t.top+t.height/2},P=(a,e,t)=>a<e+m?-q*Math.min(1,(e+m-a)/m):a>t-m?q*Math.min(1,(a-(t-m))/m):0,H=(a,e)=>a?.col===e?.col&&a?.afterId===e?.afterId&&!a==!e,y=class{constructor(e){this.host=e,this.state=null,this.line=null,this.suppress=!1,this.onMove=t=>this.move(t),this.onUp=t=>this.end(t),this.onCancel=t=>{t.pointerId===this.state?.pointer&&this.cancel()},this.onKey=t=>{t.key==="Escape"&&this.state?.active&&(t.preventDefault(),t.stopPropagation(),this.cancel())},e.dom.addEventListener("pointerdown",t=>this.start(t)),e.dom.addEventListener("click",t=>{this.suppress&&(this.suppress=!1,t.preventDefault(),t.stopImmediatePropagation())},!0)}start(e){let t=this.host;if(e.button!==0||e.pointerType==="touch"||this.state||!t.commands||!t.view.editable)return;let o=e.target.closest?.(".blockeditor-board-card[data-card]"),r=o?null:e.target.closest?.(".blockeditor-board-head[data-col]");if(!o&&(!r||e.target.closest("button, input")))return;this.state={kind:o?"card":"column",id:o?o.dataset.card:r.dataset.col,pointer:e.pointerId,x0:e.clientX,y0:e.clientY,x:e.clientX,y:e.clientY,active:!1,slot:null,raf:0,ghost:null};let i=t.dom.ownerDocument;i.addEventListener("pointermove",this.onMove),i.addEventListener("pointerup",this.onUp),i.addEventListener("pointercancel",this.onCancel)}move(e){let t=this.state;if(!(!t||e.pointerId!==t.pointer)){if(t.x=e.clientX,t.y=e.clientY,!t.active){if(Math.hypot(t.x-t.x0,t.y-t.y0)<=F)return;this.begin()}e.preventDefault(),this.track()}}source(){let{kind:e,id:t}=this.state;return[...e==="card"?this.host.dom.querySelectorAll(".blockeditor-board-card[data-card]"):this.host.lanes.querySelectorAll(".blockeditor-board-lane[data-col]")].find(r=>(e==="card"?r.dataset.card:r.dataset.col)===t)??null}exists(){let{kind:e,id:t}=this.state,o=this.host.board;return e==="card"?Object.hasOwn(o.cards,t):o.columnIds.includes(t)}begin(){let e=this.state,t=this.host,o=this.source();if(!o||!this.exists())return this.stop();t.menu!==null&&t.closeMenu(!1),e.active=!0;let r=o.getBoundingClientRect();e.dx=e.x0-r.left,e.dy=e.y0-r.top;let i=o.cloneNode(!0);for(let d of[i,...i.querySelectorAll("*")])for(let s of j)d.removeAttribute(s);i.classList.add("blockeditor-board-ghost"),i.setAttribute("aria-hidden","true"),i.setAttribute("inert",""),i.style.width=`${r.width}px`,e.ghost=i,t.dom.append(i),t.dom.classList.add("is-dragging"),this.line=t.dom.ownerDocument.createElement(e.kind==="card"?"li":"div"),this.line.className=e.kind==="card"?"blockeditor-board-drop":"blockeditor-board-drop is-column",this.line.setAttribute("aria-hidden","true"),t.dom.setPointerCapture?.(e.pointer),t.dom.addEventListener("lostpointercapture",this.onCancel),window.addEventListener("keydown",this.onKey,!0),o.classList.add("is-drag-source"),this.loop()}track(e=!1){let t=this.state;if(!t?.active)return;if(t.ghost.style.transform=`translate(${t.x-t.dx}px, ${t.y-t.dy}px)`,!this.exists())return this.cancel();let o=this.inBounds()?t.kind==="card"?this.cardSlot():this.columnSlot():null;!e&&H(o,t.slot)||(t.slot=o,this.paint())}inBounds(){let e=this.state,t=this.host.scroll.getBoundingClientRect();return e.x>=t.left-m&&e.x<=t.right+m&&e.y>=t.top-m&&e.y<=t.bottom+m}cardSlot(){let e=this.state,t=null,o=1/0;for(let d of this.host.lanes.querySelectorAll(".blockeditor-board-lane[data-col]")){let s=d.getBoundingClientRect(),l=e.x<s.left?s.left-e.x:e.x>s.right?e.x-s.right:0;l<o&&(o=l,t=d)}if(!t)return null;let r=[...t.querySelectorAll(".blockeditor-board-card[data-card]")].filter(d=>d.dataset.card!==e.id),i=r.filter(d=>D(d,"y")<e.y).length;return{col:t.dataset.col,afterId:i?r[i-1].dataset.card:null}}columnSlot(){let e=this.state,t=getComputedStyle(this.host.lanes).direction==="rtl",o=[...this.host.lanes.querySelectorAll(".blockeditor-board-lane[data-col]")].filter(i=>i.dataset.col!==e.id),r=o.filter(i=>t?D(i,"x")>e.x:D(i,"x")<e.x).length;return{col:null,afterId:r?o[r-1].dataset.col:null}}paint(){let e=this.state,t=this.line;if(t.remove(),!e.slot)return;let o=this.host.lanes;if(e.kind==="card"){let r=[...o.querySelectorAll(".blockeditor-board-lane[data-col]")].find(d=>d.dataset.col===e.slot.col)?.querySelector(".blockeditor-board-cards"),i=e.slot.afterId&&[...r?.querySelectorAll(".blockeditor-board-card[data-card]")??[]].find(d=>d.dataset.card===e.slot.afterId)?.closest("li");r?.insertBefore(t,i?i.nextSibling:r.firstChild)}else{let r=e.slot.afterId&&[...o.querySelectorAll(".blockeditor-board-lane[data-col]")].find(i=>i.dataset.col===e.slot.afterId);o.insertBefore(t,r?r.nextSibling:o.firstChild)}}repaint(){this.state?.active&&(this.source()?.classList.add("is-drag-source"),this.track(!0))}loop(){let e=()=>{let t=this.state;if(!t?.active)return;let o=this.host.scroll.getBoundingClientRect(),r=K(this.host.dom),i=r===r.ownerDocument.scrollingElement?{top:0,bottom:window.innerHeight}:r.getBoundingClientRect(),d=P(t.x,o.left,o.right),s=P(t.y,i.top,i.bottom);d&&(this.host.scroll.scrollLeft+=d),s&&(r.scrollTop+=s),(d||s)&&this.track(),this.state===t&&(t.raf=requestAnimationFrame(e))};this.state.raf=requestAnimationFrame(e)}end(e){let t=this.state;if(!t||e.pointerId!==t.pointer)return;if(!t.active)return this.stop();e.preventDefault(),this.suppress=!0,setTimeout(()=>{this.suppress=!1},0);let{kind:o,id:r,slot:i}=t;this.stop();let d=this.host;if(!i)return h(d.view,"Move cancelled");(o==="card"?d.run("moveCard",r,{columnId:i.col,afterId:i.afterId}):d.run("moveColumn",r,{afterId:i.afterId})).status==="moved"&&(o==="card"?(h(d.view,`Moved card to ${d.board.columns[i.col]?.name||"Untitled"}`),d.focusKey(`card:${r}`)):h(d.view,"Moved column"))}cancel(){this.stop(),h(this.host.view,"Move cancelled")}stop(){let e=this.state,t=this.host;if(!e)return;this.state=null,cancelAnimationFrame(e.raf);let o=t.dom.ownerDocument;o.removeEventListener("pointermove",this.onMove),o.removeEventListener("pointerup",this.onUp),o.removeEventListener("pointercancel",this.onCancel),t.dom.removeEventListener("lostpointercapture",this.onCancel),window.removeEventListener("keydown",this.onKey,!0),t.dom.hasPointerCapture?.(e.pointer)&&t.dom.releasePointerCapture(e.pointer),e.ghost?.remove(),this.line?.remove(),this.line=null,t.dom.classList.remove("is-dragging");for(let r of t.dom.querySelectorAll(".is-drag-source"))r.classList.remove("is-drag-source")}};function n(a,e,t,o={},r=null){let i=a.createElement(e);t&&(i.className=t);for(let[d,s]of Object.entries(o))s!=null&&s!==!1&&i.setAttribute(d,s===!0?"":String(s));return r!==null&&(i.textContent=r),i}var X=a=>([...String(a).trim()][0]??"?").toUpperCase(),I=(a,e)=>n(a,"span","blockeditor-board-face",{"aria-hidden":"true"},X(e));var Y=w.nodes,S=new WeakMap,N=/^\d{4}-\d{2}-\d{2}$/,_=0,u=(a,e=!1)=>`<svg class="i" viewBox="0 0 16 16" width="16" height="16" fill="${e?"currentColor":"none"}" stroke="${e?"none":"currentColor"}" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true">${a}</svg>`,x={plus:u('<path d="M8 3.25v9.5M3.25 8h9.5"/>'),more:u('<circle cx="3.5" cy="8" r="1.15"/><circle cx="8" cy="8" r="1.15"/><circle cx="12.5" cy="8" r="1.15"/>',!0),chevron:u('<path d="M4.75 6.5 8 9.75l3.25-3.25"/>'),close:u('<path d="M4.5 4.5l7 7M11.5 4.5l-7 7"/>'),up:u('<path d="M8 12.75v-9.5M4.25 7 8 3.25 11.75 7"/>'),down:u('<path d="M8 3.25v9.5M4.25 9 8 12.75 11.75 9"/>'),left:u('<path d="M12.75 8h-9.5M7 4.25 3.25 8 7 11.75"/>'),right:u('<path d="M3.25 8h9.5M9 4.25 12.75 8 9 11.75"/>'),trash:u('<path d="M2.75 4.5h10.5M6.25 4.5V2.75h3.5V4.5M4.25 4.5l.6 8.75h6.3l.6-8.75"/>'),calendar:u('<rect x="2.75" y="3.5" width="10.5" height="9.75" rx="1.75"/><path d="M2.75 6.75h10.5M5.5 2v2.5M10.5 2v2.5"/>'),pencil:u('<path d="M10.25 3.25l2.5 2.5-7 7H3.25v-2.5z"/>'),restore:u('<path d="M3.5 8a4.5 4.5 0 1 0 1.32-3.18M3.5 2.75v2.5H6"/>')};function p(a,e,t,o,r={}){let i=n(a,"button",e,{type:"button",...r});return i.innerHTML=x[t],o&&i.append(o),i}function g(a){let e=a.attrs.columns??{},t=a.attrs.cards??{},o=C(e),r=new Map(o.map(d=>[d,[]])),i=new Map;for(let d of C(t)){let s=String(t[d].col??"");r.has(s)?r.get(s).push(d):i.set(s,[...i.get(s)??[],d])}return{columns:e,cards:t,columnIds:o,lanes:r,missing:new Map([...i].sort(([d],[s])=>d<s?-1:d>s?1:0))}}var R=a=>String(a).padStart(2,"0"),v=(a=new Date)=>`${a.getFullYear()}-${R(a.getMonth()+1)}-${R(a.getDate())}`,M=(a,e=v())=>N.test(a)?a<e?"overdue":a===e?"today":"later":"later";function A(a,e=v(),t=!1){if(!N.test(a))return a;if(!t&&a===e)return"Today";let o=a.slice(0,4)===e.slice(0,4);return new Date(`${a}T00:00:00Z`).toLocaleDateString("en-US",{...t?{weekday:"short"}:{},month:"short",day:"numeric",...o?{}:{year:"numeric"},timeZone:"UTC"})}var L=(a,e)=>e>=2?a[e-2]:null,$=(a,e)=>n(a,"span","blockeditor-board-count",{"aria-label":`${e} ${e===1?"card":"cards"}`},String(e)),V=a=>/^(INPUT|TEXTAREA|SELECT)$/.test(a?.tagName??"");function W(a,e){let t=v(),o=M(e,t),r=n(a,"span","blockeditor-board-due",{"data-due":o});return r.append(n(a,"span","blockeditor-board-sr",{},"Due "),a.createTextNode(A(e,t))),o==="overdue"&&r.append(n(a,"span","blockeditor-board-sr",{},", overdue")),r}var E=class{constructor(e,t,o,{commands:r=null,undo:i=null,redo:d=null,panel:s=null}={}){this.node=e,this.view=t,this.getPos=o,this.commands=r,this.undo=i,this.redo=d,this.panel=s,this.uid=`blockeditor-board-${++_}`,this.menu=null;let l=S.get(t)??new Map;S.set(t,l),l.set(e.attrs.id,this),this.editing=null,this.rendering=!1;let c=t.dom.ownerDocument;this.dom=n(c,"div","blockeditor-board",{"data-type":"board","data-id":e.attrs.id??"",role:"group","aria-label":"Board"}),this.dom.contentEditable="false",this.trays=n(c,"div","blockeditor-board-trays"),this.scroll=n(c,"div","blockeditor-board-scroll"),this.lanes=n(c,"div","blockeditor-board-lanes"),this.scroll.append(this.lanes),this.dom.append(this.trays,this.scroll),this.dom.addEventListener("click",b=>this.click(b)),this.dom.addEventListener("change",b=>this.change(b)),this.dom.addEventListener("keydown",b=>this.keydown(b)),this.dom.addEventListener("focusout",b=>this.focusout(b)),this.dom.addEventListener("mousedown",b=>{b.target.closest?.("button")&&b.preventDefault()}),this.dragger=new y(this),this.render()}get blockId(){return this.node.attrs.id}run(e,...t){if(!this.commands||!this.view.editable)return{status:"refused",code:"read-only"};let o=this.commands[e](this.blockId,...t);return o?.status==="refused"&&this.render(),o}focusKey(e){let t=e?[...this.dom.querySelectorAll("[data-focus]")].find(o=>o.dataset.focus===e&&!o.disabled):null;return t?(t.focus(),t.ownerDocument.activeElement===t):!1}render(){let e=this.dom.ownerDocument,t=e.activeElement,o=t&&this.dom.contains(t)?t.dataset?.focus??null:null,r=o&&typeof t.selectionStart=="number"?[t.selectionStart,t.selectionEnd]:null;this.rendering=!0;try{this.board=g(this.node),this.dom.dataset.id=this.blockId??"";let i=this.commands?.removed?.(this.blockId)??{columns:{},cards:{}},d=i.columns??{},s=Object.keys(i.cards??{}).filter(c=>!Object.hasOwn(this.board.cards,c));this.trays.replaceChildren(...[...this.board.missing].map(([c,b],f)=>this.tray(c,b,f,d[c]))),s.length?this.trays.append(this.deletedTray(s,i.cards)):this.showDeleted=!1;let l=this.board.columnIds.map((c,b)=>this.lane(c,b));this.editing?.kind==="column"?l.push(this.newLane()):l.push(p(e,"blockeditor-board-addcol","plus",null,{"aria-label":"Add column",title:"Add column","data-action":"add-column","data-focus":"add-column"})),this.lanes.replaceChildren(...l),o&&this.focusKey(o)&&r&&e.activeElement.setSelectionRange?.(...r),this.dragger?.repaint()}finally{this.rendering=!1}}lane(e,t){let o=this.dom.ownerDocument,r=this.board.lanes.get(e),i=this.board.columns[e].name||"Untitled",d=`${this.uid}-col-${t}`,s=n(o,"div","blockeditor-board-lane",{role:"group","aria-labelledby":d,"data-col":e}),l=n(o,"div","blockeditor-board-head",{"data-col":e});this.editing?.kind==="rename"&&this.editing.id===e?l.append(this.editing.input,n(o,"span","blockeditor-board-name blockeditor-board-sr",{id:d},i),$(o,r.length)):(l.append(n(o,"h4","blockeditor-board-name",{id:d},i),$(o,r.length)),l.append(p(o,"blockeditor-board-icon blockeditor-board-colmenu","more",null,{"aria-haspopup":"menu","aria-expanded":String(this.menu===e),"aria-label":`${i} column options`,"data-action":"colmenu","data-col":e,"data-focus":`colmenu:${e}`})),this.menu===e&&l.append(this.columnMenu(e,t,i)));let b=n(o,"ol","blockeditor-board-cards");for(let f of r){let T=n(o,"li");T.append(this.card(f)),b.append(T)}return s.append(l,b),this.editing?.kind==="card"&&this.editing.id===e?s.append(this.editing.input):s.append(p(o,"blockeditor-board-add","plus","Add card",{"data-action":"add-card","data-col":e,"data-focus":`add:${e}`})),s}newLane(){let e=this.dom.ownerDocument,t=n(e,"div","blockeditor-board-lane",{role:"group","aria-label":"New column"}),o=n(e,"div","blockeditor-board-head");return o.append(this.editing.input),t.append(o),t}card(e){let t=this.dom.ownerDocument,o=this.board.cards[e],r=n(t,"button","blockeditor-board-card",{type:"button","aria-haspopup":"dialog","aria-expanded":String(this.isOpen(e)),"data-action":"card","data-card":e,"data-focus":`card:${e}`});if(r.append(n(t,"span","blockeditor-board-title",{},o.title||"Untitled")),o.owner||o.due){let i=n(t,"span","blockeditor-board-meta");if(o.owner){let d=n(t,"span","blockeditor-board-owner");d.append(I(t,o.owner),n(t,"span","blockeditor-board-owner-name",{},o.owner)),i.append(d)}o.due&&i.append(W(t,o.due)),r.append(i)}return r}tray(e,t,o,r){let i=this.dom.ownerDocument,d=`${this.uid}-missing-${o}`,s=n(i,"div","blockeditor-board-tray",{role:"group","aria-labelledby":d,"data-col":e}),l=n(i,"div","blockeditor-board-tray-head");l.append(n(i,"h4","blockeditor-board-name",{id:d},r?`Cards from deleted column \u201C${r.name||"Untitled"}\u201D`:"Cards from a deleted column"),$(i,t.length)),r&&l.append(p(i,"blockeditor-board-btn blockeditor-board-restore","restore","Restore column",{"data-action":"restore-column","data-col":e,"data-focus":`restore:${e}`}));let c=n(i,"ol","blockeditor-board-cards");for(let b of t){let f=n(i,"li");f.append(this.card(b),this.moveSelect(b)),c.append(f)}return s.append(l,c),s}deletedTray(e,t){let o=this.dom.ownerDocument,r=n(o,"div","blockeditor-board-tray blockeditor-board-deleted",{role:"group","aria-label":"Deleted cards"}),i=n(o,"div","blockeditor-board-tray-head");if(i.append(p(o,"blockeditor-board-btn blockeditor-board-deleted-toggle","chevron",`Deleted cards (${e.length})`,{"aria-expanded":String(!!this.showDeleted),"data-action":"toggle-deleted","data-focus":"toggle-deleted"})),r.append(i),!this.showDeleted)return r;let d=n(o,"ol","blockeditor-board-deleted-list");for(let s of e.sort((l,c)=>(t[l].pos??"")<(t[c].pos??"")?-1:1)){let l=t[s].title||"Untitled",c=n(o,"li","blockeditor-board-deleted-item");c.append(n(o,"span","blockeditor-board-title",{},l),p(o,"blockeditor-board-btn blockeditor-board-restore","restore","Restore",{"aria-label":`Restore ${l}`,"data-action":"restore-card","data-card":s,"data-focus":`restore-card:${s}`})),d.append(c)}return r.append(d),r}moveSelect(e){let t=this.dom.ownerDocument,o=n(t,"span","blockeditor-board-select blockeditor-board-move"),r=n(t,"select",null,{"aria-label":`Move ${this.board.cards[e].title||"Untitled"} to column`,"data-action":"orphan-move","data-card":e,"data-focus":`move:${e}`,disabled:!this.board.columnIds.length});r.append(n(t,"option",null,{value:"",selected:!0,disabled:!0,hidden:!0},"Move to column"));for(let i of this.board.columnIds)r.append(n(t,"option",null,{value:i},this.board.columns[i].name||"Untitled"));return o.append(r),o.insertAdjacentHTML("beforeend",x.chevron),o}columnMenu(e,t,o){let r=this.dom.ownerDocument,i=this.board.columnIds.length-1,d=n(r,"div","blockeditor-board-pop blockeditor-board-menu",{role:"menu","aria-label":`${o} column`}),s=(l,c,b,f=!1)=>p(r,`blockeditor-board-option${l==="delete-column"?" is-danger":""}`,b,c,{role:"menuitem","data-action":l,"data-col":e,"data-focus":`${l}:${e}`,disabled:f});return d.append(s("rename","Rename","pencil"),s("left","Move left","left",t===0),s("right","Move right","right",t===i),n(r,"div","blockeditor-board-sep",{role:"separator"}),s("delete-column","Delete column","trash")),d}isOpen(e){return this.panel?.isOpen(this.blockId,e)??!1}openMenu(e){this.menu=e,this.render(),this.dom.querySelector(".blockeditor-board-menu .blockeditor-board-option:not(:disabled)")?.focus()}closeMenu(e){let t=this.menu;this.menu=null,this.dom.querySelector(".blockeditor-board-menu")?.remove();for(let o of this.dom.querySelectorAll(".blockeditor-board-colmenu"))o.setAttribute("aria-expanded","false");e&&this.focusKey(`colmenu:${t}`)}inlineInput(e,t,o,r=""){let i=n(this.dom.ownerDocument,"input",e,{type:"text","aria-label":t,"data-focus":o,placeholder:e==="blockeditor-board-new"?"Card title":"Column name"});return i.value=r,i.addEventListener("keydown",d=>{d.isComposing||d.keyCode===229||(d.key==="Enter"?(d.preventDefault(),this.finishEdit(!0,!0)):d.key==="Escape"&&(d.preventDefault(),this.finishEdit(!1,!0)))}),i.addEventListener("blur",()=>{this.rendering||setTimeout(()=>{this.editing?.input===i&&i.ownerDocument.activeElement!==i&&this.finishEdit(!0,!1)},0)}),i}startEdit(e,t){this.editing&&this.finishEdit(!0,!1),this.menu=null;let o=e==="rename"?this.board.columns[t]?.name??"":"",r=e==="card"?`new:${t}`:e==="column"?"new-column":`name:${t}`,i=this.inlineInput(e==="card"?"blockeditor-board-new":"blockeditor-board-rename",e==="card"?"New card title":"Column name",r,o);this.editing={kind:e,id:t,input:i},this.render(),i.focus(),i.select()}finishEdit(e,t){let o=this.editing;if(!o)return;let r=o.input.value.trim();if(o.kind==="card"&&e&&r&&t){if(this.run("createCard",{columnId:o.id,title:r})?.status!=="refused")o.input.value="";else if(!this.board.columns[o.id]){this.editing=null,this.render(),this.focusKey("add-column");return}this.focusKey(`new:${o.id}`);return}this.editing=null;let i=o.kind==="column"?"add-column":o.kind==="card"?`add:${o.id}`:`colmenu:${o.id}`;if(e&&r)if(o.kind==="card")this.run("createCard",{columnId:o.id,title:r});else if(o.kind==="column"){let d=this.run("createColumn",{name:r});d.status==="created"&&(i=`add:${d.id}`)}else r!==this.board.columns[o.id]?.name&&this.run("renameColumn",o.id,r);this.render(),t&&this.focusKey(i)}shiftColumn(e,t){let o=this.board.columnIds,r=o.indexOf(e);this.menu=null,this.run("moveColumn",e,{afterId:t<0?L(o,r):o[r+1]}),this.render(),this.focusKey(`colmenu:${e}`)}deleteColumn(e){let t=this.board.columnIds,o=t[t.indexOf(e)+1]??t[t.indexOf(e)-1];this.menu=null;let r=this.run("removeColumn",e);this.render(),r.status==="removed"&&(h(this.view,r.cards?"Column deleted. Its cards are under Cards from a deleted column.":"Column deleted"),!this.focusKey(`restore:${e}`)&&!this.focusKey(`colmenu:${o}`)&&this.focusKey("add-column"))}restoreCard(e){this.run("restoreCard",e).status==="restored"&&(h(this.view,"Card restored"),this.focusKey(`card:${e}`)||this.focusKey("toggle-deleted"))}restoreColumn(e){this.run("restoreColumn",e).status==="restored"&&(h(this.view,"Column restored"),this.focusKey(`colmenu:${e}`))}openCard(e){this.menu=null,this.dom.querySelector(".blockeditor-board-menu")?.remove(),this.panel?.open(this.blockId,e,{commands:this.commands,undo:this.undo,redo:this.redo})}click(e){let t=e.target.closest?.("[data-action]");if(!t||!this.dom.contains(t)||t.disabled)return;let{action:o,col:r,card:i}=t.dataset;this.editing&&o!=="add-card"&&o!=="add-column"&&o!=="rename"&&this.finishEdit(!0,!1),o==="card"?this.openCard(i):o==="colmenu"?this.menu===r?this.closeMenu(!0):this.openMenu(r):o==="rename"?this.startEdit("rename",r):o==="left"||o==="right"?this.shiftColumn(r,o==="left"?-1:1):o==="delete-column"?this.deleteColumn(r):o==="add-card"?this.startEdit("card",r):o==="add-column"?this.startEdit("column",null):o==="restore-column"?this.restoreColumn(r):o==="restore-card"?this.restoreCard(i):o==="toggle-deleted"&&(this.showDeleted=!this.showDeleted,this.render(),this.focusKey("toggle-deleted"))}change(e){let t=e.target;if(t.dataset?.action!=="orphan-move"||!t.value)return;let o=t.dataset.card,r=t.value,i=this.board.lanes.get(r)??[];this.run("moveCard",o,{columnId:r,afterId:i[i.length-1]??null}).status==="moved"&&this.focusKey(`card:${o}`)}keydown(e){let t=e.key.toLowerCase();if((e.metaKey||e.ctrlKey)&&(t==="z"||t==="y")&&!V(e.target)){e.preventDefault(),t==="y"||e.shiftKey?this.redo?.():this.undo?.();return}let o=e.target.closest?.(".blockeditor-board-menu");if(o){if(e.key==="Escape"||e.key==="Tab")e.preventDefault(),this.closeMenu(!0);else if(e.key==="ArrowDown"||e.key==="ArrowUp"){e.preventDefault();let r=[...o.querySelectorAll(".blockeditor-board-option:not(:disabled)")],i=r.indexOf(e.target);r[(i+(e.key==="ArrowDown"?1:-1)+r.length)%r.length]?.focus()}}}focusout(e){if(this.rendering||this.menu===null)return;let t=this.dom.querySelector(".blockeditor-board-menu");t?.contains(e.target)&&!t.contains(e.relatedTarget)&&this.closeMenu(!1)}update(e){if(e.type!==Y.board||e.attrs.id!==this.node.attrs.id)return!1;let t=!e.sameMarkup(this.node);return this.node=e,t&&this.render(),!0}stopEvent(){return!0}ignoreMutation(){return!0}destroy(){let e=S.get(this.view),t=e?.get(this.blockId);this.editing&&t&&t!==this&&(t.editing=this.editing,t.render()),t===this&&e.delete(this.blockId),this.dragger.stop()}};var k=new WeakMap;var Z="(max-width: 1039.98px)",G=a=>/^(INPUT|TEXTAREA|SELECT)$/.test(a?.tagName??""),J=0;function U(a){return k.has(a)||k.set(a,new B(a)),k.get(a)}var B=class{constructor(e){this.view=e,this.blockId=null,this.cardId=null,this.host=null,this.node=null,this.people=[],this.dueInput=null,this.rendering=!1,this.titleBase="",this.ownerBase="";let t=e.dom.ownerDocument,o=`blockeditor-board-panel-${++J}`;this.scrim=n(t,"div","blockeditor-board-scrim",{"aria-hidden":"true"}),this.dom=n(t,"aside","blockeditor-board-panel",{role:"dialog","aria-modal":"false","aria-labelledby":`${o}-title`});let r=n(t,"div","blockeditor-board-panel-top");this.title=n(t,"textarea","blockeditor-board-panel-title",{id:`${o}-title`,rows:2,"aria-label":"Card title",spellcheck:"false","data-focus":"title"}),r.append(this.title,p(t,"blockeditor-board-icon blockeditor-board-close","close",null,{"aria-label":"Close","aria-keyshortcuts":"Escape","data-action":"close","data-focus":"close"})),this.ownerInput=n(t,"input","blockeditor-board-owner-input",{type:"text","aria-label":"Owner name",placeholder:"Or type a name\u2026","data-focus":"owner-name"}),this.fields=n(t,"div","blockeditor-board-fields"),this.actions=n(t,"div","blockeditor-board-actions"),this.dom.append(r,this.fields,this.actions),this.labels={column:`${o}-column`,owner:`${o}-owner`,due:`${o}-due`},this.textField(this.title,()=>this.commitTitle()),this.textField(this.ownerInput,()=>this.commitOwner()),this.dom.addEventListener("click",i=>this.click(i)),this.dom.addEventListener("mousedown",i=>{i.target.closest?.("button")&&i.preventDefault()}),this.dom.addEventListener("change",i=>{i.target.dataset.focus==="column"&&this.moveTo(i.target.value)}),this.dom.addEventListener("keydown",i=>this.keydown(i)),this.scrim.addEventListener("click",()=>this.hide(!0))}textField(e,t){e.addEventListener("keydown",o=>{o.isComposing||o.keyCode===229||(o.key==="Enter"&&!o.shiftKey?(o.preventDefault(),t()):o.key==="Escape"&&(o.preventDefault(),this.hide(!0)))}),e.addEventListener("blur",()=>{this.rendering||setTimeout(()=>{this.blockId!==null&&e.ownerDocument.activeElement!==e&&t()},0)})}get shell(){return this.view.dom.parentElement}isOpen(e,t){return this.blockId===e&&this.cardId===t}boardNode(){let e=null;return this.view.state.doc.forEach(t=>{!e&&t.type===w.nodes.board&&t.attrs.id===this.blockId&&(e=t)}),e}card(){return this.boardNode()?.attrs.cards?.[this.cardId]??null}boardButton(e,t){let o=[...this.view.dom.querySelectorAll(".blockeditor-board")].find(r=>r.dataset.id===e);return o?[...o.querySelectorAll("[data-focus]")].find(r=>r.dataset.focus===t&&!r.disabled)??null:null}setExpanded(e){this.boardButton(this.blockId,`card:${this.cardId}`)?.setAttribute("aria-expanded",String(e))}open(e,t,o){this.blockId!==null&&(this.commit(),this.setExpanded(!1)),this.blockId=e,this.cardId=t,this.host=o,this.dueInput=null,this.dom.isConnected||this.shell.append(this.scrim,this.dom),this.shell.classList.add("has-board-panel");let r=!!this.view.dom.ownerDocument.defaultView.matchMedia?.(Z).matches;this.dom.setAttribute("aria-modal",String(r)),this.render(!0),this.setExpanded(!0),r?this.focusKey("close"):this.title.focus(),this.loadPeople()}hide(e=!1,t=!0){if(this.blockId===null)return;t&&this.commit();let{blockId:o,cardId:r}=this;this.setExpanded(!1),this.blockId=this.cardId=this.node=null,this.dueInput=null,this.scrim.remove(),this.dom.remove(),this.shell?.classList.remove("has-board-panel"),e&&this.boardButton(o,`card:${r}`)?.focus()}loadPeople(){let e=globalThis.clay?.people?.available;e&&Promise.resolve().then(()=>e()).then(t=>{this.people=(Array.isArray(t)?t:[]).filter(o=>typeof o?.name=="string"&&o.name),this.blockId!==null&&this.render(!1)}).catch(()=>{})}run(e,...t){if(!this.host?.commands||!this.view.editable)return{status:"refused",code:"read-only"};let o=this.host.commands[e](this.blockId,this.cardId,...t);return o?.status==="refused"&&this.sync(!0),o}commit(){this.commitTitle(),this.commitOwner(),this.dueInput&&this.commitDue()}commitTitle(){let e=this.card(),t=this.title.value.replace(/\s*\n\s*/g," ");this.title.value=t,e&&t!==e.title&&this.run("editCard",{title:t})}commitOwner(){let e=this.card(),t=this.ownerInput.value.trim();this.ownerInput.value=t;let o=t||null;e&&o!==(e.owner??null)&&this.run("editCard",{owner:o})}commitDue(){let e=this.card(),t=this.dueInput?.value||null;this.dueInput=null,e&&t!==(e.due??null)?this.run("editCard",{due:t}):this.blockId!==null&&this.render(!1)}openDue(){let e=this.view.dom.ownerDocument,t=n(e,"input","blockeditor-board-control blockeditor-board-date",{type:"date","aria-labelledby":this.labels.due,"data-focus":"due-input"});t.value=this.card()?.due??"",t.addEventListener("keydown",o=>{o.key==="Enter"?(o.preventDefault(),this.commitDue(),this.focusKey("due")):o.key==="Escape"&&(o.preventDefault(),o.stopPropagation(),this.dueInput=null,this.render(!1),this.focusKey("due"))}),t.addEventListener("blur",()=>{this.rendering||setTimeout(()=>{this.dueInput===t&&e.activeElement!==t&&this.commitDue()},0)}),this.dueInput=t,this.render(!1),t.focus();try{t.showPicker?.()}catch{}}sync(e=!1){if(this.blockId===null)return;let t=this.boardNode();if(!e&&t===this.node)return;let o=this.node?.attrs.cards?.[this.cardId]?.col;if(!t?.attrs.cards?.[this.cardId]){let r=this.dom.contains(this.view.dom.ownerDocument.activeElement),i=this.blockId;this.hide(!1,!1),r&&(this.boardButton(i,`add:${o}`)??this.boardButton(i,"add-column"))?.focus();return}this.render(!1)}focusKey(e){let t=[...this.dom.querySelectorAll("[data-focus]")].find(o=>o.dataset.focus===e&&!o.disabled);return t?.focus(),!!t}render(e){let t=this.view.dom.ownerDocument;this.node=this.boardNode();let o=g(this.node),r=o.cards[this.cardId];if(!r)return this.hide(!1,!1);let i=t.activeElement,d=this.dom.contains(i)?i.dataset.focus:null,s=d&&typeof i.selectionStart=="number"?[i.selectionStart,i.selectionEnd]:null;this.rendering=!0;try{let l=!e&&this.title.value!==this.titleBase;this.titleBase=r.title??"",l||(this.title.value=this.titleBase);let c=!e&&this.ownerInput.value!==this.ownerBase;this.ownerBase=r.owner??"",c||(this.ownerInput.value=this.ownerBase),this.fields.replaceChildren(this.columnField(o,r),this.ownerField(r),this.dueField(r)),this.actions.replaceChildren(...this.actionButtons(o,r)),d&&d!=="title"&&this.focusKey(d)?s&&t.activeElement.setSelectionRange?.(...s):(d==="up"||d==="down")&&this.focusKey(d==="up"?"down":"up")}finally{this.rendering=!1}}field(e,t,o,r=!1){let i=this.view.dom.ownerDocument,d=n(i,"div",`blockeditor-board-field${r?" is-owner":""}`);return d.append(n(i,"span","blockeditor-board-label",{id:this.labels[e]},t),o),d}columnField(e,t){let o=this.view.dom.ownerDocument,r=n(o,"span","blockeditor-board-select"),i=n(o,"select","blockeditor-board-control",{"aria-labelledby":this.labels.column,"data-focus":"column",disabled:!e.columnIds.length});e.lanes.has(t.col)||i.append(n(o,"option",null,{value:"",selected:!0,disabled:!0},"Deleted column"));for(let d of e.columnIds)i.append(n(o,"option",null,{value:d,selected:d===t.col},e.columns[d].name||"Untitled"));return r.append(i),r.insertAdjacentHTML("beforeend",x.chevron),this.field("column","Column",r)}ownerField(e){let t=this.view.dom.ownerDocument,o=n(t,"div","blockeditor-board-owners"),r=n(t,"div","blockeditor-board-people",{role:"group","aria-labelledby":this.labels.owner});for(let i of this.people){let d=n(t,"button","blockeditor-board-person",{type:"button","aria-pressed":String(i.name===e.owner),"data-action":"owner","data-owner":i.name,"data-focus":`owner:${i.id??i.name}`});d.append(I(t,i.name),n(t,"span",null,{},i.name)),r.append(d)}return r.append(n(t,"button","blockeditor-board-person is-none",{type:"button","aria-pressed":String(!e.owner),"data-action":"owner-none","data-focus":"owner-none"},"No owner")),o.append(r,this.ownerInput),this.field("owner","Owner",o,!0)}dueField(e){let t=this.view.dom.ownerDocument;if(this.dueInput)return this.field("due","Due",this.dueInput);let o=v(),r=e.due?M(e.due,o):null,i=e.due?A(e.due,o,!0):null,d=n(t,"button","blockeditor-board-control",{type:"button","aria-label":e.due?`Due ${i}${r==="overdue"?", overdue":""}`:"Set due date","data-action":"due","data-focus":"due"});return e.due?(d.append(n(t,"span","blockeditor-board-due",{"data-due":r},i)),r==="overdue"&&d.append(n(t,"span","blockeditor-board-due-note",{},"Overdue"))):d.append(n(t,"span","blockeditor-board-control-text blockeditor-board-none",{},"No date")),d.insertAdjacentHTML("beforeend",x.calendar),this.field("due","Due",d)}actionButtons(e,t){let o=this.view.dom.ownerDocument,r=e.lanes.get(t.col),i=r?r.indexOf(this.cardId):-1;return[p(o,"blockeditor-board-btn","up","Move up",{"data-action":"up","data-focus":"up",disabled:i<=0}),p(o,"blockeditor-board-btn","down","Move down",{"data-action":"down","data-focus":"down",disabled:i<0||i>=r.length-1}),p(o,"blockeditor-board-btn blockeditor-board-delete","trash","Delete card",{"data-action":"delete","data-focus":"delete"})]}step(e){let t=this.card(),o=t?g(this.node).lanes.get(t.col):null;if(!o)return;let r=o.indexOf(this.cardId);this.run("moveCard",{columnId:t.col,afterId:e<0?L(o,r):o[r+1]})}moveTo(e){let t=g(this.node).lanes.get(e)?.filter(o=>o!==this.cardId);t&&this.run("moveCard",{columnId:e,afterId:t[t.length-1]??null})}remove(){let e=this.card();if(!e)return;let t=g(this.node),o=t.lanes.get(e.col)??t.missing.get(e.col)??[],r=o.indexOf(this.cardId),i=o[r+1]??o[r-1],{blockId:d,cardId:s,host:l}=this;if(this.hide(!1,!1),!l?.commands||!this.view.editable||l.commands.removeCard(d,s).status!=="removed")return;h(this.view,"Card deleted"),(i&&this.boardButton(d,`card:${i}`)||this.boardButton(d,`add:${e.col}`)||this.boardButton(d,"add-column"))?.focus()}click(e){let t=e.target.closest?.("[data-action]");if(!t||t.disabled)return;let o=t.dataset.action;o!=="close"&&this.commitTitle(),o==="close"?this.hide(!0):o==="owner"?(this.ownerInput.value=this.ownerBase,this.run("editCard",{owner:t.dataset.owner})):o==="owner-none"?(this.ownerInput.value=this.ownerBase,this.run("editCard",{owner:null})):o==="due"?this.openDue():o==="up"||o==="down"?this.step(o==="up"?-1:1):o==="delete"&&this.remove()}keydown(e){let t=e.key.toLowerCase();if(!e.defaultPrevented){if(e.key==="Escape")e.preventDefault(),this.hide(!0);else if((e.metaKey||e.ctrlKey)&&(t==="z"||t==="y")&&!G(e.target))e.preventDefault(),t==="y"||e.shiftKey?this.host?.redo?.():this.host?.undo?.();else if(e.key==="Tab"&&this.dom.getAttribute("aria-modal")==="true"){let o=[...this.dom.querySelectorAll("button, input, select, textarea")].filter(r=>!r.disabled);if(e.target!==o[e.shiftKey?0:o.length-1])return;e.preventDefault(),o[e.shiftKey?o.length-1:0].focus()}}}};function ye({view:a=null,board:e=null,undo:t=null,redo:o=null}={}){let r=a?O(a,{update:i=>k.get(i)?.sync(),destroy:i=>{k.get(i)?.hide(!1,!1),k.delete(i)}}):()=>{};return{id:"board",nodeViews:e?{board:(i,d,s)=>new E(i,d,s,{commands:e,undo:t,redo:o,panel:U(d)})}:null,css:e?z:null,dispose(){r()}}}export{ye as createFeature};
@@ -0,0 +1 @@
1
+ import{a,b,c,d,e}from"./c-IUL7PU4P.js";import"./c-UOUUI265.js";import"./c-QHWJ5ZIJ.js";import"./c-SXNSSHPP.js";import"./c-UL2YUY52.js";import"./c-QY7F6EN6.js";import"./c-ESK4S67I.js";import"./c-MR75YPRT.js";import"./c-4JZDZFF6.js";import"./c-5RZNFTWD.js";import"./c-PKCCHJ5X.js";import"./c-46XYM55L.js";import"./c-NUHP2XDB.js";import"./c-VKEDWYDF.js";import"./c-ICMAOOGK.js";import"./c-WRBKEJD4.js";import"./c-VHNSBD2M.js";export{a as ask,b as consent,e as init,d as snippet,c as tell};
@@ -0,0 +1,32 @@
1
+ import{A as k,B as P,C as g,D as T,E as y,F as A,G as E,H as z,I as x,J as O,K as tt,L as et,M as ot,N as B,O as D,R as it,S as K,c as M,d as L,e as f,n as J,s as $,w as v,x as Q,z as Z}from"./c-CV4T65JE.js";import"./c-GO635CRU.js";import"./c-V2V5FKXX.js";import"./c-DD26VXAP.js";import"./c-CTGRDT6E.js";import"./c-7K4SCQB7.js";import"./c-WMRJKQ2V.js";import{C as Y,d as N}from"./c-ZRGEN6QQ.js";import{N as G,d as V,z as X}from"./c-OH2FPYSY.js";import"./c-FSQXFG5T.js";import"./c-RETTCOWO.js";import"./c-WCG6AKA7.js";import"./c-57XDY6HC.js";import{a as j}from"./c-I2SCCUEW.js";import"./c-VHNSBD2M.js";var nt=`
2
+ .blockeditor-editor .blockeditor-table { position: relative; }
3
+ .blockeditor-table td { position: relative; }
4
+ .blockeditor-table th { position: relative; }
5
+ .blockeditor-table td.is-cell-selected { background: var(--blockeditor-block-selected); }
6
+ .blockeditor-editor.has-cell-rect .blockeditor-table td ::selection, .blockeditor-editor.has-cell-rect .blockeditor-table td::selection { background: transparent; }
7
+ .blockeditor-editor.has-cell-rect .blockeditor-table td { caret-color: transparent; }
8
+ .blockeditor-table table.is-sized { table-layout: fixed; min-width: 0; }
9
+ .blockeditor-table table.is-sized th, .blockeditor-table table.is-sized td { min-width: 0; overflow-wrap: anywhere; }
10
+ .blockeditor-table-resize { position: absolute; top: 0; bottom: 0; inset-inline-end: -4px; width: 8px; z-index: 2; cursor: col-resize; touch-action: none; }
11
+ .blockeditor-table-resize:hover, .blockeditor-table-resize:active, .blockeditor-table-resize:focus-visible { background: var(--blockeditor-accent); opacity: 0.4; }
12
+ .blockeditor-table-add-row, .blockeditor-table-add-col { position: absolute; z-index: 1; padding: 0; background: var(--blockeditor-chrome-bg-moved); color: var(--blockeditor-ink-soft); display: flex; align-items: center; justify-content: center; font: inherit; font-size: 14px; line-height: 1; cursor: pointer; opacity: 0; transition: opacity 120ms; }
13
+ .blockeditor-table-add-row { left: 0; right: 0; top: 100%; height: 16px; border-radius: 0 0 6px 6px; border: 1px solid var(--blockeditor-chrome-line-moved); border-top: 0; padding-bottom: 2px; box-sizing: border-box; }
14
+ .blockeditor-table-add-col { top: 0; bottom: 0; left: 100%; width: 16px; border-radius: 0 6px 6px 0; border: 1px solid var(--blockeditor-chrome-line-moved); border-left: 0; box-sizing: border-box; }
15
+ .blockeditor-table:hover > .blockeditor-table-add-row, .blockeditor-table:hover > .blockeditor-table-add-col, .blockeditor-table-add-row:focus-visible, .blockeditor-table-add-col:focus-visible { opacity: 1; }
16
+ .blockeditor-table-add-row:hover, .blockeditor-table-add-col:hover { background: var(--blockeditor-pop-hover); color: var(--blockeditor-ink); }
17
+ .blockeditor-table-date { position: absolute; inset-inline-start: 0; top: 100%; z-index: 3; font: inherit; color: var(--blockeditor-pop-ink); background: var(--blockeditor-pop-bg); border: 1px solid var(--blockeditor-pop-line); border-radius: 6px; padding: 4px 6px; box-shadow: var(--blockeditor-pop-shadow); }
18
+ @media (max-width: 560px) {
19
+ .blockeditor-table-date { min-height: 44px; }
20
+ .blockeditor-table-resize { display: none; }
21
+ .blockeditor-table-add-row, .blockeditor-table-add-col { position: static; display: inline-block; width: 50%; height: 44px; border-radius: 0; opacity: 1; border-block-start: 1px solid var(--blockeditor-rule); }
22
+ .blockeditor-table-add-row::after { content: " Row"; }
23
+ .blockeditor-table-add-col::after { content: " Column"; }
24
+ }
25
+ `;var C=V.nodes,p=d=>X(d.attrs.cols),lt="That part of the table is no longer available.",at='<svg viewBox="0 0 16 16" width="14" height="14" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><g transform="scale(0.6667)" stroke-width="2.25"><path d="M12.22 2h-.44a2 2 0 0 0-2 2v.18a2 2 0 0 1-1 1.73l-.43.25a2 2 0 0 1-2 0l-.15-.08a2 2 0 0 0-2.73.73l-.22.38a2 2 0 0 0 .73 2.73l.15.1a2 2 0 0 1 1 1.72v.51a2 2 0 0 1-1 1.74l-.15.09a2 2 0 0 0-.73 2.73l.22.38a2 2 0 0 0 2.73.73l.15-.08a2 2 0 0 1 2 0l.43.25a2 2 0 0 1 1 1.73V20a2 2 0 0 0 2 2h.44a2 2 0 0 0 2-2v-.18a2 2 0 0 1 1-1.73l.43-.25a2 2 0 0 1 2 0l.15.08a2 2 0 0 0 2.73-.73l.22-.39a2 2 0 0 0-.73-2.73l-.15-.08a2 2 0 0 1-1-1.74v-.5a2 2 0 0 1 1-1.74l.15-.09a2 2 0 0 0 .73-2.73l-.22-.38a2 2 0 0 0-2.73-.73l-.15.08a2 2 0 0 1-2 0l-.43-.25a2 2 0 0 1-1-1.73V4a2 2 0 0 0-2-2z"/><circle cx="12" cy="12" r="3"/></g></svg>',ht=`
26
+ .blockeditor-editor .blockeditor-table-actions { position: absolute; z-index: 2; bottom: 100%; inset-inline-end: 0; inset-inline-start: auto; width: 24px; height: 20px; padding: 0; display: grid; place-items: center; border: 1px solid var(--blockeditor-chrome-line-rest); border-bottom: 0; border-radius: 6px 6px 0 0; background: var(--blockeditor-chrome-bg-moved); color: var(--blockeditor-chrome-ink-moved); font: inherit; cursor: pointer; opacity: 1; }
27
+ .blockeditor-editor .blockeditor-table-actions:hover { background: var(--blockeditor-pop-hover); color: var(--blockeditor-ink-soft); }
28
+ @media (max-width: 560px) {
29
+ .blockeditor-editor .blockeditor-table-actions { position: absolute; }
30
+ .blockeditor-editor .blockeditor-table-actions::after { content: ""; position: absolute; inset: -12px; }
31
+ }
32
+ `,dt=(d,t)=>`${d}-${t}`,st=(d,t)=>d.name||`Column ${t+1}`,ut=(d,t)=>(d.childCount?d.child(0).textContent.trim():"")||`Row ${t+1}`,R=(d,t)=>{let e=null;return d.forEach((o,i)=>{!e&&o.type===C.table&&o.attrs.id===t&&(e={table:o,pos:i})}),e},W=(d,t)=>t==null?0:[...d.content.content].findIndex(e=>e.attrs.id===t),F=(d,t)=>t==null?0:p(d).indexOf(t),ct=(d,t,e)=>{let o=R(d.state.doc,t.tableId);if(!o)return!1;let i=e==="row"?W(o.table,t.rowId):F(o.table,t.colId);return i<0?!1:J(d,o.pos,e,i)},U=(d,t,e)=>{let o=R(d.state.doc,t.tableId);if(!o)return!1;let i=W(o.table,t.rowId),s=F(o.table,t.colId);return i<0||s<0||(K(d,o.pos,i,s),e(d.state,null)!==!0)?!1:e(d.state,d.dispatch)},bt=["fontFamily","fontSize","fontWeight","fontStyle","letterSpacing"],mt=d=>{let t=d.ownerDocument,e=t.defaultView.getComputedStyle(d),o=t.createElement("span");for(let s of bt)o.style[s]=e[s];Object.assign(o.style,{position:"absolute",visibility:"hidden",whiteSpace:"pre",left:"-9999px",top:"0"}),o.textContent=d.textContent,t.body.append(o);let i=o.getBoundingClientRect().width;return o.remove(),Math.ceil(i)},pt=d=>Number.isFinite(d)&&d>0?Math.round(Math.min(z,Math.max(E,d))):null,rt=(d,t,e)=>{let o=d.createElement("button");return o.type="button",o.textContent=t,o.setAttribute("aria-label",t),o.addEventListener("click",e),o},_=class{constructor(t,e,o){this.node=t,this.view=e,this.getPos=o,this.preview=null,this.renaming=null,this.renamingUnsaved=null,this.menuAnchor=null,this.destroyed=!1;let i=e.dom.ownerDocument;this.dom=i.createElement("div"),this.dom.className="blockeditor-table",this.dom.dataset.id=t.attrs.id??"",this.dom.setAttribute("role","group"),this.dom.setAttribute("aria-label","Table");let s=i.createElement("div");s.className="blockeditor-table-scroll";let n=i.createElement("table");n.setAttribute("aria-label","Table"),this.table=n,this.colgroup=i.createElement("colgroup"),this.header=i.createElement("thead"),this.header.contentEditable="false",this.contentDOM=i.createElement("tbody"),n.append(this.colgroup,this.header,this.contentDOM),s.append(n);let l=rt(i,"+",()=>this.append("row"));l.className="blockeditor-table-add-row",l.setAttribute("aria-label","Add a row"),l.title="Add a row";let r=rt(i,"+",()=>this.append("column"));r.className="blockeditor-table-add-col",r.setAttribute("aria-label","Add a column"),r.title="Add a column";let a=i.createElement("button");a.type="button",a.className="blockeditor-table-actions",a.innerHTML=at,a.dataset.control="actions",a.setAttribute("aria-haspopup","menu"),a.setAttribute("aria-expanded","false"),a.setAttribute("aria-label","Table actions"),a.title="Table actions",this.actionsButton=a,a.addEventListener("click",c=>{c.preventDefault(),this.menuAnchor=a,this.openActions()}),a.addEventListener("keydown",c=>{c.key!=="Enter"&&c.key!==" "||(c.preventDefault(),this.menuAnchor=a,this.openActions())});for(let c of[l,r,a])c.contentEditable="false",c.addEventListener("mousedown",u=>u.preventDefault());this.dom.append(s,l,r,a),this.render()}control(t){return!t||t.tableId&&t.tableId!==this.node.attrs.id?null:[...this.dom.querySelectorAll(`[data-control="${t.control}"]`)].find(o=>(t.colId==null||o.dataset.col===t.colId)&&(t.rowId==null||o.dataset.row===t.rowId))??null}controls(t){return[...this.dom.querySelectorAll(`[data-control="${t}"]`)].filter(e=>!e.hidden&&!e.closest("[hidden]"))}focusControl(t){if(!t||t.tableId&&t.tableId!==this.node.attrs.id)return null;let e=this.control(t),o=e?[]:this.controls(t.control),i=o.length?o[Math.min(t.index??0,o.length-1)]:null,s=e??i??this.actionsButton;return s?.focus?.(),s}describe(t){if(!t||!this.dom.contains(t))return null;let e=t.dataset?.control;return e?{tableId:this.node.attrs.id,rowId:t.dataset.row??null,colId:t.dataset.col??null,control:e,index:this.controls(e).indexOf(t)}:null}afterUpdate(t){queueMicrotask(()=>{if(this.destroyed||this.view.isDestroyed)return;let e=this.dom.ownerDocument.activeElement;e&&this.dom.contains(e)||this.focusControl(t)})}act(t,e,o){let i=U(this.view,t,e);return N(this.view,i?o:lt),i}cellTarget(t=this.node){let e=this.getPos(),{$head:o}=this.view.state.selection,i=0,s=0;for(let l=o.depth;l>0;l--)if(o.node(l).type===C.table){e!=null&&o.before(l)===e&&(i=l<o.depth?o.index(l):0,s=l+1<o.depth?o.index(l+1):0);break}let n=[...t.content.content];return{tableId:t.attrs.id,rowId:n[i]?.attrs.id??null,colId:p(t)[s]??null}}openActions(){let t=this.cellTarget(),e=R(this.view.state.doc,t.tableId)?.table;return e?this.actions(e,t):!1}actions(t,e){let o=p(t),i=Math.max(0,F(t,e.colId)),s=Math.max(0,W(t,e.rowId)),n=t.attrs.cols[o[i]]??{},l=t.attrs.sort,r=(c,u)=>()=>this.act(e,c,u),a=this.widthOfColumn(o[i]);return v(this.view,this.actionsButton,[{label:"Insert row above",icon:"+",run:r(k(!1),"Row inserted")},{label:"Insert row below",icon:"+",run:r(k(!0),"Row inserted")},...s>0?[{label:"Move row up",icon:"\u2191",run:r(y(-1),"Row moved")}]:[],...s<t.childCount-1?[{label:"Move row down",icon:"\u2193",run:r(y(1),"Row moved")}]:[],{label:"Delete row",icon:"\xD7",run:r(P,"Row deleted")},{label:"Insert column left",icon:"+",run:r(g(!1),"Column inserted")},{label:"Insert column right",icon:"+",run:r(g(!0),"Column inserted")},...i>0?[{label:"Move column left",icon:"\u2190",run:r(A(-1),"Column moved")}]:[],...i<o.length-1?[{label:"Move column right",icon:"\u2192",run:r(A(1),"Column moved")}]:[],...o.length>1?[{label:"Delete column",icon:"\xD7",run:r(T,"Column deleted")}]:[],{label:"Sort ascending",icon:"\u2191",checked:l?.col===o[i]&&l.dir==="asc",run:r(D(o[i],"asc"),"Sorted ascending")},{label:"Sort descending",icon:"\u2193",checked:l?.col===o[i]&&l.dir==="desc",run:r(D(o[i],"desc"),"Sorted descending")},{label:"Chart this table",icon:"\u{1F4CA}",run:()=>{let c=this.getPos();return $(this.view).then(({insertChartAfterTable:u})=>u(this.view,c))}},{label:"Rename column",focus:!1,run:()=>this.beginRename(o[i])},{label:"Column width \u25B8",icon:"\u2194",hint:n.width?`${n.width}px`:"Auto",focus:!1,run:()=>v(this.view,this.actionsButton,[{label:"Wider",icon:"+",run:r(this.widthCommand(o[i],a+40),"Column width changed")},{label:"Narrower",icon:"\u2212",run:r(this.widthCommand(o[i],a-40),"Column width changed")},{label:"Fit to content",icon:"\u2194",run:()=>this.fit(o[i])},...this.isSized()?[{label:"Reset widths",icon:"\xD7",run:r(O(o[i]),"Column widths reset")}]:[]])}],{persist:!0})}beginRename(t){let e=this.control({control:"column",colId:t}),o=this.node.attrs.cols[t];if(!e||!o)return!1;let i=this.dom.ownerDocument,s=this.node.attrs.id,n=i.createElement("input");n.type="text",n.className="blockeditor-table-rename",n.dataset.control="rename",n.dataset.col=t,n.value=o.name??"",n.setAttribute("aria-label","Column name");let l=j({id:"table-rename",isPending:()=>this.renaming===n&&n.value.trim()!==(o.name??"")});this.renamingUnsaved=l;let r=a=>{if(this.renaming!==n)return;this.renaming=null,this.renamingUnsaved=null,l.dispose();let c=n.value.trim();a&&c&&this.act({tableId:s,colId:t},ot(t,c),"Column renamed"),n.isConnected&&n.replaceWith(e),this.focusControl({tableId:s,control:"column",colId:t})};return n.addEventListener("keydown",a=>{a.isComposing||a.keyCode===229||(a.key==="Enter"&&(a.preventDefault(),r(!0)),a.key==="Escape"&&(a.preventDefault(),r(!1)),a.stopPropagation())}),n.addEventListener("blur",()=>r(!0)),this.renaming=n,e.replaceWith(n),n.focus(),n.select(),!0}append(t){let e=this.getPos();if(e==null)return;let o=t==="row"?[this.node.childCount-1,0]:[0,this.node.child(0).childCount-1];K(this.view,e,...o),(t==="row"?k(!0):g(!0))(this.view.state,this.view.dispatch),this.view.focus()}widths(){this.frozen=null;let t=p(this.node).some(o=>this.node.attrs.cols[o].width),e=p(this.node).map(o=>{let i=this.dom.ownerDocument.createElement("col");i.dataset.col=o;let s=this.node.attrs.cols[o].width;return t&&(i.style.width=`${s??x}px`),i});this.colgroup.replaceChildren(...e),this.table.classList.toggle("is-sized",t),this.table.style.width=t?`${p(this.node).reduce((o,i)=>o+(this.node.attrs.cols[i].width??x),0)}px`:""}resizer(t,e,o,i){let s=this.dom.ownerDocument,n=s.createElement("span");return n.className="blockeditor-table-resize",n.dataset.control="resize",n.dataset.col=t,n.setAttribute("role","separator"),n.setAttribute("aria-orientation","vertical"),n.setAttribute("aria-label",`Resize column ${st(o,i)}`),n.setAttribute("aria-valuemin",String(E)),n.setAttribute("aria-valuemax",String(z)),n.setAttribute("aria-valuenow",String(this.widthOfColumn(t))),n.tabIndex=0,n.title="Drag or use the arrow keys to resize, double-click to reset the table to the page width",n.addEventListener("mousedown",l=>l.preventDefault()),n.addEventListener("blur",()=>this.commitWidth(t)),n.addEventListener("keydown",l=>this.resizeKey(l,t)),n.addEventListener("keyup",l=>{["ArrowLeft","ArrowRight","Home","End"].includes(l.key)&&this.commitWidth(t)}),n.addEventListener("pointerdown",l=>{l.preventDefault();let r=l.clientX,a=this.widthOfColumn(t);this.freeze();let c=this.dom.ownerDocument.defaultView.getComputedStyle?.(this.dom).direction==="rtl",u=a,b=S=>{u=pt(a+(c?r-S.clientX:S.clientX-r))??a,this.showWidth(t,u)},h=()=>{s.removeEventListener("pointermove",b),s.removeEventListener("pointerup",h),u!==a?this.sizeColumn(t,u):this.widths()};s.addEventListener("pointermove",b),s.addEventListener("pointerup",h)}),n.addEventListener("dblclick",l=>{l.preventDefault(),this.command(t,O(t))}),n}isSized(){return p(this.node).some(t=>this.node.attrs.cols[t].width)}drawnWidths(){let t={};for(let e of this.header.querySelectorAll("th"))t[e.dataset.col]=Math.round(e.getBoundingClientRect().width)||x;return t}widthOfColumn(t){let e=this.node.attrs.cols[t]?.width;return e||(this.isSized()?x:this.drawnWidths()[t]??x)}freeze(){if(!(this.isSized()||this.frozen)){this.frozen=this.drawnWidths();for(let t of this.colgroup.children)t.style.width=`${this.frozen[t.dataset.col]}px`;this.table.style.width=`${Object.values(this.frozen).reduce((t,e)=>t+e,0)}px`,this.table.classList.add("is-sized")}}showWidth(t,e){let o=[...this.colgroup.children].find(i=>i.dataset.col===t);o&&(this.table.classList.add("is-sized"),o.style.width=`${e}px`,this.frozen&&(this.table.style.width=`${Object.values({...this.frozen,[t]:e}).reduce((i,s)=>i+s,0)}px`))}widthCommand(t,e){return this.isSized()?et(t,e):tt({...this.frozen??this.drawnWidths(),[t]:e},t)}sizeColumn(t,e){return this.command(t,this.widthCommand(t,e))}handleFor(t){return[...this.header.querySelectorAll(".blockeditor-table-resize")].find(e=>e.dataset.col===t)??null}resizeKey(t,e){let o=t.shiftKey?50:10,i=this.preview?.col===e?this.preview.width:this.widthOfColumn(e),s;if(t.key==="ArrowLeft")s=i-o;else if(t.key==="ArrowRight")s=i+o;else if(t.key==="Home")s=E;else if(t.key==="End")s=z;else if(t.key==="Enter"){t.preventDefault(),this.commitWidth(e);return}else if(t.key==="Escape"){t.preventDefault(),this.cancelWidth(e);return}else return;t.preventDefault(),this.previewWidth(e,Math.min(z,Math.max(E,Math.round(s))))}previewWidth(t,e){let o=this.preview?.col===t?this.preview.base:this.widthOfColumn(t);this.freeze(),this.preview={col:t,width:e,base:o},this.showWidth(t,e);let i=this.handleFor(t);i&&i.setAttribute("aria-valuenow",String(e))}cancelWidth(t){this.preview?.col===t&&(this.preview=null),this.widths(),this.handleFor(t)?.setAttribute("aria-valuenow",String(this.widthOfColumn(t)))}commitWidth(t){let e=this.preview;if(!e||e.col!==t)return!1;this.preview=null;let o=this.getPos(),i=o==null?null:this.view.state.doc.nodeAt(o),s=i?.type===C.table&&i.attrs.id===this.node.attrs.id?i.attrs.cols[t]:null;if(!s)return this.widths(),!1;if((s.width??e.base)===e.width)return this.widths(),!1;let n=p(i).some(r=>i.attrs.cols[r].width)?{}:this.frozen??this.drawnWidths(),l={...i.attrs.cols};for(let[r,a]of Object.entries(n))l[r]&&(l[r]={...l[r],width:a});return l[t]={...s,width:e.width},this.view.dispatch(Y(this.view.state.tr.setNodeMarkup(o,null,{...i.attrs,cols:l}))),!0}command(t,e){let o=U(this.view,{tableId:this.node.attrs.id,colId:t},e);return this.view.focus(),o}fit(t){let e=0;for(let i of this.contentDOM.querySelectorAll("td"))i.dataset.col===t&&(e=Math.max(e,mt(i.querySelector("span")??i)));let o=[...this.header.querySelectorAll("th")].find(i=>i.dataset.col===t)?.querySelector("button");return e=Math.max(e,o?.scrollWidth??0),this.sizeColumn(t,e+24)}render(t=null){let e=this.dom.ownerDocument,o=e.createElement("tr"),i=M(this.node),s=this.node.attrs.id;this.widths();for(let[l,r]of p(this.node).entries()){let a=this.node.attrs.cols[r],c=i[r],u=st(a,l),b=e.createElement("th");b.dataset.col=r,b.dataset.kind=c,b.setAttribute("scope","col"),b.id=dt(s,r),this.node.attrs.sort?.col===r&&b.setAttribute("aria-sort",this.node.attrs.sort.dir==="asc"?"ascending":"descending");let h=e.createElement("button");h.type="button",h.className="blockeditor-table-col-menu",h.textContent=u,h.dataset.control="column",h.dataset.col=r,h.dataset.kind=c,h.setAttribute("aria-haspopup","menu"),h.setAttribute("aria-expanded","false"),h.setAttribute("aria-label",`${u} column actions`),h.addEventListener("click",S=>{S.preventDefault(),this.menuAnchor=h;let H={tableId:s,colId:r},m=(w,I)=>()=>this.act(H,w,I);v(this.view,h,[{label:"Rename",run:()=>this.beginRename(r),focus:!1},{label:"Kind \u25B8",icon:L[c],hint:a.kind?f[c]:`Auto: ${f[c]}`,run:()=>v(this.view,h,[{label:"Auto",icon:a.kind?"":L[c],hint:a.kind?"":f[c],checked:!a.kind,run:m(B(r,"auto"),`Kind ${f[c]}`)},...G.map(w=>({label:f[w],icon:L[w],checked:a.kind===w,run:m(B(r,w),`Kind ${f[w]}`)}))]),focus:!1},{label:"Sort ascending",icon:"\u2191",run:m(D(r,"asc"),"Sorted ascending")},{label:"Sort descending",icon:"\u2193",run:m(D(r,"desc"),"Sorted descending")},{label:"Width \u25B8",icon:"\u2194",hint:a.width?`${a.width}px`:"Auto",focus:!1,run:()=>v(this.view,h,[{label:"Wider",icon:"+",run:m(this.widthCommand(r,this.widthOfColumn(r)+40),"Column width changed")},{label:"Narrower",icon:"\u2212",run:m(this.widthCommand(r,this.widthOfColumn(r)-40),"Column width changed")},{label:"Fit to content",icon:"\u2194",run:()=>this.fit(r)},...this.isSized()?[{label:"Reset widths",icon:"\xD7",run:m(O(r),"Column widths reset")}]:[]])},{label:"Chart this table",icon:"\u{1F4CA}",run:()=>{let w=this.getPos();return $(this.view).then(({insertChartAfterTable:I})=>I(this.view,w))}},{label:"Insert column left",icon:"+",run:m(g(!1),"Column inserted")},{label:"Insert column right",icon:"+",run:m(g(!0),"Column inserted")},...l>0?[{label:"Move left",icon:"\u2190",run:m(A(-1),"Column moved")}]:[],...l<p(this.node).length-1?[{label:"Move right",icon:"\u2192",run:m(A(1),"Column moved")}]:[],{label:"Select column",icon:"\u25A6",run:()=>ct(this.view,H,"col")},{label:"Delete column",icon:"\xD7",run:m(T,"Column deleted")}],{persist:!0})}),b.append(h,this.resizer(r,b,a,l)),o.append(b)}let n=this.menuAnchor;if(this.header.replaceChildren(o),n){let l=this.control({tableId:s,control:n.dataset.control,colId:n.dataset.col??null,rowId:n.dataset.row??null});this.menuAnchor=l&&l!==n&&Q(this.view,n,l)?l:null}t&&this.focusControl(t)}update(t){if(t.type!==C.table)return!1;let e=this.describe(this.dom.ownerDocument.activeElement),o=this.preview,i=this.renaming?.isConnected&&e?.control==="rename";this.node=t,this.dom.dataset.id=t.attrs.id??"",this.preview=null,i?this.widths():this.render(e),o&&t.attrs.cols[o.col]&&(t.attrs.cols[o.col].width??o.base)===o.base&&this.previewWidth(o.col,o.width);let s=M(t);for(let n of this.contentDOM.querySelectorAll("td[data-col]"))n.dataset.kind=s[n.dataset.col]??"text";return e&&!i&&this.afterUpdate(e),!0}stopEvent(t){return!!t.target.closest?.("thead, .blockeditor-table-actions, .blockeditor-table-add-row, .blockeditor-table-add-col")}ignoreMutation(t){return!this.contentDOM.contains(t.target)}destroy(){this.destroyed=!0,this.renaming=null,this.renamingUnsaved?.dispose(),this.renamingUnsaved=null,this.menuAnchor=null,this.preview=null}},q=class{constructor(t,e,o){this.node=t,this.view=e,this.getPos=o,this.date=null;let i=e.dom.ownerDocument;this.dom=i.createElement("td"),Z.set(this.dom,this),this.dom.dataset.col=t.attrs.col,this.contentDOM=i.createElement("span");let s=i.createElement("button");s.type="button",s.className="blockeditor-table-row-menu",s.innerHTML=at,s.dataset.control="row",s.setAttribute("aria-haspopup","menu"),s.setAttribute("aria-expanded","false"),s.setAttribute("aria-label","Row actions"),s.title="Row actions",s.contentEditable="false",s.addEventListener("click",()=>{let n=this.target();if(!n)return;let l=R(this.view.state.doc,n.tableId);if(!l)return;let r=(u,b)=>()=>{let h=U(this.view,n,u);return N(this.view,h?b:lt),h},a=Math.max(0,W(l.table,n.rowId)),c=l.table.childCount;v(this.view,s,[{label:"Insert above",icon:"+",run:r(k(!1),"Row inserted")},{label:"Insert below",icon:"+",run:r(k(!0),"Row inserted")},...a>0?[{label:"Move up",icon:"\u2191",run:r(y(-1),"Row moved")}]:[],...a<c-1?[{label:"Move down",icon:"\u2193",run:r(y(1),"Row moved")}]:[],{label:"Select row",icon:"\u25A6",run:()=>ct(this.view,n,"row")},{label:"Delete row",icon:"\xD7",run:r(P,"Row deleted")}],{persist:!0})}),this.menu=s,this.dom.append(s,this.contentDOM),this.update(t)}target(){let t=this.getPos(),e=t==null?null:this.view.state.doc.resolve(t),o=e?.node(1);return!o||o.type!==C.table?null:{tableId:o.attrs.id,rowId:e.node(2).attrs.id??null,colId:this.node.attrs.col??null}}update(t){if(t.type!==C.table_cell)return!1;this.node=t;let e=this.view.state.doc.resolve(this.getPos()),o=e.node(1),i=e.node(2),s=e.index(1);return this.dom.dataset.col=t.attrs.col,this.dom.setAttribute("headers",dt(o.attrs.id,t.attrs.col)),this.dom.dataset.kind=M(o)[t.attrs.col]??"text",this.menu.dataset.col=t.attrs.col,this.menu.dataset.row=i.attrs.id??"",this.menu.setAttribute("aria-label",`Row actions: ${ut(i,s)}`),this.menu.hidden=e.index(2)!==0,this.dom.dataset.kind!=="date"&&this.closeDate(),!0}openDate(){if(this.date||this.dom.dataset.kind!=="date")return!1;let e=this.dom.ownerDocument.createElement("input");e.type="date",e.className="blockeditor-table-date",e.contentEditable="false",e.setAttribute("aria-label","Pick a date");let o=this.node.textContent.trim();/^\d{4}-\d{2}-\d{2}$/.test(o)&&(e.value=o),e.addEventListener("change",()=>{e.value&&it(this.view,this.getPos(),e.value),this.closeDate(),this.view.focus()}),e.addEventListener("keydown",i=>{i.key==="Escape"&&(i.preventDefault(),this.closeDate(),this.view.focus()),i.stopPropagation()}),e.addEventListener("blur",()=>this.closeDate()),this.date=e,this.dom.append(e);try{e.showPicker?.()}catch{}return!0}closeDate(){let t=this.date;this.date=null,t?.isConnected&&t.remove()}destroy(){this.closeDate()}stopEvent(t){return!!t.target.closest?.(".blockeditor-table-row-menu, .blockeditor-table-date")}ignoreMutation(t){return!this.contentDOM.contains(t.target)}};function Lt(){return{id:"table",nodeViews:{table:(d,t,e)=>new _(d,t,e),table_cell:(d,t,e)=>new q(d,t,e)},css:nt+ht,dispose(){}}}export{q as TableCellView,_ as TableView,Lt as createFeature};
@@ -0,0 +1,3 @@
1
+ import{b as Ae,g as nt,h as ot,i as Ue,j as de,k as ze,s as sn,u as rn,v as st,w as cn}from"./c-V2V5FKXX.js";import{a as Wt,b as Xt,c as Ht,d as Qt,e as At,f as Zt}from"./c-7K4SCQB7.js";import{a as Lt,b as Pt,c as Gt,d as It,e as qt,f as xt,g as He,h as Je,i as Qe,j as Ze,o as Ve,s as Ke,u as et,v as re,w as St,x as ve,y as tt}from"./c-WMRJKQ2V.js";import{S as tn,T as nn,Y as Ct,aa as on,d as se,fa as Oe,p as en}from"./c-OH2FPYSY.js";import{a as Fe,b as zt,c as oe,d as Xe}from"./c-57XDY6HC.js";var Le="blockeditor-origins",no="blockeditor-undo-overlap-repair",ln=(e,t)=>JSON.stringify(["span",e,t]),jt=(e,t)=>JSON.stringify(["alias",e,t]),an=(e,t)=>JSON.stringify(["boundary",e,t]),oo=["copy","removed","restore"],fn=/^(?:0|[1-9]\d*)$/,me=(e,t)=>`${e}.${t}`,q=e=>Number.isSafeInteger(e)&&e>=0,so=e=>Number.isSafeInteger(e)&&e>0,ro=e=>e!==null&&typeof e=="object"&&!Array.isArray(e),rt=e=>new Error(`Conflicting immutable origin record: ${e}`),co=e=>{if(typeof e!="string")return!1;let t=e.indexOf(".");if(t<1||t===e.length-1)return!1;let n=e.slice(0,t),s=e.slice(t+1);return fn.test(n)&&fn.test(s)&&q(Number(n))&&q(Number(s))},Mt=e=>{if(!ro(e))return null;for(let t of Object.keys(e))if(t!=="blockId"&&t!=="kind"&&t!=="recoveryOf")return null;return typeof e.blockId!="string"||!e.blockId||!oo.includes(e.kind)||e.recoveryOf!==void 0&&!co(e.recoveryOf)?null:e.recoveryOf===void 0?{blockId:e.blockId,kind:e.kind}:{blockId:e.blockId,kind:e.kind,recoveryOf:e.recoveryOf}},io=(e,t)=>e.blockId===t.blockId&&e.kind===t.kind&&e.recoveryOf===t.recoveryOf,lo=e=>{let t;try{t=JSON.parse(e)}catch{return null}return!Array.isArray(t)||t.length!==3||t[0]!=="boundary"&&t[0]!=="alias"?null:q(t[1])&&q(t[2])?t:null},ao=e=>{if(typeof e!="string"||e.charCodeAt(0)!==91)return null;let t;try{t=JSON.parse(e)}catch{return null}return!Array.isArray(t)||t.length!==3||t[0]!=="span"&&t[0]!=="alias"&&t[0]!=="boundary"?null:q(t[1])&&q(t[2])?t:null};function Ne(e){let t=new Map,n=new Map,s=new Map,c=new Map,r=(y,k)=>{let b=0,A=y.length;for(;b<A;){let w=b+A>>1;y[w].clock<k?b=w+1:A=w}return b},l=(y,k)=>{let b=0,A=y.length;for(;b<A;){let w=b+A>>1;y[w]<k?b=w+1:A=w}return b},a=(y,k,b)=>{let A=s.get(y)??[],w=l(A,k),$=A[w]===k;b&&!$?A.splice(w,0,k):!b&&$&&A.splice(w,1),A.length?s.set(y,A):s.delete(y)},u=[],f=new Map,g=new Map,I=new Map,h=(y,k)=>{let b=f.get(y);if(b===void 0){let x=lo(y);b=x?{kind:x[0],client:x[1],clock:x[2],live:!1}:null,f.set(y,b),b&&u.push(b)}if(!b||b.live===k)return;b.live=k;let A=g.get(b.client)??g.set(b.client,new Map).get(b.client),w=I.get(b.client)??I.set(b.client,[]).get(b.client),$=(A.get(b.clock)??0)+(k?1:-1);$?A.set(b.clock,$):A.delete(b.clock);let B=l(w,b.clock);k&&$===1?w.splice(B,0,b.clock):!k&&$===0&&w.splice(B,1),w.length||(I.delete(b.client),g.delete(b.client))},S=(y,k)=>{h(y,k!==void 0);let b=ao(y);if(!b)return;let[A,w,$]=b;if(A==="alias"){let P=!!(k&&q(k.sourceClient)&&q(k.sourceClock));P?n.set(me(w,$),{client:k.sourceClient,clock:k.sourceClock}):n.delete(me(w,$)),a(w,$,P);return}if(A==="boundary"){let P=Mt(k);P?c.set(me(w,$),P):c.delete(me(w,$));return}let B=t.get(w)??[],x=r(B,$);B[x]?.clock===$&&B.splice(x,1),k&&so(k.length)&&q(k.sourceClient)&&q(k.sourceClock)&&B.splice(r(B,$),0,{client:w,clock:$,length:k.length,sourceClient:k.sourceClient,sourceClock:k.sourceClock}),B.length?t.set(w,B):t.delete(w)};for(let y of e._map.keys())S(y,e.get(y));let j=y=>{for(let k of y.keysChanged)S(k,e.get(k))};e.observe(j);let N=(y,k)=>{let b=s.get(y);return b!==void 0&&b[l(b,k)]===k},T=y=>{let k=N(y.client,y.clock)?n.get(me(y.client,y.clock)):void 0;if(k)return{client:k.client,clock:k.clock};let b=t.get(y.client);if(!b)return{client:y.client,clock:y.clock};let A=0,w=b.length-1,$=-1;for(;A<=w;){let P=A+w>>1;b[P].clock<=y.clock?($=P,A=P+1):w=P-1}if($<0)return{client:y.client,clock:y.clock};let B=b[$],x=y.clock-B.clock;return x>=B.length?{client:y.client,clock:y.clock}:{client:B.sourceClient,clock:B.sourceClock+x}},F=(y,k,b)=>{let A=[],w=(V,X,be)=>{let pe=A[A.length-1];pe&&pe.client===V&&pe.clock+pe.length===X?pe.length+=be:A.push({client:V,clock:X,length:be})},$=t.get(y)??[],B=s.get(y)??[],x=k+b,P=r($,k+1)-1,D=l(B,k),H=k;for(;H<x;){if(D<B.length&&B[D]===H){let V=n.get(me(y,H));w(V.client,V.clock,1),H+=1,D+=1}else{let V=x;D<B.length&&B[D]<V&&(V=B[D]),P+1<$.length&&$[P+1].clock<V&&(V=$[P+1].clock);let X=P>=0?$[P]:null;X&&H<X.clock+X.length?(V=Math.min(V,X.clock+X.length),w(X.sourceClient,X.sourceClock+H-X.clock,V-H)):w(y,H,V-H),H=V}for(;P+1<$.length&&$[P+1].clock<=H;)P+=1}return A},J=y=>{if(!y||!q(y.client)||!q(y.clock))return null;if(!N(y.client,y.clock)){let w=c.get(me(y.client,y.clock));return w?{...w}:null}let k=me(y.client,y.clock),b=new Set;for(;!b.has(k);){b.add(k);let w=n.get(k);if(!w)break;k=me(w.client,w.clock)}if(b.has(k)&&n.has(k))return null;let A=c.get(k);return A?{...A}:null},W=(y,k,b)=>{let A=ln(y,k),w=e.get(A);if(w!==void 0&&(w.length!==b.length||w.sourceClient!==b.sourceClient||w.sourceClock!==b.sourceClock))throw rt(A);let $=t.get(y)??[],B=r($,k);for(let x of[$[B-1],$[B]])if(x&&x.clock!==k&&x.clock<k+b.length&&k<x.clock+x.length)throw rt(A);w===void 0&&e.set(A,b)};return{origins:e,resolve:T,resolveRange:F,recordSpans:y=>{let k=[],b=()=>{if(!k.length)return;let A=k[0],w={length:k.length,sourceClient:A.source.client,sourceClock:A.source.clock};if(!q(w.sourceClock+w.length-1))throw new Error(`Unsafe origin span: ${ln(A.dest.client,A.dest.clock)}`);W(A.dest.client,A.dest.clock,w),k.length=0};for(let A of y){if(!A?.dest||!A?.source)throw new Error("Invalid origin destination");let w=A.dest,$=A.source;if(!q(w.client)||!q(w.clock)||!q($.client)||!q($.clock))throw new Error("Invalid origin destination");let B=T($),x=k[k.length-1];x&&x.dest.client===w.client&&x.dest.clock+1===w.clock&&x.source.client===B.client&&x.source.clock+1===B.clock?k.push({dest:w,source:B}):(b(),k.push({dest:w,source:B}))}b()},recordAlias:(y,k)=>{if(!y||!k||!q(y.client)||!q(y.clock)||!q(k.client)||!q(k.clock))throw new Error("Invalid origin destination");let b=T(k),A=jt(y.client,y.clock),w=e.get(A);if(w!==void 0&&(w.sourceClient!==b.client||w.sourceClock!==b.clock))throw rt(A);w===void 0&&e.set(A,{sourceClient:b.client,sourceClock:b.clock})},recordBoundary:(y,k)=>{if(!y||!q(y.client)||!q(y.clock))throw new Error("Invalid origin destination");let b=Mt(k);if(!b)throw new Error(`Invalid boundary record: ${an(y.client,y.clock)}`);let A=an(y.client,y.clock),w=e.get(A);if(w===void 0){e.set(A,b);return}let $=Mt(w);if(!$||!io($,b))throw rt(A)},boundaryOf:J,markers:()=>{for(let y of e.doc?._transactionCleanups??[])if(y.changed.has(e))return null;return{records:u,clocks:I}},get size(){return e.size},dispose(){e.unobserve(j)}}}function es(e,t,n){let s=[],c=0;for(let r=e._start;r&&c<n;r=r.right){if(r.deleted||!r.countable)continue;let l=c;if(c+=r.length,c<=t)continue;let a=Math.max(0,t-l),u=Math.min(r.length,n-l);for(let f=a;f<u;f++)s.push({client:r.id.client,clock:r.id.clock+f})}return s}var fo=(e,t,n)=>e.some(s=>s.actor===t||s.client!==n.client||n.clock<s.clock||n.clock>=s.clock+s.length?!1:s.sv.some(([c,r])=>c===n.client&&r>n.clock)),uo=(e,t)=>{let n=0;for(let s=e._start;s;s=s.right)if(!(s.deleted||!s.countable)){if(s.id.client===t.client&&s.id.clock<=t.clock&&t.clock<s.id.clock+s.length)return n+t.clock-s.id.clock;n+=s.length}return null},po=(e,t)=>{let n=[];for(let c of t){let r=uo(e.flow,c);r!==null&&n.push(r)}n.sort((c,r)=>c-r);let s=[];for(let c of n){let r=s[s.length-1];r&&c<=r[1]?r[1]=Math.max(r[1],c+1):s.push([c,c+1])}for(let c=s.length-1;c>=0;c--){let[r,l]=s[c];l>r&&e.flow.delete(r,l-r)}};function ts(e,t,n=Ne(e.origins),s=()=>[]){let c=r=>{if(r.origin!==t||!t.currStackItem)return;let l=[],a=[],u=[],f=s(e.gone);Gt(r,t.currStackItem.deletions,g=>{if(!(g instanceof tt)||g.parent!==e.flow||!g.countable||!g.redone)return;let I=g.content instanceof re&&g.content.embed?.b!==void 0;for(let h=0;h<g.length;h++){let S={client:g.id.client,clock:g.id.clock+h},j=n.resolve(S),N={client:g.redone.client,clock:g.redone.clock+h},T=Ve(e.ydoc.store,N);for(;T instanceof tt&&T.redone;)N={client:T.redone.client,clock:T.redone.clock+N.clock-T.id.clock},T=Ve(e.ydoc.store,N);if(!(!(T instanceof tt)||T.deleted)&&!(N.clock<(r.beforeState.get(N.client)??0))){if(!I&&fo(f,e.ydoc.clientID,S)){u.push(N);continue}(I?a:l).push({dest:N,source:j})}}}),(l.length||a.length)&&e.ydoc.transact(()=>{l.length&&n.recordSpans(l);for(let g of a)n.recordAlias(g.dest,g.source)},Le),u.length&&e.ydoc.transact(()=>po(e,u),no)};return e.ydoc.on("beforeObserverCalls",c),()=>e.ydoc.off("beforeObserverCalls",c)}var at=e=>Lt(e),Ie=e=>Pt(e),it=12*1024,go="blockeditor-recovery",lt=e=>Fe.exec(e)?.[1]??e;function as(e){return{v:1,g:0,y:{seed:at(Je(e))}}}var te=class extends Error{constructor(t,n){super(n),this.name="YDecodeError",this.code=t}};function ho(e){if(e?.v!==1||!e.y||typeof e.y!="object"||Array.isArray(e.y))throw new te("invalid-value","Expected a version 1 Yjs page value");let t=new Map,n=new Set;for(let[s,c]of Object.entries(e.y)){if(typeof c!="string")throw new te("invalid-update",`Invalid Yjs update: ${s}`);let r=Fe.exec(s);if(!r){n.add(s);continue}let l=Number(r[2]),a=Number(r[3]);if(!Number.isSafeInteger(l)||!Number.isSafeInteger(a)||a<1||l>=a)throw new te("invalid-update",`Invalid Yjs update part: ${s}`);let u=t.get(r[1])??{count:a,indices:new Set};if(u.count!==a||u.indices.has(l))throw new te("invalid-update",`Conflicting Yjs update parts: ${r[1]}`);u.indices.add(l),t.set(r[1],u)}for(let[s,c]of t){if(n.has(s))throw new te("invalid-update",`Conflicting Yjs update forms: ${s}`);if(c.indices.size!==c.count)throw new te("incomplete-update",`Incomplete Yjs update: ${s}`)}return oe(e.y)}function dn(e,{strict:t=!1}={}){let n=t?ho(e):oe(e.y),s=new xt;try{for(let[c,r]of n){let l=t?r.replace(/[\t\n\f\r ]/g,""):r;if(t&&!zt(l))throw new te("invalid-update",`Invalid base64 in Yjs update: ${c}`);He(s,Ie(l),Ae)}if(t&&(s.store.pendingStructs||s.store.pendingDs))throw new te("unresolved-update","Yjs page updates have missing prerequisites");return s}catch(c){throw s.destroy(),t&&!(c instanceof te)?new te("invalid-update",`Invalid Yjs page update: ${c.message}`):c}}var un=typeof TextEncoder=="function"?new TextEncoder:null,yo=e=>un?un.encode(e).length:e.length*2,mo=(e,t)=>qt(It(e.store),It(t.store)),ko=(e,t)=>{if(e.size!==t.size)return!1;for(let[n,s]of e)if(t.get(n)!==s)return!1;return!0};function fs({store:e,ydoc:t,compact:n={},setTimer:s=setTimeout,clearTimer:c=clearTimeout,onStopped:r=()=>{},stats:l={applied:0,offered:0,compactions:0},journal:a=null,onLocalUpdate:u=()=>{}}){let f=oe(e.value.y),g=new Set,I=null,h=i=>{I||(I=i,r(i))},S=!f.some(([i])=>i[0]==="m"),j=0,N=t.clientID.toString(36),T=Math.floor(Math.random()*36**6).toString(36),F=e.room?.compaction?.v===1?"host":"legacy",J=i=>F==="host"?`${i}${N}-${T}-${(j++).toString(36)}`:`${i}${N}-${(j++).toString(36)}`,W=null,U=[],Y=!1,R=e.value.g,z=new Set,y=(i,p)=>{if(p.length<=it)return[[i,p]];let C=Math.ceil(p.length/it);return Array.from({length:C},(O,E)=>[`${i}.${E}.${C}`,p.slice(E*it,(E+1)*it)])},k=(i,p)=>{S=!0,g.add(i),z.add(i);let C=y(i,at(p));e.handle.update(O=>{for(let[E,_]of C)O.y[E]=_})},b=(i,p)=>{g.add(i),z.add(i);let C=at(p);e.handle.update(O=>{O.y[i]=C})},A=i=>{let p=i.path;return!Array.isArray(p)||p.length!==2||p[0]!=="y"?!0:z.has(p[1])},w=()=>e.pending.some(i=>A(i)),$=()=>F==="host"&&e.handle.status?.mode!=="file",B=()=>{if(!U.length)return;let i=U.length===1?U[0]:Ke(U);U=[],b(J("u"),i)},x=()=>{if(!$()||I||w()||Y&&(Y=!1,ge())||!U.length)return;let i=U.length===1?U[0]:Ke(U);U=[],b(J("u"),i)};for(let[i]of f)g.add(i);let P=(i,p)=>{p!==Ae&&p!==Le&&u(i),p!==Ae&&p!==Le&&p!==go&&a?.local(i),!(I||p===Ae||p===Le)&&($()?(U.push(i),x()):F==="host"?(U.push(i),B()):k(J("u"),i))};t.on("updateV2",P);let D=(i,p)=>{if(I||g.has(i))return;S=!0,g.add(i),l.applied++;let C=Ie(p);He(t,C,Ae),a?.dependency(C)},H=!1,V=!1,X=(i,p)=>{H||=i,V||=p,!W&&(W=s(()=>{W=null,H&&ge(),F==="legacy"&&he()},0))},be=()=>{ge(),F==="legacy"&&he()},pe=i=>{let p=Qt(t);return p.complete&&Ht(Xt(oe(i??{}).map(([C,O])=>qe(C,O))),p)};function ge(){if(I||$()&&w())return!1;let i=e.value.y;if(pe(i))return H=!1,V=!1,!1;let p=new xt;for(let[,ue]of oe(i))He(p,Ie(ue),Ae);let C=Ze(p),O=Qe(Ze(t)),E=Qe(C);if(ko(O,E)&&mo(t,p))return p.destroy(),H=!1,V=!1,!1;let _=Je(t,C);return p.destroy(),l.offered++,F==="host"?(U=[],b(J("r"),_)):k(J("r"),_),H=!1,V=!1,!0}let we={keys:32,room:3840*1024,...n},ee=null,Se=0,Re=256,ie=new Map,vt=256,fe=new Map,De=i=>e.handle.update(p=>{for(let C of i)delete p.y[C]}),je=(i,p)=>Object.keys(i).filter(C=>p.has(lt(C))),ne=(i,p)=>{let C=e.value.y??{};De(p.filter(O=>O in C&&C[O]===i[O]))},qe=(i,p)=>{let C=fe.get(i);if(C&&C.value===p)return C.ranges;fe.size>=vt&&fe.delete(fe.keys().next().value);let O=Wt(Ie(p));return fe.set(i,{value:p,ranges:O}),O};function le(){let i=e.authoritative.y??{},p=e.value.y??{};for(let _ of z)_ in p||z.delete(_);let C=new Map(oe(i)),O=ee?[ee.key,...ee.parts.map(([_])=>_),...ee.inputs.keys()]:[],E=new Set([...Object.keys(i),...C.keys(),...z,...O]);for(let _ of g)E.has(_)||g.delete(_);for(let[_,ue]of ie)(!E.has(_)||C.get(_)!==ue.value)&&ie.delete(_);for(let[_,ue]of fe)(!E.has(_)||C.has(_)&&C.get(_)!==ue.value)&&fe.delete(_)}function Ee(i,p,C,O){let E=ie.get(i);return E&&E.value!==p&&(ie.delete(i),E=null),E||(ie.size>=Re&&ie.delete(ie.keys().next().value),E={value:p,folds:new Map},ie.set(i,E)),E.folds.has(C)||E.folds.set(C,Et(O,Ie(p))),E.folds.get(C)}let _e=(i,p)=>{for(let[C,O]of p.held)if(i[C]!==void 0&&i[C]!==O)return!1;return!0},Te=i=>{let p=Ie(i.merged);for(let[C,O]of i.inputs)if(O!==null&&!Ee(C,O,i.key,p))return!1;return!0};function We(i){let p=ee,C=Xe({v:1,y:i}).y,O=p.parts.filter(([E,_])=>i[E]===_&&C[E]===_);return O.length!==p.parts.length?e.pending.length?!1:(ee=null,O.length&&ne(i,O.map(([E])=>E)),Se=oe(i).length+we.keys,le(),!0):e.pending.length?!1:!_e(i,p)||!Te(p)?(ee=null,O.length&&ne(i,O.map(([E])=>E)),Se=oe(i).length+we.keys,le(),!0):(ee=null,ne(i,je(i,p.inputs)),le(),!0)}function Ye(i,p,C){let O=p.filter(([Q])=>Q[0]==="m"),E=new Map(p),_=new Map(O),ue=Q=>{let ye=_.get(Q);return typeof ye=="string"&&_.set(Q,Ke([Ie(ye)])),_.get(Q)},Be=(Q,ye,L)=>Ee(Q,ye,L,ue(L)),$e=new Set;for(let[Q,ye]of p)if(!(!C&&Q[0]!=="m")){for(let[L]of O)if(!(L===Q||$e.has(L)||!Be(Q,ye,L))&&!(Q[0]==="m"&&Q<L&&Be(L,E.get(L),Q))){$e.add(Q);break}}return $e.size?(ne(i,je(i,$e)),!0):!1}function he(){if(I||!S||e.value.g!==R)return!1;let i=e.authoritative.y;if(ee)return We(i);let p=oe(i),C=p.length>Math.max(we.keys,Se);if(!C&&p.filter(([L])=>L[0]==="m").length<2)return!1;if(Ye(i,p,C))return le(),!0;if(!C)return!1;let O=at(Ke(p.map(([,L])=>Ie(L)))),E=J("m"),_=y(E,O),ue={...e.value,y:{...e.value.y}};for(let[L,Ot]of _)ue.y[L]=Ot;if(yo(JSON.stringify(ue))>we.room)return Se=p.length+we.keys,!1;let Be=Xe({v:1,y:i}).y,$e=Object.keys(i).filter(L=>!(L in Be)).map(lt).filter(L=>L[0]==="m"),Q=new Map(p);for(let L of $e)Q.set(L,null);let ye=new Map;for(let L of je(i,Q))Q.get(lt(L))!==null&&ye.set(L,Be[L]??i[L]);return ee={key:E,parts:_,merged:O,inputs:Q,held:ye},g.add(E),e.handle.update(L=>{for(let[Ot,to]of _)L.y[Ot]=to}),l.compactions++,!0}let o=i=>{let p=new Set;for(let[C,O]of oe(i??{}))for(let[E,_]of qe(C,O).items)_[0][0]===0&&p.add(E);return p},m=new Map(f),d=i=>{let p=o(i),C=[...Qe(Ze(t)).keys()];return!p.size||!C.length||C.some(O=>p.has(O))?!0:oe(i??{}).some(([O,E])=>m.get(O)===E)},v=e.onRebase(i=>{if(I)return;if(i.room){let O=F;F=i.room.compaction?.v===1?"host":"legacy",O==="host"&&F==="legacy"&&U.length&&s(()=>{if(I||F!=="legacy"||!U.length)return;let E=U.length===1?U[0]:Ke(U);U=[],k(J("u"),E)},0)}let p=i.source==="remote"&&i.frame?i.frame.ops:null,C=p&&p.every(O=>O.path[0]==="y"&&O.path.length===2&&!Fe.test(O.path[1]));if(!C&&i.cause!=="refused"&&!d(i.next.y)){h("lineage");return}if(C)for(let O of p)O.op==="set"&&D(O.path[1],O.value);else for(let[O,E]of oe(i.next.y??{}))D(O,E);le(),X(i.source!=="remote"||!p,i.source!=="remote"),x()}),M=e.onDelivery(i=>{if(i.phase!=="refused")return;if(F==="host"){if(i.code==="blockeditor-full"||i.code==="compaction-failed"){h(i.code);return}Y=!0,X(!0,!1);return}if(i.code!=="too-large"||I){le();return}h("too-large");let p=e.authoritative.y??{},C=Xe({v:1,y:p}).y,O=Object.keys(e.value.y??{}).filter(_=>!(_ in p)),E=Object.keys(p).filter(_=>Fe.test(_)&&!(_ in C)&&lt(_).slice(1).startsWith(`${N}-`));(O.length||E.length)&&De([...O,...E]),le()}),K=e.onConfirm(()=>{x()});return{known:g,stats:l,settle:be,reconcile:ge,get reconcilePending(){return V},get stopped(){return I},get pending(){return U.length>0},_diagnostics:()=>({known:g.size,cover:ie.size,fold:ee?ee.parts.length:0,generation:R}),compact:he,dispose(){v(),M(),K(),t.off("updateV2",P),W&&c(W)}}}var Yt=class extends Error{constructor(t,n){super(n),this.name="PageProofError",this.code=t}},Z=(e,t)=>{throw new Yt(e,t)},pn=/^[0-9a-f]{64}$/,gn=typeof TextEncoder=="function"?new TextEncoder:null,$t=e=>e instanceof Uint8Array?e:e instanceof ArrayBuffer?new Uint8Array(e):null,hn=e=>typeof e=="string"?e:JSON.stringify(e),bo=e=>Array.isArray(e)?[...e]:e,wo=e=>({v:e.v,g:e.g,y:{...e.y??{}}});function Et(e,t){return Zt(At(e),t)}async function ut(e){let t=await globalThis.crypto.subtle.digest("SHA-256",e);return[...new Uint8Array(t)].map(n=>n.toString(16).padStart(2,"0")).join("")}var vo=4,ft=[],Oo=(e,t)=>{if(e.v!==t.v||e.g!==t.g)return!1;let n=Object.keys(t.y??{});if(n.length!==e.y.size)return!1;for(let s of n)if(e.y.get(s)!==t.y[s])return!1;return!0};function yn(e){let t=e&&typeof e=="object"&&e.y&&typeof e.y=="object"?ft.find(c=>Oo(c,e)):null;if(t)return t.bytes;let n;try{n=dn(e,{strict:!0})}catch(c){Z("invalid-state",`The accepted page state does not decode: ${c.message}`)}let s;try{s=Je(n),At(s,n)}finally{n.destroy()}return ft.length>=vo&&ft.shift(),ft.push({v:e.v,g:e.g,y:new Map(Object.entries(e.y)),bytes:s}),s}var Io=(e,t)=>!!(e&&t)&&!!(e.host&&e.documentId&&e.principalId)&&e.host===t.host&&e.documentId===t.documentId&&e.principalId===t.principalId,xo=(e,t)=>!!(e&&t)&&typeof e.generation=="string"&&!!e.generation&&e.generation===t.generation;async function ys({capture:e,records:t=[],accepted:n,article:s,state:c,receipt:r,saved:l=!0}={}){let a=[];for(let f of t){(!f||f.id===void 0||typeof f.revision!="number")&&Z("invalid-record","A proof names each record by id and revision");let g=$t(f.update);(!g||!g.length)&&Z("invalid-record","A proof needs the bytes each record owns"),a.push({id:bo(f.id),revision:f.revision,update:g.slice(),context:f.context??null})}typeof s!="string"&&Z("missing-article","A proof names the final outgoing article");let u=yn(c);return{saved:l===!0,capture:e,accepted:n,article:s,state:wo(c),stateDigest:await ut(u),articleDigest:await ut(gn.encode(s)),receipt:r,records:a}}async function So(e){(!e||typeof e!="object"||Array.isArray(e))&&Z("missing-proof","A page checkpoint needs a proof"),e.saved!==!0&&Z("not-saved","Only a save that succeeded under admission makes a proof"),(typeof e.capture!="string"||!e.capture)&&Z("missing-capture","A proof belongs to the capture it saved");let t=e.receipt;(!t||typeof t.file!="string"||!t.file||typeof t.blockeditorState!="string"||!t.blockeditorState)&&Z("missing-receipt","A proof names the persisted file and blockeditor-state pair");let n=e.accepted;(!n||!n.authority||!n.lineage||typeof n.lineage.generation!="string"||!n.lineage.generation)&&Z("missing-identity","A proof names the authority and generation it was saved under"),typeof e.article!="string"&&Z("missing-article","A proof names the final outgoing article"),Array.isArray(e.records)||Z("missing-records","A proof names the records it covers"),(typeof e.stateDigest!="string"||!pn.test(e.stateDigest))&&Z("missing-digest","A proof carries the accepted state digest"),(typeof e.articleDigest!="string"||!pn.test(e.articleDigest))&&Z("missing-digest","A proof carries the final article digest");let s=yn(e.state);await ut(s)!==e.stateDigest&&Z("state-digest-mismatch","The page state is not the one the proof was made over"),await ut(gn.encode(e.article))!==e.articleDigest&&Z("article-digest-mismatch","The article is not the one the proof was made over");let c=new Map;for(let r of e.records){(!r||r.id===void 0||typeof r.revision!="number")&&Z("invalid-record","A proof names each record by id and revision");let l=$t(r.update);(!l||!l.length)&&Z("invalid-record","A proof needs the bytes each record owns"),c.set(hn(r.id),r)}return{stateBytes:s,entries:c,accepted:n}}function Ao(e,t){let n=t.context;if(!n||!Io(n.authority,e.accepted.authority)||!xo(n.lineage,e.accepted.lineage))return!1;let s=$t(t.update);return!!s&&s.length>0&&Et(e.stateBytes,s)}async function ms(e,t=[]){let n=await So(e);return(t||[]).filter(s=>{if(!s||s.id===void 0||typeof s.revision!="number")return!1;let c=n.entries.get(hn(s.id));return!!c&&c.revision===s.revision&&Ao(n,c)})}var pt=Object.freeze({row:Object.freeze(["alive","pos"]),col:Object.freeze(["alive","name","kind","width","pos"])}),bn=["name","kind","width","pos"],Co=new Set(["kind","width"]),Ce=e=>e!==null&&typeof e=="object"&&!Array.isArray(e),Me=e=>typeof e=="string"&&e.length>0&&!["__proto__","constructor","prototype"].includes(e),Pe=e=>{throw new te("unsupported-content",`Unsupported table field: ${e}`)},wn=e=>e===null||typeof e!="object"?e:JSON.parse(JSON.stringify(e)),ke=(e,t,n,s)=>JSON.stringify([e,t,n,s]);function vn(e){if(typeof e=="string")return!0;if(!Ce(e)||Object.keys(e).sort().join(",")!=="c,m"||typeof e.c!="string"||!Array.isArray(e.m)||!e.m.every(Array.isArray))return!1;let t=on(e.m,e.c.length);return t?t.every((n,s)=>{if(typeof n!="string")return!1;if(n.startsWith("@"))return n===nn&&e.c[s]===tn;try{return en(se,n),!0}catch{return!1}}):!1}var On=(e,t)=>e==="alive"?typeof t=="boolean":e==="width"?t===null||typeof t=="number"&&Number.isFinite(t)&&t>0:e==="kind"&&t===null||typeof t=="string";function mn(e,t){if(Object.keys(e).length)return;let[n]=Object.keys(t).sort((s,c)=>{let r=t[s].pos??"",l=t[c].pos??"";return r!==l?r<l?-1:1:s<c?-1:s>c?1:0});n&&(e[n]=t[n])}function Mo(e,t){let n;try{n=JSON.parse(e)}catch{return null}if(!Array.isArray(n)||n.length!==4)return null;let[s,c,r,l]=n;return!Me(s)||!Me(r)?null:c==="cell"?Me(l)&&vn(t)?s:null:Object.hasOwn(pt,c)&&pt[c].includes(l)&&On(l,t)?s:null}var kn=new WeakMap,jo=e=>{let t=kn.get(e);if(t)return t;let n=new Map,s=new Map,c=new Set,r=a=>{let u=n.get(a);if(!u){let f=null;try{f=JSON.parse(a)}catch{f=null}let g=Array.isArray(f)&&f.length===4&&Me(f[0])?f[0]:null;u={key:a,tuple:f,live:!1,value:void 0},n.set(a,u),g!==null&&(s.get(g)??s.set(g,[]).get(g)).push(u)}u.live=e.has(a),u.value=u.live?e.get(a):void 0,u.live&&Mo(a,u.value)===null?c.add(a):c.delete(a)};for(let a of e._map.keys())r(a);e.observe(a=>{for(let u of a.keysChanged)r(u)});let l={owned(a){for(let u of e.doc._transactionCleanups)for(let f of u.changed.get(e)??[])r(f);return c.size?null:s.get(a)??[]}};return kn.set(e,l),l},Eo=(e,t)=>t!==null&&e instanceof et&&e.doc?jo(e).owned(t):null;function In(e,t=null,n=null){let s=new Map,c=new Map,r=new Map,l=(h,S,j,N)=>{if(h==="cell"){let J=r.get(S)??new Map;J.set(j,N),r.set(S,J);return}let T=h==="row"?s:c,F=T.get(S)??{};F[j]=N,T.set(S,F)},a=Eo(e,t);if(a)for(let h of a)h.live&&l(h.tuple[1],h.tuple[2],h.tuple[3],h.value);else for(let[h,S]of e){let j;try{j=JSON.parse(h)}catch{Pe(h)}(!Array.isArray(j)||j.length!==4)&&Pe(h);let[N,T,F,J]=j;(!Me(N)||!Me(F))&&Pe(h),T==="cell"?(!Me(J)||!vn(S))&&Pe(h):(!Object.hasOwn(pt,T)||!pt[T].includes(J)||!On(J,S))&&Pe(h),N===t&&l(T,F,J,S)}let u={...Ce(n?.cols)?n.cols:{}},f={...Ce(n?.rows)?n.rows:{}},g={},I={};for(let[h,S]of c){let j=Ce(u[h])?{...u[h]}:{};Object.hasOwn(j,"pos")||(j.pos=""),Object.hasOwn(j,"name")||(j.name="");for(let N of bn)Object.hasOwn(S,N)&&(S[N]===null?delete j[N]:j[N]=S[N]);if(S.alive===!1||!Object.hasOwn(u,h)&&S.alive!==!0){S.alive===!1&&(g[h]=j),delete u[h];continue}u[h]=j}for(let h of new Set([...s.keys(),...r.keys()])){let S=s.get(h)??{},j={pos:"",cells:{},...Ce(f[h])?f[h]:{}};Object.hasOwn(S,"pos")&&(j.pos=S.pos);let N=r.get(h);if(N&&(j.cells={...Ce(j.cells)?j.cells:{},...Object.fromEntries([...N].map(([T,F])=>[T,wn(F)]))}),S.alive===!1||!Object.hasOwn(f,h)&&S.alive!==!0){S.alive===!1&&(I[h]=j),delete f[h];continue}f[h]=j}return mn(u,g),mn(f,I),{cols:u,rows:f}}var dt=(e,t)=>e?.[t]??(Co.has(t)?null:"");function Yo(e,t,n,s,c){let r=[],l=(h,S)=>t.has(h)?t.get(h):S,a=(h,S)=>r.push([h,wn(S)]),u=s?.cols??{},f=c?.cols??{},g=s?.rows??{},I=c?.rows??{};for(let h of new Set([...Object.keys(u),...Object.keys(f)])){let S=u[h],j=f[h];if(!j){S&&a(ke(e,"col",h,"alive"),!1);continue}(!S||l(ke(e,"col",h,"alive"),!0)===!1)&&a(ke(e,"col",h,"alive"),!0);for(let N of bn){let T=ke(e,"col",h,N),F=S?dt(S,N):l(T,dt(n?.cols?.[h],N));Oe(F)!==Oe(dt(j,N))&&a(T,dt(j,N))}}for(let h of new Set([...Object.keys(g),...Object.keys(I)])){let S=g[h],j=I[h];if(!j){S&&a(ke(e,"row",h,"alive"),!1);continue}(!S||l(ke(e,"row",h,"alive"),!0)===!1)&&a(ke(e,"row",h,"alive"),!0);let N=ke(e,"row",h,"pos"),T=j.pos??"";l(N,n?.rows?.[h]?.pos??"")!==T&&a(N,T);let F=Ce(j.cells)?j.cells:{};for(let J of Object.keys(f)){let W=ke(e,"cell",h,J),U=F[J]??"",Y=S&&u[J]?S.cells?.[J]??"":l(W,n?.rows?.[h]?.cells?.[J]??"");Oe(Y)!==Oe(U)&&a(W,U)}}return r}function $o(e,t){let n=e.attrs.get(t);return{cols:n?.get("cols")??{},rows:n?.get("rows")??{}}}function Ss(e,t,n,s){let c=$o(e,t);for(let[r,l]of Yo(t,e.tableFields,c,n,s))e.tableFields.set(r,l)}var Nt=Object.freeze({column:Object.freeze(["alive","name","pos"]),card:Object.freeze(["alive","title","owner","due","placement"])}),xn={column:new Set(Nt.column),card:new Set(Nt.card)},Ko=[["column","columns"],["card","cards"]],Rt=e=>e!==null&&typeof e=="object"&&!Array.isArray(e),Sn=e=>typeof e=="string"&&e.length>0&&!["__proto__","constructor","prototype"].includes(e),gt=e=>{throw new te("unsupported-content",`Unsupported board field: ${e}`)},No=e=>e===null||typeof e!="object"?e:JSON.parse(JSON.stringify(e)),Kt=(e,t,n,s)=>JSON.stringify([e,t,n,s]);function Cn(e,t){let n=new Map;for(let[s,c]of e){let r;try{r=JSON.parse(s)}catch{gt(s)}(!Array.isArray(r)||r.length!==4)&&gt(s);let[l,a,u,f]=r;if((!Sn(l)||!Sn(u)||!Object.hasOwn(xn,a)||!xn[a].has(f))&&gt(s),(f==="alive"?typeof c!="boolean":f==="placement"?!Rt(c)||Object.keys(c).sort().join(",")!=="columnId,pos"||typeof c.columnId!="string"||typeof c.pos!="string":f==="owner"||f==="due"?c!==null&&typeof c!="string":typeof c!="string")&&gt(s),l!==t)continue;let g=n.get(a)??new Map,I=g.get(u)??{};I[f]=c,g.set(u,I),n.set(a,g)}return n}var Mn=e=>({pos:e.pos??"",name:e.name??""}),jn=e=>({pos:e.placement?.pos??"",col:e.placement?.columnId??"",title:e.title??"",...e.owner!=null?{owner:e.owner}:{},...e.due!=null?{due:e.due}:{}}),ht=(e,t,n,s)=>Object.fromEntries([...e.get(t)??[]].filter(([,c])=>c.alive!==!1===s).map(([c,r])=>[c,n(r)]));function En(e,t=null){let n=Cn(e,t),s=ht(n,"column",Mn,!0),c=ht(n,"card",jn,!0),r=Ct(s),l=[...new Set(Object.values(c).map(u=>u.col))].filter(u=>!Object.hasOwn(s,u)).sort(),a=[...r,...l].flatMap(u=>Ct(Object.fromEntries(Object.entries(c).filter(([,f])=>f.col===u))));return{columns:Object.fromEntries(r.map(u=>[u,s[u]])),cards:Object.fromEntries(a.map(u=>[u,c[u]]))}}function js(e,t){let n=Cn(e,t);return{columns:ht(n,"column",Mn,!1),cards:ht(n,"card",jn,!1)}}var Yn={name:"",pos:"",title:"",owner:null,due:null,placement:{columnId:"",pos:""}},An=(e,t,n)=>e==="card"&&n==="placement"?{columnId:t.col??"",pos:t.pos??""}:t[n]??Yn[n];function Ro(e,t,n,s){let c=[];for(let[r,l]of Ko){let a=Rt(n?.[l])?n[l]:{},u=Rt(s?.[l])?s[l]:{};for(let f of new Set([...Object.keys(a),...Object.keys(u)])){let g=a[f],I=u[f];if(!I){g&&c.push([Kt(e,r,f,"alive"),!1]);continue}g||c.push([Kt(e,r,f,"alive"),!0]);for(let h of Nt[r]){if(h==="alive")continue;let S=Kt(e,r,f,h),j=An(r,I,h),N=g?An(r,g,h):t.has(S)?t.get(S):Yn[h];Oe(N)!==Oe(j)&&c.push([S,No(j)])}}}return c}function Es(e,t,n,s){for(let[c,r]of Ro(t,e.boardFields,n,s))e.boardFields.set(c,r)}var $n=e=>{let t=2166136261;for(let n=0;n<e.length;n++)t^=e.charCodeAt(n),t=Math.imul(t,16777619);return(t>>>0).toString(36)},Kn=(e,t)=>e.id.client===t.client&&t.clock>=e.id.clock&&t.clock<e.id.clock+e.length,Do=e=>{if(typeof e!="string"||e.charCodeAt(0)!==91)return null;let t;try{t=JSON.parse(e)}catch{return null}return Array.isArray(t)&&t.length===2&&t[0]===yt&&typeof t[1]=="string"?t[1]:null},_o=e=>e.reduce((t,n)=>n.brk.client<t.brk.client||n.brk.client===t.brk.client&&n.brk.clock<t.brk.clock?n:t);function _n(e,t=null){let n=t?null:Ne(e.origins);try{return To(e,n??t)}finally{n&&n.dispose()}}function To(e,t){let n=e.ydoc.store,s=Dt(e.gone),c=new Map,r=new Map;for(let o=e.flow._start;o;o=o.right){if(o.deleted||!(o.content instanceof re)||o.content.embed.b===void 0)continue;r.set(o.content.embed.b,(r.get(o.content.embed.b)??0)+1);let m=de(t.resolve(o.id)),d=c.get(m);(!d||o.id.client<d.id.client||o.id.client===d.id.client&&o.id.clock<d.id.clock)&&c.set(m,o)}let l=new Set(c.keys()),a=new Set,u=[],f=(o,m)=>{let d=`${o}.${m}`,v=t.boundaryOf({client:o,clock:m});!v||v.kind!=="copy"||(s.copyActive.has(d)?v.recoveryOf&&a.add(v.recoveryOf):l.has(d)&&u.push({key:Nn(d),sourceKey:d,source:{client:o,clock:m},operationId:null,blockId:v.blockId,end:null,sv:[],legacy:!1,implicit:!0}))},g=t.markers?.()??null,I=new Map;if(g)for(let o of g.records)o.live&&o.kind==="boundary"&&f(o.client,o.clock);else for(let o of e.origins.keys()){let m;try{m=JSON.parse(o)}catch{continue}if(!Array.isArray(m)||m.length!==3||m[0]!=="boundary"&&m[0]!=="alias")continue;let[,d,v]=m;if(!Number.isSafeInteger(d)||d<0||!Number.isSafeInteger(v)||v<0)continue;m[0]==="boundary"&&f(d,v),(I.get(d)??I.set(d,new Set).get(d)).add(v)}let h=[],S=new Set(u.map(o=>o.key));for(let o of s.restores)for(let m of o.covers){let d=Do(m);d===null||S.has(m)||!c.has(d)||(S.add(m),h.push({key:m,sourceKey:d,source:ze(d),operationId:null,blockId:c.get(d).content.embed.b,end:null,sv:[],legacy:!1,implicit:!0}))}let j=u.length||h.length?[...s.removals,...u,...h]:s.removals,N=new Map,T=new Map,F=new Map;for(let o of j){(F.get(o.sourceKey)??F.set(o.sourceKey,[]).get(o.sourceKey)).push(o);let d=null;if(o.implicit)d=c.get(o.sourceKey);else try{d=Ve(n,o.source)}catch{d=null}let v=de(t.resolve(o.source)),M=c.get(v);if((!d||d.deleted)&&M?.content.embed.b===o.blockId&&(d=M),!d)continue;if(o.legacy){!d.deleted&&d.content instanceof re&&d.content.embed.b===o.blockId&&de(t.resolve(d.id))===v&&N.set(d,{key:o.key,blockId:o.blockId,end:o.end?ze(o.end):null});continue}(T.get(d)??T.set(d,[]).get(d)).push(o)}let J=new Map,W=new Set(s.restores.map(o=>o.sourceKey)),U=(o,m)=>{let d=Dn(m);if(d===null)return null;let v=t.boundaryOf({client:o.id.client,clock:o.id.clock});return v&&v.blockId===m&&v.recoveryOf===d?v:null},Y=(o,m)=>{let d=U(o,m);return d&&d.kind==="restore"?d.recoveryOf:null},R=(o,m)=>{let d=U(o,m);return d&&d.kind==="copy"?d.recoveryOf:null},z=(o,m)=>{let d=Y(o,m);return d!==null&&W.has(d)&&F.has(d)?d:null};for(let o of s.restores){let m=J.get(o.sourceKey)??J.set(o.sourceKey,new Set).get(o.sourceKey);for(let d of o.covers)m.add(d)}let y=new Map;if(W.size)for(let o=e.flow._start;o;o=o.right){if(o.deleted)continue;let m=o.content instanceof re?z(o,o.content.embed&&o.content.embed.b):null;if(m===null)continue;(y.get(m)??y.set(m,[]).get(m)).push(o)}let k=o=>{let m=F.get(o);if(!m||!m.length)return!1;let d=J.get(o);if(!d)return!1;for(let v of m)if(!d.has(v.key))return!1;return(y.get(o)?.length??0)>0||a.has(o)},b=[],A=[],w=[],$=[],B=[],x=null,P="start",D=null,H=0,V={},X=null,be=()=>{for(let o in V)return{...V};return null},pe=o=>{let m=e.attrs.get(o);return m&&m.get("t")||"paragraph"},ge=o=>{o&&(x&&!x.atom?x.runs.push({hole:o}):b.push({kind:"h",len:o,key:null}))},we=(o,m,d=!1)=>{let v=_t(o,F.get(o)??[],s),M=`recovered:${o}`,K=v?v.type:"paragraph",i=!Object.hasOwn(se.nodes,K),p=be();x&&(x.fmtOut=p),x={kind:"b",id:M,baseId:M,brk:{client:m.id.client,clock:m.id.clock},implicit:!1,runs:[],len:1,atom:!i&&!se.nodes[K]?.isTextblock,opaque:i,recovered:!0,restored:!d,sourceKey:o,t:K,fields:v?v.attrs:null,fmtIn:p,fmtOut:null},b.push(x),P=M},ee=(o,m,d)=>{let v=be();x&&(x.fmtOut=v),x={kind:"b",id:o,baseId:o,brk:m,implicit:d,runs:[],len:d?0:1,atom:!1,items:!d&&(r.get(o)??0)>1?[]:null,fmtIn:v,fmtOut:null},d?x.t="paragraph":(x.t=pe(o),x.opaque=!Object.hasOwn(se.nodes,x.t),x.atom=!x.opaque&&!se.nodes[x.t]?.isTextblock),b.push(x),P=o},Se=()=>{D&&(D.len&&(D.resume?D.resume.runs.push({hole:D.len}):b.push({kind:"h",len:D.len,key:D.active[0]?.key})),x=D.resume,D=null)},Re=o=>{o.legacy&&o.text&&A.push({key:o.key,id:o.blockId,text:o.text,h:$n(o.text)}),w.push({key:o.key,sourceKey:o.sourceKey,blockId:o.blockId,end:o.end,sv:o.sv,at:o.at,live:o.live,items:o.items})},ie=(o,m,d=-1)=>Kn(o,m)&&m.clock>d?!0:fe(o).some(v=>{if(v.clock<=d||!e.origins.has(jt(v.client,v.clock)))return!1;let M=t.resolve(v);return M.client===m.client&&M.clock===m.clock}),vt=g?g.clocks:new Map([...I].map(([o,m])=>[o,[...m].sort((d,v)=>d-v)])),fe=o=>{let m=vt.get(o.id.client)??[],d=0,v=m.length;for(;d<v;){let K=d+v>>1;m[K]<o.id.clock?d=K+1:v=K}let M=[];for(let K=d;K<m.length&&m[K]<o.id.clock+o.length;K++)M.push({client:o.id.client,clock:m[K]});return M},De=(o,m=-1)=>o.deleted?fe(o).flatMap(d=>{if(d.clock<=m)return[];let v=de(t.resolve(d)),M=t.boundaryOf(d);return!M||M.kind!=="removed"&&M.kind!=="copy"||l.has(v)?[]:[{blockId:M.blockId,sourceKey:v}]}):[],je=(o,m,{deletedEdges:d,boundary:v=!1,edge:M,after:K=-1})=>m.end?ie(o,m.end,K):m.implicit?v||d.some(i=>i.sourceKey!==m.sourceKey):v&&M!==m.blockId||d.some(i=>i.blockId!==m.blockId),ne=[],qe=o=>({blockId:o.blockId,end:o.end?ze(o.end):null,implicit:o.implicit===!0,sourceKey:o.sourceKey});for(let o=e.flow._start;o;o=o.right){let m=H;if(!o.deleted&&o.countable&&(H+=o.length),D||ne.length){let K=!o.deleted&&o.content instanceof re?o.content.embed.b:void 0,i=K!==void 0&&Y(o,K)===null,p=De(o),C=O=>je(o,O,{deletedEdges:p,boundary:i,edge:K});if(D){let O=[];for(let E of D.active)C(E)?Re(E):O.push(E);D.active=O,O.length||Se()}for(let O=ne.length-1;O>=0;O--)ne[O].active=ne[O].active.filter(E=>!C(E)),ne[O].active.length||ne.splice(O,1)}let d=T.get(o);if(d){if(o.deleted&&B.push({client:o.id.client,clock:o.id.clock,len:o.length}),!D&&k(d[0].sourceKey)){o.deleted||ge(o.length),ne.push({active:d.map(qe),sourceKey:d[0].sourceKey,root:null});continue}!D&&o.deleted&&$.push({client:o.id.client,clock:o.id.clock});for(let K of d){let i={legacy:!1,implicit:K.implicit===!0,key:K.key,sourceKey:K.sourceKey,blockId:K.blockId,end:K.end?ze(K.end):null,sv:K.sv,at:m,live:!o.deleted,items:[]},p=o.deleted&&Kn(o,K.source)?K.source.clock:null;if(p!==null&&je(o,i,{deletedEdges:De(o,p),after:p})){Re(i);continue}D?D.active.push(i):D={active:[i],len:0,resume:x}}D&&!o.deleted&&(D.len+=o.length);continue}let v=N.get(o);if(v){if(o.deleted&&B.push({client:o.id.client,clock:o.id.clock,len:o.length}),!D&&k(v.key)){o.deleted||ge(o.length),ne.push({active:[{blockId:v.blockId,end:v.end}],sourceKey:v.key,root:null});continue}let K={legacy:!0,key:v.key,sourceKey:v.key,blockId:v.blockId,end:v.end,sv:[],at:m,live:!0,items:[],text:""};D?D.active.push(K):D={active:[K],len:0,resume:x},D.len+=1;continue}if(o.deleted)continue;let M=o.content;if(M instanceof St){M.value===null?delete V[M.key]:V[M.key]=M.value,X=null;continue}if(D){if(M instanceof ve||M instanceof re){let K=M instanceof ve?M.str:M.embed.b!==void 0?"\xB6":`
2
+ `,i={...V};for(let p of D.active)p.legacy&&(p.text+=K),p.items.push({at:m,id:de(o.id),client:o.id.client,clock:o.id.clock,length:o.length,kind:M instanceof ve?"text":M.embed.b!==void 0?"marker":"br",text:M instanceof ve?M.str:null,blockId:M instanceof re&&M.embed.b!==void 0?M.embed.b:null,raw:i});D.len+=o.length}continue}if(M instanceof St){M.value===null?delete V[M.key]:V[M.key]=M.value;continue}if(M instanceof re){let K=z(o,M.embed.b);if(K!==null){let C=ne.find(O=>O.sourceKey===K&&!O.root);C&&!a.has(K)?(we(K,o),C.root=x):ge(o.length);continue}if(Y(o,M.embed.b)!==null){ge(o.length);continue}let i=R(o,M.embed.b);if(i!==null){we(i,o,!0);continue}let p=M.embed;p.b!==void 0?ee(p.b,{client:o.id.client,clock:o.id.clock},!1):((!x||x.atom)&&ee(`~${P}`,null,!0),x.runs.push({br:!0}),x.items&&x.items.push({at:m,id:de(o.id),client:o.id.client,clock:o.id.clock,length:o.length,kind:"br",text:null,blockId:null,raw:{...V}}),x.len+=1);continue}if(M instanceof ve){(!x||x.atom)&&ee(`~${P}`,null,!0);let K=x.t==="code_block";if(!X||X.code!==K){let i=st(V,x.t);X={code:K,marks:i,mk:rn(i)}}x.runs.push({text:M.str,marks:X.marks,mk:X.mk}),x.items&&x.items.push({at:m,id:de(o.id),client:o.id.client,clock:o.id.clock,length:o.length,kind:"text",text:M.str,blockId:null,raw:{...V}}),x.len+=M.str.length}}if(D){for(let o of D.active)Re(o);Se()}x&&(x.fmtOut=be());let le=new Map;for(let o of b)o.kind!=="b"||o.implicit||(le.get(o.baseId)??le.set(o.baseId,[]).get(o.baseId)).push(o);let Ee=o=>o.runs.map(m=>m.br?`
3
+ `:m.hole?"":m.text).join(""),_e=new Map,Te=[];for(let[o,m]of le){if(m.length<2)continue;let d=_o(m);for(let v of m)if(v!==d&&(v.hide=!0,(_e.get(o)??_e.set(o,[]).get(o)).push(de(v.brk)),!(Ue(v.runs,d.runs)&&v.t===d.t)&&Ee(v)&&(A.push({key:`d${v.brk.client}.${v.brk.clock}`,id:o,text:Ee(v),h:$n(Ee(v)),copy:!0}),v.items?.length))){let M=de(t.resolve(v.brk)),K=Rn(M);Te.push({key:K,sourceKey:M,source:{client:v.brk.client,clock:v.brk.clock},operationId:null,blockId:o,end:null,sv:[],legacy:!1,implicit:!0}),w.push({key:K,sourceKey:M,blockId:o,end:null,sv:[],at:v.items[0].at,live:!0,items:v.items})}}let We=[],Ye=[],he=0;for(let o of b){if(o.kind==="h"){Ye.push({at:he,len:o.len});continue}if(o.hide){Ye.push({at:he,len:o.len+o.runs.reduce((d,v)=>d+(v.hole??0),0)});continue}We.push(o);let m=o.implicit?0:1;for(let d of o.runs)d.hole?Ye.push({at:he+m,len:d.hole}):m+=d.br?1:d.text.length;he+=o.len}return{visible:We,holes:Ye,orphans:A,tokens:he,copies:_e,hidden:w,removals:Te.length?[...j,...Te]:j,fences:$,stops:B}}var Jt="remove",Pn="restore",Vt="copy-active",yt="copy-lost",Gn="attr",qn="text-delete",mt=class extends Error{constructor(t){super(t),this.name="RecoveryError"}},G=e=>{throw new mt(e)},xe=e=>Number.isSafeInteger(e)&&e>=0,Bo=e=>Number.isSafeInteger(e)&&e>0,Tn=/^(?:0|[1-9]\d*)$/,Wn=e=>e!==null&&typeof e=="object"&&!Array.isArray(e),ce=e=>e===null||typeof e!="object"?e:JSON.parse(JSON.stringify(e)),kt=(e,t)=>e<t?-1:e>t?1:0,Xn=e=>[...e].sort(kt),Bn=e=>`${e.client}.${e.clock}`,Fo=e=>JSON.stringify(["author",e]),Ps=(e,t)=>JSON.stringify([Jt,e,t]),Gs=(e,t)=>JSON.stringify([Pn,e,t]),Nn=e=>JSON.stringify([Vt,e]),Rn=e=>JSON.stringify([yt,e]),qs=(e,t,n)=>JSON.stringify([qn,e,t,n]),Ws=(e,t)=>JSON.stringify([Gn,e,t]);function ae(e){if(typeof e!="string")return null;let t=e.indexOf(".");if(t<1||t===e.length-1)return null;let n=e.slice(0,t),s=e.slice(t+1);if(!Tn.test(n)||!Tn.test(s))return null;let c=Number(n),r=Number(s);return xe(c)&&xe(r)?{client:c,clock:r}:null}var Ge=(e,t,n)=>{Wn(e)||G(`Invalid gone record: ${n}`);for(let s of Object.keys(e))t.includes(s)||G(`Unsupported gone field ${s} in ${n}`)},Fn=(e,t)=>{Array.isArray(e)||G(`Invalid state vector in ${t}`);let n=[],s=-1;for(let c of e){(!Array.isArray(c)||c.length!==2)&&G(`Invalid state vector in ${t}`);let[r,l]=c;(!xe(r)||!xe(l)||r<=s)&&G(`Invalid state vector in ${t}`),s=r,n.push([r,l])}return n},Jo=e=>{if(typeof e!="string")return!1;if(e.charCodeAt(0)!==91)return ae(e)!==null;let t;try{t=JSON.parse(e)}catch{return!1}return!Array.isArray(t)||!ae(t[1])?!1:t[0]===Jt?t.length===3&&typeof t[2]=="string"&&t[2]!=="":(t[0]===Vt||t[0]===yt)&&t.length===2},Hn=(e,t,n)=>{if(t.charCodeAt(0)===91){let r=null;try{r=JSON.parse(t)}catch{G(`Malformed gone key: ${t}`)}if((!Array.isArray(r)||typeof r[0]!="string")&&G(`Malformed gone key: ${t}`),r[0]===Jt){(r.length!==3||typeof r[2]!="string"||!r[2])&&G(`Malformed gone key: ${t}`);let l=ae(r[1]);l||G(`Malformed gone key: ${t}`),Ge(e,["blockId","end","sv"],t),(typeof e.blockId!="string"||!e.blockId)&&G(`Invalid removal record: ${t}`);let a=e.end??null;a!==null&&!ae(a)&&G(`Invalid removal record: ${t}`),n.removals.push({key:t,sourceKey:r[1],source:l,operationId:r[2],blockId:e.blockId,end:a,sv:Fn(e.sv,t),legacy:!1});return}if(r[0]===Pn){(r.length!==3||typeof r[2]!="string"||!r[2])&&G(`Malformed gone key: ${t}`),ae(r[1])||G(`Malformed gone key: ${t}`),Ge(e,["covers","baseline"],t),(!Array.isArray(e.covers)||e.covers.some(a=>!Jo(a)))&&G(`Invalid restore record: ${t}`);let l=e.baseline??{};Ge(l,["type","attrs"],t),(typeof l.type!="string"||!Wn(l.attrs))&&G(`Invalid restore record: ${t}`),n.restores.push({key:t,sourceKey:r[1],operationId:r[2],covers:Xn(e.covers),baseline:{type:l.type,attrs:ce(l.attrs)}});return}if(r[0]===Vt){(r.length!==2||!ae(r[1]))&&G(`Malformed gone key: ${t}`),e!==!0&&G(`Invalid copy-active record: ${t}`),n.copyActive.add(r[1]);return}if(r[0]===qn){(r.length!==4||!xe(r[1])||!xe(r[2])||typeof r[3]!="string"||!r[3])&&G(`Malformed gone key: ${t}`),Ge(e,["length","actor","sv"],t),(!Bo(e.length)||!xe(r[2]+e.length-1))&&G(`Invalid text-delete record: ${t}`),xe(e.actor)||G(`Invalid text-delete record: ${t}`),n.textDeletes.push({key:t,client:r[1],clock:r[2],length:e.length,actor:e.actor,sv:Fn(e.sv,t)});return}if(r[0]===Gn){(r.length!==3||!ae(r[1])||typeof r[2]!="string"||!r[2])&&G(`Malformed gone key: ${t}`),e===void 0&&G(`Invalid attribute override: ${t}`);let l=n.attrs.get(r[1])??new Map;l.set(r[2],ce(e)),n.attrs.set(r[1],l);return}G(`Unsupported gone record: ${t}`)}let s=ae(t);s||G(`Malformed gone key: ${t}`),Ge(e,["b","e"],t),(typeof e.b!="string"||!e.b)&&G(`Invalid gone record: ${t}`);let c=e.e??null;c!==null&&!ae(c)&&G(`Invalid gone record: ${t}`),n.removals.push({key:t,sourceKey:t,source:s,operationId:null,blockId:e.b,end:c,sv:[],legacy:!0})},Ut=()=>({removals:[],restores:[],copyActive:new Set,attrs:new Map,textDeletes:[]}),Tt=e=>{if(e!==null&&typeof e=="object"&&!Object.isFrozen(e)){for(let t of Object.keys(e))Tt(e[t]);Object.freeze(e)}return e},Bt=(e,t)=>{let n=Ut();try{Hn(e,t,n)}catch(s){if(!(s instanceof mt))throw s;return null}for(let s of[n.removals,n.restores,n.textDeletes])for(let c of s)Tt(c);for(let s of n.attrs.values())for(let c of s.values())Tt(c);return n},Jn=new WeakMap,bt=(e,t)=>{for(let n of t.removals)e.removals.push(n);for(let n of t.restores)e.restores.push(n);for(let n of t.textDeletes)e.textDeletes.push(n);for(let n of t.copyActive)e.copyActive.add(n);for(let[n,s]of t.attrs){let c=e.attrs.get(n)??new Map;for(let[r,l]of s)c.set(r,l);e.attrs.set(n,c)}},Vn=new WeakMap,Vo=e=>{let t=Vn.get(e);if(t)return t;let n=new Map,s=null,c=[],r=a=>{let u=e.has(a),f=u?e.get(a):void 0,g=n.get(a);if(g&&g.live===u&&g.value===f)return;let I=u?Bt(f,a):null;if(!g){let h={live:u,value:f,record:I};n.set(a,h),u&&I&&s&&c.push(I);return}g.live=u,g.value=f,g.record=I,s=null};for(let a of e._map.keys())r(a);e.observe(a=>{for(let u of a.keysChanged)r(u)});let l={intents(){for(let a of e.doc._transactionCleanups)for(let u of a.changed.get(e)??[])r(u);if(s){if(c.length){for(let a of c)bt(s,a);c=[]}}else{s=Ut();for(let a of n.values())a.record&&bt(s,a.record);c=[]}return{removals:s.removals.slice(),restores:s.restores.slice(),copyActive:new Set(s.copyActive),attrs:new Map([...s.attrs].map(([a,u])=>[a,new Map(u)])),textDeletes:s.textDeletes.slice()}}};return Vn.set(e,l),l};function Dt(e,{strict:t=!1,kept:n=!0}={}){let s=Ut();if(t)return e.forEach((l,a)=>Hn(l,a,s)),s;if(n&&e instanceof et&&e.doc)return Vo(e).intents();if(!n)return e.forEach((l,a)=>{let u=Bt(l,a);u&&bt(s,u)}),s;let c=Jn.get(e)??new Map,r=new Map;return e.forEach((l,a)=>{let u=c.get(a),f=u&&u.value===l?u:{value:l,record:Bt(l,a)};r.set(a,f),f.record&&bt(s,f.record)}),Jn.set(e,r),s}var Ft=e=>{if(Array.isArray(e))return e.map(Ft);if(e!==null&&typeof e=="object"){let t={};for(let n of Object.keys(e).sort())t[n]=Ft(e[n]);return t}return e},Uo=e=>JSON.stringify(Ft(e)),wt=e=>se.nodes[e]??se.nodes.paragraph,zo=(e,t,n=null)=>{let s=e.attrs.get(t),c=n?.get("t"),r=s&&s.get("t")||"paragraph",l=typeof c=="string"&&se.nodes[c]?c:r,a=wt(l),u={};for(let f of nt(a))u[f]=ce(s&&s.has(f)?s.get(f):ot(a,f));if(l==="table"&&Object.assign(u,ce(In(e.tableFields,t,{cols:u.cols,rows:u.rows}))),l==="board"&&Object.assign(u,ce(En(e.boardFields,t))),n)for(let[f,g]of n)f!=="t"&&Object.hasOwn(u,f)&&(u[f]=ce(g));return{id:t,type:l,attrs:u}},Lo=e=>{let t={};if(!e)return t;for(let n of[...e.keys()].sort())t[n]=ce(e.get(n));return t},Un="recovered:",Dn=e=>typeof e=="string"&&e.startsWith(Un)?e.slice(Un.length):null;function _t(e,t,n){let s=new Set(t.map(I=>I.key)),c=null;for(let I of n.restores){if(I.sourceKey!==e)continue;let h=I.covers.reduce((S,j)=>S+(s.has(j)?1:0),0);(!c||h>c.count||h===c.count&&kt(I.key,c.restore.key)<0)&&(c={restore:I,count:h})}if(!c)return null;let r=n.attrs.get(e),l=r?.get("t"),a=se.nodes[c.restore.baseline.type]?c.restore.baseline.type:"paragraph",u=typeof l=="string"&&se.nodes[l]?l:a,f=wt(u),g={};for(let I of nt(f))r&&r.has(I)?g[I]=ce(r.get(I)):Object.hasOwn(c.restore.baseline.attrs,I)?g[I]=ce(c.restore.baseline.attrs[I]):g[I]=ce(ot(f,I));return{type:u,attrs:g,key:c.restore.key}}var Po=e=>{let t={};for(let n of Object.keys(e).sort())t[n]=ce(e[n]);return t},Go=(e,t)=>t.some(n=>e.clock>=(n.get(e.client)??0)),qo=e=>{let t=[];for(let[n,s]of e.sort((c,r)=>c[0]-r[0])){let c=t[t.length-1];c&&n<=c.end?c.end=Math.max(c.end,s):t.push({start:n,end:s})}return t},Wo=(e,t)=>{let n=0,s=e.length-1;for(;n<=s;){let c=n+s>>1,r=e[c];if(t<r.start)s=c-1;else if(t>=r.end)n=c+1;else return!0}return!1},Xo=(e,t,n)=>{let s=cn(t,e.length).physicalRanges(0,t.tokens),c=new Map,r=(f,g,I)=>{for(let h of n.resolveRange(f.id.client,f.id.clock+g,I-g)){let S=c.get(h.client);S?S.push([h.clock,h.clock+h.length]):c.set(h.client,[[h.clock,h.clock+h.length]])}},l=0,a=0;for(let f=e._start;f&&a<s.length;f=f.right){if(f.deleted||!f.countable)continue;let g=l;l+=f.length;let I=f.content,h=I instanceof ve;if(!h&&!(I instanceof re)||!h&&I.embed.b!==void 0)continue;for(;a<s.length&&s[a][1]<=g;)a++;let S=a;for(;S<s.length&&s[S][0]<l&&(r(f,Math.max(g,s[S][0])-g,Math.min(l,s[S][1])-g),!(s[S][1]>=l));)S++;a=S}let u=new Map;for(let[f,g]of c)u.set(f,qo(g));return(f,g)=>{let I=u.get(f);return I?Wo(I,g):!1}},zn=(e,t,n,s,c)=>{let r=e.resolve({client:t.client,clock:t.clock}),l=t.kind==="text"?sn(st(t.raw,s)):{},a=!Go(t,n);return{client:t.client,clock:t.clock,length:t.length,sourceClient:r.client,sourceClock:r.clock,baseline:a,displaced:!a&&!c(r.client,r.clock),kind:t.kind,text:t.kind==="text"?t.text:null,marks:l,raw:Po(t.raw)}},Ln=(e,t)=>{let n=e[e.length-1];if(n&&n.kind===t.kind&&n.baseline===t.baseline&&n.displaced===t.displaced&&n.client===t.client&&n.clock+n.length===t.clock&&n.sourceClient===t.sourceClient&&n.sourceClock+n.length===t.sourceClock&&Ue(n.marks,t.marks)&&Ue(n.raw,t.raw)){n.length+=t.length,n.kind==="text"&&(n.text+=t.text);return}e.push(t)},Ho=(e,t)=>({id:Bn(e),length:e.length,source:Bn({client:e.sourceClient,clock:e.sourceClock}),baseline:e.baseline,displaced:e.displaced,kind:e.kind,...e.kind==="text"?{text:e.text}:{},marks:e.marks,raw:e.raw,author:t(e.sourceClient)});function Qn(e,t,n,s,c,r,l,a){let u=(Y,R,z=null)=>{let y=t.boundaryOf(R);if(!y||y.blockId!==Y||!y.recoveryOf)return zo(e,Y,z);let k=_t(y.recoveryOf,a.get(y.recoveryOf)??[],r),b=typeof z?.get("t")=="string"&&se.nodes[z.get("t")]?z.get("t"):k?.type??"paragraph",A={};for(let w of nt(wt(b)))A[w]=ce(z?.has(w)?z.get(w):k&&Object.hasOwn(k.attrs,w)?k.attrs[w]:ot(wt(b),w));return{id:Y,type:b,attrs:A}},f=Y=>{let R=e.origins.get(Fo(Y));return typeof R=="string"&&R?R:null},g=[...s].sort((Y,R)=>kt(Y.key,R.key)),I=g[0].blockId,h=r.attrs.get(n),S=Lo(h),j=u(I,g[0].source,h),N=new Map(g.map(Y=>[Y.key,new Map(Y.sv)])),T=new Map;for(let Y of g){let R=c.get(Y.key);if(!R)continue;let z=N.get(Y.key);for(let y of R.items){let k=T.get(y.id);k?k.vectors.push(z):T.set(y.id,{item:y,vectors:[z]})}}let F=[...T.values()].sort((Y,R)=>Y.item.at-R.item.at),J=[{...j,author:f(t.resolve(g[0].source).client),runs:[]}],W=J[0];for(let Y of F){let R=Y.item;if(R.kind==="marker"){if(t.boundaryOf({client:R.client,clock:R.clock})?.kind==="restore"||!R.blockId||R.blockId===W.id)continue;W={...u(R.blockId,{client:R.client,clock:R.clock}),author:f(t.resolve({client:R.client,clock:R.clock}).client),runs:[]},J.push(W);continue}if(R.kind==="text")for(let z=0;z<R.length;z++)Ln(W.runs,zn(t,{...R,clock:R.clock+z,length:1,text:R.text[z]},Y.vectors,W.type,l));else Ln(W.runs,zn(t,R,Y.vectors,W.type,l))}let U={source:n,blockId:I,type:j.type,attrs:j.attrs,author:J[0].author,blocks:J.map(Y=>({id:Y.id,type:Y.type,attrs:Y.attrs,author:Y.author,runs:Y.runs.map(R=>Ho(R,f))})),removals:g.map(Y=>({key:Y.key,operationId:Y.operationId,end:Y.end,sv:Y.sv.map(([R,z])=>[R,z])})),restores:r.restores.filter(Y=>Y.covers.some(R=>g.some(z=>z.key===R))).sort((Y,R)=>kt(Y.key,R.key)).map(Y=>({key:Y.key,covers:Xn(Y.covers)})),copyActive:r.copyActive.has(n),overrides:S,recoverable:J.some(Y=>Y.runs.some(R=>R.displaced))};return{...U,revision:Uo(U)}}var Qo=(e,t)=>{for(let[n,s]of e)if(n===t)return s;return 0},Zo=(e,t)=>{for(let n of t.items)if(n.kind!=="marker"&&n.clock+n.length-1>=Qo(e.sv,n.client))return!0;return!1},Zn=(e,t)=>{let n=ae(e.source),s=ae(t.source);return n.client-s.client||n.clock-s.clock};function eo(e,t,n){let s=n.walked??_n(e,t),c=n.intents??Dt(e.gone,{strict:n.strict===!0}),r=new Map;for(let f of s.hidden??[])r.set(f.key,f);let l=new Map;for(let f of s.removals??c.removals){let g=l.get(f.sourceKey);g?g.push(f):l.set(f.sourceKey,[f])}let a=null;return{intents:c,hidden:r,groups:l,visible:(f,g)=>(a||(a=Xo(e.flow,s,t)),a(f,g))}}function Xs(e,t={}){let n=t.index??Ne(e.origins);try{let{intents:s,hidden:c,groups:r,visible:l}=eo(e,n,t),a=new Map;for(let[u,f]of r)a.set(u,Qn(e,n,u,f,c,s,l,r));return{sources:a,list:[...a.values()].sort(Zn),intents:s}}finally{t.index||n.dispose()}}function Hs(e,t={}){let n=t.index??Ne(e.origins);try{let{intents:s,hidden:c,groups:r,visible:l}=eo(e,n,t),a=[];for(let[u,f]of r){if(!f.some(I=>c.has(I.key)&&Zo(I,c.get(I.key))))continue;let g=Qn(e,n,u,f,c,s,l,r);g.recoverable&&a.push(g)}return{list:a.sort(Zn),intents:s}}finally{t.index||n.dispose()}}export{Ne as a,es as b,ts as c,Et as d,ut as e,yn as f,ys as g,ms as h,at as i,Ie as j,it as k,go as l,as as m,te as n,dn as o,fs as p,Mo as q,In as r,$o as s,Ss as t,Kt as u,En as v,js as w,Es as x,mt as y,Bn as z,Fo as A,Ps as B,Gs as C,Nn as D,qs as E,Ws as F,ae as G,Dt as H,Uo as I,Un as J,Dn as K,_t as L,Xs as M,Hs as N,_n as O};
@@ -0,0 +1,2 @@
1
+ import{a as x,d as k}from"./c-3LDGIBMN.js";var D=24576,I=8192,v=["title","html","css","javascript","fallbackHtml","summary"],$=t=>new TextEncoder().encode(JSON.stringify(t)).length,J=0,O=class extends Error{constructor(o){super(o),this.name="ToolStateError",this.code=o}};function H(t){return!t||typeof t!="object"||Array.isArray(t)||Object.keys(t).length!==v.length||!v.every(o=>Object.hasOwn(t,o)&&typeof t[o]=="string")?{ok:!1,code:"invalid-artifact"}:$(t)<=D?{ok:!0}:{ok:!1,code:"artifact-too-large"}}function C(t){try{let o=x(t);return $(o)<=I?{ok:!0}:{ok:!1,code:"state-too-large"}}catch{return{ok:!1,code:"invalid-state"}}}function A(t){if(!Array.isArray(t)||t.some(o=>typeof o!="string"&&!(Number.isSafeInteger(o)&&o>=0)))throw new TypeError("tool state path must be an array of strings or non-negative integers");return t.slice()}function E(t,o){try{let s={state:t===void 0?{}:x(t)};k(s,{...o,path:["state",...o.path]});let a=C(s.state);if(!a.ok)throw new O(a.code)}catch(s){throw s instanceof O?s:new O("invalid-state")}}function F(t,o,s){let a=[o,s];return Object.freeze({get data(){return t.data?.[o]?.[s]},set(c,i){let r=A(c);E(t.data?.[o]?.[s],{op:"set",path:r,value:i}),t.set([...a,...r],i)},delete(c){t.delete([...a,...A(c)])},add(c,i=1){let r=A(c);if(!r.length||typeof i!="number"||!Number.isFinite(i))throw new O("invalid-state");E(t.data?.[o]?.[s],{op:"add",path:r,n:i}),t.add([...a,...r],i)}})}function z(t){let o=x(t??{}),s=new Set,a=()=>{for(let i of[...s])i()},c=i=>{let r={state:o};k(r,{...i,path:["state",...i.path]});let f=C(r.state);if(!f.ok)throw new O(f.code);o=r.state,a()};return Object.freeze({get data(){return x(o)},set(i,r){c({op:"set",path:A(i),value:r})},delete(i){c({op:"del",path:A(i)})},add(i,r=1){let f=A(i);if(!f.length||typeof r!="number"||!Number.isFinite(r))throw new O("invalid-state");c({op:"add",path:f,n:r})},on(i,r){if(i!=="change"||typeof r!="function")throw new TypeError("reader state supports on(change, fn)");return s.add(r),()=>s.delete(r)}})}function q(t){let o=[],s=0,a=null,c=0;for(let i=0;i<t.length;i++){let r=t[i];a?r===a&&t[i-1]!=="\\"&&(a=null):r==='"'||r==="'"?a=r:r==="("||r==="["?c++:r===")"||r==="]"?c--:r===","&&c===0&&(o.push(t.slice(s,i).trim()),s=i+1)}return o.push(t.slice(s).trim()),o.filter(Boolean)}function L(t,o){let s="",a=0;for(;a<t.length;){let c=t.indexOf("{",a);if(c<0){s+=t.slice(a);break}let i=t.slice(a,c).trim(),r=1,f=c+1,d=null;for(;f<t.length&&r;f++){let m=t[f];d?m===d&&t[f-1]!=="\\"&&(d=null):m==='"'||m==="'"?d=m:m==="{"?r++:m==="}"&&r--}let h=t.slice(c+1,f-1);/^@(?:media|supports|container)\b/i.test(i)?s+=`${i}{${L(h,o)}}`:i.startsWith("@")?s+=`${i}{${h}}`:s+=`${q(i).map(m=>`${o} ${m}`).join(", ")}{${h}}`,a=f}return s}function M({root:t,artifact:o,mode:s,state:a,tables:c=()=>[],onError:i=()=>{},setTimer:r=setTimeout,clearTimer:f=clearTimeout}){let d={change:new Set,tables:new Set},h=new Set,m,S=!1,j=!1,n=()=>{if(S)return;S=!0;for(let e of h)f(e);h.clear();for(let e of Object.values(d))e.clear();let l=m;m=null,typeof l=="function"&&l()},p=l=>{if(!S)for(let e of[...d[l]])e()},u=()=>Object.freeze(x(c()).map(l=>N(l))),w=Object.freeze({root:t,mode:s,state:a,on(l,e){if(!Object.hasOwn(d,l)||typeof e!="function")throw new TypeError("unknown tool event");return d[l].add(e),()=>d[l].delete(e)},table(l){return u().find(e=>e.id===l)??null},tables:u,schedule(l,e){if(S)return null;let T=r(()=>{h.delete(T),S||l()},e);return h.add(T),T}});try{t.innerHTML=o.html;let l=t.ownerDocument.createElement("style"),e=String(++J),T=`[data-tool-scope="${e}"]`;t.setAttribute("data-tool-scope",e),l.textContent=L(o.css,T),t.prepend(l);let y=`${o.javascript}
2
+ ;return typeof mount === "function" ? mount : undefined;`,b=new Function("tool",y)(w),g=typeof b=="function"?b:b?.mount;if(typeof g!="function")throw new TypeError("tool script must define mount(tool)");m=g(w)}catch(l){j=!0;try{n()}catch(e){i(e)}i(l),t.innerHTML=`${o.fallbackHtml}<p data-tool-error>Tool could not start</p>`}return{notifyState:()=>p("change"),notifyTables:()=>p("tables"),dispose:n,failed:j}}function N(t){if(t&&typeof t=="object"){for(let o of Object.values(t))N(o);Object.freeze(t)}return t}function K({store:t=null,mode:o,tables:s=()=>[]}){let a=new Set,c=new Set,i=!1,r=null,f=null,d=(n,p,u)=>{let w=`${n}:${p}`;c.has(w)||(c.add(w),console.warn(`clayjs: tool ${n} revision ${p} failed`,u))},h=(n,p)=>{n.failed=!0,d(n.id,n.rev,p),n.readerOff?.(),n.readerOff=null;try{n.runtime?.dispose()}catch(w){d(n.id,n.rev,w)}n.runtime=null,n.root.innerHTML=n.artifact?.fallbackHtml??"";let u=n.root.ownerDocument.createElement("p");u.setAttribute("data-tool-error",""),u.textContent="Tool could not start",n.root.append(u)},m=()=>{for(let n of a){if(n.disposed||o==="view")continue;let p=t?.data?.[n.id]?.[n.rev],u=JSON.stringify(p);if(u!==n.signature){n.signature=u;try{n.runtime&&p!==void 0?n.runtime.notifyState():n.render()}catch(w){h(n,w)}}}},S=t?.on?.("change",m)??(()=>{});return{mount(n,{id:p,artifact:u,rev:w,seed:l={}}){if(i)throw new Error("tool host is disposed");let e={root:n,id:p,artifact:u,rev:w,seed:l,runtime:null,readerOff:null,disposed:!1,failed:!1,signature:void 0},T=y=>{let b=n.ownerDocument.createElement("p");b.setAttribute("data-tool-note",""),b.textContent=y,n.append(b)};e.render=()=>{e.readerOff?.(),e.readerOff=null;try{e.runtime?.dispose()}catch(g){d(e.id,e.rev,g)}if(e.runtime=null,e.failed=!1,n.removeAttribute("data-tool-scope"),H(e.artifact).ok===!1){e.failed=!0,n.textContent="Tool unavailable",d(e.id,e.rev,new Error("invalid artifact"));return}let y=t?.data?.[e.id]?.[e.rev];if(e.signature=JSON.stringify(y),o==="edit"&&t&&y===void 0){n.innerHTML=e.artifact.fallbackHtml,T("Waiting for this tool's state\u2026");return}let b=o==="edit"&&t?F(t,e.id,e.rev):z(y??e.seed??{});e.runtime=M({root:n,artifact:e.artifact,mode:o,state:b,tables:s,onError:g=>d(e.id,e.rev,g)}),e.failed=e.runtime.failed===!0,e.readerOff=b.on?.("change",()=>{try{e.runtime?.notifyState()}catch(g){h(e,g)}})??null,o==="edit"&&!t&&T("This document can't save tool state")};try{e.render()}catch(y){h(e,y)}return a.add(e),{get failed(){return e.failed},update({artifact:y,rev:b}){if(!e.disposed&&!(b===e.rev&&y===e.artifact)){e.artifact=y,e.rev=b;try{e.render()}catch(g){h(e,g)}}},dispose(){if(!e.disposed){e.disposed=!0,a.delete(e),e.readerOff?.();try{e.runtime?.dispose()}catch(y){d(e.id,e.rev,y)}e.runtime=null}}}},tablesChanged(){if(i||r!==null||!a.size)return;let n=[...a][0]?.root.ownerDocument.defaultView??globalThis;f=n,r=(n.requestAnimationFrame?.bind(n)??(u=>n.setTimeout(u,0)))(()=>{r=null;for(let u of a)try{u.runtime?.notifyTables()}catch(w){h(u,w)}})},dispose(){if(!i){i=!0,S(),r!==null&&(f.cancelAnimationFrame?f.cancelAnimationFrame(r):f.clearTimeout(r),r=null);for(let n of[...a]){n.disposed=!0,n.readerOff?.();try{n.runtime?.dispose()}catch(p){d(n.id,n.rev,p)}}a.clear()}}}}export{H as a,C as b,K as c};