@panphora/clayjs 1.15.1 → 1.16.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (506) hide show
  1. package/README.md +4 -5
  2. package/THIRD-PARTY-NOTICES.md +16 -0
  3. package/compat/highlight-11.9.0.min.js +1213 -0
  4. package/compat/highlight-LICENSE +29 -0
  5. package/compat/journal-assets.lock.json +22 -0
  6. package/compat/overtype-2.6.1.min.js +116 -0
  7. package/compat/overtype-LICENSE +21 -0
  8. package/dist/all.js +90 -0
  9. package/dist/clay-dom.js +84 -0
  10. package/dist/clay-events.js +103 -0
  11. package/dist/clay-internals.js +85 -0
  12. package/dist/clay-options.js +93 -0
  13. package/dist/clay-router.js +98 -0
  14. package/dist/clay-ui.js +95 -0
  15. package/dist/clay-utils.js +84 -0
  16. package/dist/clay.js +146 -0
  17. package/dist/clay.standalone.js +83090 -58706
  18. package/dist/m/attrs/add-from-T5LJXFFI.js +1 -0
  19. package/dist/m/attrs/onaftersave-OKSWEJQF.js +1 -0
  20. package/dist/m/attrs/refetch-on-save-NWPPXOCZ.js +1 -0
  21. package/dist/m/attrs/save-freeze-FUP4Q4X3.js +1 -0
  22. package/dist/m/c-2AZDZWCK.js +1 -0
  23. package/dist/m/c-2JL6E75N.js +1 -0
  24. package/dist/m/c-2M73252O.js +1 -0
  25. package/dist/m/c-2SPVQSHC.js +1 -0
  26. package/dist/m/c-33HUYEDI.js +1 -0
  27. package/dist/m/c-33JJ6CBX.js +2 -0
  28. package/dist/m/c-35NBGMZB.js +1 -0
  29. package/dist/m/c-3GJ4SDE2.js +1 -0
  30. package/dist/m/c-3IQRECYS.js +1 -0
  31. package/dist/m/c-3OWDMNJR.js +2 -0
  32. package/dist/m/c-46XYM55L.js +1 -0
  33. package/dist/m/c-4B6H4G5V.js +1 -0
  34. package/dist/m/c-4DRMS4QG.js +9 -0
  35. package/dist/m/c-4FFHZM32.js +1 -0
  36. package/dist/m/c-4JZDZFF6.js +1 -0
  37. package/dist/m/c-4L3BTFRK.js +1 -0
  38. package/dist/m/c-4Q2XTQ2N.js +2 -0
  39. package/dist/m/c-4WKFKEKF.js +1 -0
  40. package/dist/m/c-4YSCRICO.js +1 -0
  41. package/dist/m/c-54RCDCBU.js +1 -0
  42. package/dist/m/c-5M4YEKCX.js +4 -0
  43. package/dist/m/c-5R4PTRG2.js +1 -0
  44. package/dist/m/c-5V3MOVJT.js +1 -0
  45. package/dist/m/c-5VYOWDTI.js +1 -0
  46. package/dist/m/c-5Y6TNX5W.js +34 -0
  47. package/dist/m/c-5YIHJ3TJ.js +1 -0
  48. package/dist/m/c-66O32MV3.js +28 -0
  49. package/dist/m/c-6HMB24EV.js +1 -0
  50. package/dist/m/c-7DJDKPGL.js +1 -0
  51. package/dist/m/c-7O6AFR65.js +1 -0
  52. package/dist/m/c-7SWMYKAI.js +1 -0
  53. package/dist/m/c-7VGZ7RU5.js +1 -0
  54. package/dist/m/c-A7LS5UZW.js +1 -0
  55. package/dist/m/c-ANQTJ3B5.js +2 -0
  56. package/dist/m/c-AQLFEATB.js +1 -0
  57. package/dist/m/c-AYVOREBE.js +1 -0
  58. package/dist/m/c-B2ZXPOS3.js +3 -0
  59. package/dist/m/c-BBVGTQG7.js +1 -0
  60. package/dist/m/c-BMIZKMPV.js +1 -0
  61. package/dist/m/c-BTDI4Y23.js +1 -0
  62. package/dist/m/c-BWFVSBDF.js +1 -0
  63. package/dist/m/c-BYTKL6UX.js +1 -0
  64. package/dist/m/c-CFHW5AMY.js +6 -0
  65. package/dist/m/c-CJZSLMVQ.js +1 -0
  66. package/dist/m/c-CYWLPPUS.js +1 -0
  67. package/dist/m/c-CZUSOB7V.js +1 -0
  68. package/dist/m/c-DBE6ORSI.js +1 -0
  69. package/dist/m/c-DCFSEJZG.js +1 -0
  70. package/dist/m/c-DNZ5IFM6.js +1 -0
  71. package/dist/m/c-EDHUR4MX.js +1 -0
  72. package/dist/m/c-EJTGYSLN.js +1 -0
  73. package/dist/m/c-EY6UOM54.js +1 -0
  74. package/dist/m/c-F3CKJTJS.js +1 -0
  75. package/dist/m/c-F7Y6FLPY.js +1 -0
  76. package/dist/m/c-FA4DZVTC.js +1 -0
  77. package/dist/m/c-FILLTJA7.js +1 -0
  78. package/dist/m/c-G2BUZITR.js +1 -0
  79. package/dist/m/c-GB3JTV6E.js +1 -0
  80. package/dist/m/c-GBGWXTX4.js +1 -0
  81. package/dist/m/c-GHBCCVG4.js +1 -0
  82. package/dist/m/c-GJAEGGXY.js +1 -0
  83. package/dist/m/c-GOWBDM6J.js +1 -0
  84. package/dist/m/c-GQ6F6IDK.js +1 -0
  85. package/dist/m/c-H4LG442Q.js +1 -0
  86. package/dist/m/c-HA6INT6J.js +1 -0
  87. package/dist/m/c-HPURYVZS.js +2 -0
  88. package/dist/m/c-HRDCD3WN.js +67 -0
  89. package/dist/m/c-HT33EQRN.js +1 -0
  90. package/dist/m/c-HVYXIS72.js +1 -0
  91. package/dist/m/c-IB52R237.js +1 -0
  92. package/dist/m/c-IJUK2GPW.js +1 -0
  93. package/dist/m/c-IKWNE4R4.js +1 -0
  94. package/dist/m/c-IU3IYEU6.js +1 -0
  95. package/dist/m/c-IZ2EBRAJ.js +1 -0
  96. package/dist/m/c-J7CA54IP.js +1 -0
  97. package/dist/m/c-JAX2667S.js +6 -0
  98. package/dist/m/c-KI7M4AY3.js +1 -0
  99. package/dist/m/c-KIPQJX4B.js +1 -0
  100. package/dist/m/c-KKWLDOPM.js +1 -0
  101. package/dist/m/c-KR4UW4KW.js +1 -0
  102. package/dist/m/c-KY3VJGUA.js +8 -0
  103. package/dist/m/c-L4WQSC27.js +1 -0
  104. package/dist/m/c-LFPHCXY3.js +1 -0
  105. package/dist/m/c-LR4CGEPT.js +91 -0
  106. package/dist/m/c-LRPUO2MX.js +1 -0
  107. package/dist/m/c-LTGMXXKO.js +1 -0
  108. package/dist/m/c-LXENEBV7.js +1 -0
  109. package/dist/m/c-LZJPNR2W.js +1 -0
  110. package/dist/m/c-MMUIUUZG.js +2 -0
  111. package/dist/m/c-MTQHWQC3.js +1 -0
  112. package/dist/m/c-N326R2JD.js +1 -0
  113. package/dist/m/c-N7JPUPGC.js +1 -0
  114. package/dist/m/c-NMJRXKPC.js +8 -0
  115. package/dist/m/c-NRPJEVJS.js +1 -0
  116. package/dist/m/c-NUHP2XDB.js +1 -0
  117. package/dist/m/c-NZMNXVF6.js +1 -0
  118. package/dist/m/c-OCSZ4QGN.js +1 -0
  119. package/dist/m/c-OIBUTDXI.js +1 -0
  120. package/dist/m/c-OIDRZKAF.js +1 -0
  121. package/dist/m/c-OYTFP5QN.js +1 -0
  122. package/dist/m/c-P7KNDG34.js +1 -0
  123. package/dist/m/c-PPOSCAQD.js +1 -0
  124. package/dist/m/c-PQ5LK6QE.js +993 -0
  125. package/dist/m/c-PZ4XEPUP.js +2 -0
  126. package/dist/m/c-QHIWXHRO.js +1 -0
  127. package/dist/m/c-QHWJ5ZIJ.js +1 -0
  128. package/dist/m/c-QIX5BJYN.js +1 -0
  129. package/dist/m/c-QNKREOL6.js +1 -0
  130. package/dist/m/c-QQHEX6HA.js +1 -0
  131. package/dist/m/c-R7RMANJI.js +9 -0
  132. package/dist/m/c-RI4NT75Y.js +1 -0
  133. package/dist/m/c-RM7J7BV2.js +1 -0
  134. package/dist/m/c-RUJKSUQW.js +1 -0
  135. package/dist/m/c-RVMWGXEJ.js +1 -0
  136. package/dist/m/c-S7H2DRCB.js +1 -0
  137. package/dist/m/c-S7LK4KUE.js +1 -0
  138. package/dist/m/c-SGCCC4FW.js +25 -0
  139. package/dist/m/c-SGIA4IEQ.js +188 -0
  140. package/dist/m/c-SWRJFCNN.js +1 -0
  141. package/dist/m/c-T4VO4OCB.js +1 -0
  142. package/dist/m/c-TCCA5BZN.js +2 -0
  143. package/dist/m/c-TQEMVJCS.js +1 -0
  144. package/dist/m/c-TQZ2JYHD.js +1 -0
  145. package/dist/m/c-TR6RMDQ7.js +3 -0
  146. package/dist/m/c-TRS6TM6O.js +1 -0
  147. package/dist/m/c-UGHH4MB3.js +1 -0
  148. package/dist/m/c-UKHTLWUW.js +1 -0
  149. package/dist/m/c-UL2YUY52.js +1 -0
  150. package/dist/m/c-UNN7LWCT.js +1 -0
  151. package/dist/m/c-UXBMRDZB.js +235 -0
  152. package/dist/m/c-V7PZZRG7.js +1 -0
  153. package/dist/m/c-VAK7SG37.js +1 -0
  154. package/dist/m/c-VDSS4K3Z.js +1 -0
  155. package/dist/m/c-VFX45IZQ.js +1 -0
  156. package/dist/m/c-VHNSBD2M.js +1 -0
  157. package/dist/m/c-VKEDWYDF.js +1 -0
  158. package/dist/m/c-VL52ADDR.js +1 -0
  159. package/dist/m/c-WN5AY3OZ.js +1 -0
  160. package/dist/m/c-WNYBLIOZ.js +1 -0
  161. package/dist/m/c-WRBKEJD4.js +1 -0
  162. package/dist/m/c-WWDBYXLK.js +1 -0
  163. package/dist/m/c-WYFDLITL.js +1 -0
  164. package/dist/m/c-XN6MBKI6.js +67 -0
  165. package/dist/m/c-XNNW2CWK.js +1 -0
  166. package/dist/m/c-XPELB6E5.js +1 -0
  167. package/dist/m/c-XQXZAO7N.js +1 -0
  168. package/dist/m/c-Y6USGTS5.js +5 -0
  169. package/dist/m/c-YDH7Q3NY.js +1 -0
  170. package/dist/m/c-YG2NJYS6.js +135 -0
  171. package/dist/m/c-Z36J63PP.js +1 -0
  172. package/dist/m/c-Z4VRC7GU.js +7 -0
  173. package/dist/m/c-Z6K52OLP.js +19 -0
  174. package/dist/m/c-ZDY2MDAA.js +21 -0
  175. package/dist/m/c-ZE46QDIH.js +1 -0
  176. package/dist/m/c-ZUCOKOHT.js +1 -0
  177. package/dist/m/core/admin-attrs-VGNLAUDK.js +1 -0
  178. package/dist/m/core/autosave-E4PEFPZ6.js +1 -0
  179. package/dist/m/core/conflict-notice-VQ6Y64PH.js +1 -0
  180. package/dist/m/core/draft-mode-WSQAT67S.js +1 -0
  181. package/dist/m/core/host-permission-XN3K2IW3.js +1 -0
  182. package/dist/m/core/is-edit-mode-JXHDVGUL.js +1 -0
  183. package/dist/m/core/persist-HKHA66IY.js +3 -0
  184. package/dist/m/core/recovery-TBBSICE2.js +1 -0
  185. package/dist/m/core/save-WUCHTQBE.js +1 -0
  186. package/dist/m/core/save-core-FJVHT5M3.js +1 -0
  187. package/dist/m/core/snapshot-F3SWDZMM.js +1 -0
  188. package/dist/m/core/unsaved-warning-STKBHE6G.js +1 -0
  189. package/dist/m/dom/all-APS5ZSKP.js +1 -0
  190. package/dist/m/dom/dom-helpers-L7OSR6S4.js +1 -0
  191. package/dist/m/events/index-23DPTUT4.js +1 -0
  192. package/dist/m/internals/index-WOVAP3RU.js +1 -0
  193. package/dist/m/lib/cache-bust-CGWT6ZJI.js +1 -0
  194. package/dist/m/lib/region-policy-SB2AWVG5.js +1 -0
  195. package/dist/m/loader-HXX6YNH5.js +1 -0
  196. package/dist/m/manifest-F22DEDAC.js +1 -0
  197. package/dist/m/manifest-edit-C3C7376B.js +1 -0
  198. package/dist/m/manifest.json +3491 -0
  199. package/dist/m/options/options-2LH76JQ3.js +1 -0
  200. package/dist/m/page/editor-XUTB2HB2.js +189 -0
  201. package/dist/m/plugins/ai-edit-ZQ4CGWIP.js +6 -0
  202. package/dist/m/plugins/bind-text-NX46N5UV.js +1 -0
  203. package/dist/m/plugins/cms-HP3LSTPN.js +2293 -0
  204. package/dist/m/plugins/demo-ZIBFAA3R.js +1 -0
  205. package/dist/m/plugins/derive-UAAA4V4S.js +1 -0
  206. package/dist/m/plugins/indicator-PV4YW2ID.js +1 -0
  207. package/dist/m/plugins/live-NUTTXSBS.js +1 -0
  208. package/dist/m/plugins/menu-HCKO3DSP.js +138 -0
  209. package/dist/m/plugins/message-LQ6EDH4V.js +1 -0
  210. package/dist/m/plugins/page-KSUH7G6J.js +2 -0
  211. package/dist/m/plugins/page-view-W73OW7WI.js +1 -0
  212. package/dist/m/plugins/people-AJJ32YCG.js +1 -0
  213. package/dist/m/plugins/quickcrop-QNY3PKLD.js +26 -0
  214. package/dist/m/plugins/quickcrop-QNY3PKLD.js.LEGAL.txt +7 -0
  215. package/dist/m/plugins/richclay-RC3L2F6X.js +517 -0
  216. package/dist/m/plugins/richclay-RC3L2F6X.js.LEGAL.txt +1 -0
  217. package/dist/m/plugins/sortable-YRMQX3ZU.js +1 -0
  218. package/dist/m/plugins/source-KHK5UUSK.js +1 -0
  219. package/dist/m/plugins/undo-OF2L3CXU.js +1 -0
  220. package/dist/m/plugins/unsent-HJFLQJ2O.js +1 -0
  221. package/dist/m/plugins/upgrade-ZNYODP5Y.js +1 -0
  222. package/dist/m/plugins/upload-XSGNILUY.js +1 -0
  223. package/dist/m/plugins/visitor-drafts-XK5GW55Q.js +21 -0
  224. package/dist/m/plugins/visitor-drafts-owner-KSSH75EV.js +1 -0
  225. package/dist/m/plugins/wire-ZWVWKF76.js +1 -0
  226. package/dist/m/reader-core-ILWLXVMP.js +68 -0
  227. package/dist/m/route/route-KOCZSEGN.js +1 -0
  228. package/dist/m/sync/live-sync-4AUVXVJU.js +1 -0
  229. package/dist/m/ui/index-EVHKMKBL.js +1 -0
  230. package/dist/m/utils/index-4TJCVLT7.js +1 -0
  231. package/dist/m/vendor/Sortable.vendor-A755ITLN.js +3 -0
  232. package/dist/m/vendor/Sortable.vendor-A755ITLN.js.LEGAL.txt +1 -0
  233. package/dist/m/vendor/sap-core.vendor-A7BMUYZT.js +6 -0
  234. package/dist/offline-manifest.json +3800 -0
  235. package/dist/page/themes/light-1.css +406 -0
  236. package/dist/server/core.cjs +23662 -22860
  237. package/dist/server/offline-runtime.cjs +4954 -0
  238. package/dist/server/offline-runtime.mjs +4923 -0
  239. package/dist/server/rooms.mjs +9 -0
  240. package/docs/guide.md +1078 -669
  241. package/entries/all.js +2 -0
  242. package/entries/clay-data.js +1 -1
  243. package/entries/clay-dom.js +2 -0
  244. package/entries/clay-events.js +2 -0
  245. package/entries/clay-internals.js +2 -0
  246. package/entries/clay-options.js +2 -0
  247. package/entries/clay-router.js +2 -0
  248. package/entries/clay-ui.js +2 -0
  249. package/entries/clay-utils.js +2 -0
  250. package/entries/clay.js +2 -0
  251. package/entries/sap.js +6 -6
  252. package/fonts/ibm-plex-mono-LICENSE +93 -0
  253. package/fonts/ibm-plex-mono-latin-300-normal.woff2 +0 -0
  254. package/fonts/ibm-plex-mono-latin-400-italic.woff2 +0 -0
  255. package/fonts/ibm-plex-mono-latin-400-normal.woff2 +0 -0
  256. package/fonts/ibm-plex-mono-latin-500-normal.woff2 +0 -0
  257. package/fonts/ibm-plex-mono-latin-600-normal.woff2 +0 -0
  258. package/fonts/ibm-plex-sans-LICENSE +93 -0
  259. package/fonts/ibm-plex-sans-latin-400-normal.woff2 +0 -0
  260. package/fonts/ibm-plex-sans-latin-500-normal.woff2 +0 -0
  261. package/fonts/ibm-plex-sans-latin-600-normal.woff2 +0 -0
  262. package/fonts/ibm-plex.css +71 -0
  263. package/fonts/inter-LICENSE +93 -0
  264. package/fonts/inter-cyrillic-ext-wght-normal.woff2 +0 -0
  265. package/fonts/inter-cyrillic-wght-normal.woff2 +0 -0
  266. package/fonts/inter-greek-ext-wght-normal.woff2 +0 -0
  267. package/fonts/inter-greek-wght-normal.woff2 +0 -0
  268. package/fonts/inter-latin-ext-wght-normal.woff2 +0 -0
  269. package/fonts/inter-latin-wght-normal.woff2 +0 -0
  270. package/fonts/inter-vietnamese-wght-normal.woff2 +0 -0
  271. package/fonts/inter.css +62 -0
  272. package/fonts/newsreader-LICENSE +93 -0
  273. package/fonts/newsreader-latin-ext-opsz-normal.woff2 +0 -0
  274. package/fonts/newsreader-latin-opsz-normal.woff2 +0 -0
  275. package/fonts/newsreader-vietnamese-opsz-normal.woff2 +0 -0
  276. package/fonts/newsreader.css +26 -0
  277. package/fonts/work-sans-LICENSE +93 -0
  278. package/fonts/work-sans-latin-wght-normal.woff2 +0 -0
  279. package/fonts/work-sans.css +8 -0
  280. package/package.json +20 -3
  281. package/packed-contract.json +1 -0
  282. package/src/attrs/add-from.js +27 -4
  283. package/src/attrs/save-freeze.js +7 -52
  284. package/src/core/admin-attrs.js +119 -12
  285. package/src/core/admin-contenteditable.js +12 -10
  286. package/src/core/admin-inputs.js +14 -15
  287. package/src/core/admin-onclick.js +2 -0
  288. package/src/core/autosave.js +74 -21
  289. package/src/core/conflict-download.js +22 -0
  290. package/src/core/conflict-notice-ui.js +1173 -0
  291. package/src/core/conflict-notice.js +140 -697
  292. package/src/core/edit-mode.js +147 -14
  293. package/src/core/etag.js +30 -12
  294. package/src/core/host-meta.js +72 -8
  295. package/src/core/host-permission.js +29 -0
  296. package/src/core/is-edit-mode.js +145 -12
  297. package/src/core/mode-key.js +125 -0
  298. package/src/core/mode-lifecycle.js +544 -0
  299. package/src/core/mode-receipt.js +30 -0
  300. package/src/core/mode-refusal.js +13 -0
  301. package/src/core/mode-resources.js +52 -0
  302. package/src/core/mode-support.js +82 -0
  303. package/src/core/mode-switch.js +259 -0
  304. package/src/core/mode-transition.js +112 -0
  305. package/src/core/page-data-write.js +305 -0
  306. package/src/core/page-data.js +26 -227
  307. package/src/core/page-format-wire.js +4 -0
  308. package/src/core/page-format.js +58 -0
  309. package/src/core/persist.js +37 -9
  310. package/src/core/preserve-authored.js +114 -0
  311. package/src/core/recovery.js +772 -0
  312. package/src/core/runtime-url.js +105 -0
  313. package/src/core/save-core.js +109 -12
  314. package/src/core/save-replace.js +72 -0
  315. package/src/core/save-size-notice.js +134 -0
  316. package/src/core/save-size.js +140 -0
  317. package/src/core/save.js +805 -118
  318. package/src/core/snapshot.js +121 -11
  319. package/src/core/source-map.js +157 -9
  320. package/src/core/unsaved-warning.js +14 -4
  321. package/src/core/upgrade-run.js +408 -0
  322. package/src/core/version.js +18 -0
  323. package/src/lib/assets.js +30 -0
  324. package/src/lib/autosave-debug-gate.js +50 -0
  325. package/src/lib/autosave-scheduler.js +141 -0
  326. package/src/lib/boot-imports.js +8 -0
  327. package/src/lib/derived.js +3 -1
  328. package/src/lib/dirty-gate.js +15 -0
  329. package/src/lib/doc-storage.js +33 -0
  330. package/src/lib/effect.js +9 -4
  331. package/src/lib/mutation.js +4 -2
  332. package/src/lib/offline-runtime.js +226 -0
  333. package/src/lib/preload.js +48 -0
  334. package/src/lib/root-attrs.js +1 -1
  335. package/src/lib/trash.js +18 -0
  336. package/src/lib/undo/capture-move.js +152 -0
  337. package/src/live/local-channel.js +61 -0
  338. package/src/live/local-lane.js +60 -9
  339. package/src/live/server-lane.js +6 -3
  340. package/src/loader-logic.js +76 -15
  341. package/src/loader.js +218 -30
  342. package/src/page/adopt-boot.js +76 -22
  343. package/src/page/adopt.js +25 -4
  344. package/src/page/awareness.js +230 -0
  345. package/src/page/blocks.js +79 -5
  346. package/src/page/blocksel.js +20 -4
  347. package/src/page/board-face.js +13 -0
  348. package/src/page/board-panel.js +5 -17
  349. package/src/page/board-style.js +2 -13
  350. package/src/page/board-view.js +1 -11
  351. package/src/page/board-views.js +17 -0
  352. package/src/page/board.js +2 -2
  353. package/src/page/boot-pack.js +26 -0
  354. package/src/page/boot.js +237 -0
  355. package/src/page/checklist.js +1 -1
  356. package/src/page/chrome.js +411 -61
  357. package/src/page/csv-import.js +17 -2
  358. package/src/page/document-title-dom.js +40 -0
  359. package/src/page/document-title-runtime.js +76 -0
  360. package/src/page/document-title.js +9 -0
  361. package/src/page/drag.js +48 -13
  362. package/src/page/drop.js +2 -1
  363. package/src/page/editor.js +330 -86
  364. package/src/page/feature-loader.js +72 -0
  365. package/src/page/features/board.js +12 -0
  366. package/src/page/features/code.js +13 -0
  367. package/src/page/features/media.js +290 -0
  368. package/src/page/features/registry.js +23 -0
  369. package/src/page/features/table.js +383 -0
  370. package/src/page/{tool-view.js → features/tool.js} +33 -2
  371. package/src/page/format-codec.js +215 -0
  372. package/src/page/format-gate.js +179 -0
  373. package/src/page/format-level.js +157 -0
  374. package/src/page/highlight-slot.js +23 -0
  375. package/src/page/highlight.js +30 -16
  376. package/src/page/history-intent.js +78 -0
  377. package/src/page/inline.js +18 -25
  378. package/src/page/items.js +52 -11
  379. package/src/page/link.js +1 -0
  380. package/src/page/markdown.js +86 -1
  381. package/src/page/media-views.js +3 -0
  382. package/src/page/media.js +33 -245
  383. package/src/page/outline-cache.js +11 -0
  384. package/src/page/placeholder.js +27 -7
  385. package/src/page/projection.js +196 -50
  386. package/src/page/reader-patch.js +306 -0
  387. package/src/page/recover.js +1 -1
  388. package/src/page/rich/page-tool.js +1 -4
  389. package/src/page/runtime-owner.js +27 -0
  390. package/src/page/save-projection.js +7 -4
  391. package/src/page/schema.js +14 -0
  392. package/src/page/table-rect-key.js +3 -0
  393. package/src/page/table-select.js +4 -3
  394. package/src/page/table-style.js +1 -1
  395. package/src/page/table-views.js +3 -0
  396. package/src/page/table.js +8 -293
  397. package/src/page/themes/light-1.css +139 -2
  398. package/src/page/themes/light-1.source.css +269 -0
  399. package/src/page/tool-capability.js +3 -0
  400. package/src/page/tool-views.js +3 -0
  401. package/src/page/view.js +390 -107
  402. package/src/page/ybind/awareness.js +172 -0
  403. package/src/page/ybind/binding.js +9 -1
  404. package/src/page/ybind/bridge.js +50 -47
  405. package/src/page/ybind/decode.js +52 -19
  406. package/src/page/ybind/doc.js +27 -2
  407. package/src/page/ybind/group.js +12 -3
  408. package/src/page/ybind/index.js +2 -0
  409. package/src/page/ybind/lineage.js +71 -0
  410. package/src/page/ybind/marks.js +25 -1
  411. package/src/page/ybind/migrate.js +48 -13
  412. package/src/page/ybind/moves.js +32 -21
  413. package/src/page/ybind/positions.js +50 -0
  414. package/src/page/ybind/provider.js +84 -22
  415. package/src/page/ybind/recovery-proof.js +191 -0
  416. package/src/page/ybind/recovery-replay.js +130 -0
  417. package/src/page/ybind/tokens.js +15 -6
  418. package/src/page/ybind/walk.js +10 -3
  419. package/src/page/ybind/writer.js +48 -4
  420. package/src/plugins/ai-edit.js +167 -32
  421. package/src/plugins/bind-text.js +218 -0
  422. package/src/plugins/cms.js +93 -0
  423. package/src/plugins/indicator.js +57 -5
  424. package/src/plugins/live.js +282 -34
  425. package/src/plugins/menu/claygoo.svg.js +1 -0
  426. package/src/plugins/menu/seo-head.js +323 -0
  427. package/src/plugins/menu/seo.js +849 -0
  428. package/src/plugins/menu.js +425 -0
  429. package/src/plugins/page-view.js +131 -0
  430. package/src/plugins/page.js +1022 -275
  431. package/src/plugins/people.js +158 -31
  432. package/src/plugins/richclay.js +119 -9
  433. package/src/plugins/sortable.js +370 -60
  434. package/src/plugins/source.js +189 -366
  435. package/src/plugins/undo.js +289 -19
  436. package/src/plugins/unsent.js +132 -0
  437. package/src/plugins/upgrade-run.js +1 -0
  438. package/src/plugins/upgrade.js +210 -0
  439. package/src/plugins/upload-task.js +571 -0
  440. package/src/plugins/upload-ui.js +265 -0
  441. package/src/plugins/upload.js +34 -153
  442. package/src/plugins/visitor-drafts/inert.js +32 -0
  443. package/src/plugins/visitor-drafts/owner-chip.js +3 -0
  444. package/src/plugins/visitor-drafts/prompt.js +2 -2
  445. package/src/plugins/visitor-drafts-owner.js +85 -0
  446. package/src/plugins/visitor-drafts.js +31 -42
  447. package/src/plugins/wire.js +82 -1
  448. package/src/reader-core.js +26 -0
  449. package/src/recovery/conflicts.js +287 -0
  450. package/src/recovery/identity.js +154 -0
  451. package/src/recovery/store.js +792 -0
  452. package/src/recovery/undo.js +257 -0
  453. package/src/server/checkpoint/index.js +68 -4
  454. package/src/server/offline-runtime/index.js +214 -0
  455. package/src/server/rooms/index.js +2 -1
  456. package/src/server/rooms/live-data-rooms.js +2 -2
  457. package/src/server/rooms/page-admission.js +33 -0
  458. package/src/server/rooms/page-lineage.js +56 -0
  459. package/src/server/rooms/page-rebase.js +11 -5
  460. package/src/server/rooms/page-state.js +2 -0
  461. package/src/server/rooms/page-write-admission.js +9 -3
  462. package/src/source/session.js +705 -0
  463. package/src/sync/conflict-revert.js +5 -4
  464. package/src/sync/conflicts-edit.js +119 -0
  465. package/src/sync/conflicts-facade.js +49 -0
  466. package/src/sync/conflicts.js +99 -1
  467. package/src/sync/editing-marker.js +37 -6
  468. package/src/sync/editing-sender.js +8 -1
  469. package/src/sync/live-sync-edit.js +63 -0
  470. package/src/sync/live-sync.js +364 -119
  471. package/src/sync/local-presence.js +187 -0
  472. package/src/sync/merge-declarations.js +10 -0
  473. package/src/sync/merge-engine.js +12 -0
  474. package/src/sync/presence-store.js +412 -0
  475. package/src/sync/presence-target.js +243 -0
  476. package/src/sync/presence.js +72 -41
  477. package/src/sync/saved-handoff.js +200 -0
  478. package/src/sync/saved-stream.js +535 -0
  479. package/src/sync/version-guard.js +92 -0
  480. package/src/sync/wire-profile.js +81 -0
  481. package/src/ui/bevel-controls.js +2 -8
  482. package/src/ui/page-scheme.js +7 -0
  483. package/src/ui/skins/cms.js +1 -1
  484. package/src/ui/theme-config.js +150 -0
  485. package/src/ui/theme.js +6 -138
  486. package/src/ui/toast-lazy.js +11 -0
  487. package/src/vendor/LICENSES-optional.md +253 -0
  488. package/src/vendor/highlight.vendor.js +3 -0
  489. package/src/vendor/hljs-bash.vendor.js +2 -0
  490. package/src/vendor/hljs-css.vendor.js +2 -0
  491. package/src/vendor/hljs-javascript.vendor.js +2 -0
  492. package/src/vendor/hljs-json.vendor.js +2 -0
  493. package/src/vendor/hljs-python.vendor.js +2 -0
  494. package/src/vendor/hljs-xml.vendor.js +2 -0
  495. package/src/vendor/hyper-html-api-data.vendor.js +1 -1
  496. package/src/vendor/hyper-html-api-upgrade.vendor.js +5 -0
  497. package/src/vendor/hyper-morph-identity.vendor.js +2 -0
  498. package/src/vendor/hyper-morph-json.vendor.js +3 -0
  499. package/src/vendor/hyper-morph.vendor.js +6 -6
  500. package/src/vendor/hyper-undo.vendor.js +1 -1
  501. package/src/vendor/hypercms.vendor.js +169 -84
  502. package/src/vendor/marked.vendor.js +68 -0
  503. package/src/vendor/overtype.vendor.js +994 -0
  504. package/src/vendor/richclay.vendor.js +17 -17
  505. package/src/vendor/sap-core.vendor.js +5 -5
  506. package/src/vendor/sap-ownership.vendor.js +11 -7
