shadow-claw 1.54.0 → 1.55.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 (286) hide show
  1. package/.well-known/mcp/server-card.json +1 -1
  2. package/.well-known/mcp.json +1 -1
  3. package/README.md +1 -1
  4. package/dist/cli/build/build.js +1 -1
  5. package/dist/cli/{chunk-DO2t9bUI.js → chunk--IuVyWfT.js} +24 -23
  6. package/dist/cli/{chunk-2ZYd9gYC.js → chunk--JpdI-Ht.js} +1 -1
  7. package/dist/cli/{chunk-m4Ineemy.js → chunk-4O8yrQuN.js} +1 -1
  8. package/dist/cli/{chunk-BiH9IXnQ.js → chunk-7S9Ywlfy.js} +1 -1
  9. package/dist/cli/{chunk-BmMOdYvk.js → chunk-B0SqqDSK.js} +1 -1
  10. package/dist/cli/chunk-BNaWaEm-.js +1 -0
  11. package/dist/cli/chunk-BXCsxO9e.js +1 -0
  12. package/dist/cli/chunk-Bq37qDoZ.js +18 -0
  13. package/dist/cli/{chunk-C1htf-nO.js → chunk-BrEeCKIo.js} +2 -2
  14. package/dist/cli/{chunk-BI1SOTM1.js → chunk-Bu3ylrhT.js} +8 -8
  15. package/dist/cli/{chunk-3smiGQoQ.js → chunk-C1v_s0Kb.js} +1 -1
  16. package/dist/cli/{chunk-DGeysxz3.js → chunk-C44G533y.js} +1 -1
  17. package/dist/cli/{chunk-9KiBalKu.js → chunk-C7hJLmsL.js} +1 -1
  18. package/dist/cli/{chunk-BFv9XSNd.js → chunk-CAaQWd6t.js} +1 -1
  19. package/dist/cli/chunk-CIkgn5Fh.js +1 -0
  20. package/dist/cli/chunk-CWEIN2kc.js +1 -0
  21. package/dist/cli/{chunk-BDeDZ-0L.js → chunk-CYg1lO1a.js} +1 -1
  22. package/dist/cli/{chunk-DXLmEQ3i.js → chunk-Ce09lwXT.js} +1 -1
  23. package/dist/cli/{chunk-XsfHeN4m.js → chunk-CpdqRSO-.js} +1 -1
  24. package/dist/cli/chunk-DB4x5L-B.js +1 -0
  25. package/dist/cli/{chunk-DaNyMqrk.js → chunk-DBvObsBQ.js} +1 -1
  26. package/dist/cli/chunk-DGPpt7Ka.js +1 -0
  27. package/dist/cli/chunk-DGagHluH.js +1 -0
  28. package/dist/cli/chunk-DUIs23D9.js +1 -0
  29. package/dist/cli/{chunk-CyvfQV16.js → chunk-DaurYOqg.js} +1 -1
  30. package/dist/cli/{chunk-DSFrcSyA.js → chunk-DfwRL0Ue.js} +1 -1
  31. package/dist/cli/{chunk-M2tZrzY5.js → chunk-DudYQk0p.js} +1 -1
  32. package/dist/cli/chunk-DvKo50Tp.js +2 -0
  33. package/dist/cli/{chunk-H_Mw5ypp.js → chunk-Dvrqte5Q.js} +2 -2
  34. package/dist/cli/{chunk-BtNO-m9T.js → chunk-DzhSExU0.js} +1 -1
  35. package/dist/cli/{chunk-IOMO88kZ.js → chunk-ENKlt3i9.js} +1 -1
  36. package/dist/cli/{chunk-Bspgzwsm.js → chunk-FWRwAX75.js} +8 -8
  37. package/dist/cli/chunk-Lf-Z-h48.js +32 -0
  38. package/dist/cli/{chunk-BucXnZ4Z.js → chunk-VRfkSLrD.js} +1 -1
  39. package/dist/cli/chunk-uaTxD024.js +1 -0
  40. package/dist/cli/cli.js +1 -1
  41. package/dist/cli/prerender/dsd-shell/prerender-dsd-shell.js +1 -1
  42. package/dist/headless-agent.js +2 -2
  43. package/dist/lib/components/index.js +25 -25
  44. package/dist/lib/components/settings/shadow-claw-accounts.js +1 -1
  45. package/dist/lib/components/settings/shadow-claw-channel-config.js +1 -1
  46. package/dist/lib/components/settings/shadow-claw-control-plane.js +1 -1
  47. package/dist/lib/components/settings/shadow-claw-git.js +1 -1
  48. package/dist/lib/components/settings/shadow-claw-integrations.js +1 -1
  49. package/dist/lib/components/settings/shadow-claw-llm.js +1 -1
  50. package/dist/lib/components/settings/shadow-claw-mcp-remote.js +1 -1
  51. package/dist/lib/components/settings/shadow-claw-networking.js +1 -1
  52. package/dist/lib/components/settings/shadow-claw-notifications.js +1 -1
  53. package/dist/lib/components/settings/shadow-claw-peerjs.js +1 -1
  54. package/dist/lib/components/settings/shadow-claw-storage.js +1 -1
  55. package/dist/lib/components/settings/shadow-claw-task-server.js +1 -1
  56. package/dist/lib/components/settings/shadow-claw-webvm.js +1 -1
  57. package/dist/lib/components/shadow-claw/utils/get-route.d.ts +3 -0
  58. package/dist/lib/components/shadow-claw/utils/sync-slotted-sidebar-active-links.d.ts +1 -1
  59. package/dist/lib/components/shadow-claw-accounts.js +1 -1
  60. package/dist/lib/components/shadow-claw-channel-config.js +1 -1
  61. package/dist/lib/components/shadow-claw-channels.js +1 -1
  62. package/dist/lib/components/shadow-claw-chat.js +1 -1
  63. package/dist/lib/components/shadow-claw-control-plane.js +1 -1
  64. package/dist/lib/components/shadow-claw-conversations.js +1 -1
  65. package/dist/lib/components/shadow-claw-file-viewer.js +1 -1
  66. package/dist/lib/components/shadow-claw-files.js +1 -1
  67. package/dist/lib/components/shadow-claw-git.js +1 -1
  68. package/dist/lib/components/shadow-claw-integrations.js +1 -1
  69. package/dist/lib/components/shadow-claw-llm.js +1 -1
  70. package/dist/lib/components/shadow-claw-mcp-remote.js +1 -1
  71. package/dist/lib/components/shadow-claw-networking.js +1 -1
  72. package/dist/lib/components/shadow-claw-notifications.js +1 -1
  73. package/dist/lib/components/shadow-claw-page-header.js +1 -1
  74. package/dist/lib/components/shadow-claw-pages.js +1 -1
  75. package/dist/lib/components/shadow-claw-peerjs.js +1 -1
  76. package/dist/lib/components/shadow-claw-settings.js +1 -1
  77. package/dist/lib/components/shadow-claw-storage.js +1 -1
  78. package/dist/lib/components/shadow-claw-task-server.js +1 -1
  79. package/dist/lib/components/shadow-claw-tasks.js +1 -1
  80. package/dist/lib/components/shadow-claw-terminal.js +1 -1
  81. package/dist/lib/components/shadow-claw-tools.js +1 -1
  82. package/dist/lib/components/shadow-claw-webvm.js +1 -1
  83. package/dist/lib/components/shadow-claw.js +1 -1
  84. package/dist/lib/{configure-peer-js-D5jDCtLx.js → configure-peer-js-C9554Slv.js} +2 -2
  85. package/dist/lib/{configure-peer-js-D5jDCtLx.js.map → configure-peer-js-C9554Slv.js.map} +1 -1
  86. package/dist/lib/{file-viewer-B4CL4e0i.js → file-viewer-DBc5dxNy.js} +2 -2
  87. package/dist/lib/{file-viewer-B4CL4e0i.js.map → file-viewer-DBc5dxNy.js.map} +1 -1
  88. package/dist/lib/index.js +28 -27
  89. package/dist/lib/{init-control-plane-l2uFnhGV.js → init-control-plane-D-41Fm5q.js} +12 -12
  90. package/dist/lib/{init-control-plane-l2uFnhGV.js.map → init-control-plane-D-41Fm5q.js.map} +1 -1
  91. package/dist/lib/{markdown-0_p_zfxL.js → markdown-KnDWzWJJ.js} +2 -2
  92. package/dist/lib/{markdown-0_p_zfxL.js.map → markdown-KnDWzWJJ.js.map} +1 -1
  93. package/dist/lib/{orchestrator-D6wm8Sec.js → orchestrator-BEZcqgR5.js} +9 -9
  94. package/dist/lib/{orchestrator-D6wm8Sec.js.map → orchestrator-BEZcqgR5.js.map} +1 -1
  95. package/dist/lib/{orchestrator-Dh-hnIpK.js → orchestrator-Cda13e5U.js} +4 -4
  96. package/dist/lib/{orchestrator-Dh-hnIpK.js.map → orchestrator-Cda13e5U.js.map} +1 -1
  97. package/dist/lib/{peerjs-BWZnsD0B.js → peerjs-DYkUTcee.js} +5 -5
  98. package/dist/lib/{peerjs-BWZnsD0B.js.map → peerjs-DYkUTcee.js.map} +1 -1
  99. package/dist/lib/{push-client-MybDfOdi.js → push-client-CQtCFDaD.js} +3 -3
  100. package/dist/lib/{push-client-MybDfOdi.js.map → push-client-CQtCFDaD.js.map} +1 -1
  101. package/dist/lib/security/custom-element-security.d.ts +8 -4
  102. package/dist/lib/{shadow-claw-PdOpgTxH.js → shadow-claw-DYe9u6Tp.js} +142 -33
  103. package/dist/lib/shadow-claw-DYe9u6Tp.js.map +1 -0
  104. package/dist/lib/{shadow-claw-accounts-3bR76EOb.js → shadow-claw-accounts-D2URoHys.js} +2 -2
  105. package/dist/lib/{shadow-claw-accounts-3bR76EOb.js.map → shadow-claw-accounts-D2URoHys.js.map} +1 -1
  106. package/dist/lib/{shadow-claw-channel-config-ChdZ1iB8.js → shadow-claw-channel-config-buXoz2xv.js} +3 -3
  107. package/dist/lib/{shadow-claw-channel-config-ChdZ1iB8.js.map → shadow-claw-channel-config-buXoz2xv.js.map} +1 -1
  108. package/dist/lib/{shadow-claw-channels-CK9sc7h_.js → shadow-claw-channels-5yVJ1gLk.js} +3 -3
  109. package/dist/lib/{shadow-claw-channels-CK9sc7h_.js.map → shadow-claw-channels-5yVJ1gLk.js.map} +1 -1
  110. package/dist/lib/{shadow-claw-chat-B6uuZnJ7.js → shadow-claw-chat-CVc-7ycM.js} +7 -7
  111. package/dist/lib/{shadow-claw-chat-B6uuZnJ7.js.map → shadow-claw-chat-CVc-7ycM.js.map} +1 -1
  112. package/dist/lib/{shadow-claw-control-plane-BpRcl312.js → shadow-claw-control-plane-B5vsF91B.js} +6 -6
  113. package/dist/lib/{shadow-claw-control-plane-BpRcl312.js.map → shadow-claw-control-plane-B5vsF91B.js.map} +1 -1
  114. package/dist/lib/{shadow-claw-conversations-Dc_Xk2mB.js → shadow-claw-conversations-PGK5zqn3.js} +54 -12
  115. package/dist/lib/{shadow-claw-conversations-Dc_Xk2mB.js.map → shadow-claw-conversations-PGK5zqn3.js.map} +1 -1
  116. package/dist/lib/{shadow-claw-file-viewer-C4x1PtB2.js → shadow-claw-file-viewer-DSqn0hgx.js} +6 -6
  117. package/dist/lib/{shadow-claw-file-viewer-C4x1PtB2.js.map → shadow-claw-file-viewer-DSqn0hgx.js.map} +1 -1
  118. package/dist/lib/{shadow-claw-files-DhnHbXKf.js → shadow-claw-files-vOa9ZWbr.js} +6 -6
  119. package/dist/lib/{shadow-claw-files-DhnHbXKf.js.map → shadow-claw-files-vOa9ZWbr.js.map} +1 -1
  120. package/dist/lib/{shadow-claw-git-BeQ1ElUd.js → shadow-claw-git-D54Z85Bj.js} +4 -4
  121. package/dist/lib/{shadow-claw-git-BeQ1ElUd.js.map → shadow-claw-git-D54Z85Bj.js.map} +1 -1
  122. package/dist/lib/{shadow-claw-integrations-Bbdolk3w.js → shadow-claw-integrations-BTubMH9d.js} +2 -2
  123. package/dist/lib/{shadow-claw-integrations-Bbdolk3w.js.map → shadow-claw-integrations-BTubMH9d.js.map} +1 -1
  124. package/dist/lib/{shadow-claw-llm-DPda4L3C.js → shadow-claw-llm-8koGTNYs.js} +3 -3
  125. package/dist/lib/{shadow-claw-llm-DPda4L3C.js.map → shadow-claw-llm-8koGTNYs.js.map} +1 -1
  126. package/dist/lib/{shadow-claw-mcp-remote-Dn9c30WI.js → shadow-claw-mcp-remote-C2jwBsQt.js} +2 -2
  127. package/dist/lib/{shadow-claw-mcp-remote-Dn9c30WI.js.map → shadow-claw-mcp-remote-C2jwBsQt.js.map} +1 -1
  128. package/dist/lib/{shadow-claw-networking-zqNuyn3-.js → shadow-claw-networking-BV-rna16.js} +2 -2
  129. package/dist/lib/{shadow-claw-networking-zqNuyn3-.js.map → shadow-claw-networking-BV-rna16.js.map} +1 -1
  130. package/dist/lib/{shadow-claw-notifications-DFgdo33v.js → shadow-claw-notifications-Dku7VBLk.js} +2 -2
  131. package/dist/lib/{shadow-claw-notifications-DFgdo33v.js.map → shadow-claw-notifications-Dku7VBLk.js.map} +1 -1
  132. package/dist/lib/{shadow-claw-page-header-B7LFGQRf.js → shadow-claw-page-header-VPjYWfsT.js} +2 -2
  133. package/dist/lib/{shadow-claw-page-header-B7LFGQRf.js.map → shadow-claw-page-header-VPjYWfsT.js.map} +1 -1
  134. package/dist/lib/{shadow-claw-pages-DLspFqdK.js → shadow-claw-pages-DXrM6hgZ.js} +29 -19
  135. package/dist/lib/shadow-claw-pages-DXrM6hgZ.js.map +1 -0
  136. package/dist/lib/{shadow-claw-peerjs-D8xWwuWR.js → shadow-claw-peerjs-D3xonez5.js} +3 -3
  137. package/dist/lib/{shadow-claw-peerjs-D8xWwuWR.js.map → shadow-claw-peerjs-D3xonez5.js.map} +1 -1
  138. package/dist/lib/{shadow-claw-settings-NbvzXASD.js → shadow-claw-settings-DMTx6OS9.js} +5 -5
  139. package/dist/lib/{shadow-claw-settings-NbvzXASD.js.map → shadow-claw-settings-DMTx6OS9.js.map} +1 -1
  140. package/dist/lib/{shadow-claw-storage-B_NAoZmd.js → shadow-claw-storage-BJLnukxa.js} +3 -3
  141. package/dist/lib/{shadow-claw-storage-B_NAoZmd.js.map → shadow-claw-storage-BJLnukxa.js.map} +1 -1
  142. package/dist/lib/{shadow-claw-task-server-BaQJXhYJ.js → shadow-claw-task-server-DcMj20hD.js} +2 -2
  143. package/dist/lib/{shadow-claw-task-server-BaQJXhYJ.js.map → shadow-claw-task-server-DcMj20hD.js.map} +1 -1
  144. package/dist/lib/{shadow-claw-tasks-CAZua0-j.js → shadow-claw-tasks-BQBe4lVi.js} +7 -7
  145. package/dist/lib/{shadow-claw-tasks-CAZua0-j.js.map → shadow-claw-tasks-BQBe4lVi.js.map} +1 -1
  146. package/dist/lib/{shadow-claw-terminal-B2YJhkJL.js → shadow-claw-terminal-DPEzTxXv.js} +2 -2
  147. package/dist/lib/{shadow-claw-terminal-B2YJhkJL.js.map → shadow-claw-terminal-DPEzTxXv.js.map} +1 -1
  148. package/dist/lib/{shadow-claw-tools-CkZWxxTm.js → shadow-claw-tools-BCnU8FaK.js} +6 -6
  149. package/dist/lib/{shadow-claw-tools-CkZWxxTm.js.map → shadow-claw-tools-BCnU8FaK.js.map} +1 -1
  150. package/dist/lib/{shadow-claw-webvm-BL9cgrP9.js → shadow-claw-webvm-CnW-hoJ8.js} +2 -2
  151. package/dist/lib/{shadow-claw-webvm-BL9cgrP9.js.map → shadow-claw-webvm-CnW-hoJ8.js.map} +1 -1
  152. package/dist/lib/subsystems/mcp/webmcp.d.ts +15 -2
  153. package/dist/lib/{sync-web-mcp-registration-dW2MVCj4.js → sync-web-mcp-registration-DwpGjVdo.js} +10 -4
  154. package/dist/lib/sync-web-mcp-registration-DwpGjVdo.js.map +1 -0
  155. package/dist/lib/{tools-D7whby3H.js → tools-CP6G0HF7.js} +5 -6
  156. package/dist/lib/tools-CP6G0HF7.js.map +1 -0
  157. package/dist/lib/{trusted-types-d0cdkut_.js → trusted-types-0cu5Dm6M.js} +29 -4
  158. package/dist/lib/{trusted-types-d0cdkut_.js.map → trusted-types-0cu5Dm6M.js.map} +1 -1
  159. package/dist/lib/utils/index.d.ts +1 -0
  160. package/dist/lib/utils/index.js +4 -2
  161. package/dist/lib/utils/index.js.map +1 -1
  162. package/dist/lib/utils/resolve-page-script-dependencies.d.ts +19 -0
  163. package/dist/lib/utils/resolve-page-script-dependencies.js +98 -0
  164. package/dist/lib/utils/resolve-page-script-dependencies.js.map +1 -0
  165. package/dist/lib/utils/utils.js +1 -1
  166. package/dist/lib/webmcp-Bf9rT7uu.js +2001 -0
  167. package/dist/lib/webmcp-Bf9rT7uu.js.map +1 -0
  168. package/dist/public/.well-known/mcp/server-card.json +1 -1
  169. package/dist/public/.well-known/mcp.json +1 -1
  170. package/dist/public/AGENTS.md +3 -3
  171. package/dist/public/README.md +1 -1
  172. package/dist/public/agent.worker.js +2 -2
  173. package/dist/public/components/shadow-claw/shadow-claw.css +1 -1
  174. package/dist/public/components/shadow-claw/shadow-claw.html +1 -1
  175. package/dist/public/components/shadow-claw-conversations/shadow-claw-conversations.css +1 -1
  176. package/dist/public/components/shadow-claw-conversations/shadow-claw-conversations.html +1 -1
  177. package/dist/public/{configure-peer-js-WLRM7Qa7.js → configure-peer-js-OYl3V8sW.js} +1 -1
  178. package/dist/public/{custom-element-security-Cl991z-x.js → custom-element-security-BR4V40j4.js} +1 -1
  179. package/dist/public/docs/example/article/index.html +3 -3
  180. package/dist/public/docs/example/article.html +3 -3
  181. package/dist/public/docs/publishing/index.html +3 -3
  182. package/dist/public/docs/publishing.html +3 -3
  183. package/dist/public/docs/skill-creator/index.html +3 -3
  184. package/dist/public/docs/skill-creator.html +3 -3
  185. package/dist/public/docs/subsystems/custom-element-security.md +19 -5
  186. package/dist/public/docs/subsystems/pages.md +10 -2
  187. package/dist/public/docs/subsystems/tools.md +1 -2
  188. package/dist/public/docs/subsystems/webmcp.md +41 -6
  189. package/dist/public/{download-group-file-fFjoIIp4.js → download-group-file-BNmK8wac.js} +1 -1
  190. package/dist/public/e2e/README.md +2 -2
  191. package/dist/public/{e2e-bridge-CiSfBRT4.js → e2e-bridge-4phD1JUQ.js} +1 -1
  192. package/dist/public/{file-viewer-DFC3kfeO.js → file-viewer-Dbh3K9nL.js} +1 -1
  193. package/dist/public/index.html +3 -3
  194. package/dist/public/index.js +1 -1
  195. package/dist/public/{init-control-plane-BEbcwmmv.js → init-control-plane-DGOY_RNS.js} +1 -1
  196. package/dist/public/llms.txt +1 -1
  197. package/dist/public/main/index.html +3 -3
  198. package/dist/public/main/memory/index.html +3 -3
  199. package/dist/public/main/memory.html +3 -3
  200. package/dist/public/main.html +3 -3
  201. package/dist/public/{markdown-BeglYzw9.js → markdown-BPZYpfGm.js} +1 -1
  202. package/dist/public/{orchestrator-BlvEG3PO.js → orchestrator-OoUK7CF9.js} +1 -1
  203. package/dist/public/{orchestrator-DTNrntd4.js → orchestrator-a9047bGu.js} +1 -1
  204. package/dist/public/{peerjs-CnBdK94R.js → peerjs-Cbn310Tz.js} +1 -1
  205. package/dist/public/{push-client-DOHbdCyj.js → push-client-Dy4LGJy9.js} +1 -1
  206. package/dist/public/service-worker.js +1 -1
  207. package/dist/public/shadow-claw-B-HWC1uN.js +1180 -0
  208. package/dist/public/{shadow-claw-accounts-C6FXVw2K.js → shadow-claw-accounts-Di-anCZ1.js} +1 -1
  209. package/dist/public/{shadow-claw-channels-tr_r60Kq.js → shadow-claw-channels-RVwCE8pE.js} +1 -1
  210. package/dist/public/{shadow-claw-chat-BAAPhAOs.js → shadow-claw-chat-DI1q8UnX.js} +1 -1
  211. package/dist/public/{shadow-claw-control-plane-C_5VIx8E.js → shadow-claw-control-plane-KXEdLOGl.js} +2 -2
  212. package/dist/public/{shadow-claw-conversations-DGYZdDa3.js → shadow-claw-conversations-BCBGtS30.js} +40 -6
  213. package/dist/public/{shadow-claw-file-viewer-5j2-Z3fN.js → shadow-claw-file-viewer-CW3t6j-w.js} +1 -1
  214. package/dist/public/{shadow-claw-files-DKF4Yy0m.js → shadow-claw-files-JQ-o0ImX.js} +1 -1
  215. package/dist/public/{shadow-claw-git-CtUTJXKT.js → shadow-claw-git-D2M8VixW.js} +2 -2
  216. package/dist/public/{shadow-claw-integrations-CuBy9D3z.js → shadow-claw-integrations-Cgw6v9_1.js} +1 -1
  217. package/dist/public/{shadow-claw-llm-BIfNNjGL.js → shadow-claw-llm-74ieXp7i.js} +1 -1
  218. package/dist/public/{shadow-claw-mcp-remote-C17FXvrb.js → shadow-claw-mcp-remote-BX0BkSmy.js} +1 -1
  219. package/dist/public/{shadow-claw-networking-CjxQ1CLI.js → shadow-claw-networking-DNX8vaIQ.js} +1 -1
  220. package/dist/public/{shadow-claw-notifications-Brn2O3Ps.js → shadow-claw-notifications-BLTaGAny.js} +1 -1
  221. package/dist/public/{shadow-claw-page-header-Bn1P7Cxb.js → shadow-claw-page-header-CjFOdo9v.js} +1 -1
  222. package/dist/public/shadow-claw-pages-DOQqMm0_.js +645 -0
  223. package/dist/public/{shadow-claw-settings-CfDm0hVA.js → shadow-claw-settings-DFtl0Fy8.js} +2 -2
  224. package/dist/public/{shadow-claw-storage-DOOesRzw.js → shadow-claw-storage-gQGExZRq.js} +1 -1
  225. package/dist/public/{shadow-claw-task-server-H36iDDp2.js → shadow-claw-task-server-Ca45uY7S.js} +1 -1
  226. package/dist/public/{shadow-claw-tasks-4JsjSGkN.js → shadow-claw-tasks-CCTaaSdi.js} +1 -1
  227. package/dist/public/{shadow-claw-terminal-CTRTcYz-.js → shadow-claw-terminal-BfgulLkl.js} +1 -1
  228. package/dist/public/{shadow-claw-tools-Dm1LxNf4.js → shadow-claw-tools-V8NA4n18.js} +1 -1
  229. package/dist/public/{shadow-claw-webvm-JzuPe9Nr.js → shadow-claw-webvm-CxxI2bnC.js} +1 -1
  230. package/dist/public/sync-web-mcp-registration-CkCA8UFm.js +1 -0
  231. package/dist/public/{tools-FiTtOlIt.js → tools-CwQq5tJH.js} +2 -2
  232. package/dist/public/webmcp-CmtWOAFm.js +6 -0
  233. package/dist/server.js +2 -2
  234. package/package.json +3 -3
  235. package/src/cli/prerender/dsd-shell/prerender-dsd-shell.test.ts +16 -0
  236. package/src/cli/prerender/dsd-shell/prerender-dsd-shell.ts +62 -1
  237. package/src/cli/prerender/pretty-paths/prerender-pretty-paths.test.ts +277 -0
  238. package/src/cli/prerender/pretty-paths/prerender-pretty-paths.ts +28 -1
  239. package/src/cli/site-config/custom-elements/build-custom-element-script-tags.ts +13 -1
  240. package/src/components/shadow-claw/shadow-claw.css +12 -0
  241. package/src/components/shadow-claw/shadow-claw.html +12 -2
  242. package/src/components/shadow-claw/utils/bind-event-listeners.test.ts +18 -0
  243. package/src/components/shadow-claw/utils/bind-event-listeners.ts +14 -0
  244. package/src/components/shadow-claw/utils/get-route.test.ts +35 -0
  245. package/src/components/shadow-claw/utils/get-route.ts +18 -0
  246. package/src/components/shadow-claw/utils/sync-slotted-sidebar-active-links.test.ts +152 -1
  247. package/src/components/shadow-claw/utils/sync-slotted-sidebar-active-links.ts +139 -8
  248. package/src/components/shadow-claw-conversations/shadow-claw-conversations.css +11 -0
  249. package/src/components/shadow-claw-conversations/shadow-claw-conversations.html +27 -4
  250. package/src/components/shadow-claw-conversations/shadow-claw-conversations.ts +32 -4
  251. package/src/components/shadow-claw-pages/shadow-claw-pages-scripts.test.ts +266 -0
  252. package/src/components/shadow-claw-pages/shadow-claw-pages.ts +41 -17
  253. package/src/core/orchestrator/utils/sync-web-mcp-registration.test.ts +18 -1
  254. package/src/core/orchestrator/utils/sync-web-mcp-registration.ts +8 -0
  255. package/src/core/utils/init-control-plane.test.ts +9 -4
  256. package/src/security/custom-element-security.test.ts +65 -0
  257. package/src/security/custom-element-security.ts +67 -4
  258. package/src/stores/tools.test.ts +5 -3
  259. package/src/stores/tools.ts +5 -10
  260. package/src/subsystems/mcp/webmcp.test.ts +84 -13
  261. package/src/subsystems/mcp/webmcp.ts +73 -10
  262. package/src/utils/index.ts +1 -0
  263. package/src/utils/resolve-page-script-dependencies.test.ts +245 -0
  264. package/src/utils/resolve-page-script-dependencies.ts +198 -0
  265. package/dist/cli/chunk-B1hufJeO.js +0 -1
  266. package/dist/cli/chunk-BZpn8npn.js +0 -1
  267. package/dist/cli/chunk-Bw5aOTFr.js +0 -1
  268. package/dist/cli/chunk-C8nH01Gw.js +0 -32
  269. package/dist/cli/chunk-CK1ZoyoE.js +0 -17
  270. package/dist/cli/chunk-CVkhDr-7.js +0 -1
  271. package/dist/cli/chunk-Cum07Vlh.js +0 -1
  272. package/dist/cli/chunk-D3UhDDmV.js +0 -2
  273. package/dist/cli/chunk-D8GI6qj6.js +0 -1
  274. package/dist/cli/chunk-DEH-FvmP.js +0 -1
  275. package/dist/cli/chunk-DksvJ_kf.js +0 -1
  276. package/dist/cli/chunk-RGb9wM4R.js +0 -1
  277. package/dist/lib/shadow-claw-PdOpgTxH.js.map +0 -1
  278. package/dist/lib/shadow-claw-pages-DLspFqdK.js.map +0 -1
  279. package/dist/lib/sync-web-mcp-registration-dW2MVCj4.js.map +0 -1
  280. package/dist/lib/tools-D7whby3H.js.map +0 -1
  281. package/dist/lib/webmcp-CYTNZfkn.js +0 -1687
  282. package/dist/lib/webmcp-CYTNZfkn.js.map +0 -1
  283. package/dist/public/shadow-claw-CnNX-WCh.js +0 -1158
  284. package/dist/public/shadow-claw-pages-BwOOqRWW.js +0 -645
  285. package/dist/public/sync-web-mcp-registration-BnHVUjat.js +0 -1
  286. package/dist/public/webmcp-_TBqXlVW.js +0 -1
