@inkandswitch/patchwork-pkg-base 0.0.15 → 0.0.17

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 (383) hide show
  1. package/init.js +1 -0
  2. package/modules.json +11 -1
  3. package/package.json +1 -1
  4. package/packages/account-picker/dist/AccountPicker-7VBUJTTB.js +8860 -0
  5. package/packages/account-picker/dist/AccountPicker-7VBUJTTB.js.map +7 -0
  6. package/packages/account-picker/dist/AccountPicker-CN73XGEW.css +371 -0
  7. package/packages/account-picker/dist/AccountPicker-CN73XGEW.css.map +7 -0
  8. package/packages/account-picker/dist/chunk-5WRI5ZAA.js +31 -0
  9. package/packages/account-picker/dist/chunk-5WRI5ZAA.js.map +7 -0
  10. package/packages/account-picker/dist/tool.css +371 -0
  11. package/packages/account-picker/dist/tool.css.map +7 -0
  12. package/packages/account-picker/dist/tool.js +19 -0
  13. package/packages/account-picker/dist/tool.js.map +7 -0
  14. package/packages/account-picker/package.json +39 -0
  15. package/packages/codemirror-base/dist/chunk-KMEIRH3R.js +490 -0
  16. package/packages/codemirror-base/dist/chunk-KMEIRH3R.js.map +7 -0
  17. package/packages/codemirror-base/dist/lib/codemirror.js +7 -0
  18. package/packages/codemirror-base/dist/lib/codemirror.js.map +7 -0
  19. package/packages/codemirror-base/dist/main.js +17 -0
  20. package/packages/codemirror-base/dist/main.js.map +7 -0
  21. package/packages/codemirror-base/dist/tool.js +1799 -0
  22. package/packages/codemirror-base/dist/tool.js.map +7 -0
  23. package/packages/codemirror-base/package.json +55 -0
  24. package/packages/codemirror-markdown/dist/apl-QAIM2KBM.js +142 -0
  25. package/packages/codemirror-markdown/dist/apl-QAIM2KBM.js.map +7 -0
  26. package/packages/codemirror-markdown/dist/asciiarmor-G7UKQURA.js +58 -0
  27. package/packages/codemirror-markdown/dist/asciiarmor-G7UKQURA.js.map +7 -0
  28. package/packages/codemirror-markdown/dist/asn1-JTUXKWKT.js +144 -0
  29. package/packages/codemirror-markdown/dist/asn1-JTUXKWKT.js.map +7 -0
  30. package/packages/codemirror-markdown/dist/asterisk-NM6JCXOL.js +351 -0
  31. package/packages/codemirror-markdown/dist/asterisk-NM6JCXOL.js.map +7 -0
  32. package/packages/codemirror-markdown/dist/brainfuck-X7FFM55E.js +55 -0
  33. package/packages/codemirror-markdown/dist/brainfuck-X7FFM55E.js.map +7 -0
  34. package/packages/codemirror-markdown/dist/chunk-46Z6CXSY.js +1062 -0
  35. package/packages/codemirror-markdown/dist/chunk-46Z6CXSY.js.map +7 -0
  36. package/packages/codemirror-markdown/dist/chunk-6JT2ASRP.js +1111 -0
  37. package/packages/codemirror-markdown/dist/chunk-6JT2ASRP.js.map +7 -0
  38. package/packages/codemirror-markdown/dist/chunk-CSJO4DNL.js +1424 -0
  39. package/packages/codemirror-markdown/dist/chunk-CSJO4DNL.js.map +7 -0
  40. package/packages/codemirror-markdown/dist/chunk-FLC3A4DL.js +133 -0
  41. package/packages/codemirror-markdown/dist/chunk-FLC3A4DL.js.map +7 -0
  42. package/packages/codemirror-markdown/dist/chunk-M3X2FRO3.js +998 -0
  43. package/packages/codemirror-markdown/dist/chunk-M3X2FRO3.js.map +7 -0
  44. package/packages/codemirror-markdown/dist/chunk-MAW6NPUW.js +4930 -0
  45. package/packages/codemirror-markdown/dist/chunk-MAW6NPUW.js.map +7 -0
  46. package/packages/codemirror-markdown/dist/chunk-MBTMKYFQ.js +1779 -0
  47. package/packages/codemirror-markdown/dist/chunk-MBTMKYFQ.js.map +7 -0
  48. package/packages/codemirror-markdown/dist/chunk-NEI7FGV4.js +697 -0
  49. package/packages/codemirror-markdown/dist/chunk-NEI7FGV4.js.map +7 -0
  50. package/packages/codemirror-markdown/dist/chunk-PPGERYN5.js +2528 -0
  51. package/packages/codemirror-markdown/dist/chunk-PPGERYN5.js.map +7 -0
  52. package/packages/codemirror-markdown/dist/clike-DOBZTBQN.js +808 -0
  53. package/packages/codemirror-markdown/dist/clike-DOBZTBQN.js.map +7 -0
  54. package/packages/codemirror-markdown/dist/clojure-PTADSDNF.js +851 -0
  55. package/packages/codemirror-markdown/dist/clojure-PTADSDNF.js.map +7 -0
  56. package/packages/codemirror-markdown/dist/cmake-5HAC7YMH.js +73 -0
  57. package/packages/codemirror-markdown/dist/cmake-5HAC7YMH.js.map +7 -0
  58. package/packages/codemirror-markdown/dist/cobol-HAM4C42S.js +131 -0
  59. package/packages/codemirror-markdown/dist/cobol-HAM4C42S.js.map +7 -0
  60. package/packages/codemirror-markdown/dist/coffeescript-IBRKASSJ.js +310 -0
  61. package/packages/codemirror-markdown/dist/coffeescript-IBRKASSJ.js.map +7 -0
  62. package/packages/codemirror-markdown/dist/commonlisp-KMRPB5EW.js +132 -0
  63. package/packages/codemirror-markdown/dist/commonlisp-KMRPB5EW.js.map +7 -0
  64. package/packages/codemirror-markdown/dist/crystal-2MDF4EKJ.js +400 -0
  65. package/packages/codemirror-markdown/dist/crystal-2MDF4EKJ.js.map +7 -0
  66. package/packages/codemirror-markdown/dist/css-VQQXA3AY.js +1795 -0
  67. package/packages/codemirror-markdown/dist/css-VQQXA3AY.js.map +7 -0
  68. package/packages/codemirror-markdown/dist/cypher-ZZEGDGDJ.js +123 -0
  69. package/packages/codemirror-markdown/dist/cypher-ZZEGDGDJ.js.map +7 -0
  70. package/packages/codemirror-markdown/dist/d-5S6PJOOT.js +187 -0
  71. package/packages/codemirror-markdown/dist/d-5S6PJOOT.js.map +7 -0
  72. package/packages/codemirror-markdown/dist/datatype.js +48 -0
  73. package/packages/codemirror-markdown/dist/datatype.js.map +7 -0
  74. package/packages/codemirror-markdown/dist/diff-S77XBOWF.js +27 -0
  75. package/packages/codemirror-markdown/dist/diff-S77XBOWF.js.map +7 -0
  76. package/packages/codemirror-markdown/dist/dist-2C6IPJHB.js +98 -0
  77. package/packages/codemirror-markdown/dist/dist-2C6IPJHB.js.map +7 -0
  78. package/packages/codemirror-markdown/dist/dist-2H653DKD.js +170 -0
  79. package/packages/codemirror-markdown/dist/dist-2H653DKD.js.map +7 -0
  80. package/packages/codemirror-markdown/dist/dist-2O4EI6YQ.js +140 -0
  81. package/packages/codemirror-markdown/dist/dist-2O4EI6YQ.js.map +7 -0
  82. package/packages/codemirror-markdown/dist/dist-2UJRV4FH.js +75 -0
  83. package/packages/codemirror-markdown/dist/dist-2UJRV4FH.js.map +7 -0
  84. package/packages/codemirror-markdown/dist/dist-52S6W6Z3.js +15 -0
  85. package/packages/codemirror-markdown/dist/dist-52S6W6Z3.js.map +7 -0
  86. package/packages/codemirror-markdown/dist/dist-5KN6ODPO.js +340 -0
  87. package/packages/codemirror-markdown/dist/dist-5KN6ODPO.js.map +7 -0
  88. package/packages/codemirror-markdown/dist/dist-BOGB4NCA.js +20 -0
  89. package/packages/codemirror-markdown/dist/dist-BOGB4NCA.js.map +7 -0
  90. package/packages/codemirror-markdown/dist/dist-DZ4PW5HP.js +318 -0
  91. package/packages/codemirror-markdown/dist/dist-DZ4PW5HP.js.map +7 -0
  92. package/packages/codemirror-markdown/dist/dist-FDBKXKIA.js +100 -0
  93. package/packages/codemirror-markdown/dist/dist-FDBKXKIA.js.map +7 -0
  94. package/packages/codemirror-markdown/dist/dist-G2KVVLNT.js +381 -0
  95. package/packages/codemirror-markdown/dist/dist-G2KVVLNT.js.map +7 -0
  96. package/packages/codemirror-markdown/dist/dist-HHNZE2GE.js +193 -0
  97. package/packages/codemirror-markdown/dist/dist-HHNZE2GE.js.map +7 -0
  98. package/packages/codemirror-markdown/dist/dist-HNH74YPL.js +32 -0
  99. package/packages/codemirror-markdown/dist/dist-HNH74YPL.js.map +7 -0
  100. package/packages/codemirror-markdown/dist/dist-LBQUKRIG.js +27 -0
  101. package/packages/codemirror-markdown/dist/dist-LBQUKRIG.js.map +7 -0
  102. package/packages/codemirror-markdown/dist/dist-MFKCWPLQ.js +416 -0
  103. package/packages/codemirror-markdown/dist/dist-MFKCWPLQ.js.map +7 -0
  104. package/packages/codemirror-markdown/dist/dist-NISFJM3T.js +423 -0
  105. package/packages/codemirror-markdown/dist/dist-NISFJM3T.js.map +7 -0
  106. package/packages/codemirror-markdown/dist/dist-Q7P6VH6H.js +786 -0
  107. package/packages/codemirror-markdown/dist/dist-Q7P6VH6H.js.map +7 -0
  108. package/packages/codemirror-markdown/dist/dist-RWF5A5GN.js +451 -0
  109. package/packages/codemirror-markdown/dist/dist-RWF5A5GN.js.map +7 -0
  110. package/packages/codemirror-markdown/dist/dist-UHUU7KLC.js +748 -0
  111. package/packages/codemirror-markdown/dist/dist-UHUU7KLC.js.map +7 -0
  112. package/packages/codemirror-markdown/dist/dist-WJMBFK7W.js +360 -0
  113. package/packages/codemirror-markdown/dist/dist-WJMBFK7W.js.map +7 -0
  114. package/packages/codemirror-markdown/dist/dist-XJYSXJ7H.js +115 -0
  115. package/packages/codemirror-markdown/dist/dist-XJYSXJ7H.js.map +7 -0
  116. package/packages/codemirror-markdown/dist/dist-YY24ZXZD.js +212 -0
  117. package/packages/codemirror-markdown/dist/dist-YY24ZXZD.js.map +7 -0
  118. package/packages/codemirror-markdown/dist/dockerfile-JECCOJWP.js +209 -0
  119. package/packages/codemirror-markdown/dist/dockerfile-JECCOJWP.js.map +7 -0
  120. package/packages/codemirror-markdown/dist/dtd-MNDWTW4Z.js +116 -0
  121. package/packages/codemirror-markdown/dist/dtd-MNDWTW4Z.js.map +7 -0
  122. package/packages/codemirror-markdown/dist/dylan-VQ4IHJDS.js +317 -0
  123. package/packages/codemirror-markdown/dist/dylan-VQ4IHJDS.js.map +7 -0
  124. package/packages/codemirror-markdown/dist/ebnf-IDZBFTCG.js +142 -0
  125. package/packages/codemirror-markdown/dist/ebnf-IDZBFTCG.js.map +7 -0
  126. package/packages/codemirror-markdown/dist/ecl-X3ROY7E6.js +180 -0
  127. package/packages/codemirror-markdown/dist/ecl-X3ROY7E6.js.map +7 -0
  128. package/packages/codemirror-markdown/dist/eiffel-WB3M7Y2E.js +136 -0
  129. package/packages/codemirror-markdown/dist/eiffel-WB3M7Y2E.js.map +7 -0
  130. package/packages/codemirror-markdown/dist/elm-VHXR6ZA3.js +178 -0
  131. package/packages/codemirror-markdown/dist/elm-VHXR6ZA3.js.map +7 -0
  132. package/packages/codemirror-markdown/dist/erlang-7ZBDDQDV.js +676 -0
  133. package/packages/codemirror-markdown/dist/erlang-7ZBDDQDV.js.map +7 -0
  134. package/packages/codemirror-markdown/dist/extensions/embed.js +325 -0
  135. package/packages/codemirror-markdown/dist/extensions/embed.js.map +7 -0
  136. package/packages/codemirror-markdown/dist/extensions/links.js +118 -0
  137. package/packages/codemirror-markdown/dist/extensions/links.js.map +7 -0
  138. package/packages/codemirror-markdown/dist/extensions/markdown.js +3476 -0
  139. package/packages/codemirror-markdown/dist/extensions/markdown.js.map +7 -0
  140. package/packages/codemirror-markdown/dist/factor-IKT2GQE2.js +70 -0
  141. package/packages/codemirror-markdown/dist/factor-IKT2GQE2.js.map +7 -0
  142. package/packages/codemirror-markdown/dist/fcl-CNBUVGUC.js +143 -0
  143. package/packages/codemirror-markdown/dist/fcl-CNBUVGUC.js.map +7 -0
  144. package/packages/codemirror-markdown/dist/forth-4BTPWSFZ.js +118 -0
  145. package/packages/codemirror-markdown/dist/forth-4BTPWSFZ.js.map +7 -0
  146. package/packages/codemirror-markdown/dist/fortran-V6F5DQPK.js +469 -0
  147. package/packages/codemirror-markdown/dist/fortran-V6F5DQPK.js.map +7 -0
  148. package/packages/codemirror-markdown/dist/gas-4DLP6BC4.js +296 -0
  149. package/packages/codemirror-markdown/dist/gas-4DLP6BC4.js.map +7 -0
  150. package/packages/codemirror-markdown/dist/gherkin-OSGPX6HI.js +117 -0
  151. package/packages/codemirror-markdown/dist/gherkin-OSGPX6HI.js.map +7 -0
  152. package/packages/codemirror-markdown/dist/groovy-R2JW63QF.js +225 -0
  153. package/packages/codemirror-markdown/dist/groovy-R2JW63QF.js.map +7 -0
  154. package/packages/codemirror-markdown/dist/haskell-GG7T4J6H.js +461 -0
  155. package/packages/codemirror-markdown/dist/haskell-GG7T4J6H.js.map +7 -0
  156. package/packages/codemirror-markdown/dist/haxe-ESFUJKSE.js +521 -0
  157. package/packages/codemirror-markdown/dist/haxe-ESFUJKSE.js.map +7 -0
  158. package/packages/codemirror-markdown/dist/http-SZLSACOW.js +81 -0
  159. package/packages/codemirror-markdown/dist/http-SZLSACOW.js.map +7 -0
  160. package/packages/codemirror-markdown/dist/idl-V7UH35RP.js +987 -0
  161. package/packages/codemirror-markdown/dist/idl-V7UH35RP.js.map +7 -0
  162. package/packages/codemirror-markdown/dist/javascript-MGRPKFDN.js +13 -0
  163. package/packages/codemirror-markdown/dist/javascript-MGRPKFDN.js.map +7 -0
  164. package/packages/codemirror-markdown/dist/julia-CWCVZVPG.js +409 -0
  165. package/packages/codemirror-markdown/dist/julia-CWCVZVPG.js.map +7 -0
  166. package/packages/codemirror-markdown/dist/livescript-IGKT2FL7.js +303 -0
  167. package/packages/codemirror-markdown/dist/livescript-IGKT2FL7.js.map +7 -0
  168. package/packages/codemirror-markdown/dist/lua-GHK7GCTS.js +258 -0
  169. package/packages/codemirror-markdown/dist/lua-GHK7GCTS.js.map +7 -0
  170. package/packages/codemirror-markdown/dist/main.js +58 -0
  171. package/packages/codemirror-markdown/dist/main.js.map +7 -0
  172. package/packages/codemirror-markdown/dist/mathematica-W5LMQI3M.js +112 -0
  173. package/packages/codemirror-markdown/dist/mathematica-W5LMQI3M.js.map +7 -0
  174. package/packages/codemirror-markdown/dist/mbox-A7CXJ4HZ.js +119 -0
  175. package/packages/codemirror-markdown/dist/mbox-A7CXJ4HZ.js.map +7 -0
  176. package/packages/codemirror-markdown/dist/mirc-WYJEQUBY.js +109 -0
  177. package/packages/codemirror-markdown/dist/mirc-WYJEQUBY.js.map +7 -0
  178. package/packages/codemirror-markdown/dist/mllike-C2YS6SJI.js +340 -0
  179. package/packages/codemirror-markdown/dist/mllike-C2YS6SJI.js.map +7 -0
  180. package/packages/codemirror-markdown/dist/modelica-BMJSLZS7.js +149 -0
  181. package/packages/codemirror-markdown/dist/modelica-BMJSLZS7.js.map +7 -0
  182. package/packages/codemirror-markdown/dist/mscgen-5BORDYHW.js +137 -0
  183. package/packages/codemirror-markdown/dist/mscgen-5BORDYHW.js.map +7 -0
  184. package/packages/codemirror-markdown/dist/mumps-BYE6H7ZX.js +95 -0
  185. package/packages/codemirror-markdown/dist/mumps-BYE6H7ZX.js.map +7 -0
  186. package/packages/codemirror-markdown/dist/nginx-Y54HR7MQ.js +143 -0
  187. package/packages/codemirror-markdown/dist/nginx-Y54HR7MQ.js.map +7 -0
  188. package/packages/codemirror-markdown/dist/nsis-UZLPE2DL.js +67 -0
  189. package/packages/codemirror-markdown/dist/nsis-UZLPE2DL.js.map +7 -0
  190. package/packages/codemirror-markdown/dist/ntriples-SAI3J2VH.js +155 -0
  191. package/packages/codemirror-markdown/dist/ntriples-SAI3J2VH.js.map +7 -0
  192. package/packages/codemirror-markdown/dist/octave-TLUBYOUX.js +213 -0
  193. package/packages/codemirror-markdown/dist/octave-TLUBYOUX.js.map +7 -0
  194. package/packages/codemirror-markdown/dist/oz-F6LNIR6Q.js +233 -0
  195. package/packages/codemirror-markdown/dist/oz-F6LNIR6Q.js.map +7 -0
  196. package/packages/codemirror-markdown/dist/pascal-WINE2FE6.js +107 -0
  197. package/packages/codemirror-markdown/dist/pascal-WINE2FE6.js.map +7 -0
  198. package/packages/codemirror-markdown/dist/perl-NZG3EIBE.js +1107 -0
  199. package/packages/codemirror-markdown/dist/perl-NZG3EIBE.js.map +7 -0
  200. package/packages/codemirror-markdown/dist/pig-U7OFLRCV.js +105 -0
  201. package/packages/codemirror-markdown/dist/pig-U7OFLRCV.js.map +7 -0
  202. package/packages/codemirror-markdown/dist/powershell-ZSUS7P6D.js +330 -0
  203. package/packages/codemirror-markdown/dist/powershell-ZSUS7P6D.js.map +7 -0
  204. package/packages/codemirror-markdown/dist/properties-IJRU6UJW.js +60 -0
  205. package/packages/codemirror-markdown/dist/properties-IJRU6UJW.js.map +7 -0
  206. package/packages/codemirror-markdown/dist/protobuf-2KETQIQ5.js +80 -0
  207. package/packages/codemirror-markdown/dist/protobuf-2KETQIQ5.js.map +7 -0
  208. package/packages/codemirror-markdown/dist/pug-IQCJJAZU.js +410 -0
  209. package/packages/codemirror-markdown/dist/pug-IQCJJAZU.js.map +7 -0
  210. package/packages/codemirror-markdown/dist/puppet-YIIDDH6A.js +139 -0
  211. package/packages/codemirror-markdown/dist/puppet-YIIDDH6A.js.map +7 -0
  212. package/packages/codemirror-markdown/dist/python-A6P3XTMX.js +429 -0
  213. package/packages/codemirror-markdown/dist/python-A6P3XTMX.js.map +7 -0
  214. package/packages/codemirror-markdown/dist/q-2KXN5RX7.js +135 -0
  215. package/packages/codemirror-markdown/dist/q-2KXN5RX7.js.map +7 -0
  216. package/packages/codemirror-markdown/dist/r-BB4MIIBH.js +174 -0
  217. package/packages/codemirror-markdown/dist/r-BB4MIIBH.js.map +7 -0
  218. package/packages/codemirror-markdown/dist/rpm-LMR25AQ3.js +111 -0
  219. package/packages/codemirror-markdown/dist/rpm-LMR25AQ3.js.map +7 -0
  220. package/packages/codemirror-markdown/dist/ruby-TSD6FT73.js +333 -0
  221. package/packages/codemirror-markdown/dist/ruby-TSD6FT73.js.map +7 -0
  222. package/packages/codemirror-markdown/dist/sas-6X4WWIGV.js +209 -0
  223. package/packages/codemirror-markdown/dist/sas-6X4WWIGV.js.map +7 -0
  224. package/packages/codemirror-markdown/dist/scheme-E3I46HBL.js +230 -0
  225. package/packages/codemirror-markdown/dist/scheme-E3I46HBL.js.map +7 -0
  226. package/packages/codemirror-markdown/dist/shell-GX3PRI4I.js +224 -0
  227. package/packages/codemirror-markdown/dist/shell-GX3PRI4I.js.map +7 -0
  228. package/packages/codemirror-markdown/dist/sieve-V65ZPL4F.js +137 -0
  229. package/packages/codemirror-markdown/dist/sieve-V65ZPL4F.js.map +7 -0
  230. package/packages/codemirror-markdown/dist/smalltalk-OVKP2CVW.js +123 -0
  231. package/packages/codemirror-markdown/dist/smalltalk-OVKP2CVW.js.map +7 -0
  232. package/packages/codemirror-markdown/dist/solr-C4DLQJCF.js +71 -0
  233. package/packages/codemirror-markdown/dist/solr-C4DLQJCF.js.map +7 -0
  234. package/packages/codemirror-markdown/dist/sparql-REKUW7B3.js +251 -0
  235. package/packages/codemirror-markdown/dist/sparql-REKUW7B3.js.map +7 -0
  236. package/packages/codemirror-markdown/dist/spreadsheet-S7NN2YTQ.js +89 -0
  237. package/packages/codemirror-markdown/dist/spreadsheet-S7NN2YTQ.js.map +7 -0
  238. package/packages/codemirror-markdown/dist/sql-ML2Q43YF.js +358 -0
  239. package/packages/codemirror-markdown/dist/sql-ML2Q43YF.js.map +7 -0
  240. package/packages/codemirror-markdown/dist/stex-TCOGKBT4.js +233 -0
  241. package/packages/codemirror-markdown/dist/stex-TCOGKBT4.js.map +7 -0
  242. package/packages/codemirror-markdown/dist/stylus-3ONNYZOM.js +591 -0
  243. package/packages/codemirror-markdown/dist/stylus-3ONNYZOM.js.map +7 -0
  244. package/packages/codemirror-markdown/dist/swift-CNWGZ22Y.js +293 -0
  245. package/packages/codemirror-markdown/dist/swift-CNWGZ22Y.js.map +7 -0
  246. package/packages/codemirror-markdown/dist/tcl-77IMAZYE.js +116 -0
  247. package/packages/codemirror-markdown/dist/tcl-77IMAZYE.js.map +7 -0
  248. package/packages/codemirror-markdown/dist/textile-6IWIIKFM.js +416 -0
  249. package/packages/codemirror-markdown/dist/textile-6IWIIKFM.js.map +7 -0
  250. package/packages/codemirror-markdown/dist/tiddlywiki-IJSZMUSA.js +231 -0
  251. package/packages/codemirror-markdown/dist/tiddlywiki-IJSZMUSA.js.map +7 -0
  252. package/packages/codemirror-markdown/dist/tiki-HG37JJIT.js +276 -0
  253. package/packages/codemirror-markdown/dist/tiki-HG37JJIT.js.map +7 -0
  254. package/packages/codemirror-markdown/dist/toml-NINU2IMM.js +78 -0
  255. package/packages/codemirror-markdown/dist/toml-NINU2IMM.js.map +7 -0
  256. package/packages/codemirror-markdown/dist/troff-AOQJ4Q4C.js +63 -0
  257. package/packages/codemirror-markdown/dist/troff-AOQJ4Q4C.js.map +7 -0
  258. package/packages/codemirror-markdown/dist/ttcn-TLOZ3FX3.js +211 -0
  259. package/packages/codemirror-markdown/dist/ttcn-TLOZ3FX3.js.map +7 -0
  260. package/packages/codemirror-markdown/dist/ttcn-cfg-3B6QY7QE.js +141 -0
  261. package/packages/codemirror-markdown/dist/ttcn-cfg-3B6QY7QE.js.map +7 -0
  262. package/packages/codemirror-markdown/dist/turtle-3N5KCGXP.js +132 -0
  263. package/packages/codemirror-markdown/dist/turtle-3N5KCGXP.js.map +7 -0
  264. package/packages/codemirror-markdown/dist/vb-I7M5DRLP.js +204 -0
  265. package/packages/codemirror-markdown/dist/vb-I7M5DRLP.js.map +7 -0
  266. package/packages/codemirror-markdown/dist/vbscript-U2ARSJLD.js +482 -0
  267. package/packages/codemirror-markdown/dist/vbscript-U2ARSJLD.js.map +7 -0
  268. package/packages/codemirror-markdown/dist/velocity-R3AYP5XJ.js +151 -0
  269. package/packages/codemirror-markdown/dist/velocity-R3AYP5XJ.js.map +7 -0
  270. package/packages/codemirror-markdown/dist/verilog-7VEWVDW6.js +456 -0
  271. package/packages/codemirror-markdown/dist/verilog-7VEWVDW6.js.map +7 -0
  272. package/packages/codemirror-markdown/dist/vhdl-JZUPPGBA.js +162 -0
  273. package/packages/codemirror-markdown/dist/vhdl-JZUPPGBA.js.map +7 -0
  274. package/packages/codemirror-markdown/dist/webidl-SLQFEELK.js +206 -0
  275. package/packages/codemirror-markdown/dist/webidl-SLQFEELK.js.map +7 -0
  276. package/packages/codemirror-markdown/dist/xquery-VXP5KJ6N.js +532 -0
  277. package/packages/codemirror-markdown/dist/xquery-VXP5KJ6N.js.map +7 -0
  278. package/packages/codemirror-markdown/dist/yacas-JRBC4BEV.js +132 -0
  279. package/packages/codemirror-markdown/dist/yacas-JRBC4BEV.js.map +7 -0
  280. package/packages/codemirror-markdown/dist/z80-AJF6WLUV.js +95 -0
  281. package/packages/codemirror-markdown/dist/z80-AJF6WLUV.js.map +7 -0
  282. package/packages/codemirror-markdown/example.js +46 -0
  283. package/packages/codemirror-markdown/package.json +62 -0
  284. package/packages/commands/dist/main.js +504 -0
  285. package/packages/commands/dist/main.js.map +7 -0
  286. package/packages/commands/package.json +28 -0
  287. package/packages/contact/dist/ContactAvatar-FP32ZZH2.js +161 -0
  288. package/packages/contact/dist/ContactAvatar-FP32ZZH2.js.map +7 -0
  289. package/packages/contact/dist/ContactViewer-ZHEE6INW.js +60 -0
  290. package/packages/contact/dist/ContactViewer-ZHEE6INW.js.map +7 -0
  291. package/packages/contact/dist/InlineContactAvatar-VZDPEZV2.js +46 -0
  292. package/packages/contact/dist/InlineContactAvatar-VZDPEZV2.js.map +7 -0
  293. package/packages/contact/dist/chunk-MOZI4Y4O.js +54 -0
  294. package/packages/contact/dist/chunk-MOZI4Y4O.js.map +7 -0
  295. package/packages/contact/dist/datatype-ABVDVPWS.js +27 -0
  296. package/packages/contact/dist/datatype-ABVDVPWS.js.map +7 -0
  297. package/packages/contact/dist/tool.css +81 -0
  298. package/packages/contact/dist/tool.css.map +7 -0
  299. package/packages/contact/dist/tool.js +70 -0
  300. package/packages/contact/dist/tool.js.map +7 -0
  301. package/packages/contact/package.json +46 -0
  302. package/packages/folder/dist/datatype-HWGUFBTQ.js +27 -0
  303. package/packages/folder/dist/datatype-HWGUFBTQ.js.map +7 -0
  304. package/packages/folder/dist/index.js +27 -0
  305. package/packages/folder/dist/index.js.map +7 -0
  306. package/packages/folder/dist/tool-62JZAZRP.js +366 -0
  307. package/packages/folder/dist/tool-62JZAZRP.js.map +7 -0
  308. package/packages/folder/package.json +32 -0
  309. package/packages/sideboard/dist/account-bar-OJQC3J6W.js +2 -0
  310. package/packages/sideboard/dist/account-bar-OJQC3J6W.js.map +7 -0
  311. package/packages/sideboard/dist/chunk-32FICX7K.js +26 -0
  312. package/packages/sideboard/dist/chunk-32FICX7K.js.map +7 -0
  313. package/packages/sideboard/dist/chunk-3OYP6TVA.js +2 -0
  314. package/packages/sideboard/dist/chunk-3OYP6TVA.js.map +7 -0
  315. package/packages/sideboard/dist/chunk-FW4363Y4.js +2 -0
  316. package/packages/sideboard/dist/chunk-FW4363Y4.js.map +7 -0
  317. package/packages/sideboard/dist/chunk-QKYKEZU4.js +2 -0
  318. package/packages/sideboard/dist/chunk-QKYKEZU4.js.map +7 -0
  319. package/packages/sideboard/dist/document-list-panel-42LSXXCO.js +2 -0
  320. package/packages/sideboard/dist/document-list-panel-42LSXXCO.js.map +7 -0
  321. package/packages/sideboard/dist/index.css +2 -0
  322. package/packages/sideboard/dist/index.css.map +7 -0
  323. package/packages/sideboard/dist/index.js +2 -0
  324. package/packages/sideboard/dist/index.js.map +7 -0
  325. package/packages/sideboard/dist/sideboard/sideboard.js +2 -0
  326. package/packages/sideboard/dist/sideboard/sideboard.js.map +7 -0
  327. package/packages/sideboard/package.json +56 -0
  328. package/packages/theming/dist/active-theme-K27UXDBG.js +26 -0
  329. package/packages/theming/dist/active-theme-K27UXDBG.js.map +7 -0
  330. package/packages/theming/dist/chunk-K4OOO2TK.js +281 -0
  331. package/packages/theming/dist/chunk-K4OOO2TK.js.map +7 -0
  332. package/packages/theming/dist/chunk-RATW7VZI.js +11 -0
  333. package/packages/theming/dist/chunk-RATW7VZI.js.map +7 -0
  334. package/packages/theming/dist/chunk-U7SC4JPE.js +86 -0
  335. package/packages/theming/dist/chunk-U7SC4JPE.js.map +7 -0
  336. package/packages/theming/dist/codemirror-theme.js +2415 -0
  337. package/packages/theming/dist/codemirror-theme.js.map +7 -0
  338. package/packages/theming/dist/datatype-UUJVIZM7.js +16 -0
  339. package/packages/theming/dist/datatype-UUJVIZM7.js.map +7 -0
  340. package/packages/theming/dist/gloom-JYQPEOHI.css +102 -0
  341. package/packages/theming/dist/lychee-BMLMUNP6.css +114 -0
  342. package/packages/theming/dist/main.js +112 -0
  343. package/packages/theming/dist/main.js.map +7 -0
  344. package/packages/theming/dist/theme-RC7MV6WP.css +691 -0
  345. package/packages/theming/dist/theme-editor-datatype-CIXRKEFF.js +11 -0
  346. package/packages/theming/dist/theme-editor-datatype-CIXRKEFF.js.map +7 -0
  347. package/packages/theming/dist/theme-editor.js +576 -0
  348. package/packages/theming/dist/theme-editor.js.map +7 -0
  349. package/packages/theming/dist/theme-titlebar-P2CODQGF.js +21 -0
  350. package/packages/theming/dist/theme-titlebar-P2CODQGF.js.map +7 -0
  351. package/packages/theming/dist/theme-tray-5L2KGCGD.js +351 -0
  352. package/packages/theming/dist/theme-tray-5L2KGCGD.js.map +7 -0
  353. package/packages/theming/dist/tool.js +405 -0
  354. package/packages/theming/dist/tool.js.map +7 -0
  355. package/packages/theming/package.json +48 -0
  356. package/packages/threepane/dist/IsolatedDocumentArea-LFSDWMIY.js +2 -0
  357. package/packages/threepane/dist/IsolatedDocumentArea-LFSDWMIY.js.map +7 -0
  358. package/packages/threepane/dist/PatchworkFrame-JTNZ6365.js +2 -0
  359. package/packages/threepane/dist/PatchworkFrame-JTNZ6365.js.map +7 -0
  360. package/packages/threepane/dist/chunk-7YXO2YGV.js +2 -0
  361. package/packages/threepane/dist/chunk-7YXO2YGV.js.map +7 -0
  362. package/packages/threepane/dist/chunk-FOMAU6H2.js +972 -0
  363. package/packages/threepane/dist/chunk-FOMAU6H2.js.map +7 -0
  364. package/packages/threepane/dist/chunk-FW4363Y4.js +2 -0
  365. package/packages/threepane/dist/chunk-FW4363Y4.js.map +7 -0
  366. package/packages/threepane/dist/datatypes-FKBTWAO7.js +2 -0
  367. package/packages/threepane/dist/datatypes-FKBTWAO7.js.map +7 -0
  368. package/packages/threepane/dist/index.js +2 -0
  369. package/packages/threepane/dist/index.js.map +7 -0
  370. package/packages/threepane/package.json +42 -0
  371. package/packages/tldraw4/dist/chunk-IKZWERSR.js +38 -0
  372. package/packages/tldraw4/dist/chunk-IKZWERSR.js.map +7 -0
  373. package/packages/tldraw4/dist/chunk-VF5CY24G.js +140894 -0
  374. package/packages/tldraw4/dist/chunk-VF5CY24G.js.map +7 -0
  375. package/packages/tldraw4/dist/datatype.js +46 -0
  376. package/packages/tldraw4/dist/datatype.js.map +7 -0
  377. package/packages/tldraw4/dist/main.css +3202 -0
  378. package/packages/tldraw4/dist/main.css.map +7 -0
  379. package/packages/tldraw4/dist/main.js +42 -0
  380. package/packages/tldraw4/dist/main.js.map +7 -0
  381. package/packages/tldraw4/dist/tool.js +8767 -0
  382. package/packages/tldraw4/dist/tool.js.map +7 -0
  383. package/packages/tldraw4/package.json +62 -0