@@ -0,0 +1,6 @@
1
+ import"../c-VHNSBD2M.js";var Bn=(()=>{var te=Object.defineProperty,nt=Object.getOwnPropertyDescriptor,rt=Object.getOwnPropertyNames,at=Object.prototype.hasOwnProperty,ot=(e,t)=>{for(var r in t)te(e,r,{get:t[r],enumerable:!0})},it=(e,t,r,n)=>{if(t&&typeof t=="object"||typeof t=="function")for(let a of rt(t))!at.call(e,a)&&a!==r&&te(e,a,{get:()=>t[a],enumerable:!(n=nt(t,a))||n.enumerable});return e},lt=e=>it(te({},"__esModule",{value:!0}),e),pe={};ot(pe,{FULL_SAPJS:()=>B,Sap:()=>I,default:()=>On,mount:()=>Pn,mountAll:()=>et,needsFullSapjs:()=>de,runtime:()=>Wn});function st(e){let t=!1,r=new Set,n=[];function a(l){l&&(n.push(l),n.length>8&&n.shift())}function s(l,d){if(a(d),l._broken){if(d==="mutation")return;u(l)}r.add(l),!t&&(t=!0,queueMicrotask(i))}function i(){t=!1;let l=[...r];r.clear();for(let d of l)f(d)}function f(l,d=!1){if(!(l._broken||l.halted)){if(l._passes=(l._passes||0)+1,l._passes>50){l._broken=!0,l._breakerRing=n.slice(),e(l,{breaker:!0});return}l._resetArmed||(l._resetArmed=!0,setTimeout(()=>{l._passes=0,l._resetArmed=!1},0)),e(l,d?{full:!0}:{})}}function c(l,d){a(d),l._broken&&u(l),f(l,!0)}function u(l){l._broken=!1,l._passes=0}return{schedule:s,runNow:c,rearm:u,ring:n}}var me={E01:{slug:"foreign-dialect",behavior:"HALT"},E02:{slug:"moustaches-in-text",behavior:"HALT"},E04:{slug:"duplicate-declaration",behavior:"HALT"},E05:{slug:"reserved-name",behavior:"HALT"},E06:{slug:"global-html-name",behavior:"HALT"},E07:{slug:"calc-cycle",behavior:"ERR"},E08:{slug:"expression-syntax",behavior:"HALT"},E10:{slug:"orphan-item",behavior:"HALT"},E12:{slug:"unknown-state-key",behavior:"ERR"},E15:{slug:"write-to-undeclared-key",behavior:"ERR"},E16:{slug:"write-to-computed-field",behavior:"ERR"},E17:{slug:"unresolvable-action-target",behavior:"HALT"},E18:{slug:"paint-on-form-control",behavior:"HALT"},E20:{slug:"bind-on-non-control",behavior:"HALT"},E22:{slug:"format-type",behavior:"ERR"},E24:{slug:"runtime-expression-throw",behavior:"ERR"},E26:{slug:"circuit-breaker",behavior:"HALT"},E30:{slug:"attr-on-bound-control",behavior:"HALT"},E31:{slug:"password-without-transient",behavior:"HALT"},E32:{slug:"file-bind",behavior:"HALT"},E33:{slug:"dialog-state-open",behavior:"HALT"},E34:{slug:"transient-persist-collision",behavior:"HALT"},E35:{slug:"presence-state-misuse",behavior:"HALT"},E40:{slug:"each-not-array",behavior:"ERR"},E41:{slug:"each-bad-key",behavior:"ERR"},E42:{slug:"each-template",behavior:"ERR"},E43:{slug:"bind-in-each-row",behavior:"ERR"},E50:{slug:"needs-full-sapjs",behavior:"HALT"},W03:{slug:"unknown-colon-attribute",behavior:"WARN"},W04:{slug:"expression-in-when",behavior:"WARN"},W30:{slug:"nonzero-mount-writes",behavior:"WARN"},W31:{slug:"detail-dialog-saved-open",behavior:"WARN"}},ne=["disabled","readonly","required","checked","selected","multiple","open","inert","autofocus","novalidate","hidden"],he=new Set(["title","style","hidden","lang","dir","translate","class","id","nonce","autofocus","tabindex","contenteditable","spellcheck","draggable","role","slot","part","name","value","type","itemscope","itemtype","itemid","itemprop","itemref"]),ut=new Set(["sap","scope","items","item","template","bind","calc","text","show","attr","set","trigger","move","sort","detail","each","effect","invalid","confirm","transient","default","persist","sortable","editmode"]);function ct(e){if(!e||e.nodeType!==1)return"?";if(e.id)return`${e.tagName.toLowerCase()}#${e.id}`;let t=[],r=e,n=0;for(;r&&r.nodeType===1&&n<4;){let a=r.tagName.toLowerCase();if(r.hasAttribute("sap"))a+="[sap]";else if(r.parentElement){let s=0,i=0;for(let f=r.parentElement.firstElementChild;f;f=f.nextElementSibling)f.tagName===r.tagName&&(s++,f===r&&(i=s));s>1&&(a+=`:nth-of-type(${i})`)}if(t.unshift(a),r.hasAttribute("sap"))break;r=r.parentElement,n++}return t.join(" > ")}var ft=class{constructor(e){this.appName=e,this.errors=[],this.warnings=[],this.halted=!1,this.haltReason=null}block(e,t,r={}){let n=(me[e]||{}).slug||"error",a={code:e,slug:n,el:ct(t),attr:r.attr||null,expr:r.expr||null,key:r.key||null,problem:r.problem||"",didYouMean:r.didYouMean||null,fix:r.fix||null,phase:r.phase||"runtime"},s=[`
2
+ `+(e[0]==="W"?"sap \u26A0 ":"sap \u2717 ")+e+" "+n];return s.push(` at ${a.el}${a.attr?` \u2014 ${a.attr}="${a.expr??""}"`:""}`),a.problem&&s.push(` problem: ${a.problem}`),a.didYouMean&&s.push(` did you mean: ${a.didYouMean}`),a.fix&&s.push(` fix: ${a.fix}`),(e[0]==="W"?console.warn:console.error)(s.join(`
3
+ `)),a}error(e,t,r={}){let n=this.block(e,t,r);return this.errors.push(n),n}warn(e,t,r={}){let n=this.block(e,t,r);return this.warnings.push(n),n}report(){return{ok:this.errors.length===0&&!this.halted,app:this.appName,halted:this.halted,haltReason:this.haltReason,errors:this.errors.slice(),warnings:this.warnings.slice()}}};function U(e,t){e&&e.getAttribute("sap-error")!==t&&e.setAttribute("sap-error",t)}function dt(e){e&&e.hasAttribute("sap-error")&&e.removeAttribute("sap-error")}function be(e,t){let r=null,n=3;for(let a of t){let s=pt(e,a);s<n&&(n=s,r=a)}return r}function pt(e,t){let r=e.length,n=t.length,a=Array.from({length:r+1},(s,i)=>[i,...new Array(n).fill(0)]);for(let s=0;s<=n;s++)a[0][s]=s;for(let s=1;s<=r;s++)for(let i=1;i<=n;i++)a[s][i]=Math.min(a[s-1][i]+1,a[s][i-1]+1,a[s-1][i-1]+(e[s-1]===t[i-1]?0:1));return a[r][n]}var mt=new Set(ne),ht={readonly:"readOnly",novalidate:"noValidate"},bt=0,ge=new WeakMap;function gt(e,t="sap"){let r=e.getAttribute("data-id");if(r)return r;if(e.id)return e.id;let n=ge.get(e);return n||(n=`${t}-${(bt++).toString(36)}`,ge.set(e,n)),n}function yt(e){let t=[];for(let r=e.firstElementChild;r;r=r.nextElementSibling)r.hasAttribute("item")&&!r.hasAttribute("template")&&!r.hasAttribute("cms-template")&&t.push(r);return t}function ye(e,t){if(!e||!t)return null;let r=[...e.querySelectorAll(`template[items="${t}"]`)].find(a=>a.closest("[sap]")===e),n=r&&r.content.firstElementChild;return n&&n.hasAttribute("item")?n:null}function vt(e){for(let t=e.firstElementChild;t;t=t.nextElementSibling)if(t.hasAttribute("item")&&t.hasAttribute("template"))return t;return ye(e.closest("[sap]"),e.getAttribute("items"))}function ve(e){let t=[];if(!e)return t;for(let r of e.trim().split(/\s+/)){if(!r)continue;let n=r,a,s=n.indexOf("=");s>=0&&(a=n.slice(s+1),n=n.slice(0,s));let i=n.split(":"),f=i[0],c="string",u=!1;for(let b of i.slice(1))b==="num"?c="num":b==="bool"?c="bool":b==="presence"?c="presence":b==="transient"&&(u=!0);let l=f,d=l.startsWith("data-")&&l.length>5?l.slice(5).replace(/-([a-z])/g,(b,y)=>y.toUpperCase()):l;t.push({name:d,attr:l,type:c,default:a,transient:u})}return t}function re(e,t){if(t==="num"){if(e==null||e==="")return 0;let r=Number(e);return Number.isNaN(r)?0:r}return t==="bool"?e==="true"||e===""||e==="1":e??""}function wt(e,t){return t==="bool"?e?"true":"false":e==null?"":String(e)}function we(e,t){return mt.has(t)&&typeof e[ht[t]||t]=="boolean"}function At(e,t){return t.type==="presence"||t.type!=="num"&&we(e,t.attr||t.name)}function Ae(e){return e.default!=null?e.default:e.type==="num"?"0":e.type==="bool"?"false":""}function Et(e,t){let r=t.attr||t.name,n=e._sapTransient||(e._sapTransient={});if(!(t.name in n)){let a=e.getAttribute(r);a==null&&(a=Ae(t)),n[t.name]=re(a,t.type)}return e.hasAttribute(r)&&e.removeAttribute(r),n[t.name]}function $(e){if(typeof e=="number")return e;if(e==null||e==="")return 0;let t=Number(typeof e=="string"?e.replace(/[$,%\s]/g,""):e);return Number.isNaN(t)?0:t}function G(e,t){return Array.isArray(e)?t==null?e:e.map(r=>typeof t=="function"?t(r):r?.[t]):[]}function Ee(e,t){return G(e,t).reduce((r,n)=>r+$(n),0)}function kt(e,t){return Array.isArray(e)?t==null?e.length:e.reduce((r,n)=>r+(t(n)?1:0),0):0}function xt(e,t){let r=G(e,t);return r.length?Ee(e,t)/r.length:0}function St(e,t){let r=G(e,t).filter(n=>n!=null&&n!=="");return r.length?r.every(n=>typeof n=="number"||!Number.isNaN(Number(n)))?Math.min(...r.map(Number)):r.reduce((n,a)=>String(n)<=String(a)?n:a):0}function Nt(e,t){let r=G(e,t).filter(n=>n!=null&&n!=="");return r.length?r.every(n=>typeof n=="number"||!Number.isNaN(Number(n)))?Math.max(...r.map(Number)):r.reduce((n,a)=>String(n)>=String(a)?n:a):0}function $t(e,t,r){let n=$(e)===1?t:r??t+"s";return`${e} ${n}`}function Lt(e,t){let r=new Date(e),n=new Date(t);return Number.isNaN(+r)||Number.isNaN(+n)?0:Math.round((n-r)/864e5)}function L(e){return typeof e=="number"?e:Number(e)}var Y={usd:e=>"$"+L(e).toLocaleString("en-US",{maximumFractionDigits:0}),usd2:e=>"$"+L(e).toLocaleString("en-US",{minimumFractionDigits:2,maximumFractionDigits:2}),pct:e=>Math.round(L(e))+"%",pct1:e=>L(e).toFixed(1)+"%",int:e=>Math.round(L(e)).toLocaleString("en-US"),num:e=>L(e).toLocaleString("en-US"),num2:e=>L(e).toLocaleString("en-US",{minimumFractionDigits:2,maximumFractionDigits:2}),compact:e=>L(e).toLocaleString("en-US",{notation:"compact"}),date:e=>{let t=new Date(e);return Number.isNaN(+t)?String(e):t.toLocaleDateString("en-US")},clock:e=>{let t=L(e),r=Math.floor(t/100),n=r%10,a=Math.floor(r/10)%60;return`${Math.floor(r/600)}:${String(a).padStart(2,"0")}.${n}`}},Tt=new Set(["usd","usd2","pct","pct1","int","num","num2","compact","clock"]);function _t(e,t){if(!e)return t==null?"":String(t);let r=Y[e];if(typeof r!="function"){let n=new Error(`unknown format "${e}"`);throw n.sapCode="E22",n}if(Tt.has(e)){let n=typeof t=="number"?t:Number(t);if(!Number.isFinite(n)){let a=new Error(`format "${e}" received ${typeof t=="string"?`"${t}"`:t}`);throw a.sapCode="E22",a}}return r(t)}var Ct=["state","item","el","root","fmt","num","sum","count","avg","min","max","plural","days"],X=new Map,ke=/\bstate\.([a-z][a-z0-9_]*)/g,xe=/\bitem\.([a-z][a-z0-9_]*)/g;function Rt(e){let t=new Set,r=new Set,n;for(ke.lastIndex=0;n=ke.exec(e);)t.add(n[1]);for(xe.lastIndex=0;n=xe.exec(e);)r.add(n[1]);return{state:t,item:r}}function T(e,t=!1){let r=(t?"!":"")+e,n=X.get(r);if(n)return n;X.size>512&&X.clear();try{let a=t?`"use strict";
4
+ ${e}`:`"use strict"; return (${e});`;n={fn:new Function(...Ct,a),src:e,statement:t,deps:Rt(e),error:null}}catch(a){n={fn:null,src:e,statement:t,deps:{state:new Set,item:new Set},error:a}}return X.set(r,n),n}function Mt(e,t,r,n,a){if(e.error)throw e.error;return e.fn(t,r,n,a,Y,$,Ee,kt,xt,St,Nt,$t,Lt)}var j={},O=null,Se=!0,V=!1;function Pt(){j={}}function Wt(e){let t=V;return O?Ne(O.takeRecords()):Se&&Ot(),V=!!O&&e.getRootNode()===document,t}function jt(e){V=e}function Ot(){if(typeof document>"u"||typeof MutationObserver!="function"){Se=!1;return}O=new MutationObserver(Ne),O.observe(document,{attributes:!0,childList:!0,subtree:!0})}function Ne(e){for(let t of e)if(t.type==="attributes")t.target._sapPlan&&(t.target._sapPlan=null);else for(let r of t.addedNodes)r.nodeType===1&&$e(r)}function $e(e){e._sapPlan&&(e._sapPlan=null);for(let t=e.firstElementChild;t;t=t.nextElementSibling)$e(t)}function ae(e){if(!V)return Le(e);let t=e._sapPlan;return t&&t.gen===j?t:e._sapPlan=Le(e)}function Le(e){let t={gen:j,inert:e.tagName==="TEMPLATE",template:!1,item:!1,scope:!1,items:!1,detail:!1,each:!1,boundary:null,bind:null,transient:!1,decls:null,calcs:null,paints:null,effects:null,invalids:null};for(let r of e.attributes){let n=r.name,a=r.value,s=n.indexOf(":");if(s<0){switch(n){case"sap-ignore":t.inert=!0;break;case"cms-template":t.inert=!0;break;case"template":t.inert=!0,t.template=!0;break;case"item":t.item=!0;break;case"scope":t.scope=!0;break;case"items":t.items=!0;break;case"detail":t.detail=!0;break;case"each":t.each=!0;break;case"bind":t.bind=a;break;case"transient":t.transient=!0;break;case"state":t.decls=ve(a);break;case"text":(t.paints||(t.paints=[])).push({kind:"text",fmt:null,entry:T(a)});break;case"show":(t.paints||(t.paints=[])).push({kind:"show",entry:T(a)});break;case"effect":(t.effects||(t.effects=[])).push({entry:T(a,!0)});break;case"invalid":(t.invalids||(t.invalids=[])).push({entry:T(a)});break}continue}let i=n.slice(0,s),f=n.slice(s+1);switch(i){case"calc":(t.calcs||(t.calcs=[])).push({name:f,entry:T(a)});break;case"text":(t.paints||(t.paints=[])).push({kind:"text",fmt:f,entry:T(a)});break;case"attr":(t.paints||(t.paints=[])).push({kind:"attr",arg:f,entry:T(a)});break;case"class":(t.paints||(t.paints=[])).push({kind:"class",arg:f,entry:T(a)});break;case"css":(t.paints||(t.paints=[])).push({kind:"css",arg:f,entry:T(a)});break;case"show-when":case"option":(t.paints||(t.paints=[])).push({kind:"when",match:"show",field:f,values:a.split("|")});break;case"hide-when":(t.paints||(t.paints=[])).push({kind:"when",match:"hide",field:f,values:a.split("|")});break;case"option-not":(t.paints||(t.paints=[])).push({kind:"when",match:"show-not",field:f,values:a.split("|")});break}}return t.boundary=t.scope?"scope":t.items?"items":t.detail?"detail":t.each?"each":null,Bt(t)?Dt():t}var K=null;function Dt(){return(!K||K.gen!==j)&&(K=Object.freeze({gen:j,inert:!1,template:!1,item:!1,scope:!1,items:!1,detail:!1,each:!1,boundary:null,bind:null,transient:!1,decls:null,calcs:null,paints:null,effects:null,invalids:null})),K}function Bt(e){return!e.inert&&!e.item&&e.boundary===null&&e.bind===null&&!e.transient&&!e.decls&&!e.calcs&&!e.paints&&!e.effects&&!e.invalids}var R=new WeakMap,M=null,D=!1;function It(){R=new WeakMap}function Te(e){for(let t of e){if(t.type==="attributes"){R.delete(t.target);continue}let r=t.target.nodeType===1?t.target:t.target.parentElement;for(let n=r;n;n=n.parentElement)R.delete(n);for(let n of t.addedNodes||[])if(n.nodeType===1){R.delete(n);for(let a of n.querySelectorAll("*"))R.delete(a)}}}function Ft(e){let t=D;return!M&&typeof MutationObserver=="function"&&(M=new MutationObserver(Te),M.observe(document,{attributes:!0,childList:!0,characterData:!0,subtree:!0})),M&&Te(M.takeRecords()),D=!!M&&e.getRootNode()===document,t}function Ht(e){D=e}function _e(e){let t=R.get(e);return t||R.set(e,t={attrs:new Map,hasText:!1,text:""}),t}function zt(e,t){if(!D)return e.getAttribute(t);let r=_e(e);return r.attrs.has(t)||r.attrs.set(t,e.getAttribute(t)),r.attrs.get(t)}function qt(e){if(!D)return e.textContent;let t=_e(e);return t.hasText||(t.text=e.textContent,t.hasText=!0),t.text}function Ce(e){return(e.getAttribute("type")||"text").toLowerCase()}function oe(e){let t=e.tagName;if(t==="INPUT"){let r=Ce(e);r==="checkbox"||r==="radio"?e.checked?e.setAttribute("checked",""):e.removeAttribute("checked"):e.setAttribute("value",e.value);return}if(t==="TEXTAREA"){e.setAttribute("data-value",e.value);return}if(t==="SELECT"){let r=e.options;for(let n=0;n<r.length;n++)r[n].selected?r[n].setAttribute("selected",""):r[n].removeAttribute("selected")}}function Ut(e,t=e){let r=e.tagName;if(r==="INPUT"){let n=Ce(e);n==="checkbox"||n==="radio"?t.checked?e.hasAttribute("checked")||e.setAttribute("checked",""):e.removeAttribute("checked"):t.value!==(e.getAttribute("value")??"")&&e.setAttribute("value",t.value);return}if(r==="TEXTAREA"){let n=t.value.startsWith(`
5
+ `)?`
6
+ `+t.value:t.value;e.textContent!==n&&(e.textContent=n),e.removeAttribute("data-value");return}if(r==="SELECT"){let n=e.options,a=t.options;for(let s=0;s<n.length;s++)a[s]&&a[s].selected?n[s].hasAttribute("selected")||n[s].setAttribute("selected",""):n[s].removeAttribute("selected")}}function Re(e){e.tagName!=="TEXTAREA"||!e.hasAttribute("data-value")||e!==e.ownerDocument.activeElement&&(e.textContent=e.getAttribute("data-value"),e.removeAttribute("data-value"))}function E(e){if(typeof window>"u")return null;let t=window.clay,r=window.hyperclay;return e==="consent"?t?.confirm||r?.consent||null:t?.[e]||r?.[e]||null}function Gt(){let e=E("visitorDrafts");return!!(e&&typeof e.restored=="function"&&e.restored()?.restored)}var Me=["clay:mutation-ready","hyperclay:mutation-ready"],Yt=["clay:sync-applied","hyperclay:livesync-applied"],Xt=["clay:ready","hyperclay:ready"],Vt=["clay:route"],Kt=["clay:modechange"];function J(e,t,r){let n=null,a=s=>{n!==null&&n!==s.type||(n=s.type,queueMicrotask(()=>{n=null}),r(s))};for(let s of t)e.addEventListener(s,a);return()=>{for(let s of t)e.removeEventListener(s,a)}}function Jt(e){let t=typeof window<"u"&&window.clay&&window.clay.ready;t&&typeof t.then=="function"?t.then(()=>e(),()=>e()):e()}function Pe(e){let t=E("region");return!t||typeof t.resolveRegionPolicy!="function"||typeof t.skipForPolicy!="function"?!1:t.skipForPolicy(t.resolveRegionPolicy(e),void 0,["no-save","freeze"])}function We(){return typeof window>"u"?null:window.clay?.modeLifecycle||null}function ie(e,{transient:t=!1}={}){if(t)return!0;let r=We();return typeof r?.canWrite!="function"||E("region")?.resolveRegionPolicy?.(e)?.persist==="none"?!0:r.canWrite()}function Qt(e,t){if(typeof t!="function")throw new Error("Sap.batch(label, fn): fn must be a function");let r=E("undo");r&&r.flush&&r.flush();let n=t();if(n&&typeof n.then=="function")throw new Error("Sap.batch fn must be synchronous (it returned a promise)");return r&&r.commitCaptured&&r.commitCaptured(e),n}function Zt(e){if(typeof window>"u"||typeof document>"u")return;let t=()=>{let b=!1;for(let y of e.apps())y.root.isConnected?e.runNow(y,"platform"):b=!0;b&&e.pruneDisconnected(),e.remountIfPresent()},r=E("derived"),n=r&&typeof r.register=="function"?r.register(t):null,a=typeof n=="function"?null:J(document,Yt,t),s=J(document,Vt,t),i=null,f=!1,c=()=>{let b=i;i=null,b&&(b[2](),b[3]())},u=()=>{if(f)return!1;let b=E("undo"),y=We()?.state?.generation;if(i&&i[0]===b&&i[1]===y)return!0;if(c(),!b||typeof b.on!="function")return!1;let k=b.on("undo",t);if(typeof k!="function")return!1;let x=b.on("redo",t);return typeof x!="function"?(k(),!1):(i=[b,y,k,x],!0)};u();let l=[Me,Xt,Kt].map(b=>J(document,b,u)),d=E("ready");return d&&typeof d.then=="function"&&d.then(u,()=>{}),()=>{f=!0,typeof n=="function"&&n(),a&&a(),s();for(let b of l)b();c()}}function je(e){let t=e.tagName;if(t==="INPUT"){let r=(e.getAttribute("type")||"text").toLowerCase();return r==="checkbox"?"checkbox":r==="radio"?"radio":r==="number"||r==="range"?"number":r==="hidden"?"hidden":"text"}return t==="TEXTAREA"?"text":t==="SELECT"?e.multiple?"select-multiple":"select-one":"leaf"}function en(e){if(e.validity&&e.validity.badInput)return e.hasAttribute("value")?Number(e.getAttribute("value"))||0:e._sapLastGood??0;if(e.value==="")return 0;let t=Number(e.value);return Number.isNaN(t)?e._sapLastGood??0:(e._sapLastGood=t,t)}function Oe(e,t){switch(t){case"checkbox":return e.checked;case"radio":return e.checked?e.value:void 0;case"number":return en(e);case"select-one":return e.value;case"select-multiple":return[...e.selectedOptions].map(r=>r.value);case"hidden":case"text":return e.value;case"leaf":return e.textContent;default:return e.value}}function tn(e,t,r){switch(t){case"checkbox":e.checked=!!r;break;case"radio":e.checked=String(e.value)===String(r);break;case"number":case"text":case"hidden":e.value=r==null?"":String(r);break;case"select-one":e.value=r==null?"":String(r);break;case"select-multiple":{let n=new Set((Array.isArray(r)?r:[r]).map(String));for(let a of e.options)a.selected=n.has(a.value);break}case"leaf":e.textContent=r==null?"":String(r);break;default:e.value=r==null?"":String(r)}}function De(e){if(e.hasAttribute("transient")){e.removeAttribute("value"),e.removeAttribute("checked"),e.removeAttribute("data-value");return}Pe(e)||oe(e)}function nn(e){e.dispatchEvent(new Event("input",{bubbles:!0})),e.dispatchEvent(new Event("change",{bubbles:!0}))}function rn(e,t){return Oe(e,t)}function an(e){let t=je(e);return{el:e,kind:t,read(){return Oe(e,t)},write(r,n={}){tn(e,t,r),n.noMirror||De(e),n.silent||nn(e)},mirror(){De(e)}}}var _=null,Q=!1,P=null;function Be(e){let t=null;return{kind:"hub",subscribe(r){let n=e.onAnyChange({debounce:0,require:"observed"},r);typeof n=="function"&&(t=n)},suppress(r){e.pause();try{return r()}finally{e.resume()}},teardown(){if(t){try{t()}catch{}t=null}}}}function on(){let e=null;return{kind:"native",subscribe(t){e=new MutationObserver(n=>t(ln(n)));let r=typeof document<"u"&&document.body||typeof document<"u"&&document.documentElement;r&&e.observe(r,{childList:!0,subtree:!0,attributes:!0,characterData:!0})},suppress(t){let r=E("undo");r&&r.pause&&r.pause();try{return t()}finally{e&&e.takeRecords(),r&&r.resume&&r.resume()}},teardown(){e&&(e.disconnect(),e=null)}}}function ln(e){let t=[];for(let r of e)if(r.type==="attributes"){let n=r.target;n&&n.nodeType===1&&!Z(n)&&t.push({type:"attribute",element:n})}else if(r.type==="characterData"){let n=r.target&&r.target.parentElement;n&&!Z(n)&&t.push({type:"characterData",element:n})}else if(r.type==="childList"){for(let n of r.addedNodes)if(!(n.nodeType!==1||Z(n))&&(t.push({type:"add",element:n}),n.querySelectorAll))for(let a of n.querySelectorAll("*"))Z(a)||t.push({type:"add",element:a});for(let n of r.removedNodes)n.nodeType===1&&t.push({type:"remove",element:n,parent:r.target})}return t}function Z(e){return!!(e.closest&&e.closest("[sap-ignore],[template],[cms-template]"))}function sn(e,t){e.pruneDisconnected();let r=new Set,n=!1;for(let a of t){let s=a.type==="remove"?a.parent:a.element,i=s&&e.appFor(s);i&&r.add(i),a.type==="add"&&a.element&&a.element.nodeType===1&&a.element.hasAttribute&&a.element.hasAttribute("sap")&&!(e.isRegistered&&e.isRegistered(a.element))&&(n=!0)}n&&e.remountIfPresent();for(let a of r)a.root.isConnected&&e.schedule(a,"mutation")}function un(e){if(_)return _.suppress(e);let t=E("undo");if(t&&t.pause&&t.resume){t.pause();try{return e()}finally{t.resume()}}return e()}function le(e,t){Q=!0,_=e,e.subscribe(r=>sn(t,r))}function Ie(e){if(Q||typeof window>"u"||typeof document>"u")return;let t=E("Mutation");if(t&&typeof t.onAnyChange=="function"){le(Be(t),e);return}typeof MutationObserver=="function"&&(le(on(),e),P=J(document,Me,function(){let r=E("Mutation");r&&(P(),P=null,_&&_.teardown(),Q=!1,le(Be(r),e))}))}function Fe(){if(_)try{_.teardown()}catch{}P&&typeof document<"u"&&P(),_=null,Q=!1,P=null}var cn=new Set(ne),C=[],He={},ze={};function fn(e){C.includes(e)||(C.push(e),e.boundary&&Object.assign(He,e.boundary),e.paintKinds&&Object.assign(ze,e.paintKinds))}function qe(e,t={}){if(t.breaker){e.diag.error("E26",e.root,{problem:"recompute loop halted after 50 passes; recent triggers: "+(e._breakerRing||[]).join(", ")}),U(e.root,"loop");return}t.full&&(Pt(),It());let r=Wt(e.root);try{un(()=>dn(e,t))}finally{jt(r)}e._viewsChanged&&(e._viewsChanged=!1,e.root.dispatchEvent(new CustomEvent("sap:views-updated",{bubbles:!0})))}function dn(e,t){let r=e.root,n={},a=[],s=[],i=new Set;e.diag.errors=[];let f={root:n,state:n,item:null,ownerEl:r,projection:!1};function c(o,p,m=!1){let h=p.attr||p.name,v=m?zt(o,h):o.getAttribute(h);return v==null&&(v=Ae(p),s.push({el:o,name:p.name,attr:h,value:wt(re(v,p.type),p.type)})),re(v,p.type)}function u(o,p,m,h){let v=p.decls;if(!v)return;let N=!!h.item&&!h.projection&&!h.view;for(let A of v){if(A.transient){m[A.name]=Et(o,A);continue}if(At(o,A)){m[A.name]=o.hasAttribute(A.attr);continue}m[A.name]=c(o,A,N)}}function l(o,p,m){let h=p.bind,v=m.item||m.state,N=je(o);N==="radio"?(h in v||(v[h]=""),o.checked&&(v[h]=o.value)):N==="leaf"&&m.item&&!m.projection&&!m.view?v[h]=qt(o):v[h]=rn(o,N),p.transient&&(o.removeAttribute("value"),o.removeAttribute("checked"))}function d(o,p,m){if(p.paints)for(let h of p.paints)h.kind==="when"&&i.add(h.field),a.push({def:h,el:o,ctx:m});for(let h of C)h.collect&&h.collect(S,o,p,m)}function b(o,p,m){Object.defineProperty(o,"$key",{value:gt(p,"row"),enumerable:!1}),Object.defineProperty(o,"$index",{value:m,enumerable:!1}),Object.defineProperty(o,"$el",{value:p,enumerable:!1})}function y(o,p,m){let h=ae(o);u(o,h,p,m),o._sapScope=p,!m.projection&&h.bind!=null&&l(o,h,m),d(o,h,m),h.items?H(o,p,m):k(o,p,m)}function k(o,p,m){for(let h=o.firstElementChild;h;h=h.nextElementSibling)x(h,p,m)}function x(o,p,m){let h=ae(o);if(!h.inert){if(h.boundary){h.boundary==="scope"?F(o,p,m):h.boundary==="items"?(d(o,h,m),H(o,p,m)):He[h.boundary](S,o,h,p,m);return}!m.projection&&!m.view&&h.bind!=null&&l(o,h,m),d(o,h,m);for(let v=o.firstElementChild;v;v=v.nextElementSibling)x(v,p,m)}}function F(o,p,m){let h=o.getAttribute("scope"),v={};p[h]=v;let N={root:m.root,state:v,item:null,ownerEl:o,projection:m.projection};y(o,v,N)}function H(o,p,m){let h=o.getAttribute("items"),v=[];p[h]=v,o._sapList=v;let N=0;for(let A=o.firstElementChild;A;A=A.nextElementSibling){let tt=ae(A);if(!tt.item||tt.template||A.hasAttribute("cms-template"))continue;let ee={};b(ee,A,N);let Dn={root:m.root,state:m.state,item:ee,ownerEl:A,projection:m.projection};y(A,ee,Dn),v.push(ee),N++}}let S={app:e,root:r,rootObj:n,paints:a,stats:{calcs:0,lists:0},resolveDefault:c,collectEl:d,walkScope:k};for(let o of C)o.begin&&o.begin(S);let z=t.cacheReads===!1?null:Ft(r);try{y(r,n,f)}finally{t.cacheReads!==!1&&Ht(z)}if(e.halted)return;for(let o of C)o.afterIntake&&o.afterIntake(S);if(s.length&&i.size)for(let o of s)i.has(o.attr)&&o.el.getAttribute(o.attr)==null&&o.el.setAttribute(o.attr,o.value);for(let o of C)o.compute&&o.compute(S);let q=0;for(let o of C)o.reconcile&&(q+=o.reconcile(S));let w=0,g=q;for(let o of a){let p=mn(o,e);o.ctx.view?g+=p:w+=p}for(let o of C)o.afterPaint&&o.afterPaint(S);e._state=n,e._stats={fields:Object.keys(n).filter(o=>typeof n[o]!="function").length,calcs:S.stats.calcs,paints:a.length,lists:S.stats.lists,writes:w,viewWrites:g},e._viewsChanged=g>0,e._lastPass={trigger:t.trigger||"refresh",writes:w},e._debug&&console.log(`sap pass \xB7 trigger: ${e._lastPass.trigger} \xB7 writes ${w}/${a.length}`)}function pn(e){return e.kind==="text"?e.fmt?"text:"+e.fmt:"text":e.kind==="attr"?"attr:"+e.arg:e.kind==="class"?"class:"+e.arg:e.kind==="css"?"css:"+e.arg:e.kind==="when"?(e.match==="hide"?"hide-when:":e.match==="show-not"?"option-not:":"show-when:")+e.field:e.kind}function se(e,t,r,n){let a=e;for(;a&&a.nodeType===1;){if(a.hasAttribute&&a.hasAttribute(t)){let s=r.includes(a.getAttribute(t));if(n?!s:s)return!0}a=a.parentElement}return!1}function mn(e,t){let r=e.def,n=e.el,a=ze[r.kind];if(a)return a(e,t);if(r.kind==="when")return Ue(r,n,null);try{let s=Mt(r.entry,e.ctx.state,e.ctx.item,n,e.ctx.root),i=Ue(r,n,s);return dt(n),i}catch(s){return t.diag.error(s.sapCode==="E22"?"E22":"E24",n,{attr:pn(r),expr:r.entry&&r.entry.src,problem:String(s.message)}),U(n,s.sapCode||"E24"),0}}function Ue(e,t,r){switch(e.kind){case"text":{let n=e.fmt!=null?_t(e.fmt,r):r==null?"":String(r);return t.textContent!==n?(t.textContent=n,1):0}case"show":{let n=!r;return t.hidden!==n?(t.hidden=n,1):0}case"when":{let n=E("optionVisibility");if(n&&n._started)return t._sapWhen&&t.hidden?(t.hidden=!1,t._sapWhen=!1,1):0;let a;e.match==="hide"?a=!se(t,e.field,e.values,!1):e.match==="show-not"?a=se(t,e.field,e.values,!0):a=se(t,e.field,e.values,!1),t._sapWhen=!0;let s=!a;return t.hidden!==s?(t.hidden=s,1):0}case"attr":{let n=e.arg;if((n==="checked"||n==="selected")&&typeof t[n]=="boolean"&&!t.hasAttribute("bind")&&!t.closest("select[bind]")){let s=0;return t[n]!==!!r&&(t[n]=!!r,s=1),!!r!==t.hasAttribute(n)&&(r?t.setAttribute(n,""):t.removeAttribute(n),s=1),s}if(cn.has(n)){let s=t.hasAttribute(n);return r&&!s?(t.setAttribute(n,""),1):!r&&s?(t.removeAttribute(n),1):0}let a=typeof r=="boolean"?String(r):r==null?"":String(r);return t.getAttribute(n)!==a?(t.setAttribute(n,a),1):0}case"class":{let n=!!r;return t.classList.contains(e.arg)!==n?(t.classList.toggle(e.arg,n),1):0}case"css":{let n=r==null?"":String(r);return t.style.getPropertyValue("--"+e.arg)!==n?(t.style.setProperty("--"+e.arg,n),1):0}default:return 0}}var hn=new Set(ne),Ge=new Set(["calc","text","attr","class","css","set","move","sort","option","option-not","show-when","hide-when","editmode","viewmode"]),bn=new Set(["show-when","hide-when","option","option-not"]),gn=/\b(?:state|item|root)\.|===|!==|&&|\|\||[()]|^\s*!/,Ye=new Set(["sap","scope","items","item","template","bind","show","effect","invalid","detail","state","transient","confirm","default","persist","sortable","trigger-add","trigger-remove","trigger-reset","sap-ignore","sap-error","no-save","no-watch","no-undo","no-trigger-autosave","freeze","mutations-ignore","save-remove","save-ignore","save-freeze"]),ue=[];function yn(e){ue.includes(e)||ue.push(e)}function vn(e){return e.tagName==="INPUT"||e.tagName==="SELECT"||e.tagName==="TEXTAREA"}function ce(e){return e.hasAttribute("bind")}function wn(e,t){t(e);for(let n=e.firstElementChild;n;n=n.nextElementSibling)r(n);function r(n){if(!n.hasAttribute("sap-ignore")){if(n.tagName==="TEMPLATE"){if(n.hasAttribute("items"))for(let a=n.content.firstElementChild;a;a=a.nextElementSibling)r(a);return}t(n);for(let a=n.firstElementChild;a;a=a.nextElementSibling)r(a)}}}function An(e,t){let r=!1,n=(i,f,c)=>{t.error(i,f,c),r=!0},a=e.ownerDocument.createTreeWalker(e,4),s;for(;s=a.nextNode();)if(/\{\{.*\}\}/.test(s.nodeValue||"")){n("E02",s.parentElement||e,{problem:"moustaches in text content are not a Sap feature",fix:'move the expression onto the element: text="state.x"'});break}return wn(e,i=>{let f=new Set;for(let u of ue)u(i,n,l=>f.add(l));let c=i.closest&&i.closest("[detail]");for(let u of[...i.attributes]){let l=u.name;if(f.has(l))continue;if(l.includes(":")){let b=l.slice(0,l.indexOf(":"));if(Ge.has(b)){if(bn.has(b)&&gn.test(u.value)){let y=l.slice(l.indexOf(":")+1);t.warn("W04",i,{attr:l,expr:u.value,problem:`${b}: compares the "${y}" attribute against a literal value, not a JS expression`,fix:`use show="${u.value}" for an expression, or a literal like ${b}:${y}="overview"`})}}else{let y=be(b,[...Ge]);t.warn("W03",i,{attr:l,problem:`unknown "${b}:" attribute`,didYouMean:y?`${y}:`:null})}}else if(!Ye.has(l)&&!he.has(l)&&!hn.has(l)&&!/^(data-|aria-|on)/.test(l)&&!(l in i)){let b=be(l,[...Ye]);b&&t.warn("W03",i,{attr:l,problem:`unknown "${l}" attribute`,didYouMean:b})}l==="attr:hidden"&&t.warn("W03",i,{attr:l,problem:"attr:hidden paints the wrong attribute",fix:'use show="expr"'});let d=ce(i)||l==="attr:selected"&&i.tagName==="OPTION"&&!!i.closest("select[bind]");(l==="attr:value"||l==="attr:checked"||l==="attr:selected")&&d&&n("E30",i,{attr:l,problem:"attr: on a bound control collides with persist ownership",fix:"remove it; bind owns this attribute"}),l==="effect"&&ce(i)&&/\b(value|checked)\s*=[^=]/.test(u.value)&&n("E30",i,{attr:l,expr:u.value,problem:"effect writes value/checked on a bound control (writes a stale value with no synthetic event)",fix:"write through onclick + Sap(this) instead"}),(l==="text"||l.startsWith("text:")||l==="show")&&vn(i)&&(l==="show"||n("E18",i,{attr:l,problem:"paint belongs on output elements, not form controls",fix:"move the paint to an <output> or <span>"}))}if(i.hasAttribute("state")){let u=ve(i.getAttribute("state")),l=new Set;for(let d of u){d.name.includes("-")&&n("E08",i,{attr:"state",problem:`field "${d.name}" is not a valid identifier (the hyphen parses as subtraction)`,fix:`rename to ${d.name.replace(/-/g,"")}`}),l.has(d.name)&&n("E04",i,{attr:"state",problem:`field "${d.name}" is declared twice in one scope`}),l.add(d.name),ut.has(d.attr)&&n("E05",i,{attr:"state",problem:`"${d.name}" is a reserved Sap word`}),he.has(d.attr)&&n("E06",i,{attr:"state",problem:`"${d.name}" is a global HTML attribute name; pick another field name`}),d.name==="open"&&i.tagName==="DIALOG"&&n("E33",i,{attr:"state",problem:"dialog open is transient",fix:"use showModal() \u2014 declare state= only on <details> or popovers"});let b=we(i,d.attr);b&&(d.attr==="checked"||d.attr==="selected")&&n("E35",i,{attr:"state",problem:`"${d.attr}" on a form control is the control's own state, not a declared field`,fix:'bind the control instead, e.g. <input type="checkbox" bind="done">'}),b&&d.type==="num"&&n("E35",i,{attr:"state",problem:`"${d.attr}" is an HTML boolean attribute; it cannot hold a number`,fix:`declare it bare: state="${d.attr}"`}),d.transient&&(b||d.type==="presence")&&n("E35",i,{attr:"state",problem:`"${d.name}" is carried by attribute presence, which transient would strip`,fix:"declare a separate name:bool:transient field and paint the attribute from it"})}}if(ce(i)){if(i.hasAttribute("-"),i.tagName==="INPUT"){let u=(i.getAttribute("type")||"text").toLowerCase();u==="file"&&n("E32",i,{attr:"bind",problem:"files never serialize into an HTML file",fix:"use no-save + effect instead of bind"}),u==="password"&&!i.hasAttribute("transient")&&n("E31",i,{attr:"bind",problem:"a password must never serialize into a world-readable file",fix:"add transient to the password input"})}else if(i.tagName!=="SELECT"&&i.tagName!=="TEXTAREA"){let u=i.getAttribute("contenteditable");!(u!=null&&u!=="false")&&i.children.length>0&&n("E20",i,{attr:"bind",problem:"bind on a container element is not a control; a write would overwrite its children",fix:"bind a control (input/select/textarea), a contenteditable, or an empty text leaf"})}}if(i.hasAttribute("transient")&&i.hasAttribute("persist")&&n("E34",i,{problem:"transient and persist are opposite: persist forces the live value into the saved bytes, leaking exactly what transient drops",fix:"remove one \u2014 transient to keep it out of the file, or persist to save it"}),i.tagName==="DIALOG"&&i.hasAttribute("detail")&&!(i.parentElement&&i.parentElement.closest('[clay~="freeze"], [freeze], [save-freeze]'))&&t.warn("W31",i,{attr:"detail",problem:"a detail dialog writes open when it opens, and that attribute would be saved into the file",fix:'wrap the dialog in an element with clay="freeze" (not editor-ui, which removes it from the file), and make its key field transient'}),i.hasAttribute("item")&&!i.hasAttribute("template")&&i.parentNode&&i.parentNode.nodeType===1){let u=i.parentElement;(!u||!u.hasAttribute("items"))&&n("E10",i,{problem:"an [item] must be a direct child of an [items] list",fix:'wrap it in a container with items="name"'})}if(i.hasAttribute("items")&&c&&n("E17",i,{attr:"items",problem:"nested items inside a detail panel is a v1 mount error (nested collections ship in v1.1)"}),i.hasAttribute("items")){let u=e.querySelector(`[trigger-add="${i.getAttribute("items")}"]`);!vt(i)&&!ye(e,i.getAttribute("items"))&&yt(i).length===0&&u&&n("E17",i,{attr:"items",problem:`trigger-add targets items="${i.getAttribute("items")}" but it has no [item template] to clone`})}}),r&&(t.halted=!0,t.haltReason=t.errors[0]?t.errors[0].code:"halt",U(e,t.haltReason)),!r}var Xe="sap-styles",Ve="[item][template]{display:none!important}[hidden]{display:none!important}[sap-error]{outline:2px solid #e5484d;outline-offset:1px}",fe=new WeakSet;function En(e){if(fe.has(e))return;let t=e.defaultView,r=t&&t.CSSStyleSheet;if(r&&"adoptedStyleSheets"in e)try{let n=new r;n.replaceSync(Ve),e.adoptedStyleSheets=[...e.adoptedStyleSheets,n],fe.add(e);return}catch{}if(!e.getElementById(Xe)){let n=e.createElement("style");n.id=Xe,n.textContent=Ve,(e.head||e.documentElement).appendChild(n)}fe.add(e)}var kn=0;function Ke(){return typeof performance<"u"&&performance.now?performance.now():0}function Je(e){let t=e.id||e.getAttribute("sap")||`app-${kn++}`,r=new ft(t),n={root:e,name:t,diag:r,_state:null,_stats:null,_lastPass:null,_passes:0,_broken:!1,_mountMs:0,_mountWrites:0};if(!An(e,r))return n.halted=!0,n;En(e.ownerDocument);for(let s of e.querySelectorAll("textarea[data-value]"))Re(s);let a=Ke();return qe(n,{trigger:"mount",full:!0}),n._mountMs=Ke()-a,n._mountWrites=n._stats?n._stats.writes:0,n._mountWrites>0&&!Gt()&&!E("derived")&&r.warn("W30",e,{problem:`${n._mountWrites} paint(s) ran at mount; the saved file was out of sync with its declared state`,fix:"re-save once so the file mounts clean (a settled file writes nothing)"}),n}var Qe=/^(set:|move:|sort:|trigger-add$|trigger-remove$|trigger-reset$)/;function xn(e){return`${e.tagName.toLowerCase()}[sap]`}function Sn(e){let t=0;for(let r of e.querySelectorAll("*"))for(let n of r.attributes)if(Qe.test(n.name)){t++;break}for(let r of e.attributes)if(Qe.test(r.name)){t++;break}return t}function Nn(e){function t(f){let c=f._stats||{},u=f.root;return{root:xn(u),fields:c.fields||0,calcs:c.calcs||0,paints:c.paints||0,actions:Sn(u),lists:(u.hasAttribute("items")?1:0)+u.querySelectorAll("[items]").length,rows:u.querySelectorAll("[item]:not([template])").length,warnings:f.diag.warnings.length,errors:f.diag.errors.length,mountWrites:f._mountWrites||0,ms:Math.round((f._mountMs||0)*10)/10,passes:f._passes||0,lastPass:f._lastPass||null,ok:f.diag.errors.length===0&&!f.halted}}function r(){let f=e.apps().map(t);return{ok:f.every(c=>c.ok),apps:f}}function n(f){let c=t(f);return c.ok?`sap \u2713 ${c.root} \xB7 fields ${c.fields} \xB7 calcs ${c.calcs} \xB7 paints ${c.paints} \xB7 actions ${c.actions} \xB7 lists ${c.lists} \xB7 rows ${c.rows} \xB7 warnings ${c.warnings} \xB7 mount writes ${c.mountWrites} \xB7 ${c.ms}ms`:`sap \u2717 ${c.root} \xB7 errors ${c.errors} \xB7 warnings ${c.warnings} \xB7 ${c.ms}ms`}function a(){for(let f of e.apps()){let c=n(f);f.diag.errors.length||f.halted?console.error(c):console.log(c)}}function s(){let f=[],c=[];for(let u of e.apps())f.push(...u.diag.errors),c.push(...u.diag.warnings);return{ok:f.length===0,errors:f,warnings:c,counts:{errors:f.length,warnings:c.length}}}function i(f){let c=f===void 0?!0:!!f;for(let u of e.apps())u._debug=c;return console.log(`sap debug ${c?"on":"off"} \u2014 per-pass headers will ${c?"":"no longer "}log`),c}return{status:r,report:s,debug:i,greenLine:n,printGreenLines:a,REGISTRY:me}}var $n="0.6.0";function Ln({createAccessor:e,installInput:t,debugExtras:r}){let n=new Map,a=[],s=st(qe);function i(g){let o=g;for(;o;){if(o.nodeType===1&&o.hasAttribute&&o.hasAttribute("sap"))return n.get(o)||null;o=o.parentNode&&o.parentNode.host?o.parentNode.host:o.parentElement}return null}function f(){for(let g=a.length-1;g>=0;g--){let o=a[g];o.root.isConnected||(n.delete(o.root),a.splice(g,1))}}function c(g,o){if(g.moveBefore)try{g.moveBefore(o,null);return}catch{}g.appendChild(o)}function u(g,o){let p=o.parentElement;if(p){if(p.moveBefore)try{p.moveBefore(g,o);return}catch{}p.insertBefore(g,o)}}let l={apps:()=>a.slice(),appFor:i,isRegistered:g=>n.has(g),pruneDisconnected:f,schedule:(g,o)=>s.schedule(g,o),runNow:(g,o)=>s.runNow(g,o),moveInto:c,placeBefore:u,remountIfPresent:()=>z()},d=e(l),b=Nn(l),y=r?r(l,b):{},k=!1,x=!1,F=null;function H(){k||(k=!0,t(l,d,document),F=Zt(l))}function S(){let g=E("derived");g&&typeof g.mounted=="function"&&g.mounted()}function z(g=document){if(x)return[];H(),Ie(l);let o=g.querySelectorAll("[sap]"),p=[];for(let m of o){if(n.has(m))continue;let h=Je(m);n.set(m,h),a.push(h),p.push(h)}for(let m of p){let h=b.greenLine(m);m.diag.errors.length||m.halted?console.error(h):console.log(h)}return S(),p}function q(g){if(x)return null;if(H(),Ie(l),!g)return z();let o=typeof g=="string"?document.querySelector(g):g;if(!o)return null;if(n.has(o))return n.get(o);let p=Je(o);n.set(o,p),a.push(p);let m=b.greenLine(p);return p.diag.errors.length||p.halted?console.error(m):console.log(m),p}let w=d.Sap;return w.version=$n,w.refresh=function(){for(let g of a)g.root.isConnected&&s.runNow(g,"refresh")},w.batch=Qt,w.status=b.status,w.report=b.report,w.why=y.why,w.debug=b.debug,w.doctor=y.doctor,w.greenLine=b.greenLine,w.formats=Y,w.serializeControlToAttributes=oe,w.finalizeControlForSave=Ut,w.rehydrateControlFromAttributes=Re,w.mount=q,w.config=function(g={}){return g.formats&&Object.assign(Y,g.formats),w},w._registry=n,w._reset=function(){n.clear(),a.length=0,Fe()},w.unmount=function(){x=!0,n.clear(),a.length=0,Fe(),typeof F=="function"&&F()},{Sap:w,mountAll:z,mount:q,runtime:l}}function Tn(e){if(typeof document>"u")return;let t=()=>Jt(()=>e());document.readyState==="loading"?document.addEventListener("DOMContentLoaded",t):t()}function _n(e){let t=[];function r(c){let u=c.target;if(!u||u.nodeType!==1)return;let l=e.appFor(u);if(l){u.hasAttribute("persist")&&!Pe(u)&&ie(u)&&oe(u);for(let d of t)if(d(u,l))return;e.schedule(l,c.type+" "+(u.id||u.tagName.toLowerCase()))}}function n(c){let u=c.target,l=e.appFor(u);l&&[...u.querySelectorAll("[bind]")].every(d=>ie(d))&&setTimeout(()=>{u.querySelectorAll("[bind]").forEach(d=>{d.dispatchEvent(new Event("input",{bubbles:!0})),d.dispatchEvent(new Event("change",{bubbles:!0}))}),e.schedule(l,"reset")},0)}function a(c){let u=e.appFor(c.target);u&&e.schedule(u,"toggle")}function s(c){let u=c.detail||{};for(let l of[u.from,u.to,c.target]){if(!l||l.nodeType!==1)continue;let d=e.appFor(l);d&&e.schedule(d,"sorted")}}function i(c){if(c.key!=="ArrowUp"&&c.key!=="ArrowDown")return;let u=c.target;if(!u||u.nodeType!==1||u.tagName!=="INPUT"||!u.hasAttribute("bind")||!u.hasAttribute("step"))return;let l=(u.getAttribute("type")||"text").toLowerCase();if(l!=="text"&&l!=="tel"&&l!=="search"||!e.appFor(u)||!ie(u))return;c.preventDefault();let d=$(u.getAttribute("step"))||1,b=c.key==="ArrowUp"?1:-1,y=$(u.value)+d*(c.shiftKey?10:1)*b,k=u.getAttribute("min"),x=u.getAttribute("max");k!==null&&k!==""&&y<$(k)&&(y=$(k)),x!==null&&x!==""&&y>$(x)&&(y=$(x)),an(u).write(String(Number(y.toFixed(2))))}function f(c=document){c.addEventListener("reset",n),c.addEventListener("toggle",a,!0),c.addEventListener("input",r),c.addEventListener("change",r),c.addEventListener("clay:sorted",s),c.addEventListener("keydown",i)}return{install:f,addRouter:c=>t.push(c)}}var B="https://clayjs.com/v1/sap.js",Cn=/^(calc|set|move|sort):/,Rn=new Set(["each","detail","effect","invalid","confirm","trigger-add","trigger-remove","trigger-reset"]);function de(e){return Cn.test(e)||Rn.has(e)}yn((e,t)=>{for(let r of e.attributes)de(r.name)&&t("E50",e,{attr:r.name,expr:r.value,problem:`${r.name} is full sapjs; the sapjs core only paints declared state`,fix:`load ${B}; the markup stays as it is`})});function W(e,t,r){e.app.diag.error("E50",t,{attr:r,problem:`${r} is full sapjs; the sapjs core only paints declared state`,fix:`load ${B}; the markup stays as it is`}),U(t,"E50"),e.app.halted=!0}fn({name:"core-only",collect(e,t,r){r.calcs&&W(e,t,"calc:"+r.calcs[0].name),r.effects&&W(e,t,"effect"),r.invalids&&W(e,t,"invalid");for(let n of t.attributes)de(n.name)&&(n.name.startsWith("calc:")&&r.calcs||n.name==="effect"&&r.effects||n.name==="invalid"&&r.invalids||W(e,t,n.name))},boundary:{each(e,t){W(e,t,"each")},detail(e,t){W(e,t,"detail")}}});function Mn(){return{Sap:function(){throw new Error(`Sap(el) is full sapjs; load ${B}`)}}}var Ze=e=>()=>(console.warn(`Sap.${e} is full sapjs; load ${B}`),null),{Sap:I,mountAll:et,mount:Pn,runtime:Wn}=Ln({createAccessor:Mn,debugExtras:()=>({why:Ze("why"),doctor:Ze("doctor")}),installInput(e,t,r){_n(e).install(r)}});I.core=!0;var jn=typeof window<"u"&&window.Sap&&!window.Sap.core;jn?I.unmount():Tn(et),typeof window<"u"&&!window.Sap&&(window.Sap=I);var On=I;return lt(pe)})(),In=Bn.default;export{In as default};