@@ -1,645 +0,0 @@
1
- import{i as e}from"./rolldown-runtime-DBVvNlSN.js";import{S as t,a as n,c as r,d as i,f as a,i as o,o as s,r as c,s as l,u}from"./custom-element-security-Cl991z-x.js";import{t as d}from"./browser-B1SoUj6D.js";import{r as f}from"./config-y_2Fg77m.js";import{c as p,f as m,l as h,n as g,r as _,s as v}from"./app-routes-H23VN-4O.js";import{n as y}from"./db-BUuJo1Gf.js";import{t as b}from"./get-config-Bkvl__ZS.js";import{n as x}from"./html-BwtE_7wp.js";import{t as S}from"./dist-CeFyqf9k.js";import{Sn as C,a as w,bn as T,c as E,d as ee,en as te,gn as ne,o as D,t as O,u as re}from"./orchestrator-BlvEG3PO.js";import{a as k,d as A,t as ie}from"./tools-FiTtOlIt.js";import{t as ae}from"./parse-boolean-config-BigJ9U46.js";import{a as j,r as M,s as oe}from"./toast-CtIuHprH.js";import{t as se}from"./shadow-claw-element-DIrv3P6A.js";import{t as N}from"./effect-xrx5qhzv.js";import"./shadow-claw-page-header-action-button-Bmua3mAb.js";import"./shadow-claw-page-header-Bn1P7Cxb.js";import{r as P}from"./frontmatter-CZox7hQQ.js";import{t as ce}from"./file-viewer-DFC3kfeO.js";import{a as F,c as le,i as ue,l as de,n as fe,o as pe,r as me,s as he,t as ge}from"./iframe-storage-proxy-BXWJUsH8.js";var _e=/* @__PURE__ */ e(d(),1);function ve(e){let t=(e.siteTitle||``).trim(),n=e.pageTitle?x(e.pageTitle).trim():``;if(e.isHome||!n)return t;if(!t)return n;if(n.toLowerCase()===t.toLowerCase())return t;let r=e.separator==null?` - `:e.separator;r&&!r.startsWith(` `)&&!r.endsWith(` `)&&(r=` ${r} `);let i=r.trim();return RegExp(`(?:\\s*[-|—•·]\\s*|\\s+${I(i)}\\s+)${I(t)}$`,`i`).test(n)?n:e.titleTemplate?e.titleTemplate.replace(/%%title%%|%title%/g,n).replace(/%%sitename%%|%%site%%|%sitename%|%site%/g,t).replace(/%%sep%%|%sep%/g,i).replace(/%%sitedesc%%|%%description%%|%sitedesc%|%description%/g,(e.siteDescription||``).trim()).replace(/\s+/g,` `).trim():`${n}${r}${t}`}function I(e){return e.replace(/[.*+?^${}()|[\]\\]/g,`\\$&`)}function ye(e,t,n){n&&(n.textContent=`Navigated to page: ${t||e.path}`)}function L(e,t){if(e===t||e===`main`&&t===`br:main`||e===`br:main`&&t===`main`)return!0;if(!e.includes(`:`)&&!t.includes(`:`))return!1;let n=e=>e.trim().replace(/:/g,`-`);return n(e)===n(t)}function R(e,t,n,r=typeof window<`u`?window.location.origin:``){let i=e.trim();if(!i||i.startsWith(`#`))return null;let a=i.split(/[?#]/,1)[0],o=a.replace(/^(?:\.\/)+/u,``),s=[];if(o.startsWith(`files/`)&&s.push(`/${o}`),a.startsWith(`/`)){let e=a.lastIndexOf(`/files/`);e>0&&s.push(a.slice(e)),s.push(a)}for(let e of s){let t=p(e);if(t&&L(t.groupId,n))return t.path}let c=g(v(n,t)),l=m(i,c,r||(typeof window<`u`?window.location.origin:``));if(!l||r&&l.origin!==r)return null;let u=p(l.pathname);return!u||!L(u.groupId,n)?null:u.path}function z(e,t,n,r,i=typeof window<`u`?window.location.origin:``){if(!e)return e;let a=i||(typeof window<`u`?window.location.origin:``),o=new DOMParser().parseFromString(e,`text/html`),s=(e,i)=>{let s=Array.from(o.querySelectorAll(e));for(let e of s){let o=(e.getAttribute(i)||``).trim();if(!o||o.startsWith(`#`)||o.startsWith(`javascript:`))continue;let s=m(o,n,a);!s||a&&s.origin!==a||(i!==`href`||h(s.pathname)||R(o,t,r,a))&&e.setAttribute(i,`${s.pathname}${s.search}${s.hash}`)}};return s(`a[href]`,`href`),s(`img[src]`,`src`),s(`audio[src]`,`src`),s(`video[src]`,`src`),s(`source[src]`,`src`),o.body.innerHTML}const be={ALLOWED_URI_REGEXP:/^(?:(?:https?|mailto|ftp|tel|file|blob|data):|[^a-z]|[a-z+.\-]+(?:[^a-z+.\-:]|$))/i,ADD_TAGS:[`iframe`,`figure`,`figcaption`],CUSTOM_ELEMENT_HANDLING:{tagNameCheck:e=>t(e),attributeNameCheck:()=>!0,allowCustomizedBuiltInElements:!1},ADD_ATTR:[`allow`,`allowfullscreen`,`frameborder`,`scrolling`,`referrerpolicy`,`loading`]};async function xe({content:e,filePath:t,searchParams:n=``,groupId:r,origin:i=typeof window<`u`?window.location?.origin:``,sanitizeOptions:a=be,resolveRelativeImagesInHtmlFn:l}){let d=g(v(r,t)),f=z(e,t,d,r,i),p=l?await l(f,t,r):f,m=u(p,a),h=crypto.randomUUID().replace(/-/g,``),_=g(`/assets/file-viewer-preview-bridge.js`),y=g(`/assets/iframe-storage-bridge.js`),b=c(),x=o(h),S=typeof document<`u`?document.getElementById(`shadow-claw-site-config`):null,C=S&&S.textContent?`<script id="shadow-claw-site-config" type="application/json">${S.textContent}<\/script>`:``,w=n?`<script nonce="${h}">(function(){try{Object.defineProperty(globalThis.location,"search",{get:function(){return ${JSON.stringify(n)};},configurable:true});}catch(e){}})();<\/script>`:``,T=b.length>0&&s(m)?b.map(({src:e,hasInit:t})=>{let n=e.startsWith(`http://`)||e.startsWith(`https://`)||e.startsWith(`//`)?e:g(e.startsWith(`/`)?e:`/${e.replace(/^pages\/main\//,``)}`),r=[`<script type="module" src="${n}" nonce="${h}"><\/script>`];return t&&r.push(`<script type="module" nonce="${h}">import("${n}").then((m) => { try { if (typeof m?.init === "function") m.init(); } catch (e) { console.error("[ShadowClaw] Error executing init for " + ${JSON.stringify(n)}, e); } }).catch(() => {});<\/script>`),r.join(`
2
- `)}).join(`
3
- `):``,E=de();return[`<!doctype html>`,`<html class="${he()}"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1">`,`<meta http-equiv="Content-Security-Policy" content="${x}">`,`<base href="${d}" target="_blank">`,w,C,`<script src="${y}" nonce="${h}"><\/script>`,`<script src="${_}" nonce="${h}"><\/script>`,le(),E,T,`</head><body>`,m,`</body></html>`].join(``)}function Se(e,t){return t===0?{isPrevDisabled:!0,isNextDisabled:!0}:{isPrevDisabled:e<=0,isNextDisabled:e<0||e>=t-1}}async function Ce(e,t,n=e=>O.removeAllPages(e)){return!e||!await t({title:`Remove All Pages`,message:`Remove ALL saved pages from Pages? This cannot be undone!`,confirmLabel:`Remove All`,cancelLabel:`Cancel`})?!1:(await n(e),!0)}const B={setItem:F,deleteItem:fe,clear:ge,getAll:ue,getItem:me,putItem:F};async function we(e,t,n,r=B){switch(e){case`setItem`:await r.setItem(n,String(t.key||``),t.value);return;case`removeItem`:await r.deleteItem(n,String(t.key||``));return;case`clear`:await r.clear(n);return;case`getAllItems`:return await r.getAll(n);case`idb-get`:return await r.getItem(`${n}::idb::${t.dbName}::${t.storeName}`,String(t.key||``));case`idb-getAll`:return await r.getAll(`${n}::idb::${t.dbName}::${t.storeName}`);case`idb-put`:{let e=t.key==null?`__auto_${Date.now()}`:String(t.key);return await r.putItem(`${n}::idb::${t.dbName}::${t.storeName}`,e,t.value),e}case`idb-delete`:await r.deleteItem(`${n}::idb::${t.dbName}::${t.storeName}`,String(t.key||``));return;case`idb-clear`:await r.clear(`${n}::idb::${t.dbName}::${t.storeName}`);return;case`idb-deleteDatabase`:await r.clear(`${n}::idb::${t.dbName}::__default__`);return;case`idb-count`:{let e=await r.getAll(`${n}::idb::${t.dbName}::${t.storeName}`);return Object.keys(e).length}default:throw Error(`Unknown storage proxy method: ${e}`)}}async function Te(e,t,n,r,i,a=B){if(t)try{let o=await we(n,r,i,a);e.postMessage({type:`shadow-claw-storage-proxy-result`,requestId:t,result:o??null},`*`)}catch(n){e.postMessage({type:`shadow-claw-storage-proxy-result`,requestId:t,error:n instanceof Error?n.message:String(n)},`*`)}}function Ee({root:e,rendered:t,selectedPath:r,onIframeLoad:i}){let a=e.querySelector(`[data-pages-iframe]`);if(a instanceof HTMLIFrameElement)return a;let o=document.createElement(`iframe`);return o.className=`pages__iframe`,o.setAttribute(`data-pages-iframe`,``),o.setAttribute(`title`,r?`Preview: ${r}`:`Page preview`),o.setAttribute(`sandbox`,n()),o.setAttribute(`allow`,`fullscreen`),o.hidden=!0,i&&o.addEventListener(`load`,()=>{i(o.contentWindow)}),t.before(o),o}function De(e){if(typeof e!=`string`&&typeof e!=`number`)return 0;let t=parseInt(String(e),10);return isNaN(t)||t<0?0:te(t,0,{min:0,max:86400})}async function Oe(e,t=b){if(!e)return 0;try{return De(await t(e,f.PAGES_AUTO_REFRESH_INTERVAL))}catch{return 0}}function V(e){if(!e)return``;let t=e.groupId;return t===`main`&&(t=`br:main`),`${t}\u0000${e.path}`}function H(e,t=[]){if(!e)return-1;let n=V(e);return t.findIndex(e=>V(e)===n)}function ke(e=[]){let t=/* @__PURE__ */ new Map;return e.forEach(e=>{let n=t.get(e.groupId)||[];n.push(e),t.set(e.groupId,n)}),t}function Ae(e,t){if(!t||t.hidden)return!1;let n=e.replace(/^#/,``),r=t.querySelector(`[id="${n}"]`)||t.querySelector(`a[name="${n}"]`);return r?(r.scrollIntoView({behavior:`smooth`,block:`start`}),!0):!1}function je(e){let t=e.detail;return t&&t.interval!==void 0?De(t.interval):null}function Me(e,t){return!e||!t||!e.groupId||!e.path||e.path!==t.path?!1:e.groupId===t.groupId||L(e.groupId,t.groupId)}function Ne(e,t){let n=e.detail;return Me(n,t)}function U(e,t){let n=[`data-no-nav`,`data-no-swipe`,`data-no-page-nav`,`data-prevent-nav`,`data-prevent-page-nav`,`data-isolate-input`,`data-isolate-navigation`,`data-game-controls`],r=e=>{if(!e||!(e instanceof HTMLElement))return!1;let t=e.tagName.toLowerCase();return!!(t===`input`||t===`textarea`||t===`select`||t===`option`||t===`iframe`||e.classList.contains(`pages__preview-frame`)||e.isContentEditable||e.contentEditable===`true`||e.getAttribute(`contenteditable`)===`true`||e.hasAttribute(`contenteditable`)||e.closest(`[data-pages-list]`)||e.closest(`[data-pages-dropdown]`)||e.closest(`.pages__sidebar`)||e.closest(`.pages__preview-frame`)||e.closest(`iframe`)||n.some(t=>e.closest(`[${t}]`)))};if(t&&r(t))return!0;if(e){let t=typeof e.composedPath==`function`?e.composedPath():[];for(let e of t)if(e instanceof HTMLElement){let t=e.tagName.toLowerCase();if(n.some(t=>e.hasAttribute(t))||t===`input`||t===`textarea`||t===`select`||t===`option`||t===`iframe`||e.classList.contains(`pages__preview-frame`)||e.isContentEditable||e.contentEditable===`true`||e.getAttribute(`contenteditable`)===`true`||e.hasAttribute(`contenteditable`))return!0}if(e.target&&r(e.target))return!0}return!1}function Pe(e,t){return t||e.key!==`ArrowLeft`&&e.key!==`ArrowRight`||e.ctrlKey||e.altKey||e.metaKey?null:e.key===`ArrowLeft`?`previous`:`next`}function Fe(e,t,n,r,i,a=300,o=Date.now()){let s=i??{lastNavigationTime:0,lastDirection:null};if(!t)return s;let c=n?.activeElement||document.activeElement,l=Pe(e,U(e,e.target||null)||U(void 0,c));return!l||(e.preventDefault(),s.lastDirection===l&&o-s.lastNavigationTime<a)||(s.lastNavigationTime=o,s.lastDirection=l,r(l)),s}function Ie(e,t,n=Date.now()){return e.button!==0||t?{mouseStartX:0,mouseStartY:0,mouseStartTime:0,isMouseDown:!1}:{mouseStartX:e.clientX,mouseStartY:e.clientY,mouseStartTime:n,isMouseDown:!0}}function W(e,t,n,r,i,a=Date.now(),o=50,s=600){let c=n-e,l=r-t,u=a-i;return Math.abs(c)>=o&&Math.abs(c)>Math.abs(l)&&u<=s?c<0?`next`:`previous`:null}function Le(e,t,n,r,i=Date.now()){return!t.isMouseDown||n||r?null:W(t.mouseStartX,t.mouseStartY,e.clientX,e.clientY,t.mouseStartTime,i)}function Re(e,t,n){if(t===n||t<0||t>=e.length||n<0||n>=e.length)return e;let r=[...e],[i]=r.splice(t,1);return r.splice(n,0,i),r}async function ze({db:e,currentPages:t,fromIndex:n,toIndex:r,reorderStoreFn:i=(e,t)=>O.reorderPages(e,t)}){if(!e||n===r)return{reordered:!1,reorderedPages:t,movedToFirst:null};let a=Re(t,n,r);if(a===t)return{reordered:!1,reorderedPages:t,movedToFirst:null};await i(e,a);let o=a[r]||null;return{reordered:!0,reorderedPages:a,movedToFirst:r===0?o:null}}function Be(e,t,n,r=Date.now()){if(!t.touchStartTime||n)return null;if(e.changedTouches&&e.changedTouches.length===1){let n=e.changedTouches[0].clientX,i=e.changedTouches[0].clientY;return W(t.touchStartX,t.touchStartY,n,i,t.touchStartTime,r)}return null}function Ve(e,t,n=Date.now()){return t?{touchStartX:0,touchStartY:0,touchStartTime:0}:e.touches&&e.touches.length===1?{touchStartX:e.touches[0].clientX,touchStartY:e.touches[0].clientY,touchStartTime:n}:null}function He(e,t,n){return!e&&t?`render-and-timer`:e&&n?`clear-timer`:`noop`}function Ue(e,t){return!e&&t}function We(e){return/\.(html?|xhtml)$/iu.test(e)}function G(e){return/\.(md|markdown)$/iu.test(e)}function Ge(e){if(!e||typeof e!=`object`)return null;let t=e;return t.type===`shadow-claw-broadcast-result`&&typeof t.channel==`string`?{kind:`broadcast-result`,channel:t.channel,payload:t.payload}:t.type===`shadow-claw-storage-proxy`?{kind:`storage-proxy`,requestId:String(t.requestId||``),method:String(t.method||``),args:t.args&&typeof t.args==`object`?t.args:{}}:t.type===`shadow-claw-swipe`&&typeof t.direction==`string`?{kind:`swipe`,direction:t.direction}:t.type===`shadow-claw-iframe-resize`&&typeof t.height==`number`?{kind:`iframe-resize`,height:t.height}:t.type===`shadow-claw-file-viewer-link`&&typeof t.href==`string`?{kind:`file-viewer-link`,href:t.href,target:typeof t.target==`string`?t.target:void 0}:null}async function Ke({db:e,groupId:t,workspacePath:n,readGroupFileBytesFn:r=ne,writeGroupFileFn:i=k,fetchFn:a=typeof fetch<`u`?fetch:void 0}){if(e)try{let i=await r(e,t,n),a=T(n)||`image/jpeg`,o=new Uint8Array(i.byteLength);return o.set(new Uint8Array(i)),`data:${a};base64,${C(o)}`}catch{}if(!a)return null;try{let r=n.replace(/^\/+/,``),o=[g(`/files/main/${r}`),g(`/static-main/${r}`),g(`/pages/main/${r}`)];for(let r of o)try{let o=await a(typeof window<`u`&&window.location?.origin?new URL(r,window.location.origin).toString():r);if(o.ok){let r=await o.blob();if(e)try{let a=await r.arrayBuffer();await i(e,t,n,new Uint8Array(a))}catch{}if(typeof FileReader<`u`)return await new Promise((e,t)=>{let n=new FileReader;n.onload=()=>e(n.result),n.onerror=t,n.readAsDataURL(r)});let a=await r.arrayBuffer(),s=C(new Uint8Array(a));return`data:${r.type||T(n)||`image/jpeg`};base64,${s}`}}catch{}}catch{}return null}function K(e){let t=e.querySelector(`[data-pages-iframe]`);if(t instanceof HTMLIFrameElement){t.removeAttribute(`srcdoc`);try{t.src=`about:blank`}catch{}t.remove()}}async function q(e,t=typeof document<`u`?document.querySelector(`shadow-claw`):null,n=oe){return t&&typeof t.requestDialog==`function`?await t.requestDialog({mode:`confirm`,...e}):(n(e.message,4500),!1)}async function J(e,t,n=b){if(!e||typeof e.transaction!=`function`)return!0;try{return ae(await n(e,t),!0)}catch{return!0}}function qe(e,t,n=[]){if(e===t||L(e,t))return t;let r=n.find(t=>t.groupId===e);if(r)return r.groupId;let i=n.find(t=>L(e,t.groupId));return i?i.groupId:e||null}function Je(e,t,n,r=[],i=typeof window<`u`?window.location.origin:``){let a=e.trim();if(!a||a.startsWith(`#`))return null;let o=[],s=a.split(/[?#]/,1)[0];if(/^[a-zA-Z][a-zA-Z\d+.-]*:/u.test(s)||s.startsWith(`//`)){let e;try{e=new URL(s,i||(typeof window<`u`?window.location.origin:``))}catch{return null}if(i&&e.origin!==i)return null;s=e.pathname}let c=s.replace(/^(?:\.\/)+/u,``);if(c.startsWith(`files/`)&&o.push(`/${c}`),s.startsWith(`/`)){let e=s.lastIndexOf(`/files/`);e>0&&o.push(s.slice(e)),o.push(s)}for(let e of o){let t=p(e);if(!t)continue;let i=qe(t.groupId,n,r);if(i)return{groupId:i,path:t.path}}let l=R(a,t,n,i);return l?{groupId:n,path:l}:null}async function Ye({container:e,groupId:t,filePath:n,groups:r,readImageAsDataUrlFn:i}){let a=Array.from(e.querySelectorAll(`img[src]`));a.length!==0&&await Promise.all(a.map(async e=>{let a=e.getAttribute(`src`)||``;if(!a||/^(?:blob:|data:|#)/u.test(a))return;let o=Je(a,n,t,r);if(!o)return;let s=await i(o.groupId,o.path);s&&e.setAttribute(`src`,s)}))}function Y(e,t,n){return e>0&&!t&&n}function Xe(e){if(!e)return;let t=typeof document<`u`&&document.documentElement.classList.contains(`dark-mode`),n={};if(typeof document<`u`&&typeof getComputedStyle<`u`){let e=getComputedStyle(document.documentElement);for(let t=0;t<e.length;t++){let r=e[t];r.startsWith(`--`)&&(n[r]=e.getPropertyValue(r))}}e.postMessage({type:`shadow-claw-theme-update`,theme:t?`dark`:`light`,customProperties:n},`*`)}function Ze({root:e,currentOpen:t,force:n}){if(!e)return t;let r=e.querySelector(`[data-pages-dropdown]`),i=r instanceof HTMLDetailsElement&&r.open,a;a=n===void 0?!(i||t):n;let o=e.querySelector(`.pages__sidebar`),s=e.querySelector(`.pages__content`);return o&&o.classList.toggle(`collapsed`,!a),s&&s.classList.toggle(`pages__content--sidebar-collapsed`,!a),r instanceof HTMLDetailsElement&&(a?r.setAttribute(`open`,``):r.removeAttribute(`open`)),a}const X=new CSSStyleSheet;X.replaceSync(`* {
4
- box-sizing: border-box;
5
- }
6
-
7
- :host {
8
- display: block;
9
- height: calc(100dvh + 4rem);
10
- line-height: 1.5;
11
- }
12
-
13
- .pages {
14
- background: var(--shadow-claw-bg-primary);
15
- color: var(--shadow-claw-text-primary);
16
- display: flex;
17
- flex-direction: column;
18
- min-height: 0;
19
- min-width: 0;
20
- }
21
-
22
- .pages__content {
23
- display: flex;
24
- flex: 1;
25
- flex-direction: column;
26
- min-height: 0;
27
- min-width: 0;
28
- }
29
-
30
- .pages__sidebar {
31
- display: none;
32
- }
33
-
34
- .pages__list {
35
- display: flex;
36
- flex-direction: column;
37
- gap: 0.375rem;
38
- padding: 0.625rem;
39
- }
40
-
41
- .pages__group-details {
42
- display: flex;
43
- flex-direction: column;
44
- gap: 0.375rem;
45
- }
46
-
47
- .pages__group-label {
48
- align-items: center;
49
- color: var(--shadow-claw-text-secondary);
50
- cursor: pointer;
51
- display: flex;
52
- font-size: 0.75rem;
53
- font-weight: 700;
54
- justify-content: space-between;
55
- list-style: none;
56
- margin: 0.25rem 0 0;
57
- padding: 0.125rem 0.25rem;
58
- text-transform: uppercase;
59
- user-select: none;
60
- }
61
-
62
- .pages__group-label::-webkit-details-marker {
63
- display: none;
64
- }
65
-
66
- .pages__group-icon {
67
- font-size: 0.625rem;
68
- transform: rotate(-90deg);
69
- transition: transform var(--shadow-claw-duration-min)
70
- var(--shadow-claw-ease-out);
71
- }
72
-
73
- .pages__group-details[open] .pages__group-icon {
74
- transform: rotate(0deg);
75
- }
76
-
77
- .pages__group-pages {
78
- display: flex;
79
- flex-direction: column;
80
- gap: 0.375rem;
81
- }
82
-
83
- .pages__list-item {
84
- align-items: center;
85
- background: var(--shadow-claw-bg-secondary);
86
- border: 0.0625rem solid var(--shadow-claw-border-color);
87
- border-radius: var(--shadow-claw-radius-m);
88
- color: var(--shadow-claw-text-primary);
89
- display: flex;
90
- font-size: var(--shadow-claw-font-size-sm);
91
- gap: 0.375rem;
92
- justify-content: space-between;
93
- line-height: 1.35;
94
- padding: 0.375rem;
95
- width: 100%;
96
- }
97
-
98
- .pages__list-item:hover {
99
- border-color: var(--shadow-claw-accent-primary);
100
- }
101
-
102
- .pages__select {
103
- align-items: center;
104
- background: transparent;
105
- border: none;
106
- color: inherit;
107
- cursor: pointer;
108
- display: flex;
109
- flex: 1;
110
- font: inherit;
111
- min-width: 0;
112
- padding: 0.125rem 0.25rem;
113
- text-align: left;
114
- }
115
-
116
- .pages__list-item.active {
117
- background: color-mix(
118
- in srgb,
119
- var(--shadow-claw-accent-primary) 20%,
120
- var(--shadow-claw-bg-secondary)
121
- );
122
- border-color: var(--shadow-claw-accent-primary);
123
- }
124
-
125
- .pages__list-path {
126
- display: block;
127
- overflow: hidden;
128
- text-overflow: ellipsis;
129
- white-space: nowrap;
130
- width: 100%;
131
- }
132
-
133
- .pages__remove {
134
- background: transparent;
135
- border: none;
136
- color: var(--shadow-claw-text-secondary);
137
- cursor: pointer;
138
- flex: none;
139
- font-size: 1rem;
140
- line-height: 1;
141
- padding: 0.125rem 0.25rem;
142
- }
143
-
144
- .pages__remove:hover {
145
- color: var(--shadow-claw-error-color);
146
- }
147
-
148
- .pages__viewer {
149
- display: flex;
150
- flex: 1;
151
- flex-direction: row;
152
- min-height: calc(100vh - 11rem);
153
- min-height: calc(100dvh - 11rem);
154
- min-width: 0;
155
- overflow: hidden;
156
- position: relative;
157
- }
158
-
159
- .pages__viewer-scroll {
160
- display: flex;
161
- flex: 1;
162
- flex-direction: column;
163
- height: calc(100% + 1.5rem);
164
- min-width: 0;
165
- padding: 0.75rem 1rem;
166
- }
167
-
168
- .pages__rendered {
169
- max-width: 72rem;
170
- padding: 1rem 1.5rem 1rem 1rem;
171
- }
172
-
173
- .pages__rendered :is(pre) {
174
- overflow: auto;
175
- }
176
-
177
- .pages__rendered img {
178
- max-height: 100%;
179
- max-width: 100%;
180
- }
181
-
182
- .pages__rendered a {
183
- color: var(--shadow-claw-link, var(--shadow-claw-accent-primary));
184
- }
185
-
186
- article > h1,
187
- article > h2,
188
- article header > h1,
189
- article header > h2,
190
- article :is(h1, h2),
191
- .pages__rendered > h1,
192
- .pages__rendered > h2 {
193
- margin-top: 0;
194
- margin-bottom: var(--shadow-claw-article-header-margin-bottom, 1.5rem);
195
- }
196
-
197
- .pages__rendered :is(h1, h2, h3, h4) {
198
- clear: both;
199
- }
200
-
201
- .pages__rendered :is(h1, h2, h3, h4, h5, h6) a {
202
- color: var(--shadow-claw-text-primary, inherit);
203
- text-decoration: none;
204
- }
205
-
206
- .pages__rendered :is(h1, h2, h3, h4, h5, h6) a:hover {
207
- color: var(--shadow-claw-link-hover, inherit);
208
- text-decoration: underline;
209
- }
210
-
211
- .pages__iframe {
212
- background: transparent;
213
- border-width: 0;
214
- display: block;
215
- height: auto;
216
- min-height: 20rem;
217
- overflow: hidden;
218
- width: 100%;
219
- }
220
-
221
- .pages__empty {
222
- color: var(--shadow-claw-text-secondary);
223
- font-size: var(--shadow-claw-font-size-sm);
224
- }
225
-
226
- .pages__status {
227
- color: var(--shadow-claw-text-secondary);
228
- font-size: var(--shadow-claw-font-size-sm);
229
- }
230
-
231
- .pages:has(.pages__sidebar.collapsed) .pages__remove-all-btn {
232
- display: none;
233
- }
234
-
235
- .pages:has(.pages__sidebar.collapsed)
236
- shadow-claw-page-header::part(actions-disclosure) {
237
- display: none;
238
- }
239
-
240
- .pages__dropdown-container {
241
- align-items: center;
242
- display: var(--shadow-claw-pages-dropdown-container-display, flex);
243
- gap: 0.5rem;
244
- margin-bottom: 1rem;
245
- position: relative;
246
- width: 100%;
247
- }
248
-
249
- /* Ebook-style edge navigation buttons */
250
- .pages__nav-btn {
251
- align-items: center;
252
- background: color-mix(
253
- in srgb,
254
- var(--shadow-claw-bg-secondary) 80%,
255
- transparent
256
- );
257
- backdrop-filter: blur(6px);
258
- border: 0.0625rem solid
259
- color-mix(in srgb, var(--shadow-claw-border-color) 60%, transparent);
260
- border-radius: var(--shadow-claw-radius-m);
261
- color: var(--shadow-claw-text-secondary);
262
- cursor: pointer;
263
- display: flex;
264
- flex: none;
265
- height: 8rem;
266
- justify-content: center;
267
- max-height: 8rem;
268
- min-height: 8rem;
269
- opacity: 0;
270
- padding: 0.75rem 0.5rem;
271
- pointer-events: none;
272
- position: fixed;
273
- top: 50dvh;
274
- transform: translateY(-50%);
275
- transition:
276
- opacity 0.4s var(--shadow-claw-ease-out),
277
- color 0.15s var(--shadow-claw-ease-out),
278
- border-color 0.15s var(--shadow-claw-ease-out),
279
- background 0.15s var(--shadow-claw-ease-out);
280
- z-index: 100;
281
- }
282
-
283
- .pages__nav-btn--prev {
284
- left: 0.5rem;
285
- }
286
-
287
- .pages__nav-btn--next {
288
- right: 0.5rem;
289
- }
290
-
291
- /* Reveal on direct button hover, viewer focus, or temporary JS active state */
292
- .pages__nav-btn:hover:not(:disabled):not([hidden]),
293
- .pages__content:focus-within .pages__nav-btn:not(:disabled):not([hidden]),
294
- .pages__viewer:focus-within ~ .pages__nav-btn:not(:disabled):not([hidden]),
295
- .pages__content:has(.pages__viewer--nav-visible)
296
- .pages__nav-btn:not(:disabled):not([hidden]),
297
- .pages__viewer.pages__viewer--nav-visible
298
- ~ .pages__nav-btn:not(:disabled):not([hidden]) {
299
- opacity: 1;
300
- pointer-events: auto;
301
- }
302
-
303
- /* Completely hide unclickable (disabled/hidden) buttons */
304
- .pages__nav-btn:disabled,
305
- .pages__nav-btn[hidden] {
306
- display: none !important;
307
- opacity: 0 !important;
308
- pointer-events: none !important;
309
- }
310
-
311
- .pages__nav-btn:hover:not(:disabled) {
312
- background: color-mix(
313
- in srgb,
314
- var(--shadow-claw-accent-primary) 15%,
315
- var(--shadow-claw-bg-secondary)
316
- );
317
- border-color: var(--shadow-claw-accent-primary);
318
- color: var(--shadow-claw-accent-primary);
319
- opacity: 1;
320
- }
321
-
322
- .pages__nav-btn:disabled {
323
- cursor: not-allowed;
324
- }
325
-
326
- .pages__dropdown {
327
- background: var(--shadow-claw-bg-secondary);
328
- border: 0.0625rem solid var(--shadow-claw-border-color);
329
- border-radius: var(--shadow-claw-radius-m);
330
- box-shadow: var(--shadow-claw-shadow-sm);
331
- color: var(--shadow-claw-text-primary);
332
- display: block;
333
- transition: border-color var(--shadow-claw-duration-min)
334
- var(--shadow-claw-ease-out);
335
- width: 100%;
336
- }
337
-
338
- .pages__dropdown:hover {
339
- border-color: var(--shadow-claw-accent-primary);
340
- }
341
-
342
- .pages__dropdown-summary {
343
- align-items: center;
344
- cursor: pointer;
345
- display: flex;
346
- font-size: var(--shadow-claw-font-size-sm);
347
- font-weight: 600;
348
- gap: 0.5rem;
349
- justify-content: space-between;
350
- list-style: none;
351
- padding: 0.625rem 1rem;
352
- user-select: none;
353
- }
354
-
355
- .pages__dropdown-summary::-webkit-details-marker {
356
- display: none;
357
- }
358
-
359
- .pages__dropdown-selected {
360
- flex: 1;
361
- overflow: hidden;
362
- text-overflow: ellipsis;
363
- white-space: nowrap;
364
- }
365
-
366
- .pages__dropdown-arrow {
367
- color: var(--shadow-claw-text-secondary);
368
- font-size: 0.75rem;
369
- transition: transform var(--shadow-claw-duration-min)
370
- var(--shadow-claw-ease-out);
371
- }
372
-
373
- .pages__dropdown[open] .pages__dropdown-arrow {
374
- transform: rotate(180deg);
375
- }
376
-
377
- .pages__dropdown-menu {
378
- backdrop-filter: blur(10px);
379
- background: var(--shadow-claw-bg-secondary);
380
- border: 0.0625rem solid var(--shadow-claw-border-color);
381
- border-radius: var(--shadow-claw-radius-m);
382
- box-shadow: var(--shadow-claw-shadow-lg);
383
- left: 0;
384
- margin-top: 0.375rem;
385
- max-height: 20rem;
386
- overflow-y: auto;
387
- position: absolute;
388
- right: 0;
389
- z-index: 100;
390
- }
391
-
392
- .pages__dropdown-menu .pages__list {
393
- padding: 0.375rem;
394
- }
395
-
396
- .pages__breadcrumbs {
397
- align-items: center;
398
- display: flex;
399
- font-size: 0.8125rem;
400
- }
401
-
402
- .pages__sidebar-toggle-btn {
403
- background-color: var(--shadow-claw-bg-primary);
404
- border: 0.0625rem solid var(--shadow-claw-border-color);
405
- border-radius: 0.1875rem;
406
- color: var(--shadow-claw-accent-primary);
407
- cursor: pointer;
408
- padding: 0.25rem 0.5rem;
409
- transition: all 0.1s;
410
- }
411
-
412
- .pages__sidebar-toggle-btn:hover,
413
- .pages__sidebar-toggle-btn:focus-visible {
414
- background-color: var(--shadow-claw-bg-tertiary);
415
- border-color: var(--shadow-claw-accent-primary);
416
- outline: none;
417
- }
418
-
419
- .pages__drag-handle {
420
- color: var(--shadow-claw-text-tertiary);
421
- cursor: grab;
422
- flex: none;
423
- font-size: 0.875rem;
424
- line-height: 1;
425
- padding: 0.125rem 0.25rem;
426
- user-select: none;
427
- }
428
-
429
- .pages__drag-handle:hover {
430
- color: var(--shadow-claw-text-secondary);
431
- }
432
-
433
- .pages__drag-handle:active,
434
- .pages__list-item.dragging .pages__drag-handle {
435
- cursor: grabbing;
436
- }
437
-
438
- .pages__list-item.drag-over {
439
- border-color: var(--shadow-claw-accent-primary);
440
- box-shadow: 0 0 0 0.125rem var(--shadow-claw-accent-primary);
441
- }
442
-
443
- .pages__default-btn {
444
- background: transparent;
445
- border: none;
446
- color: var(--shadow-claw-text-tertiary);
447
- cursor: pointer;
448
- flex: none;
449
- font-size: 0.875rem;
450
- line-height: 1;
451
- padding: 0.125rem 0.25rem;
452
- }
453
-
454
- .pages__default-btn:hover,
455
- .pages__default-btn.is-default {
456
- color: var(--shadow-claw-accent-primary);
457
- }
458
-
459
- .pages__edit {
460
- background: transparent;
461
- border: none;
462
- color: var(--shadow-claw-text-secondary);
463
- cursor: pointer;
464
- flex: none;
465
- font-size: 0.875rem;
466
- line-height: 1;
467
- padding: 0.125rem 0.25rem;
468
- }
469
-
470
- .pages__edit:hover {
471
- color: var(--shadow-claw-text-primary);
472
- }
473
-
474
- /* Desktop breakpoint: show pages column side-by-side */
475
- @media (min-width: 75rem) {
476
- .pages__content {
477
- display: grid;
478
- grid-template-columns: minmax(14rem, 20rem) minmax(0, 1fr);
479
- grid-template-rows: minmax(0, 1fr);
480
- }
481
-
482
- .pages__content.pages__content--sidebar-collapsed {
483
- grid-template-columns: 1fr !important;
484
- }
485
-
486
- .pages__sidebar {
487
- border-right: 0.0625rem solid var(--shadow-claw-border-color);
488
- display: block;
489
- min-height: 0;
490
- overflow: auto;
491
- }
492
-
493
- .pages__sidebar.collapsed {
494
- display: none !important;
495
- }
496
-
497
- .pages__dropdown {
498
- display: none;
499
- }
500
-
501
- .pages__nav-btn--prev {
502
- left: 20.5rem;
503
- }
504
-
505
- .pages__content.pages__content--sidebar-collapsed .pages__nav-btn--prev {
506
- left: 0.5rem;
507
- }
508
- }
509
-
510
- shadow-claw-page-header {
511
- display: var(--shadow-claw-page-header-display, block);
512
- }
513
-
514
- ul {
515
- line-height: 1.5;
516
- }
517
-
518
- .pages__announcer {
519
- border: 0;
520
- clip: rect(0, 0, 0, 0);
521
- height: 0.0625rem;
522
- margin: -0.0625rem;
523
- overflow: hidden;
524
- padding: 0;
525
- position: absolute;
526
- white-space: nowrap;
527
- width: 0.0625rem;
528
- }
529
- `);const Z=new DOMParser().parseFromString(`<template>
530
- <section class="pages" aria-label="Pages">
531
- <div
532
- class="pages__announcer"
533
- data-pages-announcer
534
- aria-live="polite"
535
- aria-atomic="true"
536
- ></div>
537
- <shadow-claw-page-header icon="📚" title="Pages">
538
- <nav
539
- slot="breadcrumbs"
540
- class="pages__breadcrumbs"
541
- aria-label="Toggle pages sidebar"
542
- >
543
- <button
544
- type="button"
545
- class="pages__sidebar-toggle-btn"
546
- data-pages-sidebar-toggle
547
- title="Toggle pages list"
548
- >
549
- 📁 Pages
550
- </button>
551
- </nav>
552
- <div slot="status" class="pages__status" data-pages-status></div>
553
-
554
- <shadow-claw-page-header-action-button
555
- class="pages__remove-all-btn"
556
- slot="actions"
557
- title="Remove all saved pages"
558
- variant="danger"
559
- >
560
- 🗑️ Remove All
561
- </shadow-claw-page-header-action-button>
562
- </shadow-claw-page-header>
563
-
564
- <div class="pages__content pages__content--sidebar-collapsed">
565
- <aside class="pages__sidebar collapsed" aria-label="Saved pages">
566
- <div class="pages__list" data-pages-list role="list"></div>
567
- </aside>
568
-
569
- <button
570
- type="button"
571
- class="pages__nav-btn pages__nav-btn--prev"
572
- data-pages-prev
573
- aria-label="Previous page"
574
- hidden
575
- disabled
576
- >
577
- <svg
578
- xmlns="http://www.w3.org/2000/svg"
579
- width="20"
580
- height="20"
581
- viewBox="0 0 24 24"
582
- fill="none"
583
- stroke="currentColor"
584
- stroke-width="2"
585
- stroke-linecap="round"
586
- stroke-linejoin="round"
587
- >
588
- <path d="m15 18-6-6 6-6" />
589
- </svg>
590
- </button>
591
-
592
- <article class="pages__viewer" aria-label="Page preview">
593
- <div class="pages__viewer-scroll">
594
- <div class="pages__dropdown-container" data-pages-dropdown-container>
595
- <details class="pages__dropdown" data-pages-dropdown>
596
- <summary class="pages__dropdown-summary">
597
- <span
598
- class="pages__dropdown-selected"
599
- data-pages-dropdown-selected
600
- >Select a page...</span
601
- >
602
- <span class="pages__dropdown-arrow">▼</span>
603
- </summary>
604
- <div class="pages__dropdown-menu">
605
- <div class="pages__list" data-pages-list role="list"></div>
606
- </div>
607
- </details>
608
- </div>
609
-
610
- <div class="pages__empty" data-pages-empty>
611
- No pages yet. In Files, use "Set as Page" on a markdown or HTML
612
- file.
613
- </div>
614
- <div class="pages__rendered" data-pages-rendered hidden></div>
615
- </div>
616
- </article>
617
-
618
- <button
619
- type="button"
620
- class="pages__nav-btn pages__nav-btn--next"
621
- data-pages-next
622
- aria-label="Next page"
623
- hidden
624
- disabled
625
- >
626
- <svg
627
- xmlns="http://www.w3.org/2000/svg"
628
- width="20"
629
- height="20"
630
- viewBox="0 0 24 24"
631
- fill="none"
632
- stroke="currentColor"
633
- stroke-width="2"
634
- stroke-linecap="round"
635
- stroke-linejoin="round"
636
- >
637
- <path d="m9 18 6-6-6-6" />
638
- </svg>
639
- </button>
640
- </div>
641
- </section>
642
- </template>
643
- `,`text/html`),Q=Z.querySelector(`template`);let Qe=[];Qe=Q?Array.from(Q.content.children):Array.from(Z.head.children).concat(Array.from(Z.body.children));var $e=Qe;const et={ALLOWED_URI_REGEXP:/^(?:(?:https?|mailto|ftp|tel|file|blob|data):|[^a-z]|[a-z+.\-]+(?:[^a-z+.\-:]|$))/i,ADD_TAGS:[`iframe`,`figure`,`figcaption`,`script`],CUSTOM_ELEMENT_HANDLING:{tagNameCheck:e=>t(e),attributeNameCheck:()=>!0,allowCustomizedBuiltInElements:!1},ADD_ATTR:[`allow`,`allowfullscreen`,`frameborder`,`scrolling`,`referrerpolicy`,`loading`,`src`,`type`,`async`,`defer`]},tt=`shadow-claw-pages`;function $(e,t){return!e||!t?!1:e===t||e.replace(/^\/+/,``).replace(/^pages\/[^/]+\//,``)===t.replace(/^\/+/,``).replace(/^pages\/[^/]+\//,``)}var nt=class extends se{static styles=X;static template=$e;autoRefreshIntervalSec=0;autoRefreshTimer=null;broadcastProxy=null;db=null;draggedPageIndex=null;isMouseDown=!1;keyNavState={lastNavigationTime:0,lastDirection:null};mouseStartTime=0;mouseStartX=0;mouseStartY=0;navFadeTimer=null;pageFrontmatter=new S.State(null);previewFrameWindow=null;renderToken=0;sidebarOpen=!1;themeObserver=null;touchStartTime=0;touchStartX=0;touchStartY=0;dsdInitialPath=null;renderedContent=null;renderedFrontmatterToggle=null;renderedKey=null;routingReady=!1;constructor(){super()}async connectedCallback(){let e=this.shadowRoot;if(!e)throw Error(`shadowRoot not found`);if(document.documentElement.classList.contains(`sc-prerender-override`)){let t=e.querySelector(`[data-pages-rendered]`);t instanceof HTMLElement&&(t.hidden=!0,t.textContent=``)}else{let t=e.querySelector(`[data-pages-rendered]`),n=t instanceof HTMLElement?t.getAttribute(`data-initial-path`)?.trim():null,r=e.querySelector(`[data-pages-dropdown-selected]`)?.textContent?.trim();n?this.dsdInitialPath=n:r&&r!==`Select a page...`&&(this.dsdInitialPath=r)}this.db=await y(),await O.whenInitialized,this.broadcastProxy=new pe(()=>this.previewFrameWindow||this.shadowRoot?.querySelector(`[data-pages-iframe]`)?.contentWindow||null),window.addEventListener(`message`,this.handleIframeMessage),document.addEventListener(`visibilitychange`,this.handleVisibilityChange),window.addEventListener(`focus`,this.handleWindowFocus),window.addEventListener(`shadow-claw-pages-auto-refresh-change`,this.handleAutoRefreshConfigChange),document.addEventListener(`shadow-claw-file-saved`,this.handleFileSaved),document.addEventListener(`keydown`,this.handleKeyDown),e.addEventListener(`click`,t=>{let n=e.querySelector(`[data-pages-dropdown]`);if(n instanceof HTMLDetailsElement&&n.open){let r=t.target,i=e.querySelector(`[data-pages-sidebar-toggle]`);!n.contains(r)&&(!i||!i.contains(r))&&n.removeAttribute(`open`)}});let t=e.querySelector(`.pages__viewer`),n=e.querySelector(`.pages__viewer-scroll`),r=()=>{this.showNavButtonsTemporarily(2e3)};t instanceof HTMLElement&&(t.addEventListener(`pointermove`,r,{passive:!0}),t.addEventListener(`pointerdown`,r,{passive:!0}),t.addEventListener(`touchstart`,r,{passive:!0}),t.addEventListener(`touchstart`,this.handleTouchStart,{passive:!0}),t.addEventListener(`touchend`,this.handleTouchEnd,{passive:!0}),t.addEventListener(`mousedown`,this.handleMouseDown,{passive:!0}),t.addEventListener(`mouseup`,this.handleMouseUp,{passive:!0}),t.addEventListener(`click`,r,{passive:!0}),t.addEventListener(`focusin`,r,{passive:!0})),n instanceof HTMLElement&&n.addEventListener(`scroll`,r,{passive:!0});let i=e.querySelector(`[data-pages-sidebar-toggle]`);i&&i.addEventListener(`click`,()=>{this.toggleSidebar()});let a=e.querySelector(`.pages__remove-all-btn`);a&&a.addEventListener(`click`,()=>{this.handleRemoveAll()});let o=e.querySelector(`[data-pages-prev]`);o&&o.addEventListener(`click`,()=>{this.goToPreviousPage()});let s=e.querySelector(`[data-pages-next]`);s&&s.addEventListener(`click`,()=>{this.goToNextPage()}),this.toggleSidebar(this.sidebarOpen),this.setupEffects(),this.themeObserver=new MutationObserver(e=>{for(let t of e)t.type===`attributes`&&t.attributeName===`class`&&this.syncIframeTheme()}),this.themeObserver.observe(document.documentElement,{attributes:!0,attributeFilter:[`class`]}),await O.whenReady,this.routingReady=!0,this.renderSelectedPage(),this.setupAutoRefreshTimer()}disconnectedCallback(){this.renderedKey=null,this.renderedContent=null,this.renderedFrontmatterToggle=null,this.dsdInitialPath=null,this.themeObserver&&=(this.themeObserver.disconnect(),null),this.navFadeTimer!==null&&(clearTimeout(this.navFadeTimer),this.navFadeTimer=null),this.autoRefreshTimer!==null&&(clearInterval(this.autoRefreshTimer),this.autoRefreshTimer=null),window.removeEventListener(`message`,this.handleIframeMessage),document.removeEventListener(`visibilitychange`,this.handleVisibilityChange),window.removeEventListener(`focus`,this.handleWindowFocus),window.removeEventListener(`shadow-claw-pages-auto-refresh-change`,this.handleAutoRefreshConfigChange),document.removeEventListener(`shadow-claw-file-saved`,this.handleFileSaved),document.removeEventListener(`keydown`,this.handleKeyDown),this.keyNavState={lastNavigationTime:0,lastDirection:null},this.broadcastProxy?.dispose(),this.broadcastProxy=null,this.previewFrameWindow=null,super.disconnectedCallback?.()}announcePageChange(e){let t=this.shadowRoot;if(!t)return;let n=t.querySelector(`[data-pages-announcer]`);n instanceof HTMLElement&&ye(e,this.pageFrontmatter.get()?.title,n)}goToNextPage(){let e=O.pages,t=H(this.selectedPage,e);t>=0&&t<e.length-1&&this.navigateToPage(e[t+1])}goToPreviousPage(){let e=O.pages,t=H(this.selectedPage,e);t>0&&this.navigateToPage(e[t-1])}handleAnchorNavigation(e){let t=this.shadowRoot;return t?Ae(e,t.querySelector(`[data-pages-rendered]`)):!1}handleAutoRefreshConfigChange=e=>{let t=je(e);t!==null&&(this.autoRefreshIntervalSec=t),this.setupAutoRefreshTimer()};handleFileSaved=e=>{Ne(e,this.selectedPage)&&this.renderSelectedPage()};handleIframeMessage=e=>{let t=Ge(e.data);if(!t)return;if(t.kind===`broadcast-result`){this.broadcastProxy?.handleResultFromIframe(e.source,t.channel,t.payload);return}if(t.kind===`storage-proxy`){if(this.previewFrameWindow&&e.source!==this.previewFrameWindow)return;let n=this.selectedPage?.path||`__default__`;Te(e.source,t.requestId,t.method,t.args,n);return}if(t.kind===`swipe`){if(this.previewFrameWindow&&e.source!==this.previewFrameWindow)return;this.showNavButtonsTemporarily(2e3),t.direction===`left`?this.goToNextPage():t.direction===`right`&&this.goToPreviousPage();return}if(t.kind===`iframe-resize`){let n=this.shadowRoot?.querySelector(`[data-pages-iframe]`);n instanceof HTMLIFrameElement&&(!this.previewFrameWindow||e.source===this.previewFrameWindow||n.contentWindow&&e.source===n.contentWindow)&&(this.previewFrameWindow=n.contentWindow,n.style.setProperty(`height`,`${t.height}px`,`important`));return}if(!this.db||t.kind!==`file-viewer-link`||this.previewFrameWindow&&e.source!==this.previewFrameWindow)return;let n=this.selectedPage?.path||``,r=this.selectedPage?.groupId||O.activeGroupId,i=g(v(r,n)),a=m(t.href,i,window.location.origin);if(!a)return;if(a.searchParams.has(`gameSave`)){this.reloadPreviewWithSearchParams(a.search);return}if(a.origin!==window.location.origin||!h(a.pathname)&&!R(t.href,n,r)){window.open(a.href,`_blank`,`noopener,noreferrer`);return}let o=`${a.pathname}${a.search}${a.hash}`,s=window.navigation;s&&typeof s.navigate==`function`?s.navigate(o):(window.history.pushState({},``,o),window.dispatchEvent(new PopStateEvent(`popstate`)))};handleKeyDown=e=>{Fe(e,this.isConnected,this.shadowRoot,e=>{this.showNavButtonsTemporarily(2e3),e===`previous`?this.goToPreviousPage():this.goToNextPage()},this.keyNavState)};handleMouseDown=e=>{let t=Ie(e,U(e));this.mouseStartX=t.mouseStartX,this.mouseStartY=t.mouseStartY,this.mouseStartTime=t.mouseStartTime,this.isMouseDown=t.isMouseDown};handleMouseUp=e=>{let t=window.getSelection(),n=!!(t&&t.toString().length>0),r=Le(e,{mouseStartX:this.mouseStartX,mouseStartY:this.mouseStartY,mouseStartTime:this.mouseStartTime,isMouseDown:this.isMouseDown},U(e),n);this.isMouseDown=!1,r&&(this.showNavButtonsTemporarily(2e3),r===`next`?this.goToNextPage():this.goToPreviousPage())};handleTouchEnd=e=>{let t=Be(e,{touchStartX:this.touchStartX,touchStartY:this.touchStartY,touchStartTime:this.touchStartTime},U(e));t&&(this.showNavButtonsTemporarily(2e3),t===`next`?this.goToNextPage():this.goToPreviousPage()),this.touchStartTime=0};handleTouchStart=e=>{let t=Ve(e,U(e));t&&(this.touchStartX=t.touchStartX,this.touchStartY=t.touchStartY,this.touchStartTime=t.touchStartTime)};handleVisibilityChange=()=>{let e=He(document.hidden,this.isConnected,this.autoRefreshTimer!==null);e===`render-and-timer`?(this.renderSelectedPage(),this.setupAutoRefreshTimer()):e===`clear-timer`&&this.autoRefreshTimer!==null&&(clearInterval(this.autoRefreshTimer),this.autoRefreshTimer=null)};handleWindowFocus=()=>{Ue(document.hidden,this.isConnected)&&this.renderSelectedPage()};navigateToPage(e){(typeof O.isPageAllowed!=`function`||O.isPageAllowed(e.path,e.groupId))&&(this.selectedPage=e,this.showNavButtonsTemporarily(2500),this.announcePageChange(e),document.dispatchEvent(new CustomEvent(`shadow-claw-navigate`,{detail:{page:`pages`,groupId:e.groupId,path:e.path},bubbles:!0,composed:!0})))}renderPageList(e,t){let n=this.shadowRoot;if(!n)return;let r=n.querySelector(`[data-pages-status]`);r instanceof HTMLElement&&(r.textContent=e.length===1?`1 saved page`:`${e.length} saved pages`);let i=n.querySelector(`.pages__remove-all-btn`);i&&i.toggleAttribute(`disabled`,e.length===0);let a=n.querySelector(`[data-pages-dropdown-selected]`);a instanceof HTMLElement&&(a.textContent=this.selectedPage?this.selectedPage.path:`Select a page...`);let o=n.querySelectorAll(`[data-pages-list]`);if(o.length===0)return;o.forEach(e=>{e instanceof HTMLElement&&e.replaceChildren()});let s=n.querySelector(`[data-pages-prev]`),c=n.querySelector(`[data-pages-next]`),l=n.querySelector(`shadow-claw-page-header`),u=this.pageFrontmatter.get();if(l){if(u&&u.title){if(this.selectedPage){let e=g(_({page:`pages`,groupId:this.selectedPage.groupId,path:this.selectedPage.path})),t=e;if(typeof window<`u`&&window.location?.origin)try{t=new URL(e,window.location.origin).href}catch{}l.setAttribute(`page-title`,`<a href="${t}">${u.title}</a>`),l.setAttribute(`title`,u.title)}else l.setAttribute(`page-title`,u.title),l.setAttribute(`title`,u.title)}else l.setAttribute(`page-title`,`Pages`),l.setAttribute(`title`,`Pages`)}if(typeof document<`u`){let e=w(),t=u?.title||(this.selectedPage?``:void 0);document.title=ve({pageTitle:t,siteTitle:e.siteTitle,separator:e.separator,titleTemplate:e.titleTemplate,isHome:!this.selectedPage})}if(s instanceof HTMLButtonElement&&c instanceof HTMLButtonElement){let{isPrevDisabled:t,isNextDisabled:n}=Se(H(this.selectedPage,e),e.length);s.disabled=t,s.hidden=t,c.disabled=n,c.hidden=n}if(e.length===0)return;let d=new Map(t.map(e=>[e.groupId,e.name])),f=ke(e);o.forEach(t=>{if(!(t instanceof HTMLElement))return;let n=document.createDocumentFragment();for(let[r,i]of f){let a=document.createElement(`details`);a.className=`pages__group-details`;let o=`shadow-claw-pages-group-collapsed-${r}`,s=!1;try{s=E(o)===`true`}catch{}s||(a.open=!0),a.addEventListener(`toggle`,()=>{try{a.open?re(o):ee(o,`true`)}catch{}});let c=document.createElement(`summary`);c.className=`pages__group-label`;let l=document.createElement(`span`);l.textContent=d.get(r)||r;let u=document.createElement(`span`);u.className=`pages__group-icon`,u.textContent=`▼`,c.appendChild(l),c.appendChild(u),a.appendChild(c);let f=document.createElement(`div`);f.className=`pages__group-pages`,i.forEach(n=>{let i=n.path,a=e.findIndex(e=>e.path===n.path&&e.groupId===n.groupId),o=document.createElement(`div`);o.className=`pages__list-item`,this.selectedPage&&V(n)===V(this.selectedPage)&&o.classList.add(`active`);let s=document.createElement(`span`);s.className=`pages__drag-handle`,s.setAttribute(`draggable`,`true`),s.title=`Drag to reorder`,s.textContent=`⠿`,s.addEventListener(`dragstart`,e=>{this.draggedPageIndex=a,o.classList.add(`dragging`),e.dataTransfer&&(e.dataTransfer.effectAllowed=`move`)}),o.addEventListener(`dragend`,()=>{this.draggedPageIndex=null,o.classList.remove(`dragging`)}),o.addEventListener(`dragover`,e=>{e.preventDefault(),this.draggedPageIndex!==null&&this.draggedPageIndex!==a&&o.classList.add(`drag-over`)}),o.addEventListener(`dragleave`,()=>{o.classList.remove(`drag-over`)}),o.addEventListener(`drop`,e=>{e.preventDefault(),o.classList.remove(`drag-over`),this.draggedPageIndex!==null&&this.draggedPageIndex!==a&&this.handleReorder(this.draggedPageIndex,a)});let c=O.effectiveDefaultPage,l=c&&c.path===n.path&&c.groupId===n.groupId,u=document.createElement(`button`);u.type=`button`,u.className=`pages__select`,u.title=`Open ${i}`;let p=document.createElement(`span`);p.className=`pages__list-path`,p.textContent=i,u.appendChild(p),u.addEventListener(`click`,()=>{this.selectedPage=n,this.renderPageList(O.pages,O.groups),this.renderSelectedPage(),this.sidebarOpen=!1;let e=t.closest(`details`);e&&e.removeAttribute(`open`),document.dispatchEvent(new CustomEvent(`shadow-claw-navigate`,{detail:{page:`pages`,groupId:n.groupId,path:n.path},bubbles:!0,composed:!0}))});let m=document.createElement(`button`);m.className=`pages__edit`,m.type=`button`,m.title=`Edit in file editor`,m.setAttribute(`aria-label`,`Edit ${i} in file editor`),m.textContent=`✏️`,m.addEventListener(`click`,async e=>{if(e.stopPropagation(),this.db)try{await ce.openFile(this.db,i,r)}catch(e){let t=e instanceof Error?e.message:String(e);M(`Failed to edit file: ${t}`,4500)}});let h=document.createElement(`button`);if(h.className=`pages__remove`,h.type=`button`,h.title=`Remove from Pages`,h.setAttribute(`aria-label`,`Remove ${i} from Pages in ${d.get(r)||r}`),h.textContent=`✕`,h.addEventListener(`click`,async e=>{if(e.stopPropagation(),this.db&&await q({title:`Remove Page`,message:`Are you sure you want to remove this page from Pages?\n\n${i}`,confirmLabel:`Remove`,cancelLabel:`Cancel`}))try{await O.removePage(this.db,i,r),j(`Removed ${i} from Pages`,2400)}catch(e){let t=e instanceof Error?e.message:String(e);M(`Failed to remove page: ${t}`,4500)}}),o.appendChild(s),l){let e=document.createElement(`span`);e.className=`pages__default-btn is-default`,e.title=`Default page`,e.textContent=`⭐`,o.appendChild(e)}o.appendChild(u),o.appendChild(m),o.appendChild(h),f.appendChild(o)}),a.appendChild(f),n.appendChild(a)}t.appendChild(n)})}rewriteWorkspacePreviewHtml(e,t){let n=this.selectedPage?.groupId||O.activeGroupId;return z(e,t,g(v(n,t)),n,window.location.origin)}get selectedPage(){return O.activePinnedPage}set selectedPage(e){V(e)!==V(this.selectedPage)&&(this.db?O.setActivePinnedPage(this.db,e):O._activePinnedPage.set(e),e&&this.announcePageChange(e),this.renderPageList(O.pages,O.groups),this.renderSelectedPage())}setupEffects(){this.addCleanup(N(()=>{let e=ie.declarativeTools;this.broadcastProxy&&e.length>0&&this.broadcastProxy.registerChannelsFromTools(e)})),this.addCleanup(N(()=>{let e=O.pages,t=O.groups;this.renderPageList(e,t)})),this.addCleanup(N(()=>{let e=O.pages,t=O.activePinnedPage;e.length===0?t!==null&&(this.selectedPage=null):t?e.some(e=>V(e)===V(t))||typeof O.isPageAllowed==`function`&&!O.isPageAllowed(t.path,t.groupId)&&(this.selectedPage=O.effectiveDefaultPage||e[0]):this.selectedPage=O.effectiveDefaultPage||e[0],this.routingReady&&this.renderSelectedPage()}))}showNavButtonsTemporarily(e=2500){let t=this.shadowRoot;if(!t)return;let n=t.querySelector(`.pages__viewer`);n instanceof HTMLElement&&n.classList.add(`pages__viewer--nav-visible`),this.navFadeTimer!==null&&clearTimeout(this.navFadeTimer),this.navFadeTimer=setTimeout(()=>{this.navFadeTimer=null,n instanceof HTMLElement&&n.classList.remove(`pages__viewer--nav-visible`)},e)}toggleSidebar(e){this.sidebarOpen=Ze({root:this.shadowRoot,currentOpen:this.sidebarOpen,force:e})}async buildHtmlPageSrcdoc(e,t,n=``){return await xe({content:e,filePath:t,searchParams:n,groupId:this.selectedPage?.groupId||O.activeGroupId,origin:typeof window<`u`?window.location?.origin:``,resolveRelativeImagesInHtmlFn:(e,t,n)=>this.resolveRelativeImagesInHtml(e,t,n)})}async handleRemoveAll(){let e=this.shadowRoot?.querySelector(`.pages__remove-all-btn`);try{e?.toggleAttribute(`disabled`,!0),e&&(e.textContent=`⏳`),await Ce(this.db,e=>q(e))&&j(`Removed all pages from Pages`,2400)}catch(e){let t=e instanceof Error?e.message:String(e);M(`Failed to remove all pages: ${t}`,4500),console.error(`Remove all pages error:`,e)}finally{e?.toggleAttribute(`disabled`,!1),e&&(e.textContent=`🗑️ Remove All`)}}async handleReorder(e,t){let n=await ze({db:this.db,currentPages:O.pages,fromIndex:e,toIndex:t});n.movedToFirst&&(this.selectedPage=n.movedToFirst,this.renderSelectedPage(),document.dispatchEvent(new CustomEvent(`shadow-claw-navigate`,{detail:{page:`pages`,groupId:n.movedToFirst.groupId,path:n.movedToFirst.path},bubbles:!0,composed:!0})))}async renderSelectedPage(){let e=this.shadowRoot;if(!e)return;this.db||=await y();let t=e.querySelector(`[data-pages-empty]`),n=e.querySelector(`[data-pages-rendered]`);if(!(t instanceof HTMLElement)||!(n instanceof HTMLElement))return;let o=this.selectedPage;if(!this.db||!o||typeof O.isPageAllowed==`function`&&!O.isPageAllowed(o.path,o.groupId)){this.renderedKey=null,this.renderedContent=null,this.renderedFrontmatterToggle=null,t.hidden=!1,n.hidden=!0,n.textContent=``,this.pageFrontmatter.set(null),K(e);return}let s=++this.renderToken,u=`${o.groupId}:${o.path}`;if(this.renderedKey===u&&this.dsdInitialPath&&$(this.dsdInitialPath,o.path)&&G(o.path)&&n.children.length>0&&!n.hidden)this.showNavButtonsTemporarily(2500);else if(!this.renderedKey&&this.dsdInitialPath&&$(this.dsdInitialPath,o.path)&&n.children.length>0&&!n.hidden&&G(o.path))this.renderedKey=u,t.hidden=!0,n.hidden=!1,this.renderedFrontmatterToggle=null,K(e),this.showNavButtonsTemporarily(2500),(async()=>{try{let e;try{e=await A(this.db,o.groupId,o.path)}catch{let t=await D(o.path);if(typeof t==`string`)e=t;else return}if(s===this.renderToken){this.renderedContent=e;let t=P(e);Object.keys(t.data).length>0&&this.pageFrontmatter.set(t.data);let r=await J(this.db,f.MARKDOWN_FRONTMATTER_PAGES);this.renderedFrontmatterToggle=r,await this.resolveMarkdownImages(n,o.groupId,o.path)}}catch{}})();else try{let u;try{u=await A(this.db,o.groupId,o.path)}catch(e){try{let t=await D(o.path);if(typeof t==`string`)u=t,Promise.resolve(k(this.db,o.groupId,o.path,u)).catch(()=>{});else throw e}catch{throw e}}if(s!==this.renderToken)return;t.hidden=!0;let d=`${o.groupId}:${o.path}`;if(!this.renderedKey&&this.dsdInitialPath&&$(this.dsdInitialPath,o.path)&&n.children.length>0&&!n.hidden&&G(o.path)){this.renderedKey=d,this.renderedContent=u;let e=P(u),t=Object.keys(e.data).length>0?e.data:null,r=this.pageFrontmatter.get();JSON.stringify(r)!==JSON.stringify(t)&&this.pageFrontmatter.set(t);let i=await J(this.db,f.MARKDOWN_FRONTMATTER_PAGES);this.renderedFrontmatterToggle=i,await this.resolveMarkdownImages(n,o.groupId,o.path),this.showNavButtonsTemporarily(2500);return}if(We(o.path)){let t=P(u),r=Object.keys(t.data).length>0?t.data:null,i=this.pageFrontmatter.get();if(JSON.stringify(i)!==JSON.stringify(r)&&this.pageFrontmatter.set(r),this.renderedKey===d&&(this.renderedContent===u||this.renderedContent===null)&&e.querySelector(`[data-pages-iframe]`)){this.renderedContent===null&&(this.renderedContent=u),this.showNavButtonsTemporarily(2500);return}this.renderedKey=d,this.renderedContent=u,this.renderedFrontmatterToggle=null;let s=this.ensurePreviewIframe(e,n);this.previewFrameWindow=null,a(s,await this.buildHtmlPageSrcdoc(t.content,o.path)),n.children.length>0&&!n.hidden&&(_e.default===void 0||1)?await new Promise(e=>{let t=!1,r=()=>{t||(t=!0,s.removeEventListener(`load`,r),s.removeEventListener(`error`,r),n.hidden=!0,s.hidden=!1,e())};s.addEventListener(`load`,r,{once:!0}),s.addEventListener(`error`,r,{once:!0}),setTimeout(r,3e3)}):(n.hidden=!0,s.hidden=!1),this.showNavButtonsTemporarily(2500);return}if(K(e),G(o.path)){let e=P(u),t=Object.keys(e.data).length>0?e.data:null,a=this.pageFrontmatter.get();JSON.stringify(a)!==JSON.stringify(t)&&this.pageFrontmatter.set(t);let p=await J(this.db,f.MARKDOWN_FRONTMATTER_PAGES);if(this.renderedKey===d&&this.renderedContent===u&&this.renderedFrontmatterToggle===p&&n.children.length>0&&!n.hidden){this.showNavButtonsTemporarily(2500);return}this.renderedKey=d,this.renderedContent=u,this.renderedFrontmatterToggle=p,n.hidden=!1;let{renderMarkdown:m}=await import(`./markdown-BeglYzw9.js`),h=await m(u,{renderFrontmatter:p});if(s!==this.renderToken)return;let _=[],y=/<script\b[^>]*\bsrc=["']([^"']+)["'][^>]*>/gi,b;for(;(b=y.exec(h))!==null;){let e=b[1];e&&l(e)&&_.push(e)}let x=c();if(await Promise.all(_.map(async e=>{if(await r(e),x.find(t=>t.src===e)?.hasInit)try{let t=await import(
644
- /* @vite-ignore */
645
- e);typeof t?.init==`function`&&await t.init()}catch(t){console.error(`[ShadowClaw] Error executing init for `+e,t)}})),s!==this.renderToken)return;let S=g(v(o.groupId,o.path)),C=z(h,o.path,S,o.groupId,window.location.origin);if(s!==this.renderToken)return;i(n,C,et),await this.resolveMarkdownImages(n,o.groupId,o.path),this.showNavButtonsTemporarily(2500);return}if(this.renderedKey===d&&this.renderedContent===u&&!n.hidden){this.showNavButtonsTemporarily(2500);return}this.renderedKey=d,this.renderedContent=u,this.renderedFrontmatterToggle=null,this.pageFrontmatter.set(null),n.hidden=!1,n.textContent=u,this.showNavButtonsTemporarily(2500)}catch(r){this.renderedKey=null,this.renderedContent=null,this.renderedFrontmatterToggle=null,t.hidden=!1,n.hidden=!0,n.textContent=``,this.pageFrontmatter.set(null),K(e);let i=r instanceof Error?r.message:String(r);M(`Failed to load page ${o.path}: ${i}`,5e3)}}async resolveMarkdownImages(e,t,n){await Ye({container:e,groupId:t,filePath:n,groups:Array.isArray(O.groups)?O.groups:[],readImageAsDataUrlFn:(e,t)=>Ke({db:this.db,groupId:e,workspacePath:t})})}async resolveRelativeImagesInHtml(e,t,n){if(!e)return e;let r=new DOMParser().parseFromString(e,`text/html`);return await this.resolveMarkdownImages(r.body,n,t),r.body.innerHTML}async setupAutoRefreshTimer(){if(this.autoRefreshTimer!==null&&(clearInterval(this.autoRefreshTimer),this.autoRefreshTimer=null),!this.db)return;let e=await Oe(this.db,b);this.autoRefreshIntervalSec=e,Y(e,document.hidden,this.isConnected)&&(this.autoRefreshTimer=setInterval(()=>{Y(e,document.hidden,this.isConnected)&&this.renderSelectedPage()},e*1e3))}ensurePreviewIframe(e,t){return Ee({root:e,rendered:t,selectedPath:this.selectedPage?.path,onIframeLoad:e=>{this.previewFrameWindow=e,this.syncIframeTheme()}})}syncIframeTheme(){Xe(this.previewFrameWindow)}async reloadPreviewWithSearchParams(e){if(!this.selectedPage||!this.renderedContent)return;let t=this.shadowRoot,n=t?.querySelector(`[data-pages-rendered]`)||t?.querySelector(`#rendered`);if(!t||!n)return;let r=P(this.renderedContent),i=this.ensurePreviewIframe(t,n);i.hidden=!1,this.previewFrameWindow=null,a(i,await this.buildHtmlPageSrcdoc(r.content,this.selectedPage.path,e))}};customElements.get(tt)||customElements.define(tt,nt);export{nt as ShadowClawPages};