@@ -0,0 +1,972 @@
1
+ import{a as De,b as ur}from"./chunk-FW4363Y4.js";var yt=De((wi,wt)=>{var U=1e3,W=U*60,N=W*60,P=N*24,Io=P*7,Ao=P*365.25;wt.exports=function(e,t){t=t||{};var r=typeof e;if(r==="string"&&e.length>0)return Do(e);if(r==="number"&&isFinite(e))return t.long?jo(e):Oo(e);throw new Error("val is not a non-empty string or a valid number. val="+JSON.stringify(e))};function Do(e){if(e=String(e),!(e.length>100)){var t=/^(-?(?:\d+)?\.?\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)?$/i.exec(e);if(t){var r=parseFloat(t[1]),n=(t[2]||"ms").toLowerCase();switch(n){case"years":case"year":case"yrs":case"yr":case"y":return r*Ao;case"weeks":case"week":case"w":return r*Io;case"days":case"day":case"d":return r*P;case"hours":case"hour":case"hrs":case"hr":case"h":return r*N;case"minutes":case"minute":case"mins":case"min":case"m":return r*W;case"seconds":case"second":case"secs":case"sec":case"s":return r*U;case"milliseconds":case"millisecond":case"msecs":case"msec":case"ms":return r;default:return}}}}function Oo(e){var t=Math.abs(e);return t>=P?Math.round(e/P)+"d":t>=N?Math.round(e/N)+"h":t>=W?Math.round(e/W)+"m":t>=U?Math.round(e/U)+"s":e+"ms"}function jo(e){var t=Math.abs(e);return t>=P?ve(e,t,P,"day"):t>=N?ve(e,t,N,"hour"):t>=W?ve(e,t,W,"minute"):t>=U?ve(e,t,U,"second"):e+" ms"}function ve(e,t,r,n){var a=t>=r*1.5;return Math.round(e/r)+" "+n+(a?"s":"")}});var _t=De((yi,xt)=>{function Po(e){r.debug=r,r.default=r,r.coerce=c,r.disable=i,r.enable=a,r.enabled=s,r.humanize=yt(),r.destroy=f,Object.keys(e).forEach(l=>{r[l]=e[l]}),r.names=[],r.skips=[],r.formatters={};function t(l){let d=0;for(let u=0;u<l.length;u++)d=(d<<5)-d+l.charCodeAt(u),d|=0;return r.colors[Math.abs(d)%r.colors.length]}r.selectColor=t;function r(l){let d,u=null,m,g;function h(...p){if(!h.enabled)return;let b=h,v=Number(new Date),y=v-(d||v);b.diff=y,b.prev=d,b.curr=v,d=v,p[0]=r.coerce(p[0]),typeof p[0]!="string"&&p.unshift("%O");let k=0;p[0]=p[0].replace(/%([a-zA-Z%])/g,(A,j)=>{if(A==="%%")return"%";k++;let $=r.formatters[j];if(typeof $=="function"){let Ae=p[k];A=$.call(b,Ae),p.splice(k,1),k--}return A}),r.formatArgs.call(b,p),(b.log||r.log).apply(b,p)}return h.namespace=l,h.useColors=r.useColors(),h.color=r.selectColor(l),h.extend=n,h.destroy=r.destroy,Object.defineProperty(h,"enabled",{enumerable:!0,configurable:!1,get:()=>u!==null?u:(m!==r.namespaces&&(m=r.namespaces,g=r.enabled(l)),g),set:p=>{u=p}}),typeof r.init=="function"&&r.init(h),h}function n(l,d){let u=r(this.namespace+(typeof d>"u"?":":d)+l);return u.log=this.log,u}function a(l){r.save(l),r.namespaces=l,r.names=[],r.skips=[];let d=(typeof l=="string"?l:"").trim().replace(/\s+/g,",").split(",").filter(Boolean);for(let u of d)u[0]==="-"?r.skips.push(u.slice(1)):r.names.push(u)}function o(l,d){let u=0,m=0,g=-1,h=0;for(;u<l.length;)if(m<d.length&&(d[m]===l[u]||d[m]==="*"))d[m]==="*"?(g=m,h=u,m++):(u++,m++);else if(g!==-1)m=g+1,h++,u=h;else return!1;for(;m<d.length&&d[m]==="*";)m++;return m===d.length}function i(){let l=[...r.names,...r.skips.map(d=>"-"+d)].join(",");return r.enable(""),l}function s(l){for(let d of r.skips)if(o(l,d))return!1;for(let d of r.names)if(o(l,d))return!0;return!1}function c(l){return l instanceof Error?l.stack||l.message:l}function f(){console.warn("Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.")}return r.enable(r.load()),r}xt.exports=Po});var Ct=De((C,we)=>{C.formatArgs=Fo;C.save=Mo;C.load=zo;C.useColors=Lo;C.storage=Uo();C.destroy=(()=>{let e=!1;return()=>{e||(e=!0,console.warn("Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`."))}})();C.colors=["#0000CC","#0000FF","#0033CC","#0033FF","#0066CC","#0066FF","#0099CC","#0099FF","#00CC00","#00CC33","#00CC66","#00CC99","#00CCCC","#00CCFF","#3300CC","#3300FF","#3333CC","#3333FF","#3366CC","#3366FF","#3399CC","#3399FF","#33CC00","#33CC33","#33CC66","#33CC99","#33CCCC","#33CCFF","#6600CC","#6600FF","#6633CC","#6633FF","#66CC00","#66CC33","#9900CC","#9900FF","#9933CC","#9933FF","#99CC00","#99CC33","#CC0000","#CC0033","#CC0066","#CC0099","#CC00CC","#CC00FF","#CC3300","#CC3333","#CC3366","#CC3399","#CC33CC","#CC33FF","#CC6600","#CC6633","#CC9900","#CC9933","#CCCC00","#CCCC33","#FF0000","#FF0033","#FF0066","#FF0099","#FF00CC","#FF00FF","#FF3300","#FF3333","#FF3366","#FF3399","#FF33CC","#FF33FF","#FF6600","#FF6633","#FF9900","#FF9933","#FFCC00","#FFCC33"];function Lo(){if(typeof window<"u"&&window.process&&(window.process.type==="renderer"||window.process.__nwjs))return!0;if(typeof navigator<"u"&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/(edge|trident)\/(\d+)/))return!1;let e;return typeof document<"u"&&document.documentElement&&document.documentElement.style&&document.documentElement.style.WebkitAppearance||typeof window<"u"&&window.console&&(window.console.firebug||window.console.exception&&window.console.table)||typeof navigator<"u"&&navigator.userAgent&&(e=navigator.userAgent.toLowerCase().match(/firefox\/(\d+)/))&&parseInt(e[1],10)>=31||typeof navigator<"u"&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/applewebkit\/(\d+)/)}function Fo(e){if(e[0]=(this.useColors?"%c":"")+this.namespace+(this.useColors?" %c":" ")+e[0]+(this.useColors?"%c ":" ")+"+"+we.exports.humanize(this.diff),!this.useColors)return;let t="color: "+this.color;e.splice(1,0,t,"color: inherit");let r=0,n=0;e[0].replace(/%[a-zA-Z%]/g,a=>{a!=="%%"&&(r++,a==="%c"&&(n=r))}),e.splice(n,0,t)}C.log=console.debug||console.log||(()=>{});function Mo(e){try{e?C.storage.setItem("debug",e):C.storage.removeItem("debug")}catch{}}function zo(){let e;try{e=C.storage.getItem("debug")||C.storage.getItem("DEBUG")}catch{}return!e&&typeof process<"u"&&"env"in process&&(e=process.env.DEBUG),e}function Uo(){try{return localStorage}catch{}}we.exports=_t()(C);var{formatters:Wo}=we.exports;Wo.j=function(e){try{return JSON.stringify(e)}catch(t){return"[UnexpectedJSONParseError]: "+t.message}}});import{template as cr}from"solid-js/web";import{createComponent as la}from"solid-js/web";import{setAttribute as ca}from"solid-js/web";import{effect as da}from"solid-js/web";import{insert as dr}from"solid-js/web";import{getOwner as ua}from"solid-js/web";import{createMemo as sr}from"solid-js";import{createStore as ha,reconcile as ma}from"solid-js/store";import{render as ga}from"solid-js/web";import{template as tt}from"solid-js/web";import{insert as ie}from"solid-js/web";import{getOwner as Re}from"solid-js/web";import{use as Te}from"solid-js/web";import{createComponent as T}from"solid-js/web";import{parseAutomergeUrl as Qn,stringifyAutomergeUrl as rr}from"@automerge/automerge-repo";import{createSignal as Vr,onCleanup as Yr,onMount as Xr}from"solid-js";import{createStore as Aa,reconcile as Da}from"solid-js/store";import{onCleanup as fr,createMemo as pr,createContext as hr,useContext as va,createResource as wa,createEffect as ya,createSignal as xa}from"solid-js";import{createStore as mr,produce as gr,reconcile as br}from"solid-js/store";var F=Symbol.for("_am_meta"),K=Symbol.for("_am_trace"),L=Symbol.for("_am_objectId"),ce=Symbol.for("_am_isProxy"),Me=Symbol.for("_am_clearCache"),vr=Symbol.for("_am_uint"),wr=Symbol.for("_am_int"),yr=Symbol.for("_am_f64"),ze=Symbol.for("_am_counter"),at=Symbol.for("_am_immutableString"),je=class{constructor(t){this.value=t||0,Reflect.defineProperty(this,ze,{value:!0})}valueOf(){return this.value}toString(){return this.valueOf().toString()}toJSON(){return this.value}increment(t){throw new Error("Counters should not be incremented outside of a change callback")}decrement(t){throw new Error("Counters should not be decremented outside of a change callback")}},Pe=class extends je{constructor(t,r,n,a,o){super(t),this.context=r,this.path=n,this.objectId=a,this.key=o}increment(t){return t=typeof t=="number"?t:1,this.context.increment(this.objectId,this.key,t),this.value+=t,this.value}decrement(t){return this.increment(typeof t=="number"?-t:-1)}};function xr(e,t,r,n,a){return new Pe(e,t,r,n,a)}var it,Le=class{constructor(t){this[it]=!0,this.val=t}toString(){return this.val}toJSON(){return this.val}};it=at;function E(e){if(typeof e=="string"&&/^[0-9]+$/.test(e)&&(e=parseInt(e,10)),typeof e!="number")return e;if(e<0||isNaN(e)||e===1/0||e===-1/0)throw new RangeError("A list index must be positive, but you passed "+e);return e}function _(e,t){let{context:r,objectId:n,path:a}=e,o=r.getWithType(n,t);if(o===null)return;let i=o[0],s=o[1];switch(i){case void 0:return;case"map":return ue(r,s,[...a,t]);case"list":return fe(r,s,[...a,t]);case"text":return r.text(s);case"str":return new Le(s);case"uint":return s;case"int":return s;case"f64":return s;case"boolean":return s;case"null":return null;case"bytes":return s;case"timestamp":return s;case"counter":return xr(s,r,a,n,t);default:throw RangeError(`datatype ${i} unimplemented`)}}function le(e,t,r){let n=typeof e;switch(n){case"object":if(e==null)return[null,"null"];if(e[vr])return[e.value,"uint"];if(e[wr])return[e.value,"int"];if(e[yr])return[e.value,"f64"];if(e[ze])return[e.value,"counter"];if(e instanceof Date)return[e.getTime(),"timestamp"];if(kr(e))return[e.toString(),"str"];if(e instanceof Uint8Array)return[e,"bytes"];if(e instanceof Array)return[e,"list"];if(Object.prototype.toString.call(e)==="[object Object]")return[e,"map"];throw de(e,r)?new RangeError("Cannot create a reference to an existing document object"):new RangeError(`Cannot assign unknown object: ${e}`);case"boolean":return[e,"boolean"];case"number":return Number.isInteger(e)?[e,"int"]:[e,"f64"];case"string":return[e,"text"];case"undefined":throw new RangeError([`Cannot assign undefined value at ${rt(t)}, `,"because `undefined` is not a valid JSON data type. ","You might consider setting the property's value to `null`, ","or using `delete` to remove it altogether."].join(""));default:throw new RangeError([`Cannot assign ${n} value at ${rt(t)}. `,"All JSON primitive datatypes (object, array, string, number, boolean, null) ",`are supported in an Automerge document; ${n} values are not. `].join(""))}}function de(e,t){var r,n;return e instanceof Date?!1:!!(e&&((n=(r=e[F])===null||r===void 0?void 0:r.handle)===null||n===void 0?void 0:n.__wbg_ptr)===t.__wbg_ptr)}var _r={get(e,t){let{context:r,objectId:n,cache:a}=e;return t===Symbol.toStringTag?e[Symbol.toStringTag]:t===L?n:t===ce?!0:t===K?e.trace:t===F?{handle:r}:(a[t]||(a[t]=_(e,t)),a[t])},set(e,t,r){let{context:n,objectId:a,path:o}=e;if(e.cache={},de(r,n))throw new RangeError("Cannot create a reference to an existing document object");if(t===K)return e.trace=r,!0;if(t===Me)return!0;let[i,s]=le(r,[...o,t],n);switch(s){case"list":{let c=n.putObject(a,t,[]),f=fe(n,c,[...o,t]);for(let l=0;l<i.length;l++)f[l]=i[l];break}case"text":{n.putObject(a,t,i);break}case"map":{let c=n.putObject(a,t,{}),f=ue(n,c,[...o,t]);for(let l in i)f[l]=i[l];break}default:n.put(a,t,i,s)}return!0},deleteProperty(e,t){let{context:r,objectId:n}=e;return e.cache={},r.delete(n,t),!0},has(e,t){return this.get(e,t)!==void 0},getOwnPropertyDescriptor(e,t){let r=this.get(e,t);if(typeof r<"u")return{configurable:!0,enumerable:!0,value:r}},ownKeys(e){let{context:t,objectId:r}=e,n=t.keys(r);return[...new Set(n)]}},st={get(e,t){let{context:r,objectId:n}=e;return t=E(t),t===Symbol.hasInstance?a=>Array.isArray(a):t===Symbol.toStringTag?e[Symbol.toStringTag]:t===L?n:t===ce?!0:t===K?e.trace:t===F?{handle:r}:t==="length"?r.length(n):typeof t=="number"?_(e,t):Ue(e)[t]},set(e,t,r){let{context:n,objectId:a,path:o}=e;if(t=E(t),de(r,n))throw new RangeError("Cannot create a reference to an existing document object");if(t===Me)return!0;if(t===K)return e.trace=r,!0;if(typeof t=="string")throw new RangeError("list index must be a number");let[i,s]=le(r,[...o,t],n);switch(s){case"list":{let c;t>=n.length(a)?c=n.insertObject(a,t,[]):c=n.putObject(a,t,[]),fe(n,c,[...o,t]).splice(0,0,...i);break}case"text":{t>=n.length(a)?n.insertObject(a,t,i):n.putObject(a,t,i);break}case"map":{let c;t>=n.length(a)?c=n.insertObject(a,t,{}):c=n.putObject(a,t,{});let f=ue(n,c,[...o,t]);for(let l in i)f[l]=i[l];break}default:t>=n.length(a)?n.insert(a,t,i,s):n.put(a,t,i,s)}return!0},deleteProperty(e,t){let{context:r,objectId:n}=e;t=E(t);let a=r.get(n,t);if(a!=null&&a[0]=="counter")throw new TypeError("Unsupported operation: deleting a counter from a list");return r.delete(n,t),!0},has(e,t){let{context:r,objectId:n}=e;return t=E(t),typeof t=="number"?t<r.length(n):t==="length"},getOwnPropertyDescriptor(e,t){let{context:r,objectId:n}=e;return t==="length"?{writable:!0,value:r.length(n)}:t===L?{configurable:!1,enumerable:!1,value:n}:(t=E(t),{configurable:!0,enumerable:!0,value:_(e,t)})},getPrototypeOf(e){return Object.getPrototypeOf(e)},ownKeys(){let e=[];return e.push("length"),e}};Object.assign({},st,{get(e,t){let{context:r,objectId:n}=e;return t=E(t),t===Symbol.hasInstance?a=>Array.isArray(a):t===Symbol.toStringTag?e[Symbol.toStringTag]:t===L?n:t===ce?!0:t===K?e.trace:t===F?{handle:r}:t==="length"?r.length(n):typeof t=="number"?_(e,t):Cr(e)[t]||Ue(e)[t]},getPrototypeOf(){return Object.getPrototypeOf(new Text)}});function ue(e,t,r){let n={context:e,objectId:t,path:r||[],cache:{}},a={};return Object.assign(a,n),new Proxy(a,_r)}function fe(e,t,r){let n={context:e,objectId:t,path:r||[],cache:{}},a=[];return Object.assign(a,n),new Proxy(a,st)}function Ue(e){let{context:t,objectId:r,path:n}=e;return{at(o){return _(e,o)},deleteAt(o,i){return typeof i=="number"?t.splice(r,o,i):t.delete(r,o),this},fill(o,i,s){let[c,f]=le(o,[...n,i],t),l=t.length(r);i=E(i||0),s=E(s||l);for(let d=i;d<Math.min(s,l);d++)f==="list"||f==="map"||f==="text"?t.putObject(r,d,c):t.put(r,d,c,f);return this},indexOf(o,i=0){let s=t.length(r);for(let c=i;c<s;c++){let f=t.getWithType(r,c);if(!f)continue;let[l,d]=f;if(!["map","list","text"].includes(l)){if(d===o)return c;continue}if(l==="text"&&typeof o=="string"&&o===_(e,c)||o[L]===d)return c}return-1},insertAt(o,...i){return this.splice(o,0,...i),this},pop(){let o=t.length(r);if(o==0)return;let i=_(e,o-1);return t.delete(r,o-1),i},push(...o){let i=t.length(r);return this.splice(i,0,...o),t.length(r)},shift(){if(t.length(r)==0)return;let o=_(e,0);return t.delete(r,0),o},splice(o,i,...s){o=E(o),typeof i!="number"&&(i=t.length(r)-o),i=E(i);for(let l of s)if(de(l,t))throw new RangeError("Cannot create a reference to an existing document object");let c=[];for(let l=0;l<i;l++){let d=_(e,o);d!==void 0&&c.push(d),t.delete(r,o)}let f=s.map((l,d)=>{try{return le(l,[...n],t)}catch(u){throw u instanceof RangeError?new RangeError(`${u.message} (at index ${d} in the input)`):u}});for(let[l,d]of f){switch(d){case"list":{let u=t.insertObject(r,o,[]);fe(t,u,[...n,o]).splice(0,0,...l);break}case"text":{t.insertObject(r,o,l);break}case"map":{let u=t.insertObject(r,o,{}),m=ue(t,u,[...n,o]);for(let g in l)m[g]=l[g];break}default:t.insert(r,o,l,d)}o+=1}return c},unshift(...o){return this.splice(0,0,...o),t.length(r)},entries(){let o=0;return{next:()=>{let s=_(e,o);return s===void 0?{value:void 0,done:!0}:{value:[o++,s],done:!1}},[Symbol.iterator](){return this}}},keys(){let o=0,i=t.length(r);return{next:()=>o<i?{value:o++,done:!1}:{value:void 0,done:!0},[Symbol.iterator](){return this}}},values(){let o=0;return{next:()=>{let s=_(e,o++);return s===void 0?{value:void 0,done:!0}:{value:s,done:!1}},[Symbol.iterator](){return this}}},toArray(){let o=[],i;do i=_(e,o.length),i!==void 0&&o.push(i);while(i!==void 0);return o},map(o){return this.toArray().map(o)},toString(){return this.toArray().toString()},toLocaleString(){return this.toArray().toLocaleString()},forEach(o){return this.toArray().forEach(o)},concat(o){return this.toArray().concat(o)},every(o){return this.toArray().every(o)},filter(o){return this.toArray().filter(o)},find(o){let i=0;for(let s of this){if(o(s,i))return s;i+=1}},findIndex(o){let i=0;for(let s of this){if(o(s,i))return i;i+=1}return-1},includes(o){return this.find(i=>i===o)!==void 0},join(o){return this.toArray().join(o)},reduce(o,i){return this.toArray().reduce(o,i)},reduceRight(o,i){return this.toArray().reduceRight(o,i)},lastIndexOf(o,i=1/0){return this.toArray().lastIndexOf(o,i)},slice(o,i){return this.toArray().slice(o,i)},some(o){let i=0;for(let s of this){if(o(s,i))return!0;i+=1}return!1},[Symbol.iterator]:function*(){let o=0,i=_(e,o);for(;i!==void 0;)yield i,o+=1,i=_(e,o)}}}function Cr(e){let{context:t,objectId:r}=e;return{set(a,o){return this[a]=o},get(a){return this[a]},toString(){return t.text(r).replace(//g,"")},toSpans(){let a=[],o="",i=t.length(r);for(let s=0;s<i;s++){let c=this[s];typeof c=="string"?o+=c:(o.length>0&&(a.push(o),o=""),a.push(c))}return o.length>0&&a.push(o),a},toJSON(){return this.toString()},indexOf(a,o=0){return t.text(r).indexOf(a,o)},insertAt(a,...o){o.every(i=>typeof i=="string")?t.splice(r,a,0,o.join("")):Ue(e).insertAt(a,...o)}}}function rt(e){let t=e.map(r=>{if(typeof r=="number")return r.toString();if(typeof r=="string")return r.replace(/~/g,"~0").replace(/\//g,"~1")});return e.length===0?"":"/"+t.join("/")}function kr(e){return typeof e=="object"&&e!==null&&Object.prototype.hasOwnProperty.call(e,at)}function Sr(e){return typeof e=="object"&&e!==null&&Object.prototype.hasOwnProperty.call(e,ze)}var lt,Oe=typeof TextEncoder<"u"?new TextEncoder("utf-8"):{encode:()=>{throw Error("TextEncoder not available")}};Oe.encodeInto;var Er=typeof TextDecoder<"u"?new TextDecoder("utf-8",{ignoreBOM:!0,fatal:!0}):{decode:()=>{throw Error("TextDecoder not available")}};typeof TextDecoder<"u"&&Er.decode();typeof FinalizationRegistry>"u"||new FinalizationRegistry(e=>lt.__wbg_automerge_free(e>>>0,1));typeof FinalizationRegistry>"u"||new FinalizationRegistry(e=>lt.__wbg_syncstate_free(e>>>0,1));function G(e,t=!0){if(typeof e!="object")throw new RangeError("must be the document root");let r=Reflect.get(e,F);if(r===void 0||r==null||t&&We(e)!=="_root")throw new RangeError("must be the document root");return r}function $r(e){Reflect.set(e,Me,!0)}function We(e){return typeof e!="object"||e===null?null:Reflect.get(e,L)}function Ne(e){return!!Reflect.get(e,ce)}function Rr(e,t){let r=Lr(e,t.path);if(t.action==="put")Tr(e,r,t);else if(t.action==="insert")Ir(e,r,t);else if(t.action==="del")Ar(e,r,t);else if(t.action==="splice")Dr(e,r,t);else if(t.action==="inc")Or(e,r,t);else if(t.action==="mark")jr(e,r,t);else if(t.action==="unmark")Pr(e,r,t);else if(t.action!=="conflict")throw new RangeError(`unsupported patch: ${t}`)}function Tr(e,t,r){let{obj:n,prop:a}=R(t,-1);n[a]=r.value}function Ir(e,t,r){let{obj:n,prop:a}=R(t,-1);if(!Array.isArray(n))throw new RangeError("target is not an array for patch");if(typeof a!="number")throw new RangeError("index is not a number for patch");n.splice(a,0,...r.values)}function Ar(e,t,r){let{obj:n,prop:a,parentPath:o}=R(t,-1);if(typeof a!="number")throw new RangeError("index is not a number for patch");if(Array.isArray(n))n.splice(a,r.length||1);else if(typeof n=="string")if(Z(e))dt(e,o,a,r.length||1);else{let{obj:i,prop:s}=R(t,-2);if(typeof a!="number")throw new RangeError("index is not a number for patch");let c=i[s];if(c==null||typeof c!="string")throw new RangeError("target is not a string for patch");let f=c.slice(0,a)+c.slice(a+(r.length||1));i[s]=f}else throw new RangeError("target is not an array or string for patch")}function Dr(e,t,r){if(Z(e)){let{obj:n,prop:a,parentPath:o}=R(t,-1);if(typeof a!="number")throw new RangeError("index is not a number for patch");dt(e,o,a,0,r.value)}else{let{obj:n,prop:a}=R(t,-1),{obj:o,prop:i}=R(t,-2);if(typeof a!="number")throw new RangeError("index is not a number for patch");let s=o[i];if(s==null||typeof s!="string")throw new RangeError("target is not a string for patch");let c=s.slice(0,a)+r.value+s.slice(a);o[i]=c}}function Or(e,t,r){let{obj:n,prop:a}=R(t,-1),o=n[a];if(Z(e)){if(!Sr(o))throw new RangeError("target is not a counter for patch");o.increment(r.value)}else{if(typeof o!="number")throw new RangeError("target is not a number for patch");n[a]=o+r.value}}function jr(e,t,r){let{obj:n,prop:a}=R(t,-1);if(Z(e))for(let o of r.marks)Wr(e,r.path,{start:o.start,end:o.end,expand:"none"},o.name,o.value)}function Pr(e,t,r){Z(e)&&Nr(e,r.path,{start:r.start,end:r.end,expand:"none"},r.name)}function ct(e,t){for(let r of t)Rr(e,r)}function Lr(e,t){let r=[],n=e,a=[];for(let[o,i]of t.entries())if(r.push({obj:n,prop:i,parentPath:a.slice()}),a.push(i),o!==t.length-1){if(n==null||typeof n!="object")throw new Error(`Invalid path: ${t}`);n=n[i]}else break;return r}function R(e,t){let r=e.at(t);if(r==null)throw new Error("invalid path");return r}function Fr(e,t,r){if(typeof r=="string"){if(/^-?[0-9]+@[0-9a-zA-Z]+$|^[se]$/.test(r))return e.handle.getCursorPosition(t,r);throw new RangeError("index must be a number or cursor")}else return r}function Mr(e,t){return We(e)}function zr(e,t,r){ot(t,"before"),ot(r,"after");let n=G(e);return n.mostRecentPatch&&Fe(n.mostRecentPatch.before,t)&&Fe(n.mostRecentPatch.after,r)?n.mostRecentPatch.patches:n.handle.diff(t,r)}function ot(e,t){if(!Array.isArray(e))throw new Error(`${t} must be an array`)}function Fe(e,t){if(!nt(e)||!nt(t))return e===t;let r=Object.keys(e).sort(),n=Object.keys(t).sort();if(r.length!==n.length)return!1;for(let a=0;a<r.length;a++)if(r[a]!==n[a]||!Fe(e[r[a]],t[n[a]]))return!1;return!0}function Ur(e){let t=G(e);return t.heads||t.handle.getHeads()}function Z(e){return typeof e=="object"&&e!==null?Mr(e)==="_root"&&!!Reflect.get(e,F):!1}function nt(e){return typeof e=="object"&&e!==null}function dt(e,t,r,n,a){let o=He(e,t,"splice");if(!Ne(e))throw new RangeError("object cannot be modified outside of a change block");let i=G(e,!1);$r(e),r=Fr(i,o,r);try{return i.handle.splice(o,r,n,a)}catch(s){throw new RangeError(`Cannot splice: ${s}`)}}function Wr(e,t,r,n,a){let o=He(e,t,"mark");if(!Ne(e))throw new RangeError("object cannot be modified outside of a change block");let i=G(e,!1);try{return i.handle.mark(o,r,n,a)}catch(s){throw new RangeError(`Cannot mark: ${s}`)}}function Nr(e,t,r,n){let a=He(e,t,"unmark");if(!Ne(e))throw new RangeError("object cannot be modified outside of a change block");let o=G(e,!1);try{return o.handle.unmark(a,r,n)}catch(i){throw new RangeError(`Cannot unmark: ${i}`)}}function He(e,t,r){t=t.slice();let n=We(e);if(!n)throw new RangeError(`invalid object for ${r}`);return t.unshift(n),t.join("/")}function Hr(e){return t=>ct(t,e.patches)}var X=new WeakMap;function Br(e){let t={};return ct(t,zr(e.doc(),[],Ur(e.doc()))),t}function qr(e){if(fr(()=>{let o=X.get(e);o&&(o.refs--||o.cleanup())}),X.has(e)){let o=X.get(e);return o.refs++,o.store}let[t,r]=mr(Br(e));X.set(e,{refs:0,store:t,cleanup(){e.off("change",n),e.off("delete",a),X.delete(e)}});function n(o){r(gr(Hr(o)))}function a(){r(br({}))}return e.on("change",n),e.on("delete",a),t}function ut(e){return pr(()=>{let r=typeof e=="function"?e():e;return r&&qr(r)})}var Ca=hr(null);function ft(e,t,r){let a=e.closest("patchwork-view")??e,o=new MessageChannel,i=o.port2,s=new AbortController,{signal:c}=s;i.addEventListener("message",l=>{l.data?.type==="change"&&r(l.data.value)},{signal:c}),i.start();let f={selector:t,port:o.port1};return a.dispatchEvent(new CustomEvent("patchwork:subscribe",{detail:f,bubbles:!0,composed:!0})),()=>{c.aborted||(s.abort(),i.postMessage({type:"unsubscribe"}),i.close())}}function Kr(e){return typeof e=="function"?e():e}function pt(e,t){let[r,n]=Vr(void 0);return Xr(()=>{let o=Kr(e);if(!o)return;let i=!1,s=ft(o,t,c=>{if(!c)return;let f="repo"in window?window.repo:void 0;f&&Promise.resolve(f.find(c)).then(l=>{i||n(()=>l)})});Yr(()=>{i=!0,s()})}),[ut(r),r]}import{createUniqueId as Gr,untrack as ht}from"solid-js";import{isServer as Zr,isDev as mt}from"solid-js/web";import{reconcile as Qr}from"solid-js/store";function Be(e,t={}){let r=t.storage||globalThis.localStorage,n=t.name||`storage-${Gr()}`;if(!r)return Object.assign(e,{2:null});let a=t.storageOptions,o=t.serialize||JSON.stringify.bind(JSON),i=t.deserialize||JSON.parse.bind(JSON),s=r.getItem(n,a),c=typeof e[0]=="function"?l=>{try{let d=i(l);e[1](()=>d)}catch(d){mt&&console.warn(d)}}:l=>{try{let d=i(l);e[1](Qr(d))}catch(d){mt&&console.warn(d)}},f=!0;if(s instanceof Promise?s.then(l=>f&&l&&c(l)):s&&c(s),typeof t.sync?.[0]=="function"){let l=typeof e[0]=="function"?e[0]:()=>e[0];t.sync[0](d=>{d.key!==n||!Zr&&(d.url||globalThis.location.href)!==globalThis.location.href||d.newValue===o(ht(l))||c(d.newValue)})}return Object.assign([],e,{1:typeof e[0]=="function"?l=>{let d=e[1](l),u=l!=null?o(d):l;return t.sync?.[1](n,u),u!=null?r.setItem(n,u,a):r.removeItem(n,a),f=!1,d}:(...l)=>{e[1](...l);let d=ht(()=>o(e[0]));t.sync?.[1](n,d),r.setItem(n,d,a),f=!1},2:s})}import{createEffect as or,createMemo as $e,createSignal as I,on as nr,onCleanup as ea,onMount as ta,Show as se}from"solid-js";import{createEffect as pe,createSignal as he,on as me}from"solid-js";var S={leftCollapsed:"patchwork:leftSidebarCollapsed",rightCollapsed:"patchwork:rightSidebarCollapsed",leftWidth:"patchwork:leftSidebarWidth",rightWidth:"patchwork:rightSidebarWidth",contextToolId:"patchwork:contextSidebarToolId"},ge="patchwork:collapse-context-sidebar",Q=400;function qe(e,t){let r=localStorage.getItem(e);return r?parseInt(r,10):t}function Je(e){return localStorage.getItem(e)==="true"}function eo(){let[e,t]=he(Je(S.leftCollapsed)),[r,n]=he(Je(S.rightCollapsed)),[a,o]=he(qe(S.leftWidth,Q)),[i,s]=he(qe(S.rightWidth,Q));return pe(me(e,c=>{localStorage.setItem(S.leftCollapsed,String(c))})),pe(me(r,c=>{localStorage.setItem(S.rightCollapsed,String(c))})),pe(me(a,c=>{localStorage.setItem(S.leftWidth,String(c))})),pe(me(i,c=>{localStorage.setItem(S.rightWidth,String(c))})),{isSidebarCollapsed:e,setIsSidebarCollapsed:t,isRightSidebarCollapsed:r,setIsRightSidebarCollapsed:n,leftSidebarWidth:a,setLeftSidebarWidth:o,rightSidebarWidth:i,setRightSidebarWidth:s}}import{onCleanup as to,onMount as ro}from"solid-js";function Ve({setLeftSidebarWidth:e,setRightSidebarWidth:t,setIsSidebarCollapsed:r,setIsRightSidebarCollapsed:n,isLeftCollapsed:a,isRightCollapsed:o,minWidth:i,maxWidth:s,autoCloseWidth:c,dragThreshold:f}){let l=null,d=null,u=!1,m=null,g=(w,x)=>w==="left"?e(x):t(x),h=(w,x)=>w==="left"?r(x):n(x),p=w=>w==="left"?a():o(),b=(w,x)=>{if(x<c){p(w)||h(w,!0),m=null;return}p(w)&&h(w,!1);let D=Math.min(s,x);g(w,D),m=D},v=w=>{p(w)||m!==null&&m<i&&g(w,i)},y=null,k=w=>{document.body.setAttribute("data-sidebar-resizing",w),y=document.createElement("div"),y.style.cssText="position:fixed;inset:0;z-index:2147483647;cursor:col-resize;",document.body.appendChild(y)},O=()=>{l=null,d=null,document.body.style.userSelect="",document.body.removeAttribute("data-sidebar-resizing"),y?.remove(),y=null},A=(w,x)=>{x.preventDefault(),d={x:x.clientX,y:x.clientY},u=!1,m=null,l=w,document.body.style.userSelect="none"},j=()=>{let w=l,x=u;O(),w&&x&&v(w)},$=w=>{if(!l||!d)return;let x=Math.abs(w.clientX-d.x),D=Math.abs(w.clientY-d.y);!u&&(x>f||D>f)&&(u=!0,k(l)),l==="left"?b("left",w.clientX):l==="right"&&b("right",window.innerWidth-w.clientX)},Ae=(w,x)=>{if(u){x.preventDefault(),x.stopPropagation(),u=!1;return}w==="left"?r(D=>!D):n(D=>!D)};return ro(()=>{document.addEventListener("mousemove",$),document.addEventListener("mouseup",j),to(()=>{document.removeEventListener("mousemove",$),document.removeEventListener("mouseup",j),l&&O()})}),{handleMouseDown:A,handleToggleClick:Ae}}import{createEffect as oo,createSignal as no,onCleanup as ao}from"solid-js";var M=(e,t)=>{let[r,n]=no(!1);return oo(()=>{let a=t();if(!a)return;n(!1);let o=i=>{i.detail?.componentId===e&&n(!0)};a.addEventListener("patchwork:mounted",o),ao(()=>a.removeEventListener("patchwork:mounted",o))}),r};import{createEffect as io,createSignal as so,onCleanup as lo}from"solid-js";var co=5e3,uo=(e,t)=>{let[r,n]=so(!1);return io(()=>{if(r())return;let a=e(),o=t();if(!a||!o)return;let i=c=>{let f=c.detail;f?.url&&f.url!==o||n(!0)};a.addEventListener("patchwork:mounted",i),a.addEventListener("patchwork:no-tool",i);let s=setTimeout(()=>n(!0),co);lo(()=>{a.removeEventListener("patchwork:mounted",i),a.removeEventListener("patchwork:no-tool",i),clearTimeout(s)})}),r};import{getRegistry as fo}from"@inkandswitch/patchwork-plugins";import{createMemo as po,createSignal as ho,onCleanup as mo}from"solid-js";function ee(e){let t=fo("patchwork:component"),[r,n]=ho(0),a=t.on("changed",()=>n(o=>o+1));return mo(a),po(()=>(r(),(t.all?.()??[]).filter(o=>(o.tags??[]).includes(e)).map(o=>({id:o.id,name:o.name||o.id,icon:o.icon})).sort((o,i)=>o.name.localeCompare(i.name))))}import{template as Ye}from"solid-js/web";import{delegateEvents as go}from"solid-js/web";import{setStyleProperty as bo}from"solid-js/web";import{effect as vo}from"solid-js/web";import{memo as wo}from"solid-js/web";import{addEventListener as yo}from"solid-js/web";import{insert as z}from"solid-js/web";import{createEffect as gt,createSignal as bt,onCleanup as vt}from"solid-js";import{getAllRegistries as ko}from"@inkandswitch/patchwork-plugins";var xo=Ye('<div class=debug-registry-toast><div class=debug-registry-toast__header><span class=debug-registry-toast__title>\u{1F527} Registry (<!>)</span><button class=debug-registry-toast__clear title="Clear all">\u2715</button></div><div class=debug-registry-toast__list>'),_o=Ye("<div class=debug-registry-toast__item><div class=debug-registry-toast__content><span class=debug-registry-toast__event-type></span><span class=debug-registry-toast__plugin-type>"),Co=Ye("<span class=debug-registry-toast__plugin-id>"),be="debugModal";function So(){try{return localStorage.getItem(be)==="true"}catch{return!1}}function Eo(e){try{e?localStorage.setItem(be,"true"):localStorage.removeItem(be)}catch{}}var $o=["changed"];function Ro(e={}){let{events:t=$o}=e,[r,n]=bt([]),[a,o]=bt(So()),i=new Set,s=(l,d,u,m)=>{let g={id:crypto.randomUUID(),type:l,event:d,pluginId:u,pluginName:m,timestamp:Date.now()};n(p=>[g,...p].slice(0,50));let h=setTimeout(()=>{n(p=>p.filter(b=>b.id!==g.id)),i.delete(h)},5e3);i.add(h)},c=l=>{n(d=>d.filter(u=>u.id!==l))},f=()=>{n([])};return gt(()=>{if(!a()){n([]),i.forEach(m=>clearTimeout(m)),i.clear();return}let l=ko(),d=[],u=new Map;l.forEach((m,g)=>{let h=m.on("registered",v=>{u.set(g,{id:v.id,name:v.name,action:"registered"}),t.includes("registered")&&s(g,"registered",v.id,v.name)});d.push(h);let p=m.on("loaded",v=>{u.set(g,{id:v.id,name:v.name,action:"loaded"}),t.includes("loaded")&&s(g,"loaded",v.id,v.name)});d.push(p);let b=m.on("removed",v=>{u.set(g,{id:v,action:"removed"}),t.includes("removed")&&s(g,"removed",v)});if(d.push(b),t.includes("changed")){let v=m.on("changed",()=>{let y=u.get(g);s(g,"changed",y?.id,y?.name),u.delete(g)});d.push(v)}}),vt(()=>{d.forEach(m=>m()),i.forEach(m=>clearTimeout(m)),i.clear()})}),gt(()=>{let l=d=>{d.key===be&&o(d.newValue==="true")};window.addEventListener("storage",l),vt(()=>window.removeEventListener("storage",l))}),{events:r,isEnabled:a,setIsEnabled:l=>{Eo(l),o(l)},dismissEvent:c,clearAll:f}}function To({events:e,onDismiss:t,onClearAll:r}){if(e.length===0)return null;let n=a=>{switch(a){case"registered":return"var(--debug-toast-registered, #3b82f6)";case"loaded":return"var(--debug-toast-loaded, #22c55e)";case"removed":return"var(--debug-toast-removed, #ef4444)";case"changed":return"var(--debug-toast-changed, #f59e0b)"}};return(()=>{var a=xo(),o=a.firstChild,i=o.firstChild,s=i.firstChild,c=s.nextSibling,f=c.nextSibling,l=i.nextSibling,d=o.nextSibling;return z(i,()=>e.length,c),yo(l,"click",r,!0),z(d,()=>e.map(u=>(()=>{var m=_o(),g=m.firstChild,h=g.firstChild,p=h.nextSibling;return m.$$click=()=>t(u.id),z(h,()=>u.event),z(p,()=>u.type),z(g,(()=>{var b=wo(()=>!!u.pluginId);return()=>b()&&(()=>{var v=Co();return z(v,()=>u.pluginId),v})()})(),null),vo(b=>bo(m,"border-left-color",n(u.event))),m})())),a})()}go(["click"]);import{template as ae}from"solid-js/web";import{delegateEvents as Dn}from"solid-js/web";import{getOwner as On}from"solid-js/web";import{effect as Gt}from"solid-js/web";import{setAttribute as jn}from"solid-js/web";import{memo as Zt}from"solid-js/web";import{insert as V}from"solid-js/web";import{createComponent as Y}from"solid-js/web";import{For as Un,Show as Qe}from"solid-js";import{template as Dt}from"solid-js/web";import{delegateEvents as Zo}from"solid-js/web";import{setAttribute as Qo}from"solid-js/web";import{insert as en}from"solid-js/web";import"solid-js/web";import{effect as At}from"solid-js/web";import{use as Ot}from"solid-js/web";import{createComponent as Xe}from"solid-js/web";var Et=ur(Ct(),1),$t=(0,Et.default)("cabbages");function kt(e){return typeof e=="object"&&typeof e!=null&&Object.getPrototypeOf(e)==Object.prototype}var No="\uFFFC";function Rt(e,...t){if(t.length==0){$t("empty patch");return}let[r,n,a]=t,o=[...r];for(;;){let i=o.shift();if(!o.length){let c=Array.isArray(n);if(kt(e)&&c&&typeof i>"u"&&typeof n[0]=="string"){delete e[n[0]];return}if(c||typeof n=="number"){if(typeof i>"u")throw new Error("cant treat top level as a seq");i=i;let[f,l]=Array.isArray(n)?n:[n,n+1],d=Array.isArray(n)&&n.length==0;if(!d&&(f==null||l==null))throw new RangeError("it's all or nothing, no half measures");let u=typeof a>"u",m=f===l&&!u,g=d&&!u,h=!m&&!u&&!g;if(typeof e[i]>"u"){if(typeof e=="string")return;typeof a=="string"?e[i]="":e[i]=[]}let p=e[i];if(Array.isArray(p)){if(g){Array.isArray(a)?p.push(...a):p.push(a);return}if(m||h){Array.isArray(a)?p.splice(f,l-f,...a):p.splice(f,l-f,a);return}if(u){p.splice(f,l-f);return}throw new Error("i don't know what happened")}if(typeof p=="string"){if(g){e[i]=p+a;return}if(h||m){e[i]=p.slice(0,f)+(typeof a=="string"?a:a.map(b=>typeof b=="string"?b:No).join(""))+p.slice(l);return}if(u){e[i]=p.slice(0,f)+p.slice(l);return}throw new Error("i don't know what happened")}if(kt(p)&&c&&typeof n[0]=="string"){delete p[n[0]];return}throw new Error("not implemented")}if(typeof i>"u"){if(typeof n!="string")throw new Error(`can't index top-level map with ${n}`);typeof a>"u"?delete e[n]:e[n]=a;return}if(typeof e[i]>"u"&&(e[i]={}),c){let[f,l]=n;f!=null&&l!=null&&(typeof a>"u"&&f!=null&&l!=null?delete e[i][f||l]:e[i][f||l]=a)}else if(typeof a>"u")delete e[i][n];else{if(typeof e[i]=="string")return;e[i][n]=a}return}if(typeof i>"u")throw new Error("cant treat top level as a seq");i=i;let s=o[0];if(typeof e[i]>"u")if(typeof s=="string")e[i]={};else if(typeof s=="number")e[i]=[];else throw new Error(`can't go down this road ${e}.${i}.${s}`);e=e[i]}}function St(e,t){for(let r=0;r<t.length;r++)e=e?e[t[r]]:void 0;return e}function Tt(e,t){let r=e.path.slice(0,-1),n=e.path[e.path.length-1];switch(e.action){case"mark":case"unmark":return $t(`skipping ${e.action} because it doesn't affect material reality`),[];case"inc":if(t)return[r,n,St(t.patchInfo.after,e.path)];throw new Error(`can't apply ${e.action} without payload argument`);case"conflict":if(t)return[r,n,St(t.patchInfo.after,e.path)];throw new Error(`can't apply ${e.action} without payload argument`);case"del":return typeof n=="string"?[r,n]:[r,[n,n+(e.length||1)]];case"insert":return[r,[n,n],e.values];case"splice":return[r,[n,n],[e.value]];case"put":return[r,n,e.value]}}function ye(e){return t=>{for(let r of e.patches)Rt(t,...Tt(r,e))}}import{createMemo as Jo}from"solid-js";import{onCleanup as Ho}from"solid-js";import{createStore as Bo,produce as qo,reconcile as It}from"solid-js/store";var te=new WeakMap;function xe(e){if(Ho(()=>{let o=te.get(e);o&&(o.refs--||o.cleanup())}),te.has(e)){let o=te.get(e);return o.refs++,o.store}let[t,r]=Bo(e.doc());te.set(e,{refs:0,store:t,cleanup(){e.off("change",n),e.off("delete",a),te.delete(e)}});function n(o){if(o.scopeReplaced){r(It(o.doc??{}));return}r(qo(ye(o)))}function a(){r(It({}))}return e.on("change",n),e.on("delete",a),e.whenReady().then(()=>{r(e.doc())}),t}import{getOwner as Ti,onCleanup as Ii,createSignal as Ai,untrack as Di,sharedConfig as Oi,onMount as ji,DEV as Pi,equalFn as Li}from"solid-js";import{isServer as Mi}from"solid-js/web";var H=e=>typeof e=="function"&&!e.length?e():e;function _e(e){return Jo(()=>H(e)&&xe(H(e)))}import{createEffect as Yo,createResource as Xo,useContext as Ko}from"solid-js";import{createContext as Vo}from"solid-js";var Ce=Vo(null);function re(e,t){let r=Ko(Ce);if(!t?.repo&&!r)throw new Error("use outside <RepoContext> requires options.repo");let n=t?.repo||r;function a(){if(t?.["~skipInitialValue"])return;let s=H(e);if(!s)return;let c=n.findWithProgress(s).peek();return c.state==="ready"?c.handle:void 0}let[o,{mutate:i}]=Xo(e,s=>n.findWithProgress(s).whenReady(),{initialValue:a()});return Yo(()=>{H(e)||i()}),o}function ke(e,t){let r=re(e,t);return[_e(r),r]}import{onCleanup as ts}from"solid-js";import{createSignal as os}from"solid-js";import{createEffect as is,onCleanup as ss}from"solid-js";import{createSignal as cs}from"solid-js";import{useContext as gs}from"solid-js";import{getType as rn}from"@inkandswitch/patchwork-filesystem";import{getRegistry as on,isLoadedPlugin as nn}from"@inkandswitch/patchwork-plugins";import{createEffect as an,createMemo as Se,createSignal as Ke,onCleanup as sn,onMount as Pt,Show as Lt}from"solid-js";var jt=Dt("<span class=threepane__title-text>"),tn=Dt("<input class=threepane__title-input type=text>");function Ft(e){let t,[r,n]=Ke();return Pt(()=>{n(t.closest("repo-provider")?.repo)}),Xe(Lt,{get when(){return r()},get fallback(){return(()=>{var a=jt(),o=t;return typeof o=="function"?Ot(o,a):t=a,a})()},children:a=>Xe(ln,{get docUrl(){return e.docUrl},get repo(){return a()}})})}function ln(e){let[t,r]=ke(()=>e.docUrl(),{repo:e.repo}),n=on("patchwork:datatype"),[a,o]=Ke(0);Pt(()=>{let h=n.on("changed",()=>o(p=>p+1));sn(h)});let i=Se(()=>{let h=t();return h?rn(h):void 0});an(()=>{let h=i();h&&n.load(h)});let s=Se(()=>{a();let h=i();if(!h)return;let p=n.get(h);return p&&nn(p)?p:void 0}),c=Se(()=>{let h=t(),p=s();if(!(!h||!p))return p.module.getTitle(h)}),f=Se(()=>!!r()&&typeof s()?.module.setTitle=="function"),[l,d]=Ke(!1),u;function m(){f()&&(d(!0),queueMicrotask(()=>{u?.focus(),u?.select()}))}function g(h){if(!l()||(d(!1),!h))return;let p=u?.value.trim();if(!p||p===c())return;let b=r(),v=s()?.module.setTitle;!b||!v||b.change(y=>{v(y,p);let k=y["@patchwork"];k&&(k.title=p)})}return Xe(Lt,{get when(){return l()},get fallback(){return(()=>{var h=jt();return h.$$click=m,en(h,()=>c()??"Untitled"),At(p=>{var b=!!f(),v=f()?"Rename":void 0;return b!==p.e&&h.classList.toggle("threepane__title-text--editable",p.e=b),v!==p.t&&Qo(h,"title",p.t=v),p},{e:void 0,t:void 0}),h})()},get children(){var h=tn();h.$$keydown=b=>{b.key==="Enter"?(b.preventDefault(),g(!0)):b.key==="Escape"&&(b.preventDefault(),g(!1))},h.addEventListener("blur",()=>g(!0));var p=u;return typeof p=="function"?Ot(p,h):u=h,At(()=>h.value=c()??""),h}})}Zo(["keydown","click"]);import{template as ne}from"solid-js/web";import{delegateEvents as xn}from"solid-js/web";import{getOwner as _n}from"solid-js/web";import{insert as oe}from"solid-js/web";import{createComponent as J}from"solid-js/web";import{Show as Ge}from"solid-js";import{template as Ee}from"solid-js/web";import{delegateEvents as cn}from"solid-js/web";import{setStyleProperty as dn}from"solid-js/web";import{setAttribute as Mt}from"solid-js/web";import{insert as B}from"solid-js/web";import{memo as q}from"solid-js/web";import{effect as zt}from"solid-js/web";import{getOwner as un}from"solid-js/web";var fn=Ee("<patchwork-view>",!0,!1,!1),pn=Ee("<div class=sidebar>"),Ut=Ee('<button class="sidebar-toggle sidebar-toggle--resizable"aria-label="Toggle or resize sidebar"title="Click to toggle, drag to resize">'),Wt=Ee('<button class="sidebar-toggle sidebar-toggle--resizable"aria-label="Expand sidebar"title="Click to expand, drag to resize">');function Nt(e){let t=()=>`${e.isCollapsed()?0:e.width()}px`,r=()=>e.children!==void 0?e.children:e.toolId&&e.docUrl?(()=>{var a=fn();return a._$owner=un(),zt(o=>{var i=e.docUrl,s=e.toolId;return i!==o.e&&(a.docUrl=o.e=i),s!==o.t&&(a.toolId=o.t=s),o},{e:void 0,t:void 0}),a})():null,n=()=>e.canExpand?.()??!0;return(()=>{var a=pn();return B(a,(()=>{var o=q(()=>e.side==="left"&&!e.isCollapsed());return()=>o()&&r()})(),null),B(a,(()=>{var o=q(()=>e.side==="left"&&!e.isCollapsed());return()=>o()&&(()=>{var i=Ut();return i.$$mousedown=s=>e.onMouseDown(e.side,s),i.$$click=s=>e.onToggleClick(e.side,s),i})()})(),null),B(a,(()=>{var o=q(()=>!!(e.side==="left"&&e.isCollapsed()&&n()));return()=>o()&&(()=>{var i=Wt();return i.$$mousedown=s=>e.onMouseDown(e.side,s),i.$$click=s=>e.onToggleClick(e.side,s),i})()})(),null),B(a,(()=>{var o=q(()=>e.side==="right"&&!e.isCollapsed());return()=>o()&&(()=>{var i=Ut();return i.$$mousedown=s=>e.onMouseDown(e.side,s),i.$$click=s=>e.onToggleClick(e.side,s),i})()})(),null),B(a,(()=>{var o=q(()=>!!(e.side==="right"&&e.isCollapsed()&&n()));return()=>o()&&(()=>{var i=Wt();return i.$$mousedown=s=>e.onMouseDown(e.side,s),i.$$click=s=>e.onToggleClick(e.side,s),i})()})(),null),B(a,(()=>{var o=q(()=>e.side==="right"&&!e.isCollapsed());return()=>o()&&r()})(),null),zt(o=>{var i=e.side,s=e.isCollapsed()?"":void 0,c=t();return i!==o.e&&Mt(a,"data-side",o.e=i),s!==o.t&&Mt(a,"data-collapsed",o.t=s),c!==o.a&&dn(a,"width",o.a=c),o},{e:void 0,t:void 0,a:void 0}),a})()}cn(["click","mousedown"]);import{template as Bt}from"solid-js/web";import{delegateEvents as hn}from"solid-js/web";import{setAttribute as mn}from"solid-js/web";import{effect as gn}from"solid-js/web";import{insert as Ht}from"solid-js/web";import{createComponent as bn}from"solid-js/web";import{For as yn}from"solid-js";var vn=Bt("<div role=tablist class=context-sidebar__tablist>"),wn=Bt("<button type=button role=tab class=context-sidebar__tab>");function qt(e){let t=()=>{let r=e.items().map(a=>a.id),n=e.selectedToolId();return n&&r.includes(n)?n:r[0]};return(()=>{var r=vn();return Ht(r,bn(yn,{get each(){return e.items()},children:n=>(()=>{var a=wn();return a.$$click=()=>e.setSelectedToolId(n.id),Ht(a,()=>n.name),gn(()=>mn(a,"data-active",t()===n.id?"":void 0)),a})()})),r})()}hn(["click"]);var Cn=ne('<div class=context-sidebar__tabs><button type=button class=context-sidebar__close title="Hide context sidebar"aria-label="Hide context sidebar">'),kn=ne("<div class=context-sidebar__content>"),Sn=ne("<div class=context-sidebar>"),En=ne("<patchwork-view>",!0,!1,!1),$n=ne('<svg xmlns=http://www.w3.org/2000/svg width=18 height=18 viewBox="0 0 24 24"fill=none stroke=var(--studio-chrome-line) stroke-width=1.75 stroke-linecap=round stroke-linejoin=round><rect width=18 height=18 x=3 y=3 rx=2></rect><path d="M15 3v18">');function Jt(e){let t=ee("context-tool"),r=()=>{let n=t().map(o=>o.id),a=e.selectedToolId();return a&&n.includes(a)?a:n[0]};return J(Nt,{side:"right",get isCollapsed(){return e.isCollapsed},get width(){return e.width},get onMouseDown(){return e.onMouseDown},get onToggleClick(){return e.onToggleClick},get canExpand(){return e.canExpand},get children(){var n=Sn();return oe(n,J(Ge,{get when(){return t().length},get children(){var a=Cn(),o=a.firstChild;return oe(a,J(qt,{items:t,get selectedToolId(){return e.selectedToolId},get setSelectedToolId(){return e.setSelectedToolId}}),o),o.$$click=()=>e.onCollapse(),oe(o,J(Ze,{})),a}}),null),oe(n,J(Ge,{get when(){return!e.isCollapsed()},get children(){var a=kn();return oe(a,J(Ge,{get when(){return r()},keyed:!0,children:o=>(()=>{var i=En();return i.component=o,i._$owner=_n(),i})()})),a}}),null),n}})}function Ze(){return $n()}xn(["click"]);import{template as Rn}from"solid-js/web";import{effect as Vt}from"solid-js/web";import{getOwner as Yt}from"solid-js/web";import{createComponent as Tn}from"solid-js/web";import{memo as In}from"solid-js/web";import{Show as An}from"solid-js";var Xt=Rn("<patchwork-view>",!0,!1,!1),Kt=e=>Array.isArray(e)?String(e[0]):String(e);function Sl(e){return Tn(An,{get when(){return In(()=>!!Array.isArray(e.slot))()?e.slot:!1},get fallback(){return(()=>{var t=Xt();return t._$owner=Yt(),Vt(()=>t.component=String(e.slot)),t})()},children:t=>(()=>{var r=Xt();return r._$owner=Yt(),Vt(n=>{var a=t()[1],o=t()[0];return a!==n.e&&(r.docUrl=n.e=a),o!==n.t&&(r.toolId=n.t=o),n},{e:void 0,t:void 0}),r})()})}var Pn=ae("<div class=threepane__title>"),Ln=ae("<div class=threepane__doctitle-tools>"),Fn=ae('<button type=button class=frame__sidebar-toggle title="Show context sidebar"aria-label="Show context sidebar">'),Mn=ae("<div class=frame__topbar><div class=threepane__spacer>"),zn=ae("<patchwork-view>",!0,!1,!1);function Qt(e){let t=()=>e.toolSlots()??[];return(()=>{var r=Mn(),n=r.firstChild;return V(r,Y(Qe,{get when(){return e.docUrl()},get children(){var a=Pn();return V(a,Y(Ft,{get docUrl(){return e.docUrl}})),a}}),n),V(r,Y(Qe,{get when(){return Zt(()=>!!e.docUrl())()&&t().length},get children(){var a=Ln();return V(a,Y(Un,{get each(){return t()},children:o=>(()=>{var i=zn();return i._$owner=On(),Gt(s=>{var c=Kt(o),f=e.docUrl();return c!==s.e&&(i.toolId=s.e=c),f!==s.t&&(i.docUrl=s.t=f),s},{e:void 0,t:void 0}),i})()})),a}}),null),V(r,Y(Qe,{get when(){return Zt(()=>!!e.hasContext())()&&e.isRightCollapsed()},get children(){var a=Fn();return a.$$click=()=>e.onToggleRight(),jn(a,"aria-pressed",!1),V(a,Y(Ze,{})),a}}),null),Gt(()=>r.classList.toggle("frame__topbar--left-collapsed",!!e.isLeftCollapsed())),r})()}Dn(["click"]);import{template as et}from"solid-js/web";import{effect as Wn}from"solid-js/web";import{getOwner as Nn}from"solid-js/web";import{insert as er}from"solid-js/web";import{memo as Hn}from"solid-js/web";import{createComponent as Bn}from"solid-js/web";import{use as qn}from"solid-js/web";import{Show as Xn}from"solid-js";var Jn=et("<div class=document-view>"),Vn=et("<patchwork-view>",!0,!1,!1),Yn=et("<div class=placeholder>Select a document in the sidebar");function tr({viewKey:e,selectedDocUrl:t,toolId:r,ref:n}){return(()=>{var a=Jn(),o=n;return typeof o=="function"?qn(o,a):n=a,er(a,Bn(Xn,{get when(){return e()},keyed:!0,children:i=>(()=>{var s=Vn();return s._$owner=Nn(),Wn(c=>{var f=t(),l=r();return f!==c.e&&(s.docUrl=c.e=f),l!==c.t&&(s.toolId=c.t=l),c},{e:void 0,t:void 0}),s})()}),null),er(a,(()=>{var i=Hn(()=>!t());return()=>i()&&Yn()})(),null),a})()}var Kn=tt("<patchwork-view component=patchwork-draft-list-provider>",!0,!1,!1),Gn=tt("<div class=frame__main-column><div class=frame__doc-column><div class=main-area>"),Zn=tt("<patchwork-view component=patchwork-draft-overlay-provider><patchwork-view component=patchwork-comments-provider><patchwork-view component=patchwork-focus-provider>",!0,!1,!1),ra=180,oa=720,na=120,aa=3;function ar(e){let[t,r]=I(e.initialRightCollapsed()),[n,a]=I(e.initialRightWidth());or(nr(t,g=>{try{localStorage.setItem(S.rightCollapsed,String(g))}catch{}},{defer:!0})),or(nr(n,g=>{try{localStorage.setItem(S.rightWidth,String(g))}catch{}},{defer:!0}));let[,o]=I(0),[,i]=I(!1),s=Ve({setLeftSidebarWidth:o,setRightSidebarWidth:a,setIsSidebarCollapsed:i,setIsRightSidebarCollapsed:r,isLeftCollapsed:()=>e.isLeftCollapsed(),isRightCollapsed:t,minWidth:ra,maxWidth:oa,autoCloseWidth:na,dragThreshold:aa});ta(()=>{let g=()=>r(!0);window.addEventListener(ge,g),ea(()=>window.removeEventListener(ge,g))});let[c,f]=Be(I(),{name:S.contextToolId}),[l,d]=I(),u=M("patchwork-draft-list-provider",l),m=()=>u()?l():void 0;return T(se,{get when(){return e.selectedDocUrl()},keyed:!0,children:g=>(()=>{var h=Kn();return Te(d,h),h.docUrl=g,h._$owner=Re(),ie(h,T(se,{get when(){return m()},children:p=>T(ia,{get host(){return p()},get setMainDocElement(){return e.setMainDocElement},get selectedDocUrl(){return e.selectedDocUrl},get selectedToolId(){return e.selectedToolId},get doctitleSlots(){return e.doctitleSlots},get isLeftCollapsed(){return e.isLeftCollapsed},isRightSidebarCollapsed:t,setIsRightSidebarCollapsed:r,rightSidebarWidth:n,get handleMouseDown(){return s.handleMouseDown},get handleToggleClick(){return s.handleToggleClick},selectedContextToolId:c,setSelectedContextToolId:f})})),h})()})}function ia(e){let[t]=pt(e.host,{type:"draft:checked-out"}),r=$e(()=>t()?.checkedOut??"main"),n=ee("context-tool"),a=()=>n().length>0,o=$e(()=>{let b=e.selectedDocUrl();if(!b)return b;let{documentId:v}=Qn(b),y=t()?.at?.[rr({documentId:v})]?.to;return y?rr({documentId:v,heads:y}):b}),i=$e(()=>{let b=o();return b&&`${b}|${JSON.stringify(t()?.at??null)}`}),[s,c]=I(),f=M("patchwork-draft-overlay-provider",s),[l,d]=I(),u=M("patchwork-comments-provider",l),[m,g]=I(),h=M("patchwork-focus-provider",m),p=$e(()=>f()&&u()&&h());return T(se,{get when(){return r()},keyed:!0,children:b=>(()=>{var v=Zn(),y=v.firstChild,k=y.firstChild;return Te(c,v),v.url=b==="main"?"":b,v._$owner=Re(),Te(d,y),y._$owner=Re(),Te(g,k),k._$owner=Re(),ie(k,T(se,{get when(){return p()},get children(){var O=Gn(),A=O.firstChild,j=A.firstChild;return ie(A,T(Qt,{get docUrl(){return e.selectedDocUrl},get toolSlots(){return e.doctitleSlots},get isLeftCollapsed(){return e.isLeftCollapsed},hasContext:a,get isRightCollapsed(){return e.isRightSidebarCollapsed},onToggleRight:()=>e.setIsRightSidebarCollapsed($=>!$)}),j),ie(j,T(tr,{viewKey:i,selectedDocUrl:o,get toolId(){return e.selectedToolId},ref:$=>e.setMainDocElement?.($)})),ie(O,T(se,{get when(){return a()},get children(){return T(Jt,{get selectedToolId(){return e.selectedContextToolId},get setSelectedToolId(){return e.setSelectedContextToolId},get isCollapsed(){return e.isRightSidebarCollapsed},get width(){return e.rightSidebarWidth},get onMouseDown(){return e.handleMouseDown},get onToggleClick(){return e.handleToggleClick},onCollapse:()=>e.setIsRightSidebarCollapsed(!0)})}}),null),O}})),v})()})}var Ie=`:root,
2
+ :host,
3
+ [theme] {
4
+ --threepane-bg: var(--studio-fill, white);
5
+ --threepane-sidebar-fill: var(--studio-chrome, var(--studio-fill, white));
6
+ --threepane-fg: var(--studio-line, black);
7
+ /* ink for text sitting ON the sidebar/account-bar chrome surface. mirrors the
8
+ toolbar/context-sidebar fg: it rides --studio-chrome-line (the chrome's own
9
+ ink) so it tracks the chrome palette, not the content page. --threepane-fg
10
+ is content ink and only belongs on --threepane-bg surfaces. */
11
+ --threepane-sidebar-fg: var(--studio-chrome-line, var(--studio-line, black));
12
+ --threepane-muted: var(--studio-line-offset-50, #999);
13
+ --threepane-family: var(--studio-family-sans, system-ui, sans-serif);
14
+ --threepane-family-code: var(--studio-family-code, ui-monospace, monospace);
15
+
16
+ /* spacing scale, aliased from the base theme */
17
+ --threepane-space-3xs: var(--studio-space-3xs, 0.125rem);
18
+ --threepane-space-2xs: var(--studio-space-2xs, 0.25rem);
19
+ --threepane-space-xs: var(--studio-space-xs, 0.375rem);
20
+ --threepane-space-sm: var(--studio-space-sm, 0.5rem);
21
+ --threepane-space: var(--studio-space, 0.75rem);
22
+ --threepane-space-md: var(--studio-space-md, 1rem);
23
+ --threepane-space-2xl: var(--studio-space-2xl, 3rem);
24
+
25
+ /* radius scale, aliased from the base theme */
26
+ --threepane-radius-xs: var(--studio-radius-xs, 2px);
27
+ --threepane-radius-sm: var(--studio-radius-sm, 4px);
28
+ --threepane-radius-md: var(--studio-radius-md, 8px);
29
+ --threepane-radius-round: var(--studio-radius-round, 9999px);
30
+
31
+ /* Height of the frame's top strip: the top bar over the main column, and the
32
+ matching empty space reserved above the left sidebar's widgets so the two
33
+ line up and the left toggle has a home. */
34
+ --threepane-header-height: calc(
35
+ env(safe-area-inset-top, 0px) + var(--threepane-space-2xl)
36
+ );
37
+
38
+ /* the left footer and right tray boxes share one height so they line up. */
39
+ --threepane-tray-height: var(--threepane-space-2xl);
40
+ /* sidebar toggles ride a touch paler than the line (first ink offset). they
41
+ sit on chrome (left toggle over the sidebar, right over the toolbar), so
42
+ they use the chrome ink ramp, not the content one. */
43
+ --threepane-toggle-fg: var(--studio-chrome-line-offset-10, var(--studio-line-offset-10, #333));
44
+
45
+ --threepane-toolbar: var(--studio-chrome, white);
46
+ /* toolbar text rides on the chrome surface, so it uses the chrome ink */
47
+ --threepane-toolbar-fg: var(--studio-chrome-line, var(--studio-line, black));
48
+ --threepane-toolbar-border: var(--studio-chrome-offset-10, #ddd);
49
+ /* Resize handle: a faint 1px divider that tracks the chrome ramp's contrast
50
+ (it mixes toward the chrome ink, so it reads darker on light themes and
51
+ lighter on dark ones), plus a primary-tinted glow + grab pill on hover. */
52
+ --threepane-sidebar-divider: var(--studio-chrome-offset-20, #d4d4d4);
53
+ --threepane-resize-glow: color-mix(in oklch, var(--studio-primary-fill, var(--studio-primary, #35f7ca)), transparent 35%);
54
+ --threepane-resize-pill: var(--studio-primary-fill, var(--studio-primary, #35f7ca));
55
+
56
+ /* The context (right) sidebar sits on a chrome surface stepped one offset off
57
+ the toolbar's flat chrome, so the two chrome regions read as distinct. */
58
+ --threepane-context-sidebar-fill: var(--studio-chrome-offset-10, #ececec);
59
+
60
+ /* Context sidebar (tabbed) */
61
+ --context-sidebar-bg: var(--threepane-context-sidebar-fill);
62
+ /* the tab-bar header rides on the same flat chrome as the toolbar above it,
63
+ so the two chrome strips read as one continuous band */
64
+ --context-sidebar-header-bg: var(--studio-chrome, #f2f2f2);
65
+ --context-sidebar-fg: var(--studio-chrome-line, var(--studio-line, black));
66
+ /* match the lines drawn around the document-view so tab/tray edges read as
67
+ one continuous frame */
68
+ --context-sidebar-border: var(--threepane-toolbar-border);
69
+ --context-sidebar-tab-fg: var(--studio-chrome-line-offset-40, var(--studio-line-offset-40, #666));
70
+ --context-sidebar-tab-hover: var(--studio-chrome-offset-10, #e5e5e5);
71
+ --context-sidebar-tab-active-bg: var(--studio-fill, white);
72
+ --context-sidebar-tab-active-fg: var(--studio-line, black);
73
+ --context-sidebar-tab-active-accent: var(--studio-primary-line, var(--studio-primary, #35f7ca));
74
+ /* the content panel shares the active tab's surface so the selected tab
75
+ connects seamlessly into the tool view below it */
76
+ --context-sidebar-content-bg: var(--context-sidebar-tab-active-bg);
77
+ --context-sidebar-family: var(--studio-family-sans, system-ui, sans-serif);
78
+ }
79
+
80
+ .frame-shell {
81
+ display: flex;
82
+ flex-direction: column;
83
+ width: 100%;
84
+ height: 100%;
85
+ }
86
+
87
+ .frame-warning-banner {
88
+ flex: none;
89
+ padding: var(--threepane-space-2xs) var(--threepane-space-sm);
90
+ text-align: center;
91
+ text-transform: uppercase;
92
+ font-family: var(--studio-family-ui, var(--threepane-family));
93
+ font-size: 0.75rem;
94
+ background: var(--studio-warning-fill, yellow);
95
+ color: var(--studio-warning-line);
96
+ }
97
+
98
+ .frame {
99
+ position: relative;
100
+ display: flex;
101
+ width: 100%;
102
+ flex: 1;
103
+ min-height: 0;
104
+ font-family: var(--threepane-family);
105
+ color: var(--threepane-fg);
106
+ background: var(--threepane-bg);
107
+ }
108
+
109
+ .frame__version {
110
+ position: absolute;
111
+ top: var(--threepane-space-2xs);
112
+ right: var(--threepane-space-sm);
113
+ z-index: 10;
114
+ color: var(--threepane-muted);
115
+ font-size: 0.75rem;
116
+ font-weight: 500;
117
+ pointer-events: none;
118
+ user-select: none;
119
+ }
120
+
121
+ .sidebar {
122
+ position: relative;
123
+ display: flex;
124
+ flex: none;
125
+ /* visible so the resize handle can straddle the boundary (sit on *both*
126
+ sides of the divider line); the content clips itself instead. z-index lifts
127
+ the handle's outer half above the main area so it stays grabbable. */
128
+ overflow: visible;
129
+ z-index: 1;
130
+ }
131
+
132
+ .sidebar[data-collapsed] {
133
+ overflow: visible;
134
+ }
135
+
136
+ .sidebar[data-side="left"] {
137
+ background: var(--threepane-sidebar-fill);
138
+ color: var(--threepane-sidebar-fg);
139
+ }
140
+
141
+ .sidebar[data-side="right"] {
142
+ background: var(--threepane-context-sidebar-fill);
143
+ }
144
+
145
+ .main-area {
146
+ flex: 1;
147
+ min-width: 0;
148
+ display: flex;
149
+ flex-direction: column;
150
+ height: 100%;
151
+ overflow: hidden;
152
+ }
153
+
154
+ /* The main column (right of the left sidebar): a row of
155
+ [document column | right sidebar], so the right sidebar spans the full frame
156
+ height and its resize divider runs top-to-bottom exactly like the left one. */
157
+ .frame__main-column {
158
+ position: relative;
159
+ flex: 1;
160
+ min-width: 0;
161
+ display: flex;
162
+ flex-direction: row;
163
+ height: 100%;
164
+ overflow: hidden;
165
+ }
166
+
167
+ /* The document column: the top bar over the main document view. Sits left of the
168
+ full-height context sidebar. */
169
+ .frame__doc-column {
170
+ flex: 1;
171
+ min-width: 0;
172
+ width: 100%;
173
+ display: flex;
174
+ flex-direction: column;
175
+ height: 100%;
176
+ overflow: hidden;
177
+ }
178
+
179
+ .frame__doc-column > patchwork-view,
180
+ .frame__doc-column > patchwork-view > patchwork-view,
181
+ .frame__doc-column > patchwork-view > patchwork-view > patchwork-view,
182
+ .frame__doc-column
183
+ > patchwork-view
184
+ > patchwork-view
185
+ > patchwork-view
186
+ > patchwork-view {
187
+ display: contents;
188
+ }
189
+
190
+ /* The full-width top toolbar. Its height + top safe-area inset match the
191
+ sideboard's reserved top margin so the bar reads as continuous across the top
192
+ (the left sidebar's empty top region lines up with it). */
193
+ .frame__topbar {
194
+ display: flex;
195
+ align-items: stretch;
196
+ box-sizing: border-box;
197
+ min-height: var(--threepane-space-2xl);
198
+ padding-top: env(safe-area-inset-top, 0px);
199
+ padding-inline: var(--threepane-space-2xs);
200
+ gap: var(--threepane-space-2xs);
201
+ background: var(--threepane-toolbar);
202
+ color: var(--threepane-toolbar-fg);
203
+ /* A hairline along the bottom, in the same colour as the document-view's
204
+ border, so the line under the bar runs unbroken across the whole width
205
+ (document column + context tabs). The active tab pulls down 1px to break
206
+ through it and connect to its panel below. */
207
+ border-bottom: 1px solid var(--threepane-toolbar-border);
208
+ /* Animate the collapsed left-slot in step with the sidebar's width transition
209
+ so the title glides up against the pinned toggle instead of jumping. */
210
+ transition: padding-left var(--studio-transition-slow, 0.25s ease);
211
+ }
212
+
213
+ /* When the left sidebar is collapsed the bar's left edge reaches the frame edge,
214
+ where the pinned left toggle lives; reserve a matching slot so the title slides
215
+ up against the toggle rather than under it. */
216
+ .frame__topbar--left-collapsed {
217
+ padding-left: var(--threepane-space-2xl);
218
+ }
219
+
220
+ /* The left sidebar toggle, pinned to the frame's top-left corner so it keeps the
221
+ same spot whether the sidebar is open or closed. Square, filling the top strip;
222
+ sits over the sidebar's reserved (empty) top area when open. */
223
+ .frame__left-toggle {
224
+ position: absolute;
225
+ top: 0;
226
+ left: 0;
227
+ z-index: 5;
228
+ width: var(--threepane-space-2xl);
229
+ height: var(--threepane-header-height);
230
+ padding-top: env(safe-area-inset-top, 0px);
231
+ }
232
+
233
+ /* A sidebar toggle at either end of the top bar (always present). */
234
+ .frame__sidebar-toggle {
235
+ display: flex;
236
+ align-items: center;
237
+ justify-content: center;
238
+ flex-shrink: 0;
239
+ padding-inline: var(--threepane-space-sm);
240
+ border: none;
241
+ background: transparent;
242
+ color: var(--threepane-toggle-fg);
243
+ cursor: pointer;
244
+ transition: color var(--studio-transition-fast, 0.1s ease);
245
+ }
246
+
247
+ .frame__sidebar-toggle:hover {
248
+ color: var(--threepane-sidebar-fg);
249
+ }
250
+
251
+ /* The document title, rendered intrinsically: shrinks to the title's width but
252
+ never past half the bar; ellipsis beyond. */
253
+ .threepane__title {
254
+ display: flex;
255
+ align-items: center;
256
+ flex: 0 1 auto;
257
+ min-width: 0;
258
+ max-width: 50%;
259
+ overflow: hidden;
260
+ padding-inline: var(--threepane-space-sm);
261
+ }
262
+
263
+ .threepane__title-text {
264
+ font-weight: 600;
265
+ white-space: nowrap;
266
+ min-width: 0;
267
+ overflow: hidden;
268
+ text-overflow: ellipsis;
269
+ }
270
+
271
+ .threepane__title-text--editable {
272
+ cursor: text;
273
+ }
274
+
275
+ .threepane__title-text--editable:hover {
276
+ opacity: 0.7;
277
+ }
278
+
279
+ .threepane__title-input {
280
+ font: inherit;
281
+ font-weight: 600;
282
+ color: inherit;
283
+ min-width: 0;
284
+ width: 100%;
285
+ padding: 0;
286
+ margin: 0;
287
+ border: none;
288
+ outline: none;
289
+ background: transparent;
290
+ }
291
+
292
+ /* built-in spacer between the title and the right-hand tools */
293
+ .threepane__spacer {
294
+ flex: 1;
295
+ min-width: var(--threepane-space-sm);
296
+ }
297
+
298
+ /* configured doctitle tools at the right end; scroll horizontally when they
299
+ overflow rather than squashing. */
300
+ .threepane__doctitle-tools {
301
+ display: flex;
302
+ align-items: center;
303
+ gap: var(--threepane-space-sm);
304
+ min-width: 0;
305
+ padding-inline: var(--threepane-space-sm);
306
+ overflow-x: auto;
307
+ overflow-y: hidden;
308
+ scrollbar-width: none;
309
+ }
310
+
311
+ .threepane__doctitle-tools::-webkit-scrollbar {
312
+ display: none;
313
+ }
314
+
315
+ .threepane__doctitle-tools patchwork-view {
316
+ display: flex;
317
+ align-items: center;
318
+ height: 2rem;
319
+ flex-shrink: 0;
320
+ width: auto;
321
+ }
322
+
323
+ .document-view {
324
+ flex: 1;
325
+ min-height: 0;
326
+ overflow: hidden;
327
+ /* Left divider only, square corners. The top line is the top bar's
328
+ border-bottom and the bottom is open to the frame edge. The right divider
329
+ (to the context sidebar) is the sidebar's own full-height border-left, so
330
+ it runs the whole frame height rather than just the document view. When the
331
+ left sidebar is collapsed the left divider is dropped (see the :has rule
332
+ below) so nothing rides the frame edge. */
333
+ border-left: 1px solid var(--threepane-toolbar-border);
334
+ }
335
+
336
+ /* Left sidebar collapsed to 0: drop the document-view's left divider so there's
337
+ no stray line hugging the frame's left edge. */
338
+ .frame:has(.sidebar[data-side="left"][data-collapsed]) .document-view {
339
+ border-left: none;
340
+ }
341
+
342
+ .document-view patchwork-view {
343
+ display: block;
344
+ width: 100%;
345
+ height: 100%;
346
+ }
347
+
348
+ .placeholder {
349
+ display: flex;
350
+ align-items: center;
351
+ justify-content: center;
352
+ height: 100%;
353
+ color: var(--threepane-fg);
354
+ }
355
+
356
+ .sidebar patchwork-view {
357
+ display: block;
358
+ width: 100%;
359
+ height: 100%;
360
+ /* the sidebar itself no longer clips, so the content does */
361
+ overflow: hidden;
362
+ }
363
+
364
+ /* Context sidebar (tabbed)
365
+ Ported from the standalone \`context-sidebar\` tool (main): lifted tabs with a
366
+ top accent bar and surface fill on the active tab, a hover surface, and a
367
+ bottom-border separator between the tab bar and the mounted tool view. */
368
+ .context-sidebar {
369
+ flex: 1;
370
+ min-width: 0;
371
+ width: 100%;
372
+ height: 100%;
373
+ display: flex;
374
+ flex-direction: column;
375
+ overflow: hidden;
376
+ font-family: var(--context-sidebar-family);
377
+ color: var(--context-sidebar-fg);
378
+ background: var(--context-sidebar-bg);
379
+ /* The full-height divider between the document column and the sidebar. Lives
380
+ here (not on the document view) so it runs the whole frame height \u2014 top bar
381
+ level included \u2014 and the resize handle straddling this edge is grabbable end
382
+ to end, matching the left sidebar. */
383
+ border-left: 1px solid var(--context-sidebar-border);
384
+ }
385
+
386
+ /* Tab bar: the row holding the tab list and the collapse button. Its height +
387
+ top safe-area inset match the document column's top bar so the two header
388
+ strips line up and their bottom hairlines read as one continuous line across
389
+ the divider. */
390
+ .context-sidebar__tabs {
391
+ display: flex;
392
+ align-items: flex-end;
393
+ box-sizing: border-box;
394
+ min-height: var(--threepane-space-2xl);
395
+ padding-top: env(safe-area-inset-top, 0px);
396
+ background: var(--context-sidebar-header-bg);
397
+ border-bottom: 1px solid var(--context-sidebar-border);
398
+ }
399
+
400
+ .context-sidebar__tablist {
401
+ display: flex;
402
+ flex: 1;
403
+ min-width: 0;
404
+ align-items: flex-end;
405
+ gap: var(--threepane-space-2xs);
406
+ padding-inline: var(--threepane-space-2xs);
407
+ /* when there are more tabs than fit, scroll them horizontally rather than
408
+ letting them shrink/wrap; scrollbar hidden for a clean header. */
409
+ overflow-x: auto;
410
+ overflow-y: hidden;
411
+ scrollbar-width: none;
412
+ /* extend the clip box 1px past the tab-bar border (compensated by the
413
+ negative margin so layout is unchanged) so the active tab's -1px overflow
414
+ isn't clipped by the horizontal scroll container, and it can still cover
415
+ the border-bottom to connect into the panel. */
416
+ padding-bottom: 1px;
417
+ margin-bottom: -1px;
418
+ }
419
+ .context-sidebar__tablist::-webkit-scrollbar {
420
+ display: none;
421
+ }
422
+
423
+ /* A single tab. */
424
+ .context-sidebar__tab {
425
+ display: flex;
426
+ align-items: center;
427
+ flex-shrink: 0;
428
+ padding: var(--threepane-space-xs) var(--threepane-space-sm);
429
+ border: 1px solid transparent;
430
+ border-bottom: none;
431
+ border-top-left-radius: var(--threepane-radius-xs);
432
+ border-top-right-radius: var(--threepane-radius-xs);
433
+ background: transparent;
434
+ font-family: inherit;
435
+ font-size: 0.875rem;
436
+ white-space: nowrap;
437
+ color: var(--context-sidebar-tab-fg);
438
+ cursor: pointer;
439
+ user-select: none;
440
+ transition: background var(--studio-transition-fast, 0.1s ease),
441
+ color var(--studio-transition-fast, 0.1s ease);
442
+ }
443
+
444
+ .context-sidebar__tab:hover {
445
+ background: var(--context-sidebar-tab-hover);
446
+ color: var(--context-sidebar-tab-active-fg);
447
+ }
448
+
449
+ /* Exception: the selected tab. Pulled down 1px so its fill covers the tab-bar's
450
+ bottom border, connecting the tab seamlessly into the panel below. */
451
+ .context-sidebar__tab[data-active] {
452
+ position: relative;
453
+ margin-bottom: -1px;
454
+ background: var(--context-sidebar-tab-active-bg);
455
+ color: var(--context-sidebar-tab-active-fg);
456
+ border-color: var(--context-sidebar-border);
457
+ box-shadow: inset 0 1px 0 0 var(--context-sidebar-tab-active-accent);
458
+ }
459
+
460
+ /* The close (collapse) button. Centred vertically in the tab header (the header
461
+ is otherwise flex-end for the tabs) so it lands at the same height as the
462
+ reopen toggle in the top bar when the sidebar is collapsed. */
463
+ .context-sidebar__close {
464
+ display: flex;
465
+ align-items: center;
466
+ justify-content: center;
467
+ align-self: center;
468
+ flex-shrink: 0;
469
+ padding-inline: var(--threepane-space-sm);
470
+ margin-right: var(--threepane-space-2xs);
471
+ border: none;
472
+ background: transparent;
473
+ color: var(--context-sidebar-fg);
474
+ cursor: pointer;
475
+ opacity: 0.5;
476
+ transition: opacity var(--studio-transition-fast, 0.1s ease);
477
+ }
478
+
479
+ .context-sidebar__close:hover {
480
+ opacity: 1;
481
+ }
482
+
483
+ /* The mounted tool view. */
484
+ .context-sidebar__content {
485
+ flex: 1;
486
+ min-height: 0;
487
+ overflow: auto;
488
+ background: var(--context-sidebar-content-bg);
489
+ contain: content;
490
+ }
491
+
492
+ .context-sidebar__content patchwork-view {
493
+ display: block;
494
+ width: 100%;
495
+ height: 100%;
496
+ }
497
+
498
+ /* Left sidebar body: a stack of widgets with the account footer pinned below. */
499
+ .threepane-sidebar {
500
+ display: flex;
501
+ flex-direction: column;
502
+ width: 100%;
503
+ height: 100%;
504
+ min-height: 0;
505
+ }
506
+
507
+ /* Reserve the docked tray's height at the sidebar's bottom so the account bar
508
+ sits above the tray (which is pinned outside this collapsing column). */
509
+ .threepane-sidebar--has-tray {
510
+ padding-bottom: calc(
511
+ var(--threepane-tray-height) + env(safe-area-inset-bottom, 0px)
512
+ );
513
+ }
514
+
515
+ /* account / packages / settings footer, pinned to the sidebar bottom */
516
+ .threepane-sidebar--has-tray .threepane-sidebar__footer {
517
+ flex: none;
518
+ margin-bottom: calc(var(--threepane-tray-height) + env(safe-area-inset-bottom, 0px));
519
+ }
520
+
521
+ /* The inlined account bar: avatar (account picker) + Packages + Settings. Ported
522
+ from the sideboard \`account-bar\` tool onto threepane tokens so the frame owns
523
+ the markup directly. */
524
+ .threepane-account-bar {
525
+ container-type: inline-size;
526
+ display: flex;
527
+ align-items: center;
528
+ gap: var(--threepane-space-md);
529
+ min-height: var(--threepane-space-2xl);
530
+ box-sizing: border-box;
531
+ background: var(--threepane-sidebar-fill);
532
+ color: var(--threepane-sidebar-fg);
533
+ border-top: 1px solid var(--threepane-sidebar-divider);
534
+ padding-block: var(--threepane-space-2xs);
535
+ padding-bottom: calc(var(--threepane-space-2xs) + env(safe-area-inset-bottom));
536
+ padding-left: calc(env(safe-area-inset-left) + var(--threepane-space-md));
537
+ padding-right: calc(env(safe-area-inset-right) + var(--threepane-space-md));
538
+ justify-content: space-between;
539
+ overflow: hidden;
540
+ }
541
+
542
+ .threepane-account-bar__button {
543
+ display: flex;
544
+ align-items: center;
545
+ border: 1px solid transparent;
546
+ padding-inline: var(--threepane-space-2xs);
547
+ padding-block: var(--threepane-space-3xs);
548
+ border-radius: var(--threepane-radius-xs);
549
+ background: transparent;
550
+ color: inherit;
551
+ font: inherit;
552
+ white-space: nowrap;
553
+ cursor: pointer;
554
+ }
555
+
556
+ .threepane-account-bar__button:hover {
557
+ border-color: var(--threepane-sidebar-divider);
558
+ }
559
+
560
+ .threepane-account-bar__avatar {
561
+ padding: 0;
562
+ }
563
+
564
+ .threepane-account-bar__avatar patchwork-view {
565
+ display: block;
566
+ width: 100%;
567
+ height: 100%;
568
+ }
569
+
570
+ /* Left sidebar: a stack of configured widgets. The widgets start below the
571
+ frame's top strip (the empty space matching the top bar), so the frame owns
572
+ that spacing rather than each widget reserving its own top margin. */
573
+ .threepane-widgets {
574
+ flex: 1;
575
+ display: flex;
576
+ flex-direction: column;
577
+ width: 100%;
578
+ min-height: 0;
579
+ padding-top: var(--threepane-header-height);
580
+ gap: 1rem;
581
+ }
582
+
583
+ .threepane-widget {
584
+ position: relative;
585
+ flex: 1;
586
+ min-height: 0;
587
+ overflow: hidden;
588
+ }
589
+
590
+ .threepane-widget patchwork-view {
591
+ display: block;
592
+ width: 100%;
593
+ height: 100%;
594
+ }
595
+
596
+ /* empty state: offer to add the document list */
597
+ .threepane-widgets__empty {
598
+ flex: 1;
599
+ display: flex;
600
+ align-items: flex-start;
601
+ justify-content: center;
602
+ }
603
+
604
+ .threepane-widgets__add {
605
+ padding: var(--threepane-space-xs) var(--threepane-space-sm);
606
+ border: 1px dashed var(--threepane-sidebar-divider);
607
+ border-radius: var(--threepane-radius-sm);
608
+ background: transparent;
609
+ color: var(--threepane-muted);
610
+ font: inherit;
611
+ cursor: pointer;
612
+ white-space: nowrap;
613
+ }
614
+
615
+ .threepane-widgets__add:hover:not(:disabled) {
616
+ color: var(--threepane-sidebar-fg);
617
+ border-color: var(--threepane-sidebar-fg);
618
+ }
619
+
620
+ .threepane-widgets__add:disabled {
621
+ opacity: 0.5;
622
+ cursor: default;
623
+ }
624
+
625
+ /* System tray dock: pinned to the frame's bottom-left. Lives outside the
626
+ collapsing left sidebar so it isn't torn down when the sidebar closes. When
627
+ the sidebar is open the dock spans its width (set inline) and fills the space
628
+ reserved by \`threepane-sidebar--has-tray\`; when the sidebar closes the dock is
629
+ hidden (\`display: none\`) but stays mounted, so the tray is invisible while its
630
+ tools keep running. */
631
+ .frame__tray-dock {
632
+ position: absolute;
633
+ left: 0;
634
+ bottom: 0;
635
+ z-index: 4;
636
+ box-sizing: border-box;
637
+ /* Fade the tray in only *after* the sidebar's width animation completes, so it
638
+ doesn't flash at full size over the still-expanding sidebar. The delay equals
639
+ the sidebar's transition duration; collapsing overrides this to hide at once. */
640
+ opacity: 1;
641
+ transition: opacity 0.1s ease 0.25s;
642
+ }
643
+
644
+ .frame__tray-dock--collapsed {
645
+ opacity: 0;
646
+ pointer-events: none;
647
+ /* Hide immediately on collapse \u2014 no wait, no fade. */
648
+ transition: opacity 0s;
649
+ }
650
+
651
+ /* A row of tray-tagged tools, filling the dock. */
652
+ .frame-tray {
653
+ display: flex;
654
+ align-items: center;
655
+ gap: var(--threepane-space-2xs);
656
+ box-sizing: border-box;
657
+ /* min-height includes the safe-area inset (border-box), and the matching
658
+ padding-bottom lifts the tray's contents clear of it while the tray's own
659
+ background fills the inset down to the very bottom edge. */
660
+ min-height: calc(
661
+ var(--threepane-tray-height) + env(safe-area-inset-bottom, 0px)
662
+ );
663
+ padding-inline: var(--threepane-space-sm);
664
+ padding-bottom: env(safe-area-inset-bottom, 0px);
665
+ border-top: 1px solid var(--threepane-sidebar-divider);
666
+ background: var(--threepane-sidebar-fill);
667
+ }
668
+
669
+ .frame-tray__item {
670
+ display: flex;
671
+ align-items: center;
672
+ }
673
+
674
+ .frame-tray patchwork-view {
675
+ display: flex;
676
+ width: auto;
677
+ height: auto;
678
+ }
679
+
680
+ /* Debug Registry Toast */
681
+ .debug-registry-toast {
682
+ position: fixed;
683
+ bottom: var(--threepane-space-md);
684
+ right: var(--threepane-space-md);
685
+ z-index: 9999;
686
+ max-width: 360px;
687
+ font-family: var(--threepane-family-code);
688
+ font-size: 0.75rem;
689
+ background: oklch(0.15 0.01 270);
690
+ border: 1px solid oklch(0.35 0.03 270);
691
+ border-radius: var(--threepane-radius-md);
692
+ box-shadow:
693
+ 0 8px 32px oklch(0 0 0 / 0.4),
694
+ 0 0 0 1px oklch(1 0 0 / 0.05) inset;
695
+ overflow: hidden;
696
+ backdrop-filter: blur(12px);
697
+ }
698
+
699
+ .debug-registry-toast__header {
700
+ display: flex;
701
+ align-items: center;
702
+ justify-content: space-between;
703
+ padding: var(--threepane-space-sm) var(--threepane-space);
704
+ background: oklch(0.2 0.02 270);
705
+ border-bottom: 1px solid oklch(0.3 0.02 270);
706
+ }
707
+
708
+ .debug-registry-toast__title {
709
+ color: oklch(0.85 0.1 270);
710
+ font-weight: 600;
711
+ letter-spacing: 0.02em;
712
+ }
713
+
714
+ .debug-registry-toast__clear {
715
+ background: none;
716
+ border: none;
717
+ color: oklch(0.6 0.05 270);
718
+ cursor: pointer;
719
+ padding: var(--threepane-space-2xs) var(--threepane-space-sm);
720
+ border-radius: var(--threepane-radius-sm);
721
+ transition: all 0.15s ease;
722
+ }
723
+
724
+ .debug-registry-toast__clear:hover {
725
+ background: oklch(0.25 0.02 270);
726
+ color: oklch(0.9 0.05 0);
727
+ }
728
+
729
+ .debug-registry-toast__list {
730
+ max-height: 300px;
731
+ overflow-y: auto;
732
+ }
733
+
734
+ .debug-registry-toast__item {
735
+ display: flex;
736
+ align-items: flex-start;
737
+ gap: var(--threepane-space-sm);
738
+ padding: var(--threepane-space-sm) var(--threepane-space);
739
+ border-left: 3px solid transparent;
740
+ cursor: pointer;
741
+ transition: all 0.15s ease;
742
+ animation: toast-slide-in 0.2s ease-out;
743
+ }
744
+
745
+ .debug-registry-toast__item:hover {
746
+ background: oklch(0.2 0.01 270);
747
+ }
748
+
749
+ .debug-registry-toast__item:not(:last-child) {
750
+ border-bottom: 1px solid oklch(0.25 0.01 270);
751
+ }
752
+
753
+ .debug-registry-toast__icon {
754
+ font-size: 0.875rem;
755
+ line-height: 1;
756
+ flex-shrink: 0;
757
+ }
758
+
759
+ .debug-registry-toast__content {
760
+ display: flex;
761
+ flex-direction: column;
762
+ gap: var(--threepane-space-3xs);
763
+ min-width: 0;
764
+ }
765
+
766
+ .debug-registry-toast__event-type {
767
+ color: oklch(0.7 0.15 150);
768
+ font-weight: 600;
769
+ text-transform: uppercase;
770
+ letter-spacing: 0.05em;
771
+ font-size: 0.625rem;
772
+ }
773
+
774
+ .debug-registry-toast__plugin-type {
775
+ color: oklch(0.6 0.1 60);
776
+ font-size: 0.6875rem;
777
+ }
778
+
779
+ .debug-registry-toast__plugin-id {
780
+ color: oklch(0.9 0.02 270);
781
+ font-weight: 500;
782
+ overflow: hidden;
783
+ text-overflow: ellipsis;
784
+ white-space: nowrap;
785
+ }
786
+ }
787
+ @keyframes toast-slide-in {
788
+ from {
789
+ opacity: 0;
790
+ transform: translateX(20px);
791
+ }
792
+ to {
793
+ opacity: 1;
794
+ transform: translateX(0);
795
+ }
796
+ }
797
+
798
+
799
+ /* Isolation-mode chrome popover.
800
+ In isolation the main document area is a sandboxed iframe, so host-realm tools
801
+ opened from the account bar (account picker / Packages / Settings) are floated
802
+ over the frame here instead of being routed into the iframe. The backdrop is a
803
+ lowish-opacity, theme-tinted ink wash (dims the frame + picks up the theme's
804
+ ink hue); the panel carries a soft drop shadow so it reads as lifted. Absolute
805
+ inset:0 resolves to the \`.frame\` (its nearest positioned ancestor). */
806
+ .frame__popover-backdrop {
807
+ position: absolute;
808
+ inset: 0;
809
+ z-index: 1000;
810
+ display: flex;
811
+ align-items: center;
812
+ justify-content: center;
813
+ padding: var(--threepane-space-2xl);
814
+ background: color-mix(in oklch, var(--threepane-fg), transparent 82%);
815
+ animation: frame-popover-fade var(--studio-transition, 0.15s ease);
816
+ }
817
+
818
+ .frame__popover {
819
+ display: flex;
820
+ flex-direction: column;
821
+ width: min(1100px, 100%);
822
+ height: min(900px, 100%);
823
+ overflow: hidden;
824
+ background: var(--threepane-bg);
825
+ color: var(--threepane-fg);
826
+ border: 1px solid var(--threepane-toolbar-border);
827
+ border-radius: var(--threepane-radius-md);
828
+ box-shadow:
829
+ 0 32px 80px color-mix(in oklch, var(--threepane-fg), transparent 45%),
830
+ 0 12px 32px color-mix(in oklch, var(--threepane-fg), transparent 60%),
831
+ 0 2px 8px color-mix(in oklch, var(--threepane-fg), transparent 70%);
832
+ animation: frame-popover-pop var(--studio-transition, 0.15s ease);
833
+ }
834
+
835
+ /* The "Open with" picker, docked to the popover's top. Sits at its natural
836
+ height above the tool body; the doc-openwith tool renders a small titlebar
837
+ button, so this is left-aligned chrome rather than a full-height view. */
838
+ .frame__popover-toolbar {
839
+ display: flex;
840
+ align-items: center;
841
+ flex: 0 0 auto;
842
+ gap: var(--threepane-space-sm);
843
+ padding: var(--threepane-space-sm) var(--threepane-space-md);
844
+ border-bottom: 1px solid var(--threepane-toolbar-border);
845
+ }
846
+
847
+ .frame__popover-toolbar patchwork-view {
848
+ display: block;
849
+ }
850
+
851
+ .frame__popover-body {
852
+ flex: 1 1 auto;
853
+ min-height: 0;
854
+ overflow: auto;
855
+ }
856
+
857
+ .frame__popover-body patchwork-view {
858
+ display: block;
859
+ width: 100%;
860
+ height: 100%;
861
+ overflow: auto;
862
+ }
863
+
864
+ @keyframes frame-popover-fade {
865
+ from {
866
+ opacity: 0;
867
+ }
868
+ to {
869
+ opacity: 1;
870
+ }
871
+ }
872
+
873
+ @keyframes frame-popover-pop {
874
+ from {
875
+ opacity: 0;
876
+ transform: translateY(8px) scale(0.98);
877
+ }
878
+ to {
879
+ opacity: 1;
880
+ transform: none;
881
+ }
882
+ }
883
+
884
+ /* Custom colors for event types */
885
+ :root,
886
+ :host,
887
+ [theme] {
888
+ --debug-toast-registered: var(--studio-secondary-text, color-mix(in oklch, var(--studio-secondary, #33ccf8), var(--studio-line, black) 20%));
889
+ --debug-toast-loaded: color-mix(in oklch, var(--studio-added, #35f7ca), var(--studio-line, black) 10%);
890
+ --debug-toast-removed: var(--studio-danger-text, color-mix(in oklch, var(--studio-danger, #ff6a90), var(--studio-line, black) 20%));
891
+ --debug-toast-changed: var(--studio-warning-text, color-mix(in oklch, var(--studio-warning, #f8c43b), var(--studio-line, black) 10%));
892
+ }
893
+
894
+ .frame {
895
+ .sidebar-toggle {
896
+ position: relative;
897
+ align-self: stretch;
898
+ height: 100%;
899
+ padding: 0;
900
+ /* 1px wide, overlapping the divider border while reserving no layout column
901
+ (content stays flush against the view's border - no offset-bg seam). The
902
+ divider border is painted inside the following column, so a centered 2px
903
+ strip reads half a pixel left of the line. */
904
+ width: 1px;
905
+ margin-inline: 0 -1px;
906
+ margin-block: 0;
907
+ border: 0;
908
+ z-index: 1;
909
+ cursor: pointer;
910
+ /* transparent at rest - the visible divider is the main view's border; the
911
+ handle lights up (full-height glow + pill) on hover to signal resize. */
912
+ background: transparent;
913
+ transition: background-color var(--studio-transition, 0.15s ease);
914
+ /* invisible hit target straddling the divider. The toggle sits on opposite
915
+ edges of the two sidebars (right edge of the left pane, left edge of the
916
+ right pane), so the asymmetric grab margin is mirrored per side to stay
917
+ centred over the divider line. */
918
+ &::before {
919
+ content: "";
920
+ position: absolute;
921
+ inset-block: 0;
922
+ }
923
+ &::after {
924
+ content: "";
925
+ position: absolute;
926
+ top: 50%;
927
+ left: 50%;
928
+ width: 5px;
929
+ height: 44px;
930
+ border-radius: var(--threepane-radius-round);
931
+ background: var(--threepane-resize-pill);
932
+ opacity: 0;
933
+ transform: translate(-50%, -50%) scaleY(0.55);
934
+ transition: opacity var(--studio-transition, 0.15s ease),
935
+ transform var(--studio-transition, 0.15s ease);
936
+ pointer-events: none;
937
+ }
938
+ /* on hover the divider line lights up in the frame primary */
939
+ &:hover,
940
+ &:active {
941
+ background: var(--threepane-resize-glow);
942
+ }
943
+ &:hover::after,
944
+ &:active::after {
945
+ opacity: 1;
946
+ transform: translate(-50%, -50%) scaleY(1);
947
+ }
948
+ }
949
+
950
+ .sidebar-toggle--resizable {
951
+ cursor: col-resize;
952
+ &:hover {
953
+ cursor: col-resize;
954
+ }
955
+ &:active {
956
+ cursor: col-resize;
957
+ }
958
+ }
959
+
960
+ }
961
+
962
+ /* Animate sidebar width on collapse/expand, but never while the handle is being
963
+ actively dragged - the width must track the pointer 1:1 with no easing lag.
964
+ The body flag is set for the duration of a drag by \`useSidebarResize\`. */
965
+ .sidebar {
966
+ transition: width var(--studio-transition-slow, 0.25s ease);
967
+ }
968
+ body[data-sidebar-resizing] .sidebar {
969
+ transition: none;
970
+ }
971
+ `;function ir(){let e="patchwork-frame-styles",t=document.getElementById(e);if(t){t.textContent!==Ie&&(t.textContent=Ie);return}let r=document.createElement("style");r.id=e,r.textContent=Ie,document.head.append(r)}var fa=cr("<patchwork-view component=patchwork-isolation root-component=threepane-isolation-root shared-providers=patchwork:contact,patchwork:selected-doc style=display:contents><script type=application/json data-root-component-data>",!0,!1,!1),pa=cr("<div class=frame>");function Sc(e){let t=sr(()=>{let n=new Set,a=e.selectedDocUrl();return a&&n.add(a),e.contactUrl&&n.add(e.contactUrl),[...n]}),r=sr(()=>JSON.stringify({selectedDocUrl:e.selectedDocUrl(),selectedToolId:e.selectedToolId(),doctitleSlots:e.doctitleSlots(),isLeftCollapsed:e.isLeftCollapsed(),initialRightWidth:e.initialRightWidth(),initialRightCollapsed:e.initialRightCollapsed()}));return(()=>{var n=fa(),a=n.firstChild;return n._$owner=ua(),dr(a,r),da(()=>ca(n,"automerge-allowlist",t().join(","))),n})()}function lr(e){if(!e?.textContent)return{};try{return JSON.parse(e.textContent)}catch(t){return console.error("[threepane-isolation-root] bad props JSON:",t),{}}}function Ec(e){ir();let t=e.querySelector('script[type="application/json"]'),[r,n]=ha(lr(t)),a=new MutationObserver(()=>{n(ma(lr(t)))});t&&a.observe(t,{characterData:!0,childList:!0,subtree:!0});let o=ga(()=>(()=>{var i=pa();return dr(i,la(ar,{selectedDocUrl:()=>r.selectedDocUrl,selectedToolId:()=>r.selectedToolId,doctitleSlots:()=>r.doctitleSlots,isLeftCollapsed:()=>r.isLeftCollapsed??!1,initialRightWidth:()=>r.initialRightWidth??Q,initialRightCollapsed:()=>r.initialRightCollapsed??!1})),i})(),e);return()=>{a.disconnect(),o()}}export{Ct as a,re as b,S as c,ge as d,Q as e,qe as f,Je as g,eo as h,Ve as i,uo as j,Ro as k,To as l,Nt as m,Kt as n,Sl as o,tr as p,ar as q,ir as r,Sc as s,Ec as t};
972
+ //# sourceMappingURL=chunk-FOMAU6H2.js.map